cpputest-3.7.2/000755 000765 000024 00000000000 12523662133 014327 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/.cproject000644 000765 000024 00000025426 12521603460 016146 0ustar00basvoddestaff000000 000000 make extensions true true true make examples true true true make cleanExamples true true true cpputest-3.7.2/.gitattributes000644 000765 000024 00000000344 12521603460 017217 0ustar00basvoddestaff000000 000000 * text=auto *.c text *.h text *.cpp text # Windows files *.sln text eol=crlf *.bat text eol=crlf *.dsp text eol=crlf *.dsw text eol=crlf *.dep text eol=crlf *.mak text eol=crlf *.vcproj text eol=crlf *.vcxproj text eol=crlf cpputest-3.7.2/.gitignore000644 000765 000024 00000001257 12521603460 016320 0ustar00basvoddestaff000000 000000 .DS_Store *.swp *.*~ .*~ *.d *.o *.a .settings *doxygen* *.gcov *.gcno *.gcda *_tests *_cslim *a.out *.zip tmp pdfs *.map gcov objs lib *_tests.txt gcov*.html ErrorLogs testResults .metadata /ipch Debug Release */Debug/* */Release/* *.exe *.obj *.ncb *.opt *.plg *.idb *.pdb *.suo *.sdf *.opensdf *.lib *.log *.tlog *.cache *.user _build_ _build builds/*gcc* /.deps CppUTestExtTests CppUTestTests Makefile config.h config.h.in config.status cpputest.pc filename.map.txt libtool stamp-h1 INSTALL Makefile.in aclocal.m4 compile config.guess config.sub configure depcomp install-sh ltmain.sh m4/libtool.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 m4/lt~obsolete.m4 missing test-driver cpputest-3.7.2/.project000644 000765 000024 00000004356 12521603460 016002 0ustar00basvoddestaff000000 000000 CppUTest org.eclipse.cdt.managedbuilder.core.genmakebuilder ?name? org.eclipse.cdt.make.core.append_environment true org.eclipse.cdt.make.core.autoBuildTarget all org.eclipse.cdt.make.core.buildArguments org.eclipse.cdt.make.core.buildCommand make org.eclipse.cdt.make.core.cleanBuildTarget clean org.eclipse.cdt.make.core.contents org.eclipse.cdt.make.core.activeConfigSettings org.eclipse.cdt.make.core.enableAutoBuild true org.eclipse.cdt.make.core.enableCleanBuild true org.eclipse.cdt.make.core.enableFullBuild true org.eclipse.cdt.make.core.fullBuildTarget all org.eclipse.cdt.make.core.stopOnError true org.eclipse.cdt.make.core.useDefaultBuildCmd true org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, org.eclipse.cdt.core.cnature org.eclipse.cdt.core.ccnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature cpputest-3.7.2/.settings/000755 000765 000024 00000000000 12523662133 016245 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/.travis.yml000644 000765 000024 00000001510 12521603460 016431 0ustar00basvoddestaff000000 000000 language: cpp compiler: - clang - gcc rvm: - 1.9.3 env: matrix: - BUILDTOOL=autotools - BUILDTOOL=cmake - BUILDTOOL=autotools_old_compilers global: - secure: |- P05xUfJVw5YM4hF7hzQLjyMzDD4Q1/fyWP9Uk5aK5VrSWNY99EuxldXI5QK/ vA1NkcW49tQW1wQvBlRtdlLNOmUfDP/oiJFXPwNn4dqwOIOEet2P7JO/5hnH MNHlZmGu2WpoZREhOFBfsIhK0IP8mloqLDq2XemBdga/LWygrLU= - secure: Y/8iNkf6uEbE3qltnM+7mGlCvFWzyttwwRGgVGw1m9xOiUJcobvOImQRU8XZ91dgO+Fz0A3mljqs1sK1OPjpXmFGE1jP/NlotMw0WlDOuSIDjQ4ubwdTNGAwNY53R9ygbIjEmqxHAJm9mOZqxW2hNaoI7TcX6oX248/hLibyx8M= install: - gem install travis_github_deployer - sudo apt-get update --fix-missing - sudo apt-get install valgrind before_script: - export CPPUTEST_BUILD_DIR=$TRAVIS_BUILD_DIR/cpputest_build - mkdir -p $CPPUTEST_BUILD_DIR && cd $CPPUTEST_BUILD_DIR script: - "../scripts/travis_ci_build.sh" cpputest-3.7.2/.travis_github_deployer.yml000644 000765 000024 00000000464 12521603460 021705 0ustar00basvoddestaff000000 000000 destination_repository: https://github.com/cpputest/cpputest.github.io.git files_to_deploy: cpputest_build/unit_test_report/*: unit_test_report cpputest_build/cpputest-3.7dev.tar.gz: destination: releases purge: yes cpputest_build/cpputest-3.7dev.zip: destination: releases purge: yes cpputest-3.7.2/aclocal.m4000644 000765 000024 00000124202 12523660352 016171 0ustar00basvoddestaff000000 000000 # generated automatically by aclocal 1.14.1 -*- Autoconf -*- # Copyright (C) 1996-2013 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_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) 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'.])]) # Copyright (C) 2002-2013 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. # 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.14' 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.14.1], [], [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.14.1])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-2013 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. # 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_COND_IF -*- Autoconf -*- # Copyright (C) 2008-2013 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. # _AM_COND_IF # _AM_COND_ELSE # _AM_COND_ENDIF # -------------- # These macros are only used for tracing. m4_define([_AM_COND_IF]) m4_define([_AM_COND_ELSE]) m4_define([_AM_COND_ENDIF]) # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) # --------------------------------------- # If the shell condition COND is true, execute IF-TRUE, otherwise execute # IF-FALSE. Allow automake to learn about conditional instantiating macros # (the AC_CONFIG_FOOS). AC_DEFUN([AM_COND_IF], [m4_ifndef([_AM_COND_VALUE_$1], [m4_fatal([$0: no such condition "$1"])])dnl _AM_COND_IF([$1])dnl if test -z "$$1_TRUE"; then : m4_n([$2])[]dnl m4_ifval([$3], [_AM_COND_ELSE([$1])dnl else $3 ])dnl _AM_COND_ENDIF([$1])dnl fi[]dnl ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2013 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. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$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-2013 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. # 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", "OBJC", "OBJCXX", "UPC", or "GJC". # 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 m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" 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 10 /bin/sh. echo '/* dummy */' > 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], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) 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-2013 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. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf 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"` # 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'`; 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-2013 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 macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # 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.65])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], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) 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], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [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([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # 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])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro 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 # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi]) 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-2013 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. # 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-2013 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. # 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])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2013 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. # 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-2013 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. # 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 is modern enough. # If it is, 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 --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2013 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. # _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])]) # Copyright (C) 1999-2013 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. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2013 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. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2013 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. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # 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 ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file 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 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 if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done 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]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2013 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. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2013 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. # 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-2013 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. # _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-2013 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. # _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}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} 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 m4_include([m4/acx_pthread.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) cpputest-3.7.2/appveyor.yml000644 000765 000024 00000001113 12523627400 016711 0ustar00basvoddestaff000000 000000 version: 3.7.0-ci{build} os: - Windows Server 2012 R2 environment: matrix: - PlatformToolset: MinGW Platform: Win32 - PlatformToolset: MinGW Platform: x64 - PlatformToolset: v90 - PlatformToolset: v100 install: - ps: if ($env:PlatformToolset -eq 'MinGW') { choco install mingw $( if ($env:Platform -eq 'Win32') { Write-Output -forcex86 } ) } build_script: - ps: scripts\appveyor_ci_build.ps1 test_script: - ps: scripts\appveyor_ci_test.ps1 artifacts: - path: lib\CppUTest.lib name: CppUTest # Other configuration options platform: Win32 configuration: Release cpputest-3.7.2/AUTHORS000644 000765 000024 00000000311 12521603460 015366 0ustar00basvoddestaff000000 000000 The current main authors of CppUTest are James Grenning and Bas Vodde. Thanks for all the other contributions. You can find them on github at: https://github.com/cpputest/cpputest/graphs/contributorscpputest-3.7.2/autogen.sh000755 000765 000024 00000000152 12521603460 016322 0ustar00basvoddestaff000000 000000 #!/bin/sh # # cpputest autogen.sh # # Run this to generate all the initial makefiles, etc. autoreconf -i cpputest-3.7.2/build/000755 000765 000024 00000000000 12523662133 015426 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/builds/000755 000765 000024 00000000000 12523662133 015611 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/ChangeLog000644 000765 000024 00000000667 12521604070 016104 0ustar00basvoddestaff000000 000000 Addition to Release 3.7 and Release 3.7.1: * -v and -ojunit together * Better memory leak printing * MEMCMP_EQUAL * STRNCMP_EQUAL * Memory Leak Detector multi-threading support * Mock Output parameters * Better Windows support * Many Mock improvements * Many small fixes and improvements * Less platform specific dependencies * More platforms supported For further changelog check the github page: https://github.com/cpputest/cpputest cpputest-3.7.2/cmake/000755 000765 000024 00000000000 12523662132 015406 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/CMakeLists.txt000644 000765 000024 00000005767 12523655565 017121 0ustar00basvoddestaff000000 000000 project(CppUTest) set(CppUTest_version_major 3) set(CppUTest_version_minor 7.2) # 2.6.3 is needed for ctest support cmake_minimum_required(VERSION 2.6.3) option(STD_C "Use the standard C library" ON) option(STD_CPP "Use the standard C++ library" ON) option(CPPUTEST_FLAGS "Use the CFLAGS/CXXFLAGS/LDFLAGS set by CppUTest" ON) option(MEMORY_LEAK_DETECTION "Enable memory leak detection" ON) option(EXTENSIONS "Use the CppUTest extenstion library" ON) option(MAP_FILE "Enable the creation of a map file" OFF) option(COVERAGE "Enable running with coverage" OFF) option(C++11 "Compile with C++11 support" OFF) option(TESTS "Compile and make tests for the code?" ON) option(TESTS_DETAILED "Run each test separately instead of grouped?" OFF) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "What kind of build this is" FORCE) endif(NOT CMAKE_BUILD_TYPE) # Pkg-config file include(FindPkgConfig) set(CppUTest_PKGCONFIG_FILE cpputest.pc) set(CppUTestRootDirectory ${PROJECT_SOURCE_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CppUTestRootDirectory}/cmake/Modules) include("${CppUTestRootDirectory}/cmake/Modules/CppUTestConfigurationOptions.cmake") include(CTest) configure_file ( "${PROJECT_SOURCE_DIR}/config.h.cmake" "${PROJECT_BINARY_DIR}/config.h" ) include_directories(${PROJECT_BINARY_DIR}) add_definitions(-DHAVE_CONFIG_H) include_directories(${CppUTestRootDirectory}/include) add_subdirectory(src/CppUTest) if (EXTENSIONS) add_subdirectory(src/CppUTestExt) endif (EXTENSIONS) if (TESTS) add_subdirectory(tests) endif (TESTS) # Pkg-config file. set (prefix "${CMAKE_INSTALL_PREFIX}") set (exec_prefix "${CMAKE_INSTALL_PREFIX}") set (libdir "${LIB_INSTALL_DIR}") set (includedir "${INCLUDE_INSTALL_DIR}") set (PACKAGE_VERSION "${CppUTest_version_major}.${CppUTest_version_minor}") configure_file (cpputest.pc.in ${CMAKE_CURRENT_SOURCE_DIR}/${CppUTest_PKGCONFIG_FILE} @ONLY) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${CppUTest_PKGCONFIG_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig ) message(" ------------------------------------------------------- CppUTest Version ${CppUTest_version_major}.${CppUTest_version_minor} Current compiler options: CC: ${CMAKE_C_COMPILER} CXX: ${CMAKE_CXX_COMPILER} CppUTest CFLAGS: ${CPPUTEST_C_FLAGS} CppUTest CXXFLAGS: ${CPPUTEST_CXX_FLAGS} CppUTest LDFLAGS: ${CPPUTEST_LD_FLAGS} Features configure in CppUTest: Memory Leak Detection: ${MEMORY_LEAK_DETECTION} Compiling Extensions: ${EXTENSIONS} Use CppUTest flags: ${CPPUTEST_FLAGS} Using Standard C library: ${STD_C} Using Standard C++ library: ${STD_CPP} Using C++11 library: ${C++11} Generating map file: ${MAP_FILE} Compiling with coverage: ${COVERAGE} ------------------------------------------------------- ") cpputest-3.7.2/compile000755 000765 000024 00000016245 12521603513 015710 0ustar00basvoddestaff000000 000000 #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey . # # 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, see . # 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. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # 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-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: cpputest-3.7.2/config.guess000755 000765 000024 00000131355 12521603513 016652 0ustar00basvoddestaff000000 000000 #! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-11-29' # 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 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # 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. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # 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 # # Please send patches with a ChangeLog entry to config-patches@gnu.org. 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 1992-2013 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 case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` ;; esac # 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 tuples: *-*-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 ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_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'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; 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:*:[4567]) 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:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys 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-${LIBC}`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/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} 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="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${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-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} 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-${LIBC}"; exit; } ;; or1k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} 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-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} 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 ;; x86_64:Haiku:*:*) echo x86_64-unknown-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 eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then 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 case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi 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 ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} 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 ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac 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: cpputest-3.7.2/config.h.cmake000644 000765 000024 00000000420 12521603460 017014 0ustar00basvoddestaff000000 000000 #ifndef CONFIG_H_ #define CONFIG_H_ #cmakedefine CPPUTEST_COMPILATION @CPPUTEST_COMPILATION@ #cmakedefine CPPUTEST_MEM_LEAK_DETECTION_DISABLED #cmakedefine CPPUTEST_STD_C_LIB_DISABLED #cmakedefine CPPUTEST_STD_CPP_LIB_DISABLED #cmakedefine INCLUDE_GTEST_TESTS #endif cpputest-3.7.2/config.h.in000644 000765 000024 00000012234 12523660363 016357 0ustar00basvoddestaff000000 000000 /* config.h.in. Generated from configure.ac by autoheader. */ /* Compiling CppUTest itself */ #undef CPPUTEST_COMPILATION /* memory leak detection disabled */ #undef CPPUTEST_MEM_LEAK_DETECTION_DISABLED /* Standard C++ library disabled */ #undef CPPUTEST_STD_CPP_LIB_DISABLED /* Standard C library disabled */ #undef CPPUTEST_STD_C_LIB_DISABLED /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `vfork' function. */ #undef HAVE_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_VFORK_H /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK /* Define to 1 if `vfork' works. */ #undef HAVE_WORKING_VFORK /* Include the GTest-related tests in the build */ #undef INCLUDE_GTEST_TESTS /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define for Solaris 2.5.1 so the uint32_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT32_T /* Define for Solaris 2.5.1 so the uint64_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT64_T /* Define for Solaris 2.5.1 so the uint8_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT8_T /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to the type of a signed integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef int16_t /* Define to the type of a signed integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef int32_t /* Define to the type of a signed integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef int64_t /* Define to the type of a signed integer type of width exactly 8 bits if such a type exists and the standard includes do not define it. */ #undef int8_t /* Define to `int' if does not define. */ #undef pid_t /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to the type of an unsigned integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef uint16_t /* Define to the type of an unsigned integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef uint32_t /* Define to the type of an unsigned integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef uint64_t /* Define to the type of an unsigned integer type of width exactly 8 bits if such a type exists and the standard includes do not define it. */ #undef uint8_t /* Define as `fork' if `vfork' does not work. */ #undef vfork cpputest-3.7.2/config.sub000755 000765 000024 00000105412 12521603513 016310 0ustar00basvoddestaff000000 000000 #! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-10-01' # 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 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # 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. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # 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 1992-2013 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-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | 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/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) 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*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -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 \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | 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 \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 \ | or1k | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | 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 \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-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-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | 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-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | 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-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | 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-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | 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 ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; 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 | 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*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 ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-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-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; 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 ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; 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 | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) 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 | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) 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 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; 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 ;; tile*) basic_machine=$basic_machine-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 ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; 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* | -plan9* \ | -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* \ | -bitrig* | -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* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -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 ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -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 ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) 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 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or1k-*) 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: cpputest-3.7.2/configure000755 000765 000024 00002357671 12523660354 016266 0ustar00basvoddestaff000000 000000 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for CppUTest 3.7.2. # # Report bugs to . # # # 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 and $0: https://github.com/cpputest/cpputest 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='CppUTest' PACKAGE_TARNAME='cpputest' PACKAGE_VERSION='3.7.2' PACKAGE_STRING='CppUTest 3.7.2' PACKAGE_BUGREPORT='https://github.com/cpputest/cpputest' PACKAGE_URL='' ac_unique_file="src/CppUTest/Utest.cpp" # 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 ALL_FILES_IN_GIT MOSTLYCLEANFILES CPPUTEST_LDFLAGS CPPUTEST_LDADD CPPUTEST_ADDITIONAL_CPPFLAGS CPPUTEST_CPPFLAGS CPPUTEST_ADDITIONAL_CXXFLAGS CPPUTEST_CXXFLAGS CPPUTEST_ADDITIONAL_CFLAGS CPPUTEST_CFLAGS INCLUDE_CPPUTEST_EXT CPP_PLATFORM INCLUDE_GMOCKTESTS_FALSE INCLUDE_GMOCKTESTS_TRUE GMOCK_HOME INCLUDE_CPPUTEST_EXT_FALSE INCLUDE_CPPUTEST_EXT_TRUE TEST_COMPILER_IS_CLANG_FALSE TEST_COMPILER_IS_CLANG_TRUE CPPUTEST_HAS_DASH CPPUTEST_HAS_VALGRIND CPPUTEST_HAS_LCOV CPPUTEST_HAS_CLANG CPPUTEST_HAS_GCC PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC acx_pthread_config CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX CPPUTEST_ON_MACOSX CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED 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 host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V 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 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 enable_silent_rules enable_shared enable_static with_pic enable_fast_install enable_dependency_tracking with_gnu_ld with_sysroot enable_libtool_lock enable_std_c enable_std_cpp enable_std_cpp11 enable_cpputest_flags enable_memory_leak_detection enable_extensions enable_generate_map_file enable_coverage ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC CXXCPP GMOCK_HOME' # 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 CppUTest 3.7.2 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/cpputest] --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 CppUTest 3.7.2:";; 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] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --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] --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-libtool-lock avoid locking (might break parallel builds) --disable-std-c disable the use of Standard C Library (warning: requires implementing Platforms/GccNoStdC) --disable-std-cpp disable the use of Standard C++ Library --enable-std-cpp11 enable the use of Standard C++ 11 (if the compiler supports that) --disable-cpputest-flags disable CFLAGS/CPPFLAGS/CXXFLAGS set by CppUTest --disable-memory-leak-detection disable memory leak detection --disable-extensions disable CppUTest extension library --enable-generate-map-file enable the creation of a map file --enable-coverage enable running with coverage Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] 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 GMOCK_HOME Directory where gmock is installed so the gmock tests can run 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 . _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 CppUTest configure 3.7.2 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_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_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_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_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_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;} ( $as_echo "## --------------------------------------------------- ## ## Report this to https://github.com/cpputest/cpputest ## ## --------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&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 # ac_fn_c_find_intX_t LINENO BITS VAR # ----------------------------------- # Finds a signed integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_intX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 $as_echo_n "checking for int$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in int$2_t 'int' 'long int' \ 'long long int' 'short int' 'signed char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int main () { static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int main () { static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else case $ac_type in #( int$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done 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_find_intX_t # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { 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 eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=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 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_type # ac_fn_c_find_uintX_t LINENO BITS VAR # ------------------------------------ # Finds an unsigned integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 $as_echo_n "checking for uint$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done 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_find_uintX_t 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 CppUTest $as_me 3.7.2, 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 am__api_version='1.14' 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. # 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; } # 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 ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file 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 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 if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done 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; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file 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 --is-lightweight"; then am_missing_run="$MISSING " 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; } 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 # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' 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='cpputest' VERSION='3.7.2' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # 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"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # 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}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ac_config_headers="$ac_config_headers config.h" ac_config_files="$ac_config_files cpputest.pc" enable_dlopen=yes 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.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # 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 # 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 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 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 whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" 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 10 /bin/sh. echo '/* dummy */' > 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 { $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 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; 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 glibc/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 \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_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};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /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 ;; *-*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*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) 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 there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 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 -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; 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 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 { $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 # Set options enable_win32_dll=no # 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 # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac 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* ## 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... 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 ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; 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\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # 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\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; 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_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='${wl}-rpath ${wl}$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 exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' 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 ;; # 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_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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 ;; 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[23].*) 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 # correct to gnu/linux during the next big refactor 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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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" ac_config_commands="$ac_config_commands libtool" # Only expand once: default_use_std_cpp=yes case "x$build_os" in *darwin*) CPPUTEST_ON_MACOSX=yes ;; *mingw*) default_use_std_cpp=no ;; 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 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 { $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 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 whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" 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 10 /bin/sh. echo '/* dummy */' > 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 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 10 /bin/sh. echo '/* dummy */' > 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 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 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_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 ;; freebsd2.*) # 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" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; 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*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 ;; 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[23].*) 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 # correct to gnu/linux during the next big refactor 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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 { $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 { $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 # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' 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 acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 $as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } 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 pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 $as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 $as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; 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_acx_pthread_config+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$acx_pthread_config"; then ac_cv_prog_acx_pthread_config="$acx_pthread_config" # 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_acx_pthread_config="yes" $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 test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" fi fi acx_pthread_config=$ac_cv_prog_acx_pthread_config if test -n "$acx_pthread_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 $as_echo "$acx_pthread_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x"$acx_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 $as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 $as_echo_n "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr=$attr; return attr; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : attr_name=$attr; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 $as_echo "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then cat >>confdefs.h <<_ACEOF #define PTHREAD_CREATE_JOINABLE $attr_name _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 $as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 $as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then for ac_prog in xlc_r cc_r 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_PTHREAD_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_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_PTHREAD_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 PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 $as_echo "$PTHREAD_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then LIBS="$PTHREAD_LIBS $LIBS" : else acx_pthread_ok=no 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 # This additional -lpthread was added due to a bug on gcc for MacOSX: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42159 # According to the bug report, a workaround is to link -lpthread. Even the ACX_PTHREAD doesn't do that, so we add an # additional check if that it possible, and if it is, then we link pthread saved_libs="$LIBS" LIBS=-lpthread { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can link -lpthread to work around a gcc bug (on MacOSX)" >&5 $as_echo_n "checking if we can link -lpthread to work around a gcc bug (on MacOSX)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; HACK_TO_USE_PTHREAD_LIBS=" -lpthread" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$saved_libs $HACK_TO_USE_PTHREAD_LIBS" for ac_header in stddef.h stdint.h stdlib.h string.h sys/time.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$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 { $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 ac_fn_c_find_intX_t "$LINENO" "16" "ac_cv_c_int16_t" case $ac_cv_c_int16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int16_t $ac_cv_c_int16_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t" case $ac_cv_c_int32_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int32_t $ac_cv_c_int32_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t" case $ac_cv_c_int64_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int64_t $ac_cv_c_int64_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "8" "ac_cv_c_int8_t" case $ac_cv_c_int8_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int8_t $ac_cv_c_int8_t _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t" case $ac_cv_c_uint16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define uint16_t $ac_cv_c_uint16_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" case $ac_cv_c_uint32_t in #( no|yes) ;; #( *) $as_echo "#define _UINT32_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint32_t $ac_cv_c_uint32_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" case $ac_cv_c_uint64_t in #( no|yes) ;; #( *) $as_echo "#define _UINT64_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint64_t $ac_cv_c_uint64_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t" case $ac_cv_c_uint8_t in #( no|yes) ;; #( *) $as_echo "#define _UINT8_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint8_t $ac_cv_c_uint8_t _ACEOF ;; esac # Checks for library functions. for ac_header in vfork.h do : ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" if test "x$ac_cv_header_vfork_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VFORK_H 1 _ACEOF fi done for ac_func in fork vfork do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test "x$ac_cv_func_fork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 $as_echo_n "checking for working fork... " >&6; } if ${ac_cv_func_fork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_fork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* By Ruediger Kuhlmann. */ return fork () < 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_fork_works=yes else ac_cv_func_fork_works=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 $as_echo "$ac_cv_func_fork_works" >&6; } else ac_cv_func_fork_works=$ac_cv_func_fork fi if test "x$ac_cv_func_fork_works" = xcross; then case $host in *-*-amigaos* | *-*-msdosdjgpp*) # Override, as these systems have only a dummy fork() stub ac_cv_func_fork_works=no ;; *) ac_cv_func_fork_works=yes ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 $as_echo_n "checking for working vfork... " >&6; } if ${ac_cv_func_vfork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_vfork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Thanks to Paul Eggert for this test. */ $ac_includes_default #include #ifdef HAVE_VFORK_H # include #endif /* On some sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include , but some compilers (e.g. gcc -O) don't grok . Test for this by using a static variable whose address is put into a register that is clobbered by the vfork. */ static void #ifdef __cplusplus sparc_address_test (int arg) # else sparc_address_test (arg) int arg; #endif { static pid_t child; if (!child) { child = vfork (); if (child < 0) { perror ("vfork"); _exit(2); } if (!child) { arg = getpid(); write(-1, "", 0); _exit (arg); } } } int main () { pid_t parent = getpid (); pid_t child; sparc_address_test (0); child = vfork (); if (child == 0) { /* Here is another test for sparc vfork register problems. This test uses lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; return ( /* Was there some problem with vforking? */ child < 0 /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); } } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_vfork_works=yes else ac_cv_func_vfork_works=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 $as_echo "$ac_cv_func_vfork_works" >&6; } fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=$ac_cv_func_vfork { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} fi if test "x$ac_cv_func_vfork_works" = xyes; then $as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h else $as_echo "#define vfork fork" >>confdefs.h fi if test "x$ac_cv_func_fork_works" = xyes; then $as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h fi for ac_func in gettimeofday memset strstr do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # 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_CPPUTEST_HAS_GCC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CPPUTEST_HAS_GCC"; then ac_cv_prog_CPPUTEST_HAS_GCC="$CPPUTEST_HAS_GCC" # 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_CPPUTEST_HAS_GCC="yes" $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 test -z "$ac_cv_prog_CPPUTEST_HAS_GCC" && ac_cv_prog_CPPUTEST_HAS_GCC="no" fi fi CPPUTEST_HAS_GCC=$ac_cv_prog_CPPUTEST_HAS_GCC if test -n "$CPPUTEST_HAS_GCC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPUTEST_HAS_GCC" >&5 $as_echo "$CPPUTEST_HAS_GCC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "clang", so it can be a program name with args. set dummy clang; 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_CPPUTEST_HAS_CLANG+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CPPUTEST_HAS_CLANG"; then ac_cv_prog_CPPUTEST_HAS_CLANG="$CPPUTEST_HAS_CLANG" # 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_CPPUTEST_HAS_CLANG="yes" $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 test -z "$ac_cv_prog_CPPUTEST_HAS_CLANG" && ac_cv_prog_CPPUTEST_HAS_CLANG="no" fi fi CPPUTEST_HAS_CLANG=$ac_cv_prog_CPPUTEST_HAS_CLANG if test -n "$CPPUTEST_HAS_CLANG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPUTEST_HAS_CLANG" >&5 $as_echo "$CPPUTEST_HAS_CLANG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "lcov", so it can be a program name with args. set dummy lcov; 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_CPPUTEST_HAS_LCOV+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CPPUTEST_HAS_LCOV"; then ac_cv_prog_CPPUTEST_HAS_LCOV="$CPPUTEST_HAS_LCOV" # 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_CPPUTEST_HAS_LCOV="yes" $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 test -z "$ac_cv_prog_CPPUTEST_HAS_LCOV" && ac_cv_prog_CPPUTEST_HAS_LCOV="no" fi fi CPPUTEST_HAS_LCOV=$ac_cv_prog_CPPUTEST_HAS_LCOV if test -n "$CPPUTEST_HAS_LCOV"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPUTEST_HAS_LCOV" >&5 $as_echo "$CPPUTEST_HAS_LCOV" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "valgrind", so it can be a program name with args. set dummy valgrind; 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_CPPUTEST_HAS_VALGRIND+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CPPUTEST_HAS_VALGRIND"; then ac_cv_prog_CPPUTEST_HAS_VALGRIND="$CPPUTEST_HAS_VALGRIND" # 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_CPPUTEST_HAS_VALGRIND="yes" $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 test -z "$ac_cv_prog_CPPUTEST_HAS_VALGRIND" && ac_cv_prog_CPPUTEST_HAS_VALGRIND="no" fi fi CPPUTEST_HAS_VALGRIND=$ac_cv_prog_CPPUTEST_HAS_VALGRIND if test -n "$CPPUTEST_HAS_VALGRIND"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPUTEST_HAS_VALGRIND" >&5 $as_echo "$CPPUTEST_HAS_VALGRIND" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "dash", so it can be a program name with args. set dummy dash; 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_CPPUTEST_HAS_DASH+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CPPUTEST_HAS_DASH"; then ac_cv_prog_CPPUTEST_HAS_DASH="$CPPUTEST_HAS_DASH" # 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_CPPUTEST_HAS_DASH="yes" $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 test -z "$ac_cv_prog_CPPUTEST_HAS_DASH" && ac_cv_prog_CPPUTEST_HAS_DASH="no" fi fi CPPUTEST_HAS_DASH=$ac_cv_prog_CPPUTEST_HAS_DASH if test -n "$CPPUTEST_HAS_DASH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPUTEST_HAS_DASH" >&5 $as_echo "$CPPUTEST_HAS_DASH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Checking for warning flags on the compiler saved_cflags="$CFLAGS" saved_cxxflags="$CXXFLAGS" saved_ldflags="$LDFLAGS" if test "x$USE_MAINTAINER_MODE" = "xyes"; then # FLag -Werror. CFLAGS=-Werror { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Werror" >&5 $as_echo_n "checking whether CC and CXX supports -Werror... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS_STRICT="${CPPUTEST_CWARNINGFLAGS} -Werror"; CPPUTEST_CXXWARNINGFLAGS_STRICT="${CPPUTEST_CXXWARNINGFLAGS} -Werror" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" fi # FLag -Weverything. CFLAGS="-Werror -Weverything -Wno-unused-macros" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Weverything" >&5 $as_echo_n "checking whether CC and CXX supports -Weverything... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Weverything"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Weverything" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # Flag -Wno-c++98-compat CXXFLAGS="-Wno-c++98-compat" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-c++98-compat" >&5 $as_echo_n "checking whether CXX supports -Wno-c++98-compat... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP11BLACKLIST=" -Wno-c++98-compat" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag -Wall. CFLAGS="-Werror -Wall" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wall" >&5 $as_echo_n "checking whether CC and CXX supports -Wall... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wall"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wall" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wextra. CFLAGS="-Werror -Wextra" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wextra" >&5 $as_echo_n "checking whether CC and CXX supports -Wextra... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wextra"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wextra" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wshadow. CFLAGS="-Werror -Wshadow" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wshadow" >&5 $as_echo_n "checking whether CC and CXX supports -Wshadow... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wshadow"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wshadow" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wswitch-default CFLAGS="-Werror -Wswitch-default" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wswitch-default" >&5 $as_echo_n "checking whether CC and CXX supports -Wswitch-default... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wswitch-default"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wswitch-default" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wswitch-enum CFLAGS="-Werror -Wswitch-enum" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wswitch-enum" >&5 $as_echo_n "checking whether CC and CXX supports -Wswitch-enum... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wswitch-enum"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wswitch-enum" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wconversion CFLAGS="-Werror -Wconversion" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wconversion" >&5 $as_echo_n "checking whether CC and CXX supports -Wconversion... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wconversion"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wconversion" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -pedantic CFLAGS="-Werror -pedantic" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -pedantic" >&5 $as_echo_n "checking whether CC and CXX supports -pedantic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -pedantic"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -pedantic" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wsign-conversion CFLAGS="-Werror -Wsign-conversion" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC supports -Wsign-conversion" >&5 $as_echo_n "checking whether CC supports -Wsign-conversion... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wsign-conversion" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wsign-conversion (for CXX) 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 CXXFLAGS="-Werror -Wsign-conversion" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wsign-conversion" >&5 $as_echo_n "checking whether CXX supports -Wsign-conversion... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wsign-conversion" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cxxflags" 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 # FLag -Woverloaded-virtual 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 CXXFLAGS="-Werror -Woverloaded-virtual" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Woverloaded-virtual" >&5 $as_echo_n "checking whether CXX supports -Woverloaded-virtual... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Woverloaded-virtual" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" 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 # FLag -Wstrict-prototypes CFLAGS="-Werror -Wstrict-prototypes" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC supports -Wstrict-prototypes" >&5 $as_echo_n "checking whether CC supports -Wstrict-prototypes... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wstrict-prototypes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # Disable some warnings as CppUTest has this and can't be prevented at the moment. # FLag -Wno-disabled-macro-expansion. CFLAGS="-Werror -Wno-disabled-macro-expansion" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wno-disabled-macro-expansion" >&5 $as_echo_n "checking whether CC and CXX supports -Wno-disabled-macro-expansion... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-disabled-macro-expansion"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-disabled-macro-expansion" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wno-padded. CFLAGS="-Werror -Wno-padded" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wno-padded" >&5 $as_echo_n "checking whether CC and CXX supports -Wno-padded... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-padded"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-padded" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wno-global-constructors. 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 CXXFLAGS="-Werror -Wno-global-constructors" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-global-constructors" >&5 $as_echo_n "checking whether CXX supports -Wno-global-constructors... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-global-constructors" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" 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 # FLag -Wno-exit-time-destructors. 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 CXXFLAGS="-Werror -Wno-exit-time-destructors" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-exit-time-destructors" >&5 $as_echo_n "checking whether CXX supports -Wno-exit-time-destructors... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-exit-time-destructors" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" 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 # FLag -Wno-weak-vtables. 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 CXXFLAGS="-Werror -Wno-weak-vtables" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-weak-vtables" >&5 $as_echo_n "checking whether CXX supports -Wno-weak-vtables... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-weak-vtables" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" 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 # FLag -Wno-old-style-cast. 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 CXXFLAGS="-Werror -Wno-old-style-cast" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-old-style-cast" >&5 $as_echo_n "checking whether CXX supports -Wno-old-style-cast... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-old-style-cast" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" 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 # FLag --coverage 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 CXXFLAGS="-Werror --coverage" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX and the linker supports --coverage (broken in clang 3.3)" >&5 $as_echo_n "checking whether CXX and the linker supports --coverage (broken in clang 3.3)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; coverage_flag_supported="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" 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 ### Checking for Standard C++ 11 compiler flags 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 # FLag -std=c++0x CXXFLAGS="-std=c++0x" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++0x" >&5 $as_echo_n "checking whether CXX supports -std=c++0x... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP11FLAG="-std=c++0x" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" CXXFLAGS="-std=c++11" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++11" >&5 $as_echo_n "checking whether CXX supports -std=c++11... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP11FLAG="-std=c++11" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" CXXFLAGS="-stdlib=libc++" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -stdlib=libc++" >&5 $as_echo_n "checking whether CXX supports -stdlib=libc++... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP11FLAG="${CPPUTEST_CPP11FLAG} -stdlib=libc++" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" 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 ### Checking for strange exception handling behavior, related to bugs in compilers... ### TODO: This part isn't finished yet. It will need to generate different CppUTestConfig.h files based on the result of these checks. 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 # Can we use operator delete without exception handling specifier? (clang warns on this!) CXXFLAGS="-Werror" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports operator delete without exception handling specifier" >&5 $as_echo_n "checking whether CXX supports operator delete without exception handling specifier... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include \nvoid operator delete(void* mem); int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; 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" >&5 $as_echo "no" >&6; }; UT_DELETE_MUST_HAVE_EXCEPTION_SPECIFIER="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # Can we use operator new with exception specifier (g++4.7 on MacOSX is broken here) CXXFLAGS="-Werror" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports operator new with exception handling specifier" >&5 $as_echo_n "checking whether CXX supports operator new with exception handling specifier... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include \nvoid* operator new(size_t size) throw(std::bad_alloc);; int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; 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" >&5 $as_echo "no" >&6; }; UT_NEW_CANT_HAVE_EXCEPTION_SPECIFIER="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" 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 ##### Linker checking. # # TBD! # Things that need to be fixed! # # The below code is checking for the -Qunused-arguments which is a linker flag. However, it says gcc supports it, while in fact, it doesn't. # As a workaround, we'll just check whether it is clang hardcoded, this is not in the automake spirit and will need to be fixed. # # LDFLAGS= # AC_MSG_CHECKING([whether LD supports -Qunused-arguments]) # AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_NO_UNUSED_ARGUMENT_WARNING=" -Qunused-arguments" ], [AC_MSG_RESULT([no])]) # LDFLAGS="$saved_ldflags" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXXLD supports -Qunused-arguments linker option" >&5 $as_echo_n "checking whether CXXLD supports -Qunused-arguments linker option... " >&6; } OUTPUT_WHEN_CLANG_COMPILER=`${CXX} --version | grep clang` if ! test -z "$OUTPUT_WHEN_CLANG_COMPILER"; then TEST_COMPILER_IS_CLANG_TRUE= TEST_COMPILER_IS_CLANG_FALSE='#' else TEST_COMPILER_IS_CLANG_TRUE='#' TEST_COMPILER_IS_CLANG_FALSE= fi if test -z "$TEST_COMPILER_IS_CLANG_TRUE"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_NO_UNUSED_ARGUMENT_WARNING=" ${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING} -Qunused-arguments" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; CPPUTEST_NO_UNUSED_ARGUMENT_WARNING="${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING} " fi # Checking for options for creating map files LDFLAGS=" -Wl,-map,filename.map.txt" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LD supports -Wl,-map" >&5 $as_echo_n "checking whether LD supports -Wl,-map... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_LD_MAP_GENERATION=" -Wl,-map,filename.map.txt" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$saved_ldflags" # Different features # Check whether --enable-std-c was given. if test "${enable_std_c+set}" = set; then : enableval=$enable_std_c; use_std_c=${enableval} else use_std_c=yes fi # Check whether --enable-std-cpp was given. if test "${enable_std_cpp+set}" = set; then : enableval=$enable_std_cpp; use_std_cpp=${enableval} else use_std_cpp=${default_use_std_cpp} fi # Check whether --enable-std-cpp11 was given. if test "${enable_std_cpp11+set}" = set; then : enableval=$enable_std_cpp11; use_std_cpp11=${enableval} else use_std_cpp11=no fi # Check whether --enable-cpputest-flags was given. if test "${enable_cpputest_flags+set}" = set; then : enableval=$enable_cpputest_flags; cpputest_flags=${enableval} else cpputest_flags=yes fi # Check whether --enable-memory-leak-detection was given. if test "${enable_memory_leak_detection+set}" = set; then : enableval=$enable_memory_leak_detection; memory_leak_detection=${enableval} else memory_leak_detection=yes fi # Check whether --enable-extensions was given. if test "${enable_extensions+set}" = set; then : enableval=$enable_extensions; cpputest_ext=${enableval} else cpputest_ext=yes fi # Check whether --enable-generate-map-file was given. if test "${enable_generate_map_file+set}" = set; then : enableval=$enable_generate_map_file; generate_map_file=${enableval} else generate_map_file=no fi # Check whether --enable-coverage was given. if test "${enable_coverage+set}" = set; then : enableval=$enable_coverage; coverage=${enableval} else coverage=no fi ############################## Setting options ############################### if test "x${cpputest_ext}" = xyes; then INCLUDE_CPPUTEST_EXT_TRUE= INCLUDE_CPPUTEST_EXT_FALSE='#' else INCLUDE_CPPUTEST_EXT_TRUE='#' INCLUDE_CPPUTEST_EXT_FALSE= fi # Dealing with not having a Standard C library... (usually for Kernel development) if test "x${use_std_c}" = xno; then use_std_cpp=no memory_leak_detection=no CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -nostdinc" CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} -nostdlib" $as_echo "#define CPPUTEST_STD_C_LIB_DISABLED 1" >>confdefs.h CPP_PLATFORM="GccNoStdC" else CPP_PLATFORM="Gcc" fi # Using standard C++ if test "x${use_std_cpp}" = xno; then $as_echo "#define CPPUTEST_STD_CPP_LIB_DISABLED 1" >>confdefs.h if test "x${use_std_c}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -nostdinc++" # Since automake passes the CXXFLAGS to the linker, this will cause warnings with clang 3.2 (which become errors) CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} ${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING}" fi fi # Using the C++11 standard? if test "x${use_std_cpp11}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP11FLAG} ${CPPUTEST_CPP11BLACKLIST}" fi # Dealing with memory leak detection if test "x${memory_leak_detection}" = xno; then $as_echo "#define CPPUTEST_MEM_LEAK_DETECTION_DISABLED 1" >>confdefs.h else CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -include ${srcdir}/include/CppUTest/MemoryLeakDetectorNewMacros.h" CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -include ${srcdir}/include/CppUTest/MemoryLeakDetectorMallocMacros.h" fi # Generating map files. if test "x${generate_map_file}" = xyes; then CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} ${CPPUTEST_LD_MAP_GENERATION}" MOSTLYCLEANFILES="${MOSTLYCLEANFILES} *.map.txt" fi if test "x${coverage_flag_supported}" = xyes; then if test "x${coverage}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} --coverage" CPPUTEST_CFLAGS="${CPPUTEST_CFLAGS} --coverage" MOSTLYCLEANFILES="${MOSTLYCLEANFILES} *.gcda *.gcno" fi fi # GMock, check whether we can compile the GMock tests. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the availability of gmock via the GMOCK_HOME variable" >&5 $as_echo_n "checking for the availability of gmock via the GMOCK_HOME variable... " >&6; } if test -n "${GMOCK_HOME}"; then INCLUDE_GMOCKTESTS_TRUE= INCLUDE_GMOCKTESTS_FALSE='#' else INCLUDE_GMOCKTESTS_TRUE='#' INCLUDE_GMOCKTESTS_FALSE= fi if test -n "${GMOCK_HOME}"; then $as_echo "#define INCLUDE_GTEST_TESTS 1" >>confdefs.h GTEST_HOME=${GMOCK_HOME}/gtest CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -I${GMOCK_HOME}/include -I${GTEST_HOME}/include -I${GTEST_HOME}" CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -DGTEST_USE_OWN_TR1_TUPLE=1" if test -e ${GMOCK_HOME}/lib/libgmock.la && test -e ${GTEST_HOME}/lib/libgtest.la; then \ CPPUTEST_LDADD="${CPPUTEST_LDADD} ${GMOCK_HOME}/lib/libgmock.la ${GTEST_HOME}/lib/libgtest.la"; \ elif test -e ${GMOCK_HOME}/libgmock.a && test -e ${GTEST_HOME}/libgtest.a; then \ CPPUTEST_LDADD="${CPPUTEST_LDADD} ${GMOCK_HOME}/libgmock.a ${GTEST_HOME}/libgtest.a"; \ else \ as_fn_error $? " ------------------------------------- GMOCK_HOME was set, but couldn't find the compiled library. Did you compile it? -------------------------------------" "$LINENO" 5; fi # In Travis, do not show warnings. The GTest warnings cause a log overflow that errors the build. Nice :) if test -n "${TRAVIS_BRANCH}"; then CPPUTEST_CWARNINGFLAGS="" CPPUTEST_CXXWARNINGFLAGS="" fi else # When we don't compile with GMock, we can be a bit stricter on warnings. CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} ${CPPUTEST_CWARNINGFLAGS_STRICT}" CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} ${CPPUTEST_CXXWARNINGFLAGS_STRICT}" fi CPPUTEST_CFLAGS="${CPPUTEST_CFLAGS} ${CPPUTEST_CWARNINGFLAGS}" CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CXXWARNINGFLAGS}" CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -I ${srcdir}/include ${CPPUTEST_CPPWARNINGFLAGS}" if test "x${cpputest_flags}" = xno; then CPPUTEST_CFLAGS="" CPPUTEST_CXXFLAGS="" CPPUTEST_CPPFLAGS="" fi ############################## Values ######################################## ### All files in git if test -e "${srcdir}/.git"; then ALL_FILES_IN_GIT="`git --git-dir=${srcdir}/.git ls-files | tr ' \n' ' '`" fi # Variables to substitute # Replacement of tool flags $as_echo "#define CPPUTEST_COMPILATION 1" >>confdefs.h ac_config_files="$ac_config_files 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}' DEFS=-DHAVE_CONFIG_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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } 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__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 "${TEST_COMPILER_IS_CLANG_TRUE}" && test -z "${TEST_COMPILER_IS_CLANG_FALSE}"; then as_fn_error $? "conditional \"TEST_COMPILER_IS_CLANG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${INCLUDE_CPPUTEST_EXT_TRUE}" && test -z "${INCLUDE_CPPUTEST_EXT_FALSE}"; then as_fn_error $? "conditional \"INCLUDE_CPPUTEST_EXT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${INCLUDE_GMOCKTESTS_TRUE}" && test -z "${INCLUDE_GMOCKTESTS_FALSE}"; then as_fn_error $? "conditional \"INCLUDE_GMOCKTESTS\" 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 CppUTest $as_me 3.7.2, 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 case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" 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 --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ CppUTest config.status 3.7.2 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;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --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' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $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"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $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"`' OBJDUMP='`$ECHO "$OBJDUMP" | $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"`' DLLTOOL='`$ECHO "$DLLTOOL" | $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_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_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 SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ 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_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_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 "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "cpputest.pc") CONFIG_FILES="$CONFIG_FILES cpputest.pc" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES 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_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers 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" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :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 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _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" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :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"" || { # Older Autoconf 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"` # 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'`; 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, 2011 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 # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # 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 PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # 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 # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # 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 # DLL creation program. DLLTOOL=$lt_DLLTOOL # 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 # 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 # 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 echo \ "---------------------------------------------------------------- ${PACKAGE_NAME} Version ${PACKAGE_VERSION} Current compiler options: CC: ${CC} CXX: ${CXX} LD: ${LD} Default CFLAGS: ${CFLAGS} Default CXXFLAGS: ${CXXFLAGS} CppUTest CFLAGS: ${CPPUTEST_CFLAGS} CppUTest CXXFLAGS: ${CPPUTEST_CXXFLAGS} CppUTest CPPFLAGS: ${CPPUTEST_CPPFLAGS} CppUTest LDFLAGS: ${CPPUTEST_LDFLAGS} CppUTest LIB: ${LIBS} Features configured in ${PACKAGE_NAME}: Memory Leak Detection: ${memory_leak_detection} Compiling extensions: ${cpputest_ext} Disable CppUTest compile/link flags: ${cpputest_flags} Using Standard C++ Library: ${use_std_cpp} Using Standard C Library: ${use_std_c} Generating map file: ${generate_map_file} Compiling w coverage info: ${coverage} ----------------------------------------------------------------" cpputest-3.7.2/configure.ac000644 000765 000024 00000047315 12523655612 016633 0ustar00basvoddestaff000000 000000 AC_PREREQ([2.68]) AC_INIT([CppUTest], [3.7.2], [https://github.com/cpputest/cpputest]) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([src/CppUTest/Utest.cpp]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([cpputest.pc]) AC_CONFIG_MACRO_DIR([m4]) AC_LIBTOOL_DLOPEN AC_PROG_LIBTOOL AC_CANONICAL_HOST default_use_std_cpp=yes case "x$build_os" in *darwin*) AC_SUBST([CPPUTEST_ON_MACOSX], [yes]) ;; *mingw*) default_use_std_cpp=no ;; esac AC_PROG_CC AC_PROG_CPP AC_PROG_CXX AC_PROG_LN_S AC_PROG_MAKE_SET AM_PROG_CC_C_O AM_SILENT_RULES ACX_PTHREAD([LIBS="$PTHREAD_LIBS $LIBS"]) # This additional -lpthread was added due to a bug on gcc for MacOSX: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42159 # According to the bug report, a workaround is to link -lpthread. Even the ACX_PTHREAD doesn't do that, so we add an # additional check if that it possible, and if it is, then we link pthread saved_libs="$LIBS" LIBS=-lpthread AC_MSG_CHECKING([if we can link -lpthread to work around a gcc bug (on MacOSX)]) AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); HACK_TO_USE_PTHREAD_LIBS=" -lpthread"], [AC_MSG_RESULT([no])]) LIBS="$saved_libs $HACK_TO_USE_PTHREAD_LIBS" AC_CHECK_HEADERS([stddef.h stdint.h stdlib.h string.h sys/time.h unistd.h]) AC_C_INLINE AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_INT64_T AC_TYPE_INT8_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T AC_TYPE_UINT8_T # Checks for library functions. AC_FUNC_FORK AC_CHECK_FUNCS([gettimeofday memset strstr]) AC_CHECK_PROG([CPPUTEST_HAS_GCC], [gcc], [yes], [no]) AC_CHECK_PROG([CPPUTEST_HAS_CLANG], [clang], [yes], [no]) AC_CHECK_PROG([CPPUTEST_HAS_LCOV], [lcov], [yes], [no]) AC_CHECK_PROG([CPPUTEST_HAS_VALGRIND], [valgrind], [yes], [no]) AC_CHECK_PROG([CPPUTEST_HAS_DASH], [dash], [yes], [no]) # Checking for warning flags on the compiler saved_cflags="$CFLAGS" saved_cxxflags="$CXXFLAGS" saved_ldflags="$LDFLAGS" if test "x$USE_MAINTAINER_MODE" = "xyes"; then # FLag -Werror. CFLAGS=-Werror AC_MSG_CHECKING([whether CC and CXX supports -Werror]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS_STRICT="${CPPUTEST_CWARNINGFLAGS} -Werror"; CPPUTEST_CXXWARNINGFLAGS_STRICT="${CPPUTEST_CXXWARNINGFLAGS} -Werror" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" fi # FLag -Weverything. CFLAGS="-Werror -Weverything -Wno-unused-macros" AC_MSG_CHECKING([whether CC and CXX supports -Weverything]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Weverything"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Weverything" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # Flag -Wno-c++98-compat CXXFLAGS="-Wno-c++98-compat" AC_MSG_CHECKING([whether CXX supports -Wno-c++98-compat]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP11BLACKLIST=" -Wno-c++98-compat" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # FLag -Wall. CFLAGS="-Werror -Wall" AC_MSG_CHECKING([whether CC and CXX supports -Wall]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wall"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wall" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wextra. CFLAGS="-Werror -Wextra" AC_MSG_CHECKING([whether CC and CXX supports -Wextra]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wextra"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wextra" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wshadow. CFLAGS="-Werror -Wshadow" AC_MSG_CHECKING([whether CC and CXX supports -Wshadow]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wshadow"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wshadow" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wswitch-default CFLAGS="-Werror -Wswitch-default" AC_MSG_CHECKING([whether CC and CXX supports -Wswitch-default]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wswitch-default"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wswitch-default" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wswitch-enum CFLAGS="-Werror -Wswitch-enum" AC_MSG_CHECKING([whether CC and CXX supports -Wswitch-enum]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wswitch-enum"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wswitch-enum" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wconversion CFLAGS="-Werror -Wconversion" AC_MSG_CHECKING([whether CC and CXX supports -Wconversion]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wconversion"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wconversion" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -pedantic CFLAGS="-Werror -pedantic" AC_MSG_CHECKING([whether CC and CXX supports -pedantic]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -pedantic"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -pedantic" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wsign-conversion CFLAGS="-Werror -Wsign-conversion" AC_MSG_CHECKING([whether CC supports -Wsign-conversion]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wsign-conversion"], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wsign-conversion (for CXX) AC_LANG_PUSH([C++]) CXXFLAGS="-Werror -Wsign-conversion" AC_MSG_CHECKING([whether CXX supports -Wsign-conversion]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wsign-conversion"], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cxxflags" AC_LANG_POP # FLag -Woverloaded-virtual AC_LANG_PUSH([C++]) CXXFLAGS="-Werror -Woverloaded-virtual" AC_MSG_CHECKING([whether CXX supports -Woverloaded-virtual]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Woverloaded-virtual" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP # FLag -Wstrict-prototypes CFLAGS="-Werror -Wstrict-prototypes" AC_MSG_CHECKING([whether CC supports -Wstrict-prototypes]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wstrict-prototypes" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # Disable some warnings as CppUTest has this and can't be prevented at the moment. # FLag -Wno-disabled-macro-expansion. CFLAGS="-Werror -Wno-disabled-macro-expansion" AC_MSG_CHECKING([whether CC and CXX supports -Wno-disabled-macro-expansion]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-disabled-macro-expansion"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-disabled-macro-expansion" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wno-padded. CFLAGS="-Werror -Wno-padded" AC_MSG_CHECKING([whether CC and CXX supports -Wno-padded]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-padded"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-padded" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wno-global-constructors. AC_LANG_PUSH([C++]) CXXFLAGS="-Werror -Wno-global-constructors" AC_MSG_CHECKING([whether CXX supports -Wno-global-constructors]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-global-constructors" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP # FLag -Wno-exit-time-destructors. AC_LANG_PUSH([C++]) CXXFLAGS="-Werror -Wno-exit-time-destructors" AC_MSG_CHECKING([whether CXX supports -Wno-exit-time-destructors]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-exit-time-destructors" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP # FLag -Wno-weak-vtables. AC_LANG_PUSH([C++]) CXXFLAGS="-Werror -Wno-weak-vtables" AC_MSG_CHECKING([whether CXX supports -Wno-weak-vtables]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-weak-vtables" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP # FLag -Wno-old-style-cast. AC_LANG_PUSH([C++]) CXXFLAGS="-Werror -Wno-old-style-cast" AC_MSG_CHECKING([whether CXX supports -Wno-old-style-cast]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-old-style-cast" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP # FLag --coverage AC_LANG_PUSH([C++]) CXXFLAGS="-Werror --coverage" AC_MSG_CHECKING([whether CXX and the linker supports --coverage (broken in clang 3.3)]) AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); coverage_flag_supported="yes" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP ### Checking for Standard C++ 11 compiler flags AC_LANG_PUSH([C++]) # FLag -std=c++0x CXXFLAGS="-std=c++0x" AC_MSG_CHECKING([whether CXX supports -std=c++0x]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP11FLAG="-std=c++0x" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" CXXFLAGS="-std=c++11" AC_MSG_CHECKING([whether CXX supports -std=c++11]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP11FLAG="-std=c++11" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" CXXFLAGS="-stdlib=libc++" AC_MSG_CHECKING([whether CXX supports -stdlib=libc++]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP11FLAG="${CPPUTEST_CPP11FLAG} -stdlib=libc++" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP ### Checking for strange exception handling behavior, related to bugs in compilers... ### TODO: This part isn't finished yet. It will need to generate different CppUTestConfig.h files based on the result of these checks. AC_LANG_PUSH([C++]) # Can we use operator delete without exception handling specifier? (clang warns on this!) CXXFLAGS="-Werror" AC_MSG_CHECKING([whether CXX supports operator delete without exception handling specifier]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include \nvoid operator delete(void* mem);])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); UT_DELETE_MUST_HAVE_EXCEPTION_SPECIFIER="yes"]) CXXFLAGS="$saved_cxxflags" # Can we use operator new with exception specifier (g++4.7 on MacOSX is broken here) CXXFLAGS="-Werror" AC_MSG_CHECKING([whether CXX supports operator new with exception handling specifier]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include \nvoid* operator new(size_t size) throw(std::bad_alloc);;])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); UT_NEW_CANT_HAVE_EXCEPTION_SPECIFIER="yes"]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP ##### Linker checking. # # TBD! # Things that need to be fixed! # # The below code is checking for the -Qunused-arguments which is a linker flag. However, it says gcc supports it, while in fact, it doesn't. # As a workaround, we'll just check whether it is clang hardcoded, this is not in the automake spirit and will need to be fixed. # # LDFLAGS= # AC_MSG_CHECKING([whether LD supports -Qunused-arguments]) # AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_NO_UNUSED_ARGUMENT_WARNING=" -Qunused-arguments" ], [AC_MSG_RESULT([no])]) # LDFLAGS="$saved_ldflags" AC_MSG_CHECKING([whether CXXLD supports -Qunused-arguments linker option]) OUTPUT_WHEN_CLANG_COMPILER=`${CXX} --version | grep clang` AM_CONDITIONAL([TEST_COMPILER_IS_CLANG], [ ! test -z "$OUTPUT_WHEN_CLANG_COMPILER]") AM_COND_IF([TEST_COMPILER_IS_CLANG], [AC_MSG_RESULT([yes]); CPPUTEST_NO_UNUSED_ARGUMENT_WARNING=" ${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING} -Qunused-arguments"], [AC_MSG_RESULT([no])]; CPPUTEST_NO_UNUSED_ARGUMENT_WARNING="${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING} ") # Checking for options for creating map files LDFLAGS=" -Wl,-map,filename.map.txt" AC_MSG_CHECKING([whether LD supports -Wl,-map]) AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_LD_MAP_GENERATION=" -Wl,-map,filename.map.txt" ], [AC_MSG_RESULT([no])]) LDFLAGS="$saved_ldflags" # Different features AC_ARG_ENABLE([std-c], [AC_HELP_STRING([--disable-std-c], [disable the use of Standard C Library (warning: requires implementing Platforms/GccNoStdC) ])], [use_std_c=${enableval}], [use_std_c=yes]) AC_ARG_ENABLE([std-cpp], [AC_HELP_STRING([--disable-std-cpp], [disable the use of Standard C++ Library])], [use_std_cpp=${enableval}], [use_std_cpp=${default_use_std_cpp}]) AC_ARG_ENABLE([std-cpp11], [AC_HELP_STRING([--enable-std-cpp11], [enable the use of Standard C++ 11 (if the compiler supports that)])], [use_std_cpp11=${enableval}], [use_std_cpp11=no]) AC_ARG_ENABLE([cpputest-flags], [AC_HELP_STRING([--disable-cpputest-flags], [disable CFLAGS/CPPFLAGS/CXXFLAGS set by CppUTest])], [cpputest_flags=${enableval}], [cpputest_flags=yes]) AC_ARG_ENABLE([memory-leak-detection], [AC_HELP_STRING([--disable-memory-leak-detection], [disable memory leak detection])], [memory_leak_detection=${enableval}], [memory_leak_detection=yes]) AC_ARG_ENABLE([extensions], [AC_HELP_STRING([--disable-extensions], [disable CppUTest extension library])], [cpputest_ext=${enableval}], [cpputest_ext=yes]) AC_ARG_ENABLE([generate-map-file], [AC_HELP_STRING([--enable-generate-map-file], [enable the creation of a map file])], [generate_map_file=${enableval}], [generate_map_file=no]) AC_ARG_ENABLE([coverage], [AC_HELP_STRING([--enable-coverage], [enable running with coverage])], [coverage=${enableval}], [coverage=no]) ############################## Setting options ############################### AM_CONDITIONAL([INCLUDE_CPPUTEST_EXT], [test "x${cpputest_ext}" = xyes]) # Dealing with not having a Standard C library... (usually for Kernel development) if test "x${use_std_c}" = xno; then use_std_cpp=no memory_leak_detection=no CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -nostdinc" CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} -nostdlib" AC_DEFINE([CPPUTEST_STD_C_LIB_DISABLED], [1], [Standard C library disabled]) CPP_PLATFORM="GccNoStdC" else CPP_PLATFORM="Gcc" fi # Using standard C++ if test "x${use_std_cpp}" = xno; then AC_DEFINE([CPPUTEST_STD_CPP_LIB_DISABLED], 1, [Standard C++ library disabled]) if test "x${use_std_c}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -nostdinc++" # Since automake passes the CXXFLAGS to the linker, this will cause warnings with clang 3.2 (which become errors) CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} ${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING}" fi fi # Using the C++11 standard? if test "x${use_std_cpp11}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP11FLAG} ${CPPUTEST_CPP11BLACKLIST}" fi # Dealing with memory leak detection if test "x${memory_leak_detection}" = xno; then AC_DEFINE([CPPUTEST_MEM_LEAK_DETECTION_DISABLED], 1, [memory leak detection disabled]) else CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -include ${srcdir}/include/CppUTest/MemoryLeakDetectorNewMacros.h" CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -include ${srcdir}/include/CppUTest/MemoryLeakDetectorMallocMacros.h" fi # Generating map files. if test "x${generate_map_file}" = xyes; then CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} ${CPPUTEST_LD_MAP_GENERATION}" MOSTLYCLEANFILES="${MOSTLYCLEANFILES} *.map.txt" fi if test "x${coverage_flag_supported}" = xyes; then if test "x${coverage}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} --coverage" CPPUTEST_CFLAGS="${CPPUTEST_CFLAGS} --coverage" MOSTLYCLEANFILES="${MOSTLYCLEANFILES} *.gcda *.gcno" fi fi # GMock, check whether we can compile the GMock tests. AC_ARG_VAR([GMOCK_HOME], Directory where gmock is installed so the gmock tests can run) AC_MSG_CHECKING([for the availability of gmock via the GMOCK_HOME variable]) AM_CONDITIONAL([INCLUDE_GMOCKTESTS], [test -n "${GMOCK_HOME}"]) if test -n "${GMOCK_HOME}"; then AC_DEFINE([INCLUDE_GTEST_TESTS], 1, [Include the GTest-related tests in the build]) AC_ARG_VAR([GMOCK_HOME], [Location of the GMock]) GTEST_HOME=${GMOCK_HOME}/gtest CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -I${GMOCK_HOME}/include -I${GTEST_HOME}/include -I${GTEST_HOME}" CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -DGTEST_USE_OWN_TR1_TUPLE=1" if test -e ${GMOCK_HOME}/lib/libgmock.la && test -e ${GTEST_HOME}/lib/libgtest.la; then \ CPPUTEST_LDADD="${CPPUTEST_LDADD} ${GMOCK_HOME}/lib/libgmock.la ${GTEST_HOME}/lib/libgtest.la"; \ elif test -e ${GMOCK_HOME}/libgmock.a && test -e ${GTEST_HOME}/libgtest.a; then \ CPPUTEST_LDADD="${CPPUTEST_LDADD} ${GMOCK_HOME}/libgmock.a ${GTEST_HOME}/libgtest.a"; \ else \ AC_MSG_ERROR([ ------------------------------------- GMOCK_HOME was set, but couldn't find the compiled library. Did you compile it? -------------------------------------]); fi # In Travis, do not show warnings. The GTest warnings cause a log overflow that errors the build. Nice :) if test -n "${TRAVIS_BRANCH}"; then CPPUTEST_CWARNINGFLAGS="" CPPUTEST_CXXWARNINGFLAGS="" fi else # When we don't compile with GMock, we can be a bit stricter on warnings. CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} ${CPPUTEST_CWARNINGFLAGS_STRICT}" CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} ${CPPUTEST_CXXWARNINGFLAGS_STRICT}" fi CPPUTEST_CFLAGS="${CPPUTEST_CFLAGS} ${CPPUTEST_CWARNINGFLAGS}" CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CXXWARNINGFLAGS}" CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -I ${srcdir}/include ${CPPUTEST_CPPWARNINGFLAGS}" if test "x${cpputest_flags}" = xno; then CPPUTEST_CFLAGS="" CPPUTEST_CXXFLAGS="" CPPUTEST_CPPFLAGS="" fi ############################## Values ######################################## ### All files in git if test -e "${srcdir}/.git"; then ALL_FILES_IN_GIT="`git --git-dir=${srcdir}/.git ls-files | tr '[ \n]' ' '`" fi # Variables to substitute AC_SUBST([CPP_PLATFORM]) AC_SUBST([INCLUDE_CPPUTEST_EXT]) # Replacement of tool flags AC_SUBST([CPPUTEST_CFLAGS]) AC_SUBST([CPPUTEST_ADDITIONAL_CFLAGS]) AC_SUBST([CPPUTEST_CXXFLAGS]) AC_SUBST([CPPUTEST_ADDITIONAL_CXXFLAGS]) AC_SUBST([CPPUTEST_CPPFLAGS]) AC_SUBST([CPPUTEST_ADDITIONAL_CPPFLAGS]) AC_SUBST([CPPUTEST_LDADD]) AC_SUBST([CPPUTEST_LDFLAGS]) AC_SUBST([MOSTLYCLEANFILES]) AC_SUBST([CPPUTEST_HAS_GCC]) AC_SUBST([CPPUTEST_HAS_CLANG]) AC_SUBST([ALL_FILES_IN_GIT]) AC_DEFINE([CPPUTEST_COMPILATION], [1], [Compiling CppUTest itself]) LT_INIT AC_CONFIG_FILES([Makefile]) AC_OUTPUT echo \ "---------------------------------------------------------------- ${PACKAGE_NAME} Version ${PACKAGE_VERSION} Current compiler options: CC: ${CC} CXX: ${CXX} LD: ${LD} Default CFLAGS: ${CFLAGS} Default CXXFLAGS: ${CXXFLAGS} CppUTest CFLAGS: ${CPPUTEST_CFLAGS} CppUTest CXXFLAGS: ${CPPUTEST_CXXFLAGS} CppUTest CPPFLAGS: ${CPPUTEST_CPPFLAGS} CppUTest LDFLAGS: ${CPPUTEST_LDFLAGS} CppUTest LIB: ${LIBS} Features configured in ${PACKAGE_NAME}: Memory Leak Detection: ${memory_leak_detection} Compiling extensions: ${cpputest_ext} Disable CppUTest compile/link flags: ${cpputest_flags} Using Standard C++ Library: ${use_std_cpp} Using Standard C Library: ${use_std_c} Generating map file: ${generate_map_file} Compiling w coverage info: ${coverage} ----------------------------------------------------------------" cpputest-3.7.2/COPYING000644 000765 000024 00000002753 12521603460 015365 0ustar00basvoddestaff000000 000000 Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.cpputest-3.7.2/cpputest-hist.txt000644 000765 000024 00000204165 12521603460 017710 0ustar00basvoddestaff000000 000000 ------------------------------------------------------------------------ r337 | basvodde | 2009-05-17 02:43:25 -0500 (Sun, 17 May 2009) | 1 line Fixed the MemoryLeakDetector again. ------------------------------------------------------------------------ r336 | basvodde | 2009-05-17 02:05:32 -0500 (Sun, 17 May 2009) | 1 line Removed the PlatformSpecificSPrintf. No need anymore ------------------------------------------------------------------------ r335 | basvodde | 2009-05-17 01:52:38 -0500 (Sun, 17 May 2009) | 1 line Added some String function and removed static buffers. Also removed an #undef which let to problems... ------------------------------------------------------------------------ r334 | jamesgrenning | 2009-05-15 23:46:33 -0500 (Fri, 15 May 2009) | 2 lines c leak detection is default on. ------------------------------------------------------------------------ r333 | jamesgrenning | 2009-05-07 18:09:55 -0500 (Thu, 07 May 2009) | 1 line using ranlib due to cygwin problem. it does not support libtool -static ------------------------------------------------------------------------ r332 | jamesgrenning | 2009-05-07 18:01:04 -0500 (Thu, 07 May 2009) | 1 line Using libtool instead of $(AR) for library creation. Needed for Mac OSX. ------------------------------------------------------------------------ r331 | tpuronen | 2009-05-06 07:50:37 -0500 (Wed, 06 May 2009) | 1 line Clean up ------------------------------------------------------------------------ r330 | tpuronen | 2009-05-06 07:39:46 -0500 (Wed, 06 May 2009) | 1 line Symbian compilation fixes. ------------------------------------------------------------------------ r329 | tpuronen | 2009-05-06 06:50:36 -0500 (Wed, 06 May 2009) | 1 line The first batch of Symbian fixes, do not use new overloads as Symbian has built-in memory leak detection, remove obsolete stuff. ------------------------------------------------------------------------ r328 | tpuronen | 2009-05-06 03:21:45 -0500 (Wed, 06 May 2009) | 1 line 64-bit compiler fixes. Examples still need fixes. ------------------------------------------------------------------------ r327 | jamesgrenning | 2009-04-23 21:43:25 -0500 (Thu, 23 Apr 2009) | 1 line ------------------------------------------------------------------------ r326 | jamesgrenning | 2009-04-23 08:28:44 -0500 (Thu, 23 Apr 2009) | 1 line ------------------------------------------------------------------------ r325 | jamesgrenning | 2009-04-23 07:50:16 -0500 (Thu, 23 Apr 2009) | 2 lines Adding IAR-STR912 ARM9 eval board support ------------------------------------------------------------------------ r324 | jamesgrenning | 2009-04-22 19:15:21 -0500 (Wed, 22 Apr 2009) | 2 lines added enable() during setup. ------------------------------------------------------------------------ r323 | jamesgrenning | 2009-04-22 18:57:38 -0500 (Wed, 22 Apr 2009) | 26 lines Changes to allow Memory Leak Detection to be turned off for an embedded platform MemoryLeakDetector.h: Added #include so that size_t works. MemoryLeakWarningPlugin.h: Modified: extern "C" { /* include for size_t definition */ #undef __cplusplus #define _WCHART #include "TestHarness_c.h" } MemoryLeakWarningPlugin.cpp: Removed the remaining operator new stuff added disable() to constructor added isEnabled() guard clauses to public methods that do something modified and do not like: void MemoryLeakWarningPlugin::Enable() { #if UT_NEW_OVERRIDES_ENABLED memLeakDetector->enable(); #endif } I would prefer a NullMemoryLeakWarningPlugin over all this conditional compilation, but can live with it. ------------------------------------------------------------------------ r322 | jamesgrenning | 2009-04-14 07:37:06 -0500 (Tue, 14 Apr 2009) | 1 line Adding IAR work in progress ------------------------------------------------------------------------ r321 | basvodde | 2009-04-10 03:28:35 -0500 (Fri, 10 Apr 2009) | 4 lines Changed back to use size_t :( ------------------------------------------------------------------------ r320 | jamesgrenning | 2009-04-06 06:14:51 -0500 (Mon, 06 Apr 2009) | 5 lines changed int to long void* operator new(unsigned long size, const char* file, int line); void* operator new[](unsigned long size, const char* file, int line); ------------------------------------------------------------------------ r319 | basvodde | 2009-04-05 23:55:09 -0500 (Sun, 05 Apr 2009) | 3 lines Removed dependencies to Std Lib C in order to increase portability. ------------------------------------------------------------------------ r318 | basvodde | 2009-04-05 02:26:26 -0500 (Sun, 05 Apr 2009) | 6 lines - Fixed memory leak detector stack usage. - Added UT_PRINT - Added STRCMP_CONTAINS - Added StringFromFormat - Added simple and inefficient string buffering - Added new target to Makefile ------------------------------------------------------------------------ r317 | jamesgrenning | 2009-03-30 23:49:30 -0500 (Mon, 30 Mar 2009) | 20 lines CommandLineTestRunner supports JUNitOutput from command line. Using pimpl pattern. No longer a header file dependency on stdio. NullJUnitTestOutput file added that can be included in builds that will not use JUnit output Removed OutputType from public interface of CommandLineArguments now using bool isJUnitOutput() const; bool isEclipseOutput() const; also added -o eclipse -o normal still works (we'll want a -o vs some day) removed CommandLineTestRunner ::getOutputType ------------------------------------------------------------------------ r316 | jamesgrenning | 2009-03-30 09:51:10 -0500 (Mon, 30 Mar 2009) | 1 line Added conditional compile that allows swapping between no-placement new and yes-placement new ------------------------------------------------------------------------ r315 | basvodde | 2009-03-29 05:47:26 -0500 (Sun, 29 Mar 2009) | 2 lines Some tweaks to improve memory leak detector performance ------------------------------------------------------------------------ r314 | jamesgrenning | 2009-03-28 15:03:51 -0500 (Sat, 28 Mar 2009) | 33 lines TestHarness.h --------------- Added PlatformSpecificPutchat Added PlatformSpecificFlush CommandLIneTestRunner.cpp ------------------------- Needed to edit out JUnitOutput.h MemoryLeakDetector.cpp ---------------------- added #undef malloc and free added checkedMalloc that FAILs when malloc returns 0; called checkedMalloc instead of malloc MemoryLeakWarningPlugin.cpp --------------------------- Added a malloc failure check and FAIL TestOutput.cpp -------------- Extraced PlatformSpecificPutchat and PlatformSpecificFlush Platformws ---------- Added IarPlatform Gcc/UtestPlatform.cpp - added new mehtods VisualCpp/UtestPlatform.cpp - added new methods Symbian/UtestPlatform.cpp - added new methods ------------------------------------------------------------------------ r313 | jamesgrenning | 2009-03-11 09:19:15 -0500 (Wed, 11 Mar 2009) | 1 line Removed static from operator new ------------------------------------------------------------------------ r312 | basvodde | 2009-03-11 01:50:46 -0500 (Wed, 11 Mar 2009) | 2 lines Nasty little cast caused a negative array index. ------------------------------------------------------------------------ r311 | basvodde | 2009-03-10 23:21:10 -0500 (Tue, 10 Mar 2009) | 1 line Fixed some bugs related to static initialization. ------------------------------------------------------------------------ r310 | jamesgrenning | 2009-03-10 12:43:24 -0500 (Tue, 10 Mar 2009) | 9 lines Added to #include to TestHarness.h. Why is va_lst being passed as void* left old until we can discuss. MemoryLeakDetector.cpp using changed PlatformSpecificVSNprintf2 Added #undef __cplusplus to TestHarness_c.cpp Added PlatformSpecificVSNprintf2 to UTestPlatform. ------------------------------------------------------------------------ r309 | basvodde | 2009-03-10 02:24:35 -0500 (Tue, 10 Mar 2009) | 1 line Added realloc support ------------------------------------------------------------------------ r308 | basvodde | 2009-03-10 00:28:38 -0500 (Tue, 10 Mar 2009) | 1 line Fixed a / in the Makefile ------------------------------------------------------------------------ r307 | jamesgrenning | 2009-03-08 17:02:31 -0500 (Sun, 08 Mar 2009) | 1 line poking around SetPointerPlugin. ------------------------------------------------------------------------ r306 | jamesgrenning | 2009-03-08 16:26:22 -0500 (Sun, 08 Mar 2009) | 1 line VC projects OK after Mac change including CommandLineArguments fix. ------------------------------------------------------------------------ r305 | jamesgrenning | 2009-03-08 15:52:56 -0500 (Sun, 08 Mar 2009) | 14 lines Added CommandLineArguments class. Got rid of the statics that were causing the original trouble. There still a some leak as part of CommandLineTestRunner::runAllTestsMain(). Silenced with FinalReport(3). CommandLineTestRunner has no tests now. The prior tests were only about parameters anyway. I added gone and isGone to MemoryLeakDetector. This is preventing the detector from crashing during exit. You should look this over. Its kind of a kludge, but it works. I put thin into ignore. Have not had a chance to check why it is broken. IGNORE_TEST(SetPointerPluginTest, installTooMuchFunctionPointer) Added a test to check the order of the pre and post test actions. last plugin is run first, post runs in opposite order. ------------------------------------------------------------------------ r304 | jamesgrenning | 2009-02-23 19:10:13 -0600 (Mon, 23 Feb 2009) | 1 line kludge fix for groupFilter and nameFilter in test regixtry.u ------------------------------------------------------------------------ r303 | jamesgrenning | 2009-02-23 14:36:47 -0600 (Mon, 23 Feb 2009) | 1 line turned on full parse indexing ------------------------------------------------------------------------ r302 | jamesgrenning | 2009-02-23 14:29:07 -0600 (Mon, 23 Feb 2009) | 38 lines I made this compile with ubuntu Linux gcc 4.3.2 Many char*s and char**s had to be changed to const char* and const char**. For backwards compatibility there are two of these static int RunAllTests(int ac, const char** av); static int RunAllTests(int ac, char** av); one to work with each possible main main(int argc, const char** argv). main(int argc, char** argv) I did not want to break existing tests. There are also two of thes in TestPlugin for the same reason. virtual bool parseAllArguments(int ac, const char** av, int index); virtual bool parseAllArguments(int ac, char** av, int index); I did not modify the PluginTest file because parseArguments is not tested there. I took out CHECK_EQUAL("THIS", "THIS") from places like TEST(Utest, allMacros) { CHECK(0 == 0); LONGS_EQUAL(1,1); BYTES_EQUAL(0xab,0xab); CHECK_EQUAL(100,100); STRCMP_EQUAL("THIS", "THIS"); DOUBLES_EQUAL(1.0, 1.0, .01); POINTERS_EQUAL(this, this); } It was generating a warning. For good reasons. The use probably really wants STRCMP_EQUAL. Changed Makefile CPPFLAGS += -Wall ------------------------------------------------------------------------ r301 | basvodde | 2009-01-10 03:29:18 -0600 (Sat, 10 Jan 2009) | 4 lines 1. New memory leak detector 2. CHECKs can be used for functions that return a value 3. Teardown is always called 4. Failed cases don't report memory leaks ------------------------------------------------------------------------ r300 | jamesgrenning | 2008-12-10 08:40:26 -0600 (Wed, 10 Dec 2008) | 1 line fixed alternative TEST_FAIL alternative to FAIL ------------------------------------------------------------------------ r299 | jamesgrenning | 2008-12-08 20:43:40 -0600 (Mon, 08 Dec 2008) | 2 lines Updated scripts for generating C starting point for multi instance classes ------------------------------------------------------------------------ r298 | basvodde | 2008-12-02 04:56:01 -0600 (Tue, 02 Dec 2008) | 1 line OrderedTest ------------------------------------------------------------------------ r297 | basvodde | 2008-12-02 04:39:38 -0600 (Tue, 02 Dec 2008) | 2 lines Added another search function... ------------------------------------------------------------------------ r296 | basvodde | 2008-11-30 20:48:31 -0600 (Sun, 30 Nov 2008) | 1 line Minor changes to support ordered tests ------------------------------------------------------------------------ r295 | jamesgrenning | 2008-11-10 10:48:40 -0600 (Mon, 10 Nov 2008) | 1 line Changed how pointers are printed so that it is compatible with MS VC6/Mac/Cygwin ------------------------------------------------------------------------ r294 | jamesgrenning | 2008-11-10 09:20:50 -0600 (Mon, 10 Nov 2008) | 1 line ------------------------------------------------------------------------ r293 | jamesgrenning | 2008-11-04 17:46:46 -0600 (Tue, 04 Nov 2008) | 1 line Fixed signature of PlatformSpecificSprintf ------------------------------------------------------------------------ r292 | jamesgrenning | 2008-11-04 06:43:18 -0600 (Tue, 04 Nov 2008) | 1 line delete q ------------------------------------------------------------------------ r291 | basvodde | 2008-11-04 00:32:13 -0600 (Tue, 04 Nov 2008) | 3 lines Removed the dependency on stdio.h in the TestHarness.h. It killed the usage of CppUTest on not so standard C platforms. ------------------------------------------------------------------------ r290 | jamesgrenning | 2008-11-03 06:11:34 -0600 (Mon, 03 Nov 2008) | 3 lines added CppUnit templates ------------------------------------------------------------------------ r289 | jamesgrenning | 2008-10-30 14:39:29 -0500 (Thu, 30 Oct 2008) | 1 line ------------------------------------------------------------------------ r288 | jamesgrenning | 2008-10-30 14:35:22 -0500 (Thu, 30 Oct 2008) | 2 lines improving new project script ------------------------------------------------------------------------ r287 | jamesgrenning | 2008-10-03 06:52:37 -0500 (Fri, 03 Oct 2008) | 2 lines added POINTERS_EQUAL support Updated code templates ------------------------------------------------------------------------ r286 | jamesgrenning | 2008-09-04 14:10:15 -0500 (Thu, 04 Sep 2008) | 2 lines Added support scripts to build dir structure and other flavor of C modules ------------------------------------------------------------------------ r285 | jamesgrenning | 2008-08-02 16:14:51 -0500 (Sat, 02 Aug 2008) | 1 line initialized a pointer that made a failure in VS.NET 2003 ------------------------------------------------------------------------ r284 | jamesgrenning | 2008-08-01 17:51:23 -0500 (Fri, 01 Aug 2008) | 1 line I changed cpputest_sprintf's name ------------------------------------------------------------------------ r283 | basvodde | 2008-08-01 04:03:46 -0500 (Fri, 01 Aug 2008) | 1 line Path fixed. ------------------------------------------------------------------------ r282 | jamesgrenning | 2008-07-15 20:35:04 -0500 (Tue, 15 Jul 2008) | 1 line removed platform include path ------------------------------------------------------------------------ r281 | jamesgrenning | 2008-07-15 15:41:15 -0500 (Tue, 15 Jul 2008) | 1 line ------------------------------------------------------------------------ r280 | jamesgrenning | 2008-07-15 11:53:22 -0500 (Tue, 15 Jul 2008) | 6 lines Created cpputest_snprintf to get isolate the platform dependencies around snprintf. Updated MS VC6 workspaces and projects Got rid of cygwin warnings This needs to be checked on symbian. vsnprintf is not supported on symbian, but it does translate the call to vsprintf. this might cause a test to fail. ------------------------------------------------------------------------ r279 | jamesgrenning | 2008-07-12 12:07:02 -0500 (Sat, 12 Jul 2008) | 20 lines I just got CppUTest to work with VC6 AGAIN! Here are some of the changes. JUnit... files add #include "Platform.h" the MS platform file defines snprintf Makefile: add the platform directory on the include search path. added condition build for the "Extensions" Testharness_c.cpp got rid of a warning here by using the ?: operator void CHECK_C_LOCATION(int condition, const char* conditionString, const char* fileName, int lineNumber) { CHECK_LOCATION(((condition) == 0 ? false : true), conditionString, fileName, lineNumber); } ------------------------------------------------------------------------ r278 | tpuronen | 2008-06-27 02:09:10 -0500 (Fri, 27 Jun 2008) | 1 line Added NULL checking to overloaded delete operators ------------------------------------------------------------------------ r277 | tpuronen | 2008-06-26 08:14:25 -0500 (Thu, 26 Jun 2008) | 1 line Rewrote README_Symbian.txt, added missing tests to alltests.mmp. ------------------------------------------------------------------------ r276 | tpuronen | 2008-06-26 07:23:54 -0500 (Thu, 26 Jun 2008) | 1 line Symbian build file fixes ------------------------------------------------------------------------ r275 | tpuronen | 2008-06-26 05:21:13 -0500 (Thu, 26 Jun 2008) | 1 line Symbian build file fixes ------------------------------------------------------------------------ r274 | jamesgrenning | 2008-06-25 17:03:07 -0500 (Wed, 25 Jun 2008) | 2 lines added BYTES_EQUAL ------------------------------------------------------------------------ r273 | jamesgrenning | 2008-06-25 17:01:21 -0500 (Wed, 25 Jun 2008) | 1 line added BYTES_EQUAL ------------------------------------------------------------------------ r272 | basvodde | 2008-06-23 21:51:41 -0500 (Mon, 23 Jun 2008) | 1 line Fixed the output to console related to flushing. ------------------------------------------------------------------------ r271 | basvodde | 2008-06-23 21:42:13 -0500 (Mon, 23 Jun 2008) | 1 line Renamed the RealTestOutput and the MockTestOutput ------------------------------------------------------------------------ r270 | basvodde | 2008-06-23 03:22:57 -0500 (Mon, 23 Jun 2008) | 4 lines Renamed GenericTest to ExecFunctionTest and moved it to UTest.h Also renamed GenericFixture to TestTestingFixture and moved it to the include since this is useful when writing plugins or extensions. Fixed all the tests. ------------------------------------------------------------------------ r269 | jamesgrenning | 2008-05-20 10:41:08 -0500 (Tue, 20 May 2008) | 1 line report that tests are being run, before running them ------------------------------------------------------------------------ r268 | jamesgrenning | 2008-05-20 10:37:50 -0500 (Tue, 20 May 2008) | 2 lines flush buffer so that if a test crashes, the test name is printed. Ignore tests are indicated with a bang! ------------------------------------------------------------------------ r267 | basvodde | 2008-04-16 03:54:43 -0500 (Wed, 16 Apr 2008) | 1 line Use more gcc defaults ------------------------------------------------------------------------ r266 | tpuronen | 2008-04-06 05:42:39 -0500 (Sun, 06 Apr 2008) | 1 line Symbian build file fixes ------------------------------------------------------------------------ r265 | tpuronen | 2008-04-06 01:07:35 -0500 (Sun, 06 Apr 2008) | 1 line Updated Symbian README ------------------------------------------------------------------------ r264 | basvodde | 2008-04-03 23:06:08 -0500 (Thu, 03 Apr 2008) | 1 line Plugin changes ------------------------------------------------------------------------ r263 | basvodde | 2008-04-03 23:02:40 -0500 (Thu, 03 Apr 2008) | 2 lines Added a CHECK_C macro for C usage ------------------------------------------------------------------------ r262 | basvodde | 2008-04-03 22:59:43 -0500 (Thu, 03 Apr 2008) | 1 line Moved SimpleString earlier ------------------------------------------------------------------------ r261 | basvodde | 2008-04-02 02:19:02 -0500 (Wed, 02 Apr 2008) | 1 line Doing reverse resetting for SetPointerPlugin ------------------------------------------------------------------------ r260 | basvodde | 2008-04-02 02:18:32 -0500 (Wed, 02 Apr 2008) | 1 line Added test for setting the same pointer twice ------------------------------------------------------------------------ r259 | basvodde | 2008-04-01 00:36:10 -0500 (Tue, 01 Apr 2008) | 1 line Removed platform dependency ------------------------------------------------------------------------ r258 | basvodde | 2008-04-01 00:34:56 -0500 (Tue, 01 Apr 2008) | 1 line Removed Platform.h ------------------------------------------------------------------------ r257 | basvodde | 2008-04-01 00:25:30 -0500 (Tue, 01 Apr 2008) | 1 line t -> T ------------------------------------------------------------------------ r256 | basvodde | 2008-04-01 00:14:41 -0500 (Tue, 01 Apr 2008) | 1 line I -> i ------------------------------------------------------------------------ r255 | basvodde | 2008-04-01 00:10:30 -0500 (Tue, 01 Apr 2008) | 1 line HRM! ------------------------------------------------------------------------ r254 | basvodde | 2008-03-31 23:59:40 -0500 (Mon, 31 Mar 2008) | 1 line Always install the SetPointerPlugin ------------------------------------------------------------------------ r253 | basvodde | 2008-03-31 23:48:08 -0500 (Mon, 31 Mar 2008) | 3 lines Changed the UT_FPSET to UT_PTR_SET Now works generic with all pointers ------------------------------------------------------------------------ r252 | basvodde | 2008-03-31 23:45:29 -0500 (Mon, 31 Mar 2008) | 1 line JUnit output fix ------------------------------------------------------------------------ r251 | basvodde | 2008-03-31 23:45:01 -0500 (Mon, 31 Mar 2008) | 1 line JUnit output fix ------------------------------------------------------------------------ r250 | tpuronen | 2008-03-26 15:37:49 -0500 (Wed, 26 Mar 2008) | 1 line Symbian build fixes. ------------------------------------------------------------------------ r249 | jamesgrenning | 2008-03-26 14:33:17 -0500 (Wed, 26 Mar 2008) | 1 line Added setjmp/longjmp for symbian. not sure if it is right ------------------------------------------------------------------------ r248 | jamesgrenning | 2008-03-24 23:28:31 -0500 (Mon, 24 Mar 2008) | 1 line ------------------------------------------------------------------------ r247 | jamesgrenning | 2008-03-24 23:28:02 -0500 (Mon, 24 Mar 2008) | 2 lines made NewProject compatible with makefile changes ------------------------------------------------------------------------ r246 | jamesgrenning | 2008-03-24 23:27:15 -0500 (Mon, 24 Mar 2008) | 1 line MS Project dsp files up to date ------------------------------------------------------------------------ r245 | jamesgrenning | 2008-03-24 23:26:27 -0500 (Mon, 24 Mar 2008) | 2 lines update how throw/catch is done to get rid of warning ------------------------------------------------------------------------ r244 | jamesgrenning | 2008-03-24 23:25:25 -0500 (Mon, 24 Mar 2008) | 2 lines ------------------------------------------------------------------------ r243 | jamesgrenning | 2008-03-24 23:24:41 -0500 (Mon, 24 Mar 2008) | 1 line ------------------------------------------------------------------------ r242 | jamesgrenning | 2008-03-24 09:00:18 -0500 (Mon, 24 Mar 2008) | 6 lines Refactored early test exit so that macros are not needed for exiting tests early. gcc version and VC++ versions use exceptions symbian version is untested, but i put a setjmp/longjmp implementation in there that works on gcc. I added a StarterKit platform that has setjmp/longjmp implementations for early test exit and null implementations for the time stuff. ------------------------------------------------------------------------ r241 | jamesgrenning | 2008-03-22 14:18:09 -0500 (Sat, 22 Mar 2008) | 4 lines Made changes so that a test will exist on its first failure using setjmp/longjmp. it works for gcc. it is a NOP for VC++ and Symbian. Updated and tested VC++ project files ------------------------------------------------------------------------ r240 | jamesgrenning | 2008-03-22 14:15:30 -0500 (Sat, 22 Mar 2008) | 1 line experimental version of malloc/free that will record line of malloc ------------------------------------------------------------------------ r239 | jamesgrenning | 2008-03-22 14:13:14 -0500 (Sat, 22 Mar 2008) | 1 line Commented out experiment with preprocessor stubs ------------------------------------------------------------------------ r238 | jamesgrenning | 2008-03-22 14:09:35 -0500 (Sat, 22 Mar 2008) | 4 lines refactor make clean deletion of gcov files works on cygwin ------------------------------------------------------------------------ r237 | jamesgrenning | 2008-03-22 06:04:17 -0500 (Sat, 22 Mar 2008) | 5 lines Updated scripts NewCModule - simpler template NewCmiModule - multiple instance C module NewProject supported ------------------------------------------------------------------------ r236 | jamesgrenning | 2008-03-05 04:37:55 -0600 (Wed, 05 Mar 2008) | 2 lines test results captured in a file, and other gcov changes ------------------------------------------------------------------------ r235 | jamesgrenning | 2008-01-30 23:38:07 -0600 (Wed, 30 Jan 2008) | 1 line Added format target to reformat code using astyle. ------------------------------------------------------------------------ r234 | jamesgrenning | 2008-01-30 22:25:24 -0600 (Wed, 30 Jan 2008) | 1 line Added ability to cause cpputest_malloc to return a NULL pointer. ------------------------------------------------------------------------ r233 | jamesgrenning | 2008-01-28 01:21:44 -0600 (Mon, 28 Jan 2008) | 2 lines Deleted some unused templates ------------------------------------------------------------------------ r232 | jamesgrenning | 2008-01-28 01:15:20 -0600 (Mon, 28 Jan 2008) | 2 lines clean up temp files ------------------------------------------------------------------------ r231 | jamesgrenning | 2008-01-27 19:45:44 -0600 (Sun, 27 Jan 2008) | 1 line ignore gcov output ------------------------------------------------------------------------ r230 | jamesgrenning | 2008-01-27 19:42:41 -0600 (Sun, 27 Jan 2008) | 1 line ignore gcov files ------------------------------------------------------------------------ r229 | jamesgrenning | 2008-01-27 18:56:42 -0600 (Sun, 27 Jan 2008) | 5 lines Update makefile and makefile support Added test coverage to makefile updated templates for initial C modules ------------------------------------------------------------------------ r228 | jamesgrenning | 2007-12-27 18:19:34 -0600 (Thu, 27 Dec 2007) | 1 line Added -I for platform include ------------------------------------------------------------------------ r227 | jamesgrenning | 2007-12-27 18:16:54 -0600 (Thu, 27 Dec 2007) | 2 lines Added support for uint8_t uint16_t uint32_t. ------------------------------------------------------------------------ r226 | jamesgrenning | 2007-12-27 15:41:48 -0600 (Thu, 27 Dec 2007) | 1 line Reversed the slashes in the includes ------------------------------------------------------------------------ r225 | basvodde | 2007-12-27 03:27:29 -0600 (Thu, 27 Dec 2007) | 1 line Added a very simple function pointer resetter plugin ------------------------------------------------------------------------ r224 | basvodde | 2007-12-26 02:15:55 -0600 (Wed, 26 Dec 2007) | 1 line Changed char* to SimpleString. To remove dependencies with StdC ------------------------------------------------------------------------ r223 | basvodde | 2007-12-26 02:15:29 -0600 (Wed, 26 Dec 2007) | 1 line Changed char* to SimpleString. To remove dependencies with StdC ------------------------------------------------------------------------ r222 | basvodde | 2007-12-26 02:15:03 -0600 (Wed, 26 Dec 2007) | 1 line Changed char* to SimpleString. To remove dependencies with StdC ------------------------------------------------------------------------ r221 | basvodde | 2007-12-26 01:48:33 -0600 (Wed, 26 Dec 2007) | 1 line Print out options and removed include dependencies ------------------------------------------------------------------------ r220 | basvodde | 2007-12-26 01:47:08 -0600 (Wed, 26 Dec 2007) | 1 line Changed #include dependency ------------------------------------------------------------------------ r219 | basvodde | 2007-12-26 01:46:41 -0600 (Wed, 26 Dec 2007) | 1 line ------------------------------------------------------------------------ r218 | basvodde | 2007-12-26 01:46:23 -0600 (Wed, 26 Dec 2007) | 1 line Changed #include dependency ------------------------------------------------------------------------ r217 | basvodde | 2007-12-26 01:44:39 -0600 (Wed, 26 Dec 2007) | 1 line Removed Platform.h ------------------------------------------------------------------------ r216 | basvodde | 2007-12-24 03:41:43 -0600 (Mon, 24 Dec 2007) | 1 line Need both sys time and time. Windows/unix difference. ------------------------------------------------------------------------ r215 | basvodde | 2007-12-24 03:12:16 -0600 (Mon, 24 Dec 2007) | 3 lines Code for per test time checks both in -v mode and -ojunit mode. ------------------------------------------------------------------------ r214 | basvodde | 2007-12-24 03:11:30 -0600 (Mon, 24 Dec 2007) | 1 line Used the new macro ------------------------------------------------------------------------ r213 | basvodde | 2007-12-24 03:10:03 -0600 (Mon, 24 Dec 2007) | 1 line Added new macro for creating test base classes. ------------------------------------------------------------------------ r212 | basvodde | 2007-12-24 03:08:45 -0600 (Mon, 24 Dec 2007) | 4 lines Added some platform specific functions to TestHarness. Might need to find a better way to do this. Though... not today. ------------------------------------------------------------------------ r211 | basvodde | 2007-12-24 03:06:43 -0600 (Mon, 24 Dec 2007) | 1 line Removed extenstions since could not compile without it. ------------------------------------------------------------------------ r210 | basvodde | 2007-12-24 03:06:14 -0600 (Mon, 24 Dec 2007) | 1 line Updated the makefile and fixed some issues with the extentions ------------------------------------------------------------------------ r209 | jamesgrenning | 2007-12-17 20:39:37 -0600 (Mon, 17 Dec 2007) | 1 line ------------------------------------------------------------------------ r208 | jamesgrenning | 2007-12-17 20:36:17 -0600 (Mon, 17 Dec 2007) | 1 line Refactored the makefile to add conditional inclusion of an extensions directory ------------------------------------------------------------------------ r207 | jamesgrenning | 2007-12-17 15:41:52 -0600 (Mon, 17 Dec 2007) | 1 line changed include to -include to get rid of the error messages when creating the.d files ------------------------------------------------------------------------ r206 | jamesgrenning | 2007-12-17 15:30:12 -0600 (Mon, 17 Dec 2007) | 10 lines To solve this error on a mac: /usr/bin/ld: Undefined symbols: __Unwind_Resume collect2: ld returned 1 exit status make: *** [CppUTest_tests] Error 1 Changes $(CC) to $(CXX) everywhere but in the .o.c rule. Change running the target from @ to ./@ to be unix compatible. ------------------------------------------------------------------------ r205 | jamesgrenning | 2007-12-03 10:20:40 -0600 (Mon, 03 Dec 2007) | 1 line ------------------------------------------------------------------------ r204 | jamesgrenning | 2007-12-03 10:19:21 -0600 (Mon, 03 Dec 2007) | 1 line ------------------------------------------------------------------------ r203 | basvodde | 2007-11-30 00:12:54 -0600 (Fri, 30 Nov 2007) | 1 line Removed stdint.h dependency ------------------------------------------------------------------------ r202 | basvodde | 2007-11-29 20:10:45 -0600 (Thu, 29 Nov 2007) | 1 line Fixed a bug that was only visible on Linux ------------------------------------------------------------------------ r201 | basvodde | 2007-11-29 19:41:00 -0600 (Thu, 29 Nov 2007) | 1 line Deleted old makefiles ------------------------------------------------------------------------ r200 | basvodde | 2007-11-29 19:38:49 -0600 (Thu, 29 Nov 2007) | 1 line New makefile ------------------------------------------------------------------------ r199 | basvodde | 2007-11-29 19:38:24 -0600 (Thu, 29 Nov 2007) | 1 line Changed the timeing output ------------------------------------------------------------------------ r198 | jamesgrenning | 2007-11-28 17:11:01 -0600 (Wed, 28 Nov 2007) | 1 line Made a new StringFrom method so that pointers don't print as , but rather in hex ------------------------------------------------------------------------ r197 | jamesgrenning | 2007-11-28 17:08:18 -0600 (Wed, 28 Nov 2007) | 1 line make depend now checks *.c* for dependencies, rather than just *.cpp ------------------------------------------------------------------------ r196 | basvodde | 2007-11-21 03:53:59 -0600 (Wed, 21 Nov 2007) | 2 lines Added time measurements ------------------------------------------------------------------------ r195 | basvodde | 2007-11-21 03:29:00 -0600 (Wed, 21 Nov 2007) | 1 line Added SimpleStringExtensions ------------------------------------------------------------------------ r194 | basvodde | 2007-11-21 00:09:11 -0600 (Wed, 21 Nov 2007) | 2 lines Changed the name of TARGET since it conflicted with an environment variable called TARGET and therefore let to very strange error messages. ------------------------------------------------------------------------ r193 | basvodde | 2007-11-20 20:48:58 -0600 (Tue, 20 Nov 2007) | 1 line Moved SimpleStringExtensions.cpp to the examples ------------------------------------------------------------------------ r192 | basvodde | 2007-11-20 20:30:08 -0600 (Tue, 20 Nov 2007) | 1 line Removed TestInstaller ------------------------------------------------------------------------ r191 | basvodde | 2007-11-20 20:29:48 -0600 (Tue, 20 Nov 2007) | 1 line Removed TestInstaller ------------------------------------------------------------------------ r190 | basvodde | 2007-11-20 20:29:20 -0600 (Tue, 20 Nov 2007) | 1 line Removed TestInstaller ------------------------------------------------------------------------ r189 | basvodde | 2007-11-20 20:23:14 -0600 (Tue, 20 Nov 2007) | 1 line Removed NullTest ------------------------------------------------------------------------ r188 | basvodde | 2007-11-20 20:22:53 -0600 (Tue, 20 Nov 2007) | 1 line Removed NullTest ------------------------------------------------------------------------ r187 | basvodde | 2007-11-20 20:22:27 -0600 (Tue, 20 Nov 2007) | 1 line Added UtestMacros.h ------------------------------------------------------------------------ r186 | basvodde | 2007-11-20 20:21:58 -0600 (Tue, 20 Nov 2007) | 1 line Removed NullTest ------------------------------------------------------------------------ r185 | basvodde | 2007-11-20 20:14:39 -0600 (Tue, 20 Nov 2007) | 1 line Removed EqualsFailure ------------------------------------------------------------------------ r184 | basvodde | 2007-11-20 20:14:14 -0600 (Tue, 20 Nov 2007) | 1 line Removed EqualsFailure ------------------------------------------------------------------------ r183 | jamesgrenning | 2007-11-20 00:59:21 -0600 (Tue, 20 Nov 2007) | 2 lines Added scripts and templates for NewProject and NewLibrary ------------------------------------------------------------------------ r182 | jamesgrenning | 2007-11-19 20:51:13 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r181 | jamesgrenning | 2007-11-19 18:44:02 -0600 (Mon, 19 Nov 2007) | 2 lines ------------------------------------------------------------------------ r180 | jamesgrenning | 2007-11-19 18:43:32 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r179 | jamesgrenning | 2007-11-19 18:43:06 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r178 | jamesgrenning | 2007-11-19 18:42:30 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r177 | jamesgrenning | 2007-11-19 18:41:50 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r176 | jamesgrenning | 2007-11-19 18:39:36 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r175 | jamesgrenning | 2007-11-19 18:38:48 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r174 | jamesgrenning | 2007-11-19 18:36:25 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r173 | jamesgrenning | 2007-11-19 17:48:13 -0600 (Mon, 19 Nov 2007) | 2 lines ------------------------------------------------------------------------ r172 | jamesgrenning | 2007-11-19 17:46:52 -0600 (Mon, 19 Nov 2007) | 2 lines ------------------------------------------------------------------------ r171 | jamesgrenning | 2007-11-19 17:44:53 -0600 (Mon, 19 Nov 2007) | 2 lines ------------------------------------------------------------------------ r170 | jamesgrenning | 2007-11-19 17:43:49 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r169 | jamesgrenning | 2007-11-19 17:42:31 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r168 | jamesgrenning | 2007-11-19 17:38:25 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r167 | jamesgrenning | 2007-11-19 17:37:48 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r166 | jamesgrenning | 2007-11-19 17:35:58 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r165 | jamesgrenning | 2007-11-19 17:29:35 -0600 (Mon, 19 Nov 2007) | 1 line ------------------------------------------------------------------------ r164 | jamesgrenning | 2007-11-19 17:27:00 -0600 (Mon, 19 Nov 2007) | 3 lines Adding support for NewProject.sh and NewLibrary.sh This is an experiment right now ------------------------------------------------------------------------ r163 | jamesgrenning | 2007-11-06 13:12:20 -0600 (Tue, 06 Nov 2007) | 1 line ------------------------------------------------------------------------ r162 | jamesgrenning | 2007-11-06 12:24:15 -0600 (Tue, 06 Nov 2007) | 1 line Added Hex printing and support for uint32_t ------------------------------------------------------------------------ r161 | jamesgrenning | 2007-11-06 12:19:43 -0600 (Tue, 06 Nov 2007) | 2 lines added conditional logic around copying hte created library ------------------------------------------------------------------------ r160 | basvodde | 2007-11-06 02:22:45 -0600 (Tue, 06 Nov 2007) | 1 line Removed the mmp file ------------------------------------------------------------------------ r159 | basvodde | 2007-10-07 04:53:58 -0500 (Sun, 07 Oct 2007) | 1 line Symbian build files ------------------------------------------------------------------------ r158 | basvodde | 2007-10-07 04:53:10 -0500 (Sun, 07 Oct 2007) | 1 line Symbian build file ------------------------------------------------------------------------ r157 | basvodde | 2007-10-07 04:52:37 -0500 (Sun, 07 Oct 2007) | 1 line Minor changes ------------------------------------------------------------------------ r156 | basvodde | 2007-10-07 04:51:55 -0500 (Sun, 07 Oct 2007) | 1 line Symbian files ------------------------------------------------------------------------ r155 | basvodde | 2007-10-07 04:47:36 -0500 (Sun, 07 Oct 2007) | 1 line Moved ------------------------------------------------------------------------ r154 | jamesgrenning | 2007-10-01 17:04:01 -0500 (Mon, 01 Oct 2007) | 1 line Deleted SymbianAllTests.cpp, it was breaking the make depend. ------------------------------------------------------------------------ r153 | jamesgrenning | 2007-09-29 12:04:00 -0500 (Sat, 29 Sep 2007) | 1 line LONGS_EQUAL outputs expected/but was numbers in both decimal and hex ------------------------------------------------------------------------ r152 | jamesgrenning | 2007-09-12 19:30:55 -0500 (Wed, 12 Sep 2007) | 2 lines got rid of printf infavor of putchar and a loop ------------------------------------------------------------------------ r151 | jamesgrenning | 2007-09-12 19:29:39 -0500 (Wed, 12 Sep 2007) | 2 lines added files for creating a new project changed the code templates so that they only use setup and teardown ------------------------------------------------------------------------ r150 | jamesgrenning | 2007-09-12 19:20:30 -0500 (Wed, 12 Sep 2007) | 2 lines New project template ------------------------------------------------------------------------ r149 | jamesgrenning | 2007-09-12 19:14:10 -0500 (Wed, 12 Sep 2007) | 1 line Move symbian stuff to one directory ------------------------------------------------------------------------ r148 | basvodde | 2007-08-30 07:38:22 -0500 (Thu, 30 Aug 2007) | 1 line Symbian test files ------------------------------------------------------------------------ r147 | basvodde | 2007-08-30 07:37:32 -0500 (Thu, 30 Aug 2007) | 1 line Patched the wrong patch ------------------------------------------------------------------------ r146 | basvodde | 2007-08-30 07:36:19 -0500 (Thu, 30 Aug 2007) | 2 lines Symbian build files ------------------------------------------------------------------------ r145 | basvodde | 2007-08-30 03:52:40 -0500 (Thu, 30 Aug 2007) | 1 line ------------------------------------------------------------------------ r144 | basvodde | 2007-08-30 03:46:05 -0500 (Thu, 30 Aug 2007) | 1 line Added some methods because of symbian port ------------------------------------------------------------------------ r143 | basvodde | 2007-08-30 03:42:19 -0500 (Thu, 30 Aug 2007) | 1 line Slightly different interface ------------------------------------------------------------------------ r142 | basvodde | 2007-08-30 03:41:14 -0500 (Thu, 30 Aug 2007) | 1 line Added methods due to symbian ------------------------------------------------------------------------ r141 | basvodde | 2007-08-30 03:40:38 -0500 (Thu, 30 Aug 2007) | 1 line Removed inline methods due to symbian ------------------------------------------------------------------------ r140 | basvodde | 2007-08-30 03:28:18 -0500 (Thu, 30 Aug 2007) | 1 line Symbian test files. ------------------------------------------------------------------------ r139 | basvodde | 2007-08-30 03:27:30 -0500 (Thu, 30 Aug 2007) | 1 line Platform specific test execution ------------------------------------------------------------------------ r138 | basvodde | 2007-08-30 03:26:34 -0500 (Thu, 30 Aug 2007) | 1 line Symbian platform specifics ------------------------------------------------------------------------ r137 | basvodde | 2007-08-30 03:25:16 -0500 (Thu, 30 Aug 2007) | 1 line Fixed a small memory leak ------------------------------------------------------------------------ r136 | basvodde | 2007-08-30 03:24:39 -0500 (Thu, 30 Aug 2007) | 1 line Symbian support ------------------------------------------------------------------------ r135 | basvodde | 2007-08-30 03:21:36 -0500 (Thu, 30 Aug 2007) | 1 line Symbian build file ------------------------------------------------------------------------ r134 | basvodde | 2007-08-30 03:20:34 -0500 (Thu, 30 Aug 2007) | 1 line Added platform specific indirection ------------------------------------------------------------------------ r133 | basvodde | 2007-08-30 03:17:07 -0500 (Thu, 30 Aug 2007) | 1 line Fixed a funny bug ------------------------------------------------------------------------ r132 | basvodde | 2007-08-30 03:16:08 -0500 (Thu, 30 Aug 2007) | 1 line Added platform specific UTest execution method ------------------------------------------------------------------------ r131 | basvodde | 2007-08-30 03:15:46 -0500 (Thu, 30 Aug 2007) | 1 line Test executions platform specific method ------------------------------------------------------------------------ r130 | basvodde | 2007-08-30 03:06:13 -0500 (Thu, 30 Aug 2007) | 1 line New method for platform specific execution ------------------------------------------------------------------------ r129 | basvodde | 2007-08-29 04:30:54 -0500 (Wed, 29 Aug 2007) | 1 line Moved static method to not be inline anymore ------------------------------------------------------------------------ r128 | basvodde | 2007-08-29 04:30:14 -0500 (Wed, 29 Aug 2007) | 1 line Moved static method to not be inline anymore ------------------------------------------------------------------------ r127 | basvodde | 2007-08-28 05:02:32 -0500 (Tue, 28 Aug 2007) | 1 line Minor changes ------------------------------------------------------------------------ r126 | jamesgrenning | 2007-08-22 19:27:21 -0500 (Wed, 22 Aug 2007) | 1 line added extern "C" to get rid of compiler warning ------------------------------------------------------------------------ r125 | jamesgrenning | 2007-08-22 19:26:09 -0500 (Wed, 22 Aug 2007) | 2 lines removed unused parameter names to get rid of compiler warnings ------------------------------------------------------------------------ r124 | jamesgrenning | 2007-08-22 19:24:35 -0500 (Wed, 22 Aug 2007) | 1 line replaced printf with a loop and putchar ------------------------------------------------------------------------ r123 | jamesgrenning | 2007-08-22 19:23:46 -0500 (Wed, 22 Aug 2007) | 2 lines reformat ------------------------------------------------------------------------ r122 | basvodde | 2007-08-10 02:30:51 -0500 (Fri, 10 Aug 2007) | 1 line Fixed a bug which happened when using -r2 ------------------------------------------------------------------------ r121 | basvodde | 2007-08-10 02:27:18 -0500 (Fri, 10 Aug 2007) | 1 line Changed the Test output ------------------------------------------------------------------------ r120 | basvodde | 2007-08-10 02:26:47 -0500 (Fri, 10 Aug 2007) | 1 line Changed the test output ------------------------------------------------------------------------ r119 | jamesgrenning | 2007-08-10 01:04:22 -0500 (Fri, 10 Aug 2007) | 1 line improved make and instructions ------------------------------------------------------------------------ r118 | jamesgrenning | 2007-08-09 23:19:30 -0500 (Thu, 09 Aug 2007) | 1 line I redid the VC6 project files. ------------------------------------------------------------------------ r117 | jamesgrenning | 2007-08-09 23:18:13 -0500 (Thu, 09 Aug 2007) | 1 line VC6 project files added ------------------------------------------------------------------------ r116 | jamesgrenning | 2007-08-09 23:16:54 -0500 (Thu, 09 Aug 2007) | 1 line Got Win32MemoryLeakWarning working and added VC6 projects ------------------------------------------------------------------------ r115 | jamesgrenning | 2007-08-08 23:30:54 -0500 (Wed, 08 Aug 2007) | 1 line ------------------------------------------------------------------------ r114 | jamesgrenning | 2007-08-08 23:29:56 -0500 (Wed, 08 Aug 2007) | 5 lines Removed the NewVCModule.sh file - it needs to be rethought, so i killed it Moved VirtualCall Updated template files and New* scripts ------------------------------------------------------------------------ r113 | jamesgrenning | 2007-08-08 23:27:51 -0500 (Wed, 08 Aug 2007) | 2 lines moved to an accessible place ------------------------------------------------------------------------ r112 | jamesgrenning | 2007-08-08 23:26:42 -0500 (Wed, 08 Aug 2007) | 1 line ------------------------------------------------------------------------ r111 | jamesgrenning | 2007-08-08 20:23:31 -0500 (Wed, 08 Aug 2007) | 2 lines Added README for prior users ------------------------------------------------------------------------ r110 | jamesgrenning | 2007-08-07 23:43:46 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r109 | jamesgrenning | 2007-08-07 23:29:07 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r108 | jamesgrenning | 2007-08-07 23:28:13 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r107 | jamesgrenning | 2007-08-07 23:26:52 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r106 | jamesgrenning | 2007-08-07 23:26:30 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r105 | jamesgrenning | 2007-08-07 23:22:10 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r104 | jamesgrenning | 2007-08-07 23:19:11 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r103 | jamesgrenning | 2007-08-07 23:18:34 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r102 | jamesgrenning | 2007-08-07 23:03:37 -0500 (Tue, 07 Aug 2007) | 2 lines updated/added README files ------------------------------------------------------------------------ r101 | jamesgrenning | 2007-08-07 23:02:16 -0500 (Tue, 07 Aug 2007) | 1 line fixed make depend ------------------------------------------------------------------------ r100 | jamesgrenning | 2007-08-07 22:41:14 -0500 (Tue, 07 Aug 2007) | 2 lines removed exercise comments ------------------------------------------------------------------------ r99 | jamesgrenning | 2007-08-07 21:58:47 -0500 (Tue, 07 Aug 2007) | 2 lines Added instrutions for the NewClass... scripts ------------------------------------------------------------------------ r98 | jamesgrenning | 2007-08-07 21:34:56 -0500 (Tue, 07 Aug 2007) | 1 line Updated test template files to use the TEST_GROUP macro instead of namespace ------------------------------------------------------------------------ r97 | jamesgrenning | 2007-08-07 21:16:58 -0500 (Tue, 07 Aug 2007) | 3 lines Added vc6 workspace and project files added svn:ignore ------------------------------------------------------------------------ r96 | jamesgrenning | 2007-08-07 21:12:43 -0500 (Tue, 07 Aug 2007) | 1 line added svn:ignore ------------------------------------------------------------------------ r95 | jamesgrenning | 2007-08-07 21:12:17 -0500 (Tue, 07 Aug 2007) | 1 line added svn:ignore ------------------------------------------------------------------------ r94 | jamesgrenning | 2007-08-07 21:11:47 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r93 | jamesgrenning | 2007-08-07 21:11:10 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r92 | jamesgrenning | 2007-08-07 21:10:49 -0500 (Tue, 07 Aug 2007) | 1 line ------------------------------------------------------------------------ r91 | jamesgrenning | 2007-08-07 21:08:58 -0500 (Tue, 07 Aug 2007) | 2 lines Added vc6 project ------------------------------------------------------------------------ r90 | jamesgrenning | 2007-08-07 21:08:28 -0500 (Tue, 07 Aug 2007) | 2 lines Added vc60 project ------------------------------------------------------------------------ r89 | jamesgrenning | 2007-08-07 20:44:44 -0500 (Tue, 07 Aug 2007) | 2 lines Compiles under vc6 ------------------------------------------------------------------------ r88 | jamesgrenning | 2007-08-07 20:44:04 -0500 (Tue, 07 Aug 2007) | 2 lines Deleted src/Platforms/VisualCpp/Platform.h ------------------------------------------------------------------------ r87 | jamesgrenning | 2007-08-07 20:42:39 -0500 (Tue, 07 Aug 2007) | 1 line made compatible with bas changes ------------------------------------------------------------------------ r86 | jamesgrenning | 2007-08-07 20:40:43 -0500 (Tue, 07 Aug 2007) | 3 lines - Removed duplicate scope resoultion operator from void TestRegistry::TestRegistry::setCurrentRegistry(TestRegistry* registry) Odd this compiles under gcc in the first place ------------------------------------------------------------------------ r85 | jamesgrenning | 2007-08-07 20:37:23 -0500 (Tue, 07 Aug 2007) | 2 lines - Added #include "Platform.h" so snprintf can compile under vc6 ------------------------------------------------------------------------ r84 | jamesgrenning | 2007-08-07 20:35:05 -0500 (Tue, 07 Aug 2007) | 3 lines added #define snprintf _snprintf so that snprintf can compile under VC6 ------------------------------------------------------------------------ r83 | jamesgrenning | 2007-08-07 20:31:58 -0500 (Tue, 07 Aug 2007) | 2 lines made include guard match classname ------------------------------------------------------------------------ r82 | jamesgrenning | 2007-08-07 19:18:34 -0500 (Tue, 07 Aug 2007) | 1 line Fixed a warning in the if statement in count() ------------------------------------------------------------------------ r81 | basvodde | 2007-07-29 21:34:22 -0500 (Sun, 29 Jul 2007) | 1 line Changed the dependency on TestOutput ------------------------------------------------------------------------ r80 | basvodde | 2007-07-29 21:34:07 -0500 (Sun, 29 Jul 2007) | 1 line Added tests for output formatting ------------------------------------------------------------------------ r79 | basvodde | 2007-07-29 21:33:53 -0500 (Sun, 29 Jul 2007) | 1 line Added tests for new String functions. Need more tests though. ------------------------------------------------------------------------ r78 | basvodde | 2007-07-29 21:33:35 -0500 (Sun, 29 Jul 2007) | 1 line Added tests to makefile ------------------------------------------------------------------------ r77 | basvodde | 2007-07-29 21:33:25 -0500 (Sun, 29 Jul 2007) | 1 line JUnitOutput tests ------------------------------------------------------------------------ r76 | basvodde | 2007-07-29 21:32:59 -0500 (Sun, 29 Jul 2007) | 1 line Removed output from registry ------------------------------------------------------------------------ r75 | basvodde | 2007-07-29 21:32:38 -0500 (Sun, 29 Jul 2007) | 1 line CommandRunner test ------------------------------------------------------------------------ r74 | basvodde | 2007-07-29 21:32:16 -0500 (Sun, 29 Jul 2007) | 1 line Added new tests ------------------------------------------------------------------------ r73 | basvodde | 2007-07-29 21:31:50 -0500 (Sun, 29 Jul 2007) | 1 line Moved formatting away ------------------------------------------------------------------------ r72 | basvodde | 2007-07-29 21:31:40 -0500 (Sun, 29 Jul 2007) | 1 line Added JUnitTestOutput ------------------------------------------------------------------------ r71 | basvodde | 2007-07-29 21:31:26 -0500 (Sun, 29 Jul 2007) | 1 line Moved formatting away ------------------------------------------------------------------------ r70 | basvodde | 2007-07-29 21:31:14 -0500 (Sun, 29 Jul 2007) | 1 line JUnitTestOutput for integration with CruiseControl ------------------------------------------------------------------------ r69 | basvodde | 2007-07-29 21:30:58 -0500 (Sun, 29 Jul 2007) | 1 line Moved all formatting here. ------------------------------------------------------------------------ r68 | basvodde | 2007-07-29 21:30:38 -0500 (Sun, 29 Jul 2007) | 1 line Moved formatting to TestOutput ------------------------------------------------------------------------ r67 | basvodde | 2007-07-29 21:30:05 -0500 (Sun, 29 Jul 2007) | 1 line Fixed a small bug ------------------------------------------------------------------------ r66 | basvodde | 2007-07-29 21:29:37 -0500 (Sun, 29 Jul 2007) | 1 line Added a whole bunch of small methods ------------------------------------------------------------------------ r65 | basvodde | 2007-07-29 21:29:25 -0500 (Sun, 29 Jul 2007) | 1 line JUnitTestOutput for integration with CruiseControl ------------------------------------------------------------------------ r64 | basvodde | 2007-07-29 21:28:30 -0500 (Sun, 29 Jul 2007) | 1 line Moved formatting away ------------------------------------------------------------------------ r63 | basvodde | 2007-07-29 21:28:21 -0500 (Sun, 29 Jul 2007) | 1 line Moved formatting away ------------------------------------------------------------------------ r62 | basvodde | 2007-07-29 21:28:10 -0500 (Sun, 29 Jul 2007) | 1 line Removed dependency to TestOutput for now. ------------------------------------------------------------------------ r61 | basvodde | 2007-07-29 21:27:58 -0500 (Sun, 29 Jul 2007) | 1 line Moved all the formatting to here, for now. ------------------------------------------------------------------------ r60 | basvodde | 2007-07-29 21:27:35 -0500 (Sun, 29 Jul 2007) | 1 line Added a bunch of useful methods ------------------------------------------------------------------------ r59 | basvodde | 2007-07-29 21:27:13 -0500 (Sun, 29 Jul 2007) | 1 line Added a flush method ------------------------------------------------------------------------ r58 | basvodde | 2007-07-29 21:26:56 -0500 (Sun, 29 Jul 2007) | 1 line Added copy constructor and getters ------------------------------------------------------------------------ r57 | basvodde | 2007-07-29 21:25:33 -0500 (Sun, 29 Jul 2007) | 1 line Added stuff about leaks to be expected. Not nice, but needed. ------------------------------------------------------------------------ r56 | basvodde | 2007-07-29 21:25:28 -0500 (Sun, 29 Jul 2007) | 1 line Added stuff about leaks to be expected. Not nice, but needed. ------------------------------------------------------------------------ r55 | basvodde | 2007-07-29 21:25:23 -0500 (Sun, 29 Jul 2007) | 1 line Added stuff about leaks to be expected. Not nice, but needed. ------------------------------------------------------------------------ r54 | basvodde | 2007-07-29 21:25:16 -0500 (Sun, 29 Jul 2007) | 1 line Added stuff about leaks to be expected. Not nice, but needed. ------------------------------------------------------------------------ r53 | basvodde | 2007-07-29 21:24:43 -0500 (Sun, 29 Jul 2007) | 1 line Non-static class and refactored and added junit output support ------------------------------------------------------------------------ r52 | basvodde | 2007-07-29 21:24:37 -0500 (Sun, 29 Jul 2007) | 1 line Non-static class and refactored and added junit output support ------------------------------------------------------------------------ r51 | basvodde | 2007-07-29 21:24:03 -0500 (Sun, 29 Jul 2007) | 1 line Removed PrintSpecifics ------------------------------------------------------------------------ r50 | basvodde | 2007-07-29 21:24:00 -0500 (Sun, 29 Jul 2007) | 1 line Removed PrintSpecifics ------------------------------------------------------------------------ r49 | basvodde | 2007-07-26 01:53:52 -0500 (Thu, 26 Jul 2007) | 1 line Test for string with 0 pointer. ------------------------------------------------------------------------ r48 | basvodde | 2007-07-26 01:53:38 -0500 (Thu, 26 Jul 2007) | 1 line Added tests for bugs ------------------------------------------------------------------------ r47 | basvodde | 2007-07-26 01:53:07 -0500 (Thu, 26 Jul 2007) | 1 line Added getters for groupFilter and nameFilter ------------------------------------------------------------------------ r46 | basvodde | 2007-07-26 01:52:32 -0500 (Thu, 26 Jul 2007) | 1 line Changed size_t to unsigned int ------------------------------------------------------------------------ r45 | basvodde | 2007-07-26 01:51:54 -0500 (Thu, 26 Jul 2007) | 1 line Fixed a small bug for when passing a 0 pointer to SimpleString ------------------------------------------------------------------------ r44 | basvodde | 2007-07-26 01:51:30 -0500 (Thu, 26 Jul 2007) | 1 line Removed IgnoredTest ------------------------------------------------------------------------ r43 | basvodde | 2007-07-26 01:50:41 -0500 (Thu, 26 Jul 2007) | 1 line Removed IgnoredTest and changed the IGNORE_TEST macro. This enables fixture access from ignored test cases. ------------------------------------------------------------------------ r42 | basvodde | 2007-07-26 01:49:49 -0500 (Thu, 26 Jul 2007) | 1 line Added some getters and "fixed" the layout ------------------------------------------------------------------------ r41 | basvodde | 2007-07-26 01:49:05 -0500 (Thu, 26 Jul 2007) | 1 line Changed size_t to unsigned int. Led to problems with pure C prepocessor ------------------------------------------------------------------------ r40 | basvodde | 2007-07-26 01:48:14 -0500 (Thu, 26 Jul 2007) | 1 line Removed default constructor and used constructor with default value ------------------------------------------------------------------------ r39 | basvodde | 2007-07-25 22:15:16 -0500 (Wed, 25 Jul 2007) | 1 line Fixed the C style comments ------------------------------------------------------------------------ r38 | basvodde | 2007-07-25 22:04:07 -0500 (Wed, 25 Jul 2007) | 1 line Removed CPP commands ------------------------------------------------------------------------ r37 | basvodde | 2007-07-23 02:13:09 -0500 (Mon, 23 Jul 2007) | 1 line Fixed the fixture setup and teardown ------------------------------------------------------------------------ r36 | basvodde | 2007-07-23 02:12:34 -0500 (Mon, 23 Jul 2007) | 1 line Updated based on new setup ------------------------------------------------------------------------ r35 | basvodde | 2007-07-23 02:12:22 -0500 (Mon, 23 Jul 2007) | 1 line Added cleaning the examples to make clean ------------------------------------------------------------------------ r34 | basvodde | 2007-07-23 01:49:13 -0500 (Mon, 23 Jul 2007) | 1 line Use the new setup and teardown methods! ------------------------------------------------------------------------ r33 | basvodde | 2007-07-17 04:38:07 -0500 (Tue, 17 Jul 2007) | 1 line Added FileName ------------------------------------------------------------------------ r32 | basvodde | 2007-07-17 04:37:51 -0500 (Tue, 17 Jul 2007) | 1 line Added checks for FileName ------------------------------------------------------------------------ r31 | basvodde | 2007-07-17 04:37:39 -0500 (Tue, 17 Jul 2007) | 1 line Added the char ------------------------------------------------------------------------ r30 | basvodde | 2007-07-17 04:37:17 -0500 (Tue, 17 Jul 2007) | 1 line Added the fileName ------------------------------------------------------------------------ r29 | basvodde | 2007-07-17 04:36:50 -0500 (Tue, 17 Jul 2007) | 1 line Use LOCATION macros ------------------------------------------------------------------------ r28 | basvodde | 2007-07-17 04:36:27 -0500 (Tue, 17 Jul 2007) | 1 line Added FromString with char ------------------------------------------------------------------------ r27 | basvodde | 2007-07-17 04:36:03 -0500 (Tue, 17 Jul 2007) | 1 line Added FileName parameter ------------------------------------------------------------------------ r26 | basvodde | 2007-07-17 04:35:36 -0500 (Tue, 17 Jul 2007) | 1 line Changed to use LOCATION so the C location is real. ------------------------------------------------------------------------ r25 | basvodde | 2007-07-17 04:35:17 -0500 (Tue, 17 Jul 2007) | 1 line Changed all the test macros to be able to specify the location! ------------------------------------------------------------------------ r24 | basvodde | 2007-07-17 04:34:56 -0500 (Tue, 17 Jul 2007) | 1 line Added FromString with char ------------------------------------------------------------------------ r23 | basvodde | 2007-07-17 04:34:40 -0500 (Tue, 17 Jul 2007) | 1 line Added fileName parameter to get the real filename ------------------------------------------------------------------------ r22 | basvodde | 2007-07-17 00:45:52 -0500 (Tue, 17 Jul 2007) | 1 line ------------------------------------------------------------------------ r21 | basvodde | 2007-07-17 00:45:02 -0500 (Tue, 17 Jul 2007) | 1 line Fixed the CHECK_REAL ------------------------------------------------------------------------ r20 | basvodde | 2007-07-17 00:44:31 -0500 (Tue, 17 Jul 2007) | 1 line Fixed the CHECK_REAL ------------------------------------------------------------------------ r19 | basvodde | 2007-07-15 21:30:02 -0500 (Sun, 15 Jul 2007) | 4 lines Added TestPlugin description to the README_CppUTest.txt. Wrote a new ReadMe for working with CppUTest in C. ------------------------------------------------------------------------ r18 | basvodde | 2007-07-10 00:32:28 -0500 (Tue, 10 Jul 2007) | 1 line A simple HelloWorld example ------------------------------------------------------------------------ r17 | basvodde | 2007-07-03 03:08:29 -0500 (Tue, 03 Jul 2007) | 1 line Refactored tests completely to use own registry. ------------------------------------------------------------------------ r16 | basvodde | 2007-07-03 03:06:37 -0500 (Tue, 03 Jul 2007) | 1 line This file is probably broken. ------------------------------------------------------------------------ r15 | basvodde | 2007-07-03 03:06:12 -0500 (Tue, 03 Jul 2007) | 1 line Changed to not use the static member functions anymore ------------------------------------------------------------------------ r14 | basvodde | 2007-07-03 03:05:25 -0500 (Tue, 03 Jul 2007) | 1 line Added C malloc methods that use the memory leak detector ------------------------------------------------------------------------ r13 | basvodde | 2007-07-03 03:04:58 -0500 (Tue, 03 Jul 2007) | 1 line Not using static member functions anymore ------------------------------------------------------------------------ r12 | basvodde | 2007-07-03 03:04:19 -0500 (Tue, 03 Jul 2007) | 1 line Removed all the static member functions ------------------------------------------------------------------------ r11 | basvodde | 2007-07-03 00:55:44 -0500 (Tue, 03 Jul 2007) | 1 line Header for C include files ------------------------------------------------------------------------ r10 | basvodde | 2007-06-24 03:43:42 -0500 (Sun, 24 Jun 2007) | 1 line Build files and readme ------------------------------------------------------------------------ r9 | basvodde | 2007-06-24 03:33:05 -0500 (Sun, 24 Jun 2007) | 1 line New scripts ------------------------------------------------------------------------ r8 | basvodde | 2007-06-24 03:15:04 -0500 (Sun, 24 Jun 2007) | 1 line ------------------------------------------------------------------------ r7 | basvodde | 2007-06-24 03:12:04 -0500 (Sun, 24 Jun 2007) | 1 line ------------------------------------------------------------------------ r6 | basvodde | 2007-06-24 03:09:34 -0500 (Sun, 24 Jun 2007) | 1 line Examples for TDD ------------------------------------------------------------------------ r5 | basvodde | 2007-06-24 02:37:59 -0500 (Sun, 24 Jun 2007) | 1 line Added extra .exe removal for Windows systems ------------------------------------------------------------------------ r4 | basvodde | 2007-06-24 02:33:02 -0500 (Sun, 24 Jun 2007) | 1 line Added the build files ------------------------------------------------------------------------ r3 | basvodde | 2007-06-24 00:58:58 -0500 (Sun, 24 Jun 2007) | 1 line Added source files ------------------------------------------------------------------------ r2 | basvodde | 2007-06-24 00:49:01 -0500 (Sun, 24 Jun 2007) | 1 line ------------------------------------------------------------------------ r1 | basvodde | 2007-06-24 00:37:56 -0500 (Sun, 24 Jun 2007) | 1 line Added trunk ------------------------------------------------------------------------ cpputest-3.7.2/CppUTest.dep000644 000765 000024 00000053562 12521603460 016537 0ustar00basvoddestaff000000 000000 # Microsoft Developer Studio Generated Dependency File, included by CppUTest.mak .\src\CppUTestExt\CodeMemoryReportFormatter.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestMemoryAllocator.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\CppUTestExt\CodeMemoryReportFormatter.h"\ ".\include\CppUTestExt\MemoryReportAllocator.h"\ ".\include\CppUTestExt\MemoryReportFormatter.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\CommandLineArguments.cpp : \ ".\include\CppUTest\CommandLineArguments.h"\ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestFilter.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\CommandLineTestRunner.cpp : \ ".\include\CppUTest\CommandLineArguments.h"\ ".\include\CppUTest\CommandLineTestRunner.h"\ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\JunitTestOutput.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestFilter.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestRegistry.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\JUnitTestOutput.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\JunitTestOutput.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\MemoryLeakDetector.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetector.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleMutex.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestMemoryAllocator.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\MemoryLeakWarningPlugin.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetector.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleMutex.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestMemoryAllocator.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\src\CppUTestExt\MemoryReportAllocator.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestMemoryAllocator.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\CppUTestExt\MemoryReportAllocator.h"\ ".\include\CppUTestExt\MemoryReportFormatter.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\src\CppUTestExt\MemoryReporterPlugin.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestMemoryAllocator.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\CppUTestExt\CodeMemoryReportFormatter.h"\ ".\include\CppUTestExt\MemoryReportAllocator.h"\ ".\include\CppUTestExt\MemoryReporterPlugin.h"\ ".\include\CppUTestExt\MemoryReportFormatter.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\src\CppUTestExt\MemoryReportFormatter.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestMemoryAllocator.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\CppUTestExt\MemoryReportAllocator.h"\ ".\include\CppUTestExt\MemoryReportFormatter.h"\ ".\include\platforms\visualcpp\stdint.h"\ ".\src\CppUTestExt\MockActualCall.cpp" : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\cpputestext\mockactualcall.h"\ ".\include\CppUTestExt\MockCheckedActualCall.h"\ ".\include\CppUTestExt\MockCheckedExpectedCall.h"\ ".\include\cpputestext\mockexpectedcall.h"\ ".\include\CppUTestExt\MockExpectedCallsList.h"\ ".\include\CppUTestExt\MockFailure.h"\ ".\include\CppUTestExt\MockNamedValue.h"\ ".\include\platforms\visualcpp\stdint.h"\ ".\src\CppUTestExt\MockExpectedCall.cpp" : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\CppUTestExt\MockCheckedExpectedCall.h"\ ".\include\cpputestext\mockexpectedcall.h"\ ".\include\CppUTestExt\MockNamedValue.h"\ ".\include\platforms\visualcpp\stdint.h"\ ".\src\CppUTestExt\MockExpectedCallsList.cpp" : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\CppUTestExt\MockCheckedExpectedCall.h"\ ".\include\cpputestext\mockexpectedcall.h"\ ".\include\CppUTestExt\MockExpectedCallsList.h"\ ".\include\CppUTestExt\MockNamedValue.h"\ ".\include\platforms\visualcpp\stdint.h"\ ".\src\CppUTestExt\MockFailure.cpp" : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\cpputestext\mockexpectedcall.h"\ ".\include\CppUTestExt\MockExpectedCallsList.h"\ ".\include\CppUTestExt\MockFailure.h"\ ".\include\CppUTestExt\MockNamedValue.h"\ ".\include\platforms\visualcpp\stdint.h"\ ".\src\CppUTestExt\MockNamedValue.cpp" : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\CppUTestExt\MockNamedValue.h"\ ".\include\platforms\visualcpp\stdint.h"\ ".\src\CppUTestExt\MockSupport.cpp" : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\cpputestext\mockactualcall.h"\ ".\include\CppUTestExt\MockCheckedActualCall.h"\ ".\include\CppUTestExt\MockCheckedExpectedCall.h"\ ".\include\cpputestext\mockexpectedcall.h"\ ".\include\CppUTestExt\MockExpectedCallsList.h"\ ".\include\CppUTestExt\MockFailure.h"\ ".\include\CppUTestExt\MockNamedValue.h"\ ".\include\CppUTestExt\MockSupport.h"\ ".\include\platforms\visualcpp\stdint.h"\ ".\src\CppUTestExt\MockSupport_c.cpp" : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\cpputestext\mockactualcall.h"\ ".\include\CppUTestExt\MockCheckedActualCall.h"\ ".\include\CppUTestExt\MockCheckedExpectedCall.h"\ ".\include\cpputestext\mockexpectedcall.h"\ ".\include\CppUTestExt\MockExpectedCallsList.h"\ ".\include\CppUTestExt\MockFailure.h"\ ".\include\CppUTestExt\MockNamedValue.h"\ ".\include\CppUTestExt\MockSupport.h"\ ".\include\CppUTestExt\MockSupport_c.h"\ ".\include\platforms\visualcpp\stdint.h"\ ".\src\CppUTestExt\MockSupportPlugin.cpp" : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\cpputestext\mockactualcall.h"\ ".\include\CppUTestExt\MockCheckedActualCall.h"\ ".\include\CppUTestExt\MockCheckedExpectedCall.h"\ ".\include\cpputestext\mockexpectedcall.h"\ ".\include\CppUTestExt\MockExpectedCallsList.h"\ ".\include\CppUTestExt\MockFailure.h"\ ".\include\CppUTestExt\MockNamedValue.h"\ ".\include\CppUTestExt\MockSupport.h"\ ".\include\CppUTestExt\MockSupportPlugin.h"\ ".\include\platforms\visualcpp\stdint.h"\ ".\src\CppUTestExt\OrderedTest.cpp" : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestFilter.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestRegistry.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\CppUTestExt\OrderedTest.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\SimpleMutex.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleMutex.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\SimpleString.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestMemoryAllocator.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\TestFailure.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\TestFilter.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFilter.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\TestHarness_c.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetector.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestHarness_c.h"\ ".\include\CppUTest\TestMemoryAllocator.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\TestMemoryAllocator.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetector.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestMemoryAllocator.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\TestOutput.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\TestPlugin.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\TestRegistry.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestFilter.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestRegistry.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\TestResult.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\SRC\CPPUTEST\Utest.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestFilter.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestRegistry.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\stdint.h"\ .\src\Platforms\VisualCpp\UtestPlatform.cpp : \ ".\include\CppUTest\CppUTestConfig.h"\ ".\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ ".\include\CppUTest\MemoryLeakWarningPlugin.h"\ ".\include\CppUTest\PlatformSpecificFunctions.h"\ ".\include\CppUTest\PlatformSpecificFunctions_c.h"\ ".\include\CppUTest\SimpleString.h"\ ".\include\CppUTest\StandardCLibrary.h"\ ".\include\CppUTest\TestFailure.h"\ ".\include\CppUTest\TestHarness.h"\ ".\include\CppUTest\TestOutput.h"\ ".\include\CppUTest\TestPlugin.h"\ ".\include\CppUTest\TestResult.h"\ ".\include\CppUTest\Utest.h"\ ".\include\CppUTest\UtestMacros.h"\ ".\include\platforms\visualcpp\platform.h"\ ".\include\platforms\visualcpp\stdint.h"\ cpputest-3.7.2/CppUTest.dsp000644 000765 000024 00000021152 12521603460 016543 0ustar00basvoddestaff000000 000000 # Microsoft Developer Studio Project File - Name="CppUTest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=CppUTest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "CppUTest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "CppUTest.mak" CFG="CppUTest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "CppUTest - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "CppUTest - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "CppUTest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I ".\include\Platforms\VisualCpp" /I ".\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "CPPUTEST_MEM_LEAK_DETECTION_DISABLED" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"lib\CppUTest.lib" !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I ".\include\Platforms\VisualCpp" /I ".\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "CPPUTEST_MEM_LEAK_DETECTION_DISABLED" /FR /FD /GZ /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"lib\CppUTestd.lib" !ENDIF # Begin Target # Name "CppUTest - Win32 Release" # Name "CppUTest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\src\CppUTestExt\CodeMemoryReportFormatter.cpp # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MemoryReportAllocator.cpp # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MemoryReporterPlugin.cpp # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MemoryReportFormatter.cpp # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MockActualCall.cpp" # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MockExpectedCall.cpp" # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MockExpectedCallsList.cpp" # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MockFailure.cpp" # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MockNamedValue.cpp" # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MockSupport.cpp" # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MockSupportPlugin.cpp" # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\MockSupport_c.cpp" # End Source File # Begin Source File SOURCE=.\src\CppUTestExt\OrderedTest.cpp" # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\CommandLineArguments.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\CommandLineTestRunner.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\JUnitTestOutput.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\MemoryLeakDetector.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\MemoryLeakWarningPlugin.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\SimpleMutex.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\SimpleString.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\TestFailure.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\TestFilter.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\TestHarness_c.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\TestMemoryAllocator.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\TestOutput.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\TestPlugin.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\TestRegistry.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\TestResult.cpp # End Source File # Begin Source File SOURCE=.\SRC\CPPUTEST\Utest.cpp # End Source File # Begin Source File SOURCE=.\src\Platforms\VisualCpp\UtestPlatform.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\include\CppUTestExt\CodeMemoryReportFormatter.h" # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\GMock.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\GTestConvertor.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MemoryReportAllocator.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MemoryReporterPlugin.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MemoryReportFormatter.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MockCheckedActualCall.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MockCheckedExpectedCall.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MockExpectedCallsList.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MockFailure.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MockNamedValue.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MockSupport.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MockSupportPlugin.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\MockSupport_c.h # End Source File # Begin Source File SOURCE=.\include\CppUTestExt\OrderedTest.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\CommandLineTestRunner.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\EqualsFailure.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\Failure.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\JunitTestOutput.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\MemoryLeakWarning.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\MemoryLeakWarningPlugin.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\MockTestOutput.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\NullTest.h # End Source File # Begin Source File SOURCE=.\src\Platforms\VisualCpp\Platform.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\RealTestOutput.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\SimpleString.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\SimpleStringExtensions.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\TestHarness.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\TestHarness_c.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\TestInstaller.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\TestOutput.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\TestPlugin.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\TestRegistry.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\TestResult.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\Utest.h # End Source File # Begin Source File SOURCE=.\include\CppUTest\VirtualCall.h # End Source File # End Group # End Target # End Project cpputest-3.7.2/CppUTest.dsw000644 000765 000024 00000001471 12521603460 016554 0ustar00basvoddestaff000000 000000 Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "AllTests"=.\tests\AllTests.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name CppUTest End Project Dependency }}} ############################################################################### Project: "CppUTest"=.\CppUTest.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### cpputest-3.7.2/CppUTest.mak000644 000765 000024 00000052375 12521603460 016540 0ustar00basvoddestaff000000 000000 # Microsoft Developer Studio Generated NMAKE File, Based on CppUTest.dsp !IF "$(CFG)" == "" CFG=CppUTest - Win32 Debug !MESSAGE No configuration specified. Defaulting to CppUTest - Win32 Debug. !ENDIF !IF "$(CFG)" != "CppUTest - Win32 Release" && "$(CFG)" != "CppUTest - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "CppUTest.mak" CFG="CppUTest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "CppUTest - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "CppUTest - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "CppUTest - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros ALL : "$(OUTDIR)\CppUTest.lib" CLEAN : -@erase "$(INTDIR)\CodeMemoryReportFormatter.obj" -@erase "$(INTDIR)\CommandLineArguments.obj" -@erase "$(INTDIR)\CommandLineTestRunner.obj" -@erase "$(INTDIR)\JUnitTestOutput.obj" -@erase "$(INTDIR)\MemoryLeakDetector.obj" -@erase "$(INTDIR)\MemoryLeakWarningPlugin.obj" -@erase "$(INTDIR)\MemoryReportAllocator.obj" -@erase "$(INTDIR)\MemoryReporterPlugin.obj" -@erase "$(INTDIR)\MemoryReportFormatter.obj" -@erase "$(INTDIR)\MockActualCall.obj" -@erase "$(INTDIR)\MockExpectedCall.obj" -@erase "$(INTDIR)\MockExpectedCallsList.obj" -@erase "$(INTDIR)\MockFailure.obj" -@erase "$(INTDIR)\MockNamedValue.obj" -@erase "$(INTDIR)\MockSupport.obj" -@erase "$(INTDIR)\MockSupport_c.obj" -@erase "$(INTDIR)\MockSupportPlugin.obj" -@erase "$(INTDIR)\OrderedTest.obj" -@erase "$(INTDIR)\SimpleMutex.obj" -@erase "$(INTDIR)\SimpleString.obj" -@erase "$(INTDIR)\TestFailure.obj" -@erase "$(INTDIR)\TestFilter.obj" -@erase "$(INTDIR)\TestHarness_c.obj" -@erase "$(INTDIR)\TestMemoryAllocator.obj" -@erase "$(INTDIR)\TestOutput.obj" -@erase "$(INTDIR)\TestPlugin.obj" -@erase "$(INTDIR)\TestRegistry.obj" -@erase "$(INTDIR)\TestResult.obj" -@erase "$(INTDIR)\Utest.obj" -@erase "$(INTDIR)\UtestPlatform.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\CppUTest.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GX /O2 /I ".\include\Platforms\VisualCpp" /I ".\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "CPPUTEST_MEM_LEAK_DETECTION_DISABLED" /Fp"$(INTDIR)\CppUTest.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\CppUTest.bsc" BSC32_SBRS= \ LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"$(OUTDIR)\CppUTest.lib" LIB32_OBJS= \ "$(INTDIR)\CodeMemoryReportFormatter.obj" \ "$(INTDIR)\MemoryReportAllocator.obj" \ "$(INTDIR)\MemoryReporterPlugin.obj" \ "$(INTDIR)\MemoryReportFormatter.obj" \ "$(INTDIR)\MockActualCall.obj" \ "$(INTDIR)\MockExpectedCall.obj" \ "$(INTDIR)\MockExpectedCallsList.obj" \ "$(INTDIR)\MockFailure.obj" \ "$(INTDIR)\MockNamedValue.obj" \ "$(INTDIR)\MockSupport.obj" \ "$(INTDIR)\MockSupportPlugin.obj" \ "$(INTDIR)\MockSupport_c.obj" \ "$(INTDIR)\OrderedTest.obj" \ "$(INTDIR)\CommandLineArguments.obj" \ "$(INTDIR)\CommandLineTestRunner.obj" \ "$(INTDIR)\JUnitTestOutput.obj" \ "$(INTDIR)\MemoryLeakDetector.obj" \ "$(INTDIR)\MemoryLeakWarningPlugin.obj" \ "$(INTDIR)\SimpleMutex.obj" \ "$(INTDIR)\SimpleString.obj" \ "$(INTDIR)\TestFailure.obj" \ "$(INTDIR)\TestFilter.obj" \ "$(INTDIR)\TestHarness_c.obj" \ "$(INTDIR)\TestMemoryAllocator.obj" \ "$(INTDIR)\TestOutput.obj" \ "$(INTDIR)\TestPlugin.obj" \ "$(INTDIR)\TestRegistry.obj" \ "$(INTDIR)\TestResult.obj" \ "$(INTDIR)\Utest.obj" \ "$(INTDIR)\UtestPlatform.obj" "$(OUTDIR)\CppUTest.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros ALL : ".\lib\CppUTest.lib" "$(OUTDIR)\CppUTest.bsc" CLEAN : -@erase "$(INTDIR)\CodeMemoryReportFormatter.obj" -@erase "$(INTDIR)\CodeMemoryReportFormatter.sbr" -@erase "$(INTDIR)\CommandLineArguments.obj" -@erase "$(INTDIR)\CommandLineArguments.sbr" -@erase "$(INTDIR)\CommandLineTestRunner.obj" -@erase "$(INTDIR)\CommandLineTestRunner.sbr" -@erase "$(INTDIR)\JUnitTestOutput.obj" -@erase "$(INTDIR)\JUnitTestOutput.sbr" -@erase "$(INTDIR)\MemoryLeakDetector.obj" -@erase "$(INTDIR)\MemoryLeakDetector.sbr" -@erase "$(INTDIR)\MemoryLeakWarningPlugin.obj" -@erase "$(INTDIR)\MemoryLeakWarningPlugin.sbr" -@erase "$(INTDIR)\MemoryReportAllocator.obj" -@erase "$(INTDIR)\MemoryReportAllocator.sbr" -@erase "$(INTDIR)\MemoryReporterPlugin.obj" -@erase "$(INTDIR)\MemoryReporterPlugin.sbr" -@erase "$(INTDIR)\MemoryReportFormatter.obj" -@erase "$(INTDIR)\MemoryReportFormatter.sbr" -@erase "$(INTDIR)\MockActualCall.obj" -@erase "$(INTDIR)\MockActualCall.sbr" -@erase "$(INTDIR)\MockExpectedCall.obj" -@erase "$(INTDIR)\MockExpectedCall.sbr" -@erase "$(INTDIR)\MockExpectedCallsList.obj" -@erase "$(INTDIR)\MockExpectedCallsList.sbr" -@erase "$(INTDIR)\MockFailure.obj" -@erase "$(INTDIR)\MockFailure.sbr" -@erase "$(INTDIR)\MockNamedValue.obj" -@erase "$(INTDIR)\MockNamedValue.sbr" -@erase "$(INTDIR)\MockSupport.obj" -@erase "$(INTDIR)\MockSupport.sbr" -@erase "$(INTDIR)\MockSupport_c.obj" -@erase "$(INTDIR)\MockSupport_c.sbr" -@erase "$(INTDIR)\MockSupportPlugin.obj" -@erase "$(INTDIR)\MockSupportPlugin.sbr" -@erase "$(INTDIR)\OrderedTest.obj" -@erase "$(INTDIR)\OrderedTest.sbr" -@erase "$(INTDIR)\SimpleMutex.obj" -@erase "$(INTDIR)\SimpleMutex.sbr" -@erase "$(INTDIR)\SimpleString.obj" -@erase "$(INTDIR)\SimpleString.sbr" -@erase "$(INTDIR)\TestFailure.obj" -@erase "$(INTDIR)\TestFailure.sbr" -@erase "$(INTDIR)\TestFilter.obj" -@erase "$(INTDIR)\TestFilter.sbr" -@erase "$(INTDIR)\TestHarness_c.obj" -@erase "$(INTDIR)\TestHarness_c.sbr" -@erase "$(INTDIR)\TestMemoryAllocator.obj" -@erase "$(INTDIR)\TestMemoryAllocator.sbr" -@erase "$(INTDIR)\TestOutput.obj" -@erase "$(INTDIR)\TestOutput.sbr" -@erase "$(INTDIR)\TestPlugin.obj" -@erase "$(INTDIR)\TestPlugin.sbr" -@erase "$(INTDIR)\TestRegistry.obj" -@erase "$(INTDIR)\TestRegistry.sbr" -@erase "$(INTDIR)\TestResult.obj" -@erase "$(INTDIR)\TestResult.sbr" -@erase "$(INTDIR)\Utest.obj" -@erase "$(INTDIR)\Utest.sbr" -@erase "$(INTDIR)\UtestPlatform.obj" -@erase "$(INTDIR)\UtestPlatform.sbr" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\CppUTest.bsc" -@erase ".\lib\CppUTest.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W3 /GX /ZI /Od /I ".\include\Platforms\VisualCpp" /I ".\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "CPPUTEST_MEM_LEAK_DETECTION_DISABLED" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\CppUTest.bsc" BSC32_SBRS= \ "$(INTDIR)\CodeMemoryReportFormatter.sbr" \ "$(INTDIR)\MemoryReportAllocator.sbr" \ "$(INTDIR)\MemoryReporterPlugin.sbr" \ "$(INTDIR)\MemoryReportFormatter.sbr" \ "$(INTDIR)\MockActualCall.sbr" \ "$(INTDIR)\MockExpectedCall.sbr" \ "$(INTDIR)\MockExpectedCallsList.sbr" \ "$(INTDIR)\MockFailure.sbr" \ "$(INTDIR)\MockNamedValue.sbr" \ "$(INTDIR)\MockSupport.sbr" \ "$(INTDIR)\MockSupportPlugin.sbr" \ "$(INTDIR)\MockSupport_c.sbr" \ "$(INTDIR)\OrderedTest.sbr" \ "$(INTDIR)\CommandLineArguments.sbr" \ "$(INTDIR)\CommandLineTestRunner.sbr" \ "$(INTDIR)\JUnitTestOutput.sbr" \ "$(INTDIR)\MemoryLeakDetector.sbr" \ "$(INTDIR)\MemoryLeakWarningPlugin.sbr" \ "$(INTDIR)\SimpleMutex.sbr" \ "$(INTDIR)\SimpleString.sbr" \ "$(INTDIR)\TestFailure.sbr" \ "$(INTDIR)\TestFilter.sbr" \ "$(INTDIR)\TestHarness_c.sbr" \ "$(INTDIR)\TestMemoryAllocator.sbr" \ "$(INTDIR)\TestOutput.sbr" \ "$(INTDIR)\TestPlugin.sbr" \ "$(INTDIR)\TestRegistry.sbr" \ "$(INTDIR)\TestResult.sbr" \ "$(INTDIR)\Utest.sbr" \ "$(INTDIR)\UtestPlatform.sbr" "$(OUTDIR)\CppUTest.bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"lib\CppUTest.lib" LIB32_OBJS= \ "$(INTDIR)\CodeMemoryReportFormatter.obj" \ "$(INTDIR)\MemoryReportAllocator.obj" \ "$(INTDIR)\MemoryReporterPlugin.obj" \ "$(INTDIR)\MemoryReportFormatter.obj" \ "$(INTDIR)\MockActualCall.obj" \ "$(INTDIR)\MockExpectedCall.obj" \ "$(INTDIR)\MockExpectedCallsList.obj" \ "$(INTDIR)\MockFailure.obj" \ "$(INTDIR)\MockNamedValue.obj" \ "$(INTDIR)\MockSupport.obj" \ "$(INTDIR)\MockSupportPlugin.obj" \ "$(INTDIR)\MockSupport_c.obj" \ "$(INTDIR)\OrderedTest.obj" \ "$(INTDIR)\CommandLineArguments.obj" \ "$(INTDIR)\CommandLineTestRunner.obj" \ "$(INTDIR)\JUnitTestOutput.obj" \ "$(INTDIR)\MemoryLeakDetector.obj" \ "$(INTDIR)\MemoryLeakWarningPlugin.obj" \ "$(INTDIR)\SimpleMutex.obj" \ "$(INTDIR)\SimpleString.obj" \ "$(INTDIR)\TestFailure.obj" \ "$(INTDIR)\TestFilter.obj" \ "$(INTDIR)\TestHarness_c.obj" \ "$(INTDIR)\TestMemoryAllocator.obj" \ "$(INTDIR)\TestOutput.obj" \ "$(INTDIR)\TestPlugin.obj" \ "$(INTDIR)\TestRegistry.obj" \ "$(INTDIR)\TestResult.obj" \ "$(INTDIR)\Utest.obj" \ "$(INTDIR)\UtestPlatform.obj" ".\lib\CppUTest.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("CppUTest.dep") !INCLUDE "CppUTest.dep" !ELSE !MESSAGE Warning: cannot find "CppUTest.dep" !ENDIF !ENDIF !IF "$(CFG)" == "CppUTest - Win32 Release" || "$(CFG)" == "CppUTest - Win32 Debug" SOURCE=.\src\CppUTestExt\CodeMemoryReportFormatter.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\CodeMemoryReportFormatter.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\CodeMemoryReportFormatter.obj" "$(INTDIR)\CodeMemoryReportFormatter.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\CommandLineArguments.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\CommandLineArguments.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\CommandLineArguments.obj" "$(INTDIR)\CommandLineArguments.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\CommandLineTestRunner.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\CommandLineTestRunner.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\CommandLineTestRunner.obj" "$(INTDIR)\CommandLineTestRunner.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\JUnitTestOutput.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\JUnitTestOutput.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\JUnitTestOutput.obj" "$(INTDIR)\JUnitTestOutput.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\MemoryLeakDetector.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MemoryLeakDetector.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MemoryLeakDetector.obj" "$(INTDIR)\MemoryLeakDetector.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\MemoryLeakWarningPlugin.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MemoryLeakWarningPlugin.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MemoryLeakWarningPlugin.obj" "$(INTDIR)\MemoryLeakWarningPlugin.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\src\CppUTestExt\MemoryReportAllocator.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MemoryReportAllocator.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MemoryReportAllocator.obj" "$(INTDIR)\MemoryReportAllocator.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\src\CppUTestExt\MemoryReporterPlugin.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MemoryReporterPlugin.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MemoryReporterPlugin.obj" "$(INTDIR)\MemoryReporterPlugin.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\src\CppUTestExt\MemoryReportFormatter.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MemoryReportFormatter.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MemoryReportFormatter.obj" "$(INTDIR)\MemoryReportFormatter.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=".\src\CppUTestExt\MockActualCall.cpp" !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MockActualCall.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MockActualCall.obj" "$(INTDIR)\MockActualCall.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=".\src\CppUTestExt\MockExpectedCall.cpp" !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MockExpectedCall.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MockExpectedCall.obj" "$(INTDIR)\MockExpectedCall.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=".\src\CppUTestExt\MockExpectedCallsList.cpp" !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MockExpectedCallsList.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MockExpectedCallsList.obj" "$(INTDIR)\MockExpectedCallsList.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=".\src\CppUTestExt\MockFailure.cpp" !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MockFailure.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MockFailure.obj" "$(INTDIR)\MockFailure.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=".\src\CppUTestExt\MockNamedValue.cpp" !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MockNamedValue.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MockNamedValue.obj" "$(INTDIR)\MockNamedValue.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=".\src\CppUTestExt\MockSupport.cpp" !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MockSupport.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MockSupport.obj" "$(INTDIR)\MockSupport.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=".\src\CppUTestExt\MockSupport_c.cpp" !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MockSupport_c.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MockSupport_c.obj" "$(INTDIR)\MockSupport_c.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=".\src\CppUTestExt\MockSupportPlugin.cpp" !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\MockSupportPlugin.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\MockSupportPlugin.obj" "$(INTDIR)\MockSupportPlugin.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=".\src\CppUTestExt\OrderedTest.cpp" !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\OrderedTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\OrderedTest.obj" "$(INTDIR)\OrderedTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\SimpleMutex.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\SimpleMutex.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\SimpleMutex.obj" "$(INTDIR)\SimpleMutex.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\SimpleString.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\SimpleString.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\SimpleString.obj" "$(INTDIR)\SimpleString.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\TestFailure.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\TestFailure.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\TestFailure.obj" "$(INTDIR)\TestFailure.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\TestFilter.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\TestFilter.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\TestFilter.obj" "$(INTDIR)\TestFilter.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\TestHarness_c.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\TestHarness_c.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\TestHarness_c.obj" "$(INTDIR)\TestHarness_c.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\TestMemoryAllocator.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\TestMemoryAllocator.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\TestMemoryAllocator.obj" "$(INTDIR)\TestMemoryAllocator.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\TestOutput.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\TestOutput.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\TestOutput.obj" "$(INTDIR)\TestOutput.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\TestPlugin.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\TestPlugin.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\TestPlugin.obj" "$(INTDIR)\TestPlugin.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\TestRegistry.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\TestRegistry.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\TestRegistry.obj" "$(INTDIR)\TestRegistry.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\TestResult.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\TestResult.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\TestResult.obj" "$(INTDIR)\TestResult.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\SRC\CPPUTEST\Utest.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\Utest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\Utest.obj" "$(INTDIR)\Utest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\src\Platforms\VisualCpp\UtestPlatform.cpp !IF "$(CFG)" == "CppUTest - Win32 Release" "$(INTDIR)\UtestPlatform.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "CppUTest - Win32 Debug" "$(INTDIR)\UtestPlatform.obj" "$(INTDIR)\UtestPlatform.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF !ENDIF cpputest-3.7.2/cpputest.pc.in000644 000765 000024 00000000452 12521603460 017124 0ustar00basvoddestaff000000 000000 prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: CppUtest URL: https://github.com/cpputest/cpputest Description: Easy to use unit test framework for C/C++ Version: @PACKAGE_VERSION@ Cflags: -I${includedir} Libs: -L${libdir} -lstdc++ -lCppUTest -lCppUTestExt cpputest-3.7.2/CppUTest.sln000644 000765 000024 00000002733 12521603460 016555 0ustar00basvoddestaff000000 000000  Microsoft Visual Studio Solution File, Format Version 9.00 # Visual C++ Express 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllTests", "tests\AllTests.vcproj", "{E66A12BB-1E17-4CFE-A358-9E0FA85E0F15}" ProjectSection(ProjectDependencies) = postProject {EC28C821-4AB8-458F-A821-C6E65607B781} = {EC28C821-4AB8-458F-A821-C6E65607B781} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUTest", "CppUTest.vcproj", "{EC28C821-4AB8-458F-A821-C6E65607B781}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E66A12BB-1E17-4CFE-A358-9E0FA85E0F15}.Debug|Win32.ActiveCfg = Debug|Win32 {E66A12BB-1E17-4CFE-A358-9E0FA85E0F15}.Debug|Win32.Build.0 = Debug|Win32 {E66A12BB-1E17-4CFE-A358-9E0FA85E0F15}.Release|Win32.ActiveCfg = Release|Win32 {E66A12BB-1E17-4CFE-A358-9E0FA85E0F15}.Release|Win32.Build.0 = Release|Win32 {EC28C821-4AB8-458F-A821-C6E65607B781}.Debug|Win32.ActiveCfg = Debug|Win32 {EC28C821-4AB8-458F-A821-C6E65607B781}.Debug|Win32.Build.0 = Debug|Win32 {EC28C821-4AB8-458F-A821-C6E65607B781}.Release|Win32.ActiveCfg = Release|Win32 {EC28C821-4AB8-458F-A821-C6E65607B781}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal cpputest-3.7.2/CppUTest.vcproj000644 000765 000024 00000052541 12521603460 017266 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/CppUTest.vcxproj000644 000765 000024 00000025633 12521603460 017460 0ustar00basvoddestaff000000 000000  Debug Win32 Release Win32 {F468F539-27BD-468E-BE64-DDE641400B51} StaticLibrary false MultiByte StaticLibrary false MultiByte <_ProjectFileVersion>10.0.30319.1 lib\ cpputest_build\Debug\ lib\ cpputest_build\Release\ $(ProjectName)d Disabled .\include;.\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) _LIB;WIN32;_DEBUG;STDC_WANT_SECURE_LIB;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 true EditAndContinue ..\include\Platforms\VisualCpp\Platform.h;..\include\CppUTest\MemoryLeakDetectorMallocMacros.h;%(ForcedIncludeFiles) _DEBUG;%(PreprocessorDefinitions) 0x0409 true winmm.lib;%(AdditionalDependencies) true .\Debug/CppUTestd.bsc true Disabled .\include;.\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) OnlyExplicitInline WIN32;NDEBUG;_LIB;STDC_WANT_SECURE_LIB;%(PreprocessorDefinitions) true MultiThreadedDLL true Level3 true ..\include\Platforms\VisualCpp\Platform.h;..\include\CppUTest\MemoryLeakDetectorMallocMacros.h;%(ForcedIncludeFiles) OldStyle NDEBUG;%(PreprocessorDefinitions) 0x0409 true winmm.lib;%(AdditionalDependencies) true .\Release/CppUTest.bsc true %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(PreprocessorDefinitions) cpputest-3.7.2/cpputest_build/000755 000765 000024 00000000000 12523662133 017355 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/cpputest_doxy_gen.conf000644 000765 000024 00000234040 12521603460 020740 0ustar00basvoddestaff000000 000000 # Doxyfile 1.8.3.1 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" "). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or sequence of words) that should # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. PROJECT_NAME = "CppUTest Documentation" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer # a quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. Note that you specify absolute paths here, but also # relative paths, which will be relative from the directory where doxygen is # started. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding # "class=itcl::class" will allow you to use the command class in the # itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, # and language is one of the parsers supported by doxygen: IDL, Java, # Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, # C++. For instance to make doxygen treat .inc files as Fortran files (default # is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note # that for custom extensions you also need to set FILE_PATTERNS otherwise the # files are not read by doxygen. EXTENSION_MAPPING = # If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all # comments according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you # can mix doxygen, HTML, and XML commands with Markdown formatting. # Disable only in case of backward compatibilities issues. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented classes, # or namespaces to their corresponding documentation. Such a link can be # prevented in individual cases by by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES (the # default) will make doxygen replace the get and set methods by a property in # the documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and # unions are shown inside the group in which they are included (e.g. using # @ingroup) instead of on a separate page (for HTML and Man pages) or # section (for LaTeX and RTF). INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and # unions with only public data fields will be shown inline in the documentation # of the scope in which they are defined (i.e. file, namespace, or group # documentation), provided this scope is documented. If set to NO (the default), # structs, classes, and unions are shown on a separate page (for HTML and Man # pages) or section (for LaTeX and RTF). INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to # determine which symbols to keep in memory and which to flush to disk. # When the cache is full, less often used symbols will be written to disk. # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time # causing a significant performance penalty. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on # a logarithmic scale so increasing the size by one will roughly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols. SYMBOL_CACHE_SIZE = 0 # Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be # set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given # their name and scope. Since this can be an expensive process and often the # same symbol appear multiple times in the code, doxygen keeps a cache of # pre-resolved symbols. If the cache is too small doxygen will become slower. # If the cache is too large, memory is wasted. The cache size is given by this # formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal # scope will be included in the documentation. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespaces are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = NO # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen # will list include files with double quotes in the documentation # rather than with sharp brackets. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen # will sort the (brief and detailed) documentation of class members so that # constructors and destructors are listed first. If set to NO (the default) # the constructors will appear in the respective orders defined by # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to # do proper type resolution of all parameters of a function it will reject a # match between the prototype and the implementation of a member function even # if there is only one candidate or it is obvious which candidate to choose # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen # will still accept a match between prototype and implementation in such cases. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if section-label ... \endif # and \cond section-label ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or macro consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and macros in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. # This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. # You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files # containing the references data. This must be a list of .bib files. The # .bib extension is automatically appended if omitted. Using this command # requires the bibtex tool to be installed. See also # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this # feature you need bibtex and perl available in the search path. Do not use # file names with spaces, bibtex cannot handle them. CITE_BIB_FILES = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_NO_PARAMDOC option can be enabled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = include/CppUTest # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py # *.f90 *.f *.for *.vhd *.vhdl FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. # If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. # Doxygen will compare the file name with each pattern and apply the # filter if there is a match. # The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty or if # non of the patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) # and it is also possible to disable source filtering for a specific pattern # using *.ext= (so without naming a filter). This option only has effect when # FILTER_SOURCE_FILES is enabled. FILTER_SOURCE_PATTERNS = # If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page (index.html). # This can be useful if you have a project on for instance GitHub and want reuse # the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C, C++ and Fortran comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. # Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. Note that when using a custom header you are responsible # for the proper inclusion of any scripts and style sheets that doxygen # needs, which is dependent on the configuration options used. # It is advised to generate a default header using "doxygen -w html # header.html footer.html stylesheet.css YourConfigFile" and then modify # that header. Note that the header is subject to change so you typically # have to redo this when upgrading to a newer version of doxygen or when # changing the value of configuration settings such as GENERATE_TREEVIEW! HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If left blank doxygen will # generate a default style sheet. Note that it is recommended to use # HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this # tag will in the future become obsolete. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify an additional # user-defined cascading style sheet that is included after the standard # style sheets created by doxygen. Using this option one can overrule # certain style aspects. This is preferred over using HTML_STYLESHEET # since it does not replace the standard style sheet and is therefor more # robust against future updates. Doxygen will copy the style sheet file to # the output directory. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that # the files will be copied as-is; there are no commands or markers available. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. # Doxygen will adjust the colors in the style sheet and background images # according to this color. Hue is specified as an angle on a colorwheel, # see http://en.wikipedia.org/wiki/Hue for more information. # For instance the value 0 represents red, 60 is yellow, 120 is green, # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. # The allowed range is 0 to 359. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of # the colors in the HTML output. For a value of 0 the output will use # grayscales only. A value of 255 will produce the most vivid colors. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to # the luminance component of the colors in the HTML output. Values below # 100 gradually make the output lighter, whereas values above 100 make # the output darker. The value divided by 100 is the actual gamma applied, # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, # and 100 does not change the gamma. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of # entries shown in the various tree structured indices initially; the user # can expand and collapse entries dynamically later on. Doxygen will expand # the tree to such a level that at most the specified number of entries are # visible (unless a fully collapsed tree already exceeds this amount). # So setting the number of entries 1 will produce a full collapsed tree by # default. 0 is a special value representing an infinite number of entries # and will result in a full expanded tree by default. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely # identify the documentation publisher. This should be a reverse domain-name # style string, e.g. com.mycompany.MyDocSet.documentation. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated # that can be used as input for Qt's qhelpgenerator to generate a # Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to # add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see # # Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's # filter section matches. # # Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files # will be generated, which together with the HTML files, form an Eclipse help # plugin. To install this plugin and make it available under the help contents # menu in Eclipse, the contents of the directory containing the HTML and XML # files needs to be copied into the plugins directory of eclipse. The name of # the directory within the plugins directory should be the same as # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before # the help appears. GENERATE_ECLIPSEHELP = NO # A unique identifier for the eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have # this name. ECLIPSE_DOC_ID = org.doxygen.Project # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) # at top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. Since the tabs have the same information as the # navigation tree you can set this option to NO if you already set # GENERATE_TREEVIEW to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to YES, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. # Since the tree basically has the same information as the tab index you # could consider to set DISABLE_INDEX to NO when enabling this option. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values # (range [0,1..20]) that doxygen will group on one line in the generated HTML # documentation. Note that a value of 0 will completely suppress the enum # values from appearing in the overview section. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open # links to external symbols imported via tag files in a separate window. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are # not supported properly for IE 6.0, but are supported on all modern browsers. # Note that when changing this option you need to delete any form_*.png files # in the HTML output before the changes have effect. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax # (see http://www.mathjax.org) which uses client side Javascript for the # rendering instead of using prerendered bitmaps. Use this if you do not # have LaTeX installed or if you want to formulas look prettier in the HTML # output. When enabled you may also need to install MathJax separately and # configure the path to it using the MATHJAX_RELPATH option. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and # SVG. The default value is HTML-CSS, which is slower, but has the best # compatibility. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the # HTML output directory using the MATHJAX_RELPATH option. The destination # directory should contain the MathJax.js script. For instance, if the mathjax # directory is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to # the MathJax Content Delivery Network so you can quickly see the result without # installing MathJax. # However, it is strongly recommended to install a local # copy of MathJax from http://www.mathjax.org before deployment. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension # names that should be enabled during MathJax rendering. MATHJAX_EXTENSIONS = # When the SEARCHENGINE tag is enabled doxygen will generate a search box # for the HTML output. The underlying search engine uses javascript # and DHTML and should work on any modern browser. Note that when using # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets # (GENERATE_DOCSET) there is already a search function so this one should # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a web server instead of a web client using Javascript. # There are two flavours of web server based search depending on the # EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for # searching and an index file used by the script. When EXTERNAL_SEARCH is # enabled the indexing and searching needs to be provided by external tools. # See the manual for details. SERVER_BASED_SEARCH = NO # When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP # script for searching. Instead the search results are written to an XML file # which needs to be processed by an external indexer. Doxygen will invoke an # external search engine pointed to by the SEARCHENGINE_URL option to obtain # the search results. Doxygen ships with an example indexer (doxyindexer) and # search engine (doxysearch.cgi) which are based on the open source search engine # library Xapian. See the manual for configuration details. EXTERNAL_SEARCH = NO # The SEARCHENGINE_URL should point to a search engine hosted by a web server # which will returned the search results when EXTERNAL_SEARCH is enabled. # Doxygen ships with an example search engine (doxysearch) which is based on # the open source search engine library Xapian. See the manual for configuration # details. SEARCHENGINE_URL = # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed # search data is written to a file for indexing by an external tool. With the # SEARCHDATA_FILE tag the name of this file can be specified. SEARCHDATA_FILE = searchdata.xml # When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple # projects and redirect the results back to the right project. EXTERNAL_SEARCH_ID = # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen # projects other than the one defined by this configuration file, but that are # all added to the same external search index. Each project needs to have a # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id # of to a relative location where the documentation can be found. # The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... EXTRA_SEARCH_MAPPINGS = #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. # Note that when enabling USE_PDFLATEX this option is only used for # generating bitmaps for formulas in the HTML output, but not in the # Makefile that is written to the output directory. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for # the generated latex document. The footer should contain everything after # the last chapter. If it is left blank doxygen will generate a # standard footer. Notice: only use this tag if you know what you are doing! LATEX_FOOTER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO # If LATEX_SOURCE_CODE is set to YES then doxygen will include # source code with syntax highlighting in the LaTeX output. # Note that which sources are shown also depends on other settings # such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See # http://en.wikipedia.org/wiki/BibTeX for more info. LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load style sheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. # This is useful # if you want to understand what is going on. # On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # pointed to by INCLUDE_PATH will be searched when a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition that # overrules the definition found in the source code. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all references to function-like macros # that are alone on a line, have an all uppercase name, and do not end with a # semicolon, because these will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. For each # tag file the location of the external documentation should be added. The # format of a tag file without this location is as follows: # # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths # or URLs. Note that each tag file must have a unique name (where the name does # NOT include the path). If a tag file is not located in the directory in which # doxygen is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option also works with HAVE_DOT disabled, but it is recommended to # install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is # allowed to run in parallel. When set to 0 (the default) doxygen will # base this on the number of processors available in the system. You can set it # explicitly to a value larger than 0 to get control over the balance # between CPU load and processing speed. DOT_NUM_THREADS = 0 # By default doxygen will use the Helvetica font for all dot files that # doxygen generates. When you want a differently looking font you can specify # the font name using DOT_FONTNAME. You need to make sure dot is able to find # the font, which can be done by putting it in a standard location or by setting # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the # directory containing the font. DOT_FONTNAME = Helvetica # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the Helvetica font. # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to # set the path where dot can find it. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If the UML_LOOK tag is enabled, the fields and methods are shown inside # the class node. If there are many fields or methods and many nodes the # graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS # threshold limits the number of items for each type to make the size more # managable. Set this to 0 for no limit. Note that the threshold may be # exceeded by 50% before the limit is enforced. UML_LIMIT_NUM_FIELDS = 10 # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will generate a graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are svg, png, jpg, or gif. # If left blank png will be used. If you choose svg you need to set # HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible in IE 9+ (other browsers do not have this requirement). DOT_IMAGE_FORMAT = png # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to # enable generation of interactive SVG images that allow zooming and panning. # Note that this requires a modern browser other than Internet Explorer. # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible. Older versions of IE do not have SVG support. INTERACTIVE_SVG = NO # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the # \mscfile command). MSCFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the edges of # a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES cpputest-3.7.2/CppUTest_VS201x.sln000644 000765 000024 00000002476 12521603460 017604 0ustar00basvoddestaff000000 000000  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllTests", "tests\AllTests.vcxproj", "{913088F6-37C0-4195-80E9-548C7C5303CB}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUTest", "CppUTest.vcxproj", "{F468F539-27BD-468E-BE64-DDE641400B51}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {913088F6-37C0-4195-80E9-548C7C5303CB}.Debug|Win32.ActiveCfg = Debug|Win32 {913088F6-37C0-4195-80E9-548C7C5303CB}.Debug|Win32.Build.0 = Debug|Win32 {913088F6-37C0-4195-80E9-548C7C5303CB}.Release|Win32.ActiveCfg = Release|Win32 {913088F6-37C0-4195-80E9-548C7C5303CB}.Release|Win32.Build.0 = Release|Win32 {F468F539-27BD-468E-BE64-DDE641400B51}.Debug|Win32.ActiveCfg = Debug|Win32 {F468F539-27BD-468E-BE64-DDE641400B51}.Debug|Win32.Build.0 = Debug|Win32 {F468F539-27BD-468E-BE64-DDE641400B51}.Release|Win32.ActiveCfg = Release|Win32 {F468F539-27BD-468E-BE64-DDE641400B51}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal cpputest-3.7.2/depcomp000755 000765 000024 00000056016 12521603513 015707 0ustar00basvoddestaff000000 000000 #! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 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, see . # 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 outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} 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" # Avoid interferences from the environment. gccflag= dashmflag= # 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 cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc 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. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## 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). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - 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 -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # 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. ## 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. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -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 -ne 0; then 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 ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # 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 ;; 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. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then 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" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; 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. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # 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 ;; #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 "X$1" != 'X--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|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | 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 "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi 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. -arch) eat=yes ;; -*|$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" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | 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 "X$1" != 'X--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 -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [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. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # 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 ;; 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-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: cpputest-3.7.2/docs/000755 000765 000024 00000000000 12523662133 015257 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/Doxyfile000644 000765 000024 00000151355 12521603460 016043 0ustar00basvoddestaff000000 000000 # Doxyfile 1.5.3 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file that # follow. The default is UTF-8 which is also the encoding used for all text before # the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into # libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of # possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = CppUTest # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = cpputest_doxygen # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, # Italian, Japanese, Japanese-en (Japanese with English messages), Korean, # Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, # Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to # include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be extracted # and appear in the documentation as a namespace called 'anonymous_namespace{file}', # where file will be replaced with the base name of the file that contains the anonymous # namespace. By default anonymous namespace are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = NO # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = NO # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from the # version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = # This tag can be used to specify the character encoding of the source files that # doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default # input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. # See http://www.gnu.org/software/libiconv for the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the output. # The symbol name can be a fully qualified name, a word, or if the wildcard * is used, # a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH # then you must also enable this option. If you don't then doxygen will produce # a warning and turn it on anyway SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. Otherwise they will link to the documentstion. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to # produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to # specify the directory where the mscgen tool resides. If left empty the tool is assumed to # be found in the default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will # generate a caller dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable caller graphs for selected # functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the number # of direct children of the root node in a graph is already larger than # MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, which results in a white background. # Warning: Depending on the platform used, enabling this option may lead to # badly anti-aliased labels on the edges of a graph (i.e. they become hard to # read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO cpputest-3.7.2/examples/000755 000765 000024 00000000000 12523662133 016145 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/include/000755 000765 000024 00000000000 12523662132 015751 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/INSTALL000644 000765 000024 00000036610 12521603513 015361 0ustar00basvoddestaff000000 000000 Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command `./configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. cpputest-3.7.2/install-sh000755 000765 000024 00000033255 12521603513 016336 0ustar00basvoddestaff000000 000000 #!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # 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 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac 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 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac 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 do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 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 problematic for 'test' and other utilities. 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 # 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-writable 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 X"$d" = X && 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: cpputest-3.7.2/ltmain.sh000644 000765 000024 00001051522 12521603510 016145 0ustar00basvoddestaff000000 000000 # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 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) # --no-warn don't display warning messages # --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.2 # 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.2 TIMESTAMP="" package_revision=1.3337 # 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'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${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=${PATH_SEPARATOR-:} 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-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-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_warning=: 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-warning|--no-warn) opt_warning=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 | *.go | *.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_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_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 () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac 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 -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # 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|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 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 -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) 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|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 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$absdir" # 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 # correct linux to gnu/linux during the next big refactor 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) # correct to gnu/linux during the next big refactor 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 # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac 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_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do 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; 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 $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 func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result 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" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 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}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" 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 cpputest-3.7.2/m4/000755 000765 000024 00000000000 12523662132 014646 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/makeAndRun.bat000644 000765 000024 00000001156 12521603460 017043 0ustar00basvoddestaff000000 000000 rem **** rem * for this command line build to work independent of where it was created rem * rem * Generate Project/Export Makefiles rem * rem * then do these edits to the generated files rem * CppUTest.dep - change the relitive path to ....\program files to \program files rem * AllTests.mak - At the end of the makefile where the depended upon CppUTest is made rem* Change cd "\absolute\path\CppUTest" to cd .. PATH=C:\Program Files\Microsoft Visual Studio\VC98\Bin;%PATH% rem nmake /f CppUTest.mak CFG="CppUTest - Win32 Debug" all cd tests nmake /f AllTests.mak all cd Debug AllTests -v cd ..\.. cpputest-3.7.2/Makefile.am000644 000765 000024 00000033627 12523654532 016402 0ustar00basvoddestaff000000 000000 ACLOCAL_AMFLAGS = -I m4 CPPUTEST_TESTS = CppUTestTests CPPUTESTEXT_TESTS = CppUTestExtTests EXTRA_LIBRARIES = lib/libCppUTestExt.a EXTRA_PROGRAMS = CppUTestExtTests lib_LIBRARIES = lib/libCppUTest.a check_PROGRAMS = $(CPPUTEST_TESTS) if INCLUDE_CPPUTEST_EXT lib_LIBRARIES+= lib/libCppUTestExt.a check_PROGRAMS += $(CPPUTESTEXT_TESTS) endif if INCLUDE_GMOCKTESTS # check_PROGRAMS += GTestTests endif TESTS = $(check_PROGRAMS) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = cpputest.pc EXTRA_DIST = \ cpputest.pc.in \ $(ALL_FILES_IN_GIT) lib_libCppUTest_a_CPPFLAGS = $(AM_CPPFLAGS) $(CPPUTEST_CPPFLAGS) $(CPPUTEST_ADDITIONAL_CPPFLAGS) lib_libCppUTest_a_CFLAGS = $(AM_CFLAGS) $(CPPUTEST_CFLAGS) $(CPPUTEST_ADDITIONAL_CFLAGS) lib_libCppUTest_a_CXXFLAGS = $(AM_CXXFLAGS) $(CPPUTEST_CXXFLAGS) $(CPPUTEST_ADDITIONAL_CXXFLAGS) lib_libCppUTest_a_SOURCES = \ src/CppUTest/CommandLineArguments.cpp \ src/CppUTest/CommandLineTestRunner.cpp \ src/CppUTest/JUnitTestOutput.cpp \ src/CppUTest/MemoryLeakDetector.cpp \ src/CppUTest/MemoryLeakWarningPlugin.cpp \ src/CppUTest/SimpleString.cpp \ src/CppUTest/SimpleMutex.cpp \ src/CppUTest/TestFailure.cpp \ src/CppUTest/TestFilter.cpp \ src/CppUTest/TestHarness_c.cpp \ src/CppUTest/TestMemoryAllocator.cpp \ src/CppUTest/TestOutput.cpp \ src/CppUTest/TestPlugin.cpp \ src/CppUTest/TestRegistry.cpp \ src/CppUTest/TestResult.cpp \ src/CppUTest/Utest.cpp \ src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp include_cpputestdir = $(includedir)/CppUTest include_cpputest_HEADERS = \ include/CppUTest/CommandLineArguments.h \ include/CppUTest/CommandLineTestRunner.h \ include/CppUTest/CppUTestConfig.h \ include/CppUTest/JUnitTestOutput.h \ include/CppUTest/MemoryLeakDetector.h \ include/CppUTest/MemoryLeakDetectorMallocMacros.h \ include/CppUTest/MemoryLeakDetectorNewMacros.h \ include/CppUTest/MemoryLeakWarningPlugin.h \ include/CppUTest/PlatformSpecificFunctions.h \ include/CppUTest/PlatformSpecificFunctions_c.h \ include/CppUTest/SimpleString.h \ include/CppUTest/SimpleMutex.h \ include/CppUTest/StandardCLibrary.h \ include/CppUTest/TestFailure.h \ include/CppUTest/TestFilter.h \ include/CppUTest/TestHarness.h \ include/CppUTest/TestHarness_c.h \ include/CppUTest/TestMemoryAllocator.h \ include/CppUTest/TestOutput.h \ include/CppUTest/TestPlugin.h \ include/CppUTest/TestRegistry.h \ include/CppUTest/TestResult.h \ include/CppUTest/TestTestingFixture.h \ include/CppUTest/Utest.h \ include/CppUTest/UtestMacros.h lib_libCppUTestExt_a_CPPFLAGS = $(lib_libCppUTest_a_CPPFLAGS) lib_libCppUTestExt_a_CFLAGS = $(lib_libCppUTest_a_CFLAGS) lib_libCppUTestExt_a_CXXFLAGS = $(lib_libCppUTest_a_CXXFLAGS) lib_libCppUTestExt_a_SOURCES = \ src/CppUTestExt/CodeMemoryReportFormatter.cpp \ src/CppUTestExt/MemoryReportAllocator.cpp \ src/CppUTestExt/MemoryReporterPlugin.cpp \ src/CppUTestExt/MemoryReportFormatter.cpp \ src/CppUTestExt/MockActualCall.cpp \ src/CppUTestExt/MockExpectedCall.cpp \ src/CppUTestExt/MockExpectedCallsList.cpp \ src/CppUTestExt/MockFailure.cpp \ src/CppUTestExt/MockNamedValue.cpp \ src/CppUTestExt/MockSupport.cpp \ src/CppUTestExt/MockSupportPlugin.cpp \ src/CppUTestExt/MockSupport_c.cpp \ src/CppUTestExt/OrderedTest.cpp if INCLUDE_CPPUTEST_EXT include_cpputestextdir = $(includedir)/CppUTestExt include_cpputestext_HEADERS = \ include/CppUTestExt/GMock.h \ include/CppUTestExt/GTest.h \ include/CppUTestExt/GTestConvertor.h \ include/CppUTestExt/MemoryReportAllocator.h \ include/CppUTestExt/MemoryReporterPlugin.h \ include/CppUTestExt/MemoryReportFormatter.h \ include/CppUTestExt/MockActualCall.h \ include/CppUTestExt/MockCheckedActualCall.h \ include/CppUTestExt/MockCheckedExpectedCall.h \ include/CppUTestExt/MockExpectedCall.h \ include/CppUTestExt/MockExpectedCallsList.h \ include/CppUTestExt/MockFailure.h \ include/CppUTestExt/MockNamedValue.h \ include/CppUTestExt/MockSupport.h \ include/CppUTestExt/MockSupportPlugin.h \ include/CppUTestExt/MockSupport_c.h \ include/CppUTestExt/OrderedTest.h endif CppUTestTests_CPPFLAGS = $(lib_libCppUTest_a_CPPFLAGS) CppUTestTests_CFLAGS = $(lib_libCppUTest_a_CFLAGS) CppUTestTests_CXXFLAGS = $(lib_libCppUTest_a_CXXFLAGS) CppUTestTests_LDADD = lib/libCppUTest.a $(CPPUTEST_LDADD) CppUTestTests_LDFLAGS = $(AM_LDFLAGS) $(CPPUTEST_LDFLAGS) $(CPPUTEST_ADDITIONAL_LDFLAGS) CppUTestTests_SOURCES = \ tests/AllocationInCFile.c \ tests/AllocationInCppFile.cpp \ tests/AllocLetTestFree.c \ tests/AllocLetTestFreeTest.cpp \ tests/AllTests.cpp \ tests/CheatSheetTest.cpp \ tests/CommandLineArgumentsTest.cpp \ tests/CommandLineTestRunnerTest.cpp \ tests/JUnitOutputTest.cpp \ tests/MemoryLeakDetectorTest.cpp \ tests/MemoryLeakOperatorOverloadsTest.cpp \ tests/MemoryLeakWarningTest.cpp \ tests/PluginTest.cpp \ tests/PreprocessorTest.cpp \ tests/SetPluginTest.cpp \ tests/SimpleStringTest.cpp \ tests/SimpleMutexTest.cpp \ tests/TestFailureNaNTest.cpp \ tests/TestFailureTest.cpp \ tests/TestFilterTest.cpp \ tests/TestHarness_cTest.cpp \ tests/TestHarness_cTestCFile.c \ tests/TestInstallerTest.cpp \ tests/TestMemoryAllocatorTest.cpp \ tests/TestOutputTest.cpp \ tests/TestRegistryTest.cpp \ tests/TestResultTest.cpp \ tests/TestUTestMacro.cpp \ tests/UtestTest.cpp \ tests/UtestPlatformTest.cpp CppUTestExtTests_CPPFLAGS = $(lib_libCppUTestExt_a_CPPFLAGS) CppUTestExtTests_CFLAGS = $(lib_libCppUTestExt_a_CFLAGS) CppUTestExtTests_CXXFLAGS = $(lib_libCppUTestExt_a_CXXFLAGS) CppUTestExtTests_LDADD = lib/libCppUTestExt.a lib/libCppUTest.a $(CPPUTEST_LDADD) CppUTestExtTests_LDFLAGS = $(CppUTestTests_LDFLAGS) CppUTestExtTests_SOURCES = \ tests/CppUTestExt/AllTests.cpp \ tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp \ tests/CppUTestExt/GMockTest.cpp \ tests/CppUTestExt/GTest1Test.cpp \ tests/CppUTestExt/GTest2ConvertorTest.cpp \ tests/CppUTestExt/MemoryReportAllocatorTest.cpp \ tests/CppUTestExt/MemoryReporterPluginTest.cpp \ tests/CppUTestExt/MemoryReportFormatterTest.cpp \ tests/CppUTestExt/MockActualCallTest.cpp \ tests/CppUTestExt/MockCheatSheetTest.cpp \ tests/CppUTestExt/MockExpectedCallTest.cpp \ tests/CppUTestExt/MockExpectedFunctionsListTest.cpp \ tests/CppUTestExt/MockFailureTest.cpp \ tests/CppUTestExt/MockPluginTest.cpp \ tests/CppUTestExt/MockSupportTest.cpp \ tests/CppUTestExt/MockSupport_cTest.cpp \ tests/CppUTestExt/MockSupport_cTestCFile.c \ tests/CppUTestExt/OrderedTestTest.cpp if INCLUDE_GMOCKTESTS #GTestTests_CPPFLAGS = $(lib_libCppUTestExt_a_CPPFLAGS) #GTestTests_CFLAGS = $(lib_libCppUTestExt_a_CFLAGS) #GTestTests_CXXFLAGS = $(lib_libCppUTestExt_a_CXXFLAGS) -DCPPUTEST_USE_MEM_LEAK_DETECTION=0 -DGMOCK_RENAME_MAIN=1 -D_THREAD_SAFE -DGTEST_HAS_PTHREAD=1 #GTestTests_LDADD = lib/libCppUTestExt.a lib/libCppUTest.a $(CPPUTEST_LDADD) #GTestTests_LDFLAGS = $(CppUTestTests_LDFLAGS) #GTestTests_SOURCES = \ $(GMOCK_HOME)/test/gmock-spec-builders_test.cc \ tests/CppUTestExt/AllTests.cpp endif RUN_CPPUTEST_TESTS = ./$(CPPUTEST_TESTS) RUN_CPPUTESTEXT_TESTS = ./$(CPPUTESTEXT_TESTS) valgrind: check @if test "x$(CPPUTEST_HAS_VALGRIND)" = xno; then echo "Running the valgrind target without having valgrind. Perhaps install it first?"; exit 1; fi valgrind --dsymutil=yes --suppressions=$(srcdir)/valgrind.suppressions --gen-suppressions=all --error-exitcode=1 ./$(CPPUTEST_TESTS) tdd: $(CPPUTEST_TESTS)$(EXEEXT) $(CPPUTESTEXT_TESTS)$(EXEEXT) ./$(CPPUTEST_TESTS) if INCLUDE_CPPUTEST_EXT ./$(CPPUTESTEXT_TESTS) endif cpputest_build_gtest17: mkdir -p cpputest_build_gtest17 cd cpputest_build_gtest17; \ wget https://googlemock.googlecode.com/files/gmock-1.7.0.zip && unzip gmock-1.7.0.zip cd cpputest_build_gtest17/gmock-1.7.0; ./configure && make check cpputest_build_gtest16: mkdir -p cpputest_build_gtest16 cd cpputest_build_gtest16; \ wget https://googlemock.googlecode.com/files/gmock-1.6.0.zip && unzip gmock-1.6.0.zip cd cpputest_build_gtest16/gmock-1.6.0; ./configure CXXFLAGS=-DGTEST_USE_OWN_TR1_TUPLE=1 && make check cpputest_build_gtest15: mkdir -p cpputest_build_gtest15 cd cpputest_build_gtest15; \ wget https://googlemock.googlecode.com/files/gmock-1.5.0.zip && unzip gmock-1.5.0.zip cd cpputest_build_gtest15/gmock-1.5.0; ./configure CXXFLAGS=-DGTEST_USE_OWN_TR1_TUPLE=1 && make check_gtest15: cpputest_build_gtest15 @echo "Build using gmock 1.5"; export GMOCK_HOME=`pwd`/cpputest_build_gtest15/gmock-1.5.0; \ make distclean; $(srcdir)/configure; make check check_gtest16: cpputest_build_gtest16 @echo "Build using gmock 1.6"; export GMOCK_HOME=`pwd`/cpputest_build_gtest16/gmock-1.6.0; \ make distclean; $(srcdir)/configure; make check check_gtest17: cpputest_build_gtest17 @echo "Build using gmock 1.7" export GMOCK_HOME=`pwd`/cpputest_build_gtest17/gmock-1.7.0; \ make distclean; $(srcdir)/configure; make check remove_gtest_directories: rm -rf cpputest_build_gtest15 rm -rf cpputest_build_gtest16 rm -rf cpputest_build_gtest17 check_gtest: remove_gtest_directories check_gtest15 check_gtest16 check_gtest17 check_basic: @echo "If dash is available, run the configure with dash to find bash-isms and increase portability" make distclean; if test "x$(CPPUTEST_HAS_DASH)" = xyes; then CONFIG_SHELL=dash $(srcdir)/configure; fi @echo "Building and valgrinding (skipping this on MacOS due to buggy Valgrind" if test "x$(CPPUTEST_ON_MACOSX)" = xno; then \ make distclean; $(srcdir)/configure; make valgrind; \ fi @echo "Building without extensions" make distclean; $(srcdir)/configure --disable-extensions; make check @echo "Building with the Std C++ 11 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp11; make @echo "Building without the Standard C library" make distclean; $(srcdir)/configure --disable-std-c; make @echo "Building without the Standard C++ library" make distclean; $(srcdir)/configure --disable-std-cpp; make check @echo "Building without memory leak detection" make distclean; $(srcdir)/configure --disable-memory-leak-detection; make check @echo "Building without memory leak detection and without Standard C++" make distclean; $(srcdir)/configure --disable-memory-leak-detection --disable-std-cpp; make check @echo "Generate a map file while building" make distclean; $(srcdir)/configure -enable-generate-map-file; make check if [ -s CppUTest.o.map.txt ]; then echo "Generating map file failed. Build failed!"; exit 1; fi check_special_situations: @echo "Does the system have gcc? $(CPPUTEST_HAS_GCC)" if test "x$(CPPUTEST_HAS_GCC)" = xyes; then echo "Compiling with gcc"; make distclean; $(srcdir)/configure CC="gcc" CXX="g++"; make check; fi @echo "Does the system have clang and is a Mac? $(CPPUTEST_HAS_CLANG)" if test "x$(CPPUTEST_HAS_CLANG)" = xyes && test "x$(CPPUTEST_ON_MACOSX)" = xyes; then \ echo "Compiling with clang"; make distclean; $(srcdir)/configure CC="clang" CXX="clang++"; make check; \ fi @echo Testing JUnit output make distclean; $(srcdir)/configure; make check ./$(CPPUTEST_TESTS) -ojunit > junit_run_output if [ -s junit_run_output ]; then echo "JUnit run has output. Build failed!"; exit 1; fi rm junit_run_output; rm cpputest_*.xml @echo "Building with all flags turned off" make distclean; $(srcdir)/configure --disable-cpputest-flags CFLAGS="" CXXFLAGS="" CPPFLAGS="-I $(srcdir)/include -I$(srcdir)/include/CppUTestExt/CppUTestGTest -I$(srcdir)/include/CppUTestExt/CppUTestGMock" --disable-dependency-tracking; make check check_coverage: @echo "Compile with coverage (switch to clang for Mac OSX)" if test "x$(CPPUTEST_HAS_CLANG)" = xyes && test "x$(CPPUTEST_ON_MACOSX)" = xyes; then \ echo "Compiling with clang"; make distclean; $(srcdir)/configure CC="clang" CXX="clang++" --enable-coverage CFLAGS="-O0" CXXFLAGS="-O0"; \ else \ make distclean; $(srcdir)/configure -enable-coverage CFLAGS="-O0" CXXFLAGS="-O0"; \ fi make check ./$(CPPUTEST_TESTS) >> test_output.txt; ./$(CPPUTESTEXT_TESTS) >> test_output.txt $(SILENCE)for f in `ls *.gcno` ; do \ gcov $(CppUTestExtTests_SOURCES) $(CppUTestTests_SOURCES) $(lib_libCppUTest_a_SOURCES) $(lib_libCppUTestExt_a_SOURCES) -o $$f 1>>gcov_output.txt 2>>gcov_error.txt; \ done $(srcdir)/scripts/filterGcov.sh gcov_output.txt gcov_error.txt gcov_report.txt test_output.txt cat gcov_report.txt if test "x$(CPPUTEST_HAS_LCOV)" = xyes; then lcov -c -d . -o temp.info; lcov -r temp.info /usr\* -o coverage.info; genhtml -o test_coverage coverage.info; fi remove_coverage_output: rm -f gcov_output.txt gcov_error.txt gcov_report.txt test_output.txt gcov_report.txt.html temp.info coverage.info rm -rf test_coverage check_examples: @echo "Using the old Makefile and examples" make distclean $(MAKE) -C $(srcdir) -f Makefile_using_MakefileWorker extensions $(MAKE) -C $(srcdir)/examples all clean @echo "Compiling and running the examples. This will use the old Makefile" make distclean; $(srcdir)/configure; make; $(MAKE) -C $(srcdir)/examples all clean CPPUTEST_LIB_LINK_DIR="`pwd`/lib" check_all: check_basic check_special_situations check_coverage remove_coverage_output check_examples check_gtest @echo "Last... one normal build and test" make distclean; $(srcdir)/configure; make check; @echo "Check running tests repeatedly" $(RUN_CPPUTEST_TESTS) - r; $(RUN_CPPUTESTEXT_TESTS) -r @echo "Check running tests in separate process (CppUTestExtTests TEST_GROUP(TestOrderedTestMacro) would have to fail)" $(RUN_CPPUTEST_TESTS) -p; # Mac OSX adds an annoying directory when packaging. This can be prevented by setting COPYFILE_DISABLE=1 # However, I've not figured out how to set it automatically and neither google nor stackoverflow knew the answer. # The automake mailing list is still thinking about it, and thus, I've added this check so that I don't forget to do it :) # More info: http://superuser.com/questions/61185/why-do-i-get-files-like-foo-in-my-tarball-on-os-x dist-hook: if test "x$(CPPUTEST_ON_MACOSX)" = "xyes"; then \ if test ! "x$(COPYFILE_DISABLE)" = "x1"; then \ echo ""; \ echo 'ERROR: When packaging on MacOSX, please run "COPYFILE_DISABLE=1 make dist"'; \ echo ""; \ exit 1; \ fi \ fi cpputest-3.7.2/Makefile.in000644 000765 000024 00001023556 12523660354 016413 0ustar00basvoddestaff000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 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@ EXTRA_PROGRAMS = CppUTestExtTests$(EXEEXT) check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_3) @INCLUDE_CPPUTEST_EXT_TRUE@am__append_1 = lib/libCppUTestExt.a @INCLUDE_CPPUTEST_EXT_TRUE@am__append_2 = $(CPPUTESTEXT_TESTS) subdir = . DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in $(srcdir)/cpputest.pc.in depcomp \ $(include_cpputest_HEADERS) \ $(am__include_cpputestext_HEADERS_DIST) test-driver COPYING \ compile config.guess config.sub install-sh missing ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(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_HEADER = config.h CONFIG_CLEAN_FILES = cpputest.pc 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)" "$(DESTDIR)$(pkgconfigdir)" \ "$(DESTDIR)$(include_cpputestdir)" \ "$(DESTDIR)$(include_cpputestextdir)" LIBRARIES = $(lib_LIBRARIES) ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = lib_libCppUTest_a_AR = $(AR) $(ARFLAGS) lib_libCppUTest_a_LIBADD = am_lib_libCppUTest_a_OBJECTS = \ lib_libCppUTest_a-CommandLineArguments.$(OBJEXT) \ lib_libCppUTest_a-CommandLineTestRunner.$(OBJEXT) \ lib_libCppUTest_a-JUnitTestOutput.$(OBJEXT) \ lib_libCppUTest_a-MemoryLeakDetector.$(OBJEXT) \ lib_libCppUTest_a-MemoryLeakWarningPlugin.$(OBJEXT) \ lib_libCppUTest_a-SimpleString.$(OBJEXT) \ lib_libCppUTest_a-SimpleMutex.$(OBJEXT) \ lib_libCppUTest_a-TestFailure.$(OBJEXT) \ lib_libCppUTest_a-TestFilter.$(OBJEXT) \ lib_libCppUTest_a-TestHarness_c.$(OBJEXT) \ lib_libCppUTest_a-TestMemoryAllocator.$(OBJEXT) \ lib_libCppUTest_a-TestOutput.$(OBJEXT) \ lib_libCppUTest_a-TestPlugin.$(OBJEXT) \ lib_libCppUTest_a-TestRegistry.$(OBJEXT) \ lib_libCppUTest_a-TestResult.$(OBJEXT) \ lib_libCppUTest_a-Utest.$(OBJEXT) \ lib_libCppUTest_a-UtestPlatform.$(OBJEXT) lib_libCppUTest_a_OBJECTS = $(am_lib_libCppUTest_a_OBJECTS) am__dirstamp = $(am__leading_dot)dirstamp lib_libCppUTestExt_a_AR = $(AR) $(ARFLAGS) lib_libCppUTestExt_a_LIBADD = am_lib_libCppUTestExt_a_OBJECTS = \ lib_libCppUTestExt_a-CodeMemoryReportFormatter.$(OBJEXT) \ lib_libCppUTestExt_a-MemoryReportAllocator.$(OBJEXT) \ lib_libCppUTestExt_a-MemoryReporterPlugin.$(OBJEXT) \ lib_libCppUTestExt_a-MemoryReportFormatter.$(OBJEXT) \ lib_libCppUTestExt_a-MockActualCall.$(OBJEXT) \ lib_libCppUTestExt_a-MockExpectedCall.$(OBJEXT) \ lib_libCppUTestExt_a-MockExpectedCallsList.$(OBJEXT) \ lib_libCppUTestExt_a-MockFailure.$(OBJEXT) \ lib_libCppUTestExt_a-MockNamedValue.$(OBJEXT) \ lib_libCppUTestExt_a-MockSupport.$(OBJEXT) \ lib_libCppUTestExt_a-MockSupportPlugin.$(OBJEXT) \ lib_libCppUTestExt_a-MockSupport_c.$(OBJEXT) \ lib_libCppUTestExt_a-OrderedTest.$(OBJEXT) lib_libCppUTestExt_a_OBJECTS = $(am_lib_libCppUTestExt_a_OBJECTS) am__EXEEXT_1 = CppUTestTests$(EXEEXT) am__EXEEXT_2 = CppUTestExtTests$(EXEEXT) @INCLUDE_CPPUTEST_EXT_TRUE@am__EXEEXT_3 = $(am__EXEEXT_2) am_CppUTestExtTests_OBJECTS = CppUTestExtTests-AllTests.$(OBJEXT) \ CppUTestExtTests-CodeMemoryReportFormatterTest.$(OBJEXT) \ CppUTestExtTests-GMockTest.$(OBJEXT) \ CppUTestExtTests-GTest1Test.$(OBJEXT) \ CppUTestExtTests-GTest2ConvertorTest.$(OBJEXT) \ CppUTestExtTests-MemoryReportAllocatorTest.$(OBJEXT) \ CppUTestExtTests-MemoryReporterPluginTest.$(OBJEXT) \ CppUTestExtTests-MemoryReportFormatterTest.$(OBJEXT) \ CppUTestExtTests-MockActualCallTest.$(OBJEXT) \ CppUTestExtTests-MockCheatSheetTest.$(OBJEXT) \ CppUTestExtTests-MockExpectedCallTest.$(OBJEXT) \ CppUTestExtTests-MockExpectedFunctionsListTest.$(OBJEXT) \ CppUTestExtTests-MockFailureTest.$(OBJEXT) \ CppUTestExtTests-MockPluginTest.$(OBJEXT) \ CppUTestExtTests-MockSupportTest.$(OBJEXT) \ CppUTestExtTests-MockSupport_cTest.$(OBJEXT) \ CppUTestExtTests-MockSupport_cTestCFile.$(OBJEXT) \ CppUTestExtTests-OrderedTestTest.$(OBJEXT) CppUTestExtTests_OBJECTS = $(am_CppUTestExtTests_OBJECTS) am__DEPENDENCIES_1 = CppUTestExtTests_DEPENDENCIES = lib/libCppUTestExt.a lib/libCppUTest.a \ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = CppUTestExtTests_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) \ $(CppUTestExtTests_LDFLAGS) $(LDFLAGS) -o $@ am_CppUTestTests_OBJECTS = CppUTestTests-AllocationInCFile.$(OBJEXT) \ CppUTestTests-AllocationInCppFile.$(OBJEXT) \ CppUTestTests-AllocLetTestFree.$(OBJEXT) \ CppUTestTests-AllocLetTestFreeTest.$(OBJEXT) \ CppUTestTests-AllTests.$(OBJEXT) \ CppUTestTests-CheatSheetTest.$(OBJEXT) \ CppUTestTests-CommandLineArgumentsTest.$(OBJEXT) \ CppUTestTests-CommandLineTestRunnerTest.$(OBJEXT) \ CppUTestTests-JUnitOutputTest.$(OBJEXT) \ CppUTestTests-MemoryLeakDetectorTest.$(OBJEXT) \ CppUTestTests-MemoryLeakOperatorOverloadsTest.$(OBJEXT) \ CppUTestTests-MemoryLeakWarningTest.$(OBJEXT) \ CppUTestTests-PluginTest.$(OBJEXT) \ CppUTestTests-PreprocessorTest.$(OBJEXT) \ CppUTestTests-SetPluginTest.$(OBJEXT) \ CppUTestTests-SimpleStringTest.$(OBJEXT) \ CppUTestTests-SimpleMutexTest.$(OBJEXT) \ CppUTestTests-TestFailureNaNTest.$(OBJEXT) \ CppUTestTests-TestFailureTest.$(OBJEXT) \ CppUTestTests-TestFilterTest.$(OBJEXT) \ CppUTestTests-TestHarness_cTest.$(OBJEXT) \ CppUTestTests-TestHarness_cTestCFile.$(OBJEXT) \ CppUTestTests-TestInstallerTest.$(OBJEXT) \ CppUTestTests-TestMemoryAllocatorTest.$(OBJEXT) \ CppUTestTests-TestOutputTest.$(OBJEXT) \ CppUTestTests-TestRegistryTest.$(OBJEXT) \ CppUTestTests-TestResultTest.$(OBJEXT) \ CppUTestTests-TestUTestMacro.$(OBJEXT) \ CppUTestTests-UtestTest.$(OBJEXT) \ CppUTestTests-UtestPlatformTest.$(OBJEXT) CppUTestTests_OBJECTS = $(am_CppUTestTests_OBJECTS) CppUTestTests_DEPENDENCIES = lib/libCppUTest.a $(am__DEPENDENCIES_1) CppUTestTests_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) $(CppUTestTests_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = 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) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(lib_libCppUTest_a_SOURCES) $(lib_libCppUTestExt_a_SOURCES) \ $(CppUTestExtTests_SOURCES) $(CppUTestTests_SOURCES) DIST_SOURCES = $(lib_libCppUTest_a_SOURCES) \ $(lib_libCppUTestExt_a_SOURCES) $(CppUTestExtTests_SOURCES) \ $(CppUTestTests_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(pkgconfig_DATA) am__include_cpputestext_HEADERS_DIST = include/CppUTestExt/GMock.h \ include/CppUTestExt/GTest.h \ include/CppUTestExt/GTestConvertor.h \ include/CppUTestExt/MemoryReportAllocator.h \ include/CppUTestExt/MemoryReporterPlugin.h \ include/CppUTestExt/MemoryReportFormatter.h \ include/CppUTestExt/MockActualCall.h \ include/CppUTestExt/MockCheckedActualCall.h \ include/CppUTestExt/MockCheckedExpectedCall.h \ include/CppUTestExt/MockExpectedCall.h \ include/CppUTestExt/MockExpectedCallsList.h \ include/CppUTestExt/MockFailure.h \ include/CppUTestExt/MockNamedValue.h \ include/CppUTestExt/MockSupport.h \ include/CppUTestExt/MockSupportPlugin.h \ include/CppUTestExt/MockSupport_c.h \ include/CppUTestExt/OrderedTest.h HEADERS = $(include_cpputest_HEADERS) $(include_cpputestext_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope AM_RECURSIVE_TARGETS = cscope check recheck am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) 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__post_remove_distdir = $(am__remove_distdir) DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip 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@ ALL_FILES_IN_GIT = @ALL_FILES_IN_GIT@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPUTEST_ADDITIONAL_CFLAGS = @CPPUTEST_ADDITIONAL_CFLAGS@ CPPUTEST_ADDITIONAL_CPPFLAGS = @CPPUTEST_ADDITIONAL_CPPFLAGS@ CPPUTEST_ADDITIONAL_CXXFLAGS = @CPPUTEST_ADDITIONAL_CXXFLAGS@ CPPUTEST_CFLAGS = @CPPUTEST_CFLAGS@ CPPUTEST_CPPFLAGS = @CPPUTEST_CPPFLAGS@ CPPUTEST_CXXFLAGS = @CPPUTEST_CXXFLAGS@ CPPUTEST_HAS_CLANG = @CPPUTEST_HAS_CLANG@ CPPUTEST_HAS_DASH = @CPPUTEST_HAS_DASH@ CPPUTEST_HAS_GCC = @CPPUTEST_HAS_GCC@ CPPUTEST_HAS_LCOV = @CPPUTEST_HAS_LCOV@ CPPUTEST_HAS_VALGRIND = @CPPUTEST_HAS_VALGRIND@ CPPUTEST_LDADD = @CPPUTEST_LDADD@ CPPUTEST_LDFLAGS = @CPPUTEST_LDFLAGS@ CPPUTEST_ON_MACOSX = @CPPUTEST_ON_MACOSX@ CPP_PLATFORM = @CPP_PLATFORM@ 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@ GMOCK_HOME = @GMOCK_HOME@ GREP = @GREP@ INCLUDE_CPPUTEST_EXT = @INCLUDE_CPPUTEST_EXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MOSTLYCLEANFILES = @MOSTLYCLEANFILES@ 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@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ 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@ acx_pthread_config = @acx_pthread_config@ 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@ 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@ ACLOCAL_AMFLAGS = -I m4 CPPUTEST_TESTS = CppUTestTests CPPUTESTEXT_TESTS = CppUTestExtTests EXTRA_LIBRARIES = lib/libCppUTestExt.a lib_LIBRARIES = lib/libCppUTest.a $(am__append_1) # check_PROGRAMS += GTestTests TESTS = $(check_PROGRAMS) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = cpputest.pc EXTRA_DIST = \ cpputest.pc.in \ $(ALL_FILES_IN_GIT) lib_libCppUTest_a_CPPFLAGS = $(AM_CPPFLAGS) $(CPPUTEST_CPPFLAGS) $(CPPUTEST_ADDITIONAL_CPPFLAGS) lib_libCppUTest_a_CFLAGS = $(AM_CFLAGS) $(CPPUTEST_CFLAGS) $(CPPUTEST_ADDITIONAL_CFLAGS) lib_libCppUTest_a_CXXFLAGS = $(AM_CXXFLAGS) $(CPPUTEST_CXXFLAGS) $(CPPUTEST_ADDITIONAL_CXXFLAGS) lib_libCppUTest_a_SOURCES = \ src/CppUTest/CommandLineArguments.cpp \ src/CppUTest/CommandLineTestRunner.cpp \ src/CppUTest/JUnitTestOutput.cpp \ src/CppUTest/MemoryLeakDetector.cpp \ src/CppUTest/MemoryLeakWarningPlugin.cpp \ src/CppUTest/SimpleString.cpp \ src/CppUTest/SimpleMutex.cpp \ src/CppUTest/TestFailure.cpp \ src/CppUTest/TestFilter.cpp \ src/CppUTest/TestHarness_c.cpp \ src/CppUTest/TestMemoryAllocator.cpp \ src/CppUTest/TestOutput.cpp \ src/CppUTest/TestPlugin.cpp \ src/CppUTest/TestRegistry.cpp \ src/CppUTest/TestResult.cpp \ src/CppUTest/Utest.cpp \ src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp include_cpputestdir = $(includedir)/CppUTest include_cpputest_HEADERS = \ include/CppUTest/CommandLineArguments.h \ include/CppUTest/CommandLineTestRunner.h \ include/CppUTest/CppUTestConfig.h \ include/CppUTest/JUnitTestOutput.h \ include/CppUTest/MemoryLeakDetector.h \ include/CppUTest/MemoryLeakDetectorMallocMacros.h \ include/CppUTest/MemoryLeakDetectorNewMacros.h \ include/CppUTest/MemoryLeakWarningPlugin.h \ include/CppUTest/PlatformSpecificFunctions.h \ include/CppUTest/PlatformSpecificFunctions_c.h \ include/CppUTest/SimpleString.h \ include/CppUTest/SimpleMutex.h \ include/CppUTest/StandardCLibrary.h \ include/CppUTest/TestFailure.h \ include/CppUTest/TestFilter.h \ include/CppUTest/TestHarness.h \ include/CppUTest/TestHarness_c.h \ include/CppUTest/TestMemoryAllocator.h \ include/CppUTest/TestOutput.h \ include/CppUTest/TestPlugin.h \ include/CppUTest/TestRegistry.h \ include/CppUTest/TestResult.h \ include/CppUTest/TestTestingFixture.h \ include/CppUTest/Utest.h \ include/CppUTest/UtestMacros.h lib_libCppUTestExt_a_CPPFLAGS = $(lib_libCppUTest_a_CPPFLAGS) lib_libCppUTestExt_a_CFLAGS = $(lib_libCppUTest_a_CFLAGS) lib_libCppUTestExt_a_CXXFLAGS = $(lib_libCppUTest_a_CXXFLAGS) lib_libCppUTestExt_a_SOURCES = \ src/CppUTestExt/CodeMemoryReportFormatter.cpp \ src/CppUTestExt/MemoryReportAllocator.cpp \ src/CppUTestExt/MemoryReporterPlugin.cpp \ src/CppUTestExt/MemoryReportFormatter.cpp \ src/CppUTestExt/MockActualCall.cpp \ src/CppUTestExt/MockExpectedCall.cpp \ src/CppUTestExt/MockExpectedCallsList.cpp \ src/CppUTestExt/MockFailure.cpp \ src/CppUTestExt/MockNamedValue.cpp \ src/CppUTestExt/MockSupport.cpp \ src/CppUTestExt/MockSupportPlugin.cpp \ src/CppUTestExt/MockSupport_c.cpp \ src/CppUTestExt/OrderedTest.cpp @INCLUDE_CPPUTEST_EXT_TRUE@include_cpputestextdir = $(includedir)/CppUTestExt @INCLUDE_CPPUTEST_EXT_TRUE@include_cpputestext_HEADERS = \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/GMock.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/GTest.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/GTestConvertor.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MemoryReportAllocator.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MemoryReporterPlugin.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MemoryReportFormatter.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockActualCall.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockCheckedActualCall.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockCheckedExpectedCall.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockExpectedCall.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockExpectedCallsList.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockFailure.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockNamedValue.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockSupport.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockSupportPlugin.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockSupport_c.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/OrderedTest.h CppUTestTests_CPPFLAGS = $(lib_libCppUTest_a_CPPFLAGS) CppUTestTests_CFLAGS = $(lib_libCppUTest_a_CFLAGS) CppUTestTests_CXXFLAGS = $(lib_libCppUTest_a_CXXFLAGS) CppUTestTests_LDADD = lib/libCppUTest.a $(CPPUTEST_LDADD) CppUTestTests_LDFLAGS = $(AM_LDFLAGS) $(CPPUTEST_LDFLAGS) $(CPPUTEST_ADDITIONAL_LDFLAGS) CppUTestTests_SOURCES = \ tests/AllocationInCFile.c \ tests/AllocationInCppFile.cpp \ tests/AllocLetTestFree.c \ tests/AllocLetTestFreeTest.cpp \ tests/AllTests.cpp \ tests/CheatSheetTest.cpp \ tests/CommandLineArgumentsTest.cpp \ tests/CommandLineTestRunnerTest.cpp \ tests/JUnitOutputTest.cpp \ tests/MemoryLeakDetectorTest.cpp \ tests/MemoryLeakOperatorOverloadsTest.cpp \ tests/MemoryLeakWarningTest.cpp \ tests/PluginTest.cpp \ tests/PreprocessorTest.cpp \ tests/SetPluginTest.cpp \ tests/SimpleStringTest.cpp \ tests/SimpleMutexTest.cpp \ tests/TestFailureNaNTest.cpp \ tests/TestFailureTest.cpp \ tests/TestFilterTest.cpp \ tests/TestHarness_cTest.cpp \ tests/TestHarness_cTestCFile.c \ tests/TestInstallerTest.cpp \ tests/TestMemoryAllocatorTest.cpp \ tests/TestOutputTest.cpp \ tests/TestRegistryTest.cpp \ tests/TestResultTest.cpp \ tests/TestUTestMacro.cpp \ tests/UtestTest.cpp \ tests/UtestPlatformTest.cpp CppUTestExtTests_CPPFLAGS = $(lib_libCppUTestExt_a_CPPFLAGS) CppUTestExtTests_CFLAGS = $(lib_libCppUTestExt_a_CFLAGS) CppUTestExtTests_CXXFLAGS = $(lib_libCppUTestExt_a_CXXFLAGS) CppUTestExtTests_LDADD = lib/libCppUTestExt.a lib/libCppUTest.a $(CPPUTEST_LDADD) CppUTestExtTests_LDFLAGS = $(CppUTestTests_LDFLAGS) CppUTestExtTests_SOURCES = \ tests/CppUTestExt/AllTests.cpp \ tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp \ tests/CppUTestExt/GMockTest.cpp \ tests/CppUTestExt/GTest1Test.cpp \ tests/CppUTestExt/GTest2ConvertorTest.cpp \ tests/CppUTestExt/MemoryReportAllocatorTest.cpp \ tests/CppUTestExt/MemoryReporterPluginTest.cpp \ tests/CppUTestExt/MemoryReportFormatterTest.cpp \ tests/CppUTestExt/MockActualCallTest.cpp \ tests/CppUTestExt/MockCheatSheetTest.cpp \ tests/CppUTestExt/MockExpectedCallTest.cpp \ tests/CppUTestExt/MockExpectedFunctionsListTest.cpp \ tests/CppUTestExt/MockFailureTest.cpp \ tests/CppUTestExt/MockPluginTest.cpp \ tests/CppUTestExt/MockSupportTest.cpp \ tests/CppUTestExt/MockSupport_cTest.cpp \ tests/CppUTestExt/MockSupport_cTestCFile.c \ tests/CppUTestExt/OrderedTestTest.cpp #GTestTests_CPPFLAGS = $(lib_libCppUTestExt_a_CPPFLAGS) #GTestTests_CFLAGS = $(lib_libCppUTestExt_a_CFLAGS) #GTestTests_CXXFLAGS = $(lib_libCppUTestExt_a_CXXFLAGS) -DCPPUTEST_USE_MEM_LEAK_DETECTION=0 -DGMOCK_RENAME_MAIN=1 -D_THREAD_SAFE -DGTEST_HAS_PTHREAD=1 #GTestTests_LDADD = lib/libCppUTestExt.a lib/libCppUTest.a $(CPPUTEST_LDADD) #GTestTests_LDFLAGS = $(CppUTestTests_LDFLAGS) #GTestTests_SOURCES = \ # $(GMOCK_HOME)/test/gmock-spec-builders_test.cc \ # tests/CppUTestExt/AllTests.cpp RUN_CPPUTEST_TESTS = ./$(CPPUTEST_TESTS) RUN_CPPUTESTEXT_TESTS = ./$(CPPUTESTEXT_TESTS) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu 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: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 cpputest.pc: $(top_builddir)/config.status $(srcdir)/cpputest.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-libLIBRARIES: $(lib_LIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LIBRARIES)'; 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 " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \ $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; } @$(POST_INSTALL) @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ if test -f $$p; then \ $(am__strip_dir) \ echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \ ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \ else :; fi; \ done uninstall-libLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir) clean-libLIBRARIES: -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) lib/$(am__dirstamp): @$(MKDIR_P) lib @: > lib/$(am__dirstamp) lib/libCppUTest.a: $(lib_libCppUTest_a_OBJECTS) $(lib_libCppUTest_a_DEPENDENCIES) $(EXTRA_lib_libCppUTest_a_DEPENDENCIES) lib/$(am__dirstamp) $(AM_V_at)-rm -f lib/libCppUTest.a $(AM_V_AR)$(lib_libCppUTest_a_AR) lib/libCppUTest.a $(lib_libCppUTest_a_OBJECTS) $(lib_libCppUTest_a_LIBADD) $(AM_V_at)$(RANLIB) lib/libCppUTest.a lib/libCppUTestExt.a: $(lib_libCppUTestExt_a_OBJECTS) $(lib_libCppUTestExt_a_DEPENDENCIES) $(EXTRA_lib_libCppUTestExt_a_DEPENDENCIES) lib/$(am__dirstamp) $(AM_V_at)-rm -f lib/libCppUTestExt.a $(AM_V_AR)$(lib_libCppUTestExt_a_AR) lib/libCppUTestExt.a $(lib_libCppUTestExt_a_OBJECTS) $(lib_libCppUTestExt_a_LIBADD) $(AM_V_at)$(RANLIB) lib/libCppUTestExt.a 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 CppUTestExtTests$(EXEEXT): $(CppUTestExtTests_OBJECTS) $(CppUTestExtTests_DEPENDENCIES) $(EXTRA_CppUTestExtTests_DEPENDENCIES) @rm -f CppUTestExtTests$(EXEEXT) $(AM_V_CXXLD)$(CppUTestExtTests_LINK) $(CppUTestExtTests_OBJECTS) $(CppUTestExtTests_LDADD) $(LIBS) CppUTestTests$(EXEEXT): $(CppUTestTests_OBJECTS) $(CppUTestTests_DEPENDENCIES) $(EXTRA_CppUTestTests_DEPENDENCIES) @rm -f CppUTestTests$(EXEEXT) $(AM_V_CXXLD)$(CppUTestTests_LINK) $(CppUTestTests_OBJECTS) $(CppUTestTests_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-AllTests.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-CodeMemoryReportFormatterTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-GMockTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-GTest1Test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MockExpectedFunctionsListTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MockFailureTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MockPluginTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MockSupportTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-AllTests.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-AllocLetTestFree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-AllocationInCFile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-AllocationInCppFile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-CheatSheetTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-JUnitOutputTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-MemoryLeakOperatorOverloadsTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-PluginTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-PreprocessorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-SetPluginTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-SimpleMutexTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-SimpleStringTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestFailureTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestFilterTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestHarness_cTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestInstallerTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestOutputTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestRegistryTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestResultTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-TestUTestMacro.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-UtestPlatformTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUTestTests-UtestTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-SimpleString.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-TestFailure.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-TestFilter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-TestOutput.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-TestResult.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-Utest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< CppUTestExtTests-MockSupport_cTestCFile.o: tests/CppUTestExt/MockSupport_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -MT CppUTestExtTests-MockSupport_cTestCFile.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Tpo -c -o CppUTestExtTests-MockSupport_cTestCFile.o `test -f 'tests/CppUTestExt/MockSupport_cTestCFile.c' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupport_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Tpo $(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTestExt/MockSupport_cTestCFile.c' object='CppUTestExtTests-MockSupport_cTestCFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -c -o CppUTestExtTests-MockSupport_cTestCFile.o `test -f 'tests/CppUTestExt/MockSupport_cTestCFile.c' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupport_cTestCFile.c CppUTestExtTests-MockSupport_cTestCFile.obj: tests/CppUTestExt/MockSupport_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -MT CppUTestExtTests-MockSupport_cTestCFile.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Tpo -c -o CppUTestExtTests-MockSupport_cTestCFile.obj `if test -f 'tests/CppUTestExt/MockSupport_cTestCFile.c'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupport_cTestCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupport_cTestCFile.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Tpo $(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTestExt/MockSupport_cTestCFile.c' object='CppUTestExtTests-MockSupport_cTestCFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -c -o CppUTestExtTests-MockSupport_cTestCFile.obj `if test -f 'tests/CppUTestExt/MockSupport_cTestCFile.c'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupport_cTestCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupport_cTestCFile.c'; fi` CppUTestTests-AllocationInCFile.o: tests/AllocationInCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT CppUTestTests-AllocationInCFile.o -MD -MP -MF $(DEPDIR)/CppUTestTests-AllocationInCFile.Tpo -c -o CppUTestTests-AllocationInCFile.o `test -f 'tests/AllocationInCFile.c' || echo '$(srcdir)/'`tests/AllocationInCFile.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-AllocationInCFile.Tpo $(DEPDIR)/CppUTestTests-AllocationInCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/AllocationInCFile.c' object='CppUTestTests-AllocationInCFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o CppUTestTests-AllocationInCFile.o `test -f 'tests/AllocationInCFile.c' || echo '$(srcdir)/'`tests/AllocationInCFile.c CppUTestTests-AllocationInCFile.obj: tests/AllocationInCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT CppUTestTests-AllocationInCFile.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-AllocationInCFile.Tpo -c -o CppUTestTests-AllocationInCFile.obj `if test -f 'tests/AllocationInCFile.c'; then $(CYGPATH_W) 'tests/AllocationInCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/AllocationInCFile.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-AllocationInCFile.Tpo $(DEPDIR)/CppUTestTests-AllocationInCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/AllocationInCFile.c' object='CppUTestTests-AllocationInCFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o CppUTestTests-AllocationInCFile.obj `if test -f 'tests/AllocationInCFile.c'; then $(CYGPATH_W) 'tests/AllocationInCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/AllocationInCFile.c'; fi` CppUTestTests-AllocLetTestFree.o: tests/AllocLetTestFree.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT CppUTestTests-AllocLetTestFree.o -MD -MP -MF $(DEPDIR)/CppUTestTests-AllocLetTestFree.Tpo -c -o CppUTestTests-AllocLetTestFree.o `test -f 'tests/AllocLetTestFree.c' || echo '$(srcdir)/'`tests/AllocLetTestFree.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-AllocLetTestFree.Tpo $(DEPDIR)/CppUTestTests-AllocLetTestFree.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/AllocLetTestFree.c' object='CppUTestTests-AllocLetTestFree.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o CppUTestTests-AllocLetTestFree.o `test -f 'tests/AllocLetTestFree.c' || echo '$(srcdir)/'`tests/AllocLetTestFree.c CppUTestTests-AllocLetTestFree.obj: tests/AllocLetTestFree.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT CppUTestTests-AllocLetTestFree.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-AllocLetTestFree.Tpo -c -o CppUTestTests-AllocLetTestFree.obj `if test -f 'tests/AllocLetTestFree.c'; then $(CYGPATH_W) 'tests/AllocLetTestFree.c'; else $(CYGPATH_W) '$(srcdir)/tests/AllocLetTestFree.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-AllocLetTestFree.Tpo $(DEPDIR)/CppUTestTests-AllocLetTestFree.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/AllocLetTestFree.c' object='CppUTestTests-AllocLetTestFree.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o CppUTestTests-AllocLetTestFree.obj `if test -f 'tests/AllocLetTestFree.c'; then $(CYGPATH_W) 'tests/AllocLetTestFree.c'; else $(CYGPATH_W) '$(srcdir)/tests/AllocLetTestFree.c'; fi` CppUTestTests-TestHarness_cTestCFile.o: tests/TestHarness_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT CppUTestTests-TestHarness_cTestCFile.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Tpo -c -o CppUTestTests-TestHarness_cTestCFile.o `test -f 'tests/TestHarness_cTestCFile.c' || echo '$(srcdir)/'`tests/TestHarness_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Tpo $(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/TestHarness_cTestCFile.c' object='CppUTestTests-TestHarness_cTestCFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o CppUTestTests-TestHarness_cTestCFile.o `test -f 'tests/TestHarness_cTestCFile.c' || echo '$(srcdir)/'`tests/TestHarness_cTestCFile.c CppUTestTests-TestHarness_cTestCFile.obj: tests/TestHarness_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT CppUTestTests-TestHarness_cTestCFile.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Tpo -c -o CppUTestTests-TestHarness_cTestCFile.obj `if test -f 'tests/TestHarness_cTestCFile.c'; then $(CYGPATH_W) 'tests/TestHarness_cTestCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/TestHarness_cTestCFile.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Tpo $(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/TestHarness_cTestCFile.c' object='CppUTestTests-TestHarness_cTestCFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o CppUTestTests-TestHarness_cTestCFile.obj `if test -f 'tests/TestHarness_cTestCFile.c'; then $(CYGPATH_W) 'tests/TestHarness_cTestCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/TestHarness_cTestCFile.c'; fi` .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< lib_libCppUTest_a-CommandLineArguments.o: src/CppUTest/CommandLineArguments.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-CommandLineArguments.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Tpo -c -o lib_libCppUTest_a-CommandLineArguments.o `test -f 'src/CppUTest/CommandLineArguments.cpp' || echo '$(srcdir)/'`src/CppUTest/CommandLineArguments.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Tpo $(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/CommandLineArguments.cpp' object='lib_libCppUTest_a-CommandLineArguments.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-CommandLineArguments.o `test -f 'src/CppUTest/CommandLineArguments.cpp' || echo '$(srcdir)/'`src/CppUTest/CommandLineArguments.cpp lib_libCppUTest_a-CommandLineArguments.obj: src/CppUTest/CommandLineArguments.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-CommandLineArguments.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Tpo -c -o lib_libCppUTest_a-CommandLineArguments.obj `if test -f 'src/CppUTest/CommandLineArguments.cpp'; then $(CYGPATH_W) 'src/CppUTest/CommandLineArguments.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/CommandLineArguments.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Tpo $(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/CommandLineArguments.cpp' object='lib_libCppUTest_a-CommandLineArguments.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-CommandLineArguments.obj `if test -f 'src/CppUTest/CommandLineArguments.cpp'; then $(CYGPATH_W) 'src/CppUTest/CommandLineArguments.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/CommandLineArguments.cpp'; fi` lib_libCppUTest_a-CommandLineTestRunner.o: src/CppUTest/CommandLineTestRunner.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-CommandLineTestRunner.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Tpo -c -o lib_libCppUTest_a-CommandLineTestRunner.o `test -f 'src/CppUTest/CommandLineTestRunner.cpp' || echo '$(srcdir)/'`src/CppUTest/CommandLineTestRunner.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Tpo $(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/CommandLineTestRunner.cpp' object='lib_libCppUTest_a-CommandLineTestRunner.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-CommandLineTestRunner.o `test -f 'src/CppUTest/CommandLineTestRunner.cpp' || echo '$(srcdir)/'`src/CppUTest/CommandLineTestRunner.cpp lib_libCppUTest_a-CommandLineTestRunner.obj: src/CppUTest/CommandLineTestRunner.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-CommandLineTestRunner.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Tpo -c -o lib_libCppUTest_a-CommandLineTestRunner.obj `if test -f 'src/CppUTest/CommandLineTestRunner.cpp'; then $(CYGPATH_W) 'src/CppUTest/CommandLineTestRunner.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/CommandLineTestRunner.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Tpo $(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/CommandLineTestRunner.cpp' object='lib_libCppUTest_a-CommandLineTestRunner.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-CommandLineTestRunner.obj `if test -f 'src/CppUTest/CommandLineTestRunner.cpp'; then $(CYGPATH_W) 'src/CppUTest/CommandLineTestRunner.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/CommandLineTestRunner.cpp'; fi` lib_libCppUTest_a-JUnitTestOutput.o: src/CppUTest/JUnitTestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-JUnitTestOutput.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Tpo -c -o lib_libCppUTest_a-JUnitTestOutput.o `test -f 'src/CppUTest/JUnitTestOutput.cpp' || echo '$(srcdir)/'`src/CppUTest/JUnitTestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Tpo $(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/JUnitTestOutput.cpp' object='lib_libCppUTest_a-JUnitTestOutput.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-JUnitTestOutput.o `test -f 'src/CppUTest/JUnitTestOutput.cpp' || echo '$(srcdir)/'`src/CppUTest/JUnitTestOutput.cpp lib_libCppUTest_a-JUnitTestOutput.obj: src/CppUTest/JUnitTestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-JUnitTestOutput.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Tpo -c -o lib_libCppUTest_a-JUnitTestOutput.obj `if test -f 'src/CppUTest/JUnitTestOutput.cpp'; then $(CYGPATH_W) 'src/CppUTest/JUnitTestOutput.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/JUnitTestOutput.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Tpo $(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/JUnitTestOutput.cpp' object='lib_libCppUTest_a-JUnitTestOutput.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-JUnitTestOutput.obj `if test -f 'src/CppUTest/JUnitTestOutput.cpp'; then $(CYGPATH_W) 'src/CppUTest/JUnitTestOutput.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/JUnitTestOutput.cpp'; fi` lib_libCppUTest_a-MemoryLeakDetector.o: src/CppUTest/MemoryLeakDetector.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-MemoryLeakDetector.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Tpo -c -o lib_libCppUTest_a-MemoryLeakDetector.o `test -f 'src/CppUTest/MemoryLeakDetector.cpp' || echo '$(srcdir)/'`src/CppUTest/MemoryLeakDetector.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Tpo $(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/MemoryLeakDetector.cpp' object='lib_libCppUTest_a-MemoryLeakDetector.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-MemoryLeakDetector.o `test -f 'src/CppUTest/MemoryLeakDetector.cpp' || echo '$(srcdir)/'`src/CppUTest/MemoryLeakDetector.cpp lib_libCppUTest_a-MemoryLeakDetector.obj: src/CppUTest/MemoryLeakDetector.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-MemoryLeakDetector.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Tpo -c -o lib_libCppUTest_a-MemoryLeakDetector.obj `if test -f 'src/CppUTest/MemoryLeakDetector.cpp'; then $(CYGPATH_W) 'src/CppUTest/MemoryLeakDetector.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/MemoryLeakDetector.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Tpo $(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/MemoryLeakDetector.cpp' object='lib_libCppUTest_a-MemoryLeakDetector.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-MemoryLeakDetector.obj `if test -f 'src/CppUTest/MemoryLeakDetector.cpp'; then $(CYGPATH_W) 'src/CppUTest/MemoryLeakDetector.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/MemoryLeakDetector.cpp'; fi` lib_libCppUTest_a-MemoryLeakWarningPlugin.o: src/CppUTest/MemoryLeakWarningPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-MemoryLeakWarningPlugin.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Tpo -c -o lib_libCppUTest_a-MemoryLeakWarningPlugin.o `test -f 'src/CppUTest/MemoryLeakWarningPlugin.cpp' || echo '$(srcdir)/'`src/CppUTest/MemoryLeakWarningPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Tpo $(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/MemoryLeakWarningPlugin.cpp' object='lib_libCppUTest_a-MemoryLeakWarningPlugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-MemoryLeakWarningPlugin.o `test -f 'src/CppUTest/MemoryLeakWarningPlugin.cpp' || echo '$(srcdir)/'`src/CppUTest/MemoryLeakWarningPlugin.cpp lib_libCppUTest_a-MemoryLeakWarningPlugin.obj: src/CppUTest/MemoryLeakWarningPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-MemoryLeakWarningPlugin.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Tpo -c -o lib_libCppUTest_a-MemoryLeakWarningPlugin.obj `if test -f 'src/CppUTest/MemoryLeakWarningPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTest/MemoryLeakWarningPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/MemoryLeakWarningPlugin.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Tpo $(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/MemoryLeakWarningPlugin.cpp' object='lib_libCppUTest_a-MemoryLeakWarningPlugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-MemoryLeakWarningPlugin.obj `if test -f 'src/CppUTest/MemoryLeakWarningPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTest/MemoryLeakWarningPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/MemoryLeakWarningPlugin.cpp'; fi` lib_libCppUTest_a-SimpleString.o: src/CppUTest/SimpleString.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-SimpleString.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-SimpleString.Tpo -c -o lib_libCppUTest_a-SimpleString.o `test -f 'src/CppUTest/SimpleString.cpp' || echo '$(srcdir)/'`src/CppUTest/SimpleString.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-SimpleString.Tpo $(DEPDIR)/lib_libCppUTest_a-SimpleString.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/SimpleString.cpp' object='lib_libCppUTest_a-SimpleString.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-SimpleString.o `test -f 'src/CppUTest/SimpleString.cpp' || echo '$(srcdir)/'`src/CppUTest/SimpleString.cpp lib_libCppUTest_a-SimpleString.obj: src/CppUTest/SimpleString.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-SimpleString.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-SimpleString.Tpo -c -o lib_libCppUTest_a-SimpleString.obj `if test -f 'src/CppUTest/SimpleString.cpp'; then $(CYGPATH_W) 'src/CppUTest/SimpleString.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/SimpleString.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-SimpleString.Tpo $(DEPDIR)/lib_libCppUTest_a-SimpleString.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/SimpleString.cpp' object='lib_libCppUTest_a-SimpleString.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-SimpleString.obj `if test -f 'src/CppUTest/SimpleString.cpp'; then $(CYGPATH_W) 'src/CppUTest/SimpleString.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/SimpleString.cpp'; fi` lib_libCppUTest_a-SimpleMutex.o: src/CppUTest/SimpleMutex.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-SimpleMutex.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Tpo -c -o lib_libCppUTest_a-SimpleMutex.o `test -f 'src/CppUTest/SimpleMutex.cpp' || echo '$(srcdir)/'`src/CppUTest/SimpleMutex.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Tpo $(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/SimpleMutex.cpp' object='lib_libCppUTest_a-SimpleMutex.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-SimpleMutex.o `test -f 'src/CppUTest/SimpleMutex.cpp' || echo '$(srcdir)/'`src/CppUTest/SimpleMutex.cpp lib_libCppUTest_a-SimpleMutex.obj: src/CppUTest/SimpleMutex.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-SimpleMutex.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Tpo -c -o lib_libCppUTest_a-SimpleMutex.obj `if test -f 'src/CppUTest/SimpleMutex.cpp'; then $(CYGPATH_W) 'src/CppUTest/SimpleMutex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/SimpleMutex.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Tpo $(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/SimpleMutex.cpp' object='lib_libCppUTest_a-SimpleMutex.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-SimpleMutex.obj `if test -f 'src/CppUTest/SimpleMutex.cpp'; then $(CYGPATH_W) 'src/CppUTest/SimpleMutex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/SimpleMutex.cpp'; fi` lib_libCppUTest_a-TestFailure.o: src/CppUTest/TestFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestFailure.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestFailure.Tpo -c -o lib_libCppUTest_a-TestFailure.o `test -f 'src/CppUTest/TestFailure.cpp' || echo '$(srcdir)/'`src/CppUTest/TestFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestFailure.Tpo $(DEPDIR)/lib_libCppUTest_a-TestFailure.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestFailure.cpp' object='lib_libCppUTest_a-TestFailure.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestFailure.o `test -f 'src/CppUTest/TestFailure.cpp' || echo '$(srcdir)/'`src/CppUTest/TestFailure.cpp lib_libCppUTest_a-TestFailure.obj: src/CppUTest/TestFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestFailure.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestFailure.Tpo -c -o lib_libCppUTest_a-TestFailure.obj `if test -f 'src/CppUTest/TestFailure.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestFailure.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestFailure.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestFailure.Tpo $(DEPDIR)/lib_libCppUTest_a-TestFailure.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestFailure.cpp' object='lib_libCppUTest_a-TestFailure.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestFailure.obj `if test -f 'src/CppUTest/TestFailure.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestFailure.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestFailure.cpp'; fi` lib_libCppUTest_a-TestFilter.o: src/CppUTest/TestFilter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestFilter.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestFilter.Tpo -c -o lib_libCppUTest_a-TestFilter.o `test -f 'src/CppUTest/TestFilter.cpp' || echo '$(srcdir)/'`src/CppUTest/TestFilter.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestFilter.Tpo $(DEPDIR)/lib_libCppUTest_a-TestFilter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestFilter.cpp' object='lib_libCppUTest_a-TestFilter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestFilter.o `test -f 'src/CppUTest/TestFilter.cpp' || echo '$(srcdir)/'`src/CppUTest/TestFilter.cpp lib_libCppUTest_a-TestFilter.obj: src/CppUTest/TestFilter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestFilter.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestFilter.Tpo -c -o lib_libCppUTest_a-TestFilter.obj `if test -f 'src/CppUTest/TestFilter.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestFilter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestFilter.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestFilter.Tpo $(DEPDIR)/lib_libCppUTest_a-TestFilter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestFilter.cpp' object='lib_libCppUTest_a-TestFilter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestFilter.obj `if test -f 'src/CppUTest/TestFilter.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestFilter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestFilter.cpp'; fi` lib_libCppUTest_a-TestHarness_c.o: src/CppUTest/TestHarness_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestHarness_c.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Tpo -c -o lib_libCppUTest_a-TestHarness_c.o `test -f 'src/CppUTest/TestHarness_c.cpp' || echo '$(srcdir)/'`src/CppUTest/TestHarness_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Tpo $(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestHarness_c.cpp' object='lib_libCppUTest_a-TestHarness_c.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestHarness_c.o `test -f 'src/CppUTest/TestHarness_c.cpp' || echo '$(srcdir)/'`src/CppUTest/TestHarness_c.cpp lib_libCppUTest_a-TestHarness_c.obj: src/CppUTest/TestHarness_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestHarness_c.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Tpo -c -o lib_libCppUTest_a-TestHarness_c.obj `if test -f 'src/CppUTest/TestHarness_c.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestHarness_c.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestHarness_c.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Tpo $(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestHarness_c.cpp' object='lib_libCppUTest_a-TestHarness_c.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestHarness_c.obj `if test -f 'src/CppUTest/TestHarness_c.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestHarness_c.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestHarness_c.cpp'; fi` lib_libCppUTest_a-TestMemoryAllocator.o: src/CppUTest/TestMemoryAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestMemoryAllocator.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Tpo -c -o lib_libCppUTest_a-TestMemoryAllocator.o `test -f 'src/CppUTest/TestMemoryAllocator.cpp' || echo '$(srcdir)/'`src/CppUTest/TestMemoryAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Tpo $(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestMemoryAllocator.cpp' object='lib_libCppUTest_a-TestMemoryAllocator.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestMemoryAllocator.o `test -f 'src/CppUTest/TestMemoryAllocator.cpp' || echo '$(srcdir)/'`src/CppUTest/TestMemoryAllocator.cpp lib_libCppUTest_a-TestMemoryAllocator.obj: src/CppUTest/TestMemoryAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestMemoryAllocator.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Tpo -c -o lib_libCppUTest_a-TestMemoryAllocator.obj `if test -f 'src/CppUTest/TestMemoryAllocator.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestMemoryAllocator.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestMemoryAllocator.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Tpo $(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestMemoryAllocator.cpp' object='lib_libCppUTest_a-TestMemoryAllocator.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestMemoryAllocator.obj `if test -f 'src/CppUTest/TestMemoryAllocator.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestMemoryAllocator.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestMemoryAllocator.cpp'; fi` lib_libCppUTest_a-TestOutput.o: src/CppUTest/TestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestOutput.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestOutput.Tpo -c -o lib_libCppUTest_a-TestOutput.o `test -f 'src/CppUTest/TestOutput.cpp' || echo '$(srcdir)/'`src/CppUTest/TestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestOutput.Tpo $(DEPDIR)/lib_libCppUTest_a-TestOutput.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestOutput.cpp' object='lib_libCppUTest_a-TestOutput.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestOutput.o `test -f 'src/CppUTest/TestOutput.cpp' || echo '$(srcdir)/'`src/CppUTest/TestOutput.cpp lib_libCppUTest_a-TestOutput.obj: src/CppUTest/TestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestOutput.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestOutput.Tpo -c -o lib_libCppUTest_a-TestOutput.obj `if test -f 'src/CppUTest/TestOutput.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestOutput.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestOutput.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestOutput.Tpo $(DEPDIR)/lib_libCppUTest_a-TestOutput.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestOutput.cpp' object='lib_libCppUTest_a-TestOutput.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestOutput.obj `if test -f 'src/CppUTest/TestOutput.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestOutput.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestOutput.cpp'; fi` lib_libCppUTest_a-TestPlugin.o: src/CppUTest/TestPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestPlugin.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestPlugin.Tpo -c -o lib_libCppUTest_a-TestPlugin.o `test -f 'src/CppUTest/TestPlugin.cpp' || echo '$(srcdir)/'`src/CppUTest/TestPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestPlugin.Tpo $(DEPDIR)/lib_libCppUTest_a-TestPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestPlugin.cpp' object='lib_libCppUTest_a-TestPlugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestPlugin.o `test -f 'src/CppUTest/TestPlugin.cpp' || echo '$(srcdir)/'`src/CppUTest/TestPlugin.cpp lib_libCppUTest_a-TestPlugin.obj: src/CppUTest/TestPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestPlugin.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestPlugin.Tpo -c -o lib_libCppUTest_a-TestPlugin.obj `if test -f 'src/CppUTest/TestPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestPlugin.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestPlugin.Tpo $(DEPDIR)/lib_libCppUTest_a-TestPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestPlugin.cpp' object='lib_libCppUTest_a-TestPlugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestPlugin.obj `if test -f 'src/CppUTest/TestPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestPlugin.cpp'; fi` lib_libCppUTest_a-TestRegistry.o: src/CppUTest/TestRegistry.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestRegistry.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestRegistry.Tpo -c -o lib_libCppUTest_a-TestRegistry.o `test -f 'src/CppUTest/TestRegistry.cpp' || echo '$(srcdir)/'`src/CppUTest/TestRegistry.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestRegistry.Tpo $(DEPDIR)/lib_libCppUTest_a-TestRegistry.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestRegistry.cpp' object='lib_libCppUTest_a-TestRegistry.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestRegistry.o `test -f 'src/CppUTest/TestRegistry.cpp' || echo '$(srcdir)/'`src/CppUTest/TestRegistry.cpp lib_libCppUTest_a-TestRegistry.obj: src/CppUTest/TestRegistry.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestRegistry.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestRegistry.Tpo -c -o lib_libCppUTest_a-TestRegistry.obj `if test -f 'src/CppUTest/TestRegistry.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestRegistry.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestRegistry.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestRegistry.Tpo $(DEPDIR)/lib_libCppUTest_a-TestRegistry.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestRegistry.cpp' object='lib_libCppUTest_a-TestRegistry.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestRegistry.obj `if test -f 'src/CppUTest/TestRegistry.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestRegistry.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestRegistry.cpp'; fi` lib_libCppUTest_a-TestResult.o: src/CppUTest/TestResult.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestResult.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestResult.Tpo -c -o lib_libCppUTest_a-TestResult.o `test -f 'src/CppUTest/TestResult.cpp' || echo '$(srcdir)/'`src/CppUTest/TestResult.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestResult.Tpo $(DEPDIR)/lib_libCppUTest_a-TestResult.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestResult.cpp' object='lib_libCppUTest_a-TestResult.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestResult.o `test -f 'src/CppUTest/TestResult.cpp' || echo '$(srcdir)/'`src/CppUTest/TestResult.cpp lib_libCppUTest_a-TestResult.obj: src/CppUTest/TestResult.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-TestResult.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-TestResult.Tpo -c -o lib_libCppUTest_a-TestResult.obj `if test -f 'src/CppUTest/TestResult.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestResult.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestResult.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-TestResult.Tpo $(DEPDIR)/lib_libCppUTest_a-TestResult.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestResult.cpp' object='lib_libCppUTest_a-TestResult.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-TestResult.obj `if test -f 'src/CppUTest/TestResult.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestResult.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestResult.cpp'; fi` lib_libCppUTest_a-Utest.o: src/CppUTest/Utest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-Utest.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-Utest.Tpo -c -o lib_libCppUTest_a-Utest.o `test -f 'src/CppUTest/Utest.cpp' || echo '$(srcdir)/'`src/CppUTest/Utest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-Utest.Tpo $(DEPDIR)/lib_libCppUTest_a-Utest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/Utest.cpp' object='lib_libCppUTest_a-Utest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-Utest.o `test -f 'src/CppUTest/Utest.cpp' || echo '$(srcdir)/'`src/CppUTest/Utest.cpp lib_libCppUTest_a-Utest.obj: src/CppUTest/Utest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-Utest.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-Utest.Tpo -c -o lib_libCppUTest_a-Utest.obj `if test -f 'src/CppUTest/Utest.cpp'; then $(CYGPATH_W) 'src/CppUTest/Utest.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/Utest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-Utest.Tpo $(DEPDIR)/lib_libCppUTest_a-Utest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/Utest.cpp' object='lib_libCppUTest_a-Utest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-Utest.obj `if test -f 'src/CppUTest/Utest.cpp'; then $(CYGPATH_W) 'src/CppUTest/Utest.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/Utest.cpp'; fi` lib_libCppUTest_a-UtestPlatform.o: src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-UtestPlatform.o -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Tpo -c -o lib_libCppUTest_a-UtestPlatform.o `test -f 'src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp' || echo '$(srcdir)/'`src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Tpo $(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp' object='lib_libCppUTest_a-UtestPlatform.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-UtestPlatform.o `test -f 'src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp' || echo '$(srcdir)/'`src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp lib_libCppUTest_a-UtestPlatform.obj: src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTest_a-UtestPlatform.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Tpo -c -o lib_libCppUTest_a-UtestPlatform.obj `if test -f 'src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp'; then $(CYGPATH_W) 'src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp'; else $(CYGPATH_W) '$(srcdir)/src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Tpo $(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp' object='lib_libCppUTest_a-UtestPlatform.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTest_a-UtestPlatform.obj `if test -f 'src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp'; then $(CYGPATH_W) 'src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp'; else $(CYGPATH_W) '$(srcdir)/src/Platforms/$(CPP_PLATFORM)/UtestPlatform.cpp'; fi` lib_libCppUTestExt_a-CodeMemoryReportFormatter.o: src/CppUTestExt/CodeMemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-CodeMemoryReportFormatter.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Tpo -c -o lib_libCppUTestExt_a-CodeMemoryReportFormatter.o `test -f 'src/CppUTestExt/CodeMemoryReportFormatter.cpp' || echo '$(srcdir)/'`src/CppUTestExt/CodeMemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Tpo $(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/CodeMemoryReportFormatter.cpp' object='lib_libCppUTestExt_a-CodeMemoryReportFormatter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-CodeMemoryReportFormatter.o `test -f 'src/CppUTestExt/CodeMemoryReportFormatter.cpp' || echo '$(srcdir)/'`src/CppUTestExt/CodeMemoryReportFormatter.cpp lib_libCppUTestExt_a-CodeMemoryReportFormatter.obj: src/CppUTestExt/CodeMemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-CodeMemoryReportFormatter.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Tpo -c -o lib_libCppUTestExt_a-CodeMemoryReportFormatter.obj `if test -f 'src/CppUTestExt/CodeMemoryReportFormatter.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/CodeMemoryReportFormatter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/CodeMemoryReportFormatter.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Tpo $(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/CodeMemoryReportFormatter.cpp' object='lib_libCppUTestExt_a-CodeMemoryReportFormatter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-CodeMemoryReportFormatter.obj `if test -f 'src/CppUTestExt/CodeMemoryReportFormatter.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/CodeMemoryReportFormatter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/CodeMemoryReportFormatter.cpp'; fi` lib_libCppUTestExt_a-MemoryReportAllocator.o: src/CppUTestExt/MemoryReportAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MemoryReportAllocator.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Tpo -c -o lib_libCppUTestExt_a-MemoryReportAllocator.o `test -f 'src/CppUTestExt/MemoryReportAllocator.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReportAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReportAllocator.cpp' object='lib_libCppUTestExt_a-MemoryReportAllocator.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MemoryReportAllocator.o `test -f 'src/CppUTestExt/MemoryReportAllocator.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReportAllocator.cpp lib_libCppUTestExt_a-MemoryReportAllocator.obj: src/CppUTestExt/MemoryReportAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MemoryReportAllocator.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Tpo -c -o lib_libCppUTestExt_a-MemoryReportAllocator.obj `if test -f 'src/CppUTestExt/MemoryReportAllocator.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReportAllocator.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReportAllocator.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReportAllocator.cpp' object='lib_libCppUTestExt_a-MemoryReportAllocator.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MemoryReportAllocator.obj `if test -f 'src/CppUTestExt/MemoryReportAllocator.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReportAllocator.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReportAllocator.cpp'; fi` lib_libCppUTestExt_a-MemoryReporterPlugin.o: src/CppUTestExt/MemoryReporterPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MemoryReporterPlugin.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Tpo -c -o lib_libCppUTestExt_a-MemoryReporterPlugin.o `test -f 'src/CppUTestExt/MemoryReporterPlugin.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReporterPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReporterPlugin.cpp' object='lib_libCppUTestExt_a-MemoryReporterPlugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MemoryReporterPlugin.o `test -f 'src/CppUTestExt/MemoryReporterPlugin.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReporterPlugin.cpp lib_libCppUTestExt_a-MemoryReporterPlugin.obj: src/CppUTestExt/MemoryReporterPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MemoryReporterPlugin.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Tpo -c -o lib_libCppUTestExt_a-MemoryReporterPlugin.obj `if test -f 'src/CppUTestExt/MemoryReporterPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReporterPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReporterPlugin.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReporterPlugin.cpp' object='lib_libCppUTestExt_a-MemoryReporterPlugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MemoryReporterPlugin.obj `if test -f 'src/CppUTestExt/MemoryReporterPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReporterPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReporterPlugin.cpp'; fi` lib_libCppUTestExt_a-MemoryReportFormatter.o: src/CppUTestExt/MemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MemoryReportFormatter.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Tpo -c -o lib_libCppUTestExt_a-MemoryReportFormatter.o `test -f 'src/CppUTestExt/MemoryReportFormatter.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReportFormatter.cpp' object='lib_libCppUTestExt_a-MemoryReportFormatter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MemoryReportFormatter.o `test -f 'src/CppUTestExt/MemoryReportFormatter.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReportFormatter.cpp lib_libCppUTestExt_a-MemoryReportFormatter.obj: src/CppUTestExt/MemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MemoryReportFormatter.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Tpo -c -o lib_libCppUTestExt_a-MemoryReportFormatter.obj `if test -f 'src/CppUTestExt/MemoryReportFormatter.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReportFormatter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReportFormatter.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReportFormatter.cpp' object='lib_libCppUTestExt_a-MemoryReportFormatter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MemoryReportFormatter.obj `if test -f 'src/CppUTestExt/MemoryReportFormatter.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReportFormatter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReportFormatter.cpp'; fi` lib_libCppUTestExt_a-MockActualCall.o: src/CppUTestExt/MockActualCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockActualCall.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Tpo -c -o lib_libCppUTestExt_a-MockActualCall.o `test -f 'src/CppUTestExt/MockActualCall.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockActualCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockActualCall.cpp' object='lib_libCppUTestExt_a-MockActualCall.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockActualCall.o `test -f 'src/CppUTestExt/MockActualCall.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockActualCall.cpp lib_libCppUTestExt_a-MockActualCall.obj: src/CppUTestExt/MockActualCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockActualCall.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Tpo -c -o lib_libCppUTestExt_a-MockActualCall.obj `if test -f 'src/CppUTestExt/MockActualCall.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockActualCall.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockActualCall.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockActualCall.cpp' object='lib_libCppUTestExt_a-MockActualCall.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockActualCall.obj `if test -f 'src/CppUTestExt/MockActualCall.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockActualCall.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockActualCall.cpp'; fi` lib_libCppUTestExt_a-MockExpectedCall.o: src/CppUTestExt/MockExpectedCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockExpectedCall.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Tpo -c -o lib_libCppUTestExt_a-MockExpectedCall.o `test -f 'src/CppUTestExt/MockExpectedCall.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockExpectedCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockExpectedCall.cpp' object='lib_libCppUTestExt_a-MockExpectedCall.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockExpectedCall.o `test -f 'src/CppUTestExt/MockExpectedCall.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockExpectedCall.cpp lib_libCppUTestExt_a-MockExpectedCall.obj: src/CppUTestExt/MockExpectedCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockExpectedCall.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Tpo -c -o lib_libCppUTestExt_a-MockExpectedCall.obj `if test -f 'src/CppUTestExt/MockExpectedCall.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockExpectedCall.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockExpectedCall.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockExpectedCall.cpp' object='lib_libCppUTestExt_a-MockExpectedCall.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockExpectedCall.obj `if test -f 'src/CppUTestExt/MockExpectedCall.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockExpectedCall.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockExpectedCall.cpp'; fi` lib_libCppUTestExt_a-MockExpectedCallsList.o: src/CppUTestExt/MockExpectedCallsList.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockExpectedCallsList.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Tpo -c -o lib_libCppUTestExt_a-MockExpectedCallsList.o `test -f 'src/CppUTestExt/MockExpectedCallsList.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockExpectedCallsList.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockExpectedCallsList.cpp' object='lib_libCppUTestExt_a-MockExpectedCallsList.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockExpectedCallsList.o `test -f 'src/CppUTestExt/MockExpectedCallsList.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockExpectedCallsList.cpp lib_libCppUTestExt_a-MockExpectedCallsList.obj: src/CppUTestExt/MockExpectedCallsList.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockExpectedCallsList.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Tpo -c -o lib_libCppUTestExt_a-MockExpectedCallsList.obj `if test -f 'src/CppUTestExt/MockExpectedCallsList.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockExpectedCallsList.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockExpectedCallsList.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockExpectedCallsList.cpp' object='lib_libCppUTestExt_a-MockExpectedCallsList.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockExpectedCallsList.obj `if test -f 'src/CppUTestExt/MockExpectedCallsList.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockExpectedCallsList.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockExpectedCallsList.cpp'; fi` lib_libCppUTestExt_a-MockFailure.o: src/CppUTestExt/MockFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockFailure.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Tpo -c -o lib_libCppUTestExt_a-MockFailure.o `test -f 'src/CppUTestExt/MockFailure.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockFailure.cpp' object='lib_libCppUTestExt_a-MockFailure.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockFailure.o `test -f 'src/CppUTestExt/MockFailure.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockFailure.cpp lib_libCppUTestExt_a-MockFailure.obj: src/CppUTestExt/MockFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockFailure.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Tpo -c -o lib_libCppUTestExt_a-MockFailure.obj `if test -f 'src/CppUTestExt/MockFailure.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockFailure.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockFailure.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockFailure.cpp' object='lib_libCppUTestExt_a-MockFailure.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockFailure.obj `if test -f 'src/CppUTestExt/MockFailure.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockFailure.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockFailure.cpp'; fi` lib_libCppUTestExt_a-MockNamedValue.o: src/CppUTestExt/MockNamedValue.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockNamedValue.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Tpo -c -o lib_libCppUTestExt_a-MockNamedValue.o `test -f 'src/CppUTestExt/MockNamedValue.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockNamedValue.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockNamedValue.cpp' object='lib_libCppUTestExt_a-MockNamedValue.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockNamedValue.o `test -f 'src/CppUTestExt/MockNamedValue.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockNamedValue.cpp lib_libCppUTestExt_a-MockNamedValue.obj: src/CppUTestExt/MockNamedValue.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockNamedValue.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Tpo -c -o lib_libCppUTestExt_a-MockNamedValue.obj `if test -f 'src/CppUTestExt/MockNamedValue.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockNamedValue.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockNamedValue.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockNamedValue.cpp' object='lib_libCppUTestExt_a-MockNamedValue.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockNamedValue.obj `if test -f 'src/CppUTestExt/MockNamedValue.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockNamedValue.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockNamedValue.cpp'; fi` lib_libCppUTestExt_a-MockSupport.o: src/CppUTestExt/MockSupport.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockSupport.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Tpo -c -o lib_libCppUTestExt_a-MockSupport.o `test -f 'src/CppUTestExt/MockSupport.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupport.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupport.cpp' object='lib_libCppUTestExt_a-MockSupport.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockSupport.o `test -f 'src/CppUTestExt/MockSupport.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupport.cpp lib_libCppUTestExt_a-MockSupport.obj: src/CppUTestExt/MockSupport.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockSupport.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Tpo -c -o lib_libCppUTestExt_a-MockSupport.obj `if test -f 'src/CppUTestExt/MockSupport.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupport.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupport.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupport.cpp' object='lib_libCppUTestExt_a-MockSupport.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockSupport.obj `if test -f 'src/CppUTestExt/MockSupport.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupport.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupport.cpp'; fi` lib_libCppUTestExt_a-MockSupportPlugin.o: src/CppUTestExt/MockSupportPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockSupportPlugin.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Tpo -c -o lib_libCppUTestExt_a-MockSupportPlugin.o `test -f 'src/CppUTestExt/MockSupportPlugin.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupportPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupportPlugin.cpp' object='lib_libCppUTestExt_a-MockSupportPlugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockSupportPlugin.o `test -f 'src/CppUTestExt/MockSupportPlugin.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupportPlugin.cpp lib_libCppUTestExt_a-MockSupportPlugin.obj: src/CppUTestExt/MockSupportPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockSupportPlugin.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Tpo -c -o lib_libCppUTestExt_a-MockSupportPlugin.obj `if test -f 'src/CppUTestExt/MockSupportPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupportPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupportPlugin.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupportPlugin.cpp' object='lib_libCppUTestExt_a-MockSupportPlugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockSupportPlugin.obj `if test -f 'src/CppUTestExt/MockSupportPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupportPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupportPlugin.cpp'; fi` lib_libCppUTestExt_a-MockSupport_c.o: src/CppUTestExt/MockSupport_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockSupport_c.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Tpo -c -o lib_libCppUTestExt_a-MockSupport_c.o `test -f 'src/CppUTestExt/MockSupport_c.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupport_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupport_c.cpp' object='lib_libCppUTestExt_a-MockSupport_c.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockSupport_c.o `test -f 'src/CppUTestExt/MockSupport_c.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupport_c.cpp lib_libCppUTestExt_a-MockSupport_c.obj: src/CppUTestExt/MockSupport_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-MockSupport_c.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Tpo -c -o lib_libCppUTestExt_a-MockSupport_c.obj `if test -f 'src/CppUTestExt/MockSupport_c.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupport_c.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupport_c.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Tpo $(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupport_c.cpp' object='lib_libCppUTestExt_a-MockSupport_c.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-MockSupport_c.obj `if test -f 'src/CppUTestExt/MockSupport_c.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupport_c.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupport_c.cpp'; fi` lib_libCppUTestExt_a-OrderedTest.o: src/CppUTestExt/OrderedTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-OrderedTest.o -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Tpo -c -o lib_libCppUTestExt_a-OrderedTest.o `test -f 'src/CppUTestExt/OrderedTest.cpp' || echo '$(srcdir)/'`src/CppUTestExt/OrderedTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Tpo $(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/OrderedTest.cpp' object='lib_libCppUTestExt_a-OrderedTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-OrderedTest.o `test -f 'src/CppUTestExt/OrderedTest.cpp' || echo '$(srcdir)/'`src/CppUTestExt/OrderedTest.cpp lib_libCppUTestExt_a-OrderedTest.obj: src/CppUTestExt/OrderedTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT lib_libCppUTestExt_a-OrderedTest.obj -MD -MP -MF $(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Tpo -c -o lib_libCppUTestExt_a-OrderedTest.obj `if test -f 'src/CppUTestExt/OrderedTest.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/OrderedTest.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/OrderedTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Tpo $(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/OrderedTest.cpp' object='lib_libCppUTestExt_a-OrderedTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o lib_libCppUTestExt_a-OrderedTest.obj `if test -f 'src/CppUTestExt/OrderedTest.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/OrderedTest.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/OrderedTest.cpp'; fi` CppUTestExtTests-AllTests.o: tests/CppUTestExt/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-AllTests.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-AllTests.Tpo -c -o CppUTestExtTests-AllTests.o `test -f 'tests/CppUTestExt/AllTests.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-AllTests.Tpo $(DEPDIR)/CppUTestExtTests-AllTests.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/AllTests.cpp' object='CppUTestExtTests-AllTests.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-AllTests.o `test -f 'tests/CppUTestExt/AllTests.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/AllTests.cpp CppUTestExtTests-AllTests.obj: tests/CppUTestExt/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-AllTests.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-AllTests.Tpo -c -o CppUTestExtTests-AllTests.obj `if test -f 'tests/CppUTestExt/AllTests.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/AllTests.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/AllTests.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-AllTests.Tpo $(DEPDIR)/CppUTestExtTests-AllTests.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/AllTests.cpp' object='CppUTestExtTests-AllTests.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-AllTests.obj `if test -f 'tests/CppUTestExt/AllTests.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/AllTests.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/AllTests.cpp'; fi` CppUTestExtTests-CodeMemoryReportFormatterTest.o: tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-CodeMemoryReportFormatterTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-CodeMemoryReportFormatterTest.Tpo -c -o CppUTestExtTests-CodeMemoryReportFormatterTest.o `test -f 'tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-CodeMemoryReportFormatterTest.Tpo $(DEPDIR)/CppUTestExtTests-CodeMemoryReportFormatterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp' object='CppUTestExtTests-CodeMemoryReportFormatterTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-CodeMemoryReportFormatterTest.o `test -f 'tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp CppUTestExtTests-CodeMemoryReportFormatterTest.obj: tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-CodeMemoryReportFormatterTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-CodeMemoryReportFormatterTest.Tpo -c -o CppUTestExtTests-CodeMemoryReportFormatterTest.obj `if test -f 'tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-CodeMemoryReportFormatterTest.Tpo $(DEPDIR)/CppUTestExtTests-CodeMemoryReportFormatterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp' object='CppUTestExtTests-CodeMemoryReportFormatterTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-CodeMemoryReportFormatterTest.obj `if test -f 'tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp'; fi` CppUTestExtTests-GMockTest.o: tests/CppUTestExt/GMockTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-GMockTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-GMockTest.Tpo -c -o CppUTestExtTests-GMockTest.o `test -f 'tests/CppUTestExt/GMockTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GMockTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-GMockTest.Tpo $(DEPDIR)/CppUTestExtTests-GMockTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GMockTest.cpp' object='CppUTestExtTests-GMockTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-GMockTest.o `test -f 'tests/CppUTestExt/GMockTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GMockTest.cpp CppUTestExtTests-GMockTest.obj: tests/CppUTestExt/GMockTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-GMockTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-GMockTest.Tpo -c -o CppUTestExtTests-GMockTest.obj `if test -f 'tests/CppUTestExt/GMockTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GMockTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GMockTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-GMockTest.Tpo $(DEPDIR)/CppUTestExtTests-GMockTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GMockTest.cpp' object='CppUTestExtTests-GMockTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-GMockTest.obj `if test -f 'tests/CppUTestExt/GMockTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GMockTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GMockTest.cpp'; fi` CppUTestExtTests-GTest1Test.o: tests/CppUTestExt/GTest1Test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-GTest1Test.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-GTest1Test.Tpo -c -o CppUTestExtTests-GTest1Test.o `test -f 'tests/CppUTestExt/GTest1Test.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GTest1Test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-GTest1Test.Tpo $(DEPDIR)/CppUTestExtTests-GTest1Test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GTest1Test.cpp' object='CppUTestExtTests-GTest1Test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-GTest1Test.o `test -f 'tests/CppUTestExt/GTest1Test.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GTest1Test.cpp CppUTestExtTests-GTest1Test.obj: tests/CppUTestExt/GTest1Test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-GTest1Test.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-GTest1Test.Tpo -c -o CppUTestExtTests-GTest1Test.obj `if test -f 'tests/CppUTestExt/GTest1Test.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GTest1Test.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GTest1Test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-GTest1Test.Tpo $(DEPDIR)/CppUTestExtTests-GTest1Test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GTest1Test.cpp' object='CppUTestExtTests-GTest1Test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-GTest1Test.obj `if test -f 'tests/CppUTestExt/GTest1Test.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GTest1Test.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GTest1Test.cpp'; fi` CppUTestExtTests-GTest2ConvertorTest.o: tests/CppUTestExt/GTest2ConvertorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-GTest2ConvertorTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Tpo -c -o CppUTestExtTests-GTest2ConvertorTest.o `test -f 'tests/CppUTestExt/GTest2ConvertorTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GTest2ConvertorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Tpo $(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GTest2ConvertorTest.cpp' object='CppUTestExtTests-GTest2ConvertorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-GTest2ConvertorTest.o `test -f 'tests/CppUTestExt/GTest2ConvertorTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GTest2ConvertorTest.cpp CppUTestExtTests-GTest2ConvertorTest.obj: tests/CppUTestExt/GTest2ConvertorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-GTest2ConvertorTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Tpo -c -o CppUTestExtTests-GTest2ConvertorTest.obj `if test -f 'tests/CppUTestExt/GTest2ConvertorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GTest2ConvertorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GTest2ConvertorTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Tpo $(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GTest2ConvertorTest.cpp' object='CppUTestExtTests-GTest2ConvertorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-GTest2ConvertorTest.obj `if test -f 'tests/CppUTestExt/GTest2ConvertorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GTest2ConvertorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GTest2ConvertorTest.cpp'; fi` CppUTestExtTests-MemoryReportAllocatorTest.o: tests/CppUTestExt/MemoryReportAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MemoryReportAllocatorTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Tpo -c -o CppUTestExtTests-MemoryReportAllocatorTest.o `test -f 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReportAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Tpo $(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReportAllocatorTest.cpp' object='CppUTestExtTests-MemoryReportAllocatorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MemoryReportAllocatorTest.o `test -f 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReportAllocatorTest.cpp CppUTestExtTests-MemoryReportAllocatorTest.obj: tests/CppUTestExt/MemoryReportAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MemoryReportAllocatorTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Tpo -c -o CppUTestExtTests-MemoryReportAllocatorTest.obj `if test -f 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Tpo $(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReportAllocatorTest.cpp' object='CppUTestExtTests-MemoryReportAllocatorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MemoryReportAllocatorTest.obj `if test -f 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; fi` CppUTestExtTests-MemoryReporterPluginTest.o: tests/CppUTestExt/MemoryReporterPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MemoryReporterPluginTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Tpo -c -o CppUTestExtTests-MemoryReporterPluginTest.o `test -f 'tests/CppUTestExt/MemoryReporterPluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReporterPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Tpo $(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReporterPluginTest.cpp' object='CppUTestExtTests-MemoryReporterPluginTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MemoryReporterPluginTest.o `test -f 'tests/CppUTestExt/MemoryReporterPluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReporterPluginTest.cpp CppUTestExtTests-MemoryReporterPluginTest.obj: tests/CppUTestExt/MemoryReporterPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MemoryReporterPluginTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Tpo -c -o CppUTestExtTests-MemoryReporterPluginTest.obj `if test -f 'tests/CppUTestExt/MemoryReporterPluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReporterPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReporterPluginTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Tpo $(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReporterPluginTest.cpp' object='CppUTestExtTests-MemoryReporterPluginTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MemoryReporterPluginTest.obj `if test -f 'tests/CppUTestExt/MemoryReporterPluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReporterPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReporterPluginTest.cpp'; fi` CppUTestExtTests-MemoryReportFormatterTest.o: tests/CppUTestExt/MemoryReportFormatterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MemoryReportFormatterTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Tpo -c -o CppUTestExtTests-MemoryReportFormatterTest.o `test -f 'tests/CppUTestExt/MemoryReportFormatterTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReportFormatterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Tpo $(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReportFormatterTest.cpp' object='CppUTestExtTests-MemoryReportFormatterTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MemoryReportFormatterTest.o `test -f 'tests/CppUTestExt/MemoryReportFormatterTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReportFormatterTest.cpp CppUTestExtTests-MemoryReportFormatterTest.obj: tests/CppUTestExt/MemoryReportFormatterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MemoryReportFormatterTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Tpo -c -o CppUTestExtTests-MemoryReportFormatterTest.obj `if test -f 'tests/CppUTestExt/MemoryReportFormatterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReportFormatterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReportFormatterTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Tpo $(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReportFormatterTest.cpp' object='CppUTestExtTests-MemoryReportFormatterTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MemoryReportFormatterTest.obj `if test -f 'tests/CppUTestExt/MemoryReportFormatterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReportFormatterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReportFormatterTest.cpp'; fi` CppUTestExtTests-MockActualCallTest.o: tests/CppUTestExt/MockActualCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockActualCallTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockActualCallTest.Tpo -c -o CppUTestExtTests-MockActualCallTest.o `test -f 'tests/CppUTestExt/MockActualCallTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockActualCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockActualCallTest.Tpo $(DEPDIR)/CppUTestExtTests-MockActualCallTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockActualCallTest.cpp' object='CppUTestExtTests-MockActualCallTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockActualCallTest.o `test -f 'tests/CppUTestExt/MockActualCallTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockActualCallTest.cpp CppUTestExtTests-MockActualCallTest.obj: tests/CppUTestExt/MockActualCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockActualCallTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockActualCallTest.Tpo -c -o CppUTestExtTests-MockActualCallTest.obj `if test -f 'tests/CppUTestExt/MockActualCallTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockActualCallTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockActualCallTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockActualCallTest.Tpo $(DEPDIR)/CppUTestExtTests-MockActualCallTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockActualCallTest.cpp' object='CppUTestExtTests-MockActualCallTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockActualCallTest.obj `if test -f 'tests/CppUTestExt/MockActualCallTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockActualCallTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockActualCallTest.cpp'; fi` CppUTestExtTests-MockCheatSheetTest.o: tests/CppUTestExt/MockCheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockCheatSheetTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Tpo -c -o CppUTestExtTests-MockCheatSheetTest.o `test -f 'tests/CppUTestExt/MockCheatSheetTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockCheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Tpo $(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockCheatSheetTest.cpp' object='CppUTestExtTests-MockCheatSheetTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockCheatSheetTest.o `test -f 'tests/CppUTestExt/MockCheatSheetTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockCheatSheetTest.cpp CppUTestExtTests-MockCheatSheetTest.obj: tests/CppUTestExt/MockCheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockCheatSheetTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Tpo -c -o CppUTestExtTests-MockCheatSheetTest.obj `if test -f 'tests/CppUTestExt/MockCheatSheetTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockCheatSheetTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockCheatSheetTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Tpo $(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockCheatSheetTest.cpp' object='CppUTestExtTests-MockCheatSheetTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockCheatSheetTest.obj `if test -f 'tests/CppUTestExt/MockCheatSheetTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockCheatSheetTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockCheatSheetTest.cpp'; fi` CppUTestExtTests-MockExpectedCallTest.o: tests/CppUTestExt/MockExpectedCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockExpectedCallTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Tpo -c -o CppUTestExtTests-MockExpectedCallTest.o `test -f 'tests/CppUTestExt/MockExpectedCallTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockExpectedCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Tpo $(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockExpectedCallTest.cpp' object='CppUTestExtTests-MockExpectedCallTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockExpectedCallTest.o `test -f 'tests/CppUTestExt/MockExpectedCallTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockExpectedCallTest.cpp CppUTestExtTests-MockExpectedCallTest.obj: tests/CppUTestExt/MockExpectedCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockExpectedCallTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Tpo -c -o CppUTestExtTests-MockExpectedCallTest.obj `if test -f 'tests/CppUTestExt/MockExpectedCallTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockExpectedCallTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockExpectedCallTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Tpo $(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockExpectedCallTest.cpp' object='CppUTestExtTests-MockExpectedCallTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockExpectedCallTest.obj `if test -f 'tests/CppUTestExt/MockExpectedCallTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockExpectedCallTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockExpectedCallTest.cpp'; fi` CppUTestExtTests-MockExpectedFunctionsListTest.o: tests/CppUTestExt/MockExpectedFunctionsListTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockExpectedFunctionsListTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockExpectedFunctionsListTest.Tpo -c -o CppUTestExtTests-MockExpectedFunctionsListTest.o `test -f 'tests/CppUTestExt/MockExpectedFunctionsListTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockExpectedFunctionsListTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockExpectedFunctionsListTest.Tpo $(DEPDIR)/CppUTestExtTests-MockExpectedFunctionsListTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockExpectedFunctionsListTest.cpp' object='CppUTestExtTests-MockExpectedFunctionsListTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockExpectedFunctionsListTest.o `test -f 'tests/CppUTestExt/MockExpectedFunctionsListTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockExpectedFunctionsListTest.cpp CppUTestExtTests-MockExpectedFunctionsListTest.obj: tests/CppUTestExt/MockExpectedFunctionsListTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockExpectedFunctionsListTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockExpectedFunctionsListTest.Tpo -c -o CppUTestExtTests-MockExpectedFunctionsListTest.obj `if test -f 'tests/CppUTestExt/MockExpectedFunctionsListTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockExpectedFunctionsListTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockExpectedFunctionsListTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockExpectedFunctionsListTest.Tpo $(DEPDIR)/CppUTestExtTests-MockExpectedFunctionsListTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockExpectedFunctionsListTest.cpp' object='CppUTestExtTests-MockExpectedFunctionsListTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockExpectedFunctionsListTest.obj `if test -f 'tests/CppUTestExt/MockExpectedFunctionsListTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockExpectedFunctionsListTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockExpectedFunctionsListTest.cpp'; fi` CppUTestExtTests-MockFailureTest.o: tests/CppUTestExt/MockFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockFailureTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockFailureTest.Tpo -c -o CppUTestExtTests-MockFailureTest.o `test -f 'tests/CppUTestExt/MockFailureTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockFailureTest.Tpo $(DEPDIR)/CppUTestExtTests-MockFailureTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockFailureTest.cpp' object='CppUTestExtTests-MockFailureTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockFailureTest.o `test -f 'tests/CppUTestExt/MockFailureTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockFailureTest.cpp CppUTestExtTests-MockFailureTest.obj: tests/CppUTestExt/MockFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockFailureTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockFailureTest.Tpo -c -o CppUTestExtTests-MockFailureTest.obj `if test -f 'tests/CppUTestExt/MockFailureTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockFailureTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockFailureTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockFailureTest.Tpo $(DEPDIR)/CppUTestExtTests-MockFailureTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockFailureTest.cpp' object='CppUTestExtTests-MockFailureTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockFailureTest.obj `if test -f 'tests/CppUTestExt/MockFailureTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockFailureTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockFailureTest.cpp'; fi` CppUTestExtTests-MockPluginTest.o: tests/CppUTestExt/MockPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockPluginTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockPluginTest.Tpo -c -o CppUTestExtTests-MockPluginTest.o `test -f 'tests/CppUTestExt/MockPluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockPluginTest.Tpo $(DEPDIR)/CppUTestExtTests-MockPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockPluginTest.cpp' object='CppUTestExtTests-MockPluginTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockPluginTest.o `test -f 'tests/CppUTestExt/MockPluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockPluginTest.cpp CppUTestExtTests-MockPluginTest.obj: tests/CppUTestExt/MockPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockPluginTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockPluginTest.Tpo -c -o CppUTestExtTests-MockPluginTest.obj `if test -f 'tests/CppUTestExt/MockPluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockPluginTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockPluginTest.Tpo $(DEPDIR)/CppUTestExtTests-MockPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockPluginTest.cpp' object='CppUTestExtTests-MockPluginTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockPluginTest.obj `if test -f 'tests/CppUTestExt/MockPluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockPluginTest.cpp'; fi` CppUTestExtTests-MockSupportTest.o: tests/CppUTestExt/MockSupportTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockSupportTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockSupportTest.Tpo -c -o CppUTestExtTests-MockSupportTest.o `test -f 'tests/CppUTestExt/MockSupportTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupportTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockSupportTest.Tpo $(DEPDIR)/CppUTestExtTests-MockSupportTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockSupportTest.cpp' object='CppUTestExtTests-MockSupportTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockSupportTest.o `test -f 'tests/CppUTestExt/MockSupportTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupportTest.cpp CppUTestExtTests-MockSupportTest.obj: tests/CppUTestExt/MockSupportTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockSupportTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockSupportTest.Tpo -c -o CppUTestExtTests-MockSupportTest.obj `if test -f 'tests/CppUTestExt/MockSupportTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupportTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupportTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockSupportTest.Tpo $(DEPDIR)/CppUTestExtTests-MockSupportTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockSupportTest.cpp' object='CppUTestExtTests-MockSupportTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockSupportTest.obj `if test -f 'tests/CppUTestExt/MockSupportTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupportTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupportTest.cpp'; fi` CppUTestExtTests-MockSupport_cTest.o: tests/CppUTestExt/MockSupport_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockSupport_cTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Tpo -c -o CppUTestExtTests-MockSupport_cTest.o `test -f 'tests/CppUTestExt/MockSupport_cTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupport_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Tpo $(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockSupport_cTest.cpp' object='CppUTestExtTests-MockSupport_cTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockSupport_cTest.o `test -f 'tests/CppUTestExt/MockSupport_cTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupport_cTest.cpp CppUTestExtTests-MockSupport_cTest.obj: tests/CppUTestExt/MockSupport_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-MockSupport_cTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Tpo -c -o CppUTestExtTests-MockSupport_cTest.obj `if test -f 'tests/CppUTestExt/MockSupport_cTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupport_cTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupport_cTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Tpo $(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockSupport_cTest.cpp' object='CppUTestExtTests-MockSupport_cTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-MockSupport_cTest.obj `if test -f 'tests/CppUTestExt/MockSupport_cTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupport_cTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupport_cTest.cpp'; fi` CppUTestExtTests-OrderedTestTest.o: tests/CppUTestExt/OrderedTestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-OrderedTestTest.o -MD -MP -MF $(DEPDIR)/CppUTestExtTests-OrderedTestTest.Tpo -c -o CppUTestExtTests-OrderedTestTest.o `test -f 'tests/CppUTestExt/OrderedTestTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/OrderedTestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-OrderedTestTest.Tpo $(DEPDIR)/CppUTestExtTests-OrderedTestTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/OrderedTestTest.cpp' object='CppUTestExtTests-OrderedTestTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-OrderedTestTest.o `test -f 'tests/CppUTestExt/OrderedTestTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/OrderedTestTest.cpp CppUTestExtTests-OrderedTestTest.obj: tests/CppUTestExt/OrderedTestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestExtTests-OrderedTestTest.obj -MD -MP -MF $(DEPDIR)/CppUTestExtTests-OrderedTestTest.Tpo -c -o CppUTestExtTests-OrderedTestTest.obj `if test -f 'tests/CppUTestExt/OrderedTestTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/OrderedTestTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/OrderedTestTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestExtTests-OrderedTestTest.Tpo $(DEPDIR)/CppUTestExtTests-OrderedTestTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/OrderedTestTest.cpp' object='CppUTestExtTests-OrderedTestTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestExtTests-OrderedTestTest.obj `if test -f 'tests/CppUTestExt/OrderedTestTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/OrderedTestTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/OrderedTestTest.cpp'; fi` CppUTestTests-AllocationInCppFile.o: tests/AllocationInCppFile.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-AllocationInCppFile.o -MD -MP -MF $(DEPDIR)/CppUTestTests-AllocationInCppFile.Tpo -c -o CppUTestTests-AllocationInCppFile.o `test -f 'tests/AllocationInCppFile.cpp' || echo '$(srcdir)/'`tests/AllocationInCppFile.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-AllocationInCppFile.Tpo $(DEPDIR)/CppUTestTests-AllocationInCppFile.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/AllocationInCppFile.cpp' object='CppUTestTests-AllocationInCppFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-AllocationInCppFile.o `test -f 'tests/AllocationInCppFile.cpp' || echo '$(srcdir)/'`tests/AllocationInCppFile.cpp CppUTestTests-AllocationInCppFile.obj: tests/AllocationInCppFile.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-AllocationInCppFile.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-AllocationInCppFile.Tpo -c -o CppUTestTests-AllocationInCppFile.obj `if test -f 'tests/AllocationInCppFile.cpp'; then $(CYGPATH_W) 'tests/AllocationInCppFile.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/AllocationInCppFile.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-AllocationInCppFile.Tpo $(DEPDIR)/CppUTestTests-AllocationInCppFile.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/AllocationInCppFile.cpp' object='CppUTestTests-AllocationInCppFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-AllocationInCppFile.obj `if test -f 'tests/AllocationInCppFile.cpp'; then $(CYGPATH_W) 'tests/AllocationInCppFile.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/AllocationInCppFile.cpp'; fi` CppUTestTests-AllocLetTestFreeTest.o: tests/AllocLetTestFreeTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-AllocLetTestFreeTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Tpo -c -o CppUTestTests-AllocLetTestFreeTest.o `test -f 'tests/AllocLetTestFreeTest.cpp' || echo '$(srcdir)/'`tests/AllocLetTestFreeTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Tpo $(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/AllocLetTestFreeTest.cpp' object='CppUTestTests-AllocLetTestFreeTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-AllocLetTestFreeTest.o `test -f 'tests/AllocLetTestFreeTest.cpp' || echo '$(srcdir)/'`tests/AllocLetTestFreeTest.cpp CppUTestTests-AllocLetTestFreeTest.obj: tests/AllocLetTestFreeTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-AllocLetTestFreeTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Tpo -c -o CppUTestTests-AllocLetTestFreeTest.obj `if test -f 'tests/AllocLetTestFreeTest.cpp'; then $(CYGPATH_W) 'tests/AllocLetTestFreeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/AllocLetTestFreeTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Tpo $(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/AllocLetTestFreeTest.cpp' object='CppUTestTests-AllocLetTestFreeTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-AllocLetTestFreeTest.obj `if test -f 'tests/AllocLetTestFreeTest.cpp'; then $(CYGPATH_W) 'tests/AllocLetTestFreeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/AllocLetTestFreeTest.cpp'; fi` CppUTestTests-AllTests.o: tests/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-AllTests.o -MD -MP -MF $(DEPDIR)/CppUTestTests-AllTests.Tpo -c -o CppUTestTests-AllTests.o `test -f 'tests/AllTests.cpp' || echo '$(srcdir)/'`tests/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-AllTests.Tpo $(DEPDIR)/CppUTestTests-AllTests.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/AllTests.cpp' object='CppUTestTests-AllTests.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-AllTests.o `test -f 'tests/AllTests.cpp' || echo '$(srcdir)/'`tests/AllTests.cpp CppUTestTests-AllTests.obj: tests/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-AllTests.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-AllTests.Tpo -c -o CppUTestTests-AllTests.obj `if test -f 'tests/AllTests.cpp'; then $(CYGPATH_W) 'tests/AllTests.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/AllTests.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-AllTests.Tpo $(DEPDIR)/CppUTestTests-AllTests.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/AllTests.cpp' object='CppUTestTests-AllTests.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-AllTests.obj `if test -f 'tests/AllTests.cpp'; then $(CYGPATH_W) 'tests/AllTests.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/AllTests.cpp'; fi` CppUTestTests-CheatSheetTest.o: tests/CheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-CheatSheetTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-CheatSheetTest.Tpo -c -o CppUTestTests-CheatSheetTest.o `test -f 'tests/CheatSheetTest.cpp' || echo '$(srcdir)/'`tests/CheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-CheatSheetTest.Tpo $(DEPDIR)/CppUTestTests-CheatSheetTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CheatSheetTest.cpp' object='CppUTestTests-CheatSheetTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-CheatSheetTest.o `test -f 'tests/CheatSheetTest.cpp' || echo '$(srcdir)/'`tests/CheatSheetTest.cpp CppUTestTests-CheatSheetTest.obj: tests/CheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-CheatSheetTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-CheatSheetTest.Tpo -c -o CppUTestTests-CheatSheetTest.obj `if test -f 'tests/CheatSheetTest.cpp'; then $(CYGPATH_W) 'tests/CheatSheetTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CheatSheetTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-CheatSheetTest.Tpo $(DEPDIR)/CppUTestTests-CheatSheetTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CheatSheetTest.cpp' object='CppUTestTests-CheatSheetTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-CheatSheetTest.obj `if test -f 'tests/CheatSheetTest.cpp'; then $(CYGPATH_W) 'tests/CheatSheetTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CheatSheetTest.cpp'; fi` CppUTestTests-CommandLineArgumentsTest.o: tests/CommandLineArgumentsTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-CommandLineArgumentsTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Tpo -c -o CppUTestTests-CommandLineArgumentsTest.o `test -f 'tests/CommandLineArgumentsTest.cpp' || echo '$(srcdir)/'`tests/CommandLineArgumentsTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Tpo $(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CommandLineArgumentsTest.cpp' object='CppUTestTests-CommandLineArgumentsTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-CommandLineArgumentsTest.o `test -f 'tests/CommandLineArgumentsTest.cpp' || echo '$(srcdir)/'`tests/CommandLineArgumentsTest.cpp CppUTestTests-CommandLineArgumentsTest.obj: tests/CommandLineArgumentsTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-CommandLineArgumentsTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Tpo -c -o CppUTestTests-CommandLineArgumentsTest.obj `if test -f 'tests/CommandLineArgumentsTest.cpp'; then $(CYGPATH_W) 'tests/CommandLineArgumentsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CommandLineArgumentsTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Tpo $(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CommandLineArgumentsTest.cpp' object='CppUTestTests-CommandLineArgumentsTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-CommandLineArgumentsTest.obj `if test -f 'tests/CommandLineArgumentsTest.cpp'; then $(CYGPATH_W) 'tests/CommandLineArgumentsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CommandLineArgumentsTest.cpp'; fi` CppUTestTests-CommandLineTestRunnerTest.o: tests/CommandLineTestRunnerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-CommandLineTestRunnerTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Tpo -c -o CppUTestTests-CommandLineTestRunnerTest.o `test -f 'tests/CommandLineTestRunnerTest.cpp' || echo '$(srcdir)/'`tests/CommandLineTestRunnerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Tpo $(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CommandLineTestRunnerTest.cpp' object='CppUTestTests-CommandLineTestRunnerTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-CommandLineTestRunnerTest.o `test -f 'tests/CommandLineTestRunnerTest.cpp' || echo '$(srcdir)/'`tests/CommandLineTestRunnerTest.cpp CppUTestTests-CommandLineTestRunnerTest.obj: tests/CommandLineTestRunnerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-CommandLineTestRunnerTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Tpo -c -o CppUTestTests-CommandLineTestRunnerTest.obj `if test -f 'tests/CommandLineTestRunnerTest.cpp'; then $(CYGPATH_W) 'tests/CommandLineTestRunnerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CommandLineTestRunnerTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Tpo $(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CommandLineTestRunnerTest.cpp' object='CppUTestTests-CommandLineTestRunnerTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-CommandLineTestRunnerTest.obj `if test -f 'tests/CommandLineTestRunnerTest.cpp'; then $(CYGPATH_W) 'tests/CommandLineTestRunnerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CommandLineTestRunnerTest.cpp'; fi` CppUTestTests-JUnitOutputTest.o: tests/JUnitOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-JUnitOutputTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-JUnitOutputTest.Tpo -c -o CppUTestTests-JUnitOutputTest.o `test -f 'tests/JUnitOutputTest.cpp' || echo '$(srcdir)/'`tests/JUnitOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-JUnitOutputTest.Tpo $(DEPDIR)/CppUTestTests-JUnitOutputTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/JUnitOutputTest.cpp' object='CppUTestTests-JUnitOutputTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-JUnitOutputTest.o `test -f 'tests/JUnitOutputTest.cpp' || echo '$(srcdir)/'`tests/JUnitOutputTest.cpp CppUTestTests-JUnitOutputTest.obj: tests/JUnitOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-JUnitOutputTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-JUnitOutputTest.Tpo -c -o CppUTestTests-JUnitOutputTest.obj `if test -f 'tests/JUnitOutputTest.cpp'; then $(CYGPATH_W) 'tests/JUnitOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/JUnitOutputTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-JUnitOutputTest.Tpo $(DEPDIR)/CppUTestTests-JUnitOutputTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/JUnitOutputTest.cpp' object='CppUTestTests-JUnitOutputTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-JUnitOutputTest.obj `if test -f 'tests/JUnitOutputTest.cpp'; then $(CYGPATH_W) 'tests/JUnitOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/JUnitOutputTest.cpp'; fi` CppUTestTests-MemoryLeakDetectorTest.o: tests/MemoryLeakDetectorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-MemoryLeakDetectorTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Tpo -c -o CppUTestTests-MemoryLeakDetectorTest.o `test -f 'tests/MemoryLeakDetectorTest.cpp' || echo '$(srcdir)/'`tests/MemoryLeakDetectorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Tpo $(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/MemoryLeakDetectorTest.cpp' object='CppUTestTests-MemoryLeakDetectorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-MemoryLeakDetectorTest.o `test -f 'tests/MemoryLeakDetectorTest.cpp' || echo '$(srcdir)/'`tests/MemoryLeakDetectorTest.cpp CppUTestTests-MemoryLeakDetectorTest.obj: tests/MemoryLeakDetectorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-MemoryLeakDetectorTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Tpo -c -o CppUTestTests-MemoryLeakDetectorTest.obj `if test -f 'tests/MemoryLeakDetectorTest.cpp'; then $(CYGPATH_W) 'tests/MemoryLeakDetectorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/MemoryLeakDetectorTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Tpo $(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/MemoryLeakDetectorTest.cpp' object='CppUTestTests-MemoryLeakDetectorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-MemoryLeakDetectorTest.obj `if test -f 'tests/MemoryLeakDetectorTest.cpp'; then $(CYGPATH_W) 'tests/MemoryLeakDetectorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/MemoryLeakDetectorTest.cpp'; fi` CppUTestTests-MemoryLeakOperatorOverloadsTest.o: tests/MemoryLeakOperatorOverloadsTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-MemoryLeakOperatorOverloadsTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-MemoryLeakOperatorOverloadsTest.Tpo -c -o CppUTestTests-MemoryLeakOperatorOverloadsTest.o `test -f 'tests/MemoryLeakOperatorOverloadsTest.cpp' || echo '$(srcdir)/'`tests/MemoryLeakOperatorOverloadsTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-MemoryLeakOperatorOverloadsTest.Tpo $(DEPDIR)/CppUTestTests-MemoryLeakOperatorOverloadsTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/MemoryLeakOperatorOverloadsTest.cpp' object='CppUTestTests-MemoryLeakOperatorOverloadsTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-MemoryLeakOperatorOverloadsTest.o `test -f 'tests/MemoryLeakOperatorOverloadsTest.cpp' || echo '$(srcdir)/'`tests/MemoryLeakOperatorOverloadsTest.cpp CppUTestTests-MemoryLeakOperatorOverloadsTest.obj: tests/MemoryLeakOperatorOverloadsTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-MemoryLeakOperatorOverloadsTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-MemoryLeakOperatorOverloadsTest.Tpo -c -o CppUTestTests-MemoryLeakOperatorOverloadsTest.obj `if test -f 'tests/MemoryLeakOperatorOverloadsTest.cpp'; then $(CYGPATH_W) 'tests/MemoryLeakOperatorOverloadsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/MemoryLeakOperatorOverloadsTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-MemoryLeakOperatorOverloadsTest.Tpo $(DEPDIR)/CppUTestTests-MemoryLeakOperatorOverloadsTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/MemoryLeakOperatorOverloadsTest.cpp' object='CppUTestTests-MemoryLeakOperatorOverloadsTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-MemoryLeakOperatorOverloadsTest.obj `if test -f 'tests/MemoryLeakOperatorOverloadsTest.cpp'; then $(CYGPATH_W) 'tests/MemoryLeakOperatorOverloadsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/MemoryLeakOperatorOverloadsTest.cpp'; fi` CppUTestTests-MemoryLeakWarningTest.o: tests/MemoryLeakWarningTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-MemoryLeakWarningTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Tpo -c -o CppUTestTests-MemoryLeakWarningTest.o `test -f 'tests/MemoryLeakWarningTest.cpp' || echo '$(srcdir)/'`tests/MemoryLeakWarningTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Tpo $(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/MemoryLeakWarningTest.cpp' object='CppUTestTests-MemoryLeakWarningTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-MemoryLeakWarningTest.o `test -f 'tests/MemoryLeakWarningTest.cpp' || echo '$(srcdir)/'`tests/MemoryLeakWarningTest.cpp CppUTestTests-MemoryLeakWarningTest.obj: tests/MemoryLeakWarningTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-MemoryLeakWarningTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Tpo -c -o CppUTestTests-MemoryLeakWarningTest.obj `if test -f 'tests/MemoryLeakWarningTest.cpp'; then $(CYGPATH_W) 'tests/MemoryLeakWarningTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/MemoryLeakWarningTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Tpo $(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/MemoryLeakWarningTest.cpp' object='CppUTestTests-MemoryLeakWarningTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-MemoryLeakWarningTest.obj `if test -f 'tests/MemoryLeakWarningTest.cpp'; then $(CYGPATH_W) 'tests/MemoryLeakWarningTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/MemoryLeakWarningTest.cpp'; fi` CppUTestTests-PluginTest.o: tests/PluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-PluginTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-PluginTest.Tpo -c -o CppUTestTests-PluginTest.o `test -f 'tests/PluginTest.cpp' || echo '$(srcdir)/'`tests/PluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-PluginTest.Tpo $(DEPDIR)/CppUTestTests-PluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/PluginTest.cpp' object='CppUTestTests-PluginTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-PluginTest.o `test -f 'tests/PluginTest.cpp' || echo '$(srcdir)/'`tests/PluginTest.cpp CppUTestTests-PluginTest.obj: tests/PluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-PluginTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-PluginTest.Tpo -c -o CppUTestTests-PluginTest.obj `if test -f 'tests/PluginTest.cpp'; then $(CYGPATH_W) 'tests/PluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/PluginTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-PluginTest.Tpo $(DEPDIR)/CppUTestTests-PluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/PluginTest.cpp' object='CppUTestTests-PluginTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-PluginTest.obj `if test -f 'tests/PluginTest.cpp'; then $(CYGPATH_W) 'tests/PluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/PluginTest.cpp'; fi` CppUTestTests-PreprocessorTest.o: tests/PreprocessorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-PreprocessorTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-PreprocessorTest.Tpo -c -o CppUTestTests-PreprocessorTest.o `test -f 'tests/PreprocessorTest.cpp' || echo '$(srcdir)/'`tests/PreprocessorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-PreprocessorTest.Tpo $(DEPDIR)/CppUTestTests-PreprocessorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/PreprocessorTest.cpp' object='CppUTestTests-PreprocessorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-PreprocessorTest.o `test -f 'tests/PreprocessorTest.cpp' || echo '$(srcdir)/'`tests/PreprocessorTest.cpp CppUTestTests-PreprocessorTest.obj: tests/PreprocessorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-PreprocessorTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-PreprocessorTest.Tpo -c -o CppUTestTests-PreprocessorTest.obj `if test -f 'tests/PreprocessorTest.cpp'; then $(CYGPATH_W) 'tests/PreprocessorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/PreprocessorTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-PreprocessorTest.Tpo $(DEPDIR)/CppUTestTests-PreprocessorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/PreprocessorTest.cpp' object='CppUTestTests-PreprocessorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-PreprocessorTest.obj `if test -f 'tests/PreprocessorTest.cpp'; then $(CYGPATH_W) 'tests/PreprocessorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/PreprocessorTest.cpp'; fi` CppUTestTests-SetPluginTest.o: tests/SetPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-SetPluginTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-SetPluginTest.Tpo -c -o CppUTestTests-SetPluginTest.o `test -f 'tests/SetPluginTest.cpp' || echo '$(srcdir)/'`tests/SetPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-SetPluginTest.Tpo $(DEPDIR)/CppUTestTests-SetPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/SetPluginTest.cpp' object='CppUTestTests-SetPluginTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-SetPluginTest.o `test -f 'tests/SetPluginTest.cpp' || echo '$(srcdir)/'`tests/SetPluginTest.cpp CppUTestTests-SetPluginTest.obj: tests/SetPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-SetPluginTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-SetPluginTest.Tpo -c -o CppUTestTests-SetPluginTest.obj `if test -f 'tests/SetPluginTest.cpp'; then $(CYGPATH_W) 'tests/SetPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/SetPluginTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-SetPluginTest.Tpo $(DEPDIR)/CppUTestTests-SetPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/SetPluginTest.cpp' object='CppUTestTests-SetPluginTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-SetPluginTest.obj `if test -f 'tests/SetPluginTest.cpp'; then $(CYGPATH_W) 'tests/SetPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/SetPluginTest.cpp'; fi` CppUTestTests-SimpleStringTest.o: tests/SimpleStringTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-SimpleStringTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-SimpleStringTest.Tpo -c -o CppUTestTests-SimpleStringTest.o `test -f 'tests/SimpleStringTest.cpp' || echo '$(srcdir)/'`tests/SimpleStringTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-SimpleStringTest.Tpo $(DEPDIR)/CppUTestTests-SimpleStringTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/SimpleStringTest.cpp' object='CppUTestTests-SimpleStringTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-SimpleStringTest.o `test -f 'tests/SimpleStringTest.cpp' || echo '$(srcdir)/'`tests/SimpleStringTest.cpp CppUTestTests-SimpleStringTest.obj: tests/SimpleStringTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-SimpleStringTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-SimpleStringTest.Tpo -c -o CppUTestTests-SimpleStringTest.obj `if test -f 'tests/SimpleStringTest.cpp'; then $(CYGPATH_W) 'tests/SimpleStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/SimpleStringTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-SimpleStringTest.Tpo $(DEPDIR)/CppUTestTests-SimpleStringTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/SimpleStringTest.cpp' object='CppUTestTests-SimpleStringTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-SimpleStringTest.obj `if test -f 'tests/SimpleStringTest.cpp'; then $(CYGPATH_W) 'tests/SimpleStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/SimpleStringTest.cpp'; fi` CppUTestTests-SimpleMutexTest.o: tests/SimpleMutexTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-SimpleMutexTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-SimpleMutexTest.Tpo -c -o CppUTestTests-SimpleMutexTest.o `test -f 'tests/SimpleMutexTest.cpp' || echo '$(srcdir)/'`tests/SimpleMutexTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-SimpleMutexTest.Tpo $(DEPDIR)/CppUTestTests-SimpleMutexTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/SimpleMutexTest.cpp' object='CppUTestTests-SimpleMutexTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-SimpleMutexTest.o `test -f 'tests/SimpleMutexTest.cpp' || echo '$(srcdir)/'`tests/SimpleMutexTest.cpp CppUTestTests-SimpleMutexTest.obj: tests/SimpleMutexTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-SimpleMutexTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-SimpleMutexTest.Tpo -c -o CppUTestTests-SimpleMutexTest.obj `if test -f 'tests/SimpleMutexTest.cpp'; then $(CYGPATH_W) 'tests/SimpleMutexTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/SimpleMutexTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-SimpleMutexTest.Tpo $(DEPDIR)/CppUTestTests-SimpleMutexTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/SimpleMutexTest.cpp' object='CppUTestTests-SimpleMutexTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-SimpleMutexTest.obj `if test -f 'tests/SimpleMutexTest.cpp'; then $(CYGPATH_W) 'tests/SimpleMutexTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/SimpleMutexTest.cpp'; fi` CppUTestTests-TestFailureNaNTest.o: tests/TestFailureNaNTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestFailureNaNTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestFailureNaNTest.Tpo -c -o CppUTestTests-TestFailureNaNTest.o `test -f 'tests/TestFailureNaNTest.cpp' || echo '$(srcdir)/'`tests/TestFailureNaNTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestFailureNaNTest.Tpo $(DEPDIR)/CppUTestTests-TestFailureNaNTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestFailureNaNTest.cpp' object='CppUTestTests-TestFailureNaNTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestFailureNaNTest.o `test -f 'tests/TestFailureNaNTest.cpp' || echo '$(srcdir)/'`tests/TestFailureNaNTest.cpp CppUTestTests-TestFailureNaNTest.obj: tests/TestFailureNaNTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestFailureNaNTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestFailureNaNTest.Tpo -c -o CppUTestTests-TestFailureNaNTest.obj `if test -f 'tests/TestFailureNaNTest.cpp'; then $(CYGPATH_W) 'tests/TestFailureNaNTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestFailureNaNTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestFailureNaNTest.Tpo $(DEPDIR)/CppUTestTests-TestFailureNaNTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestFailureNaNTest.cpp' object='CppUTestTests-TestFailureNaNTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestFailureNaNTest.obj `if test -f 'tests/TestFailureNaNTest.cpp'; then $(CYGPATH_W) 'tests/TestFailureNaNTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestFailureNaNTest.cpp'; fi` CppUTestTests-TestFailureTest.o: tests/TestFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestFailureTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestFailureTest.Tpo -c -o CppUTestTests-TestFailureTest.o `test -f 'tests/TestFailureTest.cpp' || echo '$(srcdir)/'`tests/TestFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestFailureTest.Tpo $(DEPDIR)/CppUTestTests-TestFailureTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestFailureTest.cpp' object='CppUTestTests-TestFailureTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestFailureTest.o `test -f 'tests/TestFailureTest.cpp' || echo '$(srcdir)/'`tests/TestFailureTest.cpp CppUTestTests-TestFailureTest.obj: tests/TestFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestFailureTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestFailureTest.Tpo -c -o CppUTestTests-TestFailureTest.obj `if test -f 'tests/TestFailureTest.cpp'; then $(CYGPATH_W) 'tests/TestFailureTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestFailureTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestFailureTest.Tpo $(DEPDIR)/CppUTestTests-TestFailureTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestFailureTest.cpp' object='CppUTestTests-TestFailureTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestFailureTest.obj `if test -f 'tests/TestFailureTest.cpp'; then $(CYGPATH_W) 'tests/TestFailureTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestFailureTest.cpp'; fi` CppUTestTests-TestFilterTest.o: tests/TestFilterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestFilterTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestFilterTest.Tpo -c -o CppUTestTests-TestFilterTest.o `test -f 'tests/TestFilterTest.cpp' || echo '$(srcdir)/'`tests/TestFilterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestFilterTest.Tpo $(DEPDIR)/CppUTestTests-TestFilterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestFilterTest.cpp' object='CppUTestTests-TestFilterTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestFilterTest.o `test -f 'tests/TestFilterTest.cpp' || echo '$(srcdir)/'`tests/TestFilterTest.cpp CppUTestTests-TestFilterTest.obj: tests/TestFilterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestFilterTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestFilterTest.Tpo -c -o CppUTestTests-TestFilterTest.obj `if test -f 'tests/TestFilterTest.cpp'; then $(CYGPATH_W) 'tests/TestFilterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestFilterTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestFilterTest.Tpo $(DEPDIR)/CppUTestTests-TestFilterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestFilterTest.cpp' object='CppUTestTests-TestFilterTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestFilterTest.obj `if test -f 'tests/TestFilterTest.cpp'; then $(CYGPATH_W) 'tests/TestFilterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestFilterTest.cpp'; fi` CppUTestTests-TestHarness_cTest.o: tests/TestHarness_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestHarness_cTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestHarness_cTest.Tpo -c -o CppUTestTests-TestHarness_cTest.o `test -f 'tests/TestHarness_cTest.cpp' || echo '$(srcdir)/'`tests/TestHarness_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestHarness_cTest.Tpo $(DEPDIR)/CppUTestTests-TestHarness_cTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestHarness_cTest.cpp' object='CppUTestTests-TestHarness_cTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestHarness_cTest.o `test -f 'tests/TestHarness_cTest.cpp' || echo '$(srcdir)/'`tests/TestHarness_cTest.cpp CppUTestTests-TestHarness_cTest.obj: tests/TestHarness_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestHarness_cTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestHarness_cTest.Tpo -c -o CppUTestTests-TestHarness_cTest.obj `if test -f 'tests/TestHarness_cTest.cpp'; then $(CYGPATH_W) 'tests/TestHarness_cTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestHarness_cTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestHarness_cTest.Tpo $(DEPDIR)/CppUTestTests-TestHarness_cTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestHarness_cTest.cpp' object='CppUTestTests-TestHarness_cTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestHarness_cTest.obj `if test -f 'tests/TestHarness_cTest.cpp'; then $(CYGPATH_W) 'tests/TestHarness_cTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestHarness_cTest.cpp'; fi` CppUTestTests-TestInstallerTest.o: tests/TestInstallerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestInstallerTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestInstallerTest.Tpo -c -o CppUTestTests-TestInstallerTest.o `test -f 'tests/TestInstallerTest.cpp' || echo '$(srcdir)/'`tests/TestInstallerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestInstallerTest.Tpo $(DEPDIR)/CppUTestTests-TestInstallerTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestInstallerTest.cpp' object='CppUTestTests-TestInstallerTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestInstallerTest.o `test -f 'tests/TestInstallerTest.cpp' || echo '$(srcdir)/'`tests/TestInstallerTest.cpp CppUTestTests-TestInstallerTest.obj: tests/TestInstallerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestInstallerTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestInstallerTest.Tpo -c -o CppUTestTests-TestInstallerTest.obj `if test -f 'tests/TestInstallerTest.cpp'; then $(CYGPATH_W) 'tests/TestInstallerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestInstallerTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestInstallerTest.Tpo $(DEPDIR)/CppUTestTests-TestInstallerTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestInstallerTest.cpp' object='CppUTestTests-TestInstallerTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestInstallerTest.obj `if test -f 'tests/TestInstallerTest.cpp'; then $(CYGPATH_W) 'tests/TestInstallerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestInstallerTest.cpp'; fi` CppUTestTests-TestMemoryAllocatorTest.o: tests/TestMemoryAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestMemoryAllocatorTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Tpo -c -o CppUTestTests-TestMemoryAllocatorTest.o `test -f 'tests/TestMemoryAllocatorTest.cpp' || echo '$(srcdir)/'`tests/TestMemoryAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Tpo $(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestMemoryAllocatorTest.cpp' object='CppUTestTests-TestMemoryAllocatorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestMemoryAllocatorTest.o `test -f 'tests/TestMemoryAllocatorTest.cpp' || echo '$(srcdir)/'`tests/TestMemoryAllocatorTest.cpp CppUTestTests-TestMemoryAllocatorTest.obj: tests/TestMemoryAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestMemoryAllocatorTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Tpo -c -o CppUTestTests-TestMemoryAllocatorTest.obj `if test -f 'tests/TestMemoryAllocatorTest.cpp'; then $(CYGPATH_W) 'tests/TestMemoryAllocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestMemoryAllocatorTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Tpo $(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestMemoryAllocatorTest.cpp' object='CppUTestTests-TestMemoryAllocatorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestMemoryAllocatorTest.obj `if test -f 'tests/TestMemoryAllocatorTest.cpp'; then $(CYGPATH_W) 'tests/TestMemoryAllocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestMemoryAllocatorTest.cpp'; fi` CppUTestTests-TestOutputTest.o: tests/TestOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestOutputTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestOutputTest.Tpo -c -o CppUTestTests-TestOutputTest.o `test -f 'tests/TestOutputTest.cpp' || echo '$(srcdir)/'`tests/TestOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestOutputTest.Tpo $(DEPDIR)/CppUTestTests-TestOutputTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestOutputTest.cpp' object='CppUTestTests-TestOutputTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestOutputTest.o `test -f 'tests/TestOutputTest.cpp' || echo '$(srcdir)/'`tests/TestOutputTest.cpp CppUTestTests-TestOutputTest.obj: tests/TestOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestOutputTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestOutputTest.Tpo -c -o CppUTestTests-TestOutputTest.obj `if test -f 'tests/TestOutputTest.cpp'; then $(CYGPATH_W) 'tests/TestOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestOutputTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestOutputTest.Tpo $(DEPDIR)/CppUTestTests-TestOutputTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestOutputTest.cpp' object='CppUTestTests-TestOutputTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestOutputTest.obj `if test -f 'tests/TestOutputTest.cpp'; then $(CYGPATH_W) 'tests/TestOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestOutputTest.cpp'; fi` CppUTestTests-TestRegistryTest.o: tests/TestRegistryTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestRegistryTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestRegistryTest.Tpo -c -o CppUTestTests-TestRegistryTest.o `test -f 'tests/TestRegistryTest.cpp' || echo '$(srcdir)/'`tests/TestRegistryTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestRegistryTest.Tpo $(DEPDIR)/CppUTestTests-TestRegistryTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestRegistryTest.cpp' object='CppUTestTests-TestRegistryTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestRegistryTest.o `test -f 'tests/TestRegistryTest.cpp' || echo '$(srcdir)/'`tests/TestRegistryTest.cpp CppUTestTests-TestRegistryTest.obj: tests/TestRegistryTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestRegistryTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestRegistryTest.Tpo -c -o CppUTestTests-TestRegistryTest.obj `if test -f 'tests/TestRegistryTest.cpp'; then $(CYGPATH_W) 'tests/TestRegistryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestRegistryTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestRegistryTest.Tpo $(DEPDIR)/CppUTestTests-TestRegistryTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestRegistryTest.cpp' object='CppUTestTests-TestRegistryTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestRegistryTest.obj `if test -f 'tests/TestRegistryTest.cpp'; then $(CYGPATH_W) 'tests/TestRegistryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestRegistryTest.cpp'; fi` CppUTestTests-TestResultTest.o: tests/TestResultTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestResultTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestResultTest.Tpo -c -o CppUTestTests-TestResultTest.o `test -f 'tests/TestResultTest.cpp' || echo '$(srcdir)/'`tests/TestResultTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestResultTest.Tpo $(DEPDIR)/CppUTestTests-TestResultTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestResultTest.cpp' object='CppUTestTests-TestResultTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestResultTest.o `test -f 'tests/TestResultTest.cpp' || echo '$(srcdir)/'`tests/TestResultTest.cpp CppUTestTests-TestResultTest.obj: tests/TestResultTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestResultTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestResultTest.Tpo -c -o CppUTestTests-TestResultTest.obj `if test -f 'tests/TestResultTest.cpp'; then $(CYGPATH_W) 'tests/TestResultTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestResultTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestResultTest.Tpo $(DEPDIR)/CppUTestTests-TestResultTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestResultTest.cpp' object='CppUTestTests-TestResultTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestResultTest.obj `if test -f 'tests/TestResultTest.cpp'; then $(CYGPATH_W) 'tests/TestResultTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestResultTest.cpp'; fi` CppUTestTests-TestUTestMacro.o: tests/TestUTestMacro.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestUTestMacro.o -MD -MP -MF $(DEPDIR)/CppUTestTests-TestUTestMacro.Tpo -c -o CppUTestTests-TestUTestMacro.o `test -f 'tests/TestUTestMacro.cpp' || echo '$(srcdir)/'`tests/TestUTestMacro.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestUTestMacro.Tpo $(DEPDIR)/CppUTestTests-TestUTestMacro.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestUTestMacro.cpp' object='CppUTestTests-TestUTestMacro.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestUTestMacro.o `test -f 'tests/TestUTestMacro.cpp' || echo '$(srcdir)/'`tests/TestUTestMacro.cpp CppUTestTests-TestUTestMacro.obj: tests/TestUTestMacro.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-TestUTestMacro.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-TestUTestMacro.Tpo -c -o CppUTestTests-TestUTestMacro.obj `if test -f 'tests/TestUTestMacro.cpp'; then $(CYGPATH_W) 'tests/TestUTestMacro.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestUTestMacro.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-TestUTestMacro.Tpo $(DEPDIR)/CppUTestTests-TestUTestMacro.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/TestUTestMacro.cpp' object='CppUTestTests-TestUTestMacro.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-TestUTestMacro.obj `if test -f 'tests/TestUTestMacro.cpp'; then $(CYGPATH_W) 'tests/TestUTestMacro.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/TestUTestMacro.cpp'; fi` CppUTestTests-UtestTest.o: tests/UtestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-UtestTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-UtestTest.Tpo -c -o CppUTestTests-UtestTest.o `test -f 'tests/UtestTest.cpp' || echo '$(srcdir)/'`tests/UtestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-UtestTest.Tpo $(DEPDIR)/CppUTestTests-UtestTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/UtestTest.cpp' object='CppUTestTests-UtestTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-UtestTest.o `test -f 'tests/UtestTest.cpp' || echo '$(srcdir)/'`tests/UtestTest.cpp CppUTestTests-UtestTest.obj: tests/UtestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-UtestTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-UtestTest.Tpo -c -o CppUTestTests-UtestTest.obj `if test -f 'tests/UtestTest.cpp'; then $(CYGPATH_W) 'tests/UtestTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/UtestTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-UtestTest.Tpo $(DEPDIR)/CppUTestTests-UtestTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/UtestTest.cpp' object='CppUTestTests-UtestTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-UtestTest.obj `if test -f 'tests/UtestTest.cpp'; then $(CYGPATH_W) 'tests/UtestTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/UtestTest.cpp'; fi` CppUTestTests-UtestPlatformTest.o: tests/UtestPlatformTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-UtestPlatformTest.o -MD -MP -MF $(DEPDIR)/CppUTestTests-UtestPlatformTest.Tpo -c -o CppUTestTests-UtestPlatformTest.o `test -f 'tests/UtestPlatformTest.cpp' || echo '$(srcdir)/'`tests/UtestPlatformTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-UtestPlatformTest.Tpo $(DEPDIR)/CppUTestTests-UtestPlatformTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/UtestPlatformTest.cpp' object='CppUTestTests-UtestPlatformTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-UtestPlatformTest.o `test -f 'tests/UtestPlatformTest.cpp' || echo '$(srcdir)/'`tests/UtestPlatformTest.cpp CppUTestTests-UtestPlatformTest.obj: tests/UtestPlatformTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT CppUTestTests-UtestPlatformTest.obj -MD -MP -MF $(DEPDIR)/CppUTestTests-UtestPlatformTest.Tpo -c -o CppUTestTests-UtestPlatformTest.obj `if test -f 'tests/UtestPlatformTest.cpp'; then $(CYGPATH_W) 'tests/UtestPlatformTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/UtestPlatformTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CppUTestTests-UtestPlatformTest.Tpo $(DEPDIR)/CppUTestTests-UtestPlatformTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/UtestPlatformTest.cpp' object='CppUTestTests-UtestPlatformTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o CppUTestTests-UtestPlatformTest.obj `if test -f 'tests/UtestPlatformTest.cpp'; then $(CYGPATH_W) 'tests/UtestPlatformTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/UtestPlatformTest.cpp'; fi` 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) install-include_cpputestHEADERS: $(include_cpputest_HEADERS) @$(NORMAL_INSTALL) @list='$(include_cpputest_HEADERS)'; test -n "$(include_cpputestdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(include_cpputestdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(include_cpputestdir)" || 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)$(include_cpputestdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_cpputestdir)" || exit $$?; \ done uninstall-include_cpputestHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_cpputest_HEADERS)'; test -n "$(include_cpputestdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(include_cpputestdir)'; $(am__uninstall_files_from_dir) install-include_cpputestextHEADERS: $(include_cpputestext_HEADERS) @$(NORMAL_INSTALL) @list='$(include_cpputestext_HEADERS)'; test -n "$(include_cpputestextdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(include_cpputestextdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(include_cpputestextdir)" || 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)$(include_cpputestextdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_cpputestextdir)" || exit $$?; \ done uninstall-include_cpputestextHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_cpputestext_HEADERS)'; test -n "$(include_cpputestextdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(include_cpputestextdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ 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-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ 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" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ else \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? CppUTestTests.log: CppUTestTests$(EXEEXT) @p='CppUTestTests$(EXEEXT)'; \ b='CppUTestTests'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) CppUTestExtTests.log: CppUTestExtTests$(EXEEXT) @p='CppUTestExtTests$(EXEEXT)'; \ b='CppUTestExtTests'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) 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 $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -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__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_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.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 $(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 \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=.. --prefix="$$dc_install_base" \ && $(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__post_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 $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LIBRARIES) $(DATA) $(HEADERS) config.h installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(include_cpputestdir)" "$(DESTDIR)$(include_cpputestextdir)"; 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: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) 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) -rm -f lib/$(am__dirstamp) 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-libLIBRARIES \ clean-libtool mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-include_cpputestHEADERS \ install-include_cpputestextHEADERS install-pkgconfigDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLIBRARIES 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 $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -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-include_cpputestHEADERS \ uninstall-include_cpputestextHEADERS uninstall-libLIBRARIES \ uninstall-pkgconfigDATA .MAKE: all check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-TESTS \ check-am clean clean-checkPROGRAMS clean-cscope clean-generic \ clean-libLIBRARIES clean-libtool cscope cscopelist-am ctags \ ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \ dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \ distclean distclean-compile distclean-generic distclean-hdr \ 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-include_cpputestHEADERS \ install-include_cpputestextHEADERS install-info \ install-info-am install-libLIBRARIES install-man install-pdf \ install-pdf-am install-pkgconfigDATA 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 recheck tags tags-am uninstall \ uninstall-am uninstall-include_cpputestHEADERS \ uninstall-include_cpputestextHEADERS uninstall-libLIBRARIES \ uninstall-pkgconfigDATA valgrind: check @if test "x$(CPPUTEST_HAS_VALGRIND)" = xno; then echo "Running the valgrind target without having valgrind. Perhaps install it first?"; exit 1; fi valgrind --dsymutil=yes --suppressions=$(srcdir)/valgrind.suppressions --gen-suppressions=all --error-exitcode=1 ./$(CPPUTEST_TESTS) tdd: $(CPPUTEST_TESTS)$(EXEEXT) $(CPPUTESTEXT_TESTS)$(EXEEXT) ./$(CPPUTEST_TESTS) @INCLUDE_CPPUTEST_EXT_TRUE@ ./$(CPPUTESTEXT_TESTS) cpputest_build_gtest17: mkdir -p cpputest_build_gtest17 cd cpputest_build_gtest17; \ wget https://googlemock.googlecode.com/files/gmock-1.7.0.zip && unzip gmock-1.7.0.zip cd cpputest_build_gtest17/gmock-1.7.0; ./configure && make check cpputest_build_gtest16: mkdir -p cpputest_build_gtest16 cd cpputest_build_gtest16; \ wget https://googlemock.googlecode.com/files/gmock-1.6.0.zip && unzip gmock-1.6.0.zip cd cpputest_build_gtest16/gmock-1.6.0; ./configure CXXFLAGS=-DGTEST_USE_OWN_TR1_TUPLE=1 && make check cpputest_build_gtest15: mkdir -p cpputest_build_gtest15 cd cpputest_build_gtest15; \ wget https://googlemock.googlecode.com/files/gmock-1.5.0.zip && unzip gmock-1.5.0.zip cd cpputest_build_gtest15/gmock-1.5.0; ./configure CXXFLAGS=-DGTEST_USE_OWN_TR1_TUPLE=1 && make check_gtest15: cpputest_build_gtest15 @echo "Build using gmock 1.5"; export GMOCK_HOME=`pwd`/cpputest_build_gtest15/gmock-1.5.0; \ make distclean; $(srcdir)/configure; make check check_gtest16: cpputest_build_gtest16 @echo "Build using gmock 1.6"; export GMOCK_HOME=`pwd`/cpputest_build_gtest16/gmock-1.6.0; \ make distclean; $(srcdir)/configure; make check check_gtest17: cpputest_build_gtest17 @echo "Build using gmock 1.7" export GMOCK_HOME=`pwd`/cpputest_build_gtest17/gmock-1.7.0; \ make distclean; $(srcdir)/configure; make check remove_gtest_directories: rm -rf cpputest_build_gtest15 rm -rf cpputest_build_gtest16 rm -rf cpputest_build_gtest17 check_gtest: remove_gtest_directories check_gtest15 check_gtest16 check_gtest17 check_basic: @echo "If dash is available, run the configure with dash to find bash-isms and increase portability" make distclean; if test "x$(CPPUTEST_HAS_DASH)" = xyes; then CONFIG_SHELL=dash $(srcdir)/configure; fi @echo "Building and valgrinding (skipping this on MacOS due to buggy Valgrind" if test "x$(CPPUTEST_ON_MACOSX)" = xno; then \ make distclean; $(srcdir)/configure; make valgrind; \ fi @echo "Building without extensions" make distclean; $(srcdir)/configure --disable-extensions; make check @echo "Building with the Std C++ 11 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp11; make @echo "Building without the Standard C library" make distclean; $(srcdir)/configure --disable-std-c; make @echo "Building without the Standard C++ library" make distclean; $(srcdir)/configure --disable-std-cpp; make check @echo "Building without memory leak detection" make distclean; $(srcdir)/configure --disable-memory-leak-detection; make check @echo "Building without memory leak detection and without Standard C++" make distclean; $(srcdir)/configure --disable-memory-leak-detection --disable-std-cpp; make check @echo "Generate a map file while building" make distclean; $(srcdir)/configure -enable-generate-map-file; make check if [ -s CppUTest.o.map.txt ]; then echo "Generating map file failed. Build failed!"; exit 1; fi check_special_situations: @echo "Does the system have gcc? $(CPPUTEST_HAS_GCC)" if test "x$(CPPUTEST_HAS_GCC)" = xyes; then echo "Compiling with gcc"; make distclean; $(srcdir)/configure CC="gcc" CXX="g++"; make check; fi @echo "Does the system have clang and is a Mac? $(CPPUTEST_HAS_CLANG)" if test "x$(CPPUTEST_HAS_CLANG)" = xyes && test "x$(CPPUTEST_ON_MACOSX)" = xyes; then \ echo "Compiling with clang"; make distclean; $(srcdir)/configure CC="clang" CXX="clang++"; make check; \ fi @echo Testing JUnit output make distclean; $(srcdir)/configure; make check ./$(CPPUTEST_TESTS) -ojunit > junit_run_output if [ -s junit_run_output ]; then echo "JUnit run has output. Build failed!"; exit 1; fi rm junit_run_output; rm cpputest_*.xml @echo "Building with all flags turned off" make distclean; $(srcdir)/configure --disable-cpputest-flags CFLAGS="" CXXFLAGS="" CPPFLAGS="-I $(srcdir)/include -I$(srcdir)/include/CppUTestExt/CppUTestGTest -I$(srcdir)/include/CppUTestExt/CppUTestGMock" --disable-dependency-tracking; make check check_coverage: @echo "Compile with coverage (switch to clang for Mac OSX)" if test "x$(CPPUTEST_HAS_CLANG)" = xyes && test "x$(CPPUTEST_ON_MACOSX)" = xyes; then \ echo "Compiling with clang"; make distclean; $(srcdir)/configure CC="clang" CXX="clang++" --enable-coverage CFLAGS="-O0" CXXFLAGS="-O0"; \ else \ make distclean; $(srcdir)/configure -enable-coverage CFLAGS="-O0" CXXFLAGS="-O0"; \ fi make check ./$(CPPUTEST_TESTS) >> test_output.txt; ./$(CPPUTESTEXT_TESTS) >> test_output.txt $(SILENCE)for f in `ls *.gcno` ; do \ gcov $(CppUTestExtTests_SOURCES) $(CppUTestTests_SOURCES) $(lib_libCppUTest_a_SOURCES) $(lib_libCppUTestExt_a_SOURCES) -o $$f 1>>gcov_output.txt 2>>gcov_error.txt; \ done $(srcdir)/scripts/filterGcov.sh gcov_output.txt gcov_error.txt gcov_report.txt test_output.txt cat gcov_report.txt if test "x$(CPPUTEST_HAS_LCOV)" = xyes; then lcov -c -d . -o temp.info; lcov -r temp.info /usr\* -o coverage.info; genhtml -o test_coverage coverage.info; fi remove_coverage_output: rm -f gcov_output.txt gcov_error.txt gcov_report.txt test_output.txt gcov_report.txt.html temp.info coverage.info rm -rf test_coverage check_examples: @echo "Using the old Makefile and examples" make distclean $(MAKE) -C $(srcdir) -f Makefile_using_MakefileWorker extensions $(MAKE) -C $(srcdir)/examples all clean @echo "Compiling and running the examples. This will use the old Makefile" make distclean; $(srcdir)/configure; make; $(MAKE) -C $(srcdir)/examples all clean CPPUTEST_LIB_LINK_DIR="`pwd`/lib" check_all: check_basic check_special_situations check_coverage remove_coverage_output check_examples check_gtest @echo "Last... one normal build and test" make distclean; $(srcdir)/configure; make check; @echo "Check running tests repeatedly" $(RUN_CPPUTEST_TESTS) - r; $(RUN_CPPUTESTEXT_TESTS) -r @echo "Check running tests in separate process (CppUTestExtTests TEST_GROUP(TestOrderedTestMacro) would have to fail)" $(RUN_CPPUTEST_TESTS) -p; # Mac OSX adds an annoying directory when packaging. This can be prevented by setting COPYFILE_DISABLE=1 # However, I've not figured out how to set it automatically and neither google nor stackoverflow knew the answer. # The automake mailing list is still thinking about it, and thus, I've added this check so that I don't forget to do it :) # More info: http://superuser.com/questions/61185/why-do-i-get-files-like-foo-in-my-tarball-on-os-x dist-hook: if test "x$(CPPUTEST_ON_MACOSX)" = "xyes"; then \ if test ! "x$(COPYFILE_DISABLE)" = "x1"; then \ echo ""; \ echo 'ERROR: When packaging on MacOSX, please run "COPYFILE_DISABLE=1 make dist"'; \ echo ""; \ exit 1; \ fi \ 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: cpputest-3.7.2/Makefile_CppUTestExt000644 000765 000024 00000001015 12521603460 020230 0ustar00basvoddestaff000000 000000 #Set this to @ to keep the makefile quiet ifndef SILENCE SILENCE = @ endif #---- Outputs ----# COMPONENT_NAME = CppUTestExt #--- Inputs ----# CPPUTEST_HOME = . CPP_PLATFORM = Gcc WARNINGFLAGS = -pedantic-errors -Wall -Wextra -Werror -Wshadow -Wswitch-default -Wswitch-enum -Wconversion SRC_DIRS = src/CppUTestExt TEST_SRC_DIRS = tests/CppUTestExt INCLUDE_DIRS = $(CPPUTEST_HOME)/include LD_LIBRARIES += -lstdc++ -L$(CPPUTEST_LIB_DIR)/$(TARGET_PLATFORM) -lCppUTest include $(CPPUTEST_HOME)/build/MakefileWorker.mk cpputest-3.7.2/Makefile_using_MakefileWorker000644 000765 000024 00000010467 12521603460 022167 0ustar00basvoddestaff000000 000000 #Set this to @ to keep the makefile quiet SILENCE = @ #--- Inputs ----# COMPONENT_NAME = CppUTest ifeq ($(CPPUTEST_USE_STD_C_LIB), N) CPP_PLATFORM = GccNoStdC else CPP_PLATFORM = Gcc endif CPPUTEST_HOME = . OLD_MAKE = oldmake CPPUTEST_ENABLE_DEBUG = Y SRC_DIRS = \ src/CppUTest \ src/Platforms/$(CPP_PLATFORM) TEST_SRC_DIRS = \ tests INCLUDE_DIRS =\ include include $(CPPUTEST_HOME)/build/MakefileWorker.mk #these are a sample of the other alternative flag settings .PHONY: test_all test_all: start test_old_make @echo Building with the default flags. make clean $(TIME) make ./$(TEST_TARGET) -r make clean @echo Building with the STDC++ new disabled. $(TIME) make CPPUTEST_USE_STD_CPP_LIB=Y extensions make CPPUTEST_USE_STD_CPP_LIB=Y cleanExtensions @echo Building with Memory Leak Detection disabled $(TIME) make CPPUTEST_USE_MEM_LEAK_DETECTION=N extensions make CPPUTEST_USE_MEM_LEAK_DETECTION=N cleanExtensions @echo Building with Memory Leak Detection disabled and STD C++ disabled $(TIME) make CPPUTEST_USE_MEM_LEAK_DETECTION=N CPPUTEST_USE_STD_CPP_LIB=Y extensions make CPPUTEST_USE_MEM_LEAK_DETECTION=N CPPUTEST_USE_STD_CPP_LIB=Y cleanExtensions @echo Building with debug disabled $(TIME) make CPPUTEST_ENABLE_DEBUG=N extensions make CPPUTEST_ENABLE_DEBUG=N cleanExtensions @echo Building with overridden CXXFLAGS and CFLAGS and CPPFLAGS $(TIME) make CLFAGS="" CXXFLAGS="" CPPFLAGS="-Iinclude" make CFLAGS="" CXXFLAGS="" clean @echo Building without Standard C library includes $(TIME) make CPPUTEST_USE_STD_C_LIB=N all_no_tests make CPPUTEST_USE_STD_C_LIB=N clean @echo Building with a different TARGET_PLATFORM make TARGET_PLATFORM=real_platform @echo Building with overridden CXXFLAGS and CFLAGS and memory leak and STDC++ disabled $(TIME) make CLFAGS="" CXXFLAGS="" CPPFLAGS="-Iinclude -DCPPUTEST_STD_CPP_LIB_DISABLED -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED" make CFLAGS="" CXXFLAGS="" CPPFLAGS="-DCPPUTEST_STD_CPP_LIB_DISABLED -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED" clean @echo Building examples make cleanExamples $(TIME) make examples make cleanExamples @echo Testing JUnit output $(TIME) make $(SILENCE)./$(TEST_TARGET) -ojunit > junit_run_output $(SILENCE)if [ -s junit_run_output ]; then echo "JUnit run has output. Build failed!"; exit 1; fi make clean make CPPUTEST_MAP_FILE=map.txt make clean @echo Testing GCOV usage $(TIME) make CPPUTEST_USE_GCOV=Y everythingInstall make gcov make -f Makefile_CppUTestExt gcov make -C examples gcov make cleanEverythingInstall @echo Testing VPATH usage $(TIME) make CPPUTEST_USE_GCOV=Y CPPUTEST_USE_VPATH=Y everythingInstall make CPPUTEST_USE_VPATH=Y gcov make CPPUTEST_USE_VPATH=Y -f Makefile_CppUTestExt gcov make CPPUTEST_USE_VPATH=Y -C examples gcov make clean cleanExamples @echo Testing VPATH usage $(TIME) make CPPUTEST_USE_VPATH=Y everythingInstall make CPPUTEST_USE_VPATH=Y cleanEverythingInstall make flags make debug HAS_OLD_MAKE = $(shell $(OLD_MAKE) -v 2>/dev/null) test_old_make: $(SILENCE)if [ "$(HAS_OLD_MAKE)" = "" ]; then \ echo "Old make with the name $(OLD_MAKE) not found. Skipping testing with old make version"; \ else \ $(OLD_MAKE) -f Makefile_for_old_make clean && \ $(OLD_MAKE) -f Makefile_for_old_make && \ $(OLD_MAKE) -f Makefile_for_old_make extensions && \ $(OLD_MAKE) -f Makefile_for_old_make clean; \ fi .PHONY: examples examples: $(TEST_TARGET) extensions +$(TIME) $(MAKE) -C examples all CPPUTEST_USE_STD_CPP_LIB=$(CPPUTEST_USE_STD_CPP_LIB) CPPUTEST_USE_MEM_LEAK_DETECTION=$(CPPUTEST_USE_MEM_LEAK_DETECTION) extensions: $(TEST_TARGET) +$(TIME) $(MAKE) -f Makefile_CppUTestExt all CPPUTEST_USE_STD_CPP_LIB=$(CPPUTEST_USE_STD_CPP_LIB) CPPUTEST_USE_MEM_LEAK_DETECTION=$(CPPUTEST_USE_MEM_LEAK_DETECTION) TARGET_PLATFORM=$(TARGET_PLATFORM) cleanExtensions: clean +$(TIME) $(MAKE) -f Makefile_CppUTestExt clean CPPUTEST_USE_STD_CPP_LIB=$(CPPUTEST_USE_STD_CPP_LIB) CPPUTEST_USE_MEM_LEAK_DETECTION=$(CPPUTEST_USE_MEM_LEAK_DETECTION) TARGET_PLATFORM=$(TARGET_PLATFORM) cleanExamples: clean cleanExtensions +$(TIME) $(MAKE) -C examples clean CPPUTEST_USE_STD_CPP_LIB=$(CPPUTEST_USE_STD_CPP_LIB) CPPUTEST_USE_MEM_LEAK_DETECTION=$(CPPUTEST_USE_MEM_LEAK_DETECTION) .PHONY: everythingInstall everythingInstall: all extensions examples .PHONY: cleanEverythingInstall cleanEverythingInstall: clean cleanExtensions cleanExamples cpputest-3.7.2/makeVc6.bat000644 000765 000024 00000001025 12521603460 016305 0ustar00basvoddestaff000000 000000 rem **** rem * Command line build - For CppUTest - Run from dsw directory rem * rem * A single parameter is supported and it is the last parameter of msdev rem * for example: rem * /clean rem * make sure to use the slash rem * this needs to be in your path rem ****PATH=C:\Program Files\Microsoft Visual Studio\VC98\Bin;%PATH% msdev CppUTest.dsp /MAKE "CppUTest - Debug" %1 msdev tests\AllTests.dsp /MAKE "AllTests - Debug" %1 if "%1" EQU "/clean" goto end if "%1" EQU "/CLEAN" goto end tests\Debug\AllTests :end cpputest-3.7.2/makeVS2008.bat000644 000765 000024 00000000530 12521603460 016511 0ustar00basvoddestaff000000 000000 rem **** rem * Command line build - For CppUTest - Run from CppUTest directory rem * rem * this path works on my machine rem ****PATH=C:\Windows\Microsoft.NET\Framework\v3.5;c:\windows;c:\windows\system32 msbuild /t:rebuild /verbosity:quiet CppUTest_VS2008.sln set test_exe=tests\Debug\AllTests.exe if exist %test_exe% %test_exe% -v cpputest-3.7.2/makeVS201x.bat000644 000765 000024 00000000536 12521603460 016620 0ustar00basvoddestaff000000 000000 rem **** rem * Command line build - For CppUTest - Run from CppUTest directory rem * rem * this path works on my machine rem ****PATH=C:\Windows\Microsoft.NET\Framework\v4.0.30319;c:\windows\system32;c:\windows msbuild /t:rebuild /verbosity:quiet CppUTest_VS201x.sln set test_exe=tests\Debug\AllTests.exe if exist %test_exe% %test_exe% -v cpputest-3.7.2/missing000755 000765 000024 00000015330 12521603513 015723 0ustar00basvoddestaff000000 000000 #! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written 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, see . # 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 case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # 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: cpputest-3.7.2/NEWS000644 000765 000024 00000000104 12521603460 015015 0ustar00basvoddestaff000000 000000 You can find the main NEWS at: https://github.com/cpputest/cpputestcpputest-3.7.2/platforms/000755 000765 000024 00000000000 12523662133 016336 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/000755 000765 000024 00000000000 12523662133 020234 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_startup/000755 000765 000024 00000000000 12523662133 020120 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/README000644 000765 000024 00000000126 12521603460 015202 0ustar00basvoddestaff000000 000000 Please see the README.md. This file exists to be compliant to GNU coding standards. cpputest-3.7.2/README.md000644 000765 000024 00000015445 12521603460 015613 0ustar00basvoddestaff000000 000000 CppUTest ======== CppUTest unit testing and mocking framework for C/C++ [More information on the project page](http://cpputest.github.com) Travis Linux build status: [![Build Status](https://travis-ci.org/cpputest/cpputest.png?branch=master)](https://travis-ci.org/cpputest/cpputest) AppVeyer Windows build status: [![Build status](https://ci.appveyor.com/api/projects/status/irh38i4wblsb5tew?svg=true)](https://ci.appveyor.com/project/basvodde/cpputest) ## Getting Started You'll need to do the following to get started: Building from source (unix-based, cygwin, MacOSX): * Download latest version * autogen.sh * configure * make * make check * You can use "make install" if you want to install CppUTest system-wide You can also use CMake, which also works for Windows Visual Studio. * Download latest version * cmake CMakeList.txt * make Then to get started, you'll need to do the following: * Add the include path to the Makefile. Something like: * CPPFLAGS += -I(CPPUTEST_HOME)/include * Add the memory leak macros to you Makefile (needed for additional debug info!). Something like: * CXXFLAGS += -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h * CFLAGS += -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h * Add the library linking to your Makefile. Something like: * LD_LIBRARIES = -L$(CPPUTEST_HOME)/lib -lCppUTest -lCppUTestExt After this, you can write your first test: ```C++ TEST_GROUP(FirstTestGroup) { }; TEST(FirstTestGroup, FirstTest) { FAIL("Fail me!"); } ``` ## Command line switches * -v verbose, print each test name as it runs * -r# repeat the tests some number of times, default is one, default is # is not specified is 2. This is handy if you are experiencing memory leaks related to statics and caches. * -g group only run test whose group contains the substring group * -n name only run test whose name contains the substring name ## Test Macros * TEST(group, name) - define a test * IGNORE_TEST(group, name) - turn off the execution of a test * TEST_GROUP(group) - Declare a test group to which certain tests belong. This will also create the link needed from another library. * TEST_GROUP_BASE(group, base) - Same as TEST_GROUP, just use a different base class than Utest * TEST_SETUP() - Declare a void setup method in a TEST_GROUP - this is the same as declaring void setup() * TEST_TEARDOWN() - Declare a void setup method in a TEST_GROUP * IMPORT_TEST_GROUP(group) - Export the name of a test group so it can be linked in from a library. Needs to be done in main. ## Set up and tear down support * Each TEST_GROUP may contain a setup and/or a teardown method. * setup() is called prior to each TEST body and teardown() is called after the test body. ## Assertion Macros The failure of one of these macros causes the current test to immediately exit * CHECK(boolean condition) - checks any boolean result * CHECK_TRUE(boolean condition) - checks for true * CHECK_FALSE(boolean condition) - checks for false * CHECK_EQUAL(expected, actual) - checks for equality between entities using ==. So if you have a class that supports operator==() you can use this macro to compare two instances. * STRCMP_EQUAL(expected, actual) - check const char* strings for equality using strcmp * LONGS_EQUAL(expected, actual) - Compares two numbers * BYTES_EQUAL(expected, actual) - Compares two numbers, eight bits wide * POINTERS_EQUAL(expected, actual) - Compares two const void * * DOUBLES_EQUAL(expected, actual, tolerance) - Compares two doubles within some tolerance * FAIL(text) - always fails Customize CHECK_EQUAL to work with your types that support operator==() * Create the function: ** SimpleString StringFrom (const yourType&) The Extensions directory has a few of these. ## Building default checks with TestPlugin * CppUTest can support extra checking functionality by inserting TestPlugins * TestPlugin is derived from the TestPlugin class and can be inserted in the TestRegistry via the installPlugin method. * All TestPlugins are called before and after running all tests and before and after running a single test (like Setup and Teardown). TestPlugins are typically inserted in the main. * TestPlugins can be used for, for example, system stability and resource handling like files, memory or network connection clean-up. * In CppUTest, the memory leak detection is done via a default enabled TestPlugin Example of a main with a TestPlugin: ```C++ int main(int ac, char** av) { LogPlugin logPlugin; TestRegistry::getCurrentRegistry()->installPlugin(&logPlugin); int result = CommandLineTestRunner::RunAllTests(ac, av); TestRegistry::getCurrentRegistry()->resetPlugins(); return result; } ``` Memory leak detection * A platform specific memory leak detection mechanism is provided. * If a test fails and has allocated memory prior to the fail and that memory is not cleaned up by TearDown, a memory leak is reported. It is best to only chase memory leaks when other errors have been eliminated. * Some code uses lazy initialization and appears to leak when it really does not (for example: gcc stringstream used to in an earlier release). One cause is that some standard library calls allocate something and do not free it until after main (or never). To find out if a memory leak is due to lazy initialization set the -r switch to run tests twice. The signature of this situation is that the first run shows leaks and the second run shows no leaks. When both runs show leaks, you have a leak to find. ## How is memory leak detection implemented? * Before setup() a memory usage checkpoint is recorded * After teardown() another checkpoint is taken and compared to the original checkpoint * In Visual Studio the MS debug heap capabilities are used * For GCC a simple new/delete count is used in overridden operators new, new[], delete and delete[] If you use some leaky code that you can't or won't fix you can tell a TEST to ignore a certain number of leaks as in this example: ```C++ TEST(MemoryLeakWarningTest, Ignore1) { EXPECT_N_LEAKS(1); char* arrayToLeak1 = new char[100]; } ``` ## Example Main ```C++ #include "UnitTestHarness/CommandLineTestRunner.h" int main(int ac, char** av) { return CommandLineTestRunner::RunAllTests(ac, av); } IMPORT_TEST_GROUP(ClassName) ``` ## Example Test ```C++ #include "UnitTestHarness/TestHarness.h" #include "ClassName.h" TEST_GROUP(ClassName) { ClassName* className; void setup() { className = new ClassName(); } void teardown() { delete className; } } TEST(ClassName, Create) { CHECK(0 != className); CHECK(true); CHECK_EQUAL(1,1); LONGS_EQUAL(1,1); DOUBLES_EQUAL(1.000, 1.001, .01); STRCMP_EQUAL("hello", "hello"); FAIL("The prior tests pass, but this one doesn't"); } ``` There are some scripts that are helpful in creating your initial h, cpp, and Test files. See scripts/README.TXT cpputest-3.7.2/README_CppUTest_for_C.txt000644 000765 000024 00000004427 12521603460 020727 0ustar00basvoddestaff000000 000000 CPPUTest can and has been used for testing C code also. When testing C code there are a couple of things to keep in mind and a couple of common problems to solve. ---++ Using extern "C" When including C-header files or when declaring C-variables and routines in a .cpp file, you'll have to surround them with an extern "C". This is because the C++ linker works different than the C linker and you need to instruct the compiler about this. If you do NOT do this, you will probably get a linker error, like unresolved symbols, for a routine that you did implement. An example: extern "C" { #include "hello.h" extern HelloWorldApi theRealHelloWorldApi; } ---++ CppUTest support for C CppUTest comes with a file called TestHarness_c.h which contains a couple of routines that can be used in C code, like C-versions of the CHECK-MARCO's. The file also contains malloc and free routines that can be used for using the CppUTest memory leak detector. These routines should be used instead of the normal malloc/free. This can be achieved by #defining them somewhere, for examples as a compiler option: -Dmalloc=cpputest_malloc. It's important to remember that TestHarness_c.h is a C-header file. It can be used in C code, but when using in C++ code, you need to use extern "C" before including it. ---++ C++ keywords used It sometimes happens that a C file uses a C++ keyword as a type or something else. The most common one is the bool-type. This can typically be solved by #defining the bool to something else. For example: extern "C" { #define bool helloBool #include "hello.h" #undef bool } The #undef is optional. It is possible that this solution leads to problems in some situation (never happened to me). The same solution works for other C++ key-words ---++ Other * In C, sometimes people use empty structs. The sizeof(empty struct) would be 0. In C++, the sizeof(empty struct) would be something. The best way to fix this is to not use empty structs in C. According to http://www.glenmccl.com/bett.htm an empty stuct in C is illegal anyway. ---++ References * http://www.glenmccl.com/bett.htm Describes some differences between C and C++ * http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B Wikipedia entry on the compatibility between C and C++ cpputest-3.7.2/README_InstallCppUTest.txt000644 000765 000024 00000004773 12521603460 021152 0ustar00basvoddestaff000000 000000 1. Unzip into , resulting in /CppUTest/ MAKE SURE DOES NOT HAVE SPACES IN IT MAKE SURE DOES NOT HAVE SPACES IN IT MAKE SURE DOES NOT HAVE SPACES IN IT 2. Build CppUTest and examples 2a. For unix/gcc (including cygwin) > cd /CppUTest/cpputest_build > ../configure > make > make tdd # This is to run the CppUTest unit tests 2b. For Microsoft Visual C++ V6 Double click /CppUTest/CppUTest.dsw Run without debugging, see the test results in the command window Exit MS Visual C++ To run the examples: Double click /CppUTest/example/CppUTestExample.dsw Run without debugging, see the test results in the command window You should define the environment variable CPP_U_TEST to point to CppUTest to run these. NOTE: To create your own project, you need to have CppUTest and your project compiled with the same compile and link settings 2c. For ARMCC from Keil MDK-ARM (building CppUTest library only) > make all -C platforms/armcc Please see README and Makefile in platforms/armcc to adjust options, default CPU architecture is ARM7TDMI and default CPU execution mode is THUMB. 3c. For Microsoft Visual Studio 2008 Double click /CppUTest/CppUTest.sln If Visual studio reports that the solution file was created with a newer version of Visual Studio, then try 3d Then press control-F5 to "Start without debugging" See CppUTest build and run its tests. 3d. For Older Microsoft Visual Studio .NET Double click /CppUTest/CppUTest.dsw Allow VS.NET to convert the files by clicking "yes to all" Run without debugging, see the test results in the command window Exit MS VS.NET Allow VS.NET to convert the files by clicking "yes to all" Run without debugging, see the test results in the command window NOTE: To create your own project, you need to have CppUTest and your project compiled with the same compile and link settings 4. to setup the support scripts. These scripts work in various unix systems and cygwin. (these are quite handy) If you are using windows install some tool like cygwin, msys or MKSToolkit to run these scripts. > cd /CppUTest/CppSourceTemplates > ./InstallScripts.sh This command adds some symbolic links to /usr/local/bin, so you have to run it as root. sudo ./InstallScripts.sh MSYS - http://www.mingw.org/msys.shtml CYGWIN - http://www.cygwin.com/ MKSToolkit - http://mkstoolkit.com/ cpputest-3.7.2/README_UsersOfPriorVersions.txt000644 000765 000024 00000001570 12521603460 022237 0ustar00basvoddestaff000000 000000 If you were a user of CppTestTools you will have a few changes to make. CppUTest is the unit test harness from CppTestTools CppFit is the FIT implementaions from CppTestTools (CppFit is a separate download) Sorry, this is not a complete set of instructions for converting, but here are some suggestions. In each test file change namespace for SetUp and TearDown to TEST_GROUP(GroupName) (GroupName is the class name by convention) delete IMPORT_TEST_GROUP (TEST_GROUP has this built in now) #include "UnitTestHarness/somefile.h" should be #include "CppUTest/somefile.h" Your Makefiles have to change: Change DOTO to OBJS Replace CPP_TEST_TOOLS with CPP_U_TEST Replace MakefileHelpers with build Change -I$(CPP_TEST_TOOLS) to -I$(CPP_U_TEST)/include\ For libraries using fixtures add -I$(CPP_FIT)/include Add the RunAllTests.sh script to your AllTests directory cpputest-3.7.2/scripts/000755 000765 000024 00000000000 12523662133 016016 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/000755 000765 000024 00000000000 12523662132 015115 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/test-driver000755 000765 000024 00000010277 12521603513 016527 0ustar00basvoddestaff000000 000000 #! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2013 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, see . # 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. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then estatus=1 fi case $estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # 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-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: cpputest-3.7.2/tests/000755 000765 000024 00000000000 12523662133 015471 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/valgrind.suppressions000644 000765 000024 00000002263 12521603460 020633 0ustar00basvoddestaff000000 000000 { Supressions because the memory leak detector will print content of memory but can't know whether it is initialized or not Memcheck:Cond fun:strnlen fun:vfprintf fun:__vsnprintf_chk } { Same as the above, but this one is more specific for clang. This allows the clang to fail on other vprintf errors where it is suppressed at gcc Memcheck:Cond ... fun:_ZN18SimpleStringBuffer3addEPKcz ... fun:_ZN18MemoryLeakDetector25ConstructMemoryLeakReportE13MemLeakPeriod fun:_ZN18MemoryLeakDetector6reportE13MemLeakPeriod ... } { Supression because it checks whether the memory was set invalid after a de-alloc Memcheck:Addr1 fun:_ZN45TEST_BasicBehavior_freeInvalidatesMemory_Test8testBodyEv fun:PlatformSpecificSetJmp ... } { Supression because it checks whether the memory was set invalid after a de-alloc Memcheck:Addr1 fun:_ZN47TEST_BasicBehavior_deleteInvalidatesMemory_Test8testBodyEv fun:PlatformSpecificSetJmp ... } { Supression because it checks whether the memory was set invalid after a de-alloc Memcheck:Addr1 fun:_ZN52TEST_BasicBehavior_deleteArrayInvalidatesMemory_Test8testBodyEv fun:PlatformSpecificSetJmp ... } cpputest-3.7.2/tests/AllocationInCFile.c000644 000765 000024 00000000575 12521603460 021117 0ustar00basvoddestaff000000 000000 #include "AllocationInCFile.h" #include "CppUTest/MemoryLeakDetectorMallocMacros.h" #include "CppUTest/StandardCLibrary.h" /* This file is for simulating overloads of malloc */ char* mallocAllocation() { return (char*) malloc(10UL); } void freeAllocation(void* memory) { free(memory); } #undef free void freeAllocationWithoutMacro(void* memory) { free(memory); } cpputest-3.7.2/tests/AllocationInCFile.h000644 000765 000024 00000000413 12521603460 021113 0ustar00basvoddestaff000000 000000 #ifndef ALLOCATIONINCFILE_H #define ALLOCATIONINCFILE_H #ifdef __cplusplus extern "C" { #endif extern char* mallocAllocation(void); extern void freeAllocation(void* memory); extern void freeAllocationWithoutMacro(void* memory); #ifdef __cplusplus } #endif #endif cpputest-3.7.2/tests/AllocationInCppFile.cpp000644 000765 000024 00000001171 12521603460 022010 0ustar00basvoddestaff000000 000000 /* This file is for emulating allocations in a C++ file. * It is used simulating the use of the memory leak detector on production code in C++ */ #undef new #include "CppUTest/MemoryLeakDetectorNewMacros.h" #include "AllocationInCppFile.h" char* newAllocation() { return new char; } char* newArrayAllocation() { return new char[100]; } #undef new char* newAllocationWithoutMacro() { return new char; } char* newArrayAllocationWithoutMacro() { return new char[100]; } #if CPPUTEST_USE_STD_CPP_LIB ClassThatThrowsAnExceptionInTheConstructor::ClassThatThrowsAnExceptionInTheConstructor() { throw 1; } #endif cpputest-3.7.2/tests/AllocationInCppFile.h000644 000765 000024 00000000547 12521603460 021463 0ustar00basvoddestaff000000 000000 #ifndef ALLOCATIONINCPPFILE_H #define ALLOCATIONINCPPFILE_H char* newAllocation(); char* newArrayAllocation(); char* newAllocationWithoutMacro(); char* newArrayAllocationWithoutMacro(); #if CPPUTEST_USE_STD_CPP_LIB class ClassThatThrowsAnExceptionInTheConstructor { public: ClassThatThrowsAnExceptionInTheConstructor() __no_return__; }; #endif #endif cpputest-3.7.2/tests/AllocLetTestFree.c000644 000765 000024 00000001024 12521603460 020767 0ustar00basvoddestaff000000 000000 #include "CppUTest/StandardCLibrary.h" #if CPPUTEST_USE_STD_C_LIB #include "AllocLetTestFree.h" typedef struct AllocLetTestFreeStruct { int placeHolderForHiddenStructElements; } AllocLetTestFreeStruct; AllocLetTestFree AllocLetTestFree_Create(void) { size_t count = 1; AllocLetTestFree self = (AllocLetTestFree)calloc(count, sizeof(AllocLetTestFreeStruct)); return self; } void AllocLetTestFree_Destroy(AllocLetTestFree self) { AllocLetTestFree no_use = self; self = NULL; self = no_use; } #endif cpputest-3.7.2/tests/AllocLetTestFree.h000644 000765 000024 00000000506 12521603460 021000 0ustar00basvoddestaff000000 000000 #ifndef D_AllocLetTestFree_H #define D_AllocLetTestFree_H #ifdef __cplusplus extern "C" { #endif typedef struct AllocLetTestFreeStruct * AllocLetTestFree; AllocLetTestFree AllocLetTestFree_Create(void); void AllocLetTestFree_Destroy(AllocLetTestFree); #ifdef __cplusplus } #endif #endif /* D_FakeAllocLetTestFree_H */ cpputest-3.7.2/tests/AllocLetTestFreeTest.cpp000644 000765 000024 00000001057 12521603460 022175 0ustar00basvoddestaff000000 000000 #include "CppUTest/StandardCLibrary.h" extern "C" { #include "AllocLetTestFree.h" } #include "CppUTest/TestHarness.h" #if CPPUTEST_USE_STD_C_LIB /* * This test makes sure that memory leak malloc macros are forced into .cpp and .c files */ TEST_GROUP(AllocLetTestFree) { AllocLetTestFree allocLetTestFree; void setup() { allocLetTestFree = AllocLetTestFree_Create(); } void teardown() { AllocLetTestFree_Destroy(allocLetTestFree); } }; TEST(AllocLetTestFree, Create) { free(allocLetTestFree); } #endif cpputest-3.7.2/tests/AllTests.cpp000644 000765 000024 00000003577 12521603460 017740 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" int main(int ac, const char** av) { /* These checks are here to make sure assertions outside test runs don't crash */ CHECK(true); LONGS_EQUAL(1, 1); return CommandLineTestRunner::RunAllTests(ac, const_cast(av)); /* cover alternate method */ } cpputest-3.7.2/tests/AllTests.dep000644 000765 000024 00000067234 12521603460 017726 0ustar00basvoddestaff000000 000000 # Microsoft Developer Studio Generated Dependency File, included by AllTests.mak .\AllocationInCFile.c : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorMallocMacros.h"\ "..\include\CppUTest\StandardCLibrary.h"\ ".\AllocationInCFile.h"\ .\AllocationInCppFile.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\StandardCLibrary.h"\ ".\AllocationInCppFile.h"\ .\CppUTestExt\AllTests.cpp : \ "..\include\CppUTest\CommandLineArguments.h"\ "..\include\CppUTest\CommandLineTestRunner.h"\ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestMemoryAllocator.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\CppUTestExt\MemoryReportAllocator.h"\ "..\include\CppUTestExt\MemoryReporterPlugin.h"\ "..\include\CppUTestExt\MockNamedValue.h"\ "..\include\CppUTestExt\MockSupportPlugin.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\CheatSheetTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\CppUTestExt\CodeMemoryReportFormatterTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestMemoryAllocator.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\CppUTestExt\CodeMemoryReportFormatter.h"\ "..\include\CppUTestExt\MemoryReportAllocator.h"\ "..\include\CppUTestExt\MemoryReportFormatter.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\CommandLineArgumentsTest.cpp : \ "..\include\CppUTest\CommandLineArguments.h"\ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\CommandLineTestRunnerTest.cpp : \ "..\include\CppUTest\CommandLineArguments.h"\ "..\include\CppUTest\CommandLineTestRunner.h"\ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\TestTestingFixture.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\CppUTestExt\GTest2ConvertorTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\TestTestingFixture.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\JUnitOutputTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\JunitTestOutput.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\PlatformSpecificFunctions.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\MemoryLeakDetectorTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetector.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\PlatformSpecificFunctions.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestMemoryAllocator.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\MemoryLeakOperatorOverloadsTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetector.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\PlatformSpecificFunctions.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestHarness_c.h"\ "..\include\CppUTest\TestMemoryAllocator.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\TestTestingFixture.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ ".\AllocationInCFile.h"\ ".\AllocationInCppFile.h"\ .\MemoryLeakWarningTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetector.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\PlatformSpecificFunctions.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\SimpleMutex.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestHarness_c.h"\ "..\include\CppUTest\TestMemoryAllocator.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\TestTestingFixture.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\CppUTestExt\MemoryReportAllocatorTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestMemoryAllocator.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\CppUTestExt\MemoryReportAllocator.h"\ "..\include\CppUTestExt\MemoryReportFormatter.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\CppUTestExt\MemoryReporterPluginTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestMemoryAllocator.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\CppUTestExt\MemoryReportAllocator.h"\ "..\include\CppUTestExt\MemoryReporterPlugin.h"\ "..\include\CppUTestExt\MemoryReportFormatter.h"\ "..\include\cpputestext\mockactualcall.h"\ "..\include\CppUTestExt\MockCheckedActualCall.h"\ "..\include\CppUTestExt\MockCheckedExpectedCall.h"\ "..\include\cpputestext\mockexpectedcall.h"\ "..\include\CppUTestExt\MockExpectedCallsList.h"\ "..\include\CppUTestExt\MockFailure.h"\ "..\include\CppUTestExt\MockNamedValue.h"\ "..\include\CppUTestExt\MockSupport.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\CppUTestExt\MemoryReportFormatterTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestMemoryAllocator.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\CppUTestExt\MemoryReportAllocator.h"\ "..\include\CppUTestExt\MemoryReportFormatter.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\CppUTestExt\MockActualCallTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\cpputestext\mockactualcall.h"\ "..\include\CppUTestExt\MockCheckedActualCall.h"\ "..\include\CppUTestExt\MockCheckedExpectedCall.h"\ "..\include\cpputestext\mockexpectedcall.h"\ "..\include\CppUTestExt\MockExpectedCallsList.h"\ "..\include\CppUTestExt\MockFailure.h"\ "..\include\CppUTestExt\MockNamedValue.h"\ "..\include\platforms\visualcpp\stdint.h"\ ".\CppUTestExt\MockFailureTest.h"\ .\CppUTestExt\MockCheatSheetTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\cpputestext\mockactualcall.h"\ "..\include\CppUTestExt\MockCheckedActualCall.h"\ "..\include\CppUTestExt\MockCheckedExpectedCall.h"\ "..\include\cpputestext\mockexpectedcall.h"\ "..\include\CppUTestExt\MockExpectedCallsList.h"\ "..\include\CppUTestExt\MockFailure.h"\ "..\include\CppUTestExt\MockNamedValue.h"\ "..\include\CppUTestExt\MockSupport.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\CppUTestExt\MockExpectedCallTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\CppUTestExt\MockCheckedExpectedCall.h"\ "..\include\cpputestext\mockexpectedcall.h"\ "..\include\CppUTestExt\MockFailure.h"\ "..\include\CppUTestExt\MockNamedValue.h"\ "..\include\platforms\visualcpp\stdint.h"\ ".\CppUTestExt\MockFailureTest.h"\ .\CppUTestExt\MockExpectedFunctionsListTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\CppUTestExt\MockCheckedExpectedCall.h"\ "..\include\cpputestext\mockexpectedcall.h"\ "..\include\CppUTestExt\MockExpectedCallsList.h"\ "..\include\CppUTestExt\MockFailure.h"\ "..\include\CppUTestExt\MockNamedValue.h"\ "..\include\platforms\visualcpp\stdint.h"\ ".\CppUTestExt\MockFailureTest.h"\ .\CppUTestExt\MockFailureTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\CppUTestExt\MockCheckedExpectedCall.h"\ "..\include\cpputestext\mockexpectedcall.h"\ "..\include\CppUTestExt\MockExpectedCallsList.h"\ "..\include\CppUTestExt\MockFailure.h"\ "..\include\CppUTestExt\MockNamedValue.h"\ "..\include\platforms\visualcpp\stdint.h"\ ".\CppUTestExt\MockFailureTest.h"\ .\CppUTestExt\MockPluginTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\cpputestext\mockactualcall.h"\ "..\include\CppUTestExt\MockCheckedActualCall.h"\ "..\include\CppUTestExt\MockCheckedExpectedCall.h"\ "..\include\cpputestext\mockexpectedcall.h"\ "..\include\CppUTestExt\MockExpectedCallsList.h"\ "..\include\CppUTestExt\MockFailure.h"\ "..\include\CppUTestExt\MockNamedValue.h"\ "..\include\CppUTestExt\MockSupport.h"\ "..\include\CppUTestExt\MockSupportPlugin.h"\ "..\include\platforms\visualcpp\stdint.h"\ ".\CppUTestExt\MockFailureTest.h"\ .\CppUTestExt\MockSupport_cTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestHarness_c.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\TestTestingFixture.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\CppUTestExt\MockSupport_c.h"\ "..\include\platforms\visualcpp\stdint.h"\ ".\CppUTestExt\MockSupport_cTestCFile.h"\ .\CppUTestExt\MockSupport_cTestCFile.c : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTestExt\MockSupport_c.h"\ ".\CppUTestExt\MockSupport_cTestCFile.h"\ .\CppUTestExt\MockSupportTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\cpputestext\mockactualcall.h"\ "..\include\CppUTestExt\MockCheckedActualCall.h"\ "..\include\CppUTestExt\MockCheckedExpectedCall.h"\ "..\include\cpputestext\mockexpectedcall.h"\ "..\include\CppUTestExt\MockExpectedCallsList.h"\ "..\include\CppUTestExt\MockFailure.h"\ "..\include\CppUTestExt\MockNamedValue.h"\ "..\include\CppUTestExt\MockSupport.h"\ "..\include\platforms\visualcpp\stdint.h"\ ".\CppUTestExt\MockFailureTest.h"\ .\CppUTestExt\OrderedTestTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\TestTestingFixture.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\CppUTestExt\OrderedTest.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\PluginTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\TestTestingFixture.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\PreprocessorTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\SetPluginTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\SimpleStringTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\PlatformSpecificFunctions.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestMemoryAllocator.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\TestFailureTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\TestFilterTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\TestHarness_cTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\PlatformSpecificFunctions.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestHarness_c.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\TestTestingFixture.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\TestHarness_cTestCFile.c : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestHarness_c.h"\ .\TestInstallerTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\TestMemoryAllocatorTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\PlatformSpecificFunctions.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestMemoryAllocator.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\TestOutputTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\PlatformSpecificFunctions.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\TestRegistryTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\TestResultTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\PlatformSpecificFunctions.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ .\UtestTest.cpp : \ "..\include\CppUTest\CppUTestConfig.h"\ "..\include\CppUTest\MemoryLeakDetectorNewMacros.h"\ "..\include\CppUTest\MemoryLeakWarningPlugin.h"\ "..\include\CppUTest\PlatformSpecificFunctions.h"\ "..\include\CppUTest\PlatformSpecificFunctions_c.h"\ "..\include\CppUTest\SimpleString.h"\ "..\include\CppUTest\StandardCLibrary.h"\ "..\include\CppUTest\TestFailure.h"\ "..\include\CppUTest\TestFilter.h"\ "..\include\CppUTest\TestHarness.h"\ "..\include\CppUTest\TestOutput.h"\ "..\include\CppUTest\TestPlugin.h"\ "..\include\CppUTest\TestRegistry.h"\ "..\include\CppUTest\TestResult.h"\ "..\include\CppUTest\TestTestingFixture.h"\ "..\include\CppUTest\Utest.h"\ "..\include\CppUTest\UtestMacros.h"\ "..\include\platforms\visualcpp\stdint.h"\ cpputest-3.7.2/tests/AllTests.dsp000644 000765 000024 00000023244 12521603460 017735 0ustar00basvoddestaff000000 000000 # Microsoft Developer Studio Project File - Name="AllTests" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=AllTests - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "AllTests.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "AllTests.mak" CFG="AllTests - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "AllTests - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "AllTests - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "AllTests - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\include\Platforms\VisualCpp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUTEST_MEM_LEAK_DETECTION_DISABLED" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:console /incremental:yes /machine:I386 # Begin Special Build Tool TargetPath=.\Release\AllTests.exe SOURCE="$(InputPath)" PostBuild_Cmds=$(TargetPath) # End Special Build Tool !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "..\include" /I "..\include\Platforms\VisualCpp" /FI"CppUTest/MemoryLeakDetectorMallocMacros.h" /FI"CppUTest/MemoryLeakDetectorNewMacros.h" /D "_CONSOLE" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "CPPUTEST_MEM_LEAK_DETECTION_DISABLED" /FR /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 ..\lib\CppUTest.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # SUBTRACT LINK32 /incremental:no # Begin Special Build Tool TargetPath=.\Debug\AllTests.exe SOURCE="$(InputPath)" PostBuild_Cmds=$(TargetPath) -v # End Special Build Tool !ENDIF # Begin Target # Name "AllTests - Win32 Release" # Name "AllTests - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\AllocationInCFile.c # End Source File # Begin Source File SOURCE=.\AllocationInCppFile.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\AllTests.cpp # End Source File # Begin Source File SOURCE=.\CheatSheetTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\CodeMemoryReportFormatterTest.cpp # End Source File # Begin Source File SOURCE=.\CommandLineArgumentsTest.cpp # End Source File # Begin Source File SOURCE=.\CommandLineTestRunnerTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\GMockTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\GTest1Test.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\GTest2ConvertorTest.cpp # End Source File # Begin Source File SOURCE=.\JUnitOutputTest.cpp # End Source File # Begin Source File SOURCE=.\MemoryLeakDetectorTest.cpp # End Source File # Begin Source File SOURCE=.\MemoryLeakOperatorOverloadsTest.cpp # End Source File # Begin Source File SOURCE=.\MemoryLeakWarningTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MemoryReportAllocatorTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MemoryReporterPluginTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MemoryReportFormatterTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockActualCallTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockCheatSheetTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockExpectedCallTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockExpectedFunctionsListTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockFailureTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockFailureTest.h # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockPluginTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockSupport_cTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockSupport_cTestCFile.c # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockSupport_cTestCFile.h # End Source File # Begin Source File SOURCE=.\CppUTestExt\MockSupportTest.cpp # End Source File # Begin Source File SOURCE=.\CppUTestExt\OrderedTestTest.cpp # End Source File # Begin Source File SOURCE=.\PluginTest.cpp # End Source File # Begin Source File SOURCE=.\PreprocessorTest.cpp # End Source File # Begin Source File SOURCE=.\SetPluginTest.cpp # End Source File # Begin Source File SOURCE=.\SimpleStringTest.cpp # End Source File # Begin Source File SOURCE=.\TestFailureTest.cpp # End Source File # Begin Source File SOURCE=.\TestFilterTest.cpp # End Source File # Begin Source File SOURCE=.\TestHarness_cTest.cpp # End Source File # Begin Source File SOURCE=.\TestHarness_cTestCFile.c # End Source File # Begin Source File SOURCE=.\TestInstallerTest.cpp # End Source File # Begin Source File SOURCE=.\TestMemoryAllocatorTest.cpp # End Source File # Begin Source File SOURCE=.\TestOutputTest.cpp # End Source File # Begin Source File SOURCE=.\TestRegistryTest.cpp # End Source File # Begin Source File SOURCE=.\TestResultTest.cpp # End Source File # Begin Source File SOURCE=.\UtestTest.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\AllocationInCFile.h # End Source File # Begin Source File SOURCE=.\AllocationInCppFile.h # End Source File # Begin Source File SOURCE=.\AllTests.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\CommandLineArguments.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\CppUTestConfig.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\MemoryLeakDetector.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\MemoryLeakDetectorMallocMacros.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\MemoryLeakDetectorNewMacros.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\PlatformSpecificFunctions.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\PlatformSpecificFunctions_c.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\SimpleMutex.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\StandardCLibrary.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\TestFailure.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\TestFilter.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\TestMemoryAllocator.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\TestTestingFixture.h # End Source File # Begin Source File SOURCE=..\include\CppUTest\UtestMacros.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project cpputest-3.7.2/tests/AllTests.h000644 000765 000024 00000004066 12521603460 017377 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ //Include this in the test main to execute these tests IMPORT_TEST_GROUP( Utest); IMPORT_TEST_GROUP( Failure); IMPORT_TEST_GROUP( TestOutput); IMPORT_TEST_GROUP( SimpleString); IMPORT_TEST_GROUP( TestInstaller); IMPORT_TEST_GROUP( NullTest); IMPORT_TEST_GROUP( MemoryLeakWarningTest); IMPORT_TEST_GROUP( TestHarness_c); IMPORT_TEST_GROUP( CommandLineTestRunner); IMPORT_TEST_GROUP( JUnitOutputTest); IMPORT_TEST_GROUP( MemoryLeakDetectorTest); /* In allTest.cpp */ IMPORT_TEST_GROUP(CheatSheet); cpputest-3.7.2/tests/AllTests.mak000644 000765 000024 00000074133 12521603460 017722 0ustar00basvoddestaff000000 000000 # Microsoft Developer Studio Generated NMAKE File, Based on AllTests.dsp !IF "$(CFG)" == "" CFG=AllTests - Win32 Debug !MESSAGE No configuration specified. Defaulting to AllTests - Win32 Debug. !ENDIF !IF "$(CFG)" != "AllTests - Win32 Release" && "$(CFG)" != "AllTests - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "AllTests.mak" CFG="AllTests - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "AllTests - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "AllTests - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "AllTests - Win32 Release" OUTDIR=.\Release INTDIR=.\Release # Begin Custom Macros OutDir=.\Release # End Custom Macros !IF "$(RECURSE)" == "0" ALL : "$(OUTDIR)\AllTests.exe" !ELSE ALL : "CppUTest - Win32 Release" "$(OUTDIR)\AllTests.exe" !ENDIF !IF "$(RECURSE)" == "1" CLEAN :"CppUTest - Win32 ReleaseCLEAN" !ELSE CLEAN : !ENDIF -@erase "$(INTDIR)\AllocationInCFile.obj" -@erase "$(INTDIR)\AllocationInCppFile.obj" -@erase "$(INTDIR)\AllTests.obj" -@erase "$(INTDIR)\CheatSheetTest.obj" -@erase "$(INTDIR)\CodeMemoryReportFormatterTest.obj" -@erase "$(INTDIR)\CommandLineArgumentsTest.obj" -@erase "$(INTDIR)\CommandLineTestRunnerTest.obj" -@erase "$(INTDIR)\GMockTest.obj" -@erase "$(INTDIR)\GTest1Test.obj" -@erase "$(INTDIR)\GTest2ConvertorTest.obj" -@erase "$(INTDIR)\JUnitOutputTest.obj" -@erase "$(INTDIR)\MemoryLeakDetectorTest.obj" -@erase "$(INTDIR)\MemoryLeakOperatorOverloadsTest.obj" -@erase "$(INTDIR)\MemoryLeakWarningTest.obj" -@erase "$(INTDIR)\MemoryReportAllocatorTest.obj" -@erase "$(INTDIR)\MemoryReporterPluginTest.obj" -@erase "$(INTDIR)\MemoryReportFormatterTest.obj" -@erase "$(INTDIR)\MockActualCallTest.obj" -@erase "$(INTDIR)\MockCheatSheetTest.obj" -@erase "$(INTDIR)\MockExpectedCallTest.obj" -@erase "$(INTDIR)\MockExpectedFunctionsListTest.obj" -@erase "$(INTDIR)\MockFailureTest.obj" -@erase "$(INTDIR)\MockPluginTest.obj" -@erase "$(INTDIR)\MockSupport_cTest.obj" -@erase "$(INTDIR)\MockSupport_cTestCFile.obj" -@erase "$(INTDIR)\MockSupportTest.obj" -@erase "$(INTDIR)\OrderedTestTest.obj" -@erase "$(INTDIR)\PluginTest.obj" -@erase "$(INTDIR)\PreprocessorTest.obj" -@erase "$(INTDIR)\SetPluginTest.obj" -@erase "$(INTDIR)\SimpleStringTest.obj" -@erase "$(INTDIR)\TestFailureTest.obj" -@erase "$(INTDIR)\TestFilterTest.obj" -@erase "$(INTDIR)\TestHarness_cTest.obj" -@erase "$(INTDIR)\TestHarness_cTestCFile.obj" -@erase "$(INTDIR)\TestInstallerTest.obj" -@erase "$(INTDIR)\TestMemoryAllocatorTest.obj" -@erase "$(INTDIR)\TestOutputTest.obj" -@erase "$(INTDIR)\TestRegistryTest.obj" -@erase "$(INTDIR)\TestResultTest.obj" -@erase "$(INTDIR)\UtestTest.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\AllTests.exe" -@erase "$(OUTDIR)\AllTests.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\include" /I "..\include\Platforms\VisualCpp" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUTEST_MEM_LEAK_DETECTION_DISABLED" /Fp"$(INTDIR)\AllTests.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\AllTests.bsc" BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\AllTests.pdb" /machine:I386 /out:"$(OUTDIR)\AllTests.exe" LINK32_OBJS= \ "$(INTDIR)\AllocationInCFile.obj" \ "$(INTDIR)\AllocationInCppFile.obj" \ "$(INTDIR)\AllTests.obj" \ "$(INTDIR)\CheatSheetTest.obj" \ "$(INTDIR)\CodeMemoryReportFormatterTest.obj" \ "$(INTDIR)\CommandLineArgumentsTest.obj" \ "$(INTDIR)\CommandLineTestRunnerTest.obj" \ "$(INTDIR)\GMockTest.obj" \ "$(INTDIR)\GTest1Test.obj" \ "$(INTDIR)\GTest2ConvertorTest.obj" \ "$(INTDIR)\JUnitOutputTest.obj" \ "$(INTDIR)\MemoryLeakDetectorTest.obj" \ "$(INTDIR)\MemoryLeakOperatorOverloadsTest.obj" \ "$(INTDIR)\MemoryLeakWarningTest.obj" \ "$(INTDIR)\MemoryReportAllocatorTest.obj" \ "$(INTDIR)\MemoryReporterPluginTest.obj" \ "$(INTDIR)\MemoryReportFormatterTest.obj" \ "$(INTDIR)\MockActualCallTest.obj" \ "$(INTDIR)\MockCheatSheetTest.obj" \ "$(INTDIR)\MockExpectedCallTest.obj" \ "$(INTDIR)\MockExpectedFunctionsListTest.obj" \ "$(INTDIR)\MockFailureTest.obj" \ "$(INTDIR)\MockPluginTest.obj" \ "$(INTDIR)\MockSupport_cTest.obj" \ "$(INTDIR)\MockSupport_cTestCFile.obj" \ "$(INTDIR)\MockSupportTest.obj" \ "$(INTDIR)\OrderedTestTest.obj" \ "$(INTDIR)\PluginTest.obj" \ "$(INTDIR)\PreprocessorTest.obj" \ "$(INTDIR)\SetPluginTest.obj" \ "$(INTDIR)\SimpleStringTest.obj" \ "$(INTDIR)\TestFailureTest.obj" \ "$(INTDIR)\TestFilterTest.obj" \ "$(INTDIR)\TestHarness_cTest.obj" \ "$(INTDIR)\TestHarness_cTestCFile.obj" \ "$(INTDIR)\TestInstallerTest.obj" \ "$(INTDIR)\TestMemoryAllocatorTest.obj" \ "$(INTDIR)\TestOutputTest.obj" \ "$(INTDIR)\TestRegistryTest.obj" \ "$(INTDIR)\TestResultTest.obj" \ "$(INTDIR)\UtestTest.obj" \ "..\Release\CppUTest.lib" "$(OUTDIR)\AllTests.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << TargetPath=.\Release\AllTests.exe SOURCE="$(InputPath)" DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep ALL : $(DS_POSTBUILD_DEP) # Begin Custom Macros OutDir=.\Release # End Custom Macros $(DS_POSTBUILD_DEP) : "CppUTest - Win32 Release" "$(OUTDIR)\AllTests.exe" .\Release\AllTests.exe echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" OUTDIR=.\Debug INTDIR=.\Debug # Begin Custom Macros OutDir=.\Debug # End Custom Macros !IF "$(RECURSE)" == "0" ALL : "$(OUTDIR)\AllTests.exe" "$(OUTDIR)\AllTests.bsc" !ELSE ALL : "CppUTest - Win32 Debug" "$(OUTDIR)\AllTests.exe" "$(OUTDIR)\AllTests.bsc" !ENDIF !IF "$(RECURSE)" == "1" CLEAN :"CppUTest - Win32 DebugCLEAN" !ELSE CLEAN : !ENDIF -@erase "$(INTDIR)\AllocationInCFile.obj" -@erase "$(INTDIR)\AllocationInCFile.sbr" -@erase "$(INTDIR)\AllocationInCppFile.obj" -@erase "$(INTDIR)\AllocationInCppFile.sbr" -@erase "$(INTDIR)\AllTests.obj" -@erase "$(INTDIR)\AllTests.sbr" -@erase "$(INTDIR)\CheatSheetTest.obj" -@erase "$(INTDIR)\CheatSheetTest.sbr" -@erase "$(INTDIR)\CodeMemoryReportFormatterTest.obj" -@erase "$(INTDIR)\CodeMemoryReportFormatterTest.sbr" -@erase "$(INTDIR)\CommandLineArgumentsTest.obj" -@erase "$(INTDIR)\CommandLineArgumentsTest.sbr" -@erase "$(INTDIR)\CommandLineTestRunnerTest.obj" -@erase "$(INTDIR)\CommandLineTestRunnerTest.sbr" -@erase "$(INTDIR)\GMockTest.obj" -@erase "$(INTDIR)\GMockTest.sbr" -@erase "$(INTDIR)\GTest1Test.obj" -@erase "$(INTDIR)\GTest1Test.sbr" -@erase "$(INTDIR)\GTest2ConvertorTest.obj" -@erase "$(INTDIR)\GTest2ConvertorTest.sbr" -@erase "$(INTDIR)\JUnitOutputTest.obj" -@erase "$(INTDIR)\JUnitOutputTest.sbr" -@erase "$(INTDIR)\MemoryLeakDetectorTest.obj" -@erase "$(INTDIR)\MemoryLeakDetectorTest.sbr" -@erase "$(INTDIR)\MemoryLeakOperatorOverloadsTest.obj" -@erase "$(INTDIR)\MemoryLeakOperatorOverloadsTest.sbr" -@erase "$(INTDIR)\MemoryLeakWarningTest.obj" -@erase "$(INTDIR)\MemoryLeakWarningTest.sbr" -@erase "$(INTDIR)\MemoryReportAllocatorTest.obj" -@erase "$(INTDIR)\MemoryReportAllocatorTest.sbr" -@erase "$(INTDIR)\MemoryReporterPluginTest.obj" -@erase "$(INTDIR)\MemoryReporterPluginTest.sbr" -@erase "$(INTDIR)\MemoryReportFormatterTest.obj" -@erase "$(INTDIR)\MemoryReportFormatterTest.sbr" -@erase "$(INTDIR)\MockActualCallTest.obj" -@erase "$(INTDIR)\MockActualCallTest.sbr" -@erase "$(INTDIR)\MockCheatSheetTest.obj" -@erase "$(INTDIR)\MockCheatSheetTest.sbr" -@erase "$(INTDIR)\MockExpectedCallTest.obj" -@erase "$(INTDIR)\MockExpectedCallTest.sbr" -@erase "$(INTDIR)\MockExpectedFunctionsListTest.obj" -@erase "$(INTDIR)\MockExpectedFunctionsListTest.sbr" -@erase "$(INTDIR)\MockFailureTest.obj" -@erase "$(INTDIR)\MockFailureTest.sbr" -@erase "$(INTDIR)\MockPluginTest.obj" -@erase "$(INTDIR)\MockPluginTest.sbr" -@erase "$(INTDIR)\MockSupport_cTest.obj" -@erase "$(INTDIR)\MockSupport_cTest.sbr" -@erase "$(INTDIR)\MockSupport_cTestCFile.obj" -@erase "$(INTDIR)\MockSupport_cTestCFile.sbr" -@erase "$(INTDIR)\MockSupportTest.obj" -@erase "$(INTDIR)\MockSupportTest.sbr" -@erase "$(INTDIR)\OrderedTestTest.obj" -@erase "$(INTDIR)\OrderedTestTest.sbr" -@erase "$(INTDIR)\PluginTest.obj" -@erase "$(INTDIR)\PluginTest.sbr" -@erase "$(INTDIR)\PreprocessorTest.obj" -@erase "$(INTDIR)\PreprocessorTest.sbr" -@erase "$(INTDIR)\SetPluginTest.obj" -@erase "$(INTDIR)\SetPluginTest.sbr" -@erase "$(INTDIR)\SimpleStringTest.obj" -@erase "$(INTDIR)\SimpleStringTest.sbr" -@erase "$(INTDIR)\TestFailureTest.obj" -@erase "$(INTDIR)\TestFailureTest.sbr" -@erase "$(INTDIR)\TestFilterTest.obj" -@erase "$(INTDIR)\TestFilterTest.sbr" -@erase "$(INTDIR)\TestHarness_cTest.obj" -@erase "$(INTDIR)\TestHarness_cTest.sbr" -@erase "$(INTDIR)\TestHarness_cTestCFile.obj" -@erase "$(INTDIR)\TestHarness_cTestCFile.sbr" -@erase "$(INTDIR)\TestInstallerTest.obj" -@erase "$(INTDIR)\TestInstallerTest.sbr" -@erase "$(INTDIR)\TestMemoryAllocatorTest.obj" -@erase "$(INTDIR)\TestMemoryAllocatorTest.sbr" -@erase "$(INTDIR)\TestOutputTest.obj" -@erase "$(INTDIR)\TestOutputTest.sbr" -@erase "$(INTDIR)\TestRegistryTest.obj" -@erase "$(INTDIR)\TestRegistryTest.sbr" -@erase "$(INTDIR)\TestResultTest.obj" -@erase "$(INTDIR)\TestResultTest.sbr" -@erase "$(INTDIR)\UtestTest.obj" -@erase "$(INTDIR)\UtestTest.sbr" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\AllTests.bsc" -@erase "$(OUTDIR)\AllTests.exe" -@erase "$(OUTDIR)\AllTests.ilk" -@erase "$(OUTDIR)\AllTests.pdb" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W3 /GX /ZI /Od /I "..\include" /I "..\include\Platforms\VisualCpp" /FI"CppUTest/MemoryLeakDetectorMallocMacros.h" /FI"CppUTest/MemoryLeakDetectorNewMacros.h" /D "_CONSOLE" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "CPPUTEST_MEM_LEAK_DETECTION_DISABLED" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\AllTests.bsc" BSC32_SBRS= \ "$(INTDIR)\AllocationInCFile.sbr" \ "$(INTDIR)\AllocationInCppFile.sbr" \ "$(INTDIR)\AllTests.sbr" \ "$(INTDIR)\CheatSheetTest.sbr" \ "$(INTDIR)\CodeMemoryReportFormatterTest.sbr" \ "$(INTDIR)\CommandLineArgumentsTest.sbr" \ "$(INTDIR)\CommandLineTestRunnerTest.sbr" \ "$(INTDIR)\GMockTest.sbr" \ "$(INTDIR)\GTest1Test.sbr" \ "$(INTDIR)\GTest2ConvertorTest.sbr" \ "$(INTDIR)\JUnitOutputTest.sbr" \ "$(INTDIR)\MemoryLeakDetectorTest.sbr" \ "$(INTDIR)\MemoryLeakOperatorOverloadsTest.sbr" \ "$(INTDIR)\MemoryLeakWarningTest.sbr" \ "$(INTDIR)\MemoryReportAllocatorTest.sbr" \ "$(INTDIR)\MemoryReporterPluginTest.sbr" \ "$(INTDIR)\MemoryReportFormatterTest.sbr" \ "$(INTDIR)\MockActualCallTest.sbr" \ "$(INTDIR)\MockCheatSheetTest.sbr" \ "$(INTDIR)\MockExpectedCallTest.sbr" \ "$(INTDIR)\MockExpectedFunctionsListTest.sbr" \ "$(INTDIR)\MockFailureTest.sbr" \ "$(INTDIR)\MockPluginTest.sbr" \ "$(INTDIR)\MockSupport_cTest.sbr" \ "$(INTDIR)\MockSupport_cTestCFile.sbr" \ "$(INTDIR)\MockSupportTest.sbr" \ "$(INTDIR)\OrderedTestTest.sbr" \ "$(INTDIR)\PluginTest.sbr" \ "$(INTDIR)\PreprocessorTest.sbr" \ "$(INTDIR)\SetPluginTest.sbr" \ "$(INTDIR)\SimpleStringTest.sbr" \ "$(INTDIR)\TestFailureTest.sbr" \ "$(INTDIR)\TestFilterTest.sbr" \ "$(INTDIR)\TestHarness_cTest.sbr" \ "$(INTDIR)\TestHarness_cTestCFile.sbr" \ "$(INTDIR)\TestInstallerTest.sbr" \ "$(INTDIR)\TestMemoryAllocatorTest.sbr" \ "$(INTDIR)\TestOutputTest.sbr" \ "$(INTDIR)\TestRegistryTest.sbr" \ "$(INTDIR)\TestResultTest.sbr" \ "$(INTDIR)\UtestTest.sbr" "$(OUTDIR)\AllTests.bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << LINK32=link.exe LINK32_FLAGS=..\lib\CppUTest.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\AllTests.pdb" /debug /machine:I386 /out:"$(OUTDIR)\AllTests.exe" /pdbtype:sept LINK32_OBJS= \ "$(INTDIR)\AllocationInCFile.obj" \ "$(INTDIR)\AllocationInCppFile.obj" \ "$(INTDIR)\AllTests.obj" \ "$(INTDIR)\CheatSheetTest.obj" \ "$(INTDIR)\CodeMemoryReportFormatterTest.obj" \ "$(INTDIR)\CommandLineArgumentsTest.obj" \ "$(INTDIR)\CommandLineTestRunnerTest.obj" \ "$(INTDIR)\GMockTest.obj" \ "$(INTDIR)\GTest1Test.obj" \ "$(INTDIR)\GTest2ConvertorTest.obj" \ "$(INTDIR)\JUnitOutputTest.obj" \ "$(INTDIR)\MemoryLeakDetectorTest.obj" \ "$(INTDIR)\MemoryLeakOperatorOverloadsTest.obj" \ "$(INTDIR)\MemoryLeakWarningTest.obj" \ "$(INTDIR)\MemoryReportAllocatorTest.obj" \ "$(INTDIR)\MemoryReporterPluginTest.obj" \ "$(INTDIR)\MemoryReportFormatterTest.obj" \ "$(INTDIR)\MockActualCallTest.obj" \ "$(INTDIR)\MockCheatSheetTest.obj" \ "$(INTDIR)\MockExpectedCallTest.obj" \ "$(INTDIR)\MockExpectedFunctionsListTest.obj" \ "$(INTDIR)\MockFailureTest.obj" \ "$(INTDIR)\MockPluginTest.obj" \ "$(INTDIR)\MockSupport_cTest.obj" \ "$(INTDIR)\MockSupport_cTestCFile.obj" \ "$(INTDIR)\MockSupportTest.obj" \ "$(INTDIR)\OrderedTestTest.obj" \ "$(INTDIR)\PluginTest.obj" \ "$(INTDIR)\PreprocessorTest.obj" \ "$(INTDIR)\SetPluginTest.obj" \ "$(INTDIR)\SimpleStringTest.obj" \ "$(INTDIR)\TestFailureTest.obj" \ "$(INTDIR)\TestFilterTest.obj" \ "$(INTDIR)\TestHarness_cTest.obj" \ "$(INTDIR)\TestHarness_cTestCFile.obj" \ "$(INTDIR)\TestInstallerTest.obj" \ "$(INTDIR)\TestMemoryAllocatorTest.obj" \ "$(INTDIR)\TestOutputTest.obj" \ "$(INTDIR)\TestRegistryTest.obj" \ "$(INTDIR)\TestResultTest.obj" \ "$(INTDIR)\UtestTest.obj" \ "..\lib\CppUTest.lib" "$(OUTDIR)\AllTests.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << TargetPath=.\Debug\AllTests.exe SOURCE="$(InputPath)" DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep ALL : $(DS_POSTBUILD_DEP) # Begin Custom Macros OutDir=.\Debug # End Custom Macros $(DS_POSTBUILD_DEP) : "CppUTest - Win32 Debug" "$(OUTDIR)\AllTests.exe" "$(OUTDIR)\AllTests.bsc" .\Debug\AllTests.exe -v echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)" !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("AllTests.dep") !INCLUDE "AllTests.dep" !ELSE !MESSAGE Warning: cannot find "AllTests.dep" !ENDIF !ENDIF !IF "$(CFG)" == "AllTests - Win32 Release" || "$(CFG)" == "AllTests - Win32 Debug" SOURCE=.\AllocationInCFile.c !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\AllocationInCFile.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\AllocationInCFile.obj" "$(INTDIR)\AllocationInCFile.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\AllocationInCppFile.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\AllocationInCppFile.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\AllocationInCppFile.obj" "$(INTDIR)\AllocationInCppFile.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\CppUTestExt\AllTests.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\AllTests.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\AllTests.obj" "$(INTDIR)\AllTests.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CheatSheetTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\CheatSheetTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\CheatSheetTest.obj" "$(INTDIR)\CheatSheetTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\CppUTestExt\CodeMemoryReportFormatterTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\CodeMemoryReportFormatterTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\CodeMemoryReportFormatterTest.obj" "$(INTDIR)\CodeMemoryReportFormatterTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CommandLineArgumentsTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\CommandLineArgumentsTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\CommandLineArgumentsTest.obj" "$(INTDIR)\CommandLineArgumentsTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\CommandLineTestRunnerTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\CommandLineTestRunnerTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\CommandLineTestRunnerTest.obj" "$(INTDIR)\CommandLineTestRunnerTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\CppUTestExt\GMockTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\GMockTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\GMockTest.obj" "$(INTDIR)\GMockTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\GTest1Test.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\GTest1Test.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\GTest1Test.obj" "$(INTDIR)\GTest1Test.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\GTest2ConvertorTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\GTest2ConvertorTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\GTest2ConvertorTest.obj" "$(INTDIR)\GTest2ConvertorTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\JUnitOutputTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\JUnitOutputTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\JUnitOutputTest.obj" "$(INTDIR)\JUnitOutputTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\MemoryLeakDetectorTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MemoryLeakDetectorTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MemoryLeakDetectorTest.obj" "$(INTDIR)\MemoryLeakDetectorTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\MemoryLeakOperatorOverloadsTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MemoryLeakOperatorOverloadsTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MemoryLeakOperatorOverloadsTest.obj" "$(INTDIR)\MemoryLeakOperatorOverloadsTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\MemoryLeakWarningTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MemoryLeakWarningTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MemoryLeakWarningTest.obj" "$(INTDIR)\MemoryLeakWarningTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\CppUTestExt\MemoryReportAllocatorTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MemoryReportAllocatorTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MemoryReportAllocatorTest.obj" "$(INTDIR)\MemoryReportAllocatorTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MemoryReporterPluginTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MemoryReporterPluginTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MemoryReporterPluginTest.obj" "$(INTDIR)\MemoryReporterPluginTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MemoryReportFormatterTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MemoryReportFormatterTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MemoryReportFormatterTest.obj" "$(INTDIR)\MemoryReportFormatterTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MockActualCallTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MockActualCallTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MockActualCallTest.obj" "$(INTDIR)\MockActualCallTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MockCheatSheetTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MockCheatSheetTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MockCheatSheetTest.obj" "$(INTDIR)\MockCheatSheetTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MockExpectedCallTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MockExpectedCallTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MockExpectedCallTest.obj" "$(INTDIR)\MockExpectedCallTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MockExpectedFunctionsListTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MockExpectedFunctionsListTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MockExpectedFunctionsListTest.obj" "$(INTDIR)\MockExpectedFunctionsListTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MockFailureTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MockFailureTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MockFailureTest.obj" "$(INTDIR)\MockFailureTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MockPluginTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MockPluginTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MockPluginTest.obj" "$(INTDIR)\MockPluginTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MockSupport_cTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MockSupport_cTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MockSupport_cTest.obj" "$(INTDIR)\MockSupport_cTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MockSupport_cTestCFile.c !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MockSupport_cTestCFile.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MockSupport_cTestCFile.obj" "$(INTDIR)\MockSupport_cTestCFile.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\MockSupportTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\MockSupportTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\MockSupportTest.obj" "$(INTDIR)\MockSupportTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\CppUTestExt\OrderedTestTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\OrderedTestTest.obj" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\OrderedTestTest.obj" "$(INTDIR)\OrderedTestTest.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) !ENDIF SOURCE=.\PluginTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\PluginTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\PluginTest.obj" "$(INTDIR)\PluginTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\PreprocessorTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\PreprocessorTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\PreprocessorTest.obj" "$(INTDIR)\PreprocessorTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\SetPluginTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\SetPluginTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\SetPluginTest.obj" "$(INTDIR)\SetPluginTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\SimpleStringTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\SimpleStringTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\SimpleStringTest.obj" "$(INTDIR)\SimpleStringTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\TestFailureTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\TestFailureTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\TestFailureTest.obj" "$(INTDIR)\TestFailureTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\TestFilterTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\TestFilterTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\TestFilterTest.obj" "$(INTDIR)\TestFilterTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\TestHarness_cTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\TestHarness_cTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\TestHarness_cTest.obj" "$(INTDIR)\TestHarness_cTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\TestHarness_cTestCFile.c !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\TestHarness_cTestCFile.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\TestHarness_cTestCFile.obj" "$(INTDIR)\TestHarness_cTestCFile.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\TestInstallerTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\TestInstallerTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\TestInstallerTest.obj" "$(INTDIR)\TestInstallerTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\TestMemoryAllocatorTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\TestMemoryAllocatorTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\TestMemoryAllocatorTest.obj" "$(INTDIR)\TestMemoryAllocatorTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\TestOutputTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\TestOutputTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\TestOutputTest.obj" "$(INTDIR)\TestOutputTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\TestRegistryTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\TestRegistryTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\TestRegistryTest.obj" "$(INTDIR)\TestRegistryTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\TestResultTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\TestResultTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\TestResultTest.obj" "$(INTDIR)\TestResultTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF SOURCE=.\UtestTest.cpp !IF "$(CFG)" == "AllTests - Win32 Release" "$(INTDIR)\UtestTest.obj" : $(SOURCE) "$(INTDIR)" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "$(INTDIR)\UtestTest.obj" "$(INTDIR)\UtestTest.sbr" : $(SOURCE) "$(INTDIR)" !ENDIF !IF "$(CFG)" == "AllTests - Win32 Release" "CppUTest - Win32 Release" : cd "\DEV\05_CPPUTEST\CPPUTEST" $(MAKE) /$(MAKEFLAGS) /F .\CppUTest.mak CFG="CppUTest - Win32 Release" cd ".\tests" "CppUTest - Win32 ReleaseCLEAN" : cd "\DEV\05_CPPUTEST\CPPUTEST" $(MAKE) /$(MAKEFLAGS) /F .\CppUTest.mak CFG="CppUTest - Win32 Release" RECURSE=1 CLEAN cd ".\tests" !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" "CppUTest - Win32 Debug" : cd "\DEV\05_CPPUTEST\CPPUTEST" $(MAKE) /$(MAKEFLAGS) /F .\CppUTest.mak CFG="CppUTest - Win32 Debug" cd ".\tests" "CppUTest - Win32 DebugCLEAN" : cd "\DEV\05_CPPUTEST\CPPUTEST" $(MAKE) /$(MAKEFLAGS) /F .\CppUTest.mak CFG="CppUTest - Win32 Debug" RECURSE=1 CLEAN cd ".\tests" !ENDIF !ENDIF cpputest-3.7.2/tests/AllTests.vcproj000644 000765 000024 00000074457 12521603460 020466 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/tests/AllTests.vcxproj000644 000765 000024 00000023347 12521603460 020646 0ustar00basvoddestaff000000 000000  Debug Win32 Release Win32 {913088F6-37C0-4195-80E9-548C7C5303CB} Application false MultiByte Application false MultiByte <_ProjectFileVersion>10.0.30319.1 ..\cpputest_build\ ..\cpputest_build\Release\ false ..\cpputest_build\ ..\cpputest_build\Debug\ true .\Release/AllTests.tlb MaxSpeed OnlyExplicitInline WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreadedDLL true Level3 true ..\include;..\include\CppUTestExt\CppUTestGTest;..\include\CppUTestExt\CppUTestGMock;..\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) OldStyle NDEBUG;%(PreprocessorDefinitions) 0x0409 true Console false MachineX86 true .\Release/AllTests.bsc "$(TargetPath)" .\Debug/AllTests.tlb Disabled ..\include;..\include\CppUTestExt\CppUTestGTest;..\include\CppUTestExt\CppUTestGMock;..\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true Level3 true EditAndContinue ..\include\Platforms\VisualCpp\Platform.h;..\include\CppUTest\MemoryLeakDetectorMallocMacros.h;%(ForcedIncludeFiles) _DEBUG;%(PreprocessorDefinitions) 0x0409 true true Console false MachineX86 true "$(TargetPath)" {f468f539-27bd-468e-be64-dde641400b51} false cpputest-3.7.2/tests/CheatSheetTest.cpp000644 000765 000024 00000001401 12521603460 021042 0ustar00basvoddestaff000000 000000 static void (*real_one) (); static void stub(){} /* in CheatSheetTest.cpp */ #include "CppUTest/TestHarness.h" /* Declare TestGroup with name CheatSheet */ TEST_GROUP(CheatSheet) { /* declare a setup method for the test group. Optional. */ void setup () { /* Set method real_one to stub. Automatically restore in teardown */ UT_PTR_SET(real_one, stub); } /* Declare a teardown method for the test group. Optional */ void teardown() { } }; /* Do not forget semicolumn */ /* Declare one test within the test group */ TEST(CheatSheet, TestName) { /* Check two longs are equal */ LONGS_EQUAL(1, 1); /* Check a condition */ CHECK(true == true); /* Check a string */ STRCMP_EQUAL("HelloWorld", "HelloWorld"); } cpputest-3.7.2/tests/CMakeLists.txt000644 000765 000024 00000005207 12523627400 020233 0ustar00basvoddestaff000000 000000 enable_testing() set(CppUTestTests_src AllTests.cpp SetPluginTest.cpp CheatSheetTest.cpp SimpleStringTest.cpp CommandLineArgumentsTest.cpp TestFailureTest.cpp TestFailureNaNTest.cpp CommandLineTestRunnerTest.cpp TestFilterTest.cpp TestHarness_cTest.cpp JUnitOutputTest.cpp TestHarness_cTestCFile.c MemoryLeakDetectorTest.cpp TestInstallerTest.cpp AllocLetTestFree.c MemoryLeakOperatorOverloadsTest.cpp TestMemoryAllocatorTest.cpp MemoryLeakWarningTest.cpp TestOutputTest.cpp AllocLetTestFreeTest.cpp TestRegistryTest.cpp AllocationInCFile.c PluginTest.cpp TestResultTest.cpp PreprocessorTest.cpp TestUTestMacro.cpp AllocationInCppFile.cpp UtestTest.cpp SimpleMutexTest.cpp UtestPlatformTest.cpp ) if (MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4723") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4723") endif (MSVC) if (MINGW) find_package (Threads REQUIRED) set(THREAD_LIB "pthread") endif (MINGW) add_executable(CppUTestTests ${CppUTestTests_src}) target_link_libraries(CppUTestTests CppUTest ${THREAD_LIB}) if (TESTS) if (TESTS_DETAILED) # get all test groups and names execute_process(COMMAND tests/CppUTestTests -ln OUTPUT_VARIABLE CppUTestTests_GroupsAndNames) # convert space-separated string into a list separate_arguments(CppUTestTests_GroupsAndNames) # create separate CTest test for each CppUTestTests test set(lastgroup "") foreach(testfullname ${CppUTestTests_GroupsAndNames}) string(REGEX MATCH "^([^/.]+)" groupname ${testfullname}) string(REGEX MATCH "([^/.]+)$" testname ${testfullname}) if (NOT ("${groupname}" STREQUAL "${lastgroup}")) message("TestGroup1: ${groupname}:") set(lastgroup "${groupname}") endif (NOT ("${groupname}" STREQUAL "${lastgroup}")) message("... ${testname}") add_test(NAME CppUTest.${testfullname} COMMAND ${EXECUTABLE_OUTPUT_PATH}/CppUTestTests -sg ${groupname} -sn ${testname} -c) endforeach() else (TESTS_DETAILED) # get all test groups execute_process(COMMAND tests/CppUTestTests -lg OUTPUT_VARIABLE CppUTestTests_Groups) # create separate test for each group separate_arguments(CppUTestTests_Groups) foreach(group ${CppUTestTests_Groups}) message("TestGroup1: ${group}") add_test(NAME CppUTest.${group} COMMAND ${EXECUTABLE_OUTPUT_PATH}/CppUTestTests -sg ${group} -c) endforeach() endif (TESTS_DETAILED) add_subdirectory(CppUTestExt) endif (TESTS) cpputest-3.7.2/tests/CommandLineArgumentsTest.cpp000644 000765 000024 00000023420 12521603460 023106 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/CommandLineArguments.h" #include "CppUTest/TestRegistry.h" class OptionsPlugin: public TestPlugin { public: OptionsPlugin(const SimpleString& name) : TestPlugin(name) { } ~OptionsPlugin() { } bool parseArguments(int /*ac*/, const char** /*av*/, int /*index*/) { return true; } }; TEST_GROUP(CommandLineArguments) { CommandLineArguments* args; OptionsPlugin* plugin; void setup() { plugin = new OptionsPlugin("options"); args = NULL; } void teardown() { delete args; delete plugin; } bool newArgumentParser(int argc, const char** argv) { args = new CommandLineArguments(argc, argv); return args->parse(plugin); } }; TEST(CommandLineArguments, Create) { } TEST(CommandLineArguments, verboseSetMultipleParameters) { const char* argv[] = { "tests.exe", "-v" }; CHECK(newArgumentParser(2, argv)); CHECK(args->isVerbose()); } TEST(CommandLineArguments, setColor) { const char* argv[] = { "tests.exe", "-c" }; CHECK(newArgumentParser(2, argv)); CHECK(args->isColor()); } TEST(CommandLineArguments, repeatSet) { int argc = 2; const char* argv[] = { "tests.exe", "-r3" }; CHECK(newArgumentParser(argc, argv)); LONGS_EQUAL(3, args->getRepeatCount()); } TEST(CommandLineArguments, repeatSetDifferentParameter) { int argc = 3; const char* argv[] = { "tests.exe", "-r", "4" }; CHECK(newArgumentParser(argc, argv)); LONGS_EQUAL(4, args->getRepeatCount()); } TEST(CommandLineArguments, repeatSetDefaultsToTwo) { int argc = 2; const char* argv[] = { "tests.exe", "-r" }; CHECK(newArgumentParser(argc, argv)); LONGS_EQUAL(2, args->getRepeatCount()); } TEST(CommandLineArguments, runningTestsInSeperateProcesses) { int argc = 2; const char* argv[] = { "tests.exe", "-p" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->runTestsInSeperateProcess()); } TEST(CommandLineArguments, setGroupFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-g", "group" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(TestFilter("group"), *args->getGroupFilters()); } TEST(CommandLineArguments, setGroupFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-ggroup" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(TestFilter("group"), *args->getGroupFilters()); } TEST(CommandLineArguments, setStrictGroupFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-sg", "group" }; CHECK(newArgumentParser(argc, argv)); TestFilter groupFilter("group"); groupFilter.strictMatching(); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setStrictGroupFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-sggroup" }; CHECK(newArgumentParser(argc, argv)); TestFilter groupFilter("group"); groupFilter.strictMatching(); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setNameFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-n", "name" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(TestFilter("name"), *args->getNameFilters()); } TEST(CommandLineArguments, setStrictNameFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-sn", "name" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("name"); nameFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); } TEST(CommandLineArguments, setNameFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-nname" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(TestFilter("name"), *args->getNameFilters()); } TEST(CommandLineArguments, setTestToRunUsingVerboseOutput) { int argc = 2; const char* argv[] = { "tests.exe", "TEST(testgroup, testname) - stuff" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("testname"); TestFilter groupFilter("testgroup"); nameFilter.strictMatching(); groupFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setTestToRunUsingVerboseOutputOfIgnoreTest) { int argc = 2; const char* argv[] = { "tests.exe", "IGNORE_TEST(testgroup, testname) - stuff" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("testname"); TestFilter groupFilter("testgroup"); nameFilter.strictMatching(); groupFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setNormalOutput) { int argc = 2; const char* argv[] = { "tests.exe", "-onormal" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isEclipseOutput()); } TEST(CommandLineArguments, setEclipseOutput) { int argc = 2; const char* argv[] = { "tests.exe", "-oeclipse" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isEclipseOutput()); } TEST(CommandLineArguments, setNormalOutputDifferentParameter) { int argc = 3; const char* argv[] = { "tests.exe", "-o", "normal" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isEclipseOutput()); } TEST(CommandLineArguments, setJUnitOutputDifferentParameter) { int argc = 3; const char* argv[] = { "tests.exe", "-o", "junit" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isJUnitOutput()); } TEST(CommandLineArguments, setOutputToGarbage) { int argc = 3; const char* argv[] = { "tests.exe", "-o", "garbage" }; CHECK(!newArgumentParser(argc, argv)); } TEST(CommandLineArguments, setPrintGroups) { int argc = 2; const char* argv[] = { "tests.exe", "-lg" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isListingTestGroupNames()); } TEST(CommandLineArguments, setPrintGroupsAndNames) { int argc = 2; const char* argv[] = { "tests.exe", "-ln" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isListingTestGroupAndCaseNames()); } TEST(CommandLineArguments, weirdParamatersPrintsUsageAndReturnsFalse) { int argc = 2; const char* argv[] = { "tests.exe", "-SomethingWeird" }; CHECK(!newArgumentParser(argc, argv)); STRCMP_EQUAL("usage [-v] [-c] [-p] [-lg] [-ln] [-r#] [-g|sg groupName]... [-n|sn testName]... [\"TEST(groupName, testName)\"]... [-o{normal, junit}] [-k packageName]\n", args->usage()); } TEST(CommandLineArguments, pluginKnowsOption) { int argc = 2; const char* argv[] = { "tests.exe", "-pPluginOption" }; TestRegistry::getCurrentRegistry()->installPlugin(plugin); CHECK(newArgumentParser(argc, argv)); TestRegistry::getCurrentRegistry()->removePluginByName("options"); } TEST(CommandLineArguments, checkDefaultArguments) { int argc = 1; const char* argv[] = { "tests.exe" }; CHECK(newArgumentParser(argc, argv)); CHECK(!args->isVerbose()); LONGS_EQUAL(1, args->getRepeatCount()); CHECK(NULL == args->getGroupFilters()); CHECK(NULL == args->getNameFilters()); CHECK(args->isEclipseOutput()); CHECK(SimpleString("") == args->getPackageName()); } TEST(CommandLineArguments, setPackageName) { int argc = 3; const char* argv[] = { "tests.exe", "-k", "package" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(SimpleString("package"), args->getPackageName()); } TEST(CommandLineArguments, lotsOfGroupsAndTests) { int argc = 10; const char* argv[] = { "tests.exe", "-sggroup1", "-sntest1", "-sggroup2", "-sntest2", "-sntest3", "-sggroup3", "-sntest4", "-sggroup4", "-sntest5" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("test1"); nameFilter.strictMatching(); TestFilter groupFilter("group1"); groupFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()->getNext()->getNext()->getNext()->getNext()); CHECK_EQUAL(groupFilter, *args->getGroupFilters()->getNext()->getNext()->getNext()); } TEST(CommandLineArguments, lastParameterFieldMissing) { int argc = 2; const char* argv[] = { "tests.exe", "-k"}; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(SimpleString(""), args->getPackageName()); } cpputest-3.7.2/tests/CommandLineTestRunnerTest.cpp000644 000765 000024 00000017622 12521603460 023261 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/TestPlugin.h" #include "CppUTest/JUnitTestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" class DummyPluginWhichCountsThePlugins : public TestPlugin { public: bool returnValue; int amountOfPlugins; DummyPluginWhichCountsThePlugins(const SimpleString& name, TestRegistry* registry) : TestPlugin(name), returnValue(true), amountOfPlugins(0), registry_(registry) { } virtual bool parseArguments(int, const char**, int) { /* Remove ourselves from the count */ amountOfPlugins = registry_->countPlugins() - 1; return returnValue; } private: TestRegistry* registry_; }; class CommandLineTestRunnerWithStringBufferOutput : public CommandLineTestRunner { public: StringBufferTestOutput* fakeJUnitOuputWhichIsReallyABuffer_; StringBufferTestOutput* fakeConsoleOutputWhichIsReallyABuffer; CommandLineTestRunnerWithStringBufferOutput(int argc, const char** argv, TestRegistry* registry) : CommandLineTestRunner(argc, argv, registry), fakeJUnitOuputWhichIsReallyABuffer_(NULL), fakeConsoleOutputWhichIsReallyABuffer(NULL) {} TestOutput* createConsoleOutput() { fakeConsoleOutputWhichIsReallyABuffer = new StringBufferTestOutput; return fakeConsoleOutputWhichIsReallyABuffer; } TestOutput* createJUnitOutput(const SimpleString&) { fakeJUnitOuputWhichIsReallyABuffer_ = new StringBufferTestOutput; return fakeJUnitOuputWhichIsReallyABuffer_; } }; TEST_GROUP(CommandLineTestRunner) { TestRegistry registry; UtestShell *oneTest_; DummyPluginWhichCountsThePlugins* pluginCountingPlugin; void setup() { oneTest_ = new UtestShell("group", "test", "file", 1); registry.addTest(oneTest_); pluginCountingPlugin = new DummyPluginWhichCountsThePlugins("PluginCountingPlugin", ®istry); } void teardown() { delete pluginCountingPlugin; delete oneTest_; } }; TEST(CommandLineTestRunner, OnePluginGetsInstalledDuringTheRunningTheTests) { const char* argv[] = { "tests.exe", "-psomething"}; registry.installPlugin(pluginCountingPlugin); CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); registry.removePluginByName("PluginCountingPlugin"); LONGS_EQUAL(0, registry.countPlugins()); LONGS_EQUAL(1, pluginCountingPlugin->amountOfPlugins); } TEST(CommandLineTestRunner, NoPluginsAreInstalledAtTheEndOfARunWhenTheArgumentsAreInvalid) { const char* argv[] = { "tests.exe", "-fdskjnfkds"}; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); LONGS_EQUAL(0, registry.countPlugins()); } TEST(CommandLineTestRunner, JunitOutputEnabled) { const char* argv[] = { "tests.exe", "-ojunit"}; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); CHECK(commandLineTestRunner.fakeJUnitOuputWhichIsReallyABuffer_); } TEST(CommandLineTestRunner, JunitOutputAndVerboseEnabled) { const char* argv[] = { "tests.exe", "-ojunit", "-v"}; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(3, argv, ®istry); commandLineTestRunner.runAllTestsMain(); STRCMP_CONTAINS("TEST(group, test)", commandLineTestRunner.fakeJUnitOuputWhichIsReallyABuffer_->getOutput().asCharString()); STRCMP_CONTAINS("TEST(group, test)", commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().asCharString()); } TEST(CommandLineTestRunner, listTestGroupNamesShouldWorkProperly) { const char* argv[] = { "tests.exe", "-lg" }; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); STRCMP_CONTAINS("group", commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().asCharString()); } TEST(CommandLineTestRunner, listTestGroupAndCaseNamesShouldWorkProperly) { const char* argv[] = { "tests.exe", "-ln" }; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); STRCMP_CONTAINS("group.test", commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().asCharString()); } struct FakeOutput { FakeOutput() : SaveFOpen(PlatformSpecificFOpen), SaveFPuts(PlatformSpecificFPuts), SaveFClose(PlatformSpecificFClose), SavePutchar(PlatformSpecificPutchar) { PlatformSpecificFOpen = fopen_fake; PlatformSpecificFPuts = fputs_fake; PlatformSpecificFClose = fclose_fake; PlatformSpecificPutchar = putchar_fake; } ~FakeOutput() { PlatformSpecificPutchar = SavePutchar; PlatformSpecificFOpen = SaveFOpen; PlatformSpecificFPuts = SaveFPuts; PlatformSpecificFClose = SaveFClose; } static PlatformSpecificFile fopen_fake(const char*, const char*) { return (PlatformSpecificFile)0; } static void fputs_fake(const char* str, PlatformSpecificFile) { file += str; } static void fclose_fake(PlatformSpecificFile) { } static int putchar_fake(int c) { console += StringFrom((char)c); return c; } static SimpleString file; static SimpleString console; private: PlatformSpecificFile (*SaveFOpen)(const char*, const char*); void (*SaveFPuts)(const char*, PlatformSpecificFile); void (*SaveFClose)(PlatformSpecificFile); int (*SavePutchar)(int); }; SimpleString FakeOutput::console = ""; SimpleString FakeOutput::file = ""; TEST(CommandLineTestRunner, realJunitOutputShouldBeCreatedAndWorkProperly) { const char* argv[] = { "tests.exe", "-ojunit", "-v", "-kpackage", }; FakeOutput* fakeOutput = new FakeOutput; /* UT_PTR_SET() is not reentrant */ CommandLineTestRunner commandLineTestRunner(4, argv, ®istry); commandLineTestRunner.runAllTestsMain(); delete fakeOutput; /* Original output must be restored before further output occurs */ STRCMP_CONTAINS(" nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/JUnitTestOutput.h" #include "CppUTest/TestResult.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/SimpleString.h" class FileForJUnitOutputTests { SimpleString name_; bool isOpen_; SimpleString buffer_; FileForJUnitOutputTests* next_; SimpleStringCollection linesOfFile_; public: FileForJUnitOutputTests(SimpleString filename, FileForJUnitOutputTests* next) : name_(filename), isOpen_(true), next_(next) {} FileForJUnitOutputTests* nextFile() { return next_; } SimpleString name() { return name_; } void write(const SimpleString& buffer) { buffer_ += buffer; } void close() { isOpen_ = false; } const char* line(size_t lineNumber) { buffer_.split("\n", linesOfFile_); return linesOfFile_[lineNumber-1].asCharString(); } const char* lineFromTheBack(size_t lineNumberFromTheBack) { return line(amountOfLines() - (lineNumberFromTheBack - 1)); } size_t amountOfLines() { buffer_.split("\n", linesOfFile_); return linesOfFile_.size(); } SimpleString content() { return buffer_; } }; class FileSystemForJUnitTestOutputTests { FileForJUnitOutputTests* firstFile_; public: FileSystemForJUnitTestOutputTests() : firstFile_(0) {} ~FileSystemForJUnitTestOutputTests() { clear(); } void clear(void) { while (firstFile_) { FileForJUnitOutputTests* fileToBeDeleted = firstFile_; firstFile_ = firstFile_->nextFile(); delete fileToBeDeleted; } } FileForJUnitOutputTests* openFile(const SimpleString& filename) { firstFile_ = new FileForJUnitOutputTests(filename, firstFile_); return firstFile_; } int amountOfFiles() { int totalAmountOfFiles = 0; for (FileForJUnitOutputTests* current = firstFile_; current != NULL; current = current->nextFile()) totalAmountOfFiles++; return totalAmountOfFiles; } bool fileExists(const char* filename) { FileForJUnitOutputTests *searchedFile = file(filename); return (searchedFile != NULL); } FileForJUnitOutputTests* file(const char* filename) { for (FileForJUnitOutputTests* current = firstFile_; current != NULL; current = current->nextFile()) if (current->name() == filename) return current; return NULL; } }; extern "C" { static long millisTime = 0; static const char* theTime = ""; static long MockGetPlatformSpecificTimeInMillis() { return millisTime; } static const char* MockGetPlatformSpecificTimeString() { return theTime; } } class JUnitTestOutputTestRunner { TestResult result_; const char* currentGroupName_; UtestShell* currentTest_; bool firstTestInGroup_; int timeTheTestTakes_; TestFailure* testFailure_; public: JUnitTestOutputTestRunner(TestResult result) : result_(result), currentGroupName_(0), currentTest_(0), firstTestInGroup_(true), timeTheTestTakes_(0), testFailure_(0) { millisTime = 0; theTime = "1978-10-03T00:00:00"; UT_PTR_SET(GetPlatformSpecificTimeInMillis, MockGetPlatformSpecificTimeInMillis); UT_PTR_SET(GetPlatformSpecificTimeString, MockGetPlatformSpecificTimeString); } JUnitTestOutputTestRunner& start() { result_.testsStarted(); return *this; } JUnitTestOutputTestRunner& end() { endOfPreviousTestGroup(); delete currentTest_; result_.testsEnded(); return *this; } void endOfPreviousTestGroup() { runPreviousTest(); if (currentTest_) { result_.currentGroupEnded(currentTest_); firstTestInGroup_ = true; } currentGroupName_ = 0; } JUnitTestOutputTestRunner& withGroup(const char* groupName) { runPreviousTest(); endOfPreviousTestGroup(); currentGroupName_ = groupName; return *this; } JUnitTestOutputTestRunner& withTest(const char* testName) { runPreviousTest(); delete currentTest_; currentTest_ = new UtestShell(currentGroupName_, testName, "file", 1); return *this; } JUnitTestOutputTestRunner& withIgnoredTest(const char* testName) { runPreviousTest(); delete currentTest_; currentTest_ = new IgnoredUtestShell(currentGroupName_, testName, "file", 1); return *this; } void runPreviousTest() { if (currentTest_ == 0) return; if (firstTestInGroup_) { result_.currentGroupStarted(currentTest_); firstTestInGroup_ = false; } result_.currentTestStarted(currentTest_); millisTime += timeTheTestTakes_; if (testFailure_) { result_.addFailure(*testFailure_); delete testFailure_; testFailure_ = 0; } result_.currentTestEnded(currentTest_); } JUnitTestOutputTestRunner& thatTakes(int timeElapsed) { timeTheTestTakes_ = timeElapsed; return *this; } JUnitTestOutputTestRunner& seconds() { return *this; } JUnitTestOutputTestRunner& thatFails(const char* message, const char* file, int line) { testFailure_ = new TestFailure( currentTest_, file, line, message); return *this; } JUnitTestOutputTestRunner& atTime(const char* newTime) { theTime = newTime; return *this; } }; extern "C" { static FileSystemForJUnitTestOutputTests fileSystem; static PlatformSpecificFile mockFOpen(const char* filename, const char*) { return fileSystem.openFile(filename); } static void mockFPuts(const char* str, PlatformSpecificFile file) { ((FileForJUnitOutputTests*)file)->write(str); } static void mockFClose(PlatformSpecificFile file) { ((FileForJUnitOutputTests*)file)->close(); } } TEST_GROUP(JUnitOutputTest) { JUnitTestOutput *junitOutput; TestResult *result; JUnitTestOutputTestRunner *testCaseRunner; FileForJUnitOutputTests* outputFile; void setup() { UT_PTR_SET(PlatformSpecificFOpen, (PlatformSpecificFile(*)(const char*, const char*))mockFOpen); UT_PTR_SET(PlatformSpecificFPuts, mockFPuts); UT_PTR_SET(PlatformSpecificFClose, mockFClose); junitOutput = new JUnitTestOutput(); result = new TestResult(*junitOutput); testCaseRunner = new JUnitTestOutputTestRunner(*result); } void teardown() { delete testCaseRunner; delete result; delete junitOutput; fileSystem.clear(); } }; TEST(JUnitOutputTest, withOneTestGroupAndOneTestOnlyWriteToOneFile) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); LONGS_EQUAL(1, fileSystem.amountOfFiles()); CHECK(fileSystem.fileExists("cpputest_groupname.xml")); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestOutputsValidXMLFiles) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(1)); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestoutputsTestSuiteStartAndEndBlocks) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); STRCMP_EQUAL("", outputFile->lineFromTheBack(1)); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestFileShouldContainAnEmptyPropertiesBlock) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(3)); STRCMP_EQUAL("\n", outputFile->line(4)); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestFileShouldContainAnEmptyStdoutBlock) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->lineFromTheBack(3)); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestFileShouldContainAnEmptyStderrBlock) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->lineFromTheBack(2)); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestFileShouldContainsATestCaseBlock) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, withOneTestGroupAndTwoTestCasesCreateCorrectTestgroupBlockAndCorrectTestCaseBlock) { testCaseRunner->start() .withGroup("twoTestsGroup").withTest("firstTestName").withTest("secondTestName") .end(); outputFile = fileSystem.file("cpputest_twoTestsGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); STRCMP_EQUAL("\n", outputFile->line(7)); STRCMP_EQUAL("\n", outputFile->line(8)); } TEST(JUnitOutputTest, withOneTestGroupAndTimeHasElapsedAndTimestampChanged) { testCaseRunner->start().atTime("2013-07-04T22:28:00") .withGroup("timeGroup").withTest("Dummy").thatTakes(10).seconds() .end(); outputFile = fileSystem.file("cpputest_timeGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); } TEST(JUnitOutputTest, withOneTestGroupAndMultipleTestCasesWithElapsedTime) { testCaseRunner->start() .withGroup("twoTestsGroup") .withTest("firstTestName").thatTakes(10).seconds() .withTest("secondTestName").thatTakes(50).seconds() .end(); outputFile = fileSystem.file("cpputest_twoTestsGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); STRCMP_EQUAL("\n", outputFile->line(7)); STRCMP_EQUAL("\n", outputFile->line(8)); } TEST(JUnitOutputTest, withOneTestGroupAndOneFailingTest) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("Test failed", "thisfile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); STRCMP_EQUAL("\n", outputFile->line(7)); STRCMP_EQUAL("\n", outputFile->line(8)); } TEST(JUnitOutputTest, withTwoTestGroupAndOneFailingTest) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FirstTest") .withTest("FailingTestName").thatFails("Test failed", "thisfile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); STRCMP_EQUAL("\n", outputFile->line(7)); STRCMP_EQUAL("\n", outputFile->line(8)); } TEST(JUnitOutputTest, testFailureWithLessThanAndGreaterThanInsideIt) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("Test ", "thisfile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, testFailureWithQuotesInIt) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("Test \"failed\"", "thisfile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, testFailureWithNewlineInIt) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("Test \nfailed", "thisfile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, testFailureWithDifferentFileAndLine) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("Test failed", "importantFile", 999) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, testFailureWithAmpersands) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("&object1 != &object2", "importantFile", 999) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, aCoupleOfTestFailures) { testCaseRunner->start() .withGroup("testGroup") .withTest("passingOne") .withTest("FailingTest").thatFails("Failure", "file", 99) .withTest("passingTwo") .withTest("passingThree") .withTest("AnotherFailingTest").thatFails("otherFailure", "anotherFile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(8)); STRCMP_EQUAL("\n", outputFile->line(16)); } TEST(JUnitOutputTest, testFailuresInSeparateGroups) { testCaseRunner->start() .withGroup("testGroup") .withTest("passingOne") .withTest("FailingTest").thatFails("Failure", "file", 99) .withGroup("AnotherGroup") .withTest("AnotherFailingTest").thatFails("otherFailure", "anotherFile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(8)); outputFile = fileSystem.file("cpputest_AnotherGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(8)); } TEST(JUnitOutputTest, twoTestGroupsWriteToTwoDifferentFiles) { testCaseRunner->start() .withGroup("firstTestGroup") .withTest("testName") .withGroup("secondTestGroup") .withTest("testName") .end(); CHECK(fileSystem.file("cpputest_firstTestGroup.xml")); CHECK(fileSystem.file("cpputest_secondTestGroup.xml")); } TEST(JUnitOutputTest, testGroupWithWeirdName) { STRCMP_EQUAL("cpputest_group_weird_name.xml", junitOutput->createFileName("group/weird/name").asCharString()); } TEST(JUnitOutputTest, TestCaseBlockWithAPackageName) { junitOutput->setPackageName("packagename"); testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, TestCaseBlockForIgnoredTest) { junitOutput->setPackageName("packagename"); testCaseRunner->start() .withGroup("groupname").withIgnoredTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); STRCMP_EQUAL("\n", outputFile->line(7)); } cpputest-3.7.2/tests/MemoryLeakDetectorTest.cpp000644 000765 000024 00000057354 12521603460 022606 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" class MemoryLeakFailureForTest: public MemoryLeakFailure { public: virtual ~MemoryLeakFailureForTest() { } virtual void fail(char* fail_string) { *message = fail_string; } SimpleString *message; }; class NewAllocatorForMemoryLeakDetectionTest: public TestMemoryAllocator { public: NewAllocatorForMemoryLeakDetectionTest() : TestMemoryAllocator("Standard New Allocator", "new", "delete"), alloc_called(0), free_called(0) { } int alloc_called; int free_called; char* alloc_memory(size_t size, const char*, int) { alloc_called++; return TestMemoryAllocator::alloc_memory(size, "file", 1); } void free_memory(char* memory, const char* file, int line) { free_called++; TestMemoryAllocator::free_memory(memory, file, line); } }; class AllocatorForMemoryLeakDetectionTest: public TestMemoryAllocator { public: AllocatorForMemoryLeakDetectionTest() : alloc_called(0), free_called(0), allocMemoryLeakNodeCalled(0), freeMemoryLeakNodeCalled(0) { } int alloc_called; int free_called; int allocMemoryLeakNodeCalled; int freeMemoryLeakNodeCalled; char* alloc_memory(size_t size, const char* file, int line) { alloc_called++; return TestMemoryAllocator::alloc_memory(size, file, line); } void free_memory(char* memory, const char* file, int line) { free_called++; TestMemoryAllocator::free_memory(memory, file, line); } char* allocMemoryLeakNode(size_t size) { allocMemoryLeakNodeCalled++; return TestMemoryAllocator::alloc_memory(size, __FILE__, __LINE__); } void freeMemoryLeakNode(char* memory) { freeMemoryLeakNodeCalled++; TestMemoryAllocator::free_memory(memory, __FILE__, __LINE__); } }; TEST_GROUP(MemoryLeakDetectorTest) { MemoryLeakDetector* detector; MemoryLeakFailureForTest *reporter; AllocatorForMemoryLeakDetectionTest* testAllocator; void setup() { reporter = new MemoryLeakFailureForTest; detector = new MemoryLeakDetector(reporter); testAllocator = new AllocatorForMemoryLeakDetectionTest; detector->enable(); detector->startChecking(); reporter->message = new SimpleString(); } void teardown() { delete reporter->message; delete detector; delete reporter; delete testAllocator; } }; TEST(MemoryLeakDetectorTest, OneLeak) { char* mem = detector->allocMemory(testAllocator, 3); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); STRCMP_CONTAINS("Memory leak(s) found", output.asCharString()); STRCMP_CONTAINS("size: 3", output.asCharString()); STRCMP_CONTAINS("alloc", output.asCharString()); STRCMP_CONTAINS(StringFromFormat("%p", mem).asCharString(), output.asCharString()); STRCMP_CONTAINS("Total number of leaks", output.asCharString()); PlatformSpecificFree(mem); LONGS_EQUAL(1, testAllocator->alloc_called); LONGS_EQUAL(0, testAllocator->free_called); } TEST(MemoryLeakDetectorTest, sequenceNumbersOfMemoryLeaks) { char* mem = detector->allocMemory(defaultNewAllocator(), 1); char* mem2 = detector->allocMemory(defaultNewAllocator(), 2); char* mem3 = detector->allocMemory(defaultNewAllocator(), 3); SimpleString output = detector->report(mem_leak_period_checking); STRCMP_CONTAINS("Alloc num (1)", output.asCharString()); STRCMP_CONTAINS("Alloc num (2)", output.asCharString()); STRCMP_CONTAINS("Alloc num (3)", output.asCharString()); PlatformSpecificFree(mem); PlatformSpecificFree(mem2); PlatformSpecificFree(mem3); } TEST(MemoryLeakDetectorTest, memoryDumpOutput) { char* mem = detector->allocMemory(defaultNewAllocator(), 6); SimpleString::StrNCpy(mem, "test1", 6); SimpleString output = detector->report(mem_leak_period_checking); STRCMP_CONTAINS("Alloc num (1)", output.asCharString()); STRCMP_CONTAINS("Leak size: 6 Allocated at", output.asCharString()); STRCMP_CONTAINS("Content:", output.asCharString()); STRCMP_CONTAINS("0000: 74 65 73 74 31 00 |test1.|", output.asCharString()); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, OneHundredLeaks) { const int amount_alloc = 100; char *mem[amount_alloc]; for (int i = 0; i < amount_alloc; i++) mem[i] = detector->allocMemory(defaultMallocAllocator(), 3); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); STRCMP_CONTAINS("Memory leak(s) found", output.asCharString()); STRCMP_CONTAINS("Total number of leaks", output.asCharString()); STRCMP_CONTAINS("Memory leak reports about malloc and free", output.asCharString()); //don't reuse i for vc6 compatibility for (int j = 0; j < amount_alloc; j++) PlatformSpecificFree(mem[j]); } TEST(MemoryLeakDetectorTest, OneLeakOutsideCheckingPeriod) { detector->stopChecking(); char* mem = detector->allocMemory(defaultNewAllocator(), 4); SimpleString output = detector->report(mem_leak_period_all); CHECK(output.contains("Memory leak(s) found")); CHECK(output.contains("size: 4")); CHECK(output.contains("new")); CHECK(output.contains("Total number of leaks")); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, NoLeaksWhatsoever) { detector->stopChecking(); STRCMP_CONTAINS("No memory leaks", detector->report(mem_leak_period_checking)); STRCMP_CONTAINS("No memory leaks", detector->report(mem_leak_period_all)); } TEST(MemoryLeakDetectorTest, TwoLeaksUsingOperatorNew) { char* mem = detector->allocMemory(defaultNewAllocator(), 4); char* mem2 = detector->allocMemory(defaultNewAllocator(), 8); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_checking)); CHECK(output.contains("size: 8")); CHECK(output.contains("size: 4")); PlatformSpecificFree(mem); PlatformSpecificFree(mem2); } TEST(MemoryLeakDetectorTest, OneAllocButNoLeak) { char* mem = detector->allocMemory(testAllocator, 4); detector->deallocMemory(testAllocator, mem); detector->stopChecking(); STRCMP_CONTAINS("No memory leaks", detector->report(mem_leak_period_checking)); LONGS_EQUAL(1, testAllocator->alloc_called); LONGS_EQUAL(1, testAllocator->free_called); } TEST(MemoryLeakDetectorTest, TwoAllocOneFreeOneLeak) { char* mem = detector->allocMemory(testAllocator, 4); char* mem2 = detector->allocMemory(testAllocator, 12); detector->deallocMemory(testAllocator, mem); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); CHECK(output.contains("size: 12")); CHECK(!output.contains("size: 4")); PlatformSpecificFree(mem2); LONGS_EQUAL(2, testAllocator->alloc_called); LONGS_EQUAL(1, testAllocator->free_called); } TEST(MemoryLeakDetectorTest, TwoAllocOneFreeOneLeakReverseOrder) { char* mem = detector->allocMemory(defaultNewAllocator(), 4); char* mem2 = detector->allocMemory(defaultNewAllocator(), 12); detector->deallocMemory(defaultNewAllocator(), mem2); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); CHECK(!output.contains("size: 12")); CHECK(output.contains("size: 4")); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, DeleteNonAlocatedMemory) { char a; char* pa = &a; detector->deallocMemory(defaultMallocAllocator(), pa, "FREE.c", 100); detector->stopChecking(); CHECK(reporter->message->contains("Deallocating non-allocated memory")); CHECK(reporter->message->contains(" allocated at file: line: 0 size: 0 type: unknown")); CHECK(reporter->message->contains(" deallocated at file: FREE.c line: 100 type: free")); } TEST(MemoryLeakDetectorTest, IgnoreMemoryAllocatedOutsideCheckingPeriod) { detector->stopChecking(); char* mem = detector->allocMemory(defaultNewAllocator(), 4); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); detector->deallocMemory(defaultNewAllocator(), mem); } TEST(MemoryLeakDetectorTest, IgnoreMemoryAllocatedOutsideCheckingPeriodComplicatedCase) { char* mem = detector->allocMemory(defaultNewAllocator(), 4); detector->stopChecking(); char* mem2 = detector->allocMemory(defaultNewAllocator(), 8); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); detector->clearAllAccounting(mem_leak_period_checking); PlatformSpecificFree(mem); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); detector->startChecking(); char* mem3 = detector->allocMemory(defaultNewAllocator(), 4); detector->stopChecking(); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_all)); detector->clearAllAccounting(mem_leak_period_checking); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); detector->clearAllAccounting(mem_leak_period_all); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_all)); PlatformSpecificFree(mem2); PlatformSpecificFree(mem3); } TEST(MemoryLeakDetectorTest, OneLeakUsingOperatorNewWithFileLine) { char* mem = detector->allocMemory(defaultNewAllocator(), 4, "file.cpp", 1234); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); CHECK(output.contains("file.cpp")); CHECK(output.contains("1234")); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, OneAllocAndFreeUsingArrayNew) { char* mem = detector->allocMemory(defaultNewArrayAllocator(), 10, "file.cpp", 1234); char* mem2 = detector->allocMemory(defaultNewArrayAllocator(), 12); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_all)); SimpleString output = detector->report(mem_leak_period_checking); CHECK(output.contains("new []")); detector->deallocMemory(defaultNewArrayAllocator(), mem); detector->deallocMemory(defaultNewArrayAllocator(), mem2); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_all)); detector->stopChecking(); } TEST(MemoryLeakDetectorTest, OneAllocAndFree) { char* mem = detector->allocMemory(defaultMallocAllocator(), 10, "file.cpp", 1234); char* mem2 = detector->allocMemory(defaultMallocAllocator(), 12); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_checking)); SimpleString output = detector->report(mem_leak_period_checking); CHECK(output.contains("malloc")); detector->deallocMemory(defaultMallocAllocator(), mem); detector->deallocMemory(defaultMallocAllocator(), mem2, "file.c", 5678); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_all)); detector->stopChecking(); } TEST(MemoryLeakDetectorTest, OneRealloc) { char* mem1 = detector->allocMemory(testAllocator, 10, "file.cpp", 1234, true); char* mem2 = detector->reallocMemory(testAllocator, mem1, 1000, "other.cpp", 5678, true); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); SimpleString output = detector->report(mem_leak_period_checking); CHECK(output.contains("other.cpp")); detector->deallocMemory(testAllocator, mem2, true); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_all)); detector->stopChecking(); LONGS_EQUAL(1, testAllocator->alloc_called); LONGS_EQUAL(1, testAllocator->free_called); LONGS_EQUAL(2, testAllocator->allocMemoryLeakNodeCalled); LONGS_EQUAL(2, testAllocator->freeMemoryLeakNodeCalled); } TEST(MemoryLeakDetectorTest, ReallocNonAllocatedMemory) { char mem1; char* mem2 = detector->reallocMemory(testAllocator, &mem1, 5, "other.cpp", 13, true); detector->deallocMemory(testAllocator, mem2, true); detector->stopChecking(); CHECK(reporter->message->contains("Deallocating non-allocated memory\n")); CHECK(reporter->message->contains(" deallocated at file: other.cpp line: 13")); } TEST(MemoryLeakDetectorTest, AllocOneTypeFreeAnotherType) { char* mem = detector->allocMemory(defaultNewArrayAllocator(), 100, "ALLOC.c", 10); detector->deallocMemory(defaultMallocAllocator(), mem, "FREE.c", 100); detector->stopChecking(); CHECK(reporter->message->contains("Allocation/deallocation type mismatch")); CHECK(reporter->message->contains(" allocated at file: ALLOC.c line: 10 size: 100 type: new []")); CHECK(reporter->message->contains(" deallocated at file: FREE.c line: 100 type: free")); } TEST(MemoryLeakDetectorTest, AllocOneTypeFreeAnotherTypeWithCheckingDisabled) { detector->disableAllocationTypeChecking(); char* mem = detector->allocMemory(defaultNewArrayAllocator(), 100, "ALLOC.c", 10); detector->deallocMemory(defaultNewAllocator(), mem, "FREE.c", 100); detector->stopChecking(); STRCMP_EQUAL("", reporter->message->asCharString()); detector->enableAllocationTypeChecking(); } TEST(MemoryLeakDetectorTest, mallocLeakGivesAdditionalWarning) { char* mem = detector->allocMemory(defaultMallocAllocator(), 100, "ALLOC.c", 10); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); STRCMP_CONTAINS("Memory leak reports about malloc and free can be caused by allocating using the cpputest version of malloc", output.asCharString()); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, newLeakDoesNotGiveAdditionalWarning) { char* mem = detector->allocMemory(defaultNewAllocator(), 100, "ALLOC.c", 10); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); CHECK(! output.contains("Memory leak reports about malloc and free")); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, MarkCheckingPeriodLeaksAsNonCheckingPeriod) { char* mem = detector->allocMemory(defaultNewArrayAllocator(), 100); char* mem2 = detector->allocMemory(defaultNewArrayAllocator(), 100); detector->stopChecking(); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_all)); detector->markCheckingPeriodLeaksAsNonCheckingPeriod(); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_all)); PlatformSpecificFree(mem); PlatformSpecificFree(mem2); } TEST(MemoryLeakDetectorTest, memoryCorruption) { char* mem = detector->allocMemory(defaultMallocAllocator(), 10, "ALLOC.c", 10); mem[10] = 'O'; mem[11] = 'H'; detector->deallocMemory(defaultMallocAllocator(), mem, "FREE.c", 100); detector->stopChecking(); CHECK(reporter->message->contains("Memory corruption")); CHECK(reporter->message->contains(" allocated at file: ALLOC.c line: 10 size: 10 type: malloc")); CHECK(reporter->message->contains(" deallocated at file: FREE.c line: 100 type: free")); } TEST(MemoryLeakDetectorTest, safelyDeleteNULL) { detector->deallocMemory(defaultNewAllocator(), 0); STRCMP_EQUAL("", reporter->message->asCharString()); } TEST(MemoryLeakDetectorTest, periodDisabled) { detector->disable(); char* mem = detector->allocMemory(defaultMallocAllocator(), 2); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_disabled)); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_enabled)); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); detector->deallocMemory(defaultMallocAllocator(), mem); } TEST(MemoryLeakDetectorTest, periodEnabled) { detector->enable(); char* mem = detector->allocMemory(defaultMallocAllocator(), 2); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_disabled)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_enabled)); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); detector->deallocMemory(defaultMallocAllocator(), mem); } TEST(MemoryLeakDetectorTest, periodChecking) { char* mem = detector->allocMemory(defaultMallocAllocator(), 2); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_disabled)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_enabled)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); detector->deallocMemory(defaultMallocAllocator(), mem); } TEST(MemoryLeakDetectorTest, allocateWithANullAllocatorCausesNoProblems) { char* mem = detector->allocMemory(NullUnknownAllocator::defaultAllocator(), 2); detector->deallocMemory(NullUnknownAllocator::defaultAllocator(), mem); } TEST(MemoryLeakDetectorTest, invalidateMemory) { unsigned char* mem = (unsigned char*)detector->allocMemory(defaultMallocAllocator(), 2); detector->invalidateMemory((char*)mem); CHECK(mem[0] == 0xCD); CHECK(mem[1] == 0xCD); detector->deallocMemory(defaultMallocAllocator(), mem); } TEST(MemoryLeakDetectorTest, invalidateMemoryNULLShouldWork) { detector->invalidateMemory(NULL); } TEST_GROUP(MemoryLeakDetectorListTest) { }; TEST(MemoryLeakDetectorListTest, clearAllAccountingIsWorkingProperly) { MemoryLeakDetectorList listForTesting; MemoryLeakDetectorNode node1, node2, node3; node3.period_ = mem_leak_period_disabled; listForTesting.addNewNode(&node1); listForTesting.addNewNode(&node2); listForTesting.addNewNode(&node3); listForTesting.clearAllAccounting(mem_leak_period_enabled); CHECK(NULL == listForTesting.getFirstLeak(mem_leak_period_enabled)); CHECK(&node3 == listForTesting.getFirstLeak(mem_leak_period_disabled)); } TEST_GROUP(SimpleStringBuffer) { }; TEST(SimpleStringBuffer, initialStringIsEmpty) { SimpleStringBuffer buffer; STRCMP_EQUAL("", buffer.toString()); } TEST(SimpleStringBuffer, simpleTest) { SimpleStringBuffer buffer; buffer.add("Hello"); buffer.add(" World"); STRCMP_EQUAL("Hello World", buffer.toString()); } TEST(SimpleStringBuffer, writePastLimit) { SimpleStringBuffer buffer; for (int i = 0; i < SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN * 2; i++) buffer.add("h"); SimpleString str("h", SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN-1); STRCMP_EQUAL(str.asCharString(), buffer.toString()); } TEST(SimpleStringBuffer, setWriteLimit) { SimpleStringBuffer buffer; buffer.setWriteLimit(10); for (int i = 0; i < SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN ; i++) buffer.add("h"); SimpleString str("h", 10); STRCMP_EQUAL(str.asCharString(), buffer.toString()); } TEST(SimpleStringBuffer, setWriteLimitTooHighIsIgnored) { SimpleStringBuffer buffer; buffer.setWriteLimit(SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN+10); for (int i = 0; i < SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN+10; i++) buffer.add("h"); SimpleString str("h", SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN-1); STRCMP_EQUAL(str.asCharString(), buffer.toString()); } TEST(SimpleStringBuffer, resetWriteLimit) { SimpleStringBuffer buffer; buffer.setWriteLimit(10); for (int i = 0; i < SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN ; i++) buffer.add("h"); buffer.resetWriteLimit(); buffer.add("%s", SimpleString("h", 10).asCharString()); SimpleString str("h", 20); STRCMP_EQUAL(str.asCharString(), buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpOneLinePlusOnePartial) { SimpleStringBuffer buffer; buffer.addMemoryDump("deadbeefdeadbeefhopsxx", 22); STRCMP_EQUAL(" 0000: 64 65 61 64 62 65 65 66 64 65 61 64 62 65 65 66 |deadbeefdeadbeef|\n" " 0010: 68 6f 70 73 78 78 |hopsxx|\n", buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpNonPrintable) { SimpleStringBuffer buffer; // Ensure we test edge cases - NUL, 0x1F, 0x7F, 0xFF buffer.addMemoryDump("\x15\x7f\xff\x00\x1ftdd", 8); STRCMP_EQUAL(" 0000: 15 7f ff 00 1f 74 64 64 |.....tdd|\n", buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpOneLine) { SimpleStringBuffer buffer; buffer.addMemoryDump("deadbeefdeadbeef", 16); STRCMP_EQUAL(" 0000: 64 65 61 64 62 65 65 66 64 65 61 64 62 65 65 66 |deadbeefdeadbeef|\n", buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpOneHalfLine) { SimpleStringBuffer buffer; buffer.addMemoryDump("deadbeef", 8); STRCMP_EQUAL(" 0000: 64 65 61 64 62 65 65 66 |deadbeef|\n", buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpOneByte) { SimpleStringBuffer buffer; buffer.addMemoryDump("Z", 1); STRCMP_EQUAL(" 0000: 5a |Z|\n", buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpZeroBytes) { SimpleStringBuffer buffer; buffer.addMemoryDump("", 0); STRCMP_EQUAL("", buffer.toString()); } TEST_GROUP(ReallocBugReported) { MemoryLeakFailureForTest reporter; }; TEST(ReallocBugReported, CanSafelyDoAReallocWithANewAllocator) { MemoryLeakDetector detector(&reporter); char* mem = detector.allocMemory(getCurrentNewAllocator(), 5, "file", 1); mem = detector.reallocMemory(getCurrentNewAllocator(), mem, 19, "file", 1); detector.deallocMemory(getCurrentNewAllocator(), mem); } TEST(ReallocBugReported, CanSafelyDoAReallocWithAMallocAllocator) { MemoryLeakDetector detector(&reporter); char* mem = detector.allocMemory(getCurrentMallocAllocator(), 5, "file", 1, true); mem = detector.reallocMemory(getCurrentMallocAllocator(), mem, 19, "file", 1, true); detector.deallocMemory(getCurrentMallocAllocator(), mem, true); } cpputest-3.7.2/tests/MemoryLeakOperatorOverloadsTest.cpp000644 000765 000024 00000025301 12521603460 024472 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestTestingFixture.h" #include "AllocationInCppFile.h" #include "CppUTest/TestHarness_c.h" #include "AllocationInCFile.h" TEST_GROUP(BasicBehavior) { }; TEST(BasicBehavior, CanDeleteNullPointers) { delete (char*) NULL; delete [] (char*) NULL; } #ifndef CPPUTEST_MEM_LEAK_DETECTION_DISABLED TEST(BasicBehavior, deleteArrayInvalidatesMemory) { unsigned char* memory = new unsigned char[10]; PlatformSpecificMemset(memory, 0xAB, 10); delete [] memory; CHECK(memory[5] != 0xCB); } TEST(BasicBehavior, deleteInvalidatesMemory) { unsigned char* memory = new unsigned char; *memory = 0xAD; delete memory; CHECK(*memory != 0xAD); } static void deleteUnallocatedMemory() { delete (char*) 0x1234678; FAIL("Should never come here"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(BasicBehavior, deleteWillNotThrowAnExceptionWhenDeletingUnallocatedMemoryButCanStillCauseTestFailures) { /* * Test failure might cause an exception. But according to C++ standard, you aren't allowed * to throw exceptions in the delete function. If you do that, it will call std::terminate. * Therefore, the delete will need to fail without exceptions. */ MemoryLeakFailure* defaultReporter = MemoryLeakWarningPlugin::getGlobalFailureReporter(); TestTestingFixture fixture; fixture.setTestFunction(deleteUnallocatedMemory); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); POINTERS_EQUAL(defaultReporter, MemoryLeakWarningPlugin::getGlobalFailureReporter()); } #endif #ifdef CPPUTEST_USE_MALLOC_MACROS /* This include is added because *sometimes* the cstdlib does an #undef. This should have been prevented */ #if CPPUTEST_USE_STD_CPP_LIB #include #endif TEST(BasicBehavior, bothMallocAndFreeAreOverloaded) { void* memory = cpputest_malloc_location(sizeof(char), "file", 10); free(memory); memory = malloc(sizeof(unsigned char)); cpputest_free_location(memory, "file", 10); } #endif #if CPPUTEST_USE_MEM_LEAK_DETECTION TEST(BasicBehavior, freeInvalidatesMemory) { unsigned char* memory = (unsigned char*) cpputest_malloc(sizeof(unsigned char)); *memory = 0xAD; cpputest_free(memory); CHECK(*memory != 0xAD); } #endif TEST_GROUP(MemoryLeakOverridesToBeUsedInProductionCode) { MemoryLeakDetector* memLeakDetector; void setup() { memLeakDetector = MemoryLeakWarningPlugin::getGlobalDetector(); } }; #ifdef CPPUTEST_USE_MALLOC_MACROS TEST(MemoryLeakOverridesToBeUsedInProductionCode, MallocOverrideIsUsed) { int memLeaks = memLeakDetector->totalMemoryLeaks(mem_leak_period_checking); void* memory = malloc(10); LONGS_EQUAL(memLeaks+1, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); free (memory); } #endif TEST(MemoryLeakOverridesToBeUsedInProductionCode, UseNativeMallocByTemporarlySwitchingOffMalloc) { int memLeaks = memLeakDetector->totalMemoryLeaks(mem_leak_period_checking); #ifdef CPPUTEST_USE_MALLOC_MACROS #undef malloc #undef free #endif void* memory = malloc(10); LONGS_EQUAL(memLeaks, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); free (memory); #ifdef CPPUTEST_USE_MALLOC_MACROS #include "CppUTest/MemoryLeakDetectorMallocMacros.h" #endif } /* TEST... allowing for a new overload in a class */ class NewDummyClass { public: static bool overloaded_new_called; #ifdef CPPUTEST_USE_NEW_MACROS #undef new #endif void* operator new (size_t size) #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif { overloaded_new_called = true; return malloc(size); } void dummyFunction() { char* memory = new char; delete memory; } }; bool NewDummyClass::overloaded_new_called = false; TEST(MemoryLeakOverridesToBeUsedInProductionCode, NoSideEffectsFromTurningOffNewMacros) { /* * Interesting effect of wrapping the operator new around the macro is * that the actual new that is called is a different one than expected. * * The overloaded operator new doesn't actually ever get called. * * This might come as a surprise, so it is important to realize! */ NewDummyClass dummy; dummy.dummyFunction(); // CHECK(dummy.overloaded_new_called); } TEST(MemoryLeakOverridesToBeUsedInProductionCode, UseNativeNewByTemporarlySwitchingOffNew) { #ifdef CPPUTEST_USE_NEW_MACROS #undef new #undef delete #endif char* memory = new char[10]; delete [] memory; #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif } #if CPPUTEST_USE_MEM_LEAK_DETECTION TEST(MemoryLeakOverridesToBeUsedInProductionCode, OperatorNewMacroOverloadViaIncludeFileWorks) { char* leak = newAllocation(); STRCMP_NOCASE_CONTAINS("AllocationInCppFile.cpp", memLeakDetector->report(mem_leak_period_checking)); delete leak; } TEST(MemoryLeakOverridesToBeUsedInProductionCode, OperatorNewArrayMacroOverloadViaIncludeFileWorks) { char* leak = newArrayAllocation(); STRCMP_NOCASE_CONTAINS("AllocationInCppFile.cpp", memLeakDetector->report(mem_leak_period_checking)); delete[] leak; } TEST(MemoryLeakOverridesToBeUsedInProductionCode, MallocOverrideWorks) { char* leak = mallocAllocation(); STRCMP_NOCASE_CONTAINS("AllocationInCFile.c", memLeakDetector->report(mem_leak_period_checking)); freeAllocation(leak); } TEST(MemoryLeakOverridesToBeUsedInProductionCode, MallocWithButFreeWithoutLeakDetectionDoesntCrash) { char* leak = mallocAllocation(); freeAllocationWithoutMacro(leak); LONGS_EQUAL(2, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); memLeakDetector->removeMemoryLeakInformationWithoutCheckingOrDeallocatingTheMemoryButDeallocatingTheAccountInformation(getCurrentMallocAllocator(), leak, true); } TEST(MemoryLeakOverridesToBeUsedInProductionCode, OperatorNewOverloadingWithoutMacroWorks) { char* leak = newAllocationWithoutMacro(); STRCMP_CONTAINS("unknown", memLeakDetector->report(mem_leak_period_checking)); delete leak; } TEST(MemoryLeakOverridesToBeUsedInProductionCode, OperatorNewArrayOverloadingWithoutMacroWorks) { char* leak = newArrayAllocationWithoutMacro(); STRCMP_CONTAINS("unknown", memLeakDetector->report(mem_leak_period_checking)); delete[] leak; } #else TEST(MemoryLeakOverridesToBeUsedInProductionCode, MemoryOverridesAreDisabled) { char* leak = newAllocation(); STRCMP_EQUAL("No memory leaks were detected.", memLeakDetector->report(mem_leak_period_checking)); delete leak; } #endif TEST_GROUP(OutOfMemoryTestsForOperatorNew) { TestMemoryAllocator* no_memory_allocator; void setup() { no_memory_allocator = new NullUnknownAllocator; setCurrentNewAllocator(no_memory_allocator); setCurrentNewArrayAllocator(no_memory_allocator); } void teardown() { setCurrentNewAllocatorToDefault(); setCurrentNewArrayAllocatorToDefault(); delete no_memory_allocator; } }; #if CPPUTEST_USE_MEM_LEAK_DETECTION #if CPPUTEST_USE_STD_CPP_LIB TEST(OutOfMemoryTestsForOperatorNew, FailingNewOperatorThrowsAnExceptionWhenUsingStdCppNew) { CHECK_THROWS(std::bad_alloc, new char); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewArrayOperatorThrowsAnExceptionWhenUsingStdCppNew) { CHECK_THROWS(std::bad_alloc, new char[10]); } TEST_GROUP(TestForExceptionsInConstructor) { }; TEST(TestForExceptionsInConstructor,ConstructorThrowsAnException) { CHECK_THROWS(int, new ClassThatThrowsAnExceptionInTheConstructor); } TEST(TestForExceptionsInConstructor,ConstructorThrowsAnExceptionAllocatedAsArray) { CHECK_THROWS(int, new ClassThatThrowsAnExceptionInTheConstructor[10]); } #else TEST(OutOfMemoryTestsForOperatorNew, FailingNewOperatorReturnsNull) { POINTERS_EQUAL(NULL, new char); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewArrayOperatorReturnsNull) { POINTERS_EQUAL(NULL, new char[10]); } #endif #undef new #if CPPUTEST_USE_STD_CPP_LIB /* * CLang 4.2 and memory allocation. * * Clang 4.2 has done some optimizations to their memory management that actually causes slightly different behavior than what the C++ Standard defines. * Usually this is not a problem... but in this case, it is a problem. * * More information about the optimization can be found at: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3433.html * We've done a bug-report to clang to fix some of this non-standard behavior, which is open at: http://llvm.org/bugs/show_bug.cgi?id=15541 * * I very much hope that nobody would actually ever hit this bug/optimization as it is hard to figure out what is going on. * * The original test simply did "new char". Because the memory wasn't assigned to anything and is local in context, the optimization *doesn't* call * the operator new overload. Because it doesn't call the operator new (optimizing away a call to operator new), therefore the method wouldn't throw an exception * and therefore this test failed. * * The first attempt to fix this is to create a local variable and assigned the memory to that. Also this doesn't work as it still detects the allocation is * local and optimizes away the memory call. * * Now, we assign the memory on some static global which fools the optimizer to believe that it isn't local and it stops optimizing the operator new call. * * We (Bas Vodde and Terry Yin) suspect that in a real product, you wouldn't be able to detect the optimization and it's breaking of Standard C++. Therefore, * for now, we keep this hack in the test to fool the optimizer and hope nobody will ever notice this 'optimizer behavior' in a real product. * */ static char* some_memory; TEST(OutOfMemoryTestsForOperatorNew, FailingNewOperatorThrowsAnExceptionWhenUsingStdCppNewWithoutOverride) { CHECK_THROWS(std::bad_alloc, some_memory = new char); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewArrayOperatorThrowsAnExceptionWhenUsingStdCppNewWithoutOverride) { CHECK_THROWS(std::bad_alloc, some_memory = new char[10]); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewOperatorReturnsNullWithoutOverride) { POINTERS_EQUAL(NULL, new (std::nothrow) char); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewArrayOperatorReturnsNullWithoutOverride) { POINTERS_EQUAL(NULL, new (std::nothrow) char[10]); } #else TEST(OutOfMemoryTestsForOperatorNew, FailingNewOperatorReturnsNullWithoutOverride) { POINTERS_EQUAL(NULL, new char); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewArrayOperatorReturnsNullWithoutOverride) { POINTERS_EQUAL(NULL, new char[10]); } #endif #endif cpputest-3.7.2/tests/MemoryLeakWarningTest.cpp000644 000765 000024 00000035557 12521603460 022443 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestOutput.h" #include "CppUTest/MemoryLeakWarningPlugin.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/TestHarness_c.h" #include "CppUTest/SimpleMutex.h" static char* leak1; static long* leak2; class DummyReporter: public MemoryLeakFailure { public: virtual ~DummyReporter() { } virtual void fail(char* /*fail_string*/) { } }; static MemoryLeakDetector* detector; static MemoryLeakWarningPlugin* memPlugin; static DummyReporter dummy; static TestMemoryAllocator* allocator; TEST_GROUP(MemoryLeakWarningLocalDetectorTest) { }; TEST(MemoryLeakWarningLocalDetectorTest, localDetectorReturnsNewGlobalWhenNoneWasSet) { MemoryLeakWarningPlugin memoryLeakWarningPlugin("TestMemoryLeakWarningPlugin", NULL); CHECK(0 != memoryLeakWarningPlugin.getMemoryLeakDetector()); } TEST(MemoryLeakWarningLocalDetectorTest, localDetectorIsTheOneSpecifiedInConstructor) { MemoryLeakDetector localDetector(&dummy); MemoryLeakWarningPlugin memoryLeakWarningPlugin("TestMemoryLeakWarningPlugin", &localDetector); POINTERS_EQUAL(&localDetector, memoryLeakWarningPlugin.getMemoryLeakDetector()); } TEST(MemoryLeakWarningLocalDetectorTest, localDetectorIsGlobalDetector) { MemoryLeakDetector* globalDetector = MemoryLeakWarningPlugin::getGlobalDetector(); MemoryLeakWarningPlugin memoryLeakWarningPlugin("TestMemoryLeakWarningPlugin", NULL); MemoryLeakDetector* localDetector = memoryLeakWarningPlugin.getMemoryLeakDetector(); POINTERS_EQUAL(globalDetector, localDetector); } TEST_GROUP(MemoryLeakWarningTest) { TestTestingFixture* fixture; void setup() { fixture = new TestTestingFixture(); detector = new MemoryLeakDetector(&dummy); allocator = new TestMemoryAllocator; memPlugin = new MemoryLeakWarningPlugin("TestMemoryLeakWarningPlugin", detector); fixture->registry_->installPlugin(memPlugin); memPlugin->enable(); leak1 = 0; leak2 = 0; } void teardown() { detector->deallocMemory(allocator, leak1); detector->deallocMemory(allocator, leak2); delete fixture; delete memPlugin; delete detector; delete allocator; } }; static void _testTwoLeaks() { leak1 = detector->allocMemory(allocator, 10); leak2 = (long*) (void*) detector->allocMemory(allocator, 4); } TEST(MemoryLeakWarningTest, TwoLeaks) { fixture->setTestFunction(_testTwoLeaks); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); fixture->assertPrintContains("Total number of leaks: 2"); } static void _testIgnore2() { memPlugin->expectLeaksInTest(2); leak1 = detector->allocMemory(allocator, 10); leak2 = (long*) (void*) detector->allocMemory(allocator, 4); } TEST(MemoryLeakWarningTest, Ignore2) { fixture->setTestFunction(_testIgnore2); fixture->runAllTests(); LONGS_EQUAL(0, fixture->getFailureCount()); } static void _failAndLeakMemory() { leak1 = detector->allocMemory(allocator, 10); FAIL(""); } TEST(MemoryLeakWarningTest, FailingTestDoesNotReportMemoryLeaks) { fixture->setTestFunction(_failAndLeakMemory); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); } static bool memoryLeakDetectorWasDeleted = false; static bool memoryLeakFailureWasDelete = false; class DummyMemoryLeakDetector : public MemoryLeakDetector { public: DummyMemoryLeakDetector(MemoryLeakFailure* reporter) : MemoryLeakDetector(reporter) {} virtual ~DummyMemoryLeakDetector() { memoryLeakDetectorWasDeleted = true; } }; class DummyMemoryLeakFailure : public MemoryLeakFailure { virtual ~DummyMemoryLeakFailure() { memoryLeakFailureWasDelete = true; } virtual void fail(char*) { } }; static bool cpputestHasCrashed; TEST_GROUP(MemoryLeakWarningGlobalDetectorTest) { MemoryLeakDetector* detector; MemoryLeakFailure* failureReporter; DummyMemoryLeakDetector * dummyDetector; MemoryLeakFailure* dummyReporter; static void crashMethod() { cpputestHasCrashed = true; } void setup() { detector = MemoryLeakWarningPlugin::getGlobalDetector(); failureReporter = MemoryLeakWarningPlugin::getGlobalFailureReporter(); memoryLeakDetectorWasDeleted = false; memoryLeakFailureWasDelete = false; MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); dummyReporter = new DummyMemoryLeakFailure; dummyDetector = new DummyMemoryLeakDetector(dummyReporter); UtestShell::setCrashMethod(crashMethod); cpputestHasCrashed = false; } void teardown() { MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); if (!memoryLeakDetectorWasDeleted) delete dummyDetector; if (!memoryLeakFailureWasDelete) delete dummyReporter; MemoryLeakWarningPlugin::setGlobalDetector(detector, failureReporter); MemoryLeakWarningPlugin::turnOnNewDeleteOverloads(); UtestShell::resetCrashMethod(); setCurrentMallocAllocatorToDefault(); setCurrentNewAllocatorToDefault(); setCurrentNewArrayAllocatorToDefault(); } }; TEST(MemoryLeakWarningGlobalDetectorTest, turnOffNewOverloadsCausesNoAdditionalLeaks) { int storedAmountOfLeaks = detector->totalMemoryLeaks(mem_leak_period_all); char* arrayMemory = new char[100]; char* nonArrayMemory = new char; char* mallocMemory = (char*) cpputest_malloc_location_with_leak_detection(10, "file", 10); char* reallocMemory = (char*) cpputest_realloc_location_with_leak_detection(NULL, 10, "file", 10); LONGS_EQUAL(storedAmountOfLeaks, detector->totalMemoryLeaks(mem_leak_period_all)); cpputest_free_location_with_leak_detection(mallocMemory, "file", 10); cpputest_free_location_with_leak_detection(reallocMemory, "file", 10); delete [] arrayMemory; delete nonArrayMemory; } TEST(MemoryLeakWarningGlobalDetectorTest, destroyGlobalDetector) { MemoryLeakWarningPlugin::setGlobalDetector(dummyDetector, dummyReporter); MemoryLeakWarningPlugin::destroyGlobalDetector(); CHECK(memoryLeakDetectorWasDeleted); CHECK(memoryLeakFailureWasDelete); } TEST(MemoryLeakWarningGlobalDetectorTest, MemoryWarningPluginCanBeSetToDestroyTheGlobalDetector) { MemoryLeakWarningPlugin* plugin = new MemoryLeakWarningPlugin("dummy"); plugin->destroyGlobalDetectorAndTurnOffMemoryLeakDetectionInDestructor(true); MemoryLeakWarningPlugin::setGlobalDetector(dummyDetector, dummyReporter); delete plugin; CHECK(memoryLeakDetectorWasDeleted); } #ifndef CPPUTEST_MEM_LEAK_DETECTION_DISABLED TEST(MemoryLeakWarningGlobalDetectorTest, crashOnLeakWithOperatorNew) { MemoryLeakWarningPlugin::setGlobalDetector(dummyDetector, dummyReporter); MemoryLeakWarningPlugin::turnOnNewDeleteOverloads(); crash_on_allocation_number(1); char* memory = new char[100]; CHECK(cpputestHasCrashed); delete memory; } TEST(MemoryLeakWarningGlobalDetectorTest, crashOnLeakWithOperatorNewArray) { MemoryLeakWarningPlugin::setGlobalDetector(dummyDetector, dummyReporter); MemoryLeakWarningPlugin::turnOnNewDeleteOverloads(); crash_on_allocation_number(1); char* memory = new char; CHECK(cpputestHasCrashed); delete memory; } TEST(MemoryLeakWarningGlobalDetectorTest, crashOnLeakWithOperatorMalloc) { MemoryLeakWarningPlugin::setGlobalDetector(dummyDetector, dummyReporter); MemoryLeakWarningPlugin::turnOnNewDeleteOverloads(); crash_on_allocation_number(1); char* memory = (char*) cpputest_malloc(10); CHECK(cpputestHasCrashed); cpputest_free(memory); } TEST(MemoryLeakWarningGlobalDetectorTest, gettingTheGlobalDetectorDoesNotRestoreTheMemoryLeakOverloadsWhenTheyWereAlreadyOff) { MemoryLeakWarningPlugin::setGlobalDetector(NULL, NULL); MemoryLeakDetector* temporaryDetector = MemoryLeakWarningPlugin::getGlobalDetector(); MemoryLeakFailure* temporaryReporter = MemoryLeakWarningPlugin::getGlobalFailureReporter(); MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); bool areNewDeleteOverloaded = MemoryLeakWarningPlugin::areNewDeleteOverloaded(); MemoryLeakWarningPlugin::turnOnNewDeleteOverloads(); CHECK(!areNewDeleteOverloaded); MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); delete temporaryReporter; delete temporaryDetector; } TEST(MemoryLeakWarningGlobalDetectorTest, checkIfTheMemoryLeakOverloadsAreOn) { MemoryLeakWarningPlugin::turnOnNewDeleteOverloads(); CHECK(MemoryLeakWarningPlugin::areNewDeleteOverloaded()); MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); } TEST(MemoryLeakWarningGlobalDetectorTest, checkIfTheMemoryLeakOverloadsAreOff) { MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); bool areNewDeleteOverloaded = MemoryLeakWarningPlugin::areNewDeleteOverloaded(); MemoryLeakWarningPlugin::turnOnNewDeleteOverloads(); CHECK(!areNewDeleteOverloaded); } #endif #if CPPUTEST_USE_STD_CPP_LIB TEST(MemoryLeakWarningGlobalDetectorTest, turnOffNewOverloadsNoThrowCausesNoAdditionalLeaks) { #undef new int storedAmountOfLeaks = detector->totalMemoryLeaks(mem_leak_period_all); char* nonMemoryNoThrow = new (std::nothrow) char; char* nonArrayMemoryNoThrow = new (std::nothrow) char[10]; char* nonArrayMemoryThrow = new char[10]; LONGS_EQUAL(storedAmountOfLeaks, detector->totalMemoryLeaks(mem_leak_period_all)); delete nonMemoryNoThrow; delete nonArrayMemoryNoThrow; delete nonArrayMemoryThrow; #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif } #ifndef CPPUTEST_MEM_LEAK_DETECTION_DISABLED static int mutexLockCount = 0; static int mutexUnlockCount = 0; static void StubMutexLock(PlatformSpecificMutex) { mutexLockCount++; } static void StubMutexUnlock(PlatformSpecificMutex) { mutexUnlockCount++; } TEST_GROUP(MemoryLeakWarningThreadSafe) { void setup() { UT_PTR_SET(PlatformSpecificMutexLock, StubMutexLock); UT_PTR_SET(PlatformSpecificMutexUnlock, StubMutexUnlock); mutexLockCount = 0; mutexUnlockCount = 0; } void teardown() { } }; TEST(MemoryLeakWarningThreadSafe, turnOnThreadSafeMallocFreeReallocOverloadsDebug) { int storedAmountOfLeaks = MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all); MemoryLeakWarningPlugin::turnOnThreadSafeNewDeleteOverloads(); int *n = (int*) cpputest_malloc(sizeof(int)); LONGS_EQUAL(storedAmountOfLeaks + 1, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(1, mutexLockCount); CHECK_EQUAL(1, mutexUnlockCount); n = (int*) cpputest_realloc(n, sizeof(int)*3); LONGS_EQUAL(storedAmountOfLeaks + 1, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(2, mutexLockCount); CHECK_EQUAL(2, mutexUnlockCount); cpputest_free(n); LONGS_EQUAL(storedAmountOfLeaks, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(3, mutexLockCount); CHECK_EQUAL(3, mutexUnlockCount); MemoryLeakWarningPlugin::turnOnNewDeleteOverloads(); } TEST(MemoryLeakWarningThreadSafe, turnOnThreadSafeNewDeleteOverloadsDebug) { int storedAmountOfLeaks = MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all); MemoryLeakWarningPlugin::turnOnThreadSafeNewDeleteOverloads(); int *n = new int; char *str = new char[20]; LONGS_EQUAL(storedAmountOfLeaks + 2, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(2, mutexLockCount); CHECK_EQUAL(2, mutexUnlockCount); delete [] str; delete n; LONGS_EQUAL(storedAmountOfLeaks, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(4, mutexLockCount); CHECK_EQUAL(4, mutexUnlockCount); MemoryLeakWarningPlugin::turnOnNewDeleteOverloads(); } #ifdef __clang__ IGNORE_TEST(MemoryLeakWarningThreadSafe, turnOnThreadSafeNewDeleteOverloads) { /* Clang misbehaves with -O2 - it will not overload operator new or * operator new[] no matter what. Therefore, this test is must be ignored. */ } #else TEST(MemoryLeakWarningThreadSafe, turnOnThreadSafeNewDeleteOverloads) { #undef new int storedAmountOfLeaks = MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all); MemoryLeakWarningPlugin::turnOnThreadSafeNewDeleteOverloads(); int *n = new int; int *n_nothrow = new (std::nothrow) int; char *str = new char[20]; char *str_nothrow = new (std::nothrow) char[20]; LONGS_EQUAL(storedAmountOfLeaks + 4, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(4, mutexLockCount); CHECK_EQUAL(4, mutexUnlockCount); delete [] str_nothrow; delete [] str; delete n; delete n_nothrow; LONGS_EQUAL(storedAmountOfLeaks, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(8, mutexLockCount); CHECK_EQUAL(8, mutexUnlockCount); MemoryLeakWarningPlugin::turnOnNewDeleteOverloads(); #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif } #endif #endif #endif cpputest-3.7.2/tests/PluginTest.cpp000644 000765 000024 00000014401 12521603460 020267 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" #define GENERIC_PLUGIN "GenericPlugin" #define GENERIC_PLUGIN2 "GenericPlugin2" #define GENERIC_PLUGIN3 "GenericPlugin3" static int sequenceNumber; class DummyPlugin: public TestPlugin { public: DummyPlugin(const SimpleString& name) : TestPlugin(name), preAction(0), preActionSequence(0), postAction(0), postActionSequence(0) { } virtual ~DummyPlugin() { } virtual void preTestAction(UtestShell&, TestResult&) { preAction++; preActionSequence = sequenceNumber++; } virtual void postTestAction(UtestShell&, TestResult&) { postAction++; postActionSequence = sequenceNumber++; } int preAction; int preActionSequence; int postAction; int postActionSequence; }; class DummyPluginWhichAcceptsParameters: public DummyPlugin { public: DummyPluginWhichAcceptsParameters(const SimpleString& name) : DummyPlugin(name) { } virtual bool parseArguments(int ac, const char** av, int index) { SimpleString argument (av[index]); if (argument == "-paccept") return true; return TestPlugin::parseArguments(ac, av, index); } }; TEST_GROUP(PluginTest) { DummyPlugin* firstPlugin; DummyPluginWhichAcceptsParameters* secondPlugin; DummyPlugin* thirdPlugin; TestTestingFixture *genFixture; TestRegistry *registry; void setup() { firstPlugin = new DummyPlugin(GENERIC_PLUGIN); secondPlugin = new DummyPluginWhichAcceptsParameters(GENERIC_PLUGIN2); thirdPlugin = new DummyPlugin(GENERIC_PLUGIN3); genFixture = new TestTestingFixture; registry = genFixture->registry_; registry->installPlugin(firstPlugin); sequenceNumber = 1; } void teardown() { delete firstPlugin; delete secondPlugin; delete thirdPlugin; delete genFixture; } }; #define GENERIC_PLUGIN "GenericPlugin" TEST(PluginTest, PluginHasName) { STRCMP_EQUAL(GENERIC_PLUGIN, firstPlugin->getName().asCharString()); } TEST(PluginTest, InstallPlugin) { CHECK_EQUAL(firstPlugin, registry->getFirstPlugin()); CHECK_EQUAL(firstPlugin, registry->getPluginByName(GENERIC_PLUGIN)); LONGS_EQUAL(1, registry->countPlugins()); } TEST(PluginTest, InstallMultiplePlugins) { registry->installPlugin(thirdPlugin); CHECK_EQUAL(firstPlugin, registry->getPluginByName(GENERIC_PLUGIN)); CHECK_EQUAL(thirdPlugin, registry->getPluginByName(GENERIC_PLUGIN3)); CHECK_EQUAL(0, registry->getPluginByName("I do not exist")); } TEST(PluginTest, ActionsAllRun) { genFixture->runAllTests(); genFixture->runAllTests(); CHECK_EQUAL(2, firstPlugin->preAction); CHECK_EQUAL(2, firstPlugin->postAction); } TEST(PluginTest, Sequence) { registry->installPlugin(thirdPlugin); genFixture->runAllTests(); CHECK_EQUAL(1, thirdPlugin->preActionSequence); CHECK_EQUAL(2, firstPlugin->preActionSequence); CHECK_EQUAL(3, firstPlugin->postActionSequence); CHECK_EQUAL(4, thirdPlugin->postActionSequence); LONGS_EQUAL(2, registry->countPlugins()); } TEST(PluginTest, RemovePluginByName) { registry->installPlugin(secondPlugin); registry->installPlugin(thirdPlugin); LONGS_EQUAL(3, registry->countPlugins()); registry->removePluginByName(GENERIC_PLUGIN2); LONGS_EQUAL(2, registry->countPlugins()); } struct DefaultPlugin : public TestPlugin { DefaultPlugin() : TestPlugin("default") {} }; TEST(PluginTest, DefaultPostTestActionDoesntDoAnything) { DefaultPlugin defaultPlugin; registry->installPlugin(&defaultPlugin); genFixture->runAllTests(); } TEST(PluginTest, DisablesPluginsDontRun) { registry->installPlugin(thirdPlugin); thirdPlugin->disable(); genFixture->runAllTests(); CHECK(!thirdPlugin->isEnabled()); thirdPlugin->enable(); genFixture->runAllTests(); CHECK_EQUAL(2, firstPlugin->preAction); CHECK_EQUAL(1, thirdPlugin->preAction); CHECK(thirdPlugin->isEnabled()); } TEST(PluginTest, ParseArgumentsForUnknownArgumentsFails) { registry->installPlugin(secondPlugin); const char *cmd_line[] = {"nonsense", "andmorenonsense"}; CHECK(registry->getFirstPlugin()->parseAllArguments(2, const_cast(cmd_line), 0) == false); /* cover non-const wrapper, too */ } TEST(PluginTest, ParseArgumentsContinuesAndSucceedsWhenAPluginCanParse) { registry->installPlugin(secondPlugin); const char *cmd_line[] = {"-paccept", "andmorenonsense"}; CHECK(registry->getFirstPlugin()->parseAllArguments(2, const_cast(cmd_line), 0)); /* cover non-const wrapper, too */ } cpputest-3.7.2/tests/PreprocessorTest.cpp000644 000765 000024 00000003603 12521603460 021521 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" TEST_GROUP(PreprocessorTest) { }; /* TODO: Need to fix this on all platforms! */ #if 0 #ifndef CPPUTEST_COMPILATION TEST(PreprocessorTest, FailWhenCPPUTEST_COMPILATIONIsNotDefined) { FAIL("CPPUTEST_COMPILATION should always be defined when compiling CppUTest"); } #endif #endif cpputest-3.7.2/tests/RunAllTests.sh000755 000765 000024 00000000133 12521603460 020241 0ustar00basvoddestaff000000 000000 #/bin/bash #put any pre-test execution commands here. echo Running all tests ./AllTests $1 cpputest-3.7.2/tests/SetPluginTest.cpp000644 000765 000024 00000006577 12521603460 020762 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestPlugin.h" static void orig_func1() { } static void stub_func1() { } static void orig_func2() { } static void stub_func2() { } static void (*fp1)(); static void (*fp2)(); TEST_GROUP(SetPointerPluginTest) { SetPointerPlugin* plugin_; TestRegistry* myRegistry_; StringBufferTestOutput* output_; TestResult* result_; void setup() { myRegistry_ = new TestRegistry(); plugin_ = new SetPointerPlugin("TestSetPlugin"); myRegistry_->setCurrentRegistry(myRegistry_); myRegistry_->installPlugin(plugin_); output_ = new StringBufferTestOutput(); result_ = new TestResult(*output_); } void teardown() { myRegistry_->setCurrentRegistry(0); delete myRegistry_; delete plugin_; delete output_; delete result_; } }; class FunctionPointerUtest : public Utest { public: void setup() _override { UT_PTR_SET(fp1, stub_func1); UT_PTR_SET(fp2, stub_func2); UT_PTR_SET(fp2, stub_func2); } void testBody() _override { CHECK(fp1 == stub_func1); CHECK(fp2 == stub_func2); } }; class FunctionPointerUtestShell: public UtestShell { public: virtual Utest* createTest() { return new FunctionPointerUtest(); } }; TEST(SetPointerPluginTest, installTwoFunctionPointer) { FunctionPointerUtestShell *tst = new FunctionPointerUtestShell(); ; fp1 = orig_func1; fp2 = orig_func2; myRegistry_->addTest(tst); myRegistry_->runAllTests(*result_); CHECK(fp1 == orig_func1); CHECK(fp2 == orig_func2); LONGS_EQUAL(0, result_->getFailureCount()); LONGS_EQUAL(2, result_->getCheckCount()); delete tst; } class MaxFunctionPointerUtest : public Utest { public: int numOfFpSets; MaxFunctionPointerUtest(int num) : numOfFpSets(num) { } void setup() { for (int i = 0; i < numOfFpSets; ++i) { UT_PTR_SET(fp1, stub_func1); } } }; class MaxFunctionPointerUtestShell: public UtestShell { public: int numOfFpSets; MaxFunctionPointerUtestShell(int num) : numOfFpSets(num) { } virtual Utest* createTest() { return new MaxFunctionPointerUtest(numOfFpSets); } }; TEST(SetPointerPluginTest, installTooMuchFunctionPointer) { MaxFunctionPointerUtestShell *tst = new MaxFunctionPointerUtestShell(SetPointerPlugin::MAX_SET + 1); myRegistry_->addTest(tst); myRegistry_->runAllTests(*result_); LONGS_EQUAL(1, result_->getFailureCount()); delete tst; } static double orig_double = 3.0; static double* orig_double_ptr = &orig_double; static double stub_double = 4.0; class SetDoublePointerUtest : public Utest { public: void setup() { UT_PTR_SET(orig_double_ptr, &stub_double); } void testBody() { CHECK(orig_double_ptr == &stub_double); } }; class SetDoublePointerUtestShell: public UtestShell { public: Utest * createTest() { return new SetDoublePointerUtest(); } }; TEST(SetPointerPluginTest, doublePointer) { SetDoublePointerUtestShell *doubletst = new SetDoublePointerUtestShell(); myRegistry_->addTest(doubletst); myRegistry_->runAllTests(*result_); CHECK(orig_double_ptr == &orig_double); LONGS_EQUAL(1, result_->getCheckCount()); delete doubletst; } cpputest-3.7.2/tests/SimpleMutexTest.cpp000644 000765 000024 00000006167 12521603460 021317 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2014, Michael Feathers, James Grenning, Bas Vodde and Chen YewMing * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/SimpleMutex.h" #include "CppUTest/PlatformSpecificFunctions.h" static int mutexCreateCount = 0; static int mutexLockCount = 0; static int mutexUnlockCount = 0; static int mutexDestroyCount = 0; static PlatformSpecificMutex StubMutexCreate(void) { mutexCreateCount++; return 0; } static void StubMutexLock(PlatformSpecificMutex) { mutexLockCount++; } static void StubMutexUnlock(PlatformSpecificMutex) { mutexUnlockCount++; } static void StubMutexDestroy(PlatformSpecificMutex) { mutexDestroyCount++; } TEST_GROUP(SimpleMutexTest) { void setup() { UT_PTR_SET(PlatformSpecificMutexCreate, StubMutexCreate); UT_PTR_SET(PlatformSpecificMutexLock, StubMutexLock); UT_PTR_SET(PlatformSpecificMutexUnlock, StubMutexUnlock); UT_PTR_SET(PlatformSpecificMutexDestroy, StubMutexDestroy); mutexCreateCount = 0; mutexDestroyCount = 0; mutexLockCount = 0; mutexUnlockCount = 0; } void teardown() { } }; TEST(SimpleMutexTest, CreateAndDestroy) { { SimpleMutex mtx; } CHECK_EQUAL(1, mutexCreateCount); CHECK_EQUAL(1, mutexDestroyCount); CHECK_EQUAL(0, mutexLockCount); CHECK_EQUAL(0, mutexUnlockCount); } TEST(SimpleMutexTest, LockUnlockTest) { { SimpleMutex mtx; mtx.Lock(); mtx.Unlock(); } CHECK_EQUAL(1, mutexCreateCount); CHECK_EQUAL(1, mutexLockCount); CHECK_EQUAL(1, mutexUnlockCount); CHECK_EQUAL(1, mutexDestroyCount); } cpputest-3.7.2/tests/SimpleStringTest.cpp000644 000765 000024 00000051526 12521603460 021462 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/SimpleString.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestMemoryAllocator.h" TEST_GROUP(SimpleString) { }; TEST(SimpleString, defaultAllocatorIsNewArrayAllocator) { POINTERS_EQUAL(getCurrentNewArrayAllocator(), SimpleString::getStringAllocator()); } class MyOwnStringAllocator : public TestMemoryAllocator { public: MyOwnStringAllocator() : memoryWasAllocated(false) {} virtual ~MyOwnStringAllocator() {} bool memoryWasAllocated; char* alloc_memory(size_t size, const char* file, int line) { memoryWasAllocated = true; return TestMemoryAllocator::alloc_memory(size, file, line); } }; TEST(SimpleString, allocatorForSimpleStringCanBeReplaced) { MyOwnStringAllocator myOwnAllocator; SimpleString::setStringAllocator(&myOwnAllocator); SimpleString simpleString; CHECK(myOwnAllocator.memoryWasAllocated); SimpleString::setStringAllocator(NULL); } TEST(SimpleString, CreateSequence) { SimpleString expected("hellohello"); SimpleString actual("hello", 2); CHECK_EQUAL(expected, actual); } TEST(SimpleString, CreateSequenceOfZero) { SimpleString expected(""); SimpleString actual("hello", 0); CHECK_EQUAL(expected, actual); } TEST(SimpleString, Copy) { SimpleString s1("hello"); SimpleString s2(s1); CHECK_EQUAL(s1, s2); } TEST(SimpleString, Assignment) { SimpleString s1("hello"); SimpleString s2("goodbye"); s2 = s1; CHECK_EQUAL(s1, s2); } TEST(SimpleString, Equality) { SimpleString s1("hello"); SimpleString s2("hello"); CHECK(s1 == s2); } TEST(SimpleString, InEquality) { SimpleString s1("hello"); SimpleString s2("goodbye"); CHECK(s1 != s2); } TEST(SimpleString, CompareNoCaseWithoutCase) { SimpleString s1("hello"); SimpleString s2("hello"); CHECK(s1.equalsNoCase(s2)); } TEST(SimpleString, CompareNoCaseWithCase) { SimpleString s1("hello"); SimpleString s2("HELLO"); CHECK(s1.equalsNoCase(s2)); } TEST(SimpleString, CompareNoCaseWithCaseNotEqual) { SimpleString s1("hello"); SimpleString s2("WORLD"); CHECK(!s1.equalsNoCase(s2)); } TEST(SimpleString, asCharString) { SimpleString s1("hello"); STRCMP_EQUAL("hello", s1.asCharString()); } TEST(SimpleString, Size) { SimpleString s1("hello!"); LONGS_EQUAL(6, s1.size()); } TEST(SimpleString, lowerCase) { SimpleString s1("AbCdEfG1234"); SimpleString s2(s1.lowerCase()); STRCMP_EQUAL("abcdefg1234", s2.asCharString()); STRCMP_EQUAL("AbCdEfG1234", s1.asCharString()); } TEST(SimpleString, Addition) { SimpleString s1("hello!"); SimpleString s2("goodbye!"); SimpleString s3("hello!goodbye!"); SimpleString s4; s4 = s1 + s2; CHECK_EQUAL(s3, s4); } TEST(SimpleString, Concatenation) { SimpleString s1("hello!"); SimpleString s2("goodbye!"); SimpleString s3("hello!goodbye!"); SimpleString s4; s4 += s1; s4 += s2; CHECK_EQUAL(s3, s4); SimpleString s5("hello!goodbye!hello!goodbye!"); s4 += s4; CHECK_EQUAL(s5, s4); } TEST(SimpleString, Contains) { SimpleString s("hello!"); SimpleString empty(""); SimpleString beginning("hello"); SimpleString end("lo!"); SimpleString mid("l"); SimpleString notPartOfString("xxxx"); CHECK(s.contains(empty)); CHECK(s.contains(beginning)); CHECK(s.contains(end)); CHECK(s.contains(mid)); CHECK(!s.contains(notPartOfString)); CHECK(empty.contains(empty)); CHECK(!empty.contains(s)); } TEST(SimpleString, startsWith) { SimpleString hi("Hi you!"); SimpleString part("Hi"); SimpleString diff("Hrrm Hi you! ffdsfd"); CHECK(hi.startsWith(part)); CHECK(!part.startsWith(hi)); CHECK(!diff.startsWith(hi)); } TEST(SimpleString, split) { SimpleString hi("hello\nworld\nhow\ndo\nyou\ndo\n\n"); SimpleStringCollection collection; hi.split("\n", collection); LONGS_EQUAL(7, collection.size()); STRCMP_EQUAL("hello\n", collection[0].asCharString()); STRCMP_EQUAL("world\n", collection[1].asCharString()); STRCMP_EQUAL("how\n", collection[2].asCharString()); STRCMP_EQUAL("do\n", collection[3].asCharString()); STRCMP_EQUAL("you\n", collection[4].asCharString()); STRCMP_EQUAL("do\n", collection[5].asCharString()); STRCMP_EQUAL("\n", collection[6].asCharString()); } TEST(SimpleString, splitNoTokenOnTheEnd) { SimpleString string("Bah Yah oops"); SimpleStringCollection collection; string.split(" ", collection); LONGS_EQUAL(3, collection.size()); STRCMP_EQUAL("Bah ", collection[0].asCharString()); STRCMP_EQUAL("Yah ", collection[1].asCharString()); STRCMP_EQUAL("oops", collection[2].asCharString()); } TEST(SimpleString, count) { SimpleString str("ha ha ha ha"); LONGS_EQUAL(4, str.count("ha")); } TEST(SimpleString, countTogether) { SimpleString str("hahahaha"); LONGS_EQUAL(4, str.count("ha")); } TEST(SimpleString, countEmptyString) { SimpleString str("hahahaha"); LONGS_EQUAL(8, str.count("")); } TEST(SimpleString, countEmptyStringInEmptyString) { SimpleString str; LONGS_EQUAL(0, str.count("")); } TEST(SimpleString, endsWith) { SimpleString str("Hello World"); CHECK(str.endsWith("World")); CHECK(!str.endsWith("Worl")); CHECK(!str.endsWith("Hello")); SimpleString str2("ah"); CHECK(str2.endsWith("ah")); CHECK(!str2.endsWith("baah")); SimpleString str3(""); CHECK(!str3.endsWith("baah")); SimpleString str4("ha ha ha ha"); CHECK(str4.endsWith("ha")); } TEST(SimpleString, replaceCharWithChar) { SimpleString str("abcabcabca"); str.replace('a', 'b'); STRCMP_EQUAL("bbcbbcbbcb", str.asCharString()); } TEST(SimpleString, replaceEmptyStringWithEmptyString) { SimpleString str; str.replace("", ""); STRCMP_EQUAL("", str.asCharString()); } TEST(SimpleString, replaceStringWithString) { SimpleString str("boo baa boo baa boo"); str.replace("boo", "boohoo"); STRCMP_EQUAL("boohoo baa boohoo baa boohoo", str.asCharString()); } TEST(SimpleString, subStringFromEmptyString) { SimpleString str(""); STRCMP_EQUAL("", str.subString(0, 1).asCharString()); } TEST(SimpleString, subStringFromSmallString) { SimpleString str("H"); STRCMP_EQUAL("H", str.subString(0, 1).asCharString()); } TEST(SimpleString, subStringFromPos0) { SimpleString str("Hello World"); STRCMP_EQUAL("Hello", str.subString(0, 5).asCharString()); } TEST(SimpleString, subStringFromPos1) { SimpleString str("Hello World"); STRCMP_EQUAL("ello ", str.subString(1, 5).asCharString()); } TEST(SimpleString, subStringFromPos5WithAmountLargerThanString) { SimpleString str("Hello World"); STRCMP_EQUAL("World", str.subString(6, 10).asCharString()); } TEST(SimpleString, subStringBeginPosOutOfBounds) { SimpleString str("Hello World"); STRCMP_EQUAL("", str.subString(13, 5).asCharString()); } TEST(SimpleString, subStringFromTillNormal) { SimpleString str("Hello World"); STRCMP_EQUAL("Hello", str.subStringFromTill('H', ' ').asCharString()); } TEST(SimpleString, subStringFromTillOutOfBounds) { SimpleString str("Hello World"); STRCMP_EQUAL("World", str.subStringFromTill('W', '!').asCharString()); } TEST(SimpleString, subStringFromTillStartDoesntExist) { SimpleString str("Hello World"); STRCMP_EQUAL("", str.subStringFromTill('!', ' ').asCharString()); } TEST(SimpleString, subStringFromTillWhenTheEndAppearsBeforeTheStart) { SimpleString str("Hello World"); STRCMP_EQUAL("World", str.subStringFromTill('W', 'H').asCharString()); } TEST(SimpleString, findNormal) { SimpleString str("Hello World"); LONGS_EQUAL(0, str.find('H')); LONGS_EQUAL(1, str.find('e')); LONGS_EQUAL(-1, str.find('!')); } TEST(SimpleString, at) { SimpleString str("Hello World"); BYTES_EQUAL('H', str.at(0)); } TEST(SimpleString, copyInBufferNormal) { SimpleString str("Hello World"); size_t bufferSize = str.size()+1; char* buffer = (char*) malloc(bufferSize); str.copyToBuffer(buffer, bufferSize); STRCMP_EQUAL(str.asCharString(), buffer); free(buffer); } TEST(SimpleString, copyInBufferWithEmptyBuffer) { SimpleString str("Hello World"); char* buffer= NULL; str.copyToBuffer(buffer, 0); POINTERS_EQUAL(NULL, buffer); } TEST(SimpleString, copyInBufferWithBiggerBufferThanNeeded) { SimpleString str("Hello"); size_t bufferSize = 20; char* buffer= (char*) malloc(bufferSize); str.copyToBuffer(buffer, bufferSize); STRCMP_EQUAL(str.asCharString(), buffer); free(buffer); } TEST(SimpleString, ContainsNull) { SimpleString s(0); STRCMP_EQUAL("", s.asCharString()); } TEST(SimpleString, NULLReportsNullString) { STRCMP_EQUAL("(null)", StringFromOrNull((char*) NULL).asCharString()); } TEST(SimpleString, Booleans) { SimpleString s1(StringFrom(true)); SimpleString s2(StringFrom(false)); CHECK(s1 == "true"); CHECK(s2 == "false"); } TEST(SimpleString, Characters) { SimpleString s(StringFrom('a')); SimpleString s2(StringFrom('a')); CHECK(s == s2); } TEST(SimpleString, LongInts) { SimpleString s(StringFrom((long)1)); CHECK(s == "1"); } TEST(SimpleString, UnsignedLongInts) { SimpleString s(StringFrom((unsigned long)1)); SimpleString s2(StringFrom((unsigned long)1)); CHECK(s == s2); } TEST(SimpleString, Doubles) { SimpleString s(StringFrom(1.2)); STRCMP_EQUAL("1.2", s.asCharString()); } TEST(SimpleString, SmallDoubles) { SimpleString s(StringFrom(1.2e-10)); STRCMP_CONTAINS("1.2e", s.asCharString()); } TEST(SimpleString, Sizes) { size_t size = 10; STRCMP_EQUAL("10", StringFrom((int) size).asCharString()); } TEST(SimpleString, HexStrings) { SimpleString h1 = HexStringFrom(0xffffL); STRCMP_EQUAL("ffff", h1.asCharString()); } TEST(SimpleString, StringFromFormat) { SimpleString h1 = StringFromFormat("%s %s! %d", "Hello", "World", 2009); STRCMP_EQUAL("Hello World! 2009", h1.asCharString()); } TEST(SimpleString, StringFromFormatpointer) { //this is not a great test. but %p is odd on mingw and even more odd on Solaris. SimpleString h1 = StringFromFormat("%p", (void*) 1); if (h1.size() == 3) STRCMP_EQUAL("0x1", h1.asCharString()) else if (h1.size() == 8) STRCMP_EQUAL("00000001", h1.asCharString()) else if (h1.size() == 16) STRCMP_EQUAL("0000000000000001", h1.asCharString()) else if (h1.size() == 1) STRCMP_EQUAL("1", h1.asCharString()) else FAIL("Off %p behavior") } TEST(SimpleString, StringFromFormatLarge) { const char* s = "ThisIsAPrettyLargeStringAndIfWeAddThisManyTimesToABufferItWillbeFull"; SimpleString h1 = StringFromFormat("%s%s%s%s%s%s%s%s%s%s", s, s, s, s, s, s, s, s, s, s); LONGS_EQUAL(10, h1.count(s)); } TEST(SimpleString, StringFromConstSimpleString) { STRCMP_EQUAL("bla", StringFrom(SimpleString("bla")).asCharString()); } static int WrappedUpVSNPrintf(char* buf, size_t n, const char* format, ...) { va_list arguments; va_start(arguments, format); int result = PlatformSpecificVSNprintf(buf, n, format, arguments); va_end(arguments); return result; } TEST(SimpleString, PlatformSpecificSprintf_fits) { char buf[10]; int count = WrappedUpVSNPrintf(buf, sizeof(buf), "%s", "12345"); STRCMP_EQUAL("12345", buf); LONGS_EQUAL(5, count); } TEST(SimpleString, PlatformSpecificSprintf_doesNotFit) { char buf[10]; int count = WrappedUpVSNPrintf(buf, sizeof(buf), "%s", "12345678901"); STRCMP_EQUAL("123456789", buf); LONGS_EQUAL(11, count); } TEST(SimpleString, PadStringsToSameLengthString1Larger) { SimpleString str1("1"); SimpleString str2("222"); SimpleString::padStringsToSameLength(str1, str2, '4'); STRCMP_EQUAL("441", str1.asCharString()); STRCMP_EQUAL("222", str2.asCharString()); } TEST(SimpleString, PadStringsToSameLengthString2Larger) { SimpleString str1(" "); SimpleString str2(""); SimpleString::padStringsToSameLength(str1, str2, ' '); STRCMP_EQUAL(" ", str1.asCharString()); STRCMP_EQUAL(" ", str2.asCharString()); } TEST(SimpleString, PadStringsToSameLengthWithSameLengthStrings) { SimpleString str1("123"); SimpleString str2("123"); SimpleString::padStringsToSameLength(str1, str2, ' '); STRCMP_EQUAL("123", str1.asCharString()); STRCMP_EQUAL("123", str2.asCharString()); } TEST(SimpleString, NullParameters2) { SimpleString* arr = new SimpleString[100]; delete[] arr; } TEST(SimpleString, CollectionMultipleAllocateNoLeaksMemory) { SimpleStringCollection col; col.allocate(5); col.allocate(5); // CHECK no memory leak } TEST(SimpleString, CollectionReadOutOfBoundsReturnsEmptyString) { SimpleStringCollection col; col.allocate(3); STRCMP_EQUAL("", col[3].asCharString()); } TEST(SimpleString, CollectionWritingToEmptyString) { SimpleStringCollection col; col.allocate(3); col[3] = SimpleString("HAH"); STRCMP_EQUAL("", col[3].asCharString()); } #ifdef CPPUTEST_64BIT #ifndef CPPUTEST_64BIT_32BIT_LONGS TEST(SimpleString, _64BitAddressPrintsCorrectly) { char* p = (char*) 0x0012345678901234; SimpleString expected("0x12345678901234"); SimpleString actual = StringFrom((void*)p); STRCMP_EQUAL(expected.asCharString(), actual.asCharString()); } #else /* * This test case should pass on 64 bit systems with 32 bit longs, * but actually fails due to an implementation problem: Right now, * the 64 bit pointers are casted to 32bit as the %p is causing * different formats on different platforms. However, this will * need to be fixed in the future. */ IGNORE_TEST(SimpleString, _64BitAddressPrintsCorrectly) { char* p = (char*) 0xffffffff; SimpleString expected("0x123456789"); SimpleString actual = StringFrom((void*)&p[0x2345678A]); STRCMP_EQUAL(expected.asCharString(), actual.asCharString()); } #endif #else /* * This test case cannot pass on 32 bit systems. */ IGNORE_TEST(SimpleString, _64BitAddressPrintsCorrectly) { } #endif TEST(SimpleString, BuildStringFromUnsignedInteger) { unsigned long int i = 0xffffffff; SimpleString result = StringFrom(i); const char* expected_string = "4294967295 (0xffffffff)"; CHECK_EQUAL(expected_string, result); } #if CPPUTEST_USE_STD_CPP_LIB TEST(SimpleString, fromStdString) { std::string s("hello"); SimpleString s1(StringFrom(s)); STRCMP_EQUAL("hello", s1.asCharString()); } TEST(SimpleString, CHECK_EQUAL_unsigned_long) { unsigned long i = 0xffffffffUL; CHECK_EQUAL(i, i); } TEST(SimpleString, unsigned_long) { unsigned long i = 0xffffffffUL; SimpleString result = StringFrom(i); const char* expected_string = "4294967295 (0xffffffff)"; CHECK_EQUAL(expected_string, result); } #endif TEST(SimpleString, StrCmp) { char empty[] = ""; char blabla[] = "blabla"; char bla[] = "bla"; CHECK(SimpleString::StrCmp(empty, empty) == 0); CHECK(SimpleString::StrCmp(bla, blabla) == -'b'); CHECK(SimpleString::StrCmp(blabla, bla) == 'b'); CHECK(SimpleString::StrCmp(bla, empty) == 'b'); CHECK(SimpleString::StrCmp(empty, bla) == -'b'); CHECK(SimpleString::StrCmp(bla, bla) == 0); } TEST(SimpleString, StrNCpy_no_zero_termination) { char str[] = "XXXXXXXXXX"; STRCMP_EQUAL("womanXXXXX", SimpleString::StrNCpy(str, "woman", 5)); } TEST(SimpleString, StrNCpy_zero_termination) { char str[] = "XXXXXXXXXX"; STRCMP_EQUAL("woman", SimpleString::StrNCpy(str, "woman", 6)); } TEST(SimpleString, StrNCpy_null_proof) { POINTERS_EQUAL(NULL, SimpleString::StrNCpy(NULL, "woman", 6)); } TEST(SimpleString, StrNCpy_stops_at_end_of_string) { char str[] = "XXXXXXXXXX"; STRCMP_EQUAL("woman", SimpleString::StrNCpy(str, "woman", 8)); } TEST(SimpleString, StrNCpy_nothing_to_do) { char str[] = "XXXXXXXXXX"; STRCMP_EQUAL("XXXXXXXXXX", SimpleString::StrNCpy(str, "woman", 0)); } TEST(SimpleString, StrNCpy_write_into_the_middle) { char str[] = "womanXXXXX"; SimpleString::StrNCpy(str+3, "e", 1); STRCMP_EQUAL("womenXXXXX", str); } TEST(SimpleString, StrNCmp_equal) { int result = SimpleString::StrNCmp("teststring", "tests", 5); LONGS_EQUAL(0, result); } TEST(SimpleString, StrNCmp_should_always_return_0_when_n_is_0) { int result = SimpleString::StrNCmp("a", "b", 0); LONGS_EQUAL(0, result); } TEST(SimpleString, StrNCmp_s1_smaller) { int result = SimpleString::StrNCmp("testing", "tests", 7); LONGS_EQUAL('i' - 's', result); } TEST(SimpleString, StrNCmp_s1_larger) { int result = SimpleString::StrNCmp("teststring", "tester", 7); LONGS_EQUAL('s' - 'e', result); } TEST(SimpleString, StrNCmp_n_too_large) { int result = SimpleString::StrNCmp("teststring", "teststring", 20); LONGS_EQUAL(0, result); } TEST(SimpleString, StrNCmp_s1_empty) { int result = SimpleString::StrNCmp("", "foo", 2); LONGS_EQUAL(0 - 'f', result); } TEST(SimpleString, StrNCmp_s2_empty) { int result = SimpleString::StrNCmp("foo", "", 2); LONGS_EQUAL('f', result); } TEST(SimpleString, StrNCmp_s1_and_s2_empty) { int result = SimpleString::StrNCmp("", "", 2); LONGS_EQUAL(0, result); } TEST(SimpleString, StrStr) { char foo[] = "foo"; char empty[] = ""; char foobarfoo[] = "foobarfoo"; char barf[] = "barf"; CHECK(SimpleString::StrStr(foo, empty) == foo); CHECK(SimpleString::StrStr(empty, foo) == 0); CHECK(SimpleString::StrStr(foobarfoo, barf) == foobarfoo+3); CHECK(SimpleString::StrStr(barf, foobarfoo) == 0); CHECK(SimpleString::StrStr(foo, foo) == foo); } TEST(SimpleString, AtoI) { char max_short_str[] = "32767"; char min_short_str[] = "-32768"; CHECK(12345 == SimpleString::AtoI("012345")); CHECK(6789 == SimpleString::AtoI("6789")); CHECK(12345 == SimpleString::AtoI("12345/")); CHECK(12345 == SimpleString::AtoI("12345:")); CHECK(-12345 == SimpleString::AtoI("-12345")); CHECK(123 == SimpleString::AtoI("\t \r\n123")); CHECK(123 == SimpleString::AtoI("123-foo")); CHECK(0 == SimpleString::AtoI("-foo")); CHECK(-32768 == SimpleString::AtoI(min_short_str)); CHECK(32767 == SimpleString::AtoI(max_short_str)); } TEST(SimpleString, Binary) { const unsigned char value[] = { 0x00, 0x01, 0x2A, 0xFF }; const char expectedString[] = "00 01 2A FF"; STRCMP_EQUAL(expectedString, StringFromBinary(value, sizeof(value)).asCharString()); STRCMP_EQUAL(expectedString, StringFromBinaryOrNull(value, sizeof(value)).asCharString()); STRCMP_EQUAL("", StringFromBinary(value, 0).asCharString()); STRCMP_EQUAL("(null)", StringFromBinaryOrNull(NULL, 0).asCharString()); } TEST(SimpleString, MemCmp) { unsigned char smaller[] = { 0x00, 0x01, 0x2A, 0xFF }; unsigned char greater[] = { 0x00, 0x01, 0xFF, 0xFF }; LONGS_EQUAL(0, SimpleString::MemCmp(smaller, smaller, sizeof(smaller))); CHECK(SimpleString::MemCmp(smaller, greater, sizeof(smaller)) < 0); CHECK(SimpleString::MemCmp(greater, smaller, sizeof(smaller)) > 0); LONGS_EQUAL(0, SimpleString::MemCmp(NULL, NULL, 0)); } TEST(SimpleString, MemCmpFirstLastNotMatching) { unsigned char base[] = { 0x00, 0x01, 0x2A, 0xFF }; unsigned char firstNotMatching[] = { 0x01, 0x01, 0x2A, 0xFF }; unsigned char lastNotMatching[] = { 0x00, 0x01, 0x2A, 0x00 }; CHECK(0 != SimpleString::MemCmp(base, firstNotMatching, sizeof(base))); CHECK(0 != SimpleString::MemCmp(base, lastNotMatching, sizeof(base))); } cpputest-3.7.2/tests/TestFailureNaNTest.cpp000644 000765 000024 00000006416 12521603460 021664 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" namespace { const int failLineNumber = 2; const char* failFileName = "fail.cpp"; } static double zero = 0.0; static const double not_a_number = zero / zero; extern "C" { static int IsNanForSystemsWithoutNan(double d) { return (0.0 == d); } } TEST_GROUP(TestFailureNaN) { UtestShell* test; void setup() { test = new UtestShell("groupname", "testname", failFileName, failLineNumber-1); if(PlatformSpecificIsNan(not_a_number) == false) UT_PTR_SET(PlatformSpecificIsNan, IsNanForSystemsWithoutNan); } void teardown() { delete test; } }; #define FAILURE_EQUAL(a, b) STRCMP_EQUAL_LOCATION(a, b.getMessage().asCharString(), __FILE__, __LINE__) TEST(TestFailureNaN, DoublesEqualExpectedIsNaN) { DoublesEqualFailure f(test, failFileName, failLineNumber, not_a_number, 2.0, 3.0); FAILURE_EQUAL("expected \n" "\tbut was <2> threshold used was <3>\n" "\tCannot make comparisons with Nan", f); } TEST(TestFailureNaN, DoublesEqualActualIsNaN) { DoublesEqualFailure f(test, failFileName, failLineNumber, 1.0, not_a_number, 3.0); FAILURE_EQUAL("expected <1>\n" "\tbut was threshold used was <3>\n" "\tCannot make comparisons with Nan", f); } TEST(TestFailureNaN, DoublesEqualThresholdIsNaN) { DoublesEqualFailure f(test, failFileName, failLineNumber, 1.0, 2.0, not_a_number); FAILURE_EQUAL("expected <1>\n" "\tbut was <2> threshold used was \n" "\tCannot make comparisons with Nan", f); } cpputest-3.7.2/tests/TestFailureTest.cpp000644 000765 000024 00000026403 12521603460 021265 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" namespace { const int failLineNumber = 2; const char* failFileName = "fail.cpp"; } TEST_GROUP(TestFailure) { UtestShell* test; void setup() { test = new UtestShell("groupname", "testname", failFileName, failLineNumber-1); } void teardown() { delete test; } }; #define FAILURE_EQUAL(a, b) STRCMP_EQUAL_LOCATION(a, b.getMessage().asCharString(), __FILE__, __LINE__) TEST(TestFailure, CreateFailure) { TestFailure f1(test, failFileName, failLineNumber, "the failure message"); TestFailure f2(test, "the failure message"); TestFailure f3(test, failFileName, failLineNumber); } TEST(TestFailure, GetTestFileAndLineFromFailure) { TestFailure f1(test, failFileName, failLineNumber, "the failure message"); STRCMP_EQUAL(failFileName, f1.getTestFileName().asCharString()); LONGS_EQUAL(1, f1.getTestLineNumber()); } TEST(TestFailure, CreatePassingEqualsFailure) { EqualsFailure f(test, failFileName, failLineNumber, "expected", "actual"); FAILURE_EQUAL("expected \n\tbut was ", f); } TEST(TestFailure, EqualsFailureWithNullAsActual) { EqualsFailure f(test, failFileName, failLineNumber, "expected", NULL); FAILURE_EQUAL("expected \n\tbut was <(null)>", f); } TEST(TestFailure, EqualsFailureWithNullAsExpected) { EqualsFailure f(test, failFileName, failLineNumber, NULL, "actual"); FAILURE_EQUAL("expected <(null)>\n\tbut was ", f); } TEST(TestFailure, CheckEqualFailure) { CheckEqualFailure f(test, failFileName, failLineNumber, "expected", "actual"); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 0 at: < actual >\n" "\t ^", f); } TEST(TestFailure, CheckFailure) { CheckFailure f(test, failFileName, failLineNumber, "CHECK", "chk"); FAILURE_EQUAL("CHECK(chk) failed", f); } TEST(TestFailure, CheckFailureWithText) { CheckFailure f(test, failFileName, failLineNumber, "CHECK", "chk", "text"); FAILURE_EQUAL("Message: text\n" "\tCHECK(chk) failed", f); } TEST(TestFailure, FailFailure) { FailFailure f(test, failFileName, failLineNumber, "chk"); FAILURE_EQUAL("chk", f); } TEST(TestFailure, LongsEqualFailure) { LongsEqualFailure f(test, failFileName, failLineNumber, 1, 2); FAILURE_EQUAL("expected <1 0x1>\n\tbut was <2 0x2>", f); } TEST(TestFailure, StringsEqualFailure) { StringEqualFailure f(test, failFileName, failLineNumber, "abc", "abd"); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 2 at: < abd >\n" "\t ^", f); } TEST(TestFailure, StringsEqualFailureAtTheEnd) { StringEqualFailure f(test, failFileName, failLineNumber, "abc", "ab"); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 2 at: < ab >\n" "\t ^", f); } TEST(TestFailure, StringsEqualFailureNewVariantAtTheEnd) { StringEqualFailure f(test, failFileName, failLineNumber, "EndOfALongerString", "EndOfALongerStrinG"); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 17 at: \n" "\t ^", f); } TEST(TestFailure, StringsEqualFailureWithNewLinesAndTabs) { StringEqualFailure f(test, failFileName, failLineNumber, "StringWith\t\nDifferentString", "StringWith\t\ndifferentString"); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 12 at: \n" "\t \t\n^", f); } TEST(TestFailure, StringsEqualFailureInTheMiddle) { StringEqualFailure f(test, failFileName, failLineNumber, "aa", "ab"); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 1 at: < ab >\n" "\t ^", f); } TEST(TestFailure, StringsEqualFailureAtTheBeginning) { StringEqualFailure f(test, failFileName, failLineNumber, "aaa", "bbb"); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 0 at: < bbb >\n" "\t ^", f); } TEST(TestFailure, StringsEqualFailureWithNullAsActual) { StringEqualFailure f(test, failFileName, failLineNumber, "abc", NULL); FAILURE_EQUAL("expected \n" "\tbut was <(null)>", f); } TEST(TestFailure, StringsEqualFailureWithNullAsExpected) { StringEqualFailure f(test, failFileName, failLineNumber, NULL, "abd"); FAILURE_EQUAL("expected <(null)>\n" "\tbut was ", f); } TEST(TestFailure, StringsEqualNoCaseFailure) { StringEqualNoCaseFailure f(test, failFileName, failLineNumber, "ABC", "abd"); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 2 at: < abd >\n" "\t ^", f); } TEST(TestFailure, StringsEqualNoCaseFailureWithActualAsNull) { StringEqualNoCaseFailure f(test, failFileName, failLineNumber, "ABC", NULL); FAILURE_EQUAL("expected \n" "\tbut was <(null)>", f); } TEST(TestFailure, StringsEqualNoCaseFailureWithExpectedAsNull) { StringEqualNoCaseFailure f(test, failFileName, failLineNumber, NULL, "abd"); FAILURE_EQUAL("expected <(null)>\n" "\tbut was ", f); } TEST(TestFailure, StringsEqualNoCaseFailure2) { StringEqualNoCaseFailure f(test, failFileName, failLineNumber, "ac", "AB"); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 1 at: < AB >\n" "\t ^", f); } TEST(TestFailure, DoublesEqualNormal) { DoublesEqualFailure f(test, failFileName, failLineNumber, 1.0, 2.0, 3.0); FAILURE_EQUAL("expected <1>\n" "\tbut was <2> threshold used was <3>", f); } TEST(TestFailure, BinaryEqualOneByte) { const unsigned char expectedData[] = { 0x00 }; const unsigned char actualData[] = { 0x01 }; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData)); FAILURE_EQUAL("expected <00>\n" "\tbut was <01>\n" "\tdifference starts at position 0 at: < 01 >\n" "\t ^", f); } TEST(TestFailure, BinaryEqualTwoBytes) { const unsigned char expectedData[] = {0x00, 0x01}; const unsigned char actualData[] = {0x00, 0x02}; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData)); FAILURE_EQUAL("expected <00 01>\n" "\tbut was <00 02>\n" "\tdifference starts at position 1 at: < 00 02 >\n" "\t ^", f); } TEST(TestFailure, BinaryEqualThreeBytes) { const unsigned char expectedData[] = {0x00, 0x01, 0x00}; const unsigned char actualData[] = {0x00, 0x02, 0x00}; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData)); FAILURE_EQUAL("expected <00 01 00>\n" "\tbut was <00 02 00>\n" "\tdifference starts at position 1 at: < 00 02 00 >\n" "\t ^", f); } TEST(TestFailure, BinaryEqualFullWidth) { const unsigned char expectedData[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}; const unsigned char actualData[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData)); FAILURE_EQUAL("expected <00 00 00 01 00 00 00>\n" "\tbut was <00 00 00 02 00 00 00>\n" "\tdifference starts at position 3 at: <00 00 00 02 00 00 00>\n" "\t ^", f); } TEST(TestFailure, BinaryEqualLast) { const unsigned char expectedData[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; const unsigned char actualData[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData)); FAILURE_EQUAL("expected <00 00 00 00 00 00 00>\n" "\tbut was <00 00 00 00 00 00 01>\n" "\tdifference starts at position 6 at: <00 00 00 01 >\n" "\t ^", f); } TEST(TestFailure, BinaryEqualActualNull) { const unsigned char expectedData[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, NULL, sizeof(expectedData)); FAILURE_EQUAL("expected <00 00 00 00 00 00 00>\n\tbut was <(null)>", f); } TEST(TestFailure, BinaryEqualExpectedNull) { const unsigned char actualData[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}; BinaryEqualFailure f(test, failFileName, failLineNumber, NULL, actualData, sizeof(actualData)); FAILURE_EQUAL("expected <(null)>\n\tbut was <00 00 00 00 00 00 01>", f); } cpputest-3.7.2/tests/TestFilterTest.cpp000644 000765 000024 00000007735 12521603460 021132 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestFilter.h" TEST_GROUP(TestFilter) { }; TEST(TestFilter, emptyFilterMatchesEverything) { TestFilter filter; CHECK(filter.match("random_name")); CHECK(filter.match("")); CHECK(filter.match("*&%#^&%$(*&^@#(&*@#^(&*$^@#")); } TEST(TestFilter, defaultAbsoluteMismatches) { TestFilter filter("filtername"); CHECK(!filter.match("notevenclose")); CHECK(!filter.match("filterrname")); CHECK(!filter.match("")); } TEST(TestFilter, strictMatching) { TestFilter filter("filter"); filter.strictMatching(); CHECK(filter.match("filter")); CHECK(!filter.match("filterr")); CHECK(!filter.match(" filter")); } TEST(TestFilter, equality) { TestFilter filter1("filter"); TestFilter filter2("filter"); TestFilter filter3("filter3"); CHECK(filter1 == filter2); CHECK(! (filter1 == filter3)); } TEST(TestFilter, equalityWithStrictness) { TestFilter filter1("filter"); TestFilter filter2("filter"); filter2.strictMatching(); CHECK(! (filter1 == filter2)); } TEST(TestFilter, notEqual) { TestFilter filter1("filter"); TestFilter filter2("filter"); TestFilter filter3("filter3"); CHECK(filter1 != filter3); CHECK(! (filter1 != filter2)); } TEST(TestFilter, stringFrom) { TestFilter filter("filter"); STRCMP_EQUAL("TestFilter: \"filter\"", StringFrom(filter).asCharString()); } TEST(TestFilter, stringFromWithStrictMatching) { TestFilter filter("filter"); filter.strictMatching(); STRCMP_EQUAL("TestFilter: \"filter\" with strict matching", StringFrom(filter).asCharString()); } TEST(TestFilter, listOfFilters) { TestFilter *listOfFilters = NULL; TestFilter first("foo"); TestFilter secnd("bar"); listOfFilters = first.add(listOfFilters); listOfFilters = secnd.add(listOfFilters); TestFilter *current = listOfFilters; STRCMP_EQUAL("TestFilter: \"bar\"", StringFrom(*current).asCharString()); current = current->getNext(); STRCMP_EQUAL("TestFilter: \"foo\"", StringFrom(*current).asCharString()); POINTERS_EQUAL(NULL, current->getNext()); } TEST(TestFilter, constructors) { TestFilter filter1; TestFilter filter2(SimpleString("a")); TestFilter filter3("a"); CHECK(filter1.getNext() == NULL); CHECK(filter2.getNext() == NULL); CHECK(filter3.getNext() == NULL); CHECK(filter2.match("ab")); CHECK(filter3.match("ab")); } cpputest-3.7.2/tests/TestHarness_cTest.cpp000644 000765 000024 00000021462 12521603460 021603 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness_c.h" #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/PlatformSpecificFunctions.h" extern "C" int setup_teardown_was_called_in_test_group_in_C; extern "C" int test_was_called_in_test_group_in_C; int setup_teardown_was_called_in_test_group_in_C = 0; int test_was_called_in_test_group_in_C = 0; TEST_GROUP_C_WRAPPER(TestGroupInC) { TEST_GROUP_C_SETUP_WRAPPER(TestGroupInC) TEST_GROUP_C_TEARDOWN_WRAPPER(TestGroupInC) }; TEST_C_WRAPPER(TestGroupInC, checkThatTheTestHasRun) /* * This test is a bit strange. They use the fact that you can do -r2 for repeating the same run. * When you do so, the same statics will be shared and therefore we can test whether the setup/teardown is run * correctly. */ TEST(TestGroupInC, setupHasBeenCalled) { test_was_called_in_test_group_in_C++; /* Increased in setup, decreased in teardown. So at this point it must be 1 also on a multiple run */ LONGS_EQUAL(1, setup_teardown_was_called_in_test_group_in_C); } static bool hasDestructorOfTheDestructorCheckedBeenCalled; class HasTheDestructorBeenCalledChecker { public: HasTheDestructorBeenCalledChecker(){} ~HasTheDestructorBeenCalledChecker() { hasDestructorOfTheDestructorCheckedBeenCalled = true; } }; TEST_GROUP(TestHarness_c) { TestTestingFixture* fixture; TEST_SETUP() { hasDestructorOfTheDestructorCheckedBeenCalled = false; fixture = new TestTestingFixture(); } TEST_TEARDOWN() { delete fixture; } }; static void _failIntMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_INT(1, 2); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkInt) { CHECK_EQUAL_C_INT(2, 2); fixture->setTestFunction(_failIntMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 0x1>\n but was <2 0x2>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled) } static void _failRealMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_REAL(1.0, 2.0, 0.5); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkReal) { CHECK_EQUAL_C_REAL(1.0, 1.1, 0.5); fixture->setTestFunction(_failRealMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1>\n but was <2>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled) } static void _failCharMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_CHAR('a', 'c'); } TEST(TestHarness_c, checkChar) { CHECK_EQUAL_C_CHAR('a', 'a'); fixture->setTestFunction(_failCharMethod); fixture->runAllTests(); fixture->assertPrintContains("expected \n but was "); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled) } static void _failStringMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_STRING("Hello", "Hello World"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkString) { CHECK_EQUAL_C_STRING("Hello", "Hello"); fixture->setTestFunction(_failStringMethod); fixture->runAllTests(); StringEqualFailure failure(UtestShell::getCurrent(), "file", 1, "Hello", "Hello World"); fixture->assertPrintContains(failure.getMessage()); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled) } static void _failTextMethod() { HasTheDestructorBeenCalledChecker checker; FAIL_TEXT_C("Booo"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkFailText) { fixture->setTestFunction(_failTextMethod); fixture->runAllTests(); fixture->assertPrintContains("Booo"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled) } static void _failMethod() { HasTheDestructorBeenCalledChecker checker; FAIL_C(); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkFail) { fixture->setTestFunction(_failMethod); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled) } static void _CheckMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_C(false); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkCheck) { CHECK_C(true); fixture->setTestFunction(_CheckMethod); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled) } #if CPPUTEST_USE_MEM_LEAK_DETECTION TEST(TestHarness_c, cpputest_malloc_out_of_memory) { cpputest_malloc_set_out_of_memory(); CHECK(0 == cpputest_malloc(100)); cpputest_malloc_set_not_out_of_memory(); void * mem = cpputest_malloc(100); CHECK(0 != mem); cpputest_free(mem); } TEST(TestHarness_c, cpputest_malloc_out_of_memory_after_n_mallocs) { cpputest_malloc_set_out_of_memory_countdown(3); void * m1 = cpputest_malloc(10); void * m2 = cpputest_malloc(11); void * m3 = cpputest_malloc(12); CHECK(m1); CHECK(m2); POINTERS_EQUAL(0, m3); cpputest_malloc_set_not_out_of_memory(); cpputest_free(m1); cpputest_free(m2); } TEST(TestHarness_c, cpputest_malloc_out_of_memory_after_0_mallocs) { cpputest_malloc_set_out_of_memory_countdown(0); void * m1 = cpputest_malloc(10); CHECK(m1 == 0); cpputest_malloc_set_not_out_of_memory(); } TEST(TestHarness_c, count_mallocs) { cpputest_malloc_count_reset(); void * m1 = cpputest_malloc(10); void * m2 = cpputest_malloc(11); void * m3 = cpputest_malloc(12); cpputest_free(m1); cpputest_free(m2); cpputest_free(m3); LONGS_EQUAL(3, cpputest_malloc_get_count()); } TEST(TestHarness_c, cpputest_calloc) { void * mem = cpputest_calloc(10, 10); CHECK(0 != mem); cpputest_free(mem); } TEST(TestHarness_c, cpputest_realloc_larger) { const char* number_string = "123456789"; char* mem1 = (char*) cpputest_malloc(10); SimpleString::StrNCpy(mem1, number_string, 10); CHECK(mem1 != 0); char* mem2 = (char*) cpputest_realloc(mem1, 1000); CHECK(mem2 != 0); STRCMP_EQUAL(number_string, mem2); cpputest_free(mem2); } #include "CppUTest/MemoryLeakDetector.h" TEST(TestHarness_c, macros) { #if CPPUTEST_USE_MALLOC_MACROS MemoryLeakDetector* memLeakDetector = MemoryLeakWarningPlugin::getGlobalDetector(); int memLeaks = memLeakDetector->totalMemoryLeaks(mem_leak_period_checking); #endif void* mem1 = malloc(10); void* mem2 = calloc(10, 20); void* mem3 = realloc(mem2, 100); #if CPPUTEST_USE_MALLOC_MACROS LONGS_EQUAL(memLeaks + 2, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); #endif free(mem1); free(mem3); #if CPPUTEST_USE_MALLOC_MACROS LONGS_EQUAL(memLeaks, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); #endif } TEST(TestHarness_c, callocInitializedToZero) { char* mem = (char*) calloc(20, sizeof(char)); for (int i = 0; i < 20; i++) CHECK(mem[i] == 0); free(mem); } TEST(TestHarness_c, callocShouldReturnNULLWhenOutOfMeory) { cpputest_malloc_set_out_of_memory_countdown(0); void * m = cpputest_calloc(1, 1); CHECK(m == 0); cpputest_malloc_set_not_out_of_memory(); } #endif cpputest-3.7.2/tests/TestHarness_cTestCFile.c000644 000765 000024 00000001343 12521603460 022142 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness_c.h" #include "CppUTest/PlatformSpecificFunctions_c.h" extern void functionWithUnusedParameter(void* PUNUSED(unlessParamater)); void functionWithUnusedParameter(void* PUNUSED(unlessParamater)) { } /* Declared in the cpp file */ extern int setup_teardown_was_called_in_test_group_in_C; extern int test_was_called_in_test_group_in_C; TEST_GROUP_C_SETUP(TestGroupInC) { setup_teardown_was_called_in_test_group_in_C++; } TEST_GROUP_C_TEARDOWN(TestGroupInC) { setup_teardown_was_called_in_test_group_in_C--; CHECK_C(test_was_called_in_test_group_in_C == 1); test_was_called_in_test_group_in_C--; } TEST_C(TestGroupInC, checkThatTheTestHasRun) { test_was_called_in_test_group_in_C++; } cpputest-3.7.2/tests/TestInstallerTest.cpp000644 000765 000024 00000004576 12521603460 021642 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" class TestInstallerTestUtestShell : public UtestShell { }; // this is file scope because the test is installed // with all other tests, which also happen to be // created as static instances at file scope TEST_GROUP(TestInstaller) { TestInstaller* testInstaller; TestRegistry* myRegistry; TestInstallerTestUtestShell shell; void setup() { myRegistry = new TestRegistry(); myRegistry->setCurrentRegistry(myRegistry); testInstaller = new TestInstaller(shell, "TestInstaller", "test", __FILE__, __LINE__); } void teardown() { myRegistry->setCurrentRegistry(0); testInstaller->unDo(); delete testInstaller; delete myRegistry; } }; TEST(TestInstaller, Create) { } cpputest-3.7.2/tests/TestMemoryAllocatorTest.cpp000644 000765 000024 00000011427 12521603460 023007 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" TEST_GROUP(TestMemoryAllocatorTest) { TestMemoryAllocator* allocator; void setup() { allocator = NULL; } void teardown() { delete allocator; } }; TEST(TestMemoryAllocatorTest, SetCurrentNewAllocator) { allocator = new TestMemoryAllocator("new allocator for test"); setCurrentNewAllocator(allocator); POINTERS_EQUAL(allocator, getCurrentNewAllocator()); setCurrentNewAllocatorToDefault(); POINTERS_EQUAL(defaultNewAllocator(), getCurrentNewAllocator()); } TEST(TestMemoryAllocatorTest, SetCurrentNewArrayAllocator) { allocator = new TestMemoryAllocator("new array allocator for test"); setCurrentNewArrayAllocator(allocator); POINTERS_EQUAL(allocator, getCurrentNewArrayAllocator()); setCurrentNewArrayAllocatorToDefault(); POINTERS_EQUAL(defaultNewArrayAllocator(), getCurrentNewArrayAllocator()); } TEST(TestMemoryAllocatorTest, SetCurrentMallocAllocator) { allocator = new TestMemoryAllocator("malloc_allocator"); setCurrentMallocAllocator(allocator); POINTERS_EQUAL(allocator, getCurrentMallocAllocator()); setCurrentMallocAllocatorToDefault(); POINTERS_EQUAL(defaultMallocAllocator(), getCurrentMallocAllocator()); } TEST(TestMemoryAllocatorTest, MemoryAllocation) { allocator = new TestMemoryAllocator(); allocator->free_memory(allocator->alloc_memory(100, "file", 1), "file", 1); } TEST(TestMemoryAllocatorTest, MallocNames) { STRCMP_EQUAL("Standard Malloc Allocator", defaultMallocAllocator()->name()); STRCMP_EQUAL("malloc", defaultMallocAllocator()->alloc_name()); STRCMP_EQUAL("free", defaultMallocAllocator()->free_name()); } TEST(TestMemoryAllocatorTest, NewNames) { STRCMP_EQUAL("Standard New Allocator", defaultNewAllocator()->name()); STRCMP_EQUAL("new", defaultNewAllocator()->alloc_name()); STRCMP_EQUAL("delete", defaultNewAllocator()->free_name()); } TEST(TestMemoryAllocatorTest, NewArrayNames) { STRCMP_EQUAL("Standard New [] Allocator", defaultNewArrayAllocator()->name()); STRCMP_EQUAL("new []", defaultNewArrayAllocator()->alloc_name()); STRCMP_EQUAL("delete []", defaultNewArrayAllocator()->free_name()); } TEST(TestMemoryAllocatorTest, NullUnknownAllocation) { allocator = new NullUnknownAllocator; allocator->free_memory(allocator->alloc_memory(100, "file", 1), "file", 1); } TEST(TestMemoryAllocatorTest, NullUnknownNames) { allocator = new NullUnknownAllocator; STRCMP_EQUAL("Null Allocator", allocator->name()); STRCMP_EQUAL("unknown", allocator->alloc_name()); STRCMP_EQUAL("unknown", allocator->free_name()); } #define MAX_SIZE_THATS_OKAY_FOR_MSC (size_t) -1 - 96 static void failTryingToAllocateTooMuchMemory(void) { TestMemoryAllocator allocator; allocator.alloc_memory(MAX_SIZE_THATS_OKAY_FOR_MSC, "file", 1); } // LCOV_EXCL_LINE #include "CppUTest/TestTestingFixture.h" TEST(TestMemoryAllocatorTest, TryingToAllocateTooMuchFailsTest) { TestTestingFixture fixture; fixture.setTestFunction(&failTryingToAllocateTooMuchMemory); fixture.runAllTests(); fixture.assertPrintContains("malloc returned null pointer"); } cpputest-3.7.2/tests/TestOutputTest.cpp000644 000765 000024 00000030064 12521603460 021174 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestResult.h" #include "CppUTest/PlatformSpecificFunctions.h" static long millisTime; extern "C" { static long MockGetPlatformSpecificTimeInMillis() { return millisTime; } } TEST_GROUP(TestOutput) { TestOutput* printer; StringBufferTestOutput* mock; UtestShell* tst; TestFailure *f; TestFailure *f2; TestFailure *f3; TestResult* result; void setup() { mock = new StringBufferTestOutput(); printer = mock; tst = new UtestShell("group", "test", "file", 10); f = new TestFailure(tst, "failfile", 20, "message"); f2 = new TestFailure(tst, "file", 20, "message"); f3 = new TestFailure(tst, "file", 2, "message"); result = new TestResult(*mock); result->setTotalExecutionTime(10); millisTime = 0; UT_PTR_SET(GetPlatformSpecificTimeInMillis, MockGetPlatformSpecificTimeInMillis); TestOutput::setWorkingEnvironment(TestOutput::eclipse); } void teardown() { TestOutput::setWorkingEnvironment(TestOutput::detectEnvironment); delete printer; delete tst; delete f; delete f2; delete f3; delete result; } }; TEST(TestOutput, PrintConstCharStar) { printer->print("hello"); printer->print("hello\n"); STRCMP_EQUAL("hellohello\n", mock->getOutput().asCharString()); } TEST(TestOutput, PrintLong) { printer->print(1234); STRCMP_EQUAL("1234", mock->getOutput().asCharString()); } TEST(TestOutput, PrintDouble) { printer->printDouble(12.34); STRCMP_EQUAL("12.34", mock->getOutput().asCharString()); } TEST(TestOutput, StreamOperators) { *printer << "n=" << 1234; STRCMP_EQUAL("n=1234", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestEnded) { printer->printCurrentTestEnded(*result); STRCMP_EQUAL(".", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestALot) { for (int i = 0; i < 60; ++i) { printer->printCurrentTestEnded(*result); } STRCMP_EQUAL("..................................................\n..........", mock->getOutput().asCharString()); } TEST(TestOutput, SetProgressIndicator) { printer->setProgressIndicator("."); printer->printCurrentTestEnded(*result); printer->setProgressIndicator("!"); printer->printCurrentTestEnded(*result); printer->setProgressIndicator("."); printer->printCurrentTestEnded(*result); STRCMP_EQUAL(".!.", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestVerboseStarted) { mock->verbose(); printer->printCurrentTestStarted(*tst); STRCMP_EQUAL("TEST(group, test)", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestVerboseEnded) { mock->verbose(); result->currentTestStarted(tst); millisTime = 5; result->currentTestEnded(tst); STRCMP_EQUAL("TEST(group, test) - 5 ms\n", mock->getOutput().asCharString()); } TEST(TestOutput, printColorWithSuccess) { mock->color(); printer->printTestsEnded(*result); STRCMP_EQUAL("\n\033[32;1mOK (0 tests, 0 ran, 0 checks, 0 ignored, 0 filtered out, 10 ms)\033[m\n\n", mock->getOutput().asCharString()); } TEST(TestOutput, printColorWithFailures) { mock->color(); result->addFailure(*f); printer->flush(); printer->printTestsEnded(*result); STRCMP_EQUAL("\n\033[31;1mErrors (1 failures, 0 tests, 0 ran, 0 checks, 0 ignored, 0 filtered out, 10 ms)\033[m\n\n", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestRun) { printer->printTestRun(2, 3); STRCMP_EQUAL("Test run 2 of 3\n", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestRunOnlyOne) { printer->printTestRun(1, 1); STRCMP_EQUAL("", mock->getOutput().asCharString()); } TEST(TestOutput, PrintWithFailureInSameFile) { printer->print(*f2); STRCMP_EQUAL("\nfile:20: error: Failure in TEST(group, test)\n\tmessage\n\n", mock->getOutput().asCharString()); } TEST(TestOutput, PrintFailureWithFailInDifferentFile) { printer->print(*f); const char* expected = "\nfile:10: error: Failure in TEST(group, test)" "\nfailfile:20: error:\n\tmessage\n\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TestOutput, PrintFailureWithFailInHelper) { printer->print(*f3); const char* expected = "\nfile:10: error: Failure in TEST(group, test)" "\nfile:2: error:\n\tmessage\n\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TestOutput, PrintInVisualStudioFormat) { TestOutput::setWorkingEnvironment(TestOutput::vistualStudio); printer->print(*f3); const char* expected = "\nfile(10): error: Failure in TEST(group, test)" "\nfile(2): error:\n\tmessage\n\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestStarts) { printer->printTestsStarted(); STRCMP_EQUAL("", mock->getOutput().asCharString()); } TEST(TestOutput, printTestsEnded) { result->countTest(); result->countCheck(); result->countIgnored(); result->countIgnored(); result->countRun(); result->countRun(); result->countRun(); printer->printTestsEnded(*result); STRCMP_EQUAL("\nOK (1 tests, 3 ran, 1 checks, 2 ignored, 0 filtered out, 10 ms)\n\n", mock->getOutput().asCharString()); } TEST(TestOutput, printTestsEndedWithFailures) { result->addFailure(*f); printer->flush(); printer->printTestsEnded(*result); STRCMP_EQUAL("\nErrors (1 failures, 0 tests, 0 ran, 0 checks, 0 ignored, 0 filtered out, 10 ms)\n\n", mock->getOutput().asCharString()); } class CompositeTestOutputTestStringBufferTestOutput : public StringBufferTestOutput { public: virtual void printTestsStarted() { output += "Test Start\n"; } virtual void printTestsEnded(const TestResult& result) { output += StringFromFormat("Test End %d\n", result.getTestCount()); } void printCurrentGroupStarted(const UtestShell& test) { output += StringFromFormat("Group %s Start\n", test.getGroup().asCharString()); } void printCurrentGroupEnded(const TestResult& res) { output += StringFromFormat("Group End %d\n", res.getTestCount()); } virtual void printCurrentTestStarted(const UtestShell&) { output += "s"; } void flush() { output += "flush"; } virtual bool isVerbose() { return verbose_; } virtual bool isColor() { return color_; } virtual const char* getProgressIndicator() { return progressIndication_; } }; TEST_GROUP(CompositeTestOutput) { CompositeTestOutputTestStringBufferTestOutput* output1; CompositeTestOutputTestStringBufferTestOutput* output2; CompositeTestOutput compositeOutput; TestResult* result; UtestShell* test; void setup() { output1 = new CompositeTestOutputTestStringBufferTestOutput; output2 = new CompositeTestOutputTestStringBufferTestOutput; compositeOutput.setOutputOne(output1); compositeOutput.setOutputTwo(output2); result = new TestResult(compositeOutput); test = new UtestShell("Group", "Name", "file", 10); } void teardown() { delete test; delete result; } }; TEST(CompositeTestOutput, TestStartedAndEnded) { compositeOutput.printTestsStarted(); compositeOutput.printTestsEnded(*result); STRCMP_EQUAL("Test Start\nTest End 0\n", output1->getOutput().asCharString()); STRCMP_EQUAL("Test Start\nTest End 0\n", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, CurrentTestStartedAndEnded) { compositeOutput.printCurrentTestStarted(*test); compositeOutput.printCurrentTestEnded(*result); STRCMP_EQUAL("s.", output1->getOutput().asCharString()); STRCMP_EQUAL("s.", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, CurrentGroupStartedAndEnded) { compositeOutput.printCurrentGroupStarted(*test); compositeOutput.printCurrentGroupEnded(*result); STRCMP_EQUAL("Group Group Start\nGroup End 0\n", output1->getOutput().asCharString()); STRCMP_EQUAL("Group Group Start\nGroup End 0\n", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, PrintBuffer) { compositeOutput.printBuffer("Boo"); STRCMP_EQUAL("Boo", output1->getOutput().asCharString()); STRCMP_EQUAL("Boo", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, printChar) { compositeOutput.print("Boo"); STRCMP_EQUAL("Boo", output1->getOutput().asCharString()); STRCMP_EQUAL("Boo", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, printLong) { compositeOutput.print(10); STRCMP_EQUAL("10", output1->getOutput().asCharString()); STRCMP_EQUAL("10", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, printDouble) { compositeOutput.printDouble(1.01); STRCMP_EQUAL("1.01", output1->getOutput().asCharString()); STRCMP_EQUAL("1.01", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, verbose) { compositeOutput.verbose(); CHECK(output1->isVerbose()); CHECK(output2->isVerbose()); } TEST(CompositeTestOutput, color) { compositeOutput.color(); CHECK(output1->isColor()); CHECK(output2->isColor()); } TEST(CompositeTestOutput, PrintTestFailure) { TestOutput::WorkingEnvironment previousEnvironment = TestOutput::getWorkingEnvironment(); TestOutput::setWorkingEnvironment(TestOutput::eclipse); TestFailure failure(test, "file", 10, "failed"); compositeOutput.print(failure); STRCMP_EQUAL("\nfile:10: error: Failure in TEST(Group, Name)\n\tfailed\n\n", output1->getOutput().asCharString()); STRCMP_EQUAL("\nfile:10: error: Failure in TEST(Group, Name)\n\tfailed\n\n", output2->getOutput().asCharString()); TestOutput::setWorkingEnvironment(previousEnvironment); } TEST(CompositeTestOutput, PrintTestRun) { compositeOutput.printTestRun(1, 2); STRCMP_EQUAL("Test run 1 of 2\n", output1->getOutput().asCharString()); STRCMP_EQUAL("Test run 1 of 2\n", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, setProgressIndicator) { compositeOutput.setProgressIndicator("?"); STRCMP_EQUAL("?", output1->getProgressIndicator()); STRCMP_EQUAL("?", output2->getProgressIndicator()); } TEST(CompositeTestOutput, flush) { compositeOutput.flush(); STRCMP_EQUAL("flush", output1->getOutput().asCharString()); STRCMP_EQUAL("flush", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, deletePreviousInstanceWhenSettingNew) { compositeOutput.setOutputOne(new CompositeTestOutput); compositeOutput.setOutputTwo(new CompositeTestOutput); // CHECK NO MEMORY LEAKS } cpputest-3.7.2/tests/TestRegistryTest.cpp000644 000765 000024 00000023774 12523627400 021520 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestOutput.h" namespace { const int testLineNumber = 1; } class MockTest: public UtestShell { public: MockTest(const char* group = "Group") : UtestShell(group, "Name", "File", testLineNumber), hasRun_(false) { } virtual void runOneTest(TestPlugin*, TestResult&) { hasRun_ = true; } bool hasRun_; }; class MockTestResult: public TestResult { public: int countTestsStarted; int countTestsEnded; int countCurrentTestStarted; int countCurrentTestEnded; int countCurrentGroupStarted; int countCurrentGroupEnded; MockTestResult(TestOutput& p) : TestResult(p) { resetCount(); } virtual ~MockTestResult() { } void resetCount() { countTestsStarted = 0; countTestsEnded = 0; countCurrentTestStarted = 0; countCurrentTestEnded = 0; countCurrentGroupStarted = 0; countCurrentGroupEnded = 0; } virtual void testsStarted() { countTestsStarted++; } virtual void testsEnded() { countTestsEnded++; } virtual void currentTestStarted(UtestShell* /*test*/) { countCurrentTestStarted++; } virtual void currentTestEnded(UtestShell* /*test*/) { countCurrentTestEnded++; } virtual void currentGroupStarted(UtestShell* /*test*/) { countCurrentGroupStarted++; } virtual void currentGroupEnded(UtestShell* /*test*/) { countCurrentGroupEnded++; } }; TEST_GROUP(TestRegistry) { TestRegistry* myRegistry; StringBufferTestOutput* output; MockTest* test1; MockTest* test2; MockTest* test3; MockTest* test4; TestResult *result; MockTestResult *mockResult; void setup() { output = new StringBufferTestOutput(); mockResult = new MockTestResult(*output); result = mockResult; test1 = new MockTest(); test2 = new MockTest(); test3 = new MockTest("group2"); test4 = new MockTest(); myRegistry = new TestRegistry(); myRegistry->setCurrentRegistry(myRegistry); } void teardown() { myRegistry->setCurrentRegistry(0); delete myRegistry; delete test1; delete test2; delete test3; delete test4; delete result; delete output; } void addAndRunAllTests() { myRegistry->addTest(test1); myRegistry->addTest(test2); myRegistry->addTest(test3); myRegistry->runAllTests(*result); } }; TEST(TestRegistry, registryMyRegistryAndReset) { CHECK(myRegistry->getCurrentRegistry() == myRegistry); } TEST(TestRegistry, emptyRegistryIsEmpty) { CHECK(myRegistry->countTests() == 0); } TEST(TestRegistry, addOneTestIsNotEmpty) { myRegistry->addTest(test1); CHECK(myRegistry->countTests() == 1); } TEST(TestRegistry, addOneTwoTests) { myRegistry->addTest(test1); myRegistry->addTest(test2); CHECK(myRegistry->countTests() == 2); } TEST(TestRegistry, runTwoTests) { myRegistry->addTest(test1); myRegistry->addTest(test2); CHECK(!test1->hasRun_); CHECK(!test2->hasRun_); myRegistry->runAllTests(*result); CHECK(test1->hasRun_); CHECK(test2->hasRun_); } TEST(TestRegistry, runTwoTestsCheckResultFunctionsCalled) { myRegistry->addTest(test1); myRegistry->addTest(test2); myRegistry->runAllTests(*result); LONGS_EQUAL(1, mockResult->countTestsStarted); LONGS_EQUAL(1, mockResult->countTestsEnded); LONGS_EQUAL(1, mockResult->countCurrentGroupStarted); LONGS_EQUAL(1, mockResult->countCurrentGroupEnded); LONGS_EQUAL(2, mockResult->countCurrentTestStarted); LONGS_EQUAL(2, mockResult->countCurrentTestEnded); } TEST(TestRegistry, runThreeTestsandTwoGroupsCheckResultFunctionsCalled) { addAndRunAllTests(); LONGS_EQUAL(2, mockResult->countCurrentGroupStarted); LONGS_EQUAL(2, mockResult->countCurrentGroupEnded); LONGS_EQUAL(3, mockResult->countCurrentTestStarted); LONGS_EQUAL(3, mockResult->countCurrentTestEnded); } TEST(TestRegistry, unDoTest) { myRegistry->addTest(test1); CHECK(myRegistry->countTests() == 1); myRegistry->unDoLastAddTest(); CHECK(myRegistry->countTests() == 0); } TEST(TestRegistry, unDoButNoTest) { CHECK(myRegistry->countTests() == 0); myRegistry->unDoLastAddTest(); CHECK(myRegistry->countTests() == 0); } TEST(TestRegistry, reallyUndoLastTest) { myRegistry->addTest(test1); myRegistry->addTest(test2); CHECK(myRegistry->countTests() == 2); myRegistry->unDoLastAddTest(); CHECK(myRegistry->countTests() == 1); myRegistry->runAllTests(*result); CHECK(test1->hasRun_); CHECK(!test2->hasRun_); } TEST(TestRegistry, findTestWithNameDoesntExist) { CHECK(myRegistry->findTestWithName("ThisTestDoesntExists") == NULL); } TEST(TestRegistry, findTestWithName) { test1->setTestName("NameOfATestThatDoesExist"); test2->setTestName("SomeOtherTest"); myRegistry->addTest(test1); myRegistry->addTest(test2); CHECK(myRegistry->findTestWithName("NameOfATestThatDoesExist")); } TEST(TestRegistry, findTestWithGroupDoesntExist) { CHECK(myRegistry->findTestWithGroup("ThisTestGroupDoesntExists") == NULL); } TEST(TestRegistry, findTestWithGroup) { test1->setGroupName("GroupOfATestThatDoesExist"); test2->setGroupName("SomeOtherGroup"); myRegistry->addTest(test1); myRegistry->addTest(test2); CHECK(myRegistry->findTestWithGroup("GroupOfATestThatDoesExist")); } TEST(TestRegistry, nameFilterWorks) { test1->setTestName("testname"); test2->setTestName("noname"); TestFilter nameFilter("testname"); myRegistry->setNameFilters(&nameFilter); addAndRunAllTests(); CHECK(test1->hasRun_); CHECK(!test2->hasRun_); } TEST(TestRegistry, groupFilterWorks) { test1->setGroupName("groupname"); test2->setGroupName("noname"); TestFilter groupFilter("groupname"); myRegistry->setGroupFilters(&groupFilter); addAndRunAllTests(); CHECK(test1->hasRun_); CHECK(!test2->hasRun_); } TEST(TestRegistry, runTestInSeperateProcess) { myRegistry->setRunTestsInSeperateProcess(); myRegistry->addTest(test1); myRegistry->runAllTests(*result); CHECK(test1->isRunInSeperateProcess()); } TEST(TestRegistry, CurrentRepetitionIsCorrectNone) { CHECK(0 == myRegistry->getCurrentRepetition()); myRegistry->runAllTests(*result); LONGS_EQUAL(1, myRegistry->getCurrentRepetition()); } TEST(TestRegistry, CurrentRepetitionIsCorrectTwo) { CHECK(0 == myRegistry->getCurrentRepetition()); myRegistry->runAllTests(*result); myRegistry->runAllTests(*result); LONGS_EQUAL(2, myRegistry->getCurrentRepetition()); } class MyTestPluginDummy: public TestPlugin { public: MyTestPluginDummy(const SimpleString& name) : TestPlugin(name) {} virtual ~MyTestPluginDummy() {} virtual void runAllPreTestAction(UtestShell&, TestResult&) _override {} virtual void runAllPostTestAction(UtestShell&, TestResult&) _override {} }; TEST(TestRegistry, ResetPluginsWorks) { MyTestPluginDummy plugin1("Plugin-1"); MyTestPluginDummy plugin2("Plugin-2"); myRegistry->installPlugin(&plugin1); myRegistry->installPlugin(&plugin2); LONGS_EQUAL(2, myRegistry->countPlugins()); myRegistry->resetPlugins(); LONGS_EQUAL(0, myRegistry->countPlugins()); } TEST(TestRegistry, listTestGroupNames_shouldListBackwardsGroup1AfterGroup11AndGroup2OnlyOnce) { test1->setGroupName("GROUP_1"); myRegistry->addTest(test1); test2->setGroupName("GROUP_2"); myRegistry->addTest(test2); test3->setGroupName("GROUP_11"); myRegistry->addTest(test3); test4->setGroupName("GROUP_2"); myRegistry->addTest(test4); myRegistry->listTestGroupNames(*result); SimpleString s = output->getOutput(); STRCMP_EQUAL("GROUP_2 GROUP_11 GROUP_1", s.asCharString()); } TEST(TestRegistry, listTestGroupAndCaseNames_shouldListBackwardsGroupATestaAfterGroupAtestaa) { test1->setGroupName("GROUP_A"); test1->setTestName("test_a"); myRegistry->addTest(test1); test2->setGroupName("GROUP_B"); test2->setTestName("test_b"); myRegistry->addTest(test2); test3->setGroupName("GROUP_A"); test3->setTestName("test_aa"); myRegistry->addTest(test3); myRegistry->listTestGroupAndCaseNames(*result); SimpleString s = output->getOutput(); STRCMP_EQUAL("GROUP_A.test_aa GROUP_B.test_b GROUP_A.test_a", s.asCharString()); } cpputest-3.7.2/tests/TestResultTest.cpp000644 000765 000024 00000004505 12521603460 021153 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestOutput.h" extern "C" { static long MockGetPlatformSpecificTimeInMillis() { return 10; } } TEST_GROUP(TestResult) { TestOutput* printer; StringBufferTestOutput* mock; TestResult* res; void setup() { mock = new StringBufferTestOutput(); printer = mock; res = new TestResult(*printer); UT_PTR_SET(GetPlatformSpecificTimeInMillis, MockGetPlatformSpecificTimeInMillis); } void teardown() { delete printer; delete res; } }; TEST(TestResult, TestEndedWillPrintResultsAndExecutionTime) { res->testsEnded(); CHECK(mock->getOutput().contains("10 ms")); } cpputest-3.7.2/tests/TestUTestMacro.cpp000644 000765 000024 00000055457 12521603460 021077 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" static bool lineOfCodeExecutedAfterCheck; #define CHECK_TEST_FAILS_PROPER_WITH_TEXT(text) CHECK_TEST_FAILS_PROPER_WITH_TEXT_LOCATION(text, fixture, __FILE__, __LINE__) static void CHECK_TEST_FAILS_PROPER_WITH_TEXT_LOCATION(const char* text, TestTestingFixture& fixture, const char* file, int line) { if (fixture.getFailureCount() != 1) FAIL_LOCATION(StringFromFormat("Expected one test failure, but got %d amount of test failures", fixture.getFailureCount()).asCharString(), file, line); STRCMP_CONTAINS_LOCATION(text, fixture.output_->getOutput().asCharString(), file, line); if (lineOfCodeExecutedAfterCheck) FAIL_LOCATION("The test should jump/throw on failure and not execute the next line. However, the next line was executed.", file, line) } TEST_GROUP(UnitTestMacros) { TestTestingFixture fixture; void setup() { lineOfCodeExecutedAfterCheck = false; } void runTestWithMethod(void(*method)()) { fixture.setTestFunction(method); fixture.runAllTests(); } }; static void _failingTestMethodWithFAIL() { FAIL("This test fails"); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FAILMakesTheTestFailPrintsTheRightResultAndStopsExecuting) { runTestWithMethod(_failingTestMethodWithFAIL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("This test fails"); } TEST(UnitTestMacros, FAILWillPrintTheFileThatItFailed) { runTestWithMethod(_failingTestMethodWithFAIL); CHECK_TEST_FAILS_PROPER_WITH_TEXT(__FILE__); } TEST(UnitTestMacros, FAILBehavesAsAProperMacro) { if (false) FAIL("") else CHECK(true) if (true) CHECK(true) else FAIL("") } IGNORE_TEST(UnitTestMacros, FAILworksInAnIgnoredTest) { FAIL("die!"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _STRCMP_EQUALWithActualIsNULLTestMethod() { STRCMP_EQUAL("ok", NULL); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRCMP_EQUALAndActualIsNULL) { runTestWithMethod(_STRCMP_EQUALWithActualIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <(null)>"); } static void _STRCMP_EQUALWithExpectedIsNULLTestMethod() { STRCMP_EQUAL(NULL, "ok"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRCMP_EQUALAndExpectedIsNULL) { runTestWithMethod(_STRCMP_EQUALWithExpectedIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <(null)>"); } static void _STRCMP_CONTAINSWithActualIsNULLTestMethod() { STRCMP_CONTAINS("ok", NULL); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRCMP_CONTAINSAndActualIsNULL) { runTestWithMethod(_STRCMP_CONTAINSWithActualIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain "); } static void _STRCMP_CONTAINSWithExpectedIsNULLTestMethod() { STRCMP_CONTAINS(NULL, "ok"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRCMP_CONTAINSAndExpectedIsNULL) { runTestWithMethod(_STRCMP_CONTAINSWithExpectedIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain <>"); } static void _STRNCMP_EQUALWithActualIsNULLTestMethod() { STRNCMP_EQUAL("ok", NULL, 2); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRNCMP_EQUALAndActualIsNULL) { runTestWithMethod(_STRNCMP_EQUALWithActualIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <(null)>"); } static void _STRNCMP_EQUALWithExpectedIsNULLTestMethod() { STRNCMP_EQUAL(NULL, "ok", 2); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRNCMP_EQUALAndExpectedIsNULL) { runTestWithMethod(_STRNCMP_EQUALWithExpectedIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <(null)>"); } static void _STRCMP_NOCASE_EQUALWithActualIsNULLTestMethod() { STRCMP_NOCASE_EQUAL("ok", NULL); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRCMP_NOCASE_EQUALAndActualIsNULL) { runTestWithMethod(_STRCMP_NOCASE_EQUALWithActualIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <(null)>"); } static void _STRCMP_NOCASE_EQUALWithExpectedIsNULLTestMethod() { STRCMP_NOCASE_EQUAL(NULL, "ok"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRCMP_NOCASE_EQUALAndExpectedIsNULL) { runTestWithMethod(_STRCMP_NOCASE_EQUALWithExpectedIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <(null)>"); } static void _STRCMP_NOCASE_EQUALWithUnequalInputTestMethod() { STRCMP_NOCASE_EQUAL("no", "ok"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRCMP_NOCASE_EQUALAndUnequalInput) { runTestWithMethod(_STRCMP_NOCASE_EQUALWithUnequalInputTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); } static void _STRCMP_NOCASE_CONTAINSWithActualIsNULLTestMethod() { STRCMP_NOCASE_CONTAINS("ok", NULL); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRCMP_NOCASE_CONTAINSAndActualIsNULL) { runTestWithMethod(_STRCMP_NOCASE_CONTAINSWithActualIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain "); } static void _STRCMP_NOCASE_CONTAINSWithExpectedIsNULLTestMethod() { STRCMP_NOCASE_CONTAINS(NULL, "ok"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRCMP_NOCASE_CONTAINSAndExpectedIsNULL) { runTestWithMethod(_STRCMP_NOCASE_CONTAINSWithExpectedIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain <>"); } static void _UNSIGNED_LONGS_EQUALTestMethod() { UNSIGNED_LONGS_EQUAL(1, 1); UNSIGNED_LONGS_EQUAL(1, 0); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestUNSIGNED_LONGS_EQUAL) { runTestWithMethod(_UNSIGNED_LONGS_EQUALTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0 (0x0) 0x0>"); } static void _failingTestMethodWithCHECK() { CHECK(false); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK) { runTestWithMethod(_failingTestMethodWithCHECK); CHECK_TEST_FAILS_PROPER_WITH_TEXT("false"); } TEST(UnitTestMacros, CHECKBehavesAsProperMacro) { if (false) CHECK(false) else CHECK(true) } static void _failingTestMethodWithCHECK_TEXT() { CHECK_TEXT(false, "Failed because it failed"); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_TEXT) { runTestWithMethod(_failingTestMethodWithCHECK_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, CHECK_TEXTBehavesAsProperMacro) { if (false) CHECK_TEXT(false, "false") else CHECK_TEXT(true, "true") } IGNORE_TEST(UnitTestMacros, CHECKWorksInAnIgnoredTest) { CHECK_TEXT(false, "false"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_TRUE() { CHECK_TRUE(false); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_TRUE) { runTestWithMethod(_failingTestMethodWithCHECK_TRUE); CHECK_TEST_FAILS_PROPER_WITH_TEXT("CHECK_TRUE"); } TEST(UnitTestMacros, CHECK_TRUEBehavesAsProperMacro) { if (false) CHECK_TRUE(false) else CHECK_TRUE(true) } IGNORE_TEST(UnitTestMacros, CHECK_TRUEWorksInAnIgnoredTest) { CHECK_TRUE(false) // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_FALSE() { CHECK_FALSE(true); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_FALSE) { runTestWithMethod(_failingTestMethodWithCHECK_FALSE); CHECK_TEST_FAILS_PROPER_WITH_TEXT("CHECK_FALSE"); } TEST(UnitTestMacros, CHECK_FALSEBehavesAsProperMacro) { if (false) CHECK_FALSE(true) else CHECK_FALSE(false) } IGNORE_TEST(UnitTestMacros, CHECK_FALSEWorksInAnIgnoredTest) { CHECK_FALSE(true) // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_EQUAL() { CHECK_EQUAL(1, 2); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_EQUAL) { runTestWithMethod(_failingTestMethodWithCHECK_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1>"); } static int countInCountingMethod; static int _countingMethod() { return countInCountingMethod++; } TEST(UnitTestMacros, passingCheckEqualWillNotBeEvaluatedMultipleTimesWithCHECK_EQUAL) { countInCountingMethod = 0; CHECK_EQUAL(0, _countingMethod()); LONGS_EQUAL(1, countInCountingMethod); } static void _failing_CHECK_EQUAL_WithActualBeingEvaluatesMultipleTimesWillGiveAWarning() { CHECK_EQUAL(12345, _countingMethod()); } // LCOV_EXCL_LINE TEST(UnitTestMacros, failing_CHECK_EQUAL_WithActualBeingEvaluatesMultipleTimesWillGiveAWarning) { runTestWithMethod(_failing_CHECK_EQUAL_WithActualBeingEvaluatesMultipleTimesWillGiveAWarning); CHECK_TEST_FAILS_PROPER_WITH_TEXT("WARNING:\n\tThe \"Actual Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect."); } static void _failing_CHECK_EQUAL_WithExpectedBeingEvaluatesMultipleTimesWillGiveAWarning() { CHECK_EQUAL(_countingMethod(), 12345); } // LCOV_EXCL_LINE TEST(UnitTestMacros, failing_CHECK_EQUAL_WithExpectedBeingEvaluatesMultipleTimesWillGiveAWarning) { runTestWithMethod(_failing_CHECK_EQUAL_WithExpectedBeingEvaluatesMultipleTimesWillGiveAWarning); CHECK_TEST_FAILS_PROPER_WITH_TEXT("WARNING:\n\tThe \"Expected Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect."); } TEST(UnitTestMacros, failing_CHECK_EQUAL_withParamatersThatDontChangeWillNotGiveAnyWarning) { runTestWithMethod(_failingTestMethodWithCHECK_EQUAL); CHECK( ! fixture.output_->getOutput().contains("WARNING")); } TEST(UnitTestMacros, CHECK_EQUALBehavesAsProperMacro) { if (false) CHECK_EQUAL(1, 2) else CHECK_EQUAL(1, 1) } IGNORE_TEST(UnitTestMacros, CHECK_EQUALWorksInAnIgnoredTest) { CHECK_EQUAL(1, 2) // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRCMP_CONTAINS() { STRCMP_CONTAINS("hello", "world"); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithSTRCMP_CONTAINS) { runTestWithMethod(_failingTestMethodWithSTRCMP_CONTAINS); CHECK_TEST_FAILS_PROPER_WITH_TEXT("actual "); } TEST(UnitTestMacros, STRCMP_CONTAINSBehavesAsProperMacro) { if (false) STRCMP_CONTAINS("1", "2") else STRCMP_CONTAINS("1", "1") } IGNORE_TEST(UnitTestMacros, STRCMP_CONTAINSWorksInAnIgnoredTest) { STRCMP_CONTAINS("Hello", "World") // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRCMP_NOCASE_CONTAINS() { STRCMP_NOCASE_CONTAINS("hello", "WORLD"); lineOfCodeExecutedAfterCheck = true; } TEST(UnitTestMacros, FailureWithSTRCMP_NOCASE_CONTAINS) { runTestWithMethod(_failingTestMethodWithSTRCMP_NOCASE_CONTAINS); CHECK_TEST_FAILS_PROPER_WITH_TEXT(""); } TEST(UnitTestMacros, STRCMP_NOCASE_CONTAINSBehavesAsProperMacro) { if (false) STRCMP_NOCASE_CONTAINS("never", "executed") else STRCMP_NOCASE_CONTAINS("hello", "HELLO WORLD") } IGNORE_TEST(UnitTestMacros, STRCMP_NO_CASE_CONTAINSWorksInAnIgnoredTest) { STRCMP_NOCASE_CONTAINS("Hello", "World") // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithLONGS_EQUAL() { LONGS_EQUAL(1, 0xff); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailurePrintHexOutputForLongInts) { runTestWithMethod(_failingTestMethodWithLONGS_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected < 1 0x01>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <255 0xff>"); } TEST(UnitTestMacros, LONGS_EQUALBehavesAsProperMacro) { if (false) LONGS_EQUAL(1, 2) else LONGS_EQUAL(10, 10) } IGNORE_TEST(UnitTestMacros, LONGS_EQUALWorksInAnIgnoredTest) { LONGS_EQUAL(11, 22) // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithBYTES_EQUAL() { BYTES_EQUAL('a', 'b'); lineOfCodeExecutedAfterCheck = true; } TEST(UnitTestMacros, FailureWithBYTES_EQUAL) { runTestWithMethod(_failingTestMethodWithBYTES_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("<97 0x61>"); } TEST(UnitTestMacros, BYTES_EQUALBehavesAsProperMacro) { if (false) BYTES_EQUAL('a', 'b') else BYTES_EQUAL('c', 'c') } IGNORE_TEST(UnitTestMacros, BYTES_EQUALWorksInAnIgnoredTest) { BYTES_EQUAL('q', 'w') // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithPOINTERS_EQUAL() { POINTERS_EQUAL((void*)0xa5a5, (void*)0xf0f0); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailurePrintHexOutputForPointers) { runTestWithMethod(_failingTestMethodWithPOINTERS_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <0xa5a5>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0xf0f0>"); } TEST(UnitTestMacros, POINTERS_EQUALBehavesAsProperMacro) { if (false) POINTERS_EQUAL(0, (void*) 0xbeefbeef) else POINTERS_EQUAL((void*)0xdeadbeef, (void*)0xdeadbeef) } IGNORE_TEST(UnitTestMacros, POINTERS_EQUALWorksInAnIgnoredTest) { POINTERS_EQUAL((void*) 0xbeef, (void*) 0xdead) // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithDOUBLES_EQUAL() { DOUBLES_EQUAL(0.12, 44.1, 0.3); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithDOUBLES_EQUAL) { runTestWithMethod(_failingTestMethodWithDOUBLES_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("0.12"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("44.1"); } TEST(UnitTestMacros, DOUBLES_EQUALBehavesAsProperMacro) { if (false) DOUBLES_EQUAL(0.0, 1.1, 0.0005) else DOUBLES_EQUAL(0.1, 0.2, 0.2) } IGNORE_TEST(UnitTestMacros, DOUBLES_EQUALWorksInAnIgnoredTest) { DOUBLES_EQUAL(100.0, 0.0, 0.2) // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _passingTestMethod() { CHECK(true); lineOfCodeExecutedAfterCheck = true; } TEST(UnitTestMacros, SuccessPrintsNothing) { runTestWithMethod(_passingTestMethod); LONGS_EQUAL(0, fixture.getFailureCount()); fixture.assertPrintContains(".\nOK (1 tests"); CHECK(lineOfCodeExecutedAfterCheck); } static void _methodThatOnlyPrints() { UT_PRINT("Hello World!"); } TEST(UnitTestMacros, PrintPrintsWhateverPrintPrints) { runTestWithMethod(_methodThatOnlyPrints); LONGS_EQUAL(0, fixture.getFailureCount()); fixture.assertPrintContains("Hello World!"); fixture.assertPrintContains(__FILE__); } static void _methodThatOnlyPrintsUsingSimpleStringFromFormat() { UT_PRINT(StringFromFormat("Hello %s %d", "World!", 2009)); } TEST(UnitTestMacros, PrintPrintsSimpleStringsForExampleThoseReturnedByFromString) { runTestWithMethod(_methodThatOnlyPrintsUsingSimpleStringFromFormat); fixture.assertPrintContains("Hello World! 2009"); } static int functionThatReturnsAValue() { CHECK(0 == 0); LONGS_EQUAL(1,1); BYTES_EQUAL(0xab,0xab); CHECK_EQUAL(100,100); STRCMP_EQUAL("THIS", "THIS"); DOUBLES_EQUAL(1.0, 1.0, .01); POINTERS_EQUAL(0, 0); MEMCMP_EQUAL("THIS", "THIS", 5); return 0; } TEST(UnitTestMacros, allMacrosFromFunctionThatReturnsAValue) { functionThatReturnsAValue(); } TEST(UnitTestMacros, NFirstCharsComparison) { STRNCMP_EQUAL("Hello World!", "Hello Peter!", 0); STRNCMP_EQUAL("Hello World!", "Hello Peter!", 1); STRNCMP_EQUAL("Hello World!", "Hello Peter!", 6); STRNCMP_EQUAL("Hello World!", "Hello", 5); } static void _compareNFirstCharsWithUpperAndLowercase() { STRNCMP_EQUAL("hello world!", "HELLO WORLD!", 12); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, CompareNFirstCharsWithUpperAndLowercase) { runTestWithMethod(_compareNFirstCharsWithUpperAndLowercase); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 0"); } static void _compareNFirstCharsWithDifferenceInTheMiddle() { STRNCMP_EQUAL("Hello World!", "Hello Peter!", 12); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, CompareNFirstCharsWithDifferenceInTheMiddle) { runTestWithMethod(_compareNFirstCharsWithDifferenceInTheMiddle); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 6"); } static void _compareNFirstCharsWithEmptyString() { STRNCMP_EQUAL("", "Not empty string", 5); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, CompareNFirstCharsWithEmptyString) { runTestWithMethod(_compareNFirstCharsWithEmptyString); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 0"); } static void _compareNFirstCharsWithLastCharDifferent() { STRNCMP_EQUAL("Not empty string?", "Not empty string!", 17); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, CompareNFirstCharsWithLastCharDifferent) { runTestWithMethod(_compareNFirstCharsWithLastCharDifferent); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 16"); } TEST(UnitTestMacros, MEMCMP_EQUALBehavesAsAProperMacro) { if (false) MEMCMP_EQUAL("TEST", "test", 5) else MEMCMP_EQUAL("TEST", "TEST", 5) } IGNORE_TEST(UnitTestMacros, MEMCMP_EQUALWorksInAnIgnoredTest) { MEMCMP_EQUAL("TEST", "test", 5); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _MEMCMP_EQUALFailingTestMethodWithUnequalInput() { unsigned char expectedData[] = { 0x00, 0x01, 0x02, 0x03 }; unsigned char actualData[] = { 0x00, 0x01, 0x03, 0x03 }; MEMCMP_EQUAL(expectedData, actualData, sizeof(expectedData)); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, MEMCMP_EQUALFailureWithUnequalInput) { runTestWithMethod(_MEMCMP_EQUALFailingTestMethodWithUnequalInput); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <00 01 02 03>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <00 01 03 03>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 2"); } static void _MEMCMP_EQUALFailingTestMethodWithNullExpected() { unsigned char actualData[] = { 0x00, 0x01, 0x02, 0x03 }; MEMCMP_EQUAL(NULL, actualData, sizeof(actualData)); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, MEMCMP_EQUALFailureWithNullExpected) { runTestWithMethod(_MEMCMP_EQUALFailingTestMethodWithNullExpected); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <(null)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <00 01 02 03>"); } static void _MEMCMP_EQUALFailingTestMethodWithNullActual() { unsigned char expectedData[] = { 0x00, 0x01, 0x02, 0x03 }; MEMCMP_EQUAL(expectedData, NULL, sizeof(expectedData)); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, MEMCMP_EQUALFailureWithNullActual) { runTestWithMethod(_MEMCMP_EQUALFailingTestMethodWithNullActual); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <00 01 02 03>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <(null)>"); } TEST(UnitTestMacros, MEMCMP_EQUALNullExpectedNullActual) { MEMCMP_EQUAL(NULL, NULL, 0); MEMCMP_EQUAL(NULL, NULL, 1024); } #if CPPUTEST_USE_STD_CPP_LIB static void _failingTestMethod_NoThrowWithCHECK_THROWS() { CHECK_THROWS(int, (void) (1+2)); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_THROWS_whenDoesntThrow) { runTestWithMethod(_failingTestMethod_NoThrowWithCHECK_THROWS); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected to throw int"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but threw nothing"); LONGS_EQUAL(1, fixture.getCheckCount()); } static void _succeedingTestMethod_CorrectThrowWithCHECK_THROWS() { CHECK_THROWS(int, throw 4); lineOfCodeExecutedAfterCheck = true; } TEST(UnitTestMacros, SuccessWithCHECK_THROWS) { runTestWithMethod(_succeedingTestMethod_CorrectThrowWithCHECK_THROWS); LONGS_EQUAL(1, fixture.getCheckCount()); } static void _failingTestMethod_WrongThrowWithCHECK_THROWS() { CHECK_THROWS(int, throw 4.3); lineOfCodeExecutedAfterCheck = true; // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_THROWS_whenWrongThrow) { runTestWithMethod(_failingTestMethod_WrongThrowWithCHECK_THROWS); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected to throw int"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but threw a different type"); LONGS_EQUAL(1, fixture.getCheckCount()); } TEST(UnitTestMacros, MultipleCHECK_THROWS_inOneScope) { CHECK_THROWS(int, throw 4); CHECK_THROWS(int, throw 4); } #endif TEST_GROUP(IgnoreTest) { TestTestingFixture fixture; IgnoredUtestShell ignoreTest; void setup() _override { fixture.addTest(&ignoreTest); } }; TEST(IgnoreTest, doesIgnoreCount) { fixture.runAllTests(); LONGS_EQUAL(1, fixture.getIgnoreCount()); } TEST(IgnoreTest, printsIGNORE_TESTwhenVerbose) { fixture.output_->verbose(); fixture.runAllTests(); fixture.assertPrintContains("IGNORE_TEST"); } cpputest-3.7.2/tests/UtestPlatformTest.cpp000644 000765 000024 00000012356 12523627400 021653 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestHarness.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/PlatformSpecificFunctions.h" TEST_GROUP(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess) { TestTestingFixture fixture; }; #if defined(__MINGW32__) TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, MinGwWorks) { fixture.registry_->setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains( "-p doesn't work on MinGW as it is lacking fork."); } #elif defined(_MSC_VER) TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, VisualCppWorks) { fixture.registry_->setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains( "-p doesn't work on Visual C++ as it is lacking fork."); } #else static void _failFunction() { FAIL("This test fails"); } #include extern "C" { static int (*original_waitpid)(int, int*, int) = NULL; static int fork_failed_stub(void) { return -1; } static int waitpid_while_debugging_stub(int pid, int* status, int options) { static int number_called = 0; static int saved_status; if (number_called++ < 10) { saved_status = *status; errno=EINTR; return -1; } else { *status = saved_status; return original_waitpid(pid, status, options); } } static int waitpid_failed_stub(int, int*, int) { return -1; } } static int _accessViolationTestFunction() { return *(volatile int*) 0; } #include #include static void _stoppedTestFunction() { kill(getpid(), SIGSTOP); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, FailureInSeparateProcessWorks) { fixture.registry_->setRunTestsInSeperateProcess(); fixture.setTestFunction(_failFunction); fixture.runAllTests(); fixture.assertPrintContains("Failed in separate process"); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, AccessViolationInSeparateProcessWorks) { fixture.registry_->setRunTestsInSeperateProcess(); fixture.setTestFunction((void(*)())_accessViolationTestFunction); fixture.runAllTests(); fixture.assertPrintContains("Failed in separate process - killed by signal 11"); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, StoppedInSeparateProcessWorks) { fixture.registry_->setRunTestsInSeperateProcess(); fixture.setTestFunction(_stoppedTestFunction); fixture.runAllTests(); fixture.assertPrintContains("Stopped in separate process - continuing"); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, CallToForkFailedInSeparateProcessWorks) { UT_PTR_SET(PlatformSpecificFork, fork_failed_stub); fixture.registry_->setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("Call to fork() failed"); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, CallToWaitPidWhileDebuggingInSeparateProcessWorks) { UT_PTR_SET(original_waitpid, PlatformSpecificWaitPid); UT_PTR_SET(PlatformSpecificWaitPid, waitpid_while_debugging_stub); fixture.registry_->setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("OK (1 tests, 0 ran, 0 checks, 0 ignored, 0 filtered out"); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, CallToWaitPidFailedInSeparateProcessWorks) { UT_PTR_SET(PlatformSpecificWaitPid, waitpid_failed_stub); fixture.registry_->setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("Call to waitpid() failed"); } #endif cpputest-3.7.2/tests/UtestTest.cpp000644 000765 000024 00000016625 12523627400 020151 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/PlatformSpecificFunctions.h" TEST_GROUP(Utest) { }; TEST_GROUP(UtestShell) { TestTestingFixture fixture; }; static void _failMethod() { FAIL("This test fails"); } static void _passingTestMethod() { CHECK(true); } static void _passingCheckEqualTestMethod() { CHECK_EQUAL(1, 1); } TEST(UtestShell, compareDoubles) { double zero = 0.0; double not_a_number = zero / zero; CHECK(doubles_equal(1.0, 1.001, 0.01)); CHECK(!doubles_equal(not_a_number, 1.001, 0.01)); CHECK(!doubles_equal(1.0, not_a_number, 0.01)); CHECK(!doubles_equal(1.0, 1.001, not_a_number)); CHECK(!doubles_equal(1.0, 1.1, 0.05)); double a = 1.2345678; CHECK(doubles_equal(a, a, 0.000000001)); } TEST(UtestShell, FailWillIncreaseTheAmountOfChecks) { fixture.setTestFunction(_failMethod); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getCheckCount()); } TEST(UtestShell, PassedCheckEqualWillIncreaseTheAmountOfChecks) { fixture.setTestFunction(_passingCheckEqualTestMethod); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getCheckCount()); } IGNORE_TEST(UtestShell, IgnoreTestAccessingFixture) { CHECK(&fixture != 0); } TEST(UtestShell, MacrosUsedInSetup) { IGNORE_ALL_LEAKS_IN_TEST(); fixture.setSetup(_failMethod); fixture.setTestFunction(_passingTestMethod); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); } TEST(UtestShell, MacrosUsedInTearDown) { IGNORE_ALL_LEAKS_IN_TEST(); fixture.setTeardown(_failMethod); fixture.setTestFunction(_passingTestMethod); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); } static int teardownCalled = 0; static void _teardownMethod() { teardownCalled++; } TEST(UtestShell, TeardownCalledAfterTestFailure) { teardownCalled = 0; IGNORE_ALL_LEAKS_IN_TEST(); fixture.setTeardown(_teardownMethod); fixture.setTestFunction(_failMethod); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); LONGS_EQUAL(1, teardownCalled); } static int stopAfterFailure = 0; static void _stopAfterFailureMethod() { FAIL("fail"); stopAfterFailure++; } TEST(UtestShell, TestStopsAfterTestFailure) { IGNORE_ALL_LEAKS_IN_TEST(); stopAfterFailure = 0; fixture.setTestFunction(_stopAfterFailureMethod); fixture.runAllTests(); CHECK(fixture.hasTestFailed()); LONGS_EQUAL(1, fixture.getFailureCount()); LONGS_EQUAL(0, stopAfterFailure); } TEST(UtestShell, TestStopsAfterSetupFailure) { stopAfterFailure = 0; fixture.setSetup(_stopAfterFailureMethod); fixture.setTeardown(_stopAfterFailureMethod); fixture.setTestFunction(_failMethod); fixture.runAllTests(); LONGS_EQUAL(2, fixture.getFailureCount()); LONGS_EQUAL(0, stopAfterFailure); } class defaultUtestShell: public UtestShell { }; TEST(UtestShell, this_test_covers_the_UtestShell_createTest_and_Utest_testBody_methods) { defaultUtestShell shell; fixture.addTest(&shell); fixture.runAllTests(); LONGS_EQUAL(2, fixture.result_->getTestCount()); } static void StubPlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin*, TestResult* result) { result->addFailure(TestFailure(shell, "Failed in separate process")); } TEST(UtestShell, RunInSeparateProcessTest) { UT_PTR_SET(PlatformSpecificRunTestInASeperateProcess, StubPlatformSpecificRunTestInASeperateProcess); fixture.registry_->setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("Failed in separate process"); } #if !defined(__MINGW32__) && !defined(_MSC_VER) TEST(UtestShell, TestDefaultCrashMethodInSeparateProcessTest) { fixture.setTestFunction(UtestShell::crash); fixture.registry_->setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("Failed in separate process - killed by signal 11"); } #else IGNORE_TEST(UtestShell, TestDefaultCrashMethodInSeparateProcessTest) {} #endif #if CPPUTEST_USE_STD_CPP_LIB static bool destructorWasCalledOnFailedTest = false; static void _destructorCalledForLocalObjects() { SetBooleanOnDestructorCall pleaseCallTheDestructor(destructorWasCalledOnFailedTest); destructorWasCalledOnFailedTest = false; FAIL("fail"); } TEST(UtestShell, DestructorIsCalledForLocalObjectsWhenTheTestFails) { fixture.setTestFunction(_destructorCalledForLocalObjects); fixture.runAllTests(); CHECK(destructorWasCalledOnFailedTest); } #endif TEST_BASE(MyOwnTest) { MyOwnTest() : inTest(false) { } bool inTest; void setup() { CHECK(!inTest); inTest = true; } void teardown() { CHECK(inTest); inTest = false; } }; TEST_GROUP_BASE(UtestMyOwn, MyOwnTest) { }; TEST(UtestMyOwn, test) { CHECK(inTest); } class NullParameterTest: public UtestShell { }; TEST(UtestMyOwn, NullParameters) { NullParameterTest nullTest; /* Bug fix tests for creating a test without a name, fix in SimpleString */ TestFilter emptyFilter; CHECK(nullTest.shouldRun(&emptyFilter, &emptyFilter)); } class AllocateAndDeallocateInConstructorAndDestructor { char* memory_; char* morememory_; public: AllocateAndDeallocateInConstructorAndDestructor() { memory_ = new char[100]; morememory_ = NULL; } void allocateMoreMemory() { morememory_ = new char[123]; } ~AllocateAndDeallocateInConstructorAndDestructor() { delete [] memory_; delete [] morememory_; } }; TEST_GROUP(CanHaveMemberVariablesInTestGroupThatAllocateMemoryWithoutCausingMemoryLeaks) { AllocateAndDeallocateInConstructorAndDestructor dummy; }; TEST(CanHaveMemberVariablesInTestGroupThatAllocateMemoryWithoutCausingMemoryLeaks, testInTestGroupName) { dummy.allocateMoreMemory(); } cpputest-3.7.2/tests/CppUTestExt/AllTests.cpp000644 000765 000024 00000005047 12521603460 022122 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestRegistry.h" #include "CppUTestExt/MemoryReporterPlugin.h" #include "CppUTestExt/MockSupportPlugin.h" #ifdef INCLUDE_GTEST_TESTS #include "CppUTestExt/GTestConvertor.h" #endif int main(int ac, const char** av) { #ifdef INCLUDE_GTEST_TESTS GTestConvertor convertor; convertor.addAllGTestToTestRegistry(); #endif MemoryReporterPlugin plugin; MockSupportPlugin mockPlugin; TestRegistry::getCurrentRegistry()->installPlugin(&plugin); TestRegistry::getCurrentRegistry()->installPlugin(&mockPlugin); #ifndef GMOCK_RENAME_MAIN return CommandLineTestRunner::RunAllTests(ac, av); #else /* Don't have any memory leak detector when running the Google Test tests */ testing::GMOCK_FLAG(verbose) = testing::internal::kWarningVerbosity; ConsoleTestOutput output; CommandLineTestRunner runner(ac, av, &output, TestRegistry::getCurrentRegistry()); return runner.runAllTestsMain(); #endif } cpputest-3.7.2/tests/CppUTestExt/CMakeLists.txt000644 000765 000024 00000002273 12523627400 022423 0ustar00basvoddestaff000000 000000 set(CppUTestExtTests_src AllTests.cpp CodeMemoryReportFormatterTest.cpp GMockTest.cpp GTest1Test.cpp MemoryReportAllocatorTest.cpp MemoryReporterPluginTest.cpp MemoryReportFormatterTest.cpp MockActualCallTest.cpp MockCheatSheetTest.cpp MockExpectedCallTest.cpp MockExpectedFunctionsListTest.cpp MockFailureTest.cpp MockPluginTest.cpp MockSupportTest.cpp MockSupport_cTestCFile.c MockSupport_cTest.cpp OrderedTestTest.cpp ) if (MINGW) find_package (Threads REQUIRED) set(THREAD_LIB "pthread") endif (MINGW) add_executable(CppUTestExtTests ${CppUTestExtTests_src}) target_link_libraries(CppUTestExtTests CppUTest CppUTestExt ${THREAD_LIB} ${CPPUNIT_EXTERNAL_LIBRARIES}) if (TESTS) # get all test groups execute_process(COMMAND tests/CppUTestExt/CppUTestExtTests -lg OUTPUT_VARIABLE CppUTestTestsExt_Groups) # create separate test for each group separate_arguments(CppUTestTestsExt_Groups) foreach(group ${CppUTestTestsExt_Groups}) message("TestGroup2: ${group}:") add_test(NAME CppUTestExt.${group} COMMAND ${EXECUTABLE_OUTPUT_PATH}/CppUTestExtTests -sg ${group} -c) endforeach() endif (TESTS) cpputest-3.7.2/tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp000644 000765 000024 00000017623 12521603460 026355 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTestExt/CodeMemoryReportFormatter.h" #define TESTOUPUT_EQUAL(a) STRCMP_EQUAL_LOCATION(a, testOutput.getOutput().asCharString(), __FILE__, __LINE__); #define TESTOUPUT_CONTAINS(a) STRCMP_CONTAINS_LOCATION(a, testOutput.getOutput().asCharString(), __FILE__, __LINE__); TEST_GROUP(CodeMemoryReportFormatter) { TestMemoryAllocator* cAllocator; TestMemoryAllocator* newAllocator; TestMemoryAllocator* newArrayAllocator; char* memory01; char* memory02; StringBufferTestOutput testOutput; TestResult* testResult; CodeMemoryReportFormatter* formatter; void setup() { cAllocator = defaultMallocAllocator(); newAllocator = defaultNewAllocator(); newArrayAllocator= defaultNewArrayAllocator(); memory01 = (char*) 0x01; memory02 = (char*) 0x02; formatter = new CodeMemoryReportFormatter(cAllocator); testResult = new TestResult(testOutput); } void teardown() { delete testResult; delete formatter; } }; TEST(CodeMemoryReportFormatter, mallocCreatesAnMallocCall) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "file", 9); TESTOUPUT_EQUAL("\tvoid* file_9_1 = malloc(10);\n"); } TEST(CodeMemoryReportFormatter, freeCreatesAnFreeCall) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "file", 9); testOutput.flush(); formatter->report_free_memory(testResult, cAllocator, memory01, "boo", 6); TESTOUPUT_EQUAL("\tfree(file_9_1); /* at boo:6 */\n"); } TEST(CodeMemoryReportFormatter, twoMallocAndTwoFree) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "file", 2); formatter->report_alloc_memory(testResult, cAllocator, 10, memory02, "boo", 4); testOutput.flush(); formatter->report_free_memory(testResult, cAllocator, memory01, "foo", 6); formatter->report_free_memory(testResult, cAllocator, memory02, "bar", 8); TESTOUPUT_CONTAINS("\tfree(file_2_1); /* at foo:6 */\n"); TESTOUPUT_CONTAINS("\tfree(boo_4_1); /* at bar:8 */\n"); } TEST(CodeMemoryReportFormatter, variableNamesShouldNotContainSlahses) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "dir/file", 2); TESTOUPUT_CONTAINS("\tvoid* file_2"); } TEST(CodeMemoryReportFormatter, variableNamesShouldNotContainDotButUseUnderscore) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "foo.cpp", 2); TESTOUPUT_CONTAINS("foo_cpp"); } TEST(CodeMemoryReportFormatter, newArrayAllocatorGeneratesNewArrayCode) { formatter->report_alloc_memory(testResult, newArrayAllocator, 10, memory01, "file", 8); TESTOUPUT_CONTAINS("char* file_8_1 = new char[10]; /* using new [] */"); } TEST(CodeMemoryReportFormatter, newArrayGeneratesNewCode) { formatter->report_alloc_memory(testResult, newAllocator, 6, memory01, "file", 4); TESTOUPUT_CONTAINS("new char[6]; /* using new */"); } TEST(CodeMemoryReportFormatter, NewAllocatorGeneratesDeleteCode) { formatter->report_alloc_memory(testResult, newAllocator, 10, memory01, "file", 8); testOutput.flush(); formatter->report_free_memory(testResult, newAllocator, memory01, "boo", 4); TESTOUPUT_CONTAINS("delete [] file_8_1; /* using delete at boo:4 */"); } TEST(CodeMemoryReportFormatter, DeleteNullWorksFine) { formatter->report_free_memory(testResult, newAllocator, NULL, "boo", 4); TESTOUPUT_CONTAINS("delete [] NULL; /* using delete at boo:4 */"); } TEST(CodeMemoryReportFormatter, NewArrayAllocatorGeneratesDeleteArrayCode) { formatter->report_alloc_memory(testResult, newArrayAllocator, 10, memory01, "file", 8); testOutput.flush(); formatter->report_free_memory(testResult, newArrayAllocator, memory01, "boo", 4); TESTOUPUT_CONTAINS("delete [] file_8_1; /* using delete [] at boo:4 */"); } TEST(CodeMemoryReportFormatter, allocationUsingMallocOnTheSameLineDoesntGenerateTheSameVariableTwice) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "file", 8); testOutput.flush(); formatter->report_alloc_memory(testResult, cAllocator, 10, memory02, "file", 8); CHECK(testOutput.getOutput().contains("2")); } TEST(CodeMemoryReportFormatter, allocationUsingNewcOnTheSameLineDoesntGenerateTheSameVariableTwice) { formatter->report_alloc_memory(testResult, newAllocator, 10, memory01, "file", 8); testOutput.flush(); formatter->report_alloc_memory(testResult, newAllocator, 10, memory01, "file", 8); CHECK(testOutput.getOutput().contains("2")); } TEST(CodeMemoryReportFormatter, allocationUsingNewcOnTheSameLineDoesntGenerateVariableTwiceExceptWhenInANewTest) { formatter->report_alloc_memory(testResult, newAllocator, 10, memory01, "file", 8); formatter->report_test_start(testResult, *UtestShell::getCurrent()); testOutput.flush(); formatter->report_alloc_memory(testResult, newAllocator, 10, memory01, "file", 8); CHECK(testOutput.getOutput().contains("char*")); } TEST(CodeMemoryReportFormatter, testStartGeneratesTESTcode) { UtestShell test("groupName", "testName", "fileName", 1); formatter->report_test_start(testResult, test); TESTOUPUT_EQUAL("*/\nTEST(groupName_memoryReport, testName)\n{ /* at fileName:1 */\n"); } TEST(CodeMemoryReportFormatter, testEndGeneratesTESTcode) { UtestShell test("groupName", "testName", "fileName", 1); formatter->report_test_end(testResult, test); TESTOUPUT_EQUAL("}/*"); } TEST(CodeMemoryReportFormatter, TestGroupGeneratesTestGroupCode) { UtestShell test("groupName", "testName", "fileName", 1); formatter->report_testgroup_start(testResult, test); TESTOUPUT_EQUAL("*/TEST_GROUP(groupName_memoryReport)\n{\n};\n/*"); } TEST(CodeMemoryReportFormatter, VariableFromFileLineInfoAlreadyExists) { for(int i = 1; i < 100; i++) { formatter->report_alloc_memory(testResult, newArrayAllocator, 10, memory01, "file", 8); } formatter->report_alloc_memory(testResult, newArrayAllocator, 10, memory01, "file", 8); testOutput.flush(); formatter->report_free_memory(testResult, newArrayAllocator, memory01, "boo", 8); TESTOUPUT_CONTAINS("delete [] ; /* using delete [] at boo:8 */"); } // TODO: do! /* Dealloc without alloc */ /* Remove the ugly comments by controlling the output! */ /* Write tests for the variable name lengths */ cpputest-3.7.2/tests/CppUTestExt/GMockTest.cpp000644 000765 000024 00000005376 12521603460 022234 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef INCLUDE_GTEST_TESTS #include "CppUTestExt/GMock.h" #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestTestingFixture.h" TEST_GROUP(GMock) { TestTestingFixture *fixture; void setup() { fixture = new TestTestingFixture; } void teardown() { delete fixture; } }; class myMock { public: MOCK_METHOD0(methodName, int()); }; static void failedMockCall() { myMock mock; EXPECT_CALL(mock, methodName()).WillOnce(Return(1)); } TEST(GMock, GMockFailuresWorkAsExpected) { fixture->setTestFunction(failedMockCall); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); } static void failedMockCallAfterOneSuccess() { myMock mock; EXPECT_CALL(mock, methodName()).Times(2).WillRepeatedly(Return(1)); mock.methodName(); } TEST(GMock, GMockFailuresWorkAsExpectedWithTwoExpectedCallButJustOneActual) { fixture->setTestFunction(failedMockCallAfterOneSuccess); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); } TEST(GMock, GMockNiceMocksWorkFine) { NiceMock mock; mock.methodName(); } #endif cpputest-3.7.2/tests/CppUTestExt/GTest1Test.cpp000644 000765 000024 00000011407 12521603460 022333 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef INCLUDE_GTEST_TESTS #undef new #include "CppUTestExt/GTest.h" #include "CppUTestExt/GMock.h" static bool g_GTestEqual_has_been_called = false; TEST(GTestSimpleTest, GTestEqual) { EXPECT_EQ(1, 1); g_GTestEqual_has_been_called = true; } TEST(GTestSimpleTest, GTestAssertEq) { ASSERT_EQ(1, 1); } TEST(GTestSimpleTest, GTestExpectTrue) { EXPECT_TRUE(true); } TEST(GTestSimpleTest, GTestAssertTrue) { ASSERT_TRUE(true); } TEST(GTestSimpleTest, GTestExpectFalse) { EXPECT_FALSE(false); } TEST(GTestSimpleTest, GTestExpectStreq) { EXPECT_STREQ("hello world", "hello world"); } /* Death tests are IMHO not a good idea at all. But for compatibility reason, we'll support it */ static void crashMe () { fprintf(stderr, "Crash me!"); *((int*) 0) = 10; } TEST(GTestSimpleTest, GTestDeathTest) { ASSERT_DEATH(crashMe(), "Crash me!"); } #undef TEST #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" TEST_GROUP(gtest) { }; TEST(gtest, SimpleGoogleTestExists) { TestRegistry* registry = TestRegistry::getCurrentRegistry(); CHECK(registry->findTestWithName("GTestEqual")); } TEST(gtest, SimpleGoogleTestGroupExists) { TestRegistry* registry = TestRegistry::getCurrentRegistry(); CHECK(registry->findTestWithGroup("GTestSimpleTest")); } TEST(gtest, SimpleGoogleTestGetCalled) { StringBufferTestOutput output; TestResult result(output); TestPlugin plugin("dummy"); TestRegistry* registry = TestRegistry::getCurrentRegistry(); UtestShell * shell = registry->findTestWithName("GTestEqual"); g_GTestEqual_has_been_called = false; shell->runOneTest(&plugin, result); CHECK(g_GTestEqual_has_been_called); } static bool afterCheck; static void _failMethodEXPECT_EQ() { EXPECT_EQ(1, 2); afterCheck = true; } static void _failMethodASSERT_EQ() { ASSERT_EQ(1, 2); afterCheck = true; } static void _failMethodEXPECT_TRUE() { EXPECT_TRUE(false); afterCheck = true; } static void _failMethodASSERT_TRUE() { ASSERT_TRUE(false); afterCheck = true; } static void _failMethodEXPECT_FALSE() { EXPECT_FALSE(true); afterCheck = true; } static void _failMethodEXPECT_STREQ() { EXPECT_STREQ("hello", "world"); afterCheck = true; } TEST_GROUP(gtestMacros) { TestTestingFixture* fixture; void setup() { fixture = new TestTestingFixture(); afterCheck = false; } void teardown() { delete fixture; } void testFailureWith(void(*method)()) { fixture->setTestFunction(method); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); CHECK(!afterCheck); } }; TEST(gtestMacros, EXPECT_EQFails) { testFailureWith(_failMethodEXPECT_EQ); } TEST(gtestMacros, EXPECT_TRUEFails) { testFailureWith(_failMethodEXPECT_TRUE); } TEST(gtestMacros, EXPECT_FALSEFails) { testFailureWith(_failMethodEXPECT_FALSE); } TEST(gtestMacros, EXPECT_STREQFails) { testFailureWith(_failMethodEXPECT_STREQ); } TEST(gtestMacros, ASSERT_EQFails) { testFailureWith(_failMethodASSERT_EQ); } TEST(gtestMacros, ASSERT_TRUEFails) { testFailureWith(_failMethodASSERT_TRUE); } #endif cpputest-3.7.2/tests/CppUTestExt/GTest2ConvertorTest.cpp000644 000765 000024 00000007126 12521603460 024241 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef INCLUDE_GTEST_TESTS #include "CppUTestExt/GTestConvertor.h" class GTestTestingFixtureTest : public testing::Test { protected: bool setup_was_called; char* freed_during_teardown; void SetUp() { setup_was_called = true; freed_during_teardown = NULL; } void TearDown() { delete [] freed_during_teardown; } }; TEST_F(GTestTestingFixtureTest, setupBeenCalled) { EXPECT_TRUE(setup_was_called); } TEST_F(GTestTestingFixtureTest, teardownMustBeCalledOrElseThisWillLeak) { freed_during_teardown = new char[100]; } #endif #undef TEST #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestTestingFixture.h" TEST_GROUP(GTestConvertor) { }; #ifdef INCLUDE_GTEST_TESTS /* * These tests depend on the amount of GTests that are actually added (also in other files). * This is due to the singleton in gtest. * */ TEST(GTestConvertor, correctNumberOfTestCases) { LONGS_EQUAL(2, ::testing::UnitTest::GetInstance()->total_test_case_count()); CHECK(::testing::UnitTest::GetInstance()->GetTestCase(0)); CHECK(::testing::UnitTest::GetInstance()->GetTestCase(1)); CHECK(::testing::UnitTest::GetInstance()->GetTestCase(2) == NULL); } TEST(GTestConvertor, correctNumberOfTestsInTheTestCases) { const ::testing::TestCase* firstTestCase = ::testing::UnitTest::GetInstance()->GetTestCase(0); const ::testing::TestCase* secondTestCase = ::testing::UnitTest::GetInstance()->GetTestCase(1); STRCMP_EQUAL("GTestSimpleTest", firstTestCase->name()); STRCMP_EQUAL("GTestTestingFixtureTest", secondTestCase->name()); LONGS_EQUAL(7, firstTestCase->total_test_count()); LONGS_EQUAL(2, secondTestCase->total_test_count()); } TEST(GTestConvertor, testsGetAddedToCurrentTestRegistry) { TestTestingFixture fixture; TestRegistry::getCurrentRegistry()->unDoLastAddTest(); GTestConvertor convertor(false); convertor.addAllGTestToTestRegistry(); LONGS_EQUAL(9, TestRegistry::getCurrentRegistry()->countTests()); } #endif cpputest-3.7.2/tests/CppUTestExt/MemoryReportAllocatorTest.cpp000644 000765 000024 00000004037 12521603460 025532 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTestExt/MemoryReportFormatter.h" TEST_GROUP(MemoryReportAllocator) { }; TEST(MemoryReportAllocator, FunctionsAreForwardedForMallocAllocator) { MemoryReportAllocator allocator; allocator.setRealAllocator(getCurrentMallocAllocator()); STRCMP_EQUAL("malloc", allocator.alloc_name()); STRCMP_EQUAL("free", allocator.free_name()); } cpputest-3.7.2/tests/CppUTestExt/MemoryReporterPluginTest.cpp000644 000765 000024 00000032062 12521603460 025376 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTestExt/MemoryReporterPlugin.h" #include "CppUTestExt/MemoryReportFormatter.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockNamedValue.h" static TestMemoryAllocator* previousNewAllocator; class TemporaryDefaultNewAllocator { TestMemoryAllocator* newAllocator; public: TemporaryDefaultNewAllocator(TestMemoryAllocator* oldAllocator) { newAllocator = getCurrentNewAllocator(); setCurrentNewAllocator(oldAllocator); } ~TemporaryDefaultNewAllocator() { setCurrentNewAllocator(newAllocator); } }; class MockMemoryReportFormatter : public MemoryReportFormatter { public: virtual void report_testgroup_start(TestResult* result, UtestShell& test) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_testgroup_start").withParameter("result", result).withParameter("test", &test); } virtual void report_testgroup_end(TestResult* result, UtestShell& test) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_testgroup_end").withParameter("result", result).withParameter("test", &test); } virtual void report_test_start(TestResult* result, UtestShell& test) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_test_start").withParameter("result", result).withParameter("test", &test); } virtual void report_test_end(TestResult* result, UtestShell& test) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_test_end").withParameter("result", result).withParameter("test", &test); } virtual void report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t, char* , const char* , int ) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_alloc_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", allocator); } virtual void report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* , const char* , int ) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_free_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", allocator); } }; static MockMemoryReportFormatter formatterForPluginTest; class MemoryReporterPluginUnderTest : public MemoryReporterPlugin { public: MemoryReportFormatter* createMemoryFormatter(const SimpleString& type) { mock("reporter").actualCall("createMemoryFormatter").onObject(this).withParameter("type", type.asCharString()); return new MockMemoryReportFormatter; } }; class TestMemoryAllocatorComparator : public MockNamedValueComparator { public: bool isEqual(const void* object1, const void* object2) { return ((TestMemoryAllocator*)object1)->name() == ((TestMemoryAllocator*)object2)->name(); } SimpleString valueToString(const void* object) { return ((TestMemoryAllocator*)object)->name(); } }; TEST_GROUP(MemoryReporterPlugin) { MemoryReporterPluginUnderTest* reporter; StringBufferTestOutput output; TestMemoryAllocatorComparator memLeakAllocatorComparator; TestResult* result; UtestShell* test; void setup() { previousNewAllocator = getCurrentNewAllocator(); result = new TestResult(output); test = new UtestShell("groupname", "testname", "filename", 1); reporter = new MemoryReporterPluginUnderTest; mock("formatter").installComparator("TestMemoryAllocator", memLeakAllocatorComparator); mock("reporter").disable(); const char *cmd_line[] = {"-pmemoryreport=normal"}; reporter->parseArguments(1, cmd_line, 0); mock("reporter").enable(); } void teardown() { delete reporter; delete test; delete result; } }; TEST(MemoryReporterPlugin, offReportsNothing) { MemoryReporterPluginUnderTest freshReporter; freshReporter.preTestAction(*test, *result); char* memory = new char; delete memory; freshReporter.postTestAction(*test, *result); } TEST(MemoryReporterPlugin, meaninglessArgumentsAreIgnored) { const char *cmd_line[] = {"-nothing", "-pnotmemoryreport=normal", "alsomeaningless", "-pmemoryreportnonsensebutnotus"}; CHECK(reporter->parseArguments(3, cmd_line, 1) == false); } TEST(MemoryReporterPlugin, commandLineParameterTurnsOnNormalLogging) { mock("reporter").expectOneCall("createMemoryFormatter").onObject(reporter).withParameter("type", "normal"); const char *cmd_line[] = {"-nothing", "-pmemoryreport=normal", "alsomeaningless" }; CHECK(reporter->parseArguments(3, cmd_line, 1)); } TEST(MemoryReporterPlugin, preTestActionReportsTest) { mock("formatter").expectOneCall("report_testgroup_start").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_test_start").withParameter("result", result).withParameter("test", test); reporter->preTestAction(*test, *result); } TEST(MemoryReporterPlugin, postTestActionReportsTest) { mock("formatter").expectOneCall("report_test_end").withParameter("result", result).withParameter("test", test);; mock("formatter").expectOneCall("report_testgroup_end").withParameter("result", result).withParameter("test", test);; reporter->postTestAction(*test, *result); } TEST(MemoryReporterPlugin, newAllocationsAreReportedTest) { mock("formatter").expectOneCall("report_alloc_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", defaultNewAllocator()); mock("formatter").expectOneCall("report_free_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", defaultNewAllocator()); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(*test, *result); char *memory = getCurrentNewAllocator()->allocMemoryLeakNode(100); getCurrentNewAllocator()->free_memory(memory, "unknown", 1); } TEST(MemoryReporterPlugin, whenUsingOnlyMallocAllocatorNoOtherOfTheAllocatorsAreUsed) { mock("formatter").expectOneCall("report_test_start").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_alloc_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", defaultMallocAllocator()); mock("formatter").expectOneCall("report_free_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", defaultMallocAllocator()); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(*test, *result); char *memory = getCurrentMallocAllocator()->allocMemoryLeakNode(100); getCurrentMallocAllocator()->free_memory(memory, "unknown", 1); } TEST(MemoryReporterPlugin, newArrayAllocationsAreReportedTest) { mock("formatter").expectOneCall("report_alloc_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", defaultNewArrayAllocator()); mock("formatter").expectOneCall("report_free_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", defaultNewArrayAllocator()); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(*test, *result); char *memory = getCurrentNewArrayAllocator()->allocMemoryLeakNode(100); getCurrentNewArrayAllocator()->free_memory(memory, "unknown", 1); } TEST(MemoryReporterPlugin, mallocAllocationsAreReportedTest) { mock("formatter").expectOneCall("report_alloc_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", defaultMallocAllocator()); mock("formatter").expectOneCall("report_free_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", defaultMallocAllocator()); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(*test, *result); char *memory = getCurrentMallocAllocator()->allocMemoryLeakNode(100); getCurrentMallocAllocator()->free_memory(memory, "unknown", 1); } TEST(MemoryReporterPlugin, startOfANewTestWillReportTheTestGroupStart) { mock("formatter").expectOneCall("report_testgroup_start").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_test_start").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_test_end").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_test_start").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_test_end").withParameter("result", result).withParameter("test", test); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(*test, *result); reporter->postTestAction(*test, *result); reporter->preTestAction(*test, *result); reporter->postTestAction(*test, *result); } class UtestForMemoryReportingPlugingTest : public UtestShell { public: UtestForMemoryReportingPlugingTest(const char* groupname, UtestShell* test) : UtestShell(groupname, "testname", "filename", 1, test) { } }; TEST(MemoryReporterPlugin, endOfaTestGroupWillReportSo) { UtestForMemoryReportingPlugingTest fourthTest("differentGroupName", NULL); UtestForMemoryReportingPlugingTest thirdTest("differentGroupName", &fourthTest); UtestForMemoryReportingPlugingTest secondTest("groupname", &thirdTest); UtestForMemoryReportingPlugingTest firstTest("groupname", &secondTest); mock("formatter").expectOneCall("report_testgroup_end").withParameter("result", result).withParameter("test", &secondTest); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(firstTest, *result); reporter->postTestAction(firstTest, *result); reporter->preTestAction(secondTest, *result); reporter->postTestAction(secondTest, *result); reporter->preTestAction(thirdTest, *result); reporter->postTestAction(thirdTest, *result); } TEST(MemoryReporterPlugin, preActionReplacesAllocators) { mock("formatter").ignoreOtherCalls(); TestMemoryAllocator* allocator = getCurrentMallocAllocator(); reporter->preTestAction(*test, *result); CHECK(allocator != getCurrentMallocAllocator()); } TEST(MemoryReporterPlugin, postActionRestoresAllocators) { mock("formatter").ignoreOtherCalls(); TestMemoryAllocator* allocator = getCurrentMallocAllocator(); reporter->preTestAction(*test, *result); reporter->postTestAction(*test, *result); CHECK(allocator == getCurrentMallocAllocator()); } TEST(MemoryReporterPlugin, shouldCreateNormalMemoryReportFormatterWithoutMock) { MemoryReporterPlugin realReporter; const char *cmd_line[] = {"-pmemoryreport=normal"}; CHECK(realReporter.parseArguments(1, cmd_line, 0)); } TEST(MemoryReporterPlugin, shouldCreateCodeMemoryReportFormatterWithoutMock) { MemoryReporterPlugin realReporter; const char *cmd_line[] = {"-pmemoryreport=code"}; CHECK(realReporter.parseArguments(1, cmd_line, 0)); } TEST(MemoryReporterPlugin, shouldntCrashCreateInvalidMemoryReportFormatterWithoutMock) { MemoryReporterPlugin realReporter; const char *cmd_line[] = {"-pmemoryreport=foo"}; CHECK(realReporter.parseArguments(1, cmd_line, 0)); realReporter.preTestAction(*test, *result); realReporter.postTestAction(*test, *result); } cpputest-3.7.2/tests/CppUTestExt/MemoryReportFormatterTest.cpp000644 000765 000024 00000006643 12521603460 025562 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTestExt/MemoryReportFormatter.h" #define TESTOUPUT_EQUAL(a) STRCMP_EQUAL_LOCATION(a, testOutput.getOutput().asCharString(), __FILE__, __LINE__); TEST_GROUP(NormalMemoryReportFormatter) { char* memory01; StringBufferTestOutput testOutput; TestResult* testResult; NormalMemoryReportFormatter formatter; void setup() { memory01 = (char*) 0x01; testResult = new TestResult(testOutput); } void teardown() { delete testResult; } }; TEST(NormalMemoryReportFormatter, mallocCreatesAnMallocCall) { formatter.report_alloc_memory(testResult, defaultMallocAllocator(), 10, memory01, "file", 9); TESTOUPUT_EQUAL(StringFromFormat("\tAllocation using malloc of size: 10 pointer: %p at file:9\n", memory01).asCharString()); } TEST(NormalMemoryReportFormatter, freeCreatesAnFreeCall) { formatter.report_free_memory(testResult, defaultMallocAllocator(), memory01, "boo", 6); TESTOUPUT_EQUAL(StringFromFormat("\tDeallocation using free of pointer: %p at boo:6\n", memory01).asCharString()); } TEST(NormalMemoryReportFormatter, testStarts) { UtestShell test("groupName", "TestName", "file", 1); formatter.report_test_start(testResult, test); TESTOUPUT_EQUAL("TEST(groupName, TestName)\n"); } TEST(NormalMemoryReportFormatter, testEnds) { UtestShell test("groupName", "TestName", "file", 1); formatter.report_test_end(testResult, test); TESTOUPUT_EQUAL("ENDTEST(groupName, TestName)\n"); } TEST(NormalMemoryReportFormatter, testGroupStarts) { UtestShell test("groupName", "TestName", "file", 1); formatter.report_testgroup_start(testResult, test); TESTOUPUT_EQUAL("------------------------------TEST GROUP(groupName)-----------------------------\n"); } cpputest-3.7.2/tests/CppUTestExt/MockActualCallTest.cpp000644 000765 000024 00000017631 12521603460 024050 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockCheckedActualCall.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "CppUTestExt/MockFailure.h" #include "MockFailureTest.h" TEST_GROUP(MockCheckedActualCall) { MockExpectedCallsList* emptyList; MockExpectedCallsList* list; MockFailureReporter* reporter; void setup() { emptyList = new MockExpectedCallsList; list = new MockExpectedCallsList; reporter = MockFailureReporterForTest::getReporter(); } void teardown() { CHECK_NO_MOCK_FAILURE(); delete emptyList; delete list; } }; TEST(MockCheckedActualCall, unExpectedCall) { MockCheckedActualCall actualCall(1, reporter, *emptyList); actualCall.withName("unexpected"); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "unexpected", *list); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCheckedActualCall, unExpectedCallWithAParameter) { MockCheckedActualCall actualCall(1, reporter, *emptyList); actualCall.withName("unexpected").withParameter("bar", 0); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "unexpected", *list); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCheckedActualCall, actualCallWithNoReturnValueAndMeaninglessCallOrderForCoverage) { MockCheckedActualCall actualCall(1, reporter, *emptyList); actualCall.withName("noreturn").withCallOrder(0).returnValue(); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "noreturn", *list); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCheckedActualCall, unExpectedParameterName) { MockCheckedExpectedCall call1; call1.withName("func"); list->addExpectedCall(&call1); MockCheckedActualCall actualCall(1, reporter, *list); actualCall.withName("func").withParameter("integer", 1); MockNamedValue parameter("integer"); parameter.setValue(1); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "func", parameter, *list); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCheckedActualCall, multipleSameFunctionsExpectingAndHappenGradually) { MockCheckedExpectedCall* call1 = new MockCheckedExpectedCall(); MockCheckedExpectedCall* call2 = new MockCheckedExpectedCall(); call1->withName("func"); call2->withName("func"); list->addExpectedCall(call1); list->addExpectedCall(call2); MockCheckedActualCall actualCall1(1, reporter, *list); MockCheckedActualCall actualCall2(2, reporter, *list); LONGS_EQUAL(2, list->amountOfUnfulfilledExpectations()); actualCall1.withName("func"); LONGS_EQUAL(1, list->amountOfUnfulfilledExpectations()); actualCall2.withName("func"); LONGS_EQUAL(0, list->amountOfUnfulfilledExpectations()); list->deleteAllExpectationsAndClearList(); } TEST(MockCheckedActualCall, MockIgnoredActualCallWorksAsItShould) { MockIgnoredActualCall actual; actual.withName("func"); actual.withCallOrder(1); CHECK(0 == actual.returnUnsignedLongIntValue()); CHECK(0 == actual.returnIntValue()); CHECK(0 == actual.returnUnsignedLongIntValueOrDefault(1ul)); CHECK(0 == actual.returnIntValueOrDefault(1)); CHECK(0 == actual.returnLongIntValue()); CHECK(0 == actual.returnLongIntValueOrDefault(1l)); CHECK(0 == actual.returnUnsignedIntValue()); CHECK(0 == actual.returnUnsignedIntValueOrDefault(1u)); DOUBLES_EQUAL(0.0f, actual.returnDoubleValue(), 0.0f); DOUBLES_EQUAL(0.0f, actual.returnDoubleValueOrDefault(1.0f), 0.0f); STRCMP_EQUAL("", actual.returnStringValueOrDefault("bla")); STRCMP_EQUAL("", actual.returnStringValue()); CHECK(0 == actual.returnPointerValue()); CHECK(0 == actual.returnPointerValueOrDefault((void*) 0x0)); CHECK(0 == actual.returnConstPointerValue()); CHECK(0 == actual.returnConstPointerValueOrDefault((const void*) 0x0)); CHECK_FALSE(actual.hasReturnValue()); CHECK(actual.returnValue().equals(MockNamedValue(""))); } TEST(MockCheckedActualCall, remainderOfMockActualCallTraceWorksAsItShould) { int value; const int const_value = 1; MockActualCallTrace actual; actual.withName("func"); actual.withCallOrder(1); actual.onObject(&value); actual.withUnsignedIntParameter("unsigned_int", (unsigned int) 1); actual.withUnsignedLongIntParameter("unsigned_long", (unsigned long)1); actual.withLongIntParameter("long_int", (long int) 1); actual.withPointerParameter("pointer", &value); actual.withConstPointerParameter("const_pointer", &const_value); actual.withParameterOfType("int", "named_type", &const_value); SimpleString expectedString("\nFunction name:func"); expectedString += " withCallOrder:1"; expectedString += " onObject:0x"; expectedString += HexStringFrom(&value); expectedString += " unsigned_int: 1 (0x00000001)"; expectedString += " unsigned_long:1 (0x1)"; expectedString += " long_int:1"; expectedString += " pointer:0x"; expectedString += HexStringFrom(&value); expectedString += " const_pointer:0x"; expectedString += HexStringFrom(&const_value); expectedString += " int named_type:0x"; expectedString += HexStringFrom(&const_value); STRCMP_EQUAL(expectedString.asCharString(), actual.getTraceOutput()); CHECK_FALSE(actual.hasReturnValue()); CHECK(actual.returnValue().equals(MockNamedValue(""))); CHECK(0 == actual.returnLongIntValue()); CHECK(0 == actual.returnUnsignedLongIntValue()); CHECK(0 == actual.returnIntValue()); CHECK(0 == actual.returnUnsignedLongIntValueOrDefault(1ul)); CHECK(0 == actual.returnIntValueOrDefault(1)); CHECK(0 == actual.returnLongIntValue()); CHECK(0 == actual.returnLongIntValueOrDefault(1l)); CHECK(0 == actual.returnUnsignedIntValue()); CHECK(0 == actual.returnUnsignedIntValueOrDefault(1u)); DOUBLES_EQUAL(0.0f, actual.returnDoubleValue(), 0.0f); DOUBLES_EQUAL(0.0f, actual.returnDoubleValueOrDefault(1.0f), 0.0f); STRCMP_EQUAL("", actual.returnStringValueOrDefault("bla")); STRCMP_EQUAL("", actual.returnStringValue()); CHECK(0 == actual.returnPointerValue()); CHECK(0 == actual.returnPointerValueOrDefault((void*) 0x0)); CHECK(0 == actual.returnConstPointerValue()); CHECK(0 == actual.returnConstPointerValueOrDefault((const void*) 0x0)); } cpputest-3.7.2/tests/CppUTestExt/MockCheatSheetTest.cpp000644 000765 000024 00000003561 12521603460 024055 0ustar00basvoddestaff000000 000000 /* Additional include from CppUTestExt */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockSupport.h" /* Stubbed out product code using linker, function pointer, or overriding */ static int foo(const char* param_string, int param_int) { /* Tell CppUTest Mocking what we mock. Also return recorded value */ return mock().actualCall("Foo") .withParameter("param_string", param_string) .withParameter("param_int", param_int) .returnValue().getIntValue(); } static void bar(double param_double, const char* param_string) { mock().actualCall("Bar") .withParameter("param_double", param_double) .withParameter("param_string", param_string); } /* Production code calls to the methods we stubbed */ static int productionCodeFooCalls() { int return_value; return_value = foo("value_string", 10); return_value = foo("value_string", 10); return return_value; } static void productionCodeBarCalls() { bar(1.5, "more"); bar(1.5, "more"); } /* Actual test */ TEST_GROUP(MockCheatSheet) { void teardown() { /* Check expectations. Alternatively use MockSupportPlugin */ mock().checkExpectations(); } }; TEST(MockCheatSheet, foo) { /* Record 2 calls to Foo. Return different values on each call */ mock().expectOneCall("Foo") .withParameter("param_string", "value_string") .withParameter("param_int", 10) .andReturnValue(30); mock().expectOneCall("Foo") .ignoreOtherParameters() .andReturnValue(50); /* Call production code */ productionCodeFooCalls(); } TEST(MockCheatSheet, bar) { /* Expect 2 calls on Bar. Check only one parameter */ mock().expectNCalls(2, "Bar") .withParameter("param_double", 1.5) .ignoreOtherParameters(); /* And the production code call */ productionCodeBarCalls(); } cpputest-3.7.2/tests/CppUTestExt/MockExpectedCallTest.cpp000644 000765 000024 00000050375 12521603460 024402 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockFailure.h" #include "MockFailureTest.h" class TypeForTestingExpectedFunctionCall { public: TypeForTestingExpectedFunctionCall(int val) : value(val) {} int value; }; class TypeForTestingExpectedFunctionCallComparator : public MockNamedValueComparator { public: TypeForTestingExpectedFunctionCallComparator() {} virtual ~TypeForTestingExpectedFunctionCallComparator() {} virtual bool isEqual(const void* object1, const void* object2) { return ((TypeForTestingExpectedFunctionCall*)object1)->value == ((TypeForTestingExpectedFunctionCall*)object2)->value; } virtual SimpleString valueToString(const void* object) { return StringFrom(((TypeForTestingExpectedFunctionCall*)object)->value); } }; TEST_GROUP(MockNamedValueComparatorRepository) { void teardown() { CHECK_NO_MOCK_FAILURE(); } }; TEST(MockNamedValueComparatorRepository, getComparatorForNonExistingName) { MockNamedValueComparatorRepository repository; POINTERS_EQUAL(NULL, repository.getComparatorForType("typeName")); } TEST(MockNamedValueComparatorRepository, installComparator) { TypeForTestingExpectedFunctionCallComparator comparator; MockNamedValueComparatorRepository repository; repository.installComparator("typeName", comparator); POINTERS_EQUAL(&comparator, repository.getComparatorForType("typeName")); } TEST(MockNamedValueComparatorRepository, installMultipleComparator) { TypeForTestingExpectedFunctionCallComparator comparator1, comparator2, comparator3; MockNamedValueComparatorRepository repository; repository.installComparator("type1", comparator1); repository.installComparator("type2", comparator2); repository.installComparator("type3", comparator3); POINTERS_EQUAL(&comparator3, repository.getComparatorForType("type3")); POINTERS_EQUAL(&comparator2, repository.getComparatorForType("type2")); POINTERS_EQUAL(&comparator1, repository.getComparatorForType("type1")); } TEST_GROUP(MockExpectedCall) { MockCheckedExpectedCall* call; void setup() { call = new MockCheckedExpectedCall; } void teardown() { delete call; CHECK_NO_MOCK_FAILURE(); } }; TEST(MockExpectedCall, callWithoutParameterSetOrNotFound) { STRCMP_EQUAL("", call->getInputParameterType("nonexisting").asCharString()); LONGS_EQUAL(0, call->getInputParameter("nonexisting").getIntValue()); CHECK(!call->hasInputParameterWithName("nonexisting")); } TEST(MockExpectedCall, callWithUnsignedIntegerParameter) { const SimpleString name = "unsigned integer"; unsigned int value = 777; call->withParameter(name, value); STRCMP_EQUAL("unsigned int", call->getInputParameterType(name).asCharString()); LONGS_EQUAL(value, call->getInputParameter(name).getUnsignedIntValue()); CHECK(call->hasInputParameterWithName(name)); } TEST(MockExpectedCall, callWithIntegerParameter) { call->withParameter("integer", 1); STRCMP_EQUAL("int", call->getInputParameterType("integer").asCharString()); LONGS_EQUAL(1, call->getInputParameter("integer").getIntValue()); CHECK(call->hasInputParameterWithName("integer")); } TEST(MockExpectedCall, callWithUnsignedLongIntegerParameter) { const SimpleString name = "unsigned long integer"; unsigned long value = 777; call->withParameter(name, value); STRCMP_EQUAL("unsigned long int", call->getInputParameterType(name).asCharString()); LONGS_EQUAL(value, call->getInputParameter(name).getUnsignedLongIntValue()); CHECK(call->hasInputParameterWithName(name)); } TEST(MockExpectedCall, callWithLongIntegerParameter) { const SimpleString name = "long integer"; long value = 777; call->withParameter(name, value); STRCMP_EQUAL("long int", call->getInputParameterType(name).asCharString()); LONGS_EQUAL(value, call->getInputParameter(name).getLongIntValue()); CHECK(call->hasInputParameterWithName(name)); } TEST(MockExpectedCall, callWithDoubleParameter) { call->withParameter("double", 1.2); STRCMP_EQUAL("double", call->getInputParameterType("double").asCharString()); DOUBLES_EQUAL(1.2, call->getInputParameter("double").getDoubleValue(), 0.05); } TEST(MockExpectedCall, callWithStringParameter) { call->withParameter("string", "hello world"); STRCMP_EQUAL("const char*", call->getInputParameterType("string").asCharString()); STRCMP_EQUAL("hello world", call->getInputParameter("string").getStringValue()); } TEST(MockExpectedCall, callWithPointerParameter) { void* ptr = (void*) 0x123; call->withParameter("pointer", ptr); STRCMP_EQUAL("void*", call->getInputParameterType("pointer").asCharString()); POINTERS_EQUAL(ptr, call->getInputParameter("pointer").getPointerValue()); } TEST(MockExpectedCall, callWithConstPointerParameter) { const void* ptr = (const void*) 0x345; call->withParameter("constPointer", ptr); STRCMP_EQUAL("const void*", call->getInputParameterType("constPointer").asCharString()); POINTERS_EQUAL(ptr, call->getInputParameter("constPointer").getConstPointerValue()); } TEST(MockExpectedCall, callWithObjectParameter) { void* ptr = (void*) 0x123; call->withParameterOfType("class", "object", ptr); POINTERS_EQUAL(ptr, call->getInputParameter("object").getObjectPointer()); STRCMP_EQUAL("class", call->getInputParameterType("object").asCharString()); } TEST(MockExpectedCall, callWithObjectParameterUnequalComparison) { TypeForTestingExpectedFunctionCall type(1), unequalType(2); MockNamedValue parameter("name"); parameter.setObjectPointer("type", &unequalType); call->withParameterOfType("type", "name", &type); CHECK(!call->hasInputParameter(parameter)); } TEST(MockExpectedCall, callWithObjectParameterEqualComparisonButFailsWithoutRepository) { TypeForTestingExpectedFunctionCall type(1), equalType(1); MockNamedValue parameter("name"); parameter.setObjectPointer("type", &equalType); call->withParameterOfType("type", "name", &type); CHECK(!call->hasInputParameter(parameter)); } TEST(MockExpectedCall, callWithObjectParameterEqualComparisonButFailsWithoutComparator) { MockNamedValueComparatorRepository repository; MockNamedValue::setDefaultComparatorRepository(&repository); TypeForTestingExpectedFunctionCall type(1), equalType(1); MockNamedValue parameter("name"); parameter.setObjectPointer("type", &equalType); call->withParameterOfType("type", "name", &type); CHECK(!call->hasInputParameter(parameter)); } TEST(MockExpectedCall, callWithObjectParameterEqualComparison) { TypeForTestingExpectedFunctionCallComparator comparator; MockNamedValueComparatorRepository repository; MockNamedValue::setDefaultComparatorRepository(&repository); repository.installComparator("type", comparator); TypeForTestingExpectedFunctionCall type(1), equalType(1); MockNamedValue parameter("name"); parameter.setObjectPointer("type", &equalType); call->withParameterOfType("type", "name", &type); CHECK(call->hasInputParameter(parameter)); } TEST(MockExpectedCall, getParameterValueOfObjectType) { TypeForTestingExpectedFunctionCallComparator comparator; MockNamedValueComparatorRepository repository; MockNamedValue::setDefaultComparatorRepository(&repository); repository.installComparator("type", comparator); TypeForTestingExpectedFunctionCall type(1); call->withParameterOfType("type", "name", &type); POINTERS_EQUAL(&type, call->getInputParameter("name").getObjectPointer()); STRCMP_EQUAL("1", call->getInputParameterValueString("name").asCharString()); } TEST(MockExpectedCall, getParameterValueOfObjectTypeWithoutRepository) { TypeForTestingExpectedFunctionCall type(1); call->withParameterOfType("type", "name", &type); STRCMP_EQUAL("No comparator found for type: \"type\"", call->getInputParameterValueString("name").asCharString()); } TEST(MockExpectedCall, getParameterValueOfObjectTypeWithoutComparator) { TypeForTestingExpectedFunctionCall type(1); MockNamedValueComparatorRepository repository; MockNamedValue::setDefaultComparatorRepository(&repository); call->withParameterOfType("type", "name", &type); STRCMP_EQUAL("No comparator found for type: \"type\"", call->getInputParameterValueString("name").asCharString()); } TEST(MockExpectedCall, callWithTwoUnsignedIntegerParameter) { unsigned int expected_value = 1; unsigned int another_expected_value = 2; call->withParameter("unsigned-integer1", expected_value); call->withParameter("unsigned-integer2", another_expected_value); STRCMP_EQUAL("unsigned int", call->getInputParameterType("unsigned-integer1").asCharString()); STRCMP_EQUAL("unsigned int", call->getInputParameterType("unsigned-integer2").asCharString()); LONGS_EQUAL(expected_value, call->getInputParameter("unsigned-integer1").getUnsignedIntValue()); LONGS_EQUAL(another_expected_value, call->getInputParameter("unsigned-integer2").getUnsignedIntValue()); } TEST(MockExpectedCall, callWithTwoIntegerParameter) { int expected_value = 1; int another_expected_value = -1; call->withParameter("integer1", expected_value); call->withParameter("integer2", another_expected_value); STRCMP_EQUAL("int", call->getInputParameterType("integer1").asCharString()); STRCMP_EQUAL("int", call->getInputParameterType("integer2").asCharString()); LONGS_EQUAL(expected_value, call->getInputParameter("integer1").getIntValue()); LONGS_EQUAL(another_expected_value, call->getInputParameter("integer2").getIntValue()); } TEST(MockExpectedCall, callWithThreeDifferentParameter) { call->withParameter("integer", 1); call->withParameter("string", "hello world"); call->withParameter("double", 0.12); STRCMP_EQUAL("int", call->getInputParameterType("integer").asCharString()); STRCMP_EQUAL("const char*", call->getInputParameterType("string").asCharString()); STRCMP_EQUAL("double", call->getInputParameterType("double").asCharString()); LONGS_EQUAL(1, call->getInputParameter("integer").getIntValue()); STRCMP_EQUAL("hello world", call->getInputParameter("string").getStringValue()); DOUBLES_EQUAL(0.12, call->getInputParameter("double").getDoubleValue(), 0.05); } TEST(MockExpectedCall, withoutANameItsFulfilled) { CHECK(call->isFulfilled()); } TEST(MockExpectedCall, withANameItsNotFulfilled) { call->withName("name"); CHECK(!call->isFulfilled()); } TEST(MockExpectedCall, afterSettingCallFulfilledItsFulFilled) { call->withName("name"); call->callWasMade(1); CHECK(call->isFulfilled()); } TEST(MockExpectedCall, calledButNotWithParameterIsNotFulFilled) { call->withName("name").withParameter("para", 1); call->callWasMade(1); CHECK(!call->isFulfilled()); } TEST(MockExpectedCall, calledAndParametersAreFulfilled) { call->withName("name").withParameter("para", 1); call->callWasMade(1); call->inputParameterWasPassed("para"); CHECK(call->isFulfilled()); } TEST(MockExpectedCall, calledButNotAllParametersAreFulfilled) { call->withName("name").withParameter("para", 1).withParameter("two", 2); call->callWasMade(1); call->inputParameterWasPassed("para"); CHECK(!call->isFulfilled()); } TEST(MockExpectedCall, toStringForNoParameters) { call->withName("name"); STRCMP_EQUAL("name -> no parameters", call->callToString().asCharString()); } TEST(MockExpectedCall, toStringForIgnoredParameters) { call->withName("name"); call->ignoreOtherParameters(); STRCMP_EQUAL("name -> all parameters ignored", call->callToString().asCharString()); } TEST(MockExpectedCall, toStringForMultipleParameters) { int int_value = 10; unsigned int uint_value = 7; call->withName("name"); call->withParameter("string", "value"); call->withParameter("integer", int_value); call->withParameter("unsigned-integer", uint_value); STRCMP_EQUAL("name -> const char* string: , int integer: <10>, unsigned int unsigned-integer: < 7 (0x00000007)>", call->callToString().asCharString()); } TEST(MockExpectedCall, toStringForParameterAndIgnored) { call->withName("name"); call->withParameter("string", "value"); call->ignoreOtherParameters(); STRCMP_EQUAL("name -> const char* string: , other parameters are ignored", call->callToString().asCharString()); } TEST(MockExpectedCall, toStringForCallOrder) { call->withName("name"); call->withCallOrder(2); STRCMP_EQUAL("name -> expected call order: <2> -> no parameters", call->callToString().asCharString()); } TEST(MockExpectedCall, callOrderIsNotFulfilledWithWrongOrder) { call->withName("name"); call->withCallOrder(2); call->callWasMade(1); CHECK(call->isFulfilled()); CHECK(call->isOutOfOrder()); } TEST(MockExpectedCall, callOrderIsFulfilled) { call->withName("name"); call->withCallOrder(1); call->callWasMade(1); CHECK(call->isFulfilled()); CHECK_FALSE(call->isOutOfOrder()); } TEST(MockExpectedCall, hasOutputParameter) { const int value = 1; call->withOutputParameterReturning("foo", &value, sizeof(value)); MockNamedValue foo("foo"); foo.setValue(&value); CHECK(call->hasOutputParameter(foo)); } TEST(MockExpectedCall, hasNoOutputParameter) { call->withIntParameter("foo", (int)1); MockNamedValue foo("foo"); foo.setValue((int)1); CHECK_FALSE(call->hasOutputParameter(foo)); } static MockExpectedCallComposite composite; TEST_GROUP(MockExpectedCallComposite) { MockCheckedExpectedCall call; void setup() _override { composite.add(call); composite.withName("name"); } void teardown() _override { CHECK_NO_MOCK_FAILURE(); composite.clear(); } }; TEST(MockExpectedCallComposite, hasLongIntParameter) { composite.withParameter("param", (long int) -1); STRCMP_EQUAL("name -> long int param: <-1>", call.callToString().asCharString()); } TEST(MockExpectedCallComposite, hasUnsignedLongIntParameter) { composite.withParameter("param", (unsigned long int) 5); STRCMP_EQUAL("name -> unsigned long int param: <5 (0x5)>", call.callToString().asCharString()); } TEST(MockExpectedCallComposite, hasPointerParameter) { composite.withParameter("param", (void*) 0); STRCMP_EQUAL("name -> void* param: <0x0>", call.callToString().asCharString()); } TEST(MockExpectedCallComposite, hasConstPointerParameter) { composite.withParameter("param", (const void*) 0); STRCMP_EQUAL("name -> const void* param: <0x0>", call.callToString().asCharString()); } TEST(MockExpectedCallComposite, hasParameterOfType) { composite.withParameterOfType("type", "param", (const void*) 0); STRCMP_EQUAL("name -> type param: ", call.callToString().asCharString()); } TEST(MockExpectedCallComposite, hasOutputParameterReturning) { composite.withOutputParameterReturning("out", (const void*) 0, 1); STRCMP_EQUAL("name -> const void* out: ", call.callToString().asCharString()); } TEST(MockExpectedCallComposite, hasUnsignedIntReturnValue) { composite.andReturnValue((unsigned int) 2); STRCMP_EQUAL("unsigned int", call.returnValue().getType().asCharString()); LONGS_EQUAL(2, call.returnValue().getUnsignedIntValue()); } TEST(MockExpectedCallComposite, hasIntReturnValue) { composite.andReturnValue((int) -5); STRCMP_EQUAL("int", call.returnValue().getType().asCharString()); LONGS_EQUAL(-5, call.returnValue().getIntValue()); } TEST(MockExpectedCallComposite, hasLongIntReturnValue) { composite.andReturnValue((long int) -17); STRCMP_EQUAL("long int", call.returnValue().getType().asCharString()); LONGS_EQUAL(-17, call.returnValue().getLongIntValue()); } TEST(MockExpectedCallComposite, hasUnsignedLongIntReturnValue) { composite.andReturnValue((unsigned long int) 6); STRCMP_EQUAL("unsigned long int", call.returnValue().getType().asCharString()); LONGS_EQUAL(6, call.returnValue().getUnsignedLongIntValue()); } TEST(MockExpectedCallComposite, hasDoubleReturnValue) { composite.andReturnValue((double) 3.005); STRCMP_EQUAL("double", call.returnValue().getType().asCharString()); DOUBLES_EQUAL(3.005, call.returnValue().getDoubleValue(), 0.0001); } TEST(MockExpectedCallComposite, hasStringReturnValue) { composite.andReturnValue("hello"); STRCMP_EQUAL("const char*", call.returnValue().getType().asCharString()); STRCMP_EQUAL("hello", call.returnValue().getStringValue()); } TEST(MockExpectedCallComposite, hasPointerReturnValue) { composite.andReturnValue((void*) 0); STRCMP_EQUAL("void*", call.returnValue().getType().asCharString()); POINTERS_EQUAL((void*) 0, call.returnValue().getPointerValue()); } TEST(MockExpectedCallComposite, hasConstPointerReturnValue) { composite.andReturnValue((const void*) 0); STRCMP_EQUAL("const void*", call.returnValue().getType().asCharString()); POINTERS_EQUAL((const void*) 0, call.returnValue().getConstPointerValue()); } TEST(MockExpectedCallComposite, isOnObject) { composite.onObject(&composite); SimpleString info("(object address: "); info += StringFromFormat("%p", &composite); info += ")::name -> no parameters"; STRCMP_EQUAL(info.asCharString(), call.callToString().asCharString()); } #include "CppUTest/TestTestingFixture.h" static void withCallOrderNotSupportedFailMethod_(void) { composite.withCallOrder(5); } // LCOV_EXCL_LINE TEST(MockExpectedCallComposite, doesNotSupportCallOrder) { TestTestingFixture fixture; fixture.setTestFunction(&withCallOrderNotSupportedFailMethod_); fixture.runAllTests(); fixture.assertPrintContains("withCallOrder not supported for CompositeCalls"); } TEST_GROUP(MockIgnoredExpectedCall) { MockIgnoredExpectedCall ignored; }; TEST(MockIgnoredExpectedCall, worksAsItShould) { ignored.withName("func"); ignored.withCallOrder(1); ignored.onObject((void*) 0); ignored.withIntParameter("bla", (int) 1); ignored.withUnsignedIntParameter("foo", (unsigned int) 1); ignored.withLongIntParameter("hey", (long int) 1); ignored.withUnsignedLongIntParameter("bah", (unsigned long int) 1); ignored.withDoubleParameter("hah", (double) 1.1f); ignored.withStringParameter("goo", "hello"); ignored.withPointerParameter("pie", (void*) 0); ignored.withConstPointerParameter("woo", (const void*) 0); ignored.withParameterOfType("top", "mytype", (const void*) 0); ignored.withOutputParameterReturning("bar", (const void*) 0, 1); ignored.ignoreOtherParameters(); ignored.andReturnValue((double) 1.0f); ignored.andReturnValue((unsigned int) 1); ignored.andReturnValue((int) 1); ignored.andReturnValue((unsigned long int) 1); ignored.andReturnValue((long int) 1); ignored.andReturnValue("boo"); ignored.andReturnValue((void*) 0); ignored.andReturnValue((const void*) 0); } cpputest-3.7.2/tests/CppUTestExt/MockExpectedFunctionsListTest.cpp000644 000765 000024 00000021435 12521603460 026326 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockFailure.h" #include "MockFailureTest.h" TEST_GROUP(MockExpectedCallsList) { MockExpectedCallsList * list; MockCheckedExpectedCall* call1; MockCheckedExpectedCall* call2; MockCheckedExpectedCall* call3; MockCheckedExpectedCall* call4; void setup() { list = new MockExpectedCallsList; call1 = new MockCheckedExpectedCall; call2 = new MockCheckedExpectedCall; call3 = new MockCheckedExpectedCall; call4 = new MockCheckedExpectedCall; call1->withName("foo"); call2->withName("bar"); call3->withName("boo"); } void teardown() { delete call1; delete call2; delete call3; delete call4; delete list; CHECK_NO_MOCK_FAILURE(); } }; TEST(MockExpectedCallsList, emptyList) { CHECK(! list->hasUnfullfilledExpectations()); CHECK(! list->hasFulfilledExpectations()); LONGS_EQUAL(0, list->size()); } TEST(MockExpectedCallsList, addingCalls) { list->addExpectedCall(call1); list->addExpectedCall(call2); LONGS_EQUAL(2, list->size()); } TEST(MockExpectedCallsList, listWithFulfilledExpectationHasNoUnfillfilledOnes) { call1->callWasMade(1); call2->callWasMade(2); list->addExpectedCall(call1); list->addExpectedCall(call2); CHECK(! list->hasUnfullfilledExpectations()); } TEST(MockExpectedCallsList, listWithFulfilledExpectationButOutOfOrder) { call1->withCallOrder(1); call2->withCallOrder(2); list->addExpectedCall(call1); list->addExpectedCall(call2); call2->callWasMade(1); call1->callWasMade(2); CHECK(! list->hasUnfullfilledExpectations()); CHECK(list->hasCallsOutOfOrder()); } TEST(MockExpectedCallsList, listWithUnFulfilledExpectationHasNoUnfillfilledOnes) { call1->callWasMade(1); call3->callWasMade(2); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); CHECK(list->hasUnfullfilledExpectations()); } TEST(MockExpectedCallsList, deleteAllExpectationsAndClearList) { list->addExpectedCall(new MockCheckedExpectedCall); list->addExpectedCall(new MockCheckedExpectedCall); list->deleteAllExpectationsAndClearList(); } TEST(MockExpectedCallsList, onlyKeepUnfulfilledExpectationsRelatedTo) { call1->withName("relate"); call2->withName("unrelate"); call3->withName("relate"); call3->callWasMade(1); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); list->onlyKeepUnfulfilledExpectationsRelatedTo("relate"); LONGS_EQUAL(1, list->size()); } TEST(MockExpectedCallsList, removeAllExpectationsExceptThisThatRelateToTheWoleList) { call1->withName("relate"); call2->withName("relate"); call3->withName("relate"); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); list->onlyKeepUnfulfilledExpectationsRelatedTo("unrelate"); LONGS_EQUAL(0, list->size()); } TEST(MockExpectedCallsList, removeAllExpectationsExceptThisThatRelateToFirstOne) { call1->withName("relate"); call2->withName("unrelate"); list->addExpectedCall(call1); list->addExpectedCall(call2); list->onlyKeepUnfulfilledExpectationsRelatedTo("unrelate"); LONGS_EQUAL(1, list->size()); } TEST(MockExpectedCallsList, removeAllExpectationsExceptThisThatRelateToLastOne) { call1->withName("unrelate"); call2->withName("relate"); list->addExpectedCall(call1); list->addExpectedCall(call2); list->onlyKeepUnfulfilledExpectationsRelatedTo("unrelate"); LONGS_EQUAL(1, list->size()); } TEST(MockExpectedCallsList, onlyKeepExpectationsWithInputParameterName) { call1->withName("func").withParameter("param", 1); call2->withName("func").withParameter("diffname", 1); call3->withName("func").withParameter("diffname", 1); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); list->onlyKeepExpectationsWithInputParameterName("diffname"); LONGS_EQUAL(2, list->size()); } TEST(MockExpectedCallsList, onlyKeepUnfulfilledExpectationsWithInputParameter) { MockNamedValue parameter("diffname"); parameter.setValue(1); call1->withName("func").withParameter("param", 1); call2->withName("func").withParameter("diffname", 1); call3->withName("func").withParameter("diffname", 1); call4->withName("func").withParameter("diffname", 2); call3->callWasMade(1); call3->inputParameterWasPassed("diffname"); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); list->addExpectedCall(call4); list->onlyKeepUnfulfilledExpectationsWithInputParameter(parameter); LONGS_EQUAL(1, list->size()); } TEST(MockExpectedCallsList, addUnfilfilledExpectationsWithEmptyList) { MockExpectedCallsList newList; newList.addUnfilfilledExpectations(*list); LONGS_EQUAL(0, newList.size()); } TEST(MockExpectedCallsList, addUnfilfilledExpectationsMultipleUnfulfilledExpectations) { call2->callWasMade(1); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); MockExpectedCallsList newList; newList.addUnfilfilledExpectations(*list); LONGS_EQUAL(2, newList.size()); } TEST(MockExpectedCallsList, amountOfExpectationsFor) { call1->withName("foo"); call2->withName("bar"); list->addExpectedCall(call1); list->addExpectedCall(call2); LONGS_EQUAL(1, list->amountOfExpectationsFor("bar")); } TEST(MockExpectedCallsList, amountOfExpectationsForHasNone) { call1->withName("foo"); list->addExpectedCall(call1); LONGS_EQUAL(0, list->amountOfExpectationsFor("bar")); } TEST(MockExpectedCallsList, callToStringForUnfulfilledFunctions) { call1->withName("foo"); call2->withName("bar"); call3->withName("blah"); call3->callWasMade(1); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); SimpleString expectedString; expectedString = StringFromFormat("%s\n%s", call1->callToString().asCharString(), call2->callToString().asCharString()); STRCMP_EQUAL(expectedString.asCharString(), list->unfulfilledCallsToString().asCharString()); } TEST(MockExpectedCallsList, callToStringForFulfilledFunctions) { call1->withName("foo"); call2->withName("bar"); call2->callWasMade(1); call1->callWasMade(2); list->addExpectedCall(call1); list->addExpectedCall(call2); SimpleString expectedString; expectedString = StringFromFormat("%s\n%s", call2->callToString().asCharString(), call1->callToString().asCharString()); STRCMP_EQUAL(expectedString.asCharString(), list->fulfilledCallsToString().asCharString()); } TEST(MockExpectedCallsList, removeOneFulfilledExpectationFromEmptyList) { POINTERS_EQUAL(NULL, list->removeOneFulfilledExpectation()); } TEST(MockExpectedCallsList, getOneFulfilledExpectationWithIgnoredParametersFromEmptyList) { POINTERS_EQUAL(NULL, list->getOneFulfilledExpectationWithIgnoredParameters()); } TEST(MockExpectedCallsList, toStringOnEmptyList) { STRCMP_EQUAL("", list->unfulfilledCallsToString().asCharString()); } cpputest-3.7.2/tests/CppUTestExt/MockFailureTest.cpp000644 000765 000024 00000024554 12521603460 023434 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockFailure.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "MockFailureTest.h" MockFailureReporterForTest* MockFailureReporterForTest::getReporter() { static MockFailureReporterForTest reporter; return &reporter; } TEST_GROUP(MockFailureTest) { MockFailureReporter reporter; MockExpectedCallsList *list; MockCheckedExpectedCall* call1; MockCheckedExpectedCall* call2; MockCheckedExpectedCall* call3; void setup () { list = new MockExpectedCallsList; call1 = new MockCheckedExpectedCall; call2 = new MockCheckedExpectedCall; call3 = new MockCheckedExpectedCall; } void teardown () { delete list; delete call1; delete call2; delete call3; CHECK_NO_MOCK_FAILURE(); } void addAllToList() { list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); } }; TEST(MockFailureTest, noErrorFailureSomethingGoneWrong) { MockFailure failure(UtestShell::getCurrent()); STRCMP_EQUAL("Test failed with MockFailure without an error! Something went seriously wrong.", failure.getMessage().asCharString()); } TEST(MockFailureTest, unexpectedCallHappened) { MockUnexpectedCallHappenedFailure failure(UtestShell::getCurrent(), "foobar", *list); STRCMP_EQUAL("Mock Failure: Unexpected call to function: foobar\n" "\tEXPECTED calls that did NOT happen:\n" "\t\t\n" "\tACTUAL calls that did happen (in call order):\n" "\t\t", failure.getMessage().asCharString()); } TEST(MockFailureTest, expectedCallDidNotHappen) { call1->withName("foobar"); call2->withName("world").withParameter("boo", 2).withParameter("hello", "world"); call3->withName("haphaphap"); call3->callWasMade(1); addAllToList(); MockExpectedCallsDidntHappenFailure failure(UtestShell::getCurrent(), *list); STRCMP_EQUAL("Mock Failure: Expected call did not happen.\n" "\tEXPECTED calls that did NOT happen:\n" "\t\tfoobar -> no parameters\n" "\t\tworld -> int boo: <2>, const char* hello: \n" "\tACTUAL calls that did happen (in call order):\n" "\t\thaphaphap -> no parameters", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockUnexpectedAdditionalCallFailure) { call1->withName("bar"); call1->callWasMade(1); list->addExpectedCall(call1); MockUnexpectedCallHappenedFailure failure(UtestShell::getCurrent(), "bar", *list); STRCMP_CONTAINS("Mock Failure: Unexpected additional (2th) call to function: bar\n\tEXPECTED", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockUnexpectedInputParameterFailure) { call1->withName("foo").withParameter("boo", 2); call2->withName("foo").withParameter("boo", 3.3f); call3->withName("unrelated"); addAllToList(); MockNamedValue actualParameter("bar"); actualParameter.setValue(2); MockUnexpectedInputParameterFailure failure(UtestShell::getCurrent(), "foo", actualParameter, *list); STRCMP_EQUAL("Mock Failure: Unexpected parameter name to function \"foo\": bar\n" "\tEXPECTED calls that DID NOT happen related to function: foo\n" "\t\tfoo -> int boo: <2>\n" "\t\tfoo -> double boo: <3.3>\n" "\tACTUAL calls that DID happen related to function: foo\n" "\t\t\n" "\tACTUAL unexpected parameter passed to function: foo\n" "\t\tint bar: <2>", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockUnexpectedOutputParameterFailure) { int out1; int out2; call1->withName("foo").withOutputParameterReturning("boo", &out1, sizeof(out1)); call2->withName("foo").withOutputParameterReturning("boo", &out2, sizeof(out2)); call3->withName("unrelated"); addAllToList(); MockNamedValue actualParameter("bar"); actualParameter.setValue((void *)0x123); MockUnexpectedOutputParameterFailure failure(UtestShell::getCurrent(), "foo", actualParameter, *list); STRCMP_EQUAL("Mock Failure: Unexpected output parameter name to function \"foo\": bar\n" "\tEXPECTED calls that DID NOT happen related to function: foo\n" "\t\tfoo -> const void* boo: \n" "\t\tfoo -> const void* boo: \n" "\tACTUAL calls that DID happen related to function: foo\n" "\t\t\n" "\tACTUAL unexpected output parameter passed to function: foo\n" "\t\tvoid* bar", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockUnexpectedParameterValueFailure) { call1->withName("foo").withParameter("boo", 2); call2->withName("foo").withParameter("boo", 10); call3->withName("unrelated"); addAllToList(); MockNamedValue actualParameter("boo"); actualParameter.setValue(20); MockUnexpectedInputParameterFailure failure(UtestShell::getCurrent(), "foo", actualParameter, *list); STRCMP_EQUAL("Mock Failure: Unexpected parameter value to parameter \"boo\" to function \"foo\": <20>\n" "\tEXPECTED calls that DID NOT happen related to function: foo\n" "\t\tfoo -> int boo: <2>\n" "\t\tfoo -> int boo: <10>\n" "\tACTUAL calls that DID happen related to function: foo\n" "\t\t\n" "\tACTUAL unexpected parameter passed to function: foo\n" "\t\tint boo: <20>", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockExpectedParameterDidntHappenFailure) { call1->withName("foo").withParameter("bar", 2).withParameter("boo", "str"); call2->withName("foo").withParameter("bar", 10).withParameter("boo", "bleh"); call2->callWasMade(1); call2->inputParameterWasPassed("bar"); call2->inputParameterWasPassed("boo"); call3->withName("unrelated"); addAllToList(); MockExpectedParameterDidntHappenFailure failure(UtestShell::getCurrent(), "foo", *list); STRCMP_EQUAL("Mock Failure: Expected parameter for function \"foo\" did not happen.\n" "\tEXPECTED calls that DID NOT happen related to function: foo\n" "\t\tfoo -> int bar: <2>, const char* boo: \n" "\tACTUAL calls that DID happen related to function: foo\n" "\t\tfoo -> int bar: <10>, const char* boo: \n" "\tMISSING parameters that didn't happen:\n" "\t\tint bar, const char* boo", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockNoWayToCompareCustomTypeFailure) { MockNoWayToCompareCustomTypeFailure failure(UtestShell::getCurrent(), "myType"); STRCMP_EQUAL("MockFailure: No way to compare type . Please install a ParameterTypeComparator.", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockUnexpectedObjectFailure) { call1->withName("foo").onObject((void*) 0x02); call2->withName("foo").onObject((void*) 0x03); call2->callWasMade(1); call2->wasPassedToObject(); call3->withName("unrelated"); addAllToList(); MockUnexpectedObjectFailure failure(UtestShell::getCurrent(), "foo", (void*)0x1, *list); STRCMP_EQUAL(StringFromFormat ( "MockFailure: Function called on a unexpected object: foo\n" "\tActual object for call has address: <%p>\n" "\tEXPECTED calls that DID NOT happen related to function: foo\n" "\t\t(object address: %p)::foo -> no parameters\n" "\tACTUAL calls that DID happen related to function: foo\n" "\t\t(object address: %p)::foo -> no parameters", (void*) 0x01, (void*) 0x02, (void*) 0x03).asCharString(), failure.getMessage().asCharString()); } TEST(MockFailureTest, MockExpectedObjectDidntHappenFailure) { call1->withName("foo").onObject((void*) 0x02); call2->withName("foo").onObject((void*) 0x03); call2->callWasMade(1); call2->wasPassedToObject(); call3->withName("unrelated"); addAllToList(); MockExpectedObjectDidntHappenFailure failure(UtestShell::getCurrent(), "foo", *list); STRCMP_EQUAL(StringFromFormat( "Mock Failure: Expected call on object for function \"foo\" but it did not happen.\n" "\tEXPECTED calls that DID NOT happen related to function: foo\n" "\t\t(object address: %p)::foo -> no parameters\n" "\tACTUAL calls that DID happen related to function: foo\n" "\t\t(object address: %p)::foo -> no parameters", (void*) 0x2, (void*) 0x3).asCharString(), failure.getMessage().asCharString()); } cpputest-3.7.2/tests/CppUTestExt/MockFailureTest.h000644 000765 000024 00000006612 12521603460 023074 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestMockFailure_h #define D_TestMockFailure_h #define CHECK_EXPECTED_MOCK_FAILURE(expectedFailure) CHECK_EXPECTED_MOCK_FAILURE_LOCATION(expectedFailure, __FILE__, __LINE__) #define CHECK_NO_MOCK_FAILURE() CHECK_NO_MOCK_FAILURE_LOCATION(__FILE__, __LINE__) class MockFailureReporterForTest : public MockFailureReporter { public: SimpleString mockFailureString; virtual void failTest(const MockFailure& failure) { mockFailureString = failure.getMessage(); } static MockFailureReporterForTest* getReporter(); }; inline UtestShell* mockFailureTest() { return MockFailureReporterForTest::getReporter()->getTestToFail(); } inline SimpleString mockFailureString() { return MockFailureReporterForTest::getReporter()->mockFailureString; } inline void CLEAR_MOCK_FAILURE() { MockFailureReporterForTest::getReporter()->mockFailureString = ""; } inline void CHECK_EXPECTED_MOCK_FAILURE_LOCATION(const MockFailure& expectedFailure, const char* file, int line) { SimpleString expectedFailureString = expectedFailure.getMessage(); SimpleString actualFailureString = mockFailureString(); CLEAR_MOCK_FAILURE(); if (expectedFailureString != actualFailureString) { SimpleString error = "MockFailures are different.\n"; error += "Expected MockFailure:\n\t"; error += expectedFailureString; error += "\nActual MockFailure:\n\t"; error += actualFailureString; FAIL_LOCATION(error.asCharString(), file, line); } } inline void CHECK_NO_MOCK_FAILURE_LOCATION(const char* file, int line) { if (mockFailureString() != "") { SimpleString error = "Unexpected mock failure:\n"; error += mockFailureString(); CLEAR_MOCK_FAILURE(); FAIL_LOCATION(error.asCharString(), file, line); } CLEAR_MOCK_FAILURE(); } #endif cpputest-3.7.2/tests/CppUTestExt/MockPluginTest.cpp000644 000765 000024 00000011765 12521603460 023303 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockSupportPlugin.h" #include "MockFailureTest.h" TEST_GROUP(MockPlugin) { UtestShell *test; StringBufferTestOutput *output; TestResult *result; MockExpectedCallsList *expectationsList; MockCheckedExpectedCall *call; MockSupportPlugin *plugin; void setup() { mock().setMockFailureStandardReporter(MockFailureReporterForTest::getReporter()); test = new UtestShell("group", "name", "file", 1); output = new StringBufferTestOutput; result = new TestResult(*output); expectationsList = new MockExpectedCallsList; call = new MockCheckedExpectedCall; expectationsList->addExpectedCall(call); plugin = new MockSupportPlugin;; } void teardown() { delete test; delete output; delete result; delete expectationsList; delete call; delete plugin; CHECK_NO_MOCK_FAILURE(); mock().setMockFailureStandardReporter(NULL); } }; TEST(MockPlugin, checkExpectationsAndClearAtEnd) { call->withName("foobar"); MockExpectedCallsDidntHappenFailure expectedFailure(test, *expectationsList); mock().expectOneCall("foobar"); plugin->postTestAction(*test, *result); STRCMP_CONTAINS(expectedFailure.getMessage().asCharString(), output->getOutput().asCharString()) LONGS_EQUAL(0, mock().expectedCallsLeft()); // clear makes sure there are no memory leaks. } TEST(MockPlugin, checkExpectationsWorksAlsoWithHierachicalObjects) { call->withName("foobar").onObject((void*) 1); MockExpectedObjectDidntHappenFailure expectedFailure(test, "foobar", *expectationsList); mock("differentScope").expectOneCall("foobar").onObject((void*) 1); mock("differentScope").actualCall("foobar"); plugin->postTestAction(*test, *result); STRCMP_CONTAINS(expectedFailure.getMessage().asCharString(), output->getOutput().asCharString()) } class DummyComparator : public MockNamedValueComparator { public: bool isEqual(const void* object1, const void* object2) { return object1 == object2; } SimpleString valueToString(const void*) { return "string"; } }; TEST(MockPlugin, installComparatorRecordsTheComparatorButNotInstallsItYet) { DummyComparator comparator; plugin->installComparator("myType", comparator); mock().expectOneCall("foo").withParameterOfType("myType", "name", &comparator); mock().actualCall("foo").withParameterOfType("myType", "name", &comparator); MockNoWayToCompareCustomTypeFailure failure(test, "myType"); CHECK_EXPECTED_MOCK_FAILURE(failure); } TEST(MockPlugin, preTestActionWillEnableMultipleComparatorsToTheGlobalMockSupportSpace) { DummyComparator comparator; DummyComparator comparator2; plugin->installComparator("myType", comparator); plugin->installComparator("myOtherType", comparator2); plugin->preTestAction(*test, *result); mock().expectOneCall("foo").withParameterOfType("myType", "name", &comparator); mock().expectOneCall("foo").withParameterOfType("myOtherType", "name", &comparator); mock().actualCall("foo").withParameterOfType("myType", "name", &comparator); mock().actualCall("foo").withParameterOfType("myOtherType", "name", &comparator); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); LONGS_EQUAL(0, result->getFailureCount()); } cpputest-3.7.2/tests/CppUTestExt/MockSupport_cTest.cpp000644 000765 000024 00000024576 12521603460 024027 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestHarness_c.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTestExt/MockSupport_c.h" #include "MockSupport_cTestCFile.h" #include "CppUTestExt/OrderedTest.h" TEST_GROUP(MockSupport_c) { }; TEST(MockSupport_c, expectAndActualOneCall) { mock_c()->expectOneCall("boo"); mock_c()->actualCall("boo"); mock_c()->checkExpectations(); } TEST(MockSupport_c, expectAndActualParameters) { mock_c()->expectOneCall("boo")->withIntParameters("integer", 1)->withDoubleParameters("double", 1.0)-> withStringParameters("string", "string")->withPointerParameters("pointer", (void*) 1); mock_c()->actualCall("boo")->withIntParameters("integer", 1)->withDoubleParameters("double", 1.0)-> withStringParameters("string", "string")->withPointerParameters("pointer", (void*) 1); } extern "C"{ static int typeNameIsEqual(const void* object1, const void* object2) { return object1 == object2; } static char* typeNameValueToString(const void* PUNUSED(object)) { return (char*) "valueToString"; } } TEST(MockSupport_c, expectAndActualParametersOnObject) { mock_c()->installComparator("typeName", typeNameIsEqual, typeNameValueToString); mock_c()->expectOneCall("boo")->withParameterOfType("typeName", "name", (const void*) 1); mock_c()->actualCall("boo")->withParameterOfType("typeName", "name", (const void*) 1); mock_c()->checkExpectations(); mock_c()->removeAllComparators(); } TEST(MockSupport_c, unsignedIntParameter) { mock_c()->expectOneCall("foo")->withUnsignedIntParameters("p", 1); mock_c()->actualCall("foo")->withUnsignedIntParameters("p", 1); } TEST(MockSupport_c, longIntParameter) { mock_c()->expectOneCall("foo")->withLongIntParameters("p", 1); mock_c()->actualCall("foo")->withLongIntParameters("p", 1); } TEST(MockSupport_c, unsignedLongIntParameter) { mock_c()->expectOneCall("foo")->withUnsignedLongIntParameters("p", 1); mock_c()->actualCall("foo")->withUnsignedLongIntParameters("p", 1); } TEST(MockSupport_c, outputParameters) { int param = 1; int retval = 2; mock_c()->expectOneCall("foo")->withOutputParameterReturning("out", &retval, sizeof(retval)); mock_c()->actualCall("foo")->withOutputParameter("out", ¶m); mock_c()->checkExpectations(); LONGS_EQUAL(2, param); LONGS_EQUAL(2, retval); } TEST(MockSupport_c, outputParameters_differentType) { long param = 1; long retval = 2; mock_c()->expectOneCall("foo")->withOutputParameterReturning("out", &retval, sizeof(retval)); mock_c()->actualCall("foo")->withOutputParameter("out", ¶m); mock_c()->checkExpectations(); LONGS_EQUAL(2, param); LONGS_EQUAL(2, retval); } TEST(MockSupport_c, returnUnsignedIntValue) { unsigned int expected_value = 7; mock_c()->expectOneCall("boo")->andReturnUnsignedIntValue(expected_value); LONGS_EQUAL(expected_value, mock_c()->actualCall("boo")->returnValue().value.unsignedIntValue); LONGS_EQUAL(MOCKVALUETYPE_UNSIGNED_INTEGER, mock_c()->returnValue().type); } TEST(MockSupport_c, returnIntValue) { int expected_value = 10; mock_c()->expectOneCall("boo")->andReturnIntValue(expected_value); LONGS_EQUAL(expected_value, mock_c()->actualCall("boo")->returnValue().value.intValue); LONGS_EQUAL(MOCKVALUETYPE_INTEGER, mock_c()->returnValue().type); } TEST(MockSupport_c, returnLongIntValue) { long int expected_value = 10; mock_c()->expectOneCall("boo")->andReturnLongIntValue(expected_value); LONGS_EQUAL(expected_value, mock_c()->actualCall("boo")->returnValue().value.longIntValue); LONGS_EQUAL(MOCKVALUETYPE_LONG_INTEGER, mock_c()->returnValue().type); } TEST(MockSupport_c, returnUnsignedLongIntValue) { unsigned long int expected_value = 10; mock_c()->expectOneCall("boo")->andReturnUnsignedLongIntValue(expected_value); LONGS_EQUAL(expected_value, mock_c()->actualCall("boo")->returnValue().value.unsignedLongIntValue); LONGS_EQUAL(MOCKVALUETYPE_UNSIGNED_LONG_INTEGER, mock_c()->returnValue().type); } TEST(MockSupport_c, returnDoubleValue) { mock_c()->expectOneCall("boo")->andReturnDoubleValue(1.0); DOUBLES_EQUAL(1.0, mock_c()->actualCall("boo")->returnValue().value.doubleValue, 0.005); LONGS_EQUAL(MOCKVALUETYPE_DOUBLE, mock_c()->returnValue().type); } TEST(MockSupport_c, returnStringValue) { mock_c()->expectOneCall("boo")->andReturnStringValue("hello world"); STRCMP_EQUAL("hello world", mock_c()->actualCall("boo")->returnValue().value.stringValue); LONGS_EQUAL(MOCKVALUETYPE_STRING, mock_c()->returnValue().type); } TEST(MockSupport_c, returnPointerValue) { mock_c()->expectOneCall("boo")->andReturnPointerValue((void*) 10); POINTERS_EQUAL((void*) 10, mock_c()->actualCall("boo")->returnValue().value.pointerValue); LONGS_EQUAL(MOCKVALUETYPE_POINTER, mock_c()->returnValue().type); } TEST(MockSupport_c, returnConstPointerValue) { mock_c()->expectOneCall("boo")->andReturnConstPointerValue((const void*) 10); POINTERS_EQUAL((const void*) 10, mock_c()->actualCall("boo")->returnValue().value.constPointerValue); LONGS_EQUAL(MOCKVALUETYPE_CONST_POINTER, mock_c()->returnValue().type); } TEST(MockSupport_c, MockSupportWithScope) { mock_scope_c("scope")->expectOneCall("boo"); LONGS_EQUAL(0, mock_scope_c("other")->expectedCallsLeft()); LONGS_EQUAL(1, mock_scope_c("scope")->expectedCallsLeft()); mock_scope_c("scope")->actualCall("boo"); } TEST(MockSupport_c, MockSupportSetIntData) { mock_c()->setIntData("integer", 10); LONGS_EQUAL(10, mock_c()->getData("integer").value.intValue); } TEST(MockSupport_c, MockSupportSetDoubleData) { mock_c()->setDoubleData("double", 1.0); DOUBLES_EQUAL(1.00, mock_c()->getData("double").value.doubleValue, 0.05); } TEST(MockSupport_c, MockSupportSetStringData) { mock_c()->setStringData("string", "hello world"); STRCMP_EQUAL("hello world", mock_c()->getData("string").value.stringValue); } TEST(MockSupport_c, MockSupportSetPointerData) { mock_c()->setPointerData("pointer", (void*) 1); POINTERS_EQUAL((void*) 1, mock_c()->getData("pointer").value.pointerValue); } TEST(MockSupport_c, MockSupportSetConstPointerData) { mock_c()->setConstPointerData("constPointer", (const void*) 1); POINTERS_EQUAL((const void*) 1, mock_c()->getData("constPointer").value.constPointerValue); } TEST(MockSupport_c, MockSupportSetDataObject) { mock_c()->setDataObject("name", "type", (void*) 1); POINTERS_EQUAL((void*) 1, mock_c()->getData("name").value.objectValue); } TEST(MockSupport_c, WorksInCFile) { all_mock_support_c_calls(); } static bool destructorWasCalled = false; static void failedCallToMockC() { SetBooleanOnDestructorCall setOneDestructor(destructorWasCalled); mock_c()->actualCall("Not a call"); } // LCOV_EXCL_LINE // Silly wrapper because of a test that only fails in Visual C++ due to different // destructor behaviors #ifdef _MSC_VER #define MSC_SWITCHED_TEST(testGroup, testName) IGNORE_TEST(testGroup, testName) #else #define MSC_SWITCHED_TEST(testGroup, testName) TEST(testGroup, testName) #endif MSC_SWITCHED_TEST(MockSupport_c, NoExceptionsAreThrownWhenAMock_cCallFailed) { TestTestingFixture fixture; fixture.setTestFunction(failedCallToMockC); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); // Odd behavior in Visual C++, destructor still gets called here CHECK(!destructorWasCalled); } static bool cpputestHasCrashed; static void crashMethod() { cpputestHasCrashed = true; } TEST_ORDERED(MockSupport_c, shouldCrashOnFailure, 21) { cpputestHasCrashed = false; TestTestingFixture fixture; UtestShell::setCrashMethod(crashMethod); mock_c()->crashOnFailure(true); fixture.setTestFunction(failedCallToMockC); fixture.runAllTests(); CHECK(cpputestHasCrashed); UtestShell::resetCrashMethod(); mock_c()->crashOnFailure(false); } TEST_ORDERED(MockSupport_c, nextTestShouldNotCrashOnFailure, 22) { cpputestHasCrashed = false; TestTestingFixture fixture; UtestShell::setCrashMethod(crashMethod); fixture.setTestFunction(failedCallToMockC); fixture.runAllTests(); CHECK_FALSE(cpputestHasCrashed); UtestShell::resetCrashMethod(); } static void failingCallToMockCWithParameterOfType_() { mock_c()->expectOneCall("bar")->withParameterOfType("typeName", "name", (const void*) 1); mock_c()->actualCall("bar")->withParameterOfType("typeName", "name", (const void*) 2); } // LCOV_EXCL_LINE TEST(MockSupport_c, failureWithParameterOfTypeCoversValueToString) { TestTestingFixture fixture; mock_c()->installComparator("typeName", typeNameIsEqual, typeNameValueToString); fixture.setTestFunction(failingCallToMockCWithParameterOfType_); fixture.runAllTests(); fixture.assertPrintContains("typeName name: "); mock_c()->removeAllComparators(); } cpputest-3.7.2/tests/CppUTestExt/MockSupport_cTestCFile.c000644 000765 000024 00000007320 12521603460 024356 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTestExt/MockSupport_c.h" #include "MockSupport_cTestCFile.h" static int typeNameIsEqual(const void* object1, const void* object2) { return object1 == object2; } static char* typeNameValueToString(const void* object) { return (char*) object; } void all_mock_support_c_calls(void) { mock_c()->expectOneCall("boo"); mock_c()->actualCall("boo"); mock_c()->checkExpectations(); mock_c()->expectOneCall("boo")->withIntParameters("integer", 1)->withDoubleParameters("double", 1.0)-> withStringParameters("string", "string")->withPointerParameters("pointer", (void*) 1)-> withConstPointerParameters("constpointer", (const void*) 1); mock_c()->actualCall("boo")->withIntParameters("integer", 1)->withDoubleParameters("double", 1.0)-> withStringParameters("string", "string")->withPointerParameters("pointer", (void*) 1)-> withConstPointerParameters("constpointer", (const void*) 1); mock_c()->installComparator("typeName", typeNameIsEqual, typeNameValueToString); mock_c()->expectOneCall("boo")->withParameterOfType("typeName", "name", (void*) 1); mock_c()->actualCall("boo")->withParameterOfType("typeName", "name", (void*) 1); mock_c()->clear(); mock_c()->removeAllComparators(); mock_c()->expectOneCall("boo")->andReturnIntValue(10); mock_c()->actualCall("boo")->returnValue(); mock_c()->returnValue(); mock_c()->expectOneCall("boo2")->andReturnDoubleValue(1.0); mock_c()->actualCall("boo2")->returnValue(); mock_c()->returnValue(); mock_c()->expectOneCall("boo3")->andReturnStringValue("hello world"); mock_c()->actualCall("boo3")->returnValue(); mock_c()->returnValue(); mock_c()->expectOneCall("boo4")->andReturnPointerValue((void*) 10); mock_c()->actualCall("boo4")->returnValue(); mock_c()->returnValue(); mock_c()->disable(); mock_c()->actualCall("disabled"); mock_c()->enable(); mock_c()->checkExpectations(); mock_scope_c("scope")->expectOneCall("boo"); mock_scope_c("other")->expectedCallsLeft(); mock_scope_c("scope")->expectedCallsLeft(); mock_scope_c("scope")->actualCall("boo"); } cpputest-3.7.2/tests/CppUTestExt/MockSupport_cTestCFile.h000644 000765 000024 00000003407 12521603460 024365 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __TestMockSupportc_CFile__h #define __TestMockSupportc_CFile__h #ifdef __cplusplus extern "C" { #endif extern void all_mock_support_c_calls(void); #ifdef __cplusplus } #endif #endif cpputest-3.7.2/tests/CppUTestExt/MockSupportTest.cpp000644 000765 000024 00000204262 12521603460 023515 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockExpectedCall.h" #include "CppUTestExt/MockFailure.h" #include "MockFailureTest.h" TEST_GROUP(MockSupportTest) { MockExpectedCallsList *expectationsList; void setup() { mock().setMockFailureStandardReporter(MockFailureReporterForTest::getReporter()); expectationsList = new MockExpectedCallsList; } void teardown() { mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); expectationsList->deleteAllExpectationsAndClearList(); delete expectationsList; mock().setMockFailureStandardReporter(NULL); } MockCheckedExpectedCall* addFunctionToExpectationsList(const SimpleString& name) { MockCheckedExpectedCall* newCall = new MockCheckedExpectedCall; newCall->withName(name); expectationsList->addExpectedCall(newCall); return newCall; } MockCheckedExpectedCall* addFunctionToExpectationsList(const SimpleString& name, int order) { MockCheckedExpectedCall* newCall = new MockCheckedExpectedCall; newCall->withName(name); newCall->withCallOrder(order); expectationsList->addExpectedCall(newCall); return newCall; } }; TEST(MockSupportTest, clear) { mock().expectOneCall("func"); mock().clear(); CHECK(! mock().expectedCallsLeft()); } TEST(MockSupportTest, checkExpectationsDoesntFail) { mock().checkExpectations(); } TEST(MockSupportTest, checkExpectationsClearsTheExpectations) { addFunctionToExpectationsList("foobar"); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), *expectationsList); mock().expectOneCall("foobar"); mock().checkExpectations(); CHECK(! mock().expectedCallsLeft()); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, exceptACallThatHappens) { mock().expectOneCall("func"); mock().actualCall("func"); CHECK(! mock().expectedCallsLeft()); } TEST(MockSupportTest, exceptACallInceasesExpectedCallsLeft) { mock().expectOneCall("func"); CHECK(mock().expectedCallsLeft()); mock().clear(); } TEST(MockSupportTest, unexpectedCallHappened) { MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "func", *expectationsList); mock().actualCall("func"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, ignoreOtherCallsExceptForTheExpectedOne) { mock().expectOneCall("foo"); mock().ignoreOtherCalls(); mock().actualCall("bar").withParameter("foo", 1);; CHECK_NO_MOCK_FAILURE(); mock().clear(); } TEST(MockSupportTest, ignoreOtherCallsDoesntIgnoreMultipleCallsOfTheSameFunction) { mock().expectOneCall("foo"); mock().ignoreOtherCalls(); mock().actualCall("bar"); mock().actualCall("foo"); mock().actualCall("foo"); addFunctionToExpectationsList("foo")->callWasMade(1); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "foo", *expectationsList); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, ignoreOtherStillFailsIfExpectedOneDidntHappen) { mock().expectOneCall("foo"); mock().ignoreOtherCalls(); mock().checkExpectations(); addFunctionToExpectationsList("foo"); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), *expectationsList); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, expectMultipleCallsThatHappen) { mock().expectOneCall("foo"); mock().expectOneCall("foo"); mock().actualCall("foo"); mock().actualCall("foo"); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, strictOrderObserved) { mock().strictOrder(); mock().expectOneCall("foo1"); mock().expectOneCall("foo2"); mock().actualCall("foo1"); mock().actualCall("foo2"); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, someStrictOrderObserved) { mock().expectOneCall("foo3").withCallOrder(3); mock().expectOneCall("foo1"); mock().expectOneCall("foo2"); mock().actualCall("foo2"); mock().actualCall("foo1"); mock().actualCall("foo3"); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, strictOrderViolated) { mock().strictOrder(); addFunctionToExpectationsList("foo1", 1)->callWasMade(1); addFunctionToExpectationsList("foo1", 2)->callWasMade(3); addFunctionToExpectationsList("foo2", 3)->callWasMade(2); MockCallOrderFailure expectedFailure(mockFailureTest(), *expectationsList); mock().expectOneCall("foo1"); mock().expectOneCall("foo1"); mock().expectOneCall("foo2"); mock().actualCall("foo1"); mock().actualCall("foo2"); mock().actualCall("foo1"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, strictOrderViolatedWorksHierarchically) { mock().strictOrder(); mock("bla").strictOrder(); addFunctionToExpectationsList("foo1", 1)->callWasMade(2); addFunctionToExpectationsList("foo2", 2)->callWasMade(1); MockCallOrderFailure expectedFailure(mockFailureTest(), *expectationsList); mock("bla").expectOneCall("foo1"); mock().expectOneCall("foo1"); mock().expectOneCall("foo2"); mock("bla").actualCall("foo1"); mock().actualCall("foo2"); mock().actualCall("foo1"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, strictOrderViolatedWithinAScope) { mock().strictOrder(); addFunctionToExpectationsList("foo1", 1)->callWasMade(2); addFunctionToExpectationsList("foo2", 2)->callWasMade(1); MockCallOrderFailure expectedFailure(mockFailureTest(), *expectationsList); mock("scope").expectOneCall("foo1"); mock("scope").expectOneCall("foo2"); mock("scope").actualCall("foo2"); mock("scope").actualCall("foo1"); mock("scope").checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, strictOrderNotViolatedAcrossScopes) { mock("mock1").strictOrder(); mock("mock2").strictOrder(); mock("mock1").expectOneCall("foo1"); mock("mock2").expectOneCall("foo2"); mock("mock1").actualCall("foo1"); mock("mock2").actualCall("foo2"); mock("mock1").checkExpectations(); mock("mock2").checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, strictOrderViolatedAcrossScopes) { mock("mock1").strictOrder(); mock("mock2").strictOrder(); mock("mock1").expectOneCall("foo1"); mock("mock2").expectOneCall("foo2"); mock("mock2").actualCall("foo2"); mock("mock1").actualCall("foo1"); mock("mock1").checkExpectations(); mock("mock2").checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, usingNCalls) { mock().strictOrder(); mock().expectOneCall("foo1"); mock().expectNCalls(2, "foo2"); mock().expectOneCall("foo1"); mock().actualCall("foo1"); mock().actualCall("foo2"); mock().actualCall("foo2"); mock().actualCall("foo1"); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, expectOneCallHoweverMultipleHappened) { addFunctionToExpectationsList("foo")->callWasMade(1); addFunctionToExpectationsList("foo")->callWasMade(2); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "foo", *expectationsList); mock().expectOneCall("foo"); mock().expectOneCall("foo"); mock().actualCall("foo"); mock().actualCall("foo"); mock().actualCall("foo"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, expectOneUnsignedIntegerParameterAndValue) { unsigned int value = 14400; mock().expectOneCall("foo").withParameter("parameter", value); mock().actualCall("foo").withParameter("parameter", value); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, expectOneIntegerParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", 10); mock().actualCall("foo").withParameter("parameter", 10); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, mismatchedIntegerTypesIntAndLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (int)1); mock().actualCall("foo").withParameter("parameter", (long)1); mock().expectOneCall("foo").withParameter("parameter", (long)1); mock().actualCall("foo").withParameter("parameter", (int)1); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, mismatchedIntegerTypesIntAndUnsignedAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (int)1); mock().actualCall("foo").withParameter("parameter", (unsigned)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned)1); mock().actualCall("foo").withParameter("parameter", (int)1); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, mismatchedIntegerTypesIntAndUnsignedLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (int)1); mock().actualCall("foo").withParameter("parameter", (unsigned long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long)1); mock().actualCall("foo").withParameter("parameter", (int)1); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, mismatchedIntegerTypesUnsignedAndLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (unsigned)1); mock().actualCall("foo").withParameter("parameter", (long)1); mock().expectOneCall("foo").withParameter("parameter", (long)1); mock().actualCall("foo").withParameter("parameter", (unsigned)1); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, mismatchedIntegerTypesUnsignedAndUnsignedLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (unsigned)1); mock().actualCall("foo").withParameter("parameter", (unsigned long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long)1); mock().actualCall("foo").withParameter("parameter", (unsigned)1); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, mismatchedIntegerTypesLongAndUnsignedLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (long)1); mock().actualCall("foo").withParameter("parameter", (unsigned long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long)1); mock().actualCall("foo").withParameter("parameter", (long)1); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, longAndUnsignedLongWithSameBitRepresentationShouldNotBeTreatedAsEqual) { MockNamedValue parameter("parameter"); parameter.setValue((unsigned long)-1); addFunctionToExpectationsList("foo")->withParameter("parameter", (long)-1); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, *expectationsList); mock().expectOneCall("foo").withParameter("parameter", (long)-1); mock().actualCall("foo").withParameter("parameter", (unsigned long)-1); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, unsignedLongAndLongWithSameBitRepresentationShouldnotBeTreatedAsEqual) { MockNamedValue parameter("parameter"); parameter.setValue((long)-1); addFunctionToExpectationsList("foo")->withParameter("parameter", (unsigned long)-1); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, *expectationsList); mock().expectOneCall("foo").withParameter("parameter", (unsigned long)-1); mock().actualCall("foo").withParameter("parameter", (long)-1); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, expectOneDoubleParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", 1.0); mock().actualCall("foo").withParameter("parameter", 1.0); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, expectOneStringParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", "string"); mock().actualCall("foo").withParameter("parameter", "string"); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, expectOnePointerParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", (void*) 0x01); mock().actualCall("foo").withParameter("parameter", (void*) 0x01); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, expectOneConstPointerParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", (const void*) 0x01); mock().actualCall("foo").withParameter("parameter", (const void*) 0x01); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, expectOneStringParameterAndValueFails) { MockNamedValue parameter("parameter"); parameter.setValue("different"); addFunctionToExpectationsList("foo")->withParameter("parameter", "string"); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, *expectationsList); mock().expectOneCall("foo").withParameter("parameter", "string"); mock().actualCall("foo").withParameter("parameter", "different"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, expectOneUnsignedIntegerParameterAndFailsDueToParameterName) { unsigned int value = 7; MockNamedValue parameter("different"); parameter.setValue(value); addFunctionToExpectationsList("foo")->withParameter("parameter", value); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, *expectationsList); mock().expectOneCall("foo").withParameter("parameter", value); mock().actualCall("foo").withParameter("different", value); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, expectOneIntegerParameterAndFailsDueToParameterName) { MockNamedValue parameter("different"); parameter.setValue(10); addFunctionToExpectationsList("foo")->withParameter("parameter", 10); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, *expectationsList); mock().expectOneCall("foo").withParameter("parameter", 10); mock().actualCall("foo").withParameter("different", 10); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, expectOneUnsignedIntegerParameterAndFailsDueToValue) { unsigned int actual_value = 8; unsigned int expected_value = actual_value + 1; MockNamedValue parameter("parameter"); parameter.setValue(actual_value); addFunctionToExpectationsList("foo")->withParameter("parameter", expected_value); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, *expectationsList); mock().expectOneCall("foo").withParameter("parameter", expected_value); mock().actualCall("foo").withParameter("parameter", actual_value); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, expectOneIntegerParameterAndFailsDueToValue) { MockNamedValue parameter("parameter"); parameter.setValue(8); addFunctionToExpectationsList("foo")->withParameter("parameter", 10); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, *expectationsList); mock().expectOneCall("foo").withParameter("parameter", 10); mock().actualCall("foo").withParameter("parameter", 8); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, expectOneIntegerParameterAndFailsDueToTypes) { MockNamedValue parameter("parameter"); parameter.setValue("heh"); addFunctionToExpectationsList("foo")->withParameter("parameter", 10); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, *expectationsList); mock().expectOneCall("foo").withParameter("parameter", 10); mock().actualCall("foo").withParameter("parameter", "heh"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, expectMultipleCallsWithDifferentParametersThatHappenOutOfOrder) { mock().expectOneCall("foo").withParameter("p1", 1); mock().expectOneCall("foo").withParameter("p1", 2); mock().actualCall("foo").withParameter("p1", 2); mock().actualCall("foo").withParameter("p1", 1); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, expectMultipleCallsWithMultipleDifferentParametersThatHappenOutOfOrder) { mock().expectOneCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().expectOneCall("foo").withParameter("p1", 1).withParameter("p2", 20); mock().actualCall("foo").withParameter("p1", 1).withParameter("p2", 20); mock().actualCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, twiceCalledWithSameParameters) { mock().expectOneCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().expectOneCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().actualCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().actualCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, calledWithoutParameters) { addFunctionToExpectationsList("foo")->withParameter("p1", 1); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foo", *expectationsList); mock().expectOneCall("foo").withParameter("p1", 1); mock().actualCall("foo"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, ignoreOtherParameters) { mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters(); mock().actualCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, ignoreOtherParametersButStillPassAll) { mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters(); mock().actualCall("foo").withParameter("p1", 1); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, ignoreOtherParametersButExpectedParameterDidntHappen) { addFunctionToExpectationsList("foo")->withParameter("p1", 1).ignoreOtherParameters(); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foo", *expectationsList); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters(); mock().actualCall("foo").withParameter("p2", 2).withParameter("p3", 3).withParameter("p4", 4); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, ignoreOtherParametersMultipleCalls) { mock().expectOneCall("foo").ignoreOtherParameters(); mock().expectOneCall("foo").ignoreOtherParameters(); mock().actualCall("foo").withParameter("p2", 2).withParameter("p3", 3).withParameter("p4", 4); LONGS_EQUAL(1, mock().expectedCallsLeft()); mock().actualCall("foo").withParameter("p2", 2).withParameter("p3", 3).withParameter("p4", 4); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, ignoreOtherParametersMultipleCallsButOneDidntHappen) { MockCheckedExpectedCall* call = addFunctionToExpectationsList("boo"); call->ignoreOtherParameters(); call->callWasMade(1); call->parametersWereIgnored(); call->ignoreOtherParameters(); addFunctionToExpectationsList("boo")->ignoreOtherParameters(); mock().expectOneCall("boo").ignoreOtherParameters(); mock().expectOneCall("boo").ignoreOtherParameters(); mock().actualCall("boo"); mock().checkExpectations(); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), *expectationsList); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, newCallStartsWhileNotAllParametersWerePassed) { addFunctionToExpectationsList("foo")->withParameter("p1", 1); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foo", *expectationsList); mock().expectOneCall("foo").withParameter("p1", 1); mock().actualCall("foo"); mock().actualCall("foo").withParameter("p1", 1);; CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, threeExpectedAndActual) { mock().expectOneCall("function1"); mock().expectOneCall("function2"); mock().expectOneCall("function3"); mock().actualCall("function1"); mock().actualCall("function2"); mock().actualCall("function3"); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } class MyTypeForTesting { public: MyTypeForTesting(int val) : value(val){} int value; }; class MyTypeForTestingComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void* object1, const void* object2) { return ((MyTypeForTesting*)object1)->value == ((MyTypeForTesting*)object2)->value; } virtual SimpleString valueToString(const void* object) { return StringFrom(((MyTypeForTesting*)object)->value); } }; TEST(MockSupportTest, customObjectParameterFailsWhenNotHavingAComparisonRepository) { MyTypeForTesting object(1); mock().expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); MockNoWayToCompareCustomTypeFailure expectedFailure(mockFailureTest(), "MyTypeForTesting"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, customObjectParameterSucceeds) { MyTypeForTesting object(1); MyTypeForTestingComparator comparator; mock().installComparator("MyTypeForTesting", comparator); mock().expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); mock().removeAllComparators(); } TEST(MockSupportTest, outputParameterSucceeds) { int param = 1; int retval = 2; mock().expectOneCall("function").withOutputParameterReturning("parameterName", &retval, sizeof(retval)); mock().actualCall("function").withOutputParameter("parameterName", ¶m); CHECK_EQUAL(param, 2); CHECK_EQUAL(retval, 2); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, noActualCallForOutputParameter) { int output; mock().expectOneCall("foo").withOutputParameterReturning("output", &output, sizeof(output)); addFunctionToExpectationsList("foo")->withOutputParameterReturning("output", &output, sizeof(output)); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), *expectationsList); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, unexpectedOutputParameter) { int param; mock().expectOneCall("foo"); mock().actualCall("foo").withOutputParameter("parameterName", ¶m); addFunctionToExpectationsList("foo")->callWasMade(1); MockNamedValue parameter("parameterName"); parameter.setValue(¶m); MockUnexpectedOutputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, *expectationsList); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, outputParameterMissing) { int output; mock().expectOneCall("foo").withOutputParameterReturning("output", &output, sizeof(output)); mock().actualCall("foo"); addFunctionToExpectationsList("foo")->withOutputParameterReturning("output", &output, sizeof(output)); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foo", *expectationsList); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, twoOutputParameters) { int param1 = 55; int retval1 = 1; int param2 = 77; int retval2 = 2; mock().expectOneCall("function").withOutputParameterReturning("parameterName", &retval1, sizeof(retval1)).withParameter("id", 1); mock().expectOneCall("function").withOutputParameterReturning("parameterName", &retval2, sizeof(retval2)).withParameter("id", 2); mock().actualCall("function").withOutputParameter("parameterName", ¶m1).withParameter("id", 1); mock().actualCall("function").withOutputParameter("parameterName", ¶m2).withParameter("id", 2); CHECK_EQUAL(retval1, param1); CHECK_EQUAL(retval2, param2); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, twoInterleavedOutputParameters) { int param1 = 55; int retval1 = 1; int param2 = 77; int retval2 = 2; mock().expectOneCall("function").withOutputParameterReturning("parameterName", &retval1, sizeof(retval1)).withParameter("id", 1); mock().expectOneCall("function").withOutputParameterReturning("parameterName", &retval2, sizeof(retval2)).withParameter("id", 2); mock().actualCall("function").withOutputParameter("parameterName", ¶m2).withParameter("id", 2); mock().actualCall("function").withOutputParameter("parameterName", ¶m1).withParameter("id", 1); CHECK_EQUAL(retval1, param1); CHECK_EQUAL(retval2, param2); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, twoDifferentOutputParametersInSameFunctionCallSucceeds) { int param1 = 1; int param2 = 1; int retval1 = 2; int retval2 = 3; mock().expectOneCall("foo") .withOutputParameterReturning("bar", &retval1, sizeof(retval1)) .withOutputParameterReturning("foobar", &retval2, sizeof(retval2)); mock().actualCall("foo") .withOutputParameter("bar", ¶m1) .withOutputParameter("foobar", ¶m2); CHECK_EQUAL(2, retval1); CHECK_EQUAL(2, param1); CHECK_EQUAL(3, retval2); CHECK_EQUAL(3, param2); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, outputAndIntParametersOfSameNameInDifferentFunctionCallsOfSameFunctionSucceeds) { int param = 1; int retval = 2; mock().expectOneCall("foo").withOutputParameterReturning("bar", &retval, sizeof(retval)); mock().expectOneCall("foo").withIntParameter("bar", 25); mock().actualCall("foo").withOutputParameter("bar", ¶m); mock().actualCall("foo").withIntParameter("bar", 25); CHECK_EQUAL(2, retval); CHECK_EQUAL(2, param); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, twoOutputParameterOfSameNameInDifferentFunctionCallsOfSameFunctionSucceeds) { int param1 = 1; int param2 = 1; int retval1 = 2; int retval2 = 3; mock().expectOneCall("foo").withOutputParameterReturning("bar", &retval1, sizeof(retval1)); mock().expectOneCall("foo").withOutputParameterReturning("bar", &retval2, sizeof(retval2)); mock().actualCall("foo").withOutputParameter("bar", ¶m1); mock().actualCall("foo").withOutputParameter("bar", ¶m2); CHECK_EQUAL(2, retval1); CHECK_EQUAL(2, param1); CHECK_EQUAL(3, retval2); CHECK_EQUAL(3, param2); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, twoOutputParametersOfSameNameInDifferentFunctionsSucceeds) { int param = 1; int retval = 2; mock().expectOneCall("foo1").withOutputParameterReturning("bar", &retval, sizeof(retval)); mock().expectOneCall("foo2").withIntParameter("bar", 25); mock().actualCall("foo1").withOutputParameter("bar", ¶m); mock().actualCall("foo2").withIntParameter("bar", 25); MyTypeForTestingComparator comparator; CHECK_EQUAL(2, retval); CHECK_EQUAL(2, param); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, outputAndInputParameter) { int return_value = 5; int returned_value = 7; mock().expectOneCall("foo").withParameter("bar", 10).withOutputParameterReturning("bar", &return_value, sizeof(return_value)); mock().actualCall("foo").withParameter("bar", 10).withOutputParameter("bar", &returned_value); LONGS_EQUAL(5, returned_value); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, outputParameterTraced) { mock().tracing(true); int param = 1; mock().actualCall("someFunc").withOutputParameter("someParameter", ¶m); mock().checkExpectations(); STRCMP_CONTAINS("Function name:someFunc someParameter:", mock().getTraceOutput()); } TEST(MockSupportTest, outputParameterWithIgnoredParameters) { int param = 1; int retval = 2; mock().expectOneCall("foo").withOutputParameterReturning("bar", ¶m, sizeof(param)).ignoreOtherParameters(); mock().actualCall("foo").withOutputParameter("bar", &retval).withParameter("other", 1); LONGS_EQUAL(param, retval); } static bool myTypeIsEqual(const void* object1, const void* object2) { return ((MyTypeForTesting*)object1)->value == ((MyTypeForTesting*)object2)->value; } static SimpleString myTypeValueToString(const void* object) { return StringFrom(((MyTypeForTesting*)object)->value); } TEST(MockSupportTest, customObjectWithFunctionComparator) { MyTypeForTesting object(1); MockFunctionComparator comparator(myTypeIsEqual, myTypeValueToString); mock().installComparator("MyTypeForTesting", comparator); mock().expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); mock().removeAllComparators(); } TEST(MockSupportTest, customObjectWithFunctionComparatorThatFailsCoversValueToString) { MyTypeForTesting object(5); MockFunctionComparator comparator(myTypeIsEqual, myTypeValueToString); mock().installComparator("MyTypeForTesting", comparator); addFunctionToExpectationsList("function")->withParameterOfType("MyTypeForTesting", "parameterName", &object); MockExpectedCallsDidntHappenFailure failure(UtestShell::getCurrent(), *expectationsList); mock().expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE_LOCATION(failure, __FILE__, __LINE__); } TEST(MockSupportTest, disableEnable) { mock().disable(); mock().expectOneCall("function"); mock().actualCall("differenFunction"); CHECK(! mock().expectedCallsLeft()); mock().enable(); mock().expectOneCall("function"); CHECK(mock().expectedCallsLeft()); mock().actualCall("function"); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, setDataForUnsignedIntegerValues) { unsigned int expected_data = 7; mock().setData("data", expected_data); LONGS_EQUAL(expected_data, mock().getData("data").getUnsignedIntValue()); } TEST(MockSupportTest, setDataForIntegerValues) { int expected_data = 10; mock().setData("data", expected_data); LONGS_EQUAL(expected_data, mock().getData("data").getIntValue()); } TEST(MockSupportTest, hasDataBeenSet) { CHECK(!mock().hasData("data")); mock().setData("data", 10); CHECK(mock().hasData("data")); } TEST(MockSupportTest, dataCanBeChanged) { mock().setData("data", 10); mock().setData("data", 15); LONGS_EQUAL(15, mock().getData("data").getIntValue()); } TEST(MockSupportTest, uninitializedData) { LONGS_EQUAL(0, mock().getData("nonexisting").getIntValue()); STRCMP_EQUAL("int", mock().getData("nonexisting").getType().asCharString()); } TEST(MockSupportTest, setMultipleData) { mock().setData("data", 1); mock().setData("data2", 10); LONGS_EQUAL(1, mock().getData("data").getIntValue()); LONGS_EQUAL(10, mock().getData("data2").getIntValue()); } TEST(MockSupportTest, setDataString) { mock().setData("data", "string"); STRCMP_EQUAL("string", mock().getData("data").getStringValue()); } TEST(MockSupportTest, setDataDouble) { mock().setData("data", 1.0); DOUBLES_EQUAL(1.0, mock().getData("data").getDoubleValue(), 0.05); } TEST(MockSupportTest, setDataPointer) { void * ptr = (void*) 0x001; mock().setData("data", ptr); POINTERS_EQUAL(ptr, mock().getData("data").getPointerValue()); } TEST(MockSupportTest, setConstDataPointer) { const void * ptr = (const void*) 0x001; mock().setData("data", ptr); POINTERS_EQUAL(ptr, mock().getData("data").getConstPointerValue()); } TEST(MockSupportTest, setDataObject) { void * ptr = (void*) 0x001; mock().setDataObject("data", "type", ptr); POINTERS_EQUAL(ptr, mock().getData("data").getObjectPointer()); STRCMP_EQUAL("type", mock().getData("data").getType().asCharString()); } TEST(MockSupportTest, getMockSupportScope) { MockSupport* mock1 = mock().getMockSupportScope("name"); MockSupport* mock2 = mock().getMockSupportScope("differentName"); CHECK(!mock().hasData("name")); CHECK(mock1 != mock2); POINTERS_EQUAL(mock1, mock().getMockSupportScope("name")); CHECK(mock1 != &mock()); } TEST(MockSupportTest, usingTwoMockSupportsByName) { mock("first").expectOneCall("boo"); LONGS_EQUAL(0, mock("other").expectedCallsLeft()); LONGS_EQUAL(1, mock("first").expectedCallsLeft()); mock("first").clear(); } TEST(MockSupportTest, EnableDisableWorkHierarchically) { mock("first"); mock().disable(); mock("first").expectOneCall("boo"); LONGS_EQUAL(0, mock("first").expectedCallsLeft()); mock().enable(); mock("first").expectOneCall("boo"); LONGS_EQUAL(1, mock("first").expectedCallsLeft()); mock("first").clear(); } TEST(MockSupportTest, EnableDisableWorkHierarchicallyWhenSupportIsDynamicallyCreated) { mock().disable(); mock("first").expectOneCall("boo"); LONGS_EQUAL(0, mock("first").expectedCallsLeft()); mock().enable(); mock("second").expectOneCall("boo"); LONGS_EQUAL(1, mock("second").expectedCallsLeft()); mock().clear(); } TEST(MockSupportTest, ExpectedCallsLeftWorksHierarchically) { mock("first").expectOneCall("foobar"); LONGS_EQUAL(1, mock().expectedCallsLeft()); mock().clear(); } TEST(MockSupportTest, checkExpectationsWorksHierarchically) { mock("first").expectOneCall("foobar"); mock("second").expectOneCall("helloworld"); addFunctionToExpectationsList("foobar"); addFunctionToExpectationsList("helloworld"); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), *expectationsList); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, ignoreOtherCallsWorksHierarchically) { mock("first"); mock().ignoreOtherCalls(); mock("first").actualCall("boo"); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, ignoreOtherCallsWorksHierarchicallyWhenDynamicallyCreated) { mock().ignoreOtherCalls(); mock("first").actualCall("boo"); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, ignoreOtherCallsIgnoresWithAllKindsOfParameters) { mock().ignoreOtherCalls(); mock().actualCall("boo") .withParameter("bar", 1u) .withParameter("foo", 1l) .withParameter("hey", 1ul) .withParameter("duh", 1.0f) .withParameter("yoo", (const void*) 0) .withParameterOfType("hoo", "int", (const void*) 0) .withOutputParameter("gah", (void*) 0) ; CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, checkExpectationsWorksHierarchicallyForLastCallNotFinished) { mock("first").expectOneCall("foobar").withParameter("boo", 1); mock("first").actualCall("foobar"); addFunctionToExpectationsList("foobar")->withParameter("boo", 1); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foobar", *expectationsList); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, reporterIsInheritedInHierarchicalMocks) { mock("differentScope").actualCall("foobar"); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "foobar", *expectationsList); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, installComparatorWorksHierarchicalOnBothExistingAndDynamicallyCreatedMockSupports) { MyTypeForTesting object(1); MyTypeForTestingComparator comparator; mock("existing"); mock().installComparator("MyTypeForTesting", comparator); mock("existing").expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock("existing").actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock("dynamic").expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock("dynamic").actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); mock().removeAllComparators(); } TEST(MockSupportTest, installComparatorsWorksHierarchical) { MyTypeForTesting object(1); MyTypeForTestingComparator comparator; MockNamedValueComparatorRepository repos; repos.installComparator("MyTypeForTesting", comparator); mock("existing"); mock().installComparators(repos); mock("existing").expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock("existing").actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); mock().removeAllComparators(); } TEST(MockSupportTest, removeComparatorsWorksHierachically) { MyTypeForTesting object(1); MyTypeForTestingComparator comparator; mock("scope").installComparator("MyTypeForTesting", comparator); mock().removeAllComparators(); mock("scope").expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock("scope").actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); MockNoWayToCompareCustomTypeFailure expectedFailure(mockFailureTest(), "MyTypeForTesting"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, hasReturnValue) { CHECK(!mock().hasReturnValue()); mock().expectOneCall("foo"); CHECK(!mock().actualCall("foo").hasReturnValue()); CHECK(!mock().hasReturnValue()); mock().expectOneCall("foo2").andReturnValue(1); CHECK(mock().actualCall("foo2").hasReturnValue()); CHECK(mock().hasReturnValue()); } TEST(MockSupportTest, UnsignedIntegerReturnValue) { unsigned int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); MockActualCall& actual_call = mock().actualCall("foo"); LONGS_EQUAL(expected_value, actual_call.returnValue().getUnsignedIntValue()); LONGS_EQUAL(expected_value, actual_call.returnUnsignedIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getUnsignedIntValue()); LONGS_EQUAL(expected_value, mock().unsignedIntReturnValue()); } TEST(MockSupportTest, PositiveIntReturnValueCanBeRetrievedAsUnsignedInt) { int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedIntValue()); } TEST(MockSupportTest, IntReturnValueCanBeRetrievedAsLongInt) { int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongIntValue()); } TEST(MockSupportTest, UnsignedIntReturnValueCanBeRetrievedAsLongInt) { unsigned int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongIntValue()); } TEST(MockSupportTest, PositiveIntReturnValueCanBeRetrievedAsUnsignedLongInt) { int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongIntValue()); } TEST(MockSupportTest, PositiveLongIntReturnValueCanBeRetrievedAsUnsignedLongInt) { long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongIntValue()); } TEST(MockSupportTest, UnsignedIntReturnValueCanBeRetrievedAsUnsignedLongInt) { unsigned int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongIntValue()); } TEST(MockSupportTest, UnsignedIntegerReturnValueSetsDifferentValues) { unsigned int expected_value = 1; unsigned int another_expected_value = 2; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getUnsignedIntValue()); LONGS_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getUnsignedIntValue()); LONGS_EQUAL(another_expected_value, mock().returnValue().getUnsignedIntValue()); } TEST(MockSupportTest, UnsignedIntegerReturnValueSetsDifferentValuesWhileParametersAreIgnored) { unsigned int ret_value = 1; unsigned int another_ret_value = 2; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); LONGS_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getUnsignedIntValue()); LONGS_EQUAL(ret_value, mock().returnValue().getUnsignedIntValue()); LONGS_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getUnsignedIntValue()); LONGS_EQUAL(another_ret_value, mock().returnValue().getUnsignedIntValue()); } TEST(MockSupportTest, WhenADoubleReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { double default_return_value = 10.7; double expected_return_value = default_return_value + 1.3; mock().expectOneCall("foo").andReturnValue(expected_return_value); DOUBLES_EQUAL(expected_return_value, mock().actualCall("foo").returnDoubleValueOrDefault(default_return_value), 0.05); DOUBLES_EQUAL(expected_return_value, mock().returnDoubleValueOrDefault(default_return_value), 0.05); } TEST(MockSupportTest, WhenNoDoubleReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { double default_return_value = 7.7; mock().expectOneCall("foo"); DOUBLES_EQUAL(default_return_value, mock().actualCall("foo").returnDoubleValueOrDefault(default_return_value), 0.05); DOUBLES_EQUAL(default_return_value, mock().returnDoubleValueOrDefault(default_return_value), 0.05); } TEST(MockSupportTest, WhenAUnsignedIntegerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { unsigned int default_return_value = 10; unsigned int expected_return_value = default_return_value + 1; mock().expectOneCall("foo").andReturnValue(expected_return_value); LONGS_EQUAL(expected_return_value, mock().actualCall("foo").returnUnsignedIntValueOrDefault(default_return_value)); LONGS_EQUAL(expected_return_value, mock().returnUnsignedIntValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenNoUnsignedIntegerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { unsigned int default_return_value = 10; mock().expectOneCall("foo"); LONGS_EQUAL(default_return_value, mock().actualCall("foo").returnUnsignedIntValueOrDefault(default_return_value)); LONGS_EQUAL(default_return_value, mock().returnUnsignedIntValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenAUnsignedLongIntegerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { unsigned long int default_return_value = 121487; unsigned long int expected_return_value = default_return_value + 1; mock().expectOneCall("foo").andReturnValue(expected_return_value); LONGS_EQUAL(expected_return_value, mock().actualCall("foo").returnUnsignedLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(expected_return_value, mock().returnUnsignedLongIntValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenNoUnsignedLongIntegerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { unsigned long int default_return_value = 7710144; mock().expectOneCall("foo"); LONGS_EQUAL(default_return_value, mock().actualCall("foo").returnUnsignedLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(default_return_value, mock().returnUnsignedLongIntValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenALongIntegerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { long int default_return_value = 748797; long int expected_return_value = default_return_value + 1; mock().expectOneCall("foo").andReturnValue(expected_return_value); LONGS_EQUAL(expected_return_value, mock().actualCall("foo").returnLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(expected_return_value, mock().returnLongIntValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenNoLongIntegerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { long int default_return_value = 123659; mock().expectOneCall("foo"); LONGS_EQUAL(default_return_value, mock().actualCall("foo").returnLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(default_return_value, mock().returnLongIntValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenAIntegerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { int default_return_value = 777; int expected_return_value = default_return_value + 1; mock().expectOneCall("foo").andReturnValue(expected_return_value); LONGS_EQUAL(expected_return_value, mock().actualCall("foo").returnIntValueOrDefault(default_return_value)); LONGS_EQUAL(expected_return_value, mock().returnIntValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenNoIntegerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { int default_return_value = 777; mock().expectOneCall("foo"); LONGS_EQUAL(default_return_value, mock().actualCall("foo").returnIntValueOrDefault(default_return_value)); LONGS_EQUAL(default_return_value, mock().returnIntValueOrDefault(default_return_value)); } TEST(MockSupportTest, IntegerReturnValue) { int expected_value = 1; mock().expectOneCall("foo").andReturnValue(1); MockActualCall& actual_call = mock().actualCall("foo"); LONGS_EQUAL(expected_value, actual_call.returnValue().getIntValue()); LONGS_EQUAL(expected_value, actual_call.returnIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getIntValue()); LONGS_EQUAL(expected_value, mock().intReturnValue()); } TEST(MockSupportTest, IntegerReturnValueSetsDifferentValues) { int expected_value = 1; int another_expected_value = -1; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getIntValue()); LONGS_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getIntValue()); LONGS_EQUAL(another_expected_value, mock().returnValue().getIntValue()); } TEST(MockSupportTest, IntegerReturnValueSetsDifferentValuesWhileParametersAreIgnored) { int ret_value = 1; int another_ret_value = -1; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); LONGS_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getIntValue()); LONGS_EQUAL(ret_value, mock().returnValue().getIntValue()); LONGS_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getIntValue()); LONGS_EQUAL(another_ret_value, mock().returnValue().getIntValue()); } TEST(MockSupportTest, LongIntegerReturnValue) { long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); MockActualCall& actual_call = mock().actualCall("foo"); LONGS_EQUAL(expected_value, actual_call.returnValue().getLongIntValue()); LONGS_EQUAL(expected_value, actual_call.returnLongIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getLongIntValue()); LONGS_EQUAL(expected_value, mock().longIntReturnValue()); } TEST(MockSupportTest, LongIntegerReturnValueSetsDifferentValues) { long int expected_value = 1; long int another_expected_value = 2; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getLongIntValue()); LONGS_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getLongIntValue()); LONGS_EQUAL(another_expected_value, mock().returnValue().getLongIntValue()); } TEST(MockSupportTest, LongIntegerReturnValueSetsDifferentValuesWhileParametersAreIgnored) { long int ret_value = 1; long int another_ret_value = 2; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); LONGS_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getLongIntValue()); LONGS_EQUAL(ret_value, mock().returnValue().getLongIntValue()); LONGS_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getLongIntValue()); LONGS_EQUAL(another_ret_value, mock().returnValue().getLongIntValue()); } TEST(MockSupportTest, UnsignedLongIntegerReturnValue) { unsigned long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); MockActualCall& actual_call = mock().actualCall("foo"); LONGS_EQUAL(expected_value, actual_call.returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(expected_value, actual_call.returnUnsignedLongIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(expected_value, mock().unsignedLongIntReturnValue()); } TEST(MockSupportTest, UnsignedLongIntegerReturnValueSetsDifferentValues) { unsigned long int expected_value = 1; unsigned long int another_expected_value = 2; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(another_expected_value, mock().returnValue().getUnsignedLongIntValue()); } TEST(MockSupportTest, UnsignedLongIntegerReturnValueSetsDifferentValuesWhileParametersAreIgnored) { unsigned long int ret_value = 1; unsigned long int another_ret_value = 2; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); LONGS_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(ret_value, mock().returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(another_ret_value, mock().returnValue().getUnsignedLongIntValue()); } TEST(MockSupportTest, MatchingReturnValueOnWhileSignature) { mock().expectOneCall("foo").withParameter("p1", 1).andReturnValue(1); mock().expectOneCall("foo").withParameter("p1", 2).andReturnValue(2); mock().expectOneCall("foo").withParameter("p1", 3).andReturnValue(3); mock().expectOneCall("foo").ignoreOtherParameters().andReturnValue(4); LONGS_EQUAL(3, mock().actualCall("foo").withParameter("p1", 3).returnValue().getIntValue()); LONGS_EQUAL(4, mock().actualCall("foo").withParameter("p1", 4).returnValue().getIntValue()); LONGS_EQUAL(1, mock().actualCall("foo").withParameter("p1", 1).returnValue().getIntValue()); LONGS_EQUAL(2, mock().actualCall("foo").withParameter("p1", 2).returnValue().getIntValue()); } TEST(MockSupportTest, WhenAStringReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { const char * default_return_value = "default"; const char * expected_return_value = "expected"; mock().expectOneCall("foo").andReturnValue(expected_return_value); STRCMP_EQUAL(expected_return_value, mock().actualCall("foo").returnStringValueOrDefault(default_return_value)); STRCMP_EQUAL(expected_return_value, mock().returnStringValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenNoStringReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { const char * default_return_value = "default"; mock().expectOneCall("foo"); STRCMP_EQUAL(default_return_value, mock().actualCall("foo").returnStringValueOrDefault(default_return_value)); STRCMP_EQUAL(default_return_value, mock().returnStringValueOrDefault(default_return_value)); } TEST(MockSupportTest, StringReturnValue) { mock().expectOneCall("foo").andReturnValue("hello world"); MockActualCall& actual_call = mock().actualCall("foo"); STRCMP_EQUAL("hello world", actual_call.returnValue().getStringValue()); STRCMP_EQUAL("hello world", actual_call.returnStringValue()); STRCMP_EQUAL("hello world", mock().stringReturnValue()); } TEST(MockSupportTest, DoubleReturnValue) { double expected_return_value = 7.8; mock().expectOneCall("foo").andReturnValue(expected_return_value); MockActualCall& actual_call = mock().actualCall("foo"); DOUBLES_EQUAL(expected_return_value, actual_call.returnValue().getDoubleValue(), 0.05); DOUBLES_EQUAL(expected_return_value, actual_call.returnDoubleValue(), 0.05); DOUBLES_EQUAL(expected_return_value, mock().doubleReturnValue(), 0.05); } TEST(MockSupportTest, WhenAConstPointerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { const void * default_return_value = (void*) 0x7778; const void * expected_return_value = (void*) 0x144010; mock().expectOneCall("foo").andReturnValue(expected_return_value); POINTERS_EQUAL(expected_return_value, mock().actualCall("foo").returnConstPointerValueOrDefault(default_return_value)); POINTERS_EQUAL(expected_return_value, mock().returnConstPointerValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenNoConstPointerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { const void * default_return_value = (void*) 0x11; mock().expectOneCall("foo"); POINTERS_EQUAL(default_return_value, mock().actualCall("foo").returnConstPointerValueOrDefault(default_return_value)); POINTERS_EQUAL(default_return_value, mock().returnConstPointerValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenAPointerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { void * default_return_value = (void*) 0x777; void * expected_return_value = (void*) 0x144000; mock().expectOneCall("foo").andReturnValue(expected_return_value); POINTERS_EQUAL(expected_return_value, mock().actualCall("foo").returnPointerValueOrDefault(default_return_value)); POINTERS_EQUAL(expected_return_value, mock().returnPointerValueOrDefault(default_return_value)); } TEST(MockSupportTest, WhenNoPointerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { void * default_return_value = (void*) 0x10; mock().expectOneCall("foo"); POINTERS_EQUAL(default_return_value, mock().actualCall("foo").returnPointerValueOrDefault(default_return_value)); POINTERS_EQUAL(default_return_value, mock().returnPointerValueOrDefault(default_return_value)); } TEST(MockSupportTest, PointerReturnValue) { void* ptr = (void*) 0x00107; mock().expectOneCall("foo").andReturnValue(ptr); MockActualCall& actual_call = mock().actualCall("foo"); POINTERS_EQUAL(ptr, actual_call.returnValue().getPointerValue()); POINTERS_EQUAL(ptr, actual_call.returnPointerValue()); POINTERS_EQUAL(ptr, mock().pointerReturnValue()); } TEST(MockSupportTest, ConstPointerReturnValue) { const void* ptr = (const void*) 0x001074; mock().expectOneCall("foo").andReturnValue(ptr); MockActualCall& actual_call = mock().actualCall("foo"); POINTERS_EQUAL(ptr, actual_call.returnValue().getConstPointerValue()); POINTERS_EQUAL(ptr, actual_call.returnConstPointerValue()); POINTERS_EQUAL(ptr, mock().constPointerReturnValue()); } TEST(MockSupportTest, OnObject) { void* objectPtr = (void*) 0x001; mock().expectOneCall("boo").onObject(objectPtr); mock().actualCall("boo").onObject(objectPtr); } TEST(MockSupportTest, OnObjectFails) { void* objectPtr = (void*) 0x001; void* objectPtr2 = (void*) 0x002; addFunctionToExpectationsList("boo")->onObject(objectPtr); mock().expectOneCall("boo").onObject(objectPtr); mock().actualCall("boo").onObject(objectPtr2); MockUnexpectedObjectFailure expectedFailure(mockFailureTest(), "boo", objectPtr2, *expectationsList); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, OnObjectExpectedButNotCalled) { void* objectPtr = (void*) 0x001; addFunctionToExpectationsList("boo")->onObject(objectPtr); addFunctionToExpectationsList("boo")->onObject(objectPtr); mock().expectOneCall("boo").onObject(objectPtr); mock().expectOneCall("boo").onObject(objectPtr); mock().actualCall("boo"); mock().actualCall("boo"); MockExpectedObjectDidntHappenFailure expectedFailure(mockFailureTest(), "boo", *expectationsList); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockSupportTest, expectMultipleCalls) { mock().expectNCalls(2, "boo"); mock().actualCall("boo"); mock().actualCall("boo"); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, expectMultipleCallsWithParameters) { int expected_int = -7; unsigned int expected_uint = 7; mock().expectNCalls(2, "boo").withParameter("double", 1.0).withParameter("int", expected_int). withParameter("string", "string").withParameter("uint", expected_uint); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", expected_int).withParameter("string", "string"). withParameter("uint", expected_uint); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", expected_int).withParameter("string", "string"). withParameter("uint", expected_uint); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, expectMultipleMultipleCallsWithParameters) { mock().expectNCalls(2, "boo").withParameter("double", 1.0).ignoreOtherParameters(); mock().expectNCalls(2, "boo").withParameter("double", 1.0).ignoreOtherParameters(); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); } TEST(MockSupportTest, whenCallingDisabledOrIgnoredActualCallsThenTheyDontReturnPreviousCallsValues) { mock().expectOneCall("boo").ignoreOtherParameters().andReturnValue(10); mock().ignoreOtherCalls(); mock().actualCall("boo"); mock().actualCall("An Ignored Call"); CHECK(!mock().hasReturnValue()); } TEST(MockSupportTest, tracing) { mock().tracing(true); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock("scope").actualCall("foo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock().checkExpectations(); STRCMP_CONTAINS("boo", mock().getTraceOutput()); STRCMP_CONTAINS("foo", mock().getTraceOutput()); } TEST(MockSupportTest, tracingWorksHierarchically) { mock("scope").tracing(true); mock().tracing(true); mock().actualCall("boo"); mock("scope").actualCall("foo"); mock().checkExpectations(); STRCMP_CONTAINS("boo", mock().getTraceOutput()); STRCMP_CONTAINS("foo", mock().getTraceOutput()); } TEST(MockSupportTest, shouldntFailTwice) { mock().expectOneCall("foo"); mock().actualCall("bar"); mock().checkExpectations(); CHECK(!MockFailureReporterForTest::getReporter()->mockFailureString.contains("bar")); CLEAR_MOCK_FAILURE(); } class StubComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void*, const void*) { return true; } virtual SimpleString valueToString(const void*) { return ""; } }; class SomeClass { int someDummy_; }; static void functionWithConstParam(const SomeClass param) { mock().actualCall("functionWithConstParam").withParameterOfType("SomeClass", "param", ¶m); } TEST(MockSupportTest, shouldSupportConstParameters) { StubComparator comparator; mock().installComparator("SomeClass", comparator); SomeClass param; mock().expectOneCall("functionWithConstParam").withParameterOfType("SomeClass", "param", ¶m); functionWithConstParam(param); mock().checkExpectations(); } TEST(MockSupportTest, shouldReturnDefaultWhenThereIsntAnythingToReturn) { CHECK(mock().returnValue().equals(MockNamedValue(""))); } IGNORE_TEST(MockSupportTest, testForPerformanceProfiling) { /* TO fix! */ mock().expectNCalls(1000, "SimpleFunction"); for (int i = 0; i < 1000; i++) { mock().actualCall("SimpleFunction"); } } TEST_GROUP(MockSupportTestWithFixture) { TestTestingFixture fixture; }; static void mocksAreCountedAsChecksTestFunction_() { mock().expectOneCall("foo"); mock().expectNCalls(3, "bar"); mock().clear(); } TEST(MockSupportTestWithFixture, mockExpectationShouldIncreaseNumberOfChecks) { fixture.setTestFunction(mocksAreCountedAsChecksTestFunction_); fixture.runAllTests(); LONGS_EQUAL(4, fixture.getCheckCount()); } static void CHECK_EXPECTED_MOCK_FAILURE_LOCATION_failedTestMethod_() { MockExpectedCallsList list; MockUnexpectedCallHappenedFailure expectedFailure(UtestShell::getCurrent(), "unexpected", list); mock().actualCall("boo"); CHECK_EXPECTED_MOCK_FAILURE_LOCATION(expectedFailure, "file", 1); } TEST(MockSupportTestWithFixture, CHECK_EXPECTED_MOCK_FAILURE_LOCATION_failed) { mock().setMockFailureStandardReporter(MockFailureReporterForTest::getReporter()); fixture.setTestFunction(CHECK_EXPECTED_MOCK_FAILURE_LOCATION_failedTestMethod_); fixture.runAllTests(); fixture.assertPrintContains("MockFailures are different."); fixture.assertPrintContains("Expected MockFailure:"); fixture.assertPrintContains("Mock Failure: Unexpected call to function: unexpected"); fixture.assertPrintContains("Actual MockFailure:"); fixture.assertPrintContains("Mock Failure: Unexpected call to function: boo"); } static void CHECK_NO_MOCK_FAILURE_LOCATION_failedTestMethod_() { mock().actualCall("boo"); CHECK_NO_MOCK_FAILURE_LOCATION("file", 1); } TEST(MockSupportTestWithFixture, CHECK_NO_MOCK_FAILURE_LOCATION_failed) { mock().setMockFailureStandardReporter(MockFailureReporterForTest::getReporter()); fixture.setTestFunction(CHECK_NO_MOCK_FAILURE_LOCATION_failedTestMethod_); fixture.runAllTests(); fixture.assertPrintContains("Unexpected mock failure:"); fixture.assertPrintContains("Mock Failure: Unexpected call to function: boo"); } static bool cpputestHasCrashed; static void crashMethod() { cpputestHasCrashed = true; } static void crashOnFailureTestFunction_(void) { mock().actualCall("unexpected"); } // LCOV_EXCL_LINE #include "CppUTestExt/OrderedTest.h" TEST_ORDERED(MockSupportTestWithFixture, shouldCrashOnFailure, 10) { mock().crashOnFailure(true); UtestShell::setCrashMethod(crashMethod); fixture.setTestFunction(crashOnFailureTestFunction_); fixture.runAllTests(); CHECK(cpputestHasCrashed); mock().crashOnFailure(false); UtestShell::resetCrashMethod(); } TEST_ORDERED(MockSupportTestWithFixture, nextTestShouldNotCrashOnFailure, 11) { cpputestHasCrashed = false; UtestShell::setCrashMethod(crashMethod); fixture.setTestFunction(crashOnFailureTestFunction_); fixture.runAllTests(); fixture.assertPrintContains("Unexpected call to function: unexpected"); CHECK_FALSE(cpputestHasCrashed); UtestShell::resetCrashMethod(); } cpputest-3.7.2/tests/CppUTestExt/OrderedTestTest.cpp000644 000765 000024 00000013640 12521603460 023451 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTestExt/OrderedTest.h" TEST_GROUP(TestOrderedTest) { TestTestingFixture* fixture; OrderedTestShell orderedTest; OrderedTestShell orderedTest2; OrderedTestShell orderedTest3; ExecFunctionTestShell normalTest; ExecFunctionTestShell normalTest2; ExecFunctionTestShell normalTest3; OrderedTestShell* orderedTestCache; void setup() { orderedTestCache = OrderedTestShell::getOrderedTestHead(); OrderedTestShell::setOrderedTestHead(0); fixture = new TestTestingFixture(); fixture->registry_->unDoLastAddTest(); } void teardown() { delete fixture; OrderedTestShell::setOrderedTestHead(orderedTestCache); } void InstallOrderedTest(OrderedTestShell& test, int level) { OrderedTestInstaller(test, "testgroup", "testname", __FILE__, __LINE__, level); } void InstallNormalTest(UtestShell& test) { TestInstaller(test, "testgroup", "testname", __FILE__, __LINE__); } UtestShell* firstTest() { return fixture->registry_->getFirstTest(); } UtestShell* secondTest() { return fixture->registry_->getFirstTest()->getNext(); } }; TEST(TestOrderedTest, TestInstallerSetsFields) { OrderedTestInstaller(orderedTest, "testgroup", "testname", "this.cpp", 10, 5); STRCMP_EQUAL("testgroup", orderedTest.getGroup().asCharString()); STRCMP_EQUAL("testname", orderedTest.getName().asCharString()); STRCMP_EQUAL("this.cpp", orderedTest.getFile().asCharString()); LONGS_EQUAL(10, orderedTest.getLineNumber()); LONGS_EQUAL(5, orderedTest.getLevel()); } TEST(TestOrderedTest, InstallOneText) { InstallOrderedTest(orderedTest, 5); CHECK(firstTest() == &orderedTest); } TEST(TestOrderedTest, OrderedTestsAreLast) { InstallNormalTest(normalTest); InstallOrderedTest(orderedTest, 5); CHECK(firstTest() == &normalTest); CHECK(secondTest() == &orderedTest); } TEST(TestOrderedTest, TwoTestsAddedInReverseOrder) { InstallOrderedTest(orderedTest, 5); InstallOrderedTest(orderedTest2, 3); CHECK(firstTest() == &orderedTest2); CHECK(secondTest() == &orderedTest); } TEST(TestOrderedTest, TwoTestsAddedInOrder) { InstallOrderedTest(orderedTest2, 3); InstallOrderedTest(orderedTest, 5); CHECK(firstTest() == &orderedTest2); CHECK(secondTest() == &orderedTest); } TEST(TestOrderedTest, MultipleOrderedTests) { InstallNormalTest(normalTest); InstallOrderedTest(orderedTest2, 3); InstallNormalTest(normalTest2); InstallOrderedTest(orderedTest, 5); InstallNormalTest(normalTest3); InstallOrderedTest(orderedTest3, 7); UtestShell * firstOrderedTest = firstTest()->getNext()->getNext()->getNext(); CHECK(firstOrderedTest == &orderedTest2); CHECK(firstOrderedTest->getNext() == &orderedTest); CHECK(firstOrderedTest->getNext()->getNext() == &orderedTest3); } TEST(TestOrderedTest, MultipleOrderedTests2) { InstallOrderedTest(orderedTest, 3); InstallOrderedTest(orderedTest2, 1); InstallOrderedTest(orderedTest3, 2); CHECK(firstTest() == &orderedTest2); CHECK(secondTest() == &orderedTest3); CHECK(secondTest()->getNext() == &orderedTest); } class OrderedTestTestingFixture { public: static void checkRun(int run) { if(run != run_) { run_ = run; count_ = 0; } } static int count(void) { return count_++; } private: static int run_; static int count_; }; int OrderedTestTestingFixture::run_ = 0; int OrderedTestTestingFixture::count_ = 0; TEST_GROUP(TestOrderedTestMacros) { void setup() { OrderedTestTestingFixture::checkRun(TestRegistry::getCurrentRegistry()->getCurrentRepetition()); } }; TEST(TestOrderedTestMacros, NormalTest) { CHECK(OrderedTestTestingFixture::count() == 0); } TEST_ORDERED(TestOrderedTestMacros, Test2, 2) { CHECK(OrderedTestTestingFixture::count() == 2); } TEST_ORDERED(TestOrderedTestMacros, Test1, 1) { CHECK(OrderedTestTestingFixture::count() == 1); } TEST_ORDERED(TestOrderedTestMacros, Test4, 4) { CHECK(OrderedTestTestingFixture::count() == 4); } TEST_ORDERED(TestOrderedTestMacros, Test3, 3) { CHECK(OrderedTestTestingFixture::count() == 3); } cpputest-3.7.2/src/CppUTest/000755 000765 000024 00000000000 12523662133 016625 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/CppUTestExt/000755 000765 000024 00000000000 12523662133 017306 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/Platforms/000755 000765 000024 00000000000 12523662132 017064 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/Platforms/armcc/000755 000765 000024 00000000000 12523662133 020152 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/Platforms/C2000/000755 000765 000024 00000000000 12523662133 017551 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/Platforms/Gcc/000755 000765 000024 00000000000 12523662133 017561 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/Platforms/GccNoStdC/000755 000765 000024 00000000000 12523662133 020634 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/Platforms/Iar/000755 000765 000024 00000000000 12523662133 017600 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/Platforms/Symbian/000755 000765 000024 00000000000 12523662133 020467 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/Platforms/VisualCpp/000755 000765 000024 00000000000 12523662133 020773 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/src/Platforms/VisualCpp/UtestPlatform.cpp000644 000765 000024 00000012764 12521603460 024316 0ustar00basvoddestaff000000 000000 #include "Platform.h" #include #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #include #include #include #include #include #include #include #include "CppUTest/PlatformSpecificFunctions.h" #include #include #include #ifdef STDC_WANT_SECURE_LIB #define FOPEN(fp, filename, flag) fopen_s((fp), (filename), (flag)) #define _VSNPRINTF(str, size, trunc, format, args) _vsnprintf_s((str), (size), (trunc), (format), (args)) #define LOCALTIME(_tm, timer) localtime_s((_tm), (timer)) #else #define FOPEN(fp, filename, flag) *(fp) = fopen((filename), (flag)) #define _VSNPRINTF(str, size, trunc, format, args) _vsnprintf((str), (size), (format), (args)) #define LOCALTIME(_tm, timer) memcpy(_tm, localtime(timer), sizeof(tm)); #endif static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; static int VisualCppSetJmp(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } static void VisualCppLongJmp() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void VisualCppRestoreJumpBuffer() { jmp_buf_index--; } int (*PlatformSpecificSetJmp)(void (*function) (void*), void* data) = VisualCppSetJmp; void (*PlatformSpecificLongJmp)(void) = VisualCppLongJmp; void (*PlatformSpecificRestoreJumpBuffer)(void) = VisualCppRestoreJumpBuffer; static void VisualCppRunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { result->addFailure(TestFailure(shell, "-p doesn't work on Visual C++ as it is lacking fork.\b")); } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell* shell, TestPlugin* plugin, TestResult* result) = VisualCppRunTestInASeperateProcess; TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::vistualStudio; } ///////////// Time in millis static long VisualCppTimeInMillis() { return timeGetTime(); } long (*GetPlatformSpecificTimeInMillis)() = VisualCppTimeInMillis; ///////////// Time in String static const char* VisualCppTimeString() { time_t the_time = time(NULL); struct tm the_local_time; static char dateTime[80]; LOCALTIME(&the_local_time, &the_time); strftime(dateTime, 80, "%Y-%m-%dT%H:%M:%S", &the_local_time); return dateTime; } const char* (*GetPlatformSpecificTimeString)() = VisualCppTimeString; ////// taken from gcc static int VisualCppVSNprintf(char *str, size_t size, const char* format, va_list args) { char* buf = 0; size_t sizeGuess = size; int result = _VSNPRINTF( str, size, _TRUNCATE, format, args); str[size-1] = 0; while (result == -1) { if (buf != 0) free(buf); sizeGuess += 10; buf = (char*)malloc(sizeGuess); result = _VSNPRINTF( buf, sizeGuess, _TRUNCATE, format, args); } if (buf != 0) free(buf); return result; } int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list va_args_list) = VisualCppVSNprintf; static PlatformSpecificFile VisualCppFOpen(const char* filename, const char* flag) { FILE* file; FOPEN(&file, filename, flag); return file; } static void VisualCppFPuts(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } static void VisualCppFClose(PlatformSpecificFile file) { fclose((FILE*)file); } PlatformSpecificFile (*PlatformSpecificFOpen)(const char* filename, const char* flag) = VisualCppFOpen; void (*PlatformSpecificFPuts)(const char* str, PlatformSpecificFile file) = VisualCppFPuts; void (*PlatformSpecificFClose)(PlatformSpecificFile file) = VisualCppFClose; static void VisualCppFlush() { fflush(stdout); } int (*PlatformSpecificPutchar)(int c) = putchar; void (*PlatformSpecificFlush)(void) = VisualCppFlush; static void* VisualCppMalloc(size_t size) { return malloc(size); } void* (*PlatformSpecificMalloc)(size_t size) = VisualCppMalloc; void* (*PlatformSpecificRealloc)(void* memory, size_t size) = realloc; void (*PlatformSpecificFree)(void* memory) = free; void* (*PlatformSpecificMemCpy)(void* s1, const void* s2, size_t size) = memcpy; void* (*PlatformSpecificMemset)(void* mem, int c, size_t size) = memset; double (*PlatformSpecificFabs)(double d) = fabs; extern "C" int (*PlatformSpecificIsNan)(double) = _isnan; int (*PlatformSpecificAtExit)(void(*func)(void)) = atexit; static PlatformSpecificMutex VisualCppMutexCreate(void) { CRITICAL_SECTION *critical_section = new CRITICAL_SECTION; InitializeCriticalSection(critical_section); return (PlatformSpecificMutex)critical_section; } static void VisualCppMutexLock(PlatformSpecificMutex mutex) { EnterCriticalSection((CRITICAL_SECTION*)mutex); } static void VisualCppMutexUnlock(PlatformSpecificMutex mutex) { LeaveCriticalSection((CRITICAL_SECTION*)mutex); } static void VisualCppMutexDestroy(PlatformSpecificMutex mutex) { CRITICAL_SECTION *critical_section = (CRITICAL_SECTION*)mutex; DeleteCriticalSection(critical_section); delete critical_section; } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = VisualCppMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = VisualCppMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = VisualCppMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = VisualCppMutexDestroy; cpputest-3.7.2/src/Platforms/Symbian/README_Symbian.txt000644 000765 000024 00000002516 12521603460 023647 0ustar00basvoddestaff000000 000000 CppUTest on Symbian Compliling To compile CppUTest you need to have Symbian Posix libraries installed. On S60 it's recommended to use S60 Open C. On other platforms one can use Symbian PIPS. Compiling is in standard way, by issuing from command line commands bldmake bldfiles && abld build in build-directory. You can also import the project's bld.inf file into Carbide in normal way. Writing tests CppUTest exports the needed header files into \epoc32\include\CppUTest -directory. Add the directory to the include-path of the test project. One needs to include TestHarness.h file into test source file. The test project must link against cpputest.lib using STATICLIBRARY statement in MMP-file. CppUTest depends also on standard C-library so the tests must be linked against libc as well. The entry point file of the tests is normally the following: #include #include // This is a GCCE toolchain workaround needed when compiling with GCCE // and using main() entry point #ifdef __GCCE__ #include #endif int main(int argc, char** argv) { CommandLineTestRunner::RunAllTests(argc, argv); } The test must be statically linked against libcrt0.lib if standard main (not E32Main) is used as above. For the further example, please consult alltests.mmp in build directory. cpputest-3.7.2/src/Platforms/Symbian/SymbianMemoryLeakWarning.cpp000644 000765 000024 00000007324 12521603460 026113 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde and Timo Puronen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "MemoryLeakWarning.h" #include MemoryLeakWarning* MemoryLeakWarning::_latest = NULL; // naming convention due to CppUTest generic class name class MemoryLeakWarningData : public CBase { public: TInt iInitialAllocCells; TInt iExpectedLeaks; TInt iInitialThreadHandleCount; TInt iInitialProcessHandleCount; }; MemoryLeakWarning::MemoryLeakWarning() { _latest = this; CreateData(); } MemoryLeakWarning::~MemoryLeakWarning() { DestroyData(); } void MemoryLeakWarning::Enable() { } const char* MemoryLeakWarning::FinalReport(int toBeDeletedLeaks) { TInt cellDifference(User::CountAllocCells() - _impl->iInitialAllocCells); if( cellDifference != toBeDeletedLeaks ) { return "Heap imbalance after test\n"; } TInt processHandles; TInt threadHandles; RThread().HandleCount(processHandles, threadHandles); if(_impl->iInitialProcessHandleCount != processHandles || _impl->iInitialThreadHandleCount != threadHandles) { return "Handle count imbalance after test\n"; } return ""; } void MemoryLeakWarning::CheckPointUsage() { _impl->iInitialAllocCells = User::CountAllocCells(); RThread().HandleCount(_impl->iInitialProcessHandleCount, _impl->iInitialThreadHandleCount); } bool MemoryLeakWarning::UsageIsNotBalanced() { TInt allocatedCells(User::CountAllocCells()); if(_impl->iExpectedLeaks != 0) { TInt difference(Abs(_impl->iInitialAllocCells - allocatedCells)); return difference != _impl->iExpectedLeaks; } return allocatedCells != _impl->iInitialAllocCells; } const char* MemoryLeakWarning::Message() { return ""; } void MemoryLeakWarning::ExpectLeaks(int n) { _impl->iExpectedLeaks = n; } // this method leaves (no naming convention followed due to CppUTest framework void MemoryLeakWarning::CreateData() { _impl = new(ELeave) MemoryLeakWarningData(); } void MemoryLeakWarning::DestroyData() { delete _impl; _impl = NULL; } MemoryLeakWarning* MemoryLeakWarning::GetLatest() { return _latest; } void MemoryLeakWarning::SetLatest(MemoryLeakWarning* latest) { _latest = latest; } cpputest-3.7.2/src/Platforms/Symbian/UtestPlatform.cpp000644 000765 000024 00000012054 12521603460 024002 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde and Timo Puronen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include #include #include #include #include #include #include #include #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; int PlatformSpecificSetJmp(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } void PlatformSpecificLongJmp() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } void PlatformSpecificRestoreJumpBuffer() { jmp_buf_index--; } void PlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { printf("-p doesn't work on this platform as it is not implemented. Running inside the process\b"); shell->runOneTest(plugin, *result); } static long TimeInMillisImplementation() { struct timeval tv; struct timezone tz; ::gettimeofday(&tv, &tz); return (tv.tv_sec * 1000) + (long)(tv.tv_usec * 0.001); } long (*GetPlatformSpecificTimeInMillis)() = TimeInMillisImplementation; TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } static SimpleString TimeStringImplementation() { time_t tm = time(NULL); return ctime(&tm); } SimpleString GetPlatformSpecificTimeString() = TimeStringImplementation; int PlatformSpecificVSNprintf(char* str, size_t size, const char* format, va_list args) { return vsnprintf(str, size, format, args); } void PlatformSpecificFlush() { fflush(stdout); } int PlatformSpecificPutchar(int c) { return putchar(c); } double PlatformSpecificFabs(double d) { return fabs(d); } void* PlatformSpecificMalloc(size_t size) { return malloc(size); } void* PlatformSpecificRealloc (void* memory, size_t size) { return realloc(memory, size); } void PlatformSpecificFree(void* memory) { free(memory); } void* PlatformSpecificMemCpy(void* s1, const void* s2, size_t size) { return memcpy(s1, s2, size); } void* PlatformSpecificMemset(void* mem, int c, size_t size) { return memset(mem, c, size); } PlatformSpecificFile PlatformSpecificFOpen(const char* filename, const char* flag) { return fopen(filename, flag); } void PlatformSpecificFPuts(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } void PlatformSpecificFClose(PlatformSpecificFile file) { fclose((FILE*)file); } extern "C" { static int IsNanImplementation(double d) { return isnan(d); } int (*PlatformSpecificIsNan)(double) = IsNanImplementation; } static PlatformSpecificMutex DummyMutexCreate(void) { FAIL("PlatformSpecificMutexCreate is not implemented"); return 0; } static void DummyMutexLock(PlatformSpecificMutex mtx) { FAIL("PlatformSpecificMutexLock is not implemented"); } static void DummyMutexUnlock(PlatformSpecificMutex mtx) { FAIL("PlatformSpecificMutexUnlock is not implemented"); } static void DummyMutexDestroy(PlatformSpecificMutex mtx) { FAIL("PlatformSpecificMutexDestroy is not implemented"); } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = DummyMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = DummyMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = DummyMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = DummyMutexDestroy; cpputest-3.7.2/src/Platforms/Iar/UtestPlatform.cpp000644 000765 000024 00000012061 12521603460 023111 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include #include #include "CppUTest/TestHarness.h" #undef malloc #undef calloc #undef realloc #undef free #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; int PlatformSpecificSetJmp(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } void PlatformSpecificLongJmp() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } void PlatformSpecificRestoreJumpBuffer() { jmp_buf_index--; } void PlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { printf("-p doesn't work on this platform as it is not implemented. Running inside the process\b"); shell->runOneTest(plugin, *result); } TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } ///////////// Time in millis static long TimeInMillisImplementation() { clock_t t = clock(); t = t * 10; return t; } long (*GetPlatformSpecificTimeInMillis)() = TimeInMillisImplementation; ///////////// Time in String static const char* TimeStringImplementation() { time_t tm = time(NULL); return ctime(&tm); } const char* (*GetPlatformSpecificTimeString)() = TimeStringImplementation; int PlatformSpecificVSNprintf(char *str, size_t size, const char* format, va_list args) { return vsnprintf( str, size, format, args); } PlatformSpecificFile PlatformSpecificFOpen(const char* filename, const char* flag) { (void)filename; (void)flag; return 0; } void PlatformSpecificFPuts(const char* str, PlatformSpecificFile file) { (void)str; (void)file; } void PlatformSpecificFClose(PlatformSpecificFile file) { (void)file; } void PlatformSpecificFlush() { } int PlatformSpecificPutchar(int c) { return putchar(c); } void* PlatformSpecificMalloc(size_t size) { return malloc(size); } void* PlatformSpecificRealloc (void* memory, size_t size) { return realloc(memory, size); } void PlatformSpecificFree(void* memory) { free(memory); } void* PlatformSpecificMemCpy(void* s1, const void* s2, size_t size) { return memcpy(s1, s2, size); } void* PlatformSpecificMemset(void* mem, int c, size_t size) { return memset(mem, c, size); } double PlatformSpecificFabs(double d) { return fabs(d); } extern "C" { static int IsNanImplementation(double d) { return isnan(d); } int (*PlatformSpecificIsNan)(double) = IsNanImplementation; } static PlatformSpecificMutex DummyMutexCreate(void) { FAIL("PlatformSpecificMutexCreate is not implemented"); return 0; } static void DummyMutexLock(PlatformSpecificMutex mtx) { FAIL("PlatformSpecificMutexLock is not implemented"); } static void DummyMutexUnlock(PlatformSpecificMutex mtx) { FAIL("PlatformSpecificMutexUnlock is not implemented"); } static void DummyMutexDestroy(PlatformSpecificMutex mtx) { FAIL("PlatformSpecificMutexDestroy is not implemented"); } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = DummyMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = DummyMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = DummyMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = DummyMutexDestroy; cpputest-3.7.2/src/Platforms/GccNoStdC/UtestPlatform.cpp000644 000765 000024 00000005475 12521603460 024160 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #include "CppUTest/PlatformSpecificFunctions.h" void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell*, TestPlugin*, TestResult*) = NULL; int (*PlatformSpecificFork)() = NULL; int (*PlatformSpecificWaitPid)(int, int*, int) = NULL; /* IO operations */ PlatformSpecificFile (*PlatformSpecificFOpen)(const char* filename, const char* flag) = NULL; void (*PlatformSpecificFPuts)(const char* str, PlatformSpecificFile file) = NULL; void (*PlatformSpecificFClose)(PlatformSpecificFile file) = NULL; int (*PlatformSpecificPutchar)(int c) = NULL; void (*PlatformSpecificFlush)(void) = NULL; /* Dynamic Memory operations */ void* (*PlatformSpecificMalloc)(size_t) = NULL; void* (*PlatformSpecificRealloc)(void*, size_t) = NULL; void (*PlatformSpecificFree)(void*) = NULL; void* (*PlatformSpecificMemCpy)(void*, const void*, size_t) = NULL; void* (*PlatformSpecificMemset)(void*, int, size_t) = NULL; PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = NULL; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex mtx) = NULL; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex mtx) = NULL; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex mtx) = NULL; cpputest-3.7.2/src/Platforms/Gcc/UtestPlatform.cpp000644 000765 000024 00000021675 12521603460 023105 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #include #include #include #include #include #include #include #include #include #include #ifndef __MINGW32__ #include #include #endif #include #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; #ifdef __MINGW32__ static void GccPlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin*, TestResult* result) { result->addFailure(TestFailure(shell, "-p doesn't work on MinGW as it is lacking fork.\b")); } static int PlatformSpecificForkImplementation(void) { return 0; } static int PlatformSpecificWaitPidImplementation(int, int*, int) { return 0; } #else static void GccPlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { pid_t cpid, w; int status; cpid = PlatformSpecificFork(); if (cpid == -1) { result->addFailure(TestFailure(shell, "Call to fork() failed")); return; } if (cpid == 0) { /* Code executed by child */ shell->runOneTestInCurrentProcess(plugin, *result); // LCOV_EXCL_LINE _exit(result->getFailureCount()); // LCOV_EXCL_LINE } else { /* Code executed by parent */ do { w = PlatformSpecificWaitPid(cpid, &status, WUNTRACED); if (w == -1) { if(EINTR ==errno) continue; /* OS X debugger */ result->addFailure(TestFailure(shell, "Call to waitpid() failed")); return; } if (WIFEXITED(status) && WEXITSTATUS(status) > result->getFailureCount()) { result->addFailure(TestFailure(shell, "Failed in separate process")); } else if (WIFSIGNALED(status)) { SimpleString signal(StringFrom(WTERMSIG(status))); { SimpleString message("Failed in separate process - killed by signal "); message += signal; result->addFailure(TestFailure(shell, message)); } } else if (WIFSTOPPED(status)) { result->addFailure(TestFailure(shell, "Stopped in separate process - continuing")); kill(w, SIGCONT); } } while (!WIFEXITED(status) && !WIFSIGNALED(status)); } } static pid_t PlatformSpecificForkImplementation(void) { return fork(); } static pid_t PlatformSpecificWaitPidImplementation(int pid, int* status, int options) { return waitpid(pid, status, options); } #endif TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell* shell, TestPlugin* plugin, TestResult* result) = GccPlatformSpecificRunTestInASeperateProcess; int (*PlatformSpecificFork)(void) = PlatformSpecificForkImplementation; int (*PlatformSpecificWaitPid)(int, int*, int) = PlatformSpecificWaitPidImplementation; extern "C" { static int PlatformSpecificSetJmpImplementation(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } /* * MacOSX clang 3.0 doesn't seem to recognize longjmp and thus complains about __no_return_. * The later clang compilers complain when it isn't there. So only way is to check the clang compiler here :( */ #if !((__clang_major__ == 3) && (__clang_minor__ == 0)) __no_return__ #endif static void PlatformSpecificLongJmpImplementation() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void PlatformSpecificRestoreJumpBufferImplementation() { jmp_buf_index--; } void (*PlatformSpecificLongJmp)() = PlatformSpecificLongJmpImplementation; int (*PlatformSpecificSetJmp)(void (*)(void*), void*) = PlatformSpecificSetJmpImplementation; void (*PlatformSpecificRestoreJumpBuffer)() = PlatformSpecificRestoreJumpBufferImplementation; ///////////// Time in millis static long TimeInMillisImplementation() { struct timeval tv; struct timezone tz; gettimeofday(&tv, &tz); return (tv.tv_sec * 1000) + (long)((double)tv.tv_usec * 0.001); } static const char* TimeStringImplementation() { time_t tm = time(NULL); static char dateTime[80]; struct tm *tmp = localtime(&tm); strftime(dateTime, 80, "%Y-%m-%dT%H:%M:%S", tmp); return dateTime; } long (*GetPlatformSpecificTimeInMillis)() = TimeInMillisImplementation; const char* (*GetPlatformSpecificTimeString)() = TimeStringImplementation; /* Wish we could add an attribute to the format for discovering mis-use... but the __attribute__(format) seems to not work on va_list */ #ifdef __clang__ #pragma clang diagnostic ignored "-Wformat-nonliteral" #endif int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list va_args_list) = vsnprintf; static PlatformSpecificFile PlatformSpecificFOpenImplementation(const char* filename, const char* flag) { return fopen(filename, flag); } static void PlatformSpecificFPutsImplementation(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } static void PlatformSpecificFCloseImplementation(PlatformSpecificFile file) { fclose((FILE*)file); } static void PlatformSpecificFlushImplementation() { fflush(stdout); } PlatformSpecificFile (*PlatformSpecificFOpen)(const char*, const char*) = PlatformSpecificFOpenImplementation; void (*PlatformSpecificFPuts)(const char*, PlatformSpecificFile) = PlatformSpecificFPutsImplementation; void (*PlatformSpecificFClose)(PlatformSpecificFile) = PlatformSpecificFCloseImplementation; int (*PlatformSpecificPutchar)(int) = putchar; void (*PlatformSpecificFlush)() = PlatformSpecificFlushImplementation; void* (*PlatformSpecificMalloc)(size_t size) = malloc; void* (*PlatformSpecificRealloc)(void*, size_t) = realloc; void (*PlatformSpecificFree)(void* memory) = free; void* (*PlatformSpecificMemCpy)(void*, const void*, size_t) = memcpy; void* (*PlatformSpecificMemset)(void*, int, size_t) = memset; static int IsNanImplementation(double d) { return isnan((float)d); } double (*PlatformSpecificFabs)(double) = fabs; int (*PlatformSpecificIsNan)(double) = IsNanImplementation; int (*PlatformSpecificAtExit)(void(*func)(void)) = atexit; /// this was undefined before static PlatformSpecificMutex PThreadMutexCreate(void) { pthread_mutex_t *mutex = new pthread_mutex_t; pthread_mutex_init(mutex, NULL); return (PlatformSpecificMutex)mutex; } static void PThreadMutexLock(PlatformSpecificMutex mtx) { pthread_mutex_lock((pthread_mutex_t *)mtx); } static void PThreadMutexUnlock(PlatformSpecificMutex mtx) { pthread_mutex_unlock((pthread_mutex_t *)mtx); } static void PThreadMutexDestroy(PlatformSpecificMutex mtx) { pthread_mutex_t *mutex = (pthread_mutex_t *)mtx; pthread_mutex_destroy(mutex); delete mutex; } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = PThreadMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = PThreadMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = PThreadMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = PThreadMutexDestroy; } cpputest-3.7.2/src/Platforms/C2000/UtestPlatform.cpp000644 000765 000024 00000016264 12521603460 023073 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Un-comment to use buffer instead of std out */ // #define USE_BUFFER_OUTPUT 1 #include #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #define far // eliminate "meaningless type qualifier" warning #include #include #include #include #include #include #include #undef far #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; #if USE_BUFFER_OUTPUT // Buffer for crude output routine #define BUFFER_SIZE 4096 static char buffer [BUFFER_SIZE]; /* "never used" warning is OK */ static int idx = 0; #endif TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } static void C2000RunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { result->addFailure(TestFailure(shell, "-p doesn't work on CL2000 as it is lacking fork.\b")); } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell*, TestPlugin*, TestResult*) = C2000RunTestInASeperateProcess; extern "C" { static int C2000SetJmp(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } static void C2000LongJmp() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void C2000RestoreJumpBuffer() { jmp_buf_index--; } int (*PlatformSpecificSetJmp)(void (*function) (void*), void*) = C2000SetJmp; void (*PlatformSpecificLongJmp)(void) = C2000LongJmp; void (*PlatformSpecificRestoreJumpBuffer)(void) = C2000RestoreJumpBuffer; static long C2000TimeInMillis() { /* The TI c2000 platform does not have Posix support and thus lacks struct timespec. * Also, clock() always returns 0 in the simulator. Hence we work with struct tm.tm_hour * This has two consequences: * (1) We need to sum up the part in order to get an "elapsed since" time value, * rather than just using tm_sec. * (2) There is a possibility of overflow, since we stop at the hour * (3) Resolution is 1 s, even though we return ms. */ time_t t = time((time_t*)0); struct tm * ptm = gmtime(&t); long result = (long) ((ptm->tm_sec + ptm->tm_min * (time_t)60 + ptm->tm_hour * (time_t)3600) * (time_t)1000); return result; } static const char* TimeStringImplementation() { time_t tm = time(NULL); return ctime(&tm); } long (*GetPlatformSpecificTimeInMillis)() = C2000TimeInMillis; const char* (*GetPlatformSpecificTimeString)() = TimeStringImplementation; extern int vsnprintf(char*, size_t, const char*, va_list); // not std::vsnprintf() extern int (*PlatformSpecificVSNprintf)(char *, size_t, const char*, va_list) = vsnprintf; PlatformSpecificFile C2000FOpen(const char* filename, const char* flag) { return fopen(filename, flag); } static void C2000FPuts(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } static void C2000FClose(PlatformSpecificFile file) { fclose((FILE*)file); } PlatformSpecificFile (*PlatformSpecificFOpen)(const char* filename, const char* flag) = C2000FOpen; void (*PlatformSpecificFPuts)(const char* str, PlatformSpecificFile file) = C2000FPuts; void (*PlatformSpecificFClose)(PlatformSpecificFile file) = C2000FClose; static int CL2000Putchar(int c) { #if USE_BUFFER_OUTPUT if(idx < BUFFER_SIZE) { buffer[idx] = (char) c; idx++; /* "buffer[idx]" instead of "c" eliminates "never used" warning */ return (buffer[idx]); } else { return EOF; } #else return putchar(c); #endif } static void CL2000Flush() { fflush(stdout); } extern int (*PlatformSpecificPutchar)(int c) = CL2000Putchar; extern void (*PlatformSpecificFlush)(void) = CL2000Flush; static void* C2000Malloc(size_t size) { return (void*)far_malloc((unsigned long)size); } static void* C2000Realloc (void* memory, size_t size) { return (void*)far_realloc((long)memory, (unsigned long)size); } static void C2000Free(void* memory) { far_free((long)memory); } static void* C2000MemCpy(void* s1, const void* s2, size_t size) { return (void*)far_memlcpy((long)s1, (long)s2, size); } static void* C2000Memset(void* mem, int c, size_t size) { register unsigned long i = size; register long p = (long) mem; while (i--) *__farptr_to_word(p++) = c; return mem; } void* (*PlatformSpecificMalloc)(size_t size) = C2000Malloc; void* (*PlatformSpecificRealloc)(void* memory, size_t size) = C2000Realloc; void (*PlatformSpecificFree)(void* memory) = C2000Free; void* (*PlatformSpecificMemCpy)(void* s1, const void* s2, size_t size) = C2000MemCpy; void* (*PlatformSpecificMemset)(void* mem, int c, size_t size) = C2000Memset; /* double PlatformSpecificFabs(double d) { return fabs(d); } */ double (*PlatformSpecificFabs)(double) = fabs; static int IsNanImplementation(double d) { return 0; } int (*PlatformSpecificIsNan)(double d) = IsNanImplementation; static PlatformSpecificMutex DummyMutexCreate(void) { return 0; } static void DummyMutexLock(PlatformSpecificMutex mtx) { } static void DummyMutexUnlock(PlatformSpecificMutex mtx) { } static void DummyMutexDestroy(PlatformSpecificMutex mtx) { } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = DummyMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = DummyMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = DummyMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = DummyMutexDestroy; }cpputest-3.7.2/src/Platforms/armcc/UtestPlatform.cpp000644 000765 000024 00000014370 12521603460 023470 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #define far // eliminate "meaningless type qualifier" warning #include #include #include #include #include #include #include #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; extern "C" int PlatformSpecificSetJmpImplementation(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } static void PlatformSpecificLongJmpImplementation() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void PlatformSpecificRestoreJumpBufferImplementation() { jmp_buf_index--; } extern "C" void (*PlatformSpecificLongJmp)() = PlatformSpecificLongJmpImplementation; extern "C" int (*PlatformSpecificSetJmp)(void (*)(void*), void*) = PlatformSpecificSetJmpImplementation; extern "C" void (*PlatformSpecificRestoreJumpBuffer)() = PlatformSpecificRestoreJumpBufferImplementation; static void PlatformSpecificRunTestInASeperateProcessImplementation(UtestShell* shell, TestPlugin* plugin, TestResult* result) { printf("-p isn' implemented for armcc. Running inside the process\b"); shell->runOneTest(plugin, *result); } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell* shell, TestPlugin* plugin, TestResult* result) = PlatformSpecificRunTestInASeperateProcessImplementation; TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } ///////////// Time in millis /* * In Keil MDK-ARM, clock() default implementation used semihosting. * Resolutions is user adjustable (1 ms for now) */ static long TimeInMillisImplementation() { clock_t t = clock(); return t; } extern "C" long (*GetPlatformSpecificTimeInMillis)() = TimeInMillisImplementation; static const char* TimeStringImplementation() { time_t tm = time(NULL); return ctime(&tm); } extern "C" const char* (*GetPlatformSpecificTimeString)() = TimeStringImplementation; int PlatformSpecificAtoI(const char* str) { return atoi(str); } /* The ARMCC compiler will compile this function with C++ linkage, unless * we specifically tell it to use C linkage again, in the function definiton. */ extern "C" int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list args) = vsnprintf; static PlatformSpecificFile PlatformSpecificFOpenImplementation(const char* filename, const char* flag) { return fopen(filename, flag); } static void PlatformSpecificFPutsImplementation(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } static void PlatformSpecificFCloseImplementation(PlatformSpecificFile file) { fclose((FILE*)file); } static void PlatformSpecificFlushImplementation() { fflush(stdout); } extern "C" PlatformSpecificFile (*PlatformSpecificFOpen)(const char*, const char*) = PlatformSpecificFOpenImplementation; extern "C" void (*PlatformSpecificFPuts)(const char*, PlatformSpecificFile) = PlatformSpecificFPutsImplementation; extern "C" void (*PlatformSpecificFClose)(PlatformSpecificFile) = PlatformSpecificFCloseImplementation; extern "C" int (*PlatformSpecificPutchar)(int) = putchar; extern "C" void (*PlatformSpecificFlush)() = PlatformSpecificFlushImplementation; extern "C" void* (*PlatformSpecificMalloc)(size_t) = malloc; extern "C" void* (*PlatformSpecificRealloc) (void*, size_t) = realloc; extern "C" void (*PlatformSpecificFree)(void*) = free; extern "C" void* (*PlatformSpecificMemCpy)(void* s1, const void* s2, size_t size) = memcpy; extern "C" void* (*PlatformSpecificMemset)(void*, int, size_t) = memset; static int IsNanImplementation(double d) { return isnan(d); } extern "C" int (*PlatformSpecificIsNan)(double) = IsNanImplementation; extern "C" double (*PlatformSpecificFabs)(double) = fabs; extern "C" int (*PlatformSpecificAtExit)(void(*func)(void)) = atexit; /// this was undefined before static PlatformSpecificMutex DummyMutexCreate(void) { return 0; } static void DummyMutexLock(PlatformSpecificMutex mtx) { } static void DummyMutexUnlock(PlatformSpecificMutex mtx) { } static void DummyMutexDestroy(PlatformSpecificMutex mtx) { } extern "C" PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = DummyMutexCreate; extern "C" void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = DummyMutexLock; extern "C" void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = DummyMutexUnlock; extern "C" void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = DummyMutexDestroy; cpputest-3.7.2/src/CppUTestExt/CMakeLists.txt000644 000765 000024 00000004053 12521603460 022044 0ustar00basvoddestaff000000 000000 set(CppUTestExt_src CodeMemoryReportFormatter.cpp MemoryReporterPlugin.cpp MockFailure.cpp MockSupportPlugin.cpp MockActualCall.cpp MockSupport_c.cpp MemoryReportAllocator.cpp MockExpectedCall.cpp MockNamedValue.cpp OrderedTest.cpp MemoryReportFormatter.cpp MockExpectedCallsList.cpp MockSupport.cpp ) set(CppUTestExt_headers ${CppUTestRootDirectory}/include/CppUTestExt/CodeMemoryReportFormatter.h ${CppUTestRootDirectory}/include/CppUTestExt/MemoryReportAllocator.h ${CppUTestRootDirectory}/include/CppUTestExt/MockExpectedCall.h ${CppUTestRootDirectory}/include/CppUTestExt/MockCheckedExpectedCall.h ${CppUTestRootDirectory}/include/CppUTestExt/MockExpectedCallsList.h ${CppUTestRootDirectory}/include/CppUTestExt/MockSupportPlugin.h ${CppUTestRootDirectory}/include/CppUTestExt/MemoryReportFormatter.h ${CppUTestRootDirectory}/include/CppUTestExt/MockFailure.h ${CppUTestRootDirectory}/include/CppUTestExt/MockSupport.h ${CppUTestRootDirectory}/include/CppUTestExt/MockSupport_c.h ${CppUTestRootDirectory}/include/CppUTestExt/GMock.h ${CppUTestRootDirectory}/include/CppUTestExt/GTest.h ${CppUTestRootDirectory}/include/CppUTestExt/MemoryReporterPlugin.h ${CppUTestRootDirectory}/include/CppUTestExt/OrderedTest.h ${CppUTestRootDirectory}/include/CppUTestExt/GTestConvertor.h ${CppUTestRootDirectory}/include/CppUTestExt/MockActualCall.h ${CppUTestRootDirectory}/include/CppUTestExt/MockCheckedActualCall.h ${CppUTestRootDirectory}/include/CppUTestExt/MockNamedValue.h ${CppUTestRootDirectory}/include/CppUTestExt/MockSupport.h ) add_library(CppUTestExt STATIC ${CppUTestExt_src}) target_link_libraries(CppUTestExt ${CPPUNIT_EXTERNAL_LIBRARIES}) install(FILES ${CppUTestExt_headers} DESTINATION include/CppUTestExt) install(TARGETS CppUTestExt RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) cpputest-3.7.2/src/CppUTestExt/CodeMemoryReportFormatter.cpp000644 000765 000024 00000016211 12521603460 025132 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/CodeMemoryReportFormatter.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #define MAX_VARIABLE_NAME_LINE_PART 10 #define MAX_VARIABLE_NAME_FILE_PART 53 #define MAX_VARIABLE_NAME_SEPERATOR_PART 1 #define MAX_VARIABLE_NAME_LENGTH MAX_VARIABLE_NAME_FILE_PART + MAX_VARIABLE_NAME_SEPERATOR_PART + MAX_VARIABLE_NAME_LINE_PART struct CodeReportingAllocationNode { char variableName_[MAX_VARIABLE_NAME_LENGTH + 1]; void* memory_; CodeReportingAllocationNode* next_; }; CodeMemoryReportFormatter::CodeMemoryReportFormatter(TestMemoryAllocator* internalAllocator) : codeReportingList_(NULL), internalAllocator_(internalAllocator) { } CodeMemoryReportFormatter::~CodeMemoryReportFormatter() { clearReporting(); } void CodeMemoryReportFormatter::clearReporting() { while (codeReportingList_) { CodeReportingAllocationNode* oldNode = codeReportingList_; codeReportingList_ = codeReportingList_->next_; internalAllocator_->free_memory((char*) oldNode, __FILE__, __LINE__); } } void CodeMemoryReportFormatter::addNodeToList(const char* variableName, void* memory, CodeReportingAllocationNode* next) { CodeReportingAllocationNode* newNode = (CodeReportingAllocationNode*) (void*) internalAllocator_->alloc_memory(sizeof(CodeReportingAllocationNode), __FILE__, __LINE__); newNode->memory_ = memory; newNode->next_ = next; SimpleString::StrNCpy(newNode->variableName_, variableName, MAX_VARIABLE_NAME_LENGTH); codeReportingList_ = newNode; } CodeReportingAllocationNode* CodeMemoryReportFormatter::findNode(void* memory) { CodeReportingAllocationNode* current = codeReportingList_; while (current && current->memory_ != memory) { current = current->next_; } return current; } static SimpleString extractFileNameFromPath(const char* file) { const char* fileNameOnly = file + SimpleString::StrLen(file); while (fileNameOnly != file && *fileNameOnly != '/') fileNameOnly--; if (*fileNameOnly == '/') fileNameOnly++; return fileNameOnly; } SimpleString CodeMemoryReportFormatter::createVariableNameFromFileLineInfo(const char *file, int line) { SimpleString fileNameOnly = extractFileNameFromPath(file); fileNameOnly.replace(".", "_"); for (int i = 1; i < 100; i++) { SimpleString variableName = StringFromFormat("%s_%d_%d", fileNameOnly.asCharString(), line, i); if (!variableExists(variableName)) return variableName; } return ""; } bool CodeMemoryReportFormatter::isNewAllocator(TestMemoryAllocator* allocator) { return SimpleString::StrCmp(allocator->alloc_name(), defaultNewAllocator()->alloc_name()) == 0 || SimpleString::StrCmp(allocator->alloc_name(), defaultNewArrayAllocator()->alloc_name()) == 0; } bool CodeMemoryReportFormatter::variableExists(const SimpleString& variableName) { CodeReportingAllocationNode* current = codeReportingList_; while (current) { if (variableName == current->variableName_) return true; current = current->next_; } return false; } SimpleString CodeMemoryReportFormatter::getAllocationString(TestMemoryAllocator* allocator, const SimpleString& variableName, size_t size) { if (isNewAllocator(allocator)) return StringFromFormat("char* %s = new char[%lu]; /* using %s */", variableName.asCharString(), (unsigned long) size, allocator->alloc_name()); else return StringFromFormat("void* %s = malloc(%lu);", variableName.asCharString(), (unsigned long) size); } SimpleString CodeMemoryReportFormatter::getDeallocationString(TestMemoryAllocator* allocator, const SimpleString& variableName, const char* file, int line) { if (isNewAllocator(allocator)) return StringFromFormat("delete [] %s; /* using %s at %s:%d */", variableName.asCharString(), allocator->free_name(), file, line); else return StringFromFormat("free(%s); /* at %s:%d */", variableName.asCharString(), file, line); } void CodeMemoryReportFormatter::report_test_start(TestResult* result, UtestShell& test) { clearReporting(); result->print(StringFromFormat("*/\nTEST(%s_memoryReport, %s)\n{ /* at %s:%d */\n", test.getGroup().asCharString(), test.getName().asCharString(), test.getFile().asCharString(), test.getLineNumber()).asCharString()); } void CodeMemoryReportFormatter::report_test_end(TestResult* result, UtestShell&) { result->print("}/*"); } void CodeMemoryReportFormatter::report_testgroup_start(TestResult* result, UtestShell& test) { result->print(StringFromFormat("*/TEST_GROUP(%s_memoryReport)\n{\n};\n/*", test.getGroup().asCharString()).asCharString()); } void CodeMemoryReportFormatter::report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t size, char* memory, const char* file, int line) { SimpleString variableName = createVariableNameFromFileLineInfo(file, line); result->print(StringFromFormat("\t%s\n", getAllocationString(allocator, variableName, size).asCharString()).asCharString()); addNodeToList(variableName.asCharString(), memory, codeReportingList_); } void CodeMemoryReportFormatter::report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* memory, const char* file, int line) { SimpleString variableName; CodeReportingAllocationNode* node = findNode(memory); if (memory == NULL) variableName = "NULL"; else variableName = node->variableName_; result->print(StringFromFormat("\t%s\n", getDeallocationString(allocator, variableName, file, line).asCharString()).asCharString()); } cpputest-3.7.2/src/CppUTestExt/MemoryReportAllocator.cpp000644 000765 000024 00000006034 12521603460 024316 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTestExt/MemoryReportFormatter.h" MemoryReportAllocator::MemoryReportAllocator() : result_(NULL), realAllocator_(NULL), formatter_(NULL) { } MemoryReportAllocator::~MemoryReportAllocator() { } const char* MemoryReportAllocator::name() { return realAllocator_->name(); } const char* MemoryReportAllocator::alloc_name() { return realAllocator_->alloc_name(); } const char* MemoryReportAllocator::free_name() { return realAllocator_->free_name(); } void MemoryReportAllocator::setRealAllocator(TestMemoryAllocator* allocator) { realAllocator_ = allocator; } TestMemoryAllocator* MemoryReportAllocator::getRealAllocator() { return realAllocator_; } void MemoryReportAllocator::setTestResult(TestResult* result) { result_ = result; } void MemoryReportAllocator::setFormatter(MemoryReportFormatter* formatter) { formatter_ = formatter; } char* MemoryReportAllocator::alloc_memory(size_t size, const char* file, int line) { char* memory = realAllocator_->alloc_memory(size, file, line); if (result_ && formatter_) formatter_->report_alloc_memory(result_, this, size, memory, file, line); return memory; } void MemoryReportAllocator::free_memory(char* memory, const char* file, int line) { realAllocator_->free_memory(memory, file, line); if (result_ && formatter_) formatter_->report_free_memory(result_, this, memory, file, line); } cpputest-3.7.2/src/CppUTestExt/MemoryReporterPlugin.cpp000644 000765 000024 00000011205 12521603460 024157 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MemoryReporterPlugin.h" #include "CppUTestExt/MemoryReportFormatter.h" #include "CppUTestExt/CodeMemoryReportFormatter.h" MemoryReporterPlugin::MemoryReporterPlugin() : TestPlugin("MemoryReporterPlugin"), formatter_(NULL) { } MemoryReporterPlugin::~MemoryReporterPlugin() { removeGlobalMemoryReportAllocators(); destroyMemoryFormatter(formatter_); } bool MemoryReporterPlugin::parseArguments(int /* ac */, const char** av, int index) { SimpleString argument (av[index]); if (argument.contains("-pmemoryreport=")) { argument.replace("-pmemoryreport=", ""); destroyMemoryFormatter(formatter_); formatter_ = createMemoryFormatter(argument); return true; } return false; } MemoryReportFormatter* MemoryReporterPlugin::createMemoryFormatter(const SimpleString& type) { if (type == "normal") { return new NormalMemoryReportFormatter; } else if (type == "code") { return new CodeMemoryReportFormatter(defaultMallocAllocator()); } return NULL; } void MemoryReporterPlugin::destroyMemoryFormatter(MemoryReportFormatter* formatter) { delete formatter; } void MemoryReporterPlugin::setGlobalMemoryReportAllocators() { mallocAllocator.setRealAllocator(getCurrentMallocAllocator()); setCurrentMallocAllocator(&mallocAllocator); newAllocator.setRealAllocator(getCurrentNewAllocator()); setCurrentNewAllocator(&newAllocator); newArrayAllocator.setRealAllocator(getCurrentNewArrayAllocator()); setCurrentNewArrayAllocator(&newArrayAllocator); } void MemoryReporterPlugin::removeGlobalMemoryReportAllocators() { if (getCurrentNewAllocator() == &newAllocator) setCurrentNewAllocator(newAllocator.getRealAllocator()); if (getCurrentNewArrayAllocator() == &newArrayAllocator) setCurrentNewArrayAllocator(newArrayAllocator.getRealAllocator()); if (getCurrentMallocAllocator() == &mallocAllocator) setCurrentMallocAllocator(mallocAllocator.getRealAllocator()); } void MemoryReporterPlugin::initializeAllocator(MemoryReportAllocator* allocator, TestResult & result) { allocator->setFormatter(formatter_); allocator->setTestResult((&result)); } void MemoryReporterPlugin::preTestAction(UtestShell& test, TestResult& result) { if (formatter_ == NULL) return; initializeAllocator(&mallocAllocator, result); initializeAllocator(&newAllocator, result); initializeAllocator(&newArrayAllocator, result); setGlobalMemoryReportAllocators(); if (test.getGroup() != currentTestGroup_) { formatter_->report_testgroup_start(&result, test); currentTestGroup_ = test.getGroup(); } formatter_->report_test_start(&result, test); } void MemoryReporterPlugin::postTestAction(UtestShell& test, TestResult& result) { if (formatter_ == NULL) return; removeGlobalMemoryReportAllocators(); formatter_->report_test_end(&result, test); if (test.getNext() == NULL || test.getNext()->getGroup() != currentTestGroup_) formatter_->report_testgroup_end(&result, test); } cpputest-3.7.2/src/CppUTestExt/MemoryReportFormatter.cpp000644 000765 000024 00000006551 12521603460 024345 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTestExt/MemoryReportFormatter.h" NormalMemoryReportFormatter::NormalMemoryReportFormatter() { } NormalMemoryReportFormatter::~NormalMemoryReportFormatter() { } void NormalMemoryReportFormatter::report_test_start(TestResult* result, UtestShell& test) { result->print(StringFromFormat("TEST(%s, %s)\n", test.getGroup().asCharString(), test.getName().asCharString()).asCharString()); } void NormalMemoryReportFormatter::report_test_end(TestResult* result, UtestShell& test) { result->print(StringFromFormat("ENDTEST(%s, %s)\n", test.getGroup().asCharString(), test.getName().asCharString()).asCharString()); } void NormalMemoryReportFormatter::report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t size, char* memory, const char* file, int line) { result->print(StringFromFormat("\tAllocation using %s of size: %lu pointer: %p at %s:%d\n", allocator->alloc_name(), (unsigned long) size, memory, file, line).asCharString()); } void NormalMemoryReportFormatter::report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* memory, const char* file, int line) { result->print(StringFromFormat("\tDeallocation using %s of pointer: %p at %s:%d\n", allocator->free_name(), memory, file, line).asCharString()); } void NormalMemoryReportFormatter::report_testgroup_start(TestResult* result, UtestShell& test) { const size_t line_size = 80; SimpleString groupName = StringFromFormat("TEST GROUP(%s)", test.getGroup().asCharString()); size_t beginPos = (line_size/2) - (groupName.size()/2); SimpleString line("-", beginPos); line += groupName; line += SimpleString("-", line_size - line.size()); line += "\n"; result->print(line.asCharString()); } cpputest-3.7.2/src/CppUTestExt/MockActualCall.cpp000644 000765 000024 00000043353 12521603460 022635 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockCheckedActualCall.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockFailure.h" #include "CppUTest/PlatformSpecificFunctions.h" MockActualCall::MockActualCall() { } MockActualCall::~MockActualCall() { } void MockCheckedActualCall::setName(const SimpleString& name) { functionName_ = name; } SimpleString MockCheckedActualCall::getName() const { return functionName_; } MockCheckedActualCall::MockCheckedActualCall(int callOrder, MockFailureReporter* reporter, const MockExpectedCallsList& allExpectations) : callOrder_(callOrder), reporter_(reporter), state_(CALL_SUCCEED), fulfilledExpectation_(NULL), allExpectations_(allExpectations), outputParameterExpectations_(NULL) { unfulfilledExpectations_.addUnfilfilledExpectations(allExpectations); } MockCheckedActualCall::~MockCheckedActualCall() { cleanUpOutputParameterList(); } void MockCheckedActualCall::setMockFailureReporter(MockFailureReporter* reporter) { reporter_ = reporter; } UtestShell* MockCheckedActualCall::getTest() const { return reporter_->getTestToFail(); } void MockCheckedActualCall::failTest(const MockFailure& failure) { if (!hasFailed()) { setState(CALL_FAILED); reporter_->failTest(failure); } } void MockCheckedActualCall::finalizeOutputParameters(MockCheckedExpectedCall* expectedCall) { for (MockOutputParametersListNode* p = outputParameterExpectations_; p; p = p->next_) { const void* data = expectedCall->getOutputParameter(*p->name_).getConstPointerValue(); size_t size = expectedCall->getOutputParameter(*p->name_).getSize(); PlatformSpecificMemCpy(p->ptr_, data, size); } } void MockCheckedActualCall::finalizeCallWhenFulfilled() { if (unfulfilledExpectations_.hasFulfilledExpectationsWithoutIgnoredParameters()) { finalizeOutputParameters(unfulfilledExpectations_.getOneFulfilledExpectationWithIgnoredParameters()); } if (unfulfilledExpectations_.hasFulfilledExpectations()) { fulfilledExpectation_ = unfulfilledExpectations_.removeOneFulfilledExpectation(); callHasSucceeded(); } } void MockCheckedActualCall::callHasSucceeded() { setState(CALL_SUCCEED); unfulfilledExpectations_.resetExpectations(); } MockActualCall& MockCheckedActualCall::withName(const SimpleString& name) { setName(name); setState(CALL_IN_PROGESS); unfulfilledExpectations_.onlyKeepUnfulfilledExpectationsRelatedTo(name); if (unfulfilledExpectations_.isEmpty()) { MockUnexpectedCallHappenedFailure failure(getTest(), name, allExpectations_); failTest(failure); return *this; } unfulfilledExpectations_.callWasMade(callOrder_); finalizeCallWhenFulfilled(); return *this; } MockActualCall& MockCheckedActualCall::withCallOrder(int) { return *this; } void MockCheckedActualCall::checkInputParameter(const MockNamedValue& actualParameter) { unfulfilledExpectations_.onlyKeepUnfulfilledExpectationsWithInputParameter(actualParameter); if (unfulfilledExpectations_.isEmpty()) { MockUnexpectedInputParameterFailure failure(getTest(), getName(), actualParameter, allExpectations_); failTest(failure); return; } unfulfilledExpectations_.parameterWasPassed(actualParameter.getName()); finalizeCallWhenFulfilled(); } void MockCheckedActualCall::checkOutputParameter(const MockNamedValue& outputParameter) { unfulfilledExpectations_.onlyKeepUnfulfilledExpectationsWithOutputParameter(outputParameter); if (unfulfilledExpectations_.isEmpty()) { MockUnexpectedOutputParameterFailure failure(getTest(), getName(), outputParameter, allExpectations_); failTest(failure); return; } unfulfilledExpectations_.outputParameterWasPassed(outputParameter.getName()); finalizeCallWhenFulfilled(); } MockActualCall& MockCheckedActualCall::withUnsignedIntParameter(const SimpleString& name, unsigned int value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withIntParameter(const SimpleString& name, int value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withLongIntParameter(const SimpleString& name, long int value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withDoubleParameter(const SimpleString& name, double value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withStringParameter(const SimpleString& name, const char* value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withPointerParameter(const SimpleString& name, void* value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withConstPointerParameter(const SimpleString& name, const void* value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withParameterOfType(const SimpleString& type, const SimpleString& name, const void* value) { MockNamedValue actualParameter(name); actualParameter.setObjectPointer(type, value); if (actualParameter.getComparator() == NULL) { MockNoWayToCompareCustomTypeFailure failure(getTest(), type); failTest(failure); return *this; } checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withOutputParameter(const SimpleString& name, void* output) { addOutputParameter(name, output); MockNamedValue outputParameter(name); outputParameter.setValue(output); checkOutputParameter(outputParameter); return *this; } bool MockCheckedActualCall::isFulfilled() const { return state_ == CALL_SUCCEED; } bool MockCheckedActualCall::hasFailed() const { return state_ == CALL_FAILED; } void MockCheckedActualCall::checkExpectations() { if (state_ != CALL_IN_PROGESS) return; if (! unfulfilledExpectations_.hasUnfullfilledExpectations()) FAIL("Actual call is in progress. Checking expectations. But no unfulfilled expectations. Cannot happen.") // LCOV_EXCL_LINE fulfilledExpectation_ = unfulfilledExpectations_.removeOneFulfilledExpectationWithIgnoredParameters(); if (fulfilledExpectation_) { callHasSucceeded(); return; } if (unfulfilledExpectations_.hasUnfulfilledExpectationsBecauseOfMissingParameters()) { MockExpectedParameterDidntHappenFailure failure(getTest(), getName(), allExpectations_); failTest(failure); } else { MockExpectedObjectDidntHappenFailure failure(getTest(), getName(), allExpectations_); failTest(failure); } } void MockCheckedActualCall::setState(ActualCallState state) { state_ = state; } MockNamedValue MockCheckedActualCall::returnValue() { checkExpectations(); if (fulfilledExpectation_) return fulfilledExpectation_->returnValue(); return MockNamedValue("no return value"); } int MockCheckedActualCall::returnIntValueOrDefault(int default_value) { if (!hasReturnValue()) { return default_value; } return returnIntValue(); } int MockCheckedActualCall::returnIntValue() { return returnValue().getIntValue(); } unsigned long int MockCheckedActualCall::returnUnsignedLongIntValue() { return returnValue().getUnsignedLongIntValue(); } unsigned long int MockCheckedActualCall::returnUnsignedLongIntValueOrDefault(unsigned long int default_value) { if (!hasReturnValue()) { return default_value; } return returnUnsignedLongIntValue(); } long int MockCheckedActualCall::returnLongIntValue() { return returnValue().getLongIntValue(); } long int MockCheckedActualCall::returnLongIntValueOrDefault(long int default_value) { if (!hasReturnValue()) { return default_value; } return returnLongIntValue(); } double MockCheckedActualCall::returnDoubleValue() { return returnValue().getDoubleValue(); } double MockCheckedActualCall::returnDoubleValueOrDefault(double default_value) { if (!hasReturnValue()) { return default_value; } return returnDoubleValue(); } unsigned int MockCheckedActualCall::returnUnsignedIntValue() { return returnValue().getUnsignedIntValue(); } unsigned int MockCheckedActualCall::returnUnsignedIntValueOrDefault(unsigned int default_value) { if (!hasReturnValue()) { return default_value; } return returnUnsignedIntValue(); } void * MockCheckedActualCall::returnPointerValueOrDefault(void * default_value) { if (!hasReturnValue()) { return default_value; } return returnPointerValue(); } void * MockCheckedActualCall::returnPointerValue() { return returnValue().getPointerValue(); } const void * MockCheckedActualCall::returnConstPointerValue() { return returnValue().getConstPointerValue(); } const void * MockCheckedActualCall::returnConstPointerValueOrDefault(const void * default_value) { if (!hasReturnValue()) { return default_value; } return returnConstPointerValue(); } const char * MockCheckedActualCall::returnStringValueOrDefault(const char * default_value) { if (!hasReturnValue()) { return default_value; } return returnStringValue(); } const char * MockCheckedActualCall::returnStringValue() { return returnValue().getStringValue(); } bool MockCheckedActualCall::hasReturnValue() { return ! returnValue().getName().isEmpty(); } MockActualCall& MockCheckedActualCall::onObject(void* objectPtr) { unfulfilledExpectations_.onlyKeepUnfulfilledExpectationsOnObject(objectPtr); if (unfulfilledExpectations_.isEmpty()) { MockUnexpectedObjectFailure failure(getTest(), getName(), objectPtr, allExpectations_); failTest(failure); return *this; } unfulfilledExpectations_.wasPassedToObject(); finalizeCallWhenFulfilled(); return *this; } void MockCheckedActualCall::addOutputParameter(const SimpleString& name, void* ptr) { SimpleString* nameCopy = new SimpleString(name); MockOutputParametersListNode* newNode = new MockOutputParametersListNode(nameCopy, ptr); if (outputParameterExpectations_ == NULL) outputParameterExpectations_ = newNode; else { MockOutputParametersListNode* lastNode = outputParameterExpectations_; while (lastNode->next_) lastNode = lastNode->next_; lastNode->next_ = newNode; } } void MockCheckedActualCall::cleanUpOutputParameterList() { MockOutputParametersListNode* current = outputParameterExpectations_; MockOutputParametersListNode* toBeDeleted = NULL; while (current) { toBeDeleted = current; outputParameterExpectations_ = current = current->next_; delete toBeDeleted->name_; delete toBeDeleted; } } MockActualCallTrace::MockActualCallTrace() { } MockActualCallTrace::~MockActualCallTrace() { } MockActualCall& MockActualCallTrace::withName(const SimpleString& name) { traceBuffer_ += "\nFunction name:"; traceBuffer_ += name; return *this; } MockActualCall& MockActualCallTrace::withCallOrder(int callOrder) { traceBuffer_ += " withCallOrder:"; traceBuffer_ += StringFrom(callOrder); return *this; } void MockActualCallTrace::addParameterName(const SimpleString& name) { traceBuffer_ += " "; traceBuffer_ += name; traceBuffer_ += ":"; } MockActualCall& MockActualCallTrace::withUnsignedIntParameter(const SimpleString& name, unsigned int value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withIntParameter(const SimpleString& name, int value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withLongIntParameter(const SimpleString& name, long int value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withDoubleParameter(const SimpleString& name, double value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withStringParameter(const SimpleString& name, const char* value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withPointerParameter(const SimpleString& name, void* value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withConstPointerParameter(const SimpleString& name, const void* value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) { traceBuffer_ += " "; traceBuffer_ += typeName; addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withOutputParameter(const SimpleString& name, void* output) { addParameterName(name); traceBuffer_ += StringFrom(output); return *this; } bool MockActualCallTrace::hasReturnValue() { return false; } MockNamedValue MockActualCallTrace::returnValue() { return MockNamedValue(""); } long int MockActualCallTrace::returnLongIntValue() { return 0; } unsigned long int MockActualCallTrace::returnUnsignedLongIntValue() { return 0; } unsigned long int MockActualCallTrace::returnUnsignedLongIntValueOrDefault(unsigned long) { return 0; } long int MockActualCallTrace::returnLongIntValueOrDefault(long int) { return returnLongIntValue(); } int MockActualCallTrace::returnIntValue() { return 0; } double MockActualCallTrace::returnDoubleValue() { return 0.0; } double MockActualCallTrace::returnDoubleValueOrDefault(double) { return returnDoubleValue(); } unsigned int MockActualCallTrace::returnUnsignedIntValue() { return 0; } void * MockActualCallTrace::returnPointerValue() { return NULL; } const void * MockActualCallTrace::returnConstPointerValue() { return NULL; } const void * MockActualCallTrace::returnConstPointerValueOrDefault(const void *) { return returnConstPointerValue(); } void * MockActualCallTrace::returnPointerValueOrDefault(void *) { return returnPointerValue(); } const char * MockActualCallTrace::returnStringValue() { return ""; } const char * MockActualCallTrace::returnStringValueOrDefault(const char *) { return returnStringValue(); } int MockActualCallTrace::returnIntValueOrDefault(int) { return 0; } unsigned int MockActualCallTrace::returnUnsignedIntValueOrDefault(unsigned int) { return returnUnsignedIntValue(); } MockActualCall& MockActualCallTrace::onObject(void* objectPtr) { traceBuffer_ += " onObject:"; traceBuffer_ += StringFrom(objectPtr); return *this; } void MockActualCallTrace::clear() { traceBuffer_ = ""; } const char* MockActualCallTrace::getTraceOutput() { return traceBuffer_.asCharString(); } MockActualCallTrace& MockActualCallTrace::instance() { static MockActualCallTrace call; return call; } MockIgnoredActualCall& MockIgnoredActualCall::instance() { static MockIgnoredActualCall call; return call; } cpputest-3.7.2/src/CppUTestExt/MockExpectedCall.cpp000644 000765 000024 00000047261 12521603460 023167 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockCheckedExpectedCall.h" MockExpectedCall::MockExpectedCall() { } MockExpectedCall::~MockExpectedCall() { } SimpleString StringFrom(const MockNamedValue& parameter) { return parameter.toString(); } void MockCheckedExpectedCall::setName(const SimpleString& name) { functionName_ = name; } SimpleString MockCheckedExpectedCall::getName() const { return functionName_; } MockCheckedExpectedCall::MockCheckedExpectedCall() : ignoreOtherParameters_(false), parametersWereIgnored_(false), callOrder_(0), expectedCallOrder_(NO_EXPECTED_CALL_ORDER), outOfOrder_(true), returnValue_(""), objectPtr_(NULL), wasPassedToObject_(true) { inputParameters_ = new MockNamedValueList(); outputParameters_ = new MockNamedValueList(); } MockCheckedExpectedCall::~MockCheckedExpectedCall() { inputParameters_->clear(); delete inputParameters_; outputParameters_->clear(); delete outputParameters_; } MockExpectedCall& MockCheckedExpectedCall::withName(const SimpleString& name) { setName(name); callOrder_ = NOT_CALLED_YET; return *this; } MockExpectedCall& MockCheckedExpectedCall::withUnsignedIntParameter(const SimpleString& name, unsigned int value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withIntParameter(const SimpleString& name, int value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withLongIntParameter(const SimpleString& name, long int value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withDoubleParameter(const SimpleString& name, double value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withStringParameter(const SimpleString& name, const char* value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withPointerParameter(const SimpleString& name, void* value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withConstPointerParameter(const SimpleString& name, const void* value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withParameterOfType(const SimpleString& type, const SimpleString& name, const void* value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setObjectPointer(type, value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withOutputParameterReturning(const SimpleString& name, const void* value, size_t size) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); outputParameters_->add(newParameter); newParameter->setValue(value); newParameter->setSize(size); return *this; } SimpleString MockCheckedExpectedCall::getInputParameterType(const SimpleString& name) { MockNamedValue * p = inputParameters_->getValueByName(name); return (p) ? p->getType() : ""; } bool MockCheckedExpectedCall::hasInputParameterWithName(const SimpleString& name) { MockNamedValue * p = inputParameters_->getValueByName(name); return p != NULL; } MockNamedValue MockCheckedExpectedCall::getInputParameter(const SimpleString& name) { MockNamedValue * p = inputParameters_->getValueByName(name); return (p) ? *p : MockNamedValue(""); } MockNamedValue MockCheckedExpectedCall::getOutputParameter(const SimpleString& name) { MockNamedValue * p = outputParameters_->getValueByName(name); return (p) ? *p : MockNamedValue(""); } bool MockCheckedExpectedCall::areParametersFulfilled() { MockNamedValueListNode* p; for (p = inputParameters_->begin(); p; p = p->next()) if (! item(p)->isFulfilled()) return false; for (p = outputParameters_->begin(); p; p = p->next()) if (! item(p)->isFulfilled()) return false; return true; } bool MockCheckedExpectedCall::areIgnoredParametersFulfilled() { if (ignoreOtherParameters_) return parametersWereIgnored_; return true; } MockExpectedCall& MockCheckedExpectedCall::ignoreOtherParameters() { ignoreOtherParameters_ = true; return *this; } bool MockCheckedExpectedCall::isFulfilled() { return isFulfilledWithoutIgnoredParameters() && areIgnoredParametersFulfilled(); } bool MockCheckedExpectedCall::isFulfilledWithoutIgnoredParameters() { return callOrder_ != NOT_CALLED_YET && areParametersFulfilled() && wasPassedToObject_; } void MockCheckedExpectedCall::callWasMade(int callOrder) { callOrder_ = callOrder; if (expectedCallOrder_ == NO_EXPECTED_CALL_ORDER) outOfOrder_ = false; else if (callOrder_ == expectedCallOrder_) outOfOrder_ = false; else outOfOrder_ = true; } void MockCheckedExpectedCall::parametersWereIgnored() { parametersWereIgnored_ = true; } void MockCheckedExpectedCall::wasPassedToObject() { wasPassedToObject_ = true; } void MockCheckedExpectedCall::resetExpectation() { callOrder_ = NOT_CALLED_YET; wasPassedToObject_ = (objectPtr_ == NULL); MockNamedValueListNode* p; for (p = inputParameters_->begin(); p; p = p->next()) item(p)->setFulfilled(false); for (p = outputParameters_->begin(); p; p = p->next()) item(p)->setFulfilled(false); } void MockCheckedExpectedCall::inputParameterWasPassed(const SimpleString& name) { for (MockNamedValueListNode* p = inputParameters_->begin(); p; p = p->next()) { if (p->getName() == name) item(p)->setFulfilled(true); } } void MockCheckedExpectedCall::outputParameterWasPassed(const SimpleString& name) { for (MockNamedValueListNode* p = outputParameters_->begin(); p; p = p->next()) { if (p->getName() == name) item(p)->setFulfilled(true); } } SimpleString MockCheckedExpectedCall::getInputParameterValueString(const SimpleString& name) { MockNamedValue * p = inputParameters_->getValueByName(name); return (p) ? StringFrom(*p) : "failed"; } bool MockCheckedExpectedCall::hasInputParameter(const MockNamedValue& parameter) { MockNamedValue * p = inputParameters_->getValueByName(parameter.getName()); return (p) ? p->equals(parameter) : ignoreOtherParameters_; } bool MockCheckedExpectedCall::hasOutputParameter(const MockNamedValue& parameter) { MockNamedValue * p = outputParameters_->getValueByName(parameter.getName()); return (p) ? true : ignoreOtherParameters_; } SimpleString MockCheckedExpectedCall::callToString() { SimpleString str; if (objectPtr_) str = StringFromFormat("(object address: %p)::", objectPtr_); str += getName(); str += " -> "; if (expectedCallOrder_ != NO_EXPECTED_CALL_ORDER) { str += StringFromFormat("expected call order: <%d> -> ", expectedCallOrder_); } if (inputParameters_->begin() == NULL && outputParameters_->begin() == NULL) { str += (ignoreOtherParameters_) ? "all parameters ignored" : "no parameters"; return str; } MockNamedValueListNode* p; for (p = inputParameters_->begin(); p; p = p->next()) { str += StringFromFormat("%s %s: <%s>", p->getType().asCharString(), p->getName().asCharString(), getInputParameterValueString(p->getName()).asCharString()); if (p->next()) str += ", "; } for (p = outputParameters_->begin(); p; p = p->next()) { str += StringFromFormat("%s %s: ", p->getType().asCharString(), p->getName().asCharString()); if (p->next()) str += ", "; } if (ignoreOtherParameters_) str += ", other parameters are ignored"; return str; } SimpleString MockCheckedExpectedCall::missingParametersToString() { SimpleString str; MockNamedValueListNode* p; for (p = inputParameters_->begin(); p; p = p->next()) { if (! item(p)->isFulfilled()) { if (str != "") str += ", "; str += StringFromFormat("%s %s", p->getType().asCharString(), p->getName().asCharString()); } } for (p = outputParameters_->begin(); p; p = p->next()) { if (! item(p)->isFulfilled()) { if (str != "") str += ", "; str += StringFromFormat("%s %s", p->getType().asCharString(), p->getName().asCharString()); } } return str; } bool MockCheckedExpectedCall::relatesTo(const SimpleString& functionName) { return functionName == getName(); } bool MockCheckedExpectedCall::relatesToObject(void*objectPtr) const { return objectPtr_ == objectPtr; } MockCheckedExpectedCall::MockExpectedFunctionParameter* MockCheckedExpectedCall::item(MockNamedValueListNode* node) { return (MockExpectedFunctionParameter*) node->item(); } MockCheckedExpectedCall::MockExpectedFunctionParameter::MockExpectedFunctionParameter(const SimpleString& name) : MockNamedValue(name), fulfilled_(false) { } void MockCheckedExpectedCall::MockExpectedFunctionParameter::setFulfilled(bool b) { fulfilled_ = b; } bool MockCheckedExpectedCall::MockExpectedFunctionParameter::isFulfilled() const { return fulfilled_; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(unsigned int value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(int value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(long int value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(unsigned long int value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(const char* value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(double value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(void* value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(const void* value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::onObject(void* objectPtr) { wasPassedToObject_ = false; objectPtr_ = objectPtr; return *this; } MockNamedValue MockCheckedExpectedCall::returnValue() { return returnValue_; } int MockCheckedExpectedCall::getCallOrder() const { return callOrder_; } MockExpectedCall& MockCheckedExpectedCall::withCallOrder(int callOrder) { expectedCallOrder_ = callOrder; return *this; } bool MockCheckedExpectedCall::isOutOfOrder() const { return outOfOrder_; } struct MockExpectedCallCompositeNode { MockExpectedCallCompositeNode(MockExpectedCall& functionCall, MockExpectedCallCompositeNode* next) : next_(next), call_(functionCall){} MockExpectedCallCompositeNode* next_; MockExpectedCall& call_; }; MockExpectedCallComposite::MockExpectedCallComposite() : head_(NULL) { } MockExpectedCallComposite::~MockExpectedCallComposite() { } void MockExpectedCallComposite::add(MockExpectedCall& call) { head_ = new MockExpectedCallCompositeNode(call, head_); } void MockExpectedCallComposite::clear() { while (head_) { MockExpectedCallCompositeNode* next = head_->next_; delete head_; head_ = next; } } MockExpectedCall& MockExpectedCallComposite::withName(const SimpleString& name) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withName(name); return *this; } MockExpectedCall& MockExpectedCallComposite::withCallOrder(int) { FAIL("withCallOrder not supported for CompositeCalls"); return *this; // LCOV_EXCL_LINE } MockExpectedCall& MockExpectedCallComposite::withUnsignedIntParameter(const SimpleString& name, unsigned int value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withParameter(name, value); return *this; } MockExpectedCall& MockExpectedCallComposite::withIntParameter(const SimpleString& name, int value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withParameter(name, value); return *this; } MockExpectedCall& MockExpectedCallComposite::withLongIntParameter(const SimpleString& name, long int value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withParameter(name, value); return *this; } MockExpectedCall& MockExpectedCallComposite::withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withParameter(name, value); return *this; } MockExpectedCall& MockExpectedCallComposite::withDoubleParameter(const SimpleString& name, double value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withParameter(name, value); return *this; } MockExpectedCall& MockExpectedCallComposite::withStringParameter(const SimpleString& name, const char* value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withParameter(name, value); return *this; } MockExpectedCall& MockExpectedCallComposite::withPointerParameter(const SimpleString& name, void* value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withParameter(name, value); return *this; } MockExpectedCall& MockExpectedCallComposite::withConstPointerParameter(const SimpleString& name, const void* value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withParameter(name, value); return *this; } MockExpectedCall& MockExpectedCallComposite::withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withParameterOfType(typeName, name, value); return *this; } MockExpectedCall& MockExpectedCallComposite::withOutputParameterReturning(const SimpleString& name, const void* value, size_t size) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.withOutputParameterReturning(name, value, size); return *this; } MockExpectedCall& MockExpectedCallComposite::ignoreOtherParameters() { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.ignoreOtherParameters(); return *this; } MockExpectedCall& MockExpectedCallComposite::andReturnValue(unsigned int value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.andReturnValue(value); return *this; } MockExpectedCall& MockExpectedCallComposite::andReturnValue(int value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.andReturnValue(value); return *this; } MockExpectedCall& MockExpectedCallComposite::andReturnValue(long int value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.andReturnValue(value); return *this; } MockExpectedCall& MockExpectedCallComposite::andReturnValue(unsigned long int value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.andReturnValue(value); return *this; } MockExpectedCall& MockExpectedCallComposite::andReturnValue(double value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.andReturnValue(value); return *this; } MockExpectedCall& MockExpectedCallComposite::andReturnValue(const char* value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.andReturnValue(value); return *this; } MockExpectedCall& MockExpectedCallComposite::andReturnValue(void* value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.andReturnValue(value); return *this; } MockExpectedCall& MockExpectedCallComposite::andReturnValue(const void* value) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.andReturnValue(value); return *this; } MockExpectedCall& MockExpectedCallComposite::onObject(void* object) { for (MockExpectedCallCompositeNode* node = head_; node != NULL; node = node->next_) node->call_.onObject(object); return *this; } MockExpectedCall& MockIgnoredExpectedCall::instance() { static MockIgnoredExpectedCall call; return call; } cpputest-3.7.2/src/CppUTestExt/MockExpectedCallsList.cpp000644 000765 000024 00000030435 12521603460 024201 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "CppUTestExt/MockCheckedExpectedCall.h" MockExpectedCallsList::MockExpectedCallsList() : head_(NULL) { } MockExpectedCallsList::~MockExpectedCallsList() { while (head_) { MockExpectedCallsListNode* next = head_->next_; delete head_; head_ = next; } } bool MockExpectedCallsList::hasCallsOutOfOrder() const { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (p->expectedCall_->isOutOfOrder()) return true; return false; } int MockExpectedCallsList::size() const { int count = 0; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) count++; return count; } bool MockExpectedCallsList::isEmpty() const { return size() == 0; } int MockExpectedCallsList::amountOfExpectationsFor(const SimpleString& name) const { int count = 0; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (p->expectedCall_->relatesTo(name)) count++; return count; } int MockExpectedCallsList::amountOfUnfulfilledExpectations() const { int count = 0; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->isFulfilled()) count++; return count; } bool MockExpectedCallsList::hasFulfilledExpectations() const { return (size() - amountOfUnfulfilledExpectations()) != 0; } bool MockExpectedCallsList::hasFulfilledExpectationsWithoutIgnoredParameters() const { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (p->expectedCall_->isFulfilledWithoutIgnoredParameters()) return true; return false; } bool MockExpectedCallsList::hasUnfullfilledExpectations() const { return amountOfUnfulfilledExpectations() != 0; } bool MockExpectedCallsList::hasExpectationWithName(const SimpleString& name) const { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (p->expectedCall_->relatesTo(name)) return true; return false; } void MockExpectedCallsList::addExpectedCall(MockCheckedExpectedCall* call) { MockExpectedCallsListNode* newCall = new MockExpectedCallsListNode(call); if (head_ == NULL) head_ = newCall; else { MockExpectedCallsListNode* lastCall = head_; while (lastCall->next_) lastCall = lastCall->next_; lastCall->next_ = newCall; } } void MockExpectedCallsList::addUnfilfilledExpectations(const MockExpectedCallsList& list) { for (MockExpectedCallsListNode* p = list.head_; p; p = p->next_) if (! p->expectedCall_->isFulfilled()) addExpectedCall(p->expectedCall_); } void MockExpectedCallsList::addExpectationsRelatedTo(const SimpleString& name, const MockExpectedCallsList& list) { for (MockExpectedCallsListNode* p = list.head_; p; p = p->next_) if (p->expectedCall_->relatesTo(name)) addExpectedCall(p->expectedCall_); } void MockExpectedCallsList::addExpectations(const MockExpectedCallsList& list) { for (MockExpectedCallsListNode* p = list.head_; p; p = p->next_) addExpectedCall(p->expectedCall_); } void MockExpectedCallsList::onlyKeepExpectationsRelatedTo(const SimpleString& name) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->relatesTo(name)) p->expectedCall_ = NULL; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepUnfulfilledExpectations() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (p->expectedCall_->isFulfilled()) p->expectedCall_ = NULL; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepUnfulfilledExpectationsRelatedTo(const SimpleString& name) { onlyKeepUnfulfilledExpectations(); onlyKeepExpectationsRelatedTo(name); } void MockExpectedCallsList::onlyKeepExpectationsWithInputParameterName(const SimpleString& name) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->hasInputParameterWithName(name)) p->expectedCall_ = NULL; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepExpectationsWithOutputParameterName(const SimpleString& name) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->hasOutputParameter(name)) p->expectedCall_ = NULL; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepExpectationsWithInputParameter(const MockNamedValue& parameter) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->hasInputParameter(parameter)) p->expectedCall_ = NULL; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepExpectationsOnObject(void* objectPtr) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->relatesToObject(objectPtr)) p->expectedCall_ = NULL; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepUnfulfilledExpectationsWithInputParameter(const MockNamedValue& parameter) { onlyKeepUnfulfilledExpectations(); onlyKeepExpectationsWithInputParameter(parameter); } void MockExpectedCallsList::onlyKeepUnfulfilledExpectationsWithOutputParameter(const MockNamedValue& parameter) { onlyKeepUnfulfilledExpectations(); onlyKeepExpectationsWithOutputParameterName(parameter.getName()); } void MockExpectedCallsList::onlyKeepUnfulfilledExpectationsOnObject(void* objectPtr) { onlyKeepUnfulfilledExpectations(); onlyKeepExpectationsOnObject(objectPtr); } MockCheckedExpectedCall* MockExpectedCallsList::removeOneFulfilledExpectation() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) { if (p->expectedCall_->isFulfilled()) { MockCheckedExpectedCall* fulfilledCall = p->expectedCall_; p->expectedCall_ = NULL; pruneEmptyNodeFromList(); return fulfilledCall; } } return NULL; } MockCheckedExpectedCall* MockExpectedCallsList::getOneFulfilledExpectationWithIgnoredParameters() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) { if (p->expectedCall_->isFulfilledWithoutIgnoredParameters()) { return p->expectedCall_; } } return NULL; } MockCheckedExpectedCall* MockExpectedCallsList::removeOneFulfilledExpectationWithIgnoredParameters() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) { if (p->expectedCall_->isFulfilledWithoutIgnoredParameters()) { MockCheckedExpectedCall* fulfilledCall = p->expectedCall_; p->expectedCall_->parametersWereIgnored(); p->expectedCall_ = NULL; pruneEmptyNodeFromList(); return fulfilledCall; } } return NULL; } void MockExpectedCallsList::pruneEmptyNodeFromList() { MockExpectedCallsListNode* current = head_; MockExpectedCallsListNode* previous = NULL; MockExpectedCallsListNode* toBeDeleted = NULL; while (current) { if (current->expectedCall_ == NULL) { toBeDeleted = current; if (previous == NULL) head_ = current = current->next_; else current = previous->next_ = current->next_; delete toBeDeleted; } else { previous = current; current = current->next_; } } } void MockExpectedCallsList::deleteAllExpectationsAndClearList() { while (head_) { MockExpectedCallsListNode* next = head_->next_; delete head_->expectedCall_; delete head_; head_ = next; } } void MockExpectedCallsList::resetExpectations() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) p->expectedCall_->resetExpectation(); } void MockExpectedCallsList::callWasMade(int callOrder) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) p->expectedCall_->callWasMade(callOrder); } void MockExpectedCallsList::wasPassedToObject() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) p->expectedCall_->wasPassedToObject(); } void MockExpectedCallsList::parameterWasPassed(const SimpleString& parameterName) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) p->expectedCall_->inputParameterWasPassed(parameterName); } void MockExpectedCallsList::outputParameterWasPassed(const SimpleString& parameterName) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) p->expectedCall_->outputParameterWasPassed(parameterName); } MockExpectedCallsList::MockExpectedCallsListNode* MockExpectedCallsList::findNodeWithCallOrderOf(int callOrder) const { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (p->expectedCall_->getCallOrder() == callOrder && p->expectedCall_->isFulfilled()) return p; return NULL; } static SimpleString stringOrNoneTextWhenEmpty(const SimpleString& inputString, const SimpleString& linePrefix) { SimpleString str = inputString; if (str == "") { str += linePrefix; str += ""; } return str; } static SimpleString appendStringOnANewLine(const SimpleString& inputString, const SimpleString& linePrefix, const SimpleString& stringToAppend) { SimpleString str = inputString; if (str != "") str += "\n"; str += linePrefix; str += stringToAppend; return str; } SimpleString MockExpectedCallsList::unfulfilledCallsToString(const SimpleString& linePrefix) const { SimpleString str; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (!p->expectedCall_->isFulfilled()) str = appendStringOnANewLine(str, linePrefix, p->expectedCall_->callToString()); return stringOrNoneTextWhenEmpty(str, linePrefix); } SimpleString MockExpectedCallsList::fulfilledCallsToString(const SimpleString& linePrefix) const { SimpleString str; MockExpectedCallsListNode* nextNodeInOrder; for (int callOrder = 1; (nextNodeInOrder = findNodeWithCallOrderOf(callOrder)); callOrder++) if (nextNodeInOrder) str = appendStringOnANewLine(str, linePrefix, nextNodeInOrder->expectedCall_->callToString()); return stringOrNoneTextWhenEmpty(str, linePrefix); } SimpleString MockExpectedCallsList::missingParametersToString() const { SimpleString str; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->isFulfilled()) str = appendStringOnANewLine(str, "", p->expectedCall_->missingParametersToString()); return stringOrNoneTextWhenEmpty(str, ""); } bool MockExpectedCallsList::hasUnfulfilledExpectationsBecauseOfMissingParameters() const { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->areParametersFulfilled()) return true; return false; } cpputest-3.7.2/src/CppUTestExt/MockFailure.cpp000644 000765 000024 00000021360 12521603460 022211 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockFailure.h" #include "CppUTestExt/MockExpectedCall.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "CppUTestExt/MockNamedValue.h" class MockFailureReporterTestTerminator : public NormalTestTerminator { public: MockFailureReporterTestTerminator(bool crashOnFailure) : crashOnFailure_(crashOnFailure) { } virtual void exitCurrentTest() const { if (crashOnFailure_) UT_CRASH(); NormalTestTerminator::exitCurrentTest(); } // LCOV_EXCL_LINE virtual ~MockFailureReporterTestTerminator() { } private: bool crashOnFailure_; }; void MockFailureReporter::failTest(const MockFailure& failure) { if (!getTestToFail()->hasFailed()) getTestToFail()->failWith(failure, MockFailureReporterTestTerminator(crashOnFailure_)); } // LCOV_EXCL_LINE UtestShell* MockFailureReporter::getTestToFail() { return UtestShell::getCurrent(); } MockFailure::MockFailure(UtestShell* test) : TestFailure(test, "Test failed with MockFailure without an error! Something went seriously wrong.") { } void MockFailure::addExpectationsAndCallHistory(const MockExpectedCallsList& expectations) { message_ += "\tEXPECTED calls that did NOT happen:\n"; message_ += expectations.unfulfilledCallsToString("\t\t"); message_ += "\n\tACTUAL calls that did happen (in call order):\n"; message_ += expectations.fulfilledCallsToString("\t\t"); } void MockFailure::addExpectationsAndCallHistoryRelatedTo(const SimpleString& name, const MockExpectedCallsList& expectations) { MockExpectedCallsList expectationsForFunction; expectationsForFunction.addExpectationsRelatedTo(name, expectations); message_ += "\tEXPECTED calls that DID NOT happen related to function: "; message_ += name; message_ += "\n"; message_ += expectationsForFunction.unfulfilledCallsToString("\t\t"); message_ += "\n\tACTUAL calls that DID happen related to function: "; message_ += name; message_ += "\n"; message_ += expectationsForFunction.fulfilledCallsToString("\t\t"); } MockExpectedCallsDidntHappenFailure::MockExpectedCallsDidntHappenFailure(UtestShell* test, const MockExpectedCallsList& expectations) : MockFailure(test) { message_ = "Mock Failure: Expected call did not happen.\n"; addExpectationsAndCallHistory(expectations); } MockUnexpectedCallHappenedFailure::MockUnexpectedCallHappenedFailure(UtestShell* test, const SimpleString& name, const MockExpectedCallsList& expectations) : MockFailure(test) { int amountOfExpectations = expectations.amountOfExpectationsFor(name); if (amountOfExpectations) message_ = StringFromFormat("Mock Failure: Unexpected additional (%dth) call to function: ", amountOfExpectations+1); else message_ = "Mock Failure: Unexpected call to function: "; message_ += name; message_ += "\n"; addExpectationsAndCallHistory(expectations); } MockCallOrderFailure::MockCallOrderFailure(UtestShell* test, const MockExpectedCallsList& expectations) : MockFailure(test) { message_ = "Mock Failure: Out of order calls"; message_ += "\n"; addExpectationsAndCallHistory(expectations); } MockUnexpectedInputParameterFailure::MockUnexpectedInputParameterFailure(UtestShell* test, const SimpleString& functionName, const MockNamedValue& parameter, const MockExpectedCallsList& expectations) : MockFailure(test) { MockExpectedCallsList expectationsForFunctionWithParameterName; expectationsForFunctionWithParameterName.addExpectationsRelatedTo(functionName, expectations); expectationsForFunctionWithParameterName.onlyKeepExpectationsWithInputParameterName(parameter.getName()); if (expectationsForFunctionWithParameterName.isEmpty()) { message_ = "Mock Failure: Unexpected parameter name to function \""; message_ += functionName; message_ += "\": "; message_ += parameter.getName(); } else { message_ = "Mock Failure: Unexpected parameter value to parameter \""; message_ += parameter.getName(); message_ += "\" to function \""; message_ += functionName; message_ += "\": <"; message_ += StringFrom(parameter); message_ += ">"; } message_ += "\n"; addExpectationsAndCallHistoryRelatedTo(functionName, expectations); message_ += "\n\tACTUAL unexpected parameter passed to function: "; message_ += functionName; message_ += "\n"; message_ += "\t\t"; message_ += parameter.getType(); message_ += " "; message_ += parameter.getName(); message_ += ": <"; message_ += StringFrom(parameter); message_ += ">"; } MockUnexpectedOutputParameterFailure::MockUnexpectedOutputParameterFailure(UtestShell* test, const SimpleString& functionName, const MockNamedValue& parameter, const MockExpectedCallsList& expectations) : MockFailure(test) { message_ = "Mock Failure: Unexpected output parameter name to function \""; message_ += functionName; message_ += "\": "; message_ += parameter.getName(); message_ += "\n"; addExpectationsAndCallHistoryRelatedTo(functionName, expectations); message_ += "\n\tACTUAL unexpected output parameter passed to function: "; message_ += functionName; message_ += "\n"; message_ += "\t\t"; message_ += parameter.getType(); message_ += " "; message_ += parameter.getName(); } MockExpectedParameterDidntHappenFailure::MockExpectedParameterDidntHappenFailure(UtestShell* test, const SimpleString& functionName, const MockExpectedCallsList& expectations) : MockFailure(test) { MockExpectedCallsList expectationsForFunction; expectationsForFunction.addExpectationsRelatedTo(functionName, expectations); message_ = "Mock Failure: Expected parameter for function \""; message_ += functionName; message_ += "\" did not happen.\n"; addExpectationsAndCallHistoryRelatedTo(functionName, expectations); message_ += "\n\tMISSING parameters that didn't happen:\n"; message_ += "\t\t"; message_ += expectationsForFunction.missingParametersToString(); } MockNoWayToCompareCustomTypeFailure::MockNoWayToCompareCustomTypeFailure(UtestShell* test, const SimpleString& typeName) : MockFailure(test) { message_ = StringFromFormat("MockFailure: No way to compare type <%s>. Please install a ParameterTypeComparator.", typeName.asCharString()); } MockUnexpectedObjectFailure::MockUnexpectedObjectFailure(UtestShell* test, const SimpleString& functionName, void* actual, const MockExpectedCallsList& expectations) : MockFailure(test) { message_ = StringFromFormat ("MockFailure: Function called on a unexpected object: %s\n" "\tActual object for call has address: <%p>\n", functionName.asCharString(),actual); addExpectationsAndCallHistoryRelatedTo(functionName, expectations); } MockExpectedObjectDidntHappenFailure::MockExpectedObjectDidntHappenFailure(UtestShell* test, const SimpleString& functionName, const MockExpectedCallsList& expectations) : MockFailure(test) { message_ = StringFromFormat("Mock Failure: Expected call on object for function \"%s\" but it did not happen.\n", functionName.asCharString()); addExpectationsAndCallHistoryRelatedTo(functionName, expectations); } cpputest-3.7.2/src/CppUTestExt/MockNamedValue.cpp000644 000765 000024 00000030007 12521603460 022641 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockNamedValue.h" #include "CppUTest/PlatformSpecificFunctions.h" MockNamedValueComparatorRepository* MockNamedValue::defaultRepository_ = NULL; void MockNamedValue::setDefaultComparatorRepository(MockNamedValueComparatorRepository* repository) { defaultRepository_ = repository; } MockNamedValue::MockNamedValue(const SimpleString& name) : name_(name), type_("int"), comparator_(NULL) { value_.intValue_ = 0; } MockNamedValue::~MockNamedValue() { } void MockNamedValue::setValue(unsigned int value) { type_ = "unsigned int"; value_.unsignedIntValue_ = value; } void MockNamedValue::setValue(int value) { type_ = "int"; value_.intValue_ = value; } void MockNamedValue::setValue(long int value) { type_ = "long int"; value_.longIntValue_ = value; } void MockNamedValue::setValue(unsigned long int value) { type_ = "unsigned long int"; value_.unsignedLongIntValue_ = value; } void MockNamedValue::setValue(double value) { type_ = "double"; value_.doubleValue_ = value; } void MockNamedValue::setValue(void* value) { type_ = "void*"; value_.pointerValue_ = value; } void MockNamedValue::setValue(const void* value) { type_ = "const void*"; value_.constPointerValue_ = value; } void MockNamedValue::setValue(const char* value) { type_ = "const char*"; value_.stringValue_ = value; } void MockNamedValue::setObjectPointer(const SimpleString& type, const void* objectPtr) { type_ = type; value_.objectPointerValue_ = objectPtr; if (defaultRepository_) comparator_ = defaultRepository_->getComparatorForType(type); } void MockNamedValue::setSize(size_t size) { size_ = size; } void MockNamedValue::setName(const char* name) { name_ = name; } SimpleString MockNamedValue::getName() const { return name_; } SimpleString MockNamedValue::getType() const { return type_; } unsigned int MockNamedValue::getUnsignedIntValue() const { if(type_ == "int" && value_.intValue_ >= 0) return (unsigned int)value_.intValue_; else { STRCMP_EQUAL("unsigned int", type_.asCharString()); return value_.unsignedIntValue_; } } int MockNamedValue::getIntValue() const { STRCMP_EQUAL("int", type_.asCharString()); return value_.intValue_; } long int MockNamedValue::getLongIntValue() const { if(type_ == "int") return value_.intValue_; else if(type_ == "unsigned int") return (long int)value_.unsignedIntValue_; else { STRCMP_EQUAL("long int", type_.asCharString()); return value_.longIntValue_; } } unsigned long int MockNamedValue::getUnsignedLongIntValue() const { if(type_ == "unsigned int") return value_.unsignedIntValue_; else if(type_ == "int" && value_.intValue_ >= 0) return (unsigned long int)value_.intValue_; else if(type_ == "long int" && value_.longIntValue_ >= 0) return (unsigned long int)value_.longIntValue_; else { STRCMP_EQUAL("unsigned long int", type_.asCharString()); return value_.unsignedLongIntValue_; } } double MockNamedValue::getDoubleValue() const { STRCMP_EQUAL("double", type_.asCharString()); return value_.doubleValue_; } const char* MockNamedValue::getStringValue() const { STRCMP_EQUAL("const char*", type_.asCharString()); return value_.stringValue_; } void* MockNamedValue::getPointerValue() const { STRCMP_EQUAL("void*", type_.asCharString()); return value_.pointerValue_; } const void* MockNamedValue::getConstPointerValue() const { STRCMP_EQUAL("const void*", type_.asCharString()); return value_.pointerValue_; } const void* MockNamedValue::getObjectPointer() const { return value_.objectPointerValue_; } size_t MockNamedValue::getSize() const { return size_; } MockNamedValueComparator* MockNamedValue::getComparator() const { return comparator_; } bool MockNamedValue::equals(const MockNamedValue& p) const { if((type_ == "long int") && (p.type_ == "int")) return value_.longIntValue_ == p.value_.intValue_; else if((type_ == "int") && (p.type_ == "long int")) return value_.intValue_ == p.value_.longIntValue_; else if((type_ == "unsigned int") && (p.type_ == "int")) return (long)value_.unsignedIntValue_ == (long)p.value_.intValue_; else if((type_ == "int") && (p.type_ == "unsigned int")) return (long)value_.intValue_ == (long)p.value_.unsignedIntValue_; else if((type_ == "unsigned long int") && (p.type_ == "int")) return value_.unsignedLongIntValue_ == (unsigned long)p.value_.intValue_; else if((type_ == "int") && (p.type_ == "unsigned long int")) return (unsigned long)value_.intValue_ == p.value_.unsignedLongIntValue_; else if((type_ == "unsigned int") && (p.type_ == "long int")) return (long int)value_.unsignedIntValue_ == p.value_.longIntValue_; else if((type_ == "long int") && (p.type_ == "unsigned int")) return value_.longIntValue_ == (long int)p.value_.unsignedIntValue_; else if((type_ == "unsigned int") && (p.type_ == "unsigned long int")) return value_.unsignedIntValue_ == p.value_.unsignedLongIntValue_; else if((type_ == "unsigned long int") && (p.type_ == "unsigned int")) return value_.unsignedLongIntValue_ == p.value_.unsignedIntValue_; else if((type_ == "long int") && (p.type_ == "unsigned long int")) return (value_.longIntValue_ >= 0) && (value_.longIntValue_ == (long) p.value_.unsignedLongIntValue_); else if((type_ == "unsigned long int") && (p.type_ == "long int")) return (p.value_.longIntValue_ >= 0) && ((long)value_.unsignedLongIntValue_ == p.value_.longIntValue_); if (type_ != p.type_) return false; if (type_ == "int") return value_.intValue_ == p.value_.intValue_; else if (type_ == "unsigned int") return value_.unsignedIntValue_ == p.value_.unsignedIntValue_; else if (type_ == "long int") return value_.longIntValue_ == p.value_.longIntValue_; else if (type_ == "unsigned long int") return value_.unsignedLongIntValue_ == p.value_.unsignedLongIntValue_; else if (type_ == "const char*") return SimpleString(value_.stringValue_) == SimpleString(p.value_.stringValue_); else if (type_ == "void*") return value_.pointerValue_ == p.value_.pointerValue_; else if (type_ == "const void*") return value_.constPointerValue_ == p.value_.constPointerValue_; else if (type_ == "double") return (doubles_equal(value_.doubleValue_, p.value_.doubleValue_, 0.005)); if (comparator_) return comparator_->isEqual(value_.objectPointerValue_, p.value_.objectPointerValue_); return false; } SimpleString MockNamedValue::toString() const { if (type_ == "int") return StringFrom(value_.intValue_); else if (type_ == "unsigned int") return StringFrom(value_.unsignedIntValue_); else if (type_ == "long int") return StringFrom(value_.longIntValue_); else if (type_ == "unsigned long int") return StringFrom(value_.unsignedLongIntValue_); else if (type_ == "const char*") return value_.stringValue_; else if (type_ == "void*") return StringFrom(value_.pointerValue_); else if (type_ == "const void*") return StringFrom(value_.constPointerValue_); else if (type_ == "double") return StringFrom(value_.doubleValue_); if (comparator_) return comparator_->valueToString(value_.objectPointerValue_); return StringFromFormat("No comparator found for type: \"%s\"", type_.asCharString()); } void MockNamedValueListNode::setNext(MockNamedValueListNode* node) { next_ = node; } MockNamedValueListNode* MockNamedValueListNode::next() { return next_; } MockNamedValue* MockNamedValueListNode::item() { return data_; } void MockNamedValueListNode::destroy() { delete data_; } MockNamedValueListNode::MockNamedValueListNode(MockNamedValue* newValue) : data_(newValue), next_(NULL) { } SimpleString MockNamedValueListNode::getName() const { return data_->getName(); } SimpleString MockNamedValueListNode::getType() const { return data_->getType(); } MockNamedValueList::MockNamedValueList() : head_(NULL) { } void MockNamedValueList::clear() { while (head_) { MockNamedValueListNode* n = head_->next(); head_->destroy(); delete head_; head_ = n; } } void MockNamedValueList::add(MockNamedValue* newValue) { MockNamedValueListNode* newNode = new MockNamedValueListNode(newValue); if (head_ == NULL) head_ = newNode; else { MockNamedValueListNode* lastNode = head_; while (lastNode->next()) lastNode = lastNode->next(); lastNode->setNext(newNode); } } MockNamedValue* MockNamedValueList::getValueByName(const SimpleString& name) { for (MockNamedValueListNode * p = head_; p; p = p->next()) if (p->getName() == name) return p->item(); return NULL; } MockNamedValueListNode* MockNamedValueList::begin() { return head_; } struct MockNamedValueComparatorRepositoryNode { MockNamedValueComparatorRepositoryNode(const SimpleString& name, MockNamedValueComparator& comparator, MockNamedValueComparatorRepositoryNode* next) : name_(name), comparator_(comparator), next_(next) {} SimpleString name_; MockNamedValueComparator& comparator_; MockNamedValueComparatorRepositoryNode* next_; }; MockNamedValueComparatorRepository::MockNamedValueComparatorRepository() : head_(NULL) { } MockNamedValueComparatorRepository::~MockNamedValueComparatorRepository() { clear(); } void MockNamedValueComparatorRepository::clear() { while (head_) { MockNamedValueComparatorRepositoryNode* next = head_->next_; delete head_; head_ = next; } } void MockNamedValueComparatorRepository::installComparator(const SimpleString& name, MockNamedValueComparator& comparator) { head_ = new MockNamedValueComparatorRepositoryNode(name, comparator, head_); } MockNamedValueComparator* MockNamedValueComparatorRepository::getComparatorForType(const SimpleString& name) { for (MockNamedValueComparatorRepositoryNode* p = head_; p; p = p->next_) if (p->name_ == name) return &p->comparator_; return NULL; } void MockNamedValueComparatorRepository::installComparators(const MockNamedValueComparatorRepository& repository) { for (MockNamedValueComparatorRepositoryNode* p = repository.head_; p; p = p->next_) installComparator(p->name_, p->comparator_); } cpputest-3.7.2/src/CppUTestExt/MockSupport.cpp000644 000765 000024 00000035345 12521603460 022306 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockActualCall.h" #include "CppUTestExt/MockExpectedCall.h" #include "CppUTestExt/MockFailure.h" #define MOCK_SUPPORT_SCOPE_PREFIX "!!!$$$MockingSupportScope$$$!!!" static MockSupport global_mock; MockSupport& mock(const SimpleString& mockName, MockFailureReporter* failureReporterForThisCall) { MockSupport& mock_support = (mockName != "") ? *global_mock.getMockSupportScope(mockName) : global_mock; mock_support.setActiveReporter(failureReporterForThisCall); mock_support.setDefaultComparatorRepository(); return mock_support; } MockSupport::MockSupport() : callOrder_(0), expectedCallOrder_(0), strictOrdering_(false), standardReporter_(&defaultReporter_), ignoreOtherCalls_(false), enabled_(true), lastActualFunctionCall_(NULL), tracing_(false) { setActiveReporter(NULL); } MockSupport::~MockSupport() { } void MockSupport::crashOnFailure(bool shouldCrash) { activeReporter_->crashOnFailure(shouldCrash); } void MockSupport::setMockFailureStandardReporter(MockFailureReporter* reporter) { standardReporter_ = (reporter != NULL) ? reporter : &defaultReporter_; if (lastActualFunctionCall_) lastActualFunctionCall_->setMockFailureReporter(standardReporter_); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->setMockFailureStandardReporter(standardReporter_); } void MockSupport::setActiveReporter(MockFailureReporter* reporter) { activeReporter_ = (reporter) ? reporter : standardReporter_; } void MockSupport::setDefaultComparatorRepository() { MockNamedValue::setDefaultComparatorRepository(&comparatorRepository_); } void MockSupport::installComparator(const SimpleString& typeName, MockNamedValueComparator& comparator) { comparatorRepository_.installComparator(typeName, comparator); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->installComparator(typeName, comparator); } void MockSupport::installComparators(const MockNamedValueComparatorRepository& repository) { comparatorRepository_.installComparators(repository); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->installComparators(repository); } void MockSupport::removeAllComparators() { comparatorRepository_.clear(); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->removeAllComparators(); } void MockSupport::clear() { delete lastActualFunctionCall_; lastActualFunctionCall_ = NULL; tracing_ = false; MockActualCallTrace::instance().clear(); expectations_.deleteAllExpectationsAndClearList(); compositeCalls_.clear(); ignoreOtherCalls_ = false; enabled_ = true; callOrder_ = 0; expectedCallOrder_ = 0; strictOrdering_ = false; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) { MockSupport* support = getMockSupport(p); if (support) { support->clear(); delete support; } } data_.clear(); } void MockSupport::strictOrder() { strictOrdering_ = true; } MockExpectedCall& MockSupport::expectOneCall(const SimpleString& functionName) { if (!enabled_) return MockIgnoredExpectedCall::instance(); countCheck(); MockCheckedExpectedCall* call = new MockCheckedExpectedCall; call->withName(functionName); if (strictOrdering_) call->withCallOrder(++expectedCallOrder_); expectations_.addExpectedCall(call); return *call; } MockExpectedCall& MockSupport::expectNCalls(int amount, const SimpleString& functionName) { compositeCalls_.clear(); for (int i = 0; i < amount; i++) compositeCalls_.add(expectOneCall(functionName)); return compositeCalls_; } MockCheckedActualCall* MockSupport::createActualFunctionCall() { lastActualFunctionCall_ = new MockCheckedActualCall(++callOrder_, activeReporter_, expectations_); return lastActualFunctionCall_; } MockActualCall& MockSupport::actualCall(const SimpleString& functionName) { if (lastActualFunctionCall_) { lastActualFunctionCall_->checkExpectations(); delete lastActualFunctionCall_; lastActualFunctionCall_ = NULL; } if (!enabled_) return MockIgnoredActualCall::instance(); if (tracing_) return MockActualCallTrace::instance().withName(functionName); if (!expectations_.hasExpectationWithName(functionName) && ignoreOtherCalls_) { return MockIgnoredActualCall::instance(); } MockCheckedActualCall* call = createActualFunctionCall(); call->withName(functionName); return *call; } void MockSupport::ignoreOtherCalls() { ignoreOtherCalls_ = true; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->ignoreOtherCalls(); } void MockSupport::disable() { enabled_ = false; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->disable(); } void MockSupport::enable() { enabled_ = true; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->enable(); } void MockSupport::tracing(bool enabled) { tracing_ = enabled; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->tracing(enabled); } const char* MockSupport::getTraceOutput() { return MockActualCallTrace::instance().getTraceOutput(); } bool MockSupport::expectedCallsLeft() { int callsLeft = expectations_.hasUnfullfilledExpectations(); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) callsLeft += getMockSupport(p)->expectedCallsLeft(); return callsLeft != 0; } bool MockSupport::wasLastCallFulfilled() { if (lastActualFunctionCall_ && !lastActualFunctionCall_->isFulfilled()) return false; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p) && !getMockSupport(p)->wasLastCallFulfilled()) return false; return true; } void MockSupport::failTestWithUnexpectedCalls() { MockExpectedCallsList expectationsList; expectationsList.addExpectations(expectations_); for(MockNamedValueListNode *p = data_.begin();p;p = p->next()) if(getMockSupport(p)) expectationsList.addExpectations(getMockSupport(p)->expectations_); MockExpectedCallsDidntHappenFailure failure(activeReporter_->getTestToFail(), expectationsList); clear(); failTest(failure); } void MockSupport::failTestWithOutOfOrderCalls() { MockExpectedCallsList expectationsList; expectationsList.addExpectations(expectations_); for(MockNamedValueListNode *p = data_.begin();p;p = p->next()) if(getMockSupport(p)) expectationsList.addExpectations(getMockSupport(p)->expectations_); MockCallOrderFailure failure(activeReporter_->getTestToFail(), expectationsList); clear(); failTest(failure); } void MockSupport::failTest(MockFailure& failure) { activeReporter_->failTest(failure); } void MockSupport::countCheck() { UtestShell::getCurrent()->countCheck(); } void MockSupport::checkExpectationsOfLastCall() { if(lastActualFunctionCall_) lastActualFunctionCall_->checkExpectations(); for(MockNamedValueListNode *p = data_.begin();p;p = p->next()) if(getMockSupport(p) && getMockSupport(p)->lastActualFunctionCall_) getMockSupport(p)->lastActualFunctionCall_->checkExpectations(); } void MockSupport::checkExpectations() { checkExpectationsOfLastCall(); if (wasLastCallFulfilled() && expectedCallsLeft()) failTestWithUnexpectedCalls(); if (expectations_.hasCallsOutOfOrder()) failTestWithOutOfOrderCalls(); } bool MockSupport::hasData(const SimpleString& name) { return data_.getValueByName(name) != NULL; } MockNamedValue* MockSupport::retrieveDataFromStore(const SimpleString& name) { MockNamedValue* newData = data_.getValueByName(name); if (newData == NULL) { newData = new MockNamedValue(name); data_.add(newData); } return newData; } void MockSupport::setData(const SimpleString& name, unsigned int value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, int value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, const char* value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, double value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, void* value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, const void* value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setDataObject(const SimpleString& name, const SimpleString& type, void* value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setObjectPointer(type, value); } MockNamedValue MockSupport::getData(const SimpleString& name) { MockNamedValue* value = data_.getValueByName(name); if (value == NULL) return MockNamedValue(""); return *value; } MockSupport* MockSupport::clone() { MockSupport* newMock = new MockSupport; newMock->setMockFailureStandardReporter(standardReporter_); if (ignoreOtherCalls_) newMock->ignoreOtherCalls(); if (!enabled_) newMock->disable(); if (strictOrdering_) newMock->strictOrder(); newMock->tracing(tracing_); newMock->installComparators(comparatorRepository_); return newMock; } MockSupport* MockSupport::getMockSupportScope(const SimpleString& name) { SimpleString mockingSupportName = MOCK_SUPPORT_SCOPE_PREFIX; mockingSupportName += name; if (hasData(mockingSupportName)) { STRCMP_EQUAL("MockSupport", getData(mockingSupportName).getType().asCharString()); return (MockSupport*) getData(mockingSupportName).getObjectPointer(); } MockSupport *newMock = clone(); setDataObject(mockingSupportName, "MockSupport", newMock); return newMock; } MockSupport* MockSupport::getMockSupport(MockNamedValueListNode* node) { if (node->getType() == "MockSupport" && node->getName().contains(MOCK_SUPPORT_SCOPE_PREFIX)) return (MockSupport*) node->item()->getObjectPointer(); return NULL; } MockNamedValue MockSupport::returnValue() { if (lastActualFunctionCall_) return lastActualFunctionCall_->returnValue(); return MockNamedValue(""); } unsigned int MockSupport::unsignedIntReturnValue() { return returnValue().getUnsignedIntValue(); } int MockSupport::intReturnValue() { return returnValue().getIntValue(); } const char * MockSupport::returnStringValueOrDefault(const char * defaultValue) { if (hasReturnValue()) { return stringReturnValue(); } return defaultValue; } double MockSupport::returnDoubleValueOrDefault(double defaultValue) { if (hasReturnValue()) { return doubleReturnValue(); } return defaultValue; } long int MockSupport::returnLongIntValueOrDefault(long int defaultValue) { if (hasReturnValue()) { return longIntReturnValue(); } return defaultValue; } int MockSupport::returnIntValueOrDefault(int defaultValue) { if (hasReturnValue()) { return intReturnValue(); } return defaultValue; } unsigned int MockSupport::returnUnsignedIntValueOrDefault(unsigned int defaultValue) { if (hasReturnValue()) { return unsignedIntReturnValue(); } return defaultValue; } unsigned long int MockSupport::returnUnsignedLongIntValueOrDefault(unsigned long int defaultValue) { if (hasReturnValue()) { return unsignedLongIntReturnValue(); } return defaultValue; } long int MockSupport::longIntReturnValue() { return returnValue().getLongIntValue(); } unsigned long int MockSupport::unsignedLongIntReturnValue() { return returnValue().getUnsignedLongIntValue(); } const char* MockSupport::stringReturnValue() { return returnValue().getStringValue(); } double MockSupport::doubleReturnValue() { return returnValue().getDoubleValue(); } void * MockSupport::returnPointerValueOrDefault(void * defaultValue) { if (hasReturnValue()) { return pointerReturnValue(); } return defaultValue; } const void* MockSupport::returnConstPointerValueOrDefault(const void * defaultValue) { if (hasReturnValue()) { return constPointerReturnValue(); } return defaultValue; } void* MockSupport::pointerReturnValue() { return returnValue().getPointerValue(); } const void* MockSupport::constPointerReturnValue() { return returnValue().getConstPointerValue(); } bool MockSupport::hasReturnValue() { if (lastActualFunctionCall_) return lastActualFunctionCall_->hasReturnValue(); return false; } cpputest-3.7.2/src/CppUTestExt/MockSupport_c.cpp000644 000765 000024 00000042277 12521603460 022612 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CppUTestConfig.h" #include "CppUTest/Utest.h" #include "CppUTest/UtestMacros.h" #include "CppUTest/PlatformSpecificFunctions_c.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockSupport_c.h" class MockFailureReporterTestTerminatorForInCOnlyCode : public TestTerminatorWithoutExceptions { public: MockFailureReporterTestTerminatorForInCOnlyCode(bool crashOnFailure) : crashOnFailure_(crashOnFailure) { } virtual void exitCurrentTest() const _override { if (crashOnFailure_) UT_CRASH(); TestTerminatorWithoutExceptions::exitCurrentTest(); } // LCOV_EXCL_LINE // LCOV_EXCL_START virtual ~MockFailureReporterTestTerminatorForInCOnlyCode() { } // LCOV_EXCL_STOP private: bool crashOnFailure_; }; class MockFailureReporterForInCOnlyCode : public MockFailureReporter { public: void failTest(const MockFailure& failure) _override { if (!getTestToFail()->hasFailed()) getTestToFail()->failWith(failure, MockFailureReporterTestTerminatorForInCOnlyCode(crashOnFailure_)); } // LCOV_EXCL_LINE }; static MockSupport* currentMockSupport = NULL; static MockExpectedCall* expectedCall = NULL; static MockActualCall* actualCall = NULL; static MockFailureReporterForInCOnlyCode failureReporterForC; class MockCFunctionComparatorNode : public MockNamedValueComparator { public: MockCFunctionComparatorNode(MockCFunctionComparatorNode* next, MockTypeEqualFunction_c equal, MockTypeValueToStringFunction_c toString) : next_(next), equal_(equal), toString_(toString) {} virtual ~MockCFunctionComparatorNode() {} virtual bool isEqual(const void* object1, const void* object2) _override { return equal_(object1, object2) != 0; } virtual SimpleString valueToString(const void* object) _override { return SimpleString(toString_(object)); } MockCFunctionComparatorNode* next_; MockTypeEqualFunction_c equal_; MockTypeValueToStringFunction_c toString_; }; static MockCFunctionComparatorNode* comparatorList_ = NULL; extern "C" { MockExpectedCall_c* expectOneCall_c(const char* name); MockActualCall_c* actualCall_c(const char* name); void disable_c(void); void enable_c(void); void setIntData_c(const char* name, int value); void setDoubleData_c(const char* name, double value); void setStringData_c(const char* name, const char* value); void setPointerData_c(const char* name, void* value); void setConstPointerData_c(const char* name, const void* value); void setDataObject_c(const char* name, const char* type, void* value); MockValue_c getData_c(const char* name); void checkExpectations_c(); int expectedCallsLeft_c(); void clear_c(); void crashOnFailure_c(unsigned shouldCrash); MockExpectedCall_c* withIntParameters_c(const char* name, int value); MockExpectedCall_c* withUnsignedIntParameters_c(const char* name, unsigned int value); MockExpectedCall_c* withLongIntParameters_c(const char* name, long int value); MockExpectedCall_c* withUnsignedLongIntParameters_c(const char* name, unsigned long int value); MockExpectedCall_c* withDoubleParameters_c(const char* name, double value); MockExpectedCall_c* withStringParameters_c(const char* name, const char* value); MockExpectedCall_c* withPointerParameters_c(const char* name, void* value); MockExpectedCall_c* withConstPointerParameters_c(const char* name, const void* value); MockExpectedCall_c* withParameterOfType_c(const char* type, const char* name, const void* value); MockExpectedCall_c* withOutputParameterReturning_c(const char* name, const void* value, size_t size); MockExpectedCall_c* andReturnIntValue_c(int value); MockExpectedCall_c* andReturnUnsignedIntValue_c(unsigned int value); MockExpectedCall_c* andReturnLongIntValue_c(long int value); MockExpectedCall_c* andReturnUnsignedLongIntValue_c(unsigned long int value); MockExpectedCall_c* andReturnDoubleValue_c(double value); MockExpectedCall_c* andReturnStringValue_c(const char* value); MockExpectedCall_c* andReturnPointerValue_c(void* value); MockExpectedCall_c* andReturnConstPointerValue_c(const void* value); MockValue_c expectedReturnValue_c(); MockActualCall_c* withActualIntParameters_c(const char* name, int value); MockActualCall_c* withActualUnsignedIntParameters_c(const char* name, unsigned int value); MockActualCall_c* withActualLongIntParameters_c(const char* name, long int value); MockActualCall_c* withActualUnsignedLongIntParameters_c(const char* name, unsigned long int value); MockActualCall_c* withActualDoubleParameters_c(const char* name, double value); MockActualCall_c* withActualStringParameters_c(const char* name, const char* value); MockActualCall_c* withActualPointerParameters_c(const char* name, void* value); MockActualCall_c* withActualConstPointerParameters_c(const char* name, const void* value); MockActualCall_c* withActualParameterOfType_c(const char* type, const char* name, const void* value); MockActualCall_c* withActualOutputParameter_c(const char* name, void* value); MockValue_c actualReturnValue_c(); static void installComparator_c (const char* typeName, MockTypeEqualFunction_c isEqual, MockTypeValueToStringFunction_c valueToString) { comparatorList_ = new MockCFunctionComparatorNode(comparatorList_, isEqual, valueToString); currentMockSupport->installComparator(typeName, *comparatorList_); } static void removeAllComparators_c() { while (comparatorList_) { MockCFunctionComparatorNode *next = comparatorList_->next_; delete comparatorList_; comparatorList_ = next; } currentMockSupport->removeAllComparators(); } static MockExpectedCall_c gExpectedCall = { withIntParameters_c, withUnsignedIntParameters_c, withLongIntParameters_c, withUnsignedLongIntParameters_c, withDoubleParameters_c, withStringParameters_c, withPointerParameters_c, withConstPointerParameters_c, withParameterOfType_c, withOutputParameterReturning_c, andReturnUnsignedIntValue_c, andReturnIntValue_c, andReturnLongIntValue_c, andReturnUnsignedLongIntValue_c, andReturnDoubleValue_c, andReturnStringValue_c, andReturnPointerValue_c, andReturnConstPointerValue_c, }; static MockActualCall_c gActualCall = { withActualIntParameters_c, withActualUnsignedIntParameters_c, withActualLongIntParameters_c, withActualUnsignedLongIntParameters_c, withActualDoubleParameters_c, withActualStringParameters_c, withActualPointerParameters_c, withActualConstPointerParameters_c, withActualParameterOfType_c, withActualOutputParameter_c, actualReturnValue_c }; static MockSupport_c gMockSupport = { expectOneCall_c, actualCall_c, actualReturnValue_c, enable_c, disable_c, setIntData_c, setDoubleData_c, setStringData_c, setPointerData_c, setConstPointerData_c, setDataObject_c, getData_c, checkExpectations_c, expectedCallsLeft_c, clear_c, crashOnFailure_c, installComparator_c, removeAllComparators_c }; MockExpectedCall_c* withIntParameters_c(const char* name, int value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withUnsignedIntParameters_c(const char* name, unsigned int value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withLongIntParameters_c(const char* name, long int value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withUnsignedLongIntParameters_c(const char* name, unsigned long int value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withDoubleParameters_c(const char* name, double value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withStringParameters_c(const char* name, const char* value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withPointerParameters_c(const char* name, void* value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withConstPointerParameters_c(const char* name, const void* value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withParameterOfType_c(const char* type, const char* name, const void* value) { expectedCall = &expectedCall->withParameterOfType(type, name, value); return &gExpectedCall; } MockExpectedCall_c* withOutputParameterReturning_c(const char* name, const void* value, size_t size) { expectedCall = &expectedCall->withOutputParameterReturning(name, value, size); return &gExpectedCall; } MockExpectedCall_c* andReturnUnsignedIntValue_c(unsigned int value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnIntValue_c(int value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnLongIntValue_c(long int value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnUnsignedLongIntValue_c(unsigned long int value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnDoubleValue_c(double value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnStringValue_c(const char* value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnPointerValue_c(void* value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnConstPointerValue_c(const void* value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } static MockValue_c getMockValueCFromNamedValue(const MockNamedValue& namedValue) { MockValue_c returnValue; if (SimpleString::StrCmp(namedValue.getType().asCharString(), "int") == 0) { returnValue.type = MOCKVALUETYPE_INTEGER; returnValue.value.intValue = namedValue.getIntValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "unsigned int") == 0) { returnValue.type = MOCKVALUETYPE_UNSIGNED_INTEGER; returnValue.value.unsignedIntValue = namedValue.getUnsignedIntValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "long int") == 0) { returnValue.type = MOCKVALUETYPE_LONG_INTEGER; returnValue.value.longIntValue = namedValue.getLongIntValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "unsigned long int") == 0) { returnValue.type = MOCKVALUETYPE_UNSIGNED_LONG_INTEGER; returnValue.value.unsignedLongIntValue = namedValue.getUnsignedLongIntValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "double") == 0) { returnValue.type = MOCKVALUETYPE_DOUBLE; returnValue.value.doubleValue = namedValue.getDoubleValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "const char*") == 0) { returnValue.type = MOCKVALUETYPE_STRING; returnValue.value.stringValue = namedValue.getStringValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "void*") == 0) { returnValue.type = MOCKVALUETYPE_POINTER; returnValue.value.pointerValue = namedValue.getPointerValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "const void*") == 0) { returnValue.type = MOCKVALUETYPE_CONST_POINTER; returnValue.value.constPointerValue = namedValue.getConstPointerValue(); } else { returnValue.type = MOCKVALUETYPE_OBJECT; returnValue.value.objectValue = namedValue.getObjectPointer(); } return returnValue; } MockExpectedCall_c* expectOneCall_c(const char* name) { expectedCall = ¤tMockSupport->expectOneCall(name); return &gExpectedCall; } MockActualCall_c* actualCall_c(const char* name) { actualCall = ¤tMockSupport->actualCall(name); return &gActualCall; } MockActualCall_c* withActualIntParameters_c(const char* name, int value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualUnsignedIntParameters_c(const char* name, unsigned int value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualLongIntParameters_c(const char* name, long int value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualUnsignedLongIntParameters_c(const char* name, unsigned long int value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualDoubleParameters_c(const char* name, double value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualStringParameters_c(const char* name, const char* value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualPointerParameters_c(const char* name, void* value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualConstPointerParameters_c(const char* name, const void* value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualParameterOfType_c(const char* type, const char* name, const void* value) { actualCall = &actualCall->withParameterOfType(type, name, value); return &gActualCall; } MockActualCall_c* withActualOutputParameter_c(const char* name, void* value) { actualCall = &actualCall->withOutputParameter(name, value); return &gActualCall; } MockValue_c actualReturnValue_c() { return getMockValueCFromNamedValue(actualCall->returnValue()); } void disable_c(void) { currentMockSupport->disable(); } void enable_c(void) { currentMockSupport->enable(); } void setIntData_c(const char* name, int value) { currentMockSupport->setData(name, value); } void setDoubleData_c(const char* name, double value) { currentMockSupport->setData(name, value); } void setStringData_c(const char* name, const char* value) { currentMockSupport->setData(name, value); } void setPointerData_c(const char* name, void* value) { currentMockSupport->setData(name, value); } void setConstPointerData_c(const char* name, const void* value) { currentMockSupport->setData(name, value); } void setDataObject_c(const char* name, const char* type, void* value) { currentMockSupport->setDataObject(name, type, value); } MockValue_c getData_c(const char* name) { return getMockValueCFromNamedValue(currentMockSupport->getData(name)); } void checkExpectations_c() { currentMockSupport->checkExpectations(); } int expectedCallsLeft_c() { return currentMockSupport->expectedCallsLeft(); } void clear_c() { currentMockSupport->clear(); } void crashOnFailure_c(unsigned shouldCrash) { currentMockSupport->crashOnFailure(0 != shouldCrash); } MockSupport_c* mock_c() { currentMockSupport = &mock("", &failureReporterForC); return &gMockSupport; } MockSupport_c* mock_scope_c(const char* scope) { currentMockSupport = &mock(scope, &failureReporterForC); return &gMockSupport; } } cpputest-3.7.2/src/CppUTestExt/MockSupportPlugin.cpp000644 000765 000024 00000005555 12521603460 023465 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockSupportPlugin.h" class MockSupportPluginReporter : public MockFailureReporter { UtestShell& test_; TestResult& result_; public: MockSupportPluginReporter(UtestShell& test, TestResult& result) : test_(test), result_(result) { } virtual void failTest(const MockFailure& failure) _override { result_.addFailure(failure); } virtual UtestShell* getTestToFail() _override { return &test_; } }; MockSupportPlugin::MockSupportPlugin(const SimpleString& name) : TestPlugin(name) { } MockSupportPlugin::~MockSupportPlugin() { repository_.clear(); } void MockSupportPlugin::preTestAction(UtestShell&, TestResult&) { mock().installComparators(repository_); } void MockSupportPlugin::postTestAction(UtestShell& test, TestResult& result) { MockSupportPluginReporter reporter(test, result); mock().setMockFailureStandardReporter(&reporter); mock().checkExpectations(); mock().clear(); mock().setMockFailureStandardReporter(NULL); mock().removeAllComparators(); } void MockSupportPlugin::installComparator(const SimpleString& name, MockNamedValueComparator& comparator) { repository_.installComparator(name, comparator); } cpputest-3.7.2/src/CppUTestExt/OrderedTest.cpp000644 000765 000024 00000010435 12521603460 022235 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTestExt/OrderedTest.h" OrderedTestShell* OrderedTestShell::_orderedTestsHead = 0; OrderedTestShell::OrderedTestShell() : _nextOrderedTest(0), _level(0) { } OrderedTestShell::~OrderedTestShell() { } int OrderedTestShell::getLevel() { return _level; } void OrderedTestShell::setLevel(int level) { _level = level; } void OrderedTestShell::setOrderedTestHead(OrderedTestShell* test) { _orderedTestsHead = test; } OrderedTestShell* OrderedTestShell::getOrderedTestHead() { return _orderedTestsHead; } bool OrderedTestShell::firstOrderedTest() { return (getOrderedTestHead() == 0); } OrderedTestShell* OrderedTestShell::addOrderedTest(OrderedTestShell* test) { UtestShell::addTest(test); _nextOrderedTest = test; return this; } void OrderedTestShell::addOrderedTestToHead(OrderedTestShell* test) { TestRegistry *reg = TestRegistry::getCurrentRegistry(); UtestShell* head = getOrderedTestHead(); if (NULL == reg->getFirstTest() || head == reg->getFirstTest()) { reg->addTest(test); } else { reg->getTestWithNext(head)->addTest(test); test->addTest(head); } test->_nextOrderedTest = getOrderedTestHead(); setOrderedTestHead(test); } OrderedTestShell* OrderedTestShell::getNextOrderedTest() { return _nextOrderedTest; } OrderedTestInstaller::OrderedTestInstaller(OrderedTestShell& test, const char* groupName, const char* testName, const char* fileName, int lineNumber, int level) { test.setTestName(testName); test.setGroupName(groupName); test.setFileName(fileName); test.setLineNumber(lineNumber); test.setLevel(level); if (OrderedTestShell::firstOrderedTest()) OrderedTestShell::addOrderedTestToHead(&test); else addOrderedTestInOrder(&test); } void OrderedTestInstaller::addOrderedTestInOrder(OrderedTestShell* test) { if (test->getLevel() < OrderedTestShell::getOrderedTestHead()->getLevel()) OrderedTestShell::addOrderedTestToHead(test); else addOrderedTestInOrderNotAtHeadPosition(test); } void OrderedTestInstaller::addOrderedTestInOrderNotAtHeadPosition( OrderedTestShell* test) { OrderedTestShell* current = OrderedTestShell::getOrderedTestHead(); while (current->getNextOrderedTest()) { if (current->getNextOrderedTest()->getLevel() > test->getLevel()) { test->addOrderedTest(current->getNextOrderedTest()); current->addOrderedTest(test); return; } current = current->getNextOrderedTest(); } test->addOrderedTest(current->getNextOrderedTest()); current->addOrderedTest(test); } OrderedTestInstaller::~OrderedTestInstaller() { } cpputest-3.7.2/src/CppUTest/CMakeLists.txt000644 000765 000024 00000004655 12521603460 021373 0ustar00basvoddestaff000000 000000 set(CppUTest_src CommandLineArguments.cpp MemoryLeakWarningPlugin.cpp TestHarness_c.cpp TestRegistry.cpp CommandLineTestRunner.cpp SimpleString.cpp TestMemoryAllocator.cpp TestResult.cpp JUnitTestOutput.cpp TestFailure.cpp TestOutput.cpp MemoryLeakDetector.cpp TestFilter.cpp TestPlugin.cpp SimpleMutex.cpp Utest.cpp ../Platforms/${CPP_PLATFORM}/UtestPlatform.cpp ) set(CppUTest_headers ${CppUTestRootDirectory}/include/CppUTest/CommandLineArguments.h ${CppUTestRootDirectory}/include/CppUTest/PlatformSpecificFunctions.h ${CppUTestRootDirectory}/include/CppUTest/TestMemoryAllocator.h ${CppUTestRootDirectory}/include/CppUTest/CommandLineTestRunner.h ${CppUTestRootDirectory}/include/CppUTest/PlatformSpecificFunctions_c.h ${CppUTestRootDirectory}/include/CppUTest/TestOutput.h ${CppUTestRootDirectory}/include/CppUTest/CppUTestConfig.h ${CppUTestRootDirectory}/include/CppUTest/SimpleString.h ${CppUTestRootDirectory}/include/CppUTest/TestPlugin.h ${CppUTestRootDirectory}/include/CppUTest/JUnitTestOutput.h ${CppUTestRootDirectory}/include/CppUTest/StandardCLibrary.h ${CppUTestRootDirectory}/include/CppUTest/TestRegistry.h ${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetector.h ${CppUTestRootDirectory}/include/CppUTest/TestFailure.h ${CppUTestRootDirectory}/include/CppUTest/TestResult.h ${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorMallocMacros.h ${CppUTestRootDirectory}/include/CppUTest/TestFilter.h ${CppUTestRootDirectory}/include/CppUTest/TestTestingFixture.h ${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorNewMacros.h ${CppUTestRootDirectory}/include/CppUTest/TestHarness.h ${CppUTestRootDirectory}/include/CppUTest/Utest.h ${CppUTestRootDirectory}/include/CppUTest/MemoryLeakWarningPlugin.h ${CppUTestRootDirectory}/include/CppUTest/TestHarness_c.h ${CppUTestRootDirectory}/include/CppUTest/UtestMacros.h ) add_library(CppUTest STATIC ${CppUTest_src}) if (WIN32) target_link_libraries(CppUTest winmm.lib) endif (WIN32) install(FILES ${CppUTest_headers} DESTINATION include/CppUTest) install(TARGETS CppUTest RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) cpputest-3.7.2/src/CppUTest/CommandLineArguments.cpp000644 000765 000024 00000017573 12521603460 023416 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/CommandLineArguments.h" #include "CppUTest/PlatformSpecificFunctions.h" CommandLineArguments::CommandLineArguments(int ac, const char** av) : ac_(ac), av_(av), verbose_(false), color_(false), runTestsAsSeperateProcess_(false), listTestGroupNames_(false), listTestGroupAndCaseNames_(false), repeat_(1), groupFilters_(NULL), nameFilters_(NULL), outputType_(OUTPUT_ECLIPSE) { } CommandLineArguments::~CommandLineArguments() { while(groupFilters_) { TestFilter* current = groupFilters_; groupFilters_ = groupFilters_->getNext(); delete current; } while(nameFilters_) { TestFilter* current = nameFilters_; nameFilters_ = nameFilters_->getNext(); delete current; } } bool CommandLineArguments::parse(TestPlugin* plugin) { bool correctParameters = true; for (int i = 1; i < ac_; i++) { SimpleString argument = av_[i]; if (argument == "-v") verbose_ = true; else if (argument == "-c") color_ = true; else if (argument == "-p") runTestsAsSeperateProcess_ = true; else if (argument == "-lg") listTestGroupNames_ = true; else if (argument == "-ln") listTestGroupAndCaseNames_ = true; else if (argument.startsWith("-r")) SetRepeatCount(ac_, av_, i); else if (argument.startsWith("-g")) AddGroupFilter(ac_, av_, i); else if (argument.startsWith("-sg")) AddStrictGroupFilter(ac_, av_, i); else if (argument.startsWith("-n")) AddNameFilter(ac_, av_, i); else if (argument.startsWith("-sn")) AddStrictNameFilter(ac_, av_, i); else if (argument.startsWith("TEST(")) AddTestToRunBasedOnVerboseOutput(ac_, av_, i, "TEST("); else if (argument.startsWith("IGNORE_TEST(")) AddTestToRunBasedOnVerboseOutput(ac_, av_, i, "IGNORE_TEST("); else if (argument.startsWith("-o")) correctParameters = SetOutputType(ac_, av_, i); else if (argument.startsWith("-p")) correctParameters = plugin->parseAllArguments(ac_, av_, i); else if (argument.startsWith("-k")) SetPackageName(ac_, av_, i); else correctParameters = false; if (correctParameters == false) { return false; } } return true; } const char* CommandLineArguments::usage() const { return "usage [-v] [-c] [-p] [-lg] [-ln] [-r#] [-g|sg groupName]... [-n|sn testName]... [\"TEST(groupName, testName)\"]... [-o{normal, junit}] [-k packageName]\n"; } bool CommandLineArguments::isVerbose() const { return verbose_; } bool CommandLineArguments::isColor() const { return color_; } bool CommandLineArguments::isListingTestGroupNames() const { return listTestGroupNames_; } bool CommandLineArguments::isListingTestGroupAndCaseNames() const { return listTestGroupAndCaseNames_; } bool CommandLineArguments::runTestsInSeperateProcess() const { return runTestsAsSeperateProcess_; } int CommandLineArguments::getRepeatCount() const { return repeat_; } const TestFilter* CommandLineArguments::getGroupFilters() const { return groupFilters_; } const TestFilter* CommandLineArguments::getNameFilters() const { return nameFilters_; } void CommandLineArguments::SetRepeatCount(int ac, const char** av, int& i) { repeat_ = 0; SimpleString repeatParameter(av[i]); if (repeatParameter.size() > 2) repeat_ = SimpleString::AtoI(av[i] + 2); else if (i + 1 < ac) { repeat_ = SimpleString::AtoI(av[i + 1]); if (repeat_ != 0) i++; } if (0 == repeat_) repeat_ = 2; } SimpleString CommandLineArguments::getParameterField(int ac, const char** av, int& i, const SimpleString& parameterName) { size_t parameterLength = parameterName.size(); SimpleString parameter(av[i]); if (parameter.size() > parameterLength) return av[i] + parameterLength; else if (i + 1 < ac) return av[++i]; return ""; } void CommandLineArguments::AddGroupFilter(int ac, const char** av, int& i) { TestFilter* groupFilter = new TestFilter(getParameterField(ac, av, i, "-g")); groupFilters_ = groupFilter->add(groupFilters_); } void CommandLineArguments::AddStrictGroupFilter(int ac, const char** av, int& i) { TestFilter* groupFilter = new TestFilter(getParameterField(ac, av, i, "-sg")); groupFilter->strictMatching(); groupFilters_ = groupFilter->add(groupFilters_); } void CommandLineArguments::AddNameFilter(int ac, const char** av, int& i) { TestFilter* nameFilter = new TestFilter(getParameterField(ac, av, i, "-n")); nameFilters_ = nameFilter->add(nameFilters_); } void CommandLineArguments::AddStrictNameFilter(int ac, const char** av, int& index) { TestFilter* nameFilter = new TestFilter(getParameterField(ac, av, index, "-sn")); nameFilter->strictMatching(); nameFilters_= nameFilter->add(nameFilters_); } void CommandLineArguments::AddTestToRunBasedOnVerboseOutput(int ac, const char** av, int& index, const char* parameterName) { SimpleString wholename = getParameterField(ac, av, index, parameterName); SimpleString testname = wholename.subStringFromTill(',', ')'); testname = testname.subString(2, testname.size()); TestFilter* namefilter = new TestFilter(testname); TestFilter* groupfilter = new TestFilter(wholename.subStringFromTill(wholename.at(0), ',')); namefilter->strictMatching(); groupfilter->strictMatching(); groupFilters_ = groupfilter->add(groupFilters_); nameFilters_ = namefilter->add(nameFilters_); } void CommandLineArguments::SetPackageName(int ac, const char** av, int& i) { SimpleString packageName = getParameterField(ac, av, i, "-k"); if (packageName.size() == 0) return; packageName_ = packageName; } bool CommandLineArguments::SetOutputType(int ac, const char** av, int& i) { SimpleString outputType = getParameterField(ac, av, i, "-o"); if (outputType.size() == 0) return false; if (outputType == "normal" || outputType == "eclipse") { outputType_ = OUTPUT_ECLIPSE; return true; } if (outputType == "junit") { outputType_ = OUTPUT_JUNIT; return true; } return false; } bool CommandLineArguments::isEclipseOutput() const { return outputType_ == OUTPUT_ECLIPSE; } bool CommandLineArguments::isJUnitOutput() const { return outputType_ == OUTPUT_JUNIT; } const SimpleString& CommandLineArguments::getPackageName() const { return packageName_; } cpputest-3.7.2/src/CppUTest/CommandLineTestRunner.cpp000644 000765 000024 00000012420 12521603460 023544 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestOutput.h" #include "CppUTest/JUnitTestOutput.h" #include "CppUTest/TestRegistry.h" int CommandLineTestRunner::RunAllTests(int ac, char** av) { return RunAllTests(ac, (const char**) av); } int CommandLineTestRunner::RunAllTests(int ac, const char** av) { int result = 0; ConsoleTestOutput backupOutput; MemoryLeakWarningPlugin memLeakWarn(DEF_PLUGIN_MEM_LEAK); memLeakWarn.destroyGlobalDetectorAndTurnOffMemoryLeakDetectionInDestructor(true); TestRegistry::getCurrentRegistry()->installPlugin(&memLeakWarn); { CommandLineTestRunner runner(ac, av, TestRegistry::getCurrentRegistry()); result = runner.runAllTestsMain(); } if (result == 0) { backupOutput << memLeakWarn.FinalReport(0); } TestRegistry::getCurrentRegistry()->removePluginByName(DEF_PLUGIN_MEM_LEAK); return result; } CommandLineTestRunner::CommandLineTestRunner(int ac, const char** av, TestRegistry* registry) : output_(NULL), arguments_(NULL), registry_(registry) { arguments_ = new CommandLineArguments(ac, av); } CommandLineTestRunner::~CommandLineTestRunner() { delete arguments_; delete output_; } int CommandLineTestRunner::runAllTestsMain() { int testResult = 0; SetPointerPlugin pPlugin(DEF_PLUGIN_SET_POINTER); registry_->installPlugin(&pPlugin); if (parseArguments(registry_->getFirstPlugin())) testResult = runAllTests(); registry_->removePluginByName(DEF_PLUGIN_SET_POINTER); return testResult; } void CommandLineTestRunner::initializeTestRun() { registry_->setGroupFilters(arguments_->getGroupFilters()); registry_->setNameFilters(arguments_->getNameFilters()); if (arguments_->isVerbose()) output_->verbose(); if (arguments_->isColor()) output_->color(); if (arguments_->runTestsInSeperateProcess()) registry_->setRunTestsInSeperateProcess(); } int CommandLineTestRunner::runAllTests() { initializeTestRun(); int loopCount = 0; int failureCount = 0; int repeat_ = arguments_->getRepeatCount(); if (arguments_->isListingTestGroupNames()) { TestResult tr(*output_); registry_->listTestGroupNames(tr); return 0; } if (arguments_->isListingTestGroupAndCaseNames()) { TestResult tr(*output_); registry_->listTestGroupAndCaseNames(tr); return 0; } while (loopCount++ < repeat_) { output_->printTestRun(loopCount, repeat_); TestResult tr(*output_); registry_->runAllTests(tr); failureCount += tr.getFailureCount(); } return failureCount; } TestOutput* CommandLineTestRunner::createJUnitOutput(const SimpleString& packageName) { JUnitTestOutput* junitOutput = new JUnitTestOutput; if (junitOutput != NULL) { junitOutput->setPackageName(packageName); } return junitOutput; } TestOutput* CommandLineTestRunner::createConsoleOutput() { return new ConsoleTestOutput; } TestOutput* CommandLineTestRunner::createCompositeOutput(TestOutput* outputOne, TestOutput* outputTwo) { CompositeTestOutput* composite = new CompositeTestOutput; composite->setOutputOne(outputOne); composite->setOutputTwo(outputTwo); return composite; } bool CommandLineTestRunner::parseArguments(TestPlugin* plugin) { if (!arguments_->parse(plugin)) { output_ = createConsoleOutput(); output_->print(arguments_->usage()); return false; } if (arguments_->isJUnitOutput()) { output_= createJUnitOutput(arguments_->getPackageName()); if (arguments_->isVerbose()) output_ = createCompositeOutput(output_, createConsoleOutput()); } else output_ = createConsoleOutput(); return true; } cpputest-3.7.2/src/CppUTest/JUnitTestOutput.cpp000644 000765 000024 00000020116 12521603460 022437 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/JUnitTestOutput.h" #include "CppUTest/TestResult.h" #include "CppUTest/TestFailure.h" #include "CppUTest/PlatformSpecificFunctions.h" struct JUnitTestCaseResultNode { JUnitTestCaseResultNode() : execTime_(0), failure_(0), ignored_(false), next_(0) { } SimpleString name_; long execTime_; TestFailure* failure_; bool ignored_; JUnitTestCaseResultNode* next_; }; struct JUnitTestGroupResult { JUnitTestGroupResult() : testCount_(0), failureCount_(0), startTime_(0), groupExecTime_(0), head_(0), tail_(0) { } int testCount_; int failureCount_; long startTime_; long groupExecTime_; SimpleString group_; JUnitTestCaseResultNode* head_; JUnitTestCaseResultNode* tail_; }; struct JUnitTestOutputImpl { JUnitTestGroupResult results_; PlatformSpecificFile file_; SimpleString package_; }; JUnitTestOutput::JUnitTestOutput() : impl_(new JUnitTestOutputImpl) { } JUnitTestOutput::~JUnitTestOutput() { resetTestGroupResult(); delete impl_; } void JUnitTestOutput::resetTestGroupResult() { impl_->results_.testCount_ = 0; impl_->results_.failureCount_ = 0; impl_->results_.group_ = ""; JUnitTestCaseResultNode* cur = impl_->results_.head_; while (cur) { JUnitTestCaseResultNode* tmp = cur->next_; ; delete cur->failure_; delete cur; cur = tmp; } impl_->results_.head_ = 0; impl_->results_.tail_ = 0; } void JUnitTestOutput::printTestsStarted() { } void JUnitTestOutput::printCurrentGroupStarted(const UtestShell& /*test*/) { } void JUnitTestOutput::printCurrentTestEnded(const TestResult& result) { impl_->results_.tail_->execTime_ = result.getCurrentTestTotalExecutionTime(); } void JUnitTestOutput::printTestsEnded(const TestResult& /*result*/) { } void JUnitTestOutput::printCurrentGroupEnded(const TestResult& result) { impl_->results_.groupExecTime_ = result.getCurrentGroupTotalExecutionTime(); writeTestGroupToFile(); resetTestGroupResult(); } void JUnitTestOutput::printCurrentTestStarted(const UtestShell& test) { impl_->results_.testCount_++; impl_->results_.group_ = test.getGroup(); impl_->results_.startTime_ = GetPlatformSpecificTimeInMillis(); if (impl_->results_.tail_ == 0) { impl_->results_.head_ = impl_->results_.tail_ = new JUnitTestCaseResultNode; } else { impl_->results_.tail_->next_ = new JUnitTestCaseResultNode; impl_->results_.tail_ = impl_->results_.tail_->next_; } impl_->results_.tail_->name_ = test.getName(); if (!test.willRun()) { impl_->results_.tail_->ignored_ = true; } } SimpleString JUnitTestOutput::createFileName(const SimpleString& group) { SimpleString fileName = "cpputest_"; fileName += group; fileName.replace('/', '_'); fileName += ".xml"; return fileName; } void JUnitTestOutput::setPackageName(const SimpleString& package) { if (impl_ != NULL) { impl_->package_ = package; } } void JUnitTestOutput::writeXmlHeader() { writeToFile("\n"); } void JUnitTestOutput::writeTestSuiteSummery() { SimpleString buf = StringFromFormat( "\n", impl_->results_.failureCount_, impl_->results_.group_.asCharString(), impl_->results_.testCount_, (int) (impl_->results_.groupExecTime_ / 1000), (int) (impl_->results_.groupExecTime_ % 1000), GetPlatformSpecificTimeString()); writeToFile(buf.asCharString()); } void JUnitTestOutput::writeProperties() { writeToFile("\n"); writeToFile("\n"); } void JUnitTestOutput::writeTestCases() { JUnitTestCaseResultNode* cur = impl_->results_.head_; while (cur) { SimpleString buf = StringFromFormat( "\n", impl_->package_.asCharString(), impl_->package_.isEmpty() == true ? "" : ".", impl_->results_.group_.asCharString(), cur->name_.asCharString(), (int) (cur->execTime_ / 1000), (int)(cur->execTime_ % 1000)); writeToFile(buf.asCharString()); if (cur->failure_) { writeFailure(cur); } else if (cur->ignored_) { writeToFile("\n"); } writeToFile("\n"); cur = cur->next_; } } void JUnitTestOutput::writeFailure(JUnitTestCaseResultNode* node) { SimpleString message = node->failure_->getMessage().asCharString(); message.replace('"', '\''); message.replace('<', '['); message.replace('>', ']'); message.replace("&", "&"); message.replace("\n", "{newline}"); SimpleString buf = StringFromFormat( "\n", node->failure_->getFileName().asCharString(), node->failure_->getFailureLineNumber(), message.asCharString()); writeToFile(buf.asCharString()); writeToFile("\n"); } void JUnitTestOutput::writeFileEnding() { writeToFile("\n"); writeToFile("\n"); writeToFile(""); } void JUnitTestOutput::writeTestGroupToFile() { openFileForWrite(createFileName(impl_->results_.group_)); writeXmlHeader(); writeTestSuiteSummery(); writeProperties(); writeTestCases(); writeFileEnding(); closeFile(); } // LCOV_EXCL_START void JUnitTestOutput::printBuffer(const char*) { } void JUnitTestOutput::print(const char*) { } void JUnitTestOutput::print(long) { } void JUnitTestOutput::flush() { } // LCOV_EXCL_STOP void JUnitTestOutput::print(const TestFailure& failure) { if (impl_->results_.tail_->failure_ == 0) { impl_->results_.failureCount_++; impl_->results_.tail_->failure_ = new TestFailure(failure); } } void JUnitTestOutput::openFileForWrite(const SimpleString& fileName) { impl_->file_ = PlatformSpecificFOpen(fileName.asCharString(), "w"); } void JUnitTestOutput::writeToFile(const SimpleString& buffer) { PlatformSpecificFPuts(buffer.asCharString(), impl_->file_); } void JUnitTestOutput::closeFile() { PlatformSpecificFClose(impl_->file_); } cpputest-3.7.2/src/CppUTest/MemoryLeakDetector.cpp000644 000765 000024 00000055154 12521603460 023076 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/SimpleMutex.h" #define UNKNOWN ((char*)("")) SimpleStringBuffer::SimpleStringBuffer() : positions_filled_(0), write_limit_(SIMPLE_STRING_BUFFER_LEN-1) { buffer_[0] = '\0'; } void SimpleStringBuffer::clear() { positions_filled_ = 0; buffer_[0] = '\0'; } void SimpleStringBuffer::add(const char* format, ...) { int count = 0; size_t positions_left = write_limit_ - positions_filled_; if (positions_left <= 0) return; va_list arguments; va_start(arguments, format); count = PlatformSpecificVSNprintf(buffer_ + positions_filled_, positions_left+1, format, arguments); if (count > 0) positions_filled_ += (size_t) count; if (positions_filled_ > write_limit_) positions_filled_ = write_limit_; va_end(arguments); } void SimpleStringBuffer::addMemoryDump(const void* memory, size_t memorySize) { const unsigned char* byteMemory = (const unsigned char*)memory; const size_t maxLineBytes = 16; size_t currentPos = 0; size_t p; while (currentPos < memorySize) { add(" %04lx: ", currentPos); size_t bytesInLine = memorySize - currentPos; if (bytesInLine > maxLineBytes) { bytesInLine = maxLineBytes; } const size_t leftoverBytes = maxLineBytes - bytesInLine; for (p = 0; p < bytesInLine; p++) { add("%02hhx ", byteMemory[currentPos + p]); if (p == ((maxLineBytes / 2) - 1)) { add(" "); } } for (p = 0; p < leftoverBytes; p++) { add(" "); } if (leftoverBytes > (maxLineBytes/2)) { add(" "); } add("|"); for (p = 0; p < bytesInLine; p++) { char toAdd = (char)byteMemory[currentPos + p]; if (toAdd < ' ' || toAdd > '~') { toAdd = '.'; } add("%c", (int)toAdd); } add("|\n"); currentPos += bytesInLine; } } char* SimpleStringBuffer::toString() { return buffer_; } void SimpleStringBuffer::setWriteLimit(size_t write_limit) { write_limit_ = write_limit; if (write_limit_ > SIMPLE_STRING_BUFFER_LEN-1) write_limit_ = SIMPLE_STRING_BUFFER_LEN-1; } void SimpleStringBuffer::resetWriteLimit() { write_limit_ = SIMPLE_STRING_BUFFER_LEN-1; } bool SimpleStringBuffer::reachedItsCapacity() { return positions_filled_ >= write_limit_; } //////////////////////// #define MEM_LEAK_TOO_MUCH "\netc etc etc etc. !!!! Too much memory leaks to report. Bailing out\n" #define MEM_LEAK_FOOTER "Total number of leaks: " #define MEM_LEAK_ADDITION_MALLOC_WARNING "NOTE:\n" \ "\tMemory leak reports about malloc and free can be caused by allocating using the cpputest version of malloc,\n" \ "\tbut deallocate using the standard free.\n" \ "\tIf this is the case, check whether your malloc/free replacements are working (#define malloc cpputest_malloc etc).\n" MemoryLeakOutputStringBuffer::MemoryLeakOutputStringBuffer() : total_leaks_(0), giveWarningOnUsingMalloc_(false) { } void MemoryLeakOutputStringBuffer::addAllocationLocation(const char* allocationFile, int allocationLineNumber, size_t allocationSize, TestMemoryAllocator* allocator) { outputBuffer_.add(" allocated at file: %s line: %d size: %lu type: %s\n", allocationFile, allocationLineNumber, (unsigned long) allocationSize, allocator->alloc_name()); } void MemoryLeakOutputStringBuffer::addDeallocationLocation(const char* freeFile, int freeLineNumber, TestMemoryAllocator* allocator) { outputBuffer_.add(" deallocated at file: %s line: %d type: %s\n", freeFile, freeLineNumber, allocator->free_name()); } void MemoryLeakOutputStringBuffer::addNoMemoryLeaksMessage() { outputBuffer_.add("No memory leaks were detected."); } void MemoryLeakOutputStringBuffer::startMemoryLeakReporting() { giveWarningOnUsingMalloc_ = false; total_leaks_ = 0; size_t memory_leak_normal_footer_size = sizeof(MEM_LEAK_FOOTER) + 10 + sizeof(MEM_LEAK_TOO_MUCH); /* the number of leaks */ size_t memory_leak_foot_size_with_malloc_warning = memory_leak_normal_footer_size + sizeof(MEM_LEAK_ADDITION_MALLOC_WARNING); outputBuffer_.setWriteLimit(SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN - memory_leak_foot_size_with_malloc_warning); } void MemoryLeakOutputStringBuffer::reportMemoryLeak(MemoryLeakDetectorNode* leak) { if (total_leaks_ == 0) { addMemoryLeakHeader(); } total_leaks_++; outputBuffer_.add("Alloc num (%u) Leak size: %lu Allocated at: %s and line: %d. Type: \"%s\"\n\tMemory: <%p> Content:\n", leak->number_, (unsigned long) leak->size_, leak->file_, leak->line_, leak->allocator_->alloc_name(), leak->memory_); outputBuffer_.addMemoryDump(leak->memory_, leak->size_); if (SimpleString::StrCmp(leak->allocator_->alloc_name(), (const char*) "malloc") == 0) giveWarningOnUsingMalloc_ = true; } void MemoryLeakOutputStringBuffer::stopMemoryLeakReporting() { if (total_leaks_ == 0) { addNoMemoryLeaksMessage(); return; } bool buffer_reached_its_capacity = outputBuffer_.reachedItsCapacity(); outputBuffer_.resetWriteLimit(); if (buffer_reached_its_capacity) addErrorMessageForTooMuchLeaks(); addMemoryLeakFooter(total_leaks_); if (giveWarningOnUsingMalloc_) addWarningForUsingMalloc(); } void MemoryLeakOutputStringBuffer::addMemoryLeakHeader() { outputBuffer_.add("Memory leak(s) found.\n"); } void MemoryLeakOutputStringBuffer::addErrorMessageForTooMuchLeaks() { outputBuffer_.add(MEM_LEAK_TOO_MUCH); } void MemoryLeakOutputStringBuffer::addMemoryLeakFooter(int amountOfLeaks) { outputBuffer_.add("%s %d\n", MEM_LEAK_FOOTER, amountOfLeaks); } void MemoryLeakOutputStringBuffer::addWarningForUsingMalloc() { outputBuffer_.add(MEM_LEAK_ADDITION_MALLOC_WARNING); } void MemoryLeakOutputStringBuffer::reportDeallocateNonAllocatedMemoryFailure(const char* freeFile, int freeLine, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter) { reportFailure("Deallocating non-allocated memory\n", "", 0, 0, NullUnknownAllocator::defaultAllocator(), freeFile, freeLine, freeAllocator, reporter); } void MemoryLeakOutputStringBuffer::reportAllocationDeallocationMismatchFailure(MemoryLeakDetectorNode* node, const char* freeFile, int freeLineNumber, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter) { reportFailure("Allocation/deallocation type mismatch\n", node->file_, node->line_, node->size_, node->allocator_, freeFile, freeLineNumber, freeAllocator, reporter); } void MemoryLeakOutputStringBuffer::reportMemoryCorruptionFailure(MemoryLeakDetectorNode* node, const char* freeFile, int freeLineNumber, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter) { reportFailure("Memory corruption (written out of bounds?)\n", node->file_, node->line_, node->size_, node->allocator_, freeFile, freeLineNumber, freeAllocator, reporter); } void MemoryLeakOutputStringBuffer::reportFailure(const char* message, const char* allocFile, int allocLine, size_t allocSize, TestMemoryAllocator* allocAllocator, const char* freeFile, int freeLine, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter) { outputBuffer_.add("%s", message); addAllocationLocation(allocFile, allocLine, allocSize, allocAllocator); addDeallocationLocation(freeFile, freeLine, freeAllocator); reporter->fail(toString()); } char* MemoryLeakOutputStringBuffer::toString() { return outputBuffer_.toString(); } void MemoryLeakOutputStringBuffer::clear() { outputBuffer_.clear(); } //////////////////////// void MemoryLeakDetectorNode::init(char* memory, unsigned number, size_t size, TestMemoryAllocator* allocator, MemLeakPeriod period, const char* file, int line) { number_ = number; memory_ = memory; size_ = size; allocator_ = allocator; period_ = period; file_ = file; line_ = line; } /////////////////////// bool MemoryLeakDetectorList::isInPeriod(MemoryLeakDetectorNode* node, MemLeakPeriod period) { return period == mem_leak_period_all || node->period_ == period || (node->period_ != mem_leak_period_disabled && period == mem_leak_period_enabled); } void MemoryLeakDetectorList::clearAllAccounting(MemLeakPeriod period) { MemoryLeakDetectorNode* cur = head_; MemoryLeakDetectorNode* prev = 0; while (cur) { if (isInPeriod(cur, period)) { if (prev) { prev->next_ = cur->next_; cur = prev; } else { head_ = cur->next_; cur = head_; continue; } } prev = cur; cur = cur->next_; } } void MemoryLeakDetectorList::addNewNode(MemoryLeakDetectorNode* node) { node->next_ = head_; head_ = node; } MemoryLeakDetectorNode* MemoryLeakDetectorList::removeNode(char* memory) { MemoryLeakDetectorNode* cur = head_; MemoryLeakDetectorNode* prev = 0; while (cur) { if (cur->memory_ == memory) { if (prev) { prev->next_ = cur->next_; return cur; } else { head_ = cur->next_; return cur; } } prev = cur; cur = cur->next_; } return 0; } MemoryLeakDetectorNode* MemoryLeakDetectorList::retrieveNode(char* memory) { MemoryLeakDetectorNode* cur = head_; while (cur) { if (cur->memory_ == memory) return cur; cur = cur->next_; } return NULL; } MemoryLeakDetectorNode* MemoryLeakDetectorList::getLeakFrom(MemoryLeakDetectorNode* node, MemLeakPeriod period) { for (MemoryLeakDetectorNode* cur = node; cur; cur = cur->next_) if (isInPeriod(cur, period)) return cur; return 0; } MemoryLeakDetectorNode* MemoryLeakDetectorList::getFirstLeak(MemLeakPeriod period) { return getLeakFrom(head_, period); } MemoryLeakDetectorNode* MemoryLeakDetectorList::getNextLeak(MemoryLeakDetectorNode* node, MemLeakPeriod period) { return getLeakFrom(node->next_, period); } int MemoryLeakDetectorList::getTotalLeaks(MemLeakPeriod period) { int total_leaks = 0; for (MemoryLeakDetectorNode* node = head_; node; node = node->next_) { if (isInPeriod(node, period)) total_leaks++; } return total_leaks; } ///////////////////////////////////////////////////////////// unsigned long MemoryLeakDetectorTable::hash(char* memory) { return (unsigned long)((size_t)memory % hash_prime); } void MemoryLeakDetectorTable::clearAllAccounting(MemLeakPeriod period) { for (int i = 0; i < hash_prime; i++) table_[i].clearAllAccounting(period); } void MemoryLeakDetectorTable::addNewNode(MemoryLeakDetectorNode* node) { table_[hash(node->memory_)].addNewNode(node); } MemoryLeakDetectorNode* MemoryLeakDetectorTable::removeNode(char* memory) { return table_[hash(memory)].removeNode(memory); } MemoryLeakDetectorNode* MemoryLeakDetectorTable::retrieveNode(char* memory) { return table_[hash(memory)].retrieveNode(memory); } int MemoryLeakDetectorTable::getTotalLeaks(MemLeakPeriod period) { int total_leaks = 0; for (int i = 0; i < hash_prime; i++) total_leaks += table_[i].getTotalLeaks(period); return total_leaks; } MemoryLeakDetectorNode* MemoryLeakDetectorTable::getFirstLeak(MemLeakPeriod period) { for (int i = 0; i < hash_prime; i++) { MemoryLeakDetectorNode* node = table_[i].getFirstLeak(period); if (node) return node; } return 0; } MemoryLeakDetectorNode* MemoryLeakDetectorTable::getNextLeak(MemoryLeakDetectorNode* leak, MemLeakPeriod period) { unsigned long i = hash(leak->memory_); MemoryLeakDetectorNode* node = table_[i].getNextLeak(leak, period); if (node) return node; for (++i; i < hash_prime; i++) { node = table_[i].getFirstLeak(period); if (node) return node; } return 0; } ///////////////////////////////////////////////////////////// MemoryLeakDetector::MemoryLeakDetector(MemoryLeakFailure* reporter) { doAllocationTypeChecking_ = true; allocationSequenceNumber_ = 1; current_period_ = mem_leak_period_disabled; reporter_ = reporter; mutex_ = new SimpleMutex; } MemoryLeakDetector::~MemoryLeakDetector() { if (mutex_) { delete mutex_; } } void MemoryLeakDetector::clearAllAccounting(MemLeakPeriod period) { memoryTable_.clearAllAccounting(period); } void MemoryLeakDetector::startChecking() { outputBuffer_.clear(); current_period_ = mem_leak_period_checking; } void MemoryLeakDetector::stopChecking() { current_period_ = mem_leak_period_enabled; } void MemoryLeakDetector::enable() { current_period_ = mem_leak_period_enabled; } void MemoryLeakDetector::disable() { current_period_ = mem_leak_period_disabled; } void MemoryLeakDetector::disableAllocationTypeChecking() { doAllocationTypeChecking_ = false; } void MemoryLeakDetector::enableAllocationTypeChecking() { doAllocationTypeChecking_ = true; } unsigned MemoryLeakDetector::getCurrentAllocationNumber() { return allocationSequenceNumber_; } SimpleMutex *MemoryLeakDetector::getMutex() { return mutex_; } static size_t calculateVoidPointerAlignedSize(size_t size) { return (sizeof(void*) - (size % sizeof(void*))) + size; } size_t MemoryLeakDetector::sizeOfMemoryWithCorruptionInfo(size_t size) { return calculateVoidPointerAlignedSize(size + memory_corruption_buffer_size); } MemoryLeakDetectorNode* MemoryLeakDetector::getNodeFromMemoryPointer(char* memory, size_t memory_size) { return (MemoryLeakDetectorNode*) (void*) (memory + sizeOfMemoryWithCorruptionInfo(memory_size)); } void MemoryLeakDetector::storeLeakInformation(MemoryLeakDetectorNode * node, char *new_memory, size_t size, TestMemoryAllocator *allocator, const char *file, int line) { node->init(new_memory, allocationSequenceNumber_++, size, allocator, current_period_, file, line); addMemoryCorruptionInformation(node->memory_ + node->size_); memoryTable_.addNewNode(node); } char* MemoryLeakDetector::reallocateMemoryAndLeakInformation(TestMemoryAllocator* allocator, char* memory, size_t size, const char* file, int line, bool allocatNodesSeperately) { char* new_memory = reallocateMemoryWithAccountingInformation(allocator, memory, size, file, line, allocatNodesSeperately); if (new_memory == NULL) return NULL; MemoryLeakDetectorNode *node = createMemoryLeakAccountingInformation(allocator, size, new_memory, allocatNodesSeperately); storeLeakInformation(node, new_memory, size, allocator, file, line); return node->memory_; } void MemoryLeakDetector::invalidateMemory(char* memory) { MemoryLeakDetectorNode* node = memoryTable_.retrieveNode(memory); if (node) PlatformSpecificMemset(memory, 0xCD, node->size_); } void MemoryLeakDetector::addMemoryCorruptionInformation(char* memory) { memory[0] = 'B'; memory[1] = 'A'; memory[2] = 'S'; } bool MemoryLeakDetector::validMemoryCorruptionInformation(char* memory) { return memory[0] == 'B' && memory[1] == 'A' && memory[2] == 'S'; } bool MemoryLeakDetector::matchingAllocation(TestMemoryAllocator *alloc_allocator, TestMemoryAllocator *free_allocator) { if (alloc_allocator == free_allocator) return true; if (!doAllocationTypeChecking_) return true; return free_allocator->isOfEqualType(alloc_allocator); } void MemoryLeakDetector::checkForCorruption(MemoryLeakDetectorNode* node, const char* file, int line, TestMemoryAllocator* allocator, bool allocateNodesSeperately) { if (!matchingAllocation(node->allocator_, allocator)) outputBuffer_.reportAllocationDeallocationMismatchFailure(node, file, line, allocator, reporter_); else if (!validMemoryCorruptionInformation(node->memory_ + node->size_)) outputBuffer_.reportMemoryCorruptionFailure(node, file, line, allocator, reporter_); else if (allocateNodesSeperately) allocator->freeMemoryLeakNode((char*) node); } char* MemoryLeakDetector::allocMemory(TestMemoryAllocator* allocator, size_t size, bool allocatNodesSeperately) { return allocMemory(allocator, size, UNKNOWN, 0, allocatNodesSeperately); } char* MemoryLeakDetector::allocateMemoryWithAccountingInformation(TestMemoryAllocator* allocator, size_t size, const char* file, int line, bool allocatNodesSeperately) { if (allocatNodesSeperately) return allocator->alloc_memory(sizeOfMemoryWithCorruptionInfo(size), file, line); else return allocator->alloc_memory(sizeOfMemoryWithCorruptionInfo(size) + sizeof(MemoryLeakDetectorNode), file, line); } char* MemoryLeakDetector::reallocateMemoryWithAccountingInformation(TestMemoryAllocator* /*allocator*/, char* memory, size_t size, const char* /*file*/, int /*line*/, bool allocatNodesSeperately) { if (allocatNodesSeperately) return (char*) PlatformSpecificRealloc(memory, sizeOfMemoryWithCorruptionInfo(size)); else return (char*) PlatformSpecificRealloc(memory, sizeOfMemoryWithCorruptionInfo(size) + sizeof(MemoryLeakDetectorNode)); } MemoryLeakDetectorNode* MemoryLeakDetector::createMemoryLeakAccountingInformation(TestMemoryAllocator* allocator, size_t size, char* memory, bool allocatNodesSeperately) { if (allocatNodesSeperately) return (MemoryLeakDetectorNode*) (void*) allocator->allocMemoryLeakNode(sizeof(MemoryLeakDetectorNode)); else return getNodeFromMemoryPointer(memory, size); } char* MemoryLeakDetector::allocMemory(TestMemoryAllocator* allocator, size_t size, const char* file, int line, bool allocatNodesSeperately) { /* With malloc, it is harder to guarantee that the allocator free is called. * This is because operator new is overloaded via linker symbols, but malloc just via #defines. * If the same allocation is used and the wrong free is called, it will deallocate the memory leak information * without the memory leak detector ever noticing it! * So, for malloc, we'll allocate the memory separately so we can detect this and give a proper error. */ char* memory = allocateMemoryWithAccountingInformation(allocator, size, file, line, allocatNodesSeperately); if (memory == NULL) return NULL; MemoryLeakDetectorNode* node = createMemoryLeakAccountingInformation(allocator, size, memory, allocatNodesSeperately); storeLeakInformation(node, memory, size, allocator, file, line); return node->memory_; } void MemoryLeakDetector::removeMemoryLeakInformationWithoutCheckingOrDeallocatingTheMemoryButDeallocatingTheAccountInformation(TestMemoryAllocator* allocator, void* memory, bool allocatNodesSeperately) { MemoryLeakDetectorNode* node = memoryTable_.removeNode((char*) memory); if (allocatNodesSeperately) allocator->freeMemoryLeakNode( (char*) node); } void MemoryLeakDetector::deallocMemory(TestMemoryAllocator* allocator, void* memory, const char* file, int line, bool allocatNodesSeperately) { if (memory == 0) return; MemoryLeakDetectorNode* node = memoryTable_.removeNode((char*) memory); if (node == NULL) { outputBuffer_.reportDeallocateNonAllocatedMemoryFailure(file, line, allocator, reporter_); return; } if (!allocator->hasBeenDestroyed()) { checkForCorruption(node, file, line, allocator, allocatNodesSeperately); allocator->free_memory((char*) memory, file, line); } } void MemoryLeakDetector::deallocMemory(TestMemoryAllocator* allocator, void* memory, bool allocatNodesSeperately) { deallocMemory(allocator, (char*) memory, UNKNOWN, 0, allocatNodesSeperately); } char* MemoryLeakDetector::reallocMemory(TestMemoryAllocator* allocator, char* memory, size_t size, const char* file, int line, bool allocatNodesSeperately) { if (memory) { MemoryLeakDetectorNode* node = memoryTable_.removeNode(memory); if (node == NULL) { outputBuffer_.reportDeallocateNonAllocatedMemoryFailure(file, line, allocator, reporter_); return NULL; } checkForCorruption(node, file, line, allocator, allocatNodesSeperately); } return reallocateMemoryAndLeakInformation(allocator, memory, size, file, line, allocatNodesSeperately); } void MemoryLeakDetector::ConstructMemoryLeakReport(MemLeakPeriod period) { MemoryLeakDetectorNode* leak = memoryTable_.getFirstLeak(period); outputBuffer_.startMemoryLeakReporting(); while (leak) { outputBuffer_.reportMemoryLeak(leak); leak = memoryTable_.getNextLeak(leak, period); } outputBuffer_.stopMemoryLeakReporting(); } const char* MemoryLeakDetector::report(MemLeakPeriod period) { ConstructMemoryLeakReport(period); return outputBuffer_.toString(); } void MemoryLeakDetector::markCheckingPeriodLeaksAsNonCheckingPeriod() { MemoryLeakDetectorNode* leak = memoryTable_.getFirstLeak(mem_leak_period_checking); while (leak) { if (leak->period_ == mem_leak_period_checking) leak->period_ = mem_leak_period_enabled; leak = memoryTable_.getNextLeak(leak, mem_leak_period_checking); } } int MemoryLeakDetector::totalMemoryLeaks(MemLeakPeriod period) { return memoryTable_.getTotalLeaks(period); } cpputest-3.7.2/src/CppUTest/MemoryLeakWarningPlugin.cpp000644 000765 000024 00000046436 12521603460 024114 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/MemoryLeakWarningPlugin.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/SimpleMutex.h" /********** Enabling and disabling for C also *********/ #if CPPUTEST_USE_MEM_LEAK_DETECTION class MemLeakScopedMutex { public: MemLeakScopedMutex() : lock(MemoryLeakWarningPlugin::getGlobalDetector()->getMutex()) { } private: ScopedMutexLock lock; }; static void* threadsafe_mem_leak_malloc(size_t size, const char* file, int line) { MemLeakScopedMutex lock; return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentMallocAllocator(), size, file, line, true); } static void threadsafe_mem_leak_free(void* buffer, const char* file, int line) { MemLeakScopedMutex lock; MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) buffer); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentMallocAllocator(), (char*) buffer, file, line, true); } static void* threadsafe_mem_leak_realloc(void* memory, size_t size, const char* file, int line) { MemLeakScopedMutex lock; return MemoryLeakWarningPlugin::getGlobalDetector()->reallocMemory(getCurrentMallocAllocator(), (char*) memory, size, file, line, true); } static void* mem_leak_malloc(size_t size, const char* file, int line) { return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentMallocAllocator(), size, file, line, true); } static void mem_leak_free(void* buffer, const char* file, int line) { MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) buffer); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentMallocAllocator(), (char*) buffer, file, line, true); } static void* mem_leak_realloc(void* memory, size_t size, const char* file, int line) { return MemoryLeakWarningPlugin::getGlobalDetector()->reallocMemory(getCurrentMallocAllocator(), (char*) memory, size, file, line, true); } #endif static void* normal_malloc(size_t size, const char*, int) { return PlatformSpecificMalloc(size); } static void* normal_realloc(void* memory, size_t size, const char*, int) { return PlatformSpecificRealloc(memory, size); } static void normal_free(void* buffer, const char*, int) { PlatformSpecificFree(buffer); } #if CPPUTEST_USE_MEM_LEAK_DETECTION static void *(*malloc_fptr)(size_t size, const char* file, int line) = mem_leak_malloc; static void (*free_fptr)(void* mem, const char* file, int line) = mem_leak_free; static void*(*realloc_fptr)(void* memory, size_t size, const char* file, int line) = mem_leak_realloc; #else static void *(*malloc_fptr)(size_t size, const char* file, int line) = normal_malloc; static void (*free_fptr)(void* mem, const char* file, int line) = normal_free; static void*(*realloc_fptr)(void* memory, size_t size, const char* file, int line) = normal_realloc; #endif void* cpputest_malloc_location_with_leak_detection(size_t size, const char* file, int line) { return malloc_fptr(size, file, line); } void* cpputest_realloc_location_with_leak_detection(void* memory, size_t size, const char* file, int line) { return realloc_fptr(memory, size, file, line); } void cpputest_free_location_with_leak_detection(void* buffer, const char* file, int line) { free_fptr(buffer, file, line); } /********** C++ *************/ #if CPPUTEST_USE_MEM_LEAK_DETECTION #undef new #if CPPUTEST_USE_STD_CPP_LIB #define UT_THROW_BAD_ALLOC_WHEN_NULL(memory) if (memory == NULL) throw std::bad_alloc(); #else #define UT_THROW_BAD_ALLOC_WHEN_NULL(memory) #endif static void* threadsafe_mem_leak_operator_new (size_t size) UT_THROW(std::bad_alloc) { MemLeakScopedMutex lock; void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* threadsafe_mem_leak_operator_new_nothrow (size_t size) UT_NOTHROW { MemLeakScopedMutex lock; return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size); } static void* threadsafe_mem_leak_operator_new_debug (size_t size, const char* file, int line) UT_THROW(std::bad_alloc) { MemLeakScopedMutex lock; void *memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size, (char*) file, line); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* threadsafe_mem_leak_operator_new_array (size_t size) UT_THROW(std::bad_alloc) { MemLeakScopedMutex lock; void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* threadsafe_mem_leak_operator_new_array_nothrow (size_t size) UT_NOTHROW { MemLeakScopedMutex lock; return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size); } static void* threadsafe_mem_leak_operator_new_array_debug (size_t size, const char* file, int line) UT_THROW(std::bad_alloc) { MemLeakScopedMutex lock; void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size, (char*) file, line); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void threadsafe_mem_leak_operator_delete (void* mem) UT_NOTHROW { MemLeakScopedMutex lock; MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) mem); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentNewAllocator(), (char*) mem); } static void threadsafe_mem_leak_operator_delete_array (void* mem) UT_NOTHROW { MemLeakScopedMutex lock; MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) mem); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentNewArrayAllocator(), (char*) mem); } static void* mem_leak_operator_new (size_t size) UT_THROW(std::bad_alloc) { void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* mem_leak_operator_new_nothrow (size_t size) UT_NOTHROW { return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size); } static void* mem_leak_operator_new_debug (size_t size, const char* file, int line) UT_THROW(std::bad_alloc) { void *memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size, (char*) file, line); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* mem_leak_operator_new_array (size_t size) UT_THROW(std::bad_alloc) { void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* mem_leak_operator_new_array_nothrow (size_t size) UT_NOTHROW { return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size); } static void* mem_leak_operator_new_array_debug (size_t size, const char* file, int line) UT_THROW(std::bad_alloc) { void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size, (char*) file, line); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void mem_leak_operator_delete (void* mem) UT_NOTHROW { MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) mem); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentNewAllocator(), (char*) mem); } static void mem_leak_operator_delete_array (void* mem) UT_NOTHROW { MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) mem); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentNewArrayAllocator(), (char*) mem); } static void* normal_operator_new (size_t size) UT_THROW(std::bad_alloc) { void* memory = PlatformSpecificMalloc(size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* normal_operator_new_nothrow (size_t size) UT_NOTHROW { return PlatformSpecificMalloc(size); } static void* normal_operator_new_debug (size_t size, const char* /*file*/, int /*line*/) UT_THROW(std::bad_alloc) { void* memory = PlatformSpecificMalloc(size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* normal_operator_new_array (size_t size) UT_THROW(std::bad_alloc) { void* memory = PlatformSpecificMalloc(size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* normal_operator_new_array_nothrow (size_t size) UT_NOTHROW { return PlatformSpecificMalloc(size); } static void* normal_operator_new_array_debug (size_t size, const char* /*file*/, int /*line*/) UT_THROW(std::bad_alloc) { void* memory = PlatformSpecificMalloc(size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void normal_operator_delete (void* mem) UT_NOTHROW { PlatformSpecificFree(mem); } static void normal_operator_delete_array (void* mem) UT_NOTHROW { PlatformSpecificFree(mem); } static void *(*operator_new_fptr)(size_t size) UT_THROW(std::bad_alloc) = mem_leak_operator_new; static void *(*operator_new_nothrow_fptr)(size_t size) UT_NOTHROW = mem_leak_operator_new_nothrow; static void *(*operator_new_debug_fptr)(size_t size, const char* file, int line) UT_THROW(std::bad_alloc) = mem_leak_operator_new_debug; static void *(*operator_new_array_fptr)(size_t size) UT_THROW(std::bad_alloc) = mem_leak_operator_new_array; static void *(*operator_new_array_nothrow_fptr)(size_t size) UT_NOTHROW = mem_leak_operator_new_array_nothrow; static void *(*operator_new_array_debug_fptr)(size_t size, const char* file, int line) UT_THROW(std::bad_alloc) = mem_leak_operator_new_array_debug; static void (*operator_delete_fptr)(void* mem) UT_NOTHROW = mem_leak_operator_delete; static void (*operator_delete_array_fptr)(void* mem) UT_NOTHROW = mem_leak_operator_delete_array; void* operator new(size_t size) UT_THROW(std::bad_alloc) { return operator_new_fptr(size); } void* operator new(size_t size, const char* file, int line) UT_THROW(std::bad_alloc) { return operator_new_debug_fptr(size, file, line); } void operator delete(void* mem) UT_NOTHROW { operator_delete_fptr(mem); } void operator delete(void* mem, const char*, int) UT_NOTHROW { operator_delete_fptr(mem); } void* operator new[](size_t size) UT_THROW(std::bad_alloc) { return operator_new_array_fptr(size); } void* operator new [](size_t size, const char* file, int line) UT_THROW(std::bad_alloc) { return operator_new_array_debug_fptr(size, file, line); } void operator delete[](void* mem) UT_NOTHROW { operator_delete_array_fptr(mem); } void operator delete[](void* mem, const char*, int) UT_NOTHROW { operator_delete_array_fptr(mem); } #if CPPUTEST_USE_STD_CPP_LIB void* operator new(size_t size, const std::nothrow_t&) UT_NOTHROW { return operator_new_nothrow_fptr(size); } void* operator new[](size_t size, const std::nothrow_t&) UT_NOTHROW { return operator_new_array_nothrow_fptr(size); } #else /* Have a similar method. This avoid unused operator_new_nothrow_fptr warning */ extern void* operator_new_nothrow(size_t size) UT_NOTHROW; extern void* operator_new_array_nothrow(size_t size) UT_NOTHROW; void* operator_new_nothrow(size_t size) UT_NOTHROW { return operator_new_nothrow_fptr(size); } void* operator_new_array_nothrow(size_t size) UT_NOTHROW { return operator_new_array_nothrow_fptr(size); } #endif #endif void MemoryLeakWarningPlugin::turnOffNewDeleteOverloads() { #if CPPUTEST_USE_MEM_LEAK_DETECTION operator_new_fptr = normal_operator_new; operator_new_nothrow_fptr = normal_operator_new_nothrow; operator_new_debug_fptr = normal_operator_new_debug; operator_new_array_fptr = normal_operator_new_array; operator_new_array_nothrow_fptr = normal_operator_new_array_nothrow; operator_new_array_debug_fptr = normal_operator_new_array_debug; operator_delete_fptr = normal_operator_delete; operator_delete_array_fptr = normal_operator_delete_array; malloc_fptr = normal_malloc; realloc_fptr = normal_realloc; free_fptr = normal_free; #endif } void MemoryLeakWarningPlugin::turnOnNewDeleteOverloads() { #if CPPUTEST_USE_MEM_LEAK_DETECTION operator_new_fptr = mem_leak_operator_new; operator_new_nothrow_fptr = mem_leak_operator_new_nothrow; operator_new_debug_fptr = mem_leak_operator_new_debug; operator_new_array_fptr = mem_leak_operator_new_array; operator_new_array_nothrow_fptr = mem_leak_operator_new_array_nothrow; operator_new_array_debug_fptr = mem_leak_operator_new_array_debug; operator_delete_fptr = mem_leak_operator_delete; operator_delete_array_fptr = mem_leak_operator_delete_array; malloc_fptr = mem_leak_malloc; realloc_fptr = mem_leak_realloc; free_fptr = mem_leak_free; #endif } bool MemoryLeakWarningPlugin::areNewDeleteOverloaded() { #if CPPUTEST_USE_MEM_LEAK_DETECTION return operator_new_fptr == mem_leak_operator_new; #else return false; #endif } void MemoryLeakWarningPlugin::turnOnThreadSafeNewDeleteOverloads() { #if CPPUTEST_USE_MEM_LEAK_DETECTION operator_new_fptr = threadsafe_mem_leak_operator_new; operator_new_nothrow_fptr = threadsafe_mem_leak_operator_new_nothrow; operator_new_debug_fptr = threadsafe_mem_leak_operator_new_debug; operator_new_array_fptr = threadsafe_mem_leak_operator_new_array; operator_new_array_nothrow_fptr = threadsafe_mem_leak_operator_new_array_nothrow; operator_new_array_debug_fptr = threadsafe_mem_leak_operator_new_array_debug; operator_delete_fptr = threadsafe_mem_leak_operator_delete; operator_delete_array_fptr = threadsafe_mem_leak_operator_delete_array; malloc_fptr = threadsafe_mem_leak_malloc; realloc_fptr = threadsafe_mem_leak_realloc; free_fptr = threadsafe_mem_leak_free; #endif } void crash_on_allocation_number(unsigned alloc_number) { static CrashOnAllocationAllocator crashAllocator; crashAllocator.setNumberToCrashOn(alloc_number); setCurrentMallocAllocator(&crashAllocator); setCurrentNewAllocator(&crashAllocator); setCurrentNewArrayAllocator(&crashAllocator); } class MemoryLeakWarningReporter: public MemoryLeakFailure { public: virtual ~MemoryLeakWarningReporter() { } virtual void fail(char* fail_string) { UtestShell* currentTest = UtestShell::getCurrent(); currentTest->failWith(FailFailure(currentTest, currentTest->getName().asCharString(), currentTest->getLineNumber(), fail_string), TestTerminatorWithoutExceptions()); } // LCOV_EXCL_LINE }; static MemoryLeakFailure* globalReporter = 0; static MemoryLeakDetector* globalDetector = 0; MemoryLeakDetector* MemoryLeakWarningPlugin::getGlobalDetector() { if (globalDetector == 0) { bool newDeleteOverloaded = areNewDeleteOverloaded(); turnOffNewDeleteOverloads(); globalReporter = new MemoryLeakWarningReporter; globalDetector = new MemoryLeakDetector(globalReporter); if (newDeleteOverloaded) turnOnNewDeleteOverloads(); } return globalDetector; } MemoryLeakFailure* MemoryLeakWarningPlugin::getGlobalFailureReporter() { return globalReporter; } void MemoryLeakWarningPlugin::destroyGlobalDetectorAndTurnOffMemoryLeakDetectionInDestructor(bool des) { destroyGlobalDetectorAndTurnOfMemoryLeakDetectionInDestructor_ = des; } void MemoryLeakWarningPlugin::setGlobalDetector(MemoryLeakDetector* detector, MemoryLeakFailure* reporter) { globalDetector = detector; globalReporter = reporter; } void MemoryLeakWarningPlugin::destroyGlobalDetector() { turnOffNewDeleteOverloads(); delete globalDetector; delete globalReporter; globalDetector = NULL; } MemoryLeakWarningPlugin* MemoryLeakWarningPlugin::firstPlugin_ = 0; MemoryLeakWarningPlugin* MemoryLeakWarningPlugin::getFirstPlugin() { return firstPlugin_; } MemoryLeakDetector* MemoryLeakWarningPlugin::getMemoryLeakDetector() { return memLeakDetector_; } void MemoryLeakWarningPlugin::ignoreAllLeaksInTest() { ignoreAllWarnings_ = true; } void MemoryLeakWarningPlugin::expectLeaksInTest(int n) { expectedLeaks_ = n; } MemoryLeakWarningPlugin::MemoryLeakWarningPlugin(const SimpleString& name, MemoryLeakDetector* localDetector) : TestPlugin(name), ignoreAllWarnings_(false), destroyGlobalDetectorAndTurnOfMemoryLeakDetectionInDestructor_(false), expectedLeaks_(0) { if (firstPlugin_ == 0) firstPlugin_ = this; if (localDetector) memLeakDetector_ = localDetector; else memLeakDetector_ = getGlobalDetector(); memLeakDetector_->enable(); } MemoryLeakWarningPlugin::~MemoryLeakWarningPlugin() { if (destroyGlobalDetectorAndTurnOfMemoryLeakDetectionInDestructor_) { MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); MemoryLeakWarningPlugin::destroyGlobalDetector(); } } void MemoryLeakWarningPlugin::preTestAction(UtestShell& /*test*/, TestResult& result) { memLeakDetector_->startChecking(); failureCount_ = result.getFailureCount(); } void MemoryLeakWarningPlugin::postTestAction(UtestShell& test, TestResult& result) { memLeakDetector_->stopChecking(); int leaks = memLeakDetector_->totalMemoryLeaks(mem_leak_period_checking); if (!ignoreAllWarnings_ && expectedLeaks_ != leaks && failureCount_ == result.getFailureCount()) { TestFailure f(&test, memLeakDetector_->report(mem_leak_period_checking)); result.addFailure(f); } memLeakDetector_->markCheckingPeriodLeaksAsNonCheckingPeriod(); ignoreAllWarnings_ = false; expectedLeaks_ = 0; } const char* MemoryLeakWarningPlugin::FinalReport(int toBeDeletedLeaks) { int leaks = memLeakDetector_->totalMemoryLeaks(mem_leak_period_enabled); if (leaks != toBeDeletedLeaks) return memLeakDetector_->report(mem_leak_period_enabled); return ""; } cpputest-3.7.2/src/CppUTest/SimpleMutex.cpp000644 000765 000024 00000004150 12521603460 021601 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2014, Michael Feathers, James Grenning, Bas Vodde and Chen YewMing * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/SimpleMutex.h" SimpleMutex::SimpleMutex(void) { psMtx = PlatformSpecificMutexCreate(); } SimpleMutex::~SimpleMutex(void) { PlatformSpecificMutexDestroy(psMtx); } void SimpleMutex::Lock(void) { PlatformSpecificMutexLock(psMtx); } void SimpleMutex::Unlock(void) { PlatformSpecificMutexUnlock(psMtx); } ScopedMutexLock::ScopedMutexLock(SimpleMutex *mtx) : mutex(mtx) { mutex->Lock(); } ScopedMutexLock::~ScopedMutexLock() { mutex->Unlock(); } cpputest-3.7.2/src/CppUTest/SimpleString.cpp000644 000765 000024 00000036306 12521603460 021755 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/SimpleString.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestMemoryAllocator.h" TestMemoryAllocator* SimpleString::stringAllocator_ = NULL; TestMemoryAllocator* SimpleString::getStringAllocator() { if (stringAllocator_ == NULL) return defaultNewArrayAllocator(); return stringAllocator_; } void SimpleString::setStringAllocator(TestMemoryAllocator* allocator) { stringAllocator_ = allocator; } /* Avoid using the memory leak detector INSIDE SimpleString as its used inside the detector */ char* SimpleString::allocStringBuffer(size_t _size) { return getStringAllocator()->alloc_memory(_size, __FILE__, __LINE__); } void SimpleString::deallocStringBuffer(char* str) { getStringAllocator()->free_memory(str, __FILE__, __LINE__); } char* SimpleString::getEmptyString() const { char* empty = allocStringBuffer(1); empty[0] = '\0'; return empty; } int SimpleString::AtoI(const char* str) { while (isSpace(*str)) str++; char first_char = *str; if (first_char == '-' || first_char == '+') str++; int result = 0; for(; isDigit(*str); str++) { result *= 10; result += *str - '0'; } return (first_char == '-') ? -result : result; } int SimpleString::StrCmp(const char* s1, const char* s2) { while(*s1 && *s1 == *s2) s1++, s2++; return *(unsigned char *) s1 - *(unsigned char *) s2; } size_t SimpleString::StrLen(const char* str) { size_t n = (size_t)-1; do n++; while (*str++); return n; } int SimpleString::StrNCmp(const char* s1, const char* s2, size_t n) { while (n && *s1 && *s1 == *s2) { n--, s1++, s2++; } return n ? *(unsigned char *) s1 - *(unsigned char *) s2 : 0; } char* SimpleString::StrNCpy(char* s1, const char* s2, size_t n) { char* result = s1; if((NULL == s1) || (0 == n)) return result; while ((*s1++ = *s2++) && --n != 0) ; return result; } char* SimpleString::StrStr(const char* s1, const char* s2) { if(!*s2) return (char*) s1; for (; *s1; s1++) if (StrNCmp(s1, s2, StrLen(s2)) == 0) return (char*) s1; return NULL; } char SimpleString::ToLower(char ch) { return isUpper(ch) ? (char)((int)ch + ('a' - 'A')) : ch; } int SimpleString::MemCmp(const void* s1, const void *s2, size_t n) { const unsigned char* p1 = (const unsigned char*) s1; const unsigned char* p2 = (const unsigned char*) s2; while (n--) if (*p1 != *p2) return *p1 - *p2; else p1++, p2++; return 0; } SimpleString::SimpleString(const char *otherBuffer) { if (otherBuffer == 0) { buffer_ = getEmptyString(); } else { buffer_ = copyToNewBuffer(otherBuffer); } } SimpleString::SimpleString(const char *other, size_t repeatCount) { size_t otherStringLength = StrLen(other); size_t len = otherStringLength * repeatCount + 1; buffer_ = allocStringBuffer(len); char* next = buffer_; for (size_t i = 0; i < repeatCount; i++) { StrNCpy(next, other, otherStringLength + 1); next += otherStringLength; } *next = 0; } SimpleString::SimpleString(const SimpleString& other) { buffer_ = copyToNewBuffer(other.buffer_); } SimpleString& SimpleString::operator=(const SimpleString& other) { if (this != &other) { deallocStringBuffer(buffer_); buffer_ = copyToNewBuffer(other.buffer_); } return *this; } bool SimpleString::contains(const SimpleString& other) const { return StrStr(buffer_, other.buffer_) != 0; } bool SimpleString::containsNoCase(const SimpleString& other) const { return lowerCase().contains(other.lowerCase()); } bool SimpleString::startsWith(const SimpleString& other) const { if (StrLen(other.buffer_) == 0) return true; else if (size() == 0) return false; else return StrStr(buffer_, other.buffer_) == buffer_; } bool SimpleString::endsWith(const SimpleString& other) const { size_t buffer_length = size(); size_t other_buffer_length = StrLen(other.buffer_); if (other_buffer_length == 0) return true; if (buffer_length == 0) return false; if (buffer_length < other_buffer_length) return false; return StrCmp(buffer_ + buffer_length - other_buffer_length, other.buffer_) == 0; } size_t SimpleString::count(const SimpleString& substr) const { size_t num = 0; char* str = buffer_; while (*str && (str = StrStr(str, substr.buffer_))) { num++; str++; } return num; } void SimpleString::split(const SimpleString& delimiter, SimpleStringCollection& col) const { size_t num = count(delimiter); size_t extraEndToken = (endsWith(delimiter)) ? 0 : 1U; col.allocate(num + extraEndToken); char* str = buffer_; char* prev; for (size_t i = 0; i < num; ++i) { prev = str; str = StrStr(str, delimiter.buffer_) + 1; size_t len = (size_t) (str - prev) + 1; col[i].buffer_ = copyToNewBuffer(prev, len); } if (extraEndToken) { col[num] = str; } } void SimpleString::replace(char to, char with) { size_t s = size(); for (size_t i = 0; i < s; i++) { if (buffer_[i] == to) buffer_[i] = with; } } void SimpleString::replace(const char* to, const char* with) { size_t c = count(to); size_t len = size(); size_t tolen = StrLen(to); size_t withlen = StrLen(with); size_t newsize = len + (withlen * c) - (tolen * c) + 1; if (newsize > 1) { char* newbuf = allocStringBuffer(newsize); for (size_t i = 0, j = 0; i < len;) { if (StrNCmp(&buffer_[i], to, tolen) == 0) { StrNCpy(&newbuf[j], with, withlen + 1); j += withlen; i += tolen; } else { newbuf[j] = buffer_[i]; j++; i++; } } deallocStringBuffer(buffer_); buffer_ = newbuf; buffer_[newsize - 1] = '\0'; } else { buffer_ = getEmptyString(); buffer_[0] = '\0'; } } SimpleString SimpleString::lowerCase() const { SimpleString str(*this); size_t str_size = str.size(); for (size_t i = 0; i < str_size; i++) str.buffer_[i] = ToLower(str.buffer_[i]); return str; } const char *SimpleString::asCharString() const { return buffer_; } size_t SimpleString::size() const { return StrLen(buffer_); } bool SimpleString::isEmpty() const { return size() == 0; } SimpleString::~SimpleString() { deallocStringBuffer(buffer_); } bool operator==(const SimpleString& left, const SimpleString& right) { return 0 == SimpleString::StrCmp(left.asCharString(), right.asCharString()); } bool SimpleString::equalsNoCase(const SimpleString& str) const { return lowerCase() == str.lowerCase(); } bool operator!=(const SimpleString& left, const SimpleString& right) { return !(left == right); } SimpleString SimpleString::operator+(const SimpleString& rhs) { SimpleString t(buffer_); t += rhs.buffer_; return t; } SimpleString& SimpleString::operator+=(const SimpleString& rhs) { return operator+=(rhs.buffer_); } SimpleString& SimpleString::operator+=(const char* rhs) { size_t originalSize = this->size(); size_t additionalStringSize = StrLen(rhs) + 1; size_t sizeOfNewString = originalSize + additionalStringSize; char* tbuffer = copyToNewBuffer(this->buffer_, sizeOfNewString); StrNCpy(tbuffer + originalSize, rhs, additionalStringSize); deallocStringBuffer(this->buffer_); this->buffer_ = tbuffer; return *this; } void SimpleString::padStringsToSameLength(SimpleString& str1, SimpleString& str2, char padCharacter) { if (str1.size() > str2.size()) { padStringsToSameLength(str2, str1, padCharacter); return; } char pad[2]; pad[0] = padCharacter; pad[1] = 0; str1 = SimpleString(pad, str2.size() - str1.size()) + str1; } SimpleString SimpleString::subString(size_t beginPos, size_t amount) const { if (beginPos > size()-1) return ""; SimpleString newString = buffer_ + beginPos; if (newString.size() > amount) newString.buffer_[amount] = '\0'; return newString; } char SimpleString::at(int pos) const { return buffer_[pos]; } int SimpleString::find(char ch) const { return findFrom(0, ch); } int SimpleString::findFrom(size_t starting_position, char ch) const { size_t length = size(); for (size_t i = starting_position; i < length; i++) if (buffer_[i] == ch) return (int) i; return -1; } SimpleString SimpleString::subStringFromTill(char startChar, char lastExcludedChar) const { int beginPos = find(startChar); if (beginPos < 0) return ""; int endPos = findFrom((size_t)beginPos, lastExcludedChar); if (endPos == -1) return subString((size_t)beginPos, size()); return subString((size_t)beginPos, (size_t) (endPos - beginPos)); } char* SimpleString::copyToNewBuffer(const char* bufferToCopy, size_t bufferSize) { if(bufferSize == 0) bufferSize = StrLen(bufferToCopy) + 1; char* newBuffer = allocStringBuffer(bufferSize); StrNCpy(newBuffer, bufferToCopy, bufferSize); newBuffer[bufferSize-1] = '\0'; return newBuffer; } void SimpleString::copyToBuffer(char* bufferToCopy, size_t bufferSize) const { if (bufferToCopy == NULL || bufferSize == 0) return; size_t sizeToCopy = (bufferSize-1 < size()) ? bufferSize : size(); StrNCpy(bufferToCopy, buffer_, sizeToCopy); bufferToCopy[sizeToCopy] = '\0'; } bool SimpleString::isDigit(char ch) { return '0' <= ch && '9' >= ch; } bool SimpleString::isSpace(char ch) { return (ch == ' ') || (0x08 < ch && 0x0E > ch); } bool SimpleString::isUpper(char ch) { return 'A' <= ch && 'Z' >= ch; } SimpleString StringFrom(bool value) { return SimpleString(StringFromFormat("%s", value ? "true" : "false")); } SimpleString StringFrom(const char *value) { return SimpleString(value); } SimpleString StringFromOrNull(const char * expected) { return (expected) ? StringFrom(expected) : "(null)"; } SimpleString StringFrom(int value) { return StringFromFormat("%d", value); } SimpleString StringFrom(long value) { return StringFromFormat("%ld", value); } SimpleString StringFrom(const void* value) { return SimpleString("0x") + HexStringFrom(value); } SimpleString HexStringFrom(long value) { return StringFromFormat("%lx", value); } SimpleString HexStringFrom(unsigned long value) { return StringFromFormat("%lx", value); } static long convertPointerToLongValue(const void* value) { /* * This way of converting also can convert a 64bit pointer in a 32bit integer by truncating. * This isn't the right way to convert pointers values and need to change by implementing a * proper portable way to convert pointers to strings. */ long* long_value = (long*) &value; return *long_value; } SimpleString HexStringFrom(const void* value) { return StringFromFormat("%lx", convertPointerToLongValue(value)); } SimpleString StringFrom(double value, int precision) { return StringFromFormat("%.*g", precision, value); } SimpleString StringFrom(char value) { return StringFromFormat("%c", value); } SimpleString StringFrom(const SimpleString& value) { return SimpleString(value); } SimpleString StringFromFormat(const char* format, ...) { SimpleString resultString; va_list arguments; va_start(arguments, format); resultString = VStringFromFormat(format, arguments); va_end(arguments); return resultString; } SimpleString StringFrom(unsigned int i) { return StringFromFormat("%10u (0x%08x)", i, i); } #if CPPUTEST_USE_STD_CPP_LIB #include SimpleString StringFrom(const std::string& value) { return SimpleString(value.c_str()); } #endif SimpleString StringFrom(unsigned long i) { return StringFromFormat("%lu (0x%lx)", i, i); } //Kludge to get a va_copy in VC++ V6 #ifndef va_copy #define va_copy(copy, original) copy = original; #endif SimpleString VStringFromFormat(const char* format, va_list args) { va_list argsCopy; va_copy(argsCopy, args); enum { sizeOfdefaultBuffer = 100 }; char defaultBuffer[sizeOfdefaultBuffer]; SimpleString resultString; size_t size = (size_t)PlatformSpecificVSNprintf(defaultBuffer, sizeOfdefaultBuffer, format, args); if (size < sizeOfdefaultBuffer) { resultString = SimpleString(defaultBuffer); } else { size_t newBufferSize = size + 1; char* newBuffer = SimpleString::allocStringBuffer(newBufferSize); PlatformSpecificVSNprintf(newBuffer, newBufferSize, format, argsCopy); resultString = SimpleString(newBuffer); SimpleString::deallocStringBuffer(newBuffer); } va_end(argsCopy); return resultString; } SimpleString StringFromBinary(const unsigned char* value, size_t size) { SimpleString result; for (size_t i = 0; i < size; i++) { result += StringFromFormat("%02X ", value[i]); } result = result.subString(0, result.size() - 1); return result; } SimpleString StringFromBinaryOrNull(const unsigned char* value, size_t size) { return (value) ? StringFromBinary(value, size) : "(null)"; } SimpleStringCollection::SimpleStringCollection() { collection_ = 0; size_ = 0; } void SimpleStringCollection::allocate(size_t _size) { delete[] collection_; size_ = _size; collection_ = new SimpleString[size_]; } SimpleStringCollection::~SimpleStringCollection() { delete[] (collection_); } size_t SimpleStringCollection::size() const { return size_; } SimpleString& SimpleStringCollection::operator[](size_t index) { if (index >= size_) { empty_ = ""; return empty_; } return collection_[index]; } cpputest-3.7.2/src/CppUTest/TestFailure.cpp000644 000765 000024 00000026276 12521603460 021571 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestFailure.h" #include "CppUTest/TestOutput.h" #include "CppUTest/SimpleString.h" #include "CppUTest/PlatformSpecificFunctions.h" static SimpleString removeAllPrintableCharactersFrom(const SimpleString& str) { size_t bufferSize = str.size()+1; char* buffer = (char*) PlatformSpecificMalloc(bufferSize); str.copyToBuffer(buffer, bufferSize); for (size_t i = 0; i < bufferSize-1; i++) if (buffer[i] != '\t' && buffer[i] != '\n') buffer[i] = ' '; SimpleString result(buffer); PlatformSpecificFree(buffer); return result; } static SimpleString addMarkerToString(const SimpleString& str, int markerPos) { size_t bufferSize = str.size()+1; char* buffer = (char*) PlatformSpecificMalloc(bufferSize); str.copyToBuffer(buffer, bufferSize); buffer[markerPos] = '^'; SimpleString result(buffer); PlatformSpecificFree(buffer); return result; } TestFailure::TestFailure(UtestShell* test, const char* fileName, int lineNumber, const SimpleString& theMessage) : testName_(test->getFormattedName()), fileName_(fileName), lineNumber_(lineNumber), testFileName_(test->getFile()), testLineNumber_(test->getLineNumber()), message_(theMessage) { } TestFailure::TestFailure(UtestShell* test, const SimpleString& theMessage) : testName_(test->getFormattedName()), fileName_(test->getFile()), lineNumber_(test->getLineNumber()), testFileName_(test->getFile()), testLineNumber_(test->getLineNumber()), message_(theMessage) { } TestFailure::TestFailure(UtestShell* test, const char* fileName, int lineNum) : testName_(test->getFormattedName()), fileName_(fileName), lineNumber_(lineNum), testFileName_(test->getFile()), testLineNumber_(test->getLineNumber()), message_("no message") { } TestFailure::TestFailure(const TestFailure& f) : testName_(f.testName_), fileName_(f.fileName_), lineNumber_(f.lineNumber_), testFileName_(f.testFileName_), testLineNumber_(f.testLineNumber_), message_(f.message_) { } TestFailure::~TestFailure() { } SimpleString TestFailure::getFileName() const { return fileName_; } SimpleString TestFailure::getTestFileName() const { return testFileName_; } SimpleString TestFailure::getTestName() const { return testName_; } int TestFailure::getFailureLineNumber() const { return lineNumber_; } int TestFailure::getTestLineNumber() const { return testLineNumber_; } SimpleString TestFailure::getMessage() const { return message_; } bool TestFailure::isOutsideTestFile() const { return testFileName_ != fileName_; } bool TestFailure::isInHelperFunction() const { return lineNumber_ < testLineNumber_; } SimpleString TestFailure::createButWasString(const SimpleString& expected, const SimpleString& actual) { return StringFromFormat("expected <%s>\n\tbut was <%s>", expected.asCharString(), actual.asCharString()); } SimpleString TestFailure::createDifferenceAtPosString(const SimpleString& actual, size_t position, DifferenceFormat format) { SimpleString result; const size_t extraCharactersWindow = 20; const size_t halfOfExtraCharactersWindow = extraCharactersWindow / 2; const size_t actualOffset = (format == DIFFERENCE_STRING) ? position : (position * 3 + 1); SimpleString paddingForPreventingOutOfBounds (" ", halfOfExtraCharactersWindow); SimpleString actualString = paddingForPreventingOutOfBounds + actual + paddingForPreventingOutOfBounds; SimpleString differentString = StringFromFormat("difference starts at position %lu at: <", (unsigned long) position); result += "\n"; result += StringFromFormat("\t%s%s>\n", differentString.asCharString(), actualString.subString(actualOffset, extraCharactersWindow).asCharString()); SimpleString markString = actualString.subString(actualOffset, halfOfExtraCharactersWindow+1); markString = removeAllPrintableCharactersFrom(markString); markString = addMarkerToString(markString, halfOfExtraCharactersWindow); result += StringFromFormat("\t%s%s", SimpleString(" ", differentString.size()).asCharString(), markString.asCharString()); return result; } EqualsFailure::EqualsFailure(UtestShell* test, const char* fileName, int lineNumber, const char* expected, const char* actual) : TestFailure(test, fileName, lineNumber) { message_ = createButWasString(StringFromOrNull(expected), StringFromOrNull(actual)); } EqualsFailure::EqualsFailure(UtestShell* test, const char* fileName, int lineNumber, const SimpleString& expected, const SimpleString& actual) : TestFailure(test, fileName, lineNumber) { message_ = createButWasString(expected, actual); } static SimpleString StringFromOrNan(double d) { if (PlatformSpecificIsNan(d)) return "Nan - Not a number"; return StringFrom(d); } DoublesEqualFailure::DoublesEqualFailure(UtestShell* test, const char* fileName, int lineNumber, double expected, double actual, double threshold) : TestFailure(test, fileName, lineNumber) { message_ = createButWasString(StringFromOrNan(expected), StringFromOrNan(actual)); message_ += " threshold used was <"; message_ += StringFromOrNan(threshold); message_ += ">"; if (PlatformSpecificIsNan(expected) || PlatformSpecificIsNan(actual) || PlatformSpecificIsNan(threshold)) message_ += "\n\tCannot make comparisons with Nan"; } CheckEqualFailure::CheckEqualFailure(UtestShell* test, const char* fileName, int lineNumber, const SimpleString& expected, const SimpleString& actual) : TestFailure(test, fileName, lineNumber) { size_t failStart; for (failStart = 0; actual.asCharString()[failStart] == expected.asCharString()[failStart]; failStart++) ; message_ = createButWasString(expected, actual); message_ += createDifferenceAtPosString(actual, failStart); } ContainsFailure::ContainsFailure(UtestShell* test, const char* fileName, int lineNumber, const SimpleString& expected, const SimpleString& actual) : TestFailure(test, fileName, lineNumber) { message_ = StringFromFormat("actual <%s>\n\tdid not contain <%s>", actual.asCharString(), expected.asCharString()); } CheckFailure::CheckFailure(UtestShell* test, const char* fileName, int lineNumber, const SimpleString& checkString, const SimpleString& conditionString, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = ""; if (!text.isEmpty()) { message_ += "Message: "; message_ += text; message_ += "\n\t"; } message_ += checkString; message_ += "("; message_ += conditionString; message_ += ") failed"; } FailFailure::FailFailure(UtestShell* test, const char* fileName, int lineNumber, const SimpleString& message) : TestFailure(test, fileName, lineNumber) { message_ = message; } LongsEqualFailure::LongsEqualFailure(UtestShell* test, const char* fileName, int lineNumber, long expected, long actual) : TestFailure(test, fileName, lineNumber) { SimpleString aDecimal = StringFrom(actual); SimpleString aHex = HexStringFrom(actual); SimpleString eDecimal = StringFrom(expected); SimpleString eHex = HexStringFrom(expected); SimpleString::padStringsToSameLength(aDecimal, eDecimal, ' '); SimpleString::padStringsToSameLength(aHex, eHex, '0'); SimpleString actualReported = aDecimal + " 0x" + aHex; SimpleString expectedReported = eDecimal + " 0x" + eHex; message_ = createButWasString(expectedReported, actualReported); } UnsignedLongsEqualFailure::UnsignedLongsEqualFailure(UtestShell* test, const char* fileName, int lineNumber, unsigned long expected, unsigned long actual) : TestFailure(test, fileName, lineNumber) { SimpleString aDecimal = StringFrom(actual); SimpleString aHex = HexStringFrom(actual); SimpleString eDecimal = StringFrom(expected); SimpleString eHex = HexStringFrom(expected); SimpleString::padStringsToSameLength(aDecimal, eDecimal, ' '); SimpleString::padStringsToSameLength(aHex, eHex, '0'); SimpleString actualReported = aDecimal + " 0x" + aHex; SimpleString expectedReported = eDecimal + " 0x" + eHex; message_ = createButWasString(expectedReported, actualReported); } StringEqualFailure::StringEqualFailure(UtestShell* test, const char* fileName, int lineNumber, const char* expected, const char* actual) : TestFailure(test, fileName, lineNumber) { message_ = createButWasString(StringFromOrNull(expected), StringFromOrNull(actual)); if((expected) && (actual)) { size_t failStart; for (failStart = 0; actual[failStart] == expected[failStart]; failStart++) ; message_ += createDifferenceAtPosString(actual, failStart); } } StringEqualNoCaseFailure::StringEqualNoCaseFailure(UtestShell* test, const char* fileName, int lineNumber, const char* expected, const char* actual) : TestFailure(test, fileName, lineNumber) { message_ = createButWasString(StringFromOrNull(expected), StringFromOrNull(actual)); if((expected) && (actual)) { size_t failStart; for (failStart = 0; SimpleString::ToLower(actual[failStart]) == SimpleString::ToLower(expected[failStart]); failStart++) ; message_ += createDifferenceAtPosString(actual, failStart); } } BinaryEqualFailure::BinaryEqualFailure(UtestShell* test, const char* fileName, int lineNumber, const unsigned char* expected, const unsigned char* actual, size_t size) : TestFailure(test, fileName, lineNumber) { message_ = createButWasString(StringFromBinaryOrNull(expected, size), StringFromBinaryOrNull(actual, size)); if ((expected) && (actual)) { size_t failStart; for (failStart = 0; actual[failStart] == expected[failStart]; failStart++) ; message_ += createDifferenceAtPosString(StringFromBinary(actual, size), failStart, DIFFERENCE_BINARY); } } cpputest-3.7.2/src/CppUTest/TestFilter.cpp000644 000765 000024 00000005532 12521603460 021417 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CppUTestConfig.h" #include "CppUTest/TestFilter.h" TestFilter::TestFilter() : strictMatching_(false), next_(NULL) { } TestFilter::TestFilter(const SimpleString& filter) : strictMatching_(false), next_(NULL) { filter_ = filter; } TestFilter::TestFilter(const char* filter) : strictMatching_(false), next_(NULL) { filter_ = filter; } TestFilter* TestFilter::add(TestFilter* filter) { next_ = filter; return this; } TestFilter* TestFilter::getNext() const { return next_; } void TestFilter::strictMatching() { strictMatching_ = true; } bool TestFilter::match(const SimpleString& name) const { if(strictMatching_) return name == filter_; return name.contains(filter_); } bool TestFilter::operator==(const TestFilter& filter) const { return (filter_ == filter.filter_ && strictMatching_ == filter.strictMatching_); } bool TestFilter::operator!=(const TestFilter& filter) const { return !(filter == *this); } SimpleString TestFilter::asString() const { SimpleString textFilter = StringFromFormat("TestFilter: \"%s\"", filter_.asCharString()); if (strictMatching_) textFilter += " with strict matching"; return textFilter; } SimpleString StringFrom(const TestFilter& filter) { return filter.asString(); } cpputest-3.7.2/src/CppUTest/TestHarness_c.cpp000644 000765 000024 00000013116 12521603460 022074 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestHarness_c.h" extern "C" { void CHECK_EQUAL_C_INT_LOCATION(int expected, int actual, const char* fileName, int lineNumber) { UtestShell::getCurrent()->assertLongsEqual((long)expected, (long)actual, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_REAL_LOCATION(double expected, double actual, double threshold, const char* fileName, int lineNumber) { UtestShell::getCurrent()->assertDoublesEqual(expected, actual, threshold, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_CHAR_LOCATION(char expected, char actual, const char* fileName, int lineNumber) { UtestShell::getCurrent()->assertEquals(((expected) != (actual)), StringFrom(expected).asCharString(), StringFrom(actual).asCharString(), fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_STRING_LOCATION(const char* expected, const char* actual, const char* fileName, int lineNumber) { UtestShell::getCurrent()->assertCstrEqual(expected, actual, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void FAIL_TEXT_C_LOCATION(const char* text, const char* fileName, int lineNumber) { UtestShell::getCurrent()->fail(text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } // LCOV_EXCL_LINE void FAIL_C_LOCATION(const char* fileName, int lineNumber) { UtestShell::getCurrent()->fail("", fileName, lineNumber, TestTerminatorWithoutExceptions()); } // LCOV_EXCL_LINE void CHECK_C_LOCATION(int condition, const char* conditionString, const char* fileName, int lineNumber) { UtestShell::getCurrent()->assertTrue(condition != 0, "CHECK_C", conditionString, fileName, lineNumber, TestTerminatorWithoutExceptions()); } enum { NO_COUNTDOWN = -1, OUT_OF_MEMORRY = 0 }; static int malloc_out_of_memory_counter = NO_COUNTDOWN; static int malloc_count = 0; void cpputest_malloc_count_reset(void) { malloc_count = 0; } int cpputest_malloc_get_count() { return malloc_count; } void cpputest_malloc_set_out_of_memory() { setCurrentMallocAllocator(NullUnknownAllocator::defaultAllocator()); } void cpputest_malloc_set_not_out_of_memory() { malloc_out_of_memory_counter = NO_COUNTDOWN; setCurrentMallocAllocatorToDefault(); } void cpputest_malloc_set_out_of_memory_countdown(int count) { malloc_out_of_memory_counter = count; if (malloc_out_of_memory_counter == OUT_OF_MEMORRY) cpputest_malloc_set_out_of_memory(); } void* cpputest_malloc(size_t size) { return cpputest_malloc_location(size, "", 0); } void* cpputest_calloc(size_t num, size_t size) { return cpputest_calloc_location(num, size, "", 0); } void* cpputest_realloc(void* ptr, size_t size) { return cpputest_realloc_location(ptr, size, "", 0); } void cpputest_free(void* buffer) { cpputest_free_location(buffer, "", 0); } static void countdown() { if (malloc_out_of_memory_counter <= NO_COUNTDOWN) return; if (malloc_out_of_memory_counter == OUT_OF_MEMORRY) return; malloc_out_of_memory_counter--; if (malloc_out_of_memory_counter == OUT_OF_MEMORRY) cpputest_malloc_set_out_of_memory(); } void* cpputest_malloc_location(size_t size, const char* file, int line) { countdown(); malloc_count++; return cpputest_malloc_location_with_leak_detection(size, file, line); } void* cpputest_calloc_location(size_t num, size_t size, const char* file, int line) { void* mem = cpputest_malloc_location(num * size, file, line); if (mem) PlatformSpecificMemset(mem, 0, num*size); return mem; } void* cpputest_realloc_location(void* memory, size_t size, const char* file, int line) { return cpputest_realloc_location_with_leak_detection(memory, size, file, line); } void cpputest_free_location(void* buffer, const char* file, int line) { cpputest_free_location_with_leak_detection(buffer, file, line); } } cpputest-3.7.2/src/CppUTest/TestMemoryAllocator.cpp000644 000765 000024 00000013374 12521603460 023306 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/MemoryLeakDetector.h" static char* checkedMalloc(size_t size) { char* mem = (char*) PlatformSpecificMalloc(size); if (mem == 0) FAIL("malloc returned null pointer"); return mem; } static TestMemoryAllocator* currentNewAllocator = 0; static TestMemoryAllocator* currentNewArrayAllocator = 0; static TestMemoryAllocator* currentMallocAllocator = 0; void setCurrentNewAllocator(TestMemoryAllocator* allocator) { currentNewAllocator = allocator; } TestMemoryAllocator* getCurrentNewAllocator() { if (currentNewAllocator == 0) setCurrentNewAllocatorToDefault(); return currentNewAllocator; } void setCurrentNewAllocatorToDefault() { currentNewAllocator = defaultNewAllocator(); } TestMemoryAllocator* defaultNewAllocator() { static TestMemoryAllocator allocator("Standard New Allocator", "new", "delete"); return &allocator; } void setCurrentNewArrayAllocator(TestMemoryAllocator* allocator) { currentNewArrayAllocator = allocator; } TestMemoryAllocator* getCurrentNewArrayAllocator() { if (currentNewArrayAllocator == 0) setCurrentNewArrayAllocatorToDefault(); return currentNewArrayAllocator; } void setCurrentNewArrayAllocatorToDefault() { currentNewArrayAllocator = defaultNewArrayAllocator(); } TestMemoryAllocator* defaultNewArrayAllocator() { static TestMemoryAllocator allocator("Standard New [] Allocator", "new []", "delete []"); return &allocator; } void setCurrentMallocAllocator(TestMemoryAllocator* allocator) { currentMallocAllocator = allocator; } TestMemoryAllocator* getCurrentMallocAllocator() { if (currentMallocAllocator == 0) setCurrentMallocAllocatorToDefault(); return currentMallocAllocator; } void setCurrentMallocAllocatorToDefault() { currentMallocAllocator = defaultMallocAllocator(); } TestMemoryAllocator* defaultMallocAllocator() { static TestMemoryAllocator allocator("Standard Malloc Allocator", "malloc", "free"); return &allocator; } ///////////////////////////////////////////// TestMemoryAllocator::TestMemoryAllocator(const char* name_str, const char* alloc_name_str, const char* free_name_str) : name_(name_str), alloc_name_(alloc_name_str), free_name_(free_name_str), hasBeenDestroyed_(false) { } TestMemoryAllocator::~TestMemoryAllocator() { hasBeenDestroyed_ = true; } bool TestMemoryAllocator::hasBeenDestroyed() { return hasBeenDestroyed_; } bool TestMemoryAllocator::isOfEqualType(TestMemoryAllocator* allocator) { return SimpleString::StrCmp(this->name(), allocator->name()) == 0; } char* TestMemoryAllocator::allocMemoryLeakNode(size_t size) { return alloc_memory(size, "MemoryLeakNode", 1); } void TestMemoryAllocator::freeMemoryLeakNode(char* memory) { free_memory(memory, "MemoryLeakNode", 1); } char* TestMemoryAllocator::alloc_memory(size_t size, const char*, int) { return checkedMalloc(size); } void TestMemoryAllocator::free_memory(char* memory, const char*, int) { PlatformSpecificFree(memory); } const char* TestMemoryAllocator::name() { return name_; } const char* TestMemoryAllocator::alloc_name() { return alloc_name_; } const char* TestMemoryAllocator::free_name() { return free_name_; } CrashOnAllocationAllocator::CrashOnAllocationAllocator() : allocationToCrashOn_(0) { } void CrashOnAllocationAllocator::setNumberToCrashOn(unsigned allocationToCrashOn) { allocationToCrashOn_ = allocationToCrashOn; } char* CrashOnAllocationAllocator::alloc_memory(size_t size, const char* file, int line) { if (MemoryLeakWarningPlugin::getGlobalDetector()->getCurrentAllocationNumber() == allocationToCrashOn_) UT_CRASH(); return TestMemoryAllocator::alloc_memory(size, file, line); } char* NullUnknownAllocator::alloc_memory(size_t /*size*/, const char*, int) { return 0; } void NullUnknownAllocator::free_memory(char* /*memory*/, const char*, int) { } NullUnknownAllocator::NullUnknownAllocator() : TestMemoryAllocator("Null Allocator", "unknown", "unknown") { } TestMemoryAllocator* NullUnknownAllocator::defaultAllocator() { static NullUnknownAllocator allocator; return &allocator; } cpputest-3.7.2/src/CppUTest/TestOutput.cpp000644 000765 000024 00000023051 12521603460 021466 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" TestOutput::WorkingEnvironment TestOutput::workingEnvironment_ = TestOutput::detectEnvironment; void TestOutput::setWorkingEnvironment(TestOutput::WorkingEnvironment workEnvironment) { workingEnvironment_ = workEnvironment; } TestOutput::WorkingEnvironment TestOutput::getWorkingEnvironment() { if (workingEnvironment_ == TestOutput::detectEnvironment) return PlatformSpecificGetWorkingEnvironment(); return workingEnvironment_; } TestOutput::TestOutput() : dotCount_(0), verbose_(false), color_(false), progressIndication_(".") { } TestOutput::~TestOutput() { } void TestOutput::verbose() { verbose_ = true; } void TestOutput::color() { color_ = true; } void TestOutput::print(const char* str) { printBuffer(str); } void TestOutput::print(long n) { print(StringFrom(n).asCharString()); } void TestOutput::printDouble(double d) { print(StringFrom(d).asCharString()); } TestOutput& operator<<(TestOutput& p, const char* s) { p.print(s); return p; } TestOutput& operator<<(TestOutput& p, long int i) { p.print(i); return p; } void TestOutput::printCurrentTestStarted(const UtestShell& test) { if (verbose_) print(test.getFormattedName().asCharString()); if (test.willRun()) { setProgressIndicator("."); } else { setProgressIndicator("!"); } } void TestOutput::printCurrentTestEnded(const TestResult& res) { if (verbose_) { print(" - "); print(res.getCurrentTestTotalExecutionTime()); print(" ms\n"); } else { printProgressIndicator(); } } void TestOutput::printProgressIndicator() { print(progressIndication_); if (++dotCount_ % 50 == 0) print("\n"); } void TestOutput::setProgressIndicator(const char* indicator) { progressIndication_ = indicator; } void TestOutput::printTestsStarted() { } void TestOutput::printCurrentGroupStarted(const UtestShell& /*test*/) { } void TestOutput::printCurrentGroupEnded(const TestResult& /*res*/) { } void TestOutput::printTestsEnded(const TestResult& result) { print("\n"); if (result.getFailureCount() > 0) { if (color_) { print("\033[31;1m"); } print("Errors ("); print(result.getFailureCount()); print(" failures, "); } else { if (color_) { print("\033[32;1m"); } print("OK ("); } print(result.getTestCount()); print(" tests, "); print(result.getRunCount()); print(" ran, "); print(result.getCheckCount()); print(" checks, "); print(result.getIgnoredCount()); print(" ignored, "); print(result.getFilteredOutCount()); print(" filtered out, "); print(result.getTotalExecutionTime()); print(" ms)"); if (color_) { print("\033[m"); } print("\n\n"); } void TestOutput::printTestRun(int number, int total) { if (total > 1) { print("Test run "); print(number); print(" of "); print(total); print("\n"); } } void TestOutput::print(const TestFailure& failure) { if (failure.isOutsideTestFile() || failure.isInHelperFunction()) printFileAndLineForTestAndFailure(failure); else printFileAndLineForFailure(failure); printFailureMessage(failure.getMessage()); } void TestOutput::printFileAndLineForTestAndFailure(const TestFailure& failure) { printErrorInFileOnLineFormattedForWorkingEnvironment(failure.getTestFileName(), failure.getTestLineNumber()); printFailureInTest(failure.getTestName()); printErrorInFileOnLineFormattedForWorkingEnvironment(failure.getFileName(), failure.getFailureLineNumber()); } void TestOutput::printFileAndLineForFailure(const TestFailure& failure) { printErrorInFileOnLineFormattedForWorkingEnvironment(failure.getFileName(), failure.getFailureLineNumber()); printFailureInTest(failure.getTestName()); } void TestOutput::printFailureInTest(SimpleString testName) { print(" Failure in "); print(testName.asCharString()); } void TestOutput::printFailureMessage(SimpleString reason) { print("\n"); print("\t"); print(reason.asCharString()); print("\n\n"); } void TestOutput::printErrorInFileOnLineFormattedForWorkingEnvironment(SimpleString file, int lineNumber) { if (TestOutput::getWorkingEnvironment() == TestOutput::vistualStudio) printVistualStudioErrorInFileOnLine(file, lineNumber); else printEclipseErrorInFileOnLine(file, lineNumber); } void TestOutput::printEclipseErrorInFileOnLine(SimpleString file, int lineNumber) { print("\n"); print(file.asCharString()); print(":"); print(lineNumber); print(":"); print(" error:"); } void TestOutput::printVistualStudioErrorInFileOnLine(SimpleString file, int lineNumber) { print("\n"); print(file.asCharString()); print("("); print(lineNumber); print("):"); print(" error:"); } void ConsoleTestOutput::printBuffer(const char* s) { while (*s) { PlatformSpecificPutchar(*s); s++; } flush(); } void ConsoleTestOutput::flush() { PlatformSpecificFlush(); } StringBufferTestOutput::~StringBufferTestOutput() { } CompositeTestOutput::CompositeTestOutput() : outputOne_(NULL), outputTwo_(NULL) { } CompositeTestOutput::~CompositeTestOutput() { delete outputOne_; delete outputTwo_; } void CompositeTestOutput::setOutputOne(TestOutput* output) { delete outputOne_; outputOne_ = output; } void CompositeTestOutput::setOutputTwo(TestOutput* output) { delete outputTwo_; outputTwo_ = output; } void CompositeTestOutput::printTestsStarted() { if (outputOne_) outputOne_->printTestsStarted(); if (outputTwo_) outputTwo_->printTestsStarted(); } void CompositeTestOutput::printTestsEnded(const TestResult& result) { if (outputOne_) outputOne_->printTestsEnded(result); if (outputTwo_) outputTwo_->printTestsEnded(result); } void CompositeTestOutput::printCurrentTestStarted(const UtestShell& test) { if (outputOne_) outputOne_->printCurrentTestStarted(test); if (outputTwo_) outputTwo_->printCurrentTestStarted(test); } void CompositeTestOutput::printCurrentTestEnded(const TestResult& res) { if (outputOne_) outputOne_->printCurrentTestEnded(res); if (outputTwo_) outputTwo_->printCurrentTestEnded(res); } void CompositeTestOutput::printCurrentGroupStarted(const UtestShell& test) { if (outputOne_) outputOne_->printCurrentGroupStarted(test); if (outputTwo_) outputTwo_->printCurrentGroupStarted(test); } void CompositeTestOutput::printCurrentGroupEnded(const TestResult& res) { if (outputOne_) outputOne_->printCurrentGroupEnded(res); if (outputTwo_) outputTwo_->printCurrentGroupEnded(res); } void CompositeTestOutput::verbose() { if (outputOne_) outputOne_->verbose(); if (outputTwo_) outputTwo_->verbose(); } void CompositeTestOutput::color() { if (outputOne_) outputOne_->color(); if (outputTwo_) outputTwo_->color(); } void CompositeTestOutput::printBuffer(const char* buffer) { if (outputOne_) outputOne_->printBuffer(buffer); if (outputTwo_) outputTwo_->printBuffer(buffer); } void CompositeTestOutput::print(const char* buffer) { if (outputOne_) outputOne_->print(buffer); if (outputTwo_) outputTwo_->print(buffer); } void CompositeTestOutput::print(long number) { if (outputOne_) outputOne_->print(number); if (outputTwo_) outputTwo_->print(number); } void CompositeTestOutput::printDouble(double number) { if (outputOne_) outputOne_->printDouble(number); if (outputTwo_) outputTwo_->printDouble(number); } void CompositeTestOutput::print(const TestFailure& failure) { if (outputOne_) outputOne_->print(failure); if (outputTwo_) outputTwo_->print(failure); } void CompositeTestOutput::setProgressIndicator(const char* indicator) { if (outputOne_) outputOne_->setProgressIndicator(indicator); if (outputTwo_) outputTwo_->setProgressIndicator(indicator); } void CompositeTestOutput::flush() { if (outputOne_) outputOne_->flush(); if (outputTwo_) outputTwo_->flush(); } cpputest-3.7.2/src/CppUTest/TestPlugin.cpp000644 000765 000024 00000010766 12521603460 021435 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestPlugin.h" TestPlugin::TestPlugin(const SimpleString& name) : next_(NullTestPlugin::instance()), name_(name), enabled_(true) { } TestPlugin::TestPlugin(TestPlugin* next) : next_(next), name_("null"), enabled_(true) { } TestPlugin::~TestPlugin() { } TestPlugin* TestPlugin::addPlugin(TestPlugin* plugin) { next_ = plugin; return this; } void TestPlugin::runAllPreTestAction(UtestShell& test, TestResult& result) { if (enabled_) preTestAction(test, result); next_->runAllPreTestAction(test, result); } void TestPlugin::runAllPostTestAction(UtestShell& test, TestResult& result) { next_ ->runAllPostTestAction(test, result); if (enabled_) postTestAction(test, result); } bool TestPlugin::parseAllArguments(int ac, char** av, int index) { return parseAllArguments(ac, const_cast (av), index); } bool TestPlugin::parseAllArguments(int ac, const char** av, int index) { if (parseArguments(ac, av, index)) return true; if (next_) return next_->parseAllArguments(ac, av, index); return false; } const SimpleString& TestPlugin::getName() { return name_; } TestPlugin* TestPlugin::getPluginByName(const SimpleString& name) { if (name == name_) return this; if (next_) return next_->getPluginByName(name); return (next_); } TestPlugin* TestPlugin::getNext() { return next_; } TestPlugin* TestPlugin::removePluginByName(const SimpleString& name) { TestPlugin* removed = 0; if (next_ && next_->getName() == name) { removed = next_; next_ = next_->next_; } return removed; } void TestPlugin::disable() { enabled_ = false; } void TestPlugin::enable() { enabled_ = true; } bool TestPlugin::isEnabled() { return enabled_; } struct cpputest_pair { void **orig; void *orig_value; }; //////// SetPlugin static int pointerTableIndex; static cpputest_pair setlist[SetPointerPlugin::MAX_SET]; SetPointerPlugin::SetPointerPlugin(const SimpleString& name) : TestPlugin(name) { pointerTableIndex = 0; } SetPointerPlugin::~SetPointerPlugin() { } void CppUTestStore(void**function) { if (pointerTableIndex >= SetPointerPlugin::MAX_SET) { FAIL("Maximum number of function pointers installed!"); } setlist[pointerTableIndex].orig_value = *function; setlist[pointerTableIndex].orig = function; pointerTableIndex++; } void SetPointerPlugin::postTestAction(UtestShell& /*test*/, TestResult& /*result*/) { for (int i = pointerTableIndex - 1; i >= 0; i--) *((void**) setlist[i].orig) = setlist[i].orig_value; pointerTableIndex = 0; } //////// NullPlugin NullTestPlugin::NullTestPlugin() : TestPlugin(0) { } NullTestPlugin* NullTestPlugin::instance() { static NullTestPlugin _instance; return &_instance; } void NullTestPlugin::runAllPreTestAction(UtestShell&, TestResult&) { } void NullTestPlugin::runAllPostTestAction(UtestShell&, TestResult&) { } cpputest-3.7.2/src/CppUTest/TestRegistry.cpp000644 000765 000024 00000015626 12523627400 022011 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" TestRegistry::TestRegistry() : tests_(NULL), nameFilters_(NULL), groupFilters_(NULL), firstPlugin_(NullTestPlugin::instance()), runInSeperateProcess_(false), currentRepetition_(0) { } TestRegistry::~TestRegistry() { } void TestRegistry::addTest(UtestShell *test) { tests_ = test->addTest(tests_); } void TestRegistry::runAllTests(TestResult& result) { bool groupStart = true; result.testsStarted(); for (UtestShell *test = tests_; test != NULL; test = test->getNext()) { if (runInSeperateProcess_) test->setRunInSeperateProcess(); if (groupStart) { result.currentGroupStarted(test); groupStart = false; } result.countTest(); if (testShouldRun(test, result)) { result.currentTestStarted(test); test->runOneTest(firstPlugin_, result); result.currentTestEnded(test); } if (endOfGroup(test)) { groupStart = true; result.currentGroupEnded(test); } } result.testsEnded(); currentRepetition_++; } void TestRegistry::listTestGroupNames(TestResult& result) { SimpleString groupList; for (UtestShell *test = tests_; test != NULL; test = test->getNext()) { SimpleString gname; gname += "#"; gname += test->getGroup(); gname += "#"; if (!groupList.contains(gname)) { groupList += gname; groupList += " "; } } groupList.replace("#", ""); if (groupList.endsWith(" ")) groupList = groupList.subString(0, groupList.size() - 1); result.print(groupList.asCharString()); } void TestRegistry::listTestGroupAndCaseNames(TestResult& result) { SimpleString groupAndNameList; for (UtestShell *test = tests_; test != NULL; test = test->getNext()) { if (testShouldRun(test, result)) { SimpleString groupAndName; groupAndName += "#"; groupAndName += test->getGroup(); groupAndName += "."; groupAndName += test->getName(); groupAndName += "#"; if (!groupAndNameList.contains(groupAndName)) { groupAndNameList += groupAndName; groupAndNameList += " "; } } } groupAndNameList.replace("#", ""); if (groupAndNameList.endsWith(" ")) groupAndNameList = groupAndNameList.subString(0, groupAndNameList.size() - 1); result.print(groupAndNameList.asCharString()); } bool TestRegistry::endOfGroup(UtestShell* test) { return (!test || !test->getNext() || test->getGroup() != test->getNext()->getGroup()); } int TestRegistry::countTests() { return tests_ ? tests_->countTests() : 0; } TestRegistry* TestRegistry::currentRegistry_ = 0; TestRegistry* TestRegistry::getCurrentRegistry() { static TestRegistry registry; return (currentRegistry_ == 0) ? ®istry : currentRegistry_; } void TestRegistry::setCurrentRegistry(TestRegistry* registry) { currentRegistry_ = registry; } void TestRegistry::unDoLastAddTest() { tests_ = tests_ ? tests_->getNext() : NULL; } void TestRegistry::setNameFilters(const TestFilter* filters) { nameFilters_ = filters; } void TestRegistry::setGroupFilters(const TestFilter* filters) { groupFilters_ = filters; } void TestRegistry::setRunTestsInSeperateProcess() { runInSeperateProcess_ = true; } int TestRegistry::getCurrentRepetition() { return currentRepetition_; } bool TestRegistry::testShouldRun(UtestShell* test, TestResult& result) { if (test->shouldRun(groupFilters_, nameFilters_)) return true; else { result.countFilteredOut(); return false; } } void TestRegistry::resetPlugins() { firstPlugin_ = NullTestPlugin::instance(); } void TestRegistry::installPlugin(TestPlugin* plugin) { firstPlugin_ = plugin->addPlugin(firstPlugin_); } TestPlugin* TestRegistry::getFirstPlugin() { return firstPlugin_; } TestPlugin* TestRegistry::getPluginByName(const SimpleString& name) { return firstPlugin_->getPluginByName(name); } void TestRegistry::removePluginByName(const SimpleString& name) { if (firstPlugin_->removePluginByName(name) == firstPlugin_) firstPlugin_ = firstPlugin_->getNext(); if (firstPlugin_->getName() == name) firstPlugin_ = firstPlugin_->getNext(); firstPlugin_->removePluginByName(name); } int TestRegistry::countPlugins() { int count = 0; for (TestPlugin* plugin = firstPlugin_; plugin != NullTestPlugin::instance(); plugin = plugin->getNext()) count++; return count; } UtestShell* TestRegistry::getFirstTest() { return tests_; } UtestShell* TestRegistry::getTestWithNext(UtestShell* test) { UtestShell* current = tests_; while (current && current->getNext() != test) current = current->getNext(); return current; } UtestShell* TestRegistry::findTestWithName(const SimpleString& name) { UtestShell* current = tests_; while (current) { if (current->getName() == name) return current; current = current->getNext(); } return NULL; } UtestShell* TestRegistry::findTestWithGroup(const SimpleString& group) { UtestShell* current = tests_; while (current) { if (current->getGroup() == group) return current; current = current->getNext(); } return NULL; } cpputest-3.7.2/src/CppUTest/TestResult.cpp000644 000765 000024 00000007735 12521603460 021457 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestResult.h" #include "CppUTest/TestFailure.h" #include "CppUTest/TestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" TestResult::TestResult(TestOutput& p) : output_(p), testCount_(0), runCount_(0), checkCount_(0), failureCount_(0), filteredOutCount_(0), ignoredCount_(0), totalExecutionTime_(0), timeStarted_(0), currentTestTimeStarted_(0), currentTestTotalExecutionTime_(0), currentGroupTimeStarted_(0), currentGroupTotalExecutionTime_(0) { } TestResult::~TestResult() { } void TestResult::currentGroupStarted(UtestShell* test) { output_.printCurrentGroupStarted(*test); currentGroupTimeStarted_ = GetPlatformSpecificTimeInMillis(); } void TestResult::currentGroupEnded(UtestShell* /*test*/) { currentGroupTotalExecutionTime_ = GetPlatformSpecificTimeInMillis() - currentGroupTimeStarted_; output_.printCurrentGroupEnded(*this); } void TestResult::currentTestStarted(UtestShell* test) { output_.printCurrentTestStarted(*test); currentTestTimeStarted_ = GetPlatformSpecificTimeInMillis(); } void TestResult::print(const char* text) { output_.print(text); } void TestResult::currentTestEnded(UtestShell* /*test*/) { currentTestTotalExecutionTime_ = GetPlatformSpecificTimeInMillis() - currentTestTimeStarted_; output_.printCurrentTestEnded(*this); } void TestResult::addFailure(const TestFailure& failure) { output_.print(failure); failureCount_++; } void TestResult::countTest() { testCount_++; } void TestResult::countRun() { runCount_++; } void TestResult::countCheck() { checkCount_++; } void TestResult::countFilteredOut() { filteredOutCount_++; } void TestResult::countIgnored() { ignoredCount_++; } void TestResult::testsStarted() { timeStarted_ = GetPlatformSpecificTimeInMillis(); output_.printTestsStarted(); } void TestResult::testsEnded() { long timeEnded = GetPlatformSpecificTimeInMillis(); totalExecutionTime_ = timeEnded - timeStarted_; output_.printTestsEnded(*this); } long TestResult::getTotalExecutionTime() const { return totalExecutionTime_; } void TestResult::setTotalExecutionTime(long exTime) { totalExecutionTime_ = exTime; } long TestResult::getCurrentTestTotalExecutionTime() const { return currentTestTotalExecutionTime_; } long TestResult::getCurrentGroupTotalExecutionTime() const { return currentGroupTotalExecutionTime_; } cpputest-3.7.2/src/CppUTest/Utest.cpp000644 000765 000024 00000044417 12523627400 020445 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestOutput.h" bool doubles_equal(double d1, double d2, double threshold) { if (PlatformSpecificIsNan(d1) || PlatformSpecificIsNan(d2) || PlatformSpecificIsNan(threshold)) return false; return PlatformSpecificFabs(d1 - d2) <= threshold; } /* Sometimes stubs use the CppUTest assertions. * Its not correct to do so, but this small helper class will prevent a segmentation fault and instead * will give an error message and also the file/line of the check that was executed outside the tests. */ class OutsideTestRunnerUTest: public UtestShell { public: static OutsideTestRunnerUTest& instance(); virtual TestResult& getTestResult() { return defaultTestResult; } virtual ~OutsideTestRunnerUTest() { } private: OutsideTestRunnerUTest() : UtestShell("\n\t NOTE: Assertion happened without being in a test run (perhaps in main?)", "\n\t Something is very wrong. Check this assertion and fix", "unknown file", 0), defaultTestResult(defaultOutput) { } ConsoleTestOutput defaultOutput; TestResult defaultTestResult; }; OutsideTestRunnerUTest& OutsideTestRunnerUTest::instance() { static OutsideTestRunnerUTest instance_; return instance_; } /* * Below helpers are used for the PlatformSpecificSetJmp and LongJmp. They pass a method for what needs to happen after * the jump, so that the stack stays right. * */ extern "C" { static void helperDoTestSetup(void* data) { ((Utest*)data)->setup(); } static void helperDoTestBody(void* data) { ((Utest*)data)->testBody(); } static void helperDoTestTeardown(void* data) { ((Utest*)data)->teardown(); } struct HelperTestRunInfo { HelperTestRunInfo(UtestShell* shell, TestPlugin* plugin, TestResult* result) : shell_(shell), plugin_(plugin), result_(result){} UtestShell* shell_; TestPlugin* plugin_; TestResult* result_; }; static void helperDoRunOneTestInCurrentProcess(void* data) { HelperTestRunInfo* runInfo = (HelperTestRunInfo*) data; UtestShell* shell = runInfo->shell_; TestPlugin* plugin = runInfo->plugin_; TestResult* result = runInfo->result_; shell->runOneTestInCurrentProcess(plugin, *result); } static void helperDoRunOneTestSeperateProcess(void* data) { HelperTestRunInfo* runInfo = (HelperTestRunInfo*) data; UtestShell* shell = runInfo->shell_; TestPlugin* plugin = runInfo->plugin_; TestResult* result = runInfo->result_; PlatformSpecificRunTestInASeperateProcess(shell, plugin, result); } } /******************************** */ UtestShell::UtestShell() : group_("UndefinedTestGroup"), name_("UndefinedTest"), file_("UndefinedFile"), lineNumber_(0), next_(NULL), isRunAsSeperateProcess_(false), hasFailed_(false) { } UtestShell::UtestShell(const char* groupName, const char* testName, const char* fileName, int lineNumber) : group_(groupName), name_(testName), file_(fileName), lineNumber_(lineNumber), next_(NULL), isRunAsSeperateProcess_(false), hasFailed_(false) { } UtestShell::UtestShell(const char* groupName, const char* testName, const char* fileName, int lineNumber, UtestShell* nextTest) : group_(groupName), name_(testName), file_(fileName), lineNumber_(lineNumber), next_(nextTest), isRunAsSeperateProcess_(false), hasFailed_(false) { } UtestShell::~UtestShell() { } // LCOV_EXCL_START - actually covered but not in .gcno due to race condition static void defaultCrashMethod() { UtestShell* ptr = (UtestShell*) 0x0; ptr->countTests(); } // LCOV_EXCL_STOP static void (*pleaseCrashMeRightNow) () = defaultCrashMethod; void UtestShell::setCrashMethod(void (*crashme)()) { pleaseCrashMeRightNow = crashme; } void UtestShell::resetCrashMethod() { pleaseCrashMeRightNow = defaultCrashMethod; } void UtestShell::crash() { pleaseCrashMeRightNow(); } void UtestShell::runOneTest(TestPlugin* plugin, TestResult& result) { HelperTestRunInfo runInfo(this, plugin, &result); if (isRunInSeperateProcess()) PlatformSpecificSetJmp(helperDoRunOneTestSeperateProcess, &runInfo); else PlatformSpecificSetJmp(helperDoRunOneTestInCurrentProcess, &runInfo); } Utest* UtestShell::createTest() { return new Utest(); } void UtestShell::destroyTest(Utest* test) { delete test; } void UtestShell::runOneTestInCurrentProcess(TestPlugin* plugin, TestResult& result) { plugin->runAllPreTestAction(*this, result); //save test context, so that test class can be tested UtestShell* savedTest = UtestShell::getCurrent(); TestResult* savedResult = UtestShell::getTestResult(); result.countRun(); UtestShell::setTestResult(&result); UtestShell::setCurrentTest(this); Utest* testToRun = createTest(); testToRun->run(); destroyTest(testToRun); UtestShell::setCurrentTest(savedTest); UtestShell::setTestResult(savedResult); plugin->runAllPostTestAction(*this, result); } UtestShell *UtestShell::getNext() const { return next_; } UtestShell* UtestShell::addTest(UtestShell *test) { next_ = test; return this; } int UtestShell::countTests() { return next_ ? next_->countTests() + 1 : 1; } SimpleString UtestShell::getMacroName() const { return "TEST"; } const SimpleString UtestShell::getName() const { return SimpleString(name_); } const SimpleString UtestShell::getGroup() const { return SimpleString(group_); } SimpleString UtestShell::getFormattedName() const { SimpleString formattedName(getMacroName()); formattedName += "("; formattedName += group_; formattedName += ", "; formattedName += name_; formattedName += ")"; return formattedName; } bool UtestShell::hasFailed() const { return hasFailed_; } void UtestShell::countCheck() { getTestResult()->countCheck(); } bool UtestShell::willRun() const { return true; } bool UtestShell::isRunInSeperateProcess() const { return isRunAsSeperateProcess_; } void UtestShell::setRunInSeperateProcess() { isRunAsSeperateProcess_ = true; } void UtestShell::setFileName(const char* fileName) { file_ = fileName; } void UtestShell::setLineNumber(int lineNumber) { lineNumber_ = lineNumber; } void UtestShell::setGroupName(const char* groupName) { group_ = groupName; } void UtestShell::setTestName(const char* testName) { name_ = testName; } const SimpleString UtestShell::getFile() const { return SimpleString(file_); } int UtestShell::getLineNumber() const { return lineNumber_; } bool UtestShell::match(const char* target, const TestFilter* filters) const { if(filters == NULL) return true; for(; filters != NULL; filters = filters->getNext()) if(filters->match(target)) return true; return false; } bool UtestShell::shouldRun(const TestFilter* groupFilters, const TestFilter* nameFilters) const { return match(group_, groupFilters) && match(name_, nameFilters); } void UtestShell::failWith(const TestFailure& failure) { failWith(failure, NormalTestTerminator()); } // LCOV_EXCL_LINE void UtestShell::failWith(const TestFailure& failure, const TestTerminator& terminator) { hasFailed_ = true; getTestResult()->addFailure(failure); terminator.exitCurrentTest(); } // LCOV_EXCL_LINE void UtestShell::assertTrue(bool condition, const char * checkString, const char* conditionString, const char* fileName, int lineNumber, const TestTerminator& testTerminator) { assertTrueText(condition, checkString, conditionString, "", fileName, lineNumber, testTerminator); } void UtestShell::assertTrueText(bool condition, const char *checkString, const char *conditionString, const char* text, const char *fileName, int lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (!condition) failWith(CheckFailure(this, fileName, lineNumber, checkString, conditionString, text), testTerminator); } void UtestShell::fail(const char *text, const char* fileName, int lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); failWith(FailFailure(this, fileName, lineNumber, text), testTerminator); } // LCOV_EXCL_LINE void UtestShell::assertCstrEqual(const char* expected, const char* actual, const char* fileName, int lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (actual == 0 && expected == 0) return; if (actual == 0 || expected == 0) failWith(StringEqualFailure(this, fileName, lineNumber, expected, actual), testTerminator); if (SimpleString::StrCmp(expected, actual) != 0) failWith(StringEqualFailure(this, fileName, lineNumber, expected, actual), testTerminator); } void UtestShell::assertCstrNEqual(const char* expected, const char* actual, size_t length, const char* fileName, int lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (actual == 0 && expected == 0) return; if (actual == 0 || expected == 0) failWith(StringEqualFailure(this, fileName, lineNumber, expected, actual), testTerminator); if (SimpleString::StrNCmp(expected, actual, length) != 0) failWith(StringEqualFailure(this, fileName, lineNumber, expected, actual), testTerminator); } void UtestShell::assertCstrNoCaseEqual(const char* expected, const char* actual, const char* fileName, int lineNumber) { getTestResult()->countCheck(); if (actual == 0 && expected == 0) return; if (actual == 0 || expected == 0) failWith(StringEqualNoCaseFailure(this, fileName, lineNumber, expected, actual)); if (!SimpleString(expected).equalsNoCase(actual)) failWith(StringEqualNoCaseFailure(this, fileName, lineNumber, expected, actual)); } void UtestShell::assertCstrContains(const char* expected, const char* actual, const char* fileName, int lineNumber) { getTestResult()->countCheck(); if (actual == 0 && expected == 0) return; if(actual == 0 || expected == 0) failWith(ContainsFailure(this, fileName, lineNumber, expected, actual)); if (!SimpleString(actual).contains(expected)) failWith(ContainsFailure(this, fileName, lineNumber, expected, actual)); } void UtestShell::assertCstrNoCaseContains(const char* expected, const char* actual, const char* fileName, int lineNumber) { getTestResult()->countCheck(); if (actual == 0 && expected == 0) return; if(actual == 0 || expected == 0) failWith(ContainsFailure(this, fileName, lineNumber, expected, actual)); if (!SimpleString(actual).containsNoCase(expected)) failWith(ContainsFailure(this, fileName, lineNumber, expected, actual)); } void UtestShell::assertLongsEqual(long expected, long actual, const char* fileName, int lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (expected != actual) failWith(LongsEqualFailure (this, fileName, lineNumber, expected, actual), testTerminator); } void UtestShell::assertUnsignedLongsEqual(unsigned long expected, unsigned long actual, const char* fileName, int lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (expected != actual) failWith(UnsignedLongsEqualFailure (this, fileName, lineNumber, expected, actual), testTerminator); } void UtestShell::assertPointersEqual(const void* expected, const void* actual, const char* fileName, int lineNumber) { getTestResult()->countCheck(); if (expected != actual) failWith(EqualsFailure(this, fileName, lineNumber, StringFrom(expected), StringFrom(actual))); } void UtestShell::assertDoublesEqual(double expected, double actual, double threshold, const char* fileName, int lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (!doubles_equal(expected, actual, threshold)) failWith(DoublesEqualFailure(this, fileName, lineNumber, expected, actual, threshold), testTerminator); } void UtestShell::assertBinaryEqual(const void *expected, const void *actual, size_t length, const char *fileName, int lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (actual == 0 && expected == 0) return; if (actual == 0 || expected == 0) failWith(BinaryEqualFailure(this, fileName, lineNumber, (const unsigned char *) expected, (const unsigned char *) actual, length), testTerminator); if (SimpleString::MemCmp(expected, actual, length) != 0) failWith(BinaryEqualFailure(this, fileName, lineNumber, (const unsigned char *) expected, (const unsigned char *) actual, length), testTerminator); } void UtestShell::assertEquals(bool failed, const char* expected, const char* actual, const char* file, int line, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (failed) failWith(CheckEqualFailure(this, file, line, expected, actual), testTerminator); } void UtestShell::print(const char *text, const char* fileName, int lineNumber) { SimpleString stringToPrint = "\n"; stringToPrint += fileName; stringToPrint += ":"; stringToPrint += StringFrom(lineNumber); stringToPrint += " "; stringToPrint += text; getTestResult()->print(stringToPrint.asCharString()); } void UtestShell::print(const SimpleString& text, const char* fileName, int lineNumber) { print(text.asCharString(), fileName, lineNumber); } TestResult* UtestShell::testResult_ = NULL; UtestShell* UtestShell::currentTest_ = NULL; void UtestShell::setTestResult(TestResult* result) { testResult_ = result; } void UtestShell::setCurrentTest(UtestShell* test) { currentTest_ = test; } TestResult* UtestShell::getTestResult() { if (testResult_ == NULL) return &OutsideTestRunnerUTest::instance().getTestResult(); return testResult_; } UtestShell* UtestShell::getCurrent() { if (currentTest_ == NULL) return &OutsideTestRunnerUTest::instance(); return currentTest_; } ExecFunctionTestShell::~ExecFunctionTestShell() { } ////////////// Utest //////////// Utest::Utest() { } Utest::~Utest() { } #if CPPUTEST_USE_STD_CPP_LIB void Utest::run() { try { if (PlatformSpecificSetJmp(helperDoTestSetup, this)) { PlatformSpecificSetJmp(helperDoTestBody, this); } } catch (CppUTestFailedException&) { PlatformSpecificRestoreJumpBuffer(); } try { PlatformSpecificSetJmp(helperDoTestTeardown, this); } catch (CppUTestFailedException&) { PlatformSpecificRestoreJumpBuffer(); } } #else void Utest::run() { if (PlatformSpecificSetJmp(helperDoTestSetup, this)) { PlatformSpecificSetJmp(helperDoTestBody, this); } PlatformSpecificSetJmp(helperDoTestTeardown, this); } #endif void Utest::setup() { } void Utest::testBody() { } void Utest::teardown() { } /////////////////// Terminators TestTerminator::~TestTerminator() { } void NormalTestTerminator::exitCurrentTest() const { #if CPPUTEST_USE_STD_CPP_LIB throw CppUTestFailedException(); #else TestTerminatorWithoutExceptions().exitCurrentTest(); #endif } NormalTestTerminator::~NormalTestTerminator() { } void TestTerminatorWithoutExceptions::exitCurrentTest() const { PlatformSpecificLongJmp(); } // LCOV_EXCL_LINE TestTerminatorWithoutExceptions::~TestTerminatorWithoutExceptions() { } //////////////////// ExecFunctionTest ExecFunctionTest::ExecFunctionTest(ExecFunctionTestShell* shell) : shell_(shell) { } void ExecFunctionTest::testBody() { if (shell_->testFunction_) shell_->testFunction_(); } void ExecFunctionTest::setup() { if (shell_->setup_) shell_->setup_(); } void ExecFunctionTest::teardown() { if (shell_->teardown_) shell_->teardown_(); } /////////////// IgnoredUtestShell ///////////// IgnoredUtestShell::IgnoredUtestShell() { } IgnoredUtestShell::IgnoredUtestShell(const char* groupName, const char* testName, const char* fileName, int lineNumber) : UtestShell(groupName, testName, fileName, lineNumber) { } IgnoredUtestShell::~IgnoredUtestShell() { } bool IgnoredUtestShell::willRun() const { return false; } SimpleString IgnoredUtestShell::getMacroName() const { return "IGNORE_TEST"; } void IgnoredUtestShell::runOneTest(TestPlugin* /* plugin */, TestResult& result) { result.countIgnored(); } ////////////// TestInstaller //////////// TestInstaller::TestInstaller(UtestShell& shell, const char* groupName, const char* testName, const char* fileName, int lineNumber) { shell.setGroupName(groupName); shell.setTestName(testName); shell.setFileName(fileName); shell.setLineNumber(lineNumber); TestRegistry::getCurrentRegistry()->addTest(&shell); } TestInstaller::~TestInstaller() { } void TestInstaller::unDo() { TestRegistry::getCurrentRegistry()->unDoLastAddTest(); } cpputest-3.7.2/scripts/appveyor_ci_build.ps1000644 000765 000024 00000006553 12523627400 022151 0ustar00basvoddestaff000000 000000  # Helper function to extract vars out of the vsvars batch file function Get-Batchfile ($file) { $cmd = "`"$file`" & set" cmd /c $cmd | Foreach-Object { $p, $v = $_.split('=') Set-Item -path env:$p -value $v } } function Invoke-BuildCommand($command, $directory = '.') { $command_wrapped = "$command;`$err = `$?" Write-Host $command Push-Location $directory Invoke-Expression $command_wrapped if ($LASTEXITCODE -ne 0) { Pop-Location Write-Host "Command Returned error: $LASTEXITCODE" Exit $LASTEXITCODE } Pop-Location } function Remove-PathFolder($folder) { [System.Collections.ArrayList]$pathFolders = New-Object System.Collections.ArrayList $env:Path -split ";" | foreach { $pathFolders.Add($_) | Out-Null } for ([int]$i = 0; $i -lt $pathFolders.Count; $i++) { if ([string]::Compare($pathFolders[$i], $folder, $true) -eq 0) { Write-Host "Removing $folder from the PATH" $pathFolders.RemoveAt($i) $i-- } } $env:Path = $pathFolders -join ";" } function Add-PathFolder($folder) { if (-not (Test-Path $folder)) { Write-Host "Not adding $folder to the PATH, it does not exist" } [bool]$alreadyInPath = $false [System.Collections.ArrayList]$pathFolders = New-Object System.Collections.ArrayList $env:Path -split ";" | foreach { $pathFolders.Add($_) | Out-Null } for ([int]$i = 0; $i -lt $pathFolders.Count; $i++) { if ([string]::Compare($pathFolders[$i], $folder, $true) -eq 0) { $alreadyInPath = $true break } } if (-not $alreadyInPath) { Write-Host "Adding $folder to the PATH" $pathFolders.Insert(0, $folder) $env:Path = $pathFolders -join ";" } } # The project files that will get built $VS2008ProjectFiles = @( 'CppUTest.vcproj' , 'tests\AllTests.vcproj' ) $VS2010ProjectFiles = @( 'CppUTest.vcxproj', 'tests\AllTests.vcxproj' ) if ($env:APPVEYOR) { $logger_arg = '/logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"' } else { $logger_arg = '' } if ($env:PlatformToolset -eq 'v90') { $vsvarspath = Join-Path $env:VS90COMNTOOLS vsvars32.bat Get-BatchFile($vsvarspath) $VS2008ProjectFiles | foreach { Invoke-BuildCommand "vcbuild /upgrade $_" } $VS2008ProjectFiles | foreach { Invoke-BuildCommand "vcbuild $_ $env:CONFIGURATION" } } if ($env:PlatformToolset -eq 'v100') { $VS2010ProjectFiles | foreach { Invoke-BuildCommand "msbuild $logger_arg $_" } } if ($env:PlatformToolset -eq 'MinGW') { $mingw_path = 'C:\Tools\mingw32\bin' if ($env:Platform -eq 'x64') { $mingw_path = 'C:\Tools\mingw64\bin' } Write-Host "Initial Path: $env:Path" # Need to do some path cleanup first Remove-PathFolder "C:\MinGW\bin" Remove-PathFolder "C:\Program Files\Git\bin" Remove-PathFolder "C:\Program Files\Git\cmd" Remove-PathFolder "C:\Program Files (x86)\Git\bin" Remove-PathFolder "C:\Program Files (x86)\Git\cmd" # Add mingw to the path Add-PathFolder $mingw_path Write-Host "Building with Path: $env:Path" Invoke-BuildCommand "cmake -G 'MinGW Makefiles' .." 'cpputest_build' Invoke-BuildCommand "mingw32-make all" 'cpputest_build' Remove-PathFolder $mingw_path } cpputest-3.7.2/scripts/appveyor_ci_test.ps1000644 000765 000024 00000005447 12523627400 022032 0ustar00basvoddestaff000000 000000  function Invoke-Tests($executable) { # Run tests and output the results using junit $TestCommand = "$executable -ojunit" Write-Host $TestCommand Invoke-Expression $TestCommand $anyFailures = $FALSE # Upload results to AppVeyor one by one Get-ChildItem cpputest_*.xml | foreach { $testsuite = ([xml](get-content $_.Name)).testsuite foreach ($testcase in $testsuite.testcase) { if ($testcase.failure) { Add-AppveyorTest $testcase.name -Outcome Failed -FileName $testsuite.name -ErrorMessage $testcase.failure.message Add-AppveyorMessage "$($testcase.name) failed" -Category Error $anyFailures = $TRUE } elseif ($testcase.skipped) { Add-AppveyorTest $testcase.name -Outcome Ignored -Filename $testsuite.name } else { Add-AppveyorTest $testcase.name -Outcome Passed -FileName $testsuite.name } } Remove-Item $_.Name } if ($anyFailures -eq $TRUE){ write-host "Failing build as there are broken tests" $host.SetShouldExit(1) } } function Remove-PathFolder($folder) { [System.Collections.ArrayList]$pathFolders = New-Object System.Collections.ArrayList $env:Path -split ";" | foreach { $pathFolders.Add($_) | Out-Null } for ([int]$i = 0; $i -lt $pathFolders.Count; $i++) { if ([string]::Compare($pathFolders[$i], $folder, $true) -eq 0) { Write-Host "Removing $folder from the PATH" $pathFolders.RemoveAt($i) $i-- } } $env:Path = $pathFolders -join ";" } function Add-PathFolder($folder) { if (-not (Test-Path $folder)) { Write-Host "Not adding $folder to the PATH, it does not exist" } [bool]$alreadyInPath = $false [System.Collections.ArrayList]$pathFolders = New-Object System.Collections.ArrayList $env:Path -split ";" | foreach { $pathFolders.Add($_) | Out-Null } for ([int]$i = 0; $i -lt $pathFolders.Count; $i++) { if ([string]::Compare($pathFolders[$i], $folder, $true) -eq 0) { $alreadyInPath = $true break } } if (-not $alreadyInPath) { Write-Host "Adding $folder to the PATH" $pathFolders.Insert(0, $folder) $env:Path = $pathFolders -join ";" } } if ($env:PlatformToolset -ne 'MinGW') { Invoke-Tests('.\cpputest_build\AllTests.exe') } else { $mingw_path = 'C:\Tools\mingw32\bin' if ($env:Platform -eq 'x64') { $mingw_path = 'C:\Tools\mingw64\bin' } Add-PathFolder $mingw_path Invoke-Tests('.\cpputest_build\tests\CppUTestTests.exe') Invoke-Tests('.\cpputest_build\tests\CppUTestExt\CppUTestExtTests.exe') Remove-PathFolder $mingw_path } cpputest-3.7.2/scripts/checkForCppUTestEnvVariable.sh000755 000765 000024 00000000345 12521603460 023646 0ustar00basvoddestaff000000 000000 #!/bin/bash checkForCppUTestEnvVariable() { if [ -z "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set" exit 1 fi if [ ! -d "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set to a directory" exit 2 fi } cpputest-3.7.2/scripts/convertToUnity/000755 000765 000024 00000000000 12523662133 021032 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/CppUnitTemplates/000755 000765 000024 00000000000 12523662133 021257 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/filterGcov.sh000755 000765 000024 00000003037 12521603460 020460 0ustar00basvoddestaff000000 000000 #!/bin/bash INPUT_FILE=$1 TEMP_FILE1=${INPUT_FILE}1.tmp TEMP_FILE2=${INPUT_FILE}2.tmp TEMP_FILE3=${INPUT_FILE}3.tmp ERROR_FILE=$2 OUTPUT_FILE=$3 HTML_OUTPUT_FILE=$3.html TEST_RESULTS=$4 flattenGcovOutput() { while read line1 do read line2 echo $line2 " " $line1 read junk read junk done < ${INPUT_FILE} } getRidOfCruft() { sed '-e s/^Lines.*://g' \ '-e s/^[0-9]\./ &/g' \ '-e s/^[0-9][0-9]\./ &/g' \ '-e s/of.*File/ /g' \ "-e s/'//g" \ '-e s/^.*\/usr\/.*$//g' \ '-e s/^.*\.$//g' } flattenPaths() { sed \ -e 's/\/[^/][^/]*\/[^/][^/]*\/\.\.\/\.\.\//\//g' \ -e 's/\/[^/][^/]*\/[^/][^/]*\/\.\.\/\.\.\//\//g' \ -e 's/\/[^/][^/]*\/[^/][^/]*\/\.\.\/\.\.\//\//g' \ -e 's/\/[^/][^/]*\/\.\.\//\//g' } getFileNameRootFromErrorFile() { sed '-e s/gc..:cannot open .* file//g' ${ERROR_FILE} } writeEachNoTestCoverageFile() { while read line do echo " 0.00% " ${line} done } createHtmlOutput() { echo "" echo "" sed "-e s/.*% /
CoverageFile
&<\/td>/" \ "-e s/[a-zA-Z0-9_]*\.[ch][a-z]*/&<\/a><\/td><\/tr>/" echo "
" sed "-e s/.*/&
/g" < ${TEST_RESULTS} } flattenGcovOutput | getRidOfCruft | flattenPaths > ${TEMP_FILE1} getFileNameRootFromErrorFile | writeEachNoTestCoverageFile | flattenPaths > ${TEMP_FILE2} cat ${TEMP_FILE1} ${TEMP_FILE2} | sort | uniq > ${OUTPUT_FILE} createHtmlOutput < ${OUTPUT_FILE} > ${HTML_OUTPUT_FILE} rm -f ${TEMP_FILE1} ${TEMP_FILE2} cpputest-3.7.2/scripts/generate_junit_report_ant.xml000644 000765 000024 00000000237 12521603460 023776 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/GenerateSrcFiles.sh000755 000765 000024 00000005326 12521603460 021544 0ustar00basvoddestaff000000 000000 #!/bin/bash -x #$1 is the template root file name #$2 is the kind of file to create (c or cpp) #$3 is Mock if a mock version should be created, Fake for a fake C version #$4 is the class/module name #$5 is the package name #Test for env var set. checkForCppUTestToolsEnvVariable() { if [ -z "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set. You must set CPPUTEST_HOME to the top level CppUTest directory" exit 1 fi if [ ! -d "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set to a directory. You must set CPPUTEST_HOME to the top level CppUTest directory" exit 2 fi } checkForCppUTestToolsEnvVariable templateRootName=$1 srcSuffix=$2 mock=$3 className=$4 packageName=$5 testSuffix=Test #CPP_SOURCE_TEMPLATES can point to templates you write #identify the template files if [ "$CPP_SOURCE_TEMPLATES" == "" ] then TEMPLATE_DIR=$CPPUTEST_HOME/scripts/templates else TEMPLATE_DIR=$CPP_SOURCE_TEMPLATES fi templateHFile=$TEMPLATE_DIR/$templateRootName.h templateSrcFile=$TEMPLATE_DIR/$templateRootName.$srcSuffix if [ "$mock" == "Mock" ] ; then templateTestFile=$TEMPLATE_DIR/Interface$testSuffix.cpp elif [ "$mock" == "Fake" ] ; then templateTestFile=$TEMPLATE_DIR/InterfaceC$testSuffix.cpp else templateTestFile=$TEMPLATE_DIR/$templateRootName$testSuffix.cpp fi templateMockFile=$TEMPLATE_DIR/Mock$templateRootName.h #indentify the class and instance names instanceName=$(echo $className | cut -c1 | tr A-Z a-z)$(echo $className | cut -c 2-) className=$(echo $className | cut -c1 | tr a-z A-Z)$(echo $className | cut -c 2-) #if a package is specified, set the directories if [ ! "$packageName" == "" ] then srcDir=src/$packageName/ includeDir=include/$packageName/ testsDir=tests/$packageName/ fi #identify the files being created hFile=${includeDir}${className}.h srcFile=${srcDir}${className}.${srcSuffix} testFile=${testsDir}${className}${testSuffix}.cpp if [ "$mock" != "NoMock" ] ; then mockFile=${testsDir}${mock}${className}.h testFile=${testsDir}${mock}${className}${testSuffix}.cpp if [ "$srcSuffix" == "c" ] ; then srcFile=${testsDir}${mock}${className}.${srcSuffix} fi else mockFile= fi sedCommands="-e s/aClassName/$instanceName/g -e s/ClassName/$className/g" generateFileIfNotAlreadyThere() { if [ -e $2 ] then echo "${2} already exists, skipping" else echo "creating ${2}" sed $sedCommands $1 | tr -d "\r" >$2 fi } generateFileIfNotAlreadyThere $templateHFile $hFile generateFileIfNotAlreadyThere $templateSrcFile $srcFile generateFileIfNotAlreadyThere $templateTestFile $testFile if [ "$mock" != "NoMock" ] ; then generateFileIfNotAlreadyThere $templateMockFile $mockFile # sed $sedCommands $templateMockFile | tr -d "\r" >$mockFile fi cpputest-3.7.2/scripts/InstallScripts.sh000755 000765 000024 00000001031 12521603460 021322 0ustar00basvoddestaff000000 000000 #!/bin/bash -x FirstLetter=${0:0:1} if [[ $FirstLetter == "/" ]] ; then CPPUTEST_HOME=${0%/scripts/*} else CPPUTEST_HOME="$(pwd)/${0%/scripts/*}" fi EXE_DIR=${EXE_DIR:-/usr/local/bin} test -f ${EXE_DIR} || mkdir -p ${EXE_DIR} NEW_SCRIPTS="NewCIoDriver NewClass NewInterface NewCModule NewCmiModule NewProject NewLibrary NewPackageDirs NewCInterface NewCFunction NewHelp" for file in $NEW_SCRIPTS ; do rm -f ${EXE_DIR}/${file} ln -s ${CPPUTEST_HOME}/scripts/${file}.sh ${EXE_DIR}/${file} chmod a+x ${EXE_DIR}/${file} done cpputest-3.7.2/scripts/NewCBaseModule.sh000755 000765 000024 00000000213 12521603460 021142 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassNameC c NoMock $1 $2 cpputest-3.7.2/scripts/NewCFunction.sh000755 000765 000024 00000000216 12521603460 020712 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh FunctionNameC c NoMock $1 $2 cpputest-3.7.2/scripts/NewCInterface.sh000755 000765 000024 00000000211 12521603460 021020 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassNameC c Fake $1 $2 cpputest-3.7.2/scripts/NewCIoDriver.sh000755 000765 000024 00000000223 12521603460 020646 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassNameCIoDriver c NoMock $1 $2 cpputest-3.7.2/scripts/NewClass.sh000755 000765 000024 00000000214 12521603460 020065 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassName cpp NoMock $1 $2 cpputest-3.7.2/scripts/NewCmiModule.sh000755 000765 000024 00000000233 12521603460 020677 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassNameCMultipleInstance c NoMock $1 $2 cpputest-3.7.2/scripts/NewCModule.sh000755 000765 000024 00000000213 12521603460 020347 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassNameC c NoMock $1 $2 cpputest-3.7.2/scripts/NewHelp.sh000755 000765 000024 00000000510 12521603460 017707 0ustar00basvoddestaff000000 000000 #!/bin/bash NEW_SCRIPTS=" \ NewClass \ NewInterface \ NewCModule \ NewCmiModule \ NewCInterface \ NewCFunction" for file in $NEW_SCRIPTS ; do echo ${file} name package rm -f ${EXE_DIR}/${file} ln -s ${CPPUTEST_HOME}/scripts/${file}.sh ${EXE_DIR}/${file} chmod a+x ${EXE_DIR}/${file} done cpputest-3.7.2/scripts/NewInterface.sh000755 000765 000024 00000000211 12521603460 020715 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassName cpp Mock $1 $2 cpputest-3.7.2/scripts/NewLibrary.sh000755 000765 000024 00000001647 12521603460 020437 0ustar00basvoddestaff000000 000000 #!/bin/bash -x TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates LIBRARY=$1 if [ -e ${LIBRARY} ] ; then echo "The directory ${LIBRARY} already exists" exit 1; fi echo "Copy template project to ${LIBRARY}" cp -R ${TEMPLATE_DIR}/ProjectTemplate/Project ${LIBRARY} find ${LIBRARY} -name \.svn | xargs rm -rf echo "Update to the new LIBRARY name" substituteProjectName="-e s/Project/${LIBRARY}/g -i .bak" cd ${LIBRARY} sed ${substituteProjectName} *.* sed ${substituteProjectName} Makefile for name in BuildTime.h BuildTime.cpp BuildTimeTest.cpp ; do mv Project${name} ${LIBRARY}${name} done cd .. sed -e "s/DIRS = /DIRS = ${LIBRARY} /g" -i .bak Makefile find ${LIBRARY} -name \*.bak | xargs rm -f echo "#include \"../${LIBRARY}/AllTests.h\"" >> AllTests/AllTests.cpp echo "You have to manually add the library reference to the AllTests Makefile" echo "and maybe change the order of the library builds in the main Makefile" cpputest-3.7.2/scripts/NewPackageDirs.sh000755 000765 000024 00000000311 12521603460 021173 0ustar00basvoddestaff000000 000000 #!/bin/bash package=$1 for dir in src include tests ; do packageDir=${dir}/${package} if [ ! -d "$packageDir" ] ; then echo "creating $packageDir" mkdir $packageDir fi done cpputest-3.7.2/scripts/NewProject.sh000644 000765 000024 00000002101 12521603460 020420 0ustar00basvoddestaff000000 000000 #!/bin/bash PROJECT_NAME=$1 CODE_LEGAL_PROJECT_NAME=$(echo $PROJECT_NAME | sed 's/-/_/g') TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates ORIGINAL_DIR=$(pwd) if [ -e ${PROJECT_NAME} ] ; then echo "The directory ${PROJECT_NAME} already exists" exit 1; fi echo "Copy template project" cp -R ${TEMPLATE_DIR}/ProjectTemplate ${PROJECT_NAME} find ${PROJECT_NAME} -name \.svn | xargs rm -rf cd ${PROJECT_NAME} ls changeProjectName() { echo Change Name $1/Project$2 to $3$2 sed "-e s/Project/$3/g" $1/Project$2 | tr -d "\r" >$1/$3$2 rm $1/Project$2 } changeProjectName . Makefile ${CODE_LEGAL_PROJECT_NAME} changeProjectName . .project ${PROJECT_NAME} changeProjectName src/util BuildTime.cpp ${CODE_LEGAL_PROJECT_NAME} changeProjectName include/util BuildTime.h ${CODE_LEGAL_PROJECT_NAME} changeProjectName tests/util BuildTimeTest.cpp ${CODE_LEGAL_PROJECT_NAME} mv ${CODE_LEGAL_PROJECT_NAME}Makefile Makefile mv ${PROJECT_NAME}.project .project mv Project.cproject .cproject cd ${ORIGINAL_DIR} echo "You might want to modify the path for CPPUTEST_HOME in the Makefile." cpputest-3.7.2/scripts/README.txt000644 000765 000024 00000001660 12521603460 017513 0ustar00basvoddestaff000000 000000 The New*.sh scripts are helpful for creating the initial files for a new class... NewClass.sh - for TTDing a new C++ class NewInterface.sh - for TDDing a new interface along with its Mock NewCModule.sh - for TDDing a C module NewCmiModule.sh - for TDDing a C module where there will be multiple instances of the module's data structure Run InstallScripts.sh to 1) Copy the scripts to /usr/local/bin 2) Define symbolic links for each of the scripts Like this: ./InstallScripts.sh You might have to add the execute privilege to the shell scripts. Like this: chmod *.sh Using NewClass for example: cd to the directory where you want the files located NewClass SomeClass The script gets you ready for TDD and saves a lot of tedious typing Creates SomeClass.h SomeClass.cpp SomeClassTest.cpp with the class and test essentials in place (If the file already exists, no file is generated) These scripts are written in bash. cpputest-3.7.2/scripts/RefactorRenameIncludeFile.sh000755 000765 000024 00000003441 12521603460 023354 0ustar00basvoddestaff000000 000000 #!/bin/bash +x dirs_to_look_in="src tests include mocks" from_name=$1 to_name=$2 SVN=svn findFilesWithInclude() { files_with_include=$(find $dirs_to_look_in -name "*.[hc]" -o -name "*.cpp" | xargs grep -l "#include \"$1\"") if [ "$files_with_include" != "" ] then files_with_include+=" " fi files_with_include+=$(find $dirs_to_look_in -name "*.[hc]" -o -name "*.cpp" | xargs grep -l "#include <$1>") echo $files_with_include } checkForPriorNameUseIncludes() { files=$(findFilesWithInclude $1) if [ "$files" != "" ] then echo "name already included: $1 included in ${files}" exit fi } checkForFileNameExists() { files=$(find $dirs_to_look_in -name $1) if [ "$files" != "" ] then echo "name already in use: $1 found in ${files}" exit fi } searchAndReplaceIncludes() { files=$(findFilesWithInclude $1) if [ "$files" = "" ] then echo "No files found including $1" exit fi echo "Changing include $1 to $2 in: $files" set -x sed -i "" -e "s/#include \"$1\"/#include \"$2\"/g" $files sed -i "" -e "s/#include <$1>/#include <$2>/g" $files set +x } renameIncludeFile() { file=$(find $dirs_to_look_in -name $1) if [ $(echo $file | wc -l) != 1 ] then echo "More than one potential file to rename $file" exit fi set -x from_module_name=$(basename $1 .h) to_module_name=$(basename $2 .h) sed -i "" -e "s/$from_module_name/$to_module_name/g" $file path=$(dirname $file) $SVN mv $file $path/$2 set +x } checkForFileNameExists $to_name checkForPriorNameUseIncludes $to_name searchAndReplaceIncludes $from_name $to_name renameIncludeFile $1 $2 cpputest-3.7.2/scripts/reformat.sh000755 000765 000024 00000000540 12521603460 020167 0ustar00basvoddestaff000000 000000 #!/bin/bash set -e ASTYLE_OPTIONS="--convert-tabs --indent=spaces=4 --indent-classes --indent-switches --indent-preprocessor --style=ansi" find $1 -name "*.h" -o -name "*.c" -o -name "*.cpp" | while read filename; do tmpfile=${filename}.astyle.cpp astyle ${ASTYLE_OPTIONS} <"${filename}" > "${tmpfile}" mv "${tmpfile}" "${filename}" done cpputest-3.7.2/scripts/ReleaseCppUTest.sh000755 000765 000024 00000004713 12521603460 021366 0ustar00basvoddestaff000000 000000 #!/bin/bash #source in release generator script echo "Do not use this anymore, please use \"configure; make dist\"" exit if [ ! -d "scripts" ]; then echo "You have to run this script from the CPPUTEST_HOME directory!"; exit fi GENERATED_FILES="" release_dir=Releases scripts_dir=scripts version=v3.3 zip_root=CppUTest-${version} tar_root=CppUTest-${version}_tar clean_unzip_root=${zip_root}_clean_unzip clean_untar_root=${zip_root}_clean_untar zip_file=${zip_root}.zip tar_file=${zip_root}.tar.gz exitIfFileExists() { if [ -e $1 ] then echo "${1} already exists, exiting." exit fi } generateMakeScript() { filename=$1 dateTime=$2 version=$3 target=$4 exitIfFileExists $filename.sh echo "#Generated file - ${filename}.sh" >$filename.sh echo "echo \"Running ${filename} for CppUTest ${version} created on ${dateTime}\"" >>$filename.sh echo "export CPPUTEST_HOME=\$(pwd)" >>$filename.sh echo "echo \"export CPPUTEST_HOME=\$(pwd)/\"" >>$filename.sh echo "make $target" >>$filename.sh chmod +x $filename.sh GENERATED_FILES+=" $filename.sh" } generateVersionFile() { version=$1 dateTime=$2 versionFile=version.txt echo "CppUTest ${version} created on ${dateTime}" > $versionFile GENERATED_FILES+=$versionFile } zipIt() { mkdir -p ${release_dir} zip -r ${release_dir}/${zip_file} \ $GENERATED_FILES \ .\ -x@${scripts_dir}/zipExclude.txt tar -cvpzf ${release_dir}/${tar_file} \ -X ./${scripts_dir}/zipExclude.txt \ $GENERATED_FILES \ . } cleanUp() { rm -f $GENERATED_FILES } generateCppUTestRelease() { dateTime=$(date +%F-%H-%M) generateVersionFile $version $dateTime generateMakeScript makeAll $dateTime $version everythingInstall generateMakeScript cleanAll $dateTime $version cleanEverythingInstall zipIt $version cleanUp } openAndMakeRelease() { cd ${release_dir} # unzip and untar the code and make sure it is the same rm -rf ${clean_unzip_root} unzip ${zip_file} -d ${clean_unzip_root} rm -rf ${clean_untar_root} mkdir ${clean_untar_root} tar -xvzpf ${tar_file} -C ${clean_untar_root} rm -rf ${zip_root} unzip ${zip_file} -d ${zip_root} cd ${zip_root} ./makeAll.sh cd .. rm -rf ${tar_root} mkdir ${tar_root} tar -xvzpf ${tar_file} -C ${tar_root} cd ${tar_root} ./makeAll.sh cd ../.. } #Main generateCppUTestRelease openAndMakeRelease cpputest-3.7.2/scripts/squeeze.sh000755 000765 000024 00000000036 12521603460 020031 0ustar00basvoddestaff000000 000000 #!/bin/sed -f s/[ ][ ]*/ /g cpputest-3.7.2/scripts/svnignore.txt000644 000765 000024 00000000320 12521603460 020560 0ustar00basvoddestaff000000 000000 doxygen *.d */Debug/* *.exe *.obj *.o *.a *.ncb *.opt *.plg *.idb *.pdb *.lib .settings *doxygen* *.gcov *.gcno *.gcda *_tests *_cslim *a.out *.zip tmp pdfs *.map gcov objs lib *_tests.txt gcov*.html Releasescpputest-3.7.2/scripts/templates/000755 000765 000024 00000000000 12523662133 020014 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/travis_ci_build.sh000755 000765 000024 00000002457 12521603460 021523 0ustar00basvoddestaff000000 000000 #!/bin/bash # Script run in the travis CI set -e if [ "x$BUILDTOOL" = "xautotools" ]; then autoreconf -i .. ../configure echo "CONFIGURATION DONE. Compiling now." make check_all # Special check for all the gtest versions. make check_gtest # One more normal build for generating test reports ../configure make check ./CppUTestTests -ojunit ./CppUTestExtTests -ojunit cp ../scripts/generate_junit_report_ant.xml . ant -f generate_junit_report_ant.xml make dist make dist-zip if [ "x$CXX" = "xg++" ]; then echo "Deploy please" # cd .. && travis_github_deployer -v || exit 1 fi; fi if [ "x$BUILDTOOL" = "xcmake" ]; then cmake .. -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE make || exit 1 ctest -V || exit 1 if [ "x$CXX" != "xg++" ]; then cmake .. -DC++11=ON -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE make || exit 1 ctest -V || exit 1 fi wget https://googlemock.googlecode.com/files/gmock-1.6.0.zip unzip gmock-1.6.0.zip -d $TRAVIS_BUILD_DIR cd $TRAVIS_BUILD_DIR/gmock-1.6.0 ./configure && make cd - export GMOCK_HOME=$TRAVIS_BUILD_DIR/gmock-1.6.0 export GTEST_HOME=$TRAVIS_BUILD_DIR/gmock-1.6.0/gtest cmake .. -DGMOCK=ON || exit 1 make || exit 1 ctest -V || exit 1 fi cpputest-3.7.2/scripts/UnityTemplates/000755 000765 000024 00000000000 12523662133 021005 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/VS2010Templates/000755 000765 000024 00000000000 12523662133 020530 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/zipExclude.txt000644 000765 000024 00000000354 12521603460 020671 0ustar00basvoddestaff000000 000000 *.metadata* *.sh~ *.obj *.zip *.a *.d *.o *.lib *.ncb *.opt *.plg */Debug/* *.svn* */Alltests *.gcov *.gcda *.gcno *.html *doxygen* *_tests */*.class *Doxyfile *Releases* *UnityTemplates* *platforms* *.DS_Store *.git* *.gitignore *.swp cpputest-3.7.2/scripts/VS2010Templates/CppUTest_VS2010.props000644 000765 000024 00000004374 12521603460 024243 0ustar00basvoddestaff000000 000000  $(CPPUTEST_HOME)\include;$(CPPUTEST_HOME)\include\CppUTestExt\CppUTestGTest;$(CPPUTEST_HOME)\include\CppUTestExt\CppUTestGMock;$(CPPUTEST_HOME)\include\Platforms\VisualCpp $(CPPUTEST_HOME)\lib $(CPPUTEST_HOME)\include\Platforms\VisualCpp\Platform.h;$(CPPUTEST_HOME)\include\CppUTest\MemoryLeakDetectorMallocMacros.h; CppUTest.lib $(CPPUTEST_INCLUDE_PATHS);%(AdditionalIncludeDirectories) $(CPPUTEST_FORCED_INCLUDES);%(ForcedIncludeFiles) $(CPPUTEST_LIB_DEPENDENCIES);%(AdditionalDependencies) $(CPPUTEST_LIB_PATHS);%(AdditionalLibraryDirectories) $(TargetPath) $(CPPUTEST_HOME) true $(CPPUTEST_INCLUDE_PATHS) true $(CPPUTEST_LIB_PATHS) true $(CPPUTEST_FORCED_INCLUDES) true $(CPPUTEST_LIB_DEPENDENCIES) true cpputest-3.7.2/scripts/VS2010Templates/README.txt000644 000765 000024 00000000643 12521603460 022225 0ustar00basvoddestaff000000 000000 **Intro** The CppUTest_VS2010.props property sheet sets the needed compiler and linker options for your unit test project. **Instructions** 1) Create a system environment variable, CPPUTEST_HOME and set it to the path of your CppUTest distribution. 2) Add the CppUTest_VS2010.props property sheet to your unit test project and you are good to go. 3) See the WalkThrough_VS2010 guide in the docs section for details. cpputest-3.7.2/scripts/UnityTemplates/ClassNameCIoDriverTest.cpp000644 000765 000024 00000000645 12521603460 025767 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" #include "MockIO.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { Reset_Mock_IO(); ClassName_Create(); } void teardown() { ClassName_Destroy(); Assert_No_Unused_Expectations(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/UnityTemplates/ClassNameCMultipleInstanceTest.cpp000644 000765 000024 00000000574 12521603460 027525 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { ClassName aClassName; void setup() { aClassName = ClassName_Create(); } void teardown() { ClassName_Destroy(aClassName); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/UnityTemplates/ClassNameCTest.cpp000644 000765 000024 00000000512 12521603460 024314 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/UnityTemplates/FunctionNameCTest.cpp000644 000765 000024 00000000424 12521603460 025036 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { } void teardown() { } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/UnityTemplates/InterfaceCTest.cpp000644 000765 000024 00000000515 12521603460 024351 0ustar00basvoddestaff000000 000000 extern "C" { #include "FakeClassName.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/templates/ClassName.cpp000644 000765 000024 00000000121 12521603460 022354 0ustar00basvoddestaff000000 000000 #include "ClassName.h" ClassName::ClassName() { } ClassName::~ClassName() { } cpputest-3.7.2/scripts/templates/ClassName.h000644 000765 000024 00000000705 12521603460 022031 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /////////////////////////////////////////////////////////////////////////////// // // ClassName is responsible for ... // /////////////////////////////////////////////////////////////////////////////// class ClassName { public: explicit ClassName(); virtual ~ClassName(); private: ClassName(const ClassName&); ClassName& operator=(const ClassName&); }; #endif // D_ClassName_H cpputest-3.7.2/scripts/templates/ClassNameC.c000644 000765 000024 00000000134 12521603460 022123 0ustar00basvoddestaff000000 000000 #include "ClassName.h" void ClassName_Create(void) { } void ClassName_Destroy(void) { } cpputest-3.7.2/scripts/templates/ClassNameC.h000644 000765 000024 00000000455 12521603460 022136 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /********************************************************** * * ClassName is responsible for ... * **********************************************************/ void ClassName_Create(void); void ClassName_Destroy(void); #endif /* D_FakeClassName_H */ cpputest-3.7.2/scripts/templates/ClassNameCIoDriver.c000644 000765 000024 00000000154 12521603460 023571 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include "IO.h" void ClassName_Create(void) { } void ClassName_Destroy(void) { } cpputest-3.7.2/scripts/templates/ClassNameCIoDriver.h000644 000765 000024 00000000501 12521603460 023572 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /********************************************************** * * ClassName is responsible for ... * **********************************************************/ #include void ClassName_Create(void); void ClassName_Destroy(void); #endif /* D_FakeClassName_H */ cpputest-3.7.2/scripts/templates/ClassNameCIoDriverTest.cpp000644 000765 000024 00000000550 12521603460 024771 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" #include "MockIO.h" } #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { Reset_Mock_IO(); ClassName_Create(); } void teardown() { ClassName_Destroy(); Assert_No_Unused_Expectations(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/templates/ClassNameCMultipleInstance.c000644 000765 000024 00000000520 12521603460 025323 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include typedef struct ClassNameStruct { int placeHolderForHiddenStructElements; } ClassNameStruct; ClassName ClassName_Create(void) { ClassName self = calloc(1, sizeof(ClassNameStruct)); return self; } void ClassName_Destroy(ClassName self) { free(self); } cpputest-3.7.2/scripts/templates/ClassNameCMultipleInstance.h000644 000765 000024 00000000574 12521603460 025341 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /********************************************************************** * * ClassName is responsible for ... * **********************************************************************/ typedef struct ClassNameStruct * ClassName; ClassName ClassName_Create(void); void ClassName_Destroy(ClassName); #endif /* D_FakeClassName_H */ cpputest-3.7.2/scripts/templates/ClassNameCMultipleInstanceTest.cpp000644 000765 000024 00000000504 12521603460 026525 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { ClassName aClassName; void setup() { aClassName = ClassName_Create(); } void teardown() { ClassName_Destroy(aClassName); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/templates/ClassNameCPolymorphic.c000644 000765 000024 00000000535 12521603460 024356 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include typedef struct ClassName { int placeHolderForHiddenStructElements; }; ClassName* ClassName_Create(void) { ClassName* self = malloc(sizeof(ClassName)); memset(self, 0, sizeof(ClassName)); return self; } void ClassName_Destroy(ClassName* self) { free(self); } cpputest-3.7.2/scripts/templates/ClassNameCPolymorphic.h000644 000765 000024 00000000623 12521603460 024361 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /********************************************************** * * ClassName is responsible for ... * **********************************************************/ typedef struct ClassName ClassNamePiml; ClassName* ClassName_Create(void); void ClassName_Destroy(ClassName*); void ClassName_VirtualFunction_impl(ClassName*); #endif /* D_FakeClassName_H */ cpputest-3.7.2/scripts/templates/ClassNameCTest.cpp000644 000765 000024 00000000415 12521603460 023325 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/templates/ClassNameTest.cpp000644 000765 000024 00000000513 12521603460 023221 0ustar00basvoddestaff000000 000000 #include "ClassName.h" //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { ClassName* aClassName; void setup() { aClassName = new ClassName(); } void teardown() { delete aClassName; } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/templates/FunctionNameC.c000644 000765 000024 00000000055 12521603460 022645 0ustar00basvoddestaff000000 000000 #include "ClassName.h" void ClassName() { } cpputest-3.7.2/scripts/templates/FunctionNameC.h000644 000765 000024 00000000404 12521603460 022650 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /********************************************************** * * ClassName is responsible for ... * **********************************************************/ void ClassName(); #endif /* D_FakeClassName_H */ cpputest-3.7.2/scripts/templates/FunctionNameCTest.cpp000644 000765 000024 00000000327 12521603460 024047 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { } void teardown() { } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/templates/InterfaceCTest.cpp000644 000765 000024 00000000515 12521603460 023360 0ustar00basvoddestaff000000 000000 extern "C" { #include "FakeClassName.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/templates/InterfaceTest.cpp000644 000765 000024 00000000557 12521603460 023263 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include "MockClassName.h" #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { ClassName* aClassName; MockClassName* mockClassName; void setup() { mockClassName = new MockClassName(); aClassName = mockClassName; } void teardown() { delete aClassName; } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/templates/MockClassName.h000644 000765 000024 00000001137 12521603460 022643 0ustar00basvoddestaff000000 000000 #ifndef D_MockClassName_H #define D_MockClassName_H /////////////////////////////////////////////////////////////////////////////// // // MockClassName.h // // MockClassName is responsible for providing a test stub for ClassName // /////////////////////////////////////////////////////////////////////////////// #include "ClassName.h" class MockClassName : public ClassName { public: explicit MockClassName() {} virtual ~MockClassName() {} private: MockClassName(const MockClassName&); MockClassName& operator=(const MockClassName&); }; #endif // D_MockClassName_H cpputest-3.7.2/scripts/templates/MockClassNameC.c000644 000765 000024 00000000134 12521603460 022735 0ustar00basvoddestaff000000 000000 #include "ClassName.h" void ClassName_Create(void) { } void ClassName_Destroy(void) { } cpputest-3.7.2/scripts/templates/MockClassNameC.h000644 000765 000024 00000000470 12521603460 022745 0ustar00basvoddestaff000000 000000 #ifndef D_FakeClassName_H #define D_FakeClassName_H /********************************************************** * * FakeClassName is responsible for providing a * test stub for ClassName * **********************************************************/ #include "ClassName.h" #endif /* D_FakeClassName_H */ cpputest-3.7.2/scripts/templates/ProjectTemplate/000755 000765 000024 00000000000 12523662133 023116 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/templates/ProjectTemplate/include/000755 000765 000024 00000000000 12523662132 024540 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/templates/ProjectTemplate/Project.cproject000644 000765 000024 00000043033 12521603460 026256 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/templates/ProjectTemplate/Project.project000644 000765 000024 00000004303 12521603460 026110 0ustar00basvoddestaff000000 000000 Project org.eclipse.cdt.managedbuilder.core.genmakebuilder ?name? org.eclipse.cdt.make.core.append_environment true org.eclipse.cdt.make.core.autoBuildTarget all org.eclipse.cdt.make.core.buildArguments org.eclipse.cdt.make.core.buildCommand make org.eclipse.cdt.make.core.cleanBuildTarget clean org.eclipse.cdt.make.core.contents org.eclipse.cdt.make.core.activeConfigSettings org.eclipse.cdt.make.core.enableAutoBuild true org.eclipse.cdt.make.core.enableCleanBuild true org.eclipse.cdt.make.core.enableFullBuild true org.eclipse.cdt.make.core.fullBuildTarget all org.eclipse.cdt.make.core.stopOnError true org.eclipse.cdt.make.core.useDefaultBuildCmd true org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder org.eclipse.cdt.core.cnature org.eclipse.cdt.core.ccnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature cpputest-3.7.2/scripts/templates/ProjectTemplate/ProjectMakefile000644 000765 000024 00000001362 12521603460 026103 0ustar00basvoddestaff000000 000000 #Set this to @ to keep the makefile quiet SILENCE = @ #---- Outputs ----# COMPONENT_NAME = Project #Set this to @ to keep the makefile quiet SILENCE = @ #--- Inputs ----# PROJECT_HOME_DIR = . ifeq "$(CPPUTEST_HOME)" "" CPPUTEST_HOME = ../CppUTest endif CPP_PLATFORM = Gcc SRC_DIRS = \ src\ src/* # to pick specific files (rather than directories) use this: SRC_FILES = TEST_SRC_DIRS = \ tests \ tests/* MOCKS_SRC_DIRS = \ mocks \ INCLUDE_DIRS =\ .\ include \ include/* \ $(CPPUTEST_HOME)/include/ \ $(CPPUTEST_HOME)/include/Platforms/Gcc\ mocks CPPUTEST_WARNINGFLAGS = -Wall -Werror -Wswitch-default CPPUTEST_WARNINGFLAGS += -Wconversion -Wswitch-enum include $(CPPUTEST_HOME)/build/MakefileWorker.mk cpputest-3.7.2/scripts/templates/ProjectTemplate/src/000755 000765 000024 00000000000 12523662132 023704 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/templates/ProjectTemplate/tests/000755 000765 000024 00000000000 12523662133 024260 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/templates/ProjectTemplate/tests/AllTests.cpp000644 000765 000024 00000000206 12521603460 026511 0ustar00basvoddestaff000000 000000 #include "CppUTest/CommandLineTestRunner.h" int main(int ac, char** av) { return CommandLineTestRunner::RunAllTests(ac, av); } cpputest-3.7.2/scripts/templates/ProjectTemplate/tests/util/000755 000765 000024 00000000000 12523662133 025235 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/templates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp000644 000765 000024 00000000533 12521603460 032003 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "ProjectBuildTime.h" TEST_GROUP(ProjectBuildTime) { ProjectBuildTime* projectBuildTime; void setup() { projectBuildTime = new ProjectBuildTime(); } void teardown() { delete projectBuildTime; } }; TEST(ProjectBuildTime, Create) { CHECK(0 != projectBuildTime->GetDateTime()); } cpputest-3.7.2/scripts/templates/ProjectTemplate/src/util/000755 000765 000024 00000000000 12523662133 024662 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/templates/ProjectTemplate/src/util/ProjectBuildTime.cpp000644 000765 000024 00000000334 12521603460 030567 0ustar00basvoddestaff000000 000000 #include "ProjectBuildTime.h" ProjectBuildTime::ProjectBuildTime() : dateTime(__DATE__ " " __TIME__) { } ProjectBuildTime::~ProjectBuildTime() { } const char* ProjectBuildTime::GetDateTime() { return dateTime; } cpputest-3.7.2/scripts/templates/ProjectTemplate/include/util/000755 000765 000024 00000000000 12523662133 025516 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/templates/ProjectTemplate/include/util/ProjectBuildTime.h000644 000765 000024 00000001223 12521603460 031066 0ustar00basvoddestaff000000 000000 #ifndef D_ProjectBuildTime_H #define D_ProjectBuildTime_H /////////////////////////////////////////////////////////////////////////////// // // ProjectBuildTime is responsible for recording and reporting when // this project library was built // /////////////////////////////////////////////////////////////////////////////// class ProjectBuildTime { public: explicit ProjectBuildTime(); virtual ~ProjectBuildTime(); const char* GetDateTime(); private: const char* dateTime; ProjectBuildTime(const ProjectBuildTime&); ProjectBuildTime& operator=(const ProjectBuildTime&); }; #endif // D_ProjectBuildTime_H cpputest-3.7.2/scripts/CppUnitTemplates/ClassName.cpp000644 000765 000024 00000000121 12521603460 023617 0ustar00basvoddestaff000000 000000 #include "ClassName.h" ClassName::ClassName() { } ClassName::~ClassName() { } cpputest-3.7.2/scripts/CppUnitTemplates/ClassName.h000644 000765 000024 00000000705 12521603460 023274 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /////////////////////////////////////////////////////////////////////////////// // // ClassName is responsible for ... // /////////////////////////////////////////////////////////////////////////////// class ClassName { public: explicit ClassName(); virtual ~ClassName(); private: ClassName(const ClassName&); ClassName& operator=(const ClassName&); }; #endif // D_ClassName_H cpputest-3.7.2/scripts/CppUnitTemplates/ClassNameC.c000644 000765 000024 00000000237 12521603460 023372 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include //static local variables void ClassName_Create(void) { } void ClassName_Destroy(void) { } cpputest-3.7.2/scripts/CppUnitTemplates/ClassNameC.h000644 000765 000024 00000000515 12521603460 023376 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /////////////////////////////////////////////////////////////////////////////// // // ClassName is responsible for ... // /////////////////////////////////////////////////////////////////////////////// void ClassName_Create(void); void ClassName_Destroy(void); #endif // D_ClassName_H cpputest-3.7.2/scripts/CppUnitTemplates/ClassNameCMultipleInstance.c000644 000765 000024 00000000567 12521603460 026601 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include //static local variables typedef struct _ClassName { int placeHolderForHiddenStructElements; }; ClassName* ClassName_Create(void) { ClassName* self = malloc(sizeof(ClassName)); memset(self, 0, sizeof(ClassName)); return self; } void ClassName_Destroy(ClassName* self) { free(self); } cpputest-3.7.2/scripts/CppUnitTemplates/ClassNameCMultipleInstance.h000644 000765 000024 00000000661 12521603460 026601 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /////////////////////////////////////////////////////////////////////////////// // // ClassName is responsible for ... // /////////////////////////////////////////////////////////////////////////////// typedef struct _ClassName Classname; ClassName* ClassName_Create(void); void ClassName_Destroy(ClassName*); void ClassName_VirtualFunction_impl(ClassName*); #endif // D_ClassName_H cpputest-3.7.2/scripts/CppUnitTemplates/ClassNameCMultipleInstanceTest.cpp000644 000765 000024 00000001206 12521603460 027770 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" static int fakeRan = 0; extern "C" { #include "ClassName.h" void virtualFunction_renameThis_fake(ClassName*) { fakeRan = 1; } } TEST_GROUP(ClassName) { ClassName* aClassName; void setup() { aClassName = ClassName_Create(); fakeRan = 0; aClassName->virtualFunction_renameThis = virtualFunction_renameThis_fake; } void teardown() { ClassName_Destroy(aClassName); } }; TEST(ClassName, Fake) { aClassName->virtualFunction_renameThis(aClassName); LONGS_EQUAL(1, fakeRan); } TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/CppUnitTemplates/ClassNameCPolymorphic.c000644 000765 000024 00000000567 12521603460 025626 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include //static local variables typedef struct _ClassName { int placeHolderForHiddenStructElements; }; ClassName* ClassName_Create(void) { ClassName* self = malloc(sizeof(ClassName)); memset(self, 0, sizeof(ClassName)); return self; } void ClassName_Destroy(ClassName* self) { free(self); } cpputest-3.7.2/scripts/CppUnitTemplates/ClassNameCPolymorphic.h000644 000765 000024 00000000667 12521603460 025634 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /////////////////////////////////////////////////////////////////////////////// // // ClassName is responsible for ... // /////////////////////////////////////////////////////////////////////////////// typedef struct _ClassName ClassnamePiml; ClassName* ClassName_Create(void); void ClassName_Destroy(ClassName*); void ClassName_VirtualFunction_impl(ClassName*); #endif // D_ClassName_H cpputest-3.7.2/scripts/CppUnitTemplates/ClassNameCTest.cpp000644 000765 000024 00000000421 12521603460 024565 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" extern "C" { #include "ClassName.h" } TEST_GROUP(ClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/CppUnitTemplates/ClassNameTest.cpp000644 000765 000024 00000001011 12521603460 024456 0ustar00basvoddestaff000000 000000 #include #include #include "ClassName.h" class ClassNameTest: public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(ClassNameTest); CPPUNIT_TEST(testCreate); CPPUNIT_TEST_SUITE_END(); ClassName* aClassName; public: void setUp() { aClassName = new ClassName(); } void tearDown() { delete aClassName; } void testCreate() { CPPUNIT_FAIL("Start here"); } }; CPPUNIT_TEST_SUITE_REGISTRATION(ClassNameTest); cpputest-3.7.2/scripts/CppUnitTemplates/InterfaceCTest.cpp000644 000765 000024 00000000430 12521603460 024617 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" extern "C" { #include "FakeClassName.h" } TEST_GROUP(FakeClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(FakeClassName, Create) { FAIL("Start here"); } cpputest-3.7.2/scripts/CppUnitTemplates/InterfaceTest.cpp000644 000765 000024 00000001233 12521603460 024516 0ustar00basvoddestaff000000 000000 #include #include #include "ClassName.h" #include "MockClassName.h" class MockClassNameTest: public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(MockClassNameTest); CPPUNIT_TEST(testCreate); CPPUNIT_TEST_SUITE_END(); ClassName* aClassName; MockClassName* mockClassName; public: void setUp() { mockClassName = new MockClassName(); aClassName = mockClassName; } void tearDown() { delete aClassName; } void testCreate() { CPPUNIT_FAIL("Start here"); } }; CPPUNIT_TEST_SUITE_REGISTRATION(MockClassNameTest); cpputest-3.7.2/scripts/CppUnitTemplates/MockClassName.h000644 000765 000024 00000001137 12521603460 024106 0ustar00basvoddestaff000000 000000 #ifndef D_MockClassName_H #define D_MockClassName_H /////////////////////////////////////////////////////////////////////////////// // // MockClassName.h // // MockClassName is responsible for providing a test stub for ClassName // /////////////////////////////////////////////////////////////////////////////// #include "ClassName.h" class MockClassName : public ClassName { public: explicit MockClassName() {} virtual ~MockClassName() {} private: MockClassName(const MockClassName&); MockClassName& operator=(const MockClassName&); }; #endif // D_MockClassName_H cpputest-3.7.2/scripts/CppUnitTemplates/MockClassNameC.c000644 000765 000024 00000000237 12521603460 024204 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include //static local variables void ClassName_Create(void) { } void ClassName_Destroy(void) { } cpputest-3.7.2/scripts/CppUnitTemplates/MockClassNameC.h000644 000765 000024 00000000560 12521603460 024210 0ustar00basvoddestaff000000 000000 #ifndef D_FakeClassName_H #define D_FakeClassName_H /////////////////////////////////////////////////////////////////////////////// // // FakeClassName.h // // FakeClassName is responsible for providing a test stub for ClassName // /////////////////////////////////////////////////////////////////////////////// #include "ClassName.h" #endif // D_FakeClassName_H cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/000755 000765 000024 00000000000 12523662133 024361 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/include/000755 000765 000024 00000000000 12523662132 026003 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/ProjectMakefile000644 000765 000024 00000002407 12521603460 027347 0ustar00basvoddestaff000000 000000 #Set this to @ to keep the makefile quiet SILENCE = @ #---- Outputs ----# COMPONENT_NAME = Project TARGET_LIB = \ lib/lib$(COMPONENT_NAME).a TEST_TARGET = \ $(COMPONENT_NAME)_tests #--- Inputs ----# PROJECT_HOME_DIR = . CPPUTEST_HOME = ../CppUTest CPPUNIT_HOME = ../cppunit CPP_PLATFORM = Gcc #CFLAGS are set to override malloc and free to get memory leak detection in C programs CFLAGS = -Dmalloc=cpputest_malloc -Dfree=cpputest_free CPPFLAGS = #GCOVFLAGS = -fprofile-arcs -ftest-coverage #SRC_DIRS is a list of source directories that make up the target library #If test files are in these directories, their IMPORT_TEST_GROUPs need #to be included in main to force them to be linked in. By convention #put them into an AllTests.h file in each directory SRC_DIRS = \ src/util #TEST_SRC_DIRS is a list of directories including # - A test main (AllTests.cpp by convention) # - OBJ files in these directories are included in the TEST_TARGET # - Consequently - AllTests.h containing the IMPORT_TEST_GROUPS is not needed # - TEST_SRC_DIRS = \ tests \ tests/util #includes for all compiles INCLUDES =\ -I.\ -Iinclude/util\ -I$(CPPUTEST_HOME)/include/ #Flags to pass to ld LDFLAGS += $(CPPUNIT_HOME)/lib/libcppunit.a include $(CPPUTEST_HOME)/build/ComponentMakefile cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/src/000755 000765 000024 00000000000 12523662132 025147 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/tests/000755 000765 000024 00000000000 12523662133 025523 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/tests/AllTests.cpp000644 000765 000024 00000000206 12521603460 027754 0ustar00basvoddestaff000000 000000 #include "CppUTest/CommandLineTestRunner.h" int main(int ac, char** av) { return CommandLineTestRunner::RunAllTests(ac, av); } cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/tests/util/000755 000765 000024 00000000000 12523662133 026500 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp000644 000765 000024 00000000533 12521603460 033246 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "ProjectBuildTime.h" TEST_GROUP(ProjectBuildTime) { ProjectBuildTime* projectBuildTime; void setup() { projectBuildTime = new ProjectBuildTime(); } void teardown() { delete projectBuildTime; } }; TEST(ProjectBuildTime, Create) { CHECK(0 != projectBuildTime->GetDateTime()); } cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/src/util/000755 000765 000024 00000000000 12523662133 026125 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/src/util/ProjectBuildTime.cpp000644 000765 000024 00000000334 12521603460 032032 0ustar00basvoddestaff000000 000000 #include "ProjectBuildTime.h" ProjectBuildTime::ProjectBuildTime() : dateTime(__DATE__ " " __TIME__) { } ProjectBuildTime::~ProjectBuildTime() { } const char* ProjectBuildTime::GetDateTime() { return dateTime; } cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/include/util/000755 000765 000024 00000000000 12523662133 026761 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/scripts/CppUnitTemplates/ProjectTemplate/include/util/ProjectBuildTime.h000644 000765 000024 00000001223 12521603460 032331 0ustar00basvoddestaff000000 000000 #ifndef D_ProjectBuildTime_H #define D_ProjectBuildTime_H /////////////////////////////////////////////////////////////////////////////// // // ProjectBuildTime is responsible for recording and reporting when // this project library was built // /////////////////////////////////////////////////////////////////////////////// class ProjectBuildTime { public: explicit ProjectBuildTime(); virtual ~ProjectBuildTime(); const char* GetDateTime(); private: const char* dateTime; ProjectBuildTime(const ProjectBuildTime&); ProjectBuildTime& operator=(const ProjectBuildTime&); }; #endif // D_ProjectBuildTime_H cpputest-3.7.2/scripts/convertToUnity/cpp_u_test_to_unity.rb000755 000765 000024 00000001634 12521603460 025461 0ustar00basvoddestaff000000 000000 #!/usr/bin/env ruby require File.join(File.dirname(__FILE__), 'cpp_u_test_to_unity_utils.rb') include CppUTestToUnityUtils in_file = ARGV[0] unity_filename = convert_test_filename_to_unity_filename(in_file) unity_runner_filename = convert_test_filename_to_unity_testrunner_filename(in_file) puts "Converting :" + in_file + "\n" puts " To :" + unity_filename + "\n" test_lines = File.open(in_file).readlines out_unity_file = File.open(unity_filename, 'w') out_unity_runner_file = File.open(unity_runner_filename, 'w') test_groups = get_test_groups(test_lines) adjust_tabs(test_lines) remove_extern_c(test_lines) demote_group(/TEST_GROUP/, test_lines) convert_macros(test_lines, test_groups) group_runners = generate_group_runners(test_groups, test_lines) write_lines_to_file(out_unity_file, test_lines) write_lines_to_file(out_unity_runner_file, group_runners) out_unity_file.close() out_unity_runner_file.close() cpputest-3.7.2/scripts/convertToUnity/cpp_u_test_to_unity_utils.rb000644 000765 000024 00000013715 12521603460 026701 0ustar00basvoddestaff000000 000000 module CppUTestToUnityUtils def convert_test_filename_to_unity_filename(testpath) testpath.sub(/tests\/(.*)\.cpp/, "unity/\\1.c") end def convert_test_filename_to_unity_testrunner_filename(testpath) testpath.sub(/tests\/(.*)\.cpp/, "unity/\\1_runner.c") end def convert_one_liners(line, group) line.sub!(/#include "CppUTest\/TestHarness.h\"/, "#include \"unity_fixture.h\"" ) line.sub!(/FAIL\(/, 'TEST_FAIL(') line.sub!(/CHECK\(/, "TEST_ASSERT_TRUE(") line.sub!(/CHECK_TRUE\(/, "TEST_ASSERT_TRUE(") line.sub!(/CHECK_FALSE\(/, "TEST_ASSERT_FALSE(") line.sub!(/LONGS_EQUAL\(/, "TEST_ASSERT_EQUAL(") line.sub!(/BYTES_EQUAL\(/, "TEST_ASSERT_EQUAL_HEX8(") line.sub!(/STRCMP_EQUAL\(/, "TEST_ASSERT_EQUAL_STRING(") line.sub!(/DOUBLES_EQUAL\(/, "TEST_ASSERT_FLOAT_WITHIN(") line.sub!(/ POINTERS_EQUAL\(/, " TEST_ASSERT_POINTERS_EQUAL(") line.sub!(/CHECK_EQUAL\(true,/, "TEST_ASSERT_TRUE(") line.sub!(/CHECK_EQUAL\(false,/, "TEST_ASSERT_FALSE(") line.sub!(/CHECK_EQUAL\(/, "TEST_ASSERT_EQUAL(") #line.sub!(/static void setup\(/, "TEST_SETUP(" + group) #line.sub!(/static void teardown\(/, "TEST_TEAR_DOWN(" + group) end def convert_setup(lines, group) lines.each do | line | if line.sub!(/static void setup\(/, "TEST_SETUP(" + group) return end end end def convert_teardown(lines, group) lines.each do | line | if line.sub!(/static void teardown\(/, "TEST_TEAR_DOWN(" + group) return end end end def convert_macros(lines, groups) groups.each do | group | lines.each do | line | convert_one_liners(line, group) end convert_setup(lines, group) convert_teardown(lines, group) end end def get_test_group(lines) @test_group = "None" lines.each do | line | if /TEST_GROUP/ =~ line @test_group = line.split(/[()]/)[1] end end @test_group end def get_test_groups(lines) @test_groups = [] i = 0 lines.each do | line | if /TEST_GROUP/ =~ line @test_groups[i] = line.split(/[()]/)[1] i = i + 1 end end @test_groups end def adjust_tabs(lines) lines.each do | line | line.gsub!(/^ {2,3}(\w+)/, " \\1") line.gsub!(/\t/, " ") end end def include_line?(line) /\#include/ =~ line end def convert_member_to_static(line) line.gsub!(/^\s*(\w)/, "static \\1") end def add_semicolon_to_end_of_test_group_line(line) line.gsub!(/\)/, ");") end def consume_closing_curley_brace(line) line.gsub!(/\}\;*[ \t]*(.*)/, "\\1") end def outdent(line) line.gsub!(/^ /, "") end def consume_opening_curley_brace(line) line.gsub!(/\{/, "") end def demote_group(group, lines) test_group = "None" scope_level = 0 in_test_group = false lines.each do | line | next if include_line?(line) if !in_test_group if line.match(group) add_semicolon_to_end_of_test_group_line(line) in_test_group = true end next end if line.include?("}") scope_level -= 1 elsif line.include?("{") scope_level += 1 end outdent(line) if scope_level == 1 convert_member_to_static(line) consume_opening_curley_brace(line) end if scope_level == 0 consume_closing_curley_brace(line) in_test_group = false end end end def search_and_destroy(pattern, lines) lines.each do | line | line.gsub!(pattern, "") end end def extern_c_line?(line) line.match(/extern \"C\"/) end def remove_extern_c(lines) in_extern_c = false; scope_level = 0 lines.each do | line | if !in_extern_c if extern_c_line?(line) in_extern_c = true line.gsub!(/extern \"C\"/, "") end next end # next if ! in_extern_c and ! extern_c_line?(line) # # in_extern_c = true if line.include?("{") scope_level += 1 elsif line.include?("}") scope_level -= 1 end if scope_level == 1 consume_opening_curley_brace(line) end if scope_level == 0 and line.include?("}") in_extern_c = false consume_closing_curley_brace(line) end end end def test_declaration?(line, group) /TEST\(#{group}/ =~ line end def generate_group_runner(group, lines) group_runner = [] group_runner << "/* Make sure you invoke RUN_TEST_GROUP(" + group + ") from unity main */\n\n" group_runner << "TEST_GROUP_RUNNER(" + group + ")\n" group_runner << "{\n" lines.each do | line | if test_declaration?(line, group) temp = line.clone temp.sub!(/\n/, "") temp.sub!(/^IGNORE_/, "") temp.sub!(/^TEST/, " RUN_TEST_CASE") group_runner << temp + ";\n" end end group_runner << "}\n\n" end def generate_group_runners(groups, lines) group_runners = [] group_runners << "/* Generated code, edit at your own risk */\n\n" group_runners << "#include \"unity_fixture.h\"\n\n" groups.each do | group | group_runners.concat generate_group_runner(group, lines) end group_runners end def generate_group_runner_plainUnity(group, lines) prototypes = [] callers = [] group_runner = [] lines.each do | line | if /void test.*\(.*\)/ =~ line temp = line.clone temp.sub!(/\n/, "") prototypes << temp + ";" temp.sub!(/void /, " ") temp.sub!(/\(void\)/, "()") callers << temp end end group_runner << "\n" group_runner << "//Generated code, edit at your own risk\n\n" group_runner << "\#include \"unity_fixture.h\"\n\n" group_runner << prototypes group_runner << "\n\nTEST_GROUP_RUNNER(" + group + ")\n" group_runner << "{\n" group_runner << callers group_runner << "}\n" end def write_lines_to_file(file, lines) lines.each do | line | file.write(line) end end endcpputest-3.7.2/scripts/convertToUnity/cpp_u_test_to_unity_utils_tests.rb000755 000765 000024 00000025314 12521603460 030124 0ustar00basvoddestaff000000 000000 #!/usr/bin/env ruby require File.join(File.dirname(__FILE__), 'cpp_u_test_to_unity_utils.rb') include CppUTestToUnityUtils test_lines = Array.new expected_lines = Array.new def check(theTest, expected, actual) unless (expected == actual) puts theTest + " failed" puts "Actual:\n" show(actual) puts "unmatched lines" show(expected - actual) puts("Expected: " + expected.inspect) puts(" Actual: " + actual.inspect) end end #--------------------------------------------------- test_lines = [ "\n", "TEST_GROUP(mygroup)\n", "{\n", "}\n", "\n", "\n", "TEST_GROUP(yourgroup)\n", "{\n", "}\n", "\n" ] groups = get_test_groups(test_lines) unless /mygroup/ =~ groups[0] puts "Expected mygroup, but got #{groups[0]}" end unless /yourgroup/ =~ groups[1] puts "Expected yourgroup, but got #{groups[1]}" end #--------------------------------------------------- test_lines = ["\n", "TEST_GROUP(mygroup)\n", "{\n", " int xxxx;\n", " void yyyy()\n", " {\n", " int i = 0;\n", " }\n", "};\n", "\n", " void f()\n" ] expected_lines = ["\n", "TEST_GROUP(mygroup);\n", "\n", "static int xxxx;\n", "static void yyyy()\n", "{\n", " int i = 0;\n", "}\n", "\n", "\n", " void f()\n" ] def show(lines) lines.each do | line | puts line end end demote_group(/TEST_GROUP/, test_lines) check("demote_group", expected_lines, test_lines) #--------------------------------- test_lines = [ "\n", "TEST_GROUP(mygroup)\n", "{\n", "}\n", ";\n", "\n", "TEST_GROUP(yourgroup)\n", "{\n", "}\n", ";\n" ] expected_lines = [ "\n", "TEST_GROUP(mygroup);\n", "\n", "\n", ";\n", "\n", "TEST_GROUP(yourgroup);\n", "\n", "\n", ";\n" ] demote_group(/TEST_GROUP/, test_lines) check("demote_group", expected_lines, test_lines) #--------------------------------- test_lines = ["\n", "TEST_GROUP(mygroup)\n", "{\n", " int xxxx;\n", " void yyyy()\n", " {\n", " int i = 0;\n", " }\n", "}; //End TEST_GROUP\n", "\n" ] expected_lines = ["\n", "TEST_GROUP(mygroup);\n", "\n", "static int xxxx;\n", "static void yyyy()\n", "{\n", " int i = 0;\n", "}\n", "//End TEST_GROUP\n", "\n" ] demote_group(/TEST_GROUP/, test_lines) check("demote_group", expected_lines, test_lines) #--------------------------------------------------- test_lines = ["\n", "extern \"C\"\n", "{\n", "\#include \"heythere.h\"\n", "int xxxx;\n", "void yyyy()\n", "{\n", " int i = 0;\n", "}\n", "}\n", "int foo()\n", "{\n", " int aaaa;\n", "}\n" ] expected_lines = ["\n", "\n", "\n", "\#include \"heythere.h\"\n", "int xxxx;\n", "void yyyy()\n", "{\n", " int i = 0;\n", "}\n", "\n", "int foo()\n", "{\n", " int aaaa;\n", "}\n" ] remove_extern_c(test_lines) check("remove_extern_c", expected_lines, test_lines) #--------------------------------------------------- test_lines = ["\n", "extern \"C\"\n", "{\n", "#include \"LightScheduler.h\"\n", "#include \"FakeLightController.h\"\n", "#include \"FakeTimeService.h\"\n", "#include \"FakeRandomMinute.h\"\n", "}\n", "#include \"CppUTest/TestHarness.h\"\n" ] expected_lines = ["\n", "\n", "\n", "#include \"LightScheduler.h\"\n", "#include \"FakeLightController.h\"\n", "#include \"FakeTimeService.h\"\n", "#include \"FakeRandomMinute.h\"\n", "\n", "#include \"CppUTest/TestHarness.h\"\n" ] remove_extern_c(test_lines) check("remove_extern_c", expected_lines, test_lines) #--------------------------------------------------- test_lines = [ "\n", "#include \"unity_fixture.h\" expected\n", "#include \"CppUTest\/TestHarness.h\"\n", "\n", "TEST_SETUP(theGroup) expected\n", "static void setup()\n", "{\n", " x = 1;\n", "}\n", "TEST_TEAR_DOWN(theGroup) expected\n", "static void teardown()\n", "{\n", " y = 0;\n", "}\n", "TEST(LedDriver, Create)\n", "{\n", " FAIL(\"Start here\");\n", "}\n", "\n", "IGNORE_TEST(LedDriver, ignore)\n", "{\n", " TEST_ASSERT_TRUE(0 == 0); expected\n", " CHECK(0 == 0);\n", "\n", " TEST_ASSERT_TRUE(0 == 0); expected\n", " CHECK_TRUE(0 == 0);\n", "\n", " TEST_ASSERT_FALSE(0 != 0); expected\n", " CHECK_FALSE(0 != 0);\n", "\n", " TEST_ASSERT_EQUAL(1,1); expected\n", " LONGS_EQUAL(1,1);\n", "\n", " TEST_ASSERT_EQUAL_HEX8(0xab,0xab); expected\n", " BYTES_EQUAL(0xab,0xab);\n", "\n", " TEST_ASSERT_EQUAL(100,100); expected\n", " CHECK_EQUAL(100,100);\n", "\n", " TEST_ASSERT_TRUE(true); expected\n", " CHECK_EQUAL(true,true);\n", "\n", " TEST_ASSERT_FALSE(false); expected\n", " CHECK_EQUAL(false,false);\n", "\n", " TEST_ASSERT_EQUAL_STRING(\"THIS\", \"THIS\"); expected\n", " STRCMP_EQUAL(\"THIS\", \"THIS\");\n", "\n", " TEST_ASSERT_FLOAT_WITHIN(1.0, 1.0, .01); expected\n", " DOUBLES_EQUAL(1.0, 1.0, .01);\n", "\n", " TEST_ASSERT_POINTERS_EQUAL(this, this); expected\n", " POINTERS_EQUAL(this, this);\n", "}\n" ] expected_lines = [ "\n", "#include \"unity_fixture.h\" expected\n", "#include \"unity_fixture.h\"\n", "\n", "TEST_SETUP(theGroup) expected\n", "TEST_SETUP(theGroup)\n", "{\n", " x = 1;\n", "}\n", "TEST_TEAR_DOWN(theGroup) expected\n", "TEST_TEAR_DOWN(theGroup)\n", "{\n", " y = 0;\n", "}\n", "TEST(LedDriver, Create)\n", "{\n", " TEST_FAIL(\"Start here\");\n", "}\n", "\n", "IGNORE_TEST(LedDriver, ignore)\n", "{\n", " TEST_ASSERT_TRUE(0 == 0); expected\n", " TEST_ASSERT_TRUE(0 == 0);\n", "\n", " TEST_ASSERT_TRUE(0 == 0); expected\n", " TEST_ASSERT_TRUE(0 == 0);\n", "\n", " TEST_ASSERT_FALSE(0 != 0); expected\n", " TEST_ASSERT_FALSE(0 != 0);\n", "\n", " TEST_ASSERT_EQUAL(1,1); expected\n", " TEST_ASSERT_EQUAL(1,1);\n", "\n", " TEST_ASSERT_EQUAL_HEX8(0xab,0xab); expected\n", " TEST_ASSERT_EQUAL_HEX8(0xab,0xab);\n", "\n", " TEST_ASSERT_EQUAL(100,100); expected\n", " TEST_ASSERT_EQUAL(100,100);\n", "\n", " TEST_ASSERT_TRUE(true); expected\n", " TEST_ASSERT_TRUE(true);\n", "\n", " TEST_ASSERT_FALSE(false); expected\n", " TEST_ASSERT_FALSE(false);\n", "\n", " TEST_ASSERT_EQUAL_STRING(\"THIS\", \"THIS\"); expected\n", " TEST_ASSERT_EQUAL_STRING(\"THIS\", \"THIS\");\n", "\n", " TEST_ASSERT_FLOAT_WITHIN(1.0, 1.0, .01); expected\n", " TEST_ASSERT_FLOAT_WITHIN(1.0, 1.0, .01);\n", "\n", " TEST_ASSERT_POINTERS_EQUAL(this, this); expected\n", " TEST_ASSERT_POINTERS_EQUAL(this, this);\n", "}\n" ] convert_macros(test_lines, ["theGroup"]) check("convert_macros", expected_lines, test_lines) #--------------------------------------------------- test_lines = [ "TEST_SETUP(group1) expected\n", "static void setup()\n", "TEST_TEAR_DOWN(group1) expected\n", "static void teardown()\n", "TEST(group1, Create)\n", "IGNORE_TEST(group1, ignore)\n", "TEST_SETUP(group2) expected\n", "static void setup()\n", "TEST_TEAR_DOWN(group2) expected\n", "static void teardown()\n", "TEST(group2, Create)\n", "IGNORE_TEST(group2, ignore)\n" ] expected_lines = [ "TEST_SETUP(group1) expected\n", "TEST_SETUP(group1)\n", "TEST_TEAR_DOWN(group1) expected\n", "TEST_TEAR_DOWN(group1)\n", "TEST(group1, Create)\n", "IGNORE_TEST(group1, ignore)\n", "TEST_SETUP(group2) expected\n", "TEST_SETUP(group2)\n", "TEST_TEAR_DOWN(group2) expected\n", "TEST_TEAR_DOWN(group2)\n", "TEST(group2, Create)\n", "IGNORE_TEST(group2, ignore)\n", ] convert_macros(test_lines, ["group1", "group2"]) check("convert_macros", expected_lines, test_lines) #--------------------------------------------------- test_lines = [ " aaaa expected\n", "\taaa\n", " bbbb expected\n", "\t\t\t\tbbbb\n", " int a3; expected\n", " int a3;\n", " int a4; expected\n", " int a4;\n" ] expected_lines = [ " aaaa expected\n", " aaa\n", " bbbb expected\n", " bbbb\n", " int a3; expected\n", " int a3;\n", " int a4; expected\n", " int a4;\n" ] adjust_tabs(test_lines) check("adjust_tabs", expected_lines, test_lines) #--------------------------------------------------- test_lines = [ "TEST(LedDriver, Create)\n", "{\n", " FAIL(\"Start here\");\n", "}\n", "\n", "TEST(LedDriver, XXXXX)\n", "{\n", " FAIL(\"Start here\");\n", "}\n", "\n", "IGNORE_TEST(LedDriver, ignore)\n", "{\n", " TEST_ASSERT_TRUE(0 == 0); expected\n", "}\n" ] expected_group_runner = [ "/* Make sure you invoke RUN_TEST_GROUP(LedDriver) from unity main */\n\n", "TEST_GROUP_RUNNER(LedDriver)\n", "{\n", " RUN_TEST_CASE(LedDriver, Create);\n", " RUN_TEST_CASE(LedDriver, XXXXX);\n", " RUN_TEST_CASE(LedDriver, ignore);\n", "}\n\n" ] group_runner = generate_group_runner("LedDriver", test_lines) check("generate_group_runner", expected_group_runner, group_runner) #--------------------------------------------------- test_lines = [ "TEST(LedDriverGroup1, Create)\n", "{\n", " FAIL(\"Start here\");\n", "}\n", "\n", "TEST(LedDriverGroup2, XXXXX)\n", "{\n", " FAIL(\"Start here\");\n", "}\n", "\n" ] expected_group_runners = [ "/* Generated code, edit at your own risk */\n\n", "#include \"unity_fixture.h\"\n\n", "/* Make sure you invoke RUN_TEST_GROUP(LedDriverGroup1) from unity main */\n\n", "TEST_GROUP_RUNNER(LedDriverGroup1)\n", "{\n", " RUN_TEST_CASE(LedDriverGroup1, Create);\n", "}\n\n", "/* Make sure you invoke RUN_TEST_GROUP(LedDriverGroup2) from unity main */\n\n", "TEST_GROUP_RUNNER(LedDriverGroup2)\n", "{\n", " RUN_TEST_CASE(LedDriverGroup2, XXXXX);\n", "}\n\n" ] runners = generate_group_runners(["LedDriverGroup1", "LedDriverGroup2"], test_lines) check("generate_group_runners", expected_group_runners, runners) #--------------------------------------------------- test_filename = "prefix/tests/pooltable/EightballTest.cpp" expected_unity_filename = "prefix/unity/pooltable/EightballTest.c" unity_filename = convert_test_filename_to_unity_filename(test_filename) if expected_unity_filename != unity_filename puts("Failure in: convert_test_path_to_unity_path") puts("Expected: " + expected_unity_filename.inspect) puts(" Actual: " + unity_filename.inspect) end #--------------------------------------------------- test_filename = "tests/pool/table/EightballTest.cpp" expected_unity_runner_filename = "unity/pool/table/EightballTest_runner.c" unity_runner_filename = convert_test_filename_to_unity_testrunner_filename(test_filename) if expected_unity_runner_filename != unity_runner_filename puts("Failure in: convert_test_path_to_unity_path") puts("Expected: " + expected_unity_runner_filename.inspect) puts(" Actual: " + unity_runner_filename.inspect) end cpputest-3.7.2/scripts/convertToUnity/create_group_runner.rb000755 000765 000024 00000001233 12521603460 025425 0ustar00basvoddestaff000000 000000 #!/usr/bin/env ruby require File.join(File.dirname(__FILE__), 'cpp_u_test_to_unity_utils.rb') include CppUTestToUnityUtils in_file = ARGV[0] create_group_runner_file(in_file) unity_runner_filename = convert_test_filename_to_unity_testrunner_filename(in_file) puts "Creating test runner for :" + in_file + "\n" puts " Generating :" + unity_filename + "\n" test_lines = File.open(in_file).readlines out_unity_runner_file = File.open(unity_runner_filename, 'w') test_group = get_test_group(test_lines) group_runner = generate_group_runner(test_group, test_lines) write_lines_to_file(out_unity_runner_file, group_runner) out_unity_runner_file.close() cpputest-3.7.2/scripts/convertToUnity/create_unity_test_runner.rb000755 000765 000024 00000000604 12521603460 026501 0ustar00basvoddestaff000000 000000 #!/usr/bin/env ruby require File.join(File.dirname(__FILE__), 'cpp_u_test_to_unity_utils.rb') include CppUTestToUnityUtils in_file = ARGV[0] test_lines = File.open(in_file).collect out_file = File.open(File.basename(in_file, ".c") + "_runner.c", 'w') group_runner = generate_group_runner_plainUnity("unity", test_lines) write_lines_to_file(out_file, group_runner) out_file.close() cpputest-3.7.2/scripts/convertToUnity/README.txt000644 000765 000024 00000001434 12521603460 022526 0ustar00basvoddestaff000000 000000 Convert CppUTest files to Unity test files ------------------------------------------ To convert a CppUTest test file to Unity, enter a command like this CONVERT=$CPPUTEST_HOME/scripts/convertToUnity/cpp_u_test_to_unity.rb ruby $CONVERT tests/some/dir/or/dirs/MyThink.cpp This will create two files like this unity/some/dir/or/dirs/MyThing.c unity/some/dir/or/dirs/MyThing_runner.c Things that need to be done manually once to your unity test environment: Create directory 'unity/some/dir/or/dirs' Adjust unity makefile to refer to the needed files Unity main needs to call RUN_TEST_GROUP(MyThing) Things not supported in converted test cases: CppUMock Hand built mocks that use CppUTest macros. Formatting conventions can cause the script to fail cpputest-3.7.2/platforms_startup/armcc/000755 000765 000024 00000000000 12523662132 021204 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_startup/README000644 000765 000024 00000000263 12521603460 020775 0ustar00basvoddestaff000000 000000 Directory to place startup files for different toolchains/chips combinations. Source files from this directory is compiled to library placed in lib directory in CppUTest home. cpputest-3.7.2/platforms_startup/armcc/AT91SAM7A3/000755 000765 000024 00000000000 12523662133 022477 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_startup/armcc/LPC1768/000755 000765 000024 00000000000 12523662133 022151 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_startup/armcc/LPC1833/000755 000765 000024 00000000000 12523662133 022142 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_startup/armcc/LPC1833/cmsis_18xx.h000644 000765 000024 00000017623 12521603460 024326 0ustar00basvoddestaff000000 000000 /* * @brief Basic CMSIS include file for LPC18XX * * @note * Copyright(C) NXP Semiconductors, 2013 * All rights reserved. * * @par * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * LPC products. This software is supplied "AS IS" without any warranties of * any kind, and NXP Semiconductors and its licensor disclaim any and * all warranties, express or implied, including all implied warranties of * merchantability, fitness for a particular purpose and non-infringement of * intellectual property rights. NXP Semiconductors assumes no responsibility * or liability for the use of the software, conveys no license or rights under any * patent, copyright, mask work right, or any other intellectual property rights in * or to any products. NXP Semiconductors reserves the right to make changes * in the software without notification. NXP Semiconductors also makes no * representation or warranty that such application will be suitable for the * specified use without further testing or modification. * * @par * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under NXP Semiconductors' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with NXP Semiconductors microcontrollers. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ #ifndef __CMSIS_18XX_H_ #define __CMSIS_18XX_H_ #ifdef __cplusplus extern "C" { #endif /** @defgroup CMSIS_18XX CHIP: LPC18xx CMSIS include file * @ingroup CHIP_18XX_43XX_Drivers * @{ */ #pragma diag_suppress 2525 #pragma push #pragma anon_unions /** @defgroup CMSIS_18XX_COMMON CHIP: LPC18xx Cortex CMSIS definitions * @{ */ #define __CM3_REV 0x0201 #define __MPU_PRESENT 1 /*!< MPU present or not */ #define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ #define __FPU_PRESENT 0 /*!< FPU present or not */ /** * @} */ /** @defgroup CMSIS_18XX_IRQ CHIP: LPC18xx peripheral interrupt numbers * @{ */ typedef enum { /* ------------------------- Cortex-M3 Processor Exceptions Numbers ----------------------------- */ Reset_IRQn = -15,/*!< 1 Reset Vector, invoked on Power up and warm reset */ NonMaskableInt_IRQn = -14,/*!< 2 Non maskable Interrupt, cannot be stopped or preempted */ HardFault_IRQn = -13,/*!< 3 Hard Fault, all classes of Fault */ MemoryManagement_IRQn = -12,/*!< 4 Memory Management, MPU mismatch, including Access Violation and No Match */ BusFault_IRQn = -11,/*!< 5 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */ UsageFault_IRQn = -10,/*!< 6 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ SVCall_IRQn = -5, /*!< 11 System Service Call via SVC instruction */ DebugMonitor_IRQn = -4, /*!< 12 Debug Monitor */ PendSV_IRQn = -2, /*!< 14 Pendable request for system service */ SysTick_IRQn = -1, /*!< 15 System Tick Timer */ /* --------------------------- LPC18xx/43xx Specific Interrupt Numbers ------------------------------- */ DAC_IRQn = 0,/*!< 0 DAC */ RESERVED0_IRQn = 1, DMA_IRQn = 2,/*!< 2 DMA */ RESERVED1_IRQn = 3,/*!< 3 EZH/EDM */ RESERVED2_IRQn = 4, ETHERNET_IRQn = 5,/*!< 5 ETHERNET */ SDIO_IRQn = 6,/*!< 6 SDIO */ LCD_IRQn = 7,/*!< 7 LCD */ USB0_IRQn = 8,/*!< 8 USB0 */ USB1_IRQn = 9,/*!< 9 USB1 */ SCT_IRQn = 10,/*!< 10 SCT */ RITIMER_IRQn = 11,/*!< 11 RITIMER */ TIMER0_IRQn = 12,/*!< 12 TIMER0 */ TIMER1_IRQn = 13,/*!< 13 TIMER1 */ TIMER2_IRQn = 14,/*!< 14 TIMER2 */ TIMER3_IRQn = 15,/*!< 15 TIMER3 */ MCPWM_IRQn = 16,/*!< 16 MCPWM */ ADC0_IRQn = 17,/*!< 17 ADC0 */ I2C0_IRQn = 18,/*!< 18 I2C0 */ I2C1_IRQn = 19,/*!< 19 I2C1 */ RESERVED3_IRQn = 20, ADC1_IRQn = 21,/*!< 21 ADC1 */ SSP0_IRQn = 22,/*!< 22 SSP0 */ SSP1_IRQn = 23,/*!< 23 SSP1 */ USART0_IRQn = 24,/*!< 24 USART0 */ UART1_IRQn = 25,/*!< 25 UART1 */ USART2_IRQn = 26,/*!< 26 USART2 */ USART3_IRQn = 27,/*!< 27 USART3 */ I2S0_IRQn = 28,/*!< 28 I2S0 */ I2S1_IRQn = 29,/*!< 29 I2S1 */ RESERVED4_IRQn = 30, RESERVED5_IRQn = 31, PIN_INT0_IRQn = 32,/*!< 32 PIN_INT0 */ PIN_INT1_IRQn = 33,/*!< 33 PIN_INT1 */ PIN_INT2_IRQn = 34,/*!< 34 PIN_INT2 */ PIN_INT3_IRQn = 35,/*!< 35 PIN_INT3 */ PIN_INT4_IRQn = 36,/*!< 36 PIN_INT4 */ PIN_INT5_IRQn = 37,/*!< 37 PIN_INT5 */ PIN_INT6_IRQn = 38,/*!< 38 PIN_INT6 */ PIN_INT7_IRQn = 39,/*!< 39 PIN_INT7 */ GINT0_IRQn = 40,/*!< 40 GINT0 */ GINT1_IRQn = 41,/*!< 41 GINT1 */ EVENTROUTER_IRQn = 42,/*!< 42 EVENTROUTER */ C_CAN1_IRQn = 43,/*!< 43 C_CAN1 */ RESERVED6_IRQn = 44, RESERVED7_IRQn = 45,/*!< */ ATIMER_IRQn = 46,/*!< 46 ATIMER */ RTC_IRQn = 47,/*!< 47 RTC */ RESERVED8_IRQn = 48, WWDT_IRQn = 49,/*!< 49 WWDT */ RESERVED9_IRQn = 50, C_CAN0_IRQn = 51,/*!< 51 C_CAN0 */ QEI_IRQn = 52 /*!< 52 QEI */ } LPC18XX_IRQn_Type; /** * @} */ typedef LPC18XX_IRQn_Type IRQn_Type; /* Cortex-M3 processor and core peripherals */ #include "core_cm3.h" /** * @} */ #ifdef __cplusplus } #endif #endif /* ifndef __CMSIS_18XX_H_ */ cpputest-3.7.2/platforms_startup/armcc/LPC1833/core_cm3.h000644 000765 000024 00000271475 12521603460 024021 0ustar00basvoddestaff000000 000000 /**************************************************************************//** * @file core_cm3.h * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File * @version V3.20 * @date 25. February 2013 * * @note * ******************************************************************************/ /* Copyright (c) 2009 - 2013 ARM LIMITED All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of ARM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------*/ #ifndef __CORE_CM3_H_GENERIC #define __CORE_CM3_H_GENERIC #ifdef __cplusplus extern "C" { #endif /** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions CMSIS violates the following MISRA-C:2004 rules: \li Required Rule 8.5, object/function definition in header file.
Function definitions in header files are used to allow 'inlining'. \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
Unions are used for effective representation of core registers. \li Advisory Rule 19.7, Function-like macro defined.
Function-like macros are used to allow more efficient code. */ /******************************************************************************* * CMSIS definitions ******************************************************************************/ /** \ingroup Cortex_M3 @{ */ /* CMSIS CM3 definitions */ #define __CM3_CMSIS_VERSION_MAIN (0x03) /*!< [31:16] CMSIS HAL main version */ #define __CM3_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */ #define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | \ __CM3_CMSIS_VERSION_SUB ) /*!< CMSIS HAL version number */ #define __CORTEX_M (0x03) /*!< Cortex-M Core */ /** __FPU_USED indicates whether an FPU is used or not. This core does not support an FPU at all */ #define __FPU_USED 0 #include /* standard types definitions */ #include "core_cmInstr.h" /* Core Instruction Access */ #include "core_cmFunc.h" /* Core Function Access */ #endif /* __CORE_CM3_H_GENERIC */ #ifndef __CMSIS_GENERIC #ifndef __CORE_CM3_H_DEPENDANT #define __CORE_CM3_H_DEPENDANT /* IO definitions (access restrictions to peripheral registers) */ /** \defgroup CMSIS_glob_defs CMSIS Global Defines IO Type Qualifiers are used \li to specify the access to peripheral variables. \li for automatic generation of peripheral register debug information. */ #ifdef __cplusplus #define __I volatile /*!< Defines 'read only' permissions */ #else #define __I volatile const /*!< Defines 'read only' permissions */ #endif #define __O volatile /*!< Defines 'write only' permissions */ #define __IO volatile /*!< Defines 'read / write' permissions */ /*@} end of group Cortex_M3 */ /******************************************************************************* * Register Abstraction Core Register contain: - Core Register - Core NVIC Register - Core SCB Register - Core SysTick Register - Core Debug Register - Core MPU Register ******************************************************************************/ /** \defgroup CMSIS_core_register Defines and Type Definitions \brief Type definitions and defines for Cortex-M processor based devices. */ /** \ingroup CMSIS_core_register \defgroup CMSIS_CORE Status and Control Registers \brief Core Register type definitions. @{ */ /** \brief Union type to access the Application Program Status Register (APSR). */ typedef union { struct { #if (__CORTEX_M != 0x04) uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ #else uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ #endif uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ uint32_t C:1; /*!< bit: 29 Carry condition code flag */ uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ uint32_t N:1; /*!< bit: 31 Negative condition code flag */ } b; /*!< Structure used for bit access */ uint32_t w; /*!< Type used for word access */ } APSR_Type; /** \brief Union type to access the Interrupt Program Status Register (IPSR). */ typedef union { struct { uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ } b; /*!< Structure used for bit access */ uint32_t w; /*!< Type used for word access */ } IPSR_Type; /** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). */ typedef union { struct { uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ #if (__CORTEX_M != 0x04) uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ #else uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ #endif uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ uint32_t C:1; /*!< bit: 29 Carry condition code flag */ uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ uint32_t N:1; /*!< bit: 31 Negative condition code flag */ } b; /*!< Structure used for bit access */ uint32_t w; /*!< Type used for word access */ } xPSR_Type; /** \brief Union type to access the Control Registers (CONTROL). */ typedef union { struct { uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ } b; /*!< Structure used for bit access */ uint32_t w; /*!< Type used for word access */ } CONTROL_Type; /*@} end of group CMSIS_CORE */ /** \ingroup CMSIS_core_register \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) \brief Type definitions for the NVIC Registers @{ */ /** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). */ typedef struct { __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ uint32_t RESERVED0[24]; __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ uint32_t RSERVED1[24]; __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ uint32_t RESERVED2[24]; __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ uint32_t RESERVED3[24]; __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ uint32_t RESERVED4[56]; __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ uint32_t RESERVED5[644]; __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ } NVIC_Type; /* Software Triggered Interrupt Register Definitions */ #define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ #define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ /*@} end of group CMSIS_NVIC */ /** \ingroup CMSIS_core_register \defgroup CMSIS_SCB System Control Block (SCB) \brief Type definitions for the System Control Block Registers @{ */ /** \brief Structure type to access the System Control Block (SCB). */ typedef struct { __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ uint32_t RESERVED0[5]; __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ } SCB_Type; /* SCB CPUID Register Definitions */ #define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ #define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ #define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ #define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ #define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ #define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ #define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ #define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ #define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ #define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ /* SCB Interrupt Control State Register Definitions */ #define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ #define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ #define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ #define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ #define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ #define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ #define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ #define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ #define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ #define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ #define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ #define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ #define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ #define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ #define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ #define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ #define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ #define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ #define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ #define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ /* SCB Vector Table Offset Register Definitions */ #if (__CM3_REV < 0x0201) /* core r2p1 */ #define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ #define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ #define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ #define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ #else #define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ #define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ #endif /* SCB Application Interrupt and Reset Control Register Definitions */ #define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ #define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ #define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ #define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ #define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ #define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ #define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ #define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ #define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ #define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ #define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ #define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ #define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ #define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ /* SCB System Control Register Definitions */ #define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ #define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ #define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ #define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ #define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ #define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ /* SCB Configuration Control Register Definitions */ #define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ #define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ #define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ #define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ #define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ #define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ #define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ #define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ #define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ #define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ #define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ #define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ /* SCB System Handler Control and State Register Definitions */ #define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ #define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ #define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ #define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ #define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ #define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ #define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ #define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ #define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ #define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ #define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ #define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ #define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ #define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ #define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ #define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ #define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ #define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ #define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ #define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ #define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ #define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ #define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ #define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ #define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ #define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ #define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ #define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ /* SCB Configurable Fault Status Registers Definitions */ #define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ #define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ #define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ #define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ #define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ #define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ /* SCB Hard Fault Status Registers Definitions */ #define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ #define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ #define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ #define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ #define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ #define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ /* SCB Debug Fault Status Register Definitions */ #define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ #define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ #define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ #define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ #define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ #define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ #define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ #define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ #define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ #define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ /*@} end of group CMSIS_SCB */ /** \ingroup CMSIS_core_register \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) \brief Type definitions for the System Control and ID Register not in the SCB @{ */ /** \brief Structure type to access the System Control and ID Register not in the SCB. */ typedef struct { uint32_t RESERVED0[1]; __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ #if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ #else uint32_t RESERVED1[1]; #endif } SCnSCB_Type; /* Interrupt Controller Type Register Definitions */ #define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ #define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ /* Auxiliary Control Register Definitions */ #define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ #define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ #define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ #define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ #define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ #define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ /*@} end of group CMSIS_SCnotSCB */ /** \ingroup CMSIS_core_register \defgroup CMSIS_SysTick System Tick Timer (SysTick) \brief Type definitions for the System Timer Registers. @{ */ /** \brief Structure type to access the System Timer (SysTick). */ typedef struct { __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ } SysTick_Type; /* SysTick Control / Status Register Definitions */ #define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ #define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ #define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ #define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ #define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ #define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ #define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ #define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ /* SysTick Reload Register Definitions */ #define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ #define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ /* SysTick Current Register Definitions */ #define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ #define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ /* SysTick Calibration Register Definitions */ #define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ #define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ #define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ #define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ #define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ #define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ /*@} end of group CMSIS_SysTick */ /** \ingroup CMSIS_core_register \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) \brief Type definitions for the Instrumentation Trace Macrocell (ITM) @{ */ /** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). */ typedef struct { __O union { __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ uint32_t RESERVED0[864]; __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ uint32_t RESERVED1[15]; __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ uint32_t RESERVED2[15]; __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ uint32_t RESERVED3[29]; __O uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ __I uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ __IO uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ uint32_t RESERVED4[43]; __O uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ __I uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ uint32_t RESERVED5[6]; __I uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ __I uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ __I uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ __I uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ __I uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ __I uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ __I uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ __I uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ __I uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ __I uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ __I uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ __I uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ } ITM_Type; /* ITM Trace Privilege Register Definitions */ #define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ #define ITM_TPR_PRIVMASK_Msk (0xFUL << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ /* ITM Trace Control Register Definitions */ #define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ #define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ #define ITM_TCR_TraceBusID_Pos 16 /*!< ITM TCR: ATBID Position */ #define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ #define ITM_TCR_GTSFREQ_Pos 10 /*!< ITM TCR: Global timestamp frequency Position */ #define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ #define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ #define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ #define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ #define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ #define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ #define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ #define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ #define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ #define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ #define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ #define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ #define ITM_TCR_ITMENA_Msk (1UL << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ /* ITM Integration Write Register Definitions */ #define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ #define ITM_IWR_ATVALIDM_Msk (1UL << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ /* ITM Integration Read Register Definitions */ #define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ #define ITM_IRR_ATREADYM_Msk (1UL << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ /* ITM Integration Mode Control Register Definitions */ #define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ #define ITM_IMCR_INTEGRATION_Msk (1UL << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ /* ITM Lock Status Register Definitions */ #define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ #define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ #define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ #define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ #define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ #define ITM_LSR_Present_Msk (1UL << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ /*@}*/ /* end of group CMSIS_ITM */ /** \ingroup CMSIS_core_register \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) \brief Type definitions for the Data Watchpoint and Trace (DWT) @{ */ /** \brief Structure type to access the Data Watchpoint and Trace Register (DWT). */ typedef struct { __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ __IO uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ __IO uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ __IO uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ __IO uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ __IO uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ __IO uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ __I uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ __IO uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ __IO uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ __IO uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ uint32_t RESERVED0[1]; __IO uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ __IO uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ __IO uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ uint32_t RESERVED1[1]; __IO uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ __IO uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ __IO uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ uint32_t RESERVED2[1]; __IO uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ __IO uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ __IO uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ } DWT_Type; /* DWT Control Register Definitions */ #define DWT_CTRL_NUMCOMP_Pos 28 /*!< DWT CTRL: NUMCOMP Position */ #define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ #define DWT_CTRL_NOTRCPKT_Pos 27 /*!< DWT CTRL: NOTRCPKT Position */ #define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ #define DWT_CTRL_NOEXTTRIG_Pos 26 /*!< DWT CTRL: NOEXTTRIG Position */ #define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ #define DWT_CTRL_NOCYCCNT_Pos 25 /*!< DWT CTRL: NOCYCCNT Position */ #define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ #define DWT_CTRL_NOPRFCNT_Pos 24 /*!< DWT CTRL: NOPRFCNT Position */ #define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ #define DWT_CTRL_CYCEVTENA_Pos 22 /*!< DWT CTRL: CYCEVTENA Position */ #define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ #define DWT_CTRL_FOLDEVTENA_Pos 21 /*!< DWT CTRL: FOLDEVTENA Position */ #define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ #define DWT_CTRL_LSUEVTENA_Pos 20 /*!< DWT CTRL: LSUEVTENA Position */ #define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ #define DWT_CTRL_SLEEPEVTENA_Pos 19 /*!< DWT CTRL: SLEEPEVTENA Position */ #define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ #define DWT_CTRL_EXCEVTENA_Pos 18 /*!< DWT CTRL: EXCEVTENA Position */ #define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ #define DWT_CTRL_CPIEVTENA_Pos 17 /*!< DWT CTRL: CPIEVTENA Position */ #define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ #define DWT_CTRL_EXCTRCENA_Pos 16 /*!< DWT CTRL: EXCTRCENA Position */ #define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ #define DWT_CTRL_PCSAMPLENA_Pos 12 /*!< DWT CTRL: PCSAMPLENA Position */ #define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ #define DWT_CTRL_SYNCTAP_Pos 10 /*!< DWT CTRL: SYNCTAP Position */ #define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ #define DWT_CTRL_CYCTAP_Pos 9 /*!< DWT CTRL: CYCTAP Position */ #define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ #define DWT_CTRL_POSTINIT_Pos 5 /*!< DWT CTRL: POSTINIT Position */ #define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ #define DWT_CTRL_POSTPRESET_Pos 1 /*!< DWT CTRL: POSTPRESET Position */ #define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ #define DWT_CTRL_CYCCNTENA_Pos 0 /*!< DWT CTRL: CYCCNTENA Position */ #define DWT_CTRL_CYCCNTENA_Msk (0x1UL << DWT_CTRL_CYCCNTENA_Pos) /*!< DWT CTRL: CYCCNTENA Mask */ /* DWT CPI Count Register Definitions */ #define DWT_CPICNT_CPICNT_Pos 0 /*!< DWT CPICNT: CPICNT Position */ #define DWT_CPICNT_CPICNT_Msk (0xFFUL << DWT_CPICNT_CPICNT_Pos) /*!< DWT CPICNT: CPICNT Mask */ /* DWT Exception Overhead Count Register Definitions */ #define DWT_EXCCNT_EXCCNT_Pos 0 /*!< DWT EXCCNT: EXCCNT Position */ #define DWT_EXCCNT_EXCCNT_Msk (0xFFUL << DWT_EXCCNT_EXCCNT_Pos) /*!< DWT EXCCNT: EXCCNT Mask */ /* DWT Sleep Count Register Definitions */ #define DWT_SLEEPCNT_SLEEPCNT_Pos 0 /*!< DWT SLEEPCNT: SLEEPCNT Position */ #define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ /* DWT LSU Count Register Definitions */ #define DWT_LSUCNT_LSUCNT_Pos 0 /*!< DWT LSUCNT: LSUCNT Position */ #define DWT_LSUCNT_LSUCNT_Msk (0xFFUL << DWT_LSUCNT_LSUCNT_Pos) /*!< DWT LSUCNT: LSUCNT Mask */ /* DWT Folded-instruction Count Register Definitions */ #define DWT_FOLDCNT_FOLDCNT_Pos 0 /*!< DWT FOLDCNT: FOLDCNT Position */ #define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos) /*!< DWT FOLDCNT: FOLDCNT Mask */ /* DWT Comparator Mask Register Definitions */ #define DWT_MASK_MASK_Pos 0 /*!< DWT MASK: MASK Position */ #define DWT_MASK_MASK_Msk (0x1FUL << DWT_MASK_MASK_Pos) /*!< DWT MASK: MASK Mask */ /* DWT Comparator Function Register Definitions */ #define DWT_FUNCTION_MATCHED_Pos 24 /*!< DWT FUNCTION: MATCHED Position */ #define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ #define DWT_FUNCTION_DATAVADDR1_Pos 16 /*!< DWT FUNCTION: DATAVADDR1 Position */ #define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ #define DWT_FUNCTION_DATAVADDR0_Pos 12 /*!< DWT FUNCTION: DATAVADDR0 Position */ #define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ #define DWT_FUNCTION_DATAVSIZE_Pos 10 /*!< DWT FUNCTION: DATAVSIZE Position */ #define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ #define DWT_FUNCTION_LNK1ENA_Pos 9 /*!< DWT FUNCTION: LNK1ENA Position */ #define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ #define DWT_FUNCTION_DATAVMATCH_Pos 8 /*!< DWT FUNCTION: DATAVMATCH Position */ #define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ #define DWT_FUNCTION_CYCMATCH_Pos 7 /*!< DWT FUNCTION: CYCMATCH Position */ #define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ #define DWT_FUNCTION_EMITRANGE_Pos 5 /*!< DWT FUNCTION: EMITRANGE Position */ #define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ #define DWT_FUNCTION_FUNCTION_Pos 0 /*!< DWT FUNCTION: FUNCTION Position */ #define DWT_FUNCTION_FUNCTION_Msk (0xFUL << DWT_FUNCTION_FUNCTION_Pos) /*!< DWT FUNCTION: FUNCTION Mask */ /*@}*/ /* end of group CMSIS_DWT */ /** \ingroup CMSIS_core_register \defgroup CMSIS_TPI Trace Port Interface (TPI) \brief Type definitions for the Trace Port Interface (TPI) @{ */ /** \brief Structure type to access the Trace Port Interface Register (TPI). */ typedef struct { __IO uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ __IO uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ uint32_t RESERVED0[2]; __IO uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ uint32_t RESERVED1[55]; __IO uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ uint32_t RESERVED2[131]; __I uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ __IO uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ __I uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ uint32_t RESERVED3[759]; __I uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER */ __I uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ __I uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ uint32_t RESERVED4[1]; __I uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ __I uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ __IO uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ uint32_t RESERVED5[39]; __IO uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ __IO uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ uint32_t RESERVED7[8]; __I uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ __I uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ } TPI_Type; /* TPI Asynchronous Clock Prescaler Register Definitions */ #define TPI_ACPR_PRESCALER_Pos 0 /*!< TPI ACPR: PRESCALER Position */ #define TPI_ACPR_PRESCALER_Msk (0x1FFFUL << TPI_ACPR_PRESCALER_Pos) /*!< TPI ACPR: PRESCALER Mask */ /* TPI Selected Pin Protocol Register Definitions */ #define TPI_SPPR_TXMODE_Pos 0 /*!< TPI SPPR: TXMODE Position */ #define TPI_SPPR_TXMODE_Msk (0x3UL << TPI_SPPR_TXMODE_Pos) /*!< TPI SPPR: TXMODE Mask */ /* TPI Formatter and Flush Status Register Definitions */ #define TPI_FFSR_FtNonStop_Pos 3 /*!< TPI FFSR: FtNonStop Position */ #define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ #define TPI_FFSR_TCPresent_Pos 2 /*!< TPI FFSR: TCPresent Position */ #define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ #define TPI_FFSR_FtStopped_Pos 1 /*!< TPI FFSR: FtStopped Position */ #define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ #define TPI_FFSR_FlInProg_Pos 0 /*!< TPI FFSR: FlInProg Position */ #define TPI_FFSR_FlInProg_Msk (0x1UL << TPI_FFSR_FlInProg_Pos) /*!< TPI FFSR: FlInProg Mask */ /* TPI Formatter and Flush Control Register Definitions */ #define TPI_FFCR_TrigIn_Pos 8 /*!< TPI FFCR: TrigIn Position */ #define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ #define TPI_FFCR_EnFCont_Pos 1 /*!< TPI FFCR: EnFCont Position */ #define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ /* TPI TRIGGER Register Definitions */ #define TPI_TRIGGER_TRIGGER_Pos 0 /*!< TPI TRIGGER: TRIGGER Position */ #define TPI_TRIGGER_TRIGGER_Msk (0x1UL << TPI_TRIGGER_TRIGGER_Pos) /*!< TPI TRIGGER: TRIGGER Mask */ /* TPI Integration ETM Data Register Definitions (FIFO0) */ #define TPI_FIFO0_ITM_ATVALID_Pos 29 /*!< TPI FIFO0: ITM_ATVALID Position */ #define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ #define TPI_FIFO0_ITM_bytecount_Pos 27 /*!< TPI FIFO0: ITM_bytecount Position */ #define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ #define TPI_FIFO0_ETM_ATVALID_Pos 26 /*!< TPI FIFO0: ETM_ATVALID Position */ #define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ #define TPI_FIFO0_ETM_bytecount_Pos 24 /*!< TPI FIFO0: ETM_bytecount Position */ #define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ #define TPI_FIFO0_ETM2_Pos 16 /*!< TPI FIFO0: ETM2 Position */ #define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ #define TPI_FIFO0_ETM1_Pos 8 /*!< TPI FIFO0: ETM1 Position */ #define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ #define TPI_FIFO0_ETM0_Pos 0 /*!< TPI FIFO0: ETM0 Position */ #define TPI_FIFO0_ETM0_Msk (0xFFUL << TPI_FIFO0_ETM0_Pos) /*!< TPI FIFO0: ETM0 Mask */ /* TPI ITATBCTR2 Register Definitions */ #define TPI_ITATBCTR2_ATREADY_Pos 0 /*!< TPI ITATBCTR2: ATREADY Position */ #define TPI_ITATBCTR2_ATREADY_Msk (0x1UL << TPI_ITATBCTR2_ATREADY_Pos) /*!< TPI ITATBCTR2: ATREADY Mask */ /* TPI Integration ITM Data Register Definitions (FIFO1) */ #define TPI_FIFO1_ITM_ATVALID_Pos 29 /*!< TPI FIFO1: ITM_ATVALID Position */ #define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ #define TPI_FIFO1_ITM_bytecount_Pos 27 /*!< TPI FIFO1: ITM_bytecount Position */ #define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ #define TPI_FIFO1_ETM_ATVALID_Pos 26 /*!< TPI FIFO1: ETM_ATVALID Position */ #define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ #define TPI_FIFO1_ETM_bytecount_Pos 24 /*!< TPI FIFO1: ETM_bytecount Position */ #define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ #define TPI_FIFO1_ITM2_Pos 16 /*!< TPI FIFO1: ITM2 Position */ #define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ #define TPI_FIFO1_ITM1_Pos 8 /*!< TPI FIFO1: ITM1 Position */ #define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ #define TPI_FIFO1_ITM0_Pos 0 /*!< TPI FIFO1: ITM0 Position */ #define TPI_FIFO1_ITM0_Msk (0xFFUL << TPI_FIFO1_ITM0_Pos) /*!< TPI FIFO1: ITM0 Mask */ /* TPI ITATBCTR0 Register Definitions */ #define TPI_ITATBCTR0_ATREADY_Pos 0 /*!< TPI ITATBCTR0: ATREADY Position */ #define TPI_ITATBCTR0_ATREADY_Msk (0x1UL << TPI_ITATBCTR0_ATREADY_Pos) /*!< TPI ITATBCTR0: ATREADY Mask */ /* TPI Integration Mode Control Register Definitions */ #define TPI_ITCTRL_Mode_Pos 0 /*!< TPI ITCTRL: Mode Position */ #define TPI_ITCTRL_Mode_Msk (0x1UL << TPI_ITCTRL_Mode_Pos) /*!< TPI ITCTRL: Mode Mask */ /* TPI DEVID Register Definitions */ #define TPI_DEVID_NRZVALID_Pos 11 /*!< TPI DEVID: NRZVALID Position */ #define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ #define TPI_DEVID_MANCVALID_Pos 10 /*!< TPI DEVID: MANCVALID Position */ #define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ #define TPI_DEVID_PTINVALID_Pos 9 /*!< TPI DEVID: PTINVALID Position */ #define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ #define TPI_DEVID_MinBufSz_Pos 6 /*!< TPI DEVID: MinBufSz Position */ #define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ #define TPI_DEVID_AsynClkIn_Pos 5 /*!< TPI DEVID: AsynClkIn Position */ #define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ #define TPI_DEVID_NrTraceInput_Pos 0 /*!< TPI DEVID: NrTraceInput Position */ #define TPI_DEVID_NrTraceInput_Msk (0x1FUL << TPI_DEVID_NrTraceInput_Pos) /*!< TPI DEVID: NrTraceInput Mask */ /* TPI DEVTYPE Register Definitions */ #define TPI_DEVTYPE_SubType_Pos 0 /*!< TPI DEVTYPE: SubType Position */ #define TPI_DEVTYPE_SubType_Msk (0xFUL << TPI_DEVTYPE_SubType_Pos) /*!< TPI DEVTYPE: SubType Mask */ #define TPI_DEVTYPE_MajorType_Pos 4 /*!< TPI DEVTYPE: MajorType Position */ #define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ /*@}*/ /* end of group CMSIS_TPI */ #if (__MPU_PRESENT == 1) /** \ingroup CMSIS_core_register \defgroup CMSIS_MPU Memory Protection Unit (MPU) \brief Type definitions for the Memory Protection Unit (MPU) @{ */ /** \brief Structure type to access the Memory Protection Unit (MPU). */ typedef struct { __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ __IO uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ __IO uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ __IO uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ __IO uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ __IO uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ __IO uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ } MPU_Type; /* MPU Type Register */ #define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ #define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ #define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ #define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ #define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ #define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ /* MPU Control Register */ #define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ #define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ #define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ #define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ #define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ #define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ /* MPU Region Number Register */ #define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ #define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ /* MPU Region Base Address Register */ #define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ #define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ #define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ #define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ #define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ #define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ /* MPU Region Attribute and Size Register */ #define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ #define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ #define MPU_RASR_XN_Pos 28 /*!< MPU RASR: ATTRS.XN Position */ #define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ #define MPU_RASR_AP_Pos 24 /*!< MPU RASR: ATTRS.AP Position */ #define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ #define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: ATTRS.TEX Position */ #define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ #define MPU_RASR_S_Pos 18 /*!< MPU RASR: ATTRS.S Position */ #define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ #define MPU_RASR_C_Pos 17 /*!< MPU RASR: ATTRS.C Position */ #define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ #define MPU_RASR_B_Pos 16 /*!< MPU RASR: ATTRS.B Position */ #define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ #define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ #define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ #define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ #define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ #define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ #define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ /*@} end of group CMSIS_MPU */ #endif /** \ingroup CMSIS_core_register \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) \brief Type definitions for the Core Debug Registers @{ */ /** \brief Structure type to access the Core Debug Register (CoreDebug). */ typedef struct { __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ } CoreDebug_Type; /* Debug Halting Control and Status Register */ #define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ #define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ #define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ #define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ #define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ #define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ #define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ #define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ #define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ #define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ #define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ #define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ #define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ #define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ #define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ #define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ #define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ #define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ #define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ #define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ #define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ #define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ #define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ #define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ /* Debug Core Register Selector Register */ #define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ #define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ #define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ #define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ /* Debug Exception and Monitor Control Register */ #define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ #define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ #define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ #define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ #define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ #define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ #define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ #define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ #define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ #define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ #define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ #define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ #define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ #define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ #define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ #define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ #define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ #define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ #define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ #define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ #define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ #define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ #define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ #define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ #define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ #define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ /*@} end of group CMSIS_CoreDebug */ /** \ingroup CMSIS_core_register \defgroup CMSIS_core_base Core Definitions \brief Definitions for base addresses, unions, and structures. @{ */ /* Memory mapping of Cortex-M3 Hardware */ #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ #if (__MPU_PRESENT == 1) #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ #endif /*@} */ /******************************************************************************* * Hardware Abstraction Layer Core Function Interface contains: - Core NVIC Functions - Core SysTick Functions - Core Debug Functions - Core Register Access Functions ******************************************************************************/ /** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference */ /* ########################## NVIC functions #################################### */ /** \ingroup CMSIS_Core_FunctionInterface \defgroup CMSIS_Core_NVICFunctions NVIC Functions \brief Functions that manage interrupts and exceptions via the NVIC. @{ */ /** \brief Set Priority Grouping The function sets the priority grouping field using the required unlock sequence. The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. \param [in] PriorityGroup Priority grouping field. */ static inline void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { uint32_t reg_value; uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ reg_value = SCB->AIRCR; /* read old register configuration */ reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ reg_value = (reg_value | ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ SCB->AIRCR = reg_value; } /** \brief Get Priority Grouping The function reads the priority grouping field from the NVIC Interrupt Controller. \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). */ static inline uint32_t NVIC_GetPriorityGrouping(void) { return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ } /** \brief Enable External Interrupt The function enables a device-specific interrupt in the NVIC interrupt controller. \param [in] IRQn External interrupt number. Value cannot be negative. */ static inline void NVIC_EnableIRQ(IRQn_Type IRQn) { NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ } /** \brief Disable External Interrupt The function disables a device-specific interrupt in the NVIC interrupt controller. \param [in] IRQn External interrupt number. Value cannot be negative. */ static inline void NVIC_DisableIRQ(IRQn_Type IRQn) { NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ } /** \brief Get Pending Interrupt The function reads the pending register in the NVIC and returns the pending bit for the specified interrupt. \param [in] IRQn Interrupt number. \return 0 Interrupt status is not pending. \return 1 Interrupt status is pending. */ static inline uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) { return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ } /** \brief Set Pending Interrupt The function sets the pending bit of an external interrupt. \param [in] IRQn Interrupt number. Value cannot be negative. */ static inline void NVIC_SetPendingIRQ(IRQn_Type IRQn) { NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ } /** \brief Clear Pending Interrupt The function clears the pending bit of an external interrupt. \param [in] IRQn External interrupt number. Value cannot be negative. */ static inline void NVIC_ClearPendingIRQ(IRQn_Type IRQn) { NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ } /** \brief Get Active Interrupt The function reads the active register in NVIC and returns the active bit. \param [in] IRQn Interrupt number. \return 0 Interrupt status is not active. \return 1 Interrupt status is active. */ static inline uint32_t NVIC_GetActive(IRQn_Type IRQn) { return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ } /** \brief Set Interrupt Priority The function sets the priority of an interrupt. \note The priority cannot be set for every core interrupt. \param [in] IRQn Interrupt number. \param [in] priority Priority to set. */ static inline void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) { if(IRQn < 0) { SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ else { NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ } /** \brief Get Interrupt Priority The function reads the priority of an interrupt. The interrupt number can be positive to specify an external (device specific) interrupt, or negative to specify an internal (core) interrupt. \param [in] IRQn Interrupt number. \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. */ static inline uint32_t NVIC_GetPriority(IRQn_Type IRQn) { if(IRQn < 0) { return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ else { return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ } /** \brief Encode Priority The function encodes the priority for an interrupt with the given priority group, preemptive priority value, and subpriority value. In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set. \param [in] PriorityGroup Used priority group. \param [in] PreemptPriority Preemptive priority value (starting from 0). \param [in] SubPriority Subpriority value (starting from 0). \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). */ static inline uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) { uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ uint32_t PreemptPriorityBits; uint32_t SubPriorityBits; PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; return ( ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | ((SubPriority & ((1 << (SubPriorityBits )) - 1))) ); } /** \brief Decode Priority The function decodes an interrupt priority value with a given priority group to preemptive priority value and subpriority value. In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). \param [in] PriorityGroup Used priority group. \param [out] pPreemptPriority Preemptive priority value (starting from 0). \param [out] pSubPriority Subpriority value (starting from 0). */ static inline void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) { uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ uint32_t PreemptPriorityBits; uint32_t SubPriorityBits; PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); } /** \brief System Reset The function initiates a system reset request to reset the MCU. */ static inline void NVIC_SystemReset(void) { __DSB(); /* Ensure all outstanding memory accesses included buffered write are completed before reset */ SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ __DSB(); /* Ensure completion of memory access */ while(1); /* wait until reset */ } /*@} end of CMSIS_Core_NVICFunctions */ /* ################################## SysTick function ############################################ */ /** \ingroup CMSIS_Core_FunctionInterface \defgroup CMSIS_Core_SysTickFunctions SysTick Functions \brief Functions that configure the System. @{ */ #if (__Vendor_SysTickConfig == 0) /** \brief System Tick Configuration The function initializes the System Timer and its interrupt, and starts the System Tick Timer. Counter is in free running mode to generate periodic interrupts. \param [in] ticks Number of ticks between two interrupts. \return 0 Function succeeded. \return 1 Function failed. \note When the variable __Vendor_SysTickConfig is set to 1, then the function SysTick_Config is not included. In this case, the file device.h must contain a vendor-specific implementation of this function. */ static inline uint32_t SysTick_Config(uint32_t ticks) { if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ SysTick->LOAD = ticks - 1; /* set reload register */ NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ SysTick->VAL = 0; /* Load the SysTick Counter Value */ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0); /* Function successful */ } #endif /*@} end of CMSIS_Core_SysTickFunctions */ /* ##################################### Debug In/Output function ########################################### */ /** \ingroup CMSIS_Core_FunctionInterface \defgroup CMSIS_core_DebugFunctions ITM Functions \brief Functions that access the ITM debug interface. @{ */ extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ #define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ /** \brief ITM Send Character The function transmits a character via the ITM channel 0, and \li Just returns when no debugger is connected that has booked the output. \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. \param [in] ch Character to transmit. \returns Character to transmit. */ static inline uint32_t ITM_SendChar (uint32_t ch) { if ((ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ (ITM->TER & (1UL << 0) ) ) /* ITM Port #0 enabled */ { while (ITM->PORT[0].u32 == 0) __nop(); ITM->PORT[0].u8 = (uint8_t) ch; } return (ch); } /** \brief ITM Receive Character The function inputs a character via the external variable \ref ITM_RxBuffer. \return Received character. \return -1 No character pending. */ static inline int32_t ITM_ReceiveChar (void) { int32_t ch = -1; /* no character available */ if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { ch = ITM_RxBuffer; ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ } return (ch); } /** \brief ITM Check Character The function checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. \return 0 No character available. \return 1 Character available. */ static inline int32_t ITM_CheckChar (void) { if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { return (0); /* no character available */ } else { return (1); /* character available */ } } /*@} end of CMSIS_core_DebugFunctions */ #endif /* __CORE_CM3_H_DEPENDANT */ #ifdef __cplusplus } #endif #endif /* __CMSIS_GENERIC */ cpputest-3.7.2/platforms_startup/armcc/LPC1833/core_cmFunc.h000644 000765 000024 00000020234 12521603460 024533 0ustar00basvoddestaff000000 000000 /**************************************************************************//** * @file core_cmFunc.h * @brief CMSIS Cortex-M Core Function Access Header File * @version V3.20 * @date 25. February 2013 * * @note * ******************************************************************************/ /* Copyright (c) 2009 - 2013 ARM LIMITED All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of ARM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------*/ #ifndef __CORE_CMFUNC_H #define __CORE_CMFUNC_H /* ########################### Core Function Access ########################### */ /** \ingroup CMSIS_Core_FunctionInterface \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions @{ */ /* ARM armcc specific functions */ #if (__ARMCC_VERSION < 400677) #error "Please use ARM Compiler Toolchain V4.0.677 or later!" #endif /* intrinsic void __enable_irq(); */ /* intrinsic void __disable_irq(); */ /** \brief Get Control Register This function returns the content of the Control Register. \return Control Register value */ static inline uint32_t __get_CONTROL(void) { register uint32_t __regControl __asm("control"); return(__regControl); } /** \brief Set Control Register This function writes the given value to the Control Register. \param [in] control Control Register value to set */ static inline void __set_CONTROL(uint32_t control) { register uint32_t __regControl __asm("control"); __regControl = control; } /** \brief Get IPSR Register This function returns the content of the IPSR Register. \return IPSR Register value */ static inline uint32_t __get_IPSR(void) { register uint32_t __regIPSR __asm("ipsr"); return(__regIPSR); } /** \brief Get APSR Register This function returns the content of the APSR Register. \return APSR Register value */ static inline uint32_t __get_APSR(void) { register uint32_t __regAPSR __asm("apsr"); return(__regAPSR); } /** \brief Get xPSR Register This function returns the content of the xPSR Register. \return xPSR Register value */ static inline uint32_t __get_xPSR(void) { register uint32_t __regXPSR __asm("xpsr"); return(__regXPSR); } /** \brief Get Process Stack Pointer This function returns the current value of the Process Stack Pointer (PSP). \return PSP Register value */ static inline uint32_t __get_PSP(void) { register uint32_t __regProcessStackPointer __asm("psp"); return(__regProcessStackPointer); } /** \brief Set Process Stack Pointer This function assigns the given value to the Process Stack Pointer (PSP). \param [in] topOfProcStack Process Stack Pointer value to set */ static inline void __set_PSP(uint32_t topOfProcStack) { register uint32_t __regProcessStackPointer __asm("psp"); __regProcessStackPointer = topOfProcStack; } /** \brief Get Main Stack Pointer This function returns the current value of the Main Stack Pointer (MSP). \return MSP Register value */ static inline uint32_t __get_MSP(void) { register uint32_t __regMainStackPointer __asm("msp"); return(__regMainStackPointer); } /** \brief Set Main Stack Pointer This function assigns the given value to the Main Stack Pointer (MSP). \param [in] topOfMainStack Main Stack Pointer value to set */ static inline void __set_MSP(uint32_t topOfMainStack) { register uint32_t __regMainStackPointer __asm("msp"); __regMainStackPointer = topOfMainStack; } /** \brief Get Priority Mask This function returns the current state of the priority mask bit from the Priority Mask Register. \return Priority Mask value */ static inline uint32_t __get_PRIMASK(void) { register uint32_t __regPriMask __asm("primask"); return(__regPriMask); } /** \brief Set Priority Mask This function assigns the given value to the Priority Mask Register. \param [in] priMask Priority Mask */ static inline void __set_PRIMASK(uint32_t priMask) { register uint32_t __regPriMask __asm("primask"); __regPriMask = (priMask); } #if (__CORTEX_M >= 0x03) /** \brief Enable FIQ This function enables FIQ interrupts by clearing the F-bit in the CPSR. Can only be executed in Privileged modes. */ #define __enable_fault_irq __enable_fiq /** \brief Disable FIQ This function disables FIQ interrupts by setting the F-bit in the CPSR. Can only be executed in Privileged modes. */ #define __disable_fault_irq __disable_fiq /** \brief Get Base Priority This function returns the current value of the Base Priority register. \return Base Priority register value */ static inline uint32_t __get_BASEPRI(void) { register uint32_t __regBasePri __asm("basepri"); return(__regBasePri); } /** \brief Set Base Priority This function assigns the given value to the Base Priority register. \param [in] basePri Base Priority value to set */ static inline void __set_BASEPRI(uint32_t basePri) { register uint32_t __regBasePri __asm("basepri"); __regBasePri = (basePri & 0xff); } /** \brief Get Fault Mask This function returns the current value of the Fault Mask register. \return Fault Mask register value */ static inline uint32_t __get_FAULTMASK(void) { register uint32_t __regFaultMask __asm("faultmask"); return(__regFaultMask); } /** \brief Set Fault Mask This function assigns the given value to the Fault Mask register. \param [in] faultMask Fault Mask value to set */ static inline void __set_FAULTMASK(uint32_t faultMask) { register uint32_t __regFaultMask __asm("faultmask"); __regFaultMask = (faultMask & (uint32_t)1); } #endif /* (__CORTEX_M >= 0x03) */ #if (__CORTEX_M == 0x04) /** \brief Get FPSCR This function returns the current value of the Floating Point Status/Control register. \return Floating Point Status/Control register value */ static inline uint32_t __get_FPSCR(void) { #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) register uint32_t __regfpscr __asm("fpscr"); return(__regfpscr); #else return(0); #endif } /** \brief Set FPSCR This function assigns the given value to the Floating Point Status/Control register. \param [in] fpscr Floating Point Status/Control value to set */ static inline void __set_FPSCR(uint32_t fpscr) { #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) register uint32_t __regfpscr __asm("fpscr"); __regfpscr = (fpscr); #endif } #endif /* (__CORTEX_M == 0x04) */ /*@} end of CMSIS_Core_RegAccFunctions */ #endif /* __CORE_CMFUNC_H */ cpputest-3.7.2/platforms_startup/armcc/LPC1833/core_cmInstr.h000644 000765 000024 00000021434 12521603460 024742 0ustar00basvoddestaff000000 000000 /**************************************************************************//** * @file core_cmInstr.h * @brief CMSIS Cortex-M Core Instruction Access Header File * @version V3.20 * @date 05. March 2013 * * @note * ******************************************************************************/ /* Copyright (c) 2009 - 2013 ARM LIMITED All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of ARM nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------*/ #ifndef __CORE_CMINSTR_H #define __CORE_CMINSTR_H #pragma push #pragma diag_suppress 667 /* ########################## Core Instruction Access ######################### */ /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface Access to dedicated instructions @{ */ /* ARM armcc specific functions */ #if (__ARMCC_VERSION < 400677) #error "Please use ARM Compiler Toolchain V4.0.677 or later!" #endif /** \brief No Operation No Operation does nothing. This instruction can be used for code alignment purposes. */ #define __NOP __nop /** \brief Wait For Interrupt Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. */ #define __WFI __wfi /** \brief Wait For Event Wait For Event is a hint instruction that permits the processor to enter a low-power state until one of a number of events occurs. */ #define __WFE __wfe /** \brief Send Event Send Event is a hint instruction. It causes an event to be signaled to the CPU. */ #define __SEV __sev /** \brief Instruction Synchronization Barrier Instruction Synchronization Barrier flushes the pipeline in the processor, so that all instructions following the ISB are fetched from cache or memory, after the instruction has been completed. */ #define __ISB() __isb(0xF) /** \brief Data Synchronization Barrier This function acts as a special kind of Data Memory Barrier. It completes when all explicit memory accesses before this instruction complete. */ #define __DSB() __dsb(0xF) /** \brief Data Memory Barrier This function ensures the apparent order of the explicit memory operations before and after the instruction, without ensuring their completion. */ #define __DMB() __dmb(0xF) /** \brief Reverse byte order (32 bit) This function reverses the byte order in integer value. \param [in] value Value to reverse \return Reversed value */ #define __REV __rev /** \brief Reverse byte order (16 bit) This function reverses the byte order in two unsigned short values. \param [in] value Value to reverse \return Reversed value */ #ifndef __NO_EMBEDDED_ASM __attribute__((section(".rev16_text"))) static inline __asm uint32_t __REV16(uint32_t value) { rev16 r0, r0 bx lr } #endif /** \brief Reverse byte order in signed short value This function reverses the byte order in a signed short value with sign extension to integer. \param [in] value Value to reverse \return Reversed value */ #ifndef __NO_EMBEDDED_ASM __attribute__((section(".revsh_text"))) static inline __asm int32_t __REVSH(int32_t value) { revsh r0, r0 bx lr } #endif /** \brief Rotate Right in unsigned value (32 bit) This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. \param [in] value Value to rotate \param [in] value Number of Bits to rotate \return Rotated value */ #define __ROR __ror /** \brief Breakpoint This function causes the processor to enter Debug state. Debug tools can use this to investigate system state when the instruction at a particular address is reached. \param [in] value is ignored by the processor. If required, a debugger can use it to store additional information about the breakpoint. */ #define __BKPT(value) __breakpoint(value) #if (__CORTEX_M >= 0x03) /** \brief Reverse bit order of value This function reverses the bit order of the given value. \param [in] value Value to reverse \return Reversed value */ #define __RBIT __rbit /** \brief LDR Exclusive (8 bit) This function performs a exclusive LDR command for 8 bit value. \param [in] ptr Pointer to data \return value of type uint8_t at (*ptr) */ #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) /** \brief LDR Exclusive (16 bit) This function performs a exclusive LDR command for 16 bit values. \param [in] ptr Pointer to data \return value of type uint16_t at (*ptr) */ #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) /** \brief LDR Exclusive (32 bit) This function performs a exclusive LDR command for 32 bit values. \param [in] ptr Pointer to data \return value of type uint32_t at (*ptr) */ #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) /** \brief STR Exclusive (8 bit) This function performs a exclusive STR command for 8 bit values. \param [in] value Value to store \param [in] ptr Pointer to location \return 0 Function succeeded \return 1 Function failed */ #define __STREXB(value, ptr) __strex(value, ptr) /** \brief STR Exclusive (16 bit) This function performs a exclusive STR command for 16 bit values. \param [in] value Value to store \param [in] ptr Pointer to location \return 0 Function succeeded \return 1 Function failed */ #define __STREXH(value, ptr) __strex(value, ptr) /** \brief STR Exclusive (32 bit) This function performs a exclusive STR command for 32 bit values. \param [in] value Value to store \param [in] ptr Pointer to location \return 0 Function succeeded \return 1 Function failed */ #define __STREXW(value, ptr) __strex(value, ptr) /** \brief Remove the exclusive lock This function removes the exclusive lock which is created by LDREX. */ #define __CLREX __clrex /** \brief Signed Saturate This function saturates a signed value. \param [in] value Value to be saturated \param [in] sat Bit position to saturate to (1..32) \return Saturated value */ #define __SSAT __ssat /** \brief Unsigned Saturate This function saturates an unsigned value. \param [in] value Value to be saturated \param [in] sat Bit position to saturate to (0..31) \return Saturated value */ #define __USAT __usat /** \brief Count leading zeros This function counts the number of leading zeros of a data value. \param [in] value Value to count the leading zeros \return number of leading zeros in value */ #define __CLZ __clz #endif /* (__CORTEX_M >= 0x03) */ /*@}*/ /* end of group CMSIS_Core_InstructionInterface */ #pragma pop #endif /* __CORE_CMINSTR_H */ cpputest-3.7.2/platforms_startup/armcc/LPC1833/Makefile000644 000765 000024 00000007561 12521603460 023607 0ustar00basvoddestaff000000 000000 SHELL = cmd.exe CPU := Cortex-M3 CPU_MODE := thumb TARGET_PLATFORM :=armcc_$(CPU)_$(CPU_MODE) CPPUTEST_HOME := ../../.. # Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð° COMPONENT_NAME := Startup_LPC1833 # промежуточный каталог, где производитÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑ†Ð¸Ñ startup-файлов OBJS_DIR = objs # каталог Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¾Ð¹` LIB_DIR := $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) # каталог Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ SRC_DIRS := . # каталог Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ñ‡Ð½Ñ‹Ð¼Ð¸ файлами INCLUDE_DIRS := . # CYGWIN path CYGWIN :=C:/CYGWIN/bin MKDIR :=@$(CYGWIN)/mkdir RM :=@$(CYGWIN)/rm TOUCH :=@$(CYGWIN)/touch KEIL_DIR:=D:/Keil/ARM/ARMCC CC:=@$(KEIL_DIR)/bin/armcc.exe AS:=@$(KEIL_DIR)/bin/armasm.exe AR:=@$(KEIL_DIR)/bin/armar.exe # armcc system include path SYS_INCLUDE_DIRS :=$(KEIL_DIR)/include # добавление ÑиÑтемных заголовочных файлов Ð´Ð»Ñ Ñборки CRT библиотеки INCLUDE_DIRS +=$(SYS_INCLUDE_DIRS) CPUFLAGS :=--cpu=$(CPU) --apcs=/interwork DEPFLAGS =-M $(INCLUDES) --depend_format=unix_escaped --depend_single_line --no_depend_system_headers OPTFLAGS :=-O0 CCFLAGS =$(CPUFLAGS) \ $(OPTFLAGS) \ -c \ --debug \ $(INCLUDES) \ --$(CPU_MODE) \ --bss_threshold=0 \ --strict_warnings \ -D__CLK_TCK=1000 \ -DCGU_IRC_FREQ=12000000 \ ARFLAGS := --debug_symbols TARGET_LIB := \ $(LIB_DIR)/lib$(COMPONENT_NAME).a #Helper Functions get_src_from_dir = $(wildcard $1/*.c) $(wildcard $1/*.asm) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) __src_to = $(subst .asm,$1, $(subst .c,$1,$2)) src_to = $(addprefix $3/,$(call __src_to,$1,$2)) src_to_o = $(call src_to,.o,$1,$2) src_to_d = $(call src_to,.d,$1,$2) time = $(shell date +%s) delta_t = $(eval minus, $1, $2) debug_print_list = $(foreach word,$1,@echo " $(word)";) @echo # for building CRT library SRC := $(call get_src_from_dir_list, $(SRC_DIRS)) OBJ := $(call src_to_o,$(SRC),$(OBJS_DIR)) INCLUDES += $(foreach dir, $(INCLUDE_DIRS), -I$(dir)) DEP_FILES := $(call src_to_d, $(SRC), $(OBJS_DIR)) STUFF_TO_CLEAN := $(OBJ) $(DEP_FILES) #Don't create CRT dependencies when we're cleaning, for instance ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS)))) -include $(DEP_FILES) endif $(TARGET_LIB): $(OBJ) | $(LIB_DIR) $(AR) $(ARFLAGS) --create $@ $^ @echo Build CRT library done! .PHONY: crt crt: @echo @echo CRT =$(CRT) @echo SRC =$(SRC) @echo OBJ =$(OBJ) @echo INCLUDES =$(INCLUDES) @echo DEP_FILES =$(DEP_FILES) @echo STUFF_TO_CLEAN =$(STUFF_TO_CLEAN) @echo OBJS_DIR =$(OBJS_DIR) $(LIB_DIR) $(OBJS_DIR): @echo Updating directory $@ $(MKDIR) -p $@ # Создание файлов завиÑимоÑти Ð´Ð»Ñ .c файлов $(OBJS_DIR)/%.d: %.c | $(OBJS_DIR) @echo Compiling C file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) --c99 $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' # Создание файлов завиÑимоÑти Ð´Ð»Ñ .cpp файлов $(OBJS_DIR)/%.d: %.cpp | $(OBJS_DIR) @echo Compiling C file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' # Создание файлов завиÑимоÑти Ð´Ð»Ñ .asm файлов $(OBJS_DIR)/%.d: %.asm | $(OBJS_DIR) @echo Compiling ASM file $< for dependency. Out file $@. $(TOUCH) $@ # КомпилÑÑ†Ð¸Ñ .asm файла $(OBJS_DIR)/%.o: %.asm $(OBJS_DIR)/%.d @echo Assembling file $<. Out file $@ $(AS) $(CPUFLAGS) --keep --debug --predefine "NO_CRP SETL {TRUE}" $< -o $@ # КомпилÑÑ†Ð¸Ñ .c файла $(OBJS_DIR)/%.o: %.c $(OBJS_DIR)/%.d @echo Compiling C file $<. Out file $@ $(CC) $(CCFLAGS) --c99 $< -o $@ # КомпилÑÑ†Ð¸Ñ .cpp файла $(OBJS_DIR)/%.o: %.cpp $(OBJS_DIR)/%.d @echo Compiling C++ file $<. Out file $@ $(CC) $(CCFLAGS) $< -o $@ clean: @$(RM) -f $(STUFF_TO_CLEAN) all: $(TARGET_LIB) @echo Done! cpputest-3.7.2/platforms_startup/armcc/LPC1833/README000644 000765 000024 00000000574 12521603460 023024 0ustar00basvoddestaff000000 000000 Project for LPC1833 is based on LPCOpen. Unused functions is removed to make a small code instead of a fat one. Semihosting is in use. For time measurement, SystemTimer in Cortex-M3 core is used. Any pin is not initialized. Debug output is done using SWO (ITM channel 0). Working frequency is getting from Internal RC (12 MHz), so no PLL setup is used, no quartz is required. cpputest-3.7.2/platforms_startup/armcc/LPC1833/retarget.c000644 000765 000024 00000014406 12521603460 024124 0ustar00basvoddestaff000000 000000 /* * @brief IO redirection support * * This file adds re-direction support to the library for various * projects. It can be configured in one of 3 ways - no redirection, * redirection via a UART, or redirection via semihosting. If DEBUG * is not defined, all printf statements will do nothing with the * output being throw away. If DEBUG is defined, then the choice of * output is selected by the DEBUG_SEMIHOSTING define. If the * DEBUG_SEMIHOSTING is not defined, then output is redirected via * the UART. If DEBUG_SEMIHOSTING is defined, then output will be * attempted to be redirected via semihosting. If the UART method * is used, then the Board_UARTPutChar and Board_UARTGetChar * functions must be defined to be used by this driver and the UART * must already be initialized to the correct settings. * * @note * Copyright(C) NXP Semiconductors, 2012 * All rights reserved. * * @par * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * LPC products. This software is supplied "AS IS" without any warranties of * any kind, and NXP Semiconductors and its licensor disclaim any and * all warranties, express or implied, including all implied warranties of * merchantability, fitness for a particular purpose and non-infringement of * intellectual property rights. NXP Semiconductors assumes no responsibility * or liability for the use of the software, conveys no license or rights under any * patent, copyright, mask work right, or any other intellectual property rights in * or to any products. NXP Semiconductors reserves the right to make changes * in the software without notification. NXP Semiconductors also makes no * representation or warranty that such application will be suitable for the * specified use without further testing or modification. * * @par * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under NXP Semiconductors' and its * licensor's relevant copyrights in the software, without fee, provided that it * is used in conjunction with NXP Semiconductors microcontrollers. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. */ /* Keil (Realview) support */ #include #include #include #include #include "cmsis_18xx.h" #pragma import(__use_no_semihosting_swi) /* Standard IO device handles. */ const FILEHANDLE STDIN = 0x8001; const FILEHANDLE STDOUT = 0x8002; const FILEHANDLE STDERR = 0x8003; const char __stdin_name[] = "STDIN"; const char __stdout_name[] = "STDOUT"; const char __stderr_name[] = "STDERR"; struct __FILE { int handle; /* Add whatever you need here */ }; /* number of system timer ticks */ static time_t timer_ticks = 0; FILEHANDLE _sys_open(const char *name, int openmode) { FILEHANDLE rc; /* Register standard Input Output devices. */ if (strcmp(name, "STDIN") == 0) rc = STDIN; else if (strcmp(name, "STDOUT") == 0) rc = STDOUT; else if (strcmp(name, "STDERR") == 0) rc = STDERR; else rc = -1; return (rc); } int _sys_close(FILEHANDLE fh) { return fh > 0x8000 ? 0 : 0; } /* Write to SWO */ void _ttywrch(int ch) { ITM_SendChar(ch); } int _sys_istty(FILEHANDLE fh) { return fh > 0x8000 ? 1 : 0; } int _sys_seek(FILEHANDLE fh, long pos) { return fh > 0x8000 ? -1 : 0; } long _sys_flen(FILEHANDLE fh) { return fh > 0x8000 ? 0 : -1; } /*--------------------------- _sys_tmpnam ------------------------------------*/ int _sys_tmpnam (char *name, int sig, unsigned maxlen) { return (1); } int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode) { int rc; if (fh == STDOUT) { while (len) { _ttywrch(*buf); buf++; len--; rc = 0; } } else if (fh > 0x8000) rc = -1; else rc = -1; return rc; } int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode) { return -1; } void _sys_exit(int return_code) { label: __WFI(); goto label; /* endless loop */ } char *_sys_command_string(char *cmd, int len) { const char * const arg[] = { "tst.axf", "-v", "-gSimpleStringBuffer", "-ojunit"}; int i, j; char *rc = cmd; if (len) { /* Specify commandline arguments here as needed */ len = sizeof(arg) / sizeof(char *); for (i = 0; i < len; i++) { j = strlen(arg[i])+1; if (cmd - rc + j > len) { rc = NULL; break; } memcpy(cmd, arg[i], j); cmd += j; } if (rc) rc = cmd; } else rc = NULL; return rc; } void _clock_init(void) { SysTick_Config(CGU_IRC_FREQ / 1000); /* 1 ms system ticks interrupt period */ } clock_t clock(void) { return timer_ticks; } time_t time(time_t *timer) { time_t rc = timer_ticks / CLOCKS_PER_SEC; if (timer) *timer = rc; return rc; } /* IRQ handler for Sys Tick timer */ __irq void SysTick_Handler(void) { timer_ticks++; } /* * Замена вÑтроенной в Keil MDK-ARM функции, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñоздаёт ÑвÑзанный ÑпиÑок * адреÑов деÑтрукторов глобальных или ÑтатичеÑких объектов в "куче" при * инициализации окружениÑ. * Так как не планируетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ программы, то ни один такой деÑтруктор не * должен вызыватьÑÑ, и можно подменить Ñтандартную верÑию __aeabi_atexit на * другую, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ будет Ñоздавать такой ÑпиÑок в "куче". * Ð˜Ð´ÐµÑ Ð²Ð·Ñта отÑюда * http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3951.html * Пример реализации взÑÑ‚ отÑюда * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0041d/IHI0041D_cppabi.pdf */ int __aeabi_atexit(void* object, void (*destroyer)(void*), void* dso_handle) { return 1; // 0: failed; non-0: OK // return __cxa_atexit(destroyer, object, dso_handle); /* ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð· Keil MDK-ARM */ } cpputest-3.7.2/platforms_startup/armcc/LPC1833/startup_LPC18xx.asm000644 000765 000024 00000025657 12521603460 025610 0ustar00basvoddestaff000000 000000 ;/*********************************************************************** ; * @brief: LPC18xx/43xx M3/M4 startup code ; * ; * @note ; * Copyright(C) NXP Semiconductors, 2012 ; * All rights reserved. ; * ; * @par ; * Software that is described herein is for illustrative purposes only ; * which provides customers with programming information regarding the ; * LPC products. This software is supplied "AS IS" without any warranties of ; * any kind, and NXP Semiconductors and its licensor disclaim any and ; * all warranties, express or implied, including all implied warranties of ; * merchantability, fitness for a particular purpose and non-infringement of ; * intellectual property rights. NXP Semiconductors assumes no responsibility ; * or liability for the use of the software, conveys no license or rights under any ; * patent, copyright, mask work right, or any other intellectual property rights in ; * or to any products. NXP Semiconductors reserves the right to make changes ; * in the software without notification. NXP Semiconductors also makes no ; * representation or warranty that such application will be suitable for the ; * specified use without further testing or modification. ; * ; * @par ; * Permission to use, copy, modify, and distribute this software and its ; * documentation is hereby granted, under NXP Semiconductors' and its ; * licensor's relevant copyrights in the software, without fee, provided that it ; * is used in conjunction with NXP Semiconductors microcontrollers. This ; * copyright, permission, and disclaimer notice must appear in all copies of ; * this code. ; */ ; Stack Configuration ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> ; Stack_Size EQU 0x00002000 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp ; Heap Configuration ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> ; Heap_Size EQU 0x00004000 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base Heap_Mem SPACE Heap_Size __heap_limit PRESERVE8 THUMB ; Vector Table Mapped to Address 0 at Reset AREA RESET, CODE, READONLY EXPORT __Vectors Sign_Value EQU 0x5A5A5A5A __Vectors DCD __initial_sp ; 0 Top of Stack DCD Reset_Handler ; 1 Reset Handler DCD NMI_Handler ; 2 NMI Handler DCD HardFault_Handler ; 3 Hard Fault Handler DCD MemManage_Handler ; 4 MPU Fault Handler DCD BusFault_Handler ; 5 Bus Fault Handler DCD UsageFault_Handler ; 6 Usage Fault Handler DCD Sign_Value ; 7 Reserved DCD UnHandled_Vector ; 8 Reserved DCD UnHandled_Vector ; 9 Reserved DCD UnHandled_Vector ; 10 Reserved DCD SVC_Handler ; 11 SVCall Handler DCD DebugMon_Handler ; 12 Debug Monitor Handler DCD UnHandled_Vector ; 13 Reserved DCD PendSV_Handler ; 14 PendSV Handler DCD SysTick_Handler ; 15 SysTick Handler ; External Interrupts DCD DAC_IRQHandler ; 16 D/A Converter DCD M0APP_IRQHandler ; 17 M0APP IRQ handler (LPC43XX ONLY) DCD DMA_IRQHandler ; 18 General Purpose DMA DCD UnHandled_Vector ; 19 Reserved DCD FLASH_EEPROM_IRQHandler ; 20 ORed flash bank A, flash bank B, EEPROM interrupts DCD ETH_IRQHandler ; 21 Ethernet DCD SDIO_IRQHandler ; 22 SD/MMC DCD LCD_IRQHandler ; 23 LCD DCD USB0_IRQHandler ; 24 USB0 DCD USB1_IRQHandler ; 25 USB1 DCD SCT_IRQHandler ; 26 State Configurable Timer DCD RIT_IRQHandler ; 27 Repetitive Interrupt Timer DCD TIMER0_IRQHandler ; 28 Timer0 DCD TIMER1_IRQHandler ; 29 Timer1 DCD TIMER2_IRQHandler ; 30 Timer2 DCD TIMER3_IRQHandler ; 31 Timer3 DCD MCPWM_IRQHandler ; 32 Motor Control PWM DCD ADC0_IRQHandler ; 33 A/D Converter 0 DCD I2C0_IRQHandler ; 34 I2C0 DCD I2C1_IRQHandler ; 35 I2C1 DCD SPI_IRQHandler ; 36 SPI (LPC43XX ONLY) DCD ADC1_IRQHandler ; 37 A/D Converter 1 DCD SSP0_IRQHandler ; 38 SSP0 DCD SSP1_IRQHandler ; 39 SSP1 DCD UART0_IRQHandler ; 40 UART0 DCD UART1_IRQHandler ; 41 UART1 DCD UART2_IRQHandler ; 42 UART2 DCD UART3_IRQHandler ; 43 UART3 DCD I2S0_IRQHandler ; 44 I2S0 DCD I2S1_IRQHandler ; 45 I2S1 DCD SPIFI_IRQHandler ; 46 SPI Flash Interface DCD SGPIO_IRQHandler ; 47 SGPIO (LPC43XX ONLY) DCD GPIO0_IRQHandler ; 48 GPIO0 DCD GPIO1_IRQHandler ; 49 GPIO1 DCD GPIO2_IRQHandler ; 50 GPIO2 DCD GPIO3_IRQHandler ; 51 GPIO3 DCD GPIO4_IRQHandler ; 52 GPIO4 DCD GPIO5_IRQHandler ; 53 GPIO5 DCD GPIO6_IRQHandler ; 54 GPIO6 DCD GPIO7_IRQHandler ; 55 GPIO7 DCD GINT0_IRQHandler ; 56 GINT0 DCD GINT1_IRQHandler ; 57 GINT1 DCD EVRT_IRQHandler ; 58 Event Router DCD CAN1_IRQHandler ; 59 C_CAN1 DCD UnHandled_Vector ; 60 Reserved DCD ADCHS_IRQHandler ; 61 ADCHS combined interrupt DCD ATIMER_IRQHandler ; 62 ATIMER DCD RTC_IRQHandler ; 63 RTC DCD UnHandled_Vector ; 64 Reserved DCD WDT_IRQHandler ; 65 WDT DCD M0SUB_IRQHandler ; 66 M0SUB IRQ handler (LPC43XX ONLY) DCD CAN0_IRQHandler ; 67 C_CAN0 DCD QEI_IRQHandler ; 68 QEI ; IF :LNOT::DEF:NO_CRP ; AREA |.ARM.__at_0x02FC|, CODE, READONLY ;CRP_Key DCD 0xFFFFFFFF ; ENDIF AREA |.text|, CODE, READONLY ; Reset Handler Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP ; Dummy Exception Handlers (infinite loops which can be modified) NMI_Handler PROC EXPORT NMI_Handler [WEAK] B . ENDP HardFault_Handler\ PROC EXPORT HardFault_Handler [WEAK] B . ENDP MemManage_Handler\ PROC EXPORT MemManage_Handler [WEAK] B . ENDP BusFault_Handler\ PROC EXPORT BusFault_Handler [WEAK] B . ENDP UsageFault_Handler\ PROC EXPORT UsageFault_Handler [WEAK] B . ENDP SVC_Handler PROC EXPORT SVC_Handler [WEAK] B . ENDP DebugMon_Handler\ PROC EXPORT DebugMon_Handler [WEAK] B . ENDP PendSV_Handler PROC EXPORT PendSV_Handler [WEAK] B . ENDP SysTick_Handler PROC EXPORT SysTick_Handler [WEAK] B . ENDP UnHandled_Vector PROC EXPORT UnHandled_Vector [WEAK] B . ENDP Default_Handler PROC EXPORT DAC_IRQHandler [WEAK] EXPORT M0APP_IRQHandler [WEAK] EXPORT DMA_IRQHandler [WEAK] EXPORT FLASH_EEPROM_IRQHandler [WEAK] EXPORT ETH_IRQHandler [WEAK] EXPORT SDIO_IRQHandler [WEAK] EXPORT LCD_IRQHandler [WEAK] EXPORT USB0_IRQHandler [WEAK] EXPORT USB1_IRQHandler [WEAK] EXPORT SCT_IRQHandler [WEAK] EXPORT RIT_IRQHandler [WEAK] EXPORT TIMER0_IRQHandler [WEAK] EXPORT TIMER1_IRQHandler [WEAK] EXPORT TIMER2_IRQHandler [WEAK] EXPORT TIMER3_IRQHandler [WEAK] EXPORT MCPWM_IRQHandler [WEAK] EXPORT ADC0_IRQHandler [WEAK] EXPORT I2C0_IRQHandler [WEAK] EXPORT I2C1_IRQHandler [WEAK] EXPORT SPI_IRQHandler [WEAK] EXPORT ADC1_IRQHandler [WEAK] EXPORT SSP0_IRQHandler [WEAK] EXPORT SSP1_IRQHandler [WEAK] EXPORT UART0_IRQHandler [WEAK] EXPORT UART1_IRQHandler [WEAK] EXPORT UART2_IRQHandler [WEAK] EXPORT UART3_IRQHandler [WEAK] EXPORT I2S0_IRQHandler [WEAK] EXPORT I2S1_IRQHandler [WEAK] EXPORT SPIFI_IRQHandler [WEAK] EXPORT SGPIO_IRQHandler [WEAK] EXPORT GPIO0_IRQHandler [WEAK] EXPORT GPIO1_IRQHandler [WEAK] EXPORT GPIO2_IRQHandler [WEAK] EXPORT GPIO3_IRQHandler [WEAK] EXPORT GPIO4_IRQHandler [WEAK] EXPORT GPIO5_IRQHandler [WEAK] EXPORT GPIO6_IRQHandler [WEAK] EXPORT GPIO7_IRQHandler [WEAK] EXPORT GINT0_IRQHandler [WEAK] EXPORT GINT1_IRQHandler [WEAK] EXPORT EVRT_IRQHandler [WEAK] EXPORT CAN1_IRQHandler [WEAK] EXPORT ADCHS_IRQHandler [WEAK] EXPORT ATIMER_IRQHandler [WEAK] EXPORT RTC_IRQHandler [WEAK] EXPORT WDT_IRQHandler [WEAK] EXPORT M0SUB_IRQHandler [WEAK] EXPORT CAN0_IRQHandler [WEAK] EXPORT QEI_IRQHandler [WEAK] DAC_IRQHandler M0APP_IRQHandler DMA_IRQHandler FLASH_EEPROM_IRQHandler ETH_IRQHandler SDIO_IRQHandler LCD_IRQHandler USB0_IRQHandler USB1_IRQHandler SCT_IRQHandler RIT_IRQHandler TIMER0_IRQHandler TIMER1_IRQHandler TIMER2_IRQHandler TIMER3_IRQHandler MCPWM_IRQHandler ADC0_IRQHandler I2C0_IRQHandler I2C1_IRQHandler SPI_IRQHandler ADC1_IRQHandler SSP0_IRQHandler SSP1_IRQHandler UART0_IRQHandler UART1_IRQHandler UART2_IRQHandler UART3_IRQHandler I2S0_IRQHandler I2S1_IRQHandler SPIFI_IRQHandler SGPIO_IRQHandler GPIO0_IRQHandler GPIO1_IRQHandler GPIO2_IRQHandler GPIO3_IRQHandler GPIO4_IRQHandler GPIO5_IRQHandler GPIO6_IRQHandler GPIO7_IRQHandler GINT0_IRQHandler GINT1_IRQHandler EVRT_IRQHandler CAN1_IRQHandler ADCHS_IRQHandler ATIMER_IRQHandler RTC_IRQHandler WDT_IRQHandler M0SUB_IRQHandler CAN0_IRQHandler QEI_IRQHandler B . ENDP ALIGN ; User Initial Stack & Heap IF :DEF:__MICROLIB EXPORT __initial_sp EXPORT __heap_base EXPORT __heap_limit ELSE IMPORT __use_two_region_memory EXPORT __user_setup_stackheap __user_setup_stackheap LDR R0, = Heap_Mem LDR R2, = (Heap_Mem + Heap_Size) LDR SP, =(Stack_Mem + Stack_Size) BX LR ALIGN ENDIF END cpputest-3.7.2/platforms_startup/armcc/LPC1833/sysinit.c000644 000765 000024 00000003355 12521603460 024012 0ustar00basvoddestaff000000 000000 #include "cmsis_18xx.h" typedef struct { /*!< CREG Structure */ __I uint32_t RESERVED0; __IO uint32_t CREG0; /*!< Chip configuration register 32 kHz oscillator output and BOD control register. */ __I uint32_t RESERVED1[62]; __IO uint32_t MXMEMMAP; /*!< ARM Cortex-M3/M4 memory mapping */ __I uint32_t RESERVED2[5]; __IO uint32_t CREG5; /*!< Chip configuration register 5. Controls JTAG access. */ __IO uint32_t DMAMUX; /*!< DMA muxing control */ __IO uint32_t FLASHCFGA; /*!< Flash accelerator configuration register for flash bank A */ __IO uint32_t FLASHCFGB; /*!< Flash accelerator configuration register for flash bank B */ __IO uint32_t ETBCFG; /*!< ETB RAM configuration */ __IO uint32_t CREG6; /*!< Chip configuration register 6. */ __I uint32_t RESERVED4[52]; __I uint32_t CHIPID; /*!< Part ID */ __I uint32_t RESERVED5[191]; __IO uint32_t USB0FLADJ; /*!< USB0 frame length adjust register */ __I uint32_t RESERVED9[63]; __IO uint32_t USB1FLADJ; /*!< USB1 frame length adjust register */ } LPC_CREG_T; #define LPC_CREG_BASE 0x40043000 #define LPC_CREG ((LPC_CREG_T *) LPC_CREG_BASE) static inline void Chip_CREG_SetFlashAcceleration(uint32_t Hz) { uint32_t FAValue = Hz / 21510000; LPC_CREG->FLASHCFGA = (LPC_CREG->FLASHCFGA & (~(0xF << 12))) | (FAValue << 12); LPC_CREG->FLASHCFGB = (LPC_CREG->FLASHCFGB & (~(0xF << 12))) | (FAValue << 12); } /* Set up and initialize hardware prior to call to main */ void SystemInit(void) { unsigned int *pSCB_VTOR = (unsigned int *) 0xE000ED08; extern void *__Vectors; *pSCB_VTOR = (unsigned int) &__Vectors; Chip_CREG_SetFlashAcceleration(CGU_IRC_FREQ); } cpputest-3.7.2/platforms_startup/armcc/LPC1768/core_cm3.h000644 000765 000024 00000205161 12521603460 024015 0ustar00basvoddestaff000000 000000 /**************************************************************************//** * @file core_cm3.h * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File * @version V2.10 * @date 19. July 2011 * * @note * Copyright (C) 2009-2011 ARM Limited. All rights reserved. * * @par * ARM Limited (ARM) is supplying this software for use with Cortex-M * processor based microcontrollers. This file can be freely distributed * within development tools that are supporting such ARM based processors. * * @par * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. * ******************************************************************************/ #if defined ( __ICCARM__ ) #pragma system_include /* treat file as system include file for MISRA check */ #endif #ifdef __cplusplus extern "C" { #endif #ifndef __CORE_CM3_H_GENERIC #define __CORE_CM3_H_GENERIC /** \ingroup CMSIS_Core \defgroup CMSIS_MISRA_Exceptions CMSIS MISRA-C:2004 Compliance Exceptions CMSIS violates following MISRA-C2004 Rules: - Violates MISRA 2004 Required Rule 8.5, object/function definition in header file.
Function definitions in header files are used to allow 'inlining'. - Violates MISRA 2004 Required Rule 18.4, declaration of union type or object of union type: '{...}'.
Unions are used for effective representation of core registers. - Violates MISRA 2004 Advisory Rule 19.7, Function-like macro defined.
Function-like macros are used to allow more efficient code. */ /******************************************************************************* * CMSIS definitions ******************************************************************************/ /** \ingroup CMSIS_Core \defgroup CMSIS_core_definitions CMSIS Core Definitions This file defines all structures and symbols for CMSIS core: - CMSIS version number - Cortex-M core - Cortex-M core Revision Number @{ */ /* CMSIS CM3 definitions */ #define __CM3_CMSIS_VERSION_MAIN (0x02) /*!< [31:16] CMSIS HAL main version */ #define __CM3_CMSIS_VERSION_SUB (0x10) /*!< [15:0] CMSIS HAL sub version */ #define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ #define __CORTEX_M (0x03) /*!< Cortex core */ #if defined ( __CC_ARM ) #define __ASM __asm /*!< asm keyword for ARM Compiler */ #define __INLINE __inline /*!< inline keyword for ARM Compiler */ #elif defined ( __ICCARM__ ) #define __ASM __asm /*!< asm keyword for IAR Compiler */ #define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */ #elif defined ( __GNUC__ ) #define __ASM __asm /*!< asm keyword for GNU Compiler */ #define __INLINE inline /*!< inline keyword for GNU Compiler */ #elif defined ( __TASKING__ ) #define __ASM __asm /*!< asm keyword for TASKING Compiler */ #define __INLINE inline /*!< inline keyword for TASKING Compiler */ #endif /*!< __FPU_USED to be checked prior to making use of FPU specific registers and functions */ #define __FPU_USED 0 #if defined ( __CC_ARM ) #if defined __TARGET_FPU_VFP #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif #elif defined ( __ICCARM__ ) #if defined __ARMVFP__ #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif #elif defined ( __GNUC__ ) #if defined (__VFP_FP__) && !defined(__SOFTFP__) #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #endif #elif defined ( __TASKING__ ) /* add preprocessor checks */ #endif #include /*!< standard types definitions */ #include "core_cmInstr.h" /*!< Core Instruction Access */ #include "core_cmFunc.h" /*!< Core Function Access */ #endif /* __CORE_CM3_H_GENERIC */ #ifndef __CMSIS_GENERIC #ifndef __CORE_CM3_H_DEPENDANT #define __CORE_CM3_H_DEPENDANT /* check device defines and use defaults */ #if defined __CHECK_DEVICE_DEFINES #ifndef __CM3_REV #define __CM3_REV 0x0200 #warning "__CM3_REV not defined in device header file; using default!" #endif #ifndef __MPU_PRESENT #define __MPU_PRESENT 0 #warning "__MPU_PRESENT not defined in device header file; using default!" #endif #ifndef __NVIC_PRIO_BITS #define __NVIC_PRIO_BITS 4 #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" #endif #ifndef __Vendor_SysTickConfig #define __Vendor_SysTickConfig 0 #warning "__Vendor_SysTickConfig not defined in device header file; using default!" #endif #endif /* IO definitions (access restrictions to peripheral registers) */ #ifdef __cplusplus #define __I volatile /*!< defines 'read only' permissions */ #else #define __I volatile const /*!< defines 'read only' permissions */ #endif #define __O volatile /*!< defines 'write only' permissions */ #define __IO volatile /*!< defines 'read / write' permissions */ /*@} end of group CMSIS_core_definitions */ /******************************************************************************* * Register Abstraction ******************************************************************************/ /** \ingroup CMSIS_Core \defgroup CMSIS_core_register CMSIS Core Register Core Register contain: - Core Register - Core NVIC Register - Core SCB Register - Core SysTick Register - Core Debug Register - Core MPU Register */ /** \ingroup CMSIS_core_register \defgroup CMSIS_CORE CMSIS Core Type definitions for the Cortex-M Core Registers @{ */ /** \brief Union type to access the Application Program Status Register (APSR). */ typedef union { struct { #if (__CORTEX_M != 0x04) uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ #else uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ #endif uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ uint32_t C:1; /*!< bit: 29 Carry condition code flag */ uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ uint32_t N:1; /*!< bit: 31 Negative condition code flag */ } b; /*!< Structure used for bit access */ uint32_t w; /*!< Type used for word access */ } APSR_Type; /** \brief Union type to access the Interrupt Program Status Register (IPSR). */ typedef union { struct { uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ } b; /*!< Structure used for bit access */ uint32_t w; /*!< Type used for word access */ } IPSR_Type; /** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). */ typedef union { struct { uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ #if (__CORTEX_M != 0x04) uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ #else uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ #endif uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ uint32_t C:1; /*!< bit: 29 Carry condition code flag */ uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ uint32_t N:1; /*!< bit: 31 Negative condition code flag */ } b; /*!< Structure used for bit access */ uint32_t w; /*!< Type used for word access */ } xPSR_Type; /** \brief Union type to access the Control Registers (CONTROL). */ typedef union { struct { uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ } b; /*!< Structure used for bit access */ uint32_t w; /*!< Type used for word access */ } CONTROL_Type; /*@} end of group CMSIS_CORE */ /** \ingroup CMSIS_core_register \defgroup CMSIS_NVIC CMSIS NVIC Type definitions for the Cortex-M NVIC Registers @{ */ /** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). */ typedef struct { __IO uint32_t ISER[8]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ uint32_t RESERVED0[24]; __IO uint32_t ICER[8]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ uint32_t RSERVED1[24]; __IO uint32_t ISPR[8]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ uint32_t RESERVED2[24]; __IO uint32_t ICPR[8]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ uint32_t RESERVED3[24]; __IO uint32_t IABR[8]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ uint32_t RESERVED4[56]; __IO uint8_t IP[240]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ uint32_t RESERVED5[644]; __O uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ } NVIC_Type; /* Software Triggered Interrupt Register Definitions */ #define NVIC_STIR_INTID_Pos 0 /*!< STIR: INTLINESNUM Position */ #define NVIC_STIR_INTID_Msk (0x1FFUL << NVIC_STIR_INTID_Pos) /*!< STIR: INTLINESNUM Mask */ /*@} end of group CMSIS_NVIC */ /** \ingroup CMSIS_core_register \defgroup CMSIS_SCB CMSIS SCB Type definitions for the Cortex-M System Control Block Registers @{ */ /** \brief Structure type to access the System Control Block (SCB). */ typedef struct { __I uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ __IO uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ __IO uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ __IO uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ __IO uint8_t SHP[12]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ __IO uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ __IO uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ __IO uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ __IO uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ __IO uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ __IO uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ __IO uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ __I uint32_t PFR[2]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ __I uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ __I uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ __I uint32_t MMFR[4]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ __I uint32_t ISAR[5]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ uint32_t RESERVED0[5]; __IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ } SCB_Type; /* SCB CPUID Register Definitions */ #define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ #define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ #define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ #define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ #define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ #define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ #define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ #define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ #define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ #define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ /* SCB Interrupt Control State Register Definitions */ #define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ #define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ #define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ #define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ #define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ #define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ #define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ #define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ #define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ #define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ #define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ #define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ #define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ #define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ #define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ #define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ #define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ #define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ #define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ #define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ /* SCB Vector Table Offset Register Definitions */ #define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ #define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ /* SCB Application Interrupt and Reset Control Register Definitions */ #define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ #define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ #define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ #define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ #define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ #define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ #define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ #define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ #define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ #define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ #define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ #define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ #define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ #define SCB_AIRCR_VECTRESET_Msk (1UL << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ /* SCB System Control Register Definitions */ #define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ #define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ #define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ #define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ #define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ #define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ /* SCB Configuration Control Register Definitions */ #define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ #define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ #define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ #define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ #define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ #define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ #define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ #define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ #define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ #define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ #define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ #define SCB_CCR_NONBASETHRDENA_Msk (1UL << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ /* SCB System Handler Control and State Register Definitions */ #define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ #define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ #define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ #define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ #define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ #define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ #define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ #define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ #define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ #define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ #define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ #define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ #define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ #define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ #define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ #define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ #define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ #define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ #define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ #define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ #define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ #define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ #define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ #define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ #define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ #define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ #define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ #define SCB_SHCSR_MEMFAULTACT_Msk (1UL << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ /* SCB Configurable Fault Status Registers Definitions */ #define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ #define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ #define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ #define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ #define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ #define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ /* SCB Hard Fault Status Registers Definitions */ #define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ #define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ #define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ #define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ #define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ #define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ /* SCB Debug Fault Status Register Definitions */ #define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ #define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ #define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ #define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ #define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ #define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ #define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ #define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ #define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ #define SCB_DFSR_HALTED_Msk (1UL << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ /*@} end of group CMSIS_SCB */ /** \ingroup CMSIS_core_register \defgroup CMSIS_SCnSCB CMSIS System Control and ID Register not in the SCB Type definitions for the Cortex-M System Control and ID Register not in the SCB @{ */ /** \brief Structure type to access the System Control and ID Register not in the SCB. */ typedef struct { uint32_t RESERVED0[1]; __I uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ #if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) __IO uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ #else uint32_t RESERVED1[1]; #endif } SCnSCB_Type; /* Interrupt Controller Type Register Definitions */ #define SCnSCB_ICTR_INTLINESNUM_Pos 0 /*!< ICTR: INTLINESNUM Position */ #define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos) /*!< ICTR: INTLINESNUM Mask */ /* Auxiliary Control Register Definitions */ #define SCnSCB_ACTLR_DISFOLD_Pos 2 /*!< ACTLR: DISFOLD Position */ #define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ #define SCnSCB_ACTLR_DISDEFWBUF_Pos 1 /*!< ACTLR: DISDEFWBUF Position */ #define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ #define SCnSCB_ACTLR_DISMCYCINT_Pos 0 /*!< ACTLR: DISMCYCINT Position */ #define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos) /*!< ACTLR: DISMCYCINT Mask */ /*@} end of group CMSIS_SCnotSCB */ /** \ingroup CMSIS_core_register \defgroup CMSIS_SysTick CMSIS SysTick Type definitions for the Cortex-M System Timer Registers @{ */ /** \brief Structure type to access the System Timer (SysTick). */ typedef struct { __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ __IO uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ __I uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ } SysTick_Type; /* SysTick Control / Status Register Definitions */ #define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ #define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ #define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ #define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ #define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ #define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ #define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ #define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ /* SysTick Reload Register Definitions */ #define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ #define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ /* SysTick Current Register Definitions */ #define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ #define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ /* SysTick Calibration Register Definitions */ #define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ #define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ #define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ #define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ #define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ #define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ /*@} end of group CMSIS_SysTick */ /** \ingroup CMSIS_core_register \defgroup CMSIS_ITM CMSIS ITM Type definitions for the Cortex-M Instrumentation Trace Macrocell (ITM) @{ */ /** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). */ typedef struct { __O union { __O uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ __O uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ __O uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ } PORT [32]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ uint32_t RESERVED0[864]; __IO uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ uint32_t RESERVED1[15]; __IO uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ uint32_t RESERVED2[15]; __IO uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ } ITM_Type; /* ITM Trace Privilege Register Definitions */ #define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ #define ITM_TPR_PRIVMASK_Msk (0xFUL << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ /* ITM Trace Control Register Definitions */ #define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ #define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ #define ITM_TCR_TraceBusID_Pos 16 /*!< ITM TCR: ATBID Position */ #define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ #define ITM_TCR_GTSFREQ_Pos 10 /*!< ITM TCR: Global timestamp frequency Position */ #define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ #define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ #define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ #define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ #define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ #define ITM_TCR_TXENA_Pos 3 /*!< ITM TCR: TXENA Position */ #define ITM_TCR_TXENA_Msk (1UL << ITM_TCR_TXENA_Pos) /*!< ITM TCR: TXENA Mask */ #define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ #define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ #define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ #define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ #define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ #define ITM_TCR_ITMENA_Msk (1UL << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ /*@}*/ /* end of group CMSIS_ITM */ #if (__MPU_PRESENT == 1) /** \ingroup CMSIS_core_register \defgroup CMSIS_MPU CMSIS MPU Type definitions for the Cortex-M Memory Protection Unit (MPU) @{ */ /** \brief Structure type to access the Memory Protection Unit (MPU). */ typedef struct { __I uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ __IO uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ __IO uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ __IO uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ __IO uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ __IO uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ __IO uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ __IO uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ __IO uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ __IO uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ __IO uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ } MPU_Type; /* MPU Type Register */ #define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ #define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ #define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ #define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ #define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ #define MPU_TYPE_SEPARATE_Msk (1UL << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ /* MPU Control Register */ #define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ #define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ #define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ #define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ #define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ #define MPU_CTRL_ENABLE_Msk (1UL << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ /* MPU Region Number Register */ #define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ #define MPU_RNR_REGION_Msk (0xFFUL << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ /* MPU Region Base Address Register */ #define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ #define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ #define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ #define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ #define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ #define MPU_RBAR_REGION_Msk (0xFUL << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ /* MPU Region Attribute and Size Register */ #define MPU_RASR_ATTRS_Pos 16 /*!< MPU RASR: MPU Region Attribute field Position */ #define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ #define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ #define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ #define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ #define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ #define MPU_RASR_ENABLE_Pos 0 /*!< MPU RASR: Region enable bit Position */ #define MPU_RASR_ENABLE_Msk (1UL << MPU_RASR_ENABLE_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ /*@} end of group CMSIS_MPU */ #endif /** \ingroup CMSIS_core_register \defgroup CMSIS_CoreDebug CMSIS Core Debug Type definitions for the Cortex-M Core Debug Registers @{ */ /** \brief Structure type to access the Core Debug Register (CoreDebug). */ typedef struct { __IO uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ __O uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ __IO uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ __IO uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ } CoreDebug_Type; /* Debug Halting Control and Status Register */ #define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ #define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ #define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ #define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ #define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ #define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ #define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ #define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ #define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ #define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ #define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ #define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ #define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ #define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ #define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ #define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ #define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ #define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ #define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ #define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ #define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ #define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ #define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ #define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ /* Debug Core Register Selector Register */ #define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ #define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ #define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ #define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ /* Debug Exception and Monitor Control Register */ #define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ #define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ #define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ #define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ #define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ #define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ #define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ #define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ #define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ #define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ #define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ #define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ #define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ #define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ #define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ #define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ #define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ #define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ #define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ #define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ #define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ #define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ #define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ #define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ #define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ #define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ /*@} end of group CMSIS_CoreDebug */ /** \ingroup CMSIS_core_register @{ */ /* Memory mapping of Cortex-M3 Hardware */ #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ #if (__MPU_PRESENT == 1) #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ #endif /*@} */ /******************************************************************************* * Hardware Abstraction Layer ******************************************************************************/ /** \ingroup CMSIS_Core \defgroup CMSIS_Core_FunctionInterface CMSIS Core Function Interface Core Function Interface contains: - Core NVIC Functions - Core SysTick Functions - Core Debug Functions - Core Register Access Functions */ /* ########################## NVIC functions #################################### */ /** \ingroup CMSIS_Core_FunctionInterface \defgroup CMSIS_Core_NVICFunctions CMSIS Core NVIC Functions @{ */ /** \brief Set Priority Grouping This function sets the priority grouping field using the required unlock sequence. The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. \param [in] PriorityGroup Priority grouping field */ static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { uint32_t reg_value; uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */ reg_value = SCB->AIRCR; /* read old register configuration */ reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ reg_value = (reg_value | ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) | (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ SCB->AIRCR = reg_value; } /** \brief Get Priority Grouping This function gets the priority grouping from NVIC Interrupt Controller. Priority grouping is SCB->AIRCR [10:8] PRIGROUP field. \return Priority grouping field */ static __INLINE uint32_t NVIC_GetPriorityGrouping(void) { return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ } /** \brief Enable External Interrupt This function enables a device specific interrupt in the NVIC interrupt controller. The interrupt number cannot be a negative value. \param [in] IRQn Number of the external interrupt to enable */ static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) { NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ } /** \brief Disable External Interrupt This function disables a device specific interrupt in the NVIC interrupt controller. The interrupt number cannot be a negative value. \param [in] IRQn Number of the external interrupt to disable */ static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) { NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ } /** \brief Get Pending Interrupt This function reads the pending register in the NVIC and returns the pending bit for the specified interrupt. \param [in] IRQn Number of the interrupt for get pending \return 0 Interrupt status is not pending \return 1 Interrupt status is pending */ static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) { return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ } /** \brief Set Pending Interrupt This function sets the pending bit for the specified interrupt. The interrupt number cannot be a negative value. \param [in] IRQn Number of the interrupt for set pending */ static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) { NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ } /** \brief Clear Pending Interrupt This function clears the pending bit for the specified interrupt. The interrupt number cannot be a negative value. \param [in] IRQn Number of the interrupt for clear pending */ static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) { NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ } /** \brief Get Active Interrupt This function reads the active register in NVIC and returns the active bit. \param [in] IRQn Number of the interrupt for get active \return 0 Interrupt status is not active \return 1 Interrupt status is active */ static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) { return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ } /** \brief Set Interrupt Priority This function sets the priority for the specified interrupt. The interrupt number can be positive to specify an external (device specific) interrupt, or negative to specify an internal (core) interrupt. Note: The priority cannot be set for every core interrupt. \param [in] IRQn Number of the interrupt for set priority \param [in] priority Priority to set */ static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) { if(IRQn < 0) { SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M System Interrupts */ else { NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ } /** \brief Get Interrupt Priority This function reads the priority for the specified interrupt. The interrupt number can be positive to specify an external (device specific) interrupt, or negative to specify an internal (core) interrupt. The returned priority value is automatically aligned to the implemented priority bits of the microcontroller. \param [in] IRQn Number of the interrupt for get priority \return Interrupt Priority */ static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) { if(IRQn < 0) { return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M system interrupts */ else { return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ } /** \brief Encode Priority This function encodes the priority for an interrupt with the given priority group, preemptive priority value and sub priority value. In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. The returned priority value can be used for NVIC_SetPriority(...) function \param [in] PriorityGroup Used priority group \param [in] PreemptPriority Preemptive priority value (starting from 0) \param [in] SubPriority Sub priority value (starting from 0) \return Encoded priority for the interrupt */ static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) { uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ uint32_t PreemptPriorityBits; uint32_t SubPriorityBits; PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; return ( ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | ((SubPriority & ((1 << (SubPriorityBits )) - 1))) ); } /** \brief Decode Priority This function decodes an interrupt priority value with the given priority group to preemptive priority value and sub priority value. In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. The priority value can be retrieved with NVIC_GetPriority(...) function \param [in] Priority Priority value \param [in] PriorityGroup Used priority group \param [out] pPreemptPriority Preemptive priority value (starting from 0) \param [out] pSubPriority Sub priority value (starting from 0) */ static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) { uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ uint32_t PreemptPriorityBits; uint32_t SubPriorityBits; PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); } /** \brief System Reset This function initiate a system reset request to reset the MCU. */ static __INLINE void NVIC_SystemReset(void) { __DSB(); /* Ensure all outstanding memory accesses included buffered write are completed before reset */ SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ __DSB(); /* Ensure completion of memory access */ while(1); /* wait until reset */ } /*@} end of CMSIS_Core_NVICFunctions */ /* ################################## SysTick function ############################################ */ /** \ingroup CMSIS_Core_FunctionInterface \defgroup CMSIS_Core_SysTickFunctions CMSIS Core SysTick Functions @{ */ #if (__Vendor_SysTickConfig == 0) /** \brief System Tick Configuration This function initialises the system tick timer and its interrupt and start the system tick timer. Counter is in free running mode to generate periodical interrupts. \param [in] ticks Number of ticks between two interrupts \return 0 Function succeeded \return 1 Function failed */ static __INLINE uint32_t SysTick_Config(uint32_t ticks) { if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ SysTick->VAL = 0; /* Load the SysTick Counter Value */ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0); /* Function successful */ } #endif /*@} end of CMSIS_Core_SysTickFunctions */ /* ##################################### Debug In/Output function ########################################### */ /** \ingroup CMSIS_Core_FunctionInterface \defgroup CMSIS_core_DebugFunctions CMSIS Core Debug Functions @{ */ extern volatile int32_t ITM_RxBuffer; /*!< external variable to receive characters */ #define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ /** \brief ITM Send Character This function transmits a character via the ITM channel 0. It just returns when no debugger is connected that has booked the output. It is blocking when a debugger is connected, but the previous character send is not transmitted. \param [in] ch Character to transmit \return Character to transmit */ static __INLINE uint32_t ITM_SendChar (uint32_t ch) { if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ (ITM->TER & (1UL << 0) ) ) /* ITM Port #0 enabled */ { while (ITM->PORT[0].u32 == 0); ITM->PORT[0].u8 = (uint8_t) ch; } return (ch); } /** \brief ITM Receive Character This function inputs a character via external variable ITM_RxBuffer. It just returns when no debugger is connected that has booked the output. It is blocking when a debugger is connected, but the previous character send is not transmitted. \return Received character \return -1 No character received */ static __INLINE int32_t ITM_ReceiveChar (void) { int32_t ch = -1; /* no character available */ if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { ch = ITM_RxBuffer; ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ } return (ch); } /** \brief ITM Check Character This function checks external variable ITM_RxBuffer whether a character is available or not. It returns '1' if a character is available and '0' if no character is available. \return 0 No character available \return 1 Character available */ static __INLINE int32_t ITM_CheckChar (void) { if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { return (0); /* no character available */ } else { return (1); /* character available */ } } /*@} end of CMSIS_core_DebugFunctions */ #endif /* __CORE_CM3_H_DEPENDANT */ #endif /* __CMSIS_GENERIC */ #ifdef __cplusplus } #endif cpputest-3.7.2/platforms_startup/armcc/LPC1768/core_cmFunc.h000644 000765 000024 00000035352 12521603460 024551 0ustar00basvoddestaff000000 000000 /**************************************************************************//** * @file core_cmFunc.h * @brief CMSIS Cortex-M Core Function Access Header File * @version V2.10 * @date 26. July 2011 * * @note * Copyright (C) 2009-2011 ARM Limited. All rights reserved. * * @par * ARM Limited (ARM) is supplying this software for use with Cortex-M * processor based microcontrollers. This file can be freely distributed * within development tools that are supporting such ARM based processors. * * @par * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. * ******************************************************************************/ #ifndef __CORE_CMFUNC_H #define __CORE_CMFUNC_H /* ########################### Core Function Access ########################### */ /** \ingroup CMSIS_Core_FunctionInterface \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions @{ */ #if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ /* ARM armcc specific functions */ #if (__ARMCC_VERSION < 400677) #error "Please use ARM Compiler Toolchain V4.0.677 or later!" #endif /* intrinsic void __enable_irq(); */ /* intrinsic void __disable_irq(); */ /** \brief Get Control Register This function returns the content of the Control Register. \return Control Register value */ static __INLINE uint32_t __get_CONTROL(void) { register uint32_t __regControl __ASM("control"); return(__regControl); } /** \brief Set Control Register This function writes the given value to the Control Register. \param [in] control Control Register value to set */ static __INLINE void __set_CONTROL(uint32_t control) { register uint32_t __regControl __ASM("control"); __regControl = control; } /** \brief Get ISPR Register This function returns the content of the ISPR Register. \return ISPR Register value */ static __INLINE uint32_t __get_IPSR(void) { register uint32_t __regIPSR __ASM("ipsr"); return(__regIPSR); } /** \brief Get APSR Register This function returns the content of the APSR Register. \return APSR Register value */ static __INLINE uint32_t __get_APSR(void) { register uint32_t __regAPSR __ASM("apsr"); return(__regAPSR); } /** \brief Get xPSR Register This function returns the content of the xPSR Register. \return xPSR Register value */ static __INLINE uint32_t __get_xPSR(void) { register uint32_t __regXPSR __ASM("xpsr"); return(__regXPSR); } /** \brief Get Process Stack Pointer This function returns the current value of the Process Stack Pointer (PSP). \return PSP Register value */ static __INLINE uint32_t __get_PSP(void) { register uint32_t __regProcessStackPointer __ASM("psp"); return(__regProcessStackPointer); } /** \brief Set Process Stack Pointer This function assigns the given value to the Process Stack Pointer (PSP). \param [in] topOfProcStack Process Stack Pointer value to set */ static __INLINE void __set_PSP(uint32_t topOfProcStack) { register uint32_t __regProcessStackPointer __ASM("psp"); __regProcessStackPointer = topOfProcStack; } /** \brief Get Main Stack Pointer This function returns the current value of the Main Stack Pointer (MSP). \return MSP Register value */ static __INLINE uint32_t __get_MSP(void) { register uint32_t __regMainStackPointer __ASM("msp"); return(__regMainStackPointer); } /** \brief Set Main Stack Pointer This function assigns the given value to the Main Stack Pointer (MSP). \param [in] topOfMainStack Main Stack Pointer value to set */ static __INLINE void __set_MSP(uint32_t topOfMainStack) { register uint32_t __regMainStackPointer __ASM("msp"); __regMainStackPointer = topOfMainStack; } /** \brief Get Priority Mask This function returns the current state of the priority mask bit from the Priority Mask Register. \return Priority Mask value */ static __INLINE uint32_t __get_PRIMASK(void) { register uint32_t __regPriMask __ASM("primask"); return(__regPriMask); } /** \brief Set Priority Mask This function assigns the given value to the Priority Mask Register. \param [in] priMask Priority Mask */ static __INLINE void __set_PRIMASK(uint32_t priMask) { register uint32_t __regPriMask __ASM("primask"); __regPriMask = (priMask); } #if (__CORTEX_M >= 0x03) /** \brief Enable FIQ This function enables FIQ interrupts by clearing the F-bit in the CPSR. Can only be executed in Privileged modes. */ #define __enable_fault_irq __enable_fiq /** \brief Disable FIQ This function disables FIQ interrupts by setting the F-bit in the CPSR. Can only be executed in Privileged modes. */ #define __disable_fault_irq __disable_fiq /** \brief Get Base Priority This function returns the current value of the Base Priority register. \return Base Priority register value */ static __INLINE uint32_t __get_BASEPRI(void) { register uint32_t __regBasePri __ASM("basepri"); return(__regBasePri); } /** \brief Set Base Priority This function assigns the given value to the Base Priority register. \param [in] basePri Base Priority value to set */ static __INLINE void __set_BASEPRI(uint32_t basePri) { register uint32_t __regBasePri __ASM("basepri"); __regBasePri = (basePri & 0xff); } /** \brief Get Fault Mask This function returns the current value of the Fault Mask register. \return Fault Mask register value */ static __INLINE uint32_t __get_FAULTMASK(void) { register uint32_t __regFaultMask __ASM("faultmask"); return(__regFaultMask); } /** \brief Set Fault Mask This function assigns the given value to the Fault Mask register. \param [in] faultMask Fault Mask value to set */ static __INLINE void __set_FAULTMASK(uint32_t faultMask) { register uint32_t __regFaultMask __ASM("faultmask"); __regFaultMask = (faultMask & (uint32_t)1); } #endif /* (__CORTEX_M >= 0x03) */ #if (__CORTEX_M == 0x04) /** \brief Get FPSCR This function returns the current value of the Floating Point Status/Control register. \return Floating Point Status/Control register value */ static __INLINE uint32_t __get_FPSCR(void) { #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) register uint32_t __regfpscr __ASM("fpscr"); return(__regfpscr); #else return(0); #endif } /** \brief Set FPSCR This function assigns the given value to the Floating Point Status/Control register. \param [in] fpscr Floating Point Status/Control value to set */ static __INLINE void __set_FPSCR(uint32_t fpscr) { #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) register uint32_t __regfpscr __ASM("fpscr"); __regfpscr = (fpscr); #endif } #endif /* (__CORTEX_M == 0x04) */ #elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ /* IAR iccarm specific functions */ #include #elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ /* GNU gcc specific functions */ /** \brief Enable IRQ Interrupts This function enables IRQ interrupts by clearing the I-bit in the CPSR. Can only be executed in Privileged modes. */ __attribute__( ( always_inline ) ) static __INLINE void __enable_irq(void) { __ASM volatile ("cpsie i"); } /** \brief Disable IRQ Interrupts This function disables IRQ interrupts by setting the I-bit in the CPSR. Can only be executed in Privileged modes. */ __attribute__( ( always_inline ) ) static __INLINE void __disable_irq(void) { __ASM volatile ("cpsid i"); } /** \brief Get Control Register This function returns the content of the Control Register. \return Control Register value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_CONTROL(void) { uint32_t result; __ASM volatile ("MRS %0, control" : "=r" (result) ); return(result); } /** \brief Set Control Register This function writes the given value to the Control Register. \param [in] control Control Register value to set */ __attribute__( ( always_inline ) ) static __INLINE void __set_CONTROL(uint32_t control) { __ASM volatile ("MSR control, %0" : : "r" (control) ); } /** \brief Get ISPR Register This function returns the content of the ISPR Register. \return ISPR Register value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_IPSR(void) { uint32_t result; __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); return(result); } /** \brief Get APSR Register This function returns the content of the APSR Register. \return APSR Register value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_APSR(void) { uint32_t result; __ASM volatile ("MRS %0, apsr" : "=r" (result) ); return(result); } /** \brief Get xPSR Register This function returns the content of the xPSR Register. \return xPSR Register value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_xPSR(void) { uint32_t result; __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); return(result); } /** \brief Get Process Stack Pointer This function returns the current value of the Process Stack Pointer (PSP). \return PSP Register value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_PSP(void) { register uint32_t result; __ASM volatile ("MRS %0, psp\n" : "=r" (result) ); return(result); } /** \brief Set Process Stack Pointer This function assigns the given value to the Process Stack Pointer (PSP). \param [in] topOfProcStack Process Stack Pointer value to set */ __attribute__( ( always_inline ) ) static __INLINE void __set_PSP(uint32_t topOfProcStack) { __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) ); } /** \brief Get Main Stack Pointer This function returns the current value of the Main Stack Pointer (MSP). \return MSP Register value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_MSP(void) { register uint32_t result; __ASM volatile ("MRS %0, msp\n" : "=r" (result) ); return(result); } /** \brief Set Main Stack Pointer This function assigns the given value to the Main Stack Pointer (MSP). \param [in] topOfMainStack Main Stack Pointer value to set */ __attribute__( ( always_inline ) ) static __INLINE void __set_MSP(uint32_t topOfMainStack) { __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) ); } /** \brief Get Priority Mask This function returns the current state of the priority mask bit from the Priority Mask Register. \return Priority Mask value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_PRIMASK(void) { uint32_t result; __ASM volatile ("MRS %0, primask" : "=r" (result) ); return(result); } /** \brief Set Priority Mask This function assigns the given value to the Priority Mask Register. \param [in] priMask Priority Mask */ __attribute__( ( always_inline ) ) static __INLINE void __set_PRIMASK(uint32_t priMask) { __ASM volatile ("MSR primask, %0" : : "r" (priMask) ); } #if (__CORTEX_M >= 0x03) /** \brief Enable FIQ This function enables FIQ interrupts by clearing the F-bit in the CPSR. Can only be executed in Privileged modes. */ __attribute__( ( always_inline ) ) static __INLINE void __enable_fault_irq(void) { __ASM volatile ("cpsie f"); } /** \brief Disable FIQ This function disables FIQ interrupts by setting the F-bit in the CPSR. Can only be executed in Privileged modes. */ __attribute__( ( always_inline ) ) static __INLINE void __disable_fault_irq(void) { __ASM volatile ("cpsid f"); } /** \brief Get Base Priority This function returns the current value of the Base Priority register. \return Base Priority register value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_BASEPRI(void) { uint32_t result; __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); return(result); } /** \brief Set Base Priority This function assigns the given value to the Base Priority register. \param [in] basePri Base Priority value to set */ __attribute__( ( always_inline ) ) static __INLINE void __set_BASEPRI(uint32_t value) { __ASM volatile ("MSR basepri, %0" : : "r" (value) ); } /** \brief Get Fault Mask This function returns the current value of the Fault Mask register. \return Fault Mask register value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_FAULTMASK(void) { uint32_t result; __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); return(result); } /** \brief Set Fault Mask This function assigns the given value to the Fault Mask register. \param [in] faultMask Fault Mask value to set */ __attribute__( ( always_inline ) ) static __INLINE void __set_FAULTMASK(uint32_t faultMask) { __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) ); } #endif /* (__CORTEX_M >= 0x03) */ #if (__CORTEX_M == 0x04) /** \brief Get FPSCR This function returns the current value of the Floating Point Status/Control register. \return Floating Point Status/Control register value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __get_FPSCR(void) { #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) uint32_t result; __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); return(result); #else return(0); #endif } /** \brief Set FPSCR This function assigns the given value to the Floating Point Status/Control register. \param [in] fpscr Floating Point Status/Control value to set */ __attribute__( ( always_inline ) ) static __INLINE void __set_FPSCR(uint32_t fpscr) { #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) ); #endif } #endif /* (__CORTEX_M == 0x04) */ #elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ /* TASKING carm specific functions */ /* * The CMSIS functions have been implemented as intrinsics in the compiler. * Please use "carm -?i" to get an up to date list of all instrinsics, * Including the CMSIS ones. */ #endif /*@} end of CMSIS_Core_RegAccFunctions */ #endif /* __CORE_CMFUNC_H */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/core_cmInstr.h000644 000765 000024 00000036227 12521603460 024757 0ustar00basvoddestaff000000 000000 /**************************************************************************//** * @file core_cmInstr.h * @brief CMSIS Cortex-M Core Instruction Access Header File * @version V2.10 * @date 19. July 2011 * * @note * Copyright (C) 2009-2011 ARM Limited. All rights reserved. * * @par * ARM Limited (ARM) is supplying this software for use with Cortex-M * processor based microcontrollers. This file can be freely distributed * within development tools that are supporting such ARM based processors. * * @par * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. * ******************************************************************************/ #ifndef __CORE_CMINSTR_H #define __CORE_CMINSTR_H /* ########################## Core Instruction Access ######################### */ /** \ingroup CMSIS_Core \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface Access to dedicated instructions @{ */ #if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ /* ARM armcc specific functions */ #if (__ARMCC_VERSION < 400677) #error "Please use ARM Compiler Toolchain V4.0.677 or later!" #endif /** \brief No Operation No Operation does nothing. This instruction can be used for code alignment purposes. */ #define __NOP __nop /** \brief Wait For Interrupt Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. */ #define __WFI __wfi /** \brief Wait For Event Wait For Event is a hint instruction that permits the processor to enter a low-power state until one of a number of events occurs. */ #define __WFE __wfe /** \brief Send Event Send Event is a hint instruction. It causes an event to be signaled to the CPU. */ #define __SEV __sev /** \brief Instruction Synchronization Barrier Instruction Synchronization Barrier flushes the pipeline in the processor, so that all instructions following the ISB are fetched from cache or memory, after the instruction has been completed. */ #define __ISB() __isb(0xF) /** \brief Data Synchronization Barrier This function acts as a special kind of Data Memory Barrier. It completes when all explicit memory accesses before this instruction complete. */ #define __DSB() __dsb(0xF) /** \brief Data Memory Barrier This function ensures the apparent order of the explicit memory operations before and after the instruction, without ensuring their completion. */ #define __DMB() __dmb(0xF) /** \brief Reverse byte order (32 bit) This function reverses the byte order in integer value. \param [in] value Value to reverse \return Reversed value */ #define __REV __rev /** \brief Reverse byte order (16 bit) This function reverses the byte order in two unsigned short values. \param [in] value Value to reverse \return Reversed value */ static __INLINE __ASM uint32_t __REV16(uint32_t value) { rev16 r0, r0 bx lr } /** \brief Reverse byte order in signed short value This function reverses the byte order in a signed short value with sign extension to integer. \param [in] value Value to reverse \return Reversed value */ static __INLINE __ASM int32_t __REVSH(int32_t value) { revsh r0, r0 bx lr } #if (__CORTEX_M >= 0x03) /** \brief Reverse bit order of value This function reverses the bit order of the given value. \param [in] value Value to reverse \return Reversed value */ #define __RBIT __rbit /** \brief LDR Exclusive (8 bit) This function performs a exclusive LDR command for 8 bit value. \param [in] ptr Pointer to data \return value of type uint8_t at (*ptr) */ #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) /** \brief LDR Exclusive (16 bit) This function performs a exclusive LDR command for 16 bit values. \param [in] ptr Pointer to data \return value of type uint16_t at (*ptr) */ #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) /** \brief LDR Exclusive (32 bit) This function performs a exclusive LDR command for 32 bit values. \param [in] ptr Pointer to data \return value of type uint32_t at (*ptr) */ #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) /** \brief STR Exclusive (8 bit) This function performs a exclusive STR command for 8 bit values. \param [in] value Value to store \param [in] ptr Pointer to location \return 0 Function succeeded \return 1 Function failed */ #define __STREXB(value, ptr) __strex(value, ptr) /** \brief STR Exclusive (16 bit) This function performs a exclusive STR command for 16 bit values. \param [in] value Value to store \param [in] ptr Pointer to location \return 0 Function succeeded \return 1 Function failed */ #define __STREXH(value, ptr) __strex(value, ptr) /** \brief STR Exclusive (32 bit) This function performs a exclusive STR command for 32 bit values. \param [in] value Value to store \param [in] ptr Pointer to location \return 0 Function succeeded \return 1 Function failed */ #define __STREXW(value, ptr) __strex(value, ptr) /** \brief Remove the exclusive lock This function removes the exclusive lock which is created by LDREX. */ #define __CLREX __clrex /** \brief Signed Saturate This function saturates a signed value. \param [in] value Value to be saturated \param [in] sat Bit position to saturate to (1..32) \return Saturated value */ #define __SSAT __ssat /** \brief Unsigned Saturate This function saturates an unsigned value. \param [in] value Value to be saturated \param [in] sat Bit position to saturate to (0..31) \return Saturated value */ #define __USAT __usat /** \brief Count leading zeros This function counts the number of leading zeros of a data value. \param [in] value Value to count the leading zeros \return number of leading zeros in value */ #define __CLZ __clz #endif /* (__CORTEX_M >= 0x03) */ #elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/ /* IAR iccarm specific functions */ #include #elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/ /* GNU gcc specific functions */ /** \brief No Operation No Operation does nothing. This instruction can be used for code alignment purposes. */ __attribute__( ( always_inline ) ) static __INLINE void __NOP(void) { __ASM volatile ("nop"); } /** \brief Wait For Interrupt Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. */ __attribute__( ( always_inline ) ) static __INLINE void __WFI(void) { __ASM volatile ("wfi"); } /** \brief Wait For Event Wait For Event is a hint instruction that permits the processor to enter a low-power state until one of a number of events occurs. */ __attribute__( ( always_inline ) ) static __INLINE void __WFE(void) { __ASM volatile ("wfe"); } /** \brief Send Event Send Event is a hint instruction. It causes an event to be signaled to the CPU. */ __attribute__( ( always_inline ) ) static __INLINE void __SEV(void) { __ASM volatile ("sev"); } /** \brief Instruction Synchronization Barrier Instruction Synchronization Barrier flushes the pipeline in the processor, so that all instructions following the ISB are fetched from cache or memory, after the instruction has been completed. */ __attribute__( ( always_inline ) ) static __INLINE void __ISB(void) { __ASM volatile ("isb"); } /** \brief Data Synchronization Barrier This function acts as a special kind of Data Memory Barrier. It completes when all explicit memory accesses before this instruction complete. */ __attribute__( ( always_inline ) ) static __INLINE void __DSB(void) { __ASM volatile ("dsb"); } /** \brief Data Memory Barrier This function ensures the apparent order of the explicit memory operations before and after the instruction, without ensuring their completion. */ __attribute__( ( always_inline ) ) static __INLINE void __DMB(void) { __ASM volatile ("dmb"); } /** \brief Reverse byte order (32 bit) This function reverses the byte order in integer value. \param [in] value Value to reverse \return Reversed value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __REV(uint32_t value) { uint32_t result; __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); return(result); } /** \brief Reverse byte order (16 bit) This function reverses the byte order in two unsigned short values. \param [in] value Value to reverse \return Reversed value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __REV16(uint32_t value) { uint32_t result; __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) ); return(result); } /** \brief Reverse byte order in signed short value This function reverses the byte order in a signed short value with sign extension to integer. \param [in] value Value to reverse \return Reversed value */ __attribute__( ( always_inline ) ) static __INLINE int32_t __REVSH(int32_t value) { uint32_t result; __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); return(result); } #if (__CORTEX_M >= 0x03) /** \brief Reverse bit order of value This function reverses the bit order of the given value. \param [in] value Value to reverse \return Reversed value */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __RBIT(uint32_t value) { uint32_t result; __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); return(result); } /** \brief LDR Exclusive (8 bit) This function performs a exclusive LDR command for 8 bit value. \param [in] ptr Pointer to data \return value of type uint8_t at (*ptr) */ __attribute__( ( always_inline ) ) static __INLINE uint8_t __LDREXB(volatile uint8_t *addr) { uint8_t result; __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) ); return(result); } /** \brief LDR Exclusive (16 bit) This function performs a exclusive LDR command for 16 bit values. \param [in] ptr Pointer to data \return value of type uint16_t at (*ptr) */ __attribute__( ( always_inline ) ) static __INLINE uint16_t __LDREXH(volatile uint16_t *addr) { uint16_t result; __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) ); return(result); } /** \brief LDR Exclusive (32 bit) This function performs a exclusive LDR command for 32 bit values. \param [in] ptr Pointer to data \return value of type uint32_t at (*ptr) */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __LDREXW(volatile uint32_t *addr) { uint32_t result; __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); return(result); } /** \brief STR Exclusive (8 bit) This function performs a exclusive STR command for 8 bit values. \param [in] value Value to store \param [in] ptr Pointer to location \return 0 Function succeeded \return 1 Function failed */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) { uint32_t result; __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); return(result); } /** \brief STR Exclusive (16 bit) This function performs a exclusive STR command for 16 bit values. \param [in] value Value to store \param [in] ptr Pointer to location \return 0 Function succeeded \return 1 Function failed */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) { uint32_t result; __ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); return(result); } /** \brief STR Exclusive (32 bit) This function performs a exclusive STR command for 32 bit values. \param [in] value Value to store \param [in] ptr Pointer to location \return 0 Function succeeded \return 1 Function failed */ __attribute__( ( always_inline ) ) static __INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) { uint32_t result; __ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); return(result); } /** \brief Remove the exclusive lock This function removes the exclusive lock which is created by LDREX. */ __attribute__( ( always_inline ) ) static __INLINE void __CLREX(void) { __ASM volatile ("clrex"); } /** \brief Signed Saturate This function saturates a signed value. \param [in] value Value to be saturated \param [in] sat Bit position to saturate to (1..32) \return Saturated value */ #define __SSAT(ARG1,ARG2) \ ({ \ uint32_t __RES, __ARG1 = (ARG1); \ __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ __RES; \ }) /** \brief Unsigned Saturate This function saturates an unsigned value. \param [in] value Value to be saturated \param [in] sat Bit position to saturate to (0..31) \return Saturated value */ #define __USAT(ARG1,ARG2) \ ({ \ uint32_t __RES, __ARG1 = (ARG1); \ __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ __RES; \ }) /** \brief Count leading zeros This function counts the number of leading zeros of a data value. \param [in] value Value to count the leading zeros \return number of leading zeros in value */ __attribute__( ( always_inline ) ) static __INLINE uint8_t __CLZ(uint32_t value) { uint8_t result; __ASM volatile ("clz %0, %1" : "=r" (result) : "r" (value) ); return(result); } #endif /* (__CORTEX_M >= 0x03) */ #elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/ /* TASKING carm specific functions */ /* * The CMSIS functions have been implemented as intrinsics in the compiler. * Please use "carm -?i" to get an up to date list of all intrinsics, * Including the CMSIS ones. */ #endif /*@}*/ /* end of group CMSIS_Core_InstructionInterface */ #endif /* __CORE_CMINSTR_H */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/LPC17xx.h000644 000765 000024 00000111541 12521603460 023467 0ustar00basvoddestaff000000 000000 /**************************************************************************//** * @file LPC17xx.h * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File for * NXP LPC17xx Device Series * @version: V1.09 * @date: 25. July. 2011 * * @note * Copyright (C) 2009 ARM Limited. All rights reserved. * * @par * ARM Limited (ARM) is supplying this software for use with Cortex-M * processor based microcontrollers. This file can be freely distributed * within development tools that are supporting such ARM based processors. * * @par * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. * ******************************************************************************/ #ifndef __LPC17xx_H__ #define __LPC17xx_H__ /* * ========================================================================== * ---------- Interrupt Number Definition ----------------------------------- * ========================================================================== */ /** @addtogroup LPC17xx_System * @{ */ /** @brief IRQ interrupt source definition */ typedef enum IRQn { /****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ /****** LPC17xx Specific Interrupt Numbers *******************************************************/ WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */ TIMER0_IRQn = 1, /*!< Timer0 Interrupt */ TIMER1_IRQn = 2, /*!< Timer1 Interrupt */ TIMER2_IRQn = 3, /*!< Timer2 Interrupt */ TIMER3_IRQn = 4, /*!< Timer3 Interrupt */ UART0_IRQn = 5, /*!< UART0 Interrupt */ UART1_IRQn = 6, /*!< UART1 Interrupt */ UART2_IRQn = 7, /*!< UART2 Interrupt */ UART3_IRQn = 8, /*!< UART3 Interrupt */ PWM1_IRQn = 9, /*!< PWM1 Interrupt */ I2C0_IRQn = 10, /*!< I2C0 Interrupt */ I2C1_IRQn = 11, /*!< I2C1 Interrupt */ I2C2_IRQn = 12, /*!< I2C2 Interrupt */ SPI_IRQn = 13, /*!< SPI Interrupt */ SSP0_IRQn = 14, /*!< SSP0 Interrupt */ SSP1_IRQn = 15, /*!< SSP1 Interrupt */ PLL0_IRQn = 16, /*!< PLL0 Lock (Main PLL) Interrupt */ RTC_IRQn = 17, /*!< Real Time Clock Interrupt */ EINT0_IRQn = 18, /*!< External Interrupt 0 Interrupt */ EINT1_IRQn = 19, /*!< External Interrupt 1 Interrupt */ EINT2_IRQn = 20, /*!< External Interrupt 2 Interrupt */ EINT3_IRQn = 21, /*!< External Interrupt 3 Interrupt */ ADC_IRQn = 22, /*!< A/D Converter Interrupt */ BOD_IRQn = 23, /*!< Brown-Out Detect Interrupt */ USB_IRQn = 24, /*!< USB Interrupt */ CAN_IRQn = 25, /*!< CAN Interrupt */ DMA_IRQn = 26, /*!< General Purpose DMA Interrupt */ I2S_IRQn = 27, /*!< I2S Interrupt */ ENET_IRQn = 28, /*!< Ethernet Interrupt */ RIT_IRQn = 29, /*!< Repetitive Interrupt Timer Interrupt */ MCPWM_IRQn = 30, /*!< Motor Control PWM Interrupt */ QEI_IRQn = 31, /*!< Quadrature Encoder Interface Interrupt */ PLL1_IRQn = 32, /*!< PLL1 Lock (USB PLL) Interrupt */ USBActivity_IRQn = 33, /*!< USB Activity Interrupt */ CANActivity_IRQn = 34 /*!< CAN Activity Interrupt */ } IRQn_Type; /* * ========================================================================== * ----------- Processor and Core Peripheral Section ------------------------ * ========================================================================== */ /* Configuration of the Cortex-M3 Processor and Core Peripherals */ #define __MPU_PRESENT 1 /*!< MPU present or not */ #define __NVIC_PRIO_BITS 5 /*!< Number of Bits used for Priority Levels */ #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ #include "system_LPC17xx.h" /* System Header */ #include "core_cm3.h" /* Cortex-M3 processor and core peripherals */ /******************************************************************************/ /* Device Specific Peripheral registers structures */ /******************************************************************************/ #if defined ( __CC_ARM ) #pragma anon_unions #elif defined ( __ICCARM__ ) #pragma language=save #pragma language=extended #endif /*------------- System Control (SC) ------------------------------------------*/ /** @brief System Control (SC) register structure definition */ typedef struct { __IO uint32_t FLASHCFG; /* Flash Accelerator Module */ uint32_t RESERVED0[31]; __IO uint32_t PLL0CON; /* Clocking and Power Control */ __IO uint32_t PLL0CFG; __I uint32_t PLL0STAT; __O uint32_t PLL0FEED; uint32_t RESERVED1[4]; __IO uint32_t PLL1CON; __IO uint32_t PLL1CFG; __I uint32_t PLL1STAT; __O uint32_t PLL1FEED; uint32_t RESERVED2[4]; __IO uint32_t PCON; __IO uint32_t PCONP; uint32_t RESERVED3[15]; __IO uint32_t CCLKCFG; __IO uint32_t USBCLKCFG; __IO uint32_t CLKSRCSEL; __IO uint32_t CANSLEEPCLR; __IO uint32_t CANWAKEFLAGS; uint32_t RESERVED4[10]; __IO uint32_t EXTINT; /* External Interrupts */ uint32_t RESERVED5; __IO uint32_t EXTMODE; __IO uint32_t EXTPOLAR; uint32_t RESERVED6[12]; __IO uint32_t RSID; /* Reset */ uint32_t RESERVED7[7]; __IO uint32_t SCS; /* Syscon Miscellaneous Registers */ __IO uint32_t IRCTRIM; /* Clock Dividers */ __IO uint32_t PCLKSEL0; __IO uint32_t PCLKSEL1; uint32_t RESERVED8[4]; __IO uint32_t USBIntSt; /* USB Device/OTG Interrupt Register */ __IO uint32_t DMAREQSEL; __IO uint32_t CLKOUTCFG; /* Clock Output Configuration */ } LPC_SC_TypeDef; /*------------- Pin Connect Block (PINCON) -----------------------------------*/ /** @brief Pin Connect Block (PINCON) register structure definition */ typedef struct { __IO uint32_t PINSEL0; __IO uint32_t PINSEL1; __IO uint32_t PINSEL2; __IO uint32_t PINSEL3; __IO uint32_t PINSEL4; __IO uint32_t PINSEL5; __IO uint32_t PINSEL6; __IO uint32_t PINSEL7; __IO uint32_t PINSEL8; __IO uint32_t PINSEL9; __IO uint32_t PINSEL10; uint32_t RESERVED0[5]; __IO uint32_t PINMODE0; __IO uint32_t PINMODE1; __IO uint32_t PINMODE2; __IO uint32_t PINMODE3; __IO uint32_t PINMODE4; __IO uint32_t PINMODE5; __IO uint32_t PINMODE6; __IO uint32_t PINMODE7; __IO uint32_t PINMODE8; __IO uint32_t PINMODE9; __IO uint32_t PINMODE_OD0; __IO uint32_t PINMODE_OD1; __IO uint32_t PINMODE_OD2; __IO uint32_t PINMODE_OD3; __IO uint32_t PINMODE_OD4; __IO uint32_t I2CPADCFG; } LPC_PINCON_TypeDef; /*------------- General Purpose Input/Output (GPIO) --------------------------*/ /** @brief General Purpose Input/Output (GPIO) register structure definition */ typedef struct { union { __IO uint32_t FIODIR; struct { __IO uint16_t FIODIRL; __IO uint16_t FIODIRH; }; struct { __IO uint8_t FIODIR0; __IO uint8_t FIODIR1; __IO uint8_t FIODIR2; __IO uint8_t FIODIR3; }; }; uint32_t RESERVED0[3]; union { __IO uint32_t FIOMASK; struct { __IO uint16_t FIOMASKL; __IO uint16_t FIOMASKH; }; struct { __IO uint8_t FIOMASK0; __IO uint8_t FIOMASK1; __IO uint8_t FIOMASK2; __IO uint8_t FIOMASK3; }; }; union { __IO uint32_t FIOPIN; struct { __IO uint16_t FIOPINL; __IO uint16_t FIOPINH; }; struct { __IO uint8_t FIOPIN0; __IO uint8_t FIOPIN1; __IO uint8_t FIOPIN2; __IO uint8_t FIOPIN3; }; }; union { __IO uint32_t FIOSET; struct { __IO uint16_t FIOSETL; __IO uint16_t FIOSETH; }; struct { __IO uint8_t FIOSET0; __IO uint8_t FIOSET1; __IO uint8_t FIOSET2; __IO uint8_t FIOSET3; }; }; union { __O uint32_t FIOCLR; struct { __O uint16_t FIOCLRL; __O uint16_t FIOCLRH; }; struct { __O uint8_t FIOCLR0; __O uint8_t FIOCLR1; __O uint8_t FIOCLR2; __O uint8_t FIOCLR3; }; }; } LPC_GPIO_TypeDef; /** @brief General Purpose Input/Output interrupt (GPIOINT) register structure definition */ typedef struct { __I uint32_t IntStatus; __I uint32_t IO0IntStatR; __I uint32_t IO0IntStatF; __O uint32_t IO0IntClr; __IO uint32_t IO0IntEnR; __IO uint32_t IO0IntEnF; uint32_t RESERVED0[3]; __I uint32_t IO2IntStatR; __I uint32_t IO2IntStatF; __O uint32_t IO2IntClr; __IO uint32_t IO2IntEnR; __IO uint32_t IO2IntEnF; } LPC_GPIOINT_TypeDef; /*------------- Timer (TIM) --------------------------------------------------*/ /** @brief Timer (TIM) register structure definition */ typedef struct { __IO uint32_t IR; __IO uint32_t TCR; __IO uint32_t TC; __IO uint32_t PR; __IO uint32_t PC; __IO uint32_t MCR; __IO uint32_t MR0; __IO uint32_t MR1; __IO uint32_t MR2; __IO uint32_t MR3; __IO uint32_t CCR; __I uint32_t CR0; __I uint32_t CR1; uint32_t RESERVED0[2]; __IO uint32_t EMR; uint32_t RESERVED1[12]; __IO uint32_t CTCR; } LPC_TIM_TypeDef; /*------------- Pulse-Width Modulation (PWM) ---------------------------------*/ /** @brief Pulse-Width Modulation (PWM) register structure definition */ typedef struct { __IO uint32_t IR; __IO uint32_t TCR; __IO uint32_t TC; __IO uint32_t PR; __IO uint32_t PC; __IO uint32_t MCR; __IO uint32_t MR0; __IO uint32_t MR1; __IO uint32_t MR2; __IO uint32_t MR3; __IO uint32_t CCR; __I uint32_t CR0; __I uint32_t CR1; __I uint32_t CR2; __I uint32_t CR3; uint32_t RESERVED0; __IO uint32_t MR4; __IO uint32_t MR5; __IO uint32_t MR6; __IO uint32_t PCR; __IO uint32_t LER; uint32_t RESERVED1[7]; __IO uint32_t CTCR; } LPC_PWM_TypeDef; /*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/ /** @brief Universal Asynchronous Receiver Transmitter (UART) register structure definition */ typedef struct { union { __I uint8_t RBR; __O uint8_t THR; __IO uint8_t DLL; uint32_t RESERVED0; }; union { __IO uint8_t DLM; __IO uint32_t IER; }; union { __I uint32_t IIR; __O uint8_t FCR; }; __IO uint8_t LCR; uint8_t RESERVED1[7]; __I uint8_t LSR; uint8_t RESERVED2[7]; __IO uint8_t SCR; uint8_t RESERVED3[3]; __IO uint32_t ACR; __IO uint8_t ICR; uint8_t RESERVED4[3]; __IO uint8_t FDR; uint8_t RESERVED5[7]; __IO uint8_t TER; uint8_t RESERVED6[39]; __I uint8_t FIFOLVL; } LPC_UART_TypeDef; /** @brief Universal Asynchronous Receiver Transmitter 0 (UART0) register structure definition */ typedef struct { union { __I uint8_t RBR; __O uint8_t THR; __IO uint8_t DLL; uint32_t RESERVED0; }; union { __IO uint8_t DLM; __IO uint32_t IER; }; union { __I uint32_t IIR; __O uint8_t FCR; }; __IO uint8_t LCR; uint8_t RESERVED1[7]; __I uint8_t LSR; uint8_t RESERVED2[7]; __IO uint8_t SCR; uint8_t RESERVED3[3]; __IO uint32_t ACR; __IO uint8_t ICR; uint8_t RESERVED4[3]; __IO uint8_t FDR; uint8_t RESERVED5[7]; __IO uint8_t TER; uint8_t RESERVED6[39]; __I uint8_t FIFOLVL; } LPC_UART0_TypeDef; /** @brief Universal Asynchronous Receiver Transmitter 1 (UART1) register structure definition */ typedef struct { union { __I uint8_t RBR; __O uint8_t THR; __IO uint8_t DLL; uint32_t RESERVED0; }; union { __IO uint8_t DLM; __IO uint32_t IER; }; union { __I uint32_t IIR; __O uint8_t FCR; }; __IO uint8_t LCR; uint8_t RESERVED1[3]; __IO uint8_t MCR; uint8_t RESERVED2[3]; __I uint8_t LSR; uint8_t RESERVED3[3]; __I uint8_t MSR; uint8_t RESERVED4[3]; __IO uint8_t SCR; uint8_t RESERVED5[3]; __IO uint32_t ACR; uint32_t RESERVED6; __IO uint32_t FDR; uint32_t RESERVED7; __IO uint8_t TER; uint8_t RESERVED8[27]; __IO uint8_t RS485CTRL; uint8_t RESERVED9[3]; __IO uint8_t ADRMATCH; uint8_t RESERVED10[3]; __IO uint8_t RS485DLY; uint8_t RESERVED11[3]; __I uint8_t FIFOLVL; } LPC_UART1_TypeDef; /*------------- Serial Peripheral Interface (SPI) ----------------------------*/ /** @brief Serial Peripheral Interface (SPI) register structure definition */ typedef struct { __IO uint32_t SPCR; __I uint32_t SPSR; __IO uint32_t SPDR; __IO uint32_t SPCCR; uint32_t RESERVED0[3]; __IO uint32_t SPINT; } LPC_SPI_TypeDef; /*------------- Synchronous Serial Communication (SSP) -----------------------*/ /** @brief Synchronous Serial Communication (SSP) register structure definition */ typedef struct { __IO uint32_t CR0; __IO uint32_t CR1; __IO uint32_t DR; __I uint32_t SR; __IO uint32_t CPSR; __IO uint32_t IMSC; __IO uint32_t RIS; __IO uint32_t MIS; __IO uint32_t ICR; __IO uint32_t DMACR; } LPC_SSP_TypeDef; /*------------- Inter-Integrated Circuit (I2C) -------------------------------*/ /** @brief Inter-Integrated Circuit (I2C) register structure definition */ typedef struct { __IO uint32_t I2CONSET; __I uint32_t I2STAT; __IO uint32_t I2DAT; __IO uint32_t I2ADR0; __IO uint32_t I2SCLH; __IO uint32_t I2SCLL; __O uint32_t I2CONCLR; __IO uint32_t MMCTRL; __IO uint32_t I2ADR1; __IO uint32_t I2ADR2; __IO uint32_t I2ADR3; __I uint32_t I2DATA_BUFFER; __IO uint32_t I2MASK0; __IO uint32_t I2MASK1; __IO uint32_t I2MASK2; __IO uint32_t I2MASK3; } LPC_I2C_TypeDef; /*------------- Inter IC Sound (I2S) -----------------------------------------*/ /** @brief Inter IC Sound (I2S) register structure definition */ typedef struct { __IO uint32_t I2SDAO; __IO uint32_t I2SDAI; __O uint32_t I2STXFIFO; __I uint32_t I2SRXFIFO; __I uint32_t I2SSTATE; __IO uint32_t I2SDMA1; __IO uint32_t I2SDMA2; __IO uint32_t I2SIRQ; __IO uint32_t I2STXRATE; __IO uint32_t I2SRXRATE; __IO uint32_t I2STXBITRATE; __IO uint32_t I2SRXBITRATE; __IO uint32_t I2STXMODE; __IO uint32_t I2SRXMODE; } LPC_I2S_TypeDef; /*------------- Repetitive Interrupt Timer (RIT) -----------------------------*/ /** @brief Repetitive Interrupt Timer (RIT) register structure definition */ typedef struct { __IO uint32_t RICOMPVAL; __IO uint32_t RIMASK; __IO uint8_t RICTRL; uint8_t RESERVED0[3]; __IO uint32_t RICOUNTER; } LPC_RIT_TypeDef; /*------------- Real-Time Clock (RTC) ----------------------------------------*/ /** @brief Real-Time Clock (RTC) register structure definition */ typedef struct { __IO uint8_t ILR; uint8_t RESERVED0[7]; __IO uint8_t CCR; uint8_t RESERVED1[3]; __IO uint8_t CIIR; uint8_t RESERVED2[3]; __IO uint8_t AMR; uint8_t RESERVED3[3]; __I uint32_t CTIME0; __I uint32_t CTIME1; __I uint32_t CTIME2; __IO uint8_t SEC; uint8_t RESERVED4[3]; __IO uint8_t MIN; uint8_t RESERVED5[3]; __IO uint8_t HOUR; uint8_t RESERVED6[3]; __IO uint8_t DOM; uint8_t RESERVED7[3]; __IO uint8_t DOW; uint8_t RESERVED8[3]; __IO uint16_t DOY; uint16_t RESERVED9; __IO uint8_t MONTH; uint8_t RESERVED10[3]; __IO uint16_t YEAR; uint16_t RESERVED11; __IO uint32_t CALIBRATION; __IO uint32_t GPREG0; __IO uint32_t GPREG1; __IO uint32_t GPREG2; __IO uint32_t GPREG3; __IO uint32_t GPREG4; __IO uint8_t RTC_AUXEN; uint8_t RESERVED12[3]; __IO uint8_t RTC_AUX; uint8_t RESERVED13[3]; __IO uint8_t ALSEC; uint8_t RESERVED14[3]; __IO uint8_t ALMIN; uint8_t RESERVED15[3]; __IO uint8_t ALHOUR; uint8_t RESERVED16[3]; __IO uint8_t ALDOM; uint8_t RESERVED17[3]; __IO uint8_t ALDOW; uint8_t RESERVED18[3]; __IO uint16_t ALDOY; uint16_t RESERVED19; __IO uint8_t ALMON; uint8_t RESERVED20[3]; __IO uint16_t ALYEAR; uint16_t RESERVED21; } LPC_RTC_TypeDef; /*------------- Watchdog Timer (WDT) -----------------------------------------*/ /** @brief Watchdog Timer (WDT) register structure definition */ typedef struct { __IO uint8_t WDMOD; uint8_t RESERVED0[3]; __IO uint32_t WDTC; __O uint8_t WDFEED; uint8_t RESERVED1[3]; __I uint32_t WDTV; __IO uint32_t WDCLKSEL; } LPC_WDT_TypeDef; /*------------- Analog-to-Digital Converter (ADC) ----------------------------*/ /** @brief Analog-to-Digital Converter (ADC) register structure definition */ typedef struct { __IO uint32_t ADCR; __IO uint32_t ADGDR; uint32_t RESERVED0; __IO uint32_t ADINTEN; __I uint32_t ADDR0; __I uint32_t ADDR1; __I uint32_t ADDR2; __I uint32_t ADDR3; __I uint32_t ADDR4; __I uint32_t ADDR5; __I uint32_t ADDR6; __I uint32_t ADDR7; __I uint32_t ADSTAT; __IO uint32_t ADTRM; } LPC_ADC_TypeDef; /*------------- Digital-to-Analog Converter (DAC) ----------------------------*/ /** @brief Digital-to-Analog Converter (DAC) register structure definition */ typedef struct { __IO uint32_t DACR; __IO uint32_t DACCTRL; __IO uint16_t DACCNTVAL; } LPC_DAC_TypeDef; /*------------- Motor Control Pulse-Width Modulation (MCPWM) -----------------*/ /** @brief Motor Control Pulse-Width Modulation (MCPWM) register structure definition */ typedef struct { __I uint32_t MCCON; __O uint32_t MCCON_SET; __O uint32_t MCCON_CLR; __I uint32_t MCCAPCON; __O uint32_t MCCAPCON_SET; __O uint32_t MCCAPCON_CLR; __IO uint32_t MCTIM0; __IO uint32_t MCTIM1; __IO uint32_t MCTIM2; __IO uint32_t MCPER0; __IO uint32_t MCPER1; __IO uint32_t MCPER2; __IO uint32_t MCPW0; __IO uint32_t MCPW1; __IO uint32_t MCPW2; __IO uint32_t MCDEADTIME; __IO uint32_t MCCCP; __IO uint32_t MCCR0; __IO uint32_t MCCR1; __IO uint32_t MCCR2; __I uint32_t MCINTEN; __O uint32_t MCINTEN_SET; __O uint32_t MCINTEN_CLR; __I uint32_t MCCNTCON; __O uint32_t MCCNTCON_SET; __O uint32_t MCCNTCON_CLR; __I uint32_t MCINTFLAG; __O uint32_t MCINTFLAG_SET; __O uint32_t MCINTFLAG_CLR; __O uint32_t MCCAP_CLR; } LPC_MCPWM_TypeDef; /*------------- Quadrature Encoder Interface (QEI) ---------------------------*/ /** @brief Quadrature Encoder Interface (QEI) register structure definition */ typedef struct { __O uint32_t QEICON; __I uint32_t QEISTAT; __IO uint32_t QEICONF; __I uint32_t QEIPOS; __IO uint32_t QEIMAXPOS; __IO uint32_t CMPOS0; __IO uint32_t CMPOS1; __IO uint32_t CMPOS2; __I uint32_t INXCNT; __IO uint32_t INXCMP; __IO uint32_t QEILOAD; __I uint32_t QEITIME; __I uint32_t QEIVEL; __I uint32_t QEICAP; __IO uint32_t VELCOMP; __IO uint32_t FILTER; uint32_t RESERVED0[998]; __O uint32_t QEIIEC; __O uint32_t QEIIES; __I uint32_t QEIINTSTAT; __I uint32_t QEIIE; __O uint32_t QEICLR; __O uint32_t QEISET; } LPC_QEI_TypeDef; /*------------- Controller Area Network (CAN) --------------------------------*/ /** @brief Controller Area Network Acceptance Filter RAM (CANAF_RAM)structure definition */ typedef struct { __IO uint32_t mask[512]; /* ID Masks */ } LPC_CANAF_RAM_TypeDef; /** @brief Controller Area Network Acceptance Filter(CANAF) register structure definition */ typedef struct /* Acceptance Filter Registers */ { __IO uint32_t AFMR; __IO uint32_t SFF_sa; __IO uint32_t SFF_GRP_sa; __IO uint32_t EFF_sa; __IO uint32_t EFF_GRP_sa; __IO uint32_t ENDofTable; __I uint32_t LUTerrAd; __I uint32_t LUTerr; __IO uint32_t FCANIE; __IO uint32_t FCANIC0; __IO uint32_t FCANIC1; } LPC_CANAF_TypeDef; /** @brief Controller Area Network Central (CANCR) register structure definition */ typedef struct /* Central Registers */ { __I uint32_t CANTxSR; __I uint32_t CANRxSR; __I uint32_t CANMSR; } LPC_CANCR_TypeDef; /** @brief Controller Area Network Controller (CAN) register structure definition */ typedef struct /* Controller Registers */ { __IO uint32_t MOD; __O uint32_t CMR; __IO uint32_t GSR; __I uint32_t ICR; __IO uint32_t IER; __IO uint32_t BTR; __IO uint32_t EWL; __I uint32_t SR; __IO uint32_t RFS; __IO uint32_t RID; __IO uint32_t RDA; __IO uint32_t RDB; __IO uint32_t TFI1; __IO uint32_t TID1; __IO uint32_t TDA1; __IO uint32_t TDB1; __IO uint32_t TFI2; __IO uint32_t TID2; __IO uint32_t TDA2; __IO uint32_t TDB2; __IO uint32_t TFI3; __IO uint32_t TID3; __IO uint32_t TDA3; __IO uint32_t TDB3; } LPC_CAN_TypeDef; /*------------- General Purpose Direct Memory Access (GPDMA) -----------------*/ /** @brief General Purpose Direct Memory Access (GPDMA) register structure definition */ typedef struct /* Common Registers */ { __I uint32_t DMACIntStat; __I uint32_t DMACIntTCStat; __O uint32_t DMACIntTCClear; __I uint32_t DMACIntErrStat; __O uint32_t DMACIntErrClr; __I uint32_t DMACRawIntTCStat; __I uint32_t DMACRawIntErrStat; __I uint32_t DMACEnbldChns; __IO uint32_t DMACSoftBReq; __IO uint32_t DMACSoftSReq; __IO uint32_t DMACSoftLBReq; __IO uint32_t DMACSoftLSReq; __IO uint32_t DMACConfig; __IO uint32_t DMACSync; } LPC_GPDMA_TypeDef; /** @brief General Purpose Direct Memory Access Channel (GPDMACH) register structure definition */ typedef struct /* Channel Registers */ { __IO uint32_t DMACCSrcAddr; __IO uint32_t DMACCDestAddr; __IO uint32_t DMACCLLI; __IO uint32_t DMACCControl; __IO uint32_t DMACCConfig; } LPC_GPDMACH_TypeDef; /*------------- Universal Serial Bus (USB) -----------------------------------*/ /** @brief Universal Serial Bus (USB) register structure definition */ typedef struct { __I uint32_t HcRevision; /* USB Host Registers */ __IO uint32_t HcControl; __IO uint32_t HcCommandStatus; __IO uint32_t HcInterruptStatus; __IO uint32_t HcInterruptEnable; __IO uint32_t HcInterruptDisable; __IO uint32_t HcHCCA; __I uint32_t HcPeriodCurrentED; __IO uint32_t HcControlHeadED; __IO uint32_t HcControlCurrentED; __IO uint32_t HcBulkHeadED; __IO uint32_t HcBulkCurrentED; __I uint32_t HcDoneHead; __IO uint32_t HcFmInterval; __I uint32_t HcFmRemaining; __I uint32_t HcFmNumber; __IO uint32_t HcPeriodicStart; __IO uint32_t HcLSTreshold; __IO uint32_t HcRhDescriptorA; __IO uint32_t HcRhDescriptorB; __IO uint32_t HcRhStatus; __IO uint32_t HcRhPortStatus1; __IO uint32_t HcRhPortStatus2; uint32_t RESERVED0[40]; __I uint32_t Module_ID; __I uint32_t OTGIntSt; /* USB On-The-Go Registers */ __IO uint32_t OTGIntEn; __O uint32_t OTGIntSet; __O uint32_t OTGIntClr; __IO uint32_t OTGStCtrl; __IO uint32_t OTGTmr; uint32_t RESERVED1[58]; __I uint32_t USBDevIntSt; /* USB Device Interrupt Registers */ __IO uint32_t USBDevIntEn; __O uint32_t USBDevIntClr; __O uint32_t USBDevIntSet; __O uint32_t USBCmdCode; /* USB Device SIE Command Registers */ __I uint32_t USBCmdData; __I uint32_t USBRxData; /* USB Device Transfer Registers */ __O uint32_t USBTxData; __I uint32_t USBRxPLen; __O uint32_t USBTxPLen; __IO uint32_t USBCtrl; __O uint32_t USBDevIntPri; __I uint32_t USBEpIntSt; /* USB Device Endpoint Interrupt Regs */ __IO uint32_t USBEpIntEn; __O uint32_t USBEpIntClr; __O uint32_t USBEpIntSet; __O uint32_t USBEpIntPri; __IO uint32_t USBReEp; /* USB Device Endpoint Realization Reg*/ __O uint32_t USBEpInd; __IO uint32_t USBMaxPSize; __I uint32_t USBDMARSt; /* USB Device DMA Registers */ __O uint32_t USBDMARClr; __O uint32_t USBDMARSet; uint32_t RESERVED2[9]; __IO uint32_t USBUDCAH; __I uint32_t USBEpDMASt; __O uint32_t USBEpDMAEn; __O uint32_t USBEpDMADis; __I uint32_t USBDMAIntSt; __IO uint32_t USBDMAIntEn; uint32_t RESERVED3[2]; __I uint32_t USBEoTIntSt; __O uint32_t USBEoTIntClr; __O uint32_t USBEoTIntSet; __I uint32_t USBNDDRIntSt; __O uint32_t USBNDDRIntClr; __O uint32_t USBNDDRIntSet; __I uint32_t USBSysErrIntSt; __O uint32_t USBSysErrIntClr; __O uint32_t USBSysErrIntSet; uint32_t RESERVED4[15]; union { __I uint32_t I2C_RX; /* USB OTG I2C Registers */ __O uint32_t I2C_TX; }; __I uint32_t I2C_STS; __IO uint32_t I2C_CTL; __IO uint32_t I2C_CLKHI; __O uint32_t I2C_CLKLO; uint32_t RESERVED5[824]; union { __IO uint32_t USBClkCtrl; /* USB Clock Control Registers */ __IO uint32_t OTGClkCtrl; }; union { __I uint32_t USBClkSt; __I uint32_t OTGClkSt; }; } LPC_USB_TypeDef; /*------------- Ethernet Media Access Controller (EMAC) ----------------------*/ /** @brief Ethernet Media Access Controller (EMAC) register structure definition */ typedef struct { __IO uint32_t MAC1; /* MAC Registers */ __IO uint32_t MAC2; __IO uint32_t IPGT; __IO uint32_t IPGR; __IO uint32_t CLRT; __IO uint32_t MAXF; __IO uint32_t SUPP; __IO uint32_t TEST; __IO uint32_t MCFG; __IO uint32_t MCMD; __IO uint32_t MADR; __O uint32_t MWTD; __I uint32_t MRDD; __I uint32_t MIND; uint32_t RESERVED0[2]; __IO uint32_t SA0; __IO uint32_t SA1; __IO uint32_t SA2; uint32_t RESERVED1[45]; __IO uint32_t Command; /* Control Registers */ __I uint32_t Status; __IO uint32_t RxDescriptor; __IO uint32_t RxStatus; __IO uint32_t RxDescriptorNumber; __I uint32_t RxProduceIndex; __IO uint32_t RxConsumeIndex; __IO uint32_t TxDescriptor; __IO uint32_t TxStatus; __IO uint32_t TxDescriptorNumber; __IO uint32_t TxProduceIndex; __I uint32_t TxConsumeIndex; uint32_t RESERVED2[10]; __I uint32_t TSV0; __I uint32_t TSV1; __I uint32_t RSV; uint32_t RESERVED3[3]; __IO uint32_t FlowControlCounter; __I uint32_t FlowControlStatus; uint32_t RESERVED4[34]; __IO uint32_t RxFilterCtrl; /* Rx Filter Registers */ __IO uint32_t RxFilterWoLStatus; __IO uint32_t RxFilterWoLClear; uint32_t RESERVED5; __IO uint32_t HashFilterL; __IO uint32_t HashFilterH; uint32_t RESERVED6[882]; __I uint32_t IntStatus; /* Module Control Registers */ __IO uint32_t IntEnable; __O uint32_t IntClear; __O uint32_t IntSet; uint32_t RESERVED7; __IO uint32_t PowerDown; uint32_t RESERVED8; __IO uint32_t Module_ID; } LPC_EMAC_TypeDef; #if defined ( __CC_ARM ) #pragma no_anon_unions #elif defined ( __ICCARM__ ) #pragma language=restore #endif /******************************************************************************/ /* Peripheral memory map */ /******************************************************************************/ /* Base addresses */ #define LPC_FLASH_BASE (0x00000000UL) #define LPC_RAM_BASE (0x10000000UL) #ifdef __LPC17XX_REV00 #define LPC_AHBRAM0_BASE (0x20000000UL) #define LPC_AHBRAM1_BASE (0x20004000UL) #else #define LPC_AHBRAM0_BASE (0x2007C000UL) #define LPC_AHBRAM1_BASE (0x20080000UL) #endif #define LPC_GPIO_BASE (0x2009C000UL) #define LPC_APB0_BASE (0x40000000UL) #define LPC_APB1_BASE (0x40080000UL) #define LPC_AHB_BASE (0x50000000UL) #define LPC_CM3_BASE (0xE0000000UL) /* APB0 peripherals */ #define LPC_WDT_BASE (LPC_APB0_BASE + 0x00000) #define LPC_TIM0_BASE (LPC_APB0_BASE + 0x04000) #define LPC_TIM1_BASE (LPC_APB0_BASE + 0x08000) #define LPC_UART0_BASE (LPC_APB0_BASE + 0x0C000) #define LPC_UART1_BASE (LPC_APB0_BASE + 0x10000) #define LPC_PWM1_BASE (LPC_APB0_BASE + 0x18000) #define LPC_I2C0_BASE (LPC_APB0_BASE + 0x1C000) #define LPC_SPI_BASE (LPC_APB0_BASE + 0x20000) #define LPC_RTC_BASE (LPC_APB0_BASE + 0x24000) #define LPC_GPIOINT_BASE (LPC_APB0_BASE + 0x28080) #define LPC_PINCON_BASE (LPC_APB0_BASE + 0x2C000) #define LPC_SSP1_BASE (LPC_APB0_BASE + 0x30000) #define LPC_ADC_BASE (LPC_APB0_BASE + 0x34000) #define LPC_CANAF_RAM_BASE (LPC_APB0_BASE + 0x38000) #define LPC_CANAF_BASE (LPC_APB0_BASE + 0x3C000) #define LPC_CANCR_BASE (LPC_APB0_BASE + 0x40000) #define LPC_CAN1_BASE (LPC_APB0_BASE + 0x44000) #define LPC_CAN2_BASE (LPC_APB0_BASE + 0x48000) #define LPC_I2C1_BASE (LPC_APB0_BASE + 0x5C000) /* APB1 peripherals */ #define LPC_SSP0_BASE (LPC_APB1_BASE + 0x08000) #define LPC_DAC_BASE (LPC_APB1_BASE + 0x0C000) #define LPC_TIM2_BASE (LPC_APB1_BASE + 0x10000) #define LPC_TIM3_BASE (LPC_APB1_BASE + 0x14000) #define LPC_UART2_BASE (LPC_APB1_BASE + 0x18000) #define LPC_UART3_BASE (LPC_APB1_BASE + 0x1C000) #define LPC_I2C2_BASE (LPC_APB1_BASE + 0x20000) #define LPC_I2S_BASE (LPC_APB1_BASE + 0x28000) #define LPC_RIT_BASE (LPC_APB1_BASE + 0x30000) #define LPC_MCPWM_BASE (LPC_APB1_BASE + 0x38000) #define LPC_QEI_BASE (LPC_APB1_BASE + 0x3C000) #define LPC_SC_BASE (LPC_APB1_BASE + 0x7C000) /* AHB peripherals */ #define LPC_EMAC_BASE (LPC_AHB_BASE + 0x00000) #define LPC_GPDMA_BASE (LPC_AHB_BASE + 0x04000) #define LPC_GPDMACH0_BASE (LPC_AHB_BASE + 0x04100) #define LPC_GPDMACH1_BASE (LPC_AHB_BASE + 0x04120) #define LPC_GPDMACH2_BASE (LPC_AHB_BASE + 0x04140) #define LPC_GPDMACH3_BASE (LPC_AHB_BASE + 0x04160) #define LPC_GPDMACH4_BASE (LPC_AHB_BASE + 0x04180) #define LPC_GPDMACH5_BASE (LPC_AHB_BASE + 0x041A0) #define LPC_GPDMACH6_BASE (LPC_AHB_BASE + 0x041C0) #define LPC_GPDMACH7_BASE (LPC_AHB_BASE + 0x041E0) #define LPC_USB_BASE (LPC_AHB_BASE + 0x0C000) /* GPIOs */ #define LPC_GPIO0_BASE (LPC_GPIO_BASE + 0x00000) #define LPC_GPIO1_BASE (LPC_GPIO_BASE + 0x00020) #define LPC_GPIO2_BASE (LPC_GPIO_BASE + 0x00040) #define LPC_GPIO3_BASE (LPC_GPIO_BASE + 0x00060) #define LPC_GPIO4_BASE (LPC_GPIO_BASE + 0x00080) /******************************************************************************/ /* Peripheral declaration */ /******************************************************************************/ #define LPC_SC ((LPC_SC_TypeDef *) LPC_SC_BASE ) #define LPC_GPIO0 ((LPC_GPIO_TypeDef *) LPC_GPIO0_BASE ) #define LPC_GPIO1 ((LPC_GPIO_TypeDef *) LPC_GPIO1_BASE ) #define LPC_GPIO2 ((LPC_GPIO_TypeDef *) LPC_GPIO2_BASE ) #define LPC_GPIO3 ((LPC_GPIO_TypeDef *) LPC_GPIO3_BASE ) #define LPC_GPIO4 ((LPC_GPIO_TypeDef *) LPC_GPIO4_BASE ) #define LPC_WDT ((LPC_WDT_TypeDef *) LPC_WDT_BASE ) #define LPC_TIM0 ((LPC_TIM_TypeDef *) LPC_TIM0_BASE ) #define LPC_TIM1 ((LPC_TIM_TypeDef *) LPC_TIM1_BASE ) #define LPC_TIM2 ((LPC_TIM_TypeDef *) LPC_TIM2_BASE ) #define LPC_TIM3 ((LPC_TIM_TypeDef *) LPC_TIM3_BASE ) #define LPC_RIT ((LPC_RIT_TypeDef *) LPC_RIT_BASE ) #define LPC_UART0 ((LPC_UART_TypeDef *) LPC_UART0_BASE ) #define LPC_UART1 ((LPC_UART1_TypeDef *) LPC_UART1_BASE ) #define LPC_UART2 ((LPC_UART_TypeDef *) LPC_UART2_BASE ) #define LPC_UART3 ((LPC_UART_TypeDef *) LPC_UART3_BASE ) #define LPC_PWM1 ((LPC_PWM_TypeDef *) LPC_PWM1_BASE ) #define LPC_I2C0 ((LPC_I2C_TypeDef *) LPC_I2C0_BASE ) #define LPC_I2C1 ((LPC_I2C_TypeDef *) LPC_I2C1_BASE ) #define LPC_I2C2 ((LPC_I2C_TypeDef *) LPC_I2C2_BASE ) #define LPC_I2S ((LPC_I2S_TypeDef *) LPC_I2S_BASE ) #define LPC_SPI ((LPC_SPI_TypeDef *) LPC_SPI_BASE ) #define LPC_RTC ((LPC_RTC_TypeDef *) LPC_RTC_BASE ) #define LPC_GPIOINT ((LPC_GPIOINT_TypeDef *) LPC_GPIOINT_BASE ) #define LPC_PINCON ((LPC_PINCON_TypeDef *) LPC_PINCON_BASE ) #define LPC_SSP0 ((LPC_SSP_TypeDef *) LPC_SSP0_BASE ) #define LPC_SSP1 ((LPC_SSP_TypeDef *) LPC_SSP1_BASE ) #define LPC_ADC ((LPC_ADC_TypeDef *) LPC_ADC_BASE ) #define LPC_DAC ((LPC_DAC_TypeDef *) LPC_DAC_BASE ) #define LPC_CANAF_RAM ((LPC_CANAF_RAM_TypeDef *) LPC_CANAF_RAM_BASE) #define LPC_CANAF ((LPC_CANAF_TypeDef *) LPC_CANAF_BASE ) #define LPC_CANCR ((LPC_CANCR_TypeDef *) LPC_CANCR_BASE ) #define LPC_CAN1 ((LPC_CAN_TypeDef *) LPC_CAN1_BASE ) #define LPC_CAN2 ((LPC_CAN_TypeDef *) LPC_CAN2_BASE ) #define LPC_MCPWM ((LPC_MCPWM_TypeDef *) LPC_MCPWM_BASE ) #define LPC_QEI ((LPC_QEI_TypeDef *) LPC_QEI_BASE ) #define LPC_EMAC ((LPC_EMAC_TypeDef *) LPC_EMAC_BASE ) #define LPC_GPDMA ((LPC_GPDMA_TypeDef *) LPC_GPDMA_BASE ) #define LPC_GPDMACH0 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH0_BASE ) #define LPC_GPDMACH1 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH1_BASE ) #define LPC_GPDMACH2 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH2_BASE ) #define LPC_GPDMACH3 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH3_BASE ) #define LPC_GPDMACH4 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH4_BASE ) #define LPC_GPDMACH5 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH5_BASE ) #define LPC_GPDMACH6 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH6_BASE ) #define LPC_GPDMACH7 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH7_BASE ) #define LPC_USB ((LPC_USB_TypeDef *) LPC_USB_BASE ) /** * @} */ #endif // __LPC17xx_H__ cpputest-3.7.2/platforms_startup/armcc/LPC1768/lpc17xx_clkpwr.c000644 000765 000024 00000031231 12521603460 025201 0ustar00basvoddestaff000000 000000 /********************************************************************** * $Id$ lpc17xx_clkpwr.c 2010-06-18 *//** * @file lpc17xx_clkpwr.c * @brief Contains all functions support for Clock and Power Control * firmware library on LPC17xx * @version 3.0 * @date 18. June. 2010 * @author NXP MCU SW Application Team * * Copyright(C) 2010, NXP Semiconductor * All rights reserved. * *********************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under NXP Semiconductors' * relevant copyright in the software, without fee, provided that it * is used in conjunction with NXP Semiconductors microcontrollers. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. **********************************************************************/ /* Peripheral group ----------------------------------------------------------- */ /** @addtogroup CLKPWR * @{ */ /* Includes ------------------------------------------------------------------- */ #include "lpc17xx_clkpwr.h" /* Public Functions ----------------------------------------------------------- */ /** @addtogroup CLKPWR_Public_Functions * @{ */ /*********************************************************************//** * @brief Set value of each Peripheral Clock Selection * @param[in] ClkType Peripheral Clock Selection of each type, * should be one of the following: * - CLKPWR_PCLKSEL_WDT : WDT - CLKPWR_PCLKSEL_TIMER0 : Timer 0 - CLKPWR_PCLKSEL_TIMER1 : Timer 1 - CLKPWR_PCLKSEL_UART0 : UART 0 - CLKPWR_PCLKSEL_UART1 : UART 1 - CLKPWR_PCLKSEL_PWM1 : PWM 1 - CLKPWR_PCLKSEL_I2C0 : I2C 0 - CLKPWR_PCLKSEL_SPI : SPI - CLKPWR_PCLKSEL_SSP1 : SSP 1 - CLKPWR_PCLKSEL_DAC : DAC - CLKPWR_PCLKSEL_ADC : ADC - CLKPWR_PCLKSEL_CAN1 : CAN 1 - CLKPWR_PCLKSEL_CAN2 : CAN 2 - CLKPWR_PCLKSEL_ACF : ACF - CLKPWR_PCLKSEL_QEI : QEI - CLKPWR_PCLKSEL_PCB : PCB - CLKPWR_PCLKSEL_I2C1 : I2C 1 - CLKPWR_PCLKSEL_SSP0 : SSP 0 - CLKPWR_PCLKSEL_TIMER2 : Timer 2 - CLKPWR_PCLKSEL_TIMER3 : Timer 3 - CLKPWR_PCLKSEL_UART2 : UART 2 - CLKPWR_PCLKSEL_UART3 : UART 3 - CLKPWR_PCLKSEL_I2C2 : I2C 2 - CLKPWR_PCLKSEL_I2S : I2S - CLKPWR_PCLKSEL_RIT : RIT - CLKPWR_PCLKSEL_SYSCON : SYSCON - CLKPWR_PCLKSEL_MC : MC * @param[in] DivVal Value of divider, should be: * - CLKPWR_PCLKSEL_CCLK_DIV_4 : PCLK_peripheral = CCLK/4 * - CLKPWR_PCLKSEL_CCLK_DIV_1 : PCLK_peripheral = CCLK/1 * - CLKPWR_PCLKSEL_CCLK_DIV_2 : PCLK_peripheral = CCLK/2 * * @return none **********************************************************************/ void CLKPWR_SetPCLKDiv (uint32_t ClkType, uint32_t DivVal) { uint32_t bitpos; bitpos = (ClkType < 32) ? (ClkType) : (ClkType - 32); /* PCLKSEL0 selected */ if (ClkType < 32) { /* Clear two bit at bit position */ LPC_SC->PCLKSEL0 &= (~(CLKPWR_PCLKSEL_BITMASK(bitpos))); /* Set two selected bit */ LPC_SC->PCLKSEL0 |= (CLKPWR_PCLKSEL_SET(bitpos, DivVal)); } /* PCLKSEL1 selected */ else { /* Clear two bit at bit position */ LPC_SC->PCLKSEL1 &= ~(CLKPWR_PCLKSEL_BITMASK(bitpos)); /* Set two selected bit */ LPC_SC->PCLKSEL1 |= (CLKPWR_PCLKSEL_SET(bitpos, DivVal)); } } /*********************************************************************//** * @brief Get current value of each Peripheral Clock Selection * @param[in] ClkType Peripheral Clock Selection of each type, * should be one of the following: * - CLKPWR_PCLKSEL_WDT : WDT - CLKPWR_PCLKSEL_TIMER0 : Timer 0 - CLKPWR_PCLKSEL_TIMER1 : Timer 1 - CLKPWR_PCLKSEL_UART0 : UART 0 - CLKPWR_PCLKSEL_UART1 : UART 1 - CLKPWR_PCLKSEL_PWM1 : PWM 1 - CLKPWR_PCLKSEL_I2C0 : I2C 0 - CLKPWR_PCLKSEL_SPI : SPI - CLKPWR_PCLKSEL_SSP1 : SSP 1 - CLKPWR_PCLKSEL_DAC : DAC - CLKPWR_PCLKSEL_ADC : ADC - CLKPWR_PCLKSEL_CAN1 : CAN 1 - CLKPWR_PCLKSEL_CAN2 : CAN 2 - CLKPWR_PCLKSEL_ACF : ACF - CLKPWR_PCLKSEL_QEI : QEI - CLKPWR_PCLKSEL_PCB : PCB - CLKPWR_PCLKSEL_I2C1 : I2C 1 - CLKPWR_PCLKSEL_SSP0 : SSP 0 - CLKPWR_PCLKSEL_TIMER2 : Timer 2 - CLKPWR_PCLKSEL_TIMER3 : Timer 3 - CLKPWR_PCLKSEL_UART2 : UART 2 - CLKPWR_PCLKSEL_UART3 : UART 3 - CLKPWR_PCLKSEL_I2C2 : I2C 2 - CLKPWR_PCLKSEL_I2S : I2S - CLKPWR_PCLKSEL_RIT : RIT - CLKPWR_PCLKSEL_SYSCON : SYSCON - CLKPWR_PCLKSEL_MC : MC * @return Value of Selected Peripheral Clock Selection **********************************************************************/ uint32_t CLKPWR_GetPCLKSEL (uint32_t ClkType) { uint32_t bitpos, retval; if (ClkType < 32) { bitpos = ClkType; retval = LPC_SC->PCLKSEL0; } else { bitpos = ClkType - 32; retval = LPC_SC->PCLKSEL1; } retval = CLKPWR_PCLKSEL_GET(bitpos, retval); return retval; } /*********************************************************************//** * @brief Get current value of each Peripheral Clock * @param[in] ClkType Peripheral Clock Selection of each type, * should be one of the following: * - CLKPWR_PCLKSEL_WDT : WDT - CLKPWR_PCLKSEL_TIMER0 : Timer 0 - CLKPWR_PCLKSEL_TIMER1 : Timer 1 - CLKPWR_PCLKSEL_UART0 : UART 0 - CLKPWR_PCLKSEL_UART1 : UART 1 - CLKPWR_PCLKSEL_PWM1 : PWM 1 - CLKPWR_PCLKSEL_I2C0 : I2C 0 - CLKPWR_PCLKSEL_SPI : SPI - CLKPWR_PCLKSEL_SSP1 : SSP 1 - CLKPWR_PCLKSEL_DAC : DAC - CLKPWR_PCLKSEL_ADC : ADC - CLKPWR_PCLKSEL_CAN1 : CAN 1 - CLKPWR_PCLKSEL_CAN2 : CAN 2 - CLKPWR_PCLKSEL_ACF : ACF - CLKPWR_PCLKSEL_QEI : QEI - CLKPWR_PCLKSEL_PCB : PCB - CLKPWR_PCLKSEL_I2C1 : I2C 1 - CLKPWR_PCLKSEL_SSP0 : SSP 0 - CLKPWR_PCLKSEL_TIMER2 : Timer 2 - CLKPWR_PCLKSEL_TIMER3 : Timer 3 - CLKPWR_PCLKSEL_UART2 : UART 2 - CLKPWR_PCLKSEL_UART3 : UART 3 - CLKPWR_PCLKSEL_I2C2 : I2C 2 - CLKPWR_PCLKSEL_I2S : I2S - CLKPWR_PCLKSEL_RIT : RIT - CLKPWR_PCLKSEL_SYSCON : SYSCON - CLKPWR_PCLKSEL_MC : MC * @return Value of Selected Peripheral Clock **********************************************************************/ uint32_t CLKPWR_GetPCLK (uint32_t ClkType) { uint32_t retval, div; retval = SystemCoreClock; div = CLKPWR_GetPCLKSEL(ClkType); switch (div) { case 0: div = 4; break; case 1: div = 1; break; case 2: div = 2; break; case 3: div = 8; break; } retval /= div; return retval; } /*********************************************************************//** * @brief Configure power supply for each peripheral according to NewState * @param[in] PPType Type of peripheral used to enable power, * should be one of the following: * - CLKPWR_PCONP_PCTIM0 : Timer 0 - CLKPWR_PCONP_PCTIM1 : Timer 1 - CLKPWR_PCONP_PCUART0 : UART 0 - CLKPWR_PCONP_PCUART1 : UART 1 - CLKPWR_PCONP_PCPWM1 : PWM 1 - CLKPWR_PCONP_PCI2C0 : I2C 0 - CLKPWR_PCONP_PCSPI : SPI - CLKPWR_PCONP_PCRTC : RTC - CLKPWR_PCONP_PCSSP1 : SSP 1 - CLKPWR_PCONP_PCAD : ADC - CLKPWR_PCONP_PCAN1 : CAN 1 - CLKPWR_PCONP_PCAN2 : CAN 2 - CLKPWR_PCONP_PCGPIO : GPIO - CLKPWR_PCONP_PCRIT : RIT - CLKPWR_PCONP_PCMC : MC - CLKPWR_PCONP_PCQEI : QEI - CLKPWR_PCONP_PCI2C1 : I2C 1 - CLKPWR_PCONP_PCSSP0 : SSP 0 - CLKPWR_PCONP_PCTIM2 : Timer 2 - CLKPWR_PCONP_PCTIM3 : Timer 3 - CLKPWR_PCONP_PCUART2 : UART 2 - CLKPWR_PCONP_PCUART3 : UART 3 - CLKPWR_PCONP_PCI2C2 : I2C 2 - CLKPWR_PCONP_PCI2S : I2S - CLKPWR_PCONP_PCGPDMA : GPDMA - CLKPWR_PCONP_PCENET : Ethernet - CLKPWR_PCONP_PCUSB : USB * * @param[in] NewState New state of Peripheral Power, should be: * - ENABLE : Enable power for this peripheral * - DISABLE : Disable power for this peripheral * * @return none **********************************************************************/ void CLKPWR_ConfigPPWR (uint32_t PPType, FunctionalState NewState) { if (NewState == ENABLE) { LPC_SC->PCONP |= PPType & CLKPWR_PCONP_BITMASK; } else if (NewState == DISABLE) { LPC_SC->PCONP &= (~PPType) & CLKPWR_PCONP_BITMASK; } } /*********************************************************************//** * @brief Enter Sleep mode with co-operated instruction by the Cortex-M3. * @param[in] None * @return None **********************************************************************/ void CLKPWR_Sleep(void) { LPC_SC->PCON = 0x00; /* Sleep Mode*/ __WFI(); } /*********************************************************************//** * @brief Enter Deep Sleep mode with co-operated instruction by the Cortex-M3. * @param[in] None * @return None **********************************************************************/ void CLKPWR_DeepSleep(void) { /* Deep-Sleep Mode, set SLEEPDEEP bit */ SCB->SCR = 0x4; LPC_SC->PCON = 0x00; /* Deep Sleep Mode*/ __WFI(); } /*********************************************************************//** * @brief Enter Power Down mode with co-operated instruction by the Cortex-M3. * @param[in] None * @return None **********************************************************************/ void CLKPWR_PowerDown(void) { /* Deep-Sleep Mode, set SLEEPDEEP bit */ SCB->SCR = 0x4; LPC_SC->PCON = 0x01; /* Power Down Mode*/ __WFI(); } /*********************************************************************//** * @brief Enter Deep Power Down mode with co-operated instruction by the Cortex-M3. * @param[in] None * @return None **********************************************************************/ void CLKPWR_DeepPowerDown(void) { /* Deep-Sleep Mode, set SLEEPDEEP bit */ SCB->SCR = 0x4; LPC_SC->PCON = 0x03; /* Deep Power Down Mode*/ __WFI(); } /** * @} */ /** * @} */ /* --------------------------------- End Of File ------------------------------ */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/lpc17xx_clkpwr.h000644 000765 000024 00000043014 12521603460 025210 0ustar00basvoddestaff000000 000000 /********************************************************************** * $Id$ lpc17xx_clkpwr.h 2010-05-21 *//** * @file lpc17xx_clkpwr.h * @brief Contains all macro definitions and function prototypes * support for Clock and Power Control firmware library on LPC17xx * @version 2.0 * @date 21. May. 2010 * @author NXP MCU SW Application Team * * Copyright(C) 2010, NXP Semiconductor * All rights reserved. * *********************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under NXP Semiconductors' * relevant copyright in the software, without fee, provided that it * is used in conjunction with NXP Semiconductors microcontrollers. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. **********************************************************************/ /* Peripheral group ----------------------------------------------------------- */ /** @defgroup CLKPWR CLKPWR (Clock Power) * @ingroup LPC1700CMSIS_FwLib_Drivers * @{ */ #ifndef LPC17XX_CLKPWR_H_ #define LPC17XX_CLKPWR_H_ /* Includes ------------------------------------------------------------------- */ #include "LPC17xx.h" #include "lpc_types.h" #ifdef __cplusplus extern "C" { #endif /* Public Macros -------------------------------------------------------------- */ /** @defgroup CLKPWR_Public_Macros CLKPWR Public Macros * @{ */ /********************************************************************** * Peripheral Clock Selection Definitions **********************************************************************/ /** Peripheral clock divider bit position for WDT */ #define CLKPWR_PCLKSEL_WDT ((uint32_t)(0)) /** Peripheral clock divider bit position for TIMER0 */ #define CLKPWR_PCLKSEL_TIMER0 ((uint32_t)(2)) /** Peripheral clock divider bit position for TIMER1 */ #define CLKPWR_PCLKSEL_TIMER1 ((uint32_t)(4)) /** Peripheral clock divider bit position for UART0 */ #define CLKPWR_PCLKSEL_UART0 ((uint32_t)(6)) /** Peripheral clock divider bit position for UART1 */ #define CLKPWR_PCLKSEL_UART1 ((uint32_t)(8)) /** Peripheral clock divider bit position for PWM1 */ #define CLKPWR_PCLKSEL_PWM1 ((uint32_t)(12)) /** Peripheral clock divider bit position for I2C0 */ #define CLKPWR_PCLKSEL_I2C0 ((uint32_t)(14)) /** Peripheral clock divider bit position for SPI */ #define CLKPWR_PCLKSEL_SPI ((uint32_t)(16)) /** Peripheral clock divider bit position for SSP1 */ #define CLKPWR_PCLKSEL_SSP1 ((uint32_t)(20)) /** Peripheral clock divider bit position for DAC */ #define CLKPWR_PCLKSEL_DAC ((uint32_t)(22)) /** Peripheral clock divider bit position for ADC */ #define CLKPWR_PCLKSEL_ADC ((uint32_t)(24)) /** Peripheral clock divider bit position for CAN1 */ #define CLKPWR_PCLKSEL_CAN1 ((uint32_t)(26)) /** Peripheral clock divider bit position for CAN2 */ #define CLKPWR_PCLKSEL_CAN2 ((uint32_t)(28)) /** Peripheral clock divider bit position for ACF */ #define CLKPWR_PCLKSEL_ACF ((uint32_t)(30)) /** Peripheral clock divider bit position for QEI */ #define CLKPWR_PCLKSEL_QEI ((uint32_t)(32)) /** Peripheral clock divider bit position for PCB */ #define CLKPWR_PCLKSEL_PCB ((uint32_t)(36)) /** Peripheral clock divider bit position for I2C1 */ #define CLKPWR_PCLKSEL_I2C1 ((uint32_t)(38)) /** Peripheral clock divider bit position for SSP0 */ #define CLKPWR_PCLKSEL_SSP0 ((uint32_t)(42)) /** Peripheral clock divider bit position for TIMER2 */ #define CLKPWR_PCLKSEL_TIMER2 ((uint32_t)(44)) /** Peripheral clock divider bit position for TIMER3 */ #define CLKPWR_PCLKSEL_TIMER3 ((uint32_t)(46)) /** Peripheral clock divider bit position for UART2 */ #define CLKPWR_PCLKSEL_UART2 ((uint32_t)(48)) /** Peripheral clock divider bit position for UART3 */ #define CLKPWR_PCLKSEL_UART3 ((uint32_t)(50)) /** Peripheral clock divider bit position for I2C2 */ #define CLKPWR_PCLKSEL_I2C2 ((uint32_t)(52)) /** Peripheral clock divider bit position for I2S */ #define CLKPWR_PCLKSEL_I2S ((uint32_t)(54)) /** Peripheral clock divider bit position for RIT */ #define CLKPWR_PCLKSEL_RIT ((uint32_t)(58)) /** Peripheral clock divider bit position for SYSCON */ #define CLKPWR_PCLKSEL_SYSCON ((uint32_t)(60)) /** Peripheral clock divider bit position for MC */ #define CLKPWR_PCLKSEL_MC ((uint32_t)(62)) /** Macro for Peripheral Clock Selection register bit values * Note: When CCLK_DIV_8, Peripheral’s clock is selected to * PCLK_xyz = CCLK/8 except for CAN1, CAN2, and CAN filtering * when ’11’selects PCLK_xyz = CCLK/6 */ /* Peripheral clock divider is set to 4 from CCLK */ #define CLKPWR_PCLKSEL_CCLK_DIV_4 ((uint32_t)(0)) /** Peripheral clock divider is the same with CCLK */ #define CLKPWR_PCLKSEL_CCLK_DIV_1 ((uint32_t)(1)) /** Peripheral clock divider is set to 2 from CCLK */ #define CLKPWR_PCLKSEL_CCLK_DIV_2 ((uint32_t)(2)) /******************************************************************** * Power Control for Peripherals Definitions **********************************************************************/ /** Timer/Counter 0 power/clock control bit */ #define CLKPWR_PCONP_PCTIM0 ((uint32_t)(1<<1)) /* Timer/Counter 1 power/clock control bit */ #define CLKPWR_PCONP_PCTIM1 ((uint32_t)(1<<2)) /** UART0 power/clock control bit */ #define CLKPWR_PCONP_PCUART0 ((uint32_t)(1<<3)) /** UART1 power/clock control bit */ #define CLKPWR_PCONP_PCUART1 ((uint32_t)(1<<4)) /** PWM1 power/clock control bit */ #define CLKPWR_PCONP_PCPWM1 ((uint32_t)(1<<6)) /** The I2C0 interface power/clock control bit */ #define CLKPWR_PCONP_PCI2C0 ((uint32_t)(1<<7)) /** The SPI interface power/clock control bit */ #define CLKPWR_PCONP_PCSPI ((uint32_t)(1<<8)) /** The RTC power/clock control bit */ #define CLKPWR_PCONP_PCRTC ((uint32_t)(1<<9)) /** The SSP1 interface power/clock control bit */ #define CLKPWR_PCONP_PCSSP1 ((uint32_t)(1<<10)) /** A/D converter 0 (ADC0) power/clock control bit */ #define CLKPWR_PCONP_PCAD ((uint32_t)(1<<12)) /** CAN Controller 1 power/clock control bit */ #define CLKPWR_PCONP_PCAN1 ((uint32_t)(1<<13)) /** CAN Controller 2 power/clock control bit */ #define CLKPWR_PCONP_PCAN2 ((uint32_t)(1<<14)) /** GPIO power/clock control bit */ #define CLKPWR_PCONP_PCGPIO ((uint32_t)(1<<15)) /** Repetitive Interrupt Timer power/clock control bit */ #define CLKPWR_PCONP_PCRIT ((uint32_t)(1<<16)) /** Motor Control PWM */ #define CLKPWR_PCONP_PCMC ((uint32_t)(1<<17)) /** Quadrature Encoder Interface power/clock control bit */ #define CLKPWR_PCONP_PCQEI ((uint32_t)(1<<18)) /** The I2C1 interface power/clock control bit */ #define CLKPWR_PCONP_PCI2C1 ((uint32_t)(1<<19)) /** The SSP0 interface power/clock control bit */ #define CLKPWR_PCONP_PCSSP0 ((uint32_t)(1<<21)) /** Timer 2 power/clock control bit */ #define CLKPWR_PCONP_PCTIM2 ((uint32_t)(1<<22)) /** Timer 3 power/clock control bit */ #define CLKPWR_PCONP_PCTIM3 ((uint32_t)(1<<23)) /** UART 2 power/clock control bit */ #define CLKPWR_PCONP_PCUART2 ((uint32_t)(1<<24)) /** UART 3 power/clock control bit */ #define CLKPWR_PCONP_PCUART3 ((uint32_t)(1<<25)) /** I2C interface 2 power/clock control bit */ #define CLKPWR_PCONP_PCI2C2 ((uint32_t)(1<<26)) /** I2S interface power/clock control bit*/ #define CLKPWR_PCONP_PCI2S ((uint32_t)(1<<27)) /** GP DMA function power/clock control bit*/ #define CLKPWR_PCONP_PCGPDMA ((uint32_t)(1<<29)) /** Ethernet block power/clock control bit*/ #define CLKPWR_PCONP_PCENET ((uint32_t)(1<<30)) /** USB interface power/clock control bit*/ #define CLKPWR_PCONP_PCUSB ((uint32_t)(1<<31)) /** * @} */ /* Private Macros ------------------------------------------------------------- */ /** @defgroup CLKPWR_Private_Macros CLKPWR Private Macros * @{ */ /* --------------------- BIT DEFINITIONS -------------------------------------- */ /*********************************************************************//** * Macro defines for Clock Source Select Register **********************************************************************/ /** Internal RC oscillator */ #define CLKPWR_CLKSRCSEL_CLKSRC_IRC ((uint32_t)(0x00)) /** Main oscillator */ #define CLKPWR_CLKSRCSEL_CLKSRC_MAINOSC ((uint32_t)(0x01)) /** RTC oscillator */ #define CLKPWR_CLKSRCSEL_CLKSRC_RTC ((uint32_t)(0x02)) /** Clock source selection bit mask */ #define CLKPWR_CLKSRCSEL_BITMASK ((uint32_t)(0x03)) /*********************************************************************//** * Macro defines for Clock Output Configuration Register **********************************************************************/ /* Clock Output Configuration register definition */ /** Selects the CPU clock as the CLKOUT source */ #define CLKPWR_CLKOUTCFG_CLKOUTSEL_CPU ((uint32_t)(0x00)) /** Selects the main oscillator as the CLKOUT source */ #define CLKPWR_CLKOUTCFG_CLKOUTSEL_MAINOSC ((uint32_t)(0x01)) /** Selects the Internal RC oscillator as the CLKOUT source */ #define CLKPWR_CLKOUTCFG_CLKOUTSEL_RC ((uint32_t)(0x02)) /** Selects the USB clock as the CLKOUT source */ #define CLKPWR_CLKOUTCFG_CLKOUTSEL_USB ((uint32_t)(0x03)) /** Selects the RTC oscillator as the CLKOUT source */ #define CLKPWR_CLKOUTCFG_CLKOUTSEL_RTC ((uint32_t)(0x04)) /** Integer value to divide the output clock by, minus one */ #define CLKPWR_CLKOUTCFG_CLKOUTDIV(n) ((uint32_t)((n&0x0F)<<4)) /** CLKOUT enable control */ #define CLKPWR_CLKOUTCFG_CLKOUT_EN ((uint32_t)(1<<8)) /** CLKOUT activity indication */ #define CLKPWR_CLKOUTCFG_CLKOUT_ACT ((uint32_t)(1<<9)) /** Clock source selection bit mask */ #define CLKPWR_CLKOUTCFG_BITMASK ((uint32_t)(0x3FF)) /*********************************************************************//** * Macro defines for PPL0 Control Register **********************************************************************/ /** PLL 0 control enable */ #define CLKPWR_PLL0CON_ENABLE ((uint32_t)(0x01)) /** PLL 0 control connect */ #define CLKPWR_PLL0CON_CONNECT ((uint32_t)(0x02)) /** PLL 0 control bit mask */ #define CLKPWR_PLL0CON_BITMASK ((uint32_t)(0x03)) /*********************************************************************//** * Macro defines for PPL0 Configuration Register **********************************************************************/ /** PLL 0 Configuration MSEL field */ #define CLKPWR_PLL0CFG_MSEL(n) ((uint32_t)(n&0x7FFF)) /** PLL 0 Configuration NSEL field */ #define CLKPWR_PLL0CFG_NSEL(n) ((uint32_t)((n<<16)&0xFF0000)) /** PLL 0 Configuration bit mask */ #define CLKPWR_PLL0CFG_BITMASK ((uint32_t)(0xFF7FFF)) /*********************************************************************//** * Macro defines for PPL0 Status Register **********************************************************************/ /** PLL 0 MSEL value */ #define CLKPWR_PLL0STAT_MSEL(n) ((uint32_t)(n&0x7FFF)) /** PLL NSEL get value */ #define CLKPWR_PLL0STAT_NSEL(n) ((uint32_t)((n>>16)&0xFF)) /** PLL status enable bit */ #define CLKPWR_PLL0STAT_PLLE ((uint32_t)(1<<24)) /** PLL status Connect bit */ #define CLKPWR_PLL0STAT_PLLC ((uint32_t)(1<<25)) /** PLL status lock */ #define CLKPWR_PLL0STAT_PLOCK ((uint32_t)(1<<26)) /*********************************************************************//** * Macro defines for PPL0 Feed Register **********************************************************************/ /** PLL0 Feed bit mask */ #define CLKPWR_PLL0FEED_BITMASK ((uint32_t)0xFF) /*********************************************************************//** * Macro defines for PLL1 Control Register **********************************************************************/ /** USB PLL control enable */ #define CLKPWR_PLL1CON_ENABLE ((uint32_t)(0x01)) /** USB PLL control connect */ #define CLKPWR_PLL1CON_CONNECT ((uint32_t)(0x02)) /** USB PLL control bit mask */ #define CLKPWR_PLL1CON_BITMASK ((uint32_t)(0x03)) /*********************************************************************//** * Macro defines for PLL1 Configuration Register **********************************************************************/ /** USB PLL MSEL set value */ #define CLKPWR_PLL1CFG_MSEL(n) ((uint32_t)(n&0x1F)) /** USB PLL PSEL set value */ #define CLKPWR_PLL1CFG_PSEL(n) ((uint32_t)((n&0x03)<<5)) /** USB PLL configuration bit mask */ #define CLKPWR_PLL1CFG_BITMASK ((uint32_t)(0x7F)) /*********************************************************************//** * Macro defines for PLL1 Status Register **********************************************************************/ /** USB PLL MSEL get value */ #define CLKPWR_PLL1STAT_MSEL(n) ((uint32_t)(n&0x1F)) /** USB PLL PSEL get value */ #define CLKPWR_PLL1STAT_PSEL(n) ((uint32_t)((n>>5)&0x03)) /** USB PLL status enable bit */ #define CLKPWR_PLL1STAT_PLLE ((uint32_t)(1<<8)) /** USB PLL status Connect bit */ #define CLKPWR_PLL1STAT_PLLC ((uint32_t)(1<<9)) /** USB PLL status lock */ #define CLKPWR_PLL1STAT_PLOCK ((uint32_t)(1<<10)) /*********************************************************************//** * Macro defines for PLL1 Feed Register **********************************************************************/ /** PLL1 Feed bit mask */ #define CLKPWR_PLL1FEED_BITMASK ((uint32_t)0xFF) /*********************************************************************//** * Macro defines for CPU Clock Configuration Register **********************************************************************/ /** CPU Clock configuration bit mask */ #define CLKPWR_CCLKCFG_BITMASK ((uint32_t)(0xFF)) /*********************************************************************//** * Macro defines for USB Clock Configuration Register **********************************************************************/ /** USB Clock Configuration bit mask */ #define CLKPWR_USBCLKCFG_BITMASK ((uint32_t)(0x0F)) /*********************************************************************//** * Macro defines for IRC Trim Register **********************************************************************/ /** IRC Trim bit mask */ #define CLKPWR_IRCTRIM_BITMASK ((uint32_t)(0x0F)) /*********************************************************************//** * Macro defines for Peripheral Clock Selection Register 0 and 1 **********************************************************************/ /** Peripheral Clock Selection 0 mask bit */ #define CLKPWR_PCLKSEL0_BITMASK ((uint32_t)(0xFFF3F3FF)) /** Peripheral Clock Selection 1 mask bit */ #define CLKPWR_PCLKSEL1_BITMASK ((uint32_t)(0xFCF3F0F3)) /** Macro to set peripheral clock of each type * p: position of two bits that hold divider of peripheral clock * n: value of divider of peripheral clock to be set */ #define CLKPWR_PCLKSEL_SET(p,n) _SBF(p,n) /** Macro to mask peripheral clock of each type */ #define CLKPWR_PCLKSEL_BITMASK(p) _SBF(p,0x03) /** Macro to get peripheral clock of each type */ #define CLKPWR_PCLKSEL_GET(p, n) ((uint32_t)((n>>p)&0x03)) /*********************************************************************//** * Macro defines for Power Mode Control Register **********************************************************************/ /** Power mode control bit 0 */ #define CLKPWR_PCON_PM0 ((uint32_t)(1<<0)) /** Power mode control bit 1 */ #define CLKPWR_PCON_PM1 ((uint32_t)(1<<1)) /** Brown-Out Reduced Power Mode */ #define CLKPWR_PCON_BODPDM ((uint32_t)(1<<2)) /** Brown-Out Global Disable */ #define CLKPWR_PCON_BOGD ((uint32_t)(1<<3)) /** Brown Out Reset Disable */ #define CLKPWR_PCON_BORD ((uint32_t)(1<<4)) /** Sleep Mode entry flag */ #define CLKPWR_PCON_SMFLAG ((uint32_t)(1<<8)) /** Deep Sleep entry flag */ #define CLKPWR_PCON_DSFLAG ((uint32_t)(1<<9)) /** Power-down entry flag */ #define CLKPWR_PCON_PDFLAG ((uint32_t)(1<<10)) /** Deep Power-down entry flag */ #define CLKPWR_PCON_DPDFLAG ((uint32_t)(1<<11)) /*********************************************************************//** * Macro defines for Power Control for Peripheral Register **********************************************************************/ /** Power Control for Peripherals bit mask */ #define CLKPWR_PCONP_BITMASK 0xEFEFF7DE /** * @} */ /* Public Functions ----------------------------------------------------------- */ /** @defgroup CLKPWR_Public_Functions CLKPWR Public Functions * @{ */ void CLKPWR_SetPCLKDiv (uint32_t ClkType, uint32_t DivVal); uint32_t CLKPWR_GetPCLKSEL (uint32_t ClkType); uint32_t CLKPWR_GetPCLK (uint32_t ClkType); void CLKPWR_ConfigPPWR (uint32_t PPType, FunctionalState NewState); void CLKPWR_Sleep(void); void CLKPWR_DeepSleep(void); void CLKPWR_PowerDown(void); void CLKPWR_DeepPowerDown(void); /** * @} */ #ifdef __cplusplus } #endif #endif /* LPC17XX_CLKPWR_H_ */ /** * @} */ /* --------------------------------- End Of File ------------------------------ */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/lpc17xx_libcfg_default.c000644 000765 000024 00000005504 12521603460 026635 0ustar00basvoddestaff000000 000000 /********************************************************************** * $Id$ lpc17xx_libcfg_default.c 2010-05-21 *//** * @file lpc17xx_libcfg_default.c * @brief Library configuration source file (default), used to build * library without examples * @version 2.0 * @date 21. May. 2010 * @author NXP MCU SW Application Team * * Copyright(C) 2010, NXP Semiconductor * All rights reserved. * *********************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under NXP Semiconductors' * relevant copyright in the software, without fee, provided that it * is used in conjunction with NXP Semiconductors microcontrollers. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. **********************************************************************/ /* Library group ----------------------------------------------------------- */ /** @addtogroup LIBCFG_DEFAULT * @{ */ /* Includes ------------------------------------------------------------------- */ #include "lpc17xx_libcfg_default.h" /* Public Functions ----------------------------------------------------------- */ /** @addtogroup LIBCFG_DEFAULT_Public_Functions * @{ */ #ifndef __BUILD_WITH_EXAMPLE__ #ifdef DEBUG /******************************************************************************* * @brief Reports the name of the source file and the source line number * where the CHECK_PARAM error has occurred. * @param[in] file Pointer to the source file name * @param[in] line assert_param error line source number * @return None *******************************************************************************/ void check_failed(uint8_t *file, uint32_t line) { /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\n", file, line) */ /* Infinite loop */ while(1); } #endif /* DEBUG */ #endif /* __BUILD_WITH_EXAMPLE__ */ /** * @} */ /** * @} */ /* --------------------------------- End Of File ------------------------------ */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/lpc17xx_libcfg_default.h000644 000765 000024 00000012163 12521603460 026641 0ustar00basvoddestaff000000 000000 /********************************************************************** * $Id$ lpc17xx_libcfg_default.h 2010-05-21 *//** * @file lpc17xx_libcfg_default.h * @brief Default Library configuration header file * @version 2.0 * @date 21. May. 2010 * @author NXP MCU SW Application Team * * Copyright(C) 2010, NXP Semiconductor * All rights reserved. * *********************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under NXP Semiconductors' * relevant copyright in the software, without fee, provided that it * is used in conjunction with NXP Semiconductors microcontrollers. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. **********************************************************************/ /* Library Configuration group ----------------------------------------------------------- */ /** @defgroup LIBCFG_DEFAULT LIBCFG_DEFAULT (Default Library Configuration) * @ingroup LPC1700CMSIS_FwLib_Drivers * @{ */ #ifndef LPC17XX_LIBCFG_DEFAULT_H_ #define LPC17XX_LIBCFG_DEFAULT_H_ /* Includes ------------------------------------------------------------------- */ #include "lpc_types.h" /* Public Macros -------------------------------------------------------------- */ /** @defgroup LIBCFG_DEFAULT_Public_Macros LIBCFG_DEFAULT Public Macros * @{ */ /************************** DEBUG MODE DEFINITIONS *********************************/ /* Un-comment the line below to compile the library in DEBUG mode, this will expanse the "CHECK_PARAM" macro in the FW library code */ #define DEBUG /******************* PERIPHERAL FW LIBRARY CONFIGURATION DEFINITIONS ***********************/ /* Comment the line below to disable the specific peripheral inclusion */ /* DEBUG_FRAMWORK ------------------------------ */ #define _DBGFWK /* GPIO ------------------------------- */ #define _GPIO /* EXTI ------------------------------- */ #define _EXTI /* UART ------------------------------- */ #define _UART #define _UART0 #define _UART1 #define _UART2 #define _UART3 /* SPI ------------------------------- */ #define _SPI /* SYSTICK --------------------------- */ #define _SYSTICK /* SSP ------------------------------- */ #define _SSP #define _SSP0 #define _SSP1 /* I2C ------------------------------- */ #define _I2C #define _I2C0 #define _I2C1 #define _I2C2 /* TIMER ------------------------------- */ #define _TIM /* WDT ------------------------------- */ #define _WDT /* GPDMA ------------------------------- */ #define _GPDMA /* DAC ------------------------------- */ #define _DAC /* DAC ------------------------------- */ #define _ADC /* PWM ------------------------------- */ #define _PWM #define _PWM1 /* RTC ------------------------------- */ #define _RTC /* I2S ------------------------------- */ #define _I2S /* USB device ------------------------------- */ #define _USBDEV #define _USB_DMA /* QEI ------------------------------- */ #define _QEI /* MCPWM ------------------------------- */ #define _MCPWM /* CAN--------------------------------*/ #define _CAN /* RIT ------------------------------- */ #define _RIT /* EMAC ------------------------------ */ #define _EMAC /************************** GLOBAL/PUBLIC MACRO DEFINITIONS *********************************/ #ifdef DEBUG /******************************************************************************* * @brief The CHECK_PARAM macro is used for function's parameters check. * It is used only if the library is compiled in DEBUG mode. * @param[in] expr - If expr is false, it calls check_failed() function * which reports the name of the source file and the source * line number of the call that failed. * - If expr is true, it returns no value. * @return None *******************************************************************************/ #define CHECK_PARAM(expr) ((expr) ? (void)0 : check_failed((uint8_t *)__FILE__, __LINE__)) #else #define CHECK_PARAM(expr) #endif /* DEBUG */ /** * @} */ /* Public Functions ----------------------------------------------------------- */ /** @defgroup LIBCFG_DEFAULT_Public_Functions LIBCFG_DEFAULT Public Functions * @{ */ #ifdef DEBUG void check_failed(uint8_t *file, uint32_t line); #endif /** * @} */ #endif /* LPC17XX_LIBCFG_DEFAULT_H_ */ /** * @} */ /* --------------------------------- End Of File ------------------------------ */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/lpc17xx_pinsel.h000644 000765 000024 00000017670 12521603460 025211 0ustar00basvoddestaff000000 000000 /********************************************************************** * $Id$ lpc17xx_pinsel.h 2010-05-21 *//** * @file lpc17xx_pinsel.h * @brief Contains all macro definitions and function prototypes * support for Pin connect block firmware library on LPC17xx * @version 2.0 * @date 21. May. 2010 * @author NXP MCU SW Application Team * * Copyright(C) 2010, NXP Semiconductor * All rights reserved. * *********************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under NXP Semiconductors' * relevant copyright in the software, without fee, provided that it * is used in conjunction with NXP Semiconductors microcontrollers. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. **********************************************************************/ /* Peripheral group ----------------------------------------------------------- */ /** @defgroup PINSEL PINSEL (Pin Selection) * @ingroup LPC1700CMSIS_FwLib_Drivers * @{ */ #ifndef LPC17XX_PINSEL_H_ #define LPC17XX_PINSEL_H_ /* Includes ------------------------------------------------------------------- */ #include "LPC17xx.h" #include "lpc_types.h" #ifdef __cplusplus extern "C" { #endif /* Public Macros -------------------------------------------------------------- */ /** @defgroup PINSEL_Public_Macros PINSEL Public Macros * @{ */ /*********************************************************************//** *!< Macros define for PORT Selection ***********************************************************************/ #define PINSEL_PORT_0 ((0)) /**< PORT 0*/ #define PINSEL_PORT_1 ((1)) /**< PORT 1*/ #define PINSEL_PORT_2 ((2)) /**< PORT 2*/ #define PINSEL_PORT_3 ((3)) /**< PORT 3*/ #define PINSEL_PORT_4 ((4)) /**< PORT 4*/ /*********************************************************************** * Macros define for Pin Function selection **********************************************************************/ #define PINSEL_FUNC_0 ((0)) /**< default function*/ #define PINSEL_FUNC_1 ((1)) /**< first alternate function*/ #define PINSEL_FUNC_2 ((2)) /**< second alternate function*/ #define PINSEL_FUNC_3 ((3)) /**< third or reserved alternate function*/ /*********************************************************************** * Macros define for Pin Number of Port **********************************************************************/ #define PINSEL_PIN_0 ((0)) /**< Pin 0 */ #define PINSEL_PIN_1 ((1)) /**< Pin 1 */ #define PINSEL_PIN_2 ((2)) /**< Pin 2 */ #define PINSEL_PIN_3 ((3)) /**< Pin 3 */ #define PINSEL_PIN_4 ((4)) /**< Pin 4 */ #define PINSEL_PIN_5 ((5)) /**< Pin 5 */ #define PINSEL_PIN_6 ((6)) /**< Pin 6 */ #define PINSEL_PIN_7 ((7)) /**< Pin 7 */ #define PINSEL_PIN_8 ((8)) /**< Pin 8 */ #define PINSEL_PIN_9 ((9)) /**< Pin 9 */ #define PINSEL_PIN_10 ((10)) /**< Pin 10 */ #define PINSEL_PIN_11 ((11)) /**< Pin 11 */ #define PINSEL_PIN_12 ((12)) /**< Pin 12 */ #define PINSEL_PIN_13 ((13)) /**< Pin 13 */ #define PINSEL_PIN_14 ((14)) /**< Pin 14 */ #define PINSEL_PIN_15 ((15)) /**< Pin 15 */ #define PINSEL_PIN_16 ((16)) /**< Pin 16 */ #define PINSEL_PIN_17 ((17)) /**< Pin 17 */ #define PINSEL_PIN_18 ((18)) /**< Pin 18 */ #define PINSEL_PIN_19 ((19)) /**< Pin 19 */ #define PINSEL_PIN_20 ((20)) /**< Pin 20 */ #define PINSEL_PIN_21 ((21)) /**< Pin 21 */ #define PINSEL_PIN_22 ((22)) /**< Pin 22 */ #define PINSEL_PIN_23 ((23)) /**< Pin 23 */ #define PINSEL_PIN_24 ((24)) /**< Pin 24 */ #define PINSEL_PIN_25 ((25)) /**< Pin 25 */ #define PINSEL_PIN_26 ((26)) /**< Pin 26 */ #define PINSEL_PIN_27 ((27)) /**< Pin 27 */ #define PINSEL_PIN_28 ((28)) /**< Pin 28 */ #define PINSEL_PIN_29 ((29)) /**< Pin 29 */ #define PINSEL_PIN_30 ((30)) /**< Pin 30 */ #define PINSEL_PIN_31 ((31)) /**< Pin 31 */ /*********************************************************************** * Macros define for Pin mode **********************************************************************/ #define PINSEL_PINMODE_PULLUP ((0)) /**< Internal pull-up resistor*/ #define PINSEL_PINMODE_TRISTATE ((2)) /**< Tri-state */ #define PINSEL_PINMODE_PULLDOWN ((3)) /**< Internal pull-down resistor */ /*********************************************************************** * Macros define for Pin mode (normal/open drain) **********************************************************************/ #define PINSEL_PINMODE_NORMAL ((0)) /**< Pin is in the normal (not open drain) mode.*/ #define PINSEL_PINMODE_OPENDRAIN ((1)) /**< Pin is in the open drain mode */ /*********************************************************************** * Macros define for I2C mode ***********************************************************************/ #define PINSEL_I2C_Normal_Mode ((0)) /**< The standard drive mode */ #define PINSEL_I2C_Fast_Mode ((1)) /**< Fast Mode Plus drive mode */ /** * @} */ /* Private Macros ------------------------------------------------------------- */ /** @defgroup PINSEL_Private_Macros PINSEL Private Macros * @{ */ /* Pin selection define */ /* I2C Pin Configuration register bit description */ #define PINSEL_I2CPADCFG_SDADRV0 _BIT(0) /**< Drive mode control for the SDA0 pin, P0.27 */ #define PINSEL_I2CPADCFG_SDAI2C0 _BIT(1) /**< I2C mode control for the SDA0 pin, P0.27 */ #define PINSEL_I2CPADCFG_SCLDRV0 _BIT(2) /**< Drive mode control for the SCL0 pin, P0.28 */ #define PINSEL_I2CPADCFG_SCLI2C0 _BIT(3) /**< I2C mode control for the SCL0 pin, P0.28 */ /** * @} */ /* Public Types --------------------------------------------------------------- */ /** @defgroup PINSEL_Public_Types PINSEL Public Types * @{ */ /** @brief Pin configuration structure */ typedef struct { uint8_t Portnum; /**< Port Number, should be PINSEL_PORT_x, where x should be in range from 0 to 4 */ uint8_t Pinnum; /**< Pin Number, should be PINSEL_PIN_x, where x should be in range from 0 to 31 */ uint8_t Funcnum; /**< Function Number, should be PINSEL_FUNC_x, where x should be in range from 0 to 3 */ uint8_t Pinmode; /**< Pin Mode, should be: - PINSEL_PINMODE_PULLUP: Internal pull-up resistor - PINSEL_PINMODE_TRISTATE: Tri-state - PINSEL_PINMODE_PULLDOWN: Internal pull-down resistor */ uint8_t OpenDrain; /**< OpenDrain mode, should be: - PINSEL_PINMODE_NORMAL: Pin is in the normal (not open drain) mode - PINSEL_PINMODE_OPENDRAIN: Pin is in the open drain mode */ } PINSEL_CFG_Type; /** * @} */ /* Public Functions ----------------------------------------------------------- */ /** @defgroup PINSEL_Public_Functions PINSEL Public Functions * @{ */ void PINSEL_ConfigPin(PINSEL_CFG_Type *PinCfg); void PINSEL_ConfigTraceFunc (FunctionalState NewState); void PINSEL_SetI2C0Pins(uint8_t i2cPinMode, FunctionalState filterSlewRateEnable); /** * @} */ #ifdef __cplusplus } #endif #endif /* LPC17XX_PINSEL_H_ */ /** * @} */ /* --------------------------------- End Of File ------------------------------ */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/lpc17xx_timer.c000644 000765 000024 00000051225 12521603460 025024 0ustar00basvoddestaff000000 000000 /********************************************************************** * $Id$ lpc17xx_timer.c 2011-03-10 *//** * @file lpc17xx_timer.c * @brief Contains all functions support for Timer firmware library * on LPC17xx * @version 3.1 * @date 10. March. 2011 * @author NXP MCU SW Application Team * * Copyright(C) 2011, NXP Semiconductor * All rights reserved. * *********************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under NXP Semiconductors' * relevant copyright in the software, without fee, provided that it * is used in conjunction with NXP Semiconductors microcontrollers. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. **********************************************************************/ /* Peripheral group ----------------------------------------------------------- */ /** @addtogroup TIM * @{ */ /* Includes ------------------------------------------------------------------- */ #include "lpc17xx_timer.h" #include "lpc17xx_clkpwr.h" #include "lpc17xx_pinsel.h" /* If this source file built with example, the LPC17xx FW library configuration * file in each example directory ("lpc17xx_libcfg.h") must be included, * otherwise the default FW library configuration file must be included instead */ #ifdef __BUILD_WITH_EXAMPLE__ #include "lpc17xx_libcfg.h" #else #include "lpc17xx_libcfg_default.h" #endif /* __BUILD_WITH_EXAMPLE__ */ #ifdef _TIM /* Private Functions ---------------------------------------------------------- */ static uint32_t getPClock (uint32_t timernum); static uint32_t converUSecToVal (uint32_t timernum, uint32_t usec); static uint32_t converPtrToTimeNum (LPC_TIM_TypeDef *TIMx); /*********************************************************************//** * @brief Get peripheral clock of each timer controller * @param[in] timernum Timer number * @return Peripheral clock of timer **********************************************************************/ static uint32_t getPClock (uint32_t timernum) { uint32_t clkdlycnt; switch (timernum) { case 0: clkdlycnt = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_TIMER0); break; case 1: clkdlycnt = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_TIMER1); break; case 2: clkdlycnt = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_TIMER2); break; case 3: clkdlycnt = CLKPWR_GetPCLK (CLKPWR_PCLKSEL_TIMER3); break; } return clkdlycnt; } /*********************************************************************//** * @brief Convert a time to a timer count value * @param[in] timernum Timer number * @param[in] usec Time in microseconds * @return The number of required clock ticks to give the time delay **********************************************************************/ uint32_t converUSecToVal (uint32_t timernum, uint32_t usec) { uint64_t clkdlycnt; // Get Pclock of timer clkdlycnt = (uint64_t) getPClock(timernum); clkdlycnt = (clkdlycnt * usec) / 1000000; return (uint32_t) clkdlycnt; } /*********************************************************************//** * @brief Convert a timer register pointer to a timer number * @param[in] TIMx Pointer to LPC_TIM_TypeDef, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @return The timer number (0 to 3) or 0xFFFF FFFF if register pointer is bad **********************************************************************/ uint32_t converPtrToTimeNum (LPC_TIM_TypeDef *TIMx) { uint32_t tnum = 0xFFFFFFFF; if (TIMx == LPC_TIM0) { tnum = 0; } else if (TIMx == LPC_TIM1) { tnum = 1; } else if (TIMx == LPC_TIM2) { tnum = 2; } else if (TIMx == LPC_TIM3) { tnum = 3; } return tnum; } /* End of Private Functions ---------------------------------------------------- */ /* Public Functions ----------------------------------------------------------- */ /** @addtogroup TIM_Public_Functions * @{ */ /*********************************************************************//** * @brief Get Interrupt Status * @param[in] TIMx Timer selection, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @param[in] IntFlag: interrupt type, should be: * - TIM_MR0_INT: Interrupt for Match channel 0 * - TIM_MR1_INT: Interrupt for Match channel 1 * - TIM_MR2_INT: Interrupt for Match channel 2 * - TIM_MR3_INT: Interrupt for Match channel 3 * - TIM_CR0_INT: Interrupt for Capture channel 0 * - TIM_CR1_INT: Interrupt for Capture channel 1 * @return FlagStatus * - SET : interrupt * - RESET : no interrupt **********************************************************************/ FlagStatus TIM_GetIntStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag) { uint8_t temp; CHECK_PARAM(PARAM_TIMx(TIMx)); CHECK_PARAM(PARAM_TIM_INT_TYPE(IntFlag)); temp = (TIMx->IR)& TIM_IR_CLR(IntFlag); if (temp) return SET; return RESET; } /*********************************************************************//** * @brief Get Capture Interrupt Status * @param[in] TIMx Timer selection, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @param[in] IntFlag: interrupt type, should be: * - TIM_MR0_INT: Interrupt for Match channel 0 * - TIM_MR1_INT: Interrupt for Match channel 1 * - TIM_MR2_INT: Interrupt for Match channel 2 * - TIM_MR3_INT: Interrupt for Match channel 3 * - TIM_CR0_INT: Interrupt for Capture channel 0 * - TIM_CR1_INT: Interrupt for Capture channel 1 * @return FlagStatus * - SET : interrupt * - RESET : no interrupt **********************************************************************/ FlagStatus TIM_GetIntCaptureStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag) { uint8_t temp; CHECK_PARAM(PARAM_TIMx(TIMx)); CHECK_PARAM(PARAM_TIM_INT_TYPE(IntFlag)); temp = (TIMx->IR) & (1<<(4+IntFlag)); if(temp) return SET; return RESET; } /*********************************************************************//** * @brief Clear Interrupt pending * @param[in] TIMx Timer selection, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @param[in] IntFlag: interrupt type, should be: * - TIM_MR0_INT: Interrupt for Match channel 0 * - TIM_MR1_INT: Interrupt for Match channel 1 * - TIM_MR2_INT: Interrupt for Match channel 2 * - TIM_MR3_INT: Interrupt for Match channel 3 * - TIM_CR0_INT: Interrupt for Capture channel 0 * - TIM_CR1_INT: Interrupt for Capture channel 1 * @return None **********************************************************************/ void TIM_ClearIntPending(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag) { CHECK_PARAM(PARAM_TIMx(TIMx)); CHECK_PARAM(PARAM_TIM_INT_TYPE(IntFlag)); TIMx->IR = TIM_IR_CLR(IntFlag); } /*********************************************************************//** * @brief Clear Capture Interrupt pending * @param[in] TIMx Timer selection, should be * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @param[in] IntFlag interrupt type, should be: * - TIM_MR0_INT: Interrupt for Match channel 0 * - TIM_MR1_INT: Interrupt for Match channel 1 * - TIM_MR2_INT: Interrupt for Match channel 2 * - TIM_MR3_INT: Interrupt for Match channel 3 * - TIM_CR0_INT: Interrupt for Capture channel 0 * - TIM_CR1_INT: Interrupt for Capture channel 1 * @return None **********************************************************************/ void TIM_ClearIntCapturePending(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag) { CHECK_PARAM(PARAM_TIMx(TIMx)); CHECK_PARAM(PARAM_TIM_INT_TYPE(IntFlag)); TIMx->IR = (1<<(4+IntFlag)); } /*********************************************************************//** * @brief Configuration for Timer at initial time * @param[in] TimerCounterMode timer counter mode, should be: * - TIM_TIMER_MODE: Timer mode * - TIM_COUNTER_RISING_MODE: Counter rising mode * - TIM_COUNTER_FALLING_MODE: Counter falling mode * - TIM_COUNTER_ANY_MODE:Counter on both edges * @param[in] TIM_ConfigStruct pointer to TIM_TIMERCFG_Type or * TIM_COUNTERCFG_Type * @return None **********************************************************************/ void TIM_ConfigStructInit(TIM_MODE_OPT TimerCounterMode, void *TIM_ConfigStruct) { if (TimerCounterMode == TIM_TIMER_MODE ) { TIM_TIMERCFG_Type * pTimeCfg = (TIM_TIMERCFG_Type *)TIM_ConfigStruct; pTimeCfg->PrescaleOption = TIM_PRESCALE_USVAL; pTimeCfg->PrescaleValue = 1; } else { TIM_COUNTERCFG_Type * pCounterCfg = (TIM_COUNTERCFG_Type *)TIM_ConfigStruct; pCounterCfg->CountInputSelect = TIM_COUNTER_INCAP0; } } /*********************************************************************//** * @brief Initial Timer/Counter device * Set Clock frequency for Timer * Set initial configuration for Timer * @param[in] TIMx Timer selection, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @param[in] TimerCounterMode Timer counter mode, should be: * - TIM_TIMER_MODE: Timer mode * - TIM_COUNTER_RISING_MODE: Counter rising mode * - TIM_COUNTER_FALLING_MODE: Counter falling mode * - TIM_COUNTER_ANY_MODE:Counter on both edges * @param[in] TIM_ConfigStruct pointer to TIM_TIMERCFG_Type * that contains the configuration information for the * specified Timer peripheral. * @return None **********************************************************************/ void TIM_Init(LPC_TIM_TypeDef *TIMx, TIM_MODE_OPT TimerCounterMode, void *TIM_ConfigStruct) { TIM_TIMERCFG_Type *pTimeCfg; TIM_COUNTERCFG_Type *pCounterCfg; CHECK_PARAM(PARAM_TIMx(TIMx)); CHECK_PARAM(PARAM_TIM_MODE_OPT(TimerCounterMode)); //set power if (TIMx== LPC_TIM0) { CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM0, ENABLE); //PCLK_Timer0 = CCLK/4 CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_TIMER0, CLKPWR_PCLKSEL_CCLK_DIV_4); } else if (TIMx== LPC_TIM1) { CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM1, ENABLE); //PCLK_Timer1 = CCLK/4 CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_TIMER1, CLKPWR_PCLKSEL_CCLK_DIV_4); } else if (TIMx== LPC_TIM2) { CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM2, ENABLE); //PCLK_Timer2= CCLK/4 CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_TIMER2, CLKPWR_PCLKSEL_CCLK_DIV_4); } else if (TIMx== LPC_TIM3) { CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM3, ENABLE); //PCLK_Timer3= CCLK/4 CLKPWR_SetPCLKDiv (CLKPWR_PCLKSEL_TIMER3, CLKPWR_PCLKSEL_CCLK_DIV_4); } TIMx->CCR &= ~TIM_CTCR_MODE_MASK; TIMx->CCR |= TIM_TIMER_MODE; TIMx->TC =0; TIMx->PC =0; TIMx->PR =0; TIMx->TCR |= (1<<1); //Reset Counter TIMx->TCR &= ~(1<<1); //release reset if (TimerCounterMode == TIM_TIMER_MODE ) { pTimeCfg = (TIM_TIMERCFG_Type *)TIM_ConfigStruct; if (pTimeCfg->PrescaleOption == TIM_PRESCALE_TICKVAL) { TIMx->PR = pTimeCfg->PrescaleValue -1 ; } else { TIMx->PR = converUSecToVal (converPtrToTimeNum(TIMx),pTimeCfg->PrescaleValue)-1; } } else { pCounterCfg = (TIM_COUNTERCFG_Type *)TIM_ConfigStruct; TIMx->CCR &= ~TIM_CTCR_INPUT_MASK; if (pCounterCfg->CountInputSelect == TIM_COUNTER_INCAP1) TIMx->CCR |= _BIT(2); } // Clear interrupt pending TIMx->IR = 0xFFFFFFFF; } /*********************************************************************//** * @brief Close Timer/Counter device * @param[in] TIMx Pointer to timer device, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @return None **********************************************************************/ void TIM_DeInit (LPC_TIM_TypeDef *TIMx) { CHECK_PARAM(PARAM_TIMx(TIMx)); // Disable timer/counter TIMx->TCR = 0x00; // Disable power if (TIMx== LPC_TIM0) CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM0, DISABLE); else if (TIMx== LPC_TIM1) CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM1, DISABLE); else if (TIMx== LPC_TIM2) CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM2, DISABLE); else if (TIMx== LPC_TIM3) CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCTIM2, DISABLE); } /*********************************************************************//** * @brief Start/Stop Timer/Counter device * @param[in] TIMx Pointer to timer device, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @param[in] NewState * - ENABLE : set timer enable * - DISABLE : disable timer * @return None **********************************************************************/ void TIM_Cmd(LPC_TIM_TypeDef *TIMx, FunctionalState NewState) { CHECK_PARAM(PARAM_TIMx(TIMx)); if (NewState == ENABLE) { TIMx->TCR |= TIM_ENABLE; } else { TIMx->TCR &= ~TIM_ENABLE; } } /*********************************************************************//** * @brief Reset Timer/Counter device, * Make TC and PC are synchronously reset on the next * positive edge of PCLK * @param[in] TIMx Pointer to timer device, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @return None **********************************************************************/ void TIM_ResetCounter(LPC_TIM_TypeDef *TIMx) { CHECK_PARAM(PARAM_TIMx(TIMx)); TIMx->TCR |= TIM_RESET; TIMx->TCR &= ~TIM_RESET; } /*********************************************************************//** * @brief Configuration for Match register * @param[in] TIMx Pointer to timer device, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @param[in] TIM_MatchConfigStruct Pointer to TIM_MATCHCFG_Type * - MatchChannel : choose channel 0 or 1 * - IntOnMatch : if SET, interrupt will be generated when MRxx match * the value in TC * - StopOnMatch : if SET, TC and PC will be stopped whenM Rxx match * the value in TC * - ResetOnMatch : if SET, Reset on MR0 when MRxx match * the value in TC * -ExtMatchOutputType: Select output for external match * + 0: Do nothing for external output pin if match * + 1: Force external output pin to low if match * + 2: Force external output pin to high if match * + 3: Toggle external output pin if match * MatchValue: Set the value to be compared with TC value * @return None **********************************************************************/ void TIM_ConfigMatch(LPC_TIM_TypeDef *TIMx, TIM_MATCHCFG_Type *TIM_MatchConfigStruct) { CHECK_PARAM(PARAM_TIMx(TIMx)); CHECK_PARAM(PARAM_TIM_EXTMATCH_OPT(TIM_MatchConfigStruct->ExtMatchOutputType)); switch(TIM_MatchConfigStruct->MatchChannel) { case 0: TIMx->MR0 = TIM_MatchConfigStruct->MatchValue; break; case 1: TIMx->MR1 = TIM_MatchConfigStruct->MatchValue; break; case 2: TIMx->MR2 = TIM_MatchConfigStruct->MatchValue; break; case 3: TIMx->MR3 = TIM_MatchConfigStruct->MatchValue; break; default: //Error match value //Error loop while(1); } //interrupt on MRn TIMx->MCR &=~TIM_MCR_CHANNEL_MASKBIT(TIM_MatchConfigStruct->MatchChannel); if (TIM_MatchConfigStruct->IntOnMatch) TIMx->MCR |= TIM_INT_ON_MATCH(TIM_MatchConfigStruct->MatchChannel); //reset on MRn if (TIM_MatchConfigStruct->ResetOnMatch) TIMx->MCR |= TIM_RESET_ON_MATCH(TIM_MatchConfigStruct->MatchChannel); //stop on MRn if (TIM_MatchConfigStruct->StopOnMatch) TIMx->MCR |= TIM_STOP_ON_MATCH(TIM_MatchConfigStruct->MatchChannel); // match output type TIMx->EMR &= ~TIM_EM_MASK(TIM_MatchConfigStruct->MatchChannel); TIMx->EMR |= TIM_EM_SET(TIM_MatchConfigStruct->MatchChannel,TIM_MatchConfigStruct->ExtMatchOutputType); } /*********************************************************************//** * @brief Update Match value * @param[in] TIMx Pointer to timer device, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @param[in] MatchChannel Match channel, should be: 0..3 * @param[in] MatchValue updated match value * @return None **********************************************************************/ void TIM_UpdateMatchValue(LPC_TIM_TypeDef *TIMx,uint8_t MatchChannel, uint32_t MatchValue) { CHECK_PARAM(PARAM_TIMx(TIMx)); switch(MatchChannel) { case 0: TIMx->MR0 = MatchValue; break; case 1: TIMx->MR1 = MatchValue; break; case 2: TIMx->MR2 = MatchValue; break; case 3: TIMx->MR3 = MatchValue; break; default: //Error Loop while(1); } } /*********************************************************************//** * @brief Configuration for Capture register * @param[in] TIMx Pointer to timer device, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * - CaptureChannel: set the channel to capture data * - RisingEdge : if SET, Capture at rising edge * - FallingEdge : if SET, Capture at falling edge * - IntOnCaption : if SET, Capture generate interrupt * @param[in] TIM_CaptureConfigStruct Pointer to TIM_CAPTURECFG_Type * @return None **********************************************************************/ void TIM_ConfigCapture(LPC_TIM_TypeDef *TIMx, TIM_CAPTURECFG_Type *TIM_CaptureConfigStruct) { CHECK_PARAM(PARAM_TIMx(TIMx)); TIMx->CCR &= ~TIM_CCR_CHANNEL_MASKBIT(TIM_CaptureConfigStruct->CaptureChannel); if (TIM_CaptureConfigStruct->RisingEdge) TIMx->CCR |= TIM_CAP_RISING(TIM_CaptureConfigStruct->CaptureChannel); if (TIM_CaptureConfigStruct->FallingEdge) TIMx->CCR |= TIM_CAP_FALLING(TIM_CaptureConfigStruct->CaptureChannel); if (TIM_CaptureConfigStruct->IntOnCaption) TIMx->CCR |= TIM_INT_ON_CAP(TIM_CaptureConfigStruct->CaptureChannel); } /*********************************************************************//** * @brief Read value of capture register in timer/counter device * @param[in] TIMx Pointer to timer/counter device, should be: * - LPC_TIM0: TIMER0 peripheral * - LPC_TIM1: TIMER1 peripheral * - LPC_TIM2: TIMER2 peripheral * - LPC_TIM3: TIMER3 peripheral * @param[in] CaptureChannel: capture channel number, should be: * - TIM_COUNTER_INCAP0: CAPn.0 input pin for TIMERn * - TIM_COUNTER_INCAP1: CAPn.1 input pin for TIMERn * @return Value of capture register **********************************************************************/ uint32_t TIM_GetCaptureValue(LPC_TIM_TypeDef *TIMx, TIM_COUNTER_INPUT_OPT CaptureChannel) { CHECK_PARAM(PARAM_TIMx(TIMx)); CHECK_PARAM(PARAM_TIM_COUNTER_INPUT_OPT(CaptureChannel)); if(CaptureChannel==0) return TIMx->CR0; else return TIMx->CR1; } /** * @} */ #endif /* _TIMER */ /** * @} */ /* --------------------------------- End Of File ------------------------------ */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/lpc17xx_timer.h000644 000765 000024 00000034642 12521603460 025035 0ustar00basvoddestaff000000 000000 /********************************************************************** * $Id$ lpc17xx_timer.h 2010-05-21 *//** * @file lpc17xx_timer.h * @brief Contains all macro definitions and function prototypes * support for Timer firmware library on LPC17xx * @version 2.0 * @date 21. May. 2010 * @author NXP MCU SW Application Team * * Copyright(C) 2010, NXP Semiconductor * All rights reserved. * *********************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under NXP Semiconductors' * relevant copyright in the software, without fee, provided that it * is used in conjunction with NXP Semiconductors microcontrollers. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. **********************************************************************/ /* Peripheral group ----------------------------------------------------------- */ /** @defgroup TIM TIM (Timer) * @ingroup LPC1700CMSIS_FwLib_Drivers * @{ */ #ifndef __LPC17XX_TIMER_H_ #define __LPC17XX_TIMER_H_ /* Includes ------------------------------------------------------------------- */ #include "LPC17xx.h" #include "lpc_types.h" #ifdef __cplusplus extern "C" { #endif /* Private Macros ------------------------------------------------------------- */ /** @defgroup TIM_Private_Macros TIM Private Macros * @{ */ /* --------------------- BIT DEFINITIONS -------------------------------------- */ /********************************************************************** ** Interrupt information **********************************************************************/ /** Macro to clean interrupt pending */ #define TIM_IR_CLR(n) _BIT(n) /********************************************************************** ** Timer interrupt register definitions **********************************************************************/ /** Macro for getting a timer match interrupt bit */ #define TIM_MATCH_INT(n) (_BIT(n & 0x0F)) /** Macro for getting a capture event interrupt bit */ #define TIM_CAP_INT(n) (_BIT(((n & 0x0F) + 4))) /********************************************************************** * Timer control register definitions **********************************************************************/ /** Timer/counter enable bit */ #define TIM_ENABLE ((uint32_t)(1<<0)) /** Timer/counter reset bit */ #define TIM_RESET ((uint32_t)(1<<1)) /** Timer control bit mask */ #define TIM_TCR_MASKBIT ((uint32_t)(3)) /********************************************************************** * Timer match control register definitions **********************************************************************/ /** Bit location for interrupt on MRx match, n = 0 to 3 */ #define TIM_INT_ON_MATCH(n) (_BIT((n * 3))) /** Bit location for reset on MRx match, n = 0 to 3 */ #define TIM_RESET_ON_MATCH(n) (_BIT(((n * 3) + 1))) /** Bit location for stop on MRx match, n = 0 to 3 */ #define TIM_STOP_ON_MATCH(n) (_BIT(((n * 3) + 2))) /** Timer Match control bit mask */ #define TIM_MCR_MASKBIT ((uint32_t)(0x0FFF)) /** Timer Match control bit mask for specific channel*/ #define TIM_MCR_CHANNEL_MASKBIT(n) ((uint32_t)(7<<(n*3))) /********************************************************************** * Timer capture control register definitions **********************************************************************/ /** Bit location for CAP.n on CRx rising edge, n = 0 to 3 */ #define TIM_CAP_RISING(n) (_BIT((n * 3))) /** Bit location for CAP.n on CRx falling edge, n = 0 to 3 */ #define TIM_CAP_FALLING(n) (_BIT(((n * 3) + 1))) /** Bit location for CAP.n on CRx interrupt enable, n = 0 to 3 */ #define TIM_INT_ON_CAP(n) (_BIT(((n * 3) + 2))) /** Mask bit for rising and falling edge bit */ #define TIM_EDGE_MASK(n) (_SBF((n * 3), 0x03)) /** Timer capture control bit mask */ #define TIM_CCR_MASKBIT ((uint32_t)(0x3F)) /** Timer Capture control bit mask for specific channel*/ #define TIM_CCR_CHANNEL_MASKBIT(n) ((uint32_t)(7<<(n*3))) /********************************************************************** * Timer external match register definitions **********************************************************************/ /** Bit location for output state change of MAT.n when external match happens, n = 0 to 3 */ #define TIM_EM(n) _BIT(n) /** Output state change of MAT.n when external match happens: no change */ #define TIM_EM_NOTHING ((uint8_t)(0x0)) /** Output state change of MAT.n when external match happens: low */ #define TIM_EM_LOW ((uint8_t)(0x1)) /** Output state change of MAT.n when external match happens: high */ #define TIM_EM_HIGH ((uint8_t)(0x2)) /** Output state change of MAT.n when external match happens: toggle */ #define TIM_EM_TOGGLE ((uint8_t)(0x3)) /** Macro for setting for the MAT.n change state bits */ #define TIM_EM_SET(n,s) (_SBF(((n << 1) + 4), (s & 0x03))) /** Mask for the MAT.n change state bits */ #define TIM_EM_MASK(n) (_SBF(((n << 1) + 4), 0x03)) /** Timer external match bit mask */ #define TIM_EMR_MASKBIT 0x0FFF /********************************************************************** * Timer Count Control Register definitions **********************************************************************/ /** Mask to get the Counter/timer mode bits */ #define TIM_CTCR_MODE_MASK 0x3 /** Mask to get the count input select bits */ #define TIM_CTCR_INPUT_MASK 0xC /** Timer Count control bit mask */ #define TIM_CTCR_MASKBIT 0xF #define TIM_COUNTER_MODE ((uint8_t)(1)) /* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */ /** Macro to determine if it is valid TIMER peripheral */ #define PARAM_TIMx(n) ((((uint32_t *)n)==((uint32_t *)LPC_TIM0)) || (((uint32_t *)n)==((uint32_t *)LPC_TIM1)) \ || (((uint32_t *)n)==((uint32_t *)LPC_TIM2)) || (((uint32_t *)n)==((uint32_t *)LPC_TIM3))) /* Macro check interrupt type */ #define PARAM_TIM_INT_TYPE(TYPE) ((TYPE ==TIM_MR0_INT)||(TYPE ==TIM_MR1_INT)\ ||(TYPE ==TIM_MR2_INT)||(TYPE ==TIM_MR3_INT)\ ||(TYPE ==TIM_CR0_INT)||(TYPE ==TIM_CR1_INT)) /* Macro check TIMER mode */ #define PARAM_TIM_MODE_OPT(MODE) ((MODE == TIM_TIMER_MODE)||(MODE == TIM_COUNTER_RISING_MODE)\ || (MODE == TIM_COUNTER_RISING_MODE)||(MODE == TIM_COUNTER_RISING_MODE)) /* Macro check TIMER prescale value */ #define PARAM_TIM_PRESCALE_OPT(OPT) ((OPT == TIM_PRESCALE_TICKVAL)||(OPT == TIM_PRESCALE_USVAL)) /* Macro check TIMER counter intput mode */ #define PARAM_TIM_COUNTER_INPUT_OPT(OPT) ((OPT == TIM_COUNTER_INCAP0)||(OPT == TIM_COUNTER_INCAP1)) /* Macro check TIMER external match mode */ #define PARAM_TIM_EXTMATCH_OPT(OPT) ((OPT == TIM_EXTMATCH_NOTHING)||(OPT == TIM_EXTMATCH_LOW)\ ||(OPT == TIM_EXTMATCH_HIGH)||(OPT == TIM_EXTMATCH_TOGGLE)) /* Macro check TIMER external match mode */ #define PARAM_TIM_CAP_MODE_OPT(OPT) ((OPT == TIM_CAPTURE_NONE)||(OPT == TIM_CAPTURE_RISING) \ ||(OPT == TIM_CAPTURE_FALLING)||(OPT == TIM_CAPTURE_ANY)) /** * @} */ /* Public Types --------------------------------------------------------------- */ /** @defgroup TIM_Public_Types TIM Public Types * @{ */ /*********************************************************************** * Timer device enumeration **********************************************************************/ /** @brief interrupt type */ typedef enum { TIM_MR0_INT =0, /*!< interrupt for Match channel 0*/ TIM_MR1_INT =1, /*!< interrupt for Match channel 1*/ TIM_MR2_INT =2, /*!< interrupt for Match channel 2*/ TIM_MR3_INT =3, /*!< interrupt for Match channel 3*/ TIM_CR0_INT =4, /*!< interrupt for Capture channel 0*/ TIM_CR1_INT =5 /*!< interrupt for Capture channel 1*/ }TIM_INT_TYPE; /** @brief Timer/counter operating mode */ typedef enum { TIM_TIMER_MODE = 0, /*!< Timer mode */ TIM_COUNTER_RISING_MODE, /*!< Counter rising mode */ TIM_COUNTER_FALLING_MODE, /*!< Counter falling mode */ TIM_COUNTER_ANY_MODE /*!< Counter on both edges */ } TIM_MODE_OPT; /** @brief Timer/Counter prescale option */ typedef enum { TIM_PRESCALE_TICKVAL = 0, /*!< Prescale in absolute value */ TIM_PRESCALE_USVAL /*!< Prescale in microsecond value */ } TIM_PRESCALE_OPT; /** @brief Counter input option */ typedef enum { TIM_COUNTER_INCAP0 = 0, /*!< CAPn.0 input pin for TIMERn */ TIM_COUNTER_INCAP1, /*!< CAPn.1 input pin for TIMERn */ } TIM_COUNTER_INPUT_OPT; /** @brief Timer/Counter external match option */ typedef enum { TIM_EXTMATCH_NOTHING = 0, /*!< Do nothing for external output pin if match */ TIM_EXTMATCH_LOW, /*!< Force external output pin to low if match */ TIM_EXTMATCH_HIGH, /*!< Force external output pin to high if match */ TIM_EXTMATCH_TOGGLE /*!< Toggle external output pin if match */ }TIM_EXTMATCH_OPT; /** @brief Timer/counter capture mode options */ typedef enum { TIM_CAPTURE_NONE = 0, /*!< No Capture */ TIM_CAPTURE_RISING, /*!< Rising capture mode */ TIM_CAPTURE_FALLING, /*!< Falling capture mode */ TIM_CAPTURE_ANY /*!< On both edges */ } TIM_CAP_MODE_OPT; /** @brief Configuration structure in TIMER mode */ typedef struct { uint8_t PrescaleOption; /**< Timer Prescale option, should be: - TIM_PRESCALE_TICKVAL: Prescale in absolute value - TIM_PRESCALE_USVAL: Prescale in microsecond value */ uint8_t Reserved[3]; /**< Reserved */ uint32_t PrescaleValue; /**< Prescale value */ } TIM_TIMERCFG_Type; /** @brief Configuration structure in COUNTER mode */ typedef struct { uint8_t CounterOption; /**< Counter Option, should be: - TIM_COUNTER_INCAP0: CAPn.0 input pin for TIMERn - TIM_COUNTER_INCAP1: CAPn.1 input pin for TIMERn */ uint8_t CountInputSelect; uint8_t Reserved[2]; } TIM_COUNTERCFG_Type; /** @brief Match channel configuration structure */ typedef struct { uint8_t MatchChannel; /**< Match channel, should be in range from 0..3 */ uint8_t IntOnMatch; /**< Interrupt On match, should be: - ENABLE: Enable this function. - DISABLE: Disable this function. */ uint8_t StopOnMatch; /**< Stop On match, should be: - ENABLE: Enable this function. - DISABLE: Disable this function. */ uint8_t ResetOnMatch; /**< Reset On match, should be: - ENABLE: Enable this function. - DISABLE: Disable this function. */ uint8_t ExtMatchOutputType; /**< External Match Output type, should be: - TIM_EXTMATCH_NOTHING: Do nothing for external output pin if match - TIM_EXTMATCH_LOW: Force external output pin to low if match - TIM_EXTMATCH_HIGH: Force external output pin to high if match - TIM_EXTMATCH_TOGGLE: Toggle external output pin if match. */ uint8_t Reserved[3]; /** Reserved */ uint32_t MatchValue; /** Match value */ } TIM_MATCHCFG_Type; /** @brief Capture Input configuration structure */ typedef struct { uint8_t CaptureChannel; /**< Capture channel, should be in range from 0..1 */ uint8_t RisingEdge; /**< caption rising edge, should be: - ENABLE: Enable rising edge. - DISABLE: Disable this function. */ uint8_t FallingEdge; /**< caption falling edge, should be: - ENABLE: Enable falling edge. - DISABLE: Disable this function. */ uint8_t IntOnCaption; /**< Interrupt On caption, should be: - ENABLE: Enable interrupt function. - DISABLE: Disable this function. */ } TIM_CAPTURECFG_Type; /** * @} */ /* Public Functions ----------------------------------------------------------- */ /** @defgroup TIM_Public_Functions TIM Public Functions * @{ */ /* Init/DeInit TIM functions -----------*/ void TIM_Init(LPC_TIM_TypeDef *TIMx, TIM_MODE_OPT TimerCounterMode, void *TIM_ConfigStruct); void TIM_DeInit(LPC_TIM_TypeDef *TIMx); /* TIM interrupt functions -------------*/ void TIM_ClearIntPending(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag); void TIM_ClearIntCapturePending(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag); FlagStatus TIM_GetIntStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag); FlagStatus TIM_GetIntCaptureStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag); /* TIM configuration functions --------*/ void TIM_ConfigStructInit(TIM_MODE_OPT TimerCounterMode, void *TIM_ConfigStruct); void TIM_ConfigMatch(LPC_TIM_TypeDef *TIMx, TIM_MATCHCFG_Type *TIM_MatchConfigStruct); void TIM_UpdateMatchValue(LPC_TIM_TypeDef *TIMx,uint8_t MatchChannel, uint32_t MatchValue); void TIM_SetMatchExt(LPC_TIM_TypeDef *TIMx,TIM_EXTMATCH_OPT ext_match ); void TIM_ConfigCapture(LPC_TIM_TypeDef *TIMx, TIM_CAPTURECFG_Type *TIM_CaptureConfigStruct); void TIM_Cmd(LPC_TIM_TypeDef *TIMx, FunctionalState NewState); uint32_t TIM_GetCaptureValue(LPC_TIM_TypeDef *TIMx, TIM_COUNTER_INPUT_OPT CaptureChannel); void TIM_ResetCounter(LPC_TIM_TypeDef *TIMx); /** * @} */ #ifdef __cplusplus } #endif #endif /* __LPC17XX_TIMER_H_ */ /** * @} */ /* --------------------------------- End Of File ------------------------------ */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/lpc_types.h000644 000765 000024 00000013535 12521603460 024327 0ustar00basvoddestaff000000 000000 /********************************************************************** * $Id$ lpc_types.h 2008-07-27 *//** * @file lpc_types.h * @brief Contains the NXP ABL typedefs for C standard types. * It is intended to be used in ISO C conforming development * environments and checks for this insofar as it is possible * to do so. * @version 2.0 * @date 27 July. 2008 * @author NXP MCU SW Application Team * * Copyright(C) 2008, NXP Semiconductor * All rights reserved. * *********************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, under NXP Semiconductors' * relevant copyright in the software, without fee, provided that it * is used in conjunction with NXP Semiconductors microcontrollers. This * copyright, permission, and disclaimer notice must appear in all copies of * this code. **********************************************************************/ /* Type group ----------------------------------------------------------- */ /** @defgroup LPC_Types LPC_Types * @ingroup LPC1700CMSIS_FwLib_Drivers * @{ */ #ifndef LPC_TYPES_H #define LPC_TYPES_H /* Includes ------------------------------------------------------------------- */ #include /* Public Types --------------------------------------------------------------- */ /** @defgroup LPC_Types_Public_Types LPC_Types Public Types * @{ */ /** * @brief Boolean Type definition */ typedef enum {FALSE = 0, TRUE = !FALSE} Bool; /** * @brief Flag Status and Interrupt Flag Status type definition */ typedef enum {RESET = 0, SET = !RESET} FlagStatus, IntStatus, SetState; #define PARAM_SETSTATE(State) ((State==RESET) || (State==SET)) /** * @brief Functional State Definition */ typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; #define PARAM_FUNCTIONALSTATE(State) ((State==DISABLE) || (State==ENABLE)) /** * @ Status type definition */ typedef enum {ERROR = 0, SUCCESS = !ERROR} Status; /** * Read/Write transfer type mode (Block or non-block) */ typedef enum { NONE_BLOCKING = 0, /**< None Blocking type */ BLOCKING /**< Blocking type */ } TRANSFER_BLOCK_Type; /** Pointer to Function returning Void (any number of parameters) */ typedef void (*PFV)(); /** Pointer to Function returning int32_t (any number of parameters) */ typedef int32_t(*PFI)(); /** * @} */ /* Public Macros -------------------------------------------------------------- */ /** @defgroup LPC_Types_Public_Macros LPC_Types Public Macros * @{ */ /* _BIT(n) sets the bit at position "n" * _BIT(n) is intended to be used in "OR" and "AND" expressions: * e.g., "(_BIT(3) | _BIT(7))". */ #undef _BIT /* Set bit macro */ #define _BIT(n) (1< = (any_expression) & _BITMASK(x), where 0 < x <= 32. * If "any_expression" results in a value that is larger than can be * contained in 'x' bits, the bits above 'x - 1' are masked off. When * used with the _SBF example above, the example would be written: * a_reg = ((_SBF(5,7) | _SBF(12,0xF)) & _BITMASK(16)) * This ensures that the value written to a_reg is no wider than * 16 bits, and makes the code easier to read and understand. */ #undef _BITMASK /* Bitmask creation macro */ #define _BITMASK(field_width) ( _BIT(field_width) - 1) /* NULL pointer */ #ifndef NULL #define NULL ((void*) 0) #endif /* Number of elements in an array */ #define NELEMENTS(array) (sizeof (array) / sizeof (array[0])) /* Static data/function define */ #define STATIC static /* External data/function define */ #define EXTERN extern #if !defined(MAX) #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif #if !defined(MIN) #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif /** * @} */ /* Old Type Definition compatibility ------------------------------------------ */ /** @addtogroup LPC_Types_Public_Types LPC_Types Public Types * @{ */ /** SMA type for character type */ typedef char CHAR; /** SMA type for 8 bit unsigned value */ typedef uint8_t UNS_8; /** SMA type for 8 bit signed value */ typedef int8_t INT_8; /** SMA type for 16 bit unsigned value */ typedef uint16_t UNS_16; /** SMA type for 16 bit signed value */ typedef int16_t INT_16; /** SMA type for 32 bit unsigned value */ typedef uint32_t UNS_32; /** SMA type for 32 bit signed value */ typedef int32_t INT_32; /** SMA type for 64 bit signed value */ typedef int64_t INT_64; /** SMA type for 64 bit unsigned value */ typedef uint64_t UNS_64; /** 32 bit boolean type */ typedef Bool BOOL_32; /** 16 bit boolean type */ typedef Bool BOOL_16; /** 8 bit boolean type */ typedef Bool BOOL_8; /** * @} */ #endif /* LPC_TYPES_H */ /** * @} */ /* --------------------------------- End Of File ------------------------------ */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/Makefile000644 000765 000024 00000006600 12521603460 023607 0ustar00basvoddestaff000000 000000 CPU := Cortex-M3 CPU_MODE := thumb TARGET_PLATFORM :=armcc_$(CPU)_$(CPU_MODE) CPPUTEST_HOME := ../../.. # Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð° COMPONENT_NAME := Startup_LPC1768 # промежуточный каталог, где производитÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑ†Ð¸Ñ startup-файлов OBJS_DIR = objs # каталог Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¾Ð¹` LIB_DIR := $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) # каталог Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ SRC_DIRS := . # каталог Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ñ‡Ð½Ñ‹Ð¼Ð¸ файлами INCLUDE_DIRS := . # CYGWIN path CYGWIN :=C:/CYGWIN/bin MKDIR :=@$(CYGWIN)/mkdir RM :=@$(CYGWIN)/rm TOUCH :=@$(CYGWIN)/touch ECHO :=@$(CYGWIN)/echo KEIL_DIR:=D:/Keil/ARM/ARMCC CC:=@$(KEIL_DIR)/bin/armcc.exe AS:=@$(KEIL_DIR)/bin/armasm.exe AR:=@$(KEIL_DIR)/bin/armar.exe # armcc system include path SYS_INCLUDE_DIRS :=$(KEIL_DIR)/include # добавление ÑиÑтемных заголовочных файлов Ð´Ð»Ñ Ñборки CRT библиотеки INCLUDE_DIRS +=$(SYS_INCLUDE_DIRS) CPUFLAGS :=--cpu=$(CPU) ifeq ($(CPU_MODE), thumb) CPUFLAGS +=--apcs=/interwork endif DEPFLAGS =-M $(INCLUDES) --depend_format=unix_escaped --depend_single_line --no_depend_system_headers OPTFLAGS :=-O3 CPPUTEST_CPPFLAGS =$(CPUFLAGS) $(OPTFLAGS) -c -g $(INCLUDES) \ --$(CPU_MODE) \ -D__CLK_TCK=1000 \ -D__UART0 \ ARFLAGS := --debug_symbols TARGET_LIB := \ $(LIB_DIR)/lib$(COMPONENT_NAME).a #Helper Functions get_src_from_dir = $(wildcard $1/*.c) $(wildcard $1/*.asm) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) __src_to = $(subst .asm,$1, $(subst .c,$1,$2)) src_to = $(addprefix $3/,$(call __src_to,$1,$2)) src_to_o = $(call src_to,.o,$1,$2) src_to_d = $(call src_to,.d,$1,$2) time = $(shell date +%s) delta_t = $(eval minus, $1, $2) debug_print_list = $(foreach word,$1,$(ECHO) " $(word)";) $(ECHO) # for building CRT library SRC := $(call get_src_from_dir_list, $(SRC_DIRS)) OBJ := $(call src_to_o,$(SRC),$(OBJS_DIR)) INCLUDES += $(foreach dir, $(INCLUDE_DIRS), -I$(dir)) DEP_FILES := $(call src_to_d, $(SRC), $(OBJS_DIR)) STUFF_TO_CLEAN := $(OBJ) $(DEP_FILES) #Don't create CRT dependencies when we're cleaning, for instance ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS)))) -include $(DEP_FILES) endif $(TARGET_LIB): $(OBJ) | $(LIB_DIR) $(AR) $(ARFLAGS) --create $@ $^ $(ECHO) Build CRT library done! .PHONY: crt crt: $(ECHO) $(ECHO) CRT =$(CRT) $(ECHO) SRC =$(SRC) $(ECHO) OBJ =$(OBJ) $(ECHO) INCLUDES =$(INCLUDES) $(ECHO) DEP_FILES =$(DEP_FILES) $(ECHO) STUFF_TO_CLEAN =$(STUFF_TO_CLEAN) $(ECHO) OBJS_DIR =$(OBJS_DIR) $(LIB_DIR) $(OBJS_DIR): $(ECHO) Updating directory $@ $(MKDIR) -p $@ #This is the rule for creating the dependency files $(OBJS_DIR)/%.d: %.c Makefile | $(OBJS_DIR) $(ECHO) Compiling C file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' $(OBJS_DIR)/%.d: %.asm | $(OBJS_DIR) $(ECHO) Compiling ASM file $< for dependency. Out file $@. $(TOUCH) $@ #This rule does the compilation C files $(OBJS_DIR)/%.o: %.c $(OBJS_DIR)/%.d $(ECHO) Compiling C file $<. Out file $@ $(CC) $(CPPUTEST_CPPFLAGS) $< -o $@ #This rule does the compilation ASM $(OBJS_DIR)/%.o: %.asm $(OBJS_DIR)/%.d $(ECHO) Assembling file $<. Out file $@ $(AS) $(CPUFLAGS) --diag-suppress 1786 $< -o $@ clean: @$(RM) -f $(STUFF_TO_CLEAN) all: $(TARGET_LIB) $(ECHO) Done! cpputest-3.7.2/platforms_startup/armcc/LPC1768/README000644 000765 000024 00000001552 12521603460 023030 0ustar00basvoddestaff000000 000000 Startup library for ARM C/C++ compiler and LPC1768 chip. Semihosting is in use, so you may use standard printf() or std::cout << "Hello!" Requirements: 1. CYGWIN (rm.exe, mkdir.exe, make.exe, echo.exe) 2. Keil MDK-ARM Library libStartup_LPC1768.a is placed in ./lib/armcc_Cortex-M3_thumb directory of home CppUTest directory. Time measure is done using LPC_TIM3. Because of calling _clock_init() before main() by startup code, value of SystemCoreClock is 0, and it is need to manually call _clock_init() in main() or other place after updating SystemCoreClock. It come from two quartz selection in system_LPC17xx.c, non-standard solution of startup initialization. To remove _clock_init() call from main(), you need to remove two quartz configuration in system_LPC17xx.c and declare SystemCoreClock variable as "const" with value of real clock frequency. cpputest-3.7.2/platforms_startup/armcc/LPC1768/Retarget.c000644 000765 000024 00000010351 12521603460 024066 0ustar00basvoddestaff000000 000000 /*---------------------------------------------------------------------------- * Name: Retarget.c * Purpose: 'Retarget' layer for target-dependent low level functions * Note(s): *---------------------------------------------------------------------------- * This file is part of the uVision/ARM development tools. * This software may only be used under the terms of a valid, current, * end user licence from KEIL for a compatible version of KEIL software * development tools. Nothing else gives you the right to use this software. * * This software is supplied "AS IS" without warranties of any kind. * * Copyright (c) 2011 Keil - An ARM Company. All rights reserved. *----------------------------------------------------------------------------*/ #include #include #include #include "Serial.h" #include "lpc17xx_timer.h" /* Standard IO device handles. */ #define STDIN 0x8001 #define STDOUT 0x8002 #define STDERR 0x8003 #pragma import(__use_no_semihosting_swi) const char __stdin_name[] = "STDIN"; const char __stdout_name[] = "STDOUT"; const char __stderr_name[] = "STDERR"; FILEHANDLE _sys_open(const char *name, int openmode) { FILEHANDLE rc; /* Register standard Input Output devices. */ if (strcmp(name, "STDIN") == 0) rc = STDIN; else if (strcmp(name, "STDOUT") == 0) rc = STDOUT; else if (strcmp(name, "STDERR") == 0) rc = STDERR; else rc = 1; return (rc); } int _sys_close(FILEHANDLE fh) { return 0; } int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode) { while (len) { SER_PutChar(*buf); buf++; len--; } return len; } int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode) { return -1; /* not supported */ } void _ttywrch(int ch) { SER_PutChar(ch); } int _sys_istty(FILEHANDLE fh) { return 0; /* buffered output */ } int _sys_seek(FILEHANDLE fh, long pos) { return -1; /* not supported */ } long _sys_flen(FILEHANDLE fh) { return -1; /* not supported */ } void _sys_exit(int return_code) { while(1); } char *_sys_command_string(char *cmd, int len) { const char * const arg[] = { "tst.axf", "-v", "-gSimpleStringBuffer", "-ojunit"}; int i, j; char *rc = cmd; if (len) { /* Specify commandline arguments here as needed */ len = sizeof(arg) / sizeof(char *); for (i = 0; i < len; i++) { j = strlen(arg[i])+1; if (cmd - rc + j > len) { rc = NULL; break; } memcpy(cmd, arg[i], j); cmd += j; } if (rc) rc = cmd; } else rc = NULL; return rc; } void _clock_init(void) { const TIM_TIMERCFG_Type config_us_timer = {TIM_PRESCALE_USVAL, {0,0,0}, 1000}; /* 1000 us for one timer tick */ TIM_Init(LPC_TIM3, TIM_TIMER_MODE, (void *)&config_us_timer); /* TIMER3 for counting 1 ms */ TIM_Cmd(LPC_TIM3, ENABLE); } clock_t clock(void) { return LPC_TIM3->TC; } time_t time(time_t *timer) { return 0; } /* * Замена вÑтроенной в Keil MDK-ARM функции, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñоздаёт ÑвÑзанный ÑпиÑок * адреÑов деÑтрукторов глобальных или ÑтатичеÑких объектов в "куче" при * инициализации окружениÑ. * Так как не планируетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ программы, то ни один такой деÑтруктор не * должен вызыватьÑÑ, и можно подменить Ñтандартную верÑию __aeabi_atexit на * другую, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ будет Ñоздавать такой ÑпиÑок в "куче". * Ð˜Ð´ÐµÑ Ð²Ð·Ñта отÑюда * http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3951.html * Пример реализации взÑÑ‚ отÑюда * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0041d/IHI0041D_cppabi.pdf */ int __aeabi_atexit(void* object, void (*destroyer)(void*), void* dso_handle) { return 1; // 0: failed; non-0: OK // return __cxa_atexit(destroyer, object, dso_handle); /* ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð· Keil MDK-ARM */ } cpputest-3.7.2/platforms_startup/armcc/LPC1768/Serial.c000644 000765 000024 00000006005 12521603460 023531 0ustar00basvoddestaff000000 000000 /*------------------------------------------------------------------------------ * RL-ARM *------------------------------------------------------------------------------ * Name: Serial.c * Purpose: Serial Input Output for NXP LPC17xx * Note(s): Possible defines to select the used communication interface: * __UART0 - COM0 (UART0) interface * - COM1 (UART1) interface (default) *------------------------------------------------------------------------------ * This code is part of the RealView Run-Time Library. * Copyright (c) 2004-2012 KEIL - An ARM Company. All rights reserved. *----------------------------------------------------------------------------*/ #include #include "Serial.h" #ifdef __UART0 #define UART LPC_UART0 #else #define UART LPC_UART1 #endif static int init_UART_done = 0; /*------------------------------------------------------------------------------ * SER_Init: Initialize Serial Interface *----------------------------------------------------------------------------*/ void SER_Init (void) { #ifdef __UART0 /* UART0 */ LPC_SC->PCONP |= ((1 << 3) | (1 << 15)); /* enable power to UART0 & IOCON */ LPC_PINCON->PINSEL0 |= (1 << 4); /* Pin P0.2 used as TXD0 */ LPC_PINCON->PINSEL0 |= (1 << 6); /* Pin P0.3 used as RXD0 */ #else /* UART1 */ LPC_SC->PCONP |= ((1 << 4) | (1 << 15)); /* enable power to UART1 & IOCON */ LPC_PINCON->PINSEL4 |= (2 << 0); /* Pin P2.0 used as TXD1 */ LPC_PINCON->PINSEL4 |= (2 << 2); /* Pin P2.1 used as RXD1 */ #endif UART->LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */ UART->DLL = 9; /* 115200 Baud Rate @ 25.0 MHZ PCLK*/ UART->FDR = 0x21; /* FR 1,507, DIVADDVAL=1, MULVAL=2 */ UART->DLM = 0; /* High divisor latch = 0 */ UART->LCR = 0x03; /* DLAB = 0 */ } /*------------------------------------------------------------------------------ * SER_PutChar: Write a character to the Serial Port *----------------------------------------------------------------------------*/ int32_t SER_PutChar (int32_t ch) { if (init_UART_done == 0) { SER_Init(); init_UART_done++; } while (!(UART->LSR & 0x20)); UART->THR = ch; return (ch); } /*------------------------------------------------------------------------------ * SER_GetChar: Read a character from the Serial Port (non-blocking) *----------------------------------------------------------------------------*/ int32_t SER_GetChar (void) { if (UART->LSR & 0x01) return (UART->RBR); return (-1); } /*------------------------------------------------------------------------------ * End of file *----------------------------------------------------------------------------*/ cpputest-3.7.2/platforms_startup/armcc/LPC1768/Serial.h000644 000765 000024 00000001632 12521603460 023537 0ustar00basvoddestaff000000 000000 /*----------------------------------------------------------------------------- * Name: Serial.h * Purpose: Serial I/O definitions *----------------------------------------------------------------------------- * This file is part of the uVision/ARM development tools. * This software may only be used under the terms of a valid, current, * end user licence from KEIL for a compatible version of KEIL software * development tools. Nothing else gives you the right to use this software. * * This software is supplied "AS IS" without warranties of any kind. * * Copyright (c) 2004-2012 Keil - An ARM Company. All rights reserved. *----------------------------------------------------------------------------*/ #ifndef __SERIAL_H #define __SERIAL_H #include extern void SER_Init (void); extern int32_t SER_GetChar (void); extern int32_t SER_PutChar (int32_t ch); #endif /* __SERIAL_H */ cpputest-3.7.2/platforms_startup/armcc/LPC1768/startup_LPC17xx.asm000644 000765 000024 00000023724 12521603460 025607 0ustar00basvoddestaff000000 000000 ;/***************************************************************************** ; * @file: startup_LPC17xx.s ; * @purpose: CMSIS Cortex-M3 Core Device Startup File ; * for the NXP LPC17xx Device Series ; * @version: V1.20 ; * @date: 07. October 2010 ; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ ; * ; * Copyright (C) 2010 ARM Limited. All rights reserved. ; * ARM Limited (ARM) is supplying this software for use with Cortex-M3 ; * processor based microcontrollers. This file can be freely distributed ; * within development tools that are supporting such ARM based processors. ; * ; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED ; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF ; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. ; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR ; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. ; * ; *****************************************************************************/ ; Stack Configuration ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> ; Stack_Size EQU 0x00002000 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp ; Heap Configuration ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> ; Heap_Size EQU 0x00006000 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base Heap_Mem SPACE Heap_Size __heap_limit PRESERVE8 THUMB ; Vector Table Mapped to Address 0 at Reset AREA RESET, CODE, READONLY EXPORT __Vectors __Vectors DCD __initial_sp ; Top of Stack DCD Reset_Handler ; Reset Handler DCD NMI_Handler ; NMI Handler DCD HardFault_Handler ; Hard Fault Handler DCD MemManage_Handler ; MPU Fault Handler DCD BusFault_Handler ; Bus Fault Handler DCD UsageFault_Handler ; Usage Fault Handler DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved DCD SVC_Handler ; SVCall Handler DCD DebugMon_Handler ; Debug Monitor Handler DCD 0 ; Reserved DCD PendSV_Handler ; PendSV Handler DCD SysTick_Handler ; SysTick Handler ; External Interrupts DCD WDT_IRQHandler ; 16: Watchdog Timer DCD TIMER0_IRQHandler ; 17: Timer0 DCD TIMER1_IRQHandler ; 18: Timer1 DCD TIMER2_IRQHandler ; 19: Timer2 DCD TIMER3_IRQHandler ; 20: Timer3 DCD UART0_IRQHandler ; 21: UART0 DCD UART1_IRQHandler ; 22: UART1 DCD UART2_IRQHandler ; 23: UART2 DCD UART3_IRQHandler ; 24: UART3 DCD PWM1_IRQHandler ; 25: PWM1 DCD I2C0_IRQHandler ; 26: I2C0 DCD I2C1_IRQHandler ; 27: I2C1 DCD I2C2_IRQHandler ; 28: I2C2 DCD SPI_IRQHandler ; 29: SPI DCD SSP0_IRQHandler ; 30: SSP0 DCD SSP1_IRQHandler ; 31: SSP1 DCD PLL0_IRQHandler ; 32: PLL0 Lock (Main PLL) DCD RTC_IRQHandler ; 33: Real Time Clock DCD EINT0_IRQHandler ; 34: External Interrupt 0 DCD EINT1_IRQHandler ; 35: External Interrupt 1 DCD EINT2_IRQHandler ; 36: External Interrupt 2 DCD EINT3_IRQHandler ; 37: External Interrupt 3 DCD ADC_IRQHandler ; 38: A/D Converter DCD BOD_IRQHandler ; 39: Brown-Out Detect DCD USB_IRQHandler ; 40: USB DCD CAN_IRQHandler ; 41: CAN DCD DMA_IRQHandler ; 42: General Purpose DMA DCD I2S_IRQHandler ; 43: I2S DCD ENET_IRQHandler ; 44: Ethernet DCD RIT_IRQHandler ; 45: Repetitive Interrupt Timer DCD MCPWM_IRQHandler ; 46: Motor Control PWM DCD QEI_IRQHandler ; 47: Quadrature Encoder Interface DCD PLL1_IRQHandler ; 48: PLL1 Lock (USB PLL) DCD USBActivity_IRQHandler ; 49: USB Activity interrupt to wakeup DCD CANActivity_IRQHandler ; 50: CAN Activity interrupt to wakeup IF :LNOT::DEF:NO_CRP AREA |.ARM.__at_0x02FC|, CODE, READONLY CRP_Key DCD 0xFFFFFFFF ENDIF AREA |.text|, CODE, READONLY ; Reset Handler Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP ; Dummy Exception Handlers (infinite loops which can be modified) NMI_Handler PROC EXPORT NMI_Handler [WEAK] B . ENDP HardFault_Handler\ PROC EXPORT HardFault_Handler [WEAK] B . ENDP MemManage_Handler\ PROC EXPORT MemManage_Handler [WEAK] B . ENDP BusFault_Handler\ PROC EXPORT BusFault_Handler [WEAK] B . ENDP UsageFault_Handler\ PROC EXPORT UsageFault_Handler [WEAK] B . ENDP SVC_Handler PROC EXPORT SVC_Handler [WEAK] B . ENDP DebugMon_Handler\ PROC EXPORT DebugMon_Handler [WEAK] B . ENDP PendSV_Handler PROC EXPORT PendSV_Handler [WEAK] B . ENDP SysTick_Handler PROC EXPORT SysTick_Handler [WEAK] B . ENDP Default_Handler PROC EXPORT WDT_IRQHandler [WEAK] EXPORT TIMER0_IRQHandler [WEAK] EXPORT TIMER1_IRQHandler [WEAK] EXPORT TIMER2_IRQHandler [WEAK] EXPORT TIMER3_IRQHandler [WEAK] EXPORT UART0_IRQHandler [WEAK] EXPORT UART1_IRQHandler [WEAK] EXPORT UART2_IRQHandler [WEAK] EXPORT UART3_IRQHandler [WEAK] EXPORT PWM1_IRQHandler [WEAK] EXPORT I2C0_IRQHandler [WEAK] EXPORT I2C1_IRQHandler [WEAK] EXPORT I2C2_IRQHandler [WEAK] EXPORT SPI_IRQHandler [WEAK] EXPORT SSP0_IRQHandler [WEAK] EXPORT SSP1_IRQHandler [WEAK] EXPORT PLL0_IRQHandler [WEAK] EXPORT RTC_IRQHandler [WEAK] EXPORT EINT0_IRQHandler [WEAK] EXPORT EINT1_IRQHandler [WEAK] EXPORT EINT2_IRQHandler [WEAK] EXPORT EINT3_IRQHandler [WEAK] EXPORT ADC_IRQHandler [WEAK] EXPORT BOD_IRQHandler [WEAK] EXPORT USB_IRQHandler [WEAK] EXPORT CAN_IRQHandler [WEAK] EXPORT DMA_IRQHandler [WEAK] EXPORT I2S_IRQHandler [WEAK] EXPORT ENET_IRQHandler [WEAK] EXPORT RIT_IRQHandler [WEAK] EXPORT MCPWM_IRQHandler [WEAK] EXPORT QEI_IRQHandler [WEAK] EXPORT PLL1_IRQHandler [WEAK] EXPORT USBActivity_IRQHandler [WEAK] EXPORT CANActivity_IRQHandler [WEAK] WDT_IRQHandler TIMER0_IRQHandler TIMER1_IRQHandler TIMER2_IRQHandler TIMER3_IRQHandler UART0_IRQHandler UART1_IRQHandler UART2_IRQHandler UART3_IRQHandler PWM1_IRQHandler I2C0_IRQHandler I2C1_IRQHandler I2C2_IRQHandler SPI_IRQHandler SSP0_IRQHandler SSP1_IRQHandler PLL0_IRQHandler RTC_IRQHandler EINT0_IRQHandler EINT1_IRQHandler EINT2_IRQHandler EINT3_IRQHandler ADC_IRQHandler BOD_IRQHandler USB_IRQHandler DMA_IRQHandler CAN_IRQHandler I2S_IRQHandler ENET_IRQHandler RIT_IRQHandler MCPWM_IRQHandler QEI_IRQHandler PLL1_IRQHandler USBActivity_IRQHandler CANActivity_IRQHandler B . ENDP ALIGN ; User Initial Stack & Heap IF :DEF:__MICROLIB EXPORT __initial_sp EXPORT __heap_base EXPORT __heap_limit ELSE IMPORT __use_two_region_memory EXPORT __user_setup_stackheap __user_setup_stackheap LDR R0, = Heap_Mem LDR R2, = (Heap_Mem + Heap_Size) LDR SP, =(Stack_Mem + Stack_Size) BX LR ALIGN ENDIF END cpputest-3.7.2/platforms_startup/armcc/LPC1768/system_LPC17xx.c000644 000765 000024 00000063156 12521603460 025076 0ustar00basvoddestaff000000 000000 /**************************************************************************//** * @file system_LPC17xx.c * @brief CMSIS Cortex-M3 Device System Source File for * NXP LPC17xx Device Series * @version V1.13 * @date 18. April 2012 * * @note * Copyright (C) 2009-2012 ARM Limited. All rights reserved. * * @par * ARM Limited (ARM) is supplying this software for use with Cortex-M * processor based microcontrollers. This file can be freely distributed * within development tools that are supporting such ARM based processors. * * @par * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. * ******************************************************************************/ #include #include "LPC17xx.h" /** @addtogroup LPC17xx_System * @{ */ /* //-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ */ /*--------------------- Clock Configuration---------------- // // Clock Configuration // System Controls and Status Register (SCS) with quartz 24 MHz // OSCRANGE: Main Oscillator Range Select // <0=> 1 MHz to 20 MHz // <1=> 15 MHz to 25 MHz // OSCEN: Main Oscillator Enable // // // // System Controls and Status Register (SCS) with quartz 12 MHz // OSCRANGE: Main Oscillator Range Select // <0=> 1 MHz to 20 MHz // <1=> 15 MHz to 25 MHz // OSCEN: Main Oscillator Enable // // // PLL0 Configuration (Main PLL) // PLL0 Configuration Register (PLL0CFG) with quartz 24 MHz // F_cco0 = (2 * M * F_in) / N // F_in must be in the range of 32 kHz to 50 MHz // F_cco0 must be in the range of 275 MHz to 550 MHz // MSEL: PLL Multiplier Selection // <6-32768><#-1> // M Value // NSEL: PLL Divider Selection // <1-256><#-1> // N Value // // PLL0 Configuration Register (PLL0CFG) with quartz 12 MHz // F_cco0 = (2 * M * F_in) / N // F_in must be in the range of 32 kHz to 50 MHz // F_cco0 must be in the range of 275 MHz to 550 MHz // MSEL: PLL Multiplier Selection // <6-32768><#-1> // M Value // NSEL: PLL Divider Selection // <1-256><#-1> // N Value // // // // PLL1 Configuration (USB PLL) // PLL1 Configuration Register (PLL1CFG) with quartz 24 MHz // F_usb = M * F_osc or F_usb = F_cco1 / (2 * P) // F_cco1 = F_osc * M * 2 * P // F_cco1 must be in the range of 156 MHz to 320 MHz // MSEL: PLL Multiplier Selection // <1-32><#-1> // M Value (for USB maximum value is 4) // PSEL: PLL Divider Selection // <0=> 1 // <1=> 2 // <2=> 4 // <3=> 8 // P Value // // PLL1 Configuration Register (PLL1CFG) with quartz 12 MHz // F_usb = M * F_osc or F_usb = F_cco1 / (2 * P) // F_cco1 = F_osc * M * 2 * P // F_cco1 must be in the range of 156 MHz to 320 MHz // MSEL: PLL Multiplier Selection // <1-32><#-1> // M Value (for USB maximum value is 4) // PSEL: PLL Divider Selection // <0=> 1 // <1=> 2 // <2=> 4 // <3=> 8 // P Value // // // // CPU Clock Configuration Register (CCLKCFG) // CCLKSEL: Divide Value for CPU Clock from PLL0 // <1-256><#-1> // // // USB Clock Configuration Register (USBCLKCFG) // USBSEL: Divide Value for USB Clock from PLL0 // <0-15> // Divide is USBSEL + 1 // // // Clock Source Select Register (CLKSRCSEL) // CLKSRC: PLL Clock Source Selection // <0=> Internal RC oscillator // <1=> Main oscillator // <2=> RTC oscillator // // // Peripheral Clock Selection Register 0 (PCLKSEL0) // PCLK_WDT: Peripheral Clock Selection for WDT // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_TIMER0: Peripheral Clock Selection for TIMER0 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_TIMER1: Peripheral Clock Selection for TIMER1 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_UART0: Peripheral Clock Selection for UART0 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_UART1: Peripheral Clock Selection for UART1 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_PWM1: Peripheral Clock Selection for PWM1 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_I2C0: Peripheral Clock Selection for I2C0 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_SPI: Peripheral Clock Selection for SPI // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_SSP1: Peripheral Clock Selection for SSP1 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_DAC: Peripheral Clock Selection for DAC // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_ADC: Peripheral Clock Selection for ADC // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_CAN1: Peripheral Clock Selection for CAN1 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 6 // PCLK_CAN2: Peripheral Clock Selection for CAN2 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 6 // PCLK_ACF: Peripheral Clock Selection for ACF // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 6 // // // Peripheral Clock Selection Register 1 (PCLKSEL1) // PCLK_QEI: Peripheral Clock Selection for the Quadrature Encoder Interface // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_GPIO: Peripheral Clock Selection for GPIOs // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_PCB: Peripheral Clock Selection for the Pin Connect Block // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_I2C1: Peripheral Clock Selection for I2C1 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_SSP0: Peripheral Clock Selection for SSP0 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_TIMER2: Peripheral Clock Selection for TIMER2 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_TIMER3: Peripheral Clock Selection for TIMER3 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_UART2: Peripheral Clock Selection for UART2 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_UART3: Peripheral Clock Selection for UART3 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_I2C2: Peripheral Clock Selection for I2C2 // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_I2S: Peripheral Clock Selection for I2S // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_RIT: Peripheral Clock Selection for the Repetitive Interrupt Timer // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_SYSCON: Peripheral Clock Selection for the System Control Block // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // PCLK_MC: Peripheral Clock Selection for the Motor Control PWM // <0=> Pclk = Cclk / 4 // <1=> Pclk = Cclk // <2=> Pclk = Cclk / 2 // <3=> Pclk = Cclk / 8 // // // Power Control for Peripherals Register (PCONP) // PCTIM0: Timer/Counter 0 power/clock enable // PCTIM1: Timer/Counter 1 power/clock enable // PCUART0: UART 0 power/clock enable // PCUART1: UART 1 power/clock enable // PCPWM1: PWM 1 power/clock enable // PCI2C0: I2C interface 0 power/clock enable // PCSPI: SPI interface power/clock enable // PCRTC: RTC power/clock enable // PCSSP1: SSP interface 1 power/clock enable // PCAD: A/D converter power/clock enable // PCCAN1: CAN controller 1 power/clock enable // PCCAN2: CAN controller 2 power/clock enable // PCGPIO: GPIOs power/clock enable // PCRIT: Repetitive interrupt timer power/clock enable // PCMC: Motor control PWM power/clock enable // PCQEI: Quadrature encoder interface power/clock enable // PCI2C1: I2C interface 1 power/clock enable // PCSSP0: SSP interface 0 power/clock enable // PCTIM2: Timer 2 power/clock enable // PCTIM3: Timer 3 power/clock enable // PCUART2: UART 2 power/clock enable // PCUART3: UART 3 power/clock enable // PCI2C2: I2C interface 2 power/clock enable // PCI2S: I2S interface power/clock enable // PCGPDMA: GP DMA function power/clock enable // PCENET: Ethernet block power/clock enable // PCUSB: USB interface power/clock enable // // // Clock Output Configuration Register (CLKOUTCFG) // CLKOUTSEL: Selects clock source for CLKOUT // <0=> CPU clock // <1=> Main oscillator // <2=> Internal RC oscillator // <3=> USB clock // <4=> RTC oscillator // CLKOUTDIV: Selects clock divider for CLKOUT // <1-16><#-1> // CLKOUT_EN: CLKOUT enable control // // // */ /** @addtogroup LPC17xx_System_Defines LPC17xx System Defines @{ */ #define CLOCK_SETUP 1 #define SCS_24_Val 0x00000030 #define SCS_12_Val 0x00000020 #define PLL0_SETUP 1 #define PLL0CFG_24_Val 0x00030018 #define PLL0CFG_12_Val 0x00010018 #define PLL1_SETUP 1 #define PLL1CFG_24_Val 0x00000021 #define PLL1CFG_12_Val 0x00000023 #define CCLKCFG_Val 0x00000002 #define USBCLKCFG_Val 0x00000001 #define CLKSRCSEL_Val 0x00000001 #define PCLKSEL0_Val 0x08000000 #define PCLKSEL1_Val 0x00000000 #define PCONP_Val 0x4000A00E #define CLKOUTCFG_Val 0x00000110 /*--------------------- Flash Accelerator Configuration ---------------------- // // Flash Accelerator Configuration // FLASHTIM: Flash Access Time // <0=> 1 CPU clock (for CPU clock up to 20 MHz) // <1=> 2 CPU clocks (for CPU clock up to 40 MHz) // <2=> 3 CPU clocks (for CPU clock up to 60 MHz) // <3=> 4 CPU clocks (for CPU clock up to 80 MHz) // <4=> 5 CPU clocks (for CPU clock up to 100 MHz) // <5=> 6 CPU clocks (for any CPU clock) // */ #define FLASH_SETUP 1 #define FLASHCFG_Val 0x00004000 /* //-------- <<< end of configuration section >>> ------------------------------ */ /*---------------------------------------------------------------------------- Check the register settings *----------------------------------------------------------------------------*/ #define CHECK_RANGE(val, min, max) ((val < min) || (val > max)) #define CHECK_RSVD(val, mask) (val & mask) /* Clock Configuration -------------------------------------------------------*/ #if (CHECK_RSVD((SCS_12_Val), ~0x00000030)) #error "SCS_12: Invalid values of reserved bits!" #endif #if (CHECK_RSVD((SCS_24_Val), ~0x00000030)) #error "SCS_24: Invalid values of reserved bits!" #endif #if (CHECK_RANGE((CLKSRCSEL_Val), 0, 2)) #error "CLKSRCSEL: Value out of range!" #endif #if (CHECK_RSVD((PLL0CFG_12_Val), ~0x00FF7FFF)) #error "PLL0CFG_12: Invalid values of reserved bits!" #endif #if (CHECK_RSVD((PLL0CFG_24_Val), ~0x00FF7FFF)) #error "PLL0CFG_24: Invalid values of reserved bits!" #endif #if (CHECK_RSVD((PLL1CFG_12_Val), ~0x0000007F)) #error "PLL1CFG_12: Invalid values of reserved bits!" #endif #if (CHECK_RSVD((PLL1CFG_24_Val), ~0x0000007F)) #error "PLL1CFG_24: Invalid values of reserved bits!" #endif #if (PLL0_SETUP) /* if PLL0 is used */ #if (CCLKCFG_Val < 2) /* CCLKSEL must be greater then 1 */ #error "CCLKCFG_24: CCLKSEL must be greater then 1 if PLL0 is used!" #endif #endif #if (CHECK_RANGE((CCLKCFG_Val), 0, 255)) #error "CCLKCFG_24: Value out of range!" #endif #if (CHECK_RSVD((USBCLKCFG_Val), ~0x0000000F)) #error "USBCLKCFG_24: Invalid values of reserved bits!" #endif #if (CHECK_RSVD((PCLKSEL0_Val), 0x000C0C00)) #error "PCLKSEL0: Invalid values of reserved bits!" #endif #if (CHECK_RSVD((PCLKSEL1_Val), 0x03000300)) #error "PCLKSEL1: Invalid values of reserved bits!" #endif #if (CHECK_RSVD((PCONP_Val), 0x10100821)) #error "PCONP: Invalid values of reserved bits!" #endif #if (CHECK_RSVD((CLKOUTCFG_Val), ~0x000001FF)) #error "CLKOUTCFG: Invalid values of reserved bits!" #endif /* Flash Accelerator Configuration -------------------------------------------*/ #if (CHECK_RSVD((FLASHCFG_Val), ~0x0000F000)) #error "FLASHCFG: Invalid values of reserved bits!" #endif /*---------------------------------------------------------------------------- DEFINES *----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------- Define clocks *----------------------------------------------------------------------------*/ #define XTAL_24 (24000000UL) /* Oscillator frequency */ #define XTAL_12 (12000000UL) /* Oscillator frequency */ #define OSC_CLK_24 ( XTAL_24) /* Main oscillator frequency */ #define OSC_CLK_12 ( XTAL_12) /* Main oscillator frequency */ #define RTC_CLK ( 32768UL) /* RTC oscillator frequency */ #define IRC_OSC ( 4000000UL) /* Internal RC oscillator frequency */ /* F_cco0 = (2 * M * F_in) / N */ #define __M_24 (((PLL0CFG_24_Val ) & 0x7FFF) + 1) #define __M_12 (((PLL0CFG_12_Val ) & 0x7FFF) + 1) #define __N_24 (((PLL0CFG_24_Val >> 16) & 0x00FF) + 1) #define __N_12 (((PLL0CFG_12_Val >> 16) & 0x00FF) + 1) #define __FCCO_24(__F_IN) ((2ULL * __M_24 * __F_IN) / __N_24) #define __FCCO_12(__F_IN) ((2ULL * __M_12 * __F_IN) / __N_12) #define __CCLK_DIV_24 (((CCLKCFG_Val ) & 0x00FF) + 1) #define __CCLK_DIV_12 (((CCLKCFG_Val ) & 0x00FF) + 1) /* Determine core clock frequency according to settings */ #if (PLL0_SETUP) #if ((CLKSRCSEL_Val & 0x03) == 1) #define __CORE_CLK_24 (__FCCO_24(OSC_CLK_24) / __CCLK_DIV_24) #elif ((CLKSRCSEL_Val & 0x03) == 2) #define __CORE_CLK_24 (__FCCO_24(RTC_CLK) / __CCLK_DIV_24) #else #define __CORE_CLK_24 (__FCCO_24(IRC_OSC) / __CCLK_DIV_24) #endif #if ((CLKSRCSEL_Val & 0x03) == 1) #define __CORE_CLK_12 (__FCCO_12(OSC_CLK_12) / __CCLK_DIV_12) #elif ((CLKSRCSEL_Val & 0x03) == 2) #define __CORE_CLK_12 (__FCCO_12(RTC_CLK) / __CCLK_DIV_12) #else #define __CORE_CLK_12 (__FCCO_12(IRC_OSC) / __CCLK_DIV_12) #endif #else #if ((CLKSRCSEL_Val & 0x03) == 1) #define __CORE_CLK_24 (OSC_CLK_24 / __CCLK_DIV_24) #elif ((CLKSRCSEL_Val & 0x03) == 2) #define __CORE_CLK_24 (RTC_CLK / __CCLK_DIV_24) #else #define __CORE_CLK_24 (IRC_OSC / __CCLK_DIV_24) #endif #if ((CLKSRCSEL_Val & 0x03) == 1) #define __CORE_CLK_12 (OSC_CLK_12 / __CCLK_DIV_12) #elif ((CLKSRCSEL_Val & 0x03) == 2) #define __CORE_CLK_12 (RTC_CLK / __CCLK_DIV_12) #else #define __CORE_CLK_12 (IRC_OSC / __CCLK_DIV_12) #endif #endif /** * @} */ /** @addtogroup LPC17xx_System_Public_Variables LPC17xx System Public Variables @{ */ /*---------------------------------------------------------------------------- Clock Variable definitions *----------------------------------------------------------------------------*/ uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)*/ const uint32_t SystemCoreClock12 = __CORE_CLK_12; /*!< System Clock Frequency (Core Clock)*/ const uint32_t SystemCoreClock24 = __CORE_CLK_24; /*!< System Clock Frequency (Core Clock)*/ /** * @} */ /** @addtogroup LPC17xx_System_Public_Functions LPC17xx System Public Functions @{ */ /** * Initialize the system * * @param none * @return none * * @brief Setup the microcontroller system. * Initialize the System. * Запрещено иÑпользовать любые вызовы, иÑпользующие указатель Ñтека (Ñ‚.к. Ñтек ещё не проинициализирован) */ void SystemInit (void) { if (1) { /* for 12 MHz Quartz */ #if (CLOCK_SETUP) /* Clock Setup */ LPC_SC->SCS = SCS_12_Val; if (LPC_SC->SCS & (1 << 5)) { /* If Main Oscillator is enabled */ while ((LPC_SC->SCS & (1<<6)) == 0);/* Wait for Oscillator to be ready */ } LPC_SC->CCLKCFG = CCLKCFG_Val; /* Setup Clock Divider */ /* Periphral clock must be selected before PLL0 enabling and connecting * - according errata.lpc1768-16.March.2010 - */ LPC_SC->PCLKSEL0 = PCLKSEL0_Val; /* Peripheral Clock Selection */ LPC_SC->PCLKSEL1 = PCLKSEL1_Val; LPC_SC->CLKSRCSEL = CLKSRCSEL_Val; /* Select Clock Source sysclk / PLL0 */ #if (PLL0_SETUP) LPC_SC->PLL0CFG = PLL0CFG_12_Val; /* configure PLL0 */ LPC_SC->PLL0FEED = 0xAA; LPC_SC->PLL0FEED = 0x55; LPC_SC->PLL0CON = 0x01; /* PLL0 Enable */ LPC_SC->PLL0FEED = 0xAA; LPC_SC->PLL0FEED = 0x55; while (!(LPC_SC->PLL0STAT & (1<<26)));/* Wait for PLOCK0 */ LPC_SC->PLL0CON = 0x03; /* PLL0 Enable & Connect */ LPC_SC->PLL0FEED = 0xAA; LPC_SC->PLL0FEED = 0x55; while ((LPC_SC->PLL0STAT & ((1<<25) | (1<<24))) != ((1<<25) | (1<<24))); /* Wait for PLLC0_STAT & PLLE0_STAT */ #endif #if (PLL1_SETUP) LPC_SC->PLL1CFG = PLL1CFG_12_Val; LPC_SC->PLL1FEED = 0xAA; LPC_SC->PLL1FEED = 0x55; LPC_SC->PLL1CON = 0x01; /* PLL1 Enable */ LPC_SC->PLL1FEED = 0xAA; LPC_SC->PLL1FEED = 0x55; while (!(LPC_SC->PLL1STAT & (1<<10)));/* Wait for PLOCK1 */ LPC_SC->PLL1CON = 0x03; /* PLL1 Enable & Connect */ LPC_SC->PLL1FEED = 0xAA; LPC_SC->PLL1FEED = 0x55; while ((LPC_SC->PLL1STAT & ((1<< 9) | (1<< 8))) != ((1<< 9) | (1<< 8))); /* Wait for PLLC1_STAT & PLLE1_STAT */ #else LPC_SC->USBCLKCFG = USBCLKCFG_12_Val; /* Setup USB Clock Divider */ #endif LPC_SC->PCONP = PCONP_Val; /* Power Control for Peripherals */ LPC_SC->CLKOUTCFG = CLKOUTCFG_Val; /* Clock Output Configuration */ #endif #if (FLASH_SETUP == 1) /* Flash Accelerator Setup */ LPC_SC->FLASHCFG = (LPC_SC->FLASHCFG & ~0x0000F000) | FLASHCFG_Val; #endif } else { /* for 24 MGz Quartz */ #if (CLOCK_SETUP) /* Clock Setup */ LPC_SC->SCS = SCS_24_Val; if (LPC_SC->SCS & (1 << 5)) { /* If Main Oscillator is enabled */ while ((LPC_SC->SCS & (1<<6)) == 0);/* Wait for Oscillator to be ready */ } LPC_SC->CCLKCFG = CCLKCFG_Val; /* Setup Clock Divider */ /* Periphral clock must be selected before PLL0 enabling and connecting * - according errata.lpc1768-16.March.2010 - */ LPC_SC->PCLKSEL0 = PCLKSEL0_Val; /* Peripheral Clock Selection */ LPC_SC->PCLKSEL1 = PCLKSEL1_Val; LPC_SC->CLKSRCSEL = CLKSRCSEL_Val; /* Select Clock Source sysclk / PLL0 */ #if (PLL0_SETUP) LPC_SC->PLL0CFG = PLL0CFG_24_Val; /* configure PLL0 */ LPC_SC->PLL0FEED = 0xAA; LPC_SC->PLL0FEED = 0x55; LPC_SC->PLL0CON = 0x01; /* PLL0 Enable */ LPC_SC->PLL0FEED = 0xAA; LPC_SC->PLL0FEED = 0x55; while (!(LPC_SC->PLL0STAT & (1<<26)));/* Wait for PLOCK0 */ LPC_SC->PLL0CON = 0x03; /* PLL0 Enable & Connect */ LPC_SC->PLL0FEED = 0xAA; LPC_SC->PLL0FEED = 0x55; while ((LPC_SC->PLL0STAT & ((1<<25) | (1<<24))) != ((1<<25) | (1<<24))); /* Wait for PLLC0_STAT & PLLE0_STAT */ #endif #if (PLL1_SETUP) LPC_SC->PLL1CFG = PLL1CFG_24_Val; LPC_SC->PLL1FEED = 0xAA; LPC_SC->PLL1FEED = 0x55; LPC_SC->PLL1CON = 0x01; /* PLL1 Enable */ LPC_SC->PLL1FEED = 0xAA; LPC_SC->PLL1FEED = 0x55; while (!(LPC_SC->PLL1STAT & (1<<10)));/* Wait for PLOCK1 */ LPC_SC->PLL1CON = 0x03; /* PLL1 Enable & Connect */ LPC_SC->PLL1FEED = 0xAA; LPC_SC->PLL1FEED = 0x55; while ((LPC_SC->PLL1STAT & ((1<< 9) | (1<< 8))) != ((1<< 9) | (1<< 8))); /* Wait for PLLC1_STAT & PLLE1_STAT */ #else LPC_SC->USBCLKCFG = USBCLKCFG_24_Val; /* Setup USB Clock Divider */ #endif LPC_SC->PCONP = PCONP_Val; /* Power Control for Peripherals */ LPC_SC->CLKOUTCFG = CLKOUTCFG_Val; /* Clock Output Configuration */ #endif #if (FLASH_SETUP == 1) /* Flash Accelerator Setup */ LPC_SC->FLASHCFG = (LPC_SC->FLASHCFG & ~0x0000F000) | FLASHCFG_Val; #endif } } cpputest-3.7.2/platforms_startup/armcc/LPC1768/system_LPC17xx.h000644 000765 000024 00000003413 12521603460 025071 0ustar00basvoddestaff000000 000000 /**************************************************************************//** * @file system_LPC17xx.h * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File * for the NXP LPC17xx Device Series * @version V1.02 * @date 08. September 2009 * * @note * Copyright (C) 2009 ARM Limited. All rights reserved. * * @par * ARM Limited (ARM) is supplying this software for use with Cortex-M * processor based microcontrollers. This file can be freely distributed * within development tools that are supporting such ARM based processors. * * @par * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. * ******************************************************************************/ #ifndef __SYSTEM_LPC17xx_H #define __SYSTEM_LPC17xx_H #ifdef __cplusplus extern "C" { #endif #include /** @addtogroup LPC17xx_System * @{ */ extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ /** * Initialize the system * * @param none * @return none * * @brief Setup the microcontroller system. * Initialize the System and update the SystemCoreClock variable. */ extern void SystemInit (void); /** * Update SystemCoreClock variable * * @param none * @return none * * @brief Updates the SystemCoreClock with current core Clock * retrieved from cpu registers. */ extern void SystemCoreClockUpdate (void); #ifdef __cplusplus } #endif /** * @} */ #endif /* __SYSTEM_LPC17xx_H */ cpputest-3.7.2/platforms_startup/armcc/AT91SAM7A3/AT91SAM7A3.h000644 000765 000024 00000710542 12521603460 024147 0ustar00basvoddestaff000000 000000 // ---------------------------------------------------------------------------- // ATMEL Microcontroller Software Support - ROUSSET - // ---------------------------------------------------------------------------- // DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE // DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // ---------------------------------------------------------------------------- // File Name : AT91SAM7A3.h // Object : AT91SAM7A3 definitions // Generated : AT91 SW Application Group 09/13/2005 (09:48:02) // // CVS Reference : /AT91SAM7A3.pl/1.28/Tue Sep 13 07:43:39 2005// // CVS Reference : /SYS_SAM7A3.pl/1.7/Thu Feb 3 17:24:14 2005// // CVS Reference : /MC_SAM7A3.pl/1.2/Fri May 20 14:22:29 2005// // CVS Reference : /PMC_SAM7A3.pl/1.2/Tue Feb 8 14:00:18 2005// // CVS Reference : /RSTC_SAM7A3.pl/1.2/Wed Jul 13 15:25:16 2005// // CVS Reference : /SHDWC_SAM7A3.pl/1.1/Thu Feb 3 17:23:24 2005// // CVS Reference : /UDP_SAM7A3.pl/1.1/Tue May 10 12:39:23 2005// // CVS Reference : /PWM_SAM7A3.pl/1.1/Tue May 10 12:38:54 2005// // CVS Reference : /AIC_6075B.pl/1.3/Fri May 20 14:21:42 2005// // CVS Reference : /PIO_6057A.pl/1.2/Thu Feb 3 10:29:42 2005// // CVS Reference : /RTTC_6081A.pl/1.2/Thu Nov 4 13:57:22 2004// // CVS Reference : /PITC_6079A.pl/1.2/Thu Nov 4 13:56:22 2004// // CVS Reference : /WDTC_6080A.pl/1.3/Thu Nov 4 13:58:52 2004// // CVS Reference : /PDC_6074C.pl/1.2/Thu Feb 3 09:02:11 2005// // CVS Reference : /DBGU_6059D.pl/1.1/Mon Jan 31 13:54:41 2005// // CVS Reference : /SPI_6088D.pl/1.3/Fri May 20 14:23:02 2005// // CVS Reference : /US_6089C.pl/1.1/Mon Jan 31 13:56:02 2005// // CVS Reference : /SSC_6078A.pl/1.1/Tue Jul 13 07:10:41 2004// // CVS Reference : /TWI_6061A.pl/1.1/Tue Jul 13 06:38:23 2004// // CVS Reference : /TC_6082A.pl/1.7/Wed Mar 9 16:31:51 2005// // CVS Reference : /CAN_6019B.pl/1.1/Mon Jan 31 13:54:30 2005// // CVS Reference : /MCI_6101A.pl/1.1/Tue Jul 13 06:33:59 2004// // CVS Reference : /ADC_6051C.pl/1.1/Mon Jan 31 13:12:40 2005// // CVS Reference : /AES_6149A.pl/1.10/Mon Feb 7 09:46:08 2005// // CVS Reference : /DES3_6150A.pl/1.1/Mon Jan 17 13:30:33 2005// // ---------------------------------------------------------------------------- #ifndef AT91SAM7A3_H #define AT91SAM7A3_H typedef volatile unsigned int AT91_REG;// Hardware register definition // ***************************************************************************** // SOFTWARE API DEFINITION FOR System Peripherals // ***************************************************************************** typedef struct _AT91S_SYS { AT91_REG AIC_SMR[32]; // Source Mode Register AT91_REG AIC_SVR[32]; // Source Vector Register AT91_REG AIC_IVR; // IRQ Vector Register AT91_REG AIC_FVR; // FIQ Vector Register AT91_REG AIC_ISR; // Interrupt Status Register AT91_REG AIC_IPR; // Interrupt Pending Register AT91_REG AIC_IMR; // Interrupt Mask Register AT91_REG AIC_CISR; // Core Interrupt Status Register AT91_REG Reserved0[2]; // AT91_REG AIC_IECR; // Interrupt Enable Command Register AT91_REG AIC_IDCR; // Interrupt Disable Command Register AT91_REG AIC_ICCR; // Interrupt Clear Command Register AT91_REG AIC_ISCR; // Interrupt Set Command Register AT91_REG AIC_EOICR; // End of Interrupt Command Register AT91_REG AIC_SPU; // Spurious Vector Register AT91_REG AIC_DCR; // Debug Control Register (Protect) AT91_REG Reserved1[1]; // AT91_REG AIC_FFER; // Fast Forcing Enable Register AT91_REG AIC_FFDR; // Fast Forcing Disable Register AT91_REG AIC_FFSR; // Fast Forcing Status Register AT91_REG Reserved2[45]; // AT91_REG DBGU_CR; // Control Register AT91_REG DBGU_MR; // Mode Register AT91_REG DBGU_IER; // Interrupt Enable Register AT91_REG DBGU_IDR; // Interrupt Disable Register AT91_REG DBGU_IMR; // Interrupt Mask Register AT91_REG DBGU_CSR; // Channel Status Register AT91_REG DBGU_RHR; // Receiver Holding Register AT91_REG DBGU_THR; // Transmitter Holding Register AT91_REG DBGU_BRGR; // Baud Rate Generator Register AT91_REG Reserved3[7]; // AT91_REG DBGU_CIDR; // Chip ID Register AT91_REG DBGU_EXID; // Chip ID Extension Register AT91_REG DBGU_FNTR; // Force NTRST Register AT91_REG Reserved4[45]; // AT91_REG DBGU_RPR; // Receive Pointer Register AT91_REG DBGU_RCR; // Receive Counter Register AT91_REG DBGU_TPR; // Transmit Pointer Register AT91_REG DBGU_TCR; // Transmit Counter Register AT91_REG DBGU_RNPR; // Receive Next Pointer Register AT91_REG DBGU_RNCR; // Receive Next Counter Register AT91_REG DBGU_TNPR; // Transmit Next Pointer Register AT91_REG DBGU_TNCR; // Transmit Next Counter Register AT91_REG DBGU_PTCR; // PDC Transfer Control Register AT91_REG DBGU_PTSR; // PDC Transfer Status Register AT91_REG Reserved5[54]; // AT91_REG PIOA_PER; // PIO Enable Register AT91_REG PIOA_PDR; // PIO Disable Register AT91_REG PIOA_PSR; // PIO Status Register AT91_REG Reserved6[1]; // AT91_REG PIOA_OER; // Output Enable Register AT91_REG PIOA_ODR; // Output Disable Registerr AT91_REG PIOA_OSR; // Output Status Register AT91_REG Reserved7[1]; // AT91_REG PIOA_IFER; // Input Filter Enable Register AT91_REG PIOA_IFDR; // Input Filter Disable Register AT91_REG PIOA_IFSR; // Input Filter Status Register AT91_REG Reserved8[1]; // AT91_REG PIOA_SODR; // Set Output Data Register AT91_REG PIOA_CODR; // Clear Output Data Register AT91_REG PIOA_ODSR; // Output Data Status Register AT91_REG PIOA_PDSR; // Pin Data Status Register AT91_REG PIOA_IER; // Interrupt Enable Register AT91_REG PIOA_IDR; // Interrupt Disable Register AT91_REG PIOA_IMR; // Interrupt Mask Register AT91_REG PIOA_ISR; // Interrupt Status Register AT91_REG PIOA_MDER; // Multi-driver Enable Register AT91_REG PIOA_MDDR; // Multi-driver Disable Register AT91_REG PIOA_MDSR; // Multi-driver Status Register AT91_REG Reserved9[1]; // AT91_REG PIOA_PPUDR; // Pull-up Disable Register AT91_REG PIOA_PPUER; // Pull-up Enable Register AT91_REG PIOA_PPUSR; // Pull-up Status Register AT91_REG Reserved10[1]; // AT91_REG PIOA_ASR; // Select A Register AT91_REG PIOA_BSR; // Select B Register AT91_REG PIOA_ABSR; // AB Select Status Register AT91_REG Reserved11[9]; // AT91_REG PIOA_OWER; // Output Write Enable Register AT91_REG PIOA_OWDR; // Output Write Disable Register AT91_REG PIOA_OWSR; // Output Write Status Register AT91_REG Reserved12[85]; // AT91_REG PIOB_PER; // PIO Enable Register AT91_REG PIOB_PDR; // PIO Disable Register AT91_REG PIOB_PSR; // PIO Status Register AT91_REG Reserved13[1]; // AT91_REG PIOB_OER; // Output Enable Register AT91_REG PIOB_ODR; // Output Disable Registerr AT91_REG PIOB_OSR; // Output Status Register AT91_REG Reserved14[1]; // AT91_REG PIOB_IFER; // Input Filter Enable Register AT91_REG PIOB_IFDR; // Input Filter Disable Register AT91_REG PIOB_IFSR; // Input Filter Status Register AT91_REG Reserved15[1]; // AT91_REG PIOB_SODR; // Set Output Data Register AT91_REG PIOB_CODR; // Clear Output Data Register AT91_REG PIOB_ODSR; // Output Data Status Register AT91_REG PIOB_PDSR; // Pin Data Status Register AT91_REG PIOB_IER; // Interrupt Enable Register AT91_REG PIOB_IDR; // Interrupt Disable Register AT91_REG PIOB_IMR; // Interrupt Mask Register AT91_REG PIOB_ISR; // Interrupt Status Register AT91_REG PIOB_MDER; // Multi-driver Enable Register AT91_REG PIOB_MDDR; // Multi-driver Disable Register AT91_REG PIOB_MDSR; // Multi-driver Status Register AT91_REG Reserved16[1]; // AT91_REG PIOB_PPUDR; // Pull-up Disable Register AT91_REG PIOB_PPUER; // Pull-up Enable Register AT91_REG PIOB_PPUSR; // Pull-up Status Register AT91_REG Reserved17[1]; // AT91_REG PIOB_ASR; // Select A Register AT91_REG PIOB_BSR; // Select B Register AT91_REG PIOB_ABSR; // AB Select Status Register AT91_REG Reserved18[9]; // AT91_REG PIOB_OWER; // Output Write Enable Register AT91_REG PIOB_OWDR; // Output Write Disable Register AT91_REG PIOB_OWSR; // Output Write Status Register AT91_REG Reserved19[341]; // AT91_REG PMC_SCER; // System Clock Enable Register AT91_REG PMC_SCDR; // System Clock Disable Register AT91_REG PMC_SCSR; // System Clock Status Register AT91_REG Reserved20[1]; // AT91_REG PMC_PCER; // Peripheral Clock Enable Register AT91_REG PMC_PCDR; // Peripheral Clock Disable Register AT91_REG PMC_PCSR; // Peripheral Clock Status Register AT91_REG Reserved21[1]; // AT91_REG PMC_MOR; // Main Oscillator Register AT91_REG PMC_MCFR; // Main Clock Frequency Register AT91_REG Reserved22[1]; // AT91_REG PMC_PLLR; // PLL Register AT91_REG PMC_MCKR; // Master Clock Register AT91_REG Reserved23[3]; // AT91_REG PMC_PCKR[4]; // Programmable Clock Register AT91_REG Reserved24[4]; // AT91_REG PMC_IER; // Interrupt Enable Register AT91_REG PMC_IDR; // Interrupt Disable Register AT91_REG PMC_SR; // Status Register AT91_REG PMC_IMR; // Interrupt Mask Register AT91_REG Reserved25[36]; // AT91_REG RSTC_RCR; // Reset Control Register AT91_REG RSTC_RSR; // Reset Status Register AT91_REG RSTC_RMR; // Reset Mode Register AT91_REG Reserved26[1]; // AT91_REG SHDWC_SHCR; // Shut Down Control Register AT91_REG SHDWC_SHMR; // Shut Down Mode Register AT91_REG SHDWC_SHSR; // Shut Down Status Register AT91_REG Reserved27[1]; // AT91_REG RTTC_RTMR; // Real-time Mode Register AT91_REG RTTC_RTAR; // Real-time Alarm Register AT91_REG RTTC_RTVR; // Real-time Value Register AT91_REG RTTC_RTSR; // Real-time Status Register AT91_REG PITC_PIMR; // Period Interval Mode Register AT91_REG PITC_PISR; // Period Interval Status Register AT91_REG PITC_PIVR; // Period Interval Value Register AT91_REG PITC_PIIR; // Period Interval Image Register AT91_REG WDTC_WDCR; // Watchdog Control Register AT91_REG WDTC_WDMR; // Watchdog Mode Register AT91_REG WDTC_WDSR; // Watchdog Status Register AT91_REG Reserved28[1]; // AT91_REG SYS_GPBR0; // General Purpose Register 0 AT91_REG SYS_GPBR1; // General Purpose Register 1 AT91_REG Reserved29[106]; // AT91_REG MC_RCR; // MC Remap Control Register AT91_REG MC_ASR; // MC Abort Status Register AT91_REG MC_AASR; // MC Abort Address Status Register AT91_REG Reserved30[1]; // AT91_REG MC_PUIA[16]; // MC Protection Unit Area AT91_REG MC_PUP; // MC Protection Unit Peripherals AT91_REG MC_PUER; // MC Protection Unit Enable Register AT91_REG Reserved31[2]; // AT91_REG MC_FMR; // MC Flash Mode Register AT91_REG MC_FCR; // MC Flash Command Register AT91_REG MC_FSR; // MC Flash Status Register } AT91S_SYS, *AT91PS_SYS; // -------- GPBR : (SYS Offset: 0xd50) GPBR General Purpose Register -------- // -------- GPBR : (SYS Offset: 0xd54) GPBR General Purpose Register -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR Advanced Interrupt Controller // ***************************************************************************** typedef struct _AT91S_AIC { AT91_REG AIC_SMR[32]; // Source Mode Register AT91_REG AIC_SVR[32]; // Source Vector Register AT91_REG AIC_IVR; // IRQ Vector Register AT91_REG AIC_FVR; // FIQ Vector Register AT91_REG AIC_ISR; // Interrupt Status Register AT91_REG AIC_IPR; // Interrupt Pending Register AT91_REG AIC_IMR; // Interrupt Mask Register AT91_REG AIC_CISR; // Core Interrupt Status Register AT91_REG Reserved0[2]; // AT91_REG AIC_IECR; // Interrupt Enable Command Register AT91_REG AIC_IDCR; // Interrupt Disable Command Register AT91_REG AIC_ICCR; // Interrupt Clear Command Register AT91_REG AIC_ISCR; // Interrupt Set Command Register AT91_REG AIC_EOICR; // End of Interrupt Command Register AT91_REG AIC_SPU; // Spurious Vector Register AT91_REG AIC_DCR; // Debug Control Register (Protect) AT91_REG Reserved1[1]; // AT91_REG AIC_FFER; // Fast Forcing Enable Register AT91_REG AIC_FFDR; // Fast Forcing Disable Register AT91_REG AIC_FFSR; // Fast Forcing Status Register } AT91S_AIC, *AT91PS_AIC; // -------- AIC_SMR : (AIC Offset: 0x0) Control Register -------- #define AT91C_AIC_PRIOR ((unsigned int) 0x7 << 0) // (AIC) Priority Level #define AT91C_AIC_PRIOR_LOWEST ((unsigned int) 0x0) // (AIC) Lowest priority level #define AT91C_AIC_PRIOR_HIGHEST ((unsigned int) 0x7) // (AIC) Highest priority level #define AT91C_AIC_SRCTYPE ((unsigned int) 0x3 << 5) // (AIC) Interrupt Source Type #define AT91C_AIC_SRCTYPE_EXT_LOW_LEVEL ((unsigned int) 0x0 << 5) // (AIC) External Sources Code Label Low-level Sensitive #define AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL ((unsigned int) 0x0 << 5) // (AIC) Internal Sources Code Label High-level Sensitive #define AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE ((unsigned int) 0x1 << 5) // (AIC) Internal Sources Code Label Positive Edge triggered #define AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE ((unsigned int) 0x1 << 5) // (AIC) External Sources Code Label Negative Edge triggered #define AT91C_AIC_SRCTYPE_HIGH_LEVEL ((unsigned int) 0x2 << 5) // (AIC) Internal Or External Sources Code Label High-level Sensitive #define AT91C_AIC_SRCTYPE_POSITIVE_EDGE ((unsigned int) 0x3 << 5) // (AIC) Internal Or External Sources Code Label Positive Edge triggered // -------- AIC_CISR : (AIC Offset: 0x114) AIC Core Interrupt Status Register -------- #define AT91C_AIC_NFIQ ((unsigned int) 0x1 << 0) // (AIC) NFIQ Status #define AT91C_AIC_NIRQ ((unsigned int) 0x1 << 1) // (AIC) NIRQ Status // -------- AIC_DCR : (AIC Offset: 0x138) AIC Debug Control Register (Protect) -------- #define AT91C_AIC_DCR_PROT ((unsigned int) 0x1 << 0) // (AIC) Protection Mode #define AT91C_AIC_DCR_GMSK ((unsigned int) 0x1 << 1) // (AIC) General Mask // ***************************************************************************** // SOFTWARE API DEFINITION FOR Peripheral DMA Controller // ***************************************************************************** typedef struct _AT91S_PDC { AT91_REG PDC_RPR; // Receive Pointer Register AT91_REG PDC_RCR; // Receive Counter Register AT91_REG PDC_TPR; // Transmit Pointer Register AT91_REG PDC_TCR; // Transmit Counter Register AT91_REG PDC_RNPR; // Receive Next Pointer Register AT91_REG PDC_RNCR; // Receive Next Counter Register AT91_REG PDC_TNPR; // Transmit Next Pointer Register AT91_REG PDC_TNCR; // Transmit Next Counter Register AT91_REG PDC_PTCR; // PDC Transfer Control Register AT91_REG PDC_PTSR; // PDC Transfer Status Register } AT91S_PDC, *AT91PS_PDC; // -------- PDC_PTCR : (PDC Offset: 0x20) PDC Transfer Control Register -------- #define AT91C_PDC_RXTEN ((unsigned int) 0x1 << 0) // (PDC) Receiver Transfer Enable #define AT91C_PDC_RXTDIS ((unsigned int) 0x1 << 1) // (PDC) Receiver Transfer Disable #define AT91C_PDC_TXTEN ((unsigned int) 0x1 << 8) // (PDC) Transmitter Transfer Enable #define AT91C_PDC_TXTDIS ((unsigned int) 0x1 << 9) // (PDC) Transmitter Transfer Disable // -------- PDC_PTSR : (PDC Offset: 0x24) PDC Transfer Status Register -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR Debug Unit // ***************************************************************************** typedef struct _AT91S_DBGU { AT91_REG DBGU_CR; // Control Register AT91_REG DBGU_MR; // Mode Register AT91_REG DBGU_IER; // Interrupt Enable Register AT91_REG DBGU_IDR; // Interrupt Disable Register AT91_REG DBGU_IMR; // Interrupt Mask Register AT91_REG DBGU_CSR; // Channel Status Register AT91_REG DBGU_RHR; // Receiver Holding Register AT91_REG DBGU_THR; // Transmitter Holding Register AT91_REG DBGU_BRGR; // Baud Rate Generator Register AT91_REG Reserved0[7]; // AT91_REG DBGU_CIDR; // Chip ID Register AT91_REG DBGU_EXID; // Chip ID Extension Register AT91_REG DBGU_FNTR; // Force NTRST Register AT91_REG Reserved1[45]; // AT91_REG DBGU_RPR; // Receive Pointer Register AT91_REG DBGU_RCR; // Receive Counter Register AT91_REG DBGU_TPR; // Transmit Pointer Register AT91_REG DBGU_TCR; // Transmit Counter Register AT91_REG DBGU_RNPR; // Receive Next Pointer Register AT91_REG DBGU_RNCR; // Receive Next Counter Register AT91_REG DBGU_TNPR; // Transmit Next Pointer Register AT91_REG DBGU_TNCR; // Transmit Next Counter Register AT91_REG DBGU_PTCR; // PDC Transfer Control Register AT91_REG DBGU_PTSR; // PDC Transfer Status Register } AT91S_DBGU, *AT91PS_DBGU; // -------- DBGU_CR : (DBGU Offset: 0x0) Debug Unit Control Register -------- #define AT91C_US_RSTRX ((unsigned int) 0x1 << 2) // (DBGU) Reset Receiver #define AT91C_US_RSTTX ((unsigned int) 0x1 << 3) // (DBGU) Reset Transmitter #define AT91C_US_RXEN ((unsigned int) 0x1 << 4) // (DBGU) Receiver Enable #define AT91C_US_RXDIS ((unsigned int) 0x1 << 5) // (DBGU) Receiver Disable #define AT91C_US_TXEN ((unsigned int) 0x1 << 6) // (DBGU) Transmitter Enable #define AT91C_US_TXDIS ((unsigned int) 0x1 << 7) // (DBGU) Transmitter Disable #define AT91C_US_RSTSTA ((unsigned int) 0x1 << 8) // (DBGU) Reset Status Bits // -------- DBGU_MR : (DBGU Offset: 0x4) Debug Unit Mode Register -------- #define AT91C_US_PAR ((unsigned int) 0x7 << 9) // (DBGU) Parity type #define AT91C_US_PAR_EVEN ((unsigned int) 0x0 << 9) // (DBGU) Even Parity #define AT91C_US_PAR_ODD ((unsigned int) 0x1 << 9) // (DBGU) Odd Parity #define AT91C_US_PAR_SPACE ((unsigned int) 0x2 << 9) // (DBGU) Parity forced to 0 (Space) #define AT91C_US_PAR_MARK ((unsigned int) 0x3 << 9) // (DBGU) Parity forced to 1 (Mark) #define AT91C_US_PAR_NONE ((unsigned int) 0x4 << 9) // (DBGU) No Parity #define AT91C_US_PAR_MULTI_DROP ((unsigned int) 0x6 << 9) // (DBGU) Multi-drop mode #define AT91C_US_CHMODE ((unsigned int) 0x3 << 14) // (DBGU) Channel Mode #define AT91C_US_CHMODE_NORMAL ((unsigned int) 0x0 << 14) // (DBGU) Normal Mode: The USART channel operates as an RX/TX USART. #define AT91C_US_CHMODE_AUTO ((unsigned int) 0x1 << 14) // (DBGU) Automatic Echo: Receiver Data Input is connected to the TXD pin. #define AT91C_US_CHMODE_LOCAL ((unsigned int) 0x2 << 14) // (DBGU) Local Loopback: Transmitter Output Signal is connected to Receiver Input Signal. #define AT91C_US_CHMODE_REMOTE ((unsigned int) 0x3 << 14) // (DBGU) Remote Loopback: RXD pin is internally connected to TXD pin. // -------- DBGU_IER : (DBGU Offset: 0x8) Debug Unit Interrupt Enable Register -------- #define AT91C_US_RXRDY ((unsigned int) 0x1 << 0) // (DBGU) RXRDY Interrupt #define AT91C_US_TXRDY ((unsigned int) 0x1 << 1) // (DBGU) TXRDY Interrupt #define AT91C_US_ENDRX ((unsigned int) 0x1 << 3) // (DBGU) End of Receive Transfer Interrupt #define AT91C_US_ENDTX ((unsigned int) 0x1 << 4) // (DBGU) End of Transmit Interrupt #define AT91C_US_OVRE ((unsigned int) 0x1 << 5) // (DBGU) Overrun Interrupt #define AT91C_US_FRAME ((unsigned int) 0x1 << 6) // (DBGU) Framing Error Interrupt #define AT91C_US_PARE ((unsigned int) 0x1 << 7) // (DBGU) Parity Error Interrupt #define AT91C_US_TXEMPTY ((unsigned int) 0x1 << 9) // (DBGU) TXEMPTY Interrupt #define AT91C_US_TXBUFE ((unsigned int) 0x1 << 11) // (DBGU) TXBUFE Interrupt #define AT91C_US_RXBUFF ((unsigned int) 0x1 << 12) // (DBGU) RXBUFF Interrupt #define AT91C_US_COMM_TX ((unsigned int) 0x1 << 30) // (DBGU) COMM_TX Interrupt #define AT91C_US_COMM_RX ((unsigned int) 0x1 << 31) // (DBGU) COMM_RX Interrupt // -------- DBGU_IDR : (DBGU Offset: 0xc) Debug Unit Interrupt Disable Register -------- // -------- DBGU_IMR : (DBGU Offset: 0x10) Debug Unit Interrupt Mask Register -------- // -------- DBGU_CSR : (DBGU Offset: 0x14) Debug Unit Channel Status Register -------- // -------- DBGU_FNTR : (DBGU Offset: 0x48) Debug Unit FORCE_NTRST Register -------- #define AT91C_US_FORCE_NTRST ((unsigned int) 0x1 << 0) // (DBGU) Force NTRST in JTAG // ***************************************************************************** // SOFTWARE API DEFINITION FOR Parallel Input Output Controler // ***************************************************************************** typedef struct _AT91S_PIO { AT91_REG PIO_PER; // PIO Enable Register AT91_REG PIO_PDR; // PIO Disable Register AT91_REG PIO_PSR; // PIO Status Register AT91_REG Reserved0[1]; // AT91_REG PIO_OER; // Output Enable Register AT91_REG PIO_ODR; // Output Disable Registerr AT91_REG PIO_OSR; // Output Status Register AT91_REG Reserved1[1]; // AT91_REG PIO_IFER; // Input Filter Enable Register AT91_REG PIO_IFDR; // Input Filter Disable Register AT91_REG PIO_IFSR; // Input Filter Status Register AT91_REG Reserved2[1]; // AT91_REG PIO_SODR; // Set Output Data Register AT91_REG PIO_CODR; // Clear Output Data Register AT91_REG PIO_ODSR; // Output Data Status Register AT91_REG PIO_PDSR; // Pin Data Status Register AT91_REG PIO_IER; // Interrupt Enable Register AT91_REG PIO_IDR; // Interrupt Disable Register AT91_REG PIO_IMR; // Interrupt Mask Register AT91_REG PIO_ISR; // Interrupt Status Register AT91_REG PIO_MDER; // Multi-driver Enable Register AT91_REG PIO_MDDR; // Multi-driver Disable Register AT91_REG PIO_MDSR; // Multi-driver Status Register AT91_REG Reserved3[1]; // AT91_REG PIO_PPUDR; // Pull-up Disable Register AT91_REG PIO_PPUER; // Pull-up Enable Register AT91_REG PIO_PPUSR; // Pull-up Status Register AT91_REG Reserved4[1]; // AT91_REG PIO_ASR; // Select A Register AT91_REG PIO_BSR; // Select B Register AT91_REG PIO_ABSR; // AB Select Status Register AT91_REG Reserved5[9]; // AT91_REG PIO_OWER; // Output Write Enable Register AT91_REG PIO_OWDR; // Output Write Disable Register AT91_REG PIO_OWSR; // Output Write Status Register } AT91S_PIO, *AT91PS_PIO; // ***************************************************************************** // SOFTWARE API DEFINITION FOR Clock Generator Controler // ***************************************************************************** typedef struct _AT91S_CKGR { AT91_REG CKGR_MOR; // Main Oscillator Register AT91_REG CKGR_MCFR; // Main Clock Frequency Register AT91_REG Reserved0[1]; // AT91_REG CKGR_PLLR; // PLL Register } AT91S_CKGR, *AT91PS_CKGR; // -------- CKGR_MOR : (CKGR Offset: 0x0) Main Oscillator Register -------- #define AT91C_CKGR_MOSCEN ((unsigned int) 0x1 << 0) // (CKGR) Main Oscillator Enable #define AT91C_CKGR_OSCBYPASS ((unsigned int) 0x1 << 1) // (CKGR) Main Oscillator Bypass #define AT91C_CKGR_OSCOUNT ((unsigned int) 0xFF << 8) // (CKGR) Main Oscillator Start-up Time // -------- CKGR_MCFR : (CKGR Offset: 0x4) Main Clock Frequency Register -------- #define AT91C_CKGR_MAINF ((unsigned int) 0xFFFF << 0) // (CKGR) Main Clock Frequency #define AT91C_CKGR_MAINRDY ((unsigned int) 0x1 << 16) // (CKGR) Main Clock Ready // -------- CKGR_PLLR : (CKGR Offset: 0xc) PLL B Register -------- #define AT91C_CKGR_DIV ((unsigned int) 0xFF << 0) // (CKGR) Divider Selected #define AT91C_CKGR_DIV_0 ((unsigned int) 0x0) // (CKGR) Divider output is 0 #define AT91C_CKGR_DIV_BYPASS ((unsigned int) 0x1) // (CKGR) Divider is bypassed #define AT91C_CKGR_PLLCOUNT ((unsigned int) 0x3F << 8) // (CKGR) PLL Counter #define AT91C_CKGR_OUT ((unsigned int) 0x3 << 14) // (CKGR) PLL Output Frequency Range #define AT91C_CKGR_OUT_0 ((unsigned int) 0x0 << 14) // (CKGR) Please refer to the PLL datasheet #define AT91C_CKGR_OUT_1 ((unsigned int) 0x1 << 14) // (CKGR) Please refer to the PLL datasheet #define AT91C_CKGR_OUT_2 ((unsigned int) 0x2 << 14) // (CKGR) Please refer to the PLL datasheet #define AT91C_CKGR_OUT_3 ((unsigned int) 0x3 << 14) // (CKGR) Please refer to the PLL datasheet #define AT91C_CKGR_MUL ((unsigned int) 0x7FF << 16) // (CKGR) PLL Multiplier #define AT91C_CKGR_USBDIV ((unsigned int) 0x3 << 28) // (CKGR) Divider for USB Clocks #define AT91C_CKGR_USBDIV_0 ((unsigned int) 0x0 << 28) // (CKGR) Divider output is PLL clock output #define AT91C_CKGR_USBDIV_1 ((unsigned int) 0x1 << 28) // (CKGR) Divider output is PLL clock output divided by 2 #define AT91C_CKGR_USBDIV_2 ((unsigned int) 0x2 << 28) // (CKGR) Divider output is PLL clock output divided by 4 // ***************************************************************************** // SOFTWARE API DEFINITION FOR Power Management Controler // ***************************************************************************** typedef struct _AT91S_PMC { AT91_REG PMC_SCER; // System Clock Enable Register AT91_REG PMC_SCDR; // System Clock Disable Register AT91_REG PMC_SCSR; // System Clock Status Register AT91_REG Reserved0[1]; // AT91_REG PMC_PCER; // Peripheral Clock Enable Register AT91_REG PMC_PCDR; // Peripheral Clock Disable Register AT91_REG PMC_PCSR; // Peripheral Clock Status Register AT91_REG Reserved1[1]; // AT91_REG PMC_MOR; // Main Oscillator Register AT91_REG PMC_MCFR; // Main Clock Frequency Register AT91_REG Reserved2[1]; // AT91_REG PMC_PLLR; // PLL Register AT91_REG PMC_MCKR; // Master Clock Register AT91_REG Reserved3[3]; // AT91_REG PMC_PCKR[4]; // Programmable Clock Register AT91_REG Reserved4[4]; // AT91_REG PMC_IER; // Interrupt Enable Register AT91_REG PMC_IDR; // Interrupt Disable Register AT91_REG PMC_SR; // Status Register AT91_REG PMC_IMR; // Interrupt Mask Register } AT91S_PMC, *AT91PS_PMC; // -------- PMC_SCER : (PMC Offset: 0x0) System Clock Enable Register -------- #define AT91C_PMC_PCK ((unsigned int) 0x1 << 0) // (PMC) Processor Clock #define AT91C_PMC_UDP ((unsigned int) 0x1 << 7) // (PMC) USB Device Port Clock #define AT91C_PMC_PCK0 ((unsigned int) 0x1 << 8) // (PMC) Programmable Clock Output #define AT91C_PMC_PCK1 ((unsigned int) 0x1 << 9) // (PMC) Programmable Clock Output #define AT91C_PMC_PCK2 ((unsigned int) 0x1 << 10) // (PMC) Programmable Clock Output #define AT91C_PMC_PCK3 ((unsigned int) 0x1 << 11) // (PMC) Programmable Clock Output // -------- PMC_SCDR : (PMC Offset: 0x4) System Clock Disable Register -------- // -------- PMC_SCSR : (PMC Offset: 0x8) System Clock Status Register -------- // -------- CKGR_MOR : (PMC Offset: 0x20) Main Oscillator Register -------- // -------- CKGR_MCFR : (PMC Offset: 0x24) Main Clock Frequency Register -------- // -------- CKGR_PLLR : (PMC Offset: 0x2c) PLL B Register -------- // -------- PMC_MCKR : (PMC Offset: 0x30) Master Clock Register -------- #define AT91C_PMC_CSS ((unsigned int) 0x3 << 0) // (PMC) Programmable Clock Selection #define AT91C_PMC_CSS_SLOW_CLK ((unsigned int) 0x0) // (PMC) Slow Clock is selected #define AT91C_PMC_CSS_MAIN_CLK ((unsigned int) 0x1) // (PMC) Main Clock is selected #define AT91C_PMC_CSS_PLL_CLK ((unsigned int) 0x3) // (PMC) Clock from PLL is selected #define AT91C_PMC_PRES ((unsigned int) 0x7 << 2) // (PMC) Programmable Clock Prescaler #define AT91C_PMC_PRES_CLK ((unsigned int) 0x0 << 2) // (PMC) Selected clock #define AT91C_PMC_PRES_CLK_2 ((unsigned int) 0x1 << 2) // (PMC) Selected clock divided by 2 #define AT91C_PMC_PRES_CLK_4 ((unsigned int) 0x2 << 2) // (PMC) Selected clock divided by 4 #define AT91C_PMC_PRES_CLK_8 ((unsigned int) 0x3 << 2) // (PMC) Selected clock divided by 8 #define AT91C_PMC_PRES_CLK_16 ((unsigned int) 0x4 << 2) // (PMC) Selected clock divided by 16 #define AT91C_PMC_PRES_CLK_32 ((unsigned int) 0x5 << 2) // (PMC) Selected clock divided by 32 #define AT91C_PMC_PRES_CLK_64 ((unsigned int) 0x6 << 2) // (PMC) Selected clock divided by 64 // -------- PMC_PCKR : (PMC Offset: 0x40) Programmable Clock Register -------- // -------- PMC_IER : (PMC Offset: 0x60) PMC Interrupt Enable Register -------- #define AT91C_PMC_MOSCS ((unsigned int) 0x1 << 0) // (PMC) MOSC Status/Enable/Disable/Mask #define AT91C_PMC_LOCK ((unsigned int) 0x1 << 2) // (PMC) PLL Status/Enable/Disable/Mask #define AT91C_PMC_MCKRDY ((unsigned int) 0x1 << 3) // (PMC) MCK_RDY Status/Enable/Disable/Mask #define AT91C_PMC_PCK0RDY ((unsigned int) 0x1 << 8) // (PMC) PCK0_RDY Status/Enable/Disable/Mask #define AT91C_PMC_PCK1RDY ((unsigned int) 0x1 << 9) // (PMC) PCK1_RDY Status/Enable/Disable/Mask #define AT91C_PMC_PCK2RDY ((unsigned int) 0x1 << 10) // (PMC) PCK2_RDY Status/Enable/Disable/Mask #define AT91C_PMC_PCK3RDY ((unsigned int) 0x1 << 11) // (PMC) PCK3_RDY Status/Enable/Disable/Mask // -------- PMC_IDR : (PMC Offset: 0x64) PMC Interrupt Disable Register -------- // -------- PMC_SR : (PMC Offset: 0x68) PMC Status Register -------- // -------- PMC_IMR : (PMC Offset: 0x6c) PMC Interrupt Mask Register -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR Reset Controller Interface // ***************************************************************************** typedef struct _AT91S_RSTC { AT91_REG RSTC_RCR; // Reset Control Register AT91_REG RSTC_RSR; // Reset Status Register AT91_REG RSTC_RMR; // Reset Mode Register } AT91S_RSTC, *AT91PS_RSTC; // -------- RSTC_RCR : (RSTC Offset: 0x0) Reset Control Register -------- #define AT91C_RSTC_PROCRST ((unsigned int) 0x1 << 0) // (RSTC) Processor Reset #define AT91C_RSTC_PERRST ((unsigned int) 0x1 << 2) // (RSTC) Peripheral Reset #define AT91C_RSTC_EXTRST ((unsigned int) 0x1 << 3) // (RSTC) External Reset #define AT91C_RSTC_KEY ((unsigned int) 0xFF << 24) // (RSTC) Password // -------- RSTC_RSR : (RSTC Offset: 0x4) Reset Status Register -------- #define AT91C_RSTC_URSTS ((unsigned int) 0x1 << 0) // (RSTC) User Reset Status #define AT91C_RSTC_RSTTYP ((unsigned int) 0x7 << 8) // (RSTC) Reset Type #define AT91C_RSTC_RSTTYP_GENERAL ((unsigned int) 0x0 << 8) // (RSTC) General reset. Both VDDCORE and VDDBU rising. #define AT91C_RSTC_RSTTYP_WAKEUP ((unsigned int) 0x1 << 8) // (RSTC) WakeUp Reset. VDDCORE rising. #define AT91C_RSTC_RSTTYP_WATCHDOG ((unsigned int) 0x2 << 8) // (RSTC) Watchdog Reset. Watchdog overflow occured. #define AT91C_RSTC_RSTTYP_SOFTWARE ((unsigned int) 0x3 << 8) // (RSTC) Software Reset. Processor reset required by the software. #define AT91C_RSTC_RSTTYP_USER ((unsigned int) 0x4 << 8) // (RSTC) User Reset. NRST pin detected low. #define AT91C_RSTC_NRSTL ((unsigned int) 0x1 << 16) // (RSTC) NRST pin level #define AT91C_RSTC_SRCMP ((unsigned int) 0x1 << 17) // (RSTC) Software Reset Command in Progress. // -------- RSTC_RMR : (RSTC Offset: 0x8) Reset Mode Register -------- #define AT91C_RSTC_URSTEN ((unsigned int) 0x1 << 0) // (RSTC) User Reset Enable #define AT91C_RSTC_URSTIEN ((unsigned int) 0x1 << 4) // (RSTC) User Reset Interrupt Enable #define AT91C_RSTC_ERSTL ((unsigned int) 0xF << 8) // (RSTC) User Reset Length // ***************************************************************************** // SOFTWARE API DEFINITION FOR Shut Down Controller Interface // ***************************************************************************** typedef struct _AT91S_SHDWC { AT91_REG SHDWC_SHCR; // Shut Down Control Register AT91_REG SHDWC_SHMR; // Shut Down Mode Register AT91_REG SHDWC_SHSR; // Shut Down Status Register } AT91S_SHDWC, *AT91PS_SHDWC; // -------- SHDWC_SHCR : (SHDWC Offset: 0x0) Shut Down Control Register -------- #define AT91C_SHDWC_SHDW ((unsigned int) 0x1 << 0) // (SHDWC) Processor Reset #define AT91C_SHDWC_KEY ((unsigned int) 0xFF << 24) // (SHDWC) Shut down KEY Password // -------- SHDWC_SHMR : (SHDWC Offset: 0x4) Shut Down Mode Register -------- #define AT91C_SHDWC_WKMODE0 ((unsigned int) 0x3 << 0) // (SHDWC) Wake Up 0 Mode Selection #define AT91C_SHDWC_WKMODE0_NONE ((unsigned int) 0x0) // (SHDWC) None. No detection is performed on the wake up input. #define AT91C_SHDWC_WKMODE0_HIGH ((unsigned int) 0x1) // (SHDWC) High Level. #define AT91C_SHDWC_WKMODE0_LOW ((unsigned int) 0x2) // (SHDWC) Low Level. #define AT91C_SHDWC_WKMODE0_ANYLEVEL ((unsigned int) 0x3) // (SHDWC) Any level change. #define AT91C_SHDWC_CPTWK0 ((unsigned int) 0xF << 4) // (SHDWC) Counter On Wake Up 0 #define AT91C_SHDWC_WKMODE1 ((unsigned int) 0x3 << 8) // (SHDWC) Wake Up 1 Mode Selection #define AT91C_SHDWC_WKMODE1_NONE ((unsigned int) 0x0 << 8) // (SHDWC) None. No detection is performed on the wake up input. #define AT91C_SHDWC_WKMODE1_HIGH ((unsigned int) 0x1 << 8) // (SHDWC) High Level. #define AT91C_SHDWC_WKMODE1_LOW ((unsigned int) 0x2 << 8) // (SHDWC) Low Level. #define AT91C_SHDWC_WKMODE1_ANYLEVEL ((unsigned int) 0x3 << 8) // (SHDWC) Any level change. #define AT91C_SHDWC_CPTWK1 ((unsigned int) 0xF << 12) // (SHDWC) Counter On Wake Up 1 #define AT91C_SHDWC_RTTWKEN ((unsigned int) 0x1 << 16) // (SHDWC) Real Time Timer Wake Up Enable // -------- SHDWC_SHSR : (SHDWC Offset: 0x8) Shut Down Status Register -------- #define AT91C_SHDWC_WAKEUP0 ((unsigned int) 0x1 << 0) // (SHDWC) Wake Up 0 Status #define AT91C_SHDWC_WAKEUP1 ((unsigned int) 0x1 << 1) // (SHDWC) Wake Up 1 Status #define AT91C_SHDWC_FWKUP ((unsigned int) 0x1 << 2) // (SHDWC) Force Wake Up Status #define AT91C_SHDWC_RTTWK ((unsigned int) 0x1 << 16) // (SHDWC) Real Time Timer wake Up // ***************************************************************************** // SOFTWARE API DEFINITION FOR Real Time Timer Controller Interface // ***************************************************************************** typedef struct _AT91S_RTTC { AT91_REG RTTC_RTMR; // Real-time Mode Register AT91_REG RTTC_RTAR; // Real-time Alarm Register AT91_REG RTTC_RTVR; // Real-time Value Register AT91_REG RTTC_RTSR; // Real-time Status Register } AT91S_RTTC, *AT91PS_RTTC; // -------- RTTC_RTMR : (RTTC Offset: 0x0) Real-time Mode Register -------- #define AT91C_RTTC_RTPRES ((unsigned int) 0xFFFF << 0) // (RTTC) Real-time Timer Prescaler Value #define AT91C_RTTC_ALMIEN ((unsigned int) 0x1 << 16) // (RTTC) Alarm Interrupt Enable #define AT91C_RTTC_RTTINCIEN ((unsigned int) 0x1 << 17) // (RTTC) Real Time Timer Increment Interrupt Enable #define AT91C_RTTC_RTTRST ((unsigned int) 0x1 << 18) // (RTTC) Real Time Timer Restart // -------- RTTC_RTAR : (RTTC Offset: 0x4) Real-time Alarm Register -------- #define AT91C_RTTC_ALMV ((unsigned int) 0x0 << 0) // (RTTC) Alarm Value // -------- RTTC_RTVR : (RTTC Offset: 0x8) Current Real-time Value Register -------- #define AT91C_RTTC_CRTV ((unsigned int) 0x0 << 0) // (RTTC) Current Real-time Value // -------- RTTC_RTSR : (RTTC Offset: 0xc) Real-time Status Register -------- #define AT91C_RTTC_ALMS ((unsigned int) 0x1 << 0) // (RTTC) Real-time Alarm Status #define AT91C_RTTC_RTTINC ((unsigned int) 0x1 << 1) // (RTTC) Real-time Timer Increment // ***************************************************************************** // SOFTWARE API DEFINITION FOR Periodic Interval Timer Controller Interface // ***************************************************************************** typedef struct _AT91S_PITC { AT91_REG PITC_PIMR; // Period Interval Mode Register AT91_REG PITC_PISR; // Period Interval Status Register AT91_REG PITC_PIVR; // Period Interval Value Register AT91_REG PITC_PIIR; // Period Interval Image Register } AT91S_PITC, *AT91PS_PITC; // -------- PITC_PIMR : (PITC Offset: 0x0) Periodic Interval Mode Register -------- #define AT91C_PITC_PIV ((unsigned int) 0xFFFFF << 0) // (PITC) Periodic Interval Value #define AT91C_PITC_PITEN ((unsigned int) 0x1 << 24) // (PITC) Periodic Interval Timer Enabled #define AT91C_PITC_PITIEN ((unsigned int) 0x1 << 25) // (PITC) Periodic Interval Timer Interrupt Enable // -------- PITC_PISR : (PITC Offset: 0x4) Periodic Interval Status Register -------- #define AT91C_PITC_PITS ((unsigned int) 0x1 << 0) // (PITC) Periodic Interval Timer Status // -------- PITC_PIVR : (PITC Offset: 0x8) Periodic Interval Value Register -------- #define AT91C_PITC_CPIV ((unsigned int) 0xFFFFF << 0) // (PITC) Current Periodic Interval Value #define AT91C_PITC_PICNT ((unsigned int) 0xFFF << 20) // (PITC) Periodic Interval Counter // -------- PITC_PIIR : (PITC Offset: 0xc) Periodic Interval Image Register -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR Watchdog Timer Controller Interface // ***************************************************************************** typedef struct _AT91S_WDTC { AT91_REG WDTC_WDCR; // Watchdog Control Register AT91_REG WDTC_WDMR; // Watchdog Mode Register AT91_REG WDTC_WDSR; // Watchdog Status Register } AT91S_WDTC, *AT91PS_WDTC; // -------- WDTC_WDCR : (WDTC Offset: 0x0) Periodic Interval Image Register -------- #define AT91C_WDTC_WDRSTT ((unsigned int) 0x1 << 0) // (WDTC) Watchdog Restart #define AT91C_WDTC_KEY ((unsigned int) 0xFF << 24) // (WDTC) Watchdog KEY Password // -------- WDTC_WDMR : (WDTC Offset: 0x4) Watchdog Mode Register -------- #define AT91C_WDTC_WDV ((unsigned int) 0xFFF << 0) // (WDTC) Watchdog Timer Restart #define AT91C_WDTC_WDFIEN ((unsigned int) 0x1 << 12) // (WDTC) Watchdog Fault Interrupt Enable #define AT91C_WDTC_WDRSTEN ((unsigned int) 0x1 << 13) // (WDTC) Watchdog Reset Enable #define AT91C_WDTC_WDRPROC ((unsigned int) 0x1 << 14) // (WDTC) Watchdog Timer Restart #define AT91C_WDTC_WDDIS ((unsigned int) 0x1 << 15) // (WDTC) Watchdog Disable #define AT91C_WDTC_WDD ((unsigned int) 0xFFF << 16) // (WDTC) Watchdog Delta Value #define AT91C_WDTC_WDDBGHLT ((unsigned int) 0x1 << 28) // (WDTC) Watchdog Debug Halt #define AT91C_WDTC_WDIDLEHLT ((unsigned int) 0x1 << 29) // (WDTC) Watchdog Idle Halt // -------- WDTC_WDSR : (WDTC Offset: 0x8) Watchdog Status Register -------- #define AT91C_WDTC_WDUNF ((unsigned int) 0x1 << 0) // (WDTC) Watchdog Underflow #define AT91C_WDTC_WDERR ((unsigned int) 0x1 << 1) // (WDTC) Watchdog Error // ***************************************************************************** // SOFTWARE API DEFINITION FOR Memory Controller Interface // ***************************************************************************** typedef struct _AT91S_MC { AT91_REG MC_RCR; // MC Remap Control Register AT91_REG MC_ASR; // MC Abort Status Register AT91_REG MC_AASR; // MC Abort Address Status Register AT91_REG Reserved0[1]; // AT91_REG MC_PUIA[16]; // MC Protection Unit Area AT91_REG MC_PUP; // MC Protection Unit Peripherals AT91_REG MC_PUER; // MC Protection Unit Enable Register AT91_REG Reserved1[2]; // AT91_REG MC_FMR; // MC Flash Mode Register AT91_REG MC_FCR; // MC Flash Command Register AT91_REG MC_FSR; // MC Flash Status Register } AT91S_MC, *AT91PS_MC; // -------- MC_RCR : (MC Offset: 0x0) MC Remap Control Register -------- #define AT91C_MC_RCB ((unsigned int) 0x1 << 0) // (MC) Remap Command Bit // -------- MC_ASR : (MC Offset: 0x4) MC Abort Status Register -------- #define AT91C_MC_UNDADD ((unsigned int) 0x1 << 0) // (MC) Undefined Addess Abort Status #define AT91C_MC_MISADD ((unsigned int) 0x1 << 1) // (MC) Misaligned Addess Abort Status #define AT91C_MC_MPU ((unsigned int) 0x1 << 2) // (MC) Memory protection Unit Abort Status #define AT91C_MC_ABTSZ ((unsigned int) 0x3 << 8) // (MC) Abort Size Status #define AT91C_MC_ABTSZ_BYTE ((unsigned int) 0x0 << 8) // (MC) Byte #define AT91C_MC_ABTSZ_HWORD ((unsigned int) 0x1 << 8) // (MC) Half-word #define AT91C_MC_ABTSZ_WORD ((unsigned int) 0x2 << 8) // (MC) Word #define AT91C_MC_ABTTYP ((unsigned int) 0x3 << 10) // (MC) Abort Type Status #define AT91C_MC_ABTTYP_DATAR ((unsigned int) 0x0 << 10) // (MC) Data Read #define AT91C_MC_ABTTYP_DATAW ((unsigned int) 0x1 << 10) // (MC) Data Write #define AT91C_MC_ABTTYP_FETCH ((unsigned int) 0x2 << 10) // (MC) Code Fetch #define AT91C_MC_MST0 ((unsigned int) 0x1 << 16) // (MC) Master 0 Abort Source #define AT91C_MC_MST1 ((unsigned int) 0x1 << 17) // (MC) Master 1 Abort Source #define AT91C_MC_SVMST0 ((unsigned int) 0x1 << 24) // (MC) Saved Master 0 Abort Source #define AT91C_MC_SVMST1 ((unsigned int) 0x1 << 25) // (MC) Saved Master 1 Abort Source // -------- MC_PUIA : (MC Offset: 0x10) MC Protection Unit Area -------- #define AT91C_MC_PROT ((unsigned int) 0x3 << 0) // (MC) Protection #define AT91C_MC_PROT_PNAUNA ((unsigned int) 0x0) // (MC) Privilege: No Access, User: No Access #define AT91C_MC_PROT_PRWUNA ((unsigned int) 0x1) // (MC) Privilege: Read/Write, User: No Access #define AT91C_MC_PROT_PRWURO ((unsigned int) 0x2) // (MC) Privilege: Read/Write, User: Read Only #define AT91C_MC_PROT_PRWURW ((unsigned int) 0x3) // (MC) Privilege: Read/Write, User: Read/Write #define AT91C_MC_SIZE ((unsigned int) 0xF << 4) // (MC) Internal Area Size #define AT91C_MC_SIZE_1KB ((unsigned int) 0x0 << 4) // (MC) Area size 1KByte #define AT91C_MC_SIZE_2KB ((unsigned int) 0x1 << 4) // (MC) Area size 2KByte #define AT91C_MC_SIZE_4KB ((unsigned int) 0x2 << 4) // (MC) Area size 4KByte #define AT91C_MC_SIZE_8KB ((unsigned int) 0x3 << 4) // (MC) Area size 8KByte #define AT91C_MC_SIZE_16KB ((unsigned int) 0x4 << 4) // (MC) Area size 16KByte #define AT91C_MC_SIZE_32KB ((unsigned int) 0x5 << 4) // (MC) Area size 32KByte #define AT91C_MC_SIZE_64KB ((unsigned int) 0x6 << 4) // (MC) Area size 64KByte #define AT91C_MC_SIZE_128KB ((unsigned int) 0x7 << 4) // (MC) Area size 128KByte #define AT91C_MC_SIZE_256KB ((unsigned int) 0x8 << 4) // (MC) Area size 256KByte #define AT91C_MC_SIZE_512KB ((unsigned int) 0x9 << 4) // (MC) Area size 512KByte #define AT91C_MC_SIZE_1MB ((unsigned int) 0xA << 4) // (MC) Area size 1MByte #define AT91C_MC_SIZE_2MB ((unsigned int) 0xB << 4) // (MC) Area size 2MByte #define AT91C_MC_SIZE_4MB ((unsigned int) 0xC << 4) // (MC) Area size 4MByte #define AT91C_MC_SIZE_8MB ((unsigned int) 0xD << 4) // (MC) Area size 8MByte #define AT91C_MC_SIZE_16MB ((unsigned int) 0xE << 4) // (MC) Area size 16MByte #define AT91C_MC_SIZE_64MB ((unsigned int) 0xF << 4) // (MC) Area size 64MByte #define AT91C_MC_BA ((unsigned int) 0x3FFFF << 10) // (MC) Internal Area Base Address // -------- MC_PUP : (MC Offset: 0x50) MC Protection Unit Peripheral -------- // -------- MC_PUER : (MC Offset: 0x54) MC Protection Unit Area -------- #define AT91C_MC_PUEB ((unsigned int) 0x1 << 0) // (MC) Protection Unit enable Bit // -------- MC_FMR : (MC Offset: 0x60) MC Flash Mode Register -------- #define AT91C_MC_EOP ((unsigned int) 0x1 << 0) // (MC) End Of Programming Flag #define AT91C_MC_EOL ((unsigned int) 0x1 << 1) // (MC) End Of Lock/Unlock Flag #define AT91C_MC_LOCKE ((unsigned int) 0x1 << 2) // (MC) Lock Error Flag #define AT91C_MC_PROGE ((unsigned int) 0x1 << 3) // (MC) Programming Error Flag #define AT91C_MC_NEBP ((unsigned int) 0x1 << 7) // (MC) No Erase Before Programming #define AT91C_MC_FWS ((unsigned int) 0x3 << 8) // (MC) Flash Wait State #define AT91C_MC_FWS_0FWS ((unsigned int) 0x0 << 8) // (MC) 1 cycle for Read, 2 for Write operations #define AT91C_MC_FWS_1FWS ((unsigned int) 0x1 << 8) // (MC) 2 cycles for Read, 3 for Write operations #define AT91C_MC_FWS_2FWS ((unsigned int) 0x2 << 8) // (MC) 3 cycles for Read, 4 for Write operations #define AT91C_MC_FWS_3FWS ((unsigned int) 0x3 << 8) // (MC) 4 cycles for Read, 4 for Write operations #define AT91C_MC_FMCN ((unsigned int) 0xFF << 16) // (MC) Flash Microsecond Cycle Number // -------- MC_FCR : (MC Offset: 0x64) MC Flash Command Register -------- #define AT91C_MC_FCMD ((unsigned int) 0xF << 0) // (MC) Flash Command #define AT91C_MC_FCMD_START_PROG ((unsigned int) 0x1) // (MC) Starts the programming of th epage specified by PAGEN. #define AT91C_MC_FCMD_LOCK ((unsigned int) 0x2) // (MC) Starts a lock sequence of the sector defined by the bits 4 to 7 of the field PAGEN. #define AT91C_MC_FCMD_PROG_AND_LOCK ((unsigned int) 0x3) // (MC) The lock sequence automatically happens after the programming sequence is completed. #define AT91C_MC_FCMD_UNLOCK ((unsigned int) 0x4) // (MC) Starts an unlock sequence of the sector defined by the bits 4 to 7 of the field PAGEN. #define AT91C_MC_FCMD_ERASE_ALL ((unsigned int) 0x8) // (MC) Starts the erase of the entire flash.If at least a page is locked, the command is cancelled. #define AT91C_MC_PAGEN ((unsigned int) 0x3FF << 8) // (MC) Page Number #define AT91C_MC_KEY ((unsigned int) 0xFF << 24) // (MC) Writing Protect Key // -------- MC_FSR : (MC Offset: 0x68) MC Flash Command Register -------- #define AT91C_MC_LOCKS0 ((unsigned int) 0x1 << 16) // (MC) Sector 0 Lock Status #define AT91C_MC_LOCKS1 ((unsigned int) 0x1 << 17) // (MC) Sector 1 Lock Status #define AT91C_MC_LOCKS2 ((unsigned int) 0x1 << 18) // (MC) Sector 2 Lock Status #define AT91C_MC_LOCKS3 ((unsigned int) 0x1 << 19) // (MC) Sector 3 Lock Status #define AT91C_MC_LOCKS4 ((unsigned int) 0x1 << 20) // (MC) Sector 4 Lock Status #define AT91C_MC_LOCKS5 ((unsigned int) 0x1 << 21) // (MC) Sector 5 Lock Status #define AT91C_MC_LOCKS6 ((unsigned int) 0x1 << 22) // (MC) Sector 6 Lock Status #define AT91C_MC_LOCKS7 ((unsigned int) 0x1 << 23) // (MC) Sector 7 Lock Status #define AT91C_MC_LOCKS8 ((unsigned int) 0x1 << 24) // (MC) Sector 8 Lock Status #define AT91C_MC_LOCKS9 ((unsigned int) 0x1 << 25) // (MC) Sector 9 Lock Status #define AT91C_MC_LOCKS10 ((unsigned int) 0x1 << 26) // (MC) Sector 10 Lock Status #define AT91C_MC_LOCKS11 ((unsigned int) 0x1 << 27) // (MC) Sector 11 Lock Status #define AT91C_MC_LOCKS12 ((unsigned int) 0x1 << 28) // (MC) Sector 12 Lock Status #define AT91C_MC_LOCKS13 ((unsigned int) 0x1 << 29) // (MC) Sector 13 Lock Status #define AT91C_MC_LOCKS14 ((unsigned int) 0x1 << 30) // (MC) Sector 14 Lock Status #define AT91C_MC_LOCKS15 ((unsigned int) 0x1 << 31) // (MC) Sector 15 Lock Status // ***************************************************************************** // SOFTWARE API DEFINITION FOR Control Area Network MailBox Interface // ***************************************************************************** typedef struct _AT91S_CAN_MB { AT91_REG CAN_MB_MMR; // MailBox Mode Register AT91_REG CAN_MB_MAM; // MailBox Acceptance Mask Register AT91_REG CAN_MB_MID; // MailBox ID Register AT91_REG CAN_MB_MFID; // MailBox Family ID Register AT91_REG CAN_MB_MSR; // MailBox Status Register AT91_REG CAN_MB_MDL; // MailBox Data Low Register AT91_REG CAN_MB_MDH; // MailBox Data High Register AT91_REG CAN_MB_MCR; // MailBox Control Register } AT91S_CAN_MB, *AT91PS_CAN_MB; // -------- CAN_MMR : (CAN_MB Offset: 0x0) CAN Message Mode Register -------- #define AT91C_CAN_MTIMEMARK ((unsigned int) 0xFFFF << 0) // (CAN_MB) Mailbox Timemark #define AT91C_CAN_PRIOR ((unsigned int) 0xF << 16) // (CAN_MB) Mailbox Priority #define AT91C_CAN_MOT ((unsigned int) 0x7 << 24) // (CAN_MB) Mailbox Object Type #define AT91C_CAN_MOT_DIS ((unsigned int) 0x0 << 24) // (CAN_MB) #define AT91C_CAN_MOT_RX ((unsigned int) 0x1 << 24) // (CAN_MB) #define AT91C_CAN_MOT_RXOVERWRITE ((unsigned int) 0x2 << 24) // (CAN_MB) #define AT91C_CAN_MOT_TX ((unsigned int) 0x3 << 24) // (CAN_MB) #define AT91C_CAN_MOT_CONSUMER ((unsigned int) 0x4 << 24) // (CAN_MB) #define AT91C_CAN_MOT_PRODUCER ((unsigned int) 0x5 << 24) // (CAN_MB) // -------- CAN_MAM : (CAN_MB Offset: 0x4) CAN Message Acceptance Mask Register -------- #define AT91C_CAN_MIDvB ((unsigned int) 0x3FFFF << 0) // (CAN_MB) Complementary bits for identifier in extended mode #define AT91C_CAN_MIDvA ((unsigned int) 0x7FF << 18) // (CAN_MB) Identifier for standard frame mode #define AT91C_CAN_MIDE ((unsigned int) 0x1 << 29) // (CAN_MB) Identifier Version // -------- CAN_MID : (CAN_MB Offset: 0x8) CAN Message ID Register -------- // -------- CAN_MFID : (CAN_MB Offset: 0xc) CAN Message Family ID Register -------- // -------- CAN_MSR : (CAN_MB Offset: 0x10) CAN Message Status Register -------- #define AT91C_CAN_MTIMESTAMP ((unsigned int) 0xFFFF << 0) // (CAN_MB) Timer Value #define AT91C_CAN_MDLC ((unsigned int) 0xF << 16) // (CAN_MB) Mailbox Data Length Code #define AT91C_CAN_MRTR ((unsigned int) 0x1 << 20) // (CAN_MB) Mailbox Remote Transmission Request #define AT91C_CAN_MABT ((unsigned int) 0x1 << 22) // (CAN_MB) Mailbox Message Abort #define AT91C_CAN_MRDY ((unsigned int) 0x1 << 23) // (CAN_MB) Mailbox Ready #define AT91C_CAN_MMI ((unsigned int) 0x1 << 24) // (CAN_MB) Mailbox Message Ignored // -------- CAN_MDL : (CAN_MB Offset: 0x14) CAN Message Data Low Register -------- // -------- CAN_MDH : (CAN_MB Offset: 0x18) CAN Message Data High Register -------- // -------- CAN_MCR : (CAN_MB Offset: 0x1c) CAN Message Control Register -------- #define AT91C_CAN_MACR ((unsigned int) 0x1 << 22) // (CAN_MB) Abort Request for Mailbox #define AT91C_CAN_MTCR ((unsigned int) 0x1 << 23) // (CAN_MB) Mailbox Transfer Command // ***************************************************************************** // SOFTWARE API DEFINITION FOR Control Area Network Interface // ***************************************************************************** typedef struct _AT91S_CAN { AT91_REG CAN_MR; // Mode Register AT91_REG CAN_IER; // Interrupt Enable Register AT91_REG CAN_IDR; // Interrupt Disable Register AT91_REG CAN_IMR; // Interrupt Mask Register AT91_REG CAN_SR; // Status Register AT91_REG CAN_BR; // Baudrate Register AT91_REG CAN_TIM; // Timer Register AT91_REG CAN_TIMESTP; // Time Stamp Register AT91_REG CAN_ECR; // Error Counter Register AT91_REG CAN_TCR; // Transfer Command Register AT91_REG CAN_ACR; // Abort Command Register AT91_REG Reserved0[52]; // AT91_REG CAN_VR; // Version Register AT91_REG Reserved1[64]; // AT91S_CAN_MB CAN_MB0; // CAN Mailbox 0 AT91S_CAN_MB CAN_MB1; // CAN Mailbox 1 AT91S_CAN_MB CAN_MB2; // CAN Mailbox 2 AT91S_CAN_MB CAN_MB3; // CAN Mailbox 3 AT91S_CAN_MB CAN_MB4; // CAN Mailbox 4 AT91S_CAN_MB CAN_MB5; // CAN Mailbox 5 AT91S_CAN_MB CAN_MB6; // CAN Mailbox 6 AT91S_CAN_MB CAN_MB7; // CAN Mailbox 7 AT91S_CAN_MB CAN_MB8; // CAN Mailbox 8 AT91S_CAN_MB CAN_MB9; // CAN Mailbox 9 AT91S_CAN_MB CAN_MB10; // CAN Mailbox 10 AT91S_CAN_MB CAN_MB11; // CAN Mailbox 11 AT91S_CAN_MB CAN_MB12; // CAN Mailbox 12 AT91S_CAN_MB CAN_MB13; // CAN Mailbox 13 AT91S_CAN_MB CAN_MB14; // CAN Mailbox 14 AT91S_CAN_MB CAN_MB15; // CAN Mailbox 15 } AT91S_CAN, *AT91PS_CAN; // -------- CAN_MR : (CAN Offset: 0x0) CAN Mode Register -------- #define AT91C_CAN_CANEN ((unsigned int) 0x1 << 0) // (CAN) CAN Controller Enable #define AT91C_CAN_LPM ((unsigned int) 0x1 << 1) // (CAN) Disable/Enable Low Power Mode #define AT91C_CAN_ABM ((unsigned int) 0x1 << 2) // (CAN) Disable/Enable Autobaud/Listen Mode #define AT91C_CAN_OVL ((unsigned int) 0x1 << 3) // (CAN) Disable/Enable Overload Frame #define AT91C_CAN_TEOF ((unsigned int) 0x1 << 4) // (CAN) Time Stamp messages at each end of Frame #define AT91C_CAN_TTM ((unsigned int) 0x1 << 5) // (CAN) Disable/Enable Time Trigger Mode #define AT91C_CAN_TIMFRZ ((unsigned int) 0x1 << 6) // (CAN) Enable Timer Freeze #define AT91C_CAN_DRPT ((unsigned int) 0x1 << 7) // (CAN) Disable Repeat // -------- CAN_IER : (CAN Offset: 0x4) CAN Interrupt Enable Register -------- #define AT91C_CAN_MB0 ((unsigned int) 0x1 << 0) // (CAN) Mailbox 0 Flag #define AT91C_CAN_MB1 ((unsigned int) 0x1 << 1) // (CAN) Mailbox 1 Flag #define AT91C_CAN_MB2 ((unsigned int) 0x1 << 2) // (CAN) Mailbox 2 Flag #define AT91C_CAN_MB3 ((unsigned int) 0x1 << 3) // (CAN) Mailbox 3 Flag #define AT91C_CAN_MB4 ((unsigned int) 0x1 << 4) // (CAN) Mailbox 4 Flag #define AT91C_CAN_MB5 ((unsigned int) 0x1 << 5) // (CAN) Mailbox 5 Flag #define AT91C_CAN_MB6 ((unsigned int) 0x1 << 6) // (CAN) Mailbox 6 Flag #define AT91C_CAN_MB7 ((unsigned int) 0x1 << 7) // (CAN) Mailbox 7 Flag #define AT91C_CAN_MB8 ((unsigned int) 0x1 << 8) // (CAN) Mailbox 8 Flag #define AT91C_CAN_MB9 ((unsigned int) 0x1 << 9) // (CAN) Mailbox 9 Flag #define AT91C_CAN_MB10 ((unsigned int) 0x1 << 10) // (CAN) Mailbox 10 Flag #define AT91C_CAN_MB11 ((unsigned int) 0x1 << 11) // (CAN) Mailbox 11 Flag #define AT91C_CAN_MB12 ((unsigned int) 0x1 << 12) // (CAN) Mailbox 12 Flag #define AT91C_CAN_MB13 ((unsigned int) 0x1 << 13) // (CAN) Mailbox 13 Flag #define AT91C_CAN_MB14 ((unsigned int) 0x1 << 14) // (CAN) Mailbox 14 Flag #define AT91C_CAN_MB15 ((unsigned int) 0x1 << 15) // (CAN) Mailbox 15 Flag #define AT91C_CAN_ERRA ((unsigned int) 0x1 << 16) // (CAN) Error Active Mode Flag #define AT91C_CAN_WARN ((unsigned int) 0x1 << 17) // (CAN) Warning Limit Flag #define AT91C_CAN_ERRP ((unsigned int) 0x1 << 18) // (CAN) Error Passive Mode Flag #define AT91C_CAN_BOFF ((unsigned int) 0x1 << 19) // (CAN) Bus Off Mode Flag #define AT91C_CAN_SLEEP ((unsigned int) 0x1 << 20) // (CAN) Sleep Flag #define AT91C_CAN_WAKEUP ((unsigned int) 0x1 << 21) // (CAN) Wakeup Flag #define AT91C_CAN_TOVF ((unsigned int) 0x1 << 22) // (CAN) Timer Overflow Flag #define AT91C_CAN_TSTP ((unsigned int) 0x1 << 23) // (CAN) Timestamp Flag #define AT91C_CAN_CERR ((unsigned int) 0x1 << 24) // (CAN) CRC Error #define AT91C_CAN_SERR ((unsigned int) 0x1 << 25) // (CAN) Stuffing Error #define AT91C_CAN_AERR ((unsigned int) 0x1 << 26) // (CAN) Acknowledgment Error #define AT91C_CAN_FERR ((unsigned int) 0x1 << 27) // (CAN) Form Error #define AT91C_CAN_BERR ((unsigned int) 0x1 << 28) // (CAN) Bit Error // -------- CAN_IDR : (CAN Offset: 0x8) CAN Interrupt Disable Register -------- // -------- CAN_IMR : (CAN Offset: 0xc) CAN Interrupt Mask Register -------- // -------- CAN_SR : (CAN Offset: 0x10) CAN Status Register -------- #define AT91C_CAN_RBSY ((unsigned int) 0x1 << 29) // (CAN) Receiver Busy #define AT91C_CAN_TBSY ((unsigned int) 0x1 << 30) // (CAN) Transmitter Busy #define AT91C_CAN_OVLY ((unsigned int) 0x1 << 31) // (CAN) Overload Busy // -------- CAN_BR : (CAN Offset: 0x14) CAN Baudrate Register -------- #define AT91C_CAN_PHASE2 ((unsigned int) 0x7 << 0) // (CAN) Phase 2 segment #define AT91C_CAN_PHASE1 ((unsigned int) 0x7 << 4) // (CAN) Phase 1 segment #define AT91C_CAN_PROPAG ((unsigned int) 0x7 << 8) // (CAN) Programmation time segment #define AT91C_CAN_SYNC ((unsigned int) 0x3 << 12) // (CAN) Re-synchronization jump width segment #define AT91C_CAN_BRP ((unsigned int) 0x7F << 16) // (CAN) Baudrate Prescaler #define AT91C_CAN_SMP ((unsigned int) 0x1 << 24) // (CAN) Sampling mode // -------- CAN_TIM : (CAN Offset: 0x18) CAN Timer Register -------- #define AT91C_CAN_TIMER ((unsigned int) 0xFFFF << 0) // (CAN) Timer field // -------- CAN_TIMESTP : (CAN Offset: 0x1c) CAN Timestamp Register -------- // -------- CAN_ECR : (CAN Offset: 0x20) CAN Error Counter Register -------- #define AT91C_CAN_REC ((unsigned int) 0xFF << 0) // (CAN) Receive Error Counter #define AT91C_CAN_TEC ((unsigned int) 0xFF << 16) // (CAN) Transmit Error Counter // -------- CAN_TCR : (CAN Offset: 0x24) CAN Transfer Command Register -------- #define AT91C_CAN_TIMRST ((unsigned int) 0x1 << 31) // (CAN) Timer Reset Field // -------- CAN_ACR : (CAN Offset: 0x28) CAN Abort Command Register -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR Timer Counter Channel Interface // ***************************************************************************** typedef struct _AT91S_TC { AT91_REG TC_CCR; // Channel Control Register AT91_REG TC_CMR; // Channel Mode Register (Capture Mode / Waveform Mode) AT91_REG Reserved0[2]; // AT91_REG TC_CV; // Counter Value AT91_REG TC_RA; // Register A AT91_REG TC_RB; // Register B AT91_REG TC_RC; // Register C AT91_REG TC_SR; // Status Register AT91_REG TC_IER; // Interrupt Enable Register AT91_REG TC_IDR; // Interrupt Disable Register AT91_REG TC_IMR; // Interrupt Mask Register } AT91S_TC, *AT91PS_TC; // -------- TC_CCR : (TC Offset: 0x0) TC Channel Control Register -------- #define AT91C_TC_CLKEN ((unsigned int) 0x1 << 0) // (TC) Counter Clock Enable Command #define AT91C_TC_CLKDIS ((unsigned int) 0x1 << 1) // (TC) Counter Clock Disable Command #define AT91C_TC_SWTRG ((unsigned int) 0x1 << 2) // (TC) Software Trigger Command // -------- TC_CMR : (TC Offset: 0x4) TC Channel Mode Register: Capture Mode / Waveform Mode -------- #define AT91C_TC_CLKS ((unsigned int) 0x7 << 0) // (TC) Clock Selection #define AT91C_TC_CLKS_TIMER_DIV1_CLOCK ((unsigned int) 0x0) // (TC) Clock selected: TIMER_DIV1_CLOCK #define AT91C_TC_CLKS_TIMER_DIV2_CLOCK ((unsigned int) 0x1) // (TC) Clock selected: TIMER_DIV2_CLOCK #define AT91C_TC_CLKS_TIMER_DIV3_CLOCK ((unsigned int) 0x2) // (TC) Clock selected: TIMER_DIV3_CLOCK #define AT91C_TC_CLKS_TIMER_DIV4_CLOCK ((unsigned int) 0x3) // (TC) Clock selected: TIMER_DIV4_CLOCK #define AT91C_TC_CLKS_TIMER_DIV5_CLOCK ((unsigned int) 0x4) // (TC) Clock selected: TIMER_DIV5_CLOCK #define AT91C_TC_CLKS_XC0 ((unsigned int) 0x5) // (TC) Clock selected: XC0 #define AT91C_TC_CLKS_XC1 ((unsigned int) 0x6) // (TC) Clock selected: XC1 #define AT91C_TC_CLKS_XC2 ((unsigned int) 0x7) // (TC) Clock selected: XC2 #define AT91C_TC_CLKI ((unsigned int) 0x1 << 3) // (TC) Clock Invert #define AT91C_TC_BURST ((unsigned int) 0x3 << 4) // (TC) Burst Signal Selection #define AT91C_TC_BURST_NONE ((unsigned int) 0x0 << 4) // (TC) The clock is not gated by an external signal #define AT91C_TC_BURST_XC0 ((unsigned int) 0x1 << 4) // (TC) XC0 is ANDed with the selected clock #define AT91C_TC_BURST_XC1 ((unsigned int) 0x2 << 4) // (TC) XC1 is ANDed with the selected clock #define AT91C_TC_BURST_XC2 ((unsigned int) 0x3 << 4) // (TC) XC2 is ANDed with the selected clock #define AT91C_TC_CPCSTOP ((unsigned int) 0x1 << 6) // (TC) Counter Clock Stopped with RC Compare #define AT91C_TC_LDBSTOP ((unsigned int) 0x1 << 6) // (TC) Counter Clock Stopped with RB Loading #define AT91C_TC_LDBDIS ((unsigned int) 0x1 << 7) // (TC) Counter Clock Disabled with RB Loading #define AT91C_TC_CPCDIS ((unsigned int) 0x1 << 7) // (TC) Counter Clock Disable with RC Compare #define AT91C_TC_ETRGEDG ((unsigned int) 0x3 << 8) // (TC) External Trigger Edge Selection #define AT91C_TC_ETRGEDG_NONE ((unsigned int) 0x0 << 8) // (TC) Edge: None #define AT91C_TC_ETRGEDG_RISING ((unsigned int) 0x1 << 8) // (TC) Edge: rising edge #define AT91C_TC_ETRGEDG_FALLING ((unsigned int) 0x2 << 8) // (TC) Edge: falling edge #define AT91C_TC_ETRGEDG_BOTH ((unsigned int) 0x3 << 8) // (TC) Edge: each edge #define AT91C_TC_EEVTEDG ((unsigned int) 0x3 << 8) // (TC) External Event Edge Selection #define AT91C_TC_EEVTEDG_NONE ((unsigned int) 0x0 << 8) // (TC) Edge: None #define AT91C_TC_EEVTEDG_RISING ((unsigned int) 0x1 << 8) // (TC) Edge: rising edge #define AT91C_TC_EEVTEDG_FALLING ((unsigned int) 0x2 << 8) // (TC) Edge: falling edge #define AT91C_TC_EEVTEDG_BOTH ((unsigned int) 0x3 << 8) // (TC) Edge: each edge #define AT91C_TC_ABETRG ((unsigned int) 0x1 << 10) // (TC) TIOA or TIOB External Trigger Selection #define AT91C_TC_EEVT ((unsigned int) 0x3 << 10) // (TC) External Event Selection #define AT91C_TC_EEVT_TIOB ((unsigned int) 0x0 << 10) // (TC) Signal selected as external event: TIOB TIOB direction: input #define AT91C_TC_EEVT_XC0 ((unsigned int) 0x1 << 10) // (TC) Signal selected as external event: XC0 TIOB direction: output #define AT91C_TC_EEVT_XC1 ((unsigned int) 0x2 << 10) // (TC) Signal selected as external event: XC1 TIOB direction: output #define AT91C_TC_EEVT_XC2 ((unsigned int) 0x3 << 10) // (TC) Signal selected as external event: XC2 TIOB direction: output #define AT91C_TC_ENETRG ((unsigned int) 0x1 << 12) // (TC) External Event Trigger enable #define AT91C_TC_WAVESEL ((unsigned int) 0x3 << 13) // (TC) Waveform Selection #define AT91C_TC_WAVESEL_UP ((unsigned int) 0x0 << 13) // (TC) UP mode without atomatic trigger on RC Compare #define AT91C_TC_WAVESEL_UPDOWN ((unsigned int) 0x1 << 13) // (TC) UPDOWN mode without automatic trigger on RC Compare #define AT91C_TC_WAVESEL_UP_AUTO ((unsigned int) 0x2 << 13) // (TC) UP mode with automatic trigger on RC Compare #define AT91C_TC_WAVESEL_UPDOWN_AUTO ((unsigned int) 0x3 << 13) // (TC) UPDOWN mode with automatic trigger on RC Compare #define AT91C_TC_CPCTRG ((unsigned int) 0x1 << 14) // (TC) RC Compare Trigger Enable #define AT91C_TC_WAVE ((unsigned int) 0x1 << 15) // (TC) #define AT91C_TC_LDRA ((unsigned int) 0x3 << 16) // (TC) RA Loading Selection #define AT91C_TC_LDRA_NONE ((unsigned int) 0x0 << 16) // (TC) Edge: None #define AT91C_TC_LDRA_RISING ((unsigned int) 0x1 << 16) // (TC) Edge: rising edge of TIOA #define AT91C_TC_LDRA_FALLING ((unsigned int) 0x2 << 16) // (TC) Edge: falling edge of TIOA #define AT91C_TC_LDRA_BOTH ((unsigned int) 0x3 << 16) // (TC) Edge: each edge of TIOA #define AT91C_TC_ACPA ((unsigned int) 0x3 << 16) // (TC) RA Compare Effect on TIOA #define AT91C_TC_ACPA_NONE ((unsigned int) 0x0 << 16) // (TC) Effect: none #define AT91C_TC_ACPA_SET ((unsigned int) 0x1 << 16) // (TC) Effect: set #define AT91C_TC_ACPA_CLEAR ((unsigned int) 0x2 << 16) // (TC) Effect: clear #define AT91C_TC_ACPA_TOGGLE ((unsigned int) 0x3 << 16) // (TC) Effect: toggle #define AT91C_TC_LDRB ((unsigned int) 0x3 << 18) // (TC) RB Loading Selection #define AT91C_TC_LDRB_NONE ((unsigned int) 0x0 << 18) // (TC) Edge: None #define AT91C_TC_LDRB_RISING ((unsigned int) 0x1 << 18) // (TC) Edge: rising edge of TIOA #define AT91C_TC_LDRB_FALLING ((unsigned int) 0x2 << 18) // (TC) Edge: falling edge of TIOA #define AT91C_TC_LDRB_BOTH ((unsigned int) 0x3 << 18) // (TC) Edge: each edge of TIOA #define AT91C_TC_ACPC ((unsigned int) 0x3 << 18) // (TC) RC Compare Effect on TIOA #define AT91C_TC_ACPC_NONE ((unsigned int) 0x0 << 18) // (TC) Effect: none #define AT91C_TC_ACPC_SET ((unsigned int) 0x1 << 18) // (TC) Effect: set #define AT91C_TC_ACPC_CLEAR ((unsigned int) 0x2 << 18) // (TC) Effect: clear #define AT91C_TC_ACPC_TOGGLE ((unsigned int) 0x3 << 18) // (TC) Effect: toggle #define AT91C_TC_AEEVT ((unsigned int) 0x3 << 20) // (TC) External Event Effect on TIOA #define AT91C_TC_AEEVT_NONE ((unsigned int) 0x0 << 20) // (TC) Effect: none #define AT91C_TC_AEEVT_SET ((unsigned int) 0x1 << 20) // (TC) Effect: set #define AT91C_TC_AEEVT_CLEAR ((unsigned int) 0x2 << 20) // (TC) Effect: clear #define AT91C_TC_AEEVT_TOGGLE ((unsigned int) 0x3 << 20) // (TC) Effect: toggle #define AT91C_TC_ASWTRG ((unsigned int) 0x3 << 22) // (TC) Software Trigger Effect on TIOA #define AT91C_TC_ASWTRG_NONE ((unsigned int) 0x0 << 22) // (TC) Effect: none #define AT91C_TC_ASWTRG_SET ((unsigned int) 0x1 << 22) // (TC) Effect: set #define AT91C_TC_ASWTRG_CLEAR ((unsigned int) 0x2 << 22) // (TC) Effect: clear #define AT91C_TC_ASWTRG_TOGGLE ((unsigned int) 0x3 << 22) // (TC) Effect: toggle #define AT91C_TC_BCPB ((unsigned int) 0x3 << 24) // (TC) RB Compare Effect on TIOB #define AT91C_TC_BCPB_NONE ((unsigned int) 0x0 << 24) // (TC) Effect: none #define AT91C_TC_BCPB_SET ((unsigned int) 0x1 << 24) // (TC) Effect: set #define AT91C_TC_BCPB_CLEAR ((unsigned int) 0x2 << 24) // (TC) Effect: clear #define AT91C_TC_BCPB_TOGGLE ((unsigned int) 0x3 << 24) // (TC) Effect: toggle #define AT91C_TC_BCPC ((unsigned int) 0x3 << 26) // (TC) RC Compare Effect on TIOB #define AT91C_TC_BCPC_NONE ((unsigned int) 0x0 << 26) // (TC) Effect: none #define AT91C_TC_BCPC_SET ((unsigned int) 0x1 << 26) // (TC) Effect: set #define AT91C_TC_BCPC_CLEAR ((unsigned int) 0x2 << 26) // (TC) Effect: clear #define AT91C_TC_BCPC_TOGGLE ((unsigned int) 0x3 << 26) // (TC) Effect: toggle #define AT91C_TC_BEEVT ((unsigned int) 0x3 << 28) // (TC) External Event Effect on TIOB #define AT91C_TC_BEEVT_NONE ((unsigned int) 0x0 << 28) // (TC) Effect: none #define AT91C_TC_BEEVT_SET ((unsigned int) 0x1 << 28) // (TC) Effect: set #define AT91C_TC_BEEVT_CLEAR ((unsigned int) 0x2 << 28) // (TC) Effect: clear #define AT91C_TC_BEEVT_TOGGLE ((unsigned int) 0x3 << 28) // (TC) Effect: toggle #define AT91C_TC_BSWTRG ((unsigned int) 0x3 << 30) // (TC) Software Trigger Effect on TIOB #define AT91C_TC_BSWTRG_NONE ((unsigned int) 0x0 << 30) // (TC) Effect: none #define AT91C_TC_BSWTRG_SET ((unsigned int) 0x1 << 30) // (TC) Effect: set #define AT91C_TC_BSWTRG_CLEAR ((unsigned int) 0x2 << 30) // (TC) Effect: clear #define AT91C_TC_BSWTRG_TOGGLE ((unsigned int) 0x3 << 30) // (TC) Effect: toggle // -------- TC_SR : (TC Offset: 0x20) TC Channel Status Register -------- #define AT91C_TC_COVFS ((unsigned int) 0x1 << 0) // (TC) Counter Overflow #define AT91C_TC_LOVRS ((unsigned int) 0x1 << 1) // (TC) Load Overrun #define AT91C_TC_CPAS ((unsigned int) 0x1 << 2) // (TC) RA Compare #define AT91C_TC_CPBS ((unsigned int) 0x1 << 3) // (TC) RB Compare #define AT91C_TC_CPCS ((unsigned int) 0x1 << 4) // (TC) RC Compare #define AT91C_TC_LDRAS ((unsigned int) 0x1 << 5) // (TC) RA Loading #define AT91C_TC_LDRBS ((unsigned int) 0x1 << 6) // (TC) RB Loading #define AT91C_TC_ETRGS ((unsigned int) 0x1 << 7) // (TC) External Trigger #define AT91C_TC_CLKSTA ((unsigned int) 0x1 << 16) // (TC) Clock Enabling #define AT91C_TC_MTIOA ((unsigned int) 0x1 << 17) // (TC) TIOA Mirror #define AT91C_TC_MTIOB ((unsigned int) 0x1 << 18) // (TC) TIOA Mirror // -------- TC_IER : (TC Offset: 0x24) TC Channel Interrupt Enable Register -------- // -------- TC_IDR : (TC Offset: 0x28) TC Channel Interrupt Disable Register -------- // -------- TC_IMR : (TC Offset: 0x2c) TC Channel Interrupt Mask Register -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR Timer Counter Interface // ***************************************************************************** typedef struct _AT91S_TCB { AT91S_TC TCB_TC0; // TC Channel 0 AT91_REG Reserved0[4]; // AT91S_TC TCB_TC1; // TC Channel 1 AT91_REG Reserved1[4]; // AT91S_TC TCB_TC2; // TC Channel 2 AT91_REG Reserved2[4]; // AT91_REG TCB_BCR; // TC Block Control Register AT91_REG TCB_BMR; // TC Block Mode Register } AT91S_TCB, *AT91PS_TCB; // -------- TCB_BCR : (TCB Offset: 0xc0) TC Block Control Register -------- #define AT91C_TCB_SYNC ((unsigned int) 0x1 << 0) // (TCB) Synchro Command // -------- TCB_BMR : (TCB Offset: 0xc4) TC Block Mode Register -------- #define AT91C_TCB_TC0XC0S ((unsigned int) 0x3 << 0) // (TCB) External Clock Signal 0 Selection #define AT91C_TCB_TC0XC0S_TCLK0 ((unsigned int) 0x0) // (TCB) TCLK0 connected to XC0 #define AT91C_TCB_TC0XC0S_NONE ((unsigned int) 0x1) // (TCB) None signal connected to XC0 #define AT91C_TCB_TC0XC0S_TIOA1 ((unsigned int) 0x2) // (TCB) TIOA1 connected to XC0 #define AT91C_TCB_TC0XC0S_TIOA2 ((unsigned int) 0x3) // (TCB) TIOA2 connected to XC0 #define AT91C_TCB_TC1XC1S ((unsigned int) 0x3 << 2) // (TCB) External Clock Signal 1 Selection #define AT91C_TCB_TC1XC1S_TCLK1 ((unsigned int) 0x0 << 2) // (TCB) TCLK1 connected to XC1 #define AT91C_TCB_TC1XC1S_NONE ((unsigned int) 0x1 << 2) // (TCB) None signal connected to XC1 #define AT91C_TCB_TC1XC1S_TIOA0 ((unsigned int) 0x2 << 2) // (TCB) TIOA0 connected to XC1 #define AT91C_TCB_TC1XC1S_TIOA2 ((unsigned int) 0x3 << 2) // (TCB) TIOA2 connected to XC1 #define AT91C_TCB_TC2XC2S ((unsigned int) 0x3 << 4) // (TCB) External Clock Signal 2 Selection #define AT91C_TCB_TC2XC2S_TCLK2 ((unsigned int) 0x0 << 4) // (TCB) TCLK2 connected to XC2 #define AT91C_TCB_TC2XC2S_NONE ((unsigned int) 0x1 << 4) // (TCB) None signal connected to XC2 #define AT91C_TCB_TC2XC2S_TIOA0 ((unsigned int) 0x2 << 4) // (TCB) TIOA0 connected to XC2 #define AT91C_TCB_TC2XC2S_TIOA1 ((unsigned int) 0x3 << 4) // (TCB) TIOA2 connected to XC2 // ***************************************************************************** // SOFTWARE API DEFINITION FOR Multimedia Card Interface // ***************************************************************************** typedef struct _AT91S_MCI { AT91_REG MCI_CR; // MCI Control Register AT91_REG MCI_MR; // MCI Mode Register AT91_REG MCI_DTOR; // MCI Data Timeout Register AT91_REG MCI_SDCR; // MCI SD Card Register AT91_REG MCI_ARGR; // MCI Argument Register AT91_REG MCI_CMDR; // MCI Command Register AT91_REG Reserved0[2]; // AT91_REG MCI_RSPR[4]; // MCI Response Register AT91_REG MCI_RDR; // MCI Receive Data Register AT91_REG MCI_TDR; // MCI Transmit Data Register AT91_REG Reserved1[2]; // AT91_REG MCI_SR; // MCI Status Register AT91_REG MCI_IER; // MCI Interrupt Enable Register AT91_REG MCI_IDR; // MCI Interrupt Disable Register AT91_REG MCI_IMR; // MCI Interrupt Mask Register AT91_REG Reserved2[44]; // AT91_REG MCI_RPR; // Receive Pointer Register AT91_REG MCI_RCR; // Receive Counter Register AT91_REG MCI_TPR; // Transmit Pointer Register AT91_REG MCI_TCR; // Transmit Counter Register AT91_REG MCI_RNPR; // Receive Next Pointer Register AT91_REG MCI_RNCR; // Receive Next Counter Register AT91_REG MCI_TNPR; // Transmit Next Pointer Register AT91_REG MCI_TNCR; // Transmit Next Counter Register AT91_REG MCI_PTCR; // PDC Transfer Control Register AT91_REG MCI_PTSR; // PDC Transfer Status Register } AT91S_MCI, *AT91PS_MCI; // -------- MCI_CR : (MCI Offset: 0x0) MCI Control Register -------- #define AT91C_MCI_MCIEN ((unsigned int) 0x1 << 0) // (MCI) Multimedia Interface Enable #define AT91C_MCI_MCIDIS ((unsigned int) 0x1 << 1) // (MCI) Multimedia Interface Disable #define AT91C_MCI_PWSEN ((unsigned int) 0x1 << 2) // (MCI) Power Save Mode Enable #define AT91C_MCI_PWSDIS ((unsigned int) 0x1 << 3) // (MCI) Power Save Mode Disable #define AT91C_MCI_SWRST ((unsigned int) 0x1 << 7) // (MCI) MCI Software reset // -------- MCI_MR : (MCI Offset: 0x4) MCI Mode Register -------- #define AT91C_MCI_CLKDIV ((unsigned int) 0xFF << 0) // (MCI) Clock Divider #define AT91C_MCI_PWSDIV ((unsigned int) 0x7 << 8) // (MCI) Power Saving Divider #define AT91C_MCI_PDCPADV ((unsigned int) 0x1 << 14) // (MCI) PDC Padding Value #define AT91C_MCI_PDCMODE ((unsigned int) 0x1 << 15) // (MCI) PDC Oriented Mode #define AT91C_MCI_BLKLEN ((unsigned int) 0xFFF << 18) // (MCI) Data Block Length // -------- MCI_DTOR : (MCI Offset: 0x8) MCI Data Timeout Register -------- #define AT91C_MCI_DTOCYC ((unsigned int) 0xF << 0) // (MCI) Data Timeout Cycle Number #define AT91C_MCI_DTOMUL ((unsigned int) 0x7 << 4) // (MCI) Data Timeout Multiplier #define AT91C_MCI_DTOMUL_1 ((unsigned int) 0x0 << 4) // (MCI) DTOCYC x 1 #define AT91C_MCI_DTOMUL_16 ((unsigned int) 0x1 << 4) // (MCI) DTOCYC x 16 #define AT91C_MCI_DTOMUL_128 ((unsigned int) 0x2 << 4) // (MCI) DTOCYC x 128 #define AT91C_MCI_DTOMUL_256 ((unsigned int) 0x3 << 4) // (MCI) DTOCYC x 256 #define AT91C_MCI_DTOMUL_1024 ((unsigned int) 0x4 << 4) // (MCI) DTOCYC x 1024 #define AT91C_MCI_DTOMUL_4096 ((unsigned int) 0x5 << 4) // (MCI) DTOCYC x 4096 #define AT91C_MCI_DTOMUL_65536 ((unsigned int) 0x6 << 4) // (MCI) DTOCYC x 65536 #define AT91C_MCI_DTOMUL_1048576 ((unsigned int) 0x7 << 4) // (MCI) DTOCYC x 1048576 // -------- MCI_SDCR : (MCI Offset: 0xc) MCI SD Card Register -------- #define AT91C_MCI_SCDSEL ((unsigned int) 0xF << 0) // (MCI) SD Card Selector #define AT91C_MCI_SCDBUS ((unsigned int) 0x1 << 7) // (MCI) SD Card Bus Width // -------- MCI_CMDR : (MCI Offset: 0x14) MCI Command Register -------- #define AT91C_MCI_CMDNB ((unsigned int) 0x3F << 0) // (MCI) Command Number #define AT91C_MCI_RSPTYP ((unsigned int) 0x3 << 6) // (MCI) Response Type #define AT91C_MCI_RSPTYP_NO ((unsigned int) 0x0 << 6) // (MCI) No response #define AT91C_MCI_RSPTYP_48 ((unsigned int) 0x1 << 6) // (MCI) 48-bit response #define AT91C_MCI_RSPTYP_136 ((unsigned int) 0x2 << 6) // (MCI) 136-bit response #define AT91C_MCI_SPCMD ((unsigned int) 0x7 << 8) // (MCI) Special CMD #define AT91C_MCI_SPCMD_NONE ((unsigned int) 0x0 << 8) // (MCI) Not a special CMD #define AT91C_MCI_SPCMD_INIT ((unsigned int) 0x1 << 8) // (MCI) Initialization CMD #define AT91C_MCI_SPCMD_SYNC ((unsigned int) 0x2 << 8) // (MCI) Synchronized CMD #define AT91C_MCI_SPCMD_IT_CMD ((unsigned int) 0x4 << 8) // (MCI) Interrupt command #define AT91C_MCI_SPCMD_IT_REP ((unsigned int) 0x5 << 8) // (MCI) Interrupt response #define AT91C_MCI_OPDCMD ((unsigned int) 0x1 << 11) // (MCI) Open Drain Command #define AT91C_MCI_MAXLAT ((unsigned int) 0x1 << 12) // (MCI) Maximum Latency for Command to respond #define AT91C_MCI_TRCMD ((unsigned int) 0x3 << 16) // (MCI) Transfer CMD #define AT91C_MCI_TRCMD_NO ((unsigned int) 0x0 << 16) // (MCI) No transfer #define AT91C_MCI_TRCMD_START ((unsigned int) 0x1 << 16) // (MCI) Start transfer #define AT91C_MCI_TRCMD_STOP ((unsigned int) 0x2 << 16) // (MCI) Stop transfer #define AT91C_MCI_TRDIR ((unsigned int) 0x1 << 18) // (MCI) Transfer Direction #define AT91C_MCI_TRTYP ((unsigned int) 0x3 << 19) // (MCI) Transfer Type #define AT91C_MCI_TRTYP_BLOCK ((unsigned int) 0x0 << 19) // (MCI) Block Transfer type #define AT91C_MCI_TRTYP_MULTIPLE ((unsigned int) 0x1 << 19) // (MCI) Multiple Block transfer type #define AT91C_MCI_TRTYP_STREAM ((unsigned int) 0x2 << 19) // (MCI) Stream transfer type // -------- MCI_SR : (MCI Offset: 0x40) MCI Status Register -------- #define AT91C_MCI_CMDRDY ((unsigned int) 0x1 << 0) // (MCI) Command Ready flag #define AT91C_MCI_RXRDY ((unsigned int) 0x1 << 1) // (MCI) RX Ready flag #define AT91C_MCI_TXRDY ((unsigned int) 0x1 << 2) // (MCI) TX Ready flag #define AT91C_MCI_BLKE ((unsigned int) 0x1 << 3) // (MCI) Data Block Transfer Ended flag #define AT91C_MCI_DTIP ((unsigned int) 0x1 << 4) // (MCI) Data Transfer in Progress flag #define AT91C_MCI_NOTBUSY ((unsigned int) 0x1 << 5) // (MCI) Data Line Not Busy flag #define AT91C_MCI_ENDRX ((unsigned int) 0x1 << 6) // (MCI) End of RX Buffer flag #define AT91C_MCI_ENDTX ((unsigned int) 0x1 << 7) // (MCI) End of TX Buffer flag #define AT91C_MCI_RXBUFF ((unsigned int) 0x1 << 14) // (MCI) RX Buffer Full flag #define AT91C_MCI_TXBUFE ((unsigned int) 0x1 << 15) // (MCI) TX Buffer Empty flag #define AT91C_MCI_RINDE ((unsigned int) 0x1 << 16) // (MCI) Response Index Error flag #define AT91C_MCI_RDIRE ((unsigned int) 0x1 << 17) // (MCI) Response Direction Error flag #define AT91C_MCI_RCRCE ((unsigned int) 0x1 << 18) // (MCI) Response CRC Error flag #define AT91C_MCI_RENDE ((unsigned int) 0x1 << 19) // (MCI) Response End Bit Error flag #define AT91C_MCI_RTOE ((unsigned int) 0x1 << 20) // (MCI) Response Time-out Error flag #define AT91C_MCI_DCRCE ((unsigned int) 0x1 << 21) // (MCI) data CRC Error flag #define AT91C_MCI_DTOE ((unsigned int) 0x1 << 22) // (MCI) Data timeout Error flag #define AT91C_MCI_OVRE ((unsigned int) 0x1 << 30) // (MCI) Overrun flag #define AT91C_MCI_UNRE ((unsigned int) 0x1 << 31) // (MCI) Underrun flag // -------- MCI_IER : (MCI Offset: 0x44) MCI Interrupt Enable Register -------- // -------- MCI_IDR : (MCI Offset: 0x48) MCI Interrupt Disable Register -------- // -------- MCI_IMR : (MCI Offset: 0x4c) MCI Interrupt Mask Register -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR USB Device Interface // ***************************************************************************** typedef struct _AT91S_UDP { AT91_REG UDP_NUM; // Frame Number Register AT91_REG UDP_GLBSTATE; // Global State Register AT91_REG UDP_FADDR; // Function Address Register AT91_REG Reserved0[1]; // AT91_REG UDP_IER; // Interrupt Enable Register AT91_REG UDP_IDR; // Interrupt Disable Register AT91_REG UDP_IMR; // Interrupt Mask Register AT91_REG UDP_ISR; // Interrupt Status Register AT91_REG UDP_ICR; // Interrupt Clear Register AT91_REG Reserved1[1]; // AT91_REG UDP_RSTEP; // Reset Endpoint Register AT91_REG Reserved2[1]; // AT91_REG UDP_CSR[6]; // Endpoint Control and Status Register AT91_REG Reserved3[2]; // AT91_REG UDP_FDR[6]; // Endpoint FIFO Data Register AT91_REG Reserved4[3]; // AT91_REG UDP_TXVC; // Transceiver Control Register } AT91S_UDP, *AT91PS_UDP; // -------- UDP_FRM_NUM : (UDP Offset: 0x0) USB Frame Number Register -------- #define AT91C_UDP_FRM_NUM ((unsigned int) 0x7FF << 0) // (UDP) Frame Number as Defined in the Packet Field Formats #define AT91C_UDP_FRM_ERR ((unsigned int) 0x1 << 16) // (UDP) Frame Error #define AT91C_UDP_FRM_OK ((unsigned int) 0x1 << 17) // (UDP) Frame OK // -------- UDP_GLB_STATE : (UDP Offset: 0x4) USB Global State Register -------- #define AT91C_UDP_FADDEN ((unsigned int) 0x1 << 0) // (UDP) Function Address Enable #define AT91C_UDP_CONFG ((unsigned int) 0x1 << 1) // (UDP) Configured #define AT91C_UDP_ESR ((unsigned int) 0x1 << 2) // (UDP) Enable Send Resume #define AT91C_UDP_RSMINPR ((unsigned int) 0x1 << 3) // (UDP) A Resume Has Been Sent to the Host #define AT91C_UDP_RMWUPE ((unsigned int) 0x1 << 4) // (UDP) Remote Wake Up Enable // -------- UDP_FADDR : (UDP Offset: 0x8) USB Function Address Register -------- #define AT91C_UDP_FADD ((unsigned int) 0xFF << 0) // (UDP) Function Address Value #define AT91C_UDP_FEN ((unsigned int) 0x1 << 8) // (UDP) Function Enable // -------- UDP_IER : (UDP Offset: 0x10) USB Interrupt Enable Register -------- #define AT91C_UDP_EPINT0 ((unsigned int) 0x1 << 0) // (UDP) Endpoint 0 Interrupt #define AT91C_UDP_EPINT1 ((unsigned int) 0x1 << 1) // (UDP) Endpoint 0 Interrupt #define AT91C_UDP_EPINT2 ((unsigned int) 0x1 << 2) // (UDP) Endpoint 2 Interrupt #define AT91C_UDP_EPINT3 ((unsigned int) 0x1 << 3) // (UDP) Endpoint 3 Interrupt #define AT91C_UDP_EPINT4 ((unsigned int) 0x1 << 4) // (UDP) Endpoint 4 Interrupt #define AT91C_UDP_EPINT5 ((unsigned int) 0x1 << 5) // (UDP) Endpoint 5 Interrupt #define AT91C_UDP_RXSUSP ((unsigned int) 0x1 << 8) // (UDP) USB Suspend Interrupt #define AT91C_UDP_RXRSM ((unsigned int) 0x1 << 9) // (UDP) USB Resume Interrupt #define AT91C_UDP_EXTRSM ((unsigned int) 0x1 << 10) // (UDP) USB External Resume Interrupt #define AT91C_UDP_SOFINT ((unsigned int) 0x1 << 11) // (UDP) USB Start Of frame Interrupt #define AT91C_UDP_WAKEUP ((unsigned int) 0x1 << 13) // (UDP) USB Resume Interrupt // -------- UDP_IDR : (UDP Offset: 0x14) USB Interrupt Disable Register -------- // -------- UDP_IMR : (UDP Offset: 0x18) USB Interrupt Mask Register -------- // -------- UDP_ISR : (UDP Offset: 0x1c) USB Interrupt Status Register -------- #define AT91C_UDP_ENDBUSRES ((unsigned int) 0x1 << 12) // (UDP) USB End Of Bus Reset Interrupt // -------- UDP_ICR : (UDP Offset: 0x20) USB Interrupt Clear Register -------- // -------- UDP_RST_EP : (UDP Offset: 0x28) USB Reset Endpoint Register -------- #define AT91C_UDP_EP0 ((unsigned int) 0x1 << 0) // (UDP) Reset Endpoint 0 #define AT91C_UDP_EP1 ((unsigned int) 0x1 << 1) // (UDP) Reset Endpoint 1 #define AT91C_UDP_EP2 ((unsigned int) 0x1 << 2) // (UDP) Reset Endpoint 2 #define AT91C_UDP_EP3 ((unsigned int) 0x1 << 3) // (UDP) Reset Endpoint 3 #define AT91C_UDP_EP4 ((unsigned int) 0x1 << 4) // (UDP) Reset Endpoint 4 #define AT91C_UDP_EP5 ((unsigned int) 0x1 << 5) // (UDP) Reset Endpoint 5 // -------- UDP_CSR : (UDP Offset: 0x30) USB Endpoint Control and Status Register -------- #define AT91C_UDP_TXCOMP ((unsigned int) 0x1 << 0) // (UDP) Generates an IN packet with data previously written in the DPR #define AT91C_UDP_RX_DATA_BK0 ((unsigned int) 0x1 << 1) // (UDP) Receive Data Bank 0 #define AT91C_UDP_RXSETUP ((unsigned int) 0x1 << 2) // (UDP) Sends STALL to the Host (Control endpoints) #define AT91C_UDP_ISOERROR ((unsigned int) 0x1 << 3) // (UDP) Isochronous error (Isochronous endpoints) #define AT91C_UDP_TXPKTRDY ((unsigned int) 0x1 << 4) // (UDP) Transmit Packet Ready #define AT91C_UDP_FORCESTALL ((unsigned int) 0x1 << 5) // (UDP) Force Stall (used by Control, Bulk and Isochronous endpoints). #define AT91C_UDP_RX_DATA_BK1 ((unsigned int) 0x1 << 6) // (UDP) Receive Data Bank 1 (only used by endpoints with ping-pong attributes). #define AT91C_UDP_DIR ((unsigned int) 0x1 << 7) // (UDP) Transfer Direction #define AT91C_UDP_EPTYPE ((unsigned int) 0x7 << 8) // (UDP) Endpoint type #define AT91C_UDP_EPTYPE_CTRL ((unsigned int) 0x0 << 8) // (UDP) Control #define AT91C_UDP_EPTYPE_ISO_OUT ((unsigned int) 0x1 << 8) // (UDP) Isochronous OUT #define AT91C_UDP_EPTYPE_BULK_OUT ((unsigned int) 0x2 << 8) // (UDP) Bulk OUT #define AT91C_UDP_EPTYPE_INT_OUT ((unsigned int) 0x3 << 8) // (UDP) Interrupt OUT #define AT91C_UDP_EPTYPE_ISO_IN ((unsigned int) 0x5 << 8) // (UDP) Isochronous IN #define AT91C_UDP_EPTYPE_BULK_IN ((unsigned int) 0x6 << 8) // (UDP) Bulk IN #define AT91C_UDP_EPTYPE_INT_IN ((unsigned int) 0x7 << 8) // (UDP) Interrupt IN #define AT91C_UDP_DTGLE ((unsigned int) 0x1 << 11) // (UDP) Data Toggle #define AT91C_UDP_EPEDS ((unsigned int) 0x1 << 15) // (UDP) Endpoint Enable Disable #define AT91C_UDP_RXBYTECNT ((unsigned int) 0x7FF << 16) // (UDP) Number Of Bytes Available in the FIFO // -------- UDP_TXVC : (UDP Offset: 0x74) Transceiver Control Register -------- #define AT91C_UDP_TXVDIS ((unsigned int) 0x1 << 8) // (UDP) #define AT91C_UDP_PUON ((unsigned int) 0x1 << 9) // (UDP) Pull-up ON // ***************************************************************************** // SOFTWARE API DEFINITION FOR Two-wire Interface // ***************************************************************************** typedef struct _AT91S_TWI { AT91_REG TWI_CR; // Control Register AT91_REG TWI_MMR; // Master Mode Register AT91_REG Reserved0[1]; // AT91_REG TWI_IADR; // Internal Address Register AT91_REG TWI_CWGR; // Clock Waveform Generator Register AT91_REG Reserved1[3]; // AT91_REG TWI_SR; // Status Register AT91_REG TWI_IER; // Interrupt Enable Register AT91_REG TWI_IDR; // Interrupt Disable Register AT91_REG TWI_IMR; // Interrupt Mask Register AT91_REG TWI_RHR; // Receive Holding Register AT91_REG TWI_THR; // Transmit Holding Register } AT91S_TWI, *AT91PS_TWI; // -------- TWI_CR : (TWI Offset: 0x0) TWI Control Register -------- #define AT91C_TWI_START ((unsigned int) 0x1 << 0) // (TWI) Send a START Condition #define AT91C_TWI_STOP ((unsigned int) 0x1 << 1) // (TWI) Send a STOP Condition #define AT91C_TWI_MSEN ((unsigned int) 0x1 << 2) // (TWI) TWI Master Transfer Enabled #define AT91C_TWI_MSDIS ((unsigned int) 0x1 << 3) // (TWI) TWI Master Transfer Disabled #define AT91C_TWI_SWRST ((unsigned int) 0x1 << 7) // (TWI) Software Reset // -------- TWI_MMR : (TWI Offset: 0x4) TWI Master Mode Register -------- #define AT91C_TWI_IADRSZ ((unsigned int) 0x3 << 8) // (TWI) Internal Device Address Size #define AT91C_TWI_IADRSZ_NO ((unsigned int) 0x0 << 8) // (TWI) No internal device address #define AT91C_TWI_IADRSZ_1_BYTE ((unsigned int) 0x1 << 8) // (TWI) One-byte internal device address #define AT91C_TWI_IADRSZ_2_BYTE ((unsigned int) 0x2 << 8) // (TWI) Two-byte internal device address #define AT91C_TWI_IADRSZ_3_BYTE ((unsigned int) 0x3 << 8) // (TWI) Three-byte internal device address #define AT91C_TWI_MREAD ((unsigned int) 0x1 << 12) // (TWI) Master Read Direction #define AT91C_TWI_DADR ((unsigned int) 0x7F << 16) // (TWI) Device Address // -------- TWI_CWGR : (TWI Offset: 0x10) TWI Clock Waveform Generator Register -------- #define AT91C_TWI_CLDIV ((unsigned int) 0xFF << 0) // (TWI) Clock Low Divider #define AT91C_TWI_CHDIV ((unsigned int) 0xFF << 8) // (TWI) Clock High Divider #define AT91C_TWI_CKDIV ((unsigned int) 0x7 << 16) // (TWI) Clock Divider // -------- TWI_SR : (TWI Offset: 0x20) TWI Status Register -------- #define AT91C_TWI_TXCOMP ((unsigned int) 0x1 << 0) // (TWI) Transmission Completed #define AT91C_TWI_RXRDY ((unsigned int) 0x1 << 1) // (TWI) Receive holding register ReaDY #define AT91C_TWI_TXRDY ((unsigned int) 0x1 << 2) // (TWI) Transmit holding register ReaDY #define AT91C_TWI_OVRE ((unsigned int) 0x1 << 6) // (TWI) Overrun Error #define AT91C_TWI_UNRE ((unsigned int) 0x1 << 7) // (TWI) Underrun Error #define AT91C_TWI_NACK ((unsigned int) 0x1 << 8) // (TWI) Not Acknowledged // -------- TWI_IER : (TWI Offset: 0x24) TWI Interrupt Enable Register -------- // -------- TWI_IDR : (TWI Offset: 0x28) TWI Interrupt Disable Register -------- // -------- TWI_IMR : (TWI Offset: 0x2c) TWI Interrupt Mask Register -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR Usart // ***************************************************************************** typedef struct _AT91S_USART { AT91_REG US_CR; // Control Register AT91_REG US_MR; // Mode Register AT91_REG US_IER; // Interrupt Enable Register AT91_REG US_IDR; // Interrupt Disable Register AT91_REG US_IMR; // Interrupt Mask Register AT91_REG US_CSR; // Channel Status Register AT91_REG US_RHR; // Receiver Holding Register AT91_REG US_THR; // Transmitter Holding Register AT91_REG US_BRGR; // Baud Rate Generator Register AT91_REG US_RTOR; // Receiver Time-out Register AT91_REG US_TTGR; // Transmitter Time-guard Register AT91_REG Reserved0[5]; // AT91_REG US_FIDI; // FI_DI_Ratio Register AT91_REG US_NER; // Nb Errors Register AT91_REG Reserved1[1]; // AT91_REG US_IF; // IRDA_FILTER Register AT91_REG Reserved2[44]; // AT91_REG US_RPR; // Receive Pointer Register AT91_REG US_RCR; // Receive Counter Register AT91_REG US_TPR; // Transmit Pointer Register AT91_REG US_TCR; // Transmit Counter Register AT91_REG US_RNPR; // Receive Next Pointer Register AT91_REG US_RNCR; // Receive Next Counter Register AT91_REG US_TNPR; // Transmit Next Pointer Register AT91_REG US_TNCR; // Transmit Next Counter Register AT91_REG US_PTCR; // PDC Transfer Control Register AT91_REG US_PTSR; // PDC Transfer Status Register } AT91S_USART, *AT91PS_USART; // -------- US_CR : (USART Offset: 0x0) Debug Unit Control Register -------- #define AT91C_US_STTBRK ((unsigned int) 0x1 << 9) // (USART) Start Break #define AT91C_US_STPBRK ((unsigned int) 0x1 << 10) // (USART) Stop Break #define AT91C_US_STTTO ((unsigned int) 0x1 << 11) // (USART) Start Time-out #define AT91C_US_SENDA ((unsigned int) 0x1 << 12) // (USART) Send Address #define AT91C_US_RSTIT ((unsigned int) 0x1 << 13) // (USART) Reset Iterations #define AT91C_US_RSTNACK ((unsigned int) 0x1 << 14) // (USART) Reset Non Acknowledge #define AT91C_US_RETTO ((unsigned int) 0x1 << 15) // (USART) Rearm Time-out #define AT91C_US_DTREN ((unsigned int) 0x1 << 16) // (USART) Data Terminal ready Enable #define AT91C_US_DTRDIS ((unsigned int) 0x1 << 17) // (USART) Data Terminal ready Disable #define AT91C_US_RTSEN ((unsigned int) 0x1 << 18) // (USART) Request to Send enable #define AT91C_US_RTSDIS ((unsigned int) 0x1 << 19) // (USART) Request to Send Disable // -------- US_MR : (USART Offset: 0x4) Debug Unit Mode Register -------- #define AT91C_US_USMODE ((unsigned int) 0xF << 0) // (USART) Usart mode #define AT91C_US_USMODE_NORMAL ((unsigned int) 0x0) // (USART) Normal #define AT91C_US_USMODE_RS485 ((unsigned int) 0x1) // (USART) RS485 #define AT91C_US_USMODE_HWHSH ((unsigned int) 0x2) // (USART) Hardware Handshaking #define AT91C_US_USMODE_MODEM ((unsigned int) 0x3) // (USART) Modem #define AT91C_US_USMODE_ISO7816_0 ((unsigned int) 0x4) // (USART) ISO7816 protocol: T = 0 #define AT91C_US_USMODE_ISO7816_1 ((unsigned int) 0x6) // (USART) ISO7816 protocol: T = 1 #define AT91C_US_USMODE_IRDA ((unsigned int) 0x8) // (USART) IrDA #define AT91C_US_USMODE_SWHSH ((unsigned int) 0xC) // (USART) Software Handshaking #define AT91C_US_CLKS ((unsigned int) 0x3 << 4) // (USART) Clock Selection (Baud Rate generator Input Clock #define AT91C_US_CLKS_CLOCK ((unsigned int) 0x0 << 4) // (USART) Clock #define AT91C_US_CLKS_FDIV1 ((unsigned int) 0x1 << 4) // (USART) fdiv1 #define AT91C_US_CLKS_SLOW ((unsigned int) 0x2 << 4) // (USART) slow_clock (ARM) #define AT91C_US_CLKS_EXT ((unsigned int) 0x3 << 4) // (USART) External (SCK) #define AT91C_US_CHRL ((unsigned int) 0x3 << 6) // (USART) Clock Selection (Baud Rate generator Input Clock #define AT91C_US_CHRL_5_BITS ((unsigned int) 0x0 << 6) // (USART) Character Length: 5 bits #define AT91C_US_CHRL_6_BITS ((unsigned int) 0x1 << 6) // (USART) Character Length: 6 bits #define AT91C_US_CHRL_7_BITS ((unsigned int) 0x2 << 6) // (USART) Character Length: 7 bits #define AT91C_US_CHRL_8_BITS ((unsigned int) 0x3 << 6) // (USART) Character Length: 8 bits #define AT91C_US_SYNC ((unsigned int) 0x1 << 8) // (USART) Synchronous Mode Select #define AT91C_US_NBSTOP ((unsigned int) 0x3 << 12) // (USART) Number of Stop bits #define AT91C_US_NBSTOP_1_BIT ((unsigned int) 0x0 << 12) // (USART) 1 stop bit #define AT91C_US_NBSTOP_15_BIT ((unsigned int) 0x1 << 12) // (USART) Asynchronous (SYNC=0) 2 stop bits Synchronous (SYNC=1) 2 stop bits #define AT91C_US_NBSTOP_2_BIT ((unsigned int) 0x2 << 12) // (USART) 2 stop bits #define AT91C_US_MSBF ((unsigned int) 0x1 << 16) // (USART) Bit Order #define AT91C_US_MODE9 ((unsigned int) 0x1 << 17) // (USART) 9-bit Character length #define AT91C_US_CKLO ((unsigned int) 0x1 << 18) // (USART) Clock Output Select #define AT91C_US_OVER ((unsigned int) 0x1 << 19) // (USART) Over Sampling Mode #define AT91C_US_INACK ((unsigned int) 0x1 << 20) // (USART) Inhibit Non Acknowledge #define AT91C_US_DSNACK ((unsigned int) 0x1 << 21) // (USART) Disable Successive NACK #define AT91C_US_MAX_ITER ((unsigned int) 0x1 << 24) // (USART) Number of Repetitions #define AT91C_US_FILTER ((unsigned int) 0x1 << 28) // (USART) Receive Line Filter // -------- US_IER : (USART Offset: 0x8) Debug Unit Interrupt Enable Register -------- #define AT91C_US_RXBRK ((unsigned int) 0x1 << 2) // (USART) Break Received/End of Break #define AT91C_US_TIMEOUT ((unsigned int) 0x1 << 8) // (USART) Receiver Time-out #define AT91C_US_ITERATION ((unsigned int) 0x1 << 10) // (USART) Max number of Repetitions Reached #define AT91C_US_NACK ((unsigned int) 0x1 << 13) // (USART) Non Acknowledge #define AT91C_US_RIIC ((unsigned int) 0x1 << 16) // (USART) Ring INdicator Input Change Flag #define AT91C_US_DSRIC ((unsigned int) 0x1 << 17) // (USART) Data Set Ready Input Change Flag #define AT91C_US_DCDIC ((unsigned int) 0x1 << 18) // (USART) Data Carrier Flag #define AT91C_US_CTSIC ((unsigned int) 0x1 << 19) // (USART) Clear To Send Input Change Flag // -------- US_IDR : (USART Offset: 0xc) Debug Unit Interrupt Disable Register -------- // -------- US_IMR : (USART Offset: 0x10) Debug Unit Interrupt Mask Register -------- // -------- US_CSR : (USART Offset: 0x14) Debug Unit Channel Status Register -------- #define AT91C_US_RI ((unsigned int) 0x1 << 20) // (USART) Image of RI Input #define AT91C_US_DSR ((unsigned int) 0x1 << 21) // (USART) Image of DSR Input #define AT91C_US_DCD ((unsigned int) 0x1 << 22) // (USART) Image of DCD Input #define AT91C_US_CTS ((unsigned int) 0x1 << 23) // (USART) Image of CTS Input // ***************************************************************************** // SOFTWARE API DEFINITION FOR PWMC Channel Interface // ***************************************************************************** typedef struct _AT91S_PWMC_CH { AT91_REG PWMC_CMR; // Channel Mode Register AT91_REG PWMC_CDTYR; // Channel Duty Cycle Register AT91_REG PWMC_CPRDR; // Channel Period Register AT91_REG PWMC_CCNTR; // Channel Counter Register AT91_REG PWMC_CUPDR; // Channel Update Register AT91_REG PWMC_Reserved[3]; // Reserved } AT91S_PWMC_CH, *AT91PS_PWMC_CH; // -------- PWMC_CMR : (PWMC_CH Offset: 0x0) PWMC Channel Mode Register -------- #define AT91C_PWMC_CPRE ((unsigned int) 0xF << 0) // (PWMC_CH) Channel Pre-scaler : PWMC_CLKx #define AT91C_PWMC_CPRE_MCK ((unsigned int) 0x0) // (PWMC_CH) #define AT91C_PWMC_CPRE_MCKA ((unsigned int) 0xB) // (PWMC_CH) #define AT91C_PWMC_CPRE_MCKB ((unsigned int) 0xC) // (PWMC_CH) #define AT91C_PWMC_CALG ((unsigned int) 0x1 << 8) // (PWMC_CH) Channel Alignment #define AT91C_PWMC_CPOL ((unsigned int) 0x1 << 9) // (PWMC_CH) Channel Polarity #define AT91C_PWMC_CPD ((unsigned int) 0x1 << 10) // (PWMC_CH) Channel Update Period // -------- PWMC_CDTYR : (PWMC_CH Offset: 0x4) PWMC Channel Duty Cycle Register -------- #define AT91C_PWMC_CDTY ((unsigned int) 0x0 << 0) // (PWMC_CH) Channel Duty Cycle // -------- PWMC_CPRDR : (PWMC_CH Offset: 0x8) PWMC Channel Period Register -------- #define AT91C_PWMC_CPRD ((unsigned int) 0x0 << 0) // (PWMC_CH) Channel Period // -------- PWMC_CCNTR : (PWMC_CH Offset: 0xc) PWMC Channel Counter Register -------- #define AT91C_PWMC_CCNT ((unsigned int) 0x0 << 0) // (PWMC_CH) Channel Counter // -------- PWMC_CUPDR : (PWMC_CH Offset: 0x10) PWMC Channel Update Register -------- #define AT91C_PWMC_CUPD ((unsigned int) 0x0 << 0) // (PWMC_CH) Channel Update // ***************************************************************************** // SOFTWARE API DEFINITION FOR Pulse Width Modulation Controller Interface // ***************************************************************************** typedef struct _AT91S_PWMC { AT91_REG PWMC_MR; // PWMC Mode Register AT91_REG PWMC_ENA; // PWMC Enable Register AT91_REG PWMC_DIS; // PWMC Disable Register AT91_REG PWMC_SR; // PWMC Status Register AT91_REG PWMC_IER; // PWMC Interrupt Enable Register AT91_REG PWMC_IDR; // PWMC Interrupt Disable Register AT91_REG PWMC_IMR; // PWMC Interrupt Mask Register AT91_REG PWMC_ISR; // PWMC Interrupt Status Register AT91_REG Reserved0[55]; // AT91_REG PWMC_VR; // PWMC Version Register AT91_REG Reserved1[64]; // AT91S_PWMC_CH PWMC_CH[8]; // PWMC Channel } AT91S_PWMC, *AT91PS_PWMC; // -------- PWMC_MR : (PWMC Offset: 0x0) PWMC Mode Register -------- #define AT91C_PWMC_DIVA ((unsigned int) 0xFF << 0) // (PWMC) CLKA divide factor. #define AT91C_PWMC_PREA ((unsigned int) 0xF << 8) // (PWMC) Divider Input Clock Prescaler A #define AT91C_PWMC_PREA_MCK ((unsigned int) 0x0 << 8) // (PWMC) #define AT91C_PWMC_DIVB ((unsigned int) 0xFF << 16) // (PWMC) CLKB divide factor. #define AT91C_PWMC_PREB ((unsigned int) 0xF << 24) // (PWMC) Divider Input Clock Prescaler B #define AT91C_PWMC_PREB_MCK ((unsigned int) 0x0 << 24) // (PWMC) // -------- PWMC_ENA : (PWMC Offset: 0x4) PWMC Enable Register -------- #define AT91C_PWMC_CHID0 ((unsigned int) 0x1 << 0) // (PWMC) Channel ID 0 #define AT91C_PWMC_CHID1 ((unsigned int) 0x1 << 1) // (PWMC) Channel ID 1 #define AT91C_PWMC_CHID2 ((unsigned int) 0x1 << 2) // (PWMC) Channel ID 2 #define AT91C_PWMC_CHID3 ((unsigned int) 0x1 << 3) // (PWMC) Channel ID 3 #define AT91C_PWMC_CHID4 ((unsigned int) 0x1 << 4) // (PWMC) Channel ID 4 #define AT91C_PWMC_CHID5 ((unsigned int) 0x1 << 5) // (PWMC) Channel ID 5 #define AT91C_PWMC_CHID6 ((unsigned int) 0x1 << 6) // (PWMC) Channel ID 6 #define AT91C_PWMC_CHID7 ((unsigned int) 0x1 << 7) // (PWMC) Channel ID 7 // -------- PWMC_DIS : (PWMC Offset: 0x8) PWMC Disable Register -------- // -------- PWMC_SR : (PWMC Offset: 0xc) PWMC Status Register -------- // -------- PWMC_IER : (PWMC Offset: 0x10) PWMC Interrupt Enable Register -------- // -------- PWMC_IDR : (PWMC Offset: 0x14) PWMC Interrupt Disable Register -------- // -------- PWMC_IMR : (PWMC Offset: 0x18) PWMC Interrupt Mask Register -------- // -------- PWMC_ISR : (PWMC Offset: 0x1c) PWMC Interrupt Status Register -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR Synchronous Serial Controller Interface // ***************************************************************************** typedef struct _AT91S_SSC { AT91_REG SSC_CR; // Control Register AT91_REG SSC_CMR; // Clock Mode Register AT91_REG Reserved0[2]; // AT91_REG SSC_RCMR; // Receive Clock ModeRegister AT91_REG SSC_RFMR; // Receive Frame Mode Register AT91_REG SSC_TCMR; // Transmit Clock Mode Register AT91_REG SSC_TFMR; // Transmit Frame Mode Register AT91_REG SSC_RHR; // Receive Holding Register AT91_REG SSC_THR; // Transmit Holding Register AT91_REG Reserved1[2]; // AT91_REG SSC_RSHR; // Receive Sync Holding Register AT91_REG SSC_TSHR; // Transmit Sync Holding Register AT91_REG Reserved2[2]; // AT91_REG SSC_SR; // Status Register AT91_REG SSC_IER; // Interrupt Enable Register AT91_REG SSC_IDR; // Interrupt Disable Register AT91_REG SSC_IMR; // Interrupt Mask Register AT91_REG Reserved3[44]; // AT91_REG SSC_RPR; // Receive Pointer Register AT91_REG SSC_RCR; // Receive Counter Register AT91_REG SSC_TPR; // Transmit Pointer Register AT91_REG SSC_TCR; // Transmit Counter Register AT91_REG SSC_RNPR; // Receive Next Pointer Register AT91_REG SSC_RNCR; // Receive Next Counter Register AT91_REG SSC_TNPR; // Transmit Next Pointer Register AT91_REG SSC_TNCR; // Transmit Next Counter Register AT91_REG SSC_PTCR; // PDC Transfer Control Register AT91_REG SSC_PTSR; // PDC Transfer Status Register } AT91S_SSC, *AT91PS_SSC; // -------- SSC_CR : (SSC Offset: 0x0) SSC Control Register -------- #define AT91C_SSC_RXEN ((unsigned int) 0x1 << 0) // (SSC) Receive Enable #define AT91C_SSC_RXDIS ((unsigned int) 0x1 << 1) // (SSC) Receive Disable #define AT91C_SSC_TXEN ((unsigned int) 0x1 << 8) // (SSC) Transmit Enable #define AT91C_SSC_TXDIS ((unsigned int) 0x1 << 9) // (SSC) Transmit Disable #define AT91C_SSC_SWRST ((unsigned int) 0x1 << 15) // (SSC) Software Reset // -------- SSC_RCMR : (SSC Offset: 0x10) SSC Receive Clock Mode Register -------- #define AT91C_SSC_CKS ((unsigned int) 0x3 << 0) // (SSC) Receive/Transmit Clock Selection #define AT91C_SSC_CKS_DIV ((unsigned int) 0x0) // (SSC) Divided Clock #define AT91C_SSC_CKS_TK ((unsigned int) 0x1) // (SSC) TK Clock signal #define AT91C_SSC_CKS_RK ((unsigned int) 0x2) // (SSC) RK pin #define AT91C_SSC_CKO ((unsigned int) 0x7 << 2) // (SSC) Receive/Transmit Clock Output Mode Selection #define AT91C_SSC_CKO_NONE ((unsigned int) 0x0 << 2) // (SSC) Receive/Transmit Clock Output Mode: None RK pin: Input-only #define AT91C_SSC_CKO_CONTINOUS ((unsigned int) 0x1 << 2) // (SSC) Continuous Receive/Transmit Clock RK pin: Output #define AT91C_SSC_CKO_DATA_TX ((unsigned int) 0x2 << 2) // (SSC) Receive/Transmit Clock only during data transfers RK pin: Output #define AT91C_SSC_CKI ((unsigned int) 0x1 << 5) // (SSC) Receive/Transmit Clock Inversion #define AT91C_SSC_START ((unsigned int) 0xF << 8) // (SSC) Receive/Transmit Start Selection #define AT91C_SSC_START_CONTINOUS ((unsigned int) 0x0 << 8) // (SSC) Continuous, as soon as the receiver is enabled, and immediately after the end of transfer of the previous data. #define AT91C_SSC_START_TX ((unsigned int) 0x1 << 8) // (SSC) Transmit/Receive start #define AT91C_SSC_START_LOW_RF ((unsigned int) 0x2 << 8) // (SSC) Detection of a low level on RF input #define AT91C_SSC_START_HIGH_RF ((unsigned int) 0x3 << 8) // (SSC) Detection of a high level on RF input #define AT91C_SSC_START_FALL_RF ((unsigned int) 0x4 << 8) // (SSC) Detection of a falling edge on RF input #define AT91C_SSC_START_RISE_RF ((unsigned int) 0x5 << 8) // (SSC) Detection of a rising edge on RF input #define AT91C_SSC_START_LEVEL_RF ((unsigned int) 0x6 << 8) // (SSC) Detection of any level change on RF input #define AT91C_SSC_START_EDGE_RF ((unsigned int) 0x7 << 8) // (SSC) Detection of any edge on RF input #define AT91C_SSC_START_0 ((unsigned int) 0x8 << 8) // (SSC) Compare 0 #define AT91C_SSC_STTDLY ((unsigned int) 0xFF << 16) // (SSC) Receive/Transmit Start Delay #define AT91C_SSC_PERIOD ((unsigned int) 0xFF << 24) // (SSC) Receive/Transmit Period Divider Selection // -------- SSC_RFMR : (SSC Offset: 0x14) SSC Receive Frame Mode Register -------- #define AT91C_SSC_DATLEN ((unsigned int) 0x1F << 0) // (SSC) Data Length #define AT91C_SSC_LOOP ((unsigned int) 0x1 << 5) // (SSC) Loop Mode #define AT91C_SSC_MSBF ((unsigned int) 0x1 << 7) // (SSC) Most Significant Bit First #define AT91C_SSC_DATNB ((unsigned int) 0xF << 8) // (SSC) Data Number per Frame #define AT91C_SSC_FSLEN ((unsigned int) 0xF << 16) // (SSC) Receive/Transmit Frame Sync length #define AT91C_SSC_FSOS ((unsigned int) 0x7 << 20) // (SSC) Receive/Transmit Frame Sync Output Selection #define AT91C_SSC_FSOS_NONE ((unsigned int) 0x0 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: None RK pin Input-only #define AT91C_SSC_FSOS_NEGATIVE ((unsigned int) 0x1 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: Negative Pulse #define AT91C_SSC_FSOS_POSITIVE ((unsigned int) 0x2 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: Positive Pulse #define AT91C_SSC_FSOS_LOW ((unsigned int) 0x3 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: Driver Low during data transfer #define AT91C_SSC_FSOS_HIGH ((unsigned int) 0x4 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: Driver High during data transfer #define AT91C_SSC_FSOS_TOGGLE ((unsigned int) 0x5 << 20) // (SSC) Selected Receive/Transmit Frame Sync Signal: Toggling at each start of data transfer #define AT91C_SSC_FSEDGE ((unsigned int) 0x1 << 24) // (SSC) Frame Sync Edge Detection // -------- SSC_TCMR : (SSC Offset: 0x18) SSC Transmit Clock Mode Register -------- // -------- SSC_TFMR : (SSC Offset: 0x1c) SSC Transmit Frame Mode Register -------- #define AT91C_SSC_DATDEF ((unsigned int) 0x1 << 5) // (SSC) Data Default Value #define AT91C_SSC_FSDEN ((unsigned int) 0x1 << 23) // (SSC) Frame Sync Data Enable // -------- SSC_SR : (SSC Offset: 0x40) SSC Status Register -------- #define AT91C_SSC_TXRDY ((unsigned int) 0x1 << 0) // (SSC) Transmit Ready #define AT91C_SSC_TXEMPTY ((unsigned int) 0x1 << 1) // (SSC) Transmit Empty #define AT91C_SSC_ENDTX ((unsigned int) 0x1 << 2) // (SSC) End Of Transmission #define AT91C_SSC_TXBUFE ((unsigned int) 0x1 << 3) // (SSC) Transmit Buffer Empty #define AT91C_SSC_RXRDY ((unsigned int) 0x1 << 4) // (SSC) Receive Ready #define AT91C_SSC_OVRUN ((unsigned int) 0x1 << 5) // (SSC) Receive Overrun #define AT91C_SSC_ENDRX ((unsigned int) 0x1 << 6) // (SSC) End of Reception #define AT91C_SSC_RXBUFF ((unsigned int) 0x1 << 7) // (SSC) Receive Buffer Full #define AT91C_SSC_TXSYN ((unsigned int) 0x1 << 10) // (SSC) Transmit Sync #define AT91C_SSC_RXSYN ((unsigned int) 0x1 << 11) // (SSC) Receive Sync #define AT91C_SSC_TXENA ((unsigned int) 0x1 << 16) // (SSC) Transmit Enable #define AT91C_SSC_RXENA ((unsigned int) 0x1 << 17) // (SSC) Receive Enable // -------- SSC_IER : (SSC Offset: 0x44) SSC Interrupt Enable Register -------- // -------- SSC_IDR : (SSC Offset: 0x48) SSC Interrupt Disable Register -------- // -------- SSC_IMR : (SSC Offset: 0x4c) SSC Interrupt Mask Register -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR Analog to Digital Convertor // ***************************************************************************** typedef struct _AT91S_ADC { AT91_REG ADC_CR; // ADC Control Register AT91_REG ADC_MR; // ADC Mode Register AT91_REG Reserved0[2]; // AT91_REG ADC_CHER; // ADC Channel Enable Register AT91_REG ADC_CHDR; // ADC Channel Disable Register AT91_REG ADC_CHSR; // ADC Channel Status Register AT91_REG ADC_SR; // ADC Status Register AT91_REG ADC_LCDR; // ADC Last Converted Data Register AT91_REG ADC_IER; // ADC Interrupt Enable Register AT91_REG ADC_IDR; // ADC Interrupt Disable Register AT91_REG ADC_IMR; // ADC Interrupt Mask Register AT91_REG ADC_CDR0; // ADC Channel Data Register 0 AT91_REG ADC_CDR1; // ADC Channel Data Register 1 AT91_REG ADC_CDR2; // ADC Channel Data Register 2 AT91_REG ADC_CDR3; // ADC Channel Data Register 3 AT91_REG ADC_CDR4; // ADC Channel Data Register 4 AT91_REG ADC_CDR5; // ADC Channel Data Register 5 AT91_REG ADC_CDR6; // ADC Channel Data Register 6 AT91_REG ADC_CDR7; // ADC Channel Data Register 7 AT91_REG Reserved1[44]; // AT91_REG ADC_RPR; // Receive Pointer Register AT91_REG ADC_RCR; // Receive Counter Register AT91_REG ADC_TPR; // Transmit Pointer Register AT91_REG ADC_TCR; // Transmit Counter Register AT91_REG ADC_RNPR; // Receive Next Pointer Register AT91_REG ADC_RNCR; // Receive Next Counter Register AT91_REG ADC_TNPR; // Transmit Next Pointer Register AT91_REG ADC_TNCR; // Transmit Next Counter Register AT91_REG ADC_PTCR; // PDC Transfer Control Register AT91_REG ADC_PTSR; // PDC Transfer Status Register } AT91S_ADC, *AT91PS_ADC; // -------- ADC_CR : (ADC Offset: 0x0) ADC Control Register -------- #define AT91C_ADC_SWRST ((unsigned int) 0x1 << 0) // (ADC) Software Reset #define AT91C_ADC_START ((unsigned int) 0x1 << 1) // (ADC) Start Conversion // -------- ADC_MR : (ADC Offset: 0x4) ADC Mode Register -------- #define AT91C_ADC_TRGEN ((unsigned int) 0x1 << 0) // (ADC) Trigger Enable #define AT91C_ADC_TRGEN_DIS ((unsigned int) 0x0) // (ADC) Hradware triggers are disabled. Starting a conversion is only possible by software #define AT91C_ADC_TRGEN_EN ((unsigned int) 0x1) // (ADC) Hardware trigger selected by TRGSEL field is enabled. #define AT91C_ADC_TRGSEL ((unsigned int) 0x7 << 1) // (ADC) Trigger Selection #define AT91C_ADC_TRGSEL_TIOA0 ((unsigned int) 0x0 << 1) // (ADC) Selected TRGSEL = TIAO0 #define AT91C_ADC_TRGSEL_TIOA1 ((unsigned int) 0x1 << 1) // (ADC) Selected TRGSEL = TIAO1 #define AT91C_ADC_TRGSEL_TIOA2 ((unsigned int) 0x2 << 1) // (ADC) Selected TRGSEL = TIAO2 #define AT91C_ADC_TRGSEL_TIOA3 ((unsigned int) 0x3 << 1) // (ADC) Selected TRGSEL = TIAO3 #define AT91C_ADC_TRGSEL_TIOA4 ((unsigned int) 0x4 << 1) // (ADC) Selected TRGSEL = TIAO4 #define AT91C_ADC_TRGSEL_TIOA5 ((unsigned int) 0x5 << 1) // (ADC) Selected TRGSEL = TIAO5 #define AT91C_ADC_TRGSEL_EXT ((unsigned int) 0x6 << 1) // (ADC) Selected TRGSEL = External Trigger #define AT91C_ADC_LOWRES ((unsigned int) 0x1 << 4) // (ADC) Resolution. #define AT91C_ADC_LOWRES_10_BIT ((unsigned int) 0x0 << 4) // (ADC) 10-bit resolution #define AT91C_ADC_LOWRES_8_BIT ((unsigned int) 0x1 << 4) // (ADC) 8-bit resolution #define AT91C_ADC_SLEEP ((unsigned int) 0x1 << 5) // (ADC) Sleep Mode #define AT91C_ADC_SLEEP_NORMAL_MODE ((unsigned int) 0x0 << 5) // (ADC) Normal Mode #define AT91C_ADC_SLEEP_MODE ((unsigned int) 0x1 << 5) // (ADC) Sleep Mode #define AT91C_ADC_PRESCAL ((unsigned int) 0x3F << 8) // (ADC) Prescaler rate selection #define AT91C_ADC_STARTUP ((unsigned int) 0x1F << 16) // (ADC) Startup Time #define AT91C_ADC_SHTIM ((unsigned int) 0xF << 24) // (ADC) Sample & Hold Time // -------- ADC_CHER : (ADC Offset: 0x10) ADC Channel Enable Register -------- #define AT91C_ADC_CH0 ((unsigned int) 0x1 << 0) // (ADC) Channel 0 #define AT91C_ADC_CH1 ((unsigned int) 0x1 << 1) // (ADC) Channel 1 #define AT91C_ADC_CH2 ((unsigned int) 0x1 << 2) // (ADC) Channel 2 #define AT91C_ADC_CH3 ((unsigned int) 0x1 << 3) // (ADC) Channel 3 #define AT91C_ADC_CH4 ((unsigned int) 0x1 << 4) // (ADC) Channel 4 #define AT91C_ADC_CH5 ((unsigned int) 0x1 << 5) // (ADC) Channel 5 #define AT91C_ADC_CH6 ((unsigned int) 0x1 << 6) // (ADC) Channel 6 #define AT91C_ADC_CH7 ((unsigned int) 0x1 << 7) // (ADC) Channel 7 // -------- ADC_CHDR : (ADC Offset: 0x14) ADC Channel Disable Register -------- // -------- ADC_CHSR : (ADC Offset: 0x18) ADC Channel Status Register -------- // -------- ADC_SR : (ADC Offset: 0x1c) ADC Status Register -------- #define AT91C_ADC_EOC0 ((unsigned int) 0x1 << 0) // (ADC) End of Conversion #define AT91C_ADC_EOC1 ((unsigned int) 0x1 << 1) // (ADC) End of Conversion #define AT91C_ADC_EOC2 ((unsigned int) 0x1 << 2) // (ADC) End of Conversion #define AT91C_ADC_EOC3 ((unsigned int) 0x1 << 3) // (ADC) End of Conversion #define AT91C_ADC_EOC4 ((unsigned int) 0x1 << 4) // (ADC) End of Conversion #define AT91C_ADC_EOC5 ((unsigned int) 0x1 << 5) // (ADC) End of Conversion #define AT91C_ADC_EOC6 ((unsigned int) 0x1 << 6) // (ADC) End of Conversion #define AT91C_ADC_EOC7 ((unsigned int) 0x1 << 7) // (ADC) End of Conversion #define AT91C_ADC_OVRE0 ((unsigned int) 0x1 << 8) // (ADC) Overrun Error #define AT91C_ADC_OVRE1 ((unsigned int) 0x1 << 9) // (ADC) Overrun Error #define AT91C_ADC_OVRE2 ((unsigned int) 0x1 << 10) // (ADC) Overrun Error #define AT91C_ADC_OVRE3 ((unsigned int) 0x1 << 11) // (ADC) Overrun Error #define AT91C_ADC_OVRE4 ((unsigned int) 0x1 << 12) // (ADC) Overrun Error #define AT91C_ADC_OVRE5 ((unsigned int) 0x1 << 13) // (ADC) Overrun Error #define AT91C_ADC_OVRE6 ((unsigned int) 0x1 << 14) // (ADC) Overrun Error #define AT91C_ADC_OVRE7 ((unsigned int) 0x1 << 15) // (ADC) Overrun Error #define AT91C_ADC_DRDY ((unsigned int) 0x1 << 16) // (ADC) Data Ready #define AT91C_ADC_GOVRE ((unsigned int) 0x1 << 17) // (ADC) General Overrun #define AT91C_ADC_ENDRX ((unsigned int) 0x1 << 18) // (ADC) End of Receiver Transfer #define AT91C_ADC_RXBUFF ((unsigned int) 0x1 << 19) // (ADC) RXBUFF Interrupt // -------- ADC_LCDR : (ADC Offset: 0x20) ADC Last Converted Data Register -------- #define AT91C_ADC_LDATA ((unsigned int) 0x3FF << 0) // (ADC) Last Data Converted // -------- ADC_IER : (ADC Offset: 0x24) ADC Interrupt Enable Register -------- // -------- ADC_IDR : (ADC Offset: 0x28) ADC Interrupt Disable Register -------- // -------- ADC_IMR : (ADC Offset: 0x2c) ADC Interrupt Mask Register -------- // -------- ADC_CDR0 : (ADC Offset: 0x30) ADC Channel Data Register 0 -------- #define AT91C_ADC_DATA ((unsigned int) 0x3FF << 0) // (ADC) Converted Data // -------- ADC_CDR1 : (ADC Offset: 0x34) ADC Channel Data Register 1 -------- // -------- ADC_CDR2 : (ADC Offset: 0x38) ADC Channel Data Register 2 -------- // -------- ADC_CDR3 : (ADC Offset: 0x3c) ADC Channel Data Register 3 -------- // -------- ADC_CDR4 : (ADC Offset: 0x40) ADC Channel Data Register 4 -------- // -------- ADC_CDR5 : (ADC Offset: 0x44) ADC Channel Data Register 5 -------- // -------- ADC_CDR6 : (ADC Offset: 0x48) ADC Channel Data Register 6 -------- // -------- ADC_CDR7 : (ADC Offset: 0x4c) ADC Channel Data Register 7 -------- // ***************************************************************************** // SOFTWARE API DEFINITION FOR Serial Parallel Interface // ***************************************************************************** typedef struct _AT91S_SPI { AT91_REG SPI_CR; // Control Register AT91_REG SPI_MR; // Mode Register AT91_REG SPI_RDR; // Receive Data Register AT91_REG SPI_TDR; // Transmit Data Register AT91_REG SPI_SR; // Status Register AT91_REG SPI_IER; // Interrupt Enable Register AT91_REG SPI_IDR; // Interrupt Disable Register AT91_REG SPI_IMR; // Interrupt Mask Register AT91_REG Reserved0[4]; // AT91_REG SPI_CSR[4]; // Chip Select Register AT91_REG Reserved1[48]; // AT91_REG SPI_RPR; // Receive Pointer Register AT91_REG SPI_RCR; // Receive Counter Register AT91_REG SPI_TPR; // Transmit Pointer Register AT91_REG SPI_TCR; // Transmit Counter Register AT91_REG SPI_RNPR; // Receive Next Pointer Register AT91_REG SPI_RNCR; // Receive Next Counter Register AT91_REG SPI_TNPR; // Transmit Next Pointer Register AT91_REG SPI_TNCR; // Transmit Next Counter Register AT91_REG SPI_PTCR; // PDC Transfer Control Register AT91_REG SPI_PTSR; // PDC Transfer Status Register } AT91S_SPI, *AT91PS_SPI; // -------- SPI_CR : (SPI Offset: 0x0) SPI Control Register -------- #define AT91C_SPI_SPIEN ((unsigned int) 0x1 << 0) // (SPI) SPI Enable #define AT91C_SPI_SPIDIS ((unsigned int) 0x1 << 1) // (SPI) SPI Disable #define AT91C_SPI_SWRST ((unsigned int) 0x1 << 7) // (SPI) SPI Software reset #define AT91C_SPI_LASTXFER ((unsigned int) 0x1 << 24) // (SPI) SPI Last Transfer // -------- SPI_MR : (SPI Offset: 0x4) SPI Mode Register -------- #define AT91C_SPI_MSTR ((unsigned int) 0x1 << 0) // (SPI) Master/Slave Mode #define AT91C_SPI_PS ((unsigned int) 0x1 << 1) // (SPI) Peripheral Select #define AT91C_SPI_PS_FIXED ((unsigned int) 0x0 << 1) // (SPI) Fixed Peripheral Select #define AT91C_SPI_PS_VARIABLE ((unsigned int) 0x1 << 1) // (SPI) Variable Peripheral Select #define AT91C_SPI_PCSDEC ((unsigned int) 0x1 << 2) // (SPI) Chip Select Decode #define AT91C_SPI_FDIV ((unsigned int) 0x1 << 3) // (SPI) Clock Selection #define AT91C_SPI_MODFDIS ((unsigned int) 0x1 << 4) // (SPI) Mode Fault Detection #define AT91C_SPI_LLB ((unsigned int) 0x1 << 7) // (SPI) Clock Selection #define AT91C_SPI_PCS ((unsigned int) 0xF << 16) // (SPI) Peripheral Chip Select #define AT91C_SPI_DLYBCS ((unsigned int) 0xFF << 24) // (SPI) Delay Between Chip Selects // -------- SPI_RDR : (SPI Offset: 0x8) Receive Data Register -------- #define AT91C_SPI_RD ((unsigned int) 0xFFFF << 0) // (SPI) Receive Data #define AT91C_SPI_RPCS ((unsigned int) 0xF << 16) // (SPI) Peripheral Chip Select Status // -------- SPI_TDR : (SPI Offset: 0xc) Transmit Data Register -------- #define AT91C_SPI_TD ((unsigned int) 0xFFFF << 0) // (SPI) Transmit Data #define AT91C_SPI_TPCS ((unsigned int) 0xF << 16) // (SPI) Peripheral Chip Select Status // -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- #define AT91C_SPI_RDRF ((unsigned int) 0x1 << 0) // (SPI) Receive Data Register Full #define AT91C_SPI_TDRE ((unsigned int) 0x1 << 1) // (SPI) Transmit Data Register Empty #define AT91C_SPI_MODF ((unsigned int) 0x1 << 2) // (SPI) Mode Fault Error #define AT91C_SPI_OVRES ((unsigned int) 0x1 << 3) // (SPI) Overrun Error Status #define AT91C_SPI_ENDRX ((unsigned int) 0x1 << 4) // (SPI) End of Receiver Transfer #define AT91C_SPI_ENDTX ((unsigned int) 0x1 << 5) // (SPI) End of Receiver Transfer #define AT91C_SPI_RXBUFF ((unsigned int) 0x1 << 6) // (SPI) RXBUFF Interrupt #define AT91C_SPI_TXBUFE ((unsigned int) 0x1 << 7) // (SPI) TXBUFE Interrupt #define AT91C_SPI_NSSR ((unsigned int) 0x1 << 8) // (SPI) NSSR Interrupt #define AT91C_SPI_TXEMPTY ((unsigned int) 0x1 << 9) // (SPI) TXEMPTY Interrupt #define AT91C_SPI_SPIENS ((unsigned int) 0x1 << 16) // (SPI) Enable Status // -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- // -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- // -------- SPI_IMR : (SPI Offset: 0x1c) Interrupt Mask Register -------- // -------- SPI_CSR : (SPI Offset: 0x30) Chip Select Register -------- #define AT91C_SPI_CPOL ((unsigned int) 0x1 << 0) // (SPI) Clock Polarity #define AT91C_SPI_NCPHA ((unsigned int) 0x1 << 1) // (SPI) Clock Phase #define AT91C_SPI_CSAAT ((unsigned int) 0x1 << 3) // (SPI) Chip Select Active After Transfer #define AT91C_SPI_BITS ((unsigned int) 0xF << 4) // (SPI) Bits Per Transfer #define AT91C_SPI_BITS_8 ((unsigned int) 0x0 << 4) // (SPI) 8 Bits Per transfer #define AT91C_SPI_BITS_9 ((unsigned int) 0x1 << 4) // (SPI) 9 Bits Per transfer #define AT91C_SPI_BITS_10 ((unsigned int) 0x2 << 4) // (SPI) 10 Bits Per transfer #define AT91C_SPI_BITS_11 ((unsigned int) 0x3 << 4) // (SPI) 11 Bits Per transfer #define AT91C_SPI_BITS_12 ((unsigned int) 0x4 << 4) // (SPI) 12 Bits Per transfer #define AT91C_SPI_BITS_13 ((unsigned int) 0x5 << 4) // (SPI) 13 Bits Per transfer #define AT91C_SPI_BITS_14 ((unsigned int) 0x6 << 4) // (SPI) 14 Bits Per transfer #define AT91C_SPI_BITS_15 ((unsigned int) 0x7 << 4) // (SPI) 15 Bits Per transfer #define AT91C_SPI_BITS_16 ((unsigned int) 0x8 << 4) // (SPI) 16 Bits Per transfer #define AT91C_SPI_SCBR ((unsigned int) 0xFF << 8) // (SPI) Serial Clock Baud Rate #define AT91C_SPI_DLYBS ((unsigned int) 0xFF << 16) // (SPI) Delay Before SPCK #define AT91C_SPI_DLYBCT ((unsigned int) 0xFF << 24) // (SPI) Delay Between Consecutive Transfers // ***************************************************************************** // REGISTER ADDRESS DEFINITION FOR AT91SAM7A3 // ***************************************************************************** // ========== Register definition for SYS peripheral ========== #define AT91C_SYS_GPBR1 ((AT91_REG *) 0xFFFFFD54) // (SYS) General Purpose Register 1 #define AT91C_SYS_GPBR0 ((AT91_REG *) 0xFFFFFD50) // (SYS) General Purpose Register 0 // ========== Register definition for AIC peripheral ========== #define AT91C_AIC_ICCR ((AT91_REG *) 0xFFFFF128) // (AIC) Interrupt Clear Command Register #define AT91C_AIC_IECR ((AT91_REG *) 0xFFFFF120) // (AIC) Interrupt Enable Command Register #define AT91C_AIC_SMR ((AT91_REG *) 0xFFFFF000) // (AIC) Source Mode Register #define AT91C_AIC_ISCR ((AT91_REG *) 0xFFFFF12C) // (AIC) Interrupt Set Command Register #define AT91C_AIC_EOICR ((AT91_REG *) 0xFFFFF130) // (AIC) End of Interrupt Command Register #define AT91C_AIC_DCR ((AT91_REG *) 0xFFFFF138) // (AIC) Debug Control Register (Protect) #define AT91C_AIC_FFER ((AT91_REG *) 0xFFFFF140) // (AIC) Fast Forcing Enable Register #define AT91C_AIC_SVR ((AT91_REG *) 0xFFFFF080) // (AIC) Source Vector Register #define AT91C_AIC_SPU ((AT91_REG *) 0xFFFFF134) // (AIC) Spurious Vector Register #define AT91C_AIC_FFDR ((AT91_REG *) 0xFFFFF144) // (AIC) Fast Forcing Disable Register #define AT91C_AIC_FVR ((AT91_REG *) 0xFFFFF104) // (AIC) FIQ Vector Register #define AT91C_AIC_FFSR ((AT91_REG *) 0xFFFFF148) // (AIC) Fast Forcing Status Register #define AT91C_AIC_IMR ((AT91_REG *) 0xFFFFF110) // (AIC) Interrupt Mask Register #define AT91C_AIC_ISR ((AT91_REG *) 0xFFFFF108) // (AIC) Interrupt Status Register #define AT91C_AIC_IVR ((AT91_REG *) 0xFFFFF100) // (AIC) IRQ Vector Register #define AT91C_AIC_IDCR ((AT91_REG *) 0xFFFFF124) // (AIC) Interrupt Disable Command Register #define AT91C_AIC_CISR ((AT91_REG *) 0xFFFFF114) // (AIC) Core Interrupt Status Register #define AT91C_AIC_IPR ((AT91_REG *) 0xFFFFF10C) // (AIC) Interrupt Pending Register // ========== Register definition for PDC_DBGU peripheral ========== #define AT91C_DBGU_TNCR ((AT91_REG *) 0xFFFFF31C) // (PDC_DBGU) Transmit Next Counter Register #define AT91C_DBGU_RNCR ((AT91_REG *) 0xFFFFF314) // (PDC_DBGU) Receive Next Counter Register #define AT91C_DBGU_PTCR ((AT91_REG *) 0xFFFFF320) // (PDC_DBGU) PDC Transfer Control Register #define AT91C_DBGU_PTSR ((AT91_REG *) 0xFFFFF324) // (PDC_DBGU) PDC Transfer Status Register #define AT91C_DBGU_RCR ((AT91_REG *) 0xFFFFF304) // (PDC_DBGU) Receive Counter Register #define AT91C_DBGU_TCR ((AT91_REG *) 0xFFFFF30C) // (PDC_DBGU) Transmit Counter Register #define AT91C_DBGU_RPR ((AT91_REG *) 0xFFFFF300) // (PDC_DBGU) Receive Pointer Register #define AT91C_DBGU_TPR ((AT91_REG *) 0xFFFFF308) // (PDC_DBGU) Transmit Pointer Register #define AT91C_DBGU_RNPR ((AT91_REG *) 0xFFFFF310) // (PDC_DBGU) Receive Next Pointer Register #define AT91C_DBGU_TNPR ((AT91_REG *) 0xFFFFF318) // (PDC_DBGU) Transmit Next Pointer Register // ========== Register definition for DBGU peripheral ========== #define AT91C_DBGU_EXID ((AT91_REG *) 0xFFFFF244) // (DBGU) Chip ID Extension Register #define AT91C_DBGU_THR ((AT91_REG *) 0xFFFFF21C) // (DBGU) Transmitter Holding Register #define AT91C_DBGU_CSR ((AT91_REG *) 0xFFFFF214) // (DBGU) Channel Status Register #define AT91C_DBGU_IDR ((AT91_REG *) 0xFFFFF20C) // (DBGU) Interrupt Disable Register #define AT91C_DBGU_MR ((AT91_REG *) 0xFFFFF204) // (DBGU) Mode Register #define AT91C_DBGU_FNTR ((AT91_REG *) 0xFFFFF248) // (DBGU) Force NTRST Register #define AT91C_DBGU_CIDR ((AT91_REG *) 0xFFFFF240) // (DBGU) Chip ID Register #define AT91C_DBGU_BRGR ((AT91_REG *) 0xFFFFF220) // (DBGU) Baud Rate Generator Register #define AT91C_DBGU_RHR ((AT91_REG *) 0xFFFFF218) // (DBGU) Receiver Holding Register #define AT91C_DBGU_IMR ((AT91_REG *) 0xFFFFF210) // (DBGU) Interrupt Mask Register #define AT91C_DBGU_IER ((AT91_REG *) 0xFFFFF208) // (DBGU) Interrupt Enable Register #define AT91C_DBGU_CR ((AT91_REG *) 0xFFFFF200) // (DBGU) Control Register // ========== Register definition for PIOA peripheral ========== #define AT91C_PIOA_IMR ((AT91_REG *) 0xFFFFF448) // (PIOA) Interrupt Mask Register #define AT91C_PIOA_IER ((AT91_REG *) 0xFFFFF440) // (PIOA) Interrupt Enable Register #define AT91C_PIOA_OWDR ((AT91_REG *) 0xFFFFF4A4) // (PIOA) Output Write Disable Register #define AT91C_PIOA_ISR ((AT91_REG *) 0xFFFFF44C) // (PIOA) Interrupt Status Register #define AT91C_PIOA_PPUDR ((AT91_REG *) 0xFFFFF460) // (PIOA) Pull-up Disable Register #define AT91C_PIOA_MDSR ((AT91_REG *) 0xFFFFF458) // (PIOA) Multi-driver Status Register #define AT91C_PIOA_MDER ((AT91_REG *) 0xFFFFF450) // (PIOA) Multi-driver Enable Register #define AT91C_PIOA_PER ((AT91_REG *) 0xFFFFF400) // (PIOA) PIO Enable Register #define AT91C_PIOA_PSR ((AT91_REG *) 0xFFFFF408) // (PIOA) PIO Status Register #define AT91C_PIOA_OER ((AT91_REG *) 0xFFFFF410) // (PIOA) Output Enable Register #define AT91C_PIOA_BSR ((AT91_REG *) 0xFFFFF474) // (PIOA) Select B Register #define AT91C_PIOA_PPUER ((AT91_REG *) 0xFFFFF464) // (PIOA) Pull-up Enable Register #define AT91C_PIOA_MDDR ((AT91_REG *) 0xFFFFF454) // (PIOA) Multi-driver Disable Register #define AT91C_PIOA_PDR ((AT91_REG *) 0xFFFFF404) // (PIOA) PIO Disable Register #define AT91C_PIOA_ODR ((AT91_REG *) 0xFFFFF414) // (PIOA) Output Disable Registerr #define AT91C_PIOA_IFDR ((AT91_REG *) 0xFFFFF424) // (PIOA) Input Filter Disable Register #define AT91C_PIOA_ABSR ((AT91_REG *) 0xFFFFF478) // (PIOA) AB Select Status Register #define AT91C_PIOA_ASR ((AT91_REG *) 0xFFFFF470) // (PIOA) Select A Register #define AT91C_PIOA_PPUSR ((AT91_REG *) 0xFFFFF468) // (PIOA) Pull-up Status Register #define AT91C_PIOA_ODSR ((AT91_REG *) 0xFFFFF438) // (PIOA) Output Data Status Register #define AT91C_PIOA_SODR ((AT91_REG *) 0xFFFFF430) // (PIOA) Set Output Data Register #define AT91C_PIOA_IFSR ((AT91_REG *) 0xFFFFF428) // (PIOA) Input Filter Status Register #define AT91C_PIOA_IFER ((AT91_REG *) 0xFFFFF420) // (PIOA) Input Filter Enable Register #define AT91C_PIOA_OSR ((AT91_REG *) 0xFFFFF418) // (PIOA) Output Status Register #define AT91C_PIOA_IDR ((AT91_REG *) 0xFFFFF444) // (PIOA) Interrupt Disable Register #define AT91C_PIOA_PDSR ((AT91_REG *) 0xFFFFF43C) // (PIOA) Pin Data Status Register #define AT91C_PIOA_CODR ((AT91_REG *) 0xFFFFF434) // (PIOA) Clear Output Data Register #define AT91C_PIOA_OWSR ((AT91_REG *) 0xFFFFF4A8) // (PIOA) Output Write Status Register #define AT91C_PIOA_OWER ((AT91_REG *) 0xFFFFF4A0) // (PIOA) Output Write Enable Register // ========== Register definition for PIOB peripheral ========== #define AT91C_PIOB_OWSR ((AT91_REG *) 0xFFFFF6A8) // (PIOB) Output Write Status Register #define AT91C_PIOB_PPUSR ((AT91_REG *) 0xFFFFF668) // (PIOB) Pull-up Status Register #define AT91C_PIOB_PPUDR ((AT91_REG *) 0xFFFFF660) // (PIOB) Pull-up Disable Register #define AT91C_PIOB_MDSR ((AT91_REG *) 0xFFFFF658) // (PIOB) Multi-driver Status Register #define AT91C_PIOB_MDER ((AT91_REG *) 0xFFFFF650) // (PIOB) Multi-driver Enable Register #define AT91C_PIOB_IMR ((AT91_REG *) 0xFFFFF648) // (PIOB) Interrupt Mask Register #define AT91C_PIOB_OSR ((AT91_REG *) 0xFFFFF618) // (PIOB) Output Status Register #define AT91C_PIOB_OER ((AT91_REG *) 0xFFFFF610) // (PIOB) Output Enable Register #define AT91C_PIOB_PSR ((AT91_REG *) 0xFFFFF608) // (PIOB) PIO Status Register #define AT91C_PIOB_PER ((AT91_REG *) 0xFFFFF600) // (PIOB) PIO Enable Register #define AT91C_PIOB_BSR ((AT91_REG *) 0xFFFFF674) // (PIOB) Select B Register #define AT91C_PIOB_PPUER ((AT91_REG *) 0xFFFFF664) // (PIOB) Pull-up Enable Register #define AT91C_PIOB_IFDR ((AT91_REG *) 0xFFFFF624) // (PIOB) Input Filter Disable Register #define AT91C_PIOB_ODR ((AT91_REG *) 0xFFFFF614) // (PIOB) Output Disable Registerr #define AT91C_PIOB_ABSR ((AT91_REG *) 0xFFFFF678) // (PIOB) AB Select Status Register #define AT91C_PIOB_ASR ((AT91_REG *) 0xFFFFF670) // (PIOB) Select A Register #define AT91C_PIOB_IFER ((AT91_REG *) 0xFFFFF620) // (PIOB) Input Filter Enable Register #define AT91C_PIOB_IFSR ((AT91_REG *) 0xFFFFF628) // (PIOB) Input Filter Status Register #define AT91C_PIOB_SODR ((AT91_REG *) 0xFFFFF630) // (PIOB) Set Output Data Register #define AT91C_PIOB_ODSR ((AT91_REG *) 0xFFFFF638) // (PIOB) Output Data Status Register #define AT91C_PIOB_CODR ((AT91_REG *) 0xFFFFF634) // (PIOB) Clear Output Data Register #define AT91C_PIOB_PDSR ((AT91_REG *) 0xFFFFF63C) // (PIOB) Pin Data Status Register #define AT91C_PIOB_OWER ((AT91_REG *) 0xFFFFF6A0) // (PIOB) Output Write Enable Register #define AT91C_PIOB_IER ((AT91_REG *) 0xFFFFF640) // (PIOB) Interrupt Enable Register #define AT91C_PIOB_OWDR ((AT91_REG *) 0xFFFFF6A4) // (PIOB) Output Write Disable Register #define AT91C_PIOB_MDDR ((AT91_REG *) 0xFFFFF654) // (PIOB) Multi-driver Disable Register #define AT91C_PIOB_ISR ((AT91_REG *) 0xFFFFF64C) // (PIOB) Interrupt Status Register #define AT91C_PIOB_IDR ((AT91_REG *) 0xFFFFF644) // (PIOB) Interrupt Disable Register #define AT91C_PIOB_PDR ((AT91_REG *) 0xFFFFF604) // (PIOB) PIO Disable Register // ========== Register definition for CKGR peripheral ========== #define AT91C_CKGR_PLLR ((AT91_REG *) 0xFFFFFC2C) // (CKGR) PLL Register #define AT91C_CKGR_MCFR ((AT91_REG *) 0xFFFFFC24) // (CKGR) Main Clock Frequency Register #define AT91C_CKGR_MOR ((AT91_REG *) 0xFFFFFC20) // (CKGR) Main Oscillator Register // ========== Register definition for PMC peripheral ========== #define AT91C_PMC_SCSR ((AT91_REG *) 0xFFFFFC08) // (PMC) System Clock Status Register #define AT91C_PMC_SCER ((AT91_REG *) 0xFFFFFC00) // (PMC) System Clock Enable Register #define AT91C_PMC_IMR ((AT91_REG *) 0xFFFFFC6C) // (PMC) Interrupt Mask Register #define AT91C_PMC_IDR ((AT91_REG *) 0xFFFFFC64) // (PMC) Interrupt Disable Register #define AT91C_PMC_PCDR ((AT91_REG *) 0xFFFFFC14) // (PMC) Peripheral Clock Disable Register #define AT91C_PMC_SCDR ((AT91_REG *) 0xFFFFFC04) // (PMC) System Clock Disable Register #define AT91C_PMC_SR ((AT91_REG *) 0xFFFFFC68) // (PMC) Status Register #define AT91C_PMC_IER ((AT91_REG *) 0xFFFFFC60) // (PMC) Interrupt Enable Register #define AT91C_PMC_MCKR ((AT91_REG *) 0xFFFFFC30) // (PMC) Master Clock Register #define AT91C_PMC_MOR ((AT91_REG *) 0xFFFFFC20) // (PMC) Main Oscillator Register #define AT91C_PMC_PCER ((AT91_REG *) 0xFFFFFC10) // (PMC) Peripheral Clock Enable Register #define AT91C_PMC_PCSR ((AT91_REG *) 0xFFFFFC18) // (PMC) Peripheral Clock Status Register #define AT91C_PMC_PLLR ((AT91_REG *) 0xFFFFFC2C) // (PMC) PLL Register #define AT91C_PMC_MCFR ((AT91_REG *) 0xFFFFFC24) // (PMC) Main Clock Frequency Register #define AT91C_PMC_PCKR ((AT91_REG *) 0xFFFFFC40) // (PMC) Programmable Clock Register // ========== Register definition for RSTC peripheral ========== #define AT91C_RSTC_RSR ((AT91_REG *) 0xFFFFFD04) // (RSTC) Reset Status Register #define AT91C_RSTC_RMR ((AT91_REG *) 0xFFFFFD08) // (RSTC) Reset Mode Register #define AT91C_RSTC_RCR ((AT91_REG *) 0xFFFFFD00) // (RSTC) Reset Control Register // ========== Register definition for SHDWC peripheral ========== #define AT91C_SHDWC_SHMR ((AT91_REG *) 0xFFFFFD14) // (SHDWC) Shut Down Mode Register #define AT91C_SHDWC_SHSR ((AT91_REG *) 0xFFFFFD18) // (SHDWC) Shut Down Status Register #define AT91C_SHDWC_SHCR ((AT91_REG *) 0xFFFFFD10) // (SHDWC) Shut Down Control Register // ========== Register definition for RTTC peripheral ========== #define AT91C_RTTC_RTSR ((AT91_REG *) 0xFFFFFD2C) // (RTTC) Real-time Status Register #define AT91C_RTTC_RTAR ((AT91_REG *) 0xFFFFFD24) // (RTTC) Real-time Alarm Register #define AT91C_RTTC_RTVR ((AT91_REG *) 0xFFFFFD28) // (RTTC) Real-time Value Register #define AT91C_RTTC_RTMR ((AT91_REG *) 0xFFFFFD20) // (RTTC) Real-time Mode Register // ========== Register definition for PITC peripheral ========== #define AT91C_PITC_PIIR ((AT91_REG *) 0xFFFFFD3C) // (PITC) Period Interval Image Register #define AT91C_PITC_PISR ((AT91_REG *) 0xFFFFFD34) // (PITC) Period Interval Status Register #define AT91C_PITC_PIVR ((AT91_REG *) 0xFFFFFD38) // (PITC) Period Interval Value Register #define AT91C_PITC_PIMR ((AT91_REG *) 0xFFFFFD30) // (PITC) Period Interval Mode Register // ========== Register definition for WDTC peripheral ========== #define AT91C_WDTC_WDMR ((AT91_REG *) 0xFFFFFD44) // (WDTC) Watchdog Mode Register #define AT91C_WDTC_WDSR ((AT91_REG *) 0xFFFFFD48) // (WDTC) Watchdog Status Register #define AT91C_WDTC_WDCR ((AT91_REG *) 0xFFFFFD40) // (WDTC) Watchdog Control Register // ========== Register definition for MC peripheral ========== #define AT91C_MC_FCR ((AT91_REG *) 0xFFFFFF64) // (MC) MC Flash Command Register #define AT91C_MC_PUER ((AT91_REG *) 0xFFFFFF54) // (MC) MC Protection Unit Enable Register #define AT91C_MC_ASR ((AT91_REG *) 0xFFFFFF04) // (MC) MC Abort Status Register #define AT91C_MC_FSR ((AT91_REG *) 0xFFFFFF68) // (MC) MC Flash Status Register #define AT91C_MC_FMR ((AT91_REG *) 0xFFFFFF60) // (MC) MC Flash Mode Register #define AT91C_MC_PUP ((AT91_REG *) 0xFFFFFF50) // (MC) MC Protection Unit Peripherals #define AT91C_MC_PUIA ((AT91_REG *) 0xFFFFFF10) // (MC) MC Protection Unit Area #define AT91C_MC_AASR ((AT91_REG *) 0xFFFFFF08) // (MC) MC Abort Address Status Register #define AT91C_MC_RCR ((AT91_REG *) 0xFFFFFF00) // (MC) MC Remap Control Register // ========== Register definition for CAN0_MB0 peripheral ========== #define AT91C_CAN0_MB0_MDH ((AT91_REG *) 0xFFF80218) // (CAN0_MB0) MailBox Data High Register #define AT91C_CAN0_MB0_MSR ((AT91_REG *) 0xFFF80210) // (CAN0_MB0) MailBox Status Register #define AT91C_CAN0_MB0_MID ((AT91_REG *) 0xFFF80208) // (CAN0_MB0) MailBox ID Register #define AT91C_CAN0_MB0_MMR ((AT91_REG *) 0xFFF80200) // (CAN0_MB0) MailBox Mode Register #define AT91C_CAN0_MB0_MCR ((AT91_REG *) 0xFFF8021C) // (CAN0_MB0) MailBox Control Register #define AT91C_CAN0_MB0_MDL ((AT91_REG *) 0xFFF80214) // (CAN0_MB0) MailBox Data Low Register #define AT91C_CAN0_MB0_MFID ((AT91_REG *) 0xFFF8020C) // (CAN0_MB0) MailBox Family ID Register #define AT91C_CAN0_MB0_MAM ((AT91_REG *) 0xFFF80204) // (CAN0_MB0) MailBox Acceptance Mask Register // ========== Register definition for CAN0_MB1 peripheral ========== #define AT91C_CAN0_MB1_MDH ((AT91_REG *) 0xFFF80238) // (CAN0_MB1) MailBox Data High Register #define AT91C_CAN0_MB1_MSR ((AT91_REG *) 0xFFF80230) // (CAN0_MB1) MailBox Status Register #define AT91C_CAN0_MB1_MID ((AT91_REG *) 0xFFF80228) // (CAN0_MB1) MailBox ID Register #define AT91C_CAN0_MB1_MMR ((AT91_REG *) 0xFFF80220) // (CAN0_MB1) MailBox Mode Register #define AT91C_CAN0_MB1_MCR ((AT91_REG *) 0xFFF8023C) // (CAN0_MB1) MailBox Control Register #define AT91C_CAN0_MB1_MDL ((AT91_REG *) 0xFFF80234) // (CAN0_MB1) MailBox Data Low Register #define AT91C_CAN0_MB1_MFID ((AT91_REG *) 0xFFF8022C) // (CAN0_MB1) MailBox Family ID Register #define AT91C_CAN0_MB1_MAM ((AT91_REG *) 0xFFF80224) // (CAN0_MB1) MailBox Acceptance Mask Register // ========== Register definition for CAN0_MB2 peripheral ========== #define AT91C_CAN0_MB2_MDH ((AT91_REG *) 0xFFF80258) // (CAN0_MB2) MailBox Data High Register #define AT91C_CAN0_MB2_MSR ((AT91_REG *) 0xFFF80250) // (CAN0_MB2) MailBox Status Register #define AT91C_CAN0_MB2_MID ((AT91_REG *) 0xFFF80248) // (CAN0_MB2) MailBox ID Register #define AT91C_CAN0_MB2_MMR ((AT91_REG *) 0xFFF80240) // (CAN0_MB2) MailBox Mode Register #define AT91C_CAN0_MB2_MCR ((AT91_REG *) 0xFFF8025C) // (CAN0_MB2) MailBox Control Register #define AT91C_CAN0_MB2_MDL ((AT91_REG *) 0xFFF80254) // (CAN0_MB2) MailBox Data Low Register #define AT91C_CAN0_MB2_MFID ((AT91_REG *) 0xFFF8024C) // (CAN0_MB2) MailBox Family ID Register #define AT91C_CAN0_MB2_MAM ((AT91_REG *) 0xFFF80244) // (CAN0_MB2) MailBox Acceptance Mask Register // ========== Register definition for CAN0_MB3 peripheral ========== #define AT91C_CAN0_MB3_MDH ((AT91_REG *) 0xFFF80278) // (CAN0_MB3) MailBox Data High Register #define AT91C_CAN0_MB3_MSR ((AT91_REG *) 0xFFF80270) // (CAN0_MB3) MailBox Status Register #define AT91C_CAN0_MB3_MID ((AT91_REG *) 0xFFF80268) // (CAN0_MB3) MailBox ID Register #define AT91C_CAN0_MB3_MMR ((AT91_REG *) 0xFFF80260) // (CAN0_MB3) MailBox Mode Register #define AT91C_CAN0_MB3_MCR ((AT91_REG *) 0xFFF8027C) // (CAN0_MB3) MailBox Control Register #define AT91C_CAN0_MB3_MDL ((AT91_REG *) 0xFFF80274) // (CAN0_MB3) MailBox Data Low Register #define AT91C_CAN0_MB3_MFID ((AT91_REG *) 0xFFF8026C) // (CAN0_MB3) MailBox Family ID Register #define AT91C_CAN0_MB3_MAM ((AT91_REG *) 0xFFF80264) // (CAN0_MB3) MailBox Acceptance Mask Register // ========== Register definition for CAN0_MB4 peripheral ========== #define AT91C_CAN0_MB4_MDH ((AT91_REG *) 0xFFF80298) // (CAN0_MB4) MailBox Data High Register #define AT91C_CAN0_MB4_MSR ((AT91_REG *) 0xFFF80290) // (CAN0_MB4) MailBox Status Register #define AT91C_CAN0_MB4_MID ((AT91_REG *) 0xFFF80288) // (CAN0_MB4) MailBox ID Register #define AT91C_CAN0_MB4_MMR ((AT91_REG *) 0xFFF80280) // (CAN0_MB4) MailBox Mode Register #define AT91C_CAN0_MB4_MCR ((AT91_REG *) 0xFFF8029C) // (CAN0_MB4) MailBox Control Register #define AT91C_CAN0_MB4_MDL ((AT91_REG *) 0xFFF80294) // (CAN0_MB4) MailBox Data Low Register #define AT91C_CAN0_MB4_MFID ((AT91_REG *) 0xFFF8028C) // (CAN0_MB4) MailBox Family ID Register #define AT91C_CAN0_MB4_MAM ((AT91_REG *) 0xFFF80284) // (CAN0_MB4) MailBox Acceptance Mask Register // ========== Register definition for CAN0_MB5 peripheral ========== #define AT91C_CAN0_MB5_MSR ((AT91_REG *) 0xFFF802B0) // (CAN0_MB5) MailBox Status Register #define AT91C_CAN0_MB5_MID ((AT91_REG *) 0xFFF802A8) // (CAN0_MB5) MailBox ID Register #define AT91C_CAN0_MB5_MMR ((AT91_REG *) 0xFFF802A0) // (CAN0_MB5) MailBox Mode Register #define AT91C_CAN0_MB5_MCR ((AT91_REG *) 0xFFF802BC) // (CAN0_MB5) MailBox Control Register #define AT91C_CAN0_MB5_MDL ((AT91_REG *) 0xFFF802B4) // (CAN0_MB5) MailBox Data Low Register #define AT91C_CAN0_MB5_MFID ((AT91_REG *) 0xFFF802AC) // (CAN0_MB5) MailBox Family ID Register #define AT91C_CAN0_MB5_MAM ((AT91_REG *) 0xFFF802A4) // (CAN0_MB5) MailBox Acceptance Mask Register #define AT91C_CAN0_MB5_MDH ((AT91_REG *) 0xFFF802B8) // (CAN0_MB5) MailBox Data High Register // ========== Register definition for CAN0_MB6 peripheral ========== #define AT91C_CAN0_MB6_MCR ((AT91_REG *) 0xFFF802DC) // (CAN0_MB6) MailBox Control Register #define AT91C_CAN0_MB6_MDL ((AT91_REG *) 0xFFF802D4) // (CAN0_MB6) MailBox Data Low Register #define AT91C_CAN0_MB6_MFID ((AT91_REG *) 0xFFF802CC) // (CAN0_MB6) MailBox Family ID Register #define AT91C_CAN0_MB6_MAM ((AT91_REG *) 0xFFF802C4) // (CAN0_MB6) MailBox Acceptance Mask Register #define AT91C_CAN0_MB6_MDH ((AT91_REG *) 0xFFF802D8) // (CAN0_MB6) MailBox Data High Register #define AT91C_CAN0_MB6_MSR ((AT91_REG *) 0xFFF802D0) // (CAN0_MB6) MailBox Status Register #define AT91C_CAN0_MB6_MID ((AT91_REG *) 0xFFF802C8) // (CAN0_MB6) MailBox ID Register #define AT91C_CAN0_MB6_MMR ((AT91_REG *) 0xFFF802C0) // (CAN0_MB6) MailBox Mode Register // ========== Register definition for CAN0_MB7 peripheral ========== #define AT91C_CAN0_MB7_MCR ((AT91_REG *) 0xFFF802FC) // (CAN0_MB7) MailBox Control Register #define AT91C_CAN0_MB7_MDL ((AT91_REG *) 0xFFF802F4) // (CAN0_MB7) MailBox Data Low Register #define AT91C_CAN0_MB7_MFID ((AT91_REG *) 0xFFF802EC) // (CAN0_MB7) MailBox Family ID Register #define AT91C_CAN0_MB7_MAM ((AT91_REG *) 0xFFF802E4) // (CAN0_MB7) MailBox Acceptance Mask Register #define AT91C_CAN0_MB7_MDH ((AT91_REG *) 0xFFF802F8) // (CAN0_MB7) MailBox Data High Register #define AT91C_CAN0_MB7_MSR ((AT91_REG *) 0xFFF802F0) // (CAN0_MB7) MailBox Status Register #define AT91C_CAN0_MB7_MID ((AT91_REG *) 0xFFF802E8) // (CAN0_MB7) MailBox ID Register #define AT91C_CAN0_MB7_MMR ((AT91_REG *) 0xFFF802E0) // (CAN0_MB7) MailBox Mode Register // ========== Register definition for CAN0_MB8 peripheral ========== #define AT91C_CAN0_MB8_MCR ((AT91_REG *) 0xFFF8031C) // (CAN0_MB8) MailBox Control Register #define AT91C_CAN0_MB8_MDL ((AT91_REG *) 0xFFF80314) // (CAN0_MB8) MailBox Data Low Register #define AT91C_CAN0_MB8_MFID ((AT91_REG *) 0xFFF8030C) // (CAN0_MB8) MailBox Family ID Register #define AT91C_CAN0_MB8_MAM ((AT91_REG *) 0xFFF80304) // (CAN0_MB8) MailBox Acceptance Mask Register #define AT91C_CAN0_MB8_MDH ((AT91_REG *) 0xFFF80318) // (CAN0_MB8) MailBox Data High Register #define AT91C_CAN0_MB8_MMR ((AT91_REG *) 0xFFF80300) // (CAN0_MB8) MailBox Mode Register #define AT91C_CAN0_MB8_MID ((AT91_REG *) 0xFFF80308) // (CAN0_MB8) MailBox ID Register #define AT91C_CAN0_MB8_MSR ((AT91_REG *) 0xFFF80310) // (CAN0_MB8) MailBox Status Register // ========== Register definition for CAN0_MB9 peripheral ========== #define AT91C_CAN0_MB9_MCR ((AT91_REG *) 0xFFF8033C) // (CAN0_MB9) MailBox Control Register #define AT91C_CAN0_MB9_MDL ((AT91_REG *) 0xFFF80334) // (CAN0_MB9) MailBox Data Low Register #define AT91C_CAN0_MB9_MFID ((AT91_REG *) 0xFFF8032C) // (CAN0_MB9) MailBox Family ID Register #define AT91C_CAN0_MB9_MAM ((AT91_REG *) 0xFFF80324) // (CAN0_MB9) MailBox Acceptance Mask Register #define AT91C_CAN0_MB9_MDH ((AT91_REG *) 0xFFF80338) // (CAN0_MB9) MailBox Data High Register #define AT91C_CAN0_MB9_MSR ((AT91_REG *) 0xFFF80330) // (CAN0_MB9) MailBox Status Register #define AT91C_CAN0_MB9_MID ((AT91_REG *) 0xFFF80328) // (CAN0_MB9) MailBox ID Register #define AT91C_CAN0_MB9_MMR ((AT91_REG *) 0xFFF80320) // (CAN0_MB9) MailBox Mode Register // ========== Register definition for CAN0_MB10 peripheral ========== #define AT91C_CAN0_MB10_MCR ((AT91_REG *) 0xFFF8035C) // (CAN0_MB10) MailBox Control Register #define AT91C_CAN0_MB10_MDL ((AT91_REG *) 0xFFF80354) // (CAN0_MB10) MailBox Data Low Register #define AT91C_CAN0_MB10_MFID ((AT91_REG *) 0xFFF8034C) // (CAN0_MB10) MailBox Family ID Register #define AT91C_CAN0_MB10_MAM ((AT91_REG *) 0xFFF80344) // (CAN0_MB10) MailBox Acceptance Mask Register #define AT91C_CAN0_MB10_MDH ((AT91_REG *) 0xFFF80358) // (CAN0_MB10) MailBox Data High Register #define AT91C_CAN0_MB10_MSR ((AT91_REG *) 0xFFF80350) // (CAN0_MB10) MailBox Status Register #define AT91C_CAN0_MB10_MID ((AT91_REG *) 0xFFF80348) // (CAN0_MB10) MailBox ID Register #define AT91C_CAN0_MB10_MMR ((AT91_REG *) 0xFFF80340) // (CAN0_MB10) MailBox Mode Register // ========== Register definition for CAN0_MB11 peripheral ========== #define AT91C_CAN0_MB11_MCR ((AT91_REG *) 0xFFF8037C) // (CAN0_MB11) MailBox Control Register #define AT91C_CAN0_MB11_MDL ((AT91_REG *) 0xFFF80374) // (CAN0_MB11) MailBox Data Low Register #define AT91C_CAN0_MB11_MFID ((AT91_REG *) 0xFFF8036C) // (CAN0_MB11) MailBox Family ID Register #define AT91C_CAN0_MB11_MAM ((AT91_REG *) 0xFFF80364) // (CAN0_MB11) MailBox Acceptance Mask Register #define AT91C_CAN0_MB11_MDH ((AT91_REG *) 0xFFF80378) // (CAN0_MB11) MailBox Data High Register #define AT91C_CAN0_MB11_MSR ((AT91_REG *) 0xFFF80370) // (CAN0_MB11) MailBox Status Register #define AT91C_CAN0_MB11_MMR ((AT91_REG *) 0xFFF80360) // (CAN0_MB11) MailBox Mode Register #define AT91C_CAN0_MB11_MID ((AT91_REG *) 0xFFF80368) // (CAN0_MB11) MailBox ID Register // ========== Register definition for CAN0_MB12 peripheral ========== #define AT91C_CAN0_MB12_MCR ((AT91_REG *) 0xFFF8039C) // (CAN0_MB12) MailBox Control Register #define AT91C_CAN0_MB12_MDL ((AT91_REG *) 0xFFF80394) // (CAN0_MB12) MailBox Data Low Register #define AT91C_CAN0_MB12_MFID ((AT91_REG *) 0xFFF8038C) // (CAN0_MB12) MailBox Family ID Register #define AT91C_CAN0_MB12_MAM ((AT91_REG *) 0xFFF80384) // (CAN0_MB12) MailBox Acceptance Mask Register #define AT91C_CAN0_MB12_MDH ((AT91_REG *) 0xFFF80398) // (CAN0_MB12) MailBox Data High Register #define AT91C_CAN0_MB12_MSR ((AT91_REG *) 0xFFF80390) // (CAN0_MB12) MailBox Status Register #define AT91C_CAN0_MB12_MID ((AT91_REG *) 0xFFF80388) // (CAN0_MB12) MailBox ID Register #define AT91C_CAN0_MB12_MMR ((AT91_REG *) 0xFFF80380) // (CAN0_MB12) MailBox Mode Register // ========== Register definition for CAN0_MB13 peripheral ========== #define AT91C_CAN0_MB13_MCR ((AT91_REG *) 0xFFF803BC) // (CAN0_MB13) MailBox Control Register #define AT91C_CAN0_MB13_MDL ((AT91_REG *) 0xFFF803B4) // (CAN0_MB13) MailBox Data Low Register #define AT91C_CAN0_MB13_MFID ((AT91_REG *) 0xFFF803AC) // (CAN0_MB13) MailBox Family ID Register #define AT91C_CAN0_MB13_MAM ((AT91_REG *) 0xFFF803A4) // (CAN0_MB13) MailBox Acceptance Mask Register #define AT91C_CAN0_MB13_MDH ((AT91_REG *) 0xFFF803B8) // (CAN0_MB13) MailBox Data High Register #define AT91C_CAN0_MB13_MSR ((AT91_REG *) 0xFFF803B0) // (CAN0_MB13) MailBox Status Register #define AT91C_CAN0_MB13_MID ((AT91_REG *) 0xFFF803A8) // (CAN0_MB13) MailBox ID Register #define AT91C_CAN0_MB13_MMR ((AT91_REG *) 0xFFF803A0) // (CAN0_MB13) MailBox Mode Register // ========== Register definition for CAN0_MB14 peripheral ========== #define AT91C_CAN0_MB14_MCR ((AT91_REG *) 0xFFF803DC) // (CAN0_MB14) MailBox Control Register #define AT91C_CAN0_MB14_MDL ((AT91_REG *) 0xFFF803D4) // (CAN0_MB14) MailBox Data Low Register #define AT91C_CAN0_MB14_MFID ((AT91_REG *) 0xFFF803CC) // (CAN0_MB14) MailBox Family ID Register #define AT91C_CAN0_MB14_MAM ((AT91_REG *) 0xFFF803C4) // (CAN0_MB14) MailBox Acceptance Mask Register #define AT91C_CAN0_MB14_MDH ((AT91_REG *) 0xFFF803D8) // (CAN0_MB14) MailBox Data High Register #define AT91C_CAN0_MB14_MSR ((AT91_REG *) 0xFFF803D0) // (CAN0_MB14) MailBox Status Register #define AT91C_CAN0_MB14_MID ((AT91_REG *) 0xFFF803C8) // (CAN0_MB14) MailBox ID Register #define AT91C_CAN0_MB14_MMR ((AT91_REG *) 0xFFF803C0) // (CAN0_MB14) MailBox Mode Register // ========== Register definition for CAN0_MB15 peripheral ========== #define AT91C_CAN0_MB15_MMR ((AT91_REG *) 0xFFF803E0) // (CAN0_MB15) MailBox Mode Register #define AT91C_CAN0_MB15_MDH ((AT91_REG *) 0xFFF803F8) // (CAN0_MB15) MailBox Data High Register #define AT91C_CAN0_MB15_MSR ((AT91_REG *) 0xFFF803F0) // (CAN0_MB15) MailBox Status Register #define AT91C_CAN0_MB15_MID ((AT91_REG *) 0xFFF803E8) // (CAN0_MB15) MailBox ID Register #define AT91C_CAN0_MB15_MCR ((AT91_REG *) 0xFFF803FC) // (CAN0_MB15) MailBox Control Register #define AT91C_CAN0_MB15_MDL ((AT91_REG *) 0xFFF803F4) // (CAN0_MB15) MailBox Data Low Register #define AT91C_CAN0_MB15_MFID ((AT91_REG *) 0xFFF803EC) // (CAN0_MB15) MailBox Family ID Register #define AT91C_CAN0_MB15_MAM ((AT91_REG *) 0xFFF803E4) // (CAN0_MB15) MailBox Acceptance Mask Register // ========== Register definition for CAN0 peripheral ========== #define AT91C_CAN0_TCR ((AT91_REG *) 0xFFF80024) // (CAN0) Transfer Command Register #define AT91C_CAN0_TIMESTP ((AT91_REG *) 0xFFF8001C) // (CAN0) Time Stamp Register #define AT91C_CAN0_BR ((AT91_REG *) 0xFFF80014) // (CAN0) Baudrate Register #define AT91C_CAN0_ACR ((AT91_REG *) 0xFFF80028) // (CAN0) Abort Command Register #define AT91C_CAN0_VR ((AT91_REG *) 0xFFF800FC) // (CAN0) Version Register #define AT91C_CAN0_IER ((AT91_REG *) 0xFFF80004) // (CAN0) Interrupt Enable Register #define AT91C_CAN0_IMR ((AT91_REG *) 0xFFF8000C) // (CAN0) Interrupt Mask Register #define AT91C_CAN0_MR ((AT91_REG *) 0xFFF80000) // (CAN0) Mode Register #define AT91C_CAN0_IDR ((AT91_REG *) 0xFFF80008) // (CAN0) Interrupt Disable Register #define AT91C_CAN0_SR ((AT91_REG *) 0xFFF80010) // (CAN0) Status Register #define AT91C_CAN0_TIM ((AT91_REG *) 0xFFF80018) // (CAN0) Timer Register #define AT91C_CAN0_ECR ((AT91_REG *) 0xFFF80020) // (CAN0) Error Counter Register // ========== Register definition for CAN1_MB0 peripheral ========== #define AT91C_CAN1_MB0_MDH ((AT91_REG *) 0xFFF84218) // (CAN1_MB0) MailBox Data High Register #define AT91C_CAN1_MB0_MSR ((AT91_REG *) 0xFFF84210) // (CAN1_MB0) MailBox Status Register #define AT91C_CAN1_MB0_MID ((AT91_REG *) 0xFFF84208) // (CAN1_MB0) MailBox ID Register #define AT91C_CAN1_MB0_MMR ((AT91_REG *) 0xFFF84200) // (CAN1_MB0) MailBox Mode Register #define AT91C_CAN1_MB0_MCR ((AT91_REG *) 0xFFF8421C) // (CAN1_MB0) MailBox Control Register #define AT91C_CAN1_MB0_MDL ((AT91_REG *) 0xFFF84214) // (CAN1_MB0) MailBox Data Low Register #define AT91C_CAN1_MB0_MFID ((AT91_REG *) 0xFFF8420C) // (CAN1_MB0) MailBox Family ID Register #define AT91C_CAN1_MB0_MAM ((AT91_REG *) 0xFFF84204) // (CAN1_MB0) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB1 peripheral ========== #define AT91C_CAN1_MB1_MDH ((AT91_REG *) 0xFFF84238) // (CAN1_MB1) MailBox Data High Register #define AT91C_CAN1_MB1_MSR ((AT91_REG *) 0xFFF84230) // (CAN1_MB1) MailBox Status Register #define AT91C_CAN1_MB1_MID ((AT91_REG *) 0xFFF84228) // (CAN1_MB1) MailBox ID Register #define AT91C_CAN1_MB1_MMR ((AT91_REG *) 0xFFF84220) // (CAN1_MB1) MailBox Mode Register #define AT91C_CAN1_MB1_MCR ((AT91_REG *) 0xFFF8423C) // (CAN1_MB1) MailBox Control Register #define AT91C_CAN1_MB1_MDL ((AT91_REG *) 0xFFF84234) // (CAN1_MB1) MailBox Data Low Register #define AT91C_CAN1_MB1_MFID ((AT91_REG *) 0xFFF8422C) // (CAN1_MB1) MailBox Family ID Register #define AT91C_CAN1_MB1_MAM ((AT91_REG *) 0xFFF84224) // (CAN1_MB1) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB2 peripheral ========== #define AT91C_CAN1_MB2_MDH ((AT91_REG *) 0xFFF84258) // (CAN1_MB2) MailBox Data High Register #define AT91C_CAN1_MB2_MSR ((AT91_REG *) 0xFFF84250) // (CAN1_MB2) MailBox Status Register #define AT91C_CAN1_MB2_MID ((AT91_REG *) 0xFFF84248) // (CAN1_MB2) MailBox ID Register #define AT91C_CAN1_MB2_MMR ((AT91_REG *) 0xFFF84240) // (CAN1_MB2) MailBox Mode Register #define AT91C_CAN1_MB2_MCR ((AT91_REG *) 0xFFF8425C) // (CAN1_MB2) MailBox Control Register #define AT91C_CAN1_MB2_MDL ((AT91_REG *) 0xFFF84254) // (CAN1_MB2) MailBox Data Low Register #define AT91C_CAN1_MB2_MFID ((AT91_REG *) 0xFFF8424C) // (CAN1_MB2) MailBox Family ID Register #define AT91C_CAN1_MB2_MAM ((AT91_REG *) 0xFFF84244) // (CAN1_MB2) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB3 peripheral ========== #define AT91C_CAN1_MB3_MCR ((AT91_REG *) 0xFFF8427C) // (CAN1_MB3) MailBox Control Register #define AT91C_CAN1_MB3_MFID ((AT91_REG *) 0xFFF8426C) // (CAN1_MB3) MailBox Family ID Register #define AT91C_CAN1_MB3_MAM ((AT91_REG *) 0xFFF84264) // (CAN1_MB3) MailBox Acceptance Mask Register #define AT91C_CAN1_MB3_MMR ((AT91_REG *) 0xFFF84260) // (CAN1_MB3) MailBox Mode Register #define AT91C_CAN1_MB3_MDH ((AT91_REG *) 0xFFF84278) // (CAN1_MB3) MailBox Data High Register #define AT91C_CAN1_MB3_MSR ((AT91_REG *) 0xFFF84270) // (CAN1_MB3) MailBox Status Register #define AT91C_CAN1_MB3_MID ((AT91_REG *) 0xFFF84268) // (CAN1_MB3) MailBox ID Register #define AT91C_CAN1_MB3_MDL ((AT91_REG *) 0xFFF84274) // (CAN1_MB3) MailBox Data Low Register // ========== Register definition for CAN1_MB4 peripheral ========== #define AT91C_CAN1_MB4_MCR ((AT91_REG *) 0xFFF8429C) // (CAN1_MB4) MailBox Control Register #define AT91C_CAN1_MB4_MDL ((AT91_REG *) 0xFFF84294) // (CAN1_MB4) MailBox Data Low Register #define AT91C_CAN1_MB4_MFID ((AT91_REG *) 0xFFF8428C) // (CAN1_MB4) MailBox Family ID Register #define AT91C_CAN1_MB4_MAM ((AT91_REG *) 0xFFF84284) // (CAN1_MB4) MailBox Acceptance Mask Register #define AT91C_CAN1_MB4_MDH ((AT91_REG *) 0xFFF84298) // (CAN1_MB4) MailBox Data High Register #define AT91C_CAN1_MB4_MSR ((AT91_REG *) 0xFFF84290) // (CAN1_MB4) MailBox Status Register #define AT91C_CAN1_MB4_MID ((AT91_REG *) 0xFFF84288) // (CAN1_MB4) MailBox ID Register #define AT91C_CAN1_MB4_MMR ((AT91_REG *) 0xFFF84280) // (CAN1_MB4) MailBox Mode Register // ========== Register definition for CAN1_MB5 peripheral ========== #define AT91C_CAN1_MB5_MCR ((AT91_REG *) 0xFFF842BC) // (CAN1_MB5) MailBox Control Register #define AT91C_CAN1_MB5_MDL ((AT91_REG *) 0xFFF842B4) // (CAN1_MB5) MailBox Data Low Register #define AT91C_CAN1_MB5_MFID ((AT91_REG *) 0xFFF842AC) // (CAN1_MB5) MailBox Family ID Register #define AT91C_CAN1_MB5_MAM ((AT91_REG *) 0xFFF842A4) // (CAN1_MB5) MailBox Acceptance Mask Register #define AT91C_CAN1_MB5_MDH ((AT91_REG *) 0xFFF842B8) // (CAN1_MB5) MailBox Data High Register #define AT91C_CAN1_MB5_MSR ((AT91_REG *) 0xFFF842B0) // (CAN1_MB5) MailBox Status Register #define AT91C_CAN1_MB5_MID ((AT91_REG *) 0xFFF842A8) // (CAN1_MB5) MailBox ID Register #define AT91C_CAN1_MB5_MMR ((AT91_REG *) 0xFFF842A0) // (CAN1_MB5) MailBox Mode Register // ========== Register definition for CAN1_MB6 peripheral ========== #define AT91C_CAN1_MB6_MDH ((AT91_REG *) 0xFFF842D8) // (CAN1_MB6) MailBox Data High Register #define AT91C_CAN1_MB6_MSR ((AT91_REG *) 0xFFF842D0) // (CAN1_MB6) MailBox Status Register #define AT91C_CAN1_MB6_MID ((AT91_REG *) 0xFFF842C8) // (CAN1_MB6) MailBox ID Register #define AT91C_CAN1_MB6_MMR ((AT91_REG *) 0xFFF842C0) // (CAN1_MB6) MailBox Mode Register #define AT91C_CAN1_MB6_MAM ((AT91_REG *) 0xFFF842C4) // (CAN1_MB6) MailBox Acceptance Mask Register #define AT91C_CAN1_MB6_MCR ((AT91_REG *) 0xFFF842DC) // (CAN1_MB6) MailBox Control Register #define AT91C_CAN1_MB6_MDL ((AT91_REG *) 0xFFF842D4) // (CAN1_MB6) MailBox Data Low Register #define AT91C_CAN1_MB6_MFID ((AT91_REG *) 0xFFF842CC) // (CAN1_MB6) MailBox Family ID Register // ========== Register definition for CAN1_MB7 peripheral ========== #define AT91C_CAN1_MB7_MDH ((AT91_REG *) 0xFFF842F8) // (CAN1_MB7) MailBox Data High Register #define AT91C_CAN1_MB7_MSR ((AT91_REG *) 0xFFF842F0) // (CAN1_MB7) MailBox Status Register #define AT91C_CAN1_MB7_MID ((AT91_REG *) 0xFFF842E8) // (CAN1_MB7) MailBox ID Register #define AT91C_CAN1_MB7_MMR ((AT91_REG *) 0xFFF842E0) // (CAN1_MB7) MailBox Mode Register #define AT91C_CAN1_MB7_MCR ((AT91_REG *) 0xFFF842FC) // (CAN1_MB7) MailBox Control Register #define AT91C_CAN1_MB7_MDL ((AT91_REG *) 0xFFF842F4) // (CAN1_MB7) MailBox Data Low Register #define AT91C_CAN1_MB7_MFID ((AT91_REG *) 0xFFF842EC) // (CAN1_MB7) MailBox Family ID Register #define AT91C_CAN1_MB7_MAM ((AT91_REG *) 0xFFF842E4) // (CAN1_MB7) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB8 peripheral ========== #define AT91C_CAN1_MB8_MDH ((AT91_REG *) 0xFFF84318) // (CAN1_MB8) MailBox Data High Register #define AT91C_CAN1_MB8_MSR ((AT91_REG *) 0xFFF84310) // (CAN1_MB8) MailBox Status Register #define AT91C_CAN1_MB8_MID ((AT91_REG *) 0xFFF84308) // (CAN1_MB8) MailBox ID Register #define AT91C_CAN1_MB8_MMR ((AT91_REG *) 0xFFF84300) // (CAN1_MB8) MailBox Mode Register #define AT91C_CAN1_MB8_MCR ((AT91_REG *) 0xFFF8431C) // (CAN1_MB8) MailBox Control Register #define AT91C_CAN1_MB8_MDL ((AT91_REG *) 0xFFF84314) // (CAN1_MB8) MailBox Data Low Register #define AT91C_CAN1_MB8_MFID ((AT91_REG *) 0xFFF8430C) // (CAN1_MB8) MailBox Family ID Register #define AT91C_CAN1_MB8_MAM ((AT91_REG *) 0xFFF84304) // (CAN1_MB8) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB9 peripheral ========== #define AT91C_CAN1_MB9_MID ((AT91_REG *) 0xFFF84328) // (CAN1_MB9) MailBox ID Register #define AT91C_CAN1_MB9_MDH ((AT91_REG *) 0xFFF84338) // (CAN1_MB9) MailBox Data High Register #define AT91C_CAN1_MB9_MSR ((AT91_REG *) 0xFFF84330) // (CAN1_MB9) MailBox Status Register #define AT91C_CAN1_MB9_MMR ((AT91_REG *) 0xFFF84320) // (CAN1_MB9) MailBox Mode Register #define AT91C_CAN1_MB9_MCR ((AT91_REG *) 0xFFF8433C) // (CAN1_MB9) MailBox Control Register #define AT91C_CAN1_MB9_MDL ((AT91_REG *) 0xFFF84334) // (CAN1_MB9) MailBox Data Low Register #define AT91C_CAN1_MB9_MFID ((AT91_REG *) 0xFFF8432C) // (CAN1_MB9) MailBox Family ID Register #define AT91C_CAN1_MB9_MAM ((AT91_REG *) 0xFFF84324) // (CAN1_MB9) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB10 peripheral ========== #define AT91C_CAN1_MB10_MDH ((AT91_REG *) 0xFFF84358) // (CAN1_MB10) MailBox Data High Register #define AT91C_CAN1_MB10_MSR ((AT91_REG *) 0xFFF84350) // (CAN1_MB10) MailBox Status Register #define AT91C_CAN1_MB10_MID ((AT91_REG *) 0xFFF84348) // (CAN1_MB10) MailBox ID Register #define AT91C_CAN1_MB10_MMR ((AT91_REG *) 0xFFF84340) // (CAN1_MB10) MailBox Mode Register #define AT91C_CAN1_MB10_MCR ((AT91_REG *) 0xFFF8435C) // (CAN1_MB10) MailBox Control Register #define AT91C_CAN1_MB10_MDL ((AT91_REG *) 0xFFF84354) // (CAN1_MB10) MailBox Data Low Register #define AT91C_CAN1_MB10_MFID ((AT91_REG *) 0xFFF8434C) // (CAN1_MB10) MailBox Family ID Register #define AT91C_CAN1_MB10_MAM ((AT91_REG *) 0xFFF84344) // (CAN1_MB10) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB11 peripheral ========== #define AT91C_CAN1_MB11_MDH ((AT91_REG *) 0xFFF84378) // (CAN1_MB11) MailBox Data High Register #define AT91C_CAN1_MB11_MSR ((AT91_REG *) 0xFFF84370) // (CAN1_MB11) MailBox Status Register #define AT91C_CAN1_MB11_MID ((AT91_REG *) 0xFFF84368) // (CAN1_MB11) MailBox ID Register #define AT91C_CAN1_MB11_MMR ((AT91_REG *) 0xFFF84360) // (CAN1_MB11) MailBox Mode Register #define AT91C_CAN1_MB11_MCR ((AT91_REG *) 0xFFF8437C) // (CAN1_MB11) MailBox Control Register #define AT91C_CAN1_MB11_MDL ((AT91_REG *) 0xFFF84374) // (CAN1_MB11) MailBox Data Low Register #define AT91C_CAN1_MB11_MFID ((AT91_REG *) 0xFFF8436C) // (CAN1_MB11) MailBox Family ID Register #define AT91C_CAN1_MB11_MAM ((AT91_REG *) 0xFFF84364) // (CAN1_MB11) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB12 peripheral ========== #define AT91C_CAN1_MB12_MDH ((AT91_REG *) 0xFFF84398) // (CAN1_MB12) MailBox Data High Register #define AT91C_CAN1_MB12_MSR ((AT91_REG *) 0xFFF84390) // (CAN1_MB12) MailBox Status Register #define AT91C_CAN1_MB12_MID ((AT91_REG *) 0xFFF84388) // (CAN1_MB12) MailBox ID Register #define AT91C_CAN1_MB12_MMR ((AT91_REG *) 0xFFF84380) // (CAN1_MB12) MailBox Mode Register #define AT91C_CAN1_MB12_MCR ((AT91_REG *) 0xFFF8439C) // (CAN1_MB12) MailBox Control Register #define AT91C_CAN1_MB12_MDL ((AT91_REG *) 0xFFF84394) // (CAN1_MB12) MailBox Data Low Register #define AT91C_CAN1_MB12_MFID ((AT91_REG *) 0xFFF8438C) // (CAN1_MB12) MailBox Family ID Register #define AT91C_CAN1_MB12_MAM ((AT91_REG *) 0xFFF84384) // (CAN1_MB12) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB13 peripheral ========== #define AT91C_CAN1_MB13_MDH ((AT91_REG *) 0xFFF843B8) // (CAN1_MB13) MailBox Data High Register #define AT91C_CAN1_MB13_MSR ((AT91_REG *) 0xFFF843B0) // (CAN1_MB13) MailBox Status Register #define AT91C_CAN1_MB13_MID ((AT91_REG *) 0xFFF843A8) // (CAN1_MB13) MailBox ID Register #define AT91C_CAN1_MB13_MMR ((AT91_REG *) 0xFFF843A0) // (CAN1_MB13) MailBox Mode Register #define AT91C_CAN1_MB13_MCR ((AT91_REG *) 0xFFF843BC) // (CAN1_MB13) MailBox Control Register #define AT91C_CAN1_MB13_MDL ((AT91_REG *) 0xFFF843B4) // (CAN1_MB13) MailBox Data Low Register #define AT91C_CAN1_MB13_MFID ((AT91_REG *) 0xFFF843AC) // (CAN1_MB13) MailBox Family ID Register #define AT91C_CAN1_MB13_MAM ((AT91_REG *) 0xFFF843A4) // (CAN1_MB13) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB14 peripheral ========== #define AT91C_CAN1_MB14_MDH ((AT91_REG *) 0xFFF843D8) // (CAN1_MB14) MailBox Data High Register #define AT91C_CAN1_MB14_MSR ((AT91_REG *) 0xFFF843D0) // (CAN1_MB14) MailBox Status Register #define AT91C_CAN1_MB14_MID ((AT91_REG *) 0xFFF843C8) // (CAN1_MB14) MailBox ID Register #define AT91C_CAN1_MB14_MMR ((AT91_REG *) 0xFFF843C0) // (CAN1_MB14) MailBox Mode Register #define AT91C_CAN1_MB14_MCR ((AT91_REG *) 0xFFF843DC) // (CAN1_MB14) MailBox Control Register #define AT91C_CAN1_MB14_MDL ((AT91_REG *) 0xFFF843D4) // (CAN1_MB14) MailBox Data Low Register #define AT91C_CAN1_MB14_MFID ((AT91_REG *) 0xFFF843CC) // (CAN1_MB14) MailBox Family ID Register #define AT91C_CAN1_MB14_MAM ((AT91_REG *) 0xFFF843C4) // (CAN1_MB14) MailBox Acceptance Mask Register // ========== Register definition for CAN1_MB15 peripheral ========== #define AT91C_CAN1_MB15_MDH ((AT91_REG *) 0xFFF843F8) // (CAN1_MB15) MailBox Data High Register #define AT91C_CAN1_MB15_MSR ((AT91_REG *) 0xFFF843F0) // (CAN1_MB15) MailBox Status Register #define AT91C_CAN1_MB15_MID ((AT91_REG *) 0xFFF843E8) // (CAN1_MB15) MailBox ID Register #define AT91C_CAN1_MB15_MMR ((AT91_REG *) 0xFFF843E0) // (CAN1_MB15) MailBox Mode Register #define AT91C_CAN1_MB15_MCR ((AT91_REG *) 0xFFF843FC) // (CAN1_MB15) MailBox Control Register #define AT91C_CAN1_MB15_MDL ((AT91_REG *) 0xFFF843F4) // (CAN1_MB15) MailBox Data Low Register #define AT91C_CAN1_MB15_MFID ((AT91_REG *) 0xFFF843EC) // (CAN1_MB15) MailBox Family ID Register #define AT91C_CAN1_MB15_MAM ((AT91_REG *) 0xFFF843E4) // (CAN1_MB15) MailBox Acceptance Mask Register // ========== Register definition for CAN1 peripheral ========== #define AT91C_CAN1_MR ((AT91_REG *) 0xFFF84000) // (CAN1) Mode Register #define AT91C_CAN1_VR ((AT91_REG *) 0xFFF840FC) // (CAN1) Version Register #define AT91C_CAN1_TIMESTP ((AT91_REG *) 0xFFF8401C) // (CAN1) Time Stamp Register #define AT91C_CAN1_BR ((AT91_REG *) 0xFFF84014) // (CAN1) Baudrate Register #define AT91C_CAN1_IMR ((AT91_REG *) 0xFFF8400C) // (CAN1) Interrupt Mask Register #define AT91C_CAN1_IER ((AT91_REG *) 0xFFF84004) // (CAN1) Interrupt Enable Register #define AT91C_CAN1_ACR ((AT91_REG *) 0xFFF84028) // (CAN1) Abort Command Register #define AT91C_CAN1_ECR ((AT91_REG *) 0xFFF84020) // (CAN1) Error Counter Register #define AT91C_CAN1_TIM ((AT91_REG *) 0xFFF84018) // (CAN1) Timer Register #define AT91C_CAN1_SR ((AT91_REG *) 0xFFF84010) // (CAN1) Status Register #define AT91C_CAN1_TCR ((AT91_REG *) 0xFFF84024) // (CAN1) Transfer Command Register #define AT91C_CAN1_IDR ((AT91_REG *) 0xFFF84008) // (CAN1) Interrupt Disable Register // ========== Register definition for TC0 peripheral ========== #define AT91C_TC0_IMR ((AT91_REG *) 0xFFFA002C) // (TC0) Interrupt Mask Register #define AT91C_TC0_IER ((AT91_REG *) 0xFFFA0024) // (TC0) Interrupt Enable Register #define AT91C_TC0_RC ((AT91_REG *) 0xFFFA001C) // (TC0) Register C #define AT91C_TC0_RA ((AT91_REG *) 0xFFFA0014) // (TC0) Register A #define AT91C_TC0_CMR ((AT91_REG *) 0xFFFA0004) // (TC0) Channel Mode Register (Capture Mode / Waveform Mode) #define AT91C_TC0_IDR ((AT91_REG *) 0xFFFA0028) // (TC0) Interrupt Disable Register #define AT91C_TC0_SR ((AT91_REG *) 0xFFFA0020) // (TC0) Status Register #define AT91C_TC0_RB ((AT91_REG *) 0xFFFA0018) // (TC0) Register B #define AT91C_TC0_CV ((AT91_REG *) 0xFFFA0010) // (TC0) Counter Value #define AT91C_TC0_CCR ((AT91_REG *) 0xFFFA0000) // (TC0) Channel Control Register // ========== Register definition for TC1 peripheral ========== #define AT91C_TC1_IMR ((AT91_REG *) 0xFFFA006C) // (TC1) Interrupt Mask Register #define AT91C_TC1_IER ((AT91_REG *) 0xFFFA0064) // (TC1) Interrupt Enable Register #define AT91C_TC1_RC ((AT91_REG *) 0xFFFA005C) // (TC1) Register C #define AT91C_TC1_RA ((AT91_REG *) 0xFFFA0054) // (TC1) Register A #define AT91C_TC1_CMR ((AT91_REG *) 0xFFFA0044) // (TC1) Channel Mode Register (Capture Mode / Waveform Mode) #define AT91C_TC1_IDR ((AT91_REG *) 0xFFFA0068) // (TC1) Interrupt Disable Register #define AT91C_TC1_SR ((AT91_REG *) 0xFFFA0060) // (TC1) Status Register #define AT91C_TC1_RB ((AT91_REG *) 0xFFFA0058) // (TC1) Register B #define AT91C_TC1_CV ((AT91_REG *) 0xFFFA0050) // (TC1) Counter Value #define AT91C_TC1_CCR ((AT91_REG *) 0xFFFA0040) // (TC1) Channel Control Register // ========== Register definition for TC2 peripheral ========== #define AT91C_TC2_IMR ((AT91_REG *) 0xFFFA00AC) // (TC2) Interrupt Mask Register #define AT91C_TC2_IER ((AT91_REG *) 0xFFFA00A4) // (TC2) Interrupt Enable Register #define AT91C_TC2_RC ((AT91_REG *) 0xFFFA009C) // (TC2) Register C #define AT91C_TC2_RA ((AT91_REG *) 0xFFFA0094) // (TC2) Register A #define AT91C_TC2_CMR ((AT91_REG *) 0xFFFA0084) // (TC2) Channel Mode Register (Capture Mode / Waveform Mode) #define AT91C_TC2_IDR ((AT91_REG *) 0xFFFA00A8) // (TC2) Interrupt Disable Register #define AT91C_TC2_SR ((AT91_REG *) 0xFFFA00A0) // (TC2) Status Register #define AT91C_TC2_RB ((AT91_REG *) 0xFFFA0098) // (TC2) Register B #define AT91C_TC2_CV ((AT91_REG *) 0xFFFA0090) // (TC2) Counter Value #define AT91C_TC2_CCR ((AT91_REG *) 0xFFFA0080) // (TC2) Channel Control Register // ========== Register definition for TCB0 peripheral ========== #define AT91C_TCB0_BMR ((AT91_REG *) 0xFFFA00C4) // (TCB0) TC Block Mode Register #define AT91C_TCB0_BCR ((AT91_REG *) 0xFFFA00C0) // (TCB0) TC Block Control Register // ========== Register definition for TC3 peripheral ========== #define AT91C_TC3_IMR ((AT91_REG *) 0xFFFA402C) // (TC3) Interrupt Mask Register #define AT91C_TC3_CV ((AT91_REG *) 0xFFFA4010) // (TC3) Counter Value #define AT91C_TC3_CCR ((AT91_REG *) 0xFFFA4000) // (TC3) Channel Control Register #define AT91C_TC3_IER ((AT91_REG *) 0xFFFA4024) // (TC3) Interrupt Enable Register #define AT91C_TC3_CMR ((AT91_REG *) 0xFFFA4004) // (TC3) Channel Mode Register (Capture Mode / Waveform Mode) #define AT91C_TC3_RA ((AT91_REG *) 0xFFFA4014) // (TC3) Register A #define AT91C_TC3_RC ((AT91_REG *) 0xFFFA401C) // (TC3) Register C #define AT91C_TC3_IDR ((AT91_REG *) 0xFFFA4028) // (TC3) Interrupt Disable Register #define AT91C_TC3_RB ((AT91_REG *) 0xFFFA4018) // (TC3) Register B #define AT91C_TC3_SR ((AT91_REG *) 0xFFFA4020) // (TC3) Status Register // ========== Register definition for TC4 peripheral ========== #define AT91C_TC4_IMR ((AT91_REG *) 0xFFFA406C) // (TC4) Interrupt Mask Register #define AT91C_TC4_IER ((AT91_REG *) 0xFFFA4064) // (TC4) Interrupt Enable Register #define AT91C_TC4_RC ((AT91_REG *) 0xFFFA405C) // (TC4) Register C #define AT91C_TC4_RA ((AT91_REG *) 0xFFFA4054) // (TC4) Register A #define AT91C_TC4_CMR ((AT91_REG *) 0xFFFA4044) // (TC4) Channel Mode Register (Capture Mode / Waveform Mode) #define AT91C_TC4_IDR ((AT91_REG *) 0xFFFA4068) // (TC4) Interrupt Disable Register #define AT91C_TC4_SR ((AT91_REG *) 0xFFFA4060) // (TC4) Status Register #define AT91C_TC4_RB ((AT91_REG *) 0xFFFA4058) // (TC4) Register B #define AT91C_TC4_CV ((AT91_REG *) 0xFFFA4050) // (TC4) Counter Value #define AT91C_TC4_CCR ((AT91_REG *) 0xFFFA4040) // (TC4) Channel Control Register // ========== Register definition for TC5 peripheral ========== #define AT91C_TC5_CMR ((AT91_REG *) 0xFFFA4084) // (TC5) Channel Mode Register (Capture Mode / Waveform Mode) #define AT91C_TC5_IDR ((AT91_REG *) 0xFFFA40A8) // (TC5) Interrupt Disable Register #define AT91C_TC5_SR ((AT91_REG *) 0xFFFA40A0) // (TC5) Status Register #define AT91C_TC5_RB ((AT91_REG *) 0xFFFA4098) // (TC5) Register B #define AT91C_TC5_CV ((AT91_REG *) 0xFFFA4090) // (TC5) Counter Value #define AT91C_TC5_CCR ((AT91_REG *) 0xFFFA4080) // (TC5) Channel Control Register #define AT91C_TC5_IMR ((AT91_REG *) 0xFFFA40AC) // (TC5) Interrupt Mask Register #define AT91C_TC5_IER ((AT91_REG *) 0xFFFA40A4) // (TC5) Interrupt Enable Register #define AT91C_TC5_RC ((AT91_REG *) 0xFFFA409C) // (TC5) Register C #define AT91C_TC5_RA ((AT91_REG *) 0xFFFA4094) // (TC5) Register A // ========== Register definition for TCB1 peripheral ========== #define AT91C_TCB1_BCR ((AT91_REG *) 0xFFFA40C0) // (TCB1) TC Block Control Register #define AT91C_TCB1_BMR ((AT91_REG *) 0xFFFA40C4) // (TCB1) TC Block Mode Register // ========== Register definition for TC6 peripheral ========== #define AT91C_TC6_IDR ((AT91_REG *) 0xFFFA8028) // (TC6) Interrupt Disable Register #define AT91C_TC6_SR ((AT91_REG *) 0xFFFA8020) // (TC6) Status Register #define AT91C_TC6_RB ((AT91_REG *) 0xFFFA8018) // (TC6) Register B #define AT91C_TC6_CV ((AT91_REG *) 0xFFFA8010) // (TC6) Counter Value #define AT91C_TC6_CCR ((AT91_REG *) 0xFFFA8000) // (TC6) Channel Control Register #define AT91C_TC6_IMR ((AT91_REG *) 0xFFFA802C) // (TC6) Interrupt Mask Register #define AT91C_TC6_IER ((AT91_REG *) 0xFFFA8024) // (TC6) Interrupt Enable Register #define AT91C_TC6_RC ((AT91_REG *) 0xFFFA801C) // (TC6) Register C #define AT91C_TC6_RA ((AT91_REG *) 0xFFFA8014) // (TC6) Register A #define AT91C_TC6_CMR ((AT91_REG *) 0xFFFA8004) // (TC6) Channel Mode Register (Capture Mode / Waveform Mode) // ========== Register definition for TC7 peripheral ========== #define AT91C_TC7_IDR ((AT91_REG *) 0xFFFA8068) // (TC7) Interrupt Disable Register #define AT91C_TC7_SR ((AT91_REG *) 0xFFFA8060) // (TC7) Status Register #define AT91C_TC7_RB ((AT91_REG *) 0xFFFA8058) // (TC7) Register B #define AT91C_TC7_CV ((AT91_REG *) 0xFFFA8050) // (TC7) Counter Value #define AT91C_TC7_CCR ((AT91_REG *) 0xFFFA8040) // (TC7) Channel Control Register #define AT91C_TC7_IMR ((AT91_REG *) 0xFFFA806C) // (TC7) Interrupt Mask Register #define AT91C_TC7_IER ((AT91_REG *) 0xFFFA8064) // (TC7) Interrupt Enable Register #define AT91C_TC7_RC ((AT91_REG *) 0xFFFA805C) // (TC7) Register C #define AT91C_TC7_RA ((AT91_REG *) 0xFFFA8054) // (TC7) Register A #define AT91C_TC7_CMR ((AT91_REG *) 0xFFFA8044) // (TC7) Channel Mode Register (Capture Mode / Waveform Mode) // ========== Register definition for TC8 peripheral ========== #define AT91C_TC8_CV ((AT91_REG *) 0xFFFA8090) // (TC8) Counter Value #define AT91C_TC8_CCR ((AT91_REG *) 0xFFFA8080) // (TC8) Channel Control Register #define AT91C_TC8_IMR ((AT91_REG *) 0xFFFA80AC) // (TC8) Interrupt Mask Register #define AT91C_TC8_IER ((AT91_REG *) 0xFFFA80A4) // (TC8) Interrupt Enable Register #define AT91C_TC8_RC ((AT91_REG *) 0xFFFA809C) // (TC8) Register C #define AT91C_TC8_RA ((AT91_REG *) 0xFFFA8094) // (TC8) Register A #define AT91C_TC8_CMR ((AT91_REG *) 0xFFFA8084) // (TC8) Channel Mode Register (Capture Mode / Waveform Mode) #define AT91C_TC8_IDR ((AT91_REG *) 0xFFFA80A8) // (TC8) Interrupt Disable Register #define AT91C_TC8_SR ((AT91_REG *) 0xFFFA80A0) // (TC8) Status Register #define AT91C_TC8_RB ((AT91_REG *) 0xFFFA8098) // (TC8) Register B // ========== Register definition for TCB2 peripheral ========== #define AT91C_TCB2_BMR ((AT91_REG *) 0xFFFA80C4) // (TCB2) TC Block Mode Register #define AT91C_TCB2_BCR ((AT91_REG *) 0xFFFA80C0) // (TCB2) TC Block Control Register // ========== Register definition for PDC_MCI peripheral ========== #define AT91C_MCI_RCR ((AT91_REG *) 0xFFFAC104) // (PDC_MCI) Receive Counter Register #define AT91C_MCI_PTCR ((AT91_REG *) 0xFFFAC120) // (PDC_MCI) PDC Transfer Control Register #define AT91C_MCI_TNPR ((AT91_REG *) 0xFFFAC118) // (PDC_MCI) Transmit Next Pointer Register #define AT91C_MCI_RNPR ((AT91_REG *) 0xFFFAC110) // (PDC_MCI) Receive Next Pointer Register #define AT91C_MCI_TPR ((AT91_REG *) 0xFFFAC108) // (PDC_MCI) Transmit Pointer Register #define AT91C_MCI_RPR ((AT91_REG *) 0xFFFAC100) // (PDC_MCI) Receive Pointer Register #define AT91C_MCI_PTSR ((AT91_REG *) 0xFFFAC124) // (PDC_MCI) PDC Transfer Status Register #define AT91C_MCI_TNCR ((AT91_REG *) 0xFFFAC11C) // (PDC_MCI) Transmit Next Counter Register #define AT91C_MCI_RNCR ((AT91_REG *) 0xFFFAC114) // (PDC_MCI) Receive Next Counter Register #define AT91C_MCI_TCR ((AT91_REG *) 0xFFFAC10C) // (PDC_MCI) Transmit Counter Register // ========== Register definition for MCI peripheral ========== #define AT91C_MCI_IER ((AT91_REG *) 0xFFFAC044) // (MCI) MCI Interrupt Enable Register #define AT91C_MCI_TDR ((AT91_REG *) 0xFFFAC034) // (MCI) MCI Transmit Data Register #define AT91C_MCI_IDR ((AT91_REG *) 0xFFFAC048) // (MCI) MCI Interrupt Disable Register #define AT91C_MCI_SR ((AT91_REG *) 0xFFFAC040) // (MCI) MCI Status Register #define AT91C_MCI_DTOR ((AT91_REG *) 0xFFFAC008) // (MCI) MCI Data Timeout Register #define AT91C_MCI_CR ((AT91_REG *) 0xFFFAC000) // (MCI) MCI Control Register #define AT91C_MCI_IMR ((AT91_REG *) 0xFFFAC04C) // (MCI) MCI Interrupt Mask Register #define AT91C_MCI_MR ((AT91_REG *) 0xFFFAC004) // (MCI) MCI Mode Register #define AT91C_MCI_SDCR ((AT91_REG *) 0xFFFAC00C) // (MCI) MCI SD Card Register #define AT91C_MCI_CMDR ((AT91_REG *) 0xFFFAC014) // (MCI) MCI Command Register #define AT91C_MCI_ARGR ((AT91_REG *) 0xFFFAC010) // (MCI) MCI Argument Register #define AT91C_MCI_RSPR ((AT91_REG *) 0xFFFAC020) // (MCI) MCI Response Register #define AT91C_MCI_RDR ((AT91_REG *) 0xFFFAC030) // (MCI) MCI Receive Data Register // ========== Register definition for UDP peripheral ========== #define AT91C_UDP_TXVC ((AT91_REG *) 0xFFFB0074) // (UDP) Transceiver Control Register #define AT91C_UDP_ISR ((AT91_REG *) 0xFFFB001C) // (UDP) Interrupt Status Register #define AT91C_UDP_IDR ((AT91_REG *) 0xFFFB0014) // (UDP) Interrupt Disable Register #define AT91C_UDP_CSR ((AT91_REG *) 0xFFFB0030) // (UDP) Endpoint Control and Status Register #define AT91C_UDP_RSTEP ((AT91_REG *) 0xFFFB0028) // (UDP) Reset Endpoint Register #define AT91C_UDP_ICR ((AT91_REG *) 0xFFFB0020) // (UDP) Interrupt Clear Register #define AT91C_UDP_GLBSTATE ((AT91_REG *) 0xFFFB0004) // (UDP) Global State Register #define AT91C_UDP_NUM ((AT91_REG *) 0xFFFB0000) // (UDP) Frame Number Register #define AT91C_UDP_FADDR ((AT91_REG *) 0xFFFB0008) // (UDP) Function Address Register #define AT91C_UDP_IER ((AT91_REG *) 0xFFFB0010) // (UDP) Interrupt Enable Register #define AT91C_UDP_IMR ((AT91_REG *) 0xFFFB0018) // (UDP) Interrupt Mask Register #define AT91C_UDP_FDR ((AT91_REG *) 0xFFFB0050) // (UDP) Endpoint FIFO Data Register // ========== Register definition for TWI peripheral ========== #define AT91C_TWI_RHR ((AT91_REG *) 0xFFFB8030) // (TWI) Receive Holding Register #define AT91C_TWI_IDR ((AT91_REG *) 0xFFFB8028) // (TWI) Interrupt Disable Register #define AT91C_TWI_SR ((AT91_REG *) 0xFFFB8020) // (TWI) Status Register #define AT91C_TWI_CWGR ((AT91_REG *) 0xFFFB8010) // (TWI) Clock Waveform Generator Register #define AT91C_TWI_CR ((AT91_REG *) 0xFFFB8000) // (TWI) Control Register #define AT91C_TWI_THR ((AT91_REG *) 0xFFFB8034) // (TWI) Transmit Holding Register #define AT91C_TWI_IMR ((AT91_REG *) 0xFFFB802C) // (TWI) Interrupt Mask Register #define AT91C_TWI_IER ((AT91_REG *) 0xFFFB8024) // (TWI) Interrupt Enable Register #define AT91C_TWI_IADR ((AT91_REG *) 0xFFFB800C) // (TWI) Internal Address Register #define AT91C_TWI_MMR ((AT91_REG *) 0xFFFB8004) // (TWI) Master Mode Register // ========== Register definition for PDC_US0 peripheral ========== #define AT91C_US0_PTCR ((AT91_REG *) 0xFFFC0120) // (PDC_US0) PDC Transfer Control Register #define AT91C_US0_TNPR ((AT91_REG *) 0xFFFC0118) // (PDC_US0) Transmit Next Pointer Register #define AT91C_US0_RNPR ((AT91_REG *) 0xFFFC0110) // (PDC_US0) Receive Next Pointer Register #define AT91C_US0_TPR ((AT91_REG *) 0xFFFC0108) // (PDC_US0) Transmit Pointer Register #define AT91C_US0_RPR ((AT91_REG *) 0xFFFC0100) // (PDC_US0) Receive Pointer Register #define AT91C_US0_PTSR ((AT91_REG *) 0xFFFC0124) // (PDC_US0) PDC Transfer Status Register #define AT91C_US0_TNCR ((AT91_REG *) 0xFFFC011C) // (PDC_US0) Transmit Next Counter Register #define AT91C_US0_RNCR ((AT91_REG *) 0xFFFC0114) // (PDC_US0) Receive Next Counter Register #define AT91C_US0_TCR ((AT91_REG *) 0xFFFC010C) // (PDC_US0) Transmit Counter Register #define AT91C_US0_RCR ((AT91_REG *) 0xFFFC0104) // (PDC_US0) Receive Counter Register // ========== Register definition for US0 peripheral ========== #define AT91C_US0_TTGR ((AT91_REG *) 0xFFFC0028) // (US0) Transmitter Time-guard Register #define AT91C_US0_BRGR ((AT91_REG *) 0xFFFC0020) // (US0) Baud Rate Generator Register #define AT91C_US0_RHR ((AT91_REG *) 0xFFFC0018) // (US0) Receiver Holding Register #define AT91C_US0_IMR ((AT91_REG *) 0xFFFC0010) // (US0) Interrupt Mask Register #define AT91C_US0_NER ((AT91_REG *) 0xFFFC0044) // (US0) Nb Errors Register #define AT91C_US0_RTOR ((AT91_REG *) 0xFFFC0024) // (US0) Receiver Time-out Register #define AT91C_US0_FIDI ((AT91_REG *) 0xFFFC0040) // (US0) FI_DI_Ratio Register #define AT91C_US0_CR ((AT91_REG *) 0xFFFC0000) // (US0) Control Register #define AT91C_US0_IER ((AT91_REG *) 0xFFFC0008) // (US0) Interrupt Enable Register #define AT91C_US0_IF ((AT91_REG *) 0xFFFC004C) // (US0) IRDA_FILTER Register #define AT91C_US0_MR ((AT91_REG *) 0xFFFC0004) // (US0) Mode Register #define AT91C_US0_IDR ((AT91_REG *) 0xFFFC000C) // (US0) Interrupt Disable Register #define AT91C_US0_CSR ((AT91_REG *) 0xFFFC0014) // (US0) Channel Status Register #define AT91C_US0_THR ((AT91_REG *) 0xFFFC001C) // (US0) Transmitter Holding Register // ========== Register definition for PDC_US1 peripheral ========== #define AT91C_US1_PTSR ((AT91_REG *) 0xFFFC4124) // (PDC_US1) PDC Transfer Status Register #define AT91C_US1_TNCR ((AT91_REG *) 0xFFFC411C) // (PDC_US1) Transmit Next Counter Register #define AT91C_US1_RNCR ((AT91_REG *) 0xFFFC4114) // (PDC_US1) Receive Next Counter Register #define AT91C_US1_TCR ((AT91_REG *) 0xFFFC410C) // (PDC_US1) Transmit Counter Register #define AT91C_US1_RCR ((AT91_REG *) 0xFFFC4104) // (PDC_US1) Receive Counter Register #define AT91C_US1_PTCR ((AT91_REG *) 0xFFFC4120) // (PDC_US1) PDC Transfer Control Register #define AT91C_US1_TNPR ((AT91_REG *) 0xFFFC4118) // (PDC_US1) Transmit Next Pointer Register #define AT91C_US1_RNPR ((AT91_REG *) 0xFFFC4110) // (PDC_US1) Receive Next Pointer Register #define AT91C_US1_TPR ((AT91_REG *) 0xFFFC4108) // (PDC_US1) Transmit Pointer Register #define AT91C_US1_RPR ((AT91_REG *) 0xFFFC4100) // (PDC_US1) Receive Pointer Register // ========== Register definition for US1 peripheral ========== #define AT91C_US1_RHR ((AT91_REG *) 0xFFFC4018) // (US1) Receiver Holding Register #define AT91C_US1_IMR ((AT91_REG *) 0xFFFC4010) // (US1) Interrupt Mask Register #define AT91C_US1_IER ((AT91_REG *) 0xFFFC4008) // (US1) Interrupt Enable Register #define AT91C_US1_CR ((AT91_REG *) 0xFFFC4000) // (US1) Control Register #define AT91C_US1_RTOR ((AT91_REG *) 0xFFFC4024) // (US1) Receiver Time-out Register #define AT91C_US1_THR ((AT91_REG *) 0xFFFC401C) // (US1) Transmitter Holding Register #define AT91C_US1_CSR ((AT91_REG *) 0xFFFC4014) // (US1) Channel Status Register #define AT91C_US1_IDR ((AT91_REG *) 0xFFFC400C) // (US1) Interrupt Disable Register #define AT91C_US1_FIDI ((AT91_REG *) 0xFFFC4040) // (US1) FI_DI_Ratio Register #define AT91C_US1_BRGR ((AT91_REG *) 0xFFFC4020) // (US1) Baud Rate Generator Register #define AT91C_US1_TTGR ((AT91_REG *) 0xFFFC4028) // (US1) Transmitter Time-guard Register #define AT91C_US1_IF ((AT91_REG *) 0xFFFC404C) // (US1) IRDA_FILTER Register #define AT91C_US1_NER ((AT91_REG *) 0xFFFC4044) // (US1) Nb Errors Register #define AT91C_US1_MR ((AT91_REG *) 0xFFFC4004) // (US1) Mode Register // ========== Register definition for PDC_US2 peripheral ========== #define AT91C_US2_PTSR ((AT91_REG *) 0xFFFC8124) // (PDC_US2) PDC Transfer Status Register #define AT91C_US2_TNCR ((AT91_REG *) 0xFFFC811C) // (PDC_US2) Transmit Next Counter Register #define AT91C_US2_RNCR ((AT91_REG *) 0xFFFC8114) // (PDC_US2) Receive Next Counter Register #define AT91C_US2_TCR ((AT91_REG *) 0xFFFC810C) // (PDC_US2) Transmit Counter Register #define AT91C_US2_PTCR ((AT91_REG *) 0xFFFC8120) // (PDC_US2) PDC Transfer Control Register #define AT91C_US2_RCR ((AT91_REG *) 0xFFFC8104) // (PDC_US2) Receive Counter Register #define AT91C_US2_TNPR ((AT91_REG *) 0xFFFC8118) // (PDC_US2) Transmit Next Pointer Register #define AT91C_US2_RPR ((AT91_REG *) 0xFFFC8100) // (PDC_US2) Receive Pointer Register #define AT91C_US2_TPR ((AT91_REG *) 0xFFFC8108) // (PDC_US2) Transmit Pointer Register #define AT91C_US2_RNPR ((AT91_REG *) 0xFFFC8110) // (PDC_US2) Receive Next Pointer Register // ========== Register definition for US2 peripheral ========== #define AT91C_US2_FIDI ((AT91_REG *) 0xFFFC8040) // (US2) FI_DI_Ratio Register #define AT91C_US2_TTGR ((AT91_REG *) 0xFFFC8028) // (US2) Transmitter Time-guard Register #define AT91C_US2_BRGR ((AT91_REG *) 0xFFFC8020) // (US2) Baud Rate Generator Register #define AT91C_US2_RHR ((AT91_REG *) 0xFFFC8018) // (US2) Receiver Holding Register #define AT91C_US2_IMR ((AT91_REG *) 0xFFFC8010) // (US2) Interrupt Mask Register #define AT91C_US2_IER ((AT91_REG *) 0xFFFC8008) // (US2) Interrupt Enable Register #define AT91C_US2_CR ((AT91_REG *) 0xFFFC8000) // (US2) Control Register #define AT91C_US2_IF ((AT91_REG *) 0xFFFC804C) // (US2) IRDA_FILTER Register #define AT91C_US2_NER ((AT91_REG *) 0xFFFC8044) // (US2) Nb Errors Register #define AT91C_US2_RTOR ((AT91_REG *) 0xFFFC8024) // (US2) Receiver Time-out Register #define AT91C_US2_THR ((AT91_REG *) 0xFFFC801C) // (US2) Transmitter Holding Register #define AT91C_US2_CSR ((AT91_REG *) 0xFFFC8014) // (US2) Channel Status Register #define AT91C_US2_IDR ((AT91_REG *) 0xFFFC800C) // (US2) Interrupt Disable Register #define AT91C_US2_MR ((AT91_REG *) 0xFFFC8004) // (US2) Mode Register // ========== Register definition for PWMC_CH0 peripheral ========== #define AT91C_PWMC_CH0_CUPDR ((AT91_REG *) 0xFFFCC210) // (PWMC_CH0) Channel Update Register #define AT91C_PWMC_CH0_CPRDR ((AT91_REG *) 0xFFFCC208) // (PWMC_CH0) Channel Period Register #define AT91C_PWMC_CH0_CMR ((AT91_REG *) 0xFFFCC200) // (PWMC_CH0) Channel Mode Register #define AT91C_PWMC_CH0_Reserved ((AT91_REG *) 0xFFFCC214) // (PWMC_CH0) Reserved #define AT91C_PWMC_CH0_CCNTR ((AT91_REG *) 0xFFFCC20C) // (PWMC_CH0) Channel Counter Register #define AT91C_PWMC_CH0_CDTYR ((AT91_REG *) 0xFFFCC204) // (PWMC_CH0) Channel Duty Cycle Register // ========== Register definition for PWMC_CH1 peripheral ========== #define AT91C_PWMC_CH1_CUPDR ((AT91_REG *) 0xFFFCC230) // (PWMC_CH1) Channel Update Register #define AT91C_PWMC_CH1_CPRDR ((AT91_REG *) 0xFFFCC228) // (PWMC_CH1) Channel Period Register #define AT91C_PWMC_CH1_CMR ((AT91_REG *) 0xFFFCC220) // (PWMC_CH1) Channel Mode Register #define AT91C_PWMC_CH1_Reserved ((AT91_REG *) 0xFFFCC234) // (PWMC_CH1) Reserved #define AT91C_PWMC_CH1_CCNTR ((AT91_REG *) 0xFFFCC22C) // (PWMC_CH1) Channel Counter Register #define AT91C_PWMC_CH1_CDTYR ((AT91_REG *) 0xFFFCC224) // (PWMC_CH1) Channel Duty Cycle Register // ========== Register definition for PWMC_CH2 peripheral ========== #define AT91C_PWMC_CH2_CUPDR ((AT91_REG *) 0xFFFCC250) // (PWMC_CH2) Channel Update Register #define AT91C_PWMC_CH2_CPRDR ((AT91_REG *) 0xFFFCC248) // (PWMC_CH2) Channel Period Register #define AT91C_PWMC_CH2_CMR ((AT91_REG *) 0xFFFCC240) // (PWMC_CH2) Channel Mode Register #define AT91C_PWMC_CH2_Reserved ((AT91_REG *) 0xFFFCC254) // (PWMC_CH2) Reserved #define AT91C_PWMC_CH2_CCNTR ((AT91_REG *) 0xFFFCC24C) // (PWMC_CH2) Channel Counter Register #define AT91C_PWMC_CH2_CDTYR ((AT91_REG *) 0xFFFCC244) // (PWMC_CH2) Channel Duty Cycle Register // ========== Register definition for PWMC_CH3 peripheral ========== #define AT91C_PWMC_CH3_CUPDR ((AT91_REG *) 0xFFFCC270) // (PWMC_CH3) Channel Update Register #define AT91C_PWMC_CH3_CPRDR ((AT91_REG *) 0xFFFCC268) // (PWMC_CH3) Channel Period Register #define AT91C_PWMC_CH3_CMR ((AT91_REG *) 0xFFFCC260) // (PWMC_CH3) Channel Mode Register #define AT91C_PWMC_CH3_Reserved ((AT91_REG *) 0xFFFCC274) // (PWMC_CH3) Reserved #define AT91C_PWMC_CH3_CCNTR ((AT91_REG *) 0xFFFCC26C) // (PWMC_CH3) Channel Counter Register #define AT91C_PWMC_CH3_CDTYR ((AT91_REG *) 0xFFFCC264) // (PWMC_CH3) Channel Duty Cycle Register // ========== Register definition for PWMC_CH4 peripheral ========== #define AT91C_PWMC_CH4_CUPDR ((AT91_REG *) 0xFFFCC290) // (PWMC_CH4) Channel Update Register #define AT91C_PWMC_CH4_CPRDR ((AT91_REG *) 0xFFFCC288) // (PWMC_CH4) Channel Period Register #define AT91C_PWMC_CH4_CMR ((AT91_REG *) 0xFFFCC280) // (PWMC_CH4) Channel Mode Register #define AT91C_PWMC_CH4_Reserved ((AT91_REG *) 0xFFFCC294) // (PWMC_CH4) Reserved #define AT91C_PWMC_CH4_CCNTR ((AT91_REG *) 0xFFFCC28C) // (PWMC_CH4) Channel Counter Register #define AT91C_PWMC_CH4_CDTYR ((AT91_REG *) 0xFFFCC284) // (PWMC_CH4) Channel Duty Cycle Register // ========== Register definition for PWMC_CH5 peripheral ========== #define AT91C_PWMC_CH5_CUPDR ((AT91_REG *) 0xFFFCC2B0) // (PWMC_CH5) Channel Update Register #define AT91C_PWMC_CH5_CPRDR ((AT91_REG *) 0xFFFCC2A8) // (PWMC_CH5) Channel Period Register #define AT91C_PWMC_CH5_CMR ((AT91_REG *) 0xFFFCC2A0) // (PWMC_CH5) Channel Mode Register #define AT91C_PWMC_CH5_Reserved ((AT91_REG *) 0xFFFCC2B4) // (PWMC_CH5) Reserved #define AT91C_PWMC_CH5_CCNTR ((AT91_REG *) 0xFFFCC2AC) // (PWMC_CH5) Channel Counter Register #define AT91C_PWMC_CH5_CDTYR ((AT91_REG *) 0xFFFCC2A4) // (PWMC_CH5) Channel Duty Cycle Register // ========== Register definition for PWMC_CH6 peripheral ========== #define AT91C_PWMC_CH6_Reserved ((AT91_REG *) 0xFFFCC2D4) // (PWMC_CH6) Reserved #define AT91C_PWMC_CH6_CCNTR ((AT91_REG *) 0xFFFCC2CC) // (PWMC_CH6) Channel Counter Register #define AT91C_PWMC_CH6_CDTYR ((AT91_REG *) 0xFFFCC2C4) // (PWMC_CH6) Channel Duty Cycle Register #define AT91C_PWMC_CH6_CUPDR ((AT91_REG *) 0xFFFCC2D0) // (PWMC_CH6) Channel Update Register #define AT91C_PWMC_CH6_CPRDR ((AT91_REG *) 0xFFFCC2C8) // (PWMC_CH6) Channel Period Register #define AT91C_PWMC_CH6_CMR ((AT91_REG *) 0xFFFCC2C0) // (PWMC_CH6) Channel Mode Register // ========== Register definition for PWMC_CH7 peripheral ========== #define AT91C_PWMC_CH7_Reserved ((AT91_REG *) 0xFFFCC2F4) // (PWMC_CH7) Reserved #define AT91C_PWMC_CH7_CCNTR ((AT91_REG *) 0xFFFCC2EC) // (PWMC_CH7) Channel Counter Register #define AT91C_PWMC_CH7_CDTYR ((AT91_REG *) 0xFFFCC2E4) // (PWMC_CH7) Channel Duty Cycle Register #define AT91C_PWMC_CH7_CUPDR ((AT91_REG *) 0xFFFCC2F0) // (PWMC_CH7) Channel Update Register #define AT91C_PWMC_CH7_CPRDR ((AT91_REG *) 0xFFFCC2E8) // (PWMC_CH7) Channel Period Register #define AT91C_PWMC_CH7_CMR ((AT91_REG *) 0xFFFCC2E0) // (PWMC_CH7) Channel Mode Register // ========== Register definition for PWMC peripheral ========== #define AT91C_PWMC_VR ((AT91_REG *) 0xFFFCC0FC) // (PWMC) PWMC Version Register #define AT91C_PWMC_ISR ((AT91_REG *) 0xFFFCC01C) // (PWMC) PWMC Interrupt Status Register #define AT91C_PWMC_IDR ((AT91_REG *) 0xFFFCC014) // (PWMC) PWMC Interrupt Disable Register #define AT91C_PWMC_SR ((AT91_REG *) 0xFFFCC00C) // (PWMC) PWMC Status Register #define AT91C_PWMC_ENA ((AT91_REG *) 0xFFFCC004) // (PWMC) PWMC Enable Register #define AT91C_PWMC_IMR ((AT91_REG *) 0xFFFCC018) // (PWMC) PWMC Interrupt Mask Register #define AT91C_PWMC_MR ((AT91_REG *) 0xFFFCC000) // (PWMC) PWMC Mode Register #define AT91C_PWMC_DIS ((AT91_REG *) 0xFFFCC008) // (PWMC) PWMC Disable Register #define AT91C_PWMC_IER ((AT91_REG *) 0xFFFCC010) // (PWMC) PWMC Interrupt Enable Register // ========== Register definition for PDC_SSC0 peripheral ========== #define AT91C_SSC0_PTCR ((AT91_REG *) 0xFFFD0120) // (PDC_SSC0) PDC Transfer Control Register #define AT91C_SSC0_TNPR ((AT91_REG *) 0xFFFD0118) // (PDC_SSC0) Transmit Next Pointer Register #define AT91C_SSC0_RNPR ((AT91_REG *) 0xFFFD0110) // (PDC_SSC0) Receive Next Pointer Register #define AT91C_SSC0_TPR ((AT91_REG *) 0xFFFD0108) // (PDC_SSC0) Transmit Pointer Register #define AT91C_SSC0_RPR ((AT91_REG *) 0xFFFD0100) // (PDC_SSC0) Receive Pointer Register #define AT91C_SSC0_PTSR ((AT91_REG *) 0xFFFD0124) // (PDC_SSC0) PDC Transfer Status Register #define AT91C_SSC0_TNCR ((AT91_REG *) 0xFFFD011C) // (PDC_SSC0) Transmit Next Counter Register #define AT91C_SSC0_RNCR ((AT91_REG *) 0xFFFD0114) // (PDC_SSC0) Receive Next Counter Register #define AT91C_SSC0_TCR ((AT91_REG *) 0xFFFD010C) // (PDC_SSC0) Transmit Counter Register #define AT91C_SSC0_RCR ((AT91_REG *) 0xFFFD0104) // (PDC_SSC0) Receive Counter Register // ========== Register definition for SSC0 peripheral ========== #define AT91C_SSC0_IMR ((AT91_REG *) 0xFFFD004C) // (SSC0) Interrupt Mask Register #define AT91C_SSC0_IER ((AT91_REG *) 0xFFFD0044) // (SSC0) Interrupt Enable Register #define AT91C_SSC0_TSHR ((AT91_REG *) 0xFFFD0034) // (SSC0) Transmit Sync Holding Register #define AT91C_SSC0_THR ((AT91_REG *) 0xFFFD0024) // (SSC0) Transmit Holding Register #define AT91C_SSC0_TFMR ((AT91_REG *) 0xFFFD001C) // (SSC0) Transmit Frame Mode Register #define AT91C_SSC0_RFMR ((AT91_REG *) 0xFFFD0014) // (SSC0) Receive Frame Mode Register #define AT91C_SSC0_CMR ((AT91_REG *) 0xFFFD0004) // (SSC0) Clock Mode Register #define AT91C_SSC0_IDR ((AT91_REG *) 0xFFFD0048) // (SSC0) Interrupt Disable Register #define AT91C_SSC0_SR ((AT91_REG *) 0xFFFD0040) // (SSC0) Status Register #define AT91C_SSC0_RSHR ((AT91_REG *) 0xFFFD0030) // (SSC0) Receive Sync Holding Register #define AT91C_SSC0_RHR ((AT91_REG *) 0xFFFD0020) // (SSC0) Receive Holding Register #define AT91C_SSC0_TCMR ((AT91_REG *) 0xFFFD0018) // (SSC0) Transmit Clock Mode Register #define AT91C_SSC0_RCMR ((AT91_REG *) 0xFFFD0010) // (SSC0) Receive Clock ModeRegister #define AT91C_SSC0_CR ((AT91_REG *) 0xFFFD0000) // (SSC0) Control Register // ========== Register definition for PDC_SSC1 peripheral ========== #define AT91C_SSC1_PTCR ((AT91_REG *) 0xFFFD4120) // (PDC_SSC1) PDC Transfer Control Register #define AT91C_SSC1_TNPR ((AT91_REG *) 0xFFFD4118) // (PDC_SSC1) Transmit Next Pointer Register #define AT91C_SSC1_RNPR ((AT91_REG *) 0xFFFD4110) // (PDC_SSC1) Receive Next Pointer Register #define AT91C_SSC1_TPR ((AT91_REG *) 0xFFFD4108) // (PDC_SSC1) Transmit Pointer Register #define AT91C_SSC1_RPR ((AT91_REG *) 0xFFFD4100) // (PDC_SSC1) Receive Pointer Register #define AT91C_SSC1_PTSR ((AT91_REG *) 0xFFFD4124) // (PDC_SSC1) PDC Transfer Status Register #define AT91C_SSC1_TNCR ((AT91_REG *) 0xFFFD411C) // (PDC_SSC1) Transmit Next Counter Register #define AT91C_SSC1_RNCR ((AT91_REG *) 0xFFFD4114) // (PDC_SSC1) Receive Next Counter Register #define AT91C_SSC1_TCR ((AT91_REG *) 0xFFFD410C) // (PDC_SSC1) Transmit Counter Register #define AT91C_SSC1_RCR ((AT91_REG *) 0xFFFD4104) // (PDC_SSC1) Receive Counter Register // ========== Register definition for SSC1 peripheral ========== #define AT91C_SSC1_RFMR ((AT91_REG *) 0xFFFD4014) // (SSC1) Receive Frame Mode Register #define AT91C_SSC1_CMR ((AT91_REG *) 0xFFFD4004) // (SSC1) Clock Mode Register #define AT91C_SSC1_IDR ((AT91_REG *) 0xFFFD4048) // (SSC1) Interrupt Disable Register #define AT91C_SSC1_SR ((AT91_REG *) 0xFFFD4040) // (SSC1) Status Register #define AT91C_SSC1_RSHR ((AT91_REG *) 0xFFFD4030) // (SSC1) Receive Sync Holding Register #define AT91C_SSC1_RHR ((AT91_REG *) 0xFFFD4020) // (SSC1) Receive Holding Register #define AT91C_SSC1_TCMR ((AT91_REG *) 0xFFFD4018) // (SSC1) Transmit Clock Mode Register #define AT91C_SSC1_RCMR ((AT91_REG *) 0xFFFD4010) // (SSC1) Receive Clock ModeRegister #define AT91C_SSC1_CR ((AT91_REG *) 0xFFFD4000) // (SSC1) Control Register #define AT91C_SSC1_IMR ((AT91_REG *) 0xFFFD404C) // (SSC1) Interrupt Mask Register #define AT91C_SSC1_IER ((AT91_REG *) 0xFFFD4044) // (SSC1) Interrupt Enable Register #define AT91C_SSC1_TSHR ((AT91_REG *) 0xFFFD4034) // (SSC1) Transmit Sync Holding Register #define AT91C_SSC1_THR ((AT91_REG *) 0xFFFD4024) // (SSC1) Transmit Holding Register #define AT91C_SSC1_TFMR ((AT91_REG *) 0xFFFD401C) // (SSC1) Transmit Frame Mode Register // ========== Register definition for PDC_ADC0 peripheral ========== #define AT91C_ADC0_PTCR ((AT91_REG *) 0xFFFD8120) // (PDC_ADC0) PDC Transfer Control Register #define AT91C_ADC0_TNPR ((AT91_REG *) 0xFFFD8118) // (PDC_ADC0) Transmit Next Pointer Register #define AT91C_ADC0_RNPR ((AT91_REG *) 0xFFFD8110) // (PDC_ADC0) Receive Next Pointer Register #define AT91C_ADC0_TPR ((AT91_REG *) 0xFFFD8108) // (PDC_ADC0) Transmit Pointer Register #define AT91C_ADC0_RPR ((AT91_REG *) 0xFFFD8100) // (PDC_ADC0) Receive Pointer Register #define AT91C_ADC0_PTSR ((AT91_REG *) 0xFFFD8124) // (PDC_ADC0) PDC Transfer Status Register #define AT91C_ADC0_TNCR ((AT91_REG *) 0xFFFD811C) // (PDC_ADC0) Transmit Next Counter Register #define AT91C_ADC0_RNCR ((AT91_REG *) 0xFFFD8114) // (PDC_ADC0) Receive Next Counter Register #define AT91C_ADC0_TCR ((AT91_REG *) 0xFFFD810C) // (PDC_ADC0) Transmit Counter Register #define AT91C_ADC0_RCR ((AT91_REG *) 0xFFFD8104) // (PDC_ADC0) Receive Counter Register // ========== Register definition for ADC0 peripheral ========== #define AT91C_ADC0_IMR ((AT91_REG *) 0xFFFD802C) // (ADC0) ADC Interrupt Mask Register #define AT91C_ADC0_CDR4 ((AT91_REG *) 0xFFFD8040) // (ADC0) ADC Channel Data Register 4 #define AT91C_ADC0_CDR2 ((AT91_REG *) 0xFFFD8038) // (ADC0) ADC Channel Data Register 2 #define AT91C_ADC0_CDR0 ((AT91_REG *) 0xFFFD8030) // (ADC0) ADC Channel Data Register 0 #define AT91C_ADC0_CDR7 ((AT91_REG *) 0xFFFD804C) // (ADC0) ADC Channel Data Register 7 #define AT91C_ADC0_CDR1 ((AT91_REG *) 0xFFFD8034) // (ADC0) ADC Channel Data Register 1 #define AT91C_ADC0_CDR3 ((AT91_REG *) 0xFFFD803C) // (ADC0) ADC Channel Data Register 3 #define AT91C_ADC0_CDR5 ((AT91_REG *) 0xFFFD8044) // (ADC0) ADC Channel Data Register 5 #define AT91C_ADC0_MR ((AT91_REG *) 0xFFFD8004) // (ADC0) ADC Mode Register #define AT91C_ADC0_CDR6 ((AT91_REG *) 0xFFFD8048) // (ADC0) ADC Channel Data Register 6 #define AT91C_ADC0_CR ((AT91_REG *) 0xFFFD8000) // (ADC0) ADC Control Register #define AT91C_ADC0_CHER ((AT91_REG *) 0xFFFD8010) // (ADC0) ADC Channel Enable Register #define AT91C_ADC0_CHSR ((AT91_REG *) 0xFFFD8018) // (ADC0) ADC Channel Status Register #define AT91C_ADC0_IER ((AT91_REG *) 0xFFFD8024) // (ADC0) ADC Interrupt Enable Register #define AT91C_ADC0_SR ((AT91_REG *) 0xFFFD801C) // (ADC0) ADC Status Register #define AT91C_ADC0_CHDR ((AT91_REG *) 0xFFFD8014) // (ADC0) ADC Channel Disable Register #define AT91C_ADC0_IDR ((AT91_REG *) 0xFFFD8028) // (ADC0) ADC Interrupt Disable Register #define AT91C_ADC0_LCDR ((AT91_REG *) 0xFFFD8020) // (ADC0) ADC Last Converted Data Register // ========== Register definition for PDC_ADC1 peripheral ========== #define AT91C_ADC1_RPR ((AT91_REG *) 0xFFFDC100) // (PDC_ADC1) Receive Pointer Register #define AT91C_ADC1_RCR ((AT91_REG *) 0xFFFDC104) // (PDC_ADC1) Receive Counter Register #define AT91C_ADC1_PTSR ((AT91_REG *) 0xFFFDC124) // (PDC_ADC1) PDC Transfer Status Register #define AT91C_ADC1_TNCR ((AT91_REG *) 0xFFFDC11C) // (PDC_ADC1) Transmit Next Counter Register #define AT91C_ADC1_RNCR ((AT91_REG *) 0xFFFDC114) // (PDC_ADC1) Receive Next Counter Register #define AT91C_ADC1_TCR ((AT91_REG *) 0xFFFDC10C) // (PDC_ADC1) Transmit Counter Register #define AT91C_ADC1_PTCR ((AT91_REG *) 0xFFFDC120) // (PDC_ADC1) PDC Transfer Control Register #define AT91C_ADC1_TNPR ((AT91_REG *) 0xFFFDC118) // (PDC_ADC1) Transmit Next Pointer Register #define AT91C_ADC1_RNPR ((AT91_REG *) 0xFFFDC110) // (PDC_ADC1) Receive Next Pointer Register #define AT91C_ADC1_TPR ((AT91_REG *) 0xFFFDC108) // (PDC_ADC1) Transmit Pointer Register // ========== Register definition for ADC1 peripheral ========== #define AT91C_ADC1_CDR1 ((AT91_REG *) 0xFFFDC034) // (ADC1) ADC Channel Data Register 1 #define AT91C_ADC1_IMR ((AT91_REG *) 0xFFFDC02C) // (ADC1) ADC Interrupt Mask Register #define AT91C_ADC1_IER ((AT91_REG *) 0xFFFDC024) // (ADC1) ADC Interrupt Enable Register #define AT91C_ADC1_SR ((AT91_REG *) 0xFFFDC01C) // (ADC1) ADC Status Register #define AT91C_ADC1_CDR2 ((AT91_REG *) 0xFFFDC038) // (ADC1) ADC Channel Data Register 2 #define AT91C_ADC1_CDR0 ((AT91_REG *) 0xFFFDC030) // (ADC1) ADC Channel Data Register 0 #define AT91C_ADC1_CDR3 ((AT91_REG *) 0xFFFDC03C) // (ADC1) ADC Channel Data Register 3 #define AT91C_ADC1_CDR6 ((AT91_REG *) 0xFFFDC048) // (ADC1) ADC Channel Data Register 6 #define AT91C_ADC1_CDR4 ((AT91_REG *) 0xFFFDC040) // (ADC1) ADC Channel Data Register 4 #define AT91C_ADC1_CR ((AT91_REG *) 0xFFFDC000) // (ADC1) ADC Control Register #define AT91C_ADC1_CDR7 ((AT91_REG *) 0xFFFDC04C) // (ADC1) ADC Channel Data Register 7 #define AT91C_ADC1_CDR5 ((AT91_REG *) 0xFFFDC044) // (ADC1) ADC Channel Data Register 5 #define AT91C_ADC1_CHDR ((AT91_REG *) 0xFFFDC014) // (ADC1) ADC Channel Disable Register #define AT91C_ADC1_MR ((AT91_REG *) 0xFFFDC004) // (ADC1) ADC Mode Register #define AT91C_ADC1_IDR ((AT91_REG *) 0xFFFDC028) // (ADC1) ADC Interrupt Disable Register #define AT91C_ADC1_LCDR ((AT91_REG *) 0xFFFDC020) // (ADC1) ADC Last Converted Data Register #define AT91C_ADC1_CHSR ((AT91_REG *) 0xFFFDC018) // (ADC1) ADC Channel Status Register #define AT91C_ADC1_CHER ((AT91_REG *) 0xFFFDC010) // (ADC1) ADC Channel Enable Register // ========== Register definition for PDC_SPI0 peripheral ========== #define AT91C_SPI0_PTCR ((AT91_REG *) 0xFFFE0120) // (PDC_SPI0) PDC Transfer Control Register #define AT91C_SPI0_TNPR ((AT91_REG *) 0xFFFE0118) // (PDC_SPI0) Transmit Next Pointer Register #define AT91C_SPI0_RNPR ((AT91_REG *) 0xFFFE0110) // (PDC_SPI0) Receive Next Pointer Register #define AT91C_SPI0_TPR ((AT91_REG *) 0xFFFE0108) // (PDC_SPI0) Transmit Pointer Register #define AT91C_SPI0_RPR ((AT91_REG *) 0xFFFE0100) // (PDC_SPI0) Receive Pointer Register #define AT91C_SPI0_PTSR ((AT91_REG *) 0xFFFE0124) // (PDC_SPI0) PDC Transfer Status Register #define AT91C_SPI0_TNCR ((AT91_REG *) 0xFFFE011C) // (PDC_SPI0) Transmit Next Counter Register #define AT91C_SPI0_RNCR ((AT91_REG *) 0xFFFE0114) // (PDC_SPI0) Receive Next Counter Register #define AT91C_SPI0_TCR ((AT91_REG *) 0xFFFE010C) // (PDC_SPI0) Transmit Counter Register #define AT91C_SPI0_RCR ((AT91_REG *) 0xFFFE0104) // (PDC_SPI0) Receive Counter Register // ========== Register definition for SPI0 peripheral ========== #define AT91C_SPI0_CSR ((AT91_REG *) 0xFFFE0030) // (SPI0) Chip Select Register #define AT91C_SPI0_IDR ((AT91_REG *) 0xFFFE0018) // (SPI0) Interrupt Disable Register #define AT91C_SPI0_SR ((AT91_REG *) 0xFFFE0010) // (SPI0) Status Register #define AT91C_SPI0_RDR ((AT91_REG *) 0xFFFE0008) // (SPI0) Receive Data Register #define AT91C_SPI0_CR ((AT91_REG *) 0xFFFE0000) // (SPI0) Control Register #define AT91C_SPI0_IMR ((AT91_REG *) 0xFFFE001C) // (SPI0) Interrupt Mask Register #define AT91C_SPI0_IER ((AT91_REG *) 0xFFFE0014) // (SPI0) Interrupt Enable Register #define AT91C_SPI0_TDR ((AT91_REG *) 0xFFFE000C) // (SPI0) Transmit Data Register #define AT91C_SPI0_MR ((AT91_REG *) 0xFFFE0004) // (SPI0) Mode Register // ========== Register definition for PDC_SPI1 peripheral ========== #define AT91C_SPI1_RNPR ((AT91_REG *) 0xFFFE4110) // (PDC_SPI1) Receive Next Pointer Register #define AT91C_SPI1_TPR ((AT91_REG *) 0xFFFE4108) // (PDC_SPI1) Transmit Pointer Register #define AT91C_SPI1_RPR ((AT91_REG *) 0xFFFE4100) // (PDC_SPI1) Receive Pointer Register #define AT91C_SPI1_PTSR ((AT91_REG *) 0xFFFE4124) // (PDC_SPI1) PDC Transfer Status Register #define AT91C_SPI1_RCR ((AT91_REG *) 0xFFFE4104) // (PDC_SPI1) Receive Counter Register #define AT91C_SPI1_TCR ((AT91_REG *) 0xFFFE410C) // (PDC_SPI1) Transmit Counter Register #define AT91C_SPI1_RNCR ((AT91_REG *) 0xFFFE4114) // (PDC_SPI1) Receive Next Counter Register #define AT91C_SPI1_TNCR ((AT91_REG *) 0xFFFE411C) // (PDC_SPI1) Transmit Next Counter Register #define AT91C_SPI1_TNPR ((AT91_REG *) 0xFFFE4118) // (PDC_SPI1) Transmit Next Pointer Register #define AT91C_SPI1_PTCR ((AT91_REG *) 0xFFFE4120) // (PDC_SPI1) PDC Transfer Control Register // ========== Register definition for SPI1 peripheral ========== #define AT91C_SPI1_CSR ((AT91_REG *) 0xFFFE4030) // (SPI1) Chip Select Register #define AT91C_SPI1_IDR ((AT91_REG *) 0xFFFE4018) // (SPI1) Interrupt Disable Register #define AT91C_SPI1_SR ((AT91_REG *) 0xFFFE4010) // (SPI1) Status Register #define AT91C_SPI1_RDR ((AT91_REG *) 0xFFFE4008) // (SPI1) Receive Data Register #define AT91C_SPI1_CR ((AT91_REG *) 0xFFFE4000) // (SPI1) Control Register #define AT91C_SPI1_IMR ((AT91_REG *) 0xFFFE401C) // (SPI1) Interrupt Mask Register #define AT91C_SPI1_IER ((AT91_REG *) 0xFFFE4014) // (SPI1) Interrupt Enable Register #define AT91C_SPI1_TDR ((AT91_REG *) 0xFFFE400C) // (SPI1) Transmit Data Register #define AT91C_SPI1_MR ((AT91_REG *) 0xFFFE4004) // (SPI1) Mode Register // ***************************************************************************** // PIO DEFINITIONS FOR AT91SAM7A3 // ***************************************************************************** #define AT91C_PIO_PA0 ((unsigned int) 1 << 0) // Pin Controlled by PA0 #define AT91C_PA0_TWD ((unsigned int) AT91C_PIO_PA0) // TWI Two-wire Serial Data #define AT91C_PA0_ADTRG0 ((unsigned int) AT91C_PIO_PA0) // ADC0 External Trigger #define AT91C_PIO_PA1 ((unsigned int) 1 << 1) // Pin Controlled by PA1 #define AT91C_PA1_TWCK ((unsigned int) AT91C_PIO_PA1) // TWI Two-wire Serial Clock #define AT91C_PA1_ADTRG1 ((unsigned int) AT91C_PIO_PA1) // ADC1 External Trigger #define AT91C_PIO_PA10 ((unsigned int) 1 << 10) // Pin Controlled by PA10 #define AT91C_PA10_TXD2 ((unsigned int) AT91C_PIO_PA10) // USART 2 Transmit Data #define AT91C_PA10_SPI1_SPCK ((unsigned int) AT91C_PIO_PA10) // SPI1 Serial Clock #define AT91C_PIO_PA11 ((unsigned int) 1 << 11) // Pin Controlled by PA11 #define AT91C_PA11_SPI0_NPCS0 ((unsigned int) AT91C_PIO_PA11) // SPI0 Peripheral Chip Select 0 #define AT91C_PIO_PA12 ((unsigned int) 1 << 12) // Pin Controlled by PA12 #define AT91C_PA12_SPI0_NPCS1 ((unsigned int) AT91C_PIO_PA12) // SPI0 Peripheral Chip Select 1 #define AT91C_PA12_MCDA1 ((unsigned int) AT91C_PIO_PA12) // Multimedia Card A Data 1 #define AT91C_PIO_PA13 ((unsigned int) 1 << 13) // Pin Controlled by PA13 #define AT91C_PA13_SPI0_NPCS2 ((unsigned int) AT91C_PIO_PA13) // SPI0 Peripheral Chip Select 2 #define AT91C_PA13_MCDA2 ((unsigned int) AT91C_PIO_PA13) // Multimedia Card A Data 2 #define AT91C_PIO_PA14 ((unsigned int) 1 << 14) // Pin Controlled by PA14 #define AT91C_PA14_SPI0_NPCS3 ((unsigned int) AT91C_PIO_PA14) // SPI0 Peripheral Chip Select 3 #define AT91C_PA14_MCDA3 ((unsigned int) AT91C_PIO_PA14) // Multimedia Card A Data 3 #define AT91C_PIO_PA15 ((unsigned int) 1 << 15) // Pin Controlled by PA15 #define AT91C_PA15_SPI0_MISO ((unsigned int) AT91C_PIO_PA15) // SPI0 Master In Slave #define AT91C_PA15_MCDA0 ((unsigned int) AT91C_PIO_PA15) // Multimedia Card A Data 0 #define AT91C_PIO_PA16 ((unsigned int) 1 << 16) // Pin Controlled by PA16 #define AT91C_PA16_SPI0_MOSI ((unsigned int) AT91C_PIO_PA16) // SPI0 Master Out Slave #define AT91C_PA16_MCCDA ((unsigned int) AT91C_PIO_PA16) // Multimedia Card A Command #define AT91C_PIO_PA17 ((unsigned int) 1 << 17) // Pin Controlled by PA17 #define AT91C_PA17_SPI0_SPCK ((unsigned int) AT91C_PIO_PA17) // SPI0 Serial Clock #define AT91C_PA17_MCCK ((unsigned int) AT91C_PIO_PA17) // Multimedia Card Clock #define AT91C_PIO_PA18 ((unsigned int) 1 << 18) // Pin Controlled by PA18 #define AT91C_PA18_PWM0 ((unsigned int) AT91C_PIO_PA18) // PWMC Channel 0 #define AT91C_PA18_PCK0 ((unsigned int) AT91C_PIO_PA18) // PMC Programmable Clock Output 0 #define AT91C_PIO_PA19 ((unsigned int) 1 << 19) // Pin Controlled by PA19 #define AT91C_PA19_PWM1 ((unsigned int) AT91C_PIO_PA19) // PWMC Channel 1 #define AT91C_PA19_PCK1 ((unsigned int) AT91C_PIO_PA19) // PMC Programmable Clock Output 1 #define AT91C_PIO_PA2 ((unsigned int) 1 << 2) // Pin Controlled by PA2 #define AT91C_PA2_RXD0 ((unsigned int) AT91C_PIO_PA2) // USART 0 Receive Data #define AT91C_PIO_PA20 ((unsigned int) 1 << 20) // Pin Controlled by PA20 #define AT91C_PA20_PWM2 ((unsigned int) AT91C_PIO_PA20) // PWMC Channel 2 #define AT91C_PA20_PCK2 ((unsigned int) AT91C_PIO_PA20) // PMC Programmable Clock Output 2 #define AT91C_PIO_PA21 ((unsigned int) 1 << 21) // Pin Controlled by PA21 #define AT91C_PA21_PWM3 ((unsigned int) AT91C_PIO_PA21) // PWMC Channel 3 #define AT91C_PA21_PCK3 ((unsigned int) AT91C_PIO_PA21) // PMC Programmable Clock Output 3 #define AT91C_PIO_PA22 ((unsigned int) 1 << 22) // Pin Controlled by PA22 #define AT91C_PA22_PWM4 ((unsigned int) AT91C_PIO_PA22) // PWMC Channel 4 #define AT91C_PA22_IRQ0 ((unsigned int) AT91C_PIO_PA22) // Interrupt input 0 #define AT91C_PIO_PA23 ((unsigned int) 1 << 23) // Pin Controlled by PA23 #define AT91C_PA23_PWM5 ((unsigned int) AT91C_PIO_PA23) // PWMC Channel 5 #define AT91C_PA23_IRQ1 ((unsigned int) AT91C_PIO_PA23) // Interrupt input 1 #define AT91C_PIO_PA24 ((unsigned int) 1 << 24) // Pin Controlled by PA24 #define AT91C_PA24_PWM6 ((unsigned int) AT91C_PIO_PA24) // PWMC Channel 6 #define AT91C_PA24_TCLK4 ((unsigned int) AT91C_PIO_PA24) // Timer Counter 4 external Clock Input #define AT91C_PIO_PA25 ((unsigned int) 1 << 25) // Pin Controlled by PA25 #define AT91C_PA25_PWM7 ((unsigned int) AT91C_PIO_PA25) // PWMC Channel 7 #define AT91C_PA25_TCLK5 ((unsigned int) AT91C_PIO_PA25) // Timer Counter 5 external Clock Input #define AT91C_PIO_PA26 ((unsigned int) 1 << 26) // Pin Controlled by PA26 #define AT91C_PA26_CANRX0 ((unsigned int) AT91C_PIO_PA26) // CAN Receive 0 #define AT91C_PIO_PA27 ((unsigned int) 1 << 27) // Pin Controlled by PA27 #define AT91C_PA27_CANTX0 ((unsigned int) AT91C_PIO_PA27) // CAN Transmit 0 #define AT91C_PIO_PA28 ((unsigned int) 1 << 28) // Pin Controlled by PA28 #define AT91C_PA28_CANRX1 ((unsigned int) AT91C_PIO_PA28) // CAN Receive 1 #define AT91C_PA28_TCLK3 ((unsigned int) AT91C_PIO_PA28) // Timer Counter 3 external Clock Input #define AT91C_PIO_PA29 ((unsigned int) 1 << 29) // Pin Controlled by PA29 #define AT91C_PA29_CANTX1 ((unsigned int) AT91C_PIO_PA29) // CAN Transmit 1 #define AT91C_PA29_TCLK6 ((unsigned int) AT91C_PIO_PA29) // Timer Counter 6 external clock input #define AT91C_PIO_PA3 ((unsigned int) 1 << 3) // Pin Controlled by PA3 #define AT91C_PA3_TXD0 ((unsigned int) AT91C_PIO_PA3) // USART 0 Transmit Data #define AT91C_PIO_PA30 ((unsigned int) 1 << 30) // Pin Controlled by PA30 #define AT91C_PA30_DRXD ((unsigned int) AT91C_PIO_PA30) // DBGU Debug Receive Data #define AT91C_PA30_TCLK7 ((unsigned int) AT91C_PIO_PA30) // Timer Counter 7 external clock input #define AT91C_PIO_PA31 ((unsigned int) 1 << 31) // Pin Controlled by PA31 #define AT91C_PA31_DTXD ((unsigned int) AT91C_PIO_PA31) // DBGU Debug Transmit Data #define AT91C_PA31_TCLK8 ((unsigned int) AT91C_PIO_PA31) // Timer Counter 8 external clock input #define AT91C_PIO_PA4 ((unsigned int) 1 << 4) // Pin Controlled by PA4 #define AT91C_PA4_SCK0 ((unsigned int) AT91C_PIO_PA4) // USART 0 Serial Clock #define AT91C_PA4_SPI1_NPCS0 ((unsigned int) AT91C_PIO_PA4) // SPI1 Peripheral Chip Select 0 #define AT91C_PIO_PA5 ((unsigned int) 1 << 5) // Pin Controlled by PA5 #define AT91C_PA5_RTS0 ((unsigned int) AT91C_PIO_PA5) // USART 0 Ready To Send #define AT91C_PA5_SPI1_NPCS1 ((unsigned int) AT91C_PIO_PA5) // SPI1 Peripheral Chip Select 1 #define AT91C_PIO_PA6 ((unsigned int) 1 << 6) // Pin Controlled by PA6 #define AT91C_PA6_CTS0 ((unsigned int) AT91C_PIO_PA6) // USART 0 Clear To Send #define AT91C_PA6_SPI1_NPCS2 ((unsigned int) AT91C_PIO_PA6) // SPI1 Peripheral Chip Select 2 #define AT91C_PIO_PA7 ((unsigned int) 1 << 7) // Pin Controlled by PA7 #define AT91C_PA7_RXD1 ((unsigned int) AT91C_PIO_PA7) // USART 1 Receive Data #define AT91C_PA7_SPI1_NPCS3 ((unsigned int) AT91C_PIO_PA7) // SPI1 Peripheral Chip Select 3 #define AT91C_PIO_PA8 ((unsigned int) 1 << 8) // Pin Controlled by PA8 #define AT91C_PA8_TXD1 ((unsigned int) AT91C_PIO_PA8) // USART 1 Transmit Data #define AT91C_PA8_SPI1_MISO ((unsigned int) AT91C_PIO_PA8) // SPI1 Master In Slave #define AT91C_PIO_PA9 ((unsigned int) 1 << 9) // Pin Controlled by PA9 #define AT91C_PA9_RXD2 ((unsigned int) AT91C_PIO_PA9) // USART 2 Receive Data #define AT91C_PA9_SPI1_MOSI ((unsigned int) AT91C_PIO_PA9) // SPI1 Master Out Slave #define AT91C_PIO_PB0 ((unsigned int) 1 << 0) // Pin Controlled by PB0 #define AT91C_PB0_IRQ2 ((unsigned int) AT91C_PIO_PB0) // Interrupt input 2 #define AT91C_PB0_PWM5 ((unsigned int) AT91C_PIO_PB0) // PWMC Channel 5 #define AT91C_PIO_PB1 ((unsigned int) 1 << 1) // Pin Controlled by PB1 #define AT91C_PB1_IRQ3 ((unsigned int) AT91C_PIO_PB1) // Interrupt input 3 #define AT91C_PB1_PWM6 ((unsigned int) AT91C_PIO_PB1) // PWMC Channel 6 #define AT91C_PIO_PB10 ((unsigned int) 1 << 10) // Pin Controlled by PB10 #define AT91C_PB10_TCLK1 ((unsigned int) AT91C_PIO_PB10) // Timer Counter 1 external clock input #define AT91C_PB10_RK1 ((unsigned int) AT91C_PIO_PB10) // SSC Receive Clock 1 #define AT91C_PIO_PB11 ((unsigned int) 1 << 11) // Pin Controlled by PB11 #define AT91C_PB11_TCLK2 ((unsigned int) AT91C_PIO_PB11) // Timer Counter 2 external clock input #define AT91C_PB11_RF1 ((unsigned int) AT91C_PIO_PB11) // SSC Receive Frame Sync 1 #define AT91C_PIO_PB12 ((unsigned int) 1 << 12) // Pin Controlled by PB12 #define AT91C_PB12_TIOA0 ((unsigned int) AT91C_PIO_PB12) // Timer Counter 0 Multipurpose Timer I/O Pin A #define AT91C_PB12_TD1 ((unsigned int) AT91C_PIO_PB12) // SSC Transmit Data 1 #define AT91C_PIO_PB13 ((unsigned int) 1 << 13) // Pin Controlled by PB13 #define AT91C_PB13_TIOB0 ((unsigned int) AT91C_PIO_PB13) // Timer Counter 0 Multipurpose Timer I/O Pin B #define AT91C_PB13_RD1 ((unsigned int) AT91C_PIO_PB13) // SSC Receive Data 1 #define AT91C_PIO_PB14 ((unsigned int) 1 << 14) // Pin Controlled by PB14 #define AT91C_PB14_TIOA1 ((unsigned int) AT91C_PIO_PB14) // Timer Counter 1 Multipurpose Timer I/O Pin A #define AT91C_PB14_PWM0 ((unsigned int) AT91C_PIO_PB14) // PWMC Channel 0 #define AT91C_PIO_PB15 ((unsigned int) 1 << 15) // Pin Controlled by PB15 #define AT91C_PB15_TIOB1 ((unsigned int) AT91C_PIO_PB15) // Timer Counter 1 Multipurpose Timer I/O Pin B #define AT91C_PB15_PWM1 ((unsigned int) AT91C_PIO_PB15) // PWMC Channel 1 #define AT91C_PIO_PB16 ((unsigned int) 1 << 16) // Pin Controlled by PB16 #define AT91C_PB16_TIOA2 ((unsigned int) AT91C_PIO_PB16) // Timer Counter 2 Multipurpose Timer I/O Pin A #define AT91C_PB16_PWM2 ((unsigned int) AT91C_PIO_PB16) // PWMC Channel 2 #define AT91C_PIO_PB17 ((unsigned int) 1 << 17) // Pin Controlled by PB17 #define AT91C_PB17_TIOB2 ((unsigned int) AT91C_PIO_PB17) // Timer Counter 2 Multipurpose Timer I/O Pin B #define AT91C_PB17_PWM3 ((unsigned int) AT91C_PIO_PB17) // PWMC Channel 3 #define AT91C_PIO_PB18 ((unsigned int) 1 << 18) // Pin Controlled by PB18 #define AT91C_PB18_TIOA3 ((unsigned int) AT91C_PIO_PB18) // Timer Counter 3 Multipurpose Timer I/O Pin A #define AT91C_PB18_PWM4 ((unsigned int) AT91C_PIO_PB18) // PWMC Channel 4 #define AT91C_PIO_PB19 ((unsigned int) 1 << 19) // Pin Controlled by PB19 #define AT91C_PB19_TIOB3 ((unsigned int) AT91C_PIO_PB19) // Timer Counter 3 Multipurpose Timer I/O Pin B #define AT91C_PB19_SPI1_NPCS1 ((unsigned int) AT91C_PIO_PB19) // SPI1 Peripheral Chip Select 1 #define AT91C_PIO_PB2 ((unsigned int) 1 << 2) // Pin Controlled by PB2 #define AT91C_PB2_TF0 ((unsigned int) AT91C_PIO_PB2) // SSC Transmit Frame Sync 0 #define AT91C_PB2_PWM7 ((unsigned int) AT91C_PIO_PB2) // PWMC Channel 7 #define AT91C_PIO_PB20 ((unsigned int) 1 << 20) // Pin Controlled by PB20 #define AT91C_PB20_TIOA4 ((unsigned int) AT91C_PIO_PB20) // Timer Counter 4 Multipurpose Timer I/O Pin A #define AT91C_PB20_SPI1_NPCS2 ((unsigned int) AT91C_PIO_PB20) // SPI1 Peripheral Chip Select 2 #define AT91C_PIO_PB21 ((unsigned int) 1 << 21) // Pin Controlled by PB21 #define AT91C_PB21_TIOB4 ((unsigned int) AT91C_PIO_PB21) // Timer Counter 4 Multipurpose Timer I/O Pin B #define AT91C_PB21_SPI1_NPCS3 ((unsigned int) AT91C_PIO_PB21) // SPI1 Peripheral Chip Select 3 #define AT91C_PIO_PB22 ((unsigned int) 1 << 22) // Pin Controlled by PB22 #define AT91C_PB22_TIOA5 ((unsigned int) AT91C_PIO_PB22) // Timer Counter 5 Multipurpose Timer I/O Pin A #define AT91C_PIO_PB23 ((unsigned int) 1 << 23) // Pin Controlled by PB23 #define AT91C_PB23_TIOB5 ((unsigned int) AT91C_PIO_PB23) // Timer Counter 5 Multipurpose Timer I/O Pin B #define AT91C_PIO_PB24 ((unsigned int) 1 << 24) // Pin Controlled by PB24 #define AT91C_PB24_TIOA6 ((unsigned int) AT91C_PIO_PB24) // Timer Counter 6 Multipurpose Timer I/O Pin A #define AT91C_PB24_RTS1 ((unsigned int) AT91C_PIO_PB24) // USART 1 Ready To Send #define AT91C_PIO_PB25 ((unsigned int) 1 << 25) // Pin Controlled by PB25 #define AT91C_PB25_TIOB6 ((unsigned int) AT91C_PIO_PB25) // Timer Counter 6 Multipurpose Timer I/O Pin B #define AT91C_PB25_CTS1 ((unsigned int) AT91C_PIO_PB25) // USART 1 Clear To Send #define AT91C_PIO_PB26 ((unsigned int) 1 << 26) // Pin Controlled by PB26 #define AT91C_PB26_TIOA7 ((unsigned int) AT91C_PIO_PB26) // Timer Counter 7 Multipurpose Timer I/O Pin A #define AT91C_PB26_SCK1 ((unsigned int) AT91C_PIO_PB26) // USART 1 Serial Clock #define AT91C_PIO_PB27 ((unsigned int) 1 << 27) // Pin Controlled by PB27 #define AT91C_PB27_TIOB7 ((unsigned int) AT91C_PIO_PB27) // Timer Counter 7 Multipurpose Timer I/O Pin B #define AT91C_PB27_RTS2 ((unsigned int) AT91C_PIO_PB27) // USART 2 Ready To Send #define AT91C_PIO_PB28 ((unsigned int) 1 << 28) // Pin Controlled by PB28 #define AT91C_PB28_TIOA8 ((unsigned int) AT91C_PIO_PB28) // Timer Counter 8 Multipurpose Timer I/O Pin A #define AT91C_PB28_CTS2 ((unsigned int) AT91C_PIO_PB28) // USART 2 Clear To Send #define AT91C_PIO_PB29 ((unsigned int) 1 << 29) // Pin Controlled by PB29 #define AT91C_PB29_TIOB8 ((unsigned int) AT91C_PIO_PB29) // Timer Counter 8 Multipurpose Timer I/O Pin B #define AT91C_PB29_SCK2 ((unsigned int) AT91C_PIO_PB29) // USART 2 Serial Clock #define AT91C_PIO_PB3 ((unsigned int) 1 << 3) // Pin Controlled by PB3 #define AT91C_PB3_TK0 ((unsigned int) AT91C_PIO_PB3) // SSC Transmit Clock 0 #define AT91C_PB3_PCK0 ((unsigned int) AT91C_PIO_PB3) // PMC Programmable Clock Output 0 #define AT91C_PIO_PB4 ((unsigned int) 1 << 4) // Pin Controlled by PB4 #define AT91C_PB4_TD0 ((unsigned int) AT91C_PIO_PB4) // SSC Transmit data #define AT91C_PB4_PCK1 ((unsigned int) AT91C_PIO_PB4) // PMC Programmable Clock Output 1 #define AT91C_PIO_PB5 ((unsigned int) 1 << 5) // Pin Controlled by PB5 #define AT91C_PB5_RD0 ((unsigned int) AT91C_PIO_PB5) // SSC Receive Data #define AT91C_PB5_PCK2 ((unsigned int) AT91C_PIO_PB5) // PMC Programmable Clock Output 2 #define AT91C_PIO_PB6 ((unsigned int) 1 << 6) // Pin Controlled by PB6 #define AT91C_PB6_RK0 ((unsigned int) AT91C_PIO_PB6) // SSC Receive Clock #define AT91C_PB6_PCK3 ((unsigned int) AT91C_PIO_PB6) // PMC Programmable Clock Output 3 #define AT91C_PIO_PB7 ((unsigned int) 1 << 7) // Pin Controlled by PB7 #define AT91C_PB7_RF0 ((unsigned int) AT91C_PIO_PB7) // SSC Receive Frame Sync 0 #define AT91C_PB7_CANTX1 ((unsigned int) AT91C_PIO_PB7) // CAN Transmit 1 #define AT91C_PIO_PB8 ((unsigned int) 1 << 8) // Pin Controlled by PB8 #define AT91C_PB8_FIQ ((unsigned int) AT91C_PIO_PB8) // AIC Fast Interrupt Input #define AT91C_PB8_TF1 ((unsigned int) AT91C_PIO_PB8) // SSC Transmit Frame Sync 1 #define AT91C_PIO_PB9 ((unsigned int) 1 << 9) // Pin Controlled by PB9 #define AT91C_PB9_TCLK0 ((unsigned int) AT91C_PIO_PB9) // Timer Counter 0 external clock input #define AT91C_PB9_TK1 ((unsigned int) AT91C_PIO_PB9) // SSC Transmit Clock 1 // ***************************************************************************** // PERIPHERAL ID DEFINITIONS FOR AT91SAM7A3 // ***************************************************************************** #define AT91C_ID_FIQ ((unsigned int) 0) // Advanced Interrupt Controller (FIQ) #define AT91C_ID_SYS ((unsigned int) 1) // System Peripheral #define AT91C_ID_PIOA ((unsigned int) 2) // Parallel IO Controller A #define AT91C_ID_PIOB ((unsigned int) 3) // Parallel IO Controller B #define AT91C_ID_CAN0 ((unsigned int) 4) // Control Area Network Controller 0 #define AT91C_ID_CAN1 ((unsigned int) 5) // Control Area Network Controller 1 #define AT91C_ID_US0 ((unsigned int) 6) // USART 0 #define AT91C_ID_US1 ((unsigned int) 7) // USART 1 #define AT91C_ID_US2 ((unsigned int) 8) // USART 2 #define AT91C_ID_MCI ((unsigned int) 9) // Multimedia Card Interface #define AT91C_ID_TWI ((unsigned int) 10) // Two-Wire Interface #define AT91C_ID_SPI0 ((unsigned int) 11) // Serial Peripheral Interface 0 #define AT91C_ID_SPI1 ((unsigned int) 12) // Serial Peripheral Interface 1 #define AT91C_ID_SSC0 ((unsigned int) 13) // Serial Synchronous Controller 0 #define AT91C_ID_SSC1 ((unsigned int) 14) // Serial Synchronous Controller 1 #define AT91C_ID_TC0 ((unsigned int) 15) // Timer Counter 0 #define AT91C_ID_TC1 ((unsigned int) 16) // Timer Counter 1 #define AT91C_ID_TC2 ((unsigned int) 17) // Timer Counter 2 #define AT91C_ID_TC3 ((unsigned int) 18) // Timer Counter 3 #define AT91C_ID_TC4 ((unsigned int) 19) // Timer Counter 4 #define AT91C_ID_TC5 ((unsigned int) 20) // Timer Counter 5 #define AT91C_ID_TC6 ((unsigned int) 21) // Timer Counter 6 #define AT91C_ID_TC7 ((unsigned int) 22) // Timer Counter 7 #define AT91C_ID_TC8 ((unsigned int) 23) // Timer Counter 8 #define AT91C_ID_ADC0 ((unsigned int) 24) // Analog To Digital Converter 0 #define AT91C_ID_ADC1 ((unsigned int) 25) // Analog To Digital Converter 1 #define AT91C_ID_PWMC ((unsigned int) 26) // Pulse Width Modulation Controller #define AT91C_ID_UDP ((unsigned int) 27) // USB Device Port #define AT91C_ID_IRQ0 ((unsigned int) 28) // Advanced Interrupt Controller (IRQ0) #define AT91C_ID_IRQ1 ((unsigned int) 29) // Advanced Interrupt Controller (IRQ1) #define AT91C_ID_IRQ2 ((unsigned int) 30) // Advanced Interrupt Controller (IRQ2) #define AT91C_ID_IRQ3 ((unsigned int) 31) // Advanced Interrupt Controller (IRQ3) #define AT91C_ALL_INT ((unsigned int) 0xFFFFFFFF) // ALL VALID INTERRUPTS // ***************************************************************************** // BASE ADDRESS DEFINITIONS FOR AT91SAM7A3 // ***************************************************************************** #define AT91C_BASE_SYS ((AT91PS_SYS) 0xFFFFF000) // (SYS) Base Address #define AT91C_BASE_AIC ((AT91PS_AIC) 0xFFFFF000) // (AIC) Base Address #define AT91C_BASE_PDC_DBGU ((AT91PS_PDC) 0xFFFFF300) // (PDC_DBGU) Base Address #define AT91C_BASE_DBGU ((AT91PS_DBGU) 0xFFFFF200) // (DBGU) Base Address #define AT91C_BASE_PIOA ((AT91PS_PIO) 0xFFFFF400) // (PIOA) Base Address #define AT91C_BASE_PIOB ((AT91PS_PIO) 0xFFFFF600) // (PIOB) Base Address #define AT91C_BASE_CKGR ((AT91PS_CKGR) 0xFFFFFC20) // (CKGR) Base Address #define AT91C_BASE_PMC ((AT91PS_PMC) 0xFFFFFC00) // (PMC) Base Address #define AT91C_BASE_RSTC ((AT91PS_RSTC) 0xFFFFFD00) // (RSTC) Base Address #define AT91C_BASE_SHDWC ((AT91PS_SHDWC) 0xFFFFFD10) // (SHDWC) Base Address #define AT91C_BASE_RTTC ((AT91PS_RTTC) 0xFFFFFD20) // (RTTC) Base Address #define AT91C_BASE_PITC ((AT91PS_PITC) 0xFFFFFD30) // (PITC) Base Address #define AT91C_BASE_WDTC ((AT91PS_WDTC) 0xFFFFFD40) // (WDTC) Base Address #define AT91C_BASE_MC ((AT91PS_MC) 0xFFFFFF00) // (MC) Base Address #define AT91C_BASE_CAN0_MB0 ((AT91PS_CAN_MB) 0xFFF80200) // (CAN0_MB0) Base Address #define AT91C_BASE_CAN0_MB1 ((AT91PS_CAN_MB) 0xFFF80220) // (CAN0_MB1) Base Address #define AT91C_BASE_CAN0_MB2 ((AT91PS_CAN_MB) 0xFFF80240) // (CAN0_MB2) Base Address #define AT91C_BASE_CAN0_MB3 ((AT91PS_CAN_MB) 0xFFF80260) // (CAN0_MB3) Base Address #define AT91C_BASE_CAN0_MB4 ((AT91PS_CAN_MB) 0xFFF80280) // (CAN0_MB4) Base Address #define AT91C_BASE_CAN0_MB5 ((AT91PS_CAN_MB) 0xFFF802A0) // (CAN0_MB5) Base Address #define AT91C_BASE_CAN0_MB6 ((AT91PS_CAN_MB) 0xFFF802C0) // (CAN0_MB6) Base Address #define AT91C_BASE_CAN0_MB7 ((AT91PS_CAN_MB) 0xFFF802E0) // (CAN0_MB7) Base Address #define AT91C_BASE_CAN0_MB8 ((AT91PS_CAN_MB) 0xFFF80300) // (CAN0_MB8) Base Address #define AT91C_BASE_CAN0_MB9 ((AT91PS_CAN_MB) 0xFFF80320) // (CAN0_MB9) Base Address #define AT91C_BASE_CAN0_MB10 ((AT91PS_CAN_MB) 0xFFF80340) // (CAN0_MB10) Base Address #define AT91C_BASE_CAN0_MB11 ((AT91PS_CAN_MB) 0xFFF80360) // (CAN0_MB11) Base Address #define AT91C_BASE_CAN0_MB12 ((AT91PS_CAN_MB) 0xFFF80380) // (CAN0_MB12) Base Address #define AT91C_BASE_CAN0_MB13 ((AT91PS_CAN_MB) 0xFFF803A0) // (CAN0_MB13) Base Address #define AT91C_BASE_CAN0_MB14 ((AT91PS_CAN_MB) 0xFFF803C0) // (CAN0_MB14) Base Address #define AT91C_BASE_CAN0_MB15 ((AT91PS_CAN_MB) 0xFFF803E0) // (CAN0_MB15) Base Address #define AT91C_BASE_CAN0 ((AT91PS_CAN) 0xFFF80000) // (CAN0) Base Address #define AT91C_BASE_CAN1_MB0 ((AT91PS_CAN_MB) 0xFFF84200) // (CAN1_MB0) Base Address #define AT91C_BASE_CAN1_MB1 ((AT91PS_CAN_MB) 0xFFF84220) // (CAN1_MB1) Base Address #define AT91C_BASE_CAN1_MB2 ((AT91PS_CAN_MB) 0xFFF84240) // (CAN1_MB2) Base Address #define AT91C_BASE_CAN1_MB3 ((AT91PS_CAN_MB) 0xFFF84260) // (CAN1_MB3) Base Address #define AT91C_BASE_CAN1_MB4 ((AT91PS_CAN_MB) 0xFFF84280) // (CAN1_MB4) Base Address #define AT91C_BASE_CAN1_MB5 ((AT91PS_CAN_MB) 0xFFF842A0) // (CAN1_MB5) Base Address #define AT91C_BASE_CAN1_MB6 ((AT91PS_CAN_MB) 0xFFF842C0) // (CAN1_MB6) Base Address #define AT91C_BASE_CAN1_MB7 ((AT91PS_CAN_MB) 0xFFF842E0) // (CAN1_MB7) Base Address #define AT91C_BASE_CAN1_MB8 ((AT91PS_CAN_MB) 0xFFF84300) // (CAN1_MB8) Base Address #define AT91C_BASE_CAN1_MB9 ((AT91PS_CAN_MB) 0xFFF84320) // (CAN1_MB9) Base Address #define AT91C_BASE_CAN1_MB10 ((AT91PS_CAN_MB) 0xFFF84340) // (CAN1_MB10) Base Address #define AT91C_BASE_CAN1_MB11 ((AT91PS_CAN_MB) 0xFFF84360) // (CAN1_MB11) Base Address #define AT91C_BASE_CAN1_MB12 ((AT91PS_CAN_MB) 0xFFF84380) // (CAN1_MB12) Base Address #define AT91C_BASE_CAN1_MB13 ((AT91PS_CAN_MB) 0xFFF843A0) // (CAN1_MB13) Base Address #define AT91C_BASE_CAN1_MB14 ((AT91PS_CAN_MB) 0xFFF843C0) // (CAN1_MB14) Base Address #define AT91C_BASE_CAN1_MB15 ((AT91PS_CAN_MB) 0xFFF843E0) // (CAN1_MB15) Base Address #define AT91C_BASE_CAN1 ((AT91PS_CAN) 0xFFF84000) // (CAN1) Base Address #define AT91C_BASE_TC0 ((AT91PS_TC) 0xFFFA0000) // (TC0) Base Address #define AT91C_BASE_TC1 ((AT91PS_TC) 0xFFFA0040) // (TC1) Base Address #define AT91C_BASE_TC2 ((AT91PS_TC) 0xFFFA0080) // (TC2) Base Address #define AT91C_BASE_TCB0 ((AT91PS_TCB) 0xFFFA0000) // (TCB0) Base Address #define AT91C_BASE_TC3 ((AT91PS_TC) 0xFFFA4000) // (TC3) Base Address #define AT91C_BASE_TC4 ((AT91PS_TC) 0xFFFA4040) // (TC4) Base Address #define AT91C_BASE_TC5 ((AT91PS_TC) 0xFFFA4080) // (TC5) Base Address #define AT91C_BASE_TCB1 ((AT91PS_TCB) 0xFFFA4000) // (TCB1) Base Address #define AT91C_BASE_TC6 ((AT91PS_TC) 0xFFFA8000) // (TC6) Base Address #define AT91C_BASE_TC7 ((AT91PS_TC) 0xFFFA8040) // (TC7) Base Address #define AT91C_BASE_TC8 ((AT91PS_TC) 0xFFFA8080) // (TC8) Base Address #define AT91C_BASE_TCB2 ((AT91PS_TCB) 0xFFFA8000) // (TCB2) Base Address #define AT91C_BASE_PDC_MCI ((AT91PS_PDC) 0xFFFAC100) // (PDC_MCI) Base Address #define AT91C_BASE_MCI ((AT91PS_MCI) 0xFFFAC000) // (MCI) Base Address #define AT91C_BASE_UDP ((AT91PS_UDP) 0xFFFB0000) // (UDP) Base Address #define AT91C_BASE_TWI ((AT91PS_TWI) 0xFFFB8000) // (TWI) Base Address #define AT91C_BASE_PDC_US0 ((AT91PS_PDC) 0xFFFC0100) // (PDC_US0) Base Address #define AT91C_BASE_US0 ((AT91PS_USART) 0xFFFC0000) // (US0) Base Address #define AT91C_BASE_PDC_US1 ((AT91PS_PDC) 0xFFFC4100) // (PDC_US1) Base Address #define AT91C_BASE_US1 ((AT91PS_USART) 0xFFFC4000) // (US1) Base Address #define AT91C_BASE_PDC_US2 ((AT91PS_PDC) 0xFFFC8100) // (PDC_US2) Base Address #define AT91C_BASE_US2 ((AT91PS_USART) 0xFFFC8000) // (US2) Base Address #define AT91C_BASE_PWMC_CH0 ((AT91PS_PWMC_CH) 0xFFFCC200) // (PWMC_CH0) Base Address #define AT91C_BASE_PWMC_CH1 ((AT91PS_PWMC_CH) 0xFFFCC220) // (PWMC_CH1) Base Address #define AT91C_BASE_PWMC_CH2 ((AT91PS_PWMC_CH) 0xFFFCC240) // (PWMC_CH2) Base Address #define AT91C_BASE_PWMC_CH3 ((AT91PS_PWMC_CH) 0xFFFCC260) // (PWMC_CH3) Base Address #define AT91C_BASE_PWMC_CH4 ((AT91PS_PWMC_CH) 0xFFFCC280) // (PWMC_CH4) Base Address #define AT91C_BASE_PWMC_CH5 ((AT91PS_PWMC_CH) 0xFFFCC2A0) // (PWMC_CH5) Base Address #define AT91C_BASE_PWMC_CH6 ((AT91PS_PWMC_CH) 0xFFFCC2C0) // (PWMC_CH6) Base Address #define AT91C_BASE_PWMC_CH7 ((AT91PS_PWMC_CH) 0xFFFCC2E0) // (PWMC_CH7) Base Address #define AT91C_BASE_PWMC ((AT91PS_PWMC) 0xFFFCC000) // (PWMC) Base Address #define AT91C_BASE_PDC_SSC0 ((AT91PS_PDC) 0xFFFD0100) // (PDC_SSC0) Base Address #define AT91C_BASE_SSC0 ((AT91PS_SSC) 0xFFFD0000) // (SSC0) Base Address #define AT91C_BASE_PDC_SSC1 ((AT91PS_PDC) 0xFFFD4100) // (PDC_SSC1) Base Address #define AT91C_BASE_SSC1 ((AT91PS_SSC) 0xFFFD4000) // (SSC1) Base Address #define AT91C_BASE_PDC_ADC0 ((AT91PS_PDC) 0xFFFD8100) // (PDC_ADC0) Base Address #define AT91C_BASE_ADC0 ((AT91PS_ADC) 0xFFFD8000) // (ADC0) Base Address #define AT91C_BASE_PDC_ADC1 ((AT91PS_PDC) 0xFFFDC100) // (PDC_ADC1) Base Address #define AT91C_BASE_ADC1 ((AT91PS_ADC) 0xFFFDC000) // (ADC1) Base Address #define AT91C_BASE_PDC_SPI0 ((AT91PS_PDC) 0xFFFE0100) // (PDC_SPI0) Base Address #define AT91C_BASE_SPI0 ((AT91PS_SPI) 0xFFFE0000) // (SPI0) Base Address #define AT91C_BASE_PDC_SPI1 ((AT91PS_PDC) 0xFFFE4100) // (PDC_SPI1) Base Address #define AT91C_BASE_SPI1 ((AT91PS_SPI) 0xFFFE4000) // (SPI1) Base Address // ***************************************************************************** // MEMORY MAPPING DEFINITIONS FOR AT91SAM7A3 // ***************************************************************************** // ISRAM #define AT91C_ISRAM ((char *) 0x00200000) // Internal SRAM base address #define AT91C_ISRAM_SIZE ((unsigned int) 0x00008000) // Internal SRAM size in byte (32 Kbytes) // IFLASH #define AT91C_IFLASH ((char *) 0x00100000) // Internal FLASH base address #define AT91C_IFLASH_SIZE ((unsigned int) 0x00040000) // Internal FLASH size in byte (256 Kbytes) #define AT91C_IFLASH_PAGE_SIZE ((unsigned int) 256) // Internal FLASH Page Size: 256 bytes #define AT91C_IFLASH_LOCK_REGION_SIZE ((unsigned int) 16384) // Internal FLASH Lock Region Size: 16 Kbytes #define AT91C_IFLASH_NB_OF_PAGES ((unsigned int) 1024) // Internal FLASH Number of Pages: 1024 bytes #define AT91C_IFLASH_NB_OF_LOCK_BITS ((unsigned int) 16) // Internal FLASH Number of Lock Bits: 16 bytes #endif cpputest-3.7.2/platforms_startup/armcc/AT91SAM7A3/lib_AT91SAM7A3.h000644 000765 000024 00000571722 12521603460 025002 0ustar00basvoddestaff000000 000000 //* ---------------------------------------------------------------------------- //* ATMEL Microcontroller Software Support - ROUSSET - //* ---------------------------------------------------------------------------- //* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR //* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF //* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE //* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, //* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT //* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, //* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING //* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, //* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. //* ---------------------------------------------------------------------------- //* File Name : lib_AT91SAM7A3.h //* Object : AT91SAM7A3 inlined functions //* Generated : AT91 SW Application Group 09/13/2005 (09:48:02) //* //* CVS Reference : /lib_MC_SAM.h/1.3/Wed Apr 28 09:02:35 2004// //* CVS Reference : /lib_pdc.h/1.2/Tue Jul 2 12:29:40 2002// //* CVS Reference : /lib_dbgu.h/1.1/Fri Jan 31 12:18:40 2003// //* CVS Reference : /lib_shdwc_6122A.h/1.1/Wed Oct 6 13:06:00 2004// //* CVS Reference : /lib_spi2.h/1.2/Tue Aug 23 15:43:14 2005// //* CVS Reference : /lib_ssc.h/1.4/Fri Jan 31 12:19:20 2003// //* CVS Reference : /lib_PWM_SAM.h/1.3/Wed Dec 3 10:23:10 2003// //* CVS Reference : /lib_tc_1753b.h/1.1/Fri Jan 31 12:20:02 2003// //* CVS Reference : /lib_pitc_6079A.h/1.2/Thu Nov 4 14:01:11 2004// //* CVS Reference : /lib_adc.h/1.6/Fri Oct 17 08:12:38 2003// //* CVS Reference : /lib_pmc_SAM.h/1.9/Tue Aug 30 13:03:40 2005// //* CVS Reference : /lib_rstc_6098A.h/1.1/Wed Oct 6 09:39:19 2004// //* CVS Reference : /lib_pio.h/1.3/Fri Jan 31 12:18:56 2003// //* CVS Reference : /lib_rttc_6081A.h/1.1/Wed Oct 6 09:39:38 2004// //* CVS Reference : /lib_twi.h/1.3/Mon Jul 19 13:37:30 2004// //* CVS Reference : /lib_usart.h/1.5/Thu Nov 21 16:01:53 2002// //* CVS Reference : /lib_mci.h/1.7/Thu May 27 08:47:43 2004// //* CVS Reference : /lib_wdtc_6080A.h/1.1/Wed Oct 6 09:38:30 2004// //* CVS Reference : /lib_udp.h/1.5/Mon Aug 29 08:17:54 2005// //* CVS Reference : /lib_aic_6075b.h/1.2/Mon Jul 18 11:06:01 2005// //* CVS Reference : /lib_can_AT91.h/1.5/Tue Aug 23 15:42:51 2005// //* ---------------------------------------------------------------------------- #ifndef lib_AT91SAM7A3_H #define lib_AT91SAM7A3_H #include "AT91SAM7A3.h" /* ***************************************************************************** SOFTWARE API FOR AIC ***************************************************************************** */ #define AT91C_AIC_BRANCH_OPCODE ((void (*) ()) 0xE51FFF20) // ldr, pc, [pc, #-&F20] //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_ConfigureIt //* \brief Interrupt Handler Initialization //*---------------------------------------------------------------------------- __inline unsigned int AT91F_AIC_ConfigureIt ( AT91PS_AIC pAic, // \arg pointer to the AIC registers unsigned int irq_id, // \arg interrupt number to initialize unsigned int priority, // \arg priority to give to the interrupt unsigned int src_type, // \arg activation and sense of activation void (*newHandler) () ) // \arg address of the interrupt handler { unsigned int oldHandler; unsigned int mask ; oldHandler = pAic->AIC_SVR[irq_id]; mask = 0x1 << irq_id ; //* Disable the interrupt on the interrupt controller pAic->AIC_IDCR = mask ; //* Save the interrupt handler routine pointer and the interrupt priority pAic->AIC_SVR[irq_id] = (unsigned int) newHandler ; //* Store the Source Mode Register pAic->AIC_SMR[irq_id] = src_type | priority ; //* Clear the interrupt on the interrupt controller pAic->AIC_ICCR = mask ; return oldHandler; } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_EnableIt //* \brief Enable corresponding IT number //*---------------------------------------------------------------------------- __inline void AT91F_AIC_EnableIt ( AT91PS_AIC pAic, // \arg pointer to the AIC registers unsigned int irq_id ) // \arg interrupt number to initialize { //* Enable the interrupt on the interrupt controller pAic->AIC_IECR = 0x1 << irq_id ; } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_DisableIt //* \brief Disable corresponding IT number //*---------------------------------------------------------------------------- __inline void AT91F_AIC_DisableIt ( AT91PS_AIC pAic, // \arg pointer to the AIC registers unsigned int irq_id ) // \arg interrupt number to initialize { unsigned int mask = 0x1 << irq_id; //* Disable the interrupt on the interrupt controller pAic->AIC_IDCR = mask ; //* Clear the interrupt on the Interrupt Controller ( if one is pending ) pAic->AIC_ICCR = mask ; } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_ClearIt //* \brief Clear corresponding IT number //*---------------------------------------------------------------------------- __inline void AT91F_AIC_ClearIt ( AT91PS_AIC pAic, // \arg pointer to the AIC registers unsigned int irq_id) // \arg interrupt number to initialize { //* Clear the interrupt on the Interrupt Controller ( if one is pending ) pAic->AIC_ICCR = (0x1 << irq_id); } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_AcknowledgeIt //* \brief Acknowledge corresponding IT number //*---------------------------------------------------------------------------- __inline void AT91F_AIC_AcknowledgeIt ( AT91PS_AIC pAic) // \arg pointer to the AIC registers { pAic->AIC_EOICR = pAic->AIC_EOICR; } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_SetExceptionVector //* \brief Configure vector handler //*---------------------------------------------------------------------------- __inline unsigned int AT91F_AIC_SetExceptionVector ( unsigned int *pVector, // \arg pointer to the AIC registers void (*Handler) () ) // \arg Interrupt Handler { unsigned int oldVector = *pVector; if ((unsigned int) Handler == (unsigned int) AT91C_AIC_BRANCH_OPCODE) *pVector = (unsigned int) AT91C_AIC_BRANCH_OPCODE; else *pVector = (((((unsigned int) Handler) - ((unsigned int) pVector) - 0x8) >> 2) & 0x00FFFFFF) | 0xEA000000; return oldVector; } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_Trig //* \brief Trig an IT //*---------------------------------------------------------------------------- __inline void AT91F_AIC_Trig ( AT91PS_AIC pAic, // \arg pointer to the AIC registers unsigned int irq_id) // \arg interrupt number { pAic->AIC_ISCR = (0x1 << irq_id) ; } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_IsActive //* \brief Test if an IT is active //*---------------------------------------------------------------------------- __inline unsigned int AT91F_AIC_IsActive ( AT91PS_AIC pAic, // \arg pointer to the AIC registers unsigned int irq_id) // \arg Interrupt Number { return (pAic->AIC_ISR & (0x1 << irq_id)); } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_IsPending //* \brief Test if an IT is pending //*---------------------------------------------------------------------------- __inline unsigned int AT91F_AIC_IsPending ( AT91PS_AIC pAic, // \arg pointer to the AIC registers unsigned int irq_id) // \arg Interrupt Number { return (pAic->AIC_IPR & (0x1 << irq_id)); } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_Open //* \brief Set exception vectors and AIC registers to default values //*---------------------------------------------------------------------------- __inline void AT91F_AIC_Open( AT91PS_AIC pAic, // \arg pointer to the AIC registers void (*IrqHandler) (), // \arg Default IRQ vector exception void (*FiqHandler) (), // \arg Default FIQ vector exception void (*DefaultHandler) (), // \arg Default Handler set in ISR void (*SpuriousHandler) (), // \arg Default Spurious Handler unsigned int protectMode) // \arg Debug Control Register { int i; // Disable all interrupts and set IVR to the default handler for (i = 0; i < 32; ++i) { AT91F_AIC_DisableIt(pAic, i); AT91F_AIC_ConfigureIt(pAic, i, AT91C_AIC_PRIOR_LOWEST, AT91C_AIC_SRCTYPE_HIGH_LEVEL, DefaultHandler); } // Set the IRQ exception vector AT91F_AIC_SetExceptionVector((unsigned int *) 0x18, IrqHandler); // Set the Fast Interrupt exception vector AT91F_AIC_SetExceptionVector((unsigned int *) 0x1C, FiqHandler); pAic->AIC_SPU = (unsigned int) SpuriousHandler; pAic->AIC_DCR = protectMode; } /* ***************************************************************************** SOFTWARE API FOR PDC ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_SetNextRx //* \brief Set the next receive transfer descriptor //*---------------------------------------------------------------------------- __inline void AT91F_PDC_SetNextRx ( AT91PS_PDC pPDC, // \arg pointer to a PDC controller char *address, // \arg address to the next bloc to be received unsigned int bytes) // \arg number of bytes to be received { pPDC->PDC_RNPR = (unsigned int) address; pPDC->PDC_RNCR = bytes; } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_SetNextTx //* \brief Set the next transmit transfer descriptor //*---------------------------------------------------------------------------- __inline void AT91F_PDC_SetNextTx ( AT91PS_PDC pPDC, // \arg pointer to a PDC controller char *address, // \arg address to the next bloc to be transmitted unsigned int bytes) // \arg number of bytes to be transmitted { pPDC->PDC_TNPR = (unsigned int) address; pPDC->PDC_TNCR = bytes; } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_SetRx //* \brief Set the receive transfer descriptor //*---------------------------------------------------------------------------- __inline void AT91F_PDC_SetRx ( AT91PS_PDC pPDC, // \arg pointer to a PDC controller char *address, // \arg address to the next bloc to be received unsigned int bytes) // \arg number of bytes to be received { pPDC->PDC_RPR = (unsigned int) address; pPDC->PDC_RCR = bytes; } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_SetTx //* \brief Set the transmit transfer descriptor //*---------------------------------------------------------------------------- __inline void AT91F_PDC_SetTx ( AT91PS_PDC pPDC, // \arg pointer to a PDC controller char *address, // \arg address to the next bloc to be transmitted unsigned int bytes) // \arg number of bytes to be transmitted { pPDC->PDC_TPR = (unsigned int) address; pPDC->PDC_TCR = bytes; } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_EnableTx //* \brief Enable transmit //*---------------------------------------------------------------------------- __inline void AT91F_PDC_EnableTx ( AT91PS_PDC pPDC ) // \arg pointer to a PDC controller { pPDC->PDC_PTCR = AT91C_PDC_TXTEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_EnableRx //* \brief Enable receive //*---------------------------------------------------------------------------- __inline void AT91F_PDC_EnableRx ( AT91PS_PDC pPDC ) // \arg pointer to a PDC controller { pPDC->PDC_PTCR = AT91C_PDC_RXTEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_DisableTx //* \brief Disable transmit //*---------------------------------------------------------------------------- __inline void AT91F_PDC_DisableTx ( AT91PS_PDC pPDC ) // \arg pointer to a PDC controller { pPDC->PDC_PTCR = AT91C_PDC_TXTDIS; } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_DisableRx //* \brief Disable receive //*---------------------------------------------------------------------------- __inline void AT91F_PDC_DisableRx ( AT91PS_PDC pPDC ) // \arg pointer to a PDC controller { pPDC->PDC_PTCR = AT91C_PDC_RXTDIS; } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_IsTxEmpty //* \brief Test if the current transfer descriptor has been sent //*---------------------------------------------------------------------------- __inline int AT91F_PDC_IsTxEmpty ( // \return return 1 if transfer is complete AT91PS_PDC pPDC ) // \arg pointer to a PDC controller { return !(pPDC->PDC_TCR); } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_IsNextTxEmpty //* \brief Test if the next transfer descriptor has been moved to the current td //*---------------------------------------------------------------------------- __inline int AT91F_PDC_IsNextTxEmpty ( // \return return 1 if transfer is complete AT91PS_PDC pPDC ) // \arg pointer to a PDC controller { return !(pPDC->PDC_TNCR); } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_IsRxEmpty //* \brief Test if the current transfer descriptor has been filled //*---------------------------------------------------------------------------- __inline int AT91F_PDC_IsRxEmpty ( // \return return 1 if transfer is complete AT91PS_PDC pPDC ) // \arg pointer to a PDC controller { return !(pPDC->PDC_RCR); } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_IsNextRxEmpty //* \brief Test if the next transfer descriptor has been moved to the current td //*---------------------------------------------------------------------------- __inline int AT91F_PDC_IsNextRxEmpty ( // \return return 1 if transfer is complete AT91PS_PDC pPDC ) // \arg pointer to a PDC controller { return !(pPDC->PDC_RNCR); } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_Open //* \brief Open PDC: disable TX and RX reset transfer descriptors, re-enable RX and TX //*---------------------------------------------------------------------------- __inline void AT91F_PDC_Open ( AT91PS_PDC pPDC) // \arg pointer to a PDC controller { //* Disable the RX and TX PDC transfer requests AT91F_PDC_DisableRx(pPDC); AT91F_PDC_DisableTx(pPDC); //* Reset all Counter register Next buffer first AT91F_PDC_SetNextTx(pPDC, (char *) 0, 0); AT91F_PDC_SetNextRx(pPDC, (char *) 0, 0); AT91F_PDC_SetTx(pPDC, (char *) 0, 0); AT91F_PDC_SetRx(pPDC, (char *) 0, 0); //* Enable the RX and TX PDC transfer requests AT91F_PDC_EnableRx(pPDC); AT91F_PDC_EnableTx(pPDC); } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_Close //* \brief Close PDC: disable TX and RX reset transfer descriptors //*---------------------------------------------------------------------------- __inline void AT91F_PDC_Close ( AT91PS_PDC pPDC) // \arg pointer to a PDC controller { //* Disable the RX and TX PDC transfer requests AT91F_PDC_DisableRx(pPDC); AT91F_PDC_DisableTx(pPDC); //* Reset all Counter register Next buffer first AT91F_PDC_SetNextTx(pPDC, (char *) 0, 0); AT91F_PDC_SetNextRx(pPDC, (char *) 0, 0); AT91F_PDC_SetTx(pPDC, (char *) 0, 0); AT91F_PDC_SetRx(pPDC, (char *) 0, 0); } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_SendFrame //* \brief Close PDC: disable TX and RX reset transfer descriptors //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PDC_SendFrame( AT91PS_PDC pPDC, char *pBuffer, unsigned int szBuffer, char *pNextBuffer, unsigned int szNextBuffer ) { if (AT91F_PDC_IsTxEmpty(pPDC)) { //* Buffer and next buffer can be initialized AT91F_PDC_SetTx(pPDC, pBuffer, szBuffer); AT91F_PDC_SetNextTx(pPDC, pNextBuffer, szNextBuffer); return 2; } else if (AT91F_PDC_IsNextTxEmpty(pPDC)) { //* Only one buffer can be initialized AT91F_PDC_SetNextTx(pPDC, pBuffer, szBuffer); return 1; } else { //* All buffer are in use... return 0; } } //*---------------------------------------------------------------------------- //* \fn AT91F_PDC_ReceiveFrame //* \brief Close PDC: disable TX and RX reset transfer descriptors //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PDC_ReceiveFrame ( AT91PS_PDC pPDC, char *pBuffer, unsigned int szBuffer, char *pNextBuffer, unsigned int szNextBuffer ) { if (AT91F_PDC_IsRxEmpty(pPDC)) { //* Buffer and next buffer can be initialized AT91F_PDC_SetRx(pPDC, pBuffer, szBuffer); AT91F_PDC_SetNextRx(pPDC, pNextBuffer, szNextBuffer); return 2; } else if (AT91F_PDC_IsNextRxEmpty(pPDC)) { //* Only one buffer can be initialized AT91F_PDC_SetNextRx(pPDC, pBuffer, szBuffer); return 1; } else { //* All buffer are in use... return 0; } } /* ***************************************************************************** SOFTWARE API FOR DBGU ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_DBGU_InterruptEnable //* \brief Enable DBGU Interrupt //*---------------------------------------------------------------------------- __inline void AT91F_DBGU_InterruptEnable( AT91PS_DBGU pDbgu, // \arg pointer to a DBGU controller unsigned int flag) // \arg dbgu interrupt to be enabled { pDbgu->DBGU_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_DBGU_InterruptDisable //* \brief Disable DBGU Interrupt //*---------------------------------------------------------------------------- __inline void AT91F_DBGU_InterruptDisable( AT91PS_DBGU pDbgu, // \arg pointer to a DBGU controller unsigned int flag) // \arg dbgu interrupt to be disabled { pDbgu->DBGU_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_DBGU_GetInterruptMaskStatus //* \brief Return DBGU Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_DBGU_GetInterruptMaskStatus( // \return DBGU Interrupt Mask Status AT91PS_DBGU pDbgu) // \arg pointer to a DBGU controller { return pDbgu->DBGU_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_DBGU_IsInterruptMasked //* \brief Test if DBGU Interrupt is Masked //*---------------------------------------------------------------------------- __inline int AT91F_DBGU_IsInterruptMasked( AT91PS_DBGU pDbgu, // \arg pointer to a DBGU controller unsigned int flag) // \arg flag to be tested { return (AT91F_DBGU_GetInterruptMaskStatus(pDbgu) & flag); } /* ***************************************************************************** SOFTWARE API FOR PIO ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_CfgPeriph //* \brief Enable pins to be drived by peripheral //*---------------------------------------------------------------------------- __inline void AT91F_PIO_CfgPeriph( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int periphAEnable, // \arg PERIPH A to enable unsigned int periphBEnable) // \arg PERIPH B to enable { pPio->PIO_ASR = periphAEnable; pPio->PIO_BSR = periphBEnable; pPio->PIO_PDR = (periphAEnable | periphBEnable); // Set in Periph mode } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_CfgOutput //* \brief Enable PIO in output mode //*---------------------------------------------------------------------------- __inline void AT91F_PIO_CfgOutput( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int pioEnable) // \arg PIO to be enabled { pPio->PIO_PER = pioEnable; // Set in PIO mode pPio->PIO_OER = pioEnable; // Configure in Output } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_CfgInput //* \brief Enable PIO in input mode //*---------------------------------------------------------------------------- __inline void AT91F_PIO_CfgInput( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int inputEnable) // \arg PIO to be enabled { // Disable output pPio->PIO_ODR = inputEnable; pPio->PIO_PER = inputEnable; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_CfgOpendrain //* \brief Configure PIO in open drain //*---------------------------------------------------------------------------- __inline void AT91F_PIO_CfgOpendrain( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int multiDrvEnable) // \arg pio to be configured in open drain { // Configure the multi-drive option pPio->PIO_MDDR = ~multiDrvEnable; pPio->PIO_MDER = multiDrvEnable; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_CfgPullup //* \brief Enable or disable pullup on PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_CfgPullup( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int pullupEnable) // \arg enable pullup on PIO { // Connect or not Pullup pPio->PIO_PPUDR = ~pullupEnable; pPio->PIO_PPUER = pullupEnable; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_PullupEnable //* \brief Enable pullup on PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_PullupEnable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int pullupEnable) // \arg enable pullup on PIO { // Connect Pullup pPio->PIO_PPUER = pullupEnable; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_PullupDisable //* \brief Disable pullup on PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_PullupDisable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int pullupDisable) // \arg enable pullup on PIO { // Not connect Pullup pPio->PIO_PPUDR = pullupDisable; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_CfgDirectDrive //* \brief Enable direct drive on PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_CfgDirectDrive( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int directDrive) // \arg PIO to be configured with direct drive { // Configure the Direct Drive pPio->PIO_OWDR = ~directDrive; pPio->PIO_OWER = directDrive; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_CfgInputFilter //* \brief Enable input filter on input PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_CfgInputFilter( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int inputFilter) // \arg PIO to be configured with input filter { // Configure the Direct Drive pPio->PIO_IFDR = ~inputFilter; pPio->PIO_IFER = inputFilter; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_GetInput //* \brief Return PIO input value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_GetInput( // \return PIO input AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_PDSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsInputSet //* \brief Test if PIO is input flag is active //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsInputSet( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (AT91F_PIO_GetInput(pPio) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_SetOutput //* \brief Set to 1 output PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_SetOutput( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg output to be set { pPio->PIO_SODR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_ClearOutput //* \brief Set to 0 output PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_ClearOutput( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg output to be cleared { pPio->PIO_CODR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_ForceOutput //* \brief Force output when Direct drive option is enabled //*---------------------------------------------------------------------------- __inline void AT91F_PIO_ForceOutput( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg output to be forced { pPio->PIO_ODSR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_Enable //* \brief Enable PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_Enable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio to be enabled { pPio->PIO_PER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_Disable //* \brief Disable PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_Disable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio to be disabled { pPio->PIO_PDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_GetStatus //* \brief Return PIO Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_GetStatus( // \return PIO Status AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_PSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsSet //* \brief Test if PIO is Set //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsSet( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (AT91F_PIO_GetStatus(pPio) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_OutputEnable //* \brief Output Enable PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_OutputEnable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio output to be enabled { pPio->PIO_OER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_OutputDisable //* \brief Output Enable PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_OutputDisable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio output to be disabled { pPio->PIO_ODR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_GetOutputStatus //* \brief Return PIO Output Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_GetOutputStatus( // \return PIO Output Status AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_OSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsOuputSet //* \brief Test if PIO Output is Set //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsOutputSet( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (AT91F_PIO_GetOutputStatus(pPio) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_InputFilterEnable //* \brief Input Filter Enable PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_InputFilterEnable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio input filter to be enabled { pPio->PIO_IFER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_InputFilterDisable //* \brief Input Filter Disable PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_InputFilterDisable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio input filter to be disabled { pPio->PIO_IFDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_GetInputFilterStatus //* \brief Return PIO Input Filter Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_GetInputFilterStatus( // \return PIO Input Filter Status AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_IFSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsInputFilterSet //* \brief Test if PIO Input filter is Set //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsInputFilterSet( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (AT91F_PIO_GetInputFilterStatus(pPio) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_GetOutputDataStatus //* \brief Return PIO Output Data Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_GetOutputDataStatus( // \return PIO Output Data Status AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_ODSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_InterruptEnable //* \brief Enable PIO Interrupt //*---------------------------------------------------------------------------- __inline void AT91F_PIO_InterruptEnable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio interrupt to be enabled { pPio->PIO_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_InterruptDisable //* \brief Disable PIO Interrupt //*---------------------------------------------------------------------------- __inline void AT91F_PIO_InterruptDisable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio interrupt to be disabled { pPio->PIO_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_GetInterruptMaskStatus //* \brief Return PIO Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_GetInterruptMaskStatus( // \return PIO Interrupt Mask Status AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_GetInterruptStatus //* \brief Return PIO Interrupt Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_GetInterruptStatus( // \return PIO Interrupt Status AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_ISR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsInterruptMasked //* \brief Test if PIO Interrupt is Masked //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsInterruptMasked( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (AT91F_PIO_GetInterruptMaskStatus(pPio) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsInterruptSet //* \brief Test if PIO Interrupt is Set //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsInterruptSet( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (AT91F_PIO_GetInterruptStatus(pPio) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_MultiDriverEnable //* \brief Multi Driver Enable PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_MultiDriverEnable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio to be enabled { pPio->PIO_MDER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_MultiDriverDisable //* \brief Multi Driver Disable PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_MultiDriverDisable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio to be disabled { pPio->PIO_MDDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_GetMultiDriverStatus //* \brief Return PIO Multi Driver Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_GetMultiDriverStatus( // \return PIO Multi Driver Status AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_MDSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsMultiDriverSet //* \brief Test if PIO MultiDriver is Set //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsMultiDriverSet( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (AT91F_PIO_GetMultiDriverStatus(pPio) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_A_RegisterSelection //* \brief PIO A Register Selection //*---------------------------------------------------------------------------- __inline void AT91F_PIO_A_RegisterSelection( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio A register selection { pPio->PIO_ASR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_B_RegisterSelection //* \brief PIO B Register Selection //*---------------------------------------------------------------------------- __inline void AT91F_PIO_B_RegisterSelection( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio B register selection { pPio->PIO_BSR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_Get_AB_RegisterStatus //* \brief Return PIO Interrupt Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_Get_AB_RegisterStatus( // \return PIO AB Register Status AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_ABSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsAB_RegisterSet //* \brief Test if PIO AB Register is Set //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsAB_RegisterSet( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (AT91F_PIO_Get_AB_RegisterStatus(pPio) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_OutputWriteEnable //* \brief Output Write Enable PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_OutputWriteEnable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio output write to be enabled { pPio->PIO_OWER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_OutputWriteDisable //* \brief Output Write Disable PIO //*---------------------------------------------------------------------------- __inline void AT91F_PIO_OutputWriteDisable( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg pio output write to be disabled { pPio->PIO_OWDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_GetOutputWriteStatus //* \brief Return PIO Output Write Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_GetOutputWriteStatus( // \return PIO Output Write Status AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_OWSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsOutputWriteSet //* \brief Test if PIO OutputWrite is Set //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsOutputWriteSet( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (AT91F_PIO_GetOutputWriteStatus(pPio) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_GetCfgPullup //* \brief Return PIO Configuration Pullup //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PIO_GetCfgPullup( // \return PIO Configuration Pullup AT91PS_PIO pPio) // \arg pointer to a PIO controller { return pPio->PIO_PPUSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsOutputDataStatusSet //* \brief Test if PIO Output Data Status is Set //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsOutputDataStatusSet( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (AT91F_PIO_GetOutputDataStatus(pPio) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIO_IsCfgPullupStatusSet //* \brief Test if PIO Configuration Pullup Status is Set //*---------------------------------------------------------------------------- __inline int AT91F_PIO_IsCfgPullupStatusSet( AT91PS_PIO pPio, // \arg pointer to a PIO controller unsigned int flag) // \arg flag to be tested { return (~AT91F_PIO_GetCfgPullup(pPio) & flag); } /* ***************************************************************************** SOFTWARE API FOR PMC ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_CfgSysClkEnableReg //* \brief Configure the System Clock Enable Register of the PMC controller //*---------------------------------------------------------------------------- __inline void AT91F_PMC_CfgSysClkEnableReg ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int mode) { //* Write to the SCER register pPMC->PMC_SCER = mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_CfgSysClkDisableReg //* \brief Configure the System Clock Disable Register of the PMC controller //*---------------------------------------------------------------------------- __inline void AT91F_PMC_CfgSysClkDisableReg ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int mode) { //* Write to the SCDR register pPMC->PMC_SCDR = mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_GetSysClkStatusReg //* \brief Return the System Clock Status Register of the PMC controller //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PMC_GetSysClkStatusReg ( AT91PS_PMC pPMC // pointer to a CAN controller ) { return pPMC->PMC_SCSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_EnablePeriphClock //* \brief Enable peripheral clock //*---------------------------------------------------------------------------- __inline void AT91F_PMC_EnablePeriphClock ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int periphIds) // \arg IDs of peripherals to enable { pPMC->PMC_PCER = periphIds; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_DisablePeriphClock //* \brief Disable peripheral clock //*---------------------------------------------------------------------------- __inline void AT91F_PMC_DisablePeriphClock ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int periphIds) // \arg IDs of peripherals to enable { pPMC->PMC_PCDR = periphIds; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_GetPeriphClock //* \brief Get peripheral clock status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PMC_GetPeriphClock ( AT91PS_PMC pPMC) // \arg pointer to PMC controller { return pPMC->PMC_PCSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_CKGR_CfgMainOscillatorReg //* \brief Cfg the main oscillator //*---------------------------------------------------------------------------- __inline void AT91F_CKGR_CfgMainOscillatorReg ( AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller unsigned int mode) { pCKGR->CKGR_MOR = mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_CKGR_GetMainOscillatorReg //* \brief Cfg the main oscillator //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CKGR_GetMainOscillatorReg ( AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller { return pCKGR->CKGR_MOR; } //*---------------------------------------------------------------------------- //* \fn AT91F_CKGR_EnableMainOscillator //* \brief Enable the main oscillator //*---------------------------------------------------------------------------- __inline void AT91F_CKGR_EnableMainOscillator( AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller { pCKGR->CKGR_MOR |= AT91C_CKGR_MOSCEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_CKGR_DisableMainOscillator //* \brief Disable the main oscillator //*---------------------------------------------------------------------------- __inline void AT91F_CKGR_DisableMainOscillator ( AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller { pCKGR->CKGR_MOR &= ~AT91C_CKGR_MOSCEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_CKGR_CfgMainOscStartUpTime //* \brief Cfg MOR Register according to the main osc startup time //*---------------------------------------------------------------------------- __inline void AT91F_CKGR_CfgMainOscStartUpTime ( AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller unsigned int startup_time, // \arg main osc startup time in microsecond (us) unsigned int slowClock) // \arg slowClock in Hz { pCKGR->CKGR_MOR &= ~AT91C_CKGR_OSCOUNT; pCKGR->CKGR_MOR |= ((slowClock * startup_time)/(8*1000000)) << 8; } //*---------------------------------------------------------------------------- //* \fn AT91F_CKGR_GetMainClockFreqReg //* \brief Cfg the main oscillator //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CKGR_GetMainClockFreqReg ( AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller { return pCKGR->CKGR_MCFR; } //*---------------------------------------------------------------------------- //* \fn AT91F_CKGR_GetMainClock //* \brief Return Main clock in Hz //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CKGR_GetMainClock ( AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller unsigned int slowClock) // \arg slowClock in Hz { return ((pCKGR->CKGR_MCFR & AT91C_CKGR_MAINF) * slowClock) >> 4; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_CfgMCKReg //* \brief Cfg Master Clock Register //*---------------------------------------------------------------------------- __inline void AT91F_PMC_CfgMCKReg ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int mode) { pPMC->PMC_MCKR = mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_GetMCKReg //* \brief Return Master Clock Register //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PMC_GetMCKReg( AT91PS_PMC pPMC) // \arg pointer to PMC controller { return pPMC->PMC_MCKR; } //*------------------------------------------------------------------------------ //* \fn AT91F_PMC_GetMasterClock //* \brief Return master clock in Hz which correponds to processor clock for ARM7 //*------------------------------------------------------------------------------ __inline unsigned int AT91F_PMC_GetMasterClock ( AT91PS_PMC pPMC, // \arg pointer to PMC controller AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller unsigned int slowClock) // \arg slowClock in Hz { unsigned int reg = pPMC->PMC_MCKR; unsigned int prescaler = (1 << ((reg & AT91C_PMC_PRES) >> 2)); unsigned int pllDivider, pllMultiplier; switch (reg & AT91C_PMC_CSS) { case AT91C_PMC_CSS_SLOW_CLK: // Slow clock selected return slowClock / prescaler; case AT91C_PMC_CSS_MAIN_CLK: // Main clock is selected return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / prescaler; case AT91C_PMC_CSS_PLL_CLK: // PLLB clock is selected reg = pCKGR->CKGR_PLLR; pllDivider = (reg & AT91C_CKGR_DIV); pllMultiplier = ((reg & AT91C_CKGR_MUL) >> 16) + 1; return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / pllDivider * pllMultiplier / prescaler; } return 0; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_EnablePCK //* \brief Enable peripheral clock //*---------------------------------------------------------------------------- __inline void AT91F_PMC_EnablePCK ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int pck, // \arg Peripheral clock identifier 0 .. 7 unsigned int mode) { pPMC->PMC_PCKR[pck] = mode; pPMC->PMC_SCER = (1 << pck) << 8; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_DisablePCK //* \brief Enable peripheral clock //*---------------------------------------------------------------------------- __inline void AT91F_PMC_DisablePCK ( AT91PS_PMC pPMC, // \arg pointer to PMC controller unsigned int pck) // \arg Peripheral clock identifier 0 .. 7 { pPMC->PMC_SCDR = (1 << pck) << 8; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_EnableIt //* \brief Enable PMC interrupt //*---------------------------------------------------------------------------- __inline void AT91F_PMC_EnableIt ( AT91PS_PMC pPMC, // pointer to a PMC controller unsigned int flag) // IT to be enabled { //* Write to the IER register pPMC->PMC_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_DisableIt //* \brief Disable PMC interrupt //*---------------------------------------------------------------------------- __inline void AT91F_PMC_DisableIt ( AT91PS_PMC pPMC, // pointer to a PMC controller unsigned int flag) // IT to be disabled { //* Write to the IDR register pPMC->PMC_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_GetStatus //* \brief Return PMC Interrupt Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PMC_GetStatus( // \return PMC Interrupt Status AT91PS_PMC pPMC) // pointer to a PMC controller { return pPMC->PMC_SR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_GetInterruptMaskStatus //* \brief Return PMC Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PMC_GetInterruptMaskStatus( // \return PMC Interrupt Mask Status AT91PS_PMC pPMC) // pointer to a PMC controller { return pPMC->PMC_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_IsInterruptMasked //* \brief Test if PMC Interrupt is Masked //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PMC_IsInterruptMasked( AT91PS_PMC pPMC, // \arg pointer to a PMC controller unsigned int flag) // \arg flag to be tested { return (AT91F_PMC_GetInterruptMaskStatus(pPMC) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_IsStatusSet //* \brief Test if PMC Status is Set //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PMC_IsStatusSet( AT91PS_PMC pPMC, // \arg pointer to a PMC controller unsigned int flag) // \arg flag to be tested { return (AT91F_PMC_GetStatus(pPMC) & flag); } // ---------------------------------------------------------------------------- // \fn AT91F_CKGR_CfgPLLReg // \brief Cfg the PLL Register // ---------------------------------------------------------------------------- __inline void AT91F_CKGR_CfgPLLReg ( AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller unsigned int mode) { pCKGR->CKGR_PLLR = mode; } // ---------------------------------------------------------------------------- // \fn AT91F_CKGR_GetPLLReg // \brief Get the PLL Register // ---------------------------------------------------------------------------- __inline unsigned int AT91F_CKGR_GetPLLReg ( AT91PS_CKGR pCKGR) // \arg pointer to CKGR controller { return pCKGR->CKGR_PLLR; } /* ***************************************************************************** SOFTWARE API FOR RSTC ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_RSTSoftReset //* \brief Start Software Reset //*---------------------------------------------------------------------------- __inline void AT91F_RSTSoftReset( AT91PS_RSTC pRSTC, unsigned int reset) { pRSTC->RSTC_RCR = (0xA5000000 | reset); } //*---------------------------------------------------------------------------- //* \fn AT91F_RSTSetMode //* \brief Set Reset Mode //*---------------------------------------------------------------------------- __inline void AT91F_RSTSetMode( AT91PS_RSTC pRSTC, unsigned int mode) { pRSTC->RSTC_RMR = (0xA5000000 | mode); } //*---------------------------------------------------------------------------- //* \fn AT91F_RSTGetMode //* \brief Get Reset Mode //*---------------------------------------------------------------------------- __inline unsigned int AT91F_RSTGetMode( AT91PS_RSTC pRSTC) { return (pRSTC->RSTC_RMR); } //*---------------------------------------------------------------------------- //* \fn AT91F_RSTGetStatus //* \brief Get Reset Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_RSTGetStatus( AT91PS_RSTC pRSTC) { return (pRSTC->RSTC_RSR); } //*---------------------------------------------------------------------------- //* \fn AT91F_RSTIsSoftRstActive //* \brief Return !=0 if software reset is still not completed //*---------------------------------------------------------------------------- __inline unsigned int AT91F_RSTIsSoftRstActive( AT91PS_RSTC pRSTC) { return ((pRSTC->RSTC_RSR) & AT91C_RSTC_SRCMP); } /* ***************************************************************************** SOFTWARE API FOR SHDWC ***************************************************************************** */ //*-------------------------------------------------------------------------------------- //* Function Name : AT91F_SHDWNSetMode() //* Object : Set the Shutdown mode register //*-------------------------------------------------------------------------------------- __inline unsigned int AT91F_SHDWNSetMode( AT91PS_SHDWC pSHDWC, unsigned int mode) { pSHDWC->SHDWC_SHMR = mode; return(pSHDWC->SHDWC_SHMR); } //*-------------------------------------------------------------------------------------- //* Function Name : AT91F_SHDWNGetMode() //* Object : Get the Shutdown mode register //*-------------------------------------------------------------------------------------- __inline unsigned int AT91F_SHDWNGetMode( AT91PS_SHDWC pSHDWC) { return(pSHDWC->SHDWC_SHMR); } //*-------------------------------------------------------------------------------------- //* Function Name : AT91F_SHDWNEnable() //* Object : Enable Shutdown //*-------------------------------------------------------------------------------------- __inline void AT91F_SHDWNEnable( AT91PS_SHDWC pSHDWC) { pSHDWC->SHDWC_SHCR = 0xA5000001; } //*-------------------------------------------------------------------------------------- //* Function Name : AT91F_SHDWNGetStatus() //* Object : Get Shutdown Status //*-------------------------------------------------------------------------------------- __inline unsigned int AT91F_SHDWNGetStatus( AT91PS_SHDWC pSHDWC) { return(pSHDWC->SHDWC_SHSR); } /* ***************************************************************************** SOFTWARE API FOR RTTC ***************************************************************************** */ //*-------------------------------------------------------------------------------------- //* \fn AT91F_SetRTT_TimeBase() //* \brief Set the RTT prescaler according to the TimeBase in ms //*-------------------------------------------------------------------------------------- __inline unsigned int AT91F_RTTSetTimeBase( AT91PS_RTTC pRTTC, unsigned int ms) { if (ms > 2000) return 1; // AT91C_TIME_OUT_OF_RANGE pRTTC->RTTC_RTMR &= ~0xFFFF; pRTTC->RTTC_RTMR |= (((ms << 15) /1000) & 0xFFFF); return 0; } //*-------------------------------------------------------------------------------------- //* \fn AT91F_RTTSetPrescaler() //* \brief Set the new prescaler value //*-------------------------------------------------------------------------------------- __inline unsigned int AT91F_RTTSetPrescaler( AT91PS_RTTC pRTTC, unsigned int rtpres) { pRTTC->RTTC_RTMR &= ~0xFFFF; pRTTC->RTTC_RTMR |= (rtpres & 0xFFFF); return (pRTTC->RTTC_RTMR); } //*-------------------------------------------------------------------------------------- //* \fn AT91F_RTTRestart() //* \brief Restart the RTT prescaler //*-------------------------------------------------------------------------------------- __inline void AT91F_RTTRestart( AT91PS_RTTC pRTTC) { pRTTC->RTTC_RTMR |= AT91C_RTTC_RTTRST; } //*-------------------------------------------------------------------------------------- //* \fn AT91F_RTT_SetAlarmINT() //* \brief Enable RTT Alarm Interrupt //*-------------------------------------------------------------------------------------- __inline void AT91F_RTTSetAlarmINT( AT91PS_RTTC pRTTC) { pRTTC->RTTC_RTMR |= AT91C_RTTC_ALMIEN; } //*-------------------------------------------------------------------------------------- //* \fn AT91F_RTT_ClearAlarmINT() //* \brief Disable RTT Alarm Interrupt //*-------------------------------------------------------------------------------------- __inline void AT91F_RTTClearAlarmINT( AT91PS_RTTC pRTTC) { pRTTC->RTTC_RTMR &= ~AT91C_RTTC_ALMIEN; } //*-------------------------------------------------------------------------------------- //* \fn AT91F_RTT_SetRttIncINT() //* \brief Enable RTT INC Interrupt //*-------------------------------------------------------------------------------------- __inline void AT91F_RTTSetRttIncINT( AT91PS_RTTC pRTTC) { pRTTC->RTTC_RTMR |= AT91C_RTTC_RTTINCIEN; } //*-------------------------------------------------------------------------------------- //* \fn AT91F_RTT_ClearRttIncINT() //* \brief Disable RTT INC Interrupt //*-------------------------------------------------------------------------------------- __inline void AT91F_RTTClearRttIncINT( AT91PS_RTTC pRTTC) { pRTTC->RTTC_RTMR &= ~AT91C_RTTC_RTTINCIEN; } //*-------------------------------------------------------------------------------------- //* \fn AT91F_RTT_SetAlarmValue() //* \brief Set RTT Alarm Value //*-------------------------------------------------------------------------------------- __inline void AT91F_RTTSetAlarmValue( AT91PS_RTTC pRTTC, unsigned int alarm) { pRTTC->RTTC_RTAR = alarm; } //*-------------------------------------------------------------------------------------- //* \fn AT91F_RTT_GetAlarmValue() //* \brief Get RTT Alarm Value //*-------------------------------------------------------------------------------------- __inline unsigned int AT91F_RTTGetAlarmValue( AT91PS_RTTC pRTTC) { return(pRTTC->RTTC_RTAR); } //*-------------------------------------------------------------------------------------- //* \fn AT91F_RTTGetStatus() //* \brief Read the RTT status //*-------------------------------------------------------------------------------------- __inline unsigned int AT91F_RTTGetStatus( AT91PS_RTTC pRTTC) { return(pRTTC->RTTC_RTSR); } //*-------------------------------------------------------------------------------------- //* \fn AT91F_RTT_ReadValue() //* \brief Read the RTT value //*-------------------------------------------------------------------------------------- __inline unsigned int AT91F_RTTReadValue( AT91PS_RTTC pRTTC) { register volatile unsigned int val1,val2; do { val1 = pRTTC->RTTC_RTVR; val2 = pRTTC->RTTC_RTVR; } while(val1 != val2); return(val1); } /* ***************************************************************************** SOFTWARE API FOR PITC ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_PITInit //* \brief System timer init : period in �second, system clock freq in MHz //*---------------------------------------------------------------------------- __inline void AT91F_PITInit( AT91PS_PITC pPITC, unsigned int period, unsigned int pit_frequency) { pPITC->PITC_PIMR = period ? (period * pit_frequency + 8) >> 4 : 0; // +8 to avoid %10 and /10 pPITC->PITC_PIMR |= AT91C_PITC_PITEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_PITSetPIV //* \brief Set the PIT Periodic Interval Value //*---------------------------------------------------------------------------- __inline void AT91F_PITSetPIV( AT91PS_PITC pPITC, unsigned int piv) { pPITC->PITC_PIMR = piv | (pPITC->PITC_PIMR & (AT91C_PITC_PITEN | AT91C_PITC_PITIEN)); } //*---------------------------------------------------------------------------- //* \fn AT91F_PITEnableInt //* \brief Enable PIT periodic interrupt //*---------------------------------------------------------------------------- __inline void AT91F_PITEnableInt( AT91PS_PITC pPITC) { pPITC->PITC_PIMR |= AT91C_PITC_PITIEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_PITDisableInt //* \brief Disable PIT periodic interrupt //*---------------------------------------------------------------------------- __inline void AT91F_PITDisableInt( AT91PS_PITC pPITC) { pPITC->PITC_PIMR &= ~AT91C_PITC_PITIEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_PITGetMode //* \brief Read PIT mode register //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PITGetMode( AT91PS_PITC pPITC) { return(pPITC->PITC_PIMR); } //*---------------------------------------------------------------------------- //* \fn AT91F_PITGetStatus //* \brief Read PIT status register //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PITGetStatus( AT91PS_PITC pPITC) { return(pPITC->PITC_PISR); } //*---------------------------------------------------------------------------- //* \fn AT91F_PITGetPIIR //* \brief Read PIT CPIV and PICNT without ressetting the counters //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PITGetPIIR( AT91PS_PITC pPITC) { return(pPITC->PITC_PIIR); } //*---------------------------------------------------------------------------- //* \fn AT91F_PITGetPIVR //* \brief Read System timer CPIV and PICNT without ressetting the counters //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PITGetPIVR( AT91PS_PITC pPITC) { return(pPITC->PITC_PIVR); } /* ***************************************************************************** SOFTWARE API FOR WDTC ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_WDTSetMode //* \brief Set Watchdog Mode Register //*---------------------------------------------------------------------------- __inline void AT91F_WDTSetMode( AT91PS_WDTC pWDTC, unsigned int Mode) { pWDTC->WDTC_WDMR = Mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_WDTRestart //* \brief Restart Watchdog //*---------------------------------------------------------------------------- __inline void AT91F_WDTRestart( AT91PS_WDTC pWDTC) { pWDTC->WDTC_WDCR = 0xA5000001; } //*---------------------------------------------------------------------------- //* \fn AT91F_WDTSGettatus //* \brief Get Watchdog Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_WDTSGettatus( AT91PS_WDTC pWDTC) { return(pWDTC->WDTC_WDSR & 0x3); } //*---------------------------------------------------------------------------- //* \fn AT91F_WDTGetPeriod //* \brief Translate ms into Watchdog Compatible value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_WDTGetPeriod(unsigned int ms) { if ((ms < 4) || (ms > 16000)) return 0; return((ms << 8) / 1000); } /* ***************************************************************************** SOFTWARE API FOR MC ***************************************************************************** */ #define AT91C_MC_CORRECT_KEY ((unsigned int) 0x5A << 24) // (MC) Correct Protect Key //*---------------------------------------------------------------------------- //* \fn AT91F_MC_Remap //* \brief Make Remap //*---------------------------------------------------------------------------- __inline void AT91F_MC_Remap (void) // { AT91PS_MC pMC = (AT91PS_MC) AT91C_BASE_MC; pMC->MC_RCR = AT91C_MC_RCB; } //*---------------------------------------------------------------------------- //* \fn AT91F_MC_EFC_CfgModeReg //* \brief Configure the EFC Mode Register of the MC controller //*---------------------------------------------------------------------------- __inline void AT91F_MC_EFC_CfgModeReg ( AT91PS_MC pMC, // pointer to a MC controller unsigned int mode) // mode register { // Write to the FMR register pMC->MC_FMR = mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_MC_EFC_GetModeReg //* \brief Return MC EFC Mode Regsiter //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MC_EFC_GetModeReg( AT91PS_MC pMC) // pointer to a MC controller { return pMC->MC_FMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_MC_EFC_ComputeFMCN //* \brief Return MC EFC Mode Regsiter //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MC_EFC_ComputeFMCN( int master_clock) // master clock in Hz { return (master_clock/1000000 +2); } //*---------------------------------------------------------------------------- //* \fn AT91F_MC_EFC_PerformCmd //* \brief Perform EFC Command //*---------------------------------------------------------------------------- __inline void AT91F_MC_EFC_PerformCmd ( AT91PS_MC pMC, // pointer to a MC controller unsigned int transfer_cmd) { pMC->MC_FCR = transfer_cmd; } //*---------------------------------------------------------------------------- //* \fn AT91F_MC_EFC_GetStatus //* \brief Return MC EFC Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MC_EFC_GetStatus( AT91PS_MC pMC) // pointer to a MC controller { return pMC->MC_FSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_MC_EFC_IsInterruptMasked //* \brief Test if EFC MC Interrupt is Masked //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MC_EFC_IsInterruptMasked( AT91PS_MC pMC, // \arg pointer to a MC controller unsigned int flag) // \arg flag to be tested { return (AT91F_MC_EFC_GetModeReg(pMC) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_MC_EFC_IsInterruptSet //* \brief Test if EFC MC Interrupt is Set //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MC_EFC_IsInterruptSet( AT91PS_MC pMC, // \arg pointer to a MC controller unsigned int flag) // \arg flag to be tested { return (AT91F_MC_EFC_GetStatus(pMC) & flag); } /* ***************************************************************************** SOFTWARE API FOR CAN ***************************************************************************** */ #define STANDARD_FORMAT 0 #define EXTENDED_FORMAT 1 //*---------------------------------------------------------------------------- //* \fn AT91F_InitMailboxRegisters() //* \brief Configure the corresponding mailbox //*---------------------------------------------------------------------------- __inline void AT91F_InitMailboxRegisters(AT91PS_CAN_MB CAN_Mailbox, int mode_reg, int acceptance_mask_reg, int id_reg, int data_low_reg, int data_high_reg, int control_reg) { CAN_Mailbox->CAN_MB_MCR = 0x0; CAN_Mailbox->CAN_MB_MMR = mode_reg; CAN_Mailbox->CAN_MB_MAM = acceptance_mask_reg; CAN_Mailbox->CAN_MB_MID = id_reg; CAN_Mailbox->CAN_MB_MDL = data_low_reg; CAN_Mailbox->CAN_MB_MDH = data_high_reg; CAN_Mailbox->CAN_MB_MCR = control_reg; } //*---------------------------------------------------------------------------- //* \fn AT91F_EnableCAN() //* \brief //*---------------------------------------------------------------------------- __inline void AT91F_EnableCAN( AT91PS_CAN pCAN) // pointer to a CAN controller { pCAN->CAN_MR |= AT91C_CAN_CANEN; // Wait for WAKEUP flag raising <=> 11-recessive-bit were scanned by the transceiver while( (pCAN->CAN_SR & AT91C_CAN_WAKEUP) != AT91C_CAN_WAKEUP ); } //*---------------------------------------------------------------------------- //* \fn AT91F_DisableCAN() //* \brief //*---------------------------------------------------------------------------- __inline void AT91F_DisableCAN( AT91PS_CAN pCAN) // pointer to a CAN controller { pCAN->CAN_MR &= ~AT91C_CAN_CANEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_EnableIt //* \brief Enable CAN interrupt //*---------------------------------------------------------------------------- __inline void AT91F_CAN_EnableIt ( AT91PS_CAN pCAN, // pointer to a CAN controller unsigned int flag) // IT to be enabled { //* Write to the IER register pCAN->CAN_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_DisableIt //* \brief Disable CAN interrupt //*---------------------------------------------------------------------------- __inline void AT91F_CAN_DisableIt ( AT91PS_CAN pCAN, // pointer to a CAN controller unsigned int flag) // IT to be disabled { //* Write to the IDR register pCAN->CAN_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetStatus //* \brief Return CAN Interrupt Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetStatus( // \return CAN Interrupt Status AT91PS_CAN pCAN) // pointer to a CAN controller { return pCAN->CAN_SR; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetInterruptMaskStatus //* \brief Return CAN Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetInterruptMaskStatus( // \return CAN Interrupt Mask Status AT91PS_CAN pCAN) // pointer to a CAN controller { return pCAN->CAN_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_IsInterruptMasked //* \brief Test if CAN Interrupt is Masked //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_IsInterruptMasked( AT91PS_CAN pCAN, // \arg pointer to a CAN controller unsigned int flag) // \arg flag to be tested { return (AT91F_CAN_GetInterruptMaskStatus(pCAN) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_IsStatusSet //* \brief Test if CAN Interrupt is Set //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_IsStatusSet( AT91PS_CAN pCAN, // \arg pointer to a CAN controller unsigned int flag) // \arg flag to be tested { return (AT91F_CAN_GetStatus(pCAN) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_CfgModeReg //* \brief Configure the Mode Register of the CAN controller //*---------------------------------------------------------------------------- __inline void AT91F_CAN_CfgModeReg ( AT91PS_CAN pCAN, // pointer to a CAN controller unsigned int mode) // mode register { //* Write to the MR register pCAN->CAN_MR = mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetModeReg //* \brief Return the Mode Register of the CAN controller value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetModeReg ( AT91PS_CAN pCAN // pointer to a CAN controller ) { return pCAN->CAN_MR; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_CfgBaudrateReg //* \brief Configure the Baudrate of the CAN controller for the network //*---------------------------------------------------------------------------- __inline void AT91F_CAN_CfgBaudrateReg ( AT91PS_CAN pCAN, // pointer to a CAN controller unsigned int baudrate_cfg) { //* Write to the BR register pCAN->CAN_BR = baudrate_cfg; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetBaudrate //* \brief Return the Baudrate of the CAN controller for the network value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetBaudrate ( AT91PS_CAN pCAN // pointer to a CAN controller ) { return pCAN->CAN_BR; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetInternalCounter //* \brief Return CAN Timer Regsiter Value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetInternalCounter ( AT91PS_CAN pCAN // pointer to a CAN controller ) { return pCAN->CAN_TIM; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetTimestamp //* \brief Return CAN Timestamp Register Value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetTimestamp ( AT91PS_CAN pCAN // pointer to a CAN controller ) { return pCAN->CAN_TIMESTP; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetErrorCounter //* \brief Return CAN Error Counter Register Value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetErrorCounter ( AT91PS_CAN pCAN // pointer to a CAN controller ) { return pCAN->CAN_ECR; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_InitTransferRequest //* \brief Request for a transfer on the corresponding mailboxes //*---------------------------------------------------------------------------- __inline void AT91F_CAN_InitTransferRequest ( AT91PS_CAN pCAN, // pointer to a CAN controller unsigned int transfer_cmd) { pCAN->CAN_TCR = transfer_cmd; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_InitAbortRequest //* \brief Abort the corresponding mailboxes //*---------------------------------------------------------------------------- __inline void AT91F_CAN_InitAbortRequest ( AT91PS_CAN pCAN, // pointer to a CAN controller unsigned int abort_cmd) { pCAN->CAN_ACR = abort_cmd; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_CfgMessageModeReg //* \brief Program the Message Mode Register //*---------------------------------------------------------------------------- __inline void AT91F_CAN_CfgMessageModeReg ( AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox unsigned int mode) { CAN_Mailbox->CAN_MB_MMR = mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetMessageModeReg //* \brief Return the Message Mode Register //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetMessageModeReg ( AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox { return CAN_Mailbox->CAN_MB_MMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_CfgMessageIDReg //* \brief Program the Message ID Register //* \brief Version == 0 for Standard messsage, Version == 1 for Extended //*---------------------------------------------------------------------------- __inline void AT91F_CAN_CfgMessageIDReg ( AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox unsigned int id, unsigned char version) { if(version==0) // IDvA Standard Format CAN_Mailbox->CAN_MB_MID = id<<18; else // IDvB Extended Format CAN_Mailbox->CAN_MB_MID = id | (1<<29); // set MIDE bit } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetMessageIDReg //* \brief Return the Message ID Register //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetMessageIDReg ( AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox { return CAN_Mailbox->CAN_MB_MID; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_CfgMessageAcceptanceMaskReg //* \brief Program the Message Acceptance Mask Register //*---------------------------------------------------------------------------- __inline void AT91F_CAN_CfgMessageAcceptanceMaskReg ( AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox unsigned int mask) { CAN_Mailbox->CAN_MB_MAM = mask; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetMessageAcceptanceMaskReg //* \brief Return the Message Acceptance Mask Register //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetMessageAcceptanceMaskReg ( AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox { return CAN_Mailbox->CAN_MB_MAM; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetFamilyID //* \brief Return the Message ID Register //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetFamilyID ( AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox { return CAN_Mailbox->CAN_MB_MFID; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_CfgMessageCtrl //* \brief Request and config for a transfer on the corresponding mailbox //*---------------------------------------------------------------------------- __inline void AT91F_CAN_CfgMessageCtrlReg ( AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox unsigned int message_ctrl_cmd) { CAN_Mailbox->CAN_MB_MCR = message_ctrl_cmd; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetMessageStatus //* \brief Return CAN Mailbox Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetMessageStatus ( AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox { return CAN_Mailbox->CAN_MB_MSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_CfgMessageDataLow //* \brief Program data low value //*---------------------------------------------------------------------------- __inline void AT91F_CAN_CfgMessageDataLow ( AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox unsigned int data) { CAN_Mailbox->CAN_MB_MDL = data; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetMessageDataLow //* \brief Return data low value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetMessageDataLow ( AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox { return CAN_Mailbox->CAN_MB_MDL; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_CfgMessageDataHigh //* \brief Program data high value //*---------------------------------------------------------------------------- __inline void AT91F_CAN_CfgMessageDataHigh ( AT91PS_CAN_MB CAN_Mailbox, // pointer to a CAN Mailbox unsigned int data) { CAN_Mailbox->CAN_MB_MDH = data; } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN_GetMessageDataHigh //* \brief Return data high value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_CAN_GetMessageDataHigh ( AT91PS_CAN_MB CAN_Mailbox) // pointer to a CAN Mailbox { return CAN_Mailbox->CAN_MB_MDH; } /* ***************************************************************************** SOFTWARE API FOR TC ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_TC_InterruptEnable //* \brief Enable TC Interrupt //*---------------------------------------------------------------------------- __inline void AT91F_TC_InterruptEnable( AT91PS_TC pTc, // \arg pointer to a TC controller unsigned int flag) // \arg TC interrupt to be enabled { pTc->TC_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_TC_InterruptDisable //* \brief Disable TC Interrupt //*---------------------------------------------------------------------------- __inline void AT91F_TC_InterruptDisable( AT91PS_TC pTc, // \arg pointer to a TC controller unsigned int flag) // \arg TC interrupt to be disabled { pTc->TC_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_TC_GetInterruptMaskStatus //* \brief Return TC Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_TC_GetInterruptMaskStatus( // \return TC Interrupt Mask Status AT91PS_TC pTc) // \arg pointer to a TC controller { return pTc->TC_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_TC_IsInterruptMasked //* \brief Test if TC Interrupt is Masked //*---------------------------------------------------------------------------- __inline int AT91F_TC_IsInterruptMasked( AT91PS_TC pTc, // \arg pointer to a TC controller unsigned int flag) // \arg flag to be tested { return (AT91F_TC_GetInterruptMaskStatus(pTc) & flag); } /* ***************************************************************************** SOFTWARE API FOR MCI ***************************************************************************** */ //* Classic MCI Data Timeout Register Configuration with 1048576 MCK cycles between 2 data transfer #define AT91C_MCI_DTOR_1MEGA_CYCLES (AT91C_MCI_DTOCYC | AT91C_MCI_DTOMUL) //* Classic MCI SDCard Register Configuration with 1-bit data bus on slot A #define AT91C_MCI_MMC_SLOTA (AT91C_MCI_SCDSEL & 0x0) //* Classic MCI SDCard Register Configuration with 1-bit data bus on slot B #define AT91C_MCI_MMC_SLOTB (AT91C_MCI_SCDSEL & 0x1) //* Classic MCI SDCard Register Configuration with 4-bit data bus on slot A #define AT91C_MCI_SDCARD_4BITS_SLOTA ( (AT91C_MCI_SCDSEL & 0x0) | AT91C_MCI_SCDBUS ) //* Classic MCI SDCard Register Configuration with 4-bit data bus on slot B #define AT91C_MCI_SDCARD_4BITS_SLOTB ( (AT91C_MCI_SCDSEL & 0x1) | AT91C_MCI_SCDBUS ) //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_Configure //* \brief Configure the MCI //*---------------------------------------------------------------------------- __inline void AT91F_MCI_Configure ( AT91PS_MCI pMCI, // \arg pointer to a MCI controller unsigned int DTOR_register, // \arg Data Timeout Register to be programmed unsigned int MR_register, // \arg Mode Register to be programmed unsigned int SDCR_register) // \arg SDCard Register to be programmed { //* Disable the MCI pMCI->MCI_CR = AT91C_MCI_MCIDIS | AT91C_MCI_PWSDIS; //* Disable all the interrupts pMCI->MCI_IDR = 0xFFFFFFFF; //* Set the Data Timeout Register pMCI->MCI_DTOR = DTOR_register; //* Set the Mode Register pMCI->MCI_MR = MR_register; //* Set the SDCard Register pMCI->MCI_SDCR = SDCR_register; //* Enable the MCI pMCI->MCI_CR = AT91C_MCI_MCIEN | AT91C_MCI_PWSEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_EnableIt //* \brief Enable MCI IT //*---------------------------------------------------------------------------- __inline void AT91F_MCI_EnableIt ( AT91PS_MCI pMCI, // \arg pointer to a MCI controller unsigned int flag) // \arg IT to be enabled { //* Write to the IER register pMCI->MCI_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_DisableIt //* \brief Disable MCI IT //*---------------------------------------------------------------------------- __inline void AT91F_MCI_DisableIt ( AT91PS_MCI pMCI, // \arg pointer to a MCI controller unsigned int flag) // \arg IT to be disabled { //* Write to the IDR register pMCI->MCI_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_GetStatus //* \brief Return MCI Interrupt Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_GetStatus( // \return MCI Interrupt Status AT91PS_MCI pMCI) // pointer to a MCI controller { return pMCI->MCI_SR; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_GetInterruptMaskStatus //* \brief Return MCI Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_GetInterruptMaskStatus( // \return MCI Interrupt Mask Status AT91PS_MCI pMCI) // pointer to a MCI controller { return pMCI->MCI_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_IsInterruptMasked //* \brief Test if MCI Interrupt is Masked //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_IsInterruptMasked( AT91PS_MCI pMCI, // \arg pointer to a MCI controller unsigned int flag) // \arg flag to be tested { return (AT91F_MCI_GetInterruptMaskStatus(pMCI) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_IsStatusSet //* \brief Test if MCI Status is Set //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_IsStatusSet( AT91PS_MCI pMCI, // \arg pointer to a MCI controller unsigned int flag) // \arg flag to be tested { return (AT91F_MCI_GetStatus(pMCI) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_Enable //* \brief Enable the MCI Interface //*---------------------------------------------------------------------------- __inline void AT91F_MCI_Enable ( AT91PS_MCI pMCI) // \arg pointer to a MCI controller { //* Enable the MCI pMCI->MCI_CR = AT91C_MCI_MCIEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_Disable //* \brief Disable the MCI Interface //*---------------------------------------------------------------------------- __inline void AT91F_MCI_Disable ( AT91PS_MCI pMCI) // \arg pointer to a MCI controller { //* Disable the MCI pMCI->MCI_CR = AT91C_MCI_MCIDIS; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_SW_Reset //* \brief Reset the MCI Interface //*---------------------------------------------------------------------------- __inline void AT91F_MCI_SW_Reset ( AT91PS_MCI pMCI) // \arg pointer to a MCI controller { //* Disable the MCI pMCI->MCI_CR = AT91C_MCI_SWRST; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_CfgModeReg //* \brief Configure the Mode Register of the MCI controller //*---------------------------------------------------------------------------- __inline void AT91F_MCI_CfgModeReg ( AT91PS_MCI pMCI, // pointer to a MCI controller unsigned int mode) // mode register { //* Write to the MR register pMCI->MCI_MR = mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_GetModeReg //* \brief Return the Mode Register of the MCI controller value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_GetModeReg ( AT91PS_MCI pMCI // pointer to a MCI controller ) { return pMCI->MCI_MR; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_CfgFrequency //* \brief Configure the frequency MCCK of the MCI controller //*---------------------------------------------------------------------------- __inline void AT91F_MCI_CfgFrequency ( AT91PS_MCI pMCI, // pointer to a MCI controller unsigned int mck_clock, // in MHz unsigned int mci_clock) // in MHz { unsigned int prescal; prescal = mck_clock/(2*mci_clock) - 1; //* Write to the MR register pMCI->MCI_MR &= ~AT91C_MCI_CLKDIV; pMCI->MCI_MR |= (prescal & AT91C_MCI_CLKDIV); } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_CfgDataTimeOutReg //* \brief Configure the Data TimeOut Register of the MCI controller //*---------------------------------------------------------------------------- __inline void AT91F_MCI_CfgDataTimeOutReg ( AT91PS_MCI pMCI, // pointer to a MCI controller unsigned int cfg) { //* Write to the DTOR register pMCI->MCI_DTOR = cfg; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_GetDataTimeOutReg //* \brief Return the Data TimeOut Register of the MCI controller value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_GetDataTimeOutReg ( AT91PS_MCI pMCI // pointer to a MCI controller ) { return pMCI->MCI_DTOR; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_CfgSDCardReg //* \brief Configure the SDCard Register of the MCI controller //*---------------------------------------------------------------------------- __inline void AT91F_MCI_CfgSDCardReg ( AT91PS_MCI pMCI, // pointer to a MCI controller unsigned int cfg) { //* Write to the SDCR register pMCI->MCI_SDCR = cfg; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_GetSDCardReg //* \brief Return the SDCard Register of the MCI controller value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_GetSDCardReg ( AT91PS_MCI pMCI // pointer to a MCI controller ) { return pMCI->MCI_SDCR; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_CfgARGReg //* \brief Configure the Command ARGUMENT Register of the MCI controller //*---------------------------------------------------------------------------- __inline void AT91F_MCI_CfgARGReg ( AT91PS_MCI pMCI, // pointer to a MCI controller unsigned int arg) { //* Write to the ARG register pMCI->MCI_ARGR = arg; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_GetARGReg //* \brief Return the Command ARGUMENT Register of the MCI controller value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_GetARGReg ( AT91PS_MCI pMCI // pointer to a MCI controller ) { return pMCI->MCI_ARGR; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_CfgCMDReg //* \brief Configure the COMMAND Register of the MCI controller //*---------------------------------------------------------------------------- __inline void AT91F_MCI_CfgCMDReg ( AT91PS_MCI pMCI, // pointer to a MCI controller unsigned int cmd) { //* Write to the ARG register pMCI->MCI_CMDR = cmd; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_GetRSP0Reg //* \brief Return the RESPONSE Register 0 of the MCI controller value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_GetRSP0Reg ( AT91PS_MCI pMCI // pointer to a MCI controller ) { return pMCI->MCI_RSPR[0]; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_GetRSP1Reg //* \brief Return the RESPONSE Register 1 of the MCI controller value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_GetRSP1Reg ( AT91PS_MCI pMCI // pointer to a MCI controller ) { return pMCI->MCI_RSPR[0]; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_GetRSP2Reg //* \brief Return the RESPONSE Register 2 of the MCI controller value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_GetRSP2Reg ( AT91PS_MCI pMCI // pointer to a MCI controller ) { return pMCI->MCI_RSPR[0]; } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_GetRSP3Reg //* \brief Return the RESPONSE Register 3 of the MCI controller value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_MCI_GetRSP3Reg ( AT91PS_MCI pMCI // pointer to a MCI controller ) { return pMCI->MCI_RSPR[0]; } /* ***************************************************************************** SOFTWARE API FOR UDP ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_EnableIt //* \brief Enable UDP IT //*---------------------------------------------------------------------------- __inline void AT91F_UDP_EnableIt ( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned int flag) // \arg IT to be enabled { //* Write to the IER register pUDP->UDP_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_DisableIt //* \brief Disable UDP IT //*---------------------------------------------------------------------------- __inline void AT91F_UDP_DisableIt ( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned int flag) // \arg IT to be disabled { //* Write to the IDR register pUDP->UDP_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_SetAddress //* \brief Set UDP functional address //*---------------------------------------------------------------------------- __inline void AT91F_UDP_SetAddress ( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned char address) // \arg new UDP address { pUDP->UDP_FADDR = (AT91C_UDP_FEN | address); } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_EnableEp //* \brief Enable Endpoint //*---------------------------------------------------------------------------- __inline void AT91F_UDP_EnableEp ( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned char endpoint) // \arg endpoint number { pUDP->UDP_CSR[endpoint] |= AT91C_UDP_EPEDS; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_DisableEp //* \brief Enable Endpoint //*---------------------------------------------------------------------------- __inline void AT91F_UDP_DisableEp ( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned char endpoint) // \arg endpoint number { pUDP->UDP_CSR[endpoint] &= ~AT91C_UDP_EPEDS; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_SetState //* \brief Set UDP Device state //*---------------------------------------------------------------------------- __inline void AT91F_UDP_SetState ( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned int flag) // \arg new UDP address { pUDP->UDP_GLBSTATE &= ~(AT91C_UDP_FADDEN | AT91C_UDP_CONFG); pUDP->UDP_GLBSTATE |= flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_GetState //* \brief return UDP Device state //*---------------------------------------------------------------------------- __inline unsigned int AT91F_UDP_GetState ( // \return the UDP device state AT91PS_UDP pUDP) // \arg pointer to a UDP controller { return (pUDP->UDP_GLBSTATE & (AT91C_UDP_FADDEN | AT91C_UDP_CONFG)); } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_ResetEp //* \brief Reset UDP endpoint //*---------------------------------------------------------------------------- __inline void AT91F_UDP_ResetEp ( // \return the UDP device state AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned int flag) // \arg Endpoints to be reset { pUDP->UDP_RSTEP = flag; pUDP->UDP_RSTEP = 0; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_EpStall //* \brief Endpoint will STALL requests //*---------------------------------------------------------------------------- __inline void AT91F_UDP_EpStall( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned char endpoint) // \arg endpoint number { pUDP->UDP_CSR[endpoint] |= AT91C_UDP_FORCESTALL; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_EpWrite //* \brief Write value in the DPR //*---------------------------------------------------------------------------- __inline void AT91F_UDP_EpWrite( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned char endpoint, // \arg endpoint number unsigned char value) // \arg value to be written in the DPR { pUDP->UDP_FDR[endpoint] = value; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_EpRead //* \brief Return value from the DPR //*---------------------------------------------------------------------------- __inline unsigned int AT91F_UDP_EpRead( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned char endpoint) // \arg endpoint number { return pUDP->UDP_FDR[endpoint]; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_EpEndOfWr //* \brief Notify the UDP that values in DPR are ready to be sent //*---------------------------------------------------------------------------- __inline void AT91F_UDP_EpEndOfWr( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned char endpoint) // \arg endpoint number { pUDP->UDP_CSR[endpoint] |= AT91C_UDP_TXPKTRDY; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_EpClear //* \brief Clear flag in the endpoint CSR register //*---------------------------------------------------------------------------- __inline void AT91F_UDP_EpClear( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned char endpoint, // \arg endpoint number unsigned int flag) // \arg flag to be cleared { pUDP->UDP_CSR[endpoint] &= ~(flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_EpSet //* \brief Set flag in the endpoint CSR register //*---------------------------------------------------------------------------- __inline void AT91F_UDP_EpSet( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned char endpoint, // \arg endpoint number unsigned int flag) // \arg flag to be cleared { pUDP->UDP_CSR[endpoint] |= flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_EpStatus //* \brief Return the endpoint CSR register //*---------------------------------------------------------------------------- __inline unsigned int AT91F_UDP_EpStatus( AT91PS_UDP pUDP, // \arg pointer to a UDP controller unsigned char endpoint) // \arg endpoint number { return pUDP->UDP_CSR[endpoint]; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_GetInterruptMaskStatus //* \brief Return UDP Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_UDP_GetInterruptMaskStatus( AT91PS_UDP pUdp) // \arg pointer to a UDP controller { return pUdp->UDP_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_IsInterruptMasked //* \brief Test if UDP Interrupt is Masked //*---------------------------------------------------------------------------- __inline int AT91F_UDP_IsInterruptMasked( AT91PS_UDP pUdp, // \arg pointer to a UDP controller unsigned int flag) // \arg flag to be tested { return (AT91F_UDP_GetInterruptMaskStatus(pUdp) & flag); } // ---------------------------------------------------------------------------- // \fn AT91F_UDP_InterruptStatusRegister // \brief Return the Interrupt Status Register // ---------------------------------------------------------------------------- __inline unsigned int AT91F_UDP_InterruptStatusRegister( AT91PS_UDP pUDP ) // \arg pointer to a UDP controller { return pUDP->UDP_ISR; } // ---------------------------------------------------------------------------- // \fn AT91F_UDP_InterruptClearRegister // \brief Clear Interrupt Register // ---------------------------------------------------------------------------- __inline void AT91F_UDP_InterruptClearRegister ( AT91PS_UDP pUDP, // \arg pointer to UDP controller unsigned int flag) // \arg IT to be cleat { pUDP->UDP_ICR = flag; } // ---------------------------------------------------------------------------- // \fn AT91F_UDP_EnableTransceiver // \brief Enable transceiver // ---------------------------------------------------------------------------- __inline void AT91F_UDP_EnableTransceiver( AT91PS_UDP pUDP ) // \arg pointer to a UDP controller { pUDP->UDP_TXVC &= ~AT91C_UDP_TXVDIS; } // ---------------------------------------------------------------------------- // \fn AT91F_UDP_DisableTransceiver // \brief Disable transceiver // ---------------------------------------------------------------------------- __inline void AT91F_UDP_DisableTransceiver( AT91PS_UDP pUDP ) // \arg pointer to a UDP controller { pUDP->UDP_TXVC = AT91C_UDP_TXVDIS; } /* ***************************************************************************** SOFTWARE API FOR TWI ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_TWI_EnableIt //* \brief Enable TWI IT //*---------------------------------------------------------------------------- __inline void AT91F_TWI_EnableIt ( AT91PS_TWI pTWI, // \arg pointer to a TWI controller unsigned int flag) // \arg IT to be enabled { //* Write to the IER register pTWI->TWI_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_TWI_DisableIt //* \brief Disable TWI IT //*---------------------------------------------------------------------------- __inline void AT91F_TWI_DisableIt ( AT91PS_TWI pTWI, // \arg pointer to a TWI controller unsigned int flag) // \arg IT to be disabled { //* Write to the IDR register pTWI->TWI_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_TWI_Configure //* \brief Configure TWI in master mode //*---------------------------------------------------------------------------- __inline void AT91F_TWI_Configure ( AT91PS_TWI pTWI ) // \arg pointer to a TWI controller { //* Disable interrupts pTWI->TWI_IDR = (unsigned int) -1; //* Reset peripheral pTWI->TWI_CR = AT91C_TWI_SWRST; //* Set Master mode pTWI->TWI_CR = AT91C_TWI_MSEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_TWI_GetInterruptMaskStatus //* \brief Return TWI Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_TWI_GetInterruptMaskStatus( // \return TWI Interrupt Mask Status AT91PS_TWI pTwi) // \arg pointer to a TWI controller { return pTwi->TWI_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_TWI_IsInterruptMasked //* \brief Test if TWI Interrupt is Masked //*---------------------------------------------------------------------------- __inline int AT91F_TWI_IsInterruptMasked( AT91PS_TWI pTwi, // \arg pointer to a TWI controller unsigned int flag) // \arg flag to be tested { return (AT91F_TWI_GetInterruptMaskStatus(pTwi) & flag); } /* ***************************************************************************** SOFTWARE API FOR USART ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_US_Baudrate //* \brief Calculate the baudrate //* Standard Asynchronous Mode : 8 bits , 1 stop , no parity #define AT91C_US_ASYNC_MODE ( AT91C_US_USMODE_NORMAL + \ AT91C_US_NBSTOP_1_BIT + \ AT91C_US_PAR_NONE + \ AT91C_US_CHRL_8_BITS + \ AT91C_US_CLKS_CLOCK ) //* Standard External Asynchronous Mode : 8 bits , 1 stop , no parity #define AT91C_US_ASYNC_SCK_MODE ( AT91C_US_USMODE_NORMAL + \ AT91C_US_NBSTOP_1_BIT + \ AT91C_US_PAR_NONE + \ AT91C_US_CHRL_8_BITS + \ AT91C_US_CLKS_EXT ) //* Standard Synchronous Mode : 8 bits , 1 stop , no parity #define AT91C_US_SYNC_MODE ( AT91C_US_SYNC + \ AT91C_US_USMODE_NORMAL + \ AT91C_US_NBSTOP_1_BIT + \ AT91C_US_PAR_NONE + \ AT91C_US_CHRL_8_BITS + \ AT91C_US_CLKS_CLOCK ) //* SCK used Label #define AT91C_US_SCK_USED (AT91C_US_CKLO | AT91C_US_CLKS_EXT) //* Standard ISO T=0 Mode : 8 bits , 1 stop , parity #define AT91C_US_ISO_READER_MODE ( AT91C_US_USMODE_ISO7816_0 + \ AT91C_US_CLKS_CLOCK +\ AT91C_US_NBSTOP_1_BIT + \ AT91C_US_PAR_EVEN + \ AT91C_US_CHRL_8_BITS + \ AT91C_US_CKLO +\ AT91C_US_OVER) //* Standard IRDA mode #define AT91C_US_ASYNC_IRDA_MODE ( AT91C_US_USMODE_IRDA + \ AT91C_US_NBSTOP_1_BIT + \ AT91C_US_PAR_NONE + \ AT91C_US_CHRL_8_BITS + \ AT91C_US_CLKS_CLOCK ) //*---------------------------------------------------------------------------- //* \fn AT91F_US_Baudrate //* \brief Caluculate baud_value according to the main clock and the baud rate //*---------------------------------------------------------------------------- __inline unsigned int AT91F_US_Baudrate ( const unsigned int main_clock, // \arg peripheral clock const unsigned int baud_rate) // \arg UART baudrate { unsigned int baud_value = ((main_clock*10)/(baud_rate * 16)); if ((baud_value % 10) >= 5) baud_value = (baud_value / 10) + 1; else baud_value /= 10; return baud_value; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_SetBaudrate //* \brief Set the baudrate according to the CPU clock //*---------------------------------------------------------------------------- __inline void AT91F_US_SetBaudrate ( AT91PS_USART pUSART, // \arg pointer to a USART controller unsigned int mainClock, // \arg peripheral clock unsigned int speed) // \arg UART baudrate { //* Define the baud rate divisor register pUSART->US_BRGR = AT91F_US_Baudrate(mainClock, speed); } //*---------------------------------------------------------------------------- //* \fn AT91F_US_SetTimeguard //* \brief Set USART timeguard //*---------------------------------------------------------------------------- __inline void AT91F_US_SetTimeguard ( AT91PS_USART pUSART, // \arg pointer to a USART controller unsigned int timeguard) // \arg timeguard value { //* Write the Timeguard Register pUSART->US_TTGR = timeguard ; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_EnableIt //* \brief Enable USART IT //*---------------------------------------------------------------------------- __inline void AT91F_US_EnableIt ( AT91PS_USART pUSART, // \arg pointer to a USART controller unsigned int flag) // \arg IT to be enabled { //* Write to the IER register pUSART->US_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_DisableIt //* \brief Disable USART IT //*---------------------------------------------------------------------------- __inline void AT91F_US_DisableIt ( AT91PS_USART pUSART, // \arg pointer to a USART controller unsigned int flag) // \arg IT to be disabled { //* Write to the IER register pUSART->US_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_Configure //* \brief Configure USART //*---------------------------------------------------------------------------- __inline void AT91F_US_Configure ( AT91PS_USART pUSART, // \arg pointer to a USART controller unsigned int mainClock, // \arg peripheral clock unsigned int mode , // \arg mode Register to be programmed unsigned int baudRate , // \arg baudrate to be programmed unsigned int timeguard ) // \arg timeguard to be programmed { //* Disable interrupts pUSART->US_IDR = (unsigned int) -1; //* Reset receiver and transmitter pUSART->US_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS ; //* Define the baud rate divisor register AT91F_US_SetBaudrate(pUSART, mainClock, baudRate); //* Write the Timeguard Register AT91F_US_SetTimeguard(pUSART, timeguard); //* Clear Transmit and Receive Counters AT91F_PDC_Open((AT91PS_PDC) &(pUSART->US_RPR)); //* Define the USART mode pUSART->US_MR = mode ; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_EnableRx //* \brief Enable receiving characters //*---------------------------------------------------------------------------- __inline void AT91F_US_EnableRx ( AT91PS_USART pUSART) // \arg pointer to a USART controller { //* Enable receiver pUSART->US_CR = AT91C_US_RXEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_EnableTx //* \brief Enable sending characters //*---------------------------------------------------------------------------- __inline void AT91F_US_EnableTx ( AT91PS_USART pUSART) // \arg pointer to a USART controller { //* Enable transmitter pUSART->US_CR = AT91C_US_TXEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_ResetRx //* \brief Reset Receiver and re-enable it //*---------------------------------------------------------------------------- __inline void AT91F_US_ResetRx ( AT91PS_USART pUSART) // \arg pointer to a USART controller { //* Reset receiver pUSART->US_CR = AT91C_US_RSTRX; //* Re-Enable receiver pUSART->US_CR = AT91C_US_RXEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_ResetTx //* \brief Reset Transmitter and re-enable it //*---------------------------------------------------------------------------- __inline void AT91F_US_ResetTx ( AT91PS_USART pUSART) // \arg pointer to a USART controller { //* Reset transmitter pUSART->US_CR = AT91C_US_RSTTX; //* Enable transmitter pUSART->US_CR = AT91C_US_TXEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_DisableRx //* \brief Disable Receiver //*---------------------------------------------------------------------------- __inline void AT91F_US_DisableRx ( AT91PS_USART pUSART) // \arg pointer to a USART controller { //* Disable receiver pUSART->US_CR = AT91C_US_RXDIS; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_DisableTx //* \brief Disable Transmitter //*---------------------------------------------------------------------------- __inline void AT91F_US_DisableTx ( AT91PS_USART pUSART) // \arg pointer to a USART controller { //* Disable transmitter pUSART->US_CR = AT91C_US_TXDIS; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_Close //* \brief Close USART: disable IT disable receiver and transmitter, close PDC //*---------------------------------------------------------------------------- __inline void AT91F_US_Close ( AT91PS_USART pUSART) // \arg pointer to a USART controller { //* Reset the baud rate divisor register pUSART->US_BRGR = 0 ; //* Reset the USART mode pUSART->US_MR = 0 ; //* Reset the Timeguard Register pUSART->US_TTGR = 0; //* Disable all interrupts pUSART->US_IDR = 0xFFFFFFFF ; //* Abort the Peripheral Data Transfers AT91F_PDC_Close((AT91PS_PDC) &(pUSART->US_RPR)); //* Disable receiver and transmitter and stop any activity immediately pUSART->US_CR = AT91C_US_TXDIS | AT91C_US_RXDIS | AT91C_US_RSTTX | AT91C_US_RSTRX ; } //*---------------------------------------------------------------------------- //* \fn AT91F_US_TxReady //* \brief Return 1 if a character can be written in US_THR //*---------------------------------------------------------------------------- __inline unsigned int AT91F_US_TxReady ( AT91PS_USART pUSART ) // \arg pointer to a USART controller { return (pUSART->US_CSR & AT91C_US_TXRDY); } //*---------------------------------------------------------------------------- //* \fn AT91F_US_RxReady //* \brief Return 1 if a character can be read in US_RHR //*---------------------------------------------------------------------------- __inline unsigned int AT91F_US_RxReady ( AT91PS_USART pUSART ) // \arg pointer to a USART controller { return (pUSART->US_CSR & AT91C_US_RXRDY); } //*---------------------------------------------------------------------------- //* \fn AT91F_US_Error //* \brief Return the error flag //*---------------------------------------------------------------------------- __inline unsigned int AT91F_US_Error ( AT91PS_USART pUSART ) // \arg pointer to a USART controller { return (pUSART->US_CSR & (AT91C_US_OVRE | // Overrun error AT91C_US_FRAME | // Framing error AT91C_US_PARE)); // Parity error } //*---------------------------------------------------------------------------- //* \fn AT91F_US_PutChar //* \brief Send a character,does not check if ready to send //*---------------------------------------------------------------------------- __inline void AT91F_US_PutChar ( AT91PS_USART pUSART, int character ) { pUSART->US_THR = (character & 0x1FF); } //*---------------------------------------------------------------------------- //* \fn AT91F_US_GetChar //* \brief Receive a character,does not check if a character is available //*---------------------------------------------------------------------------- __inline int AT91F_US_GetChar ( const AT91PS_USART pUSART) { return((pUSART->US_RHR) & 0x1FF); } //*---------------------------------------------------------------------------- //* \fn AT91F_US_SendFrame //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initializaed with Next Buffer, 0 if PDC is busy //*---------------------------------------------------------------------------- __inline unsigned int AT91F_US_SendFrame( AT91PS_USART pUSART, char *pBuffer, unsigned int szBuffer, char *pNextBuffer, unsigned int szNextBuffer ) { return AT91F_PDC_SendFrame( (AT91PS_PDC) &(pUSART->US_RPR), pBuffer, szBuffer, pNextBuffer, szNextBuffer); } //*---------------------------------------------------------------------------- //* \fn AT91F_US_ReceiveFrame //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initializaed with Next Buffer, 0 if PDC is busy //*---------------------------------------------------------------------------- __inline unsigned int AT91F_US_ReceiveFrame ( AT91PS_USART pUSART, char *pBuffer, unsigned int szBuffer, char *pNextBuffer, unsigned int szNextBuffer ) { return AT91F_PDC_ReceiveFrame( (AT91PS_PDC) &(pUSART->US_RPR), pBuffer, szBuffer, pNextBuffer, szNextBuffer); } //*---------------------------------------------------------------------------- //* \fn AT91F_US_SetIrdaFilter //* \brief Set the value of IrDa filter tregister //*---------------------------------------------------------------------------- __inline void AT91F_US_SetIrdaFilter ( AT91PS_USART pUSART, unsigned char value ) { pUSART->US_IF = value; } /* ***************************************************************************** SOFTWARE API FOR PWMC ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_PWM_GetStatus //* \brief Return PWM Interrupt Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PWMC_GetStatus( // \return PWM Interrupt Status AT91PS_PWMC pPWM) // pointer to a PWM controller { return pPWM->PWMC_SR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PWM_InterruptEnable //* \brief Enable PWM Interrupt //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_InterruptEnable( AT91PS_PWMC pPwm, // \arg pointer to a PWM controller unsigned int flag) // \arg PWM interrupt to be enabled { pPwm->PWMC_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PWM_InterruptDisable //* \brief Disable PWM Interrupt //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_InterruptDisable( AT91PS_PWMC pPwm, // \arg pointer to a PWM controller unsigned int flag) // \arg PWM interrupt to be disabled { pPwm->PWMC_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PWM_GetInterruptMaskStatus //* \brief Return PWM Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PWMC_GetInterruptMaskStatus( // \return PWM Interrupt Mask Status AT91PS_PWMC pPwm) // \arg pointer to a PWM controller { return pPwm->PWMC_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_PWM_IsInterruptMasked //* \brief Test if PWM Interrupt is Masked //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PWMC_IsInterruptMasked( AT91PS_PWMC pPWM, // \arg pointer to a PWM controller unsigned int flag) // \arg flag to be tested { return (AT91F_PWMC_GetInterruptMaskStatus(pPWM) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PWM_IsStatusSet //* \brief Test if PWM Interrupt is Set //*---------------------------------------------------------------------------- __inline unsigned int AT91F_PWMC_IsStatusSet( AT91PS_PWMC pPWM, // \arg pointer to a PWM controller unsigned int flag) // \arg flag to be tested { return (AT91F_PWMC_GetStatus(pPWM) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_PWM_CfgChannel //* \brief Test if PWM Interrupt is Set //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_CfgChannel( AT91PS_PWMC pPWM, // \arg pointer to a PWM controller unsigned int channelId, // \arg PWM channel ID unsigned int mode, // \arg PWM mode unsigned int period, // \arg PWM period unsigned int duty) // \arg PWM duty cycle { pPWM->PWMC_CH[channelId].PWMC_CMR = mode; pPWM->PWMC_CH[channelId].PWMC_CDTYR = duty; pPWM->PWMC_CH[channelId].PWMC_CPRDR = period; } //*---------------------------------------------------------------------------- //* \fn AT91F_PWM_StartChannel //* \brief Enable channel //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_StartChannel( AT91PS_PWMC pPWM, // \arg pointer to a PWM controller unsigned int flag) // \arg Channels IDs to be enabled { pPWM->PWMC_ENA = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PWM_StopChannel //* \brief Disable channel //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_StopChannel( AT91PS_PWMC pPWM, // \arg pointer to a PWM controller unsigned int flag) // \arg Channels IDs to be enabled { pPWM->PWMC_DIS = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_PWM_UpdateChannel //* \brief Update Period or Duty Cycle //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_UpdateChannel( AT91PS_PWMC pPWM, // \arg pointer to a PWM controller unsigned int channelId, // \arg PWM channel ID unsigned int update) // \arg Channels IDs to be enabled { pPWM->PWMC_CH[channelId].PWMC_CUPDR = update; } /* ***************************************************************************** SOFTWARE API FOR SSC ***************************************************************************** */ //* Define the standard I2S mode configuration //* Configuration to set in the SSC Transmit Clock Mode Register //* Parameters : nb_bit_by_slot : 8, 16 or 32 bits //* nb_slot_by_frame : number of channels #define AT91C_I2S_ASY_MASTER_TX_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\ AT91C_SSC_CKS_DIV +\ AT91C_SSC_CKO_CONTINOUS +\ AT91C_SSC_CKG_NONE +\ AT91C_SSC_START_FALL_RF +\ AT91C_SSC_STTOUT +\ ((1<<16) & AT91C_SSC_STTDLY) +\ ((((nb_bit_by_slot*nb_slot_by_frame)/2)-1) <<24)) //* Configuration to set in the SSC Transmit Frame Mode Register //* Parameters : nb_bit_by_slot : 8, 16 or 32 bits //* nb_slot_by_frame : number of channels #define AT91C_I2S_ASY_TX_FRAME_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\ (nb_bit_by_slot-1) +\ AT91C_SSC_MSBF +\ (((nb_slot_by_frame-1)<<8) & AT91C_SSC_DATNB) +\ (((nb_bit_by_slot-1)<<16) & AT91C_SSC_FSLEN) +\ AT91C_SSC_FSOS_NEGATIVE) //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_SetBaudrate //* \brief Set the baudrate according to the CPU clock //*---------------------------------------------------------------------------- __inline void AT91F_SSC_SetBaudrate ( AT91PS_SSC pSSC, // \arg pointer to a SSC controller unsigned int mainClock, // \arg peripheral clock unsigned int speed) // \arg SSC baudrate { unsigned int baud_value; //* Define the baud rate divisor register if (speed == 0) baud_value = 0; else { baud_value = (unsigned int) (mainClock * 10)/(2*speed); if ((baud_value % 10) >= 5) baud_value = (baud_value / 10) + 1; else baud_value /= 10; } pSSC->SSC_CMR = baud_value; } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_Configure //* \brief Configure SSC //*---------------------------------------------------------------------------- __inline void AT91F_SSC_Configure ( AT91PS_SSC pSSC, // \arg pointer to a SSC controller unsigned int syst_clock, // \arg System Clock Frequency unsigned int baud_rate, // \arg Expected Baud Rate Frequency unsigned int clock_rx, // \arg Receiver Clock Parameters unsigned int mode_rx, // \arg mode Register to be programmed unsigned int clock_tx, // \arg Transmitter Clock Parameters unsigned int mode_tx) // \arg mode Register to be programmed { //* Disable interrupts pSSC->SSC_IDR = (unsigned int) -1; //* Reset receiver and transmitter pSSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_RXDIS | AT91C_SSC_TXDIS ; //* Define the Clock Mode Register AT91F_SSC_SetBaudrate(pSSC, syst_clock, baud_rate); //* Write the Receive Clock Mode Register pSSC->SSC_RCMR = clock_rx; //* Write the Transmit Clock Mode Register pSSC->SSC_TCMR = clock_tx; //* Write the Receive Frame Mode Register pSSC->SSC_RFMR = mode_rx; //* Write the Transmit Frame Mode Register pSSC->SSC_TFMR = mode_tx; //* Clear Transmit and Receive Counters AT91F_PDC_Open((AT91PS_PDC) &(pSSC->SSC_RPR)); } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_EnableRx //* \brief Enable receiving datas //*---------------------------------------------------------------------------- __inline void AT91F_SSC_EnableRx ( AT91PS_SSC pSSC) // \arg pointer to a SSC controller { //* Enable receiver pSSC->SSC_CR = AT91C_SSC_RXEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_DisableRx //* \brief Disable receiving datas //*---------------------------------------------------------------------------- __inline void AT91F_SSC_DisableRx ( AT91PS_SSC pSSC) // \arg pointer to a SSC controller { //* Disable receiver pSSC->SSC_CR = AT91C_SSC_RXDIS; } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_EnableTx //* \brief Enable sending datas //*---------------------------------------------------------------------------- __inline void AT91F_SSC_EnableTx ( AT91PS_SSC pSSC) // \arg pointer to a SSC controller { //* Enable transmitter pSSC->SSC_CR = AT91C_SSC_TXEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_DisableTx //* \brief Disable sending datas //*---------------------------------------------------------------------------- __inline void AT91F_SSC_DisableTx ( AT91PS_SSC pSSC) // \arg pointer to a SSC controller { //* Disable transmitter pSSC->SSC_CR = AT91C_SSC_TXDIS; } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_EnableIt //* \brief Enable SSC IT //*---------------------------------------------------------------------------- __inline void AT91F_SSC_EnableIt ( AT91PS_SSC pSSC, // \arg pointer to a SSC controller unsigned int flag) // \arg IT to be enabled { //* Write to the IER register pSSC->SSC_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_DisableIt //* \brief Disable SSC IT //*---------------------------------------------------------------------------- __inline void AT91F_SSC_DisableIt ( AT91PS_SSC pSSC, // \arg pointer to a SSC controller unsigned int flag) // \arg IT to be disabled { //* Write to the IDR register pSSC->SSC_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_ReceiveFrame //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initialized with Next Buffer, 0 if PDC is busy //*---------------------------------------------------------------------------- __inline unsigned int AT91F_SSC_ReceiveFrame ( AT91PS_SSC pSSC, char *pBuffer, unsigned int szBuffer, char *pNextBuffer, unsigned int szNextBuffer ) { return AT91F_PDC_ReceiveFrame( (AT91PS_PDC) &(pSSC->SSC_RPR), pBuffer, szBuffer, pNextBuffer, szNextBuffer); } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_SendFrame //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initialized with Next Buffer, 0 if PDC is busy //*---------------------------------------------------------------------------- __inline unsigned int AT91F_SSC_SendFrame( AT91PS_SSC pSSC, char *pBuffer, unsigned int szBuffer, char *pNextBuffer, unsigned int szNextBuffer ) { return AT91F_PDC_SendFrame( (AT91PS_PDC) &(pSSC->SSC_RPR), pBuffer, szBuffer, pNextBuffer, szNextBuffer); } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_GetInterruptMaskStatus //* \brief Return SSC Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_SSC_GetInterruptMaskStatus( // \return SSC Interrupt Mask Status AT91PS_SSC pSsc) // \arg pointer to a SSC controller { return pSsc->SSC_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC_IsInterruptMasked //* \brief Test if SSC Interrupt is Masked //*---------------------------------------------------------------------------- __inline int AT91F_SSC_IsInterruptMasked( AT91PS_SSC pSsc, // \arg pointer to a SSC controller unsigned int flag) // \arg flag to be tested { return (AT91F_SSC_GetInterruptMaskStatus(pSsc) & flag); } /* ***************************************************************************** SOFTWARE API FOR ADC ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_EnableIt //* \brief Enable ADC interrupt //*---------------------------------------------------------------------------- __inline void AT91F_ADC_EnableIt ( AT91PS_ADC pADC, // pointer to a ADC controller unsigned int flag) // IT to be enabled { //* Write to the IER register pADC->ADC_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_DisableIt //* \brief Disable ADC interrupt //*---------------------------------------------------------------------------- __inline void AT91F_ADC_DisableIt ( AT91PS_ADC pADC, // pointer to a ADC controller unsigned int flag) // IT to be disabled { //* Write to the IDR register pADC->ADC_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetStatus //* \brief Return ADC Interrupt Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetStatus( // \return ADC Interrupt Status AT91PS_ADC pADC) // pointer to a ADC controller { return pADC->ADC_SR; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetInterruptMaskStatus //* \brief Return ADC Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetInterruptMaskStatus( // \return ADC Interrupt Mask Status AT91PS_ADC pADC) // pointer to a ADC controller { return pADC->ADC_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_IsInterruptMasked //* \brief Test if ADC Interrupt is Masked //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_IsInterruptMasked( AT91PS_ADC pADC, // \arg pointer to a ADC controller unsigned int flag) // \arg flag to be tested { return (AT91F_ADC_GetInterruptMaskStatus(pADC) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_IsStatusSet //* \brief Test if ADC Status is Set //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_IsStatusSet( AT91PS_ADC pADC, // \arg pointer to a ADC controller unsigned int flag) // \arg flag to be tested { return (AT91F_ADC_GetStatus(pADC) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_CfgModeReg //* \brief Configure the Mode Register of the ADC controller //*---------------------------------------------------------------------------- __inline void AT91F_ADC_CfgModeReg ( AT91PS_ADC pADC, // pointer to a ADC controller unsigned int mode) // mode register { //* Write to the MR register pADC->ADC_MR = mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetModeReg //* \brief Return the Mode Register of the ADC controller value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetModeReg ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_MR; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_CfgTimings //* \brief Configure the different necessary timings of the ADC controller //*---------------------------------------------------------------------------- __inline void AT91F_ADC_CfgTimings ( AT91PS_ADC pADC, // pointer to a ADC controller unsigned int mck_clock, // in MHz unsigned int adc_clock, // in MHz unsigned int startup_time, // in us unsigned int sample_and_hold_time) // in ns { unsigned int prescal,startup,shtim; prescal = mck_clock/(2*adc_clock) - 1; startup = adc_clock*startup_time/8 - 1; shtim = adc_clock*sample_and_hold_time/1000 - 1; //* Write to the MR register pADC->ADC_MR = ( (prescal<<8) & AT91C_ADC_PRESCAL) | ( (startup<<16) & AT91C_ADC_STARTUP) | ( (shtim<<24) & AT91C_ADC_SHTIM); } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_EnableChannel //* \brief Return ADC Timer Register Value //*---------------------------------------------------------------------------- __inline void AT91F_ADC_EnableChannel ( AT91PS_ADC pADC, // pointer to a ADC controller unsigned int channel) // mode register { //* Write to the CHER register pADC->ADC_CHER = channel; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_DisableChannel //* \brief Return ADC Timer Register Value //*---------------------------------------------------------------------------- __inline void AT91F_ADC_DisableChannel ( AT91PS_ADC pADC, // pointer to a ADC controller unsigned int channel) // mode register { //* Write to the CHDR register pADC->ADC_CHDR = channel; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetChannelStatus //* \brief Return ADC Timer Register Value //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetChannelStatus ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_CHSR; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_StartConversion //* \brief Software request for a analog to digital conversion //*---------------------------------------------------------------------------- __inline void AT91F_ADC_StartConversion ( AT91PS_ADC pADC // pointer to a ADC controller ) { pADC->ADC_CR = AT91C_ADC_START; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_SoftReset //* \brief Software reset //*---------------------------------------------------------------------------- __inline void AT91F_ADC_SoftReset ( AT91PS_ADC pADC // pointer to a ADC controller ) { pADC->ADC_CR = AT91C_ADC_SWRST; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetLastConvertedData //* \brief Return the Last Converted Data //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetLastConvertedData ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_LCDR; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetConvertedDataCH0 //* \brief Return the Channel 0 Converted Data //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetConvertedDataCH0 ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_CDR0; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetConvertedDataCH1 //* \brief Return the Channel 1 Converted Data //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetConvertedDataCH1 ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_CDR1; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetConvertedDataCH2 //* \brief Return the Channel 2 Converted Data //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetConvertedDataCH2 ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_CDR2; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetConvertedDataCH3 //* \brief Return the Channel 3 Converted Data //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetConvertedDataCH3 ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_CDR3; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetConvertedDataCH4 //* \brief Return the Channel 4 Converted Data //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetConvertedDataCH4 ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_CDR4; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetConvertedDataCH5 //* \brief Return the Channel 5 Converted Data //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetConvertedDataCH5 ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_CDR5; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetConvertedDataCH6 //* \brief Return the Channel 6 Converted Data //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetConvertedDataCH6 ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_CDR6; } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC_GetConvertedDataCH7 //* \brief Return the Channel 7 Converted Data //*---------------------------------------------------------------------------- __inline unsigned int AT91F_ADC_GetConvertedDataCH7 ( AT91PS_ADC pADC // pointer to a ADC controller ) { return pADC->ADC_CDR7; } /* ***************************************************************************** SOFTWARE API FOR SPI ***************************************************************************** */ //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_CfgCs //* \brief Configure SPI chip select register //*---------------------------------------------------------------------------- __inline void AT91F_SPI_CfgCs ( AT91PS_SPI pSPI, // pointer to a SPI controller int cs, // SPI cs number (0 to 3) int val) // chip select register { //* Write to the CSR register *(pSPI->SPI_CSR + cs) = val; } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_EnableIt //* \brief Enable SPI interrupt //*---------------------------------------------------------------------------- __inline void AT91F_SPI_EnableIt ( AT91PS_SPI pSPI, // pointer to a SPI controller unsigned int flag) // IT to be enabled { //* Write to the IER register pSPI->SPI_IER = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_DisableIt //* \brief Disable SPI interrupt //*---------------------------------------------------------------------------- __inline void AT91F_SPI_DisableIt ( AT91PS_SPI pSPI, // pointer to a SPI controller unsigned int flag) // IT to be disabled { //* Write to the IDR register pSPI->SPI_IDR = flag; } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_Reset //* \brief Reset the SPI controller //*---------------------------------------------------------------------------- __inline void AT91F_SPI_Reset ( AT91PS_SPI pSPI // pointer to a SPI controller ) { //* Write to the CR register pSPI->SPI_CR = AT91C_SPI_SWRST; } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_Enable //* \brief Enable the SPI controller //*---------------------------------------------------------------------------- __inline void AT91F_SPI_Enable ( AT91PS_SPI pSPI // pointer to a SPI controller ) { //* Write to the CR register pSPI->SPI_CR = AT91C_SPI_SPIEN; } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_Disable //* \brief Disable the SPI controller //*---------------------------------------------------------------------------- __inline void AT91F_SPI_Disable ( AT91PS_SPI pSPI // pointer to a SPI controller ) { //* Write to the CR register pSPI->SPI_CR = AT91C_SPI_SPIDIS; } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_CfgMode //* \brief Enable the SPI controller //*---------------------------------------------------------------------------- __inline void AT91F_SPI_CfgMode ( AT91PS_SPI pSPI, // pointer to a SPI controller int mode) // mode register { //* Write to the MR register pSPI->SPI_MR = mode; } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_CfgPCS //* \brief Switch to the correct PCS of SPI Mode Register : Fixed Peripheral Selected //*---------------------------------------------------------------------------- __inline void AT91F_SPI_CfgPCS ( AT91PS_SPI pSPI, // pointer to a SPI controller char PCS_Device) // PCS of the Device { //* Write to the MR register pSPI->SPI_MR &= 0xFFF0FFFF; pSPI->SPI_MR |= ( (PCS_Device<<16) & AT91C_SPI_PCS ); } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_ReceiveFrame //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initializaed with Next Buffer, 0 if PDC is busy //*---------------------------------------------------------------------------- __inline unsigned int AT91F_SPI_ReceiveFrame ( AT91PS_SPI pSPI, char *pBuffer, unsigned int szBuffer, char *pNextBuffer, unsigned int szNextBuffer ) { return AT91F_PDC_ReceiveFrame( (AT91PS_PDC) &(pSPI->SPI_RPR), pBuffer, szBuffer, pNextBuffer, szNextBuffer); } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_SendFrame //* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initializaed with Next Buffer, 0 if PDC is bSPIy //*---------------------------------------------------------------------------- __inline unsigned int AT91F_SPI_SendFrame( AT91PS_SPI pSPI, char *pBuffer, unsigned int szBuffer, char *pNextBuffer, unsigned int szNextBuffer ) { return AT91F_PDC_SendFrame( (AT91PS_PDC) &(pSPI->SPI_RPR), pBuffer, szBuffer, pNextBuffer, szNextBuffer); } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_Close //* \brief Close SPI: disable IT disable transfert, close PDC //*---------------------------------------------------------------------------- __inline void AT91F_SPI_Close ( AT91PS_SPI pSPI) // \arg pointer to a SPI controller { //* Reset all the Chip Select register pSPI->SPI_CSR[0] = 0 ; pSPI->SPI_CSR[1] = 0 ; pSPI->SPI_CSR[2] = 0 ; pSPI->SPI_CSR[3] = 0 ; //* Reset the SPI mode pSPI->SPI_MR = 0 ; //* Disable all interrupts pSPI->SPI_IDR = 0xFFFFFFFF ; //* Abort the Peripheral Data Transfers AT91F_PDC_Close((AT91PS_PDC) &(pSPI->SPI_RPR)); //* Disable receiver and transmitter and stop any activity immediately pSPI->SPI_CR = AT91C_SPI_SPIDIS; } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_PutChar //* \brief Send a character,does not check if ready to send //*---------------------------------------------------------------------------- __inline void AT91F_SPI_PutChar ( AT91PS_SPI pSPI, unsigned int character, unsigned int cs_number ) { unsigned int value_for_cs; value_for_cs = (~(1 << cs_number)) & 0xF; //Place a zero among a 4 ONEs number pSPI->SPI_TDR = (character & 0xFFFF) | (value_for_cs << 16); } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_GetChar //* \brief Receive a character,does not check if a character is available //*---------------------------------------------------------------------------- __inline int AT91F_SPI_GetChar ( const AT91PS_SPI pSPI) { return((pSPI->SPI_RDR) & 0xFFFF); } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_GetInterruptMaskStatus //* \brief Return SPI Interrupt Mask Status //*---------------------------------------------------------------------------- __inline unsigned int AT91F_SPI_GetInterruptMaskStatus( // \return SPI Interrupt Mask Status AT91PS_SPI pSpi) // \arg pointer to a SPI controller { return pSpi->SPI_IMR; } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI_IsInterruptMasked //* \brief Test if SPI Interrupt is Masked //*---------------------------------------------------------------------------- __inline int AT91F_SPI_IsInterruptMasked( AT91PS_SPI pSpi, // \arg pointer to a SPI controller unsigned int flag) // \arg flag to be tested { return (AT91F_SPI_GetInterruptMaskStatus(pSpi) & flag); } //*---------------------------------------------------------------------------- //* \fn AT91F_MC_CfgPMC //* \brief Enable Peripheral clock in PMC for MC //*---------------------------------------------------------------------------- __inline void AT91F_MC_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SYS)); } //*---------------------------------------------------------------------------- //* \fn AT91F_DBGU_CfgPMC //* \brief Enable Peripheral clock in PMC for DBGU //*---------------------------------------------------------------------------- __inline void AT91F_DBGU_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SYS)); } //*---------------------------------------------------------------------------- //* \fn AT91F_DBGU_CfgPIO //* \brief Configure PIO controllers to drive DBGU signals //*---------------------------------------------------------------------------- __inline void AT91F_DBGU_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA31_DTXD ) | ((unsigned int) AT91C_PA30_DRXD ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PWMC_CH0_CfgPIO //* \brief Configure PIO controllers to drive PWMC_CH0 signals //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_CH0_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA18_PWM0 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB14_PWM0 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PWMC_CH1_CfgPIO //* \brief Configure PIO controllers to drive PWMC_CH1 signals //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_CH1_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA19_PWM1 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB15_PWM1 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PWMC_CH2_CfgPIO //* \brief Configure PIO controllers to drive PWMC_CH2 signals //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_CH2_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA20_PWM2 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB16_PWM2 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PWMC_CH3_CfgPIO //* \brief Configure PIO controllers to drive PWMC_CH3 signals //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_CH3_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA21_PWM3 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB17_PWM3 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PWMC_CH4_CfgPIO //* \brief Configure PIO controllers to drive PWMC_CH4 signals //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_CH4_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA22_PWM4 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB18_PWM4 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PWMC_CH5_CfgPIO //* \brief Configure PIO controllers to drive PWMC_CH5 signals //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_CH5_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA23_PWM5 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB0_PWM5 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PWMC_CH6_CfgPIO //* \brief Configure PIO controllers to drive PWMC_CH6 signals //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_CH6_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA24_PWM6 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB1_PWM6 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PWMC_CH7_CfgPIO //* \brief Configure PIO controllers to drive PWMC_CH7 signals //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_CH7_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA25_PWM7 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB2_PWM7 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_SHDWC_CfgPMC //* \brief Enable Peripheral clock in PMC for SHDWC //*---------------------------------------------------------------------------- __inline void AT91F_SHDWC_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SYS)); } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI0_CfgPMC //* \brief Enable Peripheral clock in PMC for SPI0 //*---------------------------------------------------------------------------- __inline void AT91F_SPI0_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SPI0)); } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI0_CfgPIO //* \brief Configure PIO controllers to drive SPI0 signals //*---------------------------------------------------------------------------- __inline void AT91F_SPI0_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA16_SPI0_MOSI) | ((unsigned int) AT91C_PA11_SPI0_NPCS0) | ((unsigned int) AT91C_PA12_SPI0_NPCS1) | ((unsigned int) AT91C_PA15_SPI0_MISO) | ((unsigned int) AT91C_PA13_SPI0_NPCS2) | ((unsigned int) AT91C_PA17_SPI0_SPCK) | ((unsigned int) AT91C_PA14_SPI0_NPCS3), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI1_CfgPMC //* \brief Enable Peripheral clock in PMC for SPI1 //*---------------------------------------------------------------------------- __inline void AT91F_SPI1_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SPI1)); } //*---------------------------------------------------------------------------- //* \fn AT91F_SPI1_CfgPIO //* \brief Configure PIO controllers to drive SPI1 signals //*---------------------------------------------------------------------------- __inline void AT91F_SPI1_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA9_SPI1_MOSI) | ((unsigned int) AT91C_PA4_SPI1_NPCS0) | ((unsigned int) AT91C_PA8_SPI1_MISO) | ((unsigned int) AT91C_PA5_SPI1_NPCS1) | ((unsigned int) AT91C_PA10_SPI1_SPCK) | ((unsigned int) AT91C_PA6_SPI1_NPCS2) | ((unsigned int) AT91C_PA7_SPI1_NPCS3)); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB19_SPI1_NPCS1) | ((unsigned int) AT91C_PB20_SPI1_NPCS2) | ((unsigned int) AT91C_PB21_SPI1_NPCS3)); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC0_CfgPMC //* \brief Enable Peripheral clock in PMC for SSC0 //*---------------------------------------------------------------------------- __inline void AT91F_SSC0_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SSC0)); } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC0_CfgPIO //* \brief Configure PIO controllers to drive SSC0 signals //*---------------------------------------------------------------------------- __inline void AT91F_SSC0_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB7_RF0 ) | ((unsigned int) AT91C_PB3_TK0 ) | ((unsigned int) AT91C_PB6_RK0 ) | ((unsigned int) AT91C_PB4_TD0 ) | ((unsigned int) AT91C_PB5_RD0 ) | ((unsigned int) AT91C_PB2_TF0 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC1_CfgPMC //* \brief Enable Peripheral clock in PMC for SSC1 //*---------------------------------------------------------------------------- __inline void AT91F_SSC1_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SSC1)); } //*---------------------------------------------------------------------------- //* \fn AT91F_SSC1_CfgPIO //* \brief Configure PIO controllers to drive SSC1 signals //*---------------------------------------------------------------------------- __inline void AT91F_SSC1_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB9_TK1 ) | ((unsigned int) AT91C_PB11_RF1 ) | ((unsigned int) AT91C_PB10_RK1 ) | ((unsigned int) AT91C_PB12_TD1 ) | ((unsigned int) AT91C_PB13_RD1 ) | ((unsigned int) AT91C_PB8_TF1 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PWMC_CfgPMC //* \brief Enable Peripheral clock in PMC for PWMC //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_PWMC)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TC0_CfgPMC //* \brief Enable Peripheral clock in PMC for TC0 //*---------------------------------------------------------------------------- __inline void AT91F_TC0_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_TC0)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TC0_CfgPIO //* \brief Configure PIO controllers to drive TC0 signals //*---------------------------------------------------------------------------- __inline void AT91F_TC0_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB12_TIOA0 ) | ((unsigned int) AT91C_PB13_TIOB0 ) | ((unsigned int) AT91C_PB9_TCLK0 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_TC1_CfgPMC //* \brief Enable Peripheral clock in PMC for TC1 //*---------------------------------------------------------------------------- __inline void AT91F_TC1_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_TC1)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TC1_CfgPIO //* \brief Configure PIO controllers to drive TC1 signals //*---------------------------------------------------------------------------- __inline void AT91F_TC1_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB14_TIOA1 ) | ((unsigned int) AT91C_PB15_TIOB1 ) | ((unsigned int) AT91C_PB10_TCLK1 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_TC2_CfgPMC //* \brief Enable Peripheral clock in PMC for TC2 //*---------------------------------------------------------------------------- __inline void AT91F_TC2_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_TC2)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TC2_CfgPIO //* \brief Configure PIO controllers to drive TC2 signals //*---------------------------------------------------------------------------- __inline void AT91F_TC2_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB16_TIOA2 ) | ((unsigned int) AT91C_PB17_TIOB2 ) | ((unsigned int) AT91C_PB11_TCLK2 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_TC3_CfgPMC //* \brief Enable Peripheral clock in PMC for TC3 //*---------------------------------------------------------------------------- __inline void AT91F_TC3_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_TC3)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TC3_CfgPIO //* \brief Configure PIO controllers to drive TC3 signals //*---------------------------------------------------------------------------- __inline void AT91F_TC3_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA28_TCLK3 )); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB18_TIOA3 ) | ((unsigned int) AT91C_PB19_TIOB3 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_TC4_CfgPMC //* \brief Enable Peripheral clock in PMC for TC4 //*---------------------------------------------------------------------------- __inline void AT91F_TC4_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_TC4)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TC4_CfgPIO //* \brief Configure PIO controllers to drive TC4 signals //*---------------------------------------------------------------------------- __inline void AT91F_TC4_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA24_TCLK4 )); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB21_TIOB4 ) | ((unsigned int) AT91C_PB20_TIOA4 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_TC5_CfgPMC //* \brief Enable Peripheral clock in PMC for TC5 //*---------------------------------------------------------------------------- __inline void AT91F_TC5_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_TC5)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TC5_CfgPIO //* \brief Configure PIO controllers to drive TC5 signals //*---------------------------------------------------------------------------- __inline void AT91F_TC5_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA25_TCLK5 )); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB23_TIOB5 ) | ((unsigned int) AT91C_PB22_TIOA5 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_TC6_CfgPMC //* \brief Enable Peripheral clock in PMC for TC6 //*---------------------------------------------------------------------------- __inline void AT91F_TC6_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_TC6)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TC6_CfgPIO //* \brief Configure PIO controllers to drive TC6 signals //*---------------------------------------------------------------------------- __inline void AT91F_TC6_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA29_TCLK6 )); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB24_TIOA6 ) | ((unsigned int) AT91C_PB25_TIOB6 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_TC7_CfgPMC //* \brief Enable Peripheral clock in PMC for TC7 //*---------------------------------------------------------------------------- __inline void AT91F_TC7_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_TC7)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TC7_CfgPIO //* \brief Configure PIO controllers to drive TC7 signals //*---------------------------------------------------------------------------- __inline void AT91F_TC7_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA30_TCLK7 )); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB26_TIOA7 ) | ((unsigned int) AT91C_PB27_TIOB7 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_TC8_CfgPMC //* \brief Enable Peripheral clock in PMC for TC8 //*---------------------------------------------------------------------------- __inline void AT91F_TC8_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_TC8)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TC8_CfgPIO //* \brief Configure PIO controllers to drive TC8 signals //*---------------------------------------------------------------------------- __inline void AT91F_TC8_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA31_TCLK8 )); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB28_TIOA8 ) | ((unsigned int) AT91C_PB29_TIOB8 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PITC_CfgPMC //* \brief Enable Peripheral clock in PMC for PITC //*---------------------------------------------------------------------------- __inline void AT91F_PITC_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SYS)); } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC0_CfgPMC //* \brief Enable Peripheral clock in PMC for ADC0 //*---------------------------------------------------------------------------- __inline void AT91F_ADC0_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_ADC0)); } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC0_CfgPIO //* \brief Configure PIO controllers to drive ADC0 signals //*---------------------------------------------------------------------------- __inline void AT91F_ADC0_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA0_ADTRG0 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC1_CfgPMC //* \brief Enable Peripheral clock in PMC for ADC1 //*---------------------------------------------------------------------------- __inline void AT91F_ADC1_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_ADC1)); } //*---------------------------------------------------------------------------- //* \fn AT91F_ADC1_CfgPIO //* \brief Configure PIO controllers to drive ADC1 signals //*---------------------------------------------------------------------------- __inline void AT91F_ADC1_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA1_ADTRG1 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_CfgPMC //* \brief Enable Peripheral clock in PMC for PMC //*---------------------------------------------------------------------------- __inline void AT91F_PMC_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SYS)); } //*---------------------------------------------------------------------------- //* \fn AT91F_PMC_CfgPIO //* \brief Configure PIO controllers to drive PMC signals //*---------------------------------------------------------------------------- __inline void AT91F_PMC_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA19_PCK1 ) | ((unsigned int) AT91C_PA20_PCK2 ) | ((unsigned int) AT91C_PA21_PCK3 ) | ((unsigned int) AT91C_PA18_PCK0 )); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB4_PCK1 ) | ((unsigned int) AT91C_PB5_PCK2 ) | ((unsigned int) AT91C_PB6_PCK3 ) | ((unsigned int) AT91C_PB3_PCK0 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_RSTC_CfgPMC //* \brief Enable Peripheral clock in PMC for RSTC //*---------------------------------------------------------------------------- __inline void AT91F_RSTC_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SYS)); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIOA_CfgPMC //* \brief Enable Peripheral clock in PMC for PIOA //*---------------------------------------------------------------------------- __inline void AT91F_PIOA_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_PIOA)); } //*---------------------------------------------------------------------------- //* \fn AT91F_PIOB_CfgPMC //* \brief Enable Peripheral clock in PMC for PIOB //*---------------------------------------------------------------------------- __inline void AT91F_PIOB_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_PIOB)); } //*---------------------------------------------------------------------------- //* \fn AT91F_RTTC_CfgPMC //* \brief Enable Peripheral clock in PMC for RTTC //*---------------------------------------------------------------------------- __inline void AT91F_RTTC_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SYS)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TWI_CfgPMC //* \brief Enable Peripheral clock in PMC for TWI //*---------------------------------------------------------------------------- __inline void AT91F_TWI_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_TWI)); } //*---------------------------------------------------------------------------- //* \fn AT91F_TWI_CfgPIO //* \brief Configure PIO controllers to drive TWI signals //*---------------------------------------------------------------------------- __inline void AT91F_TWI_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA0_TWD ) | ((unsigned int) AT91C_PA1_TWCK ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_US0_CfgPMC //* \brief Enable Peripheral clock in PMC for US0 //*---------------------------------------------------------------------------- __inline void AT91F_US0_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_US0)); } //*---------------------------------------------------------------------------- //* \fn AT91F_US0_CfgPIO //* \brief Configure PIO controllers to drive US0 signals //*---------------------------------------------------------------------------- __inline void AT91F_US0_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA2_RXD0 ) | ((unsigned int) AT91C_PA3_TXD0 ) | ((unsigned int) AT91C_PA5_RTS0 ) | ((unsigned int) AT91C_PA4_SCK0 ) | ((unsigned int) AT91C_PA6_CTS0 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_US1_CfgPMC //* \brief Enable Peripheral clock in PMC for US1 //*---------------------------------------------------------------------------- __inline void AT91F_US1_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_US1)); } //*---------------------------------------------------------------------------- //* \fn AT91F_US1_CfgPIO //* \brief Configure PIO controllers to drive US1 signals //*---------------------------------------------------------------------------- __inline void AT91F_US1_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA7_RXD1 ) | ((unsigned int) AT91C_PA8_TXD1 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB26_SCK1 ) | ((unsigned int) AT91C_PB24_RTS1 ) | ((unsigned int) AT91C_PB25_CTS1 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_US2_CfgPMC //* \brief Enable Peripheral clock in PMC for US2 //*---------------------------------------------------------------------------- __inline void AT91F_US2_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_US2)); } //*---------------------------------------------------------------------------- //* \fn AT91F_US2_CfgPIO //* \brief Configure PIO controllers to drive US2 signals //*---------------------------------------------------------------------------- __inline void AT91F_US2_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA10_TXD2 ) | ((unsigned int) AT91C_PA9_RXD2 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB28_CTS2 ) | ((unsigned int) AT91C_PB29_SCK2 ) | ((unsigned int) AT91C_PB27_RTS2 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_CfgPMC //* \brief Enable Peripheral clock in PMC for MCI //*---------------------------------------------------------------------------- __inline void AT91F_MCI_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_MCI)); } //*---------------------------------------------------------------------------- //* \fn AT91F_MCI_CfgPIO //* \brief Configure PIO controllers to drive MCI signals //*---------------------------------------------------------------------------- __inline void AT91F_MCI_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA14_MCDA3 ) | ((unsigned int) AT91C_PA16_MCCDA ) | ((unsigned int) AT91C_PA15_MCDA0 ) | ((unsigned int) AT91C_PA17_MCCK ) | ((unsigned int) AT91C_PA12_MCDA1 ) | ((unsigned int) AT91C_PA13_MCDA2 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_WDTC_CfgPMC //* \brief Enable Peripheral clock in PMC for WDTC //*---------------------------------------------------------------------------- __inline void AT91F_WDTC_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_SYS)); } //*---------------------------------------------------------------------------- //* \fn AT91F_UDP_CfgPMC //* \brief Enable Peripheral clock in PMC for UDP //*---------------------------------------------------------------------------- __inline void AT91F_UDP_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_UDP)); } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_CfgPMC //* \brief Enable Peripheral clock in PMC for AIC //*---------------------------------------------------------------------------- __inline void AT91F_AIC_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_IRQ1) | ((unsigned int) 1 << AT91C_ID_IRQ2) | ((unsigned int) 1 << AT91C_ID_FIQ) | ((unsigned int) 1 << AT91C_ID_IRQ3) | ((unsigned int) 1 << AT91C_ID_IRQ0)); } //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_CfgPIO //* \brief Configure PIO controllers to drive AIC signals //*---------------------------------------------------------------------------- __inline void AT91F_AIC_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PA22_IRQ0 ) | ((unsigned int) AT91C_PA23_IRQ1 )); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address ((unsigned int) AT91C_PB8_FIQ ) | ((unsigned int) AT91C_PB0_IRQ2 ) | ((unsigned int) AT91C_PB1_IRQ3 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN0_CfgPMC //* \brief Enable Peripheral clock in PMC for CAN0 //*---------------------------------------------------------------------------- __inline void AT91F_CAN0_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_CAN0)); } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN0_CfgPIO //* \brief Configure PIO controllers to drive CAN0 signals //*---------------------------------------------------------------------------- __inline void AT91F_CAN0_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA27_CANTX0 ) | ((unsigned int) AT91C_PA26_CANRX0 ), // Peripheral A 0); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN1_CfgPMC //* \brief Enable Peripheral clock in PMC for CAN1 //*---------------------------------------------------------------------------- __inline void AT91F_CAN1_CfgPMC (void) { AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, // PIO controller base address ((unsigned int) 1 << AT91C_ID_CAN1)); } //*---------------------------------------------------------------------------- //* \fn AT91F_CAN1_CfgPIO //* \brief Configure PIO controllers to drive CAN1 signals //*---------------------------------------------------------------------------- __inline void AT91F_CAN1_CfgPIO (void) { // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA29_CANTX1 ) | ((unsigned int) AT91C_PA28_CANRX1 ), // Peripheral A 0); // Peripheral B // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( AT91C_BASE_PIOB, // PIO controller base address 0, // Peripheral A ((unsigned int) AT91C_PB7_CANTX1 )); // Peripheral B } //*---------------------------------------------------------------------------- //* \fn AT91F_DBGU_SetBaudRate //* \brief Set baud rate for DBGU //*---------------------------------------------------------------------------- __inline void AT91F_DBGU_SetBaudRate( AT91PS_DBGU pDbgu, // \arg pointer to a DBGU controller unsigned int cd) // \arg dbgu CD { pDbgu->DBGU_BRGR = cd; } //*---------------------------------------------------------------------------- //* \fn AT91F_DBGU_Configure //* \brief Configure DBGU //*---------------------------------------------------------------------------- __inline void AT91F_DBGU_Configure ( AT91PS_DBGU pDbgu, // \arg pointer to a USART controller unsigned int bd, // \arg baudrate to be programmed unsigned int mode) // \arg mode Register to be programmed { // Disable interrupts pDbgu->DBGU_IDR = (unsigned int) -1; // Reset receiver and transmitter pDbgu->DBGU_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS | AT91C_US_RSTSTA; // Define the baud rate divisor register AT91F_DBGU_SetBaudRate(pDbgu, bd); // Define the DBGU mode pDbgu->DBGU_MR = mode; } __inline void AT91F_DBGU_EnableRx ( AT91PS_DBGU pDbgu) // \arg pointer to a USART controller { //* Enable receiver pDbgu->DBGU_CR = AT91C_US_RXEN; } __inline void AT91F_DBGU_EnableTx ( AT91PS_DBGU pDbgu) // \arg pointer to a USART controller { //* Enable transmitter pDbgu->DBGU_CR = AT91C_US_TXEN; } __inline void AT91F_DBGU_PutChar ( AT91PS_DBGU pDbgu, unsigned char character ) { pDbgu->DBGU_THR = (character & 0xFF); } __inline unsigned int AT91F_DBGU_IsENDTXInt ( AT91PS_DBGU pDbgu ) // \arg pointer to a USART controller { return (pDbgu->DBGU_CSR & AT91C_US_ENDTX); } __inline unsigned int AT91F_DBGU_IsTXRDYInt ( AT91PS_DBGU pDbgu ) // \arg pointer to a USART controller { return (pDbgu->DBGU_CSR & AT91C_US_TXRDY); } __inline unsigned int AT91F_DBGU_IsRXRDYInt( AT91PS_DBGU pDbgu ) // \arg pointer to a USART controller { return (pDbgu->DBGU_CSR & AT91C_US_RXRDY); } __inline unsigned int AT91F_DBGU_IsOVREInt ( AT91PS_DBGU pDbgu ) // \arg pointer to a USART controller { return (pDbgu->DBGU_CSR & AT91C_US_OVRE); } __inline unsigned int AT91F_DBGU_IsFRAMEInt ( AT91PS_DBGU pDbgu ) // \arg pointer to a USART controller { return (pDbgu->DBGU_CSR & AT91C_US_FRAME); } __inline unsigned int AT91F_DBGU_IsPAREInt ( AT91PS_DBGU pDbgu ) // \arg pointer to a USART controller { return (pDbgu->DBGU_CSR & AT91C_US_PARE); } __inline unsigned int AT91F_DBGU_IsTXEMPTYInt ( AT91PS_DBGU pDbgu ) // \arg pointer to a USART controller { return (pDbgu->DBGU_CSR & AT91C_US_TXEMPTY); } __inline void AT91F_DBGU_ResetStatus ( AT91PS_DBGU pDbgu ) // \arg pointer to a USART controller { pDbgu->DBGU_CR = AT91C_US_RSTSTA; } __inline unsigned char AT91F_DBGU_GetChar ( AT91PS_DBGU pDbgu ) // \arg pointer to a USART controller { return (AT91C_BASE_DBGU->DBGU_RHR); } //*---------------------------------------------------------------------------- //* \fn AT91F_PWMC_Reset //* \brief Reset PWM main registers //*---------------------------------------------------------------------------- __inline void AT91F_PWMC_Reset( AT91PS_PWMC pPWM) // pointer to a PWM controller { pPWM->PWMC_MR = 0; //clock off } #endif // lib_AT91SAM7A3_H cpputest-3.7.2/platforms_startup/armcc/AT91SAM7A3/Makefile000644 000765 000024 00000005665 12521603460 024147 0ustar00basvoddestaff000000 000000 # Makefile to create startup library for AT91SAM7A3 chip .SILENT: CPU = ARM7TDMI CPU_MODE = thumb TARGET_PLATFORM =armcc_$(CPU)_$(CPU_MODE) CPPUTEST_HOME = ../../.. # component name COMPONENT_NAME = Startup_AT91SAM7A3 # directory to place artefacts OBJS_DIR = objs # directory to place startup library LIB_DIR = $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) # directory with source files SRC_DIRS = . # directory with header files INCLUDE_DIRS = . # CYGWIN path CYGWIN =C:/CYGWIN/bin MKDIR =$(CYGWIN)/mkdir RM =$(CYGWIN)/rm TOUCH =$(CYGWIN)/touch KEIL_DIR=D:/Keil/ARM/ARMCC CC=$(KEIL_DIR)/bin/armcc.exe AS=$(KEIL_DIR)/bin/armasm.exe AR=$(KEIL_DIR)/bin/armar.exe # armcc system include path SYS_INCLUDE_DIRS =$(KEIL_DIR)/include # adding Keil MDK-ARM system headers to build startup library INCLUDE_DIRS +=$(SYS_INCLUDE_DIRS) CPUFLAGS =--cpu=$(CPU) ifeq ($(CPU_MODE), thumb) CPUFLAGS +=--apcs=/interwork endif DEPFLAGS =-M \ $(INCLUDES) \ --depend_format=unix_escaped \ --depend_single_line \ --no_depend_system_headers OPTFLAGS =-O3 CPPUTEST_CPPFLAGS =$(CPUFLAGS) \ $(OPTFLAGS) \ -c \ -g \ $(INCLUDES) \ --$(CPU_MODE) \ -D__CLK_TCK=1000 \ ARFLAGS = --debug_symbols TARGET_LIB = \ $(LIB_DIR)/lib$(COMPONENT_NAME).a #Helper Functions get_src_from_dir = $(wildcard $1/*.c) $(wildcard $1/*.asm) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) __src_to = $(subst .asm,$1, $(subst .c,$1,$2)) src_to = $(addprefix $3/,$(call __src_to,$1,$2)) src_to_o = $(call src_to,.o,$1,$2) src_to_d = $(call src_to,.d,$1,$2) time = $(shell date +%s) delta_t = $(eval minus, $1, $2) debug_print_list = $(foreach word,$1,echo " $(word)";) echo # for building CRT library SRC = $(call get_src_from_dir_list, $(SRC_DIRS)) OBJ = $(call src_to_o,$(SRC),$(OBJS_DIR)) INCLUDES += $(foreach dir, $(INCLUDE_DIRS), -I$(dir)) DEP_FILES = $(call src_to_d, $(SRC), $(OBJS_DIR)) STUFF_TO_CLEAN = $(OBJ) $(DEP_FILES) #Don't create CRT dependencies when we're cleaning, for instance ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS)))) -include $(DEP_FILES) endif all: $(TARGET_LIB) echo Done! $(TARGET_LIB): $(OBJ) | $(LIB_DIR) $(AR) $(ARFLAGS) --create $@ $^ echo Build CRT library done! $(LIB_DIR) $(OBJS_DIR): echo Updating directory $@ $(MKDIR) -p $@ #This is the rule for creating the dependency files $(OBJS_DIR)/%.d: %.c Makefile | $(OBJS_DIR) echo Compiling C file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' $(OBJS_DIR)/%.d: %.asm | $(OBJS_DIR) echo Compiling ASM file $< for dependency. Out file $@. $(TOUCH) $@ #This rule does the compilation C files $(OBJS_DIR)/%.o: %.c $(OBJS_DIR)/%.d echo Compiling C file $<. Out file $@ $(CC) $(CPPUTEST_CPPFLAGS) $< -o $@ #This rule does the compilation ASM $(OBJS_DIR)/%.o: %.asm $(OBJS_DIR)/%.d echo Assembling file $<. Out file $@ $(AS) $(CPUFLAGS) --diag-suppress 1786 $< -o $@ clean: @$(RM) -f $(STUFF_TO_CLEAN) cpputest-3.7.2/platforms_startup/armcc/AT91SAM7A3/README000644 000765 000024 00000000517 12521603460 023356 0ustar00basvoddestaff000000 000000 Startup library for ARM C/C++ compiler and AT91SAM7A3 chip. Semihosting is in use, so you may use standard printf() or std::cout << "Hello!" Requirements: 1. CYGWIN (rm.exe, mkdir.exe, make.exe, echo.exe) 2. Keil MDK-ARM Library libStartup_AT91SAM7A3.a is placed in ./lib/armcc_ARM7TDMI_thumb directory of home CppUTest directory. cpputest-3.7.2/platforms_startup/armcc/AT91SAM7A3/Retarget.c000644 000765 000024 00000011255 12521603460 024420 0ustar00basvoddestaff000000 000000 /*---------------------------------------------------------------------------- * Name: Retarget.c * Purpose: 'Retarget' layer for target-dependent low level functions * Note(s): *---------------------------------------------------------------------------- * This file is part of the uVision/ARM development tools. * This software may only be used under the terms of a valid, current, * end user licence from KEIL for a compatible version of KEIL software * development tools. Nothing else gives you the right to use this software. * * This software is supplied "AS IS" without warranties of any kind. * * Copyright (c) 2011 Keil - An ARM Company. All rights reserved. *----------------------------------------------------------------------------*/ #include #include #include #include "lib_AT91SAM7A3.h" /* Standard IO device handles. */ #define STDIN 0x8001 #define STDOUT 0x8002 #define STDERR 0x8003 #pragma import(__use_no_semihosting_swi) const char __stdin_name[] = "STDIN"; const char __stdout_name[] = "STDOUT"; const char __stderr_name[] = "STDERR"; static int init_UART_done = 0; static void UART_putc(unsigned char); static void UART_init(void); FILEHANDLE _sys_open(const char *name, int openmode) { FILEHANDLE rc; /* Register standard Input Output devices. */ if (strcmp(name, "STDIN") == 0) rc = STDIN; else if (strcmp(name, "STDOUT") == 0) rc = STDOUT; else if (strcmp(name, "STDERR") == 0) rc = STDERR; else rc = 1; return (rc); } int _sys_close(FILEHANDLE fh) { return 0; } int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode) { while (len) { UART_putc(*buf); buf++; len--; } return len; } int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode) { return -1; /* not supported */ } void _ttywrch(int ch) { UART_putc(ch); } int _sys_istty(FILEHANDLE fh) { return 0; /* buffered output */ } int _sys_seek(FILEHANDLE fh, long pos) { return -1; /* not supported */ } long _sys_flen(FILEHANDLE fh) { return -1; /* not supported */ } void _sys_exit(int return_code) { while(1); } char *_sys_command_string(char *cmd, int len) { const char * const arg[] = { "tst.axf", "-v", "-gSimpleStringBuffer", "-ojunit"}; int i, j; char *rc = cmd; if (len) { /* Specify commandline arguments here as needed */ len = sizeof(arg) / sizeof(char *); for (i = 0; i < len; i++) { j = strlen(arg[i])+1; if (cmd - rc + j > len) { rc = NULL; break; } memcpy(cmd, arg[i], j); cmd += j; } if (rc) rc = cmd; } else rc = NULL; return rc; } void _clock_init(void) { AT91F_PITInit(AT91C_BASE_PITC, 1000, 50); /* Period = 1000 Hz, CLK = 50 MHz */ } clock_t clock(void) { static clock_t rc = 0; rc += AT91F_PITGetPIVR(AT91C_BASE_PITC) >> 20; return rc; } time_t time(time_t *timer) { return 0; } static void UART_putc(unsigned char ch) { if (init_UART_done == 0) { UART_init(); init_UART_done++; } while ((AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_TXRDY) == 0) __nop(); AT91C_BASE_DBGU->DBGU_THR = ch; } static void UART_init(void) { AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_SYS; AT91C_BASE_PIOA->PIO_PDR = (1<<30) | (1UL<<31); AT91C_BASE_PIOA->PIO_ASR = (1<<30) | (1UL<<31); AT91C_BASE_DBGU->DBGU_IDR = ~0; AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS | AT91C_US_RSTSTA; AT91C_BASE_DBGU->DBGU_BRGR = 27; /* 115200 if MCLK = 50 МГц */ AT91C_BASE_DBGU->DBGU_MR = AT91C_US_PAR_NONE | AT91C_US_CHMODE_NORMAL; AT91C_BASE_DBGU->DBGU_CR = AT91C_US_TXEN; AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RXEN; AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RSTSTA; /* Reset status IRQ */ } /* Replace of default Keil MDK-ARM function to create linked list of * destructor addresses of global or statically created objects. List is * placed in heap at startup. * No exit() is planned to call (exit from main() never take place in * embedded applications). So, it is no need to that list and it is possible * to use less heap memory. * New version of __aeabi_atexit does not create that list. See also * http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3951.html * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0041d/IHI0041D_cppabi.pdf */ int __aeabi_atexit(void* object, void (*destroyer)(void*), void* dso_handle) { return 1; // 0: failed; non-0: OK // return __cxa_atexit(destroyer, object, dso_handle); /* Keil MDK-ARM version */ } cpputest-3.7.2/platforms_startup/armcc/AT91SAM7A3/SAM7A3.asm000644 000765 000024 00000034747 12521603460 024107 0ustar00basvoddestaff000000 000000 ;/*****************************************************************************/ ;/* SAM7.S: Startup file for Atmel AT91SAM7 device series */ ;/*****************************************************************************/ ;/* <<< Use Configuration Wizard in Context Menu >>> */ ;/*****************************************************************************/ ;/* This file is part of the uVision/ARM development tools. */ ;/* Copyright (c) 2005-2008 Keil Software. All rights reserved. */ ;/* This software may only be used under the terms of a valid, current, */ ;/* end user licence from KEIL for a compatible version of KEIL software */ ;/* development tools. Nothing else gives you the right to use this software. */ ;/*****************************************************************************/ ;/* ; * The SAM7.S code is executed after CPU Reset. This file may be ; * translated with the following SET symbols. In uVision these SET ; * symbols are entered under Options - ASM - Define. ; * ; * REMAP: when set the startup code remaps exception vectors from ; * on-chip RAM to address 0. ; * ; * RAM_INTVEC: when set the startup code copies exception vectors ; * from on-chip Flash to on-chip RAM. ; */ ; Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs Mode_USR EQU 0x10 Mode_FIQ EQU 0x11 Mode_IRQ EQU 0x12 Mode_SVC EQU 0x13 Mode_ABT EQU 0x17 Mode_UND EQU 0x1B Mode_SYS EQU 0x1F I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled ; Internal Memory Base Addresses FLASH_BASE EQU 0x00100000 RAM_BASE EQU 0x00200000 ;// Stack Configuration (Stack Sizes in Bytes) ;// Undefined Mode <0x0-0xFFFFFFFF:8> ;// Supervisor Mode <0x0-0xFFFFFFFF:8> ;// Abort Mode <0x0-0xFFFFFFFF:8> ;// Fast Interrupt Mode <0x0-0xFFFFFFFF:8> ;// Interrupt Mode <0x0-0xFFFFFFFF:8> ;// User/System Mode <0x0-0xFFFFFFFF:8> ;// UND_Stack_Size EQU 0x00000000 SVC_Stack_Size EQU 0x00001000 ABT_Stack_Size EQU 0x00000000 FIQ_Stack_Size EQU 0x00000000 IRQ_Stack_Size EQU 0x00000070 USR_Stack_Size EQU 0x00000000 ISR_Stack_Size EQU (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \ FIQ_Stack_Size + IRQ_Stack_Size) AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE USR_Stack_Size __initial_sp SPACE ISR_Stack_Size Stack_Top ;// Heap Configuration ;// Heap Size (in Bytes) <0x0-0xFFFFFFFF> ;// Heap_Size EQU 0x0002800 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base Heap_Mem SPACE Heap_Size __heap_limit ; Reset Controller (RSTC) definitions RSTC_BASE EQU 0xFFFFFD00 ; RSTC Base Address RSTC_MR EQU 0x08 ; RSTC_MR Offset ;/* ;// Reset Controller (RSTC) ;// URSTEN: User Reset Enable ;// Enables NRST Pin to generate Reset ;// ERSTL: External Reset Length <0-15> ;// External Reset Time in 2^(ERSTL+1) Slow Clock Cycles ;// ;*/ RSTC_SETUP EQU 1 RSTC_MR_Val EQU 0xA5000401 ; Embedded Flash Controller (EFC) definitions EFC_BASE EQU 0xFFFFFF00 ; EFC Base Address EFC0_FMR EQU 0x60 ; EFC0_FMR Offset EFC1_FMR EQU 0x70 ; EFC1_FMR Offset ;// Embedded Flash Controller 0 (EFC0) ;// FMCN: Flash Microsecond Cycle Number <0-255> ;// Number of Master Clock Cycles in 1us ;// FWS: Flash Wait State ;// <0=> Read: 1 cycle / Write: 2 cycles ;// <1=> Read: 2 cycle / Write: 3 cycles ;// <2=> Read: 3 cycle / Write: 4 cycles ;// <3=> Read: 4 cycle / Write: 4 cycles ;// EFC0_SETUP EQU 1 EFC0_FMR_Val EQU 0x004B0100 ;// Embedded Flash Controller 1 (EFC1) ;// FMCN: Flash Microsecond Cycle Number <0-255> ;// Number of Master Clock Cycles in 1us ;// FWS: Flash Wait State ;// <0=> Read: 1 cycle / Write: 2 cycles ;// <1=> Read: 2 cycle / Write: 3 cycles ;// <2=> Read: 3 cycle / Write: 4 cycles ;// <3=> Read: 4 cycle / Write: 4 cycles ;// EFC1_SETUP EQU 0 EFC1_FMR_Val EQU 0x00320100 ; Watchdog Timer (WDT) definitions WDT_BASE EQU 0xFFFFFD40 ; WDT Base Address WDT_MR EQU 0x04 ; WDT_MR Offset ;// Watchdog Timer (WDT) ;// WDV: Watchdog Counter Value <0-4095> ;// WDD: Watchdog Delta Value <0-4095> ;// WDFIEN: Watchdog Fault Interrupt Enable ;// WDRSTEN: Watchdog Reset Enable ;// WDRPROC: Watchdog Reset Processor ;// WDDBGHLT: Watchdog Debug Halt ;// WDIDLEHLT: Watchdog Idle Halt ;// WDDIS: Watchdog Disable ;// WDT_SETUP EQU 1 WDT_MR_Val EQU 0x00008000 ; Power Mangement Controller (PMC) definitions PMC_BASE EQU 0xFFFFFC00 ; PMC Base Address PMC_MOR EQU 0x20 ; PMC_MOR Offset PMC_MCFR EQU 0x24 ; PMC_MCFR Offset PMC_PLLR EQU 0x2C ; PMC_PLLR Offset PMC_MCKR EQU 0x30 ; PMC_MCKR Offset PMC_SR EQU 0x68 ; PMC_SR Offset PMC_MOSCEN EQU (1<<0) ; Main Oscillator Enable PMC_OSCBYPASS EQU (1<<1) ; Main Oscillator Bypass PMC_OSCOUNT EQU (0xFF<<8) ; Main OScillator Start-up Time PMC_DIV EQU (0xFF<<0) ; PLL Divider PMC_PLLCOUNT EQU (0x3F<<8) ; PLL Lock Counter PMC_OUT EQU (0x03<<14) ; PLL Clock Frequency Range PMC_MUL EQU (0x7FF<<16) ; PLL Multiplier PMC_USBDIV EQU (0x03<<28) ; USB Clock Divider PMC_CSS EQU (3<<0) ; Clock Source Selection PMC_PRES EQU (7<<2) ; Prescaler Selection PMC_MOSCS EQU (1<<0) ; Main Oscillator Stable PMC_LOCK EQU (1<<2) ; PLL Lock Status PMC_MCKRDY EQU (1<<3) ; Master Clock Status ;// Power Mangement Controller (PMC) ;// Main Oscillator ;// MOSCEN: Main Oscillator Enable ;// OSCBYPASS: Oscillator Bypass ;// OSCCOUNT: Main Oscillator Startup Time <0-255> ;// ;// Phase Locked Loop (PLL) ;// DIV: PLL Divider <0-255> ;// MUL: PLL Multiplier <0-2047> ;// PLL Output is multiplied by MUL+1 ;// OUT: PLL Clock Frequency Range ;// <0=> 80..160MHz <1=> Reserved ;// <2=> 150..220MHz <3=> Reserved ;// PLLCOUNT: PLL Lock Counter <0-63> ;// USBDIV: USB Clock Divider ;// <0=> None <1=> 2 <2=> 4 <3=> Reserved ;// ;// CSS: Clock Source Selection ;// <0=> Slow Clock ;// <1=> Main Clock ;// <2=> Reserved ;// <3=> PLL Clock ;// PRES: Prescaler ;// <0=> None ;// <1=> Clock / 2 <2=> Clock / 4 ;// <3=> Clock / 8 <4=> Clock / 16 ;// <5=> Clock / 32 <6=> Clock / 64 ;// <7=> Reserved ;// PMC_SETUP EQU 1 PMC_MOR_Val EQU 0x00000601 PMC_PLLR_Val EQU 0x00C71E04 PMC_MCKR_Val EQU 0x0000000B PRESERVE8 ; Area Definition and Entry Point ; Startup Code must be linked first at Address at which it expects to run. AREA |.reset|, CODE, READONLY ARM ; Exception Vectors ; Mapped to Address 0. ; Absolute addressing mode must be used. ; Dummy Handlers are implemented as infinite loops which can be modified. Vectors LDR PC,Reset_Addr LDR PC,Undef_Addr LDR PC,SWI_Addr LDR PC,PAbt_Addr LDR PC,DAbt_Addr NOP ; Reserved Vector ; LDR PC,IRQ_Addr LDR PC,[PC,#-0xF20] ; Vector From AIC_IVR ; LDR PC,FIQ_Addr LDR PC,[PC,#-0xF20] ; Vector From AIC_FVR Reset_Addr DCD Reset_Handler Undef_Addr DCD Undef_Handler SWI_Addr DCD SWI_Handler PAbt_Addr DCD PAbt_Handler DAbt_Addr DCD DAbt_Handler DCD 0 ; Reserved Address IRQ_Addr DCD IRQ_Handler FIQ_Addr DCD FIQ_Handler Undef_Handler B Undef_Handler SWI_Handler B SWI_Handler ; Part of RTL PAbt_Handler B PAbt_Handler DAbt_Handler B DAbt_Handler IRQ_Handler B IRQ_Handler FIQ_Handler B FIQ_Handler ; Reset Handler EXPORT Reset_Handler Reset_Handler ; Setup RSTC IF RSTC_SETUP != 0 LDR R0, =RSTC_BASE LDR R1, =RSTC_MR_Val STR R1, [R0, #RSTC_MR] ENDIF ; Setup EFC0 IF EFC0_SETUP != 0 LDR R0, =EFC_BASE LDR R1, =EFC0_FMR_Val STR R1, [R0, #EFC0_FMR] ENDIF ; Setup EFC1 IF EFC1_SETUP != 0 LDR R0, =EFC_BASE LDR R1, =EFC1_FMR_Val STR R1, [R0, #EFC1_FMR] ENDIF ; Setup WDT IF WDT_SETUP != 0 LDR R0, =WDT_BASE LDR R1, =WDT_MR_Val STR R1, [R0, #WDT_MR] ENDIF ; Setup PMC IF PMC_SETUP != 0 LDR R0, =PMC_BASE ; Setup Main Oscillator LDR R1, =PMC_MOR_Val STR R1, [R0, #PMC_MOR] ; Wait until Main Oscillator is stablilized IF (PMC_MOR_Val:AND:PMC_MOSCEN) != 0 MOSCS_Loop LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MOSCS BEQ MOSCS_Loop ENDIF ; Setup the PLL IF (PMC_PLLR_Val:AND:PMC_MUL) != 0 LDR R1, =PMC_PLLR_Val STR R1, [R0, #PMC_PLLR] ; Wait until PLL is stabilized PLL_Loop LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_LOCK BEQ PLL_Loop ENDIF ; Select Clock IF (PMC_MCKR_Val:AND:PMC_CSS) == 1 ; Main Clock Selected LDR R1, =PMC_MCKR_Val AND R1, #PMC_CSS STR R1, [R0, #PMC_MCKR] WAIT_Rdy1 LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MCKRDY BEQ WAIT_Rdy1 LDR R1, =PMC_MCKR_Val STR R1, [R0, #PMC_MCKR] WAIT_Rdy2 LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MCKRDY BEQ WAIT_Rdy2 ELIF (PMC_MCKR_Val:AND:PMC_CSS) == 3 ; PLL Clock Selected LDR R1, =PMC_MCKR_Val AND R1, #PMC_PRES STR R1, [R0, #PMC_MCKR] WAIT_Rdy1 LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MCKRDY BEQ WAIT_Rdy1 LDR R1, =PMC_MCKR_Val STR R1, [R0, #PMC_MCKR] WAIT_Rdy2 LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MCKRDY BEQ WAIT_Rdy2 ENDIF ; Select Clock ENDIF ; PMC_SETUP ; Copy Exception Vectors to Internal RAM IF :DEF:RAM_INTVEC ADR R8, Vectors ; Source LDR R9, =RAM_BASE ; Destination LDMIA R8!, {R0-R7} ; Load Vectors STMIA R9!, {R0-R7} ; Store Vectors LDMIA R8!, {R0-R7} ; Load Handler Addresses STMIA R9!, {R0-R7} ; Store Handler Addresses ENDIF ; Remap on-chip RAM to address 0 MC_BASE EQU 0xFFFFFF00 ; MC Base Address MC_RCR EQU 0x00 ; MC_RCR Offset IF :DEF:REMAP LDR R0, =MC_BASE MOV R1, #1 STR R1, [R0, #MC_RCR] ; Remap ENDIF ; Setup Stack for each mode LDR R0, =Stack_Top ; Enter Undefined Instruction Mode and set its Stack Pointer MSR CPSR_c, #Mode_UND:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #UND_Stack_Size ; Enter Abort Mode and set its Stack Pointer MSR CPSR_c, #Mode_ABT:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #ABT_Stack_Size ; Enter FIQ Mode and set its Stack Pointer MSR CPSR_c, #Mode_FIQ:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #FIQ_Stack_Size ; Enter IRQ Mode and set its Stack Pointer MSR CPSR_c, #Mode_IRQ:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #IRQ_Stack_Size ; Enter Supervisor Mode and set its Stack Pointer MSR CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #SVC_Stack_Size ; Enter User Mode and set its Stack Pointer ; MSR CPSR_c, #Mode_USR ; IF :DEF:__MICROLIB ; EXPORT __initial_sp ; ELSE ; MOV SP, R0 ; SUB SL, SP, #USR_Stack_Size ; ENDIF ; Enter the C code IMPORT __main LDR R0, =__main BX R0 IF :DEF:__MICROLIB EXPORT __heap_base EXPORT __heap_limit ELSE ; User Initial Stack & Heap AREA |.text|, CODE, READONLY IMPORT __use_two_region_memory EXPORT __user_setup_stackheap __user_setup_stackheap LDR R0, = Heap_Mem LDR R2, = (Heap_Mem + Heap_Size) LDR SP, =(Stack_Mem + SVC_Stack_Size) BX LR ENDIF END cpputest-3.7.2/platforms_examples/armcc/000755 000765 000024 00000000000 12523662132 021320 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/README000644 000765 000024 00000000745 12521603460 021116 0ustar00basvoddestaff000000 000000 Directory to place test examples for different toolchains/chips combinations. Source files from this directory is compiled to executable using CppUTest, CppUTestExt and startup libraries from lib directory in CppUTest home. There is a sample eclipse project in armcc/AT91SAM7A3 folder. It may be used to see at possibility way of cross development with CppUTest running in target platform. It is based on Makefile. Makefile need some Cygwin utility, so you need to install cygwin. cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/000755 000765 000024 00000000000 12523662133 022613 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/LPC1768/000755 000765 000024 00000000000 12523662133 022265 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/LPC1833/000755 000765 000024 00000000000 12523662133 022256 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/LPC1833/FLASH.sct000644 000765 000024 00000002237 12521603460 023626 0ustar00basvoddestaff000000 000000 #! armcc -E ; code upper need to use #define ;------------------------------------------------------------------------------------- ; Keil scatter loading file ; For LPC1833 ;------------------------------------------------------------------------------------- ; Internal SRAM0 #define SRAM0_START 0x10000000 #define SRAM0_END 0x10008000 #define SRAM0_SIZE (SRAM0_END-SRAM0_START) ; Internal SRAM1 #define SRAM1_START 0x10080000 #define SRAM1_END 0x1008A000 #define SRAM1_SIZE (SRAM1_END-SRAM1_START) ; Internal SRAM2 #define SRAM2_START 0x20000000 #define SRAM2_END 0x20010000 #define SRAM2_SIZE (SRAM2_END-SRAM2_START) ; SDRAM #define SDRAM_START 0x28000000 ; Internal FLASHA #define FLASHA_START 0x1A000000 #define FLASHA_END 0x1A040000 #define FLASHA_SIZE (FLASHA_END-FLASHA_START) ; Internal FLASHB #define FLASHB_START 0x1B000000 #define FLASHB_END 0x1B040000 #define FLASHB_SIZE (FLASHB_END-FLASHB_START) LR1 FLASHA_START FLASHA_SIZE { ER1 FLASHA_START FLASHA_SIZE { *(RESET, +FIRST) *(InRoot$$Sections) *.o (+RO) } ER2 SRAM0_START SRAM0_SIZE { *.o (+RW +ZI) } ER4 (SRAM1_START) SRAM1_SIZE { *(HEAP) *(STACK) } } cpputest-3.7.2/platforms_examples/armcc/LPC1833/LPC1833.jflash000644 000765 000024 00000003426 12521603460 024405 0ustar00basvoddestaff000000 000000 AppVersion = 46202 [GENERAL] ConnectMode = 0 CurrentFile = "objs\can_eth.hex" DataFileSAddr = 0x00000000 GUIMode = 0 HostName = "" TargetIF = 0 USBPort = 0 USBSerialNo = 0x00000000 [JTAG] IRLen = 0 MultipleTargets = 0 NumDevices = 0 Speed0 = 5 Speed1 = 4000 TAP_Number = 0 UseAdaptive0 = 0 UseAdaptive1 = 0 UseMaxSpeed0 = 1 UseMaxSpeed1 = 1 [CPU] CheckCoreID = 1 ChipName = "NXP LPC1833" ClockSpeed = 0x016E3600 Core = 0x030000FF CoreID = 0x4BA00477 CoreIDMask = 0x0F000FFF DeviceFamily = 0x00000003 EndianMode = 0 HasInternalFlash = 1 InitStep0_Action = "Reset" InitStep0_Comment = "Reset and halt target" InitStep0_Value0 = 0x00000000 InitStep0_Value1 = 0x00000000 NumExitSteps = 0 NumInitSteps = 1 RAMAddr = 0x10080000 RAMSize = 0x00008000 ScriptFile = "" UseAutoSpeed = 0x00000001 UseRAM = 1 UseScriptFile = 0 [FLASH] aSectorSel[22] = 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 AutoDetect = 0 BankName = "" BankSelMode = 0 BaseAddr = 0x1A000000 CheckId = 0 CustomRAMCode = "" DeviceName = "LPC1833 internal" EndBank = 21 NumBanks = 1 OrgNumBits = 32 OrgNumChips = 1 StartBank = 0 UseCustomRAMCode = 0 [PRODUCTION] AutoPerformsErase = 1 AutoPerformsHardLock = 0 AutoPerformsHardUnlock = 0 AutoPerformsProgram = 1 AutoPerformsSecure = 0 AutoPerformsSoftLock = 0 AutoPerformsSoftUnlock = 1 AutoPerformsStartApp = 1 AutoPerformsUnsecure = 0 AutoPerformsVerify = 1 EnableProductionMode = 0 EnableTargetPower = 0 EraseType = 1 ProductionDelay = 0x000001F4 ProductionThreshold = 0x00000BB8 ProgramSN = 0 SerialFile = "" SNAddr = 0x00000000 SNInc = 0x00000001 SNLen = 0x00000008 SNListFile = "" SNValue = 0x00000001 TargetPowerDelay = 0x00000014 VerifyType = 1 cpputest-3.7.2/platforms_examples/armcc/LPC1833/src/000755 000765 000024 00000000000 12523662133 023045 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/LPC1833/tests/000755 000765 000024 00000000000 12523662133 023420 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/LPC1833/tests/main.cpp000644 000765 000024 00000003516 12521603460 025051 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" int main(int ac, const char** av) { /* These checks are here to make sure assertions outside test runs don't crash */ CHECK(true); LONGS_EQUAL(1, 1); return CommandLineTestRunner::RunAllTests(ac, av); } cpputest-3.7.2/platforms_examples/armcc/LPC1833/tests/test1.cpp000644 000765 000024 00000000156 12521603460 025162 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" TEST_GROUP(start) { }; TEST(start, first) { FAIL("Start here!"); } cpputest-3.7.2/platforms_examples/armcc/LPC1833/src/dummy.c000644 000765 000024 00000000204 12521603460 024334 0ustar00basvoddestaff000000 000000 /* this file is requred to build application library, armar.exe can't build * libraries without at least one object input file. */ cpputest-3.7.2/platforms_examples/armcc/LPC1768/.cproject000644 000765 000024 00000015355 12521603460 024104 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/LPC1768/.project000644 000765 000024 00000001401 12521603460 023724 0ustar00basvoddestaff000000 000000 cpputest_example org.eclipse.cdt.managedbuilder.core.genmakebuilder org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, org.eclipse.cdt.core.cnature org.eclipse.cdt.core.ccnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature cpputest-3.7.2/platforms_examples/armcc/LPC1768/cpputest_example_Default.launch000644 000765 000024 00000013642 12521603460 030511 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/LPC1768/jlink_gdb.cmd000644 000765 000024 00000000165 12521603460 024673 0ustar00basvoddestaff000000 000000 start "JLink GDB Server" "C:\Program Files (x86)\SEGGER\JLinkARM_V486a\JLinkGDBServerCL.exe" -device LPC1768 -if SWD cpputest-3.7.2/platforms_examples/armcc/LPC1768/LPC1768.jflash000644 000765 000024 00000003446 12521603460 024425 0ustar00basvoddestaff000000 000000 AppVersion = 46202 [GENERAL] ConnectMode = 0 CurrentFile = "objs/app/app.mot" DataFileSAddr = 0x00000000 GUIMode = 0 HostName = "" TargetIF = 1 USBPort = 0 USBSerialNo = 0x00000000 [JTAG] IRLen = 0 MultipleTargets = 0 NumDevices = 0 Speed0 = 5 Speed1 = 4000 TAP_Number = 0 UseAdaptive0 = 0 UseAdaptive1 = 0 UseMaxSpeed0 = 1 UseMaxSpeed1 = 1 [CPU] CheckCoreID = 1 ChipName = "NXP LPC1768" ClockSpeed = 0x05F5E100 Core = 0x030000FF CoreID = 0x4BA00477 CoreIDMask = 0xFFFFFFFF DeviceFamily = 0x00000003 EndianMode = 0 HasInternalFlash = 1 InitStep0_Action = "Reset" InitStep0_Comment = "Reset and halt target" InitStep0_Value0 = 0x00000000 InitStep0_Value1 = 0x00000000 NumExitSteps = 0 NumInitSteps = 1 RAMAddr = 0x10000000 RAMSize = 0x00008000 ScriptFile = "" UseAutoSpeed = 0x00000001 UseRAM = 1 UseScriptFile = 0 [FLASH] aSectorSel[30] = 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 AutoDetect = 0 BankName = "" BankSelMode = 0 BaseAddr = 0x00000000 CheckId = 0 CustomRAMCode = "" DeviceName = "LPC1768 internal" EndBank = 29 NumBanks = 1 OrgNumBits = 32 OrgNumChips = 1 StartBank = 0 UseCustomRAMCode = 0 [PRODUCTION] AutoPerformsErase = 1 AutoPerformsHardLock = 0 AutoPerformsHardUnlock = 0 AutoPerformsProgram = 1 AutoPerformsSecure = 0 AutoPerformsSoftLock = 0 AutoPerformsSoftUnlock = 1 AutoPerformsStartApp = 1 AutoPerformsUnsecure = 0 AutoPerformsVerify = 1 EnableProductionMode = 0 EnableTargetPower = 0 EraseType = 2 ProductionDelay = 0x000001F4 ProductionThreshold = 0x00000BB8 ProgramSN = 0 SerialFile = "" SNAddr = 0x00000000 SNInc = 0x00000001 SNLen = 0x00000008 SNListFile = "" SNValue = 0x00000001 TargetPowerDelay = 0x00000014 VerifyType = 1 cpputest-3.7.2/platforms_examples/armcc/LPC1768/README000644 000765 000024 00000002533 12521603460 023144 0ustar00basvoddestaff000000 000000 Sample project to test CppUTest for Keil MDK-ARM toolchain and LPC1768 chip. Requirements: 1. CYGWIN (rm.exe, mkdir.exe, make.exe) 2. Keil MDK-ARM 3. JLink Flash (for programming chip) or FlashMagic 4. serial connection to UART0 or UART1 interface 5. 12 or 24 MHz quartz. If else, need to be adjusted in $(CPPUTEST_HOME)/platforms_startup/armcc/LPC1768/system_LPC17xx.c (for _clock_init() function working correctly and to set up 100 MHz core clock). Please check system_LPC17xx.c for correct quartz selection in function SystemInit(), and rebuild startup library for any change. Default is 12 MHz quartz. 6. eclipse + gdb server from JLink + arm-none-eabi-gdb from GNU ARM Tools Embedded For debug only. First, you need to compile CppUTest and target startup library: make -C ../../../platforms/armcc CPU=Cortex-M3 all make -C ../../../platforms_startup/armcc/LPC1768 all Second, you need to write tests. As example, I use $(CPPUTEST_HOME)/examples/AllTests/CircularBufferTest.cpp. Third, you need to make executable: make all Fourth, you need to program executable on target chip: make prog Project use semihosting, so you may use standard printf() or std::cout << "Hello!" If problems with heap or low memory, adjust heap size in $(CPPUTEST_HOME)/platforms_startup/armcc/LPC1768/startup_LPC17xx.asm and rebuild startup library. cpputest-3.7.2/platforms_examples/armcc/LPC1768/ROM.sct000644 000765 000024 00000001747 12521603460 023442 0ustar00basvoddestaff000000 000000 #! armcc -E ; code upper need to use #define ;------------------------------------------------------------------------------------- ; Keil scatter loading file ; For LPC1768 ;------------------------------------------------------------------------------------- #define FLASH_START (0x00000000) #define FLASH_END (0x00080000) #define FLASH_SIZE (FLASH_END-FLASH_START) ; Internal SRAM #define RAM1_START 0x10000000 #define RAM1_END 0x10008000 #define RAM1_SIZE (RAM1_END-RAM1_START) ; Internal SRAM for peripherial DMA #define RAM2_START 0x2007C000 #define RAM2_END 0x20084000 #define RAM2_SIZE (RAM2_END-RAM2_START) ; Load region for main program LR1 FLASH_START FLASH_SIZE { ER1 FLASH_START { *.o(RESET, +First) *.o(InRoot$$Sections) *.o(+RO) } ER2 RAM1_START RAM1_SIZE { *.o(+RW +ZI) } ER3 RAM2_START RAM2_SIZE { *.o(HEAP) *.o(STACK) } } /*----------------------------------------------------------------------------*/ cpputest-3.7.2/platforms_examples/armcc/LPC1768/tests/000755 000765 000024 00000000000 12523662133 023427 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/LPC1768/tests/main.cpp000644 000765 000024 00000002524 12521603460 025056 0ustar00basvoddestaff000000 000000 //- ------------------------------------------------------------------ //- Copyright (c) James W. Grenning -- All Rights Reserved //- For use by owners of Test-Driven Development for Embedded C, //- and attendees of Renaissance Software Consulting, Co. training //- classes. //- //- Available at http://pragprog.com/titles/jgade/ //- ISBN 1-934356-62-X, ISBN13 978-1-934356-62-3 //- //- Authorized users may use this source code in your own //- projects, however the source code may not be used to //- create training material, courses, books, articles, and //- the like. We make no guarantees that this source code is //- fit for any purpose. //- //- www.renaissancesoftware.net james@renaissancesoftware.net //- ------------------------------------------------------------------ #include "CppUTest/CommandLineTestRunner.h" #include #include extern "C" void _clock_init(void); extern std::uint32_t SystemCoreClock; extern const std::uint32_t SystemCoreClock12; int main(int ac, char** av) { SystemCoreClock = SystemCoreClock12; /* if 12 MHz quartz is used; need to LPC_TIM3 measure */ _clock_init(); /* secondary call for new SystemCoreClock freq; previous call worked with unknown value */ std::cout << "Hello, World!\n"; int result = RUN_ALL_TESTS(ac, av); return result; } cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/.cproject000644 000765 000024 00000017367 12521603460 024437 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/.project000644 000765 000024 00000001423 12521603460 024256 0ustar00basvoddestaff000000 000000 CppUTest AT91SAM7A3 sample project org.eclipse.cdt.managedbuilder.core.genmakebuilder org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, org.eclipse.cdt.core.cnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature org.eclipse.cdt.core.ccnature cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/AT91SAM7A3.jflash000644 000765 000024 00000022073 12521603460 025276 0ustar00basvoddestaff000000 000000 AppVersion = 47803 [GENERAL] ConnectMode = 0 CurrentFile = "obj/tst.mot" DataFileSAddr = 0x00000000 GUIMode = 0 HostName = "" TargetIF = 0 USBPort = 0 USBSerialNo = 0x00000000 [JTAG] IRLen = 0 MultipleTargets = 0 NumDevices = 0 Speed0 = 30 Speed1 = 400 TAP_Number = 0 UseAdaptive0 = 0 UseAdaptive1 = 0 UseMaxSpeed0 = 0 UseMaxSpeed1 = 1 [CPU] CheckCoreID = 1 ChipName = "Atmel AT91SAM7A3" ClockSpeed = 0x003D0900 Core = 0x070000FF CoreID = 0x3F0F0F0F CoreIDMask = 0xFFFFFFFF DeviceFamily = 0x00000007 EndianMode = 0 HasInternalFlash = 1 InitStep0_Action = "Write 32bit" InitStep0_Comment = "Peripherial reset, need for disable WDT" InitStep0_Value0 = 0xFFFFFD00 InitStep0_Value1 = 0xA5000004 InitStep10_Action = "Write 32bit" InitStep10_Comment = "Unlock 0 region" InitStep10_Value0 = 0xFFFFFF64 InitStep10_Value1 = 0x5A000004 InitStep11_Action = "Delay" InitStep11_Comment = "" InitStep11_Value0 = 0x00000000 InitStep11_Value1 = 0x00000001 InitStep12_Action = "Write 32bit" InitStep12_Comment = "Unlock 1 region" InitStep12_Value0 = 0xFFFFFF64 InitStep12_Value1 = 0x5A001004 InitStep13_Action = "Delay" InitStep13_Comment = "" InitStep13_Value0 = 0x00000000 InitStep13_Value1 = 0x00000001 InitStep14_Action = "Write 32bit" InitStep14_Comment = "Unlock 2 region" InitStep14_Value0 = 0xFFFFFF64 InitStep14_Value1 = 0x5A002004 InitStep15_Action = "Delay" InitStep15_Comment = "" InitStep15_Value0 = 0x00000000 InitStep15_Value1 = 0x00000001 InitStep16_Action = "Write 32bit" InitStep16_Comment = "Unlock 3 region" InitStep16_Value0 = 0xFFFFFF64 InitStep16_Value1 = 0x5A003004 InitStep17_Action = "Delay" InitStep17_Comment = "" InitStep17_Value0 = 0x00000000 InitStep17_Value1 = 0x00000001 InitStep18_Action = "Write 32bit" InitStep18_Comment = "Unlock 4 region" InitStep18_Value0 = 0xFFFFFF64 InitStep18_Value1 = 0x5A004004 InitStep19_Action = "Delay" InitStep19_Comment = "" InitStep19_Value0 = 0x00000000 InitStep19_Value1 = 0x00000001 InitStep1_Action = "Reset" InitStep1_Comment = "" InitStep1_Value0 = 0x00000000 InitStep1_Value1 = 0x00000000 InitStep20_Action = "Write 32bit" InitStep20_Comment = "Unlock 5 region" InitStep20_Value0 = 0xFFFFFF64 InitStep20_Value1 = 0x5A005004 InitStep21_Action = "Delay" InitStep21_Comment = "" InitStep21_Value0 = 0x00000000 InitStep21_Value1 = 0x00000001 InitStep22_Action = "Write 32bit" InitStep22_Comment = "Unlock 6 region" InitStep22_Value0 = 0xFFFFFF64 InitStep22_Value1 = 0x5A006004 InitStep23_Action = "Delay" InitStep23_Comment = "" InitStep23_Value0 = 0x00000000 InitStep23_Value1 = 0x00000001 InitStep24_Action = "Write 32bit" InitStep24_Comment = "Unlock 7 region" InitStep24_Value0 = 0xFFFFFF64 InitStep24_Value1 = 0x5A007004 InitStep25_Action = "Delay" InitStep25_Comment = "" InitStep25_Value0 = 0x00000000 InitStep25_Value1 = 0x00000001 InitStep26_Action = "Write 32bit" InitStep26_Comment = "Unlock 8 region" InitStep26_Value0 = 0xFFFFFF64 InitStep26_Value1 = 0x5A008004 InitStep27_Action = "Delay" InitStep27_Comment = "" InitStep27_Value0 = 0x00000000 InitStep27_Value1 = 0x00000001 InitStep28_Action = "Write 32bit" InitStep28_Comment = "Unlock 9 region" InitStep28_Value0 = 0xFFFFFF64 InitStep28_Value1 = 0x5A009004 InitStep29_Action = "Delay" InitStep29_Comment = "" InitStep29_Value0 = 0x00000000 InitStep29_Value1 = 0x00000001 InitStep2_Action = "Delay" InitStep2_Comment = "" InitStep2_Value0 = 0x00000000 InitStep2_Value1 = 0x00000002 InitStep30_Action = "Write 32bit" InitStep30_Comment = "Unlock 10 region" InitStep30_Value0 = 0xFFFFFF64 InitStep30_Value1 = 0x5A00A004 InitStep31_Action = "Delay" InitStep31_Comment = "" InitStep31_Value0 = 0x00000000 InitStep31_Value1 = 0x00000001 InitStep32_Action = "Write 32bit" InitStep32_Comment = "Unlock 11 region" InitStep32_Value0 = 0xFFFFFF64 InitStep32_Value1 = 0x5A00B004 InitStep33_Action = "Delay" InitStep33_Comment = "" InitStep33_Value0 = 0x00000000 InitStep33_Value1 = 0x00000001 InitStep34_Action = "Write 32bit" InitStep34_Comment = "Unlock 12 region" InitStep34_Value0 = 0xFFFFFF64 InitStep34_Value1 = 0x5A00C004 InitStep35_Action = "Delay" InitStep35_Comment = "" InitStep35_Value0 = 0x00000000 InitStep35_Value1 = 0x00000001 InitStep36_Action = "Write 32bit" InitStep36_Comment = "Unlock 13 region" InitStep36_Value0 = 0xFFFFFF64 InitStep36_Value1 = 0x5A00D004 InitStep37_Action = "Delay" InitStep37_Comment = "" InitStep37_Value0 = 0x00000000 InitStep37_Value1 = 0x00000001 InitStep38_Action = "Write 32bit" InitStep38_Comment = "Unlock 14 region" InitStep38_Value0 = 0xFFFFFF64 InitStep38_Value1 = 0x5A00E004 InitStep39_Action = "Delay" InitStep39_Comment = "" InitStep39_Value0 = 0x00000000 InitStep39_Value1 = 0x00000001 InitStep3_Action = "Write 32bit" InitStep3_Comment = "Disable watchdog" InitStep3_Value0 = 0xFFFFFD44 InitStep3_Value1 = 0x00008000 InitStep40_Action = "Write 32bit" InitStep40_Comment = "Unlock 15 region" InitStep40_Value0 = 0xFFFFFF64 InitStep40_Value1 = 0x5A00F004 InitStep41_Action = "Delay" InitStep41_Comment = "" InitStep41_Value0 = 0x00000000 InitStep41_Value1 = 0x00000001 InitStep4_Action = "Write 32bit" InitStep4_Comment = "Set PLL" InitStep4_Value0 = 0xFFFFFC20 InitStep4_Value1 = 0x00000601 InitStep5_Action = "Delay" InitStep5_Comment = "" InitStep5_Value0 = 0x00000000 InitStep5_Value1 = 0x00000002 InitStep6_Action = "Write 32bit" InitStep6_Comment = "Set PLL and divider" InitStep6_Value0 = 0xFFFFFC2C InitStep6_Value1 = 0x00C79E04 InitStep7_Action = "Write 32bit" InitStep7_Comment = "4MHz" InitStep7_Value0 = 0xFFFFFC30 InitStep7_Value1 = 0x00000001 InitStep8_Action = "Delay" InitStep8_Comment = "" InitStep8_Value0 = 0x00000000 InitStep8_Value1 = 0x00000002 InitStep9_Action = "Write 32bit" InitStep9_Comment = "Set WS = 2 (for write), FCN = 6 for 4 MHz" InitStep9_Value0 = 0xFFFFFF60 InitStep9_Value1 = 0x00060000 NumExitSteps = 0 NumInitSteps = 42 RAMAddr = 0x00200000 RAMSize = 0x00004000 ScriptFile = "" UseAutoSpeed = 0x00000001 UseRAM = 1 UseScriptFile = 0 [FLASH] aSectorSel[1024] = 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 AutoDetect = 0 BankName = "" BankSelMode = 0 BaseAddr = 0x00100000 CheckId = 0 CustomRAMCode = "" DeviceName = "AT91SAM7A3 internal" EndBank = 1023 NumBanks = 1 OrgNumBits = 32 OrgNumChips = 1 StartBank = 0 UseCustomRAMCode = 0 [PRODUCTION] AutoPerformsErase = 1 AutoPerformsHardLock = 0 AutoPerformsHardUnlock = 0 AutoPerformsProgram = 1 AutoPerformsSecure = 0 AutoPerformsSoftLock = 0 AutoPerformsSoftUnlock = 1 AutoPerformsStartApp = 1 AutoPerformsUnsecure = 0 AutoPerformsVerify = 1 EnableProductionMode = 0 EnableTargetPower = 1 EraseType = 1 ProductionDelay = 0x000001F4 ProductionThreshold = 0x00000BB8 ProgramSN = 0 SerialFile = "" SNAddr = 0x00000000 SNInc = 0x00000001 SNLen = 0x00000008 SNListFile = "" SNValue = 0x00000001 TargetPowerDelay = 0x00000014 VerifyType = 2 cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/AT91SAM7A3.launch000644 000765 000024 00000016312 12521603460 025300 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/HEAP.txt000644 000765 000024 00000000306 12521603460 024064 0ustar00basvoddestaff000000 000000 Heap usage for initialization of std::cout is about 1496 bytes. Additional heap usage for std::cout << (double) is about 644 bytes. All heap usage for CRT + cpp + sample tests is about 10624 bytes.cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/jlink_gdb.cmd000644 000765 000024 00000000155 12521603460 025220 0ustar00basvoddestaff000000 000000 start "JLink GDB Server" "C:\Program Files (x86)\SEGGER\JLink_V490b\JLinkGDBServerCL.exe" -device AT91SAM7A3 cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/LICENSE000644 000765 000024 00000000244 12521603460 023614 0ustar00basvoddestaff000000 000000 No any additional license is used except standard Keil MDK-ARM license. If you use Keil MDK-ARM or ARM C/C++ then you agreed with terms of Keil MDK-ARM license. cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/Makefile000644 000765 000024 00000021341 12521603460 024250 0ustar00basvoddestaff000000 000000 .SILENT: #We don't need to clean up when we're making these targets NODEPS = clean # CPU architecture. Passing to armcc.exe. For list: armcc --cpu list ifndef CPU CPU = ARM7TDMI endif # ARM/THUMB mode. Passing to armcc.exe. May be 'thumb' or 'arm' ifndef CPU_MODE CPU_MODE = thumb endif TARGET_PLATFORM =armcc_$(CPU)_$(CPU_MODE) # Need to use only relative path! Path with logical letters does not working. CPPUTEST_HOME = ../../.. COMPONENT_NAME = app CPPUTEST_OBJS_DIR = objs # directory for appication library CPPUTEST_LIB_DIR = lib CPPUTEST_USE_MEM_LEAK_DETECTION = N CPPUTEST_USE_STD_CPP_LIB = Y CPPUTEST_USE_VPATH = Y CPPUTEST_USE_STD_C_LIB = Y CPPUTEST_ENABLE_DEBUG = Y CPPUTEST_USE_EXTENSIONS = N SRC_DIRS = \ SRC_FILES = $(CPPUTEST_HOME)/examples/ApplicationLib/CircularBuffer.cpp \ $(CPPUTEST_HOME)/examples/ApplicationLib/Printer.cpp TEST_SRC_DIRS = \ tests \ TEST_FILES = $(CPPUTEST_HOME)/examples/AllTests/CircularBufferTest.cpp # directory with CppUTest and startup libraries CPPUTEST_LIB_LINK_DIR = $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) INCLUDE_DIRS = \ $(CPPUTEST_HOME)/include \ $(SRC_DIRS) \ $(CPPUTEST_HOME)/examples/ApplicationLib \ # name of extension of output file. Default Keil MDK-ARM extension is .axf which is elf format # .axf will be .elf for eclipse debug OUTFILE_EXT = elf # output filename, mapfile (.map), hexfile (.mot) OUTNAME = $(COMPONENT_NAME) OUTFILE = $(OUTNAME).$(OUTFILE_EXT) HEXFILE = $(OUTNAME).mot MAPFILE = $(OUTNAME).map # CYGWIN path CYGWIN =C:/CYGWIN/bin MKDIR =$(CYGWIN)/mkdir RM =$(CYGWIN)/rm TOUCH =$(CYGWIN)/touch ECHO =$(CYGWIN)/echo KEIL_DIR=D:/Keil/ARM/ARMCC CC=$(KEIL_DIR)/bin/armcc.exe AS=$(KEIL_DIR)/bin/armasm.exe AR=$(KEIL_DIR)/bin/armar.exe LD=$(KEIL_DIR)/bin/armlink.exe FROMELF=$(KEIL_DIR)/bin/fromelf.exe # armcc system include path SYS_INCLUDE_DIRS =$(KEIL_DIR)/include JFLASH ="C:/Program Files (x86)/SEGGER/JLink_V490b/JFlash.exe" JFLASHPRJ =AT91SAM7A3.jflash LDSCRIPT = ROM.sct CPUFLAGS =--cpu=$(CPU) ifeq ($(CPU_MODE), thumb) CPUFLAGS +=--apcs=/interwork endif DEPFLAGS =-M \ $(INCLUDES) \ --depend_format=unix_escaped \ --depend_single_line \ --no_depend_system_headers OPTFLAGS =-O3 CPPUTEST_CPPFLAGS =$(CPUFLAGS) \ $(OPTFLAGS) \ -c \ -g \ $(INCLUDES) \ --$(CPU_MODE) \ --exceptions \ -D__CLK_TCK=1000 \ CPPUTEST_LDFLAGS =$(CPUFLAGS) \ --strict \ --entry=Reset_Handler \ --summary_stderr \ --map \ --callgraph \ --info=summarysizes \ --info=sizes \ --info=totals \ --info=veneers\ --load_addr_map_info \ --library_type=standardlib \ --remove \ --debug \ ARFLAGS = --debug_symbols # new and delete for memory leak detection on by default ifndef CPPUTEST_USE_MEM_LEAK_DETECTION CPPUTEST_USE_MEM_LEAK_DETECTION = Y endif # Use the standard C library ifndef CPPUTEST_USE_STD_C_LIB CPPUTEST_USE_STD_C_LIB = Y endif # Use the standard C++ library ifndef CPPUTEST_USE_STD_CPP_LIB CPPUTEST_USE_STD_CPP_LIB = Y endif # No extentions is default ifndef CPPUTEST_USE_EXTENSIONS CPPUTEST_USE_EXTENSIONS = N endif # No VPATH is default ifndef CPPUTEST_USE_VPATH CPPUTEST_USE_VPATH = N endif # Make empty, instead of 'N', for usage in $(if ) conditionals ifneq ($(CPPUTEST_USE_VPATH), Y) CPPUTEST_USE_VPATH = endif # Without the C library, we'll need to disable the C++ library and ... ifeq ($(CPPUTEST_USE_STD_C_LIB), N) CPPUTEST_USE_STD_CPP_LIB = N CPPUTEST_USE_MEM_LEAK_DETECTION = N CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_C_LIB_DISABLED CPPUTEST_LDFLAGS +=--no_scanlib else INCLUDE_DIRS +=$(SYS_INCLUDE_DIRS) endif ifeq ($(CPPUTEST_USE_MEM_LEAK_DETECTION), N) CPPUTEST_CPPFLAGS += -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED else ifndef CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h endif ifndef CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h endif endif ifeq ($(CPPUTEST_USE_STD_CPP_LIB), N) CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_CPP_LIB_DISABLED endif # Link with CppUTest lib CPPUTEST_LIB = $(CPPUTEST_LIB_LINK_DIR)/libCppUTest.a # Link with startup lib CPPUTEST_LIB += $(CPPUTEST_LIB_LINK_DIR)/libStartup_AT91SAM7A3.a # Link with CppUTestExt lib ifeq ($(CPPUTEST_USE_EXTENSIONS), Y) CPPUTEST_LIB += $(CPPUTEST_LIB_LINK_DIR)/libCppUTestExt.a endif TARGET_LIB = \ $(CPPUTEST_LIB_DIR)/lib$(COMPONENT_NAME).a ifndef TEST_TARGET ifndef TARGET_PLATFORM TEST_TARGET = $(COMPONENT_NAME)_tests else TEST_TARGET = $(COMPONENT_NAME)_$(TARGET_PLATFORM)_tests endif endif #Helper Functions get_src_from_dir = $(wildcard $1/*.cpp) $(wildcard $1/*.cc) $(wildcard $1/*.c) $(wildcard $1/*.asm) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) __src_to = $(subst .c,$1, $(subst .cc,$1, $(subst .cpp,$1, $(if $(CPPUTEST_USE_VPATH),$(notdir $2),$2)))) src_to = $(addprefix $3/,$(call __src_to,$1,$2)) src_to_o = $(call src_to,.o,$1,$2) src_to_d = $(call src_to,.d,$1,$2) time = $(shell date +%s) delta_t = $(eval minus, $1, $2) debug_print_list = $(foreach word,$1,echo " $(word)";) echo # иÑходники программных модулей SRC = $(call get_src_from_dir_list, $(SRC_DIRS)) $(SRC_FILES) OBJ = $(call src_to_o,$(SRC),$(CPPUTEST_OBJS_DIR)) # иÑходники теÑтов TEST_SRC = $(call get_src_from_dir_list, $(TEST_SRC_DIRS)) $(TEST_FILES) TEST_OBJ = $(call src_to_o,$(TEST_SRC),$(CPPUTEST_OBJS_DIR)) # If we're using VPATH ALL_SRC = $(SRC) $(TEST_SRC) ifeq ($(CPPUTEST_USE_VPATH), Y) # gather all the source directories and add them VPATH += $(sort $(dir $(ALL_SRC))) # Add the component name to the objs dir path, to differentiate between same-name objects CPPUTEST_OBJS_DIR := $(addsuffix /$(COMPONENT_NAME),$(CPPUTEST_OBJS_DIR)) endif # for building application library INCLUDES += $(foreach dir, $(INCLUDE_DIRS), -I$(dir)) DEP_FILES = $(call src_to_d, $(SRC), $(CPPUTEST_OBJS_DIR)) DEP_TEST_FILES = $(call src_to_d, $(TEST_SRC), $(CPPUTEST_OBJS_DIR)) STUFF_TO_CLEAN = $(OBJ) $(TEST_OBJ) $(DEP_FILES) $(DEP_TEST_FILES) $(TARGET_LIB) #Don't create CRT dependencies when we're cleaning, for instance ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS)))) -include $(DEP_FILES) endif STUFF_TO_CLEAN += $(OUTFILE) $(MAPFILE) all: $(CPPUTEST_OBJS_DIR)/$(OUTFILE) echo Done! $(TARGET_LIB): $(OBJ) | $(CPPUTEST_LIB_DIR) echo Building application library $@ $(AR) $(ARFLAGS) --create $@ $^ $(CPPUTEST_OBJS_DIR)/$(OUTFILE): $(TEST_OBJ) $(CPPUTEST_LIB) $(TARGET_LIB) | ROM.sct Makefile echo Linking! $(LD) $(CPPUTEST_LDFLAGS) $^ --scatter $(LDSCRIPT) --list $(MAPFILE) -o $@ .PHONY: prog prog: $(CPPUTEST_OBJS_DIR)/$(HEXFILE) $(JFLASH) -openprj$(JFLASHPRJ) -open$< -auto -exit $(CPPUTEST_OBJS_DIR)/$(HEXFILE): $(CPPUTEST_OBJS_DIR)/$(OUTFILE) echo Converting to Motorola S19 $(FROMELF) --m32 --output=$@ $< debug: echo echo "Target Source files:" $(call debug_print_list,$(SRC)) echo "Target Object files:" $(call debug_print_list,$(OBJ)) echo "All Input Dependency files:" $(call debug_print_list,$(DEP_FILES)) echo Stuff to clean: $(call debug_print_list,$(STUFF_TO_CLEAN)) echo Includes: $(call debug_print_list,$(INCLUDES)) echo Directories to create: $(call debug_print_list,$(OBJS_DIRS)) echo Directories of CppUTest object files: $(call debug_print_list,$(OBJS_DIR)) #Don't create dependencies when we're cleaning, for instance ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS)))) -include $(DEP_FILES) endif OBJS_DIRS =$(sort $(dir $(STUFF_TO_CLEAN))) $(LIB_DIR) $(OBJS_DIRS): echo Updating directory $@ $(MKDIR) -p $@ #This is the rule for creating the dependency files $(CPPUTEST_OBJS_DIR)/%.d: %.c Makefile | $(OBJS_DIRS) echo Compiling C file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' $(CPPUTEST_OBJS_DIR)/%.d: %.cpp Makefile | $(OBJS_DIRS) echo Compiling C++ file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' $(CPPUTEST_OBJS_DIR)/%.d: %.cc Makefile | $(OBJS_DIRS) echo Compiling CC++ file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' #This rule does the compilation C++ files $(CPPUTEST_OBJS_DIR)/%.o: %.cpp $(CPPUTEST_OBJS_DIR)/%.d echo Compiling C++ file $<. Out file $@ $(CC) $(CPPUTEST_CPPFLAGS) $< -o $@ #This rule does the compilation CC++ files $(CPPUTEST_OBJS_DIR)/%.o: %.cc $(CPPUTEST_OBJS_DIR)/%.d echo Compiling CC++ file $<. Out file $@ $(CC) $(CPPUTEST_CPPFLAGS) $< -o $@ #This rule does the compilation C files $(CPPUTEST_OBJS_DIR)/%.o: %.c $(CPPUTEST_OBJS_DIR)/%.d echo Compiling C file $<. Out file $@ $(CC) $(CPPUTEST_CPPFLAGS) $< -o $@ clean: $(RM) -f $(STUFF_TO_CLEAN) cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/RAM.txt000644 000765 000024 00000000354 12521603460 023771 0ustar00basvoddestaff000000 000000 bss memory usage for std::cout is about 12248 bytes Library cpp_ts(ios.o) needs two big regions of 7472 and 4104 bytes and other small regions. More than 8k needed for statically created arrays with size SetPointerPlugin::MAX_SET cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/README000644 000765 000024 00000003724 12521603460 023475 0ustar00basvoddestaff000000 000000 Sample project to test CppUTest for Keil MDK-ARM toolchain and AT91SAM7A3 chip. Requirements: 1. CYGWIN (rm.exe, mkdir.exe, make.exe) 2. Keil MDK-ARM 3. JLink Flash (for programming chip) 4. serial connection to DBGU interface 5. 4 MHz quartz. If else, need to be adjusted in $(CPPUTEST_HOME)/platforms_startup/armcc/AT91SAM7A3/SAM7A3.asm (for setup PLL and change core clock from IRC to PLL) and $(CPPUTEST_HOME)/platforms_startup/armcc/AT91SAM7A3/Retarget.c (for _clock_init() function working correctly) 6. eclipse + gdb server from JLink + arm-none-eabi-gdb from GNU ARM Tools Embedded For debug only. First, you need to compile CppUTest and target startup library: make -C ../../../platforms/armcc make -C ../../../platforms_startup/armcc/AT91SAM7A3 Second, you need to write tests. As example, I use $(CPPUTEST_HOME)/examples/AllTests/CircularBufferTest.cpp. All test from $(CPPUTEST_HOME)/examples/AllTests/ needs to many RAM (chip does not have such). Third, you need to make executable: make all Fourth, you need to program executable on target chip: make prog Project use semihosting, so you may use standard printf() or std::cout << "Hello!" If problems with heap or low memory, adjust heap size in $(CPPUTEST_HOME)/platforms_startup/armcc/AT91SAM7A3/SAM7A3.asm and rebuild startup library. Startup library uses standard Keil MDK-ARM license. Eclipse project is tested in eclipse Kepler, eclipse Luna. You need to adjust some environment variables in "C/C++ Build" tab in properties window for project. "CPPUTEST_HOME" is a path to root of CppUTest "KEIL_DIR" is a path to ARM C/C++ compiler "PATH" there is need to add path to make.exe Eclipse project use plugin "GDB Hardware Debugger" to debug, so for debug you may install "GDB Hardware Debugger" and gdb client (from GNU ARM Tools Embedded) or create your own debug configuration (for exampe, use eclipse plugin from Keil MDK-ARM installation; no need to install other plugins and toolchains). cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/ROM.sct000644 000765 000024 00000001451 12521603460 023760 0ustar00basvoddestaff000000 000000 #! armcc -E ; code upper need to use #define ;------------------------------------------------------------------------------------- ; Keil scatter loading file ; For AT91SAM7A3 ;------------------------------------------------------------------------------------- #define FLASH_START (0x00100000) #define FLASH_END (0x00140000) #define FLASH_SIZE (FLASH_END-FLASH_START) ; Internal SRAM #define RAM_START 0x00200000 #define RAM_END 0x00208000 #define RAM_SIZE (RAM_END-RAM_START) ; Load region for main program LR1 FLASH_START FLASH_SIZE { ER2 FLASH_START { *.o(.reset, +First) *.o(InRoot$$Sections) *.o(+RO) } ER5 RAM_START RAM_SIZE { *.o(+RW +ZI) *.o(STACK) } } /*----------------------------------------------------------------------------*/ cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/STACK.txt000644 000765 000024 00000001327 12521603460 024220 0ustar00basvoddestaff000000 000000 See objs/app/app.htm for details about stack sizes for functions and call tree. Stack usage for std::cout << (double) is about 1336 bytes Stack usage for CppUTest is at least 4368 bytes with call chain: main -> CommandLineTestRunner::RunAllTests(int, char**) -> CommandLineTestRunner::RunAllTests(int, const char**) -> MemoryLeakWarningPlugin::MemoryLeakWarningPlugin(const SimpleString&, MemoryLeakDetector*) -> MemoryLeakWarningPlugin::getGlobalDetector() -> MemoryLeakDetector::MemoryLeakDetector(MemoryLeakFailure*) -> MemoryLeakDetectorTable::MemoryLeakDetectorTable() -> __aeabi_vec_ctor_nocookie_nodtor Maximum stack consumption for constructor MemoryLeakDetector::MemoryLeakDetector(MemoryLeakFailure*) cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/tests/000755 000765 000024 00000000000 12523662133 023755 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms_examples/armcc/AT91SAM7A3/tests/main.cpp000644 000765 000024 00000001700 12521603460 025377 0ustar00basvoddestaff000000 000000 //- ------------------------------------------------------------------ //- Copyright (c) James W. Grenning -- All Rights Reserved //- For use by owners of Test-Driven Development for Embedded C, //- and attendees of Renaissance Software Consulting, Co. training //- classes. //- //- Available at http://pragprog.com/titles/jgade/ //- ISBN 1-934356-62-X, ISBN13 978-1-934356-62-3 //- //- Authorized users may use this source code in your own //- projects, however the source code may not be used to //- create training material, courses, books, articles, and //- the like. We make no guarantees that this source code is //- fit for any purpose. //- //- www.renaissancesoftware.net james@renaissancesoftware.net //- ------------------------------------------------------------------ #include "CppUTest/CommandLineTestRunner.h" int main(int ac, char** av) { int result = RUN_ALL_TESTS(ac, av); return result; } cpputest-3.7.2/platforms/armcc/000755 000765 000024 00000000000 12523662133 017423 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms/CCStudio/000755 000765 000024 00000000000 12523662133 020013 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms/Eclipse-Cygwin/000755 000765 000024 00000000000 12523662133 021160 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms/IAR-STR912.zip000644 000765 000024 00002475166 12521603460 020420 0ustar00basvoddestaff000000 000000 PK xºZ< IAR-STR912/UT ”LjKʈKux êëPKxºZ6}ÔxóLwÈ>M=æûàzÀ'STB{&j3ßîXölÈK³7›Ox€bk(‹šBkUÁ¡ž5Ưæ€Û<¸QvGN®ùíén«²˜ˆ•ÄNìú·8¢¢\©K…ž°\Ü8Ūqz¥å3}A"þ‚/=‡%ì>6³ œààæZøay®2‡f5ZPèAœ[!’kšÂ10x«áDVŠ“u~otµúÛ|*Ïñúââu­ ÃxÕ%ýÓ@z{¥ìî, ¡Úx¤E ¬’°+Ýœ’¸:;Ћ[½øP¯íq³n8Vƒþ“,Ÿ/?œê¯þ¾¦·6æ[´ÒrÚIê3uê ÇŒ&ú^™~!þ½èÈÆ;²y½2à$½ÆûžÞ^WÅcz­‘ÐèÌëÅbS(Ån*§±_„m>ëÞ~Ð?…ÝðÑ‚ës]λð ä(þ.oûØšÀ§àž*¼ƒêEýãWu&èŒåD’óþqîéøi¬M–í}šJ¾nt»¬‹­-·Ý;i¸)EbKå"Ô·Ý#ÚŠæò!ñÖÊPK vºZ<IAR-STR912/startup/UT LjKʈKux êëPK yºZ<IAR-STR912/startup/.svn/UT •LjKʈKux êëPKvºZ< 9Á8IAR-STR912/startup/.svn/entriesUT LjKLjKux êë­ŽËNÃ0E÷¿’xü;ÎŽ%ÛÒU7ÈN&%¥u"Û©ø| THìpVW£«;Gc㜘–’=—²æžóa]·B¹´ùÛ¼li iIGj#^oiYÊW‰—´Å¾ž}©¥Kæ÷»æq¿sBò\|*Ûú»aV‘®ÝHµ²Gè…i-Zs`J";ù åc¢çxdß±S4”ª#ïi”ÐtÆ“u¨»cN¼>]i¨NlšÏÄ>ßÖ2ÈFÚ=Ø^¸^ë>8°N'«Hº µWh¼²H4‚ÔÁ¸áOÎ7U7·9Î?vÍ0c'½³:ÒèHe@­ÿÃÍ¡Uí PK vºZ<"IAR-STR912/startup/.svn/prop-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/startup/.svn/text-base/UT LjKʈKux êëPKvºZ<:ùè TØ5IAR-STR912/startup/.svn/text-base/91x_vect.s.svn-baseUT LjKLjKux êëímsÚ¸€?ofòt§_Ú%@zw{ÓÙÆ6Á3¼Õ6¡™N/ã€ÓxJ +›6{ïí¿’ŒßdÉ€ b;°ŽŽuŽt½Ø²?¾e|Àkù ûƒk]»l› Q«ý ³ëLàÜžÙÎ]gâVÖÓ“oA˙٠gÝÛ ú\€ÕÆ?PæªGd¤¥7‡ ù¹]YÒb1s&–ïÌ]`ÚÖ=‘V,ßFj¡çÍó–öKƒÚ?ÏêÎHñ.À• =œ§^­YloÑÀ¼s¼ xK)ñçÀqß±fÎlàßÙÀ~˜ØAËMÿDt1?ؘ9ô*Di²]߆gÐö—ÐE¿Ïnáü>ÖçñÝ!3Tú*Ùîçôä-h;*çßø{­~†œ†<ö!å±s’†8íTZ#L{Ÿõt}•Æ­…m[ó˜m tÕP{&0ú-s$é*µ5¹ 4´ú:¸jŠÔ“UÐïu®¤u ™(OÿJS´Þ%‡†Ù諸FšÙÆ:å>IÐz({W2µ~èꥤ“£è„šŽ³+CÙ4è늪“S¡´.0ûÀ®T`j]µ $k”cØ1+8n4Yï«U6õ~O“ `´¥Nôú&hª ­vÐѤfG%*¥Þ5P4IWй‚oX#J’û=Cý4D–kR(RWºT#ðÙH—+;Ùºf`Zz¿K‡4˜(;Ñׯ9-ò¡ÔSΓÀÐPAWRTмNx åtÐÎ \Ø3%­§*È ]ENBÿб*v')dÚ“Ûoíg§'§'8 ŒÕY«Žë£(½@EV/ô~ß|ÝxóÛo >vÞÀ9NO®H$KÓ)´=/ŽKäkü§öПÚy €àJ“A ¬UhC!fGª”FÅr¼¿)r }ArŽÞÓmÜtü,8"ujHÏÏ;Û¸A’ržíW0¿ð÷©ãY73{zzÒ*Pô>RÔJ)ji”"üßs„wê£Ý/æƒyIÑá{ºr[õ—Ť^½«=ÜÞÖ¾>Sµ¾­¥;!õ, ^à±{Ô+gWêV«t·a.ô}bÍЬs51ESÑxÖƒɺ›=%ë @sËÄ÷¸s×&)ý¥ŸLŠS¶mqÒºÕÉŒaÿ™Á ú÷ê}\KÃůlâ îÌq¿GSþjœÕì¶¼Å?*ÿ…µwð¤âÎjX?lä)üœÃïÞšØ`1[zD×d !r #ãºç´•p=ƒã[ç/à¸þœ¨Á®F3ÛÉ÷¸8³)°Vù“5ýÂiȾdÚØv§QúÍÊš=}Zî䯠&2V‰“j.â í(Ä'I§,&¿þýjñ•ßq=.ƒFt;ŸÍæ?÷[µZ-ðrJ/;¸Áå¯îhé#A½ëa5¼?cà¥Pd…üe®v¤é GÇ£204.”DÇ#™ 2áq‚ÁH:†bZ£bùVZ’®ÝP’n‰ dî´›‹?]IÖûÏÃâík]kçñÕž &yŽæÁÏÁû=Ɇ¾„b<Ì3¯ /¸±oçÐðŽ—í:ËÍ.qzÌJ„šo6˜ßF õÈ©QmÛÕÝö((b?UŽ U¯ ÿ5âV›Â?J~‡“I°Å Ý€ûùÔŽ;ª]ÝÀ`½â-<k0ÂúÇDZX¯rÌ©ÿJgƲjOé>Û˜$ÓjQðãVð„† ƒœ©¶K“¾¯M?¾é’k‰X‰ã.+æ"Q{²Ä¢k·îUùvÞ¾Óå7ñto5ŠÈ‘g1¦¹m«k["3yðn+°žÖå®òÎEØ6Ç…#Š´xnÑâqFûY/ ìjn‘|¬=ÃX†*’5Îöa©'"‰Zf4”ì|ÐxÖA;(ÎïSŠ;“ú’} ò)a Aô#;£à_Q ç‰ÇÌ.@<½È䯦|DM6B ÆVÎÚú\ƒÙ誻‹›äP|íˆA™S:«R…BÒ¾}÷cú‘ha°.š†í?‘¶fËO䬮œ±ßÖN5˜¶sötríª Vç²s`{"<3{Éê1+V»+ëÆ£ ý¨&VsðâÞnÆ-°f€ÑÙ«Io?ÔPŠå?6Þî,|³]¢z›®æ«Ækݤî!Ùaf×iÖA¬â€Ã¿R•½Q]–/ô#öVâaä±oã Ã.•ºfÌ¥ò’¦›Ñv‘¼°³¿x›â–º¿XËÞæ°v¬“\b,uLÑvƬå\‰«Z±f`%4l!ÂbeÙHsà_q ¡‘®ÕªÇ„,zT^Õê-ª`?5 ¼6‚µ=¬ÈvÉEbr‡{hcbqŽ\d¢‹ÙÈÁÏêÒ"{ÎxÍÎç@‚gyÞø<‰«Úɳ3¹lÄ)iÆkJüD·Ù&½†ËymulÊm±ÕàO½•ø#A·­À¤´:8™ÙÄI‰zÖ+_`í+ÃI(ë©q~Øñ2ú¶â:àZ³8%ÒË ÇqáJ&¶& I0¸»Yé¦ä2Fåe¥àÖþ¸Å¾3X`K`‹¼,l±î ]›\DIùᕵUðküân]ã…0a™›ÖŸ‚0ó0f „•aì½Uaa¼f!Œ±§fm‚aåXÆRÁ¯ýñ‹·óSàKà‹À|Ñ»ž‚¯úAà«.ðU|1wð | |ñ˜ƒ/zæSðÕ8|5¾Êƒ/æÓ¾¾xÌÁ½Cü)ø:?| |•_Ì'Ÿ| |ñ˜¹ †ñ —µùE””`Y[ÁöG0îCÇÂÂx!ÌAXæSOAXç0Ö+ÂØOEã…0óöÕÌðÖ¿U–_´^{¼ƒ•ýÀV..^ø²ÐÅx4çÚìÂ:ʯŒ¥‚^û£ïqÒ__¼fî/Î<6xýýÅ]©üð¢íìÚ»8Oºèèâ…/ ]Ù癯.¤¢üè¢íèÚº8/áèèâ…/ ]™-¬M®®\~pQV ní[ì— l lñ‚—¹×1óú—õw:*.ÚNA®ý‘‹óÞ2..^ø2o’`¼—jý›$°’òã+këQ, Ÿz&|È›cYr_`ýkt\RÈ /dSåUãCÙÉHWs àÜìÜ#; Zi^Aƒ –¶.H¿ñ~P¢ä0H„;B‘ôuAzÚ/‚ô‚ôo%JƒôG¸yöIߤ§ý²eÒ×é‹ôŒ7}¯ z¬£üœÏX*0ÿ1OÕr_P^P~{¥=LÊo¼pƒuåŲÍ1P^¬ÚdÜ"(Ü”7ŒÁÆcy¬£ü”ÏX*(ÿ)OÕòJÀ¼ÀüöJ{˜˜ßx0uæÅ`þ0Oæææó+eSÊ#凸QÌ I½8M`¹ Ñ%ší[ {Î5z iÑ(£ ±"WÊ« ‚a/CÇøã ñnglÌÿ¹W¼$iß‹9EÿhµÈ?ÞWü£U<<ÙvžfþðAÏúR»]¶îè¦ ŽÕqod[‡›®¡vÁp cÙp544ÙTu°ÌÞg¾²‹<Öµ¡æ¨CǵúºíÀáv9¨jñ'†‰ü}Ù5,lýJ¶ù]Ѱ‰_ª®ƒD`Ùšnó±ðY\ ùZ×èë‡ ;bÍ"‚3ì¹ Š†j[zOW]Û2 Õ§+÷z`Z.(:tõž=CVz:Ç”ÍÏ 6R7p0ñ‰Câ3Õ2ýÓ•7ähr_¾Ò…4Ü)IBP{BsÛpH‰Žmõ¹íÁEvØgˆ†+ì(›Ú‘Ð †Ž}YÓAù\²rM{ef4]Ù0u u²u4þÃ{&ŠE&åbV­ùó}ûèÍkÄ9Å ²Â²\ˆ5ª†0fo9Kyˆ—!D"DD‰Ìf.ðg‘ÿµI„1qÁÂqÞQ”€h÷Ñ2.Ühbòé!ÿDh“h6‹VĨ±I2’àí˜ôz#•FÁõ߆aÂèx çÍb ËØgðO¸8ƒ~÷Š‹1‹‡ B¬¿Ú xáWKú.ñXÂo4ùs /Ò§$íª¹@B¼±Kž vËÙ`Ç»Ù]\búxjÇ^<>T@6Oh"x2¸ pI;ž8âå"…=þ}˜Ì¼»„bëÀ±‚ë#ÃhèØ¥Qp ñwé{SÊ(äÖ43ŠÍµ­Œƒ|=ÁqF +n=Áû\HS«'Pò!>;õ´¾÷Í fÂ#Eb‘cÌw'ÜLèÞ,&c#%H«&_ÜK³š² ²0`À“©ŽŸóŒôæugÊIÒ© …+(â/›m×¾øuÉ‚ùÁ$ðËóNtøl¤ÈŽ>’ÇcL¾IuÐSU’0 ÑТxèŠ9¡àU{UÓµGVÇq«¼Rv!¯pe5 ±p›aŽ¿Ã$‰QÄšLPƒëƒZçaœÄ¡E(“àn‹b¦ çÓqewèdh[Xç¤Ï=òÍi=¤ËìZÕ– jd:>YãTÅ*र:%¾ñà”à³]SrR˜•@ÊS’±*޽KjΪDQ*b˜ü`…¼ÁÜ€¨ 3 nw¡(ЬíDQ+rT|kKž Ô&RSÚ’gšZ±N yGî«kVœ¿ƒ¿w‘ü¶ˆ£»Ø›xQû303-ú˜ú±ÔÙ {\|pDÙ@µ2ÆŸ®õã¥&»ò¥iÙ–åîï×Ñb”y2-ÆÛ'Óbð®¥}õªŽsÁ“‘Õ§Âaàc¸ÄÒKÏ©ZkªÁPé*ŒFê «ÿîê¶ ¢=*îÞq *¹P Òå:w÷4‘M~>˜ì{j„I*Âyõ[Î`Z  }gþûÓ$ÂŽ7@²xé‹ÌŽ5™çû´¨TË£%&ù E§•÷•m£a£5‰£9ú>O0Øàaò[y °ü¢î‘Š”ý6È{Ê ÆÏþ"B§2ìt°üÕF”±³Xú/B¬4ì—P.?•ådÂblú©L:ÅZõú×2I­9nsެ¤ËªbÚƒð1UN dš¦‹Ë££ÕjuèÅóC?š-Æ“äHÓ ©yv".ÎÎô‘sˆ7áW輎¶(²ÍÓH ˆñå7ñ…ïw ›ycô¡æé:å6©LÄš_*`,[8pœA¼Åâgm¢vnÑ›8Hs›òªª«¬%QíG$Ü›¢”Ù:×Úlî- 3ó’i^Á{)xYZØ(å+OxM߀|¦yÝŧU ¢çù†nñn(,Ï¿EWíõmŸáúÞÌòk²†÷È@5à–Û »*5½²ùQäápÚl}\Û”jŽçým¥Pø’ãìµþs²ïCW†Ok#Ðb™`·D;®¢Ö‹fnÈÆEk‘hçD9 nÊ#=j¦¼2Ô*/?¾ì¶Åk«ÇÌP:ëµE1¼ Æ\y‹eZ {Ë|o‰5Õ„uƒÛ"Þb L ñÖéeë õƒ”.ðîv±¥vó¼3[ìªCÈ·6Ø´R’ÇÔU+>I@[^@; û›öUÑnÙ2=‡Ut>a”f ”°ÀË#H¦ÄÅÙG°å~ƒh57@sÕ>öÇÀx‚<à›ŽåflËhé°ÝtÕP63gn^4klÖ$›Qˆ­4*_x¼ùÉ‘Œ‘µ:bãÁ/7†¿ª …iBt“v÷´@.ÎúÓuy¼bÆòSáM¥ Göõ¢hñÀÌ–ne‡‰°ÚÜøË0 f\8¬{8Áå ›š“ E¯·ÜK#)ºØ -‰±!â£w^ ,…©6ü-kÿ³Ù£6Ûp½6ê5ãzñÒ™Ê ¤ø`ãgæâö ç¢1¾*J«£O,nò5Q ÷Ø·rª&Ì‹.—Ðy¢ojâÈY¶¹ÖÖVKsº™ñ,~Žâó]ÁAÉÞÅoVļbñz Ô!+8j J¯QôÌ®úÒo~VÁl¶#—QÿýÇ/RúEÏÊ»¯ô®e_U«4ÝÔêOåŸóS'¡ tŒž.~º‘ÿýPKvºZ<@ö‹j#IAR-STR912/startup/.svn/all-wcpropsUT LjKLjKux êëóV02å*.˳*O¶*JŒOI,³*K-*ÎÌÏÓ--Êá S03åÒÊåç—è'”–¤—è+EôêôLõKŠJó²õ rKÒò‹r‹õ=ƒtƒC‚, ô‹K‹JJ ¸\ý\¸, +âËR“Kôй¼ YjnF¹¥úHÂìÏÌˤ¯ýP AöPK vºZ<IAR-STR912/startup/.svn/props/UT LjKʈKux êëPK vºZ<IAR-STR912/startup/.svn/tmp/UT LjKʈKux êëPK vºZ<&IAR-STR912/startup/.svn/tmp/prop-base/UT LjKʈKux êëPK vºZ<&IAR-STR912/startup/.svn/tmp/text-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/startup/.svn/tmp/props/UT LjKʈKux êëPKvºZ<:ùè TØIAR-STR912/startup/91x_vect.sUT LjKLjKux êëímsÚ¸€?ofòt§_Ú%@zw{ÓÙÆ6Á3¼Õ6¡™N/ã€ÓxJ +›6{ïí¿’ŒßdÉ€ b;°ŽŽuŽt½Ø²?¾e|Àkù ûƒk]»l› Q«ý ³ëLàÜžÙÎ]gâVÖÓ“oA˙٠gÝÛ ú\€ÕÆ?PæªGd¤¥7‡ ù¹]YÒb1s&–ïÌ]`ÚÖ=‘V,ßFj¡çÍó–öKƒÚ?ÏêÎHñ.À• =œ§^­YloÑÀ¼s¼ xK)ñçÀqß±fÎlàßÙÀ~˜ØAËMÿDt1?ؘ9ô*Di²]߆gÐö—ÐE¿Ïnáü>ÖçñÝ!3Tú*Ùîçôä-h;*çßø{­~†œ†<ö!å±s’†8íTZ#L{Ÿõt}•Æ­…m[ó˜m tÕP{&0ú-s$é*µ5¹ 4´ú:¸jŠÔ“UÐïu®¤u ™(OÿJS´Þ%‡†Ù諸FšÙÆ:å>IÐz({W2µ~èꥤ“£è„šŽ³+CÙ4è늪“S¡´.0ûÀ®T`j]µ $k”cØ1+8n4Yï«U6õ~O“ `´¥Nôú&hª ­vÐѤfG%*¥Þ5P4IWй‚oX#J’û=Cý4D–kR(RWºT#ðÙH—+;Ùºf`Zz¿K‡4˜(;Ñׯ9-ò¡ÔSΓÀÐPAWRTмNx åtÐÎ \Ø3%­§*È ]ENBÿб*v')dÚ“Ûoíg§'§'8 ŒÕY«Žë£(½@EV/ô~ß|ÝxóÛo >vÞÀ9NO®H$KÓ)´=/ŽKäkü§öПÚy €àJ“A ¬UhC!fGª”FÅr¼¿)r }ArŽÞÓmÜtü,8"ujHÏÏ;Û¸A’ržíW0¿ð÷©ãY73{zzÒ*Pô>RÔJ)ji”"üßs„wê£Ý/æƒyIÑá{ºr[õ—Ť^½«=ÜÞÖ¾>Sµ¾­¥;!õ, ^à±{Ô+gWêV«t·a.ô}bÍЬs51ESÑxÖƒɺ›=%ë @sËÄ÷¸s×&)ý¥ŸLŠS¶mqÒºÕÉŒaÿ™Á ú÷ê}\KÃůlâ îÌq¿GSþjœÕì¶¼Å?*ÿ…µwð¤âÎjX?lä)üœÃïÞšØ`1[zD×d !r #ãºç´•p=ƒã[ç/à¸þœ¨Á®F3ÛÉ÷¸8³)°Vù“5ýÂiȾdÚØv§QúÍÊš=}Zî䯠&2V‰“j.â í(Ä'I§,&¿þýjñ•ßq=.ƒFt;ŸÍæ?÷[µZ-ðrJ/;¸Áå¯îhé#A½ëa5¼?cà¥Pd…üe®v¤é GÇ£204.”DÇ#™ 2áq‚ÁH:†bZ£bùVZ’®ÝP’n‰ dî´›‹?]IÖûÏÃâík]kçñÕž &yŽæÁÏÁû=Ɇ¾„b<Ì3¯ /¸±oçÐðŽ—í:ËÍ.qzÌJ„šo6˜ßF õÈ©QmÛÕÝö((b?UŽ U¯ ÿ5âV›Â?J~‡“I°Å Ý€ûùÔŽ;ª]ÝÀ`½â-<k0ÂúÇDZX¯rÌ©ÿJgƲjOé>Û˜$ÓjQðãVð„† ƒœ©¶K“¾¯M?¾é’k‰X‰ã.+æ"Q{²Ä¢k·îUùvÞ¾Óå7ñto5ŠÈ‘g1¦¹m«k["3yðn+°žÖå®òÎEØ6Ç…#Š´xnÑâqFûY/ ìjn‘|¬=ÃX†*’5Îöa©'"‰Zf4”ì|ÐxÖA;(ÎïSŠ;“ú’} ò)a Aô#;£à_Q ç‰ÇÌ.@<½È䯦|DM6B ÆVÎÚú\ƒÙ誻‹›äP|íˆA™S:«R…BÒ¾}÷cú‘ha°.š†í?‘¶fËO䬮œ±ßÖN5˜¶sötríª Vç²s`{"<3{Éê1+V»+ëÆ£ ý¨&VsðâÞnÆ-°f€ÑÙ«Io?ÔPŠå?6Þî,|³]¢z›®æ«Ækݤî!Ùaf×iÖA¬â€Ã¿R•½Q]–/ô#öVâaä±oã Ã.•ºfÌ¥ò’¦›Ñv‘¼°³¿x›â–º¿XËÞæ°v¬“\b,uLÑvƬå\‰«Z±f`%4l!ÂbeÙHsà_q ¡‘®ÕªÇ„,zT^Õê-ª`?5 ¼6‚µ=¬ÈvÉEbr‡{hcbqŽ\d¢‹ÙÈÁÏêÒ"{ÎxÍÎç@‚gyÞø<‰«Úɳ3¹lÄ)iÆkJüD·Ù&½†ËymulÊm±ÕàO½•ø#A·­À¤´:8™ÙÄI‰zÖ+_`í+ÃI(ë©q~Øñ2ú¶â:àZ³8%ÒË ÇqáJ&¶& I0¸»Yé¦ä2Fåe¥àÖþ¸Å¾3X`K`‹¼,l±î ]›\DIùᕵUðküân]ã…0a™›ÖŸ‚0ó0f „•aì½Uaa¼f!Œ±§fm‚aåXÆRÁ¯ýñ‹·óSàKà‹À|Ñ»ž‚¯úAà«.ðU|1wð | |ñ˜ƒ/zæSðÕ8|5¾Êƒ/æÓ¾¾xÌÁ½Cü)ø:?| |•_Ì'Ÿ| |ñ˜¹ †ñ —µùE””`Y[ÁöG0îCÇÂÂx!ÌAXæSOAXç0Ö+ÂØOEã…0óöÕÌðÖ¿U–_´^{¼ƒ•ýÀV..^ø²ÐÅx4çÚìÂ:ʯŒ¥‚^û£ïqÒ__¼fî/Î<6xýýÅ]©üð¢íìÚ»8Oºèèâ…/ ]Ù癯.¤¢üè¢íèÚº8/áèèâ…/ ]™-¬M®®\~pQV ní[ì— l lñ‚—¹×1óú—õw:*.ÚNA®ý‘‹óÞ2..^ø2o’`¼—jý›$°’òã+këQ, Ÿz&|È›cYr_`ýkt\RÈ /dSåUãCÙÉHWs àÜìÜ#; Zi^Aƒ –¶.H¿ñ~P¢ä0H„;B‘ôuAzÚ/‚ô‚ôo%JƒôG¸yöIߤ§ý²eÒ×é‹ôŒ7}¯ z¬£üœÏX*0ÿ1OÕr_P^P~{¥=LÊo¼pƒuåŲÍ1P^¬ÚdÜ"(Ü”7ŒÁÆcy¬£ü”ÏX*(ÿ)OÕòJÀ¼ÀüöJ{˜˜ßx0uæÅ`þ0Oæææó+eSÊ#凸QÌ I½8M`¹ Ñ%ší[ {Î5z iÑ(£ ±"WÊ« ‚a/CÇøã ñnglÌÿ¹W¼$iß‹9EÿhµÈ?ÞWü£U<<ÙvžfþðAÏúR»]¶îè¦ ŽÕqod[‡›®¡vÁp cÙp544ÙTu°ÌÞg¾²‹<Öµ¡æ¨CǵúºíÀáv9¨jñ'†‰ü}Ù5,lýJ¶ù]Ѱ‰_ª®ƒD`Ùšnó±ðY\ ùZ×èë‡ ;bÍ"‚3ì¹ Š†j[zOW]Û2 Õ§+÷z`Z.(:tõž=CVz:Ç”ÍÏ 6R7p0ñ‰Câ3Õ2ýÓ•7ähr_¾Ò…4Ü)IBP{BsÛpH‰Žmõ¹íÁEvØgˆ†+ì(›Ú‘Ð †Ž}YÓAù\²rM{ef4]Ù0u u²u4þÃ{&ŠE&åbV­ùó}ûèÍkÄ9Å ²Â²\ˆ5ª†0fo9Kyˆ—!D"DD‰Ìf.ðg‘ÿµI„1qÁÂqÞQ”€h÷Ñ2.Ühbòé!ÿDh“h6‹VĨ±I2’àí˜ôz#•FÁõ߆aÂèx çÍb ËØgðO¸8ƒ~÷Š‹1‹‡ B¬¿Ú xáWKú.ñXÂo4ùs /Ò§$íª¹@B¼±Kž vËÙ`Ç»Ù]\búxjÇ^<>T@6Oh"x2¸ pI;ž8âå"…=þ}˜Ì¼»„bëÀ±‚ë#ÃhèØ¥Qp ñwé{SÊ(äÖ43ŠÍµ­Œƒ|=ÁqF +n=Áû\HS«'Pò!>;õ´¾÷Í fÂ#Eb‘cÌw'ÜLèÞ,&c#%H«&_ÜK³š² ²0`À“©ŽŸóŒôæugÊIÒ© …+(â/›m×¾øuÉ‚ùÁ$ðËóNtøl¤ÈŽ>’ÇcL¾IuÐSU’0 ÑТxèŠ9¡àU{UÓµGVÇq«¼Rv!¯pe5 ±p›aŽ¿Ã$‰QÄšLPƒëƒZçaœÄ¡E(“àn‹b¦ çÓqewèdh[Xç¤Ï=òÍi=¤ËìZÕ– jd:>YãTÅ*र:%¾ñà”à³]SrR˜•@ÊS’±*޽KjΪDQ*b˜ü`…¼ÁÜ€¨ 3 nw¡(ЬíDQ+rT|kKž Ô&RSÚ’gšZ±N yGî«kVœ¿ƒ¿w‘ü¶ˆ£»Ø›xQû303-ú˜ú±ÔÙ {\|pDÙ@µ2ÆŸ®õã¥&»ò¥iÙ–åîï×Ñb”y2-ÆÛ'Óbð®¥}õªŽsÁ“‘Õ§Âaàc¸ÄÒKÏ©ZkªÁPé*ŒFê «ÿîê¶ ¢=*îÞq *¹P Òå:w÷4‘M~>˜ì{j„I*Âyõ[Î`Z  }gþûÓ$ÂŽ7@²xé‹ÌŽ5™çû´¨TË£%&ù E§•÷•m£a£5‰£9ú>O0Øàaò[y °ü¢î‘Š”ý6È{Ê ÆÏþ"B§2ìt°üÕF”±³Xú/B¬4ì—P.?•ådÂblú©L:ÅZõú×2I­9nsެ¤ËªbÚƒð1UN dš¦‹Ë££ÕjuèÅóC?š-Æ“äHÓ ©yv".ÎÎô‘sˆ7áW輎¶(²ÍÓH ˆñå7ñ…ïw ›ycô¡æé:å6©LÄš_*`,[8pœA¼Åâgm¢vnÑ›8Hs›òªª«¬%QíG$Ü›¢”Ù:×Úlî- 3ó’i^Á{)xYZØ(å+OxM߀|¦yÝŧU ¢çù†nñn(,Ï¿EWíõmŸáúÞÌòk²†÷È@5à–Û »*5½²ùQäápÚl}\Û”jŽçým¥Pø’ãìµþs²ïCW†Ok#Ðb™`·D;®¢Ö‹fnÈÆEk‘hçD9 nÊ#=j¦¼2Ô*/?¾ì¶Åk«ÇÌP:ëµE1¼ Æ\y‹eZ {Ë|o‰5Õ„uƒÛ"Þb L ñÖéeë õƒ”.ðîv±¥vó¼3[ìªCÈ·6Ø´R’ÇÔU+>I@[^@; û›öUÑnÙ2=‡Ut>a”f ”°ÀË#H¦ÄÅÙG°å~ƒh57@sÕ>öÇÀx‚<à›ŽåflËhé°ÝtÕP63gn^4klÖ$›Qˆ­4*_x¼ùÉ‘Œ‘µ:bãÁ/7†¿ª …iBt“v÷´@.ÎúÓuy¼bÆòSáM¥ Göõ¢hñÀÌ–ne‡‰°ÚÜøË0 f\8¬{8Áå ›š“ E¯·ÜK#)ºØ -‰±!â£w^ ,…©6ü-kÿ³Ù£6Ûp½6ê5ãzñÒ™Ê ¤ø`ãgæâö ç¢1¾*J«£O,nò5Q ÷Ø·rª&Ì‹.—Ðy¢ojâÈY¶¹ÖÖVKsº™ñ,~Žâó]ÁAÉÞÅoVļbñz Ô!+8j J¯QôÌ®úÒo~VÁl¶#—QÿýÇ/RúEÏÊ»¯ô®e_U«4ÝÔêOåŸóS'¡ tŒž.~º‘ÿýPKxºZ<–ß‚SY¯E#IAR-STR912/CppUTest-STR912-Main.ewdUT ”LjK”LjKux êëí\ío›8ÿ>iÿCÕ݇;iMÒöz뤬»’ŽŽ”n“"M8Ä+ØÈ˜¶¹¿þÌK^×°\ˆÍV5•ǿ籟wC›ïÿàÒüîð¸Ö8<€Ø!.ÂÞ»C‘£óó³·GLJï/^¾xù¢Rò :Œ7šcäÛì§'Íúr3½ïuÇçÍúÝZg~û`vM°Nà'®´—ú=ÊBz‡„luÌ9#c¶ÆIÆ9 &ƒe'KƒÕ¿­`üvÀú”80Їa(7€r. æ©Q¢ƒ¯:¹ÛÑQVmR‰µ•¾V` µÑhTs‡'XnID•¤¬ëÄ*iiÎr”ä–}Ó¸ÊK' §_šO¼òÁØžLùnvèRm[ó¦c> [´¿é,B‘¬Â "ÙW”+xm ÁmHf&pQÁª•.<¤p*„\\á¶ ±Èÿ¸e-g7]×Z¦iˆ‰‚å& r±]¯Z u\ÄÚÒµ„ãoòìƒÕêå®7¿¸c^›öž±JWÖ+á[+„° NyzRÞÖ&0ÜeŽT×LÐ?|2!ú`*´ú+!žJÒ0bøâÅD%W>ÇëÅ>C6 ¸·§(–°’l6s]j™½¬ð&6äÐåq—­œ©C챉p Ä+ˆ$©~Ž™J~Ê^QÅ´<ƒ«½¹ü+ÉÅ+¦ª)€9“Ôˆ‰äv4À.˲>i2`TîÝeàô)C~”¥™ÿÈ€éjBaRe–™ÕfaÜ´6ÁÜ^»³Á Ò1p ày52¸l‹Tð~_ÎZj 7mAog˜Ïö<ÉJàòvÉXz·Hïi][՞ʦŒ8ZИ¹è!ôY£¼þçHR’­K`ºµ›€öZŠÙÒ. 1¥óSÙ"úG7]åD„ þØ>íW!**?¨„/•”ìrkœ¿y^ýÆV{ZyÀ¼ª"òéÇ ._ÜüsOTT[èM,ΣÞP¼Ÿ<ÀqÝ–ë<öÖxh4Îɧ´³ì‡äº]}ðyo+HÙ™Î|ee;AVû›O%îOj™•Q‹ž›~õêÕ£¬Žþ….o—ÞDS5Yû£s¤dTþvÇï¶Ÿ –eaž –;Ã.Xr˜A;vOHÕ»é–-l;ý~Æm·¹´?h¦Úo™ö—§1ŸŠ=AÔíʦոê¾$ý`%6I“ãÙ  }?ö^ç0½°ÙìËÃ%/Yu}à%K6?_P½†¿;=6ÂÓŸ†&Œ +ûÎ ªÃê îÜÂùWOOŸÜsAÎüÄ´ «J‚ì ÏjÝϳãO#E±bXGš6;}l)V8ORçSn鸕#xN”B’7“¸¹\il;QÇ"¨2(Cé—œåÚ@EŸ~Ÿ›ÜÅY¥³b1àÜfßÕÒ1 ’íÜÙq´äñÍšSkÖ×ÿc ÿÙü®$ÿPKxºZ<âU|×IAR-STR912/main.cppUT ”LjK”LjKux êëmQÁjÃ0 ½ò»8¥ëØŽ ;Œ°Ã £ct§u “8‹!Q‚cg…’Ÿì.Ť½È¼'=éñ|£0¯m!e]÷±“½¹ËÚ¦XlJ‡ß-¢Ô«ŠÅQ)40 ¾ …<‰£c¸†ÈáRóJhX€>¿ˆ;2Có+yl ìvðõÇÕ­55lô"-ÕWï¯×ô>Õµcz.ò%íNH5:Wò`$ YÆ7Vhó‚Êð$ ©ç¼jÿ©¡U…çÞ¬áÎñ"àI7²èÃYÂß;²¸-KNû®upÖ(kÑWç=ã”afwá4¸<õE¶×{¤Î?Ѓ¯Žf'ío¥j ü>qÀ/‡Ù¥'rÌŒŒÞíPKxºZ< eÿèMIAR-STR912/CppUTest-IAR.ewwUT ”LjK”LjKux êë­RÁŠÂ0¼ þC)^k¶Â‚B¬ìÚ‹à^ªâE4>ë[mÒtÝÏ·†¶´Rz’œfÞcfÞºøOoÎè ¥˜»þøÃu@pyB‘Ì]̤7~Î<ß]ÃÁp@ïR_3Å8Ðq¨Òò¸±à ™¹£ý殢Ña©Ôn ™ñ6ÛhæO¼†b wE‰Ý³¤©Ð/·úŠ*¥5ÆýB13üòãíTiY&„3 4Å©%] K!¨¢Rba=L!A׸±¦m_®r)ΘäšYÃâ<¡¤MÖFäũǹ«Ö7ûSÒUWÉVµRÒü Ï÷PK vºZ<IAR-STR912/linker/UT LjKʈKux êëPKvºZ­`ᣩèœVx챤Ç'%h!K*V­ýS†œ€ðŒ>‚(é²d§ÏB¿R É©ú€g&W -·ó%Œä¨AG,ýª•âÓo/Á©$Kq$®þ·±Ï¶±OÚØ†Mf´ð~€þtf÷oõ.ÆëF>[ò€r©<»ÖÛ6Žé^{âôWßM çï!Ž&?J˜ï!:£òD£ ö~”&m²‡hž•&m´‡øuh¦Ñh³„X­0Τºt¹º­°XoÕTHy™¤‰­u3Q©JÒ&„z"¥­}„) ˆFQõƒ7Lb$¸¿ÍqIÉ;+ôéNÝa$ßòÔ„îr=V?_­œ¬I9Ç~ÇÉÖiU+p`˜e»Â*†Ú*fò$9ËšUŒŠež´^Æ?PKvºZ/‚Ö‰*¬™12M[#Íè ÒÍt„ºÏª¶^ô`¢Wââë¤â¼r5ƒÈÉͯۅè‡QÎ’¯‘7*>ÿqéÏ2`Éìß÷6æÙ6æI3c“M<é­`ᣩèœVx챤Ç'%h!K*V­ýS†œ€ðŒ>‚(é²d§ÏB¿R É©ú€g&W -·ó%Œä¨AG,ýª•âÓo/Á©$Kq$®þ·±Ï¶±OÚØ†Mf´ð~€þtf÷oõ.ÆëF>[ò€r©<»ÖÛ6Žé^{âôWßM çï!Ž&?J˜ï!:£òD£ ö~”&m²‡hž•&m´‡øuh¦Ñh³„X­0Τºt¹º­°XoÕTHy™¤‰­u3Q©JÒ&„z"¥­}„) ˆFQõƒ7Lb$¸¿ÍqIÉ;+ôéNÝa$ßòÔ„îr=V?_­œ¬I9Ç~ÇÉÖiU+p`˜e»Â*†Ú*fò$9ËšUŒŠež´^Æ?PKvºZ/‚Ö‰*¬™12M[#Íè ÒÍt„ºÏª¶^ô`¢Wââë¤â¼r5ƒÈÉͯۅè‡QÎ’¯‘7*>ÿqéÏ2`Éìß÷6æÙ6æI3c“M<é­ðØSIgNJ*Ð\–T,)Zí·Ž›0à„g4DºÅêu]ü,âWêèªxar ±…â¶¿äËÐO‥_cg¥øôÛ Ep*ÆR ëŸÿmì³mì“6¶a“Í}¡7™Ú½»ø“}#Ÿ-x@¹TžëýÇt oÝqò«çjèùD#Æ{ˆÎøGi¢ó=Ä¡Sžh´ÁâÏoýÒD£MöíÏÓÒD£ö¿ìïIÔ m¦‰• Æ™T×B\®®*,V5RD^B&©¶ ®%0*UIÚ„Pç"žHi+a H"$¤Q”Dýàõ¢÷79N—ìàX¡O·êr #ùž§ž t›ë±úùfå䘔sìN¶O«r†ÙYV±+¬b¨­b&O’³¬YŨX擎·ñPKvºZ<6%Ì«"IAR-STR912/linker/.svn/all-wcpropsUT LjKLjKux êëóV02å*.˳*O¶*JŒOI,³*K-*ÎÌÏÓ--Êá S03áÒÊåç—è'”–¤—è+Eôêô-ŒôKŠJó²õ rKÒò‹r‹õ=ƒtƒC‚, ôs2ó²S‹¸\ý\¸À"ñn>ŽÁz™Éi\Þ„l¶0Äk³‘)a›õ1lErJ£/q1·¤šC`v¢‡H¼sAAhÐ\â\di@q¤èã¶ä8PK vºZ<IAR-STR912/linker/.svn/props/UT LjKʈKux êëPK vºZ<IAR-STR912/linker/.svn/tmp/UT LjKʈKux êëPK vºZ<%IAR-STR912/linker/.svn/tmp/prop-base/UT LjKʈKux êëPK vºZ<%IAR-STR912/linker/.svn/tmp/text-base/UT LjKʈKux êëPK vºZ<!IAR-STR912/linker/.svn/tmp/props/UT LjKʈKux êëPKvºZ­ðØSIgNJ*Ð\–T,)Zí·Ž›0à„g4DºÅêu]ü,âWêèªxar ±…â¶¿äËÐO‥_cg¥øôÛ Ep*ÆR ëŸÿmì³mì“6¶a“Í}¡7™Ú½»ø“}#Ÿ-x@¹TžëýÇt oÝqò«çjèùD#Æ{ˆÎøGi¢ó=Ä¡Sžh´ÁâÏoýÒD£MöíÏÓÒD£ö¿ìïIÔ m¦‰• Æ™T×B\®®*,V5RD^B&©¶ ®%0*UIÚ„Pç"žHi+a H"$¤Q”Dýàõ¢÷79N—ìàX¡O·êr #ùž§ž t›ë±úùfå䘔sìN¶O«r†ÙYV±+¬b¨­b&O’³¬YŨX擎·ñPK xºZ<IAR-STR912/examples/UT ”LjKʈKux êëPK xºZ<IAR-STR912/examples/GPIO/UT ”LjKʈKux êëPKxºZ<ûd³1*Ý#IAR-STR912/examples/GPIO/Readme.txtUT ”LjK”LjKux êëµUÛnÛ8} ˜Ç¶HäØ{ik`‰¶‰Õ%KÒ ò´PmÚ&*‹ZJÎåïwFrãdë}X K†Ì™9sÎhf<úpæÀ»ø=ÄÅͽó…†ÉÕÕ¯ tfWޙʬ:ïj»já\h|€™­ äåÞÀË™‚4åzo¢î©#vèvÎÃë3…,N€5MeWeg] Ú”{rNÊÎ ¨o;m{0kr¾úe4þ4ê©MáÖø–"ÆÑU`Ú•·Mò‚þúÒm Û˜ßˆøS¹o*aà>DeaÛÎùç)=#åÉ„(|CyòÍöó÷rÆGÛ¿Iýë‡ÉÏ5¨b¦ï˜äp·ñ„‚Y!a¾ ËcEžÞ™¦1¦¸‰Èç/•.2.ÁÝ ½À^ê "ÇðŒiQä ùœÉþ IáÉ2Ö   —}*´e  Pì–ƒúîÁ„ –©¾ Æ±,xÊc-‹\Ä Ô‚¥)ä…†k ž& vò’å÷‰Þ„%òá&Eš¹â,Q¹`)$,cs®˜í†¼ Äé [ Ef²Èˆ+"ˆ¦Ú3PK,ÚK YžŒI°T2–p¸¾?U‹"È8kàvªÁ2‘óIŽEý]ޤÈÜ“|[ÉßÑ£0ƒã¼Àú4OaðÛ÷' ôζ`Žîwc „G¿{Oó¸sÐ98´æ4šA‡ñee½ƒ­}èV®ÞØíÁk¢5L½2„«*¨Ìº%D‚ø J€n»Å[°5âà÷ÆÖWJå\‘¤0H¬Ç½†ƒJØ©»öœ¦0ø<~ú“²G;€Ô~ñ%FÄoØlpù ~¶‹V´zzh:Ø¡Š ç7 ö¥­+@†ÏTž­§uGŸEé×DÜÔ—í ­12‚K"P#{(Q|cëWâá7mƒ6,\õ i2Ž¢OHSiùy<¹T¿_ &á‹ÃŒï±=!$pzöŸ™Ã@à ókãÉe_~^ØQ<:ÿõžÝö\Øk×[7®ªÜ£­·0%— uo8¶Ç ûLËý—¿"ž'4C3‘òa™ý PKxºZiÿ!ªöái¹µ«ÖIÙv$)9@ºMŠ49à¯`3cÒæß¹¯¥YÁ°Sµ•ÀÆÏûÚïÝÎÇ[ß«Í! ÁïÚÖQ b›8»ïPHêgg§ïêí£^¾xù¢PòÚŒŸÔj)òàUzë‡v§¹}š´ÛO‘QÀV—øE |øA“Èí4“ãåuFˆgÏZu\u•ŒÁnÇæ~ÏŽS,¯†1ÎE¸7ž\7‡ßvFä-€Ú34_SÜiî]Y÷të3~>_ñÚiÎ÷:óæ€Ù%Á±S¸s¾ÕïN’°Ý1׌¨8ˆØ')ç 0–l Öüe´Œñ{ØA RbÃ0$T†._ʹȘ§VNˆ°u¾ò9P(HŸ«×ýyLJ~ L@?›‰W–®kŸU뻢¯Æ²~ÙWÏljF¸ŽMkŒHÈè»öñ´á8ӜԶHƒIEyå/¹äG÷CøÜ’åVÕ[Fž4‡ò Ú×âqK˜<Êý *Å<(J_¢näCÌ8žÙ0.?¹ÁŽå¼­ÎÅ-ד»24]Hž',C¶t›÷#½iœ´¥ü¬-°B¹—¦ 3,ü…¦^~þ®*¹ñ42Ì¡Ó]Êèi£ÍƒªÆiëô¤¸¥”öÌ"œ—_Ü‚ö=Î4ŽÈÙ¼å5ÿûËSyìï×9!G!ÜB}häFƒs˜¡ù­K·wfz\`òað¨puòþ»í}.œMuˆ}áÁnÙ±®.›ÈOU]ÅS"rÉ8P Í¡HKÉq†a° ºä$U—âä%)‘—ç=Mˆ@¶JO¾d »ÐûeD¦a L|?ÂÈNRé2Àº º3*Éœñ5'…Ñ1$ôÎÉ=ŒŽ¼j“H¬%Õ ShL&“†mÛ<+qr"*$a]#î4SIss¶Dù„̃…Íפá7,S5œ):WºfϸêOÃ7Y(%+‚p¨NüeùÂn—Bp„™”±p¹söN!£€K,ÜÀfÄôÅ@þàeÇ©»*†.&.?ô0ˆ¿”\Ñ¥ž RÏA¬[…¢pŒ}Šà¶úˆcEE¾øëíÿÜ=o*6E«ëYÙêz¡!|mfùÚ­Vö6*Ák.‘*už1Ÿ¾‹=°Z?-!²JR1bxÈÊÉqîéSÈ…Çñ‘Ǩ îŽÉ²i,ÇÛµ\¡$c À9²aF ;‡MÅã î ÂR b—Í2ÊÀÅÅžA|¬#•ë/1}~€½üÒ¿Š΄?…Ïe¢Ñ _WÇ"ÁFf7Õ® ÃÙPT0{–̰HnW@#ìÀi@æµ …G.eà )œBþ]–jü[L_ “(óÁI{A¾¥ì¬=Æ,>m?ĉbéØP°ƒÓS¸tµ²Ý9m ö-E}*ÛseÉš¦ÌAÄǧ¤RK¤R’©%–Øtêq2:dCRÏu1Eòã²¥ôwî°–õüè¡*Àsy~¢º ƒBøj•’ŒóOßZÊ@͸,œˆ|DÐò×0ßDEµõÜØèÜéË/Ç3pBGrœŒçµZ·­ÖY«UD¥sl Kèa%À罺ƒ ÿ”½:ã©DÅqZšjŸ’õÐm—’›Ö©-HDkü¦š“Ü•{'IQËÚ'\#Åû„•l pÄûµçâV^˜çâÖ£a·8Ì(„=k ¤ê]eë“j(Cɰ¾=‘'A¬¢ÎP¶ø}?Ãâ{ëA|sAþfCMInçÀªžR)M°Wï ½ÈExK¾ƒäÂöÈqn¾ÇqÚ)SF±<ø:–ý[‰úé` x“¶§/òn¿rÒ÷€¯ØúxCñöãi±^üô@¢›égõÄèfo¬sË„È#¸zz†ä† °×†¥›UdÍxÎâ|]}ÿɺYWÕÕwý³T—Í`!ž¤Þ—¥uã–à5Q2‰ß1á& ¸pç¤Ñ»BU[U:e(ù8” !s3¤„·s3»9ªtVLìëô³@:–Åžóè4÷¤ß¶þ‡øÿ?PKxºZú„$oM}I“s6€›BÖz5¾Áöns€´DËLdR¥(Çî¯?CÊòm-ÙYŠÚ—ã8 ](~œ!9œù8rëÕ"´–˜Ç„Ñß_4k¦ó ~AböëÕÕ»÷¿6_üñáçŸ~þ©qö{N,«5#!¾KýÐlÕ÷OÕ}Ñ ŽDv .R´À®ñ4 Zuu¼¹. ½9"YÁ¬¨=꬗lù²6Ù‚ô`s5ÆB€ñQ}1Å…uÂ=Ľ9YnÛÿ[«~te[ÒGmÏà|™ižY†Ûß}F»ÌC¡lãÁù^¹“B¨;,‡uf¢tVxˆÄüH”TxÄFÍ÷P¬UO/ìÕZTm>Ð`úõ (¦ Ô%±¸I–Ó„ºCœ@WœBÊzñ?§:tÛÙßZ-øØ¡>4¡Ç|œ/oCÄ¥Q"¬åya›…Â–Ó Ç'ªL¾Ä7IZ3ÆHÍßšîØMÄ…hÕÀ¦Ï¡‚)v›PÄ׿†ÚÍðöÕûÑa¸3'Q¾ˆM]MŽ*ÈwÉtŒCXŸ.péM‡hyÒTÓžÑäú’¡}cḴEåè­Áb3uÏ©;¿übñT>+$Sã¶fõ™ÊU[„ ÌgÈï-gsí5ÔhId;÷â$ŠêÞ" ™®Žáq+âPÇÌBÔ·bÑÙkuÅæxeÍB†„* .˜¯;ÿFG‰Y¼²½š ÝÏîäáÚ½ºwûÎý5ôíCúèC_é«6מ&CÎüÄ·&¿9ok¿5mm´.ŠÅÆ¥ß^_ ü®Ö7´ö®ñîí¿uçHêëõHÌÑ( q¬1=FS~ò«þÀÿíŸÍu"¿Fzº}bWlSxw©ÑØ{8çSŽ":MC¬ÔanØW:tö”ÅÝ0û`ðSØñ‰èašä£'£÷Í77ÿO¬Í¡¾¬]ö½‹—8t3›dpõÙ9ŒíŽžN!ÌØ…1Pþ0VÊ‹\Ç9LJNož:½¯:trœk<#ô´EHµ§ÙYŽ3äÂeï%s` ã°ÅSQ PiP]PœIÝ9¦Õ¦@z/%žQ­¥H8ŽQP4Þʲ㸠Í̘%¼ÈÚé¥ËÕ/ÿfTq×cð9t’Aƒ aRi ƒü…8óm¥Ã9ã1$ëÄÁJ¯Ì­¨°ž…!,àŠNz27’~ôu*W/—Θ9yÝK('mðô=˜IEƒC_•àh nÇÎ{SJ›»ÚÇ28Þ»ˆ2Ú“‘5kYÇ$ Ø†ˆPgŽ ö“ãŒðß áÆ„`b™]{Y?N#Ó‹†4´6Ç` M"kÁšÎ7ŒO±‰Ðí7QRÁN)ÉbWåÕÛí<´ûv¯óªÆJ™_ù¬]yÞÑ4¥l>aäcƒ„µÑ¥^˜™r]i6ïÿÊ& &'&wmgÓµ’2|S0C†£ÁŸ)aX«É/ÉFÄ1ü‰GôWáC3 ¯¾L¦!PK°¼>ƒÁ($,k¯tw#]E}gü[Aok›ö­]— A ðÝ#¡X1“ž`ŒÁ188¹©U;ÓNÔÜý—Ëå}+gáäNn~›¤äì â=; 8(‹Ac"È’ˆ‚ÝV]¤ò8“λƚ¬;øméÿ¦,9c¢@þš#ƒ^›‚‘šeŒÀÿÄÍ 0 ,».ÆãÄ­ƒêµ§O(F8 1¬…}87+Ú¦ù;T*©ý²zÓ!†)$µyœÔ±3ØÑ`'¡«ÍtVQ@ –¾³ÂžÁMT®í8ƾA%IbÆì¾Ñ¸‹i æ†#’P>Æ•.ÈMÇò 'ß•îôþ2Â3ƒ&JVÖÌ–‚¢¢'ú(«·ta£Ðnv5ìž]9½gWGýª¸ Bí~™Þz؇’é-=¦½e»eïØƒbí@ ,Cé|Ž}c~W;Æ<Þšº3Hµ £í?Áð¿gˆÆ²‚ªf gc·TêõóeËgí0O4ïD.4Õú(2= Q_º€i"¨É¸EJ5ýê°h]9ñ´iáÜŽ'ƒs¼Ü¼f„WBÒJ0Ë¡7öNöŠx ?ýÂýìHO„¶ë zC½‰]ÿaÐ[·{m;wÐ?ƒÜ¼\y#@BT³=Ü¿Íb±½¿=ÖSžÛuûŸË7Šo«6Š. ¤o]2u鶦¹YûŒÃ7µÁö ,EXd ´wB¤Pê$i÷Î0÷¥€]beƒˆ°K´÷’$Þ6™èœÔfp$ÚgŒ£ñz1e¡9¿JÐ÷ô5&£ëÕ!T*XU`8i¼¡Ù! vCʈfyV’š¦J z(*{¥L¨. ̦ñf(.%‚ ü£ÞÀ2×߯ ¹ÎîÚ—t‡)6¿Ty³ó±@)ΰ6Ç)'ò)ÌïÕ 5«‡›®=þT#Þ¬ÄÆœYŸË@ª(Õ\ae™æ2а±špŒ„ƒ\•àÈÈJ€ .ËÀÙdÐÇir';½É^☸ñeYÆ¥ U’м1GoÇ•%sÔNƒˆ¥Ï×ö}"ï£ +3[†œ-:TðuM‹²¬J.ðLgÑžFÍÇ{x ˆ?Dép—Cõ¿ »CGQ¸qR`AuŽf°ÊìDY;æíµ(ò»V7º/æ0ãTûù8åHÓ¡E»ÕÚ ÷ÆäŸgü9hÀ™à¬„ÀàËF0daÑެšÍÆ›`dvöÉùSQ(÷ÚD xN.NeØÄrw(L gº¾½0Ãֿݹz¶„Z×9ŸÜ»ãWìK`oO£ìí¦…Šë4èžl`ÌoXm‘ŸšóòåËÛŒÚÀ>œ-í˜þœ]’VýñOèµÎ’(+¯@ãÇob«ßæ;jè£È=}î^†íŠz>œÓéú=±¾Lˬ.ö’üêZõJNiG:$Iôõ¤ªKµXW ½ —à@çWx Ò>ÌqŪmâ@7ûÕ=º@„ž~Pn’e?ó(ÿýPK yºZ<IAR-STR912/examples/GPIO/.svn/UT •LjKʈKux êëPKxºZ<œ©­:%IAR-STR912/examples/GPIO/.svn/entriesUT ”LjK”LjKux êë­“?oÜ0 Åw¡_Å6©ÿº-S)Åõ¦.%Q·w¶aûšûøUÛ A7£õƒAx ~x$„Èý,´”âe]§åÐuišn+/k»|Úe¼Í‰Ë8Ÿ¹xíêÛ<ŽëS·Î·á[7]h­¦ëÒ==›O§c@Ùñ®Ó…—îñãÓó¿•U 4 ©N(h[gœûY(iÄWºòržyúá,þ–+>2 4JÕ"?oYBã-± ‰³ÑQ|ç©[~}¥¿°øýiµ‚l¤;;`8hßÂ/ÕOv rO&[il)dÉ ÿñ›ÐøÊu¥~hÓ6*Sa2‹Áɬ±É“s^‹i•®d?PK xºZ<(IAR-STR912/examples/GPIO/.svn/prop-base/UT ”LjKʈKux êëPK xºZ<(IAR-STR912/examples/GPIO/.svn/text-base/UT ”LjKʈKux êëPKxºZ<êõ¡7ä%R9IAR-STR912/examples/GPIO/.svn/text-base/gpio.ewp.svn-baseUT ”LjK”LjKux êëí\[Û¶~>ú„$oM}I“s6€›BÖz5¾Áöns€´DËLdR¥(Çî¯?CÊòm-ÙYŠÚ—ã8 ](~œ!9œù8rëÕ"´–˜Ç„Ñß_4k¦ó ~AböëÕÕ»÷¿6_üñáçŸ~þ©qö{N,«5#!¾KýÐlÕ÷OÕ}Ñ ŽDv .R´À®ñ4 Zuu¼¹. ½9"YÁ¬¨=꬗lù²6Ù‚ô`s5ÆB€ñQ}1Å…uÂ=Ľ9YnÛÿ[«~te[ÒGmÏà|™ižY†Ûß}F»ÌC¡lãÁù^¹“B¨;,‡uf¢tVxˆÄüH”TxÄFÍ÷P¬UO/ìÕZTm>Ð`úõ (¦ Ô%±¸I–Ó„ºCœ@WœBÊzñ?§:tÛÙßZ-øØ¡>4¡Ç|œ/oCÄ¥Q"¬åya›…Â–Ó Ç'ªL¾Ä7IZ3ÆHÍßšîØMÄ…hÕÀ¦Ï¡‚)v›PÄ׿†ÚÍðöÕûÑa¸3'Q¾ˆM]MŽ*ÈwÉtŒCXŸ.péM‡hyÒTÓžÑäú’¡}cḴEåè­Áb3uÏ©;¿übñT>+$Sã¶fõ™ÊU[„ ÌgÈï-gsí5ÔhId;÷â$ŠêÞ" ™®Žáq+âPÇÌBÔ·bÑÙkuÅæxeÍB†„* .˜¯;ÿFG‰Y¼²½š ÝÏîäáÚ½ºwûÎý5ôíCúèC_é«6מ&CÎüÄ·&¿9ok¿5mm´.ŠÅÆ¥ß^_ ü®Ö7´ö®ñîí¿uçHêëõHÌÑ( q¬1=FS~ò«þÀÿíŸÍu"¿Fzº}bWlSxw©ÑØ{8çSŽ":MC¬ÔanØW:tö”ÅÝ0û`ðSØñ‰èašä£'£÷Í77ÿO¬Í¡¾¬]ö½‹—8t3›dpõÙ9ŒíŽžN!ÌØ…1Pþ0VÊ‹\Ç9LJNož:½¯:trœk<#ô´EHµ§ÙYŽ3äÂeï%s` ã°ÅSQ PiP]PœIÝ9¦Õ¦@z/%žQ­¥H8ŽQP4Þʲ㸠Í̘%¼ÈÚé¥ËÕ/ÿfTq×cð9t’Aƒ aRi ƒü…8óm¥Ã9ã1$ëÄÁJ¯Ì­¨°ž…!,àŠNz27’~ôu*W/—Θ9yÝK('mðô=˜IEƒC_•àh nÇÎ{SJ›»ÚÇ28Þ»ˆ2Ú“‘5kYÇ$ Ø†ˆPgŽ ö“ãŒðß áÆ„`b™]{Y?N#Ó‹†4´6Ç` M"kÁšÎ7ŒO±‰Ðí7QRÁN)ÉbWåÕÛí<´ûv¯óªÆJ™_ù¬]yÞÑ4¥l>aäcƒ„µÑ¥^˜™r]i6ïÿÊ& &'&wmgÓµ’2|S0C†£ÁŸ)aX«É/ÉFÄ1ü‰GôWáC3 ¯¾L¦!PK°¼>ƒÁ($,k¯tw#]E}gü[Aok›ö­]— A ðÝ#¡X1“ž`ŒÁ188¹©U;ÓNÔÜý—Ëå}+gáäNn~›¤äì â=; 8(‹Ac"È’ˆ‚ÝV]¤ò8“λƚ¬;øméÿ¦,9c¢@þš#ƒ^›‚‘šeŒÀÿÄÍ 0 ,».ÆãÄ­ƒêµ§O(F8 1¬…}87+Ú¦ù;T*©ý²zÓ!†)$µyœÔ±3ØÑ`'¡«ÍtVQ@ –¾³ÂžÁMT®í8ƾA%IbÆì¾Ñ¸‹i æ†#’P>Æ•.ÈMÇò 'ß•îôþ2Â3ƒ&JVÖÌ–‚¢¢'ú(«·ta£Ðnv5ìž]9½gWGýª¸ Bí~™Þz؇’é-=¦½e»eïØƒbí@ ,Cé|Ž}c~W;Æ<Þšº3Hµ £í?Áð¿gˆÆ²‚ªf gc·TêõóeËgí0O4ïD.4Õú(2= Q_º€i"¨É¸EJ5ýê°h]9ñ´iáÜŽ'ƒs¼Ü¼f„WBÒJ0Ë¡7öNöŠx ?ýÂýìHO„¶ë zC½‰]ÿaÐ[·{m;wÐ?ƒÜ¼\y#@BT³=Ü¿Íb±½¿=ÖSžÛuûŸË7Šo«6Š. ¤o]2u鶦¹YûŒÃ7µÁö ,EXd ´wB¤Pê$i÷Î0÷¥€]beƒˆ°K´÷’$Þ6™èœÔfp$ÚgŒ£ñz1e¡9¿JÐ÷ô5&£ëÕ!T*XU`8i¼¡Ù! vCʈfyV’š¦J z(*{¥L¨. ̦ñf(.%‚ ü£ÞÀ2×߯ ¹ÎîÚ—t‡)6¿Ty³ó±@)ΰ6Ç)'ò)ÌïÕ 5«‡›®=þT#Þ¬ÄÆœYŸË@ª(Õ\ae™æ2а±špŒ„ƒ\•àÈÈJ€ .ËÀÙdÐÇir';½É^☸ñeYÆ¥ U’м1GoÇ•%sÔNƒˆ¥Ï×ö}"ï£ +3[†œ-:TðuM‹²¬J.ðLgÑžFÍÇ{x ˆ?Dép—Cõ¿ »CGQ¸qR`AuŽf°ÊìDY;æíµ(ò»V7º/æ0ãTûù8åHÓ¡E»ÕÚ ÷ÆäŸgü9hÀ™à¬„ÀàËF0daÑެšÍÆ›`dvöÉùSQ(÷ÚD xN.NeØÄrw(L gº¾½0Ãֿݹz¶„Z×9ŸÜ»ãWìK`oO£ìí¦…Šë4èžl`ÌoXm‘ŸšóòåËÛŒÚÀ>œ-í˜þœ]’VýñOèµÎ’(+¯@ãÇob«ßæ;jè£È=}î^†íŠz>œÓéú=±¾Lˬ.ö’üêZõJNiG:$Iôõ¤ªKµXW ½ —à@çWx Ò>ÌqŪmâ@7ûÕ=º@„ž~Pn’e?ó(ÿýPKxºZiÿ!ªöái¹µ«ÖIÙv$)9@ºMŠ49à¯`3cÒæß¹¯¥YÁ°Sµ•ÀÆÏûÚïÝÎÇ[ß«Í! ÁïÚÖQ b›8»ïPHêgg§ïêí£^¾xù¢PòÚŒŸÔj)òàUzë‡v§¹}š´ÛO‘QÀV—øE |øA“Èí4“ãåuFˆgÏZu\u•ŒÁnÇæ~ÏŽS,¯†1ÎE¸7ž\7‡ßvFä-€Ú34_SÜiî]Y÷të3~>_ñÚiÎ÷:óæ€Ù%Á±S¸s¾ÕïN’°Ý1׌¨8ˆØ')ç 0–l Öüe´Œñ{ØA RbÃ0$T†._ʹȘ§VNˆ°u¾ò9P(HŸ«×ýyLJ~ L@?›‰W–®kŸU뻢¯Æ²~ÙWÏljF¸ŽMkŒHÈè»öñ´á8ӜԶHƒIEyå/¹äG÷CøÜ’åVÕ[Fž4‡ò Ú×âqK˜<Êý *Å<(J_¢näCÌ8žÙ0.?¹ÁŽå¼­ÎÅ-ד»24]Hž',C¶t›÷#½iœ´¥ü¬-°B¹—¦ 3,ü…¦^~þ®*¹ñ42Ì¡Ó]Êèi£ÍƒªÆiëô¤¸¥”öÌ"œ—_Ü‚ö=Î4ŽÈÙ¼å5ÿûËSyìï×9!G!ÜB}häFƒs˜¡ù­K·wfz\`òað¨puòþ»í}.œMuˆ}áÁnÙ±®.›ÈOU]ÅS"rÉ8P Í¡HKÉq†a° ºä$U—âä%)‘—ç=Mˆ@¶JO¾d »ÐûeD¦a L|?ÂÈNRé2Àº º3*Éœñ5'…Ñ1$ôÎÉ=ŒŽ¼j“H¬%Õ ShL&“†mÛ<+qr"*$a]#î4SIss¶Dù„̃…Íפá7,S5œ):WºfϸêOÃ7Y(%+‚p¨NüeùÂn—Bp„™”±p¹söN!£€K,ÜÀfÄôÅ@þàeÇ©»*†.&.?ô0ˆ¿”\Ñ¥ž RÏA¬[…¢pŒ}Šà¶úˆcEE¾øëíÿÜ=o*6E«ëYÙêz¡!|mfùÚ­Vö6*Ák.‘*už1Ÿ¾‹=°Z?-!²JR1bxÈÊÉqîéSÈ…Çñ‘Ǩ îŽÉ²i,ÇÛµ\¡$c À9²aF ;‡MÅã î ÂR b—Í2ÊÀÅÅžA|¬#•ë/1}~€½üÒ¿Š΄?…Ïe¢Ñ _WÇ"ÁFf7Õ® ÃÙPT0{–̰HnW@#ìÀi@æµ …G.eà )œBþ]–jü[L_ “(óÁI{A¾¥ì¬=Æ,>m?ĉbéØP°ƒÓS¸tµ²Ý9m ö-E}*ÛseÉš¦ÌAÄǧ¤RK¤R’©%–Øtêq2:dCRÏu1Eòã²¥ôwî°–õüè¡*Àsy~¢º ƒBøj•’ŒóOßZÊ@͸,œˆ|DÐò×0ßDEµõÜØèÜéË/Ç3pBGrœŒçµZ·­ÖY«UD¥sl Kèa%À罺ƒ ÿ”½:ã©DÅqZšjŸ’õÐm—’›Ö©-HDkü¦š“Ü•{'IQËÚ'\#Åû„•l pÄûµçâV^˜çâÖ£a·8Ì(„=k ¤ê]eë“j(Cɰ¾=‘'A¬¢ÎP¶ø}?Ãâ{ëA|sAþfCMInçÀªžR)M°Wï ½ÈExK¾ƒäÂöÈqn¾ÇqÚ)SF±<ø:–ý[‰úé` x“¶§/òn¿rÒ÷€¯ØúxCñöãi±^üô@¢›égõÄèfo¬sË„È#¸zz†ä† °×†¥›UdÍxÎâ|]}ÿɺYWÕÕwý³T—Í`!ž¤Þ—¥uã–à5Q2‰ß1á& ¸pç¤Ñ»BU[U:e(ù8” !s3¤„·s3»9ªtVLìëô³@:–Åžóè4÷¤ß¶þ‡øÿ?PKxºZ<ûd³1*Ý;IAR-STR912/examples/GPIO/.svn/text-base/Readme.txt.svn-baseUT ”LjK”LjKux êëµUÛnÛ8} ˜Ç¶HäØ{ik`‰¶‰Õ%KÒ ò´PmÚ&*‹ZJÎåïwFrãdë}X K†Ì™9sÎhf<úpæÀ»ø=ÄÅͽó…†ÉÕÕ¯ tfWޙʬ:ïj»já\h|€™­ äåÞÀË™‚4åzo¢î©#vèvÎÃë3…,N€5MeWeg] Ú”{rNÊÎ ¨o;m{0kr¾úe4þ4ê©MáÖø–"ÆÑU`Ú•·Mò‚þúÒm Û˜ßˆøS¹o*aà>DeaÛÎùç)=#åÉ„(|CyòÍöó÷rÆGÛ¿Iýë‡ÉÏ5¨b¦ï˜äp·ñ„‚Y!a¾ ËcEžÞ™¦1¦¸‰Èç/•.2.ÁÝ ½À^ê "ÇðŒiQä ùœÉþ IáÉ2Ö   —}*´e  Pì–ƒúîÁ„ –©¾ Æ±,xÊc-‹\Ä Ô‚¥)ä…†k ž& vò’å÷‰Þ„%òá&Eš¹â,Q¹`)$,cs®˜í†¼ Äé [ Ef²Èˆ+"ˆ¦Ú3PK,ÚK YžŒI°T2–p¸¾?U‹"È8kàvªÁ2‘óIŽEý]ޤÈÜ“|[ÉßÑ£0ƒã¼Àú4OaðÛ÷' ôζ`Žîwc „G¿{Oó¸sÐ98´æ4šA‡ñee½ƒ­}èV®ÞØíÁk¢5L½2„«*¨Ìº%D‚ø J€n»Å[°5âà÷ÆÖWJå\‘¤0H¬Ç½†ƒJØ©»öœ¦0ø<~ú“²G;€Ô~ñ%FÄoØlpù ~¶‹V´zzh:Ø¡Š ç7 ö¥­+@†ÏTž­§uGŸEé×DÜÔ—í ­12‚K"P#{(Q|cëWâá7mƒ6,\õ i2Ž¢OHSiùy<¹T¿_ &á‹ÃŒï±=!$pzöŸ™Ã@à ókãÉe_~^ØQ<:ÿõžÝö\Øk×[7®ªÜ£­·0%— uo8¶Ç ûLËý—¿"ž'4C3‘òa™ý PKxºZŽœ&1 •Iq*@ø$ Š%Œø,ð àd°†’DwàñѱVûK3bˆÆ‘`¤¸sNðHH&¬Ý„®6E Ö¢ hÐn;áBoaœÄaÓ8d˜ÞðA¤Ø´]IäYí–  Bâ1Ýíu 3Z³Ym #IxÄ<ÜP°IøE_„¢t;‘¯;ùëO´u|¤?ïòe±PK˜Íô«Œ"Æ3|ÊïЕÊðYx¤JøVV_!/à~»\ª _Üu¹Pðçßä…š—ëµ*j¨,ËÕªü–_`¥ÙÚš–õÂ>zÎf¦{™ þ^a6Ô%dE¡VvWÀé ¸]³®ÀyWà¢+pÙ¸úÁ£g!Ú„šöl”_íƒ^ç ×=è=ë•8.qÜH즺åéP*„öRáÈJ…PÓ¶M‡c:\ÓÑߤɔÇz¬½¦†i¶cØ®aŸö¹a_ö¥a_ö'ÃþÜ»ÓDží¥´ÿ8ìˆØKöH24…ý’R’Ⱦç¸Ç¤¡oöóÆãö7EL‡ö¡¦m›Žþ™LI4´BûÿˆyƒÏBûÇ„7<&¼I/w«B¨iÛ¦ÃéçÀ"Ö}zÌqŽØöÖcüÖ³ðÈfy1£ÕÓ¦ÎV°¬Ô_[UÌŸàïlµUðþwÿßûøö^³»Ií'ï½Q¯8Ý ÛÖCH‹|ù#=?¿v·»†ðrµ“{¹ˆêçOüÈ"O_sÇ<`ϽþPKxºZ< $8,=9IAR-STR912/examples/GPIO/.svn/text-base/91x_it.c.svn-baseUT ”LjK”LjKux êëÕ›]Oã8†ï‘øG³73#Digö‹»¸­¥|”ĥà ©™F*I×q`Ðjÿû;šÂ^0k9êEeû=>ïS÷8±ÚÁçW.øè~7š]Æt2e0:9ù ä™(ùšgR”EžUðšôðà3Œó5‡0½åðtŸÃW¹<ÎÔ§–«RÀîu ë³Ù¬ó,•yYãé­쥒cHQI UUó¥|òë`øÇ@'v \TJ1<>Ñ^e"ßè ÏÑÓ¼ZH.D½‘pq—gâ²–yÁ«c¾ó¥RÁ‹­ò n‘,-àšC]¡YÂR§‰ éz rÅÿȸꂪ¾Û̶aä*•p›>@™eµ€û\®ÐÆ>C;ÞŽ^¬x8]þdx…£xQ陪òFÞ§‚cœûZ¤E¶‚´–å-FÉ0Ÿ‡ÇYK=>+…àÕ¦,–yñ¶™Aša»nÙ{žíI)¶AÖeºD˘®4sAðïy…CŸq¸)×ëò~'|*AņßnäÃQãU1¼¹T9-•êq’x«´X®qI €%l8.…麟?çø³>ò)Z+Åéz«t4R«ô÷Ö*=ö}}¹‚‡Û¾ÿZÝ?!c6%0‹IBBI4f '&°˜Rw 4qÃdN='t D¡  pj¢ êÑpî;RňºqD|â²8 ©›@2u|ˆÁ)ñ=ð©sæÓ /Á£1Ž>ÂÉšw*"v¹Q˜ó9š§Žž8²õ³Íp JFpýÆyLåaGf‡Êu¼1$säö„Ñ ½Aã æ Àñœ]îCEcŸVÃ0d ‰‡†b‚”ð…m!&¥xê$Û(ßQ~É‹l]ã×íöˆ¯> Þy&½uÔE¦ w³}œÂ¼Xò,Ë«ióµ~¥ÂŸn‹ì£öIƒßöJŠºi}ªºìÐbSËÝí', ®?ÂZîöÙNû/PKxºZç0dÚŒ‰m”j–å°yÎÁ1-0‹DÆ‘’Y ¡ˆæ$lEJ `^(àEQŠ ·nu~mUnÃµÈ Òè4Û•‚(â\.*t4‹<»Ï£9Üe“'”|çC¶²PYþtNÏèc·K>~Úò±»âý´ëgÉû»ØþÃ¡Ïæ†x½ðÆðÜ ¸9@Ïó¡?â–áš <×¾ƒ;!êx×ÜânÌQzó‚»áá§bpÕ#äž >ë~EEƒÜ'ukd† ç[̯L!ÏЃÀ¸fr‡5«vAƒŒì𔺛¾Çlf†¾çr3€``Ø6¸^W ̶ÀæÆ•Í*Hý‹û(}JXÜÕ/hÝtöÇ#ç† –á}èÐÚ¤Ð0m¶Ï ¡ç{ùJ€Rî¼#LÚ:‡†kµtH0 8†Åàêö%[¤AL,íÛK¾Öà.³0 Ÿa’xEsÑ)bWNng²ùîýѪ×êµú•ÆI9œ|óHj<øð[çqœÈ»æìÃÒÒ0—4îêi!&bzˆA²´ˆh2Eð â<ÂexXJ¾A|ˆrÝ%‡$šúCîy*Uˆy´0kB ò2Ve..¶,OË4®ö%nH•Qöß샶üÉ æhlféTÞ—yµËD>¾ B!%Ör–H¢§Fù± ©™•©"‰½n˜Ö;ÏEuí2¦o9}»í¹}¶ožjÊÓE©6/>7K1¼Rmr^¾ÀŠ¥»Œ÷=˜(™ª*ŽÆq½ö•ªu$§4†»õépŽîÊû†®å‘H'rªéôŸêî˜öïAVæ±ÐÐXÇ^`_hëdTÀWˆ P³j6£2Q'YüŠJ[·)QÙ’²Èò H¢Ž‘ÜALìÃw`(0ï3‘G Ü•¡}™h=¸„ޤ?_u§¨ìO…sm¿iÖ–·{xÝ4L°Åû×í¹1®– ùlÐóGÞÝ¡mjI™ Ý{—Zf(SÝ;¯ª¡Ô†ÂØH’WÅiu¬äéy<,‹Ù°LxUÍH”ÈSÞËêUû…Äζè@OáÇ] h€?gøÙèÓóWÝe˜ýFÁëõ “U±–À7¹Tb Ü~l·«v[+ò´¹ÂfÃ¥³ÖÓ+¨ýø©‡gexÃŽûfHíÍVžëµgÝOï{öî¦fÞ»¨ÖCQìNEó;ß\¯Ý;Ë]†Åa)]¯UtãqUÀi7†Wzƒ˜ñrÕ¬ÄN™K_”ºCþ¿ÂU³·XºÏ ˆ–­¦ä\ì/’¾[Ï¡XˆXN¥XíÜ•vxz¯fÍ~,+I”ϸ›ÚËyfyƒÞµÔò~ &|>;£‚=ï/Ö[~â2×¢Ïõ·ÙÒÏzí/PKxºZ<îâxÒÎ)IAR-STR912/examples/GPIO/.svn/all-wcpropsUT ”LjK”LjKux êëÅ’M ‚@†ïû+ìè¤!~Ü‚"D¨°è*‹®%éî²»~üü4B¼éAò:3ð<3e#YS¿I|ã×~M„ÌÕ+Q ‡æ˜º¾`LAÂy¥ˆT°é*ÐÍÁβA‰Š¾XeL”‚}¤ßî‘gZ@Z\ò‚H8]ƒ :žèÉsf¦AáØÝ.†Ú”8§F2ÍwÜÅø?äh¾Æþükœ–ÄP­šá`-æ0ÂöžÙÆ £™ñú«Å;J#]#t¸C®æüã‚´7øPK xºZ<$IAR-STR912/examples/GPIO/.svn/props/UT ”LjKʈKux êëPK xºZ<"IAR-STR912/examples/GPIO/.svn/tmp/UT ”LjKʈKux êëPK xºZ<,IAR-STR912/examples/GPIO/.svn/tmp/prop-base/UT ”LjKʈKux êëPK xºZ<,IAR-STR912/examples/GPIO/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ<(IAR-STR912/examples/GPIO/.svn/tmp/props/UT ”LjKʈKux êëPKxºZç0dÚŒ‰m”j–å°yÎÁ1-0‹DÆ‘’Y ¡ˆæ$lEJ `^(àEQŠ ·nu~mUnÃµÈ Òè4Û•‚(â\.*t4‹<»Ï£9Üe“'”|çC¶²PYþtNÏèc·K>~Úò±»âý´ëgÉû»ØþÃ¡Ïæ†x½ðÆðÜ ¸9@Ïó¡?â–áš <×¾ƒ;!êx×ÜânÌQzó‚»áá§bpÕ#äž >ë~EEƒÜ'ukd† ç[̯L!ÏЃÀ¸fr‡5«vAƒŒì𔺛¾Çlf†¾çr3€``Ø6¸^W ̶ÀæÆ•Í*Hý‹û(}JXÜÕ/hÝtöÇ#ç† –á}èÐÚ¤Ð0m¶Ï ¡ç{ùJ€Rî¼#LÚ:‡†kµtH0 8†Åàêö%[¤AL,íÛK¾Öà.³0 Ÿa’xEsÑ)bWNng²ùîýѪ×êµú•ÆI9œ|óHj<øð[çqœÈ»æìÃÒÒ0—4îêi!&bzˆA²´ˆh2Eð â<ÂexXJ¾A|ˆrÝ%‡$šúCîy*Uˆy´0kB ò2Ve..¶,OË4®ö%nH•Qöß샶üÉ æhlféTÞ—yµËD>¾ B!%Ör–H¢§Fù± ©™•©"‰½n˜Ö;ÏEuí2¦o9}»í¹}¶ožjÊÓE©6/>7K1¼Rmr^¾ÀŠ¥»Œ÷=˜(™ª*ŽÆq½ö•ªu$§4†»õépŽîÊû†®å‘H'rªéôŸêî˜öïAVæ±ÐÐXÇ^`_hëdTÀWˆ P³j6£2Q'YüŠJ[·)QÙ’²Èò H¢Ž‘ÜALìÃw`(0ï3‘G Ü•¡}™h=¸„ޤ?_u§¨ìO…sm¿iÖ–·{xÝ4L°Åû×í¹1®– ùlÐóGÞÝ¡mjI™ Ý{—Zf(SÝ;¯ª¡Ô†ÂØH’WÅiu¬äéy<,‹Ù°LxUÍH”ÈSÞËêUû…Äζè@OáÇ] h€?gøÙèÓóWÝe˜ýFÁëõ “U±–À7¹Tb Ü~l·«v[+ò´¹ÂfÃ¥³ÖÓ+¨ýø©‡gexÃŽûfHíÍVžëµgÝOï{öî¦fÞ»¨ÖCQìNEó;ß\¯Ý;Ë]†Åa)]¯UtãqUÀi7†Wzƒ˜ñrÕ¬ÄN™K_”ºCþ¿ÂU³·XºÏ ˆ–­¦ä\ì/’¾[Ï¡XˆXN¥XíÜ•vxz¯fÍ~,+I”ϸ›ÚËyfyƒÞµÔò~ &|>;£‚=ï/Ö[~â2×¢Ïõ·ÙÒÏzí/PKxºZŽœ&1 •Iq*@ø$ Š%Œø,ð àd°†’DwàñѱVûK3bˆÆ‘`¤¸sNðHH&¬Ý„®6E Ö¢ hÐn;áBoaœÄaÓ8d˜ÞðA¤Ø´]IäYí–  Bâ1Ýíu 3Z³Ym #IxÄ<ÜP°IøE_„¢t;‘¯;ùëO´u|¤?ïòe±PK˜Íô«Œ"Æ3|ÊïЕÊðYx¤JøVV_!/à~»\ª _Üu¹Pðçßä…š—ëµ*j¨,ËÕªü–_`¥ÙÚš–õÂ>zÎf¦{™ þ^a6Ô%dE¡VvWÀé ¸]³®ÀyWà¢+pÙ¸úÁ£g!Ú„šöl”_íƒ^ç ×=è=ë•8.qÜH즺åéP*„öRáÈJ…PÓ¶M‡c:\ÓÑߤɔÇz¬½¦†i¶cØ®aŸö¹a_ö¥a_ö'ÃþÜ»ÓDží¥´ÿ8ìˆØKöH24…ý’R’Ⱦç¸Ç¤¡oöóÆãö7EL‡ö¡¦m›Žþ™LI4´BûÿˆyƒÏBûÇ„7<&¼I/w«B¨iÛ¦ÃéçÀ"Ö}zÌqŽØöÖcüÖ³ðÈfy1£ÕÓ¦ÎV°¬Ô_[UÌŸàïlµUðþwÿßûøö^³»Ií'ï½Q¯8Ý ÛÖCH‹|ù#=?¿v·»†ðrµ“{¹ˆêçOüÈ"O_sÇ<`ϽþPKxºZ< $8,=!IAR-STR912/examples/GPIO/91x_it.cUT ”LjK”LjKux êëÕ›]Oã8†ï‘øG³73#Digö‹»¸­¥|”ĥà ©™F*I×q`Ðjÿû;šÂ^0k9êEeû=>ïS÷8±ÚÁçW.øè~7š]Æt2e0:9ù ä™(ùšgR”EžUðšôðà3Œó5‡0½åðtŸÃW¹<ÎÔ§–«RÀîu ë³Ù¬ó,•yYãé­쥒cHQI UUó¥|òë`øÇ@'v \TJ1<>Ñ^e"ßè ÏÑÓ¼ZH.D½‘pq—gâ²–yÁ«c¾ó¥RÁ‹­ò n‘,-àšC]¡YÂR§‰ éz rÅÿȸꂪ¾Û̶aä*•p›>@™eµ€û\®ÐÆ>C;ÞŽ^¬x8]þdx…£xQ陪òFÞ§‚cœûZ¤E¶‚´–å-FÉ0Ÿ‡ÇYK=>+…àÕ¦,–yñ¶™Aša»nÙ{žíI)¶AÖeºD˘®4sAðïy…CŸq¸)×ëò~'|*AņßnäÃQãU1¼¹T9-•êq’x«´X®qI €%l8.…麟?çø³>ò)Z+Åéz«t4R«ô÷Ö*=ö}}¹‚‡Û¾ÿZÝ?!c6%0‹IBBI4f '&°˜Rw 4qÃdN='t D¡  pj¢ êÑpî;RňºqD|â²8 ©›@2u|ˆÁ)ñ=ð©sæÓ /Á£1Ž>ÂÉšw*"v¹Q˜ó9š§Žž8²õ³Íp JFpýÆyLåaGf‡Êu¼1$säö„Ñ ½Aã æ Àñœ]îCEcŸVÃ0d ‰‡†b‚”ð…m!&¥xê$Û(ßQ~É‹l]ã×íöˆ¯> Þy&½uÔE¦ w³}œÂ¼Xò,Ë«ióµ~¥ÂŸn‹ì£öIƒßöJŠºi}ªºìÐbSËÝí', ®?ÂZîöÙNû/PKxºZª‹x¹PK xºZ<IAR-STR912/examples/RTC/UT “LjKʈKux êëPKxºZ<3ÈjÜ<IAR-STR912/examples/RTC/rtc.ewdUT “LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[-a»Ñ2N¤O%éx“I!À‡O俣Ã,¥®C(¨C2… ŒÁ¶rÚ¾}:¹8oÄ _äêC‰«Ìšf»kécîP¼HÕá raI]^‘}*Ò.9k±ÏÒAéÌ`•˜bE$¥YpÁÌüùõÄ­ƒJΆÿJ¿—™Ggz}ìÈ„Mì³Ü»Ž˜¾h–nh€¹‹ìËÔvš`ÎU€ìO† ŒÎ3œ1…sÈ¿U° ë˜!“9ó…à:"?©„gVÝ$âÉ,ÜpåÏ?@<ð)àãÊ€áÈ8ºñkÔíj2ÉaˆæÌC$‘/+¨7 Ò!“¶¸+0%åMÁ:fSˆpp¬©LiÅѦ þ,ñfÔÓ¬žqnZR"NGuÄùÊÀϘԤ‚ý0yhÙC x¥^zè9^ÄÑ -%óÁœ¿{Öè•£ q`±R$óÝ¢0_´}Q‘Ç]ÀNƒÎ3•¼š,k‚“z=Ï+yÕ£õ­ÕzÝjU±´;.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò×vÒ:<÷>½ìm½3JncXc¤¶$ ­ñ‹j^v•ð£3ÝPõ`tMJŒ¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Fw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ëµe†½úÍ8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òŸn÷•¾®>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHú’4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿã\~Ùú·½éÿPKxºZ<1d¢V'LIAR-STR912/examples/RTC/rtc.ewpUT “LjK“LjKux êëí\moÛ6þ¼ûBÛoëü’®X xÅiµÚ±a;Ù0h‰–ÙʤFQ®³_¿#%ù-–솢 sÝ@_Þ‘<Þ=¤Üùm½ ­æ1aô×gíFë™…©Ç|Bƒ_Ÿ‘˜ýôæÍë·?µŸýöî‡ïø¾qö {n,«3'!¾K‹¾kwš»·*ÝctN‚„#‘?‚‡-ñ»+ž$ñsCízxû ÕûÞa¸³ Q±ˆm]MŽ*È÷ÈlŒCXŸ.påM‡huÔÔÓžÑä꜡}cK,°Eåè­=Ábs•æ4´x*Ÿ’‡qÛ°n˜ÊU[„ ÌçÈÃ/-'{öj´¤²™aŒ[qEŒ •¶LBAfÇPÜŠ8Ô1·õ­ØCtþR]B¶^[ó!¡²Å‚ æëοÑÄQb–¯l/&ƒAï£;™^¹£÷îs};M‹No”¾ íi2äÌO<‘¹5ÅÍù¹ñªmk£õP,Æ0.ýˇs_7Ú­F«qq¡=CRO¯ObŽFIˆcÉÑjµÚòÓ’_õþoþd)êF~[­ôvSb›-˼}Ôjí.øT£ˆ.E³+u˜[v•]=c±AçŒ>˜ûÔüu}"ú˜&ÅhãÉèmûâú»ñÄÊ.õeí±/=¼Â¡›[$½µ¼ÿmtù÷C˜¢ÆuœÃ(éqDsñ„ˆæmÝã\á9¡Ç§jª=Í>sœ!ÇÅz×°V˜™‡-—˜Š*ƒêâLÂÈ Ë1­6Ò§xÉ(ñŒj-EÂqŒ‚²ñV Çuh`Æ,áefH(]GFx‰øg£Š»"(ƒ Ç¡“  “JcäÄ)˜oÃ(]Î7ˆ!É Vzm.Ì‚õ, aeU,Ï“)‹ô£¯S¹z¹tÎÌÉëžÃiƒ€îÁL*ú‚¬G•; ì•L)mJiËàxï!È L`Ô¬e“€b"B2ØOŽ3Â'„c‚‰‡Èì ØÏcïq›^4¤¡µ9Kh \»Ötž1å&B{´_GI 8e Ë]•×n¯;½¼±ûÝ VÉü*&ÓªóŽf)“ò#Ô ¬.õ¤̔ëJ“ ¼ÿ™=M @LNLn¦8NÖµ’É»(™!ÃÑà÷”Çk4ä—ä#âþHýUDøÐLëo“kãkxÍ ,¯Ç`0JyĆÀkÝMBWñ:_ÿ\ÒÛÚ¦}c×¥h|÷H(ºÊ¤gcpÌŽî5Õ³´µp[Ä4+gáä~©›’³kˆ÷ì4þ1à ,‰ +"J6Au‘úÈãL:ïk²îà·¥ÿ›²4按ùc zm bPFjV0ÿ·kÀ(±ìºÏSíU¯=}B1‰a-¼{ƒ±¢mšÿ·‹H¥ŠÚ/«7b(R"Q›ÇI;ƒ vºÚ,@w•T`é»kìÜݤáƒÇØ7¨$I̘Ý7¢÷0 ÄÂpD²*Æx£ 2A³q„¼ÒÉ÷Fwzÿ9Âsƒ&JVÒÌV‚¢¢'úè°måÂ$F!j ÝìzØ=»vzÏ®ú…UqI„Úý2½õ° %Ï”ô˜ö”í”q¼e[ е)± •ó9ömŒùi\íópkêÎ Õ²‡VdŒ~\þî †` ZO8T718™ÝR'¢¿áã¬æ‰æ­È¥¦ZEOBÔ—.`z>ÓdÜ"¥š}rXôP9ñ´iáÜŽ'ƒS¼ÜW¼ýƒ×BÒJ0Ë¡7vnv²xK?ýBz~¥'Â¥ë úC½‰ÝüjÐ[·we;wps¹}¾ò"F€„>¨fs¹›Ìb±Iß\ë)Ïí¹7ÿFÑ…ô¹Gfî ÝÖ47kÿãðYm°}K–í)”zUHÚ½Ì}%`çXY.¼K´·’$Üæ,Ñ)¨MàH´Gã‡åŒ…æÜ*4B_Ò—‹Œ.WûP©`uá@žâ­ ÍIP²RÍ@4K³*Ô2ÕÕG‘Ù󵩽eA=(.%‚ ü£Þ‹2×ׯ¹NnÚWt‡)6¿RyóÓ¡@%–N6‡'Nd)ÌïÕ‹.ëéuÏho^acN,ÏU ÕtÒ\aåÍåùAÃÆjÂ1v rÕ‚#7 k*=oYNv€>NÏv²ã{ìމÛŸwȸ´ZÎ3gòà­µ ÉœµÁ `©Åóµ}ŸÈt¢aeæKÀ³€£e— þÐC³²CV• —Gx¦ÑG-Æ›N âÓ(-0…güœê‰a½=r>¸wÝê#û£”¢ÑÈ>k¡Šƒ ŽÝ Æ<™¹AR±v1ÎóçÏos¿ûpgl´\VÀ0hæã_=êœ%Qž_ÆßÒS?§tÐÐGn]Zî^útADXcÿøAúLO¬/$³*«“¬I…ÕÅ^R\]§¹Õð1eKÓ“DOÐvZP5€ÀÐlĺíT¸c]\ážH»0‡«¶‰=ÝìVSVt‰=^Pò±ù}ÉÿPK yºZ<IAR-STR912/examples/RTC/.svn/UT •LjKʈKux êëPKxºZ<¼$,Â¥6$IAR-STR912/examples/RTC/.svn/entriesUT “LjK“LjKux êë­Ó=Û0 à]è_±MQßÙŠN]ÓL·EårMÃVzùùUzE€nFëw B~@R„ȧYhDñZë´ì†¦éVy©ýòsì—ëm&.×ùÈýÈuhßæëµ>‹†:߯Ãt޵]–áëç}÷í°¾ÇËtæeؾüÛí¢BºCu¸3°“¶wư/B¡oñÂËqæq‰r:³øøg«ìÐÀídØi×Ãï¼')+R†<+…:PQ%TP%ùð_à?‘AÓ`—x{Zç*FÖÈ$‹””vì£#Ë!)•¶pi©ä³_y+&ÌЄÖôP¤âP;ã±$£Kئ_Fyû„½¯ƒiº ³v–r”Èû`‘´ÛÀ܃Å1_¸¯÷ºR­jKæ² *IôQðQšlm2~™•ÐhAÞ¿Óu,ýë:šA¯1›³ÊÚÓâT{ è-x2e š²m+>h§ºvý&Ã.ªì"±*m½¨Ø²D¢m¦iÕãYþPK xºZ<'IAR-STR912/examples/RTC/.svn/prop-base/UT “LjKʈKux êëPK xºZ<'IAR-STR912/examples/RTC/.svn/text-base/UT “LjKʈKux êëPKxºZ<(ø™3{7IAR-STR912/examples/RTC/.svn/text-base/rtc.eww.svn-baseUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦¨$Y/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKxºZ<1d¢V'L7IAR-STR912/examples/RTC/.svn/text-base/rtc.ewp.svn-baseUT “LjK“LjKux êëí\moÛ6þ¼ûBÛoëü’®X xÅiµÚ±a;Ù0h‰–ÙʤFQ®³_¿#%ù-–솢 sÝ@_Þ‘<Þ=¤Üùm½ ­æ1aô×gíFë™…©Ç|Bƒ_Ÿ‘˜ýôæÍë·?µŸýöî‡ïø¾qö {n,«3'!¾K‹¾kwš»·*ÝctN‚„#‘?‚‡-ñ»+ž$ñsCízxû ÕûÞa¸³ Q±ˆm]MŽ*È÷ÈlŒCXŸ.påM‡huÔÔÓžÑä꜡}cK,°Eåè­=Ábs•æ4´x*Ÿ’‡qÛ°n˜ÊU[„ ÌçÈÃ/-'{öj´¤²™aŒ[qEŒ •¶LBAfÇPÜŠ8Ô1·õ­ØCtþR]B¶^[ó!¡²Å‚ æëοÑÄQb–¯l/&ƒAï£;™^¹£÷îs};M‹No”¾ íi2äÌO<‘¹5ÅÍù¹ñªmk£õP,Æ0.ýˇs_7Ú­F«qq¡=CRO¯ObŽFIˆcÉÑjµÚòÓ’_õþoþd)êF~[­ôvSb›-˼}Ôjí.øT£ˆ.E³+u˜[v•]=c±AçŒ>˜ûÔüu}"ú˜&ÅhãÉèmûâú»ñÄÊ.õeí±/=¼Â¡›[$½µ¼ÿmtù÷C˜¢ÆuœÃ(éqDsñ„ˆæmÝã\á9¡Ç§jª=Í>sœ!ÇÅz×°V˜™‡-—˜Š*ƒêâLÂÈ Ë1­6Ò§xÉ(ñŒj-EÂqŒ‚²ñV Çuh`Æ,áefH(]GFx‰øg£Š»"(ƒ Ç¡“  “JcäÄ)˜oÃ(]Î7ˆ!É Vzm.Ì‚õ, aeU,Ï“)‹ô£¯S¹z¹tÎÌÉëžÃiƒ€îÁL*ú‚¬G•; ì•L)mJiËàxï!È L`Ô¬e“€b"B2ØOŽ3Â'„c‚‰‡Èì ØÏcïq›^4¤¡µ9Kh \»Ötž1å&B{´_GI 8e Ë]•×n¯;½¼±ûÝ VÉü*&ÓªóŽf)“ò#Ô ¬.õ¤̔ëJ“ ¼ÿ™=M @LNLn¦8NÖµ’É»(™!ÃÑà÷”Çk4ä—ä#âþHýUDøÐLëo“kãkxÍ ,¯Ç`0JyĆÀkÝMBWñ:_ÿ\ÒÛÚ¦}c×¥h|÷H(ºÊ¤gcpÌŽî5Õ³´µp[Ä4+gáä~©›’³kˆ÷ì4þ1à ,‰ +"J6Au‘úÈãL:ïk²îà·¥ÿ›²4按ùc zm bPFjV0ÿ·kÀ(±ìºÏSíU¯=}B1‰a-¼{ƒ±¢mšÿ·‹H¥ŠÚ/«7b(R"Q›ÇI;ƒ vºÚ,@w•T`é»kìÜݤáƒÇØ7¨$I̘Ý7¢÷0 ÄÂpD²*Æx£ 2A³q„¼ÒÉ÷Fwzÿ9Âsƒ&JVÒÌV‚¢¢'úè°måÂ$F!j ÝìzØ=»vzÏ®ú…UqI„Úý2½õ° %Ï”ô˜ö”í”q¼e[ е)± •ó9ömŒùi\íópkêÎ Õ²‡VdŒ~\þî †` ZO8T718™ÝR'¢¿áã¬æ‰æ­È¥¦ZEOBÔ—.`z>ÓdÜ"¥š}rXôP9ñ´iáÜŽ'ƒS¼ÜW¼ýƒ×BÒJ0Ë¡7vnv²xK?ýBz~¥'Â¥ë úC½‰ÝüjÐ[·we;wps¹}¾ò"F€„>¨fs¹›Ìb±Iß\ë)Ïí¹7ÿFÑ…ô¹Gfî ÝÖ47kÿãðYm°}K–í)”zUHÚ½Ì}%`çXY.¼K´·’$Üæ,Ñ)¨MàH´Gã‡åŒ…æÜ*4B_Ò—‹Œ.WûP©`uá@žâ­ ÍIP²RÍ@4K³*Ô2ÕÕG‘Ù󵩽eA=(.%‚ ü£Þ‹2×ׯ¹NnÚWt‡)6¿RyóÓ¡@%–N6‡'Nd)ÌïÕ‹.ëéuÏho^acN,ÏU ÕtÒ\aåÍåùAÃÆjÂ1v rÕ‚#7 k*=oYNv€>NÏv²ã{ìމÛŸwȸ´ZÎ3gòà­µ ÉœµÁ `©Åóµ}ŸÈt¢aeæKÀ³€£e— þÐC³²CV• —Gx¦ÑG-Æ›N âÓ(-0…güœê‰a½=r>¸wÝê#û£”¢ÑÈ>k¡Šƒ ŽÝ Æ<™¹AR±v1ÎóçÏos¿ûpgl´\VÀ0hæã_=êœ%Qž_ÆßÒS?§tÐÐGn]Zî^útADXcÿøAúLO¬/$³*«“¬I…ÕÅ^R\]§¹Õð1eKÓ“DOÐvZP5€ÀÐlĺíT¸c]\ážH»0‡«¶‰=ÝìVSVt‰=^Pò±ù}ÉÿPKxºZ<3ÈjÜ<7IAR-STR912/examples/RTC/.svn/text-base/rtc.ewd.svn-baseUT “LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[-a»Ñ2N¤O%éx“I!À‡O俣Ã,¥®C(¨C2… ŒÁ¶rÚ¾}:¹8oÄ _äêC‰«Ìšf»kécîP¼HÕá raI]^‘}*Ò.9k±ÏÒAéÌ`•˜bE$¥YpÁÌüùõÄ­ƒJΆÿJ¿—™Ggz}ìÈ„Mì³Ü»Ž˜¾h–nh€¹‹ìËÔvš`ÎU€ìO† ŒÎ3œ1…sÈ¿U° ë˜!“9ó…à:"?©„gVÝ$âÉ,ÜpåÏ?@<ð)àãÊ€áÈ8ºñkÔíj2ÉaˆæÌC$‘/+¨7 Ò!“¶¸+0%åMÁ:fSˆpp¬©LiÅѦ þ,ñfÔÓ¬žqnZR"NGuÄùÊÀϘԤ‚ý0yhÙC x¥^zè9^ÄÑ -%óÁœ¿{Öè•£ q`±R$óÝ¢0_´}Q‘Ç]ÀNƒÎ3•¼š,k‚“z=Ï+yÕ£õ­ÕzÝjU±´;.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò×vÒ:<÷>½ìm½3JncXc¤¶$ ­ñ‹j^v•ð£3ÝPõ`tMJŒ¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Fw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ëµe†½úÍ8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òŸn÷•¾®>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHú’4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿã\~Ùú·½éÿPKxºZ<5íÁÐJ:IAR-STR912/examples/RTC/.svn/text-base/readme.txt.svn-baseUT “LjK“LjKux êëµTMoÛ8½ðxÇ6ðú#ûm F¢-úÈRt‚œ U¢m¢’eP’þûJ©›¶ÙÓ¶„gÞ›7ÏžY\½rð&x‹ »}b)\/— W‰)m«k]:ÛžLÙá5èÕÕtr…©5ҢѸœ5¤.ªFÏÝ“ó)¬wÇÖâåY# B°ó¹6eáL{‚ÒEã“ÃÂi"µƒèº^W>yùûbõ×b·Æ¶G¬æË »Òšó@raùØîáŽRÐOEs®5Á~øñR"Ó¹Ö~Zû;I¾¾ö’ÿüJòõçØoß·³zŽýW«?^2TÄq+yÎS…<Û¨{&9î#D96™Äv'B–Y?€‰$S„ÉîD(Ò-‚]®²„Ë÷BEDdûH 0%²’o™^©žî•S2r9T¢X•!gwJ$|NlŒÊ>ßÅjæÿ˜"y d–Š G±8Fš)ÜpD< vó‘¥…¤ì•oÄI‘ KsþÏŽÚ,Fȶåc¾Ø-åy%ÄcÏRä¾Ì’Á5bP÷tä;2ìâKÃÅØv9GÂBŽ›‡Nb¤øÖ©Á¾T1‘òº‘œ ¢ÞR’ä­$~íâüçü§>N ª/Ã4¼ûþø\u4ÝçñBÙžöæÐ[Ý]&Ï™FÏ*?ÛÅ©BQ¶™{ÜýQŸ†¤á mYö¶Ã›Õ&šªÃÞ¶ÍÆj`z;CMWšŒí­È~¯ðhê+¬ƒké;j=¥5FSé9œ>¹îµ¦“¿WOï}•ù±ù` ÏEǵ7~q4…9ÍËqÍ$tÇÙ¶ëW—'0nŒ ªdmv8R»5M±—µ^\ßi÷ŠéDЦ²•¶>¥)>êÁ•gv<¶öã ŸÚMO›±j‡è¾­ëöÑœX{þ_ ûÑÌËž›N¯ýºÿsëÿ PKxºZ±š¹žUùCC²cò»*«A‰È?oª¦Æ ÂÿòRü|]—Õã•úŒBG ½|&ÔÙÆÎ^nÂ~ŠumðP,| “„r àñHÜ„ÂÏ\‡QœÀ8e‰\ qÜa!"0'¾f‹Æà¦\Ä!M8Ü0á+N7n,ÂôGÐ1I/d‰J÷RWpAœx4iJa,'× é Þ$ài Þ©ãÈÜ$¦uEGÌåÀ}ņ|x02 hCI¢[ðX‚èwX«ý¤1䯧ŸRÜ9#x$$cÚnBU› PiQnÐn;a\ma”ÄaÓ8d˜Þð€§Ø´]Iä Ú-AÊ)„Ä£0¼Ýëf´z³ÚF‚°ˆz¸¡„b“ð}ŠRílD>ïäß?уã#õ÷*_s¹€éT½Ê(b4ŧü ]y!5ïñÑT ßÊê äÜm Yá‹»*çþÝà›<—³rµ’E õ½„E¹\–ßòâ3,[[s0زŸòŸ˜Ý½Ì'1ê6[oû²cí GV¶–miEü‹Ö£ÃtÜrv- þL†gݶ;¿§-ú€Ë:à³…¯™Û·*BuÛÒæb^HúC¨nOÝû¬(äÒê Ø]§+pÚ8ë œw.º—¿yô4d}›‚PÝž³â‹uÐkô:½§F‰£þGÄnª–ö¥B¨‘ Gv_*„ê¶¥;lÝáès“ÆwêìÍ0ÔLK³mÍv4ûT³Ï4û\³/4ûR³ßköãNaž;*‰¸k> ;"‰Bƒ í(„fI)I„é)î1)è ‡õÂc¿ð8æ¦ðIßcPݶt‡y"»$ê[ ¡æ¯0¯÷7 BÍCÂ÷ÞØHŜުªÛ–î°ÃhD»O>ÌÛ²ýcXx`³¼˜ºÕãºÎ–°¨äYÌák¶ÜHxýÑÿñfßÞiv·¨ýä½÷é§snYjÉbž/~§çÏ×îf×ð^¬öoqÛKØ¡nþÁïCyêŠ;b}êôOPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZøcͶÁq˜06mlKئ¤Ôœ[0,½Ï‰ËrÔ Š2ßüs†+·4 m¢L_­£MÉ µn«e{–OKzî„´!’”;wþ “VçPsŒŽZÌ|&šaÂàv›-BФJ–Ò¶ÍÑj–c¸ ÏÄ$YÒæ (š–"w3ÙþáõÑyýêõ«êJ¢¸X°~>zç®øàã‡Þ—yÌïÚ«ßËHÓŒ?ÐAO¶`ËcR¤#²ñ„µ‚gŒë¯ÁãRòŒñ!Ìxx“hb¤[nN‡_³~i0´À„†© š­yã0[“i4µÜ¹•p`î Ì= iôEVD‚|ŠË àýÑË"‰ä%»ÉR‘ÒÆ}·ügi¨LCõ<²ë@ë!å‹S´üÿð†/©Ä s0Ñï»+î[§}9Ç’_Òýûúl>Ñí?ü´È"¦§É’ß·*ãÜõõÓ>%«s6ËàOs+Ysa ˆâ4ú ¹DË ’ŒSüçiÖ $ëÍ=äÄœÐMö±ËÂØ>/®¡§›Rµé@AtŠ[rÏç¸çç¦C÷¢¤f •šìˆRßVX÷XÎD‰4,¿„‚Z+ÓB@º¤ËÒ ¸y*ñ8ɰ²€`ƒ¹Ÿ^¶{°DÉyºa†g<½yr¿'î®n¢¸¬•©Üj™UBdŒ »%]ÔÔvNUw[>Oyr ÕÓ¼×ßëdðŒÉú¼®<ÝBl ±ß›NÓuý4ŸùjZÄñ~g-,K0 ¡xÑØP²]ÈùIO«’™¯S_`Šé¸Ã‰¼p{È­ø¾&SN“íEø„Eôúpp`b†<ÀGÆ>+ðå!l ¬<àušˆÕ· 5Xy6 O,¤²÷²`éÙ@F,Áå“â‹ît‰¬<˜²×^ááÍé¸}8¸+ÏtÍ“B0 [/¶ôl€s†»¹ø/àÊs'róo3Ô‘žåÆ9š’Ås"S¨¨©wøLÐ y‹¬§ßN¦¬A¼è¾Ø!¸Eì/H%AÆîñ›e[‘²UeürQH÷F-+øË»»on±"xywv7ZQl÷©w€c‡bÿfɹ,kdiI»º#ÔŒãéÆá}‹~ mm4×”ÏN¼ˆÜʈKôÞRKo}½hÕ-e¯à²Ë(…~\Ñgaë'b1A"|lEþ\Šê€‹6iL°{Pì“3*ëi ç'Šªs¶{ºÀ¯É;ì¯{«HKfòªÒ*ŶzôÒ Þ€šX‹_wûüc¯K£Ïß¾-›Šº¢o2.Ø ¾¦ åÐ<ÇfYùÍ%[¯B|%Å_뷞Ξúïùž7ƒ¾P†–m–ßÿPKxºZ<ÒÔ¦%Èô(IAR-STR912/examples/RTC/.svn/all-wcpropsUT “LjK“LjKux êë½Ò½‚0Àñ½O¡ '‚°u0$H\MSJ$BÛ´åñ?¢› ëµÉïÉ¥³ $¦‰e‰¦—‚vIǵ©¤X´º&çY´$0¼k)˜R-rƒ0&0üƒUêVÜ@ÕK©‡M¶8åYìÀ{Ú¨šÈò-ÙwD#ó¸U$ýÉ®±ð&G¾¡•ðØzäJ‰ŸÝ‹éw/¾x;=oŸ<§EÃ=ìñwÁÚwVðQLjØï/LŠÒ»Nñ¥¾#*üë c— s ¸PK xºZ<#IAR-STR912/examples/RTC/.svn/props/UT “LjKʈKux êëPK xºZ<!IAR-STR912/examples/RTC/.svn/tmp/UT “LjKʈKux êëPK xºZ<+IAR-STR912/examples/RTC/.svn/tmp/prop-base/UT “LjKʈKux êëPK xºZ<+IAR-STR912/examples/RTC/.svn/tmp/text-base/UT “LjKʈKux êëPK xºZ<'IAR-STR912/examples/RTC/.svn/tmp/props/UT “LjKʈKux êëPKxºZøcͶÁq˜06mlKئ¤Ôœ[0,½Ï‰ËrÔ Š2ßüs†+·4 m¢L_­£MÉ µn«e{–OKzî„´!’”;wþ “VçPsŒŽZÌ|&šaÂàv›-BФJ–Ò¶ÍÑj–c¸ ÏÄ$YÒæ (š–"w3ÙþáõÑyýêõ«êJ¢¸X°~>zç®øàã‡Þ—yÌïÚ«ßËHÓŒ?ÐAO¶`ËcR¤#²ñ„µ‚gŒë¯ÁãRòŒñ!Ìxx“hb¤[nN‡_³~i0´À„†© š­yã0[“i4µÜ¹•p`î Ì= iôEVD‚|ŠË àýÑË"‰ä%»ÉR‘ÒÆ}·ügi¨LCõ<²ë@ë!å‹S´üÿð†/©Ä s0Ñï»+î[§}9Ç’_Òýûúl>Ñí?ü´È"¦§É’ß·*ãÜõõÓ>%«s6ËàOs+Ysa ˆâ4ú ¹DË ’ŒSüçiÖ $ëÍ=äÄœÐMö±ËÂØ>/®¡§›Rµé@AtŠ[rÏç¸çç¦C÷¢¤f •šìˆRßVX÷XÎD‰4,¿„‚Z+ÓB@º¤ËÒ ¸y*ñ8ɰ²€`ƒ¹Ÿ^¶{°DÉyºa†g<½yr¿'î®n¢¸¬•©Üj™UBdŒ »%]ÔÔvNUw[>Oyr ÕÓ¼×ßëdðŒÉú¼®<ÝBl ±ß›NÓuý4ŸùjZÄñ~g-,K0 ¡xÑØP²]ÈùIO«’™¯S_`Šé¸Ã‰¼p{È­ø¾&SN“íEø„Eôúpp`b†<ÀGÆ>+ðå!l ¬<àušˆÕ· 5Xy6 O,¤²÷²`éÙ@F,Áå“â‹ît‰¬<˜²×^ááÍé¸}8¸+ÏtÍ“B0 [/¶ôl€s†»¹ø/àÊs'róo3Ô‘žåÆ9š’Ås"S¨¨©wøLÐ y‹¬§ßN¦¬A¼è¾Ø!¸Eì/H%AÆîñ›e[‘²UeürQH÷F-+øË»»on±"xywv7ZQl÷©w€c‡bÿfɹ,kdiI»º#ÔŒãéÆá}‹~ mm4×”ÏN¼ˆÜʈKôÞRKo}½hÕ-e¯à²Ë(…~\Ñgaë'b1A"|lEþ\Šê€‹6iL°{Pì“3*ëi ç'Šªs¶{ºÀ¯É;ì¯{«HKfòªÒ*ŶzôÒ Þ€šX‹_wûüc¯K£Ïß¾-›Šº¢o2.Ø ¾¦ åÐ<ÇfYùÍ%[¯B|%Å_뷞Ξúïùž7ƒ¾P†–m–ßÿPKxºZ±š¹žUùCC²cò»*«A‰È?oª¦Æ ÂÿòRü|]—Õã•úŒBG ½|&ÔÙÆÎ^nÂ~ŠumðP,| “„r àñHÜ„ÂÏ\‡QœÀ8e‰\ qÜa!"0'¾f‹Æà¦\Ä!M8Ü0á+N7n,ÂôGÐ1I/d‰J÷RWpAœx4iJa,'× é Þ$ài Þ©ãÈÜ$¦uEGÌåÀ}ņ|x02 hCI¢[ðX‚èwX«ý¤1䯧ŸRÜ9#x$$cÚnBU› PiQnÐn;a\ma”ÄaÓ8d˜Þð€§Ø´]Iä Ú-AÊ)„Ä£0¼Ýëf´z³ÚF‚°ˆz¸¡„b“ð}ŠRílD>ïäß?уã#õ÷*_s¹€éT½Ê(b4ŧü ]y!5ïñÑT ßÊê äÜm Yá‹»*çþÝà›<—³rµ’E õ½„E¹\–ßòâ3,[[s0زŸòŸ˜Ý½Ì'1ê6[oû²cí GV¶–miEü‹Ö£ÃtÜrv- þL†gݶ;¿§-ú€Ë:à³…¯™Û·*BuÛÒæb^HúC¨nOÝû¬(äÒê Ø]§+pÚ8ë œw.º—¿yô4d}›‚PÝž³â‹uÐkô:½§F‰£þGÄnª–ö¥B¨‘ Gv_*„ê¶¥;lÝáès“ÆwêìÍ0ÔLK³mÍv4ûT³Ï4û\³/4ûR³ßköãNaž;*‰¸k> ;"‰Bƒ í(„fI)I„é)î1)è ‡õÂc¿ð8æ¦ðIßcPݶt‡y"»$ê[ ¡æ¯0¯÷7 BÍCÂ÷ÞØHŜުªÛ–î°ÃhD»O>ÌÛ²ýcXx`³¼˜ºÕãºÎ–°¨äYÌák¶ÜHxýÑÿñfßÞiv·¨ýä½÷é§snYjÉbž/~§çÏ×îf×ð^¬öoqÛKØ¡nþÁïCyêŠ;b}êôOPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<5íÁÐJ"IAR-STR912/examples/RTC/readme.txtUT “LjK“LjKux êëµTMoÛ8½ðxÇ6ðú#ûm F¢-úÈRt‚œ U¢m¢’eP’þûJ©›¶ÙÓ¶„gÞ›7ÏžY\½rð&x‹ »}b)\/— W‰)m«k]:ÛžLÙá5èÕÕtr…©5ҢѸœ5¤.ªFÏÝ“ó)¬wÇÖâåY# B°ó¹6eáL{‚ÒEã“ÃÂi"µƒèº^W>yùûbõ×b·Æ¶G¬æË »Òšó@raùØîáŽRÐOEs®5Á~øñR"Ó¹Ö~Zû;I¾¾ö’ÿüJòõçØoß·³zŽýW«?^2TÄq+yÎS…<Û¨{&9î#D96™Äv'B–Y?€‰$S„ÉîD(Ò-‚]®²„Ë÷BEDdûH 0%²’o™^©žî•S2r9T¢X•!gwJ$|NlŒÊ>ßÅjæÿ˜"y d–Š G±8Fš)ÜpD< vó‘¥…¤ì•oÄI‘ KsþÏŽÚ,Fȶåc¾Ø-åy%ÄcÏRä¾Ì’Á5bP÷tä;2ìâKÃÅØv9GÂBŽ›‡Nb¤øÖ©Á¾T1‘òº‘œ ¢ÞR’ä­$~íâüçü§>N ª/Ã4¼ûþø\u4ÝçñBÙžöæÐ[Ý]&Ï™FÏ*?ÛÅ©BQ¶™{ÜýQŸ†¤á mYö¶Ã›Õ&šªÃÞ¶ÍÆj`z;CMWšŒí­È~¯ðhê+¬ƒké;j=¥5FSé9œ>¹îµ¦“¿WOï}•ù±ù` ÏEǵ7~q4…9ÍËqÍ$tÇÙ¶ëW—'0nŒ ªdmv8R»5M±—µ^\ßi÷ŠéDЦ²•¶>¥)>êÁ•gv<¶öã ŸÚMO›±j‡è¾­ëöÑœX{þ_ ûÑÌËž›N¯ýºÿsëÿ PKxºZ<(ø™3{IAR-STR912/examples/RTC/rtc.ewwUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦¨$Y/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PK wºZ<IAR-STR912/examples/CAN/UT ‘LjKʈKux êëPKwºZuG ÜÓÐ3LêÛòúÑï¹^—-EÓêE¨ëGlmU™ú¶§~•å5åJܘŒÇ¸3•ýWä÷Ưw‚ ù k2WÚ§bCžaQ)¬oÞú–ÃÁÇÉÃßAöÑH̵+ ½ø 7&LÉàgühfª BçÚ­ŠIÜ›ÒÔ½Hé=‹[æøó@¦îäôŒóçsaüwÉ ôÉ­[i\6å]v¾qâÞº»C<Ú›–.‡•í¬7¤µ½'µ1 á¼õávC'.¥þ‚­{*Û˜®¼ÉÑÏïl]=ÜÑÄ‘''GÅŸLâÔ’þï“l{ÔîÒ¿7Úè¿\¡<‹Ãd˜‰„÷øPKwºZ<$IGOqLIAR-STR912/examples/CAN/can.ewpUT ‘LjK‘LjKux êëí\moÛ6þ¼ûBÛomýÒnX xÅiµÚ±a;Ù0h‰–ÙʤFQ®³_¿#%ù-–솢 sÝ@_Þ‘<Þ=¤Üùm½ ­æ1aô×§íFë©…©Ç|Bƒ_Ÿ’˜½zûöçw¯ÚO{ÿ㓟t"Î>cOÀeuæ$Ä·iÑ÷íNs÷V¥{ŒÎIp$òGð¢%~‰gIÐiªëì¹`,ôˆäó¬ö¨¿Ÿ±y˜³ãËÚd Ò‹ìiŒ…)âƒú>`Š9 ÷ê„4ĽYmÚÿ¦Ó²iõH,ÎA’ù4¡n'ÐÇò^üùX‡nZÒ~£Ù‚]êCúÌÇÅò¶4A\%ÂZ¶]*l5Íðqìq¢òK|•„¡5g|‰ÔümèŽÝDœ©–Q díø*øb_Šø½¹¡v5¼ùŽêýà0ŽÜY¨XĶ®&G d‰{d6Æ!,„¸ò¦ŒC´:jHêiÏhryÎ%Ø¢rt‡Öž‹`±¹JsšÎ‹Oå³B2ã0nÖ5³B¹jb‹Pùyø¥ådÏ^B–ô@63Œq+N¢ˆq¡Ò–I(Èì^àŠ[‡:梾{ˆÎ_ªKȶÀkk2$T¶XpÁ|Ýù7š8JÌò•íùd0è}r'ÓKwôüνvî.¡o§iÑéµÒWc¡=M†œù‰'2·¦¸9?5Þ´mm´ŠÅÆ¥q_'pæäõIÌÑ( q¬1/Z­V[~Zò«þÀÿÍŸ,EÝÈo«•ÞnJl³e™·Z­ÂŸjÑ¥hb¥söWéÐË3ôkÀÞƒ¥O-_×'¢iRŒ6žŒÞµ__ý0žXÙ¥¾¬=öµ‡W8tsc¤·ì€ã¿ , ÿ~ôR͸Žs = f^?"˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁóh¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@%ÇÎ{%SJ›MÚÅ28Þ{ˆ2þ’±5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â>2»öó°{œÆâ¦ ihmŽÁšD×.‚5gL¹‰ÐíWQRÃNIÂrWåù•ÛëN/®í~÷yƒU2¿Šy´ê¼£YJ¢|ÄÈÇ5k£K½0)3åºÒdïfcO““û(Ž“u­$ñ^—Ìáhð{Já5òKòq¤ˆþ*"|h¦áÕ7‡Éµñ-”f–×Çc0¥bCàµîþ «x¯Œ)émmÓ¾±ëÒ4¾{$]eÒ³Œ18fG·™êÙ ÚŠZ¸#bš•³pr¿ÔMÉÙ5Ä{vÿpP ƒÆD%ûŸºH}äq&w5YwðÛÒÿMYsÆDü±@½61(#5«ÿ‰Û5`”Xv]Œ‡G©öª×ž>¡á€Ä°^ýÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÞŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}pζra£5Ðnv=ìž];½g×Gýª¸$Bí~™ÞzØ…’çNJzL{ÊvÊ8Þ²-ÅÚ‚”X†Êùû&Æü4®vŒy¸5ukjÙC+2F? .~wÿN0­Gœ ª› œÌn©ÃÐßñxqÖóDóVäRS­"'!êK0=ši2n‘RÍ>;,º¯‚œxÜ´pnÆ“Á)^î^üÁk!i%˜åÐ;7;Y¼¥‚~!=¿ÒáÂuý¡ÞÄn~3èÛ»´‰;¸>Ü>_y#@BT³¹ÜMf±Ø¤o®õ”çöÜëOÿ£èÂ@úÒ#3wnk𛵂qø¢6Ø>‚¥Ë „öNˆJ½%$íÞ æ¾°s¬¬‡hƒ%Ú[Ins–è”Ô&p$Ú'Œ£ñýrÆBsn•¡¯é{EF—«}¨T°ºÀp OñÖ„f‡$(Ù ©f š¥YHj™jê£ÈìùÚÔÞ² —APHþQ¯D™ÇëƒëW‡\'7í«ºÅ›_©¼ùéP KH'H›Ã'²æwêE—õôªg?6ˆ7¯°1'–ç*j:i®°òƒæòü ac5á ;¹jÁ‘µ•ž·¬';@§g;Ùñ=ö ÇÄMŒÏ;d\ Z-ç™3yðÖZ‡dN‚Ú‰`°ÔâùÚ¾Od: Ѱ2ó%`ÈYÀѲK¿ï¡YÙ!«J†Ë<Ó‡h£ãM§ñi”˜Â3~N õȰÞ9ÝÛnõ‘ýQJÑhdŸµPÅÁÇncžÌÜ ©X»çÙ³g7¹ß‹}¸36Z.*` ´NóáuÎ’(ϯ@ã‡oé©_R:hè·.-w'}:IKìŸ>H}é‘ÕaUÖ’Y•ÕÅ^Reu+âW×in;ìXßIK–Dè¼´ j‘ÞˆuÚ©p¶¿¸Â=‘va+Vm{ºÙ­¦¬èz¼ ¤wóŸ “ÿþPKwºZ<2Wñ±{IAR-STR912/examples/CAN/can.ewwUT ‘LjK‘LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&91O/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PK yºZ<IAR-STR912/examples/CAN/.svn/UT •LjKʈKux êëPKwºZ‰ëÙG2©7Er©ó,D÷_À„Vó{[ &Ä'6•/Û ‰Š ‹Öb³¤mÀ|ź¤ÓÐò:ªB%B’@Ò'Šá”J u!…tá-¨"W±ö’òEÚ徬 jBƧš‘Áh ¦š` ȘJa›À¢ÁÇ"Çu\ÂV×f§²Ç,˜É:@£=c½ —u±‚E¼çëPÚ—ul%›ÌBÐ5:'„N{Û;1P6i¿¶õ7ú@;-k{Ö;¦‘3™hc‰ÅEʶ7†u‚°IhΙ÷¢ýPK wºZ<'IAR-STR912/examples/CAN/.svn/prop-base/UT ‘LjKʈKux êëPK wºZ<'IAR-STR912/examples/CAN/.svn/text-base/UT ‘LjKʈKux êëPKwºZ<$IGOqL7IAR-STR912/examples/CAN/.svn/text-base/can.ewp.svn-baseUT ‘LjK‘LjKux êëí\moÛ6þ¼ûBÛomýÒnX xÅiµÚ±a;Ù0h‰–ÙʤFQ®³_¿#%ù-–솢 sÝ@_Þ‘<Þ=¤Üùm½ ­æ1aô×§íFë©…©Ç|Bƒ_Ÿ’˜½zûöçw¯ÚO{ÿ㓟t"Î>cOÀeuæ$Ä·iÑ÷íNs÷V¥{ŒÎIp$òGð¢%~‰gIÐiªëì¹`,ôˆäó¬ö¨¿Ÿ±y˜³ãËÚd Ò‹ìiŒ…)âƒú>`Š9 ÷ê„4ĽYmÚÿ¦Ó²iõH,ÎA’ù4¡n'ÐÇò^üùX‡nZÒ~£Ù‚]êCúÌÇÅò¶4A\%ÂZ¶]*l5Íðqìq¢òK|•„¡5g|‰ÔümèŽÝDœ©–Q díø*øb_Šø½¹¡v5¼ùŽêýà0ŽÜY¨XĶ®&G d‰{d6Æ!,„¸ò¦ŒC´:jHêiÏhryÎ%Ø¢rt‡Öž‹`±¹JsšÎ‹Oå³B2ã0nÖ5³B¹jb‹Pùyø¥ådÏ^B–ô@63Œq+N¢ˆq¡Ò–I(Èì^àŠ[‡:梾{ˆÎ_ªKȶÀkk2$T¶XpÁ|Ýù7š8JÌò•íùd0è}r'ÓKwôüνvî.¡o§iÑéµÒWc¡=M†œù‰'2·¦¸9?5Þ´mm´ŠÅÆ¥q_'pæäõIÌÑ( q¬1/Z­V[~Zò«þÀÿÍŸ,EÝÈo«•ÞnJl³e™·Z­ÂŸjÑ¥hb¥söWéÐË3ôkÀÞƒ¥O-_×'¢iRŒ6žŒÞµ__ý0žXÙ¥¾¬=öµ‡W8tsc¤·ì€ã¿ , ÿ~ôR͸Žs = f^?"˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁóh¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@%ÇÎ{%SJ›MÚÅ28Þ{ˆ2þ’±5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â>2»öó°{œÆâ¦ ihmŽÁšD×.‚5gL¹‰ÐíWQRÃNIÂrWåù•ÛëN/®í~÷yƒU2¿Šy´ê¼£YJ¢|ÄÈÇ5k£K½0)3åºÒdïfcO““û(Ž“u­$ñ^—Ìáhð{Já5òKòq¤ˆþ*"|h¦áÕ7‡Éµñ-”f–×Çc0¥bCàµîþ «x¯Œ)émmÓ¾±ëÒ4¾{$]eÒ³Œ18fG·™êÙ ÚŠZ¸#bš•³pr¿ÔMÉÙ5Ä{vÿpP ƒÆD%ûŸºH}äq&w5YwðÛÒÿMYsÆDü±@½61(#5«ÿ‰Û5`”Xv]Œ‡G©öª×ž>¡á€Ä°^ýÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÞŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}pζra£5Ðnv=ìž];½g×Gýª¸$Bí~™ÞzØ…’çNJzL{ÊvÊ8Þ²-ÅÚ‚”X†Êùû&Æü4®vŒy¸5ukjÙC+2F? .~wÿN0­Gœ ª› œÌn©ÃÐßñxqÖóDóVäRS­"'!êK0=ši2n‘RÍ>;,º¯‚œxÜ´pnÆ“Á)^î^üÁk!i%˜åÐ;7;Y¼¥‚~!=¿ÒáÂuý¡ÞÄn~3èÛ»´‰;¸>Ü>_y#@BT³¹ÜMf±Ø¤o®õ”çöÜëOÿ£èÂ@úÒ#3wnk𛵂qø¢6Ø>‚¥Ë „öNˆJ½%$íÞ æ¾°s¬¬‡hƒ%Ú[Ins–è”Ô&p$Ú'Œ£ñýrÆBsn•¡¯é{EF—«}¨T°ºÀp OñÖ„f‡$(Ù ©f š¥YHj™jê£ÈìùÚÔÞ² —APHþQ¯D™ÇëƒëW‡\'7í«ºÅ›_©¼ùéP KH'H›Ã'²æwêE—õôªg?6ˆ7¯°1'–ç*j:i®°òƒæòü ac5á ;¹jÁ‘µ•ž·¬';@§g;Ùñ=ö ÇÄMŒÏ;d\ Z-ç™3yðÖZ‡dN‚Ú‰`°ÔâùÚ¾Od: Ѱ2ó%`ÈYÀѲK¿ï¡YÙ!«J†Ë<Ó‡h£ãM§ñi”˜Â3~N õȰÞ9ÝÛnõ‘ýQJÑhdŸµPÅÁÇncžÌÜ ©X»çÙ³g7¹ß‹}¸36Z.*` ´NóáuÎ’(ϯ@ã‡oé©_R:hè·.-w'}:IKìŸ>H}é‘ÕaUÖ’Y•ÕÅ^Reu+âW×in;ìXßIK–Dè¼´ j‘ÞˆuÚ©p¶¿¸Â=‘va+Vm{ºÙ­¦¬èz¼ ¤wóŸ “ÿþPKwºZuG ÜÓÐ3LêÛòúÑï¹^—-EÓêE¨ëGlmU™ú¶§~•å5åJܘŒÇ¸3•ýWä÷Ưw‚ ù k2WÚ§bCžaQ)¬oÞú–ÃÁÇÉÃßAöÑH̵+ ½ø 7&LÉàgühfª BçÚ­ŠIÜ›ÒÔ½Hé=‹[æøó@¦îäôŒóçsaüwÉ ôÉ­[i\6å]v¾qâÞº»C<Ú›–.‡•í¬7¤µ½'µ1 á¼õávC'.¥þ‚­{*Û˜®¼ÉÑÏïl]=ÜÑÄ‘''GÅŸLâÔ’þï“l{ÔîÒ¿7Úè¿\¡<‹Ãd˜‰„÷øPKwºZ<Ô¾õ1Ø<7IAR-STR912/examples/CAN/.svn/text-base/can.ewd.svn-baseUT ‘LjK‘LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKwºZ<1î¯Ûà:IAR-STR912/examples/CAN/.svn/text-base/91x_conf.h.svn-baseUT ‘LjK‘LjKux êëµWMoÛ8½È —¶èÆ’òÕæFS´M¬>\‘J“¡Øt£Ö–RYÞ6ýõJ±+ie® t™üFoÞ¼S 3xÛ³à5}4œÞG|<‘àXÖé§ó"W+5/‹Øßgó<[ž=j Ù–yÍu>u<=­ÒyR¦yR%kMv“R¡h±)o6[µÐdër`¿TÖnàVaŸYU‚ÚÌ‹ô©Ù«{éC‘Ï M¤Ÿ¶EUã éxi“tSæÅóþŒFG½nuvÏ.þÝ„ýòìPƒÿƒc9a0˜`Žä‰ÜM80 #ÇÜ%eÞ=î sÂ[îò` 42ôY$àŽË‰Ö¤aõ€˜îÉÃ"6&QÅ‚<ÒénL¥@„‘Ë¢ª>óA† È-É}vDTÛDìÉwz;r…ÌcTFaÀ©1!žA(aÈ`Â<¢a ØÇ;çÄ—ødÌê&tµ)µ-@½ºíˆ ÝÂ( ýjp¨ 1½Òˆqhû’ÀÔ-A,øÄe0¼oL 3jî°ê’ð€¹ØPÄpHø‹±MéqV&Û“üó;zpz¢^¥Ël¡–0›éWMŒfø-¿ÂPš©Nôôd€[*‡oyñÒ ¶Ë¥*ðÅ]ç Ÿ·ø&/Ô<_¯UVBù¨`™¯Vù·4û+­V× vê×üeÚȬø ³¡Ìái»‹Ö/;Ö.ðÈJ6ª.­…ɺlµâ¡·œös»ÁìÛGbYmh˸>1–ùey†Ô†2¢}L²L­¬þ°ÝvúÃçýá‹þðeøª?|]{‡À|~ìÚ¨h6L²/VOÌî‰9=±s£µÑñÖFÚšAêŽÇÇJ!Õ(…'ã±RHm4ÈjC» 64g<åáAÍwD;Ðê`»ƒ>ïà‹¾ì૾îà÷üÁØi$ͧAcàH5J jÞ{!$…|ƒ¥Ž'ßl)&‘4} %MmxÔÐê`»ƒó8ÄôØÉ"µ91µÚÐ|ÒR7w$…ˆ{ô^@ªùHpÇG ®ùïwŽv…ÔF»ˆ¬64ÍXÀï•îaÜúèÿ˰p{&i6£Åó¦LV°,Ô×­ÊæÏðO²Ú*xý÷äÇ›&¿¾"ì/%ÍäF-MçÒ²t“*[¤ËÿòóûkQªôï)ÍKÑîNÓ7Íßøw‹®¾1ޏÇ^&ýPKwºZ<2Wñ±{7IAR-STR912/examples/CAN/.svn/text-base/can.eww.svn-baseUT ‘LjK‘LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&91O/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKwºZ<5†p×dA8IAR-STR912/examples/CAN/.svn/text-base/91x_it.c.svn-baseUT ‘LjK‘LjKux êëÕœkOãF†?/ÿáh+­`ÅBh»Í–•Œí©|Ûå2Î@Ü&vêsQµÿ½gÆIˆ[uc–ÑXEžyÏ9ï“ñø6°÷þ™ ¶Ìm0ý“‹€÷#è´Z¿@¹iRätL^äYš0xNº¹ñz阂O(,¶.üÖ¾¿Lùn":%å,o]pM Œétœ&1Oó "ODg+æCŒa¬¤CÑZ?ïµ?îÉʺpF &$íÝ–TP–éTFy §ŒÓ¢(§BZܦ … /yšQ¶‹ÂÞD)¸E£”Áµ@’Ä\Q(zà9 e™¸#(Ðû„ʪ°òª˜U6 ÃG1‡Iüy’”Ü¥|„†0Vñ#µÝYïóÍÓ¥ Ã#ìE3¶#3±üšßÅÅ0˜ûªˆ³dqÉó FI°ž‡yÖ\öOò¢ lšgÃ4»Ye'¸_î™u{Ìv‹£$/fAÆyz»¹±¹Aïñ8ÊÄñ8a7Ü›qæ²›O¢iï…‹ç”2Kä„^Wº0Ȇô§‰áe¿:ÜŸ™ù»³Éw®]hp`¼(«½‹™CNG$›–|ù¼äå•ßnÉ—[ÊË"{Úð²~·y:|ê{KìÞÞÜøgsãë+±ÏÉwP¯¦c†*ÍP/ÙTù¤ ×”'£5HOQÊ…⫼àša_5®€½!°­~óXKæ5à €÷Èé¸Q¥ç%Ÿ (Ÿ[Ç—x üý Åu;Š—.ð úwI×yݵ’ÓåúÔñ¤©%ôšg3xà_ÖÇ.åz’_u®~Ô ~¤/üH1|¼gn­ÏÞîE-=ѯøVC¾Ýˆ|[[òíçÉ¿*ûN#ömÙw”úýFä÷µ%¿¯–ü <꟬^Êõd¿ê\ |§|G_øŽbø¡9hpKeô_w­»íÙQƒ©Õz‚_ñ­€¼åëƒG±žÜ뮕\Wš†·>xë ¾îz <@¹ß »É¯þ„ChÉ÷}éõJ>|&V‡¸ûþc«ÕÚ~³÷yÉ–(ˆ2@YJÃà“è_ÐxX-Q¨„ó¥b‰A2¦qQ鿊_tÌh-õçChûw°Øñû!ìw¶—b†Êe‚ e,¾¡€NhÂ!+'W"Xf‘ÄÕÚ’, ZzQUÀîRžŒ¶0Y?@{»ê2Ë K…–È/ØF_.ÝðØ?úƒuç}@6]2Ý»U}³øÛHúÍÒùk†|µ=üWЄ¦·´rz†Ú;ðnþöV&Y*"ø?E éu\Žy·.}*œ×3׋Ï_gßåkÍ®¹þÁìšzË5Ï*Z  £XOêu×*îOŒ jðPÊõD¿ê\ü¥\_øßxøšð< ”r}á+~H:fƒYG¨õD¿â[ ùSŽPkK^ñ„†' Æ|xB4ó+¾Õo0摼¦c~Å·òΙµ>xëɽîZö jp3…b=±×]«X8G¼o@±žØë®U¼oø‘&7±•^OøO¼«âßdI‹ÔkÌ_ñIVÖÐdY‹ÔkÌ_ñͬ¬¡Éâ©×˜¿â.²†ƒ†ü4æ øIZxtÞàÂGÊõ¤¿ê\ÅßõN\ìK¹žðW×á?ÿ{þeíYâ/o{ıgiÿPKwºZ<„AÝŒ÷ â#6IAR-STR912/examples/CAN/.svn/text-base/main.c.svn-baseUT ‘LjK‘LjKux êëíZëoâHÿ¼#ÍÿP·+ÍA†!òºäøà€ ¾›µyh5BÆ4Ác#?òØÙüïWÕmóÊcÂ꾜#YMuUuu¹ê×]ÝÙßÛð@©U†–>øj¨] êµÚ˜Vßu€ỷÃÀw6‰¾}³×c Ù3ùs 3Ûõ«uËI< B(>§ÐoµAžÏ=×±c7ðÁböŒ˜ÛvÌPaÅ FQÂÆÄ\;Ü—Nö¹Y§ð‰…IHÕ`‘ºs®$×nMÝ&d–ø1ZA÷’MN™Ñ=AèÆ÷Ci•P_%4è÷Ã'µ5ÌH©ièåQ2™`ÔÓê2‡¹7ø YÙWèorÀºãRÑ$•7e†`t›@KG”,B43üòõeØ7/ôóÿ@j•”hˆ7s¡ßCûžs²"RLJ¶ÍÜx‹•Vjåo¨‘†þÁ?Œiµ‡j»"–êÚToTà ?°]“*ô®ó÷ŸÀùˆ-Nͼ5$ÑtxÞ#²‡›QEˆ‰(="£0ä|´›«´:¢¥»(^ß}‹#Ň9¬ÖÀÎlÁ­Zø‘Ä‚s‹“úο΋œ¯ú»öý£~TüU7>þå¸y«®$éQÏ7ªGÏ‹<€ºp½%\t´k×ý¯ã~§¾Ï³¦ñ’°_`UOiu­”œP+[€£[7v¦P$ÈvƒŽ1ÚTžfÕϸ»cçùp°ï yHe·U>…Ìþ~¶¤¥þ´éi-§µÔŸÖrð´–Æ#Zp·h'^|Ê>¬y·Óù›Ü» çîµ»pì‹Ü:fž}_Juøb¹3–ùõ†(×éökŒÒu³vvýoÎsvýþýò*M Ó fÃ^ÌÏmçûÒÑÉÅ´qmÏý“ñ“::q³c°!ÊÎ F.–1«ˆê=Læqc±Ó:a­J«ŠQi×4°C{ÆP2jbp¶ý\ŒÓämÕ2dKJý%Ò»5Ñl†3Iã Í €f;ÂÙ¾7]ù1@0(EÌ›|ˆY— †+4- ‰}ä)qLVLËöÎåÖGø Sí)šUÑá3D+¸ë–«¶hÉ77èá1ÎNö<,¤ôÑu©œÏ +ë.¥.Õt•B¡´ÄnÙMìX߈Ÿ=Ù´rše\*óM†{3²¼X b%x‹µëÂxâê‹©­š÷.¯ ¥o½·6–’‰»ÐXl¦fÄÏ@ª?#£âõ‰uWZ•ÏŠgqÀŒ:l@Ú0¡pJuÜN餹ôîQh--x¦#÷L Î îr‘ö÷äñ(}B¡÷Aœ˜qc(2 U>MÇv'¥R¦­ªŽiU„f³øÅÞ½+2P'/s—èmÏ¡Žƒ²°d© gûGí[³IEpy­Gâ=‡‡ë=õ­2L¦œÏ|ifúG17ÈÖK„XxÀ<„ºÍbõ5±´Þ,:2d#¸|¬‚èP5~Hs´ä7!aàyyVÑ¡QZRrt°z˜yNF½•Â)Ta?…ÓÌÿ ˜æDc¨*/ëZíãÿáZM=®ó“¬\g´¸®¼`ÄϳøZ•jÑÉN1¦–Ï*¶a~SŸ ùõ]Bþéé¼ ƒ ºõ>%ÓJNM‘-K¨Tß-“`~;eB¤°„8N’¢Š­Uíî¸Ó)XñXŸ~îMXŸMnü“Ç_ªm|IÚøR}àKm£ˆþƒuÉCѳay9=Gë=Ç¢çøËKcgËË+p^„ØÒÑSdšwÿh†­íïøöŽßó§ÇÑé]¿¸ãßp }ìÀÔ®Bq«ÏÏ,Š×ÿ¦uˆ‚zC‡Á§ýõŽÝ>èP—pÍ-¬£âcüæN膦­œ_^d%Ò(¹J!ø7ÄwB­gž¡çSÙß»ÄCØâ¿ÒÊ :ã…ˆ«Ÿúé3w)SŒ¡#}‡¦,Ĉ%©ü>Ât “ðâ½t+P>Ûß#ÅÍ“~÷Ï Ò²3Ž,F³"Kgቡ¾Jh¬ ‘N[ZU‹KÞR…Hæ@D8.ÀXÜ`EÆÞêJ±¶)zJ¶’ÑèèÞØ«NÇéêrˆ¦Aâᾆþó#[åèryB7§E×O]ÿêŸ܆•ªú%q\Ëòrsf¾äp­M—ýÜV¤!¼ü÷_PKwºZ<1%bÈô(IAR-STR912/examples/CAN/.svn/all-wcpropsUT ‘LjK‘LjKux êë½Ò» ƒ0€á=Oa@Oµˆ—­´Šà`KW 1¥RMB/_•Šn:ˆkø~rNd8.R5 Jœf¸k*UΙYɽ »—œk BTš* ‡îºwpr\вb_Öo.K÷sb>žI`;@[\Š‚*¸œct‹¯ˆ`fÑ&CÑ"ëoÄÂHN|³?ß |‰sf‘º·•þ{<¡8+©¥[½àÛ[ÌÔibÿˆì6%œ½­Ïž0SLj\¯Úƒ`Ë„Áì~PK wºZ<#IAR-STR912/examples/CAN/.svn/props/UT ‘LjKʈKux êëPK wºZ<!IAR-STR912/examples/CAN/.svn/tmp/UT ‘LjKʈKux êëPK wºZ<+IAR-STR912/examples/CAN/.svn/tmp/prop-base/UT ‘LjKʈKux êëPK wºZ<+IAR-STR912/examples/CAN/.svn/tmp/text-base/UT ‘LjKʈKux êëPK wºZ<'IAR-STR912/examples/CAN/.svn/tmp/props/UT ‘LjKʈKux êëPKwºZ<Ô¾õ1Ø<IAR-STR912/examples/CAN/can.ewdUT ‘LjK‘LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKwºZ<„AÝŒ÷ â#IAR-STR912/examples/CAN/main.cUT ‘LjK‘LjKux êëíZëoâHÿ¼#ÍÿP·+ÍA†!òºäøà€ ¾›µyh5BÆ4Ác#?òØÙüïWÕmóÊcÂ꾜#YMuUuu¹ê×]ÝÙßÛð@©U†–>øj¨] êµÚ˜Vßu€ỷÃÀw6‰¾}³×c Ù3ùs 3Ûõ«uËI< B(>§ÐoµAžÏ=×±c7ðÁböŒ˜ÛvÌPaÅ FQÂÆÄ\;Ü—Nö¹Y§ð‰…IHÕ`‘ºs®$×nMÝ&d–ø1ZA÷’MN™Ñ=AèÆ÷Ci•P_%4è÷Ã'µ5ÌH©ièåQ2™`ÔÓê2‡¹7ø YÙWèorÀºãRÑ$•7e†`t›@KG”,B43üòõeØ7/ôóÿ@j•”hˆ7s¡ßCûžs²"RLJ¶ÍÜx‹•Vjåo¨‘†þÁ?Œiµ‡j»"–êÚToTà ?°]“*ô®ó÷ŸÀùˆ-Nͼ5$ÑtxÞ#²‡›QEˆ‰(="£0ä|´›«´:¢¥»(^ß}‹#Ň9¬ÖÀÎlÁ­Zø‘Ä‚s‹“úο΋œ¯ú»öý£~TüU7>þå¸y«®$éQÏ7ªGÏ‹<€ºp½%\t´k×ý¯ã~§¾Ï³¦ñ’°_`UOiu­”œP+[€£[7v¦P$ÈvƒŽ1ÚTžfÕϸ»cçùp°ï yHe·U>…Ìþ~¶¤¥þ´éi-§µÔŸÖrð´–Æ#Zp·h'^|Ê>¬y·Óù›Ü» çîµ»pì‹Ü:fž}_Juøb¹3–ùõ†(×éökŒÒu³vvýoÎsvýþýò*M Ó fÃ^ÌÏmçûÒÑÉÅ´qmÏý“ñ“::q³c°!ÊÎ F.–1«ˆê=Læqc±Ó:a­J«ŠQi×4°C{ÆP2jbp¶ý\ŒÓämÕ2dKJý%Ò»5Ñl†3Iã Í €f;ÂÙ¾7]ù1@0(EÌ›|ˆY— †+4- ‰}ä)qLVLËöÎåÖGø Sí)šUÑá3D+¸ë–«¶hÉ77èá1ÎNö<,¤ôÑu©œÏ +ë.¥.Õt•B¡´ÄnÙMìX߈Ÿ=Ù´rše\*óM†{3²¼X b%x‹µëÂxâê‹©­š÷.¯ ¥o½·6–’‰»ÐXl¦fÄÏ@ª?#£âõ‰uWZ•ÏŠgqÀŒ:l@Ú0¡pJuÜN餹ôîQh--x¦#÷L Î îr‘ö÷äñ(}B¡÷Aœ˜qc(2 U>MÇv'¥R¦­ªŽiU„f³øÅÞ½+2P'/s—èmÏ¡Žƒ²°d© gûGí[³IEpy­Gâ=‡‡ë=õ­2L¦œÏ|ifúG17ÈÖK„XxÀ<„ºÍbõ5±´Þ,:2d#¸|¬‚èP5~Hs´ä7!aàyyVÑ¡QZRrt°z˜yNF½•Â)Ta?…ÓÌÿ ˜æDc¨*/ëZíãÿáZM=®ó“¬\g´¸®¼`ÄϳøZ•jÑÉN1¦–Ï*¶a~SŸ ùõ]Bþéé¼ ƒ ºõ>%ÓJNM‘-K¨Tß-“`~;eB¤°„8N’¢Š­Uíî¸Ó)XñXŸ~îMXŸMnü“Ç_ªm|IÚøR}àKm£ˆþƒuÉCѳay9=Gë=Ç¢çøËKcgËË+p^„ØÒÑSdšwÿh†­íïøöŽßó§ÇÑé]¿¸ãßp }ìÀÔ®Bq«ÏÏ,Š×ÿ¦uˆ‚zC‡Á§ýõŽÝ>èP—pÍ-¬£âcüæN膦­œ_^d%Ò(¹J!ø7ÄwB­gž¡çSÙß»ÄCØâ¿ÒÊ :ã…ˆ«Ÿúé3w)SŒ¡#}‡¦,Ĉ%©ü>Ât “ðâ½t+P>Ûß#ÅÍ“~÷Ï Ò²3Ž,F³"Kgቡ¾Jh¬ ‘N[ZU‹KÞR…Hæ@D8.ÀXÜ`EÆÞêJ±¶)zJ¶’ÑèèÞØ«NÇéêrˆ¦Aâᾆþó#[åèryB7§E×O]ÿêŸ܆•ªú%q\Ëòrsf¾äp­M—ýÜV¤!¼ü÷_PKwºZ<1î¯Ûà"IAR-STR912/examples/CAN/91x_conf.hUT ‘LjK‘LjKux êëµWMoÛ8½È —¶èÆ’òÕæFS´M¬>\‘J“¡Øt£Ö–RYÞ6ýõJ±+ie® t™üFoÞ¼S 3xÛ³à5}4œÞG|<‘àXÖé§ó"W+5/‹Øßgó<[ž=j Ù–yÍu>u<=­ÒyR¦yR%kMv“R¡h±)o6[µÐdër`¿TÖnàVaŸYU‚ÚÌ‹ô©Ù«{éC‘Ï M¤Ÿ¶EUã éxi“tSæÅóþŒFG½nuvÏ.þÝ„ýòìPƒÿƒc9a0˜`Žä‰ÜM80 #ÇÜ%eÞ=î sÂ[îò` 42ôY$àŽË‰Ö¤aõ€˜îÉÃ"6&QÅ‚<ÒénL¥@„‘Ë¢ª>óA† È-É}vDTÛDìÉwz;r…ÌcTFaÀ©1!žA(aÈ`Â<¢a ØÇ;çÄ—ødÌê&tµ)µ-@½ºíˆ ÝÂ( ýjp¨ 1½Òˆqhû’ÀÔ-A,øÄe0¼oL 3jî°ê’ð€¹ØPÄpHø‹±MéqV&Û“üó;zpz¢^¥Ël¡–0›éWMŒfø-¿ÂPš©Nôôd€[*‡oyñÒ ¶Ë¥*ðÅ]ç Ÿ·ø&/Ô<_¯UVBù¨`™¯Vù·4û+­V× vê×üeÚȬø ³¡Ìái»‹Ö/;Ö.ðÈJ6ª.­…ɺlµâ¡·œös»ÁìÛGbYmh˸>1–ùey†Ô†2¢}L²L­¬þ°ÝvúÃçýá‹þðeøª?|]{‡À|~ìÚ¨h6L²/VOÌî‰9=±s£µÑñÖFÚšAêŽÇÇJ!Õ(…'ã±RHm4ÈjC» 64g<åáAÍwD;Ðê`»ƒ>ïà‹¾ì૾îà÷üÁØi$ͧAcàH5J jÞ{!$…|ƒ¥Ž'ßl)&‘4} %MmxÔÐê`»ƒó8ÄôØÉ"µ91µÚÐ|ÒR7w$…ˆ{ô^@ªùHpÇG ®ùïwŽv…ÔF»ˆ¬64ÍXÀï•îaÜúèÿ˰p{&i6£Åó¦LV°,Ô×­ÊæÏðO²Ú*xý÷äÇ›&¿¾"ì/%ÍäF-MçÒ²t“*[¤ËÿòóûkQªôï)ÍKÑîNÓ7Íßøw‹®¾1ޏÇ^&ýPKwºZ<5†p×dA IAR-STR912/examples/CAN/91x_it.cUT ‘LjK‘LjKux êëÕœkOãF†?/ÿáh+­`ÅBh»Í–•Œí©|Ûå2Î@Ü&vêsQµÿ½gÆIˆ[uc–ÑXEžyÏ9ï“ñø6°÷þ™ ¶Ìm0ý“‹€÷#è´Z¿@¹iRätL^äYš0xNº¹ñz阂O(,¶.üÖ¾¿Lùn":%å,o]pM Œétœ&1Oó "ODg+æCŒa¬¤CÑZ?ïµ?îÉʺpF &$íÝ–TP–éTFy §ŒÓ¢(§BZܦ … /yšQ¶‹ÂÞD)¸E£”Áµ@’Ä\Q(zà9 e™¸#(Ðû„ʪ°òª˜U6 ÃG1‡Iüy’”Ü¥|„†0Vñ#µÝYïóÍÓ¥ Ã#ìE3¶#3±üšßÅÅ0˜ûªˆ³dqÉó FI°ž‡yÖ\öOò¢ lšgÃ4»Ye'¸_î™u{Ìv‹£$/fAÆyz»¹±¹Aïñ8ÊÄñ8a7Ü›qæ²›O¢iï…‹ç”2Kä„^Wº0Ȇô§‰áe¿:ÜŸ™ù»³Éw®]hp`¼(«½‹™CNG$›–|ù¼äå•ßnÉ—[ÊË"{Úð²~·y:|ê{KìÞÞÜøgsãë+±ÏÉwP¯¦c†*ÍP/ÙTù¤ ×”'£5HOQÊ…⫼àša_5®€½!°­~óXKæ5à €÷Èé¸Q¥ç%Ÿ (Ÿ[Ç—x üý Åu;Š—.ð úwI×yݵ’ÓåúÔñ¤©%ôšg3xà_ÖÇ.åz’_u®~Ô ~¤/üH1|¼gn­ÏÞîE-=ѯøVC¾Ýˆ|[[òíçÉ¿*ûN#ömÙw”úýFä÷µ%¿¯–ü <꟬^Êõd¿ê\ |§|G_øŽbø¡9hpKeô_w­»íÙQƒ©Õz‚_ñ­€¼åëƒG±žÜ뮕\Wš†·>xë ¾îz <@¹ß »É¯þ„ChÉ÷}éõJ>|&V‡¸ûþc«ÕÚ~³÷yÉ–(ˆ2@YJÃà“è_ÐxX-Q¨„ó¥b‰A2¦qQ鿊_tÌh-õçChûw°Øñû!ìw¶—b†Êe‚ e,¾¡€NhÂ!+'W"Xf‘ÄÕÚ’, ZzQUÀîRžŒ¶0Y?@{»ê2Ë K…–È/ØF_.ÝðØ?úƒuç}@6]2Ý»U}³øÛHúÍÒùk†|µ=üWЄ¦·´rz†Ú;ðnþöV&Y*"ø?E éu\Žy·.}*œ×3׋Ï_gßåkÍ®¹þÁìšzË5Ï*Z  £XOêu×*îOŒ jðPÊõD¿ê\ü¥\_øßxøšð< ”r}á+~H:fƒYG¨õD¿â[ ùSŽPkK^ñ„†' Æ|xB4ó+¾Õo0摼¦c~Å·òΙµ>xëɽîZö jp3…b=±×]«X8G¼o@±žØë®U¼oø‘&7±•^OøO¼«âßdI‹ÔkÌ_ñIVÖÐdY‹ÔkÌ_ñͬ¬¡Éâ©×˜¿â.²†ƒ†ü4æ øIZxtÞàÂGÊõ¤¿ê\ÅßõN\ìK¹žðW×á?ÿ{þeíYâ/o{ıgiÿPK wºZ<IAR-STR912/examples/WDG/UT ’LjKʈKux êëPK wºZ<"IAR-STR912/examples/WDG/interrupt/UT ’LjKʈKux êëPKwºZ<üóT^N,IAR-STR912/examples/WDG/interrupt/Readme.txtUT ’LjK’LjKux êëµUMoÛ8½ ÐôÔ©b;Ûvk F¢m¢úðRt‚œ F¢m!’hP’ì¯ß¡äõ&möP %|8ï=Î~s¶{ˆ«;#‘]çççð«lP¸)xv€••5ßkdÕŽQ€Ÿá`ôθÉë{+ýVÙWö»,|á 5%~;„4ò~¬ðȆmîÏáI÷Ðô8¸K=D·º®õCÕî`îôßC¬eyâà÷a‹ZvûÀÅyß;Ç{äH¯ÞìŸùÓ¢iäºmÁb:ÞêPKwºZ<ÿ‰Gñ¡-IAR-STR912/examples/WDG/interrupt/wdg_int.ewwUT ’LjK’LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦<%=>3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKwºZȯ¦X "Ýëï#¦˜£x§O¸‡x0#‹õøß´ê{WÖ-C$Ðú Î+\´ê‹½ÆpûQqÃh‡(–cÜ9ßjwu‡%b·Ï)í%î#1Û#E/ÈÙ|ÍZu}a«×ú“nõ&_Ï‚f†@’Šsd;C¨;Ä LÅ!¤Õ,¾=4¡ë‘4ߎàc›†0„. ñqz† >M2á,NÛ,$¶œa„8 8QmŽS|ű3e|ŽÔú­™Ên&Îä@Ã*òqü|ÔØ—„"þhOÔ®û·?½=Æq{3’'±iÊÉAF™ã™ q †ðù—>”aŒI5㌮ÎíÛ;b†*¥;vv\‡MÕ=¯îýò‹Ã5}NL&ä¶æÜ0'–V;„ ̧(À¯/¿özt¤²^aŒ;i–$Œ uožÅ‚LNáq'áÐÇÔA4tÒÑékuÍfxéLc†„j– .Xhºþ#O‘YlÙ^z½Îg4¾ò¯îýïþ æv¬ß(~ÕfÆË¤ÏY˜"wkŽçßµ7M×­ƒR1¹ /Ï~[k6jÚÅ…ñ Ñž^—¤ ²§‹£Ñh4åOC~Ôø]ÿÉï¨ùi4ôéú‰M³¼ñæR£±õð‘ŸrѦhcÅ{F`›é0Õ–Ztn@郺×ê¯ÑÅ4;Ž6 Þ7/®ÿ59ù¡9­öÐÁ û+df{ÀûßDÐ~7„9Òøž·%=h.žѼ¯:¢ñ¼+<%ôðRÕÜ3œ3Ïës Qlp ¶Âžd®a<6Ÿc* * ªŒ³ #ƒ.Ï6ÛH—â9£$°Ê5„ÓEEòV›¦Up`†,ãEjÈHÛ‘ž#þÍ*ã®ІàÂq˜$‹ AÂhj,ƒ|Aœ‚ú¶ŒÒæœq‹2ÄAK/í…Y`Ïâ,«Êò<;e¡Ìy*­—O§Ì½þ9™ cpÀXIEÂaNÈRpÔS·So†ƒ‚%eœRÚÆ²(ïD#„ÉŒÚÕ¬CQöcD¨7CçÉóøïŒp 2!˜xLìZÀî*öê€Ü¶ÑŠÖå4¡M$pí°éǽM1?kcîïNÝYLµì YK?ô.ÿôzýÿœÈ@4žQTu¢×ór½¥Š¢`™q>û¹æ É…ªÚEV(!JP—hÚŒ[$U“¯KËHNa±=×J Ѓ~ÇȪÉÚ…Ò„U†#YÌ[š“¨`C¤A´›jU Z;UÕE‰Ý2[­sYT ŠO‰ (&ÿU¯GÙÇë‚ûW]'7î˺ÃÛ·VÁôt8PŠ&¤‰›…'òAÌïÕ+/ËñuÇ~ª‘`ZâxNXé2*ª9WX«’sYIhY_8FÂM®Jpä>d%@…•—eàä¥ô©®òd‡·ÚK”‰ÛŸWn\ Z%•͹ŽÜ{­„Z™“ n&Ä-•8¿nyÅ€h™™++Ðç,âhÞ¦‚?vФ¨Öªqy‚g»œö0êq¼ñ˜ >Nôc¸ÆÏ £žÝ»ï“×.?À?˜Y´àç#Tá°EÙÍaìç4×H*ä>ŽóòåËÛ•ë‹C8³&-—%$ƒŽ$ÒZõ§ßÔŠ8Ë’U{š>}_O}±ÒÞ@_µ¿h¿ÎtïñÍ“§àÔå~]þ_þ] ÷ºÓ{éðE aµÝýUM6ÀàReXiU†µ AeXat«UßHÐ!a’ª5KÊ–&Ý«uYK­²b mfì8Ú3¶Ç Q7±¸Øáêv7EΡ‡” ëÕ—¡ÉÿPKwºZ<·¢ÅGØ<-IAR-STR912/examples/WDG/interrupt/wdg_int.ewdUT ’LjK’LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPK yºZ<'IAR-STR912/examples/WDG/interrupt/.svn/UT •LjKʈKux êëPKwºZ<6àR²³L.IAR-STR912/examples/WDG/interrupt/.svn/entriesUT ’LjK’LjKux êë­“M‹Û0†ï¢Åöhô5Ê­P(½¦Â^}Œ²nÇØJ“Ÿ_m»öfÚ¼'!^4Þ™‘ D¡ÅK­óº†4Ï×ÊkíןS¿^®KârYŽÜO\‡v·\.õ¯i¨Ëuú1̧P›é¼_>‡½—8ð=œç¯Ã·OŸ‡qª¼,×¹þ[Ñ„¾Ý¡:HÜØIÛ;ã Ø'¡ÐˆïáÌëqái§£x/W(2Hè(Õy=e„Žl`çg££ø Îaœú$Êxbñ§d3vèàvÒï´íá·ž„ñdÔ‰— 3fǨ¬CðÎ6ªü_¼oRÞRúåãs °çÛ¼ÍËPTIdS"]P4)ÏÅ(b ü6é¹wpygEm>¢wºh©áˆœ&Ë&÷¸öQÝàöò™ûz¯ÛØtVÊ1i¥]P–¡PVÉXÒ2`‚Âæ¼oh^ÞŸÓe*ýËÖžFÐQ9é Æ(­O†(µŽrôú1óf½y×ÒÛ66gÙ{vȲЦlŠÉ\=$6+ßRëÖ-L ÛŠ³´Y& j [<æè²}̨‘y íPK wºZ<1IAR-STR912/examples/WDG/interrupt/.svn/prop-base/UT ’LjKʈKux êëPK wºZ<1IAR-STR912/examples/WDG/interrupt/.svn/text-base/UT ’LjKʈKux êëPKwºZȯ¦X "Ýëï#¦˜£x§O¸‡x0#‹õøß´ê{WÖ-C$Ðú Î+\´ê‹½ÆpûQqÃh‡(–cÜ9ßjwu‡%b·Ï)í%î#1Û#E/ÈÙ|ÍZu}a«×ú“nõ&_Ï‚f†@’Šsd;C¨;Ä LÅ!¤Õ,¾=4¡ë‘4ߎàc›†0„. ñqz† >M2á,NÛ,$¶œa„8 8QmŽS|ű3e|ŽÔú­™Ên&Îä@Ã*òqü|ÔØ—„"þhOÔ®û·?½=Æq{3’'±iÊÉAF™ã™ q †ðù—>”aŒI5㌮ÎíÛ;b†*¥;vv\‡MÕ=¯îýò‹Ã5}NL&ä¶æÜ0'–V;„ ̧(À¯/¿özt¤²^aŒ;i–$Œ uožÅ‚LNáq'áÐÇÔA4tÒÑékuÍfxéLc†„j– .Xhºþ#O‘YlÙ^z½Îg4¾ò¯îýïþ æv¬ß(~ÕfÆË¤ÏY˜"wkŽçßµ7M×­ƒR1¹ /Ï~[k6jÚÅ…ñ Ñž^—¤ ²§‹£Ñh4åOC~Ôø]ÿÉï¨ùi4ôéú‰M³¼ñæR£±õð‘ŸrѦhcÅ{F`›é0Õ–Ztn@郺×ê¯ÑÅ4;Ž6 Þ7/®ÿ59ù¡9­öÐÁ û+df{ÀûßDÐ~7„9Òøž·%=h.žѼ¯:¢ñ¼+<%ôðRÕÜ3œ3Ïës Qlp ¶Âžd®a<6Ÿc* * ªŒ³ #ƒ.Ï6ÛH—â9£$°Ê5„ÓEEòV›¦Up`†,ãEjÈHÛ‘ž#þÍ*ã®ІàÂq˜$‹ AÂhj,ƒ|Aœ‚ú¶ŒÒæœq‹2ÄAK/í…Y`Ïâ,«Êò<;e¡Ìy*­—O§Ì½þ9™ cpÀXIEÂaNÈRpÔS·So†ƒ‚%eœRÚÆ²(ïD#„ÉŒÚÕ¬CQöcD¨7CçÉóøïŒp 2!˜xLìZÀî*öê€Ü¶ÑŠÖå4¡M$pí°éǽM1?kcîïNÝYLµì YK?ô.ÿôzýÿœÈ@4žQTu¢×ór½¥Š¢`™q>û¹æ É…ªÚEV(!JP—hÚŒ[$U“¯KËHNa±=×J Ѓ~ÇȪÉÚ…Ò„U†#YÌ[š“¨`C¤A´›jU Z;UÕE‰Ý2[­sYT ŠO‰ (&ÿU¯GÙÇë‚ûW]'7î˺ÃÛ·VÁôt8PŠ&¤‰›…'òAÌïÕ+/ËñuÇ~ª‘`ZâxNXé2*ª9WX«’sYIhY_8FÂM®Jpä>d%@…•—eàä¥ô©®òd‡·ÚK”‰ÛŸWn\ Z%•͹ŽÜ{­„Z™“ n&Ä-•8¿nyÅ€h™™++Ðç,âhÞ¦‚?vФ¨Öªqy‚g»œö0êq¼ñ˜ >Nôc¸ÆÏ £žÝ»ï“×.?À?˜Y´àç#Tá°EÙÍaìç4×H*ä>ŽóòåËÛ•ë‹C8³&-—%$ƒŽ$ÒZõ§ßÔŠ8Ë’U{š>}_O}±ÒÞ@_µ¿h¿ÎtïñÍ“§àÔå~]þ_þ] ÷ºÓ{éðE aµÝýUM6ÀàReXiU†µ AeXat«UßHÐ!a’ª5KÊ–&Ý«uYK­²b mfì8Ú3¶Ç Q7±¸Øáêv7EΡ‡” ëÕ—¡ÉÿPKwºZ<üóT^NDIAR-STR912/examples/WDG/interrupt/.svn/text-base/Readme.txt.svn-baseUT ’LjK’LjKux êëµUMoÛ8½ ÐôÔ©b;Ûvk F¢m¢úðRt‚œ F¢m!’hP’ì¯ß¡äõ&möP %|8ï=Î~s¶{ˆ«;#‘]çççð«lP¸)xv€••5ßkdÕŽQ€Ÿá`ôθÉë{+ýVÙWö»,|á 5%~;„4ò~¬ðȆmîÏáI÷Ðô8¸K=D·º®õCÕî`îôßC¬eyâà÷a‹ZvûÀÅyß;Ç{äH¯ÞìŸùÓ¢iäºmÁb:ÞêPKwºZ<ÿ‰Gñ¡EIAR-STR912/examples/WDG/interrupt/.svn/text-base/wdg_int.eww.svn-baseUT ’LjK’LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦<%=>3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKwºZ<·¢ÅGØ<EIAR-STR912/examples/WDG/interrupt/.svn/text-base/wdg_int.ewd.svn-baseUT ’LjK’LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKwºZ<7JõèÌoDIAR-STR912/examples/WDG/interrupt/.svn/text-base/91x_conf.h.svn-baseUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳd(BµTxX¥B¨jªÃT–êÐi:ca¯žî;$Ši(¶©Ø–b_(ö¥b_)öµbß(ö'Åþ¬í4âúÓ¢35„j©b[¿öDÔùIŠ&_/)!×=Ç“„¾qo<æ¥J<:_„ª¶¡:ôg²M‚¡Åªÿóå ÞÕÎtؾ@ –ˆYƒ5!Tµ Õajs íß;êaŽØö¶3:ûM³pæY>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ¹pZW†! ‘/³ÕôüüÚßê~ÀKU÷·»€›çOüoHG^o'Ì£¯³þPKwºZ<H:²ï=BIAR-STR912/examples/WDG/interrupt/.svn/text-base/91x_it.c.svn-baseUT ’LjK’LjKux êëÕ›]Oã8†ï‘øGì 1--û5ÌU𤭵ù(‰K‡+RC#•¤ë8àÕþ÷=v 4…½˜†ËÅö{|Þ'Žc[mïÃÛ°ÃéUDÆ ƒÓÓß!¦~–ò‚­X*x‘gi oI>À([1’{Ï×9|ê»ÎD7• ¬J, Û×9ø¶Öz½ÊÒDdE”%÷²±“†!y)€”eŲñéo½þŸ=•Ø9\2^JE¿{ª¬Ly¶VA^¢'Y$Œój- fük–2ˆŠJd9+»(|çK¦‚]f%ÜJ"i’à ƒªD ¢€…J ’Õ Ä’û–2•u euÃ7™mˆe"à>y„"M+™X¢!ŒÅ!yÖÝ´ž/YØ]ölx‰­X^ž¨žÊâV<$œaìû†'yº„¤Å=FI1ŸÇ§^ Õ>-8gåºÈY~›Ì I±\•lš½ôöIÁ7AVE²@˘®l4µ³»¬Ä¦ÝgD n‹ÕªxØ _‚LP²a÷kñxR{• x&dN ©zêd Þ2É+`k†CaÉx²*D/9þ¨[>Ak<—Ÿq”r”þÑ¥ƒ§º__àþ¦îÿF÷ȘN\˜FnìâpDçVäÂ|Bì Faãq¬Àv! ¼+°ˆƒEQ^‡c°g1 }7ŠaNèDÆ´CUA”û%a‘;¶"UŠ’HÊ™Mcla丑ê ë| !ÄÖ¥ ”øn¬XÍ žyôDÎDÄŽB×sm…±cˆ'–çARº0q=kG›|ytxpxÐ{çžÔ{£ÊS5k×ïŽs˜å v‹sÁâzR?ÓoLïç›öIû¬ÁG½¼ªKŸ§5ç|]‰íwOPäLÝÂJl×¼TDLT<]ñ¾âþZd‹×¾eqçðàŸÃƒûxN¾ƒz=ç–¨2 õ–M §œÝ2‘.÷ ½F©ZHn . þk\{KbÛü"‰‘̆5‘‹=p£Ê0Î[>5Pž;ãk\è~?h¹8GñÖ*ž³¿+V ˜7]oaèáþ€ww¸Sû³îÖòé=WgPÔ“˜FŸúƒñ_0,¾8`<%áõ\n9†™8–ÿÔ…Ó,¿œÀ1–[ eŽûUUÄ’Å›Í;ÎgUæk¯X 2µ­’Í;Ÿe¶©,W)¹¡·ƒ=ÝuÝn2!sû™ký‡®ŒQ Ï:^O‘}Ù»’›I~×¹ø´|j.|ª>îúO÷g/Õf¢ßñ­‡|¿ù¾±äûÚÉZ‘K~ üY+ògÆ’?ÓK~'ÓýÑ+¹™ìwëïµƒï™ ßÓ ?¶g-6TöÌLðM×°»K÷çîH¹™äwŒk@ïøV ò¾e&÷¦k Øm+Ø;ŠÍÄÞt­»oïOÝ·Í„Þð¬ãÈÆiÅfRoºÖ±Ž´"Úâ´FÉÍD¿ë\ü6Jn.|ÍG62…g6Jn.|ͧ6d`·˜u¤ÚLô;¾õo1åHµ±ä5O8q­ç~}¼ž^5wh­ÿã`Ä`â1Ÿ9øî ¸2<W#nŽ€û0p=N¹e8&×±¯ÁàcŒcÜKnqgæÔÜ1ó|‚»âÁ…¤&¸ƒác#ஞ²bBîQ¸55Àõ,æ©T87†À߸dð1k+ù`Bð§vÐ"UrÓs™ÍÌÀsnúà ÛÇ à‚ÁˆÙØÜ¸°™‚4œk°¸‡Þ-ÂâŽ~Á¤HÓñÙ—)®œ6XÆØ2_¯³MÈ ¹€iëe{ܧ% â]˜Éð&~M)µ²®¬áŒ'²°²~÷‹¬ŒŠ2}òN¸»ã¦,·<û•xjŠ‹2‰è:x5ÅΟ(uWVäªûR_UOÜcxCnÝaª?$ë²Ø¾B44á–ÅöÌfÂXÅäñÄÛ,OµŽFóý»¿©rÇrAGÃbÓ!m" ¶oÊÛF÷êX$s¹ÐðÍéllÚúi™EÂL“…¼mÔÆ™ë›Í¾æÞ9™æÐaØ謄e\@§ÑWÈUH“èëJJ4Ê0–é­¸—ÅR)w2%É,qxTC<¨³æÕj^T6¼nàpè =aý T Oí²‘Òùü°zôÎïè‡pŠnE‚¹°† 0×ÔWpV® a´„nûÓç6Lvw›,ãtNÛV?ιYÿ°ÿ$qÎ1¤ûm€ãyׯu‘UÎϸªŠëör¾÷>3Ö7ýÝ«¨ñáJSŸªÊO*á@/¹ ›ŽeŒž”:µ¶r+ï¶åÛ„•Üði£JG ~X©Â&KÅN•*°ñ“¥EVî}iu›ýÚ‰æj¾í³QúžÔ7…ÐÞüƒ¡7¢Öâ–Š÷|6ˆÄ£«—x¿Ä߬ž6¨“úOý¹ûxüÈÏcæXôi?à6«.ÇÝ¿PKwºZ…}€|iDé-("„u”áfIºíéüøiDØ©†×½ÁÿÇ‹AL-B›†š&ŒÖa͵ɥ˜Vº gg5#Ðε”©Rrƒ0iO ½s¨+qUP̤. ì×ñôxŠÏÞÐRÜÀe³ƒ\ ׺RH¶‡ )i.Ü”D_ûËÁûðjw Ë®I;p¹Uß-?¼¥ø±±Aì Š9e%w±Á<Þðž^¿ã^“¤RdîmN¯ÿù\vìç²ïýäøÓÏ þ³g½£<PK wºZ<-IAR-STR912/examples/WDG/interrupt/.svn/props/UT ’LjKʈKux êëPK wºZ<+IAR-STR912/examples/WDG/interrupt/.svn/tmp/UT ’LjKʈKux êëPK wºZ<5IAR-STR912/examples/WDG/interrupt/.svn/tmp/prop-base/UT ’LjKʈKux êëPK wºZ<5IAR-STR912/examples/WDG/interrupt/.svn/tmp/text-base/UT ’LjKʈKux êëPK wºZ<1IAR-STR912/examples/WDG/interrupt/.svn/tmp/props/UT ’LjKʈKux êëPKwºZ<ɬâ$€(IAR-STR912/examples/WDG/interrupt/main.cUT ’LjK’LjKux êëµWÛnÛF}Ø@ ª.N›´ü@“+iQŠTHʆŸšZY‹P¤À‹´è¿wf—´.¶ì&v×~ ggΜ=;KuNžÐ0›`º“kGœv»ŸÀÆ2ÊR‹¨ÈÒDF9<úþÝ d,À WƬB™´#š6Êb™f°=Î`lZ`¬×±ŒÂB¦ "\‘³³¼žç¥˜“s÷·Nï÷Ž¢u—"Ë)¢×G™\+ä°ÎÒÛ,\Á“ßÏoA| WëXôÚ†ÿo<ˆËHæEš}?£gä|zJœ?ïp>­ç~}¼ž^5wh­ÿã`Ä`â1Ÿ9øî ¸2<W#nŽ€û0p=N¹e8&×±¯ÁàcŒcÜKnqgæÔÜ1ó|‚»âÁ…¤&¸ƒác#ஞ²bBîQ¸55Àõ,æ©T87†À߸dð1k+ù`Bð§vÐ"UrÓs™ÍÌÀsnúà ÛÇ à‚ÁˆÙØÜ¸°™‚4œk°¸‡Þ-ÂâŽ~Á¤HÓñÙ—)®œ6XÆØ2_¯³MÈ ¹€iëe{ܧ% â]˜Éð&~M)µ²®¬áŒ'²°²~÷‹¬ŒŠ2}òN¸»ã¦,·<û•xjŠ‹2‰è:x5ÅΟ(uWVäªûR_UOÜcxCnÝaª?$ë²Ø¾B44á–ÅöÌfÂXÅäñÄÛ,OµŽFóý»¿©rÇrAGÃbÓ!m" ¶oÊÛF÷êX$s¹ÐðÍéllÚúi™EÂL“…¼mÔÆ™ë›Í¾æÞ9™æÐaØ謄e\@§ÑWÈUH“èëJJ4Ê0–é­¸—ÅR)w2%É,qxTC<¨³æÕj^T6¼nàpè =aý T Oí²‘Òùü°zôÎïè‡pŠnE‚¹°† 0×ÔWpV® a´„nûÓç6Lvw›,ãtNÛV?ιYÿ°ÿ$qÎ1¤ûm€ãyׯu‘UÎϸªŠëör¾÷>3Ö7ýÝ«¨ñáJSŸªÊO*á@/¹ ›ŽeŒž”:µ¶r+ï¶åÛ„•Üði£JG ~X©Â&KÅN•*°ñ“¥EVî}iu›ýÚ‰æj¾í³QúžÔ7…ÐÞüƒ¡7¢Öâ–Š÷|6ˆÄ£«—x¿Ä߬ž6¨“úOý¹ûxüÈÏcæXôi?à6«.ÇÝ¿PKwºZ<7JõèÌo,IAR-STR912/examples/WDG/interrupt/91x_conf.hUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳd(BµTxX¥B¨jªÃT–êÐi:ca¯žî;$Ši(¶©Ø–b_(ö¥b_)öµbß(ö'Åþ¬í4âúÓ¢35„j©b[¿öDÔùIŠ&_/)!×=Ç“„¾qo<æ¥J<:_„ª¶¡:ôg²M‚¡Åªÿóå ÞÕÎtؾ@ –ˆYƒ5!Tµ Õajs íß;êaŽØö¶3:ûM³pæY>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ¹pZW†! ‘/³ÕôüüÚßê~ÀKU÷·»€›çOüoHG^o'Ì£¯³þPKwºZ<H:²ï=*IAR-STR912/examples/WDG/interrupt/91x_it.cUT ’LjK’LjKux êëÕ›]Oã8†ï‘øGì 1--û5ÌU𤭵ù(‰K‡+RC#•¤ë8àÕþ÷=v 4…½˜†ËÅö{|Þ'Žc[mïÃÛ°ÃéUDÆ ƒÓÓß!¦~–ò‚­X*x‘gi oI>À([1’{Ï×9|ê»ÎD7• ¬J, Û×9ø¶Öz½ÊÒDdE”%÷²±“†!y)€”eŲñéo½þŸ=•Ø9\2^JE¿{ª¬Ly¶VA^¢'Y$Œój- fük–2ˆŠJd9+»(|çK¦‚]f%ÜJ"i’à ƒªD ¢€…J ’Õ Ä’û–2•u euÃ7™mˆe"à>y„"M+™X¢!ŒÅ!yÖÝ´ž/YØ]ölx‰­X^ž¨žÊâV<$œaìû†'yº„¤Å=FI1ŸÇ§^ Õ>-8gåºÈY~›Ì I±\•lš½ôöIÁ7AVE²@˘®l4µ³»¬Ä¦ÝgD n‹ÕªxØ _‚LP²a÷kñxR{• x&dN ©zêd Þ2É+`k†CaÉx²*D/9þ¨[>Ak<—Ÿq”r”þÑ¥ƒ§º__àþ¦îÿF÷ȘN\˜FnìâpDçVäÂ|Bì Faãq¬Àv! ¼+°ˆƒEQ^‡c°g1 }7ŠaNèDÆ´CUA”û%a‘;¶"UŠ’HÊ™Mcla丑ê ë| !ÄÖ¥ ”øn¬XÍ žyôDÎDÄŽB×sm…±cˆ'–çARº0q=kG›|ytxpxÐ{çžÔ{£ÊS5k×ïŽs˜å v‹sÁâzR?ÓoLïç›öIû¬ÁG½¼ªKŸ§5ç|]‰íwOPäLÝÂJl×¼TDLT<]ñ¾âþZd‹×¾eqçðàŸÃƒûxN¾ƒz=ç–¨2 õ–M §œÝ2‘.÷ ½F©ZHn . þk\{KbÛü"‰‘̆5‘‹=p£Ê0Î[>5Pž;ãk\è~?h¹8GñÖ*ž³¿+V ˜7]oaèáþ€ww¸Sû³îÖòé=WgPÔ“˜FŸúƒñ_0,¾8`<%áõ\n9†™8–ÿÔ…Ó,¿œÀ1–[ eŽûUUÄ’Å›Í;ÎgUæk¯X 2µ­’Í;Ÿe¶©,W)¹¡·ƒ=ÝuÝn2!sû™ký‡®ŒQ Ï:^O‘}Ù»’›I~×¹ø´|j.|ª>îúO÷g/Õf¢ßñ­‡|¿ù¾±äûÚÉZ‘K~ üY+ògÆ’?ÓK~'ÓýÑ+¹™ìwëïµƒï™ ßÓ ?¶g-6TöÌLðM×°»K÷çîH¹™äwŒk@ïøV ò¾e&÷¦k Øm+Ø;ŠÍÄÞt­»oïOÝ·Í„Þð¬ãÈÆiÅfRoºÖ±Ž´"Úâ´FÉÍD¿ë\ü6Jn.|ÍG62…g6Jn.|ͧ6d`·˜u¤ÚLô;¾õo1åHµ±ä5O8qkµMBò*~¾-, {Ý9Í 3s…Ý¡ÐîÌ!5R¶!ÌL‰³ôrYòsléæcO™#–‹½çßä8»§ £å%4%yÜÄùrª•–ô¶S)ɯýáë°@#Ö ¡ó‹ÒÁF•Ye*ƒå7äÚÀÃN”úHÎ ®‡¿¨nÛ+¡Ba1Ï—‘•uŶ´TÕ-u¦¸Â‚ǵ¼>±Á1Å8þÑPK wºZ<'IAR-STR912/examples/WDG/.svn/prop-base/UT ’LjKʈKux êëPK wºZ<'IAR-STR912/examples/WDG/.svn/text-base/UT ’LjKʈKux êëPKwºZ<Þh»mo(IAR-STR912/examples/WDG/.svn/all-wcpropsUT ’LjK’LjKux êëóV02å*.˳*O¶*JŒOI,³*K-*ÎÌÏÓ--Êá S07àÒÊåç—è'”–¤—è+EôêôLõKŠJó²õ rKÒò‹r‹õ=ƒtƒC‚, ôS+s rR‹õÃ]ܹ\ý\¸PK wºZ<#IAR-STR912/examples/WDG/.svn/props/UT ’LjKʈKux êëPK wºZ<!IAR-STR912/examples/WDG/.svn/tmp/UT ’LjKʈKux êëPK wºZ<+IAR-STR912/examples/WDG/.svn/tmp/prop-base/UT ’LjKʈKux êëPK wºZ<+IAR-STR912/examples/WDG/.svn/tmp/text-base/UT ’LjKʈKux êëPK wºZ<'IAR-STR912/examples/WDG/.svn/tmp/props/UT ’LjKʈKux êëPK wºZ< IAR-STR912/examples/WDG/polling/UT ’LjKʈKux êëPKwºZ<0}¸*?ô*IAR-STR912/examples/WDG/polling/Readme.txtUT ’LjK’LjKux êëµUMoÛ8½ðôÔ©;mwk`ŒD[Dõá¥è9-X‰¶„È¢ARH²¿~‡’×›¶ÞÃ]Âz>Þ¼y振.Îx¾ƒ0_?p¶Š̯¯?A!Ò¦4ZµªtFwMiá\êÅÅtr˦Uɽ‚ÓYW²Ú«À=;BzWk¯ÏÒ0r8´M)]£;Jî}p$BPc0k{UùàëW³_¯r ¸SÆúŒYp=$([šæ0€œÐ_õ\­à>ZÁA·mÓí0í§O%n¬ÓæeáïHy>÷”ù†òüo߇Û™}ÿÖêϧ "¦°æ´ ™€"_Š{Â)ÜÇ,Œ°Ì9¬6,"YH!Ï’ ,-€ÌÉïXIJ„›Bä)åÜ3#d˜v–avJË3àtEø`ÅzŒûìhŠƒ çåC%ô¥ r(ÈÁR Ár˜_lqé& yN žg,, ˆI’@– ¸¥Ó$‚„‘Û„ˆ${€ˆqŒ¾ÄRã 1ÑæYAß`ÛŒ$‘”¬èØ/¶Æ8ÏÄç‡ÉØ3g…o`ÉótP ¦{¸%ì¤É¢«±ØRQ¸}x¥fŒß+5È— Â2a7œ¢@øA[†”¼”ÅoU þŸç<Ðg¹?àtWÿ ÓtòÛg:ucAÃKÝm›]o”æîIº²®ôˆQ+#[À}²îu¥ Á)5•2à4ìT‡A¸¦ öÅ:µÇ}b•%Ëfû%[‡Áòh÷UŽe-»Ý±°u§µfù ξq Xßó¡ßž”ÐâÂy“Ðèæ 2ë;‡_‘m!øçÙü}ñ¾jiªw—GøæªôV (\„p3ÿRÿ e«ËGöx±º7¥r¢ÆàRÅáUrªsöœ¢ÓÉçÙó^Ç †¤ùj$&„GYÇu¹Åµ;ìeÓå¸ôR¼£Æzgü"õ} +Ó`ÏU‹;ÅS‰õ“—Û³oÜw,¦öêÙËDZÃ#:â¿PKwºZ<3•¢¡+IAR-STR912/examples/WDG/polling/wdg_pol.ewwUT ’LjK’LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦<%=¾ ?G/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKwºZ<ä™JhÚL+IAR-STR912/examples/WDG/polling/wdg_pol.ewpUT ’LjK’LjKux êëí\koÛ¶þ¼ûB›oë|i7œð:(ŠÓjµcÃvÒ €AK´ÌV&5Šrœýúó’’|‹%»¡¨KTŠß—ä{yH¹óÇzZ+ÌcÂèï/ÚÖ Sù„¿¿ 1ûåíÛßÞýÒ~ñÇûŸ~üéÇNÄÙì 8±¬Îœ„ø.}ô}»ÓÜ=U÷=Fç$H8ù%¸HÑ¿¿Â³$è4Õqv]0z Dò‚yQ{Ôß/Ø<,Ùñem²éAv5ÆB€ñA}0Å…{uÂ=ĽYmÚÿ¦Ó<¸²)é#6gp¾Ê5ðºÓ\†ÛˆŠF{ÌC¡lãÞùN¹£B¨;,ûuæ¢t×xˆÄâ@”TxD¦æ{(Öi¦vjm>©¶h0ûrÓê‘Xœƒ$ËiBÝ!N +Ž!å½øÛ±Ý´¤ýF³ºÔ‡&ô™‹åmi‚¸4J„µ:-l»TØjšáãØãD•)–ø: CkÎø©ùÛл‰8S-£ÈÚñ=Tð!ž$ñGsCízxûÕûÁa¸³ Q±ˆm]MŽ*È÷ÈlŒCp„ϸò¦ŒC´:jHêiÏhruÎо±%Ø¢rt‡Ö^ˆ`±¹ºç4Ÿ¶x*Ÿ’‡qÛ°n˜J¯‰-BæsäáW–“]{5Z2ÙÌ0Æ­8‰"Æ…º·LBAfÇð¸q¨cn!ê[±‡èü•:„b ¼¶æ!CB‹Ì×£‰£Ä,÷l“Á ÷ÉL¯ÜÑŽ{ãÜ_AßNÓG§7J_…ö4ræ'žÈšâæüÚxÓ¶µÑz(c—þåcÀY×'1G£$ıƼhµZmùÓ’õ~7²;êD~Z­ôtóĶXVx{©ÕÚy¸à§Et)š…X©ÃœýßU:ôòŒÅã°÷`éSË×õ‰ècš£'£wí××?Œ'Vv¨/k=ôð ‡nnŒôÜþÛÄÊïg/EÙŒë8‡ ÒÓdæõ3’™wu'3Žs…焟ª©ö4ûÌq†Cë]ƒ›07270[.1%UÕÅ™„‘ù–cZm ¤Oñ’QâÕZŠ„ãeã­ ;ŽëÐÀŒYÂËÌ>PêGFx‰øW£Š»"(CôÆ¡“  “Jcä3âÌ·a”.çŒÄ<+½6—a? Cð¬Šày6[‘þèëTz/—Ι9yÝsH mˆ½=˜IeƒC_µàh nÇÎ{%SJ›MÚÅ28Þ{ˆ2ÿ’¹5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â12ëûyÚ=NsqÓNCZ›c°„&‘ ´‹À§óŒƒ)7Ú£ý:Jj˜À)IXª\\»½îôòÆîw/¬’ùUÌ£UÍRå#F>6¨Að.õ¤̔ëJ“ ¼™=M @LNL®£8NÖµ’Ä{]2C†£ÁŸ)…×hd’ŠÃyJß‘ZjØç0¹B¾…Õ¬Àøúx 6£”El¼Ö]"tµóÀø×’×¶îÓ.c@ƒ@¾GB1V†1Æ› ]iªg1h+já¢Èù@Ï#æl#´ÜêfåìR>;M 8(‹Ac"ÈŠˆ’%P]¤>ò8“ñ»†[Öü¶ S¢ÆÜDW ŸÈ`ঠe¼f#Aq»ŒË®‹ñt7Õ^õÚÓ'#|á œLmÓKv¯TQûeõ¦³ RÊ%jS9i`g°£ÁNBW›讣€ ,}w=ƒ œ4|´ãû•$¹³KGCà¦XÎH¶@ÅouA&h6ŽW:ùÞêNï¿FxnÐDÉêOšÙJPTöDŸlµ­\˜Ä(D Ì›]Ág×ÎðÙõ±¿à—D¨0Ó«»PrëIIi¯AÙn@Ç[¶Å X[ËP9Ÿc߯˜ŸÆÕÎ1W§î R-{he@Æè‡ÁåŸÎ`øß Dëƒêf '³[j?ôwÜaœµÃ<×¼¹ÔTë£ÈJˆú2LwgšÌ[¤T³/‹« 'ž7-œÛñdpŠ—û†wðZHZ f9ôÆÎÉNo釠_¸Ÿé‰pé:ƒþPob7¿ôÖí]ÙÎÄÜœ@nŸ¯¼ˆƒ ¡ªÙîÞf±ØÜßë)Ïí¹7ŸþŒ¢ ékÌÜAº²inÖþÆá«Zcû–",3Ú+!R(õ¢´{0÷'Áα²~0XØ`‰ör’„Ül):eµI‰ö ãhü¸œ±Ð\h¥€Fè!}½È¨ËÚ‡J« r3oMhvH‚’‘j¢YªU¤Ö©¨>ŠÌn³Mm. êAq)…äõf”y¼>„uÈurá¾* ;L±yoåÍO§•Xr@:AÜÙx"Äü^½ò²ž^÷ìñÇñæ¶ç„—®©¦=ç +ßr.w¶WŽ‘°c«¹Y PéÎË*p²­ôqºË“_j¯pLÜÆø¼íÆ• Õ²³9³‘ﯘ˕˜1; ò–Z‚_Û÷‰¼B@4¬ÌÜ 9 8Zv©à=43¹×Já>Á3½ö8j1ÞtJŸFéS¸ÆÏI£ž™ÝÛ#ç£{×­>Á?Ê,Mð³ªtØàØÍ`Ìsš$•rã¼|ùò6}±gÆFËedP‘Öi>ýê£NÀYååhüô}=õJ ½è~Nã:{Ô¿Çk´ŒBCP—ÅuÙÙ×$ܧ•ÞË€/ˆkìoQH¿¥É\ª +ö’Ú°ü «ÓÜöê±–æ.‰ªîá´VÕ:s¥UÅÚ \K1Úž2vÛ¢nóÕp±§ÕÝjÊ]"B?(Iäü»Éä¿ÿPK yºZ<%IAR-STR912/examples/WDG/polling/.svn/UT •LjKʈKux êëPKwºZ<¢‰C±J,IAR-STR912/examples/WDG/polling/.svn/entriesUT ’LjK’LjKux êë­ÓM‹Û0à»è_±=úI¹ ¥×4PØË"FÙ´‰ml§ÉϯÒ.…ÜLë9 3xF¯$‘O“0J‰·eç]×Ñ8^ž—vþÙ·ópˆË0¹íyéê·i–¿MÝ2]ûÝxŽKmºÌÝ—ûæëa¤êø/ã™çîÛ§ÏÝ8œÏ§þøoSD-0Ò©vv[g|ZYñ=^x>NÜ÷1ÏåŠO šZןˆK<õ-‰r:³ø3²6‚j”;€Ûɰ3ØÂïzF[2„L6™ ï=€ö2¡$…ῼï¥=êʺåãk]_Ë·qÍåÈÖ¥‚•“É[Ã"›#&Œ·°É€Î<áò:œD©\6Z&4ÆCI:֣Ѫش ÎjÿÀí9æ ·Ë}YgS’3Õ’•ŠQ9ÞJË€*–hMÜÄæ©¶h0ûrÓê‘Xœƒ$ËiBÝ!N +Ž!å½øÛ±Ý´¤ýF³ºÔ‡&ô™‹åmi‚¸4J„µ:-l»TØjšáãØãD•)–ø: CkÎø©ùÛл‰8S-£ÈÚñ=Tð!ž$ñGsCízxûÕûÁa¸³ Q±ˆm]MŽ*È÷ÈlŒCp„ϸò¦ŒC´:jHêiÏhruÎо±%Ø¢rt‡Ö^ˆ`±¹ºç4Ÿ¶x*Ÿ’‡qÛ°n˜J¯‰-BæsäáW–“]{5Z2ÙÌ0Æ­8‰"Æ…º·LBAfÇð¸q¨cn!ê[±‡èü•:„b ¼¶æ!CB‹Ì×£‰£Ä,÷l“Á ÷ÉL¯ÜÑŽ{ãÜ_AßNÓG§7J_…ö4ræ'žÈšâæüÚxÓ¶µÑz(c—þåcÀY×'1G£$ıƼhµZmùÓ’õ~7²;êD~Z­ôtóĶXVx{©ÕÚy¸à§Et)š…X©ÃœýßU:ôòŒÅã°÷`éSË×õ‰ècš£'£wí××?Œ'Vv¨/k=ôð ‡nnŒôÜþÛÄÊïg/EÙŒë8‡ ÒÓdæõ3’™wu'3Žs…焟ª©ö4ûÌq†Cë]ƒ›07270[.1%UÕÅ™„‘ù–cZm ¤Oñ’QâÕZŠ„ãeã­ ;ŽëÐÀŒYÂËÌ>PêGFx‰øW£Š»"(CôÆ¡“  “Jcä3âÌ·a”.çŒÄ<+½6—a? Cð¬Šày6[‘þèëTz/—Ι9yÝsH mˆ½=˜IeƒC_µàh nÇÎ{%SJ›MÚÅ28Þ{ˆ2ÿ’¹5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â12ëûyÚ=NsqÓNCZ›c°„&‘ ´‹À§óŒƒ)7Ú£ý:Jj˜À)IXª\\»½îôòÆîw/¬’ùUÌ£UÍRå#F>6¨Að.õ¤̔ëJ“ ¼™=M @LNL®£8NÖµ’Ä{]2C†£ÁŸ)…×hd’ŠÃyJß‘ZjØç0¹B¾…Õ¬Àøúx 6£”El¼Ö]"tµóÀø×’×¶îÓ.c@ƒ@¾GB1V†1Æ› ]iªg1h+já¢Èù@Ï#æl#´ÜêfåìR>;M 8(‹Ac"ÈŠˆ’%P]¤>ò8“ñ»†[Öü¶ S¢ÆÜDW ŸÈ`ঠe¼f#Aq»ŒË®‹ñt7Õ^õÚÓ'#|á œLmÓKv¯TQûeõ¦³ RÊ%jS9i`g°£ÁNBW›讣€ ,}w=ƒ œ4|´ãû•$¹³KGCà¦XÎH¶@ÅouA&h6ŽW:ùÞêNï¿FxnÐDÉêOšÙJPTöDŸlµ­\˜Ä(D Ì›]Ág×ÎðÙõ±¿à—D¨0Ó«»PrëIIi¯AÙn@Ç[¶Å X[ËP9Ÿc߯˜ŸÆÕÎ1W§î R-{he@Æè‡ÁåŸÎ`øß Dëƒêf '³[j?ôwÜaœµÃ<×¼¹ÔTë£ÈJˆú2LwgšÌ[¤T³/‹« 'ž7-œÛñdpŠ—û†wðZHZ f9ôÆÎÉNo釠_¸Ÿé‰pé:ƒþPob7¿ôÖí]ÙÎÄÜœ@nŸ¯¼ˆƒ ¡ªÙîÞf±ØÜßë)Ïí¹7ŸþŒ¢ ékÌÜAº²inÖþÆá«Zcû–",3Ú+!R(õ¢´{0÷'Áα²~0XØ`‰ör’„Ül):eµI‰ö ãhü¸œ±Ð\h¥€Fè!}½È¨ËÚ‡J« r3oMhvH‚’‘j¢YªU¤Ö©¨>ŠÌn³Mm. êAq)…äõf”y¼>„uÈurá¾* ;L±yoåÍO§•Xr@:AÜÙx"Äü^½ò²ž^÷ìñÇñæ¶ç„—®©¦=ç +ßr.w¶WŽ‘°c«¹Y PéÎË*p²­ôqºË“_j¯pLÜÆø¼íÆ• Õ²³9³‘ﯘ˕˜1; ò–Z‚_Û÷‰¼B@4¬ÌÜ 9 8Zv©à=43¹×Já>Á3½ö8j1ÞtJŸFéS¸ÆÏI£ž™ÝÛ#ç£{×­>Á?Ê,Mð³ªtØàØÍ`Ìsš$•rã¼|ùò6}±gÆFËedP‘Öi>ýê£NÀYååhüô}=õJ ½è~Nã:{Ô¿Çk´ŒBCP—ÅuÙÙ×$ܧ•ÞË€/ˆkìoQH¿¥É\ª +ö’Ú°ü «ÓÜöê±–æ.‰ªîá´VÕ:s¥UÅÚ \K1Úž2vÛ¢nóÕp±§ÕÝjÊ]"B?(Iäü»Éä¿ÿPKwºZ<0}¸*?ôBIAR-STR912/examples/WDG/polling/.svn/text-base/Readme.txt.svn-baseUT ’LjK’LjKux êëµUMoÛ8½ðôÔ©;mwk`ŒD[Dõá¥è9-X‰¶„È¢ARH²¿~‡’×›¶ÞÃ]Âz>Þ¼y振.Îx¾ƒ0_?p¶Š̯¯?A!Ò¦4ZµªtFwMiá\êÅÅtr˦Uɽ‚ÓYW²Ú«À=;BzWk¯ÏÒ0r8´M)]£;Jî}p$BPc0k{UùàëW³_¯r ¸SÆúŒYp=$([šæ0€œÐ_õ\­à>ZÁA·mÓí0í§O%n¬ÓæeáïHy>÷”ù†òüo߇Û™}ÿÖêϧ "¦°æ´ ™€"_Š{Â)ÜÇ,Œ°Ì9¬6,"YH!Ï’ ,-€ÌÉïXIJ„›Bä)åÜ3#d˜v–avJË3àtEø`ÅzŒûìhŠƒ çåC%ô¥ r(ÈÁR Ár˜_lqé& yN žg,, ˆI’@– ¸¥Ó$‚„‘Û„ˆ${€ˆqŒ¾ÄRã 1ÑæYAß`ÛŒ$‘”¬èØ/¶Æ8ÏÄç‡ÉØ3g…o`ÉótP ¦{¸%ì¤É¢«±ØRQ¸}x¥fŒß+5È— Â2a7œ¢@øA[†”¼”ÅoU þŸç<Ðg¹?àtWÿ ÓtòÛg:ucAÃKÝm›]o”æîIº²®ôˆQ+#[À}²îu¥ Á)5•2à4ìT‡A¸¦ öÅ:µÇ}b•%Ëfû%[‡Áòh÷UŽe-»Ý±°u§µfù ξq Xßó¡ßž”ÐâÂy“Ðèæ 2ë;‡_‘m!øçÙü}ñ¾jiªw—GøæªôV (\„p3ÿRÿ e«ËGöx±º7¥r¢ÆàRÅáUrªsöœ¢ÓÉçÙó^Ç †¤ùj$&„GYÇu¹Åµ;ìeÓå¸ôR¼£Æzgü"õ} +Ó`ÏU‹;ÅS‰õ“—Û³oÜw,¦öêÙËDZÃ#:â¿PKwºZ'€øâA@EÖüq¦ÈèY–)Ç9ª·E ‹™”2múbgGœ”„aÜß­¨3ȯþçúºÉ|ªV׿T«ëÅák;‚°$Y>íˆJ–ÁèDº#)ŽçJ >|² `)uBA’1d`ÄäKŠN.Ž7âi/rõ¡Ä5fM³]€µtÓƒ«OQuxƒ\X’•W$ŸŠ¸ËgÎBì³…t Ô/XÀC%¢X’Ò¸ÀÌôùö*²“Tªp6üWúXfñõ±#“³‰}–k׃ÍÒ 0w‘°Ì¡]M°ç*€ìO† Ç-*pÆÎ!ÿWeXÿ¨€Ra2e>£\Gá‡,•ðÒÌ*¢›D<”…\ù¾óÜ|\0G7~¬]M$9 Ñœyè òeK\R ¤Cœ¶¸*`JÒ›ë˜ NAÂÁ¶¦2¦[›õg±7£žfõŒsÓ’bq:ª-ÎWîÜaR öÃä+$j¯ÓK7=dz8:á³¥$c>çïž5zåè#C°X)’y²(LÄ—l_TDÅq—¯S£s§§R¯&Êšà$†^ÏóJz´¾µZ¯[éGØMŽ€Kò =lÍS< p€¯0öHáT§9òg‰:,IŽòC;ižkŸ^vVÛÖ©-IBkü¡š—=%¼q¦ª¶E×Hé¶èQRN‚|¿ö{5Oæ÷jÞ£a$¯æq˜I ûÎHȱ7ц¥{–óù×XBÓœ¢ÞP¶üq?ÃÒgëQúpEþfC"·óà±å(ìÕ+4ã ñÞ’ï(»±Ýsš›ïqœ7Ч”‘x Ùiç¿yo x›7È_Üî+=¬>€ŸNÙúzCòø#ˆ1íþÔäÖ'ŠQ@ðñéI4Ó®Æê¿~Ù«kv´”ORÿS!œ\0 ^¥‘ôˆ4—0àÃB£59„ª¶ ªLÊPös(RÆfL ¯çZ²¹:ê¨Ø ¸×ùo…t~aO÷»ÍýWsùcë7{ÓïPKwºZ<7JõèÌoBIAR-STR912/examples/WDG/polling/.svn/text-base/91x_conf.h.svn-baseUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳd(BµTxX¥B¨jªÃT–êÐi:ca¯žî;$Ši(¶©Ø–b_(ö¥b_)öµbß(ö'Åþ¬í4âúÓ¢35„j©b[¿öDÔùIŠ&_/)!×=Ç“„¾qo<æ¥J<:_„ª¶¡:ôg²M‚¡Åªÿóå ÞÕÎtؾ@ –ˆYƒ5!Tµ Õajs íß;êaŽØö¶3:ûM³pæY>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ¹pZW†! ‘/³ÕôüüÚßê~ÀKU÷·»€›çOüoHG^o'Ì£¯³þPKwºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKwºZ<2jê >IAR-STR912/examples/WDG/polling/.svn/text-base/main.c.svn-baseUT ’LjK’LjKux êëµW[oÚJ~¯Ôÿ0¢R¢=çô4(Æ^`UcslÓ(OȱXÕØÈ—¤õ¿Ÿ™]s MÚÓälò`Ïå›ofgwLûô NÌ&˜îäÚãÃQÝóó¿ÀÆ2Ê3‘ˆ¨Ì³TFüÈõå‹SÈD€®l׬B™¶"RU¹ÌrØ_06-0ÖëDFa)³®ÈØ K€yQ/ŠJÄd|þg»ów[Ѻ€"/È£Ó:W¢ˆr¹V Áag‹<\ÁƒßÅ ŸÃÕ:ݺáÿ3/â2’E™å_.è9w»ÄùÝçîF÷Çq>Z÷P®ÿã`Ä`â1Ÿ9øî ¸2<W#nŽ€û0p=N¹e8&×±¯ÁàcŒ}ÜÜâÎÌ©¸cæùwŃ6’RpÝÇFÀ]<64<%Å€Ü#wkj>ëYÌS¡P7†ÀßøÈ àcÖRíƒÀŸÚÁu%7=—ÙÌ <×á¦þȰmpÜú F̶ÀæFßf Òp®ÁâZŸwô EšŽÏþ™bæÜ°Á2ÆÆù:Œ6!+äB¦­Óö¸O) ƒ±a1è_ïªE¤ÔÅÒÜvõ"Xƒ;Ì„<†EâJæ )R+’‡•l={´_¾ ¿ö)øe˜ÆaƒL£¤Š¼ùíE¨¯60÷ϳDÞ´–:¯5Ù²r)rXeq…—‹LK‘ÏÃHÀR„1ŠŸS HˆhgQ˜lˆÿ‚ÛÏ'¹¼¥Kªü²±˜?ò"¢Éô)Õ=B\…x…? ð>âm˜Ëð&yJ) àÊÎx*ËËha7ï~™WQYå¢GVà wÌ”äíže¯n Áy•F4 žH0Ÿw©IY“«§¥T?˜b8÷&˜ºÒuUîP'K)ܪÜ×ìžÀ*¦ÇŠç]X*<œ*“æËߨr¯äœ†ÅúÓ!m"`gßT‹“&îÕ+‘ÆrNV¾9MûƒŸUy$Ì,ËÅÉF8s}³ÙÓÜÛ§ÓB ,ï:)a•”%Yô å¯ÛŠÜ'ènÉ[Ydù(Ig(î(TìÃÃD`Õñ¢Á;â¦*ïS¬=á:òÙ»U³4&}ݤ$j¢³™ò8æÐ kö'KéÀ©¼u¾ôA£Ì4?ÕäD‰•—zÚJÁW¹þغÀæ(Ä=©îz]³Vè¨ vÑö3j©ð™^ÂæiÖíi”e–bÝ ÉÛVÖY^6òd.Ô)¹ÜêïÝÄ-l] ‘)ÛFë±´=Pó¥çÙ¤*–“*I ÷°“‘à JñŠÑ´4'v·^oÁÙëû M¢¯+)Q(ÃD~Õ»q'Ë¥.R.neFm¸Äñø‡xøF-Z›ÍQa®rYŠþ6Ô^ÝÏÅ3úž šzê&ø]¹€aýÀ{ßé¾ñ?¼á†ý üØÌB~雘4+ƒ]«ÂC½Joh ëíaÛ€ºoUË’Ío4ìQ¿N™ÁB¤ GBÅ—¢+ÈH!)žwFKèp8޶ºE’qS£lgWñ¢÷°õ$IÆèpþù]ü¸aŸ%"W¦ƒÁ#¦ªÞú‚¼¼÷>óÊH½*dºP™¿í~Z~/0ëê‡ÅѹêäõQкm¨„¿Ý¦*ÈÝžtšê固X~©yUë¢ùwó}óz¼þ˯VæXôÅ=à6«§Öáß¿PKwºZ<94OÕÖL0IAR-STR912/examples/WDG/polling/.svn/all-wcpropsUT ’LjK’LjKux êëÅ“Á ‚@†ïûö:iHé-("„u”Å]KZw—ÝÕõñÓˆ°S ¯3ßÇÿ3‰„H7<¶y¬pFp7TéRp·V å A·WBÈ¥¬ Õfݺ;X!Uó;H†M!T¥a¿NÝã)üh‹+ɨ†ËfR0Vò+Ú6¨Â%÷r”|£¯Â‘éð"÷–\³nìQ+¿›Dó±M†øO2­yꤓŠz¦5?Ôm3 ÷2‘ßf¹à…w›Bf@ÿ,ÊN[”}gSšŸ¾iùdžì^äPK wºZ<+IAR-STR912/examples/WDG/polling/.svn/props/UT ’LjKʈKux êëPK wºZ<)IAR-STR912/examples/WDG/polling/.svn/tmp/UT ’LjKʈKux êëPK wºZ<3IAR-STR912/examples/WDG/polling/.svn/tmp/prop-base/UT ’LjKʈKux êëPK wºZ<3IAR-STR912/examples/WDG/polling/.svn/tmp/text-base/UT ’LjKʈKux êëPK wºZ</IAR-STR912/examples/WDG/polling/.svn/tmp/props/UT ’LjKʈKux êëPKwºZ<2jê &IAR-STR912/examples/WDG/polling/main.cUT ’LjK’LjKux êëµW[oÚJ~¯Ôÿ0¢R¢=çô4(Æ^`UcslÓ(OȱXÕØÈ—¤õ¿Ÿ™]s MÚÓälò`Ïå›ofgwLûô NÌ&˜îäÚãÃQÝóó¿ÀÆ2Ê3‘ˆ¨Ì³TFüÈõå‹SÈD€®l׬B™¶"RU¹ÌrØ_06-0ÖëDFa)³®ÈØ K€yQ/ŠJÄd|þg»ów[Ѻ€"/È£Ó:W¢ˆr¹V Áag‹<\ÁƒßÅ ŸÃÕ:ݺáÿ3/â2’E™å_.è9w»ÄùÝçîF÷Çq>Z÷P®ÿã`Ä`â1Ÿ9øî ¸2<W#nŽ€û0p=N¹e8&×±¯ÁàcŒ}ÜÜâÎÌ©¸cæùwŃ6’RpÝÇFÀ]<64<%Å€Ü#wkj>ëYÌS¡P7†ÀßøÈ àcÖRíƒÀŸÚÁu%7=—ÙÌ <×á¦þȰmpÜú F̶ÀæFßf Òp®ÁâZŸwô EšŽÏþ™bæÜ°Á2ÆÆù:Œ6!+äB¦­Óö¸O) ƒ±a1è_ïªE¤ÔÅÒÜvõ"Xƒ;Ì„<†EâJæ )R+’‡•l={´_¾ ¿ö)øe˜ÆaƒL£¤Š¼ùíE¨¯60÷ϳDÞ´–:¯5Ù²r)rXeq…—‹LK‘ÏÃHÀR„1ŠŸS HˆhgQ˜lˆÿ‚ÛÏ'¹¼¥Kªü²±˜?ò"¢Éô)Õ=B\…x…? ð>âm˜Ëð&yJ) àÊÎx*ËËha7ï~™WQYå¢GVà wÌ”äíže¯n Áy•F4 žH0Ÿw©IY“«§¥T?˜b8÷&˜ºÒuUîP'K)ܪÜ×ìžÀ*¦ÇŠç]X*<œ*“æËߨr¯äœ†ÅúÓ!m"`gßT‹“&îÕ+‘ÆrNV¾9MûƒŸUy$Ì,ËÅÉF8s}³ÙÓÜÛ§ÓB ,ï:)a•”%Yô å¯ÛŠÜ'ènÉ[Ydù(Ig(î(TìÃÃD`Õñ¢Á;â¦*ïS¬=á:òÙ»U³4&}ݤ$j¢³™ò8æÐ kö'KéÀ©¼u¾ôA£Ì4?ÕäD‰•—zÚJÁW¹þغÀæ(Ä=©îz]³Vè¨ vÑö3j©ð™^ÂæiÖíi”e–bÝ ÉÛVÖY^6òd.Ô)¹ÜêïÝÄ-l] ‘)ÛFë±´=Pó¥çÙ¤*–“*I ÷°“‘à JñŠÑ´4'v·^oÁÙëû M¢¯+)Q(ÃD~Õ»q'Ë¥.R.neFm¸Äñø‡xøF-Z›ÍQa®rYŠþ6Ô^ÝÏÅ3úž šzê&ø]¹€aýÀ{ßé¾ñ?¼á†ý üØÌB~雘4+ƒ]«ÂC½Joh ëíaÛ€ºoUË’Ío4ìQ¿N™ÁB¤ GBÅ—¢+ÈH!)žwFKèp8޶ºE’qS£lgWñ¢÷°õ$IÆèpþù]ü¸aŸ%"W¦ƒÁ#¦ªÞú‚¼¼÷>óÊH½*dºP™¿í~Z~/0ëê‡ÅѹêäõQкm¨„¿Ý¦*ÈÝžtšê固X~©yUë¢ùwó}óz¼þ˯VæXôÅ=à6«§Öáß¿PKwºZ<7JõèÌo*IAR-STR912/examples/WDG/polling/91x_conf.hUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳd(BµTxX¥B¨jªÃT–êÐi:ca¯žî;$Ši(¶©Ø–b_(ö¥b_)öµbß(ö'Åþ¬í4âúÓ¢35„j©b[¿öDÔùIŠ&_/)!×=Ç“„¾qo<æ¥J<:_„ª¶¡:ôg²M‚¡Åªÿóå ÞÕÎtؾ@ –ˆYƒ5!Tµ Õajs íß;êaŽØö¶3:ûM³pæY>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ¹pZW†! ‘/³ÕôüüÚßê~ÀKU÷·»€›çOüoHG^o'Ì£¯³þPKwºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKwºZ'€øâA@EÖüq¦ÈèY–)Ç9ª·E ‹™”2múbgGœ”„aÜß­¨3ȯþçúºÉ|ªV׿T«ëÅák;‚°$Y>íˆJ–ÁèDº#)ŽçJ >|² `)uBA’1d`ÄäKŠN.Ž7âi/rõ¡Ä5fM³]€µtÓƒ«OQuxƒ\X’•W$ŸŠ¸ËgÎBì³…t Ô/XÀC%¢X’Ò¸ÀÌôùö*²“Tªp6üWúXfñõ±#“³‰}–k׃ÍÒ 0w‘°Ì¡]M°ç*€ìO† Ç-*pÆÎ!ÿWeXÿ¨€Ra2e>£\Gá‡,•ðÒÌ*¢›D<”…\ù¾óÜ|\0G7~¬]M$9 Ñœyè òeK\R ¤Cœ¶¸*`JÒ›ë˜ NAÂÁ¶¦2¦[›õg±7£žfõŒsÓ’bq:ª-ÎWîÜaR öÃä+$j¯ÓK7=dz8:á³¥$c>çïž5zåè#C°X)’y²(LÄ—l_TDÅq—¯S£s§§R¯&Êšà$†^ÏóJz´¾µZ¯[éGØMŽ€Kò =lÍS< p€¯0öHáT§9òg‰:,IŽòC;ižkŸ^vVÛÖ©-IBkü¡š—=%¼q¦ª¶E×Hé¶èQRN‚|¿ö{5Oæ÷jÞ£a$¯æq˜I ûÎHȱ7ц¥{–óù×XBÓœ¢ÞP¶üq?ÃÒgëQúpEþfC"·óà±å(ìÕ+4ã ñÞ’ï(»±Ýsš›ïqœ7Ч”‘x Ùiç¿yo x›7È_Üî+=¬>€ŸNÙúzCòø#ˆ1íþÔäÖ'ŠQ@ðñéI4Ó®Æê¿~Ù«kv´”ORÿS!œ\0 ^¥‘ôˆ4—0àÃB£59„ª¶ ªLÊPös(RÆfL ¯çZ²¹:ê¨Ø ¸×ùo…t~aO÷»ÍýWsùcë7{ÓïPK xºZ<IAR-STR912/examples/I2C/UT ”LjKʈKux êëPKxºZ<"0bÈš "IAR-STR912/examples/I2C/Readme.txtUT ”LjK”LjKux êë½VKoÛ8¾ ÐôÔ©c{»¯{P$%&Ö–²’Ü §€±èš¨^KR±³¿~gHÙΫ[,Ð]é"q^ß|Ãòôý+¼ ßA˜^ÝdìrVÀt<þ òb!Wª•XÕ6r¥á5Sß{²ðZÀá9ƒLð²#³3¤ôfÓ*xüœÁ"Œ èºJ®¸‘m…à5)GÜtª´¦u/JRÿx:ùåÔB;ƒOBi²˜ŒÆÖ@è•’urðþx±]ƒÙ`Ó⯻JŒÐî;?„d&µiÕÃ}#âé”ÿüñt/ûø2›É ûZ¦ÿâbÃUçqR@ž^×AÃõŒ…3`9\¤\.Y$a i2¿€-r ´I?±ˆ%—.ó"]ÄYNî®Y1íd,AóEP°4,¾ 2»ŠYFæÑ2,rT‚4‹â̆BÙŠòàS [Ä#»y0 :È—óâ„ö% ³4žÇa‘¥ sÈgÁ|IZÀy ³xÁœçóØº ’ˆX†Ú'ä‹%îƒ"Ì$ÿXbæ,˜C,‚Ë8w`´+ÒB,ä œ»´3–S Yº ¬äÄ]zùI;p$Ñ©K –y ‹ ŠáüæÈYБå°ù"·KâÊb$‰ÙµA‘Ø‚|Êä÷ßѧ¾ç{C¿@yl'ßûíåã{ÅFjƒz§Ú{‰6À[R#nÚ-˜´0([µuÝ7ûp'ÌVˆÆöªÙ¶¾‡ ‹š:¡Ö­ªÉQ¼Ñk¡`­Ú\üF‡yÅï…U¶÷‹ëƒ†lÀ÷dƒŸªï ÔmI3 pSa}Õ6kù¹W8oPyÕÒÐwÙ+Ù|Þ/i݆ۗkõhã{J¬„¼?š ÿN{³v+PzB¡ÇÏBs=@îÃ÷¾-´Kö%Ö§]¾é¶qyY*¡5(ÅZ6ùï‚ñHQw‚¸Ð¶V(¡²Ô|'ë¾FŽÅŸ½hV¾‡5ý8™ýX"¸k͆ÜkŒÆ\)×v”w\™û?Ф‚Æòäö¼_cQo‹Eº;¤_Â݃U²¤¸ (¹á¨ÁR›nÙm„â•å…&±«å^c$Û9ÒkÄ$JßÛJÄLJb×áq‡F÷¼êqóÒ¹q ƒYsG2×WÆ,gRceðÏ÷žS ›67Üôzò(Éïì94°¤î‚r ©Øgü„¥ñ7YrÔþK“o²4y%øÿiš>¢ tšF‘Č鄥–1¢1úµaä{¿Nv·ÔT£ À\Þ)ŽáÐdnÖ¬ñÒâô¤­èÊÀÃaƒÄTxðú^Íe㤀Ü"LœkŸ]SèqUn‘ͽÄKR€^Žˆ£7ýÐc˾«ˆl4uñº­ªv‹m‹×ø{ [øpþ{º,Þ^MGãwT{[¨ãâôÝè¥M4'G‹ýÒÏô9t}U}è;*˜½ÃØ FX]‹–¬¡ÂA¡mön÷8†äó´í®nUéFsÍ¿[à=ضêË <´=Ô=ކÒÍ–CþpFþ?@Ö7Ã~³‡Š#ý•ƒêßÜ_ã$¢“÷‚ÍcwúPKxºZ<·¢ÅGØ<#IAR-STR912/examples/I2C/i2c_int.ewdUT ”LjK”LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPK yºZ<IAR-STR912/examples/I2C/.svn/UT •LjKʈKux êëPKxºZ<®Ñ6ú¨B$IAR-STR912/examples/I2C/.svn/entriesUT ”LjK”LjKux êë­“?Û0 Åw¡_Å6Iý÷Vtêšfºå KTÎmâ¶ÒËǯÒ d3Zsâé§÷(!Ò¸E$ÞJ™×¾ëâ<ß ¯¥]Níz½-‘óu9q;qéjo¹^Ëß¡®,·éG7ŸC©C—µûúùÐ|;3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKxºZá@Àã´¦$Æwºè»f«¾}«ÒF§$Ê8«Gð¢9~w…'YÔª«ëü¹`,fˆ¬2®²ºƒînÆú~ÎV(k“-ÐùÓ R¤{õ½ÇsïÔ iˆ3²X·ÿU«¾÷d3D­ïà~±ÒÀE«¾ØË É_7ŒvX€bÙÆû­|…P),»u®Di/q‰Ùž(ZxD®æ{ÈÖªë[µÖU{¨7ùtd3êTœƒ$óBÝ!N +!­zñõ¡]·¤ùʰïÛ4„&tYˆËÛ0ñi’ gqZØf¡°å4#ÄiÀ‰Ês\âë,Ž)ãs¤æoÍtìfâL 4¬j oÇ·PÁ{}I(âö†Úuÿöª÷½Ç8îqoF’ã"6M59Ȩ sÜ!“!Ža!|ºÀ¥7e£ÅACRM{£«s†ömŠ1Õ£;vv\‡MUšW÷~üÑáZ>'&ã¶æÜ0'–«&v˜OQ€_:^þì%ÔèHd=ÃwÒ,I*mžÅ‚LN¡¸“p¨cê :i€èô¥º„l3¼t¦1CBeK,4ƒ‘§Ä,^Ù^Œz½ÎG4¾ò/îýïþ úv¬‹Žo”¾j3ãiÒç,Ì‘»5Ç›ósíUÓ5Fë T a\†—ç¿®5µFíâÂx†hO¯KRŽYŒSƒÉÑh4šòÓ_õþ¯ÿä)êF~ }».±É–gÞ˜{mþÚ!]L³ãhÃÑàmóâú»áÈÉ/Íeí°/¼À±¿²Hfkxÿ›èòï†0ÇBßóö£¤ÇÍÅ"š·UG4žw…§„žªZ{†}æy}Ž!Š ®a­°72×0›Ï1•ÕÅÙ„‘A—g[m ¤KñœQXÕšFÂiŠ¢¢ñV›¦Uh`†,ãEfÈH¯#:l[º0™Uˆ h7·vÏ­œÞs«£~aUœ¡v¿lo=lCÉs'=f¼åúeoØ‹bm@ ,Cé|Ž{›b~×8ÆÜßšº³Hµì Y£z—¿{½þ_'ˆÆNUÍ@ôz^n·Ô‰èoxÆ8o‡}¢y#r¡©6G‘Ç“ ¥ ¨ÏgÚŒ[¤T“OKÊ 'ž6-¼Ûá¨wŠ—ûŠ·ðRHZ f9ôÆÖÍV–`Æ _H_]™‰pé{½nßlb׿ôÖï\¹ÞÈïÝœ@nž¯¼„ƒ qªY_n'³T¬Ó××fÊó;þÍÇÿ€Qôa }î‰ßÓÛšöfíŸ`>« ¶`)â"a¼"…R¯ I»w‚¹/ì+K.‚1¡¢Æ2ãí$ ¹>OtÊ“8í#ÆÉða>a±=×J Ðý‚‘Õ%kJ VŽäIÞŠÐܘD"å D»T«ÑÖ©¨.Jìž±Õ6—EÕ ø”‚bòz7Ê>^Ü¿*ä:¹q_ЦØþjLO‡¥Xr@:AÜìŸ:‘¥0¿W/»,Ç×wø¡F‚i‰9±D—TÑis…µ:l.ÏZ6V#Ž‘pS«¹ Y Pá™Ë2pòCô©>ßÉï³—8&nS|ÞAãRÐ*9ÓœȽ7×J8(sÔ̓ ¥Ï× C"ÓQ ˆ–•¹ZúœEÍÛTð‡š´*e¸<³}ö0êq¼ñ˜ >Nt1<ãçÄPO íÝ÷Á¿k—ݤ­F÷y U,lqìæ0ö Í5’Š·ã<þüvå÷â˘ #,Z«þø—ZgY²Ê¯@ÓÇo꩟TÚkè#·N—»—>]”VÛ=‚ ‡é‰õ‘‹ Ìêb2)³º4ÈʬnA „mÕ7v¨ï¤%Ë’'tž.¨µ #½–š ´Uálÿñ wDÚ†Ù¯XµMìèf»š¢¢sDèá‚’â]ýv˜ü÷/PKxºZ<·¢ÅGØ<;IAR-STR912/examples/I2C/.svn/text-base/i2c_int.ewd.svn-baseUT ”LjK”LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKxºZ<"0bÈš :IAR-STR912/examples/I2C/.svn/text-base/Readme.txt.svn-baseUT ”LjK”LjKux êë½VKoÛ8¾ ÐôÔ©c{»¯{P$%&Ö–²’Ü §€±èš¨^KR±³¿~gHÙΫ[,Ð]é"q^ß|Ãòôý+¼ ßA˜^ÝdìrVÀt<þ òb!Wª•XÕ6r¥á5Sß{²ðZÀá9ƒLð²#³3¤ôfÓ*xüœÁ"Œ èºJ®¸‘m…à5)GÜtª´¦u/JRÿx:ùåÔB;ƒOBi²˜ŒÆÖ@è•’urðþx±]ƒÙ`Ó⯻JŒÐî;?„d&µiÕÃ}#âé”ÿüñt/ûø2›É ûZ¦ÿâbÃUçqR@ž^×AÃõŒ…3`9\¤\.Y$a i2¿€-r ´I?±ˆ%—.ó"]ÄYNî®Y1íd,AóEP°4,¾ 2»ŠYFæÑ2,rT‚4‹â̆BÙŠòàS [Ä#»y0 :È—óâ„ö% ³4žÇa‘¥ sÈgÁ|IZÀy ³xÁœçóØº ’ˆX†Ú'ä‹%îƒ"Ì$ÿXbæ,˜C,‚Ë8w`´+ÒB,ä œ»´3–S Yº ¬äÄ]zùI;p$Ñ©K –y ‹ ŠáüæÈYБå°ù"·KâÊb$‰ÙµA‘Ø‚|Êä÷ßѧ¾ç{C¿@yl'ßûíåã{ÅFjƒz§Ú{‰6À[R#nÚ-˜´0([µuÝ7ûp'ÌVˆÆöªÙ¶¾‡ ‹š:¡Ö­ªÉQ¼Ñk¡`­Ú\üF‡yÅï…U¶÷‹ëƒ†lÀ÷dƒŸªï ÔmI3 pSa}Õ6kù¹W8oPyÕÒÐwÙ+Ù|Þ/i݆ۗkõhã{J¬„¼?š ÿN{³v+PzB¡ÇÏBs=@îÃ÷¾-´Kö%Ö§]¾é¶qyY*¡5(ÅZ6ùï‚ñHQw‚¸Ð¶V(¡²Ô|'ë¾FŽÅŸ½hV¾‡5ý8™ýX"¸k͆ÜkŒÆ\)×v”w\™û?Ф‚Æòäö¼_cQo‹Eº;¤_Â݃U²¤¸ (¹á¨ÁR›nÙm„â•å…&±«å^c$Û9ÒkÄ$JßÛJÄLJb×áq‡F÷¼êqóÒ¹q ƒYsG2×WÆ,gRceðÏ÷žS ›67Üôzò(Éïì94°¤î‚r ©Øgü„¥ñ7YrÔþK“o²4y%øÿiš>¢ tšF‘Č鄥–1¢1úµaä{¿Nv·ÔT£ À\Þ)ŽáÐdnÖ¬ñÒâô¤­èÊÀÃaƒÄTxðú^Íe㤀Ü"LœkŸ]SèqUn‘ͽÄKR€^Žˆ£7ýÐc˾«ˆl4uñº­ªv‹m‹×ø{ [øpþ{º,Þ^MGãwT{[¨ãâôÝè¥M4'G‹ýÒÏô9t}U}è;*˜½ÃØ FX]‹–¬¡ÂA¡mön÷8†äó´í®nUéFsÍ¿[à=ضêË <´=Ô=ކÒÍ–CþpFþ?@Ö7Ã~³‡Š#ý•ƒêßÜ_ã$¢“÷‚ÍcwúPKxºZ<Œ»°Ík:IAR-STR912/examples/I2C/.svn/text-base/91x_conf.h.svn-baseUT ”LjK”LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeÇ>¨»_¿~Ý £ÑèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+?£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õ~’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Qþ£/@QrœÈÃIþú=:=‘ï²U¾+˜Ï嫌"&s|ÊïЕåBñžžŒpKð­(¿B–Ããvµ%¾¸›b)àÏ-¾ÉK±(6‘×P? Xëuñ-Ë¿ÀZ²µ5G£ûø5ÿ•Ùîd6øGÙPð¼ÝyÛ—k—xd¥•hKKâï´'Ó–³oqÇd6>zÖí¦ópÞ¢¸Œ#>S[øŽÙÚª{2ZÆ¡©/ãødhsUí¹ý”æ¹X}³/`õ.ú—}«¾Àu_àæúlèPªÚóqš5ŽzÍ£^ë¨÷B+q2\⤑ØOuÏ’¡TÕRáa=” ¡ªm¨SuXªC?¤éŒ…½zºï*¦¡Ø¦b[Š}¡Ø—Š}¥Ø×Š}£ØŸû³¶ÓˆëO‹ÎÔª¥ŠmývØ!PKäk$)š|½¤„D\÷;LúÆa¼ñ˜o<–~(ñlè|ªÚ†êПÉ6 †C¨þë˼/ª?&œéàc™j©˜5ð» ‡–qhšÚƒh@û÷z#¶½éŒÎ~Ó,ܬi–Ïíò¥ªÓ5¬Jñ×V䋸;]o¼ÿÝý÷CßÞeö·§nr§—NëÊ0d£"_f«éùùµ¿Ñ5ü€ªîímwù:6ÏŸø]HG^m'Ì£¯³þPKxºZ<ÍÞ&˜F8IAR-STR912/examples/I2C/.svn/text-base/91x_it.c.svn-baseUT ”LjK”LjKux êëÕœms›ÆÇ_73ùgÚ7V¢ZBN›\{Ü+‹¹)°’ëv2ŒV º<øaÒ|÷ž]XòMD&c”eÏÙóÿ±œtìÖ«) P†£+S»èSè´Û¿‚Eu× |¶dNøžë„°Ëôå‹WÐs— û–Áf;…ÿHS7:vx9Ž~ÙítEyµZºŽ¹¾”Ù·¼³jG ]aZÆlÆ;·iIïZ"°S˜° äÒq[°Ð Ü•p²õn»h^Ä‚ ^E`±àÎu˜~¹ Ñðo<Üè aΉ8¶× â%D>ÌD˜Ø`/—-°‡‰¨Cãë ,u-ìníGð'àÞ(}`o¡§½/ÌÎÝ^`/æ…M1RèÏ£{;`èǾlÏY€Gþ-zq0žÇõ¨¾èïøAÀ•ïÍ\ïÒÈÀv°]´¤Ý¶£Ýá$ñƒÔÉÒ·g(ÃåF ìÆ ±ëñƒ¹¿\ú÷÷!ð9v»Š›‰VÎð>p#ÓŒ[­ÉÀ[ØÞl‰SÌ`Åp*,X`/CÐÌ÷Ûÿ­SÞGi~ðxÊ?ã,ítø,}››¥õ±7Og°”Û7»ÿ…ˆiŸÀÈ$1(Xý”M—}MéƒfAohÂÅXSeC!04W kº2E›áDS5ã”±E‡:1-¸ÔhŸûT†â€f ¹.Smh€I.dS´â€šÉÍÕ±B-ìCS%¦ é@‡`ÉTÓÉ1È–ÈèÀh“g"M1‡d@j M±Àê˃C ]}2Pa ÉÝ.eã TÍÄÞM+ùÄ=â!ehXäý•kòTY—/H"‚6ÂŽ<î@$²MÍâzæPàÐEsá¯Ö¡mʆÚJ$ÁØ" Ë*îU†Z$>а„•5ƒ¨(È$ ÿa›Aqœ"È<Éo?£[/_üäzÎ2ÆkíÇ4ƒ/~,6.ÝkÑŠí36ç©¡;îõˆ9µ´?¼Ù6kej ðÌNeUEÀÖ[€öƒÜæ¦ì/LÌhï€>LµÙCÌt¯º¦¼β½Ð—4íÆó9 ¦ôáÏ̈š¹ƒfþ`ÑIû9'íýNîü%&KLëè†LN$ǽè¼}ÀÕ´¾ñ‰Ëjì éÒz c/á:›ö“”·cõ;M µíÆ3aqҺɞ"%kÞ*޲K³á{LÌð8ÊÙ0YÞÓßvkqêîì©î#ÞÜxùâÓËŸ¿{ëRû êÉ’¢UÍPgdVy°9‹œÅ¤Whq[°¯ý ªö¢ð ØËÛàgvd×’yNpÀ{Úûp£UÍ8gtV@ùR½˜âsÀ׃æÏ.hœyÈ ØÿbFu`žW]Éry8u\4k =§¹Š nêæï‡cæõ$_T^ |Z>­/|Z1|ªéíÃÙsëz¢/讆¼TмT[òRåä;¥ÈwjK¾S9ù“RäOjKþ¤Zòc«ÛŽ^˜×“}Qy5ðåàê P1|K—x RÆõŸW]vbz8w•›×“|Axý÷ƒ¯êr öº\OòyÕÌyE6ÇŽÆõÄžW]v]9œº®ÔzNs/mÔÐѸžÔ󪫸“”MZâ}0¯'ú¢òŠà—xe#Ìë ¿â—6<„om„y}áWüÞFÔ÷Ìž[×}Aw†<@xïòš‰#^©uÁ¢FäŽyoh7¼Ë'€ø^üpì0)ì"bÐ|y×T—©Ò'êé–´Z@&Rb{0ûã†Øë©{EÉÔ$ Ñ&y?©§Nb[¨ÕJJÇ^¿þç£ÉæÞ1ÕŽìDÉÙ×@MÙ°tÒ¢ß[>B—öîŽ6µ`p~.5àù­Õº÷ƒv€ýg‰‹OÉ.)•cÞlrÚ½^ãlŸ«Äîs²cËåýírX¨~Kêî>¬Ù@Zˆ¯_Ÿåœ4Yùï´'kƒ±IòçlÃLîÁÑV{#ñµ­£“r'h­n½ÏŒy"؉‡ãÕÀx¦ðJsA$‡<l.âÍTÚCþ‹å[t8šª„…o rq–¶SÁ4¹;'èŒÍíxæá‰ùá»fÍ· ܺ¶YsÏÍÂóYSJ³æÎé¢Ë%æTª8iDAóŽÙòKñ~{íFòl°0#4wÖfÊf·ô³S÷i,;÷¯kWø?eÉ쀷Áõ#„,ûÆ^ùÀ3qK?ÿ¦˜ð÷9¯÷í´7ñ„¹‰¦GD°Í¸fcÝûéµ)5‹uÀëëÓX«E&ïà¯8ÄÈæ8ã²á ‰ý™_ x—±Î•(![û¼ ýS^ÃóX`GŒ' H…ƒW¬oOÖçõ‡m2âçKXdú“ô’e›Mø¶Þ?Cf×¢,À¼]cMј»ÐüÜÙ §õ ¸&`þ 'bfð«0«[v>zþý’Ínvš»7kˆªf(fÄ<œîÿGñ,î9‰…Bôdð=w%’XÜ×–fñLí>Q¹Cùõ!·Bðßñë kTâÖš[×s‘(è®â‹!kTbyæÖµ%_ñ³ü`¢ëÉ=¯ºì&-ñÎë‰=¯ºŠ:j­ÄÐh\OìyÕU|ý;Õʼ+Oìë ÿ‰öªø—X`ûó¯x‘1”xcžØ×˜ÅïÌE %ªûó¯¾âñ²ÄÂ+ÌëI¿¨¼Š_Gí½ï–¸Ùæõ„_Tž‡¿ÿ×üb¨ü!ô´I‡ýPKxºZ<”çþw¿+"6IAR-STR912/examples/I2C/.svn/text-base/main.c.svn-baseUT ”LjK”LjKux êëÝZ{oÛFÿ߀¿Ã´RÙ–-QM{=û|MÒ6q’¨’”Ó´(ZZYL(RàÃäòÝofwù’hŸ?ЖHrç±³³¿™Y§³Ûð@KÛͽ·Í³szÝîOà¸G,`Ó4ŽBš@“èöÖ.œúƒ¡·dP<‡°ôüð`Jd5KQ ÕçšêjøS/õ£\æ-‰Y÷R† ã$3I26#æîåç7ë.Xœ„rÐå,™ÆþŠ+)µãä°Š£«Ø[Âe4»CÎg~hîs?I£øîÞÑÆ^lüGÍÆ^N{»i¿"i÷­í,vÏ Ù†c ]p¬S÷jðîÜÔÎÁtàÔ²állêêP3Àö߃jP]”±.LÝž6v\k`Ø©{gºçN0‡(>P]Ó‚mœ©6Å M›Äõ±æ:È–­6Ÿ ip-pÔ \s`p¸à„¨À÷Ý6¡ÐÔlËèšk[CSsÀ9Wû}Z.œpnôuè›êIßà*Õá{ÐM¹Û¤ËŠœÍ:Æ/c\¹©öAWê™áˆàl#âB[HÖ˶M‡–pj[²•¢—|g‚3F§>T‡zG, ÆŽU7àä}é-’ ¢p–°­ô©UÍ¡¡ã‚ldò±!EdndݓώÎöÖöVí §A6c ì?ù!ßùB|ûOåvø—‹oåL£Ø¿¦pOïVlÆæO™fÊÕ°0[Â'8UÍ>:ôºm©ŽÃß¿£Ÿ1ß$©“zi–ëöSpÒ8›¦YÌ5ù8BÑHÊÁìibqqg>"øQœL«ÎÀGJ†Ú’¹vö$sçJ='ãÓSÞ8æo¼-‡Ñ®uª³¥ßî­Ú­Ñ”uZÅÀ¥‡Éÿi +¯½Ø÷.ƒ§‹4f?ƒ{;1g·Ç¸¯vñ¦û1T¸[Gœ…V>9ÉæsOÜÛß+þù£]#Úuâñ'Ô%ÿ|.T)©R©ªD¸±&(">•öÚ@ïh-@æYÈ×FGZο؉äºëÈŸ TjQ8÷¯²˜Ÿ½-ß9’tG?D¾0µ‡È: ¼»VöC~Mý%+ƱD¤ŸZèÓ]ñÚ|ÇßÛ©ûGP§Ëòîªd.>Ðg™ò“dì³ð*]ìH¯=ïÃë›Üý¢ÆµMCíQ¯;xŽWYZ-{†QȈ`ei•Rl†Ù'Ü$<ïƒ`ðÔ¯CìßöÖ'LQ@ézN9T7NÆg4˜ª.³«y÷;Îü9y8LZÿ?N”ÅS&ÑÊ'–£í‘pgwœ0ÀOðH<ñyYÂ4ˆ¦!áÒ<¿r#Öýk?‰âŠJà°B:1,T{#†Ž_°Ø àƒê>΄ fyEh¤¿ÈŽ*`Z…,”Ö¡L‹ä"$°òäQ°!„ IŒF™Í¸"BŒ2¼áÙb–°TJÑ£3:UZÄ"DꃊÌk„”cyŠÙ©¢I[ÎZ‚` ©b*ÕIŠR§ ºÜdÆÝ¹¼pVÕM‡' k ë.Éz=c!í™æîÓÚîqBÖ5ªˆ!€o±Ê&>‚äŠaÛp o»ô41És%‰Ð™’oáñ6¼)eE†É׫4®i7 >2¶âpO(cׄx  r¦ÅŒ_WËq[yÉ—,½a,Ì-Kxœ$NØuɯSÔ( ÏeH?avaâhá%ìñ’_?§8$¦Q¦˜1$jE(˪˜:Ÿû£»bühén=¤ü3eo=(•µ ì¾DPv#Ê3åLXÊb7ZÜïŸ_¢2.êâÖy•@•õùP··DY¼òèv®¬qeM,‡_®òmlTdLdNÀsºõᘓàÿ»øc_:ó•J`6öDÇú—èpã§ 4É*ÂB=¼‚‘‡`ŠÃÆNd_†Ï¡”Çò<Â, sTÉfü&nãÙçÍí#ýSÑþèvæÅös­ÁÜì0ó Æ†>œ±[w¹*«¹ÚŽÛU]z…?yð^{AÆÃˆBš§×ò«–ëÊñ½=Ø!ÑO"h…Q¿çÔ?à˜lÛÛã9éók"«È¸Ò¢%†!.<½‰r|Ü£¢=Ï[óuDM…²FL•8M|.û}ø²fY¤ðÃÜðg˜ý)n*š’Û×m‘‹KI‘M‘ˆ+’ÏûtžáÚC[$û*“Uzþ¼µ›/î›cÈß•A–\€g ÷©ð‡h- ™ [LÈM‘ -¾•ÅôT#6äˆd9á•н١ß󼻥“4Kð„5;ØøGqšðöÿO~‡óà…žÄÅÿ»—FyáÑ“þ¨ÞrÈ{N•SEú€¿|*,ó×Iþ[~(Õ^õã€fudf®Þ'ÖŠ…ZÐï!£¸YÆ¡å!2ð¾}¨z[°!ªt†aI{Ì?Åžâ`ï¨æ¼–¼þxSQðº¥ÀÆmÕ#]–„É]’²¥¸uûK úžkh êή¸?dâ¶‹nTxô®Š[Á$/‚I‘::÷…IÉk‡É„_¥ä3Ýün6g«¡§Æ¢4°ÜÓÞ}Éÿë0†:ýŽú}é¹ÿPKxºZ<\“–§Í (IAR-STR912/examples/I2C/.svn/all-wcpropsUT ”LjK”LjKux êëÅÒÏ ‚0ÀñûþŠúòå"LoQ"è`ÑUÆœ4ÒmÌç??•=éAêúÞàûá±Ë‚nI^ª âeQÌÊ 6—Z­ ›’ÇÂ[höVknL"GX6hÞÁ†nm¡^`R†‰¶Yç}¸ºÝCߥ j–™T43z §ë‘HÊ#©Ð•!—±ôŽÎ”†~vȈÿÈ;FƤrø¸Àóæ|ŠÃTÿ¹AÕ1BÁâL8Xã…;—¢Wm¾[G\«ÄyþÑ«~'ýNB×loPK xºZ<#IAR-STR912/examples/I2C/.svn/props/UT ”LjKʈKux êëPK xºZ<!IAR-STR912/examples/I2C/.svn/tmp/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/I2C/.svn/tmp/prop-base/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/I2C/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ<'IAR-STR912/examples/I2C/.svn/tmp/props/UT ”LjKʈKux êëPKxºZ<†¦3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKxºZá@Àã´¦$Æwºè»f«¾}«ÒF§$Ê8«Gð¢9~w…'YÔª«ëü¹`,fˆ¬2®²ºƒînÆú~ÎV(k“-ÐùÓ R¤{õ½ÇsïÔ iˆ3²X·ÿU«¾÷d3D­ïà~±ÒÀE«¾ØË É_7ŒvX€bÙÆû­|…P),»u®Di/q‰Ùž(ZxD®æ{ÈÖªë[µÖU{¨7ùtd3êTœƒ$óBÝ!N +!­zñõ¡]·¤ùʰïÛ4„&tYˆËÛ0ñi’ gqZØf¡°å4#ÄiÀ‰Ês\âë,Ž)ãs¤æoÍtìfâL 4¬j oÇ·PÁ{}I(âö†Úuÿöª÷½Ç8îqoF’ã"6M59Ȩ sÜ!“!Ža!|ºÀ¥7e£ÅACRM{£«s†ömŠ1Õ£;vv\‡MUšW÷~üÑáZ>'&ã¶æÜ0'–«&v˜OQ€_:^þì%ÔèHd=ÃwÒ,I*mžÅ‚LN¡¸“p¨cê :i€èô¥º„l3¼t¦1CBeK,4ƒ‘§Ä,^Ù^Œz½ÎG4¾ò/îýïþ úv¬‹Žo”¾j3ãiÒç,Ì‘»5Ç›ósíUÓ5Fë T a\†—ç¿®5µFíâÂx†hO¯KRŽYŒSƒÉÑh4šòÓ_õþ¯ÿä)êF~ }».±É–gÞ˜{mþÚ!]L³ãhÃÑàmóâú»áÈÉ/Íeí°/¼À±¿²Hfkxÿ›èòï†0ÇBßóö£¤ÇÍÅ"š·UG4žw…§„žªZ{†}æy}Ž!Š ®a­°72×0›Ï1•ÕÅÙ„‘A—g[m ¤KñœQXÕšFÂiŠ¢¢ñV›¦Uh`†,ãEfÈH¯#:l[º0™Uˆ h7·vÏ­œÞs«£~aUœ¡v¿lo=lCÉs'=f¼åúeoØ‹bm@ ,Cé|Ž{›b~×8ÆÜßšº³Hµì Y£z—¿{½þ_'ˆÆNUÍ@ôz^n·Ô‰èoxÆ8o‡}¢y#r¡©6G‘Ç“ ¥ ¨ÏgÚŒ[¤T“OKÊ 'ž6-¼Ûá¨wŠ—ûŠ·ðRHZ f9ôÆÖÍV–`Æ _H_]™‰pé{½nßlb׿ôÖï\¹ÞÈïÝœ@nž¯¼„ƒ qªY_n'³T¬Ó××fÊó;þÍÇÿ€Qôa }î‰ßÓÛšöfíŸ`>« ¶`)â"a¼"…R¯ I»w‚¹/ì+K.‚1¡¢Æ2ãí$ ¹>OtÊ“8í#ÆÉða>a±=×J Ðý‚‘Õ%kJ VŽäIÞŠÐܘD"å D»T«ÑÖ©¨.Jìž±Õ6—EÕ ø”‚bòz7Ê>^Ü¿*ä:¹q_ЦØþjLO‡¥Xr@:AÜìŸ:‘¥0¿W/»,Ç×wø¡F‚i‰9±D—TÑis…µ:l.ÏZ6V#Ž‘pS«¹ Y Pá™Ë2pòCô©>ßÉï³—8&nS|ÞAãRÐ*9ÓœȽ7×J8(sÔ̓ ¥Ï× C"ÓQ ˆ–•¹ZúœEÍÛTð‡š´*e¸<³}ö0êq¼ñ˜ >Nt1<ãçÄPO íÝ÷Á¿k—ݤ­F÷y U,lqìæ0ö Í5’Š·ã<þüvå÷â˘ #,Z«þø—ZgY²Ê¯@ÓÇo꩟TÚkè#·N—»—>]”VÛ=‚ ‡é‰õ‘‹ Ìêb2)³º4ÈʬnA „mÕ7v¨ï¤%Ë’'tž.¨µ #½–š ´Uálÿñ wDÚ†Ù¯XµMìèf»š¢¢sDèá‚’â]ýv˜ü÷/PKxºZ<”çþw¿+"IAR-STR912/examples/I2C/main.cUT ”LjK”LjKux êëÝZ{oÛFÿ߀¿Ã´RÙ–-QM{=û|MÒ6q’¨’”Ó´(ZZYL(RàÃäòÝofwù’hŸ?ЖHrç±³³¿™Y§³Ûð@KÛͽ·Í³szÝîOà¸G,`Ó4ŽBš@“èöÖ.œúƒ¡·dP<‡°ôüð`Jd5KQ ÕçšêjøS/õ£\æ-‰Y÷R† ã$3I26#æîåç7ë.Xœ„rÐå,™ÆþŠ+)µãä°Š£«Ø[Âe4»CÎg~hîs?I£øîÞÑÆ^lüGÍÆ^N{»i¿"i÷­í,vÏ Ù†c ]p¬S÷jðîÜÔÎÁtàÔ²állêêP3Àö߃jP]”±.LÝž6v\k`Ø©{gºçN0‡(>P]Ó‚mœ©6Å M›Äõ±æ:È–­6Ÿ ip-pÔ \s`p¸à„¨À÷Ý6¡ÐÔlËèšk[CSsÀ9Wû}Z.œpnôuè›êIßà*Õá{ÐM¹Û¤ËŠœÍ:Æ/c\¹©öAWê™áˆàl#âB[HÖ˶M‡–pj[²•¢—|g‚3F§>T‡zG, ÆŽU7àä}é-’ ¢p–°­ô©UÍ¡¡ã‚ldò±!EdndݓώÎöÖöVí §A6c ì?ù!ßùB|ûOåvø—‹oåL£Ø¿¦pOïVlÆæO™fÊÕ°0[Â'8UÍ>:ôºm©ŽÃß¿£Ÿ1ß$©“zi–ëöSpÒ8›¦YÌ5ù8BÑHÊÁìibqqg>"øQœL«ÎÀGJ†Ú’¹vö$sçJ='ãÓSÞ8æo¼-‡Ñ®uª³¥ßî­Ú­Ñ”uZÅÀ¥‡Éÿi +¯½Ø÷.ƒ§‹4f?ƒ{;1g·Ç¸¯vñ¦û1T¸[Gœ…V>9ÉæsOÜÛß+þù£]#Úuâñ'Ô%ÿ|.T)©R©ªD¸±&(">•öÚ@ïh-@æYÈ×FGZο؉äºëÈŸ TjQ8÷¯²˜Ÿ½-ß9’tG?D¾0µ‡È: ¼»VöC~Mý%+ƱD¤ŸZèÓ]ñÚ|ÇßÛ©ûGP§Ëòîªd.>Ðg™ò“dì³ð*]ìH¯=ïÃë›Üý¢ÆµMCíQ¯;xŽWYZ-{†QȈ`ei•Rl†Ù'Ü$<ïƒ`ðÔ¯CìßöÖ'LQ@ézN9T7NÆg4˜ª.³«y÷;Îü9y8LZÿ?N”ÅS&ÑÊ'–£í‘pgwœ0ÀOðH<ñyYÂ4ˆ¦!áÒ<¿r#Öýk?‰âŠJà°B:1,T{#†Ž_°Ø àƒê>΄ fyEh¤¿ÈŽ*`Z…,”Ö¡L‹ä"$°òäQ°!„ IŒF™Í¸"BŒ2¼áÙb–°TJÑ£3:UZÄ"DꃊÌk„”cyŠÙ©¢I[ÎZ‚` ©b*ÕIŠR§ ºÜdÆÝ¹¼pVÕM‡' k ë.Éz=c!í™æîÓÚîqBÖ5ªˆ!€o±Ê&>‚äŠaÛp o»ô41És%‰Ð™’oáñ6¼)eE†É׫4®i7 >2¶âpO(cׄx  r¦ÅŒ_WËq[yÉ—,½a,Ì-Kxœ$NØuɯSÔ( ÏeH?avaâhá%ìñ’_?§8$¦Q¦˜1$jE(˪˜:Ÿû£»bühén=¤ü3eo=(•µ ì¾DPv#Ê3åLXÊb7ZÜïŸ_¢2.êâÖy•@•õùP··DY¼òèv®¬qeM,‡_®òmlTdLdNÀsºõᘓàÿ»øc_:ó•J`6öDÇú—èpã§ 4É*ÂB=¼‚‘‡`ŠÃÆNd_†Ï¡”Çò<Â, sTÉfü&nãÙçÍí#ýSÑþèvæÅös­ÁÜì0ó Æ†>œ±[w¹*«¹ÚŽÛU]z…?yð^{AÆÃˆBš§×ò«–ëÊñ½=Ø!ÑO"h…Q¿çÔ?à˜lÛÛã9éók"«È¸Ò¢%†!.<½‰r|Ü£¢=Ï[óuDM…²FL•8M|.û}ø²fY¤ðÃÜðg˜ý)n*š’Û×m‘‹KI‘M‘ˆ+’ÏûtžáÚC[$û*“Uzþ¼µ›/î›cÈß•A–\€g ÷©ð‡h- ™ [LÈM‘ -¾•ÅôT#6äˆd9á•н١ß󼻥“4Kð„5;ØøGqšðöÿO~‡óà…žÄÅÿ»—FyáÑ“þ¨ÞrÈ{N•SEú€¿|*,ó×Iþ[~(Õ^õã€fudf®Þ'ÖŠ…ZÐï!£¸YÆ¡å!2ð¾}¨z[°!ªt†aI{Ì?Åžâ`ï¨æ¼–¼þxSQðº¥ÀÆmÕ#]–„É]’²¥¸uûK úžkh êή¸?dâ¶‹nTxô®Š[Á$/‚I‘::÷…IÉk‡É„_¥ä3Ýün6g«¡§Æ¢4°ÜÓÞ}Éÿë0†:ýŽú}é¹ÿPKxºZ<Œ»°Ík"IAR-STR912/examples/I2C/91x_conf.hUT ”LjK”LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeÇ>¨»_¿~Ý £ÑèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+?£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õ~’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Qþ£/@QrœÈÃIþú=:=‘ï²U¾+˜Ï嫌"&s|ÊïЕåBñžžŒpKð­(¿B–Ããvµ%¾¸›b)àÏ-¾ÉK±(6‘×P? Xëuñ-Ë¿ÀZ²µ5G£ûø5ÿ•Ùîd6øGÙPð¼ÝyÛ—k—xd¥•hKKâï´'Ó–³oqÇd6>zÖí¦ópÞ¢¸Œ#>S[øŽÙÚª{2ZÆ¡©/ãødhsUí¹ý”æ¹X}³/`õ.ú—}«¾Àu_àæúlèPªÚóqš5ŽzÍ£^ë¨÷B+q2\⤑ØOuÏ’¡TÕRáa=” ¡ªm¨SuXªC?¤éŒ…½zºï*¦¡Ø¦b[Š}¡Ø—Š}¥Ø×Š}£ØŸû³¶ÓˆëO‹ÎÔª¥ŠmývØ!PKäk$)š|½¤„D\÷;LúÆa¼ñ˜o<–~(ñlè|ªÚ†êПÉ6 †C¨þë˼/ª?&œéàc™j©˜5ð» ‡–qhšÚƒh@û÷z#¶½éŒÎ~Ó,ܬi–Ïíò¥ªÓ5¬Jñ×V䋸;]o¼ÿÝý÷CßÞeö·§nr§—NëÊ0d£"_f«éùùµ¿Ñ5ü€ªîímwù:6ÏŸø]HG^m'Ì£¯³þPKxºZ<ÍÞ&˜F IAR-STR912/examples/I2C/91x_it.cUT ”LjK”LjKux êëÕœms›ÆÇ_73ùgÚ7V¢ZBN›\{Ü+‹¹)°’ëv2ŒV º<øaÒ|÷ž]XòMD&c”eÏÙóÿ±œtìÖ«) P†£+S»èSè´Û¿‚Eu× |¶dNøžë„°Ëôå‹WÐs— û–Áf;…ÿHS7:vx9Ž~ÙítEyµZºŽ¹¾”Ù·¼³jG ]aZÆlÆ;·iIïZ"°S˜° äÒq[°Ð Ü•p²õn»h^Ä‚ ^E`±àÎu˜~¹ Ñðo<Üè aΉ8¶× â%D>ÌD˜Ø`/—-°‡‰¨Cãë ,u-ìníGð'àÞ(}`o¡§½/ÌÎÝ^`/æ…M1RèÏ£{;`èǾlÏY€Gþ-zq0žÇõ¨¾èïøAÀ•ïÍ\ïÒÈÀv°]´¤Ý¶£Ýá$ñƒÔÉÒ·g(ÃåF ìÆ ±ëñƒ¹¿\ú÷÷!ð9v»Š›‰VÎð>p#ÓŒ[­ÉÀ[ØÞl‰SÌ`Åp*,X`/CÐÌ÷Ûÿ­SÞGi~ðxÊ?ã,ítø,}››¥õ±7Og°”Û7»ÿ…ˆiŸÀÈ$1(Xý”M—}MéƒfAohÂÅXSeC!04W kº2E›áDS5ã”±E‡:1-¸ÔhŸûT†â€f ¹.Smh€I.dS´â€šÉÍÕ±B-ìCS%¦ é@‡`ÉTÓÉ1È–ÈèÀh“g"M1‡d@j M±Àê˃C ]}2Pa ÉÝ.eã TÍÄÞM+ùÄ=â!ehXäý•kòTY—/H"‚6ÂŽ<î@$²MÍâzæPàÐEsá¯Ö¡mʆÚJ$ÁØ" Ë*îU†Z$>а„•5ƒ¨(È$ ÿa›Aqœ"È<Éo?£[/_üäzÎ2ÆkíÇ4ƒ/~,6.ÝkÑŠí36ç©¡;îõˆ9µ´?¼Ù6kej ðÌNeUEÀÖ[€öƒÜæ¦ì/LÌhï€>LµÙCÌt¯º¦¼β½Ð—4íÆó9 ¦ôáÏ̈š¹ƒfþ`ÑIû9'íýNîü%&KLëè†LN$ǽè¼}ÀÕ´¾ñ‰Ëjì éÒz c/á:›ö“”·cõ;M µíÆ3aqҺɞ"%kÞ*޲K³á{LÌð8ÊÙ0YÞÓßvkqêîì©î#ÞÜxùâÓËŸ¿{ëRû êÉ’¢UÍPgdVy°9‹œÅ¤Whq[°¯ý ªö¢ð ØËÛàgvd×’yNpÀ{Úûp£UÍ8gtV@ùR½˜âsÀ׃æÏ.hœyÈ ØÿbFu`žW]Éry8u\4k =§¹Š nêæï‡cæõ$_T^ |Z>­/|Z1|ªéíÃÙsëz¢/讆¼TмT[òRåä;¥ÈwjK¾S9ù“RäOjKþ¤Zòc«ÛŽ^˜×“}Qy5ðåàê P1|K—x RÆõŸW]vbz8w•›×“|Axý÷ƒ¯êr öº\OòyÕÌyE6ÇŽÆõÄžW]v]9œº®ÔzNs/mÔÐѸžÔ󪫸“”MZâ}0¯'ú¢òŠà—xe#Ìë ¿â—6<„om„y}áWüÞFÔ÷Ìž[×}Aw†<@xïòš‰#^©uÁ¢FäŽyoh7¼Ë'€ø^üpì0)ì"bÐ|y×T—©Ò'êé–´Z@&Rb{0ûã†Øë©{EÉÔ$ Ñ&y?©§Nb[¨ÕJJÇ^¿þç£ÉæÞ1ÕŽìDÉÙ×@MÙ°tÒ¢ß[>B—öîŽ6µ`p~.5àù­Õº÷ƒv€ýg‰‹OÉ.)•cÞlrÚ½^ãlŸ«Äîs²cËåýírX¨~Kêî>¬Ù@Zˆ¯_Ÿåœ4Yùï´'kƒ±IòçlÃLîÁÑV{#ñµ­£“r'h­n½ÏŒy"؉‡ãÕÀx¦ðJsA$‡<l.âÍTÚCþ‹å[t8šª„…o rq–¶SÁ4¹;'èŒÍíxæá‰ùá»fÍ· ܺ¶YsÏÍÂóYSJ³æÎé¢Ë%æTª8iDAóŽÙòKñ~{íFòl°0#4wÖfÊf·ô³S÷i,;÷¯kWø?eÉ쀷Áõ#„,ûÆ^ùÀ3qK?ÿ¦˜ð÷9¯÷í´7ñ„¹‰¦GD°Í¸fcÝûéµ)5‹uÀëëÓX«E&ïà¯8ÄÈæ8ã²á ‰ý™_ x—±Î•(![û¼ ýS^ÃóX`GŒ' H…ƒW¬oOÖçõ‡m2âçKXdú“ô’e›Mø¶Þ?Cf×¢,À¼]cMј»ÐüÜÙ §õ ¸&`þ 'bfð«0«[v>zþý’Ínvš»7kˆªf(fÄ<œîÿGñ,î9‰…Bôdð=w%’XÜ×–fñLí>Q¹Cùõ!·Bðßñë kTâÖš[×s‘(è®â‹!kTbyæÖµ%_ñ³ü`¢ëÉ=¯ºì&-ñÎë‰=¯ºŠ:j­ÄÐh\OìyÕU|ý;Õʼ+Oìë ÿ‰öªø—X`ûó¯x‘1”xcžØ×˜ÅïÌE %ªûó¯¾âñ²ÄÂ+ÌëI¿¨¼Š_Gí½ï–¸Ùæõ„_Tž‡¿ÿ×üb¨ü!ô´I‡ýPK xºZ<IAR-STR912/examples/TIM/UT “LjKʈKux êëPK xºZ<IAR-STR912/examples/TIM/PWM/UT “LjKʈKux êëPKxºZ<×:_¯¡'IAR-STR912/examples/TIM/PWM/tim_pwm.ewwUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦$37¾ —bšh8>ƒÒ™]¸ÆlÌ»¦¶‹^ƒ†ÁLìÆ@^Vg Ò”ËÊ ü½§¶óëÆÁÓ3†,Šm·»(½mjЦ¬(9.½AR×zm»3KJ}ž|vÒÆpa\Kˆ“Á¨˜váì¶#9°?}Ù\ƒ_Ð"~_VÛ î)Ilë÷0¦gT|zJŠ¿)ïwÎ/PKxºZ<·¢ÅGØ<'IAR-STR912/examples/TIM/PWM/tim_pwm.ewdUT “LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPK yºZ<!IAR-STR912/examples/TIM/PWM/.svn/UT •LjKʈKux êëPKxºZ<4„ ¯F(IAR-STR912/examples/TIM/PWM/.svn/entriesUT “LjK“LjKux êë­ÓKoÛ0 à»°¿b›õÌ­Ç i€½zP©·Ø1leÉÏŸÚr36ó$ù¢80–ú™I!Ø{)Ó²ëº8M—BKi—_c»œ/s¤|žÔŽTºz7ŸÏåoRWæËø³›N¾Ô¤aéöÍËaï¸èèæ‡éDKwx|êž¿?ý[VC¸d#ðÀÅNÁŽëÖ(£@¿2Šýð-ǙƱì>L¶€Cã±ù8%ÕžŒ‹”” ì|?¶‘åþDìOËš¢æfÇÝNš>ã•9B’2d§t­í$¦ÀH%¹2ÿ/ïW åPY¥Þ¦ëÐÒuZg“ä­K9°Ú ¬MæÈ}Bå6î´‘w¸´G mÝŒàŒÌ’K¥(]'g5©” m‚Sh?p{òi ¶ÜÊJ[“}Ne\‹ÏÍÉu„ÎJ‘7±im*ÍñÛ[<¹}_G3<‡äá9Üùc…Öó„0úû‹v£õÂÂÔc>¡Áï/HÂ~yûö·w¿´_üñþ§ú±sö{N,«3'!¾Ë}ßî4·OÕ}Ñ9 RŽDq .Rá÷Wx–¦:ί ÆBoHQ°(jú»›û%;¾¬M¶ ;ȯ&X"٫輦£p§N¸‡¸· Ëuûßtš{WÖ%}$Ðú Η…^wšË½ÂpûQqÃhy(”mÜ9ß*wPu‡Åb·ÎB”î ‘X쉒 /ÈÕ|Å:ÍìÂV­Í'Õ̾œÅ4z$ç ÉršPwˆèŠCHE/þv¨C×-i¿ÑlÁ‡.õ¡ }æããò¶4A\§ÂZž¶]*l5Íðqâq¢Ê—ø: CkÎx„ÔümèŽÝTœ©–Q äíø*øa_Šø£¹¡v=¼ýŽêýà0ŽÜYø¸ˆm]MŽR*H„{d6Æ!,„ϸò¦ŒC´sœ!ÇÀz×°L˜™k‡E¦¢D Ê z 8“02ÞrL«Mô)Ž%žQ­eH8IPP6Þª²“¤Í̘¥¼Ì éeëÈGˆ5ª¸+‚‚1xo:É A0™4†A>#NÁ|FérθA Éq°Ò+s¬ga+«"xžÍVd?ú:•«—KçÌœ¼î9$6øÞ̤²Á¡/ÈJp4P·g½’)¥Í&mcï=DÉØ‹šµ¬cPìCD¨³@ûÉqFøï”p cB0ñ›]ûEØ=ÎbqÓ‹†4´6Ç` M"kÚÎs¦ÜDhöë8­ag$a¹«rqíöºÓ˻߽h°Jæ×q­:ïh–‘(1ò±A ÂÚèR/LËL¹®4ùÀû—ÙØÑÄÄäÄä>Šãä]+I¼×%3d8ü™QxFþ!Å ØoÁ§ôáCK /ÀL¡oa5+0¾>ƒÍ(e¯t·]Eí<0þµ¤Ãµ­ûÚ´KÐ ¸ï±PŒ•Iç0Æà› Üiªg3h#êÑMÓÄœm„–ûOݬœ]CÈgg!A%`1hBYQ²ª‹ÔGgÒ×X–u¿-]àŒ¨1gLÈç2è¸)ˆA¯YÀ\PÜ®£Ä²ëb<ͦک^{ú„b„’ÀZxçÃEÛô€}ŒWª¨ý²zÓQ†)嵩œÌ±3ØÑ`'¡«ÍtWq @–¾»ÂžÁ N>ÚI‚}ƒJ’܌٭£! pÓ@, G$ ãouA&h6Ž‘W:ùÞêNï¿FxnÐDÉêOšÙJPTôDŸ¤ÚV.Lj¢æÍ®‡à³kgøìúØ_X#"Ô˜é݇m(™zRÒcÚ{P¶PÆñ†m1(Ö¤Ä2TÎçØ· æ§qµcÌýÝ©;ƒTËZ1úapù§3þ÷ÑzFbPÝ Ä`àävKåCÇ ã¼æ¹æÈ¥¦ZEf(!êK0ËÎ4·H©f_?VANd-@¥™—Uàä©ôI–åÉoµW8&n|^ºq%hµd6ç6rïýµ reN‚Ú©`·ÔâüÚ¾Oä}¢ae«À³€£¨Kì¡YY®U%Ãå žétÚèÇñ¦S‚ø4ΘÂ5~NõÌèÞ9Ý»nõþAfÑh€Ÿ·P…ÃÇncžÓ\#©û8ÎË—/o ×ûpfl´\V@!Ò:ͧ_}Ô 8K㢼Mž¾¯§¾Si¯¡ÝÏ™_gú÷x…¢8Ä 8u¹_—ÿ—MÂ}Vé½tø‚˜°ÆnŠBö-M&ÀàRmX‰—Ö†%Ht«ÓÜôê¡–æ.«îá¬VÕ:s¥‘UÅÚ––ãh;ÊØnC†º‰OTÃÅŽV·«){4B„~P’ÈÅw“ÉÿPKxºZ<~‚¹ýìƒ>IAR-STR912/examples/TIM/PWM/.svn/text-base/Readme.txt.svn-baseUT “LjK“LjKux êëµUËnÛ0¼ Ð?ì± RÛ ú4Ð#Ñ=R’NàS¡ØŒMÄ’ ŠÎãï»+¹NÒ¤‡)O²vgvvÌ] ^9ð.zQq>—bšh8>ƒÒ™]¸ÆlÌ»¦¶‹^ƒ†ÁLìÆ@^Vg Ò”ËÊ ü½§¶óëÆÁÓ3†,Šm·»(½mjЦ¬(9.½AR×zm»3KJ}ž|vÒÆpa\Kˆ“Á¨˜váì¶#9°?}Ù\ƒ_Ð"~_VÛ î)Ilë÷0¦gT|zJŠ¿)ïwÎ/PKxºZIAR-STR912/examples/TIM/PWM/.svn/text-base/91x_conf.h.svn-baseUT “LjK“LjKux êëµWMsÛ6½{ÆÿagrI<©EÒ_‰o‰˜òC%A{|Òг‘H—¢šº¿¾ ÒR$XD˜™ÒA»ûöíÃ\ó# ÞÓ@£ÉCÌǞDz®!A>«J¹”³º*‹|¶†c©§'g0Ê—Âl%a·ná³ýÏtV‹ó'!›ú©¬`ÝB@] ÏÏË|–ÕyY€ÙJݬ–HZ­kàëõFÎغØŸ´[¸“ÕZeØçV“ ׳*nHvì~þXeÕ (ù—MÕÔ8Gø/^J€—¯ë²z¹U¿Q¨ã(¡7Bmìòí&ì×X×ÿÅÂc0‰YÂBI4÷$fpïqêO`Å0N¹KBÊ ý £"ŽBNH<âûF† <æ»às2ôYCIÂpyŒèX«ý¥1D£0a¤¸sN|pI@Ƭ݄ª6A Ò¢¨ßn;æ‰ÚÂ(Ž‚¦qÈ 0½áA’bÓv=$¡;h·i .ƒáÃ^·0£åЛն0„‡ÌÅ Å ›„_ô…(Jµ³yØÉ_¢§'êó._s¹€éT½Ê(b4ŧü]y!5ïéÉT ßÊê+äO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<·¢ÅGØ<?IAR-STR912/examples/TIM/PWM/.svn/text-base/tim_pwm.ewd.svn-baseUT “LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKxºZ<Þ‡ íâ:IAR-STR912/examples/TIM/PWM/.svn/text-base/main.c.svn-baseUT “LjK“LjKux êëµWYOãH~Gâ?”f¤Q@,Iöñ`ìNÒZ_k; ž,ãtHk;òÁ0»Úÿ¾UÝvH8²3‚m ѩ㫣«ºÚýÃôÌ0=ÿ&àãI'ƒÁ/FŽLËBd"­Ë"—i/©îïÂHfÜd)`½Î`™Èü8%¶ÑÔ‹¢„ÍuŽi±Ze2MjYä‰dIÂVR ,«xU5bFƒŸûÃßúÊ­3¸eEÃãRUZÊ•Y£‡h°ö,W™8¿,îÊd M%ó;¨"îÀJ ÞB”IvL@/®eWM¹**ÅUe« ·ui‘Ïå]SŠ5®ÌáU<ÿÚe1dñٜȪ.Êog´Ç¤œPÒ~ÝJÚIÇ;}žÐaË{-ÙÿƒÇÑ„°¹„Þ(º6×nN€‡0òO¹e¸&ϵoÀàNF„:Þ·¸;sFžÃ‚à®y4ÁJV cDÜs!`c#PT4ÈR·¦f¢xÅe yD„Æ££dª0 4ˆáÔŽŽ¨-¸xÌffx.7C'†mƒëEpÉ`Âl ln\ÚLAî X<@é#Ââ®þFÑM7dN1rnØ`Ž1f¡Ž­ù$…¾€ië°R£ÀsÈWDˆrç œbÒÖ94\«¯C‚iÈÀ1,—7Ù" bêdißóE°w™… “ÄÍE§ˆ­œÜÎäûWt¯^åiÖÌD?½yâG©ñàÃïÇ8“·Ç‹û{Ê’_Ê{º}êo+1ó·l}ïMæâM÷¶ÅÖ”M±-çMžª{oຠcúagŸÝ!¾1èþ;W¾ª]°z°êúÂÀÃQŠŒn(©>ÎWM½9kÝ"Äðšz“óȦ;Îxß…‰’y­âèÝrv°¿÷70ÀG9§†³ØåtL¿;æ¶¹ëœ+®ÈgrN;ú Íiì˜öaÑ”©0ÕôíuÄØ ̓óu ýÃ)Îm¤AR©ñŒV’&«!ÍŠô T ‚üÒ°>"Xò^VE¹KÔÉÃëÇð×ϸm*‚ü2ÓÊpCÚ!þ¥7Ép ÇØƒá0—ÆÂ#2Ë© •³ÚÉ9â‘$ùŒ6CÐÐÔT– ~é{#êg a‚%$ŠË$“éG—nØ.RWž~‡‹J®uMur뛢¿îÂiÍ}Sù[‹t/-ÍïÑS ÿû§ÇXa|>Ø4¿u‘+’BÐmãÁù.aK–B÷ߣŠîŸjt›u´ý¦ZøM–íÔâ>æ;G{øÜm•7H±NøN#«E™Ó•Öêk_‘|²­§äèÓs ƒs] ]µ¬À_8UZDÁ~zvÉ?Å3·ŽÏ‚ÐÁ·ðàvdDQЉòªŽ^V¥뛡U¢æÅÒî ðu]¿Ä{5Éuïàa4ú&«Dl‹{‘ÅÃÖÜ? Îwka“3­Ö*ÙÞõÖ™Êïê…²5xø¬\|]e„E×k#muá¦&¨+ävbX'øM¥º¾hr,7ú R'ûx~¦æ˜ËY‹¨ª$2‚¨úºÀÅÞ~þ£Çûóõ#Ÿ£Ìµè%;â6kgÌ¿PKxºZ<ßÈ¡KÓ,,IAR-STR912/examples/TIM/PWM/.svn/all-wcpropsUT “LjK“LjKux êëÅÓË ‚@€áý÷¶ÅÖ”M±-çMžª{oຠcúagŸÝ!¾1èþ;W¾ª]°z°êúÂÀÃQŠŒn(©>ÎWM½9kÝ"Äðšz“óȦ;Îxß…‰’y­âèÝrv°¿÷70ÀG9§†³ØåtL¿;æ¶¹ëœ+®ÈgrN;ú Íiì˜öaÑ”©0ÕôíuÄØ ̓óu ýÃ)Îm¤AR©ñŒV’&«!ÍŠô T ‚üÒ°>"Xò^VE¹KÔÉÃëÇð×ϸm*‚ü2ÓÊpCÚ!þ¥7Ép ÇØƒá0—ÆÂ#2Ë© •³ÚÉ9â‘$ùŒ6CÐÐÔT– ~é{#êg a‚%$ŠË$“éG—nØ.RWž~‡‹J®uMur뛢¿îÂiÍ}Sù[‹t/-ÍïÑS ÿû§ÇXa|>Ø4¿u‘+’BÐmãÁù.aK–B÷ߣŠîŸjt›u´ý¦ZøM–íÔâ>æ;G{øÜm•7H±NøN#«E™Ó•Öêk_‘|²­§äèÓs ƒs] ]µ¬À_8UZDÁ~zvÉ?Å3·ŽÏ‚ÐÁ·ðàvdDQЉòªŽ^V¥뛡U¢æÅÒî ðu]¿Ä{5Éuïàa4ú&«Dl‹{‘ÅÃÖÜ? Îwka“3­Ö*ÙÞõÖ™Êïê…²5xø¬\|]e„E×k#muá¦&¨+ävbX'øM¥º¾hr,7ú R'ûx~¦æ˜ËY‹¨ª$2‚¨úºÀÅÞ~þ£Çûóõ#Ÿ£Ìµè%;â6kgÌ¿PKxºZ«J¹”³º*‹|¶†c©§'g0Ê—Âl%a·ná³ýÏtV‹ó'!›ú©¬`ÝB@] ÏÏË|–ÕyY€ÙJݬ–HZ­kàëõFÎغØŸ´[¸“ÕZeØçV“ ׳*nHvì~þXeÕ (ù—MÕÔ8Gø/^J€—¯ë²z¹U¿Q¨ã(¡7Bmìòí&ì×X×ÿÅÂc0‰YÂBI4÷$fpïqêO`Å0N¹KBÊ ý £"ŽBNH<âûF† <æ»às2ôYCIÂpyŒèX«ý¥1D£0a¤¸sN|pI@Ƭ݄ª6A Ò¢¨ßn;æ‰ÚÂ(Ž‚¦qÈ 0½áA’bÓv=$¡;h·i .ƒáÃ^·0£åЛն0„‡ÌÅ Å ›„_ô…(Jµ³yØÉ_¢§'êó._s¹€éT½Ê(b4ŧü]y!5ïéÉT ßÊê+äO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<Õ§qiÚL'IAR-STR912/examples/TIM/PWM/tim_pwm.ewpUT “LjK“LjKux êëí\moÛ¶þ¼ûB›oëüÒn¸-àuP§ÕjÇ†í¤»@ƒ–h™­Djå8ûõ÷’ü[vCQ.–:©^(><‡äá9Üùc…Öó„0úû‹v£õÂÂÔc>¡Áï/HÂ~yûö·w¿´_üñþ§ú±sö{N,«3'!¾Ë}ßî4·OÕ}Ñ9 RŽDq .Rá÷Wx–¦:ί ÆBoHQ°(jú»›û%;¾¬M¶ ;ȯ&X"٫輦£p§N¸‡¸· Ëuûßtš{WÖ%}$Ðú Η…^wšË½ÂpûQqÃhy(”mÜ9ß*wPu‡Åb·ÎB”î ‘X쉒 /ÈÕ|Å:ÍìÂV­Í'Õ̾œÅ4z$ç ÉršPwˆèŠCHE/þv¨C×-i¿ÑlÁ‡.õ¡ }æããò¶4A\§ÂZž¶]*l5Íðqâq¢Ê—ø: CkÎx„ÔümèŽÝTœ©–Q äíø*øa_Šø£¹¡v=¼ýŽêýà0ŽÜYø¸ˆm]MŽR*H„{d6Æ!,„ϸò¦ŒC´sœ!ÇÀz×°L˜™k‡E¦¢D Ê z 8“02ÞrL«Mô)Ž%žQ­eH8IPP6Þª²“¤Í̘¥¼Ì éeëÈGˆ5ª¸+‚‚1xo:É A0™4†A>#NÁ|FérθA Éq°Ò+s¬ga+«"xžÍVd?ú:•«—KçÌœ¼î9$6øÞ̤²Á¡/ÈJp4P·g½’)¥Í&mcï=DÉØ‹šµ¬cPìCD¨³@ûÉqFøï”p cB0ñ›]ûEØ=ÎbqÓ‹†4´6Ç` M"kÚÎs¦ÜDhöë8­ag$a¹«rqíöºÓ˻߽h°Jæ×q­:ïh–‘(1ò±A ÂÚèR/LËL¹®4ùÀû—ÙØÑÄÄäÄä>Šãä]+I¼×%3d8ü™QxFþ!Å ØoÁ§ôáCK /ÀL¡oa5+0¾>ƒÍ(e¯t·]Eí<0þµ¤Ãµ­ûÚ´KÐ ¸ï±PŒ•Iç0Æà› Üiªg3h#êÑMÓÄœm„–ûOݬœ]CÈgg!A%`1hBYQ²ª‹ÔGgÒ×X–u¿-]àŒ¨1gLÈç2è¸)ˆA¯YÀ\PÜ®£Ä²ëb<ͦک^{ú„b„’ÀZxçÃEÛô€}ŒWª¨ý²zÓQ†)嵩œÌ±3ØÑ`'¡«ÍtWq @–¾»ÂžÁ N>ÚI‚}ƒJ’܌٭£! pÓ@, G$ ãouA&h6Ž‘W:ùÞêNï¿FxnÐDÉêOšÙJPTôDŸ¤ÚV.Lj¢æÍ®‡à³kgøìúØ_X#"Ô˜é݇m(™zRÒcÚ{P¶PÆñ†m1(Ö¤Ä2TÎçØ· æ§qµcÌýÝ©;ƒTËZ1úapù§3þ÷ÑzFbPÝ Ä`àävKåCÇ ã¼æ¹æÈ¥¦ZEf(!êK0ËÎ4·H©f_?VANd-@¥™—Uàä©ôI–åÉoµW8&n|^ºq%hµd6ç6rïýµ reN‚Ú©`·ÔâüÚ¾Oä}¢ae«À³€£¨Kì¡YY®U%Ãå žétÚèÇñ¦S‚ø4ΘÂ5~NõÌèÞ9Ý»nõþAfÑh€Ÿ·P…ÃÇncžÓ\#©û8ÎË—/o ×ûpfl´\V@!Ò:ͧ_}Ô 8K㢼Mž¾¯§¾Si¯¡ÝÏ™_gú÷x…¢8Ä 8u¹_—ÿ—MÂ}Vé½tø‚˜°ÆnŠBö-M&ÀàRmX‰—Ö†%Ht«ÓÜôê¡–æ.«îá¬VÕ:s¥‘UÅÚ––ãh;ÊØnC†º‰OTÃÅŽV·«){4B„~P’ÈÅw“ÉÿPK xºZ< IAR-STR912/examples/TIM/OPM-PWM/UT ”LjKʈKux êëPKxºZ<*’Â÷8*IAR-STR912/examples/TIM/OPM-PWM/Readme.txtUT ”LjK”LjKux êëµUMoÛ8½ ИcS¤¶c¤Û®=(mЇKÑ |Z¨cÕ(*ÿ~g$ÕN[ïa.OgÞ›7äxúþ‚wþøÉf'øj-a>›ý©ŒôÞÔªP{kêJï[¸u÷°Ô…‚8+œÖ„ÊòRMì‹¥¯³ÇÚÀÛµ€ÈÀkšBï3«ë ¤ÊJJ2«Ô´xÛv*§äÙÇéÍçi/m÷Ê´„¸™Ìz€j÷F7=ɉýífýö¨@òØKV6…š î7/R²Ö­­Íë‚~£âùœúAñü{ìö×nnÆØ¿uú?(–kÁRKH“¥|ðƒ‡5÷×ÀSX&V[x±Ï ‰Ãxt愜®`óŒ¾çôl"(뜺ëìêŽÙ“áδ3¸îlÓYÜ/› I¿ÛÜNfW”=feŸ”5–*»Îöi2¿¢œ ^±ÄŶjÐÕtövP6dq„aú‰ëBEסš·W ž”y£[]@åõ}xQƒ­>TYÑ·ä:6ØNjɪʶ—Æuþ¼yù›<›BýÕdˆðG‡ÁûˆÜuÊLW“ý0>#üMgx04’‰AÛ!Ʊ”1]cÑÐ*/p<‘–õù8µýI†ëp,IAR-STR912/examples/TIM/OPM-PWM/.svn/entriesUT ”LjK”LjKux êë­“OoÛ0 ÅïB¿ŠmêE)·{Vdô2È•z‹ÃVÖ|ü©[Q`7cË; !þôø(Aˆ4,Â(%^J™×]×Åy¾^K»þœÚõr]"çËrâvâÒÕ»år)E]Y®Ón>‡R‹Æµ{üth¾^ªŽoaœÏ¼vÇÇ}÷ùiß<}Ýÿ[Q¥|¦Qú(Õa'mKHöYh…â{y=-ÞÅ4m½~GÊÖøSM?SЉê"FÖ9÷ xËREˆñ>Ó´+Ù/PK xºZ</IAR-STR912/examples/TIM/OPM-PWM/.svn/prop-base/UT “LjKʈKux êëPK xºZ</IAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/UT ”LjKʈKux êëPKxºZ<·¢ÅGØ<?IAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/tim.ewd.svn-baseUT ”LjK”LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKxºZ<*’Â÷8BIAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/Readme.txt.svn-baseUT ”LjK”LjKux êëµUMoÛ8½ ИcS¤¶c¤Û®=(mЇKÑ |Z¨cÕ(*ÿ~g$ÕN[ïa.OgÞ›7äxúþ‚wþøÉf'øj-a>›ý©ŒôÞÔªP{kêJï[¸u÷°Ô…‚8+œÖ„ÊòRMì‹¥¯³ÇÚÀÛµ€ÈÀkšBï3«ë ¤ÊJJ2«Ô´xÛv*§äÙÇéÍçi/m÷Ê´„¸™Ìz€j÷F7=ɉýífýö¨@òØKV6…š î7/R²Ö­­Íë‚~£âùœúAñü{ìö×nnÆØ¿uú?(–kÁRKH“¥|ðƒ‡5÷×ÀSX&V[x±Ï ‰Ãxt愜®`óŒ¾çôl"(뜺ëìêŽÙ“áδ3¸îlÓYÜ/› I¿ÛÜNfW”=feŸ”5–*»Îöi2¿¢œ ^±ÄŶjÐÕtövP6dq„aú‰ëBEסš·W ž”y£[]@åõ}xQƒ­>TYÑ·ä:6ØNjɪʶ—Æuþ¼yù›<›BýÕdˆðG‡ÁûˆÜuÊLW“ý0>#üMgx04’‰AÛ!Ʊ”1]cÑÐ*/p<‘–õù8µýI†ëp]àÊ›2Ñê¨!©§=£ÉÕ9Cû6Æ–X`‹ÊÑZ{.‚ÅæêžÓt~üÑâ©|VHfÆmúaV(WMl*0Ÿ#¿°œìÚ ¨Ñ’Èf†1nÅI1.Ô½e 2{8†Ç­ˆCs Qߊ=Dç/Ô![àµ5ªX,¸`¾îüM%fùÊv1 zÜÉôÊ]Ü»7Îýôí4}tz£ôÕXhO“!g~â‰Ì­)nÎÏWm[­‡b1†qé_>Ô œ9y}s4JBkÌ‹V«Õ–?-ùQàwó'»£Nä§ÕJO7Ol‹e…·—Z­‡ ~ªQD—¢Yˆ•:ÌÙÿ]¥C/ÏXlЯ{–>µ|]Ÿˆ>¦I1Úx2zÓ~yýÝxbe‡ú²öØ—^áÐ͑޲Žÿ6°€òûÑKQ4ã:Îa€ô8˜yù„`æMÝÁŒã\á9¡Ç§jª=Í>sœ!ÇÀz×°L˜™‡-—˜Š*ƒêâLÂÈxË1­6Ò§xÉ(ñŒj-EÂqŒ‚²ñV Çuh`Æ,áefH(]GFx‰øg£Š»"(ƒ÷Æ¡“  “Jcä#âÌ·a”.çŒÄ<+½6aÁz†°²*‚çÉlEú£¯S¹z¹tÎÌÉëžCiƒ€ïíÁL*ú‚¬Gu;vØ+™RÚlÒ.–ÁñÞC4ñ—Œ½¨YË:&Åþ0D„: d°Ÿg„ÿNÇ0&‘Ù°Ÿ‡Ýã47½hHCks –Ð$¸v¬é<ã`ÊM„öh¿Ž’&pJ–»*×n¯;½¼±ûÝ‹«d~óhÕyG³”Dy‘ jÖF—zaRfÊu¥ÉÞÿÌÆž& &'&÷Q'ëZIâ½,™!ÃÑà”Âk4²ÉÅa Ž<¥¿ZjxÎar…| «YñõñlF)‹Øx­»Eè*jç ãŸK:\ÛºoL»ô û ÅX™t.c ¾™ÀÁѦz6ƒ¶¢nŠ˜&æl#´Ü¯u³rv !Ÿ†@ƒÅ 1dEDɨ.RyœIÿ]cYÖü¶tS¢Æœ1Q Ƞ㦠e¼f#pAq»ŒË®‹ñ8›j¯zíéŠH ká œ mÓ[v¯TQûeõ¦£ RÊ%jS9©cg°£ÁNBW›讣€ ,}w=ƒœ4|°ãû•$¹³[GCà¦XŽH¶@ůuA&h6ŽW:ù^ëNï?GxnÐDÉêOšÙJPTôD¥ÚV.Lb¢æÍ®‡à³kgøìúØ_X—D¨ 0Ó»»P2õ¤¤Ç´÷ l7 Œã-ÛbP¬-H‰e¨œÏ±ocÌOãjǘ‡»Sw©–=´2 côÃàòg0üëÑzBbPÝ Ä`àdvKåCà ã¬æ¹æ­È¥¦ZEf(!êK0ÍÎ4·H©fŸ=TAN_y#@BT³9ܽÍb±¹¿9ÖSžÛso>üŒ¢ ésÌÜAº³inÖþ Æá³Úc{–",3Ú;!R(õ¢´{'˜ûJÀᲂ,,ÑÞJ’p›t¢SP›À‘h0ŽÆË ͹U h„¾¤¯]®ö¡RÁêÃLä­ ÍIP²RÍ@4K³*Ô2ÕÕG‘ÙÛÔÞ² —APHþQoE™ÇëƒëW‡\'7í«ºÃ›_©¼ùéP KH'H›#I'òAÌïÕë.ëéuÏ¿oo^a{N¬ÐU Õ”o®°òts™EhØ^M8FÂŽA®Zpäd-@¥Y—UàdiôqšáÉŽo³W8&nc|^ªq%hµd5g6òàݵ òdN‚Ú‰`³ÔâüÚ¾Oä}¢aeæ«À³€£e— þÐC³²<«J†Ë#<Ó©´ÇQ‹ñ¦S‚ø4J˜Â5~NõÄÈÞ9ïÝ»nõÁýQVÑhpŸµP…ÂÇncžÏÜ ©p»çùóç·¹ë‹}836Z.+ ‚ H´Nóñ×uÎ’(/¯@ãÇïê©ïS:hèE÷cê×Ù£þ=^£e✺̯Ëþ˾"á>­ô^:|ADXc?=!ý†&`p©6¬ØKjÃ’ÜO!V§¹íÕc,Í]UÝÃi­ªuæJ#6ªŠ´,-Åh{ÊØmCŠºOTÃÅžVw«){t‰=þ $óï%“ÿþPKxºZ«J¹”³º*‹|¶†c©§'g0Ê—Âl%a·ná³ýÏtV‹ó'!›ú©¬`ÝB@] ÏÏË|–ÕyY€ÙJݬ–HZ­kàëõFÎغØŸ´[¸“ÕZeØçV“ ׳*nHvì~þXeÕ (ù—MÕÔ8Gø/^J€—¯ë²z¹U¿Q¨ã(¡7Bmìòí&ì×X×ÿÅÂc0‰YÂBI4÷$fpïqêO`Å0N¹KBÊ ý £"ŽBNH<âûF† <æ»às2ôYCIÂpyŒèX«ý¥1D£0a¤¸sN|pI@Ƭ݄ª6A Ò¢¨ßn;æ‰ÚÂ(Ž‚¦qÈ 0½áA’bÓv=$¡;h·i .ƒáÃ^·0£åЛն0„‡ÌÅ Å ›„_ô…(Jµ³yØÉ_¢§'êó._s¹€éT½Ê(b4ŧü]y!5ïéÉT ßÊê+äO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZIAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/main.c.svn-baseUT ”LjK”LjKux êëåXYoÛH ~ÿ@´À")²±åv7» ò Hc[X]+É ò$(ö8T– iºÇ_rFòQMšôi É9©IçÝ–GÆ1žXƒa½n÷W#GŒ‹œ§|\y&Æ%l3=‡¢¬òâË9=cÒz=JÚÙZÒz­ìÃfBµF¶+Ù?€q4dà,dn¡×®õ€ÁõÐ2†`…Ð÷Œ,Sw žk߀n9!èÚx-Ór`ŒÂÈsXܵ ±’¥ÀrÑÜÑ#Ës!`=»èÐ ÈÜQˆJà& ¤+”9yê%“…¡£CGvtB¯…e³™žk!„CݶÁõ"¸b0d¶ ¶¥_ÙLBêî ˜V€Ú'„e¹ê:EšnÈþaä–nƒ©;ú€…*ôæ“r!ÃVaVH!ôÏ!®ˆ åÎëC8¤-r¨»fG…££› ®n–Ù" ªd)nË|¬n¹ÌÄ€†I²äž‹¤H,I®gòõ+ºsxÐAVÙ8­'¼„Ÿ_¼ñ­Pxðæwí1NÅíéý›ÃéÉ/ÄuŸêËœOøô%î-"¢‰Œ¿(‚¯g öæ—¥ä+ć¤Émú’Dâá¾7±•‰*Â4š˜F€v'¬Šz\a«¼8<ø–·®¶ØYU[£8­³±ìóØ«œŽéÙd¿ ºE|aÐW®|9TÛ`Õ`UuËÀÃQŠ‚v(É÷8›×Õê¬uóŒ“À««UÉRpLw¶)xÝ…‰Y%ã8zÈÅäøðào:a€·bJ/œÉ®Fú øÆÜÖwGÇRʳ‰˜Òý…Æ(v û0¯‹17äô=j7c/4Ž/Ú8:ïF8¶q ’RNgt’Ôiã4‚R"-…ê#€)D™+°´ã¶Öâbùèþâënë’ ?M”1\‚¦Pe­aõwñÐV¶HRñ—úÞYºÕý+…e«Æs“™vÌ¥Q‚¾‰eô‚ÊHTSt&á“lBZK/œÉé]:"ññ…J³"Óû>2½÷O#ÓkɼßJ¦·<žÍµ— ŠaIj ž@Rê5ädÓiØÉýÝôNYî`÷MngOäv¶ƒÛÙ7¹íæÖhÀ¢¹‚µ­¤O¥#ýþ´Ù•—Õ¤ÒÑ~oÀ¬YÊ-;ÕeûwáŸÅó‡‹}v¦(¸ê†—К¨n¶×ŒfKkAϱ_—÷~¦{­ô´âEFã¡1Užp»·n§*ædoŽšsyv’aƽggF€ËÇzÎÐÞÊã•­XôóR+©â®¶%³g»3»ìfÝoU4µŸÕ‚ÞøYïŽ]0ÖŽ Ï¿vÀÁ;Û àzh´#.¥õ/v+ʾ«éÕЄÁ¾±ÇÈ/pè')§ÙÒ}ì÷÷©ÖiÉc›?ð4ÖC¼Öï3Á†•O”Mca{×Oð‘ÝU÷ÒI÷ñj/©>–V㦉`]äœ:½§V ^êe¿Ìë ‰näòÈ–c(‰1›4ˆòø#=ˆÖY{å²Ñ6ˆ®úÏ)Ôß“A”Ɩ뢘MîVLbfX¬.†ÿ¿ª{¿­ŽzßYGÚÎ:êmÔé}¾)?Òhã_uSÙ\ÏùÏsMº”÷-›5ŸËÿPKxºZE=€Vz êa…IcÑ$÷ƒÝñãñS)ò–ÃëìÂÿÇ0û‰ãS¿Œ}Mo -ü‚i“Jaå:#—ÉrE ~×R"ÄJåÈ Â´ž@ýæŽ ¨sñ•Q¼KÍ ìÖ¡uŽBoæ«(W3í8žët Èö°!˜r›•ŠìåW‹óðI7 NSaÇ=îЊwù»‹d¼]$F9£l!£ g6VØCâ -éÔŒ7«n±wû1¦Sÿ`Rìu®ËPÚvyPK xºZ<+IAR-STR912/examples/TIM/OPM-PWM/.svn/props/UT “LjKʈKux êëPK xºZ<)IAR-STR912/examples/TIM/OPM-PWM/.svn/tmp/UT ”LjKʈKux êëPK xºZ<3IAR-STR912/examples/TIM/OPM-PWM/.svn/tmp/prop-base/UT “LjKʈKux êëPK xºZ<3IAR-STR912/examples/TIM/OPM-PWM/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ</IAR-STR912/examples/TIM/OPM-PWM/.svn/tmp/props/UT “LjKʈKux êëPKxºZʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKxºZ]àÊ›2Ñê¨!©§=£ÉÕ9Cû6Æ–X`‹ÊÑZ{.‚ÅæêžÓt~üÑâ©|VHfÆmúaV(WMl*0Ÿ#¿°œìÚ ¨Ñ’Èf†1nÅI1.Ô½e 2{8†Ç­ˆCs Qߊ=Dç/Ô![àµ5ªX,¸`¾îüM%fùÊv1 zÜÉôÊ]Ü»7Îýôí4}tz£ôÕXhO“!g~â‰Ì­)nÎÏWm[­‡b1†qé_>Ô œ9y}s4JBkÌ‹V«Õ–?-ùQàwó'»£Nä§ÕJO7Ol‹e…·—Z­‡ ~ªQD—¢Yˆ•:ÌÙÿ]¥C/ÏXlЯ{–>µ|]Ÿˆ>¦I1Úx2zÓ~yýÝxbe‡ú²öØ—^áÐ͑޲Žÿ6°€òûÑKQ4ã:Îa€ô8˜yù„`æMÝÁŒã\á9¡Ç§jª=Í>sœ!ÇÀz×°L˜™‡-—˜Š*ƒêâLÂÈxË1­6Ò§xÉ(ñŒj-EÂqŒ‚²ñV Çuh`Æ,áefH(]GFx‰øg£Š»"(ƒ÷Æ¡“  “Jcä#âÌ·a”.çŒÄ<+½6aÁz†°²*‚çÉlEú£¯S¹z¹tÎÌÉëžCiƒ€ïíÁL*ú‚¬Gu;vØ+™RÚlÒ.–ÁñÞC4ñ—Œ½¨YË:&Åþ0D„: d°Ÿg„ÿNÇ0&‘Ù°Ÿ‡Ýã47½hHCks –Ð$¸v¬é<ã`ÊM„öh¿Ž’&pJ–»*×n¯;½¼±ûÝ‹«d~óhÕyG³”Dy‘ jÖF—zaRfÊu¥ÉÞÿÌÆž& &'&÷Q'ëZIâ½,™!ÃÑà”Âk4²ÉÅa Ž<¥¿ZjxÎar…| «YñõñlF)‹Øx­»Eè*jç ãŸK:\ÛºoL»ô û ÅX™t.c ¾™ÀÁѦz6ƒ¶¢nŠ˜&æl#´Ü¯u³rv !Ÿ†@ƒÅ 1dEDɨ.RyœIÿ]cYÖü¶tS¢Æœ1Q Ƞ㦠e¼f#pAq»ŒË®‹ñ8›j¯zíéŠH ká œ mÓ[v¯TQûeõ¦£ RÊ%jS9©cg°£ÁNBW›讣€ ,}w=ƒœ4|°ãû•$¹³[GCà¦XŽH¶@ůuA&h6ŽW:ù^ëNï?GxnÐDÉêOšÙJPTôD¥ÚV.Lb¢æÍ®‡à³kgøìúØ_X—D¨ 0Ó»»P2õ¤¤Ç´÷ l7 Œã-ÛbP¬-H‰e¨œÏ±ocÌOãjǘ‡»Sw©–=´2 côÃàòg0üëÑzBbPÝ Ä`àdvKåCà ã¬æ¹æ­È¥¦ZEf(!êK0ÍÎ4·H©fŸ=TAN_y#@BT³9ܽÍb±¹¿9ÖSžÛso>üŒ¢ ésÌÜAº³inÖþ Æá³Úc{–",3Ú;!R(õ¢´{'˜ûJÀᲂ,,ÑÞJ’p›t¢SP›À‘h0ŽÆË ͹U h„¾¤¯]®ö¡RÁêÃLä­ ÍIP²RÍ@4K³*Ô2ÕÕG‘ÙÛÔÞ² —APHþQoE™ÇëƒëW‡\'7í«ºÃ›_©¼ùéP KH'H›#I'òAÌïÕë.ëéuÏ¿oo^a{N¬ÐU Õ”o®°òts™EhØ^M8FÂŽA®Zpäd-@¥Y—UàdiôqšáÉŽo³W8&nc|^ªq%hµd5g6òàݵ òdN‚Ú‰`³ÔâüÚ¾Oä}¢aeæ«À³€£e— þÐC³²<«J†Ë#<Ó©´ÇQ‹ñ¦S‚ø4J˜Â5~NõÄÈÞ9ïÝ»nõÁýQVÑhpŸµP…ÂÇncžÏÜ ©p»çùóç·¹ë‹}836Z.+ ‚ H´Nóñ×uÎ’(/¯@ãÇïê©ïS:hèE÷cê×Ù£þ=^£e✺̯Ëþ˾"á>­ô^:|ADXc?=!ý†&`p©6¬ØKjÃ’ÜO!V§¹íÕc,Í]UÝÃi­ªuæJ#6ªŠ´,-Åh{ÊØmCŠºOTÃÅžVw«){t‰=þ $óï%“ÿþPKxºZ‡¢¬òâË9=cÒz=JÚÙZÒz­ìÃfBµF¶+Ù?€q4dà,dn¡×®õ€ÁõÐ2†`…Ð÷Œ,Sw žk߀n9!èÚx-Ór`ŒÂÈsXܵ ±’¥ÀrÑÜÑ#Ës!`=»èÐ ÈÜQˆJà& ¤+”9yê%“…¡£CGvtB¯…e³™žk!„CݶÁõ"¸b0d¶ ¶¥_ÙLBêî ˜V€Ú'„e¹ê:EšnÈþaä–nƒ©;ú€…*ôæ“r!ÃVaVH!ôÏ!®ˆ åÎëC8¤-r¨»fG…££› ®n–Ù" ªd)nË|¬n¹ÌÄ€†I²äž‹¤H,I®gòõ+ºsxÐAVÙ8­'¼„Ÿ_¼ñ­Pxðæwí1NÅíéý›ÃéÉ/ÄuŸêËœOøô%î-"¢‰Œ¿(‚¯g öæ—¥ä+ć¤Émú’Dâá¾7±•‰*Â4š˜F€v'¬Šz\a«¼8<ø–·®¶ØYU[£8­³±ìóØ«œŽéÙd¿ ºE|aÐW®|9TÛ`Õ`UuËÀÃQŠ‚v(É÷8›×Õê¬uóŒ“À««UÉRpLw¶)xÝ…‰Y%ã8zÈÅäøðào:a€·bJ/œÉ®Fú øÆÜÖwGÇRʳ‰˜Òý…Æ(v û0¯‹17äô=j7c/4Ž/Ú8:ïF8¶q ’RNgt’Ôiã4‚R"-…ê#€)D™+°´ã¶Öâbùèþâënë’ ?M”1\‚¦Pe­aõwñÐV¶HRñ—úÞYºÕý+…e«Æs“™vÌ¥Q‚¾‰eô‚ÊHTSt&á“lBZK/œÉé]:"ññ…J³"Óû>2½÷O#ÓkɼßJ¦·<žÍµ— ŠaIj ž@Rê5ädÓiØÉýÝôNYî`÷MngOäv¶ƒÛÙ7¹íæÖhÀ¢¹‚µ­¤O¥#ýþ´Ù•—Õ¤ÒÑ~oÀ¬YÊ-;ÕeûwáŸÅó‡‹}v¦(¸ê†—К¨n¶×ŒfKkAϱ_—÷~¦{­ô´âEFã¡1Užp»·n§*ædoŽšsyv’aƽggF€ËÇzÎÐÞÊã•­XôóR+©â®¶%³g»3»ìfÝoU4µŸÕ‚ÞøYïŽ]0ÖŽ Ï¿vÀÁ;Û àzh´#.¥õ/v+ʾ«éÕЄÁ¾±ÇÈ/pè')§ÙÒ}ì÷÷©ÖiÉc›?ð4ÖC¼Öï3Á†•O”Mca{×Oð‘ÝU÷ÒI÷ñj/©>–V㦉`]äœ:½§V ^êe¿Ìë ‰näòÈ–c(‰1›4ˆòø#=ˆÖY{å²Ñ6ˆ®úÏ)Ôß“A”Ɩ뢘MîVLbfX¬.†ÿ¿ª{¿­ŽzßYGÚÎ:êmÔé}¾)?Òhã_uSÙ\ÏùÏsMº”÷-›5ŸËÿPKxºZ«J¹”³º*‹|¶†c©§'g0Ê—Âl%a·ná³ýÏtV‹ó'!›ú©¬`ÝB@] ÏÏË|–ÕyY€ÙJݬ–HZ­kàëõFÎغØŸ´[¸“ÕZeØçV“ ׳*nHvì~þXeÕ (ù—MÕÔ8Gø/^J€—¯ë²z¹U¿Q¨ã(¡7Bmìòí&ì×X×ÿÅÂc0‰YÂBI4÷$fpïqêO`Å0N¹KBÊ ý £"ŽBNH<âûF† <æ»às2ôYCIÂpyŒèX«ý¥1D£0a¤¸sN|pI@Ƭ݄ª6A Ò¢¨ßn;æ‰ÚÂ(Ž‚¦qÈ 0½áA’bÓv=$¡;h·i .ƒáÃ^·0£åЛն0„‡ÌÅ Å ›„_ô…(Jµ³yØÉ_¢§'êó._s¹€éT½Ê(b4ŧü]y!5ïéÉT ßÊê+äO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPK yºZ<IAR-STR912/examples/TIM/.svn/UT •LjKʈKux êëPKxºZ< ½Yeµ$IAR-STR912/examples/TIM/.svn/entriesUT ”LjK”LjKux êë?‚0Ä÷¿Jék¡ lŽD‚$&nžøÒ´ÅøñE«7Ý].¿átg‰”p Áú‚óÖÚ)‘¿›È“ké8ºž"CÏÇðñà&såö¦Ã<<_¯j¶mê\HN=ØyÞ¬Ëÿè0K"æ &ãFÈBa!Ò(S™Ât±TpÑùÞ‘1gÓï²ãò@(iŒãòrD¶L5eyKJ°€jW¾_XÀ¦*Ù7=PK xºZ<'IAR-STR912/examples/TIM/.svn/prop-base/UT “LjKʈKux êëPK xºZ<'IAR-STR912/examples/TIM/.svn/text-base/UT “LjKʈKux êëPKxºZ<›-Ðõmo(IAR-STR912/examples/TIM/.svn/all-wcpropsUT ”LjK”LjKux êëóV02å*.˳*O¶*JŒOI,³*K-*ÎÌÏÓ--Êá S07àÒÊåç—è'”–¤—è+EôêôLõKŠJó²õ rKÒò‹r‹õ=ƒtƒC‚, ôS+s rR‹õC<}¹\ý\¸PK xºZ<#IAR-STR912/examples/TIM/.svn/props/UT “LjKʈKux êëPK xºZ<!IAR-STR912/examples/TIM/.svn/tmp/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/TIM/.svn/tmp/prop-base/UT “LjKʈKux êëPK xºZ<+IAR-STR912/examples/TIM/.svn/tmp/text-base/UT “LjKʈKux êëPK xºZ<'IAR-STR912/examples/TIM/.svn/tmp/props/UT “LjKʈKux êëPK xºZ<IAR-STR912/examples/UART/UT ”LjKʈKux êëPKxºZ<ßîœY)L!IAR-STR912/examples/UART/uart.ewpUT ”LjK”LjKux êëí\moÛ6þ¼ûBÛoëü’®X xÅiµÊ±a;Ù0h‰–ÙʤFQ®³_¿#%ù-¶ì†¢ sÝ@_Þ‘<Þ=¤Üùmµˆ¬%æ aô×gíFë™…©ÏBÃ_Ÿ‘„ýôæÍë·?µŸýöî‡ïø¾sö ûn,«3#¾ËоkwšÛ·*ÝgtF”#Q<‚‡-ð»+ªö8Púé Ȧ ä‘Dœƒ$óiBÝ!N +!½øúP‡®[Ò~¥Ù‚÷]@z,ÀÇåmi‚¸4N…µ<-l»TØjšàÄçDå9.ñuEÖŒñRó·¡;vSq¦ZF5·ã[¨à}†}I(âæ†Úõàöª÷½Ã8îsgNâã"¶u59L© ì‘éG°>]àÊ›2ŠÐò !©§=ÃñÕ9Cû6Á–˜c‹ÊÑY;.‚Åf*Íi:?þhñL>+"Sã¶aÝ0+’«&¶˜Ï_ZNþì%ÔhId=÷’4Ž*m‘F‚LN ¸s¨cf!X‰è쥺„ls¼²fCBeK,Ðñ£Ä,_Ù^Œû}ï£;ž\¹Ã÷îs};ÉŠNn”¾síi2à,H}‘»5Ç›ósãUÛÖFóP"F0.ƒË‡s_7Ú­F«qq¡=C2O¯Gކi„ÉÑjµÚòÓ’_õþ¯ÿä)êF~[­ìv]b“-ϼyÔjm>ò©F]ЦVê0·l+ºzʃΠ}0÷™ùëDô0M£ÆÃ·í‹ëïFc+¿Ô—Õc_<¼Ä‘[X$½µ¼ÿMtùwC˜c!ë8ûQÒãˆæâ ÍÛº#ǹÂ3BOÕL{š}æ8Ž!Šõ¯a­072×0[,0%UåâLÂÈ Ë1­6Ò£xÁ(ñj-CÂI‚²ñV $uh`F,åefH([G†xøg£Š»"( Ç¡“  “IcäÄ)˜oÃ(]Î7ˆ!É Vze.Ì‚õ,Š`eU,Ï“)‹ì£¯S¹z¹tÆÌÉëžÃiƒ€îÃL*ú‚¬G}•œ8sì—L)mJiËàx÷ e&0jÖ²ŽHHq0ˆ¡Îì'Çâ¿SÂ1Œ ÁÄClvì±÷( ÈM/ÒÐÚƒ%4‰®] k:ω˜r¡=گ㴆 œ1…å®Ê‹k×ëN.oì^÷EƒU2¿Ž“iÕyGÓŒIù€Q€ jÖF—úQZfÊu¥ÉÞÿÌÆŽ&ú &'&7S'ïZÉä]”ÌÁ°ÿ{Æã5òKб ˆþ*"h¦áÕ·€)´ñ5¼f–7À#0¥Š<ž„h ]Àì|¦É¸EJ5ýä°ø¡ râiÓ¹û§x¹¯xû¯„¤•`–ColÝleñAú…ôâJO„K×é÷z»ùÕ ·®we;c·s¹}¾òbF€D¨f}¹Ì±N__ë)ÏõÜ›ÿ£èÂ@úì‘©Û϶5ÍÍÚ?Á8|VlÀRDeB{'D ¥^’vïs_ Ø9V6E\4Xª½—$ñÖ‡‰NY@mG¢}Ä8=,¦,2çW) !ú’½]dt½Ú…Ê« ‡òoMhvDÂ’Ýj¢YžUd¦©¨ŠËÇ^%Êc¡Ùc¼ŠK‰ ("ÿ¨£ÌãõÀ÷«C®“»öUÝaŠÍ/Uþìt,PÉÀ¤¬Íþ‘Y ó{õ¦ËjríÙ£ âÏ*l̉õ¹ ¤šŽš+¬â¤¹<@hØX9FÂN@®Zpäd-@¥.«ÀÉOÐ'ÙáNvx“½Â1q›àóNW‚VËæÜ@î½¶VÁ)™“ v*D,µx¾v™Ž"@4¬Ìb pr´èRÁ<4-;eUÉpy„gúíaÔãx“ A|g&ðŒŸC=1®·‡Î÷®[}hS4Úç-T°Á±›Ã˜g3×H*Ø>ŽóüùóÛÂïÅÜ-—Ð@G(´NóñÏuBÎҸȯ@“ǯé©ßSÚkè#·.+w/}º0&¬±{þ û¦'Ö‘i•Õ%~ZeuŠ…9Z_§¹Qñ!mKÛ“ÆOPwVPµ€ÀØl$ºmU¸k}¼Â‘¶aö+VmÛÕÍv5eEˆÐÃ%#[üÔ—ü÷/PKxºZ¤ó0;£Îdã$Â`œ%qÄÆ)¤S/ !Š30 BBæÂÀºô¢GðY‚Úgä‹Eîƒ"Ì( ~›cæÌ Á÷fÞmº 0Úi!r0]Ú K)…IÏ+9D'qO #i½Èï»”`ž0óüF¯l‘ YÛ+_äÖcQàcBI€$1{!([ï™üñÝïvºÝÀ@þ:PÝÎÍ·O·“­eb§^kõ,Ñø[KŵÚm#^Çr#ÍÖ\箬 µév–ªÂÝS¯rXª²l+ZÂé’åt[ m„.eÅ Lß.³ƒÓ hD•7ö={µ«•ИÞ×oMm„ÆÈ¢€ —FVO°RºÛáx¨í›Vå3³æ¶ª…²Åe%*Àf-—ëýA‹-|øCÀd09¾$“¯b[ó°i°ë­1ª:í}bïàxÍŸ…sŒkÙ¥åBß*‹&Ù'ŵæÛ-–B>‹ngáDÖ?¨¦ò/  ¦’¿È²-{TçìÀÆAêWò©¥X¨¶RwÀ9<(C(ª', |†‘4“d©Q5¹“HA͵4[÷:âmžPo`0¸Ä !ýÍ©³L\ÆVj4¯šR÷Öî;6‰‘-Þëf{9)ï n!žEÑ8F¿ìHÌE<ÝŽ/‘|Úþ>V­96(ÝÎÕàåO"¸·åBs´ïwWá ¯T§'MoI£Ðmm0|•x)t;%—•“Ìð;ÍÜ“¦K”þ„ŠêYâ^" £ƒ{CÚ˜9B¨?6KÕÅy©rQb‡¢¿ôI:ü4„%‘ a6B¸6ôGW”qe“¢Ñ’w7ÆùÓç¤VÚôvqÞMí¡Ólâ¶Å¾×dÇÚì›Fû~«‘ôm]£q%,l÷?EÙn=É2Öí0Üa:w‹¤ä_Ý Û¥¿ž½n„Üí7>4טß9ܵÆÿÒ–HDó‹ì÷~x ʱY«FÚ&ž:I³äj0ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[Âf£eHŸI Òñæ’B€Ÿ,È­G‡XJ]†PP†d 1‚Lå´#|ûtrpވ׽ÈÔ‡™5ÍvÖÒ§ÜŸxªÃäÂ’²¼"ûT¤]>rÖbŸ-¤ƒÒ‰Á*1ÅŠHJ“à‚™ùóê‰[ÿ•:œ ÿ•~/3ÎôúØ‘ ›Øg¹w1{Ñ,ÝÐsÙ–©í 4Áœ«ÙŸ '.*8c ç«`Ö?*0C*&sæ3 ÁuD~(R ¯Í¬2ºIÄsY¸áÊŸ;€xàCÀÇUÑ1ptã×(ÛÕd’ÃÍ™‡H"_VPo¤C&mqW(`JÊ›‚u̧áàXS™ÒŠ£MAýYâͨ§Y=ãÜ´¤DœŽêˆó•;1©IûaòЪ‡ AñB½ôÐs¼ˆ£>ZJ*æƒ9÷¬Ñ+GâÀb¥Hæ«Ea"¾fû¢")Ž»~;g*5x5YÖ'1ôzžWò¦Gë[«õº•þ O“#àR€|B[ó/à+Ì=Rœê2‡#–¬Ã’Tá(k'­ÃsïÓË^Ö;£ä6†5FjK’п¨æeW ?9Ó UÏEפô¹èQJ.‚üyí÷jž(æ÷jÞ£1’Wó8fþ3’9öStçƒaéãžå|þ5–Ð4g¨7”-|žaéµõ(½¸¢ùf#¢iç;à±ÞÊQfØ«ßÐŒƒÄGx˾£ìÀvÏim¾§qÞ(žRFâ) g¦æ½5àmÞ ÿàv_éÛêƒøé­·7"ïÁ!Œi÷§&>QŒ‚/O¢™vÝ0VßõË^]³£¥|‘úŸ ãä†IðZ(¤ïHs >ÜÙiô¯&‡HÕ–!•IÊ>•BʽSÂÏs/Ùlõ®Ø ¸×ùg…róžïw›û¿Íå—­Ú›þÿPK yºZ<IAR-STR912/examples/UART/.svn/UT •LjKʈKux êëPKxºZ›˜Ñq‰„VÁB{`i)Õo½èu£^!€6 +N•¦D!GB@äöãN:óF–¶‘¥hIžDÎÕ@™¸«fpQÖŽ‘»U'WÍäÓÚò(ÛØ¤4š»tÖ&-%…> µjXÑ|ŽãÛó644QƒÓ¶Î’SjÛ)“b„Àƒµ~4¡-óóu÷Â@í+Ë…ñ)J鵜käAC°;ùiIv)[GÓ`Pd¼H&‚k³e•x-îòcÔé«™ßPK xºZ<(IAR-STR912/examples/UART/.svn/prop-base/UT ”LjKʈKux êëPK xºZ<(IAR-STR912/examples/UART/.svn/text-base/UT ”LjKʈKux êëPKxºZʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[Âf£eHŸI Òñæ’B€Ÿ,È­G‡XJ]†PP†d 1‚Lå´#|ûtrpވ׽ÈÔ‡™5ÍvÖÒ§ÜŸxªÃäÂ’²¼"ûT¤]>rÖbŸ-¤ƒÒ‰Á*1ÅŠHJ“à‚™ùóê‰[ÿ•:œ ÿ•~/3ÎôúØ‘ ›Øg¹w1{Ñ,ÝÐsÙ–©í 4Áœ«ÙŸ '.*8c ç«`Ö?*0C*&sæ3 ÁuD~(R ¯Í¬2ºIÄsY¸áÊŸ;€xàCÀÇUÑ1ptã×(ÛÕd’ÃÍ™‡H"_VPo¤C&mqW(`JÊ›‚u̧áàXS™ÒŠ£MAýYâͨ§Y=ãÜ´¤DœŽêˆó•;1©IûaòЪ‡ AñB½ôÐs¼ˆ£>ZJ*æƒ9÷¬Ñ+GâÀb¥Hæ«Ea"¾fû¢")Ž»~;g*5x5YÖ'1ôzžWò¦Gë[«õº•þ O“#àR€|B[ó/à+Ì=Rœê2‡#–¬Ã’Tá(k'­ÃsïÓË^Ö;£ä6†5FjK’п¨æeW ?9Ó UÏEפô¹èQJ.‚üyí÷jž(æ÷jÞ£1’Wó8fþ3’9öStçƒaéãžå|þ5–Ð4g¨7”-|žaéµõ(½¸¢ùf#¢iç;à±ÞÊQfØ«ßÐŒƒÄGx˾£ìÀvÏim¾§qÞ(žRFâ) g¦æ½5àmÞ ÿàv_éÛêƒøé­·7"ïÁ!Œi÷§&>QŒ‚/O¢™vÝ0VßõË^]³£¥|‘úŸ ãä†IðZ(¤ïHs >ÜÙiô¯&‡HÕ–!•IÊ>•BʽSÂÏs/Ùlõ®Ø ¸×ùg…róžïw›û¿Íå—­Ú›þÿPKxºZ<`ö–¬¢9IAR-STR912/examples/UART/.svn/text-base/uart.dep.svn-baseUT ”LjK”LjKux êëÅXÛn¢@¾oÒw˜˜Þ:PJÓÕ^¸«¥1îÞ¬ƒHít‘!À4öíwQ9¨Ãà¢Ñ gœoþÃ÷Ÿ@\-]ðé!ÂÞCJw àx6ž#oñÐ@!¾Õ´fç6ë«ë+Ýð‡cGt€þ†\ç×j(ºœ^nÿï¾;öß, ¥¥´Zmí¾Ó\ŸÜþÁŽÚØ{C XÑM7=ké=gFºÌ~'û˜D>‰Âd™2n^Gæ÷i¯?º™HRü 1 lgÒ«éÂGX²×‚ب‰9û˜,-äI¸üù­ A òP$Š!V Œ m" qѬ’üôA$†aÜ”F<¯œÉÚc$â!bmâ@”Þy'׆<Û%óT„UÀ--¿ ,úò*¸8*À>‘]IZXÚ¸T²Æ‘'«L?Z“„s¯¢ [ì?®n À²°ˆ&þ®<„â8æ..qW/–p„0kýÙ\¼Þ׎˜aP¢UŒgê­ Y[VÆÔÌât9Ûúôì¬G–iƒ©fº§Ò­c7µÞÜÝïvŸFÃ~§PrVÆç®:tõ·~×¾¾ºÍ»:ﺃ¼’vñ„C@@à=€M¾&ÁYKja]„µê#LÑ.ɘšf¬TÈ8l•n–%1Ls<}1{ÏN jÐùq$ïDÝyRÜ%}®®¸ãæÐ q×¹h¥hnãîœeb3`ÔÅט2U8°ÿkPÏ[Ù÷ wU9{:ʘz†r±gâ¬Ç(œÓ"ÖìæàÚæ"nŒWà˶Y˜ï´5¶Ù=$uëãë¢íé¬cçá0Ë€‰Ç¥6ÐèìIÇÚYÊ8û˜M˜ö×y@uGîªö8Púé Ȧ ä‘Dœƒ$óiBÝ!N +!½øúP‡®[Ò~¥Ù‚÷]@z,ÀÇåmi‚¸4N…µ<-l»TØjšàÄçDå9.ñuEÖŒñRó·¡;vSq¦ZF5·ã[¨à}†}I(âæ†Úõàöª÷½Ã8îsgNâã"¶u59L© ì‘éG°>]àÊ›2ŠÐò !©§=ÃñÕ9Cû6Á–˜c‹ÊÑY;.‚Åf*Íi:?þhñL>+"Sã¶aÝ0+’«&¶˜Ï_ZNþì%ÔhId=÷’4Ž*m‘F‚LN ¸s¨cf!X‰è쥺„ls¼²fCBeK,Ðñ£Ä,_Ù^Œû}ï£;ž\¹Ã÷îs};ÉŠNn”¾síi2à,H}‘»5Ç›ósãUÛÖFóP"F0.ƒË‡s_7Ú­F«qq¡=C2O¯Gކi„ÉÑjµÚòÓ’_õþ¯ÿä)êF~[­ìv]b“-ϼyÔjm>ò©F]ЦVê0·l+ºzʃΠ}0÷™ùëDô0M£ÆÃ·í‹ëïFc+¿Ô—Õc_<¼Ä‘[X$½µ¼ÿMtùwC˜c!ë8ûQÒãˆæâ ÍÛº#ǹÂ3BOÕL{š}æ8Ž!Šõ¯a­072×0[,0%UåâLÂÈ Ë1­6Ò£xÁ(ñj-CÂI‚²ñV $uh`F,åefH([G†xøg£Š»"( Ç¡“  “IcäÄ)˜oÃ(]Î7ˆ!É Vze.Ì‚õ,Š`eU,Ï“)‹ì£¯S¹z¹tÆÌÉëžÃiƒ€îÃL*ú‚¬G}•œ8sì—L)mJiËàx÷ e&0jÖ²ŽHHq0ˆ¡Îì'Çâ¿SÂ1Œ ÁÄClvì±÷( ÈM/ÒÐÚƒ%4‰®] k:ω˜r¡=گ㴆 œ1…å®Ê‹k×ëN.oì^÷EƒU2¿Ž“iÕyGÓŒIù€Q€ jÖF—úQZfÊu¥ÉÞÿÌÆŽ&ú &'&7S'ïZÉä]”ÌÁ°ÿ{Æã5òKб ˆþ*"h¦áÕ·€)´ñ5¼f–7À#0¥Š<ž„h ]Àì|¦É¸EJ5ýä°ø¡ râiÓ¹û§x¹¯xû¯„¤•`–ColÝleñAú…ôâJO„K×é÷z»ùÕ ·®we;c·s¹}¾òbF€D¨f}¹Ì±N__ë)ÏõÜ›ÿ£èÂ@úì‘©Û϶5ÍÍÚ?Á8|VlÀRDeB{'D ¥^’vïs_ Ø9V6E\4Xª½—$ñÖ‡‰NY@mG¢}Ä8=,¦,2çW) !ú’½]dt½Ú…Ê« ‡òoMhvDÂ’Ýj¢YžUd¦©¨ŠËÇ^%Êc¡Ùc¼ŠK‰ ("ÿ¨£ÌãõÀ÷«C®“»öUÝaŠÍ/Uþìt,PÉÀ¤¬Íþ‘Y ó{õ¦ËjríÙ£ âÏ*l̉õ¹ ¤šŽš+¬â¤¹<@hØX9FÂN@®Zpäd-@¥.«ÀÉOÐ'ÙáNvx“½Â1q›àóNW‚VËæÜ@î½¶VÁ)™“ v*D,µx¾v™Ž"@4¬Ìb pr´èRÁ<4-;eUÉpy„gúíaÔãx“ A|g&ðŒŸC=1®·‡Î÷®[}hS4Úç-T°Á±›Ã˜g3×H*Ø>ŽóüùóÛÂïÅÜ-—Ð@G(´NóñÏuBÎҸȯ@“ǯé©ßSÚkè#·.+w/}º0&¬±{þ û¦'Ö‘i•Õ%~ZeuŠ…9Z_§¹Qñ!mKÛ“ÆOPwVPµ€ÀØl$ºmU¸k}¼Â‘¶aö+VmÛÕÍv5eEˆÐÃ%#[üÔ—ü÷/PKxºZ<–ÉÆ- ;IAR-STR912/examples/UART/.svn/text-base/Readme.txt.svn-baseUT ”LjK”LjKux êëµVmoâFþŽÄ˜o—œ\Ó»DʃMØÖØ©m’FªT-x «³½ÖzB}gv$=zR¥«£¼óöÌ3/Kÿã‘NƧ0Žïv;Í`xqñ3¤ÙL.µ…X­*¹là˜i·ó&²ñRÀṆDð¼=óbHÅkÍZixû\ÃlìƒW×…\r#U™à%)ûÜtª¬iZ‘“òÅeð¥o¡]ýРY zÖ@4K-këäàýí¡ZY ˜{IÁ /ëB zhùƒÂ2•Qz{MßópH˜?¿Ã<ÜË~ú6ŸÁNöo¹þˆ³iwIQi<ɼ$€‡)O¥0‰¸3ß‹ÆÄQø›¥àehß3ŸE·0ž§Y< ’”Ü=°lŠÍd,Bó™—±8‚$¸õ{ŠYBæþ|œ¥¨q≠…²d1¤Þ}›=Û>¤ó0;£Îdã$Â`œ%qÄÆ)¤S/ !Š30 BBæÂÀºô¢GðY‚Úgä‹Eîƒ"Ì( ~›cæÌ Á÷fÞmº 0Úi!r0]Ú K)…IÏ+9D'qO #i½Èï»”`ž0óüF¯l‘ YÛ+_äÖcQàcBI€$1{!([ï™üñÝïvºÝÀ@þ:PÝÎÍ·O·“­eb§^kõ,Ñø[KŵÚm#^Çr#ÍÖ\箬 µév–ªÂÝS¯rXª²l+ZÂé’åt[ m„.eÅ Lß.³ƒÓ hD•7ö={µ«•ИÞ×oMm„ÆÈ¢€ —FVO°RºÛáx¨í›Vå3³æ¶ª…²Åe%*Àf-—ëýA‹-|øCÀd09¾$“¯b[ó°i°ë­1ª:í}bïàxÍŸ…sŒkÙ¥åBß*‹&Ù'ŵæÛ-–B>‹ngáDÖ?¨¦ò/  ¦’¿È²-{TçìÀÆAêWò©¥X¨¶RwÀ9<(C(ª', |†‘4“d©Q5¹“HA͵4[÷:âmžPo`0¸Ä !ýÍ©³L\ÆVj4¯šR÷Öî;6‰‘-Þëf{9)ï n!žEÑ8F¿ìHÌE<ÝŽ/‘|Úþ>V­96(ÝÎÕàåO"¸·åBs´ïwWá ¯T§'MoI£Ðmm0|•x)t;%—•“Ìð;ÍÜ“¦K”þ„ŠêYâ^" £ƒ{CÚ˜9B¨?6KÕÅy©rQb‡¢¿ôI:ü4„%‘ a6B¸6ôGW”qe“¢Ñ’w7ÆùÓç¤VÚôvqÞMí¡Ólâ¶Å¾×dÇÚì›Fû~«‘ôm]£q%,l÷?EÙn=É2Öí0Üa:w‹¤ä_Ý Û¥¿ž½n„Üí7>4טß9ܵÆÿÒ–HDó‹ì÷~x ʱY«FÚ&ž:I³äj0«J¹”³º*‹|¶†c¡§'ïa”/%DÙJÂnÝÀ'ûïé¬,gŠB6õcYÁþºÐõ€<=-óYVçeBf+Eö²Z¢hµ®­×9Wdër`4¥ÝÀ­¬Ö*Â>³š¹žUùS#²Sò‡*«^@‘ÙTMŽ3¤ÿæ¥ ðóu]V/7ê7ê8ªÐëƒB­ïâ¿›°_}]ü*>…IB9ðx$îHBáÎg®ŒÃ(N`œ2D.…8 î°ß2EcpS.â&î˜ð•¦7axH‹#Hè˜$²D…{©+8’ N<š4©Ð‚ˆ“[ ‚…ô oÆxˆj™›Ä4 ®H∹¸O‚¢XÀ‚OF†m$ItKýsµ¿”"ºÜ8âôÏwÎH ɘ¶›PÙ&HTµ(7h·0®¶0Jâ°i* oôFÀSlÚ®‡$òí– åBâQÞïu #Z ½Ym #AXD=ÜPB±IøE[„E©v6Evò÷OôàôD}Þä‹b.0ªW‹Mñ)¿AS^HÍzz2À‘*Ṭ¾A^ÀÃf±¾¸«r.áëß乜•«•,j¨%,Êå²|΋/°TjmÎÁ`«>|Uv÷"þƒÄh¨KxÚl­íËŽ¹+<²²µlS+ᲦãV³kñ‡d2fE!—V—Ãîr8]Žó.ÇE—ã²ËqÕå¸þÉC§!ëÛ¤êx:ÌŠoÖQ«}Ô굞Kõ/qÔ”Ø-uÇÒ¾RH5JáaÝW ©:¶tƒ­Ý`nÒxÂâÎzöß!EÔ ¥a[ÃŽ†Ï5|¡áK _iøZÃ5üɸÓD˜O‹½®!Õ(Å]ó8ì„h %i5…æ’R’ˆ^ÏQ5hiØÖ°cnŸôlŸ"ëšOa—D}RͰ¼Þ“€TóÁà{ ÞØ(ÅœÞU!UÇ–n°8ЈvÏ‹~€#·UûðpD³¼˜ºÕ˺Ζ°¨ä÷,f/ðW¶ÜHxûÙÿçÝ>¿½ÁìîLûÁ{sq é\Z–YÌóÅÏêùõµ»Ç5ú€×¨ý;ÛöÊu¬›¿ðß O.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZÀ­ªm„°=ŽQ1X0¤ñUýßï½À`;Þf“]Ý!U2oÞ·ù¼7o>¤í£=4Ô&¨Öè³môú.œžœ¼ÇÓ$f!›ò$Ž‚i ûLŸ>9‚n20ý%ƒò9‡¥D­)-+_Ä TŸsª(«UL}ĸÌ_’²æs†“”ƒ‘¦›‘òÉY»ó¾-Ò:‡,IÉ¢Ó:,&ÁJ8ÙxÇà°JâëÄ_Â$ž­Qó‘ŠÝR'ësú9žžRŽïj9žkovóïäkwíí/ÈØíë0²uG7]p¬®ûI±uøÔ7Ô>t-zcCSLUË|Å: ¸hc}44Ãì:v\k¨Û¹ûd¸}l±`˜h>T\Ã2ÁÖ{Š-¤аÉ\«®ƒJ`Ùšn‹P¸6×Gù¨ƒk õ–h ˆœñÀ}E]h¨¶¥tÕµ-ÓPpúÊ`¦åÂ¥}} ÁÀP.ºp©˜ŸA3lÔ~E¾ S¾`PLÓtôqç†2M*=Ý‘;Àh#ÒÂ\È:Û¶ ‡¶Ðµ­!åJщKØY]pÆZ‰¡bjm¹%;: M‡ËÏ´È‚%X2· ^äV1L]à Ù:‚d™‰IѲH²ŽdëÑû£ýôÉÓ'mÌ+š†ÙŒ¥püà‡|>¤?xö[çÖ ƒIkñ,4J‚:î|½b36H@ŠTñˆÞ‚ˆ=h"÷Ü{{™Íç,q‚ÿÐŒkLã,âñ¼QÈ›p æFß®ëŸÜv»[[^ú8[†p5Á"!¿Ié¥V¾´!ÿ}„oÍæV7~ø“ð!¥¦$ÆŠízFp+©a%KÓlʳ„]^ö¾„ò÷+øÏ¾D_ÒýÖ_®BÖ9¦g=%œ%Ë òCÜßr™EÅ]‘¥At ?™}óó0þ†^S!9|VÄ*Êð{µWŪ9I¬9^7¾»‰¥¸Ž)UK½ÉY%|ÅúÉÆy]XCvžES‘*ÞA<¦þ¾7ÆÙ›8˜£Ž=5ŽæÁu–$n^” ½‘aÝ¡±7­¼ýÈ“Gpˆ1É#$Øs¿×ïv1G£UÆ«ÔÂŒ#F VÆ«+››aGF» ûˆyD\ì¤gï;Õëy0§Q§é—ã½ΪIvÝÕ|΢Y0§_ôê>Tÿrâ,™2YßF!ô,Gm^ˆ ´Æ)|?¾ãÏÏBÓ0ž~…T˜‹~"ãkÁMÆIÅ%I=wÈ'¶ŒbaÄøKðN²”¼}ICìùŽlPÑ_Eë1=]§œ-ep$íb+õ•Í)bÕÍ©™a'¼°ÝÓÝcš'tü7˶»e¸ŸÈA×yâœ9—5£ç>ÅÉ ,ºæ ä\<­®»ßbpx¼¢…ªÜŒa…£—¯«ÂK?›ÙtHÚÎòA˜ ¤ªÑß7ð`¤4Ãkš6›²à†Í€Ól[Xôsz]£k¥@qöX¸…™æÒ"d7,Lq,£ä=LÖgÞŒ­ø‚ì·î‰òZh Yâ¸%ñÞi‡l `¾°,Þ½Óƒf#Q€ÂH¾yX˜ƒF;5:¨]Ô«‹åRójåñö,y4„úÆ3V8 ßž{ëÙ·M¨2… ýötQÒƒ6î-i¨šUS!ð:+ᘸtÞÊZ¿’2Ñeý—Ý~äHe,Q´†8ÆÍúf¥ð¼ØMª2T$LbÉYPÙˆºœNt“><¤]9˪LUs,}IúB¾÷R(ǃ·ø8{‰À<‰—’ñ¸î7·ø¶ÀïðÆZs|ܤõïò ËS‚®I©ØIIËJ®óë¯WºÂ±°ë1Þ ýk‡ûî³—ÔíЀ½ ¯äé.ŸhýS¾C„]PÀ»&Œ*¸Ú†-)£KÉ¿ÄBÎÔþÎêþþ¾öÚeŠ?Ó_ȸñt0dêêùÑfw}öåŸb¹úU^ ê_åP*ç÷¦è 9|ÚG½’œ‹ÖÃ+ü:­7†^¿à¥¿ a²B¤Î(ˆ$v‡ÌP«bà½9¨L›+´é·7ÊÒÅo 8h¦„8#Éå„@æ…â×°e ü¼Øu&QÚàÙ]ÚÏZû(ºò>øuþüDZ(íl÷ehŒ°c#ÜÞá…éFT%¨[8»³w˜ûü¿†njô7Ú®1Ðó3öôÉPK xºZ‚j´W$‚½õoØ C‡¶9M…• û;o2ÿKv÷çÕ ÷oÑ^›£€} "NYÎ-¬qDƒ3YCm+|»Ž)Öó¯=¶7jŽiTÝ;¤8æGLXСmÁPK xºZ<$IAR-STR912/examples/UART/.svn/props/UT ”LjKʈKux êëPK xºZ<"IAR-STR912/examples/UART/.svn/tmp/UT ”LjKʈKux êëPK xºZ<,IAR-STR912/examples/UART/.svn/tmp/prop-base/UT ”LjKʈKux êëPK xºZ<,IAR-STR912/examples/UART/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ<(IAR-STR912/examples/UART/.svn/tmp/props/UT ”LjKʈKux êëPKxºZ<`ö–¬¢!IAR-STR912/examples/UART/uart.depUT ”LjK”LjKux êëÅXÛn¢@¾oÒw˜˜Þ:PJÓÕ^¸«¥1îÞ¬ƒHít‘!À4öíwQ9¨Ãà¢Ñ gœoþÃ÷Ÿ@\-]ðé!ÂÞCJw àx6ž#oñÐ@!¾Õ´fç6ë«ë+Ýð‡cGt€þ†\ç×j(ºœ^nÿï¾;öß, ¥¥´Zmí¾Ó\ŸÜþÁŽÚØ{C XÑM7=ké=gFºÌ~'û˜D>‰Âd™2n^Gæ÷i¯?º™HRü 1 lgÒ«éÂGX²×‚ب‰9û˜,-äI¸üù­ A òP$Š!V Œ m" qѬ’üôA$†aÜ”F<¯œÉÚc$â!bmâ@”Þy'׆<Û%óT„UÀ--¿ ,úò*¸8*À>‘]IZXÚ¸T²Æ‘'«L?Z“„s¯¢ [ì?®n À²°ˆ&þ®<„â8æ..qW/–p„0kýÙ\¼Þ׎˜aP¢UŒgê­ Y[VÆÔÌât9Ûúôì¬G–iƒ©fº§Ò­c7µÞÜÝïvŸFÃ~§PrVÆç®:tõ·~×¾¾ºÍ»:ﺃ¼’vñ„C@@à=€M¾&ÁYKja]„µê#LÑ.ɘšf¬TÈ8l•n–%1Ls<}1{ÏN jÐùq$ïDÝyRÜ%}®®¸ãæÐ q×¹h¥hnãîœeb3`ÔÅט2U8°ÿkPÏ[Ù÷ wU9{:ʘz†r±gâ¬Ç(œÓ"ÖìæàÚæ"nŒWà˶Y˜ï´5¶Ù=$uëãë¢íé¬cçá0Ë€‰Ç¥6ÐèìIÇÚYÊ8û˜M˜ö×y@uGîÀ­ªm„°=ŽQ1X0¤ñUýßï½À`;Þf“]Ý!U2oÞ·ù¼7o>¤í£=4Ô&¨Öè³môú.œžœ¼ÇÓ$f!›ò$Ž‚i ûLŸ>9‚n20ý%ƒò9‡¥D­)-+_Ä TŸsª(«UL}ĸÌ_’²æs†“”ƒ‘¦›‘òÉY»ó¾-Ò:‡,IÉ¢Ó:,&ÁJ8ÙxÇà°JâëÄ_Â$ž­Qó‘ŠÝR'ësú9žžRŽïj9žkovóïäkwíí/ÈØíë0²uG7]p¬®ûI±uøÔ7Ô>t-zcCSLUË|Å: ¸hc}44Ãì:v\k¨Û¹ûd¸}l±`˜h>T\Ã2ÁÖ{Š-¤аÉ\«®ƒJ`Ùšn‹P¸6×Gù¨ƒk õ–h ˆœñÀ}E]h¨¶¥tÕµ-ÓPpúÊ`¦åÂ¥}} ÁÀP.ºp©˜ŸA3lÔ~E¾ S¾`PLÓtôqç†2M*=Ý‘;Àh#ÒÂ\È:Û¶ ‡¶Ðµ­!åJщKØY]pÆZ‰¡bjm¹%;: M‡ËÏ´È‚%X2· ^äV1L]à Ù:‚d™‰IѲH²ŽdëÑû£ýôÉÓ'mÌ+š†ÙŒ¥püà‡|>¤?xö[çÖ ƒIkñ,4J‚:î|½b36H@ŠTñˆÞ‚ˆ=h"÷Ü{{™Íç,q‚ÿÐŒkLã,âñ¼QÈ›p æFß®ëŸÜv»[[^ú8[†p5Á"!¿Ié¥V¾´!ÿ}„oÍæV7~ø“ð!¥¦$ÆŠízFp+©a%KÓlʳ„]^ö¾„ò÷+øÏ¾D_ÒýÖ_®BÖ9¦g=%œ%Ë òCÜßr™EÅ]‘¥At ?™}óó0þ†^S!9|VÄ*Êð{µWŪ9I¬9^7¾»‰¥¸Ž)UK½ÉY%|ÅúÉÆy]XCvžES‘*ÞA<¦þ¾7ÆÙ›8˜£Ž=5ŽæÁu–$n^” ½‘aÝ¡±7­¼ýÈ“Gpˆ1É#$Øs¿×ïv1G£UÆ«ÔÂŒ#F VÆ«+››aGF» ûˆyD\ì¤gï;Õëy0§Q§é—ã½ΪIvÝÕ|΢Y0§_ôê>Tÿrâ,™2YßF!ô,Gm^ˆ ´Æ)|?¾ãÏÏBÓ0ž~…T˜‹~"ãkÁMÆIÅ%I=wÈ'¶ŒbaÄøKðN²”¼}ICìùŽlPÑ_Eë1=]§œ-ep$íb+õ•Í)bÕÍ©™a'¼°ÝÓÝcš'tü7˶»e¸ŸÈA×yâœ9—5£ç>ÅÉ ,ºæ ä\<­®»ßbpx¼¢…ªÜŒa…£—¯«ÂK?›ÙtHÚÎòA˜ ¤ªÑß7ð`¤4Ãkš6›²à†Í€Ól[Xôsz]£k¥@qöX¸…™æÒ"d7,Lq,£ä=LÖgÞŒ­ø‚ì·î‰òZh Yâ¸%ñÞi‡l `¾°,Þ½Óƒf#Q€ÂH¾yX˜ƒF;5:¨]Ô«‹åRójåñö,y4„úÆ3V8 ßž{ëÙ·M¨2… ýötQÒƒ6î-i¨šUS!ð:+ᘸtÞÊZ¿’2Ñeý—Ý~äHe,Q´†8ÆÍúf¥ð¼ØMª2T$LbÉYPÙˆºœNt“><¤]9˪LUs,}IúB¾÷R(ǃ·ø8{‰À<‰—’ñ¸î7·ø¶ÀïðÆZs|ܤõïò ËS‚®I©ØIIËJ®óë¯WºÂ±°ë1Þ ýk‡ûî³—ÔíЀ½ ¯äé.ŸhýS¾C„]PÀ»&Œ*¸Ú†-)£KÉ¿ÄBÎÔþÎêþþ¾öÚeŠ?Ó_ȸñt0dêêùÑfw}öåŸb¹úU^ ê_åP*ç÷¦è 9|ÚG½’œ‹ÖÃ+ü:­7†^¿à¥¿ a²B¤Î(ˆ$v‡ÌP«bà½9¨L›+´é·7ÊÒÅo 8h¦„8#Éå„@æ…â×°e ü¼Øu&QÚàÙ]ÚÏZû(ºò>øuþüDZ(íl÷ehŒ°c#ÜÞá…éFT%¨[8»³w˜ûü¿†njô7Ú®1Ðó3öôÉPKxºZ<×ß:uÇa#IAR-STR912/examples/UART/91x_conf.hUT ”LjK”LjKux êëµWMoÛ8½È —¶èÆ’òÕæFK´ET^‘J“¡Øt£Ö–RYÞlö×ïPŠ]›k±*Ð¥}ð›yóf81Ìàý‘oÝwàÆ“û„}Že]a>«J¹”³º*‹|¶†c¡§'ïa”/%DÙJÂnÝÀ'ûïé¬,gŠB6õcYÁþºÐõ€<=-óYVçeBf+Eö²Z¢hµ®­×9Wdër`4¥ÝÀ­¬Ö*Â>³š¹žUùS#²Sò‡*«^@‘ÙTMŽ3¤ÿæ¥ ðóu]V/7ê7ê8ªÐëƒB­ïâ¿›°_}]ü*>…IB9ðx$îHBáÎg®ŒÃ(N`œ2D.…8 î°ß2EcpS.â&î˜ð•¦7axH‹#Hè˜$²D…{©+8’ N<š4©Ð‚ˆ“[ ‚…ô oÆxˆj™›Ä4 ®H∹¸O‚¢XÀ‚OF†m$ItKýsµ¿”"ºÜ8âôÏwÎH ɘ¶›PÙ&HTµ(7h·0®¶0Jâ°i* oôFÀSlÚ®‡$òí– åBâQÞïu #Z ½Ym #AXD=ÜPB±IøE[„E©v6Evò÷OôàôD}Þä‹b.0ªW‹Mñ)¿AS^HÍzz2À‘*Ṭ¾A^ÀÃf±¾¸«r.áëß乜•«•,j¨%,Êå²|΋/°TjmÎÁ`«>|Uv÷"þƒÄh¨KxÚl­íËŽ¹+<²²µlS+ᲦãV³kñ‡d2fE!—V—Ãîr8]Žó.ÇE—ã²ËqÕå¸þÉC§!ëÛ¤êx:ÌŠoÖQ«}Ô굞Kõ/qÔ”Ø-uÇÒ¾RH5JáaÝW ©:¶tƒ­Ý`nÒxÂâÎzöß!EÔ ¥a[ÃŽ†Ï5|¡áK _iøZÃ5üɸÓD˜O‹½®!Õ(Å]ó8ì„h %i5…æ’R’ˆ^ÏQ5hiØÖ°cnŸôlŸ"ëšOa—D}RͰ¼Þ“€TóÁà{ ÞØ(ÅœÞU!UÇ–n°8ЈvÏ‹~€#·UûðpD³¼˜ºÕ˺Ζ°¨ä÷,f/ðW¶ÜHxûÙÿçÝ>¿½ÁìîLûÁ{sq é\Z–YÌóÅÏêùõµ»Ç5ú€×¨ý;ÛöÊu¬›¿ðß O.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPK xºZ<"IAR-STR912/examples/UART/settings/UT ”LjKʈKux êëPKxºZ<þ›I»ÝÆ /IAR-STR912/examples/UART/settings/uart.cspy.batUT ”LjK”LjKux êë­UaoÛ6ý>`ÿá`th ØžÓmÌCS/)Œ¥qa{X0(ñd±¦H¤âz¿~w×Á>ͱË"OïÞ½{G½_^‚u¥<ä"@©4B%èÑÀ :PB~€P!̯–p]ç(¥¤Å¿¬ÛåhŠêûïÞ3Êl´úü7(è¡"¨‰y»Ý¢¢0 ”„`¡qا̶®…‘ A+ƒPZ®5†8iá›sK¡]P”Vá{*ŽJ¢iœmœ"Òà1Âðãn/E\•Dj±cxok!¿´>Ôh‚gvµ`†p°-Ä[‹–ªì‰$ –äÐô$ $[Ÿ¦2´¶û£vLj¤K‰Á¯Zß ­¬R›; ãå×c¸³TI¨¨ü#2];“@ð¥Q\ÜwHï•5ü„2*(¡Õ?(‡Tw¬­$ 0„mNm©k¬?FºÌ5¦Ì‘º‚½lE%ÌŸËL/;EO:%ܶíÄ%) „Ü$tTîÓ:¢VÄ– â>†Uƒ…*UÁâ #ŸF·[e`_)j …:ô5^åº7ˆ#×èje„†ù 2Š‘v¯˜—¥]3vY”¬¤öÒI°¥^'*Y6Ô3 Â!‘£œœ ™a xÚßG‹$ªRk&ʵïŒÝ3÷ãpuJ­Ãg:äØK¶Éy°iÇlf%ÎèåãÄOnž==OSM=þ{ö>¿»ßgÇ^ê[:¯úk‡ÿ/PK yºZ<'IAR-STR912/examples/UART/settings/.svn/UT •LjKʈKux êëPKxºZ<Ѩƒ+ß.IAR-STR912/examples/UART/settings/.svn/entriesUT ”LjK”LjKux êë­»NÄ0E{‹_I<{üH·%íšíìØY»I;þžðZ‰nœj4ºò=cŒÅaa ‘=”2ç†ónž×’r©óóXçi]ºÔOË1Õc*|Û-ÓT.!^–u|âóÉ—-tÎüv·¯îÚ½ÈÓ‹?ϧ”ùýnßòœJÆcþ]Û@WªP¶‚FèÚ!Ð&‘Ø£?§|\Ò8n=ì'¦·!€Êƒ”Û#ïSD¨¬öɸ.ERݰÕ/¥ŽãÀúá”Øgé¬Ð´`áekøàÀDôÂKÛ‘ŠHô4…Þ{PÙÞÉ?!È~{uy~­ƒ/WÊ¡ÖÊ™íÞäd'U;­Œ–2&CÚÂÈ!^~-ã•j!‘1@K‘œÔ:šHÁQD©‚×ÿ¡¦å&öPK xºZ<1IAR-STR912/examples/UART/settings/.svn/prop-base/UT ”LjKʈKux êëPK xºZ<1IAR-STR912/examples/UART/settings/.svn/text-base/UT ”LjKʈKux êëPKxºZ<þ›I»ÝÆ GIAR-STR912/examples/UART/settings/.svn/text-base/uart.cspy.bat.svn-baseUT ”LjK”LjKux êë­UaoÛ6ý>`ÿá`th ØžÓmÌCS/)Œ¥qa{X0(ñd±¦H¤âz¿~w×Á>ͱË"OïÞ½{G½_^‚u¥<ä"@©4B%èÑÀ :PB~€P!̯–p]ç(¥¤Å¿¬ÛåhŠêûïÞ3Êl´úü7(è¡"¨‰y»Ý¢¢0 ”„`¡qا̶®…‘ A+ƒPZ®5†8iá›sK¡]P”Vá{*ŽJ¢iœmœ"Òà1Âðãn/E\•Dj±cxok!¿´>Ôh‚gvµ`†p°-Ä[‹–ªì‰$ –äÐô$ $[Ÿ¦2´¶û£vLj¤K‰Á¯Zß ­¬R›; ãå×c¸³TI¨¨ü#2];“@ð¥Q\ÜwHï•5ü„2*(¡Õ?(‡Tw¬­$ 0„mNm©k¬?FºÌ5¦Ì‘º‚½lE%ÌŸËL/;EO:%ܶíÄ%) „Ü$tTîÓ:¢VÄ– â>†Uƒ…*UÁâ #ŸF·[e`_)j …:ô5^åº7ˆ#×èje„†ù 2Š‘v¯˜—¥]3vY”¬¤öÒI°¥^'*Y6Ô3 Â!‘£œœ ™a xÚßG‹$ªRk&ʵïŒÝ3÷ãpuJ­Ãg:äØK¶Éy°iÇlf%ÎèåãÄOnž==OSM=þ{ö>¿»ßgÇ^ê[:¯úk‡ÿ/PKxºZ<=‡ZžBIAR-STR912/examples/UART/settings/.svn/text-base/uart.dni.svn-baseUT ”LjK”LjKux êë‹vÉ,N,.NÍMÊIUÈÍOIååQ¶¼\ÑNE©‰Ùù™y%Å@açüÒ¼°¸—Of^¶KQfYjP<<±$9Ã9?/Å6^ÁÊ5±””0 0„ª2$¤ PKxºZÉÜcžE~âÁ;Ý „S’倂¨‘5²ÝaË,7äU²aé¤ ú»Æö‘R¢~z§iO´žÉ3¾ûuõ‹ÈŸk¡Oÿ›óPK xºZ<-IAR-STR912/examples/UART/settings/.svn/props/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/UART/settings/.svn/tmp/UT ”LjKʈKux êëPK xºZ<5IAR-STR912/examples/UART/settings/.svn/tmp/prop-base/UT ”LjKʈKux êëPK xºZ<5IAR-STR912/examples/UART/settings/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ<1IAR-STR912/examples/UART/settings/.svn/tmp/props/UT ”LjKʈKux êëPKxºZ<=‡Zž*IAR-STR912/examples/UART/settings/uart.dniUT ”LjK”LjKux êë‹vÉ,N,.NÍMÊIUÈÍOIååQ¶¼\ÑNE©‰Ùù™y%Å@açüÒ¼°¸—Of^¶KQfYjP<<±$9Ã9?/Å6^ÁÊ5±””0 0„ª2$¤ PKxºZ‹í®•#Äýà唤ª·Ú¼ÌÜ7*žNâÏoO_c¿~ÛÍäû^§ÿƒâ:¥pÍiE‹ªr^ßNá6eq ¬‚yÉa±d )b e‘Ýay¤FLyÃV, ^Vu™S^9º[V§x•|€ÏIÍÊ8]îw± ãž,ãºÂ$(yB¹/…±ê*rC¡f9ù˃‘ Zfõ…»—,æ%Íh\ó²`qUJ² в†+ )Íȹʨ§$Å$Œcö…ãbÅðE™EEÿ\bçŒdœ,h5t€Õ®]jqq6´ÍYåZ˜ó2wZ!’ÔλrÕM;zHŠd<´ËŠBN Ww'·Â³m'¿-aM°!NÑ$æ÷ åÂ^ä['ü‡AÞ 4§ç¿»Â Þ¨ä!}gôß 1  Ç—oÏñî9nôX û^_æNb|#hñù\ĺ[«‡½‘p/ºÇzõt˜“éW ºÆïOŽû¿¼n Ä„…Þ T"ð¯iŒì{ˆž£3¢7/®‘sàÕ‹ûvPzk”õíYŒ®™5ε¿µ‰\cžê€£FúûNÂ@†óNŒÎG£ &ÊxÌ ¬tgegû÷lƒß&ÏaÆz´ÈÔ½ˆx5`«kÏa°ª­þ¿] Æ \Ç ìcXʘýÎÂ}iqø„Ái’c‚?ä1 ÒÓ!*û•¼0`xЦ‘Æ¥lÅã`Ä¡*'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKxºZ›o§£ÕñÝó…×îË×§{]ÔRRºFb£ô ÔÁÈØ– iŸ…VF¼ú‘×óÂÓ4LgñwQîK—Z×GÞOIɦ·žÉENƒø$ò8´ü6‹<\Xüù³vJÕ(:I:€;`ßÊßõ,R4–"&mlNàë¥×>*L„ÿ üQà*µÂF?LmÜæÒ¡GŸ5)¢ô³W $’ì..D­óJÛ\‘¬ŒŠuðlC$§ÐÌœr¿‘Îî2/£{¬°#û4r[îe›Í)Ô6*×;)fírÐÑR–z[o]¥9¸×)·/ÛhÞãÙ³€±®6KèɃIX7lö Õ°ÀcoÛ\&Zeëƒ`“åY;‡!¶}Ì»¸ÀÐÇò5þ¤‚aò:QM5åLÄš/eŒû¸¬6Uö PK xºZ<'IAR-STR912/examples/FMI/.svn/prop-base/UT ”LjKʈKux êëPK xºZ<'IAR-STR912/examples/FMI/.svn/text-base/UT ”LjKʈKux êëPKxºZ<Û­”CM:IAR-STR912/examples/FMI/.svn/text-base/Readme.txt.svn-baseUT ”LjK”LjKux êëµUMoã6½ Иc»HlÙí~Ô@ŒD[Dõ‘Rr‚œ Æ¢c"²hPt“ô×wH9¶³›=Ø9(œyoÞ<’ãñ‡wüÿ qy}ÇÙ"­aEŸ ªsµ2Z¶reîÔª‡÷ að檕Pˆ­„ãš—¢ÙÊ‘}¶.…ìíF8_3ÈãÈnת•°JwPK±uɉ°IMoõý^6.9ú8ž|{i3¸‘¦wˆÉ(òÙ¯ŒÚy’#ûù¦^ƒÝ g΀>‹í®•#Äýà唤ª·Ú¼ÌÜ7*žNâÏoO_c¿~ÛÍäû^§ÿƒâ:¥pÍiE‹ªr^ßNá6eq ¬‚yÉa±d )b e‘Ýay¤FLyÃV, ^Vu™S^9º[V§x•|€ÏIÍÊ8]îw± ãž,ãºÂ$(yB¹/…±ê*rC¡f9ù˃‘ Zfõ…»—,æ%Íh\ó²`qUJ² в†+ )Íȹʨ§$Å$Œcö…ãbÅðE™EEÿ\bçŒdœ,h5t€Õ®]jqq6´ÍYåZ˜ó2wZ!’ÔλrÕM;zHŠd<´ËŠBN Ww'·Â³m'¿-aM°!NÑ$æ÷ åÂ^ä['ü‡AÞ 4§ç¿»Â Þ¨ä!}gôß 1  Ç—oÏñî9nôX û^_æNb|#hñù\ĺ[«‡½‘p/ºÇzõt˜“éW ºÆïOŽû¿¼n Ä„…Þ T"ð¯iŒì{ˆž£3¢7/®‘sàÕ‹ûvPzk”õíYŒ®™5ε¿µ‰\cžê€£FúûNÂ@†óNŒÎG£ &ÊxÌ ¬tgegû÷lƒß&ÏaÆz´ÈÔ½ˆx5`«kÏa°ª­þ¿] Æ \Ç ìcXʘýÎÂ}iqø„Ái’c‚?ä1 ÒÓ!*û•¼0`xЦ‘Æ¥lÅã`Ä¡*'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKxºZRîü¶^†Ö ó˜0úëÓv£õÔÂÔc>¡Á¯OIÌ~~ûöÍ»ŸÛO{ÿ㓟t"Î>cOÀeuæ$Ä·iÑ÷íNs÷V¥{ŒÎIp$òGð¢%~‰gIÐiªëì¹`,ôˆäó¬ö¨¿Ÿ±y˜³ãËÚd Ò‹ìiŒ…)âƒú>`Š9 ÷ê„4ĽYmÚÿªÓ²iõH,ÎA’ù4¡n'ÐÇò^|s¬C7-i¿ÒlÁ‡.õ¡ }æãby[š .a­N Û.¶šfø8ö8QyŠ%¾JÂК3¾Djþ6tÇn"ÎÔ@˨²v||H±/EüÞÜP»Þ|Gõ~pÇî,HT,b[W“£„ ²Ä=2ãÂÇ \ySÆ!Z5$õ´g4¹ðë–.pæäõIÌÑ( q¬1/Z­V[~Zò«þÀÿÍŸ,EÝÈo«•ÞnJl³e™·Z­ÂŸjÑ¥hb¥söWéÐË3ôkÀÞƒ¥O-_×'¢iRŒ6žŒÞµ_^ý0žXÙ¥¾¬=öµ‡W8tsc¤·ì€ã¿ , ÿ~ôR͸Žs = f^>"˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁóh¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@%ÇÎ{%SJ›MÚÅ28Þ{ˆ2þ’±5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â>2»öó°{œÆâ¦ ihmŽÁšD×.‚5gL¹‰ÐíWQRÃNIÂrWåù•ÛëN/®í~÷yƒU2¿Šy´ê¼£YJ¢|ÄÈÇ5k£K½0)3åºÒdïfcO““û(Ž“u­$ñ^–Ìáhð{Já5òKòq¤ˆþ*"|h¦áÕ7‡Éµñ-”f–×Çc0¥bCàµîþ «x¯Œ)émmÓ¾±ëÒ4¾{$]eÒ³Œ18fG·™êÙ ÚŠZ¸#bš•³pr¿ÔMÉÙ5Ä{vÿpP ƒÆD%ûŸºH}äq&w5YwðÛÒÿMYsÆDü±@½61(#5«ÿ‰Û5`”Xv]Œ‡G©öª×ž>¡á€Ä°^ýÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÞŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}pζra£5Ðnv=ìž];½g×Gýª¸$Bí~™ÞzØ…’çNJzL{ÊvÊ8Þ²-ÅÚ‚”X†Êùû&Æü4®vŒy¸5ukjÙC+2F? .~wÿN0­Gœ ª› œÌn©ÃÐßñxqÖóDóVäRS­"'!êK0=ši2n‘RÍ>;,º¯‚œxÜ´pnÆ“Á)^î^üÁk!i%˜åÐ;7;Y¼¥‚~!=¿ÒáÂuý¡ÞÄn~3èÛ»´‰;¸>Ü>_y#@BT³¹ÜMf±Ø¤o®õ”çöÜëOÿ£èÂ@úÒ#3wnk𛵂qø¢6Ø>‚¥Ë „öNˆJ½%$íÞ æ¾°s¬ì|I,ÑÞJ’p›³D§  6#Ñ>aï—3šs«Ð}Mß+2º\íC¥‚Õ†yŠ·&4;$AÉfH5Ñ,ͪ@RËT TEfÏצö–õ ¸”‚Bòz%Ê<^\¿:ä:¹i_Ð-¦ØüJåÍO‡•Xr@:AÚž8‘¥0¿S/º¬§W={ü±A¼y…9±D{µo:%ˆO£´Àžñsb¨G†õöÈùèÞv«ìRŠF#û¬…*68v3ódæIÅÚÅ8Ïž=»Éý^ìñÑrQ TÀ ušð¨p–Dy~?|KOý’ÒAC¸ui¹;éÓIZbÿôAúëK¬.$³*«‹½¤¸ºNs«‘cÊ‘¦"‰¡´ j¡ÔˆuÚ©pƵ¸Â=‘va+Vm{ºÙ­¦¬èz¼ äOóßä’ÿþPKxºZÒŸ“d‘ÎÕ¦Sý*£‰ÑŸò BIªjèñÑ·T?²ü$)Üo •ã‹»Êæ þÙà›6Oëeïs©R‚vo’;…¼K5O^·¥ˆ„²çÓÕÔ`4³XÝM“¾ýEj}nÔîsš¿o1¤vÿa³{ï ¤vö¸÷áa;¥¸ÕÛRës£˜G<0ŸµïžúÜJíCÇÀ '锿Oë"^Â"WÿnT:{‚ïñr£àÍgçÿ·ûü꦳»[í'ï½O/4­ ÃÀ…ž¨tž,^óóûcwß+õ¯[ûw»íÕìP7ã¿FæÛúâ;â.{îôOPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<¶‰¨œ“P6IAR-STR912/examples/FMI/.svn/text-base/main.c.svn-baseUT ”LjK”LjKux êë½XmoâH þŽÄ°v¿ÐŠ+íîõZ݇ 0j^¸LhÕO(%C;*$(/Ý®V÷ßÏž@ ¥½ÓK d<~l?ñØÖñ ë,xðþ „Ža|ºj’¥r&'E–&j’Ã[¦õÚ1ôÔL‚Í%<Ë9Ì#•œLHm–Å}šÁºœƒkÙ`.35‰ •&ÊhN›í¨˜åðUèmH»0°œ*í€ J¡ø.ÅJ€w~ÄI{æÐôìV•Œ×´to^Ø" RVdU±½ðE°&÷˜  IâzÍàH­ƒÜdrÿݪ×ZU2™•±Ìá·…?« >ýÑ~ÏÔíÉý§zM{fê‘:Qñc!c9ÝÅá2ö"¢)ì»Æ¾†8°OïFÉ+ÄÇ(SÑíl¢ ±^+ϨӎC5—iYŒEe~ñŠãi™LtûÆ[¤Äø/û}ÿ qÇø[{.b=+WÉV󲚓oÌ1œ¨X}$“EY¬Pç)ü²X×¼(Y”Y²­Ø¯´pø©¤Ð‰4SÕk?é|VS:<6ëŽútXý·å]ãèBke«)]ÑGX£±k9—"-³‰´Òdªî«Å±/¬£ hpòâ-D¹žäè *gLféäg,YÓë‡hl«G•§Ù$­Žq¹˜X6fàÂP"ù÷8×gp[æ„öWvð'´+À¨9èVÛ-ò¹Ä±Ò›Àc$ç ÛÎþNù®|©CˆØï®TŠߦ ñ¥~ÑNˆö½ƒÒþõ c—Í!ÀPK xºZ<#IAR-STR912/examples/FMI/.svn/props/UT ”LjKʈKux êëPK xºZ<!IAR-STR912/examples/FMI/.svn/tmp/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/FMI/.svn/tmp/prop-base/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/FMI/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ<'IAR-STR912/examples/FMI/.svn/tmp/props/UT ”LjKʈKux êëPKxºZRîü¶^†Ö ó˜0úëÓv£õÔÂÔc>¡Á¯OIÌ~~ûöÍ»ŸÛO{ÿ㓟t"Î>cOÀeuæ$Ä·iÑ÷íNs÷V¥{ŒÎIp$òGð¢%~‰gIÐiªëì¹`,ôˆäó¬ö¨¿Ÿ±y˜³ãËÚd Ò‹ìiŒ…)âƒú>`Š9 ÷ê„4ĽYmÚÿªÓ²iõH,ÎA’ù4¡n'ÐÇò^|s¬C7-i¿ÒlÁ‡.õ¡ }æãby[š .a­N Û.¶šfø8ö8QyŠ%¾JÂК3¾Djþ6tÇn"ÎÔ@˨²v||H±/EüÞÜP»Þ|Gõ~pÇî,HT,b[W“£„ ²Ä=2ãÂÇ \ySÆ!Z5$õ´g4¹ðë–.pæäõIÌÑ( q¬1/Z­V[~Zò«þÀÿÍŸ,EÝÈo«•ÞnJl³e™·Z­ÂŸjÑ¥hb¥söWéÐË3ôkÀÞƒ¥O-_×'¢iRŒ6žŒÞµ_^ý0žXÙ¥¾¬=öµ‡W8tsc¤·ì€ã¿ , ÿ~ôR͸Žs = f^>"˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁóh¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@%ÇÎ{%SJ›MÚÅ28Þ{ˆ2þ’±5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â>2»öó°{œÆâ¦ ihmŽÁšD×.‚5gL¹‰ÐíWQRÃNIÂrWåù•ÛëN/®í~÷yƒU2¿Šy´ê¼£YJ¢|ÄÈÇ5k£K½0)3åºÒdïfcO““û(Ž“u­$ñ^–Ìáhð{Já5òKòq¤ˆþ*"|h¦áÕ7‡Éµñ-”f–×Çc0¥bCàµîþ «x¯Œ)émmÓ¾±ëÒ4¾{$]eÒ³Œ18fG·™êÙ ÚŠZ¸#bš•³pr¿ÔMÉÙ5Ä{vÿpP ƒÆD%ûŸºH}äq&w5YwðÛÒÿMYsÆDü±@½61(#5«ÿ‰Û5`”Xv]Œ‡G©öª×ž>¡á€Ä°^ýÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÞŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}pζra£5Ðnv=ìž];½g×Gýª¸$Bí~™ÞzØ…’çNJzL{ÊvÊ8Þ²-ÅÚ‚”X†Êùû&Æü4®vŒy¸5ukjÙC+2F? .~wÿN0­Gœ ª› œÌn©ÃÐßñxqÖóDóVäRS­"'!êK0=ši2n‘RÍ>;,º¯‚œxÜ´pnÆ“Á)^î^üÁk!i%˜åÐ;7;Y¼¥‚~!=¿ÒáÂuý¡ÞÄn~3èÛ»´‰;¸>Ü>_y#@BT³¹ÜMf±Ø¤o®õ”çöÜëOÿ£èÂ@úÒ#3wnk𛵂qø¢6Ø>‚¥Ë „öNˆJ½%$íÞ æ¾°s¬ì|I,ÑÞJ’p›³D§  6#Ñ>aï—3šs«Ð}Mß+2º\íC¥‚Õ†yŠ·&4;$AÉfH5Ñ,ͪ@RËT TEfÏצö–õ ¸”‚Bòz%Ê<^\¿:ä:¹i_Ð-¦ØüJåÍO‡•Xr@:AÚž8‘¥0¿S/º¬§W={ü±A¼y…9±D{µo:%ˆO£´Àžñsb¨G†õöÈùèÞv«ìRŠF#û¬…*68v3ódæIÅÚÅ8Ïž=»Éý^ìñÑrQ TÀ ušð¨p–Dy~?|KOý’ÒAC¸ui¹;éÓIZbÿôAúëK¬.$³*«‹½¤¸ºNs«‘cÊ‘¦"‰¡´ j¡ÔˆuÚ©pƵ¸Â=‘va+Vm{ºÙ­¦¬èz¼ äOóßä’ÿþPKxºZ<¶‰¨œ“PIAR-STR912/examples/FMI/main.cUT ”LjK”LjKux êë½XmoâH þŽÄ°v¿ÐŠ+íîõZ݇ 0j^¸LhÕO(%C;*$(/Ý®V÷ßÏž@ ¥½ÓK d<~l?ñØÖñ ë,xðþ „Ža|ºj’¥r&'E–&j’Ã[¦õÚ1ôÔL‚Í%<Ë9Ì#•œLHm–Å}šÁºœƒkÙ`.35‰ •&ÊhN›í¨˜åðUèmH»0°œ*í€ J¡ø.ÅJ€w~ÄI{æÐôìV•Œ×´to^Ø" RVdU±½ðE°&÷˜  IâzÍàH­ƒÜdrÿݪ×ZU2™•±Ìá·…?« >ýÑ~ÏÔíÉý§zM{fê‘:Qñc!c9ÝÅá2ö"¢)ì»Æ¾†8°OïFÉ+ÄÇ(SÑíl¢ ±^+ϨӎC5—iYŒEe~ñŠãi™LtûÆ[¤Äø/û}ÿ qÇø[{.b=+WÉV󲚓oÌ1œ¨X}$“EY¬Pç)ü²X×¼(Y”Y²­Ø¯´pø©¤Ð‰4SÕk?é|VS:<6ëŽútXý·å]ãèBke«)]ÑGX£±k9—"-³‰´Òdªî«Å±/¬£ hpòâ-D¹žäè *gLféäg,YÓë‡hl«G•§Ù$­Žq¹˜X6fàÂP"ù÷8×gp[æ„öWvð'´+À¨9èVÛ-ò¹Ä±Ò›ÀÒŸ“d‘ÎÕ¦Sý*£‰ÑŸò BIªjèñÑ·T?²ü$)Üo •ã‹»Êæ þÙà›6Oëeïs©R‚vo’;…¼K5O^·¥ˆ„²çÓÕÔ`4³XÝM“¾ýEj}nÔîsš¿o1¤vÿa³{ï ¤vö¸÷áa;¥¸ÕÛRës£˜G<0ŸµïžúÜJíCÇÀ '锿Oë"^Â"WÿnT:{‚ïñr£àÍgçÿ·ûü꦳»[í'ï½O/4­ ÃÀ…ž¨tž,^óóûcwß+õ¯[ûw»íÕìP7ã¿FæÛúâ;â.{îôOPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPK xºZ<IAR-STR912/examples/ADC/UT “LjKʈKux êëPK xºZ<"IAR-STR912/examples/ADC/interrupt/UT “LjKʈKux êëPKxºZ<Ækþáf,IAR-STR912/examples/ADC/interrupt/Readme.txtUT “LjK“LjKux êëµVMoÛ8½ ИcR$Žímºm€=(«¯$'È©PdÚ"*‰E9É¿ßʱÝ6=,ÐåIæÌ¼yófHúêÃ; Îüsð“ÅcÊïæ9LÇãOå‘,µµ(V­,;x/Ôu>ÀLÖâ¢pX7ŠbÕˆ‘y1äâõ¦RN× D~Þv[˲0Rµ‹¢!ç 0Aug€w]/Vä<¾¾š|¾²Ônà^èŽ"&£± ]©åÖ‚ÐO7ÕL%À |`/E³­ÅoкߚóBüæE¤æ²3J¿ÞÐ7’ŸN‰üŸß‘Ÿ¾Ù>þ\ØdoûUÑÿã|Î`‘²ŒÅ9dÉ,ðRsîÏg0KR¸[òÀ‹}I>‚Ç£ ¼c’{ðøüe–'K3‚{àù§ÊxŒá‘—ó$†”Ýy©ÝÅ„<¥ð`éç:A’,µ©ÐAž@æÝ3ÈyÄFvŽ0!dË0¿ å~š°ùyšÄÜÏ ›{aq’Ã-ƒ9 ¹w2 éÅð½/‹ÇÃLŠ4ãŒý³ÄʹBàEÞˆ 0Û‚¼ øáPvÊ3*a–&q%@ÉI»dÙE;hèÅÁÕP,3‘0¸}<ªEdĸõ"XÇ,À‚R†"q»#)2[’ß+ùû'úÊu\gt`u¤}çÄÿ—ÿ,è ›ñ oÉ¿PKxºZ<Ýèb¡-IAR-STR912/examples/ADC/interrupt/adc_int.ewwUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&1%9>3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPK yºZ<'IAR-STR912/examples/ADC/interrupt/.svn/UT •LjKʈKux êëPKxºZ<,æuë°L.IAR-STR912/examples/ADC/interrupt/.svn/entriesUT “LjK“LjKux êë­ÓÍŽÛ à;ê«Ø†ÿÜVí¥×4§½¬`²nDzI7_¶]UÊÍj3'„ø BäqQ¼Ö:¯»a y¾V^k¿þœúõr]ˆËe9r?qÚÜr¹Ô¿IC]®Óa>ÅÚ’Îëðõiß};ìƒÄoñ<Ÿxž¾|Æ©ò²\çúoçˆ:ЪƒÄ´½3΀} øϼž¦q:ŠûpÅ' ]¥Ú&ÐyÙâltŸDÌôÒ¤=¿eQÆ‹?ç¶lÀÝÜN†v=üŽgAÎ!«Ù&ruLºp.mOÁþú#¤Q^ßáÞ¶áÀ+}ÊÙ;&9ÙàƒÉeÒè<ge£ã8õ´M….{²)¦ìÇ8;©P|„Ê ÃÆÚsÌgîë­n£Å CŠà&cl‘ÖE´ª g*ð‚¡4p÷˜ó6[ÐíRÁc`jk™±Hi‰”¦Ö<Ʀj¸ o/t™JÿºÑ¹•ª 3 9² ¬öZ·ÆUÊAJ°)Ìm¬[{M;P¡´Ó9»ÜÞ–XGëcJMÔC`Òxóþ=PK xºZ<1IAR-STR912/examples/ADC/interrupt/.svn/prop-base/UT “LjKʈKux êëPK xºZ<1IAR-STR912/examples/ADC/interrupt/.svn/text-base/UT “LjKʈKux êëPKxºZ<¼DŽ ÍSEIAR-STR912/examples/ADC/interrupt/.svn/text-base/adc_int.ewp.svn-baseUT “LjK“LjKux êëí\[oÛ8~Þæ?mÞ¦ãKf›ždÅi5µcÃvÒ.À %Zf+“ZŠríùõ{HI¾Å–ÝPT_¶MS](~<‡ä¹|¤Ôúkµ­%æ1aôÏWÍZã•…©Ç|Bƒ?_‘˜ýzsóÇÛ_›¯þz÷óO?ÿÔŠ8û‚='–Õš‘?¦¾k¶ê»§ê¾ÇèŒ G"¿)Zàw·xš­º:ή ÆBoŽH^0/j{ûë‡%[¾¬M¶ =È®ÆX">¨ï=¦˜£p¯N¸‡¸7'ËMûkÕ®lJúH Íœ/s À3˃Âpû¢âžÑ.óP(Û¸w¾Sî¨ê‹Ä~¹( 1?%^ ‘©ù еêé…ZëϪ= ÔŸ~¹ŠiuI,.A’å4¡'ÐÇò^ü÷±Ý´Dö·V Þw¨Mè1Ÿ–·¡ âÒ(Öò¼°ÍBaËi†cUæ´ÄwIZ3ÆHÍßšîØMÄ…hÕ@ÖŽ¡‚÷)v›PÄ׿†ÚÝàáª÷½Ã8îsgN¢Ó"6u59L¨ Ü%ÓÁ¾\àÒ›2 Ñò¨!©¦=Ãñí%Cû!Æ–˜c‹ÊÑZ{!‚ÅfêžSw~ùÅâ©|VH¦ÆmͺgV(½&¶˜Ï‡ßXNví ÔhÉd3÷â$ŠêÞ" ™®Žáq+âPÇÌBÔ·bÑÙuÅæxeÍB†„* .˜¯;ÿ†cG‰YìÙ®Æý~÷£;žÜºÃ«'÷Þyº…¾¤Njsíi2àÌO<‘…5§›ó{í·¦­ÖE±Á¸ôÛëKÿ¨5µFíZß¿¦‘^Ä “Ç“£Ñh4埆üQ¿àßæWvGÈŸF#=Ý<±-–Þ^j4v>ñ§Et(š†X©ÃœØU:tõ”Ń0ú`îSó×ñ‰èašœF‡o›×wÿ­ìP_Ö.ûÖÅKº¹E2è{¶áb»£§SH2¶I ”ßÏ”NeN®ã&cϧë$No«NœçÏ=nRíiv–ã 8†dÙ»—dnl`¶X`* * ª Š3 #s;Ç´ÚHâ£Ä3ªµ Ç1 ŠÆ[9@vW¡9€±„Y;} Ô] ññ¯FwKP0‚H‘C'4&•Æ0È'Ä)˜oÃ(Î7ˆ!9'VzeΣ‚? CpàŠLz)3RNˆ&=x/—Θ9yÝK'mˆó=˜IEƒC_•ਯnÇÎ{SJ›¹ÚÅ28Þ»ˆ2דy5kYG$ Ø„ˆPgŽ ö“ã ñÂ1Œ ÁÄ:2ë{yŠ?Jó~ÓNCZ›c°„&‘ ´‹À§óŒï)6Ú£ý.J*˜À)!Yª\ݹÝΤ}o÷:W5VÊü:ÍÙ•MSÂæF>6¨Að.õ¤ȔëJ“ ¼ÿ({šèƒ˜œ˜\³qœ¬k%ax]0CÃþß)]X«e?$‡-8ò”¾#>´Ô°Îar…|ƒZ‚ñõñlF!cYx¥»é*éã_ :\ÛºoL»Œ Aø EŒÆÐ¥wÆb3ƒ£«ZÕ¬{lE=¹s¹¼/#æl#´ÜÑÕo“¬œ]AÊg§)AÅ`1hLYQ°Üª‹ÔCg2~×p˺óÜ–!pJÔ˜3& äÓ ÜD¿ˆ×,`!(nV€Q`Ùu1žïÜÚ«^{ú„bˆƒ/¼‡sƒé¢mz À>Å+•Ô~Y½é,Cr‰ÚTNØìh°“ÐÕf:«¨ KßYaÏà:* ×vcß ’$7cvéh€ÜÅ4sÃÉè4Æ.ÈMGò 'ßîôþ<Ä3ƒ&JVÖÌ–‚¢²'úl[oéÂ$F!*`Þìj>»r†Ï®Žý¯¸ B-€™^}Ø…’;\ z¬¡å”q¼e[ е)° ¥ó9öCŒùy\íópuêÑ Õ²‡VdŒ~è·ÿvúƒÿœa /ØT5Ñï;™ÝR{¯Üvù¼æ¹æ­È…¦ZEîPBÔ—!`ºÔdÞ"¥š~qX´.ƒœxÙ´pFãþ9^î;Þ3Â+!i%˜åÐ;';E¼…‚~á~~¤'BÛuú½ÞÄ®7èƒÛ½µ±Û¿?ƒÜ¼\y#@BT³9ܽÍb±¹¿9ÖSžÛuï?–o¯Ú(º0¾vÉÔí§+›æfíg0_ÕÛ°a‘Ð^ ‘B©—’¤Ý;ÃÜ—v‰•E¾7!TÔX¢½œ$!7[ŠÎAmG¢}Ä8­Sš ­Ð}K_e2ê²ö¡RÁªÃÜÌ[š’ `A¤œh–jU ©uªª‡¢â±WÊ„ê²ÀìfÞÅ¥D’Ô[XæñzþU!×Ù…û²€1Åæ½•7;Ÿ”2ðé qsdã‰|ó'õfÍjr×µGjÄ›•Øž3^º ¤Šöœ+¬|˹ÜIhØ^9FÂŽA®Jpä:d%@…;/ËÀɶÒÇé.Ov|©½Ä1ñã˶—‚VÉÎæÌF¼&wf.—bÆìD0È[* ~mß'ò> Ѱ2s/0à,àhÑ¡‚¯»hZ´×ª”áò ÏôvÚ㨧ñ&‚ø$J˜À5^JuÿyÐ8ŠÈ“ ª+î-/g°e혷ע(ôZÝ龛ŒRíŸÆ)Gš-Z³Öq¸7"ÿüÀ¯*@Îäg¥ ß:€ ‹¾;²j6×%ÀÈmÚGçO5›á m"úüÄŽœÊ‘¥s(L gº¾½0Ãֿݹ)!Tx!kîãá»ö%p¸G‡€Q7k¡b< †'Œùe« ’bUOã¼~ýú!g7°gÆFK»¾ÿÄZI«þüKz­€³$ÊË+Ðøù+Ùê} ½ê|JSw{Ø{Â+6Ç·g©{ö_öÕ§´Ò'™Ó#ß«íÏ÷ô›&°‚ˆ°ÊÀàReX±—T†%È¢2¬%)­úv´¸2VL¢ó#÷í”=«Ú@`¦×âïøLKÈpN×¹'Ø.ÒaݪybOC»Õ=º@„P®eæŸã”ÿPKxºZ<Ô¾õ1Ø<EIAR-STR912/examples/ADC/interrupt/.svn/text-base/adc_int.ewd.svn-baseUT “LjK“LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKxºZ<Ýèb¡EIAR-STR912/examples/ADC/interrupt/.svn/text-base/adc_int.eww.svn-baseUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&1%9>3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKxºZ<ÆkþáfDIAR-STR912/examples/ADC/interrupt/.svn/text-base/Readme.txt.svn-baseUT “LjK“LjKux êëµVMoÛ8½ ИcR$Žímºm€=(«¯$'È©PdÚ"*‰E9É¿ßʱÝ6=,ÐåIæÌ¼yófHúêÃ; Îüsð“ÅcÊïæ9LÇãOå‘,µµ(V­,;x/Ôu>ÀLÖâ¢pX7ŠbÕˆ‘y1äâõ¦RN× D~Þv[˲0Rµ‹¢!ç 0Aug€w]/Vä<¾¾š|¾²Ônà^èŽ"&£± ]©åÖ‚ÐO7ÕL%À |`/E³­ÅoкߚóBüæE¤æ²3J¿ÞÐ7’ŸN‰üŸß‘Ÿ¾Ù>þ\ØdoûUÑÿã|Î`‘²ŒÅ9dÉ,ðRsîÏg0KR¸[òÀ‹}I>‚Ç£ ¼c’{ðøüe–'K3‚{àù§ÊxŒá‘—ó$†”Ýy©ÝÅ„<¥ð`éç:A’,µ©ÐAž@æÝ3ÈyÄFvŽ0!dË0¿ å~š°ùyšÄÜÏ ›{aq’Ã-ƒ9 ¹w2 éÅð½/‹ÇÃLŠ4ãŒý³ÄʹBàEÞˆ 0Û‚¼ øáPvÊ3*a–&q%@ÉI»dÙE;hèÅÁÕP,3‘0¸}<ªEdĸõ"XÇ,À‚R†"q»#)2[’ß+ùû'úÊu\gt`u¤}çÄÿ—ÿ,è ›ñ oÉ¿PKxºZ<³A¦Š{ DIAR-STR912/examples/ADC/interrupt/.svn/text-base/91x_conf.h.svn-baseUT “LjK“LjKux êëµWÛnÛ8} /mÐF²Úô’7Z¤%buñŠT‚<ŠM7Úµ¥¬$o›~ý¥Ø•”„p.íÍðÌ™3#^lë왯Ý7àÆó›„{¾Ƕ?‚a¾¬JµQ˦*‹|YÃs¡§'g0Ë7 ¢l«à0.áËäûbYëó; !»æ®¬ ?.!t)ûûM¾Ìš¼,@ªl«Á4k’Vu¼®wj¥Áö…5ùlµÒ.áJUµŽ˜œÛm€ª—U~ß’؃ü¶ÊªÐ"ò¯»ªÍqŽðß<´?¯›²z¸ÔÏ(Ôq´ÐO¡Î~îÃÓ"&s/ø?(–>ƒy‹$ˆx&¯IÂàÚç®\À,NÀK9%‘Ë Ž‚ <@$ÆÄWœòÈ72Y"àšK_sºq;Á# ‰äq óHÒz1!Ot8M])qBYҦ¹d ‚\1¾»Ùwi?¸×ü§saÛúðQÅ*_w·•Iѯà ßf¼`û·ùþ2~®›¿ð?ETÿÔ™ñ€=vú?PKxºZ< [íÇ®î=BIAR-STR912/examples/ADC/interrupt/.svn/text-base/91x_it.c.svn-baseUT “LjK“LjKux êëÕ›]o£8†ï+õ?ÍÞ´£ªi2;ûѽ¢@K|¤@šéUDÁ™ QÈÓNµÚÿ¾Ç†¦!í^LèŒeÔ‹Äö{|Þ'Ž]2øøÆ'æ)˜þì6 “i£‹‹ß ŒÜ,a%ÍiÂYYdIoI>Â8Ë)xñ=…íu ¿-3~žˆFÍ×%ƒÝë\Óc³É³$æYY@Dã{ÑØŠ9Ŭâ@ªª¦©h|ñy0üc »„Ê*¡ž_H­–md—èqV)8e¬Þp){È AYó¬ Õ9 ßù©à­³ V‚HpG¡®Ð/!•ibAœçÀ×跄ʬ+¨ê;ÖfÖ†áë˜Ã}üe’Ô 3¾FC‹Aüí¼m½XÓ°»lkx­hQÉžªrÅcF1 ö}Çâ"YC\óò£$˜ÏÓs¯¥lŸ”ŒÑjSiV|…63ˆ,—%m³—Þp”¬ ’—qŠ–1]Ñhf£_³ ›žoQX•y^>@$(ØÐû :k¼ †,ã"§T¨ž;Ù·Ž‹4Ç!RØP kÊâ¼\¿äø£>ò)Z+ÙÓ¥x£t4£ô÷Î(=×ýúzÛºÿÝ? ãhjÃ,°CÛ‹ ôÇÑÂlXL‰9ÂØ`2'–á™6øžs qC0"Ôø7Ä"ÞÌyù®„° ÑTÄ4}YA<”»FD|{b²;$[s3 ±øe²+¬s!ò!4nlˆˆkŸƒÊ9„s':31ßvl3 |˜!„SÃqÀó#¸²aj;8ĸrlÒðnÁ"¶>þšW""V™¾Ú×stN ,Ã5&vcBô6Æ"ÀtÛ ……qà»FˆP.ã!œ#´-Có%˜‡6¸†eÃÕí-T41öa5½È žm¡¡ÀFHø‡e&%pÊ$»$ßDŽ~ÉŠ$¯ñ»ö¡Á׎ŽïÜ“\7ê"‘³v³v\¼Hé ç‚t9m¾ÓoLï—í û¬Ýjð«^qV7¥ÛéAÎ9¤ØÔ|wíñʂʰæ»5/å5+^W¼ï…¸Ê,}íûDŸýs|ôïOb.ÈwPoæÜ Uš¡Þ±©òŒÑåÉúÒ”r¡…ø®d\3ìûư7¶À§1µdÞ1¬ø˜\€UšqÞñ©€òš,ñF÷ûA‹›sïÜÅ3úwM+®ó®k%ËåáÔqÑÔzdzŠnŒ/g/Ôz¢ßó­†ü°ù¡¶ä‡ÊÉz‘iK~¤œü§^ä?iKþ“Zòóðj:;½”ëÉ~ß¹øN?øŽ¾ðÅðCsÞcCeÎõßu­»íÙÑáÜ…ZOð{¾·\ãpð(Ö“{×µì¦áŽÅzbïºV€Ý5§îšzBïxVqbcõ€Žb=©w]ï`|3§1kž¾)R(W”ÅCûÀÅ*¿‚ˆ2ˆl:Ʋñnì“¥mÞœþ%þ.c…”ËH}„MWTÄÛž·ˆ'vÚ‡iDœ¦ðç5m{À6K 0º!8“E³…»ôÍáÒÄÏ¢ ù™ÌdB¹¹MóF‘)µm–ŸOER?í.Ù¢gQR®çÈÚw®b‹‚)ô8Ž’r}á+>)ô8‘’r}á+>“"#³Ç¬#Ôz¢ßó­†|)G¨µ%¯x ÃY1/Ôz’ßó­†|1/ÔÚ’W<æëpð(Ö“{×µìAÔc¯ˆb=±w]«xx‹ô8õF±žØ»®Uœz‰HŸMl£×þ+ïªø÷X`½Æü/²2‡[ÙF¯1Å›Y™CG,½ÆüÕ?f±è±ðJ¹žô÷«ø ÌøúªÇͦ”ë ßyþÛø¿ç§Ù¶g‰Ÿމc·ÝþPKxºZ<ÁïÊ;˜@IAR-STR912/examples/ADC/interrupt/.svn/text-base/main.c.svn-baseUT “LjK“LjKux êëµXmo›Hþ)ÿaÔJUùb;/½»Dý@Çè0PÀ‰ò ¼‰W‡Áâ%—ÞéþûÍì‚ ±M›&‡Zvgžyffwf×ý£-¨‡ ÚÎk\}8 >ƒçOx”¥,fQ‘¥ rئº¿w#3°ÂƒÕs‹'ÇM+e1O3h>0Q5P–˘GaÁÓ|.HX †€Y^€‘ç%›‘ðà¼?ü­/h]À ËrÒ„Ë£Œ/È ÝCƒèÏáb³8Yú˜… (sž *ÏaY¡ák‘B”&O … þ ãôx²,‹ˆma2Ã&¾3–—qA˜‹tƾ‰Áe Ó;ñBpn'óÇDúñÎÙó¼H³oôŽ©89¡TüÚJÅI=w¶™¦a5·+…ÿc¬ƒãêžnùàÙ#ÿVqu¸ê F¶ ×SCS,UÛ2ï@1&(>êØ7†fX× N=ßžè®Gp·†?Æý!& Õ'ŠoظúµâŠQ4h¸¤®MUßC!°]Mw…)œ›€oƒ§Üèà],7 "€75ým6CumÝÔUßµ-CõÀ+¦ –íÕcÝÔÀ4”+SŠušá¢t° K~ Q¤iyú×)zn(&hÊD¹Ö=éZsH ¹€jJ·]Ã#F®=!®ˆ >ÅÎ7Å ­b¨XZ_ºSO‡‰¢épu·ŽiФ –ä¶ŽÁ*†¥kè«c 1f!)š$Û‘|ÿÝßßë#«$ŠËËá—7?„ø‘K<øðûð9ˆùýñüÃþž°ädü‰jZñmÉfìá-+î5"¢ñ„½Éƒˆ‹+þÛBòñ)Ìxx¿%Є¸¿‡û&0^øF ÃPxEVFE™±Ëý=,©/¤ê‘¦ÔµcØm±ÕHS¬åÈC™D¢Ç`õ/RJæ«]zšñ¡é¿óþ ½vV6uÙÌ·4[lã8Q7D±Û©÷5û¼•&Œ&ì²hά'\†áN6'Þ÷kˆ'…ðäà)å³Ãý½ö÷>òÚ–š~5½¦oÀ}u_>^ŠY–`+&eúï©Ó`¢šxi™ELM“þxP¶§^®\éM±uㄹèåh'¤Åiô'䂘IX4þÄó4kàÒh€ÃÃWâNÀY^à¾Ì òÏ™T†/0<êƒô¥WÆWRC%Û~Üjt‹úŠÄGt=¡ +K¢ˆI_( ’.¾£ýrÐðwûƒˆ¤¨1Žâ<ŒùßòÀ'SR±s¶²Ã½ûãìè4%ÙÑ–;RüvXÃ&¿]ìHPôðeXq¤âUq¤éNžˆ+ ~†$¶³!I_B¸"(*bÅPŒwPDL©ú³ O_ÃðtÃÓï3<ÝÍ%$%¬ý`,±¼Óþmží›KqxRyS¨ó0IX|¾vke„D>Ó¥A˜’èÓãAOšU愺oâý¬'† ÷kòL)¾}r¨)µáœ\$¸P³rYl:ˆMS®Þliî‡-‹kšN#_B·ÆúkÎcv0¤Ï·_:^ó#¢niôKÁÈ0õêtþPKxºZ<2;BCÕ\2IAR-STR912/examples/ADC/interrupt/.svn/all-wcpropsUT “LjK“LjKux êëÅÒÍ ‚@ðû>…=€NQz“ìA‹®²¬+Iº»ìŽŸIžì`xøÿ˜™³åm‰©Eа@Ó$¥uPsmr)ìJäní׺¾–)U!7«®Ýl¼- ®ÄTA1“º4p cûz‹}×ÞÒRÜ@ ȵ®’ã%"4eIWqx“’óÂ÷fGÀ05KƒšTÒ\8lÚ²ßÍoùd¿1§iÉlñ‡µ¸óSùã3©¥Ï¤zï¶ “"sËìgÿåäøÓßøÿÁôéoÊ PK xºZ<-IAR-STR912/examples/ADC/interrupt/.svn/props/UT “LjKʈKux êëPK xºZ<+IAR-STR912/examples/ADC/interrupt/.svn/tmp/UT “LjKʈKux êëPK xºZ<5IAR-STR912/examples/ADC/interrupt/.svn/tmp/prop-base/UT “LjKʈKux êëPK xºZ<5IAR-STR912/examples/ADC/interrupt/.svn/tmp/text-base/UT “LjKʈKux êëPK xºZ<1IAR-STR912/examples/ADC/interrupt/.svn/tmp/props/UT “LjKʈKux êëPKxºZ<Ô¾õ1Ø<-IAR-STR912/examples/ADC/interrupt/adc_int.ewdUT “LjK“LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKxºZ<¼DŽ ÍS-IAR-STR912/examples/ADC/interrupt/adc_int.ewpUT “LjK“LjKux êëí\[oÛ8~Þæ?mÞ¦ãKf›ždÅi5µcÃvÒ.À %Zf+“ZŠríùõ{HI¾Å–ÝPT_¶MS](~<‡ä¹|¤Ôúkµ­%æ1aôÏWÍZã•…©Ç|Bƒ?_‘˜ýzsóÇÛ_›¯þz÷óO?ÿÔŠ8û‚='–Õš‘?¦¾k¶ê»§ê¾ÇèŒ G"¿)Zàw·xš­º:ή ÆBoŽH^0/j{ûë‡%[¾¬M¶ =È®ÆX">¨ï=¦˜£p¯N¸‡¸7'ËMûkÕ®lJúH Íœ/s À3˃Âpû¢âžÑ.óP(Û¸w¾Sî¨ê‹Ä~¹( 1?%^ ‘©ù еêé…ZëϪ= ÔŸ~¹ŠiuI,.A’å4¡'ÐÇò^ü÷±Ý´Dö·V Þw¨Mè1Ÿ–·¡ âÒ(Öò¼°ÍBaËi†cUæ´ÄwIZ3ÆHÍßšîØMÄ…hÕ@ÖŽ¡‚÷)v›PÄ׿†ÚÝàáª÷½Ã8îsgN¢Ó"6u59L¨ Ü%ÓÁ¾\àÒ›2 Ñò¨!©¦=Ãñí%Cû!Æ–˜c‹ÊÑZ{!‚ÅfêžSw~ùÅâ©|VH¦ÆmͺgV(½&¶˜Ï‡ßXNví ÔhÉd3÷â$ŠêÞ" ™®Žáq+âPÇÌBÔ·bÑÙuÅæxeÍB†„* .˜¯;ÿ†cG‰YìÙ®Æý~÷£;žÜºÃ«'÷Þyº…¾¤Njsíi2àÌO<‘…5§›ó{í·¦­ÖE±Á¸ôÛëKÿ¨5µFíZß¿¦‘^Ä “Ç“£Ñh4埆üQ¿àßæWvGÈŸF#=Ý<±-–Þ^j4v>ñ§Et(š†X©ÃœØU:tõ”Ń0ú`îSó×ñ‰èašœF‡o›×wÿ­ìP_Ö.ûÖÅKº¹E2è{¶áb»£§SH2¶I ”ßÏ”NeN®ã&cϧë$No«NœçÏ=nRíiv–ã 8†dÙ»—dnl`¶X`* * ª Š3 #s;Ç´ÚHâ£Ä3ªµ Ç1 ŠÆ[9@vW¡9€±„Y;} Ô] ññ¯FwKP0‚H‘C'4&•Æ0È'Ä)˜oÃ(Î7ˆ!9'VzeΣ‚? CpàŠLz)3RNˆ&=x/—Θ9yÝK'mˆó=˜IEƒC_•ਯnÇÎ{SJ›¹ÚÅ28Þ»ˆ2דy5kYG$ Ø„ˆPgŽ ö“ã ñÂ1Œ ÁÄ:2ë{yŠ?Jó~ÓNCZ›c°„&‘ ´‹À§óŒï)6Ú£ý.J*˜À)!Yª\ݹÝΤ}o÷:W5VÊü:ÍÙ•MSÂæF>6¨Að.õ¤ȔëJ“ ¼ÿ({šèƒ˜œ˜\³qœ¬k%ax]0CÃþß)]X«e?$‡-8ò”¾#>´Ô°Îar…|ƒZ‚ñõñlF!cYx¥»é*éã_ :\ÛºoL»Œ Aø EŒÆÐ¥wÆb3ƒ£«ZÕ¬{lE=¹s¹¼/#æl#´ÜÑÕo“¬œ]AÊg§)AÅ`1hLYQ°Üª‹ÔCg2~×p˺óÜ–!pJÔ˜3& äÓ ÜD¿ˆ×,`!(nV€Q`Ùu1žïÜÚ«^{ú„bˆƒ/¼‡sƒé¢mz À>Å+•Ô~Y½é,Cr‰ÚTNØìh°“ÐÕf:«¨ KßYaÏà:* ×vcß ’$7cvéh€ÜÅ4sÃÉè4Æ.ÈMGò 'ßîôþ<Ä3ƒ&JVÖÌ–‚¢²'úl[oéÂ$F!*`Þìj>»r†Ï®Žý¯¸ B-€™^}Ø…’;\ z¬¡å”q¼e[ е)° ¥ó9öCŒùy\íópuêÑ Õ²‡VdŒ~è·ÿvúƒÿœa /ØT5Ñï;™ÝR{¯Üvù¼æ¹æ­È…¦ZEîPBÔ—!`ºÔdÞ"¥š~qX´.ƒœxÙ´pFãþ9^î;Þ3Â+!i%˜åÐ;';E¼…‚~á~~¤'BÛuú½ÞÄ®7èƒÛ½µ±Û¿?ƒÜ¼\y#@BT³9ܽÍb±¹¿9ÖSžÛuï?–o¯Ú(º0¾vÉÔí§+›æfíg0_ÕÛ°a‘Ð^ ‘B©—’¤Ý;ÃÜ—v‰•E¾7!TÔX¢½œ$!7[ŠÎAmG¢}Ä8­Sš ­Ð}K_e2ê²ö¡RÁªÃÜÌ[š’ `A¤œh–jU ©uªª‡¢â±WÊ„ê²ÀìfÞÅ¥D’Ô[XæñzþU!×Ù…û²€1Åæ½•7;Ÿ”2ðé qsdã‰|ó'õfÍjr×µGjÄ›•Øž3^º ¤Šöœ+¬|˹ÜIhØ^9FÂŽA®Jpä:d%@…;/ËÀɶÒÇé.Ov|©½Ä1ñã˶—‚VÉÎæÌF¼&wf.—bÆìD0È[* ~mß'ò> Ѱ2s/0à,àhÑ¡‚¯»hZ´×ª”áò ÏôvÚ㨧ñ&‚ø$J˜À5^JuÿyÐ8ŠÈ“ ª+î-/g°e혷ע(ôZÝ龛ŒRíŸÆ)Gš-Z³Öq¸7"ÿüÀ¯*@Îäg¥ ß:€ ‹¾;²j6×%ÀÈmÚGçO5›á m"úüÄŽœÊ‘¥s(L gº¾½0Ãֿݹ)!Tx!kîãá»ö%p¸G‡€Q7k¡b< †'Œùe« ’bUOã¼~ýú!g7°gÆFK»¾ÿÄZI«þüKz­€³$ÊË+Ðøù+Ùê} ½ê|JSw{Ø{Â+6Ç·g©{ö_öÕ§´Ò'™Ó#ß«íÏ÷ô›&°‚ˆ°ÊÀàReX±—T†%È¢2¬%)­úv´¸2VL¢ó#÷í”=«Ú@`¦×âïøLKÈpN×¹'Ø.ÒaݪybOC»Õ=º@„P®eæŸã”ÿPKxºZ<ÁïÊ;˜(IAR-STR912/examples/ADC/interrupt/main.cUT “LjK“LjKux êëµXmo›Hþ)ÿaÔJUùb;/½»Dý@Çè0PÀ‰ò ¼‰W‡Áâ%—ÞéþûÍì‚ ±M›&‡Zvgžyffwf×ý£-¨‡ ÚÎk\}8 >ƒçOx”¥,fQ‘¥ rئº¿w#3°ÂƒÕs‹'ÇM+e1O3h>0Q5P–˘GaÁÓ|.HX †€Y^€‘ç%›‘ðà¼?ü­/h]À ËrÒ„Ë£Œ/È ÝCƒèÏáb³8Yú˜… (sž *ÏaY¡ák‘B”&O … þ ãôx²,‹ˆma2Ã&¾3–—qA˜‹tƾ‰Áe Ó;ñBpn'óÇDúñÎÙó¼H³oôŽ©89¡TüÚJÅI=w¶™¦a5·+…ÿc¬ƒãêžnùàÙ#ÿVqu¸ê F¶ ×SCS,UÛ2ï@1&(>êØ7†fX× N=ßžè®Gp·†?Æý!& Õ'ŠoظúµâŠQ4h¸¤®MUßC!°]Mw…)œ›€oƒ§Üèà],7 "€75ým6CumÝÔUßµ-CõÀ+¦ –íÕcÝÔÀ4”+SŠušá¢t° K~ Q¤iyú×)zn(&hÊD¹Ö=éZsH ¹€jJ·]Ã#F®=!®ˆ >ÅÎ7Å ­b¨XZ_ºSO‡‰¢épu·ŽiФ –ä¶ŽÁ*†¥kè«c 1f!)š$Û‘|ÿÝßßë#«$ŠËËá—7?„ø‘K<øðûð9ˆùýñüÃþž°ädü‰jZñmÉfìá-+î5"¢ñ„½Éƒˆ‹+þÛBòñ)Ìxx¿%Є¸¿‡û&0^øF ÃPxEVFE™±Ëý=,©/¤ê‘¦ÔµcØm±ÕHS¬åÈC™D¢Ç`õ/RJæ«]zšñ¡é¿óþ ½vV6uÙÌ·4[lã8Q7D±Û©÷5û¼•&Œ&ì²hά'\†áN6'Þ÷kˆ'…ðäà)å³Ãý½ö÷>òÚ–š~5½¦oÀ}u_>^ŠY–`+&eúï©Ó`¢šxi™ELM“þxP¶§^®\éM±uㄹèåh'¤Åiô'䂘IX4þÄó4kàÒh€ÃÃWâNÀY^à¾Ì òÏ™T†/0<êƒô¥WÆWRC%Û~Üjt‹úŠÄGt=¡ +K¢ˆI_( ’.¾£ýrÐðwûƒˆ¤¨1Žâ<ŒùßòÀ'SR±s¶²Ã½ûãìè4%ÙÑ–;RüvXÃ&¿]ìHPôðeXq¤âUq¤éNžˆ+ ~†$¶³!I_B¸"(*bÅPŒwPDL©ú³ O_ÃðtÃÓï3<ÝÍ%$%¬ý`,±¼Óþmží›KqxRyS¨ó0IX|¾vke„D>Ó¥A˜’èÓãAOšU愺oâý¬'† ÷kòL)¾}r¨)µáœ\$¸P³rYl:ˆMS®Þliî‡-‹kšN#_B·ÆúkÎcv0¤Ï·_:^ó#¢niôKÁÈ0õêtþPKxºZ<³A¦Š{ ,IAR-STR912/examples/ADC/interrupt/91x_conf.hUT “LjK“LjKux êëµWÛnÛ8} /mÐF²Úô’7Z¤%buñŠT‚<ŠM7Úµ¥¬$o›~ý¥Ø•”„p.íÍðÌ™3#^lë왯Ý7àÆó›„{¾Ƕ?‚a¾¬JµQ˦*‹|YÃs¡§'g0Ë7 ¢l«à0.áËäûbYëó; !»æ®¬ ?.!t)ûûM¾Ìš¼,@ªl«Á4k’Vu¼®wj¥Áö…5ùlµÒ.áJUµŽ˜œÛm€ª—U~ß’؃ü¶ÊªÐ"ò¯»ªÍqŽðß<´?¯›²z¸ÔÏ(Ôq´ÐO¡Î~îÃÓ"&s/ø?(–>ƒy‹$ˆx&¯IÂàÚç®\À,NÀK9%‘Ë Ž‚ <@$ÆÄWœòÈ72Y"àšK_sºq;Á# ‰äq óHÒz1!Ot8M])qBYҦ¹d ‚\1¾»Ùwi?¸×ü§saÛúðQÅ*_w·•Iѯà ßf¼`û·ùþ2~®›¿ð?ETÿÔ™ñ€=vú?PKxºZ< [íÇ®î=*IAR-STR912/examples/ADC/interrupt/91x_it.cUT “LjK“LjKux êëÕ›]o£8†ï+õ?ÍÞ´£ªi2;ûѽ¢@K|¤@šéUDÁ™ QÈÓNµÚÿ¾Ç†¦!í^LèŒeÔ‹Äö{|Þ'Ž]2øøÆ'æ)˜þì6 “i£‹‹ß ŒÜ,a%ÍiÂYYdIoI>Â8Ë)xñ=…íu ¿-3~žˆFÍ×%ƒÝë\Óc³É³$æYY@Dã{ÑØŠ9Ŭâ@ªª¦©h|ñy0üc »„Ê*¡ž_H­–md—èqV)8e¬Þp){È AYó¬ Õ9 ßù©à­³ V‚HpG¡®Ð/!•ibAœçÀ×跄ʬ+¨ê;ÖfÖ†áë˜Ã}üe’Ô 3¾FC‹Aüí¼m½XÓ°»lkx­hQÉžªrÅcF1 ö}Çâ"YC\óò£$˜ÏÓs¯¥lŸ”ŒÑjSiV|…63ˆ,—%m³—Þp”¬ ’—qŠ–1]Ñhf£_³ ›žoQX•y^>@$(ØÐû :k¼ †,ã"§T¨ž;Ù·Ž‹4Ç!RØP kÊâ¼\¿äø£>ò)Z+ÙÓ¥x£t4£ô÷Î(=×ýúzÛºÿÝ? ãhjÃ,°CÛ‹ ôÇÑÂlXL‰9ÂØ`2'–á™6øžs qC0"Ôø7Ä"ÞÌyù®„° ÑTÄ4}YA<”»FD|{b²;$[s3 ±øe²+¬s!ò!4nlˆˆkŸƒÊ9„s':31ßvl3 |˜!„SÃqÀó#¸²aj;8ĸrlÒðnÁ"¶>þšW""V™¾Ú×stN ,Ã5&vcBô6Æ"ÀtÛ ……qà»FˆP.ã!œ#´-Có%˜‡6¸†eÃÕí-T41öa5½È žm¡¡ÀFHø‡e&%pÊ$»$ßDŽ~ÉŠ$¯ñ»ö¡Á׎ŽïÜ“\7ê"‘³v³v\¼Hé ç‚t9m¾ÓoLï—í û¬Ýjð«^qV7¥ÛéAÎ9¤ØÔ|wíñʂʰæ»5/å5+^W¼ï…¸Ê,}íûDŸýs|ôïOb.ÈwPoæÜ Uš¡Þ±©òŒÑåÉúÒ”r¡…ø®d\3ìûư7¶À§1µdÞ1¬ø˜\€UšqÞñ©€òš,ñF÷ûA‹›sïÜÅ3úwM+®ó®k%ËåáÔqÑÔzdzŠnŒ/g/Ôz¢ßó­†ü°ù¡¶ä‡ÊÉz‘iK~¤œü§^ä?iKþ“Zòóðj:;½”ëÉ~ß¹øN?øŽ¾ðÅðCsÞcCeÎõßu­»íÙÑáÜ…ZOð{¾·\ãpð(Ö“{×µì¦áŽÅzbïºV€Ý5§îšzBïxVqbcõ€Žb=©w]ï`|3§1kž¾)R(W”ÅCûÀÅ*¿‚ˆ2ˆl:Ʋñnì“¥mÞœþ%þ.c…”ËH}„MWTÄÛž·ˆ'vÚ‡iDœ¦ðç5m{À6K 0º!8“E³…»ôÍáÒÄÏ¢ ù™ÌdB¹¹MóF‘)µm–ŸOER?í.Ù¢gQR®çÈÚw®b‹‚)ô8Ž’r}á+>)ô8‘’r}á+>“"#³Ç¬#Ôz¢ßó­†|)G¨µ%¯x ÃY1/Ôz’ßó­†|1/ÔÚ’W<æëpð(Ö“{×µìAÔc¯ˆb=±w]«xx‹ô8õF±žØ»®Uœz‰HŸMl£×þ+ïªø÷X`½Æü/²2‡[ÙF¯1Å›Y™CG,½ÆüÕ?f±è±ðJ¹žô÷«ø ÌøúªÇͦ”ë ßyþÛø¿ç§Ù¶g‰Ÿމc·ÝþPK yºZ<IAR-STR912/examples/ADC/.svn/UT •LjKʈKux êëPKxºZ<Ç'¹!¹$$IAR-STR912/examples/ADC/.svn/entriesUT “LjK“LjKux êëP±Žƒ0ÛŸø•—@ °UíÒµeº-…WÊ$Qò¨úùÒé¤[Ï“mÙ¬`˜"”ZÓ9¤VÊ>„•)qž^.O~==|)wÄró¢÷ü’W÷%Ãly -I^ŽWqë®Ò’Þv 3%y<Ÿþ·4b#°ºè”n ¶ªÊkS¬> Ð>íBiŒäÜäFø‹úq¸*‹bÙÙ Q*KuÓÓ`Ê;dü<ïåý‰ &ÇãøGPK xºZ<'IAR-STR912/examples/ADC/.svn/prop-base/UT “LjKʈKux êëPK xºZ<'IAR-STR912/examples/ADC/.svn/text-base/UT “LjKʈKux êëPKxºZ’ôß¿“>ýûøc[“>ö³–ÿÅjÁa)yÂ#IëÑenêªÇŸ4*"tZ¤™ÝCeöø¦»vv¥ÍQ÷ÑÖIm®k]€E_”Ꞁ‰’Ÿ'Ó›ä¯Á$<Ù´Ü^‘lb/ðîD,E™›CŠ3ÜÂ`ùqx GT;™~ºzs;ÕöÒ|J³F£ J)Ȧ–¯Òìc“¡qH€gd ϳ9Pn›†ôËÇðâÂÚ6°A+ÝFÁ¾ß½.Ðn*÷ôÚÆj“c«ÈÐ&þ6·j§´4é·•s¬ÉMa+S¿RjÀý Ú?s¥á:¾)ѼۥBc«÷¶‘ë|ž¼|¡óT¦ˆðúï4ìðÝq<5ÅpÓÝú!~ÓŽÛ—ô’ÐoqÙ^¦þW!רH¹ÅN1%O¿v¾ôxx¶å×kxE×òŸ¢m·Š;|7ì3¾0#þM×r¿Áº²ï¢ÿòÈòȧ[a.Þ]ÏÿPKxºZ<ô8T¡+IAR-STR912/examples/ADC/polling/adc_pol.ewwUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&1%9¾ ?G/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKxºZ<*}e)vKM+IAR-STR912/examples/ADC/polling/adc_pol.ewpUT “LjK“LjKux êëí\ëoÛ8ÿ| ìÿ ´ù¶]?Ò+¶¼](ŠÓjkdží¤{@ƒ–h™­Lj)Êuî¯ß!)?cËn(ªÀáR'Õƒâ3΋#·þXÎcgyJýýE³Öxá`°Ðè÷$e¿¾}ûæÝ¯Í¼ÿù§Ÿj%œ}Á€ÇiMIŒïõ£ï›­úö©º0:%QÆ‘X]‚‹Íñûk<É¢V]ç×cq0CdÕpÕÔtwÖ÷[¶BÙ›>ȯ¦X "Ýë輦£x§O¸‡x0#‹õø_·ê{WÖ-C$Ðú Î+\¶ê‹½Æpû¢â–Ñ P,Ǹs¾Õî êKÄnŸ+RÚKÜGb¶GŠ&^ ‘³ùšµêúÂV¯õ'ÝêM¾œÍ :$ç Év†P÷ˆ˜ŠCH«Y|shB×#i¾6Á‡6 a]âãô6 A|šdÂYœ&¶YHl9Ãqp¢Ú§ø&‹cgÊø©õ[3•ÝLœÉ†Uäãø,ø ±¯EüÑž¨Ýôï~ {?xŒã÷f$9NbÓ”“ƒŒ 2Ç2â áó .}(Ã-*’jÆ3]Ÿ#Úw)vÄ ;TJwì츛ª{^Ýûå‡kúœ˜L8Èm͹eN,­&v˜OQ€_9^~íôèHd½ÂwÒ,IêÞ<‹™< œÂãN¡©ƒh褢ÓWêšÍðÒ™Æ Õ,\°Ðtý Fž"³Ø²]Œz½Î'4¾öþ­÷p s;ÖŽo¿j3ãeÒç,Ì‘»5LJóïÚë¦kŒÖA©‚\†Wç¿©5µFíÒܾjO¯KRŽYŒSƒÅÑh4šò§!?êü®ÿäwÔ‰ü4útýĦYÞxs©ÑØzøÈO9ŒhS4‰±b‡=#°Ít˜ê K-:7 ôAÝkõ׉èbšGŽïš—7ÿŽœüМÖûÖÁ û+df{ÀûßDÐ~7„9Òøž·%=h.ŸѼ«:¢ñ¼k<%ôðRÕÜ3œ3Ïës Qlp¶Âžd®a<6Ÿc* * ªŒ³ #ƒ.Ï6ÛH—â9£$°Ê5„ÓEEòV›¦Up`†,ãEjÈHÛ‘ž#þÕ*ã® Š†àÂq˜$‹ AÂhj,ƒ|Fœ‚ú¶ŒÒæœq‹2ÄAK/í…Y`Ïâ,«Êò<;e¡Ìy*­—O§Ì½þ9™ cpÀXIEÂaNÈRpÔS·So†ƒ‚%eœRÚÆ²(ïD#„ÉŒÚÕ¬CQöcD¨7CçÉóøïŒp 2!˜xLìZÀî*öê€Ü¶ÑŠÖå4¡M$pí°é â¬H•›R“ Þÿ3;œè™œØÜLñ¼|je&ï²`…ô½?u¯VË?d%û#8ð”¹!!ŒÔ²^Á¬ò=©Í”oˆ‡ 3 S‰5—¦û„¾Jí|cükÁ„k÷µj—> E pß¡2V6 À‚o&ptp»©š¡ ©GwFl'æ\+i¹ßªÎʹ„|®,x(AS"È‚ˆ‚}PS¤. 8“þ»Y6~WºÀ:QcO™(Ï3dÑqS½¢¼fpAq³ŒÍnŠñ´¤j§{ã勎H ¶ðÎ-†‹®í-÷X^©¤ñËîmG ¤0—hœÊюʼn= Sm ½L JÐôí%,npÒøÑMSZd’ÌÍØÝ:ê£w0ÄÌrD²:ŽñÖd„&Ã…‹ï­éòþk€§U”ìþ¤š-EEOôI½méÄdV!*ȼ¹Õ$øÜÊ3|nuÙ_°Šs"Ô˜í݇m(YzR0cÆ{P®QÆñ&Ûb‘¬ Hf(=ŸãÞ¥˜ŸÆ5Ž1÷w§î-¦ZvЊ€¬¥zWz½þNd Ï( ª:Ñëy¹ÞREÑ?°Ì8‡ý\ó†äBUmŽ"+” ¥ ¨K4mÆ-’ªÉ%e$'ž·,¼»á¨w*/÷/á¥i%Xå0['[M‚yáþêÈŒ„+ßëuûf »þÝ w~çÚõF~ïöró|æ%”‰C`Íúpû6KÅúþúØŒy~Ç¿ýô? }¤¯2ñ{zgÓÞªý ”ÃWµÇö4E\¤ ŒwB$Qêm!©÷NdîK;GË¢0',®±Ìx;IB®KŠN)Aã$ŽDû„q2|œOXlϵR@ôM¿cdÕdíBiªÑ,æ­ÍIT°!RŽ ÚMµ*­*ê¢Än™­Ö¹,ªŧD“ÿª×£ìãuÁý«‚®“÷eÝcŠí[«`z:(E“Ò‰ÄÍÂù æê•—åø¦ã?ÖH0-q<'¬tHÕœ+¬Uɹ¬$´¬¯F#á¦@W%8r² ÂÊË2pòRúTWy²Ã[í%ÊÄ]ŠÏ+7.­’Êæ\GVB­ÌIP7 â–Jœ_7 ‰¼b@´ÌÌ•èsq4oSÁ;hRTkUЏ<Á³]N{õ8ÞxL'ú1\ãç„QÏŒîÝ÷Ñ¿o—àÌ,Z ðóªpØ¢ìæ0ösšk$rÇyùòåÝÊõÅ!œY“–«’AGi­úÓï?jEœeɪ½MŸ¾¯§¾Xio íÏÚ¯sݼDó$Æ)8u¹_—ÿ—WƒîôA:|( j» ú›šl`E a•Á¥Ê°Ò « Kùq¬V}#A‡„IªÖ,)[št¯jtÖe-µÊŠ-´˜±ãh;ÌØƒFÝÄBjàb‡«ÛÝ=:G„~P&¬W_†&ÿýPKxºZ<Ô¾õ1Ø<+IAR-STR912/examples/ADC/polling/adc_pol.ewdUT “LjK“LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPK yºZ<%IAR-STR912/examples/ADC/polling/.svn/UT •LjKʈKux êëPKxºZMB#Š÷eç]×¥q¼.'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKxºZ< «ÕŽ·BIAR-STR912/examples/ADC/polling/.svn/text-base/Readme.txt.svn-baseUT “LjK“LjKux êëµUÛnÛ8} ˜G§H|Û¦»5°ŒDÇÄêâ¥è~*›¶‰J¢¡‹“üýÎHªnÓ‡ºô‹Ì™sæÌámôáï ¼x¹–â~¡`:‚D…fSZéM]ÚÂl*xê:`n2 Qšk8Hns=¬_jJaM}°%¼3=Øñ˜™MZ[€ÒiNÉ~Zk$-«DU5zKÉãÛÑäQ+mº¬1Ž[€®6¥9¶$gö·“võAó=à/i~Ìô`i³Ìû«!üâA’¦ªmù:£o”>’ôß¿“>ýûøc[“>ö³–ÿÅjÁa)yÂ#IëÑenêªÇŸ4*"tZ¤™ÝCeöø¦»vv¥ÍQ÷ÑÖIm®k]€E_”Ꞁ‰’Ÿ'Ó›ä¯Á$<Ù´Ü^‘lb/ðîD,E™›CŠ3ÜÂ`ùqx GT;™~ºzs;ÕöÒ|J³F£ J)Ȧ–¯Òìc“¡qH€gd ϳ9Pn›†ôËÇðâÂÚ6°A+ÝFÁ¾ß½.Ðn*÷ôÚÆj“c«ÈÐ&þ6·j§´4é·•s¬ÉMa+S¿RjÀý Ú?s¥á:¾)ѼۥBc«÷¶‘ë|ž¼|¡óT¦ˆðúï4ìðÝq<5ÅpÓÝú!~ÓŽÛ—ô’ÐoqÙ^¦þW!רH¹ÅN1%O¿v¾ôxx¶å×kxE×òŸ¢m·Š;|7ì3¾0#þM×r¿Áº²ï¢ÿòÈòȧ[a.Þ]ÏÿPKxºZ<ô8T¡CIAR-STR912/examples/ADC/polling/.svn/text-base/adc_pol.eww.svn-baseUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&1%9¾ ?G/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKxºZ<ž8ÀFÌiBIAR-STR912/examples/ADC/polling/.svn/text-base/91x_conf.h.svn-baseUT “LjK“LjKux êëµWßs›8~ÏLþ‡éK›éÅ@~µy“A6šã‡ "žS[øŽÙ}«"Tµ Õ¡/æø¤o1„ªöÌ~Ló\¬Œ®€Ù°º]Ë®ÀUWàº+pó“¥§>ëÛ„ªöl˜æßŒ£^ó¨×:ê½ÐJõ—8j$vSMYÒ— ¡Z*<²µT;"ZÆ¡išÖ¡©oÍxÂÂNû"$P1 Å6ÛRì žTì+žVìÅþ¤ØŸµ3xï“¡ZªØÖo‚µD¾F’¢É×KJHÄuë¸Ç$¡oÆùÆcé›Oúö¡ªm¨ýIl“ o1„ê_]Ž~_¼¾ŽýLqï£Ák©˜Õ{¯"Tµ Õ¡ë%ЀvïõGl{Ïœý¡¸]Ó,ŸÙåsU§+X–âïÈçÏðOºÚxÿ§û߇}|{“ÙÝö“÷à€Óº2 y‰|‘-¦ç×Çî>×ð^§öïnÛ«×±~þ¿B8òb;b}éõPKxºZ<ÌfØ+=@IAR-STR912/examples/ADC/polling/.svn/text-base/91x_it.c.svn-baseUT “LjK“LjKux êëÕ›]Oã8†ï‘øG³73#Digö‹»¸­¥|”ĥà ©™F*I×q`Ðjÿû;šÂ^0k9êEeû=>ïS÷8±ÚÁçW.øè~7š]Æt2e0:9ù ä™(ùšgR”EžUðšôðà3Œó5‡0½åðtŸÃW¹<ÎÔ§–«RÀîu ë³Ù¬ó,•yYãé­쥒cHQI UUó%>ùu0üc ó:… .*%Ÿèñ¼ÊD¾Ñ1žƒ§y´\ˆz#!áâ.Ï8Äe-ó‚WÇ(|çK¥‚[åÜ( YZÀ5‡ºB²„¥NÒõäŠÿ‘quU}-¶™mÃÈU*á6}€2Ëj÷¹\¡!Œ% }fv¼½XñpºüÉð Gñ¢:Ò3Uå¼OÇ08÷µH‹li-Ë[Œ’a>³–z|V Á«MY,óâ;l3ƒ4Ãvݲö<Û®‘Rlƒ¬Ët‰–1]5hæ‚àßó ‡?!âpS®×åýNø T‚Š ¿Ýȇ£Æ«bx/r©rZ*Õã$;ðVi±\ã’@KØp\ +.Òu4>Îñg}äS´VЇSõWéh¤Véï­U:zìûúr·}ÿµºBÆlJ`“„„ ’hÌNL`1¥îhã(†ÉœzNèˆBÿ$à0ÔDÔ£áÜy¢€Ä ,(›ª˜n¤;hˆòÀa4 !&'Ö­8!•Ü›»,ÁAʼnõTØ‹ q.0cp]20@2÷Ù‘*DÔ#â—ÅQHÝ’©ãûF ÎL‰ïO3ŸèNx qôÎÕ¼S±Ë„œÏÑ9u|ðœÀ™Æ„šm†U.*€ë7¶cš( ã8 48ŒÀP®ã!™#´'†Nè K0OŽGàìr‡*šû°„!shH<4„„/l 1)…S'Ù&ùþ+zpxðK^dë¿k¶|õáðàð`ðÎ3ém£.2]µ›­ãæÅ’ß`-X^M›ïô+åýt[aµOüªWRÔMëSyÐ5‡›Zîn=aYpýÖr·ç¹#æ²ÅËŽ÷½÷]™/_úþ¨š?ü}xðÏÿÄ>YÐ7Pojn…*ËPïØ4y&ø —Ùªé J¥ÒBz] iö}ãØ; [ðËT¦V2o6|LÏ;àF•eœw| ¼ð&Wx£ûvÐêæÅ;wñ‚ÿUóJÚÀ¼íÚÈvÙ:nšVBoy6QÁã þÖ»–ÛI~ß¹ø¬|f/|f>>Ÿtg¯Ôv¢ßóm†ü°ù¡µä‡ÆÉz‘YK~dœü—^ä¿XKþ‹Yòóäl:ëŽ^Ëíd¿ïÜ |¿|ß^ø¾aø‰;ïñ@åÎíßvm; ëÎ]©í¿çÛy/pºƒG±ÜÛ® `w°;vÛ‰½íÚöÀíN=pí„ÞòlâÄÆëÅvRo»6qéĬÇa–Û‰~ß¹!ø=Îk´Ü^ø†OlT =Žl´Ü^ø†mèÈíQu”ÚNô{¾ÍïQr”ÚZò† N’Ìz¬y¥¶“üžo3ä{¬y¥¶–¼á5ï_xÝÁ£ØNîmװǬÇÊíÄÞvmâ×M´Ç±0ŠíÄÞvmâXø£}b½ð_x7Å¿ÇÛè-æox“Õ9ôx”môó7ü0«sèñ„Fo1ó¿CXôØxµÜNúûÎMüId|~ÖãfSËí„¿ï¼ ÿuüoùë2 =õ¼1õÉvÚPKxºZ<*}e)vKMCIAR-STR912/examples/ADC/polling/.svn/text-base/adc_pol.ewp.svn-baseUT “LjK“LjKux êëí\ëoÛ8ÿ| ìÿ ´ù¶]?Ò+¶¼](ŠÓjkdží¤{@ƒ–h™­Lj)Êuî¯ß!)?cËn(ªÀáR'Õƒâ3΋#·þXÎcgyJýýE³Öxá`°Ðè÷$e¿¾}ûæÝ¯Í¼ÿù§Ÿj%œ}Á€ÇiMIŒïõ£ï›­úö©º0:%QÆ‘X]‚‹Íñûk<É¢V]ç×cq0CdÕpÕÔtwÖ÷[¶BÙ›>ȯ¦X "Ýë輦£x§O¸‡x0#‹õø_·ê{WÖ-C$Ðú Î+\¶ê‹½Æpû¢â–Ñ P,Ǹs¾Õî êKÄnŸ+RÚKÜGb¶GŠ&^ ‘³ùšµêúÂV¯õ'ÝêM¾œÍ :$ç Év†P÷ˆ˜ŠCH«Y|shB×#i¾6Á‡6 a]âãô6 A|šdÂYœ&¶YHl9Ãqp¢Ú§ø&‹cgÊø©õ[3•ÝLœÉ†Uäãø,ø ±¯EüÑž¨Ýôï~ {?xŒã÷f$9NbÓ”“ƒŒ 2Ç2â áó .}(Ã-*’jÆ3]Ÿ#Úw)vÄ ;TJwì츛ª{^Ýûå‡kúœ˜L8Èm͹eN,­&v˜OQ€_9^~íôèHd½ÂwÒ,IêÞ<‹™< œÂãN¡©ƒh褢ÓWêšÍðÒ™Æ Õ,\°Ðtý Fž"³Ø²]Œz½Î'4¾öþ­÷p s;ÖŽo¿j3ãeÒç,Ì‘»5LJóïÚë¦kŒÖA©‚\†Wç¿©5µFíÒܾjO¯KRŽYŒSƒÅÑh4šò§!?êü®ÿäwÔ‰ü4útýĦYÞxs©ÑØzøÈO9ŒhS4‰±b‡=#°Ít˜ê K-:7 ôAÝkõ׉èbšGŽïš—7ÿŽœüМÖûÖÁ û+df{ÀûßDÐ~7„9Òøž·%=h.ŸѼ«:¢ñ¼k<%ôðRÕÜ3œ3Ïës Qlp¶Âžd®a<6Ÿc* * ªŒ³ #ƒ.Ï6ÛH—â9£$°Ê5„ÓEEòV›¦Up`†,ãEjÈHÛ‘ž#þÕ*ã® Š†àÂq˜$‹ AÂhj,ƒ|Fœ‚ú¶ŒÒæœq‹2ÄAK/í…Y`Ïâ,«Êò<;e¡Ìy*­—O§Ì½þ9™ cpÀXIEÂaNÈRpÔS·So†ƒ‚%eœRÚÆ²(ïD#„ÉŒÚÕ¬CQöcD¨7CçÉóøïŒp 2!˜xLìZÀî*öê€Ü¶ÑŠÖå4¡M$pí°é â¬H•›R“ Þÿ3;œè™œØÜLñ¼|je&ï²`…ô½?u¯VË?d%û#8ð”¹!!ŒÔ²^Á¬ò=©Í”oˆ‡ 3 S‰5—¦û„¾Jí|cükÁ„k÷µj—> E pß¡2V6 À‚o&ptp»©š¡ ©GwFl'æ\+i¹ßªÎʹ„|®,x(AS"È‚ˆ‚}PS¤. 8“þ»Y6~WºÀ:QcO™(Ï3dÑqS½¢¼fpAq³ŒÍnŠñ´¤j§{ã勎H ¶ðÎ-†‹®í-÷X^©¤ñËîmG ¤0—hœÊюʼn= Sm ½L JÐôí%,npÒøÑMSZd’ÌÍØÝ:ê£w0ÄÌrD²:ŽñÖd„&Ã…‹ï­éòþk€§U”ìþ¤š-EEOôI½méÄdV!*ȼ¹Õ$øÜÊ3|nuÙ_°Šs"Ô˜í݇m(YzR0cÆ{P®QÆñ&Ûb‘¬ Hf(=ŸãÞ¥˜ŸÆ5Ž1÷w§î-¦ZvЊ€¬¥zWz½þNd Ï( ª:Ñëy¹ÞREÑ?°Ì8‡ý\ó†äBUmŽ"+” ¥ ¨K4mÆ-’ªÉ%e$'ž·,¼»á¨w*/÷/á¥i%Xå0['[M‚yáþêÈŒ„+ßëuûf »þÝ w~çÚõF~ïöró|æ%”‰C`Íúpû6KÅúþúØŒy~Ç¿ýô? }¤¯2ñ{zgÓÞªý ”ÃWµÇö4E\¤ ŒwB$Qêm!©÷NdîK;GË¢0',®±Ìx;IB®KŠN)Aã$ŽDû„q2|œOXlϵR@ôM¿cdÕdíBiªÑ,æ­ÍIT°!RŽ ÚMµ*­*ê¢Än™­Ö¹,ªŧD“ÿª×£ìãuÁý«‚®“÷eÝcŠí[«`z:(E“Ò‰ÄÍÂù æê•—åø¦ã?ÖH0-q<'¬tHÕœ+¬Uɹ¬$´¬¯F#á¦@W%8r² ÂÊË2pòRúTWy²Ã[í%ÊÄ]ŠÏ+7.­’Êæ\GVB­ÌIP7 â–Jœ_7 ‰¼b@´ÌÌ•èsq4oSÁ;hRTkUЏ<Á³]N{õ8ÞxL'ú1\ãç„QÏŒîÝ÷Ñ¿o—àÌ,Z ðóªpØ¢ìæ0ösšk$rÇyùòåÝÊõÅ!œY“–«’AGi­úÓï?jEœeɪ½MŸ¾¯§¾Xio íÏÚ¯sݼDó$Æ)8u¹_—ÿ—WƒîôA:|( j» ú›šl`E a•Á¥Ê°Ò « Kùq¬V}#A‡„IªÖ,)[št¯jtÖe-µÊŠ-´˜±ãh;ÌØƒFÝÄBjàb‡«ÛÝ=:G„~P&¬W_†&ÿýPKxºZIAR-STR912/examples/ADC/polling/.svn/text-base/main.c.svn-baseUT “LjK“LjKux êë­X[o›J~·äÿ0j¥Ê©¬ØÎ¥çœDy €mT À‰ò„ÞØ¨,.izªþ÷3³ ê˜^TÔªxvæ›o.;»tôþ•ò Ȧõ`k³¹ gãñpÜE¤ ‹X§I¼fÚgi10ü-ƒú¹‚­Ƨ-KE¾IRh>W°v»( üŠçƒu¿€,\Ç"Ž?üßy˜åIúåŠÞ±ggTŠ¿Z¥8«Ö.Ë4)׎•ðÏvç*X¶ê¨† Ž9uï%[…û¹&ÏAs`jÚ0[jŠdÈ*˜†þ’¶p@rÑÆ¼Ó͘¼t\s¡ÚÁÝkî·_Ð 4_H®f`«3ÉæRt¨Ùd®,e×A%0mEµ¹+\[€k‚#Ý©àj •w›„ÀYêîöš&Û¦ª«²k›†&;àÌ%]ÃtáV…¹ª+ kÒ­®rHÉxE³Q{HXš!~ S¤i8ê¿KŒ\“tP¤…4Sz³H ¹€¬‹°mÍ¡¦¶¹ ®ˆ .åΜ‚³Ä¤Õ9” e$B‚¥£ÂBRT¸}Øg‹,hQ$KpÛç‹`%ÍP ÈV1I—HŠ–9Év&ÿ|Cú½·aDÅŠÁ›&/^>žnÞô{ýÖÆÓâ0w¿ì˜Âžh÷—'O‹ /RvÝïá®ýN«’4µf–f¶ÕjIS­ß ãœÊÁs®Nú½¯ýΈÉù\¡mâÝùQÁàÆÜàmø´BHE½]Îè7ÀŠ=ëÁÉ5_e1Nz£¿Ž¼ô²þÑIŠ4`ú®•Ð3ùäº%£÷Kœ5(?ãýø4’‚( >AÆ!(ƒÖB%|³$mà’ÔCñ¤a³Û °êi EFŸVÂ#›Ô Y²n…ºLŽKpÏÃDA5hp„Vcÿ1óS°|BÀjº TªÂ(õƒF°¯?D ¢zèGáâx"¤°ÃfOšüޱ#E>øñeRr¤N+9Òr'OÄå¿C’ºðâgHÒ/®\äí[2äòŠˆ)L—áù¯0ª^½ñu—²¦x«#W{³È1”N3še•½{V‘m¬"Š:­4 ³£?¼Ë•Æ ‘'jÛ‰ E9Kcº–ö‚+ŠÏÛv¢îÃw‡@Œó½S/€vX±… ‡}wp|'· ˆµ .8’"Æ6¢[<¯Ø¾.²X‘·«‘Wß•l·D§Âš†Î™fÓÜ píÙBàØ38ò0.<·ÔA}hxh'Š$åtñ.«~"¡‘¸¬ÿ&‰VÞþ*q}Åá_zX‰RCw~\yV4‡æ[‡vãZÓ`+בsé>OÉß>ЩZÃtßñb 6ôë¥r4ã†è,G;áÝÅl6Ù+Û‡L¤¿K·­°>oðKz09¡÷¯âfWžV÷>6<¶i5} }ß6Z°‚ '3–O#ò"ã’©.ÍW°v»( üŠçƒu¿€,\Ç"Ž?üßy˜åIúåŠÞ±ggTŠ¿Z¥8«Ö.Ë4)׎•ðÏvç*X¶ê¨† Ž9uï%[…û¹&ÏAs`jÚ0[jŠdÈ*˜†þ’¶p@rÑÆ¼Ó͘¼t\s¡ÚÁÝkî·_Ð 4_H®f`«3ÉæRt¨Ùd®,e×A%0mEµ¹+\[€k‚#Ý©àj •w›„ÀYêîöš&Û¦ª«²k›†&;àÌ%]ÃtáV…¹ª+ kÒ­®rHÉxE³Q{HXš!~ S¤i8ê¿KŒ\“tP¤…4Sz³H ¹€¬‹°mÍ¡¦¶¹ ®ˆ .åΜ‚³Ä¤Õ9” e$B‚¥£ÂBRT¸}Øg‹,hQ$KpÛç‹`%ÍP ÈV1I—HŠ–9Év&ÿ|Cú½·aDÅŠÁ›&/^>žnÞô{ýÖÆÓâ0w¿ì˜Âžh÷—'O‹ /RvÝïá®ýN«’4µf–f¶ÕjIS­ß ãœÊÁs®Nú½¯ýΈÉù\¡mâÝùQÁàÆÜàmø´BHE½]Îè7ÀŠ=ëÁÉ5_e1Nz£¿Ž¼ô²þÑIŠ4`ú®•Ð3ùäº%£÷Kœ5(?ãýø4’‚( >AÆ!(ƒÖB%|³$mà’ÔCñ¤a³Û °êi EFŸVÂ#›Ô Y²n…ºLŽKpÏÃDA5hp„Vcÿ1óS°|BÀjº TªÂ(õƒF°¯?D ¢zèGáâx"¤°ÃfOšüޱ#E>øñeRr¤N+9Òr'OÄå¿C’ºðâgHÒ/®\äí[2äòŠˆ)L—áù¯0ª^½ñu—²¦x«#W{³È1”N3še•½{V‘m¬"Š:­4 ³£?¼Ë•Æ ‘'jÛ‰ E9Kcº–ö‚+ŠÏÛv¢îÃw‡@Œó½S/€vX±… ‡}wp|'· ˆµ .8’"Æ6¢[<¯Ø¾.²X‘·«‘Wß•l·D§Âš†Î™fÓÜ píÙBàØ38ò0.<·ÔA}hxh'Š$åtñ.«~"¡‘¸¬ÿ&‰VÞþ*q}Åá_zX‰RCw~\yV4‡æ[‡vãZÓ`+בsé>OÉß>ЩZÃtßñb 6ôë¥r4ã†è,G;áÝÅl6Ù+Û‡L¤¿K·­°>oðKz09¡÷¯âfWžV÷>6<¶i5} }ß6Z°‚ '3–O#ò"ã’©.ÍS[øŽÙ}«"Tµ Õ¡/æø¤o1„ªöÌ~Ló\¬Œ®€Ù°º]Ë®ÀUWàº+pó“¥§>ëÛ„ªöl˜æßŒ£^ó¨×:ê½ÐJõ—8j$vSMYÒ— ¡Z*<²µT;"ZÆ¡išÖ¡©oÍxÂÂNû"$P1 Å6ÛRì žTì+žVìÅþ¤ØŸµ3xï“¡ZªØÖo‚µD¾F’¢É×KJHÄuë¸Ç$¡oÆùÆcé›Oúö¡ªm¨ýIl“ o1„ê_]Ž~_¼¾ŽýLqï£Ák©˜Õ{¯"Tµ Õ¡ë%ЀvïõGl{Ïœý¡¸]Ó,ŸÙåsU§+X–âïÈçÏðOºÚxÿ§û߇}|{“ÙÝö“÷à€Óº2 y‰|‘-¦ç×Çî>×ð^§öïnÛ«×±~þ¿B8òb;b}éõPKxºZ<ÌfØ+=(IAR-STR912/examples/ADC/polling/91x_it.cUT “LjK“LjKux êëÕ›]Oã8†ï‘øG³73#Digö‹»¸­¥|”ĥà ©™F*I×q`Ðjÿû;šÂ^0k9êEeû=>ïS÷8±ÚÁçW.øè~7š]Æt2e0:9ù ä™(ùšgR”EžUðšôðà3Œó5‡0½åðtŸÃW¹<ÎÔ§–«RÀîu ë³Ù¬ó,•yYãé­쥒cHQI UUó%>ùu0üc ó:… .*%Ÿèñ¼ÊD¾Ñ1žƒ§y´\ˆz#!áâ.Ï8Äe-ó‚WÇ(|çK¥‚[åÜ( YZÀ5‡ºB²„¥NÒõäŠÿ‘quU}-¶™mÃÈU*á6}€2Ëj÷¹\¡!Œ% }fv¼½XñpºüÉð Gñ¢:Ò3Uå¼OÇ08÷µH‹li-Ë[Œ’a>³–z|V Á«MY,óâ;l3ƒ4Ãvݲö<Û®‘Rlƒ¬Ët‰–1]5hæ‚àßó ‡?!âpS®×åýNø T‚Š ¿Ýȇ£Æ«bx/r©rZ*Õã$;ðVi±\ã’@KØp\ +.Òu4>Îñg}äS´VЇSõWéh¤Véï­U:zìûúr·}ÿµºBÆlJ`“„„ ’hÌNL`1¥îhã(†ÉœzNèˆBÿ$à0ÔDÔ£áÜy¢€Ä ,(›ª˜n¤;hˆòÀa4 !&'Ö­8!•Ü›»,ÁAʼnõTØ‹ q.0cp]20@2÷Ù‘*DÔ#â—ÅQHÝ’©ãûF ÎL‰ïO3ŸèNx qôÎÕ¼S±Ë„œÏÑ9u|ðœÀ™Æ„šm†U.*€ë7¶cš( ã8 48ŒÀP®ã!™#´'†Nè K0OŽGàìr‡*šû°„!shH<4„„/l 1)…S'Ù&ùþ+zpxðK^dë¿k¶|õáðàð`ðÎ3ém£.2]µ›­ãæÅ’ß`-X^M›ïô+åýt[aµOüªWRÔMëSyÐ5‡›Zîn=aYpýÖr·ç¹#æ²ÅËŽ÷½÷]™/_úþ¨š?ü}xðÏÿÄ>YÐ7Pojn…*ËPïØ4y&ø —Ùªé J¥ÒBz] iö}ãØ; [ðËT¦V2o6|LÏ;àF•eœw| ¼ð&Wx£ûvÐêæÅ;wñ‚ÿUóJÚÀ¼íÚÈvÙ:nšVBoy6QÁã þÖ»–ÛI~ß¹ø¬|f/|f>>Ÿtg¯Ôv¢ßóm†ü°ù¡µä‡ÆÉz‘YK~dœü—^ä¿XKþ‹Yòóäl:ëŽ^Ëíd¿ïÜ |¿|ß^ø¾aø‰;ïñ@åÎíßvm; ëÎ]©í¿çÛy/pºƒG±ÜÛ® `w°;vÛ‰½íÚöÀíN=pí„ÞòlâÄÆëÅvRo»6qéĬÇa–Û‰~ß¹!ø=Îk´Ü^ø†OlT =Žl´Ü^ø†mèÈíQu”ÚNô{¾ÍïQr”ÚZò† N’Ìz¬y¥¶“üžo3ä{¬y¥¶–¼á5ï_xÝÁ£ØNîmװǬÇÊíÄÞvmâ×M´Ç±0ŠíÄÞvmâXø£}b½ð_x7Å¿ÇÛè-æox“Õ9ôx”môó7ü0«sèñ„Fo1ó¿CXôØxµÜNúûÎMüId|~ÖãfSËí„¿ï¼ ÿuüoùë2 =õ¼1õÉvÚPK wºZ<IAR-STR912/examples/WIU/UT ’LjKʈKux êëPKwºZÀ4Ë5Dj«á¸& ´J·Ú©_j2q›zSx½&z>¸»]ž-U•H­¶dì«Z#¨©jàUÕ蔌¯? G[jxЦ"‘sÝ:èji²] rD½Y® Þhxä `/j»Ëµƒ~¿y“yVÕ¥ù9¡od<ãÏogÍfÔŸýW¦€±œ3¸,a‘„$žÊGW0xœso0 ^{ÒEÜ”{¨KX–Å*[7Fƒ*`¯¾ëfYQkcš] ¶•g…v€xqO°Wí5î­ÉÆ·pÁ^ЭP9¬M‰û7—èp„O)˜m­u¡ ÍŒv ƒŒ´Zn`¥rD[ƒNׇ ú•ÂÖLAŽx¶…àŽÅûþÆÃ>ËsxÖø¿^£Ó«AæïŽ mèû]„½”(õù}~¶¥ê34©8~fÊ·ÖE]« YÞŽ^¾‘&ÎøÙ(ôñzºé»Â)n[[•β›¡!~S!׆æ2!duwÆÄ7ªHsœQc®LºWXQ]üÈðÍØ"¡³½‚ŒDDQwMµ<7u,HÐÏÎ'Øaè‹»ÉAJ%R܎ƃä+<—åEAËcQIŠliÂ÷}áÀÛ(Þ¥C¹ZtÚ¸!§#ø€»¢ÐæÓujSa¥Þ'b[Ø%¥Iµ!“-V¬åÙ«ûÒ|¿‚ŸeÛŸ±´«÷ªÌórOœþDÓ¥×·7mž½Åÿçf‘O£eÊv˜òÿPKwºZ<3ÈjÜ<IAR-STR912/examples/WIU/wiu.ewdUT ’LjK’LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[-a»Ñ2N¤O%éx“I!À‡O俣Ã,¥®C(¨C2… ŒÁ¶rÚ¾}:¹8oÄ _äêC‰«Ìšf»kécîP¼HÕá raI]^‘}*Ò.9k±ÏÒAéÌ`•˜bE$¥YpÁÌüùõÄ­ƒJΆÿJ¿—™Ggz}ìÈ„Mì³Ü»Ž˜¾h–nh€¹‹ìËÔvš`ÎU€ìO† ŒÎ3œ1…sÈ¿U° ë˜!“9ó…à:"?©„gVÝ$âÉ,ÜpåÏ?@<ð)àãÊ€áÈ8ºñkÔíj2ÉaˆæÌC$‘/+¨7 Ò!“¶¸+0%åMÁ:fSˆpp¬©LiÅѦ þ,ñfÔÓ¬žqnZR"NGuÄùÊÀϘԤ‚ý0yhÙC x¥^zè9^ÄÑ -%óÁœ¿{Öè•£ q`±R$óÝ¢0_´}Q‘Ç]ÀNƒÎ3•¼š,k‚“z=Ï+yÕ£õ­ÕzÝjU±´;.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò×vÒ:<÷>½ìm½3JncXc¤¶$ ­ñ‹j^v•ð£3ÝPõ`tMJŒ¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Fw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ëµe†½úÍ8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òŸn÷•¾®>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHú’4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿã\~Ùú·½éÿPKwºZ<ÏjUqLIAR-STR912/examples/WIU/wiu.ewpUT ’LjK’LjKux êëí\moÛ6þ¼ûBÛoëüÒvX xÅiµÚ±a;Ù0h‰–ÙʤFQ޳_¿#%ù-–솢 sÝ@/Þ‘<Þ=<¹óÛzZ+ÌcÂè¯ÏÚÖ3 Sù„¿>#1ûéíÛŸßýÔ~öÛû¾ÿáûNÄÙgì 8±¬Îœ„ø6}ô}»ÓÜ=U÷=Fç$H8ù%¸HÑ¿¿Ä³$è4Õqv]0z Dò‚yQ{Ôß/Ø<,Ùñem²éAv5ÆB€ñA}0Å…{uÂ=ĽYmÚÿºÓ<¸²)é#6gp¾Ê5ðªÓ\†Û÷ˆŠkF{ÌC¡lãÞùN¹£B¨;,ûuæ¢t×xˆÄâ@”TxD¦æ;(Öi¦vjm>ª¶h0û|Óê‘Xœƒ$ËiBÝ"N +Ž!å½øó±Ý´¤ýZ³ºÔ‡&ô™‹åmi‚¸4J„µ:-l»TØjšáãØãD•)–ø* CkÎø©ùÛл‰8S-£ÈÚñ-Tð!ž ñsCíjxó ÕûÁa¸³ Q±ˆm]MŽ*È÷ÈlŒCXŸ.påM‡huÔÔÓžÑäòœ¡}cK,°Eåè­=ÁbsuÏi:?þhñT>+$3ã¶a]3+”«&¶˜Ï‘‡_ZNví%ÔhId3÷â$ŠêÞ2 ™=ÃãVġ޹…¨oÅ¢ó—êŠ-ðÚš‡ U,\0_wþ&޳|e{1 zŸÜÉôÒ½¸s¯»KèÛiúèôZ髱О&CÎüÄ™[SÜœ7×m[­‡b1†qé_<œü¦¥ œ9y}s4JBkÌ‹V«Õ–Ÿ–üª?ðó'»£Nä·ÕJO7Ol‹e…·—Z­‡ >Õ(¢KÑ,ÄJæìÿ®Ò¡—g,6è×€½KŸZ¾®ODÓ¤m<½k¿ºún<±²C}Y{쾇W8tsc¤·ì€ã¿ , ü~ôR͸Žs =f^=!˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁód¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@ÝŽöJ¦”6›´‹ep¼÷ dü%c/jÖ²ŽI@±? ¡Îì'Çá¿Â1Œ ÁÄCdvìça÷8ÅM/ÒÐÚƒ%4‰®]k:Ï8˜r¡=Ú¯¢¤† œ’„å®Ê‹+·×^\Ûýî‹«d~óhÕyG³”Dùˆ‘ jÖF—zaRfÊu¥ÉÞÿÌÆž& &'&÷Q'ëZIâ½*™!ÃÑà÷”Âk4ä—ä#âþÈ#ú«ˆð¡™†Wß&ׯ×PšX^Á`”Rˆ ׺ûƒ®âuîÿRÒÛÚ¦}c×¥h|÷H(ºÊ¤gcpÌŽn3Õ³´µpGÄ4+gáä~©›’³kˆ÷ì4þ1à ,‰ +"Jö?u‘úÈãL:ïk²îà·¥ÿ›²4按ùc zm bPFjV0ÿ·kÀ(±ìºS©öª×ž>¡á€Ä°^ùÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÁŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}”g[¹0‰Qˆh7»vϮ޳ë£~aU\¡v¿Lo=ìBɼ“’ÓÞ€²Ý€2Ž·l‹A±¶ %–¡r>Ǿ‰1?«cnMݤZöÐÊ€ŒÑƒ‹ßÁð¯ Dë YAu3ƒ“Ù-• ý Ó‹³v˜'š·"—šj}™ž„¨/]À45ÓdÜ"¥š}vXôP9ñ´iáÜŒ'ƒS¼ÜW¼øƒ×BÒJ0Ë¡7vNvŠxK?ýÂýüHO„ ×ô‡z»ùÕ 7nïÒv&îàúrû|åEŒ }PÍæp÷6‹ÅæþæXOynϽþô0Š. ¤/=2s鶦¹Yû'‡/jƒí#XаÌ@hï„H¡Ô[BÒî`î+;ÇÊÞ“¤Áí­$ ·É%:eµ ‰ö ãhü°œ±Ðœ[¥€Fè>}¯Èèrµ• VdoMhvH‚’Íj¢YšU¤–©¨>ŠÌæ×¦ö–õ ¸”‚Bòz%Ê<^\¿:ä:¹i_Ð-¦ØüJåÍO‡•Xr@:AÚfœH7§;ºS/º¬§W={ü±A¼y…9±‘÷Qˆ†•™/CÎŽ–]*øCÍÊ’¬*.ðL'ÑG-Æ›N âÓ(}` ×ø91ÔÃz{ä|to»ÕGöG)E£‘}ÖB»Œy2sƒ¤bíbœçÏŸßä~/öáÌØh¹¨€*`Ð:ÍÇ?xÔ 8K¢¼¼¿¥§~I頡ܺô¹;éÓaýôƒôç—žX_HfUV{I•Õ­ˆWeu’Ó)¬®ÓÜvر¾“–,‰žÐy郪Fz#Öh§ÂØþâ ÷DÚ…9¬XµMìéf·š²G—ˆÐãJz7ÿÉ0ùï_PK yºZ<IAR-STR912/examples/WIU/.svn/UT •LjKʈKux êëPKwºZ<6K‹¦6$IAR-STR912/examples/WIU/.svn/entriesUT ’LjK’LjKux êë­’ËŽÛ0 E÷BÅ6õ $f×ålÓfSèAe2Hhh]‡‰[mù–EéO,þÜY;A5ÊÀí$íŒmáw^Eˆ*CTHu©92½*M!ú/àHÔÞV°sè‡6­ã’ÞÊ‚HF™À!V¶â­Hž —-¸Ð*ýÜ×mW!-I›ƒÅÄ Èx’à3FRìMÞf_®bí9ä3·Ë}YGfŒvŒ#+%Y´µˆÑ©0oA¦@?ÐHÞ¿§ËPÚ·uh΢&ˆ‘ØëŒÌ®Êê‚emeÒ[ iKøÖ/k-sÞUó(Ñ©ªéâ¬ãÄÑI6v›ßô Ÿš+õ/‰„ú&‰Y9Ë¥u ³M`JÚF3BKìPK wºZ<'IAR-STR912/examples/WIU/.svn/prop-base/UT ’LjKʈKux êëPK wºZ<'IAR-STR912/examples/WIU/.svn/text-base/UT ’LjKʈKux êëPKwºZ<*1` {7IAR-STR912/examples/WIU/.svn/text-base/wiu.eww.svn-baseUT ’LjK’LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦<³T/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKwºZ<ÏjUqL7IAR-STR912/examples/WIU/.svn/text-base/wiu.ewp.svn-baseUT ’LjK’LjKux êëí\moÛ6þ¼ûBÛoëüÒvX xÅiµÚ±a;Ù0h‰–ÙʤFQ޳_¿#%ù-–솢 sÝ@/Þ‘<Þ=<¹óÛzZ+ÌcÂè¯ÏÚÖ3 Sù„¿>#1ûéíÛŸßýÔ~öÛû¾ÿáûNÄÙgì 8±¬Îœ„ø6}ô}»ÓÜ=U÷=Fç$H8ù%¸HÑ¿¿Ä³$è4Õqv]0z Dò‚yQ{Ôß/Ø<,Ùñem²éAv5ÆB€ñA}0Å…{uÂ=ĽYmÚÿºÓ<¸²)é#6gp¾Ê5ðªÓ\†Û÷ˆŠkF{ÌC¡lãÞùN¹£B¨;,ûuæ¢t×xˆÄâ@”TxD¦æ;(Öi¦vjm>ª¶h0û|Óê‘Xœƒ$ËiBÝ"N +Ž!å½øó±Ý´¤ýZ³ºÔ‡&ô™‹åmi‚¸4J„µ:-l»TØjšáãØãD•)–ø* CkÎø©ùÛл‰8S-£ÈÚñ-Tð!ž ñsCíjxó ÕûÁa¸³ Q±ˆm]MŽ*È÷ÈlŒCXŸ.påM‡huÔÔÓžÑäòœ¡}cK,°Eåè­=ÁbsuÏi:?þhñT>+$3ã¶a]3+”«&¶˜Ï‘‡_ZNví%ÔhId3÷â$ŠêÞ2 ™=ÃãVġ޹…¨oÅ¢ó—êŠ-ðÚš‡ U,\0_wþ&޳|e{1 zŸÜÉôÒ½¸s¯»KèÛiúèôZ髱О&CÎüÄ™[SÜœ7×m[­‡b1†qé_<œü¦¥ œ9y}s4JBkÌ‹V«Õ–Ÿ–üª?ðó'»£Nä·ÕJO7Ol‹e…·—Z­‡ >Õ(¢KÑ,ÄJæìÿ®Ò¡—g,6è×€½KŸZ¾®ODÓ¤m<½k¿ºún<±²C}Y{쾇W8tsc¤·ì€ã¿ , ü~ôR͸Žs =f^=!˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁód¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@ÝŽöJ¦”6›´‹ep¼÷ dü%c/jÖ²ŽI@±? ¡Îì'Çá¿Â1Œ ÁÄCdvìça÷8ÅM/ÒÐÚƒ%4‰®]k:Ï8˜r¡=Ú¯¢¤† œ’„å®Ê‹+·×^\Ûýî‹«d~óhÕyG³”Dùˆ‘ jÖF—zaRfÊu¥ÉÞÿÌÆž& &'&÷Q'ëZIâ½*™!ÃÑà÷”Âk4ä—ä#âþÈ#ú«ˆð¡™†Wß&ׯ×PšX^Á`”Rˆ ׺ûƒ®âuîÿRÒÛÚ¦}c×¥h|÷H(ºÊ¤gcpÌŽn3Õ³´µpGÄ4+gáä~©›’³kˆ÷ì4þ1à ,‰ +"Jö?u‘úÈãL:ïk²îà·¥ÿ›²4按ùc zm bPFjV0ÿ·kÀ(±ìºS©öª×ž>¡á€Ä°^ùÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÁŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}”g[¹0‰Qˆh7»vϮ޳ë£~aU\¡v¿Lo=ìBɼ“’ÓÞ€²Ý€2Ž·l‹A±¶ %–¡r>Ǿ‰1?«cnMݤZöÐÊ€ŒÑƒ‹ßÁð¯ Dë YAu3ƒ“Ù-• ý Ó‹³v˜'š·"—šj}™ž„¨/]À45ÓdÜ"¥š}vXôP9ñ´iáÜŒ'ƒS¼ÜW¼øƒ×BÒJ0Ë¡7vNvŠxK?ýÂýüHO„ ×ô‡z»ùÕ 7nïÒv&îàúrû|åEŒ }PÍæp÷6‹ÅæþæXOynϽþô0Š. ¤/=2s鶦¹Yû'‡/jƒí#XаÌ@hï„H¡Ô[BÒî`î+;ÇÊÞ“¤Áí­$ ·É%:eµ ‰ö ãhü°œ±Ðœ[¥€Fè>}¯Èèrµ• VdoMhvH‚’Íj¢YšU¤–©¨>ŠÌæ×¦ö–õ ¸”‚Bòz%Ê<^\¿:ä:¹i_Ð-¦ØüJåÍO‡•Xr@:AÚfœH7§;ºS/º¬§W={ü±A¼y…9±‘÷Qˆ†•™/CÎŽ–]*øCÍÊ’¬*.ðL'ÑG-Æ›N âÓ(}` ×ø91ÔÃz{ä|to»ÕGöG)E£‘}ÖB»Œy2sƒ¤bíbœçÏŸßä~/öáÌØh¹¨€*`Ð:ÍÇ?xÔ 8K¢¼¼¿¥§~I頡ܺô¹;éÓaýôƒôç—žX_HfUV{I•Õ­ˆWeu’Ó)¬®ÓÜvر¾“–,‰žÐy郪Fz#Öh§ÂØþâ ÷DÚ…9¬XµMìéf·š²G—ˆÐãJz7ÿÉ0ùï_PKwºZÀ4Ë5Dj«á¸& ´J·Ú©_j2q›zSx½&z>¸»]ž-U•H­¶dì«Z#¨©jàUÕ蔌¯? G[jxЦ"‘sÝ:èji²] rD½Y® Þhxä `/j»Ëµƒ~¿y“yVÕ¥ù9¡od<ãÏogÍfÔŸýW¦€±œ3¸,a‘„$žÊGW0xœso0 ^{ÒEÜ”{¨KX–Å*[7Fƒ*`¯¾ëfYQkcš] ¶•g…v€xqO°Wí5î­ÉÆ·pÁ^ЭP9¬M‰û7—èp„O)˜m­u¡ ÍŒv ƒŒ´Zn`¥rD[ƒNׇ ú•ÂÖLAŽx¶…àŽÅûþÆÃ>ËsxÖø¿^£Ó«AæïŽ mèû]„½”(õù}~¶¥ê34©8~fÊ·ÖE]« YÞŽ^¾‘&ÎøÙ(ôñzºé»Â)n[[•β›¡!~S!׆æ2!duwÆÄ7ªHsœQc®LºWXQ]üÈðÍØ"¡³½‚ŒDDQwMµ<7u,HÐÏÎ'Øaè‹»ÉAJ%R܎ƃä+<—åEAËcQIŠliÂ÷}áÀÛ(Þ¥C¹ZtÚ¸!§#ø€»¢ÐæÓujSa¥Þ'b[Ø%¥Iµ!“-V¬åÙ«ûÒ|¿‚ŸeÛŸ±´«÷ªÌórOœþDÓ¥×·7mž½Åÿçf‘O£eÊv˜òÿPKwºZ<3ÈjÜ<7IAR-STR912/examples/WIU/.svn/text-base/wiu.ewd.svn-baseUT ’LjK’LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[-a»Ñ2N¤O%éx“I!À‡O俣Ã,¥®C(¨C2… ŒÁ¶rÚ¾}:¹8oÄ _äêC‰«Ìšf»kécîP¼HÕá raI]^‘}*Ò.9k±ÏÒAéÌ`•˜bE$¥YpÁÌüùõÄ­ƒJΆÿJ¿—™Ggz}ìÈ„Mì³Ü»Ž˜¾h–nh€¹‹ìËÔvš`ÎU€ìO† ŒÎ3œ1…sÈ¿U° ë˜!“9ó…à:"?©„gVÝ$âÉ,ÜpåÏ?@<ð)àãÊ€áÈ8ºñkÔíj2ÉaˆæÌC$‘/+¨7 Ò!“¶¸+0%åMÁ:fSˆpp¬©LiÅѦ þ,ñfÔÓ¬žqnZR"NGuÄùÊÀϘԤ‚ý0yhÙC x¥^zè9^ÄÑ -%óÁœ¿{Öè•£ q`±R$óÝ¢0_´}Q‘Ç]ÀNƒÎ3•¼š,k‚“z=Ï+yÕ£õ­ÕzÝjU±´;.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò×vÒ:<÷>½ìm½3JncXc¤¶$ ­ñ‹j^v•ð£3ÝPõ`tMJŒ¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Fw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ëµe†½úÍ8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òŸn÷•¾®>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHú’4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿã\~Ùú·½éÿPKwºZ<õ¾ €Êo:IAR-STR912/examples/WIU/.svn/text-base/91x_conf.h.svn-baseUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳdØNC –ꡚªÚ†ê0U‡¥:ô#šÎXØ«§Û—*¦¡Ø¦b[Š}¡Ø—Š}¥Ø×Š}£ØŸû³¶ÓˆëÏŠÎÔª¥Ší›Z"_#IÑäë%%$âºçØa’Ð7ãÇ|ã±ôC‰gCç‹PÕ6T‡þD¶I0´Bõ¼œÁû¡úC™¥B¨–ŠYƒU!Tµ Õajs íß=êaŽØö¶3:ûM³p˦Y>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ7ê€Óº2 y‰|™­~¤çç×þV×ð^ªº7¸ÝìØ<âC8òz;a}õPKwºZ<´ùS‹˜Ñ=8IAR-STR912/examples/WIU/.svn/text-base/91x_it.c.svn-baseUT ’LjK’LjKux êëÕ›]Oã8†ï‘øG³70b[ZökØ«¤­¥|”ĥà ©¡‘BÒuœaÐjÿû;¥4…¹˜†Ë­í÷ø¼O];1MÿãŽìc°ÃéuDÆ ÃÓÓ? ¦~–ò’å,¼,²´‚·¤‡a”å ‚äÁ¦œÃ§Á×›LôRÙÁªÅ²ä°]ÎÁ·°V«òLÈœRõ<ȼeR,rœ`+†SaÉx’W@¢Ë—ÔG>Ak%:—¯q–‡r–þÙš¥Ãç¶ß^ÏàÁºí[³ûdL'.L#7v q8¢s+ra>!öH £0‚ñŒ8V`»Þ5XÄÁ¢¨ ¯ˆC‚1س˜†¾Å0't"cÚ¡j Ê}‹’0€È[‘ªÅI$åÎ̦1v‚0rÜH …m>ÐbëÊJ|·V¬Ö ϬWðå‡ÃƒÃƒþ;¤öºHÕªÝìç0+ìׂÅͤùN¿±¼Ÿ¯WØgíFƒ_õJðº©Ý,jÍ!ŪÛ{OPL}„µØnyiˆ˜¨yñºá} âþRf‹×¾dõñáÁ¿‡ÿý$öñœ|õfÍ­Peê-› O9»c"]îAz…R!µÜ–\†}׸ö–ĶøE"#™· k>"—{àF•aœ·|j U :‡©H'"|‚ûtüŠ’ïüHÛ=žå©x½”ŸÑÇÓSéãù‚§³½_Wýo—{›Îöxô <â'ßí·†Gà¶GÍP:®Ý!µ Ç$à:ö´ïƒ Ž{C-êtÁúÛ'ž/ániÐÃÀQÔAõ¾P×t O­¢AêIukh> ëYÄS¦p¯ ¾qC  }ÒTá‚ÀÚÁ±ŒBjz.±‰x®CMüžaÛà¸\èÛ›×6Q†sõPúXbQG¿ QtÓñÉ—!žœ6XFßè_Ÿ­ ¤ú"L[Û£¾)„ªå ¹|x5註]↚Öú½#c­wNÕg”ê6¨Ûßšö´ØšTH¦E^ïŒNš0¹áy}§Úð^j²ºñ¾Å“\£q¸¿÷·¼¬þ óÔ"×î|L´ûbÒÐWyÀ’1ŸäŸ ‹¾iÿá§…ˆ˜¾ÝÆlqäúæá•r¿u4Ìà;„ä*wÃ"Î!ŠÓè+dJ]‡›Ô ¶ÅŸy–Ц\ár[‚bÄ^ yd"Œá¾È$Ü×±V„ÏÐÖˆòÅg±Ç”Ùk–³'m‡ž¹éÅÕѹF]†;LS‘Ït×ÄM™$²(ML\øfÌB1e;½€©$7™À=Ï¡J{óiÜ Žê~úÔ¢ Á@k\ó¼!Wm:½Ð†ëUc^%š3)¤§R€«ÍÂà“ d<™étž¨•ÅÆÇˆ¾š2΋Á€Ug¤3À0dBÓ¼ †Ú•܆_Ùp*=-ƒavÂ¥{ “1°Šè 1Jœn㘉uµibu¸ëOúó_8ö6Úrû]¨Þ÷Y[VVâpm yVUùhFC¶ÞÍÿy ÚÖaÊ¢Ô:ZWèÁ×Ç4UÑÚkÛFLߨVó dÛ0¹?+ÅN^Ì“c8yi_Èÿg ’U‚VË›í ÂjeÀˆ,kaåªÑ»ÖåM¯„Pô¸nM³ÅTþ­âÊl[Á¬ÅEÑc¨Ëd^V•ï|¡pϲî›&¤îù¢U7K+j{ÙÔÙ÷›:ÛnêL›úqy½Ú#ÞžØØ|˜`Ø´«ôSä÷¦±Lpµ]pç ‹î<0Φ¼¢GÿÀPëÅË1U.k4Ý­VMÔ;¡†ä‚éKù¬eñY½j;¸Ø^Ôj”ebÃÉ\iX™HÞVªÑ'Û8ûüUb×IJH,µº5s9yQ÷טˆ´˜b™ ž ž¿®Ì€ òg@ƒ³ äŒy¬v¨÷ûüÜHm~ßb¡¦š q«^´1®Þò-q,ù{S‡Ú¤dð_PKwºZU :‡©H'"|‚ûtüŠ’ïüHÛ=žå©x½”ŸÑÇÓSéãù‚§³½_Wýo—{›Îöxô <â'ßí·†Gà¶GÍP:®Ý!µ Ç$à:ö´ïƒ Ž{C-êtÁúÛ'ž/ániÐÃÀQÔAõ¾P×t O­¢AêIukh> ëYÄS¦p¯ ¾qC  }ÒTá‚ÀÚÁ±ŒBjz.±‰x®CMüžaÛà¸\èÛ›×6Q†sõPúXbQG¿ QtÓñÉ—!žœ6XFßè_Ÿ­ ¤ú"L[Û£¾)„ªå ¹|x5註]↚Öú½#c­wNÕg”ê6¨Ûßšö´ØšTH¦E^ïŒNš0¹áy}§Úð^j²ºñ¾Å“\£q¸¿÷·¼¬þ óÔ"×î|L´ûbÒÐWyÀ’1ŸäŸ ‹¾iÿá§…ˆ˜¾ÝÆlqäúæá•r¿u4Ìà;„ä*wÃ"Î!ŠÓè+dJ]‡›Ô ¶ÅŸy–Ц\ár[‚bÄ^ yd"Œá¾È$Ü×±V„ÏÐÖˆòÅg±Ç”Ùk–³'m‡ž¹éÅÕѹF]†;LS‘Ït×ÄM™$²(ML\øfÌB1e;½€©$7™À=Ï¡J{óiÜ Žê~úÔ¢ Á@k\ó¼!Wm:½Ð†ëUc^%š3)¤§R€«ÍÂà“ d<™étž¨•ÅÆÇˆ¾š2΋Á€Ug¤3À0dBÓ¼ †Ú•܆_Ùp*=-ƒavÂ¥{ “1°Šè 1Jœn㘉uµibu¸ëOúó_8ö6Úrû]¨Þ÷Y[VVâpm yVUùhFC¶ÞÍÿy ÚÖaÊ¢Ô:ZWèÁ×Ç4UÑÚkÛFLߨVó dÛ0¹?+ÅN^Ì“c8yi_Èÿg ’U‚VË›í ÂjeÀˆ,kaåªÑ»ÖåM¯„Pô¸nM³ÅTþ­âÊl[Á¬ÅEÑc¨Ëd^V•ï|¡pϲî›&¤îù¢U7K+j{ÙÔÙ÷›:ÛnêL›úqy½Ú#ÞžØØ|˜`Ø´«ôSä÷¦±Lpµ]pç ‹î<0Φ¼¢GÿÀPëÅË1U.k4Ý­VMÔ;¡†ä‚éKù¬eñY½j;¸Ø^Ôj”ebÃÉ\iX™HÞVªÑ'Û8ûüUb×IJH,µº5s9yQ÷טˆ´˜b™ ž ž¿®Ì€ òg@ƒ³ äŒy¬v¨÷ûüÜHm~ßb¡¦š q«^´1®Þò-q,ù{S‡Ú¤dð_PKwºZ<õ¾ €Êo"IAR-STR912/examples/WIU/91x_conf.hUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳdØNC –ꡚªÚ†ê0U‡¥:ô#šÎXØ«§Û—*¦¡Ø¦b[Š}¡Ø—Š}¥Ø×Š}£ØŸû³¶ÓˆëÏŠÎÔª¥Ší›Z"_#IÑäë%%$âºçØa’Ð7ãÇ|ã±ôC‰gCç‹PÕ6T‡þD¶I0´Bõ¼œÁû¡úC™¥B¨–ŠYƒU!Tµ Õajs íß=êaŽØö¶3:ûM³p˦Y>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ7ê€Óº2 y‰|™­~¤çç×þV×ð^ªº7¸ÝìØ<âC8òz;a}õPKwºZ<´ùS‹˜Ñ= IAR-STR912/examples/WIU/91x_it.cUT ’LjK’LjKux êëÕ›]Oã8†ï‘øG³70b[ZökØ«¤­¥|”ĥà ©¡‘BÒuœaÐjÿû;¥4…¹˜†Ë­í÷ø¼O];1MÿãŽìc°ÃéuDÆ ÃÓÓ? ¦~–ò’å,¼,²´‚·¤‡a”å ‚äÁ¦œÃ§Á×›LôRÙÁªÅ²ä°]ÎÁ·°V«òLÈœRõ<ȼeR,rœ`+†SaÉx’W@¢Ë—ÔG>Ak%:—¯q–‡r–þÙš¥Ãç¶ß^ÏàÁºí[³ûdL'.L#7v q8¢s+ra>!öH £0‚ñŒ8V`»Þ5XÄÁ¢¨ ¯ˆC‚1س˜†¾Å0't"cÚ¡j Ê}‹’0€È[‘ªÅI$åÎ̦1v‚0rÜH …m>ÐbëÊJ|·V¬Ö ϬWðå‡ÃƒÃƒþ;¤öºHÕªÝìç0+ìׂÅͤùN¿±¼Ÿ¯WØgíFƒ_õJðº©Ý,jÍ!ŪÛ{OPL}„µØnyiˆ˜¨yñºá} âþRf‹×¾dõñáÁ¿‡ÿý$öñœ|õfÍ­Peê-› O9»c"]îAz…R!µÜ–\†}׸ö–ĶøE"#™· k>"—{àF•aœ·|j ~ 5•¸TUÕ9}òŽvGc „4»ÆÈ‹µý˜E‘éû“Åцã{ŽÇÓ`°=[ ;´‘{ŽGûmŠìpêÞ¢~¯­3ƨÈWAY­e~èC¿Çño›‰Pˆ€ñŠòŒ¥™!¤6„³„¼êŽÛ»n×mɽd›Ö œ»%ji¢Q*ƒM,j2!·!žÏ¤Ýí‘|vv`“ÈŒªL¤—ÃNR L¤4ZhI¹-¶-¦ºi”4¼ÍîR³,†Œ&¡Œe É%uücj/¦XêÂ=Ïæ×ï™|6õ´ªnT Oóeñäqq›Î¹§iþèé¹X{*Ë¥§u¾ª<>, O»­)­ì©/̀ع’Æk]¿kŠ*£hƒT AE-¸àq•iemƒi b—òPK wºZ<#IAR-STR912/examples/.svn/prop-base/UT ‘LjKʈKux êëPK xºZ<#IAR-STR912/examples/.svn/text-base/UT ”LjKʈKux êëPKxºZª‹x¹PKwºZ<*µªSp 8IAR-STR912/examples/.svn/text-base/examples.eww.svn-baseUT ‘LjK”LjKux êë½–Ïkƒ0€ï…þ"½¶®‡AY‹SV<¸–þÀK ¤1µÙL"1Îýù‹b‹c=d/¾§~ß#ðÞ,¾Xî|YRÁŸÝéäÁuÇ"¥<{vi)ƳÙãÓxê.æÃÁpj!?Êa¢CÇ…ï«6hB¤ÎóQ²=„Ñfý0€”+"eU(ˆR|ÐÑ„ÔðÚ[‚×GÜç"Ïui-MßÐvQ Wëx¼Nb¨(3 -×Ñ f†Õt•ŠÚ¤š½¿ÙÁ I““ü7ˆ7 „±S† ¯qOŒâ2lðýf@©LÛí–ea@HÂe¯‡ê43졆w顆fÖCI´‡5­þ&‘Âç—ŠæéÒfBr¢œ*=vº´~À#s?Ï×Þ]óŒ°#‘׸WV7Un•Ý;XðÍ*‰ZIHŽU¼ÛäÕàýPÜQêc³©Ô½hS§צNw¹M]3©mú¶iÓ˦NO7›:½-ëšmlSÙln›¾n¥ØVZ zIý³x¿m±.{ÙvÀëÿ/7×7PKxºZ<—{û›‰$IAR-STR912/examples/.svn/all-wcpropsUT ”LjK”LjKux êë­Ž½ Â0F÷M¨Ä tÅ>¤¼_ïëÐUKš¯4[ð¡M}hB—ùø°¼ M—F‰°Ç…m [N3|{œ¨<‡%¾LÂК2>GjþÖtÇn"NÔ@è²vü |H±Ï EüÎÜP»ì_ÿBõ~pÇ=îÌHtXĦ®& dŽ;d2Ä!,„¸ô¦ C´ØkHªiÏ`tqÊÐ¾Ž±%fØ¢rt‡Ö–‹`±©JsêÎóçOå³B2á0nkÖ³B¹jb‹Pùyø…ådÏ^@–ô@V3Œq+N¢ˆq¡ÒæI(ÈäNàŠ[‡:¦¢¾{ˆN_¨KÈ6ÃKk2$T¶XpÁ|Ýù79JÌâ•íÙ¨×ë|vGã wðìÖ½rn/ oÇiÑñ•ÒWm¦=Múœù‰'2·æps~¯½jÚÚh‹!ŒKÿüîTà×µf£Ö¨é¯¯©§×%1Gƒ$ıÆäh4MùiȯúÿW²u#¿Fz»*±Î–e^?j46 ø”£ˆ6E“+u˜[6•]=a±AçŒ>˜ûÔüµ}"º˜&‡Ñ†£ÁÛæÙåoÑ•]êËÚa?:xC7·Hzkxÿëèòo‡0‡B×qv£¤ûÍÙ"š·UG4Žs§„©ö4ûÌqúCë]ÂZand®`6Ÿc* * ªŠ3 #ƒ.Ç´ÚH—â9£Ä3ªµ Ç1 ŠÆ[9@vW¡9€²„™!} tà9âß*î‚ `.‡N2h$L*a/ˆS0߆QÚœ3nC’A¬ôÒ\˜ëYÂʪXžSéG_§rõré”™“×=… Ò܃™T48ôY Žz*9vfØ+˜RÚ”Ò&–ÁñÞA4A˜ À¨YË:$Å~?D„:3d°Ÿg€ÿNÇ0&w‘Ù°›ÇÞÃ4 7½hHCks –Ð$¸v¬é<#bŠM„öh¿Œ’ &pÊ»*Ï.ÝN{|~ewÛÏj¬”ùu˜L+Ï;š¤LÊGŒ|lPƒ°6ºÔ “"S®+M6ðþg6¶4Ñ191¹™â8Y×J&ï¬`†ô½O)W«É/ÉGÄ.üž"ú«ˆð¡™†Wß&ׯÏðš%X^Á`òˆ5—º›„®âu~0þ½ ·µMûÊ®KÐ øî‘Pt•IÏ0†à˜ ìÝkªf;h-êÁmÓ¬œm„“û£jJή Þ³ÓøÇ €ƒb°4&‚,ˆ(ØÕEê"3é¼k¬Éºƒß–þoÊÒ˜3& äË ôÚD¯ˆÔ,`þ'nV€Q`Ùu1ڪ^{ú„b€ÃZx÷cEÛ4ÿo"•Jj¿¬Þtˆ¡@ ‰Dm'uì v4ØIèj³íeTP‚¥o/±gpw“†wvcß ’$1cvߨÜÁ43ÃÉè0Æ]š #äN¾7ºÓûëO š(YýQ3[ ŠŠžè½Ã¶¥ “…¨€v³«a÷ìÊé=»:êVÅ9j÷ËôÖÃ&”Š<ž„¨/]Àô|¦É¸EJ5ùæ°è® râaÓ¹ŽzÇx¹Ÿxû/…¤•`–ColÜldñæ~ú…ôüJO„s×éuûz»þÓ ×nçÂvFnïêrótåEŒ }PÍêr3™Åb•¾ºÖSžÛq¯>ÿŒ¢ é{‡LÜ^º­inÖ~ãð]m°}Kí)”zUHÚ½#Ì})`§XÙ¹Wc‰öN’D[%:fÿ´ù‰öãhx7Ÿ°ÐœW¥€èGún‘ÑÕj*¬*0ÈC¼¡Ù! öBʈfYV’¦J º(2{¼65·,¨Å¥D’ÔkQæñºàùU!×Ñ=û²€n0Åæ*oz<(Å’ÒÎf÷À‰,…ù­zÏe9¾ìØÃ5âMKl̑չ ¤Šš+¬üœ¹<>hØX8FÂŽA®Jpäþc%@…Ç-ËÀÉÎÏÇéÑN¶‹½Ä1qãÓΗ‚VÉqæÌ@î¼´V™£ v"Ä+•x¾¶ï™ŽB@4¬Ì| èsp4oSÁï:hRtƪ”árÏôÚý¨‡ñÆc‚ø8J Œá?%†z`ToœîM»üÀ~/£h4°ÏZ¨Â`ƒc7ƒ1Ïe®T¨}çéӧ׹ߋ}¸36ZÎK h­úý=jœ%Qž_Æ÷_ÒS¿¦´ÓÐ{n]ZîVútADXmûôAúL¬/$“2«›{eÖ{I™Õ-HAëZõuíë:iÈ’è}—T 0Ðk±®@.Àô®pK¤M˜ÝŠUÛÄ–n6«)*:G„î/(ÉÝüWÃä¿PKwºZ<÷o18Ê!IAR-STR912/examples/MC/Readme.txtUT ‘LjK‘LjKux êëµVKoÛ8¾ð˜K€¤pdËNÚ$ÀIޏÑÃ+É1r*T™Ž¹ÕÃ¥¤$Þ_¿3¤·Ûìa.Ãô<¿ù†füá§öØÑâ1fw^ ÓÉä#$i rYó‚ç­¬+‘7ðžëpðæ¢àf%‡·u1ÏÖ%7Ú×–L¬®ÝÖ¾_7ØX»]!ò¬u)ÏJ2v²–cPÙ´Àš¦ãk2ž\ŽÍ«±‚v\6äaåÀ›\Š òý{a½vË1!¸¯Y¹+¸n¿xO4m-÷7´GÀÓ)þôàéAwñs1f¯û·BÿÄ©çÂ"v7L!‰æéÊŠ]XyÌö€%0b¸[2Ç m¢Ð‹ X)úDÌaáØË$7N(ÜŠ¥ž$¥`!ºVÊ¢b÷Ί•²˜Ü¥&hQ츱J…ºÒëÁ…”®¡Î&ÄÉÒOGt,™G®ïÚi…ÌN ñ,߇0JáÖÏõð™uë»*¤>‚Ãb´Q,ê˜a†‰ûÇ+g–ŽXwn¢+Àl ²B,ÀöuÙ1K¨„y„•b”¸‹æ,‘´7­Ðë’`™¸XŽ ·G¶Èƒ”š,íÈ…µXè:XPì"ILÉBEjòG&ý‰ÃA_`}¼MÃÁo?¯á ÝŠxoÞlë O[C^WñÔI~¸ƒ;Ž‘¶\f©Ÿx…[¼ñéVrŽÖ äU›Éýp°XЈ§*+šY‹ªá²… mD…£asZÃç9+:Yµ&»®ÑéÒ,ß’WËå&Ë9î`8Øfrý’!  ^Ó(HÑpaû÷°‘ü[Ç«|XKÃ[Š4½„Àûkt ÙU•¨ž kÁ4O3¸?èoW4|9õý Ð¨í Ö]»‡|Ÿ¼ʽ¯_òf‡V<óbOÙ.''#Ly¢<Í©qyÒã;ÖI4ë4yæÅ”4§Ž4¯ è‹AÖ^²g¾©e yVÁ š]‘í‰ š¼Þq²¦?GH„€s‹ZÕ"óÍ{-®Í×ÏÔLc à‹/vß\=Á7ø e&*#×s8À=ìdý$i¶SÑj£žÈn×Âk-pÐïÐ^= |wè ¼{àæ®ø¡äï9,D5½†ÓÅGc2öç¥wfôš™©5¦ÒøgF/7{)ɼ7ùt¢å3%?Ú_Í´ü‚ä«£ýÕ…–_*¹²Weé«@§Rü³žá€á %×\’I™}Õ'·' ^jùuûºƒ²Ãq]+í¦.Šú…Ná ÅÇÜ]«¿w%Þ¯r]‚­ oj.|ÚšºHÚêz•t¦KÁ9‰í5ua>üÙÇÃî*Tu#T«§ç³Ó$¯ÍéyrÌŠá¶ÆÞ–¸ÓÆý4м3aþËÿnèÐÈœ3ßÕo×ßPKwºZ<Ô¾õ1Ø<IAR-STR912/examples/MC/mc.ewdUT ‘LjK‘LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPK yºZ<IAR-STR912/examples/MC/.svn/UT •LjKʈKux êëPKwºZ'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKwºZ<÷o18Ê9IAR-STR912/examples/MC/.svn/text-base/Readme.txt.svn-baseUT ‘LjK‘LjKux êëµVKoÛ8¾ð˜K€¤pdËNÚ$ÀIޏÑÃ+É1r*T™Ž¹ÕÃ¥¤$Þ_¿3¤·Ûìa.Ãô<¿ù†füá§öØÑâ1fw^ ÓÉä#$i rYó‚ç­¬+‘7ðžëpðæ¢àf%‡·u1ÏÖ%7Ú×–L¬®ÝÖ¾_7ØX»]!ò¬u)ÏJ2v²–cPÙ´Àš¦ãk2ž\ŽÍ«±‚v\6äaåÀ›\Š òý{a½vË1!¸¯Y¹+¸n¿xO4m-÷7´GÀÓ)þôàéAwñs1f¯û·BÿÄ©çÂ"v7L!‰æéÊŠ]XyÌö€%0b¸[2Ç m¢Ð‹ X)úDÌaáØË$7N(ÜŠ¥ž$¥`!ºVÊ¢b÷Ί•²˜Ü¥&hQ츱J…ºÒëÁ…”®¡Î&ÄÉÒOGt,™G®ïÚi…ÌN ñ,߇0JáÖÏõð™uë»*¤>‚Ãb´Q,ê˜a†‰ûÇ+g–ŽXwn¢+Àl ²B,ÀöuÙ1K¨„y„•b”¸‹æ,‘´7­Ðë’`™¸XŽ ·G¶Èƒ”š,íÈ…µXè:XPì"ILÉBEjòG&ý‰ÃA_`}¼MÃÁo?¯á ÝŠxoÞlë O[C^WñÔI~¸ƒ;Ž‘¶\f©Ÿx…[¼ñéVrŽÖ äU›Éýp°XЈ§*+šY‹ªá²… mD…£asZÃç9+:Yµ&»®ÑéÒ,ß’WËå&Ë9î`8Øfrý’!  ^Ó(HÑpaû÷°‘ü[Ç«|XKÃ[Š4½„Àûkt ÙU•¨ž kÁ4O3¸?èoW4|9õý Ð¨í Ö]»‡|Ÿ¼ʽ¯_òf‡V<óbOÙ.''#Ly¢<Í©qyÒã;ÖI4ë4yæÅ”4§Ž4¯ è‹AÖ^²g¾©e yVÁ š]‘í‰ š¼Þq²¦?GH„€s‹ZÕ"óÍ{-®Í×ÏÔLc à‹/vß\=Á7ø e&*#×s8À=ìdý$i¶SÑj£žÈn×Âk-pÐïÐ^= |wè ¼{àæ®ø¡äï9,D5½†ÓÅGc2öç¥wfôš™©5¦ÒøgF/7{)ɼ7ùt¢å3%?Ú_Í´ü‚ä«£ýÕ…–_*¹²Weé«@§Rü³žá€á %×\’I™}Õ'·' ^jùuûºƒ²Ãq]+í¦.Šú…Ná ÅÇÜ]«¿w%Þ¯r]‚­ oj.|ÚšºHÚêz•t¦KÁ9‰í5ua>üÙÇÃî*Tu#T«§ç³Ó$¯ÍéyrÌŠá¶ÆÞ–¸ÓÆý4м3aþËÿnèÐÈœ3ßÕo×ßPKwºZ< 2m XtL5IAR-STR912/examples/MC/.svn/text-base/mc.ewp.svn-baseUT ‘LjK‘LjKux êëí\mÓ8þ|Hü‡øôe9t NÙlí¶j» '­T¹‰›R;ç8¥{¿þÆNÒ·mÓ²ŽƒtºRVIüòxÆöxæ±ÓÖŸËyh-0 £ïž4k'¦ó Þ=!1{ùæÍë·/›Oþ|ÿøÑãG­ˆ³oØpcY­) ñMZô}³Uß¼Ué£S$‰ü<¤hŽß_àI´êê:{. ½"yÆ<«=èng¬ïælù²6Ù‚ô"{c!@Šx§¾˜bŽÂ­:! qoF«ö¿jÕwž¬rúH ÕÜ/r œµê‹ÌüQqÅh‡y(”mܺßÈ·W•Â"±]g.J{‰ûHÌvDI…Hdj¾…l­zú`£Öú½jõ&ßN‚lš@‹Sd>M¨Ä tÅ>¤¼_ïëÐUKš¯4[ð¡M}hB—ùø°¼ M—F‰°Ç…m [N3|{œ¨<‡%¾LÂК2>GjþÖtÇn"NÔ@è²vü |H±Ï EüÎÜP»ì_ÿBõ~pÇ=îÌHtXĦ®& dŽ;d2Ä!,„¸ô¦ C´ØkHªiÏ`tqÊÐ¾Ž±%fØ¢rt‡Ö–‹`±©JsêÎóçOå³B2á0nkÖ³B¹jb‹Pùyø…ådÏ^@–ô@V3Œq+N¢ˆq¡ÒæI(ÈäNàŠ[‡:¦¢¾{ˆN_¨KÈ6ÃKk2$T¶XpÁ|Ýù79JÌâ•íÙ¨×ë|vGã wðìÖ½rn/ oÇiÑñ•ÒWm¦=Múœù‰'2·æps~¯½jÚÚh‹!ŒKÿüîTà×µf£Ö¨é¯¯©§×%1Gƒ$ıÆäh4MùiȯúÿW²u#¿Fz»*±Î–e^?j46 ø”£ˆ6E“+u˜[6•]=a±AçŒ>˜ûÔüµ}"º˜&‡Ñ†£ÁÛæÙåoÑ•]êËÚa?:xC7·Hzkxÿëèòo‡0‡B×qv£¤ûÍÙ"š·UG4Žs§„©ö4ûÌqúCë]ÂZand®`6Ÿc* * ªŠ3 #ƒ.Ç´ÚH—â9£Ä3ªµ Ç1 ŠÆ[9@vW¡9€²„™!} tà9âß*î‚ `.‡N2h$L*a/ˆS0߆QÚœ3nC’A¬ôÒ\˜ëYÂʪXžSéG_§rõré”™“×=… Ò܃™T48ôY Žz*9vfØ+˜RÚ”Ò&–ÁñÞA4A˜ À¨YË:$Å~?D„:3d°Ÿg€ÿNÇ0&w‘Ù°›ÇÞÃ4 7½hHCks –Ð$¸v¬é<#bŠM„öh¿Œ’ &pÊ»*Ï.ÝN{|~ewÛÏj¬”ùu˜L+Ï;š¤LÊGŒ|lPƒ°6ºÔ “"S®+M6ðþg6¶4Ñ191¹™â8Y×J&ï¬`†ô½O)W«É/ÉGÄ.üž"ú«ˆð¡™†Wß&ׯÏðš%X^Á`òˆ5—º›„®âu~0þ½ ·µMûÊ®KÐ øî‘Pt•IÏ0†à˜ ìÝkªf;h-êÁmÓ¬œm„“û£jJή Þ³ÓøÇ €ƒb°4&‚,ˆ(ØÕEê"3é¼k¬Éºƒß–þoÊÒ˜3& äË ôÚD¯ˆÔ,`þ'nV€Q`Ùu1ڪ^{ú„b€ÃZx÷cEÛ4ÿo"•Jj¿¬Þtˆ¡@ ‰Dm'uì v4ØIèj³íeTP‚¥o/±gpw“†wvcß ’$1cvߨÜÁ43ÃÉè0Æ]š #äN¾7ºÓûëO š(YýQ3[ ŠŠžè½Ã¶¥ “…¨€v³«a÷ìÊé=»:êVÅ9j÷ËôÖÃ&”Š<ž„¨/]Àô|¦É¸EJ5ùæ°è® râaÓ¹ŽzÇx¹Ÿxû/…¤•`–ColÜldñæ~ú…ôüJO„s×éuûz»þÓ ×nçÂvFnïêrótåEŒ }PÍêr3™Åb•¾ºÖSžÛq¯>ÿŒ¢ é{‡LÜ^º­inÖ~ãð]m°}Kí)”zUHÚ½#Ì})`§XÙ¹Wc‰öN’D[%:fÿ´ù‰öãhx7Ÿ°ÐœW¥€èGún‘ÑÕj*¬*0ÈC¼¡Ù! öBʈfYV’¦J º(2{¼65·,¨Å¥D’ÔkQæñºàùU!×Ñ=û²€n0Åæ*oz<(Å’ÒÎf÷À‰,…ù­zÏe9¾ìØÃ5âMKl̑չ ¤Šš+¬üœ¹<>hØX8FÂŽA®Jpäþc%@…Ç-ËÀÉÎÏÇéÑN¶‹½Ä1qãÓΗ‚VÉqæÌ@î¼´V™£ v"Ä+•x¾¶ï™ŽB@4¬Ì| èsp4oSÁï:hRtƪ”árÏôÚý¨‡ñÆc‚ø8J Œá?%†z`ToœîM»üÀ~/£h4°ÏZ¨Â`ƒc7ƒ1Ïe®T¨}çéӧ׹ߋ}¸36ZÎK h­úý=jœ%Qž_Æ÷_ÒS¿¦´ÓÐ{n]ZîVútADXmûôAúL¬/$“2«›{eÖ{I™Õ-HAëZõuíë:iÈ’è}—T 0Ðk±®@.Àô®pK¤M˜ÝŠUÛÄ–n6«)*:G„î/(ÉÝüWÃä¿PKwºZ<`?(ðÈu9IAR-STR912/examples/MC/.svn/text-base/91x_conf.h.svn-baseUT ‘LjK‘LjKux êëµWKoÛ8¾È —6h£G^mn´D[Äêá©9ŠM7ÚÚRV–·Mý¥ØUKU–öA3óÍ7‘cÚ89°à­óœhz³‰'À6ÍKà"Èæe!Wr^•EžÍ7pÈõøèÆÙJB˜®%ì×5|²¾ÍæE¾<}P²­ŠÚëÇòø¸Êæi•9™®ØM+‰¤å¦¶ÙlåBÍ ÃúhÔ©]Ã,7ÊÃ:5k¹™—ÙcM²g÷³û2-Ÿ@%‘}Þ–uŒS„ÿæ¥ð²MU”O×êµm•èÕ‹DííüuÖ³­«À?±ð(LcÊi(€GcqKb ·s<`ÆQ “„¹$t(D¡„ˆ@Ÿè†¹,œ€“p4æpË„§8¨6°Ý"XBL'$®µÅÊÝMÁQìÒ¸…¶DœÜP, §@x½m€'¾x¯¶#sâˆúÔq2‡÷ˆïC Qð¨ï‚ÏÈȧ5% ïÀe1¢ßc¬æI1¢É‰BNÿN°rF|pI@&´)BE›"P墿);f\•0Ž£ n2t¯ùÆÀlÚ¾‡$t¦$H8…€¸Fw­n¡Gá7«ia( ©‹Å›„_Ô…˜”jgäËNþþm©Ï›l™/äf3u”1‰ñ ßòTe¹Ô´ÇGn©¾åÈr¸ß.—²Äƒ».þÙâI^Èy±^˼‚êA²X­Š¯YþVŠ­‰i;öѳÿ3³Óò¬ñ÷½¡*àq»Ó6‡c—8²ÒlB+â´.%“†³kñFd::8ëvÝùA8kÐTæÕø†9C£"T—M]ÑÌ ÈÐ`Õå™óæ¹\™]«Ë`wκ ç]†‹.Ãe—áê'¯žlhSªË³Qš1j­ƒZû ö¬7ÅñðÇuŠÝT·,J…Ð^*ÙC©ªË¦®°t…­+ú›4™²¨3£5ÃPMM¶4ÙÖä3M>×ä M¾Ôä+Mþ¨ÉŸz+Åà™Ð^*îôo‡={‰‚ž”^ý %$}o±U›‚¾R˜¯4Ö+Ýß>Ú]„격+ú'²C¡ÁÚÿæÞíîdðp'½TÌœBuÙÔVï0ÒîÝ£sÄ6wãäCÏÂ-›fùÌ)Ÿ6Uº‚e)ÿÝÊ|þÿ¥«­„·yßßµñÍ­fj;·A›Ó¾0M5‚d¾È–?Ëç××þnWó^­Ú÷¸Ý5ìP?á" ]uÉ3Ÿ>÷úPKwºZ< nþn-=7IAR-STR912/examples/MC/.svn/text-base/91x_it.c.svn-baseUT ‘LjK‘LjKux êëÕ›]oâ8†ï+ñŽfofFU)Ì~r—&¦XÊML™^Uip‡H4a§jµÿ}J í^”tÆrIJýŸ÷Á'ô?¿rÁG÷¸Ñô*¦çÃÓÓß!aAž‰’¯x&EYäY¯I{GŸaœ¯8„é‡í5‚¿߯sy’©N-—¥€Ýkë³^¯ò,•yYãé쥒cHQI UUó…|ú[ðg_'6‚K.*¥œœj¯2‘¯uçèi^-$¢^KH¸¸Ï3qY˼àÕ ßùR©àÅ–y·ŠH–pá®Ð‚,a¡ÓĆtµ¹äÀ¿g\g]AU߈Mf›0r™J¸K¡Ì²ZÀC.—hc HŸ¡lFÏ—¼œ.ß^â(^TÇz¦ª¼•©àç¾i‘-!­ey‡Q2ÌçñiÖRÏJ!xµ.‹E^|ƒMffØ®[6Þg»ÇERŠMU™.Ð2¦«M]ü[^áГ-"·åjU>섯@%¨Øð»µ|Ak¥x©÷¸J‡CµJÿh­ÒáS߯/Wð`Ó÷«ûdÌ&¦1IHÈ ‰ÆlîÄæêN€&0Žb8ŸQÏ ]Qè_Cƒ†šè’z4<w–°( qsÊ&*¦é¢xNàœ“Æ„šmŠU.*€ë7¶cš( ã8 48ŒÀP®ã!™!´-C'ôú%˜%Ç#pvµC MŒ}X Â94$Š B¶…˜”©“l“|ÿÝïý’ÙªÆïÚ‡M_~èõŽúï<“Þ7ê"ÓU»Ù;F0+ükÁâzÒ|§_)ï£M…}Òn5øU¯¤¨›ÖmyÐ5‡ëZîî=aYpýÖr·ç¹#æ²ÅËŽ÷½÷}™/^úþ¨š?õŽþéýû“Ø'súêMÍ­Peê› O¿å2[@zR©´Þ”BZ†}߸öŽÂvøE*S+™· >¦àF•eœw| <÷ίñF÷í ÕÍ9Šwîâÿ»æ•´yÛµ‘íòpê¸iZ ½åÙDƒøëáØµÜNòûÎÍÀgÝà3{á3ÃðñÁøôpöJm'ú=ßfÈ:‘XK~`œü°ù¡µä‡ÆÉéDþ‹µä¿˜%?KÎ&ÓÃÑk¹ì÷›ïwƒïÛ ß7 ?qg¨Ü™àÛ® `'!a‡s÷”ÜNò{Æ  ÷§ùÀ±“{۵쮎Åvbo»6€=p§¸vBoy6qdãu€Žb;©·]›¸tbÖá´FËíD¿ïÜü6Zn/|ÃG6*…g6Zn/|ç6tèv¨:Jm'ú=ßfÈw(9Jm-yÃ'I¦Ö¼RÛI~Ï·òÖ¼R[KÞðš÷/½ÃÁ£ØNîm×;Øø˜uxœB±àÛ®MüÀ‰v8F±ØÛ®Mœ e´Ëcl£·þ ï¦øwØb½Åü o³:‡³Þbþ†gu~†Ðè-æoþ§ó¯–ÛIß¹‰ÿ‰Œ/Î:Ülj¹ð÷·á¿Žÿ-_&¡§þ†7¦>ÙLûPKwºZ<5§aÈÐý5IAR-STR912/examples/MC/.svn/text-base/main.c.svn-baseUT ‘LjK‘LjKux êëµXÛnÛ8}´háYßÚ´» ú Hr,¬%yu±‘'A‘阨,º¤M·ûï;CJ¾ÅqÒu–y93‡3‡3:­Óê ¨öðÆ1®ûtÛíOàz&²”Å,*²4áQ»LN¡ÇcV8g°0yÒŒH¬”Å,Í`}\€©j ,1‚§ x,œ“² ³¼#ÏK6!åöy«ó{K¸u#–ådÑi¶…Ë£Œ/ÈÝ›ñ¦äV”&z’C1c§Óâ[˜1àóEÌæ EÂnŠî¡œàvS]™Æü6 ³¸gŸVÞ7Ñò•ùÒçy‘fôt»DÁç ºµìãcz:•ì)êþ½¾CGwuË×îycÅÑaÜ7Ô>.ôl®}CS,UÛÜ€b˜.(ÚØ#C3¬kP}׳MÝq nlx}ÌK!0,47ϰ-pôkÅ«¸¡á¹æ«ž‹J`;šîˆ­Pf‚gƒ«Œtð SoŠlÄ ÀõÞ%¹¡:¶>ÐUϱ-CuÁí+ƒX¶W:ôõC¹èR±n@3Ô>#,Ã’ÜÝ´\ý/#7”hŠ©\뮌w’úBê@†í.…Ðsl“|%@ñˆ;»®¤-9T,­%CßÕÁT4®nVl‘ %YÒ·_«–®a@ŽŽ$bÍB§H,œÜdòõ3ºu|ô–'Q\N¼ù£ó=ÀBjÎÞµÐ[)Éá·ƒ턈ÌßÓ]R<,Ø„MÞBD4ž°ƒ<ÝBœ‡xÓúâ}˜ñð6>„PBÄ›/0^xH¢†$VS·Èʨ(3v‰*×CÃÞPZ.¬«­ù6-“H\»‹,-R:Ÿ_ör+ÚñÀh óu‡èŽu¸²CÊθ£saOD‘r—É^h$‹²XošVšˆ&e—źd%pÒ<¼î@ªxRˆ8'ÇGsoù”ªLÓ¯|¼~hó »-ï'xöoY2áSÒpU?0ÕÁŸnZfSÓdÊïõb`»êÉ%·NýœN!”­ÁÃ2. ŠÓè+vc²>mA 9Dkßó<ÍÖ0i5Àå‚bº(Ž ClÛ‹ËÂnËœà¾N¤|ŽÈy¹…=_{±„ ¤ˆP•á•Dòj;0‚3Ð-ê´üC *‡O¿„Âf­B©Sfòå"‘DÅiŒj®!LÉvbS, 1;@ý´áçjÒŸËïîºàN– ´ðq]z{w¤«¡Þ’¾ƒa™Ï†eïµÒxÆd鬼•©¿×Ì"G Zâã±2\[BÔœa/„,Kðjù"¦rS\ü°iÕ¨Îéýcœ:d&MG!cþ£>7lâ…ZÛò”)ñÖϘ^³ŒVñI›•I“;Àì‡ÙDÅKÙQ+‹ÆûmÓµ+¨&nôâ‚ÜIõh?Õ£ç¹>Ó£ýL¿€’5BƇ2ÞOÈXòùyBƇ2>X5žÅêuÉTËWo–ºa©óIcëe"Ë»z©ñé”eX÷UgÉW¤ªEã¥"Ûi¾ðmÆcÖèÐôáÔ®Çø¯ü§J·4úYÜ3zõjýPKwºZÁôÙûPK wºZ<"IAR-STR912/examples/MC/.svn/props/UT ‘LjKʈKux êëPK wºZ< IAR-STR912/examples/MC/.svn/tmp/UT ‘LjKʈKux êëPK wºZ<*IAR-STR912/examples/MC/.svn/tmp/prop-base/UT ‘LjKʈKux êëPK wºZ<*IAR-STR912/examples/MC/.svn/tmp/text-base/UT ‘LjKʈKux êëPK wºZ<&IAR-STR912/examples/MC/.svn/tmp/props/UT ‘LjKʈKux êëPKwºZ<©²]zœIAR-STR912/examples/MC/mc.ewwUT ‘LjK‘LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&7Y/µ¼ÀF, V®¬Þ&)±$9é43'E(`£l6PKwºZ<5§aÈÐýIAR-STR912/examples/MC/main.cUT ‘LjK‘LjKux êëµXÛnÛ8}´háYßÚ´» ú Hr,¬%yu±‘'A‘阨,º¤M·ûï;CJ¾ÅqÒu–y93‡3‡3:­Óê ¨öðÆ1®ûtÛíOàz&²”Å,*²4áQ»LN¡ÇcV8g°0yÒŒH¬”Å,Í`}\€©j ,1‚§ x,œ“² ³¼#ÏK6!åöy«ó{K¸u#–ådÑi¶…Ë£Œ/ÈÝ›ñ¦äV”&z’C1c§Óâ[˜1àóEÌæ EÂnŠî¡œàvS]™Æü6 ³¸gŸVÞ7Ñò•ùÒçy‘fôt»DÁç ºµìãcz:•ì)êþ½¾CGwuË×îycÅÑaÜ7Ô>.ôl®}CS,UÛÜ€b˜.(ÚØ#C3¬kP}׳MÝq nlx}ÌK!0,47ϰ-pôkÅ«¸¡á¹æ«ž‹J`;šîˆ­Pf‚gƒ«Œtð SoŠlÄ ÀõÞ%¹¡:¶>ÐUϱ-CuÁí+ƒX¶W:ôõC¹èR±n@3Ô>#,Ã’ÜÝ´\ý/#7”hŠ©\뮌w’úBê@†í.…Ðsl“|%@ñˆ;»®¤-9T,­%CßÕÁT4®nVl‘ %YÒ·_«–®a@ŽŽ$bÍB§H,œÜdòõ3ºu|ô–'Q\N¼ù£ó=ÀBjÎÞµÐ[)Éá·ƒ턈ÌßÓ]R<,Ø„MÞBD4ž°ƒ<ÝBœ‡xÓúâ}˜ñð6>„PBÄ›/0^xH¢†$VS·Èʨ(3v‰*×CÃÞPZ.¬«­ù6-“H\»‹,-R:Ÿ_ör+ÚñÀh óu‡èŽu¸²CÊθ£saOD‘r—É^h$‹²XošVšˆ&e—źd%pÒ<¼î@ªxRˆ8'ÇGsoù”ªLÓ¯|¼~hó »-ï'xöoY2áSÒpU?0ÕÁŸnZfSÓdÊïõb`»êÉ%·NýœN!”­ÁÃ2. ŠÓè+vc²>mA 9Dkßó<ÍÖ0i5Àå‚bº(Ž ClÛ‹ËÂnËœà¾N¤|ŽÈy¹…=_{±„ ¤ˆP•á•Dòj;0‚3Ð-ê´üC *‡O¿„Âf­B©Sfòå"‘DÅiŒj®!LÉvbS, 1;@ý´áçjÒŸËïîºàN– ´ðq]z{w¤«¡Þ’¾ƒa™Ï†eïµÒxÆd鬼•©¿×Ì"G Zâã±2\[BÔœa/„,Kðjù"¦rS\ü°iÕ¨Îéýcœ:d&MG!cþ£>7lâ…ZÛò”)ñÖϘ^³ŒVñI›•I“;Àì‡ÙDÅKÙQ+‹ÆûmÓµ+¨&nôâ‚ÜIõh?Õ£ç¹>Ó£ýL¿€’5BƇ2ÞOÈXòùyBƇ2>X5žÅêuÉTËWo–ºa©óIcëe"Ë»z©ñé”eX÷UgÉW¤ªEã¥"Ûi¾ðmÆcÖèÐôáÔ®Çø¯ü§J·4úYÜ3zõjýPKwºZ<`?(ðÈu!IAR-STR912/examples/MC/91x_conf.hUT ‘LjK‘LjKux êëµWKoÛ8¾È —6h£G^mn´D[Äêá©9ŠM7ÚÚRV–·Mý¥ØUKU–öA3óÍ7‘cÚ89°à­óœhz³‰'À6ÍKà"Èæe!Wr^•EžÍ7pÈõøèÆÙJB˜®%ì×5|²¾ÍæE¾<}P²­ŠÚëÇòø¸Êæi•9™®ØM+‰¤å¦¶ÙlåBÍ ÃúhÔ©]Ã,7ÊÃ:5k¹™—ÙcM²g÷³û2-Ÿ@%‘}Þ–uŒS„ÿæ¥ð²MU”O×êµm•èÕ‹DííüuÖ³­«À?±ð(LcÊi(€GcqKb ·s<`ÆQ “„¹$t(D¡„ˆ@Ÿè†¹,œ€“p4æpË„§8¨6°Ý"XBL'$®µÅÊÝMÁQìÒ¸…¶DœÜP, §@x½m€'¾x¯¶#sâˆúÔq2‡÷ˆïC Qð¨ï‚ÏÈȧ5% ïÀe1¢ßc¬æI1¢É‰BNÿN°rF|pI@&´)BE›"P墿);f\•0Ž£ n2t¯ùÆÀlÚ¾‡$t¦$H8…€¸Fw­n¡Gá7«ia( ©‹Å›„_Ô…˜”jgäËNþþm©Ï›l™/äf3u”1‰ñ ßòTe¹Ô´ÇGn©¾åÈr¸ß.—²Äƒ».þÙâI^Èy±^˼‚êA²X­Š¯YþVŠ­‰i;öѳÿ3³Óò¬ñ÷½¡*àq»Ó6‡c—8²ÒlB+â´.%“†³kñFd::8ëvÝùA8kÐTæÕø†9C£"T—M]ÑÌ ÈÐ`Õå™óæ¹\™]«Ë`wκ ç]†‹.Ãe—áê'¯žlhSªË³Qš1j­ƒZû ö¬7ÅñðÇuŠÝT·,J…Ð^*ÙC©ªË¦®°t…­+ú›4™²¨3£5ÃPMM¶4ÙÖä3M>×ä M¾Ôä+Mþ¨ÉŸz+Åà™Ð^*îôo‡={‰‚ž”^ý %$}o±U›‚¾R˜¯4Ö+Ýß>Ú]„격+ú'²C¡ÁÚÿæÞíîdðp'½TÌœBuÙÔVï0ÒîÝ£sÄ6wãäCÏÂ-›fùÌ)Ÿ6Uº‚e)ÿÝÊ|þÿ¥«­„·yßßµñÍ­fj;·A›Ó¾0M5‚d¾È–?Ëç××þnWó^­Ú÷¸Ý5ìP?á" ]uÉ3Ÿ>÷úPKwºZ< nþn-=IAR-STR912/examples/MC/91x_it.cUT ‘LjK‘LjKux êëÕ›]oâ8†ï+ñŽfofFU)Ì~r—&¦XÊML™^Uip‡H4a§jµÿ}J í^”tÆrIJýŸ÷Á'ô?¿rÁG÷¸Ñô*¦çÃÓÓß!aAž‰’¯x&EYäY¯I{GŸaœ¯8„é‡í5‚¿߯sy’©N-—¥€Ýkë³^¯ò,•yYãé쥒cHQI UUó…|ú[ðg_'6‚K.*¥œœj¯2‘¯uçèi^-$¢^KH¸¸Ï3qY˼àÕ ßùR©àÅ–y·ŠH–pá®Ð‚,a¡ÓĆtµ¹äÀ¿g\g]AU߈Mf›0r™J¸K¡Ì²ZÀC.—hc HŸ¡lFÏ—¼œ.ß^â(^TÇz¦ª¼•©àç¾i‘-!­ey‡Q2ÌçñiÖRÏJ!xµ.‹E^|ƒMffØ®[6Þg»ÇERŠMU™.Ð2¦«M]ü[^áГ-"·åjU>섯@%¨Øð»µ|Ak¥x©÷¸J‡CµJÿh­ÒáS߯/Wð`Ó÷«ûdÌ&¦1IHÈ ‰ÆlîÄæêN€&0Žb8ŸQÏ ]Qè_Cƒ†šè’z4<w–°( qsÊ&*¦é¢xNàœ“Æ„šmŠU.*€ë7¶cš( ã8 48ŒÀP®ã!™!´-C'ôú%˜%Ç#pvµC MŒ}X Â94$Š B¶…˜”©“l“|ÿÝïý’ÙªÆïÚ‡M_~èõŽúï<“Þ7ê"ÓU»Ù;F0+ükÁâzÒ|§_)ï£M…}Òn5øU¯¤¨›ÖmyÐ5‡ëZîî=aYpýÖr·ç¹#æ²ÅËŽ÷½÷}™/^úþ¨š?õŽþéýû“Ø'súêMÍ­Peê› O¿å2[@zR©´Þ”BZ†}߸öŽÂvøE*S+™· >¦àF•eœw| <÷ίñF÷í ÕÍ9Šwîâÿ»æ•´yÛµ‘íòpê¸iZ ½åÙDƒøëáØµÜNòûÎÍÀgÝà3{á3ÃðñÁøôpöJm'ú=ßfÈ:‘XK~`œü°ù¡µä‡ÆÉéDþ‹µä¿˜%?KÎ&ÓÃÑk¹ì÷›ïwƒïÛ ß7 ?qg¨Ü™àÛ® `'!a‡s÷”ÜNò{Æ  ÷§ùÀ±“{۵쮎Åvbo»6€=p§¸vBoy6qdãu€Žb;©·]›¸tbÖá´FËíD¿ïÜü6Zn/|ÃG6*…g6Zn/|ç6tèv¨:Jm'ú=ßfÈw(9Jm-yÃ'I¦Ö¼RÛI~Ï·òÖ¼R[KÞðš÷/½ÃÁ£ØNîm×;Øø˜uxœB±àÛ®MüÀ‰v8F±ØÛ®Mœ e´Ëcl£·þ ï¦øwØb½Åü o³:‡³Þbþ†gu~†Ðè-æoþ§ó¯–ÛIß¹‰ÿ‰Œ/Î:Ülj¹ð÷·á¿Žÿ-_&¡§þ†7¦>ÙLûPK xºZ<IAR-STR912/examples/SSP/UT “LjKʈKux êëPKxºZ<÷wò½I"LIAR-STR912/examples/SSP/ssp.ewpUT “LjK“LjKux êëí\moÛ6þ¼ûBÛomýÒnX xÅiµÚ±a;Ù0h‰–ÙʤFR®³_¿#%¿Æ–ÝPTa®HâËÃ;’Ç»‡”[¿-ç±³À\F}Ú¬5ž:˜,$4úõ)ìÕÛ·?¿{Õ|úÛûŸüø¤•pön§5%1¾Íоo¶êÛ·:=`tJ¢”#¹z)šã÷—x’F­º¾ÎŸKÆâ`†È*ã*«;èîf¬ïçl…ª6Õ‚ì"*°” …ث輦£x§NHC<˜‘źýoZõ½'ëœ!’h}÷‹•^·ê‹½ÌüQyÍh‡(VmܹßÊwP¹[çJ”ö÷‘œí‰’ /‘ÌÕ|ÙZõìÁV­õÕêM>ŸÙ :DÈsT>C¨[Ä tÅ!¤U/þ|¨C×-i¾1lÁ‡6 ¡ ]âãò6 A|š¤ÒYœ¶Y(l9ͱ8ÑyŽK|•Ʊ3e|Žôü­™ŽÝTž©†U äíø*øa_Šø½½¡vÕ¿ùŽêýà1Ž{Ü›‘丈MSMR*ÉwÈdˆcX/péMÆhqÐTÓžÁèòœ¡}#°#gØ¡jtÇÎŽ‹à°©NóêÞ‹Ïäsb2á0nkÎ5sbµjb‡P‰ùø¥ãåÏ^BŽò@Ö3ŒqG¤I¸Ôió4–dr/±€âNÂ¡Ž©ƒhèˆÑéK} ÙfxéLc†¤Î&$—,4ƒ‘§Å,^Ùžz½Î'4¾ôÏïükïîúvœ_k}ÕfÆÓ¤ÏY˜2wkŽ7ç§Ú›¦kŒÖABa\†÷UçN^—ŽiŒ…Á¼h4Mõi¨¯þÿ×ò}£¾Fv».±É–gÞ³|íÈ.¦éq´áhð®ùúê‡áÈÉ/Íeí°¯¼À±¿2FfË8þ›ÀòïF/Ç¢ßóö¤‡ÁÌëG3ïªf<ïO =ÇTTTgFÅ[žmµi.ÅsFI`UkEEã­ Wˆ*40C–ò"3d”­#±»vWa÷0‹Åm/Êкƒ%´‰®]k:Ï9˜ba<Ú¯’´‚ œ‘„Å®Êó+¿Ó_\»Ýöó+e~çÑÊóŽ&‰ò£[Ô ¬> â´È”›J“¼ÿ™Mô@LNlî£x^ÞµŠÄ{]0CúƒÞï…W«©/Yˆ}øEÌWB3-¯¾+˜•6¾…Ò,Áò†x£B¬I¼4Ýô5¯ó•ñ/½mlÚ×v]9€ÀwO¤¦«lz€1ÇLâèà6S5;AQîˆØfå\+œÜ/USrnñž›Å?<$ÀbPA$YY°ÿiŠÔEgÊy7X“M¿«üߌ¥±gL4È3dÑkÓ½"R³ €øŸ¸YFe7Åxx”j§zãéËŽˆ€µðî-ÆŠ®mþß=F*•Ô~U½íCƒ‰ÆõãÒ¬€›¦QBÌü›8²&ýôB–£ôÙbiÿƒNfÊ£?f9ócýÄ¿xz»#)ÄB‚¸;gœB˜äYBXÉ )ˆ»l|†¤í9ôÓð¼ f<‚Ä#¸y8°EtØ“Õc;ðEf}–F!”GH³{)‚¢c ò[&~EŸ»Žë ýËC;¹Îo/—ëkÕ‚Ä7ºyR¨âX“qÝlÁ4ÐJƒg‹¦ªºz7æÒl¥¬m¯šmã:ذh¡^ÂFêU£+2g´¨Û•Ô°ÒM‰h ~£A^Š'i…íAÿ‹ûƒ„ªÁu’»³)ŠÐ¸"“ÂxÖÏý¢©Wê±Ó8rD{¤yRÏúÚ*³Æø8W¦…¥0Zõ§D_èúìí²ÀÐãøØ:©¾ïu]§¥“ƒIÐ=tÇzÚVvln„6göˆ¡•hf£Ï7Ý ü\<?s Z.¤zBó¯ˆe“a½iœæûS‚Ž Q›µÔ¢´iêõQì$vNòçžØ 1É¥ëìyϼZPéI” ÍhJm¥ íέºˆ½·]iú)¾7¦Z¬üCR¾qþª „aºvü h%ævæû+[-{¢vÅt¶'gGLØ$ƒõPDHÒ¢”±@l¨ú(å®#ÕãÚXš¼}Z‰¹]y(öY?NÃø‡iès÷4Œ~˜†Ñé4ÀÿŸ‡‹£<àýL£ÅuB…1Ó…I­`dmÚS³Åu~?¦fñÖ±škÁÐ<ýèXᤗSÆ[Ð €¡A­»Á$ÖËïQש„ªûS@v(Ž©GM¯×™ ½Ü"9 ë'…/ž ᜜tˆ}׿ ’hAì÷¡ê–úrÕ”e³Å*Á·¼…†Í âß_ß]yïÞØÁEµÐo]â–÷R>a<#ù÷ù~ëÒ»:)ŸqFòWGòvëMœ¯9’ÿ`å”€MW–o»Í ùñ 9ÈߦáA~ÙlkÏÒÙù®•Ø&ãѶI£—ýà®Äi+fHlýå ¾6Töè²évG(\“ý·wõPÀöÊé+êÄ5öo^·Æ‚÷ò„ÅQÿ@ú PKxºZ<·¢ÅGØ<IAR-STR912/examples/SSP/ssp.ewdUT “LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPK yºZ<IAR-STR912/examples/SSP/.svn/UT •LjKʈKux êëPKxºZ<*ìþ§6$IAR-STR912/examples/SSP/.svn/entriesUT “LjK“LjKux êë­“?Û0 Åw¡_Å6Eý¡”­c·"ÉtK!‹T.mâ¶ÓËǯ®=èf´~“DÔïQ”âó¤,¢z]–qÞu]Çû"óÒÎ?‡v¾Ý§,å6¤déjmºÝ–gS·L÷áG7^ÒR›®s÷åó¾9÷Qc't/2w‡Ã×›®ª 6`4G;;í[räÀ¿(ƒN}OW™O“ Ãy8©¿E%ôšÆÔ!ï'Fh‚OB1 ;Û«OjžÇVÞFUÎQÞ¬€ Òh§ãÎR ¿õ¢œõ ¡’µcÛcðÉ›JæÿþŽ6ÂŒ× ›Pmï#ÙbµuNzô@6xq\H6s&Ø vMç¡Íë¸"h­!DëÙCÀ(P©Î¢sÙ‚+Dož~½­ ’1³N©bT(Öj)’ôTßÝÄ/ªX{I|•vy,ëÈГu>™â$su͉ԋÏ1U2,›¬XÝÙ÷ £~|Ë·¡´¯+Ãd[ÿë ƒpßgðM1È9p4!lf|ˆhçeí–öN(¦ )‹)¥wÙBô¢1CÎÛ¤é«d¿PK wºZ<'IAR-STR912/examples/SSP/.svn/prop-base/UT ’LjKʈKux êëPK xºZ<'IAR-STR912/examples/SSP/.svn/text-base/UT “LjKʈKux êëPKwºZ<Äg®R{7IAR-STR912/examples/SSP/.svn/text-base/ssp.eww.svn-baseUT ’LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦¸¸@/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKwºZ<÷wò½I"L7IAR-STR912/examples/SSP/.svn/text-base/ssp.ewp.svn-baseUT ’LjK“LjKux êëí\moÛ6þ¼ûBÛomýÒnX xÅiµÚ±a;Ù0h‰–ÙʤFR®³_¿#%¿Æ–ÝPTa®HâËÃ;’Ç»‡”[¿-ç±³À\F}Ú¬5ž:˜,$4úõ)ìÕÛ·?¿{Õ|úÛûŸüø¤•pön§5%1¾Íоo¶êÛ·:=`tJ¢”#¹z)šã÷—x’F­º¾ÎŸKÆâ`†È*ã*«;èîf¬ïçl…ª6Õ‚ì"*°” …ث輦£x§NHC<˜‘źýoZõ½'ëœ!’h}÷‹•^·ê‹½ÌüQyÍh‡(VmܹßÊwP¹[çJ”ö÷‘œí‰’ /‘ÌÕ|ÙZõìÁV­õÕêM>ŸÙ :DÈsT>C¨[Ä tÅ!¤U/þ|¨C×-i¾1lÁ‡6 ¡ ]âãò6 A|š¤ÒYœ¶Y(l9ͱ8ÑyŽK|•Ʊ3e|Žôü­™ŽÝTž©†U äíø*øa_Šø½½¡vÕ¿ùŽêýà1Ž{Ü›‘丈MSMR*ÉwÈdˆcX/péMÆhqÐTÓžÁèòœ¡}#°#gØ¡jtÇÎŽ‹à°©NóêÞ‹Ïäsb2á0nkÎ5sbµjb‡P‰ùø¥ãåÏ^BŽò@Ö3ŒqG¤I¸Ôió4–dr/±€âNÂ¡Ž©ƒhèˆÑéK} ÙfxéLc†¤Î&$—,4ƒ‘§Å,^Ùžz½Î'4¾ôÏïükïîúvœ_k}ÕfÆÓ¤ÏY˜2wkŽ7ç§Ú›¦kŒÖABa\†÷UçN^—ŽiŒ…Á¼h4Mõi¨¯þÿ×ò}£¾Fv».±É–gÞ³|íÈ.¦éq´áhð®ùúê‡áÈÉ/Íeí°¯¼À±¿2FfË8þ›ÀòïF/Ç¢ßóö¤‡ÁÌëG3ïªf<ïO =ÇTTTgFÅ[žmµi.ÅsFI`UkEEã­ Wˆ*40C–ò"3d”­#±»vWa÷0‹Åm/Êкƒ%´‰®]k:Ï9˜ba<Ú¯’´‚ œ‘„Å®Êó+¿Ó_\»Ýöó+e~çÑÊóŽ&‰ò£[Ô ¬> â´È”›J“¼ÿ™Mô@LNlî£x^ÞµŠÄ{]0CúƒÞï…W«©/Yˆ}øEÌWB3-¯¾+˜•6¾…Ò,Áò†x£B¬I¼4Ýô5¯ó•ñ/½mlÚ×v]9€ÀwO¤¦«lz€1ÇLâèà6S5;AQîˆØfå\+œÜ/USrnñž›Å?<$ÀbPA$YY°ÿiŠÔEgÊy7X“M¿«üߌ¥±gL4È3dÑkÓ½"R³ €øŸ¸YFe7Åxx”j§zãéËŽˆ€µðî-ÆŠ®mþß=F*•Ô~U½íCƒ‰ÆõãÒ¬€›¦QBÌü›8²&ýôB–£ôÙbiÿƒNfÊ£?f9ócýÄ¿xz»#)ÄB‚¸;gœB˜äYBXÉ )ˆ»l|†¤í9ôÓð¼ f<‚Ä#¸y8°EtØ“Õc;ðEf}–F!”GH³{)‚¢c ò[&~EŸ»Žë ýËC;¹Îo/—ëkÕ‚Ä7ºyR¨âX“qÝlÁ4ÐJƒg‹¦ªºz7æÒl¥¬m¯šmã:ذh¡^ÂFêU£+2g´¨Û•Ô°ÒM‰h ~£A^Š'i…íAÿ‹ûƒ„ªÁu’»³)ŠÐ¸"“ÂxÖÏý¢©Wê±Ó8rD{¤yRÏúÚ*³Æø8W¦…¥0Zõ§D_èúìí²ÀÐãøØ:©¾ïu]§¥“ƒIÐ=tÇzÚVvln„6göˆ¡•hf£Ï7Ý ü\<?s Z.¤zBó¯ˆe“a½iœæûS‚Ž Q›µÔ¢´iêõQì$vNòçžØ 1É¥ëìyϼZPéI” ÍhJm¥ íέºˆ½·]iú)¾7¦Z¬üCR¾qþª „aºvü h%ævæû+[-{¢vÅt¶'gGLØ$ƒõPDHÒ¢”±@l¨ú(å®#ÕãÚXš¼}Z‰¹]y(öY?NÃø‡iès÷4Œ~˜†Ñé4ÀÿŸ‡‹£<àýL£ÅuB…1Ó…I­`dmÚS³Åu~?¦fñÖ±škÁÐ<ýèXᤗSÆ[Ð €¡A­»Á$ÖËïQש„ªûS@v(Ž©GM¯×™ ½Ü"9 ë'…/ž ᜜tˆ}׿ ’hAì÷¡ê–úrÕ”e³Å*Á·¼…†Í âß_ß]yïÞØÁEµÐo]â–÷R>a<#ù÷ù~ëÒ»:)ŸqFòWGòvëMœ¯9’ÿ`å”€MW–o»Í ùñ 9ÈߦáA~ÙlkÏÒÙù®•Ø&ãѶI£—ýà®Äi+fHlýå ¾6Töè²évG(\“ý·wõPÀöÊé+êÄ5öo^·Æ‚÷ò„ÅQÿ@ú PKwºZ<·¢ÅGØ<7IAR-STR912/examples/SSP/.svn/text-base/ssp.ewd.svn-baseUT ’LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKwºZ<8bˆËi:IAR-STR912/examples/SSP/.svn/text-base/91x_conf.h.svn-baseUT ’LjK“LjKux êëµWMoÛ8½È —¶èÆ’òÕæFK´M¬>\‘J“¡Øt£­-eey»Ù_ß¡»2c±*Ð¥}ð̼yó81Ìàý‘oÝwàFÓû˜'˺.‚l^r%çUYäÙ|ÇROOÞÃ([IÓµ„ýºOö¿³y‘/Ï„l«Ç¢„öºÀõ€<=­²yZeEB¦köÒJ"i¹©€m6[¹P`ër`ÔÒnàV–•aŸYu‚ÜÌËì©&Ù³ûÙC™–Ï Dd_¶e]ã á¿y)“lSåóúBG ½>êìb¯7a¿Äº6ø?( Ó˜r àÑHÜ‘˜ÂÝ„¹`FQ ã„y$t)D¡„ˆÀœè–y,ƒ›p4æpÇÄDqºQ`!¦D°(„˜ŽI\{± ‹Uº—¸‚#¢Ø£q] cˆ8¹¥ X@Ï€ðzl€'¾ø Æ‘¹qD}êŠ8 ™ËOˆïC R˜Pߟ‘¡OkJÞƒÇbDÀZÍ/ň!7 9ýœàÎñÁ#ÓfªÚJ‹"pýfÛ1ãj £8 êÆ!ƒÀôšo<Á¦í{HBoÐl N! …á}«[˜ÑpèÍjZ ÂBêá†bŠMÂ/úB¥ÚY‹<ìäïŸèÁé‰ú¼É–ùB.a6S¯2ŠÍð)¿AW–KÍ{z2À‘*à[Q~…,‡‡ír)K|q×ÅBÂ_[|“r^¬×2¯ z”°,V«â[–•bkj;öáKþ ³Ûʬñ³¡*ài»ó6/;Ö.ñÈJ7²)­ˆÐzt˜Œήd2$Óáѳnׄ³}ÄeñÙÆÂ·Ì5VÝ“!ðвMs/ }7‡PÝž¹ižË•Õ°»NWà¼+pѸì \u®òÐiÀú6¡º=¦ùWë¨×>êuŽzÏGý%Žj‰ÝTw,éK…P#Ö}©ªÛ–î°u‡£;ÌMOYÔ©§ý) fZšmk¶£Ùçš}¡Ù—š}¥ÙךýQ³?w óiÑêBTÜ5ÞF¢À IÓ˜%%$¦çØbRÐWë•Ç~åqÌMáÓžMáÓCË:4ͧ±K¾¡æ?\^ï‰@¨ù€ðƽol¤bNoUÕmKwØÆƒhH»çF?ÈÛ°ýaX8ªi–ÏÜòyS¥+X–òï­ÌçÏðOºÚJxûçä¿wm|s“ÙßÚÉ­¹8àt.-K ÌÙògz~}íïs5?àuª}wÛ]½Žuóþ+¤¡§.¶#æÓ—NPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKwºZ¹"—¥‹2Ѻ„Ï,й„tV!#oF t\fQx¹S„£Gœyà‡¯Ýôâ$Œ/ù;r¬V9ÇK«ù؇uþR6¶M·?±ÓÔ¡ké¶n:`wêÎÕÒáKÓК`ØPïXÐè5ÕÔt蘭¯ mTe:Ÿša6@ëÙN§­[6‡ûb8Mt0Lo«ŽÑ1ÁÒªE½¸ aqñZOslœ«¦[´޵Á逭~ÖÁ1Úú¹ .ˆv¯åœr/44«£·tͱ:¦¡Ù`7ÕV ÌŽ7:4õV Z†zÓÒ R5¿BͰpö)Ç2Lñ‹"MÓÖÿÑCÍ µ5µ­6t[h€«uù,ä´–PÛ2l®BÝê´9Wˆ ·]§v6·¡jÖÊB%èÙ:´Õš7_Öâ|PKp[؋ꆩ×P!KG#Ôg")>L$—-yvpÿ(¿}óöMyC?±Þ¿úá˜ï<¿~’ú¾78›üš­Ô¼{îÉãŒØø5 ò•r¤SøuÕh¡A¯¡r ]Õ¶éýÑû„ù&NìÄMÒøj… Bx{•öœMqêb"}9WïÝÈsþk6‰#¦`ÛÝJÿ&YÔwþy^ý†VúQy¨H§€m•Úsj?P+S«Pû‘Ú j?aÀÁ¶ÇUšuC­FmZÚ:o¥ µ´²TÝ''‰8IÄI"Nq’ˆ“ô‰ZZYºy8IÄI"NqªVž®rCI› %]™ %)™HÉDJ&R2‘’‰”üŒ¡d¢+“¡d"%)™HÉDJ!C)´²òŒ¡â¤'…8)ÄI!N qRÈP ­¬Ñ'Ìê<ôÑÃ5*dÍßî®+8ˆ}#ðú†a ÷ØI”“4b8kÇàDn#¾øDã,wTW}œC*°PHBž=ö'D÷¡7‚F×èôµ0{·iDM‰÷]eã¶ÖÛ2\P@˜g8•Ò‹c˜‰OÔ£ð…n–JJ6³Å‚Ûdr´M¯W&‡òϪs“‹jQT‰ª¸å ŽNË`–& ?¼3 è¤Iqd1`1t‘`}à°Ê Ò£tôö;ï¼1?‡júM¯!biÄém‰ïÔ;Œ¼1öòîm­õw;L£!þQÊ;û[;ºâÒåã^Ì?Á!™Ðå¦~C?ÞALÒœ‰@ì¢pÍ»÷â0*@òÞ>vKˆ‰Î¢Zmè24ù„E®t?D» 9LmrLœ0,º/,–[vká$Äcfúá&Ñ Så)dóŠ˜jŒgŸÃE6$†3ÞSG×aõ0šº ê³ÒÓocÌG¡ïîh‡X¶IþÚo»q¢Z·ÓÊøk¿éÝNvNoªóéMµ_ÕG·lÇ|¼¹¶÷¯œSþÙ¿ìZ„ûˆÅóÂ5ÈÏÍëF‡®Ï¸T—&“µOáokÂË›&½`Ó¤]›¶jsÛwïwلƳ Ä =}=àUÒš"ÒóŠT°Œä² ´é(³‚nò ǪæÛ¤ • !æt!ÉŽ*žò†l„t2œï¼\—Ä)ùûyõˆ÷ýI…”ÅtÂý #¶RÍ ±““oÂâ9l°¤î»·âäÉXRˆ´ÔÐuoša¢OgÉãÑõ5¿1:9ÈÊQnå‹dö·Øy÷,g•íöÓ\umÂ0iñ4‰™#á\øî%êŽQ'À\g&X9×q™ÅA¹¬ðj™q h±«lÝeD—‚SðÆ"©r´S/IÕ8 §ÂÜ`”ÕDsʃG±é.î‘æšà»i-qí8ÀZxx .Ã#G\Ø„I}æFB<¾Ÿq•xIw¿_`srr´Z¡ÝmÙ»JÁc-3æô@Ô”Ô!”Æî*¬,ÂøXp­ƒÍêÚ¦´ ›®„#Ÿ)ûoEÃ>» ü¶.”§/65)†½ÒbéÕ 8ßÒÂþ?Ãÿåÿ/?ßËË¥yê‘©GzMêÙÛç?ròÇ_švþ„Pؾ?ï€_ûäçû¢6‰±xžŠŠõâŒßò3gvÄã¹-¶™Ôì÷é× å8W»7âw)È~ÀÊæž®Ý£Wñ¤=ð¤çð(ŸòëìÃTH½ú<‡~1i!µýó\y~[ØâÂÓÖ1$ßCÐÔøl£Ë¾/ü²ÿª}™‹ðÛÚïhmD+G(þþËþƒOûѸ¾\ÎI7ÂÐó†®Ï¹ä7ð€ì6R‘‹kHAô°Où4ÈBRÜzŠ#ïßïàÞ¸t߲ȮÂ$Ù ÷)¿/ç''WKÕ¬#›˜aˆÙ•¦÷ùݬñ¿½×‘Wf¼PKxºZ<¼Ñ3 Èô(IAR-STR912/examples/SSP/.svn/all-wcpropsUT “LjK“LjKux êë½Ò½ ƒ0Àñ=Oa@¯ZÄêVh‡"”¢¥«„©T“ÄǯJE7Äõøý.4©š $NR\5•*ç̬dÞ†wDнKÎ5!*M•†C7¬ØDuÆe©à~‰Ìøù¶´Å¥(¨‚8~¢Û㊔m ÙóF,ŒäħûóéÀ—8gY¡{[éqÚ½Ù÷fà#ŠÓ’ZºÕËg{«‚™ÚGøv›Î2ë³gÄL#r½êü-³øPK wºZ<#IAR-STR912/examples/SSP/.svn/props/UT ’LjKʈKux êëPK xºZ<!IAR-STR912/examples/SSP/.svn/tmp/UT “LjKʈKux êëPK wºZ<+IAR-STR912/examples/SSP/.svn/tmp/prop-base/UT ’LjKʈKux êëPK xºZ<+IAR-STR912/examples/SSP/.svn/tmp/text-base/UT “LjKʈKux êëPK wºZ<'IAR-STR912/examples/SSP/.svn/tmp/props/UT ’LjKʈKux êëPKxºZ¹"—¥‹2Ѻ„Ï,й„tV!#oF t\fQx¹S„£Gœyà‡¯Ýôâ$Œ/ù;r¬V9ÇK«ù؇uþR6¶M·?±ÓÔ¡ké¶n:`wêÎÕÒáKÓК`ØPïXÐè5ÕÔt蘭¯ mTe:Ÿša6@ëÙN§­[6‡ûb8Mt0Lo«ŽÑ1ÁÒªE½¸ aqñZOslœ«¦[´޵Á逭~ÖÁ1Úú¹ .ˆv¯åœr/44«£·tͱ:¦¡Ù`7ÕV ÌŽ7:4õV Z†zÓÒ R5¿BͰpö)Ç2Lñ‹"MÓÖÿÑCÍ µ5µ­6t[h€«uù,ä´–PÛ2l®BÝê´9Wˆ ·]§v6·¡jÖÊB%èÙ:´Õš7_Öâ|PKp[؋ꆩ×P!KG#Ôg")>L$—-yvpÿ(¿}óöMyC?±Þ¿úá˜ï<¿~’ú¾78›üš­Ô¼{îÉãŒØø5 ò•r¤SøuÕh¡A¯¡r ]Õ¶éýÑû„ù&NìÄMÒøj… Bx{•öœMqêb"}9WïÝÈsþk6‰#¦`ÛÝJÿ&YÔwþy^ý†VúQy¨H§€m•Úsj?P+S«Pû‘Ú j?aÀÁ¶ÇUšuC­FmZÚ:o¥ µ´²TÝ''‰8IÄI"Nq’ˆ“ô‰ZZYºy8IÄI"NqªVž®rCI› %]™ %)™HÉDJ&R2‘’‰”üŒ¡d¢+“¡d"%)™HÉDJ!C)´²òŒ¡â¤'…8)ÄI!N qRÈP ­¬Ñ'Ìê<ôÑÃ5*dÍßî®+8ˆ}#ðú†a ÷ØI”“4b8kÇàDn#¾øDã,wTW}œC*°PHBž=ö'D÷¡7‚F×èôµ0{·iDM‰÷]eã¶ÖÛ2\P@˜g8•Ò‹c˜‰OÔ£ð…n–JJ6³Å‚Ûdr´M¯W&‡òϪs“‹jQT‰ª¸å ŽNË`–& ?¼3 è¤Iqd1`1t‘`}à°Ê Ò£tôö;ï¼1?‡júM¯!biÄém‰ïÔ;Œ¼1öòîm­õw;L£!þQÊ;û[;ºâÒåã^Ì?Á!™Ðå¦~C?ÞALÒœ‰@ì¢pÍ»÷â0*@òÞ>vKˆ‰Î¢Zmè24ù„E®t?D» 9LmrLœ0,º/,–[vká$Äcfúá&Ñ Så)dóŠ˜jŒgŸÃE6$†3ÞSG×aõ0šº ê³ÒÓocÌG¡ïîh‡X¶IþÚo»q¢Z·ÓÊøk¿éÝNvNoªóéMµ_ÕG·lÇ|¼¹¶÷¯œSþÙ¿ìZ„ûˆÅóÂ5ÈÏÍëF‡®Ï¸T—&“µOáokÂË›&½`Ó¤]›¶jsÛwïwلƳ Ä =}=àUÒš"ÒóŠT°Œä² ´é(³‚nò ǪæÛ¤ • !æt!ÉŽ*žò†l„t2œï¼\—Ä)ùûyõˆ÷ýI…”ÅtÂý #¶RÍ ±““oÂâ9l°¤î»·âäÉXRˆ´ÔÐuoša¢OgÉãÑõ5¿1:9ÈÊQnå‹dö·Øy÷,g•íöÓ\umÂ0iñ4‰™#á\øî%êŽQ'À\g&X9×q™ÅA¹¬ðj™q h±«lÝeD—‚SðÆ"©r´S/IÕ8 §ÂÜ`”ÕDsʃG±é.î‘æšà»i-qí8ÀZxx .Ã#G\Ø„I}æFB<¾Ÿq•xIw¿_`srr´Z¡ÝmÙ»JÁc-3æô@Ô”Ô!”Æî*¬,ÂøXp­ƒÍêÚ¦´ ›®„#Ÿ)ûoEÃ>» ü¶.”§/65)†½ÒbéÕ 8ßÒÂþ?Ãÿåÿ/?ßËË¥yê‘©GzMêÙÛç?ròÇ_švþ„Pؾ?ï€_ûäçû¢6‰±xžŠŠõâŒßò3gvÄã¹-¶™Ôì÷é× å8W»7âw)È~ÀÊæž®Ý£Wñ¤=ð¤çð(ŸòëìÃTH½ú<‡~1i!µýó\y~[ØâÂÓÖ1$ßCÐÔøl£Ë¾/ü²ÿª}™‹ðÛÚïhmD+G(þþËþƒOûѸ¾\ÎI7ÂÐó†®Ï¹ä7ð€ì6R‘‹kHAô°Où4ÈBRÜzŠ#ïßïàÞ¸t߲ȮÂ$Ù ÷)¿/ç''WKÕ¬#›˜aˆÙ•¦÷ùݬñ¿½×‘Wf¼PKxºZ<8bˆËi"IAR-STR912/examples/SSP/91x_conf.hUT “LjK“LjKux êëµWMoÛ8½È —¶èÆ’òÕæFK´M¬>\‘J“¡Øt£­-eey»Ù_ß¡»2c±*Ð¥}ð̼yó81Ìàý‘oÝwàFÓû˜'˺.‚l^r%çUYäÙ|ÇROOÞÃ([IÓµ„ýºOö¿³y‘/Ï„l«Ç¢„öºÀõ€<=­²yZeEB¦köÒJ"i¹©€m6[¹P`ër`ÔÒnàV–•aŸYu‚ÜÌËì©&Ù³ûÙC™–Ï Dd_¶e]ã á¿y)“lSåóúBG ½>êìb¯7a¿Äº6ø?( Ó˜r àÑHÜ‘˜ÂÝ„¹`FQ ã„y$t)D¡„ˆÀœè–y,ƒ›p4æpÇÄDqºQ`!¦D°(„˜ŽI\{± ‹Uº—¸‚#¢Ø£q] cˆ8¹¥ X@Ï€ðzl€'¾ø Æ‘¹qD}êŠ8 ™ËOˆïC R˜Pߟ‘¡OkJÞƒÇbDÀZÍ/ň!7 9ýœàÎñÁ#ÓfªÚJ‹"pýfÛ1ãj £8 êÆ!ƒÀôšo<Á¦í{HBoÐl N! …á}«[˜ÑpèÍjZ ÂBêá†bŠMÂ/úB¥ÚY‹<ìäïŸèÁé‰ú¼É–ùB.a6S¯2ŠÍð)¿AW–KÍ{z2À‘*à[Q~…,‡‡ír)K|q×ÅBÂ_[|“r^¬×2¯ z”°,V«â[–•bkj;öáKþ ³Ûʬñ³¡*ài»ó6/;Ö.ñÈJ7²)­ˆÐzt˜Œήd2$Óáѳnׄ³}ÄeñÙÆÂ·Ì5VÝ“!ðвMs/ }7‡PÝž¹ižË•Õ°»NWà¼+pѸì \u®òÐiÀú6¡º=¦ùWë¨×>êuŽzÏGý%Žj‰ÝTw,éK…P#Ö}©ªÛ–î°u‡£;ÌMOYÔ©§ý) fZšmk¶£Ùçš}¡Ù—š}¥ÙךýQ³?w óiÑêBTÜ5ÞF¢À IÓ˜%%$¦çØbRÐWë•Ç~åqÌMáÓžMáÓCË:4ͧ±K¾¡æ?\^ï‰@¨ù€ðƽol¤bNoUÕmKwØÆƒhH»çF?ÈÛ°ýaX8ªi–ÏÜòyS¥+X–òï­ÌçÏðOºÚJxûçä¿wm|s“ÙßÚÉ­¹8àt.-K ÌÙògz~}íïs5?àuª}wÛ]½Žuóþ+¤¡§.¶#æÓ—NPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<Äg®R{IAR-STR912/examples/SSP/ssp.ewwUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦¸¸@/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PK wºZ<IAR-STR912/examples/DMA/UT ‘LjKʈKux êëPKwºZ<Íl-ö{IAR-STR912/examples/DMA/dma.ewwUT ‘LjK‘LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&%7Q/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKwºZ<6ù»×ÓRIAR-STR912/examples/DMA/dma.ewpUT ‘LjK‘LjKux êëí\ÛŽÛ6}nþƒä­©/i‹n7…¬õ&j|ƒíݦÀ Z¢m&2©R”c÷ë;¤$ßÖ’¥¨}©ã,t¡x8Cr8s8rëõ2°V˜G„Ñß_4k¦ó ÿþ‚Dì§««_ßþÔ|ñÇ»¾ÿáûVÈÙgì 8±¬ÖŒø.yô]³Uß?U÷=Fgds$²Kp‘¢%~w§ñ¼UWÇéuÁXà-É fEíQï°`ý¸dË—µÉ$éÕ RDGõ½ÇsÔ ÷÷dµmÿÏ­úÑ•mI ´=ƒóU¦xfuTnETôí2²ç{åN ¡î°PÖ™‰ÒYã!‹#Qᩚï¡X«ž\Ø«µþ¨Ú| Áôó%@PL¨K"q ’,§ u‡8®8…”õâo§:tÛÙßZ-xß¡>4¡Ç|œ/oCÄ¥a,¬Õya›…Â–Ó G'ªL¾Ä7qX3Æ—HÍßšîØÅ…hÕ@ÚŽçPÁû»M(âsCífxûŒê}ï0ŽÜY0_Ħ®&G1d‰»d:Æ,„O¸ô¦Œ´:iHªiÏhr}Éо°%Ø¢rtÖ‹`±™ºçÔ´x"Ÿ)‡q[³úÌ äª‰-Bæ3äá×–“^{ 5ZÒÙÎ0Æ­(CÆ…º·ŒA¦#xÜ 9Ô1³õ­ÈCtöZB±^[³€!¡ŠE‚ æëοÑÄQb¯l¯&ƒA÷£;y¸vG¯îݾs }û<úÐWúª-´§É3?öDêÖä7ç—ÚÏM[­‹"1†qé·7U§N^DâGó¢Ñh4å§!¿êüßþIï¨ùm4’Óí»biáÝ¥FcïáœO9ŠèP4 °R‡9û¿¯tèå)‹ ú5`ïÁÒ'–¯ãÑÃ4ÎGOFo›on¾O¬ôP_Ö.ûÚÅ+¸™12¸ìì<ÅvGO§_ìâ($åM®ãÇac¦7Oˆ™ÞV39Î5žzÚ"$ÚÓì,Çr q²w«‘¹ °…qØr‰©(¨4¨.(Î$Œ ëÓjS =Š—ŒϨÖ$Eh^4Þʲ£¨ Í̘żÈÚé%ËÕ/ÿbTq×ÍÇà$rè$ƒAÂ$Òù q æÛ0J‡sÆ bHº‰ƒ•^›[Qa= XÀôdR$ùèëT®^.1sòº—pMÚ àâ{0“Ї¾ kÁÑ@ÝŽœö ¦”6iµep¼wË0O†xÔ¬e“9Åþ0@„: d°Ÿg„ÿ‰ Ç0&›Ðì ØË¢ûqò›^4¤¡µ9Kh \»ÖtžR=Å&B{´ß„q8á"‹]•W7n·óÐî۽Ϋ+e~åÓuåyGÓ„«ù€‘ jÖF—zA\dÊu¥IÞÿÊ& &'&·k'íZɾ)˜!ÃÑàÏ„)¬Õä—d#âþÄ#ú«ˆð¡™†Wß &ÓÆ·0§%X^Á`2•5׺ۮ¢¾2þ¥ ·µMûÖ®KÐ øî¡P¬˜IÏ0Æà˜ ”Lo)è1í (ÛSÆñŽm1(Ö¤À2”ÎçØ·æçqµcÌã­©;ƒTËZ1úaÐþÓ ÿ>Ã@4žT518©ÝR9×Ï—&ŸµÃ<Ѽ¹ÐTë£Èô$D}é& &ã)Õô³ÃÂMäÄÓ¦…s;ž Îñrßð~^ I+Á,‡ÞØ;Ù+â-ýô ÷³#=Ú®3è õ&vý›AoÝîµíLÜAÿ rórå…Œ |PÍöpÿ6‹ÄöþöXOyn×í,ß(þRµQta }é’©;H¶5ÍÍÚO`¾¨ ¶`)‚"¡½"…R/#I»w†¹/ì+ë/QÅÚ[In›KtÎj8í#Æáx³œ²Àœ[¥€Fèkòú’Ñåê*¬*0<—Y¼¡Ù™l†”3ÍÒ¬ $±L•@õPX<öJ™P]67›Å›¡¸”‚ò¯zóÊ<^\¿*ä:»i_ЦØüJåÍ·¥ <@:CÚgœÈ§0¿WïÓ¬nºöøCx³sfy.©¢Ls…•%šËüAÃÆjÂ1vrU‚#7 +*Ì·,'M ’ÜNvz½Ä1qáË’ŒKA«$Ÿ95G/Ç•$sÔŽƒ€¥Ï×ö}"ï£ +3[†œÍ9Zv¨à›.š%Y•2\á™N¢=š÷ð@“à/%†êv‡Žbp£¸À‚êŠ{Í`•3؉²vÌÛQäw­otß…M`ƉöóqÊ‘¦C‹6«µAîÉ¿Ïø3 Ѐ3ÁY)sƒïÀE?4²n6oJ€‘ÉÙ'çOE) Ük1à9©8•5"åîPÎt}{`†­»sõlù´®=r>¸wÇoØ—@ÞžFÉÛ´…Šê4螤0æ÷«¶HŠNÍÇyùòåmFm`ÎŒ–v DÎ&I«þø§óZsÎâ0+¯@£Ç/b«ßä;jè£È=yî^†í’y>œÒÉïø=±º€Lˬ.òâüêZõFN)Gú#qøí$ªJµHW ½ Wà?çWx Ò>ÌqŪmâ@7ûÕ=ºD„ž~Pn‘e¿î(ÿýPKwºZc©k…¤Ø)Ç2U<ìÔÄ>[w„õ¶j NÇâ Ûïk]V· ¤*vîpXXE¤¦³]׫wxúËåì÷K/î 7Êt1›L=@u¥Ñ{Ord?]l·°•B3¨çb·¯Á¾ûpRÖº³­y¹rs’<Ÿ;É¿}&yþiïç¯íÌ{ß²úý%C®9®3žóD"O—ò–e·k¬!r,Ó «Yp¤It&âL&½¡HV6¹Lcžå¸rM”Aê×EBè˜I‘&ÈøŠe~•ê‰Ì¡ÃM s:„4 yæ+Ñ^ ™"g7RÄ|BlŒÊ>ßDòÂ]Ld)x ³4AŽ|Í¢I*±àXó(D$Ø"âž‘%wEF§/¨Ô0#NÚ Ò$çmȶ`B³¸b×tÎ)qø L*DúÞ×cxø·Ú=È;’=)‡ç;¦9ö¦}4î“à´öU2¦ß[TôkÕ$u<:~khßßBGèE®Û'g⇶_¨sû?"ë›ÓpgotÃùJò$t ¾é_PK yºZ<IAR-STR912/examples/DMA/.svn/UT •LjKʈKux êëPKwºZ<®þ3q¦6$IAR-STR912/examples/DMA/.svn/entriesUT ‘LjK‘LjKux êë­Ó½ŽÛ0 à]è«Ø¦¨otéÐ%ÍtK!QT.ר1l§—ǯ®=èf´æ$õ"%‘ϳЈâe]§¥ï:š¦ÛÊËÚ.?Çv¹ÞfârOÜŽ¼võn¾^×GR·Î·ñG7]âZ“†¥ûòth¾AbÇ÷8L^ºÏ_Ÿþ­º¨¡Ý :Jì ôÒ¶Î8öY(4â5¼œfÇóx‡+>1Hh"(U‹¼Ÿ2Bãmdˆ³ÑI|yˆ-¿eQÎÞ¬™€ º#¸^†^›~dz gUŠl¹€:&]8—ZÏ@°ÿþi”רÛ6X¢¤Pª(#‡ J‘¬‚u•%K’šý>0WYC<-mSɤ}ñ>YGˆ1p2>ÄlR ZÖþå=TÆjUYŽyàv½¯Ûhè¢Ì‚Ó!R–dŒ*Z à°KÃê"<>rÚæÒr1h³”Ö0 mÌ^K/#îáB äý;]ÇÒ¾l2ç2)E)¢DÞ–ˆà™ ŒÚŦ˜ÚyÝ:g“aUv‘¸Î2¤ë>²D¢}¦ßªwÙ/PK wºZ<'IAR-STR912/examples/DMA/.svn/prop-base/UT ‘LjKʈKux êëPK wºZ<'IAR-STR912/examples/DMA/.svn/text-base/UT ‘LjKʈKux êëPKwºZ<Íl-ö{7IAR-STR912/examples/DMA/.svn/text-base/dma.eww.svn-baseUT ‘LjK‘LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&%7Q/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKwºZ<Ô¾õ1Ø<7IAR-STR912/examples/DMA/.svn/text-base/dma.ewd.svn-baseUT ‘LjK‘LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKwºZ<6ù»×ÓR7IAR-STR912/examples/DMA/.svn/text-base/dma.ewp.svn-baseUT ‘LjK‘LjKux êëí\ÛŽÛ6}nþƒä­©/i‹n7…¬õ&j|ƒíݦÀ Z¢m&2©R”c÷ë;¤$ßÖ’¥¨}©ã,t¡x8Cr8s8rëõ2°V˜G„Ñß_4k¦ó ÿþ‚Dì§««_ßþÔ|ñÇ»¾ÿáûVÈÙgì 8±¬ÖŒø.yô]³Uß?U÷=Fgds$²Kp‘¢%~w§ñ¼UWÇéuÁXà-É fEíQï°`ý¸dË—µÉ$éÕ RDGõ½ÇsÔ ÷÷dµmÿÏ­úÑ•mI ´=ƒóU¦xfuTnETôí2²ç{åN ¡î°PÖ™‰ÒYã!‹#Qᩚï¡X«ž\Ø«µþ¨Ú| Áôó%@PL¨K"q ’,§ u‡8®8…”õâo§:tÛÙßZ-xß¡>4¡Ç|œ/oCÄ¥a,¬Õya›…Â–Ó G'ªL¾Ä7qX3Æ—HÍßšîØÅ…hÕ@ÚŽçPÁû»M(âsCífxûŒê}ï0ŽÜY0_Ħ®&G1d‰»d:Æ,„O¸ô¦Œ´:iHªiÏhr}Éо°%Ø¢rtÖ‹`±™ºçÔ´x"Ÿ)‡q[³úÌ äª‰-Bæ3äá×–“^{ 5ZÒÙÎ0Æ­(CÆ…º·ŒA¦#xÜ 9Ô1³õ­ÈCtöZB±^[³€!¡ŠE‚ æëοÑÄQb¯l¯&ƒA÷£;y¸vG¯îݾs }û<úÐWúª-´§É3?öDêÖä7ç—ÚÏM[­‹"1†qé·7U§N^DâGó¢Ñh4å§!¿êüßþIï¨ùm4’Óí»biáÝ¥FcïáœO9ŠèP4 °R‡9û¿¯tèå)‹ ú5`ïÁÒ'–¯ãÑÃ4ÎGOFo›on¾O¬ôP_Ö.ûÚÅ+¸™12¸ìì<ÅvGO§_ìâ($åM®ãÇac¦7Oˆ™ÞV39Î5žzÚ"$ÚÓì,Çr q²w«‘¹ °…qØr‰©(¨4¨.(Î$Œ ëÓjS =Š—ŒϨÖ$Eh^4Þʲ£¨ Í̘żÈÚé%ËÕ/ÿbTq×ÍÇà$rè$ƒAÂ$Òù q æÛ0J‡sÆ bHº‰ƒ•^›[Qa= XÀôdR$ùèëT®^.1sòº—pMÚ àâ{0“Ї¾ kÁÑ@ÝŽœö ¦”6iµep¼wË0O†xÔ¬e“9Åþ0@„: d°Ÿg„ÿ‰ Ç0&›Ðì ØË¢ûqò›^4¤¡µ9Kh \»ÖtžR=Å&B{´ß„q8á"‹]•W7n·óÐî۽Ϋ+e~åÓuåyGÓ„«ù€‘ jÖF—zA\dÊu¥IÞÿÊ& &'&·k'íZɾ)˜!ÃÑàÏ„)¬Õä—d#âþÄ#ú«ˆð¡™†Wß &ÓÆ·0§%X^Á`2•5׺ۮ¢¾2þ¥ ·µMûÖ®KÐ øî¡P¬˜IÏ0Æà˜ ”Lo)è1í (ÛSÆñŽm1(Ö¤À2”ÎçØ·æçqµcÌã­©;ƒTËZ1úaÐþÓ ÿ>Ã@4žT518©ÝR9×Ï—&ŸµÃ<Ѽ¹ÐTë£Èô$D}é& &ã)Õô³ÃÂMäÄÓ¦…s;ž Îñrßð~^ I+Á,‡ÞØ;Ù+â-ýô ÷³#=Ú®3è õ&vý›AoÝîµíLÜAÿ rórå…Œ |PÍöpÿ6‹ÄöþöXOyn×í,ß(þRµQta }é’©;H¶5ÍÍÚO`¾¨ ¶`)‚"¡½"…R/#I»w†¹/ì+ë/QÅÚ[In›KtÎj8í#Æáx³œ²Àœ[¥€Fèkòú’Ñåê*¬*0<—Y¼¡Ù™l†”3ÍÒ¬ $±L•@õPX<öJ™P]67›Å›¡¸”‚ò¯zóÊ<^\¿*ä:»i_ЦØüJåÍ·¥ <@:CÚgœÈ§0¿WïÓ¬nºöøCx³sfy.©¢Ls…•%šËüAÃÆjÂ1vrU‚#7 +*Ì·,'M ’ÜNvz½Ä1qáË’ŒKA«$Ÿ95G/Ç•$sÔŽƒ€¥Ï×ö}"ï£ +3[†œÍ9Zv¨à›.š%Y•2\á™N¢=š÷ð@“à/%†êv‡Žbp£¸À‚êŠ{Í`•3؉²vÌÛQäw­otß…M`ƉöóqÊ‘¦C‹6«µAîÉ¿Ïø3 Ѐ3ÁY)sƒïÀE?4²n6oJ€‘ÉÙ'çOE) Ük1à9©8•5"åîPÎt}{`†­»sõlù´®=r>¸wÇoØ—@ÞžFÉÛ´…Šê4螤0æ÷«¶HŠNÍÇyùòåmFm`ÎŒ–v DÎ&I«þø§óZsÎâ0+¯@£Ç/b«ßä;jè£È=yî^†í’y>œÒÉïø=±º€Lˬ.òâüêZõFN)Gú#qøí$ªJµHW ½ Wà?çWx Ò>ÌqŪmâ@7ûÕ=ºD„ž~Pn‘e¿î(ÿýPKwºZc©k…¤Ø)Ç2U<ìÔÄ>[w„õ¶j NÇâ Ûïk]V· ¤*vîpXXE¤¦³]׫wxúËåì÷K/î 7Êt1›L=@u¥Ñ{Ord?]l·°•B3¨çb·¯Á¾ûpRÖº³­y¹rs’<Ÿ;É¿}&yþiïç¯íÌ{ß²úý%C®9®3žóD"O—ò–e·k¬!r,Ó «Yp¤It&âL&½¡HV6¹Lcžå¸rM”Aê×EBè˜I‘&ÈøŠe~•ê‰Ì¡ÃM s:„4 yæ+Ñ^ ™"g7RÄ|BlŒÊ>ßDòÂ]Ld)x ³4AŽ|Í¢I*±àXó(D$Ø"âž‘%wEF§/¨Ô0#NÚ Ò$çmȶ`B³¸b×tÎ)qø L*DúÞ×cxø·Ú=È;’=)‡ç;¦9ö¦}4î“à´öU2¦ß[TôkÕ$u<:~khßßBGèE®Û'g⇶_¨sû?"ë›ÓpgotÃùJò$t ¾é_PKwºZ<=³¯aÆy:IAR-STR912/examples/DMA/.svn/text-base/91x_conf.h.svn-baseUT ‘LjK‘LjKux êëµW]s›8}ÏLþÃéK›ic _mÞd!ÍòáE"™™ß¦³,]œ?i ÙOYûíoò2Ç9ÒsÓœd]dùË­þF-K½90jmÇ.›“0_ÇŽMð8–ƒIÈó%ˆ`$ïIÈàÞáÔ.`„0ޏM|Ê ðÝ Ü@$ÆwÜæþh$dà±PÀ=—ŽÖ¤A9À} ÷ˆä!“°D1!u¸Q)Ah³°L…cȹc ¹ÇΈrÙ €ˆ\ù^/GNÀ¹ŒÊ0ð9 âºà† æÚàr2tY)Iü°yˆì÷˜«ú¥qˆ¾`G8sN\°‰GƬš„Î6A¢ö¢¨[M;äBOa^Y8T^ê@DX´] ‰oª)A$xÄf0|Ø«FTõbU%ô%á>³qB!Ã"á1Mér–&+ùûWôàôDÞ$‹t®0ê­Œ&FS|ÊoJRUCOO¸¤2øšå_ Iáq³X¨7î*›+øgƒ;y®fÙj¥ÒŠ'‹l¹Ì¾&égXjµ*ç`°U¾Æ¿*ӽȒÿ¨0Š ž7[´Úì˜;Ç#+^«*µþ!k³a4®45 ÎL†­gݶ:?§»2Z0³3ñ§}³"µÞ7ê@w2Û#ÉvJH<ìMéSœ¦ji´Ãf;lµÃíðe;|Õ_·Ã7?yÐÌã}ëÔz:ŒÓ/F+j¶¢V+zÑiqÔß⨴x\êžG}¥Ú)…t_)¤ÖûF0ë€Uº‹4žðਟC;šÚŒb6«\4ËrÕ@®ÈMùØ@>uÎ?”½Ï ¤vJ Ú½HvBHìò:,ÕO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKwºZ<Ÿ¨ZíU 6IAR-STR912/examples/DMA/.svn/text-base/main.c.svn-baseUT ‘LjK‘LjKux êëµXmOÛHþ|•úF©t È—7èˆÆ6Ä:Çál§¨ªªÈÄbÕ/‘½z§ûï7³»NœJ[zF¼»ó<3³³3³éîy m€1¾úèٗýÞðƒQ<+r–°/ò,ž•°Oôå‹C¸ˆn˜2X='†q֙Ѵ^ñE^@ó9‘a‚¾\&ñ,äqžAÀ”›!gX”첬XD‹{¯»ýw]¡Ö |`EIýNO°rVÄK²AË"¿-ÂæHnŽt`aºLX¥Hpß,â²^UÉ€/˜uâì ê’ĨWÌYZÏaÉ ÄNƒJ´Ž³"În!Ÿã{뼚ÏYÑk ‚N "_ŒAŽ# Þoô ÂX^B ¤`_“š8jP˜IÉ$WÞl@àtÊÒ¼øJvÿâ‡,¢Ký„þÇ} hŸÞnìÓ ž;ÞÝþš{lÿƒ¡Wžå[nþø"¸Ö= ®‡¶1Û‡‹±—ÛÔ]±ë|Ýù (3þ`›¶{ ÆÄÆ#Ëó îÚ†xxÄ„í¢øHì± žu©{b mÄ͉ø¸Æžiy‚ çFŒÁ×?XØ#«#Ž "€?qN¢mxc˱ŒÀ»¶áƒ?ÔÜqç -ÇÇÖÏK@êîG0mWk„e»òIQM×·þš å¶î€©ôKË— Û­B]Àp¤Ùží“ ÞxDº ‚ä»ñøtÚʇºkv¥I0ñ-é¦ç×Þ" š”Î’º­ýE°ºíZ&äYè$[Œ¹¨M %7=ùë#ºûòýtÁça…E„çg–Tƒ?~ú!ÔW5Lë}ÿašÄ7EK1Ùj„<ÅiU˜~â 3Ç<œ1X°0¢,ð]Lˆè`HjÅ¿CìiÄ«"¾£ÄÌ¿.YÄæÏÜBD´8{ŽwwÓËÖ³·ïÂ"o’ç¸RFV’©Å<@7šèF¨|^T3~ª""Àº@G¥˜åÇ‚VŠ‚ÁïsÈØDZ51"«%¾/UôR,Vy¶*_³E˜1–@Án1]#ä ÃÊÅ äaÁ©: ä"ÌJäSÖ -$(2¡`Uˆ0çU±‚*1e—8€qFQÁÊr5¥QqFxY“vg‰TW£K¯µe •Îx Åš$DsW£¨xš0ÐÊ ­$ùÚÚ†A-­%q‰{ž”e¼¥­=&‰p¢’Ç·pr‘ä÷5PBöøÅ ·¬„û8â l_¿v:†waR±“ÞCÏ8~÷¾×3P95ZÂŒMž“Õ¾@ÿÍÎúXûK$¨gpŸ‘ôss¤ÓÑ[˜°$÷‘¨h1D,L ãŒmóU¬ø÷&#áÑ”$bhRÊð½ËÜJꌎ"@?õŸáì´Ckü*›´ýÃÿ6£|.BW¶2¤ãÍ: 1€•Ò2+Êé\5Dí:æäÀ)¸¡žj´>½j}m iÇÚkíöV{§½×ú8Ø×~bFZа"Xèªf¬«¾mÛTW{NÛûC {¤?%uô´”²¥Îwó*›‘ÏÎwÝ_\žÅeC)§.²×ßsÀ+Fã šlYñæÄÍ3FãŠ7gÖà ”íNüÚ]…µ^ØÑ¾Ëãèàå‹äž¼ŠçTmMë|‚íài¼©nÛ¸c¯XÅsZƒzùÆd:2œ?}q$ ‘6Úõàtì§Ò€îá3@(‹ ¢‡UÂa†7‡/êH‘> ô åÍø..ó¢J£SîKX ÝÁ^s–xP±ó ¤‡ˆ_") gÐW ôë7ëÖUJíÑn­`ëÜî3L‡ÑViP¨"õ>Ÿµ1èÚ¿×GÞ\U/èo- ÈÁ©táÏé„·Åâ[*ï¨48ÞPéõÖ‚£†J¨“ÏdAX3c•2i\GkmÊ=jj3X‘)åVL´©úð\î A¡ v{:Å‚¡Y.]-p³ÑKVF,S"fÔåZQ}1u4m¹žšU Ъî<ÁÓU²­ÑŒ‘Fíš¹{ØàÝd““`ü}³›j8®‹˜KéyÝ,50Ö2Á,ëïÔqJnótÃk´??¼3+Îù;6ØmâßÁOSaæÜ¡ê×TûZ¸çÑ¡eײU¨Þ¦×Ø·œªŠªÌ[uO² ¥Î¦XØnb^¶¾Ë®Qý&‰@1mVí:ññ4µ‚¶TÉ®ÞxЩ:*zžÍ¶ñið (ç>¶~€½é½ÑÊB+‚ÜP'‰m´ýˆÐ‡–ì+ó’e«örýÖF÷ß‚²¡ƒïxM•ÐnLô5¨é–ˆiùß!²fGxcÙÎyF«eò=®o#÷1îŸ0÷Ñc×`Á,³¥Üc9§æª¿#N¿ãæ9Ÿçª‹eé’•l÷ ìÇÇ%ãŠFÇæŽù<äU¹A ²–êË·ë¥~ä{[Ë5éû— Û±TÓñPKwºZÀ·× ˜¨ãÄö=ØM’r–[Ÿ-ÿ`¢…^´Áš ½ÙüPK wºZ<#IAR-STR912/examples/DMA/.svn/props/UT ‘LjKʈKux êëPK wºZ<!IAR-STR912/examples/DMA/.svn/tmp/UT ‘LjKʈKux êëPK wºZ<+IAR-STR912/examples/DMA/.svn/tmp/prop-base/UT ‘LjKʈKux êëPK wºZ<+IAR-STR912/examples/DMA/.svn/tmp/text-base/UT ‘LjKʈKux êëPK wºZ<'IAR-STR912/examples/DMA/.svn/tmp/props/UT ‘LjKʈKux êëPKwºZ<Ô¾õ1Ø<IAR-STR912/examples/DMA/dma.ewdUT ‘LjK‘LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKwºZ<Ÿ¨ZíU IAR-STR912/examples/DMA/main.cUT ‘LjK‘LjKux êëµXmOÛHþ|•úF©t È—7èˆÆ6Ä:Çál§¨ªªÈÄbÕ/‘½z§ûï7³»NœJ[zF¼»ó<3³³3³éîy m€1¾úèٗýÞðƒQ<+r–°/ò,ž•°Oôå‹C¸ˆn˜2X='†q֙Ѵ^ñE^@ó9‘a‚¾\&ñ,äqžAÀ”›!gX”첬XD‹{¯»ýw]¡Ö |`EIýNO°rVÄK²AË"¿-ÂæHnŽt`aºLX¥Hpß,â²^UÉ€/˜uâì ê’ĨWÌYZÏaÉ ÄNƒJ´Ž³"În!Ÿã{뼚ÏYÑk ‚N "_ŒAŽ# Þoô ÂX^B ¤`_“š8jP˜IÉ$WÞl@àtÊÒ¼øJvÿâ‡,¢Ký„þÇ} hŸÞnìÓ ž;ÞÝþš{lÿƒ¡Wžå[nþø"¸Ö= ®‡¶1Û‡‹±—ÛÔ]±ë|Ýù (3þ`›¶{ ÆÄÆ#Ëó îÚ†xxÄ„í¢øHì± žu©{b mÄ͉ø¸Æžiy‚ çFŒÁ×?XØ#«#Ž "€?qN¢mxc˱ŒÀ»¶áƒ?ÔÜqç -ÇÇÖÏK@êîG0mWk„e»òIQM×·þš å¶î€©ôKË— Û­B]Àp¤Ùží“ ÞxDº ‚ä»ñøtÚʇºkv¥I0ñ-é¦ç×Þ" š”Î’º­ýE°ºíZ&äYè$[Œ¹¨M %7=ùë#ºûòýtÁça…E„çg–Tƒ?~ú!ÔW5Lë}ÿašÄ7EK1Ùj„<ÅiU˜~â 3Ç<œ1X°0¢,ð]Lˆè`HjÅ¿CìiÄ«"¾£ÄÌ¿.YÄæÏÜBD´8{ŽwwÓËÖ³·ïÂ"o’ç¸RFV’©Å<@7šèF¨|^T3~ª""Àº@G¥˜åÇ‚VŠ‚ÁïsÈØDZ51"«%¾/UôR,Vy¶*_³E˜1–@Án1]#ä ÃÊÅ äaÁ©: ä"ÌJäSÖ -$(2¡`Uˆ0çU±‚*1e—8€qFQÁÊr5¥QqFxY“vg‰TW£K¯µe •Îx Åš$DsW£¨xš0ÐÊ ­$ùÚÚ†A-­%q‰{ž”e¼¥­=&‰p¢’Ç·pr‘ä÷5PBöøÅ ·¬„û8â l_¿v:†waR±“ÞCÏ8~÷¾×3P95ZÂŒMž“Õ¾@ÿÍÎúXûK$¨gpŸ‘ôss¤ÓÑ[˜°$÷‘¨h1D,L ãŒmóU¬ø÷&#áÑ”$bhRÊð½ËÜJꌎ"@?õŸáì´Ckü*›´ýÃÿ6£|.BW¶2¤ãÍ: 1€•Ò2+Êé\5Dí:æäÀ)¸¡žj´>½j}m iÇÚkíöV{§½×ú8Ø×~bFZа"Xèªf¬«¾mÛTW{NÛûC {¤?%uô´”²¥Îwó*›‘ÏÎwÝ_\žÅeC)§.²×ßsÀ+Fã šlYñæÄÍ3FãŠ7gÖà ”íNüÚ]…µ^ØÑ¾Ëãèàå‹äž¼ŠçTmMë|‚íài¼©nÛ¸c¯XÅsZƒzùÆd:2œ?}q$ ‘6Úõàtì§Ò€îá3@(‹ ¢‡UÂa†7‡/êH‘> ô åÍø..ó¢J£SîKX ÝÁ^s–xP±ó ¤‡ˆ_") gÐW ôë7ëÖUJíÑn­`ëÜî3L‡ÑViP¨"õ>Ÿµ1èÚ¿×GÞ\U/èo- ÈÁ©táÏé„·Åâ[*ï¨48ÞPéõÖ‚£†J¨“ÏdAX3c•2i\GkmÊ=jj3X‘)åVL´©úð\î A¡ v{:Å‚¡Y.]-p³ÑKVF,S"fÔåZQ}1u4m¹žšU Ъî<ÁÓU²­ÑŒ‘Fíš¹{ØàÝd““`ü}³›j8®‹˜KéyÝ,50Ö2Á,ëïÔqJnótÃk´??¼3+Îù;6ØmâßÁOSaæÜ¡ê×TûZ¸çÑ¡eײU¨Þ¦×Ø·œªŠªÌ[uO² ¥Î¦XØnb^¶¾Ë®Qý&‰@1mVí:ññ4µ‚¶TÉ®ÞxЩ:*zžÍ¶ñið (ç>¶~€½é½ÑÊB+‚ÜP'‰m´ýˆÐ‡–ì+ó’e«örýÖF÷ß‚²¡ƒïxM•ÐnLô5¨é–ˆiùß!²fGxcÙÎyF«eò=®o#÷1îŸ0÷Ñc×`Á,³¥Üc9§æª¿#N¿ãæ9Ÿçª‹eé’•l÷ ìÇÇ%ãŠFÇæŽù<äU¹A ²–êË·ë¥~ä{[Ë5éû— Û±TÓñPKwºZ<=³¯aÆy"IAR-STR912/examples/DMA/91x_conf.hUT ‘LjK‘LjKux êëµW]s›8}ÏLþÃéK›ic _mÞd!ÍòáE"™™ß¦³,]œ?i ÙOYûíoò2Ç9ÒsÓœd]dùË­þF-K½90jmÇ.›“0_ÇŽMð8–ƒIÈó%ˆ`$ïIÈàÞáÔ.`„0ޏM|Ê ðÝ Ü@$ÆwÜæþh$dà±PÀ=—ŽÖ¤A9À} ÷ˆä!“°D1!u¸Q)Ah³°L…cȹc ¹ÇΈrÙ €ˆ\ù^/GNÀ¹ŒÊ0ð9 âºà† æÚàr2tY)Iü°yˆì÷˜«ú¥qˆ¾`G8sN\°‰GƬš„Î6A¢ö¢¨[M;äBOa^Y8T^ê@DX´] ‰oª)A$xÄf0|Ø«FTõbU%ô%á>³qB!Ã"á1Mér–&+ùûWôàôDÞ$‹t®0ê­Œ&FS|ÊoJRUCOO¸¤2øšå_ Iáq³X¨7î*›+øgƒ;y®fÙj¥ÒŠ'‹l¹Ì¾&égXjµ*ç`°U¾Æ¿*ӽȒÿ¨0Š ž7[´Úì˜;Ç#+^«*µþ!k³a4®45 ÎL†­gݶ:?§»2Z0³3ñ§}³"µÞ7ê@w2Û#ÉvJH<ìMéSœ¦ji´Ãf;lµÃíðe;|Õ_·Ã7?yÐÌã}ëÔz:ŒÓ/F+j¶¢V+zÑiqÔß⨴x\êžG}¥Ú)…t_)¤ÖûF0ë€Uº‹4žðਟC;šÚŒb6«\4ËrÕ@®ÈMùØ@>uÎ?”½Ï ¤vJ Ú½HvBHìò:,ÕO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<˜üt¶™ #f#IAR-STR912/CppUTest-STR912-Main.ewpUT ”LjK”LjKux êëí]moÛ8þ| ìÚ~ÛÖ/i{—Þ.dÅiÕÚ±a9ÙÀ %ÚæV&u•:ûë¤$¿Å’“ˆ£~¸sW/Ô<œÑp†3©?֫кÃ<&Œþþ¢Ýh½°0õY@èâ÷$foÎÏßxÓ~ñÇÇ_ùõ—NÄÙ_ØrDz:sâ›ôÒgæî®>ï3:'‹„#‘’)Záx–,:M½Œ…þ‘¼aÞÔö6[vEíc»ÓL7²£1BrÐû„)æ(Ü£)Ï!î/Éݦÿo;̓#›–h³'÷3á}lÿ«Ó¼;h,Oÿ@T\1Úg> U÷öwÚeBŸa‘ا™³Ò[ãËVR晘oe³N3=°Cµù€l1Ðpö×c€d³Š@}‹Ç ©v¡n'òVCÊïâ‡c7tÓ“ö»Š=øÔ£ì€¸˜ßVE—F‰°îN3Û.eÖL7ûœè6Å_&ahÍ_!=~Uu7”@ TY?~†>¥Ø]B¿‡SµËÑõOï'‡q<äÎ’DÅ,¶«JrœPAV¸Of¥#|>ÃÆ»â…èî¨!©§?ãÉÅcTû:Æ–Xb‹*í­½)‚ÅæúœÓt~ûÍâ)VHf\êmúbV¨¼&¶˜Ï‘_[Nv쵤h©Èf„1nÅI1.ô¹U 2»8–—[—4æ¢ûˆÎ_ëMÙl‰×ÖÇÌWÒW†©ÛUO,uqG=ÇIˆãç|E«Õj«OKýê/ù·ùÊÎèõÛj¥»›+¶Í²ÆÛC­ÖÎų#µF™·ÞUùV.[É´2}òÆÙW«´íÞ¿­ÖÎösî€ d·²l¿Eç®ãüÖƒàüìéÁùÙÑð28wœ <'ÇÅúUQ½gÄqÄ™)§=pZ¼qØj…©(aÈT_ Fåh±iÅ+F‰*µ Ç1Z”é› ;Žëœ„ñXÂ!}¢ã¤3Ã1^!þTp-<py“ŠqF¨õ¾õz„ÿYÙÇ¥ˆ)c€Hü‰8•–¥Ç9+qÕ•1TŠ“Kƒ½†KH׆rÚ¬s—ÏNÄ¥Ÿê2UŽÌ¥sǯû˜üfeVúrP•)GuFÖ‚£¡>;Kì— ©Ê‰Ò],@}ï#ºP©•V °FÖ# ŠƒQˆu–ð>9Îÿ'!KLÜG°Îpg”¼4Íí?”¡µ9––IÎò"éÞy–^,7•µý2JjÀi _>kyuéö{Óî•=è½j0#ã«8Eœk`¢4KóƒŸ1 ÊBÙª”¾Ñ¥~˜”™òªÜdЧÃå¡tœ@.Œ9NÆÊÊž•èÅh<ü’ædI.Cà#Õè¶ÑP¿…tŸjhE yvP9L.º§$´ §{rL•&¯«®»:%÷ƒñï%ªQÙúmLŸš#Éém$tºÒùJ OÎ]^]d¬gpËjáz˜!~wÍÕÿxFõ¡,þŸé<•é´Aòœµ× Ù5ÎvH8(–~…ÆD;"Jj$ª" Ï™Š‚ŽF&õ˜H[iæ Îåh?—0*ÒòD± €±œÈãv %þ¿*ÆÃrË=ò•‡O(ÆxAb9cº’û€A· ½¦beç õ_‘‡ŽÕ4HiF¶rB,þÞhi'孆譣–¾·Æ>`½ ïí8Æ T† v-n„¸éB,ãÖ-P1ÆyU šyòKßyÕáýmŒç€&J‘?if è›>¨Å7ÎL QCþÒ®'Mjמ'µëË¡K¯¸"B/#B¯áìB©ê¼’;Vy%Ïv”q¼Íɲµ)± Ƴ~öuŒùiÜÊ1æáß `Bn­ ,ý0ì~q†£ŸÈ@´žñT݈áÐÉì–~`¢,®>ƒ}!ëüÚÅ–åRSíDÑõÇâMZõûf€mÄ\MJ«Â«Z0D57Lëº!Åîì/‡E÷&²Ï/ε7žJØ=á©A¼*ß$‡¿ã;;;MüUJùÊóùV5º®3Œªøæ“A¯Ýþ…íLÜáÕ äöã…qiHHÑl6wO³XlÎo¶« Ïí»W_Í[ËÚóµ®T¤ï}2s‡éÂ1ܨý&Ãw½"ðYZвÐZ3¥1Tñİg›_–T^šTø›ò­S±rªG¡}Å8òîW3ÂMÀ4ÐýHŸR,—¬Q¨”±ºÀðBÕPׄf‡dQ²lbFa²$5Uµ@ PT®{FTŸ-`k¨s—APHþÖXÂã ä\°¾N˜ºÁû.~:h0¢xéDzg[œ¤Úc~«½×zzÙ·½ÏÓܧ5ˆ?7ØŸ.ÛRM¥þ+¯ôWU›ÀöjÂ1v,ùªG­VÖTZåj'{l!N+jÙñyƒ:qãÇ•vA«¥Š<³‘×]iP;L1µL~í ê< %bYâsk97ïݹuíq>ý—W7‘Ø#s#έzTðû>š•÷Ñ©x§ê›aP‹ñ¦S‚ø4J/˜ÊcÜH¬uõmÔ9:''%f¶*»LºBÀ›¨¨cÞ½eó³õeÕ—¤0^*ýb3ÜôhÙòwe‡ûùû'¾UEvàDgaø˜±°ì½Cëv»ufF•¡?5•s¿KÄ÷ÔÖ‰,æ»AaR:Ò«Û+ lý»½ó:æO}ó‡Ѓw@׫s_½V¬ÈœA¯ŸÈ‰óÙ½9|‹úÑñšBÏz¨΀³ë ~9qƒtBë_¾|yç“p ÷À´¥k`¹¥`©ªÓ|øZÒ΂³$ÊÛkPr¤šB¿ðô §EsÝæ™’Û¥R›/ý Æ~ZúîTS(jœPйy˜KD„có„¿(ÍR[©šà“Fß/°a Î#Ë.Ô1 “¡æF!êép/Â>™é<¨N¹è®Gä¼ {‚ƒHL}}–²Â1@×wˆO}òPB}A)6Aú‘~E=NB ©¨?©Š—d-@lݵPt²ú£Eï4·¾îˆÛ‹¾rçQ‰¹ÂãùQT‘á"Œg$÷v†ÉqE`û^Â0Ì• (bý}è¾ íyô÷M8q‘ì˜oÊã B[›nÔS£j†h>÷‰oeh”RΕ!œ²­*%šì^}â…?ÝëËŽá‰=ØZ`£™ù5JS«ÜÇ#šŽC£$=, ¨îØQ£„1—J WIyã”S jœlnä+ g”¬6B§(îÙ“]œCÊ+ôÀmlȨšÚü?yQ?ÿPK xºZ<·µÄ±IAR-STR912/deletelib.batUT ”LjK”LjKux êëdel %1 PK vºZ<IAR-STR912/source/UT LjKʈKux êëPKvºZ<€^ ”g =9IAR-STR912/source/91x_rtc.cUT LjKLjKux êëÕ[mOÛÊþL¥þ‡9çJ(¡¼Êi¹Ð ÇKyáØ¦U?!“lˆÕÄŽlŠn{~ûÙõúuá)µªïÎŒwæ™gwvãìl(.¨éuÐûç_-óô̽FãØNׄ›°A¾7ˆ@¥úöÍ´½ ƒž;e^‡ðßÝï—a<Ø„6ÇAùëºz ´Ùlâ ÜØ |p˜;%á–3´F1˜Q4gCnüµ³{°ÃGvŸY‘Æîvƒ+°hz3n$µîŒ½F4²YÜxCAØÚg³klƒfó¬BöEÇÙ¤d5u«ot ݱú=S·Á>Ó:èõ81àÌè´ cj'ƒ›Ôz_¡eZ(½‰ÏŸÈ"véýžmü}ž›ZZZW;5„ô´s¤±½#ܶL›\h[ý.ZpPÛkƒ}AKc¨õZ;Â%¸° èj-N¾æ¢…ÂF9X"„=G3{F ² þöŠÂÉYŒäö³çÇÎÛ7oßìl€é&sbÕÖ“/²ùO؃?åÄ1þ³Ü æ¼5ÿ|F ±C˜Ã9²ÝócŽÜƒ1s‡H”‡HÏG‹`àNÀ{¿‹ç¡wC“Y|7cC6zŠÉ’E´æùì9Ç8uq¶˜%‹7nè¹W“§„²dQÎÓ4¥ÇEõѶÉâü9çNp¢·öjxwãNæ¬~„=»à Î<¼ë}n³>ÔByìBÝŠÉË®¼ÏT™‘é:óo#² OŒ0Ù|Þ‹W,Qæb®X´AüƸ°CïÚ‹1ËÞ9_áÔIÙôgó8_KôŸñ wç{²‹ÅóÐÏu$Ãêâê.f/1M.H³·oþ÷ö Þ_ †cïz MhQÓí˜Ê•ƒã&ì6êÔÌÅAJ¿{w$î…Ø‰ñ–Ÿô_˜¸Y“¶?}‚ý:üÒ(÷sE`g,zì÷+û6‡/ö¢™ƒÃ½F÷E¸×ªhÜk$½–Çzm-‡4×D ×2|›°¯6÷°5il™¬YÕ$ÁçQФ2oH…Á4ÍJÊÏǪþ·Ê˜ÌÛrƤT¦Žz /Þ¹ÞøÞÆ<9>>¨oPÂÀ;Èu5ÚÔµO]¼'k¯×Wb²P>ŒâÞ*“üû=ˆ§3>?ãß&äa”PÐ>¨×P² ÞÚ*ÑÃ=òe‹™¾+ѳXÄâl7=cØ‹8NÝ!»Æ­.ÖÜÏ_Òñ¼‚vxÜ—5ºO&j[¿¸ÔÎOιSÜÓÚå%Šn=Ú=Ë´L[ ­-›Åtj¢„Ë–`ñs ‘¡(烘¶TT[‹i‚ï´ÄÙšwL®³‚prÅ(µu¬[ð£Ùø~Ð8ØÙ0|Ú–Àmèa@Ì_qþäùÐr¬4BôL¡M­‰Aa;WÖѳ·ÌÇ Üñä?š(ûéÓÞþbµ;æ†*Ý‹u¦UJ‹unû6tÃK*Iºx;ú¹Žajó+ש6[0YrXF}½ùûÎFË‹– ûªŠÔ$›oúuHâÑÔ¡£ª×Gr¥&‡Ç“‹•¸žÈ %x^%Vƒ_ÊT¥¡lƒy)²j%¸ÎÔóç1Si©9Á•"†EȰªT¦D×ì¤äÏ~4óÅ~2ŠÉÄ«X]š¿–ÚÄ §÷S€‹Üϻʭ£Y]% äzõKHÀ©¥Î)—R:,K­„gÁˆvÏzÂGRœZµ‡¡S¢Žöw„V…<Úìj•D×2þ<2óË¡ZmåtzOåtJ¹O%î*'*mQÁ·A'fO³¾ò{%¶Úüƒo†2y­\[4„C˜üðšvAb9™‡¬RŒQï£o¶&üì*=|eKMXÚ‰@lf.läK6ú¸uœ”P˜k| T“uÊz¶jà~ioŸgœP¡òI%ßh ”Ç­s&ÏK'µB£±+·Õ¹@¨!‹J\çý‚A%µ–ÔÈ»Á¥¼ÔD< ÙLr"=¨)‡"·³,tqKÅ(TDÓâ²ä}E0­(ËY™w¿¢%g¨ŠÛÉ|õùóÐ{auÇéÍ« —¤6/—à6È£¸-û%Üæed‰ÛÜ…\MIÕ#ÝmóÅIA£Fã}‰«B>Y–”ÆÇY…dA*ðŽËlçs[ZÏj5hж´¸ã3Îd-:–Kû\‡ HÙ¥Šln.çOÙ»Šnn%VëÍ9Vû $]-M— §ùÓ&Q†&„}fª ÛKpU"kêÞ/a«¨w3ºfNläk_9(Þ¤Xù´K_"¯ ¹¶€å‰†’æššç‰J‰è©J=åúý´-ø–cSÖ.H[ò©*™#xÅ›ªt¾Î®ºR•WrettÜ)Vèzà¼ëEøØ…´HŽG¸<½ÁÀõ‡‹ûY€¾x±ú0K(uQ'ÿPº¿4†×ŒÈZjî°6Y°Êr©ó`Rðï/;Á­ÂÔ™w=~es>è5Ú„fÃÝ„ì}J×d›µÞTDOÒ kþC%VÏÌü(÷óh€òJb[|6þQ•Yðê%V~ZžDz:Tæv²©Çœ‘›V!¯þNƒÝÚ1ß¼‰ï¸šøàu¦×tX“1q'|è©å´’ÁmC‚,%›ÍäÛ<°ï»+G’O–Ë™.¿1ŽÒå¥aüIO]—AQ ¯JÝxWú$|[O*¹^ršÄÕ°~s˜ áx ÖûœaÐû«Ù¶´î‰ÇçÁíc&_Rƒ+wðm>®J¥öçÍqîE^?Äå€<åƒeA>X9‘ékñ¡70ýøžÒæ¿+H:@qÐ;˜ëJH¥gÿÂÿƹ'Ðëicæ cžŒþ2I^Ú¦ãp¡kæ'G×Ê:ô7ƒ´)Šä¾Èë×iɱ¥¡æecÁ«bêˆù¶\ Ò4)¨¬µ›[µÚ)æÀžøsØ$ô=מÕuïÝ>ôl‡n=2Hž6\ÔŸï¿ÍmïhB"Ê"|ð|Ÿ6 :]PæsÇžX¡í¹`2ë‘„»VÈP©„ Á‚MI¸vr\??æÐÚð‘ùõ¨ÕxL|{Ε$ÚÍ;€A›ûÞw{ʰÂ7#m7 Ÿ,ŸÁláN¨kp„º^ù!t·vzþmú, bq–bшÛZë ëQ[û7@lÞª0«†ª›` {æ'e¬Â§[­s š½ánî´®¢wTêýÏ hû ?j]M¿ÎaêØ uŸ4óÝ‹7h:v(¦6Ôa¬Þ(cþÔÆÔ½{×1 ‚ḫŽùPØ6s†òQS¨GÜ¡p@T`ÜõÍòU­3ª}µcއºÖ1À¸Uú}Ї&\«p«ö»Ð×”ë¾ÊU*úgèjc”> ]š.þƒƒ"LÝPÿu‡Ì5¥]e Ü¨†`€£H ±‚N_ÐkQè‡ÂJ Q‰I¶öÀ¸C£%6Tôî± w† ¥«Âõ祵¨5 c lK{‘ZEÓÕ.«h$¿Ó5siK¾¾Gï½Û{wŒ¸Ü‰³ 5uøâ‡tþÓúà—$n<ü²ú:˜,ø[`äÛß)N„ÌÙ”Í^‚ƒHQ›í²KÌë|´0–¾ÌV+(¿[¾m}u^2+ã8Hñ2ôÈ®[ë&|ƒúç<ÒÞß°þÕ_™_á¯LÔÞe³}.ð\½Lu«Ÿ&ý×r¼ŽÃ,ÿÚƒJ¬Qѕ΃åºÌ¡®™,^hÒùºÏ”±‰E¶l 6]¦¹v˜‘ÈÚøÂÆ&ÛrìãlĹëæ Å˜o9à³o˜`0%@è‘„í“[ ‡k\{|°½ÇY0žðp%Ï¡œ–ùmxBõ žab¹ð•A¥vttQ¥1^,é ×7\„²Â6èžË¨aÌÂ…ï®7¼îƒs÷ݳ§²e3]nïÝÈéŽ Y$¡³´§0§¶gaú«+.W«Ò[®ÀèÜÝ+£ë·×W¹¿çRªNi'òðM‚]ÍX‘<ü@-æç‘ú{í¹VûW@ÿÖj°*3¼3#‘DfUDÓc‰´ÈòuXçW/ů^–_½_½˜_½_½4¿F)~²ü…üÅü…ü¥ù5Kñk–å×,ä×,æ×,ä×,ͯUŠ_«,¿V!¿V1¿V!¿Ö?I³ZÔ¶‘ùI)æ'e™Ÿ2?)f~RÈü¤ôÌž–âwZ–ßi!¿Ób~§…üNKó;+Åï¬,¿³B~g_r±GôΠ镦w^ŠÞyYzç…ôÎóé©­ÌŠº(ù¢,ä‹BÈÛ@þ±ËZ4·ÕŠêPk2ñü©í~‹êPælbÏl6ͬCç–ãò:Ëv||#ôX`fV§‡/-OWŸÃÕqÛ0÷l‘2kÙÕ¸K!©>XÙ56L<7´lWX ÿ3³¿-|qÈe»3Ï¿ñWÚR|´l•?q•Wc¬oÕØRnˆy›£7LmŸ ßµ7nûF¶+ö´8.£—oÁ'JzÅõ§$©!ý6gSú\¤£ð ÁKó¾›àŠÇ=Â3±Œ \Õá‡nw ÿ½Zå)Ânñê`NÀ–ñGêþëüYØŸw"GªÈÖHLóÎ/£ß¿ýV±& tht7Ö“ns—"ÚÀCÊÞ9Ö@ø*uxÿ>¡<2ae©âÇO•,Wp$@x‡h˜¨ â®.[%A‚9¿ÒG.múk nþ¤Ò›¤õ 7i¥öÜD̉½öKÜ1ølÆŠÏ¿@‚ïëUYC o&âzñ&ÌèEdc§ðþx)øÆ–à[¯=7Þ~sKøÍ-á7‹à§½S¡·».F èS; SºÿÄÚ*Ë=ùt'+¦œoj£å ±…¤w÷ªK86[*…œ¹ëÀ7@ç–’çͱô3ùu¼O ")Û0Z£…ãF·áœ¹¨Ù¡áù2ªtqµ9smÉÁÄF¤ÿÜÓðÉèK#ÊDG#Œ]šII´,øC2ÙOT…»¬ …}JT‡Ë‹ޑTKË‚/÷ÔQ®þJ—a™åÒÓƒyíÉFçÁâpy†:ý銧¥a+«׫%X=µä†&zRY*UÖ©Ìü,Ëjã¬s™/-U@I>•úˆÕ$-¦x]o蓊fëÁ¬+¢êRºˆ%¢D}¹óµ3fÖô:gáP[°² ˜{>¯ƒ3×Éko€b4“mÞi”TƒGâ=q¨x¬ÄYž³÷*YØÎª[.=¡Ä–Žü 1Þ2Ds”½‰…2mX@l ‚O\®%Þ¿o|©V±2NºÀ?®ußÓº òYƒ/HS#6åm d1®C:ص—vbîzS+´ø$¾+—w¦4xòü©ð©7¹!—jÓåS4¯’a±Ùë|©î>F}òíå)ƒ…aºˆ&šÏ ¸‰Q¿Úaö…⫟Ùì6deŒŽ†úh94vj¬Øû…‰¸;T÷„æ ™›3v|`Û4¶dÆ#F†ÇE’^ôwðf¼7¶(bbš"Jýí51 OÚ„€O.×$çŸM}ãžñõ©Üïg*±bß. î’…¡ã•Š[…ÈòWW1w9¯§ < UI¹Á=¿ëÊ!ðÎÃAf,à-ÂÁçV°(ŽÆ‡¸é¸G `퉯ÚwuÒ;B ѺÍ\žñB\Æ´ŸΧs:"šìV :W$²ûL£´ßgº—8¦àÙ&:: Ä䞃åNá‚üŒ®H½)ËË6:{2B,ýÛà²'þUQ$±kNdÍLˆ‡_ùœèNç§ó„Äž•ØÞ–Ãé'vHÜ£XüŽâXt•¾ûZ¹…ªçÆ­Í7V»ô(EW0jnéTsºž™ùÞ£p¯9ÿÚìF…\ï:\ýþ¬E!•n&¢ØÆÕäT>óÇ{¢«´¢,¾‚¦VV°^V°QV°YV°UVð¤¬àiYÁ³²‚J¿ŸA6„–¸úù»Åyue|€y/;éø?¸åìº2zr/ŸKÓG6ÉÝÙRvM”¾·Á'¾¥[‘Üó¨kÞ»€©»ÌÌð‹>ép6Ú-ýo?•¼å6¼øûcÉSEÉšõd´[)%nü¨0–oäË7³ä›ùò­,ùV¾üI–üI¾üi–üi¾üY–üY¾üy–üy¾üE–üÅR>zU»ÜñW2kq)sÑu’õÄó}Ì=—ƒÛûä£úˆƒÞæ­Ðÿ‹ŽÁ¿cÑQ>|JŸò“;­ºÒ›„Ô­þ6c%¬JMÉíªäFk½öÜëõ:kña³¢¬ Í­ÖÍŠ²¢9)êô¶T”æIQs[EYñuzÛ*ÊJ ¨¨¹µ¢¬ŒQ{F@Û*ÊJ%tX!+:ÞlA§_8¬Ë­/$q㙨‰>´ÌÉÛüù«ªwéôzZ_–ÄÞ»¿PKvºZ<3nH4ÍQ IAR-STR912/source/91x_wiu.cUT LjKLjKux êëíYmo›Hþ)ÿa.'ENÔ8/½WW©DÇH6ø7ʧˆÂ:^•€ÅBœö®÷#îßÌòbdž¼ÔI›J]UfgggfŸyf–ìïÖ h©; ZÃsÛ8í¹ptpð8î€ûIÌBæ§Iq_@ÝÒÍ]èòé]1¨Fþ<¼¹˜ñ¬í“„’¥“8ÅѪ2†Ü÷RGà25/e¨3)Bd, áƒ_÷ÿØ—–uàK­8lÈLø ŸJ%•vwŒɲi_ó€ ðÂÒ ƒ3c"§3/a0Î"ŸVŠ6ªzòAæõ¸Hãäc‡žÑ£#rã÷[n•s¿¬ºxXÌ5¹ÿ,6»=†¶îè¦ ŽÕuÏ[‡³ž¡öÀp kÙp:24ÅTu°Ìþ9(ÆÀÅÅ5Ö;C3ÌSPGŽk tÛÁp»=Ò©ZrÂ0qù@q Ë[?Ulù74lZ®T×A!°lM·åV87×Gy§ƒk ô¶Änˆ œQß}Eh5TÛÒûºêÚ–i¨8=¥ßÓráD‡žÞ× o('}]ªTÌsÐ ¥_á^ù)Å)Õ2ý¯zn(}ДrªçNÐnC$[HÚÏݶ ‡\èÚÖ@5¸¸\êë‚3 U1TLm?w FŽEÓáä|!Z¸"×±¬<„¦«¦®¡C¶ŽAÂøÎD£(œÒÈÛ‘|Tïonlnìï‚“zQà%ðȳ€ÁÞÒùs©f«äŽÉÖò[áçoåþF1!ƼNà*2Lx¥,{>ƒ óL–û £ýQc?ö½°tçËî×8Lø5ñYúqÊ6^Gå’FÔÆ£ubžk,bIœ8ðÄ[™`ÁÄQø#„‰s,ÿS/AÕYA*W†)«¶uñü4Ì4‘&™Ÿf “Õˆ¦YºØ}”âŽëÀ4–´A»{ͺp'/­µÂ£ÔãQîþóË,Éãä*ƧÊï)ÃÐ oy¡4ÑÊÒE;`Æ£ ›áÖÑêÄ“ÇũÊõÖR v—"¶³¹ñ÷æbTÈ&1wËûÀö²)„DÊ÷ ˆN$siØ{;°áŸã%e{oéw½!þZË2©8Møå%Æ ñÁ‚KV(äãV"7ÖIð8ßËæ×Ò›Z(M—ÛŠ‘ï ‘2‹ú “ÝûLøLÿ±P°Fícl?Õoÿ÷éßÜøœ“듎ÆÖXckŒ×¤qÂ.±Ó¥r›g0O¨FyY˜â”`)2w˜1QŸŽ%Ö_Näþ·è÷ÖçŽßå÷‚¿ÅQ;êèBž eÊÛ4ݺ¸ÀÕ¯@7©+Ýys·”f8¥ØWEAÆF$àÕ/ÄÀwq挧­Å°ÄãZež?™þC¨ÊݵûÍ&7œ¡ÄUóÓ ^%ÏÏáļ ÖŸam ƒzЊ9a×RS·ošdn°”èæì'ß<†›A¬^µèÍûWX“.òç†â¼JXl†÷Ÿ”u b35ixY]-Íç}/B”Õâ0g²¤Ìôo¿[ĶÊàz¡t½Š”˜Y’«×X{ v[¨Š™ÅÍa±eQØ¢þH&s’MSxÁ„Y!0Nâ+ã¦û,¿ì1±SUÒ¢–âõ¿_ëb“y}^©Ð…5Z~øOeN¡{nÏv­=_7NY„hL™sf”þÔæD)‡Î‚S~$«BPŸ {PC§jÛç™D½ (šA&C Îk³Ê< Úù¼ª¹ÓiX¶` æõ ®ˆäM¾°;oHoîºsÓ:h·_¾´«9¢Vöú¨ò¬Ì2 ,Üw¥E—øµ•vCï’2=µPR'Ìÿ (æòëÌíK]‰ £À£¦âƒÙÅk€LêB¤ù´s»+/X.úp«ˆTe¶åè.…¾Äº;Oÿ-Ñ7?ÃÕS­E|K"pˆ×–ù,üt\˜¹À¯Iî*¾m¼$"ré·aF5d^BN׃˜f+œý'òŸ²H~« À5ÜhŠWI>íòÝöù›òHšùÑ÷mÉÏpצ>( 2:¤7–@Jä…„nJ5˜£”¦Gìy2îú¬mì‘Hb.! Çʺ#N…s EÌé‘/žÚ7Œc-,(^òþ“„ŠŒP)qX@×”Ñ5Ëéet‡åtG2º£rºcÝq9݉Œî¤œîŒî]’R +°”N‘Ñ•êOIéO©¬?%¥?%­¿ï("%æ<8/€øß7HÚÏ:|¾Âh‚7¶C— S91±%–2¿ÖL8Ø *ó­Þb+ØnãyÜ%®~«9ËtQ…$”VrÅJ4”›Ü“ĸ•r“eÆÎ]ÒÜ¿K+GÇ6Ž%2£0‘`ü¯3rÖ@–Cà}´ÄÓ'4ðôÌ›ñ~iÍg7®7•šx(³;h™x4að=–0-èÂõ¾„%ÁÄPbýcw¥¥Äèƒ<ÜQ‘ŽM­Ò>{>/(-òô6 N¢ËfºË.@´’#æ÷fº)5ÔBëë†"ÛDZHÌyé¹·à ,Žû!'iö^E»~½ÏOx*žê¡³Æ0¥~`;<]•)±ô°£³h4Ïcð#óê16ä¡pK-»º)0û>cÿrc—ÍŠÌÈ]O5`4¸Ì_¶û½›‘ÞÅ‚ÒÀE4š²H‚ ¸¼Ï¡°ÕþF0)^ /e©_žEÆK˜/M /eédž—¦Œ—*0)^%¼”-1ò¼Êx©“âåHÂKÙ²%ÏË‘Œ—*0)^Ž%¼”-…ò¼Ëx©“âåDÂKÙò*ÏˉŒ—*0)^ÞIx)[²åyy'ãå]qœ†ÆŽÚbd’ÀÍ Z8ÊLèã/¥‰ÂÓ§ Ó lò:7¨ºÝbH;Þ¬ÄVµñ!æÄõ€Ù¥ëL©Ä$]’„æ´6´?3ŒÑ°,Û¡xާd¢“òÓ^ Î0 ¥•M(CKôãµ=|žJÐêÏ¢XaTźe2yî‚É2Ίµ mª^`ÐÁ”_Ò4¨Â铵ü¬â*Gõ|… òŒŠùŽò¢µlð¹&üáƒ9Ök¢pÏq˜–3!vj)k+‚11ÛŠñŸ#CKŸžª>ýäG³¾ÅüË2ÝÍ”&š mÖð¬\Y ?†ÛhÔñ¤ùi}÷Å‘ñÓœRM†Z8k(kºõÆ¿Ïá~ìýot%+²)••îÿûõUÝõ?ßý½NýÕ‚®1EÞ€ç[¡…ÛÌ còéÿ†WÒ“+µDkoSC|†“"9µ<Ì”åU|}B›ù`’ÚÎæ¤~,I·»RGÒCå•ä„)r›eåñ3^ŠKE…|cH¼–ázdšxÍ‚çD˸Ð4s½u瞳Ų çž8€±OœH­håD­ JÏ»;]J÷ãx´œîÇñh9ÝšãÑòwÇéƒôÀÄ,ÝÕË]²—ºb6Ö ]úNW†ò; yš="¾9_kÎßJª*Œ!á«Dá}|‰ˆË0YPã¡#w°û¤ñ~íó†²þ¹¨õEõ9ŒhB"f=®ÿnÉó¸ÿç)>Äú[³S–rODû’øGV<°ü¢”MÌ÷´ØQæ‘mVªî$üë)AÓO¹I°žÃ®g½x« ñ„[$Ì Ö1#^Nkàk kÜ=×ë[~0 ·Q¥18±ßÊ>_‰×—vxls_HÏÙHg^ÜP/3ñ—@9üÆg¶EïçnQ¡Ž_;ˆù´YqçÖ…ÀüÿZ’AGˆoÞíò{ø¾ñèÚ«º>Ò[Ñw÷¨çfÝ ÛÑYçˆY>Êá Ýh8 êÛlýœÎyá ïáÇ ˜ÐŸ>â˜C->–Pù •œt(9êðêU-búßÑgëI¯=ýú}ôýD4?ÑOþã[nÝk,ó‰ÍÛW™K•SÊÅÊì&Ÿ V‡]ü¼iOë«ÂŒþ PKvºZ<ÚbA’fIAR-STR912/source/91x_uart.cUT LjKLjKux êëí]{oÛ8ÿ{ ô;p÷€Âî¥í¾ÝMÇ–áüÈIJ{Åa(6 kK^IÎco÷>ÄÝ}à›!)‰zЖ’4Iwë?R[âü83Î ‡”ºû´àCjÝ:éŽ>úÁ¡EZÆkbZCgâ{tA'¡ï¹Î$ E¤=%}gAÉÈ^RÚä]óòdmûáó 6é¬Ã¹çùÓ&ÃntV«…3±CÇs‰Eí%6îÙ!P?‰k:ÅÆW»Í·»Œµ6ùHý)šÏŒ€ßY1Ýš;™!k+ß;w¦4 öbAÂ9%ÇÃ"7 /lŸ’ÙÚ ið°nùƒÜ:AèùWmüR´Z(Å›”­èÞ˼„MqO%ýàØ:ÔÈ‘¡™ÚÈ"æ¸o}êùt¨w‰n’þØ Çz¯3êjd<|&}h’Ž4ãzOî±i‡ša"Ü'Ý:ób7ô;–>C;èì*t¨HÞ;îZ&4"c£§¬+¸7$Ö˜˜±ô¡öœtæñÀÚA[Õ»ÆXh]Ëô®IÌÃÎ`@Fc‹ìkäPôÈ@ïì4Ù}&=Ý€Ö;ˆ¥øèØ™ÚßAr½3 ½Î°s ™\èí[/Ðp± ÝDúÆxˆ¼" €X¨»qŸ˜Ç ´X‡Qo—‹DŽM ;=ìN´…x“+‹ó–è a;úHë@†JÒÙµ0…·“iMÞ¾Eï>~ôøÑ.ðåNkœSÏnüAÌ¿8üûùÙËÁdÍ®2Ž|çýDxµ¢S:» È€„hŽKo$˜@d~F÷{2´ƒŸ T ã­¼uÒsûtAO°Éw‘ûj\öûýÞw¨h$m6ÁhnŒ"9ÙÆe£ÑhÅ8¼Q†! ¼‹#ï‚úP æ%Ù}ÊPØŠ¬Øß¥£CPQ’o¿`¢ÇbÙ%^¿K Ýü."T ÍèÕÚ×b€œö¦ž·Ú·'ÀÑ…ðoú“oà«xdÞ6RXYy3`Ÿ<: îY8Ï cì]ŸH:lJx[gG¶ï„W9 XÊw oªÀ9´ý)ã>˜B×s!ãXD Ë0 NÔ”`["+`­K㲯÷ÇzNi.‘½n#µ.‰qI°1a­ˆû>µîÎm?/37»‘5%ØÖž„`Ùu§ 5Út uˆ Í>þöö™‚µ!Ì%J¿+ë›*P Ëĉ[ 1ðmƒ« Z‘À9sí, ¢èÐ9›ëþ`' „í æ¨el`é¥` Zmc Ô,í –Ò@Å,uÔöq,ŠÌ Ó#ÆZe†,j–6¤Ø7 ¡™àu³ §ÿ s1J1= ·•±ˆ7äññ#Tòí~Ør&˜/iÚÂv¨î:aÁj£ ¸åØ çWÐM´À¸$+ ÍæÔCòé¬ oG€Ü'ôÊñ1õ°×‹š4„±\¬)[•@ºµZ‡ çé²M.ž’K2±]rJIc§I`™ÕBÄ€-Ý’õN C¯C²MFžKñ†AõïæoÜîÆïÜs¦²nkÜeƒõèŒ;ªËúãGÿâã |¡NíÆ*zb³‹gVã÷÷öXÃF¯2BÌîñIçhÿˆ©‚ÖNNX«m„˃úû­ {º™´üÿÐE@sý6KõÛ,Ûo³l¿­Rý¶ÊöÛÊõû;÷a·ûQÏ;å¬Ó·Í9{2üÅqÏÄü"ÁŠNœ™C§…“pqzI™A9nŒÈú7C S©x&>SÏÅ’S1÷y–íº É±ãbhvrWL°VkŸƒ™Û!™@ªd;.×ü˜9gkŸW^wæùKþ¾a R¬ÃïTT.e'§¾§Yus¯ƒö¾~ýR$W ¹îƒôz4ØTX¿h1„ôŒú=ëK~êV³>Ч½HßÞŒ§8ƒ®ñÏ×íW?‘S'ŒœcôÙ¸Ežì¦íïŽ)|b%eúrî.óý¶—UóR‰ý¹çó1CoEö¾…3Êc`CÖNx©øÂIÊ_r+˜…L&äiw˜Æ»y •Ã5#¸HN1M(S²XÂp Ü ¾ùɆ¿µÚÍmÃ)-œŠ†²+?¨‚ŸªÊÉÞ+„Ü·×SÓ´0eý5Œ4vëûô—Ø{­^Ú„åÏ{aØèÙhÑA6ý’âV£Q'ßï‰oÒ8å:H_Ø•F“sôÐKÌÑW‡Ï?ôÝ‘¹ä¦d­ÖÄ®Ÿ’Z¸NvI­ù:¾‘SS¤ˆzÇ>¡Z}ßèl¦Ÿ]ÒlHÓ;Íæ,ö2§E"ƒúŒ ó‹¢ó4;}ÎN >yÀ§äõË:ù+yÕ¨smz#ƒÅkê;ƒl¾j7_™7·îÍëù¬­gðò&^Tdï›Ì½Beû,¦± T±ìïÚoÕ’§á’&Ôy9ÙŠ¼¢`H“H"Ê>½§¢˜„ÝbA#H¤‰¸á—Ù:x«ïf5‘ÈoãQ†Ê8nѶÓB—$¡$][ÿÐûStFôã´À…ã­ÄæòÅ%OƒåA¢OEºCB¡)™þÇÉ‹z–k VYŠû—È7…ÅžÂ> *AqOK.£r!Ðw`ÄÔžÌsû’.OÁ ^8ö Æ¥uµzY}¼’g2/Ì™/€=\$5‚éƒË• ײ2*’ãÌ’\¡yÙOnJ,I>É}Û{¯¦LÒÉÂümSÚCÒ Øx:%hâdh¼{-Ò›ÒQ&êª(â˜n@cá@)Ö%x— ÜIyW…ìk$Bî=›"±Þîç¤wì"ºËi¡oàZ¤¨¤K…ËØ*küõ6ÅD/Ìl«M\z®ÍÌ›Ö2ŠË„Ÿqˆ ‚+šÕv3Q¼ypÆ«xm ¯½`º‰•ygFjÑ5LJDK™ŠðQ‰Æùô .„! ¹BÍÚƒqTòÀÕ³AQJ_¤m¸²q6ÇÇsë2gyoñ¾êsO¡o2ýXˆõ׫PQìþ"ÓOpߎ™IʈC$ðÖþïyУbòíê©$æôyñÜ„œ†Þ[ž:.«¶)…˜y h$¼ÄÝV4—å9Ÿ#ë®æûžß&âa?¹Ê±ýKÃ÷2¯Âì@ø0}T£@a߯bÐ uΩå,)øÂ6¿ ^@ïX Íòm7X:€}»7 •¨{¦Ñ&ð§"U·TÝ^5ª®e¶ žËª&Ÿ¢é[hn! ~µ10òœÅpÝ|5Ûaé^2&é`$ù¹ìBshv“…¦U"ÌUƒ†öï ö®Þ°³!rÅu!isé?".ÙÌž(–ª`uÓP]#¯žYÈðM™Gôé/)Âj£z>t/ÒŸ6ë×ÎKt…ÂM€5“ì° ¾c{ÁCvP? åòŒ K,æ,ŠÌ·ÉÚCr'±=oñ'‰¾’œº–¹—ûr£ž­ÜÃ|ÆŽ¥”4K¡t)òßòä÷[tB¶*.*†“0è/m1 ó,F“",r9ó½%#¼w‘bâÅ‹S#ìë­±q™$F[hÿÜ+in§Š9ÿVÖi™ÅuMj/;>žòäWçq“üÏà‰Ã'¿ó"÷ ¢S†Bz±g»Eã–e0n(ƒ‘•Ꮍ\thøkøø¼1î—}+›ÝÉdO×ÝTÐRãi:SÀQ—ÊŠŽ®—­™]¯ç'Ùž@‘쀆x u¾Š×s:ù9À‰BúE’Îð1Ø-n¹€‰º^x×Å2<¦ž]{0®q‚üWšo°d¡• ]'ŠBOÙ‘­2¬®Õ&§¬¼U4UÙZñÊV5¹¨5cE­jô¢ÂR¶9ßðÑ–«ðJJÌØÆ»X¾_Ô_/IŽÆ`ðREv8Jš›J0†,UŠ›jBí¯ƒ+>[ ~-MÇÊÄ5¸ÒQ©¯a_”-—‡ÛZ.U¢\lkQ¸<”¢4,~_qSy¸2_EâòùRqÚ\Á¸„HéGÊWä‘J#=aÒsòQ¤üA÷¨'€cñ§ÕΞw'õÝ&ëé¦éu ²Ù±õÜàãê·c5øÉÍiª°ì·Á)²‡ïÏ|?´©)[yoJK³x5ŽÕ&\*Èô0Ä ÉÝ/ÅÄB_i9\¹ý`Ç'6t;=°ì¡ç>š#7 ü…ç†Àƒ>ö޼9‚‘s… ½zðNùzqí¹Û.©¡®¢K?€üÕƒ¡Öu¹œ{®yþlä\‘Ê}'BXfF`„á MIåÎëåímYÎP„²Ý¡º·¤BRéö¥ÂŒ´lø×Þ…àÌç]"834ýYôÅ ÌV — Ãm,êŽ/Ò¸/Œüà[|î(;¸¸o Ø¥e¸ KÊÞʺIÙ«j畸¬n`î¡7ö‰§¦né#¬ñ‘}®š:œŸÚ M8ž}u¤é0 >€j -PmŒŸ}ct ÚIJÇCÝ´àܰOˆLmL Œ†UÛÀÔU“ÞÅ “ÀûͶp%›}ݤªpÙì1Xê™¶1Ô·Aµ¨¹aÖd`o+64s¬tÍ6Ç#C³À:Qm8ÔáDôa`¨‡ŠTG o˜¸öÖÅ>‰¸H,ýý÷ÜPÐW‡ê±Î:A´âФ-D€6`Ý6 ‹táÈéÀa 6†SyG`Mð ¥c¨Žú;¬K0±tª}?äF #˜Œò`±!Ùª1Òû¸C¦Ž ÿïp£ÈpÒFGòî­}çù3òßÎ °"g1u‚)x w¾š"xÙú"Rÿ™ˆù!ñ)—?ÄšŒ¸ÄŸgvWþt…§¼·ˆP0s\—È™âIqsˆ&,qà»Î"“èb¨ZÿŠ+w¾*µµû†UªÞùzÄ.½:ȱÉÏ@ÝN±ºa_X㉩UªæuèÂ8^98ÐÝjËOæÚ <çÓü6T’˜„)Í"ŸØ’°lö¬ÃG[®}oØÐŸ"Í_̼Ï+eÞ´üUࢭ¸Â.©DÿLþØÜçȲÌ3LÔé´F^ò7î•xÑ·-øÏógpÓEåo¼ ÖÀÄ( 77ÈýM^;H-}AÀšíàvÆfµDÄ>)ñ=)µhk56pK«"2ïö¢$01PF{tpúÈXx‡£õð yÎÜû/JYYì¾ô³&â¶#Ÿ”yñuÎjá¢QU+qæ+DY~ËU”§š#hØ]Eù’¬ÀDÑ*XT îöƒŸšfÃÏŸ}'ÓÀÒ&êÉá)Âui’Žn\\àº[À¼ßæ>m¶2VKZ $\…°Zà0DO“´Øù2qUiLˆ?›QA<¨Á£È0ßc­B®Ùà ÔZBZ…~ëƒÕ2†?€]zø«·øÌ·†l÷ \"×›yØ›©‹ÕÕ',K¥:h˜c·Í59šc,w€(v|Âdd 3>÷¿à†ÄÖÙãŠÁ×K8ïÇ®6ic¢¿S²Î3L¤ÔƒTshþ’à  n#ÈæƒvëA˜“wÒ@¯A ôºÔåƒöA»|ЛzÐÄ:<9åÄÛFЀz×ðpñæ[„Ò`úH·¹š”“èÕ:U 6¡©£:TƒQ µZ›m° µ¯Õéj0‹‰jÚþh4ØA)|T“a`T—j° £«ÕL¥Á40ªfŽt›¼…uZ£«Û`U§«Á6gýšçÕm° Ó®{ÊÝÛ87ê&J·Á6ô_l#5Ž"ªÁ6(Já¢lƒ¢º\TƒmPÔ.Õ`Ø×œOøžºÁ6NÞj|”"ÆœìBt&Qä4JÇA:аaé6øYBÑíÍ{Y•8š;Ÿ£¨PŒ«OˆØj·Kïq#á”}rÓ›ÁFV~âeË›¤âw–ÒúÐyù3΋à÷LâO?åuÂ?âÞ'©PÀ†ßÚg·ÐkwÒiŽ”'K×­ózÂ~Œ( #î@zDDF×g˜ÈS®ÍˆÛ´H¢$­ç€$­Ï@’Öƒ¤õ<”¤õ9”¤õE”¤õÍ´ž¾…äsÚ!NùùBžj¬?] €Û=²oM‡k¤<Ù$€¶ó÷;èuUÊ“MN?BôöÍk÷ýÜÚ}r6 8®‹ÂžÇÃäð÷z7¹¨ û8®)§_Ü%ÁOÕóÆ:h=OæÎ)Kö©"îQXûimeÝÚ¼]u™¶+øüQZukTŒ÷-´U EdX¦:­ËÃÙ–9‡ö”XºË€xòEÞ5, ö ‹¯åÙFèDvÌͽÏ4òÌðLñ!dÉßÍ_Ù+¥êŠàd"³R-ŽWqœîöÂÓ, ÖåGJ'ým‰úhFãÅ×dvÅ6É­—?Ÿ©æþƒW[:£Œk}Z¼9‚Lšc`™p¡8 ÄV)Wv8 ¹²“äÊÈ•J®ìäPre§ˆ’+;IŠÆŽÖ¬¦Mì~‹ß´T.#JB§Ãâ$Ìÿ :äpIåõ6þà1¹—ÞçK²+‘Ÿ…÷Ý\ËO#-75ã ܦ%ìvéÓ><‘äé¾um>ϵ”†‰lÐL¥3Õ3ÿoÐG²,ÉêfIç~ÍÉ$…ôðe¦¥1ƒªÒÖ4™ªl –¯«s@’Ðf IhAZJÚJÚ"êoHhÅV튑˜¿Ðt·Wqñ.£5亮ccÙb_ž”1ë¹WS*0þ—Hœ•b é$Âlâç)7…I¦%™–dZ’iP’iåQ’iåQޥç·’'þÃHw±§UÑâ]ÕßöºqANLÖC¿̆g½Ã€rÛ)J2BH2 $!HFÈCIF˜CIFXDIF(arq×És–{åƒßo …ñ^Õâ/¸î¯Ç$Y;Ö9õ¦–GÞ ¾‘|6­M>Î&Û567¢äëá­ô5xö銜Îã,¦Åù1«ÙÀ÷²BfKß&KF›‚$£Í@’Ñ‚d´<”d´9”d´E”d´,ˆ’ÊòDË›N´¬ìߔɻòoɉ¯‰Sƒ·ÜÌ üâE˜沃üks®ƒyy§Lty_iYw¶Ÿ”ò3óý f¥s\Ì“WRÓëS€œ_ãw…c5ЏÂèµtŵÄPPÑn+E¶¸¢WâŠÕÔóº•EXÏ^+=]a=oZéÙÖóV\OL›½k¥h ®Hiá(?oÒÃUÔÂ'0J/¬©…_ y€°¢~¦ŠZø…¡ÖBO ¿@óaE-CœÒ«jáâ÷qЦt–Ômî/‚U S×Ð [G'â7•¢m¡ä¢'_>¢»;»; Ô+ôƒŒ²jÿÙ‹0ßr‰oJµcò&6ˆù U…ô~ÊFlü™$¬„ˆhSÇ·ù‰È"}á`HÕ( S_ô½ä+4ï:½ÙÁµJÌR—_3+K%)bZzs…Xb–$3JI¬KòâNO9½°Ïˆ›­¦Xä…—]¢¯ÎHöÖöL!O+Ú^à¸Å½€ÿ§9ïtw0eH8a±@Ì®°a4"SxY 0Wºˆ¥AÆD{ļŸfi¹ç2Úp‹Üï…pÉ  Øñ[$%sD¹õÎõ˜x`eÐ6˜QÈhÃfi‡«/»0ên">Zôp-ÿæbjhl¼7³³¾»óçî̾î>Qm8¦pÈ×Ñ⮳²ûðº³6\ŒÍÁâù~xx• $Sæó1g£Ê`™z1ÊÁÅæÐÁIã £ 2ˆö_"Š–×þªô6L#N¥„½ò~~̺ UH'^uJ€…©ÇCé5ü2æWY,gXŽ£øZ~ÆO‹>ËåUƒ~×)ñXB¼¯pãÞªëeÞPnðqmewÿs¹ÞÃññBý¿ÐCê~uâÉ€«=8ƒž“\òôˆ”¦­…Ìü«éh"TqTC„ä·Ãf»õá÷J wÇk[ÒQµ\ØdfŽQÿô©õA`<Ð?,HØ‚¡ PæÅ›m]RñBãIa¬€nìQÚP‹„(K%Æ£§¡Ç1ñü4Ä÷õ§¡Û¶ÔoÃQ”aŠ£ÈÕÂÓ÷¥_6Ù¸Øì×Â#GPð?âûÜõönɰ%¿?Èñðe×c_ú„º_.¦ô+8Eõ›—òGš~¹®oQZ+ àí„û¸åxGDz?dFßa9œ;¸¶Eíñd‹y*÷9YYê8¥ö).á¶©Zæk}¥{ZsJ§³C–„e‘+ý”¼¹Èÿ MNYÚ ¼+'õÒ,©ÌuÂü¯ $˜(ÕÍÆ<:VtL¥Õcòlù—NeÎ]OÚ…nr0Š!ªOFTH¸Ä+Yw3•0… K”(¢[šeH¶×-)sÓ²ÛÀD´*O䳆n½EÑôÙußoÃ\:â¼ÏícŸÛ†Ý>‡¥ø>^ ÅsCÁýôä¢ßBv‹™M÷b4£$jŽîÒ‰Óëš[ÿ&ï3ó¨® õõƒ\ö±¬ê¬jÍ'aÀ|È=Vøjµ¢9»cÕºN0Ò’1çºq wŠÍ¼©?ÈÿfݹD/‘VõòEÍèZ¶ Øz…¶Ñg­:¯|çSK'ÜÕ²F»‹w> ò5÷ûW(\Bº¨U¤ÙÁrUš—£5Yü*RßפSÒ¶E£‹VTžefx —x_ÿmëâ@D*=Ц2a¬œ.yÀxò±ëß.ƒ¶k>hS4{ÁÉ•d¹q/»ðH³×{sÓ#Z‰9Ž]~,“±”[i•^¦rò[žN(}°q׳ÄÅŽT·D1¿?æõ»¶¸__˜ÛüñT75úóNÇèé¹ïþPKvºZ<®ëUQ6ë‹IAR-STR912/source/91x_can.cUT LjKLjKux êëíiSÛHös¦jþCïnÕ–á° 9’LùAŒ$rÔTж ÊÉ+ÉìÌìoß÷ú[RK–ÈЕ ¶Ôýúõëw÷áí§ŠB*í*i>úÁ¡EµÚsbZ}wøÎÔEï¹£¨šþøÃSÒu§Ø‰ËùWýêdd{[#¬ÑœGç~@ä²GúíiÎfSwdG®ï˱/°rÇŽ€„ÑÃpríÙvýå6Ål¼s‚[Ô·j´ŽwFÄЭs7$Älø_ܱ{:%ѹCÚÍ ýIti™Ì½¶ ·Ô DîÐ #?øº‡ŸaâEb ñn7;À:—7ø[ÀØ:ÔÈ‘¡™ÚÀ"æ°k½oy¨·‰n’îÐ Çz§9hkd8è}$M½o’¦m†ïôŽ>8 ícÓö5ÃDpïu똋¾Ðмߴôá€ÚAÓ O¡CÝÀæã¶eB%24:šA»‚w}b ‰Ù|§Kïk[”Ÿ C`÷¬ äT½m µžÖ¶Œá@o›ÄÐ:0 C"éôÙÂ×É$%ož£·üáǶ/o4£Hm^» ̸ ù»ÐçO? Gsú”ö¸_PKD_gÎØ™\ ì_‚Ð\ϹָR/lP£×#ƒx-Jˆ¤Oq‹U÷¹ºº:Ñ;'}óí†øÜ4Z¤DáSºxtýà‚jݾþFloLšÁ©LçÎèGÐhä‹=Äú¨³áÁb¦Ø$°½3‡øj݋܉‹À¾ØÐø ìÅâñ™Àó0‚~í`œ °r®"ÇCc½–¯<ꛞ™p.4šƒÏG…ú†DŒ'€põIå•Êâ+Ù$rÍjµªSš.Ñœü“HÀ«(~ZWÿ ur.´L`‹O6þ_U4AMðA¢É¢‘iuNÊ¢2¯?¯V*I<äÑl$c«]½èv«äÕ+ÒñLtYL,Úer=ŠŽ’]e()F’~QŒq†ºLú¹ 탕 ñI¯ô—ùÍR¯Ë¨fú:\ÖW†Šúûƒ¬À€\ã#km§š‹%nŠ,c‚bŠ`_«QdY Š”@.E‘$ž2KMTl&˜U9ÎDûC¹½J(î*À³&³{†BŠ1d3‘‡¡€‘ÀPœ¡"æ  £hGÔ,Fî…ëņÛÁIà_ȯgvF ¥l 9ŸœÅJ:gõ ‚$ü|¹ANƒ¢^¡ï›uŽÏ ªê †:k¿dªå%`â7;ôÍsö@‹;ÝxxÂãùb®}:½Ž{È-µöW4ô³ÀÙdƒgI’°ñ„9%LiÛžE[„¿~"¯ÉïÜrtFj"ZÐÇëB,S;¨³? BÌ¿'¤eQcOd¢×â»ôß3#€äh¶w ©×jä7» ® ÿÕ)ô]²øóŒ»9w%ˆ; ñl)Ä]D„µCÿÅ;/bãÙGòrk‡,þ(!Öð`Zëm0y–5ƒÕ`ëâ¿<eˆ„X'}¡ ÇÄ?÷Sl("{LD>† +3$ÂÆŠÜ™ï4ÈuÇÑ»•/>ˆù¾²»kr=¼ÙBS4‚Ì×ߣÔï8ºçFå]V—=xà(מºÿ*‹$ËÌJçN`O%GÔ¼w µìù4ŠfJà„NĤ4Ü*›îÍæÒ öÈÀ÷œü&ËÀ ç‘ ïºà 'šqšêºàn¶÷!_˼ÁýÇ~G‰ÝFôqJÄü¦¢7ªr Ö4ÛÇ'Í£ÖÚ¦rr-6´¦aªûñ ¶Ÿ¦Å Éâ°€wÅtE.¼Žn&fà10þd#ªb­bö-B–#fz±Ù£‘ŒÑ82!#áÌa[eFBWRšš!èøTÃyÂW}ìІmã¤ÝÖÀÿK6Ú|C_Ò¹8Š #d:Q‹9XUCþnQ¿çØ_œ¸ãÔsË Ï×+Æ iDìÉ“"†ÈfÀÜé4$Ž=:OQŽ\8§ —ntNÜ(” ÞÖ“Ä%REJ‹Õå¹ H,gÊ% JN²0æã•„&W ¶žÐ²>_LS9nê ·D/I?2'¹®ËB ˆšöóªs¶§µÀ×­¯Ÿc±,©ò@Íg!p^ƒ!-yTµÄ†(ù›7Ý‹íÓ÷ð˜¼ßÚ]ÝÃÍ–„ ,ô.Æ.œ¦’Šß|Ó² `@)@æ•>íSgï2pqå—PTôÍbçX–q„Àjû„‹9M›bMd×[ö|L äº#Ðv#{ Z‹Foëf~6ä•"ù…·ÁÉCU:çÞ‘¬GÒð2¼¿Is8u™÷Uú9»p¼´387lVBûb†ëÛ¨ü·”úœ°eð¸r1Ȫ7§¶çÔ‰.ǃ(AêÏ·$Ü2…áÖØKbdO¨éI#”î:Á%½Œ…=£ðó%LÂWotŽ»Bæÿý{~1#ïÝqtžACô§š\UÉÁkWMðMÌºí©¸<ÑA© ª5vË{åL!Þ¶:d"Oµ!O—Š ö‘¦M©² f*E¹4ݺŸV‡qªôÍ̲ëZm}œ³ZyªªÎFçL×Mèþœ @/6 í3t­'öÈÙ tiõ Íc×¶df¦™3<¡*5\s†¹u'pνñq¦¡C·ÂÈùiHΨ€E¥By/ì‡gÃÓÏ¿Ö>mµ ˜ŽEoÆIëØüX%¯ÁJW±fØè˜™›J‘ÏB©—…R¡ÐÇüiã.<Ûco:c6€X Ãñmžaà¨`ÿô³q—©*ì(\†ß/Â3hšvkûI¨Œ»6¸è`H·SÏQùk‘hAà&ðßÂX@Od\¨¸—g8±l⨶fš˜º⃹©ÀáË_œ¤Å@4Ã82Is Ül¹“¯à.jMؼ AäONÜÉë]“à²ÉžQXÈo•ÊQƒÊÑï a¢C¦õ'‘I ³/ì|:yo$§üWí7Í·%«6VÉš¸CÍöJÖî4­fs…º­ýBôë,øÈ¯Ðr«4—Áh.‡Ño/­ÒYÚOgÑQ^ÖR-Y5óX£N~âü»Ïò㜹àÞ…ö¶®VÒÜX¾M{[r}éœØì64x¦lwŒ9«t7‹mmtã#®‹SW #Š0?g¾HëApï…nÉš‡tc’$aJF’#ÛChlþtê_ÆÉ°Ð2À él[¸o‚TâÌ‘ÞÙ õúæ©‹é¹¥Íq¿6—6ïmÆ¿hóü¶¬<Ï;1žB¸%ÃÉb.Æó·gD y4£×6£ Û%f„MÎÀBžå©(°ÆØ>ô;:›¥B»‹µ›XÛiæ¤ ç6ÿUŽG‰üÕjÎkæ8I¦ÛU¼kІâD‘h9¼h@Rqnhuê(Žõ”Gk‰ë¯@S!QQ³d@`$‚c”<ƒ‘Öäg9hÀóÕÇÈ¡D)ض ÖÉÛ‘ÓœNΉ-l…‚¸j é ‡‹%£´ÿ×GïíF×̼%ÖI©=}͘=ªŠË¶-¹äÙiÀߟ~ªÆJ ³ÜãÆO×ÈŠ†3uìÐáqá“%lÈk+£Ôó|ûYïG§sýNg’…îÓªe»gèëhБ¼.ëƒñ‹i ´÷à~å[—ûj9Lˆd…p¬ÆÆÙ-7¸‘F¤ZBzï Žv,ÖÅàî"ã„ÌÚ¶s•Ø—.+£Åk~žƒtÐØvP,TrXÊië!iKž¼áÛ²*CžóõD¥1Ó&¢Ò‘íÁǧbNåÝF%6å©õ,$Õ† Ð^“ÿQäP% ßr½´ý€ÙcÊRòe"¸ARp2øbQàO¥ Ê2¢ „œdBI•ÇZSªœÛ§Œw>Û|/6ŠŒã/é9Θ§ádf)3ä¢x½Tü]:ô.uçܺbXòO9è’ö¢qâÁ¤0#H–$ñrM{9½×®´Z­Vå¡sâø?—“Í7ú8?p¥,s1‚Š; 2}|3úŠ TPq S3=àcì¡«ui"(eÆ\zÀl<<ˆ;ìLG9bÇ£Uvâ>XŒ_ëŸ^½¢÷$×>eý†ZÔªí¨5rµr1z¦´›(£j@Ï?­¦œîØ2XªzE‡Hé šˆj6PCðTøxk}ÁK¦lÔ¿Nw#<þúÎV5¡  ¬ÆäòÜñÈ™Ñ=ÛËV:kyC=óU u׸R!ºÏ[0*ïFþA¼Z3Λ%Â|Lè}äÏ\ÞïCq#QŒ˜(”÷!¡f`i`f×gÊÒžð$éâŸóB¿òo4rïmÙ²ÂÃÕÒQgÒ}4ÔpªÎS=í<­`Ü–óÉùU+BÇü¬ £iFøV¼´ µJúÈêƒßà#³Ê“ ßì,J^[ð‘Ö{ö3U2Žïï×.u»+ºƒjØ. Ô‰XŽDuŸdÛþAF5Ó¼¼-ª^UôH[©›q7¼LvoTãE—”]>6®DsáCÒ£RÉú̷ñÎÁ5J7D?q?Û .dèCK Ð˪¢Y£ Ÿ†ªŸ‚~ùýìæ÷ÓRŽçY~?­‚ñÂp6OµK¬ªdî|Õ¾¸™»0=ªdlÚV¡å3>ÆÿÄýæëèÍ–Œ†I^2Í䈬ĉ¥™’^Çoô­h¸v~OpÏJSU¤Èã•;Á1ëRã)9xTä×)ESW¥È‹y„L£ñjZWƒègØ%]½§ñýPKvºZ<;\™"IAR-STR912/source/91x_wdg.cUT LjKLjKux êëÕZms£Fþî*ÿ‡N®jOríÚ²ë.ÉÙµ©Â€l*ò¶k?©0Œ¬© P`Xgï²ù÷‹¯{P­ã—løb‰éyº§_žéùè ã>}võÁ±..=8¾×›ò MXÄ‘&12蚺¿wc1°ýƒê9…ÿ:ï’Ðr±LR¨?§0Õ ÐÖ눾àI óW$lø‚!fš °²,g! þytüÑ´ìnXšÑŒãÑœÀ² åk R¡{KžÁ‚,[§ÉG² ü(±dpk\@–,ăŸ2Xäq@3³C„z懌»ä™HÒO§ôqrB‹ø¾±ˆ“rìíc}‹‹½K®Ó5mÜÙØ»Õn/-ý,Æ3.®-C³uföähÖÔÍÃ9³˰ì Я]o65—àn-ï“KX6NŸjž5³Á1/4G¾E…–CÓkÝsQfŽa:RŽMÁ›«Ý˜àYSóPæ*D÷zâ½¥LµtgfNLÝsf¶¥»à^j“ Ø3ÎM¸4'L,í|bJHÍþ†å ô[²lõ•¢™¶kþûWni0´©vaºj¨íФÐÐ'jÙŽåÒÆÎlJ¶ ‚xä»ÙÜktZåCÍ6ŽÔ’àÚ5aª&œØx‹fРr–²mã/‚Õ,Û4pAމN²ä;¢aidÓ“ÏŸÑGû{û{GhWD9•Ô»'?„ù7®ðàÛ’5–ßn¿Í‚\¾EíW)ÿH!>­YÈO1‚´×ÇìI«R>’¨Ä3fB²=Éc<,Móµ€qä߃\z¡eçã‰v17u€Ñ¯£ÑèøKpRöKÎ(·¡,O5¡*0Wø©8rE²†€YÚÐÕû¹-`NúD‡DÆã±Qé)]ºòqyZžl食rÿ.zJöˆ»GvF>E?fL r”3ØRWn´ˆ„rîÑŠ{Ÿ¸Â|ÖGîååjÕ~~*#m0+æ¢c«=Ҹñÿ _ÊÝuÍPhÉR?BÏ–> ó”ªÌÏ#‰×zj;2RÍ:õ¶ÁNbF³\ÔG6y·ž÷Á|LxXóÏ€¾÷÷þK¡põë¹vu~%]áвó9J¿Ó¦½hxpt°å­<±¥´ÌÃ]0†åöâ(„d±P û{Ÿ_ _úÆiˆÞ¤Á†1ª’eNb–•TžÉ‰9öe+¶ºCWàÊF_ÅÄÁ2Lî!Íã˜Ç÷°JB¦ò¨9ýÝô}Š£ðÊs¯Xz¦j  œ%y0¢$øºÕÆB®~¿ýf®­ï tH¤WÌ3?*6³nc72ïi¿Ú˜Ùĉ?Ü"%$FòÚ%Ö[\V‰ê´àA’†SEÆ­YÀœ…)¿öSÔ(É›ÇzUÞø’¢ûÒšCx¿»¾ƒ$>aà—¿ÏSudäñ"IWê3~êØ¾¶âì*Ëè*K™š|1èJÀF…t–ÈrWw½ =ôn&E úYñ¡(L•ð2åßý¨;ð¦¯ø>«ÂaQÆ:Q Oß(êQñ[[…#Øè(ÊS/®»©â²»¨µnø•SpG/œõ£¿“åÝ~³\N=+mï  "ÍmÖì  Iî‹Pƒw¥ãv„†–Ø ö[ ì6¼oáu¹M_…ÔfƪïÇJy¦>÷”|»mdx–ìbö€´C8¨::ÖŠªñÀq¯ï$%ÕÑ%eö• úpP:×äÒ+@¹ñcvª\jDHÙ9ÚJÈŽLD„ g­­+&ªä“çH!î>ör‚¶!W‡;NZªA‘&›óB¥¡Mõ£é™ú¬þ”I¿­¨•ê b~?Zù›måɺ®»§æª^êñN“Š*‰æ'öé†Xèøl÷øÉ–Q¯Ü”xŠJ]½õë©7W½Õœ©jn—s ‹4ñZ¼-®Ú¢ðOÛUþÕµ…Ã{K½Vé=)·IV –k×M-cZU¤¼mÚµõ*ÞÆzû½…ýºÙ|ÁDQîùŒÃUÿ[©ú8ÖÎ/LZ­_Á0ÎÔ÷lמ†¾·p¦ˆš>}òzŽkÃк±!¾:ðöÝ$tn^M‘B^…מé«¥ òré:S+t¼˜¶uƒÄ]+´ O?A ‚•=CâÖßOÚoO¨dxoû¶h¿jÑv0õ%es7¯æ(ÙÒ÷¾83;Ëu!¼¶ÁÔxóðÖòm˜¯Sl¼"¬v|¡pNzþ×~&JH*ñ[F )zö¦¨`›?+Sþ$6/TUCš`è=óƒ4Ô^Í5¹]y Ÿ«L ìmDQd ô™ÚcÍ@zc}@ G8˜¤9å×ã’-¶¡<ìž0•àÒPa wUx÷1e-Ò‚ñÈ‹™phÊÚPí…Æ*1ùܡМTȬ%wè“§Ož>9yÚbê®Ð¥^n}!Ï_Æ~Ž¢ÆõÏÙžÀ›ƒG|ׇo¶"Ní,BÛŸ[S®mkF\b½(ØáØ÷¦– Î.4àG¾ócVøuiÏìù6,s 7gao-#å‰Qï0°‚Ï$˜Óû¿ðÈÃÉèÃ`2?’ݺkµÚ­,•>QIy*¥=Q‡èr1R½Pu5#EÖºëõÞõòT’€×Û/IÀë·^^K½ÿ¾ßžªkA¸µ[yn” ƒ ™pS{BnRž›$â&å¹u‹Ü²Z2no[ynY-Õo½"·î@ž(}U§dS8] c7™æ·säj¿X¾c}r·q®Çh’ƹ<ôÐÏóæµ8nÄÿ¦R–ȸµÖ»½h‚™%i[[8¡ ê>p,×ù/13†¥M“àKâæÔ[tÐk1ß¾"É ÆÞÐÃÄÊñ‘[îê`³VnHÈ;$àpW6M¶H7ËU˜¦$}Ýuà–ôdÃL­|"võ½ha¯ñO@3Ò(t)qi7ú*L÷Ó¡·°ñÁØWþ¢ø`·Ó/ž3KÙü?šÄ]2YùOŸ8ó#|zggØ u|ŸþÞ>>FªoøÀP.'òè݈ª;FëM&تýx8>EBý[ðŒòJú·€Ì©s: |Ç?¶Ø5¸K¯…Ü%ÆýuwüG( T~—‘C¦ø0 *„ mŒÔ/'SÆÎx\ŒH©Òž˜läÆÒ£¹_… S¹ëöÚ!Þ5ÐÑ8êÌ6ðÛIvcÇMFâ(¯âó¬EЕ9xRw_þŽßÞ,µFf JÁµ@ù¶ jÓKè×›~žÞÊŸÚõéÕÙ•]S’+jÃÑ¥ÉÚ¬¥×yÔnÀé¥ô#â$ù·ýšö­HHœôí/¶;i7¤—êГØêÍXƒ&ò,®Âk"P3zi=}oåº\¨œ}ö÷j'&éÌÄšN=æ,®x6ÁÒž:sÇž‰“„(ÌÑʧ#qìJa; Y¡ÝH¥ñ¶n¸%]Z¡°?Là,‡d©(ù2w®V>+À9‹¹çß°ÏäS #f“ÃɶRa[œm½(ØMëá4æ,¸V2ÌðàHä{™X̲=²zûS°tÎGR(r¦´s–^¥Sg™†§e¹á¢Þ-,÷„äy¥ìîvê¿Lu<”û§Œ¦Z îS»çê„•ÊŽYûoQBpYÒwt^›F’”É’°ãâ|gÿ‹ÔñŸ“´³²ƒg¹zr¿Ÿëa]„d†© Ž‹$3=;J}yFË­ßWÏh§,É®£©×²4a--. Y$ÉÔŽJ³š¢ëº‡Ñ‡Ï)o0ª×=‰ZV©´Nt7^Q`¤Â'XàªÒœ [Ïé~Å›Ž.õué Ç:¿S@{ © ­N#âïчØ%¬žXeá˱[ÐÛ° PgiÅ@_.½À iÑ5±KŸïÅ0)m¤Rm*,ó“ÐÆR™£Ÿ|Ûú|ºÎÇù 7õn–¸4½¶ b™v˜‹8Öi.äáPíOÚ)@—ÅÕl*Ê­z¡_ÔBX¶è¹9¼òeÑ"§¬ëñÕúú\öt½’Åמü駢ع:ó¸O8¥ª´;‘´1ˆ¤† ’ªATô l©{; I•*€Hª"©ˆ¤z  žÛaØEÒPTˆžUà(B‘8%(jnûmÜ~³ñú–Êú±*OkŽÑ÷õWE©*…!ª‘À¢ÐÄT ½nr©èT4±ÔºzBYkæu‘¬ZâBk(± |Å× ÿ± c:\'†ÒXœ ³D®»òi5„ÜX¢¹êdnÛ§=E”ªkÍiY¤D[¡²éòÛá§T)uEV«Ö9ÅX ^0ÕX/U0è®Â¯ |º6ßVH8m˜‚¸#¬K¯K–÷Q:S¥Ëš§ 5>Ó."Tm¶jÕGÛxê>µ¶{=¶ •§!nÅc½…®==V×Å¥®ÎÖʛ߮8‹Æ®ñŠ>×fy§ð<..‰oíáyØV°U9:¸ÔI‹Rm²È«ç{¼R4µ–´¦½ÙJ‡¿ÑRû‡-ëleÔf+ÏŒQë,=S[u)£Jµ´ŽÓܨåÕ¥&F-Åi…XRѪQ›þ…=¿ñó+üSÚd¿;©Š·ÂÝBåf&ÜOU윞çÃÌ Øg4ðvÂÝÉGÚõÜ;ñ¦$ÛÄ\Ø·„VR¯NkðJ¼o‰/Ä;À‘ÜÞ")y{®ëÝbRÆ!u„lèõ’Jg˜òØì€Z>S5tnè.P…™æú°¹·Ü 5=åÙŵ-¿¤ùãoËÆ›² &˶f9…x@tÄ&Ú•Ê?Œ=:ެltJ³Q-.ëÒ)NúHÀˆG ay°„´«Â´4ü|p&ÞT膧0ÌPwó½UˆG“ÉÇU`Ï02D{¤vâ¶ËxC“:žùG$Þ,“hÍoˆ?zŠ­‘R9½^åBø¨“Ôâ«k&ñ•7…ͯsH9÷êm–2uX.Úï>ãÞ§ÙûQA"jIýéûq~n‡qçï#hÖFú•îã݇Áx}t™Œ?Ú8‚ £!>Sò™¨)ˆÑcm½ÞÞµ¡ù̶%€øÄž˜ù0ñPs·¢¡ý«È²uÁ@fÛÇ]Sl6Ö _l¶¥âîöÊ¢!1qM,hJûѰ í Ò…iXšaAÚ? 2£­hQ¢ VäÍ þ#¥À «~WéöŒÍkcûZ–ã–Êc¡È“\½½ üé:fx$€“2usŒ¤4#j›×9ÛÐÕ/òx@i}LA>9Yd”ømùVT틨ÎÎDC“^·ö(¿ÒÓ̹$$ßó"¡çZWFh…«@èÉʵ=ý 'Ò·Ù3GìYr7' ÐÇÑ·=^øè.:åQKÅÄ5<*´/wîõåó ™ª;¹™D‰+î(jM.R©>SGÑj›þÅöçDÚjµÖQ“\Ù@U)a“èÒl¦Ú·F®¦JaG†j".鉅ã™»*:•°ªÀ£R%A‡½HKßß|–<ÆèÃDO>ûÓû¥Q†¥Hö\ÊÇên4˜Å¸‚OƒøçmèP-­ó+KôVç“„Ôãÿá$N~ähòðû ‘cÔ ô• Ü*‰ƒ;ÒÄ‹3ø3zö‹B|M¥ùbà*sZƒÕŒ{/¤î²0—ýîöÊ.cÓòZ0’“žŸÚ ì´Û‚”È{AíïËCšY±§¦D{g|Ò§“}5Ø_-C苤¾rÐÌüDÙI^Lìˆ`ÓÓ³}Íþš)šûÛì'‚òF\ÃH4÷nÆI”lÂGHªVÌJ8 kd%AOg¬=¶Á–¿š¹ñg;þñ ˜t…*g¥qøNºìÜL9‡Ê”¢€R•(iæ‹8Y.[¦‡1µÀJ߯u3j±C_j†£âÜ1Üó>O¡º¸Ã·†ÿäÔ²ëä¦ñ˜49”HŒ¿gx«)q ADN屘õº¿`Œâ £q΄ëxèŠÜ.â†LL½‚rF߯ªˆoŽÉE—Ø?ªÂ ‡!?H-Çèo†±wJ²ñïv§õø„¿U™^˜¥ÏYe~Úð”s1Ä<2? ““!â|W÷gyb Rû9Mn"@èØf2ý—LøYyÅ…Ó‡Ÿü#QšOú™–æŽâ#–õ¦wh4¿§¼…‘­Ù­ázÔ†[vÍžM“ß)W‡]ü=åžÖW¹eþPKvºZ<ŸTü^`²IAR-STR912/source/91x_lib.cUT LjKLjKux êëµY]o£F}”ÿpµû²mã€c;qµ&6’pÒyŠ·P¼ú`éh›Í*šI¯ÁƒgA"çv—€¹Ûíï:-å¦Åõá>ÜryÅ;„»ù6Úp’œÝŠv°$g›mü-«lBD>…Û`µƒM­¤:?ÙÕ‡h%Q°Šþæ/Që/r?ŠvI¼ýÞ§:F©ªeï JU´]—3 dmUÙùû#—yÌöÁsîüÍeð02õ˜Ü9. §¦¡Ù:Ç?‚fZh>öqîMô‡ O=ß±˜ëÁƒéˆSwxƒicwKóMÇ— 5—?EAÓ¥îÆT÷=ãÌåRØfÝ3ðM‹]‚æñ1‡Þtì¡¡lê®ÃÆL÷]Ç6u¼‘6ƒíø0`0bcƦ63N©Ù`˜.¢¿ VZ#FlÒÛc¿M1rSƒ¡YÚ¥AÚä…ôq¶kzÂëXdJfÖ/!Np–Ãs¼ØãÀçù2˜‡ð œõH Çñ$|‹ø|³ +6YJðfŸ7Øu ñ:äká>)¶›Ü0Ùoײ¦÷½0Á/q´HþDÕÏçgÿPžOe K“žŒgþÚfˆ¤£uø Ÿ°˜ù8Z lºøLwÍc¿"<\/¢%àð™qîÖ› X˜éOÁz®®2/ù}æ)»=ò&@r“y3”"MÊ‘œò5{Ÿõ¢ÊiQ¥ZT=UákSQõ´¨Z-Ú>mCóPÛ§UÛժרZ¼méõiÍëjÍΡf§yœÓšã¶{(Úmh÷´h·:ÐÞ¡f¯¹fï´fkB,œ˜äÌ2®2ˆœ ‚õŸ|~ç78¹E½`4o–¸ÌÛ@ίù_gó Ù<ÎÛ*TÔ¢Êëô=¡"›¸¯rš²y½‰H>OA¢"fiͺ­ÚdÐð­¦`þN³*í!iµà/k“¤@ô’Ñ*¯´Ê Úòûý›|×x #’,Q´ƒEÁ Ý•ÃãÜu;彩74€Hžk*É– ôTâƒKÕ\¿ÙÒEH¾tñ 9 JÁ.±‘âËdŠ S*ÈdKWŠ/“©‚L­ “-])¾~xx“†ï‘½™½žA‡Æ&^!’Ÿ:êMÔX¯WÞ̽ÀGvo sÓ1AF1²¢hƒçйöó›Ó÷o(au4Æa§¯kG³Ð[S$ vgéEh„­Ãà“7ÇrW+/1EÁ"¾uCŒ€Ñk‚éž ­íEq~®ÃgÂÃÙððNááL´½ÍówÊÛt¼ж‰CÓ6{²û-gÒšhÒ¶Œ6²lÔêÑåÈj6z†‰ú½ÎGÔ°º6j8¦?¶šVï#ÛéwÍ¡ è&–Ó&¦E¬ï6«ßCCó²1¤¿’­!€7G†c“N¨?lšC:ië"§ìÆØDŽÕ5_Ss"ö¨ãüvjþÙ1 gØïY†ìv£ÓA½¾ƒ.LÔ6;MÔ±“¢lô>¢¦5$½\V}!ƒ2{¶ù¯áÜjtP³Ñm\š6「6€^„@`tÛCËZÃ~h„‰²ë·="BKdØè5ß0–ÐÈ6Q·Ñ4ÑÅÇTZLXŒ¶T^€¶aõÌ&ahh!Yô·! š)‘ª$ïߢ߼|ñòÅB—?[m`F½Úûœß{ úŽûŒåw٣نþJ„Þ'ðñç5žãÅ>4ÀàF‚Íóñ^Le0޸ăî'¥ ÆOnè¹W«}dÏÔø=ç¶kLûMÞÚ8ÇYû½V«æ›‡8‚ÐÜ23ðFW›k•¡/²ÐƒASØ÷j›#µÖ2ÃäãBóY-×Ȇ­ýÞj5[XG}[Ë5 ØZí" ÛtdØ÷µ\c û.?îE‰¬ µLV¶“‘• m*z8­åZ%Üf–2Ã82xFž´Y‚ÿ9'Ë6mCFª¼ƒ„ã§¼dË ZËìÐn*Ã×βÖl³ÌP¡¹ÔRGø÷ùfþÊ"«2¢Í¥*šØ%O[SÓkf§ËP<£¡:vÎè/– ±zh• sf?µKl Z3¦¥´vJ„­ì/¹‘ÇíA«L÷»Lk§Ä^ U†ÍšË`ÒΚc¦U†nfZ;%ZeØìDè7íMCkÝjå&¡i[Za7„ö·?æÜîðtêX½i·aÿ“¢hêƒá´ëF¿±PœQ€”#XR’.B:Ò2'ÂrÞã–ú¼Ì™úû-œoî7¢¢»'Á+ÛAÕ©«Ã–ïÅ››:ùÁ#Mž»òþM„Bö2kLÚ—8tW(Ä×d¿Av(`«ã…Ô¸›ULšˆÆaîùä®6˜îH`·ÞÄò­øú›XnI†8Þ„~¾á~"øO7O%s _O^¾øƒ ûòBDת0ÈþoãÏqˆ˜±„lc4m .´m8žN»ÆÈìÁá䌽Ã,UxÈ*ÇI~ùâ+‹œï÷ÑÖt,ÉpøFXbÑÍ‚pîù×ÜxP´Æ3oááy¡Ù¬Ý IÍó9::´‡›YŒŠ ÊR:ÕÑ:ð|‚†t‡L÷&‰ì#ÚgCvéñÒ-¶ÝYàÇ®ç3vÈ—…w½ Y:ÁóAxÃ>“Oy†_?.æf­JàU¤`ïÜ8mš–¡<„#Â%Q[7 Û%fžÞâX}õðË¢'íøá™x"$i›Bã à@t0”¯éÆ.ŠC×DoÒ˜äé¯þA–‡3ôåƒÎñ9Å0™>l_(¦Ô[ *rG ×áM¹/JXöE‰±¾(G$?_Ò˜èœ7Ó?_éÿñ*ÂûJá(‘õçt„]Ó‹ö‘ÅQ* æRiÈßÇ™ïi”X"F/ëð•Ó¬ €L¥Á¤KæÜ†Î_Y…ÆG:KfG¾ýŠÃÀÀŒçFÇÙ¬ •wíTQ % G ˆÄ‡ÂF!²FÎÜU*l@h †6ú€ ½Ïµˆauæ ¶î VŒvÕ£â5Ž=ê̹ڡ9(ÄšB ¨`Ç-d7k0: ȨBr!n §%›aM%šÇ«“+Ã[.\†-.ƒ`å†^üYF!*A~œ|>Ê®'l:Î1êµÑ ž#;†ÈR—D¾Ü^y~®4qŠàã‘(ÓÂ!ÃÑaÎÙt-˜‰L•v“¦ ýÞ÷±½ býü;åüð¼Å6óï”Ï¿$™Q0ÿ2Ä›Ÿˆ#Ø’Úwše„ý*|çü˜[û“„SçOøšF‚Œ¹äÒñ ¯±?ûLB0Ô2Î̤/ã)ù>e¸5¼ðFJ¬lÇÐÎV8RÕ3#naE!QVø¹ZA†Ò±¢ü¦e§é\zƒ&vçŽwƒÏUjÉ43v^Ò|fN‘ÒTЍÀß>…IÝzñlY¤‘¥ëûx• èøïh”‰š“0cæF,«Ä:NGuÞð‡ðB‚:²@ŒŠ×´ af”FºÈ€»ÛQGüÒñcÎmÖþ›B‰´}*õí’÷ycϤå¡GÛ çù¬üy1¼´M¶ d'`›`UBÊù”L:EQ†#Mñ} ¹eCeûj{'Éb6 »ÆÊ"€–Q’I>èrh)£&`x–^¦&é8_?µt|±„p÷Rf•wméЏíC&:ÓO£°JéÓðk«^“Ê^R¼¥8r21…/¯mßt|÷QÇwur÷Q'»ª¤¬³SØœ_ãéЋˆ i¹«ù£Á"òlUœ;Q à Ëq3/\çØ,¤llÁa·¦ÚßF0ëÈÇ·ˆ~DÁB{hÅyr*NöL>YÒê¼°Èá¥ìÜ™ÈñXÈ×]17FA?ˆE‹iâ'Èx­´ˆiéXW>R;ÈLÚ–WnRË#`YØ N) 0gDí¹ ¯å¤hhH'"CÁ˜|H[ÊÙQ™1`©`ï(a¯å±MR*<ì…*2X¾‘…Ó•ö‰ ŽcŸJAR†É¤2‰¥°:ºbÛÉžp³:胻Q ÇŒÛjI±à'¥'™Q¦ŠægVWÎÃè*WÄŽ˜L£­W?µÌ«ëz>W‹®èoËe0êO³&*‚.Z£üòm·<ÎÁmǰ4‘ýlï@UPê#»pZ"(<¿D)ÈÙÞÑRˆ6_ŸpèeÁrXšy×ðæÂÍZg·¯òzR¸X‰¢`Cvl´@ö #LG+.pD óbóÖ8rýÏpt~åù,‘ÎgÏ"X­‚[(Õc5·u Rúpn¦ø®'õ9Â6çEGRzœBw‡¥Ð£¡ue^À¿¼þ톦Ñ$*mlâŠ9g™²¸ÝPõBQŸl§D@•êëw΀Ðe¸kšÛÚW·–ʹVüJ碭ü,)xž¨Snãxsú ûþ#Úsã’uŸÜqÌR!r¡xQ«+¼¨å$‡Û*¢ëUpEH¹=ƒ1ʆ좸•_´)p÷Hne6ÛSM–”ÿäÈ–Q݉î‡Ûj‰%ÙÅÂu…tHójY¢6Ç`¬«P0çRÈÇ3Cd!oÞ+,$®(eL“±C^{¬iªµ¯r=æÁõJ3¡ÕJe Ó ÒNu©ÿcÖ%¥P¸;ö-¯FƆ^‡IÅqR«{pÒ¬sµ¡ 2*4H‘Õe€Ç¬BJm¢Bú-¯BÎG™yUERFñ :o©Ãñ6:×e€Ç®Ã±¢Ã±F‡ãb"µÚ%)oy%N¶Tâd%Nê2ÀcWâDQâD£ÄI¹'’'‡V"?-Ù?³âí¢„*­kÖ«“a®k:!$*e?ŠÀ×ÛJázÒ¡Ý8ó«tiʪÜ%„uè»A±°"ñ=çRn´«tr…Aº³ph•òü6Í#TªU½ù¥ò¥Õ1ï^—Ï‚G¬fY,|cÄ¿qÁ4\ˆÓª;½Ç»2uJÙIÊÎÁÓ›I ìn µçA@BÌŸê@ñ¾Gä`aìÖ-=º¥7¯Ð…‹»óôŠObkqÀ3Ó™‹dQ¬ÕÛdbUÑÞ+<1°·§£øF[!_´„Ô¦Úƒ“½-N5Ó 0ÁÿS9ÚTYUÏ5i ~vššŽÜæóùÊÿû­ÖIÕ=Vé”læÊ‹eÓ6xáœx{ k(Ô¿âæ ¯sQ¯Õ¥À5 B8/P ?…ËÒ—?;¨y]–&¦.wJLínQhï÷!²æ!Q¨jWœ$QÚy×>O ¢¸ÂBÖQä¢BOúüÓånù§»)*‹÷~US,ßT¦©uY¶IUÖÁM—¥‰¦¼²JM{(k|8e·P–&­¤*ëà ¥ËÒ„R^Y¥ ¥=”59œ²&[(K“>R•uðÄѥرóêJ•±MÐ7Zºø¾‘B{2ïZò'«J‹Ž1p¤X¯ïWjR·÷ƒÿXï‘IKâ- úô{Ax5(ăªÍ_¨÷ÞfŠ*5¡Û[‰WµîP#p‡±ŽÒ±²»¸CÙ;ݼ@Á¨÷©Ìi‰Í‚R§©Ìaê˜Ä)1ñè‘YeN <›•ò¡&ÀðÖ¢t胆„x¸ó-Š AÅïU{*[|A½Â³´’)ú¶¡bNó¹tßž©;âoO>xÒš“¹õš¦èRY²Ÿš.5A‰ªJ¨X,f7¯J±>ØSžNâ,ZZïù×àc6ÅêÆÏ~‹ÐíþÒ»â: f ­i|Üú÷¥Zg‰óñ‹4üq³?éÁ £ÁÉ7 IUJM1R§‡Ð?ywò úëôÊPGMò7递—%ü¶V¼ŠÖ²;¡oä ‘Äúõ½Ó¸ÌÖƒSð˜>0Ì1+‚»çw®äJrµÜ ˆêú`ªrïªTqïª-áÞGiýöx*Š·wHiåöN’Uʶw€4mBBzâ`ÃyJ¾§?ãcÛ¦óþ-çÛx³t"çf¶8QJ²ÎÌ¡$m7ÆhÌ{)òk•#£ w½8®>\ú/q'ا/×÷S²!)sX€q‡uo×Pž×ÿ‘ózÏ—Øž/±ÝCLc9ˆhÄ\ÍLÝôΙ6–!MèèˆåÊè]+þ㓌j,gÀ• ÍÛĤèÆê‹$7#+OwQ·ÐUI`ì<»«gwõØ‚ y>f}QI(T8)Il„ ‚#«ô4s—!Øì5áß2mY“óò?PKvºZrììþ÷­j0r(™éw×ñÕÑUeçð`Â=uTëòÊ6.º.5›ŸÁqû‹#p/£Px lbÝÝ9€Ž8˜lÊa±Úðgë~ħ¢á…’¥“(†òjC_Õ@™Íá±TD!¸œM‰Xc)G™q’‚‘$÷‰¸ùé°ur(‘µáâh5š’'^,fRÈBº; Œ Ù,Žn…Ï`A鄃Þ7 ‰Æé‹9Œ³Ð#Τ¢Þx¸®HÒ(~hÓßhÄÑñeň£ùÙǪ­âl›ñ?±ÛÕáÒÖÝtÁ±:îP±uv µ †ˆ‹¡)¦ªƒeö®@1ú(.òXß Í0/@8®Õ×m‡Ä ·‹É% ÙûŠkX&Øú…bË]ThØÄ® T×A"°lM·¥*<ëƒk£|ÓÁ5úzCæ*DΠçÖ)S Õ¶ôž®º¶eªNWéõÀ´\8ס«÷4èÊyO—"ó 4ÃFê:É2Ìü•"LÓÑÿ å†ÒMé+º“[€Ú.‰ ±µ—›m™Ð±­>a%(Ä%ßYpè´…S;ÌM‚£C_Ñt8¿Zz‹8è0wVŽmé/«¦®¡A¶ŽN2䞉 èX‚\õäÛgôáîÎîÎ!â ½ £+õáÕ‹d¾¹<¨Í«Æ¤¶¾›x™ÜEí—±¸¥‘≯ÏǯAÚKQšù«¬ZøÈð„ƒ‡•%ea ·,ì: 2„U'K°¬±¦,ùž@Á„…>ÖªyyŠù Ö ¼é €\âûÐùè’Ýð~äs›3äöF}”ó®yß¡uÜé24õ Îë4ïDk¦Ü1‘bh± ãû¾¤ä° °Û±¶·€mUÐâNí¸õl¸Cǵ5ÂÛz&àU÷þÄC»„˜ÔùÎCjË8é$<–÷Ûç{€qMÁ›ˆ$òsIðrøôͦGþyÞ¶t“Ð7[%Ë¡æ×ÀoB­ùøÃ}³„¾¬^B|/ê)îáË(V)íšìäxþòœÁ \S•¬€iW"é²`<ŒbŸÈZŸKtO⟚ȸª±ŠY>`RÆœÉð¤RÖÓò„Jͨ¸4%¡s‹r·®1\ã& ’.îo36 B-g° VùªÏpZ‡4fa2F‹Þ ƒè¦Ëƒ)Îñy‘zÒþKáÿ¸—`é¦/+ssOæ$'ë$Ånõõ£àëI ¹‰Ró¢8ù-‰hÎ+n %ãª9OZcFñ”¤ñæ@O [ʨÈ$zÎ)ìBþ³ìÉÑRNä¶,õAúg¥­S’Qš²i°+OŠØ ð>Šð¦±!™qOŒ÷7Î.3£F9’‹peðÊ½Ô ‹·ÌO”Í÷í;ÔËá~ÑÈë­ú昔bN@‰£A¡¨¬U­ÏÇÞáØg1bÕ i=¢ "Fƒ šFê¯xû ( û­¦³å\& EaîÁÒÙõuW¬9nŸäýX¦»äúðÕPm(rzsµ’“Òi…ÏÞÌ·6±Tù†OóáÜPå³td|Böì Ÿf¤nYeN7Ðýóˆ‚9ó£*ßK^ªe­©<ªlÓ‡¢è{¤Ð?_íüƒÓ½/¨Èå¼­¿äŸº©ÑG׎ÑÓ‹{øPKvºZ<›\”òú ÷RIAR-STR912/source/91x_adc.cUT LjKLjKux êëí\m›Hþ)ÿ¡oOZy¢dÆ/3vÖ“‰DÑùe˜DùdÜ£Ø`Î$·›ûí×Õ Á`;ödOaWºŸzéêêªjÚ/r.T“Ï<¾û¨k·}5ëõ62Ì¡cû^`;ô=×±”×õù³¨ç,0YKŒøÕE4¾N¬©}nC iÎ=¥¯.Ê ’V«…c[¡ã¹ÈÄÖ+Vˆ ¦„H ‚5žBãúÕEãõ嬋Þc?€ó:í€ÛwV„£›s'@3àlå{_œ)µX pŽ‘¤È(ðfá£åc4[»6ô Î Ô¾€¹¾„žÿ­ Ÿ‰Í&Ñ„hÆÏ.7lDÏŠ„?Çf_Ewºj¨#ãžùAÒUô¡¯É}¤¨7ÖÑí½¦H#YEãÑà#’´¡$“ô¿×mt‹ä{ÃUÝ@4³˜ò˜>ÐF¤ûP2µñéê­¤Ó»„ ¦Cwå^6 ÒuEÕ))òlˆÌ12¤÷*2µ¡zŽ$ƒš0îæK°TMÖÇê@•M}<Òd}i0@£±‰Þ©¨¯4Фw•BJ£HÑtÒú%¡Å>"y$G†úï{"¹& " ¥[• ÔîHCàä[× ¡§‡TqÁ$Ý)^÷Di\‡ÒH¹`"¡{CECIQÑ»)m‘ #«,¦Â‘)i#U!é*QùŸÜ¦@”IQ“?Þ¢/ž?ƒÿ.^ #´Ü©åO‘ãÚ‹õ£W{_€úÏæ·ØoÌËÞ ì5½K¨kÑ}o†<2£}´ô¦k2Õ7Äþ̲1šckJ&J9[@ <ÛZÄÂTèVŽxç;_À“…ßVxŠg‡@f šã¢q†H1Á.­à3¢£!#¸=é ¤ÛÉP2þ•òÚõ¯õz£G?F{ ë !¹6±Ø\ÑV«'`é8X/BmË¥Ñd8VÔðÕ¬§± ËvÑÐ#F’Àå`™dR¾û(ÀVýµ€Æþé›·‰%•¬ºV3%{Ë%A„ÌÁêKdf¼úמÚô%Ï-×Å dÐUšAflei‘Eü SÉZßËw¬O‹C&I1^‚a¥=˜/;cGˆŸÿ|Yß—Ë”0ìE°X,ëRR°æ:aN|Ô%7òȱÎ0ˆ"êã±€ë =xæøào,˜—>0ܸ¾X‹5à‘æ®Öa:Êy.¦«á:L?Iè8\ûîæƒ{ÝñœiJ35ø~öüÙŸÏŸÑ ¥ƒt\‰˜lt^!dÈ÷éîÝ&úœÓµÉ„´©Ž ¾8»ÞÚHÑŒ¸Õ÷“ÚB¡%hÜ*6ZQ¦±OC˶=긑% `…mgæài® ¬,ŸP¤*sÜX”²If´BVÀ ô×6l|žk)qsƒ6뢕G—s ncJV¾QÚžZ™±À ù2sÖ>K5wæùKö™|ª ('ÑÍùOfÑÔž3*z‘QhÊÔÈÐÞ#ùK¦õÜ[L!˜‚›VhϧÞCdñäÕÛ©£› Þ«·ðýƒr;x3†¹Ã¨Ì‡y52ý­dúgƒBµx-¬ÃP‰r¤%,Ø)²¬£ßo`%íõäk$Üÿ+Ÿr„;©O`õ§ó;C±Q•bk7Š J½yCz7µÆd›Éʽë]¨6ST/¡g†l«"ÙVo7i[)ºíMi/«‘•{;’½L‘}½IöªÙÖ®d¯Rd¥M²íJd‰°;’m§ÈÊ›d;•ȶv&ÛI‘UÓ‚†­Ô=G_ÿ G\„x*Чä³ÁñuúyŒNÌ͆‰©.„³S'€¿l-°-AÎ Õr‘I;&ÛÍ ŠBhÿ'sM<tƒo1±¡’}‡ð"À"ª²…WA]ÿ-ÆÇ>Zq¼L挑ø2oÍ•Ýwí­z;£XImÞb«B2@Û4Bkz$V!J)ÒUm" 6cê+ŒÇzÎb lÙóŒ%£%^~"ÁУΑ,gÁi•p U§r£ô8wK„;˜ŸIö0Ý#:JYЇB‰‚«DÕâ tÃ’ùúõ¶>B(„ÊûˆÑU3Ô‘—š]¥Ý‡uoÖ½uX÷Ëú_Ö½}X÷Î~Ý3KRÒDqW¾æðëE™e1»OÍé‰ñ´¾ðŽÌÛZ`Ÿ­A¹‘nãøÞ:„Úù¸HT@<˜-,[4;‹ÑÊœ"'Ûå9˳Œ8Ïkó“L²øh±.hæ{K˜óÀ"DÁ?[¢˜QymýZ¼ò‰¯ÞÞéFÍ'.ŒÝŽhÞFSßOh;·8äÄ߃êw²ž‡T¥§’Ýì^Å2s êCà†>„ò–ϸKF•®K½ÞõÉ ¶ ŒÐ ×Aî€ÉslH¸é¶ŽP—¡£5ƒí2’üx>r½°x¢­.ë Ïs'±8Ïã9MF6.V̼ÅÂ{„R«vó£$„^%;'ã÷$Q™Ô»(ñ½È#fPu ¨ hí©*ïŠÓ¤z¾y 4Ê؇~£:ýæ1è7«Óoƒ~«:ýËcп¬Nÿêô¯ªÓoƒ~»:ýÎ1èwªÐWå÷]zOuiÕ3•[3êU@¤ ‘\ká=$eÓÄn‹Ò?‚æ¾-ö”¨f¨&øTxõÃ<;Êb•xÿÍõ ¶n´93ñ«ÛÔÖñ¤R/éfóÀ—t%ö6gã†$©Sü5. Å\Ø·oÑURŠèZ±ò‡®H¬oB“wþ]ÜpœY-¦sƒg€kƘñúK—ã"YOødT¢JÁ¨ñ’ª5Þ¼‰ÈŸýã&Ö2êÀ×vòäšÝúÎþÄ5’ͦ&ݘ×TDÚ[ePôz™ÐäÉ¥è”HÑ(—¢ñôR¼.‘¢Y.Eó饸£DŠV¹­ÓJ‘/Gý«T"Ée¹$—O?õ¯ïJä¸*—ãêgC.‘£].GûIä \ ‚(g/·ˆÑ)£sZ1N[2’ØòA²üìž< kõÊ é·d%)^åœO˜3Òñàpñ‡„ŠG/Eñ¡Üü’vhíKù>V‰éÜ ¸5ø× 5úZQŒvvú—nHP™dÅ5*[S*£ÏÞ~‡ž᩵ZùÞÊwè  Vhå× bïPlàQ¹›£Ö8»Iƒì+/GŸ¼üÝeû„ë|DìVV¦àûb·²êß÷»•ø~‡Ø­,—çûb·²œïoˆÝÊ2g¾¯!vëì‘h&öœÙYμqeÇTŽSœËælä~'’™çœñídÏ„¶²Nh<:Ä·²Mñ¤7_0m‹,ì5ÁžÏºñZšJ7S:aÛ±®ø»Lñ66*â(•gA‹Ô{Ö×qÏO>¶>ó×¥6ykìÅ[£2oxkîÅ[³2oÍxkíÅ[«2o­x»Ü‹·Ëʼ]ÀÛÕ^¼]Uæíªo¨ˆ¹ö^̵+3×>@q½xëTæ­S™·èðî†Zã”™% µlL±€;weiþŠÈ~EdO‘éº?3h‡:Ž')ýçÍÉ¢˜,zR½¸0žn…„GQ…#ïÕÁÊÆÓ”4*û§$%þåž~¹§­ÝþVîé4å¦]\Ζú¯¬EsP(EÁÑ==EÀËÈ_FÍõ&·©#:Ø¿ ¾tuágß2GvŠ}§Öϼ(Ûg4ôÓø‡>¥šâË¬Ì Ç€ˆŒªöYŒc÷œ:â[bIdÃ2jÂÈÁËÒâXfë"üÁÖ²Hº»X‰Tš(4'©©r2 ®|~¤èÌÚ¶Ì*6Ž­lG×öc£_ÈÆ.ITü Nš[^Òe‡\˜éÑ)š çÕ=zúÀ_¯Â ß¼Še_Ëû¢À[û6¢£B˜’ž½E—pT8ÉœÇA\„‰êNdz$óÍÛÔá"zŸ^´p)·›»;%8 "~é§‹\ü(æ[)çªEx $R;ûêŽÏ8ÿlëlÀ|¹×Ì—ÜÔ­{%*­ªLêÁïW9êŵXt²I+ÎH2Ç»Š¡âã]Ú%.ѯbÀÑy™_D*If!³¸èç4à Vq,±ÅdÁP7@þ_ UTkíX&šÖ_áÄ쯣T>“¸ œK,B?qþ]`»w,xuÁVÀ67:sG…*Èw÷±ä²”ùojÇÇ4^P[Ñ™ÑèWxªšjTl¡Y¬&ŠL”è褂 ‚Ð[qi„C¬m÷¸éx%³³`³_-:QM'Ù1 Æ‚Š<•Õ%Ò Þ 0"É"ÄÏ4eÒ#^Û܇ÎN™Ô‹íÉÑkAu™)”è1c(۸m“Ê(°Á‚“Ø™ñ)b»üF¥:Rà·ôzÚ@Tü?PK yºZ<IAR-STR912/source/.svn/UT •LjKʈKux êëPKvºZ'k¯akïòñCgíÒ)‰èFFò$ß{B˜¦~¼N‘hú6Ï—Û~·k—ËûžÓ?+Y®6 !øKîW`“EG*mtŽuúi*øço‡ËñmÛ&;¾Žéãoý0Ð†Ò ¤=–}Œ[ø»¾N-!²¤R[hCýg̱Œb ã µÿÅü(dÌùÁvjKÉ×Ñ€ ™šv¬¥kDŽ »ÒdrH²~Ò¥hØÚg³klƒfó¬BöEÇÙ¤d5u«ot ݱú=S·Á>Ó:èõ81àÌè´ cj'ƒ›Ôz_¡eZ(½‰ÏŸÈ"véýžmü}ž›ZZZW;5„ô´s¤±½#ܶL›\h[ý.ZpPÛkƒ}AKc¨õZ;Â%¸° èj-N¾æ¢…ÂF9X"„=G3{F ² þöŠÂÉYŒäö³çÇÎÛ7oßìl€é&sbÕÖ“/²ùO؃?åÄ1þ³Ü æ¼5ÿ|F ±C˜Ã9²ÝócŽÜƒ1s‡H”‡HÏG‹`àNÀ{¿‹ç¡wC“Y|7cC6zŠÉ’E´æùì9Ç8uq¶˜%‹7nè¹W“§„²dQÎÓ4¥ÇEõѶÉâü9çNp¢·öjxwãNæ¬~„=»à Î<¼ë}n³>ÔByìBÝŠÉË®¼ÏT™‘é:óo#² OŒ0Ù|Þ‹W,Qæb®X´AüƸ°CïÚ‹1ËÞ9_áÔIÙôgó8_KôŸñ wç{²‹ÅóÐÏu$Ãêâê.f/1M.H³·oþ÷ö Þ_ †cïz MhQÓí˜Ê•ƒã&ì6êÔÌÅAJ¿{w$î…Ø‰ñ–Ÿô_˜¸Y“¶?}‚ý:üÒ(÷sE`g,zì÷+û6‡/ö¢™ƒÃ½F÷E¸×ªhÜk$½–Çzm-‡4×D ×2|›°¯6÷°5il™¬YÕ$ÁçQФ2oH…Á4ÍJÊÏǪþ·Ê˜ÌÛrƤT¦Žz /Þ¹ÞøÞÆ<9>>¨oPÂÀ;Èu5ÚÔµO]¼'k¯×Wb²P>ŒâÞ*“üû=ˆ§3>?ãß&äa”PÐ>¨×P² ÞÚ*ÑÃ=òe‹™¾+ѳXÄâl7=cØ‹8NÝ!»Æ­.ÖÜÏ_Òñ¼‚vxÜ—5ºO&j[¿¸ÔÎOιSÜÓÚå%Šn=Ú=Ë´L[ ­-›Åtj¢„Ë–`ñs ‘¡(烘¶TT[‹i‚ï´ÄÙšwL®³‚prÅ(µu¬[ð£Ùø~Ð8ØÙ0|Ú–Àmèa@Ì_qþäùÐr¬4BôL¡M­‰Aa;WÖѳ·ÌÇ Üñä?š(ûéÓÞþbµ;æ†*Ý‹u¦UJ‹unû6tÃK*Iºx;ú¹Žajó+ש6[0YrXF}½ùûÎFË‹– ûªŠÔ$›oúuHâÑÔ¡£ª×Gr¥&‡Ç“‹•¸žÈ %x^%Vƒ_ÊT¥¡lƒy)²j%¸ÎÔóç1Si©9Á•"†EȰªT¦D×ì¤äÏ~4óÅ~2ŠÉÄ«X]š¿–ÚÄ §÷S€‹Üϻʭ£Y]% äzõKHÀ©¥Î)—R:,K­„gÁˆvÏzÂGRœZµ‡¡S¢Žöw„V…<Úìj•D×2þ<2óË¡ZmåtzOåtJ¹O%î*'*mQÁ·A'fO³¾ò{%¶Úüƒo†2y­\[4„C˜üðšvAb9™‡¬RŒQï£o¶&üì*=|eKMXÚ‰@lf.läK6ú¸uœ”P˜k| T“uÊz¶jà~ioŸgœP¡òI%ßh ”Ç­s&ÏK'µB£±+·Õ¹@¨!‹J\çý‚A%µ–ÔÈ»Á¥¼ÔD< ÙLr"=¨)‡"·³,tqKÅ(TDÓâ²ä}E0­(ËY™w¿¢%g¨ŠÛÉ|õùóÐ{auÇéÍ« —¤6/—à6È£¸-û%Üæed‰ÛÜ…\MIÕ#ÝmóÅIA£Fã}‰«B>Y–”ÆÇY…dA*ðŽËlçs[ZÏj5hж´¸ã3Îd-:–Kû\‡ HÙ¥Šln.çOÙ»Šnn%VëÍ9Vû $]-M— §ùÓ&Q†&„}fª ÛKpU"kêÞ/a«¨w3ºfNläk_9(Þ¤Xù´K_"¯ ¹¶€å‰†’æššç‰J‰è©J=åúý´-ø–cSÖ.H[ò©*™#xÅ›ªt¾Î®ºR•WrettÜ)Vèzà¼ëEøØ…´HŽG¸<½ÁÀõ‡‹ûY€¾x±ú0K(uQ'ÿPº¿4†×ŒÈZjî°6Y°Êr©ó`Rðï/;Á­ÂÔ™w=~es>è5Ú„fÃÝ„ì}J×d›µÞTDOÒ kþC%VÏÌü(÷óh€òJb[|6þQ•Yðê%V~ZžDz:Tæv²©Çœ‘›V!¯þNƒÝÚ1ß¼‰ï¸šøàu¦×tX“1q'|è©å´’ÁmC‚,%›ÍäÛ<°ï»+G’O–Ë™.¿1ŽÒå¥aüIO]—AQ ¯JÝxWú$|[O*¹^ršÄÕ°~s˜ áx ÖûœaÐû«Ù¶´î‰ÇçÁíc&_Rƒ+wðm>®J¥öçÍqîE^?Äå€<åƒeA>X9‘ékñ¡70ýøžÒæ¿+H:@qÐ;˜ëJH¥gÿÂÿƹ'Ðëicæ cžŒþ2I^Ú¦ãp¡kæ'G×Ê:ô7ƒ´)Šä¾Èë×iɱ¥¡æecÁ«bêˆù¶\ Ò4)¨¬ƒ óL–û £ýQc?ö½°tçËî×8Lø5ñYúqÊ6^Gå’FÔÆ£ubžk,bIœ8ðÄ[™`ÁÄQø#„‰s,ÿS/AÕYA*W†)«¶uñü4Ì4‘&™Ÿf “Õˆ¦YºØ}”âŽëÀ4–´A»{ͺp'/­µÂ£ÔãQîþóË,Éãä*ƧÊï)ÃÐ oy¡4ÑÊÒE;`Æ£ ›áÖÑêÄ“ÇũÊõÖR v—"¶³¹ñ÷æbTÈ&1wËûÀö²)„DÊ÷ ˆN$siØ{;°áŸã%e{oéw½!þZË2©8Møå%Æ ñÁ‚KV(äãV"7ÖIð8ßËæ×Ò›Z(M—ÛŠ‘ï ‘2‹ú “ÝûLøLÿ±P°Fícl?Õoÿ÷éßÜøœ“듎ÆÖXckŒ×¤qÂ.±Ó¥r›g0O¨FyY˜â”`)2w˜1QŸŽ%Ö_Näþ·è÷ÖçŽßå÷‚¿ÅQ;êèBž eÊÛ4ݺ¸ÀÕ¯@7©+Ýys·”f8¥ØWEAÆF$àÕ/ÄÀwq挧­Å°ÄãZež?™þC¨ÊݵûÍ&7œ¡ÄUóÓ ^%ÏÏáļ ÖŸam ƒzЊ9a×RS·ošdn°”èæì'ß<†›A¬^µèÍûWX“.òç†â¼JXl†÷Ÿ”u b35ixY]-Íç}/B”Õâ0g²¤Ìôo¿[ĶÊàz¡t½Š”˜Y’«×X{ v[¨Š™ÅÍa±eQØ¢þH&s’MSxÁ„Y!0Nâ+ã¦û,¿ì1±SUÒ¢–âõ¿_ëb“y}^©Ð…5Z~øOeN¡{nÏv­=_7NY„hL™sf”þÔæD)‡Î‚S~$«BPŸ {PC§jÛç™D½ (šA&C Îk³Ê< Úù¼ª¹ÓiX¶` æõ ®ˆäM¾°;oHoîºsÓ:h·_¾´«9¢Vöú¨ò¬Ì2 ,Üw¥E—øµ•vCï’2=µPR'Ìÿ (æòëÌíK]‰ £À£¦âƒÙÅk€LêB¤ù´s»+/X.úp«ˆTe¶åè.…¾Äº;Oÿ-Ñ7?ÃÕS­E|K"pˆ×–ù,üt\˜¹À¯Iî*¾m¼$"ré·aF5d^BN׃˜f+œý'òŸ²H~« À5ÜhŠWI>íòÝöù›òHšùÑ÷mÉÏpצ>$×.ŒÎ†‡óäÖŠ\˜/›PÆ„“ô\×A%’,ÛvcƇðˆÜ+/NP—¤ÝòA´9Eîaôýè[ÚP4Âá!1¯#¦×ÞV 4à×êŒ÷j›§*œëª¡NM0fcóÓPWáÓ©¦œ‚fÀx¦ÃÇ m4œ**̦“Ï0ÔÎ šH3ûMiÓ \æìLÕ Âî“fž¢sÒ ÚÉφ¦6›‚®~êô, ÔtB>ºPLo‚™>Ru* ¯9cø› ¦v¦PDÈÀ¸˜˜ûÄÓ5EŸ©U1õÙTS 0N‡“ Lg&œ¨pªNF0ц'•²N?ÃHÓñî}ÂK›²(Õœêÿ]`˵áFóáGÕ`-@içä.Ô…0P&¬Ùºf&ŒõÙÑ•0D&&±Ýl Æ-³áp:zÍš† gÑ 'Ÿsk r‘‹é–Û‹°jSu„ ÒU4’FÏMQ)r™*Y´äöÝúõ‹Ÿ^üôõ lIBòÕÆãùðËÝw®wËgc{IÏR Î#ïÁ™äû F÷|EˆGäæîF-+q\XÄ›™ªÄñ›yÖ“`v§\ žYñ×v—±ëìBøßÑô¶ˆÁ‹ÐY" ó~âÖa^~òœäúr¤—gCãï;"ðöïÆãÁ˜õ„†®È Õ7u„'q’ɈvRʱòë J©ÀŒtü¾†t쇷JDþ%±TE[&TFhFñÜðâßÝ:Âq¿ß/R%Ë·KHÇê "“X¦©òF®®¢©+Hß÷Ù!#U®­ p}TáAbÞþûFZlw íÛzÚ“å|îFœƒ„öp…Χ–ŸÔS"ÑÛ:ÊIh]I9¨m«e_»õ¤o›M<ÄŠç›+{XG«1Ê4ZrT*—[ÃB¤MÿÀ*­ÐH!—„°×†­üe5ߦð÷zËù‘VÓisYE}D ¨™$&•0˜{W’’÷˜icÀ*Ûñbö7©uã×öæÖ¯B?ÜQ¸F„Æâ5ZÞ$´&Ò‚›e’wÊ‘´~%r9‚ÛkKè;°­¾¸Ðßìî¿Ù»ÿËþ»}TåWR5Çt ‘UÞœú ž?kìQ¦{œÑfcNÄÄá2²]"…»ÔŽ`G.£xÐq¡±‘7o‰¼ñu…ιÔT€ž–iˆÿ *DϽ6zTÙ™ ôL7Zxåƒ.ƒ¤Ôþûñ%•m†8†É¸ÅŒr“wÊÔ½5 œ# ÝBLþ„p¾Ê¿UÿZuÈ;Ô)-ºÑŒ#Í RF³e"zêLÃÀ¥Wt7YFäÊv^ù| =§œ=Á —&bÕ‹Ë—ãìÃrðN „ý,æ-ŸÚRƒï9ÿzñ€7‡^zöø˜fÓ(Ò¹ç(Y~ï^ý e:†‹â?ÿ ’\?v ׋ cr{#óŸá?2öäàþ¨ÀyÐ,¸r‚J1[ƒæcfÅ£kDæÈ‹bö’Ë´ŠLEIÃ’”ÐAY+¢!úóð,ˆùãa²>.ï½fdÆHrM¦"gó…~xåÙ0Ç[ˆAì0ŠÜø& /¸¢A£»ÿ\ºq†w…†j®8ˆ@Ò£jõ‘1¤e‡Ou–½˜ª$w5$É 3F5—r-0QWtxü ê&ª MŸx-ËZXM^¹‘δ°iÁ±Ndñ6âMna”<ëui´K£]•Pýøiôù¥)sBŽb™ˆ`ýÃÁG~ù†^‚ü?n"c%ÞOîø‹&´õ‹4êw¨/%û¯Cýgù"àOJˆ{€¿˜+ þ¤öòOÖGü“%Y:×a}‡õ2²ë;¬ÏN=‹òþdýò~Cˆ+àüImuÿ¸µý=ž&½îK4Üwp/%ëàþ9Àýäx¿  +÷u¨ÿx˜ÿqÅü½ríÚ_iˬôY•®vóæà%Yë«S]µ€Þ|òÈK¨þ{@ÞPMò\š¼œe>Ø}ëŠ<^Æ"ÎI#œc€NžFC/Ÿ¨ÿ9›3úŸcÖP2{ÄŸáFÌ x’,|bOŽÉƒãô~’ñ;ž"/ÔÏó¯c0é”XWîw™ JÔe‚.ló¨Íå™ýû¥9²UóÁDLy>ØBBxÔtP;3´ŽÍJ£§.ty JÔå.ló¨Íµs@›@ZžzÂÜ~> €-Ž~Ôñ@Û4Ð*5@—JT]nȨºÜP¡êrƒpÔ¶’¤h'Ä'“#õEWþ ÙBš)Ò7êFtã*j%úzw„‘ îZ)µeá47{ÿ¡tߣ±…7T«¹£ÆQ·õR¬„ý^þ‘XzüØïþÎò8¯Å–üŽ)Tû&lþŠº°¿Šô•Xmµ÷®~áV|Y]&è¦~›B˜ì CvýYÆåWÖ z´É¡.†±‹˜Jö·ãGå^ß¶ÔÛn¼Êøwo뎚ˆM}ã¡£–»S’¹S¶»JB=ö~ë06;’†qE\ºƒKAÞá,|âh¦»5­Ê6¡°¾x¾—|ïÂøOÆÔ)ࡃX‘9R5ã8bqã1iKJBù®a#Œ,Œ¥Ÿ(Ù6q^°ÞV2UÉÊHÎû÷™DssZNù°ïáFñܘšóˆ– })Ui@çŠGaÒ? i8.ŽRLtõ‹]}‘lèùî¶{:?N§­ÄÀ2 ³´åÍX{h{ɉØ;mCw¹\0Q«áf¢¿íÅ3}A¹äN-ÓúòÍ!d$ÅèÏNWíE¡ Üw­¶•*ò‘Æ{ÖùÍÑ,vÎoñVØûõ»½ñåÁ–ãDdww/°#wá Û3Äš×v óyD:%&óÛº¼^8jÂYô¦Oí¦Ä GÄþyaÛª]l4ìåâƒ0©SÁUhSÆTxêBžm0}Ÿm!Ý8ñ Zth!u©GA ©+n2X«j!£F‡íã×£Zf<ê"ŒÄè³ÊúÅ|ÛmöD#…„X6íÑãØBw©æ;•95Û8¿J#S œ;É‹t Åv¿¶‰ìÚ¯k õ¯P„ˆTa¹¦BÔ(kQ¯2éRÙìûëˆT[H$Þ‹2é7¶òe= rgž^›#ѶyÉŽYȈéÅ4ŠEüUüRþÍ)'ïª0lcÁï@@Všz²{… Ž 0›w'-ä ˜Û ©[ Ü5T[êǰ.ül¸ñèƒ §·bBf½/Ç`Ìá­×ndùi´U¬˜jC¶ö‰´Õ]иʔµ²Ú ™ó"B™Žõt¶‹o[/ýâ 3™ŒoukxÆ4›¼*±}²áhÙµ\¸vFº›”þQb)ëøš¹èÂTôQ—~ñäŽÌÔ­…ò³«Âˡ¿ÝÈäžtö˜}y³y~Ë,…l¬gü—k+ÇJ,â‡Aødo|¾ó!õS³¢ù{ ¢Ù¥³¶•UÇâI&¢ÍÔ­¼³Þ]gw2/¨~¿ŽrMMóèÃJ#W <Ù‹Ix\ñ,ßû]ZCac¯¼8!‹ÂÑñº‘Ol[KŸÌ×Änß,鯂K–‚û¤Ü_K«X>™Oó™EIŠx†rq9<=9§ªêD•£¼õì¸NÚ#ÆwlÂ`¡ý.°Á°K>Gnï j—‚%W{»G9[°®é‘ßä'«6¯wy‰û< îåË×/K}†Ùs8˜9)ìòÃ`—¡w=ožXsæÞœÕ|NX=Å^­I´´“wFð|?f;éXïc°p_Ð$8޼>ȼwM Ï™ÁMHËV&1E³˜ÞDVmÞ^{¨Ñ-*G°ÞËBι߼ö£xfné^¹a/KÆÍqz‡M"¦í£(k/qÈŠƒí¸¸ÈEœxa!f#²‡ŽÇÙWªóiWX!Köt¼V ( Q^..•'oÚÄ È›3„HÐbZ ™LâDK‚ÈÄÔ4LlЭç I;MmùDn=æHÃ~]ž|OÜ&q¼¯rImÂŽ„¥¿Da5¢Ø[Âù™.ëÛ¶×Nâ„ðÈÚŠ¿/#LË4E€ü »8ì/^v}Aõö1ëûóÛ0¢ë迎›NÝñi—ªù³¤¾NÃØ:¯¶ö,4‰ýÞb“ ]œd ûá-ØaD¡OÝfÏ+Èçàó^#Çט4´‘0V­O—Úf¿’>ÉF´‘ˆÚaô>Rà¥(‘X±Íýl¡MmÇd ahß´Ò”¼õGï¦1Kz§FBj nßô“CvéÇɾC× Ñ×hô‘ 'äCê¬Á„" Ü»­£RP¹AcÑÉ×WÛ¨%ºg]x»ZSL‹š?ÉWŸjë IÕœ×ü–mcÄñ‰ÿâ´H6«×L‚c¡xYo*s«Mþhá~…OFß#+†øB=öPÄ-Z¦è¶5|¬±wϸ0ÊJ¢¦U†íË&tîBGp,( ÈÄwëëÞÃ5t…n@ò¡ihp¤i»¨Uki>cæ„ÕÚоQÏVD¨1ªV­jÊ]Uc3K¢ðÕåËÅi‘?v#T¹Ë äB‘šŠpjŠ`™$l¦DRµ2.ª‚0Ÿ•Â~^ ¯nÚd¢5äU2”»6YQ˺(õ8VÒþ¯éϽIùÈ•2*5U³B4Tï¯PZi—}lÒºN?Ronn.^Å~1®V½ÂÇV*V4›D¯vÅu±WŠrk•d%cü»» >šì—ÖÅ"HVAOÙevþY×>žšpØï¿Ã<óì(¤`H>Älc0’CŽ`6†±6Qy‚ûPKvºZú8ÖÎ/LZ­_Á0ÎÔ÷lמ†¾·p¦ˆš>}òzŽkÃк±!¾:ðöÝ$tn^M‘B^…מé«¥ òré:S+t¼˜¶uƒÄ]+´ O?A ‚•=CâÖßOÚoO¨dxoû¶h¿jÑv0õ%es7¯æ(ÙÒ÷¾83;Ëu!¼¶ÁÔxóðÖòm˜¯Sl¼"¬v|¡pNzþ×~&JH*ñ[F )zö¦¨`›?+Sþ$6/TUCš`è=óƒ4Ô^Í5¹]y Ÿ«L ìmDQd ô™ÚcÍ@zc}@ G8˜¤9å×ã’-¶¡<ìž0•àÒPa wUx÷1e-Ò‚ñÈ‹™phÊÚPí…Æ*1ùܡМTȬ%wè“§Ož>9yÚbê®Ð¥^n}!Ï_Æ~Ž¢ÆõÏÙžÀ›ƒG|ׇo¶"Ní,BÛŸ[S®mkF\b½(ØáØ÷¦– Î.4àG¾ócVøuiÏìù6,s 7gao-#å‰Qï0°‚Ï$˜Óû¿ðÈÃÉèÃ`2?’ݺkµÚ­,•>QIy*¥=Q‡èr1R½Pu5#EÖºëõÞõòT’€×Û/IÀë·^^K½ÿ¾ßžªkA¸µ[yn” ƒ ™pS{BnRž›$â&å¹u‹Ü²Z2no[ynY-Õo½"·î@ž(}U§dS8] c7™æ·säj¿X¾c}r·q®Çh’ƹ<ôÐÏóæµ8nÄÿ¦R–ȸµÖ»½h‚™%i[[8¡ ê>p,×ù/13†¥M“àKâæÔ[tÐk1ß¾"É ÆÞÐÃÄÊñ‘[îê`³VnHÈ;$àpW6M¶H7ËU˜¦$}Ýuà–ôdÃL­|"võ½ha¯ñO@3Ò(t)qi7ú*L÷Ó¡·°ñÁØWþ¢ø`·Ó/ž3KÙü?šÄ]2YùOŸ8ó#|zggØ u|ŸþÞ>>FªoøÀP.'òè݈ª;FëM&تýx8>EBý[ðŒòJú·€Ì©s: |Ç?¶Ø5¸K¯…Ü%ÆýuwüG( T~—‘C¦ø0 *„ mŒÔ/'SÆÎx\ŒH©Òž˜läÆÒ£¹_… S¹ëöÚ!Þ5ÐÑ8êÌ6ðÛIvcÇMFâ(¯âó¬EЕ9xRw_þŽßÞ,µFf JÁµ@ù¶ jÓKè×›~žÞÊŸÚõéÕÙ•]S’+jÃÑ¥ÉÚ¬¥×yÔnÀé¥ô#â$ù·ýšö­HHœôí/¶;i7¤—êГØêÍXƒ&ò,®Âk"P3zi=}oåº\¨œ}ö÷j'&éÌÄšN=æ,®x6ÁÒž:sÇž‰“„(ÌÑʧ#qìJa; Y¡ÝH¥ñ¶n¸%]Z¡°?Là,‡d©(ù2w®V>+À9‹¹çß°ÏäS #f“ÃɶRa[œm½(ØMëá4æ,¸V2ÌðàHä{™X̲=²zûS°tÎGR(r¦´s–^¥Sg™†§e¹á¢Þ-,÷„äy¥ìîvê¿Lu<”û§Œ¦Z îS»çê„•ÊŽYûoQBpYÒwt^›F’”É’°ãâ|gÿ‹ÔñŸ“´³²ƒg¹zr¿Ÿëa]„d†© Ž‹$3=;J}yFË­ßWÏh§,É®£©×²4a--. Y$ÉÔŽJ³š¢ëº‡Ñ‡Ï)o0ª×=‰ZV©´Nt7^Q`¤Â'XàªÒœ [Ïé~Å›Ž.õué Ç:¿S@{ © ­N#âïчØ%¬žXeá˱[ÐÛ° PgiÅ@_.½À iÑ5±KŸïÅ0)m¤Rm*,ó“ÐÆR™£Ÿ|Ûú|ºÎÇù 7õn–¸4½¶ b™v˜‹8Öi.äáPíOÚ)@—ÅÕl*Ê­z¡_ÔBX¶è¹9¼òeÑ"§¬ëñÕúú\öt½’Åמü駢ع:ó¸O8¥ª´;‘´1ˆ¤† ’ªATô l©{; I•*€Hª"©ˆ¤z  žÛaØEÒPTˆžUà(B‘8%(jnûmÜ~³ñú–Êú±*OkŽÑ÷õWE©*…!ª‘À¢ÐÄT ½nr©èT4±ÔºzBYkæu‘¬ZâBk(± |Å× ÿ± c:\'†ÒXœ ³D®»òi5„ÜX¢¹êdnÛ§=E”ªkÍiY¤D[¡²éòÛá§T)uEV«Ö9ÅX ^0ÕX/U0è®Â¯ |º6ßVH8m˜‚¸#¬K¯K–÷Q:S¥Ëš§ 5>Ó."Tm¶jÕGÛxê>µ¶{=¶ •§!nÅc½…®==V×Å¥®ÎÖʛ߮8‹Æ®ñŠ>×fy§ð<..‰oíáyØV°U9:¸ÔI‹Rm²È«ç{¼R4µ–´¦½ÙJ‡¿ÑRû‡-ëleÔf+ÏŒQë,=S[u)£Jµ´ŽÓܨåÕ¥&F-Åi…XRѪQ›þ…=¿ñó+üSÚd¿;©Š·ÂÝBåf&ÜOU윞çÃÌ Øg4ðvÂÝÉGÚõÜ;ñ¦$ÛÄ\Ø·„VR¯NkðJ¼o‰/Ä;À‘ÜÞ")y{®ëÝbRÆ!u„lèõ’Jg˜òØì€Z>S5tnè.P…™æú°¹·Ü 5=åÙŵ-¿¤ùãoËÆ›² &˶f9…x@tÄ&Ú•Ê?Œ=:ެltJ³Q-.ëÒ)NúHÀˆG ay°„´«Â´4ü|p&ÞT膧0ÌPwó½UˆG“ÉÇU`Ï02D{¤vâ¶ËxC“:žùG$Þ,“hÍoˆ?zŠ­‘R9½^åBø¨“Ôâ«k&ñ•7…ͯsH9÷êm–2uX.Úï>ãÞ§ÙûQA"jIýéûq~n‡qçï#hÖFú•îã݇Áx}t™Œ?Ú8‚ £!>Sò™¨)ˆÑcm½ÞÞµ¡ù̶%€øÄž˜ù0ñPs·¢¡ý«È²uÁ@fÛÇ]Sl6Ö _l¶¥âîöÊ¢!1qM,hJûѰ í Ò…iXšaAÚ? 2£­hQ¢ VäÍ þ#¥À «~WéöŒÍkcûZ–ã–Êc¡È“\½½ üé:fx$€“2usŒ¤4#j›×9ÛÐÕ/òx@i}LA>9Yd”ømùVT틨ÎÎDC“^·ö(¿ÒÓ̹$$ßó"¡çZWFh…«@èÉʵ=ý 'Ò·Ù3GìYr7' ÐÇÑ·=^øè.:åQKÅÄ5<*´/wîõåó ™ª;¹™D‰+î(jM.R©>SGÑj›þÅöçDÚjµÖQ“\Ù@U)a“èÒl¦Ú·F®¦JaG†j".鉅ã™»*:•°ªÀ£R%A‡½HKßß|–<ÆèÃDO>ûÓû¥Q†¥Hö\ÊÇên4˜Å¸‚OƒøçmèP-­ó+KôVç“„Ôãÿá$N~ähòðû ‘cÔ ô• Ü*‰ƒ;ÒÄ‹3ø3zö‹B|M¥ùbà*sZƒÕŒ{/¤î²0—ýîöÊ.cÓòZ0’“žŸÚ ì´Û‚”È{AíïËCšY±§¦D{g|Ò§“}5Ø_-C苤¾rÐÌüDÙI^Lìˆ`ÓÓ³}Íþš)šûÛì'‚òF\ÃH4÷nÆI”lÂGHªVÌJ8 kd%AOg¬=¶Á–¿š¹ñg;þñ ˜t…*g¥qøNºìÜL9‡Ê”¢€R•(iæ‹8Y.[¦‡1µÀJ߯u3j±C_j†£âÜ1Üó>O¡º¸Ã·†ÿäÔ²ëä¦ñ˜49”HŒ¿gx«)q ADN屘õº¿`Œâ £q΄ëxèŠÜ.â†LL½‚rF߯ªˆoŽÉE—Ø?ªÂ ‡!?H-Çèo†±wJ²ñïv§õø„¿U™^˜¥ÏYe~Úð”s1Ä<2? ““!â|W÷gyb Rû9Mn"@èØf2ý—LøYyÅ…Ó‡Ÿü#QšOú™–æŽâ#–õ¦wh4¿§¼…‘­Ù­ázÔ†[vÍžM“ß)W‡]ü=åžÖW¹eþPKvºZ<ìøŽ©·6IAR-STR912/source/.svn/text-base/91x_ahbapb.c.svn-baseUT LjKLjKux êëÝYëoâFÿ)ÿÃèN:At ¶×+¹œäØ&X›Ú梨ª"Ç,auŽüÈ£mú·wf×&„&—žºî€ùÍcçµ›Æ^Å‚šZÕœÛÆi×…Ãfó8nŸûqÄæ§qr?*ÖÝ=èð€é]3(V~iÝ]x“Kozyà‘’¥“(†òjC_Õ@™Nî{)Bp™wMÄš—2„“Œ$ÉØˆˆ›?5ZB¹6|aqB­ƒ¦``‰ó©)ÐÝ O`LÊMãè†X^@:a tO”Á $Ñ8½õbã,ô‰99@´^¤_—'iß·é3ÚqxHvü¼`ÇálïÇU[ùÞ:û¿ÆnW‡­;ºé‚cuÜ3ÅÖá¬k¨]0èX6œ M1U,³wŠÑw@q‘Çúbh†y êÐq­¾n;wf¸] 1±a˜ÈÞW\Ã2ÁÖO[üŠ ›Øµ¡ê:H–­é¶…{}p-p”/:¸F_?!…ÀöÜ÷¯†j[zOW]Û2 Õ§«ôz`Z.œèÐÕ{ô 大 HÅ<Ͱ‘ú=a¦ü‚BQMÓÑ¢å†ÒMé+§º#-@i¢B]@íI³mÃ!:¶Õ'] A\òÕgˆN+|¨˜ZCšCG‡¾¢épr>÷qЦt–Ômî/‚U S×Ð [G'â7•¢m¡ä¢'_>¢»;»; Ô+ôƒŒ²jÿÙ‹0ßr‰oJµcò&6ˆù U…ô~ÊFlü™$¬„ˆhSÇ·ù‰È"}á`HÕ( S_ô½ä+4ï:½ÙÁµJÌR—_3+K%)bZzs…Xb–$3JI¬KòâNO9½°Ïˆ›­¦Xä…—]¢¯ÎHöÖöL!O+Ú^à¸Å½€ÿ§9ïtw0eH8a±@Ì®°a4"SxY 0Wºˆ¥AÆD{ļŸfi¹ç2Úp‹Üï…pÉ  Øñ[$%sD¹õÎõ˜x`eÐ6˜QÈhÃfi‡«/»0ên">Zôp-ÿæbjhl¼7³³¾»óçî̾î>Qm8¦pÈ×Ñ⮳²ûðº³6\ŒÍÁâù~xx• $Sæó1g£Ê`™z1ÊÁÅæÐÁIã £ 2ˆö_"Š–×þªô6L#N¥„½ò~~̺ UH'^uJ€…©ÇCé5ü2æWY,gXŽ£øZ~ÆO‹>ËåUƒ~×)ñXB¼¯pãÞªëeÞPnðqmewÿs¹ÞÃññBý¿ÐCê~uâÉ€«=8ƒž“\òôˆ”¦­…Ìü«éh"TqTC„ä·Ãf»õá÷J wÇk[ÒQµ\ØdfŽQÿô©õA`<Ð?,HØ‚¡ PæÅ›m]RñBãIa¬€nìQÚP‹„(K%Æ£§¡Ç1ñü4Ä÷õ§¡Û¶ÔoÃQ”aŠ£ÈÕÂÓ÷¥_6Ù¸Øì×Â#GPð?âûÜõönɰ%¿?Èñðe×c_ú„º_.¦ô+8Eõ›—òGš~¹®oQZ+ àí„û¸åxGDz?dFßa9œ;¸¶Eíñd‹y*÷9YYê8¥ö).á¶©Zæk}¥{ZsJ§³C–„e‘+ý”¼¹Èÿ MNYÚ ¼+'õÒ,©ÌuÂü¯ $˜(ÕÍÆ<:VtL¥Õcòlù—NeÎ]OÚ…nr0Š!ªOFTH¸Ä+Yw3•0… K”(¢[šeH¶×-)sÓ²ÛÀD´*O䳆n½EÑôÙußoÃ\:â¼ÏícŸÛ†Ý>‡¥ø>^ ÅsCÁýôä¢ßBv‹™M÷b4£$jŽîÒ‰Óëš[ÿ&ï3ó¨® õõƒ\ö±¬ê¬jÍ'aÀ|È=Vøjµ¢9»cÕºN0Ò’1çºq wŠÍ¼©?ÈÿfݹD/‘VõòEÍèZ¶ Øz…¶Ñg­:¯|çSK'ÜÕ²F»‹w> ò5÷ûW(\Bº¨U¤ÙÁrUš—£5Yü*RßפSÒ¶E£‹VTžefx —x_ÿmëâ@D*=Ц2a¬œ.yÀxò±ëß.ƒ¶k>hS4{ÁÉ•d¹q/»ðH³×{sÓ#Z‰9Ž]~,“±”[i•^¦rò[žN(}°q׳ÄÅŽT·D1¿?æõ»¶¸__˜ÛüñT75úóNÇèé¹ïþPKvºZ<ÿ¨YŸ ±–3IAR-STR912/source/.svn/text-base/91x_vic.c.svn-baseUT LjKLjKux êëí]ûoÛFþ=@þ‡¹PØc‹râ$r]€¦h›8=’²ÜC­b¢²¨’”“\ÚûÛo|sIkégÛe‹@æî7³»œùfµ\í¼à\°¡m‚6>ý`Ç'6t;=°ì¡ç>š#7 ü…ç†Àƒ>ö޼9‚‘s… ½zðNùzqí¹Û.©¡®¢K?€üÕƒ¡Öu¹œ{®yþlä\‘Ê}'BXfF`„á MIåÎëåímYÎP„²Ý¡º·¤BRéö¥ÂŒ´lø×Þ…àÌç]"834ýYôÅ ÌV — Ãm,êŽ/Ò¸/Œüà[|î(;¸¸o Ø¥e¸ KÊÞʺIÙ«j畸¬n`î¡7ö‰§¦né#¬ñ‘}®š:œŸÚ M8ž}u¤é0 >€j -PmŒŸ}ct ÚIJÇCÝ´àܰOˆLmL Œ†UÛÀÔU“ÞÅ “ÀûͶp%›}ݤªpÙì1Xê™¶1Ô·Aµ¨¹aÖd`o+64s¬tÍ6Ç#C³À:Qm8ÔáDôa`¨‡ŠTG o˜¸öÖÅ>‰¸H,ýý÷ÜPÐW‡ê±Î:A´âФ-D€6`Ý6 ‹táÈéÀa 6†SyG`Mð ¥c¨Žú;¬K0±tª}?äF #˜Œò`±!Ùª1Òû¸C¦Ž ÿïp£ÈpÒFGòî­}çù3òßÎ °"g1u‚)x w¾š"xÙú"Rÿ™ˆù!ñ)—?ÄšŒ¸ÄŸgvWþt…§¼·ˆP0s\—È™âIqsˆ&,qà»Î"“èb¨ZÿŠ+w¾*µµû†UªÞùzÄ.½:ȱÉÏ@ÝN±ºa_X㉩UªæuèÂ8^98ÐÝjËOæÚ <çÓü6T’˜„)Í"ŸØ’°lö¬ÃG[®}oØÐŸ"Í_̼Ï+eÞ´üUࢭ¸Â.©DÿLþØÜçȲÌ3LÔé´F^ò7î•xÑ·-øÏógpÓEåo¼ ÖÀÄ( 77ÈýM^;H-}AÀšíàvÆfµDÄ>)ñ=)µhk56pK«"2ïö¢$01PF{tpúÈXx‡£õð yÎÜû/JYYì¾ô³&â¶#Ÿ”yñuÎjá¢QU+qæ+DY~ËU”§š#hØ]Eù’¬ÀDÑ*XT îöƒŸšfÃÏŸ}'ÓÀÒ&êÉá)Âui’Žn\\àº[À¼ßæ>m¶2VKZ $\…°Zà0DO“´Øù2qUiLˆ?›QA<¨Á£È0ßc­B®Ùà ÔZBZ…~ëƒÕ2†?€]zø«·øÌ·†l÷ \"×›yØ›©‹ÕÕ',K¥:h˜c·Í59šc,w€(v|Âdd 3>÷¿à†ÄÖÙãŠÁ×K8ïÇ®6ic¢¿S²Î3L¤ÔƒTshþ’à  n#ÈæƒvëA˜“wÒ@¯A ôºÔåƒöA»|ЛzÐÄ:<9åÄÛFЀz×ðpñæ[„Ò`úH·¹š”“èÕ:U 6¡©£:TƒQ µZ›m° µ¯Õéj0‹‰jÚþh4ØA)|T“a`T—j° £«ÕL¥Á40ªfŽt›¼…uZ£«Û`U§«Á6gýšçÕm° Ó®{ÊÝÛ87ê&J·Á6ô_l#5Ž"ªÁ6(Já¢lƒ¢º\TƒmPÔ.Õ`Ø×œOøžºÁ6NÞj|”"ÆœìBt&Qä4JÇA:аaé6øYBÑíÍ{Y•8š;Ÿ£¨PŒ«OˆØj·Kïq#á”}rÓ›ÁFV~âeË›¤âw–ÒúÐyù3΋à÷LâO?åuÂ?âÞ'©PÀ†ßÚg·ÐkwÒiŽ”'K×­ózÂ~Œ( #î@zDDF×g˜ÈS®ÍˆÛ´H¢$­ç€$­Ï@’Öƒ¤õ<”¤õ9”¤õE”¤õÍ´ž¾…äsÚ!NùùBžj¬?] €Û=²oM‡k¤<Ù$€¶ó÷;èuUÊ“MN?BôöÍk÷ýÜÚ}r6 8®‹ÂžÇÃäð÷z7¹¨ û8®)§_Ü%ÁOÕóÆ:h=OæÎ)Kö©"îQXûimeÝÚ¼]u™¶+øüQZukTŒ÷-´U EdX¦:­ËÃÙ–9‡ö”XºË€xòEÞ5, ö ‹¯åÙFèDvÌͽÏ4òÌðLñ!dÉßÍ_Ù+¥êŠàd"³R-ŽWqœîöÂÓ, ÖåGJ'ým‰úhFãÅ×dvÅ6É­—?Ÿ©æþƒW[:£Œk}Z¼9‚Lšc`™p¡8 ÄV)Wv8 ¹²“äÊÈ•J®ìäPre§ˆ’+;IŠÆŽÖ¬¦Mì~‹ß´T.#JB§Ãâ$Ìÿ :äpIåõ6þà1¹—ÞçK²+‘Ÿ…÷Ý\ËO#-75ã ܦ%ìvéÓ><‘äé¾um>ϵ”†‰lÐL¥3Õ3ÿoÐG²,ÉêfIç~ÍÉ$…ôðe¦¥1ƒªÒÖ4™ªl –¯«s@’Ðf IhAZJÚJÚ"êoHhÅV튑˜¿Ðt·Wqñ.£5亮ccÙb_ž”1ë¹WS*0þ—Hœ•b é$Âlâç)7…I¦%™–dZ’iP’iåQ’iåQޥç·’'þÃHw±§UÑâ]ÕßöºqANLÖC¿̆g½Ã€rÛ)J2BH2 $!HFÈCIF˜CIFXDIF(arq×És–{åƒßo …ñ^Õâ/¸î¯Ç$Y;Ö9õ¦–GÞ ¾‘|6­M>Î&Û567¢äëá­ô5xö銜Îã,¦Åù1«ÙÀ÷²BfKß&KF›‚$£Í@’Ñ‚d´<”d´9”d´E”d´,ˆ’ÊòDË›N´¬ìߔɻòoɉ¯‰Sƒ·ÜÌ üâE˜沃üks®ƒyy§Lty_iYw¶Ÿ”ò3óý f¥s\Ì“WRÓëS€œ_ãw…c5ЏÂèµtŵÄPPÑn+E¶¸¢WâŠÕÔóº•EXÏ^+=]a=oZéÙÖóV\OL›½k¥h ®Hiá(?oÒÃUÔÂ'0J/¬©…_ y€°¢~¦ŠZø…¡ÖBO ¿@óaE-CœÒ«jáâ( 2:¤7–@Jä…„nJ5˜£”¦Gìy2îú¬mì‘Hb.! Çʺ#N…s EÌé‘/žÚ7Œc-,(^òþ“„ŠŒP)qX@×”Ñ5Ëéet‡åtG2º£rºcÝq9݉Œî¤œîŒî]’R +°”N‘Ñ•êOIéO©¬?%¥?%­¿ï("%æ<8/€øß7HÚÏ:|¾Âh‚7¶C— S91±%–2¿ÖL8Ø *ó­Þb+ØnãyÜ%®~«9ËtQ…$”VrÅJ4”›Ü“ĸ•r“eÆÎ]ÒÜ¿K+GÇ6Ž%2£0‘`ü¯3rÖ@–Cà}´ÄÓ'4ðôÌ›ñ~iÍg7®7•šx(³;h™x4að=–0-èÂõ¾„%ÁÄPbýcw¥¥Äèƒ<ÜQ‘ŽM­Ò>{>/(-òô6 N¢ËfºË.@´’#æ÷fº)5ÔBëë†"ÛDZHÌyé¹·à ,Žû!'iö^E»~½ÏOx*žê¡³Æ0¥~`;<]•)±ô°£³h4Ïcð#óê16ä¡pK-»º)0û>cÿrc—ÍŠÌÈ]O5`4¸Ì_¶û½›‘ÞÅ‚ÒÀE4š²H‚ ¸¼Ï¡°ÕþF0)^ /e©_žEÆK˜/M /eédž—¦Œ—*0)^%¼”-1ò¼Êx©“âåHÂKÙ²%ÏË‘Œ—*0)^Ž%¼”-…ò¼Ëx©“âåDÂKÙò*ÏˉŒ—*0)^ÞIx)[²åyy'ãå]qœ†ÆŽÚbd’ÀÍ Z8ÊLèã/¥‰ÂÓ§ Ó lò:7¨ºÝbH;Þ¬ÄVµñ!æÄõ€Ù¥ëL©Ä$]’„æ´6´?3ŒÑ°,Û¡xާd¢“òÓ^ Î0 ¥•M(CKôãµ=|žJÐêÏ¢XaTźe2yî‚É2Ίµ mª^`ÐÁ”_Ò4¨Â铵ü¬â*Gõ|… òŒŠùŽò¢µlð¹&üáƒ9Ök¢pÏq˜–3!vj)k+‚11ÛŠñŸ#CKŸžª>ýäG³¾ÅüË2ÝÍ”&š mÖð¬\Y ?†ÛhÔñ¤ùi}÷Å‘ñÓœRM†Z8k(kºõÆ¿Ïá~ìýot%+²)••îÿûõUÝõ?ßý½NýÕ‚®1EÞ€ç[¡…ÛÌ còéÿ†WÒ“+µDkoSC|†“"9µ<Ì”åU|}B›ù`’ÚÎæ¤~,I·»RGÒCå•ä„)r›eåñ3^ŠKE…|cH¼–ázdšxÍ‚çD˸Ð4s½u瞳Ų çž8€±OœH­håD­ JÏ»;]J÷ãx´œîÇñh9ÝšãÑòwÇéƒôÀÄ,ÝÕË]²—ºb6Ö ]úNW†ò; yš="¾9_kÎßJª*Œ!á«Dá}|‰ˆË0YPã¡#w°û¤ñ~íó†²þ¹¨õEõ9ŒhB"f=®ÿnÉó¸ÿç)>Äú[³S–rODû’øGV<°ü¢”MÌ÷´ØQæ‘mVªî$üë)AÓO¹I°žÃ®g½x« ñ„[$Ì Ö1#^Nkàk kÜ=×ë[~0 ·Q¥18±ßÊ>_‰×—vxls_HÏÙHg^ÜP/3ñ—@9üÆg¶EïçnQ¡Ž_;ˆù´YqçÖ…ÀüÿZ’AGˆoÞíò{ø¾ñèÚ«º>Ò[Ñw÷¨çfÝ ÛÑYçˆY>Êá Ýh8 êÛlýœÎyá ïáÇ ˜ÐŸ>â˜C->–Pù •œt(9êðêU-búßÑgëI¯=ýú}ôýD4?ÑOþã[nÝk,ó‰ÍÛW™K•SÊÅÊì&Ÿ V‡]ü¼iOë«ÂŒþ PKvºZ<›\”òú ÷R3IAR-STR912/source/.svn/text-base/91x_adc.c.svn-baseUT LjKLjKux êëí\m›Hþ)ÿ¡oOZy¢dÆ/3vÖ“‰DÑùe˜DùdÜ£Ø`Î$·›ûí×Õ Á`;ödOaWºŸzéêêªjÚ/r.T“Ï<¾û¨k·}5ëõ62Ì¡cû^`;ô=×±”×õù³¨ç,0YKŒøÕE4¾N¬©}nC iÎ=¥¯.Ê ’V«…c[¡ã¹ÈÄÖ+Vˆ ¦„H ‚5žBãúÕEãõ嬋Þc?€ó:í€ÛwV„£›s'@3àlå{_œ)µX pŽ‘¤È(ðfá£åc4[»6ô Î Ô¾€¹¾„žÿ­ Ÿ‰Í&Ñ„hÆÏ.7lDÏŠ„?Çf_Ewºj¨#ãžùAÒUô¡¯É}¤¨7ÖÑí½¦H#YEãÑà#’´¡$“ô¿×mt‹ä{ÃUÝ@4³˜ò˜>ÐF¤ûP2µñéê­¤Ó»„ ¦Cwå^6 ÒuEÕ))òlˆÌ12¤÷*2µ¡zŽ$ƒš0îæK°TMÖÇê@•M}<Òd}i0@£±‰Þ©¨¯4Фw•BJ£HÑtÒú%¡Å>"y$G†úï{"¹& " ¥[• ÔîHCàä[× ¡§‡TqÁ$Ý)^÷Di\‡ÒH¹`"¡{CECIQÑ»)m‘ #«,¦Â‘)i#U!é*QùŸÜ¦@”IQ“?Þ¢/ž?ƒÿ.^ #´Ü©åO‘ãÚ‹õ£W{_€úÏæ·ØoÌËÞ ì5½K¨kÑ}o†<2£}´ô¦k2Õ7Äþ̲1šckJ&J9[@ <ÛZÄÂTèVŽxç;_À“…ßVxŠg‡@f šã¢q†H1Á.­à3¢£!#¸=é ¤ÛÉP2þ•òÚõ¯õz£G?F{ ë !¹6±Ø\ÑV«'`é8X/BmË¥Ñd8VÔðÕ¬§± ËvÑÐ#F’Àå`™dR¾û(ÀVýµ€Æþé›·‰%•¬ºV3%{Ë%A„ÌÁêKdf¼úמÚô%Ï-×Å dÐUšAflei‘Eü SÉZßËw¬O‹C&I1^‚a¥=˜/;cGˆŸÿ|Yß—Ë”0ìE°X,ëRR°æ:aN|Ô%7òȱÎ0ˆ"êã±€ë =xæøào,˜—>0ܸ¾X‹5à‘æ®Öa:Êy.¦«á:L?Iè8\ûîæƒ{ÝñœiJ35ø~öüÙŸÏŸÑ ¥ƒt\‰˜lt^!dÈ÷éîÝ&úœÓµÉ„´©Ž ¾8»ÞÚHÑŒ¸Õ÷“ÚB¡%hÜ*6ZQ¦±OC˶=긑% `…mgæài® ¬,ŸP¤*sÜX”²If´BVÀ ô×6l|žk)qsƒ6뢕G—s ncJV¾QÚžZ™±À ù2sÖ>K5wæùKö™|ª ('ÑÍùOfÑÔž3*z‘QhÊÔÈÐÞ#ùK¦õÜ[L!˜‚›VhϧÞCdñäÕÛ©£› Þ«·ðýƒr;x3†¹Ã¨Ì‡y52ý­dúgƒBµx-¬ÃP‰r¤%,Ø)²¬£ßo`%íõäk$Üÿ+Ÿr„;©O`õ§ó;C±Q•bk7Š J½yCz7µÆd›Éʽë]¨6ST/¡g†l«"ÙVo7i[)ºíMi/«‘•{;’½L‘}½IöªÙÖ®d¯Rd¥M²íJd‰°;’m§ÈÊ›d;•ȶv&ÛI‘UÓ‚†­Ô=G_ÿ G\„x*Чä³ÁñuúyŒNÌ͆‰©.„³S'€¿l-°-AÎ Õr‘I;&ÛÍ ŠBhÿ'sM<tƒo1±¡’}‡ð"À"ª²…WA]ÿ-ÆÇ>Zq¼L挑ø2oÍ•Ýwí­z;£XImÞb«B2@Û4Bkz$V!J)ÒUm" 6cê+ŒÇzÎb lÙóŒ%£%^~"ÁУΑ,gÁi•p U§r£ô8wK„;˜ŸIö0Ý#:JYЇB‰‚«DÕâ tÃ’ùúõ¶>B(„ÊûˆÑU3Ô‘—š]¥Ý‡uoÖ½uX÷Ëú_Ö½}X÷Î~Ý3KRÒDqW¾æðëE™e1»OÍé‰ñ´¾ðŽÌÛZ`Ÿ­A¹‘nãøÞ:„Úù¸HT@<˜-,[4;‹ÑÊœ"'Ûå9˳Œ8Ïkó“L²øh±.hæ{K˜óÀ"DÁ?[¢˜QymýZ¼ò‰¯ÞÞéFÍ'.ŒÝŽhÞFSßOh;·8äÄ߃êw²ž‡T¥§’Ýì^Å2s êCà†>„ò–ϸKF•®K½ÞõÉ ¶ ŒÐ ×Aî€ÉslH¸é¶ŽP—¡£5ƒí2’üx>r½°x¢­.ë Ïs'±8Ïã9MF6.V̼ÅÂ{„R«vó£$„^%;'ã÷$Q™Ô»(ñ½È#fPu ¨ hí©*ïŠÓ¤z¾y 4Ê؇~£:ýæ1è7«Óoƒ~«:ýËcп¬Nÿêô¯ªÓoƒ~»:ýÎ1èwªÐWå÷]zOuiÕ3•[3êU@¤ ‘\ká=$eÓÄn‹Ò?‚æ¾-ö”¨f¨&øTxõÃ<;Êb•xÿÍõ ¶n´93ñ«ÛÔÖñ¤R/éfóÀ—t%ö6gã†$©Sü5. Å\Ø·oÑURŠèZ±ò‡®H¬oB“wþ]ÜpœY-¦sƒg€kƘñúK—ã"YOødT¢JÁ¨ñ’ª5Þ¼‰ÈŸýã&Ö2êÀ×vòäšÝúÎþÄ5’ͦ&ݘ×TDÚ[ePôz™ÐäÉ¥è”HÑ(—¢ñôR¼.‘¢Y.Eó饸£DŠV¹­ÓJ‘/Gý«T"Ée¹$—O?õ¯ïJä¸*—ãêgC.‘£].GûIä \ ‚(g/·ˆÑ)£sZ1N[2’ØòA²üìž< kõÊ é·d%)^åœO˜3Òñàpñ‡„ŠG/Eñ¡Üü’vhíKù>V‰éÜ ¸5ø× 5úZQŒvvú—nHP™dÅ5*[S*£ÏÞ~‡ž᩵ZùÞÊwè  Vhå× bïPlàQ¹›£Ö8»Iƒì+/GŸ¼üÝeû„ë|DìVV¦àûb·²êß÷»•ø~‡Ø­,—çûb·²œïoˆÝÊ2g¾¯!vëì‘h&öœÙYμqeÇTŽSœËælä~'’™çœñídÏ„¶²Nh<:Ä·²Mñ¤7_0m‹,ì5ÁžÏºñZšJ7S:aÛ±®ø»Lñ66*â(•gA‹Ô{Ö×qÏO>¶>ó×¥6ykìÅ[£2oxkîÅ[³2oÍxkíÅ[«2o­x»Ü‹·Ëʼ]ÀÛÕ^¼]Uæíªo¨ˆ¹ö^̵+3×>@q½xëTæ­S™·èðî†Zã”™% µlL±€;weiþŠÈ~EdO‘éº?3h‡:Ž')ýçÍÉ¢˜,zR½¸0žn…„GQ…#ïÕÁÊÆÓ”4*û§$%þåž~¹§­ÝþVîé4å¦]\Ζú¯¬EsP(EÁÑ==EÀËÈ_FÍõ&·©#:Ø¿ ¾tuágß2GvŠ}§Öϼ(Ûg4ôÓø‡>¥šâË¬Ì Ç€ˆŒªöYŒc÷œ:â[bIdÃ2jÂÈÁËÒâXfë"üÁÖ²Hº»X‰Tš(4'©©r2 ®|~¤èÌÚ¶Ì*6Ž­lG×öc£_ÈÆ.ITü Nš[^Òe‡\˜éÑ)š çÕ=zúÀ_¯Â ß¼Še_Ëû¢À[û6¢£B˜’ž½E—pT8ÉœÇA\„‰êNdz$óÍÛÔá"zŸ^´p)·›»;%8 "~é§‹\ü(æ[)çªEx $R;ûêŽÏ8ÿlëlÀ|¹×Ì—ÜÔ­{%*­ªLêÁïW9êŵXt²I+ÎH2Ç»Š¡âã]Ú%.ѯbÀÑy™_D*If!³¸èç4à Vq,±ÅdÁP7@þ_ UTkíX&šÖ_áÄ쯣T>“¸ œK,B?qþ]`»w,xuÁVÀ67:sG…*Èw÷±ä²”ùojÇÇ4^P[Ñ™ÑèWxªšjTl¡Y¬&ŠL”è褂 ‚Ð[qi„C¬m÷¸éx%³³`³_-:QM'Ù1 Æ‚Š<•Õ%Ò Þ 0"É"ÄÏ4eÒ#^Û܇ÎN™Ô‹íÉÑkAu™)”è1c(۸m“Ê(°Á‚“Ø™ñ)b»üF¥:Rà·ôzÚ@Tü?PKvºZ<ÚbA’f4IAR-STR912/source/.svn/text-base/91x_uart.c.svn-baseUT LjKLjKux êëí]{oÛ8ÿ{ ô;p÷€Âî¥í¾ÝMÇ–áüÈIJ{Åa(6 kK^IÎco÷>ÄÝ}à›!)‰zЖ’4Iwë?R[âü83Î ‡”ºû´àCjÝ:éŽ>úÁ¡EZÆkbZCgâ{tA'¡ï¹Î$ E¤=%}gAÉÈ^RÚä]óòdmûáó 6é¬Ã¹çùÓ&ÃntV«…3±CÇs‰Eí%6îÙ!P?‰k:ÅÆW»Í·»Œµ6ùHý)šÏŒ€ßY1Ýš;™!k+ß;w¦4 öbAÂ9%ÇÃ"7 /lŸ’ÙÚ ið°nùƒÜ:AèùWmüR´Z(Å›”­èÞ˼„MqO%ýàØ:ÔÈ‘¡™ÚÈ"æ¸o}êùt¨w‰n’þØ Çz¯3êjd<|&}h’Ž4ãzOî±i‡ša"Ü'Ý:ób7ô;–>C;èì*t¨HÞ;îZ&4"c£§¬+¸7$Ö˜˜±ô¡öœtæñÀÚA[Õ»ÆXh]Ëô®IÌÃÎ`@Fc‹ìkäPôÈ@ïì4Ù}&=Ý€Ö;ˆ¥øèØ™ÚßAr½3 ½Î°s ™\èí[/Ðp± ÝDúÆxˆ¼" €X¨»qŸ˜Ç ´X‡Qo—‹DŽM ;=ìN´…x“+‹ó–è a;úHë@†JÒÙµ0…·“iMÞ¾Eï>~ôøÑ.ðåNkœSÏnüAÌ¿8üûùÙËÁdÍ®2Ž|çýDxµ¢S:» È€„hŽKo$˜@d~F÷{2´ƒŸ T ã­¼uÒsûtAO°Éw‘ûj\öûýÞw¨h$m6ÁhnŒ"9ÙÆe£ÑhÅ8¼Q†! ¼‹#ï‚úP æ%Ù}ÊPØŠ¬Øß¥£CPQ’o¿`¢ÇbÙ%^¿K Ýü."T ÍèÕÚ×b€œö¦ž·Ú·'ÀÑ…ðoú“oà«xdÞ6RXYy3`Ÿ<: îY8Ï cì]ŸH:lJx[gG¶ï„W9 XÊw oªÀ9´ý)ã>˜B×s!ãXD Ë0 NÔ”`["+`­K㲯÷ÇzNi.‘½n#µ.‰qI°1a­ˆû>µîÎm?/37»‘5%ØÖž„`Ùu§ 5Út uˆ Í>þöö™‚µ!Ì%J¿+ë›*P Ëĉ[ 1ðmƒ« Z‘À9sí, ¢èÐ9›ëþ`' „í æ¨el`é¥` Zmc Ô,í –Ò@Å,uÔöq,ŠÌ Ó#ÆZe†,j–6¤Ø7 ¡™àu³ §ÿ s1J1= ·•±ˆ7äññ#Tòí~Ør&˜/iÚÂv¨î:aÁj£ ¸åØ çWÐM´À¸$+ ÍæÔCòé¬ oG€Ü'ôÊñ1õ°×‹š4„±\¬)[•@ºµZ‡ çé²M.ž’K2±]rJIc§I`™ÕBÄ€-Ý’õN C¯C²MFžKñ†AõïæoÜîÆïÜs¦²nkÜeƒõèŒ;ªËúãGÿâã |¡NíÆ*zb³‹gVã÷÷öXÃF¯2BÌîñIçhÿˆ©‚ÖNNX«m„˃úû­ {º™´üÿÐE@sý6KõÛ,Ûo³l¿­Rý¶ÊöÛÊõû;÷a·ûQÏ;å¬Ó·Í9{2üÅqÏÄü"ÁŠNœ™C§…“pqzI™A9nŒÈú7C S©x&>SÏÅ’S1÷y–íº É±ãbhvrWL°VkŸƒ™Û!™@ªd;.×ü˜9gkŸW^wæùKþ¾a R¬ÃïTT.e'§¾§Yus¯ƒö¾~ýR$W ¹îƒôz4ØTX¿h1„ôŒú=ëK~êV³>Ч½HßÞŒ§8ƒ®ñÏ×íW?‘S'ŒœcôÙ¸Ežì¦íïŽ)|b%eúrî.óý¶—UóR‰ý¹çó1CoEö¾…3Êc`CÖNx©øÂIÊ_r+˜…L&äiw˜Æ»y •Ã5#¸HN1M(S²XÂp Ü ¾ùɆ¿µÚÍmÃ)-œŠ†²+?¨‚ŸªÊÉÞ+„Ü·×SÓ´0eý5Œ4vëûô—Ø{­^Ú„åÏ{aØèÙhÑA6ý’âV£Q'ßï‰oÒ8å:H_Ø•F“sôÐKÌÑW‡Ï?ôÝ‘¹ä¦d­ÖÄ®Ÿ’Z¸NvI­ù:¾‘SS¤ˆzÇ>¡Z}ßèl¦Ÿ]ÒlHÓ;Íæ,ö2§E"ƒúŒ ó‹¢ó4;}ÎN >yÀ§äõË:ù+yÕ¨smz#ƒÅkê;ƒl¾j7_™7·îÍëù¬­gðò&^Tdï›Ì½Beû,¦± T±ìïÚoÕ’§á’&Ôy9ÙŠ¼¢`H“H"Ê>½§¢˜„ÝbA#H¤‰¸á—Ù:x«ïf5‘ÈoãQ†Ê8nѶÓB—$¡$][ÿÐûStFôã´À…ã­ÄæòÅ%OƒåA¢OEºCB¡)™þÇÉ‹z–k VYŠû—È7…ÅžÂ> *AqOK.£r!Ðw`ÄÔžÌsû’.OÁ ^8ö Æ¥uµzY}¼’g2/Ì™/€=\$5‚éƒË• ײ2*’ãÌ’\¡yÙOnJ,I>É}Û{¯¦LÒÉÂümSÚCÒ Øx:%hâdh¼{-Ò›ÒQ&êª(â˜n@cá@)Ö%x— ÜIyW…ìk$Bî=›"±Þîç¤wì"ºËi¡oàZ¤¨¤K…ËØ*küõ6ÅD/Ìl«M\z®ÍÌ›Ö2ŠË„Ÿqˆ ‚+šÕv3Q¼ypÆ«xm ¯½`º‰•ygFjÑ5LJDK™ŠðQ‰Æùô .„! ¹BÍÚƒqTòÀÕ³AQJ_¤m¸²q6ÇÇsë2gyoñ¾êsO¡o2ýXˆõ׫PQìþ"ÓOpߎ™IʈC$ðÖþïyУbòíê©$æôyñÜ„œ†Þ[ž:.«¶)…˜y h$¼ÄÝV4—å9Ÿ#ë®æûžß&âa?¹Ê±ýKÃ÷2¯Âì@ø0}T£@a߯bÐ uΩå,)øÂ6¿ ^@ïX Íòm7X:€}»7 •¨{¦Ñ&ð§"U·TÝ^5ª®e¶ žËª&Ÿ¢é[hn! ~µ10òœÅpÝ|5Ûaé^2&é`$ù¹ìBshv“…¦U"ÌUƒ†öï ö®Þ°³!rÅu!isé?".ÙÌž(–ª`uÓP]#¯žYÈðM™Gôé/)Âj£z>t/ÒŸ6ë×ÎKt…ÂM€5“ì° ¾c{ÁCvP? åòŒ K,æ,ŠÌ·ÉÚCr'±=oñ'‰¾’œº–¹—ûr£ž­ÜÃ|ÆŽ¥”4K¡t)òßòä÷[tB¶*.*†“0è/m1 ó,F“",r9ó½%#¼w‘bâÅ‹S#ìë­±q™$F[hÿÜ+in§Š9ÿVÖi™ÅuMj/;>žòäWçq“üÏà‰Ã'¿ó"÷ ¢S†Bz±g»Eã–e0n(ƒ‘•Ꮍ\thøkøø¼1î—}+›ÝÉdO×ÝTÐRãi:SÀQ—ÊŠŽ®—­™]¯ç'Ùž@‘쀆x u¾Š×s:ù9À‰BúE’Îð1Ø-n¹€‰º^x×Å2<¦ž]{0®q‚üWšo°d¡• ]'ŠBOÙ‘­2¬®Õ&§¬¼U4UÙZñÊV5¹¨5cE­jô¢ÂR¶9ßðÑ–«ðJJÌØÆ»X¾_Ô_/IŽÆ`ðREv8Jš›J0†,UŠ›jBí¯ƒ+>[ ~-MÇÊÄ5¸ÒQ©¯a_”-—‡ÛZ.U¢\lkQ¸<”¢4,~_qSy¸2_EâòùRqÚ\Á¸„HéGÊWä‘J#=aÒsòQ¤üA÷¨'€cñ§ÕΞw'õÝ&ëé¦éu ²Ù±õÜàãê·c5øÉÍiª°ì·Á)²‡ïÏ|?´©)[yoJK³x5ŽÕ&\*Èô0Ä ÉÝ/ÅÄB_i9\¹µ›[µÚ)æÀžøsØ$ô=מÕuïÝ>ôl‡n=2Hž6\ÔŸï¿ÍmïhB"Ê"|ð|Ÿ6 :]PæsÇžX¡í¹`2ë‘„»VÈP©„ Á‚MI¸vr\??æÐÚð‘ùõ¨ÕxL|{Ε$ÚÍ;€A›ûÞw{ʰÂ7#m7 Ÿ,ŸÁláN¨kp„º^ù!t·vzþmú, bq–bшÛZë ëQ[û7@lÞª0«†ª›` {æ'e¬Â§[­s š½ánî´®¢wTêýÏ hû ?j]M¿ÎaêØ uŸ4óÝ‹7h:v(¦6Ôa¬Þ(cþÔÆÔ½{×1 ‚ḫŽùPØ6s†òQS¨GÜ¡p@T`ÜõÍòU­3ª}µcއºÖ1À¸Uú}Ї&\«p«ö»Ð×”ë¾ÊU*úgèjc”> ]š.þƒƒ"LÝPÿu‡Ì5¥]e Ü¨†`€£H ±‚N_ÐkQè‡ÂJ Q‰I¶öÀ¸C£%6Tôî± w† ¥«Âõ祵¨5 c lK{‘ZEÓÕ.«h$¿Ó5siK¾¾Gï½Û{wŒ¸Ü‰³ 5uøâ‡tþÓúà—$n<ü²ú:˜,ø[`äÛß)N„ÌÙ”Í^‚ƒHQ›í²KÌë|´0–¾ÌV+(¿[¾m}u^2+ã8Hñ2ôÈ®[ë&|ƒúç<ÒÞß°þÕ_™_á¯LÔÞe³}.ð\½Lu«Ÿ&ý×r¼ŽÃ,ÿÚƒJ¬Qѕ΃åºÌ¡®™,^hÒùºÏ”±‰E¶l 6]¦¹v˜‘ÈÚøÂÆ&ÛrìãlĹëæ Å˜o9à³o˜`0%@è‘„í“[ ‡k\{|°½ÇY0žðp%Ï¡œ–ùmxBõ žab¹ð•A¥vttQ¥1^,é ×7\„²Â6èžË¨aÌÂ…ï®7¼îƒs÷ݳ§²e3]nïÝÈéŽ Y$¡³´§0§¶gaú«+.W«Ò[®ÀèÜÝ+£ë·×W¹¿çRªNi'òðM‚]ÍX‘<ü@-æç‘ú{í¹VûW@ÿÖj°*3¼3#‘DfUDÓc‰´ÈòuXçW/ů^–_½_½˜_½_½4¿F)~²ü…üÅü…ü¥ù5Kñk–å×,ä×,æ×,ä×,ͯUŠ_«,¿V!¿V1¿V!¿Ö?I³ZÔ¶‘ùI)æ'e™Ÿ2?)f~RÈü¤ôÌž–âwZ–ßi!¿Ób~§…üNKó;+Åï¬,¿³B~g_r±GôΠ镦w^ŠÞyYzç…ôÎóé©­ÌŠº(ù¢,ä‹BÈÛ@þ±ËZ4·ÕŠêPk2ñü©í~‹êPælbÏl6ͬCç–ãò:Ëv||#ôX`fV§‡/-OWŸÃÕqÛ0÷l‘2kÙÕ¸K!©>XÙ56L<7´lWX ÿ3³¿-|qÈe»3Ï¿ñWÚR|´l•?q•Wc¬oÕØRnˆy›£7LmŸ ßµ7nûF¶+ö´8.£—oÁ'JzÅõ§$©!ý6gSú\¤£ð ÁKó¾›àŠÇ=Â3±Œ \Õá‡nw ÿ½Zå)Ânñê`NÀ–ñGêþëüYØŸw"GªÈÖHLóÎ/£ß¿ýV±& tht7Ö“ns—"ÚÀCÊÞ9Ö@ø*uxÿ>¡<2ae©âÇO•,Wp$@x‡h˜¨ â®.[%A‚9¿ÒG.múk nþ¤Ò›¤õ 7i¥öÜD̉½öKÜ1ølÆŠÏ¿@‚ïëUYC o&âzñ&ÌèEdc§ðþx)øÆ–à[¯=7Þ~sKøÍ-á7‹à§½S¡·».F èS; SºÿÄÚ*Ë=ùt'+¦œoj£å ±…¤w÷ªK86[*…œ¹ëÀ7@ç–’çͱô3ùu¼O ")Û0Z£…ãF·áœ¹¨Ù¡áù2ªtqµ9smÉÁÄF¤ÿÜÓðÉèK#ÊDG#Œ]šII´,øC2ÙOT…»¬ …}JT‡Ë‹ޑTKË‚/÷ÔQ®þJ—a™åÒÓƒyíÉFçÁâpy†:ý銧¥a+«׫%X=µä†&zRY*UÖ©Ìü,Ëjã¬s™/-U@I>•úˆÕ$-¦x]o蓊fëÁ¬+¢êRºˆ%¢D}¹óµ3fÖô:gáP[°² ˜{>¯ƒ3×Éko€b4“mÞi”TƒGâ=q¨x¬ÄYž³÷*YØÎª[.=¡Ä–Žü 1Þ2Ds”½‰…2mX@l ‚O\®%Þ¿o|©V±2NºÀ?®ußÓº òYƒ/HS#6åm d1®C:ص—vbîzS+´ø$¾+—w¦4xòü©ð©7¹!—jÓåS4¯’a±Ùë|©î>F}òíå)ƒ…aºˆ&šÏ ¸‰Q¿Úaö…⫟Ùì6deŒŽ†úh94vj¬Øû…‰¸;T÷„æ ™›3v|`Û4¶dÆ#F†ÇE’^ôwðf¼7¶(bbš"Jýí51 OÚ„€O.×$çŸM}ãžñõ©Üïg*±bß. î’…¡ã•Š[…ÈòWW1w9¯§ < UI¹Á=¿ëÊ!ðÎÃAf,à-ÂÁçV°(ŽÆ‡¸é¸G `퉯ÚwuÒ;B ѺÍ\žñB\Æ´ŸΧs:"šìV :W$²ûL£´ßgº—8¦àÙ&:: Ä䞃åNá‚üŒ®H½)ËË6:{2B,ýÛà²'þUQ$±kNdÍLˆ‡_ùœèNç§ó„Äž•ØÞ–Ãé'vHÜ£XüŽâXt•¾ûZ¹…ªçÆ­Í7V»ô(EW0jnéTsºž™ùÞ£p¯9ÿÚìF…\ï:\ýþ¬E!•n&¢ØÆÕäT>óÇ{¢«´¢,¾‚¦VV°^V°QV°YV°UVð¤¬àiYÁ³²‚J¿ŸA6„–¸úù»Åyue|€y/;éø?¸åìº2zr/ŸKÓG6ÉÝÙRvM”¾·Á'¾¥[‘Üó¨kÞ»€©»ÌÌð‹>ép6Ú-ýo?•¼å6¼øûcÉSEÉšõd´[)%nü¨0–oäË7³ä›ùò­,ùV¾üI–üI¾üi–üi¾üY–üY¾üy–üy¾üE–üÅR>zU»ÜñW2kq)sÑu’õÄó}Ì=—ƒÛûä£úˆƒÞæ­Ðÿ‹ŽÁ¿cÑQ>|JŸò“;­ºÒ›„Ô­þ6c%¬JMÉíªäFk½öÜëõ:kña³¢¬ Í­ÖÍŠ²¢9)êô¶T”æIQs[EYñuzÛ*ÊJ ¨¨¹µ¢¬ŒQ{F@Û*ÊJ%tX!+:ÞlA§_8¬Ë­/$q㙨‰>´ÌÉÛüù«ªwéôzZ_–ÄÞ»¿PKvºZ<ˆF¥âM ýE3IAR-STR912/source/.svn/text-base/91x_ssp.c.svn-baseUT LjKLjKux êëí\ëoÛÈÿ|ò?L¯€aI,ùzw©œ%Ò&ªWI:AM­,")”צ{wöA._ÛŠ[”‡œýÍcgfgg×9zYñÀAïzãÉgÓ8;·á¸Õú ,{è¹QH|â&Qxn UC_ì½Ýó ŒœôéÀ_Ûw—q¼|ã"Ew•ÌÃÔ§Ã^ºË¥ï¹Nâ…ØÄY qßIÅŒâŒ8^‘)·~=j¿=b’uà#‰bÑ~ÓbHìFÞ’¤èöÜ‹a†’-£ðÆ›’߇dNÀ²&‡³äÖ‰ÌV‹#ã7ê‘îÜ‹“0ºïàÏT‰ãcTâ÷œÇòÛ_Ê ¶Å·:åŸ@bû\ƒ‰©YÚÈk¬ÛŸº¦ŸÎÞ9ècÎ.Œ~wÔÓ`<|†®1´ kÓ1ãFßAï²ÇCÍ´î“aŸSçbŒ>ìÚÆx¦vÖ5Ù[ÊÐ0qxÿ¢g[”Æf_3+úmö¬îG lc¨½aþDRëb`¿BO5zæXh=ÛŒžÖyw0€Ñ؆S εAF÷t 1Èîè3ô “R¿B,cÄÿA™R1G–ö÷ ª¹Ñ@¿;ìži×€r› •z®¶iX¨‚nއ(+Rm7ÖÁº FKmØõ¸Jpai0ìö58ýœY GàGn,.[f/„í#­O25j$ƒ½Q¡ð32oÉÇ÷è£{/öލ\ë¯0¤^?øAÌ?{~–Ycþsé­»boÿIäÝ`–Hî—dJfù+ˆÍ ȃô* .šFf¨âyΕÿó§3‰¹pIhöœ“ÈñA ؤSPŠKñ u×jµŽóû^Ì¿¶ît]ï+Àƒ0\©ã~…aH籩i œÚk(ól5…­î;×0tâ¯%Vøå’}aøm]Õv!‰œ ^xÉDÄ%Þ Âä9š f86.ÁÒ¡—¶ºÞT aÉlEB“‹VšD!LË©[èš­‡ÑÂI„QÄØž^`â$ŽåýA2*ɤ•'ìù¡ûÕ¤>ªR¢Øº^A8‰èÂíø$J§„¶ !.×g\Æ“~k·/„Oºâ?<|÷aµ”T—×Snb^RQêtè ~òŸNO,«›;5¤#rMKZ4@"a’sV>,=tNHBSŒ¿"¬$¢¹~¹JÔº tà–¢¸× àŠ@ h}×F1+ÓB+“„¡W‰ ×Qü`’dåûÐy» ½©bÕüѦnÕ'3,w‡/öþùbÀ›0[¾¯[‡øŽ}8ByÑNBË–ben:ä„”Vïâ²;90+°1——8â•6Šäðd]ß°2ÂoøñcB¥U¼ö:ñÚ[‹×n(^»$Þ·FFm\UQ¡†…ãºa4õ‚k/‰ëÍ<2­ ‹¥ƒÉ’YÐ $"c/|â$Z¹Ô‡IuÔ¼~XÜ”ž×©cÜeèT@Ärꥣ œêÈpà q¼€[Œþcæ]¯"¾9ó‚[(ðgúSÞbÈ­òù†uð¿*ZîeÁÎùì |xý¡°¦ŠÈÌ/³t ‹Bß)D«%bU~†ŽnrHƒ•Ê÷úCÏlÁ~=òI ÚH4[q©ø´xLîSÌ5z“ñ@Ê?_ž{×óC>DˆÍïý è>{Nü)Ì) ºwASZ2à—+ÂB kžuüiÊXUç_FB‡oü/Lwë9ûáí÷1ÞWÂÛ<ßNæNL6Ûï¼›Ùï¼{y¬M¯I…±´¢¹`‰¡9\1¡7—ñ"tÐz‹Iè&&+ñš±&ËVû «v‘çW²”^v_)Ræô=Ÿ8<‘è¦þ¥Ýiý®¼$nèî´b<)ÅmlŠa¸5a›­³%µØ.†cÖÌ;£óÎv)–ïÜšhñ,2ÐLж4© löBžX7¸%£9XH©¼’[ªª8W™ˆÍPUH¥rWÀ6Šj•ß{U³Ù/³á¥’w–OÚá`IT7ûÊ åIÁuyàD¸§°zæ—ß7{p~Töߘ®–´6Q€+=¸:åHìwïÞV‹º”.èM¬þG«^扙9¿SÛ wÆ¥„Y}y2e2XZi9}ËúòKAì’¡s;Ö$¥Í°Š£kä“h'¬¼ÝYqËE¨-quÏ÷Y5º®Ú»õ’9SZÙ×A8«¬ÖˆãγB·v󧘚V2€sÏíÜ£ o©X gûØés+³‰8(hXW²©Ô'Ý.¨Åá‚,®ÒÙXI®+÷êù±Õh##¾fU$»z`VnæEd±ÂZ‡J‹¦¨XZ•k’z\¾›±SÊBy{µ–º¬nä‘[ƒë±5f’‰¾­RÒ÷ÐÚ š¦à†È=‡ßíÞ¿·˜VæEnÂ7Ö¢R‰ËÛÕâÆtûõ¹µ:È-M8-ጛvoøñeš‹ëöëL&ª1ëÕ d¢óÜ(ªª­¶œVÇg†I-¤ì±å+,WEK*_̉öxyêkj¥P¬©e+½ª,9”*w÷}0›o lVˤ¦íûD ,»“Ê‘vêY W‘KXóúJÇT·è@QpZŒ )®܃.®¼€÷²xÖàÍBßo±À»¦ºœ>—öîÍÂȃÐ } sÇŸY,“{“NAœiÙÖ°â´GA­hõ½ ¶·Àµ'ÃMè ºÛh|ƒäAò€ÖæÅµZñTÎùA~”á[•$WíßÍ£'L±%ërœ1¤»Ûtkd7͛ۀÓúï<únÓgØ­«&ÒfKšZ쨘i4sÜšvÿ£§Kj”µ-zš¸ûʧÎô›}e³&Pdk¥AƤ¾ÿèYR=ï¤§î€ .¯D3(™q:é±}C¤µÉ'7ü-ãp_—oTO{„Ì#:’9ÿ-HÕ*z"aátÈ“§$·´ûƒ¨[š°Êw3šô!+xF꺻‘eîòƦžä÷ÛF&Üm³_FߢK[ŵyöKæ©à¹óÜo‘`Šý7•é_Z'‡ŸŸ$ó(\]ÏëòöÊf&FGHêb9ãÉ3l ëÖeü¦4Í>E^Bä {ßLï-d}[®qL‚$×½¥´ïØÎÛÒ•k]ˆ¯Ð‹0NX¨‰Œ˜)×ëê¾±K=È¡šû†='i¿X q.ð“\.•kbÓúû9G©Ì©sT8ÎË£Ÿ8â”ÒYvî%òêâÆmºR’1]ØÊ+¼CÉΩһJu}÷¼šYÙ­O”øNOâšiFËÏä·µüüì×¶´*îÐ6Ù§m„߯€¯jtí4–ÎH‚yÑ€«¸zÓ6'î×Ý:dÅe%˜áaê€x&F}-“]6½ôA÷¬Ãe . »Ëݲ¿<]Å÷¸¢2AŽâM(}åû…FëAm 4  [b0:¢U¶¢-¹tùî"n+"òåá¾S¸=Á­M¸±!¸bm7p+”ÚV Dٮɭ0Œ FÎ¥Ù¨$þ¦’}ø$9?Ë2å¼³nëŒfÉ`õË1¾5É5“½b¿ž0 cqf–R0TA”Õe·x³šÆ ¦ä.+ù É>|€_Ë,Û,ÃØcY’Í$Iï§–W'ŽN™Š*PH!–û\ËÝŽbr½‡âÕd»4Èc׬\Õ&V"Å*|U²Ì€Ÿrk›¼ -ø7ägÍ8"]ñN ƒaË wÊ~5cšä CÞ‡ƒ6¼{'íxz/ü8/ºôto–úºxI±£”rݺ/ð«*D~I¤€É¨L_–ÝýÑEÒ(¯òøU¹ÞZìôð*[ÇÙù”‹ò”ò'[ÁŸa¶~úƒdé[¤ß·…Œûȉ1»Æš;ñP‚_œtô°E‘üoC©Ò†ýÂ9=ÈùÁ%4ždiPJ׋•ìÿǽ}ÜûÀBϰùÔî Ö“aQ “õG²J/jsMPðW¥2` bˆõȾÞ®$¨ˇոϲD0ì ð—¹NkîÊ*¥Â’STÛù¥åD\JÄ.4×Õk¯€Õ\kùÎŒöŒ³Än ÕšÇuP7ÏåÒÀ’ jh›ÿ§Eõñÿ“Ð&t|±÷PKvºZ<ŸTü^`²3IAR-STR912/source/.svn/text-base/91x_lib.c.svn-baseUT LjKLjKux êëµY]o£F}”ÿpµû²mã€c;qµ&6’pÒyŠ·P¼ú`éh›Í*šI¯ÁƒgA"çv—€¹Ûíï:-å¦Åõá>ÜryÅ;„»ù6Úp’œÝŠv°$g›mü-«lBD>…Û`µƒM­¤:?ÙÕ‡h%Q°Šþæ/Që/r?ŠvI¼ýÞ§:F©ªeï JU´]—3 dmUÙùû#—yÌöÁsîüÍeð02õ˜Ü9. §¦¡Ù:Ç?‚fZh>öqîMô‡ O=ß±˜ëÁƒéˆSwxƒicwKóMÇ— 5—?EAÓ¥îÆT÷=ãÌåRØfÝ3ðM‹]‚æñ1‡Þtì¡¡lê®ÃÆL÷]Ç6u¼‘6ƒíø0`0bcƦ63N©Ù`˜.¢¿ VZ#FlÒÛc¿M1rSƒ¡YÚ¥AÚä…ôq¶kzÂëXdJfÖ/!Np–Ãs¼ØãÀçù2˜‡ð œõH Çñ$|‹ø|³ +6YJðfŸ7Øu ñ:äká>)¶›Ü0Ùoײ¦÷½0Á/q´HþDÕÏçgÿPžOe K“žŒgþÚfˆ¤£uø Ÿ°˜ù8Z lºøLwÍc¿"<\/¢%àð™qîÖ› X˜éOÁz®®2/ù}æ)»=ò&@r“y3”"MÊ‘œò5{Ÿõ¢ÊiQ¥ZT=UákSQõ´¨Z-Ú>mCóPÛ§UÛժרZ¼méõiÍëjÍΡf§yœÓšã¶{(Úmh÷´h·:ÐÞ¡f¯¹fï´fkB,œ˜äÌ2®2ˆœ ‚õŸ|~ç78¹E½`4o–¸ÌÛ@ίù_gó Ù<ÎÛ*TÔ¢Êëô=¡"›¸¯rš²y½‰H>OA¢"fiͺ­ÚdÐð­¦`þN³*í!iµà/k“¤@ô’Ñ*¯´Ê Úòûý›|×x #’,Q´ƒEÁ Ý•ÃãÜu;彩74€Hžk*É– ôTâƒKÕ\¿ÙÒEH¾tñ 9 JÁ.±‘âËdŠ S*ÈdKWŠ/“©‚L­ “-])¾~xx“†ï‘mòSóæÌoMö&8ÃX&aDÔ§M†Ý1‹¹?ñ? ˆK½KœÜó 8£8!V/é'7~Üoì3ÎÚäb„hî5'‘¿`HRìî…“r¶ˆÂ+JcâÍç$¹ ÄjuIÎ’k/¢d¶ &ïª;~¹c?NÂèk?ƒ­ ñ&'DK޽Z°)ÆÊ„¿ŽÝc“œØ¦cŽ\âŒûîGÃ6ÉÇc«{L,‡ôÇ69:µzƨk’ñhð‰ÖÐ!† 0ãVÏ‘î©ãއ¦í º–{ ÆÅ¬€ ׈m6ûZ6‚÷N»®“ÈØî™6#cC⎉c|0‰k Í=fO@8§÷9ZªÕµÇæÀìºöxduâƒ]rh’csÐ#Ë8˜ ¥1úDz– ³Ÿ#.kÄÿ¢ÀæÈ1ÿ} ’[Æ€ôŒ¡qd:\ v‚³€DÐp±mËAúöxˆ¼"B@â¢îÆ}✂ÒR£Þ>‰œ:&=“~Ê´…8È•ÅyËô…h kdö@ Û%Yì»0…Ìɼ&ïÞ¢÷Ÿ=}ötø &ó%ºÔ‹ï~ç?}Žü £ÆÅÅoãÉ’}ËèŸDþF‰äë‚Néì{Ø@ú FÀæô»äÊ´qÆr ¼sCLP‡Î,÷ÌäCø4nÍÕ =?–37}SA|B!ä]ÐÈ›Že_Î]!tbž94‘¡±qÓj¬N°i,§4nz}AȘN#ÇdêG”EIrî'9nôz …B^’tBF¡ ‰ã¶»Q'ñ¢DU#t ¥hQ{“£6>Ù‚X¸ÈÓBb-ݬ-$ÖSˆ ½øK¼Š¾Ñ_—4˜|=à °Ù/ÌÊ?ö?_Èy€þ§Â¬ñu &¦È€Õ—âƒf‚©M‡á”Š™›7³"g^œ(38¶ƒ".óЉ2…ÍzÙï%8¦Þ”F`ªœý¢™óYÌ<9Í‚«_z|_¼)¸ú•ù¸tßÅ e.)GbpªŒ»ãwóx·Ëú¤°<ók³µìQ+ðMRÖ†/|ò½¹ÿ¨Eæa‹,ŒEô3äJÝ$Äq?Âhì-ç ßʱxråÍ—”ån°)-–I6Þ~nÚE2¢mkq€0±z‚ÿ·IÎ/•@›ŒÂ€â€M“e¬ÜíËxúSEÍ5üè‚•õèŒÅ››ú³§¿?{Jˆ?#8xC:&O¿d#ûÈ.*N,@CQ;×% W †Ó==3Nù>Ã`jggñœ˜#L¦êo7ÍëYN6ñ6»ÀY³œ³fge›yÆÖL+òõ5wû”úH©‡XÿP-×›LÂhꟅƒxA'þ̧S­1/¼¨2ýùDȨ ›!q-'`»ô!üG ð"åÉa¼´É"ôàEB¥ƒ<ž>.L ñü€«þ™ùŸ—¯0ý`F—ü3|Êëiéõ˜Ê¾÷' ú 𼨵݂’e”X6_“kð ˆ°¤ƒYCŸ9Äòe‹LOºƒŸáËÖ ö¼Ea>zÊg2‰áÞÉS¡óÁLü“8£VßmrT ‘Lœ æëŽA oÿÒj7þƒù¦ô{¢{9åñ£àÄ€¯;§^¤p¥Çpóâýذ[d§£ÉÄ$*Ìe3D Á”.hÀ|l‡ ©HÍ¢ZËþ®ùúõ³Nvˆøê=ir-6ê,ÜåùÖa9#Mç1e¸*Òâ¸%`¯JÀ^Irz°×%`?¾|ùr ØA Øë×k©%`ë™ì–€IU–Á™®`,ÙÆ ­EJ>Ó@ĵù\Yμ˼xÿñ©]œÉ÷/õ+Q0d;#$ª É{×FÎõȲ‘Ç,h=êUÔ0ÃÓ‡7ù„×s:ýL/!Íß còEª>®Uñª2<ÛH¿ëN†µ øŠèç„×ñDÙ[ˆMÒ!:d%X> è  þå§öÁ†T,ûÔ TĨƠ¼#h+c‚“¦x¬¿ÿFç"°GÂþID,ŠHr 5âËwuÜ»ŽpÚ‚Y89dœØðd9ÇÊG®c¶A‰»¿ŽXýÅ›ú~ëmF”Æ1sUE2a‹Óî;Cvœ™@^0Ma2Áº§>žGEÃËê¤ÌíèKìKÕ9ƒj[Ueì6éó•NŸýÛ]éò§úþËõºd[uN“™L•µømõ"§ÁŒ@=,AÍ›yÌÜ®6Íç*EåB,Ÿ'O6dþiâ_'Mw³d^—ªß>櫱ò\_ø“ ríÃŽrŽ+)Ù›–§ÀOJsà=V <¹×T8Óv­ kYöËŽ±‹jϼì’^ž«FUîòc.CÖ`UïF¼Ê\–”¯E¬f$1çÒ—5YA99Üí7’a)fÏ}X÷ƒäOëj<³ˆ „ª)g-^­‹5ß}-­NÑkØNÚ&½Æí Âx8Ó›íñ›Î4>”¬‰D¥õÓ-jÚ{¹WJ=NWÓÊEöæL/©‚Ô#/ùf¤"ã×f¢šÃÇ󯸗%ìpåÚŸð9'&ÛÖB~z;Š<‘*Í]ùU û“5csZ ei­¼ºyœ£,?Ê®p´î&gÄL Ixy¹ ä…?¿ø™„PWãÿuµÖÙØ…’Âã_ÍÛÒD9ïÍï$â½Ô“Ôû¾m}¦ˆ›WÆz2;*™BaøXN4>¹…Oß…6ùP¸øp!XŠñ K]ò5”Þaoï?9Ì[¹Ovþ8Þcdç?¼ÂÞ:ëCPNÈŒzuRÍŒü×_ÎV–Põ"²{?ùßýœFn…¹üDò/"Ý[x ;Uˆ–‹äQýe½Ãäk¹”㽺ywúr¹€á/ùµ/ó–´§­J™³íNŠöQ=ŦÞÔµŸÖ[pBL¼à+(-ñˆ4bv<óg§÷î0¤lá¢pÞÚ©úSn“û"¥Òõqêy³p>¯±Šæ-eœ+ uí6|VŠë27U`» @ð·P‹µªu{Ýjìá]Q›°£jP-U‰ÁS_¯&“Ê\‘jûØæ^Pq >5¢…Çx½¼õÜíQby°â˜ºÜ;Ƨ(g¿B$¶]°—è4¢x·oi{©¸g“Ún ÈìÖqVãìÐpLò¯"@ñèFÁ¹KÇÐ KÑÍ`Pvèé¦0?BZx)e ¿¾’’€2V4‘?“åù\ â^‡B«B¡1ÅûCH˜èB«CBâkvŽŒ+ÑÇÿ{Ú‰Èì¿o•>EÖ pN± ´ÙP±’-V27“Lœv‰¢M½U†ÎÁ*¾¼-ã‡Ç.ÓVÞì÷L0†ñߢàÔ›îó :Û§1|¥åÞ‘Ó|ñÅ&ñ{ê­~Ò`ïÆ°½Y†\"dŸ‰ø•õçÇëÄ ùÓ\R£%ÎÃDQœå£¬"Q6årY'ëªÙ0ln4"ú•ÚMšpæÒ%­õ»Ý&+Þäø»×ËóTaå?%’/Ï¢ðRkùô“[ƒÈN•„òÁo¨^œ°C5­5‰HŠ³È…·XÐ@è3˜ÇûE™r»È³š²y·š‡8QuXn º[!Â>¦À†î²‡—uUoŒÄ•.ÝõAÙ±)oØ`Š‹#îk UeÆ¿ ’ ­½J_BiQç¬=#ðð¯»áED¹µkÚ1˜5¥öŽWEô×%ÿÆ”—WŽZ»Vû{î¿¡­ä•-Õsäò=˜¯Èv·2% ܲ‡1Õ¬ñÁÄdË6çlh¸Ýc³W øð“›¦•·Íꉭ¡‡†ÕOhö#𷇬LõVòª°ß)°X¬f£š®ñÜõ¬gº•DæÑýù¬oXƒSÛ¬¸1ñªF\ãÓ`y)؈ê;uN»]µÍŸj>}ëQ™¶=¶‹ˆ¦þlF#v‡%ÝÝ>uU]ä# &Ç•[[ uçÊo º]ïf¥#àú" ¢s½.SRJ ©êä˜ÑµðÅ€lK$ëàÀ[t °…Ô),f))†`ãQ[•ß—6G=üܾ50ÅBÿPKvºZ<;\™"3IAR-STR912/source/.svn/text-base/91x_wdg.c.svn-baseUT LjKLjKux êëÕZms£Fþî*ÿ‡N®jOríÚ²ë.ÉÙµ©Â€l*ò¶k?©0Œ¬© P`Xgï²ù÷‹¯{P­ã—løb‰éyº§_žéùè ã>}võÁ±..=8¾×›ò MXÄ‘&12蚺¿wc1°ýƒê9…ÿ:ï’Ðr±LR¨?§0Õ ÐÖ눾àI óW$lø‚!fš °²,g! þytüÑ´ìnXšÑŒãÑœÀ² åk R¡{KžÁ‚,[§ÉG² ü(±dpk\@–,ăŸ2Xäq@3³C„z懌»ä™HÒO§ôqrB‹ø¾±ˆ“rìíc}‹‹½K®Ó5mÜÙØ»Õn/-ý,Æ3.®-C³uföähÖÔÍÃ9³˰ì Я]o65—àn-ï“KX6NŸjž5³Á1/4G¾E…–CÓkÝsQfŽa:RŽMÁ›«Ý˜àYSóPæ*D÷zâ½¥LµtgfNLÝsf¶¥»à^j“ Ø3ÎM¸4'L,í|bJHÍþ†å ô[²lõ•¢™¶kþûWni0´©vaºj¨íФÐÐ'jÙŽåÒÆÎlJ¶ ‚xä»ÙÜktZåCÍ6ŽÔ’àÚ5aª&œØx‹fРr–²mã/‚Õ,Û4pAމN²ä;¢aidÓ“ÏŸÑGû{û{GhWD9•Ô»'?„ù7®ðàÛ’5–ßn¿Í‚\¾EíW)ÿH!>­YÈO1‚´×ÇìI«R>’¨Ä3fB²=Éc<,Móµ€qä߃\z¡eçã‰v17u€Ñ¯£ÑèøKpRöKÎ(·¡,O5¡*0Wø©8rE²†€YÚÐÕû¹-`NúD‡DÆã±Qé)]ºòqyZžl食rÿ.zJöˆ»GvF>E?fL r”3ØRWn´ˆ„rîÑŠ{Ÿ¸Â|ÖGîååjÕ~~*#m0+æ¢c«=Ҹñÿ _ÊÝuÍPhÉR?BÏ–> ó”ªÌÏ#‰×zj;2RÍ:õ¶ÁNbF³\ÔG6y·ž÷Á|LxXóÏ€¾÷÷þK¡põë¹vu~%]áвó9J¿Ó¦½hxpt°å­<±¥´ÌÃ]0†åöâ(„d±P û{Ÿ_ _úÆiˆÞ¤Á†1ª’eNb–•TžÉ‰9öe+¶ºCWàÊF_ÅÄÁ2Lî!Íã˜Ç÷°JB¦ò¨9ýÝô}Š£ðÊs¯Xz¦j  œ%y0¢$øºÕÆB®~¿ýf®­ï tH¤WÌ3?*6³nc72ïi¿Ú˜Ùĉ?Ü"%$FòÚ%Ö[\V‰ê´àA’†SEÆ­YÀœ…)¿öSÔ(É›ÇzUÞø’¢ûÒšCx¿»¾ƒ$>aà—¿ÏSudäñ"IWê3~êØ¾¶âì*Ëè*K™š|1èJÀF…t–ÈrWw½ =ôn&E úYñ¡(L•ð2åßý¨;ð¦¯ø>«ÂaQÆ:Q Oß(êQñ[[…#Øè(ÊS/®»©â²»¨µnø•SpG/œõ£¿“åÝ~³\N=+mï  "ÍmÖì  Iî‹Pƒw¥ãv„†–Ø ö[ ì6¼oáu¹M_…ÔfƪïÇJy¦>÷”|»mdx–ìbö€´C8¨::ÖŠªñÀq¯ï$%ÕÑ%eö• úpP:×äÒ+@¹ñcvª\jDHÙ9ÚJÈŽLD„ g­­+&ªä“çH!î>ör‚¶!W‡;NZªA‘&›óB¥¡Mõ£é™ú¬þ”I¿­¨•ê b~?Zù›måɺ®»§æª^êñN“Š*‰æ'öé†Xèøl÷øÉ–Q¯Ü”xŠJ]½õë©7W½Õœ©jn—s ‹4ñZ¼-®Ú¢ðOÛUþÕµ…Ã{K½Vé=)·IV –k×M-cZU¤¼mÚµõ*ÞÆzû½…ýºÙ|ÁDQîùŒÃUÿ[©úÁ¡EµÚsbZ}wøÎÔEï¹£¨šþøÃSÒu§Ø‰ËùWýêdd{[#¬ÑœGç~@ä²GúíiÎfSwdG®ï˱/°rÇŽ€„ÑÃpríÙvýå6Ål¼s‚[Ô·j´ŽwFÄЭs7$Älø_ܱ{:%ѹCÚÍ ýIti™Ì½¶ ·Ô DîÐ #?øº‡ŸaâEb ñn7;À:—7ø[ÀØ:ÔÈ‘¡™ÚÀ"æ°k½oy¨·‰n’îÐ Çz§9hkd8è}$M½o’¦m†ïôŽ>8 ícÓö5ÃDpïu똋¾Ðмߴôá€ÚAÓ O¡CÝÀæã¶eB%24:šA»‚w}b ‰Ù|§Kïk[”Ÿ C`÷¬ äT½m µžÖ¶Œá@o›ÄÐ:0 C"éôÙÂ×É$%ož£·üáǶ/o4£Hm^» ̸ ù»ÐçO? Gsú”ö¸_PKD_gÎØ™\ ì_‚Ð\ϹָR/lP£×#ƒx-Jˆ¤Oq‹U÷¹ºº:Ñ;'}óí†øÜ4Z¤DáSºxtýà‚jݾþFloLšÁ©LçÎèGÐhä‹=Äú¨³áÁb¦Ø$°½3‡øj݋܉‹À¾ØÐø ìÅâñ™Àó0‚~í`œ °r®"ÇCc½–¯<ꛞ™p.4šƒÏG…ú†DŒ'€põIå•Êâ+Ù$rÍjµªSš.Ñœü“HÀ«(~ZWÿ ur.´L`‹O6þ_U4AMðA¢É¢‘iuNÊ¢2¯?¯V*I<äÑl$c«]½èv«äÕ+ÒñLtYL,Úer=ŠŽ’]e()F’~QŒq†ºLú¹ 탕 ñI¯ô—ùÍR¯Ë¨fú:\ÖW†Šúûƒ¬À€\ã#km§š‹%nŠ,c‚bŠ`_«QdY Š”@.E‘$ž2KMTl&˜U9ÎDûC¹½J(î*À³&³{†BŠ1d3‘‡¡€‘ÀPœ¡"æ  £hGÔ,Fî…ëņÛÁIà_ȯgvF ¥l 9ŸœÅJ:gõ ‚$ü|¹ANƒ¢^¡ï›uŽÏ ªê †:k¿dªå%`â7;ôÍsö@‹;ÝxxÂãùb®}:½Ž{È-µöW4ô³ÀÙdƒgI’°ñ„9%LiÛžE[„¿~"¯ÉïÜrtFj"ZÐÇëB,S;¨³? BÌ¿'¤eQcOd¢×â»ôß3#€äh¶w ©×jä7» ® ÿÕ)ô]²øóŒ»9w%ˆ; ñl)Ä]D„µCÿÅ;/bãÙGòrk‡,þ(!Öð`Zëm0y–5ƒÕ`ëâ¿<eˆ„X'}¡ ÇÄ?÷Sl("{LD>† +3$ÂÆŠÜ™ï4ÈuÇÑ»•/>ˆù¾²»kr=¼ÙBS4‚Ì×ߣÔï8ºçFå]V—=xà(מºÿ*‹$ËÌJçN`O%GÔ¼w µìù4ŠfJà„NĤ4Ü*›îÍæÒ öÈÀ÷œü&ËÀ ç‘ ïºà 'šqšêºàn¶÷!_˼ÁýÇ~G‰ÝFôqJÄü¦¢7ªr Ö4ÛÇ'Í£ÖÚ¦rr-6´¦aªûñ ¶Ÿ¦Å Éâ°€wÅtE.¼Žn&fà10þd#ªb­bö-B–#fz±Ù£‘ŒÑ82!#áÌa[eFBWRšš!èøTÃyÂW}ìІmã¤ÝÖÀÿK6Ú|C_Ò¹8Š #d:Q‹9XUCþnQ¿çØ_œ¸ãÔsË Ï×+Æ iDìÉ“"†ÈfÀÜé4$Ž=:OQŽ\8§ —ntNÜ(” ÞÖ“Ä%REJ‹Õå¹ H,gÊ% JN²0æã•„&W ¶žÐ²>_LS9nê ·D/I?2'¹®ËB ˆšöóªs¶§µÀ×­¯Ÿc±,©ò@Íg!p^ƒ!-yTµÄ†(ù›7Ý‹íÓ÷ð˜¼ßÚ]ÝÃÍ–„ ,ô.Æ.œ¦’Šß|Ó² `@)@æ•>íSgï2pqå—PTôÍbçX–q„Àjû„‹9M›bMd×[ö|L äº#Ðv#{ Z‹Foëf~6ä•"ù…·ÁÉCU:çÞ‘¬GÒð2¼¿Is8u™÷Uú9»p¼´387lVBûb†ëÛ¨ü·”úœ°eð¸r1Ȫ7§¶çÔ‰.ǃ(AêÏ·$Ü2…áÖØKbdO¨éI#”î:Á%½Œ…=£ðó%LÂWotŽ»Bæÿý{~1#ïÝqtžACô§š\UÉÁkWMðMÌºí©¸<ÑA© ª5vË{åL!Þ¶:d"Oµ!O—Š ö‘¦M©² f*E¹4ݺŸV‡qªôÍ̲ëZm}œ³ZyªªÎFçL×Mèþœ @/6 í3t­'öÈÙ tiõ Íc×¶df¦™3<¡*5\s†¹u'pνñq¦¡C·ÂÈùiHΨ€E¥By/ì‡gÃÓÏ¿Ö>mµ ˜ŽEoÆIëØüX%¯ÁJW±fØè˜™›J‘ÏB©—…R¡ÐÇüiã.<Ûco:c6€X Ãñmžaà¨`ÿô³q—©*ì(\†ß/Â3hšvkûI¨Œ»6¸è`H·SÏQùk‘hAà&ðßÂX@Od\¨¸—g8±l⨶fš˜º⃹©ÀáË_œ¤Å@4Ã82Is Ül¹“¯à.jMؼ AäONÜÉë]“à²ÉžQXÈo•ÊQƒÊÑï a¢C¦õ'‘I ³/ì|:yo$§üWí7Í·%«6VÉš¸CÍöJÖî4­fs…º­ýBôë,øÈ¯Ðr«4—Áh.‡Ño/­ÒYÚOgÑQ^ÖR-Y5óX£N~âü»Ïò㜹àÞ…ö¶®VÒÜX¾M{[r}éœØì64x¦lwŒ9«t7‹mmtã#®‹SW #Š0?g¾HëApï…nÉš‡tc’$aJF’#ÛChlþtê_ÆÉ°Ð2À él[¸o‚TâÌ‘ÞÙ õúæ©‹é¹¥Íq¿6—6ïmÆ¿hóü¶¬<Ï;1žB¸%ÃÉb.Æó·gD y4£×6£ Û%f„MÎÀBžå©(°ÆØ>ô;:›¥B»‹µ›XÛiæ¤ ç6ÿUŽG‰üÕjÎkæ8I¦ÛU¼kІâD‘h9¼h@Rqnhuê(Žõ”Gk‰ë¯@S!QQ³d@`$‚c”<ƒ‘Öäg9hÀóÕÇÈ¡D)ض ÖÉÛ‘ÓœNΉ-l…‚¸j é ‡‹%£´ÿ×GïíF×̼%ÖI©=}͘=ªŠË¶-¹äÙiÀߟ~ªÆJ ³ÜãÆO×ÈŠ†3uìÐáqá“%lÈk+£Ôó|ûYïG§sýNg’…îÓªe»gèëhБ¼.ëƒñ‹i ´÷à~å[—ûj9Lˆd…p¬ÆÆÙ-7¸‘F¤ZBzï Žv,ÖÅàî"ã„ÌÚ¶s•Ø—.+£Åk~žƒtÐØvP,TrXÊië!iKž¼áÛ²*CžóõD¥1Ó&¢Ò‘íÁǧbNåÝF%6å©õ,$Õ† Ð^“ÿQäP% ßr½´ý€ÙcÊRòe"¸ARp2øbQàO¥ Ê2¢ „œdBI•ÇZSªœÛ§Œw>Û|/6ŠŒã/é9Θ§ádf)3ä¢x½Tü]:ô.uçܺbXòO9è’ö¢qâÁ¤0#H–$ñrM{9½×®´Z­Vå¡sâø?—“Í7ú8?p¥,s1‚Š; 2}|3úŠ TPq S3=àcì¡«ui"(eÆ\zÀl<<ˆ;ìLG9bÇ£Uvâ>XŒ_ëŸ^½¢÷$×>eý†ZÔªí¨5rµr1z¦´›(£j@Ï?­¦œîØ2XªzE‡Hé šˆj6PCðTøxk}ÁK¦lÔ¿Nw#<þúÎV5¡  ¬ÆäòÜñÈ™Ñ=ÛËV:kyC=óU u׸R!ºÏ[0*ïFþA¼Z3Λ%Â|Lè}äÏ\ÞïCq#QŒ˜(”÷!¡f`i`f×gÊÒžð$éâŸóB¿òo4rïmÙ²ÂÃÕÒQgÒ}4ÔpªÎS=í<­`Ü–óÉùU+BÇü¬ £iFøV¼´ µJúÈêƒßà#³Ê“ ßì,J^[ð‘Ö{ö3U2Žïï×.u»+ºƒjØ. Ô‰XŽDuŸdÛþAF5Ó¼¼-ª^UôH[©›q7¼LvoTãE—”]>6®DsáCÒ£RÉú̷ñÎÁ5J7D?q?Û .dèCK Ð˪¢Y£ Ÿ†ªŸ‚~ùýìæ÷ÓRŽçY~?­‚ñÂp6OµK¬ªdî|Õ¾¸™»0=ªdlÚV¡å3>ÆÿÄýæëèÍ–Œ†I^2Í䈬ĉ¥™’^Çoô­h¸v~OpÏJSU¤Èã•;Á1ëRã)9xTä×)ESW¥È‹y„L£ñjZWƒègØ%]½§ñýPKvºZ<öÙÌäux2IAR-STR912/source/.svn/text-base/91x_mc.c.svn-baseUT LjKLjKux êëíkoÛ8òóèàí¹d±mlwÛsÐYŽ…óë,ÙF÷‹¡Øt,¬#’ÜloÛû÷‹Ã‡DJ¢dÇ©“ìEÀnl“3œ‡ÃáP}óCÁƒŽdô‡ÖeÛAgµÚ/ÈvºÞ, ð Ïâ0ð½Y„Š@_¾øµ¼F=÷£ä©£¿Ÿþ>½™½žA‡Æ&^!’Ÿ:êMÔX¯WÞ̽ÀGvo sÓ1AF1²¢hƒçйöó›Ó÷o(au4Æa§¯kG³Ð[S$ vgéEh„­Ãà“7ÇrW+/1EÁ"¾uCŒ€Ñk‚éž ­íEq~®ÃgÂÃÙððNááL´½ÍówÊÛt¼ж‰CÓ6{²û-gÒšhÒ¶Œ6²lÔêÑåÈj6z†‰ú½ÎGÔ°º6j8¦?¶šVï#ÛéwÍ¡ è&–Ó&¦E¬ï6«ßCCó²1¤¿’­!€7G†c“N¨?lšC:ië"§ìÆØDŽÕ5_Ss"ö¨ãüvjþÙ1 gØïY†ìv£ÓA½¾ƒ.LÔ6;MÔ±“¢lô>¢¦5$½\V}!ƒ2{¶ù¯áÜjtP³Ñm\š6「6€^„@`tÛCËZÃ~h„‰²ë·="BKdØè5ß0–ÐÈ6Q·Ñ4ÑÅÇTZLXŒ¶T^€¶aõÌ&ahh!Yô·! š)‘ª$ïߢ߼|ñòÅB—?[m`F½Úûœß{ úŽûŒåw٣نþJ„Þ'ðñç5žãÅ>4ÀàF‚Íóñ^Le0޸ăî'¥ ÆOnè¹W«}dÏÔø=ç¶kLûMÞÚ8ÇYû½V«æ›‡8‚ÐÜ23ðFW›k•¡/²ÐƒASØ÷j›#µÖ2ÃäãBóY-×Ȇ­ýÞj5[XG}[Ë5 ØZí" ÛtdØ÷µ\c û.?îE‰¬ µLV¶“‘• m*z8­åZ%Üf–2Ã82xFž´Y‚ÿ9'Ë6mCFª¼ƒ„ã§¼dË ZËìÐn*Ã×βÖl³ÌP¡¹ÔRGø÷ùfþÊ"«2¢Í¥*šØ%O[SÓkf§ËP<£¡:vÎè/– ±zh• sf?µKl Z3¦¥´vJ„­ì/¹‘ÇíA«L÷»Lk§Ä^ U†ÍšË`ÒΚc¦U†nfZ;%ZeØìDè7íMCkÝjå&¡i[Za7„ö·?æÜîðtêX½i·aÿ“¢hêƒá´ëF¿±PœQ€”#XR’.B:Ò2'ÂrÞã–ú¼Ì™úû-œoî7¢¢»'Á+ÛAÕ©«Ã–ïÅ››:ùÁ#Mž»òþM„Bö2kLÚ—8tW(Ä×d¿Av(`«ã…Ô¸›ULšˆÆaîùä®6˜îH`·ÞÄò­øú›XnI†8Þ„~¾á~"øO7O%s _O^¾øƒ ûòBDת0ÈþoãÏqˆ˜±„lc4m .´m8žN»ÆÈìÁá䌽Ã,UxÈ*ÇI~ùâ+‹œï÷ÑÖt,ÉpøFXbÑÍ‚pîù×ÜxP´Æ3oááy¡Ù¬Ý IÍó9::´‡›YŒŠ ÊR:ÕÑ:ð|‚†t‡L÷&‰ì#ÚgCvéñÒ-¶ÝYàÇ®ç3vÈ—…w½ Y:ÁóAxÃ>“Oy†_?.æf­JàU¤`ïÜ8mš–¡<„#Â%Q[7 Û%fžÞâX}õðË¢'íøá™x"$i›Bã à@t0”¯éÆ.ŠC×DoÒ˜äé¯þA–‡3ôåƒÎñ9Å0™>l_(¦Ô[ *rG ×áM¹/JXöE‰±¾(G$?_Ò˜èœ7Ó?_éÿñ*ÂûJá(‘õçt„]Ó‹ö‘ÅQ* æRiÈßÇ™ïi”X"F/ëð•Ó¬ €L¥Á¤KæÜ†Î_Y…ÆG:KfG¾ýŠÃÀÀŒçFÇÙ¬ •wíTQ % G ˆÄ‡ÂF!²FÎÜU*l@h †6ú€ ½Ïµˆauæ ¶î VŒvÕ£â5Ž=ê̹ڡ9(ÄšB ¨`Ç-d7k0: ȨBr!n §%›aM%šÇ«“+Ã[.\†-.ƒ`å†^üYF!*A~œ|>Ê®'l:Î1êµÑ ž#;†ÈR—D¾Ü^y~®4qŠàã‘(ÓÂ!ÃÑaÎÙt-˜‰L•v“¦ ýÞ÷±½ býü;åüð¼Å6óï”Ï¿$™Q0ÿ2Ä›Ÿˆ#Ø’Úwše„ý*|çü˜[û“„SçOøšF‚Œ¹äÒñ ¯±?ûLB0Ô2Î̤/ã)ù>e¸5¼ðFJ¬lÇÐÎV8RÕ3#naE!QVø¹ZA†Ò±¢ü¦e§é\zƒ&vçŽwƒÏUjÉ43v^Ò|fN‘ÒTЍÀß>…IÝzñlY¤‘¥ëûx• èøïh”‰š“0cæF,«Ä:NGuÞð‡ðB‚:²@ŒŠ×´ af”FºÈ€»ÛQGüÒñcÎmÖþ›B‰´}*õí’÷ycϤå¡GÛ çù¬üy1¼´M¶ d'`›`UBÊù”L:EQ†#Mñ} ¹eCeûj{'Éb6 »ÆÊ"€–Q’I>èrh)£&`x–^¦&é8_?µt|±„p÷Rf•wméЏíC&:ÓO£°JéÓðk«^“Ê^R¼¥8r21…/¯mßt|÷QÇwur÷Q'»ª¤¬³SØœ_ãéЋˆ i¹«ù£Á"òlUœ;Q à Ëq3/\çØ,¤llÁa·¦ÚßF0ëÈÇ·ˆ~DÁB{hÅyr*NöL>YÒê¼°Èá¥ìÜ™ÈñXÈ×]17FA?ˆE‹iâ'Èx­´ˆiéXW>R;ÈLÚ–WnRË#`YØ N) 0gDí¹ ¯å¤hhH'"CÁ˜|H[ÊÙQ™1`©`ï(a¯å±MR*<ì…*2X¾‘…Ó•ö‰ ŽcŸJAR†É¤2‰¥°:ºbÛÉžp³:胻Q ÇŒÛjI±à'¥'™Q¦ŠægVWÎÃè*WÄŽ˜L£­W?µÌ«ëz>W‹®èoËe0êO³&*‚.Z£üòm·<ÎÁmǰ4‘ýlï@UPê#»pZ"(<¿D)ÈÙÞÑRˆ6_ŸpèeÁrXšy×ðæÂÍZg·¯òzR¸X‰¢`Cvl´@ö #LG+.pD óbóÖ8rýÏpt~åù,‘ÎgÏ"X­‚[(Õc5·u Rúpn¦ø®'õ9Â6çEGRzœBw‡¥Ð£¡ue^À¿¼þ톦Ñ$*mlâŠ9g™²¸ÝPõBQŸl§D@•êëw΀Ðe¸kšÛÚW·–ʹVüJ碭ü,)xž¨Snãxsú ûþ#Úsã’uŸÜqÌR!r¡xQ«+¼¨å$‡Û*¢ëUpEH¹=ƒ1ʆ좸•_´)p÷Hne6ÛSM–”ÿäÈ–Q݉î‡Ûj‰%ÙÅÂu…tHójY¢6Ç`¬«P0çRÈÇ3Cd!oÞ+,$®(eL“±C^{¬iªµ¯r=æÁõJ3¡ÕJe Ó ÒNu©ÿcÖ%¥P¸;ö-¯FƆ^‡IÅqR«{pÒ¬sµ¡ 2*4H‘Õe€Ç¬BJm¢Bú-¯BÎG™yUERFñ :o©Ãñ6:×e€Ç®Ã±¢Ã±F‡ãb"µÚ%)oy%N¶Tâd%Nê2ÀcWâDQâD£ÄI¹'’'‡V"?-Ù?³âí¢„*­kÖ«“a®k:!$*e?ŠÀ×ÛJázÒ¡Ý8ó«tiʪÜ%„uè»A±°"ñ=çRn´«tr…Aº³ph•òü6Í#TªU½ù¥ò¥Õ1ï^—Ï‚G¬fY,|cÄ¿qÁ4\ˆÓª;½Ç»2uJÙIÊÎÁÓ›I ìn µçA@BÌŸê@ñ¾Gä`aìÖ-=º¥7¯Ð…‹»óôŠObkqÀ3Ó™‹dQ¬ÕÛdbUÑÞ+<1°·§£øF[!_´„Ô¦Úƒ“½-N5Ó 0ÁÿS9ÚTYUÏ5i ~vššŽÜæóùÊÿû­ÖIÕ=Vé”læÊ‹eÓ6xáœx{ k(Ô¿âæ ¯sQ¯Õ¥À5 B8/P ?…ËÒ—?;¨y]–&¦.wJLínQhï÷!²æ!Q¨jWœ$QÚy×>O ¢¸ÂBÖQä¢BOúüÓånù§»)*‹÷~US,ßT¦©uY¶IUÖÁM—¥‰¦¼²JM{(k|8e·P–&­¤*ëà ¥ËÒ„R^Y¥ ¥=”59œ²&[(K“>R•uðÄѥرóêJ•±MÐ7Zºø¾‘B{2ïZò'«J‹Ž1p¤X¯ïWjR·÷ƒÿXï‘IKâ- úô{Ax5(ăªÍ_¨÷ÞfŠ*5¡Û[‰WµîP#p‡±ŽÒ±²»¸CÙ;ݼ@Á¨÷©Ìi‰Í‚R§©Ìaê˜Ä)1ñè‘YeN <›•ò¡&ÀðÖ¢t胆„x¸ó-Š AÅïU{*[|A½Â³´’)ú¶¡bNó¹tßž©;âoO>xÒš“¹õš¦èRY²Ÿš.5A‰ªJ¨X,f7¯J±>ØSžNâ,ZZïù×àc6ÅêÆÏ~‹ÐíþÒ»â: f ­i|Üú÷¥Zg‰óñ‹4üq³?éÁ £ÁÉ7 IUJM1R§‡Ð?ywò úëôÊPGMò7递—%ü¶V¼ŠÖ²;¡oä ‘Äúõ½Ó¸ÌÖƒSð˜>0Ì1+‚»çw®äJrµÜ ˆêú`ªrïªTqïª-áÞGiýöx*Š·wHiåöN’Uʶw€4mBBzâ`ÃyJ¾§?ãcÛ¦óþ-çÛx³t"çf¶8QJ²ÎÌ¡$m7ÆhÌ{)òk•#£ w½8®>\ú/q'ا/×÷S²!)sX€q‡uo×Pž×ÿ‘ózÏ—Øž/±ÝCLc9ˆhÄ\ÍLÝôΙ6–!MèèˆåÊè]+þ㓌j,gÀ• ÍÛĤèÆê‹$7#+OwQ·ÐUI`ì<»«gwõØ‚ y>f}QI(T8)Il„ ‚#«ô4s—!Øì5áß2mY“óò?PKvºZȳºÆKÔr ª°÷¢ãíX-ÝéC÷œ~ÏÒ]äš­Nõú:5itÚ¨cµN;QÙê}BmËÁÒû¸-ú 4â"½ßs_/°åV«ƒÚ­nëÜ F@k6„¾€½CÍv,L8sú]â8¬ÁÃÕ‰¾3ä^`§¥>lõÚ‡Ô$tá¨Ûjèô“à-\ƒêÈ;‹º°çµ¬žÑÆ9vþƒ¯õp§À¤“²'_>8>Ÿ?{þìpY“áx£ê`íèü)¤úÐ N×/ä–ÐôMñŽÐÍt4Ãã:œ$Atétø#<$wZÂ;Ó¡?FáCXÀ4ÚQøh+¹¿ FÁå:*s±¶p¬ÝÇŸ˜Ì»Ó1z¨zwTÅ©±SþzÍuÿ‹…þçñ:^Îiäd ¼žLÁá+ëf­@é𽽜ÓÇ5­û!Ó5w ² &ºzç½;EÃ@ŸN.Ã+żzŒhÑ,bs)ÔÁ“(TBÃñtø;T²&·³Džæ;ïT5j¦m ú®¾ŸýÂD8AH;žNøs–ˆÚŽQo:  À ’Y4 Œ(šFnâ'³ø8W7\4ŽÓw Fošù ®‘û"" c*ÂK”D÷áä %S“ˆX Ýô!K@…q÷Æ×kHú8ê ƒâ™)R°ã–S•¤[‡{ÂhccLâÛð²"¦Q»8QÕŠöI¹#äôñ} ùïdêþËiT ›µj#|‡ÿh‡>X–‚ž*< æøçÏÅP§3¾YÓY›%R;®~ ãi´L¶âØEDž¦¬JV±S»‹²‚‡ýà€|™†#µÁdY&v˜ó†”Ñï6ye«åÄÇ.Qn}øWý¸úoq^›Ø‘µi…æ¾5¥.šc³5]¬} “k)2Ðèfad®#s9™OFƒ ŒÌå`d.€QË<Õ(2 (2KQd®†"s«(²WC‘½Šì§‹¢‚ÁEör(²¡Èž‹"»€"»Eöj("io EØn;Àˆ¹&kè YºKïçà$'¶à8tK4‘?Vbê€7‚¿Ëâqe7Q÷Ñ`ÐjëhÿåË—sVîi2t¼îÒãÑqªr)jZ°¥áÊÜ»è)™,*²…;n¶~îÔ0DÓŽ4xº™Áy[&£j“¯ËÝ0Íul.dÖÈqNp|ណÛÝÖÿŒ¥067c³Æ}€±Y ã>±¹"Œ n‰ %€[qD gøô;FÓÕØøºœŠ±ú¡P,ùs=æ÷DÕø•}IÖÚ×0ɇÀÎBv³p±ÍB{[¢àïÄî |½ÿèØ5‹Øý^îåØV•8tªÍePÇnuõ5o»| Y£qÙæ‚â sZ=ƒÍ"¸= J`zõeà̳’ §xëæ“Ú9ìH'y~O>)»êTxŽâtó„Jó–ˆx#`þGRrÌkæÄ"æT´\ Ëﳊ•ç(~J`棯|ž]­æ–ÓŹÖ„bˆÀÿ Zéà‡ehÛ(ÜxXž¡sS%†ò¦Å’<­Ð¿%¶Þ$Àÿ‘¤]øC±6A`‘·—cí%^dï%¹[ ðÁûtŧ¦§K>6=}ÂÏM‹6¼.ùä4•«žèäiÅ©ãl߀SÒݔըŸSÈ"ù-N°(Ç Ð¦6OŠžµÔ^ï5XþNÚhªæ=*—6Q­ñýÜøGý•úž-¢}‘w‡³kÆož ®XìLÍÓcÑ•°±O¶SKæ‰|"Ífæ«ywn©#¥­åC¶Ÿì-nÌà^½;ß6þÛÈvåž÷¸¦Ðô kªW«UyÍ¢vO¡Ý‚1õW Y«Ÿ¯…~n|TÙQ°ÔVe2P@xèƒ}˜ËÃß7¦2Í•ÚB4„éµ§7v2‡ Ã÷9µ 8d–1™£»Ïtœ×63Á] Ûâýb,XW ª°]ÒìfшóLKŸä‘%<¬‹¯ºæŸˆªR⓱A*6LÎdìç~×9xÙ5<ŒŸ$E¯‘¬B2°$«¬Ìá‚nÀåxªWnšØÉkSfR•9û§…]’ø6Ó˜ŸÊ¡¨X{™Ÿ"§å;¦Ÿþ*ItÁÂmÂåË!Õ»Ìvjd[¨»–•:S±úÉPüw©6¾Ã;¯n³H:ëZË®waùtÝ–.e 8¢Zyz/¶D’wNZü’õ¡þÄÐ¥p !/Ù°ö¬Í±-AthÆY²æ¼Ze‘zY;‡u´yl]ët%pá ètË;FL¢;<&1I =Ö0:Aq·Ÿ¿ôÔp§ržPX‚:ÑØ††œ 3Ø µv *æ®ÃE6æ6³-Ðu§£¥\§˜ƒƒy³qÞŽƒ;zœ¸ÜdÊpÖí·ì× {ñ'7øÙ6ð…§±ÌA"¶À [8K¯fÀÛT‡ÓÀð¨]pba }GÔ¥ÉídÈ¢^SœçZ’â³µ:ÆÒò(¯pz‚*ã`r…È]t;ûQ˜ÜkêejÖÌ^,!¶ jÌØ¥ºzí*Ùýެ_èL¿ŠˆÅWÌðêúéa6õ·Yf9½1$ÛÅ‘|¸—űèÈ WéÜÅ„Ùõ¼Ü\$óÀ°Cÿª®àž–öƒFHÕ\²S”,í îÆOtZ^ÙR¥wÚ’°»×¢¯¢‰f·ê¥ÊU|Œ¤‚èÆ/ßÉúô6ÜY)Î-oÝç=Xe×}ÏN·YÞœ‰åñC¢ŠU UAsÎ9¨ ¶¬©Xh›§æó 9ûWô(©p;Œ{‰ÅÈ3¦™úí$½Æ2j|ô{†®An±Ã{¾¼ÇÀIf\ÑÜ2p)wR¾p6”Šd /½Oǯ#6Îä™w|qf…Òù›C¬A\tÅnm€§ö)Ã%‡Š=¾ÆfŸƒb`ÙÎeü‘ÞK/Äâœß}΢(˜ÐcÅPeL†÷ê;LÌíËÇCÒ‰*ïÍ?µÇµûŒÛ]°¥oó!ï tžøÃf3=‘â¯õá‡Íáwƒ—öpi¥P\­jïÞ¥B¶Bè-¼_ KÕÞ°¶`|WHƒïªpŒhÇ_ÅÁ HÓ*•ÊÞ?2У{L{㽺¶G„µCZÿä„4ªiL³HÕÍÃîÕž­†?òò¬‡ ¬t#”L— H¢-.ÉéAú&ܺ¬kr¼¥hkEÕk¹êøoaF¨¨†ÌÆgygux8góðpæÂóß"AbǤD’…½¦c©§¨à’Ífõîg-­¯X(‰¥z÷Ž×Ú ÌÕa? ÌÍÂ,„)œˆ70­ü<7ÚN!Úæ6£m¯mó1¢mo>ÚvY´m1ÚvÉð?‚p¿]!ÜöÖÂýÑÿ=¸¸í„“%ߣéOq—Ñ„¼–ßðcD¡q8Qo1~ó°<þREïЫÚ[9äý;Ü““_¶³õɽ †Ö$qf“O3è“þXxÔÏÞɯ@ÄøÇ柆™_ã‡yCÚ£c_啞ûC’[ØýÑéöÎÉ.·#Å©VZJ°r´áõ´ÇXº,vŠÀ'ðzîp²àÄÓêSÚãßΓ&°|TjÛp»;‚Û%üNä~<ǧæ•z¾¾ñYþ¢åxVÔn­´­ ¨ÎŠF>}0»ì@ÍÝœ­Ÿ¼™;t|׬hs›=èÏ|%ô~’‚tï¿_”Ÿò lÀcnuÉ[#!eH½@Þª*Û)2gÎlðä‚ü SÕ‚pU“H‘ ÅlÞMU½Z¾Þ‘\O.¬•í¦^ªk„ç¿§ot‚˜×¹lX–Hln£àÙ¯§úòoS%â?üÎ@fóš»3dewÁòQ-ãÈUþÿ£×†ÿ¤äÌêÌšÿPKvºZrììþ÷­j0r(™éw×ñÕÑUeçð`Â=uTëòÊ6.º.5›ŸÁqû‹#p/£Px lbÝÝ9€Ž8˜lÊa±Úðgë~ħ¢á…’¥“(†òjC_Õ@™Íá±TD!¸œM‰Xc)G™q’‚‘$÷‰¸ùé°ur(‘µáâh5š’'^,fRÈBº; Œ Ù,Žn…Ï`A鄃Þ7 ‰Æé‹9Œ³Ð#Τ¢Þx¸®HÒ(~hÓßhÄÑñeň£ùÙǪ­âl›ñ?±ÛÕáÒÖÝtÁ±:îP±uv µ †ˆ‹¡)¦ªƒeö®@1ú(.òXß Í0/@8®Õ×m‡Ä ·‹É% ÙûŠkX&Øú…bË]ThØÄ® T×A"°lM·¥*<ëƒk£|ÓÁ5úzCæ*DΠçÖ)S Õ¶ôž®º¶eªNWéõÀ´\8ס«÷4èÊyO—"ó 4ÃFê:É2Ìü•"LÓÑÿ å†ÒMé+º“[€Ú.‰ ±µ—›m™Ð±­>a%(Ä%ßYpè´…S;ÌM‚£C_Ñt8¿Zz‹8è0wVŽmé/«¦®¡A¶ŽN2䞉 èX‚\õäÛgôáîÎîÎ!â ½ £+õáÕ‹d¾¹<¨Í«Æ¤¶¾›x™ÜEí—±¸¥‘≯ÏǯAÚKQšù«¬ZøÈð„ƒ‡•%ea ·,ì: 2„U'K°¬±¦,ùž@Á„…>ÖªyyŠù Ö ¼é €\âûÐùè’Ýð~äs›3äöF}”ó®yß¡uÜé24õ Îë4ïDk¦Ü1‘bh± ãû¾¤ä° °Û±¶·€mUÐâNí¸õl¸Cǵ5ÂÛz&àU÷þÄC»„˜ÔùÎCjË8é$<–÷Ûç{€qMÁ›ˆ$òsIðrøôͦGþyÞ¶t“Ð7[%Ë¡æ×ÀoB­ùøÃ}³„¾¬^B|/ê)îáË(V)íšìäxþòœÁ \S•¬€iW"é²`<ŒbŸÈZŸKtO⟚ȸª±ŠY>`RÆœÉð¤RÖÓò„Jͨ¸4%¡s‹r·®1\ã& ’.îo36 B-g° VùªÏpZ‡4fa2F‹Þ ƒè¦Ëƒ)Îñy‘zÒþKáÿ¸—`é¦/+ssOæ$'ë$Ånõõ£àëI ¹‰Ró¢8ù-‰hÎ+n %ãª9OZcFñ”¤ñæ@O [ʨÈ$zÎ)ìBþ³ìÉÑRNä¶,õAúg¥­S’Qš²i°+OŠØ ð>Šð¦±!™qOŒ÷7Î.3£F9’‹peðÊ½Ô ‹·ÌO”Í÷í;ÔËá~ÑÈë­ú昔bN@‰£A¡¨¬U­ÏÇÞáØg1bÕ i=¢ "Fƒ šFê¯xû ( û­¦³å\& EaîÁÒÙõuW¬9nŸäýX¦»äúðÕPm(rzsµ’“Òi…ÏÞÌ·6±Tù†OóáÜPå³td|Böì Ÿf¤nYeN7Ðýóˆ‚9ó£*ßK^ªe­©<ªlÓ‡¢è{¤Ð?_íüƒÓ½/¨Èå¼­¿äŸº©ÑG׎ÑÓ‹{øPKvºZ<Ñ}Ñå; "IAR-STR912/source/.svn/all-wcpropsUT LjKLjKux êë½ÕMNÃ0à½OQPFM U³C¢‹ª‹‚ØV®“‹8¶ü“r|B‡ °"R£ÙÚ–>?Ë~ÞͲ\„®-ΪðòPÊ®è*´mçÉ7âuv' Ÿ÷ÖFPÎ¥X…7ýôë`™å}jßÁ52ÖÖ›Û‡ýüùe¿^dlòª›§G±^|NNÛ[%vÿ™«üj~yÄ5 _Nƒ_4¢K#GÙ×6üp„+ÙrâÈ~Ö‰GŽð'Žá>râÈ^͉#Gx’>r¾óoøš7{ý'»ÎƵÌD8r„Ë·£tãnÝji fÍÜP6創l.Üpø%krä÷‘GŽð¨ 'ŽÜÐñŠõƒAî ÿPK vºZ<IAR-STR912/source/.svn/props/UT LjKʈKux êëPK vºZ<IAR-STR912/source/.svn/tmp/UT LjKʈKux êëPK vºZ<%IAR-STR912/source/.svn/tmp/prop-base/UT LjKʈKux êëPK vºZ<%IAR-STR912/source/.svn/tmp/text-base/UT LjKʈKux êëPK vºZ<!IAR-STR912/source/.svn/tmp/props/UT LjKʈKux êëPKvºZ<“‡O‹•³ZIAR-STR912/source/91x_i2c.cUT LjKLjKux êëíkoÛFòsä?ìõCò%¶¤¤‰«Dh‰²‰êá#éAq0hi‘I•¤l§MÿûÍìƒ\RKItüèõʆ¬ÝyîÌìÌîPû»š‡ÔºuÒŸ|²­£c—´×Äq‡þ$ éœN’( üILt Ïžî’¾?§dä]R’>mòSóæÌoMö&8ÃX&aDÔ§M†Ý1‹¹?ñ? ˆK½KœÜó 8£8!V/é'7~Üoì3ÎÚäb„hî5'‘¿`HRìî…“r¶ˆÂ+JcâÍç$¹ ÄjuIÎ’k/¢d¶ &ïª;~¹c?NÂèk?ƒ­ ñ&'DK޽Z°)ÆÊ„¿ŽÝc“œØ¦cŽ\âŒûîGÃ6ÉÇc«{L,‡ôÇ69:µzƨk’ñhð‰ÖÐ!† 0ãVÏ‘î©ãއ¦í º–{ ÆÅ¬€ ׈m6ûZ6‚÷N»®“ÈØî™6#cC⎉c|0‰k Í=fO@8§÷9ZªÕµÇæÀìºöxduâƒ]rh’csÐ#Ë8˜ ¥1úDz– ³Ÿ#.kÄÿ¢ÀæÈ1ÿ} ’[Æ€ôŒ¡qd:\ v‚³€DÐp±mËAúöxˆ¼"B@â¢îÆ}✂ÒR£Þ>‰œ:&=“~Ê´…8È•ÅyËô…h kdö@ Û%Yì»0…Ìɼ&ïÞ¢÷Ÿ=}ötø &ó%ºÔ‹ï~ç?}Žü £ÆÅÅoãÉ’}ËèŸDþF‰äë‚Néì{Ø@ú FÀæô»äÊ´qÆr ¼sCLP‡Î,÷ÌäCø4nÍÕ =?–37}SA|B!ä]ÐÈ›Že_Î]!tbž94‘¡±qÓj¬N°i,§4nz}AȘN#ÇdêG”EIrî'9nôz …B^’tBF¡ ‰ã¶»Q'ñ¢DU#t ¥hQ{“£6>Ù‚X¸ÈÓBb-ݬ-$ÖSˆ ½øK¼Š¾Ñ_—4˜|=à °Ù/ÌÊ?ö?_Èy€þ§Â¬ñu &¦È€Õ—âƒf‚©M‡á”Š™›7³"g^œ(38¶ƒ".óЉ2…ÍzÙï%8¦Þ”F`ªœý¢™óYÌ<9Í‚«_z|_¼)¸ú•ù¸tßÅ e.)GbpªŒ»ãwóx·Ëú¤°<ók³µìQ+ðMRÖ†/|ò½¹ÿ¨Eæa‹,ŒEô3äJÝ$Äq?Âhì-ç ßʱxråÍ—”ån°)-–I6Þ~nÚE2¢mkq€0±z‚ÿ·IÎ/•@›ŒÂ€â€M“e¬ÜíËxúSEÍ5üè‚•õèŒÅ››ú³§¿?{Jˆ?#8xC:&O¿d#ûÈ.*N,@CQ;×% W †Ó==3Nù>Ã`jggñœ˜#L¦êo7ÍëYN6ñ6»ÀY³œ³fge›yÆÖL+òõ5wû”úH©‡XÿP-×›LÂhꟅƒxA'þ̧S­1/¼¨2ýùDȨ ›!q-'`»ô!üG ð"åÉa¼´É"ôàEB¥ƒ<ž>.L ñü€«þ™ùŸ—¯0ý`F—ü3|Êëiéõ˜Ê¾÷' ú 𼨵݂’e”X6_“kð ˆ°¤ƒYCŸ9Äòe‹LOºƒŸáËÖ ö¼Ea>zÊg2‰áÞÉS¡óÁLü“8£VßmrT ‘Lœ æëŽA oÿÒj7þƒù¦ô{¢{9åñ£àÄ€¯;§^¤p¥Çpóâýذ[d§£ÉÄ$*Ìe3D Á”.hÀ|l‡ ©HÍ¢ZËþ®ùúõ³Nvˆøê=ir-6ê,ÜåùÖa9#Mç1e¸*Òâ¸%`¯JÀ^Irz°×%`?¾|ùr ØA Øë×k©%`ë™ì–€IU–Á™®`,ÙÆ ­EJ>Ó@ĵù\Yμ˼xÿñ©]œÉ÷/õ+Q0d;#$ª É{×FÎõȲ‘Ç,h=êUÔ0ÃÓ‡7ù„×s:ýL/!Íß còEª>®Uñª2<ÛH¿ëN†µ øŠèç„×ñDÙ[ˆMÒ!:d%X> è  þå§öÁ†T,ûÔ TĨƠ¼#h+c‚“¦x¬¿ÿFç"°GÂþID,ŠHr 5âËwuÜ»ŽpÚ‚Y89dœØðd9ÇÊG®c¶A‰»¿ŽXýÅ›ú~ëmF”Æ1sUE2a‹Óî;Cvœ™@^0Ma2Áº§>žGEÃËê¤ÌíèKìKÕ9ƒj[Ueì6éó•NŸýÛ]éò§úþËõºd[uN“™L•µømõ"§ÁŒ@=,AÍ›yÌÜ®6Íç*EåB,Ÿ'O6dþiâ_'Mw³d^—ªß>櫱ò\_ø“ ríÃŽrŽ+)Ù›–§ÀOJsà=V <¹×T8Óv­ kYöËŽ±‹jϼì’^ž«FUîòc.CÖ`UïF¼Ê\–”¯E¬f$1çÒ—5YA99Üí7’a)fÏ}X÷ƒäOëj<³ˆ „ª)g-^­‹5ß}-­NÑkØNÚ&½Æí Âx8Ó›íñ›Î4>”¬‰D¥õÓ-jÚ{¹WJ=NWÓÊEöæL/©‚Ô#/ùf¤"ã×f¢šÃÇ󯸗%ìpåÚŸð9'&ÛÖB~z;Š<‘*Í]ùU û“5csZ ei­¼ºyœ£,?Ê®p´î&gÄL Ixy¹ ä…?¿ø™„PWãÿuµÖÙØ…’Âã_ÍÛÒD9ïÍï$â½Ô“Ôû¾m}¦ˆ›WÆz2;*™BaøXN4>¹…Oß…6ùP¸øp!XŠñ K]ò5”Þaoï?9Ì[¹Ovþ8Þcdç?¼ÂÞ:ëCPNÈŒzuRÍŒü×_ÎV–Põ"²{?ùßýœFn…¹üDò/"Ý[x ;Uˆ–‹äQýe½Ãäk¹”㽺ywúr¹€á/ùµ/ó–´§­J™³íNŠöQ=ŦÞÔµŸÖ[pBL¼à+(-ñˆ4bv<óg§÷î0¤lá¢pÞÚ©úSn“û"¥Òõqêy³p>¯±Šæ-eœ+ uí6|VŠë27U`» @ð·P‹µªu{Ýjìá]Q›°£jP-U‰ÁS_¯&“Ê\‘jûØæ^Pq >5¢…Çx½¼õÜíQby°â˜ºÜ;Ƨ(g¿B$¶]°—è4¢x·oi{©¸g“Ún ÈìÖqVãìÐpLò¯"@ñèFÁ¹KÇÐ KÑÍ`Pvèé¦0?BZx)e ¿¾’’€2V4‘?“åù\ â^‡B«B¡1ÅûCH˜èB«CBâkvŽŒ+ÑÇÿ{Ú‰Èì¿o•>EÖ pN± ´ÙP±’-V27“Lœv‰¢M½U†ÎÁ*¾¼-ã‡Ç.ÓVÞì÷L0†ñߢàÔ›îó :Û§1|¥åÞ‘Ó|ñÅ&ñ{ê­~Ò`ïÆ°½Y†\"dŸ‰ø•õçÇëÄ ùÓ\R£%ÎÃDQœå£¬"Q6årY'ëªÙ0ln4"ú•ÚMšpæÒ%­õ»Ý&+Þäø»×ËóTaå?%’/Ï¢ðRkùô“[ƒÈN•„òÁo¨^œ°C5­5‰HŠ³È…·XÐ@è3˜ÇûE™r»È³š²y·š‡8QuXn º[!Â>¦À†î²‡—uUoŒÄ•.ÝõAÙ±)oØ`Š‹#îk UeÆ¿ ’ ­½J_BiQç¬=#ðð¯»áED¹µkÚ1˜5¥öŽWEô×%ÿÆ”—WŽZ»Vû{î¿¡­ä•-Õsäò=˜¯Èv·2% ܲ‡1Õ¬ñÁÄdË6çlh¸Ýc³W øð“›¦•·Íꉭ¡‡†ÕOhö#𷇬LõVòª°ß)°X¬f£š®ñÜõ¬gº•DæÑýù¬oXƒSÛ¬¸1ñªF\ãÓ`y)؈ê;uN»]µÍŸj>}ëQ™¶=¶‹ˆ¦þlF#v‡%ÝÝ>uU]ä# &Ç•[[ uçÊo º]ïf¥#àú" ¢s½.SRJ ©êä˜ÑµðÅ€lK$ëàÀ[t °…Ô),f))†`ãQ[•ß—6G=üܾ50ÅBÿPKvºZȳºÆKÔr ª°÷¢ãíX-ÝéC÷œ~ÏÒ]äš­Nõú:5itÚ¨cµN;QÙê}BmËÁÒû¸-ú 4â"½ßs_/°åV«ƒÚ­nëÜ F@k6„¾€½CÍv,L8sú]â8¬ÁÃÕ‰¾3ä^`§¥>lõÚ‡Ô$tá¨Ûjèô“à-\ƒêÈ;‹º°çµ¬žÑÆ9vþƒ¯õp§À¤“²'_>8>Ÿ?{þìpY“áx£ê`íèü)¤úÐ N×/ä–ÐôMñŽÐÍt4Ãã:œ$Atétø#<$wZÂ;Ó¡?FáCXÀ4ÚQøh+¹¿ FÁå:*s±¶p¬ÝÇŸ˜Ì»Ó1z¨zwTÅ©±SþzÍuÿ‹…þçñ:^Îiäd ¼žLÁá+ëf­@é𽽜ÓÇ5­û!Ó5w ² &ºzç½;EÃ@ŸN.Ã+żzŒhÑ,bs)ÔÁ“(TBÃñtø;T²&·³Džæ;ïT5j¦m ú®¾ŸýÂD8AH;žNøs–ˆÚŽQo:  À ’Y4 Œ(šFnâ'³ø8W7\4ŽÓw Fošù ®‘û"" c*ÂK”D÷áä %S“ˆX Ýô!K@…q÷Æ×kHú8ê ƒâ™)R°ã–S•¤[‡{ÂhccLâÛð²"¦Q»8QÕŠöI¹#äôñ} ùïdêþËiT ›µj#|‡ÿh‡>X–‚ž*< æøçÏÅP§3¾YÓY›%R;®~ ãi´L¶âØEDž¦¬JV±S»‹²‚‡ýà€|™†#µÁdY&v˜ó†”Ñï6ye«åÄÇ.Qn}øWý¸úoq^›Ø‘µi…æ¾5¥.šc³5]¬} “k)2Ðèfad®#s9™OFƒ ŒÌå`d.€QË<Õ(2 (2KQd®†"s«(²WC‘½Šì§‹¢‚ÁEör(²¡Èž‹"»€"»Eöj("io EØn;Àˆ¹&kè YºKïçà$'¶à8tK4‘?Vbê€7‚¿Ëâqe7Q÷Ñ`ÐjëhÿåË—sVîi2t¼îÒãÑqªr)jZ°¥áÊÜ»è)™,*²…;n¶~îÔ0DÓŽ4xº™Áy[&£j“¯ËÝ0Íul.dÖÈqNp|ណÛÝÖÿŒ¥067c³Æ}€±Y ã>±¹"Œ n‰ %€[qD gøô;FÓÕØøºœŠ±ú¡P,ùs=æ÷DÕø•}IÖÚ×0ɇÀÎBv³p±ÍB{[¢àïÄî |½ÿèØ5‹Øý^îåØV•8tªÍePÇnuõ5o»| Y£qÙæ‚â sZ=ƒÍ"¸= J`zõeà̳’ §xëæ“Ú9ìH'y~O>)»êTxŽâtó„Jó–ˆx#`þGRrÌkæÄ"æT´\ Ëﳊ•ç(~J`棯|ž]­æ–ÓŹÖ„bˆÀÿ Zéà‡ehÛ(ÜxXž¡sS%†ò¦Å’<­Ð¿%¶Þ$Àÿ‘¤]øC±6A`‘·—cí%^dï%¹[ ðÁûtŧ¦§K>6=}ÂÏM‹6¼.ùä4•«žèäiÅ©ãl߀SÒݔըŸSÈ"ù-N°(Ç Ð¦6OŠžµÔ^ï5XþNÚhªæ=*—6Q­ñýÜøGý•úž-¢}‘w‡³kÆož ®XìLÍÓcÑ•°±O¶SKæ‰|"Ífæ«ywn©#¥­åC¶Ÿì-nÌà^½;ß6þÛÈvåž÷¸¦Ðô kªW«UyÍ¢vO¡Ý‚1õW Y«Ÿ¯…~n|TÙQ°ÔVe2P@xèƒ}˜ËÃß7¦2Í•ÚB4„éµ§7v2‡ Ã÷9µ 8d–1™£»Ïtœ×63Á] Ûâýb,XW ª°]ÒìfшóLKŸä‘%<¬‹¯ºæŸˆªR⓱A*6LÎdìç~×9xÙ5<ŒŸ$E¯‘¬B2°$«¬Ìá‚nÀåxªWnšØÉkSfR•9û§…]’ø6Ó˜ŸÊ¡¨X{™Ÿ"§å;¦Ÿþ*ItÁÂmÂåË!Õ»Ìvjd[¨»–•:S±úÉPüw©6¾Ã;¯n³H:ëZË®waùtÝ–.e 8¢Zyz/¶D’wNZü’õ¡þÄÐ¥p !/Ù°ö¬Í±-AthÆY²æ¼Ze‘zY;‡u´yl]ët%pá ètË;FL¢;<&1I =Ö0:Aq·Ÿ¿ôÔp§ržPX‚:ÑØ††œ 3Ø µv *æ®ÃE6æ6³-Ðu§£¥\§˜ƒƒy³qÞŽƒ;zœ¸ÜdÊpÖí·ì× {ñ'7øÙ6ð…§±ÌA"¶À [8K¯fÀÛT‡ÓÀð¨]pba }GÔ¥ÉídÈ¢^SœçZ’â³µ:ÆÒò(¯pz‚*ã`r…È]t;ûQ˜ÜkêejÖÌ^,!¶ jÌØ¥ºzí*Ùýެ_èL¿ŠˆÅWÌðêúéa6õ·Yf9½1$ÛÅ‘|¸—űèÈ WéÜÅ„Ùõ¼Ü\$óÀ°Cÿª®àž–öƒFHÕ\²S”,í îÆOtZ^ÙR¥wÚ’°»×¢¯¢‰f·ê¥ÊU|Œ¤‚èÆ/ßÉúô6ÜY)Î-oÝç=Xe×}ÏN·YÞœ‰åñC¢ŠU UAsÎ9¨ ¶¬©Xh›§æó 9ûWô(©p;Œ{‰ÅÈ3¦™úí$½Æ2j|ô{†®An±Ã{¾¼ÇÀIf\ÑÜ2p)wR¾p6”Šd /½Oǯ#6Îä™w|qf…Òù›C¬A\tÅnm€§ö)Ã%‡Š=¾ÆfŸƒb`ÙÎeü‘ÞK/Äâœß}΢(˜ÐcÅPeL†÷ê;LÌíËÇCÒ‰*ïÍ?µÇµûŒÛ]°¥oó!ï tžøÃf3=‘â¯õá‡Íáwƒ—öpi¥P\­jïÞ¥B¶Bè-¼_ KÕÞ°¶`|WHƒïªpŒhÇ_ÅÁ HÓ*•ÊÞ?2У{L{㽺¶G„µCZÿä„4ªiL³HÕÍÃîÕž­†?òò¬‡ ¬t#”L— H¢-.ÉéAú&ܺ¬kr¼¥hkEÕk¹êøoaF¨¨†ÌÆgygux8góðpæÂóß"AbǤD’…½¦c©§¨à’Ífõîg-­¯X(‰¥z÷Ž×Ú ÌÕa? ÌÍÂ,„)œˆ70­ü<7ÚN!Úæ6£m¯mó1¢mo>ÚvY´m1ÚvÉð?‚p¿]!ÜöÖÂýÑÿ=¸¸í„“%ߣéOq—Ñ„¼–ßðcD¡q8Qo1~ó°<þREïЫÚ[9äý;Ü““_¶³õɽ †Ö$qf“O3è“þXxÔÏÞɯ@ÄøÇ柆™_ã‡yCÚ£c_啞ûC’[ØýÑéöÎÉ.·#Å©VZJ°r´áõ´ÇXº,vŠÀ'ðzîp²àÄÓêSÚãßΓ&°|TjÛp»;‚Û%üNä~<ǧæ•z¾¾ñYþ¢åxVÔn­´­ ¨ÎŠF>}0»ì@ÍÝœ­Ÿ¼™;t|׬hs›=èÏ|%ô~’‚tï¿_”Ÿò lÀcnuÉ[#!eH½@Þª*Û)2gÎlðä‚ü SÕ‚pU“H‘ ÅlÞMU½Z¾Þ‘\O.¬•í¦^ªk„ç¿§ot‚˜×¹lX–Hln£àÙ¯§úòoS%â?üÎ@fóš»3dewÁòQ-ãÈUþÿ£×†ÿ¤äÌêÌšÿPKvºZ<ˆF¥âM ýEIAR-STR912/source/91x_ssp.cUT LjKLjKux êëí\ëoÛÈÿ|ò?L¯€aI,ùzw©œ%Ò&ªWI:AM­,")”צ{wöA._ÛŠ[”‡œýÍcgfgg×9zYñÀAïzãÉgÓ8;·á¸Õú ,{è¹QH|â&Qxn UC_ì½Ýó ŒœôéÀ_Ûw—q¼|ã"Ew•ÌÃÔ§Ã^ºË¥ï¹Nâ…ØÄY qßIÅŒâŒ8^‘)·~=j¿=b’uà#‰bÑ~ÓbHìFÞ’¤èöÜ‹a†’-£ðÆ›’߇dNÀ²&‡³äÖ‰ÌV‹#ã7ê‘îÜ‹“0ºïàÏT‰ãcTâ÷œÇòÛ_Ê ¶Å·:åŸ@bû\ƒ‰©YÚÈk¬ÛŸº¦ŸÎÞ9ècÎ.Œ~wÔÓ`<|†®1´ kÓ1ãFßAï²ÇCÍ´î“aŸSçbŒ>ìÚÆx¦vÖ5Ù[ÊÐ0qxÿ¢g[”Æf_3+úmö¬îG lc¨½aþDRëb`¿BO5zæXh=ÛŒžÖyw0€Ñ؆S εAF÷t 1Èîè3ô “R¿B,cÄÿA™R1G–ö÷ ª¹Ñ@¿;ìži×€r› •z®¶iX¨‚nއ(+Rm7ÖÁº FKmØõ¸Jpai0ìö58ýœY GàGn,.[f/„í#­O25j$ƒ½Q¡ð32oÉÇ÷è£{/öލ\ë¯0¤^?øAÌ?{~–Ycþsé­»boÿIäÝ`–Hî—dJfù+ˆÍ ȃô* .šFf¨âyΕÿó§3‰¹pIhöœ“ÈñA ؤSPŠKñ u×jµŽóû^Ì¿¶ît]ï+Àƒ0\©ã~…aH籩i œÚk(ól5…­î;×0tâ¯%Vøå’}aøm]Õv!‰œ ^xÉDÄ%Þ Âä9š f86.ÁÒ¡—¶ºÞT aÉlEB“‹VšD!LË©[èš­‡ÑÂI„QÄØž^`â$ŽåýA2*ɤ•'ìù¡ûÕ¤>ªR¢Øº^A8‰èÂíø$J§„¶ !.×g\Æ“~k·/„Oºâ?<|÷aµ”T—×Snb^RQêtè ~òŸNO,«›;5¤#rMKZ4@"a’sV>,=tNHBSŒ¿"¬$¢¹~¹JÔº tà–¢¸× àŠ@ h}×F1+ÓB+“„¡W‰ ×Qü`’dåûÐy» ½©bÕüѦnÕ'3,w‡/öþùbÀ›0[¾¯[‡øŽ}8ByÑNBË–ben:ä„”Vïâ²;90+°1——8â•6Šäðd]ß°2ÂoøñcB¥U¼ö:ñÚ[‹×n(^»$Þ·FFm\UQ¡†…ãºa4õ‚k/‰ëÍ<2­ ‹¥ƒÉ’YÐ $"c/|â$Z¹Ô‡IuÔ¼~XÜ”ž×©cÜeèT@Ärꥣ œêÈpà q¼€[Œþcæ]¯"¾9ó‚[(ðgúSÞbÈ­òù†uð¿*ZîeÁÎùì |xý¡°¦ŠÈÌ/³t ‹Bß)D«%bU~†ŽnrHƒ•Ê÷úCÏlÁ~=òI ÚH4[q©ø´xLîSÌ5z“ñ@Ê?_ž{×óC>DˆÍïý è>{Nü)Ì) ºwASZ2à—+ÂB kžuüiÊXUç_FB‡oü/Lwë9ûáí÷1ÞWÂÛ<ßNæNL6Ûï¼›Ùï¼{y¬M¯I…±´¢¹`‰¡9\1¡7—ñ"tÐz‹Iè&&+ñš±&ËVû «v‘çW²”^v_)Ræô=Ÿ8<‘è¦þ¥Ýiý®¼$nèî´b<)ÅmlŠa¸5a›­³%µØ.†cÖÌ;£óÎv)–ïÜšhñ,2ÐLж4© löBžX7¸%£9XH©¼’[ªª8W™ˆÍPUH¥rWÀ6Šj•ß{U³Ù/³á¥’w–OÚá`IT7ûÊ åIÁuyàD¸§°zæ—ß7{p~Töߘ®–´6Q€+=¸:åHìwïÞV‹º”.èM¬þG«^扙9¿SÛ wÆ¥„Y}y2e2XZi9}ËúòKAì’¡s;Ö$¥Í°Š£kä“h'¬¼ÝYqËE¨-quÏ÷Y5º®Ú»õ’9SZÙ×A8«¬ÖˆãγB·v󧘚V2€sÏíÜ£ o©X gûØés+³‰8(hXW²©Ô'Ý.¨Åá‚,®ÒÙXI®+÷êù±Õh##¾fU$»z`VnæEd±ÂZ‡J‹¦¨XZ•k’z\¾›±SÊBy{µ–º¬nä‘[ƒë±5f’‰¾­RÒ÷ÐÚ š¦à†È=‡ßíÞ¿·˜VæEnÂ7Ö¢R‰ËÛÕâÆtûõ¹µ:È-M8-ጛvoøñeš‹ëöëL&ª1ëÕ d¢óÜ(ªª­¶œVÇg†I-¤ì±å+,WEK*_̉öxyêkj¥P¬©e+½ª,9”*w÷}0›o lVˤ¦íûD ,»“Ê‘vêY W‘KXóúJÇT·è@QpZŒ )®܃.®¼€÷²xÖàÍBßo±À»¦ºœ>—öîÍÂȃÐ } sÇŸY,“{“NAœiÙÖ°â´GA­hõ½ ¶·Àµ'ÃMè ºÛh|ƒäAò€ÖæÅµZñTÎùA~”á[•$WíßÍ£'L±%ërœ1¤»Ûtkd7͛ۀÓúï<únÓgØ­«&ÒfKšZ쨘i4sÜšvÿ£§Kj”µ-zš¸ûʧÎô›}e³&Pdk¥AƤ¾ÿèYR=ï¤§î€ .¯D3(™q:é±}C¤µÉ'7ü-ãp_—oTO{„Ì#:’9ÿ-HÕ*z"aátÈ“§$·´ûƒ¨[š°Êw3šô!+xF꺻‘eîòƦžä÷ÛF&Üm³_FߢK[ŵyöKæ©à¹óÜo‘`Šý7•é_Z'‡ŸŸ$ó(\]ÏëòöÊf&FGHêb9ãÉ3l ëÖeü¦4Í>E^Bä {ßLï-d}[®qL‚$×½¥´ïØÎÛÒ•k]ˆ¯Ð‹0NX¨‰Œ˜)×ëê¾±K=È¡šû†='i¿X q.ð“\.•kbÓúû9G©Ì©sT8ÎË£Ÿ8â”ÒYvî%òêâÆmºR’1]ØÊ+¼CÉΩһJu}÷¼šYÙ­O”øNOâšiFËÏä·µüüì×¶´*îÐ6Ù§m„߯€¯jtí4–ÎH‚yÑ€«¸zÓ6'î×Ý:dÅe%˜áaê€x&F}-“]6½ôA÷¬Ãe . »Ëݲ¿<]Å÷¸¢2AŽâM(}åû…FëAm 4  [b0:¢U¶¢-¹tùî"n+"òåá¾S¸=Á­M¸±!¸bm7p+”ÚV Dٮɭ0Œ FÎ¥Ù¨$þ¦’}ø$9?Ë2å¼³nëŒfÉ`õË1¾5É5“½b¿ž0 cqf–R0TA”Õe·x³šÆ ¦ä.+ù É>|€_Ë,Û,ÃØcY’Í$Iï§–W'ŽN™Š*PH!–û\ËÝŽbr½‡âÕd»4Èc׬\Õ&V"Å*|U²Ì€Ÿrk›¼ -ø7ägÍ8"]ñN ƒaË wÊ~5cšä CÞ‡ƒ6¼{'íxz/ü8/ºôto–úºxI±£”rݺ/ð«*D~I¤€É¨L_–ÝýÑEÒ(¯òøU¹ÞZìôð*[ÇÙù”‹ò”ò'[ÁŸa¶~úƒdé[¤ß·…Œûȉ1»Æš;ñP‚_œtô°E‘üoC©Ò†ýÂ9=ÈùÁ%4ždiPJ׋•ìÿǽ}ÜûÀBϰùÔî Ö“aQ “õG²J/jsMPðW¥2` bˆõȾÞ®$¨ˇոϲD0ì ð—¹NkîÊ*¥Â’STÛù¥åD\JÄ.4×Õk¯€Õ\kùÎŒöŒ³Än ÕšÇuP7ÏåÒÀ’ jh›ÿ§Eõñÿ“Ð&t|±÷PKvºZ<‚ÕÕ(}™”IAR-STR912/source/91x_dma.cUT LjKLjKux êëí]ís›HÒÿì­ÊÿЯjKN9Žäd³yœóUÉÅÔÉ’À›Ë'dSAà;{·÷·?=/Àƒ@–ü’=Ø­ŠôËôtÿºg†×/%ô”=PfçŸuíã© ‡ýþ;0Ì3ÏŽB×wí$ ÏŽAFúâ§—0ö|¦ÖÂ…ì8‚ÿÜ]: ëÀ&w —ÉuxÁ™2‚áÍïÙVâ…˜®µ 7¬ÄEžQœ€ÇK×!7÷y=xÿšjv¿¹QL(}JàÆväÝP&wóÚ‹aN4»‰ÂožãÆ`ù>$×.ŒÎ†‡óäÖŠ\˜/›PÆ„“ô\×A%’,ÛvcƇðˆÜ+/NP—¤ÝòA´9Eîaôýè[ÚP4Âá!1¯#¦×ÞV 4à×êŒ÷j›§*œëª¡NM0fcóÓPWáÓ©¦œ‚fÀx¦ÃÇ m4œ**̦“Ï0ÔÎ šH3ûMiÓ \æìLÕ Âî“fž¢sÒ ÚÉφ¦6›‚®~êô, ÔtB>ºPLo‚™>Ru* ¯9cø› ¦v¦PDÈÀ¸˜˜ûÄÓ5EŸ©U1õÙTS 0N‡“ Lg&œ¨pªNF0ц'•²N?ÃHÓñî}ÂK›²(Õœêÿ]`˵áFóáGÕ`-@içä.Ô…0P&¬Ùºf&ŒõÙÑ•0D&&±Ýl Æ-³áp:zÍš† gÑ 'Ÿsk r‘‹é–Û‹°jSu„ ÒU4’FÏMQ)r™*Y´äöÝúõ‹Ÿ^üôõ lIBòÕÆãùðËÝw®wËgc{IÏR Î#ïÁ™äû F÷|EˆGäæîF-+q\XÄ›™ªÄñ›yÖ“`v§\ žYñ×v—±ëìBøßÑô¶ˆÁ‹ÐY" ó~âÖa^~òœäúr¤—gCãï;"ðöïÆãÁ˜õ„†®È Õ7u„'q’ɈvRʱòë J©ÀŒtü¾†t쇷JDþ%±TE[&TFhFñÜðâßÝ:Âq¿ß/R%Ë·KHÇê "“X¦©òF®®¢©+Hß÷Ù!#U®­ p}TáAbÞþûFZlw íÛzÚ“å|îFœƒ„öp…Χ–ŸÔS"ÑÛ:ÊIh]I9¨m«e_»õ¤o›M<ÄŠç›+{XG«1Ê4ZrT*—[ÃB¤MÿÀ*­ÐH!—„°×†­üe5ߦð÷zËù‘VÓisYE}D ¨™$&•0˜{W’’÷˜icÀ*Ûñbö7©uã×öæÖ¯B?ÜQ¸F„Æâ5ZÞ$´&Ò‚›e’wÊ‘´~%r9‚ÛkKè;°­¾¸Ðßìî¿Ù»ÿËþ»}TåWR5Çt ‘UÞœú ž?kìQ¦{œÑfcNÄÄá2²]"…»ÔŽ`G.£xÐq¡±‘7o‰¼ñu…ιÔT€ž–iˆÿ *DϽ6zTÙ™ ôL7Zxåƒ.ƒ¤Ôþûñ%•m†8†É¸ÅŒr“wÊÔ½5 œ# ÝBLþ„p¾Ê¿UÿZuÈ;Ô)-ºÑŒ#Í RF³e"zêLÃÀ¥Wt7YFäÊv^ù| =§œ=Á —&bÕ‹Ë—ãìÃrðN „ý,æ-ŸÚRƒï9ÿzñ€7‡^zöø˜fÓ(Ò¹ç(Y~ï^ý e:†‹â?ÿ ’\?v ׋ cr{#óŸá?2öäàþ¨ÀyÐ,¸r‚J1[ƒæcfÅ£kDæÈ‹bö’Ë´ŠLEIÃ’”ÐAY+¢!úóð,ˆùãa²>.ï½fdÆHrM¦"gó…~xåÙ0Ç[ˆAì0ŠÜø& /¸¢A£»ÿ\ºq†w…†j®8ˆ@Ò£jõ‘1¤e‡Ou–½˜ª$w5$É 3F5—r-0QWtxü ê&ª MŸx-ËZXM^¹‘δ°iÁ±Ndñ6âMna”<ëui´K£]•Pýøiôù¥)sBŽb™ˆ`ýÃÁG~ù†^‚ü?n"c%ÞOîø‹&´õ‹4êw¨/%û¯Cýgù"àOJˆ{€¿˜+ þ¤öòOÖGü“%Y:×a}‡õ2²ë;¬ÏN=‹òþdýò~Cˆ+àüImuÿ¸µý=ž&½îK4Üwp/%ëàþ9Àýäx¿  +÷u¨ÿx˜ÿqÅü½ríÚ_iˬôY•®vóæà%Yë«S]µ€Þ|òÈK¨þ{@ÞPMò\š¼œe>Ø}ëŠ<^Æ"ÎI#œc€NžFC/Ÿ¨ÿ9›3úŸcÖP2{ÄŸáFÌ x’,|bOŽÉƒãô~’ñ;ž"/ÔÏó¯c0é”XWîw™ JÔe‚.ló¨Íå™ýû¥9²UóÁDLy>ØBBxÔtP;3´ŽÍJ£§.ty JÔå.ló¨Íµs@›@ZžzÂÜ~> €-Ž~Ôñ@Û4Ð*5@—JT]nȨºÜP¡êrƒpÔ¶’¤h'Ä'“#õEWþ ÙBš)Ò7êFtã*j%úzw„‘ îZ)µeá47{ÿ¡tߣ±…7T«¹£ÆQ·õR¬„ý^þ‘XzüØïþÎò8¯Å–üŽ)Tû&lþŠº°¿Šô•Xmµ÷®~áV|Y]&è¦~›B˜ì CvýYÆåWÖ z´É¡.†±‹˜Jö·ãGå^ß¶ÔÛn¼Êøwo뎚ˆM}ã¡£–»S’¹S¶»JB=ö~ë06;’†qE\ºƒKAÞá,|âh¦»5­Ê6¡°¾x¾—|ïÂøOÆÔ)ࡃX‘9R5ã8bqã1iKJBù®a#Œ,Œ¥Ÿ(Ù6q^°ÞV2UÉÊHÎû÷™DssZNù°ïáFñܘšóˆ– })Ui@çŠGaÒ? i8.ŽRLtõ‹]}‘lèùî¶{:?N§­ÄÀ2 ³´åÍX{h{ɉØ;mCw¹\0Q«áf¢¿íÅ3}A¹äN-ÓúòÍ!d$ÅèÏNWíE¡ Üw­¶•*ò‘Æ{ÖùÍÑ,vÎoñVØûõ»½ñåÁ–ãDdww/°#wá Û3Äš×v óyD:%&óÛº¼^8jÂYô¦Oí¦Ä GÄþyaÛª]l4ìåâƒ0©SÁUhSÆTxêBžm0}Ÿm!Ý8ñ Zth!u©GA ©+n2X«j!£F‡íã×£Zf<ê"ŒÄè³ÊúÅ|ÛmöD#…„X6íÑãØBw©æ;•95Û8¿J#S œ;É‹t Åv¿¶‰ìÚ¯k õ¯P„ˆTa¹¦BÔ(kQ¯2éRÙìûëˆT[H$Þ‹2é7¶òe= rgž^›#ѶyÉŽYȈéÅ4ŠEüUüRþÍ)'ïª0lcÁï@@Všz²{… Ž 0›w'-ä ˜Û ©[ Ü5T[êǰ.ül¸ñèƒ §·bBf½/Ç`Ìá­×ndùi´U¬˜jC¶ö‰´Õ]иʔµ²Ú ™ó"B™Žõt¶‹o[/ýâ 3™ŒoukxÆ4›¼*±}²áhÙµ\¸vFº›”þQb)ëøš¹èÂTôQ—~ñäŽÌÔ­…ò³«Âˡ¿ÝÈäžtö˜}y³y~Ë,…l¬gü—k+ÇJ,â‡Aødo|¾ó!õS³¢ù{ ¢Ù¥³¶•UÇâI&¢ÍÔ­¼³Þ]gw2/¨~¿ŽrMMóèÃJ#W <Ù‹Ix\ñ,ßû]ZCac¯¼8!‹ÂÑñº‘Ol[KŸÌ×Änß,鯂K–‚û¤Ü_K«X>™Oó™EIŠx†rq9<=9§ªêD•£¼õì¸NÚ#ÆwlÂ`¡ý.°Á°K>Gnï j—‚%W{»G9[°®é‘ßä'«6¯wy‰û< îåË×/K}†Ùs8˜9)ìòÃ`—¡w=ožXsæÞœÕ|NX=Å^­I´´“wFð|?f;éXïc°p_Ð$8޼>ȼwM Ï™ÁMHËV&1E³˜ÞDVmÞ^{¨Ñ-*G°ÞËBι߼ö£xfné^¹a/KÆÍqz‡M"¦í£(k/qÈŠƒí¸¸ÈEœxa!f#²‡ŽÇÙWªóiWX!Köt¼V ( Q^..•'oÚÄ È›3„HÐbZ ™LâDK‚ÈÄÔ4LlЭç I;MmùDn=æHÃ~]ž|OÜ&q¼¯rImÂŽ„¥¿Da5¢Ø[Âù™.ëÛ¶×Nâ„ðÈÚŠ¿/#LË4E€ü »8ì/^v}Aõö1ëûóÛ0¢ë迎›NÝñi—ªù³¤¾NÃØ:¯¶ö,4‰ýÞb“ ]œd ûá-ØaD¡OÝfÏ+Èçàó^#Çט4´‘0V­O—Úf¿’>ÉF´‘ˆÚaô>Rà¥(‘X±Íýl¡MmÇd ahß´Ò”¼õGï¦1Kz§FBj nßô“CvéÇɾC× Ñ×hô‘ 'äCê¬Á„" Ü»­£RP¹AcÑÉ×WÛ¨%ºg]x»ZSL‹š?ÉWŸjë IÕœ×ü–mcÄñ‰ÿâ´H6«×L‚c¡xYo*s«Mþhá~…OFß#+†øB=öPÄ-Z¦è¶5|¬±wϸ0ÊJ¢¦U†íË&tîBGp,( ÈÄwëëÞÃ5t…n@ò¡ihp¤i»¨Uki>cæ„ÕÚоQÏVD¨1ªV­jÊ]Uc3K¢ðÕåËÅi‘?v#T¹Ë äB‘šŠpjŠ`™$l¦DRµ2.ª‚0Ÿ•Â~^ ¯nÚd¢5äU2”»6YQ˺(õ8VÒþ¯éϽIùÈ•2*5U³B4Tï¯PZi—}lÒºN?Ronn.^Å~1®V½ÂÇV*V4›D¯vÅu±WŠrk•d%cü»» >šì—ÖÅ"HVAOÙevþY×>žšpØï¿Ã<óì(¤`H>Älc0’CŽ`6†±6Qy‚ûPK yºZ<IAR-STR912/.svn/UT •LjKʈKux êëPKxºZ<ÇŒyç‰&IAR-STR912/.svn/entriesUT ”LjK”LjKux êë­•K¯Ô8…÷%éªò£ìÞ¡Ù€4³ž ›+?Ê÷fnw:JÒÀÏÇá¶fR@©U9ÉçªsNš&÷S£‰š§eçãáÆñ¶È¼tóÇ¡›¯·)I¹NÒ ²ê½éz]þÝtX¦Ûð|Ïa©›.óáíëwíûÓ;¿ù¦ø±EwB}4þ¨lç±>4ÊÛæŸp‘ùq’aè‡Çæ)Ìí8]ǹù¦¸¸(€ÐPª½^e‚ÖÙ ì“d£cóªùcÿ>Õï¶¼“OŸšÒŸ¥y¡¨µÄ'à#ú£v|­M,1¦Ib41€ÓÁŠÎ9å£W©¼tKê„t4pDÛ±a¶ÌwGøaç+_?¤ó-Ë×)­«~éÒ6FÈÌ d½^¹B Š :¼ËÄòŒÖ ªXç~x–éÎx–¼Q|‰>ÔVj´äµrh2bZç ƒÛQ!úÿÏùEœí_¡ê¼Çm 9q²±² d‹F2'c(rm.%þEÉþ°È¢æJºR¾ Ó óüú0uO»YØ©l–¬ÁÅ ÈSP)G»¤ï*c–³,rîcÃ²Ž £ÄÄ TˆX"RQ¼Tãb‡Y¯h??l7 S4ÂAeN’¨R¢I¼¤)íA…Æ*SÉ^¢ïî’y Órï«ËªÆÛ +¤v޵®aŠöVÅ¢QL`•U¿Ë õjìKŸ¦þv¹SþÄCy5qm*R è ’ÑøLJy­Õ.Àê€Õíÿý…Ú?«H7û܉IBˆ xP6Ö'T0Þ²»0’ÒLw¡¦ëP¶Ú›jUaºúßò5¼¶†³§*ӈѹ°KXZ‡M>‡Ëx–ù>÷/PK vºZ<IAR-STR912/.svn/prop-base/UT LjKʈKux êëPK xºZ<IAR-STR912/.svn/text-base/UT ”LjKʈKux êëPKwºZ<ò‹=Û¿ °[5IAR-STR912/.svn/text-base/IAR-STR912-Lib.ewp.svn-baseUT ‘LjK”LjKux êëí\msÚ¸þ|wfÿƒ§“Ow[0´½›Þa³c’z ’íÉLFØÂ¨5’¯,²¿~%Ù¼Iî‡{i’b[>ΑtÞtìÖïËyd- MÁ¿½iÔì7Ä> {ƒòîüüã§w7¿_üüÓÏ?µbJ¾AŸñËjMQï²[/š­úö¡¼îâǹð.¿¶ê‹½Æüò#Àì†à.ñA$ú¸s¼Õî ò ‰Ù.Í+%6Ûc%cž–‹ùž7kÕ³[TëÏÈõ'ßNâͺ(a§ ‰vŠPw€">‡V£øéЀ®{Òø Øƒëxz$€ÅüÚŠ ŽSf-Ž3Û(eVO7˜øÉ6Å_¥QdM ¹~kªs7e'JÀ6*¼?B×va@ŸŠQŠ0WƒÛ(Þk—Pاî ÅæX¼¦˜¡9ì¢ÉFܾžaí]E`qP‘TÓŸáøò”©=&ÖZië±™ÅfÐÂb¦GÖŽ»`‘©¼æÖÝ_~±hÆ«¡ ås¸fÝ+Z3H§À‡o-7?÷–S´„7²^m„ZIÇ„2ymžF MžLøíVL9©p`%>ÀÓ·ò+o6ƒKkÀd³„QFÕµ8»’Ír+w6î÷»_¼ñÃ¥7<»÷nÜûK>ÎÙ­7R^µ™ò’P¤>Ë]œâî|¨½o8Êh]°Ÿ£AûéTàµ÷vÍ®}l4ßÿKu½d~_ƒI{(¡ÀœÑͱ$ çqBƒžk>®ó2Ð ëAœ£ÆÃOæÕ?Fc+ÿªÎk—+cˆ'åZziÎyåö,Џ¯,“—¯ÎÄeu™ ëåá)1ǯwJ‚S„Ç’>_Ie“C‘%£ //'î ú%KJ9Sºep¾wE>Aä°YÍ:B!†Á »3`pœ\wÿ›" ùœ`„=Åf-`o•Fe¹%ÓFC(Z‡B® M"q×.æ6æùÅr¡<ۯⴂœEïå®ÊÙ•×í<´oœ^ç¬F´¬¯â±>ïh’%?C”ůªä¶ÑÃ~”–©rUnò‰'cä>7™ÜsÝœ!‘Šm–Ì‹Á°ÿG–ˆE+ ìh¬®5YÀ;hØÚ¬`VrxIJZƒ¦ àˆ/ÒpÁ¥ê^¯'“j„~/geU¶ÖcÂá1Ä}՘Ʉ«IKÊ1FÜa0<¸eXͮކÕÂÝ-MünëžÿñœèsYü?Wy,WéÉTV^QäT;YThÀ ·+8A -3XñÐ>%"¤9fT£"d¹+s&G‚ü9}Y Ñ/Kõêr¯6*À(±ÿªÏ‹'wÈ+/Ÿˆ aˆî1Ýðcƒ´czWÄ)Jµiê¿ o:ð’ ¥éUåìVæþh®'ùP›è,ã 𾳄¾ÁŠ=9IƒBé*³»iÂ.Ä!›Ž[7@Åçª c0ÅÀ/]|çªËûëN ª(Aþ¨šÕ‚"clü¬²^;3©Qˆ ’‘N59O§ò¤§S]Bœ[Å9brOÐô†Ì6”¨¯+1åm9Ç 1¡p““3ÈÖ¤D3hÏú9· ¤Çq•cÌý »;ƒ ¹´2 cé‡~û·?øÏ‘ „ýЇšªÎ@ôûn®·äãequÓìy?ÌoDlX.UÕê(¢h à@¸€Y¶É¸Ep5ùæ’øIGrâu˽ûÇòr/xÔ.™H+ñUÎGcë`«‰?"._~}õM…¶çö{µ…]1è­×½tܱ׿9‚Ü8]x1åJEÁö†Z#È`„&µ `ÖYçk';ÿÏhÕ×7l! ËNòëëïj"öºÞÍýª³òä­Ç§Û÷.šxýlKØÜÚþÊUÈw¹=ð™ë“ÈdÝ´dJ>=(´ã‘] -`§èbϾ˟xÇ^#©ò¥@^—dÓ˜ÊöÂxô4ŸÈœ&†à1{ôШ}Û…Ê« †¢º"4'BaÉ‰h6/+A2%U TÄåsOË‚ê’Ðl1ô ÅÈ!¡¿ä“’æñzÜW¬‚¯£µ º€î †æ–?=;h™xéH–gãqÕjâGÜé½4aˇ«®3ú\CþTcgŽXjHìK¬U½¾(Ã4¬¬Ææ$œ¯JpÄŽe%@¥e«:pòç’¬D–Þ”×8'nxZ­¶´JÊÂs¹÷8¯áÚ+ ꤌpWºÏ× $®ƒˆ#æÊ ( )˜w0£O]0)«ÝÓ2]žá™®E>ŒZŒ÷ð€}ˆ³ø9ª%†ºù:è\™òMÒ ªÊî%áVÎà ê¶ŸX™ßµ¼R}z?ƒeÒ/ÆÑÃM—ín+ƒ¸Ô¡¿~à+PxŽgZBƒlq€‰JJæìe£a75Àˆ*Ӄ맢Êbê·ëÓ‚ÚÊ:‘Çrw JKWºº¾â`†µ»s^…«ðÒWshÝ{9‡értê‹w€©3Óû&ž3t?{wû/XÑ?¸žŒ&ÅóʲA_/‡1¿[¸F:2ëÝß‹^’˜ÏÖæýnÂú~ýbȽ bÛÅМjkØf)ØÈjÕŸ¿i´R’Æ«ö4yþ ù Ó½Žn%K²;îEŽ~mWf/<}9¡ÙÄ=´|€õ æ@!8GzMu cDôPBMMS@ìwj!4×Ô!Ê4JüT¡$ÖCˆ¡¹B)‘ôPZ MÒ~ BM„PɰµêUzH«ŠØ1_¤V³[²EÅýßZòz&¶H- _Bj‡m€}’²W»C½M¦ìVÉÌknŒ`pø>Q±zã¶ø÷7PKvºZ< eÿèM3IAR-STR912/.svn/text-base/CppUTest-IAR.eww.svn-baseUT LjK”LjKux êë­RÁŠÂ0¼ þC)^k¶Â‚B¬ìÚ‹à^ªâE4>ë[mÒtÝÏ·†¶´Rz’œfÞcfÞºøOoÎè ¥˜»þøÃu@pyB‘Ì]̤7~Î<ß]ÃÁp@ïR_3Å8Ðq¨Òò¸±à ™¹£ý殢Ña©Ôn ™ñ6ÛhæO¼†b wE‰Ý³¤©Ð/·úŠ*¥5ÆýB13üòãíTiY&„3 4Å©%] K!¨¢Rba=L!A׸±¦m_®r)ΘäšYÃâ<¡¤MÖFäũǹ«Ö7ûSÒUWÉVµRÒü Ï÷PKvºZ<õ¤%Yq)IAR-STR912/.svn/text-base/init.c.svn-baseUT LjK”LjKux êëÕYës›Úÿž™ü[w&‘œXßø&µ›N1 ‰[ T@ñdn< FG8øqïøïî9€ÐÃj\»wZ>¡}ïo÷ìYìvûÜÏØ’¸…ÏëWíÃ4Ô&¨Öø«mô.w:?ƒãŽÂ MXÄž&qd°Kõõ«Cè…Ó_0¨žSXøaÜ ˆ­ä|ž¤PNa¤j ,—Qøã½È¿v¸Ïó¬LLÖb¨ô‹nèåQÔ„?}¦O"Ý•pP´.•ªAÉ- ÊpÄJBWÜ8ç êÙu“Œè)ä¦Ó$Zl™1ß½“æj9’M=˜'åµY99 *|g÷Ë”exáâ™9=(«5”ª)xö Sr¥4½{ã<›ñꃽjJ„2–k¡ ȸülhB£8$o¶I”vxò€ö À“V÷銮| ~Ý??R»›ðm(cìØ³Â/´RuEªïº8y´˜§ü/D75ú»nÏêÅ{ýê_PK vºZ<·µÄ±0IAR-STR912/.svn/text-base/deletelib.bat.svn-baseUT LjK”LjKux êëdel %1 PKvºZ<˜üt¶™ #f;IAR-STR912/.svn/text-base/CppUTest-STR912-Main.ewp.svn-baseUT LjK”LjKux êëí]moÛ8þ| ìÚ~ÛÖ/i{—Þ.dÅiÕÚ±a9ÙÀ %ÚæV&u•:ûë¤$¿Å’“ˆ£~¸sW/Ô<œÑp†3©?֫кÃ<&Œþþ¢Ýh½°0õY@èâ÷$foÎÏßxÓ~ñÇÇ_ùõ—NÄÙ_ØrDz:sâ›ôÒgæî®>ï3:'‹„#‘’)Záx–,:M½Œ…þ‘¼aÞÔö6[vEíc»ÓL7²£1BrÐû„)æ(Ü£)Ï!î/Éݦÿo;̓#›–h³'÷3á}lÿ«Ó¼;h,Oÿ@T\1Úg> U÷öwÚeBŸa‘ا™³Ò[ãËVR晘oe³N3=°Cµù€l1Ðpö×c€d³Š@}‹Ç ©v¡n'òVCÊïâ‡c7tÓ“ö»Š=øÔ£ì€¸˜ßVE—F‰°îN3Û.eÖL7ûœè6Å_&ahÍ_!=~Uu7”@ TY?~†>¥Ø]B¿‡SµËÑõOï'‡q<äÎ’DÅ,¶«JrœPAV¸Of¥#|>ÃÆ»â…èî¨!©§?ãÉÅcTû:Æ–Xb‹*í­½)‚ÅæúœÓt~ûÍâ)VHf\êmúbV¨¼&¶˜Ï‘_[Nv쵤h©Èf„1nÅI1.ô¹U 2»8–—[—4æ¢ûˆÎ_ëMÙl‰×ÖÇÌWÒW†©ÛUO,uqG=ÇIˆãç|E«Õj«OKýê/ù·ùÊÎèõÛj¥»›+¶Í²ÆÛC­ÖÎų#µF™·ÞUùV.[É´2}òÆÙW«´íÞ¿­ÖÎösî€ d·²l¿Eç®ãüÖƒàüìéÁùÙÑð28wœ <'ÇÅúUQ½gÄqÄ™)§=pZ¼qØj…©(aÈT_ Fåh±iÅ+F‰*µ Ç1Z”é› ;Žëœ„ñXÂ!}¢ã¤3Ã1^!þTp-<py“ŠqF¨õ¾õz„ÿYÙÇ¥ˆ)c€Hü‰8•–¥Ç9+qÕ•1TŠ“Kƒ½†KH׆rÚ¬s—ÏNÄ¥Ÿê2UŽÌ¥sǯû˜üfeVúrP•)GuFÖ‚£¡>;Kì— ©Ê‰Ò],@}ï#ºP©•V °FÖ# ŠƒQˆu–ð>9Îÿ'!KLÜG°Îpg”¼4Íí?”¡µ9––IÎò"éÞy–^,7•µý2JjÀi _>kyuéö{Óî•=è½j0#ã«8Eœk`¢4KóƒŸ1 ÊBÙª”¾Ñ¥~˜”™òªÜdЧÃå¡tœ@.Œ9NÆÊÊž•èÅh<ü’ædI.Cà#Õè¶ÑP¿…tŸjhE yvP9L.º§$´ §{rL•&¯«®»:%÷ƒñï%ªQÙúmLŸš#Éém$tºÒùJ OÎ]^]d¬gpËjáz˜!~wÍÕÿxFõ¡,þŸé<•é´Aòœµ× Ù5ÎvH8(–~…ÆD;"Jj$ª" Ï™Š‚ŽF&õ˜H[iæ Îåh?—0*ÒòD± €±œÈãv %þ¿*ÆÃrË=ò•‡O(ÆxAb9cº’û€A· ½¦beç õ_‘‡ŽÕ4HiF¶rB,þÞhi'孆譣–¾·Æ>`½ ïí8Æ T† v-n„¸éB,ãÖ-P1ÆyU šyòKßyÕáýmŒç€&J‘?if è›>¨Å7ÎL QCþÒ®'Mjמ'µëË¡K¯¸"B/#B¯áìB©ê¼’;Vy%Ïv”q¼Íɲµ)± Ƴ~öuŒùiÜÊ1æáß `Bn­ ,ý0ì~q†£ŸÈ@´žñT݈áÐÉì–~`¢,®>ƒ}!ëüÚÅ–åRSíDÑõÇâMZõûf€mÄ\MJ«Â«Z0D57Lëº!Åîì/‡E÷&²Ï/ε7žJØ=á©A¼*ß$‡¿ã;;;MüUJùÊóùV5º®3Œªøæ“A¯Ýþ…íLÜáÕ äöã…qiHHÑl6wO³XlÎo¶« Ïí»W_Í[ËÚóµ®T¤ï}2s‡éÂ1ܨý&Ãw½"ðYZвÐZ3¥1Tñİg›_–T^šTø›ò­S±rªG¡}Å8òîW3ÂMÀ4ÐýHŸR,—¬Q¨”±ºÀðBÕPׄf‡dQ²lbFa²$5Uµ@ PT®{FTŸ-`k¨s—APHþÖXÂã ä\°¾N˜ºÁû.~:h0¢xéDzg[œ¤Úc~«½×zzÙ·½ÏÓܧ5ˆ?7ØŸ.ÛRM¥þ+¯ôWU›ÀöjÂ1v,ùªG­VÖTZåj'{l!N+jÙñyƒ:qãÇ•vA«¥Š<³‘×]iP;L1µL~í ê< %bYâsk97ïݹuíq>ý—W7‘Ø#s#έzTðû>š•÷Ñ©x§ê›aP‹ñ¦S‚ø4J/˜ÊcÜH¬uõmÔ9:''%f¶*»LºBÀ›¨¨cÞ½eó³õeÕ—¤0^*ýb3ÜôhÙòwe‡ûùû'¾UEvàDgaø˜±°ì½Cëv»ufF•¡?5•s¿KÄ÷ÔÖ‰,æ»AaR:Ò«Û+ lý»½ó:æO}ó‡Ѓw@׫s_½V¬ÈœA¯ŸÈ‰óÙ½9|‹úÑñšBÏz¨΀³ë ~9qƒtBë_¾|yç“p ÷À´¥k`¹¥`©ªÓ|øZÒ΂³$ÊÛkPr¤šB¿ðô §EsÝæ™’Û¥R›/ý Æ~ZúîTS(jœPйy˜KD„có„¿(ÍR[©šà“Fß/°a Î#Ë.Ô1 “¡æF!êép/Â>™é<¨N¹è®Gä¼ {‚ƒHL}}–²Â1@×wˆO}òPB}A)6Aú‘~E=NB ©¨?©Š—d-@lݵPt²ú£Eï4·¾îˆÛ‹¾rçQ‰¹ÂãùQT‘á"Œg$÷v†ÉqE`û^Â0Ì• (bý}è¾ íyô÷M8q‘ì˜oÊã B[›nÔS£j†h>÷‰oeh”RΕ!œ²­*%šì^}â…?ÝëËŽá‰=ØZ`£™ù5JS«ÜÇ#šŽC£$=, ¨îØQ£„1—J WIyã”S jœlnä+ g”¬6B§(îÙ“]œCÊ+ôÀmlȨšÚü?yQ?ÿPKvºZ<âU|×+IAR-STR912/.svn/text-base/main.cpp.svn-baseUT LjK”LjKux êëmQÁjÃ0 ½ò»8¥ëØŽ ;Œ°Ã £ct§u “8‹!Q‚cg…’Ÿì.Ť½È¼'=éñ|£0¯m!e]÷±“½¹ËÚ¦XlJ‡ß-¢Ô«ŠÅQ)40 ¾ …<‰£c¸†ÈáRóJhX€>¿ˆ;2Có+yl ìvðõÇÕ­55lô"-ÕWï¯×ô>Õµcz.ò%íNH5:Wò`$ YÆ7Vhó‚Êð$ ©ç¼jÿ©¡U…çÞ¬áÎñ"àI7²èÃYÂß;²¸-KNû®upÖ(kÑWç=ã”afwá4¸<õE¶×{¤Î?Ѓ¯Žf'ío¥j ü>qÀ/‡Ù¥'rÌŒŒÞíPKwºZ<–ß‚SY¯E;IAR-STR912/.svn/text-base/CppUTest-STR912-Main.ewd.svn-baseUT ‘LjK”LjKux êëí\ío›8ÿ>iÿCÕ݇;iMÒöz뤬»’ŽŽ”n“"M8Ä+ØÈ˜¶¹¿þÌK^×°\ˆÍV5•ǿ籟wC›ïÿàÒüîð¸Ö8<€Ø!.ÂÞ»C‘£óó³·GLJï/^¾xù¢Rò :Œ7šcäÛì§'Íúr3½ïuÇçÍúÝZg~û`vM°Nà'®´—ú=ÊBz‡„luÌ9#c¶ÆIÆ9 &ƒe'KƒÕ¿­`üvÀú”80Їa(7€r. æ©Q¢ƒ¯:¹ÛÑQVmR‰µ•¾V` µÑhTs‡'XnID•¤¬ëÄ*iiÎr”ä–}Ó¸ÊK' §_šO¼òÁØžLùnvèRm[ó¦c> [´¿é,B‘¬Â "ÙW”+xm ÁmHf&pQÁª•.<¤p*„\\á¶ ±Èÿ¸e-g7]×Z¦iˆ‰‚å& r±]¯Z u\ÄÚÒµ„ãoòìƒÕêå®7¿¸c^›öž±JWÖ+á[+„° NyzRÞÖ&0ÜeŽT×LÐ?|2!ú`*´ú+!žJÒ0bøâÅD%W>ÇëÅ>C6 ¸·§(–°’l6s]j™½¬ð&6äÐåq—­œ©C챉p Ä+ˆ$©~Ž™J~Ê^QÅ´<ƒ«½¹ü+ÉÅ+¦ª)€9“Ôˆ‰äv4À.˲>i2`TîÝeàô)C~”¥™ÿÈ€éjBaRe–™ÕfaÜ´6ÁÜ^»³Á Ò1p ày52¸l‹Tð~_ÎZj 7mAog˜Ïö<ÉJàòvÉXz·Hïi][՞ʦŒ8ZИ¹è!ôY£¼þçHR’­K`ºµ›€öZŠÙÒ. 1¥óSÙ"úG7]åD„ þØ>íW!**?¨„/•”ìrkœ¿y^ýÆV{ZyÀ¼ª"òéÇ ._ÜüsOTT[èM,ΣÞP¼Ÿ<ÀqÝ–ë<öÖxh4Îɧ´³ì‡äº]}ðyo+HÙ™Î|ee;AVû›O%îOj™•Q‹ž›~õêÕ£¬Žþ….o—ÞDS5Yû£s¤dTþvÇï¶Ÿ –eaž –;Ã.Xr˜A;vOHÕ»é–-l;ý~Æm·¹´?h¦Úo™ö—§1ŸŠ=AÔíʦոê¾$ý`%6I“ãÙ  }?ö^ç0½°ÙìËÃ%/Yu}à%K6?_P½†¿;=6ÂÓŸ†&Œ +ûÎ ªÃê îÜÂùWOOŸÜsAÎüÄ´ «J‚ì ÏjÝϳãO#E±bXGš6;}l)V8ORçSn鸕#xN”B’7“¸¹\il;QÇ"¨2(Cé—œåÚ@EŸ~Ÿ›ÜÅY¥³b1àÜfßÕÒ1 ’íÜÙq´äñÍšSkÖ×ÿc ÿÙü®$ÿPKvºZ6}ÔxóLwÈ>M=æûàzÀ'STB{&j3ßîXölÈK³7›Ox€bk(‹šBkUÁ¡ž5Ưæ€Û<¸QvGN®ùíén«²˜ˆ•ÄNìú·8¢¢\©K…ž°\Ü8Ūqz¥å3}A"þ‚/=‡%ì>6³ œààæZøay®2‡f5ZPèAœ[!’kšÂ10x«áDVŠ“u~otµúÛ|*Ïñúââu­ ÃxÕ%ýÓ@z{¥ìî, ¡Úx¤E ¬’°+Ýœ’¸:;Ћ[½øP¯íq³n8Vƒþ“,Ÿ/?œê¯þ¾¦·6æ[´ÒrÚIê3uê ÇŒ&ú^™~!þ½èÈÆ;²y½2à$½ÆûžÞ^WÅcz­‘ÐèÌëÅbS(Ån*§±_„m>ëÞ~Ð?…ÝðÑ‚ës]λð ä(þ.oûØšÀ§àž*¼ƒêEýãWu&èŒåD’óþqîéøi¬M–í}šJ¾nt»¬‹­-·Ý;i¸)EbKå"Ô·Ý#ÚŠæò!ñÖÊPKwºZ<×ß:uÇa-IAR-STR912/.svn/text-base/91x_conf.h.svn-baseUT ‘LjK”LjKux êëµWMoÛ8½È —¶èÆ’òÕæFK´ET^‘J“¡Øt£Ö–RYÞlö×ïPŠ]›k±*Ð¥}ð›yóf81Ìàý‘oÝwàÆ“û„}Že]a>«J¹”³º*‹|¶†c¡§'ïa”/%DÙJÂnÝÀ'ûïé¬,gŠB6õcYÁþºÐõ€<=-óYVçeBf+Eö²Z¢hµ®­×9Wdër`4¥ÝÀ­¬Ö*Â>³š¹žUùS#²Sò‡*«^@‘ÙTMŽ3¤ÿæ¥ ðóu]V/7ê7ê8ªÐëƒB­ïâ¿›°_}]ü*>…IB9ðx$îHBáÎg®ŒÃ(N`œ2D.…8 î°ß2EcpS.â&î˜ð•¦7axH‹#Hè˜$²D…{©+8’ N<š4©Ð‚ˆ“[ ‚…ô oÆxˆj™›Ä4 ®H∹¸O‚¢XÀ‚OF†m$ItKýsµ¿”"ºÜ8âôÏwÎH ɘ¶›PÙ&HTµ(7h·0®¶0Jâ°i* oôFÀSlÚ®‡$òí– åBâQÞïu #Z ½Ym #AXD=ÜPB±IøE[„E©v6Evò÷OôàôD}Þä‹b.0ªW‹Mñ)¿AS^HÍzz2À‘*Ṭ¾A^ÀÃf±¾¸«r.áëß乜•«•,j¨%,Êå²|΋/°TjmÎÁ`«>|Uv÷"þƒÄh¨KxÚl­íËŽ¹+<²²µlS+ᲦãV³kñ‡d2fE!—V—Ãîr8]Žó.ÇE—ã²ËqÕå¸þÉC§!ëÛ¤êx:ÌŠoÖQ«}Ô굞Kõ/qÔ”Ø-uÇÒ¾RH5JáaÝW ©:¶tƒ­Ý`nÒxÂâÎzöß!EÔ ¥a[ÃŽ†Ï5|¡áK _iøZÃ5üɸÓD˜O‹½®!Õ(Å]ó8ì„h %i5…æ’R’ˆ^ÏQ5hiØÖ°cnŸôlŸ"ëšOa—D}RͰ¼Þ“€TóÁà{ ÞØ(ÅœÞU!UÇ–n°8ЈvÏ‹~€#·UûðpD³¼˜ºÕ˺Ζ°¨ä÷,f/ðW¶ÜHxûÙÿçÝ>¿½ÁìîLûÁ{sq é\Z–YÌóÅÏêùõµ»Ç5ú€×¨ý;ÛöÊu¬›¿ðß O.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKvºZ<÷!–+t/ (IAR-STR912/.svn/text-base/led.c.svn-baseUT LjK”LjKux êëÕVÛnÚ@}·ä˜6ReÈh¤V ÉÁ&E%`QÕ'Ë1kØÄ¬Ñî:JTåß;ãµ¹µIµ‹{.g×3gfl[¶µÇE”do?5îƒé‚§G³·(ž°˜ CÏ zž;‚ ¿;8^É¿~•æƒmÑç.åè±I0Τ‡ ›Tlë»mA¾È:ø*¹fç\;+˜hÀé)8h~بjƒ¡7òÆ•&ØÖã6z¿~|3 ¿ÎÃ`[µ*ø’ß…š~X0||8|þªÖ6‹`¾ðgÄyÉôE€?#Þ…’‡× SÏG%Ä"5]Áõãèb—‚‘–Y¤3Éš;Ç™ˆ4O,dªSŠþŸÁìlˆƒLn§"æÓL†ë¸Ò$¥Q;—%დ¿ÑN3¡Ébç±^Zõï.ÛªB§ŒX?œ3€¤¤p™Š$_ä: Å%*(®SÎÉ +™†å:~*)™^׬C†ÛŠ¿»jEÙs¤ –¾rÊbßã1Õ¢ë_]˜âŸ°ëlꘄî11᱑Óï¨}\¶{_Fi&#fhà”Â`0jc#ÀU«^)x ¡=Ë 4Ì Q’F· roÃ)röÑÙåw\¥r ’¤Šˆ‰´i /Ágü“a×™"´Û‰ñƒ3h@ú¢yIQ–ﯔfs³½c¸Mä%E©¢`C÷lŽ®Õ¬Ë¨Hך©‰ñvùs.™aá™±ñ¹0,zÒ ­Ö‚V’`øjõûøø)/ê%¥]~¦f~–$ðäf­D3)°šÏò[s<66½`c‚¼ÛF3‘_M§8 Õ,ç)Í&É,Ô%ccÌv.æxàzÿN ¼Þ߯M1Ç0•4ã`ÐéЀ+3¿>ÞÖOV¿¯×s/½»B1©‘¾ØË–Φ³Õï?vp™“olÖÿ½½È÷·x,âô*}o«Fv6Áe­©íb;úºâ/fZA8LŽ'htçOù+¬ÚWË?7©MO\t°ÒìÀë·Î{ÞÁ_%q9qv&ËðLAXPMó9Û$3·O@-XÄcÎÊV^z!ÍÅTÏŽþD>ùîQd’$7y×0E‹­Ä¡{cÕDÝ›¼¥ÜRÂw' œvÚÿÛ°{ñy ïëõ0_r|cd ¶l™ aýÓòú.vèt{^qNÛúPK xºZ< õ¤//IAR-STR912/.svn/dir-prop-baseUT ”LjK”LjKux êëK 10 svn:ignore V 21 Debug settings *.dep END PKxºZá…˜‡@X$(dâ;æ3¾/‘*ލpÏT`=½¸_`ñˆ(stID?‹™°¸ŸxJ¢báSчµT ’ÜQP,¢ ²ß|h “P}²{šy"¦!õ”ˆ9ó$È€„!ðXÁœB@CBFæ!í- Ÿ TÂX‡'ëˆK^Ì%ý'ÁÊ Á'YÒC6Ú …6kà…‡²“¶„…ˆ£¾qè ïý lÚ©‡„ûÓCIH ñ)Ì^t ‰ƒ‡Û¬C ¹"ŒS ›„?œã˜”mgŸäy'ß~GO//./Þ›M‘ë <>Ú¯AÈæøŠßãŒ)ôù¤Õÿ¨ïìô>­&ÛwîlV›~º·îI0'«ùåÀ¹4Ý®Ój}ðÐEn60½úª†Sv½Ø×{ã¨sH?"C2ß§.‰:‡\ŒÅÜ c.1ï˜7$ŸMæ’¨sÈ{– ÉMç’¨sHü7 ÉÖì]u¹\±xˆ>U¦tY«t`¡FJ­ÛA©¨sHé”ÚdƒRQç jˆviݺ¬Uºaåj$lS ÂÊ•Cz„É,-\uIü‘&¥ù I¨s÷ƒ¿ÙùÓ`?øK‡d³‘˜f6ˆ‰º߃/åÑHœ}ö1åtäÕéBÛWpÊÌ2˜ý\•uk/ _*ÝÀ/¯¶Æ—ŽøjÚ´hÞõè•y‡÷“ª6ÏöRôœÖ&]ï~*[7Ç}Š·»·¨zuLnÓ™½½¢•nޝ¶<î>x.M¹^wOÏÿ¶óg›õÛqt¤¦#ÇÚÜ”)÷í9½`!=žˆÿPKvºZ<]Bž"å6IAR-STR912/include/91x_i2c.hUT LjKLjKux êëµXMs›H½»Êÿ¡+¹Ä)¯,)ÞÄëœF0HSáà È)Ÿ(ŒF6T€l§6ûß·{@Bȶì,'iúÍ{Ý==='[ø æ\\¹b8ò¡ßí~Ï·â(KåLFE–&q”CÛÔÃ`Ä3 vx'aõœÃ_½Ç îG[B°Eq›fPÎÁÒt`óù,ŽÂ"NðexG`=,$rfy"ÏrBàîŸ'½³åÙ9\Ê,§½NWMy”ÅsE²b÷oã¦äY”&E'9„³·¦‹$"pó,-Òâç\"ýC#ñµ>¢¯AžN‹‡0“0‹¯³0ûÙAôo~HçEšý<§ßw¿OqÙˆ»¿´nç¤WÙvåëðØq¸p¹Çm<Çð¿3—Ã÷‘ÐF <0†c¡3[ãàØæ0ayÀ|œã\ ]ØCÐÆžïXÜõˆî»ðGXÊ lœn1_86¸|È\5Š‚Â¥éúXó=ãêÜURh³ÀwÀc—|añŽ*ADolúÇTÜBsnrÍw[hx#fš`;> 8Œ¸©ƒ)ØÀ䊒ÙW  ÑÇÄ%ìòŠ¢›¶Çÿcä‚™ 3‹ ¹WF€j„B_ˆ@3˰]áQ†ëXä+"‰O¹s ðÆ˜´U™­Ÿ”!ÁØã`1Ãàj-šAÆ2Y¥oë|-6×1 —c’„³Ñ)2+'73ùû+úäðàðà„6é4N$)n:y/“2-°.ï%ÄI4[¨ ýãçûxšLä‚€ nÎ`„ƒ“RdcP© R˜à6‰ÀKÔK>xGBwá¼sû®Râó4+°i•må­Jä;v‘ÄäE¶ˆŠög¬HŠ’Qþ9<À޵øÔ§¹f~óæRN¾–£½ÏjÔyHØd’É<¯ÆÏT †2‘Y8Ó°YnXôþ¥Ÿäš¸¦_›ac·Í‹0)^ºJpµ’M—ž„׳ê é>öºO@õ8_a»ÜP~bIú0““yGE¸%†€†H÷´²In –u†keÌ›|›Ø0Ù0ð+Ön·×†°Ï\!úm¦×Mßbàk•³VÄØ»Z"¶’¨¾ËVýVÓõ^·Bœ¶"øåÚ³VÄPcËXzÝVÄ€»n…è·#˜k:Ë•jG`³¼0JÄÙc]RínëLWˆþÓ¾U§ ±*Ní®¥"ø%ö|\n<§(™x\xvnmÄIèÃf5ï×fA=Á=¸òy€ç—Šyn*¥g¹±VlϾOôûq×ÿSɵkYÌó¹XŽÎOÚ°gj[ÕþãF|©T™³×K••ó¤ÚÖ ½^m÷‚Õµê+ö6­½×¯ªtÕ:ö•nôž§ “ö| sµ€Oˆ•ýa›íS¯ý]`ÿ-ÔLS}÷O…M%0˜0Çx\ ?£ü,3]tÛCz9síÆ×ÔAx€}Ûq7W Ñ֛Ǫ;˜ºš¦ãù+¿6:}cR™¥!·¹ËÌ@[‡öaçzЙsTµg+Ì ™¸2’xÍÀJñR·Õ¨UÝ®·Œ»Nlmàj/×Õ!W;\y“zétšË–»ˆæîñÜÞòÈÛ²ô+Kóà×´åAª5,St-÷)´ôKKSG_úÖkêðR-ZórxFYú¦;xu'^1®ßå_I¨²~ŸÆ“2*Iw[U;ÕW­ÕãÑרr¼²Õ‡Õ€§îååЊé¥Ó´»I›²Qe!œy}=±åƒú±1·¼-Y«ÿû±`Ï|5Ií®¥É4¾©3ÁÇ=˜„ÿFO&“/×qQ½ µ…„o@•UýÖc|s%^âÁÿ4Õád¹ŸwP”°B3é5ÜYäU^‹õH+EõâF=l³&f2Ìhîs³Ž¡Óél¯‡E¸Ãåk²mD©Údû …«Ô0;«ºø¶#y–¥Y-|íVF?và—´Ê~¤^9ߣçñ°Ô^öaùµaûÙç'^Øè»Š!L^}ÁøPKvºZ<3_ç¿cU"IAR-STR912/include/91x_fmi.hUT LjKLjKux ê뵚]s£8†¯wªæ?œš¹I²ÙÄà¯lïìmã˜<@âê­­¢ˆ-'TÛàœtϯß#ñ)ÜôÇÒs‘ ½^ I™Û+Á“K˜X«¶q?wAíõFà¸Ë`GdO6i…Á&‘ô矮`ì ˜þ@ù¼ƒ*Ÿ¼Ý!¸y¡5´SúÅPÞÁr2íxÜ? ¢\âh婟dÆI F’œÈ–Vî o•»[æì<’8¡ å¦Ç$ÙÄÁ‘AJºû$°£Î6Q˜úA˜€¿ßCúB`w 7´rÇ8J£ôó‘`Uô‡…”'|fK’h—¾ù1}ðûñç¬ýƒÚþ’?>£oþ‰þ»¥Ót„Ò§y%a 1Ùœ03_ áfb9údÔ_ƒ]¸%;ð<ºØàõ0q~ÝfÍp/Yûÿþakÿ–-ë“~pÁ‰ÉÁ?qÉòSð·Û˜$ ô>õ®aK6Ñá@;ÍV h¿Þ‚ðW’-›9ñ{Dæm›ZóÞ£UO)ÇÄ qßâò×%ìçŸbL2"üBÃ-Þ¼ü’·¥:FqбÉÜïm«NÄ%>Iý0ývj­+¶ÎÓñLª$£9ÖŒ^ÕìËà½×Ìß½ûP\\\]¼žúêÕeïÓpÐÃGé]Âo¿z‰¥y =Ö„ˆ¤HH½‰˜¤fÉ>!´„Ù­·òuŽeí|½cYß+Çá6ØÕbŸà~#Š‰éž“YÆ9•?ð÷fw”›ÍX×=G©PJG”"A©JíˆR%¨þߦßÓ—`•£AGÔ@‚V¨aGÔP‚U¨QGÔH‚W¨qGÔX’UÊÙ¬R8˜r>«”zV±\è€g•RÏ*6ˆPâ¬Rœ~ 5ê†ê·(Îöþ³dZÎڽ笜|«L›QóQìd¸îµ Ûwƒ“úé)aD‘]†[9uÜ Â!ç9öàœ’#. Îà Â)=ŽÃ §×qj §Ç>®ÀbØ9\­³ƒ6NØÕ3Õ'N‰»«áfX"5ÇwLü-¼ùA øeM‰däm]›zkÍp=ÇÕ\Ý«'Þ¦…µ0‰÷&¬Hµ‚¹oQÛY'X15ØKLZÞ> oq€~¿‡µm`µæŠeF}6Ë›ü‰£z Æ[¨zL釪×zH9ÛÇèİÞBº7Úϧ8;d ݯÖSO7Ùi§š"eC”·b¼)åé¡ÿ´'˜SÎÔp*— Î4Hˆó»bxö©ÿLpËœf+‡Ðóâ±å¹ÑÖY9kZ°Î¸§Ä¦û»/…ýØÅäÏ 7Ÿ!öÃg"Y6mýoa­Ë (ìÂÎÕ·(þHO V<ù)pnÜÏëÀA8ž_8âs…¤@èü P{Šðè6ÁrþW¾#§mXîŠâ·ÅˆÍ™L$ÖöÖxx÷ŠeŠzÎ3¼ ?µ¥P©„ƒ†Pøa-…j%¼k…ŸÑRد„“†P¸+…ƒR¨4û(Ü|•Âa%löQ¸Õ*…£JØì£pcU Ç•°ÙÇqçTárâÅßïZy!ÉœÞ\[ÌÎd%²'œ”D§C •oPr›5”„Äy'çIéèI)I#™'isžÄùÌyR;zRK’&ó$"œ'ñTá<õ;zê—$]æI:û8OâYÈytô4(IÒ|’NlΓx‚sž†= K’4Ÿ¤kçI¼vpžF=J’4Ÿ¤ËçI¼,qžÆ=K’4ŸÆüW½¸›XúÉÇæâU\OxKÍùŠk…ÜmqóA¯/(æ ·œRm)©R唃–R•*ûœò®¥ìK•ƒº²~žÊ•©rXWªmåPªÕ•ƒ¶r$UŽëÊ»¶r\)Z…Ñ|÷]Ó*ÒU¸UJÙˆ*܈JÙˆ*ÜˆÞ ”ýzOé(8蔉ãÖN›"éßO<ëÁõtÛ¶ìbÆÔÁ< ØìñÓj£h@+Ž Í`É2Úžpƒ}ŒƒWzÒyõã€î¸¿å²·yq|ð7x ûÖKãq•›«þ¶ø½ÄÒãw#óH¾FÁ6K?üÈ.ˆ'ìhxqºË^GQJ‹œà/r ùK3 ù÷ÿ=³ó;õUޤe½ë² FËË.ÿU3VøÁ;ÂãÉ|'\zaA*ÈšÉëïóêxú¼¸+Šñx§›Uíž{lz6ã°û–ìŠ]d³—Ùïíz´U-úW‡ùœã§dŸ’‹¢Z“ÜÈÔOý¶¿E•ô®ø‚Í×-9¾-E,n‚6›uri_«H¯‡Š›",¼'iõ¦PÐ7×Њ@a 5Ü>úû¹ ýlÔâG”¯V†%¿ËðgÂn“ät _¬6Ù?¦øÒV÷–“ö™×0Ëg§¿gæ³4'oìqÔ"¤׫ÊY¬²xÓÍ¢xá'©u$ÙNÛ~ñGº¨Öþ Z®§íçkþÿÝœÒ?:ÏŒ…^þy÷PKvºZ<â· Šc¤IAR-STR912/include/91x_ssp.hUT LjKLjKux ê뵘Ks›HÇÏv•¿CWö’¤²RäGìâ!M-Œ’ò‰ÂÒȦ‚@ÁÝÚï¾Ý !$K›Ír’g~óïÇôô€;x¯}͙ܹl8âÐS”Kðø8œ¥‰ˆÄL¦IÎ2hZzvúÌ0`KÕs_º/~–­Î‰Psù˜¤Pn`¬é ®VQ8 d˜ÄÀE°$X¤@Í4“À²,s‚•‹N÷ºSxv_EšÑŠî¹R,Ù, W…H¥Îà äÙ,‰eÆQòQÀ"gg°J™Èו@ýÃIÒk|¤MkÒ&#uwÛsà…ŠÝQ/ ž„“ËU.7š×¥@”̾»ÔÒo÷G')6î )MýMÃ&Ç`°Xn÷ó‰m<“A,>§µ|IuV¼â’+2¹© ½ÄùœUò¢(]¥ã•’&QP ¦©™o tÃ>‡¸¡…jOYÇLŽƒLŠ´SäµÍCÚA¿×ÖÌAQj¬]Wú5#Å6À½MCùz Oåà[É3¬ÕfÃü(|x\k÷•CíÇ  Â#Õïó±V¾:PF WŠr]—¦„¢÷…7Åéw/ï7›mÈE…mH¿Bô6äs…hmH¯BmH·BÔ6D©/-È—û“ rÝ‚\o‘«ä꾪•Ëär«rÑ‚\Ü×+®éoU>×v·,פì%xêáÃÁ>×ÚoÄÁ}´)$óªÔì$7ªµW‰ýݬ®´e€ýÿW¼"TŠÛO›Ÿ„ò…í) çe‚îä÷ôs}1Ùyùp[ƒš‘OÕ\}¸ðŠ•r¨R:v™¶œ7Y6×y"OÒ»‡-ž‹»ns­è.M›÷ÆÃýnñ¥zq·r*™…Hå‘¢žˆçÔ.ÛdiŽlL¬ ®yÉŽ²•$«A0ûÞž·¤^DäY!6r;òV èÐín_$‚”Ö³Šñ]››¿ßÞ¿C{ŒO0¯aü0h.Ûݵx¬‰^ž³Ú‡l¾lŸóïÃÖéÎd–Q}-ýPKvºZ®a¦é ®×aà{YGàrï™”u/ãÈ™¤išó)÷/{Ê·žðìîy’B9ë Oý$X É–ä™G™D)xaÙŠÃ2|RNaÄYœ½­9ª¢($¾Î¡ê¤ñ2{õað#ñ’·3ÔþÃìO‚4‹“·kzÆu´î«Æº•좥”íŠ×ÿà±;apk3‡™.8ÖÈ}PmC›€áÀȲa|g誩1°Ìé#¨ÆÌÕEŒuoè†9íÎq­³x0Ü qj–&ÂgªkX&Øl¬Úb 6Áõ;ÍuP ,[g¶0…²¸8ê=ט±3P‘…HàÜMÝSJnC³-6ešk[¦¡9àLÔéLË…ï &lªÃÔP¿O™ TÍGÐ µOÑVñDŒ(Ò,ÓaÿÜáÊ u º:SǬXY»EEò…´i±lÛph #Ûš‰À!ƒ‹pÁ7çƒ&c¨šz¯XÜ9 fªÎàûc-Zˆ(8¶ƒU„ÐtUÃd:.Èf$üÇ9¢p '›‘üóÝ;>¢¿•é2ˆ8d1–áQ ÷sÌÌA䇹ÈÑ¿P°~–Ñ‚/a>§fƒ:ÇÄù¼(Ì4&…}ƒl,°Ô1±Tö FøD¦ž½õÙêSi‹ý\ÇI†­«h.·…œÔŒ(È Í’ÜÏrìCåZI… Q0 áñѯã#€\lþ ç“ài5wW OWq¸¸ÙOã×RmåEçýù,^ðN‘²[4Ø-:ß-ºØ-ºÜ-î]µEŽ8Û* !•'ƒ:BBÍ÷¢Þ8z)ºj%û—¦i\Ü Ìõ›Ú¶½z™¿ZÄOx”N›Æ£ü¹Ü2‘±¸Ur/N«YÜ!9Yš“¿ÉæÍvîáÁ—f^”ý~þ5rÏ/Ux^•4SD•ýŸýâYŠ ¿¦T0¥SöÀlЂ öÀÎ+Øy v¾vQÁ.Z°‹=°Ë vÙ‚]î +ذî]U°«ì »ùS+ì`ÂÛRåqžŠÄ®öSé .)xʰ² :˜œ z ¹d)˜F#6"¦BØb¡ÑpszO]nަêxδ{ØP÷ûƒ‘\5‹/aS¦‚ ¤6õAo²1ɦbGÀê} 2ÖñaÃU¹ÛÁgÝϵI­$´w:µ ãׂˆ®žþž2©±ÉJé³Cغª§Æ& HéÂÖUT56YWÊà¶®Z«±ÉrS.aë*Á›¬Bex[WeÖØdq*ßaë*Ø›¬YE=„m«ŽkÅÓ.i²dÆò”¨Z›4m°¨íJöÚ‹·Oª:cý Ú¦Œƒ‚õ64*ßflx[”‚Q)I¯›²½êÖbÅ-N(d4ãí(6뺌reÊ(}ü0eÉ—8Xˆ Ñ9]COè÷—›Ú¼˜Ýº¥~•G¼84ÅÔ»a·XŸ¾ò3c<äßšÓ¤\Îy&§ï½0çÒkê{t Ç«F©¸™9©ná4Õ0­…ÜKh¶¥RýF¢MÂ&·Þº­EXÕ ÍÓ<̺MWEÕ¼«”e?œÝ¢†q¨nóº×pM Œý~›­Ó*Ëw³ô•­´bœ³(+ ey`TÖ~?ŸÌÎEdà’%ZLÎ4aÀÊu‘íIËßf%Ü`dû"¿Ï6¬„ê–Ad®`›},Òâ ”ùMõ9-Üvk´.‘môâU^}Ùs–_`Ãn²]Öüà C°³²Ê‹/ðž'®ë˜ø;%q½Á¦Ã¢L$vª`ÿCıM ID¼"_!+›š6Ð~˵ Ï$à{Î5ÔÀˆ¹I-ê-Á\E±ï’0‚+ÛÈiú 7w˜ú„di„BÊÒÍ­•G\ üÐ"¡pÅ1b"ã’@L]rF$ÚD+'~ƒÝMÍÐ'1ãÐ÷¨AdŽžÜ€M jÌ"( ï,rí7ÜW}‡Œ2}/"­xæÔpÀ2\cIê$Ð[À1$0:íF˜Â"ô]Q8ÎssÁ·€hÅ‹ÖÖÐð¬ó:%XE\Ã"0¿îT‹[ÔýbÕ%ôbƒzÄâ …„‰ÿq™ÇƒÂrŠ ÕJžýðþ8ùâå‹s\¥|Õ0¨r¾˜Ø=ÛUP°õ÷å=ƒl·ÞD‡þö” 9Înv|!B’àN×u›æçMíD ï=à&ð$Oð^óÁOèè.ÝŸÝþ$=‘‡}^T|×Zóý¡JwÕó}6µsMçÏ$ÊÅš ç2KÌO@o\qiÚÆfOF`?ja½ö¢ØÊî³2/úl"Mâ"ãZºÔšŽÃS ÏÆá™„Í!¼•Ii'pMŸ |Z§e?’–ݦդô~1®¡c´qlŠ©jµ·àoAßy·×@o3m›ŠÜO€3g2–ßíNGsDe<C:¥£×^5I=¬Yæa‡Xï‡:;”¢ ºEV¾kŸîy ’¿ãaGKŒzq½$ÙÇ6®.Ö/jÖÚvÍO"AôØ.…‹~å:JºhmÇlÄRh ‹q)‚}¿RÜybï‡O¬£T·¬Öcv}‹Œ0'îêïÎÊži‹ Î±Õ¥ÜpHâo„S"Çv VêèMS÷ˆß9AÌ'ÿ|Œ¸¿”ŽjvöéV®'ñl0Nha‰›o†—£(ÃFka¼9öZ …Ú°áP<gײÌƸ·]Ö¤mâIO(ZXï ]s°'mH³¾pÒÛT“c<Š”ê¦²ézÛV’DQ AÃb¡¬«bÓðêxU±a™ÇEr_YKù"èÉé $¹"_Ô×jö|RÓämO.Ž‹K¦ÒÃø]ºoä]ãd€Ì/ä}ãFAêÃ@ãGv­aößô#P¯ÍÁ_sóˆ)Ý…†Û±›õ±Äç4æ§õ~›]R³ëPí6¢F3탉KÜDnÅjïY®¡ä¡V„oÀªÓ>:¹¯ª[ÄÝLU4Xð%¼¸­ßÎ.AãþAãĹ´’0ŠÇÏ5Õ#aè‡ÃS‡ óÏÚéÈ™ Ù}Ž;>ò+O¬wvéÂ1–ƒ3—©ÑôÏDBC ¨ŸÐóÁ19 ¾¸%™Ž1<’U« æ%ê|÷>ˆÏÙ=~q¸O‹,ý¸}Öˆ€ÕéýïÒu‘ר!\û…âù¤ý¿›‘E^DUZÊv¢¨Kf¾»É>½:\èÐ9ËýúÇІ/‹t]åEÙØÌ€Ë¼7P߸ÍMpÂÚ¼Û¼ZÈtÒ-b <öYÜ É}žmÚÉ@U;áuO°Šº=ªnŸRFÕƒSêíKÝÜæë:-ðž”U»{ˆìo$j‡¬dÕ÷ÅÒ¡xnt³e?¢,}žçÆc±‡O?" Ñ7F4ïãùÉF®§"u]ÎðÓØ_ZÜR·ú–AÁÊŸ½Q¾N·LuU3¨” J]/öõQõI‰×Sè0su¾ULä4´é€}<×5q^êkòÁb¨('™º´ê¢ØÓ¸gKãÇ`±M?uv¾%«Ž’–EŠsËÒ¥•æN„{pÁþ½L·ö M{8öÇ£ á×ì¯)£ mWé?lµwø›ýØŒ|hÎv•¢íÙšîªð°ë<Å'5ÙU¬À½ ‡þmÛã8"ᨉŸL0ºvï/uÚTž¾öã¶Ûd7pþºóy³ùD8¼¾åGâYø!yA"?ÙþPKvºZ<ÌùO± Í,IAR-STR912/include/91x_dma.hUT LjKLjKux êëµZ]s›J}vªò¦¼/Nʑˎ֮}ÀÙTéà 8¹yRa1²¨ ÐÛwkÿûö â£GF7^ò ΜÓÝÓÝ3btö¹È‰ñ‰³û¶u{çMQ.‰ãN‚EÓ.²$Ž‚EJ°¡?|&£ ¤dê­))¯+’Ñõ&ô2Ú[1ˆ¾ÍVqBª×™C¢o6a°ð² ŽˆK½5a&iF¬4ÝRŸ•‹3upÆM»"ßh’²jOáhºH‚ ')Ù7Iü+ð)ñH Òñ+ xI²%i¼M”,™ýAäs;¢'ƈ^A–’Í6ÙÄ)íè/&{¤Yœ¼^±¿ÁaMc­9¬Ïúí`¨â™,Pÿ‹Ý;“ÜÛ¦cN]âÌFîwÝ6É÷;˸#–CF3›Ü>XC}j˜d6ÿ º5qˆî˜Ù7khMo‰ñำ‰i;Œî»åÞA&òÖ†OtךM‰mÞê6¿ ‚–͆ ×™ÙCÓæRðlBÜqôo&q­‰Ù㹂@à<ŒÝS–Ö–aÏ̱i¸öljqîôñ˜Lg.¹1É9’±¥ßŒMN©O¡eú”qYÓüˆ‚™SÇü÷xnéc2Ô'ú­éä€Ú=C-ŒÀçnÛ–Ã\Ù³ ³•‰Ëb7ç‚VÆPŸÏr—ȃc’‰>4ÉÍ]´Øö0VnÛ.^ŒV·¦æ²M’ÅïMÁ(ö˜YäûgôÙÇ?œ±ê\%Y %IÑ(# ]l!/±ª[„[ž¡_º\ŒóÁ2òé’ÌçÿT_æÃ‰>¿ƒ›~.R»ÉÕ-¦µßM ƒzÎwÌtÖÞ¦·:fB\Ê|Ù@£v•½n~S0ãa®¦Y²]d?üçã²=×óÏXyQDù“,tß¿fý Lp¡«AleÑÝ<ßOhš’“Ç׌~ñÂà)¢þ§¢ú^汩y„ J¼(]Rì÷rý–4Z‰DzgÞÇßSqv#Ø€J¹2'Ä” «AwCÌQ~í6‚¼é0#ÊbÔ[HJœÌ˶é)ñ–p‹c)lbèqâ=óʆ¯¢–ÅçÓÁ&²UÑ®âZµl¢°ó6[µn⸋26».º©—\5C´ ½'b°G<(y(ùMŽÇæÒ5ŒN11Q˜& [ä}™m.è 9Vz½Þ×㦜hÞJ“G°!P‡ªTá=Ç¡ç´Cûô‡^ ÐKz‰@¿âЯyJˆ¯ˆíH¾Y;íýßí[ÐzšŽX+µÞ®òæþQÛU`0¶ ¶z’¨6€.,Ö½#"ú?²Vìp`bà ,–¹jsÃ-,¸*7±¶´ yd‘jBÕŠ[ÊÖ´æâ[ÊV³&·T¬c—Îq;Å VâVе« Ä«Vh(E¶ó|wêü=©îȾ  YîØF—,/`5Ûkƒ!YÞnúØœånfy{¸ƒí’\Ñe¨Æ¤(†XwØÄ€X†··œMd‘à*D$¿U4ˆHz«hÛÙ­¢Ql'·ŠÆ±Û*Ævj«æ.³›#ÊïÏ™ÂÞÉ•ƒÄ‹Ê¡ö=š\Mè:N^¿dñ—5ÿë´ùuýŠUF{kTÊ©ˆÚàmµ]q¬¨µU©÷¥ÎoøxŽ(J}l½s`Â>ú’@fÈ‘Ôöò!ã>•¦°½nÚ{ƒâöÛÇmS뱂õEj`·Œ¨«¿%¯ÕåÏÑø}Ò-Aººï$‹Æìœ£Î¿Çô´ç¦áí!Ç8W‡^æUº^¥=ì–Êôí%;cRÙy¡GNÈPwuò/ü,ù„Ô’Ðï£újWý~®/ç üZWþà— ¨—¨B‘c‚xù–ç*Òïê{a¹_ៈ‹® ùø½Òªs‘Ó_vÎ3MÌ„”^»àAjü_»òÃè?^0ùyÁþ‚©6È=ÎÔkÆ—| …#ìÀçkpòä"hõ¨9ÛS¯ õ WöÔ©PÁKH;lâä…*Tð2ÒòeO±k—ÒùaŽÈËIHˆrªIäZQHíò¼ùÍkFÑ¢âTÉp(;DŠ€À»AÎxç…ËïqâW=èïe,Fìc­0–¬ƒ’¥å”ûûJ—T£Þ%%-­ížh”ÔH4úåÞAÊ\²VÿUO´ÖÞ"‰û¿Ê¸ÜFü+þß>#öþŠ_„€ɰϟ®+÷ùÝÚj~jG>׎ŸN›§zâ9»ãðßÔXó[%wmÜžaÆÚ? Ͻ½ó¦dJŸùu«ùÑ™GËà©“õ[Ö Ë§¤£Ê ûG¡÷”¿Áçƒni&Æå7O¶ƒâí§ù/„ ±Üú€âs{ sSmúg=–ìý·åJñF˜Ô§ì5Zw‹`AÖC]s`LƒŽ;#o:SvFŠ˜èàØ/*BKÞžçzȤÎV!27«‰Ù5š·0ÂD¨!Ò%a;U€@CkÍÞôf»„˜[½7ó8^üd¿ yo^Ã[¬è{“Þ'q¦°£Â.Äì‡åŒÍ± «¨ãNqíÖ |h:ïÈ«4ü`ÉVõÊ/ñHñSÀöuÈ/ÍéýèqdMñóÂÿPKvºZ<=)K4“:IAR-STR912/include/91x_can.hUT LjKLjKux êëµX[oÛ6~^€ü‡ƒí%-ÒÄöÒ5kúBKtLD—”¤sÁ0ŠM'êdÉ“ä4Űÿ¾CJrlIv²›ž(ò;·‡‡G:~ÛòÀõ,ÿò–³ó¡„^§ó醓4Q‘šäi‡“ ÚD÷÷Þ ŒxÁ\Áêù?wŸÆ“ >zв̒֟àZ6Å" 'A&1HÌ5Ør…:Ó,–eK5ÕàÎûãîé±ñì#\©4ÓÝ£ŽPÙ$ FÉJ»|3˜iÏ&IœaœAE?(˜-ã‰g°H“<É¿-BÑ?\ÔúZ‹xp·Ì Kfù× U…wi~;B‰ÿøÑ> Ã,OÒoõcïõtì6bïUk'M^ºåÚ6ÎþåÂ%§‚z„?ׄS¸2kLÀÀçp>b6ñ, ¾çÜa®"QÆ¿b6óÎÁ é»” ­îšÉ!æ¤Y`Š»D2ßNÏ 7³hq-n,)>·)7¦pÍéƒ W$sé‘IC4ˆ ÄÈ‘‡:Á™Å}êPKrßc–1$Žž/¡OaHFú5*‰w 6ãˆ>Ôº˜W¼ QtÓôó#gÄ›¸äœŠ"´v©Qè‹V`9EØœ €û®öU+D%Rsç@Œ´‡Ä³‹`$(¸Ä¦Ð¿}fKKèÅ‚¬Â·g¾´Z¨³0V'xðÔ£ŠsHÕd‰yù¨ Œ'ÑÒdè»×ÌZצª¨¦ƒŽñÈÌçx–«ß—»±8ê‰Û BNQ]«67È~Û®ÊåãkÎí¸Õ0—ˆ‹¬q Fx¿¾ÍSˆ0}“rßÙÅ­9œyòÒ³·s«aò†Ò£×6‘°å°ººDHBj)X?¬%¬_ƒu7¸5œö¶²êö®¹Éj±A 6>°“ú>’´(ìú6ßn’h]âüŠ8;Mjئc+“uئcëÕ=sU–÷êÅRïb\íÍ:,‚#äNß\SOŸsbÍ·:l´™³§n+LÞl”qÜïÓ6oÀNZa.vž°^»Q²ë°nŒúãtjvÁìÃuð›z·\À<ÁV¬å¶¿&tt9ö½1½‘‡ÍY|«®ìU_4/wuÕmo‰°ëaSÝàœ=¿ž•Í’MVà ~9ýUwE€_±óì¾jª bvÑݵ„ ¤=föÊwŒ_×úŒ5Q8ó¬hòÖytˆ¥žïºŸ>u»oàtß´À ýæ|úÔû¹ÂmönÏß¼ÿ°uƒÂÉÇ$œBÕ(ÂA­e„·Õ„0¬¿9[“°U!£'6 ¬^ü[ú„ÊËæõ@ïcÙKÖ!Žï "ÏÔ}÷ªa¯f_¾ƒ»t¡…iš&iÙà”:Fñ2SS7»÷ï¾M˜ÉÝ—-hùÔ@B“x[¤øn©jì$_«á0¼8„»ËX†!FÊOá,q‚l“'?Q8EnH•Fª=¨;ÂU¤‚L•úb¬ñ´‰<,Ì[XXAŒöÚíL~õµI›€ÒÂW麜ÆS&Ÿ¶ÆÕ²p²îï+ô™š£-b+žiŒ‰n ],mXD̯Ý&Jgt…2ã:ÊQÁ£Z¡'Æ,¯L5–Ë]ÄDlÝÇ:ŽoÁUŸˆ,+×5ÓÕajƒÉ4ˆ3,he7¨¦[‘L³.ù%îÉ.•˜¬j’_é®a°jÙ`™[û؇ꋹùüßœïjl“Ë?PKvºZ<æþw± ¼ IAR-STR912/include/91x_emi.hUT LjKLjKux êëµVYoÛF~¶ÿ‡Aú’®®¸©j?QäJ\€‡J®,èI ÉUDT"råEÿ{g–ŠJ6Ü$]À€5Ç7ß gg¶Õ8sà£ù L4 øÐÐm·¿@(Ü4.r¹”±*ò,K8çzuÙ€Aº”àE+ »s tžgr•6dalÔ"/àðÜ‚kZ`¬×Ë4ŽTšg d´"c+R1‹R/ËLȸý[«Ókif·p/‹’<:Ͷve\¤k ²C‹´„91‹óLEiVB´\‚ZH˜o²˜ŒKX¹ÊÕËZ¢)òC%á=ÌåPæsõ–éC/M´þɇâÛi©òâå–þǼ»]Êû÷£¼»ßt7§5élu¯Õë`,l£€…Ìú11››6ð~Ã1· Ïdà{Î î†`ôñï¹Å½!˜ãPø. B‚›pac?j÷ÐÝ5÷=ØÐ´ò€Ü­±)B4?°X C¡ÎáChÜ3ÜeMÝ‚±#®©¹¹øÌa¦|›!„¶á8àùú læXàp£ï0 ixS°x€ÖׄŽêEš^ÈþcæÜpÀ2\cÈÂ*Œ6"+äB¦S¥ðR¾K\ AÕÎ@8Æ¢íjhxV«J Æ!×°ô§ûj‘)«bUÜöõ"Xƒ{Ì„†EâZæ!)Rk’Ç•üùݺº¼ºlÑ%§™•㥓2SPÈxƒ}ù(!ÍâåFwè¯ï9„ùK:Ï9‡ÙŒ ^Ι¤ r$ÔÑ9EHðš¿+À;¢Wxð­¢usña‰=¯óBáЪÆÊFÒ0”h©ŠM¬Pð7þÁæs—&Ò¬e͸eNï(|M> E`½¢˜¯yøÌ{Íç¼Æ•«Iš¨(üŠTÉÎY©gn `}•nžÈ@FÉLQVÎeáÈì«Z¼eêµ´ƒûG[ð,U«…vWÿ¸Jeêû?HÕÈuT@mÉÂR³ÕûC+VH{;J@wʶ%‰à n¶èâd³´ŸÛÛsÑjÜì€KxÀë¡ê ½7An4HïHE¾ª Y¼ Õÿ´™×czy±Š–Týzà#î•]áðë‡èh²ÓlyT´Wr…ž¨ÏêØºùfýu®Ư)vÀ v´œOò"¹8è@çK ¨é×/‰ª%a.#µÁGB=„¾^žÞˆ‹zá©wåâ$ÙB= àèO”t9V>ô~xRÕQ÷¯¬ï… õ1O¹%醤ߟîäZº¯Ív4v’çëúxh졞ªGp•Hƒ¾Ã ?ŽÌ’t˜ú¬Z9ð­3NÏyh3Ï¢í>àÛîÑPKvºZŽŸGiówløœ!e–s y^°P€‡¿_Ž®/¥c7°dY.,FCiÀò ‹ö’¤a÷¶QáX&Ü’ü8¾e°)’@€sØg)OùÓž!ýJA¨|LòtÃ?ûƒ8ú”ùÙÓ‚ò#–ŸF9O³§ñ㾺qÿщûªÖ½?ÎɨÒÊ×ÿà±7%0wˆK,\{ì­4‡ÀjJõ)Pƶ“54K'`[³{Ð¨é‚æ¡½¤µ& /\Ï6‰ã ºõ¦XŽRA-475Ú8d¢9RŠ RG˜ Ýs¶cG.…:<\mIÀ£&¹%ˆ "»˜yoEmSݱɌèžc[TwÁj³X¶w¦dfÀŒjw3")5ë ê ú­à¢Vù‚‹¢›–Kþ^`äT›¡™Ú„¸e¸Ú\ ÐA ÏʰêŠÆŽm _!’x"wöÜ&­É¡f—eH°p ˜šAàîþ-a!”e²Jßù´µˆ9“D¥ÌB§„Z:ÙÍäϯèËó³KqD7Q€§xäØ#K8d,(°*DI²>{É#6IÈ6°^‹.cêë)ÊÂr¶L®MˆGüEô/X»äƒW²Ãùû‹í«j%òeŸfVÙR~t%Á"¢ÌyVüüìëù@1ú€­hmïY†m3y0ÓݶžlS¥ˆ¼¯ªkÑÓÖó »§³¬-§YÀÂùÊt96ã#¦žM©AtY=Ýíc¶Ãe±Y¶dDz–áœeQ/v$Ö·~’°¸c[Ä9[I–G’UG’Æ~ñ§ÅL)ª¤K%v©Ä®”ØÕô8ÆJÕV̽h×Ù,‡íÄÝ¥§EÂå| šDÜÃrÁsv+б.–;ø †½²à/¾…ÅðÇ/Bð $ ÖØå"¿íW1^œ9÷þß+Yž—ê\öëaMÿS,F†á—áp8ziDy •È+ág ;õ³PÜÊÍ‘5®bu«û[…ì³b9뱟ç8Ä%Lí)â>²,Õ™Ø>ÃØ}¹‚V{W nü#“›uʽh¥É«ä”•h'Ìݦ¼‰XÅ)z*J§H‹¼Âžæ”‡„L8ÑšK“áscœÙpŸ: gN”·ðSÿfЬ# Þõ¢¨ÎzÑ÷}¤„-û°+%lÕ‡½SÂÄXÒ½Þ©9 íM9•°æ<<·ƒÔ[ëæ|¥¤*uKe”¥nqð¹«û8×ëx®û:Íð*ÝhØ×Ù^mwu¤ÓçµÝûc9¬t×Ã^„ã™69c­UGYkÕqJíÉH¥öd¬R{2ÚrÝSñV^µ#îk‰[ÙŽÄlwý_}?<»´ß[?Âø˜Fa}Õ ºWÞ›ZîÊIéõím0‰¯mq ü>*}ÆU(~,'#°Øgù£ƒãYŒ·‚]ð}Ás•IÞ7¡¶ÓMô0¨î~Šß(/YÊe¼™Å8#4/}œ¡A«‘Ô 3O© Ëd©‚¬:URÝ»=6ásuÛã[XM“Ý´TÂa=( zƒSÖ\«/ÝăAÌü¬©Ÿj‰I“R…¢Lä Åò”b¥P”©ò÷¼ÀTõKX:f'ÌK"“³½ásßËü$ß”…ÓÌüBÑÉouE`eÅ©Vûqtœ*”Òáî”Y…Ö6ØqìwqA½½¢}åAÀúêu˜ê×Ã;b¡Þœ%!zu‡}á4LŒ†åø­Þ”ªÂ»lÁ‚{ØŸ¨ :›è–ÇÏ÷ü'G,Cü0¦3R}sŸŸýPKvºZ<™Á”˜ªË:L‡ÛJ`ºxúDñX+*4=®ÍÕÀG!p=M÷˜*ì³!pÁWuJ›~ ŠÏf!ü¹\Ñä6UÏÕ-] <×1Uü©bYà¸<è0Õ- ,Sy°t†Tœ ™J_¡.þ‰ˆØ¥ºŽ¯ÿ6GÏMÅM±•‰Î m3$[ ZÜmÏôÉÃsm8$8œñ ðç´6†Š£¸K0÷u°M‡‡háÎØ¡(¦£kè§cð¶9h…“Ùä?£G——#Z¤ë8 ÌpÑE¯QZB-+œ—¯Äé2©Ø ýñœ‡˜ßÆët­a± BƒY^à¤ùvÅ•ô™v“4¬p™Ÿ¥à íœoHÑ&Ü^¿¼Ùo-–keúõOÛ,/±”ñbóê¡(U$3K(ʼZ–Ö¥Ú!E ÞyyñW¯š]^TÒ;b,ìlÝw;‰o¢6Ø#®†ý‡ôíx®*1fÑ@‘çVå¶*AÍ6[ªŸÀ©‰ÓgÀÒû¾Fƒ<ùOþžšdË?~VåKîwë/ëÁ*O= ÌF¾:鿺çàÚò—óôÕsÅ=õܵiîCô‘Ú…þÎì…éÌæAÃlyfÊœ·,Ù'TN«8Æ¢pÀ3Ue& í;ÊcÃ8ñ'ŸÁ“yrwËvÕÅ,Çý;L¢¼“_Îk{`.˽Ä`>fURD ‹L²î9}ƒNh :ìM¢)àÉ_È“E¼(³6ó¯Ï[U9MbraÈÖÂìÉ壱/}._˜ÃÈcmè oÝÍÑ2ò—ñä.O>Á“…<£J’Úéû&¿µ[{¸ÖAA~ÿæsë]€• w“{*ƒM•‹ÒjƒEí/ÒKr~ xÁÕî›;k¿¨–®x Oͪ´ŒrwåìZÜïl<=e˜–ÿ¾h÷ ¶íâζºV³ˆ?Ù&÷ôöwüéf<ב˜°j ŒLž.ÎUѱ©‚û¼µ8o<¾©yî< ˜êÚ3:`ÔríT8Å“Þíqž|&O’kžzʾïh1µÓ/|ý€OêÄo0röÍ<¹±ÏÁ£îÜ¢ÃØ¹ù Ê×KònšüòÜ¢D0Gw%õ(¯ŽßÏbžüÅZú#V‘}MSs2Ý%oËýnË}êäÿ'êÞçŠÃúö,#Æíx_EW´u–©»í©[¾„i%…¨ø±·Êø`~ŒáÕot°é7¢‡uYîb8JnP{}W´W4[Z¡Ø…i“z«jÌÊLïèØ %Îâr!Ìí¤ÖÔ ÚT!Ml™Üqü¨eò–u`?·LÞ·¬KÝa/"ðü«™>û(ÒWK5q½á Ùø4ü#{Üëbù`Í -.ÚQë&–òŠ¿jãæ«7¨3̧û±ä¶¸Á@"Ì­a7MûóðM Ü~rù=Ã}r#É> Þ4ƒzºì¦ÝÐL9ÓM¹]÷GÜÐz2’ðù°H–2i×Ýé¼äÐHq[ÈÉ|0гp$Ü€ÁØ×îÈ{Ë~(þGÝi 'ã^»u°ñ TáòØæñ+½¯~ ó˜ÖË¿¹&eÝ+Ç&\æÙW½©ª‰³Ú¸Ý ï¯%¶6~5’åã5‹Wí½î{vöã—;x‹_>]íßùX3kðÙk­î; -SzB|\+x.»¾'ª›Õ•7IÖš5_{´ö½†š¥ëøY„¬nû’4¾n›DeÛü&U$v¹¹~£xmÛyÂì w¾¨|Dtu4™Þ ÈbvËA ŸwÅf‘ žzòŠF\ØQÈ=nË( „CÍái)öJ%%Ñü ÁÁKÆ"& ƒ,Ù|^š1xMW³uT>Ït{ŽìnÀsû™j÷‡—}[ÚnT©MÄðl`”^”鯒ìÙY‹"¯’4×h¬×xgêÑäKs£«$¯4ÔùÓ’,ƒj¥ ]çÙ(̰Re’é÷°,Ó-–p†è7>&¿—êª(ÆÆFÙ£‘‘ýå@öèéîüeK†»»×ÚõæÇä“…kN %ˆh"o §pë1Ç&`q˜ÆÌ%¡C! ý c¢æ²p N,dP. Ý-“à“´7,Äø€H…Àé”pëÅŒŒ›x7v¤@DÜ¥ÜæÂ»d‚ÜP, göbF$±/OÍûf¨OÉ£9„G|ÂHÂú.øŒ\ùÔR’p.ãˆ>Å\eHñʉBAÄ(\)Ìv@S‹!püF7gÂH˜ð(°C‰á–o"Æ®í›HB·ßH‚XPˆKájö·]&¢áh7ËÐfÂBê¢ N±IøC_ˆE™vÚ";ùõIÿ¨wÔ;Nïò¥ºƒùüi7Ì=ô¢+ÍUË{Ô;­Ÿù}ó×:õÅù·çÀ:×é}ŽãÜןFÝ@K©z^t«ä`{Õ—ß‹|%3€nå~%3[¹_ÉŒÀvîm‘áÅÜnÀ¶-ü%rWǶ­ü%rWÈö…ô=´Ýƒm[{¹o¶-¾Üwa»SÿTy½†ß0!>ÎÆwœ‚ä14ß5¾GøYYWŒÙV²‰1†i|0É’{Q%U­qÚecuq¸LØ aYhhmóó#Q/Ìw)É ‰êâ œã|7uÄŽC…°Öý´,‹òYÇ*_¦wÐ?9˜hF¬ß1{ÿòq§¡kÖÉ„ùt7¶PKvºZ<2¡èBŒ© IAR-STR912/include/91x_it.hUT LjKLjKux êëµ—KoÛ8ÇïòíaÛ¢ëWºm7{¢%Ú" ‡CRqs2‰†8’!ÑFûí;”ܬ)Õm²ƒlÍoþó E:ýwO¼qÞ‚Íî8›zFƒÁG2ÈÓªTk•êª,ò´†§B//ÞÁ$_+“v ¿.rÝ[€lõª¬àЮ!p\ ›Í:O—H•<ØM´BɪÖÀêz«2þê?÷›Â®áVUµ‰öM€ªÓ*ß4"êr•×°4…¥e¡“¼¨A¯¬T’a4”Ëæk^hUUÛ6:OÚ*)²5FüQ•[ªFò…ÍäöòZ—Õ·kóy0ìc»Øëç£^¯:FÆ÷éÈ7úáûp>£áÞ÷³ùýÝHÂŒSAC "šÈ9áæs<`&‡iÌ\:¢Ð¿ÂDbLtË\NÁ‰…ŒÊÌ™ôŒ¦5bx@$‹BàtJxó2nÂÝØ‘!ˆ¸Ky“ }ȹ¥ Y@{@D³+Q@ľ|oö:sxD}êH…Ì <âûFÆ<ê»à32öi#IÂ;pGú=æj?Et9Q(èMŒ3âƒK2¥m&Û AS‹pü¶m΄ia£ *H oô& bÚã IèöÛ– âRßL #ZÓaµ# %a!u±!NqHø‡ÏB,ÊŒ³)òx’½ßýˋˋ¾yi—ø6.aS©*4T*Ýâ¾Ü™·2]o›úç/Í×ù²ÈÔæØar[æuÖ¦8xÔdfF=Sõ/‰Û­ÍÜêÁ+“gß÷V¯ö™è×MYi<Àô·Í3ó™L‡Šx¨Õ:)ôï«îƒ2Ûâ!¹©ò9wwI•'÷ëߪö´Æ‡ï—èz¶/n¹-RsÊ?c”§5>[²Ù}»2Ï .Ú —-¼öÎxcoÿÙbÎþuµv Ì*µT:]PǹǪ5Ž »±§˜»Óã7{f±>ÄüÔZø—cæ VÏàÁI’3`ØŒº€++‹±7³‰€o„Û'IC*­5¸±+8$´ÓµXîqÒ&ár`Ã.`dØÈ±/7öåbfW@À®àߺö9pÙ1¨9ëZî/’Œò `ØŒº€«.àƒÀ]=m‹5›ÜŒŸxש"Ë—€è㥠?nôsû/ÿUÐÐ5¿]&̧û_ ßPK yºZ<IAR-STR912/include/.svn/UT •LjKʈKux êëPKvºZ<ËÙà;© IAR-STR912/include/.svn/entriesUT LjKLjKux êë­—ËŽã6E÷B~Åv=ùè]–ÙNz5› H{4i» [žIþ>ì‰Ý@vJ"®ªî½UF˜¦6_&!š¾,Ëùút8Ôóù¶øuÙ_¿ö×·Û¥z»¼øþäËa¼»¼½-—Ëåvúýp~µe\:^¿üüi÷ëó§Œt˜OõõÖü¿}x‡òdGüŒô¤ð„a5*„Ï“N_íè×—‹ŸNóéeúç‰=„óøÈûS#Ø¥`sõ¦R¦Ÿ¦ŒüvYêþËÔçWŸþþÕqhGñâæ'‘=ü8Ÿ'KÜŒ¤™»å=kMš“¤š¸æNÿ ù~80ÞÉ–ù¸–L5˜jÓ$…»äæÚ%€äÔ’4} ²Èšïd×z[KÖ8«EóÅ9ª›;b÷bjò-ÈBÈáNöržßÖ¢IbdnJ¬ƒy) k/à)¤X6i'¥G;«u6jÆÚ{H&u v^Q 26ÛL!Ç;X;ÚZ2Ä8:׳±hg‘¢Ø ;•>Ô—SÝ‚ QÂChÕN«Íi)õR$•Q/nèÔ\b"Ë„a4–;Ù÷yµlôŒ±z†Ž9¶š[…G`=m£³Dv^¯çµdB©‘‡º¬—B¬e¸«msŠâܯsYK–š((Yu ”¸Wâ ™!Òx±I Q–‡7ý8¯&Ë¡QµE EÄJ’= —aMjÆõõdÛ–r¤Îž*‡#vè‚cbÁ`›è,ÅôðæÍ.ËêùÔB'è4"×[ÖhÚú0)'o•u´¬pG›Wƒ¥R¹‰nYRvÎ8²Wk –Ø l3>t6Óê!ŠŽŒT/Sms1×<ºL„åÙ£dG[­Œ©T«$ Ê±Œ\û±epwBݤf‚"ذ/ÅΫ“{ãŽJ}„F¬UÇÖ1J¢d¨]!n’cßz,ižý_ˆ {ï­c5FDLQÌCqâ¶ |ìBßæÕbKYJ‚ QÅVk÷àݲ˜Ít“¸eM±}o/kɪbg ÞG&Ž>¨Ô0ÀˆSؤfŒdÖV×LIc ŒÜ¼‹§ÂThüÕÄÆ²Aá=:þPK vºZ<"IAR-STR912/include/.svn/prop-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/include/.svn/text-base/UT LjKʈKux êëPKvºZ<ʧ$ݤ/4IAR-STR912/include/.svn/text-base/91x_rtc.h.svn-baseUT LjKLjKux êëµWÛnã6}n€üÃ`(²A_ºÝ¦É#Q6]\‰Î"O†V¦cbeÉè\Zôß;¤.¾Ùì–ɃHž9gf4Ñóά`£û †úÝî'ˆ¸'“"©HT‘g2)áééÉ982àÇ í¸†?zÏ“B%—s +5Ï Ø×àY6å2•I¬džñBƒíX ä,J¬,WbªÁÝß:½«ŽñìîDQj‹Þe׈2)äÒ´ì|.K˜iÏ–Eþ(§¢5r Rù¥ˆ‹(ó™zŠ ³U–hëR³È¡rõ²D–Ÿa*f2“ÁÚ…¡,U^¼\ëg ¼ß×ÿ¾x¿Ùû¸Ÿ”^½w,aÿƒÇ|HaÒˆú¢ÀáŸIHáóYC`8Aƒ1³‰oQ|÷ó" m‚;f3Ö8âGÃ>3>ÔœV`6˜æá,ð!¤šUd¡6·ÇAhÓÐHáž<€ˆÜQàÌ£—@"S†H]~¡«›Ya@]jñ0ð™A4$® ~Àá–º6¸ŒÜºÔPÿl"úµª'͈[VàGôÏ1FΈ 6ñÈ€VAhµµ/šÀr«°Céœ0ðL⣹ás cÒÚßîT!Á8¢à›ÂíýF¶Ð¢âØMV•BŸæS )& ÿqÍG§t:“Û™¼üáõÑ9=9=éèSЧF€Êñ0‰G‘)(D²Âº| ³$]™ ýå5Cs¾—³ "L&ºÓ౞`ѼŸV"[‹FiÝ^%ð õŠÞi¡E¼¼œ¿«•F…|ÔLw íàw*54¥*V‰:=ùûô`u fpU¼ÜÔÓÍó"ÏÔ¼™Lãó$Ä×júNM8½ÑN“˜çøzZR™­”h§¥HòlZO{Ÿp;MåzÑ裇Ï?WØpîub†—¸$ônêtÓçe^(üH ¤Tq¦ÞþŠ«Rmjè–ù$¼‡îÆ ~°z•,KQxùT˜j¨&èvgB§øIì>;fPç(ÐÅó"°×Ýdåéarܘ åÃ\s<pó'X‹;·óH2ŸÊÄJóäë.;nNúÿª/žöÇ>¢÷©†tŸûGý« ‚îAtû ¤û|ua³È4_DÔIÑ;Œïú̸†Ã¦CÝ=Iãbk¹}D•·µËšŽK»ªz­ÕmHwi ¨‘nx‚õ:çµ¼)o¬•¹ÃTMå1.dü%}SÓAl˜EŒ÷»ïê‡5cÓñÚkÔÛIw}ünJÐŒ¹œšlÛ‚áÅíLÏ?Ül¬GBé[çYÓÍtÁå¢Bè¾z¶‹0/û¬mQ`æ[ A-„MÍÉ‹E¬. Õ<ßWÔª;pãÀù¾ ƒÆ…|åÍùªÊ³òl&ÎV¿öaÝ•.`=džrÈl1=sê§‘Ò5à‹'ó°7º¯F[1^ÐMƒzµIï6Vj”?}ƒ[M3d™ÚÈÀV‹ÜÂ3¾«.à¿”œ4~ГUÙ¼žõJK¢;Àvü)~Ë5pò^dS9ƒÎùÆý¦¹_íoùUG}[ß$æÒöΦÿþPKvºZ<þŽj¨y} 4IAR-STR912/include/.svn/text-base/91x_lib.h.svn-baseUT LjKLjKux êëµ–ËnÛ8†÷òí¦ :vbÌ5³¢%Ú" Q’JU KtLÀ–]2íÛÏ¡ìº1¥.Úd/òÿþs-rz52àƒ÷¼xõ Ø2P0»¾þ¤ŠLV—z§³¶. “50†^^\ÁÂì4ðt¯á4nᯛÏ;³žl­‚tí¶¬á帅ÈóTÕÎdikÊ”N÷Vì§­FϺi5M§s+¾þmzóç´ÏìîtÝXâfrݺÉjSõ&'÷¤A°-ÁÙ®Ë5´[ •FÙV×é®­Ns]ÃÆæn »l­FG× 0ý–é•oá…˜‡@X$(dâ;æ3¾/‘*ލpÏT`=½¸_`ñˆ(stID?‹™°¸ŸxJ¢báSчµT ’ÜQP,¢ ²ß|h “P}²{šy"¦!õ”ˆ9ó$È€„!ðXÁœB@CBFæ!í- Ÿ TÂX‡'ëˆK^Ì%ý'ÁÊ Á'YÒC6Ú …6kà…‡²“¶„…ˆ£¾qè ïý lÚ©‡„ûÓCIH ñ)Ì^t ‰ƒ‡Û¬C ¹"ŒS ›„?œã˜”mgŸäy'ß~GO//./Þ›M‘ë <>Ú¯AÈæøŠßãŒ)ôù¤Õÿ¨ïìô>­&ÛwîlV›~º·îI0'«ùåÀ¹4Ý®Ój}ðÐEn60½úª†Sv½Ø×{ã¨sH?"C2ß§.‰:‡\ŒÅÜ c.1ï˜7$ŸMæ’¨sÈ{– ÉMç’¨sHü7 ÉÖì]u¹\±xˆ>U¦tY«t`¡FJ­ÛA©¨sHé”ÚdƒRQç jˆviݺ¬Uºaåj$lS ÂÊ•Cz„É,-\uIü‘&¥ù I¨s÷ƒ¿ÙùÓ`?øK‡d³‘˜f6ˆ‰º߃/åÑHœ}ö1åtäÕéBÛWpÊÌ2˜ý\•uk/ _*ÝÀ/¯¶Æ—ŽøjÚ´hÞõè•y‡÷“ª6ÏöRôœÖ&]ï~*[7Ç}Š·»·¨zuLnÓ™½½¢•nޝ¶<î>x.M¹^wOÏÿ¶óg›õÛqt¤¦#ÇÚÜ”)÷í9½`!=žˆÿPKvºZ<2¡èBŒ© 3IAR-STR912/include/.svn/text-base/91x_it.h.svn-baseUT LjKLjKux êëµ—KoÛ8ÇïòíaÛ¢ëWºm7{¢%Ú" ‡CRqs2‰†8’!ÑFûí;”ܬ)Õm²ƒlÍoþó E:ýwO¼qÞ‚Íî8›zFƒÁG2ÈÓªTk•êª,ò´†§B//ÞÁ$_+“v ¿.rÝ[€lõª¬àЮ!p\ ›Í:O—H•<ØM´BɪÖÀêz«2þê?÷›Â®áVUµ‰öM€ªÓ*ß4"êr•×°4…¥e¡“¼¨A¯¬T’a4”Ëæk^hUUÛ6:OÚ*)²5FüQ•[ªFò…ÍäöòZ—Õ·kóy0ìc»Øëç£^¯:FÆ÷éÈ7úáûp>£áÞ÷³ùýÝHÂŒSAC "šÈ9áæs<`&‡iÌ\:¢Ð¿ÂDbLtË\NÁ‰…ŒÊÌ™ôŒ¦5bx@$‹BàtJxó2nÂÝØ‘!ˆ¸Ky“ }ȹ¥ Y@{@D³+Q@ľ|oö:sxD}êH…Ì <âûFÆ<ê»à32öi#IÂ;pGú=æj?Et9Q(èMŒ3âƒK2¥m&Û AS‹pü¶m΄ia£ *H oô& bÚã IèöÛ– âRßL #ZÓaµ# %a!u±!NqHø‡ÏB,ÊŒ³)òx’½ßýˋˋ¾yi—ø6.aS©*4T*Ýâ¾Ü™·2]o›úç/Í×ù²ÈÔæØar[æuÖ¦8xÔdfF=Sõ/‰Û­ÍÜêÁ+“gß÷V¯ö™è×MYi<Àô·Í3ó™L‡Šx¨Õ:)ôï«îƒ2Ûâ!¹©ò9wwI•'÷ëߪö´Æ‡ï—èz¶/n¹-RsÊ?c”§5>[²Ù}»2Ï .Ú —-¼öÎxcoÿÙbÎþuµv Ì*µT:]PǹǪ5Ž »±§˜»Óã7{f±>ÄüÔZø—cæ VÏàÁI’3`ØŒº€++‹±7³‰€o„Û'IC*­5¸±+8$´ÓµXîqÒ&ár`Ã.`dØÈ±/7öåbfW@À®àߺö9pÙ1¨9ëZî/’Œò `ØŒº€«.àƒÀ]=m‹5›ÜŒŸxש"Ë—€è㥠?nôsû/ÿUÐÐ5¿]&̧û_ ßPKvºZ<ÌùO± Í,4IAR-STR912/include/.svn/text-base/91x_dma.h.svn-baseUT LjKLjKux êëµZ]s›J}vªò¦¼/Nʑˎ֮}ÀÙTéà 8¹yRa1²¨ ÐÛwkÿûö â£GF7^ò ΜÓÝÓÝ3btö¹È‰ñ‰³û¶u{çMQ.‰ãN‚EÓ.²$Ž‚EJ°¡?|&£ ¤dê­))¯+’Ñõ&ô2Ú[1ˆ¾ÍVqBª×™C¢o6a°ð² ŽˆK½5a&iF¬4ÝRŸ•‹3upÆM»"ßh’²jOáhºH‚ ')Ù7Iü+ð)ñH Òñ+ xI²%i¼M”,™ýAäs;¢'ƈ^A–’Í6ÙÄ)íè/&{¤Yœ¼^±¿ÁaMc­9¬Ïúí`¨â™,Pÿ‹Ý;“ÜÛ¦cN]âÌFîwÝ6É÷;˸#–CF3›Ü>XC}j˜d6ÿ º5qˆî˜Ù7khMo‰ñำ‰i;Œî»åÞA&òÖ†OtךM‰mÞê6¿ ‚–͆ ×™ÙCÓæRðlBÜqôo&q­‰Ù㹂@à<ŒÝS–Ö–aÏ̱i¸öljqîôñ˜Lg.¹1É9’±¥ßŒMN©O¡eú”qYÓüˆ‚™SÇü÷xnéc2Ô'ú­éä€Ú=C-ŒÀçnÛ–Ã\Ù³ ³•‰Ëb7ç‚VÆPŸÏr—ȃc’‰>4ÉÍ]´Øö0VnÛ.^ŒV·¦æ²M’ÅïMÁ(ö˜YäûgôÙÇ?œ±ê\%Y %IÑ(# ]l!/±ª[„[ž¡_º\ŒóÁ2òé’ÌçÿT_æÃ‰>¿ƒ›~.R»ÉÕ-¦µßM ƒzÎwÌtÖÞ¦·:fB\Ê|Ù@£v•½n~S0ãa®¦Y²]d?üçã²=×óÏXyQDù“,tß¿fý Lp¡«AleÑÝ<ßOhš’“Ç׌~ñÂà)¢þ§¢ú^汩y„ J¼(]Rì÷rý–4Z‰DzgÞÇßSqv#Ø€J¹2'Ä” «AwCÌQ~í6‚¼é0#ÊbÔ[HJœÌ˶é)ñ–p‹c)lbèqâ=óʆ¯¢–ÅçÓÁ&²UÑ®âZµl¢°ó6[µn⸋26».º©—\5C´ ½'b°G<(y(ùMŽÇæÒ5ŒN11Q˜& [ä}™m.è 9Vz½Þ×㦜hÞJ“G°!P‡ªTá=Ç¡ç´Cûô‡^ ÐKz‰@¿âЯyJˆ¯ˆíH¾Y;íýßí[ÐzšŽX+µÞ®òæþQÛU`0¶ ¶z’¨6€.,Ö½#"ú?²Vìp`bà ,–¹jsÃ-,¸*7±¶´ yd‘jBÕŠ[ÊÖ´æâ[ÊV³&·T¬c—Îq;Å VâVе« Ä«Vh(E¶ó|wêü=©îȾ  YîØF—,/`5Ûkƒ!YÞnúØœånfy{¸ƒí’\Ñe¨Æ¤(†XwØÄ€X†··œMd‘à*D$¿U4ˆHz«hÛÙ­¢Ql'·ŠÆ±Û*Ævj«æ.³›#ÊïÏ™ÂÞÉ•ƒÄ‹Ê¡ö=š\Mè:N^¿dñ—5ÿë´ùuýŠUF{kTÊ©ˆÚàmµ]q¬¨µU©÷¥ÎoøxŽ(J}l½s`Â>ú’@fÈ‘Ôöò!ã>•¦°½nÚ{ƒâöÛÇmS뱂õEj`·Œ¨«¿%¯ÕåÏÑø}Ò-Aººï$‹Æìœ£Î¿Çô´ç¦áí!Ç8W‡^æUº^¥=ì–Êôí%;cRÙy¡GNÈPwuò/ü,ù„Ô’Ðï£újWý~®/ç üZWþà— ¨—¨B‘c‚xù–ç*Òïê{a¹_ៈ‹® ùø½Òªs‘Ó_vÎ3MÌ„”^»àAjü_»òÃè?^0ùyÁþ‚©6È=ÎÔkÆ—| …#ìÀçkpòä"hõ¨9ÛS¯ õ WöÔ©PÁKH;lâä…*Tð2ÒòeO±k—ÒùaŽÈËIHˆrªIäZQHíò¼ùÍkFÑ¢âTÉp(;DŠ€À»AÎxç…ËïqâW=èïe,Fìc­0–¬ƒ’¥å”ûûJ—T£Þ%%-­ížh”ÔH4úåÞAÊ\²VÿUO´ÖÞ"‰û¿Ê¸ÜFü+þß>#öþŠ_„€ɰϟ®+÷ùÝÚj~jG>׎ŸN›§zâ9»ãðßÔXó[%wmÜžaÆÚ? Ͻ½ó¦dJŸùu«ùÑ™GËà©“õ[Ö Ë§¤£Ê ûG¡÷”¿Áçƒni&Æå7O¶ƒâí§ù/„ ±Üú€âs{ sSmúg=–ìý·åJñF˜Ô§ì5Zw‹`AÖC]s`LƒŽ;#o:SvFŠ˜èàØ/*BKÞžçzȤÎV!27«‰Ù5š·0ÂD¨!Ò%a;U€@CkÍÞôf»„˜[½7ó8^üd¿ yo^Ã[¬è{“Þ'q¦°£Â.Äì‡åŒÍ± «¨ãNqíÖ |h:ïÈ«4ü`ÉVõÊ/ñHñSÀöuÈ/ÍéýèqdMñóÂÿPKvºZ<çK¡{¼ü 7IAR-STR912/include/.svn/text-base/91x_ahbapb.h.svn-baseUT LjKLjKux êëµVßoÚH~Äÿ0j_Ú(õw½äi±×°’P{I”'ä˜å°6²×)Ñéþ÷›Y $¤í©7ʃ3;ß73ŸgÇô._0xg¿;œÜGb4–0°¬ß!–~––…Z©T—Ež¥¼í\\‚›­ÉZÁÞ®áÏþv–,’ÍCwIA¬ÖË¢„C»ßv€m6«,MtVä U²¦`'Ñ iËJƒ¨ªZÍ)ØúÔëî™â®áV•!ú]ËT•–ÙÆìÙå2«`AÅ¥E®“,¯ Y­@/,ê<¥à 6e¡ ý´QŠõá!ñ½hlÈbvËA ŸwÅf‘ žzòŠF\ØQÈ=nË( „CÍái)öJ%%Ñü ÁÁKÆ"& ƒ,Ù|^š1xMW³uT>Ït{ŽìnÀsû™jd Ó‚˜ÂÑ@¼§æævà³³Eà{Ü!ì[ƒx¾€.ƒ>80àVwÀ ¤åÝÃô~OXÜ«0)ÒôBöç•skŽ5´z,¬`¶kòB.`jÙI‚øCâJ€"¨v¾ á‹¶©¡å9ÍZŒBCËaнÛV‹"h³.VÍm[/‚µ¸Ç0,76IѶ!¹_ÉßÑÍã£ã£&Ò‰Ê$è|™†BÆö僕Åie:ôÃkaþ¤&Y"'0Ó ÁÃ9î£1©“ìMvN<æ¯JðŠì5œP¢y´hÌNV™Øã"/4­z¬|o&B!¥.ªXý}|Tµ?Ñ4óD^mí4?‡yUÄ»Öë‡c”Êbß–æQrEŒÿ1ž)-0¾¤«ç:p|–:Êô·kÙôÀš5˜®^ÖÚ8¾M¦ïZ­V«ý®yNã3OÔ´*¨˜9U†ËHdz$ŸÂc„šË¡\×e¡î©åÀ-¤ü€¨™Ê¦`b¶˜;„wêú‚÷ÎÞ8Ð1Ôü?¾3õӲȢbòSø¥ŸgA ì•é – o$$S•È+*‘e•ibc^ˆÛÍf-îk…]L&ðR³®»+ÜRM)ï+À77]b ^žs9¿§šTx#DUÆr/õRÊ H,DYD'G¸±š(ìzºea ú¥•9ú‰zPøúi{ÅÕ¨ÁX±1å³»~Ïõ›±‰=þE^5H÷OpòŒýÏÐ>Ù¼¿]uÔïoÖ¶£Îè3‘µüAÈÉÐÅ&[s\Î@i<³Q¡·…ÖXÊ/•ÌtÕò醲´ë/Ö£uqavé¬].,ëâùÉGø÷Ýè9êöëéA¡F}ÈUb´8’ÆÏ)=Ÿ]íØõÙt:ßì„f îÔ¦7‡ÙóäÔ]‰ŠÒPÓç§'—æÇ>!a›1òŸÞë!Û“zÕenMɯ*×[ËKùv*£‚6[\ìG¯Ÿ¿ËŵÌl¼îNu±È8|¥ãúŠ„õ(x¹Þòóúqù€­îýPKvºZ<3_ç¿cU"4IAR-STR912/include/.svn/text-base/91x_fmi.h.svn-baseUT LjKLjKux ê뵚]s£8†¯wªæ?œš¹I²ÙÄà¯lïìmã˜<@âê­­¢ˆ-'TÛàœtϯß#ñ)ÜôÇÒs‘ ½^ I™Û+Á“K˜X«¶q?wAíõFà¸Ë`GdO6i…Á&‘ô矮`ì ˜þ@ù¼ƒ*Ÿ¼Ý!¸y¡5´SúÅPÞÁr2íxÜ? ¢\âh婟dÆI F’œÈ–Vî o•»[æì<’8¡ å¦Ç$ÙÄÁ‘AJºû$°£Î6Q˜úA˜€¿ßCúB`w 7´rÇ8J£ôó‘`Uô‡…”'|fK’h—¾ù1}ðûñç¬ýƒÚþ’?>£oþ‰þ»¥Ót„Ò§y%a 1Ùœ03_ áfb9údÔ_ƒ]¸%;ð<ºØàõ0q~ÝfÍp/Yûÿþakÿ–-ë“~pÁ‰ÉÁ?qÉòSð·Û˜$ ô>õ®aK6Ñá@;ÍV h¿Þ‚ðW’-›9ñ{Dæm›ZóÞ£UO)ÇÄ qßâò×%ìçŸbL2"üBÃ-Þ¼ü’·¥:FqбÉÜïm«NÄ%>Iý0ývj­+¶ÎÓñLª$£9ÖŒ^ÕìËà½×Ìß½ûP\\\]¼žúêÕeïÓpÐÃGé]Âo¿z‰¥y =Ö„ˆ¤HH½‰˜¤fÉ>!´„Ù­·òuŽeí|½cYß+Çá6ØÕbŸà~#Š‰éž“YÆ9•?ð÷fw”›ÍX×=G©PJG”"A©JíˆR%¨þߦßÓ—`•£AGÔ@‚V¨aGÔP‚U¨QGÔH‚W¨qGÔX’UÊÙ¬R8˜r>«”zV±\è€g•RÏ*6ˆPâ¬Rœ~ 5ê†ê·(Îöþ³dZÎڽ笜|«L›QóQìd¸îµ Ûwƒ“úé)aD‘]†[9uÜ Â!ç9öàœ’#. Îà Â)=ŽÃ §×qj §Ç>®ÀbØ9\­³ƒ6NØÕ3Õ'N‰»«áfX"5ÇwLü-¼ùA øeM‰däm]›zkÍp=ÇÕ\Ý«'Þ¦…µ0‰÷&¬Hµ‚¹oQÛY'X15ØKLZÞ> oq€~¿‡µm`µæŠeF}6Ë›ü‰£z Æ[¨zL釪×zH9ÛÇèİÞBº7Úϧ8;d ݯÖSO7Ùi§š"eC”·b¼)åé¡ÿ´'˜SÎÔp*— Î4Hˆó»bxö©ÿLpËœf+‡Ðóâ±å¹ÑÖY9kZ°Î¸§Ä¦û»/…ýØÅäÏ 7Ÿ!öÃg"Y6mýoa­Ë (ìÂÎÕ·(þHO V<ù)pnÜÏëÀA8ž_8âs…¤@èü P{Šðè6ÁrþW¾#§mXîŠâ·ÅˆÍ™L$ÖöÖxx÷ŠeŠzÎ3¼ ?µ¥P©„ƒ†Pøa-…j%¼k…ŸÑRد„“†P¸+…ƒR¨4û(Ü|•Âa%löQ¸Õ*…£JØì£pcU Ç•°ÙÇqçTárâÅßïZy!ÉœÞ\[ÌÎd%²'œ”D§C •oPr›5”„Äy'çIéèI)I#™'isžÄùÌyR;zRK’&ó$"œ'ñTá<õ;zê—$]æI:û8OâYÈytô4(IÒ|’NlΓx‚sž†= K’4Ÿ¤kçI¼vpžF=J’4Ÿ¤ËçI¼,qžÆ=K’4ŸÆüW½¸›XúÉÇæâU\OxKÍùŠk…ÜmqóA¯/(æ ·œRm)©R唃–R•*ûœò®¥ìK•ƒº²~žÊ•©rXWªmåPªÕ•ƒ¶r$UŽëÊ»¶r\)Z…Ñ|÷]Ó*ÒU¸UJÙˆ*܈JÙˆ*ÜˆÞ ”ýzOé(8蔉ãÖN›"éßO<ëÁõtÛ¶ìbÆÔÁ< ØìñÓj£h@+Ž Í`É2Úžpƒ}ŒƒWzÒyõã€î¸¿å²·yq|ð7x ûÖKãq•›«þ¶ø½ÄÒãw#óH¾FÁ6K?üÈ.ˆ'ìhxqºË^GQJ‹œà/r ùK3 ù÷ÿ=³ó;õUޤe½ë² FËË.ÿU3VøÁ;ÂãÉ|'\zaA*ÈšÉëïóêxú¼¸+Šñx§›Uíž{lz6ã°û–ìŠ]d³—Ùïíz´U-úW‡ùœã§dŸ’‹¢Z“ÜÈÔOý¶¿E•ô®ø‚Í×-9¾-E,n‚6›uri_«H¯‡Š›",¼'iõ¦PÐ7×Њ@a 5Ü>úû¹ ýlÔâG”¯V†%¿ËðgÂn“ät _¬6Ù?¦øÒV÷–“ö™×0Ëg§¿gæ³4'oìqÔ"¤׫ÊY¬²xÓÍ¢xá'©u$ÙNÛ~ñGº¨Öþ Z®§íçkþÿÝœÒ?:ÏŒ…^þy÷PKvºZ<†YÔqàæ¡4IAR-STR912/include/.svn/text-base/91x_map.h.svn-baseUT LjKLjKux êëí[oÛH²€Ÿ'@þCc÷a“L2©›=y¢HÊ&"JZ’vC‘i[YòÑ%—=È?}á¥úÊ–'qòpˆÅÎ ÍúX]¬®îªnR/Ÿ)ôÄŠüÉô]œfÈmµz(ÍâÅ|³Î—ù|·Y¯ó-R‰>~ô Ëg·9ªŽ?ѱóåâvv÷Ç ¹ÂÛïnÖ?QìÈ»»[.æ³Ýb½BY>»%³]Ž™›íEÛí>¿$·º/£—T³?Ñy¾Ù çÈ·óÍâŽB*ú4ǧnòÍl¹E›üz±Ýa!t™_-V zålu‰nóÛõæ+ÂzÞ-V×`Øw>ˆz§øÞø.’ÇÍp]ÒŒ>× ·ü[Gn¢SüM×ü qv¢i¦á8Céd˜½ñ’½9üS¥h8IÐÉYxc?D“ñèò¢8E^†e&çQO–f“8LRô&ÊN ÓŸÐ?Dc,{Y4£$<ñzß0Jˆxpæg)¾M’ Lè­ðßb”MPê‡(‹âðä¥Ô©0 =eω¯F~2 G¡Ÿ%“qä§(=õF#4ždh¢Óp Qä F!Ezãw(ˆ|õs|/öo„ˆÿäOÆiøï3ÜòÈ¡À‹½“5‚ÜmŠ/$º€?bÍN¢”4a˜Lbj8LȰ8å Qz†VÙÐ/Y“ÐY¢Ø B4x¬…%C43á8ó¢qà%!6þ>7ÆJsR%yK~~ùøÑãG/IŸÃ)G»5ºÛäŸòÕw²ùûå§-Vóåžzè ‹æ?W+Ü7Ñʼn±7½ÀNóÏKvîd}mø¡ò*üŸ(ÿ‚{ù _’¯.WëIÎVJGD±Ë|k¥—ù`J3úÑo¾^]ýqóñôîë]NO ¾÷£ÀmÒÑĽín³ŸïöÜvýÁˆß[G´òƒaÙ<Æ$f%NÀöøÑÿWø´o»h0H“We“°ëõ f«(]ü7GIaUã Â"0a¼^½° BO³wÎ+ “@bM̶9ò./ñ“ÙJT^§!餥ˆ:¹µN~m%Jô×+<Ð/µ’uJBº›íör+ „v½ h±‹þ«Ý ±._Q6Û\ç;¹a„ðøËE†Ý‡¢W&7CÈ[Í–ëk¬‚Åõb7[’Æ~Ê7xXÖzœÑÍœg¾fë•mÆ‚œoϹ«3[­rªáÕâz¿as#®éäÖ ÓŒ.®ñôe7Øv7ë奠šj× ­?8¨š–ðM[ßÞÍ6¤ól÷ËÖÛKP·I ‚ð qV‹_á§XZ­¥õ ȱ9*P‚\;«APÛÔVŽ!¨cê(²I];RWIr ©gGê)I.$õíH}% x÷4I!iŠÝz>[bÊùl¹—"»D"îý yo{w:@Þt€Iœ„ü€LÇceüiâ„n³¸¼ÎMá— ¹*YM´d§^G±:ŪBt¸Ùàg±á56¶Ù^e%ÂÛä34ÎwŸ×›xΆAW³9x2÷ˆÕÉ«ß~û̇+†nIò·ÉÿgŸo¥8d Õ±Š϶V7DêØœn†Ÿå8a¸rìj9n#ÄiO©·ù°ØáèG ¦=¥>ãê9 JÇ¾Š£bMAš5 ¸;á^æáäQ¶´šc5k š'[\̓!{ Õo`­¹ZÖ :Î{·ÿ s¾7¾ˆ·×“ÿáz¯qVDŸ[ÓdÒÐÉplƒ hšTºY˜Ú°¨4_ïI,±èª ‹ ²‚1XìP¶¸]¬®ÕººW Ë6û»Š.qʼ¸ZðêºV¦¥&™"h™4kLËæ$Sâlyµ•¾Òßþ‹rd—@[ößïÝ¿^ ]ç½Óç²·‰S¶a3[mo[z÷2‚Ì1GqU”¤ BŒÓzï´Bã Ôgœfs M¯3MrÆ+R4]MžàðúDSGò”))e`§ã3Mp¢©«¥¸fJ‡×'>/õ)c0ž#-.-)§ )®Hñ¥yˆrzU²Iô^ ô+ÆÝVÑçlµØéò;ëÉ–?zí³*Eõ—ëùÇ{$ËÓÑÈŸŒ‡%ÿ§iҥŤïÒ4ó²32‡%Ñ‘5Ø.ó†Ú¼Iâñ ›ËmhŠÏVøéÜ’bž‰0QæÇéë Sû›fN¤ÓÆ?I&umÌ+™µO°…`Ümé1ÎGƒIêl“ÇàÄ5ß©ÕPb+ŒcÄÄ'œ6ÑåÏðÖ—Å4ÏdãØcfú•>|£ÂÛý’9²î™‰ç>‡ë >g›º÷«º•ð´xŒcqL×ãª0ªÒáÉ4šLβ÷G½b\rMö»»}íCšª.PŽHEã‚Ra¢•EÄdï¦á{§…I%†çFŠˆ ã¨î«ƒÏ ”.8®U³4óæõÙ4 G5æÍìcþâì® £ª`q·ž½úycOДg×è–t}lc9oêŸÙYxÔ b¯,_|fücVšøµî:]ï7s]µ˜5S…t€'W‹sceE¶"…ôh±šÌ/ñ?ɲ.éŠy/m}Ð…*i2ÜjG[NºaEiý8Ë~ÅõÂcC_Ð|¶Brô¼õÜyî>o?ï<ï>ï!ì£ý?P†ÃVŽHU3_\ßìÊ›niågp–’øZ¨q%„yB]ù›3—(åkÔõðl1_VÍüˆ[Éò ΃hgT Xžãë95Æ_æ3)À•Œˆ¯±ôβuÇ7r”z(í“ÔÉöIfŸ ÊA}ÞÎDкm3ö9N¸š}Xâ¾W–Hmí“øú}º¾Ú}&®>Øoh ª¬Ÿ)8©†“â¡}™›A3 AÎ÷±&¥8Njà4(£Íx(¬oXÎçE}Þyû|]ÍÉ–›ÿÚ€êøe9ÜTÁ&‹bRÑhŽ3õÕÈw¸°i…?»£n˜-ê>‘ï ®J>A“bžT®<* mqMC®}3Á9l«O uSõ*££ƒô Ä5C\”Rí×zUõÓoÄÙpP:$+Ûßi>TzRú¢\Är ÿë|©--K­À%*\’Ï.ñtÁbt#NcU¸7›†Xón–<€+|˜ ÈÛnó .A¾œ}•ÙP;ŽigKS¯?œe9…kì7â$„pcíð„m•ï,§YÕÖ¡Øó+’Ózo‹aÃq˜™Û³tïT,gÚd5ß4ÅÞH#9Z6ކ±êUÏ7Þ/w‹9u7æ$G&IñÆP2Š€diwÀÈÚFQÀIò+ÁJO)µjžÊpCö®êç›ç#PU:ycÝÒŒBÒå%ÝzmÔ,g© -Wì6Ì"ãD”LòyÎvÇ*¢6›?ë.°‹ÉIHLn¸¬“ÛR„ ñâžd¥TÛ `I1TAÀ˜&±Û2ö¨=“Ë|TÆÑ‹&“"D¬ý•ª?Ñ©?zýMñÿ“v‚æ v&—ÝÝ-[›!ÕLà`ó63 š|¡ÍÙîf«… ·{ÆÈËkâ)51nb“ ãÀãfFdœÙU[¹qÎcª1àæ¨5ñ÷› ©_k•á!™¯Ò¤„Ðw……‹ÀÄ´ÝAENnDþ†»Õ=º#:ó’ì;tÇ@ŒuÍþ®9 4Iá*0YP"zà“ ©ž¾d{–„§òä3Y2~*wÝ÷Çà~CÍl·üNU)âK£)ì7›À#Ë•/Ø>xý‹B÷ïý ’€ïœ×6˜íñL IÁâÓbkÚꪽ Cî&Ã͌Άð æàûÈ۷7"ŸÛûÊs¶Rüáë.×ð•7³wq3Õ![Œ7Ad8JU“VÐGù'²=NS¢i¸É1–MQù¥qg¡é&0ÀÑúÐ`m{‡ â‡ÆpÛ»¸ÊØnÚmïÒV†|Ûˆo{úZ8‰è‡lÇúþ®|[àþ#ž>"?Kè.†îfœ(®íazgŠdµH¶Y\_k"%™Ö"†Š'RÖ*ެ0õ&²Þm_Ù}7¿ Ö×6; ›'Ä6Ë0ºN9.õ; “Þsð‚Ö„/¦¹þ8{›  c¿#[ ãXÌt¾h£^s€×ùW£‹ÁñûOp"øÏ÷=È×»tG̾A³oСõJ³äØù¢ Íø1ö*¿¥å.È'ðÜâ¤uqFîø¤õ¥{Ô¢ÇSš&Ÿ^Ò/[°H´ÐÙj°¿ºÊ7xxHïȪ)AªƒØ1{vj¤Sëè둎½ŽN­£h¡#Ù¥xV?9Œìw’ìtmT‹îtä=‘a¡ Yù4€Œ‡š† ‰È°±I¹Ýì¬Ò„˜¹S¶§ø3²°LITúÀV“lµªTjűH±V,´ªMUjÕ‘H’V µÎ#ßÏ Ã†P­4Ÿ¯W—3BÈ…ÍÃWµ9JÜt³¸-`Š>­Òo(9x:ç:xƒÁ†’ƒwDƵ&ª‹õ¶|Ëöëavk´»É‰¶ÿBwàK£ªéãxi¬W?æ§Ü…ŽæB‡^ø`Þ֞$Ž}˜­>ê_!ýñÃÖaо˜ Ó¬rEæˆìŠl±àꊼ¿êRß¶*`\ÅÕS\%ÅQQZzŠ£¤´T”POi=\ïÒ»‰uçúiÞ ­ÍXÑQ<ŠúctªÑ³ø«#£¾QŽÎ€re”ÂYëÒPmÕÓ£d¿¨ŽŒ:Ò£:&TWFyzTׄêÉ(_ê™P}¥èQõwé~…ç®-´Ýx±e冟ѣ𠛤ëu<*Íç¨Â¾!þ)OÉE±"¢¹*¹T PÖ¶à(ŠøÞÑ\%@1Ìt5€¶ ÛZ @O —*ŽèëŽàJ€#ÀUÚàXh+ àé% +:@W èI_è)} è}%àH„:À‘p,†:Àñ2s(sÌ¡ìYˆ×2Îpd„ ðÈCd”+£øo\-‹ºDÅœR|pãPüæ<•V¤¢-™ŽŒ¢H®ÃMW’?@$¢äÀÓS£\#*M§Š‘¤¯0;¾°á ¦SŘr¤DEfùâ™ì Ç2 _ØàWäKµ2Ê“QøÂ©’ʨŒÂ6 "×W˜Ý—QäÂF”Âì¥øx“õî˃0›>óÊ!ô\›xàQ²âwªσEuöA`˜Û‹p/‰ÉÇOøÈ$Y(”°J ¨ˆ?%ÄÒ /ñ úÎï½lûí[Wkå:T]~*ÐBªF€–kζBIâÓþhÛÊVbfz` ‘ Ò/j!ºŠ¢°]¡!s݇‹€Ã_×JC•h™Ÿúù}%Ö®ÕØñ“†Òµ#éJ(’†Í­×ü£æààQsðÿ£¦í¨98tÔ|@ÛJ㦵ßþÔQóA-$œ¿Jß6šl¡á¯i!ÓˆÉ,Tÿ4`~ßôшvÂyù}Òæž÷ãL;_µ²Æ,ø¤ê¿«ßž*ÅfqÇ î6‹»ñv³xÛ ÞiïÄ»Íâ]ƒx¯Y¼gï7‹÷Kñ‡ó÷òû[.^X¸üCS²¾^Z­Š®¿ kõOe!Ç $yw)ä„$Ÿ.…Ú¡öÃ?Mºl ~Ð÷_ìQΪµŸô4É:¦"ð×Sáß¹åN`hº€)ÏÎDÉj“UíãQˆJ>A-­D%Ï Ë•V¢R¤c •œ¬J´^Ïd;Y©µlyÒJVj.[™´’U¶·c'+…u¶i%+Åt¶i%+t¶ i%ÛWÉÙÉ©díd>î°EÆ{žwȲ£:î8Ðjåê$°7Ye´,#d,ÝR)K·dKˆªGÌ Ö+‚¬ºûK²R÷g‹„V²R÷§«‚ÊhÇ›©\<äE5áY•4&«~§\„Õ”ÀÊ!ʵ@ IÖô,$Ë¥? I—ðšZ­ôñ¢66ªVö¶Ó×G4Å=þ2'/ã°/}Ôé+ cúáåûkÛÅÄzé/g'¶Æ-ë¶Š ÅAÁZOžð? Šž=…_.ÚÊ;¥¼­ËÐdÁæBq&/:À:]®õ)'χèBrôƒu¡¯ˆº€ïܪå«L‡›¶z JˆVÂG¿‰zp©á`íî¼ê—¡ÚñAŒ[×8D»á}LJu©^Þùi;xÄ´?'YriÇ|üÐz4Ûl.˜ ¼[ŽÍU–|„ZŽ$~ïKU塎Ó,&Å)¶›¼IL Oly“˜4²ã‚ü 2–«ë;báÆBPjÛ)Þ,(µíoT¶±c!(îlGx³ 4ž³àÍ‚ÒÎv€7 öU‚G‚G*Ác ÁãRðgDç—‰ ò>ol.ð¹6l­²xÃWed)ð ’Xª,Üp©mOžÄðV±t'y›6–Ÿ-ÁRuÁF¬ÄXJýYÞ‚­”ú³¼áš¥þÔ1JY¦ê/Íb’šòFj,~x‹•å¾î"K‘* HJé!ÈÛ£É0S‚‚ 3EYF¨·HRàËÝXª*ɵ–f1y:,Ï­&Œ†Y唎í-c_è!å ë­eöEP!U‹¢ððøQø6CBY¡<ž½‚«ù¥$Rñžy¥`«Ø@ Žgø<¯Š¿U_ÃÄÔ¯€UWJÔºd Å;ÖxG‹wôx×ïÞGû¶5¾}|ÇßÑâ;z|×ßÕâ»z|ÏßÓâ{z|ßß×âû¾ª0¶”“=¨ºŒ×e 5Õ±£:jªèåUuÁŽêª©®†Ú¶£¶ÕÔ¶@Ź/ãÁ”Æ$|ž'Ñ,œcœ•A`R !ä žBSa ã4b #ZçvŒS>HÁçyIyÉô&WB®à)4”0N#Æ‘0b‹H&؈q%Œè@$3lÄ´%Œè14Qd.ƒz ª_^æIN3É‘I¢…h*ÙLre’h$š[6“Ú2©-÷4Ýlfud–84Ðü³™Ô•Iâ(@ÒfRO&õ”íë7³ú2KŒî4im&ɤ#鸙t,“ŽÎð&~ƒÏó’6Š6£ÀDRðyBA5†ä‘¼*q¡I¬T=‹Eb_Ðd1¸¤ 0è%<†¥™2Éi&92Iì³4]l&¹2ÉåA$,l DÎÆø CÓR ã4b #6 ç—ŒÓNHÁçyIZ…Ì#(8LB!Ÿ2˜@|ä8÷,†A’B>/ ƒÁ‰À ™(ƒÀTBÈ<…&¸ÆiÄ8FšVá$³˜ûˆl)Ï¿—ɹֳò¼0C"¯ŽwdgÅ䜾¸8v¾à[M/Nõ[ÀÑÿ)ò'ÓwItrš!·Õê¡4‹óÍš~œ˜ü:ü|Ë–Âq€&C4ŒFaQŒzüèÿPKvºZŽŸGiówløœ!e–s y^°P€‡¿_Ž®/¥c7°dY.,FCiÀò ‹ö’¤a÷¶QáX&Ü’ü8¾e°)’@€sØg)OùÓž!ýJA¨|LòtÃ?ûƒ8ú”ùÙÓ‚ò#–ŸF9O³§ñ㾺qÿщûªÖ½?ÎɨÒÊ×ÿà±7%0wˆK,\{ì­4‡ÀjJõ)Pƶ“54K'`[³{Ð¨é‚æ¡½¤µ& /\Ï6‰ã ºõ¦XŽRA-475Ú8d¢9RŠ RG˜ Ýs¶cG.…:<\mIÀ£&¹%ˆ "»˜yoEmSݱɌèžc[TwÁj³X¶w¦dfÀŒjw3")5ë ê ú­à¢Vù‚‹¢›–Kþ^`äT›¡™Ú„¸e¸Ú\ ÐA ÏʰêŠÆŽm _!’x"wöÜ&­É¡f—eH°p ˜šAàîþ-a!”e²Jßù´µˆ9“D¥ÌB§„Z:ÙÍäϯèËó³KqD7Q€§xäØ#K8d,(°*DI²>{É#6IÈ6°^‹.cêë)ÊÂr¶L®MˆGüEô/X»äƒW²Ãùû‹í«j%òeŸfVÙR~t%Á"¢ÌyVüüìëù@1ú€­hmïY†m3y0ÓݶžlS¥ˆ¼¯ªkÑÓÖó »§³¬-§YÀÂùÊt96ã#¦žM©AtY=Ýíc¶Ãe±Y¶dDz–áœeQ/v$Ö·~’°¸c[Ä9[I–G’UG’Æ~ñ§ÅL)ª¤K%v©Ä®”ØÕô8ÆJÕV̽h×Ù,‡íÄÝ¥§EÂå| šDÜÃrÁsv+б.–;ø †½²à/¾…ÅðÇ/Bð $ ÖØå"¿íW1^œ9÷þß+Yž—ê\öëaMÿS,F†á—áp8ziDy •È+ág ;õ³PÜÊÍ‘5®bu«û[…ì³b9뱟ç8Ä%Lí)â>²,Õ™Ø>ÃØ}¹‚V{W nü#“›uʽh¥É«ä”•h'Ìݦ¼‰XÅ)z*J§H‹¼Âžæ”‡„L8ÑšK“áscœÙpŸ: gN”·ðSÿfЬ# Þõ¢¨ÎzÑ÷}¤„-û°+%lÕ‡½SÂÄXÒ½Þ©9 íM9•°æ<<·ƒÔ[ëæ|¥¤*uKe”¥nqð¹«û8×ëx®û:Íð*ÝhØ×Ù^mwu¤ÓçµÝûc9¬t×Ã^„ã™69c­UGYkÕqJíÉH¥öd¬R{2ÚrÝSñV^µ#îk‰[ÙŽÄlwý_}?<»´ß[?Âø˜Fa}Õ ºWÞ›ZîÊIéõím0‰¯mq ü>*}ÆU(~,'#°Øgù£ƒãYŒ·‚]ð}Ás•IÞ7¡¶ÓMô0¨î~Šß(/YÊe¼™Å8#4/}œ¡A«‘Ô 3O© Ëd©‚¬:URÝ»=6ásuÛã[XM“Ý´TÂa=( zƒSÖ\«/ÝăAÌü¬©Ÿj‰I“R…¢Lä Åò”b¥P”©ò÷¼ÀTõKX:f'ÌK"“³½ásßËü$ß”…ÓÌüBÑÉouE`eÅ©Vûqtœ*”Òáî”Y…Ö6ØqìwqA½½¢}åAÀúêu˜ê×Ã;b¡Þœ%!zu‡}á4LŒ†åø­Þ”ªÂ»lÁ‚{ØŸ¨ :›è–ÇÏ÷ü'G,Cü0¦3R}sŸŸýPKvºZ<™Á”˜ªË:L‡ÛJ`ºxúDñX+*4=®ÍÕÀG!p=M÷˜*ì³!pÁWuJ›~ ŠÏf!ü¹\Ñä6UÏÕ-] <×1Uü©bYà¸<è0Õ- ,Sy°t†Tœ ™J_¡.þ‰ˆØ¥ºŽ¯ÿ6GÏMÅM±•‰Î m3$[ ZÜmÏôÉÃsm8$8œñ ðç´6†Š£¸K0÷u°M‡‡háÎØ¡(¦£kè§cð¶9h…“Ùä?£G——#Z¤ë8 ÌpÑE¯QZB-+œ—¯Äé2©Ø ýñœ‡˜ßÆët­a± BƒY^à¤ùvÅ•ô™v“4¬p™Ÿ¥à íœoHÑ&Ü^¿¼Ùo-–keúõOÛ,/±”ñbóê¡(U$3K(ʼZ–Ö¥Ú!E ÞyyñW¯š]^TÒ;b,ìlÝw;‰o¢6Ø#®†ý‡ôíx®*1fÑ@‘çVå¶*AÍ6[ªŸÀ©‰ÓgÀÒû¾Fƒ<ùOþžšdË?~VåKîwë/ëÁ*O= ÌF¾:鿺çàÚò—óôÕsÅ=õܵiîCô‘Ú…þÎì…éÌæAÃlyfÊœ·,Ù'TN«8Æ¢pÀ3Ue& í;ÊcÃ8ñ'ŸÁ“yrwËvÕÅ,Çý;L¢¼“_Îk{`.˽Ä`>fURD ‹L²î9}ƒNh :ìM¢)àÉ_È“E¼(³6ó¯Ï[U9MbraÈÖÂìÉ壱/}._˜ÃÈcmè oÝÍÑ2ò—ñä.O>Á“…<£J’Úéû&¿µ[{¸ÖAA~ÿæsë]€• w“{*ƒM•‹ÒjƒEí/ÒKr~ xÁÕî›;k¿¨–®x Oͪ´ŒrwåìZÜïl<=e˜–ÿ¾h÷ ¶íâζºV³ˆ?Ù&÷ôöwüéf<ב˜°j ŒLž.ÎUѱ©‚û¼µ8o<¾©yî< ˜êÚ3:`ÔríT8Å“Þíqž|&O’kžzʾïh1µÓ/|ý€OêÄo0röÍ<¹±ÏÁ£îÜ¢ÃØ¹ù Ê×KònšüòÜ¢D0Gw%õ(¯ŽßÏbžüÅZú#V‘}MSs2Ý%oËýnË}êäÿ'êÞçŠÃúö,#Æíx_EW´u–©»í©[¾„i%…¨ø±·Êø`~ŒáÕot°é7¢‡uYîb8JnP{}W´W4[Z¡Ø…i“z«jÌÊLïèØ %Îâr!Ìí¤ÖÔ ÚT!Ml™Üqü¨eò–u`?·LÞ·¬KÝa/"ðü«™>û(ÒWK5q½á Ùø4ü#{Üëbù`Í -.ÚQë&–òŠ¿jãæ«7¨3̧û±ä¶¸Á@"Ì­a7MûóðM Ü~rù=Ã}r#É> Þ4ƒzºì¦ÝÐL9ÓM¹]÷GÜÐz2’ðù°H–2i×Ýé¼äÐHq[ÈÉ|0гp$Ü€ÁØ×îÈ{Ë~(þGÝi 'ã^»u°ñ TáòØæñ+½¯~ ó˜ÖË¿¹&eÝ+Ç&\æÙW½©ª‰³Ú¸Ý ï¯%¶6~5’åã5‹Wí½î{vöã—;x‹_>]íßùX3kðÙk­î; -SzB|\+x.»¾'ª›Õ•7IÖš5_{´ö½†š¥ëøY„¬nû’4¾n›DeÛü&U$v¹¹~£xmÛyÂì w¾¨|Dtu4™Þ ô:xþ4\$1[³Oâ(\¤Ð$z~ö+XášÁ,Ø0Ø=à·îË< ~ùDK´Œ?Å ¨Ï˜êhÛí:\<Œ#ðY°¡ÅFÀB“”ƒ¦[ÒâÎû«îðJ¨ö>±$%‰îeG°t‘„[ÙÑý§0…©¶ˆ#„Q Áz ü‰Á*‹´8…mó˜¿n.Eýp’xϽæúÆ+þ$ ÖáC$¯—¸ü?¤À8Lyœ¼~ ¿ñà½ü¦tð^1ׯ¥›Ï2Øß ±?6áÎ5=sæƒçXþgÍ5áóØÖÇ`{`9.ÜÞÛ†6ÓMpf“/ ÙS4eœO¶aÏnA¿÷|gjºá>Ûþ=RLØ3Ÿj¾íÌÀ5o5WŒâ†¶KâÆ½î{¸×0]±ÎMÁwÀÓ>™àÛSóRø nˆï~â_{Ûºë˜S÷]gfëxcm2™ãÃÈ„±91`bk£‰)Úì ¶‹«/ˆeÏäÜÕœyæîñä¶6C›j·¦'O€»ÝÑ*Ô…úDÛµ=:‚å:SÒ•€ñÉvŽÞ=mgCmf\É#Á½gÂT3L}Ù[‹$hRKê¶·a5{fx ×D#Ùbl†JÑ´P²lÉïÑWçgçgW¥«0bÀcŒ:öE¶ÈÐ/¿1£Å:ú61 WÑ’­`>§TCÑ9ãèRîRûÛ´Ç#½Õ-ö—<ø'í´ ¶—OÿÎw2_¶qÂ1oÉÌòWwB¢H>–m90AÓ­EÙ†%2mÒÚˆŒAãçgžŸÉ|5'!1ï·ð/è¼tð¹@¦À¥á ºxxå,½ck±EOŽ |­_к­hýã´^Aëµ¢ Ñ®÷º]·¢uõfo¸>´Â©gýo™ö1÷qŸvrðx’-x†%ExnX»ÒT,È/5Ãñsœ,',zäOKã·£§åÑ» ù«»îɱQ-]¬´å•ã YR³Öñ³Žu3‰×åÓxY¡Ã}¬N~ô_Ô³7¯qKk¤ÅÈ6>Z“†°ÙÞj.fûî?‰Ÿåxw40ŸÄH±…ø î¡F.ö )"þöèU#;šäu }‹,U¹Êù{ãl6dœ o{xŸqLv Êö¤ì ¥ì*Û—²7-e‡ªì@Ê+²{K9hY¸î¼»ë¹:/–eݤ¦Á6sü9Æ@îØáñ$ˆÒMÈñÒè–¿ó ¸hY´„x«„šØÃŠõÅðz†B13zùŠ^Øib<ÿ=š†”!]WVŽÏgñ»2Oñ¨\´°è!„‰5ZuÇ<.ŽžÚÜY.›vï N¶÷x¸øªì>”ÂÝÊ•C GØ’Ò5¢bö¯;?©—£eÎɱË¿ÒU!>AŽ2êº ãºÂç,ëSiÑjx7­Â-Ë´v-EzØ 7l%ªºÐh{;â,I²-¯v¥-lî|£u‘™$q²”~~þ|Ä46ìt¤_q£„_+°âVÅ\{” ã «[Ng­aåÒ «3ÌÍ(òlk”Ë ¿¾øá†9¯×Ð|hàŠ6L?ÏEõšõÝ‚ö 6dãnYÃ,Ãs›²º¬‚8ÙŠ¡MŒ¾dèFFžÃªŒÞ.µ±‹Ý„èJ“ØM¥™›jàqPƒã¬#C(ØW`+3’çD@’Û=a¿g,åXçE:yC£ðü„™Z¡+»îxXƒ4eÔ_=^ž­Ô¡ð|K¹øÿò€êź¹¾MÇ9,uÇÉÛB54 u¨ªæ$·ÔÝ‘Š¸¬€”J3Ñn Ž6çñÞuN.ò¸4äj<Àˆ]Ó±×Ë9"…Ÿ¤4¥î^7gäMÖIHCʦd(²5>‰hˆøþ°0¶}LR~…57[þºÛ½S½qQùÅ¢£Z–•­×{Ô rå‚DKN+U½oÔéÉm:^¿I§“§eékÝÊ…ã ·¥%ÇM¢_¸ˆc² ª_¸¨#²ME¥_¸•fY7x®4N;éV 89`ûGqûÆIQfð[ŽS[§0%þXáù¥Þ©mˆªjE0¨ÝS X¹{*`•p(f[ð ¿ß¹ñ íµÚCª±Ð‚Ñ䉃"ÈÛ0"a FB F“WŠˆ ¯ncz≳J  e'†ö©xw¨Ri¼£Ô¹tºJÉ} '¾Õ}' üëà&X$ñø]GÜ¿’|#Pÿ[.ó&ƒÑ/¨?Ëß`åoœ2¿üòQ]whÕÅ~º4!FäoÖeÛãÚKê›e³Vn“`íqz%¤MkÒ&#uwÛsà…ŠÝQ/ ž„“ËU.7š×¥@”̾»ÔÒo÷G')6î )MýMÃ&Ç`°Xn÷ó‰m<“A,>§µ|IuV¼â’+2¹© ½ÄùœUò¢(]¥ã•’&QP ¦©™o tÃ>‡¸¡…jOYÇLŽƒLŠ´SäµÍCÚA¿×ÖÌAQj¬]Wú5#Å6À½MCùz Oåà[É3¬ÕfÃü(|x\k÷•CíÇ  Â#Õïó±V¾:PF WŠr]—¦„¢÷…7Åéw/ï7›mÈE…mH¿Bô6äs…hmH¯BmH·BÔ6D©/-È—û“ rÝ‚\o‘«ä꾪•Ëär«rÑ‚\Ü×+®éoU>×v·,פì%xêáÃÁ>×ÚoÄÁ}´)$óªÔì$7ªµW‰ýݬ®´e€ýÿW¼"TŠÛO›Ÿ„ò…í) çe‚îä÷ôs}1Ùyùp[ƒš‘OÕ\}¸ðŠ•r¨R:v™¶œ7Y6×y"OÒ»‡-ž‹»ns­è.M›÷ÆÃýnñ¥zq·r*™…Hå‘¢žˆçÔ.ÛdiŽlL¬ ®yÉŽ²•$«A0ûÞž·¤^DäY!6r;òV èÐín_$‚”Ö³Šñ]››¿ßÞ¿C{ŒO0¯aü0h.Ûݵx¬‰^ž³Ú‡l¾lŸóïÃÖéÎd–Q}-ýPKvºZ<]Bž"å64IAR-STR912/include/.svn/text-base/91x_i2c.h.svn-baseUT LjKLjKux êëµXMs›H½»Êÿ¡+¹Ä)¯,)ÞÄëœF0HSáà È)Ÿ(ŒF6T€l§6ûß·{@Bȶì,'iúÍ{Ý==='[ø æ\\¹b8ò¡ßí~Ï·â(KåLFE–&q”CÛÔÃ`Ä3 vx'aõœÃ_½Ç îG[B°Eq›fPÎÁÒt`óù,ŽÂ"NðexG`=,$rfy"ÏrBàîŸ'½³åÙ9\Ê,§½NWMy”ÅsE²b÷oã¦äY”&E'9„³·¦‹$"pó,-Òâç\"ýC#ñµ>¢¯AžN‹‡0“0‹¯³0ûÙAôo~HçEšý<§ßw¿OqÙˆ»¿´nç¤WÙvåëðØq¸p¹Çm<Çð¿3—Ã÷‘ÐF <0†c¡3[ãàØæ0ayÀ|œã\ ]ØCÐÆžïXÜõˆî»ðGXÊ lœn1_86¸|È\5Š‚Â¥éúXó=ãêÜURh³ÀwÀc—|añŽ*ADolúÇTÜBsnrÍw[hx#fš`;> 8Œ¸©ƒ)ØÀ䊒ÙW  ÑÇÄ%ìòŠ¢›¶Çÿcä‚™ 3‹ ¹WF€j„B_ˆ@3˰]áQ†ëXä+"‰O¹s ðÆ˜´U™­Ÿ”!ÁØã`1Ãàj-šAÆ2Y¥oë|-6×1 —c’„³Ñ)2+'73ùû+úäðàðà„6é4N$)n:y/“2-°.ï%ÄI4[¨ ýãçûxšLä‚€ nÎ`„ƒ“RdcP© R˜à6‰ÀKÔK>xGBwá¼sû®Râó4+°i•må­Jä;v‘ÄäE¶ˆŠög¬HŠ’Qþ9<À޵øÔ§¹f~óæRN¾–£½ÏjÔyHØd’É<¯ÆÏT †2‘Y8Ó°YnXôþ¥Ÿäš¸¦_›ac·Í‹0)^ºJpµ’M—ž„׳ê é>öºO@õ8_a»ÜP~bIú0““yGE¸%†€†H÷´²In –u†keÌ›|›Ø0Ù0ð+Ön·×†°Ï\!úm¦×Mßbàk•³VÄØ»Z"¶’¨¾ËVýVÓõ^·Bœ¶"øåÚ³VÄPcËXzÝVÄ€»n…è·#˜k:Ë•jG`³¼0JÄÙc]RínëLWˆþÓ¾U§ ±*Ní®¥"ø%ö|\n<§(™x\xvnmÄIèÃf5ï×fA=Á=¸òy€ç—Šyn*¥g¹±VlϾOôûq×ÿSɵkYÌó¹XŽÎOÚ°gj[ÕþãF|©T™³×K••ó¤ÚÖ ½^m÷‚Õµê+ö6­½×¯ªtÕ:ö•nôž§ “ö| sµ€Oˆ•ýa›íS¯ý]`ÿ-ÔLS}÷O…M%0˜0Çx\ ?£ü,3]tÛCz9síÆ×ÔAx€}Ûq7W Ñ֛Ǫ;˜ºš¦ãù+¿6:}cR™¥!·¹ËÌ@[‡öaçzЙsTµg+Ì ™¸2’xÍÀJñR·Õ¨UÝ®·Œ»Nlmàj/×Õ!W;\y“zétšË–»ˆæîñÜÞòÈÛ²ô+Kóà×´åAª5,St-÷)´ôKKSG_úÖkêðR-ZórxFYú¦;xu'^1®ßå_I¨²~ŸÆ“2*Iw[U;ÕW­ÕãÑרr¼²Õ‡Õ€§îååЊé¥Ó´»I›²Qe!œy}=±åƒú±1·¼-Y«ÿû±`Ï|5Ií®¥É4¾©3ÁÇ=˜„ÿFO&“/×qQ½ µ…„o@•UýÖc|s%^âÁÿ4Õád¹ŸwP”°B3é5ÜYäU^‹õH+EõâF=l³&f2Ìhîs³Ž¡Óél¯‡E¸Ãåk²mD©Údû …«Ô0;«ºø¶#y–¥Y-|íVF?và—´Ê~¤^9ߣçñ°Ô^öaùµaûÙç'^Øè»Š!L^}ÁøPKvºZ<¦,Åï(4IAR-STR912/include/.svn/text-base/91x_scu.h.svn-baseUT LjKLjKux êëµYms›Fþž™ü‡v¦“fRa5QÒON⦼]bˆtŽ™ÊBä8ÿ¾·Ç8@Žã¤Œ?à}vŸ}aï¸Eç¯G.xeþ ¦\‡tiÇ kÚ[ˆb7[9Û²uUä»l]˜é˯a‘mxéƒöúï'I¹>œÝ¢†q¨nóº×pM Œý~›­Ó*Ëw³ô•­´bœ³(+ ey`TÖ~?ŸÌÎEdà’%ZLÎ4aÀÊu‘íIËßf%Ü`dû"¿Ï6¬„ê–Ad®`›},Òâ ”ùMõ9-Üvk´.‘môâU^}Ùs–_`Ãn²]Öüà C°³²Ê‹/ðž'®ë˜ø;%q½Á¦Ã¢L$vª`ÿCıM ID¼"_!+›š6Ð~˵ Ï$à{Î5ÔÀˆ¹I-ê-Á\E±ï’0‚+ÛÈiú 7w˜ú„di„BÊÒÍ­•G\ üÐ"¡pÅ1b"ã’@L]rF$ÚD+'~ƒÝMÍÐ'1ãÐ÷¨AdŽžÜ€M jÌ"( ï,rí7ÜW}‡Œ2}/"­xæÔpÀ2\cIê$Ð[À1$0:íF˜Â"ô]Q8ÎssÁ·€hÅ‹ÖÖÐð¬ó:%XE\Ã"0¿îT‹[ÔýbÕ%ôbƒzÄâ …„‰ÿq™ÇƒÂrŠ ÕJžýðþ8ùâå‹s\¥|Õ0¨r¾˜Ø=ÛUP°õ÷å=ƒl·ÞD‡þö” 9Înv|!B’àN×u›æçMíD ï=à&ð$Oð^óÁOèè.ÝŸÝþ$=‘‡}^T|×Zóý¡JwÕó}6µsMçÏ$ÊÅš ç2KÌO@o\qiÚÆfOF`?ja½ö¢ØÊî³2/úl"Mâ"ãZºÔšŽÃS ÏÆá™„Í!¼•Ii'pMŸ |Z§e?’–ݦդô~1®¡c´qlŠ©jµ·àoAßy·×@o3m›ŠÜO€3g2–ßíNGsDe<C:¥£×^5I=¬Yæa‡Xï‡:;”¢ ºEV¾kŸîy ’¿ãaGKŒzq½$ÙÇ6®.Ö/jÖÚvÍO"AôØ.…‹~å:JºhmÇlÄRh ‹q)‚}¿RÜybï‡O¬£T·¬Öcv}‹Œ0'îêïÎÊži‹ Î±Õ¥ÜpHâo„S"Çv VêèMS÷ˆß9AÌ'ÿ|Œ¸¿”ŽjvöéV®'ñl0Nha‰›o†—£(ÃFka¼9öZ …Ú°áP<gײÌƸ·]Ö¤mâIO(ZXï ]s°'mH³¾pÒÛT“c<Š”ê¦²ézÛV’DQ AÃb¡¬«bÓðêxU±a™ÇEr_YKù"èÉé $¹"_Ô×jö|RÓämO.Ž‹K¦ÒÃø]ºoä]ãd€Ì/ä}ãFAêÃ@ãGv­aößô#P¯ÍÁ_sóˆ)Ý…†Û±›õ±Äç4æ§õ~›]R³ëPí6¢F3탉KÜDnÅjïY®¡ä¡V„oÀªÓ>:¹¯ª[ÄÝLU4Xð%¼¸­ßÎ.AãþAãĹ´’0ŠÇÏ5Õ#aè‡ÃS‡ óÏÚéÈ™ Ù}Ž;>ò+O¬wvéÂ1–ƒ3—©ÑôÏDBC ¨ŸÐóÁ19 ¾¸%™Ž1<’U« æ%ê|÷>ˆÏÙ=~q¸O‹,ý¸}Öˆ€ÕéýïÒu‘ר!\û…âù¤ý¿›‘E^DUZÊv¢¨Kf¾»É>½:\èÐ9ËýúÇІ/‹t]åEÙØÌ€Ë¼7P߸ÍMpÂÚ¼Û¼ZÈtÒ-b <öYÜ É}žmÚÉ@U;áuO°Šº=ªnŸRFÕƒSêíKÝÜæë:-ðž”U»{ˆìo$j‡¬dÕ÷ÅÒ¡xnt³e?¢,}žçÆc±‡O?" Ñ7F4ïãùÉF®§"u]ÎðÓØ_ZÜR·ú–AÁÊŸ½Q¾N·LuU3¨” J]/öõQõI‰×Sè0su¾ULä4´é€}<×5q^êkòÁb¨('™º´ê¢ØÓ¸gKãÇ`±M?uv¾%«Ž’–EŠsËÒ¥•æN„{pÁþ½L·ö M{8öÇ£ á×ì¯)£ mWé?lµwø›ýØŒ|hÎv•¢íÙšîªð°ë<Å'5ÙU¬À½ ‡þmÛã8"ᨉŸL0ºvï/uÚTž¾öã¶Ûd7pþºóy³ùD8¼¾åGâYø!yA"?ÙþPKvºZ<à@Arü 4IAR-STR912/include/.svn/text-base/91x_vic.h.svn-baseUT LjKLjKux êëµW]SÛ:}g†ÿ°S^h‡ Ø´|Ý'a+‰fü,%)OŒ›(Å3ÁÎØr Ó¹ÿý®ä$X†ö¶…+x°uvÏîÉ+åèà ö½÷àÅÛ„õÜããSà"̦e!rªÊ"Ϧ¼äº»ózÙBB”ÞKØŽK¸pnWÙôðN[ZÝ%´Ç%„žd¹\dÓTeEB¦÷ÚØO•DβRÀªª–3m|üéÈ9?2™]ÂX–•öpƒ¬¦e¶4$[vq—U0×™M‹\¥Y^AºX€º“0¯ó©6®`YªPK‰¦˜‚šïÅ1fTÅ\}KK ‹ìK™–‡hýÆCÇd•*ÊÇKýŒu»®®û̪ÛÝ`Ÿk⬱éõ?d,† å4À㞘„ÂdÀ¼0½8þˆù$ò(ÄQp„…ˆ@ŸxÌ|õÁq‡4á0ab 9½Ø,B÷GÐ>IÌ,d‰v÷GžàhqâÓÄ„B,'c ‚…ô7» ø(zs3/‰i@=‘Äó8ð ˆbW4ð!`ä* †’D7à³­0Vó¤òâˆÓëVÎH> IŸ6EèhC4Ô¹h/hÊN×%ô’84Â!ƒ@wÃ×>BѶ’È?jJ‚§ŸÂÕMK-ôh8ºb5F‚°ˆúXPBQ$üǹ“Òrš$m%ß~Gíîè¿#ý™Î³\‚*ð³“+™+(å´Æ¹’åÓEmöè_¿0@³îeó|&çp{«[ ~ž·¸möfMkÒDg: ?ô_ ðóÑDoøàtŸ.ïÞug3e&Mxú°,J…½¬é6¯ Œ‰ ˜£tJ–e½TFM¯U‘yÍôûîŽn\·,¹>X?öØõîÎ?ͬP«°˜É¿»YbϬTš«?Ï´Yxälg]NeÕÌmÖhâ÷×)lzìñÈ' œ'$aòÙÂ] 6xòb;8¶‰?Z cƒŸ,еÁS <±Á³'pįC =·ÀÀ/Z"x£Ž NK"QaÁNK"?$]×–F‰ºhK¤Ð{¦}K%âwa§%Óˆ$ÂVØ9µQ[bçÌFm–RÌõ:Kç\XhgíÜönâÃŽ¯ëXh×·¥U0ö;õº-­ÑUÃmi5aÝt[ZÑÏ‚Ùb¹§ÔÊË=ë –Xîyµv¤{aí¹‰×IK«aïúÊ®éÄÙöpl5^©–e¶Ò·´UZfé—Å5´uÛ¶œû¯›oчëäž®y¯eÜæøjJhZàªÈf¦û’å™Ú×ïï± ÷éW®RUWíK…»™Ø¯S3ÉM/}Ù›ûoX7?t٦Ʉw?ë@o­FºÐ Ò`‘üf^,w>y%ÁïéÒ˜jšÿr«OÜM‰^]–xÓ`°£zŠˆÜÝ‘#cA¹<ªS¡ÍBl_pÂç{õ2Ä„ yò3-páD!÷¸#£0N ñÐö<B g†ÜsÁö™Çëvp®ˆPýs5¿((šœ0ˆù_#ì\ظ¶oxÓe;G!ÕB¯i;1µÐB¿‡$º×ñúÚ’¡¸¦%Å|ÛåpveÐB&ÆkX Â@Ú"à.6q„„8`Q„³.r•ä{¬êÎöÖöV‡>Õiš)Ð9~zê^e 5®pmÞ+H³ñ¬ªWé—Ÿ@1?¦Ól¢¦p}MÛ ~¢×¸l>Nš$+“uvA&ø±ÿL‚ÿMö&| DwÉ|ïöÃ"œç…Æ­«Ù\Þš #Òþ#²TC©‹j¬+Ü…(6,š%=F±½õc{  :n6¯kY¤77ªà“õµ6ôXcðȧþ¡J!1¾(š[mwÒR'™þý†ž›IþV_ª9šÂÒì×¼ØE[TR÷m4RáÝÇnwÕ¥åÒJfkQµ™£|“zî6ÑÈáµÉØYʾ}³v×%ÌX›%=CÂ6Kö Io³äÀìo–’ƒÍ’#Cr¸YrlHŽ6KN Éñf‰Õ}‘œ´H,] ^‹š¾VÏд¶ö M aëÀд ¶ M cëÈд@¶Ž M eëÄд`ff«…338³¶elpf-œ™Á™µpfgÖ™œY gfpf-œ™Á™µpfgÖ™œY çžÁ™µpîœ{ Îï´qúù¤Â+í¼Hïé–|Ÿiò}ö['Ì"â²Æ»¯ûâ¤:_÷rÍ~kÄeo ÍMä>O'õësx;ô¼ûÕ˜ë#´¶½:듸žh4+n¿ìàÜMvú‹¦’Y¬‰[ š+ÊÊT³ñ¥È´*Šj®wè^x$îÏ’r­Ê…‹~™Y¿Ô0SIAÂ5‰«ÑžŸÿ'–ç*›à¡|–®×ˆŸ§€ïÕ¸¡Áóq}üʧ÷‡—}[ÚnT©MÄðl`”^”鯒ìÙY‹"¯’4×h¬×xgêÑäKs£«$¯4ÔùÓ’,ƒj¥ ]çÙ(̰Re’é÷°,Ó-–p†è7>&¿—êª(ÆÆFÙ£‘‘ýå@öèéîüeK†»»×ÚõæÇä“…kN %ˆh"o §pë1Ç&`q˜ÆÌ%¡C! ý c¢æ²p N,dP. Ý-“à“´7,Äø€H…Àé”pëÅŒŒ›x7v¤@DÜ¥ÜæÂ»d‚ÜP, göbF$±/OÍûf¨OÉ£9„G|ÂHÂú.øŒ\ùÔR’p.ãˆ>Å\eHñʉBAÄ(\)Ìv@S‹!püF7gÂH˜ð(°C‰á–o"Æ®í›HB·ßH‚XPˆKájö·]&¢áh7ËÐfÂBê¢ N±IøC_ˆE™vÚ";ùõIÿ¨wÔ;Nïò¥ºƒùüi7Ì=ô¢+ÍUË{Ô;­Ÿù}ó×:õÅù·çÀ:×é}ŽãÜןFÝ@K©z^t«ä`{Õ—ß‹|%3€nå~%3[¹_ÉŒÀvîm‘áÅÜnÀ¶-ü%rWǶ­ü%rWÈö…ô=´Ýƒm[{¹o¶-¾Üwa»SÿTy½†ß0!>ÎÆwœ‚ä14ß5¾GøYYWŒÙV²‰1†i|0É’{Q%U­qÚecuq¸LØ aYhhmóó#Q/Ìw)É ‰êâ œã|7uÄŽC…°Öý´,‹òYÇ*_¦wÐ?9˜hF¬ß1{ÿòq§¡kÖÉ„ùt7¶PKvºZ<=)K4“:4IAR-STR912/include/.svn/text-base/91x_can.h.svn-baseUT LjKLjKux êëµX[oÛ6~^€ü‡ƒí%-ÒÄöÒ5kúBKtLD—”¤sÁ0ŠM'êdÉ“ä4Űÿ¾CJrlIv²›ž(ò;·‡‡G:~ÛòÀõ,ÿò–³ó¡„^§ó醓4Q‘šäi‡“ ÚD÷÷Þ ŒxÁ\Áêù?wŸÆ“ >zв̒֟àZ6Å" 'A&1HÌ5Ør…:Ó,–eK5ÕàÎûãîé±ñì#\©4ÓÝ£ŽPÙ$ FÉJ»|3˜iÏ&IœaœAE?(˜-ã‰g°H“<É¿-BÑ?\ÔúZ‹xp·Ì Kfù× U…wi~;B‰ÿøÑ> Ã,OÒoõcïõtì6bïUk'M^ºåÚ6ÎþåÂ%§‚z„?ׄS¸2kLÀÀçp>b6ñ, ¾çÜa®"QÆ¿b6óÎÁ é»” ­îšÉ!æ¤Y`Š»D2ßNÏ 7³hq-n,)>·)7¦pÍéƒ W$sé‘IC4ˆ ÄÈ‘‡:Á™Å}êPKrßc–1$Žž/¡OaHFú5*‰w 6ãˆ>Ôº˜W¼ QtÓôó#gÄ›¸äœŠ"´v©Qè‹V`9EØœ €û®öU+D%Rsç@Œ´‡Ä³‹`$(¸Ä¦Ð¿}fKKèÅ‚¬Â·g¾´Z¨³0V'xðÔ£ŠsHÕd‰yù¨ Œ'ÑÒdè»×ÌZצª¨¦ƒŽñÈÌçx–«ß—»±8ê‰Û BNQ]«67È~Û®ÊåãkÎí¸Õ0—ˆ‹¬q Fx¿¾ÍSˆ0}“rßÙÅ­9œyòÒ³·s«aò†Ò£×6‘°å°ººDHBj)X?¬%¬_ƒu7¸5œö¶²êö®¹Éj±A 6>°“ú>’´(ìú6ßn’h]âüŠ8;Mjئc+“uئcëÕ=sU–÷êÅRïb\íÍ:,‚#äNß\SOŸsbÍ·:l´™³§n+LÞl”qÜïÓ6oÀNZa.vž°^»Q²ë°nŒúãtjvÁìÃuð›z·\À<ÁV¬å¶¿&tt9ö½1½‘‡ÍY|«®ìU_4/wuÕmo‰°ëaSÝàœ=¿ž•Í’MVà ~9ýUwE€_±óì¾jª bvÑݵ„ ¤=föÊwŒ_×úŒ5Q8ó¬hòÖytˆ¥žïºŸ>u»oàtß´À ýæ|úÔû¹ÂmönÏß¼ÿ°uƒÂÉÇ$œBÕ(ÂA­e„·Õ„0¬¿9[“°U!£'6 ¬^ü[ú„ÊËæõ@ïcÙKÖ!Žï "ÏÔ}÷ªa¯f_¾ƒ»t¡…iš&iÙà”:Fñ2SS7»÷ï¾M˜ÉÝ—-hùÔ@B“x[¤øn©jì$_«á0¼8„»ËX†!FÊOá,q‚l“'?Q8EnH•Fª=¨;ÂU¤‚L•úb¬ñ´‰<,Ì[XXAŒöÚíL~õµI›€ÒÂW麜ÆS&Ÿ¶ÆÕ²p²îï+ô™š£-b+žiŒ‰n ],mXD̯Ý&Jgt…2ã:ÊQÁ£Z¡'Æ,¯L5–Ë]ÄDlÝÇ:ŽoÁUŸˆ,+×5ÓÕajƒÉ4ˆ3,he7¨¦[‘L³.ù%îÉ.•˜¬j’_é®a°jÙ`™[û؇ꋹùüßœïjl“Ë?PKvºZ®a¦é ®×aà{YGàrï™”u/ãÈ™¤išó)÷/{Ê·žðìîy’B9ë Oý$X É–ä™G™D)xaÙŠÃ2|RNaÄYœ½­9ª¢($¾Î¡ê¤ñ2{õað#ñ’·3ÔþÃìO‚4‹“·kzÆu´î«Æº•좥”íŠ×ÿà±;apk3‡™.8ÖÈ}PmC›€áÀȲa|g誩1°Ìé#¨ÆÌÕEŒuoè†9íÎq­³x0Ü qj–&ÂgªkX&Øl¬Úb 6Áõ;ÍuP ,[g¶0…²¸8ê=ט±3P‘…HàÜMÝSJnC³-6ešk[¦¡9àLÔéLË…ï &lªÃÔP¿O™ TÍGÐ µOÑVñDŒ(Ò,ÓaÿÜáÊ u º:SǬXY»EEò…´i±lÛph #Ûš‰À!ƒ‹pÁ7çƒ&c¨šz¯XÜ9 fªÎàûc-Zˆ(8¶ƒU„ÐtUÃd:.Èf$üÇ9¢p '›‘üóÝ;>¢¿•é2ˆ8d1–áQ ÷sÌÌA䇹ÈÑ¿P°~–Ñ‚/a>§fƒ:ÇÄù¼(Ì4&…}ƒl,°Ô1±Tö FøD¦ž½õÙêSi‹ý\ÇI†­«h.·…œÔŒ(È Í’ÜÏrìCåZI… Q0 áñѯã#€\lþ ç“ài5wW OWq¸¸ÙOã×RmåEçýù,^ðN‘²[4Ø-:ß-ºØ-ºÜ-î]µEŽ8Û* !•'ƒ:BBÍ÷¢Þ8z)ºj%û—¦i\Ü Ìõ›Ú¶½z™¿ZÄOx”N›Æ£ü¹Ü2‘±¸Ur/N«YÜ!9Yš“¿ÉæÍvîáÁ—f^”ý~þ5rÏ/Ux^•4SD•ýŸýâYŠ ¿¦T0¥SöÀlЂ öÀÎ+Øy v¾vQÁ.Z°‹=°Ë vÙ‚]î +ذî]U°«ì »ùS+ì`ÂÛRåqžŠÄ®öSé .)xʰ² :˜œ z ¹d)˜F#6"¦BØb¡ÑpszO]nަêxδ{ØP÷ûƒ‘\5‹/aS¦‚ ¤6õAo²1ɦbGÀê} 2ÖñaÃU¹ÛÁgÝϵI­$´w:µ ãׂˆ®žþž2©±ÉJé³Cغª§Æ& HéÂÖUT56YWÊà¶®Z«±ÉrS.aë*Á›¬Bex[WeÖØdq*ßaë*Ø›¬YE=„m«ŽkÅÓ.i²dÆò”¨Z›4m°¨íJöÚ‹·Oª:cý Ú¦Œƒ‚õ64*ßflx[”‚Q)I¯›²½êÖbÅ-N(d4ãí(6뺌reÊ(}ü0eÉ—8Xˆ Ñ9]COè÷—›Ú¼˜Ýº¥~•G¼84ÅÔ»a·XŸ¾ò3c<äßšÓ¤\Îy&§ï½0çÒkê{t Ç«F©¸™9©ná4Õ0­…ÜKh¶¥RýF¢MÂ&·Þº­EXÕ ÍÓ<̺MWEÕ¼«”e?úëø ¼6¦Ó±JowÿvVŠL÷v#”ØÛc'KSdÊyµß¾¬–h™§8Uqû¡=žÉmôÒÓG§sóL/s2-Ÿd¿‹›ö1êæÐj×Z=á[‡];á/«,Çøh&:Nõ? sõa¯«6õ2ü«õÒjY°MqÄÚ¬]c Ö©±®;¯±k Ö­°¶-–‹ ëØ°Ë ëÚ°« »¶a ¿nˆõzæÝxƒŠtUj8P¿Ô„VµyS—LÇe±—¤_çûVİü•L,¡~K­j;-Š]]Ä_ëqíÒxjXô(-lï¶5ª*/[Î}ƒvl'¿AÏ =ç™yÌYÆdÒ²·Õ–ж÷֖б7Ø–pnï²-¡koµ-áÂÞo[Â¥½é¶„+{çm ôõ\·ßs¦æõì’4kN7]‚§/Ÿowy‡X-¼˜ÐLÏ}¡jo+÷3Ëõô d<¿;ÃÎd~kóóÔr¥åG¤°™ôt'¡ƒ*cœ¬ïL8^s²t¡¾öêKoœ„š.ØžünöùxœHm²m{Æ ø‘Lõs"Ó¹ZNûo0¬¯ï׿ùïƒ{.]xzbÈë«Å?PKvºZ<æþw± ¼ 4IAR-STR912/include/.svn/text-base/91x_emi.h.svn-baseUT LjKLjKux êëµVYoÛF~¶ÿ‡Aú’®®¸©j?QäJ\€‡J®,èI ÉUDT"råEÿ{g–ŠJ6Ü$]À€5Ç7ß gg¶Õ8sà£ù L4 øÐÐm·¿@(Ü4.r¹”±*ò,K8çzuÙ€Aº”àE+ »s tžgr•6dalÔ"/àðÜ‚kZ`¬×Ë4ŽTšg d´"c+R1‹R/ËLȸý[«Ókif·p/‹’<:Ͷve\¤k ²C‹´„91‹óLEiVB´\‚ZH˜o²˜ŒKX¹ÊÕËZ¢)òC%á=ÌåPæsõ–éC/M´þɇâÛi©òâå–þǼ»]Êû÷£¼»ßt7§5élu¯Õë`,l£€…Ìú11››6ð~Ã1· Ïdà{Î î†`ôñï¹Å½!˜ãPø. B‚›pac?j÷ÐÝ5÷=ØÐ´ò€Ü­±)B4?°X C¡ÎáChÜ3ÜeMÝ‚±#®©¹¹øÌa¦|›!„¶á8àùú læXàp£ï0 ixS°x€ÖׄŽêEš^ÈþcæÜpÀ2\cÈÂ*Œ6"+äB¦S¥ðR¾K\ AÕÎ@8Æ¢íjhxV«J Æ!×°ô§ûj‘)«bUÜöõ"Xƒ{Ì„†EâZæ!)Rk’Ç•üùݺº¼ºlÑ%§™•㥓2SPÈxƒ}ù(!ÍâåFwè¯ï9„ùK:Ï9‡ÙŒ ^Ι¤ r$ÔÑ9EHðš¿+À;¢Wxð­¢usña‰=¯óBáЪÆÊFÒ0”h©ŠM¬Pð7þÁæs—&Ò¬e͸eNï(|M> E`½¢˜¯yøÌ{Íç¼Æ•«Iš¨(üŠTÉÎY©gn `}•nžÈ@FÉLQVÎeáÈì«Z¼eêµ´ƒûG[ð,U«…vWÿ¸Jeêû?HÕÈuT@mÉÂR³ÕûC+VH{;J@wʶ%‰à n¶èâd³´ŸÛÛsÑjÜì€KxÀë¡ê ½7An4HïHE¾ª Y¼ Õÿ´™×czy±Š–Týzà#î•]áðë‡èh²ÓlyT´Wr…ž¨ÏêØºùfýu®Ư)vÀ v´œOò"¹8è@çK ¨é×/‰ª%a.#µÁGB=„¾^žÞˆ‹zá©wåâ$ÙB= àèO”t9V>ô~xRÕQ÷¯¬ï… õ1O¹%醤ߟîäZº¯Ív4v’çëúxh졞ªGp•Hƒ¾Ã ?ŽÌ’t˜ú¬Z9ð­3NÏyh3Ï¢í>àÛîÑPKvºZ<JÍØ&È #IAR-STR912/include/.svn/all-wcpropsUT LjKLjKux êë½Õ½NÃ0ðÝOQ X M¡Ù`@•:ÄZ¹ŽÓZĉåÞžÐË™2‘!ºÕ¶ô³}Ÿ7³,g¾kг,œØ—¢+:å¼n›yt5{Ÿ­rÆûy×¶KkcP>ð›~„÷ëø]–óàbóÁm-BÕ:ãùËãnþú¶[/2®YÇR±çí[/>÷.ÈÛÛügÞO`ò_õ  ©ê^FR<ÔV·£øÕDü¢oÆ~9‘n®ë^Azóà¡.ECªƒ‡úYÓ¦¼”yoi3ñP¯õTue4©ê±^ýÑ£p´Û úzœ>U·Ñ×¶´™/<£ýaÁC]œÂŽ{tm ‘é—ÿ²Š4{ˆ~§i+^ê÷å‘¶ß_¼Tÿ’öìàýèßPK vºZ<IAR-STR912/include/.svn/props/UT LjKʈKux êëPK vºZ<IAR-STR912/include/.svn/tmp/UT LjKʈKux êëPK vºZ<&IAR-STR912/include/.svn/tmp/prop-base/UT LjKʈKux êëPK vºZ<&IAR-STR912/include/.svn/tmp/text-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/include/.svn/tmp/props/UT LjKʈKux êëPKvºZd Ó‚˜ÂÑ@¼§æævà³³Eà{Ü!ì[ƒx¾€.ƒ>80àVwÀ ¤åÝÃô~OXÜ«0)ÒôBöç•skŽ5´z,¬`¶kòB.`jÙI‚øCâJ€"¨v¾ á‹¶©¡å9ÍZŒBCËaнÛV‹"h³.VÍm[/‚µ¸Ç0,76IѶ!¹_ÉßÑÍã£ã£&Ò‰Ê$è|™†BÆö僕Åie:ôÃkaþ¤&Y"'0Ó ÁÃ9î£1©“ìMvN<æ¯JðŠì5œP¢y´hÌNV™Øã"/4­z¬|o&B!¥.ªXý}|Tµ?Ñ4óD^mí4?‡yUÄ»Öë‡c”Êbß–æQrEŒÿ1ž)-0¾¤«ç:p|–:Êô·kÙôÀš5˜®^ÖÚ8¾M¦ïZ­V«ý®yNã3OÔ´*¨˜9U†ËHdz$ŸÂc„šË¡\×e¡î©åÀ-¤ü€¨™Ê¦`b¶˜;„wêú‚÷ÎÞ8Ð1Ôü?¾3õӲȢbòSø¥ŸgA ì•é – o$$S•È+*‘e•ibc^ˆÛÍf-îk…]L&ðR³®»+ÜRM)ï+À77]b ^žs9¿§šTx#DUÆr/õRÊ H,DYD'G¸±š(ìzºea ú¥•9ú‰zPøúi{ÅÕ¨ÁX±1å³»~Ïõ›±‰=þE^5H÷OpòŒýÏÐ>Ù¼¿]uÔïoÖ¶£Îè3‘µüAÈÉÐÅ&[s\Î@i<³Q¡·…ÖXÊ/•ÌtÕò醲´ë/Ö£uqavé¬].,ëâùÉGø÷Ýè9êöëéA¡F}ÈUb´8’ÆÏ)=Ÿ]íØõÙt:ßì„f îÔ¦7‡ÙóäÔ]‰ŠÒPÓç§'—æÇ>!a›1òŸÞë!Û“zÕenMɯ*×[ËKùv*£‚6[\ìG¯Ÿ¿ËŵÌl¼îNu±È8|¥ãúŠ„õ(x¹Þòóúqù€­îýPKvºZ<†YÔqàæ¡IAR-STR912/include/91x_map.hUT LjKLjKux êëí[oÛH²€Ÿ'@þCc÷a“L2©›=y¢HÊ&"JZ’vC‘i[YòÑ%—=È?}á¥úÊ–'qòpˆÅÎ ÍúX]¬®îªnR/Ÿ)ôÄŠüÉô]œfÈmµz(ÍâÅ|³Î—ù|·Y¯ó-R‰>~ô Ëg·9ªŽ?ѱóåâvv÷Ç ¹ÂÛïnÖ?QìÈ»»[.æ³Ýb½BY>»%³]Ž™›íEÛí>¿$·º/£—T³?Ñy¾Ù çÈ·óÍâŽB*ú4ǧnòÍl¹E›üz±Ýa!t™_-V zålu‰nóÛõæ+ÂzÞ-V×`Øw>ˆz§øÞø.’ÇÍp]ÒŒ>× ·ü[Gn¢SüM×ü qv¢i¦á8Céd˜½ñ’½9üS¥h8IÐÉYxc?D“ñèò¢8E^†e&çQO–f“8LRô&ÊN ÓŸÐ?Dc,{Y4£$<ñzß0Jˆxpæg)¾M’ Lè­ðßb”MPê‡(‹âðä¥Ô©0 =eω¯F~2 G¡Ÿ%“qä§(=õF#4ždh¢Óp Qä F!Ezãw(ˆ|õs|/öo„ˆÿäOÆiøï3ÜòÈ¡À‹½“5‚ÜmŠ/$º€?bÍN¢”4a˜Lbj8LȰ8å Qz†VÙÐ/Y“ÐY¢Ø B4x¬…%C43á8ó¢qà%!6þ>7ÆJsR%yK~~ùøÑãG/IŸÃ)G»5ºÛäŸòÕw²ùûå§-Vóåžzè ‹æ?W+Ü7Ñʼn±7½ÀNóÏKvîd}mø¡ò*üŸ(ÿ‚{ù _’¯.WëIÎVJGD±Ë|k¥—ù`J3úÑo¾^]ýqóñôîë]NO ¾÷£ÀmÒÑĽín³ŸïöÜvýÁˆß[G´òƒaÙ<Æ$f%NÀöøÑÿWø´o»h0H“We“°ëõ f«(]ü7GIaUã Â"0a¼^½° BO³wÎ+ “@bM̶9ò./ñ“ÙJT^§!餥ˆ:¹µN~m%Jô×+<Ð/µ’uJBº›íör+ „v½ h±‹þ«Ý ±._Q6Û\ç;¹a„ðøËE†Ý‡¢W&7CÈ[Í–ëk¬‚Åõb7[’Æ~Ê7xXÖzœÑÍœg¾fë•mÆ‚œoϹ«3[­rªáÕâz¿as#®éäÖ ÓŒ.®ñôe7Øv7ë奠šj× ­?8¨š–ðM[ßÞÍ6¤ól÷ËÖÛKP·I ‚ð qV‹_á§XZ­¥õ ȱ9*P‚\;«APÛÔVŽ!¨cê(²I];RWIr ©gGê)I.$õíH}% x÷4I!iŠÝz>[bÊùl¹—"»D"îý yo{w:@Þt€Iœ„ü€LÇceüiâ„n³¸¼ÎMá— ¹*YM´d§^G±:ŪBt¸Ùàg±á56¶Ù^e%ÂÛä34ÎwŸ×›xΆAW³9x2÷ˆÕÉ«ß~û̇+†nIò·ÉÿgŸo¥8d Õ±Š϶V7DêØœn†Ÿå8a¸rìj9n#ÄiO©·ù°ØáèG ¦=¥>ãê9 JÇ¾Š£bMAš5 ¸;á^æáäQ¶´šc5k š'[\̓!{ Õo`­¹ZÖ :Î{·ÿ s¾7¾ˆ·×“ÿáz¯qVDŸ[ÓdÒÐÉplƒ hšTºY˜Ú°¨4_ïI,±èª ‹ ²‚1XìP¶¸]¬®ÕººW Ë6û»Š.qʼ¸ZðêºV¦¥&™"h™4kLËæ$Sâlyµ•¾Òßþ‹rd—@[ößïÝ¿^ ]ç½Óç²·‰S¶a3[mo[z÷2‚Ì1GqU”¤ BŒÓzï´Bã Ôgœfs M¯3MrÆ+R4]MžàðúDSGò”))e`§ã3Mp¢©«¥¸fJ‡×'>/õ)c0ž#-.-)§ )®Hñ¥yˆrzU²Iô^ ô+ÆÝVÑçlµØéò;ëÉ–?zí³*Eõ—ëùÇ{$ËÓÑÈŸŒ‡%ÿ§iҥŤïÒ4ó²32‡%Ñ‘5Ø.ó†Ú¼Iâñ ›ËmhŠÏVøéÜ’bž‰0QæÇéë Sû›fN¤ÓÆ?I&umÌ+™µO°…`Ümé1ÎGƒIêl“ÇàÄ5ß©ÕPb+ŒcÄÄ'œ6ÑåÏðÖ—Å4ÏdãØcfú•>|£ÂÛý’9²î™‰ç>‡ë >g›º÷«º•ð´xŒcqL×ãª0ªÒáÉ4šLβ÷G½b\rMö»»}íCšª.PŽHEã‚Ra¢•EÄdï¦á{§…I%†çFŠˆ ã¨î«ƒÏ ”.8®U³4óæõÙ4 G5æÍìcþâì® £ª`q·ž½úycOДg×è–t}lc9oêŸÙYxÔ b¯,_|fücVšøµî:]ï7s]µ˜5S…t€'W‹sceE¶"…ôh±šÌ/ñ?ɲ.éŠy/m}Ð…*i2ÜjG[NºaEiý8Ë~ÅõÂcC_Ð|¶Brô¼õÜyî>o?ï<ï>ï!ì£ý?P†ÃVŽHU3_\ßìÊ›niågp–’øZ¨q%„yB]ù›3—(åkÔõðl1_VÍüˆ[Éò ΃hgT Xžãë95Æ_æ3)À•Œˆ¯±ôβuÇ7r”z(í“ÔÉöIfŸ ÊA}ÞÎDкm3ö9N¸š}Xâ¾W–Hmí“øú}º¾Ú}&®>Øoh ª¬Ÿ)8©†“â¡}™›A3 AÎ÷±&¥8Njà4(£Íx(¬oXÎçE}Þyû|]ÍÉ–›ÿÚ€êøe9ÜTÁ&‹bRÑhŽ3õÕÈw¸°i…?»£n˜-ê>‘ï ®J>A“bžT®<* mqMC®}3Á9l«O uSõ*££ƒô Ä5C\”Rí×zUõÓoÄÙpP:$+Ûßi>TzRú¢\Är ÿë|©--K­À%*\’Ï.ñtÁbt#NcU¸7›†Xón–<€+|˜ ÈÛnó .A¾œ}•ÙP;ŽigKS¯?œe9…kì7â$„pcíð„m•ï,§YÕÖ¡Øó+’Ózo‹aÃq˜™Û³tïT,gÚd5ß4ÅÞH#9Z6ކ±êUÏ7Þ/w‹9u7æ$G&IñÆP2Š€diwÀÈÚFQÀIò+ÁJO)µjžÊpCö®êç›ç#PU:ycÝÒŒBÒå%ÝzmÔ,g© -Wì6Ì"ãD”LòyÎvÇ*¢6›?ë.°‹ÉIHLn¸¬“ÛR„ ñâžd¥TÛ `I1TAÀ˜&±Û2ö¨=“Ë|TÆÑ‹&“"D¬ý•ª?Ñ©?zýMñÿ“v‚æ v&—ÝÝ-[›!ÕLà`ó63 š|¡ÍÙîf«… ·{ÆÈËkâ)51nb“ ãÀãfFdœÙU[¹qÎcª1àæ¨5ñ÷› ©_k•á!™¯Ò¤„Ðw……‹ÀÄ´ÝAENnDþ†»Õ=º#:ó’ì;tÇ@ŒuÍþ®9 4Iá*0YP"zà“ ©ž¾d{–„§òä3Y2~*wÝ÷Çà~CÍl·üNU)âK£)ì7›À#Ë•/Ø>xý‹B÷ïý ’€ïœ×6˜íñL IÁâÓbkÚꪽ Cî&Ã͌Άð æàûÈ۷7"ŸÛûÊs¶Rüáë.×ð•7³wq3Õ![Œ7Ad8JU“VÐGù'²=NS¢i¸É1–MQù¥qg¡é&0ÀÑúÐ`m{‡ â‡ÆpÛ»¸ÊØnÚmïÒV†|Ûˆo{úZ8‰è‡lÇúþ®|[àþ#ž>"?Kè.†îfœ(®íazgŠdµH¶Y\_k"%™Ö"†Š'RÖ*ެ0õ&²Þm_Ù}7¿ Ö×6; ›'Ä6Ë0ºN9.õ; “Þsð‚Ö„/¦¹þ8{›  c¿#[ ãXÌt¾h£^s€×ùW£‹ÁñûOp"øÏ÷=È×»tG̾A³oСõJ³äØù¢ Íø1ö*¿¥å.È'ðÜâ¤uqFîø¤õ¥{Ô¢ÇSš&Ÿ^Ò/[°H´ÐÙj°¿ºÊ7xxHïȪ)AªƒØ1{vj¤Sëè둎½ŽN­£h¡#Ù¥xV?9Œìw’ìtmT‹îtä=‘a¡ Yù4€Œ‡š† ‰È°±I¹Ýì¬Ò„˜¹S¶§ø3²°LITúÀV“lµªTjűH±V,´ªMUjÕ‘H’V µÎ#ßÏ Ã†P­4Ÿ¯W—3BÈ…ÍÃWµ9JÜt³¸-`Š>­Òo(9x:ç:xƒÁ†’ƒwDƵ&ª‹õ¶|Ëöëavk´»É‰¶ÿBwàK£ªéãxi¬W?æ§Ü…ŽæB‡^ø`Þ֞$Ž}˜­>ê_!ýñÃÖaо˜ Ó¬rEæˆìŠl±àꊼ¿êRß¶*`\ÅÕS\%ÅQQZzŠ£¤´T”POi=\ïÒ»‰uçúiÞ ­ÍXÑQ<ŠúctªÑ³ø«#£¾QŽÎ€re”ÂYëÒPmÕÓ£d¿¨ŽŒ:Ò£:&TWFyzTׄêÉ(_ê™P}¥èQõwé~…ç®-´Ýx±e冟ѣ𠛤ëu<*Íç¨Â¾!þ)OÉE±"¢¹*¹T PÖ¶à(ŠøÞÑ\%@1Ìt5€¶ ÛZ @O —*ŽèëŽàJ€#ÀUÚàXh+ àé% +:@W èI_è)} è}%àH„:À‘p,†:Àñ2s(sÌ¡ìYˆ×2Îpd„ ðÈCd”+£øo\-‹ºDÅœR|pãPüæ<•V¤¢-™ŽŒ¢H®ÃMW’?@$¢äÀÓS£\#*M§Š‘¤¯0;¾°á ¦SŘr¤DEfùâ™ì Ç2 _ØàWäKµ2Ê“QøÂ©’ʨŒÂ6 "×W˜Ý—QäÂF”Âì¥øx“õî˃0›>óÊ!ô\›xàQ²âwªσEuöA`˜Û‹p/‰ÉÇOøÈ$Y(”°J ¨ˆ?%ÄÒ /ñ úÎï½lûí[Wkå:T]~*ÐBªF€–kζBIâÓþhÛÊVbfz` ‘ Ò/j!ºŠ¢°]¡!s݇‹€Ã_×JC•h™Ÿúù}%Ö®ÕØñ“†Òµ#éJ(’†Í­×ü£æààQsðÿ£¦í¨98tÔ|@ÛJ㦵ßþÔQóA-$œ¿Jß6šl¡á¯i!ÓˆÉ,Tÿ4`~ßôшvÂyù}Òæž÷ãL;_µ²Æ,ø¤ê¿«ßž*ÅfqÇ î6‹»ñv³xÛ ÞiïÄ»Íâ]ƒx¯Y¼gï7‹÷Kñ‡ó÷òû[.^X¸üCS²¾^Z­Š®¿ kõOe!Ç $yw)ä„$Ÿ.…Ú¡öÃ?Mºl ~Ð÷_ìQΪµŸô4É:¦"ð×Sáß¹åN`hº€)ÏÎDÉj“UíãQˆJ>A-­D%Ï Ë•V¢R¤c •œ¬J´^Ïd;Y©µlyÒJVj.[™´’U¶·c'+…u¶i%+Åt¶i%+t¶ i%ÛWÉÙÉ©díd>î°EÆ{žwȲ£:î8Ðjåê$°7Ye´,#d,ÝR)K·dKˆªGÌ Ö+‚¬ºûK²R÷g‹„V²R÷§«‚ÊhÇ›©\<äE5áY•4&«~§\„Õ”ÀÊ!ʵ@ IÖô,$Ë¥? I—ðšZ­ôñ¢66ªVö¶Ó×G4Å=þ2'/ã°/}Ôé+ cúáåûkÛÅÄzé/g'¶Æ-ë¶Š ÅAÁZOžð? Šž=…_.ÚÊ;¥¼­ËÐdÁæBq&/:À:]®õ)'χèBrôƒu¡¯ˆº€ïܪå«L‡›¶z JˆVÂG¿‰zp©á`íî¼ê—¡ÚñAŒ[×8D»á}LJu©^Þùi;xÄ´?'YriÇ|üÐz4Ûl.˜ ¼[ŽÍU–|„ZŽ$~ïKU塎Ó,&Å)¶›¼IL Oly“˜4²ã‚ü 2–«ë;báÆBPjÛ)Þ,(µíoT¶±c!(îlGx³ 4ž³àÍ‚ÒÎv€7 öU‚G‚G*Ác ÁãRðgDç—‰ ò>ol.ð¹6l­²xÃWed)ð ’Xª,Üp©mOžÄðV±t'y›6–Ÿ-ÁRuÁF¬ÄXJýYÞ‚­”ú³¼áš¥þÔ1JY¦ê/Íb’šòFj,~x‹•å¾î"K‘* HJé!ÈÛ£É0S‚‚ 3EYF¨·HRàËÝXª*ɵ–f1y:,Ï­&Œ†Y唎í-c_è!å ë­eöEP!U‹¢ððøQø6CBY¡<ž½‚«ù¥$Rñžy¥`«Ø@ Žgø<¯Š¿U_ÃÄÔ¯€UWJÔºd Å;ÖxG‹wôx×ïÞGû¶5¾}|ÇßÑâ;z|×ßÕâ»z|ÏßÓâ{z|ßß×âû¾ª0¶”“=¨ºŒ×e 5Õ±£:jªèåUuÁŽêª©®†Ú¶£¶ÕÔ¶@Ź/ãÁ”Æ$|ž'Ñ,œcœ•A`R !ä žBSa ã4b #ZçvŒS>HÁçyIyÉô&WB®à)4”0N#Æ‘0b‹H&؈q%Œè@$3lÄ´%Œè14Qd.ƒz ª_^æIN3É‘I¢…h*ÙLre’h$š[6“Ú2©-÷4Ýlfud–84Ðü³™Ô•Iâ(@ÒfRO&õ”íë7³ú2KŒî4im&ɤ#鸙t,“ŽÎð&~ƒÏó’6Š6£ÀDRðyBA5†ä‘¼*q¡I¬T=‹Eb_Ðd1¸¤ 0è%<†¥™2Éi&92Iì³4]l&¹2ÉåA$,l DÎÆø CÓR ã4b #6 ç—ŒÓNHÁçyIZ…Ì#(8LB!Ÿ2˜@|ä8÷,†A’B>/ ƒÁ‰À ™(ƒÀTBÈ<…&¸ÆiÄ8FšVá$³˜ûˆl)Ï¿—ɹֳò¼0C"¯ŽwdgÅ䜾¸8v¾à[M/Nõ[ÀÑÿ)ò'ÓwItrš!·Õê¡4‹óÍš~œ˜ü:ü|Ë–Âq€&C4ŒFaQŒzüèÿPKvºZ<ʧ$ݤ/IAR-STR912/include/91x_rtc.hUT LjKLjKux êëµWÛnã6}n€üÃ`(²A_ºÝ¦É#Q6]\‰Î"O†V¦cbeÉè\Zôß;¤.¾Ùì–ɃHž9gf4Ñóά`£û †úÝî'ˆ¸'“"©HT‘g2)áééÉ982àÇ í¸†?zÏ“B%—s +5Ï Ø×àY6å2•I¬džñBƒíX ä,J¬,WbªÁÝß:½«ŽñìîDQj‹Þe׈2)äÒ´ì|.K˜iÏ–Eþ(§¢5r Rù¥ˆ‹(ó™zŠ ³U–hëR³È¡rõ²D–Ÿa*f2“ÁÚ…¡,U^¼\ëg ¼ß×ÿ¾x¿Ùû¸Ÿ”^½w,aÿƒÇ|HaÒˆú¢ÀáŸIHáóYC`8Aƒ1³‰oQ|÷ó" m‚;f3Ö8âGÃ>3>ÔœV`6˜æá,ð!¤šUd¡6·ÇAhÓÐHáž<€ˆÜQàÌ£—@"S†H]~¡«›Ya@]jñ0ð™A4$® ~Àá–º6¸ŒÜºÔPÿl"úµª'͈[VàGôÏ1FΈ 6ñÈ€VAhµµ/šÀr«°Céœ0ðL⣹ás cÒÚßîT!Á8¢à›ÂíýF¶Ð¢âØMV•BŸæS )& ÿqÍG§t:“Û™¼üáõÑ9=9=éèSЧF€Êñ0‰G‘)(D²Âº| ³$]™ ýå5Cs¾—³ "L&ºÓ౞`ѼŸV"[‹FiÝ^%ð õŠÞi¡E¼¼œ¿«•F…|ÔLw íàw*54¥*V‰:=ùûô`u fpU¼ÜÔÓÍó"ÏÔ¼™Lãó$Ä×júNM8½ÑN“˜çøzZR™­”h§¥HòlZO{Ÿp;MåzÑ裇Ï?WØpîub†—¸$ônêtÓçe^(üH ¤Tq¦ÞþŠ«Rmjè–ù$¼‡îÆ ~°z•,KQxùT˜j¨&èvgB§øIì>;fPç(ÐÅó"°×Ýdåéarܘ åÃ\s<pó'X‹;·óH2ŸÊÄJóäë.;nNúÿª/žöÇ>¢÷©†tŸûGý« ‚îAtû ¤û|ua³È4_DÔIÑ;Œïú̸†Ã¦CÝ=Iãbk¹}D•·µËšŽK»ªz­ÕmHwi ¨‘nx‚õ:çµ¼)o¬•¹ÃTMå1.dü%}SÓAl˜EŒ÷»ïê‡5cÓñÚkÔÛIw}ünJÐŒ¹œšlÛ‚áÅíLÏ?Ül¬GBé[çYÓÍtÁå¢Bè¾z¶‹0/û¬mQ`æ[ A-„MÍÉ‹E¬. Õ<ßWÔª;pãÀù¾ ƒÆ…|åÍùªÊ³òl&ÎV¿öaÝ•.`=džrÈl1=sê§‘Ò5à‹'ó°7º¯F[1^ÐMƒzµIï6Vj”?}ƒ[M3d™ÚÈÀV‹ÜÂ3¾«.à¿”œ4~ГUÙ¼žõJK¢;Àvü)~Ë5pò^dS9ƒÎùÆý¦¹_íoùUG}[ß$æÒöΦÿþPKvºZ<]tvjóIAR-STR912/include/91x_wiu.hUT LjKLjKux êëµ—KoÛ8Çïòí%)ÚØ¢ón/ŠDÛôÈJt‚œÕ¦aɨ°£zŠˆÜÝ‘#cA¹<ªS¡ÍBl_pÂç{õ2Ä„ yò3-páD!÷¸#£0N ñÐö<B g†ÜsÁö™Çëvp®ˆPýs5¿((šœ0ˆù_#ì\ظ¶oxÓe;G!ÕB¯i;1µÐB¿‡$º×ñúÚ’¡¸¦%Å|ÛåpveÐB&ÆkX Â@Ú"à.6q„„8`Q„³.r•ä{¬êÎöÖöV‡>Õiš)Ð9~zê^e 5®pmÞ+H³ñ¬ªWé—Ÿ@1?¦Ól¢¦p}MÛ ~¢×¸l>Nš$+“uvA&ø±ÿL‚ÿMö&| DwÉ|ïöÃ"œç…Æ­«Ù\Þš #Òþ#²TC©‹j¬+Ü…(6,š%=F±½õc{  :n6¯kY¤77ªà“õµ6ôXcðȧþ¡J!1¾(š[mwÒR'™þý†ž›IþV_ª9šÂÒì×¼ØE[TR÷m4RáÝÇnwÕ¥åÒJfkQµ™£|“zî6ÑÈáµÉØYʾ}³v×%ÌX›%=CÂ6Kö Io³äÀìo–’ƒÍ’#Cr¸YrlHŽ6KN Éñf‰Õ}‘œ´H,] ^‹š¾VÏд¶ö M aëÀд ¶ M cëÈд@¶Ž M eëÄд`ff«…338³¶elpf-œ™Á™µpfgÖ™œY gfpf-œ™Á™µpfgÖ™œY çžÁ™µpîœ{ Îï´qúù¤Â+í¼Hïé–|Ÿiò}ö['Ì"â²Æ»¯ûâ¤:_÷rÍ~kÄeo ÍMä>O'õësx;ô¼ûÕ˜ë#´¶½:듸žh4+n¿ìàÜMvú‹¦’Y¬‰[ š+ÊÊT³ñ¥È´*Šj®wè^x$îÏ’r­Ê…‹~™Y¿Ô0SIAÂ5‰«ÑžŸÿ'–ç*›à¡|–®×ˆŸ§€ïÕ¸¡Áóq}üʧô:xþ4\$1[³Oâ(\¤Ð$z~ö+XášÁ,Ø0Ø=à·îË< ~ùDK´Œ?Å ¨Ï˜êhÛí:\<Œ#ðY°¡ÅFÀB“”ƒ¦[ÒâÎû«îðJ¨ö>±$%‰îeG°t‘„[ÙÑý§0…©¶ˆ#„Q Áz ü‰Á*‹´8…mó˜¿n.Eýp’xϽæúÆ+þ$ ÖáC$¯—¸ü?¤À8Lyœ¼~ ¿ñà½ü¦tð^1ׯ¥›Ï2Øß ±?6áÎ5=sæƒçXþgÍ5áóØÖÇ`{`9.ÜÞÛ†6ÓMpf“/ ÙS4eœO¶aÏnA¿÷|gjºá>Ûþ=RLØ3Ÿj¾íÌÀ5o5WŒâ†¶KâÆ½î{¸×0]±ÎMÁwÀÓ>™àÛSóRø nˆï~â_{Ûºë˜S÷]gfëxcm2™ãÃÈ„±91`bk£‰)Úì ¶‹«/ˆeÏäÜÕœyæîñä¶6C›j·¦'O€»ÝÑ*Ô…úDÛµ=:‚å:SÒ•€ñÉvŽÞ=mgCmf\É#Á½gÂT3L}Ù[‹$hRKê¶·a5{fx ×D#Ùbl†JÑ´P²lÉïÑWçgçgW¥«0bÀcŒ:öE¶ÈÐ/¿1£Å:ú61 WÑ’­`>§TCÑ9ãèRîRûÛ´Ç#½Õ-ö—<ø'í´ ¶—OÿÎw2_¶qÂ1oÉÌòWwB¢H>–m90AÓ­EÙ†%2mÒÚˆŒAãçgžŸÉ|5'!1ï·ð/è¼tð¹@¦À¥á ºxxå,½ck±EOŽ |­_к­hýã´^Aëµ¢ Ñ®÷º]·¢uõfo¸>´Â©gýo™ö1÷qŸvrðx’-x†%ExnX»ÒT,È/5Ãñsœ,',zäOKã·£§åÑ» ù«»îɱQ-]¬´å•ã YR³Öñ³Žu3‰×åÓxY¡Ã}¬N~ô_Ô³7¯qKk¤ÅÈ6>Z“†°ÙÞj.fûî?‰Ÿåxw40ŸÄH±…ø î¡F.ö )"þöèU#;šäu }‹,U¹Êù{ãl6dœ o{xŸqLv Êö¤ì ¥ì*Û—²7-e‡ªì@Ê+²{K9hY¸î¼»ë¹:/–eݤ¦Á6sü9Æ@îØáñ$ˆÒMÈñÒè–¿ó ¸hY´„x«„šØÃŠõÅðz†B13zùŠ^Øib<ÿ=š†”!]WVŽÏgñ»2Oñ¨\´°è!„‰5ZuÇ<.ŽžÚÜY.›vï N¶÷x¸øªì>”ÂÝÊ•C GØ’Ò5¢bö¯;?©—£eÎɱË¿ÒU!>AŽ2êº ãºÂç,ëSiÑjx7­Â-Ë´v-EzØ 7l%ªºÐh{;â,I²-¯v¥-lî|£u‘™$q²”~~þ|Ä46ìt¤_q£„_+°âVÅ\{” ã «[Ng­aåÒ «3ÌÍ(òlk”Ë ¿¾øá†9¯×Ð|hàŠ6L?ÏEõšõÝ‚ö 6dãnYÃ,Ãs›²º¬‚8ÙŠ¡MŒ¾dèFFžÃªŒÞ.µ±‹Ý„èJ“ØM¥™›jàqPƒã¬#C(ØW`+3’çD@’Û=a¿g,åXçE:yC£ðü„™Z¡+»îxXƒ4eÔ_=^ž­Ô¡ð|K¹øÿò€êź¹¾MÇ9,uÇÉÛB54 u¨ªæ$·ÔÝ‘Š¸¬€”J3Ñn Ž6çñÞuN.ò¸4äj<Àˆ]Ó±×Ë9"…Ÿ¤4¥î^7gäMÖIHCʦd(²5>‰hˆøþ°0¶}LR~…57[þºÛ½S½qQùÅ¢£Z–•­×{Ô rå‚DKN+U½oÔéÉm:^¿I§“§eékÝÊ…ã ·¥%ÇM¢_¸ˆc² ª_¸¨#²ME¥_¸•fY7x®4N;éV 89`ûGqûÆIQfð[ŽS[§0%þXáù¥Þ©mˆªjE0¨ÝS X¹{*`•p(f[ð ¿ß¹ñ íµÚCª±Ð‚Ñ䉃"ÈÛ0"a FB F“WŠˆ ¯ncz≳J  e'†ö©xw¨Ri¼£Ô¹tºJÉ} '¾Õ}' üëà&X$ñø]GÜ¿’|#Pÿ[.ó&ƒÑ/¨?Ëß`åoœ2¿üòQ]whÕÅ~º4!FäoÖeÛãÚKê›e³Vn“`íqz%IÌ,d‰v÷GžàhqâÓÄ„B,'c ‚…ô7» ø(zs3/‰i@=‘Äó8ð ˆbW4ð!`ä* †’D7à³­0Vó¤òâˆÓëVÎH> IŸ6EèhC4Ô¹h/hÊN×%ô’84Â!ƒ@wÃ×>BѶ’È?jJ‚§ŸÂÕMK-ôh8ºb5F‚°ˆúXPBQ$üǹ“Òrš$m%ß~Gíîè¿#ý™Î³\‚*ð³“+™+(å´Æ¹’åÓEmöè_¿0@³îeó|&çp{«[ ~ž·¸möfMkÒDg: ?ô_ ðóÑDoøàtŸ.ïÞug3e&Mxú°,J…½¬é6¯ Œ‰ ˜£tJ–e½TFM¯U‘yÍôûîŽn\·,¹>X?öØõîÎ?ͬP«°˜É¿»YbϬTš«?Ï´Yxälg]NeÕÌmÖhâ÷×)lzìñÈ' œ'$aòÙÂ] 6xòb;8¶‰?Z cƒŸ,еÁS <±Á³'pįC =·ÀÀ/Z"x£Ž NK"QaÁNK"?$]×–F‰ºhK¤Ð{¦}K%âwa§%Óˆ$ÂVØ9µQ[bçÌFm–RÌõ:Kç\XhgíÜönâÃŽ¯ëXh×·¥U0ö;õº-­ÑUÃmi5aÝt[ZÑÏ‚Ùb¹§ÔÊË=ë –Xîyµv¤{aí¹‰×IK«aïúÊ®éÄÙöpl5^©–e¶Ò·´UZfé—Å5´uÛ¶œû¯›oчëäž®y¯eÜæøjJhZàªÈf¦û’å™Ú×ïï± ÷éW®RUWíK…»™Ø¯S3ÉM/}Ù›ûoX7?t٦Ʉw?ë@o­FºÐ Ò`‘üf^,w>y%ÁïéÒ˜jšÿr«OÜM‰^]–xÓ`úëø ¼6¦Ó±JowÿvVŠL÷v#”ØÛc'KSdÊyµß¾¬–h™§8Uqû¡=žÉmôÒÓG§sóL/s2-Ÿd¿‹›ö1êæÐj×Z=á[‡];á/«,Çøh&:Nõ? sõa¯«6õ2ü«õÒjY°MqÄÚ¬]c Ö©±®;¯±k Ö­°¶-–‹ ëØ°Ë ëÚ°« »¶a ¿nˆõzæÝxƒŠtUj8P¿Ô„VµyS—LÇe±—¤_çûVİü•L,¡~K­j;-Š]]Ä_ëqíÒxjXô(-lï¶5ª*/[Î}ƒvl'¿AÏ =ç™yÌYÆdÒ²·Õ–ж÷֖б7Ø–pnï²-¡koµ-áÂÞo[Â¥½é¶„+{çm ôõ\·ßs¦æõì’4kN7]‚§/Ÿowy‡X-¼˜ÐLÏ}¡jo+÷3Ëõô d<¿;ÃÎd~kóóÔr¥åG¤°™ôt'¡ƒ*cœ¬ïL8^s²t¡¾öêKoœ„š.ØžünöùxœHm²m{Æ ø‘Lõs"Ó¹ZNûo0¬¯ï׿ùïƒ{.]xzbÈë«Å?PK vºZ<IAR-STR912/micrium/UT LjKʈKux êëPKvºZ÷Yƨ̃áÇKI˜§“Ä÷DÙLõX‘‡ÿÓ/(ýþ;ž>%)ÿ§“q¥¾eêŸO¿¬õ­ÕɧNÚ­+ø—¼?!Ÿº%(Êè>)ýI¾Âú÷ú‚sî–CL[ûJttˆµtèl‡\SîV̯6¬›r ôÿ)ögsås_œ+óî¨P N}€¶:DuWP Ôþ7M_aˆ Þ¾æ'?Apm˜,ˆŒ=f™r8˜FʸBpøtÞòYwÆ .}Ó3V¦¿×j¤?©&ß~ßÉœÕ`œt2už¥–2“ú²(Œú%ºwÔJ~ŠŠx!L&ýQŽžpÜž¤ûè×p2¯äõ(]KÊ*@»ÃiÅDóÌ —謇ã¯<ÐFÃv ï¡’|  ;CÐg,ˆÒtÑÃî f4m&=a.ù¯³­Ä¤»+œ@:Ÿi(t·°‡œˆ³KìÐ퓢;ÚÓ—NK—+å3F2g‚Ž¡òq6œ*CËðæ+½§_‡ ø_ŸÅE/ižWß§Š =1]’…÷©’óá8·$¼O•”ám^Ix”ÜY-a2¸œˆÔ‰IÓùt[)çm,BŽú=*Ú€Ý~kžå— Ô…Ô)ªA²òJW¿êNX>*›_4ZÁ‘(]:]6*'KÊ8¦î”r£pÇ8)v ƒ'é ¡ÔxÚ»õé0ߟ̳˜z†»ê+ÆÍ-©”+;²ïI½²Ò—Dá¨ìºµ0®Ÿ½éÚÖé×ìšôaÃQ}ÎnYÈÿ–éïú vXì¬f°®ÒÓ]Í1X¤ò3ÁO†jB@ãÒ(æ ×2ˆë¯V6„w+UûªÞè¨àÜøKã\İlK>Hºç;‹<&¶§ãÊûÀVÝ|K£Äƒ%³+hªi²•ÂÛwˆº‚@F£Ë…l½ïJ‡ÈNÇd ö×é0êÂE5|eÅRÁ Ð·èœ‡Ô—öÂ7õm¬Ã1û6G`“¾ÿî7æ™^ÉQ¼hŸ–r§šg,Àϲx©ŒÅÑ'™®‚B\ymÜ4—ÊTѺ­©™#[Ý£jÁÝk7TbEœÙ'œÝBžx bìŒFqæ^òÆÎBÞXq¹hô'è&6ÏÖá½Ï¦ÿöר7Ï»òìA5]ÛᤌoxÝ.ä(Ü£,@ƒ ç'QŽ*¨_ ¼*ÙåÒŸÕ¥/̺½ágÆ•Pͧ?s9`êC€b­„F(i@ʰ©k‘¾Û÷V¾GT7–] ÃŒƒ°«àÌÞÿ ‹R«¦Öpêîâ„N0C'x«žPdýW礑³¨ð*»Ê¿Š—~^åMȇÝ"¢ñ ÑHÄ™ó_~!o›ä?)ðõQôš_é‚ćh¾´›\wdòÙ&LRØô³Á?ºâ½5ÕWKMH¾é9?»±†¡9ˆ¾x܃®:<œ–O ¥8}áuYÈrÀf aFóFУ<dž±1Ù“„qÉã9 uÇ9Tühað¥ô³ ÕŸ_O0…$+`yú|L´Yú.ÃT–§ÏGY£ï‹‡Sy8$^rú0Ÿþï»í|Ne}6+~A¥C \Ðxâü–Ÿ…Žb˜íÅ RP¡ÝB†ÀÈÌ2p%HãpêÿB˜ôF}©ÑÜ#÷·†v‹ºfªËܲ]E[ùŠzàæ:ÁÃÞ°A`Œµ<ã<¥ˆGBM ÈïoUeVt„Ê1ËPª¥ƒoê77:̲<³]×@c9ì±EvðÅÀ¡Ü[lÚ÷ù)tÙªb$žœÇIöšÀ—\Nä¹·kË_†©2¸¬Vx&õý¹x¡]ÌcÀG5q>6 €kãÊXømMà¡ôlOj†9Àï¶µäuf.ba ­ðñ uî$·º†~|F'‡˜Ë!>*sIû0v}îÈù9á~*½îÇf6(‚ç»JÌáà;Ä‘GL¹ Ñ$¿ÅátsèMFÆîÖþ‡¡,5ÉßÎI \"ð‰ðm››€Ýô9ÄY]P3ö;¶PXñ¤¨ˆ¤µkrÔjo€¼SygäGu‘o€ü¸.òÓ ¿­‰¼ÝÚùIMäM¿«‰üxä§5‘Ÿn‚ü}5ò“õ¼]£_Ÿl¬èí}ôdcMo×è¤'«z»F/=ÙX×Û5ºéÉÆÊÞ®ÑOO6ÖövŽz²‰º/ôkÕ7½4ö° þ½Ûq>{xr×¼1ê¤LƒGºc××ñǺ¦CFK>Ò#£8vØ%þžÉ'ÛÀ#{Bì ½±'ôÅžÐ{B?ì ½°'ôÁžÐ{Bÿë)½¯§ô½žÒózJ¿ë)½®§ô¹žÒãú¯ò·¢¡tnßܘúº>—j²ÃÍ‚Bz& Ýœ€þÌVf½„Ñ(vûÐç¢õªð¬h™~UXns¯*İ»>S„·*õAÁV÷]Å_­ô0s¡ ˆißÓ"a?J"ç¬ob¶vR92|&‘ÆÒ}b¥‹ZÂ\“4£R'qfÿz~c¦ÿ>§>`Ú„d8(([§päMS(ñCCk–&¶±š_»Vûຮ¿ZÀBçéXÈŒ¢,? ™Á¶€…Ó§c!3&ç³ÐN'iý,d†î|:OÈBÆïÎgáø YÈøçù,œ>! ?>ßšUڅǘ¦2ËËóPeÃC™}äy¨² á¡Ì@òðä–oÏXêÎk7Øã®ðá'ˆèKº«{1å(?·5YÚw}– W„(%ôs:Ûšž JDî ÓŒ¶²¢î G fá~3òÁÁA$<¬§Ó¼Kĵֆk Oq1ÅK4ƒ£ß®‡çzÀˆ€p«i$¾ì9¾æQ^qg…n÷ê‹ñüî9§H Îå©^)ì@‰¸<'M_3ƒFÔÔx—<æw”ôMWWFún*íûÅðãE(›½`1;£é— Öw‹Â\ži4θóg0 >N(Óðø·³Bi±Ç…DÛÇ´~ÌYgEiƒÍi¾ÛÆ9i{j&¡2ûx•Aoyf7kn1¯2iliËéÕ'®1¡ã(S±­ˆ·ªeé&®Ùí|žq¢¦5“ZþT­‹)›6ïéÎ7oØÄñA ØH^F3g}§è Çú~€à¦»º~¯í5Å£6òx M.ÒÂ×éÁ<8z4U¸—(¦ò6ØÏ)š‰=¿…1øÖ60Ywì¶›³rï6G!kªÅ{ç‹(Fø£ˆ‡ë–oû.}{ÆË…?Ô(~ùAûÑ­¶Ü÷9&Ù@ô)ÆèAî/©§¯7S”ªÕéÕ…F‰SAÃ^@ðØŽ ðH!S½Òé0?ˆŠ(†ëDpKCsìÕ-˜°Tàšï’åá0δFrÑä—Y´¦p Éàäóó.Áä BTϨ0ð #ṑ"ÓÓ S±ñªç:TÞm>O‘ÉÌ—Îz0°ítÙ"ýØ:ý‚ŽUôŒÄÞ_Êrô_ÄÖO±§ŒðúÆõ7 †[ÜhšŠØËo"¢—àð•lÍ%ŲI{ÙŒ»÷9™‚¿oíŒêÇ(Âú¢ÔúÿUÈFºíwyÚ¨ìf)”AJ`"òϯa–añÙ¦¶PhíéŠt¢¤Þ“L&ßûÐJ—L¦¤V¿A Så_ŒÒOþ艹úÅ©¥€.ÔÊ¥W[ØÝ_ç}ªŒ x ÀdªÁbùº÷z¤^GCŽXóÑ쎢ÖQÕX˜¤úêˆõõ4¾f¡æ)ná Ù‡_Èhú%¾³9º‚ìpö"^x‰ïŠhÄ1uJ{O÷‡gó!¹ºÞN¬®ç‘bw³Æù&“È éž„µŒ¬—G¨ÝªÖMÐ¥@Îá­áQ&ö^Î|iÇÖSa¨tbfÞÕÍXqL‡˜àGÑÈý‘"Ž{ŠÔÿ˜K ¦ RÇdð_°¢ÙË%ž±ª;iH21íûfJñ¿Ùa§‚r‚nš2:åø6Aù\ùfåѰ‘F¯xëö\šŽÈh8éoe»Ž&ש¹K÷êÍIµ3ó“ù(ñº½õ0ò³\y8ƒ;üê!ÍD³U5zFR¥Šê‹‡3š·>]~ÜNÈ`*Å·ŒlIcŸ‘Ô./§LeÚ4x}LIÒL`G_ñþŸæ¯Úô²rox·áý1As›þÍþÐb%‚æN¦x+4Ã)»­/þòŒ’ mi3v†ýLšvûÊTVP‡¥?¡ƒd °ìŒ^“¼z…§×%/¦ÓOrPªÝŒo¯HˆúÏïF&ŒßÎö¾]¤EAÈìu×P|lƒiŸì_A{^;ºNß²hî4 i]eÇIŠö AdþDo*9êÐwwªc`V3\˜ˆˆ<£TÿøÞÁÏo%Ú¢ìrJ ¤ÃÍGáÏä}ÍFá G8 ¦P ðvë"ao~Ý>ç á¾ôW6G—‡ÿ¼»ãÖÒç|‚P ^»ìò8—m hx+C£ób×åðF·tG¥¿pàdØi#™v«E–r4£”|¾àì®f,GèŽÌé(õc /òd¶2q™ãì…û¸Q½ÄH®4ók¸ZZÊòíSxú×v¶O!åçÙ>•t´Zën_ÚdçRBy‚ÕK• _ã¦'’¹³ÔòðªOÀF¥  ç#ÃÒÙuÈó±ÔB%‚{8Ï0T7YR.ØÝˆü>+ÀÔ·*‘Ð’ðkþë¬OïB‹Ö:"-Y-Y*‚ysž^‡x„ŒEÕÔ|3w0ݶ6O€°W¸Å¥ÌÚ‘´Á«×Íò8O[­ò`+%¹õâ®$ýÝÎâg®" ÑxGepj çƒÝºêr2‰†F‰ó ¨W«Uâ'·t&"1ö?£¸rÆøƒ[0ÌÓÕy z?m¸ažmbÕUg`ªYµÏñiy~D¹yˆÇ¶â‹×OÂñäeÎ_äqÐ&æO¨ÌqãˆEµ VÒ³x–þúS=û˜°ö*±ô{0’¼ håÕ›3Êç\+”Ö{MK[÷^È .†ÜŽÉ(ê[§_ÜŽ‰GîKCaDfx?¯8/'CQøÿö®½§$‰•ÞH6&ˆ²DrLÖ%ೋt $Ö:klÑ-ßýªªÓÏñŒÉæÄüƒéwWwWuWWýúéð»õ¿ÙG޲êùv¯b–‚= .Ý9ûr|×Ôƒcëõšm¿Œat’|á1¸ÿ!½l‡a…¼¡&ûñõ0BQÊeÐÒ䀹+z˜Œg³4™¥cäÂÜNu¾iœ, 0QïaÒ­¿žÕ¿4= ¢ž>ç¸*úVî¸*z¥Xs¾Üã²è›õ 7©è––4; `1ä*ñ}¬6¸qn†8ñ•e%]t fíá3ôV]*"j_Ï¿µ¯'“`öV†m •†fv-šGoO i(Àd« ¼íýò×&[™~ŒÌ‡^²ÙxjÚá(¹yåà]›fðzoÊ©Âe,7¦­iÞ¾àË U ±¨å¯‘úýF¤ž;"XuDŸ’tÈqYŒA±â¢£“סº‹döv¼0Á•E 2.ª³·ãt¼øiõKdçqÑyÌý¤@ÇÖ²gÂ!˜ñ,N‡?@ZžN’Mas%«õÄE(ƒ…Ùh>z0.êÝFÛ`öÓÖéE(;ƹÓÔÌß»ÅT ŒÇÉ/€}¢£` %ð2(Šfœàèz©Kµ¼–Û@õa~ì°œñ’þÃ=&læ›rÆSý¨¿°äd^½ZýBÒóR™oýµâ“§OéÛŸ‹ël!Óx:ÿ{+åðÓ‡äÀzðâƒÈØ2âÝ0%%‡°üE,HQ °×õÞQrÂ懋Û»ä×j@äÕ$þªé4DˆX(p>•§~i*/SlÐyo·Ê~WeÿÉŸŸb¼¾Ç—ª¦lô}‹Ÿ¢7É‚Þ-ó² S;nݶ„ºpG&¹Ž$ ä†5Í»‹[6Ëɯm‘rÏŠ"3\$¦9.!êÑ šð ÞªÅP)ç=‡M—rØÔà°µòV±Oü¨n<6À` «‹*˜K¸ÑwªWT©Ø`‰é‘qaÛ(}¤<¹3ÌåɆò …î,PlØ®Ô#yB:,qi°YB eSÖ¿¾º‚ßȾÉ3h‘1õH×>þ—¤>ÈiDK§c'É<›‰Fød6?G<¸( ¡ÐDÎä”XöNà«Ûm %ÌÅÌ k'p+4ßêî™"H!åÕÞ½aƺF;<üW#T†¸dÖ™®á£HÑ"%Š"3ìÏ?Í.êñ ª‚²ª ü¸ª<û2}f£(‰¶Ën]2%IIÂïÎn¦Öо+0U ¤ÚK*[Úg_úNcõxþÜY 7w9it›­VÔšS+x£—õoƒg;¼Uh«Ï3»GÛÛv„A¹cš»â©$”"·»âϣ⽂Î!æ{Š~¡¸ƒ•÷~ÂÕl>JÇñ„Ü9C|–g•\ð*™L~Hpæ&ŠTŒ $Ùk[ï2§’¾EæØALhÅñäexÆâ¸Tù|´Ë¶YíÒœ<7q4ÏQ™~¤ÓŒ‚!‚|£+¾#h%¦ÿÍ|ÆG¬2ø»­*¯b‡ñÿ PäVU6ŠYãqDæ¹Hup«*ÚþÐfÔ_x}uÛã!lù׿ö÷©´Ú­è–Ͷå‘^Ûòt»mÔ¾§xeF¬/ʸý²îty¤2Ë]s]ãì³Yþ-Í1AijU8>Ñ-ÃçýKÖ|ÿñ_ý’}¸è¶^xÆ@·B ßï¬t[·ò=Ýýnƒì«¹=~'ç*Æ!Žyÿã\üà,ô³èØí»c‡ƒuƒÕê^øëžc—+·>C§_á•¿DË'úQ`Á^²ón÷/ úÿó‚)`Ûkd× 7 : ÍR߀\#Y‰ÏÊ´¬À%»Ì @ÁZ¬¯ô”"#d‚´ »žÈ !ÅSÖ=aƒ8’¾„¼né9Ÿ•!=j^ð÷õh:øiêp°pqé”^O}â3ǃÅ5 tV†Pá@î‡Ó—*„jI\ÁIõ?ǃƉÅûã߸ùHë ãˆÌæÃ©–!4ï]ùrXfrÄ׆0} É3ÿÚÀ_²»… ¸J}ŽS…Ä߸Aü½áõ€bõ׆V© ò‹“51 ¬“\O‡è63¾BwŽÍ¡!dUbС|Á§È±…¾%蟡f Dë""2þºJ{é¾Ì! œOéF¤´Ÿ¿€4ýa.(J("8»VŽLŠ<²*ÔòHòüÎ^îíÕ -¿W?ôjØdŠcûÞK~bqàO:Ó×;föû².bŒ·\í ºªš„.#¥ëÓÔVÞªÜÞjaíÙ“VUËK—-5Ïu¡[£žÓ{oµAkDV@ÕG‰å„âÔë˵zN9ÆÀ˜E˜¤¯Ë‡|íÇ‹~r„•ýɹ¯qzþOqˆ¿#† €•ðѽjUÛW¡$²<°°éóǪ’ý1Ç¥ò B5<Û$ŠÂ_`ŧiü}$4ŠDr+0ú,’4™Ä¯ýù-Ë+žŸL®>ÄÈ8Ùší‹÷N6 $  `¦³†'ÓY#Ú{7ü: äÂk½.žìô\20:ê²u'ñ͈lZ ÇœÔh+Š™Ì0îØ’òÞäÙ{qǶè—ó„f—ü…æ‰v°•²_Á²¨9ÓGÃñí2 w9›ýœ´üË*“÷¬ÚºZjÀ¦yÝê’úâ]ÆOž,FýK§ÛkôZMöö¢Ñ9aÝmrfi·z­ÆûÖ¿É›åI «Õ¿¶jX5fïàgï]§ó±Ý“qÅÜ+íc%z‰ã=0é6ÖTàˆ¬ò¯Vó‘ |º8 ÐvïSiú¡llÔèT»æhžŒ w 1®ÖI«qæU @Åe\ƒä+<¸fÔ/µ*¢ær®+©0΂ÎèQQQØŽ’æÍ³Æùù»÷]ÝÞ66´4"=”D‚¢Ž—‹Fmµ×½{€ ×Z•ä@<{ˆ`1·PÙm¼˜…­nGx`§„Ãú1ÌJYˆŸÜŒÑ´Ï}[[V‘ùýÇ·Ä*=ñ}yzÙ A£Ÿ-ØÁÀé}÷ùËš f–Žù;« Cɼ}‚¦õ˜¿Vä¿‚®ˆßíÌ´Io™Æ+‰`xKŒª®Mb-®×ö¦çV~ î§²ùaXe‹ÑÚÑÙ ’cx´OaÀ‰dBÇÊA~Ã^ÖŒ%Æ·{öRÅ,œÔÇÇœLl«º[0£¬ëwV;°—39I;Ÿ±É—&UèãyxÆR³þ†$λx±ˆ߸z ‹vò…±j!yí¯kI-Ü’ÇšüÄO\ÉŸ¡])eù1ôs°uƒIc†ž¶þ¹vLHM„‚ìG÷Žß›ýTˆ¨¿»ØDlc#+ÀŸ Z-Êæpìß°Z½@z¾AŠØ,*rTx,at•Hð:Ë…¬œïíœX¿ž²ÕãÛ/O‡û"­ùFß­7¢§â1'ãbïÂÇó~,Ÿþ ò™ÕÙçC®B²ø„ïc"e”ʘÆl6ŒIß'âϓňÇ>$R®±Ÿ‚ûó½–ªo*j{ôÇ í.V‘/æ]+•&Ãx‡…ÛšE¹goA“¯”[ˆ…Òï—L_1Ó”L¨§ÏÃË/PÖQɺ_u+ ['ç½P.øÃ4e@sëß/†rQCŒZѤ‡FÒR#¦sT¼ÆWfÆ8-7…:• knÊTöe ™­ŠŒAt; zpBЧ<´1ß c±Ìšïp¹¦ÉB´›«Lâ ’˜È,%€°‰º^,’©´|aÒ|þæä¤“¶ e„çµÓiµsªÑÌžŒå]|ôN«±´9¥Ï0 ×–!Â+¯¾—ëmy ¥‚ö±rVGìãxO’¯Â›«"^lœ4«YK ÕXºþâõ¯x£¿¼ê¥Éö§Yí°Åÿ¥> Ø7óú²ÇDË0v²µZü+£&Ý1éÞhI>ëREBÅöwÂfý¿PK yºZ<IAR-STR912/micrium/.svn/UT •LjKʈKux êëPKwºZ<"œ¸Äù.IAR-STR912/micrium/.svn/entriesUT ‘LjK‘LjKux êë­Ž»NÄ0E{‹_I<3~%é(i—­¶sœñn–ÍC¶Ã÷`…D‡€S]®î!†1 M$.¥¬¹“2¬ëV8—:¿Îu^¶8.éÌõÌEî·´,å«$KÚæ¹Þ|ÙKS–O‡êùxh‘ä4†4nÓï†Å´èŠÔ©3С­qìI(2âê'ÎçÄó<Îgñ›ž¡ò Ô>òž‚ª±ž]x0º¢ÏkDo,>?î= ŠÜ\‡m§u œ„n¤t£éMDpA) ˆÞÙfø“î‹VÙ»ÖågZ}0ž5›62ÓÐÛ½'ÁCD²ÿ¡ÕÒnõPK vºZ<"IAR-STR912/micrium/.svn/prop-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/micrium/.svn/text-base/UT LjKʈKux êëPKvºZ÷Yƨ̃áÇKI˜§“Ä÷DÙLõX‘‡ÿÓ/(ýþ;ž>%)ÿ§“q¥¾eêŸO¿¬õ­ÕɧNÚ­+ø—¼?!Ÿº%(Êè>)ýI¾Âú÷ú‚sî–CL[ûJttˆµtèl‡\SîV̯6¬›r ôÿ)ögsås_œ+óî¨P N}€¶:DuWP Ôþ7M_aˆ Þ¾æ'?Apm˜,ˆŒ=f™r8˜FʸBpøtÞòYwÆ .}Ó3V¦¿×j¤?©&ß~ßÉœÕ`œt2už¥–2“ú²(Œú%ºwÔJ~ŠŠx!L&ýQŽžpÜž¤ûè×p2¯äõ(]KÊ*@»ÃiÅDóÌ —謇ã¯<ÐFÃv ï¡’|  ;CÐg,ˆÒtÑÃî f4m&=a.ù¯³­Ä¤»+œ@:Ÿi(t·°‡œˆ³KìÐ퓢;ÚÓ—NK—+å3F2g‚Ž¡òq6œ*CËðæ+½§_‡ ø_ŸÅE/ižWß§Š =1]’…÷©’óá8·$¼O•”ám^Ix”ÜY-a2¸œˆÔ‰IÓùt[)çm,BŽú=*Ú€Ý~kžå— Ô…Ô)ªA²òJW¿êNX>*›_4ZÁ‘(]:]6*'KÊ8¦î”r£pÇ8)v ƒ'é ¡ÔxÚ»õé0ߟ̳˜z†»ê+ÆÍ-©”+;²ïI½²Ò—Dá¨ìºµ0®Ÿ½éÚÖé×ìšôaÃQ}ÎnYÈÿ–éïú vXì¬f°®ÒÓ]Í1X¤ò3ÁO†jB@ãÒ(æ ×2ˆë¯V6„w+UûªÞè¨àÜøKã\İlK>Hºç;‹<&¶§ãÊûÀVÝ|K£Äƒ%³+hªi²•ÂÛwˆº‚@F£Ë…l½ïJ‡ÈNÇd ö×é0êÂE5|eÅRÁ Ð·èœ‡Ô—öÂ7õm¬Ã1û6G`“¾ÿî7æ™^ÉQ¼hŸ–r§šg,Àϲx©ŒÅÑ'™®‚B\ymÜ4—ÊTѺ­©™#[Ý£jÁÝk7TbEœÙ'œÝBžx bìŒFqæ^òÆÎBÞXq¹hô'è&6ÏÖá½Ï¦ÿöר7Ï»òìA5]ÛᤌoxÝ.ä(Ü£,@ƒ ç'QŽ*¨_ ¼*ÙåÒŸÕ¥/̺½ágÆ•Pͧ?s9`êC€b­„F(i@ʰ©k‘¾Û÷V¾GT7–] ÃŒƒ°«àÌÞÿ ‹R«¦Öpêîâ„N0C'x«žPdýW礑³¨ð*»Ê¿Š—~^åMȇÝ"¢ñ ÑHÄ™ó_~!o›ä?)ðõQôš_é‚ćh¾´›\wdòÙ&LRØô³Á?ºâ½5ÕWKMH¾é9?»±†¡9ˆ¾x܃®:<œ–O ¥8}áuYÈrÀf aFóFУ<dž±1Ù“„qÉã9 uÇ9Tühað¥ô³ ÕŸ_O0…$+`yú|L´Yú.ÃT–§ÏGY£ï‹‡Sy8$^rú0Ÿþï»í|Ne}6+~A¥C \Ðxâü–Ÿ…Žb˜íÅ RP¡ÝB†ÀÈÌ2p%HãpêÿB˜ôF}©ÑÜ#÷·†v‹ºfªËܲ]E[ùŠzàæ:ÁÃÞ°A`Œµ<ã<¥ˆGBM ÈïoUeVt„Ê1ËPª¥ƒoê77:̲<³]×@c9ì±EvðÅÀ¡Ü[lÚ÷ù)tÙªb$žœÇIöšÀ—\Nä¹·kË_†©2¸¬Vx&õý¹x¡]ÌcÀG5q>6 €kãÊXømMà¡ôlOj†9Àï¶µäuf.ba ­ðñ uî$·º†~|F'‡˜Ë!>*sIû0v}îÈù9á~*½îÇf6(‚ç»JÌáà;Ä‘GL¹ Ñ$¿ÅátsèMFÆîÖþ‡¡,5ÉßÎI \"ð‰ðm››€Ýô9ÄY]P3ö;¶PXñ¤¨ˆ¤µkrÔjo€¼SygäGu‘o€ü¸.òÓ ¿­‰¼ÝÚùIMäM¿«‰üxä§5‘Ÿn‚ü}5ò“õ¼]£_Ÿl¬èí}ôdcMo×è¤'«z»F/=ÙX×Û5ºéÉÆÊÞ®ÑOO6ÖövŽz²‰º/ôkÕ7½4ö° þ½Ûq>{xr×¼1ê¤LƒGºc××ñǺ¦CFK>Ò#£8vØ%þžÉ'ÛÀ#{Bì ½±'ôÅžÐ{B?ì ½°'ôÁžÐ{Bÿë)½¯§ô½žÒózJ¿ë)½®§ô¹žÒãú¯ò·¢¡tnßܘúº>—j²ÃÍ‚Bz& Ýœ€þÌVf½„Ñ(vûÐç¢õªð¬h™~UXns¯*İ»>S„·*õAÁV÷]Å_­ô0s¡ ˆißÓ"a?J"ç¬ob¶vR92|&‘ÆÒ}b¥‹ZÂ\“4£R'qfÿz~c¦ÿ>§>`Ú„d8(([§päMS(ñCCk–&¶±š_»Vûຮ¿ZÀBçéXÈŒ¢,? ™Á¶€…Ó§c!3&ç³ÐN'iý,d†î|:OÈBÆïÎgáø YÈøçù,œ>! ?>ßšUڅǘ¦2ËËóPeÃC™}äy¨² á¡Ì@òðä–oÏXêÎk7Øã®ðá'ˆèKº«{1å(?·5YÚw}– W„(%ôs:Ûšž JDî ÓŒ¶²¢î G fá~3òÁÁA$<¬§Ó¼Kĵֆk Oq1ÅK4ƒ£ß®‡çzÀˆ€p«i$¾ì9¾æQ^qg…n÷ê‹ñüî9§H Îå©^)ì@‰¸<'M_3ƒFÔÔx—<æw”ôMWWFún*íûÅðãE(›½`1;£é— Öw‹Â\ži4θóg0 >N(Óðø·³Bi±Ç…DÛÇ´~ÌYgEiƒÍi¾ÛÆ9i{j&¡2ûx•Aoyf7kn1¯2iliËéÕ'®1¡ã(S±­ˆ·ªeé&®Ùí|žq¢¦5“ZþT­‹)›6ïéÎ7oØÄñA ØH^F3g}§è Çú~€à¦»º~¯í5Å£6òx M.ÒÂ×éÁ<8z4U¸—(¦ò6ØÏ)š‰=¿…1øÖ60Ywì¶›³rï6G!kªÅ{ç‹(Fø£ˆ‡ë–oû.}{ÆË…?Ô(~ùAûÑ­¶Ü÷9&Ù@ô)ÆèAî/©§¯7S”ªÕéÕ…F‰SAÃ^@ðØŽ ðH!S½Òé0?ˆŠ(†ëDpKCsìÕ-˜°Tàšï’åá0δFrÑä—Y´¦p Éàäóó.Áä BTϨ0ð #ṑ"ÓÓ S±ñªç:TÞm>O‘ÉÌ—Îz0°ítÙ"ýØ:ý‚ŽUôŒÄÞ_Êrô_ÄÖO±§ŒðúÆõ7 †[ÜhšŠØËo"¢—àð•lÍ%ŲI{ÙŒ»÷9™‚¿oíŒêÇ(Âú¢ÔúÿUÈFºíwyÚ¨ìf)”AJ`"òϯa–añÙ¦¶PhíéŠt¢¤Þ“L&ßûÐJ—L¦¤V¿A Så_ŒÒOþ艹úÅ©¥€.ÔÊ¥W[ØÝ_ç}ªŒ x ÀdªÁbùº÷z¤^GCŽXóÑ쎢ÖQÕX˜¤úêˆõõ4¾f¡æ)ná Ù‡_Èhú%¾³9º‚ìpö"^x‰ïŠhÄ1uJ{O÷‡gó!¹ºÞN¬®ç‘bw³Æù&“È éž„µŒ¬—G¨ÝªÖMÐ¥@Îá­áQ&ö^Î|iÇÖSa¨tbfÞÕÍXqL‡˜àGÑÈý‘"Ž{ŠÔÿ˜K ¦ RÇdð_°¢ÙË%ž±ª;iH21íûfJñ¿Ùa§‚r‚nš2:åø6Aù\ùfåѰ‘F¯xëö\šŽÈh8éoe»Ž&ש¹K÷êÍIµ3ó“ù(ñº½õ0ò³\y8ƒ;üê!ÍD³U5zFR¥Šê‹‡3š·>]~ÜNÈ`*Å·ŒlIcŸ‘Ô./§LeÚ4x}LIÒL`G_ñþŸæ¯Úô²rox·áý1As›þÍþÐb%‚æN¦x+4Ã)»­/þòŒ’ mi3v†ýLšvûÊTVP‡¥?¡ƒd °ìŒ^“¼z…§×%/¦ÓOrPªÝŒo¯HˆúÏïF&ŒßÎö¾]¤EAÈìu×P|lƒiŸì_A{^;ºNß²hî4 i]eÇIŠö AdþDo*9êÐwwªc`V3\˜ˆˆ<£TÿøÞÁÏo%Ú¢ìrJ ¤ÃÍGáÏä}ÍFá G8 ¦P ðvë"ao~Ý>ç á¾ôW6G—‡ÿ¼»ãÖÒç|‚P ^»ìò8—m hx+C£ób×åðF·tG¥¿pàdØi#™v«E–r4£”|¾àì®f,GèŽÌé(õc /òd¶2q™ãì…û¸Q½ÄH®4ók¸ZZÊòíSxú×v¶O!åçÙ>•t´Zën_ÚdçRBy‚ÕK• _ã¦'’¹³ÔòðªOÀF¥  ç#ÃÒÙuÈó±ÔB%‚{8Ï0T7YR.ØÝˆü>+ÀÔ·*‘Ð’ðkþë¬OïB‹Ö:"-Y-Y*‚ysž^‡x„ŒEÕÔ|3w0ݶ6O€°W¸Å¥ÌÚ‘´Á«×Íò8O[­ò`+%¹õâ®$ýÝÎâg®" ÑxGepj çƒÝºêr2‰†F‰ó ¨W«Uâ'·t&"1ö?£¸rÆøƒ[0ÌÓÕy z?m¸ažmbÕUg`ªYµÏñiy~D¹yˆÇ¶â‹×OÂñäeÎ_äqÐ&æO¨ÌqãˆEµ VÒ³x–þúS=û˜°ö*±ô{0’¼ håÕ›3Êç\+”Ö{MK[÷^È .†ÜŽÉ(ê[§_ÜŽ‰GîKCaDfx?¯8/'CQøÿö®½§$‰•ÞH6&ˆ²DrLÖ%ೋt $Ö:klÑ-ßýªªÓÏñŒÉæÄüƒéwWwWuWWýúéð»õ¿ÙG޲êùv¯b–‚= .Ý9ûr|×Ôƒcëõšm¿Œat’|á1¸ÿ!½l‡a…¼¡&ûñõ0BQÊeÐÒ䀹+z˜Œg³4™¥cäÂÜNu¾iœ, 0QïaÒ­¿žÕ¿4= ¢ž>ç¸*úVî¸*z¥Xs¾Üã²è›õ 7©è––4; `1ä*ñ}¬6¸qn†8ñ•e%]t fíá3ôV]*"j_Ï¿µ¯'“`öV†m •†fv-šGoO i(Àd« ¼íýò×&[™~ŒÌ‡^²ÙxjÚá(¹yåà]›fðzoÊ©Âe,7¦­iÞ¾àË U ±¨å¯‘úýF¤ž;"XuDŸ’tÈqYŒA±â¢£“סº‹döv¼0Á•E 2.ª³·ãt¼øiõKdçqÑyÌý¤@ÇÖ²gÂ!˜ñ,N‡?@ZžN’Mas%«õÄE(ƒ…Ùh>z0.êÝFÛ`öÓÖéE(;ƹÓÔÌß»ÅT ŒÇÉ/€}¢£` %ð2(Šfœàèz©Kµ¼–Û@õa~ì°œñ’þÃ=&læ›rÆSý¨¿°äd^½ZýBÒóR™oýµâ“§OéÛŸ‹ël!Óx:ÿ{+åðÓ‡äÀzðâƒÈØ2âÝ0%%‡°üE,HQ °×õÞQrÂ懋Û»ä×j@äÕ$þªé4DˆX(p>•§~i*/SlÐyo·Ê~WeÿÉŸŸb¼¾Ç—ª¦lô}‹Ÿ¢7É‚Þ-ó² S;nݶ„ºpG&¹Ž$ ä†5Í»‹[6Ëɯm‘rÏŠ"3\$¦9.!êÑ šð ÞªÅP)ç=‡M—rØÔà°µòV±Oü¨n<6À` «‹*˜K¸ÑwªWT©Ø`‰é‘qaÛ(}¤<¹3ÌåɆò …î,PlØ®Ô#yB:,qi°YB eSÖ¿¾º‚ßȾÉ3h‘1õH×>þ—¤>ÈiDK§c'É<›‰Fød6?G<¸( ¡ÐDÎä”XöNà«Ûm %ÌÅÌ k'p+4ßêî™"H!åÕÞ½aƺF;<üW#T†¸dÖ™®á£HÑ"%Š"3ìÏ?Í.êñ ª‚²ª ü¸ª<û2}f£(‰¶Ën]2%IIÂïÎn¦Öо+0U ¤ÚK*[Úg_úNcõxþÜY 7w9it›­VÔšS+x£—õoƒg;¼Uh«Ï3»GÛÛv„A¹cš»â©$”"·»âϣ⽂Î!æ{Š~¡¸ƒ•÷~ÂÕl>JÇñ„Ü9C|–g•\ð*™L~Hpæ&ŠTŒ $Ùk[ï2§’¾EæØALhÅñäexÆâ¸Tù|´Ë¶YíÒœ<7q4ÏQ™~¤ÓŒ‚!‚|£+¾#h%¦ÿÍ|ÆG¬2ø»­*¯b‡ñÿ PäVU6ŠYãqDæ¹Hup«*ÚþÐfÔ_x}uÛã!lù׿ö÷©´Ú­è–Ͷå‘^Ûòt»mÔ¾§xeF¬/ʸý²îty¤2Ë]s]ãì³Yþ-Í1AijU8>Ñ-ÃçýKÖ|ÿñ_ý’}¸è¶^xÆ@·B ßï¬t[·ò=Ýýnƒì«¹=~'ç*Æ!Žyÿã\üà,ô³èØí»c‡ƒuƒÕê^øëžc—+·>C§_á•¿DË'úQ`Á^²ón÷/ úÿó‚)`Ûkd× 7 : ÍR߀\#Y‰ÏÊ´¬À%»Ì @ÁZ¬¯ô”"#d‚´ »žÈ !ÅSÖ=aƒ8’¾„¼né9Ÿ•!=j^ð÷õh:øiêp°pqé”^O}â3ǃÅ5 tV†Pá@î‡Ó—*„jI\ÁIõ?ǃƉÅûã߸ùHë ãˆÌæÃ©–!4ï]ùrXfrÄ׆0} É3ÿÚÀ_²»… ¸J}ŽS…Ä߸Aü½áõ€bõ׆V© ò‹“51 ¬“\O‡è63¾BwŽÍ¡!dUbС|Á§È±…¾%蟡f Dë""2þºJ{é¾Ì! œOéF¤´Ÿ¿€4ýa.(J("8»VŽLŠ<²*ÔòHòüÎ^îíÕ -¿W?ôjØdŠcûÞK~bqàO:Ó×;föû².bŒ·\í ºªš„.#¥ëÓÔVÞªÜÞjaíÙ“VUËK—-5Ïu¡[£žÓ{oµAkDV@ÕG‰å„âÔë˵zN9ÆÀ˜E˜¤¯Ë‡|íÇ‹~r„•ýɹ¯qzþOqˆ¿#† €•ðѽjUÛW¡$²<°°éóǪ’ý1Ç¥ò B5<Û$ŠÂ_`ŧiü}$4ŠDr+0ú,’4™Ä¯ýù-Ë+žŸL®>ÄÈ8Ùší‹÷N6 $  `¦³†'ÓY#Ú{7ü: äÂk½.žìô\20:ê²u'ñ͈lZ ÇœÔh+Š™Ì0îØ’òÞäÙ{qǶè—ó„f—ü…æ‰v°•²_Á²¨9ÓGÃñí2 w9›ýœ´üË*“÷¬ÚºZjÀ¦yÝê’úâ]ÆOž,FýK§ÛkôZMöö¢Ñ9aÝmrfi·z­ÆûÖ¿É›åI «Õ¿¶jX5fïàgï]§ó±Ý“qÅÜ+íc%z‰ã=0é6ÖTàˆ¬ò¯Vó‘ |º8 ÐvïSiú¡llÔèT»æhžŒ w 1®ÖI«qæU @Åe\ƒä+<¸fÔ/µ*¢ær®+©0΂ÎèQQQØŽ’æÍ³Æùù»÷]ÝÞ66´4"=”D‚¢Ž—‹Fmµ×½{€ ×Z•ä@<{ˆ`1·PÙm¼˜…­nGx`§„Ãú1ÌJYˆŸÜŒÑ´Ï}[[V‘ùýÇ·Ä*=ñ}yzÙ A£Ÿ-ØÁÀé}÷ùËš f–Žù;« Cɼ}‚¦õ˜¿Vä¿‚®ˆßíÌ´Io™Æ+‰`xKŒª®Mb-®×ö¦çV~ î§²ùaXe‹ÑÚÑÙ ’cx´OaÀ‰dBÇÊA~Ã^ÖŒ%Æ·{öRÅ,œÔÇÇœLl«º[0£¬ëwV;°—39I;Ÿ±É—&UèãyxÆR³þ†$λx±ˆ߸z ‹vò…±j!yí¯kI-Ü’ÇšüÄO\ÉŸ¡])eù1ôs°uƒIc†ž¶þ¹vLHM„‚ìG÷Žß›ýTˆ¨¿»ØDlc#+ÀŸ Z-Êæpìß°Z½@z¾AŠØ,*rTx,at•Hð:Ë…¬œïíœX¿ž²ÕãÛ/O‡û"­ùFß­7¢§â1'ãbïÂÇó~,Ÿþ ò™ÕÙçC®B²ø„ïc"e”ʘÆl6ŒIß'âϓňÇ>$R®±Ÿ‚ûó½–ªo*j{ôÇ í.V‘/æ]+•&Ãx‡…ÛšE¹goA“¯”[ˆ…Òï—L_1Ó”L¨§ÏÃË/PÖQɺ_u+ ['ç½P.øÃ4e@sëß/†rQCŒZѤ‡FÒR#¦sT¼ÆWfÆ8-7…:• knÊTöe ™­ŠŒAt; zpBЧ<´1ß c±Ìšïp¹¦ÉB´›«Lâ ’˜È,%€°‰º^,’©´|aÒ|þæä¤“¶ e„çµÓiµsªÑÌžŒå]|ôN«±´9¥Ï0 ×–!Â+¯¾—ëmy ¥‚ö±rVGìãxO’¯Â›«"^lœ4«YK ÕXºþâõ¯x£¿¼ê¥Éö§Yí°Åÿ¥> Ø7óú²ÇDË0v²µZü+£&Ý1éÞhI>ëREBÅöwÂfý¿PKvºZ<¹GðvL0IAR-STR912/micrium/.svn/text-base/bsp.h.svn-baseUT LjKLjKux êëÕXKs£8¾OÕü‡®ÚK’ò8‰§jjwsÂ;”°<&;' ƒˆU‹…WÈñøßD,dì89FÉ%~éëV?¸¾úüéê£7眩©›Ž?…¾¥9p}Û¶lMk#ƒ+yMÏEt z¶ÚRü¸`л¹ùvSQ¼^vÀ$Q÷PÎ2Òáä¨>-M¡ÐE9¢O(îØ4c(b(†ù0aˆ’ጄ)D¥É4ÜäÝz­c’mR?"È` y¶¦âÂ1‚e¸’1˜#XçÜË`C1CBŽ—8 i½ÒÍâuĸ{ÞçàôYWFÒm© £(£qH¸½ f ®6Å"9ªW’òE¶Nã¯(ŠqÎ(ž¯ÙN#ÙÂ&Üv?6‹®??ל¼çæ¯8ïÍÝÃãzü×ùë¶÷vQž"ÇÞ"hjÎÎÜw ý,¤ñÎë!Ï*.Ñ3ßß0ÏWÝEqÿ'$F @ô];¸NãLP…VpŒ h£‰Õ×&®Ä+¨Æ¿§ T<õè§xß‚Ä8i"åÞpЭ™ëi3Ïm"22€æÌ ¼¶˜Î?Š7G|¿¾âÕ™#N×+l»BÀe»¯ßYX¯·=4UÛ·gÛæ²gÚþc yLšH gñŸ2ÃÅ•ˆ‘=œéÞå… \ÞµÁ¡Ï5­ØŽåYMÁX '"Õ fª·%¨õl€s1ÜÔ´; ¼;Í<Ãq|»‘òvÍï|t‘„ ÝöE ºùÓ‡'dN; ÑVg(ßß±ñ2ˆà³,Hñß•Ç^õHˆ·:›&Р绩·æ5s—K‰¶ -ߎE¥M’÷ŠzÙãcŠNж8œ¶ïÞCß÷<^¢ ©À¬oYC›•àÚý`„˜ËB¶.ߌ îjÞrlÅÑzÓ¸r¸n¿ùû¤å.+ã aµY×6´±á´­¹+þ‡h¥ì ¥€T~‹©b¢`bŽî½&C°[T&Grj ü‰ØŽá3ïHÁÖÁD|i’âs2<{}|ÎúB)°_‡ÛY~÷Kïk¯u‹¿ul©\_{¼rÍÃuÐÙ„†Úß2µaë÷š#þ`?ƒùö5y—QÕƒü—ÏY1ÁÉUwbÅüÉêPœ°G {åÈ*PH9¥Î¦˜°äˆº$£Ëu Ûí¶½þ€èfëRÔ6uë(#\×…À±œŒù  Eÿ?‡£ÍékúøAs.èÖÔÖ<³oNLïG“ŸÓÄ|®€û2¶ ²Â©ìûµBå«. Ò¡0*«Aucxk&Ýýœd‰ûeb.&ÊÅj’êœRÇ»¿ 2¢HÌ5cäÁt)ãqØy•†\Ë\z¢6ã:î=Þ5X¾ça‘ۋ©ô‹j9à­ÔêJËPX•>Pm¼µj ²Âª”÷jÕ—y Õ¾~)|uXíÈm.Iº5š#ßÑŠ†ãXNm¢­ðçyhc6h¢NïÆá_PKwºZ<ž9ÇR‚V#IAR-STR912/micrium/.svn/all-wcpropsUT ‘LjK‘LjKux êëóV02å*.˳*O¶*JŒOI,³*K-*ÎÌÏÓ--Êá S03åÒÊåç—è'”–¤—è+EôêôLõKŠJó²õ rKÒò‹r‹õ=ƒtƒC‚, ôs3“‹2Ks¹\ý\¸’Š ô’¹¼ ÙgnH¹}ú»`¶fÐÑÖ °­PK vºZ<IAR-STR912/micrium/.svn/props/UT LjKʈKux êëPK wºZ<IAR-STR912/micrium/.svn/tmp/UT ‘LjKʈKux êëPK vºZ<&IAR-STR912/micrium/.svn/tmp/prop-base/UT LjKʈKux êëPK vºZ<&IAR-STR912/micrium/.svn/tmp/text-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/micrium/.svn/tmp/props/UT LjKʈKux êëPKvºZ<¹GðvLIAR-STR912/micrium/bsp.hUT LjKLjKux êëÕXKs£8¾OÕü‡®ÚK’ò8‰§jjwsÂ;”°<&;' ƒˆU‹…WÈñøßD,dì89FÉ%~éëV?¸¾úüéê£7眩©›Ž?…¾¥9p}Û¶lMk#ƒ+yMÏEt z¶ÚRü¸`л¹ùvSQ¼^vÀ$Q÷PÎ2Òáä¨>-M¡ÐE9¢O(îØ4c(b(†ù0aˆ’ጄ)D¥É4ÜäÝz­c’mR?"È` y¶¦âÂ1‚e¸’1˜#XçÜË`C1CBŽ—8 i½ÒÍâuĸ{ÞçàôYWFÒm© £(£qH¸½ f ®6Å"9ªW’òE¶Nã¯(ŠqÎ(ž¯ÙN#ÙÂ&Üv?6‹®??ל¼çæ¯8ïÍÝÃãzü×ùë¶÷vQž"ÇÞ"hjÎÎÜw ý,¤ñÎë!Ï*.Ñ3ßß0ÏWÝEqÿ'$F @ô];¸NãLP…VpŒ h£‰Õ×&®Ä+¨Æ¿§ T<õè§xß‚Ä8i"åÞpЭ™ëi3Ïm"22€æÌ ¼¶˜Î?Š7G|¿¾âÕ™#N×+l»BÀe»¯ßYX¯·=4UÛ·gÛæ²gÚþc yLšH gñŸ2ÃÅ•ˆ‘=œéÞå… \ÞµÁ¡Ï5­ØŽåYMÁX '"Õ fª·%¨õl€s1ÜÔ´; ¼;Í<Ãq|»‘òvÍï|t‘„ ÝöE ºùÓ‡'dN; ÑVg(ßß±ñ2ˆà³,Hñß•Ç^õHˆ·:›&Р绩·æ5s—K‰¶ -ߎE¥M’÷ŠzÙãcŠNж8œ¶ïÞCß÷<^¢ ©À¬oYC›•àÚý`„˜ËB¶.ߌ îjÞrlÅÑzÓ¸r¸n¿ùû¤å.+ã aµY×6´±á´­¹+þ‡h¥ì ¥€T~‹©b¢`bŽî½&C°[T&Grj ü‰ØŽá3ïHÁÖÁD|i’âs2<{}|ÎúB)°_‡ÛY~÷Kïk¯u‹¿ul©\_{¼rÍÃuÐÙ„†Úß2µaë÷š#þ`?ƒùö5y—QÕƒü—ÏY1ÁÉUwbÅüÉêPœ°G {åÈ*PH9¥Î¦˜°äˆº$£Ëu Ûí¶½þ€èfëRÔ6uë(#\×…À±œŒù  Eÿ?‡£ÍékúøAs.èÖÔÖ<³oNLïG“ŸÓÄ|®€û2¶ ²Â©ìûµBå«. Ò¡0*«Aucxk&Ýýœd‰ûeb.&ÊÅj’êœRÇ»¿ 2¢HÌ5cäÁt)ãqØy•†\Ë\z¢6ã:î=Þ5X¾ça‘ۋ©ô‹j9à­ÔêJËPX•>Pm¼µj ²Âª”÷jÕ—y Õ¾~)|uXíÈm.Iº5š#ßÑŠ†ãXNm¢­ðçyhc6h¢NïÆá_PKxºZ<×ß:uÇaIAR-STR912/91x_conf.hUT ”LjK”LjKux êëµWMoÛ8½È —¶èÆ’òÕæFK´ET^‘J“¡Øt£Ö–RYÞlö×ïPŠ]›k±*Ð¥}ð›yóf81Ìàý‘oÝwàÆ“û„}Že]a>«J¹”³º*‹|¶†c¡§'ïa”/%DÙJÂnÝÀ'ûïé¬,gŠB6õcYÁþºÐõ€<=-óYVçeBf+Eö²Z¢hµ®­×9Wdër`4¥ÝÀ­¬Ö*Â>³š¹žUùS#²Sò‡*«^@‘ÙTMŽ3¤ÿæ¥ ðóu]V/7ê7ê8ªÐëƒB­ïâ¿›°_}]ü*>…IB9ðx$îHBáÎg®ŒÃ(N`œ2D.…8 î°ß2EcpS.â&î˜ð•¦7axH‹#Hè˜$²D…{©+8’ N<š4©Ð‚ˆ“[ ‚…ô oÆxˆj™›Ä4 ®H∹¸O‚¢XÀ‚OF†m$ItKýsµ¿”"ºÜ8âôÏwÎH ɘ¶›PÙ&HTµ(7h·0®¶0Jâ°i* oôFÀSlÚ®‡$òí– åBâQÞïu #Z ½Ym #AXD=ÜPB±IøE[„E©v6Evò÷OôàôD}Þä‹b.0ªW‹Mñ)¿AS^HÍzz2À‘*Ṭ¾A^ÀÃf±¾¸«r.áëß乜•«•,j¨%,Êå²|΋/°TjmÎÁ`«>|Uv÷"þƒÄh¨KxÚl­íËŽ¹+<²²µlS+ᲦãV³kñ‡d2fE!—V—Ãîr8]Žó.ÇE—ã²ËqÕå¸þÉC§!ëÛ¤êx:ÌŠoÖQ«}Ô굞Kõ/qÔ”Ø-uÇÒ¾RH5JáaÝW ©:¶tƒ­Ý`nÒxÂâÎzöß!EÔ ¥a[ÃŽ†Ï5|¡áK _iøZÃ5üɸÓD˜O‹½®!Õ(Å]ó8ì„h %i5…æ’R’ˆ^ÏQ5hiØÖ°cnŸôlŸ"ëšOa—D}RͰ¼Þ“€TóÁà{ ÞØ(ÅœÞU!UÇ–n°8ЈvÏ‹~€#·UûðpD³¼˜ºÕ˺Ζ°¨ä÷,f/ðW¶ÜHxûÙÿçÝ>¿½ÁìîLûÁ{sq é\Z–YÌóÅÏêùõµ»Ç5ú€×¨ý;ÛöÊu¬›¿ðß ¡}ïo÷ìYìvûÜÏØ’¸…ÏëWíÃ4Ô&¨Öø«mô.w:?ƒãŽÂ MXÄž&qd°Kõõ«Cè…Ó_0¨žSXøaÜ ˆ­ä|ž¤PNa¤j ,—Qøã½È¿v¸Ïó¬LLÖb¨ô‹nèåQÔ„?}¦O"Ý•pP´.•ªAÉ- ÊpÄJBWÜ8ç êÙu“Œè)ä¦Ó$Zl™1ß½“æj9’M=˜'åµY99 *|g÷Ë”exáâ™9=(«5”ª)xö Sr¥4½{ã<›ñꃽjJ„2–k¡ ȸülhB£8$o¶I”vxò€ö À“V÷銮| ~Ý??R»›ðm(cìØ³Â/´RuEªïº8y´˜§ü/D75ú»nÏêÅ{ýê_PKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<÷!–+t/ IAR-STR912/led.cUT ”LjK”LjKux êëÕVÛnÚ@}·ä˜6ReÈh¤V ÉÁ&E%`QÕ'Ë1kØÄ¬Ñî:JTåß;ãµ¹µIµ‹{.g×3gfl[¶µÇE”do?5îƒé‚§G³·(ž°˜ CÏ zž;‚ ¿;8^É¿~•æƒmÑç.åè±I0Τ‡ ›Tlë»mA¾È:ø*¹fç\;+˜hÀé)8h~بjƒ¡7òÆ•&ØÖã6z¿~|3 ¿ÎÃ`[µ*ø’ß…š~X0||8|þªÖ6‹`¾ðgÄyÉôE€?#Þ…’‡× SÏG%Ä"5]Áõãèb—‚‘–Y¤3Éš;Ç™ˆ4O,dªSŠþŸÁìlˆƒLn§"æÓL†ë¸Ò$¥Q;—%დ¿ÑN3¡Ébç±^Zõï.ÛªB§ŒX?œ3€¤¤p™Š$_ä: Å%*(®SÎÉ +™†å:~*)™^׬C†ÛŠ¿»jEÙs¤ –¾rÊbßã1Õ¢ë_]˜âŸ°ëlꘄî11᱑Óï¨}\¶{_Fi&#fhà”Â`0jc#ÀU«^)x ¡=Ë 4Ì Q’F· roÃ)röÑÙåw\¥r ’¤Šˆ‰´i /Ágü“a×™"´Û‰ñƒ3h@ú¢yIQ–ﯔfs³½c¸Mä%E©¢`C÷lŽ®Õ¬Ë¨Hך©‰ñvùs.™aá™±ñ¹0,zÒ ­Ö‚V’`øjõûøø)/ê%¥]~¦f~–$ðäf­D3)°šÏò[s<66½`c‚¼ÛF3‘_M§8 Õ,ç)Í&É,Ô%ccÌv.æxàzÿN ¼Þ߯M1Ç0•4ã`ÐéЀ+3¿>ÞÖOV¿¯×s/½»B1©‘¾ØË–Φ³Õï?vp™“olÖÿ½½È÷·x,âô*}o«Fv6Áe­©íb;úºâ/fZA8LŽ'htçOù+¬ÚWË?7©MO\t°ÒìÀë·Î{ÞÁ_%q9qv&ËðLAXPMó9Û$3·O@-XÄcÎÊV^z!ÍÅTÏŽþD>ùîQd’$7y×0E‹­Ä¡{cÕDÝ›¼¥ÜRÂw' œvÚÿÛ°{ñy ïëõ0_r|cd ¶l™ aýÓòú.vèt{^qNÛúPKxºZ<ò‹=Û¿ °[IAR-STR912/IAR-STR912-Lib.ewpUT ”LjK”LjKux êëí\msÚ¸þ|wfÿƒ§“Ow[0´½›Þa³c’z ’íÉLFØÂ¨5’¯,²¿~%Ù¼Iî‡{i’b[>ΑtÞtìÖïËyd- MÁ¿½iÔì7Ä> {ƒòîüüã§w7¿_üüÓÏ?µbJ¾AŸñËjMQï²[/š­úö¡¼îâǹð.¿¶ê‹½Æüò#Àì†à.ñA$ú¸s¼Õî ò ‰Ù.Í+%6Ûc%cž–‹ùž7kÕ³[TëÏÈõ'ßNâͺ(a§ ‰vŠPw€">‡V£øéЀ®{Òø Øƒëxz$€ÅüÚŠ ŽSf-Ž3Û(eVO7˜øÉ6Å_¥QdM ¹~kªs7e'JÀ6*¼?B×va@ŸŠQŠ0WƒÛ(Þk—Pاî ÅæX¼¦˜¡9ì¢ÉFܾžaí]E`qP‘TÓŸáøò”©=&ÖZië±™ÅfÐÂb¦GÖŽ»`‘©¼æÖÝ_~±hÆ«¡ ås¸fÝ+Z3H§À‡o-7?÷–S´„7²^m„ZIÇ„2ymžF MžLøíVL9©p`%>ÀÓ·ò+o6ƒKkÀd³„QFÕµ8»’Ír+w6î÷»_¼ñÃ¥7<»÷nÜûK>ÎÙ­7R^µ™ò’P¤>Ë]œâî|¨½o8Êh]°Ÿ£AûéTàµ÷vÍ®}l4ßÿKu½d~_ƒI{(¡ÀœÑͱ$ çqBƒžk>®ó2Ð ëAœ£ÆÃOæÕ?Fc+ÿªÎk—+cˆ'åZziÎyåö,Џ¯,“—¯ÎÄeu™ ëåá)1ǯwJ‚S„Ç’>_Ie“C‘%£ //'î ú%KJ9Sºep¾wE>Aä°YÍ:B!†Á »3`pœ\wÿ›" ùœ`„=Åf-`o•Fe¹%ÓFC(Z‡B® M"q×.æ6æùÅr¡<ۯⴂœEïå®ÊÙ•×í<´oœ^ç¬F´¬¯â±>ïh’%?C”ůªä¶ÑÃ~”–©rUnò‰'cä>7™ÜsÝœ!‘Šm–Ì‹Á°ÿG–ˆE+ ìh¬®5YÀ;hØÚ¬`VrxIJZƒ¦ àˆ/ÒpÁ¥ê^¯'“j„~/geU¶ÖcÂá1Ä}՘Ʉ«IKÊ1FÜa0<¸eXͮކÕÂÝ-MünëžÿñœèsYü?Wy,WéÉTV^QäT;YThÀ ·+8A -3XñÐ>%"¤9fT£"d¹+s&G‚ü9}Y Ñ/Kõêr¯6*À(±ÿªÏ‹'wÈ+/Ÿˆ aˆî1Ýðcƒ´czWÄ)Jµiê¿ o:ð’ ¥éUåìVæþh®'ùP›è,ã 𾳄¾ÁŠ=9IƒBé*³»iÂ.Ä!›Ž[7@Åçª c0ÅÀ/]|çªËûëN ª(Aþ¨šÕ‚"clü¬²^;3©Qˆ ’‘N59O§ò¤§S]Bœ[Å9brOÐô†Ì6”¨¯+1åm9Ç 1¡p““3ÈÖ¤D3hÏú9· ¤Çq•cÌý »;ƒ ¹´2 cé‡~û·?øÏ‘ „ýЇšªÎ@ôûn®·äãequÓìy?ÌoDlX.UÕê(¢h à@¸€Y¶É¸Ep5ùæ’øIGrâu˽ûÇòr/xÔ.™H+ñUÎGcë`«‰?"._~}õM…¶çö{µ…]1è­×½tܱ׿9‚Ü8]x1åJEÁö†Z#È`„&µ `ÖYçk';ÿÏhÕ×7l! ËNòëëïj"öºÞÍýª³òä­Ç§Û÷.šxýlKØÜÚþÊUÈw¹=ð™ë“ÈdÝ´dJ>=(´ã‘] -`§èbϾ˟xÇ^#©ò¥@^—dÓ˜ÊöÂxô4ŸÈœ&†à1{ôШ}Û…Ê« †¢º"4'BaÉ‰h6/+A2%U TÄåsOË‚ê’Ðl1ô ÅÈ!¡¿ä“’æñzÜW¬‚¯£µ º€î †æ–?=;h™xéH–gãqÕjâGÜé½4aˇ«®3ú\CþTcgŽXjHìK¬U½¾(Ã4¬¬Ææ$œ¯JpÄŽe%@¥e«:pòç’¬D–Þ”×8'nxZ­¶´JÊÂs¹÷8¯áÚ+ ꤌpWºÏ× $®ƒˆ#æÊ ( )˜w0£O]0)«ÝÓ2]žá™®E>ŒZŒ÷ð€}ˆ³ø9ª%†ºù:è\™òMÒ ªÊî%áVÎà ê¶ŸX™ßµ¼R}z?ƒeÒ/ÆÑÃM—ín+ƒ¸Ô¡¿~à+PxŽgZBƒlq€‰JJæìe£a75Àˆ*Ӄ맢Êbê·ëÓ‚ÚÊ:‘Çrw JKWºº¾â`†µ»s^…«ðÒWshÝ{9‡értê‹w€©3Óû&ž3t?{wû/XÑ?¸žŒ&ÅóʲA_/‡1¿[¸F:2ëÝß‹^’˜ÏÖæýnÂú~ýbȽ bÛÅМjkØf)ØÈjÕŸ¿i´R’Æ«ö4yþ ù Ó½Žn%K²;îEŽ~mWf/<}9¡ÙÄ=´|€õ æ@!8GzMu cDôPBMMS@ìwj!4×Ô!Ê4JüT¡$ÖCˆ¡¹B)‘ôPZ MÒ~ BM„PɰµêUzH«ŠØ1_¤V³[²EÅýßZòz&¶H- _Bj‡m€}’²W»C½M¦ìVÉÌknŒ`pø>Q±zã¶ø÷7PK xºZ< íAIAR-STR912/UT”LjKux êëPKxºZIAR-STR912/startup/.svn/UT•LjKux êëPKvºZ< 9Á8$IAR-STR912/startup/.svn/entriesUTLjKux êëPK vºZ<"íAéIAR-STR912/startup/.svn/prop-base/UTLjKux êëPK vºZ<"íAE IAR-STR912/startup/.svn/text-base/UTLjKux êëPKvºZ<:ùè TØ5$¡ IAR-STR912/startup/.svn/text-base/91x_vect.s.svn-baseUTLjKux êëPKvºZ<Âcyê E%5$IAR-STR912/startup/.svn/text-base/91x_init.s.svn-baseUTLjKux êëPKvºZ<@ö‹j#$—"IAR-STR912/startup/.svn/all-wcpropsUTLjKux êëPK vºZ<íA#IAR-STR912/startup/.svn/props/UTLjKux êëPK vºZ<íA×#IAR-STR912/startup/.svn/tmp/UTLjKux êëPK vºZ<&íA-$IAR-STR912/startup/.svn/tmp/prop-base/UTLjKux êëPK vºZ<&íA$IAR-STR912/startup/.svn/tmp/text-base/UTLjKux êëPK vºZ<"íAí$IAR-STR912/startup/.svn/tmp/props/UTLjKux êëPKvºZ<:ùè TؤI%IAR-STR912/startup/91x_vect.sUTLjKux êëPKvºZ<Âcyê E%¤¦2IAR-STR912/startup/91x_init.sUTLjKux êëPKxºZ<–ß‚SY¯E#¤>IAR-STR912/CppUTest-STR912-Main.ewdUT”LjKux êëPKxºZ<âU|פÅDIAR-STR912/main.cppUT”LjKux êëPKxºZ< eÿèM¤ FIAR-STR912/CppUTest-IAR.ewwUT”LjKux êëPK vºZ<íA]GIAR-STR912/linker/UTLjKux êëPKvºZ$yÒIAR-STR912/examples/WDG/polling/.svn/text-base/main.c.svn-baseUT’LjKux êëPKwºZ<94OÕÖL0$ØIAR-STR912/examples/WDG/polling/.svn/all-wcpropsUT’LjKux êëPK wºZ<+íANÙIAR-STR912/examples/WDG/polling/.svn/props/UT’LjKux êëPK wºZ<)íA³ÙIAR-STR912/examples/WDG/polling/.svn/tmp/UT’LjKux êëPK wºZ<3íAÚIAR-STR912/examples/WDG/polling/.svn/tmp/prop-base/UT’LjKux êëPK wºZ<3íAƒÚIAR-STR912/examples/WDG/polling/.svn/tmp/text-base/UT’LjKux êëPK wºZ</íAðÚIAR-STR912/examples/WDG/polling/.svn/tmp/props/UT’LjKux êëPKwºZ<2jê &¤YÛIAR-STR912/examples/WDG/polling/main.cUT’LjKux êëPKwºZ<7JõèÌo*¤ÖàIAR-STR912/examples/WDG/polling/91x_conf.hUT’LjKux êëPKwºZ[IAR-STR912/examples/TIM/PWM/.svn/text-base/tim_pwm.eww.svn-baseUT“LjKux êëPKxºZ<Õ§qiÚL?$6\IAR-STR912/examples/TIM/PWM/.svn/text-base/tim_pwm.ewp.svn-baseUT“LjKux êëPKxºZ<~‚¹ýìƒ>$eIAR-STR912/examples/TIM/PWM/.svn/text-base/Readme.txt.svn-baseUT“LjKux êëPKxºZ$|hIAR-STR912/examples/TIM/PWM/.svn/text-base/91x_conf.h.svn-baseUT“LjKux êëPKxºZ,$`IAR-STR912/examples/TIM/OPM-PWM/.svn/entriesUT”LjKux êëPK xºZ</íAyŸIAR-STR912/examples/TIM/OPM-PWM/.svn/prop-base/UT“LjKux êëPK xºZ</íAâŸIAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/UT”LjKux êëPKxºZ<·¢ÅGØ<?$K IAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/tim.ewd.svn-baseUT”LjKux êëPKxºZ<*’Â÷8B$œ¦IAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/Readme.txt.svn-baseUT”LjKux êëPKxºZ$½IAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/main.c.svn-baseUT”LjKux êëPKxºZIAR-STR912/examples/UART/.svn/text-base/uart.ewp.svn-baseUT”LjKux êëPKxºZ<–ÉÆ- ;$ IAR-STR912/examples/UART/.svn/text-base/Readme.txt.svn-baseUT”LjKux êëPKxºZ<×ß:uÇa;$IAR-STR912/examples/UART/.svn/text-base/91x_conf.h.svn-baseUT”LjKux êëPKxºZ$ù/IAR-STR912/examples/ADC/polling/.svn/text-base/main.c.svn-baseUT“LjKux êëPKxºZ<ËãÓL0$}6IAR-STR912/examples/ADC/polling/.svn/all-wcpropsUT“LjKux êëPK xºZ<+íAº7IAR-STR912/examples/ADC/polling/.svn/props/UT“LjKux êëPK xºZ<)íA8IAR-STR912/examples/ADC/polling/.svn/tmp/UT“LjKux êëPK xºZ<3íA‚8IAR-STR912/examples/ADC/polling/.svn/tmp/prop-base/UT“LjKux êëPK xºZ<3íAï8IAR-STR912/examples/ADC/polling/.svn/tmp/text-base/UT“LjKux êëPK xºZ</íA\9IAR-STR912/examples/ADC/polling/.svn/tmp/props/UT“LjKux êëPKxºZ IAR-STR912/examples/.svn/tmp/text-base/UT”LjKux êëPK wºZ<#íAŸ IAR-STR912/examples/.svn/tmp/props/UT‘LjKux êëPKxºZ<*µªSp ¤ü IAR-STR912/examples/examples.ewwUT”LjKux êëPK wºZ<íAæ¢IAR-STR912/examples/MC/UT‘LjKux êëPKwºZ< 2m XtL¤7£IAR-STR912/examples/MC/mc.ewpUT‘LjKux êëPKwºZ<÷o18Ê!¤æ«IAR-STR912/examples/MC/Readme.txtUT‘LjKux êëPKwºZ<Ô¾õ1Ø<¤y°IAR-STR912/examples/MC/mc.ewdUT‘LjKux êëPK yºZ<íA¨¶IAR-STR912/examples/MC/.svn/UT•LjKux êëPKwºZIIAR-STR912/examples/DMA/dma.ewpUT‘LjKux êëPKwºZIAR-STR912/source/91x_adc.cUTLjKux êëPK yºZ<íALIAR-STR912/source/.svn/UT•LjKux êëPKvºZ«IAR-STR912/include/.svn/props/UTLjKux êëPK vºZ<íA–«IAR-STR912/include/.svn/tmp/UTLjKux êëPK vºZ<&íAì«IAR-STR912/include/.svn/tmp/prop-base/UTLjKux êëPK vºZ<&íAL¬IAR-STR912/include/.svn/tmp/text-base/UTLjKux êëPK vºZ<"íA¬¬IAR-STR912/include/.svn/tmp/props/UTLjKux êëPKvºZ make extensions true true true make examples true true true make cleanExamples true true true cpputest-3.7.2/platforms/Eclipse-Cygwin/.project000644 000765 000024 00000263226 12521603460 022636 0ustar00basvoddestaff000000 000000 CppUTest org.eclipse.cdt.managedbuilder.core.genmakebuilder org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, org.eclipse.cdt.core.cnature org.eclipse.cdt.core.ccnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature .gitattributes 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/.gitattributes .gitignore 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/.gitignore .travis.yml 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/.travis.yml .travis_github_deployer.yml 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/.travis_github_deployer.yml AUTHORS 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/AUTHORS CMakeLists.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CMakeLists.txt COPYING 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/COPYING ChangeLog 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/ChangeLog CppUTest.dsw 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest.dsw CppUTest.vcproj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest.vcproj CppUTest.vcxproj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest.vcxproj CppUTest_VS2008.ncb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest_VS2008.ncb CppUTest_VS2008.sln 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest_VS2008.sln CppUTest_VS2008.suo 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest_VS2008.suo CppUTest_VS2010.sln 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest_VS2010.sln CppUTest_VS2010.suo 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest_VS2010.suo Doxyfile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/Doxyfile INSTALL 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/INSTALL Makefile.am 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/Makefile.am Makefile.in 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/Makefile.in Makefile_CppUTestExt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/Makefile_CppUTestExt Makefile_using_MakefileWorker 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/Makefile_using_MakefileWorker NEWS 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/NEWS README 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/README README.md 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/README.md README_CppUTest_for_C.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/README_CppUTest_for_C.txt README_InstallCppUTest.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/README_InstallCppUTest.txt README_UsersOfPriorVersions.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/README_UsersOfPriorVersions.txt aclocal.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/aclocal.m4 autogen.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/autogen.sh build 2 virtual:/virtual builds 2 virtual:/virtual cmake 2 virtual:/virtual compile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/compile config.guess 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/config.guess config.h.cmake 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/config.h.cmake config.h.in 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/config.h.in config.h.in~ 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/config.h.in~ config.sub 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/config.sub configure 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/configure configure.ac 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/configure.ac cpputest-hist.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cpputest-hist.txt cpputest.pc.in 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cpputest.pc.in cpputest_build 2 virtual:/virtual cpputest_doxy_gen.conf 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cpputest_doxy_gen.conf depcomp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/depcomp docs 2 virtual:/virtual examples 2 virtual:/virtual include 2 virtual:/virtual install-sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/install-sh lib 2 virtual:/virtual ltmain.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/ltmain.sh m4 2 virtual:/virtual makeVS2008.bat 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/makeVS2008.bat makeVS2010.bat 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/makeVS2010.bat makeVc6.bat 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/makeVc6.bat missing 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/missing scripts 2 virtual:/virtual src 2 virtual:/virtual test-driver 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/test-driver tests 2 virtual:/virtual valgrind.suppressions 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/valgrind.suppressions build/ComponentMakefile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/ComponentMakefile build/ComponentMakefileExampleParameters 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/ComponentMakefileExampleParameters build/MakefileWorker.mk 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/MakefileWorker.mk build/StaticLibMakefile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/StaticLibMakefile build/alltests.mmp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/alltests.mmp build/bld.inf 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/bld.inf build/cpputest.mmp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/cpputest.mmp builds/make-gcc-macport.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/builds/make-gcc-macport.sh cmake/Modules 2 virtual:/virtual cpputest_build/CppUTestExtTests.exe 1 PARENT-2-PROJECT_LOC/cpputest_build/CppUTestExtTests.exe cpputest_build/CppUTestTests.exe 1 PARENT-2-PROJECT_LOC/cpputest_build/CppUTestTests.exe cpputest_build/Makefile 1 PARENT-2-PROJECT_LOC/cpputest_build/Makefile docs/WalkThrough_VS21010.docx 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/docs/WalkThrough_VS21010.docx examples/.cdtproject 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/.cdtproject examples/.project 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/.project examples/.settings 2 virtual:/virtual examples/AllTests 2 virtual:/virtual examples/ApplicationLib 2 virtual:/virtual examples/CppUTestExample.dsw 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/CppUTestExample.dsw examples/Makefile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/Makefile examples/README.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/README.txt include/CppUTest 2 virtual:/virtual include/CppUTestExt 2 virtual:/virtual include/Platforms 2 virtual:/virtual lib/CppUTest.lib 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/lib/CppUTest.lib lib/NoteOnVisualStudio.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/lib/NoteOnVisualStudio.txt lib/vs2008 2 virtual:/virtual m4/acx_pthread.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/acx_pthread.m4 m4/libtool.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/libtool.m4 m4/ltoptions.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/ltoptions.m4 m4/ltsugar.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/ltsugar.m4 m4/ltversion.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/ltversion.m4 m4/lt~obsolete.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/lt~obsolete.m4 scripts/CppUnitTemplates 2 virtual:/virtual scripts/GenerateSrcFiles.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/GenerateSrcFiles.sh scripts/InstallScripts.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/InstallScripts.sh scripts/NewCBaseModule.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCBaseModule.sh scripts/NewCFunction.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCFunction.sh scripts/NewCInterface.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCInterface.sh scripts/NewCIoDriver.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCIoDriver.sh scripts/NewCModule.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCModule.sh scripts/NewClass.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewClass.sh scripts/NewCmiModule.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCmiModule.sh scripts/NewHelp.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewHelp.sh scripts/NewInterface.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewInterface.sh scripts/NewLibrary.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewLibrary.sh scripts/NewPackageDirs.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewPackageDirs.sh scripts/NewProject.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewProject.sh scripts/README.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/README.txt scripts/RefactorRenameIncludeFile.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/RefactorRenameIncludeFile.sh scripts/ReleaseCppUTest.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/ReleaseCppUTest.sh scripts/UnityTemplates 2 virtual:/virtual scripts/VS2010Templates 2 virtual:/virtual scripts/checkForCppUTestEnvVariable.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/checkForCppUTestEnvVariable.sh scripts/convertToUnity 2 virtual:/virtual scripts/filterGcov.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/filterGcov.sh scripts/generate_junit_report_ant.xml 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/generate_junit_report_ant.xml scripts/reformat.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/reformat.sh scripts/squeeze.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/squeeze.sh scripts/svnignore.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/svnignore.txt scripts/templates 2 virtual:/virtual scripts/travis_ci_build.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/travis_ci_build.sh scripts/zipExclude.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/zipExclude.txt src/CppUTest 2 virtual:/virtual src/CppUTestExt 2 virtual:/virtual src/Platforms 2 virtual:/virtual tests/AllTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllTests.cpp tests/AllTests.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllTests.h tests/AllTests.vcproj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllTests.vcproj tests/AllTests.vcproj.HELLADE.struar2.user 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllTests.vcproj.HELLADE.struar2.user tests/AllTests.vcxproj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllTests.vcxproj tests/AllocLetTestFree.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocLetTestFree.c tests/AllocLetTestFree.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocLetTestFree.h tests/AllocLetTestFreeTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocLetTestFreeTest.cpp tests/AllocationInCFile.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocationInCFile.c tests/AllocationInCFile.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocationInCFile.h tests/AllocationInCppFile.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocationInCppFile.cpp tests/AllocationInCppFile.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocationInCppFile.h tests/CMakeLists.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CMakeLists.txt tests/CheatSheetTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CheatSheetTest.cpp tests/CommandLineArgumentsTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CommandLineArgumentsTest.cpp tests/CommandLineTestRunnerTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CommandLineTestRunnerTest.cpp tests/CppUTestExt 2 virtual:/virtual tests/Debug 2 virtual:/virtual tests/JUnitOutputTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/JUnitOutputTest.cpp tests/MemoryLeakDetectorTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/MemoryLeakDetectorTest.cpp tests/MemoryLeakOperatorOverloadsTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/MemoryLeakOperatorOverloadsTest.cpp tests/MemoryLeakWarningTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/MemoryLeakWarningTest.cpp tests/PluginTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/PluginTest.cpp tests/PreprocessorTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/PreprocessorTest.cpp tests/RunAllTests.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/RunAllTests.sh tests/SetPluginTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/SetPluginTest.cpp tests/SimpleStringTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/SimpleStringTest.cpp tests/TestFailureNaNTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestFailureNaNTest.cpp tests/TestFailureTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestFailureTest.cpp tests/TestFilterTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestFilterTest.cpp tests/TestHarness_cTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestHarness_cTest.cpp tests/TestHarness_cTestCFile.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestHarness_cTestCFile.c tests/TestInstallerTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestInstallerTest.cpp tests/TestMemoryAllocatorTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestMemoryAllocatorTest.cpp tests/TestOutputTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestOutputTest.cpp tests/TestRegistryTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestRegistryTest.cpp tests/TestResultTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestResultTest.cpp tests/TestUTestMacro.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestUTestMacro.cpp tests/UtestTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/UtestTest.cpp cmake/Modules/CppUTestConfigurationOptions.cmake 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cmake/Modules/CppUTestConfigurationOptions.cmake cmake/Modules/CppUTestWarningFlags.cmake 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cmake/Modules/CppUTestWarningFlags.cmake cmake/Modules/FindCXX11.cmake 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cmake/Modules/FindCXX11.cmake examples/.settings/org.eclipse.cdt.core.prefs 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/.settings/org.eclipse.cdt.core.prefs examples/AllTests/AllTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/AllTests.cpp examples/AllTests/CircularBufferTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/CircularBufferTest.cpp examples/AllTests/EventDispatcherTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/EventDispatcherTest.cpp examples/AllTests/HelloTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/HelloTest.cpp examples/AllTests/MockDocumentationTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/MockDocumentationTest.cpp examples/AllTests/PrinterTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/PrinterTest.cpp examples/AllTests/RunAllTests.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/RunAllTests.sh examples/ApplicationLib/AllTests.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/AllTests.h examples/ApplicationLib/CircularBuffer.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/CircularBuffer.cpp examples/ApplicationLib/CircularBuffer.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/CircularBuffer.h examples/ApplicationLib/EventDispatcher.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/EventDispatcher.cpp examples/ApplicationLib/EventDispatcher.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/EventDispatcher.h examples/ApplicationLib/ExamplesNewOverrides.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/ExamplesNewOverrides.h examples/ApplicationLib/MockPrinter.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/MockPrinter.h examples/ApplicationLib/Printer.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/Printer.cpp examples/ApplicationLib/Printer.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/Printer.h examples/ApplicationLib/hello.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/hello.c examples/ApplicationLib/hello.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/hello.h include/CppUTest/CommandLineArguments.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/CommandLineArguments.h include/CppUTest/CommandLineTestRunner.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/CommandLineTestRunner.h include/CppUTest/CppUTestConfig.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/CppUTestConfig.h include/CppUTest/JUnitTestOutput.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/JUnitTestOutput.h include/CppUTest/MemoryLeakDetector.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/MemoryLeakDetector.h include/CppUTest/MemoryLeakDetectorMallocMacros.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/MemoryLeakDetectorMallocMacros.h include/CppUTest/MemoryLeakDetectorNewMacros.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/MemoryLeakDetectorNewMacros.h include/CppUTest/MemoryLeakWarningPlugin.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/MemoryLeakWarningPlugin.h include/CppUTest/PlatformSpecificFunctions.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/PlatformSpecificFunctions.h include/CppUTest/PlatformSpecificFunctions_c.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/PlatformSpecificFunctions_c.h include/CppUTest/SimpleString.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/SimpleString.h include/CppUTest/StandardCLibrary.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/StandardCLibrary.h include/CppUTest/TestFailure.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestFailure.h include/CppUTest/TestFilter.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestFilter.h include/CppUTest/TestHarness.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestHarness.h include/CppUTest/TestHarness_c.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestHarness_c.h include/CppUTest/TestMemoryAllocator.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestMemoryAllocator.h include/CppUTest/TestOutput.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestOutput.h include/CppUTest/TestPlugin.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestPlugin.h include/CppUTest/TestRegistry.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestRegistry.h include/CppUTest/TestResult.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestResult.h include/CppUTest/TestTestingFixture.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestTestingFixture.h include/CppUTest/Utest.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/Utest.h include/CppUTest/UtestMacros.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/UtestMacros.h include/CppUTestExt/CodeMemoryReportFormatter.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/CodeMemoryReportFormatter.h include/CppUTestExt/GMock.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/GMock.h include/CppUTestExt/GTest.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/GTest.h include/CppUTestExt/GTestConvertor.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/GTestConvertor.h include/CppUTestExt/MemoryReportAllocator.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MemoryReportAllocator.h include/CppUTestExt/MemoryReportFormatter.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MemoryReportFormatter.h include/CppUTestExt/MemoryReporterPlugin.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MemoryReporterPlugin.h include/CppUTestExt/MockActualCall.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockActualCall.h include/CppUTestExt/MockCheckedActualCall.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockCheckedActualCall.h include/CppUTestExt/MockCheckedExpectedCall.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockCheckedExpectedCall.h include/CppUTestExt/MockExpectedCall.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockExpectedCall.h include/CppUTestExt/MockExpectedCallsList.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockExpectedCallsList.h include/CppUTestExt/MockFailure.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockFailure.h include/CppUTestExt/MockNamedValue.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockNamedValue.h include/CppUTestExt/MockSupport.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockSupport.h include/CppUTestExt/MockSupportPlugin.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockSupportPlugin.h include/CppUTestExt/MockSupport_c.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockSupport_c.h include/CppUTestExt/OrderedTest.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/OrderedTest.h include/Platforms/Gcc 2 virtual:/virtual include/Platforms/Symbian 2 virtual:/virtual include/Platforms/VisualCpp 2 virtual:/virtual include/Platforms/armcc 2 virtual:/virtual include/Platforms/c2000 2 virtual:/virtual lib/vs2008/CppUTest.lib 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/lib/vs2008/CppUTest.lib lib/vs2008/vc90.pdb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/lib/vs2008/vc90.pdb scripts/CppUnitTemplates/ClassName.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassName.cpp scripts/CppUnitTemplates/ClassName.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassName.h scripts/CppUnitTemplates/ClassNameC.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameC.c scripts/CppUnitTemplates/ClassNameC.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameC.h scripts/CppUnitTemplates/ClassNameCMultipleInstance.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCMultipleInstance.c scripts/CppUnitTemplates/ClassNameCMultipleInstance.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCMultipleInstance.h scripts/CppUnitTemplates/ClassNameCMultipleInstanceTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCMultipleInstanceTest.cpp scripts/CppUnitTemplates/ClassNameCPolymorphic.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCPolymorphic.c scripts/CppUnitTemplates/ClassNameCPolymorphic.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCPolymorphic.h scripts/CppUnitTemplates/ClassNameCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCTest.cpp scripts/CppUnitTemplates/ClassNameTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameTest.cpp scripts/CppUnitTemplates/InterfaceCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/InterfaceCTest.cpp scripts/CppUnitTemplates/InterfaceTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/InterfaceTest.cpp scripts/CppUnitTemplates/MockClassName.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/MockClassName.h scripts/CppUnitTemplates/MockClassNameC.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/MockClassNameC.c scripts/CppUnitTemplates/MockClassNameC.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/MockClassNameC.h scripts/CppUnitTemplates/ProjectTemplate 2 virtual:/virtual scripts/UnityTemplates/ClassNameCIoDriverTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/UnityTemplates/ClassNameCIoDriverTest.cpp scripts/UnityTemplates/ClassNameCMultipleInstanceTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/UnityTemplates/ClassNameCMultipleInstanceTest.cpp scripts/UnityTemplates/ClassNameCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/UnityTemplates/ClassNameCTest.cpp scripts/UnityTemplates/FunctionNameCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/UnityTemplates/FunctionNameCTest.cpp scripts/UnityTemplates/InterfaceCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/UnityTemplates/InterfaceCTest.cpp scripts/VS2010Templates/CppUTest_VS2010.props 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/VS2010Templates/CppUTest_VS2010.props scripts/VS2010Templates/README.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/VS2010Templates/README.txt scripts/convertToUnity/README.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/README.txt scripts/convertToUnity/cpp_u_test_to_unity.rb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/cpp_u_test_to_unity.rb scripts/convertToUnity/cpp_u_test_to_unity_utils.rb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/cpp_u_test_to_unity_utils.rb scripts/convertToUnity/cpp_u_test_to_unity_utils_tests.rb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/cpp_u_test_to_unity_utils_tests.rb scripts/convertToUnity/create_group_runner.rb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/create_group_runner.rb scripts/convertToUnity/create_unity_test_runner.rb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/create_unity_test_runner.rb scripts/templates/ClassName.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassName.cpp scripts/templates/ClassName.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassName.h scripts/templates/ClassNameC.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameC.c scripts/templates/ClassNameC.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameC.h scripts/templates/ClassNameCIoDriver.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCIoDriver.c scripts/templates/ClassNameCIoDriver.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCIoDriver.h scripts/templates/ClassNameCIoDriverTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCIoDriverTest.cpp scripts/templates/ClassNameCMultipleInstance.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCMultipleInstance.c scripts/templates/ClassNameCMultipleInstance.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCMultipleInstance.h scripts/templates/ClassNameCMultipleInstanceTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCMultipleInstanceTest.cpp scripts/templates/ClassNameCPolymorphic.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCPolymorphic.c scripts/templates/ClassNameCPolymorphic.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCPolymorphic.h scripts/templates/ClassNameCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCTest.cpp scripts/templates/ClassNameTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameTest.cpp scripts/templates/FunctionNameC.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/FunctionNameC.c scripts/templates/FunctionNameC.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/FunctionNameC.h scripts/templates/FunctionNameCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/FunctionNameCTest.cpp scripts/templates/InterfaceCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/InterfaceCTest.cpp scripts/templates/InterfaceTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/InterfaceTest.cpp scripts/templates/MockClassName.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/MockClassName.h scripts/templates/MockClassNameC.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/MockClassNameC.c scripts/templates/MockClassNameC.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/MockClassNameC.h scripts/templates/ProjectTemplate 2 virtual:/virtual src/CppUTest/CMakeLists.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/CMakeLists.txt src/CppUTest/CommandLineArguments.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/CommandLineArguments.cpp src/CppUTest/CommandLineTestRunner.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/CommandLineTestRunner.cpp src/CppUTest/JUnitTestOutput.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/JUnitTestOutput.cpp src/CppUTest/MemoryLeakDetector.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/MemoryLeakDetector.cpp src/CppUTest/MemoryLeakWarningPlugin.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/MemoryLeakWarningPlugin.cpp src/CppUTest/SimpleString.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/SimpleString.cpp src/CppUTest/TestFailure.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestFailure.cpp src/CppUTest/TestFilter.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestFilter.cpp src/CppUTest/TestHarness_c.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestHarness_c.cpp src/CppUTest/TestMemoryAllocator.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestMemoryAllocator.cpp src/CppUTest/TestOutput.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestOutput.cpp src/CppUTest/TestPlugin.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestPlugin.cpp src/CppUTest/TestRegistry.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestRegistry.cpp src/CppUTest/TestResult.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestResult.cpp src/CppUTest/Utest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/Utest.cpp src/CppUTestExt/CMakeLists.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/CMakeLists.txt src/CppUTestExt/CodeMemoryReportFormatter.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/CodeMemoryReportFormatter.cpp src/CppUTestExt/MemoryReportAllocator.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MemoryReportAllocator.cpp src/CppUTestExt/MemoryReportFormatter.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MemoryReportFormatter.cpp src/CppUTestExt/MemoryReporterPlugin.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MemoryReporterPlugin.cpp src/CppUTestExt/MockActualCall.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockActualCall.cpp src/CppUTestExt/MockExpectedCall.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockExpectedCall.cpp src/CppUTestExt/MockExpectedCallsList.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockExpectedCallsList.cpp src/CppUTestExt/MockFailure.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockFailure.cpp src/CppUTestExt/MockNamedValue.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockNamedValue.cpp src/CppUTestExt/MockSupport.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockSupport.cpp src/CppUTestExt/MockSupportPlugin.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockSupportPlugin.cpp src/CppUTestExt/MockSupport_c.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockSupport_c.cpp src/CppUTestExt/OrderedTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/OrderedTest.cpp src/Platforms/C2000 2 virtual:/virtual src/Platforms/Gcc 2 virtual:/virtual src/Platforms/GccNoStdC 2 virtual:/virtual src/Platforms/Iar 2 virtual:/virtual src/Platforms/Symbian 2 virtual:/virtual src/Platforms/VisualCpp 2 virtual:/virtual src/Platforms/armcc 2 virtual:/virtual tests/CppUTestExt/AllTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/AllTests.cpp tests/CppUTestExt/CMakeLists.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/CMakeLists.txt tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp tests/CppUTestExt/GMockTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/GMockTest.cpp tests/CppUTestExt/GTest1Test.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/GTest1Test.cpp tests/CppUTestExt/GTest2ConvertorTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/GTest2ConvertorTest.cpp tests/CppUTestExt/MemoryReportAllocatorTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MemoryReportAllocatorTest.cpp tests/CppUTestExt/MemoryReportFormatterTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MemoryReportFormatterTest.cpp tests/CppUTestExt/MemoryReporterPluginTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MemoryReporterPluginTest.cpp tests/CppUTestExt/MockActualCallTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockActualCallTest.cpp tests/CppUTestExt/MockCheatSheetTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockCheatSheetTest.cpp tests/CppUTestExt/MockExpectedCallTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockExpectedCallTest.cpp tests/CppUTestExt/MockExpectedFunctionsListTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockExpectedFunctionsListTest.cpp tests/CppUTestExt/MockFailureTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockFailureTest.cpp tests/CppUTestExt/MockFailureTest.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockFailureTest.h tests/CppUTestExt/MockPluginTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockPluginTest.cpp tests/CppUTestExt/MockSupportTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockSupportTest.cpp tests/CppUTestExt/MockSupport_cTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockSupport_cTest.cpp tests/CppUTestExt/MockSupport_cTestCFile.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockSupport_cTestCFile.c tests/CppUTestExt/MockSupport_cTestCFile.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockSupport_cTestCFile.h tests/CppUTestExt/OrderedTestTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/OrderedTestTest.cpp tests/Debug/AllTests.bsc 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.bsc tests/Debug/AllTests.exe 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.exe tests/Debug/AllTests.exe.embed.manifest 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.exe.embed.manifest tests/Debug/AllTests.exe.embed.manifest.res 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.exe.embed.manifest.res tests/Debug/AllTests.exe.intermediate.manifest 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.exe.intermediate.manifest tests/Debug/AllTests.ilk 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.ilk tests/Debug/AllTests.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.obj tests/Debug/AllTests.pdb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.pdb tests/Debug/AllTests.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.sbr tests/Debug/AllocationInCFile.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllocationInCFile.obj tests/Debug/AllocationInCFile.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllocationInCFile.sbr tests/Debug/AllocationInCppFile.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllocationInCppFile.obj tests/Debug/AllocationInCppFile.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllocationInCppFile.sbr tests/Debug/BuildLog.htm 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/BuildLog.htm tests/Debug/CheatSheetTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CheatSheetTest.obj tests/Debug/CheatSheetTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CheatSheetTest.sbr tests/Debug/CodeMemoryReportFormatterTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CodeMemoryReportFormatterTest.obj tests/Debug/CodeMemoryReportFormatterTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CodeMemoryReportFormatterTest.sbr tests/Debug/CommandLineArgumentsTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CommandLineArgumentsTest.obj tests/Debug/CommandLineArgumentsTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CommandLineArgumentsTest.sbr tests/Debug/CommandLineTestRunnerTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CommandLineTestRunnerTest.obj tests/Debug/CommandLineTestRunnerTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CommandLineTestRunnerTest.sbr tests/Debug/GMockTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/GMockTest.obj tests/Debug/GMockTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/GMockTest.sbr tests/Debug/GTest1Test.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/GTest1Test.obj tests/Debug/GTest1Test.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/GTest1Test.sbr tests/Debug/JUnitOutputTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/JUnitOutputTest.obj tests/Debug/JUnitOutputTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/JUnitOutputTest.sbr tests/Debug/MemoryLeakDetectorTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakDetectorTest.obj tests/Debug/MemoryLeakDetectorTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakDetectorTest.sbr tests/Debug/MemoryLeakOperatorOverloadsTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakOperatorOverloadsTest.obj tests/Debug/MemoryLeakOperatorOverloadsTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakOperatorOverloadsTest.sbr tests/Debug/MemoryLeakWarningTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakWarningTest.obj tests/Debug/MemoryLeakWarningTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakWarningTest.sbr tests/Debug/MemoryReportAllocatorTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReportAllocatorTest.obj tests/Debug/MemoryReportAllocatorTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReportAllocatorTest.sbr tests/Debug/MemoryReportFormatterTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReportFormatterTest.obj tests/Debug/MemoryReportFormatterTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReportFormatterTest.sbr tests/Debug/MemoryReporterPluginTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReporterPluginTest.obj tests/Debug/MemoryReporterPluginTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReporterPluginTest.sbr tests/Debug/MockActualCallTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockActualCallTest.obj tests/Debug/MockActualCallTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockActualCallTest.sbr tests/Debug/MockCheatSheetTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockCheatSheetTest.obj tests/Debug/MockCheatSheetTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockCheatSheetTest.sbr tests/Debug/MockExpectedCallTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockExpectedCallTest.obj tests/Debug/MockExpectedCallTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockExpectedCallTest.sbr tests/Debug/MockExpectedFunctionsListTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockExpectedFunctionsListTest.obj tests/Debug/MockExpectedFunctionsListTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockExpectedFunctionsListTest.sbr tests/Debug/MockFailureTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockFailureTest.obj tests/Debug/MockFailureTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockFailureTest.sbr tests/Debug/MockPluginTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockPluginTest.obj tests/Debug/MockPluginTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockPluginTest.sbr tests/Debug/MockSupportTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupportTest.obj tests/Debug/MockSupportTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupportTest.sbr tests/Debug/MockSupport_cTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupport_cTest.obj tests/Debug/MockSupport_cTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupport_cTest.sbr tests/Debug/MockSupport_cTestCFile.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupport_cTestCFile.obj tests/Debug/MockSupport_cTestCFile.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupport_cTestCFile.sbr tests/Debug/OrderedTestTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/OrderedTestTest.obj tests/Debug/OrderedTestTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/OrderedTestTest.sbr tests/Debug/PluginTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/PluginTest.obj tests/Debug/PluginTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/PluginTest.sbr tests/Debug/PreprocessorTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/PreprocessorTest.obj tests/Debug/PreprocessorTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/PreprocessorTest.sbr tests/Debug/SetPluginTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/SetPluginTest.obj tests/Debug/SetPluginTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/SetPluginTest.sbr tests/Debug/SimpleStringTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/SimpleStringTest.obj tests/Debug/SimpleStringTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/SimpleStringTest.sbr tests/Debug/TestFailureTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestFailureTest.obj tests/Debug/TestFailureTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestFailureTest.sbr tests/Debug/TestFilterTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestFilterTest.obj tests/Debug/TestFilterTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestFilterTest.sbr tests/Debug/TestHarness_cTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestHarness_cTest.obj tests/Debug/TestHarness_cTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestHarness_cTest.sbr tests/Debug/TestHarness_cTestCFile.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestHarness_cTestCFile.obj tests/Debug/TestHarness_cTestCFile.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestHarness_cTestCFile.sbr tests/Debug/TestInstallerTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestInstallerTest.obj tests/Debug/TestInstallerTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestInstallerTest.sbr tests/Debug/TestMemoryAllocatorTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestMemoryAllocatorTest.obj tests/Debug/TestMemoryAllocatorTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestMemoryAllocatorTest.sbr tests/Debug/TestOutputTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestOutputTest.obj tests/Debug/TestOutputTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestOutputTest.sbr tests/Debug/TestRegistryTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestRegistryTest.obj tests/Debug/TestRegistryTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestRegistryTest.sbr tests/Debug/TestResultTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestResultTest.obj tests/Debug/TestResultTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestResultTest.sbr tests/Debug/UtestTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/UtestTest.obj tests/Debug/UtestTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/UtestTest.sbr tests/Debug/mt.dep 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/mt.dep tests/Debug/vc90.idb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/vc90.idb tests/Debug/vc90.pdb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/vc90.pdb include/Platforms/Gcc/Platform.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/Gcc/Platform.h include/Platforms/Symbian/Platform.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/Symbian/Platform.h include/Platforms/VisualCpp/Platform.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/VisualCpp/Platform.h include/Platforms/VisualCpp/stdint.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/VisualCpp/stdint.h include/Platforms/armcc/Platform.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/armcc/Platform.h include/Platforms/c2000/Platform.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/c2000/Platform.h include/Platforms/c2000/stdint.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/c2000/stdint.h scripts/CppUnitTemplates/ProjectTemplate/ProjectMakefile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ProjectTemplate/ProjectMakefile scripts/CppUnitTemplates/ProjectTemplate/include 2 virtual:/virtual scripts/CppUnitTemplates/ProjectTemplate/src 2 virtual:/virtual scripts/CppUnitTemplates/ProjectTemplate/tests 2 virtual:/virtual scripts/templates/ProjectTemplate/Project.cproject 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/Project.cproject scripts/templates/ProjectTemplate/Project.project 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/Project.project scripts/templates/ProjectTemplate/ProjectMakefile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/ProjectMakefile scripts/templates/ProjectTemplate/include 2 virtual:/virtual scripts/templates/ProjectTemplate/src 2 virtual:/virtual scripts/templates/ProjectTemplate/tests 2 virtual:/virtual src/Platforms/C2000/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/C2000/UtestPlatform.cpp src/Platforms/Gcc/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/Gcc/UtestPlatform.cpp src/Platforms/GccNoStdC/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/GccNoStdC/UtestPlatform.cpp src/Platforms/Iar/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/Iar/UtestPlatform.cpp src/Platforms/Symbian/README_Symbian.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/Symbian/README_Symbian.txt src/Platforms/Symbian/SymbianMemoryLeakWarning.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/Symbian/SymbianMemoryLeakWarning.cpp src/Platforms/Symbian/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/Symbian/UtestPlatform.cpp src/Platforms/VisualCpp/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/VisualCpp/UtestPlatform.cpp src/Platforms/armcc/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/armcc/UtestPlatform.cpp scripts/CppUnitTemplates/ProjectTemplate/include/util 2 virtual:/virtual scripts/CppUnitTemplates/ProjectTemplate/src/util 2 virtual:/virtual scripts/CppUnitTemplates/ProjectTemplate/tests/AllTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ProjectTemplate/tests/AllTests.cpp scripts/CppUnitTemplates/ProjectTemplate/tests/util 2 virtual:/virtual scripts/templates/ProjectTemplate/include/util 2 virtual:/virtual scripts/templates/ProjectTemplate/src/util 2 virtual:/virtual scripts/templates/ProjectTemplate/tests/AllTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/tests/AllTests.cpp scripts/templates/ProjectTemplate/tests/util 2 virtual:/virtual scripts/CppUnitTemplates/ProjectTemplate/include/util/ProjectBuildTime.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ProjectTemplate/include/util/ProjectBuildTime.h scripts/CppUnitTemplates/ProjectTemplate/src/util/ProjectBuildTime.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ProjectTemplate/src/util/ProjectBuildTime.cpp scripts/CppUnitTemplates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp scripts/templates/ProjectTemplate/include/util/ProjectBuildTime.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/include/util/ProjectBuildTime.h scripts/templates/ProjectTemplate/src/util/ProjectBuildTime.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/src/util/ProjectBuildTime.cpp scripts/templates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp cpputest-3.7.2/platforms/Eclipse-Cygwin/CppUTestExtTests.launch000644 000765 000024 00000002626 12521603460 025571 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms/Eclipse-Cygwin/CppUTestTests.launch000644 000765 000024 00000002612 12521603460 025103 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms/Eclipse-Cygwin/README.md000644 000765 000024 00000010271 12521603460 022434 0ustar00basvoddestaff000000 000000 ##Using the Eclipse-Cygwin Project This project is for use on the Windows platform. These are the steps required for using it. (If you only wish to compile the CppUTest libraries, it is recommended that you use the method described at http://cpputest.github.io, rather than setting up Eclipse). ###Preparation ####1. Install Cygwin You need to have Cygwin installed, with at least the Gnu C\C++ compiler, make, autotools and libtool. Please follow the instructions at http://cpputest.github.io to build CppUTest from the Cygwin bash prompt. ####2. Set your PATH Next, you need to add the path to your Cygwin binaries to your Windows system path, e.g. ```dos C:\\Cygwin\bin ``` ####3. Install Eclipse CDT Use your existing Eclipse CDT (Juno, Kepler, ...) or unpack the release to your system drive. You may use the 32 bit version as it will work on all systems. Unless you have a specific reason, you do not require the 64 bit version. You may need to install or update your Java JRE and add it to your system path. The JRE needs to match, e.g. 32 bit Eclipse requires the 32 bit JRE. ####4. Install the C/C++Unit plugin Open Eclipse. Accept the default workspace for now (you may want to set a more appropriate workspace location later on). Then install the "C/C++ Unit Test" plugin: "Help"->"Install New Software"-> work with "Kepler - http://download.eclipse.org/releases/kepler". You will find the plugin under: ``` [ ] Programming Languages [x] C/C++ Unit Testing Support. ``` While you are at it, you might also want to install: ``` [ ] Linux Tools [x] Gcov Integration ``` ####5. Add the CppUTest plugin Clone the [CppUTest Eclipse Test Runner](https://github.com/tcmak/CppUTestEclipseJunoTestRunner) and add it to Eclipse following the instructions there. ###Import this project into Eclipse In Eclipse you can't simply "open" a project - you have to first import it into the workspace: * File->Import...->General->Existing Projects into workspace * [Next >]->Select root directory: `/Platforms/Eclipse-Cygwin` * Make sure that `[ ] Copy projects into workspace` is **NOT** ticked. * Click Finish. ###Compile and run tests Before you can compile CppUTest in Eclipse, you must configure it using Automake. Instructions can be found at http://cpputest.github.io/. Once you have done this, select a configuration (Libraries, Check, CppUTestTests or CppUTestExtTests) via Project->BuildConfiguration->Set Active>. The 'Check' configuration will build the libraries along with all tests and run the tests. ###Working with the C/C++ Unit plugin Make sure your unit test executable has been built and exists, e.g. cpputest_build/CppUTestTests.exe. The first time you run tests using the plugin, you need to select them via Run->Run Configurations...->C/C++Unit->CppUTestTest. Click [Run]. (If Run is greyed out, you need to build the configuration CppUTestTests first) Once you have run the tests at least once, you should be able to select them by clicking the down triangle next to the green "Run" icon, where it should be listed right at the top. On subsequent runs, the executable will be built automatically, if necessary. Note that launch configurations have been included with this project; in your own projects, you will need to create these yourself. This is an example of what a successful test run would look like: ![Successful Test Run](https://raw.githubusercontent.com/cpputest/cpputest.github.io/master/images/eclipse-testrunner-01.png) You can select and rerun individual tests in the upper pane, and error messages for failed tests will appear in the lower pane. ###Troubleshooting ####Problem: I am getting no test results... ...but you know your tests should have run, and you did not receive any error message. #####Possible Reason: This can happen if the Cygwin-generated binary can't find the Cygwin DLLs. (If you were to run your test executable at the Windows cmd prompt, you would see a Windows error message box to that effect). Since no error message is displayed in the console via stderr, this leaves the test runner ignorant of what happenend #####Solution: You need to add /Cygwin/bin to your system PATH variable. Then you must restart Eclipse. cpputest-3.7.2/platforms/CCStudio/CppUTest.pjt000644 000765 000024 00000004072 12521603460 022240 0ustar00basvoddestaff000000 000000 ; Code Composer Project File, Version 2.0 (do not modify or remove this line) [Project Settings] ProjectDir="C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\" ProjectType=Library CPUFamily=TMS320C28XX Tool="Archiver" Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Config="Debug" [Source Files] Source="..\..\src\CppUTest\CommandLineArguments.cpp" Source="..\..\src\CppUTest\CommandLineTestRunner.cpp" Source="..\..\src\CppUTest\JUnitTestOutput.cpp" Source="..\..\src\CppUTest\MemoryLeakDetector.cpp" Source="..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp" Source="..\..\src\CppUTest\SimpleMutex.cpp" Source="..\..\src\CppUTest\SimpleString.cpp" Source="..\..\src\CppUTest\TestFailure.cpp" Source="..\..\src\CppUTest\TestFilter.cpp" Source="..\..\src\CppUTest\TestHarness_c.cpp" Source="..\..\src\CppUTest\TestMemoryAllocator.cpp" Source="..\..\src\CppUTest\TestOutput.cpp" Source="..\..\src\CppUTest\TestPlugin.cpp" Source="..\..\src\CppUTest\TestRegistry.cpp" Source="..\..\src\CppUTest\TestResult.cpp" Source="..\..\src\CppUTest\Utest.cpp" Source="..\..\src\CppUTestExt\CodeMemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\MemoryReportAllocator.cpp" Source="..\..\src\CppUTestExt\MemoryReporterPlugin.cpp" Source="..\..\src\CppUTestExt\MemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\MockActualCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCallsList.cpp" Source="..\..\src\CppUTestExt\MockFailure.cpp" Source="..\..\src\CppUTestExt\MockNamedValue.cpp" Source="..\..\src\CppUTestExt\MockSupport.cpp" Source="..\..\src\CppUTestExt\MockSupport_c.cpp" Source="..\..\src\CppUTestExt\MockSupportPlugin.cpp" Source="..\..\src\CppUTestExt\OrderedTest.cpp" Source="..\..\src\Platforms\C2000\UtestPlatform.cpp" ["Archiver" Settings: "Debug"] Options=-r -o"..\..\lib\c2000\CppUTestd.lib" ["Compiler" Settings: "Debug"] Options=-g -rtti -pdsw225 -pden -pds1 -fr"$(Proj_dir)\Debug" -i"$(Proj_dir)\..\..\include" -d"_DEBUG" -d"LARGE_MODEL" -d"CPPUTEST_STD_CPP_LIB_DISABLED" -d"CPPUTEST_USE_MEM_LEAK_DETECTION" -ml -v28 cpputest-3.7.2/platforms/CCStudio/CppUTest.wks000644 000765 000024 00000037066 12521603460 022260 0ustar00basvoddestaff000000 000000 !ÿÿ”& )ROOT—&} T ApplicationDefault Groupûj«—&§ * BOOKMARKSxx1•&B Ë$ __SYS_TEM__•&§í" Simulator•&Ë&TMS320C2800_0—&í/TMS320C2800_0ù£PeàhdfD@?_sGº ÿRAMÿ?NONE@ÿORAMPÿNONE€ÿÿRAMÿÿNONEÿÿ3RAM48NONE€8ˆ8ROM‰88NONE88ROM‘8ÿ8NONE8ÿ8ROM8ÿ?NONE€?ÿ¿?RAMÀ?ÿß?NONEà?ÿÿ?ROMÿRAM ÿ?NONE@ÿoRAMpÿ R|W|AS2€ÿÿRAMÿÿNONEÿÿ/RAM0ÿÿ3ROM48NONE€8ˆ8ROM‰88NONE88ROM‘8ÿ8NONE8ÿ8ROM8ÿ?NONE€?ÿ¿?RAMÀ?ÿß?NONEà?ÿÿ?ROM@ÿÿÿÿNONEÿÿNONESЗ&– T MAIN WINDOW,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿî,•&,= ¾(__LAYOUT_INFO__—&–`__LAYOUT_INFO__StandardLayout 0þÿ Simulator TMS320C2800_0—&–6 Layout 0é5Põ¯.\CC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTest.pjtDebugRC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTestExtRunAllTests1.pjtDebugRC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTestExtRunAllTests2.pjtDebugOC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTestRunAllTests1.pjtDebugOC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTestRunAllTests2.pjtDebug,ƒÿÿƒÿÿÿÿÿÿÿÿÿÿPäsßþÿÿ COutputFrameOutputB1!èßþP ÿÿCZincControlBarNot fully implementedA1 èßþPProperty Page ManagerÿÿCControlPluginParentWnd&{40EA375F-66C8-4616-B0AA-49B3FF3C4263}&PropertyPageManager Control - 1 Plugin ÐÏࡱá>þÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ_7ê@ÈfF°ªI³ÿþÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot EntryÿÿÿÿÿÿÿÿW'ád+Ô¯ñP{^ W°“ûµÏContentsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ__ww.wks.version.07152003__ Watch Locals__ww.wks.version.07152003__Watch 1\0 ch auto 0 0 0 0 ch 0 1 0 '0' <= ch && '9' >= ch auto 0 0 0 0 '0' <= ch && '9' >= ch 0 0 chÿÿÿÿ'0' <= ch && '9' >= chÿÿÿÿ€ DisassemblyA1#èßþPDisassembly (abort)ÿÿ CDisAsmWndþÿ Simulator TMS320C2800_0‰‰Ôþÿ Simulator TMS320C2800_0á×1á×1(  èþÿÿÿÿèþÿÿÿÔ> €ÿÿÿÿ500000ð èþÿÿÿþÿÿÿÿè €ÿÿÿÿ1000000¡uðèþÿÿÿþÿÿÿÿèþÿÿÿþÿÿÿn €ÿÿÿÿ500000ðèÒÿèÒ> €ÿÿÿÿ500000ðèlþÿÿÿÿèlþÿÿÿ™ €ÿÿÿÿ500000ðèmþÿÿÿÿè  €ÿÿÿÿ1000000ð èþÿÿÿþÿÿÿÿè €ÿÿÿÿ11000000.Cðèÿÿÿÿÿè  €ÿÿÿÿ1000000ðèþÿÿÿþÿÿÿÿèþÿÿÿþÿÿÿ €ÿÿÿÿ250000ðèþÿÿÿÿèþÿÿÿ €ÿÿÿÿ250000ð èþÿÿÿÿèþÿÿÿƒ €ÿÿÿÿ500000ðèþÿÿÿýÿÿÿÿè  €ÿÿÿÿ1000000ðèþÿÿÿ€ÿè  €ÿÿÿÿ1000000ðèþÿÿÿþÿÿÿÿè  €ÿÿÿÿ1000000ð èÿÿÿÿÿè  €ÿÿÿÿ1000000 èÿÿÿÿÿÿÿÿÿ1000000èÿÿÿÿÿÿÿÿÿ,0,èèèèèè èè蹡º¡»¡èÿÿÿÿÿÿÿÿÿ,0, è!è$èèÿÿÿÿÿÿÿÿÿ,0, èèèè è"èèÿÿÿÿÿÿÿÿÿ,0, è 蹡þÿÿÿ<ÿèþÿÿÿ<D] €ÿÿÿÿ333333ðº¡B<ÿèB<ó] €ÿÿÿÿ333333ð»¡ñ<ÿèñ<] €ÿÿÿÿ333333ð èÿè €ÿÿÿÿ11000000,´ðÈœÿÿÿ!èÿèüù€ÿÿÿÿ1600000,´ð"èÿèm€ÿÿÿÿ11000000,´ð$èÿèÿù€ÿÿÿÿ1400000,´ð#èþÿÿÿþÿÿÿÿè €ÿÿÿÿ!,ÿÿÿÿÿÿÿÿøÿÿÿâÿÿÿ¯¯ç…1000000,´ðq,ÿÿÿÿÿÿÿÿøÿÿÿâÿÿÿ¯¯ç…胇ÿ,0,#è#è,ÿÿÿÿÿÿÿÿøÿÿÿâÿÿÿ}}.Untitled>C:\data\00_Dev\05_CppUTest\cpputest\tests\SimpleStringTest.cpp>c:\data\00_dev\05_cpputest\cpputest\tests\simplestringtest.cppfŒô¯*.*7C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\XC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\Debug\CppUTestExtRunAllTests2.outRC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTestExtRunAllTests2.pjt7C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\•& N=" Simulator•&,=t=&TMS320C2800_0—&N=ÂUBMBreakpointsšcpputest-3.7.2/platforms/CCStudio/CppUTestExtRunAllTests1.pjt000644 000765 000024 00000006265 12521603460 025151 0ustar00basvoddestaff000000 000000 ; Code Composer Project File, Version 2.0 (do not modify or remove this line) [Project Settings] ProjectDir="C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\" ProjectType=Executable CPUFamily=TMS320C28XX Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Tool="Linker" Config="Debug" [Source Files] Source="..\..\src\CppUTest\CommandLineArguments.cpp" Source="..\..\src\CppUTest\CommandLineTestRunner.cpp" Source="..\..\src\CppUTest\JUnitTestOutput.cpp" Source="..\..\src\CppUTest\MemoryLeakDetector.cpp" Source="..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp" Source="..\..\src\CppUTest\SimpleMutex.cpp" Source="..\..\src\CppUTest\SimpleString.cpp" Source="..\..\src\CppUTest\TestFailure.cpp" Source="..\..\src\CppUTest\TestFilter.cpp" Source="..\..\src\CppUTest\TestHarness_c.cpp" Source="..\..\src\CppUTest\TestMemoryAllocator.cpp" Source="..\..\src\CppUTest\TestOutput.cpp" Source="..\..\src\CppUTest\TestPlugin.cpp" Source="..\..\src\CppUTest\TestRegistry.cpp" Source="..\..\src\CppUTest\TestResult.cpp" Source="..\..\src\CppUTest\Utest.cpp" Source="..\..\src\CppUTestExt\CodeMemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\MemoryReportAllocator.cpp" Source="..\..\src\CppUTestExt\MemoryReporterPlugin.cpp" Source="..\..\src\CppUTestExt\MemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\MockActualCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCallsList.cpp" Source="..\..\src\CppUTestExt\MockFailure.cpp" Source="..\..\src\CppUTestExt\MockNamedValue.cpp" Source="..\..\src\CppUTestExt\MockSupport.cpp" Source="..\..\src\CppUTestExt\MockSupport_c.cpp" Source="..\..\src\CppUTestExt\MockSupportPlugin.cpp" Source="..\..\src\CppUTestExt\OrderedTest.cpp" Source="..\..\src\Platforms\C2000\UtestPlatform.cpp" Source="..\..\tests\CppUTestExt\CodeMemoryReportFormatterTest.cpp" Source="..\..\tests\CppUTestExt\GMockTest.cpp" Source="..\..\tests\CppUTestExt\GTest1Test.cpp" Source="..\..\tests\CppUTestExt\GTest2ConvertorTest.cpp" Source="..\..\tests\CppUTestExt\MemoryReportAllocatorTest.cpp" Source="..\..\tests\CppUTestExt\MemoryReporterPluginTest.cpp" Source="..\..\tests\CppUTestExt\MemoryReportFormatterTest.cpp" Source="..\..\tests\CppUTestExt\MockActualCallTest.cpp" Source="..\..\tests\CppUTestExt\MockCheatSheetTest.cpp" Source="..\..\tests\CppUTestExt\MockExpectedCallTest.cpp" Source="..\..\tests\CppUTestExt\MockExpectedFunctionsListTest.cpp" Source="..\..\tests\CppUTestExt\MockFailureTest.cpp" Source="C:\CCStudio_v3.3\C2000\cgtools\lib\src\farmem_cpp.cpp" Source="tests\CppUTestExt\AllTestsForTarget.cpp" Source="sim28335.cmd" ["Compiler" Settings: "Debug"] Options=-g -rtti -pdsw225 -pden -pds1 -fr"$(Proj_dir)\Debug" -i"$(Proj_dir)\..\..\include" -i"$(Proj_dir)\..\..\include\CppUTestExt\CppUTestGMock" -i"$(Proj_dir)\..\..\tests" -d"_DEBUG" -d"LARGE_MODEL" -d"CPPUTEST_STD_CPP_LIB_DISABLED" -d"CPPUTEST_USE_MEM_LEAK_DETECTION" -d"CPPUTEST_USE_MALLOC_MACROS" -ml -v28 --preinclude="$(Proj_dir)\..\..\include\Platforms\c2000\stdint.h" ["Linker" Settings: "Debug"] Options=-a -c -farheap0x20000 -f0x0 -heap0x2000 -m".\Debug\CppUTestExtRunAllTests.map" -o".\Debug\CppUTestExtRunAllTests1.out" -stack0x4000 --disable_auto_rts -w -l"rts2800_ml.lib" cpputest-3.7.2/platforms/CCStudio/CppUTestExtRunAllTests2.pjt000644 000765 000024 00000005500 12521603460 025141 0ustar00basvoddestaff000000 000000 ; Code Composer Project File, Version 2.0 (do not modify or remove this line) [Project Settings] ProjectDir="C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\" ProjectType=Executable CPUFamily=TMS320C28XX Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Tool="Linker" Config="Debug" [Source Files] Source="..\..\src\CppUTest\CommandLineArguments.cpp" Source="..\..\src\CppUTest\CommandLineTestRunner.cpp" Source="..\..\src\CppUTest\JUnitTestOutput.cpp" Source="..\..\src\CppUTest\MemoryLeakDetector.cpp" Source="..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp" Source="..\..\src\CppUTest\SimpleMutex.cpp" Source="..\..\src\CppUTest\SimpleString.cpp" Source="..\..\src\CppUTest\TestFailure.cpp" Source="..\..\src\CppUTest\TestFilter.cpp" Source="..\..\src\CppUTest\TestHarness_c.cpp" Source="..\..\src\CppUTest\TestMemoryAllocator.cpp" Source="..\..\src\CppUTest\TestOutput.cpp" Source="..\..\src\CppUTest\TestPlugin.cpp" Source="..\..\src\CppUTest\TestRegistry.cpp" Source="..\..\src\CppUTest\TestResult.cpp" Source="..\..\src\CppUTest\Utest.cpp" Source="..\..\src\CppUTestExt\CodeMemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\MemoryReportAllocator.cpp" Source="..\..\src\CppUTestExt\MemoryReporterPlugin.cpp" Source="..\..\src\CppUTestExt\MemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\MockActualCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCallsList.cpp" Source="..\..\src\CppUTestExt\MockFailure.cpp" Source="..\..\src\CppUTestExt\MockNamedValue.cpp" Source="..\..\src\CppUTestExt\MockSupport.cpp" Source="..\..\src\CppUTestExt\MockSupport_c.cpp" Source="..\..\src\CppUTestExt\MockSupportPlugin.cpp" Source="..\..\src\CppUTestExt\OrderedTest.cpp" Source="..\..\src\Platforms\C2000\UtestPlatform.cpp" Source="..\..\tests\CppUTestExt\MockFailureTest.cpp" Source="..\..\tests\CppUTestExt\MockPluginTest.cpp" Source="..\..\tests\CppUTestExt\MockSupport_cTest.cpp" Source="..\..\tests\CppUTestExt\MockSupport_cTestCFile.c" Source="..\..\tests\CppUTestExt\MockSupportTest.cpp" Source="..\..\tests\CppUTestExt\OrderedTestTest.cpp" Source="C:\CCStudio_v3.3\C2000\cgtools\lib\src\farmem_cpp.cpp" Source="tests\CppUTestExt\AllTestsForTarget.cpp" Source="sim28335.cmd" ["Compiler" Settings: "Debug"] Options=-g -rtti -pdsw225 -pden -pds1 -fr"$(Proj_dir)\Debug" -i"$(Proj_dir)\..\..\include" -i"$(Proj_dir)\..\..\include\CppUTestExt\CppUTestGMock" -i"$(Proj_dir)\..\..\tests" -d"_DEBUG" -d"LARGE_MODEL" -d"CPPUTEST_STD_CPP_LIB_DISABLED" -d"CPPUTEST_USE_MEM_LEAK_DETECTION" -d"CPPUTEST_USE_MALLOC_MACROS" -ml -v28 --preinclude="$(Proj_dir)\..\..\include\Platforms\c2000\stdint.h" ["Linker" Settings: "Debug"] Options=-a -c -farheap0x20000 -f0x0 -heap0x2000 -m".\Debug\CppUTestExtRunAllTests.map" -o".\Debug\CppUTestExtRunAllTests2.out" -stack0x4000 --disable_auto_rts -w -l"rts2800_ml.lib" cpputest-3.7.2/platforms/CCStudio/CppUTestRunAllTests1.pjt000644 000765 000024 00000004542 12521603460 024464 0ustar00basvoddestaff000000 000000 ; Code Composer Project File, Version 2.0 (do not modify or remove this line) [Project Settings] ProjectDir="C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\" ProjectType=Executable CPUFamily=TMS320C28XX Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Tool="Linker" Config="Debug" [Source Files] Source="..\..\src\CppUTest\CommandLineArguments.cpp" Source="..\..\src\CppUTest\CommandLineTestRunner.cpp" Source="..\..\src\CppUTest\JUnitTestOutput.cpp" Source="..\..\src\CppUTest\MemoryLeakDetector.cpp" Source="..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp" Source="..\..\src\CppUTest\SimpleMutex.cpp" Source="..\..\src\CppUTest\SimpleString.cpp" Source="..\..\src\CppUTest\TestFailure.cpp" Source="..\..\src\CppUTest\TestFilter.cpp" Source="..\..\src\CppUTest\TestHarness_c.cpp" Source="..\..\src\CppUTest\TestMemoryAllocator.cpp" Source="..\..\src\CppUTest\TestOutput.cpp" Source="..\..\src\CppUTest\TestPlugin.cpp" Source="..\..\src\CppUTest\TestRegistry.cpp" Source="..\..\src\CppUTest\TestResult.cpp" Source="..\..\src\CppUTest\Utest.cpp" Source="..\..\src\Platforms\C2000\UtestPlatform.cpp" Source="..\..\tests\AllocationInCFile.c" Source="..\..\tests\AllocationInCppFile.cpp" Source="..\..\tests\AllocLetTestFree.c" Source="..\..\tests\AllocLetTestFreeTest.cpp" Source="..\..\tests\CheatSheetTest.cpp" Source="..\..\tests\CommandLineArgumentsTest.cpp" Source="..\..\tests\CommandLineTestRunnerTest.cpp" Source="..\..\tests\JUnitOutputTest.cpp" Source="..\..\tests\MemoryLeakDetectorTest.cpp" Source="..\..\tests\MemoryLeakOperatorOverloadsTest.cpp" Source="..\..\tests\MemoryLeakWarningTest.cpp" Source="..\..\tests\PluginTest.cpp" Source="..\..\tests\PreprocessorTest.cpp" Source="..\..\tests\SetPluginTest.cpp" Source="C:\CCStudio_v3.3\C2000\cgtools\lib\src\farmem_cpp.cpp" Source="tests\CppUTest\AllTestsForTarget.cpp" Source="sim28335.cmd" ["Compiler" Settings: "Debug"] Options=-g -rtti -pdsw225 -pden -pds1 -fr"$(Proj_dir)\Debug" -i"$(Proj_dir)\..\..\include" -i"$(Proj_dir)\..\..\tests" -d"_DEBUG" -d"LARGE_MODEL" -d"CPPUTEST_STD_CPP_LIB_DISABLED" -d"CPPUTEST_USE_MEM_LEAK_DETECTION" -ml -v28 --preinclude="$(Proj_dir)\..\..\include\Platforms\c2000\stdint.h" ["Linker" Settings: "Debug"] Options=-a -c -farheap0x020000 -f0x0 -heap0x2000 -m".\Debug\CppUTestRunAllTests1.map" -o".\Debug\CppUTestRunAllTests1.out" -stack0x4000 --disable_auto_rts -w -l"rts2800_ml.lib" cpputest-3.7.2/platforms/CCStudio/CppUTestRunAllTests2.pjt000644 000765 000024 00000004424 12521603460 024464 0ustar00basvoddestaff000000 000000 ; Code Composer Project File, Version 2.0 (do not modify or remove this line) [Project Settings] ProjectDir="C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\" ProjectType=Executable CPUFamily=TMS320C28XX Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Tool="Linker" Config="Debug" [Source Files] Source="..\..\src\CppUTest\CommandLineArguments.cpp" Source="..\..\src\CppUTest\CommandLineTestRunner.cpp" Source="..\..\src\CppUTest\JUnitTestOutput.cpp" Source="..\..\src\CppUTest\MemoryLeakDetector.cpp" Source="..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp" Source="..\..\src\CppUTest\SimpleMutex.cpp" Source="..\..\src\CppUTest\SimpleString.cpp" Source="..\..\src\CppUTest\TestFailure.cpp" Source="..\..\src\CppUTest\TestFilter.cpp" Source="..\..\src\CppUTest\TestHarness_c.cpp" Source="..\..\src\CppUTest\TestMemoryAllocator.cpp" Source="..\..\src\CppUTest\TestOutput.cpp" Source="..\..\src\CppUTest\TestPlugin.cpp" Source="..\..\src\CppUTest\TestRegistry.cpp" Source="..\..\src\CppUTest\TestResult.cpp" Source="..\..\src\CppUTest\Utest.cpp" Source="..\..\src\Platforms\C2000\UtestPlatform.cpp" Source="..\..\tests\SimpleStringTest.cpp" Source="..\..\tests\TestFailureNaNTest.cpp" Source="..\..\tests\TestFailureTest.cpp" Source="..\..\tests\TestFilterTest.cpp" Source="..\..\tests\TestHarness_cTest.cpp" Source="..\..\tests\TestHarness_cTestCFile.c" Source="..\..\tests\TestInstallerTest.cpp" Source="..\..\tests\TestMemoryAllocatorTest.cpp" Source="..\..\tests\TestOutputTest.cpp" Source="..\..\tests\TestRegistryTest.cpp" Source="..\..\tests\TestResultTest.cpp" Source="..\..\tests\TestUTestMacro.cpp" Source="..\..\tests\UtestTest.cpp" Source="C:\CCStudio_v3.3\C2000\cgtools\lib\src\farmem_cpp.cpp" Source="tests\CppUTest\AllTestsForTarget.cpp" Source="sim28335.cmd" ["Compiler" Settings: "Debug"] Options=-g -rtti -pdsw225 -pden -pds1 -fr"$(Proj_dir)\Debug" -i"$(Proj_dir)\..\..\include" -i"$(Proj_dir)\..\..\tests" -d"_DEBUG" -d"LARGE_MODEL" -d"CPPUTEST_STD_CPP_LIB_DISABLED" -d"CPPUTEST_USE_MEM_LEAK_DETECTION" -ml -v28 --preinclude="$(Proj_dir)\..\..\include\Platforms\c2000\stdint.h" ["Linker" Settings: "Debug"] Options=-a -c -farheap0x020000 -f0x0 -heap0x2000 -m".\Debug\CppUTestRunAllTests2.map" -o".\Debug\CppUTestRunAllTests2.out" -stack0x4000 --disable_auto_rts -w -l"rts2800_ml.lib" cpputest-3.7.2/platforms/CCStudio/sim28335.cmd000644 000765 000024 00000002607 12521603460 021676 0ustar00basvoddestaff000000 000000 /************************************************************/ /* Linker command file for simulator only */ /************************************************************/ /* Contains only the bare necessities for running a unit test * in the TI CCS 3.3 Simulator */ MEMORY { PAGE 0 : /* Program Memory */ /* Flash as one big segment */ FLASH : origin = 0x300000, length = 0x040000 PAGE 1 : /* Data Memory */ /* Internal SARAM */ RAM_0 : origin = 0x000000, length = 0x002000 /* 0x2000 to 0x3FFF: Not defined */ STACK : origin = 0x004000, length = 0x004000 /* stack needs own segment in low RAM */ RAM_1 : origin = 0x008000, length = 0x008000 /* External memory */ EMEM : origin = 0x100000, length = 0x030000 } SECTIONS { /* segment allocation */ .cinit : > FLASH, PAGE = 0 /* initialized internal RAM-data */ .pinit : > FLASH, PAGE = 0 /* initialized constructors */ .stack : > STACK, PAGE = 1 .text : > FLASH, PAGE = 0 .bss : > RAM_0, PAGE = 1 .ebss : > RAM_1, FILL = 0x0020, PAGE = 1 /* uninitialized external RAM-data */ .econst : > FLASH, PAGE = 0 .esysmem : > EMEM, PAGE = 1 /* not used if no malloc calls in code */ .cio : > RAM_0, PAGE = 1 /* keep the linker from complaining */ .reset : > FLASH, PAGE = 0, TYPE = DSECT /* not used */ } cpputest-3.7.2/platforms/CCStudio/sim28335.gel000644 000765 000024 00000025610 12521603460 021701 0ustar00basvoddestaff000000 000000 /********************************************************************/ /* f28335.gel */ /* Version 4.00.2 */ /* */ /* This GEL file is to be used with the TMS320F28335 DSP. */ /* Changes may be required to support specific hardware designs. */ /* */ /* Code Composer Studio supports six reserved GEL functions that */ /* automatically get executed if they are defined. They are: */ /* */ /* StartUp() - Executed whenever CCS is invoked */ /* OnReset() - Executed after Debug->Reset CPU */ /* OnRestart() - Executed after Debug->Restart */ /* OnPreFileLoaded() - Executed before File->Load Program */ /* OnFileLoaded() - Executed after File->Load Program */ /* OnTargetConnect() - Executed after Debug->Connect */ /* */ /********************************************************************/ StartUp() { /* The next line automatically loads the .gel file that comes */ /* with the DSP2833x Peripheral Header Files download. To use, */ /* uncomment, and copy the peripheral header .gel file to */ /* same directory as device .gel file. */ // GEL_LoadGel("$(GEL_file_dir)\\DSP2833x_Peripheral.gel"); } OnReset(int nErrorCode) { C28x_Mode(); XINTF_Enable(); } OnRestart(int nErrorCode) { /* CCS will call OnRestart() when you do a Debug->Restart and */ /* after you load a new file. Between running interrupt based */ /* programs, this function will clear interrupts and help keep */ /* the processor from going off into invalid memory. */ C28x_Mode(); IER = 0; IFR = 0; } OnPreFileLoaded() { C28x_Mode(); XINTF_Enable(); GEL_Reset(); } OnFileLoaded(int nErrorCode, int bSymbolsOnly) { } OnTargetConnect() { C28335_Memory_Map(); /* Initialize the CCS memory map */ /* Check to see if CCS has been started-up with the DSP already */ /* running in real-time mode. The user can add whatever */ /* custom initialization stuff they want to each case. */ if (GEL_IsInRealtimeMode()) /* Do real-time mode target initialization */ { // Note: This case never executes with the simulator } else /* Do stop-mode target initialization */ { // Note: This case always executes with the simulator } } /********************************************************************/ /* F28335 Memory Map */ /* */ /* Note: M0M1MAP and VMAP signals tied high on F28335 core */ /* */ /* 0x000000 - 0x0003ff M0 SARAM (Prog and Data) */ /* 0x000400 - 0x0007ff M1 SARAM (Prog and Data) */ /* 0x000800 - 0x001fff Peripheral Frame0 (PF0) (Data only) */ /* 0x004000 - 0x004fff XINTF Zone 0 (Prog and Data) */ /* 0x005000 - 0x005fff Peripheral Frame3 (PF3) (Data only) */ /* 0x006000 - 0x006fff Peripheral Frame1 (PF1) (Data only) */ /* 0x007000 - 0x007fff Peripheral Frame2 (PF2) (Data only) */ /* 0x008000 - 0x008fff L0 SARAM (Prog and Data) */ /* 0x009000 - 0x009fff L1 SARAM (Prog and Data) */ /* 0x00A000 - 0x00Afff L2 SARAM (Prog and Data) */ /* 0x00B000 - 0x00Bfff L3 SARAM (Prog and Data) */ /* 0x00C000 - 0x00Cfff L4 SARAM (Prog and Data) */ /* 0x00D000 - 0x00Dfff L5 SARAM (Prog and Data) */ /* 0x00E000 - 0x00Efff L6 SARAM (Prog and Data) */ /* 0x00F000 - 0x00Ffff L7 SARAM (Prog and Data) */ /* 0x100000 - 0x1fffff XINTF Zone 6 (Prog and Data) */ /* 0x200000 - 0x2fffff XINTF Zone 7 (Prog and Data */ /* 0x300000 - 0x33ffff Flash (Prog and Data) */ /* 0x380080 - 0x380088 ADC_cal function (Prog and Data) */ /* 0x380090 - 0x380090 PARTID value (Prog and Data) */ /* 0x380400 - 0x3807ff OTP (Prog and Data) */ /* 0x3f8000 - 0x3f8fff L0 SARAM (Prog and Data) */ /* 0x3f9000 - 0x3f9fff L1 SARAM (Prog and Data) */ /* 0x3fA000 - 0x3fAfff L2 SARAM (Prog and Data) */ /* 0x3fB000 - 0x3fBfff L3 SARAM (Prog and Data) */ /* 0x3fe000 - 0x3fffff BOOT ROM (Prog and Data) */ /********************************************************************/ menuitem "Initialize Memory Map"; hotmenu Memory_Map_Off() { GEL_MapReset(); GEL_MapOff(); } hotmenu C28335_Memory_Map() { GEL_MapReset(); GEL_MapOn(); /* Program memory map */ GEL_MapAdd(0x000,0,0x400,1,1); /* M0 SARAM */ GEL_MapAdd(0x400,0,0x400,1,1); /* M1 SARAM */ GEL_MapAdd(0x4000,0,0x1000,1,1); /* Zone 0 */ GEL_MapAdd(0x8000,0,0x1000,1,1); /* L0 SARAM */ GEL_MapAdd(0x9000,0,0x1000,1,1); /* L1 SARAM */ GEL_MapAdd(0xA000,0,0x1000,1,1); /* L2 SARAM */ GEL_MapAdd(0xB000,0,0x1000,1,1); /* L3 SARAM */ GEL_MapAdd(0xC000,0,0x1000,1,1); /* L4 SARAM */ GEL_MapAdd(0xD000,0,0x1000,1,1); /* L5 SARAM */ GEL_MapAdd(0xE000,0,0x1000,1,1); /* L6 SARAM */ GEL_MapAdd(0xF000,0,0x1000,1,1); /* L7 SARAM */ GEL_MapAdd(0x100000,0,0x100000,1,1); /* Zone 6 */ GEL_MapAdd(0x200000,0,0x100000,1,1); /* Zone 7 */ GEL_MapAdd(0x300000,0,0x40000,1,1); /* FLASH */ GEL_MapAdd(0x380080,0,0x00009,1,0); /* ADC_cal function*/ GEL_MapAdd(0x380090,0,0x00001,1,0); /* PARTID value */ GEL_MapAdd(0x380400,0,0x00400,1,0); /* OTP */ GEL_MapAdd(0x3f8000,0,0x1000,1,1); /* L0 SARAM Mirror */ GEL_MapAdd(0x3f9000,0,0x1000,1,1); /* L1 SARAM Mirror */ GEL_MapAdd(0x3fA000,0,0x1000,1,1); /* L2 SARAM Mirror */ GEL_MapAdd(0x3fb000,0,0x1000,1,1); /* L3 SARAM Mirror */ GEL_MapAdd(0x3fe000,0,0x2000,1,0); /* BOOT ROM */ /* Data memory map */ GEL_MapAdd(0x000,1,0x400,1,1); /* M0 SARAM */ GEL_MapAdd(0x400,1,0x400,1,1); /* M1 SARAM */ GEL_MapAdd(0x800,1,0x1800,1,1); /* PF0 */ GEL_MapAdd(0x4000,1,0x1000,1,1); /* Zone 0 */ GEL_MapAdd(0x5000,1,0x1000,1,1); /* PF3 */ GEL_MapAdd(0x6000,1,0x1000,1,1); /* PF1 */ GEL_MapAddStr(0x7000,1,0x1000,"R|W|AS2",0); /* PF2 */ GEL_MapAdd(0x8000,1,0x1000,1,1); /* L0 SARAM */ GEL_MapAdd(0x9000,1,0x1000,1,1); /* L1 SARAM */ GEL_MapAdd(0xA000,1,0x1000,1,1); /* L2 SARAM */ GEL_MapAdd(0xB000,1,0x1000,1,1); /* L3 SARAM */ GEL_MapAdd(0xC000,1,0x1000,1,1); /* L4 SARAM */ GEL_MapAdd(0xD000,1,0x1000,1,1); /* L5 SARAM */ GEL_MapAdd(0xE000,1,0x1000,1,1); /* L6 SARAM */ GEL_MapAdd(0xF000,1,0x1000,1,1); /* L7 SARAM */ GEL_MapAdd(0x100000,1,0x100000,1,1); /* Zone 6 */ GEL_MapAdd(0x200000,1,0x100000,1,1); /* Zone 7 */ GEL_MapAdd(0x300000,1,0x40000,1,0); /* FLASH */ GEL_MapAdd(0x380400,1,0x00400,1,0); /* OTP */ GEL_MapAdd(0x380080,1,0x00009,1,0); /* ADC_cal function*/ GEL_MapAdd(0x380090,1,0x00001,1,0); /* PARTID value */ GEL_MapAdd(0x3f8000,1,0x1000,1,1); /* L0 SARAM Mirror */ GEL_MapAdd(0x3f9000,1,0x1000,1,1); /* L1 SARAM Mirror */ GEL_MapAdd(0x3fA000,1,0x1000,1,1); /* L2 SARAM Mirror */ GEL_MapAdd(0x3fb000,1,0x1000,1,1); /* L3 SARAM Mirror */ GEL_MapAdd(0x3fe000,1,0x2000,1,0); /* BOOT ROM */ } /********************************************************************/ menuitem "Addressing Modes"; hotmenu C28x_Mode() { ST1 = ST1 & (~0x0100); /* AMODE = 0 */ ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ } hotmenu C24x_Mode() { ST1 = ST1 | 0x0100; /* AMODE = 1 */ ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ } hotmenu C27x_Mode() { ST1 = ST1 & (~0x0100); /* AMODE = 0 */ ST1 = ST1 & (~0x0200); /* OBJMODE = 0 */ } /********************************************************************/ /* Enable the XINTF and configure GPIOs for XINTF function */ /********************************************************************/ int TxtOutCtl=0; menuitem "XINTF Enable" hotmenu XINTF_Enable() { if (TxtOutCtl==0) { GEL_TextOut("\nNOTES:\nTo configure the XINTF automatically on reset:\n uncomment the XINTF_Enable call in the OnReset function of the GEL file."); GEL_TextOut("\nNOTES:\nGel will enable XINTFx16 during Debug only.\nEnable XINTF in code prior to use."); TxtOutCtl=1; } /* enable XINTF clock (XTIMCLK) */ *0x7020 = 0x3700; /* GPBMUX1: XA0-XA7, XA16, XZCS0, */ /* XZCS7, XREADY, XRNW, XWE0 */ /* GPAMUX2: XA17-XA19, XZCS6 */ /* GPCMUX2: XA8-XA15 */ /* GPCMUX1: XD0-XD15 */ *(unsigned long *)0x6F96 = 0xFFFFFFC0; /* GPBMUX1 */ *(unsigned long *)0x6f88 = 0xFF000000; /* GPAMUX2 */ *(unsigned long *)0x6FA8 = 0x0000AAAA; /* GPCMUX2 */ *(unsigned long *)0x6FA6 = 0xAAAAAAAA; /* GPCMUX1 */ /* Uncomment for x32 data bus */ /* GPBMUX2: XD16-XD31 */ // *(unsigned long *)0x6F98 = 0xFFFFFFFF; /* GPBMUX2 */ /* Zone timing. /* Each zone can be configured seperately */ /* Uncomment the x16 or the x32 timing */ /* depending on the data bus width for */ /* the zone */ /* x16 Timing */ *(unsigned long *)0x0B20 = 0x0043FFFF; /* Zone0 */ *(unsigned long *)0x0B2C = 0x0043FFFF; /* Zone6 */ *(unsigned long *)0x0B2E = 0x0043FFFF; /* Zone7 */ /* x32 Timing: // *(unsigned long *)0x0B20 = 0x0041FFFF; /* x32 */ // *(unsigned long *)0x0B2C = 0x0041FFFF; /* x32 */ // *(unsigned long *)0x0B2E = 0x0041FFFF; /* x32 */ } /********************************************************************/ /*** End of file ***/ cpputest-3.7.2/platforms/CCStudio/sim2833x.cfg000644 000765 000024 00000024732 12521603460 022000 0ustar00basvoddestaff000000 000000 /////////////////////////////////////////////////////////// // Initialize default F2833x memory map as defined by // // the MEMRSn signal. For F2833x, M0M1MAP=1 and VMAP=1. // /////////////////////////////////////////////////////////// module F2833x_memory; /////////////////////////////////////////////////////////// // M0 SARAM, shared prog and data space // /////////////////////////////////////////////////////////// memory M0_prog_mem; first 0x000000; last 0x0003FF; space prog; waitstates 0; type saram; shared M0_data_mem; end M0_prog_mem; memory M0_data_mem; first 0x000000; last 0x0003FF; space data; waitstates 0; type saram; end M0_data_mem; /////////////////////////////////////////////////////////// // M1 SARAM, shared prog and data space // /////////////////////////////////////////////////////////// memory M1_prog_mem; first 0x000400; last 0x0007FF; space prog; waitstates 0; type saram; shared M1_data_mem; end M1_prog_mem; memory M1_data_mem; first 0x000400; last 0x0007FF; space data; waitstates 0; type saram; end M1_data_mem; /////////////////////////////////////////////////////////// // PF0A, data space only // /////////////////////////////////////////////////////////// memory PF0A_data_mem; first 0x000800; last 0x000CFF; space data; waitstates 1; type saram; end PF0A_data_mem; /////////////////////////////////////////////////////////// // PIE Vector Table // /////////////////////////////////////////////////////////// memory PIE_vectors; first 0x000D00; last 0x000DFF; space data; waitstates 0; type saram; end PIE_vectors; /////////////////////////////////////////////////////////// // PF0B, data space only // /////////////////////////////////////////////////////////// memory PF0B_data_mem; first 0x000E00; last 0x001FFF; space data; waitstates 1; type saram; end PF0B_data_mem; /////////////////////////////////////////////////////////// // PF3, data space only // /////////////////////////////////////////////////////////// memory PF3_data_mem; first 0x005000; last 0x005FFF; space data; waitstates 2; type saram; end PF3_data_mem; ////////////////////////////////////////////////////////// // VBUS32 data space (PF1) // // 0x6000 - 0x6FFF // ////////////////////////////////////////////////////////// memory vbus32_data_mem; read_waitstates 2; write_waitstates 0; type vbus32; end vbus32_data_mem; ////////////////////////////////////////////////////////// // VBUS16 data space (PF2) // // 0x7000 - 0x7FFF // ////////////////////////////////////////////////////////// memory vbus16_data_mem; read_waitstates 2; write_waitstates 0; type vbus16; end vbus16_data_mem; ////////////////////////////////////////////////////////// // XINTF ZONE 0, shared prog and data space // ////////////////////////////////////////////////////////// memory XINTF0_prog_mem; first 0x004000; last 0x004FFF; space prog; waitstates 7; type saram; shared XINTF0_data_mem; end XINTF0_prog_mem; memory XINTF0_data_mem; first 0x004000; last 0x004FFF; space data; waitstates 7; type saram; end XINTF0_data_mem; ////////////////////////////////////////////////////////// // L0 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L0_prog_mem; first 0x008000; last 0x008FFF; space prog; waitstates 0; type saram; shared L0_data_mem; end L0_prog_mem; memory L0_data_mem; first 0x008000; last 0x008FFF; space data; waitstates 0; type saram; end L0_data_mem; ////////////////////////////////////////////////////////// // L1 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L1_prog_mem; first 0x009000; last 0x009FFF; space prog; waitstates 0; type saram; shared L1_data_mem; end L1_prog_mem; memory L1_data_mem; first 0x009000; last 0x009FFF; space data; waitstates 0; type saram; end L1_data_mem; ////////////////////////////////////////////////////////// // L2 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L2_prog_mem; first 0x00A000; last 0x00AFFF; space prog; waitstates 0; type saram; shared L2_data_mem; end L2_prog_mem; memory L2_data_mem; first 0x00A000; last 0x00AFFF; space data; waitstates 0; type saram; end L2_data_mem; ////////////////////////////////////////////////////////// // L3 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L3_prog_mem; first 0x00B000; last 0x00BFFF; space prog; waitstates 0; type saram; shared L3_data_mem; end L3_prog_mem; memory L3_data_mem; first 0x00B000; last 0x00BFFF; space data; waitstates 0; type saram; end L3_data_mem; ////////////////////////////////////////////////////////// // L4 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L4_prog_mem; first 0x00C000; last 0x00CFFF; space prog; waitstates 0; type saram; shared L4_data_mem; end L4_prog_mem; memory L4_data_mem; first 0x00C000; last 0x00CFFF; space data; waitstates 0; type saram; end L4_data_mem; ////////////////////////////////////////////////////////// // L5 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L5_prog_mem; first 0x00D000; last 0x00DFFF; space prog; waitstates 0; type saram; shared L5_data_mem; end L5_prog_mem; memory L5_data_mem; first 0x00D000; last 0x00DFFF; space data; waitstates 0; type saram; end L5_data_mem; ////////////////////////////////////////////////////////// // L6 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L6_prog_mem; first 0x00E000; last 0x00EFFF; space prog; waitstates 1; type saram; shared L6_data_mem; end L6_prog_mem; memory L6_data_mem; first 0x00E000; last 0x00EFFF; space data; waitstates 1; type saram; end L6_data_mem; ////////////////////////////////////////////////////////// // L7 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L7_prog_mem; first 0x00F000; last 0x00FFFF; space prog; waitstates 1; type saram; shared L7_data_mem; end L7_prog_mem; memory L7_data_mem; first 0x00F000; last 0x00FFFF; space data; waitstates 1; type saram; end L7_data_mem; ////////////////////////////////////////////////////////// // XINTF ZONE 6, shared prog and data space // ////////////////////////////////////////////////////////// memory XINTF6_prog_mem; first 0x100000; last 0x1FFFFF; space prog; waitstates 7; type saram; shared XINTF6_data_mem; end XINTF6_prog_mem; memory XINTF6_data_mem; first 0x100000; last 0x1FFFFF; space data; waitstates 7; type saram; end XINTF6_data_mem; ////////////////////////////////////////////////////////// // XINTF ZONE 7, shared prog and data space // ////////////////////////////////////////////////////////// memory XINTF7_prog_mem; first 0x200000; last 0x2FFFFF; space prog; waitstates 7; type saram; shared XINTF7_data_mem; end XINTF7_prog_mem; memory XINTF7_data_mem; first 0x200000; last 0x2FFFFF; space data; waitstates 7; type saram; end XINTF7_data_mem; ////////////////////////////////////////////////////////// // FLASH, shared prog and data space // ////////////////////////////////////////////////////////// memory FLASH_prog_mem; first 0x300000; last 0x33FFF7; space prog; waitstates 5; type flash; shared FLASH_data_mem; end FLASH_prog_mem; memory FLASH_data_mem; first 0x300000; last 0x33FFF7; space data; waitstates 5; type flash; end FLASH_data_mem; ////////////////////////////////////////////////////////// // PASSWORDS, shared prog and data space // ////////////////////////////////////////////////////////// memory PASSWORDS_prog_mem; first 0x33FFF8; last 0x33FFFF; space prog; waitstates 16; type flash; shared PASSWORDS_data_mem; end PASSWORDS_prog_mem; memory PASSWORDS_data_mem; first 0x33FFF8; last 0x33FFFF; space data; waitstates 16; type flash; end PASSWORDS_data_mem; ////////////////////////////////////////////////////////// // OTP, shared prog and data space // ////////////////////////////////////////////////////////// memory OTP_prog_mem; first 0x380400; last 0x3807FF; space prog; waitstates 8; type flash; shared OTP_data_mem; end OTP_prog_mem; memory OTP_data_mem; first 0x380400; last 0x3807FF; space data; waitstates 8; type flash; end OTP_data_mem; ////////////////////////////////////////////////////////// // BOOT ROM, shared prog and data space // ////////////////////////////////////////////////////////// memory BOOT_prog_mem; first 0x3FE000; last 0x3FFFFF; space prog; waitstates 1; type rom; shared BOOT_data_mem; end BOOT_prog_mem; memory BOOT_data_mem; first 0x3FE000; last 0x3FFFFF; space data; waitstates 1; type rom; end BOOT_data_mem; end F2833x_memory; cpputest-3.7.2/platforms/CCStudio/tests/000755 000765 000024 00000000000 12523662132 021154 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms/CCStudio/tests/CppUTest/000755 000765 000024 00000000000 12523662133 022664 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms/CCStudio/tests/CppUTestExt/000755 000765 000024 00000000000 12523662133 023345 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/platforms/CCStudio/tests/CppUTestExt/AllTestsForTarget.cpp000644 000765 000024 00000004413 12521603460 027420 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2013, Michael Feathers, James Grenning, Bas Vodde * and Arnd Strube * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestRegistry.h" #include "CppUTestExt/MemoryReporterPlugin.h" #include "CppUTestExt/MockSupportPlugin.h" int main(int ac, char** av) { /* Specify commandline arguments here as needed */ char* argv[] = { (char*) 0, (char*) "-v", // (char*) "-gSimpleStringBuffer", // (char*) "-ojunit", }; ac = sizeof(argv) / sizeof(char*); MemoryReporterPlugin plugin; MockSupportPlugin mockPlugin; TestRegistry::getCurrentRegistry()->installPlugin(&plugin); TestRegistry::getCurrentRegistry()->installPlugin(&mockPlugin); return CommandLineTestRunner::RunAllTests(ac, argv); } cpputest-3.7.2/platforms/CCStudio/tests/CppUTest/AllTestsForTarget.cpp000644 000765 000024 00000004106 12521603460 026736 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2013, Michael Feathers, James Grenning, Bas Vodde * and Arnd Strube * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" int main(int ac, char** av) { /* Specify commandline arguments here as needed */ char* argv[] = { (char*) 0, (char*) "-v", // (char*) "-gSimpleStringBuffer", // (char*) "-ojunit", }; ac = sizeof(argv) / sizeof(char*); /* These checks are here to make sure assertions outside test runs don't crash */ CHECK(true); LONGS_EQUAL(1, 1); return CommandLineTestRunner::RunAllTests(ac, argv); } cpputest-3.7.2/platforms/armcc/Makefile000644 000765 000024 00000012316 12521603460 021062 0ustar00basvoddestaff000000 000000 # We don't need to clean up when we're making these targets NODEPS := clean debug # CPU architecture. Passing to armcc.exe. For list: armcc --cpu list ifndef CPU CPU = ARM7TDMI endif # ARM/THUMB mode. Passing to armcc.exe. May be 'thumb' or 'arm' ifndef CPU_MODE CPU_MODE = thumb endif # Path to cygwin binary CYGWIN_DIR :=C:/CYGWIN/bin # Path to ARMCC of Keil MDK-ARM, with libraries, includes and executables KEIL_DIR :=D:/Keil/ARM/ARMCC MKDIR :=$(CYGWIN_DIR)/mkdir RM :=$(CYGWIN_DIR)/rm CC :=@$(KEIL_DIR)/bin/armcc.exe AR :=@$(KEIL_DIR)/bin/armar.exe # source CppUTest files CPPUTEST_HOME := ../.. COMPONENT_NAME := CppUTest INCLUDE_DIRS :=\ $(CPPUTEST_HOME)/include \ $(CPPUTEST_HOME)/include/Platforms/armcc \ # armcc system include path SYS_INCLUDE_DIRS:=$(KEIL_DIR)/include SRC_DIRS :=\ $(CPPUTEST_HOME)/src/$(COMPONENT_NAME)\ $(CPPUTEST_HOME)/src/Platforms/armcc\ TARGET_PLATFORM :=armcc_$(CPU)_$(CPU_MODE) CPPUTEST_USE_MEM_LEAK_DETECTION := N CPPUTEST_USE_STD_CPP_LIB := N CPPUTEST_USE_VPATH := Y CPPUTEST_USE_STD_C_LIB := Y CPPUTEST_ENABLE_DEBUG := Y # Default dir for temporary files (d, o) # Default dir for the outout library CPPUTEST_OBJS_DIR = objs CPPUTEST_LIB_DIR = $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) TARGET_LIB = \ $(CPPUTEST_LIB_DIR)/lib$(COMPONENT_NAME).a #Helper Functions get_src_from_dir = $(wildcard $1/*.cpp) $(wildcard $1/*.cc) $(wildcard $1/*.c) get_dirs_from_dirspec = $(wildcard $1) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) __src_to = $(subst .c,$1, $(subst .cc,$1, $(subst .cpp,$1,$(if $(CPPUTEST_USE_VPATH),$(notdir $2),$2)))) src_to = $(addprefix $(CPPUTEST_OBJS_DIR)/,$(call __src_to,$1,$2)) src_to_o = $(call src_to,.o,$1) src_to_d = $(call src_to,.d,$1) src_to_gcda = $(call src_to,.gcda,$1) src_to_gcno = $(call src_to,.gcno,$1) time = $(shell date +%s) delta_t = $(eval minus, $1, $2) debug_print_list = $(foreach word,$1,echo " $(word)";) echo; #Derived SRC = $(call get_src_from_dir_list, $(SRC_DIRS)) OBJ = $(call src_to_o,$(SRC)) STUFF_TO_CLEAN = $(OBJ) ALL_SRC = $(SRC) CPUFLAGS =--cpu=$(CPU) ifeq ($(CPU_MODE), thumb) CPUFLAGS +=--apcs=/interwork endif DEPFLAGS =$(CPUFLAGS) -M $(INCLUDES) --depend_format=unix_escaped --depend_single_line --no_depend_system_headers OPTFLAGS =-O1 CCFLAGS =$(CPUFLAGS) $(OPTFLAGS) -c $(INCLUDES)\ --$(CPU_MODE)\ --exceptions\ -D__CLK_TCK=1000\ # If we're using VPATH ifeq ($(CPPUTEST_USE_VPATH), Y) # gather all the source directories and add them VPATH += $(sort $(dir $(ALL_SRC))) # Add the component name to the objs dir path, to differentiate between same-name objects CPPUTEST_OBJS_DIR := $(addsuffix /$(COMPONENT_NAME),$(CPPUTEST_OBJS_DIR)) endif INCLUDES_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(INCLUDE_DIRS)) INCLUDES += $(foreach dir, $(INCLUDES_DIRS_EXPANDED), -I$(dir)) DEP_FILES = $(call src_to_d, $(ALL_SRC)) STUFF_TO_CLEAN += $(DEP_FILES) # Without the C library, we'll need to disable the C++ library and ... ifeq ($(CPPUTEST_USE_STD_C_LIB), N) CPPUTEST_USE_STD_CPP_LIB = N CPPUTEST_USE_MEM_LEAK_DETECTION = N CCFLAGS += -DCPPUTEST_STD_C_LIB_DISABLED else INCLUDE_DIRS +=$(SYS_INCLUDE_DIRS) endif ifeq ($(CPPUTEST_USE_MEM_LEAK_DETECTION), N) CCFLAGS += -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED endif ifeq ($(CPPUTEST_ENABLE_DEBUG), Y) CCFLAGS += -g ARFLAGS := --debug_symbols endif ifeq ($(CPPUTEST_USE_STD_CPP_LIB), N) CCFLAGS += -DCPPUTEST_STD_CPP_LIB_DISABLED endif OBJS_DIRS :=$(sort $(dir $(STUFF_TO_CLEAN))) $(OBJS_DIRS) $(CPPUTEST_LIB_DIR): @echo Updating directory $@ $(MKDIR) -p $@ #This is the rule for creating the dependency files $(CPPUTEST_OBJS_DIR)/%.d: %.c Makefile | $(OBJS_DIRS) @echo Compiling C file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' $(CPPUTEST_OBJS_DIR)/%.d: %.cpp Makefile | $(OBJS_DIRS) @echo Compiling C++ file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' #This rule does the compilation C++ files $(CPPUTEST_OBJS_DIR)/%.o: %.cpp $(CPPUTEST_OBJS_DIR)/%.d Makefile @echo Compiling C++ file $<. Out file $@ $(CC) $(CCFLAGS) $< -o $@ #This rule does the compilation C files $(CPPUTEST_OBJS_DIR)/%.o: %.c $(CPPUTEST_OBJS_DIR)/%.d Makefile @echo Compiling C file $<. Out file $@ $(CC) $(CCFLAGS) $< -o $@ $(TARGET_LIB): $(OBJ) | $(CPPUTEST_LIB_DIR) @echo Archiving to $@ $(AR) $(ARFLAGS) --create $@ $^ .PHONY: all all: $(TARGET_LIB) @echo Done! .PHONY: debug debug: @echo @echo "Target Source files:" @$(call debug_print_list,$(SRC)) @echo "Target Object files:" @$(call debug_print_list,$(OBJ)) @echo "All Input Dependency files:" @$(call debug_print_list,$(DEP_FILES)) @echo Stuff to clean: @$(call debug_print_list,$(STUFF_TO_CLEAN)) @echo Includes: @$(call debug_print_list,$(INCLUDES)) @echo Directories to create: @$(call debug_print_list,$(OBJS_DIRS)) @echo Directories of CppUTest object files: @$(call debug_print_list,$(CPPUTEST_OBJS_DIR)) @echo Flags: @$(call debug_print_list,$(CCFLAGS)) #Don't create dependencies when we're cleaning, for instance ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS)))) -include $(DEP_FILES) endif clean: @$(RM) -rf $(STUFF_TO_CLEAN) cpputest-3.7.2/platforms/armcc/README000644 000765 000024 00000003360 12521603460 020301 0ustar00basvoddestaff000000 000000 Makefile to build CppUTest library to run in hardware using ARM C/C++ compiler. Also it is possible to build CppUTestExt library using "make all COMPONENT_NAME=CppUTestExt". All libraries is placed in lib directory of CppUTest home. Thumb mode is using. For ARM mode, you need to remove compiler key "--apcs=/interwork" and change $(CPU_MODE) to arm. You need installed CYGWIN with make.exe, rm.exe, mkdir.exe and installed Keil MDK-ARM. For compiling CppUTest library using ARMCC, please adjust Makefile: 1. # Path to cygwin binary CYGWIN_DIR :=C:/CYGWIN/bin 2. # Path to ARMCC of Keil MDK-ARM, with libraries, includes and executables KEIL_DIR :=D:/Keil/ARM/ARMCC 3. # source CppUTest files CPPUTEST_HOME := ../.. 4. other options explained in $(CPPUTEST_HOME)/build/MakefileWorker.mk CPPUTEST_USE_MEM_LEAK_DETECTION := Y CPPUTEST_USE_STD_CPP_LIB := N CPPUTEST_USE_VPATH := Y CPPUTEST_USE_STD_C_LIB := Y CPPUTEST_ENABLE_DEBUG := Y You may add additional options "CPU=xx" and "CPU_MODE=yy" CPU is an option that passed to armcc.exe. It selects CPU. List of CPU is available by executing 'armcc.exe --cpu list'. Default CPU architecture is ARM7TDMI. For armcc v5.02 build 28, CPU is one of the next: ARM7EJ-S ARM7TM ARM7TDM ARM7TDMI ARM710T ARM720T ARM740T ARM7TM-S ARM7TDMI-S ARM9TDMI ARM920T ARM922T ARM940T ARM9E-S ARM9EJ-S ARM926EJ-S ARM946E-S ARM966E-S ARM968E-S Cortex-M0 Cortex-M0plus SC000 Cortex-M1 Cortex-M1.os_extension Cortex-M1.no_os_extension Cortex-M3 Cortex-M3-rev0 SC300 Cortex-M4 Cortex-M4.fp Cortex-R4 Cortex-R4F CPU_MODE is one of 'arm', 'thumb'. Default is thumb. Tested with Keil MDK-ARM Pro v4.60 cpputest-3.7.2/platforms/armcc/TODO000644 000765 000024 00000000464 12521603460 020113 0ustar00basvoddestaff000000 000000 I am not familiar with automake. There is need to change build libCppUTest.a for target platform from makefile in current directory to automake in CppUTest root directory. And keep in mind that I want to add gcc way, and the others may want to add some instructions for different compilers and chips. cpputest-3.7.2/m4/acx_pthread.m4000644 000765 000024 00000022374 12521603460 017377 0ustar00basvoddestaff000000 000000 dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) dnl dnl @summary figure out how to build C programs using POSIX threads dnl dnl This macro figures out how to build C programs using POSIX threads. dnl It sets the PTHREAD_LIBS output variable to the threads library and dnl linker flags, and the PTHREAD_CFLAGS output variable to any special dnl C compiler flags that are needed. (The user can also force certain dnl compiler flags/libs to be tested by setting these environment dnl variables.) dnl dnl Also sets PTHREAD_CC to any special C compiler that is needed for dnl multi-threaded programs (defaults to the value of CC otherwise). dnl (This is necessary on AIX to use the special cc_r compiler alias.) dnl dnl NOTE: You are assumed to not only compile your program with these dnl flags, but also link it with them as well. e.g. you should link dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS dnl $LIBS dnl dnl If you are only building threads programs, you may wish to use dnl these variables in your default LIBS, CFLAGS, and CC: dnl dnl LIBS="$PTHREAD_LIBS $LIBS" dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" dnl CC="$PTHREAD_CC" dnl dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). dnl dnl ACTION-IF-FOUND is a list of shell commands to run if a threads dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the dnl default action will define HAVE_PTHREAD. dnl dnl Please let the authors know if this macro fails on any platform, or dnl if you have any other suggestions or comments. This macro was based dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. dnl We are also grateful for the helpful feedback of numerous users. dnl dnl @category InstalledPackages dnl @author Steven G. Johnson dnl @version 2006-05-29 dnl @license GPLWithACException AC_DEFUN([ACX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_SAVE AC_LANG_C acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) AC_MSG_RESULT($acx_pthread_ok) if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; pthread-config) AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) if test x"$acx_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_TRY_LINK([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], [acx_pthread_ok=yes]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT($acx_pthread_ok) if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. AC_MSG_CHECKING([for joinable pthread attribute]) attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do AC_TRY_LINK([#include ], [int attr=$attr; return attr;], [attr_name=$attr; break]) done AC_MSG_RESULT($attr_name) if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, [Define to necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi AC_SUBST(PTHREAD_LIBS) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_CC) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) : else acx_pthread_ok=no $2 fi AC_LANG_RESTORE ])dnl ACX_PTHREAD cpputest-3.7.2/m4/libtool.m4000644 000765 000024 00001057216 12521603510 016561 0ustar00basvoddestaff000000 000000 # 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, 2011 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, 2011 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([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl 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 ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # 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], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _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) 2011 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)], [Go], [_LT_LANG(GO)], [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 m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _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([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) 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 there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 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 -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; 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([TAG]) # --------------------------------- # 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\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) 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 ;; *-*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*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) 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 \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_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 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 ;; 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[[23]].*) 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 # correct to gnu/linux during the next big refactor 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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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 glibc/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};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /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 ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; 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\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # 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\ F* | *Sun*Fortran*) _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 ' ;; *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,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; 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(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _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_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)='${wl}-rpath ${wl}$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(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _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 ;; # 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_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_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 ## 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... 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_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 ;; freebsd2.*) # 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 ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; 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_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_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 ## 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... 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_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # 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=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go 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 ## 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... 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_GO_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_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # 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 cpputest-3.7.2/m4/ltoptions.m4000644 000765 000024 00000030073 12521603510 017137 0ustar00basvoddestaff000000 000000 # 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 ## --------------------------------- ## ## Macros to handle LT_INIT 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@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [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], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## 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])]) cpputest-3.7.2/m4/ltsugar.m4000644 000765 000024 00000010424 12521603510 016563 0ustar00basvoddestaff000000 000000 # 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 ]) cpputest-3.7.2/m4/ltversion.m4000644 000765 000024 00000001262 12521603510 017127 0ustar00basvoddestaff000000 000000 # 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 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) cpputest-3.7.2/m4/lt~obsolete.m4000644 000765 000024 00000013756 12521603510 017467 0ustar00basvoddestaff000000 000000 # 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])]) cpputest-3.7.2/include/CppUTest/000755 000765 000024 00000000000 12523662133 017461 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/include/CppUTestExt/000755 000765 000024 00000000000 12523662133 020142 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/include/Platforms/000755 000765 000024 00000000000 12523662132 017720 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/include/Platforms/armcc/000755 000765 000024 00000000000 12523662133 021006 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/include/Platforms/c2000/000755 000765 000024 00000000000 12523662133 020445 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/include/Platforms/Gcc/000755 000765 000024 00000000000 12523662133 020415 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/include/Platforms/Symbian/000755 000765 000024 00000000000 12523662133 021323 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/include/Platforms/VisualCpp/000755 000765 000024 00000000000 12523662133 021627 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/include/Platforms/VisualCpp/Platform.h000644 000765 000024 00000003565 12521603460 023571 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef _MSC_VER //#pragma warning(disable:4786) //#pragma warning(disable:4290) //#pragma warning(disable:4996) #endif #ifdef WIN32 #ifdef _VC80_UPGRADE //#pragma warning(disable:4996) //#pragma warning(disable:4290) #else //#define vsnprintf _vsnprintf #endif #endif cpputest-3.7.2/include/Platforms/Symbian/Platform.h000644 000765 000024 00000000102 12521603460 023245 0ustar00basvoddestaff000000 000000 #ifndef PLATFORM_H_ #define PLATFORM_H_ #endif /*PLATFORM_H_*/ cpputest-3.7.2/include/Platforms/Gcc/Platform.h000644 000765 000024 00000003176 12521603460 022355 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_Gcc_Platform_H #define D_Gcc_Platform_H #endif cpputest-3.7.2/include/Platforms/c2000/Platform.h000644 000765 000024 00000003202 12521603460 022373 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_c2000_Platform_H #define D_c2000_Platform_H #endif cpputest-3.7.2/include/Platforms/c2000/stdint.h000644 000765 000024 00000003457 12521603460 022130 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde * and Arnd R. Strube * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef stdint_wrapper_h #define stdint_wrapper_h #include typedef unsigned char uint8_t; /* This will still compile to 16 bit */ #endif /* stdint_wrapper_h */cpputest-3.7.2/include/Platforms/armcc/Platform.h000644 000765 000024 00000000102 12521603460 022730 0ustar00basvoddestaff000000 000000 #ifndef PLATFORM_H_ #define PLATFORM_H_ #endif /*PLATFORM_H_*/ cpputest-3.7.2/include/CppUTestExt/CodeMemoryReportFormatter.h000644 000765 000024 00000006467 12521603460 025447 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_CodeMemoryReportFormatter_h #define D_CodeMemoryReportFormatter_h #include "CppUTestExt/MemoryReportFormatter.h" struct CodeReportingAllocationNode; class CodeMemoryReportFormatter : public MemoryReportFormatter { private: CodeReportingAllocationNode* codeReportingList_; TestMemoryAllocator* internalAllocator_; public: CodeMemoryReportFormatter(TestMemoryAllocator* internalAllocator); virtual ~CodeMemoryReportFormatter(); virtual void report_testgroup_start(TestResult* result, UtestShell& test) _override; virtual void report_testgroup_end(TestResult* /*result*/, UtestShell& /*test*/) _override {} // LCOV_EXCL_LINE virtual void report_test_start(TestResult* result, UtestShell& test) _override; virtual void report_test_end(TestResult* result, UtestShell& test) _override; virtual void report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t size, char* memory, const char* file, int line) _override; virtual void report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* memory, const char* file, int line) _override; private: void addNodeToList(const char* variableName, void* memory, CodeReportingAllocationNode* next); CodeReportingAllocationNode* findNode(void* memory); bool variableExists(const SimpleString& variableName); void clearReporting(); bool isNewAllocator(TestMemoryAllocator* allocator); SimpleString createVariableNameFromFileLineInfo(const char *file, int line); SimpleString getAllocationString(TestMemoryAllocator* allocator, const SimpleString& variableName, size_t size); SimpleString getDeallocationString(TestMemoryAllocator* allocator, const SimpleString& variableName, const char* file, int line); }; #endif cpputest-3.7.2/include/CppUTestExt/GMock.h000644 000765 000024 00000003614 12521603460 021313 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef GMOCK_H_ #define GMOCK_H_ #undef new #undef RUN_ALL_TESTS #define GTEST_DONT_DEFINE_TEST 1 #define GTEST_DONT_DEFINE_FAIL 1 #include "gmock/gmock.h" #undef RUN_ALL_TESTS using testing::Return; using testing::NiceMock; #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif #endif cpputest-3.7.2/include/CppUTestExt/GTest.h000644 000765 000024 00000003702 12521603460 021337 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef GTEST__H_ #define GTEST__H_ #undef new #undef RUN_ALL_TESTS #include "gtest/gtest.h" #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif #ifndef RUN_ALL_TESTS #define GTEST_VERSION_GTEST_1_7 #else #ifdef ADD_FAILURE_AT #define GTEST_VERSION_GTEST_1_6 #else #define GTEST_VERSION_GTEST_1_5 #endif #endif #undef RUN_ALL_TESTS #endif cpputest-3.7.2/include/CppUTestExt/GTestConvertor.h000644 000765 000024 00000030611 12521603460 023240 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef GTESTCONVERTOR_H_ #define GTESTCONVERTOR_H_ #include "CppUTest/Utest.h" #ifdef GTEST__H_ #error "Please include this file before you include any other GTest files" #endif /* * Usage: * * This file must only be included in the main. The whole implementation is inline so that this can * be compiled on usage and not on CppUTest compile-time. This avoids a hard dependency with CppUTest * and with GTest * * Add the following lines to your main: * * GTestConvertor convertor; * convertor.addAllGTestToTestRegistry(); * * */ class GTestResultReporter; class GTestFlagsThatAllocateMemory; namespace testing { class TestInfo; class TestCase; class Test; } class GTestShell : public UtestShell { ::testing::TestInfo* testinfo_; GTestShell* next_; GTestFlagsThatAllocateMemory* flags_; public: GTestShell(::testing::TestInfo* testinfo, GTestShell* next, GTestFlagsThatAllocateMemory* flags); virtual Utest* createTest() _override; GTestShell* nextGTest() { return next_; } }; /* Enormous hack! * * This sucks enormously. We need to do two things in GTest that seem to not be possible without * this hack. Hopefully there is *another way*. * * We need to access the factory in the TestInfo in order to be able to create tests. The factory * is private and there seems to be no way to access it... * * We need to be able to call the Test SetUp and TearDown methods, but they are protected for * some reason. We can't subclass either as the tests are created with the TEST macro. * * If anyone knows how to get the above things done *without* these ugly #defines, let me know! * */ #define private public #define protected public #include "CppUTestExt/GTest.h" #include "CppUTestExt/GMock.h" #include "gtest/gtest-spi.h" #include "gtest/gtest-death-test.h" /* * We really need some of its internals as they don't have a public interface. * */ #define GTEST_IMPLEMENTATION_ 1 #include "src/gtest-internal-inl.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestFailure.h" #include "CppUTest/TestResult.h" #ifdef GTEST_VERSION_GTEST_1_7 #define GTEST_STRING std::string #define GTEST_NO_STRING_VALUE "" #else #define GTEST_STRING ::testing::internal::String #define GTEST_NO_STRING_VALUE NULL #endif /* Store some of the flags as we'll need to reset them each test to avoid leaking memory */ class GTestFlagsThatAllocateMemory { public: void storeValuesOfGTestFLags() { GTestFlagcolor = ::testing::GTEST_FLAG(color); GTestFlagfilter = ::testing::GTEST_FLAG(filter); GTestFlagoutput = ::testing::GTEST_FLAG(output); GTestFlagdeath_test_style = ::testing::GTEST_FLAG(death_test_style); GTestFlaginternal_run_death_test = ::testing::internal::GTEST_FLAG(internal_run_death_test); #ifndef GTEST_VERSION_GTEST_1_5 GTestFlagstream_result_to = ::testing::GTEST_FLAG(stream_result_to); #endif } void resetValuesOfGTestFlags() { ::testing::GTEST_FLAG(color) = GTestFlagcolor; ::testing::GTEST_FLAG(filter) = GTestFlagfilter; ::testing::GTEST_FLAG(output) = GTestFlagoutput; ::testing::GTEST_FLAG(death_test_style) = GTestFlagdeath_test_style; ::testing::internal::GTEST_FLAG(internal_run_death_test) = GTestFlaginternal_run_death_test; #ifndef GTEST_VERSION_GTEST_1_5 ::testing::GTEST_FLAG(stream_result_to) = GTestFlagstream_result_to; #endif } void setGTestFLagValuesToNULLToAvoidMemoryLeaks() { #ifndef GTEST_VERSION_GTEST_1_7 ::testing::GTEST_FLAG(color) = GTEST_NO_STRING_VALUE; ::testing::GTEST_FLAG(filter) = GTEST_NO_STRING_VALUE; ::testing::GTEST_FLAG(output) = GTEST_NO_STRING_VALUE; ::testing::GTEST_FLAG(death_test_style) = GTEST_NO_STRING_VALUE; ::testing::internal::GTEST_FLAG(internal_run_death_test) = GTEST_NO_STRING_VALUE; #ifndef GTEST_VERSION_GTEST_1_5 ::testing::GTEST_FLAG(stream_result_to) = GTEST_NO_STRING_VALUE; #endif #endif } private: GTEST_STRING GTestFlagcolor; GTEST_STRING GTestFlagfilter; GTEST_STRING GTestFlagoutput; GTEST_STRING GTestFlagdeath_test_style; GTEST_STRING GTestFlaginternal_run_death_test; #ifndef GTEST_VERSION_GTEST_1_5 GTEST_STRING GTestFlagstream_result_to; #endif }; class GTestConvertor { public: GTestConvertor(bool shouldSimulateFailureAtCreationToAllocateThreadLocalData = true); virtual ~GTestConvertor(); virtual void addAllGTestToTestRegistry(); protected: virtual void simulateGTestFailureToPreAllocateAllTheThreadLocalData(); virtual void addNewTestCaseForTestInfo(::testing::TestInfo* testinfo); virtual void addAllTestsFromTestCaseToTestRegistry(::testing::TestCase* testcase); virtual void createDummyInSequenceToAndFailureReporterAvoidMemoryLeakInGMock(); private: GTestResultReporter* reporter_; GTestShell* first_; GTestFlagsThatAllocateMemory flags_; }; class GTestDummyResultReporter : public ::testing::ScopedFakeTestPartResultReporter { public: GTestDummyResultReporter () : ::testing::ScopedFakeTestPartResultReporter(INTERCEPT_ALL_THREADS, NULL) {} virtual void ReportTestPartResult(const ::testing::TestPartResult& /*result*/) {} }; class GMockTestTerminator : public TestTerminator { public: GMockTestTerminator(const ::testing::TestPartResult& result) : result_(result) { } virtual void exitCurrentTest() const { /* * When using GMock, it throws an exception fromt he destructor leaving * the system in an unstable state. * Therefore, when the test fails because of failed gmock expectation * then don't throw the exception, but let it return. Usually this should * already be at the end of the test, so it doesn't matter much */ /* * TODO: We probably want this check here, however the tests fail when putting it there. Also, we'll need to * check how to get all the gTest tests to run within CppUTest. At the moment, the 'death tests' seem to fail * still. * * if (result_.type() == ::testing::TestPartResult::kFatalFailure) { */ if (!SimpleString(result_.message()).contains("Actual: never called") && !SimpleString(result_.message()).contains("Actual function call count doesn't match")) throw CppUTestFailedException(); } virtual ~GMockTestTerminator() { } private: const ::testing::TestPartResult& result_; }; class GTestResultReporter : public ::testing::ScopedFakeTestPartResultReporter { public: GTestResultReporter () : ::testing::ScopedFakeTestPartResultReporter(INTERCEPT_ALL_THREADS, NULL) {} virtual void ReportTestPartResult(const ::testing::TestPartResult& result) { FailFailure failure(UtestShell::getCurrent(), result.file_name(), result.line_number(), result.message()); UtestShell::getCurrent()->failWith(failure, GMockTestTerminator(result)); } }; inline GTestShell::GTestShell(::testing::TestInfo* testinfo, GTestShell* next, GTestFlagsThatAllocateMemory* flags) : testinfo_(testinfo), next_(next), flags_(flags) { setGroupName(testinfo->test_case_name()); setTestName(testinfo->name()); } class GTestUTest: public Utest { public: GTestUTest(::testing::TestInfo* testinfo, GTestFlagsThatAllocateMemory* flags) : testinfo_(testinfo), test_(NULL), flags_(flags) { } void testBody() { try { test_->TestBody(); } catch (CppUTestFailedException& ex) { } } void setup() { flags_->resetValuesOfGTestFlags(); #ifdef GTEST_VERSION_GTEST_1_5 test_ = testinfo_->impl()->factory_->CreateTest(); #else test_ = testinfo_->factory_->CreateTest(); #endif ::testing::UnitTest::GetInstance()->impl()->set_current_test_info(testinfo_); try { test_->SetUp(); } catch (CppUTestFailedException& ex) { } } void teardown() { try { test_->TearDown(); } catch (CppUTestFailedException& ex) { } ::testing::UnitTest::GetInstance()->impl()->set_current_test_info(NULL); delete test_; flags_->setGTestFLagValuesToNULLToAvoidMemoryLeaks(); ::testing::internal::DeathTest::set_last_death_test_message(GTEST_NO_STRING_VALUE); } private: ::testing::Test* test_; ::testing::TestInfo* testinfo_; GTestFlagsThatAllocateMemory* flags_; }; inline Utest* GTestShell::createTest() { return new GTestUTest(testinfo_, flags_); }; inline void GTestConvertor::simulateGTestFailureToPreAllocateAllTheThreadLocalData() { GTestDummyResultReporter *dummyReporter = new GTestDummyResultReporter(); ASSERT_TRUE(false); delete dummyReporter; } inline GTestConvertor::GTestConvertor(bool shouldSimulateFailureAtCreationToAllocateThreadLocalData) : first_(NULL) { if (shouldSimulateFailureAtCreationToAllocateThreadLocalData) simulateGTestFailureToPreAllocateAllTheThreadLocalData(); reporter_ = new GTestResultReporter(); } inline GTestConvertor::~GTestConvertor() { delete reporter_; while (first_) { GTestShell* next = first_->nextGTest(); delete first_; first_ = next; } } inline void GTestConvertor::addNewTestCaseForTestInfo(::testing::TestInfo* testinfo) { first_ = new GTestShell(testinfo, first_, &flags_); TestRegistry::getCurrentRegistry()->addTest(first_); } inline void GTestConvertor::addAllTestsFromTestCaseToTestRegistry(::testing::TestCase* testcase) { int currentTestCount = 0; ::testing::TestInfo* currentTest = (::testing::TestInfo*) testcase->GetTestInfo(currentTestCount); while (currentTest) { addNewTestCaseForTestInfo(currentTest); currentTestCount++; currentTest = (::testing::TestInfo*) testcase->GetTestInfo(currentTestCount); } } inline void GTestConvertor::createDummyInSequenceToAndFailureReporterAvoidMemoryLeakInGMock() { ::testing::InSequence seq; ::testing::internal::GetFailureReporter(); } inline void GTestConvertor::addAllGTestToTestRegistry() { createDummyInSequenceToAndFailureReporterAvoidMemoryLeakInGMock(); flags_.storeValuesOfGTestFLags(); int argc = 2; const char * argv[] = {"NameOfTheProgram", "--gmock_catch_leaked_mocks=0"}; ::testing::InitGoogleMock(&argc, (char**) argv); ::testing::UnitTest* unitTests = ::testing::UnitTest::GetInstance(); int currentUnitTestCount = 0; ::testing::TestCase* currentTestCase = (::testing::TestCase*) unitTests->GetTestCase(currentUnitTestCount); while (currentTestCase) { addAllTestsFromTestCaseToTestRegistry(currentTestCase); currentUnitTestCount++; currentTestCase = (::testing::TestCase*) unitTests->GetTestCase(currentUnitTestCount); } } #endif cpputest-3.7.2/include/CppUTestExt/MemoryReportAllocator.h000644 000765 000024 00000004766 12521603460 024631 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MemoryReportAllocator_h #define D_MemoryReportAllocator_h #include "CppUTest/TestMemoryAllocator.h" class MemoryReportFormatter; class MemoryReportAllocator : public TestMemoryAllocator { protected: TestResult* result_; TestMemoryAllocator* realAllocator_; MemoryReportFormatter* formatter_; public: MemoryReportAllocator(); virtual ~MemoryReportAllocator(); virtual void setFormatter(MemoryReportFormatter* formatter); virtual void setTestResult(TestResult* result); virtual void setRealAllocator(TestMemoryAllocator* allocator); virtual TestMemoryAllocator* getRealAllocator(); virtual char* alloc_memory(size_t size, const char* file, int line) _override; virtual void free_memory(char* memory, const char* file, int line) _override; virtual const char* name() _override; virtual const char* alloc_name() _override; virtual const char* free_name() _override; }; #endif cpputest-3.7.2/include/CppUTestExt/MemoryReporterPlugin.h000644 000765 000024 00000005220 12521603460 024460 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MemoryReporterPlugin_h #define D_MemoryReporterPlugin_h #include "CppUTest/TestPlugin.h" #include "CppUTestExt/MemoryReportAllocator.h" class MemoryReportFormatter; class MemoryReporterPlugin : public TestPlugin { MemoryReportFormatter* formatter_; MemoryReportAllocator mallocAllocator; MemoryReportAllocator newAllocator; MemoryReportAllocator newArrayAllocator; SimpleString currentTestGroup_; public: MemoryReporterPlugin(); virtual ~MemoryReporterPlugin(); virtual void preTestAction(UtestShell & test, TestResult & result) _override; virtual void postTestAction(UtestShell & test, TestResult & result) _override; virtual bool parseArguments(int, const char**, int) _override; protected: virtual MemoryReportFormatter* createMemoryFormatter(const SimpleString& type); private: void destroyMemoryFormatter(MemoryReportFormatter* formatter); void setGlobalMemoryReportAllocators(); void removeGlobalMemoryReportAllocators(); void initializeAllocator(MemoryReportAllocator* allocator, TestResult & result); }; #endif cpputest-3.7.2/include/CppUTestExt/MemoryReportFormatter.h000644 000765 000024 00000006232 12521603460 024642 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MemoryReportFormatter_h #define D_MemoryReportFormatter_h class TestOutput; class UtestShell; class MemoryReportFormatter { public: virtual ~MemoryReportFormatter(){} virtual void report_testgroup_start(TestResult* result, UtestShell& test)=0; virtual void report_testgroup_end(TestResult* result, UtestShell& test)=0; virtual void report_test_start(TestResult* result, UtestShell& test)=0; virtual void report_test_end(TestResult* result, UtestShell& test)=0; virtual void report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t size, char* memory, const char* file, int line)=0; virtual void report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* memory, const char* file, int line)=0; }; class NormalMemoryReportFormatter : public MemoryReportFormatter { public: NormalMemoryReportFormatter(); virtual ~NormalMemoryReportFormatter(); virtual void report_testgroup_start(TestResult* /*result*/, UtestShell& /*test*/) _override; virtual void report_testgroup_end(TestResult* /*result*/, UtestShell& /*test*/) _override {} // LCOV_EXCL_LINE virtual void report_test_start(TestResult* result, UtestShell& test) _override; virtual void report_test_end(TestResult* result, UtestShell& test) _override; virtual void report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t size, char* memory, const char* file, int line) _override; virtual void report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* memory, const char* file, int line) _override; }; #endif cpputest-3.7.2/include/CppUTestExt/MockActualCall.h000644 000765 000024 00000012132 12521603460 023125 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockActualCall_h #define D_MockActualCall_h #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockNamedValue.h" #include "CppUTestExt/MockExpectedCallsList.h" class MockFailureReporter; class MockFailure; class MockActualCall { public: MockActualCall(); virtual ~MockActualCall(); virtual MockActualCall& withName(const SimpleString& name)=0; virtual MockActualCall& withCallOrder(int callOrder)=0; MockActualCall& withParameter(const SimpleString& name, int value) { return withIntParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, unsigned int value) { return withUnsignedIntParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, long int value) { return withLongIntParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, unsigned long int value) { return withUnsignedLongIntParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, double value) { return withDoubleParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, const char* value) { return withStringParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, void* value) { return withPointerParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, const void* value) { return withConstPointerParameter(name, value); } virtual MockActualCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value)=0; virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output)=0; virtual MockActualCall& withIntParameter(const SimpleString& name, int value)=0; virtual MockActualCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value)=0; virtual MockActualCall& withLongIntParameter(const SimpleString& name, long int value)=0; virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value)=0; virtual MockActualCall& withDoubleParameter(const SimpleString& name, double value)=0; virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value)=0; virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value)=0; virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value)=0; virtual bool hasReturnValue()=0; virtual MockNamedValue returnValue()=0; virtual int returnIntValueOrDefault(int default_value)=0; virtual int returnIntValue()=0; virtual unsigned long int returnUnsignedLongIntValue()=0; virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int default_value)=0; virtual long int returnLongIntValue()=0; virtual long int returnLongIntValueOrDefault(long int default_value)=0; virtual unsigned int returnUnsignedIntValue()=0; virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int default_value)=0; virtual const char * returnStringValueOrDefault(const char * default_value)=0; virtual const char * returnStringValue()=0; virtual double returnDoubleValue()=0; virtual double returnDoubleValueOrDefault(double default_value)=0; virtual void * returnPointerValue()=0; virtual void * returnPointerValueOrDefault(void * default_value)=0; virtual const void * returnConstPointerValue()=0; virtual const void * returnConstPointerValueOrDefault(const void * default_value)=0; virtual MockActualCall& onObject(void* objectPtr)=0; }; #endif cpputest-3.7.2/include/CppUTestExt/MockCheckedActualCall.h000644 000765 000024 00000027163 12521603460 024406 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockCheckedActualCall_h #define D_MockCheckedActualCall_h #include "CppUTestExt/MockActualCall.h" #include "CppUTestExt/MockExpectedCallsList.h" class MockCheckedActualCall : public MockActualCall { public: MockCheckedActualCall(int callOrder, MockFailureReporter* reporter, const MockExpectedCallsList& expectations); virtual ~MockCheckedActualCall(); virtual MockActualCall& withName(const SimpleString& name) _override; virtual MockActualCall& withCallOrder(int) _override; virtual MockActualCall& withIntParameter(const SimpleString& name, int value) _override; virtual MockActualCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override; virtual MockActualCall& withLongIntParameter(const SimpleString& name, long int value) _override; virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override; virtual MockActualCall& withDoubleParameter(const SimpleString& name, double value) _override; virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value) _override; virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value) _override; virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value) _override; virtual MockActualCall& withParameterOfType(const SimpleString& type, const SimpleString& name, const void* value) _override; virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output) _override; virtual bool hasReturnValue() _override; virtual MockNamedValue returnValue() _override; virtual int returnIntValueOrDefault(int default_value) _override; virtual int returnIntValue() _override; virtual unsigned long int returnUnsignedLongIntValue() _override; virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int) _override; virtual long int returnLongIntValue() _override; virtual long int returnLongIntValueOrDefault(long int default_value) _override; virtual unsigned int returnUnsignedIntValue() _override; virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int default_value) _override; virtual const char * returnStringValueOrDefault(const char * default_value) _override; virtual const char * returnStringValue() _override; virtual double returnDoubleValue() _override; virtual double returnDoubleValueOrDefault(double default_value) _override; virtual const void * returnConstPointerValue() _override; virtual const void * returnConstPointerValueOrDefault(const void * default_value) _override; virtual void * returnPointerValue() _override; virtual void * returnPointerValueOrDefault(void *) _override; virtual MockActualCall& onObject(void* objectPtr) _override; virtual bool isFulfilled() const; virtual bool hasFailed() const; virtual void checkExpectations(); virtual void setMockFailureReporter(MockFailureReporter* reporter); protected: void setName(const SimpleString& name); SimpleString getName() const; virtual UtestShell* getTest() const; virtual void callHasSucceeded(); virtual void finalizeOutputParameters(MockCheckedExpectedCall* call); virtual void finalizeCallWhenFulfilled(); virtual void failTest(const MockFailure& failure); virtual void checkInputParameter(const MockNamedValue& actualParameter); virtual void checkOutputParameter(const MockNamedValue& outputParameter); enum ActualCallState { CALL_IN_PROGESS, CALL_FAILED, CALL_SUCCEED }; virtual void setState(ActualCallState state); private: SimpleString functionName_; int callOrder_; MockFailureReporter* reporter_; ActualCallState state_; MockCheckedExpectedCall* fulfilledExpectation_; MockExpectedCallsList unfulfilledExpectations_; const MockExpectedCallsList& allExpectations_; class MockOutputParametersListNode { public: SimpleString* name_; void* ptr_; MockOutputParametersListNode* next_; MockOutputParametersListNode(SimpleString* name, void* ptr) : name_(name), ptr_(ptr), next_(NULL) {} }; MockOutputParametersListNode* outputParameterExpectations_; virtual void addOutputParameter(const SimpleString& name, void* ptr); virtual void cleanUpOutputParameterList(); }; class MockActualCallTrace : public MockActualCall { public: MockActualCallTrace(); virtual ~MockActualCallTrace(); virtual MockActualCall& withName(const SimpleString& name) _override; virtual MockActualCall& withCallOrder(int) _override; virtual MockActualCall& withIntParameter(const SimpleString& name, int value) _override; virtual MockActualCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override; virtual MockActualCall& withLongIntParameter(const SimpleString& name, long int value) _override; virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override; virtual MockActualCall& withDoubleParameter(const SimpleString& name, double value) _override; virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value) _override; virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value) _override; virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value) _override; virtual MockActualCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) _override; virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output) _override; virtual bool hasReturnValue() _override; virtual MockNamedValue returnValue() _override; virtual int returnIntValueOrDefault(int default_value) _override; virtual int returnIntValue() _override; virtual unsigned long int returnUnsignedLongIntValue() _override; virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int) _override; virtual long int returnLongIntValue() _override; virtual long int returnLongIntValueOrDefault(long int default_value) _override; virtual unsigned int returnUnsignedIntValue() _override; virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int default_value) _override; virtual const char * returnStringValueOrDefault(const char * default_value) _override; virtual const char * returnStringValue() _override; virtual double returnDoubleValue() _override; virtual double returnDoubleValueOrDefault(double default_value) _override; virtual void * returnPointerValue() _override; virtual void * returnPointerValueOrDefault(void *) _override; virtual const void * returnConstPointerValue() _override; virtual const void * returnConstPointerValueOrDefault(const void * default_value) _override; virtual MockActualCall& onObject(void* objectPtr) _override; const char* getTraceOutput(); void clear(); static MockActualCallTrace& instance(); private: SimpleString traceBuffer_; void addParameterName(const SimpleString& name); }; class MockIgnoredActualCall: public MockActualCall { public: virtual MockActualCall& withName(const SimpleString&) _override { return *this;} virtual MockActualCall& withCallOrder(int) _override { return *this; } virtual MockActualCall& withIntParameter(const SimpleString&, int) _override { return *this; } virtual MockActualCall& withUnsignedIntParameter(const SimpleString&, unsigned int) _override { return *this; } virtual MockActualCall& withLongIntParameter(const SimpleString&, long int) _override { return *this; } virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString&, unsigned long int) _override { return *this; } virtual MockActualCall& withDoubleParameter(const SimpleString&, double) _override { return *this; } virtual MockActualCall& withStringParameter(const SimpleString&, const char*) _override { return *this; } virtual MockActualCall& withPointerParameter(const SimpleString& , void*) _override { return *this; } virtual MockActualCall& withConstPointerParameter(const SimpleString& , const void*) _override { return *this; } virtual MockActualCall& withParameterOfType(const SimpleString&, const SimpleString&, const void*) _override { return *this; } virtual MockActualCall& withOutputParameter(const SimpleString&, void*) _override { return *this; } virtual bool hasReturnValue() _override { return false; } virtual MockNamedValue returnValue() _override { return MockNamedValue(""); } virtual int returnIntValueOrDefault(int) _override { return 0; } virtual int returnIntValue() _override { return 0; } virtual unsigned long int returnUnsignedLongIntValue() _override { return 0; } virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int) _override { return 0; } virtual long int returnLongIntValue() _override { return 0; } virtual long int returnLongIntValueOrDefault(long int) _override { return returnLongIntValue(); } virtual unsigned int returnUnsignedIntValue() _override { return 0; } virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int) _override { return returnUnsignedIntValue(); } virtual double returnDoubleValue() _override { return 0.0; } virtual double returnDoubleValueOrDefault(double) _override { return returnDoubleValue(); } virtual const char * returnStringValueOrDefault(const char *) _override { return returnStringValue(); } virtual const char * returnStringValue() _override { return ""; } virtual void * returnPointerValue() _override { return NULL; } virtual void * returnPointerValueOrDefault(void * ) _override { return returnPointerValue(); } virtual const void * returnConstPointerValue() _override { return NULL; } virtual const void * returnConstPointerValueOrDefault(const void *) _override { return returnConstPointerValue(); } virtual MockActualCall& onObject(void* ) _override { return *this; } static MockIgnoredActualCall& instance(); }; #endif cpputest-3.7.2/include/CppUTestExt/MockCheckedExpectedCall.h000644 000765 000024 00000024541 12521603460 024733 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockCheckedExpectedCall_h #define D_MockCheckedExpectedCall_h #include "CppUTestExt/MockExpectedCall.h" #include "CppUTestExt/MockNamedValue.h" class MockCheckedExpectedCall : public MockExpectedCall { public: MockCheckedExpectedCall(); virtual ~MockCheckedExpectedCall(); virtual MockExpectedCall& withName(const SimpleString& name) _override; virtual MockExpectedCall& withCallOrder(int callOrder) _override; virtual MockExpectedCall& withIntParameter(const SimpleString& name, int value) _override; virtual MockExpectedCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override; virtual MockExpectedCall& withLongIntParameter(const SimpleString& name, long int value) _override; virtual MockExpectedCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override; virtual MockExpectedCall& withDoubleParameter(const SimpleString& name, double value) _override; virtual MockExpectedCall& withStringParameter(const SimpleString& name, const char* value) _override; virtual MockExpectedCall& withPointerParameter(const SimpleString& name, void* value) _override; virtual MockExpectedCall& withConstPointerParameter(const SimpleString& name, const void* value) _override; virtual MockExpectedCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) _override; virtual MockExpectedCall& ignoreOtherParameters() _override; virtual MockExpectedCall& withOutputParameterReturning(const SimpleString& name, const void* value, size_t size) _override; virtual MockExpectedCall& andReturnValue(int value) _override; virtual MockExpectedCall& andReturnValue(unsigned int value) _override; virtual MockExpectedCall& andReturnValue(long int value) _override; virtual MockExpectedCall& andReturnValue(unsigned long int value) _override; virtual MockExpectedCall& andReturnValue(double value) _override; virtual MockExpectedCall& andReturnValue(const char* value) _override; virtual MockExpectedCall& andReturnValue(void* value) _override; virtual MockExpectedCall& andReturnValue(const void* value) _override; virtual MockNamedValue returnValue(); virtual MockExpectedCall& onObject(void* objectPtr) _override; virtual MockNamedValue getInputParameter(const SimpleString& name); virtual MockNamedValue getOutputParameter(const SimpleString& name); virtual SimpleString getInputParameterType(const SimpleString& name); virtual SimpleString getInputParameterValueString(const SimpleString& name); virtual bool hasInputParameterWithName(const SimpleString& name); virtual bool hasInputParameter(const MockNamedValue& parameter); virtual bool hasOutputParameter(const MockNamedValue& parameter); virtual bool relatesTo(const SimpleString& functionName); virtual bool relatesToObject(void*objectPtr) const; virtual bool isFulfilled(); virtual bool isFulfilledWithoutIgnoredParameters(); virtual bool areParametersFulfilled(); virtual bool areIgnoredParametersFulfilled(); virtual bool isOutOfOrder() const; virtual void callWasMade(int callOrder); virtual void inputParameterWasPassed(const SimpleString& name); virtual void outputParameterWasPassed(const SimpleString& name); virtual void parametersWereIgnored(); virtual void wasPassedToObject(); virtual void resetExpectation(); virtual SimpleString callToString(); virtual SimpleString missingParametersToString(); enum { NOT_CALLED_YET = -1, NO_EXPECTED_CALL_ORDER = -1}; virtual int getCallOrder() const; protected: void setName(const SimpleString& name); SimpleString getName() const; private: SimpleString functionName_; class MockExpectedFunctionParameter : public MockNamedValue { public: MockExpectedFunctionParameter(const SimpleString& name); void setFulfilled(bool b); bool isFulfilled() const; private: bool fulfilled_; }; MockExpectedFunctionParameter* item(MockNamedValueListNode* node); bool ignoreOtherParameters_; bool parametersWereIgnored_; int callOrder_; int expectedCallOrder_; bool outOfOrder_; MockNamedValueList* inputParameters_; MockNamedValueList* outputParameters_; MockNamedValue returnValue_; void* objectPtr_; bool wasPassedToObject_; }; struct MockExpectedCallCompositeNode; class MockExpectedCallComposite : public MockExpectedCall { public: MockExpectedCallComposite(); virtual ~MockExpectedCallComposite(); virtual MockExpectedCall& withName(const SimpleString& name) _override; virtual MockExpectedCall& withCallOrder(int callOrder) _override; virtual MockExpectedCall& withIntParameter(const SimpleString& name, int value) _override; virtual MockExpectedCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override; virtual MockExpectedCall& withLongIntParameter(const SimpleString& name, long int value) _override; virtual MockExpectedCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override; virtual MockExpectedCall& withDoubleParameter(const SimpleString& name, double value) _override; virtual MockExpectedCall& withStringParameter(const SimpleString& name, const char* value) _override; virtual MockExpectedCall& withConstPointerParameter(const SimpleString& name, const void* value) _override; virtual MockExpectedCall& withPointerParameter(const SimpleString& name, void* value) _override; virtual MockExpectedCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) _override; virtual MockExpectedCall& withOutputParameterReturning(const SimpleString& name, const void* value, size_t size) _override; virtual MockExpectedCall& ignoreOtherParameters() _override; virtual MockExpectedCall& andReturnValue(int value) _override; virtual MockExpectedCall& andReturnValue(unsigned int value) _override; virtual MockExpectedCall& andReturnValue(long int value) _override; virtual MockExpectedCall& andReturnValue(unsigned long int value) _override; virtual MockExpectedCall& andReturnValue(double value) _override; virtual MockExpectedCall& andReturnValue(const char* value) _override; virtual MockExpectedCall& andReturnValue(void* value) _override; virtual MockExpectedCall& andReturnValue(const void* value) _override; virtual MockExpectedCall& onObject(void* objectPtr) _override; virtual void add(MockExpectedCall& call); virtual void clear(); private: MockExpectedCallCompositeNode* head_; }; class MockIgnoredExpectedCall: public MockExpectedCall { public: virtual MockExpectedCall& withName(const SimpleString&) _override { return *this;} virtual MockExpectedCall& withCallOrder(int) _override { return *this; } virtual MockExpectedCall& withIntParameter(const SimpleString&, int) _override { return *this; } virtual MockExpectedCall& withUnsignedIntParameter(const SimpleString&, unsigned int) _override{ return *this; } virtual MockExpectedCall& withLongIntParameter(const SimpleString&, long int) _override { return *this; } virtual MockExpectedCall& withUnsignedLongIntParameter(const SimpleString&, unsigned long int) _override { return *this; } virtual MockExpectedCall& withDoubleParameter(const SimpleString&, double) _override { return *this; } virtual MockExpectedCall& withStringParameter(const SimpleString&, const char*) _override { return *this; } virtual MockExpectedCall& withPointerParameter(const SimpleString& , void*) _override { return *this; } virtual MockExpectedCall& withConstPointerParameter(const SimpleString& , const void*) _override { return *this; } virtual MockExpectedCall& withParameterOfType(const SimpleString&, const SimpleString&, const void*) _override { return *this; } virtual MockExpectedCall& withOutputParameterReturning(const SimpleString&, const void*, size_t) { return *this; } virtual MockExpectedCall& ignoreOtherParameters() { return *this;} virtual MockExpectedCall& andReturnValue(int) _override { return *this; } virtual MockExpectedCall& andReturnValue(unsigned int) _override { return *this; } virtual MockExpectedCall& andReturnValue(long int) _override { return *this; } virtual MockExpectedCall& andReturnValue(unsigned long int) _override { return *this; } virtual MockExpectedCall& andReturnValue(double) _override { return *this;} virtual MockExpectedCall& andReturnValue(const char*) _override { return *this; } virtual MockExpectedCall& andReturnValue(void*) _override { return *this; } virtual MockExpectedCall& andReturnValue(const void*) _override { return *this; } virtual MockExpectedCall& onObject(void*) _override { return *this; } static MockExpectedCall& instance(); }; #endif cpputest-3.7.2/include/CppUTestExt/MockExpectedCall.h000644 000765 000024 00000011065 12521603460 023461 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockExpectedCall_h #define D_MockExpectedCall_h class MockNamedValue; extern SimpleString StringFrom(const MockNamedValue& parameter); class MockExpectedCall { public: MockExpectedCall(); virtual ~MockExpectedCall(); virtual MockExpectedCall& withName(const SimpleString& name)=0; virtual MockExpectedCall& withCallOrder(int)=0; MockExpectedCall& withParameter(const SimpleString& name, int value) { return withIntParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, unsigned int value) { return withUnsignedIntParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, long int value) { return withLongIntParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, unsigned long int value) { return withUnsignedLongIntParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, double value) { return withDoubleParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, const char* value) { return withStringParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, void* value) { return withPointerParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, const void* value) { return withConstPointerParameter(name, value); } virtual MockExpectedCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value)=0; virtual MockExpectedCall& withOutputParameterReturning(const SimpleString& name, const void* value, size_t size)=0; virtual MockExpectedCall& ignoreOtherParameters()=0; virtual MockExpectedCall& withIntParameter(const SimpleString& name, int value)=0; virtual MockExpectedCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value)=0; virtual MockExpectedCall& withLongIntParameter(const SimpleString& name, long int value)=0; virtual MockExpectedCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value)=0; virtual MockExpectedCall& withDoubleParameter(const SimpleString& name, double value)=0; virtual MockExpectedCall& withStringParameter(const SimpleString& name, const char* value)=0; virtual MockExpectedCall& withPointerParameter(const SimpleString& name, void* value)=0; virtual MockExpectedCall& withConstPointerParameter(const SimpleString& name, const void* value)=0; virtual MockExpectedCall& andReturnValue(int value)=0; virtual MockExpectedCall& andReturnValue(unsigned int value)=0; virtual MockExpectedCall& andReturnValue(long int value)=0; virtual MockExpectedCall& andReturnValue(unsigned long int value)=0; virtual MockExpectedCall& andReturnValue(double value)=0; virtual MockExpectedCall& andReturnValue(const char* value)=0; virtual MockExpectedCall& andReturnValue(void* value)=0; virtual MockExpectedCall& andReturnValue(const void* value)=0; virtual MockExpectedCall& onObject(void* objectPtr)=0; }; #endif cpputest-3.7.2/include/CppUTestExt/MockExpectedCallsList.h000644 000765 000024 00000011453 12521603460 024501 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockExpectedCallsList_h #define D_MockExpectedCallsList_h class MockCheckedExpectedCall; class MockNamedValue; class MockExpectedCallsList { public: MockExpectedCallsList(); virtual ~MockExpectedCallsList(); virtual void deleteAllExpectationsAndClearList(); virtual int size() const; virtual int amountOfExpectationsFor(const SimpleString& name) const; virtual int amountOfUnfulfilledExpectations() const; virtual bool hasUnfullfilledExpectations() const; virtual bool hasFulfilledExpectations() const; virtual bool hasFulfilledExpectationsWithoutIgnoredParameters() const; virtual bool hasUnfulfilledExpectationsBecauseOfMissingParameters() const; virtual bool hasExpectationWithName(const SimpleString& name) const; virtual bool hasCallsOutOfOrder() const; virtual bool isEmpty() const; virtual void addExpectedCall(MockCheckedExpectedCall* call); virtual void addExpectations(const MockExpectedCallsList& list); virtual void addExpectationsRelatedTo(const SimpleString& name, const MockExpectedCallsList& list); virtual void addUnfilfilledExpectations(const MockExpectedCallsList& list); virtual void onlyKeepExpectationsRelatedTo(const SimpleString& name); virtual void onlyKeepExpectationsWithInputParameter(const MockNamedValue& parameter); virtual void onlyKeepExpectationsWithInputParameterName(const SimpleString& name); virtual void onlyKeepExpectationsWithOutputParameterName(const SimpleString& name); virtual void onlyKeepExpectationsOnObject(void* objectPtr); virtual void onlyKeepUnfulfilledExpectations(); virtual void onlyKeepUnfulfilledExpectationsRelatedTo(const SimpleString& name); virtual void onlyKeepUnfulfilledExpectationsWithInputParameter(const MockNamedValue& parameter); virtual void onlyKeepUnfulfilledExpectationsWithOutputParameter(const MockNamedValue& parameter); virtual void onlyKeepUnfulfilledExpectationsOnObject(void* objectPtr); virtual MockCheckedExpectedCall* removeOneFulfilledExpectation(); virtual MockCheckedExpectedCall* removeOneFulfilledExpectationWithIgnoredParameters(); virtual MockCheckedExpectedCall* getOneFulfilledExpectationWithIgnoredParameters(); virtual void resetExpectations(); virtual void callWasMade(int callOrder); virtual void wasPassedToObject(); virtual void parameterWasPassed(const SimpleString& parameterName); virtual void outputParameterWasPassed(const SimpleString& parameterName); virtual SimpleString unfulfilledCallsToString(const SimpleString& linePrefix = "") const; virtual SimpleString fulfilledCallsToString(const SimpleString& linePrefix = "") const; virtual SimpleString missingParametersToString() const; protected: virtual void pruneEmptyNodeFromList(); class MockExpectedCallsListNode { public: MockCheckedExpectedCall* expectedCall_; MockExpectedCallsListNode* next_; MockExpectedCallsListNode(MockCheckedExpectedCall* expectedCall) : expectedCall_(expectedCall), next_(NULL) {} }; virtual MockExpectedCallsListNode* findNodeWithCallOrderOf(int callOrder) const; private: MockExpectedCallsListNode* head_; MockExpectedCallsList(const MockExpectedCallsList&); }; #endif cpputest-3.7.2/include/CppUTestExt/MockFailure.h000644 000765 000024 00000011250 12521603460 022507 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockFailure_h #define D_MockFailure_h #include "CppUTest/TestFailure.h" class MockExpectedCallsList; class MockCheckedActualCall; class MockNamedValue; class MockFailure; class MockFailureReporter { protected: bool crashOnFailure_; public: MockFailureReporter() : crashOnFailure_(false){} virtual ~MockFailureReporter() {} virtual void failTest(const MockFailure& failure); virtual UtestShell* getTestToFail(); virtual void crashOnFailure(bool shouldCrash) { crashOnFailure_ = shouldCrash; } }; class MockFailure : public TestFailure { public: MockFailure(UtestShell* test); virtual ~MockFailure(){} protected: void addExpectationsAndCallHistory(const MockExpectedCallsList& expectations); void addExpectationsAndCallHistoryRelatedTo(const SimpleString& function, const MockExpectedCallsList& expectations); }; class MockExpectedCallsDidntHappenFailure : public MockFailure { public: MockExpectedCallsDidntHappenFailure(UtestShell* test, const MockExpectedCallsList& expectations); virtual ~MockExpectedCallsDidntHappenFailure(){} }; class MockUnexpectedCallHappenedFailure : public MockFailure { public: MockUnexpectedCallHappenedFailure(UtestShell* test, const SimpleString& name, const MockExpectedCallsList& expectations); virtual ~MockUnexpectedCallHappenedFailure(){} }; class MockCallOrderFailure : public MockFailure { public: MockCallOrderFailure(UtestShell* test, const MockExpectedCallsList& expectations); virtual ~MockCallOrderFailure(){} }; class MockUnexpectedInputParameterFailure : public MockFailure { public: MockUnexpectedInputParameterFailure(UtestShell* test, const SimpleString& functionName, const MockNamedValue& parameter, const MockExpectedCallsList& expectations); virtual ~MockUnexpectedInputParameterFailure(){} }; class MockUnexpectedOutputParameterFailure : public MockFailure { public: MockUnexpectedOutputParameterFailure(UtestShell* test, const SimpleString& functionName, const MockNamedValue& parameter, const MockExpectedCallsList& expectations); virtual ~MockUnexpectedOutputParameterFailure(){} }; class MockExpectedParameterDidntHappenFailure : public MockFailure { public: MockExpectedParameterDidntHappenFailure(UtestShell* test, const SimpleString& functionName, const MockExpectedCallsList& expectations); virtual ~MockExpectedParameterDidntHappenFailure(){} }; class MockNoWayToCompareCustomTypeFailure : public MockFailure { public: MockNoWayToCompareCustomTypeFailure(UtestShell* test, const SimpleString& typeName); virtual ~MockNoWayToCompareCustomTypeFailure(){} }; class MockUnexpectedObjectFailure : public MockFailure { public: MockUnexpectedObjectFailure(UtestShell* test, const SimpleString& functionName, void* expected, const MockExpectedCallsList& expectations); virtual ~MockUnexpectedObjectFailure(){} }; class MockExpectedObjectDidntHappenFailure : public MockFailure { public: MockExpectedObjectDidntHappenFailure(UtestShell* test, const SimpleString& functionName, const MockExpectedCallsList& expectations); virtual ~MockExpectedObjectDidntHappenFailure(){} }; #endif cpputest-3.7.2/include/CppUTestExt/MockNamedValue.h000644 000765 000024 00000014527 12521603460 023153 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockNamedValue_h #define D_MockNamedValue_h /* * MockParameterComparator is an interface that needs to be used when creating Comparators. * This is needed when comparing values of non-native type. */ class MockNamedValueComparator { public: MockNamedValueComparator() {} virtual ~MockNamedValueComparator() {} virtual bool isEqual(const void* object1, const void* object2)=0; virtual SimpleString valueToString(const void* object)=0; }; class MockFunctionComparator : public MockNamedValueComparator { public: typedef bool (*isEqualFunction)(const void*, const void*); typedef SimpleString (*valueToStringFunction)(const void*); MockFunctionComparator(isEqualFunction equal, valueToStringFunction valToString) : equal_(equal), valueToString_(valToString) {} virtual ~MockFunctionComparator(){} virtual bool isEqual(const void* object1, const void* object2) _override { return equal_(object1, object2); } virtual SimpleString valueToString(const void* object) _override { return valueToString_(object); } private: isEqualFunction equal_; valueToStringFunction valueToString_; }; /* * MockNamedValue is the generic value class used. It encapsulates basic types and can use them "as if one" * Also it enables other types by putting object pointers. They can be compared with comparators. * * Basically this class ties together a Name, a Value, a Type, and a Comparator */ class MockNamedValueComparatorRepository; class MockNamedValue { public: MockNamedValue(const SimpleString& name); DEFAULT_COPY_CONSTRUCTOR(MockNamedValue) virtual ~MockNamedValue(); virtual void setValue(int value); virtual void setValue(unsigned int value); virtual void setValue(long int value); virtual void setValue(unsigned long int value); virtual void setValue(double value); virtual void setValue(void* value); virtual void setValue(const void* value); virtual void setValue(const char* value); virtual void setObjectPointer(const SimpleString& type, const void* objectPtr); virtual void setSize(size_t size); virtual void setName(const char* name); virtual bool equals(const MockNamedValue& p) const; virtual SimpleString toString() const; virtual SimpleString getName() const; virtual SimpleString getType() const; virtual int getIntValue() const; virtual unsigned int getUnsignedIntValue() const; virtual long int getLongIntValue() const; virtual unsigned long int getUnsignedLongIntValue() const; virtual double getDoubleValue() const; virtual const char* getStringValue() const; virtual void* getPointerValue() const; virtual const void* getConstPointerValue() const; virtual const void* getObjectPointer() const; virtual size_t getSize() const; virtual MockNamedValueComparator* getComparator() const; static void setDefaultComparatorRepository(MockNamedValueComparatorRepository* repository); private: SimpleString name_; SimpleString type_; union { int intValue_; unsigned int unsignedIntValue_; long int longIntValue_; unsigned long int unsignedLongIntValue_; double doubleValue_; const char* stringValue_; void* pointerValue_; const void* constPointerValue_; const void* objectPointerValue_; const void* outputPointerValue_; } value_; size_t size_; MockNamedValueComparator* comparator_; static MockNamedValueComparatorRepository* defaultRepository_; }; class MockNamedValueListNode { public: MockNamedValueListNode(MockNamedValue* newValue); SimpleString getName() const; SimpleString getType() const; MockNamedValueListNode* next(); MockNamedValue* item(); void destroy(); void setNext(MockNamedValueListNode* node); private: MockNamedValue* data_; MockNamedValueListNode* next_; }; class MockNamedValueList { public: MockNamedValueList(); MockNamedValueListNode* begin(); void add(MockNamedValue* newValue); void clear(); MockNamedValue* getValueByName(const SimpleString& name); private: MockNamedValueListNode* head_; }; /* * MockParameterComparatorRepository is a class which stores comparators which can be used for comparing non-native types * */ struct MockNamedValueComparatorRepositoryNode; class MockNamedValueComparatorRepository { MockNamedValueComparatorRepositoryNode* head_; public: MockNamedValueComparatorRepository(); virtual ~MockNamedValueComparatorRepository(); virtual void installComparator(const SimpleString& name, MockNamedValueComparator& comparator); virtual void installComparators(const MockNamedValueComparatorRepository& repository); virtual MockNamedValueComparator* getComparatorForType(const SimpleString& name); void clear(); }; #endif cpputest-3.7.2/include/CppUTestExt/MockSupport.h000644 000765 000024 00000014041 12521603460 022575 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockSupport_h #define D_MockSupport_h #include "CppUTestExt/MockFailure.h" #include "CppUTestExt/MockCheckedActualCall.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockExpectedCallsList.h" class UtestShell; class MockSupport; /* This allows access to "the global" mocking support for easier testing */ MockSupport& mock(const SimpleString& mockName = "", MockFailureReporter* failureReporterForThisCall = NULL); class MockSupport { public: MockSupport(); virtual ~MockSupport(); virtual void strictOrder(); virtual MockExpectedCall& expectOneCall(const SimpleString& functionName); virtual MockExpectedCall& expectNCalls(int amount, const SimpleString& functionName); virtual MockActualCall& actualCall(const SimpleString& functionName); virtual bool hasReturnValue(); virtual MockNamedValue returnValue(); virtual int intReturnValue(); virtual int returnIntValueOrDefault(int defaultValue); virtual unsigned int unsignedIntReturnValue(); virtual long int longIntReturnValue(); virtual long int returnLongIntValueOrDefault(long int defaultValue); virtual unsigned long int unsignedLongIntReturnValue(); virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int defaultValue); virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int defaultValue); virtual const char* stringReturnValue(); virtual const char* returnStringValueOrDefault(const char * defaultValue); virtual double returnDoubleValueOrDefault(double defaultValue); virtual double doubleReturnValue(); virtual void* pointerReturnValue(); virtual void* returnPointerValueOrDefault(void * defaultValue); virtual const void* returnConstPointerValueOrDefault(const void * defaultValue); virtual const void* constPointerReturnValue(); bool hasData(const SimpleString& name); void setData(const SimpleString& name, int value); void setData(const SimpleString& name, unsigned int value); void setData(const SimpleString& name, const char* value); void setData(const SimpleString& name, double value); void setData(const SimpleString& name, void* value); void setData(const SimpleString& name, const void* value); void setDataObject(const SimpleString& name, const SimpleString& type, void* value); MockNamedValue getData(const SimpleString& name); MockSupport* getMockSupportScope(const SimpleString& name); const char* getTraceOutput(); /* * The following functions are recursively through the lower MockSupports scopes * This means, if you do mock().disable() it will disable *all* mocking scopes, including mock("myScope"). */ virtual void disable(); virtual void enable(); virtual void tracing(bool enabled); virtual void ignoreOtherCalls(); virtual void checkExpectations(); virtual bool expectedCallsLeft(); virtual void clear(); virtual void crashOnFailure(bool shouldFail = true); /* * Each mock() call will set the activeReporter to standard, unless a special reporter is passed for this call. */ virtual void setMockFailureStandardReporter(MockFailureReporter* reporter); virtual void setActiveReporter(MockFailureReporter* activeReporter); virtual void setDefaultComparatorRepository(); virtual void installComparator(const SimpleString& typeName, MockNamedValueComparator& comparator); virtual void installComparators(const MockNamedValueComparatorRepository& repository); virtual void removeAllComparators(); protected: MockSupport* clone(); virtual MockCheckedActualCall *createActualFunctionCall(); virtual void failTest(MockFailure& failure); void countCheck(); private: int callOrder_; int expectedCallOrder_; bool strictOrdering_; MockFailureReporter *activeReporter_; MockFailureReporter *standardReporter_; MockFailureReporter defaultReporter_; MockExpectedCallsList expectations_; bool ignoreOtherCalls_; bool enabled_; MockCheckedActualCall *lastActualFunctionCall_; MockExpectedCallComposite compositeCalls_; MockNamedValueComparatorRepository comparatorRepository_; MockNamedValueList data_; bool tracing_; void checkExpectationsOfLastCall(); bool wasLastCallFulfilled(); void failTestWithUnexpectedCalls(); void failTestWithOutOfOrderCalls(); MockNamedValue* retrieveDataFromStore(const SimpleString& name); MockSupport* getMockSupport(MockNamedValueListNode* node); }; #endif cpputest-3.7.2/include/CppUTestExt/MockSupport_c.h000644 000765 000024 00000014171 12521603460 023103 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockSupport_c_h #define D_MockSupport_c_h #ifdef __cplusplus extern "C" { #endif #include "CppUTest/StandardCLibrary.h" typedef enum { MOCKVALUETYPE_UNSIGNED_INTEGER, MOCKVALUETYPE_INTEGER, MOCKVALUETYPE_LONG_INTEGER, MOCKVALUETYPE_UNSIGNED_LONG_INTEGER, MOCKVALUETYPE_DOUBLE, MOCKVALUETYPE_STRING, MOCKVALUETYPE_POINTER, MOCKVALUETYPE_CONST_POINTER, MOCKVALUETYPE_OBJECT } MockValueType_c; typedef struct SMockValue_c { MockValueType_c type; union { int intValue; unsigned int unsignedIntValue; long int longIntValue; unsigned long int unsignedLongIntValue; double doubleValue; const char* stringValue; void* pointerValue; const void* constPointerValue; const void* objectValue; } value; } MockValue_c; typedef struct SMockActualCall_c MockActualCall_c; struct SMockActualCall_c { MockActualCall_c* (*withIntParameters)(const char* name, int value); MockActualCall_c* (*withUnsignedIntParameters)(const char* name, unsigned int value); MockActualCall_c* (*withLongIntParameters)(const char* name, long int value); MockActualCall_c* (*withUnsignedLongIntParameters)(const char* name, unsigned long int value); MockActualCall_c* (*withDoubleParameters)(const char* name, double value); MockActualCall_c* (*withStringParameters)(const char* name, const char* value); MockActualCall_c* (*withPointerParameters)(const char* name, void* value); MockActualCall_c* (*withConstPointerParameters)(const char* name, const void* value); MockActualCall_c* (*withParameterOfType)(const char* type, const char* name, const void* value); MockActualCall_c* (*withOutputParameter)(const char* name, void* value); MockValue_c (*returnValue)(void); }; typedef struct SMockExpectedCall_c MockExpectedCall_c; struct SMockExpectedCall_c { MockExpectedCall_c* (*withIntParameters)(const char* name, int value); MockExpectedCall_c* (*withUnsignedIntParameters)(const char* name, unsigned int value); MockExpectedCall_c* (*withLongIntParameters)(const char* name, long int value); MockExpectedCall_c* (*withUnsignedLongIntParameters)(const char* name, unsigned long int value); MockExpectedCall_c* (*withDoubleParameters)(const char* name, double value); MockExpectedCall_c* (*withStringParameters)(const char* name, const char* value); MockExpectedCall_c* (*withPointerParameters)(const char* name, void* value); MockExpectedCall_c* (*withConstPointerParameters)(const char* name, const void* value); MockExpectedCall_c* (*withParameterOfType)(const char* type, const char* name, const void* value); MockExpectedCall_c* (*withOutputParameterReturning)(const char* name, const void* value, size_t size); MockExpectedCall_c* (*andReturnUnsignedIntValue)(unsigned int value); MockExpectedCall_c* (*andReturnIntValue)(int value); MockExpectedCall_c* (*andReturnLongIntValue)(long int value); MockExpectedCall_c* (*andReturnUnsignedLongIntValue)(unsigned long int value); MockExpectedCall_c* (*andReturnDoubleValue)(double value); MockExpectedCall_c* (*andReturnStringValue)(const char* value); MockExpectedCall_c* (*andReturnPointerValue)(void* value); MockExpectedCall_c* (*andReturnConstPointerValue)(const void* value); }; typedef int (*MockTypeEqualFunction_c)(const void* object1, const void* object2); typedef char* (*MockTypeValueToStringFunction_c)(const void* object1); typedef struct SMockSupport_c MockSupport_c; struct SMockSupport_c { MockExpectedCall_c* (*expectOneCall)(const char* name); MockActualCall_c* (*actualCall)(const char* name); MockValue_c (*returnValue)(void); void (*enable)(void); void (*disable)(void); void (*setIntData) (const char* name, int value); void (*setDoubleData) (const char* name, double value); void (*setStringData) (const char* name, const char* value); void (*setPointerData) (const char* name, void* value); void (*setConstPointerData) (const char* name, const void* value); void (*setDataObject) (const char* name, const char* type, void* value); MockValue_c (*getData)(const char* name); void (*checkExpectations)(void); int (*expectedCallsLeft)(void); void (*clear)(void); void (*crashOnFailure)(unsigned shouldCrash); void (*installComparator) (const char* typeName, MockTypeEqualFunction_c isEqual, MockTypeValueToStringFunction_c valueToString); void (*removeAllComparators)(void); }; MockSupport_c* mock_c(void); MockSupport_c* mock_scope_c(const char* scope); #ifdef __cplusplus } #endif #endif cpputest-3.7.2/include/CppUTestExt/MockSupportPlugin.h000644 000765 000024 00000004241 12521603460 023755 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockSupportPlugin_h #define D_MockSupportPlugin_h #include "CppUTest/TestPlugin.h" #include "CppUTestExt/MockNamedValue.h" class MockSupportPlugin : public TestPlugin { public: MockSupportPlugin(const SimpleString& name = "MockSupportPLugin"); virtual ~MockSupportPlugin(); virtual void preTestAction(UtestShell&, TestResult&) _override; virtual void postTestAction(UtestShell&, TestResult&) _override; virtual void installComparator(const SimpleString& name, MockNamedValueComparator& comparator); private: MockNamedValueComparatorRepository repository_; }; #endif cpputest-3.7.2/include/CppUTestExt/OrderedTest.h000644 000765 000024 00000006745 12521603460 022547 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_OrderedTest_h #define D_OrderedTest_h class OrderedTestShell : public UtestShell { public: OrderedTestShell(); virtual ~OrderedTestShell(); virtual OrderedTestShell* addOrderedTest(OrderedTestShell* test); virtual OrderedTestShell* getNextOrderedTest(); int getLevel(); void setLevel(int level); static void addOrderedTestToHead(OrderedTestShell* test); static OrderedTestShell* getOrderedTestHead(); static bool firstOrderedTest(); static void setOrderedTestHead(OrderedTestShell* test); private: static OrderedTestShell* _orderedTestsHead; OrderedTestShell* _nextOrderedTest; int _level; }; class OrderedTestInstaller { public: explicit OrderedTestInstaller(OrderedTestShell& test, const char* groupName, const char* testName, const char* fileName, int lineNumber, int level); virtual ~OrderedTestInstaller(); private: void addOrderedTestInOrder(OrderedTestShell* test); void addOrderedTestInOrderNotAtHeadPosition(OrderedTestShell* test); }; #define TEST_ORDERED(testGroup, testName, testLevel) \ /* declarations for compilers */ \ class TEST_##testGroup##_##testName##_TestShell; \ extern TEST_##testGroup##_##testName##_TestShell TEST_##testGroup##_##testName##_Instance; \ class TEST_##testGroup##_##testName##_Test : public TEST_GROUP_##CppUTestGroup##testGroup \ { public: TEST_##testGroup##_##testName##_Test () : TEST_GROUP_##CppUTestGroup##testGroup () {} \ void testBody(); }; \ class TEST_##testGroup##_##testName##_TestShell : public OrderedTestShell { \ virtual Utest* createTest() _override { return new TEST_##testGroup##_##testName##_Test; } \ } TEST_##testGroup##_##testName##_Instance; \ static OrderedTestInstaller TEST_##testGroup##_##testName##_Installer(TEST_##testGroup##_##testName##_Instance, #testGroup, #testName, __FILE__,__LINE__, testLevel); \ void TEST_##testGroup##_##testName##_Test::testBody() #endif cpputest-3.7.2/include/CppUTest/CommandLineArguments.h000644 000765 000024 00000006772 12521603460 023716 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_CommandLineArguments_H #define D_CommandLineArguments_H #include "SimpleString.h" #include "TestOutput.h" #include "TestFilter.h" class TestPlugin; class CommandLineArguments { public: explicit CommandLineArguments(int ac, const char** av); virtual ~CommandLineArguments(); bool parse(TestPlugin* plugin); bool isVerbose() const; bool isColor() const; bool isListingTestGroupNames() const; bool isListingTestGroupAndCaseNames() const; int getRepeatCount() const; const TestFilter* getGroupFilters() const; const TestFilter* getNameFilters() const; bool isJUnitOutput() const; bool isEclipseOutput() const; bool runTestsInSeperateProcess() const; const SimpleString& getPackageName() const; const char* usage() const; private: enum OutputType { OUTPUT_ECLIPSE, OUTPUT_JUNIT }; int ac_; const char** av_; bool verbose_; bool color_; bool runTestsAsSeperateProcess_; bool listTestGroupNames_; bool listTestGroupAndCaseNames_; int repeat_; TestFilter* groupFilters_; TestFilter* nameFilters_; OutputType outputType_; SimpleString packageName_; SimpleString getParameterField(int ac, const char** av, int& i, const SimpleString& parameterName); void SetRepeatCount(int ac, const char** av, int& index); void AddGroupFilter(int ac, const char** av, int& index); void AddStrictGroupFilter(int ac, const char** av, int& index); void AddNameFilter(int ac, const char** av, int& index); void AddStrictNameFilter(int ac, const char** av, int& index); void AddTestToRunBasedOnVerboseOutput(int ac, const char** av, int& index, const char* parameterName); bool SetOutputType(int ac, const char** av, int& index); void SetPackageName(int ac, const char** av, int& index); CommandLineArguments(const CommandLineArguments&); CommandLineArguments& operator=(const CommandLineArguments&); }; #endif cpputest-3.7.2/include/CppUTest/CommandLineTestRunner.h000644 000765 000024 00000005066 12521603460 024055 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_CommandLineTestRunner_H #define D_CommandLineTestRunner_H #include "TestHarness.h" #include "TestOutput.h" #include "CommandLineArguments.h" #include "TestFilter.h" class TestRegistry; #define DEF_PLUGIN_MEM_LEAK "MemoryLeakPlugin" #define DEF_PLUGIN_SET_POINTER "SetPointerPlugin" class CommandLineTestRunner { public: static int RunAllTests(int ac, const char** av); static int RunAllTests(int ac, char** av); CommandLineTestRunner(int ac, const char** av, TestRegistry* registry); virtual ~CommandLineTestRunner(); int runAllTestsMain(); protected: virtual TestOutput* createJUnitOutput(const SimpleString& packageName); virtual TestOutput* createConsoleOutput(); virtual TestOutput* createCompositeOutput(TestOutput* outputOne, TestOutput* outputTwo); TestOutput* output_; private: CommandLineArguments* arguments_; TestRegistry* registry_; bool parseArguments(TestPlugin*); int runAllTests(); void initializeTestRun(); }; #endif cpputest-3.7.2/include/CppUTest/CppUTestConfig.h000644 000765 000024 00000014020 12521603460 022460 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CPPUTESTCONFIG_H_ #define CPPUTESTCONFIG_H_ #ifdef HAVE_CONFIG_H #include "config.h" #endif /* * This file is added for some specific CppUTest configurations that earlier were spread out into multiple files. * * The goal of this file is to stay really small and not to include other things, but mainly to remove duplication * from other files and resolve dependencies in #includes. * */ /* * Lib C dependencies that are currently still left: * * stdarg.h -> We use formatting functions and va_list requires to include stdarg.h in SimpleString * stdlib.h -> The TestHarness_c.h includes this to try to avoid conflicts in its malloc #define. This dependency can * easily be removed by not enabling the MALLOC overrides. * * Lib C++ dependencies are all under the CPPUTEST_USE_STD_CPP_LIB. * The only dependency is to which has the bad_alloc struct * */ /* Do we use Standard C or not? When doing Kernel development, standard C usage is out. */ #ifndef CPPUTEST_USE_STD_C_LIB #ifdef CPPUTEST_STD_C_LIB_DISABLED #define CPPUTEST_USE_STD_C_LIB 0 #else #define CPPUTEST_USE_STD_C_LIB 1 #endif #endif /* Do we use Standard C++ or not? */ #ifndef CPPUTEST_USE_STD_CPP_LIB #ifdef CPPUTEST_STD_CPP_LIB_DISABLED #define CPPUTEST_USE_STD_CPP_LIB 0 #else #define CPPUTEST_USE_STD_CPP_LIB 1 #endif #endif /* Is memory leak detection enabled? * Controls the override of the global operator new/deleted and malloc/free. * Without this, there will be no memory leak detection in C/C++. */ #ifndef CPPUTEST_USE_MEM_LEAK_DETECTION #ifdef CPPUTEST_MEM_LEAK_DETECTION_DISABLED #define CPPUTEST_USE_MEM_LEAK_DETECTION 0 #else #define CPPUTEST_USE_MEM_LEAK_DETECTION 1 #endif #endif /* Create a __no_return__ macro, which is used to flag a function as not returning. * Used for functions that always throws for instance. * * This is needed for compiling with clang, without breaking other compilers. */ #ifndef __has_attribute #define __has_attribute(x) 0 #endif #if __has_attribute(noreturn) #define __no_return__ __attribute__((noreturn)) #else #define __no_return__ #endif #if __has_attribute(format) #define __check_format__(type, format_parameter, other_parameters) __attribute__ ((format (type, format_parameter, other_parameters))) #else #define __check_format__(type, format_parameter, other_parameters) /* type, format_parameter, other_parameters */ #endif /* * When we don't link Standard C++, then we won't throw exceptions as we assume the compiler might not support that! */ #if CPPUTEST_USE_STD_CPP_LIB #if defined(__cplusplus) && __cplusplus >= 201103L #define UT_THROW(exception) #define UT_NOTHROW noexcept #else #define UT_THROW(exception) throw (exception) #define UT_NOTHROW throw() #endif #else #define UT_THROW(exception) #ifdef __clang__ #define UT_NOTHROW throw() #else #define UT_NOTHROW #endif #endif /* * Visual C++ doesn't define __cplusplus as C++11 yet (201103), however it doesn't want the throw(exception) either, but * it does want throw(). */ #ifdef _MSC_VER #undef UT_THROW #define UT_THROW(exception) #endif #if defined(__cplusplus) && __cplusplus >= 201103L #define DEFAULT_COPY_CONSTRUCTOR(classname) classname(const classname &) = default; #else #define DEFAULT_COPY_CONSTRUCTOR(classname) #endif /* * g++-4.7 with stdc++11 enabled On MacOSX! will have a different exception specifier for operator new (and thank you!) * I assume they'll fix this in the future, but for now, we'll change that here. * (This should perhaps also be done in the configure.ac) */ #ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __APPLE__ #ifdef _GLIBCXX_THROW #undef UT_THROW #define UT_THROW(exception) _GLIBCXX_THROW(exception) #endif #endif #endif /* * Detection of different 64 bit environments */ #if defined(__LP64__) || defined(_LP64) || (defined(__WORDSIZE) && (__WORDSIZE == 64 )) || defined(__x86_64) || defined(_WIN64) #define CPPUTEST_64BIT #if defined(_WIN64) #define CPPUTEST_64BIT_32BIT_LONGS #endif #endif /* Visual C++ 10.0+ (2010+) supports the override keyword, but doesn't define the C++ version as C++11 */ #if defined(__cplusplus) && ((__cplusplus >= 201103L) || (defined(_MSC_VER) && (_MSC_VER >= 1600))) #define _override override #else #define _override #endif /* MinGW-w64 prefers to act like Visual C++, but we want the ANSI behaviors instead */ #define __USE_MINGW_ANSI_STDIO 1 /* Should be the only #include here. Standard C library wrappers */ #include "StandardCLibrary.h" #endif cpputest-3.7.2/include/CppUTest/JUnitTestOutput.h000644 000765 000024 00000006171 12521603460 022745 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_JUnitTestOutput_h #define D_JUnitTestOutput_h #include "TestOutput.h" #include "SimpleString.h" struct JUnitTestOutputImpl; struct JUnitTestCaseResultNode; class JUnitTestOutput: public TestOutput { public: JUnitTestOutput(); virtual ~JUnitTestOutput(); virtual void printTestsStarted() _override; virtual void printTestsEnded(const TestResult& result) _override; virtual void printCurrentTestStarted(const UtestShell& test) _override; virtual void printCurrentTestEnded(const TestResult& res) _override; virtual void printCurrentGroupStarted(const UtestShell& test) _override; virtual void printCurrentGroupEnded(const TestResult& res) _override; virtual void printBuffer(const char*) _override; virtual void print(const char*) _override; virtual void print(long) _override; virtual void print(const TestFailure& failure) _override; virtual void flush() _override; virtual SimpleString createFileName(const SimpleString& group); void setPackageName(const SimpleString &package); protected: JUnitTestOutputImpl* impl_; void resetTestGroupResult(); virtual void openFileForWrite(const SimpleString& fileName); virtual void writeTestGroupToFile(); virtual void writeToFile(const SimpleString& buffer); virtual void closeFile(); virtual void writeXmlHeader(); virtual void writeTestSuiteSummery(); virtual void writeProperties(); virtual void writeTestCases(); virtual void writeFailure(JUnitTestCaseResultNode* node); virtual void writeFileEnding(); }; #endif cpputest-3.7.2/include/CppUTest/MemoryLeakDetector.h000644 000765 000024 00000022060 12521603460 023365 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MemoryLeakDetector_h #define D_MemoryLeakDetector_h enum MemLeakPeriod { mem_leak_period_all, mem_leak_period_disabled, mem_leak_period_enabled, mem_leak_period_checking }; class TestMemoryAllocator; class SimpleMutex; class MemoryLeakFailure { public: virtual ~MemoryLeakFailure() { } virtual void fail(char* fail_string)=0; }; struct SimpleStringBuffer { enum { SIMPLE_STRING_BUFFER_LEN = 4096 }; SimpleStringBuffer(); void clear(); void add(const char* format, ...) __check_format__(printf, 2, 3); void addMemoryDump(const void* memory, size_t memorySize); char* toString(); void setWriteLimit(size_t write_limit); void resetWriteLimit(); bool reachedItsCapacity(); private: char buffer_[SIMPLE_STRING_BUFFER_LEN]; size_t positions_filled_; size_t write_limit_; }; struct MemoryLeakDetectorNode; class MemoryLeakOutputStringBuffer { public: MemoryLeakOutputStringBuffer(); void clear(); void startMemoryLeakReporting(); void stopMemoryLeakReporting(); void reportMemoryLeak(MemoryLeakDetectorNode* leak); void reportDeallocateNonAllocatedMemoryFailure(const char* freeFile, int freeLine, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter); void reportMemoryCorruptionFailure(MemoryLeakDetectorNode* node, const char* freeFile, int freeLineNumber, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter); void reportAllocationDeallocationMismatchFailure(MemoryLeakDetectorNode* node, const char* freeFile, int freeLineNumber, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter); char* toString(); private: void addAllocationLocation(const char* allocationFile, int allocationLineNumber, size_t allocationSize, TestMemoryAllocator* allocator); void addDeallocationLocation(const char* freeFile, int freeLineNumber, TestMemoryAllocator* allocator); void addMemoryLeakHeader(); void addMemoryLeakFooter(int totalAmountOfLeaks); void addWarningForUsingMalloc(); void addNoMemoryLeaksMessage(); void addErrorMessageForTooMuchLeaks(); private: int total_leaks_; bool giveWarningOnUsingMalloc_; void reportFailure(const char* message, const char* allocFile, int allocLine, size_t allocSize, TestMemoryAllocator* allocAllocator, const char* freeFile, int freeLine, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter); SimpleStringBuffer outputBuffer_; }; struct MemoryLeakDetectorNode { MemoryLeakDetectorNode() : size_(0), number_(0), memory_(0), file_(0), line_(0), allocator_(0), period_(mem_leak_period_enabled), next_(0) { } void init(char* memory, unsigned number, size_t size, TestMemoryAllocator* allocator, MemLeakPeriod period, const char* file, int line); size_t size_; unsigned number_; char* memory_; const char* file_; int line_; TestMemoryAllocator* allocator_; MemLeakPeriod period_; private: friend struct MemoryLeakDetectorList; MemoryLeakDetectorNode* next_; }; struct MemoryLeakDetectorList { MemoryLeakDetectorList() : head_(0) {} void addNewNode(MemoryLeakDetectorNode* node); MemoryLeakDetectorNode* retrieveNode(char* memory); MemoryLeakDetectorNode* removeNode(char* memory); MemoryLeakDetectorNode* getFirstLeak(MemLeakPeriod period); MemoryLeakDetectorNode* getNextLeak(MemoryLeakDetectorNode* node, MemLeakPeriod period); MemoryLeakDetectorNode* getLeakFrom(MemoryLeakDetectorNode* node, MemLeakPeriod period); int getTotalLeaks(MemLeakPeriod period); void clearAllAccounting(MemLeakPeriod period); bool isInPeriod(MemoryLeakDetectorNode* node, MemLeakPeriod period); private: MemoryLeakDetectorNode* head_; }; struct MemoryLeakDetectorTable { void clearAllAccounting(MemLeakPeriod period); void addNewNode(MemoryLeakDetectorNode* node); MemoryLeakDetectorNode* retrieveNode(char* memory); MemoryLeakDetectorNode* removeNode(char* memory); int getTotalLeaks(MemLeakPeriod period); MemoryLeakDetectorNode* getFirstLeak(MemLeakPeriod period); MemoryLeakDetectorNode* getNextLeak(MemoryLeakDetectorNode* leak, MemLeakPeriod period); private: unsigned long hash(char* memory); enum { hash_prime = MEMORY_LEAK_HASH_TABLE_SIZE }; MemoryLeakDetectorList table_[hash_prime]; }; class MemoryLeakDetector { public: MemoryLeakDetector(MemoryLeakFailure* reporter); virtual ~MemoryLeakDetector(); void enable(); void disable(); void disableAllocationTypeChecking(); void enableAllocationTypeChecking(); void startChecking(); void stopChecking(); const char* report(MemLeakPeriod period); void markCheckingPeriodLeaksAsNonCheckingPeriod(); int totalMemoryLeaks(MemLeakPeriod period); void clearAllAccounting(MemLeakPeriod period); char* allocMemory(TestMemoryAllocator* allocator, size_t size, bool allocatNodesSeperately = false); char* allocMemory(TestMemoryAllocator* allocator, size_t size, const char* file, int line, bool allocatNodesSeperately = false); void deallocMemory(TestMemoryAllocator* allocator, void* memory, bool allocatNodesSeperately = false); void deallocMemory(TestMemoryAllocator* allocator, void* memory, const char* file, int line, bool allocatNodesSeperately = false); char* reallocMemory(TestMemoryAllocator* allocator, char* memory, size_t size, const char* file, int line, bool allocatNodesSeperately = false); void invalidateMemory(char* memory); void removeMemoryLeakInformationWithoutCheckingOrDeallocatingTheMemoryButDeallocatingTheAccountInformation(TestMemoryAllocator* allocator, void* memory, bool allocatNodesSeperately); enum { memory_corruption_buffer_size = 3 }; unsigned getCurrentAllocationNumber(); SimpleMutex* getMutex(void); private: MemoryLeakFailure* reporter_; MemLeakPeriod current_period_; MemoryLeakOutputStringBuffer outputBuffer_; MemoryLeakDetectorTable memoryTable_; bool doAllocationTypeChecking_; unsigned allocationSequenceNumber_; SimpleMutex* mutex_; char* allocateMemoryWithAccountingInformation(TestMemoryAllocator* allocator, size_t size, const char* file, int line, bool allocatNodesSeperately); char* reallocateMemoryWithAccountingInformation(TestMemoryAllocator* allocator, char* memory, size_t size, const char* file, int line, bool allocatNodesSeperately); MemoryLeakDetectorNode* createMemoryLeakAccountingInformation(TestMemoryAllocator* allocator, size_t size, char* memory, bool allocatNodesSeperately); bool validMemoryCorruptionInformation(char* memory); bool matchingAllocation(TestMemoryAllocator *alloc_allocator, TestMemoryAllocator *free_allocator); void storeLeakInformation(MemoryLeakDetectorNode * node, char *new_memory, size_t size, TestMemoryAllocator *allocator, const char *file, int line); void ConstructMemoryLeakReport(MemLeakPeriod period); size_t sizeOfMemoryWithCorruptionInfo(size_t size); MemoryLeakDetectorNode* getNodeFromMemoryPointer(char* memory, size_t size); char* reallocateMemoryAndLeakInformation(TestMemoryAllocator* allocator, char* memory, size_t size, const char* file, int line, bool allocatNodesSeperately); void addMemoryCorruptionInformation(char* memory); void checkForCorruption(MemoryLeakDetectorNode* node, const char* file, int line, TestMemoryAllocator* allocator, bool allocateNodesSeperately); }; #endif cpputest-3.7.2/include/CppUTest/MemoryLeakDetectorMallocMacros.h000644 000765 000024 00000003705 12521603460 025667 0ustar00basvoddestaff000000 000000 /* * This file can be used to get extra debugging information about memory leaks in your production code. * It defines a preprocessor macro for malloc. This will pass additional information to the * malloc and this will give the line/file information of the memory leaks in your code. * * You can use this by including this file to all your production code. When using gcc, you can use * the -include file to do this for you. * */ #include "CppUTestConfig.h" #if CPPUTEST_USE_MEM_LEAK_DETECTION /* This prevents the declaration from done twice and makes sure the file only #defines malloc, so it can be included anywhere */ #ifndef CPPUTEST_USE_MALLOC_MACROS #ifdef __cplusplus extern "C" { #endif extern void* cpputest_malloc_location(size_t size, const char* file, int line); extern void* cpputest_calloc_location(size_t count, size_t size, const char* file, int line); extern void* cpputest_realloc_location(void *, size_t, const char* file, int line); extern void cpputest_free_location(void* buffer, const char* file, int line); #ifdef __cplusplus } #endif extern void crash_on_allocation_number(unsigned number); #endif /* NOTE on strdup! * * strdup was implemented earlier, however it is *not* an Standard C function but a POSIX function. * Because of that, it can lead to portability issues by providing more than is available on the local platform. * For that reason, strdup is *not* implemented as a macro. If you still want to use it, an easy implementation would be: * * size_t length = 1 + strlen(str); * char* result = (char*) cpputest_malloc_location(length, file, line); * memcpy(result, str, length); * return result; * */ #define malloc(a) cpputest_malloc_location(a, __FILE__, __LINE__) #define calloc(a, b) cpputest_calloc_location(a, b, __FILE__, __LINE__) #define realloc(a, b) cpputest_realloc_location(a, b, __FILE__, __LINE__) #define free(a) cpputest_free_location(a, __FILE__, __LINE__) #define CPPUTEST_USE_MALLOC_MACROS 1 #endif cpputest-3.7.2/include/CppUTest/MemoryLeakDetectorNewMacros.h000644 000765 000024 00000004010 12521603460 025177 0ustar00basvoddestaff000000 000000 /* * This file can be used to get extra debugging information about memory leaks in your production code. * It defines a preprocessor macro for operator new. This will pass additional information to the * operator new and this will give the line/file information of the memory leaks in your code. * * You can use this by including this file to all your production code. When using gcc, you can use * the -include file to do this for you. * * Warning: Using the new macro can cause a conflict with newly declared operator news. This can be * resolved by: * 1. #undef operator new before including this file * 2. Including the files that override operator new before this file. * This can be done by creating your own NewMacros.h file that includes your operator new overrides * and THEN this file. * * STL (or StdC++ lib) also does overrides for operator new. Therefore, you'd need to include the STL * files *before* this file too. * */ #include "CppUTestConfig.h" /* Make sure that mem leak detection is on and that this is being included from a C++ file */ #if CPPUTEST_USE_MEM_LEAK_DETECTION && defined(__cplusplus) /* This #ifndef prevents from being included twice and enables the file to be included anywhere */ #ifndef CPPUTEST_USE_NEW_MACROS #if CPPUTEST_USE_STD_CPP_LIB #include #include #include #endif void* operator new(size_t size, const char* file, int line) UT_THROW (std::bad_alloc); void* operator new[](size_t size, const char* file, int line) UT_THROW (std::bad_alloc); void* operator new(size_t size) UT_THROW(std::bad_alloc); void* operator new[](size_t size) UT_THROW(std::bad_alloc); void operator delete(void* mem) UT_NOTHROW; void operator delete[](void* mem) UT_NOTHROW; void operator delete(void* mem, const char* file, int line) UT_NOTHROW; void operator delete[](void* mem, const char* file, int line) UT_NOTHROW; #endif #define new new(__FILE__, __LINE__) #define CPPUTEST_USE_NEW_MACROS 1 #endif cpputest-3.7.2/include/CppUTest/MemoryLeakWarningPlugin.h000644 000765 000024 00000007243 12521603460 024406 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MemoryLeakWarningPlugin_h #define D_MemoryLeakWarningPlugin_h #include "TestPlugin.h" #include "MemoryLeakDetectorNewMacros.h" #define IGNORE_ALL_LEAKS_IN_TEST() MemoryLeakWarningPlugin::getFirstPlugin()->ignoreAllLeaksInTest(); #define EXPECT_N_LEAKS(n) MemoryLeakWarningPlugin::getFirstPlugin()->expectLeaksInTest(n); extern void crash_on_allocation_number(unsigned alloc_number); class MemoryLeakDetector; class MemoryLeakFailure; class MemoryLeakWarningPlugin: public TestPlugin { public: MemoryLeakWarningPlugin(const SimpleString& name, MemoryLeakDetector* localDetector = 0); virtual ~MemoryLeakWarningPlugin(); virtual void preTestAction(UtestShell& test, TestResult& result) _override; virtual void postTestAction(UtestShell& test, TestResult& result) _override; virtual const char* FinalReport(int toBeDeletedLeaks = 0); void ignoreAllLeaksInTest(); void expectLeaksInTest(int n); void destroyGlobalDetectorAndTurnOffMemoryLeakDetectionInDestructor(bool des); MemoryLeakDetector* getMemoryLeakDetector(); static MemoryLeakWarningPlugin* getFirstPlugin(); static MemoryLeakDetector* getGlobalDetector(); static MemoryLeakFailure* getGlobalFailureReporter(); static void setGlobalDetector(MemoryLeakDetector* detector, MemoryLeakFailure* reporter); static void destroyGlobalDetector(); static void turnOffNewDeleteOverloads(); static void turnOnNewDeleteOverloads(); static void turnOnThreadSafeNewDeleteOverloads(); static bool areNewDeleteOverloaded(); private: MemoryLeakDetector* memLeakDetector_; bool ignoreAllWarnings_; bool destroyGlobalDetectorAndTurnOfMemoryLeakDetectionInDestructor_; int expectedLeaks_; int failureCount_; static MemoryLeakWarningPlugin* firstPlugin_; }; extern void* cpputest_malloc_location_with_leak_detection(size_t size, const char* file, int line); extern void* cpputest_realloc_location_with_leak_detection(void* memory, size_t size, const char* file, int line); extern void cpputest_free_location_with_leak_detection(void* buffer, const char* file, int line); #endif cpputest-3.7.2/include/CppUTest/PlatformSpecificFunctions.h000644 000765 000024 00000004303 12521603460 024751 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PLATFORMSPECIFICFUNCTIONS_H_ #define PLATFORMSPECIFICFUNCTIONS_H_ #include "CppUTest/TestOutput.h" TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment(); class TestPlugin; extern void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell* shell, TestPlugin* plugin, TestResult* result); extern int (*PlatformSpecificFork)(void); extern int (*PlatformSpecificWaitPid)(int pid, int* status, int options); /* Platform specific interface we use in order to minimize dependencies with LibC. * This enables porting to different embedded platforms. * */ #include "CppUTest/PlatformSpecificFunctions_c.h" #endif cpputest-3.7.2/include/CppUTest/PlatformSpecificFunctions_c.h000644 000765 000024 00000007320 12521603460 025255 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /****************************************************************************** * * PlatformSpecificFunctions_c.H * * Provides an interface for when working with pure C * *******************************************************************************/ #ifndef PLATFORMSPECIFICFUNCTIONS_C_H_ #define PLATFORMSPECIFICFUNCTIONS_C_H_ #ifdef __cplusplus extern "C" { #endif /* Jumping operations. They manage their own jump buffers */ extern int (*PlatformSpecificSetJmp)(void (*function) (void*), void* data); extern void (*PlatformSpecificLongJmp)(void); extern void (*PlatformSpecificRestoreJumpBuffer)(void); /* Time operations */ extern long (*GetPlatformSpecificTimeInMillis)(void); extern const char* (*GetPlatformSpecificTimeString)(void); /* String operations */ extern int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list va_args_list); /* Misc */ extern double (*PlatformSpecificFabs)(double d); extern int (*PlatformSpecificIsNan)(double d); extern int (*PlatformSpecificAtExit)(void(*func)(void)); /* IO operations */ typedef void* PlatformSpecificFile; extern PlatformSpecificFile (*PlatformSpecificFOpen)(const char* filename, const char* flag); extern void (*PlatformSpecificFPuts)(const char* str, PlatformSpecificFile file); extern void (*PlatformSpecificFClose)(PlatformSpecificFile file); extern int (*PlatformSpecificPutchar)(int c); extern void (*PlatformSpecificFlush)(void); /* Dynamic Memory operations */ extern void* (*PlatformSpecificMalloc)(size_t size); extern void* (*PlatformSpecificRealloc)(void* memory, size_t size); extern void (*PlatformSpecificFree)(void* memory); extern void* (*PlatformSpecificMemCpy)(void* s1, const void* s2, size_t size); extern void* (*PlatformSpecificMemset)(void* mem, int c, size_t size); typedef void* PlatformSpecificMutex; extern PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void); extern void (*PlatformSpecificMutexLock)(PlatformSpecificMutex mtx); extern void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex mtx); extern void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex mtx); #ifdef __cplusplus } #endif #endif /* PLATFORMSPECIFICFUNCTIONS_C_H_ */ cpputest-3.7.2/include/CppUTest/SimpleMutex.h000644 000765 000024 00000003747 12521603460 022115 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2014, Michael Feathers, James Grenning, Bas Vodde and Chen YewMing * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_SimpleMutex_h #define D_SimpleMutex_h #include "CppUTest/PlatformSpecificFunctions.h" class SimpleMutex { public: SimpleMutex(void); ~SimpleMutex(void); void Lock(void); void Unlock(void); private: PlatformSpecificMutex psMtx; }; class ScopedMutexLock { public: ScopedMutexLock(SimpleMutex *); ~ScopedMutexLock(void); private: SimpleMutex * mutex; }; #endif cpputest-3.7.2/include/CppUTest/SimpleString.h000644 000765 000024 00000013744 12521603460 022257 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /////////////////////////////////////////////////////////////////////////////// // // SIMPLESTRING.H // // One of the design goals of CppUnitLite is to compilation with very old C++ // compilers. For that reason, the simple string class that provides // only the operations needed in CppUnitLite. // /////////////////////////////////////////////////////////////////////////////// #ifndef D_SimpleString_h #define D_SimpleString_h #include "StandardCLibrary.h" class SimpleStringCollection; class TestMemoryAllocator; class SimpleString { friend bool operator==(const SimpleString& left, const SimpleString& right); friend bool operator!=(const SimpleString& left, const SimpleString& right); public: SimpleString(const char *value = ""); SimpleString(const char *value, size_t repeatCount); SimpleString(const SimpleString& other); ~SimpleString(); SimpleString& operator=(const SimpleString& other); SimpleString operator+(const SimpleString&); SimpleString& operator+=(const SimpleString&); SimpleString& operator+=(const char*); char at(int pos) const; int find(char ch) const; int findFrom(size_t starting_position, char ch) const; bool contains(const SimpleString& other) const; bool containsNoCase(const SimpleString& other) const; bool startsWith(const SimpleString& other) const; bool endsWith(const SimpleString& other) const; void split(const SimpleString& split, SimpleStringCollection& outCollection) const; bool equalsNoCase(const SimpleString& str) const; size_t count(const SimpleString& str) const; void replace(char to, char with); void replace(const char* to, const char* with); SimpleString lowerCase() const; SimpleString subString(size_t beginPos, size_t amount) const; SimpleString subStringFromTill(char startChar, char lastExcludedChar) const; void copyToBuffer(char* buffer, size_t bufferSize) const; const char *asCharString() const; size_t size() const; bool isEmpty() const; static void padStringsToSameLength(SimpleString& str1, SimpleString& str2, char ch); static TestMemoryAllocator* getStringAllocator(); static void setStringAllocator(TestMemoryAllocator* allocator); static char* allocStringBuffer(size_t size); static int AtoI(const char*str); static int StrCmp(const char* s1, const char* s2); static size_t StrLen(const char*); static int StrNCmp(const char* s1, const char* s2, size_t n); static char* StrNCpy(char* s1, const char* s2, size_t n); static char* StrStr(const char* s1, const char* s2); static char ToLower(char ch); static int MemCmp(const void* s1, const void *s2, size_t n); static void deallocStringBuffer(char* str); private: char *buffer_; static TestMemoryAllocator* stringAllocator_; char* getEmptyString() const; static char* copyToNewBuffer(const char* bufferToCopy, size_t bufferSize=0); static bool isDigit(char ch); static bool isSpace(char ch); static bool isUpper(char ch); }; class SimpleStringCollection { public: SimpleStringCollection(); ~SimpleStringCollection(); void allocate(size_t size); size_t size() const; SimpleString& operator[](size_t index); private: SimpleString* collection_; SimpleString empty_; size_t size_; void operator =(SimpleStringCollection&); SimpleStringCollection(SimpleStringCollection&); }; SimpleString StringFrom(bool value); SimpleString StringFrom(const void* value); SimpleString StringFrom(char value); SimpleString StringFrom(const char *value); SimpleString StringFromOrNull(const char * value); SimpleString StringFrom(int value); SimpleString StringFrom(unsigned int value); SimpleString StringFrom(long value); SimpleString StringFrom(unsigned long value); SimpleString HexStringFrom(long value); SimpleString HexStringFrom(unsigned long value); SimpleString HexStringFrom(const void* value); SimpleString StringFrom(double value, int precision = 6); SimpleString StringFrom(const SimpleString& other); SimpleString StringFromFormat(const char* format, ...) __check_format__(printf, 1, 2); SimpleString VStringFromFormat(const char* format, va_list args); SimpleString StringFromBinary(const unsigned char* value, size_t size); SimpleString StringFromBinaryOrNull(const unsigned char* value, size_t size); #if CPPUTEST_USE_STD_CPP_LIB #include SimpleString StringFrom(const std::string& other); #endif #endif cpputest-3.7.2/include/CppUTest/StandardCLibrary.h000644 000765 000024 00000002601 12521603460 023015 0ustar00basvoddestaff000000 000000 #ifndef STANDARDCLIBRARY_H_ #define STANDARDCLIBRARY_H_ #include "CppUTestConfig.h" #if CPPUTEST_USE_STD_C_LIB /* Needed for size_t */ #include /* Sometimes the C++ library does an #undef in stdlib of malloc and free. We want to prevent that */ #ifdef __cplusplus #if CPPUTEST_USE_STD_CPP_LIB #include #endif #endif /* Needed for malloc */ #include /* Needed for ... */ #include #else #ifdef __KERNEL__ /* Unfinished and not working! Hacking hacking hacking. Why bother make the header files C++ safe! */ #define false kernel_false #define true kernel_true #define bool kernel_bool #define new kernel_new #define _Bool int #include #include #undef false #undef true #undef bool #undef new #else /* * #warning "These definitions in StandardCLibrary.h are pure (educated, from linux kernel) guesses at the moment. Replace with your platform includes." * Not on as warning are as errors :P */ #ifdef __SIZE_TYPE__ typedef __SIZE_TYPE__ size_t; #else typedef long unsigned int size_t; #endif typedef char* va_list; #define NULL (0) extern void* malloc(size_t); extern void free(void *); #define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) #define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,sizeof(int)-1)))) #define va_end(ap) (void) 0 #endif #endif #endif cpputest-3.7.2/include/CppUTest/TestFailure.h000644 000765 000024 00000012524 12521603460 022061 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /////////////////////////////////////////////////////////////////////////////// // // Failure is a class which holds information for a specific // test failure. It can be overriden for more complex failure messages // /////////////////////////////////////////////////////////////////////////////// #ifndef D_TestFailure_H #define D_TestFailure_H #include "SimpleString.h" class UtestShell; class TestOutput; class TestFailure { public: TestFailure(UtestShell*, const char* fileName, int lineNumber, const SimpleString& theMessage); TestFailure(UtestShell*, const SimpleString& theMessage); TestFailure(UtestShell*, const char* fileName, int lineNumber); TestFailure(const TestFailure&); virtual ~TestFailure(); virtual SimpleString getFileName() const; virtual SimpleString getTestName() const; virtual int getFailureLineNumber() const; virtual SimpleString getMessage() const; virtual SimpleString getTestFileName() const; virtual int getTestLineNumber() const; bool isOutsideTestFile() const; bool isInHelperFunction() const; protected: enum DifferenceFormat { DIFFERENCE_STRING, DIFFERENCE_BINARY }; SimpleString createButWasString(const SimpleString& expected, const SimpleString& actual); SimpleString createDifferenceAtPosString(const SimpleString& actual, size_t position, DifferenceFormat format = DIFFERENCE_STRING); SimpleString testName_; SimpleString fileName_; int lineNumber_; SimpleString testFileName_; int testLineNumber_; SimpleString message_; TestFailure& operator=(const TestFailure&); }; class EqualsFailure: public TestFailure { public: EqualsFailure(UtestShell*, const char* fileName, int lineNumber, const char* expected, const char* actual); EqualsFailure(UtestShell*, const char* fileName, int lineNumber, const SimpleString& expected, const SimpleString& actual); }; class DoublesEqualFailure: public TestFailure { public: DoublesEqualFailure(UtestShell*, const char* fileName, int lineNumber, double expected, double actual, double threshold); }; class CheckEqualFailure : public TestFailure { public: CheckEqualFailure(UtestShell* test, const char* fileName, int lineNumber, const SimpleString& expected, const SimpleString& actual); }; class ContainsFailure: public TestFailure { public: ContainsFailure(UtestShell*, const char* fileName, int lineNumber, const SimpleString& expected, const SimpleString& actual); }; class CheckFailure : public TestFailure { public: CheckFailure(UtestShell* test, const char* fileName, int lineNumber, const SimpleString& checkString, const SimpleString& conditionString, const SimpleString& textString = ""); }; class FailFailure : public TestFailure { public: FailFailure(UtestShell* test, const char* fileName, int lineNumber, const SimpleString& message); }; class LongsEqualFailure : public TestFailure { public: LongsEqualFailure(UtestShell* test, const char* fileName, int lineNumber, long expected, long actual); }; class UnsignedLongsEqualFailure : public TestFailure { public: UnsignedLongsEqualFailure(UtestShell* test, const char* fileName, int lineNumber, unsigned long expected, unsigned long actual); }; class StringEqualFailure : public TestFailure { public: StringEqualFailure(UtestShell* test, const char* fileName, int lineNumber, const char* expected, const char* actual); }; class StringEqualNoCaseFailure : public TestFailure { public: StringEqualNoCaseFailure(UtestShell* test, const char* fileName, int lineNumber, const char* expected, const char* actual); }; class BinaryEqualFailure : public TestFailure { public: BinaryEqualFailure(UtestShell* test, const char* fileName, int lineNumber, const unsigned char* expected, const unsigned char* actual, size_t size); }; #endif cpputest-3.7.2/include/CppUTest/TestFilter.h000644 000765 000024 00000004311 12521603460 021712 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef TESTFILTER_H_ #define TESTFILTER_H_ #include "SimpleString.h" class TestFilter { public: TestFilter(); TestFilter(const char* filter); TestFilter(const SimpleString& filter); TestFilter* add(TestFilter* filter); TestFilter* getNext() const; bool match(const SimpleString& name) const; void strictMatching(); bool operator==(const TestFilter& filter) const; bool operator!=(const TestFilter& filter) const; SimpleString asString() const; private: SimpleString filter_; bool strictMatching_; TestFilter* next_; }; SimpleString StringFrom(const TestFilter& filter); #endif cpputest-3.7.2/include/CppUTest/TestHarness.h000644 000765 000024 00000004103 12521603460 022067 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestHarness_h #define D_TestHarness_h #include "CppUTestConfig.h" /* original value was 9973 which works well with large programs. Now set to smaller since it takes * a lot of memory in embedded apps. Change it if you experience the memory leak detector to be slow. */ #define MEMORY_LEAK_HASH_TABLE_SIZE 73 #include "Utest.h" #include "UtestMacros.h" #include "SimpleString.h" #include "TestResult.h" #include "TestFailure.h" #include "TestPlugin.h" #include "MemoryLeakWarningPlugin.h" #endif cpputest-3.7.2/include/CppUTest/TestHarness_c.h000644 000765 000024 00000013550 12521603460 022377 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /****************************************************************************** * * Provides an interface for when working with pure C * *******************************************************************************/ #ifndef D_TestHarness_c_h #define D_TestHarness_c_h #include "CppUTestConfig.h" #define CHECK_EQUAL_C_INT(expected,actual) \ CHECK_EQUAL_C_INT_LOCATION(expected,actual,__FILE__,__LINE__) #define CHECK_EQUAL_C_REAL(expected,actual,threshold) \ CHECK_EQUAL_C_REAL_LOCATION(expected,actual,threshold,__FILE__,__LINE__) #define CHECK_EQUAL_C_CHAR(expected,actual) \ CHECK_EQUAL_C_CHAR_LOCATION(expected,actual,__FILE__,__LINE__) #define CHECK_EQUAL_C_STRING(expected,actual) \ CHECK_EQUAL_C_STRING_LOCATION(expected,actual,__FILE__,__LINE__) #define FAIL_TEXT_C(text) \ FAIL_TEXT_C_LOCATION(text,__FILE__,__LINE__) #define FAIL_C() \ FAIL_C_LOCATION(__FILE__,__LINE__) #define CHECK_C(condition) \ CHECK_C_LOCATION(condition, #condition, __FILE__,__LINE__) /****************************************************************************** * * TEST macros for in C. * *******************************************************************************/ /* For use in C file */ #define TEST_GROUP_C_SETUP(group_name) \ extern void group_##group_name##_setup_wrapper_c(void); \ void group_##group_name##_setup_wrapper_c() #define TEST_GROUP_C_TEARDOWN(group_name) \ extern void group_##group_name##_teardown_wrapper_c(void); \ void group_##group_name##_teardown_wrapper_c() #define TEST_C(group_name, test_name) \ extern void test_##group_name##_##test_name##_wrapper_c(void);\ void test_##group_name##_##test_name##_wrapper_c() /* For use in C++ file */ #define TEST_GROUP_C_WRAPPER(group_name) \ extern "C" void group_##group_name##_setup_wrapper_c(void); \ extern "C" void group_##group_name##_teardown_wrapper_c(void); \ TEST_GROUP(group_name) #define TEST_GROUP_C_SETUP_WRAPPER(group_name) \ void setup() { \ group_##group_name##_setup_wrapper_c(); \ } #define TEST_GROUP_C_TEARDOWN_WRAPPER(group_name) \ void teardown() { \ group_##group_name##_teardown_wrapper_c(); \ } #define TEST_C_WRAPPER(group_name, test_name) \ extern "C" void test_##group_name##_##test_name##_wrapper_c(); \ TEST(group_name, test_name) { \ test_##group_name##_##test_name##_wrapper_c(); \ } #ifdef __cplusplus extern "C" { #endif /* CHECKS that can be used from C code */ extern void CHECK_EQUAL_C_INT_LOCATION(int expected, int actual, const char* fileName, int lineNumber); extern void CHECK_EQUAL_C_REAL_LOCATION(double expected, double actual, double threshold, const char* fileName, int lineNumber); extern void CHECK_EQUAL_C_CHAR_LOCATION(char expected, char actual, const char* fileName, int lineNumber); extern void CHECK_EQUAL_C_STRING_LOCATION(const char* expected, const char* actual, const char* fileName, int lineNumber); extern void FAIL_TEXT_C_LOCATION(const char* text, const char* fileName, int lineNumber); extern void FAIL_C_LOCATION(const char* fileName, int lineNumber); extern void CHECK_C_LOCATION(int condition, const char* conditionString, const char* fileName, int lineNumber); extern void* cpputest_malloc(size_t size); extern void* cpputest_calloc(size_t num, size_t size); extern void* cpputest_realloc(void* ptr, size_t size); extern void cpputest_free(void* buffer); extern void* cpputest_malloc_location(size_t size, const char* file, int line); extern void* cpputest_calloc_location(size_t num, size_t size, const char* file, int line); extern void* cpputest_realloc_location(void* memory, size_t size, const char* file, int line); extern void cpputest_free_location(void* buffer, const char* file, int line); void cpputest_malloc_set_out_of_memory(void); void cpputest_malloc_set_not_out_of_memory(void); void cpputest_malloc_set_out_of_memory_countdown(int); void cpputest_malloc_count_reset(void); int cpputest_malloc_get_count(void); #ifdef __cplusplus } #endif /* * Small additional macro for unused arguments. This is common when stubbing, but in C you cannot remove the * name of the parameter (as in C++). */ #ifndef PUNUSED #if defined(__GNUC__) # define PUNUSED(x) PUNUSED_ ##x __attribute__((unused)) #else # define PUNUSED(x) x #endif #endif #endif cpputest-3.7.2/include/CppUTest/TestMemoryAllocator.h000644 000765 000024 00000007353 12521603460 023607 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestMemoryAllocator_h #define D_TestMemoryAllocator_h struct MemoryLeakNode; class TestMemoryAllocator; extern void setCurrentNewAllocator(TestMemoryAllocator* allocator); extern TestMemoryAllocator* getCurrentNewAllocator(); extern void setCurrentNewAllocatorToDefault(); extern TestMemoryAllocator* defaultNewAllocator(); extern void setCurrentNewArrayAllocator(TestMemoryAllocator* allocator); extern TestMemoryAllocator* getCurrentNewArrayAllocator(); extern void setCurrentNewArrayAllocatorToDefault(); extern TestMemoryAllocator* defaultNewArrayAllocator(); extern void setCurrentMallocAllocator(TestMemoryAllocator* allocator); extern TestMemoryAllocator* getCurrentMallocAllocator(); extern void setCurrentMallocAllocatorToDefault(); extern TestMemoryAllocator* defaultMallocAllocator(); class TestMemoryAllocator { public: TestMemoryAllocator(const char* name_str = "generic", const char* alloc_name_str = "alloc", const char* free_name_str = "free"); virtual ~TestMemoryAllocator(); bool hasBeenDestroyed(); virtual char* alloc_memory(size_t size, const char* file, int line); virtual void free_memory(char* memory, const char* file, int line); virtual const char* name(); virtual const char* alloc_name(); virtual const char* free_name(); virtual bool isOfEqualType(TestMemoryAllocator* allocator); virtual char* allocMemoryLeakNode(size_t size); virtual void freeMemoryLeakNode(char* memory); protected: const char* name_; const char* alloc_name_; const char* free_name_; bool hasBeenDestroyed_; }; class CrashOnAllocationAllocator : public TestMemoryAllocator { unsigned allocationToCrashOn_; public: CrashOnAllocationAllocator(); virtual void setNumberToCrashOn(unsigned allocationToCrashOn); virtual char* alloc_memory(size_t size, const char* file, int line) _override; }; class NullUnknownAllocator: public TestMemoryAllocator { public: NullUnknownAllocator(); virtual char* alloc_memory(size_t size, const char* file, int line) _override; virtual void free_memory(char* memory, const char* file, int line) _override; static TestMemoryAllocator* defaultAllocator(); }; #endif cpputest-3.7.2/include/CppUTest/TestOutput.h000644 000765 000024 00000014512 12521603460 021771 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestOutput_h #define D_TestOutput_h /////////////////////////////////////////////////////////////////////////////// // // This is a minimal printer inteface. // We kept streams out too keep footprint small, and so the test // harness could be used with less capable compilers so more // platforms could use this test harness // /////////////////////////////////////////////////////////////////////////////// class UtestShell; class TestFailure; class TestResult; class TestOutput { public: explicit TestOutput(); virtual ~TestOutput(); virtual void printTestsStarted(); virtual void printTestsEnded(const TestResult& result); virtual void printCurrentTestStarted(const UtestShell& test); virtual void printCurrentTestEnded(const TestResult& res); virtual void printCurrentGroupStarted(const UtestShell& test); virtual void printCurrentGroupEnded(const TestResult& res); virtual void verbose(); virtual void color(); virtual void printBuffer(const char*)=0; virtual void print(const char*); virtual void print(long); virtual void printDouble(double); virtual void print(const TestFailure& failure); virtual void printTestRun(int number, int total); virtual void setProgressIndicator(const char*); virtual void flush()=0; enum WorkingEnvironment {vistualStudio, eclipse, detectEnvironment}; static void setWorkingEnvironment(WorkingEnvironment workEnvironment); static WorkingEnvironment getWorkingEnvironment(); protected: virtual void printEclipseErrorInFileOnLine(SimpleString file, int lineNumber); virtual void printVistualStudioErrorInFileOnLine(SimpleString file, int lineNumber); virtual void printProgressIndicator(); void printFileAndLineForTestAndFailure(const TestFailure& failure); void printFileAndLineForFailure(const TestFailure& failure); void printFailureInTest(SimpleString testName); void printFailureMessage(SimpleString reason); void printErrorInFileOnLineFormattedForWorkingEnvironment(SimpleString testFile, int lineNumber); TestOutput(const TestOutput&); TestOutput& operator=(const TestOutput&); int dotCount_; bool verbose_; bool color_; const char* progressIndication_; static WorkingEnvironment workingEnvironment_; }; TestOutput& operator<<(TestOutput&, const char*); TestOutput& operator<<(TestOutput&, long); /////////////////////////////////////////////////////////////////////////////// // // ConsoleTestOutput.h // // Printf Based Solution // /////////////////////////////////////////////////////////////////////////////// class ConsoleTestOutput: public TestOutput { public: explicit ConsoleTestOutput() { } virtual ~ConsoleTestOutput() { } virtual void printBuffer(const char* s) _override; virtual void flush() _override; private: ConsoleTestOutput(const ConsoleTestOutput&); ConsoleTestOutput& operator=(const ConsoleTestOutput&); }; /////////////////////////////////////////////////////////////////////////////// // // StringBufferTestOutput.h // // TestOutput for test purposes // /////////////////////////////////////////////////////////////////////////////// class StringBufferTestOutput: public TestOutput { public: explicit StringBufferTestOutput() { } virtual ~StringBufferTestOutput(); void printBuffer(const char* s) _override { output += s; } void flush() _override { output = ""; } const SimpleString& getOutput() { return output; } protected: SimpleString output; private: StringBufferTestOutput(const StringBufferTestOutput&); StringBufferTestOutput& operator=(const StringBufferTestOutput&); }; class CompositeTestOutput : public TestOutput { public: virtual void setOutputOne(TestOutput* output); virtual void setOutputTwo(TestOutput* output); CompositeTestOutput(); virtual ~CompositeTestOutput(); virtual void printTestsStarted(); virtual void printTestsEnded(const TestResult& result); virtual void printCurrentTestStarted(const UtestShell& test); virtual void printCurrentTestEnded(const TestResult& res); virtual void printCurrentGroupStarted(const UtestShell& test); virtual void printCurrentGroupEnded(const TestResult& res); virtual void verbose(); virtual void color(); virtual void printBuffer(const char*); virtual void print(const char*); virtual void print(long); virtual void printDouble(double); virtual void print(const TestFailure& failure); virtual void setProgressIndicator(const char*); virtual void flush(); protected: CompositeTestOutput(const TestOutput&); CompositeTestOutput& operator=(const TestOutput&); private: TestOutput* outputOne_; TestOutput* outputTwo_; }; #endif cpputest-3.7.2/include/CppUTest/TestPlugin.h000644 000765 000024 00000007276 12521603460 021740 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestPlugin_h #define D_TestPlugin_h class UtestShell; class TestResult; class TestPlugin { public: TestPlugin(const SimpleString& name); virtual ~TestPlugin(); virtual void preTestAction(UtestShell&, TestResult&) { } virtual void postTestAction(UtestShell&, TestResult&) { } virtual bool parseArguments(int /* ac */, const char** /* av */, int /* index */ ) { return false; } virtual void runAllPreTestAction(UtestShell&, TestResult&); virtual void runAllPostTestAction(UtestShell&, TestResult&); virtual bool parseAllArguments(int ac, const char** av, int index); virtual bool parseAllArguments(int ac, char** av, int index); virtual TestPlugin* addPlugin(TestPlugin*); virtual TestPlugin* removePluginByName(const SimpleString& name); virtual TestPlugin* getNext(); virtual void disable(); virtual void enable(); virtual bool isEnabled(); const SimpleString& getName(); TestPlugin* getPluginByName(const SimpleString& name); protected: TestPlugin(TestPlugin* next_); private: TestPlugin* next_; SimpleString name_; bool enabled_; }; /////////////////////////////////////////////////////////////////////////////// // // SetPointerPlugin // // This is a very small plugin_ that resets pointers to their original value. // /////////////////////////////////////////////////////////////////////////////// extern void CppUTestStore(void **location); class SetPointerPlugin: public TestPlugin { public: SetPointerPlugin(const SimpleString& name); virtual ~SetPointerPlugin(); virtual void postTestAction(UtestShell&, TestResult&) _override; enum { MAX_SET = 32 }; }; #define UT_PTR_SET(a, b) { CppUTestStore( (void**)&a ); a = b; } ///////////// Null Plugin class NullTestPlugin: public TestPlugin { public: NullTestPlugin(); virtual ~NullTestPlugin() { } virtual void runAllPreTestAction(UtestShell& test, TestResult& result) _override; virtual void runAllPostTestAction(UtestShell& test, TestResult& result) _override; static NullTestPlugin* instance(); }; #endif cpputest-3.7.2/include/CppUTest/TestRegistry.h000644 000765 000024 00000006605 12521603460 022305 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /////////////////////////////////////////////////////////////////////////////// // // TestRegistry is a collection of tests that can be run // #ifndef D_TestRegistry_h #define D_TestRegistry_h #include "SimpleString.h" #include "TestFilter.h" class UtestShell; class TestResult; class TestPlugin; class TestRegistry { public: TestRegistry(); virtual ~TestRegistry(); virtual void addTest(UtestShell *test); virtual void unDoLastAddTest(); virtual int countTests(); virtual void runAllTests(TestResult& result); virtual void listTestGroupNames(TestResult& result); virtual void listTestGroupAndCaseNames(TestResult& result); virtual void setNameFilters(const TestFilter* filters); virtual void setGroupFilters(const TestFilter* filters); virtual void installPlugin(TestPlugin* plugin); virtual void resetPlugins(); virtual TestPlugin* getFirstPlugin(); virtual TestPlugin* getPluginByName(const SimpleString& name); virtual void removePluginByName(const SimpleString& name); virtual int countPlugins(); virtual UtestShell* getFirstTest(); virtual UtestShell* getTestWithNext(UtestShell* test); virtual UtestShell* findTestWithName(const SimpleString& name); virtual UtestShell* findTestWithGroup(const SimpleString& name); static TestRegistry* getCurrentRegistry(); virtual void setCurrentRegistry(TestRegistry* registry); virtual void setRunTestsInSeperateProcess(); int getCurrentRepetition(); private: bool testShouldRun(UtestShell* test, TestResult& result); bool endOfGroup(UtestShell* test); UtestShell * tests_; const TestFilter* nameFilters_; const TestFilter* groupFilters_; TestPlugin* firstPlugin_; static TestRegistry* currentRegistry_; bool runInSeperateProcess_; int currentRepetition_; }; #endif cpputest-3.7.2/include/CppUTest/TestResult.h000644 000765 000024 00000007036 12521603460 021752 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /////////////////////////////////////////////////////////////////////////////// // // A TestResult is a collection of the history of some test runs. Right now // it just collects failures. Really it just prints the failures. // #ifndef D_TestResult_h #define D_TestResult_h class TestFailure; class TestOutput; class UtestShell; class TestResult { public: TestResult(TestOutput&); DEFAULT_COPY_CONSTRUCTOR(TestResult) virtual ~TestResult(); virtual void testsStarted(); virtual void testsEnded(); virtual void currentGroupStarted(UtestShell* test); virtual void currentGroupEnded(UtestShell* test); virtual void currentTestStarted(UtestShell* test); virtual void currentTestEnded(UtestShell* test); virtual void countTest(); virtual void countRun(); virtual void countCheck(); virtual void countFilteredOut(); virtual void countIgnored(); virtual void addFailure(const TestFailure& failure); virtual void print(const char* text); int getTestCount() const { return testCount_; } int getRunCount() const { return runCount_; } int getCheckCount() const { return checkCount_; } int getFilteredOutCount() const { return filteredOutCount_; } int getIgnoredCount() const { return ignoredCount_; } int getFailureCount() const { return failureCount_; } long getTotalExecutionTime() const; void setTotalExecutionTime(long exTime); long getCurrentTestTotalExecutionTime() const; long getCurrentGroupTotalExecutionTime() const; private: TestOutput& output_; int testCount_; int runCount_; int checkCount_; int failureCount_; int filteredOutCount_; int ignoredCount_; long totalExecutionTime_; long timeStarted_; long currentTestTimeStarted_; long currentTestTotalExecutionTime_; long currentGroupTimeStarted_; long currentGroupTotalExecutionTime_; }; #endif cpputest-3.7.2/include/CppUTest/TestTestingFixture.h000644 000765 000024 00000007263 12521603460 023462 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestTestingFixture_H #define D_TestTestingFixture_H #include "TestRegistry.h" #include "TestOutput.h" class TestTestingFixture { public: TestTestingFixture() { output_ = new StringBufferTestOutput(); result_ = new TestResult(*output_); genTest_ = new ExecFunctionTestShell(); registry_ = new TestRegistry(); registry_->setCurrentRegistry(registry_); registry_->addTest(genTest_); } virtual ~TestTestingFixture() { registry_->setCurrentRegistry(0); delete registry_; delete result_; delete output_; delete genTest_; } void addTest(UtestShell * test) { registry_->addTest(test); } void setTestFunction(void(*testFunction)()) { genTest_->testFunction_ = testFunction; } void setSetup(void(*setupFunction)()) { genTest_->setup_ = setupFunction; } void setTeardown(void(*teardownFunction)()) { genTest_->teardown_ = teardownFunction; } void runAllTests() { registry_->runAllTests(*result_); } int getFailureCount() { return result_->getFailureCount(); } int getCheckCount() { return result_->getCheckCount(); } int getIgnoreCount() { return result_->getIgnoredCount(); } bool hasTestFailed() { return genTest_->hasFailed(); } void assertPrintContains(const SimpleString& contains) { assertPrintContains(output_, contains); } static void assertPrintContains(StringBufferTestOutput* output, const SimpleString& contains) { STRCMP_CONTAINS(contains.asCharString(), output->getOutput().asCharString()); } TestRegistry* registry_; ExecFunctionTestShell* genTest_; StringBufferTestOutput* output_; TestResult * result_; }; class SetBooleanOnDestructorCall { bool& booleanToSet_; public: SetBooleanOnDestructorCall(bool& booleanToSet) : booleanToSet_(booleanToSet) { } virtual ~SetBooleanOnDestructorCall() { booleanToSet_ = true; } }; #endif cpputest-3.7.2/include/CppUTest/Utest.h000644 000765 000024 00000021642 12523627400 020741 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file contains the Test class along with the macros which make effective // in the harness. #ifndef D_UTest_h #define D_UTest_h #include "SimpleString.h" class TestResult; class TestPlugin; class TestFailure; class TestFilter; class TestTerminator; extern bool doubles_equal(double d1, double d2, double threshold); //////////////////// Utest class UtestShell; class Utest { public: Utest(); virtual ~Utest(); virtual void run(); virtual void setup(); virtual void teardown(); virtual void testBody(); }; //////////////////// TestTerminator class TestTerminator { public: virtual void exitCurrentTest() const=0; virtual ~TestTerminator(); }; class NormalTestTerminator : public TestTerminator { public: virtual void exitCurrentTest() const _override; virtual ~NormalTestTerminator(); }; class TestTerminatorWithoutExceptions : public TestTerminator { public: virtual void exitCurrentTest() const _override; virtual ~TestTerminatorWithoutExceptions(); }; //////////////////// UtestShell class UtestShell { public: static UtestShell *getCurrent(); public: UtestShell(const char* groupName, const char* testName, const char* fileName, int lineNumber); virtual ~UtestShell(); virtual UtestShell* addTest(UtestShell* test); virtual UtestShell *getNext() const; virtual int countTests(); bool shouldRun(const TestFilter* groupFilters, const TestFilter* nameFilters) const; const SimpleString getName() const; const SimpleString getGroup() const; virtual SimpleString getFormattedName() const; const SimpleString getFile() const; int getLineNumber() const; virtual bool willRun() const; virtual bool hasFailed() const; void countCheck(); virtual void assertTrue(bool condition, const char *checkString, const char *conditionString, const char *fileName, int lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertTrueText(bool condition, const char *checkString, const char *conditionString, const char* text, const char *fileName, int lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertCstrEqual(const char *expected, const char *actual, const char *fileName, int lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertCstrNEqual(const char *expected, const char *actual, size_t length, const char *fileName, int lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertCstrNoCaseEqual(const char *expected, const char *actual, const char *fileName, int lineNumber); virtual void assertCstrContains(const char *expected, const char *actual, const char *fileName, int lineNumber); virtual void assertCstrNoCaseContains(const char *expected, const char *actual, const char *fileName, int lineNumber); virtual void assertLongsEqual(long expected, long actual, const char *fileName, int lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertUnsignedLongsEqual(unsigned long expected, unsigned long actual, const char *fileName, int lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertPointersEqual(const void *expected, const void *actual, const char *fileName, int lineNumber); virtual void assertDoublesEqual(double expected, double actual, double threshold, const char *fileName, int lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertEquals(bool failed, const char* expected, const char* actual, const char* file, int line, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertBinaryEqual(const void *expected, const void *actual, size_t length, const char *fileName, int lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void fail(const char *text, const char *fileName, int lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void print(const char *text, const char *fileName, int lineNumber); virtual void print(const SimpleString & text, const char *fileName, int lineNumber); void setFileName(const char *fileName); void setLineNumber(int lineNumber); void setGroupName(const char *groupName); void setTestName(const char *testName); static void crash(); static void setCrashMethod(void (*crashme)()); static void resetCrashMethod(); virtual bool isRunInSeperateProcess() const; virtual void setRunInSeperateProcess(); virtual Utest* createTest(); virtual void destroyTest(Utest* test); virtual void runOneTest(TestPlugin* plugin, TestResult& result); virtual void runOneTestInCurrentProcess(TestPlugin *plugin, TestResult & result); virtual void failWith(const TestFailure& failure); virtual void failWith(const TestFailure& failure, const TestTerminator& terminator); protected: UtestShell(); UtestShell(const char *groupName, const char *testName, const char *fileName, int lineNumber, UtestShell *nextTest); virtual SimpleString getMacroName() const; TestResult *getTestResult(); private: const char *group_; const char *name_; const char *file_; int lineNumber_; UtestShell *next_; bool isRunAsSeperateProcess_; bool hasFailed_; void setTestResult(TestResult* result); void setCurrentTest(UtestShell* test); bool match(const char* target, const TestFilter* filters) const; static UtestShell* currentTest_; static TestResult* testResult_; }; //////////////////// ExecFunctionTest class ExecFunctionTestShell; class ExecFunctionTest : public Utest { public: ExecFunctionTest(ExecFunctionTestShell* shell); void testBody(); virtual void setup() _override; virtual void teardown() _override; private: ExecFunctionTestShell* shell_; }; //////////////////// ExecFunctionTestShell class ExecFunctionTestShell: public UtestShell { public: void (*setup_)(); void (*teardown_)(); void (*testFunction_)(); ExecFunctionTestShell(void(*set)() = 0, void(*tear)() = 0) : UtestShell("Generic", "Generic", "Generic", 1), setup_(set), teardown_( tear), testFunction_(0) { } Utest* createTest() { return new ExecFunctionTest(this); } virtual ~ExecFunctionTestShell(); }; //////////////////// CppUTestFailedException class CppUTestFailedException { public: int dummy_; }; //////////////////// IgnoredTest class IgnoredUtestShell : public UtestShell { public: IgnoredUtestShell(); virtual ~IgnoredUtestShell(); explicit IgnoredUtestShell(const char* groupName, const char* testName, const char* fileName, int lineNumber); virtual bool willRun() const; protected: virtual SimpleString getMacroName() const _override; virtual void runOneTest(TestPlugin* plugin, TestResult& result) _override; private: IgnoredUtestShell(const IgnoredUtestShell&); IgnoredUtestShell& operator=(const IgnoredUtestShell&); }; //////////////////// TestInstaller class TestInstaller { public: explicit TestInstaller(UtestShell& shell, const char* groupName, const char* testName, const char* fileName, int lineNumber); virtual ~TestInstaller(); void unDo(); private: TestInstaller(const TestInstaller&); TestInstaller& operator=(const TestInstaller&); }; #endif cpputest-3.7.2/include/CppUTest/UtestMacros.h000644 000765 000024 00000025304 12521603460 022103 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_UTestMacros_h #define D_UTestMacros_h /*! \brief Define a group of tests * * All tests in a TEST_GROUP share the same setup() * and teardown(). setup() is run before the opening * curly brace of each TEST and teardown() is * called after the closing curly brace of TEST. * */ #define TEST_GROUP_BASE(testGroup, baseclass) \ extern int externTestGroup##testGroup; \ int externTestGroup##testGroup = 0; \ struct TEST_GROUP_##CppUTestGroup##testGroup : public baseclass #define TEST_BASE(testBaseClass) \ struct testBaseClass : public Utest #define TEST_GROUP(testGroup) \ TEST_GROUP_BASE(testGroup, Utest) #define TEST_SETUP() \ virtual void setup() #define TEST_TEARDOWN() \ virtual void teardown() #define TEST(testGroup, testName) \ /* External declarations for strict compilers */ \ class TEST_##testGroup##_##testName##_TestShell; \ extern TEST_##testGroup##_##testName##_TestShell TEST_##testGroup##_##testName##_TestShell_instance; \ \ class TEST_##testGroup##_##testName##_Test : public TEST_GROUP_##CppUTestGroup##testGroup \ { public: TEST_##testGroup##_##testName##_Test () : TEST_GROUP_##CppUTestGroup##testGroup () {} \ void testBody(); }; \ class TEST_##testGroup##_##testName##_TestShell : public UtestShell { \ virtual Utest* createTest() _override { return new TEST_##testGroup##_##testName##_Test; } \ } TEST_##testGroup##_##testName##_TestShell_instance; \ static TestInstaller TEST_##testGroup##_##testName##_Installer(TEST_##testGroup##_##testName##_TestShell_instance, #testGroup, #testName, __FILE__,__LINE__); \ void TEST_##testGroup##_##testName##_Test::testBody() #define IGNORE_TEST(testGroup, testName)\ /* External declarations for strict compilers */ \ class IGNORE##testGroup##_##testName##_TestShell; \ extern IGNORE##testGroup##_##testName##_TestShell IGNORE##testGroup##_##testName##_TestShell_instance; \ \ class IGNORE##testGroup##_##testName##_Test : public TEST_GROUP_##CppUTestGroup##testGroup \ { public: IGNORE##testGroup##_##testName##_Test () : TEST_GROUP_##CppUTestGroup##testGroup () {} \ public: void testBodyThatNeverRuns (); }; \ class IGNORE##testGroup##_##testName##_TestShell : public IgnoredUtestShell { \ virtual Utest* createTest() _override { return new IGNORE##testGroup##_##testName##_Test; } \ } IGNORE##testGroup##_##testName##_TestShell_instance; \ static TestInstaller TEST_##testGroup##testName##_Installer(IGNORE##testGroup##_##testName##_TestShell_instance, #testGroup, #testName, __FILE__,__LINE__); \ void IGNORE##testGroup##_##testName##_Test::testBodyThatNeverRuns () #define IMPORT_TEST_GROUP(testGroup) \ extern int externTestGroup##testGroup;\ extern int* p##testGroup; \ int* p##testGroup = &externTestGroup##testGroup // Different checking macros #define CHECK(condition)\ CHECK_LOCATION_TRUE(condition, "CHECK", #condition, __FILE__, __LINE__) #define CHECK_TEXT(condition, text) \ CHECK_LOCATION_TEXT(condition, "CHECK", #condition, text, __FILE__, __LINE__) #define CHECK_TRUE(condition)\ CHECK_LOCATION_TRUE(condition, "CHECK_TRUE", #condition, __FILE__, __LINE__) #define CHECK_FALSE(condition)\ CHECK_LOCATION_FALSE(condition, "CHECK_FALSE", #condition, __FILE__, __LINE__) #define CHECK_LOCATION_TEXT(condition, checkString, conditionString, text, file, line) \ { UtestShell::getCurrent()->assertTrueText((condition) != 0, checkString, conditionString, text, file, line); } #define CHECK_LOCATION_TRUE(condition, checkString, conditionString, file, line)\ { UtestShell::getCurrent()->assertTrue((condition) != 0, checkString, conditionString, file, line); } #define CHECK_LOCATION_FALSE(condition, checkString, conditionString, file, line)\ { UtestShell::getCurrent()->assertTrue((condition) == 0, checkString, conditionString, file, line); } //This check needs the operator!=(), and a StringFrom(YourType) function #define CHECK_EQUAL(expected,actual)\ CHECK_EQUAL_LOCATION(expected, actual, __FILE__, __LINE__) #define CHECK_EQUAL_LOCATION(expected,actual, file, line)\ { if ((expected) != (actual)) { \ if ((actual) != (actual)) \ UtestShell::getCurrent()->print("WARNING:\n\tThe \"Actual Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect.", file, line); \ if ((expected) != (expected)) \ UtestShell::getCurrent()->print("WARNING:\n\tThe \"Expected Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect.", file, line); \ UtestShell::getCurrent()->assertEquals(true, StringFrom(expected).asCharString(), StringFrom(actual).asCharString(), file, line); \ } \ else \ { \ UtestShell::getCurrent()->assertLongsEqual((long)0, (long)0, file, line); \ } } //This check checks for char* string equality using strcmp. //This makes up for the fact that CHECK_EQUAL only compares the pointers to char*'s #define STRCMP_EQUAL(expected,actual)\ STRCMP_EQUAL_LOCATION(expected, actual, __FILE__, __LINE__) #define STRCMP_EQUAL_LOCATION(expected,actual, file, line)\ { UtestShell::getCurrent()->assertCstrEqual(expected, actual, file, line); } #define STRNCMP_EQUAL(expected, actual, length)\ STRNCMP_EQUAL_LOCATION(expected, actual, length, __FILE__, __LINE__) #define STRNCMP_EQUAL_LOCATION(expected, actual, length, file, line)\ { UtestShell::getCurrent()->assertCstrNEqual(expected, actual, length, file, line); } #define STRCMP_NOCASE_EQUAL(expected,actual)\ STRCMP_NOCASE_EQUAL_LOCATION(expected, actual, __FILE__, __LINE__) #define STRCMP_NOCASE_EQUAL_LOCATION(expected,actual, file, line)\ { UtestShell::getCurrent()->assertCstrNoCaseEqual(expected, actual, file, line); } #define STRCMP_CONTAINS(expected,actual)\ STRCMP_CONTAINS_LOCATION(expected, actual, __FILE__, __LINE__) #define STRCMP_CONTAINS_LOCATION(expected,actual, file, line)\ { UtestShell::getCurrent()->assertCstrContains(expected, actual, file, line); } #define STRCMP_NOCASE_CONTAINS(expected,actual)\ STRCMP_NOCASE_CONTAINS_LOCATION(expected, actual, __FILE__, __LINE__) #define STRCMP_NOCASE_CONTAINS_LOCATION(expected,actual, file, line)\ { UtestShell::getCurrent()->assertCstrNoCaseContains(expected, actual, file, line); } //Check two long integers for equality #define LONGS_EQUAL(expected,actual)\ LONGS_EQUAL_LOCATION(expected,actual,__FILE__, __LINE__) #define UNSIGNED_LONGS_EQUAL(expected,actual)\ UNSIGNED_LONGS_EQUAL_LOCATION(expected,actual,__FILE__, __LINE__) #define LONGS_EQUAL_LOCATION(expected,actual,file,line)\ { UtestShell::getCurrent()->assertLongsEqual((long)expected, (long)actual, file, line); } #define UNSIGNED_LONGS_EQUAL_LOCATION(expected,actual,file,line)\ { UtestShell::getCurrent()->assertUnsignedLongsEqual((unsigned long)expected, (unsigned long)actual, file, line); } #define BYTES_EQUAL(expected, actual)\ LONGS_EQUAL((expected) & 0xff,(actual) & 0xff) #define POINTERS_EQUAL(expected, actual)\ POINTERS_EQUAL_LOCATION((expected),(actual), __FILE__, __LINE__) #define POINTERS_EQUAL_LOCATION(expected,actual,file,line)\ { UtestShell::getCurrent()->assertPointersEqual((void *)expected, (void *)actual, file, line); } //Check two doubles for equality within a tolerance threshold #define DOUBLES_EQUAL(expected,actual,threshold)\ DOUBLES_EQUAL_LOCATION(expected,actual,threshold,__FILE__,__LINE__) #define DOUBLES_EQUAL_LOCATION(expected,actual,threshold,file,line)\ { UtestShell::getCurrent()->assertDoublesEqual(expected, actual, threshold, file, line); } #define MEMCMP_EQUAL(expected,actual,size)\ MEMCMP_EQUAL_LOCATION(expected,actual,size,__FILE__,__LINE__) #define MEMCMP_EQUAL_LOCATION(expected,actual,size,file,line)\ { UtestShell::getCurrent()->assertBinaryEqual(expected, actual, size, file, line); } //Fail if you get to this macro //The macro FAIL may already be taken, so allow FAIL_TEST too #ifndef FAIL #define FAIL(text)\ FAIL_LOCATION(text, __FILE__,__LINE__) #define FAIL_LOCATION(text, file, line)\ { UtestShell::getCurrent()->fail(text, file, line); } #endif #define FAIL_TEST(text)\ FAIL_TEST_LOCATION(text, __FILE__,__LINE__) #define FAIL_TEST_LOCATION(text, file,line)\ { UtestShell::getCurrent()->fail(text, file, line); } #define UT_PRINT_LOCATION(text, file, line) \ { UtestShell::getCurrent()->print(text, file, line); } #define UT_PRINT(text) \ UT_PRINT_LOCATION(text, __FILE__, __LINE__) #if CPPUTEST_USE_STD_CPP_LIB #define CHECK_THROWS(expected, expression) \ { \ SimpleString msg("expected to throw "#expected "\nbut threw nothing"); \ bool caught_expected = false; \ try { \ (expression); \ } catch(const expected &) { \ caught_expected = true; \ } catch(...) { \ msg = "expected to throw " #expected "\nbut threw a different type"; \ } \ if (!caught_expected) { \ UtestShell::getCurrent()->fail(msg.asCharString(), __FILE__, __LINE__); \ } \ else { \ UtestShell::getCurrent()->countCheck(); \ } \ } #endif /* CPPUTEST_USE_STD_CPP_LIB */ #define UT_CRASH() { UtestShell::crash(); } #define RUN_ALL_TESTS(ac, av) CommandLineTestRunner::RunAllTests(ac, av) #endif /*D_UTestMacros_h*/ cpputest-3.7.2/examples/.cdtproject000644 000765 000024 00000004203 12521603460 020302 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/examples/.project000644 000765 000024 00000005077 12521603460 017621 0ustar00basvoddestaff000000 000000 CppUTestExample org.eclipse.cdt.make.core.makeBuilder org.eclipse.cdt.make.core.build.arguments org.eclipse.cdt.core.errorOutputParser org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.VCErrorParser; org.eclipse.cdt.make.core.environment org.eclipse.cdt.make.core.enableAutoBuild true org.eclipse.cdt.make.core.build.target.inc all org.eclipse.cdt.make.core.enableFullBuild true org.eclipse.cdt.make.core.enabledIncrementalBuild true org.eclipse.cdt.make.core.build.location org.eclipse.cdt.make.core.build.command make org.eclipse.cdt.make.core.build.target.clean clean depend org.eclipse.cdt.make.core.enableCleanBuild true org.eclipse.cdt.make.core.append_environment true org.eclipse.cdt.make.core.useDefaultBuildCmd true org.eclipse.cdt.make.core.build.target.auto all org.eclipse.cdt.make.core.stopOnError false org.eclipse.cdt.make.core.ScannerConfigBuilder org.eclipse.cdt.core.cnature org.eclipse.cdt.make.core.makeNature org.eclipse.cdt.make.core.ScannerConfigNature org.eclipse.cdt.core.ccnature cpputest-3.7.2/examples/.settings/000755 000765 000024 00000000000 12523662133 020063 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/examples/AllTests/000755 000765 000024 00000000000 12523662133 017700 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/examples/ApplicationLib/000755 000765 000024 00000000000 12523662133 021037 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/examples/CppUTestExample.dsw000644 000765 000024 00000001535 12521603460 021707 0ustar00basvoddestaff000000 000000 Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "AllTests"=.\AllTests\AllTests.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name ApplicationLib End Project Dependency }}} ############################################################################### Project: "ApplicationLib"=.\ApplicationLib\ApplicationLib.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### cpputest-3.7.2/examples/CppUTestExample_VS2008.sln000644 000765 000024 00000002772 12521603460 022634 0ustar00basvoddestaff000000 000000  Microsoft Visual Studio Solution File, Format Version 10.00 # Visual C++ Express 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllTests", "AllTests\AllTests.vcproj", "{95A5F8D0-12C0-4AC1-B46B-292DD3886108}" ProjectSection(ProjectDependencies) = postProject {348076B9-303C-4FE0-9380-17CDF11134A9} = {348076B9-303C-4FE0-9380-17CDF11134A9} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApplicationLib", "ApplicationLib\ApplicationLib.vcproj", "{348076B9-303C-4FE0-9380-17CDF11134A9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Debug|Win32.ActiveCfg = Debug|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Debug|Win32.Build.0 = Debug|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Release|Win32.ActiveCfg = Release|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Release|Win32.Build.0 = Release|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Debug|Win32.ActiveCfg = Debug|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Debug|Win32.Build.0 = Debug|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Release|Win32.ActiveCfg = Release|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal cpputest-3.7.2/examples/CppUTestExample_VS201x.sln000644 000765 000024 00000002534 12521603460 022731 0ustar00basvoddestaff000000 000000  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllTests", "AllTests\AllTests.vcxproj", "{95A5F8D0-12C0-4AC1-B46B-292DD3886108}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApplicationLib", "ApplicationLib\ApplicationLib.vcxproj", "{348076B9-303C-4FE0-9380-17CDF11134A9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Debug|Win32.ActiveCfg = Debug|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Debug|Win32.Build.0 = Debug|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Release|Win32.ActiveCfg = Release|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Release|Win32.Build.0 = Release|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Debug|Win32.ActiveCfg = Debug|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Debug|Win32.Build.0 = Debug|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Release|Win32.ActiveCfg = Release|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal cpputest-3.7.2/examples/Makefile000644 000765 000024 00000001314 12521603460 017600 0ustar00basvoddestaff000000 000000 #--------- # # CppUTest Examples Makefile # #---------- #Set this to @ to keep the makefile quiet ifndef SILENCE SILENCE = @ endif #--- Inputs ----# COMPONENT_NAME = CppUTestExamples CPPUTEST_HOME = .. CPPUTEST_USE_EXTENSIONS = Y CPP_PLATFORM = Gcc # This line is overriding the default new macros. This is helpful # when using std library includes like and other containers # so that memory leak detection does not conflict with stl. CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE = -include ApplicationLib/ExamplesNewOverrides.h SRC_DIRS = \ ApplicationLib TEST_SRC_DIRS = \ AllTests INCLUDE_DIRS =\ .\ ApplicationLib\ $(CPPUTEST_HOME)/include\ include $(CPPUTEST_HOME)/build/MakefileWorker.mk cpputest-3.7.2/examples/README.txt000644 000765 000024 00000000160 12521603460 017634 0ustar00basvoddestaff000000 000000 To build the examples for gcc: make clean all test gcov for MS Studio: The workspace files may be out of date.cpputest-3.7.2/examples/ApplicationLib/ApplicationLib.dsp000644 000765 000024 00000006565 12521603460 024451 0ustar00basvoddestaff000000 000000 # Microsoft Developer Studio Project File - Name="ApplicationLib" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=ApplicationLib - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "ApplicationLib.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "ApplicationLib.mak" CFG="ApplicationLib - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ApplicationLib - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "ApplicationLib - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "ApplicationLib - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo !ELSEIF "$(CFG)" == "ApplicationLib - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "../../include" /I "../../include/Platforms/VisualCpp" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo !ENDIF # Begin Target # Name "ApplicationLib - Win32 Release" # Name "ApplicationLib - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\CircularBuffer.cpp # End Source File # Begin Source File SOURCE=.\EventDispatcher.cpp # End Source File # Begin Source File SOURCE=.\hello.c # End Source File # Begin Source File SOURCE=.\Printer.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\CircularBuffer.h # End Source File # Begin Source File SOURCE=.\ExamplesNewOverrides.h # End Source File # Begin Source File SOURCE=.\hello.h # End Source File # Begin Source File SOURCE=.\Printer.h # End Source File # End Group # End Target # End Project cpputest-3.7.2/examples/ApplicationLib/ApplicationLib.vcproj000644 000765 000024 00000013727 12521603460 025164 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/examples/ApplicationLib/ApplicationLib.vcxproj000644 000765 000024 00000017463 12521603460 025355 0ustar00basvoddestaff000000 000000  Debug Win32 Release Win32 {348076B9-303C-4FE0-9380-17CDF11134A9} StaticLibrary false MultiByte StaticLibrary false MultiByte <_ProjectFileVersion>10.0.30319.1 .\Debug\ .\Debug\ $(Configuration)\ $(Configuration)\ Disabled ../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL .\Debug/ApplicationLib.pch .\Debug/ .\Debug/ .\Debug/ Level3 true EditAndContinue _DEBUG;%(PreprocessorDefinitions) 0x0409 .\Debug\ApplicationLib.lib true true ./$(Configuration)/ApplicationLib.bsc MaxSpeed ../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) Default MultiThreadedDLL ./$(Configuration)/ApplicationLib.pch ./$(Configuration)/ ./$(Configuration)/ ./$(Configuration)/ Level3 true NDEBUG;%(PreprocessorDefinitions) 0x0409 ./$(Configuration)/ApplicationLib.lib true true ./$(Configuration)/ApplicationLib.bsc %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) cpputest-3.7.2/examples/ApplicationLib/CircularBuffer.cpp000644 000765 000024 00000005573 12521603460 024447 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CircularBuffer.h" #include "Printer.h" CircularBuffer::CircularBuffer(int _capacity) : index(0), outdex(0), capacity(_capacity), empty(true), full(false) { buffer = new int[this->capacity]; } CircularBuffer::~CircularBuffer() { delete[] buffer; } bool CircularBuffer::IsEmpty() { return empty; } bool CircularBuffer::IsFull() { return full; } void CircularBuffer::Put(int i) { empty = false; buffer[index] = i; index = Next(index); if (full) outdex = Next(outdex); else if (index == outdex) full = true; } int CircularBuffer::Get() { int result = -1; full = false; if (!empty) { result = buffer[outdex]; outdex = Next(outdex); if (outdex == index) empty = true; } return result; } int CircularBuffer::Capacity() { return capacity; } int CircularBuffer::Next(int i) { if (++i >= capacity) i = 0; return i; } void CircularBuffer::Print(Printer* p) { p->Print("Circular buffer content:\n<"); int printIndex = outdex; int count = index - outdex; if (!empty && (index <= outdex)) count = capacity - (outdex - index); for (int i = 0; i < count; i++) { p->Print(buffer[printIndex]); printIndex = Next(printIndex); if (i + 1 != count) p->Print(", "); } p->Print(">\n"); } cpputest-3.7.2/examples/ApplicationLib/CircularBuffer.h000644 000765 000024 00000004620 12521603460 024104 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_CircularBuffer_H #define D_CircularBuffer_H /////////////////////////////////////////////////////////////////////////////// // // CircularBuffer.h // // CircularBuffer is responsible for ... // /////////////////////////////////////////////////////////////////////////////// class Printer; class CircularBuffer { public: explicit CircularBuffer(int capacity = CAPACITY); virtual ~CircularBuffer(); void Put(int); int Get(); bool IsEmpty(); bool IsFull(); int Capacity(); int Next(int i); void Print(Printer*); private: int index; int outdex; int* buffer; int capacity; enum { CAPACITY = 5 }; bool empty; bool full; CircularBuffer(const CircularBuffer&); CircularBuffer& operator=(const CircularBuffer&); }; #endif // D_CircularBuffer_H cpputest-3.7.2/examples/ApplicationLib/EventDispatcher.cpp000644 000765 000024 00000004374 12521603460 024637 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "EventDispatcher.h" using namespace std; EventDispatcher::EventDispatcher() { } void EventDispatcher::registerObserver(EventType type, EventObserver* observer) { for (list >::iterator i = observerList_.begin(); i != observerList_.end(); i++) i->second->notifyRegistration(observer); observerList_.push_back(make_pair(type, observer)); } void EventDispatcher::dispatchEvent(const Event& event, int timeoutSeconds) { for (list >::iterator i = observerList_.begin(); i != observerList_.end(); i++) { if (i->first == event.type) i->second->notify(event, timeoutSeconds); } } cpputest-3.7.2/examples/ApplicationLib/EventDispatcher.h000644 000765 000024 00000004322 12521603460 024275 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef EVENTDISPATCHER__H #define EVENTDISPATCHER__H #include enum EventType { IMPORTANT_EVENT, LESS_IMPORTANT_EVENT }; class Event { public: EventType type; }; class EventObserver { public: virtual void notify(const Event& event, int timeOutInSeconds)=0; virtual void notifyRegistration(EventObserver* newObserver)=0; virtual ~EventObserver() {} }; class EventDispatcher { std::list > observerList_; public: EventDispatcher(); void registerObserver(EventType type, EventObserver* observer); void dispatchEvent(const Event& event, int timeoutSeconds); }; #endif cpputest-3.7.2/examples/ApplicationLib/ExamplesNewOverrides.h000644 000765 000024 00000003206 12521603460 025320 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "CppUTest/MemoryLeakDetectorNewMacros.h" cpputest-3.7.2/examples/ApplicationLib/hello.c000644 000765 000024 00000003335 12521603460 022306 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "hello.h" void printHelloWorld() { PrintFormated("Hello World!\n"); } int (*PrintFormated)(const char*, ...) = printf; cpputest-3.7.2/examples/ApplicationLib/hello.h000644 000765 000024 00000003424 12521603460 022312 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef HELLO_H_ #define HELLO_H_ #ifdef __cplusplus extern "C" { #endif extern void printHelloWorld(void); extern int (*PrintFormated)(const char*, ...); #ifdef __cplusplus } #endif #endif /*HELLO_H_*/ cpputest-3.7.2/examples/ApplicationLib/Printer.cpp000644 000765 000024 00000003730 12521603460 023165 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "Printer.h" #include Printer::Printer() { } Printer::~Printer() { } void Printer::Print(const char* s) { for (const char* p = s; *p; p++) putchar(*p); } void Printer::Print(long int n) { printf("%ld", n); } Printer& operator<<(Printer& p, const char* s) { p.Print(s); return p; } Printer& operator<<(Printer& p, long int i) { p.Print(i); return p; } cpputest-3.7.2/examples/ApplicationLib/Printer.h000644 000765 000024 00000004211 12521603460 022625 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_Printer_H #define D_Printer_H /////////////////////////////////////////////////////////////////////////////// // // Printer is responsible for ... // /////////////////////////////////////////////////////////////////////////////// class Printer { public: explicit Printer(); virtual ~Printer(); virtual void Print(const char*); virtual void Print(long int); private: Printer(const Printer&); Printer& operator=(const Printer&); }; Printer& operator<<(Printer&, const char*); Printer& operator<<(Printer&, long int); #endif // D_Printer_H cpputest-3.7.2/examples/AllTests/AllTests.cpp000644 000765 000024 00000004503 12521603460 022135 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestPlugin.h" #include "CppUTest/TestRegistry.h" #include "CppUTestExt/MockSupportPlugin.h" class MyDummyComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void* object1, const void* object2) { return object1 == object2; } virtual SimpleString valueToString(const void* object) { return StringFrom(object); } }; int main(int ac, char** av) { MyDummyComparator dummyComparator; MockSupportPlugin mockPlugin; mockPlugin.installComparator("MyDummyType", dummyComparator); TestRegistry::getCurrentRegistry()->installPlugin(&mockPlugin); return CommandLineTestRunner::RunAllTests(ac, av); } #include "AllTests.h" cpputest-3.7.2/examples/AllTests/AllTests.dsp000644 000765 000024 00000012612 12521603460 022141 0ustar00basvoddestaff000000 000000 # Microsoft Developer Studio Project File - Name="AllTests" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=AllTests - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "AllTests.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "AllTests.mak" CFG="AllTests - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "AllTests - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "AllTests - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "AllTests - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /I "..\ApplicationLib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUTEST_MEM_LEAK_DETECTION_DISABLED" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 ..\..\lib\CppUTest.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:console /incremental:yes /machine:I386 # Begin Special Build Tool TargetPath=.\Release\AllTests.exe SOURCE="$(InputPath)" PostBuild_Cmds=$(TargetPath) # End Special Build Tool !ELSEIF "$(CFG)" == "AllTests - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "..\..\include" /I "..\ApplicationLib" /FI"CppUTest/MemoryLeakDetectorMallocMacros.h" /FI"CppUTest/MemoryLeakDetectorNewMacros.h" /D "_CONSOLE" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "CPPUTEST_MEM_LEAK_DETECTION_DISABLED" /FR /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 ..\..\lib\CppUTestd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # SUBTRACT LINK32 /incremental:no # Begin Special Build Tool TargetPath=.\Debug\AllTests.exe SOURCE="$(InputPath)" PostBuild_Cmds=$(TargetPath) -v # End Special Build Tool !ENDIF # Begin Target # Name "AllTests - Win32 Release" # Name "AllTests - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\AllTests.cpp # End Source File # Begin Source File SOURCE=.\CircularBufferTest.cpp # End Source File # Begin Source File SOURCE=.\EventDispatcherTest.cpp # End Source File # Begin Source File SOURCE=.\HelloTest.cpp # End Source File # Begin Source File SOURCE=.\MockDocumentationTest.cpp # End Source File # Begin Source File SOURCE=.\PrinterTest.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\AllTests.h # End Source File # Begin Source File SOURCE=.\MockPrinter.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project cpputest-3.7.2/examples/AllTests/AllTests.h000644 000765 000024 00000003361 12521603460 021603 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ IMPORT_TEST_GROUP( Printer); IMPORT_TEST_GROUP( CircularBuffer); IMPORT_TEST_GROUP( HelloWorld); IMPORT_TEST_GROUP( EventDispatcher); IMPORT_TEST_GROUP( MockDocumentation); cpputest-3.7.2/examples/AllTests/AllTests.vcproj000644 000765 000024 00000014313 12521603460 022656 0ustar00basvoddestaff000000 000000 cpputest-3.7.2/examples/AllTests/AllTests.vcxproj000644 000765 000024 00000021154 12521603460 023047 0ustar00basvoddestaff000000 000000  Debug Win32 Release Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108} Application false MultiByte Application false MultiByte <_ProjectFileVersion>10.0.30319.1 ./$(Configuration)/\ ./$(Configuration)/\ true .\Debug\ .\Debug\ true $(IntDir)BuildLog.htm .\Debug/AllTests.tlb MaxSpeed ../../include;../ApplicationLib;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) Default MultiThreadedDLL ./$(Configuration)/AllTests.pch ./$(Configuration)/ ./$(Configuration)/ ./$(Configuration)/ ./$(Configuration)/ Level3 true _DEBUG;%(PreprocessorDefinitions) 0x0409 /NODEFAULTLIB:LIBCMT /NODEFAULTLIB:MSVCRTD %(AdditionalOptions) ../../lib/CppUTest.lib;../ApplicationLib/$(Configuration)/ApplicationLib.lib;odbc32.lib;odbccp32.lib;winmm.lib;%(AdditionalDependencies) ./$(Configuration)/AllTests.exe true ./$(Configuration)/$(TargetFileName).intermediate.manifest false false Console false MachineX86 true .\$(Configuration)/AllTests.bsc "$(TargetPath)" .\Debug/AllTests.tlb Disabled ../../include;../ApplicationLib;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL ./$(Configuration)/AllTests.pch ./$(Configuration)/ ./$(Configuration)/ ./$(Configuration)/ $(Configuration)/ Level3 true EditAndContinue _DEBUG;%(PreprocessorDefinitions) 0x0409 ../../lib/CppUTestd.lib;../ApplicationLib/$(Configuration)/ApplicationLib.lib;odbc32.lib;odbccp32.lib;winmm.lib;%(AdditionalDependencies) ./$(Configuration)/AllTests.exe true ./$(Configuration)/$(TargetFileName).intermediate.manifest true ./$(Configuration)/AllTests.pdb Console false MachineX86 true .\Debug/AllTests.bsc "$(TargetPath)" {348076b9-303c-4fe0-9380-17cdf11134a9} false cpputest-3.7.2/examples/AllTests/CircularBufferTest.cpp000644 000765 000024 00000014236 12521603460 024144 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "MockPrinter.h" #include "CircularBuffer.h" TEST_GROUP(CircularBuffer) { CircularBuffer* buffer; void setup() { buffer = new CircularBuffer(); } void teardown() { delete buffer; } void fillTheQueue(int seed, int howMany) { for (int i = 0; i < howMany; i++) buffer->Put(seed + i); } void removeFromQueue(int howMany) { for (int i = 0; i < howMany; i++) buffer->Get(); } }; TEST(CircularBuffer, EmptyAfterCreation) { CHECK(buffer->IsEmpty()); } TEST(CircularBuffer, NotEmpty) { buffer->Put(10046); CHECK(!buffer->IsEmpty()); } TEST(CircularBuffer, NotEmptyThenEmpty) { buffer->Put(4567); CHECK(!buffer->IsEmpty()); buffer->Get(); CHECK(buffer->IsEmpty()); } TEST(CircularBuffer, GetPutOneValue) { buffer->Put(4567); LONGS_EQUAL(4567, buffer->Get()); } TEST(CircularBuffer, GetPutAFew) { buffer->Put(1); buffer->Put(2); buffer->Put(3); LONGS_EQUAL(1, buffer->Get()); LONGS_EQUAL(2, buffer->Get()); LONGS_EQUAL(3, buffer->Get()); } TEST(CircularBuffer, Capacity) { CircularBuffer b(2); LONGS_EQUAL(2, b.Capacity()); } TEST(CircularBuffer, IsFull) { fillTheQueue(0, buffer->Capacity()); CHECK(buffer->IsFull()); } TEST(CircularBuffer, EmptyToFullToEmpty) { fillTheQueue(100, buffer->Capacity()); CHECK(buffer->IsFull()); removeFromQueue(buffer->Capacity()); CHECK(buffer->IsEmpty()); } TEST(CircularBuffer, WrapAround) { fillTheQueue(100, buffer->Capacity()); CHECK(buffer->IsFull()); LONGS_EQUAL(100, buffer->Get()); CHECK(!buffer->IsFull()); buffer->Put(1000); CHECK(buffer->IsFull()); removeFromQueue(buffer->Capacity() - 1); LONGS_EQUAL(1000, buffer->Get()); CHECK(buffer->IsEmpty()); } TEST(CircularBuffer, PutToFull) { int capacity = buffer->Capacity(); fillTheQueue(900, capacity); buffer->Put(9999); for (int i = 0; i < buffer->Capacity() - 1; i++) LONGS_EQUAL(i+900+1, buffer->Get()); LONGS_EQUAL(9999, buffer->Get()); CHECK(buffer->IsEmpty()); } //Sometime people ask what tests the tests. //Do you know the answer TEST(CircularBuffer, GetFromEmpty) { LONGS_EQUAL(-1, buffer->Get()); CHECK(buffer->IsEmpty()); } /* * the next tests demonstrate using a mock object for * capturing output * */ TEST(CircularBuffer, PrintEmpty) { MockPrinter mock; Printer* p = &mock; buffer->Print(p); STRCMP_EQUAL("Circular buffer content:\n<>\n", mock.getOutput().c_str()); } TEST(CircularBuffer, PrintAfterOnePut) { MockPrinter mock; buffer->Put(1); buffer->Print(&mock); STRCMP_EQUAL("Circular buffer content:\n<1>\n", mock.getOutput().c_str()); } TEST(CircularBuffer, PrintNotYetWrappedOrFull) { MockPrinter mock; buffer->Put(1); buffer->Put(2); buffer->Put(3); buffer->Print(&mock); STRCMP_EQUAL("Circular buffer content:\n<1, 2, 3>\n", mock.getOutput().c_str()); } TEST(CircularBuffer, PrintNotYetWrappedAndIsFull) { MockPrinter mock; fillTheQueue(200, buffer->Capacity()); buffer->Print(&mock); const char* expected = "Circular buffer content:\n" "<200, 201, 202, 203, 204>\n"; STRCMP_EQUAL(expected, mock.getOutput().c_str()); } TEST(CircularBuffer, PrintWrappedAndIsFullOldestToNewest) { MockPrinter mock; fillTheQueue(200, buffer->Capacity()); buffer->Get(); buffer->Put(999); buffer->Print(&mock); const char* expected = "Circular buffer content:\n" "<201, 202, 203, 204, 999>\n"; STRCMP_EQUAL(expected, mock.getOutput().c_str()); } TEST(CircularBuffer, PrintWrappedAndFullOverwriteOldest) { MockPrinter mock; fillTheQueue(200, buffer->Capacity()); buffer->Put(9999); buffer->Print(&mock); const char* expected = "Circular buffer content:\n" "<201, 202, 203, 204, 9999>\n"; STRCMP_EQUAL(expected, mock.getOutput().c_str()); } TEST(CircularBuffer, PrintBoundary) { MockPrinter mock; fillTheQueue(200, buffer->Capacity()); removeFromQueue(buffer->Capacity() - 2); buffer->Put(888); fillTheQueue(300, buffer->Capacity() - 1); buffer->Print(&mock); const char* expected = "Circular buffer content:\n" "<888, 300, 301, 302, 303>\n"; STRCMP_EQUAL(expected, mock.getOutput().c_str()); } TEST(CircularBuffer, FillEmptyThenPrint) { MockPrinter mock; fillTheQueue(200, buffer->Capacity()); removeFromQueue(buffer->Capacity()); buffer->Print(&mock); const char* expected = "Circular buffer content:\n" "<>\n"; STRCMP_EQUAL(expected, mock.getOutput().c_str()); } cpputest-3.7.2/examples/AllTests/EventDispatcherTest.cpp000644 000765 000024 00000010324 12521603460 024330 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockSupport.h" #include "EventDispatcher.h" class ObserverMock : public EventObserver { public: virtual void notify(const Event& event, int timeOutInSeconds) { mock().actualCall("notify").onObject(this).withParameterOfType("Event", "event", (void*) &event).withParameter("timeOutInSeconds", timeOutInSeconds); } virtual void notifyRegistration(EventObserver* newObserver) { mock().actualCall("notifyRegistration").onObject(this).withParameter("newObserver", newObserver); } }; class EventComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void* object1, const void* object2) { return ((Event*)object1)->type == ((Event*)object2)->type; } virtual SimpleString valueToString(const void* object) { return StringFrom(((Event*)object)->type); } }; TEST_GROUP(EventDispatcher) { Event event; EventDispatcher* dispatcher; ObserverMock observer; ObserverMock observer2; EventComparator eventComparator; void setup() { dispatcher = new EventDispatcher; mock().installComparator("Event", eventComparator); } void teardown() { delete dispatcher; mock().removeAllComparators(); } }; TEST(EventDispatcher, EventWithoutRegistrationsResultsIntoNoCalls) { dispatcher->dispatchEvent(event, 10); } TEST(EventDispatcher, EventWithRegistrationForEventResultsIntoCallback) { mock().expectOneCall("notify").onObject(&observer).withParameterOfType("Event", "event", &event).withParameter("timeOutInSeconds", 10); event.type = IMPORTANT_EVENT; dispatcher->registerObserver(IMPORTANT_EVENT, &observer); dispatcher->dispatchEvent(event, 10); } TEST(EventDispatcher, DifferentEventWithRegistrationDoesNotResultIntoCallback) { event.type = LESS_IMPORTANT_EVENT; dispatcher->registerObserver(IMPORTANT_EVENT, &observer); dispatcher->dispatchEvent(event, 10); } TEST(EventDispatcher, RegisterTwoObserversResultIntoTwoCallsAndARegistrationNotification) { mock().expectOneCall("notify").onObject(&observer).withParameterOfType("Event", "event", &event).withParameter("timeOutInSeconds", 10); mock().expectOneCall("notify").onObject(&observer2).withParameterOfType("Event", "event", &event).withParameter("timeOutInSeconds", 10); mock().expectOneCall("notifyRegistration").onObject(&observer).withParameter("newObserver", &observer2); event.type = IMPORTANT_EVENT; dispatcher->registerObserver(IMPORTANT_EVENT, &observer); dispatcher->registerObserver(IMPORTANT_EVENT, &observer2); dispatcher->dispatchEvent(event, 10); } cpputest-3.7.2/examples/AllTests/HelloTest.cpp000644 000765 000024 00000004235 12521603460 022307 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "hello.h" #include #include #include "CppUTest/TestHarness.h" static SimpleString* buffer; TEST_GROUP(HelloWorld) { static int output_method(const char* output, ...) { va_list arguments; va_start(arguments, output); *buffer = VStringFromFormat(output, arguments); va_end(arguments); return 1; } void setup() { buffer = new SimpleString(); UT_PTR_SET(PrintFormated, &output_method); } void teardown() { delete buffer; } }; TEST(HelloWorld, PrintOk) { printHelloWorld(); STRCMP_EQUAL("Hello World!\n", buffer->asCharString()); } cpputest-3.7.2/examples/AllTests/MockDocumentationTest.cpp000644 000765 000024 00000014204 12521603460 024664 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockSupport_c.h" TEST_GROUP(FirstTestGroup) { }; TEST(FirstTestGroup, FirsTest) { // FAIL("Fail me!"); } TEST(FirstTestGroup, SecondTest) { // STRCMP_EQUAL("hello", "world"); } TEST_GROUP(MockDocumentation) { }; static void productionCode() { mock().actualCall("productionCode"); } TEST(MockDocumentation, SimpleScenario) { mock().expectOneCall("productionCode"); productionCode(); mock().checkExpectations(); } class ClassFromProductionCode { public: virtual void importantFunction(){} virtual ~ClassFromProductionCode() {} }; class ClassFromProductionCodeMock : public ClassFromProductionCode { public: virtual void importantFunction() { mock().actualCall("importantFunction").onObject(this); } }; TEST(MockDocumentation, SimpleScenarioObject) { ClassFromProductionCode* object = new ClassFromProductionCodeMock; /* create mock instead of real thing */ mock().expectOneCall("importantFunction").onObject(object); object->importantFunction(); mock().checkExpectations(); delete object; } static void parameters_function(int p1, const char* p2) { void* object = (void*) 1; mock().actualCall("function").onObject(object).withParameter("p1", p1).withParameter("p2", p2); } TEST(MockDocumentation, parameters) { void* object = (void*) 1; mock().expectOneCall("function").onObject(object).withParameter("p1", 2).withParameter("p2", "hah"); parameters_function(2, "hah"); } class MyTypeComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void* object1, const void* object2) { return object1 == object2; } virtual SimpleString valueToString(const void* object) { return StringFrom(object); } }; TEST(MockDocumentation, ObjectParameters) { void* object = (void*) 1; MyTypeComparator comparator; mock().installComparator("myType", comparator); mock().expectOneCall("function").withParameterOfType("myType", "parameterName", object); mock().clear(); mock().removeAllComparators(); } TEST(MockDocumentation, returnValue) { mock().expectOneCall("function").andReturnValue(10); int value = mock().actualCall("function").returnValue().getIntValue(); value = mock().returnValue().getIntValue(); LONGS_EQUAL(10, value); } TEST(MockDocumentation, setData) { ClassFromProductionCode object; mock().setData("importantValue", 10); mock().setDataObject("importantObject", "ClassFromProductionCode", &object); ClassFromProductionCode * pobject; int value = mock().getData("importantValue").getIntValue(); pobject = (ClassFromProductionCode*) mock().getData("importantObject").getObjectPointer(); LONGS_EQUAL(10, value); POINTERS_EQUAL(pobject, &object); } static void doSomethingThatWouldOtherwiseBlowUpTheMockingFramework() { } TEST(MockDocumentation, otherMockSupport) { mock().crashOnFailure(); // mock().actualCall("unex"); mock().expectOneCall("foo"); mock().ignoreOtherCalls(); mock().disable(); doSomethingThatWouldOtherwiseBlowUpTheMockingFramework(); mock().enable(); mock().clear(); } TEST(MockDocumentation, scope) { mock("xmlparser").expectOneCall("open"); mock("filesystem").ignoreOtherCalls(); mock("xmlparser").actualCall("open"); } static int equalMethod(const void* object1, const void* object2) { return object1 == object2; } static char* toStringMethod(const void*) { return (char*) "string"; } TEST(MockDocumentation, CInterface) { void* object = (void*) 0x1; mock_c()->expectOneCall("foo")->withIntParameters("integer", 10)->andReturnDoubleValue(1.11); double d = mock_c()->actualCall("foo")->withIntParameters("integer", 10)->returnValue().value.doubleValue; DOUBLES_EQUAL(1.11, d, 0.00001); mock_c()->installComparator("type", equalMethod, toStringMethod); mock_scope_c("scope")->expectOneCall("bar")->withParameterOfType("type", "name", object); mock_scope_c("scope")->actualCall("bar")->withParameterOfType("type", "name", object); mock_c()->removeAllComparators(); mock_c()->setIntData("important", 10); mock_c()->checkExpectations(); mock_c()->clear(); } TEST_GROUP(FooTestGroup) { void setup() { // Init stuff } void teardown() { // Uninit stuff } }; TEST(FooTestGroup, Foo) { // Test FOO } TEST(FooTestGroup, MoreFoo) { // Test more FOO } TEST_GROUP(BarTestGroup) { void setup() { // Init Bar } }; TEST(BarTestGroup, Bar) { // Test Bar } cpputest-3.7.2/examples/AllTests/MockPrinter.h000644 000765 000024 00000005076 12521603460 022312 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockPrinter_H #define D_MockPrinter_H /////////////////////////////////////////////////////////////////////////////// // // MockPrinter.h // // MockPrinter is responsible for providing a test stub for Printer // /////////////////////////////////////////////////////////////////////////////// #include "Printer.h" #include "CppUTest/SimpleString.h" #include #include class MockPrinter: public Printer { public: explicit MockPrinter() { } virtual ~MockPrinter() { } virtual void Print(const char* s) { savedOutput.append(s); } virtual void Print(long int value) { SimpleString buffer; buffer = StringFromFormat("%ld", value); savedOutput.append(buffer.asCharString()); } std::string getOutput() const { return savedOutput; } private: std::string savedOutput; MockPrinter(const MockPrinter&); MockPrinter& operator=(const MockPrinter&); }; #endif // D_MockPrinter_H cpputest-3.7.2/examples/AllTests/PrinterTest.cpp000644 000765 000024 00000004504 12521603460 022666 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "Printer.h" #include "MockPrinter.h" TEST_GROUP(Printer) { Printer* printer; MockPrinter* mockPrinter; void setup() { mockPrinter = new MockPrinter(); printer = mockPrinter; } void teardown() { delete printer; } }; TEST(Printer, PrintConstCharStar) { printer->Print("hello"); printer->Print("hello\n"); const char* expected = "hellohello\n"; CHECK_EQUAL(expected, mockPrinter->getOutput()); } TEST(Printer, PrintLong) { printer->Print(1234); const char* expected = "1234"; CHECK_EQUAL(expected, mockPrinter->getOutput()); } TEST(Printer, StreamOperators) { *printer << "n=" << 1234; const char* expected = "n=1234"; CHECK_EQUAL(expected, mockPrinter->getOutput()); } cpputest-3.7.2/examples/AllTests/RunAllTests.sh000755 000765 000024 00000000134 12521603460 022451 0ustar00basvoddestaff000000 000000 #!/bin/bash #put any pre-test execution commands here. echo Running all tests ./AllTests $1 cpputest-3.7.2/examples/.settings/org.eclipse.cdt.core.prefs000644 000765 000024 00000000147 12521603460 025034 0ustar00basvoddestaff000000 000000 #Thu Apr 19 15:52:43 CDT 2007 eclipse.preferences.version=1 indexerId=org.eclipse.cdt.core.fastIndexer cpputest-3.7.2/docs/WalkThrough_VS21010.docx000644 000765 000024 00006267522 12521603460 021411 0ustar00basvoddestaff000000 000000 PK!g…ÇÞ‘ [Content_Types].xml ¢( Ä–MoÛ0 †ïö ][éÃ0Äé¡ëŽ[eØ®ŠM;¬HLÛüûIv¬¹«u³^Ä2ß÷EÑ\^Þ‹&¹c¹’9¹È$Y¨’Ë:'?Ö_Ò$±ÈdÉ%!'{°ärõöÍr½×`-mN¶ˆú¥¶Ø‚`6S¤[©” Ý_SS͊߬ú~±ø@ %$¦è5Èjù*¶k0¹¾w;-k’\uïy«œpáãýs:a ±B˜Ö /º½Ñ[Y>âJL™‹lß±[®í;þ¿òihpˆûæ’ix É 3ø• GNï”)i©Šp»ÎNËŒpªªâ„x¯¦*ÀZwJ¢ÉŠ`\öücÅ΢¿DC9‚¸1JÛ‹Ù8AÔëA!‡c m.äNlÀ8úÙîGÉÒ§ÑBXÜ7`_ž Ó´ÿÉq{]UP¸{2]¦=ë,±Ón€èòcòðö¦SÕgÊ“w°ù~6Šø$H¥J…ç8û = ²<C¯<‰àaÁÌïGw°Žð—¸f›"*ÿ‰EY¹/G+= Q7ÊZföÿ£?÷^ñP¯Ü£z`zÔp"ŽìùÍê¯íÙúEt× ,ƒ±ù'Öë@<¾8B‘¿"f3°£\…ȾTºI S‘ÌõŒ«º¾ÇôWš™¦ÚY igï@µÇX6_Ö]7~ fïØË‰ÈaoÙ.b*lIÆrj)õ,l0Ï%‘b¬ 6ài¢ÕõDÿ_‹Ž…, ¡ ‰Ïó|uœZ^tÙ¢yǯ;!Y,}{ûCƒ³/h>ÿÿPK!럺èöword/_rels/document.xml.rels ¢( ¼Y±nÛ0Ý ô îMRv’"J–¦@†.mŠvU$Ê"‘‚H·ñß—±#ÛiÂסÄ-HÉÔÃÝ»wO§ËëǾ›ýÒ£k­)˜Èæl¦MeëÖ¬ öýîó‡s6s¾4uÙY£ ¶ÕŽ]_½wùUw¥rëvp³pŠq[{?|äÜUkÝ—.³ƒ6áJcǾôa9®øPVåJs9Ÿ/ùxz»zqæì¶.Øx[ ÅfwÛ!<ú߇ۦi+ýÉV›^ÿÆ3xÛ‡‡‡Ëq¥}Áz]·å~s‘ fÅxDˆ1G(ä’ÅB¡.hP(‹¤¬p~Û^h±_gº1BHA¡`*rG.iP(‹üŒÅ9ÊÈ"èg:¡h¬ñwå}w¢X‡-ÄΤ¡h¬õÆúÓú8l!‚ˆ9ʇHŠx÷¸@ ä"%)â Ä¡PI%3ŽB„(¢N*aFr¢Nª`'MZ fÓßë1ضÀµgwsØ‚eJ (›2©lƹ)$ªIäl$t69‘µP0IATçmÿ3Ø©7³Œvyëu/I“rô·¾ÿ¦½¥rbùN6‘4.q¢B«#‰lŸ€¶O%•¯x($Œ…"jðêWN¤_J ýʉ|†‚>#)÷ªP§X¥I1Ä©‰»{R¿µ#±kÍÃQBŸç!Õ0l‚;÷»ñбõÓleºéKXìæÑëÑ”ñ—Y"O& 'SIE>ž4 ³–'õO/Jzœ²Q°ý¶:A$%¸û'B<ê™"j¶Æ"'ê¶ vÛEÒnëÃ|Vi¹[òÝ/äf,}[ÖÙÆg•íù~ û4}={9áåû¹ÚÖ¯ošFWþĽº„ôŠ¨ÙŠX0ÞzÿÏ\öZ™” Ná;½$ò`z0E%œX³ˆ¬‡„¼È“z8/äENä+ôIAhSÿ5 v^-’6²Ug+Çíôë¨ãÓ^?›@ñ_ë®þÿÿPK!é»E€dword/document.xmlì}{oÛH–ïÿ¸ßð],º·G©—g£…žé`Ó#v÷`Z¢mvdQCRv܃æƒÜûï~°ù$÷wªŠRU±HQ¶dÓi¦…bÕ©Sçýø÷ÿøz3·n½0òƒÅÛ£úqíÈòÓ`æ/®Þýr>yÝ9²¢Ø]ÌÜy°ðÞÝ{ÑÑôþ÷ÿú÷»“Y0]Ýx‹ØÂ‹èän9}{tÇË“7o¢éµwãFÇ7þ4 ¢à2>ž7o‚ËKê½¹ ÂÙ›F­^c¿–a0õ¢ßº‹[7:ÃݤG –Þߺ Â7ŽŽƒðêÍ~Y-_cô¥ûþÜï1v­• ¼=Z…‹1¡×ë Ñ+'|Bâ¯ä0µ Ãwù›#öÅ7¡7Ç‚Etí/7ËxèhXâu2¥Û¼EÜÞÌ“çî–u'õ½õ’‹ìÁ(tï°›SÀ1ã/ÝÌ9h7»ªX¯å-Fì ±žC‘)¨ßLfrãú‹õ0 \œˆÇà÷»0X-×ÓYúíýâËz,:˜;̬Öb'O^Z´Ó©£{ví.½#ëfzòþj„îÅ3º«;aäQÄâ"˜ÝÓßÑ,†ôßYw'·îüíÑë†]«7;ÍFçè Ýy9uÃøãÅïÒ¿Þ¹ó¹Þ'ïœÓ—¬àÒ‹¤(R^ýeáÿmåa°7êhø'¦Á¿ãÅŒÿÅ_ án4õýsP2,æÆÇº~ì/"ÿw<7Šû‘ïo^ÓSé;lQüÏaÄþ^§a\²ßÓ`„ɺÜUð¥D$×µäÊ&Ç`Ưa=lê|]ëå`i,À%Þ•Ÿ}z{T«õ[í†ãÐJØ¥‘w鮿±t‡½ÁÁ±<‹ïdñÅóÃ=—ØÍ_\  Ñq/µ!ôvœ¦ÈOÍ¥Ñh :“Î¥Îaò¸‹Ý¤9dlîL£XB…?óù·wÛĆaÙ5‚Réå|6¼v 1įóû%Ðñ»iã;ÀÎ?L‹(Ͻ¯Œ%ŸDKwŠG—¡yá­wÔ³°yÖouTmY¿][¿ýaý¶²è“~òf²Ul¿ÖÕ?yK7tcOžÁ5&ÎýÅ<ì.¦×éçó`jÛÝnÇî4Û ¼~á=$#BZ×)5D8ÅûµÚ°Lð‡¦)øøcòU}3xúÕ,4–MG|áa Th„e»2~< ¤ß/â0˜­¦$ítùÝy?ú³™· àÛ²}AÒn®ðÉ2@n§­ÏI¶†SyÚ7þ4žXÊa¡ã™u07!:Ygo§ueÐDLç|§oŽƾÑ)cúÞb¶¡j€Õš¬í̾=£u &™b¥ß2ûZèjâP,Ý ~°GâŸB ñÂo™Ò¡÷:ôþ¶ò#?ö"ý$JÝNv5*¾Ó»GÖ, ™pûŒBŸ;yôy‡5­‰ñïì$•qRÏèvPÈì>&VÑT¡=õºT‚m4µûD4ÕÎ!M=*¤”üÕy}~ £ÐÕu8 ZUÐßÇ}ŠÚ­(ªIéÉ`yOJQÒ,&#ØZ†æ£$NY¤“¸&ŠÏ ´L›À%Å_ýhåέ³x5ó‹¼<Ö™¯–…kÕ* WV gsëáˤpõ§£p#sò'Îcx¾gÞÌ‚çwo[Üû`WT®U¯¨\Eå÷ä可R¹B&Ão]’cúi|]©§ä½l5¾U²–gÊ‘µ3³O®ROR—8ñ·pùl±Øµàˆ"õ´"jÝq­ÒIYPFËþVÉZ÷Q¢xÈÚ‹ÖIYlÙ8wíãF¥“’N:\.9÷¢Ø:EÜð£pÿ›pжœŠ°Uj¨"›!è÷ÿ¡ÁTÓÝ嵿ÓÉkÇ•ÄF„ ©>b¾­K–\QѶVó[¥mõÚ£v·’Ú‚·;qCÖÔS)£Çyv‡?·ôÂå+Ò¶Ihµ¾YÒæT¤íèÃ@r³Oöÿ@ iÞVÿiHÛO~4õæswá«*b¸Ój³”­ýâ)Û‹p{ª< »ÙÈÐö×БýjýW° ­‰ÂäFv·GoÃäöÍæDÔ_¾3áOœhÖzª¤ˆBbßn5ÖáÔ¤—›Ë àÎe¦?EøðÙê%]î+jÚúvó!òÌÚOqR¨†œH]×+Ð$(g,üν·üH_4Uñ£÷Í5[\ÿê:¶PØìÎ gÇû¨ÕǘXD„ÐÍù̺ðŽ­ƒ;5ÞòÆuFÍÎ`ÌÐ?î½Ê{rû²-}¬Ê[F–¿¸ æ·ˆ“¿(AŒéà®ãF¼‚"uëå}J™ÔcÁRøCçyOÊ«ï!ÀE6,T´âóô—d¬RÖ @†Ð"Jò”2å֟厢|7µ,y†¾çZwÈnyr+á56=ˆPDê:°Üг¼¯¨ä£Ð iÒ3Ÿê¢þ”ï¬O%ï'ÇRƒ˜ùàËt#kÂë@™B#nHIÖx×Ȭå›Ç*ïÈ·Úƒf³="^BT(ƒom'Ó½þœv[)»EÖ: וM]EØ-:膌¿÷£±^…pʨf†ß+3Í4?L“ø²îæÞìʳX¹+ƒ \XцóÐST&’ÅÙ¥RUð½<¬€¡å•·ZNqÍCu+*åȉÕÍ ü” —©ø$ƽ+Pê9 WRõ966!øÂÂÒ­_Pp ÐȾZ\º7¨LIU¼üøZžTÞ„ˆbÈHŸdÕ”,x,7²\œ>Ë«Ž´œSET¤“ŽÓ‘×<ð7[ÍA¿ÃI½¢ Ï›e°-ó ˜DÑ/öÇi°¸ô¯VtòÞê÷§ÛÌ›ç±úUãaj €Xß(ó¨w2“Z²çqB ›EZB° rK­¤…=&báÛ©ˆΉPäm«|ú{Ä&^ >¡¿”ÇJõge²Õ:í¦ÀïžEà¹)~–76“O Zî"øìÞºvo=}IÛ9ûÄCÙMÞüþÕ½YþÅDv© ÕÇœ1±rsÈô¹+ĸݶí¯Ñ÷¦A‚ÜÌï­`a1©xL‘Î}ãN¯ý…ÝÂèâ_ýÅ,¸‹¬v~¦´ORµÉ‰Ýjv˜#‡Ÿíó²,²ôìÊ C/§2Gú&q„iõS]Ü~–-žR8•;»ßõ×xQ£d:òrYôyz¹‰<çpÉ©½y4F²l’J>èop`Ê Nf½¢C{±+kõ~Ÿ™·sŽO®ðÏ"ä$÷ù< ‚ÐZ¸„.øA8 5!Ë…`´Éd¹ÑsYkU8¢ý>&!Bm¸7$17¡‹úVÈ B`%ß3ýI~™Õ¯Ðoe b óI‘\ˆÄŠbÔ£æ°ÛÖ†ÄÊÀ(Ÿ3£‚²áŸxÜJÇ®u:k¥@¦3êñc‡Ì·Z]Îf®:Ê.»W¡»dv-˜­V7ü¨ùóÛ9@ WtÁ½÷ë ÎmÂëÒ¨‡]çc­’¨òû|mÉ£›´rþÐv&›ìˆ ÚÁíŸÕæ¡Üùq_ÍÀe÷µÓáäì{ñÕžf}âÐãx« jÆZ…Ö+ª¬«x ‚2~‡)®B örî]¢öµ°Ã4Ön02Ÿ`BòÅÿIT€ò¬vNA]´ )"àKoç*Zœ‚åQï´Æ]ûˆO3‚pÓùŠªf@5”’ƒG{ù‹=È4^(ä@a`¡· P*•®­ï´—ŠÓ4š”2ª¯ðÌc™VòHæ ÊgеqsRK ÄÃÓÓ_ÎÇgçŸüø“nêIM ¬ä†IgBÚ”7QžUï·aeüÖöõ¯Ñåøvúcü^h Œû½6rÌ™ñØzŸ÷¬ŒŒ=vjH‹I·¦ùRÅœ!¦¡%RF®Ñ^>,æÝ×I–2uy›Ì¯GþÍrî_’ 7o]Ãn{4js2Ñ»qðsQ ™¼W¶»ðÍS‡ØÈ©M"…[)ß”ŒÈêñɘ…F4£• (ó´­™‡~8(’>½O›Kå©mß{È`SÏZ-g0zÍ ù“ëÃöhÈãe@cCró¡Ñí·‡ÍF£¢"­è¾ãÃðCˆ6kåXlŸƒ©0”k#í†_ò§ž¢Ú|•• ƒëJ‚"å=/O?c/a™'£¹?å•ï%7±òiy{èmÇs¡ T¼ ë\Ry»ÀD´u”~ŸæþEè›ÆÚì•ÅË ËØ…¼×eØõ‘;O~Š”¦.“ ùÃ=Õb¨i:ò7ŠLѨph±¢Þ$Ó’¬êã/OM^ï±²Ðâz!ú$ñ fëôñ*˜’à#ûê]=æ\*V‚{d®ÏÃZÙÚ“QÂ4£Â©[.b\„sÔµO85bŽÖ”/”KÍAÜS??w 2)1÷ÍTHŒÔ×R@ä“k†)r"›Ö‚©·¸õÃ`ÁZæ Ýì8Ž=²à¥;¥æ} Þ)èì6ëŽè¿‚ÓA&øDrøÂoÁ~3Ê%A€ù{nV`;Éñ½ð•åAÔ›úŒýûL8dÞáY@#^«Æ1 â²°F¿™K]ÉYŸ^ܽóѨð×r5y5òk¤Ÿ­Às²¢]”è§zçÒÏâ¤ò¿(Rì4oWT›«0ÑJç´aÒ|Ò„â§|ݸÆ9hó÷Oš°B²Y²–Ǹƒ½ŒÓí„`¯ ኲPB¸øŒ°µä¾è'ŸÀÌû^•ŒËWñQ¶7¦—%¶ã‚9Â’è^-¢µ†ÿá0€ÒÝx"¢5F—µTJ˜ÙÌß™sK0ƒD€ b‘ b3»gŽ“Lù†»»“z½ËüغOµå´ÛÛ­µ;ðî·‚)®­é¹@NvŽ3“Ö¨6¬ssq!‚Ø"#öÀÇ-ïf߯}kÛá%>•|_»ïŒ:O/dP^L&ì}„‰'qiÊ5õIžY¸·þÈEB¤‹•Ž53ä3¢Óç뽊ÿbýì݉_&¥@º6²‡#Þ¥1Ö íIm7²°a“€ ÉpU‰ÌxdÄá4 €:F8%Ô¤Z @9˜ªtxÍ=G’¬b’èÅŒ§–hê‰GñµQ|áòˆý¬}XÿúÄ~Q¯^Ñ©í=bFšvc<ì 4ˆ5ñ=ñf~L—-9ÛãÉíËpAê>ýŠ­Z­ 7’5E{ÏFÇé4lÎ"ðÔå%,Öcþ,Zýb*p¸áOjñyd]¼=ê6ŒöcHêû‹¸| åh8Û9õ§1¢­ó ,O¦?ß¾#ÿ´?À·àCuO˜ÇZ\ùL¿D„ãèKî¦ZooaÍG/´^]\y}R0ak—ÿýÇ~UZÊÈ]k¦Eo_À’C ›„_'øOL ¿u´Åí©-âCc+Äna#ùnÝFÔöã3§ØT€ør&!>Ÿ!) î/y÷` K[ÉF£àú·2øÅÜ_‚$Í &ôÛ O¼› ¨¾Ÿu±8—ðCS!ûÅõ÷F§ŵ1x=lÖ†¯Z{üºßuÚ¯ÛµqÛ©9ú°>üozøËÅ–~²sE…‹£Æ[ÙsŒÙ„F¼a¢6SÄOZÍ)^<½¦Ÿxçˆ:Š Ò ŒÍú 4#GîÉ×Ëð†ÞD¯t çpÇc®mq[Mˆ£â06ëÝ:—­6¯/‘ºþÎ n ·G@nÈ$1ƒ¨{ €òÙ$ˆ½á`3Ã|Ø|Å¡#L•ÿßkúC¿OÖd‰È9»’Ž—Si±,¶«ôûà æCõ™7­`ÄP…¦F½š#ÁEÕèºäD$wÙ1±’«y\¼bµ\ÚŒ”ëQ2VÛhµš]ïUVÛ¨OêÝáˆ9«VÛì¶[­>±Z§n×jåÌgµÍZ‡s[$&Ïo¸-8·Êm†\q[oQ‚2?Ü8:«7‚œÝÌAük-¢ˆ$Ÿ€|Æåá¶ý0[à ±œŠÛ¹mÖyCO˜uÂJKÃm³Íê2r[:^‡Ü)Ì,ß+¼Åá#ë+Dp”„Ý9KÀ Y(åø^þxùÁ¿ÔÝÉæ6QLq7ÏǽÁ5u#ï8—Ë#1¢;À™ËÌ-¶†súÅúøŸê8Fý·ÆG3è¿ê Ãa¶>jüšjV‘å8q‡V!pWó§Š—ò¸B&ë;8Æ>¡á+ǰjF±þl¦DŠŸ&ˆ‘eÉ ÖÞ[µdv)d4/?±…%i#¶fkOŒU\$ËÙSièýl°ÊV›²¶ÐßHdB˜–kjp»œûñ›öÚvàe+‚æ÷“!Ï×¼èï_!Òµu,%“%ÉÞZ¢‡I’,…gÀï…FÜàMÜÌëCn’TDÐËCmž™ØØ )<Öú+üÀ¨ùö„qóNüŠŠ2—÷pЧ«²l?,£4ר$sá!¶ÀQ>ަpØÝº 9#²sâ1\ʯ)#‰ã1*¼ i¼TZ‡”=ý¢C¸,}ªóHAIl@³ÝwìQ›¥—+ZG£]wZððswd½ÛìÖ5a{l@ÚU’ªÎÁëwT:G¹ sx¤u°F…§uöä› Yå›Èˆ £×è ”†…åàèµl‘Zbß„r‘G Ù“Ä_aöÙn,$ICйÝþ®†iÇ©Ù5c•›'ÖÊa˜Nb5y*²@ºº0ì,)Úf?Ìm–½¬d6©¶FÙ 9F]1Þ¯ûIÂkaI¡(œ‡Ûƒó‚9UY¼ rXö!Rwäy­¿% i6FjKÅhÖ'Îd‚X72(r˜{o»)GM»ÙB$9°ŒžÚ£™–Ã`‘Ñ1n£ÁpUÐÈ ©B4¥H̃…hÖkõd1Á¬iw© #»,mЈJŠ_s1š"søÃ‰k”e”Bãkù8£*w¼0 ›3ªóÓF°eèS ©ôfctQC‰{äÑÒÄMóëÓ*·²åfÐ*ö-Ev4dª»yx§ÉC¤HqPþùÿKÒ;安ªþãÿñÚ²ÆØ£2ˆ‘“Vm8Ã.Åû4Hª£J»*1RNõéëÍÉ@7çÕíF£ßš´Òbd·[¯SN,±.UºkÈå{„ ÝYµç­‡«ÄÈ2‹‘  ÉM¸ç~‚(3´²èeXôœn·Uo!˜Ÿ>dÎ SA‰-z*ñ•e•`—’še˜=8ö’ÃóyÅ<)Ôª¯{3Êg­©ˆ%£œŠŒ•$ Iè0×ÇÍ±ç ‡­Am”–ê-Ÿ„$P‡A©[K’t·”Ú”ÃÄņM²fV2A†LPo9( 9šdœÃv³Í«±—X&Ð4wüh%ý ¦ëAg­Ù\P(àKƒŽÉýŠ9ù’ó1ÑI•…’íaû(ùvÖµQf$rM˜PãµTíøA3)T†C3´mgÈ›ÌYlÜ£:[ϵ¡Ê(Ÿ7y²qU½sp\­3'ÎŽ®ÂOÔsòõ”YrX¤W’6Gñ£I…ö$Æ]¢“«>ÊöõÀ"gÔõkS 'QqÄÐ]-?e9³M9!…ΕkãFÛÜÖUN%éJ’n{ÔîOê]Òm×úƸAY šë´Ñ‚ó7q×´[m§ñ›ÔwMÊ’p%ä–YÈå¬ta“œ…ýX¾š•”›“>ÓhÃcŠŒ3æ2EçºV³ô.S•çÉfõN9…„¸L,JeD/ fS÷ajÂÀR¯. 7?á¾F—¥–yWóRš§².½üxꆮm›k‡¡M¯§•g­¤£à_ïŒj}ÛžhvÀz»n·ûõ´Ði“*¢ŒmˆJÔPêáÁ”C0µ*éèeJGõ= ó*#`†ÐiÛNE7¹cÿÈ6¦CXæìâoP0ƒdXLÀvU®¹È箹lƒâMdÆ†à€‡ÿÔ ÝÑ€òƒÆæÂÄï8V«¸«ÍàgKU×m$ÃULöe2Ù}Õú£þ|“Í`²t QMws ”/9“î—Ä%9ÕÔ;·AÚ©&µ*âgÚ¹ºZâiÓK¬)N¶1b"j›‚)ܰãÌКZӿןxØxfÃÁ*B«Ã'X l¤K/DÛ†³kÏS󋘋7Š‹‘5ª·©á/xtj¾» Œ¨SL´Aü‹Ö*e¢fx|Æ ÷8×pû‰µJ ­[m"Vkšj¹ýJÿä*^yú¯è¬†Ú6âšþzv31aGÉ'íK³§RßýÄÞ‰õ~ÓkE Ü­_Ϩæ;y Ñ‘1zEæ-ë•ÍÑÏÕÅ­…‡"ˆ#÷øÒð°Á:óbªH‡€5ôóX¯é<Ð:…/JÔÊßûi‹Ü²?žZ4‡“Ñ@÷ ¡øýıûd4P#fê0P­ M¹ÍëÎBž¤§Rl@穌JT<õ…ñÔ}y‚ªöO9ퟲŽ^™=A‚öµz§”<ÕÌðô[…[)ÌϘiïibKá“¢>’\õ¶D¶7õ}„̦¶Ýívì î³}`v‰ :“¾Ô'™CX|µkE÷QìÝ ÀzM—-Žíž>3< ¥mæ9GÞ¼£Ö»€ 4 qÌ– ož‹sg9ó¦«ÐG¾#çwŒPíñGú³[wr‘R0È$},ÁõWõê¡Á!®~à6¹#.׎g”ωzd‰K½³çÓ!²Yˆ”Ð'YŒÖ"•G ÄÌ€´ò,TœeÔXnšª¬áùצªè-0<ù-¡ßÓÜy»KÅ$fMÝe ­-2ÑÉRËš0îà¨ã´ûL‚Õ}`®SRÌÜ&£õôM0ÿM$=f!®í/Á؃A{H¯ƒÐÕZ»ÏÄ\ÅN…È¿•på‘»5”€h)úЬQ׳ç%ÕÙ±žD5T¦ª’›ªÎî#PIÇ=Y©ªz¯9Vª¬£Wæø•—}â Ž¹ ‚¡z§0ë[ÓE9uh¶”x'(§üKnÓ¸–"æÍžéIét?“çËÎ= ç¡ÂÆ.ßD¶œiqÙÂJÝv~]˜z2s†ºðîp%QjdÉnÍš™,Xà1èô«å,QÄVË£%ŸUµÀ)gÚjj‘å©û# -’@G5­¥4Yª®˜]{7Þ´Ü·G1¬}Üõ³îqCœÐ†C¯'6_ÛîÝÂYTýN^—z‡adz©jĆ0Ðü˜Y-­ùq†Ê÷*Ïü5L +¹5ECå´®–¤b§-•£F{èlœ£üœj%N½Ã ".1übªKï2æÚö“| VÞ[ß夢M©˜[·—‰ÿïzlÒÍNÐs±ºtˆÿ•c´ÑXЬœˆÜ|$ú‘ˆ·ŸPUS3ŠÀRÚkõÌlÜó²nªD,÷»Y°¢„iVÊø{†>ù°˜ÍŽt–ÓÍ’üê;–?­âˆJž´’ȧI.ßÅz+6×4ÌþÄûöhÒª7='¶åt‡v»;$ó"Þ#£»»îíÐh ºÊ^1¾Hþóg7­lÐ85-WøC•t_f鞨JrT˜'zO"~Uì6Għã×iæÀŠÝ6œN ¥ÝÈkUâ¼X•?Ȳ“zçù9Ç/™¬å’[2¶¶Â'æšÚ¸Ùí“Æ,Ûj4Q·›cæ‹U„¹f§ ]‘ŒíÔm»ƒÃíÂ\Ž­=4iW*iîÆÊ%OÜñº=ec£td•,–™,ÖD*qIΩ;vËf^2KrÍf“5§!×’ºÔ;‡—f¶²´koú…±)ýº¾R*3ÂÀp ~uÎæÀNÜ…â_ÛP…çïbåÏgò…rUþ. ¼ê€ÉزÛ(ΨS7,Šx¾jÙÝX.rË‘hòHŠSæ¾¼k^âÖeþ}ø½ÉÈ7P`0$%Ò—\Äb$9|óò¨åšYÈ”µ¯7¢ïûŸ‡~?ŸöÏaÙ±€S?Ó/Nqç⾩öo§s7FTéM´WìúÕVîtkÇ}ã–'õØKv§ír“Äù3ŒRʌϴ%!NˆÏj´À¤œB|@Ó°å5³¥œ¬Æþüv ÍÃþ×÷ÞSBËæ¦¸y%»Ì½ËérG¶™|Nn”.7PÚŸ+²ÞŽûmêä§X¯ê¸Ú‡]+åŠDâI‡:J1_ª$Œ4Ì 3l¤ <àJeº*¿éŠ›¯×Ö«hOzUÇ‹G$_{æK‡¯i—¾Àƒj¤’µQõÎáuÿ|m¹:Ïi¾RQ"0`TÝMZBùaøð|lů‰‘¤A"œQâ¨wü crÚ2«Þ9~ŽGŸ…­ª€™J…‘ŒñêƒCy|§_š™J…ÓsB0I*_‹¼¹ W²,RÑmøÈScvרøW•ìXÏÎ̵ö”›°p?2æXlcJȾBöGE¯´(î­óÂ~ûÉ»AšöÏý2B8Â9Û?¹°ôN™Ï4JÁZ¦e³< ŒÍûSœÚµÆ¾{Ýíï8-»?´©d§Ãiw;µ.J ñ 2JG=×tòJ %ebQœhÕ Eq2F€WQœeŽâD€Û$‘ãúžá£}9ÿ«ö&yÚSÆ ¬œÿ°Fm3jm’*íIdDåË’‡Ó”„,H¢ÈÓ4Û3Ö6GƒHTއÉ<ÒÒ3/ð©´›ÝrÓ4Ù›K<ÚE)ðX½sp•¦þ8…P•ã$ÔÚø»“œ ³m$xi1æÈ×Âd.ÚÙ®·^‘©ÈLpÚ²FSö‹0«Ðxæù'ù~YßzÐÌ?fö°™÷ ¹ˆ;ÃI¿†ò—‰µãð(ÌóÖªGB<ĉÆÞ¾þðƒ(ïʧÒUîÜ"•5B R|/I+㽈J«1Øc´F¶õ¬¯Z³ì.ëCÓF“ñ®H;¦Q£žãÛ5†f»÷Œ±¨C#¥0à ±Rʬ0‰LòŠEZñž¿ªæM95‚i&‰_8¶]㌵ĉ_ª¤ñŒFA^/dÛlVEW Þ“ìÉ’UP {TË €l'rA?4ÑòÒ%£¤­Ó7)ý]Ééw†°"¥ëü8àè6ÄH(LMîÀ,{ßM&$j´«šÖý*ŽðÂ8ž\ðÌvYõÈ…Ô~d¡>(Sè8XEø¬Xf#’Î)¦vQÒUÕ;LЗHT\1Á—Æ÷ÔYe¬*&˜Y,"ëü•™ 6ꨎ‹œš´†¢ÞÙ©Ž)³\õÎKüšZbV^›z§®W¼ø, 'OŸeiØT2ÀĽ¼]Oѳ‰'5]`¶4YhÊãÒÆY€¥òÌÉ´nJ ¿&hÎ-ZR²@êå-…àMÖË/èþw‚üÎÚ6•>¼èßÙ㚊Œ(ha+ÒVÁûbK ŒÈ4™1Ó%i¼ÃÁËØNjÄaªDA®­¹ºá=J¨ñp„{}[V ^Ei6°~¸z:Ü’s¢m_ÜijžåtB‰KW“– áhCw6tÚˆ©0N aÒÓZýÊ–XÜ@C’öír5³ß Õí4'i³ßâãa7Ôôµ%±rn–Ù¹‰p®ufñçþµ<ÛO¼‹M=ž+³_†Ù/ë –YãQi°,§«wu>dgJ’ïò¬ùÅ*0J ¦â¹ÄÚ¢8{×.Jn[õÎáâO«Ó|OÇ?Æ?ß d«ûòœ¸™ßå"¥þí¤d¬“Ô„²~i€µ£¬Ob5ÔlÑõX—Ò’÷Nk3ñÛþ¤%}j}Ç™ô'ª/;ÜQz0®Èä{ðÌT'UÖWª@óò—õä y{ä¡ÍÈÌ[Lï÷$uWs¢Ì¿y©;M™ÑÛ F^m@˜®ôxæpPÁ?_jÓ{ÎÂB;ñÐçÓƒÿ|?~O$Ø-ˆ–©Ó6eBìÌòBÍa»Ù§l±T´¡¸#‰:B4}ÎŒØò ZJïJS–µã Ä’=P4Lÿv¸?*!6ËMFo ŠÌ"ÃyAÊGÖW´Ú\螺oÅsÙ¾~P µ›÷‚ö½ZcüÎ[x!’P“Nöë¬TUÌ T,+õñ`’ãiݸ9NttÒDñîdÁÇNkÒwFzðqk24;<•\mΣwÚB9·ÙÔèaj†®TªÐ‹Q…ü=uQGÎÊók¥'ç®Ìž‡—Í·ÆëÖ›ìÛWÖ¿¬»D 4¥püˆ*¨r±a'èT슇;Ãq§5ìëÕ¸kƒîÈn÷Ó¦;5DqùÀä¯W¹®TÜêq«}åÇT}ärLvYçîE³+&”Ó»UÂډЗL}ËK%A¶\•{¿X®â´Z·6”çW2êsΰل-1-H6,¢ÌO]1H‘CÓm k}6Ù·e׆ƒ~u4€¾yúœítP‰ó³¼šu2©!“4¥Ï!¦¨â/…CîÉ¡Uµ©È᎚2·>t/š;–ÚiVæ]NÉ9V,¾FîÔèÚ.™Í²œ2<Ævc2ñMR3žÈÃR2kcmÒµ‡vg E^Øa½5nQqf•;e‰‘ôÔå%Ê¢Í ¬9‹×D÷(4‡ìO”÷3•s¢"ªú†+sz)Ìi-NÞïK‹« ‚çð©¬ãWf>5ê4ì>¥§è²zçðÑ­q–íÐ'HU‚ä PÁmva@Åó/Q;§0yæ=÷\åi?ùÑÔ›ÏÝ…¬"…ÍB¯‚/7nøMTñ %x¥#Öj]q£ªºÇ[€rP][ëoªqQÄ;NK7&sŠ•’Hñïö¦´´¶ar€È“žêÂè¡ÍËï`ÙÖ, žƒM@ùªq›Ud~ÎÕÚ£™vTÚ-‚KÜ{¿`5»Ï‚ùŠÊ/[ã¯Ëyzá++ô¯®ã×SÒC1Qò·§œ†ÁÒ ãýƒH›²:¾3"1RaêØI^4[£TaêVÇn5:£tRÛn£¦ åõíZ§Õ­1ªàcUj'U–W*¡µüB+1Q¼µÔŠÓ¼§F6(ÎV9Ë3åtþœFRç¯)j-—¸,u6ŸSešÃË­àsæ¼þ–ŒÿÂEÜâÌN‘ ð„Ap9I‰ï—ÞÛ£h ‰ñ,vØ‘½¤ÊÇ/ ?>÷¢¸Ðë)•— ˜xTÀË¢‡zçm ´.°4¼“ܤB¯Wð¾õŽDd{!€¥áýνñ>^~ð/½Bˆ¥ha· ²x˜Ä«²ŠˆBå9¬ØW« ûŽMæ²/ UæZMg²Å—f·› ’åKs``ÖÌ•I…»ª@C™ 4$¿ý8ÖP £ü2?ű&À2,³Iê&e<ºBüVFÀ”júc· M|­¬q9y3Èx9óâÕÒ: ¢Ø¬üùÌß’ßK‘ ŒŒ_Û)ˆFņ]iÆŸN J™¸05 ss­%Íî‚ÍÎc³‹+\1˜2O,e㢘!¡\–ágAߊ!éG–»Šƒ7ö§hr|¯®ã²Azîeì…–çN¯ùtŠ~½W@'4šu4I ÁS½sx )ZX¬ótxvoý+7ö,ìY"1ÿó¯gZ½fA#Sä½]{^|¬݈t*(diS½SJ õ¤–tÆ£ƒ÷Zº.´Xt»¡Úvˆ„Û¹UÂNS€6ñO-‘·œ~»ëPÙ2E"¯ Ƨ;"›˜? ÈŽnWdœæÇäD·9=×$rf/Áw+‰¼Ô9Ž0;ÁŒsîI¯z$äDd¾2 ã*ziœkåvãNÃÙJßi²OQÓê¹^y1•,4€nìû¾€$¥ÊŸ2¨Õ;LH¨ ïn7'µaÕ*´kðî÷ÓEC³"x@—êä0A´â%o‘@"ì†ÿí)|E«*kT¦5*ëðU zŒ?¿C‹¾uYì.YÉ©.è{ üb×à¾ÅE¨—;è·½Âçê0íg´ªSî0ö#ÎÔ¿Dø+á¶1$ál̳ƒu±€6ª÷lŸãJÄö𹿆è㾸²þ+X…ÖÄar1¸@“/ƒ/o¾ËÁ™.ßÝ©#ÓjÉÎMwÝa£;d½ôn‹ƒqÃé÷ çÎüR&x>ød‰Ð½ Ýå5÷®wuÀزŠ„Àm¶%HØ¢”•Òä Ò%\M2ZKsy0-ü%³W]µ¿`ÒÉrè»Ú¶=l…æï’ý-÷Û{YsïÆõ d&m’N½ÃÐS\: z²ìïÉÔ{eØBšZ†ñsa‚’ÉN«¨„ÿ˜à 3‚¡xò 9Àñ Ôjê^ͽĤ†BŠÂŠö³wg½½›þ㔵”{ãSdiÇ’}bןȑÝè Z¬Tšìȶ‰3èÃÇ ôS“Bµ®ÓFª ‹_lÖöºéùö´›Äå½é-ŠŒRÍf¶Î1­lfe¶™ñž?8©ýùœÈÿt¹Ü“á¬ê2g8kÔ:TË_¿F‡ç’”8|Qe»²5G½SJ†læg²_LaL Ãî ƒYâ÷þðcoÖwªé«x4#—ö3+OÙÚåÆ?òMˆ 8·Ú€yrÆ‹fƼÏŽRØùý’»‘_1·' ž–YøÓ]X x¤WEÇØër˱õ3öžô.ú·åN§A8ƒ.6¿W·¼Ür˃@Åõj ”ºRIùÈÒ4Lz’®ª\”Š/IúsÆýîp0¤J*²ô×jLö€Å“iÒŸ†òµ${¥Õiv‘™Mš|§iVö Õ"Q=¦¸Â‡«¤¿&ýí){9÷•Ù8ÓlÜ´á@.¦}µºn^²øG&~ìV¨ /K¬ÌË‚þˆþªŒ‘Ñ#³@à F 'NlƒÏg KqJŠà;[ºSo4ÆìdûÿæÎÏúÙï«(þD)³ï™I[~-Â`d¿;a¬üB,“…–ò,VˆýãÓjŽ ô n6Úk„9&œ bÄhêûo&ü\7 =¹î/"íÒ4’!Övý‘¬€gžÑ•! È&.²Ñp"’ÚöÆo±±ìèˆ;¯i€ôãd`òµÉ„Cc— SbóÿñÓùj¦g¦¬Ñ îs;NÔ¬Ú©¢f1öÑ¡¾oכ¶¦à4ά$ÊÉDØî\wGyÖ–DžZâF~9 |She/tóx0,ÅÂ’æüiµ@©ÿã]ã‡^Î^ª±ˆºªÐÄd¡göJÏ™«Í­Ä®G‰ƒ ÷GNEkt»É‰ÄýßÿtúñÓùçóñÙùçm¼Ñ7ÏÇJ³ÊwŸ>þrª-¯t’eoçØÚ”¨F;ô\bÌcö‡Å“«]½ ãS¸á3j½ïÿ¢ ZEì¿ab_mî7¼¹|­FüŒLò±cáãÚŸý| –›ÇpÍTdãSØvúîBÍáå2Ux~Êsøµí¸=¥´f>æL¸SEö*á‰0ƒüÕ3[q lºŸ^»áË„ú¿ý›öOK•Š;¸º¡’§Gèöî­¶+æÅ•—c÷¾WPÉÚß´¬]:æØû{…~p=»•¯œš<Ú­¹Ùl+Çzf3í#‰E©B5YË ‚?±‘s?»¦Pâ^°˜!Š©~ÚBë-±äq¢ÆI}[;WzŽþÒ÷I÷™^ˆØŸxþ­¨ªfµâ n©ò>‘ó¯’Z÷á¹£üÓûo…¥ÑÙK±dŒáÍ®Yúm¯ÆSÉnJ¼š…î"¥ñÔòÄ_P„´5CiŽs2M¿ë_Ö¿>Ñ/öŠÇ›-N¿¾=jvÚ­zµL(G¡ÑàÿxxŽP#Õ3Wª¡òw¸r)w÷”Þª¹'À´Q,~Y«ñöotú¨oÒ¼6kÃ×N­=~ÝG•‚×íÚÿgî|z„Á0þU'OkС¤™;È/žö j¡ ¬„vÆ‹ßÝçm”á¦É4ñ´·Ï^  Œç×íHKY’'ù};Yòƒ)^4Á›VÑóû½á¨}Œ+k[Θ‘UA©m yF—v!uÃtY*Y°ã5Â}Ëè/»8Í 7AÚzå?D„¯µUGpcqG,+ á­wXúç0: ŽS×$Œz½¢’q@×ÑÚçAg®:ìâ½ìÚq "Ðs¡À8 ÖCí ÁeT¼A­WÓw´Q€ QtzqËÞVJn„añ0pṖñqçjæt¡íÓ}šÞÆýcø`ò˜¶8cøÕxó<]fÑñf«?N]2oCŸù^æÓDúIÿ+œ¦¬/Í!Ç_Œø¶B¯z˜ƒ³:Ëáûiÿ$—þ}­“ÊàpN[\‚¿Ž-¾ëa[IêêS.‡<‘K€Q#¢=ø4dï7bãÍß&;JnÄOP—ÓÔìþ{&?ÿÿì\ioÛ:ý+Ï—y@›xßfbÀqì4ƒ.F’0À²DÛl$Q ©¤~ýïs.)Ù’'q–iÒñ‡¦4×ËË»‘âa÷›çÜt¯Ýà¨4z^:ìýã¦+Ç’þK²Å£YÀ¨ì0-Äÿ±­djjç{tUìzì¨K¦˜¼f¥Þg7dŽž3gÊöΡÖÚöAÝÇRˆéPJŒ¢1ª˜Á…v¥NÉ Zº÷i1âRéK¦ôƒzF~¡ýA¡QnFǰRqÿü¨T.õv»VʲÆò–Ì6u“@o–ŒsY¦g˘øB/–±ð#WzìJw&Ý8år”„¶&®ƒ¬^Ù’Ž²3?Ë«USÖ/[<Ï¢õ÷®œ¾ï?€EíJ}Ðh-Yôó¸a8„U\2ƒGÄ©€M±6µfÊÀM­‰l*ã‘“æDû¦ëK÷µŒ»< xÄËw‰u.™Ôñ2õq™"9wâJ½ëFÞ\È3ÿ¨Tíôû£a™ØFÌçš²+È« £’‚}×,ÒŽ÷ý¨Ô(—ËÍj£äx Ì¥Þh4: #q—M§ÌÓC[ÚŠÁ0_ü%Y-9úKÊw}á¥Ãiœvɉ ƒG¥1÷t"™ƒ[Éû|}J¢È½‘D D·k„3Íù(¼+Ej©®{Tškw•7g¡«DÌ"”M… ]Ÿrv˜r- «˜Äaèò£‹ÁÜf¬Ýö@oÅJrܽkü§Žš›Ê‰«]'‘üˆ-˰FHuñ/% ©'÷]9Év V¤ë…u´Ë•ÌY½ƒ8š߈ªLMI`éw¡§IÀãb¥Ùeá„A õ&¦âv!m¬°IYÖüYm÷ËåNõøý Q¼¯—[Ã÷ýN½õ¾U¶êåz»2¨ ~PkÈp¢Dà Nbž­S¥¾Á{R(1ÕžÅtÊ=–Iä£RNåÃ8«Ñ† ÌjE"’4 ¢UiÉ´7§$|Ipa"ä 7V Þ(ã¢Üî÷© ©%Èp dà2´Ë j™j^½V‡¢¦š×®4[FVWÍc8¡S&B‡`)h0u¯ÁPKMV%]K€¡ ôzS#¹ÌÿFzil(½²AHCNÈxßK·ôZõA½^±H³r&9-¡h|ÓHT²N6vgKO¾¥ß5o˜ë·Xò*ßšY\¥ÏYä3Éü1¦z,™{…Å¡@â Œ–“×+/ŽÞæ—I¨ˆ dü%é1Ç>ëÞ@¬-… Ö2s|,–>æ–,¬ž/€° –s™n¢ÅEk'CÆJ oº«’Ïë%þ·¼å³¹>37ߌB?â:˜‚—FÉà“á:áëÐ8ûã< AcnÝÀ»®\w«jX}Ê‘ˆ´¢•ÇaÀ"RËK}Íû‘ZËòT®Šé\ýš†ÈJǧþP‡¹<Ò.²Ã9)B£a…54šd£µ'Óå‰@>ZþÁãFyYîý“<ÿ•G^ø¬ ž þÅg° gA(ù‰ÍÍÁúvàåÉ.0¾_«4`¡[]õ·ñ PcFh‹îð2¨Á«A#;Rïu±×§sF¹Xbn»7Zz'½•gMpk|‰—ë¥:l´:æ&9]Ï6½¤Y´!~öS¢ÚÆ¥ùP‘ÙœìÍŸ¡÷÷B7Œø› “ÈY‹àèuüã­®±È¥óŸÈ¿ÙvИâôˆÚtϾ•7º7vT9£–£…31< ø¨A¢¹ˆ q_.2%É©V«Çm©ÛzãüßÄÇ$âÚ0ÓQs‘€ËÄa‚$ÉÆl ÅaÞ,›I-t° l~u`v@P¼³Â4%Dm Sl4‹ßÎßÁNnÄV³ Lˆ‰?*íJ» ‰ îŠ?eÄ2·Ã!«Äš }r?ž6BÂk´ÿRôRè¿]{+€oCæs¦Â~¦¤½Aî@Dnѿ׃¤> s0yïg½CZb£›e@…äÞ^rGj ‹wˆ.’Î-t¿ ù j1 ûŠ»ùÂašGåÓ–/\¶ôœà²Ãcîs [*Þm.wN†êÈTÈ P;ϸqãÊsÝÂÀq zˆ³yðvfJ9wM³Ý @z/oY†O‹ÀÇÌõ-L‘ãY1â*t啹kî ܽJÓ·[Ìß/…W«u:íZ»™Æ™’†¸ z‘„èr±dd#á“ìjÚlBrwšy¿\¯“ Z†F÷žlÁÒ]ιZÿ!S&ŸSp”jKا'!½Cpã*ÇjV3Ÿ¢°9 b o©ÅtL–Kç_„âvð¡ãpÐ&R1D¦ÐFk|Üø&²ñÜÇ6‚{OĤ=Œ¹À³$X0Ã’wà\"PœÍ @˜GöÍÄR˜<:tؓ𶖀^9àÀºã,‡ÞÝÑŠGΘG]ÕªY8:aN,¤v'x<ÝàQ`“ÏN†èxOÃLk‚ÚÚ¥@9ŒñºŠ4p{…¤ˆM¬ç¸  ñ4hänà(Íbå`P7ZP‡E‰¹5Îô[•-¯~JŒAÍ Yê?^žÁ‰0BêøÂ Y™H®1mi0àº]ß· ~9Ê“<Öê?v .Y#üefòT¼³d’Š"”~4Ò4ÞòáÞ‘|bw7ÎW)‚ G¹×´í¡çs1­6Écª5–_> צo«l!P- 6!ò×\ŠÈˆkWr#p.B’m~Ж)•ŽLÉÓqÁ-ç·«Åê–¯Þ8€ãÅ DŒÎT2£SIìCÞ9¡ðùtaxËCÈx®É’.m!„+bTna}s”ù…‚2o¥èT»Þ•uÕYåœÉöÇÆ‰(Ø<’žä V–u»ÈxPÕæ'/tžvÓ øý9›Â ‘±€Øš§•|ûx^‹1ž’žI½"•£š£{@Üó(‰²Tdz ÂÐßàÝ–J§Ü$ï:Gº §JizᨔöÏ>¹4-bª^³'AôZ~Vée DBc›ã-¼­ŸöÉž¬p?O/´*´3Yþœ%:}WÀÄk}ÉŸ¾8Õ*§ñŒæ:`㙩‚E<•ܼ/€gÆχ,ß‚­³ï‘.L„¿0‰lÝ{ÿÿÿPK!®TI#æword/footer1.xml¤”ÛŽ›0†ï+õï 9l@KVÕ¦T{u·à¬õI¶æíkC Ûm÷pƒ‘=óÍ?3ßÞýæ,hˆ6TŠ Ds"°,¨8fà×S>Û€ÀX$ Ĥ 8î¶_¿Ü¶iiu༅I[…3PY«Ò04¸"™9§XK#K;Ç’‡²,)&a+uÆ0‚ÝŸÒc\¨{$dÀǧ4©ˆp±J©9²f.õ1äH?×jæè Yz ŒÚ“cÃõ€‘¨µHÏ‚f£ ï’ö‚ÎËà¡'Y\‰Û{î$®9¶‹jœ)LEÕ%Ò\ŠÕ ©y-‰†³Á®UÑroLù-=ØiÔºV\€Ü•b½g}|/]ý—Á×’9wÄ#F o‘ðwÌA GTŒ˜•æeqÝ0|æ~ÿвV£E?G{Ï#ËÏä;”Áu7y/S3ïLF÷±BŠ€€ãôá(¤FæµÑ2ð7lÝ;¡‚6uïKñ3&y%1¶önä \äñêþû¸¹#%ª™šïýÖ·xïâž¼×]€G{bÄ!Ä2Ki‰¡?±è`ÎëpŒAÚ‡RÒe¾\-Ö£éu“ÞÄM•)››Mò“d¹Xy“på~”—ï×îëžÓíÿÿPK!RÛ5æö†word/endnotes.xmlÄUMÛ ½Wê°¸'ÆQUVœ=4Jµ·j·ý,Æ1Zà Àqóï;ØÆIëhµ•zÂÀÌ{of˜ñöî—j’“°N‚.H¶¤$šC)õ± ?_Hâ<Ó%k@‹‚œ…#w»ÏŸ¶].t©Á — „vygxAjïMž¦Ž×B1·T’[pPù%•BUI.Òl™®hFû/c çï+Ó'æÈ§æh`„F® ¬bÞ-ÁSÅìskˆn˜—O²‘þŒØta  ­Õù(h1 .ù h\¢‡EqƒwðÜo•оgL­hPhWKs ã½hb%^ ⤚h×™l=ã›B~M ö–uXŠ à îF2ÊÁI5CB}/Uý1£/3V$@L^#áOΨD1©'˜÷¥æ:¹Øyßß,´f’cäÇÐîõó„ó Êè¦ï¼ëÐÜ›f­ûX3#H¢x~Ô`ÙSƒŠºl„Iv—a‘t¹?¼tÂ0Ë1G.pjŽFhÌUUÌ»%Øcª˜}nÍÑ óòI6ÒŸ›n" ¤µ:¿ZŒ„BH>º1ÂΪ¸‘wˆÜo•оϘZÑ Ю–æZÆ{ѰÄ:R:½TÄI5ѯ3Ùz–o,ù5=Ø[Öa+®€3¸b”CjB¯]ý1£/séH€9¼†ÂŸ9#ŤaÞ'ÍT\‰¼ïoZ3Ò1òch÷úyÄ “ùftÓOÞ´4÷&€Ùè>ÖÌ’(žß5XöÔ £.['áE’Ýd[$]îÏo0Ì2– I–Yd½£Á_\GåCA(=lèþ° ½i/*Ö6~r Íwgǧ‹¾¬ò§wY—72ˆ³Z?màÆZ$ÝmÓ1|Àˆ¤†+´‡>Iä0IMsZCxÜ7ëç ½Ôm¿1cÚ¨ýÿRÜä÷eAq£Fn÷ÿÿPK !ûÇåó”ê”êword/media/image26.png‰PNG  IHDRS]X§º pHYsÄÄ•+tIMEÜ  Í’ô¤tEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/05 18:30:26 lim_j SGA250167Ú? tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì½ |eUy/¼’dÀÊ ` R«H2ÓN£0^?ðDëeï› þÞØ+Am}ýÕÌÏVIέ´AÇëܪM„VlR¯wòöÚ:ÁÚ´Ì$­h­s `ù°!ïo&A­½Pª00¶"#“œ÷YëÙ{íuÖZ{Ÿ}¾÷9ç¿ göYëYÏzžÿZ{ïÿyÖÇîº{ùé?wêÙgŸýÁì[—½©ÿŸ~òä©S§Ö××766 ÿçóßx÷ßþ̧oíya¡ëÑ/ðùùw_{äÓ]²”û×}ÿþîO_">ñ ø-út_÷Ÿ/úxäÏ¿ñîï]¼tÝâïØ÷Ø›÷ý_×½Füý-½O\&Š}K—¾FˆHRüÛŸ_KÊ‹ô Y½öÝ?ú%/8ùŸ‘ÊYà³Ïýô­½E$¯³8×#ù/· ükNWTLöW]¤œŠ<(”kÒ¤Pg ß}€øMzð;ïî¿õ??OˆóØN/ Úœ €À&uœ¦Ž-[¶t}ï‡?<ãäÉŸüä''æÞþçÙÿóûÞpÇÁ¿(ˆBAžÊÏ‚<66DÏ(Î)KIЙ<ºÔŸèRÁ?|®²9±‹²¥}*iu(=a}:£«»{SwW· ?AŸ¬@UF•Kqþ T°"ÖEyJ«üàjIO—Ô* êæ:uÍÒI%" „Õ?áÁŽÊºCß0ò‹ú,òQja8ä‰*”7UŸ‡–¦s&YNºº%üGÖ…˜((‹TSѺjú êWR©Mô¯¤XŽ"7¿á)ãP&hŠ;껢}ŠôÙ!kaýªVÎb†ØÝÐYÖÐǶi U¹àćÍRì‰õIê¤ØRh…–¢Ý OXŠ«³¼(vW¡¡*áU-ý¯œgî(ËPXêB›#Ûµ5ì×G JÅ\•ÁŸ*UŒŠL‘*ˆo"êR€m¡O¢ŽÊ(.b~†õ'ý€êIÈò‰¥US6AyÔ&Ô˜>+˶‘î¥k%z¼ã$ÓcÉ "нYV¢W&ƒn6פŒ\;1£NmAÞÍÏÏÇõÉÊܿ뮻^ûÚ×ÖÉærÕÞ~ûíäàßýÝß}ö³Ÿ¥²dØÏÿüÏo¦h÷ÝwßÁcgýƯ¿ó²þ_Zß')VDô‚FêsƒÈÓFASXß °Ÿ$9ô)ãüŸÌ! #Eê˜Z|G3Ê‚Ñ2|Å¥1÷’ÑDªI–V*$»b³²›ŠH[`Ç´¸„Ò¥¬à@ Y¨•ùDœ”ŠxÑ_Pƒ²Kr#­Gú%K)•»¢ÔÛ‡2»K§eŒc¢ª°týÀ…U Rp&jÕ… ‚#´\ê•Á%cu›%ݧލŸª*P¬ÌÞ¨O…*D©¬Bþ]Ööªø»y=èk@'š¹TŽ¿Æå&Td鉓L)fO(•gƒ™^eq˜·®ê•{ÕêDjM· ÝÄÖ‰ù•Ïu )Ô)¬Ð SÒ¬=Ù<äf ««P›Z)VCs®ûINé‚®×eKÆH™âí„)ËÖJ¬*(RµijI#cU]A‘ Œ÷)«jêc|xUQVYÚH‰–¯Uïõ–2‘Œaïúûû)æ÷o|ã¶Ûn£²›)Ú÷è£þÍw¾ï}¿~Ùë^¿®"dD$ƒØ°‡n¦DDþ6o”ª(…b%Šnð?ÊeɪB“˜=ñ7)¯2u¼*d~R^q–ÂF·Rgá R¥¨ “)’L«[”…A=Zk“Bê*H̉™Ÿâ>š-’á1•®äùYPö(PX¨0Š(–LKpü£†\ˆ µ|(¤òŠM*åÄà&ÒFÌO1WMà”gÑÁçÄê¨,ÉžÆüB¹f&Ú ¿µa*wâ¸ìÍÕ‰ÞÜäê’s¹'Ë´Mn½oúf§+"èômŽ[œ×°»ø›mm–ÕMmÓ4èˆnhí»•bu³ç˜çTÜ’äb¦×^}c³ëQE{ëÔWwz7õ=$}‘lJš¿–î?ä‘?™‚›Ožª©1Ngzóª×`ÖåúÂúk[‹×»T!ûIñâ¾n5£P÷%W@Ë[½.¤Läg §¿{Ö°v×È ì1•ÔÕ6×Z7Å´ßò…¿Îl¤ùi¶µ›«ÒYº½¼U¸V!%Ëèöe#­¯Ü7Ì,·‡èþcu®Ýç“þb/‰›©J÷Æ’¥š%ÀÖÖÛNIúŠcXŰWoÞozÝ¯ŽŒ‘tBñ¿û·«Ø˜’9¤Gä#fü¯¶“ i9­ËR¤yD êôç|5ÕÅélVzœ/Ͳ§õÒ­­Üû5ý¤Fº:-#]&¦dÄ6Ýdú„î|£àóÓ„KËèD³ %²çê,ï×&¶ª. à. ·] ëÎlu'-oöv–±$¹·˜b¤ÛúZ–©m l]5õóȼTÓÔÒ0ÃÒãÊTc±±Ï}ö“Lûþ`jM£Ã­¢V)TGþN„ÁÚÒ>2U†jJNñ.Â]ÇeüÒþËâÕEŸ¥»ëæ òë Ô*YTAM£®Ð~%ºLd’©ÆÑëSÕšj+Áª ÷ãŠÖФDeó;îÖ̹,¦Ï“ÕêfJ« 7ÎHVU¿zÓ˜š Nsmcû©¿Ñ‰þt»Ÿ™«]6åÓà™VDÀº²è+µ»NÔ}›OÌÎl¦ãZ²A(Ëf¾.Ê-Â]Y¥ œÆª ü­•åúNUBŠöMÝt#ÍŽ£ãýãûˆV£-<¬LŸi„Ë•)Áü[ººëÒënz€¶mÞxôšÿ÷Âî«ÿ¥Ü*<ò—ŒË—o×÷>}Ç×é¤ÎÙH]Ð=±ê5«Hcd²‰_lëîA)ºßò‰û©e¬ÎSWOM ëZ‘W9×^A篠ˆ×obÅÊK‚Y±¿^;+H¬Ì5¦}ã×”hŸ¹Ò¢2mqfób^b™Ï†Ó„?J+RAzìh¯ÔõØÒØà<…Àˆ•ÑExÁàÁƒƒTPKý‹HêwûÜý!õ ˆŸø×£· "€ªþó>§è%Ñ΀f†|ñ±ûçæ¯:ôv™yþÀ 7w]'±A'ºxÿÍѼ9¯˜×µKÞ~¨˜ˆz¥šX•Iæ}ܵ:.×¼Å'Èh1WsǦÄÁÕ`@Ü´yO×÷;>ÑÂf)SF‹±V)íšYEƒýEuÕ ÐiÍ[Uá~å²úS˰¤îEÚqû•Nçžo~šeMZ¦~îd_s–¯¾dÃrq£ÑÞÿ½ôgné¬]sïu•yMôîcû“§îýàÇiz}òWJ×[ýU¦Ü,EûÄ=zW᪑ŸGmŠZñöëï¦aÚƒ;xáîñ‘GJ5×_/hõI$vî¼eׯu?«ÜÍxpêÂÝ4 û9 ½I­ã‹Lw]·ó®;Ù㌃ë÷‹M; ÷y‡†%õÛ}àþ©Á .PÄï>é£ÈÝ£‡ßþ »ÅM÷ÛÅœz… &s¿êZSUŠŠŽÜBáÑ„0¡’õ©€£Dèêíq° Šƒ¯ B¡&.àð`צŸ{Pj•µÞôÛŸóe#“. ¡öqéž´áwß~ðð¸TAÀæÜâæXztZŒ_š?ôh!UØ—nÐ|iñZ_fúþÎ)e]~ú¦ŸPJ×[V&k¶\(Ws‚µiTÕ϶4µ—”!ï4> ¾ÙúÜÛ.Z¾d-hQ¬Î@^èÛ÷ýIYfÿ±úRœž…%Îl}¯ ãdÜôÊJ¹zꔢ[ÜÕß\Ëõ½Ë5Ì›Bƒ€Þt3±\–B¢z7Lü>'êUfJIR $1¿$W"ŠEjttçÑï3ó»é~G•¡¶ iwe0?I×Dag÷õaµ¯ùþÁë>÷¨xû o¹Ðæl^Ë4õû~Dü¤ ¶ýœŒt]}Q­€IÚC¬ò`ªé…Þú|‰·_yáí*x¦¬é1:  â±â[‚ú!â©*ábØ<æB!™_zQÍ—\~S×Î;¼î’Ÿ‘Äï†ÏÙfÙ&1ã£Ø©:®"ÕX7¦šs^æ9ÍqÙ÷Žî_ºÞ~Á-Êáÿ˜Ã½A“ ys×å¬;{Œ¾J’õMSßVÒk1í·J%d%ë¯ÆSs‚ Yɶ¥ÏµÀ4ïæúfg6´6ɲMËpºþ$K¬›¦YEz;!™ÌF·ú?u»în–·³i7kÞù¹:Ò¯-o<¤ÖµÐx¬«Ç$Ù£&^ì§v¨nÞ\‚ Ñ ïoßxÁB'õkš>híÕ즔U;±Uat‹x’´Ðù;¯¾}7­ŠÐ—VEWÂíG¿ª|ìÑ» Wm§(bÌA|):½ Úv×+ÈôÒ£˜j™Íõ[âÅV—ŒßGË.Ôæ>’ö4°h€·hL·HI ±p½J*ª'»PĉKêG3iáÊ|8¥ÑµL¢¨^¸æE.°I<غ&e£Œ¿œZÿüƒtí¤“ag´Wk¢\>u{2uÁŠº™G!’jŽ€~°fúÊ)æ‰Î¢7]7.géOS!ë´ª¨¹/PXWÜû€{][—< Ä}jk¹Ï˜ÚܺjâšÙk¢° ”Tƒ‰¾Äá`Ý âÄj›~úé§§Y?Ë{»Ðö.3«­15×öãÿøŒ3ÎpÕ&1?¢]¿}K×.•Oy¾´¸%|âߨǖ>ö¹ˆ–5_ÿ»L$ ¹jdç¼æV-˜8R²ïPF­´µZ‘AÅX¾a èïŠú]¹Û0ˆ"{¡FÄR¬3ŒöEƒ–\N±ÂbŠkJ)c—“FHJÛ°ÅBáWÍ“w~àm¼HÅ/¦Fk^dkÈÔó_xYWМŠr40²®Fn}VqÉøÆ¿,ß~@¯¦I®/Ê5•pªy‹O«EɹªÊ*ž,l>Q,ɺ֛lç6Ý6o“釟¸_õ ]ßúÍrÍ`OµýÕJId²†€îÀfO6;•uÎWœþ$wø\_¦ÎÍšËÛSA‡×—UÅ•¦)¨¯Ö4®LcŒtëõ¦1^xá·¿ýmone‰UâSY¥ÞRtuüó?ÿó‹^ô"77‘ùÉu°ô˜ïÚýÂàÒÛYøí€/]uÕÝ´ÐBn{R8ôˆü»JÌ](SeT‰j2fwóo*Q)üš Ù5DÖu-« DÕ2½Ä@d’”ìŠTG¡/Ò©"†‘MŠÚ åTVuþÀ”ÜÍE™úÕ‡K)TÌÑ'æóÄŸ¦  Ý^LkXÒÍ…ÂRYŒ»­¨vÉã’ñGÿ}ÐtÁŽ52)ôþ57ÝÌ/1m æ§%Þr‹u\0xÙó©fû±9Aï1þÑfrAÂ'%Í7J1ë­@3÷–*Y¯·%VlOz¯+¶-Îæ”éú)Å'Þ¯:KßúMa+‘êÕJ´ Z&¥Uk ¨YÍKúLø2tõå©OØY-Ù¾'ÉÞ½Ò”J–©In¹†™•fçZ¾øâ‹WWW¿ùÍo>õÔSda\WLŸ®ûaM´¥¯×’$w¾õ­o=ôÐC/}éKÝ–êÊçóø£?ú#ëúq{†.,—ø¢)s,*Ci1‹/\]H ¨ lþ©d©I®³qfò•ìÞÚÜg¦xÏu¢[6eÕˆYeÓØFÆ5©²R¦ž4Òȸ¶¥IaÍîCW—å,ó“²ÊMÔEL“*ëŠiœ‚Lýp»¢™¢»ŸÄ}’yº”–áþ¬¿&~5±ãUPuE*@©&µx•x+°°dšÊDgmmÂcLþJ©@ aîhÛžÿüçS´x-U½iÓ&ÓfJ)1«Ñ’æ¯*Be‹C":µTÊ.Bá§ M–¯:üh9A¨²ë«_ZÀöàÁ+ço¾ÿà ý!ªrlì¾ù·/‰v•£JÉê>âÞ—9×Mw¯W¦l;Š'k×D¡¶ ®@¡éfÅS"P™mi”kûÍ*ØβœÒ‰,¯?©.’tµ ¦NNdù4FB&;¸½Âì9|®ûŒÕt‹ë®B~Y2¦¶:yívÅ:UTµ¹Lj‚‰W‰ÙjHœqúuÄÉÔ$/š¨J¯ä'?ù‰wñJÌ/}eõ—¤•…ÂÁúדù Lc±±ËmKû@»ô]z]¸Ø÷ð£N¼¯´†’ú¾oÝ õW-PR•% /'}§(WC‚|ÅV%è¬UVFl#Ø­·ù•ÎÍçsë“Ñbf¥[÷µVBOÐýÄíl•ÕI¸{p" p÷àîçvžZ¹fõöZ©MÖSY¥.ɵTœ[™yVufSVlIe©j•©Aßp*S›…R´rÙkFìho@èæë-Wu¢ÖOšêTEÕ6BA]Ðן¸—œ•î $˜•F8Œ[Er©ä\W›™RMYÖ“¬!97Ù¶4¹Z¿u£Ô_ù$ù“*òÊ›éÖ¹û5µi"nW´Rè«EàX î“|á,*eªrÕÖÖë&r‚ ª® HpÕªKO­Ô6Ñ#«ê&zÄ–QÌ©˜&d|BœÌ¤hA1õOJºf)ô¢o²Ì4jM“\óÌ*H[…^«¼‰&J¬¹¶ú½•¶k"õ?÷I u/a·T‚pr½•¡­­M¨7Ns=ì1ëbÛ*0,Î`+½¤ýT5Ë$|²NW’Ò91¥1Ë2îeb¥¸})¡Ïp—f>ï„®¢/d ]–[¼Ût³ê{Ÿ´¿Yè¥ó#Bcþ¹­¥YsAþ$±8Þã>“3QA“í±VÅé^µ®N­Gg™–“­GÛçš›niϦ ú½š;9Ѽ¹Ó9_Ïæö覥¿ZéÕ`È•Ê&.xûN5º+)Û{jˆžë¡¶ßÌ2ïà|³³>Y˜ Køäfâ*¬›¦õp CJ6Э©ÍÓýÓí¨iú†î Ö‰ÙÇj…¾ox{~ +JPe] É’”[oSk‹‰ë›’àrM²Úøö"™=úèo=dC¤ÔÕéFOµÇ=®Ø¯äÜßk’¥ójkŒm\‹×óyl x¿²*nqÐ)^‘ØŠè¦7û74?é­ncù¨eâô¤¹]´"núº(Ëø–ã1–ÁÜÜe¹\áÚâ¦ûd³nh’ù1';¥Â~ô'Éß=\é §¨Lwј©—Ü0mÒ$É<1Y4R+s•‹Ñ UDµpØÏdi&caMùDjSÈHü*ï´‰ LŸqע뢥22[ŸÚN>aãe½áŸÉãªFºFÀºÜ›µÐW¾+ãÅÓ|œ¸f½)²Óž8µe)´ÔÒ× Š»–¸)ú™êf5&…[ÐúÔîëtN1›››²Y÷ÊÆ€ÓáµXÓºxõWÝܾDZ]¨½!Õw‰²® .UV‘æÂ¨ïܾôÙãkŽ›éW#Žb~’ùÄú†X?%Ož·Itw$ÚPÌO1#ÞæMoö¦Ù’¶X³/Õ<-“瑊(•áh—cÖúu†ˆT!õ(]B®‚MQ¢’¬MqJ>÷Zë&RŠKõŠuK.(5«<>ÑŸ”bBQ侤@@_ÕúÄ{ƒÓ‰)TÖK¤~6ÔO³ìŸ)â¦õ€Ìº_—üjÝMyë.Ü,êR‡ë¤Vö^ï‹Îrï &h%;CIÊšÀêÏ•)iX©Ö²Ö \ðÂb%º½½h´÷q>b~ë’öúË¿Êÿý=²¼bQòßãñ3% 0˜'"dEá=ƒ±¸*£ÊqVX s(I¡´œ> Õr)Í,•®^i”ò²?È?¢}ü“ê8Y Ðaò2]u˜)óI t!rœ2”1ª¥_•å?Nçà¢72j¨Ç)@ ê‹À«^õª·¼å-ù3vu¡Þ 9ÎK]Ý…oÜuÏ'>´·¾A;@ €@}˜œœ$ægéæ¿©—qè0[}LV €@Æ#ÄüˆéÑè†ZfAPŽ&¬‰h¼™¨ €@ j$óã1¿M›­´è¦?0¿ª‘… €@d €ùQ€6@¡P߯&ù·© Y  €@vB `~ö£3½³$‚˜ê×Ní _€@  ø^0ÚKg4ÃwHæ ð@ €h'¢˜_°¶C9GçXàÑNÍ _€@ @³ùhh—æùñÆ.rm/˜z@ Ú(æG®é©}Dþók»¶†C@ €@§#­àµVt`G§w ø€@´íµ]“Â! €@Ä Åübœ»î½ï™“'7èµÇ8Úîîî-§ŸþÚW½¢]Egn×–…_í‡@Ûߎگɚî˜_mšàoܽõ¬³r¯yåsÏ<³6¡%Ãüèé§ïp™ý ý—eØÌ MCg®8Í@ ¬Û~Ô5ê™á IDAT£‰j_g•t̯6M²¾±ñŠK^vÆ[žyæ™Úh„– #pægPsùoÿ.Ã6Vn:s娡$h8éoGøQ×ðÆ©W…eÑ}×0?“JR …™gžÚW v-XæäÉ“ÔÜÔè-h{i“Ñ™Kc Òߎð£.3V­!éé¾·&¬ðð‚D €m…ÿ¨#¦ØV^u¤3éé¾0?/,H@ €@"æ×† —€@ àE 6Ìo!<¼u”LäÒ$F'%…+¨«òb«:xà 7|ÈH¤”é¯þ 8ÁŠä+ö³…€¾4Ìî—¾+êK£y^¡37{Ô €¨5`~ôpQGúGšöEߺu+é¡ÏºiÚSså‰vžþcÿ;žËýà«_~ìÍ»~1Ð ¿]zéc_.¢†‰Ú‘ÙBð¥a]qýÜ"ˆ|eÅ 7 tæF!z€@&8~ÏŸÜrÏñrMZ[”e© TSAùtõU¥\™¸¸fդܮ›ÁéÜjŒTµÌy=™N¨£2v¥‹“Ϥ¤¶ž›OÍš+O0õåozs,—ûÁò·ÎÓå/JÓ7ñò]»^.¾µlFt#«ÅૃŒNÃáLóÒh¢ÏèÌMU†" éÏÜ㯽.8v‹5› %›³¶xÇÑío¹îºw½úœs^ý.ùO²|Y¹ÄØBfV­òóÎ{â®bV»v÷‘Ç˲¦u…«e~ä9?œ4š]ñ@•à 1NgyΛ›ãKØÒàªbmæg¹ÊµÙÚo-•4ðO_þ¦ó¿ø§¾8ž$~}aÀO(â×÷‚ôúUsýÊ|ÉwÔ¶:oçËû¡¾4¸“›ÝÛíüZ†ô Wh?:s…À¡¨ ¾»Ñ—j£ºHËñ{9÷-× ö„©ç¼úÕú×ÂV)•ÇÙÆ&Y¼¶¬VþÅ«uù†?ýjߘï©âÝùÅóû>jRÄï2þGÔïO—py±pYB¸–\qÅt·55RJ-+"¹ÇÒ5¢/ ¾^8è½ È0ó⢯¬ÜFg®móAh ¸I_ޝ}|ûk½TbsALŒBzŠRî®óúÏ=rä(}9¯ä]¯>¾xËôåèÜ-Gƒ¯wGÉDÃâçõS£*Qç\V&ŠíâèQÉ?«#í²Êà)?|µ•‚~Ûl6zÞe¯sw¯½šYîñ{îz¢÷k?z·)'=‰4ºÎJ…Ž˜×Ó(‘=éQþj7½x³uú¬ó#s½,Ÿd4ÜqØôO)S'=ç©ôʵ¤k›&…•¢¯¸ß]~µ¡à¡ešâ§"â'dÔïf)¬Ã•V‹r5BÀ¼ÛVLûtŸôv§’=V_%/(³£3ר @ È 5¹•vư[[œ“±ÀwI‘îOî ÛãGäÀð b@’E ^÷ñ9Q‹ŠËÒD“ìxü‰óF®TDmPêfŠyÏeï*V®¡ÓÚæ¬žmÛï8¶6Ø#Z;*¶ï>GèáÞž¢ª{Ô˜µí,•sļžRâÑí#×½‹”¬-ÒpuÏ«¥¶ÈÍ$4ê’WGæg¯Kòâ$Ó§³N+摾¸–tmsSÊSû‹»Þüå›>ô«a)¹šƒC|*…â=&n¾á‹ZëòCWÿ"¨_y ×Sšï¶Ó>2Í i[Ý©úKúMqçŒ:s={ tº#Pýí¨´‰?N|ÍŽ?þ„cç¼úµÛ „Îë¿L*"Qâ®ãž’ªB*~^ÿn%¨JqµcÎÛÞÖ…Ô΋%‹UØÖsYÿ]‡%;~÷‘s_{Ý9˜Òè©Úç¬%æõTZø¸ U²ÃÛ·© 7c€¨U2íàÍoœêêêb’ùmAo¡¢¿ ­œÚ(ŒáŽ=•£ „,=] o"‹¥ºjÝ~0»é夼àòw¾yúæÿý˜8ÿÍTL­í ×vˆ‡–8ÿ͈FƒðÕé›AýÊ·²ÕÐ>¶/rÕ¶Ç&ÀΜ²€@« Pýí(ÉÓsz¶Ÿw$ƒ%É5$ƒwZ+Ò#ÃŒ‡ëR%ù+Ó–£4Òk†SVRLšŽn”·j¦æ¾ËÄüèoÝøã””•ñt:z®èdF¨SªÒbº¸9@æM45kWW,ͳÌåoËKîw>'¯íPÄwDhÀ÷ü–ÍmeøÞN¤ì±är•ƒ†ÎÜN¾: CrGï06<9~Ï=ÄRÎ9‡–CcºB3âŽnßæ &CÅ?r·*.K¢çœwž 0ÒA«+ÜòÇœ‡žåìC7;L©Ê6ò÷Ü#wQ˜Q©MYµ+æõTYh-$6ü¡°!/XvOâ½®.'ˆùÕ;U(˜‘@JIÐcI?TtxÃM´hë÷&R–Y\[¢u)³¸·”[Äcƒ½fXÊSò‹W¬hÀö—}ìr*ýÐÁo½|×X¤Æ–BJ¦®‚ÙGÀÛ…¬Îf2oMßiYR#w¥¤†Îî¤èÌ©¡ƒ hAhæÚÈy2wË-l»\¸Ag=ƒ#ýa¢L*‹øÉâoÙ~Ë·½£´~Cé–,“…wQ­‹“c¤çmߌõÊ™yw„+¢9ÁE4OÆüN­‹õ ñŒ$~<ßOlêÏÒiób{ºroÔ¤y¦¡f €@ ävÉçõÛ+H*Ñ”õ2YöT1¿gÅ©Sâ™g%ŽEøÎxŽxö'Í„Ux±ø5)Ô €@ ÓÈðWø‚ ì¬é{=²åxkxº9—o}§X_Ï<-#~ô?‘¿SóSD°‰Gk±= Ÿ>ýôÏ8cËÉ“'›ªn §Ÿ~:5·žÛ˜JV :sàFE@ zZáv$_µ&÷°kÿ£5<Ýœ¿I|â^±±.~r’8_Ñ>âëg(ˆ#=›6mºïÁü—¾œÈ_úRlQ~üãg¨¹©Ñ[Ôþd³Ñ™“ñA.ÈéoGøQ—©†«Æ˜*éþfñ³¢pŠó­ rAo}n¨?éxCî5_;r÷—¾öuseúâl-èÚÝÝýû/k-³SZ‹Îœ(ˆ, þv„uYh¯šØžî{«“óühWgùG#½ôÿ¨‹¨Ò‰íÊJ{‰¶C¹íšumÓ ÒÓ}¯Ë’ùјUWWaófí릠ŸèîÝí9å‰@ Úü¨kÿ6Ná¡b~›åß–-j—"’ n–98€@ ÚÍâE’äÕ{Îjq…ü bóiâ´ç´“ð €@€‘½Í›$ó;ó µ³šæ·¹«ë´Ó€@ €@[! F{ÕßéÊ/¹ÈCòÁÂiê@ €@Û 0¿n!NS¯ï ÿåš¶—p €@€ ñ<“êQ°S€@ €@;! öóSÑ..ô*öÀ@ ÐN€àµSk €@$!PÕ®}·~ê@’näkß{M2 ÉÈ@ L†††Ê$`~¿²íÆŽ•[%ä;~|:×ôà4j!€@ ý¨,bÅüˆüÑô¾öÃu[·nígá)¨'NœÀµS+0¡d¢y~Gþ²ï',@ €@" _Ò¡vîãÃ^áò×}. €í€æóÓI íÝöð Pµéé¥"ÎΠIu… Óü­+˜P^Œ€?æ×Tò·6ÝOÕÑ?½–­[ÚšÖ8ã$™"[Í’`Ñb Ñì'ªñ¢F¤¬’€ ²€@ÔI{ÇÇ‹nr² ï É`…—•s]°¾[œ}Ä›T¤´ŽÏ UF@ZnÛgšt[WFü ŸwE~;þØÆ;HÈ6ó#ûšIûä- we‚ã…œ8œµß"7µ*Í[ã#õ#¦Æ¥Ô3v¤pd¬'k=§ì!—¹½¨Å†ç{9We·¯¸RA?¡®"Ø ý6*–ö ŠÅÕ©©ÅÂêĶ“µé‘ùáÕ™ίâ²Ò×Åbßxo@¤|WÇÀ ]°ú›dÒÀ ?/GÛsín—ÖÕË-&s Š»P6ý ožnùbï"pНl6ó#Šß¸Êíšèî2Þ·ht²ž±1u«ÉàÑ361šŸ?œ±˜djžIkÓûgGõS glŽØúdæ~J4 Ô <¬[ÎíèU=ü“síð¼Þ­ÎkuY[˜ÊÍ.Ä_t‹í ®×&yœ¨SÒðÄÔòþ:ýàÏ¢¿©a4ŒO]‚MDÀf~u5åk_ûÚ'>ñ‰Ø*èî’òR=c8üÉ¥~p,#Ô¨E¸NIyÓËEj§ƒAÝÄ‘öCV´giR:ât†¦F:#I®\ë!ú=8+òô“X©4~wÚEìï±Øv`†Ûzvç–I²nþ”çsút0·›¬d©”Ͳ¡Z/0d5 žm}ùñÉÃfõ&ñsîÒe\VÅ.É‚LýôÕ¡ïê–Ø»#¸^“MŠŠtGps/V^}ýÓt»ïÊE—¤uOPÕôJ:êöxëJ|<™OŠðá“A#l%4LÈþþ¢¦ÑX1ÍäL!`3?Ž›×ÃÄ;ï¼ó}ï{ßg>ó™$åáoÍb™¥=½2ȃ¬Ëƒš;åÇ÷‹9J]ìQ§tNw­ðwd²@¼Ú•!G•mµüå› ~ ‘_ÞAµSD<^'› “$ Ÿ(§Eø3’õ(7xä¢(ÈîYš qñFãm›;î»§;åWV½0Б…yØy’ÆõÝRZ¹"îêïëV½NkzíB"h4²W‹qšç§{îêJ¾o›žpRÕeUÒ}/¥#qP¾^K™äÓÏê0çF='ægƒâÖ%ÙëܤÜÀ SÛÜÏ[WâãÉwùgÎ_}£ž@Còä8=[ÕÈû‘#G¬fd¼¯1–1ŠÖö²mô¬ª¹‘Dû®½öÚ—½ìe%4{ŸËêa,P ²†ïÜÔœšÿ60D<)`aòœã:”‘( v¯ <©Ò†ƒä¢Ñt’°ölª¶_J†×ÕàlèRÄ%=@¹Eè7âlD„=E:<ÉÓY™üõEã¶ÑèohDadÞ€Ôôbÿ\ÀrÍ­‡ÚXáb=ùLI–7W8¦Ñ?º·é8g¹0´¯HwÛ`’ÊîamdPÕe¥§Žíß±Zj¨CG‘JšäâCa9¾½Ž¬ôyb~4p)£ tŒˆa}pîÉÞû°ªLr¿Po‰º\ã(ÅwùgÎßh²²ZMI[dѹ xÊÉöÅà äçmç¬&våóùO8pÛ'?ù̆${ü^·-ÝÝÚ·ïwöîM6ûÖO¸ñƒcÉ2ÈU+Ié6W»M¦ZÓ~|úÚ÷^“løÂÂÂÐÐP²LrníÞ:&KF¹m…À‰'ìk‡Âl«Æ¦Z4 Ikèzsª¬“ITÜC¶V…Š;FKûë_1 (X&sssÉÏÍÉÉÉ|ä#ŠàñÑÝݽ™ÎN©ß³*Ç|Ÿ£q €@'"@{©š»ÇSˆk¸¿w϶†¤`—„bêamÏMñþ…Mlè–ö×c|¡DÕ)P̯ ÿ~´^è]’ùÄé›Å)ýÅ€@@oá¡Æ€!÷I)US&É@ßx0ÿVu4®LKû›ÆøR‰ü†" ˜ß³âÔ)ñôÓŠôÑÑÕõ¼3d"Ž!@×…wꩇšÚ#€&«=¦Ð2ƒ€$4Q©ÓüÍLG˪!Ýý¹~¢}ë§ÄÉm<ó4ÿ­o¬K.ˆ €@ Ø|䦷|âÞSÄõžyæóëê¦åNëëÝëëîm§†î_h¢zGø '@­ÀµSkD¡dÍâg_\¸çßÅFacýÔ¿®1¿ Úÿ2Xæ›]Óa°°×' R àYÛ›¢D€hQäMP€oË™âŒ3åç–3ÄæM‚[éÛ3Ñ‹Ýä ºéXì[Ym%ëak}ßn×¼ º¶”=Ò^ïŸõAZ€Õ±£·§“LEŽ}õyëB"M@@Åüˆçmgž!Î8Cœ¹EþÉ™Ó*ÇÚô½7zµÐÀLÓ_ÅÓ*е¯ôc@¾ªW«;Ž-ÕÃÓÜ”ú±!ßÀv—¦?8+òã½ÅÄÞ«¯¨çÆÌ°´#’ùÑÿ´ƒ ³=þ¤¯­4ØK>䃉}ò%5Ä鸩֎-ó-‰â{ƒ³¡Hnj¯ŠÿнI,£• 1bû÷…A?ºÁáh!ˆ±¯ÏÓÉœ³”ß/ˆÑó~š* ¸ýêÔò ¤bÔ5føGÁÂrNp4"Ë"Œ!Z(¬MïŸÍéþ’3ï175«ŸAusbÞèQf©âŸ+ôJùÀ>õCÄúÚB S[ ™E‡û¹]š®2ºßªiESlÜ«ÏúÝS°¥0‚±@ 5yžÅüZi7¿žm}Ìá§É_njN½½ˆ÷‡SÔ¨­ü Ñ»#§~,-,O +ê'‰_ôc ðY…:ºº$—‹f™†Pþ¢p4SbøÓCÖag– Ô?WȘYEHù°¾f}˜Öâ(îÇã"쉷KÇ:Y|õù`ÇFõC ÅB{1@ ì¥)ö½ÎPœd„)h“Åô„9›0¦~$gž±¹©\ÃKigÏnE÷$ñÛ=@ç+«^âÇ¡ùË"éWEÊ: ±âß!ê:'F‚à¥õµ|í(Ò"@wÖ2–zø´]}ñ?°}E‘€@hæ'äÓpQ ªu4²»vfäªK–¡Ãa†!¦IbÌ*©øÈJb~uê†õP»4†É$g׋=ìªïç¡]š·–£tŠúì'â×#è|yarÅøÙª¬ï^Í”N/•µ¹*b~‡P§˜³ DÊÃúêªA ¨’¸-†]¼]Ú[{õÅtloi$ PWZi o äBŒ[FRÂ13q¦ yRðê¹RÔöß+B``Û ñu.J±9ÆëÝäQòþ~úu %iºÒnZIýÆç‡çäȰ¤~t¾ÎûLkŽW3 v vçËMMŠyG—êíW9dùЂœC|é‘KÍͯNy$Z" ¹ß|/÷Fºõy.š918H–úªŽ}{®¾UÖèØ3¾‚µ4º€ð#ЕÏç8pÛm·­¯¯kzÛ¾}ûöîÝë/¦Þú©7~°ˆW%Ë#·cøèǧ¯}ï5Éî/,, %Ë$çnݺ5Y [¹4…´we¢Æ#ÅÙrÖ´'Nœh±k§%`…‘@ þÌÍÍ%?7'''?ò‘lllh[ˆàµÉhoýáE @ ÆÐ"ÝøAè×u@ 6íE“@@úƃ¥BÁ t X @ 5àýMÈv= ̯5[V·*î´ÑVõv €@ !@­Åho µL@ €@U æW|(œ)h¢z¦ì1@ UÀµÓ*-;@õ€ùU!4d¬OÌJKÀŽ–Bk{[ª¹`,¨ŒöV‹ Ê €@ UhæG›ÛFï5¥·­-·-¨¸ç…´&³«¨–rÕB €MF =˜_ÍAÌå–÷‡ïþbåróµšW…@ €h$`~~´ûúÄüáà©RbiavttÔ/‹Ô,"`~é{ì‹›cì—a^3–#†d €­ƒ€‡ùé_ZÇ‹8KÕ­:‚‡¾ éÁž=$d“‚{'úÆ'—ÅkÓû—§öF/SãÁ¦^’³TkŽ2uM¶)q> ½2è ù•èE½’º•ù¶e¹õÞù¾_@ Z‹×Ù̯hê&Çûy÷jõ&ñ¥=½óë*aQ„£¹ùåsÏ»S‰9Ì.0õ[;¥I…—¬ÅÀQªÞpàxz¿1ß,²-A* ¦îk2ØË V*îˆõFm¥)¹à7M L2Ë2Â@ €ÍüxÝB£­¨º¾™Õ)ä.O­r´Ç,¸åBŒ™¢4Gj¦àŽùR1H´îh‘uX•™JxܹØ:×¶l÷•Ö´NR¿ÞÁñÜÔj°>GÆ_Ç÷Oïˆ_²+±¢„‚ÄQ/¥–f(…ÖyÏŽNw«ÖV €@'"`Çü:øÜ¾Èqx½ÔFº™÷µƒÄ_Ô¶}Aƒé~á IDATg@ ÐÆ´M̯Û®U€ŸuR¢¯ˆ5·N)åÕQÁâoö¢(@º"€˜_]á…r €@d0¿ 5L@ €@]ó«+¼P€@ !æ—¡Æ€)@ €¨+XáQWx¡¼¡œ8q¢¡õ¡2 Ð.àÚi—–„@ 4`~¥1‚D« °uëÖV1vì @´×Nvš–z#У½´ [ðæ6}ß³G/Ùå—et Ul¸Û›ÒÕ(k(ª¿Õ¥‹4¦–Òv@ €haÚùÑKSó+«º–Â7ãJ¶Ô»2A¯*QÇœ8¬ a…MF/ƒ`]ê]mÌ/åNoGâ_ ‘P“MYDEåµ$iE@ Ð „a°®v`~¢wGnv!$ušø­MŒ÷-ø¾²Q{ÆÆÜWµUØÚò¥F¥jA1 €@40 Vh æ'_ÑR¿ˆøžÏÅR=ŠFCÂâqéN£D•êÐ<Ù³‡F—•æhœYWd&‘ðà¬ÈSè0ˆãÒaS¡ ´5Ûß[;3¡htÞÛØ1¸xc±ÞDSAØ õù1»²d×/'Ez–àU¹ò•Ù‰R@ PÚ‚ù É–­$ÑP/}Éíè­ Jéµä—wÌdœqiOïü0 /Šýr"=?uIÐû¾G…>–aI’—Jy¬N-ê­V¨mp4/M†%gz“ÛYRÎ7W :WÑÈ[ÁafåÖUîLƒrå˵ò@ PíÁü$õó‡×ÄÚ±eƒî™³ÿ4FAh¦wŒPöŒMDC…‘ýŽf9ØQÅ${‘€@t6mÂüê·tx^ÔKÅ£ÙQ+Ë€„ ¬åF9ÄLŒKë’ÉõmS4/æôËڢɆ1²å%kV–ω‘ˆÅ–§­s¤UôkzÏrÕaÕhTØ^ …{†9K®û+rfH±øéJÉR`™¦«-^WÎÞ°én½”R4©Àïl‰. ÔªºÀ°´Ò- )% ŒScx.a²@  Ú…ù)ê7>8®‰Ÿ\Ð11Ja½èi¾6=]íÚ^4ÎÆºžm}bV ò†‡b¢E)f³)ù`•ÊÚôþpu²§e]ÍJˆè‘Yòö”êÐ$5RºäÇW†$_ÍOrw qwu,ŽFí“ß/hØž~ ˆñ³Õ¸¼5Žï×­ÈîçR ÓH 4ƒLìQ–{-±êµ&Ÿ³^ûã]¿X’¼ô[ʾ&\ùhbܘŸ«é@ PÚ†ù©Ÿ(¥§œœ3ÇÏþ.zrîŽ|S²ŸQ á¸t†_3‰ý;Vg\Q ÉÅ¿"äŠxfµLÄDäv4á )˜*‰…×6®Àцqh¢`ìhr}zOæµêy~ÏÜÔ^Õ {òä@Šé#œ®W4ò®rÝq|? NEþáþøéRmh†´6”Ô–û-qêµÌó8ëw &Õ¯~$®×:òrFFÐݘj €uB Þá!=Çl˜¼‰¶PÊï2\2ã‘¥tf”úD yª¶5}÷Ëk®j(·%üvyLE’ƒ@«£©#n6M«CV2¶'PsGGÚKmšu™EJ8›ÖPG.O$UͪMšýà”B@4ö‰ù5–C@úƃ)•´B%nsó–ó  ZˆùÑNa4ó¦5¬†•@´*öÒôVõv Z¢­é¬@ €H…F{SÁ¡–@€&ª·„0d \;YkØê‡@;1?cþ½»áˆ1ˆÞ[°0® Œ«ÌÐܰ>±!0£’vCk{Û­EáHD ]Ööë’ûCÇœ8½ö‹]^•$–ˆ2@ ÐúdšùÑ^ƒ?úÑR€¼6=B;îÛ‚õŒéמÑk‚÷Ù&Š¥¨"@ €hi2ÍüþéŸþéСCO<ñD ˆÝWl$ñã×o%ŠÑ‹º¦û÷ø^•—^Â(d €@ kdšùX»víú‹¿ø‹Gy¤püêUm?™+æ)‰¤–G€æw‡—Ó7É¿¦YUL¨d ‘&5ªõ!@½¤Z½´šú^~_‘ÓjÌRÕ‹´×fôPÃۢȰðò.2˜²eõ¾<Ÿþí>hÚ¬3¿¼ào}ë[?ÿùϯ®®&až_ñg/-„SüTi¯Xp› Ýeùm¢á­).=Éäej¾A±È?Wwó…s›`«Çªôžô’qžÑÒ'…ÈêÔò`ùÏó8­Ho#Ô»'ÃËŘ$ÞGšV3?¼½“ÏT’ËÅõ<ê݃ËAÿ,Èw@Û|Î4 A˜.±^ª>˜ò½Ø>bЍ÷MǾl;½Ó-„@Ö™Ayî¹ç^}õÕögöä“Oú‘íÙ=œ›]ð<ÚågxwOP*NLî,«†9z£€<‚[V\ºß¤f Õ•èÍ`æ¼Ïæš™«z¶õ‰åcFd§¹¨ ö !Ð361:»ŸÃ~rÈd¢Ü·¬Ð´Ýv)§gZK/‡'¦–í¦Ót¯ž]Ô;2ôŒÍ™Ô‚'A˜'sG;; Ìðí<¡9ÜqÝ µLõB ˜ßñãÇ<øŽw¼ãùÏ~ ê^5h #¬MO,¾ã#£É­ÀÀÐh~¼ø·¼3Óçêd) à ±‰{öÐ8’Š–E#J<³¾ÛÙ˜¶U21+òã½Vú^<@--Q•ÒaJ¦÷Å׌K ³£ÁÝ[ãôt`G v¢ ‚¶Eì-’&Ã~ó‡×¨‹ãIÒ¥;¼öÍGü´’ê•D˲¹“°åõ˜' ÂnÛ妛ú{wÄUÕ"-3@ydù=þøã_øÂÞö¶·õöö&y60£°Â§æˆØ= ˆŸyÇ¡ò>±P-…ø¢ñ £®¸ô$s—dcÓ˜õ‰R4$?¾_Ì©°¯ˆIþÄå$HýdiQZ2„!£#ÁزìFÖ×Ë*úº8*Ô ¬ê}ô]‹:ìBsT¥*ÑŒAØk¶–USrH±vvoã+C\a> †äDY[ë½”bLFrÖà(Ø4Åî‚í°¨C—èð‘ ÖîÛ´ð•à܆]î盄í£jòÌØ…ìð·Wøã%¡…Àã«ÊZãÀ P=Yg~_ùÊWhžß…^XÚÕ`pV="e°ir~x¯ÞÛE—·ÅJ+†DË" [ý$H$¹©95¢%ƒÂú àO F±ÖŽ-s NEâd ÌF3“¬¯E&Z„à(¼§œ9tVª-¼fGªÂy~;öëyü¾ƒ>E(£Aáœè‚ ë)ËÚRÞ ¿IPËÏŽ#½n['õpÃhk¦u30CÜOO&äD÷òµ@A‚p˜¥.3ú± EäÕ_lþ¨Ô¢E¦ÂL3¿¿øÅW^y%Íó«‚ó5©@¡v@@NòÏu¼“Ï7çð&’T0+TþÒ —zÎ̉‘ Äh}u”’¼ÇªhýÍ:uË”•g¶R"‡ºÔ“°Ú‹A(Ë@gIú-â•Øáý¾Ï´6ehDÙ\êáN–ã³fìÐ(œ 75¡ˆTlÅ)ýÎ ´4**&ò"ÓÌ/—Ë=÷¹Ïmi¬a|ÓXš÷¦Ïõ£_öášèY–—“šè(š äM ËÈL8 ÞðøQ6=°¾JAUFy½þCZb¤{NËòÅ)¯!)£FGI ŽZ˜¶öôp3~&'ÜÄ-‘?}–ul›'aëÐ< .GCÍ6~ Âjir¯âO(Bþ±åøð¢]9¾ÖG Ó̯õá…ÍC``Û Ïiëê¥x*þ,ñ‘ÝD4 $r}+2V§õ5o¢v‡ö‚OYŠzЄ %H‡|ÖY_£r®UjѯðàÇ)YéóÄü Éò|ÑÕ‡óüä$EI‰“›Ï!Y¹-Œ€ÓÖq=\Æ“Õú^bgMñ3Paï(ANyáTm¹!“1föÛ®pŽB¼°Œ¶z–ƒ™j mœ~„üZ¸gÂôJè¢7¤8pà¶ÛnÛØØÐ º»»?üáïÝ»7Yå­Ÿ:pãÇ’e ~|úÚ÷^“ ÅÂÂÂÐÐP²LrîÖ­[“|¹ôÛ¿ƒiP”íMô•ÎVZ‹š-;К'NTtíÄ@ESFÄÜ‘m“ýÇö¶À”›ÀÜr7¯‰qÉ@ ¡ÌÍÍ%?7'''÷íÛwêÔ)mÖf:jc +Û¹S<ð@ õ•Pué¥âþûKÈ  (˜7Üß»g‚¢vÙCŽ+Óªüh1röM†…@ ZZ–ùí+^«R-É建’ó‘ €Œ€rm,ä®F-b*̵BÀÏüxõG­ê€ aèÎïîýãM̰i-jvö……@öAÀÏühŠyû¸O€@ БèÍ\Ø{úêg~­Ž3±æìêÕ‹gy ’Zš¨ÞzFÃb píd `híÁü°ä4“˜\ìØ„ª¨åúĪ Aa ÐJÔxmo+¹[@'"í燹}Øþð €è$"æÇsû²Éÿ¾öµ¯}âŸ(§]h<—ß¡ªN¦÷ð†»ÑkU]j7RÞï=|¿wø]ܳ§?üZNå@ €@&hwxÜyçï{ßû>ó™ÏT `~|eHÎp\¤W%˜/ _Y*ßÚ@›:Ñ[ Ô<ÈE±?xíW~yÇœz'+ €@´æ—©°Ѿk¯½öe/{Y`ç¦ö*ò&ßA®_©*æG$× h|»}ø‚ ÁÙðÝ®¹áÝØß³ à›Y4 á:aÞúÕàê´:¶¦HCŒh·z1 PÆHHPÌéf娃,MG@…µäÁ–ØÌGE3Bþ4í«Ã.3y!r!Ãc(F56ó5½ŸVk­ñY9ýÒÎjõ•(߀êÒ=}åÚ¦xaV 8‘Ýdr¹åAžÓdCP=u@Àf~\E˜Vٶדö‘1¹á¹#ôþî $Ô³­Ŏƒ¼e›Š@vB`xbj7ÄvjQø üÌ/ Ý{ï½Ï>ûì}÷Ý÷ê¸æšk­ Çj»‚±®Dá s`fux¾W Ó)1ÞË!Ï`ÍGi ¢ÁXZ쓸ô'Zè£{AñZ{%ë¿ Î-Ѩ«<(p¢K„#ÏEÑptRÕ¤ip–'$”ŇW3̪õº%5ªZ)ýОö÷÷Aºh£ RZÞ±‰¾ñ‘`Ƴᇧ—¶°—0t<¢›]æ÷[¿õ[Gã†nˆo!ùêE}¨±.Já1/}B¥ÝD96ªÓࣽfÁøš‘Óïd§Æó³‘ÁîÒŸH²°:µF„…Ðk}¼+\òãû-¢EE³ƒ]#ê´xQ( oðã5¹jUž¯iRSÜZÈÔhÝRxÙ•:¼Ã¹GŽLŒÎ.,±cK ³£ò¢ÂÑQ Ì,:Ü/®—v0p´<Ùe~--È´|'\äÓ361Yå,ý‘ }F‡x-·ÕAõ>þ•@®ŸáüB¹¨(,[´À(е”¬Ú­¤tŠS‹,b¬[ ‚~MÔ‡am@ý––ƒ%R¥+„D[! ¸_ÑvqH[¹ g€@Û#вÌïì³½\¸aT ¨íJ Éøêøj¡a»A¡V5­Nå\öª‰^kÓû—±ÄÝ…§CRd/ÀRil¸ÙADÌ:[Æõ'Ÿ´>¹aTŽE€–ï„91â[Ž?j¡O0È)EÃøŸ¬ÙJ üüaµáÊÚáù¼ª¥dÕŽ±)œZÌ2«+ùÜŽÞÀ²žÝÃb~rr^€øyÐ锤ž±9â~aT¸.½´S „Ÿ@ ;Ø1?âÙ1–J-¹$BN¢£A+9ߎŽ1lŒöººåBŸe%ÙeìöhÈÅ­2«sÕº)¹¾•UËxß"OÜ+]õíDNkì k›ÜZLWökšFVú<1?"£4Çv¶SüÜæë¤Éýtÿ(ÙK; ø Z®|>àÀÛn»m}}]{ÑÝݽoß¾½{÷&ûuë§ÜøÁ±d™ æþð‡?¤7”?óÌ3M´mË–-[·n=묳šhC#«þèǧ¯}ï5É5.,, %Ë$ç¤ÉrmïÊD9«$J(¬$›¦×í߱ڻ CM«€Q¦Lè~XúÚ)S'ÄhsssÉÏÍÉÉÉøÃ´SŠ6æ´ÓNÛ¬¿P¢~Çúé§Ï=÷Ü3r¹®l@Ãx«ØxùË=|øÔ©SçœsŽW‰õ@`ir<Ÿ›’Cœ8J" §øMÍÍ””ƒ@´ók%««°õÄSO]xáÏÒÒ¢}?9y² MU}Îé§ÿô ~ú‘Gþ˜_U8¦*,}ãôÒyÐú lPR5FŒ6‘9‚Í\J‚ €@k!ÐqÌïÔúz÷¦îõ j§æNi$3ȘÖê.­i­Üª1K“h=Þ9&³pf ±ÌÀ­‡@Ñ 5³]­çG9á+0óÛØ “Âê­ÿñôÓ·ðßn]ãĺ|.ýÆéoøƒUY)ÙÛ\ÞY`@ Ú̯½ÉMgÜPK˜åçÃøÆ—}á—ÿñé¯\,[ô‹ï{½%ᢺ5®$²vYA'̪¬~Å4QÝŸT Àµ“2@[!àg~må¢ëŒ$_*ê¶±öÉ_ûo;¾ðï¿~Åá¤Ü·Þ*(Úç©M ÕAl3¨KnFˆ£¦`}bMᄲNAk{;¥¥á'PØûùu,D¸‚˜ßÃK~ϼB†í¿‡?¹ë§øxÿ_ËÜ/¾ÿ§výá'ßÏI»>ùp ï{ÿû©¨,õ×8}û¢’—#¼:âÞ× > €ÈÉüÔ>jùùêm«¯4ê{ÖóžwÖóÞøÉ5úú7×^òço½Ÿ~ Ÿ8ñùÂïýášœ(îùàÿ·[¥\sÏoÝòEYÊ/öж™'¦®ØØ¸bJi ÿëãJ­Œ&ÊO]{¦úŒ@ ÚNd~Ô¦<ÇN·Þst¾Ðܾ÷~ñ©§n¿†ó^]÷ܰ“·n}ÛâÕ»öMRôM»¯+« 1boýO)•…ÂǬ–‡wUN»÷+ø€@dNd~üÂ’õ¿ôÄCÇÖèr/=üý?oo_ùèŽÊ¡Ú]¿ÿ÷-L¼&H¾þËJžþç¢úöØ¿òß¡÷PN%¾xôP˜øØïí¢èàï=vø=/æåÆy’ØKÞsH©=4ù{‡¸lTjgöß4È©K ³¹áÝü&29’ËG Sú§§ÃQ-B3¥eìnVäÇ{ñ0[•,µg©7â‹k‡çó£Cæ;;zv瘆š:>·ªP‰KÁa¤°d©ÚáM‹@ïØDßøˆËý¢>_< ܱ@Áq Ђt"ó£f¢‘Wþ4ÆszÚ‚]¥MV,Ž…¡pðviOïüp0,TPƒRÆûe4wNÌÏZ^.My…Â̽umqT¨ä¢r®**œ_Þ1ÇÙ‘¦ÜŽ^¼üʪ¤¾[UH…ãûi,¬R¤Ðó Ž)åUŽD P3‹÷‹.ê˃‰Óʨ ¢@4ó£eCMhle›7o&Š·yó&U­·mÒŸdŸdLc½ï´ÚK[ÊÍ.£«kÇ–9hG½|pVò/JÉMíU1¹ž±‰Q ¡Þ¹Ù˜ç›«J–Õ¡EC‘‡æyÈ`LÛ䦿Æd°RçQS É@ z÷3'&È>°Ñ!«€@“è8æAÛ¬üÛø¼³Î"ÀŸûÜç6 vY-™wN49³®ŸÂeŠA 1º¨BvÁ±v,ɹÔcL på‹‹q!+Í7yOŽíŽ/,QÄP×Hã¿}lKRÝVž|ꊡ2 @T‹ÀÀÞ©ý½{–«Õƒò@d (æ×!ÓÎÎ9çœ3ŸûÜãO<±qÖYgmÝÚ¬?ªÌ c²ÔÚÖ OãV=ÛúÄlÑÌuJÉq ¹ÇÑ?ŠÚ+D\U¾²¬3VËñ2)¢†ñh&¢¿x~þ°Z™ÍLSʯ ©@ LäϦåAšÞªÕçƒø¹Z¹T4µLÕ@ Y­í%#:ÿߺè¥/í>q‚Wë6å“jík`§§ØO“˜‘æxö¯Ä !-ÚóEÎÃöh/­¦PMœ!CZ$¬Wx¸ªb’“÷„ªŽA±¨7Œ‘f\uׂ«6« …¹¾•‘À‚EU¦)c ’@¹Hî— É>¿Ì]YΗ5bç媅<ÍCÀ3ÚKäž4Í3 5š @„+ÔUöJmtÖB‚…ù…†uÇû†ä8lX¶'Ìrd½ªÌÃê_]EQjqº2¡XVïØ{„­‹ŠšÚ<¥¬:ð”…@Ñ…C%‹®÷ò)K7„Èž° && @ yóé—^4Á@T €@ Z옢}Õ"Šò-†úzÇól4­Ø–´˜0 €@:::ægí›1Hµrø*<²6o‰ÆÝ¼/‘k³&€;@ Ð8:šùQóò~iUan¾V¡*E( €@ú!ŒöÒ o'¬ê­ŽÐœNÐzm@”®ò1C Ðð Ùª§óEóü:›üQÐnÿŽ©¾ñq¹q½ùA±©ÄÅáùA9 ¬(‘óY`ub¥WíwÕÛ5îÛí·5ºF[X‰±Û¢áD£ Ú‡k§Ñ £> Ð<:z´·öüøÊ¤Æ‹´c›~cÞšÚ¼¾‰š@Z#PÄü䆱»“_øöVÚIWè÷5à­©µîqЀ@4=ìë‰ùu6ÿ‹k õÖT@ €he<̯•Ý©¹íxkjÍ!m˜ÂðÍkò§Lÿ´zùmóÓ˜®=òÝ%pÁ8m8X½ý5QRÒd´ª¯õQì]Ðí €€F £™ßt?­ÌÈ$°¼5µ¥/Z–#ÃÛòU½I­Üch"éì`:îÇvÉ +ÛÕÏx`W®¤1à –L!Ë-—ÕG3e<Œ@ ö;´wïÞd nýÔ?8–,ƒ\ @|ôãÓ×¾÷šd(†††’e’sñÖùd| ¼œ8q׎$Œ#077—üÜœœœ$:÷ì³ÏjGžóœçtô~~oQ˜‡ÀO½þõ›þñãr‘€@Yl%éK/÷ß_V) Тtøh¯ºs&0«%žå¼ïKåy4°œÒÅ]'MTCŠRM¤ÜØ’­E»[Ì&Úwâ©§Ü?Aqkü P&t)‰¨ÑÕ 5@dg~Ô<ôž"kÆ?íØ–/¯Ý¢Wc-휕K.S½m+ŽÉé©J Þ»U^c@ €ˆEÀf~gŠ•mÓŒ¾>1˜wôUÒ*ÎÑÑÄÉõÉ@ävô&  €ÍAÀ3ϯÓÈߎ½¢wriŒ9ÒFËSs+³ËÜ — ¶4 Pž¡„ý;¦úÆÇåFSÑ=•¸:±Ò«d{»æ9]¾Uã‡\Øü¾(x¯„Þ®ñ@s\`åÅQD[s\ÙÎJ§‰êå0¼µC—Oí°„& ilæÇ+|;ŒüÑæƒ Kô¾+Ú¤þð¼žë+a«Ñ{< 3ôEÒ¯é½üszÏÕ„L•¬PSF’‘ïË’2K Þ¯uD1Cš±7°M½øë¿?Aˆ"a³—È8ÆUB 't4—|sC¦;aÍŒ{ãA9Ue!ð•«åO&,ï- 4š#ðú}U®Îw_Tn )o3¿Jt´~Ú`mÿQ³±Uâf…¼^KzýrS§æ{®öÓn¾ÄíÜC½›k6äpôÆ,±[½ø+$†n‰0%Œ$ÆI¸š…ׂ¸òH@ 2‡ÀzKz›vý÷;Ò»±¼hžŸ›—Fc›Èôì¦É~Kr¤—_^øEƒªƒB½ì‹^ÙP¯Åï×ò¼ø«\oîª:@ Qž:YHóW–õj³h‡½Â£,]m$¬^©58.†wEÏVWò¼`ƒFË\ï÷^¯èÅ_Ãç¾¹«bU(€@d !ÒüU`¯&`~!z4â›Uïã2õž-ù>¬‘•¾²c~ÎûµhàXúÅ_¾—k¥iMGsšB*såâ›WÄ:ó¨xÿ9vnxŽø‚›ëM´”þîÖk§ÙY¥Õ§• Íß ÿ¾ðª°T|,aDcj)a²ÙB`£ ÒüUctѯ4‰eª+S¼Qͱ_BúøÍ³Å+¿T•P%Ým”ƒ% @ ;l¯ÒM´ª’=ø˜æ!æ—,2[í ñ]1ó]q9àHDàŸß»H\™(ƒL €¨+ë‘æ¯,¬¸Öö–…„[ 7¿D|õ+â(YýF±ý^uB3¾Müœß»Ÿhaxø9‚uÑÛÄ/ ñKo#ß‘!±(¬!_ÿŠøÀÃR•̽_Œì”ç¤ÿ—ï•'4â¼×Þ+ )¢øÙó#›Y'åŠïˆ_ºHì£À¤£_ç~ïIñÝûÛÄÅ⛯¿r{ˆƒeÇqñÕ'Å®‹Å¡‡#ÍZþR¥‡Tñ÷_%Fž/OÙJã̹mö.Iu4›j¹`JÐ €hiˆöÕã`òÇ;÷ùÕaèÌçˆË…¸A ò~Uˆ7Ÿ#Žªó›ß&¾ûñË‹í¯Ÿ•ô)6‘ÝøÀ¬Áö Ï´¦8ï2P¡1SbcD³Þ(®¼W2¤C_ x©JÆ…!Æ6+Ž*†ôþ‡ƒŠ^ò”ªˆŸþ —Ìx©Š•^ùRñõûbhŸá—uªk!¿ÊCà šxè^Iû.ÿ®xåía ƒ2RR>Zá®°œ­ù¸!×´ÚxÛ€h3ž¥õêØ~¶‡¡}êTþácæ‡ÑÞ ÐC‘VB€‡z9Î÷Åÿ Œ?G¼äI1£˜ÐÑ{åÀØDΊû$=BÜ©ôÐä¿Ï|G\¤B_tÌýƒúça©ü"^>BôK-¤ XeÇG.‹+ú*×N}úƒ\2#ÃÝuvàx‚ ßyÒÎ ô(GÞ¦y£ø¹³%’—?_|F5=G<>‘Ù\ÌÕü¤wŽVœx´#  Оüóÿ}ù›äQŠÎ-Ëy"|r{:uPÁ€QrjYŠ 2ŽÀžrH÷›jà•šÄÆc” µœuo”c²T5ɪ<."Êe¥ôÏÜ/>ö*±*ÄK¾›ðc&—¸FòJœ5Ѷaå|/Ò,äÚŠÈËÔÃèå(ƒ,@ U8¹ý„8ü½Ÿìþ¹ç°'tnf QÞ: “æE%)•VE v‹Å/=)GHi<”ÿæÔ$6ŠÏ}÷ùbZðAÜ"Ây“ñ¤"B)¤ƒV_ÆÿÜRÏ?÷¤$^$sóÓ¤+T9 ºX)ýG)4ø±‡¦<ꡯJœeÆÊßÿªw~! j^`QŠ©6=>®f¥‡"²¿r¿xIMù¥Ïo¤ 2„ÀúFÁüû«ïž$ãèÓJOo1ð’¼>ñŒ"#þ—PHfšÓö½â ø~VÍxûÀWäx%ýÑ Œ`´Wøµww~Gì WxèDZ K³îH´7J,gzX̽B|–d<)¾îŒ¥šÒXêˆú®—†èÜïž-`tP Ì®¨¤~#~Jì#}ñ<]©ÞÞÅ4É<üåªZªò·‹‹hðW¥ppÎ*->d#©5;@•ÔÊõ+8€ƒ1<Ë׿øö3nbYx0çÓ³ý<ÌÔibX–jì  Uh“(†ôJþò°x¥Ž~éij¾DZÛÁ‡©M'z÷ö‹r‰Ð„ʼn!ýA14¦ç$¤¸YTÄLL£ÿëßö4ŽW³©¼HÀ·Ÿ¥¡öRòQYG2j ÕH@´-U’¤ €@¦ØØ(”ü+Ë`b|,Ï'Áh//ôÕyeilaù2ÜåÞ…¥™ýB·vq ~t.î@pçbÏ™Gà­/ÝR[™ÚÑ'3=RíêB_ÌŒÚVÜÚzvçÆêGC±½ãyi÷èba&à‚«A"Å U°Ž†€÷ïàSó<,››šêŸ<‰º¸:!Ùq9/,T.„§Hk +@rØõßï(·HyfwšãùWx¤QÔÖ2K{zç‡W G»£ù}cän~|?¥z$!™Þ7PKeÇû GsbJ"åM4!̯L 3’@N.×,Y¤­[ "ç¾rõ‰ŠÊ¡âÄ \>è@ ™ºî åV¿°°¦ˆ9¢KçEÌOïïÜÁþ¹DÖÖŽ-‹ülo×8#::¤þÍMÍ©Yy=c£ã ´?›üâT–UP î—gÞÄ¢¢¹©½ªÌÀШØlM Ÿ§6$˜lݺ€ PïyÏ{Hþ…øÍßüͲ B¦#ðº×½®¤ fÀÙóë`ÎGüìð|¾o‚øœ\ãk òJ\Í•’ fƒ%!‡@ Û|úÓŸ&æGŸ¼Ý>h øg[š»‹5Ú‹µ½4]USúz¶õ‰Ùýö&/ùùÃjÛIG‡¤\ïŽ\~E¾œ˜áB°w•ÍO*¢¸6½?)Q•‹=¼zb¥;+£@Á½³Ïvÿh¦*þ€( ?&ÂG÷M›ä'ÍÏìçΔ?tògøRMa"ó+‹?ú4#÷?>gGƒ8 71± Š$+Dnë" §äfø†™ÖÅ –×ý#DO‰qj‰xÕÁcG7€°(‹³!æWïþc«ú¼‰É–TP$Y!rõIL£©Î@ªŠp8‘bøŠŸm´Å·"û¡*™»g¥I-QÀ$Щsûûûz’—r›ñúE? X£*¹dÙ v~ƒb®×¡Xÿô±ÈÇ”eí: l öwtÇŒ# v2­«Ô%J\fu­Ê@K#PVÌ<5™"F{[ºéa|ÅÐÖÙCrŠæâh¸›UÑÓhP,Ò¦ÚéßáG[|‹9R%W„ËüòJ ¦ˆª¹ ´ðG¯çÜ#Gh…PÈ£Õá£i^ãl3®TŠP£kCŒ˜íu°a8)›óÁRt¹‹¸ÜÉÜ®Â.KXi9 0GMY ýÍÕQ´7/ Vƒ€ú±²0·Y½RíùÁÀ¼Ÿ>giß{Z9W‚×ÑÛ¡…Ò¿²ªñe@Û"`2¹d'µ¤>)b~A€ \ý‘¬ ¹@ •0·Î^¦­³ù˜‘T¦Ljbnñîò#rûþƒ =õæÒÆÝõ[ZX6óŽG5Úf8ÖçØ v#÷ˆE†+¯Õãœ&WªsÝiËÊíüdÕÕ@; ÍÖ;ˆrÒ!À|nAþ(*¾ ôaüX½©ˆãWA ÓGåK(m> Ô*6Ð?4HÉÐ¥“,`æZ41b~ê׸<Òë‚$h/èEÍz‡Æ ‘O¾±¢‚¥UÍÕdê÷j³—ðÛ‹›À­4Ì·UÊÍ^vì=by«”ùáóšw#­ åS–U[™®ŽÛìÖh»×^™}˜<“?BÆ•‡4î{dLþ`è좩«¹©©Q1_ì;M_$yyOM@…ºÈ‘„ld €ÅüÒ¿·×ÔC”±³™_8KÍ\™ž^öÙ…¨"½ç ?R]dRrŠßÔ\Ò²"µ(j†€ïGˆ™ü`ˆÈ¢™éüܲ8eͬ„" ÐQ{7½z1Ý¡„Ú·¨Š¦+óRÂ}«äšDg«*3SºªÊ„{ê’*?e&ÓÁ¸z"ÀªªS¥z%õtº@ ¦Tª³™_M ˾2zdªéüÁNrG3{gÝ¢hIÞܪÊÙ®Vzî©K÷vñfg»àì# @Œ"PYÌéìy~5Bs½]{h:²œš¼°4CóýÔκ4ûjMí@ëÙ§¶« '>‹Ñ!…i¸§.©Ë;x;_y¾Ÿ6Î7÷ÍhWjq³Nœ8ÑâÀ| Ð$Î>›ÞîÔ¤ºÓUKâ@ D ¬y~l`~ ž±¹©ù^EùöNí§7põ ÚYwNò´vuå}«­4¹ÊG³غuk³ªF½@ µøÿÙ{踪ûÞ÷ÈÿÁIŒ0~}”E‰Æ¦ê´nIÓqB%úr–+W ‰Ézƒ†äé­¤Èu\+/YO7A"  i±^ ®µ\[÷bK7cBëi^tÝ{õôÀ#0º]nîke;N0ÛXï÷Ûûü?ûü™ÑÌèÌÌ÷DËÌì³÷oÿöçŒ2_ý~ûÏéÓÕí?¼:#PôÚ^âTßÙÞÉaã”UÞfWœ¥)wÖ%ù§ØÖg»Ú:ûøa¸   UC ¾c~më§ÍI’¼“+,yg݆vmb^ffþQQ³m«*Þ®vSÂH÷†l^U5Ÿ 8    P«ê[ù¹÷¡µž²µ³®g++G{»ZM½Y.w„=cjõ—ãª!PßÙ^åc;ë*Ž,WVFa| ˜§EI]o£øíi›ôÈýy<·¢Ø‹T‡,[WE6*ßXŒM*2ŒHtQ @êž”Ÿý#€uëþ"‡x+°sE“wé§â:Ä v0fw‰—Ø©[U—OžÆŒÜ2€ò³.Õκe~h0_/x"iÊÜa²^Fq‚€”‘@Ïó+#Y˜Ž+Þ¼1“cïô-y<þžSäÉvjs^·$ΰ§Õ?|WKkÙl’Oªïih§í­nÌ»Z*•KöÓæ‘â®Ó¤»kZjžÊÈ&ù@‡ã¢åDçX;ÆðAœDã­6”ÌdØoµÔÐPÒì5b[Gù–Ätøp„·n7”C°‘¯û§‚%-¦âg–p?A75¼/Œ@qç¾ÖjƒĆ”_l© y(ËQsÁ~ËQ¡ÜhBZ[ÔCté°–NÊÊ6³ZêÞ,³À¹©.㡌̓ü“Ên¸OZ5î’žÑÕížM÷ëëÈxý¤ê^|ª‘4#o¨ßöÁÉ^ÒœT-Cú”0°ûš6Ä}GlË-ÆhèŒL^éhÃÉeÜn(‡àÅÀgçh¦æžìÑ]÷VDIáþê¯þж@·í…i*oå Þö€ÿhÑ?˜üPøÐê†ÀèèhcE¶·hhRÍâPc#GMÄB³éøjÏæ¦ó‘ÇfL_ã3ÿÌv©Nyj Y¡ïMiÔ²hÜ¥3]ô®8*&dÙ·ØhRí§Ç¿j²q® %ÃÖRz¿ì¾ô0j[Úû2Ýo×ÇQ‡ctiºÁýz†ú\O0´>*I m„&šÚv§çOˆ±íãc_dh °( ü;:­¶^øK+¹ž7d¤Uó£Z7©2cíeKOÁä›v_áà]4SÏ}SÓ記©á^GnIEo5’h$³„Û|øi÷! šª GYqm#'¨Fe}ÅTÖCá‚ ðƒm¯â%F  P“ üjò±bPD€ŽXÉeè$>ƒr¼9k“F–ú¡,ÅÄ’;$l³8³™–ìóÓú™0|Wñ8”GÅxêÉœ¬P£j?=>¨«y 62šCêSNGôéÂÛ–¦fI¶ÚoDŽÇx† ‘d7b¨” W6^q¬ŽOeK€Ïµœj×'¬ÊOȸ òçÆó±/¶´¨$(?3+Ç™¹ö£ NÄêÑkÚŸ|q­*ùÙ‰}_¼2V3¹SCyÏÓ“° 4ÏM¤,íµ¬0 18#¬øl¤’Ó8dCžP!Kd×ÝÓIEÌ•K’–‚8²¦žNi5‰±Dí§×‡àá˜ÏŒyél;»ß­uêÙ^uÞÇÌ{µðv3âÒBêápä3KÉtC{mQ¶×ƒ‘óˆÒ·†qZ0#/Ê‹gAý¹Ÿ Ê*ÊJE€µŸù æO×”øØ4ðTOÏǾT€@9 4är¹Ý»w?þøãô»lvD9ªíÛ·÷õõwýÈc»·­7¸NÜïòœwržrè¤esÊs™†Unûer;Üì®o?pß=ÁõÆÇÇ;::‚ëßµÍR®‹»ô°Ç;LaW„Kñú´5œx ¡ˆgPMœ+:ä"¨±£bjl8‹ð@—  P!õ­ü¼3´xû4±ø‘SJ›†')¥Ë—ÈsxSW2å$+xjR2Šó´V+ÃÔŒUÎ7E’Œ,ê¿õ³/6P°WäφpoXo_@’ºBŸ+t@@ð@ÊJ î•Ÿb7S FßįÉ•Ùöl“{§9àdíöa(G=èg,S>jß=´”»£)M @@@˜@}Ÿáa?K~ÄöiýæÙú‡Dì4¶ µƧMè¾y¹s//|ä-ßÄ1 Ýø<.œMT_¸X:$€ß:|èrݨoåÇ[k¤Ú{Œ–œWÕ†òÆ‘ ¼ÓX/mü!¦ö‡´å#d×}šæÜò­ÓÏïÐfÜJ+RúùL0\ Õµ¶W1ÀbÀÚÞÅ Ž>A`ÑÔ}¶Wœ*7¨¢Ó»(g›9åÝi̶©XáŒt_VÓ÷)ã5#Š-ß”ö±‡Vá¬Ñ@@@@E Îc~ ¯³P‡ÑZúŽºîØëŽèY[*3ãÊ×F¡§:G̵¢Ê¾ºÉÁL’öðæË}`ÍÆ@@@bIÊ/–N•€úì»±îÄXg^¥ÆÄé´|n²#¨»å>ûˆ-©¬usÙÇŠ@@@À å‡Ï˜rš–RœälÞoîJeÇm‰`ºe­ÿÈ¥¢Á2rTëve•£5F-(ž@+?k¯ŽÈßÁ{¨„²‰²ÐÛÞU͘ÆëJÎÛšF´ìí %©ÎÑ£t¤‹{Õîä°1ÇòKµ$¤œ§ðy R|Ï““ãYÛm’$§ŽÙ7žñ´F€€””@+?b™ÊË WU1è%Q IDATãŠÔ‚˜a6*˜šÎO$3 U²¤–ê3–#*òr‹9ÿ±Ðay<¥ÏÞ mý´n'AóóÄÆ0¶söBNá㳡õ3ûƵ´ì×íd®K…ýŸî€€”œvu)9ÒE1(ÎöMŒOŽ´™gº-ŠqêÔ~žô«9ðÀ=óä=ÎÅ:Ëóšrœùç©ï<Ðq$Ÿð„ñ900Ná €€@ @ÌÏõPEªt’{à‹vÜ0·ßpòz«Ð»M‡•˜=fõXhm%¢¬üñkÞÜé™ÜwA@@ꔟ™47VËe´QÊOp’®[¼¤×¹Ì 1±ß¨Òô]Þ&{xI¨ÈOh<)ŒJô;Fµ1cv—_a”¶õöÉÄxA@@JOÊÏœ*gnåaÌ¢£©\Zªs³8±_›sñ <ƒKLÞŸ96¥ ²=ËETblµäƒó+ŒÒ6Ò£w¯=ˆÔ•@@@ꆔßB5+>ãJë;ó³9ïBÚýóªÓäz,¶ç‰¶   Pë°Â£ˆ'œ;4ç·²ØJ÷ó’ŠõI-30Ü×f®Ól^ŸÌµNöR qfx€²½CT˯0JÛ7õº^ibá<ç¬mÛƒ¸U/‘À5kÖHLø@ :’}øÝ‰Ž 5A Ú Ô¹òóîÖanüAOÖÜæÃþZ/q>úà@z EiïÐ,ŒØ–;tTõÙÄ;¨jÿ”ÂÒÀ<¿Òp„ˆ?(¿ø?#x   ¥!åWް?ös£ÞVÂq„¬ì=aÙÑDßa’·õŽè¿a°€&%/L€T(¿*xHp±XúfÖ–ÛÅ kçÕp²E+Mè8¾v¡ýxn§8+8úUD“èÆQ@@ š @ùUóÓƒïш-·i+žhµËR‹Wvºídm^Ÿ`@@  @ùÕáC¯ç!sp®§‡Žeá4ÇiËüÆ<ÂŽßÓS¬Ž:ÔFÜî;Ë*TB[íˆC\¬öÈ…¬<9žM÷‹PŸéŠ·kÑ‹â”çèMh$SÉž¡@@  @ùUáCƒËàÍ´søhÄ©:‹™öØv¶¬Qd0;®Îlè.ï‰ÌÔw.3Ýa;Í™¶Ñ™ ƒþhKE¶ºÐË<P›PXsuM)ƒ¶;QD“…ŽíA@bKÊ/¶Ž-œ€®¢™ä„5SÎЀÞÓ–étf]úMŽO õ‘ŠóÖa§Œ#™§9Gñ6ÊÁÊæ<¿–E4ÎÓµò0h‡/E4‰2Ô¨JP~üØ(7柧3g{À•ï±bC«pGæ EôL¸â:1¹­ohj`x†b„S›5¥8U™º*ô`eÎç¦ó&†î@@jœ”O“˜J§ù¿Æ6†ç ÀK(²®§NrKKÊv|Ô²§NQeNÖO€ªL²RŒ#äà3ƒ"G-OˆVÙr–Ñ$Ü(j€€T(?ŽÅh}}ô¿¨‹?«ãóRS^òz[×eˆK.Î`é—Í&;Œùzª: ”÷U®ð0&í5 ´ä#N4š$Æ:ééðÍ\ø0èl; [ëL+|óÑÄk%  UIÊO¿ÍÍ"Øc“~îõ’ê…Ÿœ&¶ëÅÂOù±p/u®*uÜ=Våç)NNÓ ¯rrò¾wÆ¥ÇãD‘=6ç®c·`½æÃ’érõô2qÃî‰ÙÊ롲‰²¾­­Ñèho¯1äÈM6kSZr}¸¾ŒÓƒ…/   P÷ÊO~´_®]úy×Kò–pž…ŸšñKQ3mè]JIšŽ8Rbmà]1êíqOMA ÉÁL””r4c¨  Pê]ù™ÂOJ?cÂÔ±)cA$+>ù½ ?©\úÑvnæå]JI¶ôÙôJÞ£á+4«àë„€nϦm«ž«Ä}¸   °u®ü8äaNÅJdršÖS0õ,ü¤/Ðvm‚Cyt>ƒ¢A`Q‰VŒö›  "àN`«ê  @@ 6 Ô·ò£ízÍ}?t'¤ŸÏâG÷ÂÏü´ž)ãe˜þŸqxƒc ©wŨOþFq@@@ &°¬à5Ô€…_gÞ6»5Zf|r¤?6´7P754”ÖÆôA³ôËЮÀ#ò=‰†Œ–J§ƒb~b™˜nàŠtQ¬íç‡6‰¦f‘ºÇ¢]¡œ9s¦½  ¨=øÝ©½gŠ€ºV~´>ÃuاÁ$*^»¡ <­·×ÀÇ÷Í7t¾¥Zv“®×¦9aLÙTѣ߃C¹‚Àš5k¥($@²¿;„pjŠ@}g{kêQb0    BÊ/nƒ€€€@Í€ò«™G‰€€€€@(¿@¸]¥¬ãUŒcV6•ì`f²í4Æä˜÷ÔÆ”šÉ#åDu§ç½höD­W#Yb¶6ÏüÛ8B¤þ¶p@@ $ üJ‚FbGÀ:^…Ög‹óS¼G¹Ep:šhãõ:E™ôÀÚ;œª‰Ý¿Íóyçï–D`kŸ› wufx`*žrìSäÓ[Û&9N¶óo€;  e%åWV¼0 hIM›hËÈäÐ67ÞñaÓ 0]|SqìM_Ÿó˜ëâÍ¡%€€@e @ùU–7z[dÃëéÙ¤g+­cÌôT¤•žäzGçò‰C^BR•fhP¼¦l(_ž°0/M¹»v:&)YgI³ÜjÙ¼>©Ÿ1C{ˆ'× áçtX˜T:æªá˜†g,AYt:޹)dy…p9kƒ¿sÈ– ¶½Bô.ù†îA@ æ übþ€à^É ä¦ZFi³Æ6R!‰±N‘žŸÐdòÒÊó©+ôn"-ó•¤*s™éa3ÓÏ–C í"ûcSŠ®5ÍtÌ2í"Â|ùi–[”þ1@Ú‚<Ý!·¢t:,Úíø9£×ô¸JŽÑVåìþ¨6f;ÚpÉ<èÚ.ýèDÙFÎñÄÌÃMMèpÏö, ù¡©vSq•ƒº(ù'A@ – @ùÑÓµE¼1ŽE~úf„ÆôÃSÂîÇÎïEÆÔ}JÏ“Š™sÏ£«=+–C£P_ÑWj¨O¨2Òiš‘¬Õ´±n–™º€Tv­ŽÙzÖ§ú‘Ô1¾D‹FSý“üô ŸÝa»µ3Fž»lZw¿¹·?ía` ?Ú‹œ´¤È(»•ÊZbÍÙÈœçgjg‡{¶gaˆYîX4MP¯Ô…ÇK€€ø¨{åDz)1Ý/?"ÐqH|—UÓµð9ûÕ4ÚÒúJgé)#*7?Ÿ :ޝè\ç”)gD{g×~&ÅT¿ÉcSR±Úš>$ó­Ü¢Œ+¢È[Î â%29MfŸùH¿:Ýf*[ÙxA…èbAþ¡1€T :W~3ÃÝœc²Ryͽ½®ݪæQÂÑ P*U㜮Ռ¦ÏɳÚ"©VÊ+Õ9ztB3cÞ®ýú‘µöŒ¦/䥆ÙLƘäGIà;Ìée=GKxÝO>èZ®“–r™ô±>ñÜ'mFï­ §ßˆ”åȸü£‹;6âÎÊ êBÙ/ A@ þÔ·òã/xõwŒ=lLPiÖI}.;šIb#ÕZA=_± À0½iøX„Ϥ™ÿ/¼Ë ¬lvØüûÕP•¶‘ü¦§{Å‹¶>ý}÷tRùQºU¹ÂÃŒ|h§þ:Ç¢§k_¬$ýR¶<0§5ó3«pØ×P´m#él;'À»µNW¶—…ŸcE1ûÆzMÏ87ÐÁþ^׊㈠È”è·Á–·|ê"ÚÈP @@@ÈårétúÒ¥KfÖ‹^ÐÛ‡zè—a×_|kÈÞªú^SŒÂÃ0G@óúlçýd%.ô¾ä5zÝÐ vû6›2ïç´#ËDÒÑ墱æÀÂm–Ö iõpËÿäè£öiúåîÝ»CëW(ÿ8ê©þðÙRÒõ4ôz+ýZÕÛ1^¨ ¡ß›¤å¼¯¾c~¤“œs¯ô¿x¾z¾ùШˆipäÅ8&ò§B*¨æã»„Ͳü£E5gß»Ž!Ðn‚à9}Eî ~  ñ%PßÊÏÈVUèùTz>¾9¬h‹ *DÝÄ™€53 =›ž(ý¹$q;|º PßÊf¥÷ó¬&kúÛÌð0M36ß¼àHÄùøÁ³ì í5úb‚B-£~ khõ«€= k† 5J Î•åmGh}j¹˜Ö¾™×ö†Í7/îÓu>~Ð,{ÑsÄYóÒËè‹ ŠZ€€T ZáA3üq’=¦×ô7ÿöíÛûúú‚ÇñÈc»·­7¸î‚Øõíáî»'ÅøøxGGGpÜB¿7wíÚåxË€j†Àš5kjf,TŒÀ™3gð»S1Úè@Ýg{ý À¨(¿J‘F?    °Ø üû  ¨(¿J‘F?•&`ø%Ž3NØ+¡û¼žìÇ"*€Ô(¿z{âoLÌ ØOÉhîÒ2ƒ´8.((¿ò±…åø°'3ná¨XOϦ½Àª¡Ÿìâ)ð•*Àæ×|æÐXÎ8ZZä³§ŽÍлùšÃƒY¹ƒ7»% ')¹lOd‡¶òww@@ê†@m(?úÎ3¾¸mON|ç&Ð\Ùš§%¾[0;L¶ßËúUˆä–ý[¼n>Œ¥¨u؉q“=‰LrBdWùàó™ä¦ZFççé°2ú$Æ:õü«8¼ŒšÚÀ0ë2Ûå²ï@`óTKÂÝ"7w‰÷tÔÌDZÉeýLµ\f@#§i Z¦Ûí—nÃÛJi…  uD 6”=°TjÊõ½<9˜Éö$­yZ“=|^ý|´Y[ •F_¹â2¾­#Z*Ì]Ô%`ÍÃc½4slJ3Âl|b³)³R››Ù–ˆÃõ÷Š×òâ&†¼kÏzt™Ó¾×àæsô1öŠA¯UQ’Ž:âSÅ   `ˆµò£“åΞ=ña%“ÚØ![Hfr<›N§#6VT‹þ¬hŒ¢"Àè—o+hp>Í9·›·OëcÝ™\o“Ѻau‰ @@"ˆµò›=xðàÉ“'£ ¦¥¯?iM§éóSC}Ö!°VúUŸ½%uÃ"¥k¥„eôŽþÕçTéé@÷T-û{«²9q,È[«©­º²0È îE y}R3Ä–X_ÑÁù\Û%Ô˜#t,šx’¼‘{jÎÁºl»þq”™hm¨Ox”hIñ@úFÝ[Nÿ;Çš/¥•ÚJA@ê‡@¬•=†ÖÖÖœ8q"Â#iëH›ßë‡Æ4=ƒ'ZéWë{<—™î)ÙœcM¥5;JlÑᙪEid}²͹*h*•rž™²0ÂpQ¥`m#<½Oˆ}ž½çàQ¾"™IÈ¿„(ã&šQIÜ;¼ lΟMºÓÐЮM˜“ ¤(^ŒkFÜš>Þ"ï¬kÅTrº[ „>Œr QZŒ @@jŒÀ²˜gݺu[¶lyòÉ'ÛÛÛ Ï„x§÷m}C4Ù½­7OÚ¬¾Y³åÒdlŽë§†ôV)=ÂB_©Ú­©lS&ÚÄT­l¢!#[¥;´Í-©lû¦–|![·‰ÆbžY¿Œ3ñ×tfœ§ó« •žènã? °rÅôxVÜÑù^g{W5þaÄ^CÑDÞöÚ7Kl·|› #žÞôžíå†7¶2þ`·ôu:ê´¦hå7Þ€Ô%¸Çü衬]»vÛ¶m{öì9}útÈ3¢lMö›™^û—>¥S9¤BW~(bCuÛ9U‹¿ËçG5ޏ˜¹:U+”€€€@¼Tò;uêÔÞ½{»ººÃàQ$-™iÏ83½š–ŸÎÉ<)*̆ë¾ÏT-’¤"åökQ-*ç™) £ZD=(€@ܳ½sssããã[·n½æšk" ‹2¾)m½}cjÆià'lSétÁ1?žªµI´æ‹Âã¼DCyÙæŽ4¥¢2tË;sÌá´4ÕÐÀ…´!ÈQ—T:šá 8 xÍ   ‘Ä]ù>|˜æùQÂ7p4ö/B ƙӴÌrïd+{óµ÷…èÖݺÍ5Ì>)Ëé§çÚmJiŸ = Ç›    …@¬•_SSÓÆW¯^e$¨gΜ"àw§hhUJ ÖÊ/•*85[¥n—„Àš5kJbF@ ®ìÃïN]=q ¶Î TÁ :B>€€€”Š”_©H€€€Ä”_ÜŸüR€ò+I؉'Û¡Èú1ÌeòSúl7î- íÚ:_Ú:M:´‘»BÄ~•Õ”…ö žå…éÞƒ€”Š”_©HÂNü°JIL÷óá-|j‡lçùEv7T E¶ä¨èg–6z”§Íh:ŠPmÛ¯­ºvIKi_¢‰4íF9êÚ3³¤À€€@Ù@ù• - /2™áîLÒ¾»vso¯ç ßEöÑ¿{>Ø97vÈGúù·Ã"PÊÏž#ÃYºAÏ»ŽîñI}é…Ôã€YOÏ&ýÔe+¬Âl}˜¸€ÞÑ-¹LÂ8¤ÙS?R[ÎYtã1h%Ä%MåSžâ|™YY§£?O5Ë•U§›"ô8©wDã2[uj¥‹‡¹¹”¶á}ÂMÈjCùÑpõÙüD:Û®…G†€Š5J@Ö¬\nªe”bi#–ëÙÕù m@È>‘E¼Og©€Þ‰ä&Õá£ùõmæ…@´.ýŒ?ÑŠ£|処ÚIî¸Ì*\œȦ:7Óé€!.‘h2Ç`˜Ë h4Bò=—”)nç¸dFµü'µˆå>->†h6Ÿ‚Ù^€€””@¬•ßìììÁƒOž†2|IŽðI!Ñ Ey ˆ:GAc>Mô³ÇɵЎ¼FPuO€&_è‰õºG  PIqW~sssû÷ïߺuk"1F'2LœŠò¤ôe†œÚk!•98}r§£Æ5#e"ÞäZhG•| è âL@ÄÜÅÕžM[‹—ãì2|Ú"÷lïáÇiž%|±;rdVZËàjsg×ÜD'öÔ™žsØwÖMÜv<z› P7Ü¿*u3p @âB Öʯ©©iãÆ«W¯Ž -ø   ÕL ÖÊ/•Rï¨VÍÀá{ œ9s¦ŒÖaj—~wj÷Ùbd  Ñµ’Í´¡±V~x\ P5kÖT•AˆÉ>üîà“õC î+<êçI`¤    PnP~å& û    °8ÌT/u/_Cù-Γ@¯    P|½1Õºƒò«st±HŒl‡÷ã oBgû'mZ‡úØ[`×ö}z-f|OsóimõK­CécÅ  ñ#`ê?(¿ø=xT|À¬6!?éù–c“ 0Ê›Ð'NöðÄóú;?“Evm[V~}„•Ï L¥ÓSöãfìbÎGØÓ¯©0q@@ 2ì?ê±6”Ÿ°xÂ⸊[Çpà ÅP [Lß^•ùøU°—ü´u8XsooÉNONµ„ž&S®®  7shLëìëëÔÆÍÐ UA@j@m(?zJ©”#¼A%|.¨x|ǘHk©¡Qµ¡yšHf^½XëO¼nÆ×Ö‘ÎÉ#œÍ! }?©Ÿfé~ëD1ó¯W‘üÀþmÏj9úÔH+Öß®?]kZH/–qñ™´Y´šŸVqw˜ÿÞqþcŽT¿ÍÍtÊ´!ýìö{̘}õôПIÔ±s$y+û]ùÚå¶w˜Ša×ÍG8ˆµòËårgÏžˆ-™t†7&dzé´êà]ÓŸ·›ÊŽ/$ Ñ7T[ tæ^¾s,á ç2Ú()ÿ¼~º3k¬ÄX§üc`BÉQ+fÑüˆ,$ƒâOˆ<%{ÛzûÓæg‡?kâ(hãòvÚ‹eÜÞ¥p/“”IëüÐT»©Ws™éþ f‚ôí û3¬ ?ú«Ç”~vû#æ@Œ¾rS-DÅ6V‰—•÷1ºÜö “þþÒ½w[÷ÚB €€@É ÈT¯™ð¥±V~³³³.q1åžÍ¹¬¬g‹žÓàa¥QOJe/^¼ÃuHþ‘îȤ·9J@@Ê@ÀLøÊqW~D`íÚµÛ¶mÛ³gÏéÓ§C€ÈYM“"Óëξ©šò×r=Bƒ*6U_Ö¶~Zæp)앜›²P’49Íñ'Q&ã{<ÝSÓÓ½r…8/ âÕ?âò,·¡4h2›õþ‘¡è:J/bauëè’R¶ZøLóÃc’,ü1HsNƒÝ¾²/×3÷²â¼oV:3®“hfÝ0iˆô=úßbUÿÉÃ@@ vd^Kºµ,vÞy:uêÔÞ½{»ºº=7]üUÜО¡G9§Ï"ÃúÅý Åó#¿ZúŽºK9#Ùë¬èjKoåÇÄ|aUWEáT]‡÷¢Ù›=Šˆ™Â=ócëvÉý^þÚí«ûâ*ޑޏ:šé£u{Û¦zž§‚*´ Ž IDAT² ÙGƒ“yù"î1¿¹¹¹ýû÷oݺ5‘ÝEM0£ŒoÊ5=Ÿ–jŠÍ8ºeöÏœ5Ð’·¯74ËqvAÙ>}5fX®#Ÿ5öX1¨-úDvq€½Ž{ÌïðáÃ4ϾOÁæ ˜ƒ¦0Êm1eÈ ì 7A€ ðÎ/™—Fˆ.€€,3àGÝË×±V~MMM7n\½zõâÐB¯µFÀ›-z„î¤fцÐ@@ÊJÀ.þ¨£X+¿T*UV0   5O@Š?ú—FkåWóO,-3gÎ”Ö ¬@ÀïN HÁGc—ë< üêócÓQ¯Y³&¦žÁ-¨Bryi>SÿAùUác„Ë    €©ùdõ¸ïêmP¨     & ÅŸŒÿAù©¡@@@j€€)ûäX üjà™b      `—}òuM(?:t“<ŸƒÇl¼'†zN]¥xôÚÎf\Æi£âÈQ›mÓ‰±éWÕ8#~p@@j€KüÕ„òk™Hf'ÅÃjöʃR©©KòíÉÁL.ÚC¥ãdBœl'¼ 2š‘rÔò¬|¨ÄX§îóüDr:_ŽÎu›>>”±G˜(’€]üÅZùår¹³gÏF%Ö+5)»d¿®û¨a2©š±,LŽgÓét‹V¶‘üP*;.…eaM+W{f¸;“œ8j޼mdÇÉV?z¸q,ù/ùkå7;;{ðàÁ“'O†ÃlîíëÞ´©]›°Kž–¾~3¨Çû:­¹j4oî4¥Ÿ-£jË$[¥¢Ð3_‹“zB–ª™m¬Ä¬ËŒ´3ÌYk#éLFÚ³ZŽ¢Ž0äÌ¡±\ºC©õÂmŠÑªªõôPö˜d%¿õwNLx°fó‚£€€€@)ÈhY2_ÄZù‘£­­­8qâDèð›{û“9m¨Ï%Ú:ÒF¼Žä‘Ö¹YæCÍ©+Lö$(´&ts~hª]j6Gž50Ô–Ë h£Ôv"moè/éuNÏT“q#];¡Yê\fºÃVNžHk"íê)Õ’>2LúÅ&5RW›j!¹êU\ä7ùåòAÉ„læÌæj–((?ùNýÈqW~ëÖ­Û²e˾}ûòùyk“=íZ:™évÎë#Õâ“.µV3Ǧ4#´FJ3ãÉt"ÞfË0Né3IŽj)]„òë©c”‘fã"˜GW{V˜¦+¥kY³šŸy£AsïQ–h²ZD›>Õ,™¬ý(Ôç¹”L„ç TÙžžP   °PqW~4¾µk×nÛ¶mÏž=§OŸö.龩¡¾‘¾!ÍXêaV¥\-Mö›ä•¯9ç ÖvÉõ Fì)-㉬ʃ‡nsÍë“R>ºoÐûˆ6ý«Q‘’èìMxTt€"j!PÊïÔ©S{÷îíêêjllôÁj.è¥é~”„umåÂyàL{¦ØL¯Ìf !ÆËÌdEüOÌt.!N´¤Œ­)ñqÚ],Œ»–"»ëø¾§È¦–Ixö°‰h3¸Z~:'Sɬ€=(™xj¡@@@` ˜9߸+¿¹¹¹ýû÷oݺ5‘ÓØЄ43Ò­œ„ͺµ颔2!kdW›ö™·ZòfŽ×ùNµ‹„,ÏÉ“q9ʯŠ_Ä%Ä—tB¼×"/%fã$ߤÿ}d(ïëYáÁ]ŸÐ¤k”-6v¶‰j3¨k©*É­îé¤ó³û d¢xL(XônöÛ@;§ìÞ½ûñÇ·—’0ܾ}{___°<¶{û×zƒë,ä.ex—,YrÛm·QÂw!vÐvÑ ìúöð÷ÝìÆøøxwwwpÜFGG;:‚v,$9wþüyÒx$í¨ÕÊ•+—Å_SSÓÆW¯^g'က€Ä™€”}ÒÃX+¿T âüA‚o   UC@꿸Ïó«œp@@@bL@Îëƒò‹ñ#‚k    PRP~%Å c    cP~1~8p @@@JJʯ¤8a @@@bLÊ/Æ®€€€@I Ô†ò›ìѾàÿxŽ0+)0‡1:ÑVt¼ixƯéZ@¿†…–³/è¦P·P@@@ FjCùÐÔP^Iǧ«ULûñ¹miêz´·YýL'{Ú³é‰ùù£~ÔÍ"—’®4ÔßV®n"ûƒŠ   ±&kåG'Ë={¶0~Íë“ÚÔ1ß\aÆJQ;Õâ{àp)ÌÀ€€D&kå7;;{ðàÁ“'OFަMŽgÓý"ÂÆñ°žJÇŠ ‘˜5ÓÁtÛˆ Ú"gTK­ÚzOÇ%adXO;‹@•´gµ\&aÄå<>8&õ2õkV7“¸2ul¤´-ûb$ÎQéoÇîyF€Z'kåGð[[[8pâĉ°Á‹¯vmb¤Í¨œ›jŸ§÷“=‰L’²®z:˜¥T[G:;ΚÄâTJ;Äq™CcÅè&ÚܘEUb¬Sf“'´ßI}¹Ìtw1‘Îe'µ¶z%ÒÐ" «ðAøi:ɯ3yLí²í Ýâ¥a«’EqÑmò²/½ÖèòíÈéžQÿ¨qW~ëÖ­Û²e˾}ûòù|àC1çùµ X R›Å¼™cSZºC ÂæÞþtnšŒ%ZR"-L¯³¿SH?~Ü„neÛ­åÜÜT–YÑXy¥†úD$*½g¥\ÛpR¼Ö§ ²£ÜnMúQ(Ñÿòï(È={¸   P3â®üôÚµk·mÛ¶gÏžÓ§O‡soÞÜ™ò×fööT“å ¿Ímôz:o?WKÌjÝfjXÓx†~Y1ÅpwJYƒ²¿Ñd'òC©R†-:!PÊïÔ©S{÷îíêêjll *¤ÞržE¼ìCOíÒ칬Œÿ é×=@¯Y£×SãƒÓ"â§_$ÿHaqXP4÷Oò†;Å5Ô>Dk+kå§õ‘ñý.¼#Û¸   PÕâ®üæææöïß¿uëÖD"x‰¬‘å yÞÍMÚFx·1+èQ;–~9]ì±ôË H—±’‚&ŠÕ"Ü\Ó'Ú7 ä(¯áèöúgûp¨}(àÓÓÖ§;Ñ=Ôc~” wìc³àŽ ð UA@@ª‰@휲{÷îÇœD‘é8%·oßÞ××<”GÛ½ýk½Áur—2¼K–,¹í¶Û(á»;h»èv}{øûî vc||¼»»;¸î‚€€H£££4IÎ?Þ¬³råÊe ýVSSÓÆW¯^½èžÀ¨±V~©2ÔÀg Cˆ ¸Ïó‹ 'ø   ÕOʯúŸ!F   Ñ@ùEã„Z    Pý üªÿb    ”_4N¨   ÕFÀ¾gŸôʯڞ!üÈ\â¯6”Ÿqæ†8¤Ãqž…‹ ºÑ°I¸AMä { oadË‘*‚€€€Àb¨ åGôRCy:yd~žOió×~tï¼÷l·`ø†åùyýзàê¾w½²Ò·*n€€€€@©ØÃ~±V~t²ÜÙ³g vóú¤6uŒ£z¸@@@@˜€H‹ò9½±V~³³³>ðæÍ)C}…×.¢F[ßÐöf†¦:7sV™¯´Š+JÄ‘šPˆ±›´¢ÿj”"|C"PÊïÔ©S{÷îíêêjll м7sh,—jIÐ ¬ò²~-iEˆHÇÒEbηš­9iKmlpp,)§j¼¦$k$yýºQ”“üË¥°EE   å!wå777·ÿþ­[·&¬æü/c6O¹“û¶ˆ9yíbò߸¦JãJcm#zµn­SUÍœçgd‘Yúe³É‘"¦«m$?¤éÓ ‚x”÷5Vx»Ò C]>ú w@@@@ T–•ÊP™ì>|˜æùQÂ7Ð>­Ÿ˜ñÖ°ë·©H 6ó+7«uo¯ÓŒÒ2'kõ<F/dÌêÈf«Mé¯w(… ˜lNSÒèE¬•_SSÓÆW¯^½£-€€€€€”€±V~©T Ï @@@@ Tâ>ϯTㄨsöƒò«óφ   PG üêèac¨   uNʯÎ?>€€€@€ò«£‡¡‚€€Ô9(¿:ÿ`ø   uD –”ßÌð&qb]›†gá!Gs‚äeO¥‹ÔÄ뫪вdx.A@@ª‡@­(?ÖR‰é~ÚžZ\£Ú!qo„K%³"4ó©’Ê òCSíþÏüGÌù˜qÓèÚµ 9´|Ë1ZiÝŽæj€€T9X+¿\.wöìÙ„g†»3ɉùã$]­¹·×|¡}é«4¯OjSÇJxÌOçR-ú¹Å‹>´ÒÂE ˆµò›=xðàÉ“'C`ÌË¥;RÏ3_[IážI*lÏj¹LÂÈÎÚ2ÆFÈN4œÔ3ÉThVñ¦i-?'dzéþÞf*Pú ŠØv7 s·­#Ët[췥ןƒüt÷„÷   µL ÖÊÀ·¶¶8pàĉ!Á ‰…Ô#%6ÈáAq´µÌO¤5‘¢å€ádO¸ÉéZS2å2Ú(5˜HgÛºÅKzË zRÊBDÒEÉY+êU°ºÕƲîäg¾sŒM eçu{¬Sf™'´] >ç‡4»ht[Æ{:"wå·nݺ-[¶ìÛ·/ŸÏ=–Ütàm[ÓDK*ki:‡Í™cSš;lîíO›FSC£"~G±7-Õ¹™_Š×Þ|®9ϯe@±tÃÔuj¨O„-¹gEEž(¦zÖŽ°Û¦âÌN>;¢°‹"ú!wåGObíÚµÛ¶mÛ³gÏéÓ§Õ¦ysg*;ùTf5ªu‡,¿U7Ž\Ê.EW£ÑÍöŽ)‡šÖØ"’é4Ç€€€*P~§NÚ»woWWWcc£Ï3ã¸åa­Å´3ÃÃ,)¾gÈ/šxgkL´üPʲãe†‚œÈ*çú¸à*橇2í냣um$¹g—µÉacŽŸeת"Ü6’¼fqnìX`â; 2Ú@P @@@ †Ä]ùÍÍÍíß¿ëÖ­‰„¾¶U Ÿ'Âq&T¿ºµÍùÒ!Žkz •?ˆ‹fô‰%bõ„¾Â£mÄ4’ ™sî虺kG©‘uåærß• Cm#b!]ÝZ§;ÛÛ¶~ZNd¯'„]·Ûš>ÁÐÜH0•œæ¸¦hQÄ@.¢@@@ ºHÍCÿšn/‹ù>Lóü(áî'O„ëuW#E8?¢Êÿ6ÛJÄ {ÒŠ#tßÌŸú½–=8,Yžx}à>¥M›A{µ^×@–En·9àÙÒwÔº Þƒ€€Ô%X+¿¦¦¦7®^½º.     %&kå—J¥J<\˜ú#`&|c­üêï¹”jÄö¬t©l€€€@Õˆû ªŒ€€€€@l@ùÅæQÀ(3(¿2†yˆ (¿Ø< 8   e&`)?:÷‹®2wó    ‹FÀó«Nñ'Îå°ÎnÓiÎ ojhØdœ{V1Ä䌫SãØ±‘¶ÇÍŠ9†Ž@@@ꀮü삯:Å_*5å:ºvr0“‹ÍãM åEL•hƒö‹Íc#   PgÜ1¿X ?—Ë={6¢Kɤ6vhƪ<9žM§ÝàF´U¾jtÜ®6uÌæfùº‚epˆõ<¿ÙÙÙƒž‚<Æ=Ú!àŽù‰”dŒÖy´¶¶8pàĉS<-;.¥ßÌ¡1ÍX¢%jad[ͤp.3Ý!3°9C2zªMö$2É ®5ªeu'¨p¬SÏÞjœ²šÝå\&!ôãxÇüÑ^!üVXš=ëª6slʨÕÜۯ玩P3”\{67×”ÕîŠy~ù¡”!M¹‰ËH¢%•µé;®îjÜ7÷ãD’¼¹´cè¡ùÅ#àXáaFûbö[»ví¶mÛöìÙsúôéúÍ›;i²ß¤ÈôJÍ$P ¬]‘;_þ6"VciaM\"@éjîÕ¥©¬î4ÒÜ{”#‹Ý,õŠu *€€TŒé {_î˜)™Š¹±£S§NíÝ»·«««±±1¬ Ç’™öŒ3Ó«iùé\ª%A9$æoÃ[­y}ÒÈÓÌA=^H…ZÖ±XYMÕð¯›óÃ^#¢>É?§¼DT0’×Ô·ŒÿQ`ÐþÑ”Ao¤}Sß\Þº:òA €€€@pÌó“²/Vâonnnÿþý[·nM$X¹…_”ñM9ÓÔ† 51Ñ®{:óSTká}Xx†^·Öi¬nÉëöøè”ՔΊ>XûyŒ«Khb¡H×r…)ÑuÏÜ“¡EÎûJÆ5ÕÊe’ŽI}R¡Œ†v¤ô…   5B€¤„9’Ú9e÷îÝ>úè¥K—¨T ¾þüÏÿ¼¯¯/xÄ<¶{û×zƒë,ä.ex—,YrÛm·QÂw!vJÓ–×NL÷Ü-M·µae×·‡¸ïžà±Œwww×Á]I`tt´£ÃÚÆÄ‹epppÇŽ/^4o-£Ë|C¡>|± ø555mܸqõêÕÞÁT¾„7†N E yC¢—Xq1_Æ|6ƒ€€€@yèq=§ñeo¿ý¶yߟ§uP~åy °    • ÀZ®¡—q•(²½t7V³ý*Á}ăMV‡#ð@@j€ û™#±”É Ÿ©ùó«…^UcXµöô¿ünU¹ gA@@`Ñüç¿û¯Á}ëÒÎYɘçg[áA û‚Qâ.€€€TcÙ®ŒîÙvuqŠ¿ê ¼ð!àÈöÒæ}æ·Áh<+]ëÜÉ×ÇÇ_¯t¯è@@ª˜@a³¤h-¯#Û+Îû9W]ÂW¨¾äÄü|›ÄÌðð¤Ö+_‡<ÎÒª"C’±?=“~Ú¯À½bÚFæçGh¥u5„ˢܾùÖ;¥_t   UGà…#?öÙ;ÏJŒs{)âg„úâ³°—N–;{ölð¨ÄÝ™án–}VŒ­¹7šì‹`»¸*Íë“ÚÔ±™â£€€€”…€¡ü„q!ÿb´ºcvvöàÁƒ'Ož úÌ¡±\ºCᣠ٦a]~™¯)'&nè™”yÔ\&Ñ@o¸ë¦^ "m›†'õFTˬbšV¸79žM÷‹|³Ò{¡ÑÚ°»iø˜Â ²Há­rÊÆ(¨;åÃÑ·¶¶8pàĉ!¾¥Z¢ž¨KçïrV˜¯‘6Ê£N¤yÖ¿a•&SÆt/?4ÕnJ»\f@¥Â‰t¶½¡[¼¤×¹Ì P‹öKˆHºÚµ ßY~î6â½Õõ¨6fNTV5 •Þ* Íà&€€€@ÝP(?R5ñþºuë¶lÙ²oß¾|>äUn:ð¶­i¢%•µ4ÃæÌ±)͈6÷ö§M£©¡Q¿kë ™Ø¹™_Š×Þ|®‘,[¬pcãú=ê:5Ô'–Üs„šÒ[eak¨   Ptå'—tXÿÆIü­]»vÛ¶m{öì9}ú´ú‰4oîLeÇ=ñ7ŸÊtïü¨ÖM9™àUW[`)»].°³ZoþFvkÓÕhºú¡#Š‘Î>q—÷–Ux¤în}⸻¥_¹»^à{…‘ç"W?•5Û™u•|Stmû±F]ö®=¾V¾G ( .G%VÌÏ-þbìÔ©S{÷îíêêjllôqŠÃd”‡µ”œXÛ«iß3äM¼³5¦Åµù¡”;dÇË2 93>(ȶˆI„tuk‘²½šÒ[e¡¢¿ê):þÜÁµïîºQ{ùà³V,-ân$´ïÞë©úóÏ8ÐE±à£t‚:  Át§i—ŒªÏÊÞÓ½‹âçÂü<ýÈ’`s•¹{øðašçwÍ5ׄwǛ䗹3o…'®‘‘‘yQj–›ÀèRæYFì&B_Kï,Óó²/W±é;!mš/,ÇŽööw]ƒ¶U–wÞ²Ü58(ݯo<{è%íÃwÞŸ¾ó&í¥§Ÿ{C÷Næs)†wëÎM‡…FÚñù¯_}ïS\qÏ=Ws$ÌžŽ¯åž!•%ŸºKf™õì­‘tæšö|n0/WÞ3ÿ¨¯Í¦¾ç½]ØKšîÚú)òó.sš'­ìvãúV"¦½8CqRÓ‡µ¾ç©‰·Gg!q££ ^b.ËöQ+º°%¦K•tïA@ôÐÞ»šfþÀcå'ß¿£iæ,YtfMMMwÞy'Íó[tOàÀb©Þ›6·^ßtý ¤c='¾GúXð}úGÏ{âÓ†kÊBãæ-ßÒkvíþÅëßjµ†Cåž'¥)™!µ¥ƒïúŽH›j/íÈÑ´ëÒûD"õõÝwSÉW½s#0zùÕ„iÓfá¦í?%˃·øv!+<ý!æÂ3¯j$ˆoo ëT•"7º#ùø‰/ Œ¯ÿtç‡_Úq+é0jThd)\êFDÌ´lº¥èâù¯f&k:ŸEØXp@@  RÎoh ©ñtåwñ’F?o]´~.\ÒègѯT*µzõêEw,‘êÕ^Üõ‰«YŸizÂW&»>Éîú‰!¾”…¡žÛ[5µÞõa >cÌÛÐlê*]?Éð•ð¤¸Kj5ÙÑËy¡béºñ®Öë {/„“6 IDATÊ.Œ fCS‡º±ázÎt;.³»#“{èÆSŸá(&©=QIΪ ДAÄì‘]ªºŒŸ©båËU¼XÒr.Go—üóÿøå… Ú…‹Ú›oZ?\ra]¡)”„€Hõjzü)Ç×l ß’ôÝ%=Ii;ró+ÏÞÅu·oæÙ{“Ù<Í}´éE…?R4ß}û­Š{²höø+ôâÃ4"ˤh¨B/úš º¡ì¢éÞ§%C^ƒ=oÔî€(–;Aûõ¯ùçÍ7~ý&¿ålï;ïhçÏi¿<5oþ¼snþs (JpÆŸô‰k”ë”q>‡“ú†RÚ½5£ƒöÂ[>É2N†ôdw2”èæñã”^yg©f<"ÈE*>EéBBxrÏS!©Þ翞ÚEó#wÜ‹¿_zqç£ÏË:G²4ƒP|~϶1-°J#c£Ê.ø/ùQ—¿o¸  °p¤åèç—§çåÏ™ÓÚùóBù;÷öÛçÎýÛÜœùCïß~ûí…w °RձؒFÄT?Nøj÷>MÓû8bÔÄúF¿«*´÷Þtïƒ$5ôæ ’ »ï¦x±À¾©’]ÿù/“FäåW†‰&̉%#Šl¦¸%')z:ŠÔ…ÔRRƒ*ü0º¾÷)žH'5+ªÉ"šVHÓû´'ï• \îyš‹e¡stQ‰‰>T]ph“{³ý¾›ªèë?n€€ -G‚Î.ðÎ;×°ûGûWÿמG¿ÿýÃ/ÿw³ù'6^ûßøëG¿hP{ä±ÝÛ¿Ö\wA€ìúöð÷ÝŒb||üæ[ﮃ»æüá§R»´GöC3áã uMà…#?îèè@ðÙû¿¶óßxá¿ZGà¶~èÚeßþÞ“—¯¸@šðßþõßÌÆo¿}ÕÛo!æ·@`‘Èmnv„¯ê]$ÿÐ-€€@\–£Ë)ðÖ-#ïν}îsçNÎÍ™žr®ÙÞ¸<8ø:}k=Ú‡EìM @@5wŽ&ó™u(Û»äÜ›gΟçüùóg~yÆü9ÿÎ;ô`+^·èXŽMÃ3†OÆ;qX‡çhÞ™áM zmg3ÇŒƒ>Äi6Û ·è[¿Jfta.ÙZ;Æ\ÌÀx–ÌÉ:7D[ëñ:\û~„uNÃð' åܯΜ1.œ?¿ä²÷^qñÂEºÞ²]Tp6z©–‹N>Kfù ^M£So§†Fù°ºR©©KrÉä`&'n…^©¡¼<ýƒl'¼ ÒhYîìã#Ýô#E&’ÓùPНÙ+[Æ $iM»yHñŽ %€€€À" -G×Ù³o™?T²„”È¥K—Þ½téü… æ•еH~ZÝær¹³gÏFq£­oHjRE>‰`Uoe†pÓÃzêS]wsúľæÞ£¬édë™cS2dHÄÛ³F•”®_IµjSÇ(YíSÍ’±ýr[#ÜHê8mt¢¥"©`ese¡ŠÊ@@@‹€”s¬î–.“?TÂÊO[·lÂo Aþ‰ÇµvíÚmÛ¶íÙ³çôéÓ¾‘î›êéÒŒ¥fUÊÕÒd¿I^ùáúšsÞà\mr= )^Géd=KyÜm^Ÿ”ÎÓHÓÒ2ÇVƒæþùW èWÑ]Uñ©_Îæús5ÝEGišù¢ã*«ñr8\ ›od·êlíÖ EQhýb=W{[¬µrµóÒ0J,ÿ½uÊåM»áÎÌ>q—ãWòHŸxëjH»Ž‹óZøtfº%Ïná:"½°ÊßhË;×o½qô‹eDœ‘ãuÕ[¢iäžî†rôª& ËŠ¶ä•â¨EEÀ"ÒoÉRR~úÅùHù‰ˆŸÖ°„Þ?R$.’›înO:µwïÞ®®®ÆÆF÷=ý½¹ —¦ûQBÓµ• ç3í™b3½2³)DY~:'c¬=¾ݥȣ–Ixö˜aEÈic-gApµ ~5M´Õ×§§¬ÏtC?”Í•…~^þFö/_½»ëÕ‡…Ô+÷¥ü(w§^û‹ç·6ûôç¯óºZ²>ïmèp ªPìØãâ? ¶!¼‘ýêÁ»ŽX» ÿá÷^ÙÞÓêAvýç÷ÓéÌæ}|¢ oKôÓ¯ÞÓ÷¼^[/<²CÛõÛiÑžßz}K#>îYor8¡åÍsÝód×î_¼^†conùVnóÁ*òMº(XÎ9Íåãs{ùâD°T€1Šö‘_sssû÷ïߺuk"!§É)*¤Y¿¾‘ '4³níGº+•6jØ-ˆÅâòì¯gÞhÉÁ8©ß¨v÷tRùQFÖXᡸkõÅIÞ ­]ï”rç^8L’P/ö(C£}`5E¿6¯h Oï=ðœÂ ¸¢®ºùmªúñ/›}îiíÎûÓwj‡ž£?ñq,2ñ+i;E†Î•Ùðà篋ìÕuÍ´WŽ¿á¨ÏgC¿ôôsFa©ëoj.×ÞçtÜö »Fì‰ÈP*CÀ®îøµÆ1¿8_‡¦y~×\sM€“¼¾Á¦gŒ·ô_sÒ]f ³ÜX!?8÷®³ß²ß“ô¸öÈÈQ½\¯ÊæwnÛ¬ZFFF¶×î¶íuP5E¿6¯,¿l£´÷âBë¹eumC¡(ô4 xfÜ:þÜAmsëõM­wiŸ hȉ3=$sI”ˆ±%•Œ\Uã´”‘‡²OdšÂŸÙ£½¸ë¶äòqݬ•Ó±:2ãÒ-{ÔÄ|íéÈÝœk>ôõ»>ÐdZó¸ášƒû.÷h \ä¹8צiAýÚ}°Âh²õ [XÚmÇûBЩÝûá"I×$jÊq™Þ:1º™È‡{—Ó QxDÄ“˜VbhîñŠ޹Ÿ—•—tLQp<4ã6¹?lŽAyÌšwïÚª|âz¢ cŒæÇØiÍ=nêvÆô_ÿ•4ß“JÛðIoÀO9^Qxdrϧƒ•bäßzÿNŒO¾54}ìŠÏ†ÍJ¤Ï¼ã¹h×'>üêLÐÿ58‰[ °–ð–.q½šššî¼óNšçWáWù P8A»«õ:M»îöÍšðtüÜCŸØ±:z.‰uÞ-Ÿ¼{Ï3âoñ#“¯Þ¨‡ 9–¸^;òè® ?âʳ¿øæ­¦±Öoš¹$=“õâ®ïiß¡j»ï~yç£ÏsEêèéÍ2iµ[ûKžix¹;R6ñÕÄ#¯ÏÞ¢[r¹¡š­Kï] B×´çŸy²ëËé&µÛö~]>È‘êH¿£=½GïRé?Ý[ :¥ÙwåÛøéð•ã²Ã7‡àe"«¹ …Æ#ÞsÏÕ_ÕèA„>n—÷Ø­¼äSMQ0>l?Ý©í4ˆÖsQ™•wŸÞ§xâ2úÇØfÙiÍ=þþqòMƒÇg^ºáúëÌ·ÏewÞp»õKdï×õZüMEÂúí Ï94³O<¼çFñ›NWÔßziß0«ÿáGØ/kh";ì÷ÙM¬»aŸyÛï …0_ʇýÃ'¼Å%`d{y?ëgq}2{O¥R«W¯Ž‰3pcQØòJ×·Þ©ùfUÞ˜yU»[ÿú¹.ýï?ýâ ý?±ñ·øóϼ²ùË2dh„+èÖSŸ‰05Û˜¢tk[—ÌOqGæØ“/‡þ¾«#uó›(¨é‹W94³¶ò.yûÔäó\ç¹g_Ý™¦oåð~=>P“E[MãLœìQmGé{!èÔfoÒ§Ž™ð½ãrôl AÉ„kz ÊÂï’2Ö4îŰò¸•vl®Èõ?.è2ˆ™`ážõÙP˜µ9ìz⎞U–Öìm<Ïo(ôgÕŽûoñ»ërCŸç—øKk‘þÛtëΞ0æáEý­×ÓÅr¯óoâºuP1±Ï÷³!šð™·ÿ¾\ß|£;y­»†ÿ€@ ØÕ§yçµe”d4‹oð/èࢠp‹/k©ì4{Ÿ|þ[­·Dô…Ä<÷FóÌ«w¥¿u»ö½GijE¿sµ§u i‘Ú{‘¦~ÛÂ~QLßý„Ÿ «ÏSøm±Às5/Ç ¡Öôއ¿úÄñ뵇_½ó–5|•ªßB†ïÆÐ6Š{Êq¹û(õû(ŽÙú¤t!Å´fq Ï(x (gŽUÓ>élb6"Ãrˆµè^óÚŽÍßõÿ»Ei‰~1oÜÁ›]G·I·¹V-ì·^ÙãB ƒ?½Ç‚ âI@È=ÛEgx8fú‰Yl\óùñ¤ ¯JL€æݸóˆþ§<ý5ŸÛ~ã“ÏQuÂsÆ[´*ð)ÿã0ᡯú¡Ùèôú•gGòö™éM÷>}dÇM¯§¯ È—èÈ'ÉKú‹X#]ä¹Í¤ÕQPsÔC3*ûÜÓ"ͼáßs†‹¾bÜöï÷¥YA›3q²VvLómn9½sKé»eÝÂÈŽYvŽç_¾‘戔åK!æ·_Ô×0qC#€mÖ3káI±ž^=–ìy,Ø l!®B×vH3<@ÿ%Ñë½´f¸Ú«6ènŸyŽŠ'Ž âG@j9CÚ y§Í‹RéIŧûíVˆñ<ª}4GíÃö%„¬ÞnÒ§î¹GßúMÞ*BÌ"âyxúœ9þ:|Iÿ.¤×¯>õŠþ½¨§º®¦“®tƒ­·Ú¹ÂCÕ‘¶3%×8wѤÏhzÊÉÝûéÓÜÞ“Ý õÐŒÚ>w9Þùäž m·ãŠÖ¯Ã‡oîÖ‡óUí.}84ŸÏ×ÿ…  0ë|îq¹xïÃDY7¤0¢c¶±ßzÿvmÇ­ô9üJ~Ã!Ö·oÚ@|€iz¥9éÓ¨j–rÄè‰+WNx,+¬…>>ÓYñÕsü'Žjm‡5ënëÏýðSbݾ]‹q‹C}w*ä·¾ ¼²rðg£µÀϼ°I2zCsS¾  T‚É9ý2ôŸÖpÓm÷üë‰W{ìÑïýõ³æíž?iݱcÇ ? öê‘ÇvoÿZopÜ"°ëÛÃÜwO0Šñññ›o½#¸î‚ø åºÏ~Ò;u¢>Ü쯴ü¬•S²ø+Úwö7g?5“.Ã&yA]ÇîžÈé×WÈÆÎ_8T[^8òãŽŽŽ€1ÝÜþ™¿ø‹¿Ùû¼¬CâïËwß¶ÌjÐз@@bL€·>ÞùoUÄÃëÒß¹ó®[¿þ -¡¨Hñíäù¯§x—€ëâë!<&`<ÚØ—^‹â%àa'·A â ñ'@a§Ô®—x©DÅrŽ4uõõøƒ)¿‡¼9Nù{A °,ð–ÒQ½† z»ŒÞð±½K–-³”•ÐQn è MA@*C€IûÅç}»¢ í ÙfÙ×n€TÒr¤û–.76r±¾e´¼ƒñ]²dåŠ昖òe Áê+<ú&°„ÕÜÒBà‰…½½g¸lÙRú¹üòU&z»|™m `}ƒÃèA@@@ ê–£ëòË/'Ï¥òã÷$W¬X¾bŲ5kø†¼V¬\N?U7B8     ¼£ë½ïy¯ dùò4Ïo~ÕÊå«V®XÛhݸlåòËVEU~ï¼óƒ@•+WÜÅ-r ‰|+V®¼¢ñ ð£.V¬\±ì Ÿ¹sßßþͪUË×]eS~—­¸ì2kÚ_°7ÿò/ÿ\Á¼kvL±Æÿ.®Ó§OÓ]^[l\²Ž½$¢qT+!óII›ï—·‹(OêÚk¯õ6D €€€@Y ¬XµŠ‚/ke/ôåNB'ó]¶j+¿µ6å·jùå«¢*?’q…úM3Iö}⟸â K‡jõ+F€úßýÝß}àðöèR~KÄ%VѪ!¾Þzë-o+”€€€”›É>ºHkÉŽHù­\±rÙuŸZµrõª•ËÖ^iÍó#!Hr0¢CË—GÍ Ûc~gΜ¡HÒ¥K¼ÒÄ~F0b~±—µšù¤èÅ¥Kï¾ç=ï}óÍ7åƒVùÌBzA—Ô|ÊšeuÆA@@L´cùÊï}ß{Ìšæ·ìªþኣ?_±béïÓ×öRæuå ZUùÑ×¼2}ßKÝ@B?ï¾ûî… \ÊE5*&aqÉ•[äRë ¹¸?AŠpI4ï ’Mq@ ôp.^¤q±˜£§æ­KÏ‘‚¾t—†ñâE©ü ù¼ P  &°lÙrZÞ{ùj¡ü„´âí\Ä–,[ºäòˤÔã)wT²Ü¶±sŽJÙ÷Å/~ñ?øWùIƒ$øÞ}—_Et“&$šïøäí¿ýÛ¿ý¾ó]û‹;î¸#óàW.^¬zå÷.‹× m½Iö}üãÿû¿ÿ{’€$ôcò\à€€Ô9ÞÍoéÒ•+­ÀÍÒ¥ó¬ö(fGv,_Jßîú¼8ãx\RöýÞïý^ggg •y ÷U»ò#ýzà 7lÚ´Éõâw÷wEª´ŠE-=;ù€è“øµ³gÏ~þóŸÿáÈMª|ÈÁ#Å]¨,ð–jËl“ò(‰'â|d•Âùj"Ï:©è„+~H`þÎïü…ÁÖ¯_@‡ºÕu_5kâ¶nݺ+]/Þ·f”µâ‹d=£ùùð¿h£È;w~ãß T/Ä_üŸ,<¨y|j/ÛaœÇË“ë4V~R~½ûîEŒU¬"åG°ßøß ˜­áÀú¶¸ÎŸ¿@óêÅüÖûÞ§¯‰~óͳÒUû‹_ýê×1÷?Ø=Òpôxìç»(ë“ÖÿÍßüMzâ“““mmmP~JJ(ŠÊÏ~Û£·ËRŸìÝv÷ŸÐWõysCfš~wÍ×*R‘Œ£)_÷ßÿÚµk/»ì²€Êy~ÜS5O†£©ŠrŒÊU=4}0èñ\z7dÅÍUW]•L&?øÁþÖoýd_Àg·@@@`q ,Ë=3üðÞ%åw^ŸåGʾë‹Uc2€÷è£~ÿûß_µÊ: Ø;N¡üXöUŭpõÕW¿ç=ïq½ Õ+FW¤€öâZ”ZCŸJ[÷ÞÒÒB1?šïHC&凵½Á¸p@@*O€÷ßÐÄ úª¦ëâ^•É9`ÎþÒ‚ÎâiÊżú§zôèрɘi£ª–G«©©é½ï}¯ëÍ{cªU®üää¶‹’&t~ä#áÏÍ»ïBö€Â-X\rži0¿‘+Ý‘Óü¶¥ž4áOšUòâ»ïŠ™~çBCJÊæ1)üõ¯ß¼á·’äŒòÅùóçcâgqnæã0^`Ìß—¾ô%©!ûŠãŒV   PBùqW,þD—Æ‹…)?2DâÏo'?96Ê/ÓŽ/.¸/ipQþ=gÎ\”îËÚ)Å司ºÚãšeEã   +¬üÄô>ÞÁ²¿ó—è¸Zô+rÁÑ.åÑʦ†¸¤—К€S§N^qÅ )UuÌO9Ò+<{ö-:øÏuX‹rŒâƒ£_Ê (XDBù‘æã3¸Än½<ÏožÔ_ô­œýNo u×ÜÜ|üøñ_þò—Õp+&V¬XAÛôÐSãOKØŸR÷E©“ÑÁ ¨ò :Üc ¼Áßéœx§0^ôH^qɾkÄU? k`¤4g‘¢¶¡Ê¯FŠ!€€€@­àýüþäs]$ýV¬Zaäwç—Ò12aÜt‚E„Z¨    °Èx?¿ï?õsŠù­\±’|‘â~Ë–ŠƒÝ®]ß«‚û •À G~µ*ꀀN@d{I÷-Yº|År>äCôA%KÅ´¿Àëûî ¼›    e!ÐÝÝ}æÌ™BMëóüh•ÆòåôZLá'-H <–.)ÔêƒÀBÐ'x!ÍÑ@@@ÀM€T}³–M¬í啼º×v‹vxòsÓÃû²(â—²úã   PÕ¤®síÉ!'óÑ®.¤ó–Ê­œÅ ]±ªçA@@@ î棟%¶P½eå7¯ñÞÍó ËyÏE” æWw @@@ fPXdŸ}³V~s¯ž×þg ò±øÓOrãóÜlñ¿š!€€€€€@½ %¤ü–/·ÆKo—¼±ìÓT K½‡ø«0'€€€ÔÚ¦…~V®´~è­¾iŸ9­Ï<¡Ë¾¤æP`@    Pã¤ò[eÛ¦^.¹é·ßOúHçÑóë;jü³€á€€Ô:Ú´…~V-±~¸„F-už}ãf*ÁúŽZÿ<`|   µL€Dý\f"‰=V~$òèg¹Øï…–÷š%µ cš& Þ Ûuå'#|ÆŒ?Ö2ÿ[Ó408pؽ{÷/~ñ‹wÞy§6¸¬\¹òꫯ¾çž{†S‡Cþ‡Ÿ¿|îw.]º€¥ŠnÑl«V®üƒ|X鳜Åg_¹AOÏöR{zóü”Q  P«{üñË/»ìÁ¼êª«jcŒsss{÷î¥qÝ÷¥/)GT‡CþéÑŸ­yßûR¿ÓêË/W2©ºÂ³o½õOÿeŠÆõ‰Mó:ïÎGu¬y~P~^d(¨§NžüB_ßW\ñÖ[oÕÆ¯¼òÊ®®®ÁÁA¿áÔáß½téÃç²ËV;wÎKu•ÓŸ+4¢Ÿüôï”nKågùÑ”>,äP²B!€€@}¸páI¥šôðh,4"—߃¬Ã!Ób†Ë/¿¬fúôdi,4"¹HÃïA»ÊõÙ}k£€€Ô*úú,è4þB‡S‡CŽÿS+·‡–òÃqmåf û  1'*•bîîÕá‹ TÕM\oÙù åÑmöúanU=P8  ¨CT‡C.ðCQÅÕ•rŽçùIÍGë›ÍeÕ*:\0¤h³Ò_Ïd듾fاRóÝk~²±1óLÉ»Uu ²ðY^¶Q•hv8…™ rا Òý™‰‡ž˜‰TÕ]‰šþõ?žr—–é½”s.·D22Ã~Ð|e¢³  õHà'_Y»mú›/ž׋ã7ýÑãÇ]~ò•›Æ;^<ùÝÛª†ÏñÇÿhíMÇþW9¨“'Ó~ü“ªñ½ŽžúÇ8¹aÃɨ˜€[ ÏvG¦¬µ½.ñ' ì ÍA@@ ŠP4¤¤×ký‡ÑÏýÍdÏuÒêu=ßÐzäYùŽrn—æ_{ì¶Í[5JÚ{¤oòÂ{|í±ûú­¿™ûÎM¯ëé1_nNÝBÀ)âªÀ‡íÔ̫چ}lƒöêL¥bwÅŽJ)íôl/b~ÅRE;Ú!P„ÔjòÚ3ÿñçŸk·«¢ëoÿwùg^£FÚ3_ùèüwÿ·¥¡‚Œq/ʃ)جwP†‰Ÿ|…¶Á×W~"ʨ íñÇõÒ¶ÇyØâzíñ6gEwpܨ]У yau„ðk¾òÊf»ô9Ü™üë‡ù2²¹ÊBÙù)ªj¥‹Ëœvi¼eú‡oaÐ@@ªÀÅ‹õ«_•rgßy÷ÃMÿ“Ã(ý|fêW¿ºêìíçýý?ïú?_»ªÄ½Z#X½zuðpвbPz'ÙñÚk;èõóýü?¹ç#÷4‰1þ?_âR*ûÂÐê¸E›ÝýÇ­‡6?÷Úß4‰f4øçûÿÉ‚çûÿø‘ÿö‘{¨á»ïœ-†K胄ßÂoó•T‘¤ß¡™Sý(¿¦kîè?lè~ðÁ+IÔúÇæÏŠre!•_ùÑ?Øðð±™öæfz3sìÕ Ю›‘ÆÊù¯‘ímhÐĆåì¶A@@ ¦ [M¡öüËù×]Õæ?ô&*¢ÀˇúÁC¯|aëÇ#*ªJœ1=§ÝIDATÊEV JZ9òÐùúÂJÕò%Æø…›ùåÍø'Ú+¯ÓH>øòŸÜÿ¹k­~¿þŠöò®V½©F ‹\meÈ ©£GüØGýŽþÌ\çqÕ¦ÍB챨››ÓóÀÊBÑóú ¯gŽÜô1V€åºì1?êƒb~zÔOžYü‰ým¹Ü€]ˆã+±D޽ÿ–ö}óÙŸþÅÍ7gLüÓú?}?÷Ãß³MÝ{0³þ¶þëí2«”¨ï¨f ²wP²«ÙÑm_œÿÁ±c7kôê¹Z1F©*¤®Ð;£¶Œ#WÚöùùì £Ž¤õf~vtnN}ø¨Ù™¸³z?uê¤×oaóÇ6ýáÈ¡¼ã¤nõ>Fûx¯½¹íC{¿oîµMë5g‰ §ð§:ä}ü(/{Õ&JéW÷¦«ôÀ%võœÛ°^á) uÄLÁŸýLÌ\Wa]Oqz[¥}q€€,œÀÍ;_Éî¸á†¤¥mÙWöx‚{MŸÛ“}í†;º´ïù\ÓÂ{¬€Ô?Øu‡1ªýÙ÷P¯÷þÙcwÜqÃÿ®}hÛ¶8¡—*ÒE@vÞ|3‰ß.ÑÔ( h¾˜·Xømø˜M¦‘x»ê(GýÈ««ÖÎzøá9zµá®ä­²Ðå…×>ü´vW妸‰ž—é±XOz‘¿Åüp¡oÅ Cq%îùã;¦§w6ͨôãt„‚oi\…þS–îCFSdŸ×Þý£é»-ÓlÅ[d£ëµIDôïlJ%v8!¨àíævSÒé½^ùÑÏ>È/yÂÞUûl{»ÛO¡Û†t·,Å{3Úg7ÆóüJa6@@@ º ÈÔguÁé}èW|9FÏ—w„Þ´¹œk;”ƒUd{•õP  5O ÈX5s©Ã!ÇàqñÖ/GçhÎàgË;ÅO5Ôeÿúÿý*§™}Öiâ-æú©p¡ @@ f P,4HV]ƒN¹}úšk®ùçþç¸ø´0?®½öZËÏL™Ö°¾õÖÛ—]¶êwÞñÃR]å+W®¤ù­Í•ÊÏ®èèõ²¥K—ÒH.µUV­®ÁÃ[(šÀÚµkÿöoÿöÿø›Å± 5p9s†FDãòK™4ÏËÿå¿Ýø{¿KâÏKu•¿ýö9Ké¶”s.Çóü¤D¶WI …  õ@àK_úÒ£>:<<|áÂ…Ú/…ôï¿ÿ~¿áÔá?‘úýçþìÙç_̓ûA‹[9Eû–,Yr˦)“ÊÏ%ðtåÇ1?±Ÿd˜Ÿ’ A@j˜@€HªÕQ×áýDRM>b)çd€Ï µ¶WÞ ñX3B¸&Ÿ"   Ñ Ø•íäçZðÁvHüùMŒÞ j‚€€€Ä€BùÅÍEø    PP~%Á#    P üªà!ÁE( %˜ÒWŽ0   ñ'€˜_üŸ<Ò°vuqٻ馛KÓ ¬€€€€T–ÀG?úQoj—Oo#7hhû±Íôú.q)=¬Ø†ëH9Ì zŸ‡²S{5oo‰Ò AH 2ÿTî^\öCÿDÖ÷«VnoøÈâÙœ`šÜ\`nÑXüžB<‡ ¯â@@ù™Ñ•ß /¼ðñœ¼”Gú7ø÷9ø®m”:..®&EX(èòuí} f uj¾v½oåÿ)˜¯íœíf½]” ì€@ðû-–¿GÁ‘¿D. Q’Y³•ý7ÑÏ™7‚›È»Ê_ö( íý*Ø+Øÿ¯ÉëppwÞú•/)«‡Jã^¤®;Ró–ü€™3×#6Ë]¦Ìr ÖÛuå£Çÿ¿½³GU â8Zˆ•g°±²KKá½<‚{AKOac!ˆ`£"¼‘? Cbò&»ykôÅã|þ23A,™Ý÷ºô¿~óù|µZqÑPÝXéB;¨½ñ’ ÌÓ ~B’‹88–/¹à,6#ð)B ¥™ <7Ф0¥QtàhæO(Î$Î2Î$E×H­†—&*¡æ˜(x2´ðäCÄB ‘»#&Ȳ”DÚ¦[8ºï=o~ƒÁ€Ýn·²zâÕÿi£Ù’8*x«ñ•ä%I8»wô(éÎ<؈´&å­ùC„mÿÿ5/uÏ– Q’íæCs†•/ wj÷cdF"DZʂTä¨ ‰•¿Ö$x©J‘‹ÍYp¡rýø V‘1À{íªk‚Ât '@_øQ„Ý~¿?§Óér¹ÄåOÙñáÂÉ+Å$,_ERáÄex𹀬ñtoÙˆ\°‹"f¡üa#úÐ Ù÷C…Gnd_ ¾ó2€†±½´ ƒ3­BÈòïkÊŒyú " ò¤"bv4_\KYR£kÝôè÷»Ãáp¹\®×ëf³Ùívd}±XÌf³,nØHÆŠÌh*o޹¬EÆqè#ßßÉžÙ1FÀ!ÐÎPjÇË—lgp•@ÒÉô×ÜI>"ã\ ÛÁøÆR1שÖëuUU¤E×¾ÑhÔ9N·Ûí~¿ŸÏçãñ¸ßïñe`ª]“7FÀ#`Œ€(Àd2ÇÇ£×ëýÉo®UºB„ìIEND®B`‚PK !®©kÉÔ`Ô`word/media/image27.png‰PNG  IHDR©pë pHYsÄÄ•+tIMEÜ )¨ ¨ŸtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/02 15:25:41 lim_j SGA250167Ñ1ß( tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí} €TÕ•ö«­»YT0 Q"›Š& ÉD¨  Iœ #m\‚š_ óGŸGG¢€‰HŒ‰m£À$&ŽÀDL\M' ‘8Qu4`~ºký¿sÏ{·n½­«ª«éZÎãQýê.çžóÝû¾ºË{çFÞ^{óäKÒ‹uAË[oý¿ÿ·êÎ{þjYV„Ž(þÓ}·ÿY9|Q…GŽ"èƒSF­d()”8gå²tà3‡tvv[R+QªpGþRX. VI(ʼn¥5•À”HÒN¥©aªʦtÍÈGªª”* „ªd”’.TV4nÅ¢tF­‚Ó$—5Œ@Vµ1œ¸H[V&­ÎŒjJ™ŒÝ–ûTÛˆQ+ŒFc±H,nÅÑ<"VÌiÔ,kŒÚVý„N;v,nçfuÄ;“él6õ§gžùõC4%¢~õÜãŽ?AÝé¨?Ôîh&¦0¦Õ!×#Q•ŽPÁ”SýÃá$ï᱉“ØÉm#ªùˆSØé¨òò²Ü ˆË¤&G;‹òqYêSqÊ`-lV³U!ÙJ~þP„§xOsŸF'&ú³¢1 Ÿ.î32«ë’íòêîMé éN^¯43¤ç$wQ®C|h0`ÄgeqÒï8ÚÿŽ„~ûÅpZ±XŽˆAªÑògx‰=[ØÂ©(º|ùòéÓ§›ðz“i•B¢Lµÿð‡?|úÓŸî9CJ’Ìþîw¿{à~ÿûßC±Ã?uOxð õçÿòG_h»ìëc?q쇩×ÿ¾;Åâñx,nw£TgJD'š T@ÄÊ9à §sPq RÀ'xG:Éfp¢Õp2bFEH8'Ñ)âé?Bùr „´ô[JâIE?V„‘b*’Ú•H¨¹‡ÄSh²9jµºÈ¤3*ˆ{¡ÈoÿL“xE†Ä{HN9I+ä!>§ßsÒ ÉbªH”·ššèLD¬„eÅÕ‰ eq•º•;³Å›×¬:‡èpo‚ ÇdžˆETHÞ(_™ºY‡d$¾cÖ³¬NËJYV²ÓJ§¬TÊÊÐ'ºÔû#¤F‰â¾‰áÖ‰$š¬æf«©Ùj¶¬&ËŠårh8hºmúªÔ@W…jë S_;7L^ ná@€³ëO3WVff„E‰ê¹pVæDu<ýôÓK–,AY ¿øÚ­cú}Þù³¾<öŸÚ¾;™ÍEâ‰8±D,ZdºÉw¦YQ* R©L÷æèް&À'ñ?gÅcøµõÄ™!u j\Öâ/á š âÝý1ã(êËÍ¥Ø!ªç2bâ³+ViÙL| »oÔÊ6¡D|eÞUr [õVUN2G}RFÅ‘* Óža;¬ýq×ÏÔPæ*>¸q³‚ºê¦o*Î)uz3c7í3Ë-UTˆ!Q¾¥0å!Wˆ>ª™S3F#À5…fÕÓY™„Odz™8~J©©¨fƒðƹ1+O$@w÷”rv óÕ¦Û.×ÖA0ׯ¾Ð_9_ubŽ2?M½ÌŒœŸ½n[Ðã@(À¡C‡Æû¾÷^ÂJ;ö„{2ÍMͨ>ŽM~qšÌ¢ŠgRp8ÎVPÑŸÍ2_P’©O&>¦H Wt£ºPN@fŤÔÅB”bÆ4ZRš¸Ð¦0‹:©,þä"Ò)\…ê„@b?Ž+"2›vSV– z©djÁ¤³|.ʉ9ŠË²ÍVÜGM\ÝÄòª¡kLHPU!·z¸¾f+ç»%<}MÄêÛ>H[T(ݪrqPE'¬l‚¿qü¢UEìŸXtîÔ0}¢mDí¡gGF"¡&‹ zò²›Ë^W…šôwï~öØšßéô§MúÌ_ýW+ªýû¶lÙôÑG¿zþéX¢¹%kmîS·tDA=Á} >M²Ì°®Š:qâDâ>LW5Å­fÕ)ÃÚî]Ô³ž¾™]·4ßü!7¹& oo^„ð L1¯Ì$Èmˆqê@®-¯ð †Â…j­t2SO_i®Œ¦ªÔ8Ý4P¾B‚´ª†p܇%1Ž©swòVÊöÒÁ‹‰®YÔ5ê?õ›c6'„@7€k²ž =;—êVW -&0‘éRX%³PNƒÓ^ÎeæE‚ŽŽ|ž3ër|þôþÅA29¼;æ ¯Êcúc†5©±\DE>ÁrT‘ žÉpnfþ¥Ò>& Û`•Fݬ4¦/ÅØ *Ýpp)Aåé Û¢¾0÷¹ôÊ13âÚ÷«nÜZU¯ŸÂª&H·Tó Ì‹ Å ¼Uc\·!@ YI·Cn·îj„›*S·\ðišj1ÎÝá‹ #µL]•\Å®ÙM²3é‰'z³.Ö<þû>øÀ,Ñ”ÉááÀ ÅB¹[gÒ'FCò–çJ2iŽÙïdß_-]ßÝ¿É5¡°LǺÅèvÃÌëbì4Õsél6Yåk‹+™þªÕÖZqv_!ŨZ iÌ[Âlк›÷gI[g Ï¥oÑ’ÐÐj{sY®7£Ý$4û; È Àlfëö™o JXÝeÃ0Ò§RᤲHW_èpŽÒÕñÕÖ³qþ¨ý!ßw]—Não÷áÕßâÎð]Óß﹓œÑ¿Vœø ™(00ßqw¯9.j½õŸ3"Ñé«¶ÂϑݶjFdúÊ­ôxžq>¿0Yø¨ýÜ7—Mf ýÜCXεEéÒ}%ëŽå›¥ð5«¼~¿«C?· ß“no9Å©¿¢ÓûeäT¾2í(þ“Ï{ûú윣)ð……ÑqÑ?®ÜºlòС“—ñ=yŠú)ã#ë3mJdǰ)AÅ Ù…ßr]HVÑÀÍ—E¹š²W~wÚº©.·%‹LcRL‘Y8™ÝüðÃIO³Ðã,®-Á{r„›íÍÓùnÂk”¾Œp—X݉~Ç@F<ÈEWOn[ß¾âŽçÿwËóo6l(gsq¾ºZBÌ@T?aæüfrv{rRrDiBáá¶VÔu¡r8·<³75a%µ™!¬T¨©žNS çè9ÙõVt܃WÙ\"©g£ºÙþLêñ¥ 7鯮p¯‘]&È«Gšžn‹Wl†p+Â/‰}³¨;^ßÜö¸¹ò'B\_‹Tχ馛õh–ëeRRjšc5tzßõÌE|.úc9f¹%ÂÄ·àÖo2ñÍûæ­¸†4|⤿(½c–µ’x;'KïëÐÛÚêÄEÚ¢^ß‚SŽ{Òí?o_·UÕ=Îm«ÏnŽFé¼¼~ 9ý ‹Z8pÆ·ŸUoSd¨·¹jÒ2u¹µâŒC¢ÑE/XÏ/Š5-|A‘ã wÆ¢}¢Ñ~Ñhÿ(A8Ìý.¼3íEÔÂç•|Ú%F‘ÎV@°>Ü"ñ©™ŽµZ¿0Š‚øÚ²~»H©—P: %ÆÞ± ÎÀ[# _xk5ýåcÆjê'RˆMÁ(•ôÉò_Ì*v®>åvkîo‘\§T ñ%ÑFQg«’pP >Î^½]ǹVîŠqѨŠÇ¼‚É厀¼øt‰‰ñЙ1"¦ƒŒ.íà|®ÆüÊ JªRûJ.CŽ7KÅ%ó›j«ÔØðIï´áå¶\NVNõ®N„ãDçö±ªý»î(çU;$„‰#$AyQ^±¢?qÁËÇ5Ƽ·Þ<'.t¡f.So¸)-Dg<ÑrËMßÀ”"¦ùðÉ_®ý ‘P|^¢ ÇÓñŠ"^M¥ÇtWbé‡ë…‡¾°üŽgÊe"§Üòï7ÿië”Ó0ì}aÑ¡Ssÿþ·,®_\;~Å—þõýÖêÖqWܼ.{ÉÑÖßÿóìÃVXŸTŠŠßòC›WZ#ÛÏÝLc^ëÅ'H=0ãcgû×ï¬ÎÑx(ôÏ c'L?ì~6%ƒö5onv]vû1/Üwëê™?™<ôˆ9ÙsHÔ‹ £'|{õYË&ó¨Muù“iŽIPA«aÍ›YŸýàh륅ÑO[xRvubWÌÅø4»Œ.1r\†?`¦§R·í#F4~{õL d­~;wÚÊ­Å FUáú˜;×ZŸÍM,7õ×g—AHí ¶Õ[:ðÁè¸ÿ‚Îu1/ÒŸ±#)ÃA‹0>éVÌ¥ÿÃÿô臇îÊ•7E–g’V2iáå4L¹%ÓÔ©DKA»±™ÄôÖúŸ,Ÿ¶báÑèu‚|øÒ£_øFûú­S†"å¿­¿è¼.~ôñ ¬«þçïÉÓ‡æ^X8èæÚ–ü“•ê°RŠüPµ<Å|„ òÏ2Ååˆy©Ð ©a-XÑ‘rÄÌ•ÿ4·ýooYDnÓVbS‰Uœ·B]ZÖ?Ú§­\¬¢‡Žk6µ}ýâÉ“ÿêkÝꔬðÏ[[ÿhMk…ô¿›á·¯W‚ N|Ž‹:¶D>ý÷+ÿ:7rÇzM|…Â>9lÊU·çÆ?ñBÛ $š®UçÛÖß¿ÂZ±â@šUÇô­oÍ™“]·ÍmÄÚÝ?\w‚—ÝtDyïá ºLi–ë-4Hl—á]–«%0ý¡÷¥Á}4o´[üf“Û z‡=kåJƒé/A= öjÁyy)|ÇTØ«›†´K»JM§%`blaf4k•9õ³Ç_uÍíHƒ1/Ç"œ/¼‰KÕA§ÇÖ5ªõ†”$|í2MgÇ›ØpM%S¹X,ÃX °è çžüèä˜ý¿¡?±~öÑÔ›­$‰hÀ4Ô ’Љ0pNæÐC4‘šH'ñN6E …ŸJ$@ÊtÄ¢Ö üvmFyB3âWÇT{B,Mªª(ZúÕçÿÃÜëŸÍ^x”õ÷_Ï÷ dîëìp^õ…ÂhŽÈ¤l@æˆ8M ‰•ΧEZºTZj³hÌyàT‹{Wè23bøÒ&¿«¬ö®©3¤Ö?^®)à>C¤^á0§ßæ)´ô¬ž?D,Ç&F"ÇÌÙ:kú°È¬?g‹Z;ñ–êHsÇèpÍM$&wa¥R»TIÜ`ø“³'¡=wZän.\Ò4º wäwƒzä¿ ¥¸¯‰zÈÈgšpéåéÆðj´K5Ä›q´´´tvvöíÛ×%ßU›çÍšS 1cõµfCW2o © ^»Ì={öôéÓÇ7M”½4eÀüà¿d2ÕÙ™ìL&;SÉõ¿¹.÷ÿ|/ý¿8·§ßxùÑ3¬+ž\—ÙïÐ/Yß¼yõ™drýÝ£¦>‚^c:=pð„È/ÏøÅzHxcͬñ×9v¦:SÀ":Ù™N¥i ì>¢Q-‡Œ›ù¥3æ¬zKñÔ†gžGÔdà8=yHI”»b|Àt\Aä¶Ußž¹ýdÿì°q³¦-ŸÚ¦fÑѶìæ5lÊr<ä“»â‰R'ü ýYš·½ºB¼ ü0Ø{aAj—¡Í€äqƒÚU-ÿp¿ànéèÀÙ¹gOÇž]øèØÅKøU¦vˆ3óƒ6HMÛ)»lÝ_™?ÜeXSå ƒzõÕW©Ãã<ô§åó—h–k†àZ×{bf^.;(ewñäã7>ø`O0à]6‘žÎà v:MÒJunxê¹ëO r½tv$÷;yö ‘žøÓÀÛWÞðóÖ#‡ìÿÏ]ÿoS0åf‡Í~öºéä>‡ð±óÆÝru”—‚0tñpR8ñßúÕãö‰.}^q9tzÊëoúÅGµD?Ò7zêÿýΚö)Cèé;K?©øͲéÿþ܃Ï~nPbøàCÎ{!™L2Et†˜„ðdš(­ë_=h_:¿öŸor(BýÇÏç–Ö/:ñ·ÿnÙd̘Í£¬ÿÇ©Ò7–üb-˺ý_晋… :¸÷È»ˆ™³žØ“ó"ÅÑsþöè—hiƒµ¼qôÙ€/fäA˜ùû[`çmØ”E‚ý”hÇôÈßó í;ì˜?®Ú˜Ñ_Ñ.Busçtj}Ks‚âïð"Sêr»Ð¯0Ú¥¤Yd¹d£¾Øžé®!$¤~z ø±§¡‰ró‡ßhjªª½•ÊX!ºUŠ;0$9rä+¯¼ò§?ýiçÎè¸òÁ­ˆ’ò!§/ôWÑÀr½ð'ëV) Kªh3ñöíÛÿüç?ÿå/1b„¯Èfœ÷Ã{—n}w¢©s®Ý@©'uUW}*.ª OÉÔ3ëÜ¡§¾ÿw—‚„””Æðˆ€¦ÜèxiÌ«¦Ž•åZå*‘8è;y¥ª$J©Ô`-lWʹ)ÍþQ=ŒÅ{¡‰¢üDs~FáŸ~x6“2l“8ð¯ ;Ïñ¦ª¢nˆ•UÈ·As 7ÊîM¤[‘)‹Læ*%$—o”&/\tX֞ݪOסFJ ½T ¿Òho˜nF›¥Vžh‚ûËX¢)ÑéÓ7ÒÜÇêµýÚ²wÛ‚y5´Óâ:q¾É*RÅ ?ÈÙ¸qã›o¾¹cÇßJÑyKT· Ï=ľQºˆðX_MŠ8p z|`v0MFÀœ={vÁxùó®úOÿÔÒh†ˆO þ癎T¦wÈ·M…üæ#^xÐÉ¢˜%Ùï§rBJZØß'·7D%Ðt ÜWQáJ*œš–¢[ÒÂV‡´Q±¤iœÅ¢·A¤£ [®Ryv&¿ª(Z9­RíÓÑ5øï[«¿=wÚªmÇøÕrp®º‹ÑÕ÷V 7·;yÃ%÷h¬ÙNÐl°ÿF3zð8¤š"NL‘ Õ³øõUKoÔ²USá&j7E_=» ×B7„{pGqïeá’æÎ!Aá¦A)½8x¥yÓ”‚'ñi9ä™™œ•&š©þrîh)^aâ³ÙŒ~Ô˜~P¹ˆ&úPDæ°;6¥*'Ù6+©b(@Í“|òéÈ>–~ä"™Ç3D¤1ò–LïѯÍJ¢(|ÍF¢Z}p›"àð_9½RîäU©Š8©áë)U£ µsÙª*CF޹Âó…Mõ…J¨¿HÍ7ž6›¯èMɃÂCDí½&Ø sCR”†Œ&5¢ Fk‰ÅRõª± y­§VˆÝÐï‹ÓFE´ò«º ô[«¸0„Ãa ‰æ,¼l”èÎWïlØöV®rA¦©ƒ/X%n :ÐTÏ¥p÷M²=‘ ß|¾ê ^×#--qš›ƒ/Z5°¤ @bº :ʼn $†Q$B¯®Ò,€bç…;½1›z8ByíGù§Qs\CÓ@VÑ-è‰Ý,ýïQ³¡(ÊG<üÍÓ#F¸P½BE°<²%¥ˆ_±5àGÿOÅQ›Pô¬\Òóê îôùÂáxôœ\nŽoŒ܎͆n×s?ðWX$j¦Xß,]&É…¨ }\béçÓy@3$Ô°Z¨-¥q’ëæD& Ÿiõ¬’F£9ÚºÞ']øA?z\å«jFðÕ-$Ö?D~7£t)¸Ð(ùjeêÉu– ´ÉZ`PÊJ…ãJm¸Ó¢¡¨þȉh6£. 1_†èûäð( ~Äh ÔË@@ß!®ö­yÍu_„ΨEùæÕ øÆ²p_É®r¹pËA‹ÕÍ•Û$7E~æA·(My|áÒ¡ËÛ¾<‹¸Å™_F¸–ÌÚ o‰.TuÃJé7ÉÅ+\ó”7ªÈHÐç"2HК›•ëUÉÛ¸ŽtJe~-R½î$#ߥú zR_¨vyæV}EL§ádÝ'Hà_Q­_hMÌpV#¨Á±JúÓ%ÐüjªmJ É"Qe à½[¨vŒEWs7[]Åu'KHѺ…”ÔTÌ6¦¯CJad|MÏå›eïzÙÊšxý!šIµò1Ü[Ë·ý6›•оÞ#<ò_k׿50€4)©ûħ¹ÌÛª¼Ü‡“û\YÊP,¨P»¶öNó‘RªñyÛŒV_ßÞ‹ê6±Îµ›0aÂç?ÿy¯‘q^:À×<7jÃb ˆï›óæySKˆ µ…À‚ Î<óLoï|Öã„×Y^¸àO×2Bm™*Ú ‚€ Ð%qr3?Qx–X=x îãõ.sJA@jòÛŒgÓ;Ÿõ`Àf<ÚR»‰æ‚€ €Ú¯# ·<9¼¬†—<"q«_³r},‡ õ‹@œ|Àhg{¤ÓðMG…ûê·ÂÅ2A@PÄÙ_ <ËãõµH$ øt¡.äA nà—ÙðÜ\ã±#•4€|ÆÖ IDATfbl(EÜ×Ò‡žtAŸ/“¡m‹â <à,‡ ôØa,â£=º:@‘zµŽŽdDv©$QfQµ"ª+xããpb…×9š›É (pÆ;p鼿G  ‰ " fÞC<'ä‹27–ôÍ娥ª¾¹|{]T— ø& ߥèãÁo3öx$‡ ðNš£øäÞE Hî3û}AYtø¢`Ôµ¹Üûï¿ïk]— ‚Šð•ÆAY‚ÂË’%(ÊöÛŒ}Ü´nP¡P_^.ì5@ !«Žšòt¿!Û·o÷UÏ%êzµ˜ée@“ø‚ˆÉW«çŸÞ,÷˜cŽ1¿–$ !Í%AK åkux m¤ŒŸLy´u‘ãÁ4<§Ä ‚@Ï!€›Üœì¯éƒ å!×ú!´£¬g¤lŠjÛ±Cë Üo¿ýôW“øØ¥(—í'9‡“’Dø ÉE¦Z¦¯(o‰Å„€è òßW¸åE1R$ TÍb`7Ú“O>ÉŸLv(ŽéO"ÄK|¬•úÓ ¨éÄwm.‡p=.FT‘&/Љbƒè/HTˆ&˜4ÅÉŽJù“C |Ö‡ä—(A@ØËð}ÎL§©')èSÓ«¤é/ˆ¼á 9îèñø—嘟Þ,î• C‚²¸Â5ñqFÐè¾ÈásHéz6Óp÷ô‡… "E¼ÂÆNLig"Å‘r‚@/"N§wîÜÉ èŸÙûÓ×àA ?$Fdt©mŠ2£tï×zV?JT1¢\Äǽ½?_Qá¥s_/Ë1ű}Öã;Ó!¤`ʯ¨¥õð%Vº‡€žï›8ñ¤§žz2è=AÝï zÐ7œû}¬#z.úó͂ĮpW @X,“騛E£bŠÒ¹\˜!\Ë åÊe~Õ®é±MèÁ_‹¢¿(S`Ò²ødR/.!PJ” °wÐCÂâ!²2LEŽ.‘E(;€®¥"E¡Oꋆ^Œ(èÃÌ…k4å‰òÕS9+“£m9pv¨“‡¹Q„â‘æTÒJ¦-x®‚óz„à9A ÀM^t¿ÏVLá» jŠâ¤&ññ↗þŠ…ù8/ý¹æéŠU Ú¾¢Â3‚ÜðžË®]Öî=Öž¤µ§^ ˆë¢ä·Yù¬ïìPg'}õÌ„ —XA@¨<šûŠé÷qñ®©ÖÉ ÷'cúóÍbÚæ-ÂEÞ o–pmC  ’%Ù™N%3»>HíÞ•Ûý¡µ{—•NÑÓáìÜ“íÜ“ëè°:öX`CDÈ!½ˆ@ý>hëÛ-òöû‚ìýé‘oI¢4ýy‰¯ûZ™Úújd‡';;R©äî];wíÜÙñá®=»ödRéd2ý:Øg}'fé!òH$Ó3ß…—+±‚€ ÐCè>Neû} 8tý0ÍçûZb9<¨‡Îôçû>FPßpïÚÅ}¥¢ âˤÁ}»àž*ª|ö¥û÷GW~«à¶/“LvÂs3™¾Íéø• °¤*Š:k8X¤³z’úêýÌlæÒ¡Þ@MpùœÆ3£7’øꬾÄ”ËWT„[|M038Ò™ÎÎ=Ñ´rÕ鵤Ó)ì×·`²éT¹ð nÙl‰»”( A ‡H$x3÷ ƒ‚|¬`_ ² #²ë,¦¨"å03VD—Ø£¢º4 žýÑ–DÜÂYõ÷2x¶™]ÔƒU¥£³K‰’@zAƒýüç?‡½X‰² #²kÅê^T—U€žMæ!Q ýçî+Ü÷Ñ4_4Šý:<ål§ìR¨$ž@`öìÙK–,Y¼xq©3ïèå 8ð’K.ÑZÕ½¨.ñÅâØ–#ÞÔ¬(é¦÷h¿Ìÿ%ššÔf•KTWÎr‚@ï!`òW7µ¨{Qáø$MpOßÒÒ‡ø >šs9êLÃ?=>pÑÒÜ'˾\6Žx~¾ \®Ä ‚€ PÍ457Ç›}û÷W4Çâ#B„‹æX<ÚÒ§YuúèXä¿€¸O9¬O4ÑÌ ‚€ Ô:‰fšÕ·¿½š–Å55EâØ¨(ŠÍ‰šS†¼µ^ᢿ (h;6+ׇ9 O¸ärñhOÑ~8A}ìÈžòS©]Çw·»ƒä» ½‡Àe·S8ïÃѤžaÁAk¹ÊSŸÍ}¦Ï>Dø®ò^óÍË‹)IÒ‚€ ÐÓÜxëâ"‹àî] Ô‡‡÷² ?êá‘??C ' ”;n¶Q Œ•ˆ^G[d­_ßëZˆ‚@‘tvv¾ýöÛXyhjjÂw::hüÈ‚@<¿=dÈ"…#$‚â¨?ÇûÞårLqön”®1®gÈkâ³;Å—.)÷"jg9A€àîw©¤‹^ØmZ¼xuI$Zª@@÷Ø”çzö^E칞?1 îúmÞÕ_‹Œnk›‰¿x“cÙ¦ÅÇG¾¦é¾Ù‡yô¡³r-¤¡¯fR¤ÛåçÃ( £«FìRLk¨OÉy øb§ 8#[€>.×ñXdä²D¾ ‚€‰¯s8«ü°‹Ã}z“¶âöi[ýµ)Öª‹­Êmœ?Æ.cÓâY˧oüþdúJ¼7ú¥ù(K÷[+mJ¥8A£.Ft?—á±qц)ìç¨QhésÓ†‹.Úp“6¸d}|,Ú8}yÁ3$J€ø@2 ´W°Î> ÜÂðÚôÊ†ãÆŽV)FMžÌô³iårkúTu l;j•¢!>F]~¹¾æ\—Ï¿èÙå+u18ÐQÊß/=ë¨gyŠ.E_ÚQc޲6¼R¨¹+ݨBë2óæM·Üû‰÷ó±…Õ¶@&ü“PAÀ‹€‹þì}Ú°•Q2g¥²V.ì³V:Ü}îÿgÛ¬4…›Ô·rù³}±ì¼zô`Èä/^ô¬Ñ­¬lI«yÏEóíîfQ’mdFMíùùZ4zìq]pQúI"A : —£éte}‰2ý±½Q¼ÀËû´ÑVmt±Wm«¬6Ì÷éÑz&Gá ënW¨ÞsœÝKÔI|¸‚ŸmÍ€¬Ô‚F§Å‰5S9E`4ïÐú‹)0Dÿ(E~Ú6gÊ=v ~Ñ/ÐKýUPA ¶åÁ«ò¢E‹ðYúӬǓa@‡¸ŽJÑÑÃ6n8“ðaZÌ^E“¿ù¾‹¬)¾ôxOÚ÷öhŒ‰¹:Ëò ,©æô|Ÿ¦%ÌÖÑ´âýJΉõ|ߨ›ÌõI>†ýa"¿®F©ù‰KUC˜pÔ‡×"éø•Q’¥Ù¡õßzë­xèïÁì>ýéÑnA¿Äÿ™L$›ŽdR‘t2Ç‹Bè‹ß_uÑ=¿tM:á?Îh‹ó’"¼¸«ò1½hÊ¢4S‰F]~ÿ¢@UŠS’¬ ¢v¯!«´=«ûr£Ûžµ‚€)R›‹ ûÚEJd‚@u#ÀÄwÛm·pÀ#FŒ:tèã?^)úƒéšþÈ]39ôKß=mÝÁwá³>ÿdŸ^õ0û 4×Ùá*ùI@5¡è,c”4¸z±³¢Š^W~Ù£25^’HLôä6–Iž+N•1M¤U€¸é§?ýé‘G9vìØ< xðÁoذÁwS·’ô5;}Èh¿×ÁoùÒ0Ë~ß×|ÉÍ#ÔTkV$ò,ÂÛpk?CÓ|4 ›µrÓå¼ @ÓScÇ„g¥D!¡4¢>~ôèH¥¢ìáK'ÔµRIUÚËǼ„é2–Ѫ\ ¦œUÓ—«é¶Y‹§>ƒçxt”*AÏl†ZAÔ7}£‘–:m¿\ýýÉáæx„Nö³ˆº}_,N@ ªÜ»çœsŽW;óu7olxOŸ»ÒDf´^tÏÒ»ßÞ…ðÏý é—ûæÕ×Üvý¿šIáÇÅöe༌GYo4^Á3h³¬û‹¥…pU%¶K‚áÖÔ¥ I Tå½Ï _EúqY°`Áµ×^kî|ßÌ_ÿú×±]%öm³âMV,‘ÃnM-V”vö(âP×£s˜ŠÂÚjåV{¸R\ïV”ªw7³w׸Õ_ÃrQIÚt·DÉ/Ô:z4Ȇ`³ò] G¦úˆÆˆ Ë8h%²Œl½“…Þ­ø~ùEw3{ùsN*¾»2$¿ ÐX¸çûÐÃÖäÍ6ÙÑ Çîm¾ü (±VêÍ€¶ïÒ|Z9ËXú5zã `'0ž ¨PAr‚@zä›÷ÛLŽý‡Îa«¼Û·È”`A@jÛos~ŒË{“׌þ¢¨ å P°+‘íÚT¹x–C:F `t‹•öZ*kˆu\åbš 8ûïçÙ×î“Æ!õ6"§¾\–òDW°kŸõõŠX'õŽ@^J±QyRÙ Öâá¾z¯w±OhthÌ VÉLŽ{QãÞ–X¾Øèðˆý‚€ P§Äá¥. :;ažï‹ ß×·ÙJë1pš-f ‚@ƒ#‡—frRŸ¢M{éŸÉÄ‹ñÛÜฉù‚€ PÛÄÙoU²“¦ø”ÿ¾\¦)–NËŒ_m׫h/áÄUwÏÊe²ô/‡eüoÆIáÙ$VšF@=ÛL.ê±à¡z}Ô$þ«i«DyA@ˆÓÚ.­ðF"Ê'´=Öu|º„g–XA@j8œ÷èb1 ~³¹X¬àµkÔQ[bˆÃK3ÎD3F¾Q5îFc‰0~ÅÈ•4‚€ ”oé͈q)¶ëõ†—ÅÉg}s3?ãB/vÀis"Q¶@É(‚@ù`¹añâÅÉ$½k¾ëÛ·ï!C tòÉ'—/Ô/'y§÷5tİ}‡pŸX&=–.¿üòŸüä'ØMmŸ}öÁþ¼ø<üðû³G¥¯Î4±úÃWŸøZÉž¥o±(‚€Xný}å+_éׯßСCÌćp¿äå‡÷a¥d§OfÃòEJNA@JD€·çOÌë¡—wæ™gâóÐCÅgʼnÚÙûuhFe×ͲÊ[bÅIrA@èÜÝËo$‡«ÌøñãMâcf,£Ì!zsÙ£[v\ª?ù›ZBA@è Ô“uØ,2Ï=ÞU]3¶$‘éÏ”àôðÔ;%‰“Ä‚€ T ñA,ó÷õÊîñiõXšÉrä·™O$•ªH‘#%!Â}%É)>±Í}ðÞL‡Ú ’¼™/@R ‚€ Ðm|a){ë«|u×ÏÞ«(ï¶%—£·Û|³J  =ƒÀîÝ»{FpT“LÝ܇ñ/ô³»]:•g9A@¨xz¹RÒŠ—£öëÀ>m´¢^kËæ2+@~[·n-Rt¾cÿ¯:¶oߎ¼&ïzW^Š.Éö®µ¯¢Ž½P´Q73hÝwß}{Å^òÛ Ÿõä²Ü—Íäúµî×á]uîRi,]ƒø&Nœ8`ÀYJM€Ÿ®ßýîw#FŒ¨Z E±*DÀÅ}˜Ôãçõø‰\ï¡.=ÅâyŽ…¸ö*JÂu3ù/Íf#™Dà~xîH|Í~ßûï¿^CVùC5~_‘`öJ2]ƒ¸Èf3ýûïóá‡ßzEg)´×ðíèé@\à`ôM¹7õc]'|ÔÓ†mtæ2}rY|ñ;\k1ОïÜ r<‡J¥\ùøqmEy¸…È'¾+'À¯àê Ãk6ŒŒò^€,ªOå25B¥aÿª Ú¯ó}à:Å}¸g3j¥×ÍP!º2ñ]pÁ÷Þ{¯—û8#f \!¢j(ª©)vúi“Ž<òÈïÜ~‡yqú駷͹"4cZC:ª‚û°—‹zí[A dð“y 'üþ÷¿ ¢{TrþJdðícÚï´T§šxÑ>ë™øŽ9æ˜éÓ§‡*IÛ Õ÷Íá^âøãw]|âŸPƒÄ:¡xÔ)WÚ†Ö¯D ìÚµë¼óλï¾û¨9õÒ­¡éOwìâ´W\øá ŒÇxM(Ê›ˆCÚüãèþŒ3&Ðt5Íg3_/Y¢[yQà7¸T0p ëbßýöc’/OlæBcEÝårE5‰*Ô_Tªà‚ôú믿îºëÀA½EŒƒ&Áx$jᄳRæÚ>ëá¶¾¨¸Ÿ|ä#è÷a5#â=êH&Só‡$«¡¨}÷µŸHúðÃ]¬¶y±sç5dK¸ªh©¨¶¾}[“I¬ „zHx XbõêÕ“'Oî]îÓJ¢ãFûu4áfg^ìã†ç {"Ã0þ’K.Gé>}ú„¤äù>Œöëf" Ó—l¯ïEݘ ÑRQmX ©_‰B€ÿÑ£Ž:jäÈ‘GqD•´£‡~دCøJžì‹8¸·dÉ’»îº«¥%¬_ ¸ˆ¯nú}0gذaýû÷w]à7@YZ'Ý[´ZKc¬~f0‹hÚ’¤’Œ;ý>ÌãÖ÷ù®ëya÷ÒK/}æ™gBJä~¡nHU8|øp¼‹ãºÀ¼BêÆLÔ)›Ãg†T±D A`1àØc¥D&S%ÄU‰ûÀzüÈ2½×†uu0ýaâ/d;ɨ¿Žºé>|ðÁ‡‡qPò½à]¦ŠÇ°šSÒ3.ø¹–~_5WRëÊ›={6ÿ‚Vñ°8ˆO­ñ*VêºTîCVÐ_Г}\)ÉÎ$¦ÿÁûX/¬âj*AµŽqë@Ë_ꨗúêX’Vª9;²9ÄÇô´Ê‹õš"ÑÀÍÂ)ñd#f:ß{ïÝöC÷¡nú}EâP7ÉvíÚÝÜÜìz±§n¬Cöö[êÏÞ)1¤”¼ïRÝÝSϺøAï´ù§V¡0rÔ¨Q¯¾úêŽ;B’IT•#ÐÔÔ„‡™ª¡ÉV9P ®^—-„陡w±Rþûr9¬J2÷á3„ûÊ뾤ŽÞµSJ¯˜ÇÔ=úŠ!u†@—ÜW=öÆñ~N¸$Åh–'þ°æô8Þd¨ÕEA@ÊF ŽGtñÞýž¤KÐÂÄçË}7Þº¸ìb$£ U…@á·ž]ŠûpÆ­tÌò>˜{ÙÅ­U¥·(#‚@‘øNÔÄá¹ô×ÑaÅÒV|b¸KMåA ~°}Öóô¯€ ‹õÒW¿¸ˆe‚€ Pß~›CÙ›K}›-Ö ‚@ƒ#`?Û¬¨âãÝÞ÷©ÚàÕ"æ ‚@#åi>ò`j”$Ü×ð‹xA@èeèuûmæN³a/ë%Å ‚€ ГÏzœðÛ¢}Öãù³Ø“¥‹lA@zòYîK>ëñ¼‹xqéÚRA`o!Ïæ,¸­ïLÓÛÚa½pßÞÂ_ÊÞA¾K­lÆêì WÙøÝ^Þ½¨wÔ‘RA@Ø+ØÜ—JZÙ´YѸ•i¡Ý‹äA n0½°Qqò\…m*ÓV.jE²V$e¥±e‡ì×Q7u.†‚€¶¯*xp!WÍâA 3²_‡X&µ‹€«ëDè-œÊo©OVê”AoíV±h.þ˜ÛE‰û°%9fúß-pã§Ýûù PA@jxÓ|p؇%<ؤÚ@ˆòV[W¬¨/¡ÄÑÝÃòn¢ÙŠf¬X†&ûTˆx± …M"A Æ ÿ}±¨ÕÜ¢–8Ô³~xÊÝ@9A@¨|²¶ïÒ¦ˆ•‹Ó«l8Åg}}Ô·X!!ØÜÇþ ؃‹ø¬ÁK¢A >°ý6óÞDÌ}4 ®ãÄ A@<ì5Ÿ`qû¬ý ÷IkºD àù>bDçdÖsù¬¿û´tœv÷0Ö´ÇùçØ‘âü³X¥—B‚ÊË ‚ ‚@] À H4›Žšù¹>ó龋[ÑjM¸eéÅ#*eöˆ‹Ûñ˜'ÜT)LEŽ ”†ù¬§wx®_i$µ 5ˆ@”Ÿkï¸naÏ}f7°Ð"ÕM»»M G­›=#cØòѶ†¤PÞ¶6„á+w÷ð9­ÝZ{åx†Ã%rÚÝ› 5¡¤œÉ‘MCrH,(3ŸÇì`×î ¿K¯´tù&Ôx›ÃöY·õÌ€ÁÜÃ×^ùòÔ8V´®½òNÅX*pµ´ pMÛø‡ÏZG w¬°ØS…k_: ©M²sMZ)M#…y³ äʱ+HÆRëáv;ÿqñ¼Öö•vùkV¶·Î£14$r‘­íN™¹\_<%®¹Ó.ÏÐ2L€Ä ‚@Í"@ý¾LÎêT[vtærø õÛ<á–ËwMšÚj½´É^þpfuà–M/q‡ݰiík_Þ¬ð™pÖéÁs†Þ,qJ#ªsAŒ²lò[³ò%[)§ã‡îd‡·Ä‘‡MhŸ–_…•ò´dÂ$‰ ÔQ¸íÃÙ±ÇêLþ" ÁPî+ÞºVÕcS‡îêu‘»¤,“.»å%ôî¶Ü½à%æT X§YªÐu·Lè¢$'º°DZ„As6;? .R’$šBÀæ¾ÎN¢?:;­t–În#FµŠvæKñfAˆ3®Áµ{qúYÖÃwÞùðX5Þµ¬Í/¯pØH\lùõÃk]©Ñ£szŸ!s¤·DwRŸVæû\(ÊWA ŽˆÂyÎT‡Eô×aíÙCþëMŸõèMÑŠÄì çû|Á˜´hÝ-­b¨#°…«^ëðf™´hEkû40Û:«Õ[‘_{ûØ©ö":‚\äì—Ǻû}j~P‰°ÒrDyJtÖJ0Íhó©·P º@ òÏç\t×÷îzõÝž÷‹D¢ðåwȀ跮»î¶kçÕ…b„ 44 ,¸îºëÒF‡._zé¥ì¬*GŽê Ìõå2™¦¬lÔÖЭEŒêöY¯ú{´eG‡ø¬¯ÿj C@k ÜÑ“ßæH,kŠE31lQ„“ˆÏúkb® ÐhÄá°>ï·ô—‰a¿üo4 Ä^A@¨{Ì®fýÈI}Ÿ>´¼KÏúeékŒ\[É!‚@Ý"@~›ñ¿¥ÉÊ4©-;2´YGœ}™Ö­Õb˜ 4:q¸hý5«·z³1:i¿qÜÜè Cìê‚ý:@xÒ¼gnÓö‡-ï=¹ñÝ×Þþ°Î‘óA ¦øØþ'5üÓ5•§5Mì¡ß—ˆDèÙ‡ûÌ•Ž}ûïwÎg5lŸò \‚€ ô¶}ðæö޲%Û=<0`,!îË娅½)Ä÷þûï—]†dA –––·ß~k¯MMMxÔD'ÆÊ,‘’ñÔ?©×ÑÑqÔ°!Ýá>» îñQÐû`¸Ê+‚@Õ#àz°úø¬ʳ-U_‰¢  Tâ>,qÀa=uñê·¹EŠA@z8¯íšÜÇ!½®™( ‚@p¿ÏK>ë•ÃzÌüñš/=èWÁE” Õ„“ õûp&s9¬ójîÊ!‚@¯#ÉÀÁJ–œ Ä*üÆE~ûrY+•´Ri+•±’YÚº§‚€ ô.L|‹-ýẲÊDñ@3èbÓ)Å€IåÑór‚€ Ð{€ìðdß­·ÞЇþ|ðÁŠÓqŸZÙ¤Ó¹t*—NÚ zÏd)Y&¾Ûn»ÔÀ)oYIDATí€1bÄСCüñÊÒ_œˆS~Y¼Ñç§iü ÏÍ•î]6zEŠý‚€ Pèñýô§?=òÈ# „W>‰z6l8ꨣJ’’˜Þi#Êã“>ðVõåA wÀÊë9çœã-Û|ÝÍH¶`}—i¦œö‹ò~GI0JbA@¨$zU$èzŸ·RÅÄùalUUo´¡Ã‡kµs‘‚€ ÔÚKrVe´WÎDB sÕÈÑÀm½‚€ ÔÜ‹d£”ïRp»ÿSœîƒÛz9A@¨?ô›m¶ßæ&<äÂÓ~äÈvn“C:F@s-÷ò‡Ëg}/¦ ‚@# €Žˆy²OOùÙܧǸüJ¯tû¡Aˆ‚@C!àZ2¦ý:pò[ÂÜï£À†‚DŒÆC ¿_lgÔƒßÆCC,zF@/tÀHzª'û+•—9ê¹ÚÅ6A@P0æý6ë¡.³¡ $‚@#`û.MG"˜òýö&TOPA@êâ>¸ìTËØ ëÀøZa'uŒŸ˜&µ‰@œ¼4g­Ž=ÏÑ oá¾Ú¬KÑZŠG W}Ù´Õ¹‡Þl£7;"Vÿr^/‡ uŒ@< õè÷í±‰+ éx$•ªc“Å4A@h8xm·À 9jÎd“p^Åké–¦TR:~ ×8Ä`A ^0ëÓ6Ʊ¶ /ø©dDŠpXŸŽf°q‘‚€ ÔüZÛ„ý:Èi_&“ÎeÐÿÃNpØ ®¥âÛÁÕ€b Ô*ºˆu]z‹KD¹,:Ôû“ý:jµfEoA@ðAÀ;ì…ßf<Ô‰Åâì·ù!¾øä– A@j×rù¬EãMMÍÑh,ËF3™X<*¬YEqA@ºF Žç™At-}[ð”¦ùÒéL,–ˆcÿ9A@¨;ôrGć³O,ðâa—º}MÍ‘x‚]ùÕÝb  8^ãÅÛl}úYY<è—µð¸_<ál]$ ‚€ P§(îÃ;¼+³r1räWÎäÍYA@ê{¿žÞcÏ}Xæ`öõkµX&Žõðð<‹zÂ…óÃ|îkôv!ö õŽ€½WúzD~ð]Šgûøqçz·\ìFFÀæ>ý(3oW$O67r›ÛF@À~†/w4‚µb£ Œ€ôð¤%‚@#" Ü׈µ.6 ‚€pŸ´A@hD„û±ÖÅfA@î“6 ˆ­ój¯~æF†Ø, ƒ@A¿ÏëÚ´apCA ±1ocÕ·X+Œ€pŸ´A@hDÜÜG›uÈ;ØÄfA ±ps_cY/Ö ‚@£" Üר5/v €p_c׿X/4*Â}Zób· ÐØ÷5vý‹õ‚@£" Üר5/v €p_c׿X/4*Â}Zób· ÐØ÷5vý‹õ‚@£" Üר5/v €Í}ò*[c7±^h8ì}ÚØny“·áê_ »ß¯¥â¸´QÛ€Ø-4"ó}€ØÄfA !µŽ†¬v1Zhxd­£á›€ 4$ý>YëhÈ6 F ˆ€Œy±ÖÅfA@î“6 ˆ€›ûdØÛˆ­@l7÷5b± 4"Ä}òB[#Ö¼Ø,46ÒïkìúëFE@¸¯Qk^ì¼/^å·z»=ˆõ‚@U Éd|¹(ÆãXÊV×-EÖyˆR2 ‚@¥ñ-^¼8™LB ø®oß¾C† 4hÐÉ'Ÿ\©"ÜÜW)¹"G²@'ìòË/ÿÉO~’H$öÙgŸ8Ÿ‡~8x°l™®ŒT)…DŽ ±X ô÷•¯|¥_¿~C‡=ôP|Vø ¨Œy»[[’_*…w÷ôªè‹ãÇ7‰¯RÏ#Ûܧ ó][©”a"GÀ} 9sÅÕ»ªkƆˆê2Êæ>¦<&T¡¿.Q“‚€ иˆE€”ÀH•â;Sç‚1o•щLA@¨?|¹°âÆÊ|_Å!‚€ P&¾°ôD§ú ÷•YI’M*ŽÀîÝ»+.3H ›û|'û6lûà¨aû‰pA@ºÀG?úÑ’„€—JJïJìæ>¯¬¾môÇ7vz£$DE kîûôˆý-+W£æ‰Ú‚€ PÏìÛT¶uö{•z\°l=$£ {›ûôó}{³l)KÞB ÿ>¯ï*Go©%å ‚€ Уˆ/ƒ…W„ ‚@•"PÀ}ò^G•Ö’¨%•FÀÝï“‘o¥y‚€ P¸¹¯uA@¨4Â}•FTä ‚@- ÜW µ$: ‚@¥°¹Ožm®4°"Oªé÷Uuõˆr‚€ ÐCtý>o,bA Gøaû·¾õ÷dgg–²—…7578ô#ç·žÛýr ¸}Êc.݇U$½‹À÷–þ oß>ßh»lÈàA½«IeKûw\¾Ö}}ö…Ý”,ý¾n(ÙjDàÝ÷Þ»ð«W °ß®Ý{ªQ¿ru´ÿÀ/Ÿ=ãÖïÜQ®€|>™ïë>†"A¨:Ò©hbOG] x2,‚]°®ûˆÛïûÑ}÷SØWÏ;¯˜d’FzL^ÕåüU¥Œ*–ûPO]è3ÀÆî™˜%ÄþÁÙlöžü §«Sä ‚€ PJó>öÄ3æù—¿nzàá?~ëöG¶þý=×^JwŸ6€ŽÓîÞâ¯æš¶à8ÿ[ 2PeȰý¥6Vh—–Gh%–\¡ÒJSLRÛpׯÎ>+U»¥qJ=ø£åóƒ5âÐÇ~·ùO¶m~í÷]üØŠVkÂ-K/Q)MG\üØŽÇ”8ß›dMÛ´öÖ;ì$•*´åøZуå‘è<†ÅÔ »SÝ)·»(M±^eGñ%ŒyÍ&F ðôÚ-ïíØuèÁƒ>qøPŒy{»MM8ldo« åçêÖPÕ”ÜïëÛ·eð -ÍMûÜ÷á_ÿ{ Ï8c܇»> ¶RýŒß­¤®AðfÏȘe|´­!‰”·­ aøÊÝ|Nk·Ö^9^…ÙG>PŠÍ\–•—©s(Qkì² F'ñ ª RêX„¨XbÞŠB|­PÆh뀠aöU¬8Ãy uAÙmkºÖð´»7im µ¹¦ì:bÄ|árfC”!ù™W¹>Zæ •«PÐKB$àxlÎÀû·=æŠÝ¼dÒþ'-Ù©:‚+µÖQ÷}ä€Áî¶~ÿßo =`ÿ?®{ýíww|àÀŽ‘ìL†ÖÂÚ+_žºÇŠÖµWÞé0ÖÚ+XK ×´ø¬u”pÇ k}C¬}é0¤Z4É.`Ò"HÁhÉt˜•äQ±eé\yåXŒ…q¬»å¥iú6Ë—Þ>mÀl¥H¡zÚ 'åº[¬+g³R(O+ZÛ5 Jô±¢_+Pb ¶… °n>Ša8çõB –ÑèÚ®5\j=Ünƒä’6R×W‡\Aí¥°Ü5w:•gÔvPV ÷ 6济=ö¥wo6“¬ùîÕÏAF.–¯×ãn4¸/‘(sÞÐc -WØG¾[çIÕ;t‹ÓÒ4Ké¹î– ¾ªìe+Å|u ¬¬’ÁÒº†+PEµ8³c©5¿†ùŽàäãB ¸F G_ú#æ÷q;Ñæ¥·ÿÏ—N¥òøƒð>W8Ir›—N¶çRØãsnîŸ2x}Û¼t §p¡;çtÀ׬´…x€Ô @üÈèñBpB‰)@ μÿÁçéÜ5áÄ™?þÕ#*Í‹>œ™üé!N!Ÿ¼îÕ[pÞwöÿíβáÎÓ'<ü¹'Uà«×L@?·aø‚[®ÿäÿqÙ§®ùC•å·ßÚpöi”å‘E׌ºÏH,®A‚‰¿:`Èà˸\[àpýaWEjº4î‹Ç¢;Þ{ûK“?qÊq#O=aô)ÇþàÃwíÚ‹¹¹]#Z‘°çÇŠTuÒ"šSÃ*†:è14u­u„È'™/MSi:«ŒÎ䄱/S¿cͪì“.³µœýòXŸ~_w¬(I[b0„‹ò* †Y1Ö_aï‹ó¤E˜äTxζÎjµKôJ3Tñ‹†Ë,dÀJË¢³å:«$À¾ëñxùò¥(&^ø­WîºïuËzê7Œ¹ô¼áf¦'®=âÐÑ#Î{ˆ_ûíªuÿrIaË?åd•éµW_±þåÔ“UÒwÉÌu›^µ¬CGð¼$¾ð8ù¢ù㭇οú©"ÃÝù+ó=rÑE-]ºÔ|:]Ìk®¹fÞ¼yf x§M¿×ÄxÉð:>u2¼×Qwï´áæ[pØ:g¥2˜WDJyŠ!×Ê©²lP‘¨n!×\Ó­7ßøæÖ­j>õ­Qßù›³†¿~ÿ´oX—NY}—õo+@lN¸ußÙŸÝ|ɦ›N´T‚﬘•Ñ"µËz]§§Ø§ç|üÔÍ7œDׯß7í´›×͸—¿BÚ)ß^?þ**ÚT-(ÜLc_ôÀ¿yõ57^;ß'Î/hÁ‚7Þx£‹âfÏžíî¯ùåµÃ䕵pj# Ì ‡]VºŠ–@À울ÄQŸ…fÒ9÷Ò1‡_pÓ¸«sˆJm‡¿¶iý¸QòúoW¯·&ãbøÉ“ÇÝ´ä¾ >Óš'-Gˆe2b´uÓš'oüÌD°]û’‡Î¾øF»ðCZ—ÿÚšþÍW_ËM´~<}žµ`Ó_I€©Úëá@ DD±ÜWwºLê1Šž`¹r-=´¨ŒUózDDlr˜xáU㬌F¼ë³§¾Éwöôqœrø¹Ë´iôg¿™¾N¿wÓ  ¹üqâ ÏŸyê¨Ã)düU/?ŸšøûžDxç._næq®!Ù7Ü/måŠå¾Ê•X[’ð¸™ódau)^¢b´`zquY Úô0èYጀBN¸îå,‹ã>ç¡ìKK‡#ð•sò™9%b_¹ÎDˆ)¯»žûÀËú •þ37¼ôò ù䪔löKÍk¦îëz’W¨j‚¹¯ªÕÞ;Ê•¶Î»wt’RA@èi¤ß×Ó‹|A wóöŽJ)UƼQ„õŒ\ ׳yݳMƼÝÃOr ‚@m"`yé99A ŽÀذRÃêB¥<£¼GŸ§Q!r‚@í"O$¶oß~ð¾þæßj× ¯æÃ?zì‚uÞ¨  Š‹ƒõpš/Ç ©0H¢„ ‚@Õ"0xÿýWüâá_úç1#ëêaö÷ßvÁºâ‘gŠK0ÚE õûðÇŒ~_ñ°JJA :¸tö…ß]òý;îü^E¶²­ÑãÛÀ€ÿsÉ׊W‰û}&Åa•ö˜×Üéý>󬤪’¢:M¨ˆVÌ}&Å¡ßçÏ}MÂ}\„‚@ àå¾f“ûÌ!’VÆ7`˜-*‚@ƒ#6Ãiöû˜ á†Þd¬Œ±ÐKSƒæºoƒ#'æ ‚@-#Dq÷3|¹¨p_-Wµè.6÷y(.Ž—^²9+µ°¼ËG{pH¿OZ Ô¶GV psø©»ß—Å„ŸC~Òï«‹#AÀF€É_ÌNê÷e­´Zìˆ(úËÅ(DA@ê 0œ¦¿x6cáìì¤nq_ÄÊ&„ûê¬ÆÅA  u­ˆã¶EOîÅÓél&íØ“¥ w#QüË´Xó™—MLZG€ˆ/b™«¢*$žJ%qîúp7ˆø/Õ·%ÅcàZ7Zô ÚÛÛ·mÛÖ‰1NÍÍÍÆ kmmõÚÔhöz(Ñý='4žJv‚ûvîÜ¡˜ÿ¢©Qv!H¢šBàî¥Kûöé3gΜÁƒ×”â](ûÎ;ï,[¶ Ö]<{¶™´Ñì ‰§ò\ÔGý¾d²#™ìüàýíÄ}ц½Éôî R¢j÷Þ}÷üyó °{÷îZÔ?Hçý÷ßæÌ™Ø~Û• Ñì Â'n’ŸZï@¿/™¦1ïN»ß‰¦SƒÀ†]Ë’‚@í J¥@uF|€¿££vÁ:WU4š½]¶DÏ×ÂZG*“NwìÞMÓ}´ÚîC˜Ê.EKA Êh4?Æfo©ÍÏ÷Ñ‘N'íUÞH4›Í`é·TA’^BÀÞ¯ƒžoÉ¿Ø!¯´ÕP Šª% PÞV%PeIÍÞ’àÇb±h,–H4+öSBôƒ€% “Ä‚@u#Ðh\Ðhöµ>ïdRÆãñξýö¡hÕý£R¶ *OÂA@¨Ào.-ÑDS3Î}öÐßô¹Ï€DSBªDcQC¨èñìvå?kè§-ÙìÈG¨þ¶yÉi¶=Vù¢³Ù Î]÷ìU óa˜T!ýMdJdo—íÄÕû‹75·455ï;ÀÞ÷ãÞæ&ükéR$j²o›0K¿bðÙÿsÓÚwfÓ†h[–NþäçrkWÓåkH=tÒŽýŸM›.×cWLøÕþëv3E…U©œ’¼9RÐÁµ+Wa˜¼t©:y)Ù¬ŽÍK'&t(•Ô¥þ ±·¤(¬uXñ˜Õ§o>…õ•„¢$®ÒéôÎ;+¬é®ÎÌøáÈEÐs›6ìÜ9xWÊznþüçfþpóàÊœ·£_¿~¾F•i¯E¶øc¯Ý¼ùZ\?9ämw¶Û:\ø—Ùаó=2󦓬×Û§²rêo7?4\eƒåOÎÿÔ/>ÇOΟvç‹Ç¶"c¦sW™ Ùë BH žo±¢1+Ñ”?ñ§‚€ Pë6½êN7~Ô¡4þš^óòùÓÚ_w§¨êï>)}Aptœÿ`^ûñ×\x};éÔ™Ö˯ÁÌןX¹n業L|*Ý믽l­»ñ;kì¼È½ugçV`@}pÈÞR@ÊöXS¬paOœ<îÆ5OÜpâDGðë¿ytݘKFQ´INvø¹ËîÝ8ú”«‡o¼Q'©°Áâʱ×k˽}úù¹{7nœˆžÝôyjuVHR8×´ýZP×Z!uö½†ùÙìSFÆ`í{8¯ð*§¦®³‡Kñ‚@¯ PêÔRé™u錇.˜ÿ”ô©ù§Þl]}þ‰ôU=P†¿'Þ°æê—/˜ÞþZâÊH‚dÒr9¶h´6)÷Z{;Ì{mÓúq#‡CâkO¬Zϳuަ±‡œ4eÜCw™¶rè«0D#S–~!ö–eïU”Ë›aÊ’dHbA ‘8ñÆWî½f̘1ŒÁŒ{_Yv¢Žá³–Ý»i̤Öše³ŒÑ ;Yµ|‡EkF͘ä˜4îê5Ë ÚWß5iÒ˜›­q3fŒ ÑÔ¶ qO<ñÆ5WÏPY ì{/ÊÞ«(eø.ÈÆe¿Ž½WRÒ^CŒrÆ€ÅèwÂõýëõNB]BO°p3©á%ÁŸÐvùêØ-{þʃýJ^,©í 2 t]k8”Á…Yb"ã«|H`½!Y|£Ô^EY+eøëÃþ¼”C¨?z€yª¤F³·¤Ê€ÿ>Ú™¨£ƒr©é +°·¬,I$A †ˆÃqi:Ù³ ==»çœéB”Ž_ U¢¨ZÝUBï$ 6š½¥¢šKgÒ©Ž=ùM Òé¾)U¤ªF6š½%µÀx&“Îd2{h[rud2Í+IŠ$A ¶ˆcé 'vèPzýÑjžy‘C¨/øa²ú²‰¬ óEÕ4•2ÊöYŸÇBuþì`M#$Ê ‰DbûöítÐo¼QOÀ|ðÁ° Ö¹Œj4{˨Ó86fà _ÍãÑþä)C–dªAƒýüç?Ÿ6mÚ¨Q£ªVÉ2{ÿý÷a¬såm4{Ë€.Ñ–Í-}œÌ‘(…xúƒeÈ–,‚@Õ 0{öì%K–,^¼Ø»•mÕèXŽ"èßÁ¹ò%—\âÊÜhö–¨¶ìèÓnpì‘.Ñ!üXÉ!Ô^‚¨/ûÜÖ4š½nû»úN¡Ÿ×Ò/Ov±D!]e”xA@j o- p[Œý9À{Òí«á*ÕA âä©4j%Œý9Äwi¸IA@¨mâ >â>5äå—Ú8¤¶ÍíA@°¬ýöÛ/Ûo³é¤Kpe*‡ 5ˆïþûï2¸ ¼ôi8î ÂKÂA &'>˜@Ï0+ö3ÜÖׄe¢¤ hâ›5kV@Å}r‚€ P7˜Ä2æî«›CA€7˜ïÐã !> %Ü'ÍEê/ñɘ·NªVÌ |‰/¤ë'ý¾ $%\jR‰†ùø,ÈE"Ÿš0á[ Ԍݢ¨  uóç3úlNóÂCÜçÚÝÛUžñùÏŸyæ™ÞÔ¢ðßU=-e¢×E²€W}ñ/¦8ߌpøën˜àm2yXV°ÌÀ'æ‘ůiºu ‘ìNºW¿wHÏëâ­£<ž šo>¥àá±Ý´ÃGÉnJ,:;ˆÏØ‚—²q•ÅsîþÃÓObâD½;9ÒQR?tŠ.®!ùÎŽÐ…§ Š ¿Ü¹TqîÀ"j < Çš¶˜"Ãóúê$Š«í»Cø ,ÂĽ”¤K4*¢‡«\A_]õh'Ë"Þ*6cµÎ¦dS‡ðúò5¹Pëƒî¼=îøÏüôg?s{¼öU\ @ÝûV?ÚG‘7KðR*ØAÊ”*Çlñ!2C¢XBIFiiEâV¶Q=”±‚õX¼†®fÖåW–¬6/|µ&,¹"UƒõðßõâÍ/;%¸Œ7öÈGû÷ß{²­{úiËUÙb1cÐMÞVt{òM~/éX»hc0¤ŒoŸåø% ×Ó/G`˜¯¥©=á˜x’»ºYº[\À÷’ðÑ­`®/-‚­ÖŸæWNèâZãã½è–BU–,®ãvØá±¯_Ö–Úµçÿñ«C8àáÃÁʲE[©õøS†Ñ¨:¨’èÇ0hΫ«ìnÉN‰]ê¶1XÉ|Þià\l—«þÙ'^QŠàX[Zh¡n»ô÷€Ó—Q\¥—#Þ·rýìbœó «4 9®«€Ct‡›±5e(@ LѤ»¬r Ûy0Ôñ­úéï.Yòc?±ß~"O>ý‡Îdò¿Ÿ[»aËFDŸóå/ú3ŸÙºHЖÂ;ú7Ù“µ´jÜa‡_<ÂBfkür˜%¸âC$!—N”¬«ÒÂlÛ{q=¹8ãEÀ«BZD7°î<üÝ®é|¤Gchêà–´÷P.¶¤gž~êg?{«9æc‡Ú”HDž[÷b*•þàƒÛß{oÛ¶­k7¼P¬0I'‚@í 0öc#ÇŒ9,“Í€ø°YÇÿ©H.e7aIEND®B`‚PK !Ûäe¹Þ¹Þword/media/image28.png‰PNG  IHDRS[ŽþY pHYsÄÄ•+tIMEÜ ,ëÃ/tEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/05 15:31:43 lim_j SGA250167 ù\ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì½ |eUy7ºÎI†ìùÒj[4aì±!ƒZP¼o2p-d°UCëÌ«$FÁ/C™[±&Á $ÞÚ‰ÖÊ^šêLbEÀjsðBe ¹Il­:0*ŒŽ}†™œsŸµž½×Yg¯µ÷Ùç3çã¿g2{¯õ¬g=ϯ½Ïÿ<ë+ñ£_ýê¸Ã‡_~ùe!Ä~ö³¯Ýwÿ‰ŒÈÐ'-øD^d„Høú„¤”,™çSïZg)í¤E§‰D’>Iúˆ$]È>¤`Z‰«ÒJ9™Å•)M”6UÐ,Îzd iVÊå‰'(3¥bÒº¤=•—R¬E9$L¸2]JU‚ €õÀ…^¸fÍ¢P+W®L<ÿüó/¾øâK/½ôä“O~íᇉÖüñûþøÂ ßæ‘-Mþr]ËaWš )~èÑè}DVPÔº.¥¬¥,›P!µ5ÆÏªeÛÈ ýh™™‰NgÁ0ÉøXA²ˆhÀά@¢S¦Ý\^“jäÙ©3*t/È»ÉÉÉÞÞÞ°6Yœû=öØ\P!› U{ÿý÷“ƒßþö·¿ô¥/QY2ì oxC+Eûè Úwÿƒþù5×t¾ýíÿ:¢_š>K2FQ6¦a^•fÔ/@ˆ˜B)9"]÷óH›â}Kiú—IÓßLBÒ1ÊK&[’‰É–‘hU4‹ô+¢&Ë‘%¾ dOf)¡B€R7CI¨ãyÌÑ|`²W$@Êé/éW̲8˜'¥Š|‚Ë´Uú$‰¨”á{™«Þ¯¦¡ÿ7Ÿý èDç =,7§°§.P$¦XüRÅ)ÔúK,Nz"4DdE ?‹î¦]…¾Åó’ÏÍ¢Na…¦¥˜’ÚÒAi’_*~ç٨„_ÒW¯ j²ƒqX væêDgn)øq#.EC•­ôëC¿ìtEŽ~ÍñgÀ5ì6þæ½6ËꂦÎ:¦Ð7Z§RÄl9æ9Hr 1Ó+¾~ƒ±Ù•¨¢±uê§;¾›ú¿HmJš_uÝ~È"2ÿZ>|ðàÁ—^xá·½¨1&@’)>D¼ÇëluÞE‹<Žå pä,GÜcUR•do’meó™–ɰœÏÉL…dFæÅÏT@‘ãsf•R˜Ù™ÓB•Ëq¾‡“®©¢|x©k¶„³øpbÞtΊ#ÉŽ˜§Œ®q{.£Â¼ªôË­ _\©¼Æ8â`RM{œFÆL,£LûØ1¦«¾|ÃF:¯ù£º¾þз¹"æ—vJLÂÄ™÷½ï}­G¥îS ø±œM‰47 °«—²« *¾t’-fWNŽeVªY ]Wœ§Á§L=œ!` ›¶T0Žåµ&c¾¹ô–5 (¦ zËsíúËÆ6¦¢õÚÕÙ)¶‘pt®­­è”À«__òIÞ¿f½l³V·™@E›Š‚Ë…@ 5žÎÕME·^Ý­H Þ$v-år¿ôzÙýD”®pY4ô $¼,îDTJÑ>“ö‘$]ù«ó#Ú§ëb~H)K¥ïxÇ;’KK4£Cj’ƒ÷¡KÍÃøÄ$@tÎÃàTo°'©ÅôI —/é¯n'ÿšÖc¢ï¬—«Öª :±†ÝlÓ—€ CDX>”Î)C}VKc¤Óû+âƹæß8^kùáˆJ#JEgÅ©7LC%ì1ë*Ŷ0›ú£ÅøëÊù—õ›ì´eH3'FWÜzAÀnœÂöó¹Ù øépþ5¹x“4~jêÚYv!f£­ki:DÅèÃç1½.TŒâ|Lø¨ QÀí£ÜB:åé^´¦iš­Êdʤ‡¥ÃÒY˜$õažÊš—¶¼.hk°… ݽ´¤„m6%õ¹™¥ÏMI2Ì -¯1!á€BóRb Së´³.õ<[+å!îK³ü#  /é¥8ËßaÇÀR·â2ÖnWP„=¦’ŠÚf[k§˜ö|áK™4ÿ’m¹kgéûå¬Â¶ )µŒ€¾¿ldà’Û†™e·Ý~ME§k÷¹ÁÄØóâfªÒ­1o©å`k+m§Æ$~EÕ1¬hØK7ï’w]øþ¾2€N(þ÷ßÿýßE“· ‡ôˆüqäÏŒÿ•wpa+áÂѾ£Ê(Ž¢™ö172ü’·xíR€-Ù&Q3iS vó2 f^Æ¡}N“ØÁ9cmœhúNç WÀ*Jç¥>tNeyšr@³C¦èWCàea¿;Ì7ì²;[öï2zT#¶é;K'|ïôÛÓ¾•æ7åê" ‹Y³Í&첌¨BUEÜA]§›M"ÐÂZ¥³¤n<”¢žV[Q§jV¹‰IE俊ªß$S²óˆÑ‡Gû}fd +Ά˜¥4ùûÛñ¿æ"êÿxyi©•,Žº{‰Í7ú£¹¥/í9&‘ŸÞ]û‰&f2GÕg)òÃGŸ¾2Ñ»ë¯ÈÑÌS£ÉÄÈS™ÝÛ’+‰VósçSN…\—þË2|yÄ·„.÷OohMÜù]#åÉmÉÖ;Ÿ¢,y’HPu+zwýD üdzÃÊD‚?Ûžò!“H¬…>w>E>zŸg§{‰;Ÿò.©vÒFPȲw>EÐçeõ—mxE"AŸã‰c¥ÓR3ë¡f·,dzÓèEéʤ¢8­–_Ê\-Ϲ”&à,_Ø.‘­Ö‡lyH»ÊiÿòÚÆ&ñkTÿµ‰™2Rœåô‰õŽ@àÉ¢KºÝ:Q·m>1³™B hÉz$¯ýE<ú‰Ë«¼ÊlXt¥Eø­0~n)¸Q´o䎛htÜBñ¿R´Å±™»•éoáBe’â_&ÂGä¶o£“#êœ?DûžÙpì¹›>õTæ§Ó?¸ê ¯KnØõlVÀ$‹ÎsÒC$’þ²f®ˆ.× .ý:þõ3»þH\ñûÓ/Ðù¦sÂ4h{èd÷HËÊm{ÈHú°<Ÿœ¼¶ï½â;?~V¦«ÏžG¯ÏÜvñ9ûg®<ïºÛSéô§Ó‹W}aÇ*µgÇ¥oM§™NïÛÕ{ÃÚm»… ±·\wûwÒéȤë×nÛC6˜¹2Ùrúúû¢pé1‹¸ÔÆ|\õ«Üùâ¼è2®Êó| DWêTȉ¦=N±øšÅ‹¶ÇiCXbq¶…i‹“n¶>×ï>ýÆ×é¤ÎÙH]Ð> ÔkVÇ$ÈÔ&ü°mt®›¥èvË'ö_-h<õÔ´°¢9•síE4þ"Š8 p&­|ŽH'§vïøEzÇ»NˉjºæS.Í½ä ±I54X›ñÅ@.1U15I9É”Å6Ë“Uk{{ïÿâîgé\æîyô†ÌçˆgöÞ/î¸øwUâI]÷õŸC&sõÒ¦³Tʉkûz$_<ðäÄdÏÎ+׫º®¿3ññGö,‰U—Ü—>œÞ}»ZÎF1?)öžW’6¼3ñÉGöh¬Ø/²M…KϹ|g¯øÎþ¹}âEÜžò9çJeÒ³Ei4ßã¶‚°\ó!£ÅlÍM›W•±_Ðæ;]¿ïøD ›¥L-Æ^Ji×Ì*ªì/ª+ˆFk¾ ¨ û’Ëê¿Z†%u+Òæ™’¥Ø(‹¶çÄÆ?æÅ•Š£yYdˆí]ÿñ¿¢O€ö•צ}÷ÝÀ¬X&ŸPJyÉŸ×ÛKÄ…˜¦qfKÿtï?Š;ßN´²TŸ&ñ?’yfæÊWmØö™ É’òóiÅ·öŒœ˜Üö™m-¯J&és¢ŠÌ‘01!ú«ÉÏtE:"¨d|íÊ䉪ø«6LÿD•¢àÖ+“IúP-ð»ðºŒ¸~íIÉ ÓÏJZIÌ?/‹Uoèëý§‰Ý?V)»)âwÇÅ«…8ëÊxýÚ¾égµ|Â&ýéÞç¿ú´Ÿ?üý3NcƒO^}1¤ýаr¸Îg~?Ýw¿x˧18'*±grÅ !üó•É÷mÛ¶f@Èx› Õù‡SÑ»mÛüt?*'#ŽÞ!}*¹5QúZ…C’SXÀ—QÒQ‡Ãˆ¬a6­žYT½ä´{FäæÊtôZÕpz½­ŠÊà÷¸mœ³l´*[I…RÂl®Pu¦Ú¼°TÁ6mƒY—ÉçØ`“Õ(ù`ŠQA;K»ß`_Uh-5R…ÙhÍ6£ÏùÄnW: œ›eMZ²F|_3jùI!ÛjÖ¼B £ÞÞÛþï!ú˜K:›ï«²8KôîS[?FC éºá6ÞGù’ÒõR¥·´ÖÎ?Ó“¸š&eòÖhQ³è{þ§Ï<–¹¢ï$"7äS"ACÖøUMÔGÜýã;÷ÿtÇi?¹òìõƒ_Û¿ã’\“ؽé"¿ùæµw_”¾ú5*Z–GT(Œº¤ƒêâyLª˜ ~äŒ+ߺ{ÿ—Ï!šóÈ•§ß0½ÿÖĦw<öÕ§ÒÝ«8xÖ½ôh¹$óä®=›¶>Ll”'uª—Á«Îþà¥÷oêÎî‹Oßó­ë3ÿó»çÈJWuÝýÌ®kN?ã5⎯§7­ñÍPÿïùÛ7_wóîôj±‡WN$¿HÄÁïï&1¶Í¦¿|©#|LdIž'óÒ‰òëÀ÷'&ßÛ·í4!¾Os³¯ÿu¸NžFDêôënßÞDJªµvÃêý;ºee×_/v§Ó¶–µk·]œÞ$FÎXÿÖÝéû$TjpzÿŽ7“ÜýJÓR+%3O*U{-kïÛ#O잘¼ã“÷Q¶ã™W(“N\JJ ©ä¯¦¯Üñæ§®\ë&k»_œÏ¹¹6Ì<3*ÏMí|&Óí®!·Rº'|wøM­3ýN甂?ýÒ(¥ëu`ž­9àB¸GNqö˜Š*g›ÃÜ“ԻAˆäý—5i÷8p¢v°ðÊQ¢Ö0ï»n'd´¾õfƒ±íÇÔSëþh_à=³tq¥b*/]ŒÍs>æËk¹~wÅôÑ\¼"¬H¡:zˆêݸùvNÔ³:Ì”°z MoM½÷£·ý¯ˆ’-Ñ š<áýQM*!N}ã{.`òÉ¿ýÀÙ¹}úMR˜²¯îú›£é¿ùÞÈo'7üÝw\¬hK†hߊµßýÊþ{Ï–&:$£õÿ¼fæG¹œÎP(=ÙC:tÿ¥oàwì>Ü}ZRP/A5"¹’¢^;·IÚG‡ì|½nûî‘î3èâŽÝŠ z‰ûŸÝ³OA‘ÔP¼õgŠù]ÁšXƒÿ÷œ‹îH¬}dϦs^#‰ß÷åæJ“ÎðMJ3g“Œb†ê¸"×°U]7Þ™˜”yr dŽ çÿlÇà}Ï&®g‘àDó-ïÒT|š~Åè×J|]¦ýRYÑúK±ÇÔa@DV´mñs`šosý²3o´6)`›–átý—, ¼4Í*âÛ ÉZ@À¼éöÏ—v3Ð ÀÎr66ífÙ?WGúµåÕ‡4ð,T߀@¥cíÑ2>ì+V¬ ÕÖÖÖh©“÷“7ÝA2t-YJ.Ï#65Ø)é'¶Êk®JÉÞ^ú†—©r"*ýÉ’›SÖ^õ‡÷¯pí™–ÓT¥$Eþ¼¸•ç2(Ø’ÊO«9¡U©¥z)æõƒŸÉ)®t¤ŸÝÿÝÌå¯;U¦Êº”-òœÃŠBl~âżô‚ú¼øƒk×,¥žøî¿ŸoþÍ–äÆ]?¦Kf{D$—ä:„´5ý•5.ÑyúÔ7¼ÿ¦¿ðä£ßÊ ¿cµ´‚UÍÙƒ3wí»§ë4ª=#^óº+ÄûŸe (»~Ï?ãTE9…-L‹×´)1¥N<§Ä(ɇó»bçÒéÓéÛÎá‰oQÇÔG8Ó"Ý’ú]ÿÈž=÷]:yÇű4ªôfx¤9Ö(cˆ*ÀGÇ3»z£Mcä£cðlz®êÚñTb-ؽ½Zåò­ÜÎÕ—ñ…k[…~Aëý€™'œË’vº¾¹ÞÓéÿ§Ké"f îBÝ!`¿ìç:ðȳ@Øß@«3µÙu•®@k/‹ÎzWR &GÛ†B¿ì¬Ê¥¬\¹2ÎüYb`÷}é³ô1çvTΪri~ñÅ;î8[›d& ‘ rC¦)ŠÉ®ÒÁm‰›Îí}ˆØŽz¶æFzaæóÀ¥ÿ´GÆížûçÛn‘s)è”b^Cóµt’øÞýöÀ]~îibÕ¹W\.nýæ÷ùÉ|~Ïv^~Õ›N—fpU»<2™s.Nl}Ë輤tê“N½£¦°ú£/=þ•Ëw}á)„4V±F¥ƒT3•çâÔsßßý¿Þó¡¡Ì_ü$¿«õÿ¡WÜóØÇ2ëßð‘øÞç)Ú÷Õý÷PLKˆU}½;/½ožÌ80s×u™[.>Gs>U«ÎîëýŠ#þô%FŠ 4Z·O(‡.ù£âòà¿bÕÚ¾Þû/ôÆÇIžvEßZî7½þ¯8ÕOT\NÎ0ŽwÈøáõk×^wùÎ+mâT!‰-D„”¹«N??qÿ¥÷ÉÚ-d³6Ð-`0YÕ9ƒiZëæþí»ó' Öl*ᑴﲑrÎàþ]ÿ¯Ò|úzEü(hHIDUÒ[ï¸Ã³Ú´-jx`Æ[ð´î󟚌5Ú+¼¾ùånfQÕöK<Ò ™™·ˆYo^m¦€.è,•·^g)mpÑÅYmtñèÜ0ÃJO×ßR|â¼ÔYúÕo É$­D›§eJ7jº­æ£xlé’Lµ9³L_´dí8X´%Üàí!ZaÕ“B 3Í®š‘ÑXQîë_ÿú………û·ûå/ÉÍ)¬5ÆLçív³x¹ÄÈï}ï{O?ýôë^÷:ûN%.ûÒÇüËÞ¿»÷Þ_ª˜=d:ˆ%Qða“Q@î×âç3Wvlÿà÷wt¿Får€0³gäôµ™‡Ò›hÑ”óËj |"Y£‘Ëñ%úK³1ަ—ަP˜sÅ#“÷á!K{•JTÛ*)¨?å‚ÍÐ6¨¢Áƒ­¥T­‘äÍРD ‡)Q{D'4F@ã§Rm„1W#hXük91cûi¾Hœ¹‘j¥&9¹Äê_ÖïÙÈâÁL»Á™)Îsh— jW×å TGyÛòâJ™zâhˆ#cÛ'…5Z…y©_|¤M§šh–ÕV×ã8™Ê!`7E3E7'> ûKæéRZ†ÛC´þ²øµŒ ¯ˆª‹(RJe©Å©Ä™X„…y‹È^ÆLfqq‘ÂcLþò)B jîhÛN<ñDŠö¯¥ª)0fÚL)­7žyÁè¿ì%Ö²Â`KLY”ùdEŠ_ÑÑ*ÿ—»bã“!™ªru"³™¬Šx%Õ‰Îb¦åq)Z6/ÑJcÿ¨ï–EÈ8â¢Dú$ S‘H}P@î‘ §ý±²’É—íz†ây\‘®Â¬Ë´A×k¨ žjlZÎÌ!d+©˜–ÔdѬ+¨×ºÖ?h­œø ´6õä»wœnb¿´)yà)ê¾ó“çú·º8-ÙRº¹Ûïe¢\;Ý~Bl™"Ì2Õ–E¡¶ÁéE^ +gYuq¶å5žï‹™U0°ìZdÈòú/)!I;QÛ`êäD–c$dj»U˜-‡Ïu› ´}ÇuSáh¶S[…¼¶›b…**‹Úê<&eÁÄ©Äl e$L ÷8ý®:ÂdÊ’Î@YTÅWòòË/;'¯Èù,ôØÌJ¥ŒÉCà/³&L$ÃÔ‡þš4’sIÑAó0™“NçD“1½K¶¬ ©*Ø'Et§0“*..3Ūÿ±#spGnMêJå½Ð6èÚN1/ÙYVBõòaj0…uu,É,P×R…ê=­›ÈÚS™üCüBÍ¡UúÎÝä¹uÅ®g¬x_hÁøú½xAëK-_§wk|–ªß…jˆ/ÚªåʪÛöÀ‹Û¼¤sóŽóyà/¢ÅÌ,JgY â²\BÏ2" Û‰Ý<ت@#áöÀ‰,x"§\®Z{¹ÔFë)®R.Å@Eë/1·8ó•š·²D{ -NUk¬Ì²º ª°väiæ²Ó˜D*•Û¾}üÞ{_ö¿A5Ë1éNØyðæù}¦,oS.NDƒ?ÔyJ½¶3Óa2*¢S<…B'j@í#MÌ,“qÚö³rNçÍ”€¼ÎbIÍm1¤hô3Æ'ö#H·"ÀŒ#GÆ®"ºTt®­ÍL)¥,ë‰Öm[œ\­?ð¢Ô—|ý—*rÊ›ésû2޵YFì¦H¡Ëc°¿ä gQ)S•­¶¼^/#'(¢ê"ŠW¹j è)—Úeô(Põ2zÄ–2æÇ‘*: DÂ(KS¯@àù8]”IÓ>]…&‚&Ù¢sæ|\¤K6•e¶Ù¦™ª¹6ù3}g ãè7âR¶H C€ÚŸýM…Ôêr޶KEG×fmtº~˜#ê ÓP {̺ض" 38ž×~ªše"þ²N[’Ò91¦1«eìÇ$b·¥ˆ6ÃMšø¼šŠ~5tµ|Ç‹°MßVýNà“†ñ·Z©d~šHñ¹æ@y©¾©6éÑ)aYšê™£s#zG'63‹ë@Ó>“üEÇØUó%{gž‡5M³¸í…×à #=óåNçü<Ó0ÛlsÊe„ZÞ,®>VŽ~‰è×h¬bª‚=eDφAÛof™op~Ùþ²0ñ—Äô»2ðÒ |I؆!¥6àc>}º}Ú 5NÛÐ-!pb¶±2B¡-w¶ü2V¡*ð,DKRn¥M-/&¶wvJ„ËeÉÒm©,ÚjJIvÝj¦búë×ä^N‹*À˜ÌQA-fó0Î’-R>ªšÿr ÿ¥,6ŒOØ:ç]šä/P…Óì82΂H,#úxY„]–±ê¢UÙ6­ªìkʶÀëR_ò‹[ßbÍÖéú žñ H²e‰N©ô[Ùïꀂ[·»ýèvbgé"f+¯Ð3¢›eíßMI¥M-&¶ÁåÒ\¶¯MaÉüx™Þ¯–Ùý5Ck¶ÄìÐd~š‡Ù¼J§hºfÊ0«chø\@b&5äRÅ#ò` IDATät²¬MdaU¾ œ_¤–ÅhýzÑS¥a_WlOtn´Í¥çjÄœªªc×â´Äü>8/YßqÐ)N‘Xè[o¶¾ÑüMh6µL˜ž8¯‹zÄM?_w<&`0ßî‚\.‹pyqÓmr¹^hó#2wDÁc’-æU:¨¦9S4=ƒ˜™iz§±>S€'i£}Òx§`Ná²Ú¾dcHÀ®¢,÷J–À`¿¬µ€~òm§ æ×‰-`ÖS!+1í S[€Zº,¢¸m‰¢¿Sí¬ê¤ð üÕîëtN1o7ßÊåzWVœ&¯%Ð8¯¾Ô-ÁnK`  56¤ú-QÐsÁ¥ *²¼0ê÷ß_ú»,Æ—7Ó¯j",™Ï«=œ[íoPDM-ݬCt&còÇ%˜ŠéÒšRX•)LdŽuR"óˆÕ™ÌO׫Ò‰IF9=@«‰êªú©Ö'ΜN¬œ%y5WΆÊi&§*ª<´Àû:ïeàÍhÊÞÂËåQ„³È*ºËÎç´é,ûÍ`Ö•·1ä(Úòâ .K©ÀÓ·,6”X)\ˆ ÝÚ=æG!7f~ÌÌ^)ÄW¾ò•Ç\5&Xú¯f~, É™|2•!ü—mÒ)Z˜O´6æ|ô—#%ºwïjòGé:ÇyÈ €@ yxË[ÞrÙe—È_kçßv¾7ÙO¬‹˜“*B„„þõñÇ?54Ô<èÀS €@4ÃÃÃÄü%S_Fæ.¥3G—hÓ\AŸ£´‡šêxÅ€@ ÐH¨i"~é£ét2Ñ"wÊrë\ŒŸk¤Û _€@ @$;YHË™ú›&¾§fuà@ €h<’©}ž¼bº— ‘~jª ý3§h4žÛð €Mˆ@’fxÙ#¦×’\ÑÒ’l¥_¢˜6Û„m. €ŽÅüR-É–d‚xÑ>±"!V(ÚG ìá@ €h$h†Çc’ù%Äùˆíч’ø¤‘ü„/@ €ÔÛ{}kB²½cÕg¥Çøüè €@4²·—ƒ|Ìùè/}ók¤{ _€@ ÀÈõü4ó lŒ€@  Éü(ÂGœ:yéàY½LÉOø€@ e~r?õ¡CŸ ø<öÄ“/>œNcß»ø˜Õ«$ítsìÊ•¼åÍõê@>»Ñ˜ó!„| P+4üë¨V€n ;$ó£‡úôêÍØÇ£Ð[ü/³ß9ᕯì|ëï¿âøã - ùºCà×/¼°{ÏÝôw¬;¿îŒÏk0s^ˆ j‚^GøQW;7®KJ¤û’ù™Ñ¾RLiæ²Kéô›ÏyÓqÇûÒK/53MâûñÇG·ûÿòí†ô¹!o+œjT⿎ð£®aÚ@AtßöZ2?¥#ÉdŽ?þ8 ‡¦ÛM7½.¬-ÔH4æBƒ<XF⿎ð£noSy«ŽO÷õRO/ €@ ÁàuÄÜÏ&p/>Ýw‚æç„‰@ €h@Àüð¦Â% €@8(ó›ògy¹4‰ÑI^á¢*ª<ת§wÜxã;ž6)eôÑŸç&²@Ž|Ñ^¢`m!  ³ùÅoŠúÑX>¯Ð˜—{Ô €¨e`~ôåÔÓÓÓ§Žø_iÚ]ü„N =ô·Œnšö”]y¤«Vøûp.÷óG¿qàÝ¿ÑÓ ¯Î=÷À7r¨a¤vdÖühžŽ°v ˆüd… W 4æj!z€@M pðñ/nóŽ/>~°P“§eY*(ÕQ>^}%)W&N/jRnWÌàxnUGªTæÇ¼¾™©£8v¥‹“Ϥ¤¼ž›ßšeWaêÙïzw(—ûùÜ÷V½ë¢S½Òt%ξøâ³Å÷æÌ¨`„ndÕütÑq8œ)c>Ëè3ó2‚ª@Uôgâ¹ 6yÇz±$HÑæ,NuïêË6múÀy'tÞäÑòåcó™Y©ÊO9åùÇrYíâwfŸ+Èšú.•ù‘çüå¤!ÐìŠ;ª1 ãt–ç܉‰ > 4تX›ù·PåÚlm€³–bnð«/zת¯ÿƒ+Ž'‰_‡ðŠøuœzj¨_10W®ÌC®£¼Õ9[8?Üõ£ÁÜlÞvã×2l¤S¸Hûј‹Å€@yp½*ê-ß5{òe›ºÛüÔ“Î;OŸÇ­ï”SÊÉöâÖZ¨ÜÉ'‹½‹F@sqßÞÕ«Wª¥>å+µž}ëèø}{Ñ9ã£Ó9‘Ò)…:Â4zÌ#Å5¹4Y¦>×Âc*³M ðÚ‚îò7¼îÆx´c@‡÷Tñ§ùúªŽOùšñûcÿ#ê÷s?¿(W¸  !\N.¹äzÛš)¥œÝbéÑ?/t>Pd˜ùpÑ%+7…јË{û  T *¼Ž¤/÷>·ú'Õ£Xà„£ž¢†{ì”u'ÏÎSÖõ}༃ÓÛ¾J{'¶íõ.;…’‰úÅOYGöªDUœsY•Ÿ(V‹½{%ÿ¬Ž´Ë*½+R>ë]•{‚nÛ‚lô”ó/ßY§#jÙâ²4ÑÄ(;ž{þ”¾MÝŠ¨uKÝL1?ÿ¹Êu't\Û,‚ÕvÖê¯î[ìn“N-î«×Ÿ$two[NÕmªÏ:è,•³ÄœžRâÞÕ}›>@J§©»ºí<©-ëfÉËa~掕ÛÀ&y¥{Æ:1"ÔÚ¶Ù)…©}ãÅïþÆ;ž~¿_JÎæàŸJ¡øßâο®µÎ=½á ~…\Ii~ÛMûÈ43¤hN¥·XÒoê ;g„И+ÙR TÒ_GùM|î9âkÁøØÁƒÏ ?xÒy¬žÝç ²î|E¨ˆD‰Ç:Jª ©ø)ëÖ+AUÚ‹«…sÊê6¿þlHí”P²X‚mmç¯{l—$b¿3{ò›NÆFGÕ.gbNO¥…ÏÉP%;¼ú,õ¿áfåJ¦¼yÇ©D‚6땇d~Dòô‡/)3¯N cØ}OñŠÆ’¢¯F[ΙÈbñ#…¶Z;…¿˜íôBRN½èß=zçß«ÞMÅÔÜŽn‡xzî©Uï¾.ÛüóGGïõ+ÞjÈ–BûؾÊUÞs8Èõ‚@鯣(OOj[}ʬ‹’«J…¿*h®H› 3îªH•䝨ESXöRO¯ŒYuL1iºßCî¹Qج™²û.gxí#žwDˆ£þ‡.c2?*ÎÃéè{E08‘¡N,Ôn&”ï*g¢©Y èD;¥PÛ苹Pãƒò’û­âÄܹŠøÑäŽlêð]õÔœ¹`P® »}Ú)ì¯N/…À¡17Rã/@ ÈÜÞ¯ ž|üqb)'DÓ!ö1]¡q{WŸeuFCÅŸ›ýŽ*.K{¢'rŠ 0ÒA³+ìòŸ{Ž»žåèC;ÛO)É6ò÷äٯΊl˜Q©Yµ-æôTY˜HløCaCž°lŸ„{]ZŽŒù-)òw„¶ŸW‘@â|+ŒÐ×’þRÑá ;‘R´N}îL$1³¸YŠ+rw–Òz vša&ÆGCˆ7nøTN‡í© |ê"RðôŽï}ñ@VSPN)YHM­qœM(¬)²/ÎhÛü”9-KjX´ŒÓ’è)s Ð ê¹ÖwÊ'¶mcäÄ :këî[ç'ʤ‚ˆŸ,~Ùêm_ÝFôŽfxÐü ¥[²LNÎIµ²/vBö‘ž²zµ××+Gæ}ÕŸááC\šmTË)dJnÿ¶£j× uˆ9=e ýî^5=eYî󥪩TêÞíÛÇî½÷Žó%Äü~#“¹qóMùñ¡e1.P)9h¤TDY-ùð·fÿ°ûÿ|饗jÁØPŽ=öØšþçw¾}]êªrhÌUÕˆù:ª‰G[Nñ Y!ÙucJô½v‹WØÓ˜7}xxø–[nÑœà¢Ñ~2æw4#–2â¥t"³$‡¦Óbe«8J½¿ËwÛÓ•«X>ëQ3@ `! —K>e]p‰%Ö µì©êí=*?/¿,–Ò‚hõúþFb™™ŸîðâÛ_ã¿h£p €@eá/ƒ êì,뾕±¸X­õáiëºÎuïýàÕDø^>LÌc~éôŠÄ‘Áe=ê‹íQøô…^<î¸c>¼¬°¡òj °råJºÝz†|5ª¬bhÌUUR¨‡×‘ÜjM®a×øG}xÚ:›šþìߥÓé£GUO¯"™LK:voãß̼¶´´<¹çû¿wîÙDþò C ÞxñÅ—èvÓM¯wGœö£1;aA"¨M⿎ð£®6ï`V•H÷Õz~ò ~^IúäeV4}‘wt¾õ›³ßyè›ßb ›€^ ÉdòÖß~¢17äm…SŠ@ü×~Ô5LˆO÷.ËÞÞž?ù-ç’T Šú%2Ù’Ïp¢P–ÄFåeJê 4æúº_°ÄA?êâ T2ñé¾ÓÖÙ¹}çaÒÒºBmë‘IRà/Ù"µ'ˉ@4<øQ×ð·8ŽƒÉuþ¦UòÇnÑX?tö6Òm†/@ € <æGñ¾Vµ¤‹<rZ/fö¢} €@ ÁÌúuéC¼Oõ÷Ê¿ôAgoƒÝi¸€@Éü˜êeƒ|j=?f €@ a@h¯an%@ €@JšÈq×=Ûó¨G6ð¸öš«¢Á˜ššŠ@.@ `"ÐÓÓS( ó+z·Ù›n(´JÈ7!·Þ6Çë"Zpµ@ Ðx1ÉÆüˆüat_ã5‹¦òè;Nh*á,( o8t xvÊ‚%”âØ´iS¡…Ï=÷ÜB‹|No/È_¢@ JGàöÛo¯äcûXLaî×Õѽà8?¿˜8B  €åEà…^ˆ£ðøã#fÊhþ—ÛKIœÊ Õy €@G ¸ªK ¿ÅÑur=Ay¬]¬-üf6ú¦UÏ8‰GÍQ[·%ÒšK/ÿvI¨Äýâ£'s½Ä“ăv®31¨ ÿµ]/¥ü›ÿyð-ù5”.aÛP˜Î2AQX¥@44†Ëû· ‚Ìt-gÌO²œöù;Ëb×L)ÞU¢lçÈ‚4oaD öUŽ˜ÅôÙ^ÛÀlfv ­¾4Γğ½J|ëUz—ßùƒâ½ãâ3¥`–$‰ù5(1ñ€øýqùùáÚ(¶Z ÖЉWŠŠ Å@šF /çcR|2?=°¥Å–]íì˜ÎŒuù Úôy±J+T®m`sjrWÅ$+älýª]ýz!~(Æ~(.¢“ú9®{@üèLqiý K@ ,,ó+‹ÝaJ¾ùÍo~úÓŸË‹»&Sý=Nªgôoô¢€**6ãõ S¢ñceyD¶L"‘£vÔëÔ×É*+Ú¸‘º¨•Ž|¦fuf%¹r­‡èw÷¸H ¶³J#þ,¼ŶY3Þý;âш½?âwÄj ‚ꦤ®ÕœNUW"‡úèïÛ…è»Ü‹Ãeã~Ru§Ï,eî[¼~[­_ö8sOnx¿sÎ-:(ý…¸˜uµ0”U¼ÞrÁ)fY"\nêD22[…]Vˆ^á9Âþ:¡` Éfm€ð PéxGaJs¥ƒ1¿Ò£ˆaÖ<òÈ#ùÈG>ÿùχ ÈôÎ5íŽì™í2ȬsÝš;¥·Š JîïNô©S:O û]ÄÑájç{,UA³G·Žwö®÷:aSsk¨v V†ëdS³Ä$9Ù«:Ž3Ób«×oÌz”Bu+gãŸd€UdfØÇ%W0hl³^Ÿ$.âëÔ]KDJˆwûãùî¼\üðaÙ©z£”Žg"g]7.¾%„ìŠ}(I]ä÷¿óÎl‡rß«T§íÃâ·ÖzDjçC^7î·Î,¸ß™jy”{æÿë{³¸‘ªx@ˆµžB·˜e‰Ó͘e‰Ì]ôCÏ‘ëˆLGPÃëEß/Ý’9Åp€¹hâw²ëй¥À–3·—U¢Ã—hßµ×^û¦7½)­©ù[bqßœðcª“Õê™Pãߺzˆ'y,LžÏíó:a#"Ô©ÀcŽ*m– Å%’‹fGßùµGèdSµýRÒSE>ߥ,—´av‘ö5ãY"ì(ÒÜIÜÕ»WðõоßSg'‰ßù…SÄeï’Ò…&rVØ_Ò#Ä#L€ŠÏÿ§8óDOtâ»êäRù™L7_ï…Ê4Ñ Ój¦ÿç/”µn¤á;Åo½Ê¯âa!ýÒõ†‰, óÝY…Uö¢ÅçŸpn×þ Ù[]y*.ƒ€¨W~é ABD):·÷‚ëù•¢+¬¬¦}y8eÛúÞÎÁ©™±.g‡o˜öj§S(®”ù’¾ o“½~sL#…ôb¸(Ò5›P=¾©@F U/²q­ø-!þmmÖSêˆÜY}¿©ƒõb˸¬šÂf±ŠVÍ¢h¥"Ž\ÖYðLŸ F‹9Ëš‰Uä-Ë 49fµê/þÖÃ" Œ©b@&D`iiI{ýïÿþïoxÃø’ÎͬR öö–¢ËY6.í“…e@Œúmý!wrÌÜ(Ñ¡¶³:Äøó"ÙÉ2ÐY}Db%Ô†êô'ƒè±ŒJÒïä°ÒÈ )BsF:uœ3ž®&z½xû/ÄŸ¨©²ü™à‘sÅOÕ:¢&^Ι Ù¡xv¦ÿ³K(~ëBþvS|.ÎÁ}²’¤ªZt'¯.ëMXQ eÜ1D,X—ÓÍØeiè¡m‰¬"D…Tÿd·økÑœ U¸@À0¿ùùyÊ¡¿ôR îÞVŠ.gÙ'žxâÈ‘#O>ù$ç^uÕUN1/±k,³°fu§òµŒ¯ÑY×ØÂˆŸ(“ʬ„Ú0ó}™#g(8Ç}ÉÊ©öÄ rU†ìL`¨§¹»›2sÒY¹Q¤gJNñÊcÝ@qéëÄ~¨ºDýƒ:|¿ô:Ù {Ýòç”>?Úí÷ö w¢.ûÈŠ-—‹¾ÿÌêG3p¤iï”R4 04šø1ñfñ¥~!~!¾E¸áM"éS¹¤W“¡s¯Ž\úüðU2œFEÔ¸^§˜]•Ûwv$· »ìgîgR§³ Dò‚µÿ‡ IR,@ÄD€^@rnnÎNŒ©Í)–H¥RÛ·oÿìg?kêM&“[¶lr–щwݳý¦¢e+gf$¶®)©¸îQ¼õ¶Ñk¯¹*Ú©©©ž¯#÷¹Ï5Ž3ð4 EÿlËÙÃs;š¦ÁÀQ €@ îÞÆÝ¾u‰„Ú¿Ö;Ö.VÐZ™¹²TÐv¨@ š ó«W(ˆöµOö.ÐHEyLwÌËmRq4/þStúY`ì Í„ˆÑW¸‡­÷EGß¾8êbö4@²÷ 1iÜDçoO2³02×­¿ùRþÏçø Éኈúe¡ ÔÒ>&›´ ºpgo!?EHÖ+«±ïijp« ß=‚ìó{®5ÎßBÙ\_…Õ̰n!¶ØÖ!¥Ò¨7ÞTOäØ‚ì¯©}Ù;.›Äÿ±Aoëž)ª ô¯Ò7ú@. ÁüÚÎê`縻rp”w„öRP±p1zÁu ¥„zã ©Ö fï³ý¶ÍÞ¯i´ó7€?l@Šú?D§÷3Àý#Á@?¦~^@¹0tTì:²©¯â?Eüñ‘NÜøim/Ú×tŽgÙtaÀ@º:0Ÿ›’½"¹ïKÿ'´GÓÂ~M‘•ýØP¿b@ÿªssQ ðhæ'º†(6Ñnýr”Œ0Fm´ØÂ|Š»’åhB4 ö#"Z)ýõØ>˜Qƒö\0ÊÖq–h«…xa5ŠHú< 0 × Ÿ}ˆò!­™kÙˆõ/¢«ô8?ECMå ½¿;Åx·õ/J  Æ`~B~§L‹noðQ÷œ7¥SŽš'J˜;&ÉÆ$RŒY%©è›ï@ÌϯöSˆÙû#:iêmT—½ú àM²¢Ö´¡ˆ 3SãÙAð!.ˆúqE}­FÔB¹ŽŸ"LóÓdFîHÊ›¡âœ;å0ÀUeˆô¨Rð\ ³ÀQs¨\5É9ÇûÔØ‚¨N™šC zF A˜Ÿ¼þè'z…dǧ¨0ƒwx³5t&ðÏ£Äü¼Ù±±Y=Î*rL=7ˆF±]¦ä¬9J­klº\ý,è½Fo¯í«ü 0Ç? äÜ û«(ôG‚$~Ù‘¡¤Ùœ¯aW¤St”pëšýÕZ‹jç*ÀóSDvʲƒ‰)a9HZU-ÁŠ®Ú^—¼³c^Fær|¤‚烖þÄÒº¹º‹í8íCbüÆ£.ØðñM9Ö³Ôs€è!e·×iÈ­@2¨ ‰T*µ}ûö»ï¾{iiIW‘L&·lÙ244]é]÷l¿é†häBàÖÛF¯½æªh(¦¦¦zzz¢e¢sO8á„hÙUÚ>¿Ñ…<0!»‰ ­?óíÛË“6ƒù5˽ob?å¸% Jhâ×@@dh†n+@ €@$ˆùEƒ̺BàСCue/Œ@ PmÀüª8ê«ùçöV®nh@ P ··îl@ €@9haeë IDAT æ§—eH—…âDÅíeoåÑDÄÒ¦…Vy €@TÆ`~e‡­³sn+mþ`jCK@ €¨gÀüÜw¯£Cx[—r>mÎÕßoí‹å.‹Ô@€÷­n”V‹ÕÜ(­0@¤íþÆY¬“®ÌÄPuY Ȉð½·Ty­9T[ #:”nåf ¶²âÖ¨äb9^Fˆ@ž[PøýÍ£°ˆÆY G žÃÂ|Œ¼‰e~Wf¤+€Çüh—ìG­øâ­úR‰:«§Óÿú×_ÅÁÙÜ7n¤nÜàWõš¡ÍƒÃ3ž©‹£[çF†²‹ñƒûP«9›©k šR=Tš¢&ZÃoº_tŽLTkÝfºŸÝbšWÌ\X³Ïo:Å€-×äLg6vÓÚÓò*›­’öÖb#¦;h³Þ`»Öe ÍÑú¹‘_Z>®ÁŽ r’Ê¥'_=ÈE ì·ÀláŽ_(¥4ÎP'*™ï‰(¯…Ý”R,,åv”Royñjvmz%?B2?ÚÎxý•ŸL†¶ïå˺‡Šzh;¼ïbµíüÌÆöÉ^þ^œ~onjnÍmMäí:”õ™ö¹ŸâïïÅ]“¢w}›‘G›ÉcºœÕÐ×¾V­uiÍT¯oÈÂÈ\·ŠÅm«{°›Ý…ùTço_¸¶«=‹VZ¨‚®±…‘N¿ » ­Ù¥ i ‡ÀÌÆ÷ãiÔî kKrT»ÚaDÛ³›;Ë‘w~}y_&y Ëyí8W*l#c¾"¨ ýb´µåØé|T!—aO+u®uŠñnôü†àV™dÅüŽˆ£GÅ‹/Š_/NÐçè’L¬£CŽi~GîÜÈÿ\õãø4ÊNuÅšRö¤—»²QZݸ”ÈuõÍwx1?úÊWêÕa5aY/±yÈàŽ7æ…}Û\µ#­È6n˜pŒ¯“/Tÿȧ¡\^Ë/ü–Gx¥e‰aǵÙÄÁ/S€¹^ pö¸r*“ÛM·¨-ÞälÙj§øí0Û«²®$?8å52\[~¸Âmu<­aæ(mHˆ9\rŠF€òäºÎuDû–ŽŠ—ˆö½(¿(^~Q¤‰ùÕUÐÏëÙU=FÙ¾1?ŽŸí¸PÏ;dK# =–EÃh&RÝ"uº¯evllVT–«9[¯/oÛVômDÁhTD˜» h’¶ÑÛk Îz¢aã™QŒŸ$\þˆè”·6ú.ÇzڢƖyÌYyîlR­×®ÔTkǰå(T,­gdÛPpŠ…C\„xAÏ–ÔwBZáðÛŠ:ᬑrñu…ܬø ’yOG™@’Õß(RŠ…Ykf­Ê62æ+… Ú/F[›i‰®ÂÞÆÓJ´9ŸýœÿFB¢D’³©Û—––ÒKé—§_~9ýò‘ôá#é¥%" ±®K‰ð x½" œÊérÎE× `S1×>ѹ(£+:›ƒ@xظë¬y/æ+'rû/³ÎŽy9Ì4!Óø'„­^†cûDËû]l‰­kôP-»RC­3†½ÙC,1%,ÄÔdr6ÜÖUÛ”ÁÆ!ÚÛkJ±¼õ¥XÎ_ÅñUY7Ë]4¬-9¥ó>žÎRf¢Õß”/Å‹‚¬µ Ëq%Z•m¤ýŠpâì|1ÚÚ SpÉ,üvÍó®>­d$8_Þ[)DB$.»òOÇï½çGúŠ¢Šâµ'®ø‹›þçyCtµwݳý¦¢e [o½ö𫢡˜ššêéÉ.š-ìÌ=ᄜéÙD9ôy~sØàõ<… ͦWÑ/¼Ý Å òUEàꫯþÜç>WÕ*—§²š}‹3ŒJÑLt’.Ocª‘Zéá½ð £¿7‡‡‡·lÙB>msKK Åüf‰íÉ:è?ùQ—5âÌåB@`¯ÄÒTå²z€q ax•Å 2.ä d²%Ñ’L®hmYÑÒÒÚ’liÉD2‰Ý\€!­þàqÄò‡Ü1¸ú»ƒ°~ŸuÏUoƒ"`ßp´Ò ?úàÕÉdbå1Ê9ékI ¢8€@C G¬/Ç )U¶­<âFÀ °ŒÔìóX aËõ>[Æ[‡ªË€ìím]!Z[űǫÏqòC—ôÁ€@ ÐHH~×Ú"#|Çnµ&e" P_:t¨¾ †µ@ ªŒ€b~Ô½+ÄJ£fºDȯÊwÕ•Ž@þ¹½¥× @ ê5ÃC1?æÇŸ~J½øE³Ûs–¥ëìJcÙÑýö"c:è¯G¤&Agk”5”°äiL#ªSKLc €@Ô'’ùí£ÿˆðчB}Ìüêhf¯\¤r~AãO³Ý½=%[’«·yÇ„Ø5Sâ]êY`ejé]æ—r¼mqóEƒ”5ʸâk‰ÒŠ< €@ Pa+yH‚ÇëùÑÿˆrJÝ!·‚žòI&~‹£}´q‚±ÒeÛÀ@Ù¦ZÊ…ÎJë* €@4!zóÚ: í…ß&µM¡Gý²ÄÏß)Õ]ŽâÁͧ”`Xº¥%[©ÝÉ“×yÛZeû™uEf «íÅô.XF¿´_ÀThƒšƒ×–­Í™ zç­›¬ÀŠÙ;”ÎeÌ• þ‘§V–%!ib¸¬3×™÷¶[FfµÅñ1n5@Z@ !˜ŸÚÄ~nß"šíꥋeXâ<5·f"#ãŒ3Û'{¹kxZl¥Íc%§ÔI$Ak8M÷ Õ},7à!y¡”ÇÂÈ\·þâ× uk±4ÓÆ^Ilåx¦:;çöÙCîâQÝÏ5BÀaÁÌF¹ÌtFˆîÙÏæ´,ºˆ£º Pþ05p¡Tmùëƒ@, 2…—¨ŸèÛµ8°~ß\çš!L5ú¯-­$`þ—bœ2éëVR¯°ô¨;cSËÎÞõªÂÅ}s"5Þžäâý=”2™êß<4ÇS/åû7sg´Ü{pÊ3ÝW¨Í°5¯§ÎîîuØ Öu§::Ä$µ b3|È_ýýãs.ÙJ§©m×Û§fˆõ»«²›“[©@ ¼ÐîŸåUm@Ô2 ÂüdԨߌ˜½ü-/ã€ƒŽ¯Yot"zÃgÍÛ]‡¥‡Ý½EêMîØBäT!Rz ÷…i*<=W³è¢-*d]"È(\s£•X3´Y´Ï ð^ÝJ[mž×ÌÏ ûYèüÄΑ‘Š®mõ©µyîÕÕyÌ6™S¤gJvý Ñž˜Y˜Xð«Sut ÊL ª™DlÀæùv¯È ¬Sd-t8åÔq¯Kð1B+²jÏ}îs´&VDªÉ›£€@&&&òH¸²£·—<“Ôo°{Px17™B¡³ñîœ^FKÛ«!äÎYƒ8Àm;«CŒçt4ªq®Çl!%ï U$~âÏNvÜ2[³"âJsN¸ËÛQªy“hæ·vý0à˜¬ÂÃÙÞMœ“’på?¬þ÷‚‹´ë®k–xjp¾GŽ˜îO í70Z@WétŠrÃôpA5ÞTÖÀH(ÂÇü(@ ª@Ã0?5ÖOäöÒ—£3ç°ïë³ÝlÄ”œ¼-,oþ‚¤Pô :Ùµ'r¾NI³Z &ûý*—£ñgx¨®@6UŽtÚÆ6Xš)@£(¸YwkV¿)Õj]C#<ØOއ4R=ì=Ùv58€;G†T¢üéÇ)ÕÿîÝØîqs!WiÕ¥[@ßj,"±w:%íˆÖ£#†´ê v94 €¨¥·—õºks¡u&‰>IêU³½ßvîÆÛŽªƒr®Ýòš«ʃ’]n»lK›3E ž^×ý+*‘¼º=B@N: )[8ºî8uÄóÑY‰@ P34N̯f …!µ†ï:rG( =ì”è÷ªÊ^wÏZ1ÒåÑ‘€!ýï Æ¸E,yœNå-•W rç­@ PV²ÌÏïõþ/k-P–êñíì·ºÂ=ì]cÓrx(}¢×ïíõÆŒÊÔ)au[ýï9¾:GD‰‰•9Z@q:Sa„XY ŽÐ, €¨‰T*µ}ûö»ï¾;Në:“ÉäÍ7ß<4¤×Gq[s×=ÛoºaÀ‡T ` pëm£×^sU4$SSS===Ñ2ѹ˜Ÿr€Ìíu‚D PûÐÜÞèïÍááá-[¶,--i_ZZZÐÛ[ûw €@ <€ù•Gh@ €@í#e~´dXí› @ ŠF g†GÑZP €@ öëùÑÌ ÷Ñß„úàuŠ T¯SËa6X^ðì,/þ¨TÉüˆöч&~p°nùŸ±_©¿Å©%ír1ÕãïN.VMàQWÀÜÞ € •æö6þ=†‡@À@@’=Šöч˜ßQõ—w©³ADçíó›å§ò˜»²{"Њ¼sÞ†\Qbh@ €hp²Ìió?îÿ]v×i­Á_ÿú×1ÌXíì˜6¶mÐ۞іYÞv­‘b1ª@ êùQ„˜Ÿþð°¿ewì¿þë¿vîÜùüóÏç±Dn‡Úߣ©^®´$~œ)&Å7º6O KÏc²@ Pk$¿ücozѾ#>ùãþßZ°õâ‹/þÇüÇýû÷ç1¦sM»[bfxÐ#~2?TÌ]© € òL8)½ô2×.¼´¥[‰;à(îÄÌÖiŠEç:æOŒt<ñN³‰1”A ª‚@ò3ÿmÛFkùiÚÇCý²[¹UÅŽ°JN=õÔ÷¼ç=<ðÀÂÂB˜ŒLOÍ»³g¦ü!~ª´SL}'íƒ)Þ¯ÕÿŠK²y5†€äÙß?·Õ¢w…ÚÙÙTB?*R…j)A¾@FU6ÇK0E@ öH¾á«ß$ڗΈ¥£âè’ìð% X#ãü®“O>yÆ _þò—ñ‹_¸l[ßÛ9>åè©•ß~½ëÛ¼Rabm³rVÈÂHgÿ´š2ÆÇaén#Z‹P¿èê“»‚‘½BÍíèÈU235Þßß_¨–jÉ—Ññj™Œz€@ $ÛÅ‚œÆKäoI~ˆÿ-e¼þßjÔ£ŽƒîØ±ã}ï{߉'ž"Þ6°¹ŸâuÙ>½ÅÑQ"‚Ù¹\.D,D)’ëÅÖ·çÏam^4—zj÷e}t&¬ÚÜ18ìÿ¾à ã=vñœna‡N3tç ãùEr{—I²{\¤Ûýä¬˜Ý MF9¨¶j &(óf8".kÑù9ä ž@n¯¹”Í>.Gë¿uÁ €@]" –ðS úQŸ/2K²ó·FVuyî¹ç|ðÁË/¿¼½=d ÃÞ5F1»¹nÙk+>±¾K¿À¼—˜ß(ÄçûrïdXz]Þïæ2Úã?BäP¿™ír&¸ZügrÜCÄ™@««§ß-kÍVqÕ™ÅѨ‚ŠLö.¨Èó´0º¨©áN÷ Z¦’#ÒYÍFu†*§ãrÈ+µUT;pICU§·Š iŒüeÕ§Né<•eÀ¾Àˆì3ºÔÕ¯,?/ã›üØ{sµAx €¨5’ ¢=gãâ|5BúT?ü0ó;ãŒ3òçuΪoÍYúš™žì²'üÅò+†D"`Ð3Iý<º²¸o®Ó[ÞQÒöÍ™h¹Ý54ƒý$k2© þìr©T'§3§©GöèèwŽJ•òÎê EnÇÛ×tŽ{œTÊ.ÝUwŽL(ÆF¤Wtz'äùÜ>¯óÜÐ^k3²<90Ø6Çc\ €@¥ ZdV‘ü÷Ëþ ¡víH&$Ôß9~û·ûÒK/¥q~EÙÓ5&ùަE@ÎÀði”œ¿#œcA ‚‡c‡3Ù¥Á *OØl*À8cÐùµ„8®~óLˆ>b•²6p)Õ–Rµd޹‡Ç“sÛæ·@ PvTTL¤9ùÑ÷_À„¯¥E´´Šd‹üÈ”²W[¸ÂÎÎÎW¼â…—C @½™SãªwÔ?h¢~mguø½•DJ¼Þ^g¢E mu vÊÁƒf.×¼R*Uñ?·N µù±<²0P…Ò“²³:­*Ìq%@|€Ð!»ìe̪ƒ˜¤¼©3f´ÖÔT¯²]w®À` €@½˜ §ÑeóÓ’õFûhùÖ5 Æò}Ô×$§X†-ègÉ£•44P½!ü€@ ÚàÙ©6â¨,ÜÇ»|õW¨fô5UØÚV‹ù‰µ}`]"€¹½5zc`¨ Ùá|¼²sejV €@åG Ëüxh_mò¿o~ó›Ÿþô§ A‹úsשýãÕɨ·†-'zÔj¶r++Ú UNFT_Ë‚7R_R9d@ P“ÔÁÞGyä#ùÈç?ÿùbL Î÷ÈŽÓ´°by|×ëÓ¼;êÌF9.PƒœþöY©¹5EožZ¬µ(€@J!à`~5ö#Úwíµ×¾éMo*€Î‘!ÚEUÚþJè KÅd_v›-!·›W[cÑÑ=î﫚»ûW  èr àoOfró™¡CÅù³ùv#l¨Q1e+连"%CÌãèvm´sî—DJBfDîe@Œ€ kɃK™#ÔùÓ´¬*ØÑ<RBtú Eû)üçÖ¤y”!»Fèá8nµ#·s~àØCffxš\>,rÿâš̽_rZ¾œ§6=¿F„@úC Èü؃ 0­‚¡©$í#c:{'f§E·„i;«CŒ¾« ¶€€@G‡˜Üe©f¦Æûûûk ŸÜ(x­Y{€@ ¸™_%j*TçO§k†6wd•ªýk‡z´d¶_Ó‹¸)ìyH–˜Y/Iûnžg ñQ=¢!¨$xmLÒ“žÌ®d}.OŒ©Qzò†Mý>x–>'þH@îÑ­]æ÷‰O|b¯qÜxã¶~Jטî¨Ípÿ¥p?‘>!Y;Qö'y‚êÔèí5 †×ŒœšF@ÿÐ$#5¸Uдšî3ÞèS§¹S|ùK Ï›œýCó;Ôà€ 19îF€âiãS<Ÿhqפè]ß–•óÛ+¡ÍŽyH–˜³^{r’SÌ´Ò‡eªÇïMµ”Pï4{èu”gufFæüX¹Ûu¡§FMÓØeÔ «¢Ùßo!¬0ºxˆ9H@Úe~¸M@ dô¸1=r³sd‚Fñt?Þ•Óéé ´ lîWAíÙ?”âÏ’R!Vv ð`?I¢6«JõáEóº Ö蚇sÖ[Œy –…‘NŸš:|l_Ó9nð;YKš(EÃï+šè;_¸þ݃@ PÀüª2ªeA@N¸Å芲@ %@¦E g†‡¿-æ‚#»+@!€ƒ‘kO‚bô  @ ŠAÀók"òçï20«VÚÙ¸‘ÖîÍYt·TQfy êËS1juŽž:¿0€€›ù  ¾EGûä&UzÀTרX};ÔÜÖc~bsßx_$˜Û[$p(êàz~õéE±VëÕzmÁáUGíèFî _§ös•‡KLoW﯉Vþml{‘€@¼47ó#xü¥1| Ǥι1|jp¾Gît2Ýïïàà›[3ÁÛÜwñÆ(´ìïVÍóÞ €@ B4=óówŸRû”N{û¸7†ïô¶_íêérG+Ç>÷ò.ùÛÕÓ©ôëvllU¡û µ@ €G ¹™ŸÜTq8Çscøp1Š"v‹iõ£½O ©Âd;Û©>ÛA_ÆZËк·-™ã Ú-ä`ÁŠ@R#’@ VhnæÇû–¶[_š17†[˜÷vY£ kõþ7¸áþ} IDAT]# Üáž™-û²ÇYfOÜ~;âUA}å>ÂV3öêÙØ=. ”‚ :Õ@ P!rvokÂÅüd'ï´àè‰î¹‘ Åbn )Ö54"Ôfõ}óˆùU¨ý.£ZÍìɆ¶®e4…¬?Ám6zsã‚T €@"Ðä1?uÇý‰ʆEÔ¸?ï£ouÒ™Æy”˜Ÿ7;66ËeM%MØØjÀecÕn?D&{Qõtl{¶¶5}Û÷‚ÈVj°/;sGªÎ†Ý¼¾Yõß åȃruý9]¯ ž€kθ¡3¿™©q=¾4g¾9@ÃLSôÄS9ÝrVÙoOi·ä¬„`5¶#  ª‰˜_5ÑF]UF@2>'£¹ØrùF{9×­‰VÊŸŽM|¥}²×ë!–„_ñ¦Eî mâñ ½“²¥¼m`sÿø”×éKL¬3w0§· šìMӇƻ}êÔ˜N}Š3“ ³ÓFÏwpªÇÿa0¸}LÎ[’ÂêLJÓí¾;ךÒ¥™a茂@Ô æGßdµbì%!ç'ù‡œ²ÝßÃDDò4^·žŽ­Öwô×ëžå­mRaÝ…‘¹nEþ( èQ¿™©9o"8ÍõöGP‡¬—Ëéœõ´I¡vÚX(i‘¦œÑ»s}«Br­)í1Pj_Ó9žeÖ¶ÝH@åBÀÁü–ËÔ jðéÛlnÛÀ„G½hhçÅG·Îõ®/|@ɼŠ9¤²^¿l´Á¥äFX—«VQâ ÑçD# "  ªŠ@–ùQTUkFe@ Ê¨¹Ø^,±³q?þ§Íh[ßÛ™»èvÄôí™QŸkÉP!Ï¡ brxxRBüR“»iÓ;ÊäµÓÂÂ…ÜSa0•*%·p”ˆþQ82lÙ$Ë $ €@5ÈîÛ˼Äÿ¾·÷W¿úíSùÒK/Uàc=–6}å+_Y!ýP[,r.ö:˜'ËS?é¬5¸Êô|¢=1(%(Š5ÖÅE¼Nòjï:k^?*$ʃú$KÈe ˆøuvÌSlL.üCj”IyíôL0þ£pãÖö¾Ñõ³ÊGÓ`SØv'~®–ŒRÏ”œX"ò©,lÇ€åE ‘J¥¶oß~÷ÝwsÌÿ&“É›o¾yhh(º²»îÙ~Ó Ñ2µ–{ðàÁ^xᤓN:昕²íå—S-Ç<ÕR¡*êNí­·^{ÍUÑfOMMõôôDËDçᎨB.͆¥é˜ÖP¨QE¹ _µðì”Ëè̓ÀÄÄDô÷æðð0ѹ#GŽhLV¬X‘ù5 R‡~ùË3ÎøM‘H¤ÓKr¹µuÅ«O}õþý?󫵫Vñ™«]a@49Á¼Fƒrti)Ù’Ì9ª±bŸ UA50ŒpÍB@­`GKÀðZàV6€@ÔAæW 6UÚIøÒiú|æ+]¹òØwܵ¨.Ëù©´Ð_sðÂÝØ"­æn @¦d~™LZ}>üÈÔŸ‰óÿús~¦ŸÂé…ÿýç??î¢Ï,zj©8&Jã1@ joœuò6Y!WÓiu3询y|Uüý±ô`‰œâÁ,¾$ T/¾0J&FÏNß|¸Þà¨`”\¶O/G‘³ªK“?€èßjÙó+©ßCÿÇm«?ýÆ>ñw”~Þ§÷|ãïB%>øG¾÷÷<,óY`Ï {Ïy¯,vöo|âOüÕ]—Щ§½Á›S͹‡ù‰5wK`P= €¹½õp—`#(MÙÛkéóÇüeÄã7üëé xè«ÿ͝³ %Þ–£ÄÝŸŸ¸ú³‹j, .â¿s„ʈó>µûС‘wêÁ‚e»EP€@2!Ãü~b¯ƒŸ^ŒÓ „ž÷©kß%Oßµþ*1¿ðyJ‘¾OÝ{ ÌœyÍÐUï]äD'T‡T˜{’M/Ó‚ €@”ˆ€æ'Ž˜_Ãó¿4-åçÀ£ ]èóÜL\Ü÷4‰Æ‘”ª©ŠïŠ €@ ì8˜_Ùë¨5…D{‰™©C­ê'yš> $>1õ5Zò%^üÚÔ캘Î~§ý-OìUié‡vM8ŠË/Xkž7—=´›FöXço²ë€$#ó]e„(®T@WL%¶X˜wZÒ.âv©@ ÐT4)óã˜ç½]W~A<±ùÏïýEüäòÎ^×­w.Äïÿî¾??•Ž·nþÝ/ß~±Ì=³ÿº~áJ™vê´ø Wêâ®>±ù­§žzý7<þ ’¦jLµç,mÎË7dºc°=±q¦ö,,Å¢Æö®dP BhºÝÛ âjn†¸zçO¯fdÒâ¯\¬fnÐõÅúœ„Ú?¼ëÀ_³¿ÌEà {ˆÊ,™~Ñ_ÿ”ÅX3U 92–®±…‘¹ö©™±®®e¨½ÒU6¶w•FúÍ…@3Æüè«ÎÚü‡ßœ_2 Ñ\¨.¼m[ßÛ9>ÅQ?µÑš:‚aÀlªÌ‘rY‰8ݧYÍÙ‚¹:X¾ØºÑ}Yðl«œbN´Mï‚¶Þ ®@ yh:æ×ÚÚJ,­µµ…bu1>ÔâˆåÈrUE3ÆSëáÉ™ÙH»ër/ð´Øš;þ¯kÌëî§œ¶Íý>[3Sãý›Ú¢<$̓ÓJ…»½±ƒ¹:©|VlBLŽ{ m«œbQÕ»óf†}›2cðt{T €A é˜-öûß¿úÕ1ÇóŠüÇeŸ=ôð`G~¹€)§*°ªpH“[ÆäÎ5íoÛ7'R4êOÝã©ù…ƒ¼]·GȺz|ê73572Íœ¤æþ–‘¤Ñ×ÐIbž*)ÅÕÛV9Å¢ÀSÞÙGûšÎqŸ„Ú¹H@&C éâR'tÝâƒÏ?ti©B÷ºµ¥å„W½Š+ªPP[0‹»&S›)d·HEû§sâ_þÌêí³ë’ݱ}ªŠ®¡‘­}£‹íbë\ïDdÀ/Ä"‡ÎÉ€U‹FGpX ®½³%Ûf3ªÇ7pÛ–E @4<MÇüèŽ'-kø–ë ×s*ãqmguˆÁ­£C]vÏíÂ|Šg’H‰^¥‚FЉ¾ašÑ“Ÿø)ÍÞ,’ÅÑ­Ô9X€Œ@3Æüù~·,rf݇ê5ÓǨƒWV†/äß3 ¹ô;8’ˆæeMð-±bž ®Úe¥³/þI[( ¦38@&A1¿&¹Ñp³X¨G6ïÜŽbu£@*#ÐäÌOõ„×tãÕÖ ÙÎKŽŸ÷å¹s­Ò¹·<»ú™&Õd•ÇYP®Êí§±«Só"¨ßvÂØØŽÃ; €hXšœùÑ}íìœ ¬éF  ¥ »á²ŸnV±ƒ™Ýã4ƒÒ»Ê£%ŒÉé]¹”š¬ò<ê]n$ô1ïe¹«†> €A Èü(ÎT‘zjXiG‡˜Ü%—úð¹bo¿?î¾»C–U+BŠ €@ ¬8fx4ù[3´Y´ó"­Õ5±y~|Žq¦¸œ·ª¯·%l]3Ò18(×ú¥èœŠõ©Ä…ÍóíJ¶=1ÉéÔ[ØÎñC.l^O‹nOx0Ï2k¬œcŠþÍj.k£¨[e‡ª[Ûa8XNðì,'ú¨T ó£Î-2 ÉÈmÔÐí/ökR-Ü6ïß ¥¤_þp©ÁùÍrn¦d…š2R’’ú=¿j—°YÅ iÄ^×Yj­Y#ˆaó¶ËÕ:UB'ôvúÊjÆ84öM1›Î@LˆöáÙ‰‰Ä€@ ìím—ŠpÖ\ãÁ~rÓÀ¢gDïäáoç%µû{ocs´8®û°÷㊻VvœŸ{£U[³Û¤ €M€ËË2?;¯‰ ’5Lîš±Öïð·ÞÊdFôÒ¾à"'{x‘85a`BôÔÖ|â”*Ñ\Í…–†<@ ШVvb~|ÛåF ƒÝƒ¢w}ÎæV¹ÛyÖBä^^ãiäè±ÈðPaŒJB4Ç(  €@ ÐäÌÏ¿ýÔãÛÙÜÞʱõVüæbíÇåu'ü}´¨·XmÀUpÐÒߨ擔¨ŒpA0Q öúÎÄ€ZKÆ\Òa‚%Ÿ•ñÛ–úaWYw†!  êœf0°n<(ÉP½Õi¡`œÞëK§;wÔò§hØ;eeS”YÁÒ]íÄ\;p™&±oÖ~\Í%¡ÐÈ…å\mZ£‡b¯]u0 &Ø` º3ÆDóî=z›â‚t@ ¦yˆù5î†g´Hœ«=4$Gq†ÍÄi8˜¢'5œ»p ¢ÄõÀü¢áBn]# ˆßú6žÀãS?µ'[¶W4p)—tÌÉ—‹÷¬ñ©#Uççtñ.x¹ý¾R6Û÷Ñ[ëÁ¬%ÔÉ(Ï+·û’UßnXŸ.-EÞéW ú¼6œÕúL+sìÙ¸‘€áZ#ô„™U× Æ êþÖcÀüêû^Âú(<âGÝîjî6S?¹r7åZ.š¸$ž§Va”Ç´ì$VúSƒ[Å„LéïNô©S:O ÏxÕû #b°Ï+$³hæPÿø”'%w‡ Ž$0Ÿ–ì±*"yb]Ý‚<.ù£ÆŒÒ1ÕãohùâpÖcad®Û­hš—š[CŽS­d€Æˆ­°*Šp Y@ P]è«„+¤¯:ó«.ü¨­ŠhâÇÔÏãiU—îµ;G&Ô(AÙ‘êÇÓr:U}ÉôRó †“$æQ¿™©¹‘!=F4?îe#'û$ë ²>©M-IóÆ5Ó´}q8ÛßÃ&Ù–-ô'XS¹ Ö®(X×@ °láSñ yóc¸lF¡b P~(À•òã`4Ÿ:%˜VUt,²XÊZ‰’åÞ2árªI`Í b\NÃË¥–¹ZÚ&¼UÉ9½r+J¬/´b€@ €ˆ€IórVr6»ã«ƒ$¨Eäp7ó3\U1»Èb‘k%¦¼¾dó¢h>(ª«yxX8,¨ÎÞ‰YÚò9¢_V-M©zœC| 8ëõE3gË)0èsKÂж˜üéÌ]¨2¤"»(R€@ ÊhΧO½½ˆÿUù® ºJ `ÎsPúa!šã¯|ç­ª¸¤uyäX=1>‹"hqgǼܚE.Õ8mõÄJ.6>ÜUè ¤=#X‡¾&{'Ûà ¨U(%÷³|q9;×­~ñeûÕØDNœý+ˆ:Nwø© VEŽRH@åA@½åå?ïo*•Ú¾}û½÷Þ0禛nжñ®{¶ßtÃ@´ r!pëm£×^sU4SSS===Ñ2ѹ5»ë<1.šwaQÂho ª„À¡C‡jöÙ©¨Ô'Ñß›ÃÃÃ[¶lYZZâ~ô·µµÕó«O÷‹³Ú(:уFS@]û4W©_J®ŒYgiêQºVCü šÛQ+†Ã €h 8ìÇ›œùÑ ÕcÁTV5#“s fë`c‰ÆhõËã…Z÷Ž:RyjðòØ€Z@ ©àN^‚€O<æÇ£à›5V)»"FscïË„€š9 ~_&4¡  EÀÛ§Æùñ‘]Õ…c€…jl(y€tÊÚ¤@&÷ipîv-«6aðûs}…FbÎ Ž E o8€@Tùk­t}õ©ßÛ“`–Vá˜ÙHÜ­KÎc¡}äæmr ƒ¾ÑõaµTVî‹0Ë{1"!p&šØÐ† ›iƒ9ž°{xf€&ä-RŸÐVÒj¨^IõÐ <; {káð;y bÿ{oWuÞû®‘dp>PŒOšKdÆ!Ê´.‰“{Ï(—…„ŒDnå>Ž\9$ÏH‹&ÉѽI㸈&OÔ$#r0Öœ\jµU:®­[SBŒÖsŸûÈ=çè¨A#0j—óœø#$ü%Í}ßµöÞ³gÍŒ>÷Ìüw&òžµ×z×»~kÛúó¾kï•§üŒœ¯‘®>b‘¦íèu¼éd(Wã©NÍû4ÄÇiŸÇ·³Q[ª(÷Eà×cж_t8æÁ5oØÐ?M/äNv*}>ð€a¥Ï0Æ  °ªHÑ‘º3~RßÖ'<ª:ç˯á oÖôœÇžö}VuÑ€€€IÀ’íµ*¿"­Tb5•]•ï\sÞ“À¾OƒÓnÔ6­íËÛ"(RŽ…ÞÑÄÛ ®‚€€T%³øƒò36QèoÊïÚuÜ“À¾OƒãnÑ¡ m „.Ñ¡oàXè}÷-¢‰·A\¨RÆB¾*Â#:ÄOU8ü:޼íI†² ²Ô60.…ô,H<Ü®ÒÇ…T$×Ò e´“üs‡&N®¢ @@@\¨E~tQ‰?Äü\8-Gqj ž–OŒ˜ÇBïÞÑÄÛ ®‚€€T µu›,‰¿\ÌÏ„UbņÉ/}‰§•yzLDmÒáXèíÂ"šxÄUª#`‰ùUy¶w%¦ß–'æN ½{_Doƒ¸    PÌÑ=d{«ñÀ˜A@@ª€ñ`‡q’§ü¨TÕÀcŠ'`h>5Ò\¶×Xh©QñD0@¨`†´#±çí5?RÁ04¨6ʯÚ`¼    P%ª^ù¥ºõÅÝ©*™s @@@ * æ©nåG¯Ìk”Þ¦#Ó4]”ô#©Ø<8S•÷     PnôW@9ž÷&g*ª®E~™©ÜÁõÎår›Pø    … tx£ºÞêm¥ã]¹Å¹¤¯ÝãBut§¨¨5)ÒñP@«g¾ÈÌe›”Ö‚L×',|K¢€€€À ¨îl¯ˆe3c¤ã” öôÅ’ãZÒ75žŒõõiÓܰ–ŠRý‰˜ˆ$2ÙìP”u^h¬ƒÎé˜ýš‚LÇûÅ0—Ä’­.yJçéø@QÉäžo˜¨fU®ühêy“´l&1Ù*ÅE5é—ŸLô’º 5E’­Î»™éIÿ#åØšLOeäI ˼1™‘Ž6>•ç“ÓXXÍÕ0vð(?9 ÁžáDDJ¾hob’¢w3ƒý“JµIe8,ºô¸ eÒbZ<{Ä   þ%PÝÊ/5¨¯ñ›92¦=ìlëccB ×ɹ#ù—ID¬Q»àæ°HêI^ÿÎ1<E ÷lo5‰nž¢Pž9ïÔý´Ø/à—½È<-?³AuðA5¨(Økm âôm(:”I4‡è‹~}HÙÂOð#êV~ü„GÖQ­ÅÚõÔ­­J^ç‚{Ì;”5r¾TÑñÜ÷|¨Õíuœa^â'ŸíÀ   •EÊÏ<Ÿòí{ô¢õpneÍ4F   UžíµÜ¶Ü-n¨ ˆùUÐdb(    àIÊÏ.‚€€€@€ò« ÉÄP@@@@À“”Ÿ'\ "åWA“‰¡€€€€€'(?¹K‡~4뻹yB“ù 0ÅU/¾¦¹×ŵ*ì7j€€€T/ªW~¼9Ûd"“•G¦c,䩿¨¶~ßs\í÷Vàö)¾&‹ÐÒíè—A@@@@#PåÊöëHÆ& ìNˆø@ ·€€€T"êV~3GÆÒ¹zy~ƒm‘Éé:“á·oêA‡ Äqx0)ÒñP ÐMâЈÏåÕ¤+r'£•nj&WÎר‚)Ϭt´¯2Ëʤj§ÛÔòÔžqÊJ¼m1&E¨nåGÈ"M!+¸ôTF¥ãýb˜“À윉e'b"©á!˶¾z͉X²5Ð%QÝt~ø³¾ê‚ˆMH dQ+Iö»ÛOu‡âá Y1“˜l5d^:>Õ®ìY:²ßA@@@@¨zågÈ¼Ü aˆÁHBmàìé‹9Ô3ÝBzÍh;IÃŽ¶ _âs>Ì»×RÝ­Bé>*Ö.¡PŸû13=)ôÀdž'‘D¯ .¹[Ä*%PÝÊs»Éqó²>Îÿ†7Kåf:X|-ÏaÖ}”&¨By‘å1+    àA º•ŸàZ²U®¹ãƒóªB‹¤Ñ×ôØ^ñ'ì˵ú¥þ‘´ /²}wSÁÍa¡ËSùDJ»%ÕìÞW@@@@ÀL Ê•Ÿ\j7!ZµÇ'8gzSK$<ÕÅWx™ZÙG‰Uã ’o$Ò}IAëåA«õ¢½´~ tM…µ˜Ÿ£ýè/ï“­BcëÃ’ý@j%PW­7›Ÿ³räÐÔ{ÜrÅ\w(«‚oTfDáÏõB[?ôÈGO~ÇNöé‰cÇŠŽ:Ž…    Àª>æ‡Û@@@ª†”_ÕL5    Põíu»Ìy[·:(r"€˜_9Í|¥€ò[ =´r"åWN³_A@@@`) ü–BmA@@@ œ@ù•ÓlÁWX *W~©nµ£†üilâæ ”šÐþžU¬›8Z[ò†ryÝÑ^¿ÒWv!Ïy“OEZ¶÷… 'PåÊf7’ÈdÕQÛ¢Ñn1òy¸'Èw¦áüD˜ö+NºVøá€€¸€òsgSNWxoßHrÃWÕ&åg!.S¥)-§JA4=½šŸâ͘’®Ê€Qψ¼å³Ó¹>< s gÇjÞ÷F°­ÒÏ®‚€€@Õ€òKSš4™_:Þ/†)<K¶ºä)§ãzDM¯Iˆx—\ó—êu¨¬ñ„èç"*‰‡'¸é°Kj÷™[a1m«þV%€ò3–ÊËüôUtÑvZQ×Ñ&Ôñùä´ö`‡^!ØÓKOe„˜™žº‚lMr•D½QnʵÔ<¹Ó¶¨™Ž4…Šª‡J   ÕIÊo)óΊO?b2À'’YJ[½ÿ™#céðf)Sq€€€€€#(?G,Þ…é±#2úÇb+ÖN½àæ°HÊ$¯~P‰žžìײ½n…Å´õöHK.—,9 XÅeÊ"åg¬ó+þ5}‘ðT/ ä•|Jlñ£µB_0(ŸñˆÉe‚tt‰-ÛëVXT[ußÑ£­IÊ«å…Fš8Ðß”1‡1¨Êº¯1'uN…ÕS¢ÜlÞpƒCY¹:ºj?× ‡ò›Ñj¾ãÙž5‹Ñv]ú¥Æ'µ«òÙ:Z¥:T‡Þ’ê‹ÉiuÔGZ E½ÊÌô¤HÇCZÓôTFP‰½ÇœMœ€€€À2¨rå—ˆ§u ÅÓÂë9°ö&ø1~ „ÒÃTby­BF3‰ˆCÏ¢˜l(Ä   +M º•em# - ËŒœ”~ÁÍá\¦¶ßˆçÉ„ðÀÀXXfz…ÈL¥#M!:᨞ûLQ³H.ÌõȾ°•8õènW@@@@ dU­üXø©èÆMj4–~Ñ!Z¹×ÊÙØ.Ñ¡e{©K¿d2Ü®Åè((dζk*ìó öŸkÉ]õ˜Ht(£5å>øé—KžP4Wu®Wªà=Ÿaɳ’F˪ó³Cƒž_7¾ð"À¼¯TËlÒrn˜“Æ›:ôXÓ€!‚€€¬ªŽù­dô   ¾ åç‹i€    °  üV2º_€òóÅ4À XP~«]€€€€€/@ùùbà€€€¬(¿U€Œ.@@@@À ü|1 p@@@V”A¦ýwy+ >šgVz ]¤º­>ÙJØ}ßù]ÂQ@@@`µT½òcÙšêã]{ùGh+µò:x;ãj'áòrÞ‚€€¬2ªÞ½£}]ñðDvÈØÄ-Ø µÊ· ºX5Õó›92–޵[öîUìMàn- (Ó¬)-3L…F=ÕZ°‚ Ú¡•MµÒ\ÊV7Ý<8]Ä­`ä X ô¡aU@@@*@u+?šÏHSÈaVSÝ!Žò‘IL¶’,ïÃT8K¶ºä)§ãzЏ@…è´Éíûõ…éøT{¾\ïÃb,éàžG‘£µ±ŽŒêV½z˜À%J%PõÊ/=•±ÏíÌô¤ÐcÁž¾˜Q)’–Ùàh{LD:ÚøTžONk†ª ýZMz.’è•QGÃõ®—qçv÷¼Jœ¬‰t<$C­IÇázÙÃ5 "PÝÊ/ØÖIޝÚ#”Ãm2’˜IDVó&Š©ð%÷œ[Ò¸š /_¨nå'8¦FyÛÜò·™ÁA‚ÁÍa¡+™Áþ¤ËZÀRg03•VÉe^_èÞ˜z×óÇܹ{Å¢®È± É[+TJ'PåÊr¬Cr%ŸþàE—hãÔktÈ( Ñ"¹e ”E{Bæ]»¦Â^1¿è\GÈE‡S¶WÏÞõþA‹ê–-âJÿ+ñ€€€@:Þ¿ÿ¾}ûHõ(+¸k×®ÞÞ^–téáG÷ïúZw\"ðàwï¿w§7Šñññ®®.ï:¸      ···{ÐxðÁ-¯êc~Àp @@@*‹”_eÍ'F   î üÜÙà €€€T(¿ÊšOŒ@@@Ü @ù¹³Á¨,P~•5Ÿ €€€¸€òsgƒ+    PY ü*k>1p'PÊ/Õí´;m“[Ô&nÐ<8#¿K“Æ7w€ÎWTk¶ º]çú¶R2Pb › €€€€€…@e(?T$2iÙœ65÷Ø×éNöÏï Ò¥Twk26‘Õ¾9Õ5•9¨4ÚN1IdøLÙ-` —A@@@`% øZùÑÎrsssE?cGT¼N¶H'c1§Mo‹´i YÕ@@@@ <øZùÍÎÎ>|øôéÓŰlêí ÇRZÕ™ÁþÉDon3»\úµ[U‘ºA™ÒÍ%uUôŽ~¶&E:Ò®2m,ÕØü=WY»èík®©©ºc¡·\Ò øZùÑpZZZ:tòäÉ"†m%Ç•®›92&:Ú8o«¹ôkÒH §ãSí*%›ÎIFªOuµ,­LѦºCc2c›ܘÒÈaÊó1ÍU¦/…œ$SzÓLb²U­äs,,d ×A@@@ t~W~›6mÚ¶mÛ2™LÁÑE{j±k³>¹`Ï8´ óŒ#’è•Z£˜œ6%ŠÍíÄÌô¤ŒÿñÑšLOeD¨)’ÔT[^Í‚_ØT¬]éÃ`O_ŒIû¶Â‚¦P@@@J'àwåG#Ú¸qãŽ;FFFΞ=[`€Á¶Zì—’™^sŽÒ©­B†é2‰HN—ùaí À?’]Föש Ê@@@@ÀwÊ@ù9sftt´³³³¡¡¡?Ф…ã­ñüL¯™©´z`ƒ²À%>ï+‚›Ã"—!6 ùG*Ò=Tèä©4¥ç£û“2ÔçXèÔe    °D~W~§N:xðàöíÛC¡âµ¥Œo$fÉô *2aÛ5.9æÊh­µg<ô§Eh͞숲Å2¬=;â1#lj²U&Žyí ZèXèa—@@@@`‘êÙnµš=z”ÖùQÂ׳CzÌÂHîR0nH¯l”s‚¶'Ï„¹‰qn?‘m¬­£ôh‡Ù?>’W`\4÷âhÊ­ÐÖ0Ïy|Åðµòkllܲeˆ 32´È'àk剔œšÅü‚€€€¸ðû:?7¿Q    P*(¿R‰¡>€€€”+(¿r9ø    ¥€ò+•ꃀ€€@¹€ò+×™ƒß    P*(¿R‰¡>€€€”+ÊP~ú®rwŒÂ[i”ëdÁoXÊP~„ ’Èdù˜ˆ%[¡ý–tO 1€€€@¥ðµòK§Ósss¥¡§MtÅäôLiP@@@ª€¯•ßìììáÇOŸ>]ÂL¤Æ“‘޶ l13Ø,ó¿zØúÝTÁÈSâ¸yPŽÆ9Ÿtw“1Mô°ãR¡„ *€€€¬_+?tKKË¡C‡NžÐQ°#+(Õ'P·ú]–ÔãÑ£Gi%|=[E‡²j½×â¤n¬ž;S­£ôˆFžky‘ŒÕ´êyöók×Q^¯ø   kCÀ×ʯ±±qË–-6lX6è@@@*‹€¯•_$©,Ú €€€¬*zÌUõG«ÛèÄïëüV• :Š&åWÑÓ‹Á€€€€‰”n¨LFª—†§Î¡ü*s¦1* jßZ”î ¨p†þƒò«ð™Æð@@@ª™€9áK*CùÉÝ9ä~æcf°9hœ‘ÒA§Æ>FÖ€,ðe    PÁ*CùÑE"“–MzSñ´œ9Þo-&"‰aÞ²j&2*ä)7a³éÅ žl @@@ Ê øZù¥Óé¹¹¹"g(cGLQ»Ôx2sÚx×°ÇûíF’ãÖPa‘ý¡€€€ø›€Jõ _:ñµò›=|øðéÓ§‹¡ÚÔÛŽè2nf°2ÑÛ^ a°­Ò¯#\¨¾V~„¹¥¥åСC'Ož,y´=¦GðfŽŒ‰Ž6™ÜÅ     ø]ùmÚ´iÛ¶mÈd2ç,Ú›P‹ýh‰_¸O­ê+Ø(Ò*X@@@@ ,  _uâwåGŒ7nܸcÇŽ‘‘‘³gÏ@NÙ[Zì—’™Þhº|™Bƒéðf„‹@…*   eJÀx™ù_çÿ1œ9sftt´³³³¡¡¡·Áž¾p 5Nï!çRÝ¡xx"[ŒD,Ô/®ƒ€€€€ ì£wÙ‘gêÄï1¿S§N82q˜&€€¬ únô 7§ì߿߾}æR†»víêííõöïáG÷ïúZw¥\¥ oMMÍm·ÝF ߥØAÛ5'ðàwï¿w§·ããã]]]Þup@@@@no÷zcÉÀÀɹ .Æ#iG­Ö¯__çg|[¶lÙ°aƒŸ„o    àgJö)}­ü"aãxXw7¥cePOÌé`º¬ÇM‘3ªÆ¥¹ÚZ[Í%idPK;Ë@•´&E:Òãr6ò”RZ™ú5ªI\•:ÖSÚ9ûr$ù£ÐÓßycÌsÏ6€€€T:_+?‚ßÒÒrèС“'OšX|´Š‰¡¨^9=Ù4œÍÒ÷Tw(¦¬«–f)m%ÇY’XœŒˆ±#'œ92&(F—ÐkscU¡±•Mžý®‹úÒñ©vîb"–ޤDtˆÎdZfa|~Nòy¼_ÇÔ.Ùè’§º5®JåA—É‹œ}奴F‡kGùîéÕñ'€€€@Õð»òÛ´iÓ¶mÛ8Éd<'ÅXç×ÔŸ{Ð!ÒÑ&àÍLOŠX»„Áž¾XzŠŒ…š"2-L¯£¯CJ?~Ü„.%[sKpsCY&ecÇ#’è•}¨´gœ}àÚº“ò\[2Èôr³5-èG¡D÷ý#/÷Üíá €€€@Åð»ò#Ð7nܱcÇÈÈÈÙ³g s¶uDܵ™¹=Õd¹Ç¯-JçS]ø ~Z";,ºŒÔ°üœ†väbŠ…ÝYΔý¥ˆ&;‘ID–Ó0l€€T 2P~gΜíììlhh(<+¤ÞÒ¶‡*ø±-µK«çú“*þ'¥_W? ¿  óÉñ)ñÓ’¤°8,(›»'y ;Å5œ}(®­ª•™ÒFÆcto¸ôŽÜmã €€€@Yð»ò;uêÔÁƒ·oß y?"«gcyAžýå&Ñ!~Û‹\È´¨K¿´&öXú%¥¤C’‚ʧE¸¹Ðš_ÈQ8~†£ËuéŸéæpö¡„»'Ú«9Ñ5Öb~” –Ï{Í’;*Á'T('zsÊþýû÷íÛG¢ÈpœŠ»víêííõÊÃîßõµï:K¹JÞšššÛn»¾K±ƒ¶kNàÁï ÞïNo7ÆÇÇ»ºº¼ëà*€€€€"0<<ÜÞÞîAc``€äÜ… Œ:ëׯ¯óh°æ—·lÙ²aÆ5÷€€€€@ðµò‹Dð CÜc€€€€_ø}Ÿ_8Á(P~å?‡€€€Gʯ8N¨   åOʯüç#â@ùÇ µ@@@@ Ü˜ßÙ§|‡ò+·9„¿    P4‹ø« å§ï¹!7éÈÛÏÂÂ…6Ý4Ë 7¨‰:1×°m¹è @EX+•¡üˆ^$‘¡G²YÞ¥Í]ûÑ^¼YûÞnÞðuËÙ¬¶é›wu׫vYéZ@@@@`¹˜Ã~¾V~´³ÜÜÜ\iÃn‹ÉiŽêá`2-ÊûôúZùÍÎÎ>|øôéÓ%LZj<ëë R sŒÍ8w ¼q ˜æÁéBqÕ\DÑ0¦[ÐSÍòÂ`·¢,“ÊTÒšéxHU±6(Ô/®ƒ€€€À2ðµò£ñµ´´:tèäÉ“…Æ*E­b¢´¤lª;Op¢xXŒ%ºÑ-³ä öôÅ’ã)UK™da¬Cåš'D¿\E(HäMµ³Ñ‰X:>Ñ!:S)ir/5 u¹Ô ²ƒ»(7~W~›6mÚ¶mÛ2™ŒÛd¹±Î¯©ßáÑ ÷¦3Ó“‘Do”+°¬s¨h¬ó“Š2Ú®K¿Ôø¤lHT0ug2=¥üÔR}{ö9ÔI¶Ú0qèE    °|ü®üh¤7nܱcÇÈÈÈÙ³g <ØÖÑÕWáÚ‹¨íMLR`of°²£³Ê|ÄdÐPÅDùA 1v‘Vte¾¡ €€€x(åwæÌ™ÑÑÑÎÎΆ†¯¡¨k3GÆÒ‘¦}¡Àš.)/ëÖ’ž‘éX:H̹V35'm)ÆÆÂj9¡àgJ’z’×­‡r’™DO£8 A€€€ÀÊð»ò;uêÔÁƒ·oß ±šs?ôÕx¼äN½·E®Ék•‹ÿÆ…SW‹MhÕºD‡S5cŸžEfé—L†ÛeŠ˜ŽèP&!´e†A<ÊûêOxèo ¤†š|t®€€€€Àr¨[.C+dçèÑ£´Î¾žöéù‰ì½†¹X»LEJ°'¬Ür­{zòÍ8Zædm^=[Þ Ëud²uô×>”€€€€ÀRPL5§%itâkå×ØØ¸eË– 6,eÀh      $ ¯•_$Á<€€€,¿¯ó[®q€€€T9 ûAùUù=€áƒ€€T(¿*šl @@@ Ê @ùUù €áƒ€€T(¿*šl @@@ Ê @ùUù €áƒ€€TJR~3ƒÍrÇ:šgÖ`õ­9¤ ^ò²§ÊEjb÷Õ©0gÛËð ]‚€€”JQ~¬¥BS}ôzjy ‹#r+Þ"'™UD3—*‘DF:IL¶ºK4ÞóCm1çbÆRL£kjh™¦iÚòº]œ¨   Pæ|­üÒéôÜÜ\„g»âá‰ì¾“®öôçE´_þ*ÁÍa19½\ÇÌT:Ò¤í[¼æC[~X°   °J|­üfgg>|úôé0fŽŒ¥cíRÏ3ÎsIáî¶&E:Ò³³¦Œ±²“ SZ&™ *ö4mÎÏÔx2ÖפGœ"vºÝæÁiëx£í±t¼+—Áöp[yç³—ŸÖžð@@@ ’ øZùø–––C‡ê:’è•aKîÙ¡"¯ ”ËmÏŽ°Û†âLêNë>ç ÄÁ.Š@@@ª‡€ß•ÍÄÆwìØ122röìYç‰ ¶uD’ã¶ø›KeVPâ«Àã·Î‹.e—ŠW£Å›íN85¦…1e$3ß C    @Ê@ù9sftt´³eÒ>a IDAT³³¡¡ÁeÎ8®EyØÜô3ƒƒ,)¾§Ë/ZxgjL´L"b Ùñcº‚œìO:®tqÁRÌKUÚÕ‡¼Ôµž<æž-ÖRƒú¿œÝ\é¶žä5ŠÓcGä&®‹ ‹j€€T¿+¿S§N¾ùÍoööözøáG÷ïúZw¥\¥ oMMÍm·ÝF ߥØYž¶üìÄT_ ÉÝåé¶2¬<øÁûïÝé=–ñññ®®.ï:¸      ··ç^cbÇ200°{÷îK—.—êè0¾P¨Ÿ¯~[¶lÙ°aƒ}0«_Â/†Ž$Š <®¾wè@@@ Д-îã.þjó6³25"ÔìÊtiµÊ>}+zN"ÿyake|°<ÀÁÊOi>uA²‡|â"»‚ùl •! Åõò×½ýöÛJäÍË€_Ífé¹(¿•™XÕ ÀZ.àÇ8ôƒJ²½tÕW«ýVƒ úðZ¬êGà€€Tö3F’S~T¤‚|†æC̯&¼¬ÆpÙÆë?õ¿ÿ^Y¹ gA@@`Íüý?üWï¾5i—_I_çgzƒ*@öy£ÄU(úc»*ºgz«K¾ø+ÁÀKyÙ^zyŸ±Îêçò¼þÛÀÍe8–bÓX"‰ÌñÕ íÂÑjì¨Fï€qÝÑ—=¥m9ÈEjÒßdõÕZ˜gWºÄñY Çsµk;ýêøø««Ý+ú2&PÚ*)z–7/Û«Îïs.»„¯T}á‰l6*138˜=ê¼Àt.¯*Ò%ûÓrÓ~%¾+&:”ÍÑ0–×Õ\ÖäòM·Þ¾&ý¢S(;Ï{ÊÛgû:?*Ñ÷í¥ˆŸêóσ½´³ÜÜÜœ÷¨äÕ™Á.–}¹[°§8ÙW„íÅU n‹Éé™Å5F+Xºò“Æ¥üóÑÓ³³³‡>}út¡ÏKÇÚ"|$kÔä—qNá8µ5q ;¥ò¨éx(@_¸—ÜE­@FÚšSZ#ªeT1L;¸—OÆúd¾ÙÑs¡ÞZ·Û<8í`бÈÁ[Ç!86F!€€€@ÕÈS~>}KKË¡C‡Nž8ˆÉE„tt‰Ž¢²½ÂÑ[ÇB‡þʧèÄ3‡_¾«óÃâ¥ÃOÏ–ê÷­¤ÀÜ}µ{ö§?ε6•—j²øúw?¼ëÃB<ñƒ¿|­øFkZsU°¬éÑ9€TMà ± hð¬üè;]»$?³Yú¨?°9zô(­ó{ï{ß[Ø~Iž~¯qæWáÉchh(+Ký%0Z’y9#fÏ•w9ÓYÕ—¥ØðP6“œcÇ{zô«–A›*«+Þ²ÜÕ98º]¤¿j¼öô‘Ňî¸/vÇVñâ“ϼ¦y§’›ûuÏ †Ã…zúòÙ¯_}÷\qdçÕ„3§5å¹úhÉYUò‡ŸVYæëÿ0ÉŠSO:sMUR˜Ôu-ä¶xaF+í”_ïÍëȱ/G—„pr)Í̓ⱛ±Ø½¦\6™…g5@@` (å7/„ñ!ÇÊO}?/„ñQ%kì¯wÜq­ó[sOàÀZ©Þ­m-×5^wI¨#ÏH u¬—ßg§xÞcŸÕ]s,Ô/Þòm­fçþ×_ývKn8¤uvþX™RÉYS:øÓß“[ñâîä1!®9ÜW÷ßE%_µ¯tg$óÔÏ·çC/î¾UO/½2:’f]k ‘ï’ó‹nNÚŽ\ÒsÓ*2ªÂÁȳ_¿sDlÝõœ„`fè>p\XCJÎ]è£4ž¦ü.-ú¼u)÷¹¸ è³æG$Ù°aÚ»ÖŽ€LõмùjÖgBKøª¼mç'YÀ]¢ Ž…=7·jlùô‡((øS}YÞûƒz{m‰¡ ƒIOJ:ÞÝuâXj„ÚùXæê»)ò´'‡ƒ"RöB3­Æ»¿Ü¹çNzÂc„Û}R¿BRf¿¸~§fŠbrÝJë픯ûüŸÞõàÎS®óȇµü²½’VBkøwËsZ÷ä篕§´Lð9AëêînTÉbº¤?ÃmÔÿìãÜ»p¯)-‡ó=:Êon¸¤¼¥±0ÂNFŒ§dx\ß©p‹U|ð ÒroŸ{û—§Þ0ü¹öÊ+ûÿÛÿôW#{yäèKÿb\¸yË5ßÚó­¿Þûo×~tÿ®¯õx×ÁU ~gðþ{wz£¿éÖÛ½ëTÚUù| K.ùÞ   P<ç=ÕÞÞîQÿïûÚžo}ëùÿšÛ·åÆkê¾óÃ_Q‘4á/ÿç/Æo¿}ÕÛo!æç—@@@@À×HËÑ‘/ð6ÉlïÛçΟ;wúÔ)Ã}Jÿ"ÛëëÉ„s    àI@ª¹s§~ixçÎÕœ{ó Î_¸pá_½a|.œ?OOk~ºHÛr4Îèéßäf¶­yg›ZíüfyÒ7ú»}˜l/mÔ²oíX6£KsÉÔ:oÌ‹¸Ïes²Ò aÏŒJ›QŒ@|D@ɹ_¿ñ†ñ¹xáBÍåï¼òÒÅKt¼e:¨à"½è¥\Úù,àz… ]o'üY‘ÈdNrIj ž–— ‘DFíþA¶Cv©·/Zîìã-Ý´-E&ÂS™‚.,¾BÑ^™ºÐw ™ˆ mìÆ ‹w-A@@Öˆi9:ææÞ2>TRCJdaaa~aáÂŋƇJèX#?sݦÓé¹¹¹b܈ö&”Æ#e§¶ãU­Âa1vĈ’ðOÆbÅíŠktË;áF’ãJXãŒS™Á®xx"'¥¢C‹ØØÉ0Ê@@@@À‰€&ð.‘À» >¤øjhË^ù?Ò¹O– ²NFVµlvvöðáçOŸ.Ük°g¸c¬«¹¹UL˜%USoŸ Ôâ½^OÁ8wlëÐ¥_.%ÊydúÖšiŠ ª `þU“±™#céX{ÔÉ|.¬2Ó2\7È™ê¼D³SµînÊk~hId'¯(jd™õì7÷b4wrËì¼½9³´Ù,`—A@@V“€Ê3Z^ÍUW]%DÀö!Ǩpí–––C‡<™{ Ùͧ`O_8-½yméñ:’_¢£Måݬ*Ï¥D“”G¦oznTêÍü«ù¶"M!Y K&µÐ/Õm¤€'„ž™NǧÚy¶&bi-‰í\m²i8›åŽ=½¢¶n”³ŸIL¶ ÓFsÏA;6w,ô4ƒ‹   «MÀAàq¶7@"/¨©©5>*€´Úî9õ·iÓ¦mÛ¶8p “)°..ÕÝ*báxWþº>RE.‰`§Þ<Êtᦅõ(Ôçtx\Mk û‚=ÇYÓ©Ö3Ó“*dHÄ[“z•ˆ¦_IµŠÉiJV»TËÉX~¹­n$uÓ;‘¢T°csÇB'(X+J৮­S*aå'jø’IøÕä?Ž7îØ±cddäìÙ³®‘î›Lôõ&„þ¨‡Q•rµ´Ø/ÅO~X‚®æò/p®6¼™‚…¯£t²ŠžEl=®7‡•†³5¢ T<Ž­z­ýs¯æÑ¯CwåVDï:n¼Z~zŸ]Šï¯%·7~ZÛ0MÙ¤gÍ…K1žkûÌF/öBÇî KvÆÖïò˜-ÙÒØþ׃>ûïÙ)µÚ±§Å÷óKì{»WÛ‰¡Ä¯XÎå öi•^×ûräèAÈѳgЄƒ·pr¾åaäqß­&µ>QÌÝbÁgLŠ3½6]½:wh¥6bp b/XÁNÕÅUGÔÎw‹Bíp¿ÉLnÁE4“õ¢ªú&˜ÖVlù¯ÓIA»Ãt[2ûØF>½Å<ð×f^þð§[®µ²ßóÇb¿…¡Ê„@ ¿ÒůGccãwÜAëüüê üZi-ͦÛGH‹èkt¨Çü¡øç÷ˆ=÷Ë¥{Ïž}ý{âÉ ´ªk9^ýv‹‰`® íåúªDo&ªÒU/íÙû¬l`óÁd&ïÔÒ—m˜\YçÉé°«¿*ÎëË™ƒÝ¬6Ø|Ï5WlÞ:Âq,TŠïÎÎ67:ž#7€’¿¬M÷Ø‚æ=oí7žû´ªÛØ;Û÷œç{ÀîªU·!;±üýrkk)/µ¦c«^Ñ9p‹"cÇ&ÊMˆßšù²u¦¾²ûýk,<û?8…Û ø™€žíåøå>>ñ8‰lذÁ'ÎÀ5"pÝç²È{y§!þ¶îú¾ü÷úÚØŸ|ö…’yôßî2ŒÇÁª?~)sB¼öô‘ïú“x[6®Ú‡©ì+žlk[‹ÄF_òÌ:z®×X^b® )èw‹1"gŽmU¡!Ž|…ÿÓÂô²²ýÆsõÖì˜ ;Û*TÁá°¹ºˆûÐ~¿•LL‡YtÃ<˜Î­tDŠŒåo„så†ü„þSí“)s8ðÙ¯Gè?í¬Ó§;žÿ§íçj(Ÿ0«;NófE%ugýüó)N¸µj®}o÷“·þô™ü©OœxYˆO*'h™¹Šȯ¯zhÆÁó| ¢åÀlL¦>_ ÇArýRJ>tr ‡|îw0³ EKòÁ2L=aíæ6/uwâàVß^¾$oíæ–¥Äa6_ eÆÿ!ÖhÅèjS]4±bÚa–x—òjÂÒÿ´ªï–kyIÃÝâñü`1÷€ùœbê£ø„€”{¦ƒöðÈ[é'W±qQ^©Oœ‡ÕFàXR{‹8ñÌá>¤=ìñ‘gè7®_á ÙµÁ÷‹Ë$¯~\û‰¶ç—x£³[õï~òØî­/Ÿ0Y6:á莬Dm_Ü<Ƨ¼–H–9ªKn?¥OK;´¬ê?>¡GÑìõí>Øë8–¸ Ó±®¹Ðƒù²·çvo—HÌ»»‚ƒY,„|Ã[Û¾ÿäc¶ßxKôÖm8vªŽ5Q;Öô(,™˜¾HΡ¡ÓZ@Š4›a:´òpN^*¦É±ÔˆZÕw¬÷Öß>fYháð2&£SÛ?8…ÜÁuð¥åti'åÈÊ'<”ÒSŠOó—Kýã:<©R·gT·‘S3úʼ­ïÏÜω]^H§â|-ñš?^È~l‚R<¿_/1­ti³ ¿ìÖ=7äeo½o—Ø}+õò•Ìû?¬¬µ<$—jQ×_ŸÖ²½Â±Ðè½åŸ•éiã¾Â>PR[–U™B˜¯|p›5õe¦G;uɃͬ«çÞ:Âq,t$æ Ê‘­yœ¥Cp¡tË·å"Tz1d®‚ýÆóöÖÅtÁbªŽm¼©:6±.šX M0Kh¥ûêÖ$÷´Íõª§9Q¨þ‡?/Ê¿ÂòSÄ?öpìˆP¾%Órºþ­·íüŸ'_~ôѽ?üë§ Ç»ÿ¨e÷îÝÏO<î=”‡Ý¿ëk=ÞupˆÀƒß¼ÿÞÞ(ÆÇÇoºõvï:ò™»ŸSoæ+T×AV–ý}L}¼Ðbe»óõª¸¦ž0ç=ÕÞÞîÁâ¦Ö;ÿìÏþlhôYU‡ÄߟÞu›þ„•L3¸  ßí•*­DL×ðªÄñaLH@x´i‰=ù„½ãW¾âÙ-}—2€€¸ ×è¼þÛÅJ-ç=<*upWÅ`WK[õ꣯uô…·í­ ÔÖզﴕ[Ūô›Æü¼ †  +B€´é¾Úuú‹\d¬¯Žïà}|kjëëëneAN®ˆ;0     °bHËÕêO>Ø+è;ËÀ:ºPW{Ùe—]Ów:VÌXYëXÍÕ]qÅÔR~ü$àºzúߺw¾ëFÿõTR¿neÝu#@bŽŽw¾ãFëÖÕÓ:¿l}ýzºðîw¿Û¸P¿~ýúúõEzrþüù"k¢Zu »©:ŽQƒ€€À`y·~ý• Wª€yBНî wÞñÄèºÐÐðùËÖÓÿ.+Ò×û·+²¦Ñ1ÅÿEgÏž¥¶ül±~¨:æ’"£Ú20fJÙlhhøyØ»(f¦®¹æ{C”€€€¬(úË.£àË»T/ôËô/æ£rú¼g£vJ¤ð+6N³ˆ´°dßÍ7ß|å•9º¢ƒ‡ñ¥ þÿð×_½ÝˆEùÑ3átÐüò¢Ry¼õÖ[öV(Xi$ûè ­¥:"åG]V~œÚ­¯ohÐ.P‰Ô‚ÅÆüÖ­+vE 9æ÷ÆoP$iaŸÚ ×IDAT4QûÊnÑI1‘¤•æUÍö™¢“……ùw¼ão¾ù¦šhÇ©1 é„¥ùkV3UŒ@@V“=³±n}½ùAZæW÷ß§¦HÿÕ××½ûÝüè‡:è«…ÅøG¿æÍÕè÷½Ò $(ð3??ñâE‹*—Õ¨˜„Å‚%·È¥å³i0E¸ˆý„dS1 }[‡&çÒ%‹9š5»Ÿ4ô¥«4üK—.)åÍg…XeuuëèñÞ+6ÈGx¥´ª««­Û~ÇÇ÷ýÕãô.¿w½+ç}5½Ýo1~*Ù÷Å/~ñG?ú‘]ù)‹$øæçI0ð±˜>üѦ¾¾ööO~âƒüà_|ïûæ“Ûo¿=þå¯\ºTöÊožÅ«×k½Iö}ìcûÇüG’€$ôý1-ð@@ª¿Í¯¶výú\শ6ËÙ^ÊÖÒËû6lÈ¢’¥¼ÔEɾßÿýßïèè𤞥p_¹+?Ò¯7ÜpCss³åä÷~ï÷dª´ŒE-Íš ºs<çQÌÍÍ}þóŸÿË¿üKnRæCö)®‚€€@¹ ¤,ý¯3-Ê£$+¿ÚQW#.7] ¯T¸¸ƒ?$0÷w—Â`›7oö0BqGM÷•³V u·iÓ¦+,'ïz÷»•¬õ àÿK$ãhŽhŸ—‚®Ò‹"÷ìÙó­o}‹R½q¡€€¬4Þµ—ež–¸ãÅu!•Ÿü˜åU%‹sˆ”À~ë·~‹b~ô ‡‡‘·åqáÂEZæQÍç—Þõ.í‰o¾9§\5Ÿüú׿ñ¹ÿÞ£é¹âŠûÖÿíßþmšñT*F¡ü¼©â*€€¬©ütá'h¡}eåGñíL÷‚J y\\&GK¾î»ï¾7^~ynG8{uµÎV†•õb8Zª¨†æxRÖC£q‘†£éY˜/ðÄÍUW]‡ß÷¾÷}à€ì³ßê(ŸÐ6çeIhòˆ¾z-é÷ô]ðöîÝûÈ#x¿F*?–}eó£!\}õÕïxÇ;,'¤zåèÊ8œIóLOàÌ_š§´µçœ‹¦¦&ŠùÑzG2)?<Ûë WA@@`õ ðû7„|ÂCé<‹Ô[´ò#ƒêaÞ/}éKÇ÷˜Šù‘6*kyDB§±±ñï|§å„Ö½QIYæN A½vÑc*iAçG>òÎÏCöy€Â%X[šò#'–"õìcPâüy¼æãÒü¼\éw®`HÉnß?%¿ùÍ›7| Lþ8ž\¸pÁ?®.ÂÒ|ÆóŒù‘à»çž{”F„ì[d4U# e{W¢?noòSÝ]8€ 8=;º¬ŽÍsçϯNGkÐ =|­χ¯Ë=®¹`Ñ%€€¬eP~Ž[;8‡'–½û—ž 8sæô•W¾›BJeósi…ÎͽE[üY6kq£±‡‚Ž|P  kK`”ŸÛîm#Y Oœ8ñ«_ýÊ£.ù„mëL¯éQb® ¤SâÊÊoA,Ìx¿yua˜‡ò+Óy†Û    @/Ö­aÙWW›cÁBðƒMMTÀófÅíÖEC€¶·¼€ €€€€@ù¨•Êoݺ܇… û/ƒ$ k³R8@@@@Êœ@m­ Ïúõ¹aÐWV~$IöÕÕq¨¯& °_M )Á2.Ü*& ”ße¦l/ÖlýàïÔ}êë8HúêqʯŠï @@@ Ü ÔÑóqYMîÃ%4*zæƒ>ëÔë]jø /–—¿”ûÈá?€€€Tyô¹Ü4lŠù™”_ ÀóÒ㽈öUÛ­ñ‚€€TÒyô1-ó㯬üT„¾ÐÃ5@ÏxTÜÜc@   ìß¿ÿõ×_?þ|ÁšeQaýúõW_}õÎ;=¼Å=à”Å%ïY6’ºÆX¨$§üHÿ™^õ‡·º”ÅŒÃIå!ðè¾}W\~ù—¿üå«®ºjy,®µ•S§NŽŽÒ¸î½çG_0dG,åUè=ËFhÏ<(V~FŒO;¡·úѧ¼†oA@@` Μ>ý…ÞÞ+¯¼ò­·ÞZ‚5}Ï{ÞÓÙÙ900àæ†ìF¦ŒÊ½gY)?ó">ÎîÚ‡G²+ýìXP  PÁ.^¼H¿DÏ;W1c¤±Ðˆh\n#ÂÝÈ”QyÁY¶…c~Æ¡ >è>;'”€€T:ÞÂTÛÄ´B†Zp8rÌtÁY¶ŒQ[çG¥FHßä‡9WÀ½€!€€”H Ô_¢%š÷cu Ù³²’>å)?JýÒ¾ó´Ë›ÜÏ €€TÈ j˜î*œeó´ò:?íSþª½ÐfnôÁ  ÕC€ÁÂJ?7èÇ'÷¾¢÷@¥Æ·Wö~²¡!þÓeï¼ ÄYÂ¥Ïê0j™†`†SšÉ•rΞÒEÎ×â‡æ¢à-…5}GâϬüø1¿êù×#X!?ûÊÆS½pZ/´oýÔ¾–®~ö•­ãí/œþþm+äÂò›=±ïS·Nÿ5¨Ó§Oýlù;ñ¯Åûþbª«kê/l3é_—ÍžåÞç§4 =îKEJ–Çà%€€,RÃ'…º}uß_ îoNu_« _ÛýHÿøG~º›T?K’]ȾòhtG6W£Áå¿^ú_Ýwïø›Sßû¸ÞôÚn}€Ëåžg…ž·)}ÈyãzõïÇÅ<ò%ñ¥/ýý+Ý÷\_â˜WvhÅ8£ÅüŒ·÷©H”_1ìP@@ Â&XÎ㕟þäŸ>×Ê I?®ûÄ|äŸg^¡¯’ÜO¿òÑŸüÁÿ+5ÔJÅÌNÉýÚ¥›øÙWè5ØòøÊÏdD÷íÓJ£ûxØòxe_4¿¢µ@:®×.éÏrž4~ñŸ¸ŽfRüä§úäH¦ K©c¡XƒDÆeEƒNIã¥ÊÅ Ù\'÷&çyùJgÞº€€TK—.ýú׿^ÎqÏŸÿPã¿Ë3JEÿ43ùë__5wQüS_ß?uþ߯\µÌ½æF°aÃïá,fȃÒ:ùÈîW^ÙMçÏö½ï»ïüÈÎF9Æÿ~—RÙ×Ù‹˜Ýÿ™–#mϼò7² þÙ¾ÿõà§TÁ³}Ÿyø¿}d'5œ??·.+2d3ÄÙÃç?õ4g"ò©ùÿpø¿uîäqÈ‘~—ñJ#ïÞ‡#ÿY¾C! íª÷t¾ï'·û#·0¯ŸüUç=‹¿ Ùì>sÌÔÞB 0/?|ŽÛ,ð@@ :¸-¢_työ¥Ì«–ÆÙ¯o¤"ŠÕÜøÀøÅ¶?vbÑæ 4,fÒ ˜pºì0(UíØïãã #”ÇæCŽñ 7ñéMÿ#ñ‹Wi¤'Ž~éîûÜ59Ã'^ý…xéÁ­©F ù´Í Ùð–ÜÏFo–Þ_ss4û`ò˜¼$Gú]9ªk>wß©Yw+”C# #OËÆÇžþ…Iš*ù(fÈæ:¬ü(ÚGjï‚ü\ èmßJÿ•j õA@@ ¬ ”šh+Pÿwni½ñož~ÎTëµc?ß|ÝïpŽŽ³t]£?ÚüÐm}æ*l–r¹˜¹(Åž¬k”2ñÚþŽ/f4MÇÓܨrµrŒZÆ9ågr©d‡l(?»IƒS²gÜ`E†œóä¹ÿôÐÏþÐm!yÜöÐÏ…6½æ‘¾vâe5BðÀËìíµý¼Üz ß‹=в¹Žó#ñGÖœÏjúʯTލ  Pîè7oÉñ– ®ùã{wŒ~q׳Zµgw}â!ñ»?&¿.îïc{žúÆôwì§pز•Т†¬µÙÕ‰ýûi„'f~~ãû8èu‚Ô­²ÓÆhï57Eo}Ä<Ük7‹üNéDVfȺÏ>=zã7žú…q<õGŸ–³+ÄÏ'ŽÉ9äáïø¸œc—B ‘?úÑ„ˆÞdŠ€®À-1ë"‘Hçcóóâ¼Ü«ßíGißz1Ï÷$%¸iÏ/’»o¸áebGò#7Y­5~n$ùÊ ·wЧF>§Ö¾Ykøí; ê©÷uÞ®ŠÄйx÷7½ýöþ\ܸcÅü\m¸T‘²ç¦›Hüvʦz‘kãµ½ðüÑÑ£O™æ¨ñæè~ôù=<§7n~åk7Üðs5(}’ õA4~îÞÍ7ÄDò«;ëuŸþ^zarÿ¼¸H¹^–},þê•àª" ã4Ë}|l÷ÔÔnݨÑ•~Œ~ߪ¹ ÕX‘î g‘}^s×ãSwåL³{‘yŒ–sƒˆì?¿)•˜á@é—9d!òæLöËŽó¼ý¥™ß÷ùÇõQ©8÷l+̳A5:dx°ôA,¾…|¶W®6ÈÊ~³òµ.\RT®|ñ£%€€øŠ€J}úÊ¥%:Sdês‰½øªù yA$ŠñÐTá_þúÑéÿëÏ¿¹TáWpÈ– ª{ò«‘Ž1Ö{ô€²ÀWS g@@@`Å ,õ—ðŠ;¸ü`ÈËÁ”Ãer•¨Ù˜c¡ªð/?þÜßýÿ~ÿÿ<üWÿ˪Og{“ûIöÕÔ¨Š#Ú·÷l€€”Š”>ñù C^¦lÞõ_š9cš—/u,T^sçð¹“O NQaK5ÁÙÞšZ–}ëÖÉ$ï<¥«yµ‡q€€€@uX·nÝÙ³gßûÞ÷þë¿þkeŒøšk®¡Ѹ܆ƒ!»‘)£ò‚³l‹T~5¢¶VÔ¯ç /=ØAÏù’ò«ò³ÓB €€@…ظqãßþíß~æ3Ÿ ƒ•1Ä7ÞxƒFDãr†ìF¦ŒÊ β},¬üjåg}@,Ôò‡”G©€€T{î¹gïÞ½ƒƒƒ/Ò†•pPH¯¡¡á¾ûîs †ìF¦ŒÊ β},u_ÿ÷"ù2oâ¶> ôô¥lv¾VÔÖ@ùÙY¡@@ ’ xˆ¤J6†\©3ë1.™í•:#åG¯q®Ífé+B~Ôp @@@Ê‘€¦ühQI=V~ôBBoë†@@@@ ‚°ò£ƒI=¥üÔs½P~4Ë €€€0Mà©W8«Ÿ    P‘8æGoœ&ÍGûôªšVä˜1(¨NuôH)?ú˜ŸbWZ°:‰`Ô    P©8æwIüÎË!ª÷7_&µ J"ÀÊo~?çäÖêCZðC[·~󻼟}hoùS~Õv÷O‚Ð:A~ XîùA'†gFÔ\]P'ÆWçÚ¶RÙXsIzBþEµMí[GñKÃz5mLRGÛ“è‹Õ“+*¯MJ—G-·ªãÏ|v†ÇöÍ›6ò&vjHÒ2?ðLû¨ÑÕa/Ì”(Úƒ™KmjØï•"ý¬­ã·êH|(›ì$}.IøÒ¾êH9%+j‡"`.ásšÍ}9ÝsõânmeRùf ©6SÊ%yc¨)¦áK.¹#Ï=åªj, Cõ®ˆéwÖ\–eêÞ“Ý™ÍË–E•¦Œæ]þw‰6òÝ“„Ž>êUD<–¬œ\m~³ó²AMM-7‘Àù§lb|,ýjþá([ýèGYåñ»;cû†öý·IúeùWc@\Q¸Œd‰þ[œ5+¿¬3ÚouiJª]/j'¤ œI Är'ºþSÕä‹êK7§šËV\™¼asz;’¤Æ!UÉ)º P¿Ú5•C‘NRTRÌ“. ÿ³)û¤=­c¶I£äAòQSKÚAmsl¬ä£ëcƤPiÕ@Õ0$2%m’A:HöIWI‹('@ŽÅ*y:~‘QvRÇ¡aãFÒeuAÙWs@=°÷Ô—œ&îB}ŒG{¤ jÈji^\’jIc Á²*Ó<–ÚQ*H¶ª{¡*óÏœæÓÕ³ì^Ί²­åô«t®þãÁTIYæÿäöuÎüŸ)r\RÆ™Ä5å)–›Je/âH¶iöxuµM'òÞP‚ÛÝVñtÆ?6+Šd¥{±ØWM=F¤ê»U[io=+ßKÓàfëq‰Æë6 勞¯4û=C÷^ݧ½8—úžþú­ã_üRü½¹}SdUÔD‰ùKÙùK|ЯQúM­Dýâå8 ÿ6¥3íwp Vþ"çÑPNþ¡F¦›¸¢ßâzÈÿhzN^–ͤ˜‘-5kR—ñÁê“UÿÉ‚MÉ ù—‚½Q¿Ý×Õ‹õ—‰Ë®”¹¦Ýª•¨¢ßî*¯M*÷ÜÛâÂ9qáÂü… ç/\¼H£“Y'HÛ,4Ø8½Ý°¶®F~jëêê×_V_O?Y«‘›*ìDÕ(2wé¢ú9ñÿïÒü%”º5©ÚX¾±ŸD­®®¶v]mݺuõë¯xÇúË/—_A~fiÝ¥ŠÉÑ[Ï qŽ<<¸pžæbžl²sóÏ"3Ê=…ƒ=•¤u\šTer¬-×Õ×ÑQ[¿î²êå2꫆™Põ!‰I}¿ÈÝ]¼ÀR˜üf‡ÕøU|’ÆZG(d€¤¦®óèD ,–ÏìžlÄÿç›gò&‘*Ú4y‘j©Ðpt"Åב´¤4—ª””:A¦yºH?HùÕ¬«¯_G× ÚŽœ>õõ¬òé¸pIœ?¯&÷ÒEš yÐXiîêÖê×ÕÒôñíA?¢^ÞÔPýB£‚‰ŸåL@݇ö˜¹Ú¯ªõÏ¥ÅB1 ©¹ÑÊüo®›3n˜í8ÖQíÿ¬ÙÐlÓш¹õåQgCsÑÊ®¨‡ŽÆí¸,%f¤Æ%uƒ©ŸÆöÆýÞå=Ü´{N ù;˜ã2|Ðop¾ñdžUVcB¿ýµß˜ô«º†*ëñ]ʪTEk$jiVú¥>¯Ä’p6Õ¡ýW‘é>VQRCqÒ1í'K -.¥t§²EmŒ_êÜ^ÙÐ;Ê]äÁ²t‘Sw#-.ÐФbEÂÂ…füUù n¦Y–We n!¥*}£I‡R+‘ªf}³ ÖÕ¨ ]м`D]°=|ôƒô$Õ–µ#ƒdM^§ƒ”– ©qZ–±h\Xqj¯æR=‡ôÈU[ìÍä¯v*‡(¡ÉÑdÉé…éfvIœ‡"…²ŠêÐÇÊ )dLÝ,Ðÿ©”ûÌÖ˜ï6)G*fƒê!«Jù±ŸÔPEïd€VFg%DVºjÜú$")K:ˆ$Yc™ kb¾…ôE’áj YyúGºƒøæ1ýË“bòÍårð­þÖèuä¿NÚåÑÐbϰãÒ»ùéÑÄ~ÉpÉqÈöúv?UIñC+hsy+,~ñ3MdÍY¹¤Ú“¨NTMUÎ-W•)ËL™}0ê?Ô¬*O<ñDÝ?ÿó?ÿþÿ‘:wë?¿xü†4¿u‰uê·$ß@R5(±'uA’Q6)cdœ)^²¢£{‘~£ó¯TiPÜXê¤ ÉsÒ?ü{œ*H=$ÿ‚ÈRù+wÀW´Ö|·Ë;^ÿAj‡LDòå¼sþT™¡Z«“ÙÏyN¶ÖѨèR kX:jèÿ|"¿ò dN¶†‚tºâŒ¡Ö\ëK7ªÒ 2¾•%Ë|Pf;$Ѭ6e–—Í©ÅgŠ9û F¦ôÁT"ýA.9>–„HÊ>fÅrÕ¡~F-¸D)bÅ-LJãCÓ׺ÉÀíÚ̪*O<ØŒ¦§é²6‰.’¤Ò‹Ü$Éû…]–ÿç?¸µœb50£sm²¸êSý{›rUU¡&i›Õ·$Ó ®òõF ‘áXªÂw1ݸäBÝ:šiжêÁiÕ‘©ažwZÇø£Œ Фkÿ˜ä‚ï ù÷EŽuè’*W?ÍõU+UâÖÖBÍÒ£åªÇW£_{Gn£#kÞ¾yØtóÄèËÎÁ­‰?Ë= -Åa;R·ÛÆñÆ ÊÆb>1O¥1§–ª£š˜}0î–rŸ¯¥L Ú: €•×]vÙeÍ_ù»ùßüá#{{þD„ÿ·fJŒÑº2Õ†þyÔÃ'”‰$±Á*M 'Ñîo¾Cµ_ÞšR LªŠR2N Ô–“ȪI€TQ ë¶¥þÇ“dÒÿˉ©nX.¨_ùRé_å%>¤ï¼xn]n—º¨„/í"•³NÔÉ_õ”6$1_Ç‘7u#Ç”_øoŽT~¤)9[_OIFMV*1C×5 RíÑhkjê)2E±LV}šÌ‹u45Tg!PC(>¿1XöŒ!åÍy^Y^²BÍ’‚—^«jè'2úȇ“¬íä¡n/*V:Œ~’¬•z•ÇÊwÝ2OO é?莨'•NÃçBn«>jŸê_M.Ñ’bžæ‚å, iš×()Ló¾NµÒ!P=½©ò?+‡ß{Ꟗü1iÿp©¿*žÃUè§ñÛÔ\Ý;ݤcs{5·G–蛣MÔ%ˆê×­&Ê ÅÜfÆa€5¶[ð¨Fýbjpûy Ù·wïÞüãÆ¯¼~æÁûëf_¬ ˆ»îºóß77Sc)Æøþ=­~ªRYnÄxÌÝhšCZås]4È_å¹C”ù8“)£ YѰŸ÷³ügœ +ã9û²ÄÔ¾²šÉÿíNU¨k•ࣚá€q";–.É?¤ò¡ÿˈ—Ôš:QA1­C’zú “C¤ÆeØÔä”f“CSùO]ðyh~æòȤf8à'Ésü‡<˜‚FBµ•?5+*ö&ý×:Ò%¦Þœÿd2OÊ*V^PþTs%CîܸÕBðL½ 4U¬÷¯½ˆ±ýü+`_Á–Z±ôÊ+±­Õ?£7Ö@Ó"!@µ¼ ¯ðLÎí½Î™3gföìgÂy¬ýñö^³¿õ›9ëÌÌÞç$ëÓO?=}ú´a{÷îÝ¿EEœÓA Ä@ê2pà 7äååE"‘NÖ‘õÉ'Ÿœ:¾¹¹YF¼šÜ*K˜¾¿&•ƬìI"\”ð”IØ àF0^"ΨÔ) Š¿gfe¹I\Ö‘%š±SVÊ•Bp.ËÝH•¬É÷ ÜŠÞD>—Ø™3¹ò$Ú³Ö¤p. ÂV;¨vÑeäþ$à?ô­áÓ_vH>àao¿ýö /¼B¨tvïÞ ó8¬q---š|iÔXèÛu§ÆœYit° œ‡ÞgBPôÏ¢— †2ŠÉÎ}8>]/¼5ÜÊM²ýÛÉ…èî•íÚÉ•@Èh÷1êì|29ë;ùtPh÷Š ˆÇ&ã”%ŽÀHÁލtÐÓº‹/¾¸ÃgŸ}vüøq˜Çékó…ƒ ûÃ.pvʈüè[í‚”³áËûá.È…KÔD´r¦|ì< HÙ<ëû"·mÖ2{<·È¼œ»9Qv¨v®”r晥‰<°Ëø¬ù·Úyn=ùÏ~±l}åÛÌÿèQ#¾óàäÖ ×ªž¡ÒA™khhèðÆo<ôÐCžÞ*¬ÿxˆ|? б³•ùh¬”ú­$äß2$&áÇ+"ÁÔØ+2ƒM¼OþÁë´R:Ì­†y94Ÿ¸~< &¯#3c‡A¶µÓäʉhü0Ãpëïó=ˆ 5ü0ðqG}÷ʲ¦#Ó((ý„È?ßãN¸$üàÁ³QB^ˆhÝ0Æt๠8 îÀ?<÷dî^fpXÝÀŠ©Pã Õ½+GMs6ǬÃ@·ŠíQA¸£¬‘Ê&&ä£ ¡5Ml—˜AM FcŽЊe#„r.(áD¨-›•†[ Ã/•æJee^JM%*™[¥C=<¾Í5 B‡2·¼Ì1ᕹEe’/,´šDø&(.÷>ð(HàêÎÑ£G]úPÃÉT:œ?²Y$HBßL(sØ+ðŠä _¿ ê]øÉ=˜ÏÙæÈé3-gÎFNžni7ø÷r’ʱ+«…%ao¯Y¦v†vžÙ~£–>ßĆ,?¸Aß.„$rÉ9I Hö#KìB¸×´ó ”3´Ž½É̱ ”ÞÜ ™¾g™9v½à …½Œ^îFˆšPzàî‘-,{ ö²Bt.»b•î/>‡­NzÏæ¢U>4ti̯àß 1?:vÞµcg=®xÈŽ™geí[?¹S§{Ö푞1†‘Ù»nr§{ÖB[ÂñáÂ.|˜ Ú»îž.“×ïc@kvé²°VÂ-8Ò^Ö.€§c>cš{×ßÛµk×µœ%¬èe?å ÀtØÈ†&¦'pÉ8Á&¦€­R*>;{e+Ãfg%Ëe?îȶà_6WªÉHx‰ì=+å¬[õ>õ­èuØ9óÌK@G–3C»A®V+ÌãÊ~<žŸ…cFÑSᮕ qu ¯ÊÖàBu™³ó 38£ùxäÔîÈÉÆ‰­Æñ¿më}ÂÚû×—`ª·â¥÷‰ÏŠ)±RhF–{6_yûòÍœ›}þz¥ìU!á7kF!`€â+;KÆŒ À++‚ù)ߨOHÒJÓ¤qˆMžl•ݧ*ÑÚARúAeeoÚùQÊyB¿ƒ>ënTcÊL“é'‚BpœJðJ!Ö¸¢ÿ|º5æV,"N¡¤ž‰pEäJT¾…ÑE+ žSp‡cHØž;q²%rr‡qú`ä̧ÆéýÆÙÇOˆeއbV¹Ò÷ßÏ6÷¯{ÇŒ¹ØJórŸ_2óÅ0f¿µyÆ Ah²yùe•f”ï(^ÎFl(å1Á1ï) ¯Êrw3žšeÌE™µìV– ;¹2GYY–ð†ˆ$2H”0e8½v‚$< ˜Æâ]é£‡Ø ¥í?gý78lƒWúì÷¡ÄA¬âï? çp¯p'¡ÜiEZfscŽ;1uügÝ G`îvü‘ã‹ÿ{äÄG‘¦'NiŠ‘Uå¾>xÐM¥+_úëÞØwE­u¬u|wiÜÖ¡­cò¼M–ú›?øk„ޝæúÕ:¢ ÐÚ…°ìÄc¡5SÛ ‚… M齕ñe¯e˜õÝñÚó–j¯Ñ³J³~o_;—ù =}ñ˜ßî4îé»°÷‰¦1øYi¬\Ù·KLiâž}3zÃżwgÈ5Ί6jö¼Û¯]¾¹©`ÏK+çÍþM/#VæŒ}•÷^q{t›uÌ ßšõÜ»¬Æaˆ¬ç6=2 Ví[³²J«¡Úš_ ¾xÌìç"×½]ûÈàÁñ—0Ö-csY.Á6ÍÑ,bŸØ©(´{Ú©ñž·ì­–­'Hú |+ÂöQPxÄ~—nÄA8dƒ½"æÍA(€ñ‡­cÇŽ°B„W= Pt~0çÇ Óª7ð®.D–èq ­PšáQZ¥‰ø@‰ tølû#µµG7×m6ËÜ£ßPzQ \³Ê‘k:3‹·ja¶f€ëo£±bë¾eÑYÛ¾=ïwÜ“*¨tÕuîÒظjçOÀþ‹©¡£ZÛ:lµºyžqí[ Ù+ç½û(fÑè›^q»S7X›B•ÓX%"‘|Kð)°a öx7n‘ù›î±VÃW.@{‡#*½'ÕÐ[Ä[c¼Ùõ}‚÷ÊzüúV’ï9GÆ ó&çŒýÎF©$–†íœ{-°Ÿw3Ë\Àr#3Ð6’'NÀ’2–ºø1U(s¯üÏÿ¬ØññáfS³òP_ü·fŸU_øÎ?*CO$t†5—{~æ ¾~§QüV­ÑkÀFñ³ëö‚‘¹|Å'îzõ¾.kÅ·–›OˆÀ*Ê£pôúÊýw³Àx僥+&ÞwõEÐÉÖ1hƉ«`ñùWã+°½ý1îÉæÇn @+€ ºÙ³'®*à&|f!x¿¢öO³­ 5ð¦g#³®[È=lœ„›ŸƒÆŸ@ÐÜ»~Þ¬¬y#›ç |áo‚þƒæØµ•Z4sv"á÷Zì~ìÙKp„Qde7p¤)ÛbH¥²]Zze»¼7ìGR6‘»Œ—à9sÂ_²spΟ ÑíRC+9ºRÿÒK/…ï±+›Ò@øñÇ÷éÓG™ˆ9›ƒ>hb½8ô7+x³³gš^œsà˜±»ÉØ»û}CíÓ´àV¬Vçõ=ûù¬a0Ÿ›¹ì½ç;»¼èÜQZzGñ&S{ðŒ]¯oúâ0kæWZZºB*t½F/«~®s~çYˆæ¹wq;öâúF–QÑOVMì{{lÕjÍìxüÊó^°Ag÷_Ûr3•`gîÝ­]¯8/j`M¿Íؾ²ºßuçAÕì /õ6‹R´0 z¤¡bSε]pîzǪ âj–Ì0XÊB” ù@¯ ¿¯¢Ð¼üÇ<Û9*ð†•YF求 ÝÒkê[í8áåˆÊ}_ðúء戉õ,Ïœór^™ ÔA<î1ðøsrrÖ­[ÜÜÜ=z¸I9%t:5nÛ¶m£G«ßïYS§N]´h‘rÇqÆ ðKÂÀøÆaÖ¯åµ=®Îü¯CƾƒÍÿÜöçÿº£=ÊÙœŽõ¢À?jݧÑ×4ô¬7×Çå‡j²ËÜâ*.ù&¨ h+¿¢&3÷7²5Ié3’[eI<5i¯ÁNY)W Á¹ —Õd‰’c“Æ›†F7ÄúN8‘;]– ^nÑq„ÀÓpðNß¾};( n’J (Ù0ëׯì͵oon¯±ú´°°Ðao´y~÷|Ò¸£þgN5Ÿ9ƒ_~è" %×J!E`S£ÏšäÐBz‚O¼ÔxVê{òð^1bôÊ|nÃÏ—ZŸÞí¬]=l’ÓCfî †KeôïRÔ\2Ïó,'¥ Ç(R¶j„Hš&;‡>`°(v>¹0”]Ïúï}Iªœ©*(pÀ¯éÂáp ©ÁÝ¡Æ1ðñǃQ$° :”ãIÉ8˜‘@±Œ×K÷_ï×ð…ýªQP6ù³R¦©ôïI(¿ŸQ‚ Ùh6Ç6X5N»¼f‚U¬zBDÙ½ò; CËNd )7 Œ"S d[÷nƒ°„}äè Ðd&¬~9_Á¿`‹q]bp™ê š[+âlŽ'ZøÛ7ØCî¹`ÃG§Þé0+¦/KÜ4éÃlå!iàñŒ1µøH@Ε¯¨7‰­ ÝP0G0×tŠsáªTóäVVF‰žve\^(»u4±S`H;5ExÂÒa—ØÝ¼2ï™ Ží0gš\,s¿À©08ì†cŸé3?v&.¹ÖøÁ‘¡ñãÚQAãšxsv®ŒBØAÌìUp‚ü#™¼C™^=0—­š¾Öx@+—ÔyUöíVI;flk2â›4~ô9O©RŸu%ëeF“ó'èâ]A“€Ü‰^Z eNŸ§f°*ðËwžÞ9´êG¹¾UvŽH4Vž°ñƒLU„p`8þ}Ê–‹`"çx®$ŽÜòÀÜ+£¦†^G·Ê>õä–ï¯ôb/ë­˜?$0e'Ÿ̳`Ë2e—zHéÝߛւ¤Ê“Ë\ù ØÇpDØüš&68\æ®t¥‚C»\ØÅ ühæ%h.;gú>èu™¦ &#ÔøáQ à?vü({ ô z ô 1k}ïà[¹e‡˜;{e ü@Ò‡“}f”$>›S#äÎMO0Öx?¼¡''v} i§¬„ä¨l§`‡ßN~p‰Ê;´ÜŒg– Ÿ)ž ¯àC£­l÷r†Ai¢ùò8•†‚PéÇ¥¥-ø—Íe‰#6&zŸŽ½Ã+°s—ôòTà9Z*;¹|šµºZ´2ùä•B ;vcTc"t¹Ü²­Þ‰¹l5M2<¦ÏØà=à;½ßøKå¹Ò@¡×n…pšžõáá÷d++Û¡’55Œ1'|7iôå&¼A‡W`%I8ÁKù]ÉÊ(Ð`a§™$¡Ì޽"äoÇúiU²|‡ðdèIÙS¾J¶y>níšx„vÝá ˜^Y‚eäf$Ö½¹{M€íIYO”×V—Ýnå^% /<‡©y¥Â·¾Lºgs Ç믿þÞ{ïùF†Ä1@ ´=ùùù·Ýv›W,s Uj\qqü§Ed3’Ä1l Àâo½õVyNçð %É–á!ˆbÀ+Tæ¼2FúÄ1b P™K±#¸Ä1à•*s^#}b€H1¨Ì¥X‡\b€ðÊ•9¯Œ‘>1@ ¤TæR¬Ã.1@ xe€ÊœWÆHŸ RŒ*s)Öa— ¼2@eÎ+c¤O )Æ€YæäïF¤X— ˆ{h6gÏ µÄ@Z0@e.-º‘’ ˆ{â?’Ž:™ð£TölP 1@ ¤!âlÎÿ>]âQÙ£5Ä8‚Kî* ™£”ˆb EËÀö_éŒê’Âx¡K&1@ ¤9Š2ç?ãü¹sóJTùw@–Ä1@ „Î@¨eÎ0FÏœ[Wš0¡«*ÊfGT@s1[T4Ê”ZT ]ëÄZëšË^<Ør¬M#:ˆb€ðÍ@ÈeÎÈ™^œ8¡YÖ=jb°ºîÊÅ5s’RO*Ö7@‘+¬˜PcéÖL¨ˆ.~Áºl¤ïäÈ ˆÃ»ÌÆÈ²W ~BÇæhCKª‘ñü £s¬3vç ë+ª«K†Z³9Ь6+Ä1@ g ü2…n&ÌÆlµÀU es´¹ùx§¼›ù56VNÇRè`BÍÄ1@ 80-sî®*˜+×òòèÜÍÈËÅ‚µ}kL¢01rFOÈ/_ûpæ¶äT,‘Œ ¼3ŸÍY 5Ë»¥ÅșѩœÔMÂû “Ê•ª1aÎôÊW T5'€¸%G· ´œQ#1@ ¸`@ñwZ­ºÝxcûÍ›eµwA”]‚ò!ð÷^j¼Œ0Õêc¨ÁÔä“_ü3Àph6™—ÙåÌ$3̓{çdFHØ2“?ejÜáÆÆÌ䋲Ö0Ð=;úá¤Ñ¡&b íˆ.ZÙWYÃ[·¶}.‘ ˆñ½9úÒ¾‚Ä@ê3p§*»ÔïSÊ€ ð³7ÇìÞ³ï_»÷56&R‰`àNxNòt ‚ÆBÈ dgw¿ô’^—ôîåÛo 2×­[ÁW÷º¨gwßáÉ0͸sâ7Ó,#Jçœ3°ÿàá#G›‚ÀúÜÕ¸ ì“-1@ 82¼ÈÄË£;­Ž¤“1@ ¤b™K-ô„– ˆGB+sõó¯Ç¯‹Áë´µV\^¤k§ÅŒ,Ëè%ü'à:Ñ­2P›Ë”€Ãëç×ór&Iˆ%(qÊL%¢P•ÊʤL!TŠ#Γ“Äþ‰wTºJÌ(j"óIb ɧÌÁ›¢ÿò‚mø@Jd1.öÞ^n+ÛòL¬”(…*^Æ.Ak¦S×àé’±¦"ó` -ÙÚi Äg¾mÍU±ìe±ÐÛ –?X y›8¤myÏp¥G•ï¤%žØX¤ ê)œÊ‰m—±¤È$ÛóF-Ä@²0N™[½Ü([úhn4)³¼`9Šg™;`àÆºmBÖJ¡?fê?Ú2¼`<"È}tƒߟ×+·hs]ÊÕt}`GŸÃËÊ•âìXíÊE8…“zç.“õÉrP’§Ì-7b%ÆùÉë/´*…vôòÜñ†zÞ£·óÐê­cñbQ]ø_ìT4]„˜UΩËdjÚ€d9(IˆÀ „Sælal,ê»k°¢dÓ=¥ÐÖ…ªy0ãLá`U‰Ñì7ÑTΜd/Ž“Sp°éŸ7|ËG¸Û§€j®Du´Ä“²Âä>ú„ÄÎ)œ+'RJ ä­G²Ä@x ´r™‹ïïl`kZngzJ)aÛˆ­ÍŪy¬ê¼.¶7y¢®¿Ëm÷muÀ´ª-±ýÆ'c—¬1ØÎ¦‚(§p–‰“ɯ9ÝV!YŠNb <Â)sÆòÕ ·*½äæ#`êb)§ 0öö©ò> ÎÀe["HQ@ü Ïc‹áþGi¢Å]œsù¬ËZ‹duŠ$%‚0N™KÜ3äp9í‰AOÜ^âf'.s3Ÿ`!×®zQÞtéH£ûYlަQƒ^(øD|òªÓuÝf®\_|q£BßC8Ή°ÍæªËÚ‚dE‚$"‚2N™ã÷l²²Æk<ßé»Ä|#z<“·M¼S›˜g¶‘ùh0cÁâ{] óÅ Íö抮±‡÷пî .} ªm9hŽ-.·õ.îĹË$äåâ}ˆí[ã³¹œÜ¼ê­Û.Ê¡>æ—¯ÆçQ”O¢¸ÈTˆb€P2n™³ê\5»Ç O™ÔMÂû “ʹ𜼴.ßlÈ™^ùªªæ·ä脲ËHH Î ð«×P­X¯§3P½¸+S\Yi5JrÃ0oW”%€ ÝH`„.ˆbÀ‘(p¸b ´7×íÆÛoÞì,¥š :öÎ;)'2óy¹Øsl{ÎÏljÜáÆ4ÿ£…ôÇ.2ðB)§ 8¡cÓº÷æÒ†&J„ Rš6§ƒ,¨Ì¥tWxb€°e ÐÞóº{ϾíÞרxØ6NÊ6Ü OýýöæR¶ÿx1ÝýÒKz]Ò»—ËœØZô±ÒùÙ›cÁºuë1øê^õLÏ¿ÎyçÄoº¤•Ôˆb õØðð‘£M.ýc]ã+]´¦ksÉ)©Ä@k3àµÈ@cb ZæZ;CòO Ä€'Ø„ŽYZ´zŠMÊÄ1@ ´Xæø@¡Íæêç_ãá1m­û\ÖNËâÕ£—ðŸxxq ˜®Ÿ_ü¹{t¤I )Å?•cõ.œ25¤ÿò‚mÑñc\BéòÁÒØ%èkÍTcê<]2ÖÁ]!³“;¸£fb€HIäJ΢uõr£l飹QNÌ•Dôä>ºaƒaÔÏO"H… Z“¨t° y6·Ü(+rQðæjÚ´èBÖZpʯyÆÆÑµ(\?íüŠ6n,êÏV©Ìy|6WWÊãñô‰b éˆ.)cÿ!Þp­êÜ7nÉ[jFÛV¶eî¬Éµ¥RZ?ÿØÂx[Áò`ÓmmiÑ@sI»­Ì(Z5`iÙðáeÛ6°I¥ädã‹Æ‰x$Ä@ª3€“8þµ5ËÜðè/w|ÁðW™:YâžÑúÕËÍÙšug¢?LÜ–¯®ïŸ7üÅqYYׯ¿!â¸uÑËŠ­ý½8÷ÑI“ R‡¾ÆêpÊ\EGËÁð¼þB{T¥jËG̶þ£-î¦ÿ¶ŽIDAT²fÜ0v;œ“Á´ vÝ̳'ê øy¼«‹¢M„‰b ÀJ‡HÃ)sã Œ"s‰‡ù4È´Õ†±±n›%0ça˜{w²ÄÈ00&…muQͨ+î?~fîÉM[k¾š[qc—l+ƒZ‰ÁdC&QD×hS1@ ¤$¬À±“pÊL«`» ”YYãŒ5‘%ãa‘¸å\b–®)e‰a©<Ôågò¢š z!ˆù¨Šµhµ<æ>º6ą̊p½ôѱP0á §uÂãxèÎ\á2kEÄ@Z0ÀOå ¡p(GæòQŽ!sjW°4²!ñ¬,Q˜r^àÙþq9óQ•%\sbÐ\®5j8%1 óxMÀÇy¡Sb€Hä©dÎl.](¢<ˆb å07ìcîâIh³9‘|(——Êц®‰b€‡(p°C…¾h6§ä… ’6§ Zæàï’-7ÂC éÄ@ð"hÑÚ¥s‡“Í‘Oö§á_ùºÌ0Ò2¯tý”Kæ0Ý­sd•¹ŽÛu <¹m?ß)º°On˜„ŽÈ½ý”¹H÷îiÿgL!ÇL;”#1 ø)sGvíÊj(Gb€HEØçAoA¤" „™ 2Š*sÕÝ”,1‰ P™ËÄ^§œ‰ aŸö³7—!QšÄ1Š °/?0ð4›KÅ~$ÌÄ1à*sÈ"Ub€HEü,Z»ÝxcûÍ›S1[ÂL ^h4èØ;ïxµJ*}?ejÜáÆ4ü‚WRu !’„”û.ÿÛ$È!-Z“d, b€þ apJe.4fÉ1@ $|¥£2—<ýBHˆb LX¥ó³7Çùå¯~å×·ÿã?ܨ‘1@ !2€•.h™@S¿óV‡à!½æææ–––ö3Y$Ä1@ ´ á,Z+ÿ´ÿ÷·Ô/«Øôä_ß½ï3ù‰äxb ‹FeG¢*ù‚í¨E H=•»X–øÎÇ“+÷ʲ¦,ñ™ ý2N™ƒè}.» ÿ}±OŸÜœ+*ßÙþ¿[ölßyÀ¾ÌU ­˜PÓh5së&©
F¢«XX‘6,*,©®._œŠ’õEÜš7öÄ|$,jÍÖ¢"Ëû¨EUªbN )6¥ŒËLIܶ¨*ŽPœ~Ê~ÔH CÔ´/âsáYKà$úÁž l*ÄrÅsÈÏâ/–²[ŽWù1ÓwŠ @ì» ©A™u´G¾H‹éhë‚hìD¶HŒ.+/+q%Ÿ"Ô„ñ…©Ê"‰H0Æå‚ÆwQ¡%Õ|oÊQd´2{ç¼C…Rí2œEk¯‹.8Ödü¿÷?¾ø¢ó7Õìúôàñ>—ô¸aXÎéS§í O¨š C­a…£ F![ÆN¨(\?zñÜüü¹5•ÓqÎgÎúxIuÉÖñ±5o)«—U Jò^µÂFÉ‚„¿êº+£¼ÔÀ“Šõ0.G–YN,“:ÓŒ²I†éŽWI£m7 ´mœY_ˆÞëlÉ-Iü+s±Þ œXi Ê9Ó‹§T[© ë+ª§Oïc][ލæÇ€ÜMfG‰rdžc¬ÖÌÍ·ðªh)7Š£=Ãíj¨ ãLÎÎTЭÛj%!*»4ë©5 aMITREIþµK4Eäᔹ޽.X¶ê³òýî>¶b-Lå²îûX®vê¬ÿ{<æbÕ yæ¼Î|Âäͪ{ðï\¨/š#îÌ‘rs¿+óË'Aá\?º²±,¡=Âh¬—ì­…^€a0ÏðÖ«4«špM0ͯ«O¸"~€Û#5Á¿2¬['’òÈ™s ³Î%@7“ÓÀ–œD•™U”U§È¶R?( )²Žõˆ²#L$QZL¶ËWG?´äq"ߊrPä\ïV‰DÊ:*àûF¯&GA.¡U°‡NÎ]‡Úåš´rXºâÃ)s‡5}û&púƒÒ7>ÙÛxQÏÏ}x(s;ºÛû9~JõV«¦M‰Î¢ÌâgÕÏG´to…z)®+UÎî„$ŒH•¶½Löc‡DÖ´÷j¶¸àÄܨX_:±pè»mu@v%BrÌÚI!ÿJn8$BŠÍöe%îÜ& ñ!u;ÔG¢IcN™;uêT·ó:ÝrÀ,Ã, ß5(ˈÀö\ǶeÎühgU¨ju9 þ#;¡Ù [±}‘e°¦[v~òrñ}²}«¹bmÆ–»°_d-ZñàšÌOå˜]¬9ÑI¢¦.æ1:N,d“JÔUζ&¼Å†+²’cÖ’BôÃÏZŒ3¶ýC’Ar½[INn^Lbà°á} „ M®ø”ÙK„¢ªq M­iê6Ú–!O)uhß®ñ³Oï;ª[‡íÿmxÿ£ÇŽEZ"íÛÛú‡©Î«E°:Å8ð)jnÀq2sOndNÕêêIC³·¾Ê–Ÿæð²$5WªšÛ/C‡f—˜KšJçÏyX”ÂÄ/ê-®uß7ÍDÖoQE´Ùô> µ-€É-IS Jy0rQ©Jß|“ÚT9Ü“J€ÝP¯ò¡”¹À:%q— ’cÖJØ(7aaêQØ2$%r•P7~ôn‘F|ØäççÂhäÇ ´ò‡%e:TEhÒÉð6«+kêÔ©‹/æÛàFìœ9sŠ‹‹í2€fa?Ä_öbß‚'ðå0‡/?ðwsá[ôe/;2IN $9üû=É¡–––>ùä“°¸d8;uê4cÆ ÛÙ–û|è»\î¹"Mb€hm`¾%üSÐ2GÓ´Öî3òO ^–®áÜ‚ð ‚ô‰b€h3¨ÌµÕˆ Î TæÎ ï• ÚŒ*smF5"ˆsÕ¹sÃ;E%ˆ6cÀÏÖH÷î)÷7ÍÚŒP D ¤ð~O­ŒØmÖ@ âÈ®]©•6¡%ˆLf€­™Üû”;1 P™Ëˆn¦$‰Lf€Ê\&÷>åN dTæ2¢›)Ib “ 2—ɽO¹éÌ»åJe.»™r#2œ¬tTæ2|PúÄ@Z1 üYM*siÕÇ” 1@ @¥£b¢a@ ™ÅÍæ2«¿)[b Cà'tTæ2¤Ó)Mb ã ;­×å”01± Ðl.c»ž'2…*s™ÒÓ”'1! ÈwZýüÞ\†Ei¦:«j>YóáîÝ'R=ÄIv—qW_rûÐË4é”——ïÙ³‡ÿC¥åäo‚¿²Ú»wï)S¦ø€Êß‚ 2çƒ@2IV¾ÿñÒêtõÝ>ß5຀Øx´éWï~ØÒ™xM¥ú¢Å‹»véòÝï~÷‚ .P*¤œðÀ¯¼ò ä5½°0x*sAØ#Ûäe`uíîN#®ËíÑùÙ Ód6÷ýO;×_wõê·7Ù•¹Ï|°¸8;;»©©)y;Æ ²óÏ?ÿî»ï.--õb¤Ð¥½9)$Jö>Ùî¼®Ï^x* rÁ Èò²ËèÌ™3PNž´U°3LZ9äA^Òl. džÔ °¿Ô(Ãù¦YÊ^Ó¾æ…ÔR™ oˆ‘§äcÀë›$ù2ðŒ(S8ÂJÇó@‹VÏÈ R…œÚ„üZY›_Ö1ò…†˜ï†FƯà"¡1\Žäû gŽE•þ|¨¬˜Q)8ÉóµS ;­vÌ<Ýhii 3¥7ëy—ñÊÁƒß§;:*òþºÂ+ £%ˆÁÞ|lèò^9ø“o˜×aÆvå Š†°Ê5«nÿà:HÅÌ g"+ƒŽÞ #†¼-ZƒsH’”ˆaNÂ×°øùºgª×Þ‚NûN[û»­,¨šfV4«ÌE"Û½‹S /tÔdäèÓ{Ê ëVÏütZߨå-?>pÀ0©s åB!ÆL(Î\ÄKPaÏ Ó¢Õ+u¤Ÿ: `3k]ÇöÊ×ÞûR+ {iÍ›¦Àä$òæcùO|éwk¦ñ*aŽûpQå¬Òî逼Œo”@¿ù<~=ƒ$¡„]¼8&4%æ׊J@-j4vñvP°˜ p„2Úh6 ä$8{öì‘#GBCvüTóÐË/â=^Ð;×øÛq@Ó{O_ûïf¨×^ÿá°›C‹)8:{ÖáQg?)øfÃÌ"1ذnßþCK´«|Ò÷l~Þ€ÿVh Q2ìëšôïg~±}»™ï[Oô½àÏß[9æÛw¹¥3}Áp°R9wOÐyçç^5å[Tæ¼rHú)ÃÌ!|lTÙ¦ß?¨ÙÞÐÒÿ ®†‘[Ì=9X› yüÍåSvÎéÿùàˆ)ð6o#:;Òºöœ2€D7ï*/øÆ>@ÑÇa£12äñGXîÑdÇÞˆ<^ŠcÄÿÙ6J[AMÍÿÖï騣!h§v®M!ôFZ´†N)9L"¬–$Ó/ÞàG#ç¼…þv”ßõÐG?øö ÖÔŒÕç¾g`ühVùް‚&øq¼õÁ{à>#Æòßš3`$i.ïc9ÛQÿ™Ë1–¯e÷ó(`uWyˈ±C^©B ðcºá­¼C3§V} vТ5dÌ Xk±0Þðú%Oå]u•åsHɺe÷š… :Õ‰®ûÜ;·dí˜ÑO^^÷Ôaƶ|¹xËûH¹Ï½ËÖE&¾ê¿oÁ’º§n0þY²hL4S3×èl½[‘°‹ÓV÷Âz>.1ù¹!òëEø :^R™óÂé¦8µ òõOnÙòdÌg¬¤\6ù׿¶œ³àjËäøeˆ§6¾SŽbŽb53I”˜ ñãùòt`þ‰#T8¦ìÆ'•97,‘Nª2àcj“ª©Æpg`ÊŽ]FeΑ"RHUp#;UÑ«p;Nm20e™'ö5/F•9™%’¤½ºwþ´éäs]{¯Ý¿Ò!Ãx¾åR£é$äe—NÇŽ:t饗~üñÇv:©%ïÓ§dyùƒÍê•9’U²30~ð%¿¬ùû?¿ú¥™]¬oj¦ÁqâT¤æï—]*={ö\±bŤI“rssítRK~øðaÈò ›Ê\@É&=|ÎúƒÄ@ë1ÀÿÞ•¹Öã™<Ä@R0@e.)º@Ä@è ° •¹Ð¹%‡Ä1\ P™K®þ 4Ä1þ·IЕ¹€”’91@ $;Tæ’½‡1@ d@ñÜLùòóóKKKº&sb€ Ú’k®¹Ê>1Ç?P¢(së¶Ûn»õÖ[ÛÅJ¿^'ž”5¡=ùñ¤Ì‚ú³Ò`¥‰/ìœbM(Èú¾±ùc‰•6Á¼];sÁj–¹·ß~û¦›n`…ˆÛwÂdØö ð£Dþ† 2 +¯MvúvrÀ£lR í”1)¥‰R¨ÑøÑ˜+™tãYîJ°*^²Wá’éËr¤HBØ®‰÷£¡BÙ$ü¸‚âÚÝrË-¿ýíoíB’¼507º5ü†áFà FÌ1k #”Ê÷Ù¥ÓsåÇ T%6—yyRc‹%ƒïnv.qT¯ž‚¶ª²<>¡¸ 2¤Ý¾ðŒ5¯Usd€¸¤­tˆ“³áÛ€õ <˜øÎeïdýÛUÓª÷ï~ s?šÝgáRS‹¯VJ‡|ÉcU4… hׄšÂ8Q K¨Ï¢€Â† àdàÀíúöíûÕ¯~~Ø€*]X`çGžÄÉ;Ûs"Ç2ãI~Ÿ/"¼9ÁàþÑç¹õ£ÏQÎ:ˆÄM,}%b­ruÓ4f¾U"H‚‚­]¾(‡e nJ477g}ðÁ§NÚ´iS]]x™ +b€H`?jÌã>÷¹ÏA™ûÿUŒ%Cw?IEND®B`‚PK !0MŇT‡Tword/media/image23.png‰PNG  IHDR©–Mbët pHYsÄÄ•+tIMEÜ 0¾'šTtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/05 15:48:31 lim_j SGA250167¨°­ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí½ €U•.\çôéî<BbB€À &W¢"P‚† :üBLFü#nü‚/@2HÂ\BD›Œ!"êÍc$ŒE£QÌ’ \„€ „WHºÏãÿÖ^UûÔ©Çyw÷éS_¥R]µkíµ×úö®ï¬½«jWê…M×Ìš~ÅwññãÞ{¼RS°`·ÒÌß¾2Ÿ’¢ò–Ÿþ„®Ü,*bÐ+Âm<†Ø<â³ü§©†ùÌKŽžRc.X¯Hྴp_:%Äg× GÉ>V,ÃÄ¥‡%Ã)ä kó§ôŸæ åzć֖æA|Nk^Üå÷Ý6LÃ}ˆ ûu`E#,ȯ/’Ì Ûò%ößYq”,0ôî»ï>ãŒ3üð†Ålž2§üz|ðÁ÷¼ç=ýçHMšÕÁŸÿüçwÝu2°#Ž8bøðá™ÞÞ­w~wó)“'}æœ þîÇïîÍ¿ðzÁ §|?RJN‚œ¢g"¸” ¹:œLÚÁ'M;_ID{Ù\G¿h,H2‘žÒ”ùù30mªR2Jƒ’üÚ ¼&e(Ï.îiCƒZ—Fk:ÓёΈ%éÎ.§«Ûéêt:âj ª ¸ö¶­\*Ðü”èâß÷§Øô°@pÊ —?[F-N•É[æT¤N{%—É(|§¬ç8{§Ïqz÷8Ù>§¯ÏÉÉ6‹ðOb@éŠL;DCÌ çFØFØít;Nz… R[{¤= &*Ôzµv_wü§ŒñrÁiv»õçŠ3̯Ç/ƒô¸Sqªú/]™a–x`ÅŠ( ô—™8ñ¤3ÿiáÅg}ü˜w½ïÍ>§£³£e—’°ç…`}¹=R€ËA…¨Ë^à/ÓG"s2`À\*ŸÏXê´|W,À-Í”RHKÿ8vâj:·^ËÔ}sh¬BÀèjH×Igá¾Néçê:¸?¶Ö¿ÙÑÆ­ÆØj›¾ßH•´òþŒ úâ/·VUeÌ(s*²mEÈUÆýFBC̘-È M½Š\§“Éfò¹LNb@ióXž2ã-ØBÀo‘2ì¯u¤5 '. ëkýÚ{¨)r9ëÀÀÖo—?£æÕ\ Û>@ @( àøñã3?üáW­ùî±3Þ·;ïtãWÉ,ÐɳÕ}›"A–I÷ÎKÖ÷™á*“˰˜4ÉenWòª>û#( â áî®›zåÙ\«jŠ˜a,‘ÐÍ.-Ÿövµù…¿WæR/Í(5¨×zù Cᬽì㌵ô‡ŸR,Ò¨:|§t~3ÒùE«MÉFZ{A~}1Ò‚-è/-܇´)*j~ã ­;=ŽžÂì("P¡ªG··ýû·ïÛøs+ÊÌ÷û©ZQ¿:U7ጠ?pßO<‘Y»ví§Î=ƒ²ÃŒ”ÒŒ%Ëxv'¬K[†åKjBYiCg^Uë „™¡;#¡ôçqdQ:6»!V½ßbïoèšëTQ÷JÐæë¿ü!@Mh…UÕ”½¼°Z)Sw¹+ß*·W„†~HÇÚ•]‡¬ÚÂe+MSÊG|gÚ¾ôé¾DÆ8¤e©©‘^4’¨jã ò3J±^Ü÷gÿæ·Vø¾»úëÖªÍý ö?}Î'±32ï7¾y×î{@O}ð”("œ™±¦Äyóæ­Zµ*Óë8Ç¿ï}¸…_']leãP‰ÆÒM˜>l vì~ W,[…ìu3E6ÚÓDÑeBL™Y‹¿Ò$¾Ô„ðuh/†Àµ¸HÊ+Ö¼e²øË-#.¥¼æògÃÚ"ÑðÛ£Í- ;h~¶u™^Š·!Ù˜âÁ€*¯?ÀÚ&½“.†a¯h[ãúó+´§hÝNAýÁ} >K²Ê°”¦z '÷鯓FFnÍ•¢«5Ýâ–ª´ ¬žº8‹K¯Æ ”¢îhk³…V“7i2¸öjb?>ämÎýdCۊдÐ8ukwÔ@;‡m×þ\¶¬§tÓ,@¬¨õkV…ª ²øýÕ\þ¼ؽ{7¶gÍ¿Û;o_îúk:h~šnS¬1Õï Öå)ý)Ãú©g«WUQR¸/À‘dQ …3j®pºM « »@—º'æ¢ï9e3•—¯S „Û®‹a´—·=àF°cÛÆ%mEØ¢Ý꾿û[»moØÑÕf€cRî±64«S‹€~?ÚB5ÑoƒŸþwæÉÇ+ëagãýÿýÚk¯ùMõëÔt¤hbiXç§?U‚íס3.‹ÛÓ«žÈ Ñ:öoýbº¯[È„ÙÍÈü˜_Àš¡2V­mj7¬@¤V¸üÙ8h’–®—Šm÷R;æ‚´íØ}ÖÔ¸mÆò¹ì%Zò#ýy«,7®¸¢=1ùÛ¼æò7-Ûz5Q¶Æ4® /]‘ñ#\)Gý絊‘ßV‡îØt=eÝÿÔ‚3±þ{Ïw@|ÿ¶ìKÙ,FÈ‚KØþpJ0O̱¥¿oÞz½ŠœsÞçšN|Ðl;»¾a צçþs.žñÖ¯ýÎØEŸ¿ÃVל·À)M±’ذ+¿cý™©3þs‡«’;ÖŸ‘I¥°ž¹~‡?c ÜâáŽõs†¸Õ뎬üîk©T©‘yDÌ.s×ïxvÝ©þ 8“¾Q@ˆ©²6Iö¹/»ðJS¬{~Z}V…erYåed"OŒ È”?©ÐMDPfŒÖ_qlå‡yÜOW=ÔQ?d 4¥<\Då·gµI–³§®sáF—â7À} Xß²®Ì™åŸ} ·zÃJÂÖU#Î¥)èhë'Ð`:žÀ“ÅÖ™îØ_°9ëž]}êþÖm*o[ƒZ YÙ­|¸Í¥ ÍH—±³VoºaÍtgó]³Æû›Qܾ¶-ÿYO“Û%±‡5줾¶9·è›aµ<Àåy/h”oÊ5”Õò¢ðTk_]4å0´u?¶Ü&"䧘šÔjƒkÂt)yœ%°hãlUFySj0›ïدð2Yj=Pk›1vtq .탫˜æëAæÒÏ}_D‚Ø·J4¯Š…[EM¦ê]ðl7 ö]zvšr£Ã#OcµQ¬­?„úkwmŸÀû´?wPç¯x$ôd±£¿Ÿš‚B•¥Pk£Wœ/¡däf¨¼Ú bPX±ÁùV¹ß`½VYÊ ‹ù©'’2ÜdéaG* Ø,‘å†@ Ú’¬©š[Ö\ñ¶ k«Óqs;z8¬ÒH?8Má¹O›è§<$ZšS3üøc|ÖƒX€øô§züåÖäˆßÒë>¯Ä·øó×aÚ°Å>všHi­N¬¼§m¶º¯‡¨`­lôRQß;6œÙ•Nw§ÓÃÒé¯ß!ò;6œž{ÓsG¦ÓËqrÏmø„À*‡ÎsÎLH§qväÜ ÏýÏl˜»W:-ëg{„ûrxõM^¶BØ bÃçÞ¸|nzxæ®N ësž[?W´A爘Z˜äÆÎô›MFìw¤o|ÄœzäF3ÃA:=÷«¿²õñ܆¹njúÌ Ïù«)b:–A™YÌO"º¿7¢-˜%mOEdÚIž‹%¿ H´^©@NFj®CO8KÓ5«·ÚÆì•‚ÇÂö fuvc5ïºaE:V´R½ŽÐÔíE$Dé6»LŠGúN…ÕjŠÝšv.‹êÇú¼×]³+vl¡*`Åʤûµ•±O´\{õÿÄ"†ù°ÕC¤ÛGÿÊh¨þ”ôyñL&HÇMx_‰8DÞ3û¼ˆåôµÏÜqàê·Ï.ÜóLþƒû;ùç6Ì?àÀ{(ÿ™± ˜5—ÿrퟲ«Ç?¿áìfOßœÿÖ1îC¿[vàÿ3}óKwSpž»ÿã,^ûì¿ï¿jòlgõÿÍŸ<ÎùÃMé¿;gnV^”O;Y³{$Þ]séƒÿûÙ¿}ÛÙxæsî¼ü¯ÿüÖÿúÄóÞ½ù…;kÓNß_ŸÕ OãVñÅîã¦^zÃæüÅÇ€‚ç°Æy·xòÈÌ~÷æüjôj1ZxࢠÏ~gÖx?`…K¦¦/‘ÓùõŸ‘ÑCg´þjݳ…S÷]©©ËNÊûzÈ%âmy ôg›;uß¿ÇÃ×C€ª°@Ý)Ö˜H 5•‹*×MK#ƒ^üNcO^.ÂPµ(“·9Í Evê <Ó§õù2…1ÒnËÞ@Ûfáô¥¾D-E· þÚ àµ_+k–‘ »Ë–ü«–bïoøSêó72WF&¥Ñô{ˆn]¦œ\ÁùÈÚg¿5k¼@€hgù¥…þÀxÄüNaì¬Eÿš:á¿9÷£hs¾½ôÔ1YçÙ‡n¿÷£k¿z´™èBr<òÓK!:ußÿé}ìól¹Ô¹nó‰ûJë9â£ëNû\O>+AŸÁN&»èã‚ûöˆIÎéë¾rÒøÞÝΟãÜñì3yö®ï͹ãÚcð29,;ûLXš7Diš&V½}“wžÛܳæcë–›‘»ñ³.¿ÁY#{üøRl§¦e+Kê=ϸ¯t¼Ï ù\qg´:kÖp·—pƳÏ-:¦„<½3íö7p%„ÙÍ àTøŽƒ£¢¤¿Üp¡qj+¦W,×j(ᾬÓÛ—ÊõÊl¸p0™Ä::¤éʼAJx—³W™y44¯eÀ’(:ÞİmÒøLužÉd2è`¢'äÏï¯A5æä¼÷ò+o€ ú¼z麮ÓÓ¥ ôjÃ)5)_\³Ùñ&¶LÈ“E°nTÞFZI §ä1SE/êKnÒ£OŠÓ}YaI0•yÑÉAuR3ì¡5€Ë<]Høò/òç)oôÊlRéÔ™CÁ¨Â‚é]œæ@ËÉм„ÉäTªÐÛ[ÈJ8ß·§=‹¾^1¥ sgôõö푟Z§öîëCsT}R´¶3msêQ°Ái,¨FÖ´u{|g¬ß±º4V¬IËÖ&6Ú¦[nj"1…‹«5%ÎìZõhCÒ­tfÑÔ{e*4[Ìß’3MÙ̉¹4:$îÃü˜Ü×åä3rAió“ˆÏ+»>Û^‹v­Ž„å¡˰aÃöìÙ3bĈ€þ@mþÓü¹X­ÿY»oÙ0 n!Mô"ì—?åÍ7ßÄtU‘2iy;-`2ž¾¾|¶/××+koo¾OGhô××—:ì¸RŸ›ºâa3yÙ³nü\áKï;ÆDÁæ!•¼3æ¨ùþÞ?\¶n‡ ÞÉô>ǼëêÔß{ò}ø—E3ÉåÆLú˜sù5?~ϹüîÖɳ×Jf3šYr¹,”ãÇ4‹_"¡ÞlïžÞ^ü—ý\vô”Óÿá{Ÿúüºgq²½Ðöq÷í{ÄiÎ¥?}±ê#ÿ6Ubº¼3~ÿw;ß½J7ÓûUÿyÿ Î¥Se8°ŽáÌÓ̹ûÔ‹*ŽÖ¡½u³ ¥ê01Ђ¬AW‰TœÙUf÷‹¹ ˆŸc3<*ÿz{ûÐ8wïÆºçÍ7w¿ù6»wåñĞݽÏ1}dG»6±»Ôm›V.Äe9ðÀÿüç?K,a~Úýú•Ô4%îO´õî'ÄôŒt %Ξæ¦?ýôÓ&LˆÔ™–à$øÊ峀儣@T¨Ø>Ätˆ¾„eÀ?½}¹#ÿù¡5s¾øžô¸é·Nœ]øî3Ÿ>ÚÓ)“µ ãfÝò‹¯­ýØûïÆºòwÙ#>ýë/¤hÜð·¿uøÁc»¿ñ‡ü~øÎ®þîÙ‡w¼mßi]sÃ?@zÇÚ& Î_ïÿÄ©_pœ+½à¾g@ǰK†9û`™˜æ|ïÍ?ÿüÚwÀ^“öqè-¿ËõID)fùÐÿ{­ó…cÓc:¦æoÈ:ÿîâg×ιtj#|&Q–c.Þ,ìçÞí(ÞÇð\)ÿ·P?kÙZ°ßþnã›,ôбÍ]a° ÙKZª¿Â«”´å–¯¦ÀÙ€‘þ³U–[záŠ÷WŽaA!Á=²öõîîÝ“Eã6ÖÃê6òZì.c[ËÔ¢^dpzè¡?þøC=ôꫯ"pÕŽ< !ê¾îØCåJ ¬Ö‹nÕ¶fYX«GVþå—_þýïÿÇ?þqâĉ‘JR;û¼Û¾~Ë ¯Éô¢†í“T·ü˜IhqFÂzL*3rKXú¨:Q•ïÇL”˜ùGe`M‘çÚ=;2fz{¯ }]“ÇhÓ'£E‰.²£CÆߢOŒJçWêÓEÊ”‘Ò×ÀªséVZ”ínD¢PS¢VpMYÚF8²Aǵõ@zdÞHdª”¬R,PD™\‘§,ya·tßÜebºÝ{‘¾ þ£»‚Kϼ ¡J;ììÊtf::»:»RÃG¤º‡;ÃÍtj:ü‡mɸš‰³"A¨Æì¦4E\aгuëVLá¾sçÎHclAáõ’ çRɰ¼_²üٰΚRöÙgD|`v%.^`¾pá hHB]î¢þ ³ElnªC¨Ðœ@í`pÍÜÊ’A6½«Õa¤ÌcN&r3 `„(ý /‚“PJ:m΢Y¤A|¢@K4ôgÊ+ä%ŠÁ4§è ë‰èß!£¦ß+–HDzÒù6LW$8÷‡Õ<]…XÛŒ—~G@Û±¿¡[ÔëAmb•ùÕFf©(P&NÅÙP«­ÈüÖ{sÖ“––Å*S7wæ²fÔÙ\2SÀWdÎzïI}ÐOº/(Uð#-3ô¡g"m+sÖ~Œî&$ÛR°cQŠ´Êo Û,qvX—­Â8Éf¥cÌp_·0ŒòþHçWLe™ÿ&Ú2O0}•Ödq U¯ZOGc>[—–Œ“K¸IUy¬„Sn¡æ.˜´!s+ ;P…¾0þŠ„W¢Ûµõàf7ÊAÊXìc¥#·A5 3ê1 ú/Ñ2L¤’~ù@ÞF-SnyµÕÛ€öƒíJ›ð º½fÎz]…ø„L ,Ú7B&ãty#}JÒ< d/ïò¶Å¹\‘_ÊbÏB_•Ö²µYOY€¤Zn-ôï”ÑY¥aÍË‘¡†|=bå#T‘0 Ô“©QC7¨<Ý’1¤fˆaE"Xä(‡ÊžJRFNóZ%šQËrµ`èÄ|œó= "ÕÄ|b‰ÕcIÐË£ÍzìªÜ§AÊiKáN³ð_µêl$o­e5"¯íG›“ ò™–Œi¢sÖK[5çÆ‰zsC¹Ï6E? Ôm[$xªAåÈ®\&i4dè <ýi¡Èh«8œEešem}nÊÜ¥¨Hý4ÜR*[q࣠=òóW <¥?Ý mó)p¹Éjˆ4g¡A²«%J£¯Efñ'j»Ô­´?_EÈš$`¯ݱ^·T„þ„šâlb5…‡UEæ²DžKTå‘öÊÕ–l¹O¢¼ÒUü2B¶Í+ßÙmÀ†Š—}}i)ÊMq^7’n5[ú—½<üš¨Z™°m(*"Óˆýþ¼Â}XõSRö„e@q̤ÚõÚDÈc_sa«½M ç §Øâ”û”¶Ô«3`†55¼IhÀÖš–aJÓð³›[w¾Q!MñË®ŠöTä‚[UTh4cœ=îEëIÛ&ªÜ‡dÿŽë&þ¥zqìýMÚoXùë¼nÄ*_˜V=ÕHZò ìØC[ºƒhÕ³vë?YhÿÙo‹Ë(AøëÆOú=k z5jßL!V;º†] ”â×.“â/KÅ,«úsŠ+£°šS‘EØŒÍ-«{ZGƲU$¹ØÄȳxaËmD‰æÕʵ$ã/Þϼ֬¿ö]a“SϺm4èeŒ4©‘ë¼¼˜3d'w²0ÿ>Dîkã:§kD€ Ï+TïÌÛ³2‰•Ìœ’Ò¯"@ˆ@»"à=ÛŒ “å³ò^Ì%3Gy˃O¼ôÓ­{ò…×ÛúEˆÀPDàíc÷:ñèƒßs ÎFP³Å÷:Ü.¯„%Ïêî½×[Îzß~Gï?ªfÝÌ@ˆè7ÝñÚ_^Æwê\2òŠžL¸ˆéòdöcyâE§€÷)$ñÕ‰.³"PøNæ /¼€wuuÉ'¼E߀ô?™Œ},»wï>zÿ± qŸ~=ÃLJš–ñ>ù¬F!n†{gêTçw¿«ÎJ%w¼ÃÙ¼9ÁþÓõ!€€;g}¦Û€ý]™q;nŽ{ßà½m>à¤‰Š€o¶>BBZ‰.1Õ{7¾À2Ìéêvº‡9ølQü÷=|^l[¾|Ck:E«ˆ ÀW.äã>˜³¾ +¾0€ /íÈŒ¦å— ŸI¶hÑ©©Ô{—oó$·-oê3–åÈ]\䱋Í—èÓë@Fý¢ªÈ•$»åÓ$!&cÀébñ¾dŸMQ…ºúÊ;®Å”Ub‘§Çº^ÄrÐà‡(²P¿@8‹ÕgL”Å4Ø@å[ ÏÖA@±¢ËkWÊü}å– Ÿ9ÕY¿uÙ²õ…­K&»‚Û–Ï¿ûŒ­_Ÿ%‡r%¶e‰<0#ËíÎ:—[¶U¶.sÍ·¤™Qü¬¯«ºõç9n–_\4Éȹ‡8-å£t˜§²[§<¾Á‰Ï(¥¨ÇÕŒKýÔGÕfX}ÆÝ‡ù.uOxýy·žêÑR%Ç] Kl^ô¢Ã|¿Ö¤IýÂxz»:yÜqÚbJÍŽ-4Ø$ëxÀ˜ŠÀ“bEÆ(g2hE„ûpsºØµ2÷m{üÑã¦fÜ™4k–Ò϶uw;gÌ6û`ÁEG¯74¤Ë¤‹.²ûšë¢%çýòîu6bŒOôTÔòwë–_zæ9¡¢kQ´mùÕ·ž·Þ#X躜½4ØÑŸõç9>.¾Tv<ªôY_ߺì¸[¿T=cɲG¯.FÙÞùú iwÊ줋–†$N;Ó‰@­àÃÁÙlÖÿùàZ5ÄÉë§nÝ (뙇^Ê.“&ýËEK×ùeüÔ·îî_ž÷¥dWV]³O‚Œ~é +ëVŸŽLš}ÆqJs>¥¾ëq†õÃòU-j« ¿Ã„g‚QVÝ…ÆÙVƘH`›†$N7Ó‰@M˜ï¾ç—-[†mÓéÏØÙiçWÃÀ Ü'ÈõÎ"Œ÷Ù!(„GOÖÎÙ°+ÆQ ¨”/|‘‰1 É¿D¯Ñ,jÌ“þ©=®N ¤¬¯áÈ/·lU}žð÷ÿ±`CÃùRá¨ÎmÕæwôIƒìWíêõ‡$«V~=HBù™@êFd‡1¢ë®»ý­Zµª)ôgÞàuW|ü[=Öêl•ÎѲóœS#/æØ‹Á½–CŸØò…Ç8¥‰ÕYáJÙa)ÛÏÆ`™ +>m_œòÒá-HE8béͺ«òZVØÂ€ ±¬Y*gØ/ÐíŽ-4ÎÍŠé¥>ÊÈi`øUÄ“5# Äwýõ×7nâĉãÇ¿ÿþûë¦?ð[/뢳[á>=Æ|¥:‡³Veì?~ýÁ‘•üÄ IDATª2¦âM‰â` ïN…MÄåä+ËŽ/¨¬Ê2#$tÕt&c4†‘f©%R„7 –QL« JøŽg-£oùÖPhu¨VcL °¥!ËyŠT~oï¼óΣŽ:jÊ”)pp„ >ú¨ª*•ix'“4 ˆ$ÁrJqò*›ÌÛì8YÃ}öD9½Å'ûì]ÿ?Æ¿që³äq—Ÿ4Š^ßnÃÒEµnXîÝë¸Ê€*Ê_uÄò̆϶ÈY¶80’iFûÕÖúµG¯÷ÿDÙRL3t{ê©·º)ÕZ ªe‰Öw㫼݀ô€!‰€¼’Íõ!¼Š3Ϲ仰ëÎY#óy]ve†d-Óh"@‚Hx‡ˆ.—í\Ã~Ât¸³‹9ëeIw *õ™c÷]· šÑ£Ý›ÁÁ<&>ÐN¸A@_VÓ?f›Nw¤3²I§»ºe¦fö0k=ž­‰6ûå—£Ó™JˆhI”â::;Á~òO5ëÓƒ`9°_÷0Lßg‚ALÞ—)d:c¸¯%}£QD€82ॺ»:À}i™¸ÊéèH!ÏM;™Œ3lD1#;ëüâe\éL'D€  8DxÝÃñ&‡L$3Ôó© ²Ç[´%D …›u JqÒã-ÐûéÉW‰pŒ=I5Kå9ë[ØOšFˆð# ŸcÓ™;¹`9½ã+Ü'æœ{BO<"@ˆ@[  á]º€© 0™žì×)¥ë[ìÝ* Úm[xM'ˆH:ÊiòíICú(Ÿ0 y½W¦/ÕU“Žý'D ]ðGuB^×Væmßé¤Í2¥Ÿ9ÔýÚÅwúAˆ@Òð½¯ëÒ[ÆÎÛ :ÔAAlÍ„V\ˆ 퀀¶úf›f0‡A./S9ã)?ð!o·‘ûÚ¡Âé J|–þœÉ笽}<äœÃC€™TåïuP"@ˆÀPCÀÒŸ.܇Éü0½_/x€1©iFætæBˆh3Jâ>ttñÐæ5‚1ÇVLfÏ…"Ð6øûÜñ>ñ ƒ|˜Æ^uv:øˆ"@ˆ@{  d§[½Ý¿äÝ^yàEžs–gžó93‰=â@.D€vA@‰ÞØÃ}˜Ö*%ß®4ügNrÎúv©rúAˆ€" µL*-Ü×Ñéàþ®Üö(˜—Ý$ äBˆh+üô‡)MTº€ù­@yy<â—Ç\ö2§s[yLgˆH<éJ¹OÆüœ®. ùòïËcZg™É™  D ùû°vbv3‡ÞèÈÌòÌ…"ÐNÇû\î3.ê=Lj*ŒÈ…"оÈÜ¥Xtb?ß}bŽöµoÓ3"8ÌíÛàý[á>w’zBÂ=L>t˜!àÅ}ÖeÙ9AÐU"@’ˆ€Ë}Úm0:L"2ô™vF@f 3]8¥1 oD€$ÞÐM^Óc"@Ì}.D€Ä! ÜÇ™ Wít˜$7î#ý%¾%",Š}^Ò_²jžÞd#P2ÞGúKvc ÷D Aû¼òJ/'.MP «D ¡¸Ü§3[‘õÚ è6HÅ>¯¾îKúK^ ÇD ‰û¼áÙ’ˆ }&D Ý(¹ÏË ¯Ý«›þ"à"PrŸi¤?6 "@’€@û’à3}$D€Çûˆ D p¼/ µL‰"À>o"È}I¨eúH@ä-Ü ÷™WÚô{m‰‹Î"Ð6D¾·VÂ}újon›*§#D€(JkþÀ.÷)"@ˆ@(á>öv“Påô‘$@è'ßió/ïKf³ ×D øôØçMBÓG"@‚¸qŸ¥Cv{ƒñ˜vD€q_;Ö*}"D AîÓÇ\*åây"@ˆÀÐF È}CÛZOˆ¨r_u8QŠöB øŒK{yGoˆ ‚@øv.ã>¶ "@„€%Ar_‚j®"` ÷±1"D"¸7'±!Ðg"0Ü{–ï°ÓÑÑ‘0è. mŽ@8¤+‰û§ÛºGˆ@R(r‰/©m€~$"àr‰/‰•OŸ‰@‚ˆ¸×‘`4è: IA@¸A_Rj›~"à!À¸m$"@îKb­Óg"@È}lD€´9‘Ãzä¾6¯uºGˆ@$ä¾HX˜Hˆ@[!ýÈ}mUÁt†8ôGéD€´ ú"lýôGîk“Ú¥D€Tƒ€¥?á>ÿ·Ê«ÉL"@ˆÀPG€qßP¯AÚOˆ@µøã<—ûúU åˆÊX®+~§ô7”+”¶"PüFemxQš@ —Ë…ŸÈC¹ét:“ik5GË`Á"ˆH ¾åË—÷öö*ß1bìØ±cÆŒ9餓š¹¯YHR MCCp]tÑwÜÑÙÙ9jÔ¨qãÆa{ÄG îkVMSÔ,ƒ¨‡"€/¦þÎ>ûì‘#GŽ?~¿ýöSâkâ—ÔÈ}lfD€´ à;»`\QÞi§†í!‡‚m‰³ÏÛ*µN;ˆÐp¯øJ&ƒ›Ó¦MóŸ’cãX‘ûLjhà>Мå>( ßÕõŸm¤Tr_#è1/ ÍD @|P ¦Ã=ßfñßVr_3kŽºˆhHîSlDmd^r_$,L$D`ˆ|„¥?‚>øFî„ f‘D€D"°k×®ÈôƵïì×S-÷íÙ³§¦â³Ùlx²& &D 9ìÞ½O/¤¿ÕrßóÏ?ï7«š(4òu¼ôe"0èTÃ0rï½÷îoS¡_µÜâªñ‡Ü×ßuIýD`H   êéózúD öû¯«ÀÇoIµÜ×ÕÕU倇ù|¾b "Ð~DÆF6;X”#%j¹/pÿÅZ ‚ân”¡Øq†¥"Ђ€.üD¡Ü7ˆ¬§5ô>¯ús×]w1ÄkÁG“ˆ@ë Š¸é¦›”1ZĪú¹OÝXºté>ûìÓ"ÎÐ "@ZLÆwçw‚7ðŠîcÖÉ}J|ÿò/ÿ‚¹e0¡à{Â∊`2¾µk×â.èÀÓ_®ú¹³ªîµ×^˜Zkذaa½L!D€øÀ]<ÁwÀlÞ¼¹FÉêä>¸YUñ >\Î:&D€”GóÎcúå}÷ÝwêÔ©{§å36å¬Þ`)áâúôêÝ3Ï<±+ßߨCæ"‰BÜ@Ü÷ö·¿4ÔÜYH«‡ÑÏ€uÆ}(Léïø@___õeS’d"€nâá‡Þ,â³°ë­jŸï‹¬- \:ê¨`#ía" ­‰(âÄOÔ€©E,lˆûàCK9Ó"˜Ò "@´ QTË}uDv‘ÏÔ°M"pì{ƒKýÈ}œË áMœî'Фfï9T”ì? K¸¯Ì¼øµÎß‹É}ýWmÔLZAd´êa)á¾8‹ÝñÚÑû­^)%‰ ýx©‘"*÷y_íË¥³™_=ýj#Å0/ D ¥¨Ì}ï93÷ZÊhCˆö®<¯hPõ?Û§‘éD€ÖG€Ü×úuD ‰h>便cJD€´ö©k¹¯Õêˆö"0T¾×1V° "@ˆ@ÿ#àŒq_ÿã͈h=È}­W'´ˆþG€Ü×ÿ³"@Zr_ëÕ -"D ÿp¹/îMÞþ7€%"@bÜ~þeÌa‘D€A Øç%ì,„E ܵ r_Øœ[N-Ë)·<>')ÅŸ‹ÎñTƪ‹ÎRG)õÙS<“‰h3*sßù÷­YàL¿våù›åúÄóïÛyŸQW;o6Ëê!D Ùð½Žd×?½'‰A Ðí­÷ù1aÚ-‹L¸´×º=Ô3–Ž­.‹6Š É»hÒp¨á¶szœM—M3iX‚YŠ)§Ü²­´‚DT3yº¥K%eóøLß~°ÄÒcF¥¥ óˆ´J‚.÷UýmM—=6{'–5 6]v“a,,›.[ê¬,IܸhÚ½§?,‚;×8KÝ¡ÂM[‡Ô²™n®™Ë ½iˆIZ8 R.›²Ft¬tîí)A}âù‹ô¬sË߸®gÁbéCC£¹ Ç+³$Wà TâÆ›Üò|V–SÀsD€ YjŠûàåôk?k¸kæìΖmîío4Ð&>±m‹tÃæôlzl»ÁgúéŒ3 gAŠWšP]b”å’߯u[\£¼ÀádK¸ÄCŸÞ3§xTªÃ’U(£ C Z¹¯zÍ,6Ô«»¦,3?{íDwOܲt‹r*:¬sSèÃ×N¯P’wº´D¹ ƒs!»Ø¡®RňR¸Ü‡0º½U÷|+¹8qÒ§ªngQQ8 R¼~5®'TæÄžîÜ{ÓM÷N1ý]ÇÙþئ释'~t呂4":/úDYO†K4é @p§Ä´ï  ÈC"ÐFã>ûTs€Mɉ…qÏ÷E‚1sÙÃ×:rÃ,±A:®ö^G8ËÌekôÌ Ó„Ëòëé™2Û@D ¨E.|lJ0î3ãƒFÕèuާ*T¢w¯ÃŒ.Ÿ† e  m@ê¼óÎ[±bE>Ÿ·î¤Óé/~ñ‹‹/n é ‰F`éÒ¥_úÒ—ü×ÑÑqÁôßx_¢á¦óD€´8侯 šGˆ@£è€^#Ï67jó"@?ý1îÄŠ`ÑD€ 4–þ\îkÚÓ-íË#D€Ôƒ@q.Ò_=ø1 -b=<¾¢g‰®ò<.Ïîxþ™gŸß¹ó•–w" F~ËÛ'N»Ïˆ*}Ö78lŸ·2÷íµ×>Ì[ÇyK•PŒ"0üõo¯¼úÚ®º Šà¾pçÄ÷Ê+Œûꙉ¨€À°aÃ^xá…L&ÓÕÕ…þ©•kH×VvïÞ=nìØZ¹÷y+TO"ÐÆ(ò—6®bºFˆ@,.÷i+ÅD€öB $îów†ÛËMzCˆ(A€}^6"@’ˆ¹/‰µNŸ‰ÀPA —Ëe³Yl›npû8ð×tˆ©úåaÞ½eË–aÛ ý…™-È}õ™È\D€æ"²Ã³Æ×]wú[µjU#ô§Äg·j'¹¯¹õEmD€4%¾ë¯¿~ܸq'N?~üý÷ßßý©MþÛ¹ïu4Ápª D€4€"¾;ï¼ó¨£Ž3f ^ùèììDô÷è£}ôÑ h•¬–þ\îÃqøU¶Ë`v"@ˆ@}€‘Î:ë¬p^ÿëná³eRÂǸ¯ \ß—„ú¦D€(%qéÍ‚„ À>oB*šn"P‚@ñ6CˆHŒû’S×ô”"ä>¶"@’ˆ¹/‰µNŸ‰ ÷± "DÈ}I¬uúLˆ€Üçµóðù>6"@‚@IÜÇI\Rët“öyÙˆH"ä¾$Ö:}&D È}œ½™m‚$ ä¾$øL‰ ä>¶"@’ˆ¹/‰µNŸ‰ ÷± "DÈ}I¬uúLˆ¹m€$"@îKb­Óg"@È}lD€$r_k>"@îc D ‰¸ÜÇWÙ’Xùô™$÷;mŠç°JpK ëD Y¸qf-åĥɪyzK’@Éx0ÙÞ!À{ ªlºJˆ€E€÷:؈H"%qïu$± Ðg"HØçMdµÓi"xÈ}‰o€$ ÷±Û›Èf@§‰@âr_â ÃD€$á>¾Ð–Ȫ§ÓD Ñ0îKtõÓy"XÈ}‰­z:N@‘ûØóMtC óD a”ÌãßyŸ7a €î„"À>oB+žn„#@îKx ûD ¡ûZñt›$r_ÂÝ' EÀ½×aoqpöæ„6ºM†€÷Ù›yŸ7a €î„"PÒçeЗÐV@·‰@òàx_òêœ"à8ä>¶"@’ˆ@ûØíMb+ ÏD y¹/yÐc"@’ˆ¹/‰µNŸ‰p¹“¸°)"(ŠÏ÷Ám>Ü—¨º§³D Éû¼¼Ë‘äv@߉@Òàx_Òjœþ" ”pB?v{Ù.ˆHÁ¸=ß$Ô:}$D È}D„"È}I¨eúHˆ@r_"\îã³ÍI¨lúHˆ€E€q ID€Ü—ÄZ§ÏD€”p{¾lD€$Æ} ©hºIˆ@ ä>6"@’ˆ¹/‰µNŸ‰ ÷± "DÈ}I¬uúLˆ¹m€$"@îKb­Óg"@È}lD€$r_k>"@îc D ‰d’è4}&D µÈår‘sȧÓéL¦9¬Õ-­ #­#D`ˆ!â[¾|yoo/ìß1bìØ±cÆŒ9餓šå ¹¯YHR MCóª\tÑEwÜqGggç¨Q£Æ‡íGlVMSÔ,ƒ¨‡"ÐÑÑú;ûì³GŽ9~üøýöÛO‰é͇Ü×,$©‡FÐiôt‹q=Dy§v¶‡r¶M$>Ê>o£µÅüD€4  ÷ìWÂA¸é1mÚ4?ñ5kšQr_³jzˆhphÎrÔ…ïêúÏ6R¹¯ô˜—f" >¨Óážo³øÎo+¹¯™5G]D€4‚@$÷)6¢62/¹/&"0D>ÂÒA|#÷ B³H"@"صkWdz$VÅ}ýÛ+ãÆ¼¥?ЧN"@ˆ€"ð¶·½­&(ÀK5É„]î+Äëxýõ—S]ãþò×ñ"ËÐÛE¢Ä}øã?ˆûZКDˆ¨ûü‡7y‘èöyû|j÷ùû¼U@1"@ˆ@ " Üç§8Ä}ÑÜ×EîkÁ ¤ID€Ô…@˜ûºýÜç!êþ««8f"D€´`3¬þ¸OÙ0S(8Xs¾»24È›-Qk4‚Fˆ£8û|#|…4¹¯Q¸™ŸAÀå¾Źϸø=m»i D „ÜÌj{³šPù½ŽFJe^"@ˆÀ # d3üƒy¡C³ÚÅÊ ºÅ4€"ÐDðð²¥:éóbñÓ¡ìû›X2U"@&@uRÞ§‰@º¸÷:òö©°^ÊÉóáæ®Gˆ@ÿ Ä—rü_eK›” h®w²}n·ß\ÚÉñ¿þ©j%†@OOÏŽ;öìÙ3`%@AÝÝÝûï¿ÿ‚ j.ËÆ{^ÎL.+L·{·;ê'Ü—2ð«[f ­ƒÀ-+WŽ>üâ‹/Æ—m[ǪÆ-yñÅW¯^ ïÎ_¸°JmñЗ PŸÄ}Ùl.Û—{óõl¾/òXz»»úzÛê·¢JŒ(FÚ—þö·s/=zô@΄<èí»ï¾óæÍ[ºtiÍeùÉÏÜÏÈdûú²Ù¾7Þx-ŸïåÀ€}{ïÝKî«Zf -„@__h¢ÍˆøîÞ½~Á»Z±uy…ûzÁ}»^ ßÎã.×7nX8îû÷o}«šÂ>õOÿTeˆèoðiG,ý]ÊÀëo–SïC§7»ûÍ7 ï尟틦Õó>ýé°Ÿør0¾¢„|oýÆ7ÂL!D€´ itrÑÕE ‰%ÛÛ‹0‡H‹´õ¾Ÿü¿þñOÛîº÷W_¸á‡Ï>ÿRà;r·œ‚¡†Ñ£O¹å‰HEÎÆEñç¢s<•±ê$ T–+1Zk²R+bXe+±æê(«­6Ã(í" ¡_›m›U»úÔ‹Þ 1ß@ׇa$!z™ð¶·ézЄ “&rßÏ·?ôèŽíO¾à¾óï[³À™~íÊó'F«©=uâù÷í¼Ï¨‹¼H6.šÓ³`ÍNW¤võž#Ò‹~¶¢ˆa55ba#ÕÑH¹Õø• ™6c½º{ñ‘t–I§;ð=àÎÎît&×!ÞLGºKù’N§Æì3úMO¼´óC&Œùû#Æ#z,Ÿ¥ÿÏN?üÐþ/„%T‹«£Z¤(7€þcŸi Øud2ÃFàa ‘ÃGì5rä¨LgWg&oŽ^FŒ¶ß˜Ñú»öÝgï{ô{ðæÜ˜úú¯GKKªù¿ÅtHàí¡ž±tÊtY´ÑË»hÒp¨á¶szœM—M3iîRL4½b‘ôr9NQ§ÍaTmtË‚+êT—HÚ³H-13¶Ä¢¥Dzaœ‰±¶èNÑå¢ žaÕ9®ÃA¨KÊ^´±²…§Ü²ÍÃßo¶Ö”[GjX$\ÞhˆA¸82(7ÂÊb¡Ü+‹¢$yf-z¹oÑ>ûì³è¾ÀÉí+NÙgŸSVlÎÓ"©ußëDéLgg&Ó9r¯½±î5ê-#G½¥««»«kX$ªo·ß뻜ÿþíÓãÇíû«‡ŸzáooL8`ŸãØ»§7RÞKÜtÙc³wbY³`Óe7yŒµé²¥ÎÊ’Ä‹¦Ý{úÃ"¸s³Ô½ 6m9RËfººf.ƒô¦!fÓœb¢öŠÇæ‚Î˦ /Œåák·Ì±—Y±ôž9£CJͳy’_ë\¶PByfY³ Ç3³¤Ä/Jˆô%ÆZ[ ‚ÚaXŽkÞ0Ô`‹> ­láJçÞ¤€¶CmiuDÁeá ì”–»ñ&¯ò|µ—•é!ÊõycÝò¯·l÷‹l¼éŠß@‡<éÛÂKÈË@–Á}]]#öÖú×Þ£;»º±FêÛÿ­ûÝõý‡îüÞoÿﳯ߳A_ꣳÞ_ƒîaÑ\é)™~íg wÍœ½ÀÙ²Íý‘÷FmâÛ¶h@‡˜jNϦǶ›ìÓOÿ`c†^.ѹ`¶çÄó/ð´Ú±H)Ý.1ÏàÙéÏîF2ˆnŠb®1^D!PÌìîÅ[B”aÖ—XU¦¨°‘OüèÞM WžEF¯2µ;¬-àY\!ß#=|zOñ÷*R„‰u#pä‘ÎîóÝŒ¼ý|ò“Ÿ¬[]åŒO¬œuÉýbqé¢MIRúCŸô—1²{Ä^Ý#G 9jxg—ðad/¿¼sѧNÀmË—®ýËs;ÇuÒq‡û;FÊמ(·+Ü¥ÖÕ®¦_rÈ%. "¤9ޱóák§G–4À^x†EÚ›Ø\#ãµU†+ÖDGnÎì\é,įaq„#^œgÄGo"8ùÂK\ò¿îw…¶¯¼áÿ\}á©r¤Ü ^‡3Ë%žHaûÊYþ4ˆÌºä$‰â•@•u IDATI›# ÈgÖŸº¾D¡–—m~³jÜç¤;œaÃáÃÝ-R2ÑÔçà½è½FvàøÉ2B*õ‘Sþ.åäV ò4¾Lœ4Å)ö!×'ŒÎuÚÍ~â–¥=^ XƒöM÷þÈü6šÈHBÈímÒq|I )jċڬ æ·¥¼ª°‘?xúô*ÀGFoØBàÔÃÚü–DÀ…pÎ À7®s•„€´ @üÈØþB¼ Ï” €Gu_]Þèsr{Þ8ö„yÿñƒ¡?¬ý^îCÇí§é’pì·›å›óþãú›þ 7}ð]ßûÐ5õ‹Ç"¿yôàÙ¾G?üì»–Lú¦9ùã+=óƒ’å‡Ë¼$‘0‹ÑzÂÆŽûÙjJùt¿Œ»¿šRÓ .kg—“é’mg·PaÜm^ÜÞùÒ ›õ÷ï?îГ?ìýÇöÚ믿ñÆ®ŽŽ ÷!4’;îøX•¦Î\&cj¸‹a–ØztM÷:Êè[æ…2œUG09}ÊcwŒ–qC“}æg]+>6%"îkÄ‹š¬ VCyUa#Á0k¦xàì#qž¹ ƒœÏ…Îé ÜÃÚ|¦DÀ%ÝeU2zã)±Y|åzwI€}åþx‰û<¨ ?}åc7÷<å8?ýÆU‡_¸à`¦Ÿ.9T–sViâS?Y÷𼀈ãL›}’ÉôÔ“9óN>ш¼àÂyoû³ã2iÚªsæˆúÒ¥NsV³ä§U¦ó7ç8uæ¹ç}}åÊ— Þ`ÁÙ']Xrå•Wÿ‹ý%à6û^">ÜF<Š'b°µbx¯£íÞiÃÅ·ôð‡½;(ÍÁ¼)Zê3 ¹ÖÍæmƒ¦Ô@k+ùÒ—¾ôÕ¯~õ™gž‰1ógWvó¡÷ß½àà§zÎXì\xêú›¥8r¼t§çŒ“·_¸õª#€sÅ«Ò*÷Yy9‹÷Ÿ,™±È™k6Ÿy›êÑÔ+¤h¿iqéæxà—_~9Œ8•ô…¥K¯¾êªW|Ï,.>³p!ÞH3“š“Mà>°O_Y‹vH¥¡ƒ9ýðÏ)“il#øC“€¹Øe<í ùNž|î5S¯Øx‘vÓŸÚ¶y꤃‘òÔOÖovNÅÎÁ'ž:õš›{Ι1¿HZžÇ9èÉÎ5ö•3Àv·ßü¹~Å-ü ù«7:s?÷ç' 3œÛç~ιþñÇEß´§bÒq½r^wÞfùd‡Øc2à]Ýñeo»€®24m%!O°\¶Iž ZVÇ]󶂂ΘqîSC|Œ&ç‘xóÌ™“¯q¦Î;U3<õmÛ&K–¹·=~h®¸Ì¸jãsgNž,) ÒÕrò+'Ÿ»Úˆ@\oþj=,f3{Йkòa“6ƒø²93o³¡¼|'笷(ãq3}@¦É¸7¬®FÃä†éù JC DVx#Æâã¿ü§ãq­›óÎ^õew×±éHüÓÙÅÌ*‰³ú²›ˆ¿£¦˜ÃÈÄcL©5Ù1Öš×//sÖãcÙ=¾y›Sœ³¾H™—´ ñÜ×*¢LXîÜþˆûäÛ˜³¾ËÁDö\ˆ mŒ@滵½»e¾¼Nh5<“åÇŠÚ¸ÎéZ2(ÛçÂ4­Ï‹ÙJ1_3ZÆ|õú/›‘oÒÓƒC`šN†>ìó–©CŒ÷a®Ò&©Ç“–Ê Ì¹nlËäá)"@ˆÀPG÷ye/^®ùV‘ðŸù`ÛPwŒö„#€¾a³º‡-…d³œÊ؇™½Çže–—Ð×,[ÊwCˆ@:;;_~ùe¼ñôÓOWR§'L˜¿à]ãV㽎t /õb2‚|^öóy!¥qÕÔ@ˆÀ`!0f̘{î¹gΜ9“&M,ú£ÜW^y~Á»Æ•cÎzY0_©¹Ç[è÷udÂs4^5"0`,\¸pÅŠË—/¯ãS¶fd!âÄÓ\pAyY„æ@v]ÃÒå“éZóyC}ÁyY/‰ˆHšBið—…™Keƪîî¼Ï–Ç[½S´à£»l‹#D€ $˜‘O&ì“ïs˜é À}˜‹/4ß@šÄ²ˆ ýŽ:¼2w)&.•ÅПÎfÚï%³"@ˆÀà!àÎß—1ßãu§°J;)Þæ¼*aÉD€ .÷!ú³‹>à7e³"@ˆÀ`! ܇Ǜ·6|Ó;–a,—"Ðȳ,@Oç¯ïÇ2©š"0Øp`o°k€å"0ûu–IˆÀ`#À÷7»Xþ@!ÐÓÓ³cÇLU9PD9ÝÝÝûï¿ÿ‚ Â…%Íß0åSÈ}åñáÙ6Aà–•+G ~ñÅï·ß~mâ’qãÅ_\½z5¼;áB¿_Ió·Ž:%÷Õ³ =^úÛßÎY¼xôèÑ»vízÖÇ[¼ï¾ûΛ7oéÒ¥‘¤ùPìŽ÷ÅBÃ턦3MìÞ½»œ‚/ð~…'kIš¿uT+ã¾:@c–!‰@Òæ1Nš¿µ6JÆ}µ"Fy"@ÚÆ}íP‹ô¡Jšõ©‡*‹t±¤ù[à侚à¢ðÐF i\4kjÂ}2mŸ/“¿&]&D€´ ‘—Æd¥2m>Té­rHþkÁ ¤I!`¾ÈÐ?Ë}‹ð ]NY±Ý+©öhûŠSöÙgÑ}ýQ|\pט¿ÆàKM²ßLÍ*ãükqçÞëÀi»Æ©`:êà²iþ²ñâ1s·\½ OcÙô‘ï¿óC·lwKA\!Á)l¼øßÿȦoø@óK/§ÔYÜö[>4æ]ª½øâÍ…ÿÜX§¦Øl2±ñ'êk„aŠ“¸+>PnWM©¯æ" Cà‰•7üÇ'¿³aáDõ{⛯v–ü¯û}(<±rÖ™NQ¢åñybå…KŽü΋_;Ù³tâÂ…v¿å­Gqä¾0VLi[⃉zÏl¿ï¿ùä©þxî™9öÿl“ÈÏÀxß%Óð‘_÷OħF—©­z¼ {äi¹ÿ¼h–Kî7iH˜µr¥›:k¥í¶¯œU*L0&×cœä)ãoä)—ûrNÞ[5%cOØl…´Œýq!m†@6›}õÕW›ìÔ{rÓW¢I¿Ùö諯î÷FŸó›%K~3ï›Û÷k~ÁE?FŽéTþFxäª?ö‹Û·û?]rèõ7-8vÁÁÆÁ?.”T¤³ì‡ó®>ÑyªgÎû×Íþñöïl²ÁóŸ.y×÷>¤ ?]2ç¦?»s{Þ¨”8#A@¢ÜÉ0][»(éçLŠÞ±Û85L'D €ÀÃÛþÄdÚ¤C4iÚ•ß¼ò±sæô<”hé㌽ 8YÎYU´~Ú•Ÿ>QŽNæ<|Õûݬqº‹*ûcÏw?à ñ1Þþ(ˆ:‰@k"€{ŠM6l ³¦^µñ'_™q‚§ø©ÿZûðä ' ( /òrõm[{ÿo½ÊŠ4Ù†xuõøöHõ?ÕsÆ9…Û¶n=‘Ý‹ÍÝYã ,ðöõ+ßþ‚!çœy›Ïý|þg¾ŒñÖ7õLø‹ãi|š«|©Ò[ñ‘6~¯£©°SY« PïS™|Í¿pîwÎ]ò3WägKN¾Æ¹âœf`JúTø;ã+¯xìÜ3zž,£¦SeÀ­K«zt˜u©ðdOÜ{rÛæ©‡ Oþdýf­óô;{Љ§NýÎÍ~_:d²Sšb‘©Ë¾2þFžŠ3_!/Rœ!½Œ||ßiÃ!¹"P3®zü¶+'Ož¬Âso{|õŒ`¾ƒç¯¾mÛä™s«çûzƒA±V9†G'Íé¹4õŠ«aÚ¹WÜ/?Ù‘øjBÂD€´2úÆFàÁN$Ê F€~ëI­\—´­>ôa²úò¶r®2}Þ¸S­ìNEÛêp Lçç>eȹKQvô=óŠFQ€´*/¿üòøôÓO·ªõØ5aÂøï™“æoìÀz ´œOBSøN[Ðxª}3fÌ=÷Ü3gΜI“&µWŽóÊ+¯À/xp*iþ–©Ór}Þ2ÙxŠ´ .\±bÅòåËß²Ò"¾ÃäÊ\pAÀ‹¤ù[m%š×édå\ÕBF¹¡@˜ †¾O娝±ž}Ÿ×Fìó¹Ê¥ÁD€D#&>ôyí\ ?]…þøN[4„L%D`¨!I|rŸ· ß Î¼YJõ•^rßP«_ÚKˆ@±Ä‡‘>ÓË-äÝ[½òÝät\Ü—J½kúôk–.(ID€$í-ºd&zÁ±Î 8àÁ¹ZWƒ|­ÓÉç°Ía)äsù¼~_D¶î,³¦¤”|W\¶X::2ø‡Ÿ4ɲś¹þå·—-ÑC»óîéÓs…”~)§„û%2îC—ø´ø´ÓN«Å#Ê2z+l„©åÊK±˜/ÀVÖ[‹DÜ|¼høq§*ªf \(‘ùÕÙHÉÁ!Ҩꫩî*µé½Qe@%>0ˆ ª°¼ã# 2d(¶ ñÈú“Ü't‡=l´½JÇÔx’2 'ä‡B‚†ò”þ\CâKÍ;©7sNÎ7yi¡Cx#"öÓs ?œ06™¸O¸Mô'Tëòá]·©È~ÐÚ°S{eœß?ø@6ïzè¡™ƒ:è˜)Sn^±rï™1®íü†s2e¨#P MD²OÇãtêxÓCU¸ÆÔ<$–).h§éY•ñKO©a±òe…å‡nŠ‹‘ù#å/C‚6Ú³ä€+|ˆl:É„~{C6]HcÎTŸT”Éh‚>=6%¥ ä2¡JQcŒÚ*Öÿ¶+í ëpþðënºyűGžÍfS›7oÞ³gϯ~õ«G¶l޳>ñ‰÷¾ï}áœL!Š@ri&D&®hdi4i٪ͽÈBf5·¬úf$Ô…§†ABSúZ˜¤3±™‰ÝnÇ¡ã™o(Í¥º£F7Át«å´å²ÀT€ãô¬¡MÑiȃ?ÿÙß^…ˆïˆƒÞŠ€ß9Imݺˆ¯=½ôÒKùË_üío=‹ø—ä" Ô„­®r··e 器M±ôÇ8aøüYܳ^RàT$…E›Q-ïYåï}Ç”#<wTººº2™Ìÿà;®?ÑaÜIEND®B`‚PK !0_6hnnword/media/image29.png‰PNG  IHDR©pë pHYsÄÄ•+tIMEÜ  #%‘'tEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/05 18:35:37 lim_j SGA250167K¤’ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí½ ¼VU™?¾ßË9 Þ@%¸4’Y¡•h@ýÿÓ­)Occ˜ŸŸ¢3CêdiQTpF¡¦~s,ý)RcÓ$øë~š@‡"ÀÑ©3oœ÷òû>ϳöÚkßÞÛyç¼ïy›}ö~öZÏzžïZëû®µöÞkgvíÚÕ××çyÞ3Ï<óì³Ï®Ý°ÇZ²ãŽíVÂqÉ+—yÉçes^6ëe3^Çþ–ñ“ÛƒAD\€8 /x/Á:+ÖÊ^„”ªä•Ê^ ^ûŽ“¹œñ9à °¶,W¡ä5tñ½×¿µ"ðÆ™3_÷º×•Ëå#Ftvvf~ùË_îß¿ëÖ­ßÿÉOP®ïßûÞòÖ·ÖªLã ¶1÷S½ÕCàSQ6œ‚@v >iê–øÊeÛÂ]©ÉC*•â6æª,”Š#î^„6?â2>1q˜â‰ûŠLü? 8ŠKGÄ—5|4äÇ€a‰Ó' …ˆGîU1Ûðk8U…³ˆþ 1ëº$þºIòÙìê\°`±“¯Å£Ù$.¹jò“Ÿ¼éMoªË¶‹¼†üþ~pï}÷¡¤Îž>ýôÓO?ì°Ãòñ=ü­o]uå•oš=¿¥Ô ìGh¬f÷#öJÚ,ôDåkQ¶²W,–‹E¯XòŠ4±rG‡—ëð:r^®\îð›Ëçr¹|>›Ïwä::=À’ïôòyþmð ƒ0âŽË\ö˜âH3MKXÞý˜Ò(Ìr–¡{ß’NÏ;X*((kNNdŸD‚«©p2™"¶Ú<ÐXÖ˜sfÏ>wöìÿûwÝ}7rýåwïÞýƒŸþôª~ôœ·¾UÊ µ #’fµáÅe¨)hq<­‘µCšS¨ë«‰‚c:£\M¥wÓÚf -JÚFS@³m¦«Í †Ü½ÊY–ûúÊûJ…ƒÅ˜°ŒÞ ±x!çAÿ%/_È”:s^G @$à›â§ ëCÆW(&‚Ò‰cñ4èÕL®’Dg㘶ÔÈ$ŸÎäÀž’¿#L~ùô—ó %ôIß–fܤ¡#žàbÐLúê}÷7.¿wïÞûö½É'¾Ê…÷$ÔTœËAóЧQI ÆØE#°ES9rÚU+§®­Ü k£ºÅê4Ýh+͵Æä®§8áƒó¢—Á9ê;ö…R½ÜR1SÄVÈP§·HÔˆÁ­—ë—³%r‡FÃ90b¹/[ÎæÀz”ö QП?þÅA d“¹O7äL¸V‘‘‚w= Xw“ôiNPõM2]B—Ý,ìâN¤@]úûÊÿþ?ßÞøÿísÞúÁ¿|Ÿ¥<›Ecåx(S ýaðûä“Oæ¿õ­o}èòËmïÔ­CÖ¦ºÐ·‘q«"‡ÒÍÖÈK ª€pÃP#O÷ ãi#Õ§nê‘(%6•ô<ƒ+¾¦ &Ô¢&9)g#E{ÔPXc{÷bÜ•)yY ç2^ 1ˆ-áo–Ž…ÐhÐkúvSÈ­‚{Eœ“¥<·´$ï@BI$*?-àM˘$tËu1 ç\G\¤àâÉ\F3îq¤ñ¹É¿úÏ÷ƒø¾¶ú VÛ{~Ç—]þþ¸þ~Jîùò}ÿwÃ÷EÉ;.œ,â’~fÁÀû.½ôÞ{îÉ—sçžûÖÂÁ`)-÷—É-¿PÆ(“p±D §n½ì§Ñí—¼pâ ÍâP ¼ÒlmFöíY&ËÐÏ¡ -†ËS6Û"m)ÒH*JUô³%5ui¶D"'pBó|à» (/SË€øÀz™R6‹¹Ÿ‹0^âF.8ǵ7Š^‘Õ)Yµd²)5æ\²Qi²÷v9]á=ÂÛ/x‹°¾ýè_zé%1 Qpu²€²NA¢Õ¶ÿÐåïGB—þ$$\8»»þQ6#k yçh—kU [„|_Ÿý vøï ~ÅÌÅ ì!µ$?Bÿõm¹F0·§T²~‰ ¸Í)÷V‚ m¯÷SŧºmÔÈu‰ïöª:lVN…h•#$fä[íûÊÞùU”ê.|€^ˆÝ¡ºÍmÓŸ™ó“ŸçéÊôp3Åcš€5ƒ€‘øü 4ô ž¬šâ££I‘}í7B! ÛÌ*E­û¹à'"ƒ˜õB†IîRôl¼ŸXþÁîK°}¥÷ß?,¿¹P=".KL[Ð&®Bõš úCÝ—¿ø9I{ùây½Ú${ìãvðÄ.æ…K^g‡1GL¿Š¹?†²”¦Vþý–¯®ñ¼5½[wûÙû?tÁ/!ý¸†Ú¤oè´kŠ¥¾k§áô™õ—t.\·‡¢0÷RßêyãuÆ¢äO×7Wê+a{úß2ï:%{Çö;—†A¯1á‰sW÷•VÏ=!¡tå·”Ú±ïEbå–²Â%4$Ó„üø’{—òèWÍ%>¾š,[EPâ»<˜!MmUyU–LÖöDÎÈ_´Ò³,DA˜"äx’0aÙ=GC|lh ;<çO”‡¤Kx¸ÜG›×Wôhïo¸dî*3ÕZ"@JÇS¤(q7›‚†˜‰Bl•^“kE\(¿µZÿ9ðÈo<"„ñ%|NÄ©ßâëo¹à‚·|¨ûÓ'ĸ%•%ÿüåû6nø>xïÚJÀ1$WN˜vU ½*®åyîƒ ›f(DÆÇ$ñ¼ß?ÖûõÛûYfÆgÛ3ïÄâΰŸÔ´aœ"3äX²+i@"p»Yˆ?‹æ=ðôZoü²u—¬žw¢\ªÐÂ0ÀM" ôSI$yÕÆï¶1¤µ­Pkgu®Ëö>ñá25{޹Û᧵ĺܞFä§Ü˜ñKIb¾USI‹†ÐȰ8ŒOþ²ÏR‘è̇À ‚¹*‚á`“[)¤ãZ3¢fm¶NÚ¦!¢ÞfqÄÏ(€ÝTÿ˜1¢ÙžÊýåÐUéÙ Ç1„¹»çØD…™ øîú¿ù4N…øèB<¦_š¡A”µ¥ÉQRטøz>ów²ÈÀ’¿û Ž{¥7:åç¯ÉšJŠ©þÓ¡sÀ¿“{¶ÞóàçÞ>íOοíë½›Ÿaó±ý~ý%Ù,m×ô"­³[—C‚ûc¹…Ÿþ±ÉgÏ·.É.\·{ÏúKNšÿ ·æ]'g³Ë·z[—çrwle¶®Èáœl¾ˆ®Þ±ÜÈ¡‰Fj 'L¿lÁ×îÙ²±÷¬_ȶa»dýüÌú…ù…w¬XBþ‹;Œ$Ÿ½ãäÚÖÙìŠ;î´ù;¶Š³”\^Ó õ"Ìlõ£!ÉV’¶;, ÎÀJe.9¹/ßJU~fýé1“‹Üï ž™"÷ûİH‘Ë)홢œç ‹Ò–à¢íÖàøU7f…ãDÍâ×~ÉÕLµšÌÆcôѨ›Và oøò»}¸ÝǯúšPa‰<M¾‚ׇ­dë+” El¤D4ÐÞþ¨Ø*ᘞíÜ9ÅgKбpí` §­QîÖ¢-¶ ÁÈýþÜ(›(Çñ£þð3ŸZ‚ Hbåßœú5Ðè÷s¡Œ_׆Äã ¾¿ìÖ¿Æ”"Èî¢ gc/§ãjbªÊB©?ñ8à>ª"¶IØ.%øÅþàíç½¾œþöσEžfÓ·.?y~ùáß•Š¥Òæ7}ík‚èmÆuŸßBÂßug Leâ\ôÁx]HTºvšEÌÈi8l¹ý¯gšA±ç]½·™e™ë—­ÛL§/†b‰–¹þÓ2v6YD\’­O·.?ÿM’ÏÓk3ó¯ùÖ¶aÍõ?í~JŸ^Ûõ5‚Ñfþt-‰÷m×ÏdºA€9”zËmÞõŸ¦´[ï8i¾'ñ¶œ³Æ8K8‰g:s/#Úݺs9ÂhîXbظ$Çñ8ñ¬ªÆ”ÆR@U Ò‚¨BKܹ£/óÕzBŠN(>º.\ÿé„%ˆjCÔfR]n$>’Ü!àù1ó”_b 5‡8&ÒšuÔ1ŸÏc€‰Ýn Š1¼ãÍ»é6Ä™sÁ[ä*är\kÞ±x ;l®8.‰%ª$_G\³±ót_ži’Ò¦¢¥-—ÙúƒëQ-¦ºÎFþÎVæ¤CüN%2ÇáøÞó'–îú·qû¶-Ôã ž§“•t­}šî;¡Ö6¥èWâ©UôÃ;ýºÝZpbfžwûcåðmcs"-[%‘Ssu~ðÒš«À`Œ 01GV.mƒ”×FL1MÍ{¼LÞë a£Ü±å‰9z›…£Qý—µª¤°-4 ʬhž¤·âHB-—…øˆIÈ‹€•ñ¡Û¡‹»d‘§:µ.Bx-Úñ,ê•@!ÂÈ‘#80jÔ¨ˆþHi~è²…ØlîU{lÙ0-^CšèEe¯_}õU,W•‡8%šçç?±§¬grýÅw––oÿi¹üj¹|°\îÛ½®Ë»îÛ[½qSº0ô[¿¥¾uùIóÑIBY?þœÌšw­&¢à‘,—³6Õ¡Äãf\¶`Í»¯ !Âc¼ëÁ®Ë¦Ÿ˜”Šúo·½m.Q_Q4G”ÇráŽâ{¾cÞ‰et½ëgܱկ1ö¬™ÿVÊn÷úO£#÷¶i'LïîZ3ÿšõ{ŒÁÖl7G{#@ѶÞ1ž@8~F÷{×Ì¿zýžh.¾ûÆàiÔyŒÃúC¹Ó» LNHuüÜKÝì·¸³WÎ1âÈL…Íš- Bœõ¨õúl(Ç‘$Q ¨ªâòPF±•Õ6ùªX'®1©áñ:<ÑŒ~ËéíªÛyÞ¨’cµÿtœõ:ðþ6œâDâËsx/N6N+©¤ùÐS.<¥%Á­ ‘¢Ê åK¯Þ9“’IÇ‘EïâñëxMÙ üÄ“NÚõßÿMüÍÆ`1+l¢\DâÊ l ä’PÒJB©“Ök‰¤y.TÆá~ó›“&L°öXó Á+n>žvõÓkßëƒ,pšÇÍ]ñoNî Öí.>v»Ìþd§ÿäáÝd¡`÷¶Ô!±õÌ^eÅ&ÓaOÝ‘ù>c¸Ñ«[Œp¢O’†(íiU5ƌ󯫙øçì-õÑxãõL¶ Ñ™–g°uæ±÷é°uæ=ZÍ*ãufé`$²1-BÈÑ(¡á>~jZnDÊH ¨r+\E’JüØîpkæÑO;í´_ÿú×?ÿùÏ_|ñE¼Î‡—šió• ~Cèõf:€I´—¾.Ó·”ˆ»[PmäÞ`¼Z&ÖϪգÏ?ÿü/~ñ‹Çÿë¿&Nœ1Ú`FæyÅ?}aÕ~YÔ‚s š§ØAi-$u~Ð*ØaÚU…CãnüNèíþMx|; ¦QU®3H}ªœHjâˆ~·ZKyK‹’ç7iI'ÜèÄ„½—E:i©N4c~¶×—²e …È8H®‰0~)"GHs-1¦ëŽY›JÚk÷ñ´*/aÀSo<¯'{ü%äv7JH¸åšª.ˆ-ìIÚ8ND‰!V҆ZŠQEÉåŽ'’òè Æx‰;C†$Î'õœ‡5D#ùçxµfîØ±ã·¿ý-V´³Ñ\%AU䣗|¡”‚qYl [1¬–žfvUùè1c&L˜0é´Óh}Ftò€îù¢E‹Ì|½ðè*~ÙxàEµ$(Ī9&GP’¯ †ÔÌMó rÐC6¤Eƒ\.Ù}DMudW¥òFja ØÊšÜ+jéOÚŠŠÍEñ îÑ] P°ñ×atÊØg{û‚k5Áa+¼(¢:O èÌ@Ê‹X¨9#¹4‰- $#\b˜à¸ˆÅ*‘¼hï«HÁFâ¤ÙPÎÀš9'8ã>Ýgœ1uêTØUæëvÜçC–‡òIŒª¸«ÒTøIá«AdçHî¶&^ªQHsyxRÑn ,rÅp™Á‰d"(pl"ˆ©¾Á&#bA³ªLžqέÑôjÑò×Ä`—6’7u%R’¬Ñ”Ÿ©Õ2q2HRV=¹ÄH.ÞZS×oÜÜ÷ϥȑìMî5Z™hL\˜è‚”n$#”‹©¦\¸æ´?¥ÅH=6Ý®4¶ K{Ó í:WmZ„PfIÜáJËWM5.Jµfž¡ß`ÀPR¾DdÁ] Š‚èÞ&ÄÉšž#ÍÿYåL]iŠD±¥„DšóÓºHR^Hëw£öÕ|îúçÖ(Ò“¯ÿh gKýD‰cc÷ „ íÓ0޶ˆiÖ©(-ÖìB½ñ]šh2LÛ2÷‰è¢¾äbÕ^çyUÕ™sBôA4ÆTñ˜Q0)nU\â–U¤ÜÒ‹1–YX@•Þi¢¨Jbºñ#i«äTñrr¾Œ—Ûn]†ý|û L°àcç°Rö’E€!õ1EŸL.ÒIˆDk$©X·:d„ÿÃ^:Áv8+™xJÖ#¤fd†´}/…ïüžš¥?Š,BŸÍ©/Ä„8‘æ0]“šz,­ÆpŠ'’¥`êV‰ w)ðäkMµ‘•…J·ùêëÖ8pöDÚ›{š˜iíº¬-­». Ö–4¨÷ ¤­š‘Ðáq¨‹õêpb«;â8ÇÁa"¸Ií’ó¡à^4Ûiˆ¶®pwÔ÷±l¶‰ù‡—iDç燮ÖÀ­n.!…î‰(gz’’½ý¥±¿gœ'¹c\d`;aƔȦè+÷…SMì׿÷ûüBŠ–ëO(·ˆlšHâ~ÙJ)ß(O7)£H.µ”H25#)ý=å…ÇÃÂiíib¡$æSÁž+2Ķ·I@nyÍ6 W˜èBD$ŒVQ\¦h5™ïóÒ™ÿ"eJVš$ò—öNJ®<´eT>ä„F•ûÇXÂ"ʆΡÆªQbm¸’¹`[Õ_XÁ7ubÊÚ]{b YqÎÆ'Ÿ¬f¿‹Ç_J ‡HŽ Æ‡ôØ8~Ì #†Â´K²Ö>AËž†3bÉ®ªwˆ-qòøƒ-‚`‚–D•‘x‰q¬½áƒ¸õ®{VSÈg‘ú]TœQþ‘‚’\ìï­Ÿi<¦ÉÂÏ)ž£M75îS­®K<6Ïü&âˆ+*}ãÇǬgmñŒ‡ŒÄe7SΰH$ 3 •sU. ÖÅè¡õÈ*yïCnúwµ€Œ¨| gTRÕ,ÖA½b¢“È~?‚¯Æ\5 œJc“›‰1ÁÂì%zÛcƒ9L AßÎP±¦ÐŰµÉºÊ<åÄ­ðdüpdŠï‰Ø¶E.Y¢?º€ÿü–½0x#3ƒ”VÊÄVJãÄ3FÌIei¤æÉ%„U8FÅ3ò¢Œu›ÙŸè¯‡“™4Ñ o× 6¬z@?¦ «›0(BÖoê¡sLB‚”aâöŽrQhTIZ?–‰)1Âû ¯ †ƒƒ\DÍ+V®JÎ9)Ø r€½?4CF´ª/{Ô–$-$³l%µ<Ò€­0ñjƒn¢\¨Ó—‘Wd9†ÙlTyü%E#•ײ¤d®¨Ò…㾌ßJ¥ùY%¦lùÔJ9`mÔ •æRkãɵHWÍ DpÛŠd”ÓËÝb˜ŸQ#ŽrG¹9tØ'ì;aéG§t|æÓŸ )¢ÿv ?LD»RÙ¼%,YÌ¡=9o¸RÎø4n—É1¥mÚ”RRWl›¢¶âQ'Z¿htÃaìcbÿz²y‰6'%áŒØñh’PKeãh¦ë,ñ9wJ.¢Ãê«”‰fàŸG3w&€\MV÷ÉúÎ1’2tQ´É9¢€ 2ÚK›|’45&#±Ç&Ï9ÛÕ:K|“ozÑûüN‚Ý–6–³øèkBéúõ”ª¸-lHF[y5?…e~¤ísÎ6¡УZ~<ÑDÏ3óµ`&ê+]wÿû(È;rÄ>ÑÎW‚Ô⧯&œÀÆ'1[“ŠoÊ…8,R¯ÝBÀº •²Ûæœ<âZ!èù†Kt“'ý Ì “ÕX—œc®I«S¢ÙSÙ¹nšÈ1GÂq\ÏöðËk3÷ñœžõ÷ öÏyÿöÍoþøß7Y(–åŸqª¾Å±šL|%¥ÍEü=EH¦[}ù4Ü„þ…©6¶ãÙ`MwJÎÀ+8Ò!f‡3–[øj´yŒFIøí+ê’ðf2¤mèÔ•r6”!kÕñÂMÈš¸ßLp¹O¤‰f4d{(‘”¸“Ê}r£ ë¡Xiã²ú£ÊãÖ™H}Cžˆj+› ™J1‰M¶Ë¥¦8GYl-VWÎ@²9>1©âÖJ´˜S寽B.Ö#ès-¶ SB¦Z¯›×6Ï}ã¬w½ûÿ{©ð4>0€œˆûPK°4#ùÌÿK™ò²éÖ–T( ½¤(Š@K °ô“=óæ¿û`S:-¾;ó²#¸OØû¾Õî"¶„‡j¤" (q„â øö ÷÷iÐÁý>¹#Vê :º2CW¡E@PZú}¹\àÅ¥‹G79Jå<ßÂÎŒ¿i&MæHZÎE5XPÄn4½ ö3³‹ ½<=¬È÷øüéV"AsK?¦EŠ€" ´ô$|ŹDžCù^-lkçûø~ŸeÇÖrS­£} IDATUE „@ŽW^Å*³VšÍ”!ÉÓ‘i=[,L[à‰Då>­@Š€"ÐÐç °v7^€7Ll8¥êåÙ.,ámäà>^¹Þ†§w?ó»§ŸÙ»÷…v€A}PvA`ôè£_;qÒØ1£*;6Ã†ï €ú0©çsè×h?Ë8Åó®6qĘ×O;~ܱGWÎ@¯*Š€"p(øýs/¼øÒ¾ª9òWF¨ßgƒtøòòX?¸ÏŽréÿÐêöž!¾3¼Ç«š“FPª 0}º·_Ó à;™Ï>û,>ÜÙÙé~Q·)p“Ö}ÕWî]ìß¿ÜØ±5qeCÜ'"Eþ6› x/Y^«Š– ˆ¯Â;;ÑØz®¤ ðVWJL+ýF€(ë„8óx¨€Ô„f\ˆÜÚˆœö;wU (ŠÀà ïȃm Æã „þì¾&w®X±¾¦ˆIPAC@xÍ]«ƒ%ÖeÚúdN_¼x^&óæ;ý„;W¼9óK‡tf‚‰ƒ46ØdiBG¯‡8têFE)$6ù2¤$Œ8lrq½¡\b9.†„2q¬›çJq9Z(3kay%+ë#Å䟦yäl€uË©®¤‘ÁE 1î[ÿ‘y޺˗¯+ï¸q²q`çŠË\°ã üõ3jA§o»Ñ¼LR¾Ç[k(ñÜå;H¸c¹·ø2Kš‰ÂXæ~A®»Â3I~tÍ$ŽgNq™òGî0Oâî˜úëõ^z„\|Ѥk~ÄÝ#yøYìXþø¼ö ÌXwÖâÓÚ ›çœˆƒñ‚£›š™ÕY=¯T% Å”âu*°;<d4õ’"0XÈëºôê®o4Ä};ýø¹SOgE“æÎúÙ¹öAoÁ|> .>kÓ„I×\c%Õ57^ñã×ÚcºÐWQÏßÛ~ì›çŲ®GQRÜI“ÏòÿuØòX¼¹_رüÜ/~£ê”À¤$\m n\þø­AÏ:–ÕóJQR½˜¢Ù% ÎZÜSÕѨ&=WjD. îçƒkLh£ ëÙ5ezzʯ^EíÿÇ‹{ÖºI]ê[ûà¯ø³0Ù5’KÃiæþÙ?vº• ëIL¸þ_¼âFÓÝLŒ ÂIóÔB~4È¥Ó‰[ªô¬ªæ•¨%Vo1%{úÔs«þTuS#(I€òJ¥Òòå˱o˜þ,÷ae>³t¹<᜔cU‘ë¼Å˜ï³£?t Κ,=@¤¶Ý®M;WÜúÅsM/ÑFI¦(ˆˆŒ!&±æa,F¢´ÑimjÝX~MÚÕDÌ R…]NŽ6÷ ÕVa?ÇŽz”T+&Ï«Xú!ܶ£F$4š"P3 ;Ìÿ|æ3ŸÁC÷ßÃô'”çLh´ßGÖÓPkùÞ¼DzIm ¦-Ž1±?WgXXX3BÑN~YZ¼M+>žl_]Ê%²ï›z«{§’&K-qóqˆGíÌ~UÆ•òJW’ZLÖ«¸Iq`µãW©èµÆâûÜç>7nܸ‰'žp >úhcô'£]ð(À€B‚ýá>öèϾ°îŠØ´V¥!X¼-AK\ˆæä †éEÏéTÖŽå¤kî©iÚ­vïc0[3<QV°9îrEæ.©p‡¥Z^¾æˆ’JÅTÑ\ îòWKª×Z@ïÞ{ï=óÌ3§N:~üx0à„ üqÐ_-ÉÝ8 9¤ÁW9 ´ˆ_ðzFCó}Á“}ö®‡ûãO3ø_t;\u? ÈŠþ8o}Ïâú&¦Ö¯ðïUØÕ…eM*ׄ:±uÓ !²y|Þ¼/&Ĩ=¯ˆ’ú‹)XçÆW‚u*RBVñ1þüsÎ9gúôé Á)S¦œuÖYîën5*vïrÈ|6Úï›4ß»5ÃÏ÷þày½/¸qKn4Þ4á2o~·>hDí™I¼y/7Τúj§¥x8:wò63ýWï0ÚÕ³OÊ|^†‚ýKðxG0\[d“ß:u‡s›;˜5«×³ì–O>_ö°V)ˆït`Mª+®\ÔИW@ˆ<:‡>î­6ïÆêÀ"}×£^»CoV4ó~ò»Ý\õ<Þ®á‰ŸææªÚ:Oa¶½?xÍÒ&ºØ$U¯†ÞõøBãÙô3yã©”„Â2HQbÈ—†½Üé£Ó,íûÑï‹å¡E@P†üûLO¸à³l|£Wذ™ý¾!糤(Ãsgƒø° öãQj¿oØW @ÐÚ&®›:æ…®.*Ãêê!HР¡ý¾a_-E ­ …Ji[Ùñ¢¥¦ÿ——¿no0Ô3tA=šthPú‰*’EàP! kÓãÓäøê>INß#b6¤{¡Ž`ƒž¾ÂE½¤(ŠÀD4‡_ÄæCïÞ6#îKó¦vý† gj’" (é ßGL‡­LÃ^ÓÙC¿O:}îÚµvÓ3Ó+Š€"  hžŽYÏLØá~/õü|îÚV6(÷ ‘2S3E ÿXÊ“á,ó…¼ôø"÷:tÌÛÄUƒ"  ä¹¾b‰fúø¹f¯œÃAJ¿ÏëÕE@PC€^b+yå"Vl¦Ñ® €™ûxe«‚ÓÓ£U®´ã×ÌšJP† >Z_x÷y1æ-å=,ÿœÇºæLø•süÞ¯E@PZ¡8|øHfúxàKÇ܇~ŸCv¸#Rÿšø­z (íˆ xñ¥|°ÃŒy½òZÈÏŒy©ßçsÁ}ÚïkÇ: >)Ãêåaf¯Äý>º×Áoµ ÷á.*üʇ¥Áሔú¬(m‰Ýä%~3+ºäÍëÎû"iKçÕ)E@nd³|—{òœlfI^.äýA 6 Š€" ´BhùíR@ﯜÍyy|ò [G@vx$E@hrytæÊÄzøOÝ>&½¼¼èÛ)ë¼ÐcôâÖ{Ñ (Š@ @«Wy^­]eú}Bq4ØÅÝîeFĺЫ Š€" 0›aãnŸyÄG¤&ÄfÈŽïÓúV ™" (m1]&Óá°štïhíRz¯—;}ä)ïqMƒ" (m€Ø ¤&{y”O:|Ärò@>ÝÖ~ª Š€" Ä ¾ãþtìp@kXaÃû8ùÉ^_çc§E@h]¨‡g¾ÖfuÉc0ÝAf= ~‰3w)ÓÖõV-WE@ÞוþøÍ­ÃËû¼bÑ;X ; Ô#Ìx#rXêJƒ" (í€Ø ºwòL‹<ÍÇò…‚W,x^Å`˜¾TžÉfŠ#¼B_;ø¬>(Š€"P,÷ÒÐõ£{¾þŽ|±PÄÊVÁŠ<쟷˜Ëô)÷i•Q¶@l†îÝÁ>/›§gúðh‹ÜÝÍKÅR©xðV5åg›Á‘‡a ¬£Þ¶(vuBö`KCÛý^®Ã+cÃÚÌÜÌ—iñRLù¡cˆ¿ô˜K©”-"®E@PZ¾¾¾b¡tðœ—ïC g›içr‰—ôò™.^ÚúE®(Š(ih[À;²´lV10c^yŸÃ©ƒçÍ_ÅMP–G€úrå2&÷²¥<Öh¦%ìyÊkXå2ÙlžWxáî` §Y]ĪåK\P lyñzðâB>—ýe;GtÈ›¼$Êgry¡BÅNPÖFÏíqÈb¹f³†3;”Ïca¿œ7b$ŽÍº¦´ªŸR_k·Z¯(ŒbÁ{ù\žq±‹ÒÓ l 9¬k:’í£‡ûÐûÃRf¬è)Š€"Ðâ —Åð¶³\‡®èŽß_£.½ê1ÂYÔ§´ªŸE@PZ&ñr^çb=ôêd1+¸å¯ÛŒWyýUüpž|Ñ (Š@ë#@C[p_'MîÉΦß'/¸uÂC^µ”¾×AŸpÓ (Š@; ⣯²•Ì˼A¿O(V¯ò×mI;8­>(ŠÀ°G@–o‘½%> b¾×A=Ì«Ü7ìk‹ ´ 4™Çs™ Çæ® w%€M°}œWOE`Ø" }=Ûã³\§w5†m•PÇa€t÷ÜѮПá>¼çtý† ê¤"  ,÷E¼ ú}þú.ÃuRP† Ò«‹ìqªcÞaRÔME`ø" ]?×å¾á[ÔsE`˜ @=>ÿë”®Ëüp‹#•­† (ê¦"  ä½5~ŒÏâ>ZÜ/|Á¤ÇŠ€" ´4æÉ=‡åt¾¯¥ TW*ÈdŸÜë¨"ÉJ/P†º´¶3_ u «hÖËŠ€" ´‘®Ÿ|«( ;ZË@¿-PŽj¢" Ô€ûΚùl[¤£§ý¾ºAÕŠ€"0Tq­;ì…¥>÷á«äl7ú}Xð@¹o¨¢Ú¥( "Zsé¸å-úã\™ñSîk]M¦(C¤çXÌ}^П ÜTî‚ŧ&)Š@?p»~Ôï“®ŸUªÜ×O|5¹"  YlÇÎ<ÛíñõJÕ (ýDÜš³Ümñ»ºîÕþdל»Åý±@Ó*Š€" DˆB0zfÍâ;g^»Ô.â¢% (ŠÀà!È}€M7J×2h:¤ªPPD ñ–èôÁ>Ã}EÇTÜC–´jÐM¦(Š@ÝìÛ·¯î4&ȃæðæHÁIapü]’Ô•E¡PˆORÖ¥A#+ŠÀðA`ÿþýxzy üMzˆ…¸›Ë}"‰ñÌ3ϸ’Zz¡zïx  Rõ*­ƒ@-\oŽ:ê¨Cì“Y³Þå¾ÈR¦bP¤W‹?Ê}‡¸,5;E`h"¡ LêÉózòD ŽÅP]¿ð*~æ[Eî_âºÍUaxX*é´aUÌ4‚"І$ö¬€‰1›‹ˆÌàÑÞ§?¡¸ZǼ‘û/Öb‚¸±øxÕ\ŒT›"   —(„û)?p–Ì~Aï/[. ^±Ïlè®AXKî»ï>íâÕ—ÆQ†- ˆ;ï¼ScAðï{0÷•2¥ƒL|½ÂA¯\ôJî3/)–Š===cÆŒI‰¢bE@P XŒïÞ{ïoàÝCJüÙ•,ÑÈî W:@܇ØÐ½÷‘d¦ßg?ûY¬-ƒ“¢¨LPXŒïá‡ÆÀs°èÏhgA|Lvé÷x¥Bõ~¸«ªqÄXZkäÈ‘ZŠ€" TFwðßøñã·lÙ2X³dèý™™?,]*›ù¾r1S.”K…R¹D[U7°ª*z|‡v¸¼rd½ª(ŠÖÇòËÇsÌŒ3"÷N%8vð›%æ#úÝi+pŒ³ÊÖÈÝK.¹}W}£2VzUP€>¸~ßk_ûZô¼š» i½ð ýѺÍò´ ö%â<ìèFpÕ ô÷Žw¼£¯¯¯jd (à §L™Þ\â³¥€—w3ôÁŽlÆ+ã@6:¬%HÇõÌ3ÏÄl-vjE@\@矾t˜×›{ÞãôfrØa¹T/S†ÖM­lèr¦²©zUP !HùLÖÖËÓ>Sd iÕèèÇ ªµCúÜv½Æi|E@$ø% ÉÊ_B¢ñn÷<°e0Û‡/{ñïÀ5À}5͢뚵"  Uû=Â|ȼjÌ1´æA|Ø:ò|¿}»²—Kâ¾z×ïƒjå¾+6Õ¬ e‘Ñj‡%¦CGÜÇlE÷|1Þôû~ÿÜ ãÆŽ­]©ÆTE` /õ' Ì+ÜÇš¨ßçLî(àŽßþ~o²Ñ´Š€"  )xÌ‹~ŸsoCFÁÖʱcF )‹ÕE@P#GÔÊNñG–q“ƒïõÙGúD¢à*Š€"Ð6` 2r"ÊÃæ~¢œžtnÕE@P’0Üç’°aRd•)Š€"ЪDº~ÔáS²kÕÂT»E ܇ott[rWPÚå¾v)IõCPêA@¹¯´4®" ´ Ê}íR’ê‡" ¤!þ*¹ÄRîKCK劀"ÐÎ(÷µséªoŠ€"†€r_2*WöAÀ®še]r_èh?ÕE@PâÔ÷|ßÊ GS¸påqM$Ù¸8ýZrŠ' 2U]r’ri̶”ìU¬(mƒ€0`õ1ï•Öt{³–­ºrb³\Ÿx冽X]ý¼Ù,T"  oªsßðÆG½WöD .îãnÚÊÅ<ZwÅFÆ4°•°x#AGi/† §ÒÝþ«×Û´t&Ë¢IÉ…+w†á§¨’È×MCrh å¤q;˜Îq4Çð¹öJ۳ΫWŠ!P÷!þ¦¥ÛçïEXÓ½iéÌX,ìñV…„Ï|èâÍqï¯ÇLnÚ6±–Ï1©æ,‡Œ¦dñ$,º†t¬òê5©äÏÄ+—t÷®5ùo\ÛÛ½„ÆÐÐ(Yv÷úy†RENb9n¼ÓäçXYI^S–E Ä}5|]hÖ²«™»æÌïö¶í4·?üÙ@+|bç6éСÖÕ»iû.ÆgÖÅ¥ÏÆ“@âçFTyòÛ¸v›1Êïø¡;YCˆçxÚ”Y½]Á]P©LKÖ L£(Š@k!⾦~]©›{llW¯ 6u%™sõ²mèÝ=±²g›p*¬]gºyÙ¬*9ù—Ã9ÒMô1±ƒuš4š" ´õŽyksn⤩^MÃÎ@]< $þ¸×ËyâE{ÝyçCSy¼ëy»¶oš5å4<ñÈC›"±Ñ£ó{Ÿ!ËÅxŽ,‚;©O«ó}õTh#ªszStGbQÚó}‰`ÌY¾y™Gw18¤v¢0pµ÷:âIæ,_ÓÝÛE ywÇó!òëí:ßL ¢#(Y.Ú>5ÚïãùAV5z­ç«Šåèß+Á4£áÓx¦*Q¶@ sÅWÜ}÷ÝÅbѺ“Ífo¾ùæ%K–´…ƒê„"  k>ÛÓóñ›o>X(XFäóW]u•¾Ó6¬«…:¯´=òuJ÷•r\}ÌÛöШƒŠ€"ÐöÄ×2PîkûBWE ó&€¢"E@hKä1>|™Aû}mYÄê”" TA@¹¯ @zYPÚå¾¶,VuJPª P}¾ïéÝÏüîégöî}¡Š&½¬(ŠÀ!D`ôè£_;qÒØ1£ËÓp¦Ó28âˆ1¯Ÿvü¸cn,M¥(ŠÀ@ ðûç^xñ¥} kú}r$‘A|/¼ ý¾†AÖ„Š€"P‘#G>ûì³ù|¾³³¯–ÙØÒ-s—Y‘'õöïß?nìØþp_t¾/þ`“õ²" (C<Ôâ²§御í‚Z§(Š@sPîkŽªEPZ Ƹo€V¶óÕßݰË_E¿¬á ì§ >}9@æµVɪµŠ€"B@&ôìà·1îXLŸ8íj³à3­ßÇ‹ÿm|„?Bß 1’¸ Á§/ã×T¢(Ã,Üân˜üéá¾ÄÛ»ƒÕĉMÖôs®4Ÿ}'d° Ô|Eà!Ëåpçû¦ç×Ï~N“¿0IÏÐG)ã·¬0eGi©únYfq>`”öÉ£ðP7þÙ̦ƒ§ E` åáy—sÎ9û¦Ó_¸Ïÿ8Pò&‰ûQÊøÇ-cŸˆ @4¤8sû’ðwŽžX¹¨ÆåäýÏfÒÒùõ-·?E©ºE V@vgœqýÃòòM§?Ã}òa]#߇Ñ'xÍ'Øâß{$ÝZìã–ÉIþ`ÂüµîÇ>ä{½µ}ôÍÿl&}¨ÃÿJQ­˜khîÏ|Ÿ‡<^üÐLðzfµ}”Òõ%-Ipd4zzDnüy^þ˜¥„Ôo^êgMÝNŸÏM®©»¯G\%Š€"p(÷äÐ××'{ ¸_”ì§=æ•.›bPýñÜ~£òÅ—N8y¬®eÐO 5¹" T@ µ ÆŽ»óÉÝU×°úLOÏ'>ñ‰ƒ0ƒa0„E@8”ìٳ穧žzî¹çÜLåµ wžoLš4éä“O®×¶ˆªî6¬Wo}ññp^W¯$ñŸoÆ£-3—â‰i/útð(Ÿ‡(x—½T~¸¯>[4¶"  @|xu÷˜cŽc¤ƒ†µéq‡¶\.áT|ÁwÓvíÚÑ÷E|4ÜWtĹýò*UË)O"ÁÅóñº†¬RÅ1I¼4èU·+ãb•(Š@ €ïuñ1Í•Jà»Ryß¾ý <œ ÅW÷¿úâ‹/>ú¨=ÏìiÌ_é?b {„¬óbØ+¤=æÕUª+9M¥´7`=Cè¾ƒx»£¾šâ±y¾]Aw6±ÝïÄëc²Þ2¿D–¸D•]ÕJW©jJñ©E  ÀBX¯tĈΑ#Guä‘G}Ô˜1£9fÌGÞDoÃ÷:ø å,:mʬޮ íê¼DUïÌÑKÅØnYJÅ®jåOÝ¡/8z­]žEV©Ú[ÓÒî*UK×îò¼äE šˆ•ªRCžG™sÁ;^÷º×á­5ÉïÄO<å”SÎx”#ÛUª¼`ˆ\}•RY¥Š„ŠšFÉ6=P!ŒÀ@Œyå~†;¥å¾Z™³Ü< ‡Bj‰h‰=Ž·ÜpTì‚—@òNK=Xði­†kxj¡" ´&2æåçüðló«üh3žõ+½üòËýth»~Ê}ýS“+Š@“ˆ1¯5Ñv‰ûðŒsÖ¡Ã&û¡êE@¨‹.ºèõ¯ýQG-éð­¢Q£FÕ©#ˆŠs{|rAû} ã© E`@À÷ºëÿºécÞÈíå¾)~òø•(Š@[" «ðB.Xº€VsñC‘–8(»ë,7€YêÁÔu&ÓE«ê)ß…= IDATL£+í݂ñ-zù#Þ>YÍ¢†×ˆ£í÷Åc$Küë…+W£Ñ@¸ÓO«ê¢UÉxªTöŒ3ã@Ì»á—\.›Ïç::ò£Fvøá‡uÔ‘cÆ}ܱÇ?n,fýF=ºÿh5v¯Ã¬·²a¿žæyËÈD¡µÐ-²¾,Z:u ½W-lZÚsñæ½{'’¦E+/¢¡´E@h°RËøÃçþú^GÜ;߸qãâò4‰,Ïì®e Ã}Ò“¬u²ëSa)~ߌÞì]ÚCG‰ÂÀ]´*­hT®(„>ÁñÚ×¾+÷¡ßg‘çò\jÂ1B½ëTYÇ¥‰céÔ¤E«htຼê‹ÄTÑÒ€E@¨Ûï‹tšïÃúT›–ÞI7kÁ_=½’¢0nš.ZÇD%Š€"0ÀÄÐpŸt#kób…zT…Ø[ä]ÜmŒNʵàQ¾ÑèéñC/Ä™›–ÎŒ>ôWY´jôè™XŸWÅ× (Š@5„õäCl²Í÷UK»n×°­-:_n;¸ [])“ô—ŸŠ~\R­ŠAªE@,÷Et›ï´E:„µ€/mš5…¨× (ŠÀPE >æMxÆEz®è‚ÿÀ E’…—+F׋Ѐ"  `=7È)öþ3.ÎÅHÔ$ƒG¬IU¦(ŠÀ " ¹H—§Ä}ÒtÍ«þÕÍ\PÚ0kµø‘An"áµKýû»‡âù¾ÚÌÕXŠ€" 4aºœ£+†t¥æg\ÒM¢§YÙbSÑ—…y©,Î=0#'Ýx½¢(m‡žãÃîÆ¾öA¿X/ìpä´4†ÈLà1£à4ª"  ¶ß'´†1/¨Ç ÷y$Uª(ŠÀ` óÚù>z¯C®Éž–n¦Å›+ #ýµ—%†™$µ>ÀWüapð‚‡¬_Jq6b˜ìÆ‘«yáÃÏ(E˜jfx¨»+–EjB½ (m…€Ëo8–WÙìA}®b9‚Þµü6ïÆµÛfy=B+<ñÈC^ôçMK·Ï—µšÍë¿xzêY¿Ù+ +Sy« Ú¼Ì[ºˆW¥7kaQ´Í˶u m& k4;žE 5š" ´ „Wô½„ø…JŸ6e/Åê»xÉÅL~D}_$¯¶Ù¤³–]ÍïÝÚµ[°×™ ‹añB|´Ö¦í»x-,¯{¾¼¯[YXÉD÷Z,‹Zj«DPø3Ë2ø­×2&¿E= ¾‰D„ÛÖÞ¹=ÞëKS ܼL:Žˆ²I†ÌÔqÜÄÝ=¬…å™!5¯ö’. 2¨ü K,‹4ËT®(m‡€¼»áîá"N¼ÏKä·ô¡‹Wñhä‡ãÍ‘o„ਮ^¾€·€C\Y™j“ˆd„¼|ó² ±¸E›µl3ÆG˜“$dMÕC<‹êi4†" ´Òã‹÷û2ºâŠ•+Wî/—Ff27ýýßß°d‰xþâK'œ<ö…^ À…=S6ë—7ZU©´#GŽ|öÙgóù|íkÖ;v瓻ǎUÙÑÏôôÜzË-%çù•L¹¼hÑ¢û}•3Ó«Š€"  гê¥öÙ=y¿M¹oèZ¢(ÍG@fúÀ}äoãó}M2Ð_Õ¹IêT" (Àz`º"K¥ë‡~ß sŸ“" (Ž€Œy%Пô͘Wæu «/Í@P-î˜×„¡çûø]^;!xh Œ¼L/·%Üöƒÿttäa7•ÿÜŸ.i•„¥Êᆀð xm¸=¾–èô=qÚÕò:ð^úH¦¬‡ð¿¼7ÄË“Þ'Ñ'i⸨D¾„ú}CŸ'NôŸ ¦w„9̹’ßvÞ¹îE@ðp—,Yˆûê*6Ò á®ü%ªÐI³Q‚•}Ñ…+w&ä\ÅbX¡å íÛnA*¼­;+¶œ‚¹¬KZ% «"E`8 ¬÷Ôp_3}ङx‹ÍY*m)ý(¢Ž^$£Ó5ÝfI+g¹ªUÞC½QëÎUC‡3·/Ùë/ƒÅéžX¹héÔ%¦ Õ:×%­*£vD J¿¯Ö¼î@ˆgž"ýõ£hˆê÷Êì’VÔS3Ë\ÑjUÄ“¯òR0ó׺kÁM†È0µütI«Thô‚"Ю¸Ü'Ç y"K ¼¢s—·&Ü ¬Å<]Òª”4Ž"О4Ä}X¹eVo/²lBâÂSUC*ôKów‘ø•¯n\Û+ýHtù0üuùtI«ªÐkE`¸#å¾Ú†½x®™ºëLQà'Mh©m]|£¢tŒç,çy@„EÞÅÝÑxñ«Îýôôè©æÌM¾) K¢F•ú«fÁN¬Ÿ_Û(9®C%Š€"Ðâ˜5¬8nŒð¼Cµ†UÍàÑÍ•èÝškDE@ê ÜVŸêé¹å–[:omŒà5¬¨ßWçMÞAß8Ú4+ú%¤A°C³TvA`(¯aE½¥´¢3Öy®åù•v)õCPšŠÞf³!´–ASsi–2zœåÊf)S=Š€"0Œp¹O`ú}r—£%ÞêÆ%¨®+Ǹ«%qy‰ôò*qŸ$®í>o…Œô’" (ýEÄ÷æ7¿ù•W^"wÜqS§Nß×¢H©ÙŠ€"ÐN€ûz{{Ç7}úô)S¦ñAØ,7•ûš…¤êQþ" ÏÛÉ^¦ön¾ùfŒyÏ8ã œ6‘ø`èP~Æ¥¿8jzE@h-@sîãÆà;œÎ›7OxPîFÔû<²]Å Eè{¸¦÷y[«®¨µŠ@;!îËf³îWa=øh…îÕÚ}w¿Å!lh¸O(Ïj9~;¸ö,4¦" ( "!>¡<°Sc|'FTé÷I¤~æÑ »šLPF ‘û ï÷ ´n¿O$ ó}ñHZ.Š€" À}ñ\úO|q$p_b<*Š€"0ÐìÛ·o ³°ú£Ü—ø©Êß?÷¸c>d6iFŠ€"0 8ùä“ëò¼TWüHä(÷Åu½üòó™Îq¿ýýÞø%•(Š€"ÐÄoàVç¾ñ'ß¾©‘Š€"0Ü8rĨ†]nì• g§ E@î³Ï÷ £ÔE@Pš„€]Ë ²¨ApGYßèhÔªFP†ñ/óŠq OÓ !«ÕE@Pнy¯#£ï´ ÖªUP ø+Ñ~_âó}ƒe®æ«(ŠÀ!Pý—ÊXÕ*Š€"pȈ¯ãí÷2S4#E@På¾A_³VAC@Ÿm4è5cE@D´ß7ˆàkÖŠ€"0h轎Aƒ^3V|äl÷îÝÐ\±ò#Fœxâ‰øveÿó qŸ¬¨Ï÷õVÕ  .+W­uØa×^{-¾ê=¸–47÷?üá«W¯†wW.ZT—æäo“Ë;®¢øs€ue£‘E`pøãsÏ]¾dÉèÑ£åj ‡ÀåcŽ9æÒK/íéé©7¯øV:ßW/†_húúú@û÷ïo[ë1Á/xWO"Šk2(ùǵÎ÷ýïþçZ2ûË}¨–hGPzG«ßO­×)w—kå>¤¹â¯þ*^Zù|³„ø^:>£ùÅú§x•(Š€"0ˆ÷¹»‡ §èýÕ7æÝð¹Ûýjç}ýôïoûæÓÏü1ò-¥•bªaôè W>‘ìôÆÅé×’S<•©ê( TVÊ1Yëð’VŰ>8*bÝÅQQ[}†ilƒ€týÚl_oéZîý<£e_Ý܇\'œ|²l¯™0aÒÄS7ü`×Ïß½ëÉ?D¸ïÊ kº½YËV]9±^KÓâO¼rÃÞ ¬.±‘l\ÜÕÛ½f¯‰’¦dɽ`û kɨ?ö§8ú“o-~ £8mÆzâ…éÀz…²×Wòú ^©ä•Š~£2›Í;fô÷7=ñǽ¯œ:áØ×¿îŒy»NÍšrÚ`› ùhqhm ßW*{…"íË`=lyÚ×7æ…+£F<îØÑ#Gt3樇ù¾%¼ð]3^~ååt/ùg|%H#ƒà]±‘1 Ê$,ÞH)íâÅáTºØwõz›–Îd™ GÅn*Ï tÚ¬j£É jl”Ø :Ó^…4dfjŽa½`gR¬õA°0'V›ã2 …:”÷âÕ-¼påNkc¶””)#A,.6„ fF"ù&XdªG@/ =’”°añ˜1coˆ\Ýu÷…cÆ\x÷®”DCC\÷½Ž’‡[>Å¢W,xÞˆþ„ûÜû v:0ÕãÇ÷ò>ï‡ÿñ›ÆóÓÍO=ûÜ+ÆyËÙ8˜ßnZº}þ^„5Ý›–Þé3Ö¦¥=Þªpãâ™]¼™"î]ãõ˜±iÛÄZ>Çèš³Z0šF4+󡌊=Ϧ‚Î¥S1Fؼl[—mfAî½]£±!aó¬C~ÌÍ˼¥‹Ä(äÇaMw¯of(Ç/Â$zS­ ƒ ¶%Vƒã’65XÆ¢h«[¸Ê{¨×€Ñvš-#)Ž$¸,¼‘ƒp¾ïô Ï)í´¤*!PiÌë}ö¶Ï¯ÜåFÙxç ?ƒŽr©RºA¿󲊀îuÛ³žHêë÷xüq÷}ãç÷þËüÏÓ/}=:}™?Ÿ;?#Fެ˜ÿ¬eW3wÍ™ßímÛi~äýÙ@+|bç6éСOÕÕ»iû.Ö9ë⋘3ôS‘ÎîùBœ¯\Òíkµs‘”»9džuÈ·ÓMnz2èÝÑŒ)^$!$6GéÖ&d˜õ%Ug7ò‰GÚÔ½¤êô,ú…IxˆÝqmÏàŠùž(8mʬÞà÷*1Š FàŒ3¼Ýt¹½G×}åƒü`Ãêª'|bÕÜëMˆ–&OˆÚˆH^ÕÈxgó2uŽyŸ~ïâ¿<·5>Öóðo÷ìwì‘o;÷tp_GGÏÊT´žnW˜të*¦8t©‰S@©Ëc;7/›•˜ý!öÂ7,Ñ–TasL×V®T=º9³w•·¿†Á Gzt½A ½F'_uý7þã£&Ò®U·ýòÖ«æÑ–]Å…G/ ÄtåS[.ù’œÊÙŒ(k×´4y‚ù'tÒÇ>ö18˜p-ItkOÏ'o¹e_&Ã÷<(^./Z´ˆúkV””0é+k•ñi«`Κru ª&6·kÑH,@ói¯¹ìªÉ“?ü©7l| Ç6ò§vn™1éHžúκ-Þ<œrþ¼Ÿº«÷òÙ—¤å+ñ¼×œ:ÙûÔÆï}röl°Ý=w=°ðªOšÌ_sÙêÞ¿ùï'˳½{þ÷¹_ÿš¸¦=•"oèÖ¡ß—ceÂ}¦'(ÞâmŒÿá|Û®C×X[F =Á²t=´¼»æ-ã¦Ú³?|à ïT‡ÑH„wÍ™3ùSÞŒ… gˆÒS.[ý¥“I†°ðK¿¾4„Ù·l¼aáœÉ“I"]M¿Ó䝿(ˆN„wÙj9 ’ñ4'Ê#ÑúujŸh¿Éª}ùs¡<„llÝÀZ´kE@‚¤sß4v`Mî“1/rÂi¯zàµÞƒE:áÿ^)K Š€" ´2‰gYÏz”ͱ¶³ j±“Þ}Ó (-@Å1o {Vï˜W\u¹OØ0Oo·•¼"s]Æ‹o9’hPVG@ǼBk`6éÎÙ‘/$üLr™Þï%Öã¢Æn,ö¢AP6@ÀÞÒ°·;L¿|ãW|i²O(§m౺  o06llx8Äa«×)á>gVÏ;Œoðæñzˆ/x'­L/|àÕ_ Š€"кttt<ÿüóxâ7¿ùMëz·|„ ð ÞÅ/¥Ihå¾¢w€çñäýµb–nräñ^¶Ž¦Ó‡/¸ïújPÖEàØcýú׿ÞÕÕ5iÒ¤Öõ"nù /¼¿à]üRš+6c;p€¯ó–nç¼×•#·n}éŇ¾sGuTÄr±ù˜c޹ôÒK{zz".¤ù;ô=­laš¿RYÖ‹¬ÈŒ)? Š@û#€åLÐlöïÇjmàüŠ/Ö2Üü­P¨ÒËã•éMÐ~_¸ôR"¶Žq½ë4ivV§],š’o½Néìwwe¦f@¨ó}M)U¢(C|¥L‡O ña¯ý¾!ZTjÖÀ!ØeHœ knÀÎ’4lÞM(>pŸ<Ò¬Ü7dKJ @¹ Q8€F4ªº;HÒ¨uC7ôòÐû ýÉÄŸŽy‡n™©eŠ€"Ðä;mà>¹±kû}zŸ·ÿت†Ö@ |«;`zTÔÀù†Åøˆ„„ ïÞå+€ÔžíºûÂ1coh@·$©`gZç.Ñßš `ƒc.Õœ¼rD™Ê1®¦ù›V M¿Ÿ箟Üð…P¹/ 1•·!h6‘'£¢zÏ7^{ìÂm·nÂS·›Þó?}çÊ]F}‚7^û§ßxϦ?ÜöŽzuÛøì¬PN f·kå;ýÓí׋GøÃ]åomlPSj2™Ôé*ø›x +Ôc+aãwØG]”ûáR¡"P#O¬ºí+|`ý¢‰⢻nõnüÇGÔO¬š{‰ĨQïàE{bÕU7žñÀn¿À7aâ¢EöxðÌêgΖéc<á§Ü×OH5y+!ïLÀú¸°É® ÿú³Îsûs§ÎyÏÙ¿ÜI=?FfÃu³þõ=ÿÞŸSÁÎ P‡#6jÜ#ÿÒ£×á…@×=Ê2æ®Ze¤sWù½Ýò®Usã6¹ã(M/ ÙI×]?Ê\ŸïKDK…íˆ@¡Px1öú^î ëðþ•Å™§Œ ©€èg;ñÅã^éó~vã?»ôË»ŽëWdN;?üðDƒýMŒ&xd®Ÿýñ]»>ŽãïÞxÚçîì>»ûv𿑲˗óÒ[Ï÷žêízûÚùßÞõÀ)œ ž÷Æ7þË;EðÝ»îüϳ»‘°xà•AIó7Õ5ù0s¦ôù„ µß—Š˜^PjB`óÎÿŽÆ›9éTͼéË7m¿¼«÷©hŒ!}žàÛ ‚£pùýõ3oú«óéìü .õ¶? 7ŸúÎÚÍ—^Õ-ÄÇñžzr»·ù–·›¤iº•Í>’Ž"õø˜ù¤ãˆC}Æ¥ÙH«¾!ŒîÆ­KÆ£%K&œ7wÆ-¿óÉÙçùןú¿ož|ÕhåÖ)\ý¥§¿ý†SvÜb£$«ª&mÀÎ’xqݧz\^þÒŽç¡g·` ße) †L7ø†ºuñ¼K¾ä¸_*}ÏIXÍí¸NlXÖù¾@VUYâSLÜjû^sÙU øðß3:¾wãŸòn¸|6OLq+—grã Û?¼ ÷É~äSÁÎ h7”¡xtºu©üdo/Ü{rç–§O~gÝAÍwÐuö5çÏ›ñÀ]®¯¯9u²–Xd²¯‚¿.Ñ mãxÚï«—^Rj@`ö-¿þÒM“'O–¨ ¿ôëÕ³£©N¹lõ—vNž³ÐÛ¸ú2g46TÎáÑÆI çø.͸aãj˜öáîš3gò§¼ Ψ`©ñ€Æ-³gß²ñ†…œÔUHÞüKÂzÙŒ‡Žýòf0ìä(’æ› AEŒÄ1`¢°>Kßò‰_ýê~«Ò·ð£Ót…¢àO?2KK ¿­Mó71rT8á÷ÿêòŽ‹\#Ƕ:œ™hÖÕÎÓüMK'¬‡‘ã_h#ú+Sú}@.¼4e*WZDúHAÿ°³$CÐñ~š”É2ÓûìkmÂ}Âzî °Ra?±Ö䊀"0tÊC/à>žû£1/ˆ/úÚ ’¡cºZ¢4´1`«tŽÒìL¦ùÛ0QIš¿i&ò0Î5£]?$Ä}Ø"ܧCà4UÞÒ$ÒG¢pºÙ€ $‚Ž÷Ó$¹¿aïr÷:Ðé‹p$krE@P†n—ÇfÌ‹EMm6 ¶ª Š@ÀX)q¸”(lb¾ÍR•fgyÚ¥f™4(zêuJ†¶xÀÚ‘äe]—‚{!C‹½hPÚ ŽŽŽçŸþ¤“NúÍo~ñ«U†‰vN˜0~Á»ˆSümébMó·‚SX¼[Áç4ŒyËY’÷ Nǯ”Wî«€¤^jIŽ=öدýë]]]“&Mr(}ôô•Õ"ÞÂΈåbØ /¼¿à]ÄÎ4‡ˆ; ›‘æo…†âœ{%îÞåù5<¯èpŸb]zIh9-Zt÷Ýw¯X±"ú)Û}¨e|¹é¦¸©èßaqå~ô£‘K©þÆU´”$Íß N÷½ÂÁ ŠÃ}XÑÔ!EbC½Ñ[K½ÔšÄ ¢5ý¨Õêáæo.Ä}%¯ÏÚvr¿Ï¼Ò¹’¦F劀" ´Ò™ ÝÃàÅò²¶AOþùA$-å«(Š@:öé>'Jž^ñÍzyç6Q&G Š€" ´ô>/XÎ]²Š%ù\ÎËe½‘ˆ¡E@PZ£>ƒZP\§Cq8Å–—^:í‹ ¾²—sN[Ýyµ_P†' ¾{î¹=9Œe±Ž‹ ˜Ö!æeyòÊ ðžy‡g]Q¯¶A@ˆ=Ý|z ˆIDATîв}¯Ó!5tï¤ÏGLGã\Kšl@ÔE@h,ñ]vÙe²tºwvI^F·²—×ÜÚõPPÚ—ø0æ•5¬Ü±¬tï‚5¬d YÄE_çmߊ¡ž)íŒ@„ø¬«‘[4³'d‡÷=ú<ûE¯X¦Mƒ" (­…@œø0æ2¢s‡¶yÐÖ28PðŠüVo±èá@„E@h‰c^a=¼µkç÷„ó ¹¾>oß«L|DåB–$E@hÒˆöÓ@–µò‹á>Ð\¡P~å¥B±X,aW*¾Ú9âì7̼þ¦Ïf²ôŽžÆ£€HGÄéïE‘ÆL›ÓYrÂZ¼` Þª+—üüŠ]6›ãŒ2ô쵟½W'ªñ‡×V U¼Ç%¹fâð÷†)/^Œ KNÓÄ¥d‡Sù"§o¼y]OT[µœ‘tŒéÁþªSðf _°‹;Øß>û—óbÍb ÜK’yVÉÐ7œóÓà àC •Òî%нÚr˜YGP'i€… ¥"WN©o1Çl%ç©k4.£Ô^ÐL°¡ÉdðGÚ‹ÔXÓ0‘m;/©‚¯_™)siªÜp¤É`‰@Î )/j–Ü2…dŸÖ6MnÒl[¶éë—†,{²”›„i•rÊZŒçŒ]•&‰Èü­5œR‘Z»i¼$ô¼ŸüͬÃû©pÎgìËì/²èÀ}Yb ôûâß«¯ìëÑ¿bé¹\ñ‚ ß9oþüL&gç¼Mö8Jþ)ýűƒ¶Š'@J º@™=7Ì—¿âoÔ9pˆNRË› 5ÉT¤¨$†òGç¥ZQGÄzˆóR9Œ2G'Gö|%SÇ)vŒ<5Ƅݷ(™JÉ ý!«4¡J®«±X•Æ"W¤çb³ˆ”6´UÉ=]§©@qƒDê+w·Pv4ÇuBI "ç¶ÉŸcâÃèJj©qÍuŠÚb=úCMÈ?áÊÌ2j”à>i5DMà&Óª­ÓTç)*7Bªþ~159#9¹ù¡YæYäE™Ýò?¦B?/[3 “ÛdH™r;²t…#P£4,n| &ù`þQzSavê±NÛÄ(Sam?²ØàÛ!ùÓY±œÙ»ÏÛW0]«\‡WI%’9ÞóV=¼áøS§í{µ†!ÐÏJGGž·\/½Q¿ŒAð¯`)vrã*Ì"(٠ШüzP)ŠÞb¡jž@è±H¥–Ëgóùoü?ŸíÈçè—P–, 4Ÿ: "'ˆÀ°ŠÔs%Õ¢Žà°pÉI±Á (6„ÎfK+Ê þÒû.x\¸ë+ýRöRÙañY@—ÂæŒˆòÀÝùLG§7b„×™÷F”ËxªÊäñIK’µÔp_cð7M.1"W+«Š+·’Zr šMXQå´ˆ¦ ‘\B0ß‘¥¶ÙIÍu™ë4w©]>tˆ@œHm¥\¦Ú–"ˆÕ"Ði¹Èg¤¹$m‡ @3Bë-AO.Ë-²£Sš'“e)Ú©³ÂVK 7Ô#fkÈäÀ “•8¢åGÀ¶Ü´PæV:—bÀä•Íwäó aj•¦KÁ‘fV:q*4YÁ¨ü0hg½Ð|)#‚6Ò…j^ņYjŒ‰ ùQQÁg®DàSZ8ÚÅsÉÚ0®dM½KËO2ÈçðóN¹¢Àü~Ÿc3Å•`¬ø\¯ãHT…°©#uBTQˆ}¢ÎªÙ¥%LȉËrS¶~ÕOŒ94…ñr”â–šA$èwúŠ…¾B_5æéd‘ëT»¹™PU¦jŒ¨rK(a¬F='4Š„jY.å$[àé`K°“@5R#CZÓ(¸™r³dEDI&w: õÊ99+å B‚ù"5!¦+nMÔJ8 ÿáfàVtn'b*µI&?n§ÔZ‘¬¥fHM‡B#ýµ.ä²%¼ƒÁO%SGÙÉ öõ•‹±öüø±ÉݯKR",§œ'ýùü˜ÎìW¾úþtúŒü%³úúö¿ÚòšÓ§ý~ï~^Ä…©~NÄfØkk'W@þa1ÁtŸµ1ýMŒ/#CS}Œ·O«RÞôKO‰@°´Ë0w‘ˆ²Î”I!—ª-È öl“Ñ)U úOÍŒ/r'PA³È+›ÃÆ(—8þ¥¡ÿÀà÷©pˆŸ*üùõÁ6ʆ›%ÃJ)8ý£éוñÍÃ0^gþ`¹£#ƒÜŒ¥æk<+ +q£Ùn|ÃJp˜$¢_N#zãˆþxüÄÈ•…Qå8®ŠµÒØ*D‹\²È,1œk×ScLÁ?¨—Òd¨þšÍP·j)æÝ2Ó‘O|Rï%kîЯ+6C<Ä<Ü6I©ÔDÃ|tÏß¾úØ‘5õç°g9#Út}Ô\&ÇPd¶Ò¤2xZ×] ¾É‚)ë4^†5KV˜$å½d b²“ƒ_!ä̈Ø^†ˆT Xtd¼0¾°àÉ{q€@Æ©ÿÂÐUk~vx ÀãkÎȈîœð”Ÿl1ŸH•Sn\€²÷ !²¾à€¦üðð, ˜îÕ_iAM߃öfª­Ô]Ô-Ó{ï™3gΜ÷šŸ|<³gíµÖþÏž™ÿ¬ýÊ<óÌ3gΜBœ8qâG?úì}÷OäEþr‚vð Ø2"ã¨J@)̈Ӯw¬NIí ³Ã¿L& YøY8À?µ¡`NŠËÜR9¸E¥”†©MfÔ³“LÍR9îx‚xƒÖUUR |÷úÓÿíÝïî~ýë!æuVR½ü­b "kDÀðÄ÷üɯfdØuÓ» ÙŸŠá;ó! Ž@”Ã/è—œNQ †|jK„Ë„eèJY¨Þ7ÓÔÿëw‚ªý*Ñù(;SØýfd‰)?W2…J™ÙAO„†ˆSHÆ?WÓ6¡.±±£Ò¾þ(T)¤P€]R¹çLŒï­Úët,f"8C¥Ûºu+Äù¾öµ¯ýÅ_üEûSO=õù‡þo¿û»[_÷: ?Àr€ñä€!åDìÇ’­©À®ˆÃáÑ>"A,Ñ³à ¤W¹Õ¶|® y$’µ€áe׈,4§'k“’xRæhGëù”ÏJO$?“'•uŸ‘©è#Yó(š´‚„4ïÌG„t@2KÉì<ehAð%}õÒ¡Û¨ú†Õ]çY•è<[~T}ËÑÐ@y+ýàP9eÀQ8ºâ¸‚ÝÆ_¿Öz^•Q×Ù@೫êB«t#Ũ$zÍÑ÷!»!I5DO¯øê FnWÂDsëTwwübªgHü,õ)©¿þºþ@A€öÈíÏ=÷Ü©^¸öu¯Ò\‡¨’!É„€ñxM«Î " ‘Ç®|Š–ˆ{| U!oCžœ'B†¡8Ÿé Áü9’™É "Åät“(L¼Ìé¡’°ÉbE¯2X”mÀ Stè¤YÄ«œìJ7ªøŸm+NŠÓa£Pº:!  뾕”1Žçõ&£?³Ô­UÕÝ'f*ô|'ëê5c;SQ»¶9;%Â7Ž>kkKœb<ôÕ!íýÕí’Ï XUg ‰]匵BÀ¨Æ½CgUUQµWÕ£)ãIb[1jUüòíRAÔQ¾Âšh(éF.I¸&ʼn0 >ð$í«ç§l³4RR1êÅÍä0ïïC?ZG;:õ}êî&Û~=I%¦vŒ³t¿²[þê¤GÇÝi—L+U%íØ Ã.³^C† ¬Œ?H§…¡: ³ÒéðäŠxxÑYý7N©•|„p„ш\Ñ§âØ ÓP t[åø泡?ZŒ^TÎ_HTÏtðÓ–Í”m‚Ï6 vm¤òŸöõj@w‡óWO¤ì-RUè®ièÂRbVÚ†./Ll0ø£ý˜¥.U b{Dõ #?ƒðÁÙR:åÛUŒ vˆîx÷žüHŒžN‰¢6}ßÈ«Úò*£­ÁÖ ºÛdA •E—Tûú)µo”+Ì %¯°µ†BýPQa Sëô³!Õ«¼Å©v€õÂx3Ô¡‘^Naém;:º§hÝ6À]IE}³½µStÿ²Ð!àLNê¿ GynŸµO©ëå4a{Å)õŒ€º¾ä¤qHuC?e×UŒª¢ÒUñ©ÂĿً⦫Rµ±h®Z ·•öSaßPuK {ùî½ùM×¾}`€ˆùýû¿ÿ{bgŠf¤0Ð>Šöé1¿;bÛ.ð•éEÎtψé\_ïã± cð$[@§h:a2¬ë‡†˜~‡ð9]¢´Œ´Q¢^vØ'¸ ¯ þ ð}ÈKC Í6 𢠯cÂ~j¤ø˜.«Ôß廤4Ô‰oêÊÂ];õÜ´/¥þn€³* JÏH§Œjv˜"ª¬ª¢WЮ̪J ¬†@:IªÊ)ÆSÅ®‡-cý(×1©¨Wt/Ç7Q5Ç⻤K–ãð0ø£^}»ke…¸R2GŠçR´ï/'ÿ’~çà¤Hø@g&äåPŠå@úꑱs2üë?tÁÈçWäßjä ¬<=»+Óè)/ËJþ‰ñlfì‰üáÙ5™L»þ·ÿ §B²¥~I†ÏúžÀáñÙí™ýßÐR?mßÿœÂLÌ­é?ô)ðƒÙçf2ôwà ¯ àˆµÁßþ' ŒÞßÓ³ý™Ìþ'¼C°Ú Ì»ÿ pþÎÈ_òá?e2ðw~&s5“¨p5ÙžžÝ OOo“.%ÞŠWUù¤12gËÓÙg–0m¶pI)Ñjf%éLKXåTX[ßÈ%z€ª_»R˜.cä¢SÎÒqb£#`ÜYp—[%ªºM;zeÖS%Ùè€õ?Áí î¸¢Ê«,@ŽEMPÞh…ñÏ–ƒDøÆî¾sUn¿7rÄüÊÑÇgjD†ß8Â%ÉdêíƒÅ×`ç¬Ü§? |OÏí<ïŠÝx"ÿÿårß¹ù¯~9»óÐÓ€NûrI3”'Íd7¬þG.÷Oú-±ãïç^€ýÝ—‡iPþÀÎá±¶s'áäiç¥[~S<úý§1]þùÒmù^ùñ¹]WÝúá…\îßs¹å›ÿêàÈuäà ¯ÏåžÏåŽê¿}ËÃB€Ø•·~øÑ\îpé¶-Ž€Ï'æveÛ.Ùv¿Ä’:ç=-µ=’Ë|êÐoܶå#¨Í+ì`»æŽ‡þœÍþà7¼üÀŠªø_IW%ZøÈX[¼Œ³íxè8´¹æïà†Kcfq©y£ª‡¸ó‘m<â2.ãE^ÑF )Q÷Ç)ßC={bœ>„%&ó-L[œt½оzê©g½J…°ONªŒöŽaW7Ç%–©Oè ß`_UHQõ–vì_%cTžŠ–T÷°¢†œÊÉz‚ÊŸ ‹ÓgbbåEÁL\^§Ÿ “ßÈmï§¥H¦-Ìm¨ üò¬¿Á>tìƒô°,¥¦#çvrÚ§}Ä¥¨˜»­wßï^.r™ÌúÞƒ?É|ÓÅAEÔ|²¥XîÄH¡ÆÏ`_)g)‹®Š˜¨Nï x$§ÈgÜÙ°¥¿ÿþO~öñì‘/Ýž¿»ûrñÔ“÷‹»¯…L¼¨ç¾ÁËÁ¥Ëßµº{£L¹pË@2ÅOM÷=´k3ø¹¡ç¶ý™?xøÈªØðæûr§s‡?,'©‘œÅ~ã¡]  ÄFögþèá# +*ø&C¤—o¨_8%[0ùÌSs».Øyà£;³k³ø÷ŽYÉ´ŽŒ]˜=ðÑmd³ðw¡ŒÆ0p øU4N’§ÀŠJ™ŸÝ•½Pf¿`çìd.hýL6 `‚|×Þš·m¹(»söi$”ÀùèïŒØð«ýÿ0uøû2å0Dùî¾~“w=ôë·m˜}Z9@;äÒÊŸüqõÏ^üC`†¯¹ôbrø¥›v7:.1¡Ïù~xì~qå¥8J±§ Ō˟'þqWö·Ø c0Ɔá9óbn2bwà€ŸîGâ0ÊèmXV!ÃŽ;I¤o‘8d)…|)µ9œÛ¹|õœ|íóÈfŒá¢È°õ[f(ÝD@-"OÐÜvΙ7Z•­¤B)a>WÈœ®¶(,UðMù ÛÒ™9¬ó9ƒÌé~] 2Ú§Tñ›ì…Q…ÚR'&ôJ«×µO;v½RéPc_Ï«ëT’uRöš¸QÏw øV·î•ê´í~ðì?}rfýy•JaØ}`ßïC—AØöÜþAèÆ¿téjê¾2kZ;, .y3¯À-'éΟz$¿cà" 5PšLº¦ÑCH¸ÿ¶Ç:þÃÿpn×eÛF>{üà‘Üv§8||õr ?÷ê-q]î]/“²¼8+Ã_°Á!l`‹FN"jø­±Kw½öðñ¿»Îû.¹}öøû3»ßðȃOäz7PÀ¬wõó¢íÍùÇÿõ–Ë`)àÓÀCiÀ¦| \pÙM7Üïû{¯¿äÈWnË¿÷—£Ñ =ñÔ¡w_réËÄÝŸËíÞì»!ÿ?ò—¯¾õ¿ÎmGhD(èAüÖm#Émø¥CÕ# òj®Y®ßššþÍ ñ-q}ۣм:}1P¨KnýðáÜn( ’¬-;7?Ø‹Æn»MÎå¶¶-[\ŸÛ-Æ.ÝöÚùû È52{üà«Aî~©é ¨EÉüãRÕ‘LÛ–ûŽàî‰ÃSÓwÿÑ}pÚ±áÉÒ¥‹GVs#(Jþtv×ÁW?±k‹çZ»_\Mg }˜{j\Œ\±ðÐSù^·…B£pMèêÐ3ZÝ`êiN)%Ýxêq‘KÙu`ž­Ù(B¸Ç™dþèŠ*ç›ÃÝÒ“ä³ûqÒŽú%MªøN(Q°t㜣ÞЯ»ª'à´ºôz…±õG×Sïå/Ñ?ã93w²\1•—/Fî9oóÚz®ž]1˨OL–¥T† ywìý0%ªqzJ˜Ý’ÒÛeIr«ðèÎCé‹ q"EkˆéÛz_ÏÅ«yñÒÿrÇ]™-K'îû5´ùáÏþ^×ÊêJ¾kû½Ûoþþ~gð½<´‚ç`]¼ÏåʽÀ×äš¶r×ÓŸËùêm »åÒÛ|ç¯úáŸüÝ7r»®Øé€Ñ`®ü Ò®•³«ãƒáÞ¬L±þ•¿±ýéÇ¿ÿú_ü“ü‡g_…Âp*ó³=¶’û³oŽýbvç=ß?x½$,y |k¶|ã3Ç?~:š`C.ëÿ¥F·åFéRF:…ºÿ†_¥€w>Ý{qV@ë.@5†,I’®‡ რ›Zo½÷ðXï¥pp÷aɽÄãO9&¡È*(^û#Éùv&Òàÿ^~ÝÝ™-Ù}ùËòÝq_áYtéRߥ±5äz'”ÛŽBÇ6ôܱ?3ç°CdWÿèàÈ}Ogv]|àÒ<¹kZÂcõŒ¦}1x%êÏw—¦äiêá¢(ñuéþ¹"NEë/Ç]s„§¢}‹ÖSŽ«Çœ~¡•K†oJ†ÒÕ/xb<.uñýdÉz@@¿èFý§C»¨ `ŸrV6UÌÔ+?™ýÊóêCjÜ ÕwÀ°X>&Ñ%ªá;fÍh?mooštÿèλAv¢%Ë9Kc„u vJIúÝÑLjz®,¼Ûñ™ÂO@kÖm¹ù×ïßöé#°âY‡ "ÅhŸ«ƒ¸Ñ?ä^«òÖs1XÏ‹—ýòñõãOùÆޫ/]/É¥‡9ñ²)&Õ‰g¥ ióâ|;úN.÷b.wz÷å”BóÚøR%ü7DþÔα@#’¾Û>r侦ï¾Þ£”š!o GŽâ‹7”A=Øž:Ôíù€¶‘Ëà ¸¡çà™-°c·í*Up–¶håöY•±†ZÛ+NÑ G³JQ7˜¾CgIÒNW×»;ýÿT.•EOá«ÐpØÏû¾6nyû5j®Í¶• \FmOEg£+)ãÖ¶¡PÏûTåRÎ=÷Ü8cc{Ý÷7úèÊy•–æ_|ñüóÏ7´e3"´nEP$†ё™;¯èÿ<ðyW-Žõ?LœçþáÆêžýǾGKÀ.ĹöüÙgOÀNæ›÷ÿοµýЋņ+vlïÿò·èžüñ‘¿zhûͯº  ¸#ÝÉç/¿f4³ïÊñ£Hæä_.Ä*Á¦ß;õØg¶ú«'ü!è¬ä‹R¨NŠûbýoïý_¿ñÎ=ù?þ5p·ÿó‘öÿ Í«<òÈïç·ýêËD曟„߃Ç?A/™-#6t ô?tÃ}GÁs¹5ÿ¾ë/WlO¢mÃeýŸ‘bÀœ>*Å@1€óðÑœCú“±GÜèWlØ2Ðÿ #^?8dh;¶P+émJ©~¢dq8z8Þ†1ÃÛ¶l¹uûC»lÊgª@JKÔxvÃ%Wgî¿á>´& !•8ð.Iª.ÉÁ 6÷ß{¸X¿AÓ²®„ÎA ìЯ)yl«Š/íd„?µÇËšûæ¼dê5@;ö¡z”«‡¾¾×¥D)qàb™zC@U`½&ë•ÊØ§;NýBqhŸÊ¥ï«”z+rbTxu[%6'£º[ãÛ2ÕqÒ¶ëLg.½ôÒþçvžM–X&>ÉŒ:sÁ òýïÿçþç³íÙl[6“…©é€ý!ôi ¼ü_9’[Ü´³ë·@+äÓ—ˆ=رã¯ÎÞ…šv|ê»»²š…¡3ó©_|ù¯cê{¿±ú&àv™K¯»ïð_³å÷Ñ»?¿Ú{±TFüR±"à›¯¸å±?Þså/¹Dïø_¸ñÄÛ»ýÉÃφ^}¹—íü‡m¿põÆ?ø­ÿù/ýk^/?¥+#.þÏÛ·‹Ùî¾vK;ò°ŒèÚýø£mÙ_ s÷á§z/þÑÜî÷Áá —þ™ÿ|SÏØßô_òfÙ˜zãCÇax/ôÉû®KvIR$¶dÿHì˜>~ðÍ=cû/¹NŠý×‡Ž¿Å<¶GëÈAºNø|ÔÈÒ†žûïoÛr©Ç¬!ˆ†M­?‚“;ÄÔ¥ÙPÊK¼xäñýÀâüÆ]HÝý2Râý"Í»ÎCï`ïÅH'ÅtÞ§’æÁå#ÇíºD.›´í LzµÁþÝwß}?5)_nùð¶§w]ÜKˆÀ”…±zõ‘ýùN)êq¦ñ”RÒcŽòFdÑíFˆ‘Kú¯ÊèÌUÔ®­ÐÆÁ©9,£í[XöľÅ1!þ(Ó°ã<¤Dò\í+aJ·óêF•L„'|ªáPµÅö\¯'ê,%RUDµCTaŸj‹­³RTT¡â8_µÛ$âÂõ³jNõäW~åW>ûÙÏž9s¦££ã‚ .( êåú£,B¬r§~ò“Ÿá[ZZzë[ßjÜ ™ß¼çã^Æù€¦¨Àx£X Ð$Ê;ÏÌíêº÷¦oì%‚§àïÈØ%[òŸÏ톩LàÈ®T)ªG‡DÆàÆ[¬äVWrg!´'ïbŠÜKrô*EIZ‚ä· b/òÐCòéª 7 ¹—'¦þ#o¥No#{£THÄbú ¾¨J;Ð@áǨ²®Æ0‹ŒC/î½ é_ü™@ÕŠ£Ü»ð !ÂŒL·µÑ¢`ÞIì»|eÆ“ˆüÑyb6ȇ$³‚­ÿÇ•-Îñi¦Ê³*‘x&Ë,^N¹£NÇòXLƒ—•q ‰€£ÀBî!÷’ÑGµAîá¿BN2õÆCO}B¥_ß¡ŒJƒ²«©4wýÕ='ÎGà‘—MIG„_rÃÔrì7oêå  M†Y¦§÷>¨¢±¡‚EOœxÚ{÷ÿÑþ¥.š¡ˆ€ªèörÂY;ݾ7l™"V]§uµ©(TFœ¥p¹PV9t3É|+ê<];ÓM°T4d•Hòꔀ¤¨|ÐuR"ÉÇq’eê»Vè5‡öU1ꃺ⪪P ÔkŽ®­B¥¶«b… ¥¢¶:·I*˜8•è•!@”ȘRær “I%nTTÅWñK{x r>à1çJ5D=Œ_â7D•@†HjÍ$ótTÔ73©tJÔ¹»lÛÜ„C’ z`EçRä!ôÀû/óÏ,´$0«U åƒÊ ÊB)ú!–”#µÎ¼ÊIÿs¸U±¤s;±½ÚZ‹wå ufÝ»b·‡ÁŽCOY1¾ÐŒñO¨'¾ñhV‡J ¾N’T7’zF”ª!B>±W:Ó:U'¾ìÆ#[?„}ýŠÓ¾ñ €(1ý¤7ì0-HYO PõÄ®ä•QI¨zP" Põ êgWž´ŠfÔö´ÔFëIfÔ†"ÚJâ³ÉÜ3Ìé—2±'É2‚i…•®A=p’©­‡\0*Ùv#3088ùñŸñc;Š!éT)lß¼l~ )ÉÛdK¥Å ?-0+ýÁ>l:—"…ó,>¦œ\"yR¥~é”Î5mÿuaC‰!¬ QVÑ)ɉþ4«¢ßLcßl”¢Òm$ãÇ‘±MDçŠ>kkÓSÊÉk@ê4T¾~§Z•¨ôHuH;Ñ¿ Í)¯§ûöa´Ÿ|¶æØUÑHCƒº‘@Ø/”ˆNA.]•­6Ý²× $0 K¸Ò²bèIKm Kd˜®a‰È“vŠNAˆÎˆ~ÁiEzHÔ¦Yqp4rÑ!>eBQ@fÁ>±=Š,©"õီʳiŸ^vòPe3Ab ý0, §ëiûư_6ž*W„p´][gœ”8vÃôTÂg8Œ$̱˜éEýÓ$ñK¶lIòÜ® 1}c±ºBÀ¾MŒ».EÔíÑ>ÕŸº*rêΨ¹Yo uYÕ3vš¦¼5¯¥Ø=O§GŠý%=ª6ÛtG¥„R$'ìƒ;Ø¡P™ž]ψ›Ò/ùW3LÓ!•Nß»'õìv)¼Z–™ÓÃÐë°Ow2t¤ ªSá'»’×3†«uF=>Ô4V¶Š UÁŸѳaPþë§ôg7=æŒ_&Ç"~AL=%Ç¥ñz°ã”úD€*Œ~÷©úiWÔ8uCÕcG¯c)B¡¢S€œþÚc}`·Jnë Ã%eF€`F 9Χ—¥º]ÍåWpÝ3\«æf†u×kŽ2s)F€`F€`Ús9 |¹•\.›iÃn.yËýä¸f0Œ#À0Œ#ÐLds8V#¿9`zþºXÍTB. #À0Œ#À0Œ„ ¨^zôÉa0ðO„Á1Œ#À0Œ#À4:í@ó€ãµe×´µeÛ€÷ÁAž‡Ä6úeeÿF€`F€(@ ˜^6“]=ù²b£)Q`Â<ÞF€`F€`šÉù²™5œþ€öÑNÓ” Â0Œ#À0Œ#ÐÞžAžwž¤zäSÌ¡aF€`F€hÚ)°w®Fø8Î×4W— Â0Œ#À0Œ!PÀù¨3/kÆ•ƒ`F€`&C štÏ‘Å"¶G̯ÉÊÉÅaF€`F •ð8NË'ÿ`S;­ŒK©eäëŸ:}:—ãUëJE®ñäaˆûyçž{Í•¯n<×ãyÌ•9N,ÅÔ¦Õâæò ¢zÞSó0óÂk¥^âštíÏüL÷k_óŸ^ò’Ró²|Ã!ð/¼pøÈ"\ô7l½ºáœ/ê0W梱#P?”ô8âϹú¹påxRчa»Ø+|Ì»šË½úòWþy§N*Wç¯{^rþùp¹¿ðO_­{O“8È•9 jœ‡¨ñGü9W£K”¾Ù’ˆ¾a†íòV.ù|þ%/9Ÿ _¹86HþÓ§OÃå†‹Þ þ–æ&WæÒðbiF ¦Äñç\M/TšÆã}Û*®·Ë#À0Œ#À41ô9±‰ËØ"E‹Oôm@˜óÙ˜p #À0Œ#À0͆s¾f»¢\F€`F€`lRà|3þfk“B¹AvâÈ'“©¨òB—¾}ðŽ;î8øm-RÆ¿ôLa‚&€ ä“‘sÕêÖЫ_üª¨nÚŒ+sí°gËŒ#À¤@¹œ^K}}}r‹ÿ2S¥PÙ×®] zà7Åêþ¤®<ÒÏ Nüu8‹{æK_8ñ–ë_éiÀ£+®8ñ…R©O6tkwGX=7¨!ÝYaÂÕ+sµf;Œ@] ðÜcŸ:àmŸzì¹R]ZžÅ¼Õ$ÈÏ^YÊ¥‹³Ë†%YìŠ9¯XU*‹ócƒwÒI¹%ãU*;””¤[fý}™ºòW/{Ó[BYÜ3‹ßÜð¦ëÖ{¹áH\výõ—‰o.ê‘ÀÝ|ªÁ »œŽÃÞtýÖ¨a™¹2×|6ÍT$>SÏ^³ÛÛ¶‰e“E»³<ûà“›nܽûW]tÑUïÀÿ¢åK: \Íçdå*_·îÇòÙåGçŸ-É›.‹óA™éµ¤ ¯x5Kq £t’§³SSS´clU¤Mÿ-U¹r[9à´’äÒþìuoÚð¹¿uÅîòuùA>!)_×úõ]Lú’À\¹<ŸwméšsÖpº¨ª[ƒ*¹^½íʯdÈI§pBÿ¹2'޳1é àz}>ÕZž{ìÐüKoÜÝÛá§^tÕUj?®½uëÒäyq­–*÷Ò—Š'—µ æò±'7mÚTª–”¯Èü|ð¾Q1?xoÁ>!£Ò)Ò!š½nÄ ìŠVêüRí+aÃbLåa¾‘K£-éú¾rçÛïøÛ/u «žÌþí‡?·¡ë¾&IùÞ†1? }»øÌu…Â%dá4xó›ß ÏY]#¤¤i@ˆè ÷ˆº5è~¡ ó†Çô› I¹.Ì•9ÝËÇÚª!P…Ç–å¹å'ŸÝt“äAüoÊ‹ƒAO’Bˆº=²nëKç矄ƒu[ÞqÕs³„ƒ'§<é>²’úÙ×m… OÊD™Î’*?QlO>‰ÌS:ÐŽ&½#P>ïšÊ=A·o&]wõ5bêÑ嫈ß>÷Ø#?ÞºíšgŸ|„®)8‡% 4Ú…E…–˜³¤A"•¤C–WÓ‰7¹Q‰ßŠp>pÔÉÏèF±@]Ànuÿ~ÒuÂŽ0Н\IÚ¾):˜wÉúþöu;5ß^„®|*! |#}ûQX…“šå|)! ?g>U'Õ©hU·FÑJ¯À\™Sª¬†¨Ry/Œ;H·<;…ñ¿w=Aöö©Ç<®öì<6÷Jîƒü©w÷"`r*ŠdÇÜ@£üxöÇëv÷JŠÖ‹º‰\>võ; •«&績YÔªcã¦-÷v`¡–Ÿ›¶]$TãnGéÙBmòYbÎ’Bâ“›v¿”,ÏBãtÇU¨-(féŸ 8Ÿ¾ª@åV°é]ùe"Fœ#ZÛ7;¥4µ¯¼þ-_ØðÛo÷sáx ëɈù8!ößñ9¥uñÛ;_ɤ¯4+)MÏÙÄ„\ÓÃØFu*¿Æ‚~]gØ>!Ä•¹’5…u3G üÇQqŸ}˜š{î¹ ?þwÑU×lš?æ ­Ûzµ¤R@ŸÄ#Ï9rJƒ}ÝÖmRPæöbi!άÛÔáÛÂhëBib¾u\½õ‘CHÁž{tþ¥×ì¾Hh]¦]…5Äœ%EŸÅð$xÓFù¿VÌ ÒJ†¹¸iÕ¨L–Úí@ïÔÃ>$çâYƒÐ…ÝÒ/k,)x)ÚrÎD‹´ÕÚ)ôJ¶ÓKIYÝÛÞ2¾ÿ¯Oˆ olrôư?zC|{ñ‰ o¹5hû}æKãû™ô•o5dË!|ä_ÙJ·ÆFÀÁ•9>Å4 å?Ž¢JzQǦuó^è+J®*ç $ø €Ñ Z¾d€æÝ O,êû™Êø¸™°ë§BåUéåP7®ÌÍTy¸,Œ@À0Ü“jÓ˜<÷ØcÀO.º<#¢=ߞܴÑj(r²?;ÿ¨Ì޹=ы֭“AEØ`ü„ÿ¹gŸ¥†fìehŸöSÊò ÊûÒùçEZ”jcš¶Åœ%•ƒ„µò@¨#Û;á¥.ãLûªŒí…ãeÜØÞ¹’üÅßà…¤^'*¤a'BŠÒ©ö‰ ¦g×s‘!gvg.¥Ç0d8ìtCOŒ†¯Üù‚æÙõ× à:Pðíƒß¼ìúá@“)'J–b‰eëg «ŠTg5ê6ÝeÎJK’ %ãô$zf%åÊ4aè¡6°îSSP phìuôlõ1©$ʇÙoÜtàÁ@ì` ŒÐº‘_R¢p˜Å–×)l]·i“ײ‹=ðôÇpø—çXY®¶f;L».¨CÌYRòÐoÜ•Pj²y-¼7 N|üã/Pl/“Î÷Sùü{ïü“?ØS· £Ø€Q­cõàä¿2ÿë½o=uêT=8Ã>TóÎ;ïfÿñ¯ßZ[U6Á•¹Ê€³9F Lb>ŽêâÖÆA0î#˜ ¦Ì²×oö —4æE}ßûÞGl°j_ɋռ8•ËäW±£_.'Îm+ÐÖ[» xž2ž4>Q;ïÙ2#À0Œ#ÀXàÄÇë¶šcD,±&H¨Û’¶¯®ø;sF¬æ>hãý©L9ŸjÞ¢ _çA¾&¨\F€`F 2`ÈË_äš6S]›£2'ÕÚ%m_YEªwæ4p>Šóårk2«@kº5σ!Ð/¼ðâùçŸwúôéšÂÆÆ«À¹çž —›Æ½WÃ^umpe®.Þl( FxáBi8']óo PÒöÜ*´çæVVd»®¤}ù|[.änó_Æ¢%lkk{üÈ·þó—í+*ÌŽÀ‹/ž‚Ë ½Ñ âôŸ+³Ndêø#þœ«Ï+˜À«rˆ~»$yêCº¶+7s‚‚5J–7t¿öËó~þË_! Åmö3ðèÌf³¿¶õêdÙë<Wæ:¿@ì# #ÿqÄŸsMSsâ}»Èí0C üeeÐ"}™|ëP¦9cvùÓJiV>¬§àÊÜ@‹]eb"ÀŸs1ª±øDß.K;„, ûœœOä³ì˶‰fm·²ËÏ)Œ#À0Œ@+ ÀŸs­p•£ËØÞŽ OœsŽ/–Çö`Þèì|–`F€`F hz½s` 6häд+Ú2¢}M¸Î.2Œ#À0Œ#ÀÄD ½=‹$ïq¾šÒ¾åñ­Ô,“Ù:¾\_xÏ ù®UÏ9ģ¯ËåMœê—•öwRÀ<ŽÝ(¿Ë=—BÊuó·êVŠSt·0ÖÜ¡¹ ?H©Cí®r==…n½qªnï…Á>'ÉÓBú~˜_†4æ¼v`HT"~;hQùáè·Õ¨÷špã5©¢¡¡!Ð$u„éô] t’d\éŸz'ÅÂH'©Ô‚7fó8Û Ÿªó¶\}õÕð[/´/¼: Þ¦7!@¤0—;v}ð—ç «I¸ÝкQ U~)GÌKm;)E«Òlg¯paõ̓€YUÅÞ:~,(¥%¥?Cî<å£WBŒÛªÀzçæîÅcüIÞ<•ŽK’f¾ µí>üðÃïyÏ{>ùÉOFyÞ½¹Óqzn¨ãÔ¤ºØ«^± #ûĤÎNöfä.ì/ßwÑájöYªL· Éa²[}.,nëðÝ®“\ š„AÒo§˜û¼VbÒ#‹!d#rÁ§¬•enÔÇ¥PÐt¶²Ç@ò`{Å+^qÞyç ÖísW'Ñ3!ëÖø(„FÌú\å)1=içuÛ ¯ú1‚<9ã…(æf&1Ìa]z4j8Å «6!·Y.»$œÂ• ZXåóÉy;Ø5ÖÎhc»tt¡kcåÃ\ðo«àƒ 9Óº»BmÜ´Á¸]*s%šwðÝrË-¯zÕ«ŠÀê¼K—- ?þ'›Tý[¹{lJFý{ú€!yü ÷Õ÷]¤@„Zê>R J9.Ão™ ²Ð Á·¡“\Uþ£¤§ ¢3~‘éÊÎß²“vd©|¾®®®W¾ò•ozÓ›¶lÙ2>>^/´ÏY/ÐQ±8[·×HÕ¸~^O[‡ÓnDÝ0êòHßÜ õe²/=µ³=”øvÙ9‘Ðñ6jmõ’·ƒ]cíŒEõ«¿'èßVØÛ?oäæ´Ž'8ÐW_hQ*Þ¶«_6Ù±­¿[8êöbxc8Œ\lwñYèoƒ»ÄSD×”Õ…YäÃoJ °!m%±ýJ*œïæ›oîïïß¾}û•W^ Ìïšk®ù§ú'}‰Ž¤ºËËV JÐ+$òKcÝå™pæ³ëv'öì[„$v_ú6%¨-níœÊT2klaõ‡¸]ð1Ç}#d' Ë0-@e9_\‡PËV­^¾,CÞí>Ä&Õ>¥^¬J¨ Õé÷P½R¤dœ–Å X!Y€øy©Uß•ÕÕÕ{ï½÷½ï}ï®]»ÞúÖ·¾þõ¯¿êª«Þð†7är¹R/HÚò!Õ ÞÔH„×"‘Ml6ò:`}4u„Ø ­f~¼¶õ‹éÑQ¿û:Ý¥Õ¥µ»W8‰ÐŸ4UÑy;Ø+;£X-8·§7zƒäàCHŒtZß¶NëãΞB«œÄ´ç£^Nð›bù¿þõ¯Ÿ={öñÇÿ†Ü &¥º$--öú]ìÄ6ì/CïýDìI7&eÏUBm˜Î“MÂä?JÂ3Ì+ªù(ƒæ=5†C•ÃÊâF­­-ÅJžâyà|gäW™~a6HOÑJBUÎêDïÀ}àhWÂ8_Ï„ìBŠ:D¿£m×i·¤ú†¤or2èËd]z7"¡ÕÆ»§Ò¼}Üpj³#ߘ³]þƒK>·œ·ƒ]cíŒ6TòcGΆ€”¯p@¶jÌ ÿåлè÷ìqߌæ³ÑåF@"~÷þç®f aî®»îÚ³gO4DùؽwÞ>-Ãge÷±}›—šd޽ӧO?óÌ3ííí03‹Þ€ ¾àW]q¢³§NZ¿~ýû?8~Ë»oŽ® 333}}}Ñ2Ñgk°NXZ÷¢‹.¢ª60>¦äËçspH¸<ÿüÉï|g©šœ¯^Ær]a :·ÛP¸±³Œ@#"Àq¾F¼jµôæj!Â'é].¹A|oe(ßÊÙ3°ÇYÙÀ‹[ªY#À0Œ#À”…€9n·,eµÊŒ3¦Á²lÕ˜í:ºT+OØn}! } ¤NÔQ7)-á3'½­üÔ¶õuØ›FB `Zæ"7 ÉÒ _ÂÒH˜±¯Œ@ã Мoy|Ö± &nï™àµ°§VÎSäd¸2š·M‰C¸ A”‡ž[òA3‘Ü‚¯S—ØÐ´c®à³7ôÙW2蜡òЗ€¶nÇðp­çƆª*ú÷ìñ’¯<l(ž‰¥±îÉ™ðo¥îÍåè缌#PmŸóbþ“Ç'o~‹›jð~heaäh~fFFå³lnÈ%¶¸y V!’€+ùP†IÏT»v&·ëK@…0äÇÀœ×%¸½ú ð?  ®£æ÷ƒ^Iù¶utlÓI_T†äÅ県@*@eU¤¯ ªÂÑ;) ¨ú7xª½oc=’gDõ‚¼áAÄT¼g%Œ#`"МoÁëÀ‡­mÀ樌ËÇå# ·ÞI_¤{lŒöôô ŠÅcðƒw³•èƒo …€;zH¿4¶Ø«¢½ #ûÐ|¨>“½™¹«}@Á}¥1122JÈùýàƒæQ>!tÒ77ê{£…$ fv¶50êvç>i±˜ú7”òm ²^^®ô­Qy¸”u„@ãs¾Ž]ÄÞ¨boo‹êã.Ÿ¶½B*F‡Nª_|š_à!R|¿'@ÇðÞA%Ô=65Œ4?º=Ư> P…/P«°ôîïOFQ>"}^”¹ss÷d@<ëLö¬uO‘u±áoãÖ­!\òFB ñ9ŸèÙ‘—N«·rÁͱÑbKG(\„m…t][ÝW½M*e,ðí¾…}?@@oÁ;g:Gu“’¡é)1Áh«‡á3Œ@uÀç^×F¯Í#¬n#äoãê\¶Â”‹@p>ïÍYÑëu'é]ô#6ÐÈ`a//ì§*F|T íâ8Ÿ ^ý¦`8Zi"µ<>ý7%Å÷:¥Ã(ÚÉÑ?Žr-L’}÷"z F|?ÌÍLªÑ^Ø8èÂȲ«oŒ@ý @!dID݆³Žocˆ`ûAt¨üõS&ö„hmšeí5ìN2a^J$ƒÃzâD^ Ý„ þ~”˜uuÔzü§YN>v!jióVàüt(×<ì!Å÷1)öµìî: Ñ8 öB¸#$)ïÌŒH“ ç÷(@Ê׿äw…s‡™™›3ØÞ“ÖÎË$ÞZ €ñhY…ñ3Eöx€Í®Ûškðm¼¯3uz߯øÑ•éÍ`åôúX9 ÛDo/dÐîMï2Œ@¥hÎW)|Xo##`3v(#QçñaûbóžùÂÏ %õý@ðÙ èžëq|«42äì{ƒ#UÕþz–e²níë×:‡U[Óä}÷A¸™ÇÝgêfhÛ­o„Ù;F€`F€`js¾Ú_ö€`F€`ÔP“—fnÛMaVØ|Øm³ÍWF.#À0Œ@Ó"äÊÆq¾¦½À\0F€`F€`çãÊÐ$œÈ‘‘“ê¯õ· Œ[=*á¯3`ìL´”Æ­ˆ±%• {K:Á÷EYÍp¡Ï…碬çbØ-A‹2Œ#ÀTä|0gKð'gp‘«B5ú&Ûcåæ½ÿÌ| ùbÞ¼go×ÈèœÀòø¾Å±=} × ÝP]¨98©,™®4:Öué?®*·Ù.X@”.2®5ï/!Z¯áÚöŠY²¼´ù˜_’ ¼ꄵIÑ÷E€ÕL'gTý=¶(Ô7Ìò±ÅîÍå9“$7çaF€¨ 43™Îæ$Ã_üËçWýÚx–¦QhíòÞ¼r¥û¹¡Îé~"Æÿ†S IDAT³Âo»]XÜ<ËKâù‚M{i.šýÛ¼…ÆQWŠ”Lbp’ÔÀK^©Vº”f°ë;²4¶Ø+ƒL¦o¦y>N\¾; A©ê¶•-]P¬ªcxت[vŽx)¥PµÎÍ݋Ǡ¢Áõ·klL]ò ks<Û,Å0Œ#и(Ú‡œþÎ ±"ĹC)[6ÏsxíMÃ’ ß îÁ­wrÁ{v°9­Ì={ƨSÒ³½…!/Ð×;IòðR]4D„ð5£ÝÁ>zñw ï”– ßëº/@Ƕ~ô©†N3Ôê ß ±ä‹íÁ¦ø^X(è*ÎYªãñeÈ• k/}1hƒ–*Ð(¯×=?Y6oÛØåQ^ ¤]åŒU^=8-÷šÇý²+èœgáS„œ”)Ľº¯/ì #À0M†Ñ¾,P= yÀöNË_øƒˆö5ÎJs9–|«aX~J m»ǼÍí¦·æœl×ÕC5ðóZî v”$‡oIUq¾dX¡V+| zFö ˆç—Æ„ÁâÜacr4-õOãç…ÖiÀVež¡nÙcÐ g6U6K‡ÉC–Ž]ô]³tãzÀCeÜ{¦z Îòjaï…‘£}Î^ú9(¬í³A<{JL{ŸCÈÉ®çbF€(x¤gWòHòNIοð„RgÃ×›z#ã[ÿ­ErÔ _w %¼¶ØxEƒ \×HïˆÙ¦Zî0¼'5É’1Ð70!íz}« g zåê¾Åsˆ¥ÊC °mÔµz/?|‹ÆºÇ¦dˆWh•î°±:-I=6å+Úg©²5¸Æá…Ž”÷z'É“_@›1îWЙÏU^-ìÝí}ë€"á·¾XgQµ—Ñ"IäðÒðF€`J#]9+VVÄ‹/ŠO‰OgàoeU@bmØ]KøÍ¶‹cKÃóÛ® 7lxÕ¥ìa®âBûn·Õh ‰dkàh—烼% 7s<ˆ´ ï~Ü0ˆãõ-$aß7—uNK¤G^›¦§Õµ ß"A³¶baãŽá)G7B]U1 –Éd—¾¹c‹ô„a룇‚®©EÊ[‚(QŽgG¡ÃçF€¨6Y |«+â¾ÅéÅ™E8_Cú¼v\jµU­_~ÛU0DC¾´¶]°‡pê‰Aµ«t_ËüÄÄ|˜±BÍ]_Þö­Ú×½¥ìQ³££9®Œ¶Ã·ˆ?ÜUFÔ¼6QB."l<7î÷åÃl~tÑRekˆÛW,ZYÆ©½Aº`nrdD_wym±Sd´Æºc8[Ë€[ 2Œ#ÀTìêêjn5wætî̙ܙ³¹Ógs««@ûšb¶–JÆ:ÈNfßæ%kl¶v„o¡œÝ]G±?hG^”1Í·UÙ€EŒmܣ呪¡Dç†6Z5šH¸Ëk›ˆŸÒ3Ùe<{@ô{m»f¬=¾6–dF€HÌÝõ;“ÿØ¿>wVÀÓôgÄÏ_¸æï|ïÝr{´µ|ìÞ;oŽ–á³M†ÀéÓ§ï¹çž›nº Â¥ø±ÿrð›{þäÉ•³+r[=sæ ˆ­]ûÓ |mÇöëׯÿÇoy÷ÍÑPÌÌÌôõ“ F ;ÏÖñ:ñÀ}€wÚAeg9?Ç–ÝkÑìÆ/Xs–àäÉ“u|ï4'æ\*F ¦¦¦¢ß›£££wÝu¼©•¹vàyø|OR>< ÃT îù«RÃØGïÉÖ6€ç£oþ9>Å0@{[;0¼Ì¹çÈ¢ÈHD[V´µ5~ɸŒ@½ cvR[Ž£^Êdú#•¸«‡‰ 3Œ#PO´·¯ííâ¼—NÁ!üñÆ0Œ#À0Œ#Ð4´··aTï|­@íY‰¼1…4Q5–Ãì-#P'`ó®|ÕÉå`7Ê!€= xçjàÃ|•Cœ5W7ô:£WH?«eš/îôÆíÖqئž Å ðº»>S*"ÿ÷ËKÍ! ¨‡œºóAnÃA)%kªQ³{<Ïôù=ȵ~å°ZiYse€Þ`U®@™·äiYª‹#W+Åý` F€`F€¨¿÷Æøz¯ÿ“ã +É,> ykä„÷àhÔ.L5K‹ÉS‘‚Eä'ep–0o›‡æà£gÁEîå&'Î¥EÖ°çz2Â$r«¿`C1Ç’[)¦™Ï3Œ#À0Œ@} ðüé|œ¿ÎÒŠ¯YšŸxð?ø£”k“×qŸñ霢|Ëã°‚6cDÇðpjC'qÍhmÊÍVF€`F ™È ç/A‘)dÕ@½2ÊUG=ÒP>kԂܤ0¡3,Ý2Uá:ÜÚš¡ FiS†ô$j)–‹ƒÑùग „®P ššÍcË×MØ?(þ·ÿ÷é++˜ø½‹Í¿·CZÜ!6ŶfhˆÈGÒ,òEâÓ¾‡q²GXçSŒ#À0U@ —qþ{Ò£5M[=’òá’¸ù‹Û'†¦ôŒ ‹°°k¾éZçtÿR~^îB nϰ€ký$©8?+‚õ¸@£’ó‰ ×¹uÜë{(œñ¼±4oõs–îo³ç˜z@|ô¹êò£÷‹—Šï~Q!€ô‰éCËbùØ¢Fôô^~ ?/( Ðrð~P-,= x›Tv÷o–¼íØ¢1<Øz'Ñ‘eŒ;î–gí åû¨é¹cxoÐAÑW¨²Øš±i»7vÇ@Û6§0Œ#À0Œ@] °šqþûÚ œÏ#}s‡¦…Gº0ÅÙáCÀÝñ`y(ܼ%¢ÂÒÃpE×µ1„ÂÉLž~ÍF˜®RÓ 5KϧÄÐKgsu©Ú›Y^¶uRƒïþ_ñ žûߌ‰7ȯ}I@ËBÂO‰n/ƶÔ+=[º¤©ß‡[o{ ö¶l—¯™£I·”ìáŠù #À0Œ@úÄ!| “xk Î'IßH|ûƒp„ò´<>^î¸]25ņ¯(Ú±±KLîÓåJZ¢_1)ïuI\ß ÔaÃMlÍR? ±‹ÐÀÍ›†ÀÀö†·»ø—/Š×LŠ×< ~éAW¼_z’„ﺑ“âÖï "Èò¥dÊÅïÈNJÉB¼>í ¼Œ¿°% ”†þHn[¶Kº£È¶þèì¶<§0Œ#ÀT ³9A¿ü3íöŸ:›ØŸ&èχeGN¥S>H‚5N—6o…V§ÔS(Gò»ý –NBØ\;‚»8iKX;­Ž[;=i ùMô ÏÏÍx)2&™éí…y åÉUt4Œò94÷꿗⢬ÀcAA[ã  sÛEâ—„ø¤drâ9ñÉïŠë/ÄؾD‰‰ë.Ÿ¼_ƒFfyýv1@ißäû¥Ÿˆ;¤ü“__Ù¢ [»SßIß_y£x¹êaê·²$8mÙ.*)Ò…±Xöhø,#À0Œ@Eøþxê¿p|åM—04HQg_þÓ ½h·‘.{…wgbB €Bæ]<Ò‰¡©iÀaÚÔPpì–WÜOSnJö¸ýJXLÎf"p— z›6J×”«âqK¥Û-3{é9#À0Œ@,N¯ÂT-Þvè_ÏlûoÅ Ø×O%žF¹9ÚvcAÉB-Àsâ_„¸Þï¥÷;/SxOòœøÒO¼\/Mf¡&Ý åB1$•lº²HÛ®‰¶­_“øîOÄË!îÛ¯øjÁºmËvÉ4y\föHÝ|’`F LVsyýï3ÿr¯‘žØŠçƒJ…¾ŸX/gdê [Ÿ†~oD¿  4ˆÞùŽÒd+ÿ[¶Ø~勨¥ÏËBm¸ß¯ù¼¸õ‹¨þþõ°øJa ¡; ôð{ýÅçôbMÆÖ¯N~ôqO­øn ÖiËv©Ð‹"Gef/¢O3Œ#À”p;#÷ßÿó);1±…fiÛM glRnµ§¦{NØóÕbf.;ËwÄkT€ðëØ¥û¨Ÿ ë ÛÙà”®ViuÚ²]r¥4¥?0ž½I+‹`†A Ezç,söínÙ" 6Yó?pƒ7F€`F€`ÊF`5Ÿó—ØNÃÆùžxBÄ®:1812jmâ1¤Y„`F€`PrVón¨hé'<ÎSs7¾ÒÑãŒ#À0Œ#À¤ƒÀoüòyé( ÑâÃ"ÉÉŒ#À0Œ#À0Aàú?y°"z5¥í0 Œ_¸›pÍÞJûÈú|qçÉR,Â0&'Ož\+üš'ø˜`ª…ÀC»ßPª©™™™R³´ჿU‚¿†e~Ëã[;Gdñq% m™Œ¹¡ÌLŸ¿°n¸X©È±|!°v-¼¶xcx×»ÞEÒŸâ÷ÿ÷KÈÉ¢Œ#Pk®½öÚR]À8üç£PŒãm“,°‘6IäºfóÞŠriÝao X¿vqlJ® %ÖHÅe_y z\À€0Œ@2€êyÛ|âÁQ2mœ‹`ª†€ú`+É¢ÇùVdœ‚|Àüó- á›P •u Q¾åCÓ]{çqÚH±’0cáºAàß¾÷=å Çùêæ²°# ƒ¼6ª3OÁ|õ¶]q…8|¸ÞœbE Kýù€ó©?êÞW?åùò—¿ü¡}(Ô`u ƒ}ŠðÊ!å£s‘b284ç°–îå$F€`š æÀª«¿:¤¡ |ÙõVG K ßYŸöQkoóðÿç=ïùä'?åO÷æN÷é¹ÑòáùP1wfNmd g°m_®@YÀ„Kñòøš›r~D8ý€/ §*§°™h•4Ðâ¡©F€`Zl.‡uŠðQÇ> }õ°á»å–[^õªWqfáè’SbnfqlOtŠá 6ÿ1Ù+I‚÷¦KwâÄzDÆòÀ¼“¸éCz*í)”ÅÆ±|L„}‰Øt Ï—åcaIËÕfûÇ)­Œ@ÁG…õ!ãW”õÝÒÊðrÙª"Âs>¯®ˆ•UlÞòG­½UõÂeL¾"“Ewlëïžœq´ËâèþmØ•·01|A¶4Ö=ƒ@`óú†¥»\å4F/Gïë¡sdr¤3yðŽeêà£"è6m¸|ipt¹Ž®»Â`Û. ÓÍ­â0¿UèË!i_m·¸„½ìÞ;1ºàTŽÛrô†6eKˆXmËÉÖ«‰€»Õ¢¹HÓ¶ A¨—ªO Qî â¿ØóSƃ·Ž3}ï™À‡A /ÎÊO 0ê¯@µoRérgÜk—ZŽ£pÎÕ \àŠë¥k•Ìtž ¹¡¢Õ¬L¼ FZAÃ2UrvF€(†@)p¾œ÷—_•ýw‹e«ôù¯ýëgÏž}üñÇ¿!·›o¾9Ê"¼k—Æ©iÞÆb[¤|ÆÈ—˜¯¾R_°aéQîð¹ú@`m´ÉwËÜMè#£º‹½ê•¶°¸yJ†wá%Ô9ÝïµËÚYü„Y±zéùJ¦Äô¤£œKGã´ìbGS +kãÍ=m #Gû0à<;¸02*ã×ç!F’ÚnÙ±e8…ÈpõL_d‡Ç—}iÀo爐£ƒGkߌö1Åè3Œ@È,¾!lÕÃö‡ø‡OjÛwÜQÄ+¯)V¶ÎÊàÊèt¿Ö•ÏÏmŠÑʧ©åc‹Âß1_Õ»³Ûë Gvë‘aè“·Ho/x3õNbHéöºˆ¢Žtè5Ø;‰ýB©e7ü­×¹¹{2`… ûzúÅâ1 e”²kz³ ÒÈו}¯ÆìUÏ’ú¨ ñÖ³ƒ8-¾©Âå3ÆóLü\Ðp#"pŸ)mÙŒ\y# Ü/#2ò·)¶ž‰ÈÏÔ¦(#¢ x½<ñ[Â\Àï ¯[èì ±°ÐòÛcJ T1Ì¿ U@•MÔ) @×ßÊê£BÖèâ!¥”®gÏX·˜ì-,E#Ë2Œ€‰€Œ‡á†œ¨^[›hkÙ6üÃSžG cc—ðÇúÀðžIkNG9ÊG6àú›Ìb¦ø ®¨Ã‚Zva´.¼»`è®·ALÏ)ÎÍèY€øG”¡¼È ܈4™Yž´ R<K´"Õý¡Ðø€€¾ž¨Zñbp™ ÍB/#ÚÛE{›X“íp诽[s¬’¨=ªÓ'öÒ³cpÀÁf»ü>€2ì€YDA¯Àž‰Y0Û€è/lÛÅrQx¹°¨7xóÌ/‹ì2t,hMvcSĨ;SAª]™X¤ î/Ðà>†£„ÂÁIøu£R€ðÛã™V¬g\æZ!ÐN ïiš|!ÂלVY­‡vh^ìµV5·ˆ]è*d­Í‚¯³áÂ|†v0’k3û›E6´…ø¤g!í†å†î¶¯4À‹¦W1D4hAOÑNÙ q–“«Ra¾‰ ´òÎãGH¦7Aëî±±A1]ˆtDííyèMPp/¸Bœg¨F Êxœof¶18ßO~Re¤Ø#Ps`¼ïB÷XȪ35÷ŽhJôO¿€zš÷å|`è'ýO/uÖþDiJиPŒ@"àq¾vÍ= õÕ©¿ì#Ðrà$2# Tlžh“N¶\`F€`ä ç’Gœ†nÀÒÈ#ÀÔÜ.[×½`F Á€1^>5Vû–7x©Ø}F€`F€`Zš¢Ep>•ÔZ„Oo7“ý“ úǧYY`Àھ͕4¦³ ¨ëäÉ“ è5»Ì0Œ#ÀT ½#_•LÖ‘µ­yIô憆–`.³:ò])µk×– Í¢Œ#` P'“!Ø^ñ•b”ð8DÿZ¯Ewy|W=U‘½ž‰¨©RœÕ0Œ#P—ðduyYØ)F E¼ÑDø€ù¥¨ºÞUÉõUû¬IÜÐmqp9è¸7n0W©Klh–¬Ä }ýiw‹®5^ï8±Œ#À0Œ#дöÝnX( 7Ÿ¼ƒÄaÙñqVøKo-ŒÅ¥Çaq,·ØâfXH×xÀIª(Cáò]MPi¸Œ#À0Œ#Ðp˜œXJÕ!¹Ãþ:¨r½¡Yo],X-Uà¼ó¸õNú"þÒã0ɼK¤†ˆõoó;z¾^{UÖäsÎø˜VµèS|a’…ßaRéñ­Ç—Œe˜…F€`ZŠ?»+à|’ædZ…öáÂóa ÜÃÌ·þf¯ËÔp1`½B*YënåÊV£²øÃØ| ÏMqƒoøB蛪Ü(ï½eUŒ#À0Œ"`Æù ‰úöµ<={ÆÄH'ö½+Ø ÆhŽ[:º@ ÇØk°°¬·"*üÁ±Žáag¯Ízó™ýaF€`*‰@KÏÕ‚Mºqd! ÓóM`ÃlÏÄÒØÖNQñЕÂ#Å€Oî“*º9ÎWÉìÖ-×yßfη¸ä-cLŨMЈ—ºßÌôÉ.™¸ëO©b£çA_)3Ö52‚møÚ ^Rëû©é4ôËõÕ`Ñú.U$S‡yì.;§2¥ ð®w½«q–eFEZ[šóáus- ‘¡ùü°~Uý•Â)ƒ5Š³Î¡%7UíV´‘ßëÖ(×ÂÈ>œÓ¼«wtnX¼Nœ¯g® ª­ã0i6ÐÅ™¹‰89³Ø--w@¸Vlž ñÆ÷ì…;Há<µ¨ ÇÑÄ!Ù´äÀ Ì)Äžó ¡Ž¹!^Ô³qÔ÷µ¸F–`â ð‰O|&3׿¶Tß$Îì°‚>^7?©âXdF€H ©©°·R¨GÛn¨,Ÿ` 92gil±W΃›ß¯` Ž?_OÇðÞA9b§ss·ìç ”¯o¿˜>´,ò£sLìñ=8 ÐÞøý`<¯½ ýö !pl²7˜*Ètƒ虘íÕz¾`…´n– ²*F€¨<Ìù*1[¨!ÃScÝ“3f§Í(:¶I¢‡”o[ì]Ц|QºÊ¤ÚÀå`×¹ñqˆÔᆃhüy-Œä@.0†$}û€òuØ_œ=峔¨‘mýÝaÀ XçÏÿ37ãÍãnø³>¢¤1d? 6àÜá '1 À¦Å^¶)÷Í’P5gcš Pçk•YZj‚4­&=Ò ‹ì¯Þíâ@ã/nØÏ£¤oÁ£yHú&%ý 6èÍ/Â…‘ŸXšEÃÉ\º¼9˜6ÞN’Åá5ãB_ÏY/q@ô‰K8°\:'#{ÐÃJnP¤ŽMßø˜ˆ€ “ûÒî›%¶.dÚ#`Žáà€_í¯ {öØ} ¶o¶ëz¢C  É=¾Ç¤YÔ]S+<ë‰Ãþø!ÓtŽá¨ æP³‚:hVÈ úÁªF xq>TB;ëdF€`F€¨x G=\ö`F€`Ê"Àœ¯²ø²vF€`F€`ê€óQ÷ð–käõûÅCÁK˜ù :ñÇ/©W‡d¹ê¡B±Œ#À0Œ#P—˜c8ÀÉ¢}¸pÂâØR^Ξ+×a°ƒ>BS¿hÚªYñû2Ç—ÔWâ*!W]V«Z8Ë ÔÂ,Ûd¾wþrx88_¼ŒM %'d›%ÂÅÁi ¦;iI®&(]ËA[?ªåÊÎf#P¸öZb5œ‘`îχ“õúK ѕ©ti²[émŸƒ\Üd›/†qJ6˜. g¦—8ëo$œÁVÙ —/«wùéxRÎm´*{ úeü‘4«/H£ãÞlm%4I7@…dF€`F "´0ç<ë3øk$½Û'¦`ºBœæÞ…i«faÁÖ%˜" Ö×7_RN«; 3¬¿°‚'‰­µtB ÎJ 8#¥à’ aúç†pRa)ˆ³+‚·0r´r†*RMX)#À0Œ#À48­ÍùÁ ®¢¢ÝcS²g®›àÓ®»/ÙÓ¤Ð[°÷ëcÍ õ b|ß ôùK9kRèºæÝc{$õ 1äTƉŒ#À0Œ#в´0ç“‹¢zk­ÒõÇÖÞ®æ¤]él:ãÃ廄ŒßÁê©é¨g-ªñÒŒÃ8Pmï~û¾3Wa+¿·È¯2ê·ÊÇåôpÚâDF ÒÈj/;Ÿø[‚{§ÒN²~F€Hˆ@ s>Á›ìU7lE^ô Ð\˜>$_àv·¿„PÄøÄÒÑ )¢þp¼®y86•?#›òå>š;Ú Oƒ×AÀ-ËïT7.œZ#º»ƒÇb|`³Œ#P<ΧÂ1R·J± õî3 »i¯ö v§£|ÐŒªÆp”\$`|“úûÉ zåõì~‚0 $3p´Ë‹ó9õóºæ%C]‡dï#¢Ýc—þ½c‹ÐǘAa¦C •ã|òbú#) –cŒÍؼ‡F]éž,ÊÁ.ñCµCºi44;5òuÌOLÌ{¹\ú±C¡çGÀHÃŒ6]õL¿@Á(h/Àk%„ÛÔrɃsA›±c¼¶4¾¤‡ã\ wžÏ0±èÞÛ…#×Ì Ž9L>fzF å9_=_ö-uæFýQÐDå¡AºŸpg…Úa]¹tp*Ý+œ R ï)2^;îÈ6}.Ý<ç`JD gbÖb}as”¨šÅF v˜œ^oµs†-3F ss÷d0áÀñ9>±ë´†gýùÌùyâºé)Ç*ìúÂÆkëÃÀåÐoÃ縦YŽ(ÉúFµÁ¡s”c…ó2Œ@U09_Uׯ1½ñ´~½dÏ¢¤Äו‘-ʧöÔôCw°‹¿%eván(Öè«N0^Ûás¸A>ä…ô9æÁiÉzú@Àã|ðÒ«Ø F `Àó‚ê‘­£ú’+@¢`‚Œ¡ÉaÑV“n˜À#ýPàÜÌd˜TtzÌñÚ–’Àgë'0•A—£\ìõÒ<‡@ePf­Œ@5Æí‚Uf~Õ„žmUðL#£aHöâØÚüÐØº§ÜÖ¥ŠöÐó^m IDATÚ£É}dÿ¾1˜Ìû¸ãµ5í¦ÏÉ s.F tõ©€9Ï!P:€œƒ¨3Ú €öq—¾:»FìN2°MtØÈŠC£' Ò\RRDEöh”·ŸÝû_‰Ùòv ¨uØÓÒŒúÙ;,Ÿ“áÁ¹â˜•¶ ¾:*oq,Á0õƒ÷竟kÁž0Œ#À0Œ#P) â|á«̬—`F€`š"ÐÊq¾`r\¹2FM¯gF€`F ’´2ç\ã,‡ZIøY7#À0Œ#À0UAÛv¡I·ÅGìâ€Ì‘}‡–‡q('o‰ÀÉ“'Óqöš¨1|ïÔø°yF bÐô³ ž:ïyýù˜öù€Cƒï>˜‡cr²kVç‚t;GðÌÜ ³}àÙͳýÓ½˜AB¹¶BX/Ôl*² y¥¶ÐnÅjL£(^»vm£¸Ê~2õƒ>¾wêçr°'Œ@Ehñ¶][}9T!7OÁŒÈð‹±úË¡âìojr=‹¿ ëLgJÝ‘Àù«º†,ój¬©j.±¶Ò¥²[ÑJÂÊF€`F á8Ÿœj¶ÕÛu-‡*ºû·É&^÷b¬þr¨Ø¬hÕ³ öÑ´nJ`ùÐô œØßlÍÆšªŽea-µ¨Ì·Ûðõ À0Œ#À0•B€yÍ8_‹1?k9TíˆÅX‘¸•±j6ÖT5Ë0ÃYF€`F€LÎÇ ¸c]˜>$§u‘Ñ;/¤§ò8—¤ìØÖß]¸¨«[3.Ñà­+‡Nµ|©Š" ÍÆSÂd<Ð5w>ÅO”zG²%؆ ÒÖÙÀUëTQpâ È2 Íi╳×'–«|¹+-+fêæ|Á¹kw×ÑŒ†ÂŠ­³´†«®Á¹$%·Ù®‘NŠ¡Ê·§¥Ù'Þ:°Æ¡”_ì• °g m7¢­z 0Äuv)ž½Ô?ÝA¦ 0 «œƒ”Í™I…‡åe-àCº¦¹¡ÞI ç’²Ò®C˜éB-«¥i/Qº»{±7´”%êbñºG€/wÝ_"vHŠ@Á:I•4h>seIYŒÂDs}Iäk›÷Ì.Ù…ÀÑ—T•)¦æž‚u`-qKÞr•ìð¯‡Ë¾å÷¢Äµâ§;Gç†Ó¥Ë’‹wÎÌMôXKó’Ý›;›á’ôï›Þ7¾ÜÃs5ÃÕ,Z¾ÜE!bF Aà8_ƒ^8v;»å[Øa³¼ ¡ÍA.n¾ÂR¹ù1=бaœpRÈQ>1.Ùp?C-ŸJf²“Z?t«´é‘<#ªÏ4P˜qÉ+‰^¡!(Àé€<»uëV­ˆ†/sçðÞ®`˜º‚Þ©3[9mÁkäÅå“•F ärk׎/^¥¯ëg*‚s¾ŠÀÊJk€#ĦÆYûîÌNöfLÍ“ÏÏ.ŒŒjÝÖ Ö:;H+µÄ 3ûtªìÔ´‹¡[2SØ·ÓT©¦IGô,BÁ¶ ¹~æç÷ú¼UÌÍL2÷와†l59‘JtèÙ'ucëœÿÈ…§Õ×å›1ª¦Ž²qF€(æ|¥ …ïÍ$³J²ÁÂé  ^ NÑ@ž>`uÞÔ<¸OÀRíKµöü;†/&±Ã m‘³M‡ZÙ=Ò77³8¶ÇÝP-i€ÎŠCtŽMÉ&`'¶EQª6¬¶d¬Ë×Î9cTɪ9#ÀÔ æ|µBžíV½É•ì`koׯÔ×Ö+P>³4hö ΑÏÃÈìJu»f*â@Ïž±Eè°½ = ìr¥´ÁEtº4`Z8Ja98½&—»&>°QF€Hæ|©ÂÉÊêœ{2à'Ø,%ÂXÉ}¦Ö.Ùô2ÿާ{éè‘#RÌ»í‡"¡=5¹*gä,B LIÓ££Ó"‚òáÈ£)`}~¨²˜NG™¢Qrdà¤"Px¹yƨ^ 6ͤ„s¾”€d5õ†vŠ4¿M&ƒA¶Ò[å¡yÒ9†Ã[¾%‹//ÑbzPxkþ™9[ÏÀÑ./ÎG¬Tg˜ž­¨i{™ÈY„Zwº`•é‚õbL§ài€¨,ªÓ‘?%‡<'ÕýróŒQ5½lœHÌàààÇ>ö1hsRêàôÞ÷¾wÏž=Ñ>ò±{ï¼}8Z†Ï6§OŸ¾çž{nºé&¨0««¹Uø—ƒßÜó'O®œ]‘Ûê™3g@líÚŸ^xäk;¶ïX¿~ýû?8~Ë»oކbff¦¯¯/Z&ú,¯OѳÐßo¦OQØ¢â,Ð$œ|ÙuÝKsŒåóS⾬h™U”ã:ižòÙ®£Ke*ŒÊ®ÑÐ*­Çå Ÿk(°Æ$[!®¡ŠÉÎ2Œ#Ðꬽ=ùôŽ}ÍŽÍòø¬™«u`êNom)O¹RØ31ÑìxrùF€`F ~0×ÛÚW¿Î¦ë™\žk¯súY ÑД0™˜· ƒŸØ=6Ö¥< $A<K9eݾÍc]##8_G÷Ø’7¼ÔÔŒb0¼†V‚GB® †êð:3#Þ!Œ'•j 1—.¶µÐ]Ñka–m2 ß;  ¹Œ@< 8ùZˆö9–çؼ%†æ"gÚ:Žü)HÄ4!Æ_o!©y`WsCЇ®` z_yÀ==Øà«e= #ØÀôËS­û1•úOI×&žÖ ÆpÀ½ÓE.,%R3k9g"D9n·a?‹SRYг¨D+ËD^ † þ~”˜uNÒWå]„)è2WˆJƒ>³GaPKè$ÃðôPC^*VV9xFY{xË(ò°sœx2µ ¾¢`€xü<Å$}€nïPª«¸i׫¬R+Ÿðò-Ž-åå® {Q)dƒÀ8 s¦¦PŒcLÂü8~«PÐKí+˜ehš‡áÐÎŽŽBª·…µÈÈ ûœ$OkïõsK+s^‹4$*¿©«@  Ñx×E•%b³È~ñe Ç,«.ìÒ973Ùí¿Ó\þ¨’ yQVÀ¼~½$Xj÷¥QË«^bS¡«4­•f×[ëFÃÑò>øT÷œ—Ø«–ZS,רú`ÝrÈlÖW`¼Ú€NmÝj<"Üq8ÜZ5+V3=.ʧž&Jiܘ½õJá;ïÂ$¥:Ó¹Ù«Œ׋O¹ §8œaÎ炇Ӛ ˜þ°—À›”ãp u¦Î†h RæM…(„/€©§è´œ=QÏŽÐ`K:iœ 0DÎþˆ¹±Û¨"% #û˜× Ûè€Üõ¦‹á ,AÜÅñ‚“BEË¢®«¤¼¸©7hA‘ýâ{S<ÚÞjøX:gúò^œÈíWÒ  ÑV$ÁõRæ`Ǿ4ª)1íµÒsð~QõÖ9©)r^bÛF´˜ªT£ëƒ7G¾nz[[¬Ï°( ¿‡ŒÍ Á¤óóÐÛ:¤RÎ;)ZÍ용Լ®r–U¹ÍŽtù”ωRâÓGµJ÷cQL‚"©UIƒG®:)†ƒ)+ºŠ©íF3¤À3”ŠO|æ|ÍpE¹ ‘DÎGXt*D`{d¼No"¯[Ü"çGt>›"&MôùôÁ«È‹’4Êt{£€p¸¹Suèìz;’”¤¼¸©7¨ ͈¿îm¨Î¥±îÉo(|¶fAJ³¢_jëÒ€*{ÍÈÊÁ'M•ËA½\îKlª ™—T‰©Ú(«c’ú Y0:µ9Ñ›Æç`–Ç~‚Ó™âÕ̪™aæf½çKœû·¤S¢Zéû>é¯8&:¤>ítT7t\A8Á¾°š•ï*zÜÃ/r>8ŽçsŒ@“#>¢³àЄQt~Ätft›?¶èL§ÄË¡)Ù)ì¦w¯Šðê¼Õv½ÅÖ^=.eûq‰uá˜b¶þx)0›樢Åx~EJáèÂϧ´QªÓû1f1m1#J‰.ŸÔP4/˜“YÆ-˜üq5i1¢§Bt‚k~ÄRftZ1¦ÉNRv+%™ ,¦•ÂãDS<ÊŽÖ²õÙíUDVÜŽcÓ5¦[”SP½UÜ ì„ˆ‚‹”.b”Ûq‰cŠ9­ËÄ„õA²›^?ôîpL¶êâZVÀp_ÜΔUÍ´H•1zÃásˆg¥@TÙûQõçsc³2Ä“¡Ðð sX­ž¬xí˜m»LûZ½‚4Cù1‡£4º½a3­Ã9¢ Çüˆ.9hõˆ;û£+»™ÖÝut?Ëpþ—°Æ©øe zPEsH6Å£Áwúc¤¨çô“&@òØ9¦S’CÀþ®ÐJÎÚââõ>cðÄŒŸ£4¦XˆuºˆŽR#äýSÈúºý£îÃ3A¶¢Êx Vú°JeÜÎÊYN5ƒPª ï7¤|㼜÷‹³àN¯œ’XûщIÌÊSLó…]äÈtº™Aw?þñòwÞyçž={"•ˆ|ìÞ;o·f¶‹ÎÃgÓ§OßsÏ=7Ýtt X]ͭ¿üæž?yråìŠÜVÏœ9bk×þôÂ#_Û±}ÇúõëßÿÁñ[Þ}stÑgffúúú¢e¢Ï®]»6Z ‘ÏÂ×tå'¬@U,0ÿΣ{LÜV êÈÆÉ“'Cî¸X û¨£2ÔЕÕ ²À(­ù£[í©ñdsº+¤Ö®‚óÚÔ°"%2=55ý޽뮻àMMÃ8¼þ|‰l5A&}”y‡‹À00r›ÊªAÄ/2\–FÏœ¤šA<²ºsHLÔ˜ð5ör`p%'2l0p›Ûv ®ß’]PÇ÷ôÈ–!˜Q}/L]+—†ÍÞ„ã°F6†ø… ¿þ–Bg^oúõy077]gÈp¸V>ã@º¢;R9‰`Š!À÷N1„ø<#ÐÀ磜¦i†Týt—2™ëHìhæ©nŸÉé3ªï;CüÎõ?%›Úpˆ9¬$± ådåf^9áødgf„ô ÂðÕ`ižÝ|JG dì!ƒÄ0Q„ÛÊÅçF !FìNýÌÏ'›+[xZfˆÚ]_¡¤‹\‚B{Âñ’,±0#À0Œ#À0&Äëèל“Ù”m©ãXë+Èiâsý»f·:óÆŸ~½¥.–`F€`ÊF@Ѿç|…S®Ç\_Á=׿k&q‡Bçdåñ§_/ûʳF€`F€h18·ã+Ô&gÇÄø¸ÍOLÌÓt™ £æÍÔöý¬óÛÄ¢ð Wú&&ü\¶B\ŠŒäõñO{_ö­ —¦þ 8ÂZ.V›ÊæŒH/Žþöý"p¤'†hYmÅP8Ò Wx.D+9†]W¶¨4,S¬¥M .W¬Qfù#À0Œ@€€ê³;-ç+·Z$™„Ý·YNÞrýnöü>¯žÝcK’Æ'™·NhAÍ|~ió±¹2 D¢O~Áêï“Ø£Ž‚ÄPͰPèäŒoX¢å;!Cò%ÈcØ uÈyby|ßâààâ¾xdÛ»LüÉãÄ’F€HŒ2#hå^!WM‚’ŽiÐ$¹ê E.q,nx¢$H$€5O^l¥ITëqlÝFÖc hH Ðö^U š1Žn_—ô"ɘ`°lKs×Þûœ3gæ|Ìi4:3óßì3û¬½öÚ¿s$¯¬µ?’¥†Œ­äi¨|ù·íÅÆ¹gE~¨ˆûE†ÂÁFyL‹¤£¾ÒNãbìäÁvÔÆ»Ê^âÔ¢Ÿ Ê,ÍN¨¥„tÚpD_ŠË§wOÉ­ÐV^™ÒGNžˆëykMéK™Ìg2uì|úÆÕéô)^¥µ<·'ÝN±V÷ÔT¯VC-†£Øu¡7×  P*4·¬ø|òÿ¬ÓŸ¥Âã–º6…Õ²Ú‘ÛÓÞßãK®¥Pxr_O-K¹Ï¶˜Ò™“O¡ŽéTÞ{¶cYØË \ß~ÖJ¿PRÛòåIÚ6HÞP”IL–ò ëÞ¬Uº0ëu  àfZP/=· ·ÏÍ ¶åŒ€qlãÚ¦EzÕ¹|<§®¼PWΊàO¯õ“_æã9cS­&•öòÜË B¬†Î{¦BÝ…C!u2¥|˸=&º³®2ÝK\öÜ>ëÑ–”ˆ*Š>&—áÒoºŸôÉ+K—wn ª,Y¦uÁZ&;Uâºpn $A@ Ð¤û|…f?ì…0ìƒm¶6_¯‘¾†cøÌ—yif™:ÏW;ÎÃ]¢NÎþ3èç»?ŽÔ*éd'ûÖÙËs—PKiÒ®AÆÔ´'3ËÂ(i­ÌöW׉Рõ9kîò¥,Þ+yjò¢ÔÝÑ-åT)¥.PÓÜHÃV–v]X*Å (eÁ`pçÎi£Ý¶m[GG‡=‚Gß½í+íö2î¾Kÿ>ÐÂLY(.‘Ýž+¹š2eŸÌ új2ÛcsRãÐp£*Þpvvv×®]wÞy'Eoæææçè¿yúsþÍãÇÏœ>#ÊÜ©S§HlíÚó£/<GÓëÖ­ÛñPï½woµïxhh¨±±Ñ^ÆþîÚµkí–ì®9«%ën¹óu¼[‡/÷sÈUÿÇ_¾Ÿ\ z@  ô÷÷Ûÿ»ÙÝݽcÇ=šó))¨äjËe|møT¤åö;—qøèº@`/ñyP0@8m2]'÷d¦Ú’Å#–jg”, ¬$÷½Ë~r+¨ÈróRâ|ÒÌ_ÿnì‰òtvÛöšì+›ü×0e“Xm“^ZÒ¨‰èNW5îâË»NŸâŸT®®ŒTkêz'²ãgPEý)E[uiª\×0»KEšöÂ+ú­X«Ã,ºRyÐ'€6Ïí*/LN;·Ù¶—ÜŸ´mu“{ÕŠ Û’›Ä*›ôŽòV±_oêþ·Æ]|o’q__³­qSÚ%ç N›°hTÅ Ûöš*Oih45   A ¢ ¬\2#¹‡âÚi+5m·Ü”m{Ê_IíòmuGuç™òíØ‚òèž! Ñ~¼ü¾ºI/_O9V#@å×]t^‚_/Ò*u b_ß4hkÜ~mk\ò+ÓKÚb¾¼€‹U‘•tSñ }=Rƨ<µáÉ“¤wèšï4Ý5¶À($øÙ)¤§[A`JÜç˸\—|A]&+že:Õу»øZ®XÍ¡iª”-ˆý<óÜjki²!-ȵ•\ÔM,\>4[ÈíZãq²­®³MbÍú0ìâk21€ÎYU²âùhc«£*ã¶½¦ûîZuz€Ïgópœl«›i“XKõÆ]|¢F̶Æ5¶3©1¨2Ù¶×TyJCŨ(¥œÛ¥5 r"žþA¥VòÕŠiûNó•}úæ2šf½Âå5£©Š´»:1£r}ÿíFÛÒFd§Ê86±¬Cœ¦\gÃ’æv áç6‚€€@¡@œ¯PŸìçàó9gI(T¥œÛ]Æg–’ä]F;Ð5€€€@‰@œ¯D4†    PÒàó•ôãÇàA@@J„|¾yÐ&€€€@I€ÏWÒƒ(ðùJäAc˜   %M ä}¾H[™Zêzãùzt½–•ñ~éÌ[ñ7ct+†äkÀè@@@`y ”¶ÏGþU`¬'–%Ö<èµõ¶æYµò©ý&FÛ=ŒŸuÁÿF¥ PÊ>_¼·+Ñ<-O{ uG–3t‚€€€À²(aŸ/~`0lÔŸOëihöM¤'Xe Ž‡Ã,ò–•µ‘[(*#”åEêCz¦­lµY8'|eá]2‘Ö·Q‡[     'PÂ>aðÕxÓ_‡èx,½J|§“3F‚L$dû¤Ÿ u±~ž¦è`«ÅT@c+M¹pE‘¡×H›w°YæGXuéÕŽÈ<´b‚¡ *@@@@À”@iû|&ž‰h ŽÆž~1ÏÓÞ4QdÑJ«NÎç3wàâc2¬H^a Ì;ðÖøÂÛ‡™úÄ}R%PÂ>Ï䆇ôÓ÷x¶·vCÖ )¸w¶4%¨„õ(¸GŽ!_ç‘èg­Ö¡Á¥±ZA@@ Ÿ@ û|"@h™UÊ¥†XO‡HÜRHM ÝE†Âæ9:x@ìí’œ褕¹.“ZφZæ)ÝÔBŽ_¬G™uhÒ U    `F ”}>9I”iu6¢m—"ÝAqcˆpþÆ ¶†ƒª|µã<äVæ¥Yv2=뤕ÙC0¯ó÷ñ™‚ºI´ÌCê°Ûº˜CC-€€€€9 óêÒ©¥U‰>“áêëÕûº:ž®éMoš¡•ÖÉé S½V£»Å“¹í:Ûü榚X*H!PÚq>¼    Pàó•ÆsÆ(A@@J›@ÉçvøøÉÙ*B3ÈÄùò]€€€€À2@œo™@áv¿B”Db~~>±fþü¹¹9º¢?Þ~ûíÙÙÙÂ,¢$Ÿ¯(k>U^^~óM»üòË×­['û»øâ‹”¦û< IDAT«««ß_»)Ý£lÀçˆdS ¼ÿýﯫ«» ²RVŸwÞyçŸ> €€¸|>>”Â0‰2¹ß~¸Gævßyç]}n·0+A@@ ””òõ\ q¸…vÛÒ?ýxoè²Îp°šÖ·4ÍF WVr[Ø åvo½åæP{û×ÿǃ½=ßþîwz÷ïÛû/ÿüòÙgŸ+ë @@@ WJ<Îçë‰òcÌÈõñ¶Eòµ\±µÒCÇkŒŒ—uÕô[ i „ƒ#Kg y”]5ràéG}XÙl^Ü®9Ô‚€€€û”¸Ï§>φZ68g~òÿ\Q|5^WØacr»6pp @@ÜF ”s»ºg ;EØb`umm”|É^5 «%é¶šæ’Jv–ÄxmRZ‘1T¿PÒÛ&r½RÕÂ,òªÚ 6¤)4D”t1õ«‰k)[™(æp³’úÕ¯ºQH;’™n£yÉ ·kxš¨÷(qŸ»V¼ØH2¯«éOðÌj¤ÍªIðë pßÈß qoE†Æ|lð@œ.ãÅå"ݪ´LËRóÁæ˜h>º,'ïECãB& uGð1d”tNˆ¬³‰ âmÒŒäס.FS»p ¬U\ªÚ¸(i…n“Iý©ÉcËŽô扮“åÖ[o½ýöÛo¹õVù¹îCºô²ËÒdð@@@À JÜçã®/±š®äR_sƒHñÆ'ÆX°Ñ/“§½31æ­ñQ˜»|ÍÍÂéã.oB·ÂÂ1”…7×|ʰhlZ|=¢r'™P­/¦6pÕHqÝ#§r j½^›è£ð¡u±îHož¾=åv¿ôåÿö±›nºúêk®¸âý6\~É%ï]³¦òäÉ“ÖÝà€€€Àò(qŸO…îihöY{eúGC’ÜÑã._ƒŸ®ÇcªËG~áh"ÑÏZ•$*oE+1Ô’Ÿõ!Æ·ˆr½ÅŽmÏx{á5´9Ë©S§fgO<9ûÖï~wüø[ÇŽ½93sìí·O,\)Z‚€€, ø|‚+ùmQò ¾°CIäÒ,¹®°Œù §¯µ‹\>£ë±¡îqåS 9~ä[ñxhnÒuö<ÍmpÖVJÅÆ•‘ñ1Z7\|GÖºq@@@`Ù ”¸Ï§æ^ùÄ;1}.¥øûø4>1á (‘:îôE7;}aáþQQ×JÐ$@±„7gÊ„Aý€<òÆWi´ZNñÓYanCï¿C1¢u¼V‰óQÞW ûìµk×®Y³¦äÞJ @@@ ×JËç›™™yçwªªªV®\•k’¹×G“Á´ö /̽vh(%¥åóóÍK.ùZÏ1??çþ§\QqÖ{Ö½çèÑÿ>Ÿû,—(-ŸïÌÜ\ùŠò¹ùy—?ռĊådsX 3A@@ÜK äÖpÐ ÞÄü¼þóÓ{V}O$­Rýùüª|'–"o!™+™ÔÝûæÀ2B"PZq>z2t€Ä¼~ë–Ãß}è_ﺋ=ôø-ŸŸÉ“ã>"obrk‰ªô=–Ó.3KÄ jA@@(¹8Ÿðà’1¹Ã#{ç7‡B›ç÷ŽÄMxŒ‘‹˜«ž#=ú‹jgA¯#D@@@–ˆ@Éù|ENœüù1û³_ºþãÿ•ý8Óê?Z/õÆDÔíðwëÏûÂSj«§¾ n$~ú!Då O …üÆwUjë=¬õBÍUA¡DÕO-*;MïQé+áÅ%zÁ @@@ÀJÏçÓOæ‹ìc›o]?ŸXËföãŸÆeîÉ{7ý÷š½´‹ßñ¾ùïâóÿÖßý×[wýÓ2øÔ?ìÚúן»l~þæ.süøÞ­»zT¶e/~åßdÝ‹ÿýá§x_ñG?¶ißæ’¢=£Òÿc¥boâߥø¢±ÇdDЯ Œ(p%çóÑó¢ì®,‡ºŸ\¾Kù—KoÝÌîë}Š_Ž_÷õ{oµwwl• njغ{XÜ~jx\¹›xªöL^»¶i·ª”1µ%ɳñØaÒöÓý/ní¸[t" ég/Þw¥ÒôÅWãæ= á»`>€€€€[”ÜŽyÚšOÙýäç½÷½ø"»ê‚û´‡1üä·êo¢à\‚©B´xƒ¢{Ô¢þ¯üÆÝÆ/eßø×?}¼š*Žìüø‰=ÓÓ71ºº[Èh¤P½–j—¼'ÒÏZ÷Lû&µÛ¹#f=JÙBÙVÆ-/4ì0%Prq> ž‘ÛÇËÏô_Ûõohå»®í?ð³ùùê÷]ñ«û¡‹ùùøãß째 mèGÕ7ý)zä‘¡+¾¬÷^ýÕµÞõüâ§C¿’2<.'……ß(®©Ùµýß|<ΛÈBú™¡Æ¬GG¨Ïô­E%€€€@¶JÑç“)ÖŸ|ÿš?¹Y—s½ôæ?¹æû#?O$ê¿9pç÷ÿ|•Ï'þäN¾tV´ û‰ïÿ ½l_ÿù‰Îq¡‰+®QdxÞXM«×— \!©|™Ô“þTšªU=ŠŽ²}¢#’Ëí’Å“«ŒÝøÿ¼Q&ZU*Õyà·²æÆîßþ¶[©þË _ÅÁS¬ëÿrø?ÿ2ÙDùª¶&™úoü¶^N»þÏo(rBUupø·¤V)Üó¹ÿ¨‰á@@@L ä|>"E9ÓóBC(D¥åóUTTÃWQ±âÌ™3îZªµ¥õŒÜÿ\`!€€"Òò'h”ß½õÖùkÖ¬ZµÊýO‹»d-Ùì~Sa!€€€€Ë ”–Ïwá…Ò󘙞>£l×âê§S±bÅÚ .6»ÚP   àz¥åóÑã  ^”ë_K   c%·WKŽùA€€€ø|…ð”`#€€€,Ž@ äv/¸€••-Ž’›ZÓpP@@@@ K%ç;vLžŽañg¬×ÇÈ%ä_O\œ£ášÏHóõÆôöŒ´½YÓ×=äxo]Y]JM–oÄA@@J@ ø|6‘;LÞñNy˜Z"ÑÏDl¤]yËÓ>šm÷¸Ò6   à%Ûµdïm ÕŽ$úüª„§Γ%-Ü(d%狌5‡OÿyüO)mJä/ÒF)ÔˆRO•šˆšXÍ(ÀH"U©hÒ«Ô&´ªêºÞ ¯–P³½´••©Cq "   EF „}>z’¾¯ÉóŒ´yyü—XÏX@sÆ¢¡.ÖO•#Áp ¬U\Òu4Ô­&„3øûd™Úw©3ð¢¡ñÆT=ÉÞûÙ`ØÄ<›*SmƒÍ1ÑïÓzµQ[   EI ´}¾èxÌøTãcLÿyÚ;ƒš¯§_ä~ýAæknsèøõØ„²¨"“€è è<9_O‡ˆ4jz¨wµŽwn4Ï®ÆL‹†¼"¼›×N öù< ;ðPÞmPÆ6ÀDô0ÖãËçë”!KÞsrêb> @_   ËO „}>Æãh”¥MNs‹÷ö’ èÙPËT_0ÞÛ¶˜ó—í³‹Ge*™Ï#´nL½«ÙbÞ¹µ £;b,Hé:b!(j¥ìóQFµOÌØS—V´²žhõ÷i•^š —£à˜¿£‡‰,këx­]œÏß'æ rAÖl–ÛUsµeNöåãc‘ÝrXÅQÔ?Ì€€Ø(å½Z¾¿]{: “Jrµ%¾¦×¦•¤X«7*µhÂ×zô)&µ§Ù¦¿'E<ªaڌݦßA@@ŠŸ@iÇùŠÿùb„    À ÀçÃ{   ÅO>_ñ?cŒ@@@àóáâ'Ÿ¯øŸ1F   ðùð€€€€@ñ€ÏWüÏ#ø|x@@@@ ø ÏiK;‚N¶µ;¢Â _üO#(uÅxNž(õ·ãH'àÞ8_4=qâDº½ø    =÷ú|“““ÃÃÃÓÓÓÙJËÞŠ‹Þ¶2Qêz㩪ènYY[„Wòt°,ò;oØÖFuòkö& €€€¸‰€{}>¢T__¿ÿþ£G.‚X44Þ˜ 2Œ†º…' yy6’Hôù‹´y›c\*1º×0:VÓ/o/¢w4WpµÏ·nݺ͛7ïÝ»7‹-”–¯§ƒ¼:ÆüA66¡Fú[¹—Çý=*ñ‰1 yEœ/ŽŽË¾|Í ž…vŠv    à.®öùUUUÕ–-[Ž;–;rQÆ|ªo'µ)ä§ÅÌ]oÐ   ËMÀí>ßÌÌÌž={ZZZ*++sÇÊ×Ü?:ÂÊ ?φZVSº¹ëš@@@@À5\íóMMMíÛ·¯©©ÉëõÚS3³& 5,Ûùûb̓^±²ƒ.{˜’ÜŲ Kb¸   P¸\½?ßÁƒi>¥wmùúûh©EŠ„§/!gêÑ-yA·µkíB·ŸaK?]CÛÎq@@@ €{}¾êêêM›6­^½º0ÂFp5÷ú|>ŸÏÕä`€€€WÏç+Œ°@@@\M>Ÿ«Œœ€Ï—ŒP   ®&ŸÏÕÆ€€€@NÀçË F(W€ÏçêÇã@@@@ 'ŠÀç‹´•™žï­ËæTÆxå06&Tjß²-[s jQõ:ÔD ²láP1Ä@@@J•@ø|ôè|¾±´ór#Ý¡hvÏ”Å1Úî¡F‘¶@88’P¾eÐbâŸñƒAx 2_OŒ_I½4á6€€€,÷ú|Ñhôĉ^[Ëē‘¡p0tØØDÌWcÀ¯IT€€€€{ ¸×盜œžžžv¯¦£³6ÔQDã½]c=ZÃd²µMŠˆà\¯Hà&S¸2bGÂ,òªéU‘$E6ÖO +7ímM6Õ‰›VÚëÁ]È’€{}>H}}ýþýû=ê`PþÆ`xHztñƒ¬¹gi•’L¶†µp44Þ(°Ñ¤³Hò$«ädEB6ÒælùÙÄã)i\Ky_^úüIaú’ÉHR¥6õŒäŒ=ÓÊLšp@@@²$àjŸoݺu›7oÞ»wo,Ë8.GœÔǽ²N11O+J xZñõt/|E66¡K ëÛ±øÄ˜ˆùñGÇcÌ[ã +þZŠdÆ/\U°Qz†žöÎ W&ô*3ª‚€€€dIÀÕ>¥ªªjË–-ÇŽË04OC3Mꋈ¼®>èFÉÓ¡¹X/ƒ³Û|9‡R(˜Ç—z$úY«–ë5k‚:p·û|333{öìiii©¬¬ÌDŽ¢gµ¡@(5¯ËXl<*—dPÎ7˵¼Ì³¡–%óÁšäø‘ÿh4³T¨R³Ï½]aÞ3­4k:X Wû|SSSûöíkjjòz-£¥ü®/˜–×eTÉDz¶u¼6ë8Ÿ¿/¦´VVq¨ëAhnžèˆrÃ"ù«¬±y\ÕX@¤‰ùA9дÒF n€€€ÀBT,¤Q¾ÚßÂ0¢€€€¸€_4=qâDv#¦ÃoÙØD<»Fâ# »Zz×½>ßäääðððôôtÏ 2ö57xD‹xoÈöªùÞôï:-#Liâº^ÅeÔ®ùE[)“D=Y ¢    °$ÜëóÑpëëë÷ïßôèÑLC†¼Â»jLŒ¶ —/ÒælV¾¬‹ü¸Hw¨vD®XîóKµ"Ö3Ð\=Ó®¢c5ý‰µ#‡OÓË¿;èÈT!*A@@@ ¯\íó­[·nóæÍ{÷îÅb¶TÄ|¾X/<‘rñ‰1¦:‚pt<Ƽ5¾°Î³ãÁFî´1æiï rë¢ã£ÁNéU:ìÈZ)€€À’ÐÒ»tájŸ(TUUmÙ²e``àØ±c xÚû{ÆxHO)A%¬G£¤ˆœ§}4‘èg­Z®7ƒ¶,nç­£,l‚(€€€™ä¤ ·û|333{öìiii©¬¬Ìøä(`Wjå^ŸgC- ëü?¥)9~ ä«<„€Œ÷v…eÌ‚jÀ¦ûó44ûRÕfìȨ5    Ú·Çù¦¦¦öíÛ×ÔÔäõz‘ñwô0áõùûbt%gù‰Õê.~ÞP­HÎr±€˜Èg艹y"Ë–•C,hÒ%9#µªZ±d#cG&ZP   y ƒ|ÒósõÙk¤ù|”Þµ…âïKÈyy\ЧpÛ…xòJ¶öSŠ7EOº€¸IÊ41E¨ (:z·Ï½>ŸÏç+:ò€€€ä•€tû\çË+t   EG@Îä£aQ’×íëv‹>   ù pPOò½¹Ý|À@    P¼´8 q¾â}΀€€@Éný Ÿ¯äß(RšÃGãƒÏW¤Ã(mz‡¯8â|â„ q&†¾Ä{ëÊÊêzãâo*t©Å¡U( H¿   ÅD øâ|>ßXÚẑîPT<3~ZZùzúùkŒ.brñŠ8BÍà)ÓcÆX@@@@ æóE£Ñ'N8|Tµµlð€.R ƒfæjúø9¹¾ðPzxÐa×.ù§{çóMNNOOO;áYÓÑYêV¸xo×XOGc††ž†f8}á6€€€@¡>²^^¸×ç#ëëë÷ïßôèQ°ýA5j?0ÈšD*@@@J–€ŒðÑðéÂÕ>ߺuë6oÞ¼wïÞX,–ñiù;zä¤>šÊWÛ)gïelä«ñf”€€€<Wû|D·ªªjË–-ÇŽË›rµ4©/"òºþ ²ü6…£µt€ "   …NÀíg¯ÍÌÌìÙ³§¥¥¥²²2kO{gmY DKs8r‘6o¨v$áÄ9ÌÔ/€€€{ À|¾©©©}ûö555y½ÎR°”ßõSóº´?_ Ì¢¡V¹_”vh¥«&–èKz|Z=vêsï+ Ë@@@²%@Nlâê8ßÁƒi>¥wm‡çïKFëh7¾>UX­M´«U}‰„v[§“$Mëm»ÅM(îõùª««7mÚ´zõê KA@@@À]´[Üëóù|>w1ƒ5    P˜ܾWKaR…Õ    à.4«Ïí{µ¸ ¬Â$Ÿ¯0Ÿ¬lÀçˆdA@@@ 0 Àç+Ìç«A@@@ ðù²¡Y(L…ïóEÚôGg¨ßèï²²¶HÚC¡C9ÊéÔf)r¢­ZêäùîºblJ)£Ý‚€€@‘(|ŸÏß7Rê–Þ]¼·k¬§¿]·ëóu¥:l‘îPÔÙs£3{i#*¤Ûkô)Y ) W•>ï`³b3=[ŠÎ¡@@@ ` ¸×ç‹F£'Nœp–NÙ•ÞùtµºÓvkkÙàxRCd( hLÊøûb=¾ðPzÀ0;%K-ïm ÕŽŒ*¾.cþ>ÝIÂKÝ9ôƒ€€÷ú|“““ÃÃÃÓÓÓ™1zÚû›[ëêlDïìÔttj@ÆD °£1³¶4 OC³æôéò§º¼q²VTêCqÚµ¸ˆ(éWÓÚ$Ó°ij¤ž^%Ï,ÄHI Ì¢yL =Æ Fƒ~³‘eÖ)Z™‰µµQ®˜(™ê6äÊͺD€€€€ ¸×ç#Zõõõû÷ï?zôhFržöÎÚ(ëéHs|üA5FGŽknYߌêÌ"m^ §‰”o¬g, ½µ”¬ªmx-êbý<] ÊZÅ%]G•¼4)W“³#LÍIGCã:15`"ïœÖ“¯Æ+lV7i›ÔÈ\l¬†,äÝP¯¢Ý]æ`P    àz®öùÖ­[·yóæ½{÷Æbæ§EÚ,XjM_pa•öÍò¹—*>1ÆÔpù˜Á(Ÿ4'blº|²bŸ2ÓQæSÜO~=6A!<®\ð¨ÂB5ŸâÅjbVêÕžöQîœI1‡:-Ä’²è£# €€€@¡pµÏGP«ªª¶lÙ200pìØ1KÆäñQÚ¶¯£‡©‹94QÊÌÒ¤¾ˆÈëšf?-•ª7¸WW»aQÂŒ}H Œ!ò˜šmÀ0]gC­tÓoÐw‡:­Å(rH)snMl4éU   AÀí>ßÌÌÌž={ZZZ*++-€j‹uiZ¥\Ó&ñ¬o(Zh^Wæs… Æ]+-SÜÛ1?1Û/uy°·Æ§†ÝhÕˆ…ÑéÕByÚ2ãtËïÍd!¯a¶Cöb±ñ¨Lsß×ÒÜp9Wû|SSSûöíkjjòzåt5˜Â)S“«<åN÷úÈ#ò™¦_Õ\ªºeŸN»v««&¦ÝøÞ±€H¿ò¹w2GÙT±Ÿ‹(Âí’FˆïCÌñ2a®œ7©ÇzwÊòÖpð.G#LšF¹au¿§:íº–þ$™Õ:^‹8ŸÉ ˆ*( e´{ÉÎ;éßtÍ^JãmÛ¶­££Ã~<¾{ÛWÚíes—ò¹ååå7Ýt¥w£msH`vvv×®]wÞy'½$ssósôß<ý9ÿæñãgNŸeîÔ©S$¶víùÑž¿£éš”¹ã¡Þ{ïÞjoÆÐÐPkk«½ î‚€€Hýýýv»‘tww“;Gÿ(kÄ*\Ë®ººzÓ¦M«W¯v­…0 @@@ …€{}>Ÿ©ÄBy‹`'€€€€Û ¸z>ŸÛáÁ>(ðù äAÁLXø|‹€‡¦    P àóȃ‚™    °ðùMA@@@À­ô;ñ‘ðùÜú `€€€,Ž€Þ¦»äT IDATí+Ÿ/Ò¦^Áÿ2@¶8Tv­é$ZÑq]oÜJLšf#`Õ0ÛznKºÉÖ,ȃ€€¸…@ø|„Ò×£ƒ! ~6ZÞ¼>~êZºîo÷˜?ÍH[ I$F­Ì›9®%RõóøákKÕc{    à:Z¨Ï½>_4=qâDvä<jÙØ„eØ-;e¹öÕXœ õÐ   ™È„¨{}¾ÉÉÉáááéééLÑÝ …ƒ"ªÆc`mm”|a?5 «%é¶ÔEËHŒ×&¥C…Á$¡¤WI2‹àÕÂ,òª±8ƒ ©F %]LýjâZÊV&ŠÕvR¿Iê(ä³MfºæF€ ¢&à^Ÿ°×××ïß¿ÿèÑ£™w­x °‘>¿*«éO$è{¤Íª¥«’üåN”¿1âÞ ‹ ùØàŒd—‹t«Ò¼1w§¼ƒÍ2w<º,'ïEC㼋‘`4Ôaþ>ºIg‘s5±AØ©ɯC]Œ,¦vá@Y«¸TµqQÒ( Ý&+’ú¥•BËŽRÍSÅñ7€€€@ipµÏ·nݺ͛7ïÝ»7‹Ù>m>_MWr)ƒ¯¹AL´‹OŒ±`£t=íÁè8)óÖøD˜\¾æÎfáôq—7¡[á@rAo®ù”aÑØ´øz:DäNó˦6piÕHq­L äÔz½6%ÐGáCëbÝ‘yÖúp@@@ 8¸Úç#ÄUUU[¶l8vìXf➆fŸµW¦oO’ÜÑã._ƒŸ®ÇcªËÇøzˆD?kÕÁŒñ•JIÆ3›“K ÊõR“ëñåR1t€€”·û|333{öìiii©¬¬Ìü<Èo‹–Mð…J"—fÉu…eÌO8}­]äòy] u‹(ŸRÈñ#ߊ‡Esë”nf£¸„¹ ÎÚJ©Ø¸22>F놋ïÈZ7€.Wû|SSSûöíkjjòzí—¿ª¹W>ñθe‰¿ïá"&üq%RǾ¨âæq§/,Ü?*êZ š(ÖƒðæL™0¨ßGÞø*VË)~º×Â܆,Þ‡bDëx­磼¯xÊî4‹î( ›    P0Ê‚ÁàÎ;ÉÒL¦ôá¶mÛ:::ìñÈã»·}¥Ý^f1w)Ÿ[^^~ÓM7Qzw1zÐ6‡fggwíÚuçwÒK277?GÿÍÓŸóo?~æôQæN:Ebkמ}áù;šî I™;ê½÷î­öf µ¶¶ÚËà.€€€€$ÐßßߨØhC£»»ûoÿöoOŸ>-eèî éå½U]]½iÓ¦Õ«W/¯è@@@ E÷Üëóù|XªPè/ìp WÏçs $Ø   N>_?@˜   Àçs "    Pààóø„ù    à€|>    N>_?@˜   ϧž›!ÚH9“"mütpFY84ƒšÈ ½„±Ò±f !   ËH |>¢çë‰ÑþÒ‰?cÍÚë£3tÆ“Ùì᫚ åÈ6{qË»F‡ÒR7@@@@ çÜëóE£Ñ'Nd7`φZ66Á#y(    Iîõù&''‡‡‡§§§³x\‘¡p°³ÝC-ôq5íÚ,ØÆ¾¼ÔõNdꈋ&£ˆš2UƒšX7zÛ„V™B¦š@˜EC^)’Þ S¿¸   ‹%à^ŸFV__¿ÿþ£Gf¥p§¨ØHv)ØH›7T;ÂÓÂýl0lÒª™;{žöÎ`x("¥T÷’4 6ËÌòë³¹wã\éH0êŽ0]É4™éVº\l¾ØÄ\T€€€€)Wû|ëÖ­Û¼yóÞ½{c±˜©õj¥6Ÿ¯¦Ëdq†uÓøÄ˜¯§ÃϸCg"¨Í群¿Quú"Cc¢!i<îq†£ãÒNU)ÉsÍÞ_8`\BbÒ9ª@@@@ G\íóÑ«ªª¶lÙ200pìØ±ÌCö44ûT¿+³ô$ü=cÌ‹÷v57ð2/A(ÅI”‘/%¡°b+y‰ÖëM`š€€€€€%·û|333{öìiii©¬¬´„v#~`0ê«ñÒw ¦©Îea­ZÒš‘|¥Bnœ¥˜®9y•l°»{°VNd|ÕHXMéZucROŽ_¬Ç‡õ&&hP   °\íóMMMíÛ·¯©©Éëå~œuQgÝñ©ur71÷. &ù 1³¤­TæïQÄZY³™˜6ŸOÍs§/®m a*þ¾XS¦Úî(Ë«®áPwý£™„Šãh=0Ü…n/²yÅ´ä§ÕÁƒi>¥wm»£‰>£„¾Z¹MUÒUÓ.¸Ï–lÝÞžªÆT3OͦÈ*Ô^HY²#.¿©½Æ @@@rEÀ½>_uuõ¦M›V¯^«¡B€€€”,÷ú|>Ÿ¯dŸ    ¹" Ó»®žÏ—«¡B€€€”8ø|%þ`ø   %A>_I¦]'SÀmª „Y4äUs±ºü°¦ #JÞ˜*5cR6igd(ìl÷P…© fQ:Uo]ïDúxýÁh¨5™¯¶1[Zb³é=á;€€€@ÑHŸÏçªÜn}}ýþýû=š¿Ë G>X7 ŠÒç÷÷%F‚L$dy0ÒæUoò䬿,EC]¬ŸŒòVqI×ÑP·!,ÜG*”ŠMF3ÚDÉ®ûÙ`8½Ùk䪅Og4{°Yæ”GX—âª6Çz˜Þ]L׌ï   ¥B çsáˆ×­[·yóæ½{÷Æb1;ó¢ã¶·uM½5¾pÒ›KÑŸcj¼ÐÓÞÔ”úzúEÌŽâmÌ×ÜÀ/ŵ1{«Íç«é2Yœa=êÚ×Ó!B•¼gA>PL4¬áfk¾fX5Zµ9e &zQ   P"’k8´ŸváUUU[¶l8v옹=ž†f_xÈs³æ¾S?kͰ´Ö¼±ãZn’s?Ô¹ÚöþÓ¡•Ð¥ˆ^¦ªã.! €€€@i ‡GxJœÏUÞž4qfffÏž=---•••O‹Ç²(ëš\(ïíå. ÅôTÇ‹&ØéSÐ,ÖãKÓñ…ªïïí ›Î´0!­šO1”ùfKRZP×jª˜÷œ¦-Ò«ÎåKêMгՔ®V< –XNvt6H€€ ä|>éð¹Ê훚šÚ·o_SS“׫¬[5ÇÎ'¼ñ¼§RZYv)¾ ¯bJ”–7ˆB3÷Ä" ±>BYÃáïÓ”xi†\zÄ̼ë”Z5ÇÊ›ËÝXÌl0Qäï“©´²æôÜ®øœ&È­zÓÍfÊDBmc@_í8eŠ ˆ‰‰¨(DäH³+ä_š«§Ýpèá­=]Œ|ÁDŸR)ÿöèjÄ ½y‰%t_Ë–Z]ËR4%-1ÚÀû”:u õbíi1ÑœR•n6rÖtŒjCOÇ‚ï   ¥D@zwIŸ¾»*ÈW]]½iÓ¦Õ«W—ÒCÁXA@@@`IpŸ\ãŸDBº}+tÓý–¤OgJ}>Ÿ3AH€€€˜Ðª[!½=Y¥¸}ÂD)XútÁ†ƒ€€,‚€ÑÓià>•9äãW‰-ë€Ï·Èh    ËL€ûreeó:+Òs»tËU³ú–ºÏ#þþþ<ö†®@@@ È ÈPŸ6Hu ‡¨Ð¼=ÄùŠü-pßðήºìãÿåî³ €€€ üôÿËÞ,eÚžNHÌçÓ­á [pøì!â.€€€ua.Åõ’q>îùi³ú c°@@@@Àœ@Jn·¬,}OæœÌGgkÂtälêyñÞ:oˆõ(ça˜³X‚Z2¦«&¥SažÚ“ÁÌ%0¡0Užœ~mhèµÂ´Vƒ€€À²ÈnNT2·+å[ô^z×ç£#gýüX2¥DºCQÆ\²ÃŸOq=¹û×Ö˜æœ.ËKâÊNo¸ñVWÚ£@@@Àuž;ô¤½MÆù|â¼] î%”Y|î‰óE£Ñ'NØG»[[Ëē‘¡p0˜~p­C]K'FÇä²± ™K×ÕRk¯Lb^þ÷œ¼¤?çæékB¿6|©m~Ì„Ï'ŠüW©/FîSgÂÃÔ¨5K®£ðõ(Z|=~~Éó­]”oõSø-M,>1æëéRžöÎ`¨‹_Q%‹†½e!©'ØÈkŒbJ/ò/1Ÿ‘?6éós}F% 5¾p N[ýÁ‚¢kÙ÷PŒ.R”꾨ÁCrv£ÁÎQ\ÆŽ¬TZ×WWW?ÿüóÓ3â¯äð½ç=ï±Vƒ;   y%À}¾´E®rûªªª¶lÙ‡¿ð…/P„ÉŽ§¡™µˆ°Á±žþ> ¿Œ¢u" Öj©Á¡oŸºú6n›ÏÕúó´÷÷Ô §TúdiKxý£‰v‘—òü[ËA˜Ý°íHº•fͬêþàþ`ýúõ+W®¤8Ÿ&CALzmèO} }=yò¤•õOß_ý‰Mî/~øÚ×ë´ÊZdò‰ÛoÜþRËî×¼QiûÌ}ßõ#qí¼ÓC—mýÁUD÷Þu©½Æî,ä ÿ%¢tqécû²ÐŒj’ æà)ÿlËZýŸ.133³gÏž––– 7—‚qµ¡@(5¯ËXl<ê«áNƒYË(æÙP«æ}i† ’Û¥J–Ì‹nÍÄÌúö‘×'š¤)òžöÑX¯òjªšú6rçÌ[㋎SÀ M 4vA^¯Ï`›}GF%n«¹zû¡É×_£ÏÒ8|¦ÃýèרB7¨ëƒuýM ös1ÑuŸ¡'÷äfiOÙ3[•LNãH­2yP®éÈØ‘©¨t%»É÷ÍGt¥é0 @@ ß1ÚJC~*è/ª=#-“ùdM¾M3ëïàÁƒ4ŸÒ»f7µ:Zz¡e(ÉéÑÒºZ=U&ÚSTè›ØˆÉÕB!¥]Cµ2+kª/¡öÛžÚ_@’L &›¦+ñÓ"ŒÓÄM¾ÌDSþNÑŸ*!š¤ë1t”ҫ뿈ª´RI¤þ&Üô‘^Q ÿä“ÝÕÕ˜ÈPäl_°š1™cÍ<`ÙãÕ×\õòK¼µ9KëEËèê’¼ú4®ywzã5ÍV6išõÙã¬4XiF=€€@Ñ>ßœn\åô…>³º¬Yö±ÓZÛn»-“×'3ùÏ2Aœ§ÑJàån¬¾ø²ê‹ï?Ęt¿hŽÝä뇸æ•í>^©”k¶=K)`ÕáSS¢"*öôýäŠV¯=»ý*RxßӤпðñéz“¯?ñNhßþ-Ñ){ù0u*=­”^l•˜wgfXšýðMzp Á¤ª@@ŠŸ€tçN••ÑGºygæ}ÞQ}Áù+Øil©ëóÙ$bóó¨øÖ'ü8^h%DZÎ8?6”|/ºè×3÷ñ_Ë-|%GuýíWmià©§lˆ®¾½~=ÿ{òéŸP4îªÛn¦HžREøB}â2¹,CÔ>óTRÕ¥Þk{I7¿Øèá¡AqïÕ#G&z1o¦ÔšwgfXº}ð/éàªRN4¤kÄw’ @¾œæàÉMY*NŸf§Ï°·ßNŽÿÂrF•(Æ´(˜ —&ÓŸ“G~Mf§­¨}æ¾ EßËÔ™–•žÅkȪ;ƒ€òåNf¿û4™NÖM”ÏβS'Ù›3 í3{21»˜6 ˆL-(½å“d/…ÙèOÏ“1?ý xü±ï„eLŽnÉšW¶?öŒ”;Þõ&b{RÕ‘§‡3ù ”Œ½¤‰¼ãF‰)šM»35ÌЕ]Åâ5ØiÇ=B&@¾}Þ<–ŸãÇXÅÉ“ï¾{òäS3Ú¸þpmå»ï¾[ÈÄíEJ€®îf—mõ]¶Bw|G½ß¤v}pﳌVuÜXý€”Ù{—RsWµ\üA3ÿ‚Õwý䉨ÅwmWT¥ñzæ>±/ Ÿùçyí3˜Æ^´Àâ÷l»ú;D*ùª«•¬±ywª½afY×-^ƒµnÜ(hä˽{òÝ7¦Žk£(«»µé±G=øÊÿѪ>²é½_ÝþÕ¿{ì!û¡>òøîm_I[£jßw žÀìììo¼QQQá|Of:LeÇC½÷Þ½Õ~ðCCC7Üx«½ î‚€€HÏz²±±Ñ†Æ§îùÊö¯~õ¹ÿ•<À¶‚;ïž|ãÿ¾¡5{÷Ý‹Þ}q>Œ¸   ®&@¾½ƒWqòÝ“³'ONOMi†“ˆÜ®«#Œ[›;9õFÒÁ+?ujöÔ©SÇß<®}NÍÎÒÇV oгje©ãǛ彨'iøñV…[*M¤&F[Ó+Sô åÆ6V]‰út…¶Â¸    P ¤;÷ÖñãÚ§üÌé3TÞѪ8MÛ·Pá^”w¼“¥Ÿ°q¹RÆ•[È×ðcÓ¬½>~0ƨó½þøÑ¼Œ™¢?‹Æôa*€€€@î/Gåĉw´OùüüüÜüü©Ó§µÕPÉ]§ ÔFOœ8á q¼·5T;’GÒryO{{ò´3 r.âÙPËÆ&–#ؘó¡@!€€€@!P¼3äà’ŸrÚ£%óóÉmÖLa¥eÞäääðððôôtKâ£ÁF'OÃÓ®“)à¶UÂ,òª¹X]~X Ó‰†%oL•šˆ]‚52vŠHž© fÁEUo]ïD†ñj·M¬ç+nÛü²Ó>    Pd–Pïà•3VføÐبrùK}}ýþýûM.36·ÉùI¸tn.…EéóSÖTM˜ò a¤Í«ÞäÉYÍ©‹†ºX¿H®†e­â’®£¡nCY¸Tl$u479µ6Ùu? ;ian­Õi„€€€@HwðÊËȽ+++/_¡}dœÈ c¦­Ý6oÞ¼wïÞX,fgOtÜö¶®©·ÆNzs):ãcLzÚ;ƒšR_O¿ˆÙùiF]s¿ׯì­6Ÿ¯¦+«…Ôµ¯§C„*yÏvCUï™ZkZéDd@@@Š‹€tç¸w·¢Bù°r^©sùÊÉäw”ªªª-[¶ ;vÌÜ"OC³/Â133³gÏž–––ÊÊJ :<4FYפïíå. ÅôTÇ‹&ØéÓÂÙX/=LÇ^¨¾c¼·+l:GЄ´j>ÅPæ›-mHiA]«©bÞ³“NL­5­t¢ 2KNàéû·þ e÷ë¯í V/y_ŒÑ™l“?ùôú<ôdÚ…n°ù´ä7á/ß~èëõªMGv}ç×ÛÚäW:pïõ×&ùgï]õŸÞ÷ÃvͶoËgñÉ'–š8I=òòѯG†ïMqÐM¢@M€»s©Íç“Óù¤ïç¢Ù555µoß¾¦¦&¯×k7vš˜ÇgàIgµŒæÜ5ð<©â òÚ!¦$Liù„(4sO,² ­¶†Ãß§)ñ6Dz›‘'ÌSçóñærC3LFâï“©´²fG¹]fj­i¥I¨Z×x´3y—£ûüö¹ ƒ|ú'ì¶›“.õo~v`ã?½>¿ãÎÜÛ¥ŸþÂå;útÁÈÌM   % 3·êŸÂçsk9xð Íç»ä’K2È7½S‹¶ºµ]¢¯¯On‰§Õ¨[»(ÒÁK*Ñ«Èx-­KªNè·ß3Ú@îš" ]ó©ìÂ7ÚÞ®ÞM´NXÞ1±–;º*S³3ƒt—Ï *)¹ûIÓDŠð ‘'åy:5M–”ä´”b¡äþûn¿L¤ÛÔ"4Rz¤îx¢Ð²—‹õö$U™›Aš?1À^ÚñÕàÌ&QòÕjGFÍjMÓÆm´Dª.fЯPÐg`uצ}MâJÒ«W¨’NoheLòÙ8¸:òô0k¨OºÕän¼E‹ù9PÀ-7yµ(«ä…•¬±súžÞF2äRïU¯Æ'XÈ)÷ú|ÕÕÕ·ÝvÍçËéx¡¬€<}ÿGØHùPJÉ=»ýÕ­Ú¤«—vÄü¼r÷'_ÙþØ3|@$ù“™¼Û;›2_ÊRÉ«ÞG^›ìþh —v|‡}KhØzñ— ¤õbnªÊÊŒúyj§÷ÞENIF“Èò¸-*s‘Þh:À¤’o±Ÿ Ø=U#.£~»özƒu}9¬Q³¡á¡Çvlü¡n°Æ&NjŽÄ_¾üÒõšäÓáí—ßÌÑÉÂn麩κ©N#+ÊÆÊ¤ð[~ô°š“ÍøžX½¢Óõž/Ç0§Ïô @`I ŸoÈ—ü,iΕû|¾Õ«W;—‡dþ ¬X±b¥(gu–ü“.¨P}ŒùMüUöIåŸíõÁ¿ú‹—âÊ¿“×(“´nô·°_ù c\RýG}ë^Ñÿ{j­DR­UçxqÍ×()½˜Û£HÚ˜¡Ç‘Ñ$JJ¾üÉ¿âÞ¡ZŒš©æêíAáÓTßõE9WL߉îڈˠߢ¥RmÚ—Ñ${%Ú]cCŠ{ýè9^Ùp(òê÷|4iRr>Ÿð¡­Š *+0(R«•Œï‰ÅÛ¨(¸ÔsµxoQ@@`‰ è½;º®P»[þM˜—xàPŸ{äÛÕÕÕÉãRèú¢‹.ª©©Ù°aÃÝwß÷£\h&~ZÐ.÷ãu qéÌHÕüc>×u9Yð`ÓÖï ŠLúK´ÌÅÖ's8¾z£áÛ:§Ùa;£¥¡·²'&_ÿ(φßk¼oQcO†‡$o^oÑÕ  KäÝ%<:‡#YÔ q<æ‡ ÌÍÍŽŽ~ðƒ¤ ,ͼ$WVXçÌá£ûÁÏ +~þîÔ›Ñ,!™šÒU…œ+1ªM«É¨ÊÆ ½ªÌznn¸:u8FÍrÏ>ûíCß©äÁû.¢Ñ¨ÜøÍ^Œîú;z¤wG>ù ¶¾ðt)3Zb!ïm ÕŽ$(ßóµÐ½ÕFŸ¬@lo9úsgqo®â\])?k%ýï¬óל§}èTú˜+Ècíäääðððôôtæ>=íý̓­uu6¢w¦j::µ ì°[ábÞ‘§¡Yuú’ Pž5¦o0‹RPSïê”Å Fƒ~3õÉ„¯ÌC‹]/ÏKSIf€ÍÄÚÚ(W¬Ø¡„Ù̬¢Ø§–SVsݼ­¹™YzãÍÙ;ŽKå¸    °4øY+WžÞùôYsþú”]ù_nü±G÷?ûoZ·]¿ñ«|õÇý=ö6ȽZhó{1Ü-&´÷J¶ÃY»v-öjÉäA@@Àž@ƽZþkkèk;vD^8Ì7b¥‚gyW­ª¬¼PS}ö*úßÙö=iwÿã?þád²ËŠŠÿ#ʱcǨ­>'(e%Ì©”¯¬¬üCQ6Os‚}Íš5 SŽV   ù$°òì³ÉÇ[[Y);%«‚jèsa•RE7„Ë·Ê¡Y ˜ùGÉáûÈG>rÁhŽ Ãî fC€|è_üâ—]v™ŒÍ­4Ÿ&íQ¡‡%wf¡kÊèÚ4Ç-÷ ‡ ùZÒ$îóÉÕ••JÝ^ Ó8Éàpxú8ßñãÇ)(E[ùR[ýÙ¾ˆó9„©=?í‚<;ï¼óß~ûmçOÄ4°§UÊ9‚Òó3•ÌÊTƒ€€ä“­Í8kÕJZ­¡uZ±rUÅÊ•kמ«UÑWªthùzIr¤ßFžŇèÜÕÓ§O§©¢z!FÕüØc¨Oï:4#·bÞ’ã"óŒä]å¶»Åk#ŠgΩ|gE»0…ôP(jKhÔgΜ‘>¼½…ÁD+X^gÑÒÝsW ŸO¸V´BwåJ¦Ÿ¦E_鳘"¾Ï~ö³ßûÞ÷Œ>ŸÔL®ÞÜœ<¾a~1}-EÛ•+WÜzËÍïÿû¿ù­oë/n½õÖпtæŒ}¾9î‰.v'mrø®¿þú矞œ?ò×—‚-t‚€€äßoÅŠU«’‘ rmÆ·zu²wªYÌV-Òáûà?ØÜÜl;¤…ø´3»l%ó}“üÑË/¿¼®®.íâøÕÈCÆòm“m’$=\[)G7iOÄOúÓ»ví"iŽÔÑ   %O€±äTè¦àU¬(gåì}U9£Ê…Š‘SùGôG$Û°aƒŠ2*ß¼ëâ|ä×­[·î‚ÊÊ´‹5k×J7Õf\Ër‹§Èy–|¡-ÕhÚ¾qûöí_ýêW)± ·oY(:Eà§í2òè” ­*(4Dý2]Y³°žÈç£ðØïýÞïQœViØ(yW”S§NÓÔ1±e¹EÊ~ß~û„ñâ­·~·,VÙtJžq<÷\§+olT‘Ëþû¿ÿûôø"‘ˆßï‡Ïgà ·@@@À½„ϧº|Œ&ôQŒWé—lPÍ‚ãEäÀÑl°{î¹§ªªêœsα!çóѤ1N£‰†ÒrÓ LžqœŸS6]´ÁžñÖE]T[[û¾÷½ïŠ+®€Ã—@@@ Ppg»:{éë‚×È Ýc=öè£Úoø"|>îð¹0ÎG†]|ñÅçw^Úy±Âf×&i1ÌÜ™9Ê;/þµ«©©¡8Mg¤‘’χu»‹G   °ìøîÒÃKsòìóÑäBÝÏþó£££6#”q>òŸ\èB‘¯S]]}þùç§]ÐD7ªq§Ád•ÜïІ¹“[4 óÚk¯åù98|NˆA@@ ‚÷ù¨,ÆÉ3ŽSº}4±Ïf¿3ssbFßÉœD§Œ6,¦æw¿{ûò+jIƒéÅ©S§£|)Ú’·ÇÃr‹Žó‘«÷¹Ï}Núµpø–âIA'€€,§{/gk¹}V;óIU§fOÑb 'ÑrÓl•/µüÉÙÙ¥î"—úi´,‹^íÂf.AA€€”0Åú|ÎO} ·Dr¦i¡ÀÌÌô¬¥è” ã|ú>œ8ñ¤—v2ʂǢÀ߂¢!€€¸‡Àb}>«³×lFH>„Çã9räÈ›o¾i#†[ÙX¹r%í’ãÜEË()Ý>2#£d¶¦B@@@ Ï*dðmÁéÕ…e/%ÏC-‘îhº¡Rµ2<9{>¸   ÅD€û|ò£•sΫ(& €€€%žÛ%O¿±›Ñ´ùއz­n¡²%ðÜ¡'³my‡*ÈÛ#'O¿Ë0Õ8ÙÛ÷Þ»·:ìb    9$ÐÚÚzüøñ¬rŸ>§uú|Yua°'@﮽î‚€€dG õh5îóÍ1¦ße˜¾:‰óe×+¤AÀ–@¶ÿgÅVn‚€€@©PÝкQAûø&e§u¾ùr¶èÍ}K4Æ   ËH ¬Œ¶ZcååI*æù)ää•i|ð¯Îî.ãhÐ5€€€€€²rîðU¬HÞ« ääɬÖ_›)A€€€€€« ¬>ßYg%¬Ð…þ”P겿®Œ0X±‚ÑgÕªäŠò \)«¸¯·bEU¢€€€€(éó­ÏíÒõŠ2¶JØ£¯pù ôÃl eüs¶~Ý.÷ù;[‡GÖ€€€€€@ “ÖèsŽÎz¾žƒ>«hÈAË7ÄWÄù ôÃl Šƒ§cQAû¶ÐGYÕ!Ÿn—fîê&ü• @@ŠŠÀÌôôg::.¸à‚wÞy§8vá…¶´´tww[ §‡<7?Õ¦?:眳Ož©›Q   PœèNçÿv‚ŒÃ)Á!ă[:#áó-[h($¤BŒ3[KpÈÎÀ§|¾â|®€€@¶JÐ*Á!gûV“<æóÓÓÄX@@H€¼ÚÂ#÷å©P¥Znyì°ªŸjµo‡»¥²2ôTλÎèÏ-bÈÂfYt£ÊÑôp²S™qÈ |9R›ÅG~x$¾ UÔôï^œYPÓ\4‚Ï— ŠÐ  F?ÿRÕ–ñ_š奯¡k>¾óHšÔÏ¿tÍPãKÓß¾ÉØÚ¥5Gv~¼êš‰ÿ&5=ý8{òç.µtIÌšyñ…é§_XF×mÁã‚Ï·`th  PT(J”Órøñoößù÷‘¶õRëú¶G»ØýüL~£³¯æ‡ÿø–DR"§½óƒµ2–ì{<üøÝ÷_ñ÷Sßú˜Út}[›v½:óÎJÆñ.^`&þ*Ûøáod¯Æ—/^·ÐaÀç[(9´(. p2ìš~êþê΀Þºôæ?½öß⇩‘÷Ô—®ûŸúIïÉNÙî9y8Y«5JUñó/ц֢|é碎*ü;w*µþ|Ø¢ÞéOL¯†«ÒYýídÈ‹“.Ÿç =z§Odlã/þÝü¨¹[ÓJÙù ‰&“ÃyÌ÷b Çâž>Zƒ€3gμõÖ[¹ʉٹ«ªß“¢”ª~{ë­‹Nœf¿êìüUËÿwø¢÷šÁêի퇳!› JéäÚ~€®Ÿé|ß7ÙzíÖj1Æý¯¥ºÏôüCK×GÙäî;ê4<}øï«E3ü3Ú÷qYñLçüïk·RùÙ á’qÈö@2ß._Ã…$HNßøÌu×ñk*S£/llýâ/$w®ÿÀ‹žO‰zÓJª¿ðº?ÞøðD<àñЗøÄ«ÿ8 ¨‘Ê–ìOç+SË’õÅ   àvÙ­p x%öZšXâÊ˪©Š"}WÞÿ½ûý™¦'Ž8P´ '¸ ØdPRË¡ûßÇËg(1Ë‹ãgnà—7|ìÏÙ¯_£‘98üÊŸßsç{“ýyí×ì•õJSŒ.p=“!/FF‰òq<Ò7úKm%ÇEu ÂÍãîÜÔ”’õ5­ý{6l|uB4ŽOL×}˜û~ù()q>òý(ˆšnÑ€€¸Œ@Žÿüî|ðgÏ~í†ÔqNù§ ŸÿCÞÿ·¶ºuÏ÷ânê¼tb‡&’g$YÙ8(iñdÿ–Ï&¾71q£«¿™Y1FqÁÿ–×òRß+¿±å{:‰Äsú†ybÛ]ü—£SS¬ÿáQMJ Ö%›ÍÌLu+=®{áÀ‹32Z"â†y)˜Ï—Ìè@@ÀÝÈIŸrsõÞOݽeÏg·=£h{fÛͲ¿¹ëzñ•`ðþ®ßþäßL|vËî¥öeôç4d9¨ Ú¨æìÞM#<ÿ§+ßÇÃwGȯUÂtÊõã}ï þ+÷<ªî{«7°Ô NöO!ãõRö¢:Jથµî"%XGi\eIE§6nPâv¦•Š bFà/)f.ʪl§Ïç£P_6Í!    `Aà†í¿?pùå—ËÛ[¿0ôªï¾üÖöäÀrŽ›….×TÓ ž|_˭ꨮü›'ȶ»þæñ[o½ü°+·l¹ÒÆTe¸$H…€l¿ár{[DSµÊ¦ùrÞâ.߯ë4rÛ.å‘>²ê¢ª©?ÑmºÏ·œ8Ñ7€€,~Ëqÿ×?0>þ€ªSëj¯gLùÊEHbIºÏ0šöùÞOþpü“IÕ\‹±J?Æ´kˆè?µ)Õèád@o{š3§ôzáuŸú"¿äó.úð§tk •é:´`zË¥ùŸoi¸B+€€@A‰Î‚29ƒ±%8ä Èòy›ïí\ׯÕrdðùòù„Ñ€€€{ ,0èåÞe¶¬‡œÊ’Kð ]F§hnà§ò7•O >ß’?[t  à~ôÊsÿ(ôfN yiž`zÆVôbZ)ûç9áë–Æ{­ðùìùà.€€@ñ8묳Ž;vÉ%—üû¿ÿ{qŒö½ï}/ˆÆe5œ2­R}çwÏ9çìÙÙY+,…U¿jÕ*‘óÕ·ðù ëùÂZܨªªúñ|ÇwxÄÑEPŽ?N#¢qY¥‡¼bÅŠWþå_ýÁÛg…¥°êß}÷$ˆÆåÐlø|AA @@ h |îsŸ{ì±Çz{{OŸ>]ƒ¤0^eeå=÷Üc5œòG|zfô—?{湌Yo+hn«§_yyùGë>ìÐ0Åç“Á¢¡àpðIÀÆ=*VD%8dçîQQ>ô”s8œ§„‹’   ÅJ ýì5rûàùëÃÆ¸@@@J–@ºÏW² 0p(bðùŠøábh     €Ï‡W@@@ŠŸ|¾âÆ!€€€ÀçÃ;   ÅOÀ|Oæk®¹¦»»»øG‚€€€@1¸îºëÒvbá>mâ¬?h™®oÅ”@ÞömÎ[G¦ÃÌC¥Ã=qôbÆ&ƚȸ/|»ûxûî¶”ìFhS¨jůûU¢Ò¢ÚÌ¢Ï×ËWo"f,¯R.U%fÑ0Ñ»³_y˧6¥` _™)ŸE¹µõ´×3 ,sóZÕ¢‚o™Ò%·0Õ›^ªùì–²7è÷Oz%/ªˆU¼³ïEÆ·Ò²k´5Ö/$L+kp!‘z…¶…W¹Ry*Øo¼¬gðaÇõw¶PRiCúé·µŒÞ¬R³.gQŸþ¢ÞÙÛŸziå–ôçå¼@úmp`/>/'ó`¤=”[žLNúË`x’ÀÎ}÷û“÷ /ÛrÃCÛËÁh8ìÈ·ìbû§ãIGž„œýÑüüâ||~Þ‘'!'?>ûñyÜ‘'!'r ?ž§ãŽ< 岨¾HwÐ "™’Ÿ ‡“Óœ½d?TºÈTeŸ¬­%E(]ò¯Jã '’Û¢bö®†N çºà’}âZ«nŠO?øü¹* Åû¸r"‰yBîx-‹ê‰~®ï½;ˆdaWv¡[¨­Ýj×ÃY!åÊÞIñÁXFÉ"]Â"*QˆÐ›uC_]¹'•ÐdÁº&?C—7†ˆ0À0uü ÌšœCžˆ<Þ y8X ·Uê–ã°Є=Ý÷‡°ÝCVmhdÅv³h2Œ#–ðzePY0,ët™j1.7ÀЉÕT„ݽ4Ût!=e­}ÏMîÄÈ„JV¢ "îŸNþQœÆ£ŸÕÛ>•“¦Dø”Ë:ç\<–à°þX‚ùôqpA·›p‘e"±íh­`¼n ㎫£_Iýå¨ í*ô*Owl-·úŠC¹F£1ÜÒÂX¸ƒÒDÏ¢ñ!‚Ù¾™VöKaóUÎk ¿¾+Î#‡.új ö]êÄ©gB84  ¶S S&piМ!ä³Hi›«æu^$Kݰ4ÄÅ …0$Wú¯Å þw€:hM›Ü^¦ ¸ôغ„ÎK ذ•H‚oSSòü‘rÀö¾WÑÒZÜyOúˆa>‹†ñ)Ž\¬‰Rr%9œ$.4ÖÚ©Ï'K+Ýž<×dÎvÁ¼ˆ(¢à{‰‹)qãm «• ù<Æ/¸ß=ëReঠO-v>Ü<ºÕ5Žœ>©?ÃYS<à¬ÕÕ_R/ !ÆÚöüP -wp‡=FƒqÜ]àŽa1€\s›3üZ/t"÷‡æµºr`PZ?uüÊ4 û\³5”YûôAS΃Ï1Âù/å;ø½6FÖtX÷4ìæûÁ6f»î(»{9ØáÖnÍõí¨ÁÙý…¥¬¹QbèÉÔ~Ô¨õWH´ýPC˜fÔõ%\[ðØÀßJa÷;縦X«ôîRc?É™:Y@Œ¸±—\ÃË Ø^xö/øÉ¤rR~ü¤ô÷cë(O:ø±P+ÜAþÞr¸Ö1ùgE¼Àl3ÐÍ`Ý ªm¹PP¼1¼넆ƒ¶²fZ•_”Nçè>ñ*_À·Ípaaàù˜ˆùœÆ‰*öÕªNÐ4¢‚¤z}û…ëÚó«·ö“¢ÃˆøM8@÷²ÏùÖª¬ð§«Ãà6îPÆq*²K—]Ææû,UÑñ`ï0,—’FÒ"[ ^~Éju%2V¤· O…Þpw÷:r›jqL»ä‚%_¢A´Œ×Ê`Ûè²WcÛEêåQÕ1Aù(õu•ƒy†£6(Ó‹äØÎàùì1Âwµë€¡*öõ.+?hêÚÝF‡o€*Âié²á²ûÙ£M“cp?’ãX>ŽÿK{û8–B{{Ë6}4øzÞøñöÞ72fÀÔØIËçvÜ‚ëÄé%—pÆÑÛ*‡)6P#M…M71×jLh`$•Ò.¤àt©{¤ÿÀ–F‡L T¡9¼ WÔ.'ˆ£ÏþÿÿPK !\'Ì «ä«äword/media/image20.png‰PNG  IHDROZx0ëÑ pHYsÄÄ•+tIMEÜ )W<îtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/02 14:41:29 lim_j SGA250167þ(x tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì½ t&Gu.Z¿F?N̘Á“œi&{8ÁkƒÉ’ÖÕ9Ë#û&ÁòI@³HŒGÆÑ‰3Æ“å9ÁD`K$,Ö.cÝr™ä*”0<21?@ÖÍŒä„$×ÎŒmåaÏK¿îÞµ««««ªûï¿ÿþß»-ÿÓ]µk?¾ªîÞ½ëUxæ™gV§¯ÿÓ?ßñ‹ûÞõ•Cÿ· c]¬¯ãþ×ñ(Å:AœC–¤€3< òOäú‡Îe6% )àWRËCò äéŒBGdžŽB‡€?¿Ä@ áHN¿Š1"^'¹â‰>ä0Q²I¦–ŒFJTRË‚ƒ EÙí¼¿‘ Á'²¨*o²Œžš+Õ)4^ýv&Êk(º¾&ë~•| ”Úÿâ çºHÿ2Œ#À0Œ@+!på•WöôôVVV»ïæ¹g‚_ý•_¹òï@#CHz6Ò¡Q> ã¾S&ý¥è!¯¥«'=•x*Ä_J¥,ò ; ÊÅÁ²?ÒMk(Ë©RKzLÄÝ%é!Zhb$U.VpBT$β"j®DC ¡)þ—Æ“¿ˆå (,vΡîZ²ˆäÀRz«Ò õ'KEQÁd~pQ€sޤ ü‚»(•¢"æo ?é_ª$!ËGI«¤ló*±M˜>«‘u+Ü[×Jôx ÆQ¦ÇŠ)„ìͲ½4 hf}Uj{§AÔ¨R]€u333CCCqm2›ù<òÈÛßþö*é\.Ûûï¿ üö·¿ýÅ/~Êv>öØc‡Ž½â·~óW®Øñε¢8 1!p 8$‹à0 ÇúZÂ{èØÀ/Æùè?Ì.éÈ‘;¡|í@~Al· þÃ0FþF A––,УÕÒnˆ8jJ7Š]Q ÉKjA?ÐV±Å|p–$ˆlÁŸ’ õBHóA»°”d©ÈÈÉÞ>¤Ú,ÿb,bŸ²0š@ö+0°°”H ©“ Q³^/æÈ€ crBÇYÊÚ“¢c©Z#%ª¬ŠBY‰:üº¬mUôÚ¼t»×‰f.”£Ë¸ÜAŸ8Ê”dVñ„R Yq:˜é׈yeUÎÜËV'Bmº"t['æ%ë`¨Sˆ¡I)&¥)=Y=Îm(¬¦uj¥XM¹î/¥ º\“-— eŠ·¦,›Y2É m)ih,ÑŠdPÞ[¤,ÑÐÆè𲂬²¸MŸWëõ*–2”!ëvìØ±½‡~¸ó/z覛~óŠ+ß±&#aà ×°Ay äÃ×¹A!UºÒ‘.ý#ÍDO*Pƒ<&ºBz™©ãR·‡ôÒOY/vH¶aq"V)éžè]uˆu©¡’£ù7$’p@Að–ÈÛ“þŽöÀ…Â0õ{¢)Êá#ŸL‰Ó)fJC‰*"=c€ÁñŒìNUléT1„òÒƒ”ÌÁk“~/8jàíIoU;mÒ²ð sðä ,Ьo b{½$™>­…_Û •n\«õæêDon²¸ä\j¸É4-“[íG†~ÀiA~´Qàv³®Í²º É³eª¦ Ñ­m·R¬Fb¶óŠ[”ÔBÌôjÀ«Ÿ`¤v5D´6O}w§7S?CÒiLJóõ×Ôí ‡¯óäK/íxÇ;ÐÁÃÐRp(¯NºÁ‚r¡ðJ°*ÉtA"Y!ÝŒ6‘§¸9ÈOv;¢Ã§Ë19yA"ü‹$àVQK1 Jií¥žúJy™’Šþ´bè5ÂY&-Õ‡íí®,ÑPðŒœT媒Hó—†ä° ÛÌG‰€ÖœøHiÈ„ÐcEPZ‚#/à½vÎä²ÄÁûë>ë½df¢.’¦¬~¤d‹ÖE¾ J–« yçWOŸôà”k¤÷Ée>£­Ç=ñÝ_³:Jò$%‰I¹ 3}}pïe³qÒ¹n3VKÐ5®ÛØBE4¥É,uS*D N½ ÙV©xmn“”˜™U­% ÏVª$Ûd‚Üqû?þϯ~ía-ô½×¼ã7þËÿ‘¬Ccæ2üß°Ü tªd’r˜œ •J›Â³Ò’‹CîˆIÌCÓ뤗.”¨²LoÕP¬#b“8uyK(7}ÒŒ± €K­0Y±7*²´9&/‡r•6ïsý€&ú‰¬ ÌÜ”R¨l†‚%ù'h•U’m.uW@[a=”ÍKzt&ÿš|t{Љfåº&ë”\ e&uD@W½ubV:e¥¡$CÌÆ“£iÔžsdX’•~¸•Õೕ*©Œ— &µÔÇ«dÊÄõ$WïˇhÑ×^·Ϋáð¬¿úmD>¥›’8²Nš–A~Žö6´»`ù6¿Û¡²xzK$HñÒƒ*çýX Ìåc¦h?É6P^»e5™%È5R,%¸i»ˆ¿.«uH¶7™³¯½ ‰æÓJßT&½~”'0ñfUéÉN²´ªª\¯¥Vb‚n@™œ›†Jëq¯/é¤ä¯)…tÖÀÒ ¤y£¤Ô–Éê‚€Õ­{‡ruSÑ­W·«iëIâJ±êb{.BÉ}Gä³öLʺ‘Ë"®½-É!ªgºz@ —àðUÃÛWOË"ŸÒJ©\(öøéá\ú\Ÿ€Xá_'N·À?â㊀”^z]DkN®ŒþµJi'É"ÓÄÉò–òq ÃI[Í<d™:7³œË!“!œç{À3+á±E¹æoéš>8AhB©ä¬4rã8TCSV%ºÅélñO&£W”÷õÓôti€3%&‹àÜfAÀm”BúÓ¹Ù èîðþš‰T¼Mš Ý5Mm,™²Ñ6µ½'äîüÑyJ«Ë%ƒx9yPÜ>ËÕƒÜrºôàØÁ'7@åË–çpT"1Žgz +ç`Êrm!þùJñZWØZ¢“ò:äÁ"­ø"Õ²ô¥•î5!e"½'€8ý3Gé®’ô1™TU7W[7ÅÔß²….gRÒü5ëÚÍÕFé,]_^®VœÒÈèú%%­Kjf–ÛBtû±šŠN׿SƒI³—ÄÍd¥[cÉRõ" m«­§Æ$½ Ú(–öÊÕ»æ=WþÚðPN Î÷¯ÿú¯™•)YBwàðQ„ÏŒóå5X_ÕÖNC•þlIÁu%ââxÖ+=ΖzéS ¹ð8 C3÷^¦jTCI—§¥¤KPÇ”ÑMW™>'&=4éÄü5áÒ4:Ñ,‰D@¹:Ë{YÇZ`Ñe! žz¹„ °nÌVsÒôfk'‹’Z‹I¼­Ë²Tmb뮩žEæ­šFJÍK£ŒKS‰zà}鋟!Wï'ö‘‡+"¯G¾Õàç//W”ôx{¡êONÐʾ…¡ÃÏféÿiîºH±'îí(ÜóÄ:þcZÁrqx(I놬@I¬]&TÉdãðõ“I±&Û,XU`~\ÑUJÓ”éa÷8¦\àGàŠÐÕäfU˜’¬Cõä¦Q[å%®¯n¤´78Ñ¿nó3sµ&½×4Nl¬; .¡Þu¢nÛtb6f3pД-€I² t_$ÓX¹úŽ+«T ˆI±dAìMf˜>·Ü ª7ñ©;Öäñ‘Ñ}àüUÂ-ÎÔe ¿iˆÓÓÄz{Çç¯+\v˧ž€¥”‹ÏÞø]ÜqÝÜ?¥gKyéè0,>{xHìzà<-Þri,µ‘ñäĆŽ{Ÿt)/Ú><$¾óL¨Û“߸uýSW_z|þúíýäãRèÿ%,úä—Þ÷6•rxèÖíÈ.$•( Ó::^³sÆæ#‹ê¢¬yüž/¿ïbŸž®æÙRâpðpËI¥”·¨~|{ÖÖÃÝKã1¡Ô£?Y¨—!%šúxÉÒkhϬW‡¸ÄlºÅqK“n¶:×Ï;ý”×éÀÎII]Ð=±äš"Ò¨Ä4‰Ý¤œëæ)ºÝÒ‰û«i¬ÆSUKM «*ÈËœ¤ghüŠxð&ff^ÌÌözõ̘Í4rõFo½ \=s¶D6nqjÓ$\ð,OœÃ>H+RVzŒ·w|~ÏÀ „ºÀƒïÕ‡ŠÅC¯.‹s­ˆÑÝ»úñÀÝSΞøç£÷ pú¤õIº”àj*×2ð?>=³ëë1ó¢þÛï)Üúx€@.âã÷„ãà¼d^/½þ¨ó饪ibE*™ÏnWë¸\ó±ž@£É\Îm›WqÊæs\?ãèD›¥LMFVX¥´i¦ˆÛËâ*A ¡Ñšá^RYý«iˆR·"­žIY‰ÎVYn{^@\üÓ`ž­TÎu¡ïÖÿúûðg¹zù*C®ÞøÝ·‘§ž%@J^_Œ·‡¾Ò=ä+Ñm@÷F½®»÷Þë`h>*Ü'ÃM÷Þ»A¥f‰lÉpZ„©@®8ßþÑuqëv-Ó:âîΞ@çÖí±I4ðŠ‹_­þ!n?³mW$JÊHIfÖ¾¢­“@1°9PDA×8`5hó$MÉà«G æë Z•j¡Ô1 †…½úŽï³^?Ö ëR#å-kÝEqe-²Ü/ë% ) K tÓ:˜²ôsÜ:¡KýK ó¡o€n–®>3+÷:e†ÕCÀl´f›Ñçtâ¶+N-ßü5Ëš<5MõÌi|Î|§Ð 11,7èɽû¿ÁŸ¹Ì²6Í}Öe³\ºïÿm8vÛÝ0\~éÒõR|Ù˜S)œ“ëÇŸ}d}×ðO=2‘š»ÿÖï@ì¡WƒGðš£ÃÏÀò·Þ* ôRt¶o¿÷êâ-?ãrMyrââÐÅú%±!×ѹg& ·lä+σxâÀÚãbÃöõǼݾèîí¼ïñ‰W¿Z:{ɈDèž=|ýk.îŸzÜ.öäÄ[°—ÔýF¬RÙ2dpø^ƒ>!„ Ê“EDèºmq° ŠCoB'*®px²°aû—žD®(õS¿û%ð5TéÕÐ>Šv¡¿?wý¡·”Ð| ërÖÓ<†_–dý Ô’ô\Lý­R YÉü+ÑÇ䜠@BV²nés-0Í'¸~À™­U²tÓ4”®AëAiŠH¯'S6f¥[íŸ.Ýf €›åmlÚÌÜ?‰þZóÚCjÝ µWÀ’X9&ÉÕñf?묳 ·´³³„¸¿{ǧ8©^uÀp@kýd7¥,éà¡BO¢YÄß“{Ñö‡îß 3ô픩õßôG¬ãÏ~g}×6ˆÆà#…‡t)ÀU{¼ðP·t¥P¹ó4AÃqéèc0uBNÓ ]=åúE:o#ýµ&)È‚9'©ÜÓ(Ù…"ŽÝ=i“Of‚!Š&©¥Dï‚y+8I&ñ à>ÄJ}3ÔþEý‡ž(l‡“!§'Ws‚\:y{2uÁLÍÌÓrG@?ô‰3\RŠy¢³àÄMוKYú×dH<-¹Û «Š€ûpïkë–'‚¸_­-µ“›++ÓÌv˜ Ã`R &úi‡ƒõ4ˆ#Ë7ýì³ÏN3ï•Öa¥X,o,_erçöòË/Ÿ{î¹&[¿·®ÖïÞ[øèeøf§Ûé‰{ƒ·üýÊq:>ÿñâäWâvëï“€žÇ®áí¯–˜“ð ÞDHöÒi‘3d­fU€_bLÁ° ôµt÷Þ·ÓP"xG VIO3ˆê…’TNz‚Q{¢’R’ŨG¥G•—¤Bj¶X(ü¬ipâö^KMüDAj8okS/zÍUÒ¤¨_¨ÜTûÄâÒÑâ?Í ÝŸž“,/Ì5™PªùXOËEÒ¹¬Ê*žLl¾E,ʪÊMÖŠrë®›·Êô €NÜKý×{óL3 ÈRÍD_Z)iàbšFC@7`³%›Ê:§;Nÿ‚9t®o“å6šÉ™õÉÐàõm•Yhš‚únMCìÒÔFIW®7”¹øâ‹ÿöoÿÖ››-±B|² õ–‚»ãÿñîç~ÎÌñöpþ*¼Ú ;_£n·íë¿«|¤]»¾“%p‰’õžÑ{»ÄôŘŠÑ# œalîžß–¤Hü6•ìS £oà臭* § è‚äØÄFú¤s =£÷ ú?&#ƒp(¤;' {3ƒAËú'på©b` ¦CÈØ¢Ìg‰?MB+³˜Ú¥› …Å2Š™-Ýë’Ç¥£ÏþkUujuL ¬Û§>¥Æ‹˜:@õÃÔl\ŽG¯¸â‰™T£÷HÕzŒ´š”ÐIIõM‚’EL¹8Cqo©’r½¥ 1³>é­Î¬[œÎ)Óõ›‰N¼—:K?îMb+äj&ZM“R+&k  ZÍ[úMè6tõí©OÈXMÙ¶'+I Þ½Ò”J¦É%·\ÅL¡s/¿á oX^^þÞ÷¾÷â‹/‚†qM1}ºn‡¹pK/×¢s¾ÿýï?õÔS¯ýëÍš*@Ouϸ­AÀ¡ü÷Ý#R ™ÅL pyqJ€@.°ùk$ ÈÈ çÊ8#óJ6¯4÷q`¦xÏu¢[6¥ˆJȬ²itHC㪔­”É' ‡44®niRˆ³û¢Õe)Ëü…¬ruS¥lM1QLS=ܦh¦èæD'q¿ ž.¥i¨=$óÏÅ®:6¼ ¢3É€R.R¼L¼‰4,Yœh<+++#‡¯d‘ 53GëöÊW¾¢zàË‚è 6èôã‰N«+Cp }èÔ H”]ÂL¯0>ÞuøÙr‚MeË«^<`{òÐûfîyüÐkü¡¨rt?þôîÞó»—ÅDµÊa%iuqŸÅ”릻w…KS¶Ñ×¹0Ô:€Âšff(žlº¥a®õ7E!”e¥‰^ÿ‚, tµ&OJ$ú4J2Mã à¶ ³åйn3V{Ð5®› ØeјܪdµÛ«$(¶µ¹MrÁÄËÄl ¹Ç„z–Þ(8š\ÒéÈ…Uz&§N²& ¤òöÒ ¨>%ÌX_?T}9 /A¹½ÐÏ;M¶´ °ŠÞe·“t?ëÄõJs(I¡ŸõÖCY_j‚’¬,} é§C¹è3k•À3¯¬Ñ `·Öæ%œ›5NçÖ/¢ÉÌ,H·*7î2/H™OÐíÄm¤•ÕH¨yP"Pó æç6ž¼L³Z{^l“ùdêB‘,%sn6õ,qfUfÖ$[A­±29èN6¶P f[jxzrÕ˸ÕQYóöUQÅ™k¥èûŠNÜÛÌJw 4HCœ†Æ‘\*9×åf¦TR–ø$sHÎMÖ-M®æo=õ%$ÿ‚ /½™n»—i´eš:"à6E+.-§â~ÁÊ‚R&+—m¾V×ÑÈ :C‘ på%Åâ“Û:Zd‰®£E  z{ð¬Å;'ЋN¼~%z³\@-†.™<Ó°5=EóÜež’¡[0.…Ä™à¤Q8Ž[{¦[eë¹ ˜Ä=©]Ê“‰“s½lSIIf‰ÈVJ3IS< ×ð4‰Ä<á1MY%K hÎ "ÒèÉ4 ‚€ÛuJ\¥»¿`‘Y–ZˆÅÄåY!õ}a“òéuHOY ,ùJq¹¹)•h›¦lõ$VsI» k0P¾¤·çõŸ´‡g¹zq¾Žëä™~ÞŸR&gÍÍËÖå©ùÄél1ô²õ&’v–D¯ ÚŠ’X3ÖÚº%~oGÜÃÚ-‡gJÊ”d^½¢Ó3̱xJ¡)ɼŠeNÔÏ5:1'\Zé d%é j•Ü”ÌÚrÁZ"þ6'J÷´5õ%4‰8æùXß¶W–ô²ˆ+A)/A.7¥=S–­†ÐjðLkΙbq-ðöÜÍALoF»5–#eJò:vhþ™ôÀ Ö€¡e`´, Ð"L¯ËëY‰90$n^žqб%BSj)t¢™++N§‡nŸõÈ&ý¼vOJbh=ëãèS’™Å“‹$çÆ©áR’ÒK,=9×Ë0C"I±gt©õ¥™nÑh—@«ä‘Aa.R_¼w·nEV.]š¿ ¼÷Ò¡…¸mÞM©Ð|«VÈ­¬âDg(R–JDœ£”¹Ís´ˆZfTs)R8],ž.ÀÏ£?rË,'ÉôfÈ‘J­; ¡sàlzQú-¼=:1åš"4OëD‹0‰Mž–[¦É Ý{N )‹ôÔ¿Z´æ©}J ÷ú—¦V|n!ð WøGÝA+1 žÉ÷äÜþÉ“s3³M(¨³JŠ.IFJIëEk>+éÜúÕ:ô„s7]‹ÖY”b]–Ô ïsÔ£6àæRJÜ/„_jVƒÏ½ý×·áe“ž­Tú“;“aîÌÄ®ôjTBY8U,ž(Ö„€?tøŠp›á@>t_:›é™>¹M¦K„÷›óIÀÉ$)Ñà )Þ3=3Ó#bí2Ò r“bð'd‡—¨|‡€EfÈ£À¡#’¢eÁ‰dªGŒ­_­'ò¦·gz^¹œˆmÀéÒ¥D÷ù®áJÈŠƒÔ+Å%NIfL(•åJwS²OY*%™«UÊx"›"¬4]&ÿ‚ “ îRëSÇw@JL˜,«5š—qY”îþ‚HM"ŽCœ2å¦7HÃË F†")Á©g‹g5DÔźR8Y,þ;x{ëb­(ÖÎ89ƒè(¬‡ž<£eØôbl¦7F0iKÞrÊÃsÃy Ý(Z“3:(ÌA^{ut"ù’·`û ’ò”~$ûøy„™ëÞ™ªq“ð ýk¦8fpB ¬§3Q§O,Á=ïl¯b¹©gP¯ªÌÌO~d»¹ §™è>Ý”éœÕ,$´Ï4Þ[BqB $A6 š«56—¶Þa¼°X‰fkïÿ¢zgÀÏoo ]½þüÿYøëG± ù^«‡—ÒÁQ>™$À#Ú¡«$0ü“çøc¸D.ËYò›ÐmÒtú$`K µ7IB'é± à¸zä“^˜LÖRƒ™h©Dü•¦áb¥DH®Ä~)ˆhù\æ†l>eF€`F *¼õ­o}ÿû߯>\]yzo‹¢¸†Þ^¡cýáGýÄÇÆª"œ™2Œ#À0Œ#ÀTññqðö´ìi Bq*eD㪬 ³gF€`F€¨.Ø)çdÀH=ø£ËêÊdîŒ#À0Œ#À0µB{ripÌb…E–Éó«•t–Ã0Œ#À0Œ#P]0¶·ÿ° Ëú<ß°fIu•aîŒ#À0Œ#À09#€ÞÄ÷`+ŒÞ+rl/gx™#À0Œ#À0uF@Æöh©‘ôö0¶Ç ‡Ô¹RX<#À0Œ#À0¹!€Þí±.÷´€=ÔØÛË ]fÄ0Œ#À0Œ@½P±=\‡þÈáãq{õ®–Ï0Œ#À0Œ@^È9¹’9|8'—½½¼Ðe>Œ#À0Œ#ÀÔŒíéƒÎÃËê­ËgF€`F€¨Œí)'OmlëÙ:¶B\œ`F€`F ^ ·§pû ?—§ä–[|÷±'O‹År 2}Ó!ÐÑÑqÎÙg¿ý­oi:ÍS*Ì9%PLÆÔ–ÕáVR âíµ’a5³å¯Ž|gÓ+^Ñ÷¶_úçW3¡,¨^üûK/=þä"Tú»v\Q/ª'—sõ°eÎŒ@î”õ8â¹Üñ¯ ÃÌ.>{{•Ö×Z±ø–K/9÷ÜsNœ8Q)/.ßðœwî¹PÝ_û«o7¼¦YäÆœ5.ÃÔ ô#þ«Så/¶,ßÏÞ^¥•±¾¾~Þy粫W)ŽMRþäÉ“PÝPéM¢oyjrc./¦fêŠ@úÇÈÕµ¢òžÞÅ·¤òj+yVóbF€` úï°Ñc}ÊE ½‹oqfo¯\¨™ž`F€`fB€½½fª-Ö•`F€`r¨ÔÛ› Žr=•†s8ÉÆ!M©ª2*ðÔ¡Ûo¿ýÐSF"¤L~ãÇу DèÓÄ4M€€¾5Ìæ—¾)ê[£~¦rc®ö,™`\¨ÈÛƒÒààà°<Ò¿Æ´þºø¦M›€üæhš©OîÌõ¼è¢ãÿ#Þûñ7¾vü½W¿IqÀ«Ë.;þµˆ;˜È÷{[ù IDAT3›º5¬»#®[N!ÝYqĵs­f9Œ@C ðü£|¯:þøÑçËUieËBAd“¡|:y1—*έX’¤ÙUS8YÕ¦Êî푯o£Uydó¨tq°˜äk­ù¦Ìy‚ªo~Ï{cý·/~ÿ¢÷\µE•†+ñ櫯~³øþ¢ýKàÍYM†Ý t¿Í¤1o:Ú̹Žà³hF ¦ Ë3ýÜÛoQÇN±b;EÉê¬Ì}åè¶÷ßrË.ß¼ùòà?Éôeå‚—xc•2¿ðŸ<õdW¾sä¹²´iFâìÞXK/$m¶ö¨¨ÊŠU¥=åNOOÓ‰ElqpY7ó·\æZm­€WJ–Jýé«Þsуâ‹×¡³×ö„töz·léew/ ÌÕ+óUß‘¯8o §ÛÚ¡¾5¨‘›ÍÛmüš†”ôgÔŸsFà¸#¾§ÑWóaáòü£‡¼êý· t©›/¿\Ÿ§•wá…yzxi¥–K÷ªW‰£+FàråØÑmÛ¶•Ë¥Ùèó_oÞ4:Îo,8'Lt:%B:¤@'—FŒ|G«¸v(MÏRŸkbKbJæqº‘J–/[V;éº_[¼ýO¾Ñ»G‡ñdñ§zð¢Þœ¤³÷+çwïO|U”¸,Lœ'×\s Bu Ê¡%!G×Xdèy- É’.i¯6Ó‹7©‘ûoþÞ¨èõÌèíEñ?“ÀícMÿf2y»ÐIÏ\SººiG0+âÒß{è©«®3<µCötBèì Œî݃Ä:ì—U,—Ë ó ›ÙÕÓmÒÛœJ¶X}k”¼¡ÌÌ9§&ÀlFA —ÇQicü¹•¹iŒù}ôÛþøQå¥=w;}¤×ƒžÓÀ-ï¡§#gaq, ®a’ÏýäÂá[¤s6€¼É­|ôŠD™ëæ´º9NU×Öm_9¶2Ð…F­Ûvnº+·+"ºKöGÛÆB9‡Ìk)$Ý6|Ë€ÉÊtEw]ŽÜB3“ÐÈ9¯*Þ^œŽ®cG™>xZ±ôÅ5¥«››RÛ7]ýÞ¯Ýsè©_ JጠåɈó?.î¹ýAÍuñ©ëÞÄî^y W“šž°™]=PÍ ][Í©ò üMžqç„7æj¶æÍTÊG¥U|î9ðÑì8ØóÏÿD1¿Í—¿}Û‘cŠèÂWH' 'ñÈóž’R ¿pÇNI(K«øYŒ2në 䇡³ cÄ tëºbÇ#‡Ñùzþ;G^õö[6 cˆ¢G´ÏX‹Ìk)jø†$Éàm[忆™1@ä• «jÓÎO…B¡v€‚¿Bù¼!\áö+•Ï&¶¼ÝéŒÝrÕž_¥Ÿ:ôý7_½'dcÓ ”©Å0aã#àmBVc³œ0o‹Mßh‰R#w§¤†În¤Ü˜SCÇ„Œ@"#ц/üãé{ï%Ýqòœu ï1©,g‹¿Û½_¹\:˜¥s0$oô,)Qx'Ãb?ë4ö^¸m›êÇÅ‘v_ fiàV¦H¹T‰ö]{DûªÒCæµ”4 ºr哺П[x¹X|Yöä’ÃwÎúú»ãŽ;ÆÆê¢%"p0ò)¡/¬”üú·Žüï¿|âĉFP†u¨çœsΟÏýå»ß¹£²j,‚sgqŒ@…¤|5Ä­Ó4`fG¸ÆK…¶7nñ*[š²ÒÇÇÇï÷~ÆíVkEq=¿'6Äi8­ßžîŽÔO5–Ì0Œ#À0YÀ%Œ/ÜaÏÉ©ÑË4¦¥gΈ§»uéä»Qœ>UO(ug)Ñà½z"ŲF€`†FÃ\ÁFБ™ëþex£[Ú¹¶&N¼„‘=ø¾3Û“Î_æòð ü¥—^>÷ÜsNžßÚ¹ëgêíí5W«Ø°aÃcOþà?^öfpøšKsÖ6/¿|ª*=CÙÆ/¹ñëˆ5d4éGü!×2Í&³‹ß‰ñ¼µõuœˆ[€ß¢üã#=ïê{Û7|ç«ßü– ™¾,S6ðÐìèèøßv\Ñtš§Q˜s”˜†hÒ?ŽøC®Aª¬r5Ò»ø–¬NXzçhÀÿEvW2VD«¾û3ÂÁÅšnÌÍ\{¬;#àG€?äü¸4ajzß2¼½õÎNÕë€àžèè­ÙIÕ„µÊ*3Œ#À0y Àry ØÄ<:7tŠsΑ¸á+ ÔYÓ½s›;V`F€` üÔ;Þ±á?ÈPÐ-²vÉ%ÿöío»éfJ'¸wÏ•4 ´·.:ÏgmL.¹Œ#À0Œ#À0ÙWoõų—7Jnºà‚’|ÐÛ;ï\¹¶²¶=»gU²0Œ#À0Œ#À40Hïl©*NÔoO¬Ÿ¥¶ÌmXKF€`F€`:;„8Kn£ÿã\tøø`F€`F€hÐÛÓîõàþø`F€`F€h :Áà W\-5dxF€`F€`Ö@€]»Ö¨G¶‚`F€`?é}ú³÷ùùq*#à pó‡otÒ" ³³³ÉœË0Œ#À´ÃBTøîLì“‹S42wܶ'C).ÒnÜu÷d“Ëjµi2 #À0Œ#ÐÈTòâ+×SÄØ8|0\¯‘aÝ“'OþøÇ?îììܸqcl±Ðx¬&)pœ8qbË–-µÑü݇6ÕFKaZ ¯_·ºiß;­T¥lK3! ï¾[n¹¥\½/»ì²²Š¨ž\vøÊB‰F€`F€È O~ò“éYýöoÿvJbê¿…øK8n¾”Ø1#À0Œ#À0ù"ðÒK/¥axÞyç¥!3iÀÁÃþ8ø‡¼?ú-— Ó3Œ#À0Œ#À4,áè«pøV&wЈ¯BaÇäJca6¿;P­vÊ! DcUK¢6ï»F|ïšXŠ{FÄG6Û¹*q³ø37×›h3(}mÉýÈ.ñ½ñ½]b[颊«¹·tJ Aäߟ½5`““±^­ÂÄÚH)¡g3Œ#ÐPè­äo6]#ëíÕ3¶‡žM÷ÒÞÀÌiqx>›EÕ+Õ7±Œê-OˆÑáê9£àV^מ#ëGötUÏ¢–æ¼Yüúâ[x\ºÒf?/þó”øÃç‘0t˜ŒÄÒRSüáýâ[BL]M]$wÂé/‹_šÂ¿nüã ŒMãb**’;Ì`ú"PÒÏ#‚lJFfVfc‘G©•ÉáÑÞ¹õý³®={ôyräѵgïÈÂÌá‹=æh`¹¬6lسtá·Ü‚U¥ßö!~(üP\'|¤Cà£_ÿð:ñ¾tÄLÅ0Œ##5òörÔØeõÍo~óŸø„›®RVÏ,Œ zÝ;£ww·ŠöÉè×¼êõ…DMÄÄJˆ°L¡a;©:lÓu ¢ Ý»¡ûYò(¥jÈ3¤$ášôL‰…ÑnbiÄùì"öu,¶UÎ'Vc¹âŠ+à·¡¾÷¾V|ãiqôi!^kt’Ê®ÃH—%àãK¤ü¾SˆákUÄ+ŒZE€Õ=7‰¹oµ»D±7™úIãû”uy9@®êí5dQ3ŠæêvË6‚2IÎÜóâ/ˆ«¥Eš!œÜ#­À‚†áš©ž…˜Io¥ºjk ã¬Öpñ #À0­„@1Ý‘Íäȸ½*õä>ôÐC7ÝtÓ¾ð…$ûzº=Ùó»»1æG¨‹Ú_ZÝ/¦!undj 0,Oá|at<èþM&ˆg»4è°²ÕZ™Ü?Õ7´Su°.,ö€tJÆó$UÃ` œ’Âësb¿ê&>Ò !»ŒÃ8'(à™p‰ÚÊV÷Ü;8ÞøÆ7žsÎ9### äðmW ñ tÅ‚û"Ä{ƒñy÷\+~øuì²¼] G‡7‘²>:%»Y¡£ó«$u‘_ú²xí»ÃÎâá d—è×ÅÏoWNÕ_U¤ßz]ª>e—8=WýP1ù(8¯¥¯9ø ê®ýºøu=8¯+ÿÚQÀtøXêYˆÅ¥j6ç7ˆa)þÒXÚ&dF AÐÎÞ«|‡Îͦ½š“K…!²”KB)põn¾ùæK.¹$³––]Š•c‹"ˆùÉÔ€¨obZŽgëßHy^x¾xLu°&$°“Æ+­– ¹ 膣éé $àíÝxãCCC[·n}å+_yî¹çB„ï¯þê¯Þõ®wÁ'H>2²rÙ½]ü¼ßÛ–‡nGMÕú€~Ïw‹}2*1°ú¤F È{“ÓSâŽgRs\©4é–†0Qf›ìÿÖ×9¼—?¦aæF`mmMð7ó7¿ø‹¿H—pnfe3²vÉÕðЦól¼¬Ri]=,†/è“ †Ðá¸Ipº¶öŠ©Yò…°5fl_¹êVƒm,Ï`B‡›()ƒÜtªÇ9»Ë}:ž™ŽWnTÐøî»ï¾}ìc×_ý/ÿò/¿óï¼üòËÁÕoï|Aüªì¤¿i‹ö¼øá+Ån9( Üló&&ƒE„Üá®_]çsK½Rüü ¿Ñ¤•åéâú^!§ÂŠ`2q÷š#ŽcbjE¯±n±Ë'Q=èFO ”ËYª!Ø_}\¼6WŸ2K-pF€`ª€5loii d¯•žM‘NpïЙ„c’tåæ–ùîw¿{úôéÇ{Œ4ƒ8P’ŠýÖ—{v@W)a Îú,O‰˜”Sì¯lãxöõ. CŒ õK£º £ÒT Í™À@/òÀdFÒ‰¹Qdp§s¨òõY£¼=úÚ€À-43|["”kš[…ó÷½^üÃ# š@gî_¬ý:veÂß?<ôä ¢Öë¡¿û®ÃºsWÿ :4ßT0ª/Ö=zZL¿E|qDˆÄ·œîQ1?pÔÞùnñàý~,`‰–×AÏ©ŒSZQ®?|L™#þ®„9Ja vFm¶Ð9;,…ƒ-´îŒ_ÀŠ 7ø¸ê™ˆ¥Êåü· ^Ðb~|0Œ#Ðò¸Ýb‹‹‹nb6 'NŸ>!ûÝÈÛ;§£ãcûöý·±±dvŸþì}wܶ'™†sqvEaOEý¿ „âÉ“'üãwvvÂz+0>Okæõö ñĉ[¶l¹ëîÉ›?|c²³³³ƒƒª“;™2.÷݇xg÷8l8ˆEàë×­ê}Ùc‰8ƒ`ªD·TœMÜrË-°O.óJŠêéé}r/»ì2ýÞÜtÁ«/¾hÿ½ßû=í,v‚£wZ’PîF!ΔÅŒ#À0Œ#À0ù!t²æÇÑàÔyf]üûÚzAÐÛ[gwŠ3á0Áªˆd¦Œ#À0Œ#À0&yuÚzQí÷9ÝuЀ²nŒ@%TÒÂ3|ªuÀlܳDa£(t::!º'ð¯žF¬Jƒ!Ï\8ÔÒÞk †`Þé“'OÁj|p¼üò‰¢Ll0­YF€ð ÷2¤6æ/©Û˜º±VŒ@ådnáàbznæRI: ÏêÜØÙyΆγaëÓŽü•*Õ`ùr¿Xuì˜\©¢v°ZruTQ÷üXKoO9|Ó;³vŽÓ§NƒÛ'»sñÈOsbF€`…@¶7ldžBÇ9gp A¾f\½î™¡eådÌõ.ᶤ|´5à”‡G¸ùrL*ðïW&wã§ÇüîôàwKæÏ‰ÔVaf9Y`ä2Œ#À0ù 5¶·¡ãÜÏ=ûìs6žuÎÆ::7lÈG£ZpY™í;²'Ø*¶ÿÀ^à®À7º ØUY~ÌL ¤÷¶ò´jåðŒØÚ%Vމžî´|»öYsÚR!]«çwLÁ&ÌÉ)_3.Ñœ$BßB}¥4'0¬5#P?²Æö6tœ}îYçœ#ÿÎO¯ÐTÎÞá™…‘A¯vïÒË^>˜&UÐ'ŒkøÈva,>êêã0Ô¯5µŒäþÁ±x¬š½û¨d»é]˜À¦F»³ì<ÜS$•°º/½ÿ™B“´6Á'Äúzì—tø•RA,¼µQdë .€uï²ýÁŒõáo„íqéo}Séâ;À·Ûx¶ØxŽúƒË ®R œ¼¹·¹ùݺ{wNìWcùF—)Þ³0:κs>²Åžiz²ÁVA€(àÑÀH°jæg§ú†vRè×öìík&Hg?<0#LÑo4‡*ífybËs#G“4óEÇB§—ø8‘.ñ}±±VÛ)±úŸ¶ (Wí€$~29tN‚-ÆSSœÔ0ÌïŽoZù( í? ó’¹41/¼€‹"eúûÐ?8}ß}«°Ú™üû—¿ÿû’8À¤ qÖ9Áß¹¢£Sl8«d©F"XPõðóÞ­¤ÚʱEùJÃc`* 雓a@ùˆ! ¼܃$Í…@Pû³ƒA—¥ãÙÏà rçeЂ„å‰Åó…×µgïÈÔ¬rÁ•Ù+½7ϧ‚Fiy)M?®­ƒ ²÷ãDi8-f|m²¤ÕÝðÁhì0öš°|íøsO&xs‡#g$ƒ¡´ô­•dfsµ«V×¼ýBav0q8Aàºï˜<ÀA_)á·„õµä OëÁYÄ.Ÿ '0%È8nâˆ:DýALQnªÑ4G×ÖÞØ~:S1^æ1FÅ“ÁCm@H&Ë}1¥9¹AÝOPoÚGs=ûîž¾)çC‚`TzwÁ7_ŠÕüì¢üjp*(èe80öãÆ¿Ô,"`ú>N‚4TЃ| «ÍR~‚XhL®óÉ„£)ÐûÕ‡[0ÉLœT¨ÙÂבÝc|B¨V~9ŸÓVßñ¾Ú2ÙqÂ._jšE6=pëd°W[)¸0/ƒþè2£:難ÝÎ"zS¥;_“É–—¨›ÆÛ/ÔÉ>[ ]{¦'fõìe4xZ § 1@KCV+“ûÃØ¯÷Sù‚Ÿ‰ys#4è)qÀSzÒa‘lµÍÃk‚&Jεyו@À–³ª…„_ èK½!zÜžlÅàÊ—øä(GC¸«úD½æQ•£(Ó2 „@ÖØíü6AéTÁW뜀ÑðòXœ˜–Q†þËèªdÇ x'’‘' ,†—z9¶—®: b`½£Ã8n3Ƴ‡öžÎ㪷|º){öO×Î!13>>Ó«âX1 èÇ…™ðfì…i¹ê€W/„Î`©P‡dø@b0àŒ'.iµ*šhBb¶XÀ¥/úeÃ6­™¶¾®2Ô–úÛ'(–8,`ŒtŠH`™#Ð*dŒíµ‚ùÁd € o"#7êÀR Ò™ÆyYwäÀ#TÖdÒ Èµ ÒgGÏñìå%8`´žtà`‘¾pšCwojªWOwhöÀ Èà"ÿÿY¡úam’+¤ÿ.(ƒ:‹!_O®.ouDB’ ©?™ÀʹÞàËJ~X9lË33έôăîÕøY©?9ä¨ç`Μ}®ùy‰«g(sfšxdP¿¹æßf0‹´!à”‡«òàl!<#Lú!¨AÇ&€L“•“í$”À?K‰ôo—‘‚…µ8S®q®9Àër´wÐ,UÕ°ÕQÒÇÁD¤Îµ4ŒBi u .g×Èí#ät·Q©ôéÙƒŸ…„–û&&FÄLTQß:0ôГ½·¢dÐ>ŽÔÑBÍ45ÆÊ°O.{{M]é¬|›"€£¬ú&R¯Úܦ(±Ù#`~ ÌÌ´=ô!:ˆffðå s-?²bí˜#Ж@lïƒü`¹¦7Õ&iåÇôŒ@K!,}Ë ;È´”‘l #À0Œ@éÇíéálÀ½½H9‹h(°Ô‹ÚPʱ2Œ#À05@ ø=xq°·WƒªaŒ#À0Œ#Àä€@úØž)ŒÇíå=³¨;«««u×`ØG“o“F® ÖH‰@¶q{ìí¥„—ÉM)ö„nhX9F úðmR}ŒY#PuxNnÕ!fŒ#À4+\ ¢Ët},ùüç×P˜F€È f·§ð$<¬ËrA’‹À:oÈ™ñË–+„éF€¨=/¼ `{MãïC°ˆC4¥±.Aa>F 'šÝÛË †M_Ÿ¹±*¦Ë $ù`F€`F 9`oÏ®·Þ^1söU ØÒtd$q—*›_×`£.Üc,9*[a0˜ –ÁKˆÿ’F yA†ºd“·¼Ôe>@‰æTþíS‚¡Ün­ÔMÛØU_»’–§Bb%–]‰ÜÊSŒ©sF âíe›Ö›³Fù° סU³v6ÊÝ»¡‹Öî¸íÛÛ;:Ž»}â»Ï/NŒ j¥Â÷aXÎbåfjI¶*ùXÌ\"À&O´2ÜÂÕ®ä|Á‚eðæF`©iÜm×wÌïÆÕÍ]œ}TÙÓŒ',.ÉWÉÞ£·Š¸$šÂïƒDx*³Òæä2ô6ƒjß)Ž>•&x­¨”i‰òåUJ%VR•È-g—…€öëBo¯…\=ÙûÚ oW<ä¶ôó»qŸ{y='öORèna±gZåGÀƒ­§fÉÝ[9<#†vïpÜHr™"6àºiÖ$ xiÎ 7Pdybq@]lÝʪ8&.þË}A}–[8?ú¾Þæ,?4™SU˜ß9<\¹^|§TŽaŽªQðÒ¬î÷wŽö·+pYÀíÉíîé›"ß » } IDATJVÖʱE¹·7S KË2µ/âǵÚ?6Aƒ÷Ð1Û بàÞl .9žY±HBÎ(wdÝMÛÏï‘’-Ý ¹|ZºviwÏW]Æi8F÷‘ùUjœewLNB`X}2ØKzÈB ´l~ªŒ'Ü‹¥‚H³ä0¯T‚‡¢&×"UøÌ ù—aŒ ¨z¶öu “œ´µ¥ñumkvP‡‡uûwv ©}û`ÝPAωӼW¬FK¬ÂDú,Žt¿Ä´Ãä;%PQ*ÜS1÷Кzú­ˆ»µíÞƒmÞ$¯bqjh!²…,l¨Á 3É‹³D% Ú1y,@É2ÙªÕÇŽ6åªjHèŒG¢%×Ò‚“ƒ³!ŸP>ŸUpøšÝÛ×ÉÀ½«Þ­Š“[LM‹a£EaOš:d¸/éÿïÍË^\“í€| ^”Ä )Ï£[9ç净?Ä;º_@ŒªTŒÇøp B¦3Ê×÷k¶0º4ˆmdnd‡@8Xöó.Sߨ/Ü‹|ÌHó‚R "È…a©]À I£濎-K½bEÕ³l>ŠÔ#=–‰ÏE[K ¾¬9ôFžÅ¦ó€´6iÖ¾líÔðJv¤x­u§«ÄN”U¢í ”ÆmîtÔX=VÄÝÚ)o=_o’G±†“eî jÑìkòâLu¤:Œ§™Å­;úà²;´žÓ¨\Ow–Äž]>tULjvo¯kkï‚~GãìÙ ”˜[NÙâ±TBõ¼¦Ãq½££Ñ^\!–—(°!=ÉIÆ‚®a‡·”t OîŸ • us qBÕâUãítðÕ+Êö)× ½4*1 ƒ[_äð†{‘ÂŒ4C‘Cnrƒ/g<‚³W™xAÊ ¯zÒ+¥_ùñLŒ¸xÚzMàÄ" —š®_®·a›µ/[{Ì]בâ¥RƒÆßÕÍw§„Ü=ÍÛÜs™=ÝA‰÷N ,^[>Åô]ËJÊr¡ö÷59CA÷iær³Êyàr8{⺳ ­OL p¯®µüCoO¾? ùK¨2G–%‚NÚʼneú,Uí²£æd7«IåNÌ𩈠Ñ颅D’5¼Ô«b{à¶Éyòpš-Ê]yøÅ¥Æq ›O:§åˆ>eÄ„/>íšàÈ%À\3;›KÛšÁÒx‚d°%Ú’]É„»,;ÓœJ·yé–Yc+²=òU2ž[i¸âëÇÓE‘dê·ˆ %Çóãœl4{l¬–M‰=Ú$ˆÑ‡•Œº…;uÑL„ºêô€Ë‘ŽÄ ‹råô®nÙªŽK¥B€ú"eUúC¼ jÁùY,Y§h0¶Öß!)2ˆL=U0O;±'7Q­øpob1#Ó 0{KV.(@ÌœöÊô$¦ÔÖS’“j=­ ƒ-nXj •üwYŠ‚ $94fç6On™•XQž¶Žb&ɬ\%“ûš4g(è>Í\n¦&¸|ÏÉøJ„¶¥ºÚpÌ ùyî+8¾<çTŒ@ x{cÀ Z=þlϲTã ñöõ.áøNŒÏ‘=0`YtÚö£èàCÑž\üìÅy £þB„}áÞ²ð÷˜¡KÚ‰-W,µª˜IZmË‚€‰«Š€÷K8½Dï]æ÷6Z—ŒR*n‡Â¹Í=-Ó”^‰eië(Á ™•«$øTV_“gïÓÌåf¨âËûœÔE ¹vW(É~^\S¯bzáÌ™3kkkZBGGǾ}ûÆÆÆ’e~ú³÷ÝqÛždÎm1Nžô¡Ï}7ËmõÜ øêk@#›bP fÓph«7ÛDûàæ½òÊ+“ß›ãããàÎic{‰ˆr&#à €ãÙ«± •#ˆF€°€á%üü±AáëÒ°·W#¦`Ì¥¨p_Œ p%1Œ@k#@sã·íimûÙºŠ謨4fÚÀÎcÚ¥¶ÙΖBF"–Zcµ>ö–©?„êSM-"•c{-R‘l#À0Œ#À0^8¶ç……› ÕÕÕ&Ó˜ÕeF€`j…{{µBšåTšÎÉ­¦!Ì›`F€ÈæîÉ…™è‘e@á:\rŒF´ÊUÓ*X+T"¬d1C •².]£µ‘RZ¦`F€`¦D ¹½=\ÀqiY3ÓÕN´è!á’hꘇå~ÝzÿP¹v%ù”8f6ÛäLÛMMR,»”$®œÇ0Œ#À0퀄ªšÛÛÃ=®¦ÔÆN œ½•ÉaØÁX}²kϞܦdá‚ã†Ðvh'l##À0Œ#À4+ùjroOn ¨Ü½ÐÙÓžz+â~‘¦¢¸t‡I(T‡èðd÷îj練Y 2“€Xn´¥·º2úœƒ&C#hs¶¯]Û9Á€µúýíe]Np·LÖù‘G0xï™Y‘ÂzÖI•r/W¯•9‹`–E É½=ž×ⱨŸ°.ê°ÔøÂbÏô:ÆçwwÏ -Ë>ä9±tƒWœN XcinDÈ®aÜüè1‰ÇòÄâ€~j†ºñ9œaWU’·Ñ‰Þ¢èUäÛ•ß²€D ¸Gpy~´rºTS_—ƒr–•; èŽY_î9Vé DTfSxçi aF€hSš~N.¸{bøðÊžÇûzôî¾r4_—U§èt.Pba þ¡ÞÞ¸ô¤&ẓ}C;¥À•c‹baª»0JÅG!efadï[ÅéGöRG3n3=:«Tj5\Î;¡#{`GCn™^Õó|]ù1ðW]—Ö#dÅ~øªêo——Âë`F#¨Ô´µ »m6­î¬8#À”@Ó{{Ýwo^̈¡izîc¼otv‚hQ ÔBäàÜo=bl)—ã ô÷îMzÇ(7R1X9Ç©üô(gÑû;ÈË+£|Î-T+(p -³ Ï>@ Â6û{æ†fðKÇŽ©ˆkÉ98% (z«>$"l'zGGñ»"`•2ˆ~< )×å˜Ð7y3ÒÕ—”jÓ÷ðÜaêi”5•oD¸5çÐ2¶y¯¬U=æêâò$ öxÅÀõžÜiÌŠ×*á­Í°^b†SSê QÀ'\ésŸû,TÉ«5|E±‚Œ€ééiOj|R³÷ä‚eèîŒ [ÑM Dc™Ì­»‡:^ gÑ·kk¯˜’¸Á!ÇùERÌ"’^ =\™ÜÌ*öT™ËY³ óF¨;ÛSª=“ÜØ+âÛi>º_@7ÃÆ²0jseM‹rã8: ½eávrt)³ƒ¥fŸ»ªÆé¥ÓK¢jˆÐÁ²å¡Ô¬Tïr byBŒ7¥›[ƒrx†l áЋ’v1#À0 ‡@ x{r있ö{âëÆÀÉÃbgçïÈë«Å¥S¯= ¢$’ÃI»B½$éuœåº-òï'\:&˜¥ôJUÝçÕtp8CDC0ðo/wh™7—¹0N—æƒa§¹&êS»ŒceÐð\»Ð‰ lǤ°«øG€ªMà“t}¤á7M<3̱zËÊáªmL9°Éq{©&¡;ª&ëFÖMËVë…½„b§{<Ñá *Árª['Æ×`ø YÚ¦`F qhþž\ÀVuÅFQö&f¬Œ’ð”Õ{ZëIämsˆ\ûéµj0·)ûýzyTm§¤¸®üFÆzå̃~œÓ3œƒ¦e0,Õ=ÙµgzbDÆúkýE‘F±™n´Q0tèÄ EæM,ÉŠ F€h>Z!¶×|¨³ÆÕE ¦+?}§yYêåÂVÏ<ÀA‡ñâAVÐÁŒÝþŠ– W0ÀŽ]†Þ²1Ã, Ð^ÕꓯoöœÅæ'ƒ>YKvÚÇiµ0sXŽ©C9UXW8‰¹Ô`vS¹$#À0UG½=ê Ô¿U—Éj#àïÊOßi^–~ÙØê±rºþ1Õý?¼ÔÛ— ½ÿ€\ǰ zr•w‹©³0¯@†Þ²Îð¿pÉG¾ùdù‹T˜¯XÿÖ%5,×.’s5â´êë]VcætÐM,YƒæÐ‹ íââŒ#ÀÔ™3gŠÅ¢–ÜÑÑqçwŽéµLü:}ú³÷ÝqÛ§¶('Ož>¾oß>xS“tîÉ­F-0OF êÀÒÚá²seJ«¤l™¢˜œ`F þ4¡··};ô=7ÄhÂ#PS (§Æ\ LP/fjù•”M-„ F€`œ“ sði<Ýb4zâ Ð8&¯¶ÉMZmaiUCÀž•]Ž JÊ–#§Qh£3å•VÞÄFјõ`F J¨YUâÎlF€`F€`ê‹@K¬·W_Yz ƒÍ@ Vh>øÞi¾:còh oÏØäÒÚ‘fàÁ¦OjÚb—'ój+² +6q÷nسLFÅTèWwŠZ×v¶ª[+40%F»W¸Žv>£&R(&ez[|õ??;5¢^À^‰““J v¢ ‚Ö–‡>Ø›$ Ã{3‡W ‰ïŸ¡AÏ¥¼¶Íçì)&²Ñ&µ"_§qx'EžðtKHvA#õRv÷ôñwM“4;Ñ唥m)k8¿N@ÍO½¸n]'µpCikä4|ØÐCY7-ä#7 dâÍ…Ä€ – i^JÌâà^Ú‹m$À-"uÑÛ«¨þèóñÑöt홞ðët Á7†sxJòį ˆdInZ «P¢ué0zVáEê–)+%NmÉǰJ¿¶R‰QÊR‰ôƬ% ¼ß–èÈi?MµS­XcµÅ1F A‘°õ–ôöqV«FÌOsñp¡Eù₯ü t×B=p‘½‰AœåŒd7ìÜ4=LȺDBVFy=‡51Ò=§eÙâ”×”!Ña‚CÇ Í@L]{Z¸K³GNûpœÕ»è@A¤öæbç¬a€%ˆ«—²0·>—ONcZ&ôö.¸@ ñšðÑ€ôo]¢1jø#ã¼jš\›ª5ïë]˜œ$Ôμ‰ÚNXÛù)ØOLv8ýÁº ˹Zɉ4KC®~L‡—z=±=ƒ²<[´ø`Ü:””˜\¯ÉäœÛÄ8u×Â1n,çxÐ49kä´䬆\c³´F|zsûÌá´<¼QÄPp#{)…àОsNj_ gΜ)‹€ŽŽŽ;ï¼sll,’Oö¾;nÛ“Lù-†ÀÉ“'loOOÖm>SJi¼úâ‹›…èì< ºKÑV1øé-?ýÌ3ÿ(ÃG]€7‚»N7±®j¦Þ¤j§²‰t&«6d¸VDÀöö`ôk+š‰6YC'oþ«ó±¾aC)SgEX<#À0Œ#À´(´ö g{{-jrhÖº1%E<ýGWõŽ}‡2¯_üÆMo¨–ýyÓ¹wÿb `½£ §BW ™|øÂ`ó|1F Íà{§Í*œÍmSÚÎÛ+êáOÿÑ»/ù³ÿüƒ—¾.]¼oº ¶°z]ÕšDÁË.ÊÀb)Éç<çæ­ócœçä6¬¬#Ðö ·^H wàZUÄöþö3¿ñ_{þìß~óuÅu¹þÌ5Ÿþ´(’3VF2ÀÏT²ñjÈ`žŒ#À0Œ#À¸`—"¹z-e”Ò¨å•5©óâ“].ÙÒäÕÀ >pãà]eÜ«t{¦º£lóÒ»¥+—kS¿c=ôöpëÁB2ZØï _xýÅSÇVÔlÿ}­r08>ô“àøÔÕaÒ¦#[ùÌ5»Ö%“ïý÷·J¶º hnU×Úh×Å:ØS6Øk]îŒ.hïNP&û>é¸ÎWµ·‚ª Z,”¨èËE·¥Ž Z™ŽìŽ»2¹qb¬¿Ôý+\¶°QîÐÌpøQW%ƒ˜-#ÐÌØ=¹-?]<-y\ý›ûÅû¥[¾ª.ÑÉ]7ìÞðF1ýÉÏ®dðo…IéÈVŽ~÷­Ý¯ò•¿˜ý®daÂ#÷ª|Çt÷ô-ýÙiwö‰ ÈWbh'ï¦Teü™=#€àÒúØý¯WÏDîF¸îÝ‹›c”¸û}l»öìíCú\Œ#`!`{{-Žj¾näðþ§¸~ ×/ÝõG#Ø {õ'ÿú®õ½oSÉ·~M;áU.8O$»ú·‹ß:öÆ_ReM&-@­s+êÚ9$(œ‡/”ž[{U¬oyi¡w«tö°#ˆÕ‘„}A»wC,®e¿Ð¤¢ºug‘7üJŒ8À!K}ÇqXôRb´GK‹ŠÐÄ1âtF šT«¡úœ½A¹·MŠû×c°á#zr9‰h{ÚÎÛ“3‚¿«Æÿgú{àCŒ“é¿0ò@xü®†(à?ü¡_ "ÆyÙk?ô€dûÀø<@eM&è8¶}ë*][{d8FaB,º†d¬o~vj„Þ'·ÑÄcndjд°Ø3 ±ùÂY]¤üOÄÀÍßÝ=Ú;‡%¦ÅÌTiã€:±H±RìÙö>£šã°h(XYš5S0ù!P½†~zImçÇG{ÕÍ)Jß¿u!O'1Œ@t–F;àatÑÖí´p®¯jèøM2–×݃±¾È =Ü0<³>£“·Æ¡ ÀH½Â¡IN.²V% Ki¤¤ñr4áh· L¡gVšŸÅÁKjÄa„¦$[&`òE f 5hõ¤~éû×c&÷< p# h£Ø^g'.%ÝÙ¹:Uëø €›IÊpC¬òÉ?l‘byØ5´t8&SBFâ–'úª¥B)¾#Ry`<±lbÂŒ8R=ô:-šR,9ŸÈ4Ôh«’ï_¿V°ÐOÄ©Œ@Û"€Þ½qZÚ\kãÆÿ¡®(ð¯ÿò/¼ÓWuÛúw££¢§[Ê^ž©ÑÑ`Ðtð.ôÉ;´‡"Ø‹¤z|áÅUº'èEØ…LÈÑJããj¤ºÔÙ¡ÉCWæÁ¤FÀ×sj¨Ö\ 9?CÉ÷¯Wýìóí½ì8‘h5Â}rÁçƒn¥V³Ï°góæÍpõüO~rfm­ŽfvnØ°é‚ H™:ªÑê¢áuÑ7NùÃÙ)Œ ‚8Úþîî¨èÉ'¶×`n¤0P?¯obbDÌ8ðb¿í¨Lí›X>²–Œ˜Ø!UÀ¢'Þ“o8ýw@vi®œÀäŒ@Ž BèÝ£ô5-]¶{̣̾>|xeÏž.œŒ;x$jGÂýÃC{ƒ<ß>çæÀìZ™3àü„ÞOGGǾ}ûÆÆÆ’müôgï»ã¶=É4˜ îlãÌh(eRÔÖÉ“'>~çwž>}š´ÁØ„ôàý] íê.ã‚ ÀÚºk¡eøh9`náBßu ·œql#]{¦‡vtïÞ Ë–WÈTM‰çÈ^…8rñ–F ìÉmi3ã^x¡-Ìd#k€Ñ»„ý²b¨u°¼fD×_ÎCo\P)>̃haÚÌÛkášdÓꉾ¶* PÔS–Í0Œ#ÐʨXäÂ_x´²­®mᎠiv?Êãâò)6Kòô”¦nÙJ¹Öq #À0Œ#À0°üœB9|àê ,N,S¯öÄíÑIch€zå§ã¤§ÄݺÊçÏ-8@›3Œ#¾w2€ÆE¦CÀööšÎ€¬ ã²hÆ+0<1Ó=>¿‡6ÎÊÊ•ËÕ ºÍ+¬“½,–ÈzÎÉÍÅfÂ0éh£½4"€à²ºÁž©” <ÑYrSúy½É=n° aÀ)Úê ¶°ÇKêÉPªÍíe‡xÐÑ«(±oVÈY¨C1ôò§¾`ƒU•<'Uùt=ÊéÚS1Œ#À0Œ@+"ЮÞÔ%í¦©TܰT £ûÅ4,K³:¶—°—<è-Ï«¿8Ë~x:t‡¾¼Œæ•d¦`#†¢ñÊD JU"žç4?²=DÚA´‘'Zˆ Ù,+ïˆÒ·Œs¹wkJ$jÈ™Œ@;#ЮޞŒÚM è‡ö™ 1ƒö°0s†ëÁ°9gx_ÆÆ‰ë ØÒ‘ˆÈ?ž£Ü’\¹¤rVI°Ïk|Î1{É©ó}Öê·½ø8y^1K ?ðC h'ÐRŽ-z†¤-ñH6ã˜CSYY„qfºŸ ž ”¯V§éë[ ‹e»29<3´¶!l…ð@-}ËÀÓ½£ãô% Q·Š)vŒš5e¨Ã¤Œ#`!€Þžž?Ð^èà`91 ŒÇP›áôõ. cN7nRtšâ~áéB&6àëM ×'øtíƒñ€À¬0¼Ô«b{ðTtùÃS†ëÉRÝ‘G©-€¯kƒ@wšÉ#?z'&„é WBõã×F“x)R•±±!¡¾Xâ)9‡pÚ;‘öKÁ(lßx{ìŬ· <I"ì:H…­àã\»„N&'0Œ@ Ú6¶'± æJ¸ž1šW<-ú~pJž¡>!^Ú]´ 9h ¦m9pàˆ*åã•¡/'4Em·5 Æêvï†ÉÑ2 N“Vñ]Ù‰%L€+s–t PN¾ÝzvníU±>ˆÖªaQ>PД+ã…ö|jDô憪ʒÔÍåhÖ¬z톚bV½Õ&lm}ˆéO“8½ˆ¶n…M`|7zVžHš±²€Óéïsö¨'"Å-O¹iˆÝíÀá-±fÃkl YEF ñhoo¯ñêƒ5ª& ‹=0i^(Ðq±RÙ9'¨Ë3ðÈaruÂ,iè\§Y;ËK˃ˆ¬œŽ3?«»Ù£|È-.“çS»¹á¼ìi1£æô` Dût»_õk×t÷èi]¡ÀÉ•êF´5 dF§‡+‚$Õ¬Ræ]dçªåïÅ­@âïy­!vRú–»[0†Ò¸Fi6n§0Œ@ "Þ<óSaF I&MË!w²+½!<5éZågIËiÐÎ÷NÆòº{0Ö´çáÈEØ’çS;¹ÈZ'Å¡¦<Ä9¦ÂõxÌÊ0b,èî©ñPñô¨·§£*mU÷tüôpE$¢I[K;«m¦“8Ä6Jó³8d/È)}Ë`|@Œ¦'RÌÁ=ԜƤF€c{.TfW©›Ë)­l¤àçÀÛ%å,iùÒ™?¶HSfÐ¥Z:ÚKϧeÿþ´À¡¥Ñ>5ˆ©,n, :]P“|bé+Q"Z¶"òS–9•FÓeš®÷ÒþÅÈÖä[T_ÜÃ8šYM×G°è+|XÚ¦`ôöà¥Ç 0m„€œì™³šr–4`$Cf£¢§[¬¦FGõÚ=éù¤„;°Ô+§e¥à…¸<¡'È ˆ8†Slᶆüp±‡>¥dfŠéá‰H¯ SÖÜLrq u—XÀš‹!çgè#ù–‘Þ¡œˆK1Ä'û¤÷Z€Å2ÆG@ÍÉEÙçküÚb sB';Ó¬h5b-í,iï®>½6­p­×À>ª }j¸M ÃbHõäªÎbœ2n¾WÑÙ‹UPUÙï¬f XôR3 ÔÛýy.5= €-mpÂÙ‰îâz ®:«Ç0Œ#Ð ´­·ø«é‹8^ß³r|ƒT«Á0Œ#À0Œ@EtBh«Ígãâ<°Ñý‡Wöp'YEM©®…a°y]å³pF Yà{§YkŽõfJ!@‹Êxz8n¾1èÞÝ/FÄÔìKu ?1ã¥äv[…ý=sC38Œ ƒræY\c, j3µ|ÕX,¢²®ílƒ^³Ê-Uå-ŸŸÏ¼Â–‡‰ d¢ä6'—eÆF {rUÍࢵá2eI[©ââdûì´ ËÖ½¿fw/QtÝ‚=YÉÿs6iµöµ·Û¡ÒÜÏ´±[kÇ0Œ#À0õC@y{8W¡í6ÉUëÊÂâžsáQ‰[©BD×|—›x¨íU!Ì—´—(l\º0YZÞݤÕÚcÔºŒÝ¡2º’nýÚKfF€`†E‚T‘Ø^›ù|î~ðVME·Rd¢ VÁålí1Ê[ŽV€,eF€` îÉiîVªH¸0sxÿ•»ÁþhYïV’róªÈ–¬~Î.Œl{^zÙÆhÍɹ¼Ž³ß&ô©'®¶¥œµx°Œ“ØL(K£éÈÝŽt.JM¦k§0Œ#а·WOÎVªHØ×»4Œ¯Nìý æ`„ ¼[I‚Û6×;ÚM/\é8œƒµÿÔ†‘Ö¥¤_”;¥p +7΄vNïë[ŒøØàÂVé1|Œ³æ¿T:5*¦Bï ·ZSÇ´8ŒÍ/¿#8­f~°1'F€`j@Ûîœ˳[¡9?šˆ/3s |UöŒY?`VSr¢Ä¥à#…lÎý‘|‡ã~MUkßp^bo¯€@l¸¬ÎüìÔÈÈÈTEð o´©àÊä0Î ?ºx¡¦ª@V–`üàØ^~X2§FB gloïèxÌ‚‰×‹cƒ‚fÏ£Õ —S0ù¢±‰ë£”éóª›4è#ÅÄÝ»¡ëTÆpNT£W9LU‰v‚umgûØFå’‘ÞÁ*+ìÝ ‹˜‰Zªiš×ÞI9´AÀH ½0=àH&UùÜ»#Zò#À0m†{{mVámdnÿàÈÔ,¹{àú5sºY¡}VJô™7ür<}=ÝkcôQ« ÍL †åBC€ÄBè1{íµ``šJâhÕ80ãuXtäÚ"øš`F \ØÛK¼ºšvWz+[ˆ²l‚ïá †‘UpÊ7Ò ±áÛ ¾^#È47~Ae8ÉzQ!<_<¦¢w^{$UpBzñG‚cr|EDn<ÎaF€H‡{{épbªfD&DÃà½yÙ‹ëŽÒ,Ë":I‡ñkÈåxädpÚ,ËÒÒÄñö‚O< æ§å‰¾ÒŒ˜‚`F 6°·WœYJ]€U°{GF^\XÀ:|Á쌪5ør<¸8ôɆCW&'¡_;û‚>‰ö†ËK Ô}Œ£ãaÍ®C¶’Ü=`èÁrO iD^ÅÜÂnJ²½’ÐÞ߯ôŒ¨ØžÌÌ:¸Zq #À0Œ@i kkkÐï¢ a>ÝÇ>ö±±±±ä¢Ÿþì}wÜf®N’Lι­€ÀÉ“'ã8ÛÍÞjµ›F㻺ºZó{§Ñ0`}¦D`zz:ù½9>>îÜéÓ§É<îÉmÊjf¥F€`F€H‰@›{{ƪ_iø’«‚E×ócmðNYÂϧ¬TšN½²Ø21#À0Œ#À4-mìí¡cTµ}¥€9îr¦¦qÎõ.-W±‰hªÍ¬ª¨JÛ°n·åxÚÍÞ¶iÈl(#À´á, ±gàku󫺯”b®çôHíßêP³}Œ#À0Œ#PO"srÁá«§.µ”-÷•ÚëL¤D0,7JËGÈY“R­ ±ob¢WëR†„’8 s*"¿OôŽŽâ4LœºI¢ÍÉĈ˜šÂO…9MS_sHÃÙCbÄi‹šö›7­î¬8#POøÞ©'ú,›¨¡·G½6rø÷•Â3Ð[Ú1‰˜Úè 1Mˆ ¬HľÚ#°¸Çün+×o.ó0½DÅÇ*|F—ö®ƒ‡kmŒÏï÷ÒåŒd‹=Ð1,WÍ©0Vˆ®Û䨨éK„óCƒa‘É(ø†QC¼âe³<¯°Ùkõ¯ <'·.°³PF ö´ñ¸½ôûJÁÞ}j3\¨j 7X…Õà˜²™×r ØwUþ"k½[T Y¸Ï+¸y$5¡½ðæT àp#À0Œ#Ðê˜ñ;ôöÚ(ž§«6Ÿ}¥ 768Ìý´p«½»¨ÕšbŠØm.ž ¢…¼9• _3Œ#À0Œ€€Œ á ½¶í•³¯xo £ã²ter¿ÚhKîþ´ß¿ l) F»Ã=«üIEŒJ&ãÍ©ìÆÌ׌#À0Œ#‹8|mëíáR°uûâ9¾…°؉2pO'•ˆÃò(d×`·…cX m!%øtª|ÔµÃÜ9ðXœ˜–ƒú’е”HFž$ª²ÔnN%û”#:x ‰m ­•a­‰h]¦±µm;ÆaÝTÏ=µ´l«)" çë# ©i¼†xX:ôi°MC“ “³F€hÔ, ôµ½QÑ)söó&‚k¨÷LÝñRj fè9î° ‚IÂIdNžt\µv L$¡ž‡lž·]Íçi°§Bòd/y…Óµ³°†ˆô"l ‘èÈT¢,¬j\&[ð ƒëbij¬+‹cF qhãØ^ãV kÆ䉬$†ÆÆ†ÄÌá4›Àä)šy1Œ#ÀÔËco¯ŽµÀ¢kŒöùÑ¡z5„R É®ÆIš­»oÍþG‡c˜`t¥‰;&…¢IÊxØ¢»wƒ…V—­tövvÁÄ$Ãݳ„9²íiã¼ÂèüHÏò²"ðt7ûú´µŒÖØšå!q`ŠfÄ£­šÆ[;r)%Yë²æ<ª%áÌyŒ#À49ôÖco¯É«‘ÕOÀü8®@(9S­kˆ×sØÍ™Ž¬8(‹ŒSwt9p+ÂýòLJ®†Z xL‹5é§„2ÁZ?Ê• 9ȱ§ÚƒE§•q¡Räì aº{©YÝ/€;cX‡åi„€Ç³GáôBíÓ6®" XÕz·m[åê•VíxÑŽÃéŒ#À´ðœ&{ØÛk©zec’èîé› =£˜å“È…£á ›´×˜ôªæEÛKɉŒ#À´ôÖ« ÅbÑ2îŽ;îK¶øÓŸ½ïŽÛœ•ê’Ëpn“#pòäɃÞpà (Z[+®ÁÿEø-¾¸ºzæôy¬:u È6m:ᑇw]»kË–-wÝ=yó‡oL6}vvvpp0™&9wÓ¦MÉœËàäÜ4E‡á¬®®ò½ÃmhF¦§§“ß›ãããûöíƒ75¼²ÁÀ¶¥¡WmhÆZfF l°O¿¯§»ìr\€`&F€Â{j/&¶ƒUgF  èÁìyÀLsÊtlÎ`F 5Wb{ô\·†al#À08›—p“`6D€\;røp:ÚËä` ¸^Ÿ#ýÒüf¿pxî0ŒYÖßÞf€«‚`F€`JÐ÷ä†P ýëàœ´ý“c´<,Í¿S!m`|~Ì4TKóé—c¾…˜ˆ¯ ‡¡·¬ÚfàLß ó›mãúxûk˜ƒÍk(E1­ƒß;­S—l #à  {n•·GËq™ÎpŠ´Aºt´‘U_àÙ'ì‡5ÚúűEØS@®Þ†[ÀfR ‡ÅP.ëo—•Û LuF‰ÏLM¿¯ížØvUÎ3Œ#ÀTêÃ¥ßpNn»÷çB¤n@È]TaÅÙ<à/ƒaeÛ ä¡,ó`F€`C@÷ä¶í ,N…./©Õp''W'ø—懶‚Aa÷"vzËæ´Í@¼ÆœÃ0Œ#À0mŠ9|íìíEWíï› Åþ‡—z“b{Þ¥ù±Swj@†Ggŵ(CoÙ¤Ú´m²ÙŒ#À0Œ#à›´í,`…¥³RÐèíUs]újG{i”ɧzÀá[úÁ[ÖG˜S3F€`F€hShÐßα½Jë¾’¥ù+)[©Þ\ž`F€`ÚZS ÅØžvýÚÀðÊM¬diþJÊV®9s`F€`6B@;xmÛ“›¹²+év­¤lf…¹ #À0Œ#À´)äðqOn›V?›Í0Œ#À0-Œøydœ(oÎèha³Ù4F€`F€`ÚíðaO®ħSÛ¶ôÿgïm ãªÎ{ï£/Û`¾„pº(MdÆ&ªZ'àt” Xå£3ÂëÊ}\%š5 ´E‚\½+)rjq“uÕ‰4Íê Ö*ĵ–kë^,ÍMˆ1Iã!oôí­®.hŒn—ËzßH2NX¶¤yŸgïsΜ™ó1g¤‘tf濤3ûãÙÏþ‘ô÷~ö>@@@Š•€”vi‘\]öë˜1.(5X·Wjwã(-%«ö¢íúZŲ†þÄZßuz6‹ê9æÆs579.‡i6å²!ª€€xŽ@ɪ=º¾8Å®“q:1­m­õ?›åd‡<–Ãs8   Pxôy-V{%¾—ϸ ¬ùô^á}Šà1€€€@HÍ핸æ÷Š#˜íí eeíQzÇÑU™Ä[N¦¬T†l£éªm©¥^E Њ8©V!-3CqšzÓm5ôO¨¹üf2•Šd›—fÜÐÐeW¨   à)¥ÉUoD¢¿'hiR£¨±±ºÁdr HÊÏ?Ô"B½ÉQ¥‡#½$|ô,®ÁêÐßY?*êÄûÆBúz»XgBV’£áH¨¬M\Òu¬³WSZ§(²ÙTwƒÊPÄâsëô§V#–•…´:fSJp@¸Í.ŠÁÆb0žÖТCd€€xž@)«=U±`K-™Ót_bbLÑÄS(+‰‘¡X¸Û¸¶Žë„›Yö)ŠˆS-‘}ƒ¢^°9¬hùzlB½Ó*¤µ’mµ¯LŒúºDwÜ.½ºx§®D”:Ž•œ¬c6Eùê䞦©ŽÙxzC‹‘   ày¥¬ötm$æé,RXNÛ±x²«bÑ*§,ÖSö)¤›¢iÊ"Fï Ø÷Ï%©†ÎõP    àM¥¬öïˆos½¢Æ8Õz¾¦–@F×–ÑYŽkó|ކE¡¶+D̪³ƒ­,Ø\¯ƒ¹·ì½h5̦âã±@ŸÊÙQꘛºï5A@@¼AjÏî>xQ¶Ž·2ÐSRFëµ±·ëŒ…ÄR9^Ñç~0P?Þ&ZQÙ®•Ùà€XH©Mi±ŠäºK°K[Ûx½:·gi<Í;ëÈð2²ÅÅERº‹ÛÛ»woWW—³ÓO=s`ï×:œë Ô†­˜ë©‹ÞÓõæææž{î¹ûî»>$ ‹ ôÿ"}]|ÿìÙù ó"-œ?žª]~ù¥±WvÏ®{6mÚ´ÿ[ý?¸Ç…š=<<ÜÖÖæ\¥   ’Ààà`ss³ÞÞÞýû÷ës{¬P   Oj¯ào!   *ÊP´2èQw6›€W¦?X(e˜Û+å»±ƒ€€?¨½â¿Ç!€€€@)€Ú+å»±ƒ€€?¨½â¿Ç!€€€@)€Ú+å»±ƒ€€?ÒV{ôœc-5ô'Vënz-+ã~éÔZñ]Q¨hY­£5$PÂj”Uh¬/NCPŠ· ùuÖÒt˜]«€Öo’Ô #ÙÄw$È;’U{‰þžHxT×X¾ŽA:9¶—¿E""Pªj/12 7rìkj ŒMd†SåäOF”X§¿¬¬¡ÈŒRø•“6#hœÆ³lå𩱚äð®LÜ¥"½Æ÷æP   :RU{ PçÏü ÄÆã™Yâ=~1VDøu@*ÄXg2È`šl³Yògn¥ÂQ$)åL½FÛýC-2Ê<ªôPÑÞÎúQuV]0µA€€€˜ ”°Ú³vÐŒLäúÅB;_GwØÂM+=;µnÏZº%&ÆäT"éÁP„;ð×"!Ç•…ÙúD9€€€@I(UµÇqÛȰq™Çvë7ç¼U‚uÙʤ°:•Gz$ y'GrPi³Ÿ\/`@@@ À ”ªÚ“r‘G¥Èi§Ò×%´4¦M×E‡#Ö7864"žØ’Zÿ禕µ-‹\ßæz%ÂÜôD’/Þ§®.´h…,0(Yµ'ã)!uù\HÕ‚"… (VÂ*²`sXߥAYúqžf+óÓj:ŒuÓÊ„ß6#8À+ ‹ûh#‡HÔa7ÖbË    ™*33Jê=í£HXŒØ˜¯•ò8\×u2³i–Vz?Tϸ˜òõC‡n; ¾­]µðY    "PÂs{ø€€€€@ €Ú+›Œ!‚€€”0ÒŽä.ñÆ›C±K4„f    °Ò0··Ò„a@@@Ö’æöÖ’~áö]!R2¹¸¸˜¼lñÒ……º¢/|ðÁÜÜ\Ꭰžƒ€€@ñ€Ú+¾{º#*//¿ãö?¸á†6mÚ$û»úê«kkk§~ëjt>@@@\€Ús Ó üÎïüNCCÃÕÕ2û’K.¹ôÒK @@@Àk ö¼vG ÊÛ~çÉ>ÉýðÃŒ‘ܼ’!P²»4´³)Äúj+ßý ¢ËÓ±hzßÒ5‡ ùò’}Yb7ɽëÎ;:;:¾ùŸŸèïûÎß|·ÿè‘Ãÿòÿ¼¾aÆ|y;   y!PÊs{¾øI>„ŒD¿=š” å…ªƒ:"ct¼¬§nÐîø³h{(]9oHKöÔÉg×áà¶E"¹P  Þ#PÊjO»¾ÍõÊÐDB ’òóD Ôù=ᇃˆä:ÀaŸÁ… IDATA€€xŠ@ÉFr w!: w‹©6š÷jho§P«íjAW=ÔKÅZÌ—kª±XªÆ¹©ÚjS†éÆ #ýí"²+ÍQN(¢Ä:ýšu“éN Q58LýêÕõ­ sìVʾöÖ0 éG*®mv/5DrMw   àQ¥¬öXTq )£©(nl¬n0ÉqÔh»¿³~4É)Þ7bUlG†Y*Ñá±€24’ ËÄÈBsqÑ^­¶ ÂRó¡–¸h>ªôØ.Ò‹uŽ7‹:áXgoT¡S:Fà …˜“"ÆláƒøéNòugBS»H¨¬M\jÖ¸*Y‰ŠÉ‹”ýôP±mGF÷Dשt×]wíØ±ãλ›?ûÙ뮿>£Þ‚€€¬9RV{,ª8ÅëzR›-M" ›˜SÂÍAqƒ|ÝáØx\Qüu1 ù²ØkénrÅ7¡¢ˆ„2qs]MFDcËèë}T„ic²ô+hNŠë>¹-hùFkêäMÚ'ûŽŒîÛS$÷ѯþ§?¸ýö›nÚöÉOþÎæÍ7\sÍÇ/»¬úܹsöÝ @@@` ”²ÚÓpûšZözÌxS¨&K<{MAºkbáÉdrPiSC¦ÜŠöZhiuv€˜??Ù¥™K!iûæâ¥çÐ#WΟ??7wþܹ¹_ýú×gÏþêÌ™÷gfÎ|ðÁìÒ¢%€€€À €Ú±Ø˜icoÝPö´®'"çù„Ükë!±çSèzl¸w\Ì쩉$©*ž£Íí¸îîÚÊZñqud¸¹¢. 4>ÐgÛxF›íR>ƒÖ>äð‰ v©N´×«s{åO{Æà²;ÊÁ'TXUe´‹ôŒÞ'ÅüöîÝÛÕÕåìÅSÏØûµç:(-2sssÏ=÷Ü}÷ÝG’……EýüŒ÷Ïž¿0/’ ïÎ]~ù¥±WvÏ®{èÝýßêøÁ=Î(†‡‡ÛÚÚœë @@@@lnnv ÑÛÛ»ÿ~]à•òÜž%€€€@‘€Ú+’‰a€€€€€%¨=K,È"!µW$7ÃKP{–X    EBj¯Hn$†   – ö,± @@@Š„Ô^‘ÜH @@@, ”ºÚã#0ÒN•0R¢Â7G^X’]Ræê÷¸$7Ñ@@@ p”¶Ú£pÇÂá±åžg[8·ž‚€€”’V{‰‘!¥¥««EI”ÜÇ€A@@Jƒ@)«=!öš|¾¦t¹—èo ƒåÊ(ˆ;!>ü>ìÕb­–I-ýj®!¬™Ó#Ʀ у±ÇÒøèa”   «B „Õž*ö%MîEÛýõ£IJƒÊP„ﯣ;ŽÊÛŽ„»;|Šà:Éäh8¢‚cãÍ2/ÖÙ+ŽóµÄeÕ å}-cT-Í=®ÊG'   ¥A tÕž.ö¤ÜÓäÙÄX ¯‹e™PyòClÖä^txL-%‘&æãBBʤµ¤úÊØ 9ê#&Å¡V%11¦Ä:ýjÓØx\¡s)›¸e(YµííŒi²«ÌßSôé; žÁ®>ÞÊÁ›:(ôKhÎ.¤ˆÀx_À¢cVX4IL÷!€€€ÀÊ(UµGÙ@ŸaeÙE¢MÈ=ßæúT¶GŸ·ÁÞÞÞ¡zÅU”øx,Pç§ ž½³¿;Ô, ôr=²¯˜r¬z´7ŠÈ@‰ª={r–Ne%t˽à­Ä q¤µMiQ#¹T‡å^$R߬ÎÅÑdŸ"â±mãõNs{¾Ž“£õjàVnõÄÕ¦Üïð°é1‡›ˆª    `K Ò¶¤¨ hEF •tYR™÷_ ¨£ïèÐ0p¹þ†õ¥½¥ZF“׺9a̲©EE}08Õ"P¢s{«…ý€€€€À€Ú[ã€îA@@@`E @í­(^5&µ·Æ7݃€€€ÀŠ€Ú[Q¼0   kLjooº%µ·¢xa@@@Ö˜ÔÞßt   +J ÄÕwËGZpjèO¬(éœGÛ3}2å°ûžó;碀€€ÀJ(aµÇRÉ?ÞͧärTFè³ÂJ|,ÇIyroa9oA@@V@‰žœ¦(‰þ¶ÎúÑä€~€š¯²iÕ>vè@@@`Õ”êÜ^bd(nÎ8+WR7DwÛÕÙ>BªQ_ÊÔ«haÔ¬ª¡&Õ¨hÒ¯æ¦Â±šé†þ =¶›ÅZY™6FQ@@@ ˜”ªÚ£{¨ó[ÜÉh»Ÿçü8ÅûÆBº ‹uö(ƒ”9Ž„ÊÚÄ%]Ç:{µðo– Áa“Û÷h+cãÍévR½*C ÷²,­ µÄe·ŠÞ«ƒ €€V{±ñ¸ù~&&ÆmÎÏ×ÑÖ+úE¤7ØV-M|)®Ç&ÔÍÙ*¨“{!ƒ† ôu‰ÙEÝõ®åqçf÷œr¬¬)±N¿˜R E,‡ëde   EA TÕž¯©%^µmŸ )bÆ0ÞXÍNXNSrÏ©%Š«éúXc¥ªöž;£˜lj9[¢¿ŸÄŸos½¢©ÀDOÄfm_®w->“c^/hߘz×bÃܹ}EW%b,àºb…J   P¼JVíQüt@¬ÌÓ6O´)MV è™~Zô–§ ±`WŸ"bªmãõNs{Á±.+*-V‘\-2ëêù€<Ù-[Ä>âý1ÆÈ@@@À@É>E0áçÕudÒ±È$a¨oßµ¼¶Ì$Ãz¾Ù¨MÞÍ1 ºÔ‘á›±LVñiŽÙX3w›9Z¼(r%<·WäwÃ&µ‡Ï€€€3¨½b¾»€€€@íá3   ÅLj¯˜ï.Æ   P{ø €€€€@1€Ú+滋±€€€Ô>    PÌ ]íEÛËú†;D'Òfä¤Ý>Sýb¾¹€€€(Ew–NÀ§@@@ <:·‹Åfggq§@@@@–IÀ£jorròرcÓÓÓ¹OÕŠ‹þö2‘Òýd•JËÊÚ£lŸƒ¿2É÷ܰ½òäÛÜ]@ ð ª=âÓØØxôèÑÓ§O/ƒU¬s¼9Ii4ëìÊN&Òw!e4™²ìóµÄ¹VrTéQׯÆêeñ2zGSX{ÞU{›6mÚ¹sçáÇãñøR9úºHÏ)J°9¬ŒMh›9†ÚXß±Ò£”˜Sb~1·ŠÄÆe_–&ßR;E;ðïª=‚TSS³{÷9s&ÌbŠÐT´¦i>5©0½Á€€€¬)O«½™™™C‡µ¶¶VWWçR eðä¨RWòù6×+-€›¿N` @@@¼AÀ»jojjêÈ‘#»víòûýެ´8¬ÅV ÛvÁxË_ìÝ Ë>E åbc†-1€€€(ï>oïøñã´n‚¹Ždƒ´™"­†o )WäQ‘¼ býZ¿0<—Ïôˆ>CCÇÎQ   ž'àQµW[[»uëÖ7z Oð¨Ú žÆç@@@@ @xwÝ^„›    àiP{ž¾=p@@@–Ijo™Ñ@@@íb8ÁæpdXj¹ÄÈÒÒÄ1Y5¥B«=àëo–áÖXJ&R}ª«F`Eø5ÚîjÑØä¨Â)D\OQ^NÁTez“ÍI2¥5÷…äÊ<ËÌl–P   ¹ð®ÚÛ´iÓÎ;>dzŽ(ØÕ'ï±ë ðô¤NîѤž}]BŸ‘JTÆ& A`c;%11&æù8…"±ñ¸â¯ DT¥–V3ë6n–šÐ×Ñfc¾)3«)T\xWíÑ(jjjvïÞ}ðàÁ3gÎd”¯©…ïEE×8ÑF¡Ò"¦ãâ},6¬ŠyÆšh7s$•6=²kÕy    à!žV{333‡jmm­®®ÎÆŒfÌê;CéQ\E‰Çä¦ Šðæ¸OWñm®WRÑ_Ý’|¤í§­<¦´XsODLéYfZµF€€€,™€wÕÞÔÔÔ‘#GvíÚå÷»Û"KÑÜ@8#Š«P¦"‚±mãõ9ÏíâjkuŸ†¶ãƒÖà‰Ž(,B½êþ‡»À¦ÆB"(ÌkåB?ËL#(œ TæÜbµ?~œÖíQ0×±CÚ*¡niÒm@«¬çsðµ#Í„±‰~m¾m2[i{†ÑoIËÐ ½Xš²Ë45Lso@@@@ 7U{µµµ[·nݸqcn£AmtU{@ÎaWÜYm3•×Þ]·‡»    °|P{Ëg    à]P{Þ½7ð @@@–F@ãRs¨½¥1D+ð4y<¹µçéûç@@@@`9HóAí- Ú‚€€€€G Íž\ít qJEö#-.M¡‹¸Ü¡"@3iÄbºÁ €€€xzÝ^,›uy“êë•¡Ãì\t8[t«Ûãóm‘áÌ)A—ý¡€€€xž€œâòÉÉÉcÇŽMOO»!Y×Õ]ßÙ«I·DÏX_Ws–†¾¦Ƚ,ŒP    P¨ä¬yï]µGÎ566=zôôéÓ.0›ÃÚL]bdHii[$(Yrn†ïÝ]›6mÚ¹sçáÇãñxÖûìê“‹÷hÉ^}·\¥—µQ ÎŸµ*€€€€@að®Ú#®555»wï>xðà™3g²`¦È,-Þ‹Š(n0K].¦)ÀXýfLº@…*   M ÒËÞÏÌÌ:t¨µµµºº:›Ÿ¾Žîú²P'm»u!á¢íþÎúѤY˜­_”ƒ€€€€w xzÝÞÔÔÔ‘#GvíÚå÷» ¸R47NâÒóöB%ÖÙ&¨£ç®ˆÔSO¤´žž'ïy÷à Ï@@@r%@¢‡šxwnïøñã´n‚¹Ž ¤fèèézZe-ÿd²CËH&õbƒMªi™ïØ- A@@@ @xTíÕÖÖnݺuãÆ‚n‚€€€€çÈç°xTíσC    P€<½'·yÂeð¨=oÝx   ù%µ—_ž°   Þ"µç­ûo@@@@ ¿ öòËÖ@@@@À[ ö¼u?à €€€ä—@«½h»ñø í}/+kf¢ƒ5ÊÔÚéÍÒꉶZjgpäùJXcSSÁ8½ `@@@ “@«½àÀh}g¯Ôu‰þž±¾ÁyLn 0Ö“.Õ¢½±ÌÑ[¿§³véa„”ȶ߬­­F®H%©çjQ}&§Çã«á ú( U{±XlvvÖ B:Wê:Rsõ†Srëë•¡‘DÊBt8‡ÝXLÕ Äû‘áÌIÂÜŒ¬tíD[gýèIUå*JpÀpðJwû   ž'àQµ799yìØ±éééì}ƒ-Cm !eÔ(s꺺õY?Eó~]ÍÙ­eÔð5µèrÏ-5D‰S¹"Ó8ý¦_‹‹¨l¥jz›TÐ5ÃŒ´Ó¯F•E52Š(1šmL›nLŒ ÅÂÍA«‘e·)ZYUko§È0(Ø6EÆ­ºD€€€€çxTí§ÆÆÆ£Gž>}:+3_Gw}LéëÊ<Áæ°6/G’Hii’1Þ¬æ¬+DÛý4…&¼ñ¾±Ôii1TÇ)µXg2ÈÁáp$TÖ&.é:¦F¡É¸ŠU´t¬s¼ÙP-8@ eÎè)Pç>k²MúæÆ&5²®6VGr7Ô«Häw5ä‚€€x›€wÕÞ¦M›vîÜyøðáx<Ë:´h{H ×w¶en©° òæxG„˜JLŒ)Ú©ËpŒljy5CôØÁp@]QHT ¨Â“¯Ç&hÚŽ‹I;J¡ˆ0M) êW½šy­¯ã$Ë2YÍ¥M›j)i¬NîÑ´"€€€@Að®Ú#œ555»wï>xðà™3glé’Ö£ í@WŸ¢m×ЫR–ïEE×2ÖikT+`=W¿yY“‚YûÂrÞçÑ' 3Íù6×KɘY@ï]Ú´¯F³… gŸh£EÈð>O«½™™™C‡µ¶¶VWWÛ Ô7âÒò= °f,.ãog¨s©Q\½â‹E•îy>±ª/}믿. MµÑ¾§3³…ñŒ-Ä™ulßÓ ¦Òé7­ªsiÓ¹Z|<&ÃĬzm=@€€€€— xWíMMM9rd×®]~¿\–fQÈ1-”ÊÖH¦Þ#-° ¶j‘Sí|ëzQO]\Ÿhãý¹c!lå5vrþb§â)-" Á%ï‡×[€Ù8I6iÇþ™/Ó5íÒà.O&GéE‚µ§Ð¸µéÔµT’äVÛx=æö,>€È P¶¸¸HÍuO)h·wïÞ®®.gߟzæÀÞ¯u8×YN)EoËËËo¿ýv æ.ÇÚæ‘ÀÜÜÜsÏ=wß}÷чdaaqþ_¤¯‹ïŸ=;a^¤…óçÏSµË/¿4öêÏîÙu-¾Üÿ­þ‡ÜãìÆððp[[›s”‚€€HƒƒƒÍÍNOéíí%9G”eýJo‚«­­ÝºuëÆ½é¼B!àQµ pX(!ø    àiÞ]·çilp@@@ „Ô^Ü(¸    K"µ·$lh   Bj¯@nÜ%€Ú[640>_jÏÃ7 ®€€€ÀR 肯ÐÕ^´]=€‚¿™Ž[*žìíèYÑqC®²tÍ¡‚]Ã\óÙ—Uè&W·P@@@À ]íÄ@_œwH&ùd³UÓ{|fZ˜ºìðYßÇh{(M&OÚU°næ:—´¤¦ðøè´•êÆµ?¨   à9rzÏ£j/‹ÍÎÎæÆÌ·¹^›°jËÍX>jêløÍ‡yØlHðyTíMNN;vlzz:Û åÑáH¸[̤ñ¼W{;…ZÅTŸtÕC½T¬ÍfȨç¦j«uL&—„‘~5¤,&Ü('Qb~mþÍäCº“ÂBT S¿zu=@+ÃÂZ¸:e_Œ$}"¬V-MsÏ4d€€€/ª=ÞØØxôèÑÓ§OgƒÏ¢ŠSHj•ccuƒÉ$½¶û;ë)¢ª†zY>›Ã‘aÖJtx,  ð|`bdH¡¹¸h¯V›³TòµÈHñ¨Òc»H/Ö9ÞÌ]Œ†c½Q%8@W"Ä,"¬>?u'ùº³G!©]$TÖ&.5k\•,ŠDÅäEʾôRX£dÛQº{Zu|(ÞU{›6mÚ¹sçáÇãñ¸ãÐ×íÕõ¤6+ZšÄ‚ºÄĘn–"Ð×ÑŽ“1]@„|Iìµt·¹Çb›PQ$”ÚòÀÍu5-S ¯KôABÒM¶ôkkNŠku [ÐòÖÔÉ=š2´Oö9¹go%   E@À»jàÖÔÔìÞ½ûàÁƒgΜÉÎÚ×Ô°×cÆöT“%‹½¦ ]Ç5±§ðއä Òfˆ„ò^ 5¥æ³»“ÏÙ¥™Kv"ÞȧaØ(zžV{333‡jmm­®®Î~'H±ÅL#x놶¥Õp=9Ï'ä^[‰=ŸB×cýãbfOM$ùHUñôŸhnÀÍî×°öÁ][Y+>®ŽŒÇhßpùÙÛF €€€@ð®Ú›šš:räÈ®]»ü~ç­­Z¤•Ø™Dà'³ˆ…}\Ac¹S˽ˆ~”´Ý´ØOìøà抺0Ðø@?žmã}m¶Kù krøÄ»T'ÚÆëÕ¹=ŠòЧ=sfÙåં€€²ÅÅEBxJ´Þ IDATº³,Ü»woWW—³ûO=s`ï×:œë,§”¢·ååå·ß~;s—cmóH`nnî¹çž»ï¾ûèC²°°¸@ÿ/Ò×Å÷Ïž¿0/ÒÂùóç©Úå—_{õg÷캇_îÿVÿÃîqvcxx¸­­Í¹JA@@$ÁÁÁææf½½½ù—yáÂY§Ò¡êÕÖÖnݺuãÆkèº" àQµ`3B|º0µ'àÝu{kÏ€€€€@á€Ú+ü{ˆ€€€€€=¨={6(Â'µWø÷#{P{ölP   …Oj¯ðï!F   ö ]íig_ˆÃ2ÒΕÈ3~QÖ ¾ &òÂXÜéÚ²=\”€€€€Àš(tµG}q:Ü!™äÒìõ}›4Ÿ«æÌ_³œLª®9W·-5KIÛª(üð¨Ú‹Åb³³³¹ Õ·¹^›àÙ;$•€GÕÞäää±cǦ§§s¸QÑáH¸»ÃG-ŒsiúµÕ‡w95ôOd눫¦fucš-Œ, úÛ…U0¦œPD‰uúe•ÌÙúE9€€€,‹€GÕ©±±ñèÑ£§OŸÎ6>!¤(…”ÑÜ®Ñvgý(•¡ˆE7še–y¾Žîpd8*kiÂ’, µÈ8ò¨Ò#V*$ìÆ›Ùèh8ÖÙU‚t%ÃÍä^´Wír¹Ña w‘   fÞU{›6mÚ¹sçáÇãñ¸ÙoC޾n¯®Çbû…}ÓÄÄX ¯+ÈXÊYTÔ×í lÖä^txL4$ rÒŽµf$6.ýÔŒR}sdÙ_ˆ„Ì›D,:G€€€䃀wÕ®¦¦f÷îÝÿU|›ë•±‰|M0ÆÇc:õœà5ZþaÁ"€€€ÀŠð躽ÉÉÉcÇŽMOOgŠ…›-äqL¿N|Û£”Š(±N¿y5Dƒµ©9Ñ0ªF‰)S¯bÁ¦üŒGÂÝ>ʰôÁjfN³ÛÐ?‘9Þ`s8ÖÙ–ŠN;¸-½NóÙÉÏÌžð@@@ 8 ¤­ÛóT$·±±ñèÑ£§OŸÎ^ŸúÊRÔW/OŠ4 $GÊ¿òÄ`´Ý¯r(V—I±ÎeŒ†#¡²6qI×±Î^S¸XGJxMÍ4fõ‰*¤ºT†"™-ÈÏxË›jÎìöP‹Œ *=ª(Ô|Ž÷)F¡˜iïA@@J‚€:·çÁ±nÚ´iç·ŽÇãNîÅÆ‹ MýuHJÇ¥ÙLLŒ)Ú¡¯£;¬ ô Šy:šcS-M|)®Í±Z}Ý^]Åö ûP×¾.1=É=[Täµ~b9 iÿ»­«Ìˆæ´æsÚ@,ì" @@@ ¨»4ôY=ý ƒ¯©©Ù½{÷ÁƒÏœ9cí¯©%6ͳÙTfÕ4¨´eÙ6kÝØu.»ä^º7Û1Øg9Ô°:])f,ÓͱD(M$xäÀSs{žÒyÒ¹™™™C‡µ¶¶VWWÛÜ'ž¿¢kjl¢¿ŸÅÍãi’‹ÒÓDY¼/95Ç[+4Õ˜èï‰X®´q!#›—Êè²­i-¨k-0Ì=gX‹ökköRvSU„ÛZWÏŽ ˆM"¶‹Ý µ@@@Š‚€ºnOJ=O ¾©©©#GŽìÚµËïW÷¤Zç…måTS›ÒÄ3\ª äÌaE Ò‘h…žØF!v@¨»4‚º?­„Ëœ%³î:-W‹¨rsùŒ+, Ä¢@JmJKf$7¸y\.d¯G…ÝL·uÁ þ ¿@ý8Ï_ŠKˆ…‹È(D$ÈíJú_y2Ë#ƒ9~ü8­Û£`nvxa[Gf5RÉ5S~÷rD± éC“*×c£vײ‡4K)OÌ>pŸÒ¦Á ±ZGÆ@,,§eeºÍ›u]'õ¡gbÁ{R"@êNU{t婉½ÚÚÚ­[·nܸ±”nÆ    ù'PIÇ¥ñ+™”‚¯B[Зÿ®r±r©Žº    iô#q+IçÉ7ªàâ©` #Î;8   ° ê\žf#¹ bbs’IÚµµ· ¼h    kL€µ\YÙ¢æEZ$—2=µzoQ¡ûU$088¸Š½¡+(rrzORìÒ—ºÎÃÜ^‘ßï oCÍõø~Ï{~Á#ð"ÿþÿÃÙ-UÚi•Ls{έQ     P´­·êÜO÷é«÷ bp@@@@À†€)’«îÊ-ÄE{t>F(BGŦŸ‘èoðw*}ê™6òŸMÎôÔ¥u*ÜÓ:2¹™ Ôâ¹éw†‡ß)Pçá6€€¬V@©‘\é%?r¯ðöäctTlSS´·3¦(yb_@,üÚ›3déZ|:¼Ùç-Ûïò¦cð @@¼Fà§'~èìRƺ½ržÐóÞÜ^,›u‰^Z_¯ $R•£Ã‘p8óÀY—¶V®o«ŒMÜ\¹®VÚ²øÈ$Eâï ò’¾.,ÒÛ¤¾ã{¥}ìèùzœäßïìÕW«Æäää±cǦ§§ÝtX×Õ]ßÙËÄrJô÷Œõu5ë iNMMí² e4ô÷«¹ ýªþ2UcK ¢¥¨­UÔ2ËÊTs†jNÞ’ ´4É ÈL#™ïu›Ô»Öp;嬼æÌövrSÖr°cSÁÉcë2ú¨,,,ÎÏÏ/pZ×øµ@yœ©ÿãÁº=rA@@V—€ªöV·SW½566=zôôéÓ.jÓ¼YdXj¹ÄÈ¢‰*Ñ’—i4¡€¯4ëo–y1M&šªEÛýõ£\kPÒÖÞQæPK\ÚS„9ËjF—c~¡‡›“'e´Ùd„"ϲ§¤ ô¦l&ã}c!]äY’ˆÕ Šv¼XQsN·“îmfG–2«««ßÿ}ÚâS^^^QQ^YYQUUyñÅщƗ]viuõåWÕ\ùÛtþüù+.¿ÂÉÊ@@@V‹ïÉÕ©˜Õê7{?›6mÚ¹sçóÏ? …ü~¿sƒ`W_O/Þ‹“pêNúm¦š¥vJúT+¾® _rtµ‡¢«Ašr˨–˜ ô ŠZ¾Žîpg_Q¦‹øË:¥p3瘫©½ÈobÝžBJl8:d{f#MuH¨AßßÁÂÝ¢kÙ÷pœ.ÒŒÞh†$scázY;²3iŸ_[[û³Ÿýlz&Ëœ+I½}ìcöfP   °zÊå¶ŒÔW/ ¾šššÝ»w ÔñÄ O}ÙÛ0Wóm®×¢¼´PäR¦’г9ËjVýÿhúQ4É0"ê“ä#AÊû8D-0M}‡›Y¿úë±qšä£DKÍ]Þ ˜|sîÈlÄc9“/¿ø†pé­S&Ñ–“«ByXJÆœÌ8T¾í›/´RñMŸøf£CµÕ("&ß{gò½û¶½ñx õéìÜÊ3tî¥  î ÈX­.ðxn÷UŠ ®^æÞÜÊÕœšš:räÈ®]»²†qU(šwÄÂù”©ˆ…smãõs{Õ‚´Ò/Ä+îÚ”m‡op ®ÚãÞù`YÍ’ŠèƒõžÉˆ¶C„ ÿ¹Â˜èºŒWâÉ)DŽ'Kʆ«Ç$GëÕE‚r×FÖŽ,ýôNæ©—½¦ÜtoëMÊÇ^šÌÕ¯í½¤x?pµ{åGϧZòs5YXõkxjïMŠòƒ'Ÿ{WQ–=ê4†n@,»G7 €€€%)êèòÅjo^¼.$“ô¢\©ù,¯fæñãÇiÝÞ5×\ãØ)m®P÷>ˆÙ1=¶ªç‹()¥“'eMc‡j©ý'›”1¥~³\§Ùc›²7mÇÉŽƒ3Òkc_ìŸêl†Í‚fQ E ë£Kù“Ð:J³o¨¡=Ö/kGŽp׸ðÝ—F^Wn¼û¡ðÝÛ”×_|ù]ÕÖ¤¹ºí¿¦{h‘©E)ÆúÀ¸âÁ="ÌjŒ0ŠkùRƒž2çvÈòõa•©”¹¦ÌqFci$ÝNZˆÙà’1hk1¨Üœ¹®‘Ð)¯%N)©QÇRÛõŠAC5r5“!µ2£Ë°lälÐtvûvÆŽR€T{ Š"_åômÎð’¹kŽ‹vÐÚ/Z··æžü°fö‚7%ãƒãnkj¼®öºH²Œ¼Lš…E‹¼/¼@óvÏ~Aca™©ÞöMµfë÷Þ1†YIŽìy^š’AOC¨wÇ·E$Ty}_ä„¢\>,b£ï¸—r¾j^ h}SÒâ¹ußZ˜UN:Z·“¹Öƒzù12"†ÿÎO¿ñõ}Û]H%«8ø¶½?¡õÞ¦X4¹šÉÐ nYœE¯|ý‹Y3ý¦8A€€€[RÎ/+£ɼòùEåÃùÔë¢B¯5O@€걦n¤ž]ÇG³¦ØÖÔ«Òé\„q•×ößz5k2E æÊxbë¼6î:?M\q²ÌÌJÊØª¶qÇ4ù÷#mƒÅ_­Ö^•JrvJxâ6¥‘ko¼ûݲ³ëAˆ¤f?ø"Ï2’ìs6¡•n¹ŽÃÙié¦׊ +ƒY]uB§[Öû³êBÜ;¾¹Ûh2\Å[Ü –3 ¼ò óʤ^.(ôB2SSVpY5"ŒË›xR-ÆëÏ ÁÜUóBvÄûmoݧì‹ñÜÞò’…ðÊÅàä©7©ú䉜k¤¯N›B¤b¾÷Ží¶}8\¦«z—–]Ô>ð¢„ÉûHÜÇmG€ ¤åÎ_P~ýk~}ðAYùùsÊû3Iý5w.9w΢²@`5 ¤O/©ëÏ(˜+çóÄ|›”2ì”e¦Ñ[}ИyÛ,ÝäÔìNNš†yêÔ[”Ç1e)\L\e¨Ó‡ß ­ÒqUŸŠ«‹-%¼ñøÓ¯H '"¼Ã&½òõÀ~Zø¸ï¡Ûl*P¶¥AKW ]£ãŽ-»àÞÆ!62#€ä›i9z½&)_å;÷Ë©)ýõÑGç>úè£|w { ©äX`Éfbés•^¤åzºê£1·çE    ài¤å(é¯rîܹé©)ÝeŽã"’ëé;ç@@@@À‰€Psçh¡ž¬T~þüù³ïŸÕ_ççæèådÀ‹e©§¥”5¤£]EOµÓ0Äù|Ć]bO¥‹ÔÄìkffš]aÜÜÆ®+‘Ÿiб2 A@@Š€”s¿:{V¾Êççç?4¤ óóè¡,”X?ùǻգ'’ƒÊˆƒØJW~•P /.|àCÏìõ^ê< WˆµS6FÊjþs•@@@ „ –£4;û¡|•/,.ž¿pA-Š´æ|b±Øìì¬ 7ýmõ£ÚAaÔÀ×ÑtÑnåªø6×+c‰•ë–A@@@À‰i9xó$ðÎÓ«\¡³qS¯d’2ètµ5N“““ÇŽ›žžÎâGbd(n¶wÆy;ý:ðmRf(¢Ä:ýZäÕ Ö¦æDÃ(ͪñY½ŠS85: ww𡺖>XM(jvú'²ŒW/¶ðVQ,3ÝZD="! #žºÀ£çhЃ3Œ/gêQk8èÆÆÆ£Gž>­n¶õÄý ¶tÞ-MŠ4¤© µm÷k…ŠÕå\¬³G¤£áH¨¬M\Òu¬³×.‘RHeƒîSªëAe(⪥·–™®Ì¡€€€@qHSwåJYYyy…þ‚ÅjÕ¶sçÎÇÇãq§w,64õ×")—f311¦hs„¾Žî°n4Ð7(æé‚Í´r®¥‰/ŵ9V«¯Û«ëÉi+uèëú{vªVfé­e¦k¨   P\¤œcuWQÉ/zo{,þøåTSS³{÷9sÆÚ#_SK 2lšg³©Üq2I»8ÚhÈöÛ(¬›æË.¹W 9.¹ª'ºè@ñêze9ƒ7²«v‡z˜´I³3—c¼Ú¾ü˜ä³:LV§ëû¢4­Ô2Óº½cnŽvræàÞ¾ûšŽÊ,\!³™Ý¬Ò{kþ+ C›Ÿ2ÓÉdVµ‘9üÔï.®v¬’õÇÜXÁ¸ÇpÓO±ðÇâgDâ–†W°Å{éQµW[[{÷ÝwÓº½â%‘9h|b2Öt,@úFû}Mõ_Ûÿ]åÛÛ}\yüañ»ûåÇn}±é'"à{@ù–€ôÛ-0rwŒs&ß{"5)H_hU¶íýÉ{‡0Îï™,œxzÿ–LÍe_û¶P X8ðÖm- y î}ãñ§_áa™l¦ÆJEÖFÞò?õÎdïm©št¥÷À½÷\ýU…*dôâlÊ•ßV^<˜Ö©|óšæÙHáØw¾Ù(Æîì•ޙɲ5y—öU³·}SÜ º×?xRû„¨þFšrÒ4|÷ÝeÔL»_.> FèæÝÇØâV‰,Ë™§µ6ÿ4)éôÜ ÐäOæM´ô!k×Ò¬þ!tv̲ ¶pÛ÷ü‘øȉè[7)#/ó¿'_~QÑŠ’ËsšõϬ —ša¾Ýv?G²]©éƒ”és†v¿©Ú ýòqÜôS,üÉü5«Å5 §ßÌv·¦xòéy{ô€½ÔË## 7nôˆ3pÃ’@EEÅ:‘ªªªäWº Dù–õsϼîþ#RWé‚oÛÞï„kÉеá?ûÂk úÕýnâ-1]Ç“^{ž#~Jy÷¥‘×ïý³4=çØ³ÙÂuþðÅôé \óÞ;¤|Ôà‚m{ÛIå( ÍG*ožz×Ê+a€“½‘¦FsŒY/[Þ¦VHëÅÚµ¦yhF7nz<,ÆRûÀ#­z~êBëÎlÄ™°ûš-Û‘7ºgk_«¤nî¡y\‘¨¾y¤–™î—emãýÊöIH3`þåþ1¶fÆOGF§?MTšA/s”¦nïåU°Æj7Ñ|—¹²éÙºkíCh]ªõjÝ…(%gÞJÐÔã+?z³éÏw(Ç^šTN½|L±úYÓ¬é¾é?hzINC³ü™ÕMeLFš¦œ?ç¶¥¦’›Ÿ)Ý«´‹ûå“ÙéCE,>‡¦¡¥`æã7s¦WEòÞ¨î*Ř’E22 c ªkhhGžÐõUW]UWW·yóæ|0ŸÇ±\þö¾·ÿèeÃ, òÔ©·åN9Ú{Ÿ5N‰½»„cLÒ-(‡'Ã"lúméHï×=ß ›îæ·f^ÜX>a»Aå›<ý›{nã)Þ‡íz]Ýü¼Ü‚%»ì¦wí§)/ôxù¿áLJÿ “იlS“»®³;f3ÌkïhR~ù]_â­áoÞ¡|÷iúÇØˆ²ãÛ×.‰gnCsìB˜r¬‘§Â ŸS±Ž<Ùw2csSœšˆ²ì·;« ‡ KõÊÁ¤§‹HÝ©/ÉÕ¾ñ<d%°°°pòäÉO}êS4K+,IäÑîé¼I½u‘ ÿ[üµÕÈËk2#'ðxšíZßåyÀÕý~¿)=Çy$f ¢~í/žØ·í­SFËÜ×K'Dñ»‘¿ù6¯f¶oc“+Š"WFÌf3r²šrvãõ}1–ÉgŸ´Šäj™8Îê•> ³eQdAÞ8pgûúæž,ͨ¾y¤–™Æ^ôkçî,›˜¼Mû|fm"+8A¾Îw“˜Ø¦t"ªÞ;ËÙÖ\0ý4™é¹ôÖT-u­}ȱkgǬ»>]×x·2òè“oÝ}G­B×o¾4Wøzé)ÛЖdÙ|»?xÎ¥&²üL™êgÏÈê€ÓMÉfÞùv›[guFobá•ÃJJsO–#µTSåÅ IDATœ¾©¡\œ”ÆI]è×66¸»šHíQ:pàÀÇ>ö1Ò|[¶l¹ùæ›ù`¾……<¸±Ý—ñÙÚ­¢ÓVÚmÛ˜ƒ¶¼2L.qk|‚×ðñò>~ñâkŠÿ¾°EË1¬ù³sÊdA{ÎßöÇoHsÍ·öˆŽx±`Æ;£}“ÍT¡{#vëùYM9º!ÖÑX¾ªì°Šä¦õ’pã_ñtæŸÕ+{ËöäÝÚßþÐ^eßvºAÆ·Ü$;j|Âb¤–™)ÇÜv§ny¿ne}=Óác|Ýý®Þ»ë¤h÷ÎrDν›~š¬èPX9lÞ¥‘y-}pÓµ¡»,ŽYv¡6¯mÜ¡¼®†néú­¼i ãf½‰š'®†fE){žùv;ÿ9—úËô9»+îjduÀá¦dnq»ÊêŒÞÜÁ+ç. ´4¥åH㕼òÏßý»—ô¡´ÿqã¾}û~:ú‚óàžzæÀÞ¯u8×Ai‘˜››ûå/)Wé•—«³ÂÃ¥ëh4 u©'ŸtsîÜ9:eÿ·ú~p3Šááá[¶ßå\Gl{Ò÷ùä¼luQ àD ??M´wò¥;s]ퟮ‡2(?=ñÃææf‡Þúâ_ýÕ_ zEÖ³Ë /‡¦(E!y'ÅœüJ þÑ …è+]‹@ @ ¨ ¼ü’Ãz†¢9C@x•òQ˺ßâÔ4þ , ÈÉo-Fˆ>A@@ À –£t±–Ê×­«¼üò‹õ׺õUôZó1NNN;vlzz:»'¾ŽÁ–¡¶††2j”Qu]Ýú¬Ÿ:ï×å´{ź#_S‹&÷RáNŽÓ»PD‰ÑÜŸœüK/5KŒ ÅÂÍA+ó©ð®Œ:‹i¹~ŽBSJÅ{­ªµ·SdXõCZ³òŠæ;õ²Ùæ^ôæVn77W>t²wQÌ8–G¯ÊÊô4¯GÔ3pùtNÚÜGÏÑO0sa1­ŠÕ“–ÔðÁŽ´ßÐâD\;A}Xu|ÈÕºu—^r)½.»ô²²×þç»#?ûWÝ»~¿nß7¾qèÙï:;&ŸÀBäp®†Òb"@OTÉu8—_~ùÒŸÀBOTTùvê\&q:ÂwhéžþºˆÞ‘y¶¬³Æ§?Ø= B7«÷èl¥   °ª²>åÿhëü«ýû£¯¾-¨\¹aCÕ¦«.Õ}¼è¢uôréò¿ÿû¿»¬©?½™æÿ·HgΜ¡¶Æ ¬ƒ˜`®HeýêêêßÉeóŒjn°_vÙeK3¾´V|xùÝO¥žzO§#lyäðµK3¶´VôÛ®xùþobãáÒ¢€€ÀÚX·a­Ø»¼ºZv/Ô^Aím¨ºxƒ[µGÒ-×AЪA’z·ÞzëW\¡KÀ\ ¾™©çüǼþúëÍEnr2Ô-Σ$¶ìðÓ)QüÖüÕ‡—ç:Ý ‰¿-w¾ho_LÔØ1²gߊr㾘<~ƒ¢±ü@4ú ï|Sy¬ö‹|ÒÔ­Wïo9Šìº5­IZê©êË9j)Í Þ€€€ÀÊ ©G‰´–ìªrÃúÊš+/Öû%ñwÑ·ŽŽUpé°qnïìÙ³4E奶Æ3y1·ç¦¬¦#¥ :®ì’K.ýàƒÜßËÉ<=S®”:ϲfN®.©ò©Äë7Üq­ÞôåÈã7Ü1éléµýßÝqbò½Z ßúðsü¸–Û¾ùžPu¬Ÿkñ‰É”ÔtÌ—Ö„–ëíyú•L‡¡Ñ¹Š¯GOÑá­Î=£@@¼D`ݺªªõë.½ìéTåºuW\¶A¾¡§¨­_Gûuݪ=RÆ¡‘,„4Í Ñy©.\È;å‹j”ÍG/˜§÷ŒúoM¸Ñ”–¹g¾ ]µ&^9tJççÉUzP"ÏÆ9Ôt(¢›B3µdF=??/ÕÞé<+7ODßÚ÷ÐV%†¼m{¿fYvmøÏ¾°ï%Òh×Ò±ñ$ãžu¶íµh®5ÙlUž<õ®r5IKtý›Vù¶  !PYYEÛr/Þ(Ô^2YNÜ»ø¢Jñªºè"**¯ª\Öóö¤Ôûò—¿ì õ©l È’4­'OÜòÚWR¢7ÜpCCCCÆÅïýÞ©÷’pjé÷ÌÐ’žqxÿý÷/gŽ0/n#ê¤_Šý÷_›Õök#/Ó„ž¨ÿú½wl§5yñ7nòóÒ?ÎÉÚܪ»‰·¤«B䀀€7 –+¯P*«Ô);Ö0VU’ âEg]B¢9!’¿û»¿KjióæÍ¨Oê&–MDcÓ¦MWTWg\\vùåÞ{4GJ0Í1qþEô ÆÇœwg,5(ì`<—¢ëïV¤zû3ô]±ôTÚiñÚþGéy{iÛ–øÃ×ÓønÝ·å€X·ý¡½Ê¾í”óh|‹:·×xÇ^ÛëÕiñË´cxOzq‹‹ö¡@@Àƒø”\E©(/“¯JÒ7 óš£êìÕÒü&µGSb¿ñ¿As{´ÃÁÈG"?–ˆ9T[“¢Ë.Sw(ðÁ¬tÀxñ«_ýzM¼rè”î q¤ÓPê¸,"…÷›¿ù›tû¢Ñh0Ì×”¡ËÞ3ªÕ6îP}iò_äØŽð½ðºû¼w¿ú޶Y¤%_û‹êN[5ÛXYÍÒömð[Ùî–ç»syïwz3zÁ[ð:¡ö(~+«½óúC’i9ÝE´¹b‰ Œ¤ÛÏ~ö³‡z¨¦¦æ¢‹.r¡­ÛãE{ÕÖ¤ˆVÊ~-/<è0ëuÚ¦±°ÄY#ä«®ºª¾¾þŸøÄ'?ùɵ•zìÕµáoß½cû×yçˆÃ‰wÏ?PûæÞŸðöÛü$uWǽwðYý[^x'_–ó㬀€€@Î*i}ÿù¹óªø#µG²a© LNÔ=ýôÓßûÞ÷6lpšjjOîÏX¢²Ìy ®cW_}õ%—\’qAúUøì=‡Yí-p8~Ù©®®Žæö(O#%µ·æ{rkxñ§AÑ„Ü{Ù6ê:µ·(ÛÞûΤ6™GOo±¨,(0<·7'Øxá/¦ã½²K„|äÊŸþ韞RðÑ>R vÄæÄʽsy™‘²ëeiù¿þõ7|²žÚZ^œ?~ifW®Ý0žŠ[öÜÝù¯|å+R;šÔ[9º°   O€¤LO.ùÒ.–§ö >ós•¨(vLÛxqÙ}åýœÓW1æÝôJ¤ Y™–ýN[®0ØR#@jŸ°WÆS{tC’Þ¹Ÿ×qÿMP*ô,7Ú 033}Å—ÓŒ”çö ô0;û!ˆ'ÿXþô³4Ü–ß),€€€¬JúsNÉcÓ¼n/IŠÏýã•3´™ÒU¯TÇçó:uêý÷ß·«ƒü%X·n=ûƽ8ËZS >ò$kÍ%x‹&   «F€ž‡\N`ÐSøXí)Éœ«»´Øß5"­ÚKª#ZV˜UpK Ðp%õÁÀ`A@J™@%£¶nÃ:íñ{É ’rªÏ:sÂE-TX3<··~Ýzê_ >šÛ«¬ Å|ÙÓþoõg¯„ àŽÀOOüÐ]EÔÈ@eyyEÕº*>`C²AêÏÅ©?¸'·~P@@@@ ÚÚÚΞ=ëÞ©=Z·Ç;s© ©F›4*ÊÝ·GMX>úÔ.ß,€€€¤ªÓÏÉ{.+µ·T‡žÆµ‡O˪Èé(«ê:$ uïÁ‰žÀBÚ®B>^Y䤠Zß@@@@ †é<€€€6©ö6ˆ“q)±ÚÓ®ù=öhöí…÷   %O€ä½6hxj{4JþC   L€¶eÐë"m•¤íªDð–¶åÒWz µWÀ·®ƒ€€”<)çÖiXí©Çâ ÍGo±n¯ä?$ ¥EàÀï½÷ÞÜÜ\q {ýúõW_}õž={†S‚C~õoœ››[\\tÀR@EtÚ†õëÿ37ZúL‹ôè¥+:VzÆÉ<¬Û³¤†Lb%ðÌ÷¿ñE=òÈ#W]uUqŒqjjêСC4®¿òË•àròç—_vYà³Û6^|±%“‚ËœýðÃþ—1×­ Ÿ3;/圾1ƒ×íAí™1!@@ DÌLOÿIW×W\ñá‡ǯ¼òÊÖÖÖÞÞ^»á”àoÜú»]´áܹsvX +Ÿþ‰B#úñOþÑÒm©öô¹=,Ò³¤„LR!páÂ’GE#è¶ÑXhD4.»[X‚C¦Í _|QÑëéÎÒXhDrÓ…ÝÖóÕ5{Yë¡€€+ú“éò¯f¡È:œr¡Ü»•ð“ÕÏX ²°   P@²Ê£‹KWKpÈ.ÉM5]ài'§i#Ã9¹Es1÷JPú”àÝ ½f†œãu{´YAíú †ÿ  ¹ ÝCæÈúQgµ–î|úmÍ>åêïÞ~úÎêêÎå½ë¬JnC>ËdUž†`„“›É¬CÎõSaY?1úä“£ Ë¢l™Ôôïþi&[­<•K9§«»rù^ÿš§^`@@J›À­Ù=þÄkÓ"½Ö<¼í¿*ƒÈÝ6ÜüÚôwn/R§¾ÿ‡5Û&þ“Ôôô3Ê\0¾çÁÑ™zuzË–éWWM´-Óg]ÝñÜ^†à£·H   PRhf(¯éígþz𾿶_+­^Ûþ½å±§^’ïè/ïbòígþpw2U#¯½»úKž{o?óàcŸüû©oÿÖôÚövý:wsÖ-œ%¤Uø¸Î$ÞR¶|îs[”·«5G·ÔQeH;Ìí-$Ú€%È §&oÿè¿þâ¾Q ]wÇüÌÿJ¼Mµ=zóýÿwJ79[B™›;“³Yó 4?~”M-Ò£?y”üþ÷ÕÜà÷yØ"½ýý`zÅÌ á¸V;§ïn†¼¼:Bìù®¼Òg”{">›ø§¿{’“©µÌ”ÏPÕT(x…£»ºæÃX–wëÑ@@ ð ÌÏÏÿêW¿Êç8fçn¬ýXšQÊúEbìW¿ºjö‚ò‹îî_´þ_o_•ç^S#ظq£óp–2d‹A©|fßÛoï£ëWº?ñ_žÚó™=µbŒÿó+œKyÒ÷ßZ{nS&ÜÓ8ÒôòÛ_+šÑà_éþì‘?”¯tßóÔ¿~f5\˜›] —¬Cv’½Tˆ½¦+©"ɽ‘ÄÌÍ7ó5¥©“¯ni{ä‘+IÈ Žü“ïK"ß2“ò¯¼ù÷·<9‘ù|ô&1ñÖ–ß©f¤±•ùZ®Ðñ¸â%àÊô«   ài¹ípQ;ùFüŒjÉO__KY4»÷éÇþö±7ÿd׳§\ZR7¬—`ØbPÒʉÇ>ÁéOR–“ãŸÜ—·üÁ+o¾C#=uüØüÐ}Oõ{ê7•7ö7ªM0j¸Ä3n†¼œ:êÌ›àÙ½“?×÷j\ÕÐ$ ¹©)5Æk™)ú÷mÞòÖ„hœ˜˜nø«¾•Jis{jxŸ%<~o¥˜Ã.€€€w ˆ?€ùK¿}[èÓO¼ô“¿ºåÍæä‰ÑÞü§¿ÍýpOµm‡þ6±ùöîë&öëUò×½+K9Ù<(ÙÏäàî/'ÿvbâ…®þO‡c”ªBê µ3*0€æJ»ÿÖ@ ™ü©±¡«a¬R¥ÄÏONM)ƒOžÔûÓ&èRÌÌL›½1gú>×ðêÈ?Í\©Ð–1W¸I×yÒvæ.è&A@@ÀÓH¤&œòsõñ/=¸ûЗ÷¾¢Z{eïO(ñÀçÅ[bÁý}þñþÅÄ—wX‰ ¾¬JnIC–ƒÚ¬jñÔ4ÂS‰þô'xÊî)ZujN£q¼¿%øéCß3÷ãµ›•ôNîw!ë—õ¤˜ëU ®ÕR[ÃUêmÕM4û7µe³:Wg™©º Vþýüçb಼ÊÖX×|éOWF<78”ƒ€€€+·<þfdß 7Ü +yÐ4‰W{ßÁÈÛ7ÜÕªüðà}µ®Œ®u%Ô?Ñz—6ªOÿÅ’KüÅ3wÝuÃV>½{÷§gf$Ø®:ɳ{äÕU5S#O>9EW[v<¢f-3µ!PÌ·æÉ•+·d/cn'§­å§}ƒ€x„€œr˳3Ÿß7>¾O³©÷@¹Ÿ§c Ä4–ÂUèÛŠtŸe4Kìóã÷¾0~oÊ4[1gǘq­ý§7¥#œ,XÅb_H—qj¯WÞü¥Gø’à]õ¹/…B™Þ˜23mèÓ€™-ó÷žÃâ"ežœFYzYþºƒ%ð.Öô®¹{–5¬Y‚CÎ⊵à§474­Êþ 9†Ì¹=H½»·0   à]Kœèò{V‚CÎeÅkðcZNNÑÀ/­ì’=1ÔÜÞŠ €€€€· ÐDWÖÉ0o Ó»¬Ã)Á!g2ÊÏûÌø¬°j™)ûãðÍùé:+<·‡  %K ªªêÌ™3×\sÍ¿ýÛ¿„üã4"—ÝpJpÈeee~øÑEm˜››³ÃRXùëׯ§Ѹܸm¡öÌuu@@Šƒ@MMÍ?üÃ?ÜsÏ=>q¼A¤³gÏÒˆh\vc)Á!WTT¼ñ/ÿzÓ§~Ÿ–ÂÊÿè£s4"—·Ë>œŸŸ]X ªr³î%ååùoìíêrÓu@@@ <ýôÓ4váÂ…" ¦îª««zè!‡á”à_9ùsZª˜5ÆíÍSE4«W^^~[Ãç,½z¢·wÿþýçµ™?1·'³'ÐnhÌíY‚C&€€@±pFE9ê²0*Êû›1(~˼È[,+#ÁGj'ú@@@@Š‚@%É;R{<·ÇÓ{$øÊ!÷ŠâÖb    @*•¹y:¤X!‘G¯…õʼœëÂ'PIÚî£Yí±à[T*•¨½Â¿¯€€€H•¤íHíQJò6Å… ʂآ‹    P*æÏ}¤=iåÞzú¿†!€€€€R{‹ssü@zs9=Š%¹ŽBºH    ÅA 2¹¸H¡[ÒyôŒ¾d™raQ¹ùæm_ï¡|šé£/´ O=MO{"!©Á²ò²ŠŠÊrzUVÒsœéIÎôª¬ '÷ÑÆ^ÞßËíÕµ€¢9Y£h±¼`»"-ˆÚÌÿ©I< P¨OúOK†kQª«qkùÄÄEá6Û µ$®¸QY¹°YNãÕ¾ð¥^QV=ðe‚°)I 窊©aCpædÇ”#Ǫ}Óip}Ñ;?‡«±·"•—WÈATû¢‚ôO\h;*j’jMd_jU½±¸á´~3ž´)ó XåýQ]2Ü,Ìл‘°z­áÓÈJÏÅ}’w˜?’”*äRo©p%•ÊÊésXQIŸF¥œ^åü¢Çг ñB$ðÙ›oOÕTöoSþ¯ÓÐ_ÿ ú»ZQ~å%ë.ÝPQÁR‡”“øjHR«ð_qUíUPN•¬öè%”‡ªóHŸHÍ'%SÊ «'RzRE‘°b…b"ÿÜ í@_„” ‰¦^ªÙZ©èLüù—ÊTÊH!wÔÿôJódŽ\Wÿ“j‰³,“«=á9‹-þ®)ÑÄÐ’.UbT#i¦鱪pd¿Ô€Ç*%F,-K;¢sm”²†ZMj!R7”d%•…x+»Ò@h%NîB5¥6í…¬£å›ÂVÕoâ» ,3ÄWy§R*UÍe¢®±2wgh›^‰½•#àïl™ã;ΩLª=­µ0«›fÑKŸZñÙc©G_é³™.õLg:‚÷EF í“g›ü$8—ÊêuÒ?Ï+DLü(¬`Ê´oþ©Ìè\úcWm…½]>ˆ•¥éÂ?‹_>âÏ€ÚT«V3YüÂ4ÝóçÙ¢;N¢Jæ§¾hˆ”•Ѳ<}e^å¿xõ7|ÛÎ-(BíU|¸Pñá,=ŠE¨±…yž÷[ …|ò=«4TÉ$Ϩ¬ßPµn}Õºòuë×oPÖ­W6П[šd#ë Éä?ÉE}] ‹ù…ù2¨ýwaáå]à!â7Y%Âêßw–c<©#þ“_,-Åß~ùÇsyfK5<…HvÈ[¿p]gÉ"’vÛèÇ@̇ñ(åWž”¬¬ª¬¬d½ÄêK)j3>dU ñ¨&EMše1"t w þŒ©F ¿aÒ~>¹K*“þ¢Jÿñ¤! éLÖ&o¨Lè/US• šÈfMþS}&(‡«Ž[ÓmÒ^ÌÂòtlE’ÉR«zjG¸„G4Z1X9^AN¥BžPÒWñkˆþW“Š“«S-IAÞUf“Jâ0ËU¥mn FH÷P|-èÞ²w4kWEÿ¨¬âŠˆ_‘\[4'ÇÙ¾…딪õʺ2žZ®*ã‰=:F|zj·øV ?úi¦—]‘^O|Âõ°–í¢¡±•4"gíÑ|Oœ›ÈRcº7 3ˆ˜{7æAËŽ–<4çîò^ê d™ÝY7ãÊÈ1"Õ‹øB¢–¿âÄ׌RcŽôœ*}0w½Ì–lsÃ_ñâaPùÂþ~ÿ_ÿ‡3‘’ ?°*¯\¨”sfüãÀhɨ˜¾ãï<û$f ¸ºðŠÓ¢uâ‚;©Ò‚­òôIDATŸXµP¶°°n~~{+“ø.ï“PÂ6%¹ºK8ÏÆI)Id]aS¼È }­H.V¤ }P¬}„y1略¦oòJˆ=±Í,I0–|œ¥ÖrV©®ÜÔú<¡J‚Hü–cRH’á9:aƒ‹´ÎèRŽH[=)4”†Q®o“÷š}§Í÷·lq‘¶ìðÓ¶YùiÁÜ”M( òå¡©ý‰ •˜Xï—Ίû¥ ä´«IŠÇÉ嬱¬%¬‹!rp–WI•‡*, CTÊ<úøQMEýÊ®ŒI0æ ¾þÈø¡•C¤¦~PøÓj=rþGZjøÁRëÊÛ¶m´£u¿†\½_sG¶£¿Ȇ¹‰4ìdÓÆ!½/3›Ív€¶-Š•%®´_Aâ£ÈwJÿ„.t TA¿§òFSfª/ù‹XŒÇÒ匴¤Ú¦þ6˰9êõùë¾÷ý§þSåw¿áaY§‰?ÿ4\ñU^óßc)>8I~é0Õ?Æ$(|¦«=!løÓV^ÅÕøoöüÿßÞ•ä Ã@@ðÿ?õ«Xf±¡‹"NHUÔ¤ÎØq2rh9ÜNxtóñŽ Üíºã”¡¶î€£“ ¨¸ù ±œ“º$½0e V¤n€¶õ_ $œ>¨C‡¥SsÌ…߇ØòËßõó£5ƒ]áÕöt0¡×i ‡ÚldÔÚeš~êªr`Ï.±¢(.Yá¤*[ùÌ\[N`&× 3°ôeŒÚˆ?ƒK‹‚>³ƒÄö;Jð¢î\<[[Ý 2Ï.~¹¥á¡ZU%a´q n«(?e‘R\ȳ&m1ÐÍ4šøîèð¶Ã Ñm¦zl ì”‰Zí]ü‹ÔÒøÑZ3¡‘µÐ:œG}®&Üþ<¸‹Õçjk%‹„ÿßú¶ˆ¹á€/óXÓÜË+#ìF¶Gxް¡»#Czï ÁxáèkÙ`ÅTó–×ušž÷iRo׸ò®IEND®B`‚PK !“üw6w6word/media/image24.png‰PNG  IHDR¢Ò‡ B`:ÿ‰OŽï|}׿<ø`ÙèÑ!8 -<˜Ž]¦%B&¾Ì¼›„Ü6ë¨lµ±išqfŠç›•fW+Q5%î+qĹ¾RÈŽ·Z©uü1ÇA˜"²nÀ€þ3gNkÏŽ5ºæ±ÖE\jD:“-°Ã¹K:ÊIY“yÁ¾»r± Þ•¦dcP’ÌP<6ÖdêÅ„œãxwYÍ•ÑH¦øùÓk¶ïØÉ½Œ7æ»ÌÌ´Ó Ù¦škkkó7ÿ©é{ÕÕAMóë…«æ¬jºÔ¢±!›&“/ñvÒKys›¢5'I%ô(+$ë‚…Áí8ïî\“‘QÂ|•б¾ÐÄ"uD!w!«É~yG¹ %—Æq×­âާΘ û™`:‘O™Ê’ôA¸÷Þ{×®]ë¿üêk¿0úö @sºIãÂ…y›ãÒêüLx¸;?KyP6ap‡§´E¢.ˆÅÄS0ç0þdÑ“‡I$,1NÈì#¼‹r¾/·šÔÀ2wÍ÷™5æTlM.ìâ Plj6á#0]&hNôÅÈÔ$qÅéí·ß4GoñKäfEvNŽE¦ïlã±U_“¦+£•;FDÜJäˆô-'e ”eŒ×ÄQVª‰­ Ù8J²†À}ÞÛÏk¨à»} SÇA«‹~õÎi—VẬCO£G5í_vôË:Lbunp}¦ÀN*ûð Kj¾ìͦÐjŸš•A¿IÁ "+;Îå&¸”™5Ž¿¨Ã÷ÅVqàLƒe‰óhQÓu€\…àÓ§O»î‚dÅ0«y ×ÙTÕ2‘¿€õ®úû·˜j(¬u#Áv¡#â¶Ñ²¿ªÙVç0kµ9“ù‰¡²m–Ù+Û·šmY¶‰Vìd•²µas‹CGænªÏbî&³"sAWÓGnŒs™I‡éóV+5Þ vx0V¾T Ì}€zàÅÖÈþ£î'¡PÈ}‚EÎtO?õïLü@Å\ç8°œô÷>;áxÝ4á?KËÿïÊÿÏé³p›zƒc×ãùpÛ=>ߌ†ÃpüÆopÏ^äðÖ{|3¶üîÕ·wêü¾ºwâDGîñßÓp„Ë@ÅoR1ÛOô™šˆ³I;P?)XV矞”ÅÏm˜>¦gÛ…ÞúàÒb61H¾Ï™ $6j.„‚&ÜF긺¥ Âúö/U?qwþ¨ –ÍŽá]Ùš¾0Žæà«ý5V¨àHø¬vñ°vár~9û—ÓçÔ|oåGߪß3ïú·$ªô݉$û;Sß8iÝAóèÛ«¦âéíÌÕO~«^Ùg4ÆYìÝ&*±‰¥Ï»p4ìwäVnÓI V±¡ÜuÇU=´0µ–•@©ð],¶Á>,ÈÝÍH=iådgZž;!¢]xŸtׂ“ŽHèØÙójšcQ}kõ†¥ÍÍž¿s´|àSèö炜GkÚŽr+»ɑ(q> ¨™>@mýàq°“Ž«}â‡@pà«ú‡OÀ>ìÀ;ìÃŽ+WZ &­=œ@*'ž¯¸ë“žNAívö¯ÚÙ?kgÿ¢O;÷þù‹Š‹nQ åÖ/ýÊ-7ß±ôùú·F ´£Ûî…™!ݪꡳq&¼³,À„÷<þº`’úVƒ·gY€m÷n;Juøç@`™^©QÁ²eTËЈYZ²yóÔù‹Y?P|yþÔÍ›—Í¥a8øW‰:ÓE`¹Û²eË»u |kûíð–4½ï`µY'?§s›ðYäS5w›LÉE ÛçéÀg:®&î˜úÊÆÝÍ­9Aê©'«†ì8ÑOMŒ/^4–ÿ`^J…wöäîºfÕToj¶:ò~ñ§kÎppË’G¯ äô¹°v¶…?ñ„Ojás^8¬îH3繯­_º{-è_^úüco)ŸõÜže…_Ó6 •¤4Qºñ›÷ƒæÑmßñPíîà¼aäÃíߺv#ù¢3䀋F¼±ùP¦›ø¬Xöå ½lDæÏ'»ƒA£hLºåþ©“V¿ý³ ݶxþÔû Úg4˜°6\ Ž4Ü{ÝÝëØ1—€Á? ΰ¨6¿Ú£[o_÷¾x(8"¡=®[¾»c®ìPðÛ5ÛJ¬ •RˆG.Ä `Æq"Óñ,¸«‰ Š1ˆšYÁÊy¦A^«yĨ*xÙ(J\ @=iåNF|ç~pzÏžö|Ÿœ9þÅsou„"!øú+å7ZYEóÎËiK›o¦Í´ž+]÷NhÞ0(™´%»ã`6có´‡êaÖÄ6LݼTg…j–z6ˆÜiSÐ"÷.D R·³‘lÜXȧžS7–ìÖÛå ¼-™4b]MpÆáÕ—Ô¬@¢4G)³0:‰õÀ rÏÒÝQB5Ly–¾©“™ÞØ 4ðå5K´ÏÿaÏÜèlXökHR K[î5Èœeâ¶8.\3/â˜Þù‹T6ÂåL™ä(1›î%Úå,ÁDfˆðnŸ9Î,Œ^|`WuÅHd‰}œ¦V f¯W==MDs!ß©={N¿»çt˜ÒÜõã_t옲цûâ=è2˜MwzpÓ9¬B… 7îûø¹ò:¹=ü™zÿÕº"0Ýî}tà¦n>ô3ø ÿ¬ã"ñƒÂô°//!#^^Fæo\²Š·¨6“+Ý Pû¼¢£ 2N?}‚湪)ýŠg{:v”Æ­„2+™$òG'ÈEX”j²Â@R³‹”å=zô€«™ i.MºI9¼4;Âåzöì©4b¥Áœ ùÖmÞüüû‡N†©æŽŸf¯­¾pˆÖI¦ƒc>ôZî-zÛˆ¾Þ2<ôòOÿ§’ù7Ð ¯tú —aa0è‹ã¢çц{JÙ=ÜÚ€[fA·ßD‹¶©÷߯h ›<´yêÆÕo˜ƒnœô½èJZ,»=¨)§ÎŸËr3fDª»€BMï|¨=ôùå*ÖÔ´›¾"4iX<ß³äkJw‘›”£f—nzmrä&‰ø‘ï‹BÎ}r«©ô¢ÆÞ×\s |½³ÂqèСÂÂBevñÕ\ô䪥¿~^ì †‡|ì 9|Jª7‰Ú&í!ÌXõûKûO¨ù©§ôåwªªžkþ©¿´úºdÉÔùoPíaó½øÆµ¥~J(K–,ÙȈEð<`ÂsÍKüLêìfËqÂÄÒýlóÔÂIÑY«^Ù VÔ»€ hÔXX-îõ sؼ¿ýöëFôòtÚæCÏRšn7é¥~V»B«zaN¦ ÁFŠ»œé\7.r¨qÞdâ\øMœ×øäÉš”­²Ž‹ƒI-EìºX·ÁƒoÛ¶­£££¨¨¨oß¾&û'Nǵ¶¶Ž?^™”gÊ}Ï<½òœôð’nú5Ù Îlx.+Öà¶Ø÷ú=}o.öäÃã῵þÏ¿~ÓÇäÊšÎáIaɧ“ØÊrez¹#äg.òÌY–ÇH942CñX“¬À,›Z•j¦”äÎpçf$p7̬8¤Ô›A¦P6Ôq7Üp¬Íù|tyopVVV&X›3¹<ò÷ö÷÷ÿ>x1 ²/?¨g¬8àÇb²%׈Á€BFÏꤰ¶‰„ÅÏl4“òxÉ•Y"¦a5 –˜¬ˆƒipÙPòwHÍd\éë’#ÀOÓ…-ã·®®˜8Žë' 9~{0Û©™Ëf¬Ú3,ؽߕ4}#ü|s¶öÊâ©k:oM¡‹CË&5–]†Ü9ü»b3XÐ$FÈ÷Å®©™L™ò5Sƒ {u2l.­0š3Ž(SÚì)ÃéŸ6é[PއÃOìk:s¬ÌòsLVpîT>-ek™dŽì˜e+®‘å 7QÎ÷Ù¼ópaòÅ?ò&¦Ï[3)ÚÌwŒÛƒUWYÔäƒ;›9ÛÁ—66+à 45É«¾y'ç©ÙÏ‹q™Œ©»RMìúÕ¼; r<à¸I+=Ô¤S4Ë dâØ5±aÂSRæg‘|ö2‰Uœ¢ÜJ'ËfÇ U–»ˆ*[³“,zÉ/¬Íåf2p|Û0ˆMOljSv¨)ª9ì’Ql90q×3.§É%2%A¦dÞv¸ YMS«É‹»Y£µüE ŽæØqfmÒ¤2‘¶/¡|F9 †wäúâé§4ÂÏ:h•»³.Vr¥ÁÎ!äL”l:bGq¸ù>ìp̰J56 ‡/ÙðP¿ó! ø =nà‰æxò6M.”/ìT¡¬é`¶n£“µh]DØSú‘bl ræb qTÅžâÉ£B CEµÎ€zÒJŸXâà´Ï4¦c]tMül1…Á{)S°±i•ïbßWéÎÊ&ʆ'ÇͯÍCûQFx»&Vg¨‚æ ÀûíæÍjjêšHaÖˆ"§”••Ý}÷Ýrð š%à¸êêjY%ˆ"€ä,µµµ“&M’k:º6ÇÖâr6t @tÐ/Aèw³Ê˜Ž]ì‹ ˆ@Ž `\iÅåó @\G€Òœù«I®;Aƒˆ"€\:b÷ÍYÝŸqébCψ"€¸€€t{pÜ.çBZh@(Í!4ˆ"€t.ŒJèM%¸!ˆ"ÐÀj®3Ž*æ„ Hsx8 ˆ@'G öe/¸=ؘ¸âUˆN>è˜"еÀj®k7f‹tAæºà cʈ@×Bi®k7f‹tAÜ£¹¶ã Æ­h‹b…O]YL@rƒæ\ºk®©¦2Ft9’!† ]÷ª9²lñâ’šå]RL@r WiŽñs·ÔÆtU|«¤“ÙªªqT6nE#Ltõ}®K§½lãÓ]èM;ᆠˆ@ÊÄhÎyëà9ÕñÝØºvckŽ2`SËgV¶·7/&5µ„ílÚÞ$W¹iJ³®ÛpnlÝ"t¼F+­1~D§lÊøÁ:ö|öÛ¶ojjª)Õ«9Ðl¢Ì‡"€ é#àò¤Uhì\¨Æ–ïÓ÷«Jy¶¸,A¼³6D+¿öös&è‚͈"€$@@§9wæ«1OtæZ_ýÄ’"FXöÙý$âàñSÊê·°u8Zâ’\‚‘ÃfDpˆ@&ª9p=v®QºÁNË4v]aZ½mLƒçìØ@˜*-Ù’^‚°Å DÀô«ûîs@S;báSûý#߉6j\?Ö‘^®¨‹ $xÂÁ0¢ "€X#àå—`Ǿ³v†-ˆ"€d MZ³ŸzDD@Òœ”"ˆ@§AÀŸìMs½Gö½ûn§É‘ßtÓ™W^‘å(AòãéÁÎWå€ãN¶·³lùð‡?lo?™§ÉcØJ¦~sRãïæ”Ø ð PPÐçšAý 쟲ïØCÒS0Ñ»wßa7÷¿º_Ÿúb—\F`ê7¾–Ëáal] ŽŸI5¼ðTEÅÐõ[ M2$ERÖqb "€¨p§šÛ²žÔ­žWd¸ ç2££˜Ï¢!Cwµ´šbP Õq&’îoïÈéw±Šæ½&ùOÔßA»ÃhãÔ ¬ŠÉ«&ÇxΟ˜J’J*TFòwhn=‰RŒ ôŒ-)6µ*…VìåEwM'U6Å–}oG­£ÕöoY?tr9).!¼žsäÊPÊBRÉ„ƒºˆ@ž"àÍY&¿«ª˜­®ÁŒ’—{J¡¥ U·[ „f•Ì›õ"šÊX"ÙSåä>ª¤ –#”®ðœ˜QqÕ.Ã~æ’’@ "ÐiÈ0ÍÅÑ^ãsZaeM&…pÜÚŸÓÉ*ݶuµ®‹®Íi´[_Pd ,·‹q$×.{ž3j­C#CI%7*#ù€;4—°XIRqÉȽïñ‹§‡VFË'WÈë€VÊIÈãƒLØ‘ÖrÆ…Mk­KTÏ%°—©¤¸ÅfD  @iNÓô—þÓ7©ýúMü½kºìQ‚¿¼ßÚ²kèè ¥¾YHï»à.áꦼhî‘ügZœ%¨“Øj¤ƒy«Q6’’œ¢è|Õ\ÊÇ×<ž‰dkÒW:ËWµ–,ŠÞ$·¨¤Õ|¥6ù¸µ9z[@ocaøOv6,434_›«ºÕ>,1Ȇڪ¸ë2úå„ZvC¡ÃÃ(ݤºA5D ³#à™<³bõ/WžõyzøHwB|„ø5íÑ ª««•¹÷)(àO(9uº£ðÚ«”j(Ìc<ZÞã†ä û?8rUß^ é­­]¸p!T;\Öê+++ÝY›Kè>gä¯!˜‹·D¡¦o!‘lGWHëAL®F’cú­Ëi¹JßBZî±3"€$‹€~ "ÙN¨ ˆ@þ x—?Éb¤ˆ"¤O2IOZµ>}à*ƒ Ÿœ‡Œƒˆ#}úþÈx¾uTA2Ž@AïéøHšæN<˜Ž?ì›\žQb]tž DÒ´v!œ1UDÈOæòsÜ0jDpŒÒœc¨P@ò¤¹ü7Œ@#€4ç*TDüDi.?Ç £FÇ4‡_„pŒ*"ˆ@ž!€Õ\ž †‹ É"€4—,b¨ y†Ò\ž †‹ É"àÍ5VT5 ÞÛVŒ‹Ð6Ž[Ñ–lŒ¨ ˆ@¸Escç..kÙc°¶í›Èâ¹cÓˆ »"ˆ"à nÑ<~ Ù´=Ês”妌ìJˆh@tpæâx.Êrt*ÝbSZqêÊ÷é$—m|Z ½ãæÁéä‰}D Ë"àÍ <Çk¹±uíÆÖ¼¸¥ÖfU®mEå¦)ͺnó”M•Lz×á´·Ëš˜8"à.Òç9aÆÊk´Òš&›¡GSSM©^ÍfSlökÓ ›Dp‚@ÒÕ´3J×ç*·7X—[I×å«Ji¶öï*íº2kÖnöa+"€¤„€›Õaõ\­xõ¡¤ˆ]‡8°/VÍ .*iÚw€…ËäÀeõ[Øý(Ê;QRÊ ;!ˆ"¸Ks:Ï5ñk¬p—IË4v]aZ½· ¯m)£ ƒçìØ@˜*-Ù’^‚ÀC@\@ÀÕI+ã«ö9<.`/áïØ¡7JrBè劺¸Œ@‚W âÁˆ".Ws)D€]DÈ(q4‡cÊ(Öh@. 1šCŽ»$€ND Ó¤²6×{ôhß»ïf:2´Ÿ Â7Ýtæ•W2am"9‹@”æ’©å€ãN¶Ó_e?|äÃþ°½ýdΦ‡™˜úÍI¿CšÃã"Ÿ((èsÍ þƒöw4ð{A—!©TsÜYïÞ}‡ÝÜÿê~}œ»GÍKŽÀÔo|í’Ç€ ÎøèøÉS§Ï9ׂjcï>}'Ý+­ÈqÎÑGMDHç$Ã*¸0!ð é/à;Ø7ª¹dæ¬)ĉ]DÈ8¼ˆcïPÇÍ¥[ÍeõÔDN-À9‹ÈÖUÅËn+^?½UcÛV21J=#ë akÝÞEQ*Q U£X¾Ê0XA*¶²ÝUåT‘[Ð…º¬a6|M¤$dÙ]åK!ƒl'ÃoëôõÅK9rï{3îß²~—ÐÛ[ù*ÀC§zúúÚ¸¿:é‹Ü§Eˆ"‡£9¨ã(ÇI°ƒD"”é\š´6Ìž¸·®ukEÅÖ(‘†Úª¡“ËáD'u«çÁPzat‹®hÈÐ]-­¦ñR SÓýïí9ý.AѼ×$ÿÉ[‡l£y€Í­C«b,5}úÐõ[ϵ¶ŠŠ‘6Ê«ëö¾üV4﹞éƒÙ×8n6&° @ ÂãšC(D‹¸H˜húr‰æÀËÐ!:“D‰¤á…§*ËE)Æj,( •›Z•B+ öò¢»¦“ªû…©§½zâVZ£ÙÊÅ%#Ÿ¢lŶ»&<×ðÂÞé“Kl ³žRA«æZjIl2lk.Šð”oâ;½öªi.Ñ­J&¤56]SqWö»ªŠÙêÌ(y¹§&5dÜ5Îx˜—N,uoÉÏEƒÅUÆÔÄË@VbÅ%„Ös”åîù[†d ) :fs×Sä:çurRx 2"Ðu€ šF™Þà<#uæ\¸„qÚÖ ²þ~§T[¨æfJaR£·þÅçÇzx°Áì2ÙºN4ØZgÌ@M³l¨=Å iýØÒ õl|Í¿nhž»«WèÀìȺj}Õ¬Š5cR¨ 2"Ð%Щ ØÍã%>ñz‰ö=ðÉÕmè#¯µÖé¥ Ûè û”’+^îè½ÓœÌ–O®×“ ‹ò /[õέ-»`†³{-Ú'sàŲ ã}åÙ½³¨‚t(ÁÁËG|âó_€ò%;Wò§—Y£ GpÊC½„`ZzŽ¿Á¬;쪫Ñ9ø¢TX.0ÐÑЪâ¨Qp×_XÅ Œ¦½ ®À$4>!}…nK|¯(/ËK‚‰­£"Еðêpœ?@ü~вÎÊWÑ…#vC ÜhAçcP7ékëâÂÜrwaȳ5ûÀxÉ"¶Œçñ,*áW8Õ½âÖ¿èR½ ·±° ü»rù®s£ônÉhôJL\Rlzu_Â%×ªè  Ñ™Þ¥õ“,vjŒPŠtN€Ñ`9¾Ú¯€—  ƒRÎO<“gV<óôʳ>OO?éÎ44íÑ ª««­èSPÀžPrêtGáµWÅÔàö`²ŠŸ‰PåÔy OL+©ªÛ&'MüvµAM˳¸!y…ÀþŽ\Õ·WÂÿ­¶öñ… ;ôKì(ï®i••F5çÎ_ã8pCWšô›_ód“¿‘éàánCVúæ B&"ÛÀóH€Ñú«›þ‚ðŠ=ˆÉ¦‹C¦vV§r8ýÖ嬓_ødt†¤€0rìáK¬;HàcZÏ›K!ì‚ ˆ@†`µ›É8_º— à‰wŠÍ"ˆ"8'VÍ1²cïŒãR©æ´>}à*¸Ç§çÝQéÓçðGô÷¸!y„@AïéDk¦9'+t§LÇ%ö½´\~iÝ£wD ¢ßÛJ¥oÚ“Ö”œb'D@²‡@ºksÙ‹=!ˆ"Hs)Á†D @šËŸ±ÂHD %æR‚ ;!ˆ@þ €4—?c…‘"ˆ@J Í¥vBüAÀ 9v»œ“›æò'5Œ@Š€ùö`{Tzí{÷]{lE΄@ø¦›Î¼òJ^g”ÍDZ'ÍåuÎ<"€8G€}³Ó¹~jâÚ\ †„ n"€4ç&šh @r¤¹ @ÜD€®Í¥sõ—Ï<ã$œïüÓ?9QCD@\G ¹KJ÷ßý®,÷ûýðcTáp8‰<õóŸË (Aù¬RIDATD ;¸3iÝñòkâëÏÝ¿fÓ?^úÛÃ~dg™IÛŠqÆVÕh©¥n€¾ãV´©ÛPÚ)‡X–¤œhR¦œ+Ëš²$嘱cª¸Csà½ðÚkÙëºÂ¢Á×ïxåÀî½G|pÌšæ«J7Min§[óâ–i*¢“YÂ3·iJ|í—e(Òt—fwqšJ¨ògÎ2„”QãrÊYv'à¶Äå_öòz=ýúìljû¤ýìõ…ý†Ý8&­ê˜Ûö·”M™;Xo ‡‰”9¤Á2ÎQT›—éñª`©'ÕÆÈ«ªLÇ™œU°?~lÍ6)#1yå)ŸêG!A³â•T^r@­Í¹;47°ÿ•k^Øýëß¼ù·Ãgžo€RÎóÍò[`ºÚ½‡ýïñÐɪ~(”ÐºŽž£P¼é¼áÌ~±ÙÊÏ+7ßð™²úi@œÛÇïh¯‹k/›2žñ%ßa½Mx! Â-é·ƒ²ë"4A1ZÖ²?îˆù¸u$fM°¯Ì…ñ–„‰¤NäKQ"4cnoV‰”µ!ÇŽQMö¹­=fäÒ ¨U®y!w‡æNœh¯úÎípµáGµ/þýhûÕý.ÿòÈb ¹@ÀÙ +cïšÕ´Oç´YFEÉOç—¤7ƒ:«÷_šç•*cqWBâŽH•¶µL¶c‰¬im•¶8À„®lÚÞOö†¶:@6e)aÖ‰Ê>#ñ!E«}9Š$%ÎÌÆE’¤‡üÐÍ™.Í¥s‡0ärñâÅÞ—u¿sÔ®ó|}ÜM¢Áò\ÀoIsôO;g¡Æ-õp舲㚓A+º®1¶æB¦rËÊNI;Oì£Ë(ú¢atº ëEú¤•mBý«ímŽ·cI¼¦U\,^ÆØa¢G6­FÍr ¶q¯£á(ÙˆR¬%ãŸ>çh§’¤ ±7kŠdpQITBØa#Ú6njr„§Œ^|¨ÑCTu¦‘¦m×ümŒ£¡”ÉÎïó¶òñÔòaÀn~¿ï+#‹OŸ9£E4ŸÏ’æ ÔÙP³Sü¥ p‚Œ®Éܸ¥iZiÁ¾ |úI/]Òü5ètùeSiiA 4ïHüwæµPøÖÊë×}c¡ÑÈnX±Éh¦ÖÇ1m=@!ÉŽe$’¦:&ƒa.WÔªôéIjÁrlM*.ì¶ý*J™ƒø Ä¯ć”0k¥¬?ÔÓ°XêFØrHÊÈUB»ãÇÞl|$„Ä›²²2b:ÅãZÅMö’7ª4?džÉ3+~ùôÊÓ>O/?éNH^šöè‚ÕÕÕrðHÓƒ˜àË^ü[PÇÁ—4Mƒ/?À;ïß‚À/{É`¢È ä³>gî­­]¸p¡x¯.Qee¥eµå<ü.—s¬P@²@º4‡eZöÇ ="ˆ@R¸s¥5)—¨Œ ˆ@6H®šÓúôéOLÎ&¾è Èwà¬Ï÷Ìßiµ¿ØzêàÁ|OãG®†€;÷Íu5Ô0_DÈ#pm. CETHnm.Ø@,"+olñ Þ᡾ð$8¤¹,®D “£±§9ŸNyHs™Dm#ˆ@Fš êÔÆ^Ý #ÍeqÐ"€d`4 9xÈ%¼3ʃji.³ £uDÈ&!Bàuh.b¼zxI(‚“ÖlúBL" “Pˆœë МFßC=I8ˆ4—IÐÑ6"€dPƒäÜHÒ_Z8@€ûðD6G}!ˆ@#¡`èü9˜¹Ò –çÂá@$FšË èh@²‰@8Š„ÂÁ è#çèƒÌ=$âƒ_k@šËæ( /DÈ ‘pj·p°Ãëÿ|Äë¥Ï÷Õ4¤¹ ‚ަD «ÀVzÝ!D|>(ç¼ús„á…4—ÕQ@gˆ"9<%5ŸFà»ú^s”éà…4—9ÌÑ2"€d 6¸¸›Ï ?¶åõû½ðîñøæ²:è @2‰€Ïë…WwÀ?0èx]býƒ™ m#ˆ"à>”ÞüþžÝ»{ã€é~ŸOóùqÒê>Ôh@. þ@Àïôº¬›×OÜßqì Û ‚žo4¹ôZ›dêëë9rñâEê ½/ï•g¡[„Û~úÜ3|'ѾñùB¥ÊŠ•+{õìù½ï}ïÊ+¯T*äðرcëÖ­ƒ¼æTV: Þ×Í\c}v7 ÜZ‚4ç=ÔÉ?¶ì9Ü}Ì‹úöxâªNRÍýðãû¿xó–oXÑÜ'Ç?P]]PPpîܹü0UÄW\qŽ÷Þ[[[«jTÈè•V Áišþzg {Wh£Èw>¼3¦cñ ;DZY( …ëÛŽ*XüÒ·±O¶E­·=96ö >Ä5º‚"ÏxQjîô ­jGj6T½âQ)$’%ÌWV“ d†Y+Vs2J(é<ÀCxÜLæ¥ï÷›AÖ?þU0úþÊ ¥ã´7·U^Ïä¦çøg/}¿ôG%ëŽÿô«ô³›¾Ù‚s;·Êç_˜üæñm Í _ß*=6™Ô¬1ÎrÞŠ8FpƼUï‰4ç@ÔÌ3ôÇǺ¸6×¶rIË¢¦†;™ÑOÏnxnß•ËgSFÓiNÓ¬,Ÿ!¨¸Žd”Ðfò)·m{,úÏÙŸ6zÞ¹ôØ1½JèÊBWŒ9ðGã Žu¡“Ö¬Eà$JÔA\C€ñûãžþûÿý§Ï]/º~È­ÿµõ%* !k/}¿ì‘Ï>·u¶¨’¾[Ñ‚“s5iùúX)è—¾·ßÛ÷!I ðò•+£B*¡[LË€šÑ©|å(2IÇëÂÁÀ:Ó‰R5Vs)Àˆ]òP(têÔ)×b={1\ú©«E‹W,"> húÓÂ/ÜC]ý÷o½õ×|š …B nuN%e>LhñÎn}ôÀGuÑÁúió—¿»„@Ž®Ô…Lrë—_žvOðéh¾xä†ñË¿„ÌÿÍ„ßxîSºÎœå#¡—ʸs€.»ì2çÊ  qØË 9˜Åã¤5)Q9¿€?æ),TYæß?h>Љľ‚p°í¯D»“®ÉÁÜløÃ/­ŸõÁ‚âÿ÷ËÆÌ‚Ó</OlŒ'2¯ ‹qfÖOÿêco1Ñð‡é+‡?üÀÝ<ëòþï^Ô®e2æßZǵMon~ë+7,4 ÿ]ÛDµq›Òhb?Ï—ú %Àwð &úž†MìŠä:iÌ–¤®×Ý1qø¾÷?äìkÆWÇP!Ã'Þq¦yàaòXu½¨$ÙICàî¤ÍC^dëËæÿ瑯nØøÝN'€ÔyÔ8Û%¬$3~¡wÒ·u÷ë|ŸtHB')sˆ˜n&îÐ4¸/^aøq/¤¹¤@DåüB€þP§›[á·ç ylì‚?0›ï×Ïøç÷~ôQú':OÒw ¿ýÄÈc?¨ßMÇÜVÂKÀÉ;.S.†ü‡C†@’„ ùT¡nìýýoÑìxŽ Ò÷õ~¿0à€^3ê#cʇ¯kdÀ‡š{%-u~u¶£Á«C'¸‹:Ó1 ®Í9õò}.æfà£mYõ“’oÔm¯Ù¶æ>JF©cÌ ï[\Ó0aü?Õò“ÑnúÖm98åSH¹ð¾5Û´™ão|œÅ;}UËOF‘¿Õ¬˜`dJs5ª9f]ÿ˜ÏÇ$ŸQÚ¯V°¿®C¡2?\Ò4ø3 ŠþÒz<¡ÞP¢ eVÚ¸œËm?Þ»÷ÇQ›QJ¹væ¯~¥ß8§7À§½3c] ai“rÊFÌF¬4“x mˆåËW„ƒå/!qȤE”E›ðËÓ¡°çì9-“UX•‹po"Í¥¼=Dè,ø7OÏË Žƒ…:˜¯åa5×YFó@º<¾nÄ Þð}Vxâ»ÌJ/¹"ÍuùC@: p¥^à8Èî,¯Bè¿H­¢9§¬¬¬¶¶¶³äÞuóÛ#?‡ ÑMÜÏ ¼ècÌ¢Ï%w xvG(ËHÜw=/‡ðæ ¶ÊÈå#D‰OÇ&/›&‡^”®AÝmŒß:bð#5ª¦£Ù˜ÃÇIwß=iÒ$+O(Gr8Pé‹=û,> Îq ¶9+’Ê"ñ׿sI95Y–˜JŽºØ¨% U6È%œ Ę0©¤l\d´ r‰×ZÁÿÌÇÿã«;o¾ãvSž6 f4J4Þ‰°:ýà`³jÑ0©gþ°ا¿h oœãâNTÞÊ~% Õ'—ØÄÉ›hœñ£hÓ •­ö' t±W`þ•–ãC³üdJÆi©›tC:%tÆØÙ¹s'è{‡Þ|˯×<Û-aWT@2‰‘l³wb:·ÈàO7{Á_möb­J8Ár„}$IµÚS’2w§—Œ2…ß¼hbÂ!ž}öÙáÇ{{öìÒÈ[¯îìâL—ð/((_ðÀXö2µ*…V‡ïË­Yí(cP MY¹v"göhŠ:¬—ý½%öŠ·ÅNivÞÚ3ô“ÙÍôrªlGî¥VVc%[qeûVnÁʸI΃OȆ º¢æü8q‚Fš!ǽþúë`dèСþ«®îÿék®ú'Ÿ„Ë®#ÇŒ±ú˜¦ËÜì.Ä!Ï=n²£‡šlã;<#.‘{‰6Ù>Ó1ÌÃàŽd/¦Žò0É]˜5Ðä}پܗû5%%g-öUÚ1¥ÀRq0‚²‹Ÿc2û:K¬_à<1•3Œ­jÖJÃckyÑIŸÉK™‡Íw24xÝÝÑíX‚ÀZ¥Ù«•>³/¿ÛÂÂá)+Ž}†.Ί“ @‰I8PÔ|T vŒñþá±êÎåò8&ì’Pq(p<¯åÎ;ï Ãc5a5ª z®^³æÙ5kî›9sÌhúK ÈšÏ+ñPf+S…Jåq£rTùÑ û…ަV¦ceÐrS/–2¹Ü>;9_“¾•lPÖá8°&Þ…%ÎOZeGž/¨ÉáÑV†¬ivæ‹GxT"‚){ç¶CýØ0nÓÈ(~èI/Ió“ݨ舫™IÊ;3Âòb ²îb `ߌ•­«Á²íd×øê«¯®]»4€ãŠ‹‹áiNž§V?7ñÎQðøºcÇŽÁCG¿s'[Ú°3“ÿm0“‚ Ɔ¿xNò!ȇÐt<™>Ú£bœº’x°x0l‡¿‹ÁˆD#\Y·ÛXxü˜c—ŸøGØa ÊìLM&Ë2D `2ÈóûŠÞYÞjÊNÙÊ”•›ìˆÝe}(S€^à€I“&~Ätš'"©¬üD´"ÏK±,Mž2"–¦Wé©#VC5ÊX¸ùHÓN»ÖOYY¼gã*•¸6˜-úmù3æÚs«çÿã(%éß9]T§ô&ý˜2ôBÖB´Sñ¶¾¶Z…Ô­‚Ù4Ú\(œ¶02/ýS"ò™á~ŒʾZLmF-Ü»’n.ñ=U<½Òw·ÿ©zƒÇwÁX‘¦ '1¡r£Ñáç’ˆ½ßY“ä1™Vãß1;'×›ÿŠª%­ë[Á}'©‰ãßÃï·Àsà'­WbäŠÒ‚ DZM·ä³¾}úÜ{ï½§~úìŒÖ’$c¬š+ìØ©ÓsÏ-?þøŠvÆû4ÊŒ ³ÓÊà`Ï=÷xðÁÏ?ÿüŋϜ9sý† »w}(ú8в²=öÜëºüà«âÉ¿ÊбíÒ‰¹ÂÁxÊ. ø± 3ý^ïVj¾ Ä¡ÿʺ©†~•\‚*$I’·“TÙ´‰E¦Þ2EJ?L$?S?òÆ}·K£&«ž†Ó\4BÕtœ„{ávßýQoÒªë!Û%– ëÄõ†AàÊO½TË5 ¢@ã•®›•HRuâJ¢µ¡¶pÚ*B·= }h¸§¡rMéQR­Òßæ7ÚÂ#¹…›ËÀ'‰œ¦}žøAî‚–e¸U®m´]mNÇO´ V¡1™Ü7 Z&‰ë‡*b%®œËFK„âKO¥F5UâêgŠÏ¨ç@7]rÆé§ýqþ›6¿ýÒßÿî†õæJ´ Oäåå_zé¥õëßúëÿ[k•ÙòÑ=®¿îºmÛÞ]¾|9]µŽ;ʶ¯¤aJò/;Î"UÊêýéÜ›£½q+²%ÛwŽŸ-‘›?™¤ˆÿ/÷{ó¯F ϶•O²²Ÿò˜ }ÿi=°BuèxŽ4”Ca¸ÓCØìXŽ•ê˜PÓ‚TI¨ í”[KÕTGQ‰jJ•ÏäF 6G²²Ý»wÛ’ù§QŸáèq^äÂ釠žº”jÝSŠZ$™åQŸî ÔÚ"`€²"º j#r!:tx¸~EÁ9¡AEÊ¢#Vê64&ÝVÔ¿ÛºX´ ×­q¥·GûY, !5ò©·SìÁØé|Œ†çöBº¦íf¨kI&Úºú‘`Dßí{ —䌩‡†áöHCr…nCQy–’ØæB¶ærdé/“Úkÿþ7ýWYYA©Ñ5×^KsKœ*~øaîÚýüßþÆIR‡ˆ–ójc¾’œþ¦¹‹IHeŠBê¢÷í¨sk²¥`ÉiTóU™Vèm¹ì6ë†ÊòÈÝ:ܹ¾Z’kh‚2 …›¡[zf ÊnnGzn÷ùTšWÕL™ä6[JÁõEtzCjÀ !­y¿EU‹}Û›6mÇ¥@mÉy£åFôJÿš×2šÎñA§d¨±ehEÚÂk‘ k*WS/¥{qÝZ)KwT.ƒ¡Èû˜kxÕBL8(½FÇ‰Ž ×œ† êàq‡Yèº¨Ž˜¸ãÐõŸâ_[?‘‹(S ìÉ IÕ\+m"­#l“0¹†êÜ5T¡ÔŠšx µ;ªC÷ˆœoS¨[2Üÿ€wíº¿õàyÛ¶½µñ­×Ý`´*ׂô%³•Ü3FÙAP»lYí)£GÑÆ¤7ÞxS¥3ǹ¦îÊ“èÖeÊ”:RÂ$/’:Dj›dáFBÙ’{{«:çYªù’3h~ Ör‚l‰Ïm&AEQ£© v#ï(¿Ö M5­ÐdÆÂIUÔÀñ#2U ôÍßÐ!k>·nMSªšÊNV¤É^ÊVâD+ÝwƒwðåPdêM8F:´ëNùp1F‰Qfd:'“Iœ}øá.Éø„ó&Ê™8-—J”Åûi"mi¡FqZ„Ü"e¹|îg±Ê£Bn!:ØbaÒˆ ©ÅFu‹5ÛÍF…nxú®×!6îX’rìàqý¸ègH¨!Ò‘0d¼É©*‡jÕVå¤é& Á½Cä±]ÿ+óW°Û„„D94BWNeW.}ÿZ 50±UÒ´(Û*º_4–w¸Þ$OšwßLõ|Îy“©ìfKtšÖ„Dce·­ž½êÒ¥—X¼óÎÆMßp%ï’dÓùk¤~Õ?ÿ9yòäïÿÚN”õÚÿÚ§ŸéÔ©çJ;˜œIŠ6e &š¢koNªºö !Äå ª*vs'ÑHKh¨u @¤dkÎÌ&âÏ:ÐhieÈiÈO6"ù;Ô¹c LY}P™§FÌÁt$â³´†L½‰Ð”L´¾‚ýWÂ65VÇà4í[¥ûuçÕ8?®¦ûþÑV¬YZÒp½Ë¼±ú´qJäf–ˆf41úÈG()Ú½ký·‹ ”"IÂDaH¶$A²?¡Q¹¡FºA+Ëä~ü¹¹šrqå³8nT(½è®‚¶m´•)qóEõöqƒ }ìè…Ö WYG‘‹Y„®Õ’­˜‡äjÕ×02ƒÒðÜB&ôágÚw>¥vÔVƒVÇÞgl !ç¢C¯°PtJÝÉÅ^jU_½IÓje3n5ΠÖtIub ÚÍ'¹y)Ó)eKš*…‹õ–YHm‘…Gy’¶% YHÒüTé7þ{ÊèÑ”&ñ¬ÒAû˜äFœ-Ùƒ“&ΘxIŽ'™¨L÷}½Ñž„n–Q–ø·üøÚŒR6uoÞšaH&á×ÚlÆ Sÿ>ÏÿŠDš² s¾Û J&¢œxBIRÈ&ÕŽšwL4r˜1„š`ùŸq§µBS"5õnã§sãPƶu“Þq½7ÓŠn¸“XUsIÝ7‘«%åE’™MªÔ‰2¥Ž4ÃÄ ¥á»hÌï&'»vqûd¥ïç u?6­ ÂE©hÈõr?I¢—Ì-ˆ\_C= MWjÕO¨=-¤Iïe¹úd¬Ã@¯²°¤ñ#&®šØª77¦š”ÕV¬B¹QQ•knôí’œ´¢íj„ÚDH§æ†Á[)üÏSÑQ'\k>v£ÎE‡>E© ÷ëØ÷Žk¨‘ˆ­ê»†zËpc•ÕçNó]¶ 'L¡×»çÔ$™¤ùORJ–“9Í$Q†$Ù’$dnæDµ¡ÛS²³Ä"¹ÿþ¼˜È©Õ©SG“-é¹™gÒ#ÄÔº—T£‘¤ÓÜT›qø¹BÈ_´*Ó IíýÞžjbekE‡_M½Æ~’á·aökƒøÝžèø°+}±ñl¼[™_ óÀJ#u"Ñx‚9R'=lQ2•¶×Ò^ yZ§4Ùqš°>|r¶ þ?? bß´$§#šâäˆçŽL’ÄJ»;î¢Ì›¿:@ãŠ$T lIïÞÍŸ$—4‹ tê¶ §%D€®£*ÈièâŠÈ ïneâ†$ahhÉ`“Wwª<¡;©Ö{¢…å)aD®fV3LQ,1Ÿ¸ì–ßU|PY[‘B´SÉéX­¤Sª,:âAý¸XBέOçFã*kyÆÓô>„ò¤ŸÍ¸N>Ìmbs‹‹u•P³¥;gýDô¿4éÛš'©j!¶ñlš UÒµ7ºWÙähËK3î~Âè:þŠ³Ë»ð.͵éà†å×ÿ:uÙ5ÇV¥Š…÷^™뽩ó«Ï.ß'M5Ó‰¦#–ßð›Ô¤ï{€ñG®n»ïŸlxò¥× ÷÷Ú‡ ª5×À^›?˜3ZÈu•¥lôéeã‹3~÷”Ô _¸òÈž¶"µéÅŸÝó¤ç}æü Êî½'õù¯ÙÓúÞô÷Ÿßóÿ>}ÁW Áö?rçCõÞ€Ó¾8úÎ↵øZíø÷’»Vž8ÒÈ­pó˳þXë·vüY—~²»9á¸%-11 E3¨üQeþeÇnöb•UI|ùë€öÌ÷à7dþ5¾äúnYuïâ¿Y¡÷©ª í–ÙÐW ý[FÓ˜?khß69Öw,÷Á“L¨Jæ('ùîÝÿ£ã0 ‘Ä­B@®‹ûq¡·ûaM $w_© ¡S‘H×Bƒ!üÕ*ýoj£ ¤©²µÂÙjX/öí¬ætAuœ¸!‹«Ð˜ŒQ1‰¨Tf¤)Íi­ØjÓz5}µ aRC±C†.MЮóI«£­K­°ëÙ•k„¡˜õÔÓéÜÎÒ“—¸çQž4ã§×Ò_É$®þæ 4ÃDñ ¸i÷¤tWYžÉª_e½¿eÐÉPeS%Z 1{’Ê8Kâ;”íxmÑÝOœ4á;ÃìØaǺ?­Ú8øø)W_nÇXh¾.×Lê½úy·¾xÄ7Î¥ô¨Kù¹×}?N)IÆ×ÉßH¾oÏ¡CRûòtâ{õ¼õ÷«F_vÍ9”œQ5íÆ!L9{à>|÷¥OXvfÃã<‚‹ôÉ'tŒ¯™ñε¼ ÛzÛ×=ô«ykNœpåQ¼¯>õÞÚE³n[<î²±ýööRo½xϓ埛LåÔFÊ$xýˆÖ‡LðûuEõ‘¦´ýÕ§ª?áó_ãüŠnZþÈæ µÏ>z½÷ÙG¶ÜÙ‘ÇÜ*Ϲìðî©íÿY:gþãÝ/õñ½H×ÙvÁ¤DJƒº=å–Œˆÿ ñ‘¡Ôp(ee;Þxb^}ù9Ÿ=h/?6¢¥¥š4< ÙÏÛñß§æ.^¶ßY'|LLŒ›š‰Àqâ$Óô– ¿hÄ-åßÔNIœÌÞ·”_&ŠTËÙ;û'ýZœï?§l‡Ud Iòt-œµ;òÆU"…èi(P½¾Rp/·~à†Z‘qûqÜ:ro£š˜e~¿»ã!TVÞâA†‡Œ*ëðP éGG‹ª…ÂpG]ôº­hTnCÆÄú`b›&¡˜kðÖIB¶¤jÂMN%<õïv$$´Î[Œc‡®s»‰BP‰äIßüö)OzkÃTî†çš'É34AU½ö?˜¶rSZöá‡ö±ÚT¦äŒªè q![¹×eŒ:±5ÎoèVi’£|'&lüœ€²;Þ^ã8ä“ì[~¶É“Leþuþ3 §I¸–ݱÞ NÖÒæa’exe ¶qj† :¼µòžU§\öýã{_½ûÁuß?wPÓW›\u`bà›°x±) ïT—~ÈVu¡ 6ܼfÞšÁç\vô|BUû{ñIu Vo2zÔÏí»ÄfF¼ß-) z-ï±·1÷U¸Ìá±Hd"°‘uè°Ï!GWzk·î4Þè0àÃ*ø§&a’št k%äU›ø"² .÷ÉP²¾LÙœòpá:ì}ÐaÇx¯mûŸÈÙ쾓XOEßx L¥EÑ1UƒßhP¡ ^ 2q,£¢臭bOµŠ ®ZH²u{¯†¥€1Æp/¢¼ýIÏ-È©ëÇ…~˜¨‚ ý Ïô*’¤Ñ¢jäGË!eñìÖJ<*‘)sõ`v%°‘ý[×ÿ邨•ÿç Ø.hMÜÊ«êè©6ª!¹¡«ãÆ µ®m¸ìü™Ò§K”$qž´5-O {H7“Ž…\e8•qî×Ïè_¶ý¿ÞàOöÞ·O2 ºre{÷ìÍ{}SŸ×çÌy’ôîþ铃Κ|¬¹¯Ó^òì²÷_]ø«•‡N>±ì/wþiç­¹³Î;ášgzáö{ìRÞ§ÏŸrDTÏ#® Ù&2frLë<§1TCÅ·_þåý^åñµËž0ö‘=7?:gñZ£ç 8õÂQï•Úùú£¿_sÀ±ÞÓÏy¿S¾pÒÁÉpËŠ_/xV4û܇íçmYy×ÞðcŸ[n¥ž÷êý³½cXâ~É0^ìKmþçœÞ_"+$áiþ¸ÙFžw¾ñ—û}U\÷ùy33µã'ÿð˜‘õéÛ÷5¯üÜÏLÒ·WÝõàs¢xLÕ>±oYÙž~è¯æ¯ŠC?;òã{qgÍ8#¼9© B“ÓÑjQ0‡TM„î+)d¨êCÒ’Üë«íòÛ*ýêË…¹¾Š¾\ßÐ+U¹ÊzÚ’]+h[Q>yoNßbB/ïþ›à0ô^ÖeÑ©*HA_¥-wä¸U!¹˜ŽO‚¶«š¡놑DOœ¨ñš[ŠšêPA[4 iq|j²%s¿WM¢ä‰ "‰¸¥W5¹ô"ªéúw­¤Ì¶ 5]»íÓ®"ó«¿7¶.i+êÐí ÛŠFÆžR>tã´oÉv¨©×ÜB[”®ºú&’2½’$:±$~Ìý=Öe¢S%::#õ_øtï~g|müƒ?ÿٽѓ®;î@º»¿W?÷çŸú5“ yëk¯ýåÜžW7È\mnX |fÁ”í;èóW]tßô$µ}ÉdÔm¯»ïé~zY?/ö¾rÃõ½9‘úkÝa”uËÅÝþîë©aGðÌåFkîŸþ»•¬ÁyÕû:÷úò•{¯nÞ-w¯Üpýq{“ÒÊ%¯áÊkÏÝþìõ³~}ãÞèK¯¹Ö£mO«Þš:<õüí8èÒ¶í¯,¸ýѵ_«|û_ÞAÇ“w›Êp3ûì{ 7±ÿQßšèÝ2;5áÛŸê™òÞzÞtšx™·w¿Ó¾<î¡_¯úå1}÷zÿÕÅ¿^ÿ¹/_y-§m|ág÷¾x0ím2&f1?ì 1ã€^R©Íoü?¯ò¼^Ùf’Ô.óν|roóËw,.{ádÞß´ýßK~÷ËgM:ŒÒ oíÓozÑ—Fìµã?ÞóÈÓƒ¾0²û¦G¼Uuþ—8_Ù¼â×Zù±K†²÷åËËÎøâ¥”íxý±ûÖ :oÄÇ÷òvt{ë÷ÿx}À‰¤ûö›Ïõ=弇æ.2Ê6¿ù¬w̸îTyðˆ 9ÒoüeîÒuoOê­üÃcÞèñÉÅ–U³¼ÖwᢌêÁ"ô6¯üíCÿêýùýÿûÐ_{ž|öq{›‡|¸ëCæ0½·üøœæ–Ì{›RP𼥂¾9Ý2‘~¨÷ÍVÂy«}2µé鲨imô‚ÊH+UÖ‘ } 5ÚªšÒ¸v³)ƹشXCû^v/· ò£#A‡+Q…¦Œ¨ÐÀÐñ&á…N]aÔ­HB:rªU¡a¬]ðÕ¸ª#±‰ŽÆ=%[7aŠø´­nÓÜŒÿv é»U•*H•í ¹1’DjŒq©%jÊ!3RUsõÝv£ "¡Üˆò!-ËoW’dHò¸3¨›‡${÷÷ÝïvØøü¯›wþ7ÇôÖ‹+†]8ÆÎõô>ì¢a‹_xsÌ šs ŽÐlI¬ë÷þ›èçÔ¯Ïî{÷;µìáMÛ=M•Òܮشý¼ò}½Ô>å”»þéëïjšVú Ïa™ã`¿éÑŸ´×°OßSHðåkÛŸæ’ºñþþîö·6?J¢ßüè1_ócïWRñ÷¶ª'YN›ƒ÷³û³ `ÿàÎzDÆ•¦H/￵²Î[S÷kšd’£|ûûGöè,ÃÛ&XF^þßÜ_ü••œvñhyÅøÃzPÝæ7j½ãÏ¡t‹}wþøQÇy÷ÿwóaè¬_Õñœy{}üÈc½?nÝñ~jÍZoÝÚ{ïôì·}ÇнÉê˜q2{dš¢i—íÙ½¼ß«u›w|ðŽ7Ÿí[~9rßTž÷샳ÍDTßÑãO4ÓM;^ò¾%¯Zß´‘~Ëúç¼cÎ0xÝûê÷\+m©[罺nîl«ç²}ç Oœ3zÕ¼gןò©ž}1ÿëtÅò>t%R½uÓ£ªCRtô’釠ûº r¹C¯fÔ›¾õÔ•ëh‘‚ÛDÑ)²€äºÉ;+6¹úîGAh<¸DµŠ„î@’SW3ÀÔ*Õ×-¸C.êŸô%$©Ò^Щ¹msSâSLj‹¡˜hYb“?¼]mÚ*¤ÒªÐ-¸IY%n• Ì,¨ÈV$ OB·ö%Zwûîµ?•‚Æu%]S·«Ò¤Ü(ôdKW"Œu.BãÿµÎOM2ûsâ-lªÔà5Ð>[z¢ =D‘oær·¥޾tô’߬Xÿ­ýÍEóïqæ¾+ŠôÊe6ç†ÄÀe>µÿ˜;µHTÑø…Z©?<äÞÎ~í±÷‡õ~¿öÍcð¿pgÚ#'ž™þûÔ…ß¼Žö¯†³'Ó oh÷½‚JJ0âʸyÉÔcùûs~{NöùÍíýPJÃ}£/[¾õÚÞÇ.’ÇhJ‡¸ä¤ÍìÀ¬(›ÇH‡SÞÀÏ]rjɲL0L×4åc3¾h[÷¹—nÖ¬O Ç1E^¨6ÑØÓÝÊÊ2göÜwÔÒé£ýèŽ;D'pELüDC  aÍPEÂg¶BŽúÉF’¥¹FM¢§$ÑþæXçv[7÷Vî{”ôÈ}lãó·üm ([Xâ é±W玺âîEÿzǤo¾ü»C8`osÿe“½÷=¸lå‹ÿ}—v*­YH³;¨9 Iþu S¦—ΔîŸÕï¤!õæËw“ŸÞûZŽiÙlªÿup©Þ#¿¼õ;ܦødÕwßùwjÈaNÛë‘ÎphìÑ(š.²7 ©¡¡ç!'{Þµ|ƒÑ°¿äÚkð9ƒWÏûås$ä–woxîÖ9:ó=L¦£FÓöJ”X@)‹/+‘hŸPÿ§§^}ƒ§;“ç0JwŒyˆµÉzø9&­0ÒÿLK,ØÝ­÷±Þ3óÿ¾‘+voíoÏzÇнxë®ßd„ÿ~q¹7ü€níVÞ÷Õ¥µÿyŸ°†11Èù·ÖØ7Ÿp®Äÿíyа£_}ôÏK^;ú°÷4=lGùÜİ»aûö^ßÝ8£Úüærƒa.}¼ç_þÏv­àmLìanýû¾öè3¯³”ÿz¦öØÿرŸæýs£ +—t·i®C`;^éí*ïØØZ6ªdy17g†WQQùü(†^ä7Ò™‡}~[,Zo‚BÆ€^n%#…¤WÒij7Õ¡Ûñ0³Ž’ŒLqåW×CH.}ñ…ôQÊÖr*‰!oR«Ÿ–¶–oÃöS×ÕW½ºVkÅÖmB½mÚ´¹[×nï¼³íC>Þ¹sg³Y×Ö¹åª0¶ -ºµÒÙìõc5c…±Í…4iÓuç|û{ïí·Ÿ"é˜Y%fGßÔæl‰XÓ7ºhÏH#¿ðŸÛ~r³è¼ô{öNuèöe£ø+Ú£mŽS'ÿ |oJŒ$ƒhhè5ä‚!ß͵CN=dÅë|Õ:øôèß³ÉèÉ×õe†ÔTçç\vÊõêç”Ißй¡r,I7XÉ”%Á‘Æä•¤^¯á×\Ù}þm?ý¡_qèùßè•êÜëìÉ›n„2fÌx3ÎL2Ã÷aužêõ©KF>v×o~bWàF\ü­£{íÕï´oNèýÓÙ?ý‹õþ™ ¿A;Œ [[TìÂ󞺧æIQªÿÅýL2NMiwjÏð;( IDATWŽðýöQê?æÂQ¼m‰ÿG‡Í$0ÂÝÀ àñ•œà˜hIÒmÈ#7Üó§;Ÿ1nú|ÞPÊ”vPUŸ¾oýéN³ºïˆs‡t¥f¦ú8,–ìqà'zìÁ?þŸwÔ˜‹>±Ÿ×uÿ£=ïù£öïJOѦÚà³X35qd,+Çl»gÞ_@=Ü£÷§O;ê÷ýñw$ësÔ§ú¼°‘ß§{xô‰‡Ì{|Þ«¢ùñÏœ9|uó—¾dN<òÄ#:7˜ŸÌõS")šWó67ÿ×ÁM!eèsH­QC¿#ø·uÐõ Æ›ø‡H¤*ôR.qè•ÔÔs†&¢ÞJBÒ2£:z]ZN¨ãzªW?*IE!Mu2üä5ÔYwdÊèWMuB”dÔ³†áŽRú‘ËÛÁÜüQ²rõ©,ÍéFât›Vs-¨ŽµM_ÝÖ>jõõ¯TTV,Z´hØÐ¡C‡JÁÑ7ÎÄV”rÂ:–:å÷{prÀþûqøa|ž°æ¶âøÈ¶Ú2ûÈG8zûí·_xáoUUc^|QnXiZ”Nu|øá‡{×]ü“&öqÝ4Çæô+qü+æg(øÿA)mÛ¶;› éòKÒg[¬e‡Mœ/Ÿ®9çR+iˆ©Ó|Åd#&1‘ZÎPdòŹhÌ%á?&ïŸd_A•ŸÙf¹MñÄ^‚8I&#ÆÔk°¾ràИ‰‡ÔÎÿ>5ÿ•gžpО’_eþM7QGGd©·ÿ5÷oôyƒå “únq-¢åØ!»uõ=l:ñs• â‘ Íä@4Æ;ºéص‹~úþ¥7Ih‹·9øVðÿO&¤#lÓð:Ѩ\e!IT!ÚHZ@t8‰D塺 ZN²’ª“ØÓV‡}-<ª[¸¹F9Ä~P®o¨VNÝWò{*í†:K>£ÝÏf e3cu¢B’hæ`Ê|«½êišÜÜTÔÄ-»jQAá†$½zõúä'‡ýõ¯ݶm›>‰[|Š&ûômT’XˆKŒ2$Y¡†ÝÆVĵ¥ŠéÔ©k×n'œðéÕ«W¯ß°ÁuðÝ©WŸ{LÑ€ ;§>r%䋸\áy´lGO4?ËÅOôó ãH²… ýŠ—…ÔNtÚâ8Ý:È!¼:I† Îwˆ:´©=·N6§1SYt˜T‰ÿ5326[2UVÁѱ®Í?ôbc0öÁipb+Œ ȊĘmü#¨õC—†4î]4ïDËj”^˜†Ø¡kìú |*F熕/ôé3ö¡ÆèŸ,bä’o}óEïàOwáŸÁušæŒÇ_“<‰_Ía¾ Ç/’A‘ĬIòoÆÉ׃4™„*}— ’„N¥Sº‚B+Hur)åšêµv b¨¯Ô®U+v­MG‡}!Z)ZŸ¡K,q†F…Ž‘»}É0fÄŠ^õ3„ ¢õ ’¨‚ëÁ5Ô`Ô¿Öj§\‰ú¡OwR;fls¤)Òjý?¿Åg¨ =uåRæ–rª:ݸqã¿þõ¯OúÓ]ºtqsð´MƼ$–Œ+Lš[âΦéå|¢=е\þÜó6lˆ=H•ºY5ÈÓ“:ò¾žSj°?§k“¡Ä%Œ)6 G(Ã%Pt±QÚ->ÞµÆãfÓ ??ñó{.?g[4=§ ~á’ÉUèÔdM”3É–u–HþdÍŒÍkŒ¾¸1ÿH ìǨè©ï›"«!1¤wÚ˜ÿ¾Ÿÿ}Hñ?üàƒŒP½ûõå˜h\xç•…O®ð>vÜÈýÊØ‰zPÃèµq|Êåþà­ç–>ë?uèI§í×áƒìoºqTfRNéøh ‰~1—þgf’lºäçIVŸ™Ãi3¾˜ùM6!…x/+î'8+G"e]O£VÅÚ¿&Æ%LšhÜVÌ¢ï}ùÄÐ=u«”a’á¤NÜa&娡‹Öm]åbB§R’«PpúU–Y"s3ñÿ¦UvOÉ3Ÿuù¸N÷Æ-»)«Ä=¥²Ä©Mÿ÷¿oÒ"ÔÚèiP•ñn5 aÑÓFåQÍXI(樎ÜyBQKªD÷0ZïàùºŸu¢™ $©ãnþꭾѪ›ùQ8yxtÔon÷öÊãnœF4vˆNØÚ?—Í ñ™kN'¾!ÿ+3Ft¯¶ rNd¶6Ép“ÁmìܼÉš}@F!ä– Â0¾ôMb‚÷j.ÊbA×I iV¢J¯û5ÔÛ½ýý÷Dt´2p¨"? +ètàˆ“$™zÙf1¶)†¡#FUÃ÷w˜Xœ†&±F¼ ' “¤G&w2ÓK”'I•îTCã,¸úî;m£§Í±mÔ9šI@®²û‰LÝS¹|Ñ‹•H$®¾ø‰mÂm¥™]hyó¤¾ç7½ äÖ}3æ·•œ¼¹T¯ ^_þ6ôªˆBãAª´Q×V„®¡¸mNÔBBõãv'êÜu¢4$÷²ŠP$¾B0i]*«‡Àœa¤:ðŸÆÌ?¹-jl˜ô…t´SR¥\™¸UÖ!]‘Æî(!?QoB1¸UÙ”cÛŠ†¢æT‰nQrÇ2)ÿ=3ÁåÿÔwI”:ÒO¥E=Š$›‰¥Èœ…nåRÒOhÚÉ?| 7u Ïs“÷pjáã– ‰&@˜ƒÿ£’9¥lvÉ‹éÿö”›5»fgÓ Û°¸}¿_‚um‹é½p0«šµuó­¤Ï¯ô«òÀÁ'Žl®¦˜‡Þ®OƒÇŸY Vâx IÞ¨DÕ²ö¦zL5v4¤ß>݆BïöØ~eˆ3VÂ& =æsÖ r½ÄRˆ½ânUHM܆š Šçî)šk>÷‚’·ÐðˆJt›LqVd‡ÀóIœÙDÊÿ‡9q9)øä`í$„†‘!ª NPU´èÊê5¥‚œº—[ËÑ.ˆ>ɳÒQÅ)Ñîdè{qF^ˆ¨BW9ÀI?¡ u(ѺµÜN!ITœ¨Ð½^I1ŒÆ ¶t I˜´§pì)Ý×9çoä2ÕŠD/ r}U…h—ÅÄí©(ÛäΕ1…Ðൕ¨·P•6êʳ,Ç6²Õ{±I•ü{˜ùÑRΖdɾCÚÓÍ;»©—~V“±ÃÑ„I°Æu æ~¯Ù@œ¾•iNà&¡ Ãm”s Í0£Vþ£D‡þçc^Ó»µ)‰žšÛZúÇ4FäÔ-ÏBùr¡êæ@~k~zdÌÙ‰´q¤P¤ ãU#t{Ae=$ž,O]ÃFËÆ"5š¹VòNŠè&ޤd)Ã,8$:o4°¨‚¼ŸUîÒ‹*CR„躻#Ê=Õ²d„D¯¸Öf®Ò¾‡Z,B&†êi£úMSÐëÒ´÷fÓÍl{‰ÅDßûª?nTM ÉO¬[«\?b%1èu{‘4n]*K´Ú\ì(¥ÏHRp&sÊH¨¹œÊç0ÝÚííÒ|¸²ez'Ê­«àvAäbK I¦1«¦sP6A»ÞBeÒ$‰6ëÍ5q[Éà6©*+sƒËù#¦>ÈpQ¡Szd×jø,èa´'±¡PÎ$=­u³œ@!‹{d(Ÿ Ûh+*1Ùˆß5ÿú§ô/,1Bÿಌ-›*ùËsFnôÍ!€ä:|jR%iÀêvnšÅµ¾¹TâÊE¨ äV€[ÿZm4ÒÏÒN¹¾±µ6×<¶M|E-ä9V1ùÉŸÁeÙ²<ýÈÜ‹P`:üb€ÄöÁ6Ƕ1ߨϹ¦¡Ë¤ã?¶@&®\Nc…vèšwMt$¨$ÝhYѾ®}j« ï»Å£×]ü‡8H¨¡ËêêDB]˦³±#V˜:tÃP·¹PðJLä!Mç”ïË’0¹&n»R¦O`rÅ=2w°2~Ó˜Óô›ˆJXÇäVÊî«¶¥nUM«Ä³z°L¨¹ŒÙRÔ8”ÖÕyl+ÑÚF%n”mªDÚtPJ h©é߈¥Ÿæ4çT)Ãm:önƒNŽW­DSÝ2IÒ«B§&ÑñÓ5—¡cÓ#sbÆ’%’Dʽӓ¡äI¢is&“—è8÷¥663.5H鑜ªÐ(°W"õ5TÕŒJB²}ûUUUEåÁoºI]ûœ¼r@@@ ˆ&Bf[w†í#íº    ÐŽ ÈV6 {•X’Óþ©vÌ]hËܹ¥ð\[î7ú   Y¯=¦mëö¿Ÿµ(‚€€€@›&€Y¥6}yÑ9æ@ªÔ<~°hÓLªyÐi›î2:   ÙÀ¬R¶¤    Ð Uj‡]È–€ÿ 8¬ÁeK z   íˆ@ÌoÀµ£Þ篫O?÷ÂÎ>hhhÈŸKx*R:tØs=Ž?æ¨"¯Ùaa07!/6ÿþ-^ô¥R¥<\½'—=ÓµK—ŠcÞ»sç<¸ƒ‹â&°ýý÷_üû ºèŸ­<®¸#mJtÌM¡›Ò!Óû6”Î…ÍióóãØT‰~Gv74uø'÷ÚkÏ;wæ`ÕÒ$Ðy¯½èr?úä_K3üF¢Æ`nªKœ@öï_üÙPâ—:?§ü8¶×öçrcë Ì’ýRLçÎ{!OÊW©«}ðÁt¹£?=]êý’ø1˜ÛÆuD/’dÿþÅŸ I KNž}~œÔ5û 8ú|”#Irh?äÏJ­ÚO—ÛjO³Ï“„Ðj‡K2€@@@Ú$Øi#»W éQ›¼ä耀€@®(a*++S«`V‰*rõ%ú ü£9ædKnšæ!«‚:O`å}S§N½o¥#$IÍ_6¦ 6HÓϦCÐ)úÖp‡_öCQÌ[µŸÌ­Šƒ´7)âTI§›š-ѧù¸qã&˜#û{€ö]Í»víJ~è5XÜxòî»öšåÜ„¸¨>Ô’évÁή[…ÖÒ¤(¼W)§lIú(ßfަ¥#jN}&'ùí¹{›É»ó ¡6rtbò³qÅ˽GžÔËZÓ™w؈‡y/¯pç2øFU‰wMÒãê¸oVì3s+ÂGÓÅN€ó…9›Ž¿Òc½úpF‘¹õ‹\=øô+¯¼hx÷îÃ/â2ëçTK)ŽŸÊ4×yÏž›ŸNOëŸY¶)§hJZ9øœv#§…8ù4W[MGdí ôW2©‰\ô¥vΜ9R)‡éÆ ¤²w®šÑØ4‹j*}“,=¾ò¤ó+WÐ6%™’ÇóJ·²²N85µYØå‰€ûiÛäø ÕÑ!€BØc=èrçúˆBG•/ÿÌù" ?ÅI Þ¿ü+$ü,¡¶{OõpÁ¶nz²’dKv–©í_¤¼õ°cÇŽ/üýŸ:â0Ê–ò掊•ÀŽ;érÓE/Ö›s³ðÁ¸è dÿþÅŸ E1³ °ùù±I•(q2ËrA¶”mÐcŸ­8ö‰eÏ,}â)Í@Á¥  wJ‡N¬<®Möƒ¹M^VtJ dÿþÅŸ mfØdŸ'u9ýa¼o‰6*µò^¥¤X‹YÞVoœÅ̱ˆsÀÂmiÀŸ ¥u½2D›}~œäĤJäÆMi\ýP";f–W[]..¦°Iø<‘m©Uô¿üª‰Ëx$ˉ¥Rëâ(f鉳­›&›Ìª‰Ü_‰Ë[_üñ¯}ík¿ýío3y¬RS½xr9Ï6ɺ׊1šlÔVOóætѤYcÊ&˜"•k«§û«v™’Ý®q«¾fÚ¬ŠñcíºXíŠ!Ô:M‡%û”Pƒu;Òœ;Þ¬å¥yÓìRžø1ÝðÌJ_0ÃFDLO÷¹¤+†ƒ-ésžª®Ý­[õRê/·ÙÜÓáLµ~¥cP½”4Ïí-Ÿz”q† ¦’@ H€s!?/âfü8ÚÏm~®MSžtÅW|ò“ŸlÄyíªº¨Fýšž?ÛdÖ½|¥ŠsÌžªq”XØ´…Ë+ÖØu±Œ Ü^e¦¶Ò\iXf²§¬Œ“·`‘ßzŸªÆÏšÖM!ù] ’¯(/jR>¤bV9Ƙ”¬híÓg?󻬶|Õà_mÝ:ce7GMr?¯ÐÑݪsCKiTûÀ™fýnëýÞt^¾£ÔIEd?jÆÖû'zfœá&âÿ¤^¿'ù“›E%8ÈQ¬y’ì“J´8v|ŬE·;¯ÝÖšðIìT¸‚óÿ˜$3e|=ÒfÂ6Î{èh= IDATyº ïø¦½ï¬¿€˜Á¶$ªÌ”O·nœü¤imý*oâXIrÌÝêWœNq­5§É#®[ûÈË'^•´‰§ì÷8•<   áŒ(xX@!¦”²Í“¸o<åBKiÁ]¿¾¦†2§ƒ†y~ Åë^ û™r¥S·‰>ýàºËhúënÙ…ž`BùRÝŒ IËÎWÑjÙmÝMö™(SN<±„y£¢½È @J€›߀ÓÈó¸÷ÜsÏ}øá‡/¼ðÂßÌ1qâÄL|ªfÒ·ðWŒ‘/è•Ñþ£±¼V5S…¼¿'Û˜L q]!Ü&ù¬¶Šç~̺ÄÏšž,æÅL ÑâŸnëÖ~DLüÇ<‘×kÚÃãúâÍ^([”x‰ÎŸaB¦Ö¬»ùGÿSΞ.qÇö*¹4P0ÜH³%ù 8ûëo"ÍãS•¾cŽøó¢Ò”°~Œ²*ý²\l9VHŽyn%"קƘ.ŒñÉšC®Z–š™Þ­ˆ¦Ó#ŽRõyؤ*P #k“ç£f¼pãhZ¡ãÎÑüÓ’ô GR{T·©¦ï4Á4cÔåKî_ÝÍJŒ`ÔØ‰çžK:Û&¡S  Í" )»kȦJäX³§<Î*5+^·/´{(ºÛ:]ÈOQºU ƒAÓ  mˆ€N)I‚Ä pîÊçPyܬԆÀ¡+ÅE f¹­¸D4  ¥GÀ¤@ºô& /ÀaV©ô®%"( Ðîí¸ç*a¯RaÐÃ+€€€@QðS Í–(Ú˜mÝØ×]ÔWÁ€€†€û#oiÛº©9Y–i6+æÀk,}N8¡ã?þ[á«ü­K®¦Øã£úôÜç;Ÿ–¥¹¦@>W©ÔVàè¹Õcf ô+iùzœw6Tƒ†=~.øÝLÆõ5•üØñì”39j#u”'mÛºõÚ™ó»tízÙY'õîѵt,ÝèÛ±ã~}”T>\À´ë7oûÕü¿Ð-æ†ÉgeÓ]]XÓ/Á‘•}¥Ì'Ñ«»8—ÓÖסÌcŒG?=ËOï6?WUEÌ´!Yå"Ùk&uÔfHœÿL¨›Mþ~èv’g‘7?ÂÌþ‹¥ö­w>¸úK'÷èºÏ»;>,–˜Š Žý<@Šà: R%Ðk¿._9çäoÜvoö°+leeš?l¢uÙ»+ ͺUµCÊ%”SZëÇÐøÇ~«§-¬oµŠâZ4#ˆ]»w÷Úoßw'E6D$€€dIà½vÑÍ…n1Yê“Zð¤€2ûð¤`[wéÍ'I¿ÍoËN¨©÷)È¢Xðs³þ¯Ê–•M^ltHP9yr%±(ãu;Õd¹ïF˦°¸F´µ:#qõoÚ£é&Ó¶}€m(¨õ+ƒÉ‹Ã}ÉØnéWòn:ü—F€.*˜€€4‡@Ó~ƒÄ]g3³Jκ'L%¶U‰‡]GË_eÕ²S‰NyΜÿÓ³”vL«¹ªÊL;Õ®R—JQ‰…þR$RÑ„£¶zÚxÖθÆV_3mVÅø:vžî¿¼zØ¢Ô2ZdóÊš´eÁÅ“yÓRj™ „²§ª)žìc2"s¤÷Å Ûè?4îhøáH'&  йÝWÌWàhvƒZ4[›T©¬¬C‡$jh(ÑÉ~³ý‡s‘²ÉÑ}Ý25Ãý¬ð9µbüX?iÅŒ9&¿2kl ê¨àÚð¤T5 hG¹®þùþë׬ð&]û¨â̹¶v–5'ã¼ú5sk']£yRã±µ5 ¤Ñ+ &Q&€€@A PFDy‘6aR%sHžTªËpÔSæÌ˜[¾`qÚWà‚MßTš mRSo\È4ë/¾Å7™þ•½ú5ñZíCÊɺUZòn7•¿ðø¥ö×ÝB§é8Öþ⌣þxF ÌµWï}Ñì4µOÝø?_^’?‡T©} ô@ PrMldV‰’"Í–‚½J4Ý”«»Bu+'¿‹kü Fõ ç;¼­ÝôÍ•™ý–©¨]E“Ft,^ Ï0'µsšPìaÒ8™"2 óf-•=^¢K77µÓ‚]V”í_‘.i¼v¯Ñÿ«Þ*IeT#~³–Œ˜±ý­ôßzÇ^ÿ—³Ë“í+€€@û% é&EfV‰ÎÌágK¹­ëµ2˪A«dQ‘â°‹`ÇM3†¶xÊæªÓÊy«bÒ¤Šh¤´'\5«h­lL'I“&M t+†­šPVÆyùË)Sò¼ª™u3hYÐì¡çù§ts©õWàÌÓ”e‹V•Kz3«Ò"Œv IìÐãÉ%úÂiR§CV¤•$ÙŠÓóè?>fñÌte$Ü=s:ÅãÿhSW”s×XÙèp5éÔÞ©g¥+Ïòý “q]‰Ã:]f+jµQ×ʯ ‚ºcš E¨­´táˆ#¼_,h£_›¤¬Y‚ºdj÷›þxè¿û[ŠäS?þûüËxž>ÿú£Ïº‡¥{_7aþk·–PC~¼µ¿<ëèoÿë¾8gËí'z¯Üyêá?\ÎçÌïñPÐ.gã pÙP‚€@{&Чû>Ñî¿¶å=Ú;{T#N¢·y„!-N•\/fº)'·qMNFy’ÝÎR¸6\ÏîWäòÔb\æ)²ŒnüÇKdTjV击6¾'ϟܵÓKmÿÃvœë)žýáÊo>ÿïŸz¹òè ·-¸ð¶JOjOúÆ¿çî<ä–~O=r~_/ÁÏÒ=ïħޞÙ×#ó/Ö¬Úÿg?,Ÿûü¼Q6îÍêQóñ´/Íw  Ð6 <ÿï·>„Ù$ñoÞ~?š}·M” ~áÍ$DÁ¬%Ivgwö.¡™þŽ^u-¯ÄÍÌþ x9µPÚʼâ&ßÁ¤tØŒG›´ë)ŽùƤ“YíĪ3½[^[×p|_·Öµ"é~^­¯÷–ÏÿÌ~?LT5ŒtØïÇqÀs¿ù’ìøµ[8}&E ‚â$°üµÍÃûôبœöÉ™Ûük“y¯ƒN,©Õ‰4¼ÈTœTZ(*z*SŽÛ“2–ÛOšdpÔ6«hxúÉQ¿>GqÙ>¼‚SœCO8„OEGäZŽ«o–÷.¾uÝ­ºi­Á;yÖºIÿ¹«jxŸçÆÝµéêÓü eM‹$„ ÅIà™u›Žëד^C›¹eJœ …ó ›*ɶnê<Š“¢jëhàí¶£¯ßÁƒŸûÖ7g?oÒÁž÷ô¬ïýãü{M¥v›}Þ4BwóÕr´ ¤\}ÏëÓ¿¿÷½ßþö«Ç^’öÔ€M\t_jÌ k_ÙýÙtýâî3)Žh€1ek7F?3sÌj8âÝÛ¼g»š6«TÄ݇öÎ;ïlÛ¶mçÎá œç‰Àž{îÙµk×.]ºäÉ_nnŽÿѳSÎ9ö¼þßc³£~tß¼‘YØ<áüó¿5¢WÍù÷.ûQ¬þÈo?þ£É#Ž­¼Á8#µQ‹+¿øæäâ[ÖRþÔ¿1YD¶AÀŸ]2©’Ÿ7éÜR‘÷qË–-ï¿ÿ~=>úÑ=Š<ÔÒ ïÿû€8ïÚµ«{÷î-Ô š. žß÷ì¹ÎÖ†ÌOŽøfýšOÚÍ;š´‡ß°á)“ù~\}ãëKY©)ñ±ÛñTýt{bšˆxPÝV+8LZ-4  %L ÇÕ2Y]ó—á8C2©’³*]¢+B:Û¶n=è ƒi=ÑÞ@‹0ÄÒ©S§ìßkÿ7Þx½ÅR%Ø—8`e €dO Ç8»oÛú7û–ì¬R°W‰§˜ru›}ÀùÑܵ{w‡Žð×v~h&zIuìØP'Ö绂ò~\Ó(T0‰2@²'Ó¤’|š÷*‰™y•½Jœ)щ<¤2'§ÙÇš_MNèìbÍ#_ÛkÜÖûqÓWüåkôTÂFW~~Ò°?ž¥r¼7·]/ë†ã}e'¥oúDsbα×ôkÙ–-žU*‰Á—ŸîfëL²%=ˆ#ëô.ÀÙÜHŸ«änöŽ|K.®åÖ–Qœ';÷“<þÕÞ+?qØ¥?;åñ,’¥þ_}ìý¯rº•Â%_ï|Ó'Lî‘òl»ôÀè¯w¶×?lÿ¹}Htðp‚ÈoªûÜzíuhÁÄ¥S§Ž›ß~çt]õæÖ¦v¯mÚa®m^Wô @ E 9°Ý\èÓ„ÖtK’ýœ?Ÿdæ–š|'nB M6á”AWH¯”5ñã¦úåÛ_üöM‹ë¿òÕ<ÿ„|Є¯+yûË7¯8ìÏÜ>²¹RlM&˜…a …Þ]ö¸óÏO^:îÄ£ûôÌ"²v¤ íèb£« ù&°å÷èæB·˜œÛÕ7߯¦Jr,Îåä²5”ÝÅw®Å//²ïMÞ%Þ]w ÷îí£×þräáß1¿ôå]2ÿÝþ Vü÷ǾBIUP{ +³ÖÚ_ž|øÕÆà’ùó½³Îº‹J‡íóKæ¿s»ÿ#fKW0ÇÓïÔ³†çÁ%5#©>ìд5ÿìùgq Ãoþû£Üj‚ÚÍC¯þ·U~óÍCµÅØ&¢¶i¡ŽgèµÛeAÔ¢{Ö®ŸtÖ5¿úã5¿¸¿%wGñU(îcýHó´ßwŒˆ@Š—@§Ž{íûÑi—ߨÎ&ÖÐWÜüY%Ù«Äër%1§Ä•tV‰S>¥¼à¦»†Ÿùb_®JyËW zqÛ¶þ^Ã#Wþ!ó¶-5Į#OþÅ‹K¿ÒßæX[¶p:"Xz]^sµedºf&ì|ÂÒÁ‚¿æ:” P14pÓ×î¼úÂb1€€@{ `ò N„ÜÉ#N•ä”R]*©‡m³:êÒò©GvÊ×pâý[/ïÇ$~æ)¦¸¶n•7ñª‘F½ßåWMœº°>•êg2B’½BµËg[sr06õJýË'^µÄØÚÃWV1¶¬[Ü?Î!+ ¿ñW&0 iWÔ®0Ž;Ñ›^÷Jj¤W·ŠL̘N9ÞöáÄŽD{}Êàá³Ï5ø…%—çyñÒg˜øoŠžtÙ­[buû® 8íz -M@ïþš-ɬRð`¥’x®a£_öÝm¿ÇN*Çüèù‡/ëghZ) iNÄœð SÊÕ6'¾OM¸oó­#ýk±{ÝW߈o¾ZX¸nñüå‡~«ÏîÝë"w?ã­[³ÒKUQû™ÕœðèGdCŠÆœÖ„Ûµ ãi‰zðF,Þß‹cœñì-#Œ¢¯Àµ©kŽ5Õ½z}óQZ$›´ðÞC} R#ª.~ŽæDÏ3B>n)ö-ë7uHm}蚯²â±×z¯(ƪ »÷âÿ3Á5uÆÅ¶§YÚF;’ÜëG¿)=¡¿1‰— å(Ϋ¨@@@  Ì}RæŒÌ})+ëÐñÞ{ï½þ‡7ˆˆ^¿;õê)S®xíÕu™ƒ¸ýŽÙ×^=%³NþkiZ,•ª««ëÝ»÷ûïïh†ÿǯ꽨jý-#šá"kSjë§åÏ,œÔ7k‹âPìÜy¯õë×———s8†|Óâºá¦š+.ŸØ4[X€€@ËèÓ·_MMÍ|oê6 q×ýàûçŸ~ÚÃüPšxGl™žh+´`Ôô_ø»£Ë/k–‹ì§ÍC²²–½ 4A@@Zœ@\<,@Ö~Ì O‹G–cƒ:u¢$‡¾I¿{Ÿ£©ç­ûõ•?xÞ;úúe?é×B] E5¥96™Î™: @@@ ðíë6÷l»¿[o„,§É&® ¶~i§èÛåï¾óξ]ºì±GnÏßäþ «~l[uËvìô_l;½e[ÌCk4V2¡Îƒ/¸Ò `ÞÒâ-üÊ’˜UêÞ½;ß²y3žì\¸GO8¥Ç êµÏ   PLì¬eK¼©ÛL.™TÉ”ŒˆbŠ81º…ã.žH   M"ÀùQÊ,°ñR'E&Uâï6¹yRidKM"#ˆ' P--V©tæ“â;)€€€䉀dKâÌÎ*ñ&&sØu¹<µ”7ôcaé›­òß<ÆÀÏ´Åb@@ Í¤Hww›§uËWâL R웕Þ~Ûl©Dg–,cÇk®DÓ?æG\Ê܉¦:+¬¬©7&‹'—ùE·ìÛVÖÔ8 Æ¢jܤÚê ÖÜ6ëmic±žY8y2Å%s_‘#¿è¿®ÿh þ£nŠQ2jÆ 7Ÿ½¹R1^Ä m—€ÌIÿtjÉÎ*‘Tª]¥G±xrùÜñ²0·È›f3›ÚêiÞêdÝ /’í8ý%ÛêafmŽ7wVDÕÌTÝø¹åN è“çc4÷ [šóÚC(„™Uœ^iˆ|Îy[LÌꤖV#©ŸÛDÄ|ñtÛ Ó^)ýO9Ss¥µwŒ¶Ks2ÑdΖZa°„«v‡]Ö‹ª¾Cre¢¶ @5:ÉeZ¹ÅR^)-Ä  ™øéP cf•R)úI5}-ýlÉ,Õ¯Yáù¹Å˜Yµ«êL§+fÌ1Û{N¹f’/‹#ÛŠW™Ü‚£ f£ÉŠÌì·5iœä"™=›Æ5;Œêέt»Û(>fm>Ø«Ÿ÷D͡TÌj$q‹é\q‰–VõÀ™²0w¿7ÝîaZ>uº÷+Z©{áFoêeF– ¶z¬YЛ¸|êífŽŠÔ¦¹Ÿe¿ò˜-=]z»mÝ:c”Ûù@™Zu®¦[˧†Ý2D  Ð4²ôæ'Evc·¦J”-ñ»wSÎÔ4ÿÅaÅùǰAv³ó$»ùš²¿prÁiEsSæägT†˜³‰7ÝÜdts¼ ékÙø)áƒÐŒOý*o9í\âãÜÙËW¿b"~ã¯.ïOÿö¿üª‰F–¤v…É}Fè­ª§ŒŠÔ†ß(26•^<|v‰Œ_Ùçı’d Í>&ši s¤OûH:㇜A-c¯ú_¾„'™.£d [É3’B%€´qÿûeDœIFD u˜S%J vìØ¹sçôÿ;vÐi©‘ÐM<Ó†ÔéüÎ ïî©¶Š§XÊx+’L4ñ‚Ù¬1f ÐÏ_k«š¹È 'xãà pUƒVÙ=CìÅ|_ŸÛ¢Å8ã™6Heð좥Æ<ÝÀfvlÌÙ_ˆ9íü– ª‡¥­ôeï²u4eåˤEýñfûënÍò1OàŒÊLüÄ«E¢'5)níÓg;õ”/ÑVr3õäƧÝ[ÎÚþ SÄ+-ëá±Q*€€@Éؽ{%B”¹‘yZ·9xsI®½Ñ&ëÔÌØ«ÁËOSÜš™)žGšÒvh• iïuõ°qi/Šk1Ò·ã™DîþꈫX?ÖWhc¶ºr|†Í«’ØÄkm!/´Må ø©þ‚nôQ¶Â£™£¬0d5M-§ d-N-Ú¡Q3îŸØíÜn³¹'z°%:ç’@œ¹ËhÒ´<§œBZ’¶‘)ê6A@Ò!šjÞpªT²IRK\úYmÅ Ú&Ž£Àh¿É‚¢/]îˆyöà+–„µÃjÞ I¢Ø’œûyŽÛÎåÆmÿÄ–i/TzÓé®Ô-y@½p€€@)à„ÉìÞN›U’•äÔRž/¿ºVœÒFé6ôLì<ƒ‚;hCüo¶QžD³J’+ÙT©4—Þ wmÂëX…k žA@@Š€¦F6U’9¬Äá¥BHÎjZ¤h™Or=ð7àÜÃäL%ý`¥æð-€€€@û% +n¡¥¶ U’ ój·|·_Tè9€€€@»$à¤C¶ÿáY¥v‰x6UŠæPñê‚€€€@›&JŠLªdö&9+s­¸W‰¾¥/Ï—.+«ô>$ûë!§&CvÓûìZj–sÿùÙÜË‚EêG³ÎŽ ´@@@  p³¥ðÃB[™Z´×æaFÃènå©Ôõ55‹½)¡'Tg hñä1³è!Hò«"¡çtg²ËªŽRúÕó+&Í}’@Šㇻ;¡f¬qY€# ºˆËÛï˜M²/ß>½÷›oD*!È–ÀúúõWe« =h7®¸|b–}¥DH &Á#(³t‘«Zmmíᇾ÷Þ{7fX_3ó$ItXyà”Ü“þíÚR9øÇ窧-¬oB7K¥‹¹ÅyíÕS¼©Õ4½™›´½ËÊ#‡À 7Õ4‡‡Ý«J šã1dûÚk¯=ôÐC›7onÄgý¹µ“ÆÅÎ!9‹ræ7eé )“Êšû[°f‹$cfyü»¹þ©¿¼å›s2RW\fáäÉ´þÇëdöÌ:÷+ÃÎ `rlÒP†×´¦yºÉ_„Ló¹ØÊƒu»@SÕÙ7°˜„]dˆU   ЄVØÂ (‚#F<ðÀo¼ÑØÂJü”Ðâɲ*G×ÍX1Fó„ÚêUãH–Z4©¶zúbþeÚE“§ ÑÀ£&åC*fégÔh‡è6­ÙïU²¿œKžäGuÓ‘ÿGPöèÑã¼óΛ5kÖ׿þõýöÛ/úÀ±ã+ª,žY»cPH­JñÌþr*MÈwKv[wSÝr¾ãkÝÅ.§vy2£çIí7‹pµ¡ŠŒNZ¨rΜ9™[š0!ïW'sƒ¨hOÌÔR =‚rË–-÷Ýwßù矟'q$<[2kŒîøñ(K¡oÀy óf-€—¬ö3%]827ëst°µU£¹fñ‚˜y£ºUµ²È;¨’\7;¶Xljý­»ÐLé¦.£é¯»ÅúŠLè+}u3*’§æ"~ZP@ÉPÒ‘…³Û+ØØ•¬žVãîc£ {ì]ó·‘åì8Ëö¡  ÐzÊœÙ"ž?2sG-‘*mÚ´iþüùçœsNyyÆï§ÑŽ Þäß‹&xcy†©j¦ ykN®;jªf.â ŒŽ ÞxΦe,]àŬÊU]E‚x•lªarÅhϬvù­´™±ÅŽ…$ŸÃVMà€yÝN °¦„Éò´À8¶¤€ÓLü€¼=•„ IDAT^“ûc;ÐÊBN“ÊW]#û¯R©9ÞÂlæÚ :Ø»&;ÀR¡-qIö¡Ä+I rb!À·T»ÈfC*øÃ¨Ç{Œö*Ñ\ãbY#¤;—.Ôi9V(;´grÓt­6N¶Qó­Ïé°ÿºæñMÚz¼b46íºÛJ‚0Æ'k¹j™`-#š³3]»˜pU ¤á}±»áΉ7/œ(úþ#@$PðY¥>}úœvÚiYåIî6}ÙË.«¸!¸/(P²ŸÖVâ#'ÌìNøi ±Âc?lÁ='ÿî#rô uâ PðT©¢¢"‹çOFpëâGyêÑØ…‹žõÛŒ"Sž$¨â9AuµÕá§-$ ³gy^CÚÃh^/ö‘ Ùû‡&€€@Ë íIfõÍ]†+xªÔ²]Œ¶ÆkTþ‘ë>§¨·Ö’ÐM·]gy:på$¬¾™ÊØGNpEÅŒÐÓ…Y_e<|!kTP"ú³¼Í§J%tij&:p3åIüÈ ÿû’‰ÎÌÓ‡ éÛ‘N‹‡ Êô+}ôŒ'7™ù7à‡÷Ù‡[Ä9€€@°ÏKjW³JExRnÜÜ(SžÄ^9ÁU‘§-Ä Íã%äqèô¨Úß–áñ%øð…ÜÐC@ÚwJIÊü 8÷)í z\(C¢ñÚXžd:Bk•uC*é±Ò-~Þ§-™§-ðc²h"ÈÿŽ¢<‚!MÈÏ`¨,//«f36ÏðPÔ4]ö;nïäæƒNh2jà¸IcƯ"|¾§PÁ+€€€C@n¡;NìÃðÓî8ÅB@Ø={öìFÞmƒŽpìøŠkêeQ­¶ºœ<Ê$S¨Ã¦­¨ZÈ^)Á€€@“ „n4H•šL†-DÀ²¡á?kãç!6{៭5+r“fMóó™ÚêiÞ‘)›`ŠT_k'ŠOæ FbäY›˜)¡ÚUuä{Ñ$Þ¹¿þæR‹óÓˆ@@Z€üñ, #Uj… €&s% ’æI”¿$z ÔÅÔñ!Î`üÃN+™XV̘cöVW£DgüX³ù›Ë4QDsHkVx.h‚€˜€›aV©À°á¾ÙÜ9¤LóIÜPÕU´ÓºÜnG Z®[U+³?œÜdg]ÁZ±8åšI³Æ¨sZA«öf\·3*‹&büga–" ÙR¥–BŽvšA@2¤Æò$n€×Ýycì*}³ß¬±IE «†e;«T5³ŽÓ.ëI$Þn8§yªØ‡xºrW–´Ñ›"óß D0(àiÝtKÈæVT 8àb ès&gÏžøÌÉ%oáž™.ã jJšˆ”t>(¡5"1ÎEêz 5?ÐoËmHÒºô b@  ÐRÂÛ‘Ìž¥´6ÁŽ¥–ºh'+Õ•=”@@@ GÑ­±X€Ë!ÔA@@Ú¤Jíéj£¯   9@ª”#0¨ƒ€€´ø\;¸Èè"€€€@³ `V©Ùá@@@ í°ß€‹î÷n»]FÏ@@@@ [áY% `V)Ÿ4á @@@ °Ûºñõ·6v]ѼÀ¬R^0 €€€@Û$€T©m^Wô @@@ /âR%<+ /há@@@ ô Ä¥J¥ß+ô@@@òBÀ¤J˜FÊ K8hsì¬}_‚ksh.,À5— ìA@@Ú0´T KmøJ£k   M žU2Ùö.5$L@@@Ú pªÔ»ˆ.€€€@v¢+lH•²#-öA ”-!Uj—½hàaM2‡€€€´eÁ¬Rtq®-÷}æq“|P}'WGDFŽ@@@@ÀÃ^% H$€T) *@@@@©Æ€€€$@ª”ˆ    €T c@@@ UJDƒ àTIž    !˜UÂDH•Ñ @@@ìÓº±‡¡   Q˜UŠ2@@@,¤J    H©R"T€€€€R%ŒH$€T) *@@@@À¦Jô 8| £@@@BÒf•-a|€€€€€K p    H œ*a%.*@@@ÚpªÔþ Ç    H©R"T€€€€R%ŒH$€T) *@@@ÚØG UjWcÈD š-!UÊÄ u   íœR¥v>Ð}4¡‰¥NÀ    àp³%Ì*al€€€€@"¤J‰hP   H•0@@@@ ‘§Jeôý€€€€@:Ì*aD€€€€@" UÂÄR"$T€€€´Wi @¶Ô^‡ú    O pñ\ "€T Ã@@@ UJDƒ @ª„1   ‰*%¢A€€€ UÂDH•Ñ @@@*a €€€€@"¤J‰hP   H•0@@@@ ‘R¥D4¨¤J    H©R"T€€€€R%ŒH$€T) *@@@@©Æ€€€$@ª”ˆ    €T c@@@ UJDƒ @ª„1   ‰*%¢A€€€ UÂDH•Ñ @@@*a €€€€@"¤J‰hP   H•0@@@@ ‘R¥D4¨¤J    H©R"T€€€€R%ŒH$€T) *@@@@©Æ€€€$@ª”ˆ    €T c@@@ UJDƒ @ª„1   ‰*%¢A€€€ UÂÿßÞýÇÜUÖ¿Nˆqþ#–lWK©#]6·Õ‰C!•JË–àÃÚ¨¥“E‰n à*SÌ‚l$@Ó±¥ºh6L1ŒXŠ£¨‰.;ãV+ú¶¨`¤ÕÐD#ké»çžsïyÏ{î}ι÷œûö}ßs?'Zî}~çûyÎ{ßï{ÎyÏK€Q©R”F @@ªä @€D¤JQ @€©’c€ *EiT @€¤JŽ @€@T@ª¥QA€*9 @€]Ùþ–ç*98 @€óBÊ”½—*98 @€Q©R”F 0µÙ‰%©ÒÔ'@€ŠùKoiT©hä= 0Í…lIª4ÍƒØ  @€ ©Rj @`JÂï½¥§”Ò‡¤QK•¦dõ…I€T tŸ]€K_H•*Õ4 @€¦EÀY¥iYiq @€c $žÌ_} oU›Q @ •É­JÝ-D—þ^H•Z¹Ö‚"@€êdRÖYªTÇQ @ Å½„)¹wF‹ã @`,üY¥p=.ôuVi,@  @€Ö äïRr¯Rk—Y` @€@mÂ=Ýag•jcêH€´P Ë–ÒîUjá ‰¨!ýa“|_g•jHêB€´R œHš÷P¥¤³J­\iA @€uò¿—üœ{•ê0êC€´Q ÿ‡MBl~® ,& @ ™@þžnÏUjf©7 ÐFy×à\€k㋉¨#þ¹ÜÐ3Ÿ-ù ¸:”ú @€m(üœT©­ -. @ ¦@>[’*ÕDÔhŸ@véÍoÀµoqED€L@ $IîUš€£! @€– ä3¤îk lÙ ‡h(Ï–Ò¡Ü«ÔTw @ ÍR¥6¯®Ø @€q '–ü¹Üqµ'@€Z.fKþ°IË—Yx @€@sàšh­€T©µK+0 @ ¹€T©¹¡ @€Ö H•Z»´#@€š H•šh­€T©µK+0 @ ¹€T©¹¡ @€Ö H•Z»´#@€š H•šh­€T©µK+0 @ ¹€T©¹¡ @€Ö H•Z»´#@€š H•šh­€T©µK+0 @ ¹€T©¹¡ @€Ö tS¥Ùð¿ð @€À|¹³J![’09< @€yà @€¨€T)J£‚ PL•\ƒsL @€2bª„† @ *9 @€Q©R”F @@ªä @€D¤JQ @€©’c€ *EiT @€¤JŽ @€@T@ª¥QA€*9 @€Q©R”F @@ªä @€D¤JQ @€©’c€ *EiT @€¤JŽ @€@T@ª¥QA€*9 @€Q©R”F @@ªä @€D¤JQ @€©’c€ *EiT @€¤JŽ @€@T@ª¥QA€*9 @€Q©R”F @ —*ÍÎβ @€(8«ä @€DæR%'–¢H* @€i8#xš-É™¦õ`7 Pp®(â= @ *9 @€Q©R”F @@ªä @€D¤JQ @€©’c€ *EiT @€¤JŽ @€@T@ª¥QA€è¦JÏí8 @€ pVi(‹B @€@W@ªä8 @€Dz.×5¸¨  @`ŠœUšâÅ: P% UªRO€L±€TiŠ_è @€@•€T©JH= 0ÅR¥)^|¡ @€UR¥*!õ @€À H•¦xñ…N€T H•ª„Ô @€S, UšâÅ: P% UªRO€L±€TiŠ_è @€@•€T©JH= 0ÅR¥)^|¡ @€UR¥*!õ @€À H•¦xñ…N€T H•ª„Ô @€S, UšâÅ: P% UªRO€L±€TiŠ_è @€@•€T©JH= 0ÅR¥)^|¡ @€UR¥*!õ @€À H•¦xñ…N€T H•ª„Ô @€S,pÆÇ.ô¥%ð‰¿½{iMÈl @€@§#Ur, ?¿që’˜‡I @€ù.À9" @€Q©R”F @@ªä @€D¤JQ @€^ª4;;Ë‚ @  0wV)dK&Ç @ /Ðèa„ã`"@€Ú-P?Uò œv§9º={öœæ=ÚL•Àµ×^û /Ô¹˜*¹ WQ—æán>ˆ @€ÀÄŠ©ÒÄw`@£ÔËôGY ÐDÀÚèéK€´\@ªÔò ÐD@ªÔDO_ @ åR¥–/°ð @€&R¥&zú @€-*µ|…G€4HR¥ÙŽ¿jÒQ_ @ ­Î*µueÅE€L@À#('€hL¡À®]»ž{î¹_|±±¿â¯8÷Üs·nÝZŽKp–EÕ(«<ȼT)\†KZ¤ÿ6VB€º÷ïØñ«¯|å‡?üá³Ï>»"Gݽ{wˆëÆmÛ†F$ä¡,Ë«°r•_–l!¨~FÔÏY¥åµÊfK€%!ðÓcÇ®ûèG_ýêWÿâ¿Xj<‰×¼æ5›7oþô§?IÈ1™eT^¹ÊY,!aʲ%÷*-£%6U,'N„ï:¿üå/—Ê„Ï#Ä" qÅFrLf•W®òÐXœUÊ¢*Ú÷«Óùk.CƒòP–åUX¹ÊY8É¥¸îŸnªž°¼â4[X £×Y ³È„<Æå5Hï¬Rºöé­LË+³%@€Å7,–üéÜï´­rþ.¥ÔyÞ½Jí;µx:&û"@€ÀT „o§b{üCgõ·wÜ7ÓßC(ÍÞÍÜ÷޳ÎúÐãßyeNÐ ädÎé–‹jB!äqÆr!Cž›IwIk®WýÐb•!‡¯â™#·uOÕ'›`  °´ž¸yŦƒw|ãX²}ã{Þ´aǑŒŸ¸ùM{ÞùcÅÒŽ$7»#;6¬xÓ3Iƒ:vìþÎÞ'–ÍÜ'0Ñ#;î:xíµïXÉ Œ½pCtoTJž¶a·u»siáìL€ Œòú8áÞq×g¶Ñ «éÐÂ4´nÀ=¤0xÒ0Ó+ÞÐx” m’߀ë÷¬7D½êB€Ë]àäɓǟd?ñ¥7®úµyƒ†¢§¿ÿ?ÇŸýó§o»íéÍÿ4sö„÷:Á«^õªòpê„<$¨ÞN.Ü>3³=¼ÞÛš;ïÙzáÖUIŒÿ»­[Ê®û‡/lþä¥ìºæ²ÿøãÿœyhUÒ-¿ÿ¶?üü†´`ÿm×Üóí ·†Ž/½øó:. rñ~þ¥ w…5ë¼uÃKyôÛ›·vãH"½31³ªß÷¼õßzá) ¡½uÛæ5|aû…—v½ùìæmõƒÊÓënùŒhî¬RšgäWÙkˆ Ä]>ûÍï.tž]wþªP~¦_wë·ºîOÿùHíá+:ÆÂÌ—W 1¬zHPi³'o]ÓÝ®{0\=ënIŒ×­ï¾\ù»;‡‡H|éÑo¾û¦-+ç>røP盟¸¬×5 kÞb¿@!g³ ÓŸÝø¶dö+ß¶qö;ŸLª’HïL¢Z¹å¦w§«+LB îK:?¹ïP)jìm”C›ü½Js·ug§°FE3˜rq¯}T´Ý¥W­{hßS¹VÏ>ùØ V¿®û~÷Âɪkw?pÁWÜ–oR1æ8Õ£¬æ8ã%mƒJ‡xv×»>0ûÀ3aÛwëºôòYcoÙënÑü‹k¡dSÒ1Ùþf}gì™u;,HÈs3yêï8pàŽ+~3Ù®¸ã@§·¼ùHŸ=òÝ4ÂòÂõ×ÝúÝ{w=ûì®{¿{Õ¥Ý#¢î6JÈ…6IªÔ_…ýu!@€éߪÆþ‰¾¢ÃÊ÷ݸi÷>¶¿×lÿÇÞ~Gç–÷_’¼í~³ ÿ¹äö½·<óM»Â —‰o•©C­Ó .È¢:ud×®á‘ïX·¦{ZåHH{'…z1æã]¹~ãºÝ÷æÃ]¹ê‚Îü’ g|‘… ¹?ýûv¯»eï¡lÛ{˺Ýû’Õít<öd²†Ýð7]ž¬q¤°‡$:=ðÀcësçØ äÁ/ç¹GP¦Ï\*¸%½§Øb©½Aí]³ùÊ~T!{x0Lñý·Üå•k?ÕY·iS8«Ýzᆆa ·¯_²ÅÍI×~Q´óâV|ùK»×mÜ›[£UoÛ¸îS_úòíSÃÍ“IDATÝ5]wÁÌ_­]{ ª¿ÈC ûA¬Úrãk¯ïì<´ «~.÷‡rÓ}Ï=, ¤–ƒÕ‹«lï °”’3“Þ.Ù~ðàöþ ÙBé%Nïm·Ih± »¯§æ>W¾÷sß;7tw”Á¢|Œ…×™H²ÿù]CI§"€ñ«k†ÜéÌ[³d¿Ý‰w×í+áÊßš?û\?ªtÝË…óÆ-Þ•œ€?ˆñzîìž÷7àdKãYjM€)H¯Fµ `Ä«QBn,pªz~¤¡…¹?ü—ûŸùËOýuÓL©r•£›w.T×bpP% 0 M¿k-C#!ObѺ'’;Ýòƒ -Lüð_·üÉÿýûñègc1 xnÆ @€ö „­[öÓue8BžÐa}ñǾuñÀÉ™¡…éW¾ç3ßzO÷eåUOpô!²çoë®Þ‰ 0õgžyæÏ~ö³×¾öµ?úÑÚ±råÊQˆ+Žc2˨¼r•‡Æ2ä¬ÒhÏY:šB˜ +V<üðÃ×\sÍë_ÿúvü /„ˆB\±p„“YFå•«<4–ä¶îdóëoC @€À À¶mÛî»ï¾»ï¾ûĉƒµË±$œ4:묳nºé¦Øä…“YFå•«<4–¹ p¹ê‘ß9t8… 0%%YE[„ÜÖ•-kî›Ìµ“)•›©%@€¦F`Þ߀›š¨J€I`î¶îÐ|ôß il @€Ë\`îÏåf¤¿y™Çeú @€ Ì{XÀÆ3 @ EÃnënQxB!@€4*5ÑÓ—h‘@¸ iàIÜÉ#(“‡P†GP¦±>ÿüÑ‹ßzñªóV·(t¡ @€Ê.¾ø’ç - ÙRñ^¥0}ík_Ë[.Ú°qC~¼—uz‰Tÿ¿½·ýüª×6Ë·JûN´?ø`M¤¤°ßH«¥R<”e©LÎ<I`ð—Q&2ðÓN¡Sü©he5ñº9Õ›v¦jæÙžÆ˜L¯O¼Ç²ø%•Ú¤‹SV0ú§ÐÀ§}:ìŸùýÃ>؇•åæ­žÈgþèe” \7x<ô¿v’½{L÷Žø¬å¼I›^ÃaSX«²²eÁ˜`î. «[ò¤¯}ýëùV§N oϘ=õÒó?ùÉù«W>r$­ÞÿÔSáéë¼Hö:}QxÚ——˜ŸMÖ½P{»ˆKUc×5ºÄ·|"Ÿ/ãîtzÚüíIÉVIU:P%]êU…™ í8´0‹¿¼66æ¾\Qɘ%U%cÖëU2`yÕiÞÝàÇQ¡$ÿvðs>Ä2X8´K¾e&0¸÷⢌2T½6#N`ÄfƒsX½zuHBšôòP÷Ì3߻袋üNÚ®0èЯ´0«*¼ˆ•gó(™wIU>Œ› FÞ¼¤Þ®ëõj>Û0Âiø ŸÈ<—ã Áv!xÃÑ’n1“òÚ¡½JÆ,98Kª†î%9Þº[½ÚÊî±acå%3‰u™øJv´ˆU™’·YU¾M¡phU]Éà’õ*©Š1–t)©Š–%•¨Êž¤3Œ9çkKZ†ªBm~Q²Á›L}"ƒ4™@Ú·|åµ%{¿âòË~øß?Þ½­û¹ÿø÷~÷ ûWܲD5ퟛå¡YÞšO`Cû’ò|Û<ŸMgÕ|œ£XU½.â„c(_\ôS¬ük¸²6d¬@†ŽY2Î(óœ@y¯òÚ0ZÉ|&¾¯ÁÓ’±æd”òJQ·Mú‰”õ*y›}âåÛä à …ªÂ‡dÉà…i§- ÝÓ6%UãÆ¾\Ú§_ªé¿aÎÙÛì€ÉÑXU~„lœåþçYïàÙ°áÊ7üÎo‡)̤{ViöÔ©¯|õ«[Þ÷Þ+Vœ4¨EœOå®—jeKºAüãšÓúöxc Ì©ÞÍÎõg20lþõfR~ýIÆO>Ö£IùÄA*'Sü°.ýŒú‰×!Òqh—lVŽç§°2¢yc,Xj3‰ÙU„2xèïù·oÏÕÆÊó;œ?úD¼²Õ¬ˆuBÕZ•?÷ÜÎ;Ãù¤—NžHgVøe¿Ò=Ïd#@€L§@¸•;øÿvkƒ­e¹ÉIEND®B`‚PK !{xÝ_5_5word/media/image19.png‰PNG  IHDR¢Ò‡vvvš"H« ÒÎâœ%`/B“ƒ§pC*3ú0Ò°yíb& ŸŽÇÆÅO¢v†NXù¼Zñ©]f úÒîì•Á`¡ø˜‰‚ âO5î•ËXïO™çÉP:^O©˜Ê– µÐ¾÷Þ{ïË/¿ÜÞÜ|óÍÁÃa™þfà[™NÀ.ß ²…v·³Ë©ƒXì`‰V_Øi”íP@L^‰„Â0É¢Fh>»„+„¿HB¬B¦æq¼Æ¼¥K†Ìñ¹¨˜ –P’‚¸Ì¥Ë¥¢%Dࢤ‡“¿XyýöQ<¢µ³‡•e;Ié ë[¸²䇒=Q¾òãË;ð$ðqxðÞ&DgøÞ ;ð=÷ÒˇÌ਺A_SAã ÕGL».d6gwlذÁ®I°ã|Ð#Qàw½Réí!\µ²Ñõ²f·™³'Ë몳§Ç¼vABÇÃ'rÀÆ“o‡-;$¢5ò• çˆ5›Úù·¡@r âòƒ78Ý9zô¨kßt²JGçl –Ð7d àõ TïÒ=÷ѪεÅΜm?{.vêL{úˆW|—Ú=;*oBÞHÏÙ é¬_ŒCþR«Ì«ôLÈèš×.Z’ððéì°Q ²–]>2S:¨DB Mì•eg¡´!‚*éÿèÙÿ-òܹs Q‘¨3Sºß¾ðo´ïƒ…?]ã r‹Öawüþ»îŽ_åäýŸoåýÏ£ÇÛkÛ·fJZÚäšùØ[3%mrµØöþÂô´ï[¼÷ÖL† {™íýi¢‹ÝÙBBXbw’ÇwdGÈUNÁ Œ®çÈImµƒÔ¤ƒÄÆ®éœÝ s ‘é[f§'«€*âã@¾»œBpvFè½æqåóg·éÇO‹Ÿ wý¨„AWÇðªlu5õŠ®[b238­íxìtKìÔGÚÉíÚñmGO8êý¾Í+5­²bó^W¨áP™ÿò./ ­ôÃã5§Ô5ÁèüÖ¢RIü½7ɰù¾ÉËë¡+6ç Tkœ}\[) ¯P´;µÐtìš»€‡¿®øsWHA¨ÆÏš“Œ¹F§ ©gÍÎAdÁî<8¥sY´ Ûs'OµÇNíÒÎ|;{P;s@;wèøI'™#*·àý÷Ó²ŸzßÄý½Cï0ÏYolydäHšnËËù¾UÎùN³+‡õ‚Ë—ž³ë˜ »xO»hÌ.„’ý]ä.`qÅà/,‹ävÆæÜJ‹¥Ù™§’ßFœ 4„¢ç«`gØ’LYHÛ¬Ÿ? M qeÏü$r•üâ8‡x…s8q}Ò*ëÖ‰ë#×Ekï‡îЊ&ž,ÌÿüGwAâ/`îvüÃØñ¿ÇŽo‹üGìÄ®“§å\Œ:]ån9â–ù¯TÔï3WgûÖÜ“N‡+â·”÷ Æ)O¿ëR–- `SÖì#ì}zúB}¦F /Ã#b~uuÁ¬§i?p|cVAuõ|£VÛFàôô{˜‹™L7Aä4ò=¯ïµT“/=¤LVØò%+[hjç[í<­<½£X=¹ºá÷Dîâ* ? :T’dx^,Bwù-¡ñí^ÁJà[i^Jް²(˜O=óT ü'J‡PŒ|ÞÜŸÁö k ©ðJß‚=ÜÔ.³¹£çÒ¿½à¥“}\ýì//Ò´£'Úbǵ³Ÿ§µ‰µ€jÛÚì5iËòü• ê—Ã<å¶ù¯s®ýÜ9Ê3hœúç=:??ûåGÛïm©¨œÿèŠþš)s ·Sš‹Ø4ø˜ì¥-Øl ª*mA½.f¤qáûÐH€˜øØ‚Xö›[ŠÍÕ°œWaQ^ßàÇ_» i"ëèÜËî~S@äL4¸2²Ç¼Îñƒ´:T”6AJ‚@‚¾¼B1„ô„•³°VÚä€Ê¡‰öíÕ«¬áUÎÂ[@tM–5I}ø@Ÿêòye‹3N*=L+@šaE¨Ô#7™;×ã‹­[~°õh‘¹«&¬vN̵•ÓbßLŸÉloÂ6˜çî’cå‡ûW"³¯e“V0µŸîJ·ùCX^jÕ-‹à=üÏt£!øg RPÐÚÛækÙo,ÔfUÎß “7Ó{ËÂùºÁD-GÑ‘3±{žÝEÎþv­üMÈîêÌGVŠ‹]L° ¡dO>¯Üê`a…+}\óÚõböD+e]+òŽÍU;”U(‚Òµ°W¾_EË,²|ó‚ÙƒˆhÌŸ_0kñYüiõ¦ÙéDPæÏŸ_I……ËLælóÓ©ñÙL·ã¸…¥aZT]00ß\µê3;.ŠúT×P“Mp£sÄæ‡€>ùȧ«7 ʦÓSøºßr"óæ1¢øÓÕïúfÚ#º¾ãç´1Çõ3NéÍ&\¯`tµ@e_!…JÆ Kð¼L†¼ß̉â$ÅàQÙÐÐ^˜˜…Ã@O„WZDàSó`d`‚3‘‘ñúë¯ÃOLffföíÛ7Q¢RÖÿðáàq;vì˜0a‚dZaaáÒ¥K•#ß&¡“5z¯[ûŽÌñéamÿgmŸìØð¿þ¹807e6B­]£IÉ¡¿Òàew…’@ÚÊûþy=[ÂB“s_çVçÈ®Áv÷-¡áf*Æãd„úVx„`‘»Ð€vv¡¾ XMMM ®¤EÅ$æqC† Ý«=Èö;€·¢¢"—ÙœPçÞ=­»v¾qötÛÙ³ôÔ+a™6 rZdxºèH-ìn„·ôº,r(Ù"„Xjw¾C/ç¼2Îp-”1»˜>°ñãb–ÙÁ™ŽïÉ,,µ8¼Òîlôùø¬6‚2*8à×tá[£n§+‚ƱŠ\dŽ}=˜ž”N„m3˸^ ߎ:S)ˆŸ×ù^Z)~zÛ8×âzc»:8Ç·kõÖwG;$²ÝG Y¼ä°Ô‚³!;ßÝ‹ºAèÎ<é[Ÿ…òÉjDíVœdÎöñBDiˆlz5ó•×7S4Ù?”r½ó“ƒÕ’(™ÀPháƒðCàœá§'àO»óv^Åh@Æ*;QŠo„ŽÊ®»¤ƒË“Ö.YsTŠ‚Ë”€]ú&©É ì$¥v ›Tl 2Lòœ‘0b'¬/=áßB(–Ïíþ­3Â.ÖŠ2¥¥w…´1»ƒ\ªÇÛžÝryýØ+ ¶P¤„^á-; FÀÉçbçÔ' ]¬»Ó¢µ‹•Ú5Êá‡]ÙÔHß²sÞèZ»pÏÈþ,/kÉn‰Z\ó**IPz1úÃùHtäy¶ ØY/» @ ‹›¼è:ãl.c×¥òÒŒvnUaªááyèl^fUÔ‡ÿäà{1;=a¯¬=.¡•]»umtp^”¹&Ü:å)ËŸ¬}SÊ¡ÐL‰±ƒJî“Ë`zg9”F»ÎöK³®Ó`Æã®ÎaH+`¥ŠI½/¹¬ßÖ…ÎQüDpÜÊ·ËêYè³n± b¤J0ÎHB¤W™È@2gÑj‹pÿúų×ë­d!dH‡ÒhBÕ­t§&]3´çh6Å¢K…³ÅޏoÆeš È ÚÃ[J {g¶Á%gaŽ«i  ûÔ†ñªª wéÍ·÷›ýÖ¶›ÉV@R WÀFoRcPdÀ+I–9¥à(^ë~êd±z3´ÂΚ´“åÞºãög}}W˜µiÚp²Ÿµ¸a[Á0ÝQã䱂YîpWÓ{ +¸¯á¹ §¸”â·ÙDbÙ=䃠×/&ì‡ „Â@8‹Öë´­©„QRÀÅì°á#ä}@ïlÁMŸaÅP€Ã¥‰̯Fµ,YÐù-?±J‡ÝrÝ+ÞÒç• $õÆ­w$éõ>è‰ „Ä@82gÝÓŸ´*¶² [w†ÈIJ9æÐ“6éO ͔۶Êû€®!âd}¸žÕ²ÐÜ?öIå nxSç¸}Aïåܰb}¿ÛÙ£wˆÙÖ­0µ¤:ç-©n]„J¯{™è „Ë@8‹V~çð™_Kê°‚ž› _ã Yë©d…ųlÑ%ìOîqM= Ú¡@ ÏŠãáVžôÙDA·/h)_Æ™eÙùJü hÃnÛoë²-ç|R=-·œ§‰ ž6‡H¯‚q4!Id ­°°péÒ¥iii,I,Á())qMûæ›oÞ}÷Ýø7­®D¡2€ øfà /\µjÕ­·Þꡬ¬lΜ9‚š…3›sMŸ2ò_F$>£ ¿˜ÔD~躛̙Ñ)dÛ&MMT¶p±ˆá<‚ˆV͈@ºAgsð‹wø³šÝêŠÁb‘fD&`Æ@2¿\ ?wðï€Ý‘d Ë3R¤Æ@2?[ä—‹ƒàƾÈ2€ xd÷æ<…nÈ2UPæ¢:rˆ@<2€2ç‘(tC¨2€2Õ‘CÜÈ2à‘”9D¡2€ D•”¹¨ŽâF  Ìy$ Ýd  À@Qæ¢1rˆ@¼3JNjʜwêÐ@R~"Ç”e.Õ‡ ñ!È@@Â’¹Úâ>}Šk90ÍKÆ[ ¤ Œã—4„ŒÝ‘d°cÀº\¥^aÉܸórwƬym•6oÆ8;(hGd i $ko.cÂ$­j­©sDå&MÈHZ@¯ „5›Ó4^çL•#KYóˆ/iù¥+;'‹\z°e-ô¶¬ƒ½Ö„~È2ÐHêJâ:ÇærãÊ[£~^c™Ã®\󒢪Iõºoý¤ª"ê ½ËqÙÛ/W,ðÉU:¶t o6ŸÏq+V6GË)­s =êêJsôÙxÖÅW¿° @;ø9] ŸÕù\ÑÚZ öå–’}¹Úâ2G[ç wE¢»õýÔJœ»93„­È2àÆ¯npNÿ1Ã0gsÆ|®Œú•IŸC4mÏæ22³ê¶7Q¸Ôú˜[QM¿¢ü&Š[mØŽ Èe@xÌ ÆpeNQÇž±Â·L ès…‚ n 8{Yc.iȘ¾®R£®dH·äð^·È20lcŽõ uÑJõªu:‹êŽ#æuëôFÉ®iäqE9ëINÀ‚O ,ŒàdðÂ]®&iÑêú È2DøÙ=yÑšDì@7Ø ©ÆÁ ÊœmØŽ ‘b é "Å‚E.È@È Zöîÿ´ekë‘.H–„ ©Á@Ÿ>Øoà€~Þá°G´K '­_ùJß#û]vñ…ÞÓ£'2€  1pà³#_=á± ]±Â·‚ùMº {s¨qÙG7dðÇ@¢"C•޽BÒ@³9 ±2€ Ib€þH:{ÆJ³Í% +†EdÀLãØI¨2·fÚ´5<°5ÓÒˆaç¢Ñ°T¦‡áÀ›Òt'8”FÍbÆ5ÞÂÿÄ¢X#€ƒ™ZÔÝeR!àèE;™ÁyPqô÷´]•¶fŸE†agà)Ýl}¤¤V„ÆÈ¹£4Ä+VbðdðÀ–°žß< |•žÃ¥ W¶£ÉQÜõnCO×é¤ÿë…ɚ͑«râ /LŒ_›;ÍÕj– ]4zèÊÉ;Œ…r6ѼTG•Æå sM)QUEæ-£k µÂzº,8²ºQ·­™Æ@®‰äÚ¶í®Ê¥°Aµ5#ïŽÉ+‡rb0jÔ¨†ʸ³zåF®·ˆ-oð¡Ã)™¼²Œ}Bx¹”˜5Y“ÒÞù#\³êÂ?å>QVO^IyœHð.µBm®›ì:càê«Ñ¹›0@Ï•-ÜîuÚÐ@5Ž i6·fÚĆò5……5¦hkÊŠ‡ßG.ÎòÎ4yo‰Ì«‡olÜ! Vmªr1ïüGèÉùAæÃïHù]º+šAÀ¡Z³ˆY3¼8®R“'_YMunG£VX8JÁ4Á½Ü° ô-óáÇ5¦õðƘCç M–¤B0ün³†bôðdæOÖL"©ÊM.YŒW£M-©Æ•f÷º ÕP+¯q` Iæ Òð«u%1…„|ÌS•3%Æ•òVQí"8ÛÉíRü·ôtvwo%s4£ZÃyhÖ¨ˆZÑ#ÿnCçÖ¬j˜|w–c@Ú“›Ëй’þºÈ\››Ë«øR9¾àâgìNèª~h±1¡dc ¸T: ×Ê<+™¬ï\ô@ñÆÅCG Áá„NÐãñuhÉ´i„y2zÑ KXÇ›S4+^çˆ@MÎ׌=–ŠtT•olŽ b~äV'+„!/“;™+þ*ªV\æåÐ}nCÇû ©ÒQ/Cæx“[wU;™•L„Ek|¹æú1Oný€U›î)ª„¶6„¦cÊK–z²Ä×<|@&ÂÄŠ44KŸ†•Ëç§: l($%M1_ØXÜx·¾ö6ÖõpG²¥2,wG/çÀ Q¢átQ Ëzr€ÅÜ;2LÕ“Úðo®ñ)’êüËGÁòöwÞÙ¡Ÿ r<#›Ïk²^$]F™'Zñ\M·P~`¾O0Â[s2lÅ×9«@‘…‚ÐQ¸¬€Ý>â(<½8}A3óaÆM|Tp|?$\®¸úÄ«š \}mÑ…oCa€ß25c'aÍæÈ$.wÔʼJI|£Š[¡)Ž%‰–ý/¶>ÖáÁ«ËDçu|@¸ci>a• s¹=wÀ|Ö:ç³îŠkwÅÜjTy‰¾ßhú’Ë´À•ýÎÃvËEÞtú“¨y_’)[ Z')vüËsC¾^ßÄÕÊÍö äÒÌa/wtu>·“`Ácêœ0 Sv´rÌ»›ðr:·–-Ä¿¹âà W…¥î®{Z‡×õ8ê–Ìy‡?ðÜŽŠuÅœÊMwôÆ€‹Ù¼» å}@UV'[ü>6½v4n„z¼x4ÌÛ`±9E4ÚĹ•‡.‰¸˜ÏjˆÞÇ?Z<$µ<ÃqÚjL Ýß(7ÂD;¾·à¡×Ï}Å_lZBG.¹ `/W£¼ÕÈY:«Ä˜í·¡%ú¼†~‹ŽÛ›ôÏ-ˆ¥ø·ÿç7Æà+'ð- yµfWo€àYsõ58æf±'œê^–ý/rò5z@þPbÂ’‘%ßP‚šOb, %lúìÔ:„G®ÅæC±B¾½cÑJ·d(? úl+óáÉ€À1t¥fX °eÈ$ÅØ”Sêï¹ø_Ðò˜OŒ|F!¼2&Ũéû[üã`Xærzq|G¹| ° Aq5æÃ—èõ'F¶Ä#tW$;ˆX|ÎkåÔhêv·¡êÊR‹Xaaa{{;´Á+;{ì1óXuúÿ'»РÆ+ùBIÜŸÑü[‹'¾¡ p_ûCJ:‡ã) —\¶t2ïYk ùä®xîØÕâ¤Df×éÓ§êDZcÇàÞ‚ÄÅŸ´©*qLÄ–·ŒŸ$¸Í‰Ü¾ü—èÜÏîÃ3,4ð5':õ + Æéž ä-ã—]ë6ô=¢ôS‚vÿé>ÜÙ`‚×ô΀K;»S¾ë¹£þÕåc:‡‹?εD¶Ö±ïXÁ˖ȧÖeæmH5 ( ³¹ðt-Ú—¢G.É€ø…’D%~ñ®Kò‚E!È@Š0\dŒE+U76ÇóXÞù½{žj‹í9ÐêÑÝdðÁ@Ÿ¯ôöÑ‹u±ü¬&ˆ]BJ׫Wz¯ ɱ/2€ ž O|âß´&ºhõ;"È2Ð1 Ä÷æ˜À¡Òu õ˜@Bg@ùµ8Ë“V¸ÐIÇ€È2Ðé ˆ_F¥ëô!AÈ2.DæzìnzŒ† È@ˆ (Uˆß› 1†Bd 0dŽNèpÅš C‚d \È÷æ@ÝàÀ¥k¸Ìb4dèx”s5ÅJ:fDd y àÞ\ò¸ÅÈÈ2Ð È:‹ÌÑfÙ©bJd@ü2 ˆXü{s4 jœ_b±2€ ¤¼”á¢5…¡ È@ˆ 0¥‹ÿB ˜|åÎìcÇÙ1a’VZ$¬;ácÄXÅŠ´yIQi]]iN|q*ZÖsk^ó#ˆÅ°,jIkq±}ü’Zš†:ÔšA ÉœRÆmÄï[\G(N?å8j$š&zêÈ—ðµð¬Y81>Ø-ÎÄÁ¬•žC}:fÉl9cÜY䇔€8(» ©YYµ1"¾H ´}±‘Ûʶ‰Ñ¥×¥®äS„j¹~ Ø´TyCÄŠ„&¢y¹¤ñ]†0§´ŽM9‹ŒVf¯ÓT(!joůÛ¯1*ëwÙ%ÇNh}owÿË.ÚTÿñÁÏŽØ÷¦3Μ>cß >¡ê'Uåè—½ªà*dËØIUEk',—›;¯~Ýt:ç#³>ÞRWº=ß\ó–1½¬]\šU©/„µÒÅ–¿ºÆk–R{™FOªÖÂu9®Üü7»aíLâÀUV ‘pTjã—4iíÛ:cg®XgKql‘Hž_Y‹~OX8ÑËœ3¦—L­ÓKÑš×VÕM-™>ÄdݶœQÍ+y˜È@‰2džMVëçåêxU´Th%d¬»*HÂu&WGœ¯ǰuJ$BVö–è©~Â4Õê¤Ê’újWhDìŠïÍùPºý.yiÕßþýOï}ÒrìÕ50•Kûç¼oÂrõ¼ÞÎÿY¬ê—B™×‘{&oºîÁg ܹ /Gî¼ãäæ!×äV€p®°®µÜÒž;iÕKvB{ ¼Cc‘áÖ[GTƒváš`2šÛ¸Óò Dü·G"zB|e-T·$N$çq3æiDç,ÐIq°¥ †3ëe£¹¯4 HŠªÍQAbÐBØ®¨6>´äëD~å¡È¹sX%©jÃÀ\¼›œ.r ­‚=¤óÔ®ÖH؉ÌñËU{s‡·ÿðfÐÇGËVïÙ×zÙÅ_½uÔP¹^½,{¶ŒŒËŸZ·]×´©Æ,ŠˆŸ®/ †t–l½וª`–'!–+Råmo“ãØ!‘=í£’œ€ªµµ ÐVápìµÕ9”ɵj7‡Ük¸ËÁ ÉœíË(´x kA’`†è¨BS¦K|o.¤Ó§OåËçÝ~ÓÕiä[wiÿ4þº4-Ûs½zÚÊùhg*T[]—ÿ‘miNš¹¯1®ÖBÂtË.NV&½Oš¶“m}ÓÐ\îÂ~‘¾h¥×D>•Í~f³5Ž«§. †Mcœ8Ñ‘”ªUζCz Oä 2$ת%ãÃO_Œ3¶ýC’Arç°’ŒÌ,Ӣш-.4yâSfÏ Õ¼DU×a€2»F·1è_AÐÊ{öHoýüà÷óF€ºõìÙã¶QC;kõèa+s0Õ©,†Õ) Ÿ¢d޳‘=¹qµÕu9}¶W²å'¹¼tKý5jÒÉöKUNNŸR²¨_çþ9ëƒ2˜øÑrçéÏ}ãв!KªŒf}<õÖr¤8¶H$Ou%Ôʃ¡)—”©üÉMj£rtOÊ»y§*†Òæë.’kÕJب °hél’¹Êètý8‡µ"Ñ´øe“››« W#@+ÈY"3 *BSÎFæYú7Fxdi………¿úÕ¯àϘµGO>ùdII‰— à½Ø_A@tøãHÑø4ðWøÇ^^ÈDdÂ@YYÙOHÃ.È2%Pæ¢4Zˆ@|0€2çƒ4ì‚ Qbe.J£…X‘dÀ(s>HÃ.È2%Pæ¢4Zˆ@|0€2çƒ4ì‚ Qbe.J£…X‘dÀ(s>HÃ.È2%ðJ¢4Zˆ5!VÕï©ÙÒÒÒz2¡^)ë<°ÏùG¼;çr„{÷î=}ú´ƒO„šà_Y0`ÀÔ©SbF™ H vOQþôÞî?<|ÞMßúÊW/HQˆ Âj=zâ÷ÿµ¥½=ö?n¬ìºdéÒ Î?ÿ‘G¹ä’K”‘3:thÅŠP×ô¢"àá'Iد0±ÙeÎ#{è1ª·¶œ7æÛ™}{?si™Íýâ`ïßYýö&;™ûü³Ï,)éӧω'"6Z6p/ºè¢{ï½·¬¬Ì¦Ý«÷æ¼2…~Ñb`ÿ‘Sé_¾à™K»Èò ȇZ "¨Ën Ξ= ºpê”­ƒ]Ç”µC-PÔ!ÎæˆÝSšîörB½]¬ä å°Õ+Ê\Jߥ. An’€©;«{7,Ù•j\´ºR„Qe€NmB~]W ›_ú1îùf3vóóãâïà¥1\®ƒá/Ú8Š×ù‹¡êeaFåàfs­×‹Îæ¼°„>Qe ½½=Lèëg^µ Y´â?D­æ­Qg€êѺ0ަuÿñßÃ2¯âB]uõÿ¯f=1¦bëgæ>>lyÍ4Þ%ŒÄñTN—ö„¨Kû§qèõ3áëwÆ1Š Ï[ºÔ4 9â^†ÜŒNyK›ÀAg&ÀÊ5hÌæ¨Ò B ŒAÎfàܹs_|ñEh(ŽŸnËùúe|ÄKdj?húï9ߺ‡¤ú×~yã-¡å;çòUg?%ø6TaMvã/›š~©›>®(øÙâžÕ Æ¿éFj¹ñÖ7 î9ûÛ¦&Rï[™°øgµŸýéŽ7š–]÷™¾xôR÷NЗ¿üeïÎੜ6Z­8­KˆPtNqàcÛÇF•mQð÷õMÍííñ?Aø¸ùC-v;Ù“ƒµYöcëWNýhöÐç~÷à˜©p›'ãð2I¸d36-˜?®˜<ö©ÍÔ”ýl4Ʋ{pŒžvÙõçÕ±ÇʨEó¿wŒi›\_¿ù¶!sŒ@Ùnž¨ž vìcâ“V{n°%ú X-I]¯¸eböö]qövnž2v 1hZöÄ[®ˆÅÆ<ø˜öTIï$Å `ð2 ‡‡º´š7EÈ[3±öä¨},›,)]r‡Q)©Õ˜ÍÑèú›X;ô‹Ó½~ëù¸…ðsSìKè'@èT$e.¶Ð7R ЩMÈG?ÑÐð„Ó””ËïÿÃô/Îé ð®áþøÛ¸Nm|—l`6°’J¬Ò¯1^/O­ßjÑ,Ìø Âµd/1Qæ¼°„>QeÀÇÔ&ª¥š¸»aÉÂÁ£TAQæ¢~U#~[èF¶ms\§6ݰdå0 J‡2§d ‘g ß…½ž8õo øYú§‘/F/àÙöAÚ‰SP—]9½zõ:|øð AƒvïÞmç-ûàÁƒ¡"¨+ l”¹€b÷e ÄÀßÕoûäúa3Î×ÿR³ 'OÇê·A]v¥\|ñů¾újAAAff¦O´ìGŽŠ .°ù Êœ±K€ŸØm‹Åj6m>x´‹ü²æ¥_=þ-»Ÿ†!)**zþùç-Züw(Sd€a×·o߇zÈü½9¼a¯(1Ppãð_”Æê[gNéøõà”‡ Á@™ Î!F@”fe.¥‡Á!È@B À~œü$(s qˆÎÈ2=Pæ¢7fˆ@be.!ºÐ@"À€°tE™‹À˜!DdðÁ;Å׃¡í†n(++ó» È2ÐY ä\½ò§ªˆÌ¥§§·Á¶›üõï]wÝuçwvÖdç•ÄÐŒ`‡Ú•­Jc²qb|d õ~MÀîÇììA T*šð-=zô€DæÞ~ûíQ£F1áþK2Ê£ÔØE$I©PJW:æF›äPTÙPÉAFû")Ë€p÷Ù½ev»»U.У'¸)e²†ûÄ ,é·ß~ûÿøÇ(ÞŸþ0C/ªM]°¿ pHYsÄÄ•+tIMEÜ ./UV}ôtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/06 16:46:47 lim_j SGA250167sàÏ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì½ |]Gy÷„â„„}‰S ‰÷²È W@ iÓÒP"á~·”ÊðB‹TÚæe)ÖûÇmY„ y‹i¥O myuÓBA¢TŠ«›°SÂ[I,áJ ¡X¶; àM¶déÿÌœmΙgΙsî½Ò½º¿Kï3óÌó|g9óÌrN‹ã:¯»!øŽ/      ØsÛGÜï-ô<Ô TäE<&5"€€€€€€€K ‹¨     –ZÕxÏ~ÆãÞúG׿ìÅϳLŒh     k˜ÀÝS³7ÿËç¿ï‘ÀƈÿðÖ¾ß~Ù‹6:Ë‹kL°$på žó‡¯ùÍí7Žñ#þÃË^t9œK”ˆ    Í@@øÊ'â?Àyh†A@@@@ 7ø¹Ñ!!€€€€4˜ÿ°¸ý/Z®ÿ´û³¸ó+{Þúì¦cƒA@@@@ ¡¼ãÍ`Ò÷ƒ7ýKìÒ—ÊŸ£ÿ®íÚBÿ—Ø@5¡aýá ïl¹~ßÐ÷þ{ûeù†_öòÎå/îyë³ ÚüWß¹*|ï³2²ý'_*{ùˆ      àÐ’tíu¯š?yŒ†õë×_ýë¿IñîøÚ—é'}§K¦£ ¬ÿð?Ãﻵwü‡Û/]t–IÎ/mÿçwŒuüSù-ÕÅó?ãPy”êêk~]þä%»b£þéEèé£Î¦§·¹ß½Ìr–~8ý£gþÌqœÓ:§è‚û½}äá÷;OùxaÏMÛ/qœS»ç‡ýï{ÙÌÃ_lûñg;;û‡“ÂSSÉ|ñÐ\û/œ?þðwÜIW®¾úÅôÓ‰ŒÕ£ L—LᎳþ,±ø@ñÅÍõ¡ ǽs³ µ…š<ê,_R¸ø!gá޳èP4qÐ:ø ¼dè#¿ÖFq.úµÁmÿ4>C_RS…9က€€€@ŒÀæW^é,¤@ñÅ´›™®ÂïøÖ÷¾ô¥o]}Õ HÞ—¾ô r!Üï&ñQÿÁuÉ•=ŸÿÊ›º^î§úñÝcSÒòB¶Ïû~è8ÝÙÒ 6€€€€€€N`s×Uz`…!_úÊž/}uòÚß(^ûòNµþìÇî*k~þ”û“þ.ô‚í︦ôÚú{¬öö½ôÎ{[ž¾ Ðñãéûe¢¯ìǘÏǾø€^Ç5[…b“Š„ ˆ9” ¹ äKGA—L™rë÷åoZþäG[.Øæ&ëýäèo-B¸-¯Ý&<‡m×ôzR7mÝöÁî—nëßöŽåa º¤c榖 ~Lß(¡ëu¤¥ÚdÒá     öÞñΰŒ,¼¹ì ~Ø@5BKçu7¿wÿóË,33GÛÛwÁ­…o¿_œ¥Æ@@@@@ ñ ¼è¿Áî_j|a€€€€€@ À¨Tˆ5JÀpþ!¿µ›FÀa†üø@@@@ê™Öê¹t €€€€ÔÈúÃW¾´ƒ6     «Oç§W¿  €€€€4ì_j¼2ƒÆ     °Zª~~zµ ©Ó|~øáŸþô§§êT?¨k—ÀYgµnØpᆠ.X»&Â2Xðj œ‡×½ºëÜõg×6HМ˜?õ/c»tÿáÎÝ»_ü¢iÑ+ ¨‘ØJÕrœ)V#±•Û  µ&ÿ¡¶„iåÎCmC:PÓ[Z^2\äƒ[ª–––Μ9C×uîºÇžË§Éz"º¹¸¸xâøñÇ{öùç®g%eÏ A €€T‘ü‡*„(†'ðìg?;fÃøÃÝ»¿^xnÇ“ŸþKU1oóÕ—«rJ·þ×ß䣯}ÍÖç]~)+?k|VÈÊÞ³ÿÉjF ‹Î©…å“§—OœZ>áÿ?íÌ/,S´…Åå÷½úÄÊ(†\@@ªHç§«¢@›-5èÐÁ¯ýÚ¯Mÿpê‘Ãô«YChA#–äÔ©S7¾ëíŸü·ñì»W—–5¾.a…CžqÁÓè¿§>ý©OxÊSžø”'?é©O~ÚÓž|Á3žüKžü¬_zÒ¥Ï|Òe?éòg=‘þ›?zd…uCv  U!€õ‡ª`„µ@€õ–——¿ño´´´ühú{WU¼AÞHŒeú®ÿŽä~æsÿ÷Ýÿ'v5k|Ëbxð¡GÈ39}zaþÔ©ÇO?yòøñ“Çh+Õñ“'Nž8~âäüü)ºôþ¿|»¥@7Úëüº«Ÿ&¿·ÈÿâŸåegiyùÌ’³´´ü«[>â8ÿ_<~ƒ€Ô=;ÿaï-oøÐw¥-/ù³[Þx…³wä».¼ñÝ]êÞ¾]£.¾þï½n¥ì¸ý-çoù¸¯Òëoÿðoô»ïï¯ÙôéßÝû­7_JIÞw¹ø¢Æd ¢  `MÀõîºë®……¸Óçšk®yÁ ^ð¤'=‰dÜqÇÖ’ŒåÓØþñcŸŸ?uúä©ÅS§Þõö×>¯°‘w¼çF=ÿ9ÏyÅü«¿þ[=¾eÈ3žÙhd™*5ÚÂbÒ³æÈ;CþÃ’sfiùëßýAª4D¨OþáÛ>äüÙ-½‚,8t[y¯sŦղ%Ÿß¦Ú;ò¡ï^ýÖö­´-/¼Ñu„‡ð'_<ú¯`Y^ú¶¯}{ µ#àú/|á ƒ,Ä÷Ì™§=íiGŽ¡ï•d}báðÇ¿{Î⯒?yÃo¢NÌ/žóôéû³òÝõ‡XüÎÂE{¦÷SüÌ}ú’g\sîYOϪØá‡=³x†ðpŠÜ˜ùù'OÒÏK.Þ@Æ~sÏ÷~øÑ´qŠ– n|çŸÙ w½Šÿæ9|ÔyäèÒÑc'ç?ºpüáÅ“G~tëïŸÕ*6Í=_„±Ï1A@V€…ÿð࡟\¼Á{‚ú†ë{Í!Âû¢ Ÿ±zü/½üùΧgîs^Á˜\=Å341׸÷Þ{iMK§OŸvŸ¿T(*¤BÎácßùÂ|ëU¿õ+$êOw=äüσνgN.œuüñòOMòÝ}Süù“ ß¹û³› ¯xÊùÙº’§?E¬¨Ä>›¾ý¯çýâÁ_¾öõÇÎÏ츢Î9Ç{JÕM7¸»˜Üàg“çE{–—–Nœ:sîÙëãg@âšà7€€@=°8?½éÊ«úïÿxÛ¡¸Þ6ðÆ7½áo.ÑJ… ¡ÿFöŠè÷”¼/ŽØòô¾²+ƒ¢•äåà£%ŒÄ÷Ò’„Üáìÿ·w¾é "¹¸7¦ƒ’ ŸÊÍ2%•©FJï{Ão¹‡®›”ñó"ÓÝF‘Ûi+Ô{u@ã?¾ð¹¿þÝrWmFºê¦ûÜëÁw5ÐOJKç¯Âùë¯ùðÇ¥á747›ÿß¿^ôŠà?ú™‡ë?\vÙe—_~9=ˆ‰Î$ÐN¡ç=ïyú!æLòÉyxtñžö\úóGáÎÐÿÃÓËŸyú¿ñôS߸èÌØÓœ:mP'Ç?uòô¦ßjÛ;ýŇzˆ¥btþáàƒG~²ÿà¾{ï¿{júλ¾÷ÀœrœÇÎíüÊÍ ïýÌÜæŠºè¾;¯üæ?[Še÷/ÑQ‡¯ýkïüË´siqQ¬áÐCq-"€€@°Xp6õÝ2X~ïÀ>ã(~öÿÛ犸å£Ä)‚Ûî¹NŠxç¿_ôÖÒŽ ‚¿ó}e: ñ—üÝ]{û6mröÞ½ÿbgÿÞC]6Ú;é\ا°à2'Hœðܹ¾"»‘ò&ö|Õ•ŽÃl”Î"qA`-øßô¿Ž;þñ±q2êõ=[ég>ë\ÿáž{îyêSŸJ/looÿêW¿úÒ—¾ôœsÎÉ'R¹ÎÃå…¶C§²´¸üÈüWß?òÅ…Sâ€Åù-/9uúô/Ž|ãë~Ç$ßÝ¿ôOûüÉS 'ç(þ36<=¿@+¯ÚòÔSó§Ï:kÝã7µìÝûÅL«ìù‡]ð¿ŽÝ÷ݶ|á•{>qñ[X^zÉWn:ûçï}ÙëMêŃýKAø×¾öµ|à_üâ?õ©O-ž'§é³¸TÑN0Ke @@ FlüÊzC×{?Ú%†éoñÎ \ôš?–ÇŽiuÂÙuès…sh¿ó’-îq‚ ×m¹êßï¢aù36<{?]ÜôÀ]^¼¥xççöºÎ¹çNçŬø‡¸„Œÿ ðu²³J¥Ë¡‹^¼I&6*£Ú{àB7r`û¦7~Ìö…rþáü«fâ£YÝdà}ÿýý+w–äyëKßòî×ÿåûÌQqš‘ÀŸ¿ýO\³ƒ/9(¸þ->ìÞ½û¹Ï}.-;ÐÎ¥oûÛyŒÅj­–%9ÇZ~à:œ<|Ãûïø‰yzºÑñ'>;üo–‡Ÿ\xà¡ãGOœÖ’zîÒÇËó‹g–(þ¿ÜþÁÂËž³°xjáÌâ"Mø/,Î/œ<óÌyZ…¸â¹¯xòyV™ôó'è¹K'ç;;.ÿù5}W~íÿµÝõ¹'ßqëòécß}õ{æÏ³=l{ZÔ»Þõ®oôæ:~ÿ÷?°‘ö/Ÿ‡ a*s„ƒ€@½°ô¤®û“WOþ¹XO°¶jæ;#÷Úpp±»w“ó¹Û8äÜéÿ$ÿ@ŸÍZŒúðÄ#§Î/íþÝ+wü7=íÝê^_gÊC¨K•xA'NœøÎw¾óüç?Ÿît€øì³Ï¾ä’Kn¿ýöW½êU9ŒþéÃw\ù¢ŽGøÙü:|äèÿüGþ‹cüä¡S'O>~õol&ˆ^€qæÌ²û 9U@@ ÞX̨í½Í;·àºçÎýÏ6:Þ°á"ç»w¹çÝö¹o½ä…ÂÍØpÅ‹;ÿi×~1½OßÜE²¼©~Ÿð^¼ÿ ­`ÐgïÝwðØöß¹Wž¨8´÷ΟºÙÙ¤âey¡¼2‰I„†ÙÏ?Ü7qëÝ/¼ü2J|ÙåWÞ% úСSVtÞúî÷qù¾¿ÏÍ”á hÛ­<ÐR½sš¢Óùiú»w¯è×þó?ÿóE/z‘…ŒH”ó–®øÀ{þáë_þ&=­õÀ}øñáC?yøðO9IÏ<:>ÿã~ôè‰S§ó˜”ó_ºóÞoï¾ï¡û’ãqzþôÉû¾?÷ãì¿úÀOôÀÑc'î»çÀW?t×Ïí¶Ô0vþáŽïÞuûW¾yë®/<üÐászîø—|`ynîïcNYÊ ¢ÑÊ9´G‰þþæomþò׿ó¹Ï}Ž62‘ó°HG Î,/`ÿRV¦ˆ õDÀbýaÓ†ƒtVØUúª>&v-¹ãú˜›ún¼ž68ɘ½æÆw‹ç½’±©è|fÒݰDß÷Ó÷c«l ][^ò†½IxW½äj/«M/¼ê#÷Î7ý©Ñ+r¹èàÈÞHKâ`†Ì.5UêÒ «Œ—}5þ Î?ø™œËÞü—ð„ß]/\‚×ÿy—ñ+?|«íŠÿ»óõΧ«¡ d€D,8ç<ë²çSÐÜýÓëÖ­£/´AbzåæßËGê™^òêÍoûä­sìØÉ³žÜ²û÷Ѳyó'OÑ—w¼ûý6b_Ô¥s®}åãßÞõõ眽þqëÏ>çìg¿üIs÷þÁgïÿ‹÷ ~Ùv–=ÿ@ʬ?öÈKþá­-?ÿÙO®þ½_\xÙ³>ø§/¼ù-{þì£6zºqèÝ÷Þ¿ÿô‚Xa8µèÌŸ^¢/gžðÜ—þös¿~·ñ1Söò@@`Õ ´t^wC Ä_¿ç­«®µì[¬S¯TÄ;wï~ósŽ3úTÍ`åürÛsà°d k‰@ºÿoa-•7l°!@¯v¾ãŽ;ܧ Åž)d“\sñÅ—¾õÍýÁo×/UrãÎ ¯Pˆ›üô¹OøþÛ>tößöÍ[‡þê_Û¾S~´*@€€Àš î?Ô«™ô‡Ôà «¯{ëºVzpÊcÏ©ñXIÔôZZrfxÑ%Ï¥ÿr&6$£QþM7Þp1gð+®þß9S’ÙôëÎ'îŽ]|ôWº Ñ   ÐŒ×hŒÒºð—.ùĿӓHC]h kˆ9.`žzø!ƒ‰Í§ŒšªFŠÕHlåöB€€@­ À¨-á \@ÿÕ6H•"`ñþ‡•Rù€€€€€Ô9øu^@P@@@@êˆ@dÿÒË_ry©U@@@@@ªM`nnŽ^“ÚÚÚê¾,5AüÒÒ=‡þªq°þ@ —@@@@@"à?T©BÌw¶´ô•«$ bjD !Š©!”\“òèÁjT±!@Öþƒ¼ÇzŸÎáÙÆâa¯|¹¯"w ÈÈäS¤Ë—"T¬L60S¡¤k’(.Gò|I‚ZWQÁ$Ú’p1‡Î¾´hÒ\‚´Dùäh‰šÌë¹Kª ¦ZÎ¥ ”Ƙ+}¢ðä‹•Úž,=éj¤à’Í®¾’q‰ñßIŠËk†þ3ÎQ SóDú#ÃhÛ¾‡ÞÍ*?ý;½ +º5Ƚ£84#tŸrú·UÏý‘TF—,¹”&zóùì®±Ž‰‰Ž±]‹ÆÊdóçZÇ){'ÜZ734Õ·®Å‹©.͵Q²kÄm½Ž‹eÏö¶µ…Ú{·ãi¢Ô|k5Ê;û;| AzÛ­sÈqerW+òÊúÂm…âÔ>Ô•ínoëüg‡·MúaUìS3€€¬þC¨Ú쾩bÁ¶tÌôŒµ¯ìݰ"Hm›{Š“Óþ½4œT§÷ùK-þpU¯ ¾gYçïºKÉê ÷akW[ÁQˆäéW•ÙC×"i6iRêv'³}ãCʦ¬r_çp9BÄ”Üq8ž&ÛEx@)9]%™×V RóâôÔ´7›éæ•Eù°DýŽW0¦.%åÎ9g‘u¹3òØ ÙáRï„î4ðäu3e))½‡Ì„±=,«¨d-ÐùmÂïleP ÞMcà™ž»Ò8x‹¤*CÛöÑ¡bi<œñV”²wAÑ…èª%[€A ìÀYÛÙú SŠœ ¯*ö©Éã*€€@#Èç?x7åö±žÑpÚSLMÍåÏ'{·Êº}Žouç¶—'œîàö]ê·šVsçäl–Ê}„L®~ÐÚMòÒ„ë>84V®šAÓ„AîËî|µœÅ&MüQDèÍnÓE1Ù™ìpFý‰FZy2$gyf°=¥A)%ç8q•Äà2€®TÍ ñ¬žbpάK 3SÔ´¸ìW0Z ó¼D¦.eɵ(C¹[è,£ÌNO3a–<]Ž›éWÛû''ûÛC§Àal”¦¬§‰ë,zepËNVY¿&x¦åYõŠ[dË-¯mc‡#Ø‚SЉ¥Þ„™}…|:%ë9]äHXÛ™‚“‘ÙÎ_^‘õÂëS½ü  ÐHNŸ>½k×®ãǧ*ÏðGcƒÓíÑé6q#¢¸? Ìk©NÅŠŒ÷-íä¸Ãe1õ'àÅd|°Â̰ViZ­<^ê´ÛgB:9ri§Š„E6« Ò`Ú–Fy Ç@}ªú쳑å™`»¨4‰ÃBO®_FÂ=3«¤fÔ¶}°×<ÊêéPúâÐŽp#š¡ùÁ¶Ê³bü FÃH³šlJ>·(K¹óríBäãfºÃUòä¼­„V¥o¥C¼2P"CM¶gm‘'-weà Ž¤V¹ ò*ZyÜéuÜuŽ ûÞâ'Í4vþÔ±wO¥4ëüÙŒ¬ ‘@@ Y ÐZÿã?þãG?úÑ—¿üå3gÎ$cÈç?ø2»¶öNF¶×ˆ^[LÞzÃAw  gÿÂߊ,—ƒ¼””Môþ@FªÊŽe™éVƒüj‹ñ„ïçÐ4m•¶0¹äGmbÒWÝ$W¹ÜG»u’xR÷w:O>]b¨¿HÂPbRÓE^ÏÄ1•I”m¸?çk?c<Î"ër·Î«JµE~¢‹ñV)¨c1ú¬&I×d“àê„‹ÊàÕ6®à¢™$tAÙ(‘û°ud«ç@ä6$ÚùSÏ/üz¶ïT²X±ÎŸÍ(·­H kžÀÉ“'o¿ýöûï¿ÿñü9çœóÀÄ^ø#P™ÿ æj{6ûX4Ó'&õÍÓuD_n=öÆåbR.8ÎéH='ƒ1¥·:A“” º$uy»ÅT]Br±úàßÅþ¢ªLNûúˆ;+¹O‘s”ÆC•vfF“³<lN§Õ¢ˆN”  xçâÅ6}ó¨‹ÕÓ¡aQ>&ž£d£|h;íð·Í1Ê'q¹Çâóy‘lË]NØ'y—$OA)…ûÚÜìÉ'™½F%x²‘Ž%s3Ôj² OëºäjmSûh×Q¿#'ì N¤H”4ÐTFÎ8¹]TÏñ]N‡~M‹™ tþ–ÎCªHDX-ßýîwðƒópÉ%—\pÁ§NúÙÏ~–¤Lçu7ÿÉÙ÷Ô²q_™3£ÐÈ Zª˜Õ‰ lš'¼9muW¼g†z>!˜ùo—fqhÈ?6=ÉÀ$w4AòÞ åÔA…ˆfPÈQ\¤ø­&”Uh½ŸkU1S='¯'1,?+£íâBjÝáqC½*¯‹¥Ì”ÀPõPÏ(¥3 ƒ•òªÈ wU÷à;[Ä‚6Ÿ»^&ŒEÊ=ÈI§Õ(5'¿º†Y%›éåÍ…· òN­ŸAr5&Ç“ÍǾà$›Ê`*”‚Kî‚b§©Ì¥'sq/+_YÛ)0È4ø®Ä 3‰&t]Z­A€€@}Ø¿ÿÁƒ>üpÚçÈ‘#‡:pà€ê2´ÐÀ½Ø]¾9ÉÕÀ5hx4»Ngå3ïƒix»3à ¯ F¤Ë@!Øý•Á¤5”ÖxÃ<¨>¹¹¹uëÖµ¶¶Òßdé´‘iqq‘þné»1ˆYÙþ¥ä qê„@pˆVœÎ©‹q€‰©!Oг/õÂHÙØO»ª¨ðÒ6Ø×'×kJ5 ñ  1X@•&"€õ‡&*l˜     «Kû—V—?rF"ÿ¡‘J º‚€€€€ÀêXCþƒ<û™òÜúÕ…ÜA@@@@ Á äðä8ÝûTéµ_êÐ?íLá£tÒ_se_8$5êzD²¡œrXªÉ´W1A@@@@ . äðÄ{l½ÏDGðÞf,çb‡LŠÅ©ñ2ýœ¥w¢¦½o9|—’ú˜I©WÕž;Ù5"m ^œ„çFÖeý…R    +K ‡ÿ*8»‘Lò IDAToªXhswÌôŒµçß?ÔÑÓãì›uÊ;§7î(Èw<‹…ˆ`M òCC,‰DÖÊ}Ãe±$pn”å7L®4t—œR·»¨’²*\˜#V*ÓÑ„Šµ‹á¸îl      P3ùüo¸Û>Ö3ºÝóGÌÿÏòœA˜žt6n.Lïw¶vyƶmî)–äš„X•ëßûåôƒwI„Ö bŸÉþgÔ]GðVJf‡·õÌxË'îš‚\iÖ’—0ÈQ ·»Ÿ §Ûõ *”)œz1–'5\@)õOúºožuMcãfã7€€€€Ôˆ@>ÿÁÛܳ<8ÝÝ´$ò4®Î¾•‰Ö1Ú6ÆúC÷A8$ƒ½®QÞ9Ö³Ã÷+'Ø¿”º©¨wÐóoHc92'§ÄéoÏ®Ÿ‹ŸÜ˜ÉÀy¡%‹)Z1©T¦S/‡ëü’îõ¦¶BqrÚóØÀÕ ˆ8|þƒ/¥kkïäØ.oh+ÅF1—ž:°ë!~ çÛ~wæÉDy|ªgs°ÎÁ%µs—*Fmb³RÊV%NjqÈ_½ µÏÌJe:S¬ ¶‰©*±œÎ*¨ÌSçáÈžöá´‹-7™Ï0Ó9 ƒ9ÒèwüeC´ÌÁr¯ÕPÑsSÜ䑼Ķ“Á‰ñx[™ró—â¹üýIq¡ô»¼³Rs0Ø@&1‚@@@@@ šrøáYß–ÂŒ¿Ò@¡ô+»ïbL׎¡©’º©‰ïªäŸNz”¢|äôå#ö5¥-JÐ)ñ¡)ïœuðL× e:]#ô+7oÕ±ð7J‰õœÀ%cY&êhé¼î†@êîòÍÕÏ¡2‰´!j›3šk;Te¯rjòIè vl%‡ \eE‘=€€€€@c˜››[·n]kk+ýMÖ|iiiqq‘þné»1ˆ™cý!9—ª]uŸ‰J¢šÏy¨Cêh­®¸*JÇ ¶WQ^c‰¢çE…Ï›òUgË.h     ÐØêwý¡±¹B{X‹à?¬ÅR…M     PðjÃRA@@@@`-€ÿ°K6€€€€@mäðÜ#ÉW%´$½j!«ÂR®*0ÈH}M4¨¼€!¯V$"Ç˨³šˆø     ÐØrøâÁHÞ‡Þ{¶³ì xeÎÄì®±Ž‰‰Ž±]³>Q7£‰Þa.žK$>³wB|Á_»RB{º%Ãm™Ý7U,´¹¿éÍÌ=cíù'ñ…û°µ«­à(DÅÔÂ…‰pqAY>qÉw5} ¢j1ôÑr ÃbEE]¦a¤â€€€€Ô|þƒ7ZnëÝîùŽ#Vf Ê<ƒ©®ûà´mAÃz…³û™pº]·`vxÛXÏŒê®SÈÕ‹`íbÙé3ÓdáèväÊ}ÂwF—ú§e-Ólö–UØ@“`„ƒ€€€€@}Èç?x†–§Û£›–„AcõÌ[™È}päJFõ9YêvçÿÅòÂÔ>1‚òûÛmô³Y/‡vè¯{ëð|‰¶BqrÚóØÀúªÐ@@@@Lòù¾´®­½“‘ýFb˘ŠÏxAŒõ'iXOŸöþɨH“æáÅ!¥<•Üó£Î6‘Yâ‘iû˜ŽÓ±1X†áõ öy©—Ù@>=BA@@@@ Tæ?ˆ™÷žÍþЙ¶ñ´‹;áK ÅêC8ÔŸè &ë-Ó³ÑÚ6vL§»ã1ä^«¡¢»&á]Œü01åî-Åõ /ª4àïOŠçD¿Ë;û'5ƒ d#@@@@êˆ@ÿ!<*Ü2P˜ñW(”~e÷ˆ…X}PÆ×b8>.žêäfäŸlö6J±,P:Ñ=4åo`òw,)ÊGNotíûš”E SL&¯®:áà&V ÷”X |*6‘‰ ¨C-×ݨµ»|sªØ˜*‘ûA§·cK1l`cÚ­A@@@“ÀÜÜܺuëZ[[éo²KKK‹‹‹ôwKßAÌëɹà*€€€€€Àš%кf-[eÃèUú™ØÀUVÙƒ€€€€€=¬?سBLhvðš½À~°'ÿÁžb‚€€€€@³€ÿXÄûð’ß2—˜A@@@@`mÈá?È1µ÷ñ^ÊP &5k©=Y5ñeÔ–b,¢)ï•°Ìråt³PQ@@@@šš@ÿA¼‘ÙûÐkÓvŠ7½Ñ‡¹8ä<´÷wLørý—Ò­zÑH[3¿OÛ¬6Qo“ó?U”lÎW@@@@@ jrøaÞ³û¦Š…6÷7½í¹g¬ÝrF=®~yg¿34ÃŒ¦ÃÉzu@LÆû+ ŠÇ¢Ç$—¦s¸ªOÿËÿ-×ôÕË)XQ×% ¹«k'-f?jvx Ô;¡›©$3 I·à؇‰ß     P3ùüoÛ>Ö3ºÝóGÌÕÏrœ ?ÄéØH‚ü1³ëÐ/z…³û™pºƒ¡u©zP„Î 9c»fSÌÉþgT VJè ÞgfhJÊ”!½N¯·.àïÝe }ôÜË}bÆÍFˆ1®žÌNOþV(UI.TrmW…nîÇdf\EüÈç?øƒðÁéöè¦%1覡¾y Þd†;®–cö™¡¢Œ5»kl²Ôí´ 9ø©}ÒWph„îñÛ6vLN‹0cL§wÐóoHcÏ/fðÛû']yÙþj¹gK®Å.—-Û¶öJ“ÔÀ …ÙLM(@@@@@ &òù¾*][{'½%7H, ˆ þÆ)xÖáDÄø±ŠCî´¾œÛO”i³Ü×=å Õ×XíR…þvéèíúö¤@@[¡è:<©"MlÍ4¥G8€€€€TD 2ÿ¦É‹=›ýL4³ß.v%Œ  ºÊø¶ao}Á‹$¼Šàx¶!¡lSCž„r®€.ë‰yééTCà’$ÛÞ¶¹§X ÷ayÊŠ¥Ïtq@B®Ä§Q—'ÓÉ#óõL0S.ªÄ e¨…àäðÂ#¼-…U€BéWòø™SÀ £íEtBÁÃöÑ‘l:àm`JÜ•!f°V0PRÎ6tír¼ü½a¸k¦®:áÙR´éÈW]êšuj’ñÓž­Ðt:G!¶mõL',X'±7ÓLW@@@@@ -×Ý$ß]¾¹QÍšÔõœ¢~Tâ^«f»A@@@ê€ÀÜÜܺuëZ[[éo²:KKK‹‹‹ôwKßAÌëɹ4ßUåøƒ{ÎCóUX    ÍB µY ­¡âiT#5”Ñ     P/°þP/%=@@@@@ þ À¨ÿ2‚†     P/à?ÔKI@¨é?ˆ×Ôi¯;¨Ø5ÕLòámfnÍl{¾Ú‚T   Ž“Ãƒï“ð®ƒ,té¨ÊËÏ¢¿,åh‰”×T¤½–Á”…&Ó±iÂU¨ñ×Õ…¨†°£5GÕ'~Á¤“¡èâɹhœÈH­3â*¬]†ÜÑŽ¸¢B€€€@ äðè…gËÞ‡^|¶S¾%YކØ1cu EIR^s-žŠDzùZï„ø²ÖŸªjÄ+ û‚£˜ÝŽd)?fþâzc»¢o/Ònïï’W¥8Ê}íôÆ=©x/ŸRË;ü̊ ,7«ä¬™ŽWÝ\j¸HfÈ+bck{,v³µ##,\ðäðBv³û¦Šz[²øÐ»‘{ÆÚ«:^´Ãþb‡?6 &†Ã‰V9çë¿(š¾&Oû OÇû„•éf7£ 2EÚ@RäG<'ñÛ³Cfè¦bÍ$-;‡ËqãÅ <®|˜I⫯5Þ¶àf‡J½ìX\hu»¶†ž¥›3È¡-¹ª½‘,ïëfvË¢òáÆqJÅëºé#ÞØíN‹Z3–‡4ã5†KÏ]VzÍL%3¡Q±4ú×Z­sœ}ñ•ÁK¡.P(å.ÁHß,1wE¶‚Õ_;kE€Þd¸˜ŠÁø    PSùüï6O“¿£Þ𔓙3…Ôñ{{JýÓƒîì²?6tW?hU!üÈÒ`!ibÜCÆñ­rš’8ÝîXmvx›?í¯SdÙ¶¹§8µÏmŸÝ5æ í躣p¶Þ7“PoÅÆßFÓ¾™âò6wpè8“ýΨ«¨7g§Û½ùa1ß]Ì‚6ŒkWp³Ó“³˜žO׎¡©ßŠN#r§c# õýq«?vW‰ÈL±€à 'KÎ èdÿXa†¬’p™‚#z·JÖòÓ¶±crzÖ•ßÞ?9Ùß.ìQÇ&ˆ-SÈ•´H]2$gr—’âfFÄ “ò2&[îQâ—Rûk7ɹ«r¡qELÓ\“1‡Ž!   Õ'ÏðǬƒÓíÑᙑѰôl–âåñRÑó$ÔÄ4Û/\,ò,Ô©ø`^¿­P¤1°— ˜['Ü"6‰T¦Û{؉ê…ƒ9gÝÇ«¨àDâø~$}{ë}È1»âê3Î4ä4õÜ‚ÀZrØ‚cìv}Ê 8änlŠ+ƤQ‚øäæÜu3ùÆä|¹3 AV¹‹´ÐŽL”ô&cŠi „`êÈç?ø:tmíŒlt#T1ëžmÐ5ILU×ðã+å̾§§;ju¶©Ûeìuð‡q4®éð÷ÓPj9ßÎ|:z{ƒ ýr†I~=qrˆk¦4<¾‘(½à"®Mr>îÕÈöájG"ÄÌz÷”7ή0hGùë>":·éˆ“3HËÝ—“°‹(Xtqcò@„rÍÌ[M‰9žI{˜¯™)iM&gÎrF2T•ùb’Ý›o§œh*¹]l7ŠMS•ph$l“‹ê¶”ôÔ~ u0iH%†±Á‘ïx1¼ö·Ë$É”SæÑ-ó4ˆÛU&÷!ØOCc¾’ºÇH[Q¦·ŽŒŒÒY‘ø¦{Apgÿ¤Éë í6DÉ)öþ'Œ8ã¦%ÿ¶*8±M«äï0ŠÊγxÙ^#ÇÀÁÞ,]ò$Jzhœ\6òEÒ´~ÕyK•ý—{ Å´‹ˆŠšŽ|ˆÍl‰É…œH¹{Õ8Be8YZãŠäÞÐíÈDIo2¦˜Ù )@@@rÈá?„g[ 3þJ…Ò/mxc§ÜÅ®'ùOÔIð@ÜÜýÓÒᨕÆQbRÚm† }önNÁÞxŢȑK™ÂF1 Ýݺâ@9fpRNJ{óÇžÁ¾úþ–*±tc¶]$òE J•,ò„åb]p”½Ê.í˜:å ÖeoÍÝÉî ö*…3ë…!õL‹Vo¸‚‹1£“âü9üÀû3Õ%-sñt½ÚøÑ"fÒ¡¯z‰•¯ˆLÉõr«\DÊ÷k)ß2BnìvÄQ¢"bš S/4„€€€Ô†@Kçu7’w—o®M.š@€†Ht¤;eì›Þ¿T-9YÙGq½“êx:ö¹®xÌššÎdÅ­8d   Ð8æææÖ­[×ÚÚJ“µ^ZZZ\\¤¿[ún b¶&§ÁÕz' &h½?ôž‹ðiDu¢7­:ÔN5@SS3i‘¦»»½¥ßÓ›Š9|è™ «iî5 ‘    Mþê_e£?ñ(¬‘U· Ԓʸ–t!@@@ #ç2æ€è     k…ü‡µR’°@@@@jOþCí#X+à?¬•’„     P{9üñ¶°Ø j¯'rX}9üñšfïC¯3ÛYv çˆ2¯ ^}¡€€€€€@Õäð¼g÷M mîoz%lÏX»ÅK‰«¦:€€€€¬0|þ-6ˆOûXÏhø*+±.1Sh±Âeˆì@@@@@`¥äóÄ ­Ägpº=ºiIøN7¶2­Tù!XIùü_î­½“c»fC…ÅÙêngbyO¸,±’Ö /Zh­Hxy¼Tì™ñN@8´«IøË]ÉDbz%cýÁ;ü @ fü• ¥_Ë#p굨¡€€€€TL Çúƒ8ü0¢eL¡p4*5E Çúڲƀ€€€€Ø€ÿ`Ï 1A@@@@ Ù ÀhöûA@@@@Àžü{Vˆ     ÍNþC³×Ø    öà?سòcŠ—äµô•³'¬JŠÕͽ*&Ä„¬=‹²Q"û£oqg’Óã‘W­Æ1êÔCÐêV›ÕÍÝÈߦ.9N*o´ªÞ/4Oô!õ^ 4þƒì,½Oê¸Ç’†ÝmÏRXÎhŠ]b¨ü´·Å’³JÔÈLöÆÀ²Z±zòª(oC‰ÕǨëI1Ù@“=¼ÂäºÀ¤r_ûXÏhø¾öÚ¸ºF&œîjµ¶$uVóq?–Í.Ô7kƒ]%K#F’¹^¡ò¶+ÍÅó É]cbu‰—Y©ÝZëHTÉ.7M¦H¦_U¿Áy6EbWß @  rømÛ÷,{Ÿ‰ŽþÞ<<õ­ôñmÛ;ÆvÍVÁ Ü"Ê;û;èåÙò#Þ‚çš9Ñ« ”Wâ/Ê‹'דQH5Ìdsgs«r`5”g)­šEU”G\¹^Ù‘ÐpzЭ„3=cÛ†Ã&Awÿ°µåɪ!ÒôúMPk`šúñjcn°ZÒ*Äs·)^ŸCêX\[ÃÂ×l—îÀŒ[üÇœœêN´. •4™RÏÜʳV&¨ÄÆ· $ç¡=ì—•&b•¼V‘–§Ò}H­ÊrA¢rø¡€Ù}SÅB›û»k„Æ;íú&‹pÎFPSKQw£k+3:Rg ü™:uÈYîëìë‹"ÃÃr ÓÏŠËÜ0®Úb®$Æ9N.9—;c¦:÷|_†ý…Ÿ“»Ì£»ä”ºÝ™[i9(âTR€¸“ëʳä…À °£?” #õa,’Zv—ãÆ«Ó‘ z•¯Ðv©®þÑ€²Ç aåñRïV彋êï¶Í=NħîÚÚ[P< J/øÙ¸íššÈ©äƒråcê€Ü[=™ô¡êa»æ« “8²%JÁí0(ÏPâd²¹‹˜“`F}Š]D7V¼.ñiYå+jq|>"”ãäéÏã=˜C ÎÐL|’&]O¥çWªj¸v£wªfõ­®4Oߦ±2‘@@@#ÐyÝ ÁþLWê¿þ¬|q(˜óæL‡Šêœ—ˆÎØ(bg(^<1…Eƒ(µÌÖ©ª !Rº—ø‡ørèß ï ½"Ó×Aüù¨Z°G ÉÙÜ…öœ™¬ž>ºx]%=Ä…CϪ—îfejÊ ä”‹ø'JÞ/v?O%7·x^ž8yÑ¿–Iϸ@I]‡œI¦Fù׳>rE„ùÆÓw·.±ŠqÉ×S¥àEÐìñãíHS”µÝ/3;«æéVHŠ~v\L-çˆ]©zJ•ü[…ÑZÍ7†Hý~ç”ç)™MÒ325XVF,9o»°˜> ‹xr¥ ÃìÌ<ãÉ @˜ŒÙŒd–1™,O ´’µG ©ÖQ¾¾Ì°~ªÊß%¯y)©Øòáezï5#f;Û¸lm÷s®&OÅš¸ªœ¡h û÷ï?xðàáÇNû9räСCP]†|ëÞŠõòàt{töS,ŒÓFmoN”fÄŠC;”éÕ ÷ñâKÒ¶ûc‚Y­öþÉ@ 7‹Û;l$ŸÝ56éÏÊ‹ú©}´DÌÑùQ(¿ÞÉéYo£’Ò»Ç oÜ7wÛD<9›»Lnk&ÝèÜé·¶BÍŠ?¼Jb–»¿Ýj›W^'/Lì-Ë•c=²ð”Ì6¥DUMbȦg\p5lË•‰­Þ~Á9m…bPrl &²mûèД·”4^ˆ;¶"º¬ÆÁ‡kGq¡¼í"–™ 䚌››<ž»ûÛFO3pòÂFȶw>› ¡qåÍ”¬…VÚ`uÛ½V#vs>±A—i2'dµ[œ»²- øN„[CüþÛëÌõ“³Ô®r)ݰÆå©ØíCÌÆâ €$Èç?øi5t2²ÅB¬æÒ&ÜÐ7èØèíoJÐ!¸Û#¤ÓÐV|H¦·–M›|§üUu>ˆ“™#Êæpâ2†s×·e”œ;:§’;Fu¶©¿Ì9Ø)/–ÉÉ(OõlÎPÌÙúˆµžš¨*Ø®ÉtR«w°¿OMËzÜâS#§'uùzˆ®•ÂÙ®EªÏ€,í½B ê•’¬ÚÞµ ­MOž±gÐr<-eŠ9“šŸ‡Kj†š1U°´Ý˜S<£2sõ!Fµp@ I Tæ?ˆØp€H…òðg°kÕ¼ÙÒ°ºkÇÐT°Ã{vx ð¸Ó”4²(%”š¸§»ýx4#l!'ù¥šÝBØÜ}-"fŠ@oB(Å¢ccÓÒ^ÌØ\5$Ccšæ‹¤à§©4åYµ¤Ñ7î„ëAl´Ìâl¥g l—áÁ®j:¨ŸGˆØC{¸u (ª£\§Ñ?ÔBÈQŽ.Þé‡l í(".±*êÇCªÒdlôŒgÿ·uØ5® )Å•­öïô³ u©"e¬[\4—Džé2åÜ‘úø£ Æú™Xî±¶oÚÆÜ*¿n;›G…<™zÂf‡@H#ÃOŵ füi} ¥_±q¾|Þƒ»‚`·þ.6÷øƒ~ùÝOL#7w§T¸(1PRö£ê†Ò‰î`/ˆŸš:ï@#ñl“„E ×Lÿ`Ÿ·M‹ Ô³¦.÷ ¢j¦Cr±ƒˆ>i™r%(Ã[=UI)ÍÈsDõä¾öåYÛE p3JŽz6˜‹j²H›IO]ù*ÙÕËP½ý]sb!.ð¥Ù@¹Ñ+r$:8Ž)<ñXí¯Êã±¶ë„ !šŒABEÁl{g« h߸ì)±Ud¤›8ØmÉ<ª5¥³"z]bU²W>S‹ÓóbyÚˤÝIaO­lTÕ2âë§©ÜÙfHð tЄŸ/Ñ2Œ4 OOë¼}H \hB-t"0{wùæÕG@²ë–_¤NÑ_«¯f¥4´=ÊÓ@x›3šàŸU °NÓšñ­ñå26Ð3À‚åšluZ~ ­–m]jh#ó+ŸÐ éRÄÝÏŸI=§Dý¨çÒn °âæææÖ­[×ÚÚJ“3_ZZZ\\¤¿[ún bæXHÎ¥â«4ñäŽ:•ãî ˆ55 ̬Ø*HTÞB§ùó5U^5£,|œºSƒ{¶ÍT‚à%`W—Ô¸Z©-û+q¨N{Zl­r\%¹èCV <²5J þÖÖ(h˜    õ@`Í­?ÔTè     À¨¿ýKœ–¨ðê¡ €€€€4ø~9ÉctÊÓý£ü %€€€€¬$þCðˆúà +©p†¼èiuá'³g˜™9eŠŠBpµe¦d‰Ë     P9üñMïCoøÙé½>—ëÞ;Öª£Xu¤ôNøª¦>œOš¥ÄrÍœH|E].%éM¢¹Ò!€€€€¬:þC¨ó쾩b¡Íý-=Þ^ÿëꢄ¿ PÙRC¹¯³¯ö>‘ÿ4,W<|±aVXnXõŠ@@@@ªB ŸÿàŒÛÇzF·{þƒãˆ û™Â@]"(u{;˜‚µzõ™÷™šêvö•.5L–œÁå‰ÞÉþ±ÂÌÌPqj߬ãOBï!v?Ž—QUŠ B@@@@Âfæ IDAT@`ÕäóüAøàt{tÓ’‰Óh¹n¶2û—Âw!«íý“ÕÂÞ»µKˆê ¼©Ù]c“óÒ]r¤O€€€€48|þƒot×ÖÞɱ]ÊÈXìêv&–Ãázñ)÷uO ÍxËÕ?Û Z[ôó¹©@ÈûJ=QgØ €€€€H•ùåñR±g³¿ƒ‰föÛ§#‡ë˜2y¥Ú©G‡¤'ƒ³åÑl„U‡GÍkÇ’A@@@Öþƒry 0ãO¬S(ýªû‰u±bÒß.E †üõ×"r'äŽ#olÏÚ<'§óþócá/Ø“CL:&ÐÒyÝ z»Ë7×±ªP @@@@@ RsssëÖ­kmm¥¿É²–––éï–¾ƒ˜9Ö’sÁU5KþÚ-Z    U'ÿ¡êH!@@@@Ö,øk¶ha€€€€Tü‡ª#…@X³à?¬Ù¢…a     Pu9üñþ3¼× ê%     PÿrømÛ÷,{Ÿ‰ŽàËôº5¼$­þË‚€€€€@%røav³û¦Š…6÷7½o¹g¬½¥¯\‰6H      PÏòù´Ø >íc=£Û=ÿÁqĺÄLa >D=8t äóºFÜ LƒÓíÑMK‡˜pº±•©‚"AR¨[­iÖµµ·{`×ìö`‚ÎV·÷wL,ïéªH.ƒ€€€€ÔŠÀÜÜÜ÷¿ÿýùùùä Î:ë¬Ë/¿ü²Ë.S£Uæ?”ÇKÅžíjêv&–—á;$®‚€€€€Àj çaË–-çw)AûŠÜ¿‹‹gÜmFKËâ<òè׿þÕÊýá&”\{‹C3{¼µ (Ì,‡Ç!V“ò0 •‡óÏ?ÿĉKKKä0Ðúrüø‰cÇŽ-ž9sf‘\ ús¦í²K(<&$Çúƒ8ü0¢éB¡XwШ @@@@›yªùÎO76h     `IàôéÓjLø–Ü @@@@š‘€{@"°þC3VØ     ùÀÈÇ ©@@@@@  ÀhÆR‡Í     ü‡|Ü @@@@š‘@ÿÞ1Ýâ:‡g›‘læ$ÃhÛ¾Ç}-ÝòòDGÿβ ŽÞg¢9ë¬h9ü‡Î쾩b¡ÍýÝ52Ó3ÖÞÒç¹ÍC–‚€€€€@óÈç?Ðbƒø´õŒn÷üÇë3…øÍS}`)€€€€@“Èç?t¸;˜§Û£›–„1átc+S“U#˜     Ð$òù>œ®­½“c»”#Ôâlu·3±¼'\–h0@@@@š€@kE6–ÇKÅžíj¾ÃrWN™"}©wby$¯€œù"€€€€4%õë×ÿÍßüÍã÷¸óÎ;ÏýK_Î=÷Ü‹/~ÖOþg?‹$ÇúƒwøA€(Ìø+ J¿0ög)#@@@@ê“ÀcûسÏ>›þºŸ³ä'AÕëâðÈ&’B+]6àk9!@@@@@ J^÷º×Ѻ@LØò²QzÿÁ( @@@@@‹À-·ÜÂî_2Y‘cÿ’IÂA@@@@ŒÀ ì_j0"P@@@@@ÀD ¡ö/]q…³w¯É„ƒ€€@õ lÚäÜsOõÅB"€4,¬û—Võü9 G3¶  8€€@ýÐÎÖ¯ªÐ @V„@ÖýK8ÿZ,ôN¼èK¶SSäˆ ^¼×ÒWΑI@ 1 4sofÛW¨¶ÒÅÑ¡®kd °Ðþ¥ë¯¿þ¯xÅUW]ÕÑÑqÙe—]xá… våðä­ÏûTm`­¼T¢¾ÆÑå¾ö±žQåuÚžùv·&…•]¿¨‚„Ù’%”t5.ÙÛ^áÍ»Â䬭öʳÉkÖŽí¨BD”wŽLÓ TdQšðš\Ï…1›™6€©½çRÏT…W&*OKóºF&œîÔqËì @ˆÀüü<½-îì³×ŸuÖcOŸ^|䑟>òð¡CÎ8h²"‡ÿж}ϲ÷™èèßéÍ™Ó ¤Â¾šÞ<í}êçÔå>z£¶ÿŠÿÁ»-Ewöˆ)´™Â@îíGþxS]ǘìpF媄2“¤ÊMF32ÞÌÐT¸h­ÇœÞæÇ\^Ns4÷Áš½{Gkìo—7po|&^±í~„žîí¯ò©GÎÌÎñ­^N´Šïf”ÉvkSµˆÒFZ9ñד¼UBb¥’1y†‚ÓtÊ ót¸‚#¡¥þéA·Ö9c»2 ShXétl$ç›ÚUÞ¡Ä•&ŠCë`^y†«TaîSÞ ‰…,²à’ (”@6·)TTC²XÄÖy¥Ëêã7Or–öÎÔ:%¹¨¨Ù>öf:ÖvFcC`,¢äz¥e+ƒ½í&ÈqU zÆ£™~ÛóF–œA*²Éþ±Â ­Oí£6—XiɘœÎÔ0Mz"@@@%ÏðGSƒÓíÑylqo¤ñj®­LÁþ%uXß;è= ,ƒS³ié;.rÒÚ+ŽUµÝq*SiU•¯~Á £¿›V/dÙˆIØÄ\ª°ùpw¥#ž¼8D«Q·§È-Škã8¢7ñ–ë¨I>/¤§6…ð@L±ÓÃ+63=‹”öÙÇLɲ†—+ç™Vi­ÛN ­„hXk*óÄÌfÏfd#vbˆíÕºó[³n+ƒ]®³Ã¥àP†Q‚¸åøë߯HŽ›¼+Ýœ6å H3o¼"½¹´”äòžìŸlkÂØ.'ו=ôñ$¹~G§ý²ªä[Ëz¥”7ZœBÞMgÓFËŽ_Q鈭ã…à2¶ÞÅÍC6'ß<"W ã%Ÿr‹8+©åÎurbßÞY a³¦éŽh3¬rÁqffËÐŽ"²³Úoi¦NÕÔqÓü+È“©´d‘vú$3~$àäð‚-bï…²1GìĨÀw6ÜhãNq5Œnt<Â=hÝ¡¥T”=—U‹J+ã´*zü.ØÒ잎¼‘ p†u ìxwUò{;«ØÀ®Cbó}”älžtšÎWÈ“ô‰È”!1ÛiD¸&¬<˜ÉöPU¿43©¤'7\õ•×°§GóC¬Tòž8 Š#ú/]®|Œ[¿“ý<2Þ0'§}Â…pK©BÈöqÕ›Z[hdXkuÔ.­Û;¤mû¨×8hº#zþ¡ÚÇ(ï턳iï”ZoœE\6”–él á!›º ]O)nåxrÝ-øÒðü­<$„‚€ä"ÐÒyÝ AÂÝå›s É›ˆ^Z÷‘Žâ%åµ´ÞÓ‘•bÛYÞß*ZX‡ÊסJPí-ж´Ujwµ7³Ârh°ä«Ê3¡5­§ÁŠê‚4¹¹¹ÏþóôGtâĉ¥¥%ÚìNèËñã'Ž;¶xæÌ™ÅEúKÿo»ì’Ï~öÖk¯½öµoû»ÀÊëF¨2}åœê¶5ü@¹¬ Že4¢óP‡ÊסJ•µwá©ö5D9þ`±$S¡MLòµWpŒ‘+´Ú<ãïîYAÓ‘€¬}XXûe A@BX@mhzXhú*     °R°i¥H#h|­«iŸèÐ:2>   °bèÖƒ€€@VÕxôÑ 4GR<Î:ë¬ùùùsÎ9‡Óó—Ü¿çž{îŸøùöáez ýžÈDÏ5yÌc"[–røô\öþIWQzÁiý¾j:K¤µN ½½ý“Ÿü$=³5ÙPr.¾øbr6Ôh9üñ¢Ïí® zÀöÎòvùàÏ„gm'«…«     +I€ü‡¶¶¶………d‚ü‡uò£ê–ÓÏî›*v¸¿é= û:Û[¦õ%d+Y`È @@@@V—­*¬_¿>Yò.èUr1#ßó—h±A|ÚÇzF··ù¹Šu‰™Â@KK_9Y\hLùü‡®÷`Åàt{gäÕ̇˜pº[¢¡‰Zƒ€€€€Ääó|!][{'Çv͆2éluK·3±ŒCÕ¨i     ° TtþÁ)—Š=3þ&ÚÕ$|‡eqœµG ÇúƒwøA€(ouŸ¿´,ŸÅ„€€€€€Àš$cýA~Ñ`P(\ @@@@@`Mȱþ°¦ì‡1     öà?سBLhvðš½À~°'ÿÁžb‚€€€€@³€ÿÐì5öƒ€€€€€=øö¬²Ç¯Óké+gOX)VLù˨¨Ö¿(Žú/£Õ×jIç°òæÐ•ÒˆžÞ¨êJ!B> —@3wþÍl{Þú’ؽOú-Dy[DBÇÏÞÔ¤ ióš^½tÖŠèòÝ9Jj¥ßýQKÉËÍZMžLªòÁ­=‹ž|^+ª AÙ]õfÍá(±½@WÏ4ÅBk‚¶Ée$£y²Ä÷ô†œ¤Z5¯­Vq*(Íj"Pd­Øp9[Få¾ö±žÑíþ›CÇ+µhíÔ•ÂM©rjLu¦kdÂ鮟Új_즧šÔQÐ…Á>”H7ßâc6$·Ô?&Óš­ÎXfµÑÒ æSÙ†jÕ³ë.([_++“"’m‰bÔ&/˜tb¥­;HÎEãDFªMò+­¸,•0CîJž¹2ÐE,"lÉ&ëªÉLŽ^ßWsømÛ÷,{Ÿ‰ŽþÞì:QÑYR |#µ÷1¿\®mû`ÇØ.}:«×K<34Uß7 _Qz5†ò ‰J pÑMôæ¬JÅâÔ¸ìv9½“Ó‚¢¼¿ÏèÜUžÉíÙqò+o¯§Ï('œÉÊ;û;ü*j® ¬pëêͦ6PbãŠ.|[GoZÍ¡r÷­™ékw‹ØSmš¹8„ó`×YJ¨y‚Ë}jOè=ÐÍ{›3:3TT°ü½Ã@®8Äô`ŽCDxÛ1$­Ï`¦ÅÙwÔ,:®½‹÷37è^§c£ôòØäÖ˜<™tçrï Já[ËhìˆÅ‚ë,{8å\ƒ]wÁv¿Ô:‚žš «*<•º/ÙßãØ{±UrÖLÇ«/ËËB£NrÏTçXÛcТ@rø¡€Ù}S~³¢^] X"5dvx Ô;ÁŽÉ„£u7º¶&ÝÚ6÷Ý‘1µÛÎᲿÈ`=o%0pÙäªWÌuöõ‰…–Îáaš}ȼ )È;m˜.p†ù‡±åCR,¥Žžg߬SÞ9½qGAÞé`’[Îìô¤Wrª7|Ï¢|¨gw)ÈÔROÚR§«a . Š`ѱ5D¢ ê°_dH©[”¹®—‚•¯Þ‚áp¼z²4Òê¼P2¨Êé=LŒlM.U§<^*íìì®±I§$ýJ.# Ô«M3_šÜÔUD½g`E1øU!¬J†Ê ­lLU ›†R=S[‡ìÉÜ šxÛ2e¤*™v/õnU_J7^}ĆFÆÚf}R@×ÖÞÒ@tó”à¬Ï_éBâ¶S È•&Ÿ\ÏX„è-.CGÍ¡3µw/.Õé)¯;PŠ“·EÇ۴ϯàÑ©^·÷L02å¡7¶q±ü¢¡Å…)w.ÞJ-ÔÔ]PD§ÞÏӈܚцFLÓ6˜©¤FƒžSß¶}tÈ &dã%®Y#ñ —œ)7æv¦d$4*ú÷#vÀã8A]Rzª@QˆÞ\µRCÂnM‡Ì›ÉVÆvc¯h«ÕyEO×¢JeŠô)[…£åÎëYåÐ|þƒW{¢kØÂ}›) „V…ƒT¥»v MÅn a21 îY“ýΨœañ'¢XÏ[ ”ó&þ-NONÎ?a#Üd¯T&KÎàòDïdÿXa†æÖ¦hˆnþøãÍà&æÎ÷Ø,5PMßêåOkónî4` ”›³F‰ ;7¦w ;ÁM]výíúòš¯ftþP3Ë^yuþL5ÖNOoV,N‰ªW8µv²zÁ±å΢cbº­»½rRò:"Y‚i¶èjR “±z—ú§ýê¹Íæ°%á'ûê¼ãÞý=ï!õýîb4"çÇ µÍ¡pµBˈ­6Í\|i2Õ†jÛ3p|rÇñ+ÃŒr“ס©*²)•Ô+† ÓÛ2bÛiIƒÖ¨û ižÀÞ;Ø~»Ôr ¼Ù$6¡)±]FÕѱ¦Òd“k:°-.[GGgnï2w1mì(åo9&zu癦h¦€°&û7odF,×Ïó¹ÆÅ7CCëÐ[œéÎÅè)Æâ,n‹Þíˆï.¸´",Þýç0½A!«8Ýôå@c`½Çi.âŧ¬¸%(¼+vã„ÉÀÍ&=D¨¸£…ž÷`Ú½%žœtóºVê\û'U½æDO¢ì_Š[•”H^®Qà}ÐDˆ;|¤¤pô)5MŸ·m.Œõ‡îIu„\R'уýKäçŧR5e"¨ä£—-õddª³èÑËñ‚ãËCÇÅô ý}™‹ŽSžÂ‚5·¶‚¿hf¤bŠíÛÊ»óFÂ}èÙL΀­÷ µ)š˜(ÌPóÚ¨è§eD1™jÃY¤Lr®õ∛ÏU‡íô@Sò †¸7ùx®i¿ÙΊ”ò»@¯WdÅð½ •kGlÄlÆ{GTŒÛ:}7ÜÛ‰§F‰Îçp7”¸^fÛYtñ@ciÚ‘m“iqY:j©½‹nƒæ£#ËDLrÈ]eðÛï낚l†¬Éà:d½q‘86ošžjFšfp<Ùî×cO[{‚¬òº™Ö+¼ÇñÉ͹ëf2$ÉÙû&#Àd•»H¬U“DËpÞ¢ÊúO^¦Ø½)çèi~Õ›bZ*_Y´|þƒŸ§˜Š[«˜:–C1uød¥¥¾•X.6mÐÚ;³¬Ðæ¡ý¼Sþ^Ûø\8¿ÚaÊFß`+¤ÛtGmbÊ(2Ô×)¹÷¯>©÷U)dB[ì§øÊ¹ùÓ?€®]…x&dß ™,1õª¼ ø§Ðã±EÔöN© u±Ab<=ýfcˆAiÐw{Ýõ^áF$È»{ì©DãɳéЧ"¾½™Ë[Žùôr÷£FÐ%Æä„s»ÕääP8vO¨Þ®Dº…‡ýL´@mÙ•:Á±]erÜÉC·r÷·y«ÂÚSIŒ´üžW@ 8’Šƒ-ÍÌÕ&Z•²&•¦'Œ«ŠòRJƒe;À¤Þ†ÏHë‚Â6Ï5ë°è½Ã]fc}"=~h‰ò4ÜP"Ú$Ùn¡vÖÒŒŠd»áH6F¤£ö£èŒí=²>n[Œ¼ º¸óï ¹~¾2ȪZ)­#ñÎe6Ï¿ÂvîEÏH?/ÇÀÁÞV=»4å™1ƒœîöEÊ5kuïšžEþÄ"Öng^>´ëÈsh“‹Ø‘[¤68a»5ߘHîjG%ÚQt5ÎÖ~¾WŒ¤N´Hë?))'3>º`ŠXÂékŸÞ:22<ÅIÌÝÖÊÜñ:¯»!øÏ?ü¯2C¯ø=ñ‚<‘‡r„)Á\ôÈÞseº¢‘1ÔCŠ.%xálò fqˆ6K5½xÞ?¤/¯®»Àî?–"ª¦R&aæz x6Aøä&&“s`EL1ïgÄò ¹Ê 2mÆëz²¡î½R!†=ùŒ\ú¾~¥a¤G"¦˜©dáÉ–lX a••U"|ž„k£ZrA½ ЉUtªDTÜ4f<"£¯z<#¾Ú4{qè¥éº,Q¿Úx…àý¶8Q°Ñ@cýT+†R¸r×Ë3¨LJƒõ3[žøÄŒè¯Z©4-#5u´ ¢+ñ6¤tÞ#W"0ýv£ÈŒŠtû%L‰©µ²j¬È-&1ÊÂýÅÙÎH‹Ü†9¡Ra^lr=o¯žøÂj’ d²ä è´bó >Üb[¢óäÆ:D®&su 2„+e²‡Øû'Dǵ¸ uôvÆè¨ÉÞ¹ «ÁªÁs†’xzx2ÛýªË(ÏÚNXÈ::™—GLÑ=¢º§»ªOd‰@OÎçîËÍdLô ª½WQÕ¨a ôŒõuJwÃTô0=$ÔNiåI¶{yEz!UˆE%Cø±Æ]èE,ÔTk²_oô˜JY'Ý¿ÿÁƒ>üpÚçÈ‘#‡:pà€ê2´Ð 0v—oVï«óü0Ú¾]ù^ô¨œjI]&z®bO£è©ÎBÓiøØz¨d°b”V,£œôªžŒ%ÏV=ëÕ-ëê–|u¥IR$Rì|M_)®AÞ«]TÈ¿94IÕ­©™©ÝZMs_sõtnnnݺu­­­ô7Ù¸¥¥¥ÅÅEú»¥ïÆ fkršU¸J§¼R4c£-vw··ô{qÉmS^wd# ®ãT‹R­l=kÍ!YþŠQZ±Œ’íÅÕ PËNñíëÜ6¼¹òi‚v|Ðs+hŽnOzÏO;;ÈËXK]ù TdQš¤û­©™©ÝZMs¯zT?ZÔßúCý°&     °æT¸þPÙùé5G€€€€$€ÿ—@@@@@"à? B€€€€€Ø€ÿ`K*O<ñ(誼ç9O敦Y1åW,£J‰4GzGs”seVR-a^àS™L›Ôôtö-6i¢V·¯[ÝÜQ@ b9üYë½Oú-„úûàcî¡5—É IDATøÙ»‘š´®oÖŠèÌ$’J”£¤öAâ»_"j)y¹Y«Éëª|pkÏ¢'Ÿ×J†*¤BP¶dW½Ys8JlD/ÐÕ3M±Ðš mrÉhž,ñ=½!'©VÍk«U† J³šY+6\Ζ½Åh¬gTy ’WjÑÚ©*…›RåÔ˜êL×È„Ó]?µÕ¾ØM-N54©£6  ƒ}(‘n¾ÅÇlHn¯¿“òQËAdà¿ÞŽ"J¥õa~VJé)™È¤Æ…Ÿ­!HUs$Ñhzº(=Ä”6_x>ù^u²-É|ª!UÝÈá?(/ÄèÞœLÕPoØ(ž¶çÌÏönÛ>H/ÝÕpù/˘šªï›Fø&ÕH‰J pÑE_V¢Ùl0P*§ä; gwÑ›Í'§Ey÷_¾­h òLkûù•·×SÚÏÈ  Wèm—~5WP6gëêͦ6PbãŠg\ÒE{#ïõcbŠ·|zÖÌo¨4dÄT)±I‹ÃAzgÅpo® ù UåÑ­4˜ØæŒFßI%†zz ï0ÐS^º¤6Lò ÂÛŽ!i}3-ξ£fÑqíž_|èVÓ±±-hÕnx•ð‰w(‡÷ìð¿¦^‘¿EÚ—T± ñ ²O˜suûºÕÍ=KÊ%¶i§¤Áå5I ‡ÿr˜Ý7å7j‡žN–È2½i¼Ô;ÁŽÉôy„®­I7ñºxwdL·ùÎᲿ¢Î±úËá¸Xsñ'bØäÔåÅI(^_ŸXhé–WÓ†Û±êäm“.ÌŸU>tÌXJ==ξYzíûôÆù&k*˜äÚ:;=镜:ý|Ï¢|¹»dj©§œO’Ÿ8%[p¡U„Rî!:%PÍL­Ã¤¾Ì— )uóz)Xùê-Ç«'è8:%¡d òCz#[“KÕ)—ŠC;äCôÅýÜ)I¿’ˈõjÓÌÅÁ—¦|7[‚ Æö l (-¹œ­ÔjS°¦ª6 ¥Î§¶2BŸ v«š)#UyunˆjYïVõM 4Ò_Á†fÆÚc¿9ˆF®¥áÈl“à¬Ï_é"ô~…¿¡¤ò Z)SÏ™mq:j©½{q©NOyÝ¢Oœ¼-:·2+#ÝQd¥0µ#ˆ¡!„MF¹¡0ÉMAZ‹Om)Û-º ›ðn`lÊÂ$wƒNÒ“²Që¥ÿ3SîÎ>ÓmRc ÏvAj ª<“ZËRš6—ak“@>ÿÁ«gÑ5láMÏ›Z8Hµa×µch*vS“…³6Ù?àŒÊ©&E™Å W*”@ùºqÿ§''çÇŸ±ɽ.b²ä .OôNöfhnmІèæ?Þ nbît‘ÍRu%ôÆbojÈñr§c¸€ Üœ5JÙÙ¸¹0½kxÜ nêmÛG‡œþöpÈà+î«?Ô̲W^?SµÓÓë&ÈQ ¨z…ËV¡ÿ©[î,:&¦Û…Ó‹«&)o|%k‚òvzÖûuµ5VïRÿô _=·ùÃ6P£$üd¿¢QwÜ»¿ç=¤¾\KŒFät#¤¶9bÕ2b«M3_šLµ×3p|rÇñ+ÃÌíººõËTÙÎ*¥W ;@¦·1dĶ#RMs´î#1€½w°)üv©;bä*×Y³}Û¥½caM¥É&×4c[\¶Ž:ŽÎÜÞeîbeuPÙcO®©˜5@q ‚JÁ·#!Y»EŠ0¯« ‚á†BuTÜÅ)¡K–ãbífJi½‚»Öì `îqƆ ËŒ¬ðÇï_*Ƕ²ª|o\!{hûÜ#”Ì#$‘'wßd+- ™C—µF ~“Èç?ø·°Áéöè¤h´?UïñcXE¼ø”·ÍÂïsÄnœ°ßèõ{EÒC„ŠÎË")i÷–xr·å¹³Œ4œ Tõ&Ù‚èIU#Xœ[•”H^®QеÒd€;|¤¤pô)5-$´m.Œõ‡îIuû'¹$¤ÎÌû—ÈÏ gRRu4FPÉG#YêÉIVfÕ¢—ãÇ—;‡Ž‹é!*úû$2§<…knmÑÌHÅÛ·'”w‡”Â}èÙL·[ïAjS,84W5P˜¡æµQÑOˈb2Õ†³¨‰Š#n>WmD¶gÐMɃâ.âù&ÿöÆ--jgEJÅzEVßÛ°Q¹vÄFÌh¼wDŸ­ÓwÃÛõÎ*:ŸÃÝPâz™mgÑÅ¥iG^´M¦Åeé¨t¦öî-D–‰˜ä‘ :¥3p ›H^qöô›»Eú]eÐTÈŒŒ´ SÓî1³I³R‰Þ+ž•i¯'ÝHìì>Gî2žv¼mXl^| F‰ÆuÔl¥e•gÍä3B(xòù>¾èH sºbêXÅÔá“p}?×çX‰¢HB9of9¥ß ý¼SCÞi¤¹Ûœ³ÆS6ú.ûn•{_u¶ ¿&r÷Ô)¹÷¯gTï«RÈ„¶ØOñ•yî¬ÚÚÆÏ §&ÒÛ´«…[˜ÑY%·dU½ƒý}ªT50NÉèSwîNŠ~ÝŸ»ó6Véƒ)Wº¸ ÷wÓâ‡l~±½ñŒDAŠ©6&(«ÒÔÀ¬B€}geè¹Þ†µ£¶íH»w°:ˆ@ŠÉ\ËU'­mg2¬J¡Åeë¨}tIí¦Ú½ÕKMo{òZÒx€'JqV½‹˜N¥l"ˆ[ü6Ê4¦ˆ\˜ÚWÞ5]¤]Æå´Åv±r5Šj™iÔ Ö,ÊüáñÊ9Rù»&ÄÎ ßŃԒ¿(JPøúܺ£m³°ãN}V°Vì¿”ã3¹ùÓ?Bl;ë@7çp¿]æ•Æ’7î>uM–¸¯h{§TJ©hãÃH7 1( úÏãÈc» ïî±§£Ë¦gh;Ý”âÛ›502€-w?j]bLN8·[MÎû†c÷„êíJ¤[xÙÏD Ôê< ôÇv•É}p'ôÜQœ·½MìÃSOäÇT#-ß9Ñ(ޤâ`K3sµ‰V¥¬Éc¥é 㪢¼”Ò`Ù0©·á3Òº °Ís Ç:,zïpw˜³Ž±ÜQÜŽoáw'®˜JD›$Û-ÔÎZšQ‘Õè¨}‰:c{—ÌÔ½Kª21ò†{1C„‰)ˆéÊêÛŽY† ÄŠ!l*bÚ°3½udd4x¦D¢¨ØÒwƒ¶×S.­Œ;…Í]´Ëx|:ýø7ß v/r÷M¶Ò²Ê›ÐYdFá{°L"¹¡t^wCðŸ ù_e†^ñË)4â¥{2"åŸÀ ‚¹è‘½çÊ6tE#c¨‡=]JðÂÙäAÌâm—jzñ¼H_^]wÝK£r3e®TŽ@¢ )T3ˆÉäXSÌûÉÞF•L¿Ý(2#¼–¤„)1µãÁV¹Å$FY¸¿8Ûi‘Û"'T*Ì‹M®çíÕÿBXmBrL–¼Vl"ЇaHN‘-Ñ™bJÁÑ"н{I5É­’ ¿‰ÙŠ6¢±È;ÒK6T\ Q]¦Òõ§é)ËüE–^¹ØçÎSŠ[íýVÄF,v+YX'xÈœ™\F‘ò¾Ì_k¯œ „Õýû÷&k’H@2<ÿ~vßT±Ð¦J  ÷³e©!lוçBÊã¥âÐù ~ªS“Ni¼ÌEsØ"#Ë‹nɳ‰1Ì5-dV½àÌFá €€€€ìþƒ2nãèØ ÁZ7V`&1–êÝ꫆;éíÂîgÂé<ˆR¿ÕÔ¼ý ÍõÌx‰—›?®ûà—“ß0Kç®ÌNû<¸«Â{Ø(¿œ<Ħ±¡xTtVž ¤j§“gYtö1y“* u[ ½!k²¿]¶Ï¥¢—¹yŸ™¡)¯.Ù×ê[DŽÓ±‘\âOµo(©Ú%1i&+¯[ò&‹Ø&£VffóuV•TT¤KÙß?-ÆÛãÒ:0nLð[Œ÷Äû«éÝÕîÌ»ð$J“-Áz@±0ët‰9åÞ‰ØÔ|d¢Ù˜ñÍ÷.[ !œÂ(IĶ]³Ûs¼f›->ƒr4$ëžš1\ÁB“öö–1z¡lŠ2rÆ{&öÖY.%ïpÅ1Ë¡c“³1ÌÊ{É¥KÜh·Sˆð“‚º”4Zgr®EÅ‚C«bð?ÒVîëŸf2vƒLE,›Œx“pJÁšŒÖŽì‹˜U•­Ø Èš‰@¨ŒÀW¿úÕo}ë[$ƒ¦9ûØÇ>þñùË_ÞÖf‰bý!·<ÿ@ûÛKÝáæïL„;qÌŽ’b»TäWã’GzóÚb†;÷&;]¼©eÖnE‚;ç<êl³í)g…åŒwüòäÙÀ¸4ùÛ>&›¼úå>á‡Y-1ñ™WÛ¢¶“ýÝ´&‹W¬F$| E\¢e‹p³_‚õÛdüÀJÌÄúƒe €€@sø•_ù•+¯¼2p~õWõ’K.I@’Ýpþ΋È&… LÀC—Ú¶½q¹aíLØNgd'ƒ±ïÔ>yf‚Ɖ)tè„·ù\L÷'$«þ ”6÷fºÉ¼Å0+õüƒˆ%ö¥¤95¢¦÷åa `H×ÖÞÒ@üh:È’ç9tö1]íå–ûÇG/µ¼!¹jWªEÞñGíT“ï,D‚YZ;Îæ‘eÚÙg/Òdü¬‚À¬ÓµÙ:«„¢Â%08çœs®½öZòhåáùÏ~{{ûºuëÌѧóº‚ÿ‚ñ?¾Èu‡`æS<‰61‰ú¸ïºúè$/–QNɺáч,1ÉÃiò ŸÞ JŠˆ¥^ó£fÈÈ7*2ÍËU€Ø¢L*QR5f(6°HŠT$ y¶8Â"Š ã’!Ë iDT‰ÔÄ€xŒc#óÕ®*l÷«cšE*ÏdsØ"& ~òº‘ZƒŒÔ˜Jî™ Ž«¸ˆØ¿ÿÁƒ>ü°ò™››»ýöÛ:¤9r„B8 º -ô#p/v—oNr5p š…€w„;ù9« £®,"eè4|Œ.ØPŒ¡,€€4rh…¡µµ5eÁq–––éï–¾ã²ï_j.Pò{æåñعî|âê ÕÚ³¨ Bh^XhÞ²‡å    MHëMXè0@@@@V‡ö/­wä     HþC#–tÕ!ÿau¸#WhD­ªÒt–¢m€Î     –žùÌgZÆd£Eü‡ÔGÀê"Èåøþ÷¿???¯_B€€€€À*8ûì³é]—]vÙ*ꀬ׈ÿ@o‘Èj!9[¶l9ÿüó³&D|š8~üø§>õ©7Ö4o6•®?ÐÊÃyçwâĉf{A@@@ Î œ{î¹ôæàLêÜ.¨·º2/8üÿí TWš€o¾q|A &t|aZTfUŽ‚ö€‡“ ‘ÉñG3ºlvâaÝ ËI49u9ãc“ÙÀ’Ñu‡…¸jðF4Êh" ˆ}Ø=$€$€ÚpíÚµ_|!$ŠaÖ #pæÌ˜t‰AÁ/D®`Ö¡ÿ,ãÓíÛà9Ü©S§¾ûî»E‹ ŠƒDТŲ0 $àáhšž2e Çà“ )S§Nå.ðþæáÓ‡ÝCHÀ.ô±‹h¨¬¬ìêêZ³f›\×ìèíííЃ††1²ðC‹ëR ¦#$àùà&6yòä1cÆÐ4 p†>ƒþxóüéÃ"$ Anb¹˜5ˆ ÔÕÕ•––ÆÆÆNš4Éåô£?\¹r…S$Œ ƒQ­Æøi—O DH`€øúúÙôŠ2š/¨ÀÀ@HÑjõx iÀfpH&¹àš{ïÞ½¦¦¦ç ?DGGƒƒ(¯ðS*Æ ‚rT*•X.¦#$€<œÀÈ‘#8µÁhdôø¹å/t:-Þß<|ú°{H H/‘‹Yƒ•(à:ƇˆˆwŒÑŽý,øñññ­­­J ]ŒFwte"$€€ÜßÌa„S$ÀàÏÙ ïo0Ø@n"€þKnëábAy˜?>œâĻݚýD@àEHHHgg§˜8XšF<ßPŒ¦#$àñ@I˜8q"ÿ@ÃöÀB@Þß<~±ƒH ˆ@ýA͠Έ‰‰™3gx1¹i”öõhš—ð¢h|>ç¦ÙA±H ®®î䔵ÐÒ£G]Üè iëÿR?~Œö‡˜l ÷€Mš{£T&0wî\·öÏ!ýAº4ECµtÌEH x,îÇOà?ív $à4ؤ9]+"1ýô‰ Ñú~~ÝÝÝ3¥^Q!VÓ‘@H $€ÜGN/ø8±Çs_¯P²·è§?8ñšÕY³fÁ+îà Þû@H AF4‡3f@,«{¼A†‡ãBÏjý^ ¡Óé0@Ç…³‚¢@H $ðì|||† úÚž&Jà ôÓ^_» Ñ b5‹Íèä±ÊA3@H $€<œÀØ€É|}<¼¯Ø=$€@H $€<‡€ Î_òœÁ`O@CàèÑ]ÝêîGO²ÿØ<0-b+H $€<„€”þðÖ¯ð½ÔˆVO÷êè-ÝcþÖèˆFOë tWåvchXûvßZÕÁZ5’-éÑ5¬U|N¦ U uûàÐDd5j$æÄ2Èû$G«ÓÚ0ìûÂÈyÁ~DóðÁ£”›·f¾¶Þ2g¤è}ûpu9Á« $€€—Ò`(S'âÞox uz¬ž-B ×zJÇ\½ºzý¶— »k&ðñ÷¹K˜VØg«4”ª—VihU/ûo˜hÈíéºwýH´·0ÓhµNCxÒCTZò¤‡Vke:æx0f,”ê¡ï-ãt]?‘˜ƒ,?ýäw¯G‡s…ÿïø¸úÃ[²ŸÎ|4|Äð7V) Fš2RUUUçÏ_vP CH $à¥ì즾ï`ö—›KÈ¥ŒzñÁ‡ï*ÎIŸÎæ·•*•ÕâEÍ9ñùW7elÍ­•( e2ãÌù-EYËóEK'eÕdE1­ï&™VLrdúIÛ\ÁDÑ–úe¤ì-N8§Ì,áû º´ô²üp°@‹ÂÂa"\Ó½©ee‰G¸&ì½}e{„{›—.ŸÚò‹åóóAûe,¬õ,yC™J Ír:­x†©é'íB¿¶—ô”óÎ,õ ±Þ¿1$FHßÝÉ‘iÒëMoɶ%uÅ|¾,<¿¥Œ´‘"ð¤Í`¤à•Ó°3ç¥äôl RæÇ,ñnŽRÎí¡#Ów%‘jÓ~Z°ÂS%v˜÷Ið#šS’/ßQ.T?>?+Šß,-*æÕ˜s-~•ûEë‰e;wmÏÒxRÂö*28”†&„çÖ2zÎì° –æfR[.Õ1¹.M·;Å=Z æ—!û£<|»÷6Íj õûÎZH$T(½[.‘/<.GkqÇZ ‹,]s«^ÂPÆ/'N@ã³MY³¡ÏJ)É9&Ö-GÓmvŠÖÙ­pëµ Öé¢yb„$)Èn¥žS86MüчªÞÞ“¥õ„òQ«zƒaÔ¨‚C#À­I«3øÈ|E‰«5&^ÐéÑû•Ýõãt“X $€†")ýÁòU#Wã?9xäøq-çþ=Tñ®¡w´ºó‰Ï´Í7jëD°…ïÊf”óxfƒ.iRc?¹<3äG§r‘]ZGSƒ})®/Ñp¯eCðlBÀä2;aþÝ¢ÒÐB@OT³»Å &®ïЍD~Š¿N!fÏ(öi\Q{zj4evâÑ;bª’^ 6 ÒçL%ÐmA9æÞC¯È»‰‘ÕµŒÂд»•˜”œ°éí§™ %ÿPPDŽ&&zŽRO¡îÆÖåÂ6ž/„¯˜|ÏV,ý1쇘7„»˜Í7·+ê+juU_Rx5#ÛRWˆHJ[PXWOVFX ¸ëìšY¬ŸÓ,ÙÐ9ÆQšV˜¸ã*!fÇ'»µ¤ƒžˆlúv±߬øP,K(Ý©©±”×VµŸS¬³•óŒÅÜõ- N"dY®ÉfÞ'ЯÛNq)±ÂÂB±scUEX ÞL ̃ü4‰á½ÔhÒ ”ÆHs:*kƒýâÁŒ´Fghl¾'.À*‡!F*I\LûocáNÅ_ç¹Õ˜ ‹ß ûfÁruå“,Ëõ#h§u¸×X $€!Rú·ÃJ &øøªB~º‘ŒŒ #£§„.®é!ØøZÑOÛ½[yñù¬SÓrÓ^?oW„:ô%ÎÞš/9kb*B"„+(«ERÖÉ­áÇ$‚L YUi^›oMÿùO`zÈ yl뺠LÉã’Ë3c-to® ØmÈ“Y ­ 3áÙsHMdùK•ì£è™Ñq•—3-ºÂ^ÚÊcbCw”JŠm#œ—XWjh„°¿ç¹ ¨IDATô_“IYW”ËKMMòÄXKégJ»¡Yœþ@ƒòÀ®1VÓ&Æ{w连xÒõX­Ñ5Èõ<¸$J_cüÓÀÐæ,ù0EÆ'€£ùZè Bù¢ ôe$õ_]%–÷4ªc$€@’$õƒêÂï%EÑwÎì9)jbdÐè^ë}Pq¿ú+º÷ÎÌ•–Â#cÖõkkú /±Þ;ý>L$€Ù.Q[p¨2‘ÙaxþWúk¬¨Î;q!•}ðÉÆ €é€ÛÕ‘J8ÕDÂç‡uR¨bÕ<ÿgGÁavcç˜ë+Ù¦ÛÌse)9¦×Ê* ÍdSBx)aƒ¬?6rD™ØtÃì(õÒÒ ³ŸU-Û ˜Gt‘â6‘0Åûß„-‘Ìh£§F AࡇŠ–Ús ( *…õ@M/Øû97±=;cÇqa­C¤ªP2··+*²~š~ýÛë õ k×®å.™ TÒ$|Ó›š~rYiìlf·:Û•yú^KVæÉ­ÍR¡ÿ‚}…év®biHŒã‘²âFòM1Z‚À͉òÅÙèàßFSí-ÚS2Þ® ™èó÷[”Zõ£‡O–,𳿒à}Õvuœ=ÍßÓÌ×â·‹Â’…L-{Í`>@H Q‚¿s&°Ã`¶¥ž¢Ã_û__5 þþ옉3æ-½Ó¤ØóÑóþʨ£rÿmI?„–>Eγ•t[âÅ2¾Rí‡`7O÷‰UÞ€à|'œ¯ÉîìS‚.œct•êÓUd£"1ØÕÁ&G©Ö°àªý%dƒò%BªÞsÀ瞟âÓ_WƒëvO¯"zzµ=lüÃÊUð~áá3ÞJ;Ž—^É{1Ms³ŒÂÌ©õuß’,]ÆÑÜ”µ©°ÇƒcrÀìP__ßx»†«ùò‚U ?ÀõHc—Š Ô;×k Þ+Êû¸Ïnf½˜!D¬m5m,’ãecd©($Õ.±Ç >#§UuCÚ€Œ{ˆØÑ Ö…”jpbâ”8ÏZö·rP‚óþ—.=J·7ÉÒ^Y¿óÆâñÙôÁªCÏõW—.kø7@H yvöR`y€ AEtºqw/¥ºËß9NÔW›*5ßíåÁ`  :JǰßÿÓ˜ûÙµ¸¬âü$s2{þ©m½K¢ VùD¦oйvÌ8=q ›8{ëjˆX`>lÉM[M®siBßœŸë€äh!1Òi‚Ý–®ÂôB ÷¤S7‰ILŸÞÞàÀÎ^‚‰5=ÒXZA–e¯­¨¨f®ƒ6¾@˜k‡>ÜÇżò³¸¨Ä×£W/W¬[¿>eù/•?çý½…1†ƒ#‰Á‰ý”mœµƒìÝÅjò¬m‚I>΄=|®–°%Ø8Šd¦š#µñIщ›?ß´4ysºÍ+Ó27oû§ß}³$nÉ÷ïÏ›5öâÅÊŒŒ _]§”ó—«P]0¦ÝM}w?-¼˜«ó¶*‹:BÃ`‘77µ†1¶8ðÖ‹6ý’É¥YT/d/ÇbAãeöÄ8ï™Ä’²ŠUJ{1Büð@Ùfìrì›pÀ#N«§´ýËÔ€ÑtáG²Ä· sâ|×ïìÍÝ,©o8#øå((âÜ­FH¶K‰`LCH ¡N@ÊþlXãslëÃÖþá¿„'»2]ùÝűóyd+£øG­ºš´øåºÚ:p^‚ô»v‚þpþüyÿùkÛ%Ù”±9Opj+–ï/Z]œ^ª,`O ³XÌç`Á3áû¬ÅŒ™,з¹¤ÒöV‹5iS‘Ò/˸ü9ð®$¶kC™U|1‘›9G¬@܉^Lh Ø]!‚öó}Ü)«¯Ò?0ü­ÝÚ£Ù~ß|é£×>©û±œkñÝcÞÙ`“oJxª[ˆLî¥7Œ@nu5ZÜÓ,ï¢b}Àt$€@Rd W¼Ã竺Lo#æRÞùÕ[ÊŸµ´µÁ%ø±ÀÛ¦5: .àñ[ʲˆ÷ÿõk½ŽÑàþË?˜`ÿ Õ.æ=5!4½ßgÿg'ŦÞ¹ƒV•w`ÿ7e‡]Ú]Gßê Ѩwär´¿ÿ`ÔùBxþ2þÃ/¾úɈi›3Hþy Q˜…@HÀ« HÙ$V[ù…m.Úl™xTŠ­ýá9uo€ì*•ª££cÑ¢Eøï+o®YøàÁ.í‚óö$&HF"ñl´ZßÚ8î~+”WÇ}ÛIKJË8¯’¨‚YH $€¼‘€¥ýÁIýÁ‡}öýÁSaß).¬­µ­·WS×aŠvH²IqA?‘[>¶)ƒh¸.Jå¶Å¾:kT©ÆM[ñ‹äONºL4 BH $à1Pð˜©ØŽü~ß?+ýd`ÛtKk—®¿½ýwnB‘@H $€lXêvÎoµ©‹ ^Là…%wšÿîÅ`»þý'ÊйÜÛ§û@H x+~þKÞ:ì7@H $€@B€9¼ßò×iAH $€@HÀû\ùò ú/yß´a‘@H $€Àó"`zy04Vˆç5Ø.@H $€ðp`yàzøÿçë(ãô~žIEND®B`‚PK !Ý‚¾gh;h;word/media/image38.png‰PNG  IHDR1ö¨A† pHYsÄÄ•+tIMEÜ  UÎ0tEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/06 16:27:12 lim_j SGA250167ðî<$ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí xU¶ïwCp@ A¨0@èæ¡Ã|s˜ðèy ã5‘ë8v¸×ƒ÷& Ìæ~„oïÅCú|€r<—43ã`ÂÃÃ$ÍkÄÑC‚&é& fx…‡ é»vUõ»ª_éNª»ÿe>ì^µ÷ÚkÿvU­^kïªÒ8&l ÊZ/œn¿uCüŠA@@ ÖRîèÚÿ¾‡&ýw±! ù¤ãóÛ«ßÏ|¬oÚ Úk  @@D]¿rþtÓÁÛímúÉóSHzóÛ+ú'ž“9nƒ€€t ”^½Ò I{dvã¡Ô¢æèþ·Ðîø@×4V@@@ÀŸÀw×.~è½”Ö‹_î7…1„Gþˆ è"}ú¦R/¥ýÖÍ”^) )».ÂŽf@@ ðù$æhWÜ   ÐUd}ÒÂ;çY^ÜàXÿ¤§öµ³u?g¥Ÿm+åoPÅ)6üß½5ÆýÙUæËö¯Î¬óu¹¿õ’s% ‡Ë…@@ ;,Y`Rjöõu. Ùgݹo×{9ÓŸÉ1ÎpÕ’zê}’ÏdRcY†ÏÖ˜íy¸ŸWý¼ä<Ë'ÝÑ䩇W)­ßâQþ…šë/ði*™Â®ŠÞµ.S¨e|ó˜ãM’»%¼PðŒ¢wyO‹ð@@ Ëø]®s¦?}ãÆurK½{÷y|Òd2ä/ûß§¯ô™v)]ÞŸä»À\”C?†UX¿(Zø}©G{öX~2Ûô»&¿Ââ~^EaW$þµü%ª‹–GÐn`Ø  ÉB`ß®ª}»ª}z›3=—»ð6™…ry³æk¨ÜþÆ(na•Û·<>韡La±5ÙÜUvdÍgú2ë‚åF^ðKó¯—þf~ãïŽ3ö…ùñg—Õ•M4ìY¡Y9ÒöáÁ'µ{DEö]ŸY_^”Î?°Ÿ0Ëï2ª¯ýôøÏÂë™þøûÑ«<ØÓgÿä Ç› êxÓ^zšŸ­/­å»fU_#c¾4Ñ ¨ñ*F¦ ÆüqzŸ*Ãÿy¯fÁ0Æd…buü  IA gÚ4æèØ·{—«·9Ó¦ Bùu¯¯YçÏeÉ¢JåófÎ"ýä¨ÖãO=%|•×,ª|ÒÍï6.s¯pK7{î«ÛªþŘCn¨º¢ãñò.7ryï¢%Ó4Û«Êžš@µ¬Û·›–ìÕÞ<ÌXc±~l± È´yoYލ¤…ݤõ£~ã¸p?«2çfþÚ±WäÛ…_³ogÖ¼Q4Òeƒ«–Xâp¡¾2¿fo ØgÎþ·OÚ?Ñ@¿2OþiÅ~ãØw¿ E²¡øWÛ.ìÕ~ñÇììÅæR£Ü0?¡Ø.þd!óφ×/þå/ÿI~üñ¢¯~NÁ…¯¿pîR’3Ö»’h㔋‰eŸÔvÞ©Uüÿî“ÚÎçÏ]þ/oÛŸ2Úÿí?ô?+×¶Õ‰röÔC¦çþd]=ÒÈê¶»tõyÖFUF–þõ×Ü»ðM”p%â®üÉß㟇 4lúeö(sÍ˃…bRC¬M¬å'ùâx=³Y²§ˆ®Ž<Ä&Õ@ôýŠº§VìZ”6Á¼õOjI2ôÉÿ±ÍFd….Kð@’…@Þ´q¬ã;ê-ÿàë¼!(íUÿåãÏöíûøñG"-ûö}Ø»×mñ³Yq>IaïÈqùìÊ÷YÅçsËÍžeÆ.-ÙZðÖ9-ÛZ?ëU­BmñHcÍ9£ý­_jaz§¼ŒOzÝžª>÷ß„ü¡¸ _ƒOçŽÎXn( ¶¡€$<ã£Qïɾ÷köý¹–¯œÉÙ¤¼÷÷~|ãÆMñ«ls=d¥Náà¢%ÊŸßÄfóq<Ú)°íï­ÚÎò§ˆO@5Þ;µ/ÿÚV2²Þ~.x‘÷éÙËßò-© ¡®pð/Í_PD4._ï_닊½‚ž/>©¨j¶äe…ÁíB À|&WDþ‰¼íRª0N¢J“Ÿ)Õ³ÑRªÍCÉHãŠ,ÈeKR²NI¿·üýÿ§yþADÑ9³Á³ ^Ï}¤ ¸`‰Ãéœyjæ‘¿æÿ»1ŒÕ €  ÁDž» ¦ûA@@ ÈÝ…Ñ Š‚€€@H"ÈÝ…¤…@@@ \ðIáCyXðº?)sÖöXµ½   G qû,—Ø÷žÙáÃî7<ü½û|O®"d 2nÞ¼uôs;=1çŽ ˆ@@€xâ·ñG¸6_ŸD'Õ™™3ôþ°Ÿ¤Ð(Ä øNu.%%¥íVÎÄlô0zÄ'ˆO¢ )zÌ¡))Ð)Ó³gž¡;ßKéIPn¶+¾Ó,)¡“ À˜xâøð“ @ v4×nŸ;|Αâ¸g½¬7ξؑ†æx%€uwñ:r°;îCºxøï7¿¹yë«[—_ÐÜ@¨wcƒcN>)æˆÑp­í¶t\é¸ÿû‡ôº¯ýXûÅÿ<¯ùn Gxˆ•Oj^÷hÚ+»¥¦š×<•Ú;Mü{rM3—î^úèÂ'¹-ð^W ¹b{^–J}y¯œêÎÈö¾Òû©u':£u“‡@OGÓõK•ŸÖW¿[iýìxóõ/®Ü¼póî;ï¾ãïßë}³÷ÀÞ÷¶o»tä|[Òk¡‰ `ΣWú otœ»å ö½s…м óLôRÂÕò³2À9è;Pšð-ø»ÌÕ p…NîíþŽãºÖÆÆ'5¯1m}ö“7§ çÄš§Æ¾;§îFëUþ·%똢' ËpÙÂÔÖ¶Eh¨µîA›xöÊ–ŒH8å͆9[¢ìJ#RŠJ Jà¶&ã®þyësŸÍ3>4:ýë“ßÿKÓ×'ÎÞrÜbÖ'¥ÏÀ¾÷ÚöÙ«4±4åMñ4Ùñ¿R8e>X0JÀ#}%ɺ©Â9å}œ+Vô<=”pµé‹>¸úñ«éé»ö)6XϯϮ¼¸ sÓë–ŽãºäñÞ“YÖfë»lÎï„£ýÄ/-³õ†ëПòæ[aÙ^áÇ>÷ t–¥/ v¾…§[(=êÕ_ŒI3ï~Ut·(@•ä àø®òÒUvþ’æï—ÙùËšôáºï1M_Gß+g®œb§†ÎÚÙgMŸ9rd܈‡;:Ü¡RHxB>Î=ÎÄǸP×^ bÜ™pÔ㺭XÄI'vmesŒÂï»æê­Ÿ¼˜G¿ìl±¼”— Ÿ2~®t™;{àÊ ú¨:ó…O–š|Ók'ÞxRJ}HúeZ~îñmQÈoˆu™ÀQ>ÜÐÃP/(슚>y÷ ÊÓe<ýè?==cjnV†VCÓ¤vô½öÕµã;~ îÀÑÿ<šr=…„awKþ8÷Wãq&úïtG0üà_ðÊ£i<Ýíy²|æÛìȲ±½Ýyx=¾çˆ²Å«§BèÌU:/îpÍ#í¯pÎú[è+qi몎“¸nøŽ‚â÷˜ø¤¦OÆè\9gàÂóÚüPóIaï^0–RB¶mÕÑ9®½G–½Æ,‚ýBJ—¹³oÿJ!6mÝUJ¯eQCΣ™Î¬­sÄÌ!Ï{Щj‹TÒ™uÜÊ^]]zƘOb™~T)ìè~onø}æ„)®?úªdM&Ýþ¶òìW4ŸTµëÏÕ6û°Ç‡öÑ÷niýû·ïΕìð’{OJyï’ôsþí™a,äñ?GkP¼ŒwfV”.²=”»JÈTAÇY²_7B?wbì“è×ëäü„­A8ÊÜóº +ÇÉw^¢ôE–ׯ¿ýžsá_°âÞû-ré‹ÒŠ ŠØ¤ŸŠ>¿=ÃSÒñNàçÿóeòFôGÂíKJÿÞÏ>x÷Ä»/}{ùòÖѹ˜ci˜ÓíÔq.g>_øpÃÂ~"KÉ•÷?GhˆÂÕ@ÉÏsV©L@y³ëy_‚hÀuƒ…xîÄÂ'yþ"˜ö?^cËÆ*/Ëæ‡éo+ÅrÍk^{Û5ùtd«UˆK\9h×¼.—(&{Ö8sz”I?òðhZ\”;gÜo¥´›X)ô…’^u¹=MG]Ë(¬€8± ЩC™ôH½C;3ãþGï—÷ðãóžêÙ?¢‡ûçòÄ#ümN)O^ÔÂm²çe7ä5»P/äOOêˆ3ƒ²g‡GšÄï*!Ï!T©‚ÙrÕÃë8®ÃPÎNüF“)A6júf²žxUȘñ”îeúÙ%øµ†u^ËO§­«[õåÊùn ±?v¦&Æ9N?ÖŽô…­7¸pê╯eK]ÊÆ½ø‚Rœ45£‰ÒåbK/ìh xõÀŽ¦Ô¬´_p)©Z75ä™XRªËH!…Jä³fY@+€A@Ž@»ï˜ü¿Œr{Èxy™°ŸÎ Èçr•½ÎD¹~2JÏù­ ¥ €NŸQy/Ìü15-ü~Å™ÿ9òÌŽ‚] ¨ÙÓ“Ö­½˜6§7÷F/¼è‘ÿ÷»Jý¯=øÉ!íÖãŽãºúhh>¨Xò䤱bzÒÜçò^}éÙÐëË—¤<ÛKÌÁ‘!¯® ¤´çWuAo× ?aƒëƒÑ„º¼±ñ]2( çNt»gbèý—9giinå3Â-\êÚpÝP:q6m®t½?éÀþºXäîøÂËœwÇ)­ØV4Oí;ö¾’µ,ëÇà¶'µwöÅ+=†cw¥;ù¯P¤;ĸn„E=¹;nÒÃ2$ óÅèñ`'l„<Æ—¯ ÏŽQÙ†ëFX+Ÿ–*(¬Ò£Yd`¨“ÎYuŽKg­òÍÝÑ/]é¬VÔd"@§ŒÃÑs'™Æ}ñÄñQä'Õµý¾‡•^š…¡’ƒ9¤ãM§®ûÎäpô2:Ä'ˆO¢W£û¼=:C $œ;I0Èèbl xÅIwm·µ´4év p+¢<€€@â(ÛÁt.¹8øæîz  Еò~8!ôæ*ÿtس0æBG‡’  Á t8˜ÿßà{ø Iâ³Á'1fgÙVhõEÊwk!ãoÅ «ºÐ\¸­]ZŸ³iТSlU®ÛÇ’7¯¯ä½HòQB‚ q’-º/èèpøüÝ7hÉé_ÿ]>ÌT›»kÝøÎ~ó6cÚÌ•ºàã\^^®T¨  ÀµËœÍF×0­™é™£L©Frc×CjèIÑþ£2…jéýôÌó¾ÝS‹}T!*ÔgÜ76ôç|í]´é_3r÷ÍïÏk7×åL¼ò³–1'rªKê=íK+9˜7?t¥nUO8\è©íÒží¬ä­áŒÑõ7ú ÉõHÖ O“ÔóYiˆÕc!, 8^áÏÐ!÷º*>0xàé³ G>éô²µ¶ô‚IE{ö‡xúW‡}|Uc--ì3ˆWx±œ–ÕøÅuÛ.}­'¹ÌXÚ(ÑIpGÒ¹in‹Üå?"+ûÏß7w>Õ¤òÕÃZÖ H‰r¥½GKØÐƒÜø7¤l‚Ê÷ø±ÊÍ…y O€‚!Ïûª…¾~ÿþA⟽>*Ô™»ºráä—Ê÷62©ÝÌ3lÆr5LWÌj‹™&›’vL6ùV¨af¡<ýe›Ý º “<@òªK{=ÓtÂg®SÇj]*] ٿ)kæò˜&}ì¾é·óžÓõù­ñqHMl¨g_Î çÔyþ¦Ø[ýeþÏ‚DrQiÈ»gJŠ–{OÂ×»:%fÒ(…foÓH ÄÕycþC¨>ö€z ÐË“ýÿÈ\!I|º¡Î8)ú¬µȆDz Xy ³²m³Y™ðº­Bò­˜’{ÄÊÊ4¹ÌZĨ,9¤\&#Ú uL_ÍjHù!g6’„+\9mÜÚX‘6Tí”kÕÏ’[‰_ÑÐ$Ot‰œørÝT1¡ç' µ*·÷ÉMcZZ†ó*táΩ’„§Ö–¤mjÉóð‰Bô#¥ý’fÍuÿÚ˜õÖš€Ív®!òõ%ÕƒJ\M > _Ó2\l–YtÊÿ}¹å¶´Pê’üÓ—{× çqR"‡1wí©ù)†jUö¢ÜÙŠªiŒÖ0wCÊe±â€x9ô| ñ€—ä‹Óßø÷,¡|Ò³Ïz½eãÝwßõê°Õê]ó+ëYæR^’jq¶IË Nñ6 +µ©¥¸ÛÊ,f«ÑÔEã®TªX?¬Îà)}êP}ɺRól™Ÿ0t•Í'ZYÅGƒ*>’ªè³„izåošë«É©Þ»¶ÍÊ <3Õù†ô%^3d¢!üº/͹—qÃ~&Î¥ NK’º(Qš´‰ËÂ1) ~ É1ƒ ─˜;ñ·sí—Mâ%”OòuBÝVgœDëîŽì-ݽcçîPW„R{#ÓÏæÓ9õæJݹâ'š,¢ÊT-Í3ù«"¯Æ²ù"q#¯F©8ÙêKK™NÇŠiu_)÷:|Ó²r§š0ÑÄ”°•ÙøÜ’¤2옉Ö;lº2hî&ßµà®<_>\jÊO˜>ÿ±’íÕ5ðž%¥ ÿ›òÄÁ’ʉƒ6‰")fVýQòQ؆mr¥¿Øð…%G'NÜTBbiy:96ë` ‰«é\C‚%¾[úü1ù% ÝL+)&fä| øºIŠ@.ˆõìÇ.èþ+D#”äž&z½û¼µ·ÏŒGðΨäyw!ÞŸ¼?q_Bv·¬°«º*dÌÆDeyWÙv@Â!@Ï»{$û!Ïÿ8ê~ϯŸŸøÊóë_k>+œ$=ïŽÞ}®Î8)BYÙ›“ÂÖ‚ ± >?¯%z¡@@¥()çiYƒíL–îQBŸ}öúô!1ç“„M*C˜ ‰BÀÿ>¤ÏšNSçè_ÿ]>N8)Q†²óý˜ò„Ìcd…o @@@†€ì"ïºc_ÊÊ}êÇ™OÚue—µÕ½R͘fœÞoº ˆ@@º‰@MÝç·g>)â~¢"€€@˜öXVÏž=SRRèßÀÍutt´··Ó¿Œp•LÌù¤À °@@@à“Ô9.° @’‘€Zswç\n;ÆG$µ¨ ÊÏOÆqFŸA@ ¨3NjݸçÚü…3άœÀÌ{OÆJØ  ÐIêôIi/=?a’г÷¤² ×Nu²—¨  Ôé“ÜäN^¼Ê´CDÿcÚÌ•º½À.5˜$l¡[¦JŸ40sËÂÌÐû€’  ‰A@¥¹»Ä€‹^€€„E>),\(   CðI1„ Õ  aPå|’rèmIxa’2ìø&€8)¾ÇÖƒ€@"ˆ³8)‘У/  Μ9sôèÑ7nî]¯^½222FåY >)0´øØk-Ôl›í(3´Önž [¬¯îظX@‰³ÓnÎ.`å5EÚÄézj!@iæÌ™}ûö%ƒ‡øo{ûí¶¶6úJ[‡ðßÅ‹—>øàÏ>>I¥¹»ý»vd­ÿÞßx>  é‚ÜCÓÃóo‚ÙNz­…žÂyV±)*í*\ÈeJÕ,£ ž[­ Ô:ÏݺزPÕ£!©më¼Ù‚eâîì~ÕE‰TBБ˪]I¾Gîâ‘}â=rÒ-“çŽv_®.»†É³Åp4‡PV[´B_¬€@t P„”ššJO¢‡®Òvõêµ+W®þýïçÏœùêo_ž>yòTsóI›½¹ÿ»ýŸ3¤RŸ4i:yRߟ¤-:L~¹ÃQeb¦*þ¡ã°ó'²©šþ„‚Ç›Ÿ³9…ÂÅ>@u¿±¤KmÆb}•S§+.1¬t6•²Å¢×±Î^Ò¶º>×ÃWù)eN³}KÚÍÅz·G*úöHÔF}pD-H ˆLgDJèŠwNl,«6Y–»ü甡6€@„ÚÛÛ=kªÔ'yuîžÔv¶;ªY__\kªRΣióž3Ô£HÈn.±˜ª¤Lš¶¨ÄT»¹Ò 0ÜU_(c]UÌJ—ÍÆ¹‚'Ïȃ„óÌ®ˆP&F¤#f,®e–\1ø è;ý#?²ÒCH§º v:M§`Ô³âg.¤^б—·éÆ¥¥¬xB¥Gv@Ì Ðk,<ÛP­O:½LÈÝå5©Œñ»*œ—ÚRÒL[ô…2:ç×0GÄ~¼ž™f‘“p¥û|PÖU䳄µ†L÷t†6ÓPÛ‚OânÃR=ë6‹!?ÏwNÄ·GŒË(kZmð팥‚½#ĈU&ËváâLæI¡›3”B"^×~¹"L_m ¨Þ'ÙÎî0dÒÀn¢Ëø»e¡Ù`œEnÌ+CäY' µÅÜÍñ_í–)•Ä'— ÏQNû Á5¯$„<Íh‹ÍÏ|ãî>¥|5š¿ú®èÂƒê ŒÎ‚?:g2S¤A ?hþËo櫼xòñ• 4ýjB ÐEÔ铤É$¾¼¦oåó™1]ãàž}gÈi5¶kÝ6_n\bÜà¨ÒgJhi€¯Kã©&&ø" ªõbB¯_é'4äšÍ¢ê\øn"ãlSmEð•âÚt÷:å5Ö«ØyßÝ­—®fR§¬q0nà³;ÎuðRÚ3tAÐ¹Ï Yt̸DœÔdlÎ_mr—öL{zñ´WVÔšfqú]t&¢N@óAÅ’''a´öûôLKKS!Èòòò‚‚}“肯k\ì~Ùè·7iÝÝöYâ*_›éVãå™¶`sn¾µð@ zˆÃ{ï½7oÞ¼o¿ý–n?âwÈò%Fׯ{íÚµöÛ·oÓêoþÏmí¨‘üãÖœœm?)¯q`žãnìÓ•—fÓ½ŸðJá–µ0×bªvø­ WʃD‘€:swQì`'‚ŒùIDATìTy>šÁõÔ†y­XY¢-ª©f¹á.Gˆ•5ñ¢—<«†#—á‚ÉCqRÄcM“"®ÕŠÆ2GØYר be4Lrl€LÅcÓ’™â¤d}ô@ÔE>I]ãk@@ ™ À'%óè£ï   .Iç“hý/ß°$@]Ç!¬N@Õ>éä¡÷é¶Ùe¶è •ݼœ¯ÿu`ÁUô˜B€D€Š}’íp^sêŒQë*Wì¡rQm Ê@@Â# ZŸtzÙî«ES3ÒÃëJƒ€Ä1•ú¤ý»ŽØ&^ŠÅ£WñÈÍ8>\a:€@‚P¥O²^ÀÆoùAtŸ¤',nØ63I ~D£{ ñL@…ÏqhÝXó5»ðu–ýˆv÷Ž5º†ç3;Ç™nÜw,5gk ÜRçH¢6€ÄŠ€ }RÚKÏÏ|IêoëÆwö7gÏ\©‹Nÿù[€*èµ¢F‰Þ€WŸ‹g Åæ`‚Vè$•çî:Ù;™êô©Û‰ÃH)Âæp0zÈèwÜq×]wvÛåÖÖ‹/ËB€O’Å!€€@g CKŠrùÛg‘Ò Ÿj€€€"JÓÍŸ?_ÌÝÑr;JßQ¶Ë—¯(ÕQoœ´“¾›ÌN-*˜Ý)Õã)¬J‡ä  =”»ËÎÎèÜî½÷^ú˜ššš“3E©uú$÷£ÁOz?¯üðˆ…&)õ L9½²BKo¬Ð°R[4«ÄßbQ¦Nà§?ýiB­»1jȃ‡Ïž<Ï&Eé³|‘C¦ÍáÀ„Rðƒ %@@ 3h¡Ý¼yóœëîn·µµ Ëî:®\¹¦¤VíÏ»Û_c;6`H´’HÁ÷íçÂh³Íx4«ÒA9€DB MØnݺuãÆMšCúæ›–¯Ïž;sæë‹—.)©SgîÎc-ø]åó™#”ÌŠœΘð¸pOQ %  !uú$ÏWÍFر0ªióò Å,) f(  ±  öÜ]´ûlÝf1xzz¸ƒF£«Èw-xˆvƒÐ  2uÆI!›NA÷³…<""¼º"„(  ±%D> î'¶‡´ƒ€@§ $[î®ÓÀ @@ fà“b†ŠA@Â$Ÿ&0ˆø¤˜¡…b0 ¨xƒípÖî¯ywºà¶Ù0©¡8€€@,¨Ô'ñG¯6©\83¶OpˆQ舔€:sw§Ë³¢©1~¤P¤ÈP@@ FT'¿j0ä‡'ÞÏ*¿JÝ~p¤-?H‹Qÿ¡@@@=Ô'1vÁ¶žÎlX8^w¸vãyõƒ%  ±" VŸ4@÷º ý¡öjóÅXõzA@ÔC@•>iàýÓ™­Ì&P:߸ޞš~zˆÁXPå|K{iªîÇå;²vónϘ6ó¥(½d6V¡@@ Ô铘¹eaf4:  qC@•¹»¸¡CA@¢I>)š4¡ @@ 3Ôš»ëLŸ„ºåå墎‚‚‚N+ƒ® ˜> ~¨+Ž´ Ñ&€Ü]´‰B€€@¤à“"%‡z  Ñ&Ÿ¢ÖBM¡5˜*»y‚¦Ç¼ Å‚©Á~‰@\ð´›³³ÍvŒ€@hTé“èÍIkwxþ-Ÿé Ü%ZÑ ´‰•èòÕCÓÃóo‚p¡°z þB¸ØI…W£TÝ©<;—U—%ûäu*Úº¶yù³À&E¦S¨ÅrRƒožÚ¢úb]ð,¡J@¢PåÝ„ üéekm¡<[Hv]ƒkõ¶èpGé´ÎÓlŸåØàt¼Su‡×wºØë6?gë8¬u~€êt /(ÖW;û쳞}{÷ÝwCjÿ¼˜£«n†f13¬nª œtÑöuI ¹;9kL+$åä´Ä`K›i K°ÅTÕá¯È)ð–q¯b±h,N©aµð)\žÇ;æTäc§Ý¼¹ÖT"¥7µE%¦ÅÛiz΃«¶{ióž3,>¨¤|ýÇH¾ebUÉ“iGëYÅq;3*"Rêä È'iµÚ¶¶¶ŽŽŽÖSÔSØ<˨8N:߸$Ì ‰œç€E(»„è¤ÊT»øõ®ý}+´ÛÑ1{;Ov…;7n?VKNTŠ“ÜUˆ:ù•³ž®œ µ…Øwù>wާ¼NHA Pô“šššpëÛ·¯OD`Ôë“öרŽuûL; ùm›«¸qåÄ R>F*4aœȉÕ)T%¹ÆK‰”…³›K,.J" ZøAó_~›0_Å“ƒâF+è5!¬¡÷S‰ hße•v’§K'?dâiÙ6!d& VŸ$¼Ê/Ö3IâÀ»ç*Äùyë<÷’qM혼!ÆÙ¦ÚŠÊ ¡…¸ÀÚ½NAyµÇRlÞº{I qéjVœ!Ø`¡€qŸÝq.æ–îŒ ]§qƒ£J/µBÖ*ûcŠ>ªõ|ÖìáËEJÆ%âTœ&csþj“ûIJ<-®­Ï­_móXäH)EškŠdž%^xJ앵¦ÙAÂ$ó•}‘€æƒŠ%ON+~iíöYC‘™PºÖ|û#»FÜ¿Xäº<êW8"˜ü‰¼Í¸ª)³þÞi?JtgW³£n.Ï´™–Œ«1…±  HàÌ™34E”’’â3Qä_f›ÚÛÛéßûz÷Ø_§ê5þ}P’ÄÜñ(5LrmQyi6Ý™ðWÖ "ØÅ]yq­¡Ô¦²[¡"èJ*ÖÂ\‹©Ú$D vƒ@’Pkî®sø„MS,_[[TSÍrÃ]Ž ¯+i¤Íáp$~ì@) "Á¤9lÑјH8)朂5`,ó~C°òÉ´Ÿæ¨ÂÎ '‰3–èIWHÌ8©+È¡ h€OŠ6Q舔|R¤äP@@ Ú’Î' ·ivÙšÑ.è„& Ö5ô ¥Ý_Käµã¦Gé1¬vór¾,÷%ôAÎÄ-uú¤ÓËv³u gNâXùû“6fÎë*쵆LÜ(·‡+ HpêÌÝõKðõúC­œ½íìÎC&…ühð.t@š€:㤴—žŸ9b½þœž’0¾áù(%îÄÄ“0ú€Fç@⚀:ã¤ÖïìXÀÆ7,œ¹ŽÉz§ñd ‹¶ÍÆ\RXB€Ć€*}Òù¯v]¸o°®aÒôñ3.ØÊlï=ÝOï°e.ïªW#tÞ`h¤# JŸÄGáêÉóÂ`œ¿jc©é÷Dg`B{QtÚ‚p ¨r>i`æëÎæ•ï0 ½™1mftÝ…ËåA@º–€*}c#~0¹á]K­€t7Õæîb†^lZÛô¥°±iZA@‚H6ŸDïß«Ïų…‚Ø  ÝC@¥¹»ØÁ௒+Šzhˆœ@’ÅI‘ƒBM˜€OŠ9b4  "ø¤A¡€€@Ì À'űOôŒ£B«$»´>gÓ E§ØÞ ª\߉)Íë+ úp¯»ê©Eƒ6 âžÂH4ûÔá åÔyØ(o¼ÝœmÆÊÆ(‡ HJjõIôþ¤µô Vú;¼¿ËÆZØ£‡Æõ7ÏéA³Î#ù÷%×:Ï]ŒÊK%íæ e¼¬§+v.«v½¾©ÿ¨Lawz?½»˜Ë©®…ƒ•æ–§þ°Ûß}n¯Ü\Ëjs{X¤CÙSŠôÀÚûáÜÆ¬ƒ-ci:‡rk›"Õ¬^sS«¾$—§ý·)O´tÁ´•»€$µæî¤!hÝ¸ÇÆ&dHsKÝ7.Ü%™ªœ«:šJ#KßÕSèÉÆÃi;µ¶Äõ9UëLÉ¥TÞQ•åîâ~kÁi²¯gÞA¡0Ÿ„Uâ a€€J×Ý1þîsa!øþæì™[~ .LëÆá²WVÔšf»W'Pjª¶øu+­ çkÁŸ¶0ËÓüƒ{Õxmq†k5¹Sjœmªu/Ù «7éóÇä×7Lä“LG3J†Iu›ërH2±¡ž‰óOÂ"YaèMy‚ÏWùÎf…^_,éË‹¤ôDvÆðLöpI¢<$ÍKžœ4Vìvko¯Ea¡°HKëv‡!cfyyyAAÌŽîÑÝIºÆ×íIÝkMìZ§˜hy¦­Æ{Âw¾"ßW;# @ [œ9s¦gÏž)))ôo`:::ÚÛÛéßûzKØ_§òÜ]àÅÛ^­ð¦ŒD_m-̵˜Vx:$rG R¼®°ºƒ|R—R§7eT³„öJä‘XµO(ÈßâpøÄM]ÊÄ •®»‹z‘˜I‹¢ÃÎFÒN7ÕIðîuU4 IC ©ã$Z –4Ž‚€@HjŸãA@ ™À'%Óh£¯   nIä“„Õ_x¨ºGX ÜÔà“¤;d—Ù<†‚)$½?éýQz(¸°ú ¯QHîã½P7n÷I§—­­eS' ðätzY¹M7MxRÁ]åQ|­˜BcdøQ÷@Â:HÝ®\8ù%ŸG¬ÚÎî +Ôq¼'Oœ=ƾþ“g•ÔÑ9Ýî“dŒ:yñ*»'ucûwíÈkBO°]ŒæsG#}ªŒ©€D‘€}’Ø=rH Øø†ç3É9Eq£{:ËYQE¤P Ñ" FŸ4âžTf?²¾ÿ¤†éCk=y‘éî‰Ú“^éù ¬Oº‰Ö=  EjôIL7dK>JðC¶&ó…û~(Ì-Ek õm¯Ñjz@@B#ÐíÏ»£uwGvжîÞ±s7›1mæJÝЕW\¾ÃÌå©E“»ý~¡ÁD)NèvŸDëôïÂÀÌ- 3ýÅ€€$0UæîbÈÛºÍbÈÔÆ°¨ˆ˜@·ÇI[vEþ¢ÓâZfªvÀ'… @@ +$¬O¢×Ÿ‹ü\/AçÏ*òbJ/šë Æh@@ 4‰é“\~(4(    É6Ÿ¤ è0@@@–|’,A@º|R7@G“  ²à“d±@  Ð à“º:š%Ÿ$‹Bn ŸÔ ÐÑ$€€€,ļ?I¶«‚€t1?ÿùÏü15ªÑhî¸ãŽ~ýúMž}úäää´¶¶^¹re̘1:®gÏž4Â'€ƒ]  %@)»Y³f544èõú”” N'ÈîÎÚ‚ú  IO€¢¥ìììP0`>)J(  Ðà“º‚2Ú…|R(”P@@ +À'ue´   ø¤P(¡ €€@W€Oê Êh@@ ^kÁ¯^½JÏ2T ·‰Àåû÷ï¸ö‚€tx ì¶¾q×ð½?)ua·µ gΜ‰š.(ènÈÝu÷ }'ø$  j!Ÿ¤–‘€  A}’µ0Ûl—8Y éã|+´*J\Hý ÛÍÙîŠ]A^|iGW´„6@@ 9ìÞ½;¦ 䓸ÑäZœí[ sYµƒ6[i}®à•ü%n[­Û,&^ºÚdY.85ëªb}u™1¦½q*ïè訪ª¢wIuIkh@’…ÀG}TQQÑÞÞ£òIÚ¢ò?©eîdf .E›—o¨?ngþe#íæåõ¥K»Ä#}õÕW[¶lùôÓOé…†Êa€€@$wîÜÙÒÒIå`u|ׂ+/ì׎Ö×n³³ÑîÂ’„¹ßgk\Zº\§ÑP —´ÖÂbý ‡âÛnƒµj~ó·æ7ã*UôÊO‹^yQ©Ò¡C‡l69¤Ào3Tª9€€€ñ±tΉ' ¤T,by 8)b¥BEe [™Q ’üf˜Bn€ÉÌä<ãðÞ¹çž{îïÝ÷ÞoΜ{ŸëŽ/¿+ÞÿµëËïËõÏsÚ¿­xùeƘÿûþÁ¾ÿððùPÉpeð¿ŒL—Ë•áb.æÿ“ ±nºPVŽÚáÍùþ¤ 8Di†ö)õU)v<¢eʺ¾’ -ÚB€ B€ `œ|òÉC‡ïí.6×7ß|ÓÜܼ|ùòW–,Édìâ N:å0H³Æ_ÁšA›=‚?ƒ@CGòä ðe]Oår‹&–l*×­¤ËÒéƒdÌRGÚ×›P~*›²-ɘå¾Õ‹ƒ$èrðQlÙl…-{A,uí-ú¤‰³¼ÝpJ“Á7øÀïAv›U®K¬¥Ò†­ÜVh×&ÉRà£×Zj’XR¦çèhJ_8)í¼~’ãØ˜zá…ÆßAôÑGýæ7¿‰¯Í¨­½øâ‹ãÇï½÷ž}öYcC† Ùwß}³Z[[A—«.üË5לpê©íŒµXB¼ˆàºñç§Ëíen¯×íÆÂË™™ <YâSwuªjÝ8‘Zlr´¥þp( 4,À²lHRgI³RAgÕRFT˜9jÔ¨bú!`ûÓ…jߺ¶öõŠ!l[ Y+¤‚­Y£®¨ †´RÁÉ·ˆä¸ë ©'„i‡R¢¢!] v¬Õu¡tLéDä')'r¨à š§<ËJ(wôO8D(‡„Õf|»Ü¹/ºÖ£«>n‰³GËQ˜Š¢Š-hjLÆÅ éаm1"¡òÊtíDd$^Êpn`;餓c~ÿý÷~øaiÎjll|}éÒ©“'8åÐânâOß$V,–óf—«= Ù °ŠÈJÞ, «Î’e7Lyhí!Z”]&Z@A²aŘ­UL¦”ØQ1ik-’tqôKT^!&@¤.›ˆ.fUË Þˆ¬)#!k…l7¸? ½OE훓ÏÉe×ä)–ŸÖêÊC“š:´V!Iz `œj„È ß:¤Üô (œ†Vz ¤÷BÝ+$tavP]†aê'Ztýµõ_Û"'aÜq‹Â'ߺ‚p4£§6ggggýðí{÷B„$eäW(tÒ v 2 4ûv  Š,?%•fÙµB©L;qeYDYR^é€ü”ÜWZ–ÕmèBiÄêIº8Ö›•$IˆÔ­J¿cªýØa´zŽÍèj…´,~Ñõ.A.…ô٤籩§¸:}êlê'Úº¯¬™N·Ò„‚Õ&„ªÅH&ýNDÀ4hõCuÆõA"O´`ÖO96¬FdåQã*ö^ë¦høI¥øÊ¢dvØÉ7œ20d0æõë×g-^¼¸¸¸ü’Ó_‘Ùi\Þ¢¶¢­`«ØWÔY€UÚƒÚ‘<ÕDgmÙ­“sP–¤Ùª 3fî§UÃAh§H²®‹€zƆéÏ?V˜u»¸I‹rC;yŠ{šàÓANº,Õû¢$&;üþã‹/èE]í¼§tMgPï‹'Ö€Ó­*ª*R¨>!Wjj¼ÉZA†_Jƒ¦ó¶è…Y7ÍÔÒ I—<ÿ˜:k\x5öAšuj.y¹UãàÁÉ***ªªªâɧЩ~jSLÔåÅ¡$Í`´²Ut«G—u:kKmm; Í‚»Ë¶t—¤|†oͶ VÔsQ™r&¡µºUäa¬+«³ÕBIGo˜í1cQ2û†®é›ž`ÕªiãV($JA–êj²4Ž“©ÎBÀtYÉëçZîèŸðP]eAvt5Ó~\ú¨ѸŒÔˆéº³ºéò ³V˜jѹÔYÆ#ò6¡¸…‰@˜jX„ (,þä~˜#UC\YeT/7Ñe”FjÐV_"ÏcÌØäÓSV_<7dî²Éb|㾑òlÛ€ðQ܆ԣ4d+¤ÐñÈŠOÓ)VgMßÑï~²Šª5“}Q¥zE)ǧÓ]´ãA ÃDÀz°½ºÕ`fMg_ ¥š®#G…ÔW#D†édH55,CjvÛ¯¾›ÎfìfêmìîEj<õ’˯E-ì€ÂþôÓO‘Z__†AšeT[Ŷ!‰{ò´c–Î…¼†%—µ~†ß7Ò$’+Ë G‚Ž@ͪiê`H…ÒYí†ÓŽñM¶¢·…[œ¼Ë©{~ÓÓ‹Ô>ªÛÊu &#úa8hN’ à4,ÕÀŽTú¾¼èŸJMuMéK‰TH’ŽÇîFc>Š*Qø‰VäEÝpªÄ·áX G'Ï¥N‚ð‹}~þÃ’.?ôÀííb ß«H5ÑœŒ4ÿèÛA—áUc–^êW²×»åÕ ]®ñ5 W}gKÍ…®ñÕæ²•÷g¸ÊWVà2—.Uk¶Øš -\Y.o?–vBW\ƒ7¦õgKÍø žsåŒûzßX=ÞðVýsaðžG:\H?ލñ¯Î–2 ^q)åµh5e­®Úµ‘·¼4ˆYEçn3xëÁKƒûc)î° ?ÕNƒ­ŽšŒ(Ç”µ]¥êˆ€~ È}yZå¾í§>ªÕ¾Ü‘1ÙÔ‹:±§qiZ‚‘©Ž¼LÔ¥‘‡¯Œ‰À-ø ºü@ÙÿÃë;°ýÏ´Ûã• ä¤Èô|щ¥ˆ3f)¹ï¿ì·®xòÆ^|bE£?·/úöJïªÙ}m­fÞuÕãØ¸êÆëò«»?#ãþº¸ØÝHÞu{¼bøNqÑ«[ëSð¼‡o+ʘ«|…Ø}ntv°¦Œ3¹ù…Üm‰G È“ÌôT“šNOÁX<õ_w‘[Ñý·ÖŽîÁ‹?º‰ðÍÚG'‰íH^bªHßUªï[ut5¥éäÉSÓX5]8òç]ª© D¿Rô"tYÊ¡"05¡tbÇGQ5Pc7…½§QTOÅ*‰èr§œD5~âx$]žVú¿qOД‹c€·ù6샯CǾÀ”cÖO¹ŽÚÖO½P¶bEùKO­Œ¸•••-øÝ´8qæøÂLÖL÷èdr-Í}Ñ{Ö®ZŸsÐQ'+x]«µà’øZSmE=´äBÔ¾GR–Êsgz°©Cõp’õ©î„Jvt·= Ç%ÒIZ¬£Ý48MÃ@Ž.ë':¨ e們ò¤E€‹u¯ˆ´bp}i6¸N"JÕ/Fã`É¥½ @—ï½çFÉ–ÁÎå$q'Íþ¬ ë)GJ'Ì#óŽ9½lÁ“+¶úÖÝúêEømšo×>é<×=)…Þõ‘C® iÚj$‰A@=ÏL6]®…ÿüã'Wla:¾& F¤¦&µ¨›ˆºbt~ÚÖ’>èý¤¸¯~'TBiP?Tv¬:NMØzEÂTD@Ž%~%‹kÙöÓ$Ôe)‘ÝW¦â…†ÆúhŒ—ñàv¢hQyÜrŒ¥ˆI,žK·m-t n¶M‡#a½çÎð‡pô£Óñ»g]/S¥o¸ñ°s|ÊCÈãÛ´M³ÿôÔ=÷;N˜Yư‘e/=µ|3^ èõ®| _¡gñf‘fð›/Ê.‚D+¹Od4^á2„6½Ï»hñøÒa)u÷÷-!s«Yᵯ²aWŒ{qÍ6Ô®[ .ü"¸ºØwÅ0›TdA Û•ÁÂó£³-ÆddüÅÒ¯hiœYcP^Qöba•™»ÛxJTZÊ­Áœ·än-™›cHò6r4Ìv@އ}‚Rã}%Ç×ÝßoÌo^ÏuÇd~gžð\oÈò ­#0ýÓÚz,9ýaiµµD9µ…ÄULßLO u¨ïªO}Ç©H7ëÔDâà%ˉFÀtͪC¹£>õq®Á=“)Ñ…²n¢;Òöåø—WPDÍEQ%"û©«™à¥ØkAqä+ïå(òM·Þ'ÿd0Û$‰cÃÆêr¶ëÞ.õ–-? WÞe †=_‡ݺw ü¬ ¯ÁùoÉ“ØáÉãß/x]öè›Ê]/8D™Qú@õø¾ÃîÙ8D¶)X1–Á?Å6bÛóEWŒ+\ZwK.É]³íù¾Ð±Â†0ûjÉíŒ ãEe7óÄáì‘àÖ ¸<ùyëqìÉÆ­,O5¢ÕÐ@~4Øw i§£²Ü˃éë×n{nôaNŠrDï_d/¾ØIâr߸uÚužå÷#õ¹ñ9 ox–H«ƒÀÃ,È]I>ö  vBº¥ž”AÌÂHðvC¶bU³]kÅ$ƒoò$š>õ¾KZ£+ T?õª€5‘8¬×²I¢®M¹ãtMErÀHyâüOËòæÖu®ˆ„ö7¡ÆM£E*YO_·nÝù•Œ@ ˜ëÍÿ³.ì$n4b¡ Ó;J¬’ˆZÅÇOÿ¶U‚t˜fæ–©¸,{çóëŽ?'k”ÚZ %”œù®*£±!@,h§Á —¾Zýñ¸+,b÷å» ½áZÍÆ¶6‚é`Þö€ÏٻζÂýäzÛšÙˆ›Ã$ÔNö¸hó À¼’ÆËÇ÷Í(ÄÚfH‚Y¢²ŽA7ùäÓï&zÓò΢“§pSOS'euÃrjשbpyÈvm«+gP_LH&ȸî¿Þ¢:k²_§OUQ9©4Uu}GêëMèMÓ~2# Œ>u‰<ïú0ÐÇö•²Ô”5l‡„ÒŒ,&÷âe6|;Ò EÈZ¶˜„¬©BB1‰¨¿Ñyn3¡šœìÑ£Ö£èÙ³gpçcd®Á'®´©©iß}÷µµo3óÏÐf™-Á£ê7—9ÏüëSðÀbpfèX†Î˜ èrûqõfžºÜ§à–ršùèR0ݬ4ëíÃ*qò5|M' Nòà–ƒ—:ÙŒ—ºš´†U–12×­[‡pìŽ;¢°“œU<ð@D—Œn"*lêø5×\“¢Œ?¬‚ÁË|‹^É÷`ËË^Òhè8T’€K:Œe³B #CÒš_û‘yCÚiƼ>Úå%`•)TúVͨq²¿îÂ3gò?¼J!´bñ'„é,Æù’·;Ù¦:}¦S)´~ªZz„êP·cm¢;JMÅÓud½¬ÔEaÖ‘£êZw¤£Ò”~“‰±¶÷«m¦zu…‰:q)×#ýöÕÎK69DlÐ\7ÑÚÚê4©1 Ë~€.ã…ßœzâ›±/(‚t ¾ï“˜h¨ÿª‡u}Qj+…Õ{ ;öS5¥ ”×Ö¸r@¯ÄH£OÍ¥ê–jzð˜iêù0ø}ß'ãøüKulmñì”NY–ò4)Ê"Ï©õÌ*¹r[U”1ýa¦Û„¾é°S:NF€Ó¸5XVF?zu“‚>x”cÊl®R•ðÐ/Õðk%‰¦ÓÍÄI»ÛÒrìv’ÍVqrI0fÆÚørÆó\rMImO–ZhIæªóWE[eK¶ÔVre¹4¬¨†LÎÙÖÕuTëJSîH›òÕ„SçINÄŽ€zòëÂw¥`_(FÔJÔÃiE=ž­Ê m×ÚœIœt¤oNɧ©z¦ªCÛ®©Qa;$l«0u0^uöÑ#ë€Ñ•­šjÀX¯§‘™Š¸)XÂwÞ„Lø“A3ŠþFç¶DIÝ‚“<ÒVRú,DÚY«~–[0æV”¨Y ^/Þ;Çc̾úÙ§ÊÐRAe‡I5²;$¥ÌÐŒÐutVòiå±-†PýA_—Þ"E’fkŸIBÄÓíIÝSøP›”èòpþ€ÔȲªèT+x»NžGín0A¾9ùŽ(é^)p䎎•’À¬i ÌèM„ãé$'rœÈs­_úP±0ªŠ jG×G¯•Y}€EFç¼àENu®ÛA ^uƒ›µ-U#ÊTGèâhʶ É)Ìj÷2·—5·s–Œå—]àÆ.–áòfdr›)žzì–wC%U•OÌÕËù·‚ì1¬€†ƒÔÊljeÓ„‹"ÊúŽÑ–ϰdÏú§4Ë:oF[Dš“sØ¥WòÑÝs+–ºi]’wçÔô0Ð?ªHîèš&‰ä:êSöZéÈCR‡I¹§°^ËV ”MƒÁ4À¬cCê«A"G`"`W–i쩳`:¹q‡]bÞ€fqïT1˜åv3üµµ ¿^0ež¸Ì¹-Ø-vX¦5c‡ÿ+8´Adåûcyœ™yñ^g¾ãòŠ” )4äÆøÆ­frƒœ7 ölÈ ¶Z3ls–ìÀ‚¡x9H3\ÅoÑQ×pþ!bD ÈÓ1¤eÛº¦Zúƒ3¤ARˆêa¦ã¯žsê9¤è¯T‹èSºjzvvØ£4^@‘‰@kYK&¸‚Œhêcî¶Ð%zøÉëQž‹¸·Õ1»m+¶Â(:/;Q4ÝYU²Üí /ýnw»8ϱlØö,H+þdÙË…ÂSùÀ‹³dü #¼šÇåAf†äÓœ|Ë~‰3\™  Íx!'ЂÔÊeÀ˜[–5|MH §à‚ˆs^.Š|– 8„MO&/]Æ› ñ ­¬ù¬Ò¿„@P6yñ˜n¸ªTÉÃqÅdÊ¶Š²l[ê$”–Qjõ'H‘“5]?& ò0î¾…ãø#{§Î‹:4¹ª@ЫXu$þ pýtè .QQ"`½ä0ÐG‹í¾ê‹ÔW‡j¼I‰Ö $ Ñî’êBD>ºZÁ=q*5 'µ¤•Ûú/ŒsÛÆËŽ­ñdfÉx°ÛÃó1ÐsÄŠÅüäìÇœv"­9ä“'_p|•L—K9Wö‚( Ö >¾,΢Ǩ™™â{~¦Ë[’jköµàÃJ”Â<šA ÜxûbÕ‚+Ë?žï!r>À•±É7€s†-i#:ýI&÷Õ­C"o^º0¯dÅ šz»AÔl‹‚·vÁÖ‚U‹?ºµDøfõÖIÂo‰Z³TÓÏ É=ëùµú¯t`M·¶âäÉ“ë`§X:¬JõA¢ÓèB‘^Ý©×Öæ¤\®îH²ÝàÊ *í‚WA‡uYž_ëÉ—É0~4,u³œ1Ës_±Ê{È~ã_Ò•œ“C­"» |Vl’øú*2›®–%‚àr¶šëÁ?ò´ù­IÆì×F-Ár•s8¦Pˆp·4ˆ}Á¿9 G“‘ò!bÌjùiå…Ïú—è8¬7)>¾ý£ßðDÝq:Î3­¥„¶žPãªÓŠjÎzu‰m)< ¢c*ECÜ£Nxiߨ<ãòTª³Hð YÓY¶=ã¶B· ‘‚l½‘ZèHýÔò¶#‘qj+ш%Ú¾S¿â+·½¬²$A_obÄì }3jÿ냗y7æ¡cy—çÖB°Y¹É]NIa^þÃ#ξ{½ UÔEl©øäûœõJ^,¢Ô¼%^ÑØ 7ŒúŒóCØ–ø?"yÄ—”™$-é²üíÐF„!@„!@„@`øðácÆŒ±’æ,™Rœ®‰è2,3켬öñ²›B˜¤bB cX²lsÇ6H­„!@„@×BàíÅóÀ˜­}Îâ³ñ2XV7ΘÀE¢0ùû´ù{i#B€ B€ º:Yr¹·¬,¹3OàËYpÆ,§Ïuu€¨ÿ„!@„!@]ž•e0ö rš]–]&ÆÜÅGuŸ B€ BÀ’–e%Œ9|˜Àk¬ËFY4PB€ B€ >Í3æn8kÞˆ¥i#B€ B€ º6Y ÇXR-] 4p(3Ř»öРÞG‹À–Më¿Z³b÷;Üx£&m©@ffVÏüÅ¿:|ðЄöfåú-K>ÿjë?µ¹ÃFÒ-33û Ÿ8rÀI¿˜PßÈxGà“O?íâP÷ÓO8!d³ärÅ2‰Y¼Uÿ Æî-;d¤@t@—7üçO—_2`À€ôXȽëœ;§žbUÎíÛ·/\¸pÝš¶ÁCò¬jûtË:¼ïA}=ËÄ[Km%X~ûÎÝ6¿·©U*€.Ï{ÙQ}{žþÛ™aÛÁëZÿ»}ïË×´´ºGæ ¶m‹„„@\¸yê¥q±CFdCà®9óÂq‰3fÿðJª`Œ¹fò‘…OŠzW<î}ø´pZ ¡óú-®óäßóƲ#7v¦¼JÜ?æÞøEñËk+ΕŠËO>§ty`¥ãn¬ÿÊœà†Â/UN†ò-|“¤™f º|åegggïÞ½;ͺ֕»³ÿþû_xá…»·Ì–1Þ÷@·ÇóÞò¯øŸÂÛÀ­ûÖkð€CþSß(k º|TßýÎ4+£`î#ÅO^SyÜ_ëçžnþÆë·¹Æ¾T¼p•àú)ƒÜhÔ¿êm¿¦4Õ¯ä½U%Œ5ÌŸ{Óªü»k–I^´#·àŒ¬%Ò¶E@ϲUè|!’1]&ºÜùg"®´´´pÀM{í¿õ>xÿW®?ã„\k›K>^{æpZóù¦­;õ?X ÑeÐå?w„YÛáüüƒÆ&ŽèÝçéE8h‘˜ B pƬoþ·†˜ù'C)x¯u¸kþï%Þ#¶ß’þ2þ¾lQŒð,; ß‚;ö² ¾…è ½E’F„@ 0f™»l}»fDý$å$D Ø9uáÝO(÷Þólù7™ßÏ-º«`:Oú¬™Íãœä(B%ÕSä.«dŒ»Ÿ)“vÚÚÚþpë ¥ƒÒ²”,¾'tâ]"I.„!БxÄ -"@œ5•£ÝÌŒÙoÇÛÔ¦ »Ô^¿ÃuÁ+측ùËW×¢Îq%õï^’ÃÞŸøó©•ÒÄesªÙÔ§ùAå]yÙoÉ×Ã-çÊJ_òccD™ï´±uϘÕB~è’Ü›W˪B³ÍLÁý±g_¬v¤Dù̆_Æ*ŸfáÞÜ“e§ò/;=ýŠ¿SÊ·¯ž09Ö0帀‚µÑ@Lx+´E†€¾¦Kd5;X;»ê`W¨¹Ä#àÉ8éÓ'\‡ææfÉ•wìØD΋ì²8`çÆ‹ñkÛºuk÷îÝ¥)Ù‰o¿ýV?üï¶íŒí—øþQ „!@¤$àÊmíî·¶íYýcK÷L×Ðý»ŸÞ{?æèx³Á˜Á»ÍÏøöƒÂ³——z›Ô²¬öÑc.ÊÛÕÞ3 ç±âÞ®;"ÃO IDAT8Ú¿^¶C¼³ûÍ{]ãË'<8lY®0âùɰ†ö7&‚U_zwΉlÝ‹ÃóËs'æóoN—…°f*7Èõ×%¢Sµÿé[¿ãmÙ©'cöÿÁÀÚ9_Ín À$ÂÜAÚøYJƒFìðÍ©]øŒÏéa³–-™ì<7Kê†PÒ@…{†5™p¥Š“æ;¤æ· C¡þ¢sû¼¿¤×oaÉÇ(¯.ÁØ·Nr(è1feúk/<§Ï{Kktƒ|KS²õÃEe#6Ь ÚB€ L€.³«yƧ[Vÿ (ŸØFdïwÛðìƒ~ÖÝ>!Ùd"ðÐc6Wv Nì¸IÆÙÊ æŒõ¨ÃrÜ{<Ãòïø‡7÷EèØšm¨ß9t Â-”j¦ÙêÚÚaë¿ V'TYHÿíeÃM˜ÄmPw•òMOL.ew~´†åMO,øøÛ]•[°¥AŒýà²ÿýbøâ7<Û–2ƒ[逶¶B’FÀá´r/Œ/éÏ_ÿñÉŠÝÞ>ðwS>€|1&F³oÁ€oxüc«\U4uÄ }aç­ëúâŽ_(LÉ­zîIúᢿŸD1fztØ¡€Á>Á®œ3‡å-¯½†”ûxPfç.ôuã•[Á§/·£Ó6ÕK:‡]1gØh5±­Øt«Z´ó"¹e¸ñ¾Ó°sÕÆ]Geï7gÌ nYœîžõË^W>ûåkø*ÿ°ÜÞ?7GŠCõ(ú èP–áÚµÞí·ûôD„Unk¾ÀNNѨ¾’YÚšÊuZ>ò"n{‘G•±½õrùz&Ôñõ˜-l°­hÚÚ §"tj~‚6^{±ðâß ÷ÕÚlë¿ÖAæØh &aºAjá"°i]ý¯÷—Ú®¼ 4]×p¤z`Wbãõ|û^ï sÇûÌâ7…`ÝÜ3–Ûµoò ñEϰ•ÿoøÁgÎ]‡Bû ¹6²Dß—Æýu†%Ú¢E`æÌ™>Ð!ÑPC)nÐ÷ýÚ즦&peüɳ“\Ž «Y¤jÌžxÂÓúlݶ kt€%«?cÖ¿ùyÌ´‡ÀÖ­}³³eû}FJ,]î¼nRË)ˆnËk¾ÙÍšÛ ‡º,s—÷ëžuÖà ürónyߎ¨gQƘk¦ÝÎS&VVäNëïýM‹2 + rÊ?Ÿ“åÉßv{åE…•—Üî½ñœÒ‹Þ(=¡°êXç0ëç/û”!s£ð„Î)ûô|„®«ë ·¾Í¦Q{‘{M«<¤‚‹/¹½â,°v©Ñ¯ÄÎÿ½ƒØ8oƒ‰µE’Ä‚ÀoÏ]zõU#.:Üoçñ³ëÅñè²5¥œFó¸2Ã^]Ä¿ºñmüGÇ<öÖͧ‡ò_ÅÜ©¯?\ÄüéÜeuÆûQ1ø©‰ë.Çç?¯ìP¹Ýnp&!kiG~O³ï—©‡µ·àpé ',øý¿7-ÄØÒ çô­ÞôTû€²ÜW_5ˆ¡ø¤»7mºÕ—Þ0à®9“NºjnGíËèÔ ô…ŽÂE`Ò¤Ißÿý³Ï>++\|ñŨ3aÏž=l©<æç>ús{Ÿw®úÕÆßÿé](ÿëŸQ<¹êë­r(Øæ1ƒa ;o_2p-êJS²iÔ_©4ÏI3§•~ô:¨íYs4r<~öà²5ƒ(s|Á#;ù‹uƒ^ë#k§¬Œ/­(|ê£5ýx­Ò'/¸`âg½ónéo9«þä£'®éÇnµuŒ™¬¢¨•¯&Óâ;b-mÞ_êÛܼfÍ*öùs§¸CÖw&Ô4ß¹9çªEá¯oâÕu;jߺcë ÃB«Rüõ¯]»vmmmíGqíµ×B¢ÎLà´:R1æñ'> ½{÷ ®lä1£ÔVScg«÷Ûf¾ Ò…#Aé¶mÛ°´4%›FŒY?\·eû–½=œ¼"9!x˜ n;µÆÇŽ‘0p÷Êcošs#²WŸïè‘'kqh›Žýç™"x¬jñö›ŸÜ|Ú‰ìÝ÷¿š~ÑÍ(›õ–]ℤœ™ç;Ú¸dÑŽœú g#ä<¾öNÓöxÞsø„æÆ'þx•÷ñµkOã{%B¨ÛQûÖ›n(|zôèñàƒ^wÝu³fÍUõ6À‰Ýêfå«þ °jÕ´Ã~”Ý{ÕŠ–BáÿªFÊó_\k•CÁôŽ@1øùv><äOqÓÿÃEÜ”Üþ﹑ú᪑ËêÒ=¡}B Ã@nñœQœçM}’͹"{ÛVÖ¸œSh±‡·ÊKj(göõ1Î¾Çæ‰™}[êV6w.ç×úÖ·@f*óöëÛ¶pv[ß‚s9VjÙÙ}ŸxâžìlÛiƒ‚¡šÜ´ºÅâ<$ðE4ÒgÔ¹ÇÕ¼nçF(#¼\ïÑÖlÙ÷€ÞùD3u[»Äs«ÏyAAÝ4ÑÀ´g÷Œ}Üíß}Û2á®÷NÏëÝÖî}çóm­mî)¿?ò°^ûcN“3M݈WÞ2µúr„„/Õ즯;vN»hêCwVmìÏZwv™)CoF0\¯ðOì‹£wo=çž!­9G¿4„Ý3çŸWz¥bíšæ†¯¾8zðáPÛ¸dñ¬W?|ðÑ_|µaæ ,2 U½ÝÚ¤0?ý4_:^«×7h½H*CáW¿*‡|Ïž=‚+ûc̶rk+7nñ Iê#Æ|ÐA%«¶cÖ×5~çöòÀ m„@'#ÐgÔå+ï®[qO\\4dÚ˜ˆ½§ë§½OÚh^¹#\7ÌÎGå°©qÿKˆÂ°Æ)0à µ…öÜÜWùÆ„0šOü$XÿßÓü°eoë/ûðÕ7?.~—ºwËœòû_]tF4 e z"gþ¥4ð<£Z_¦#¥{ÓUœÿð‰!ómãGo~‘;h pÄ`¶àý…lÓO-ºàd»¨°¬øùÅÒ÷7ŠZK—~iÔêwr!{óϽɌø4²™ÿôÄfKeð'±Õ~1ûÜ!b{èˆWWßqŠ”ŸrÇ«e¾‚!·¼#4ñ> ±Rl”•~uäÑR8àò¿üqÁÕÂÌÞ?šªÊ)gýQ´ÂíЖ(¬Zy™ŽŒ†o›W7æ‘öÛo¿óÎx tœä¼ÈøfeXÂûLdŒYÚ}GfÈÎCývØaúáÀ>‡º=^ùg†$ ÀŠ×^C˜oíä1Wßb3óïèÁJÏú Ÿˆù‚F-dhürÈ-ì±·‚®Ó †äcW§Ü±j•‘¬ÌÐH×/.~ÕåÂQYÀîXuŠO!°LÖÒ-q‹0‘QEauª-Ú‰œV§Š2¹àϘp4tvïÞýÊËç`G½óÏVYQ™iVvQ>ôÐCÿO˜’1k‡_5~çñî£Ji‡èh†õÞ:uêTÙ*p•x‘*m„@øäÓOož‡,·¸–&ÅZñx)K`cÚxäé×Êÿ±èÜÓŽ½Æ• Ëá°ä»æÌ;ñ„TÓo/ž‡»½‚‘k®¹†bÌ1žªÞ•@^ÇWÓoásþ7\Wøþ$éX“ ’ çT&Wà—¾¾/¡X+\;*Æl+‡‚MV†—íhñtèùðóìÖû|h±¦~ówúáºÆín/ÝÓ{Üw„!Ð æûçKÏ=tÏï Γ.‡ïÝmÃÇŠ4»2±hÝ£_ò¼Ž sþÐÏ8xãÆ½zõÂOó]¯4ë;ÞVýÃ?ìÓÝ~)7$W¸ð£/1aÇfs’CUOcÎp¹øÌ?÷õ­0&·ý?oô²ÆšÑÌ%߆M“$"B «"€àÅç€:ÇgÆ|pËÆÝ2HA am‰EëÂhcÀC–.]:zôèlß›°Â¨D*ÉŽÀÎ;ß}÷Ý_ jë(æØß»äkklUl„=Ö½©¹Uô9hÿ­?4õÆ´ÑÀé€65-¢ï¾ÝÞ³%4[p!!ð—SÃÓñ2t]wfÌ)‚ ¹I$ƒrŽö¸Ýóžy¶µE¾Ä$©¼#g¢DÑeÐå#n[ÿ‡÷zàÏéåøR@ÛZÍ­íßíØ£ŠFù‹W—Ù{Û?;ÈnJ“­ !]^öñò‡¨• U©„ B Zˆ1G‹Õ#<$…$NC°$þæoxQw¶µ»—~´bÉÛŸDdÑeÐåÂü##ªEÊ„@¤`vT¤UHŸH'ˆ1§ÓÙ¤¾„@ #02o0þR¸äzú" ¯$¾½¤žÁˆft°Ö¨Œ B€ B€H5ˆ1§Ú# B€ B€ :bÌ‹7µF„!@„!jcNµ3Fþ„!@„!@t, fÌÆá5Þéó‡îÐF„!@„!ÐÅHðZ+W¼Õ*ÕÁû§-98s­¥•g‚¼ .€À’×Ò]· œgê"GàíÅö8$8Ælß(I B€ B€ ”AÀ`Ì.Šž¦Ì)#G B€ B€ :geö¥f¢kÆÐúe%9†Ç Çz§¯ž[U¤‰#ÀlÕW½¡|xni­8Ê/‹Þ|„ÞzÇ#àv»¿ùæ›]»va§ã[§ B€HW233{öìÙ¿ÿtí õ‹eÌc‹ 60f0æš…•Åc+XNÁ2oIø‡¥)Ør^µ×[ ÔÊËkX‰Ü«>)¥ Ëûî»oïÃK%§ÉWB€ ’/cÍMM_ýuÒ{J GÀϘeb†×‹ $Êmýúõãǯ­•q];#9Có+ÖTîjf;½e å8]®P9§Dŵc4MÕ“D—;ì°¦¦&ëè=àôÓ3¿ø" }&—B€èDÜGýã;ï„tĠǾûîÙ³‡±}C*“!Þ˜c̸<¢Ëi].**²R–ørÆå—”ÙO˜UZ…?¢˜ó]=Ý¿½ÂJaU(Ùœž†EUµÅ3íJ„2Z™=d™µ¦“ܦ%2Ãvì.ÿ°}{RyK΄!ÐétÈ!áø`{_ §"é釀™1G×CÐå‹.ºèàƒFœ/¨N™«Ö4°‚›sÍl^æHu¥å‚ ¯·»œC—O/°çõåJu‡ Ó§GœäiÔuê !@#@÷ƈ!£ ]80fE—<ðÀPŒ™2³ ‹JƬ©Ë:={ž³Q8\Ÿh{nüAæü2[kWûÓ¥•Ž6¹x˜ÚR;ÉŒ“< @6‘SB‘Oþê‡õ!¯ÇãŸ^;üˆïúv¸’Ç-=žÞõ<ÿì’°Çä!@1!àtÏ4 S-&W¨2!ÄʘuºVw%e®aU¬h¾)œS‚)€ ¯.W­SÂO©(dbFö&Ø·¨ç~è¾MV†“ÜÞ:IS0ãËÎ;Eyïö0Θ9ifn7ßiwóvðe·³fVõÒ+ÿY»qOSÓ%¿?-U»M~„!ÐAèñ'_“ ^«Ê¼ZŽi ®:Ý]®™Xó¸qã€BË2º¼{÷îPrÊœ[XŠ‹È6qôµž Ÿ 27†æûbÅÈá`ŒG”V×ÊŒ ž¬ÌŠìË)™Yì*tYÙÊX+£¡„ÖʰG+-¤øyÑ)ßNÉ;Öûš‰µÈ3\Y,Ø{ÛÝžÓ.6sîÞÝ{®*PQ'B€à8Ý3MèD’¼á?am×SeÃMZƒ‹Fs‡!+cþì³Ï"õU„€YÑ a˜ÓÇK%ñùÅŲ™‚ée3rs]¥,¿¸8ß¹e$;מë{/ ¿p•2.ižmÙœäE¤&nD•MÛ·>÷å9—ü­GYY6×ÂÒßí¼|ܘþñLSSóÔ?o¶@Ç„!@ˆ­ÁÕ‰àw±¦;ã-Ùü[¨ÿ5&ŒÞŠC>§On¾…,”¤¢ÂÐa¼2ß–UT,“F|ÕMgΧ(”íçv±sæÝåafËú¬„¦3‡£ugSSËÖ­[›››mÑÉþö»]Û¶ï:çŒÓßýô?÷>ö¼µ ’„!rè÷ÆàÎÛÞ#Š\K×ðrÌ.âSöÅ®üwâD^¢ Q.uu¡¯†c‹<‡ekE¹XR@._;ÑhÑoq"×9éIÀ¾hDlBÉfkpIÓ6¥ÜoÛšNr;$Kz:ƒ1'=(ä`ê! gþY?џІ1·|ß¼·©Dííí¦.£æþ¹=žg•?ðhżç^@ÞÑÛ®TÖh‡ F@»7†îELNi1¿jQkXS‡—ðú~b®­:ßë­/Ëgµ¥8¡®™ˆdLcÂimi®- 5;Ãí×!“S'ÌJG®Á%âlÖ5e•–/:W]\9C0{»Öà²C¥KÉl~‰îRý§Î¦ÐF¤潤”_2þk-ºÞ:]¡q¼?DçXÜjÉ”„€Eªd90%߀¡²/ôE®´E´B¯wEkpÅíì‘!Gcvl— x"Àu„(9–ŠaÎÔš½þÁEàÇÌÃ22yD™‰¥3~úé§^½êÎ#Ì.D¥Ý^'Ë"1UZ Ý™ :iæQó·œ)t7<öØ[Þ«å~èÊV 8“wû¯^=È(ò²I¯5Nr?C{ºá±k^>ïƒWGFß#Í©‘÷}Ð0zò£gûý±zLB å9ºèâšõ^¯q™-©ž?¡à>ï ‘¾k-ºÙ]¡q¾?„åX˜×¾t7,‹A”Dî…˜ôG!Ø^cN3G.ÆfõÖ?¯`–ûìÓã°C{ÙïÝÛÝgÛt¹tÆo¼÷¯Ï)Ÿzö?íjiiÏF€¹§gÄòàØðØdN—ËEtu t9x¬ãvÞ9GÄÁ’41èêë‡Þþ÷øD¬ãæ"bDàˆÜ¼ªß°^RSUTý·Ü ®$Ýý!ˆ¯QñՎŲq¡CÅQX§*„@b°’fƒ1óö—˜ÖÉ*!@LcX¢=%w»A}9ëåácâÇ ÉÊûí×ÓiéŒ-Ûö47ñÄ ··½OÔ­Ù6ç(ÜðÆËuE£Ï´yÇŠ¨²áÑÑ¥o^ƒAå¶v–”ôýè†À"®úöíÃÿLö7Â<Èâ0<‘ú}K–À”°¹Ä02ê± BßVȼà«¿Bf†Å&I”E`Ð9çåUUóky—ÔÌ/*©.~­Ù]/Æ5è¿ß*5®©>¥Kì¯ŽŽ¸?˜OAøw³ØïÚÆjÇúÂBD:vlÉBG"€?,»¥þpIÇž°ï>èïémyè{—zƒO¼[%{)ƒ¨°í:à“#Z,VÀàž,ÂÆn¯÷” î>ú¬†Œ,‘Kgäýᦓ.¾û¬‰È%2ðÙ.–΀&Gö•ÐBäPäDÍɲ“œûR7ó¤¾rãbápOí,)=é•óÞßܸysãmŸ€îlx󕺢ëkxàYÛòfÌ44éú¢™5°ƒB[á dÞÀFš 0G„@j!0ðìóØ”7×O:û«Õy¹Sî^ ùªKGçjסè›~ñý¥×÷»”_ÝüÂÑJ.´øßBÃæÝ,LµÐí‘!š(Òœ…Ð2Hs«¯à͘ h~epjv’¼îZh_:î“ã &XþB,·ìâ\Y|u‰vedöØ·ç>=¼ré LìÑãgûý¼—\W®],°!jÉ´Œ¨Ï:5Kî 6¬o¯ªùæ*Aþeͽ¢P„ œäþºP’¡ %Rß7T4ïiV¨ù!½0!&„z+¾ZÅØhѨ¿i%„9·.è ¡ù]¥=B •ÀÅëòæï+Þ?Ì5†·ïį_\½ýú}^ôô7÷ágÿ¥áÛ_ÿxÁ¥lÞ7ߌä—9·é ÈÄÿþà¦;@x•H‹è²d€KÆ ÒŒ¿‘žAŒ¹ËˆÔí¸x@™ÿÐ%DŒqe΃ùÊqFäXd\ðÅã¯|錅…ÿó8Ø3H³HÆàëcð¥åÚ½í|™9޵‰ð$ƒ®º¾¨ê²þ×/õYØðøcj?*³Vg”ÄØôË¡¬êÞÇ7Øy8(ç˜U ó¦—^ß¿à1<>ûǘõûüå7…… o¾üyÑhü(Ía°"¤½ê˜œQõÅÎè¡¦Š„@|tÖylæewxÏ;[ oýê8©æ½ÛŽYõ.\VŸ×ËËj髈*‹ §¡N^ü 2³\¼ñ¿?„¼¦,>8‚ƯxÚBew;_t¶LY\ÞøÿgÝAB ÝàyÌb}e‘ÊÌ—[Ácÿ ±3»õ8èÃ0)0ɸ.D Z¦;Ë0sLˆŒ¼÷›÷r Néß_Z9æ¶÷üï‹4©æ^;ãNr;]ÙÈ{ß»­à”Súß!Ê󇛉Ÿš7LRY\Í=ÝÐßÐ÷©sTÔþý?—|!r;ᆆÏM6çD)Ž®–cî`çmÝKoè™L·ÀåÂK‘ºÔÿ²þ"¿ª¨HözääÛîá1EEÇ8Ñ ÷gg¨„ ìÈK°–fA—ivg±vä5ÓF¤<ÃÂáF%GˆY,«,)²X1ƒŸáõ×.bðcC>ÆÏE(Äš§F¬ßX3›¯…ÎßBO! pˆ1«ùm"Cd0Ëd µ/—™“Ù¾4 ”³HÛéâk¤S+)x"M\¼)D|]øm#ù·ÿ†2•‚‘Ë„@z#Fw³ô>QÔ»$A Ë…Õ1\ÌåÊ`.ü* ò̇Éa†KõeÃss]¥8¼~3Öc.¬Ä¡I' ¦äF§ à4h•œ§1#ÆŒ€±Á†Å,@ƒ.‹Õ0ä¾Á§ù×H^”ͳ2Œ¢ä¼4‰6˜0O]ÄÖV˜H/È6!@$§{fš"“„@: •‘‰7Ÿ±nÝÀ29pa±-l ÏɶaõeoI€SVI²ùLþ$bu9Ę]2Ìl¬4'Ӕŧ~6Ò—E*¯œüªD!WB€ B ÈÈÌd™¬{7Ö}¶þºgddB˜Ù>PS„@¬fk³Á®’ò)}obÌ2ÒìöÈEåÄr"Y™Ëùœ?A¬Å¡o9¹&nͦ1„!"Dt7‹üí{#¯ËåJž—òâeÁÒîtËô:áÈ;K ¿vV‚—ÚÕ°È’ò,X¼ŒŸ ág3 tôxŸ}yÖ¦ ,+“eu‹_È!Ð18åäùäˆ0‹@²LÀð•åêr¾ô ~ `…r¬§Á\<+ëÐáP¬F‡O¾9µÒ1}¤VB€ˆ º›§å–æU{½r²QCyy +‰xâØÏŒ¡õbêR|¶š‰…•ÅÕÞ á‰ùëø4aµ´Á&^jmÊ$‰ÏYÙL×RÈÂÔ?¼»‡‹y2™X¢9£Só°alåÊN; ÇËV¬è´Ö©ápÊ™ðç1#‘)üS~9äÙɈ"óïŠÆòÌ Æ‚OKÍçÁʵø>)ž.N­Äà8U%B HÌݬ¡|§Ë’˜ò^å”ÄõƈRþиñï=Itõd> ‰î{í#‡™3fÄ”ñ·øCBFg†˜A—AM:ë¯ÉzÏ2™æð…ãør<ƒÿñ¥åD>†ÇÃ_…d •›ÓÌé5Y X3m„!@AhXTU[<Ö&¢Ì1Ÿ8q¸Ë5‘¿»ÉŸ/ ±–ȘààÓúkKs u‹¾¥¾Ï¥@;ÊQ¿A‘a÷ó½£I;wµ|£Òf¹Ñ _+½°ø¦Ü;u%$Zꈹԡ¨˜ûâx$ ðÞçµBˆï8É#Aèò- kþón9‘Væ‘唨À®ã°Æ_×RU3ý.Êc–_7ñ I’d1ÿøãÑ÷,¼šp@xФ•ÔÈÔA[yÜXl‚0³¯7lãÙÆò¶ÊVØmqr6m= WÈ3ÖÅEV?ÐH®Ò#R,•qõÔkSÄYr“ ÔD v5©]úC~Ñ!æï «­4‹e¬x,W—Q`^œo&Vý1Có+ ‡Û¦9±Nkª"^;“³{߯•‹gJJ›S2³¸t¡Ñáü²éBZ0¶˜ÍXÓÀ L(ó-x]K)[S—_6_´&\˜aîœíYà,´´VªºøÚ¼Fb·“\ÅKätÀ0{!ŽÕy·EÒ2¤0a·Å!ÈÙ´u0l!ƒ 3X²ÚL‡a›"EB S°›ÅâÙÿƒŒ7Ñ=ïñ» m„!@¤4¸7&dsΘ¢üÒ…56ñ_05OÁØ ™˜+ˆ½ vÀê³L݃ªË…·™i9Ó¡íØÙ6d¦&‚hFU“o¶ètŒÙ„peöeþTsn1Ò"WÍ ?àv߇"tQ©'ö„˜ïü Ü’p)f³‹tLX°Å²‘Ó-@‘€ „!À#ž®Bø¯ÁȰVFCIÀZx‡/+Eî…?/¡au­Ì"à‘EVdrΪ/ÀâêÙð z,7¸ }vhB4ÿx+”o å3*‹gò|’P[Ô¾ÙïAæ™üKÆ róaœ[³A…à¶ í‹l×,´¸äˆd¶Êpa·Ã!ÈÙ ÚÁ…zp9¤2)Ɉ޸·äg2úG>„!šà¾q3ÒuëËê }3ù&°1æx3‡/ãÓú|Sý ¦ÇVçåK¤Ù fþYô‘Þ 6¤ÏÔWâ°±&î–&üõ@«ó|ÞŠs\Ùè ÏpÖ‚µæÖ´^Dï›Ù¨8.¨¨.® O`EÅV•`g=²õÙIéÜNÓ¥K®…ÌÆ%þÇÉ€‘1ì¶89›V¤"¸&MšôðÃó)N¾ WÈŒ3fÍš™8ªâµÝ¾Ÿ×-3ÿÖÍ=ãø[äâoÃîüìí)ƒC·ûÆÿôº{ˆ³ªyæŸÖzhۤѱ,ùx­jðÌGªýõë×ï·ß~ûà<´„!@Äöööï¿ÿ~óN—~×k d,6-‘‹)‡¶$86Ë]µö­·Þ:s&&qúºÆ7“É“'Ûde$)D‚-ýÂÎç×Íû›"÷“Ôcr«ƒ0`À×_½gÏžjš!B Ë УGn^¹±Ëô8Å:Šu,jóËâ™Zœb$Ê]0feÝzª0æus'rºü¢Èƒ§„aNd7™èÖ­[NÝ.’é”/„!@ D€–}Ë^`–[Ò¼%&]îÓ2̬xsŠä1¯{mÁŠKÇØF”{îelÿó†PŸðŒ¹Ú²‹~M¿b'œj’ B€ èà«Wø6ÊLjLjj¦cFŸ† ±ËZ~ãdªÆÎ;?»ó‹ñgÌ]U¿°‚-˜gàá‚ >ƒÞÎ/°»…m„!@„!@„@H ÆlÊÕY­V¬±!¹ë¾`¾Øóà)7]*” vç4æ2é+×\qËñ"=~ž­±Nè5I„!@„!¬¨)€þsR“æÁ£.6o‘JºˆÖK1oÐØü ÑQÚ¢j„!@„!@]?cŽxÍÅEˆ‹çï¥g*c­ 68çhæcÒëæÞ=OÄ›!\qË‚^s™ôShR2F‡ž4jŒ B€ ´@ÀX+#¹é²@úœ‡v~6ä ¤UHÜùzÌBúÙ>!‰\ŒszáÒ^ã{+»óÎKÙ£>×<¾×-âáf 3K$»Ìç3ÿúëŽó©[|z=^ìð#¾ëÛáJ·<öx~ÑçàKÇžÙe@¢Ž„!@„€ ©²ºœp}ð”·wN1wÂVz½ó!CsНЭ¦Ù§-`Æ—wŠêžÛÃ8c椙¹Ý|§ÝÍwÚÁ—=Þ6ΚYÕK¯Ô~^¿§©éÏÿ.mq¡Ž„!@„@(RŠ1‡ê •AÐ_l µLd$e¸²XÀúä¦êínÏŒi—N›9wïž½%“Æ1NE„!@„!Øf^hy̌ᅀê/=úL½ nD•#Ü–nünçåãÆ¼ýÑÊ;|:ÂÚ¤N„!@)‰€•4gHŠÜÎØ„[üA1³HI4Èé®…€)ÆNçA²¿ýn×¶í»Î9ãô7þ½lÆ}áÔ"B€ B€HuL¤9K•1Ó‰‰7hKI§õSû|/ò> ãðM,ìø–©ÅD#cÆÕ€ÿÜϳʕc¯.ýxæõí'Ù'B€ d@¤Y-¾l0f•U\©ÍcÞ±#0"Ò$%‡Ó)|cd|A —ÇëšuÃ/ÿú¨~ܽk÷ž?îZò6_Ÿ…6B€ B€è"¨HscæR—«“cÌ]ä P7;9G!6>ø[æXHƒïüþ¬|,¦Ãê¾!Æ>*&B€ Ҟnj"tYliÚYêV—F)¦þÏ^Xï:ïeü‰k@.ÉÌøjÌ†Åæ°ƒ*í^±–lq¦ B€ º$æÕ宑ԯËî’'‰:ÇŒ°q†ÃjrFtD™”Á›™xÙ‰±#8t\¼ #„!@„!z«ËEðÕihN½.Ç„@X¸y Ø1NŒ„$n…¸ÀšA—A‘‘Ç!ÌŒ¿ÖÒè·š‰®áå z}«$Lë‘V„¾ãN4”7œ ׯ1±FóϦ¢(Ì‘!¬˜G5Žq!ø¯ èü6[õYávÍt·ˆ®ªEqE€GÜ]c·ÉÇ›-Oý¸¢@ƺX*Ι0³{_®5óà eËþùÖ×® #›™geÈ ¼0…³2òËêe¾•wYIË)Y&þ wk(ŸPUT_Q\¿ ¢¾¨jBà·‚à5¨”Hv Æ×®öÓ­YXY<¶ â+(œ^r¶œ»z¦qzç³EúWÔp,!@$cVŒtY†™“1ÃMõÔ¯Î+Í Œxé 9}}O0d>éýU™Ìb.Ÿ?Þœ_úöO¯z«îÛ?Ü|Í£+Ëÿõ²ú¡ÏcÌnfo;OÏpŒO'}×cr°aQ+ÁÎ)™™W:›žó1¡M•“ œ¡ù• }cÚ Ì ðßJKóª½þ¯¥9%%!¾¢&À 2IA0²:%iVŸIɘU?Ì*ÓîbAûG…„€·Ô—³^ž ìÁ$×h^¸áüس¤o|i°X`ŽOûã¤ÙÛÞΧ&jóÿk¤>øRQ¹>áåkün˜+ò¯‹'â—Ý€ ‹Ûvß*ͦT%gÂìwÉ„½¨[{bi›„@*!3¦H=lü„Y]A¦ËF¿²üû6—³ \dµÆœZëchw±À›Ž +Y-bÐ’3„¾UÅÕN!-+`ðŒ ŒuÂ|ÏeG?¢ïØ}'3=Z¿mˆ1óL |ÊÄ w¬×ˆ–þ Un5s‘ô ~­f3DZCA…üq¶º¸R  ÃCPØæ³ª «­:߫ŪDþ¦m¼ŒÙøà;³ «kó†ØD˜kKg0´ä­.®Uåœ!yúoØ>ô/!²ð‡üha®™m\––KNï¯år¶#¨ÍEf§H2B€è,Œ¬ 4ÏCjøŽ$wŒ9«À›Žª‹eþ†ø}+¬[UgaOív,"+ƒ/…ÁI34û›?ãèC[Û½ø“1f  ¹]Ìùã1fLŒ5+ßL,Ùq±l¿aMb´…•á4¾êùX5tò˦‹R‚Udùv þ¦í³‘m}qvòËæ‹\hdz2X¦ sÔ¨8åefU‹0a¡™ÕòœÂГôL—³-¶_5vnime¡ø²m|ãu’ÛZ&!!@Ä #Ƭҗñ,çL!6ßÍ+øÍ(xi t“\ŒÈJÆòb•e?Ö×ÍËbpZ¬Æ>väBrÒ̃ӉKË(ác±ÒâqXÈ„éGÁ»X1¸nˆÒ¸˜r H‡h›Š äE@Ræ»t~>‰?ûLðsYk7¹œõÜÝ‚°/îÆåi|ãu’[[' !@Äc­ e05¢Ë<ëKüRüf¼4~ ’¥”@€ÏäO6H3žCâÅ=b“kÉé_Q ež•0s;ÈtÂÖcF&3r/ o@;å÷A>Î…Œg;© å3Œ¬ kE£~äÿ3¥‡ñ4h@Í. ¹7TƒH*8e.-,ušÿ ú J+~gÁÅâ‹#‡CvÂz9ÛtŽÿt„0²?iª¡¼œæÐÚE"B 30Öc–.€.«¿Ît*DÛ2§S|Ù~3 ^¢*N7x³\_Y¾Ï'^}äI$k?®ˆ3:˳|`bá3Y™ÊqÆ3³`ºq;ªÂó¹J{¯«ZKC"E éŠVÊÌræ’29–mmãëÇaö+‚ÊRÒÒêio-‘‰ü±ÎüKY\sJæ Ï8ļG`‡ŒåE,Yd'#ÒÌÃÌFŒÙ?j|Ž J‘ B€ º&Ę»æyæ‹Ëá$’.ûX²/e™ç+‹H³\Fƒg0Ñe!áédîŠÃ†úL„!ÐePaæ€õ˜eºËâBOoaf_oØÆ³3D€ÿðÙ~2Þ,ÒšåšÍ ÇƼ@™³$ >0½á¡Þ„!@„€ñS3gc6CCÇ銖ʸzêµéÚ;ê!@„!@$TaÌú[²vAâ0!Ëé‰ÀóÜ–ž£^„!@„@‚ÈÐí#W#‰—–Ë/«‘ñêâʉ5 Æ…Ì„!@„!@Æœ Œ-fukRÃYò’ B€ B ÕHAÆ\³°2¿hLŽ@¾¡|¸ Œ»dÔÙ|¬)Œ!Ácx¹A¸Õ>ß™8ÆBÚ¡ðvªyòŸ B€ Èð3f502§][š+Øñ±Þe%‚0×LÌ­*2R5Ø °àšÙ¥yÕ²#"Ñ >A}Y]¡"ʶN×Ö ïå Ò ÝÊ®L˜¶4dk€„„!@„!@©€õýƒ™cÌr¤ì©Èc®/˯\h$17¬©c>]XY»ºå ͯÔx1W(+çæ”Ì,æ*Λ/pݰ¨ª¶x¦ääRÛÚ³*!B€ B€H3üŒ9‰çüi˜ç”Ì/«ãádcò¾ Ñᜒe^ï|6}‰wòD`Ci6 ¨;„!@„!@Îج•‘äÔÁâ¼Ò œ3ç Éc•{6z ÚŒH4Ÿ(ŒˆtCùŒJoF ÚlFJ´šœ1Eùf²V% !@„!@„@ú!`ÎÊ@“81Câ_0½Œ Î\PQ=™Ý,¢Ê˜¿'6d/‹´ ®PW(EÈx–‹8óüŒJ)\ÈŠmN)(wužÏ¬ˆU[²©E"B€ B€ ôD UÞ`RPáõ¿³„'_”ˆóáß“§§S÷N”YA˜R3ÔìjØ6Є!@„!@¤1<ÆœäiiŒ>u B€ B ùH•sò#I¦ ÏüëCÇÃgŒzcÑež©äöxnœU®Z{uéÇ3¯ŸUãT‰ B€ RÆL‰©wÉãH@R²I}oSËõ›V7ü·µ­í—ûwÔà^ûï¢ =¯‡y¼ìöë.?þ×Gýðãî]»÷ìøq×’·ßޤAÒ%B€ ÔFÀ†1§v‡È{B ·[©?eíÙÇíwúl9ôÞ IDAT‘?r@·‹Æ` ï’êžý×ë¾; úß뼞o{ëç/_…Hó¨3Žç«g¸½Ÿ}ÙHŒ9ÆTN„!@¤©‘ÇŒ·_‹·UË GÃñŽlÿ‘V¦œ@µ´:kÔ™˜@Š…ªÿÙÜ#ï)î¿yó7Gçþ¢G÷n?þÔÔ³gÏú¯ÖÝ7í„U оxéŠÿºŒ¨4Ö›Ã2sØiŽ©yªL„!@É€uí¸Ô`Ìc‹+ú(sÚ:V[µÈ Ì8Êš“ܰ“wÉ…ò˜‘h¡oM--ÈÁØöÝë7m߸yûO{ö@A¼ºÄËWhæDYfyhÎéH®Þ‘7„!@„!wRƒ1³œ¡ùuk$GnXT•WVÆV«#V4†sÜF:tóp±A™‘•ñ·¶fÚû÷–¯]·¥aÖÏW5ì¿ÿA³Ÿ¬ûõøçò.xêØqÇýñáãÇÎþÇû3R›#Þð‹‡Kÿ¡Dh(î’?˜ð=í—þúÄúƒ‰0èÛxM¿«²½»¼†þûLx>„kݾM’©„€y´ã—Œý•~¿ÌV}5Åý@nÖ›AøæI“ ƒ@ª0æ1EL†•A˜ÙÐ1CòŒ˜sÃêÚ¼!’0ûï6 ð éþ“˜ñ“’V±TœŠ1#+ã¯ã³Ïüí¯víÚSµèõ¥ï}°ÏîS.]rÉ1Ëç_TûÜeŸ>WüÉó×|üÂ_>|~Þ¤-ÃÌQu;?¿n†?›ˆ›¨™]Zk˜Ê)Yæ]VÙW¿ü²zþªol¼f¤Ê'TÕWøûž…‚Šú¢ª ‰ ªD$=øy³ÖˆÎˆ+vaeñØ‚ˆ¯µpºÉU¹«gW´w>[äOD §>é„@üð]Fˆ-E3Ë’'o\ «yL÷1s6n`üV61ÏÑ»jæ#&µ¥3Ø|HêËX)=ãã?˜RÔ"sà[ÿØô¼ôgžzâ‰íXEî/ôíͳ2Ä«³ñÙ¢ìe(’¹攎°QÈË3¾ö5øè-.»z|ùWÏ(É)™™W:›žçñ=!d-)ÀÏ›þŒ@ÿó&Þ¾âûki^µ×ÿ6§¤Dû2ïæÈ!@D†ˆ$*¤ cfF*3nY"¦œ3”“³Hn.Í?hVú¢ùeóEØø€HAdH‘vš!àvcÑ VÆñ“WûsÝìªM²›/,Ùtüe5ù—,~Éó'\[ÚµþFÖDÒ’ÝO½¶?¼p£¶„9l´,©H<$]B ÕÈS¤(³ 1r¨L˜~ ú÷±glö“ÔÅåX˃×Z±­é$w0CbB€ˆ ÔY]N<¤k†Öå¯[Ã}ŒÍ^´¨ŽÍW¿dë_ÑuÖᄚ)rdT;Õ@V¢Å²ÈÊÀ_zÙã-ÿg ÆžÖï§ô œêǧýµcþ¯È›-øÞW¸°¦¢FAY1xW›má×mZVÀ³%s+3+¨cþ±T™†¾OÃøáe.‘š‰HL*ð§}ðt¦±ŽI ¡|à?ù,Äo<Ž}¦B µà”¹ ?häÂø²OäUÉk5hŸ *¼^^ÌyFùtí*ÔkÑö R!! ¤LŒYpäÒÂRf,Œgvei©JbÆ!«4e‰2µ¤FˆoðÉp"ȇŽC@dex7nÞöΧk-]Ž¿'_~·â…%ûý,kÄða>[ýÈ3ÿzøéWæ>µàÑy/Ý|׃k×mTÑe¹µ¯ÓËd23ÔδË[æ¿›”MÑ&þÓH°–üyÌz6²¿†ý/Á,e¡}  s0’JZ ÀŸ<|ݲL™ÊnÏWn÷ཀmíîæ–¶­ß~?÷©—† ;õïÏ|¸¨ò/"+#Ú´ ´Ä¿0§§ª®l~`¸*1:DŸcm,xˆ:VëTŸH"Ô5«ÿ¢)ýã“eK}­u¼ÒP\Ȫ½xao‚}¿ÄÃÍøõI×öñƒTùðÙC–iß‹äöÖIJñAÀc–‰Vñ±š+¦©üâ§.ÓLß¼F.Gù²ŠŠeRd„KŒŸd5yøOýÆŒ †—ù]6öŒ¦¦–Wßá_ŸFþ6™®ÌŒAú`x€·´¶íÞÛúÓÞ–÷4ã%&;Ú»sþöìÚÓ¼±qç÷?ì(<ó¸Å•Á@™­CÅ´9üVâ4ëŽ'<Óêé,(Ò û^d5=HlI€éƒ]¸-¤;¤@¤&¾ß7®Y<˜êËäò§¸¬|±bäpÈÞâۥ̸à?u:ÀOBÙŸ­ÜP^NskÐ"9!ÐI˜³2À›;Éj–ˆ?_¬Ù¨¿Ìïƒe_Üp×Ó¯ÿû?3ËžÀªÊínwk›»­ ŒÙÝÒÖÖÒÒÖÒÜÖÜÜÞÜÜÖÔÒÚ„ý¦Vèà¯Äìöb \=#&G‘™‘_l›‘!ÌTTóg'¶ ¬(hVFH/ø/̘kZ Ú÷S³½P>h‹:Ú )!Fð0Ë·!̾9}˜z ®hƒøò«w!3.^\ïò"œ°:/ßDxêËêdî…¸øÇøÃAàä¶1'¹s+TB1 àš4iÒ#<"ÎvpµÞvÛm³fÍŠÁ,U%âÀ’×*£gŽà3öBnzqñøsvýÔ´þ›í _7¾õï››[P+33s̨‘çŸuþòOk:"©"d£W?Ït hÞ^ô5£÷–j„@§"€Ûo˜wÝNu“'â€À­·Þzûí·#SÙg˜2eJ å1Ç2ÑÕÈØ/ó;ðç½¾nÜþùê†ÜAn:áÝ?yíOšö6ØÿâóGBiAÍû7L9<¸ŒÙ*#ÆÜÊŒCNšÛ8onådšÅÜ»· DÙ¿\Fô«ËÙx؉">1 òæùüÈkQ B€ B ¥ Ɯҧœ€|™Þç§ë!+ôwë·ßímÚ³fýv¹JšÅKþø'_5Ÿ‚îüq7þyãÏþ“§ø3„ic„!@„€bÌ4ºbu9ï#Ž™yÿ„!@tiÌo0IV0L¯%³¼¥ ~ów•/oÀž¯Ô/IÖn‘_ŸÞÇßÞŠÌɱHÒà¹"ïã5%Ê$ ‘‰Á×ÊàÊ Ú"¿™6B€ B€è:¤zŒäxÆÐzñ¾VVIÀ™óK4µ®sn©§ÂÌ>þüžÁ×ÄàÑežµ,x3§ÎpZÍx3ò,žJMKe8 JbB€ B HuƜƧ†º–(°$ÆÕS¯M”u²K„!@i‡gÌj¡ ý]Ù©ÐSDŽ +áh®«´¸Ú[ÁüñfÃ{Zž¹:W©••Õ•®žé{Í…žSá4ÇÝÇç¹-î6É !@„!@¤ VJc–ÔÙª”¬ýÇÛǪ™ÊÊ`5~ªÕ¬v-¬©((€rÍÂÊâ™^zݯn$&B€ B€àØÌüKóµ™ ÆW.äºfa]ÙtΜi#B€ B€ H•<朡ùZÖÔ±¼±Q‡ ¦—͘PÞÃfÔÍÒ†#žT@„!@„!nØÄ˜“²‹9CòjKÁs…s5³Kk‹ÇFÎSĪfÏ®bEcˆ0'åÙ&§B€ B€H&8cN‰ÄåÿßÞHQ݉¯ži†kA ¨â1‘•¨ƒñVÔx0’DÔ(¬‰É‚h²ÑõÏ$’x°x¬kâkƒÄÀfsFE#Bâ‰úO<`’ FAEDTcfúúÿ^½îꚪêžê™žé®®o9Õ¯ªÞñ©×3¿yýªjâ‚ MFã(™2‰4¬nÚ°@Ì2Ç¢Y¥NÏ5‰Yc·ß­næœq Ž›£îIÇ‚ € €@^ô½2$ -û¸Ù}¿eÕ2¹¬Oî’¡—©tíZi·›Þ¹ ƒÔyEÙˆ € XÏ8(󘋪¾qîìÕM‹2qvQ³&3@@` XA³u?Œô[/zž„a˜Ã·ËÓéÙ9Ù=³*Ì|diXh47Ž’,çÊa™|Ò9e'ƒLœ<­Ùk¤;“sî²ìõ”쥆V‰ÒgÍ\M&¡`Hĉ+W>ÒÖÚ:tè!#†‹%Z[C}ð#ɪw·½þùñ½ïý÷£Ÿüñ‰ÿøÝ9kî™´æ÷“×Ü?åå¾ú3\–kå~sr›9Y‘ ¹àp €\ (ó˜³ÌçÎ^X?eRz€·yõ˜E©Ô‚‰zŽj§çIlhZÝ`…¬Í³ ÙÃ6™Cö\<Åœà‘ZfÌNÏïÐù¨¤i†9ýcÁLË^¸$=ßbù’…ÓæØµ'.Hm˜²X"k[T-¡¶.k™„Ów˜GºËr¤Ô-È–(¸#ÓÕ$–¢ìÝ›0 ×„3Ç®Y³1•ªzc󦧞úíßþúð›o¾šLV¿µåµ1Gõ¯«²o_›*ΜŒa~©û1«;4«@Ù šõËÂî´Q”  €ô¨€&¶#sFÌŽÍ=Z» 3‡~#¯²‚×Lì¼qýjcÚdeªyÍkÓÂõM‹Ì­Dµg:+ÞÍì—Á³µätȼ|Éê¦Yζnæ*ˆ¯n°‚æLYr ±z½TÀ]–;ÅÞêº1õ ³Á~lö'°hÑkÿ½ð;9ò°-[¶<ñÌïn»mê~|Emí;;w~Ø·ïµëûL¾äÇ—_»ø¹—?ZýêΗ6~ôø [ÿØ«Sþï#Ÿ¹dÁ±Í;nòOÆ_ôÃô³LmîÌb^(šýÌ"…ù™‚Ï FóÏwÏ¿Õ^c³&™¥ƒ²õ¾²“ªhî}=·z&ú¥sU2››ß–ª#\à™òóf’iõ\.æõ{¾*v?gG‘×Ò©ºÔ·ÅÊ™k†/ûcžw[ÅZÓ0Ê^À1—q…ÓWþ™#ÊXT¬šY¦¥/Ú“¿òe6qVÓj„–QíÕÖ ¶£äº™‹šê­¡h¯j¹Ër§dŽ3ƒðEÆT¯àÊ+oÒü¤z 9ð€AƒHÕ7®»âk 6¸ÿÞÓ¦÷Áö7âÉê¡5üàñŸ¨~ïÄ1ƒö¼g<þðæÍŒyÀ¯ÿ£aå=Ó^¼÷ë/üþ›ÏÝ{jþ]fôEj¥>l”™B{£Ÿö¨hyÔÚ9zTKýXÚ¥ ÊýÉ> P˜@»{evhYí]7zœ‘ \Õ¼Ìx³Ñ¼x©¤l\º¸ÙL4÷tD.¹šR7iбøŽ;΀yùÜLè£òµ.tæã.Ëâºhš59Û ÛG²ÙaßLâø¹ë3{Ú?Òõúx7›OÎÑãl¡òG¡´;PrN_“jÎÆ° 2Wd¾‚¹d&jè­ÙCÌ·­nMóÌ'Ï)-¨¥9fÌœW⦛&¼æ9-¿ÉþI0K›­Þèx³Ù{iv]ÖÒK®w¤5 ãí)¥x™+Ý;R@ ‹A™•!WÚ¹?nŸhNi0—v{Ž™•N¶ÿùžÙSÏÊh—¼P‹íó\k¼ÚfÞ˶§=Ûz¶V™<])Ù³¹væãä.v…J=|äÈý‡~bÀö÷«««ûïÝÛ2xСm­#ÞØÒ¿wßam±Øþƒ?ÙÛè·ýý­µú{Õ:2–¨8pèiÇž2|衽{yíå¿^zÞ±³ÿí 2,­†™Û_P Zvj¼úУÝ(¨ç¥«ÙÄEÆâ…¾ s_lêë0×UªÙkR]o¼æÆµ“UÏÏ^᪋îk]8kólš’+[æbéßz‡<-•»?޾8Øj¾'fÎ+qÓ­–…ìŸÊû´d·ÊP!³þ£)0gû”¯kµ3?×—MËóéfP?Ωœ3MKèPÀ1˟¢ô8 ŸŽù”ËÀðë›¶­j^_]ÝgÃ+ͯ¾úB[,‘HT¿ûÎßߨôÿªªú¶´îyüÑÞ{wGMï¾o¿ýÖ#ÿÏóÏ=–LFR©^ëÖý¹áÂú!Ÿ¨G—õ0sW0ÒSã%>•_µöÏ0gq™:YW¸æÜÓÜàÙ4µ!>ÙyÌÞ>PáL5ܘg sþ³[ù[͹y2·O½37áÏ´ÚçµÚéAfùÐ&÷âù‡YúÍ;ª±y¡þ5=Ôœ+=wölA® 8#æ®çX)9˜?“d‚‡¾ÕF¥´*„í¨ªŠ}ôÁÇÛ÷ùçwÉ—ê>nÙøÁïìÙ³ëƒ[:ë´êè{Ç;þØÏ~ÞˆTmÞüÆßóóïÝréç&}iÍ‹--±Þ}¸ï¿MºàÛ·þ×Ò¸ÜrNÍÊè´ Ñ׿~—›32ºë/±ö—–f?ÓðŠ<ÕÇÁÖplîkR˴ߥÂù3ñ®.SªÕ-é÷¬×ÔxóÍÕÁµÚò›$ý€X¹h Gís?커߼r`º—¦ßùÒsdO2E ²#fûL‰B¹ôÏ$×'Ò…fÃþe P]]uÍ5_ø¯ÿºrÒ¤c:xÛ»¯n}ë÷ÛÏøÉ÷N8õ¤ãN8þأnj6RÕÍ«þß=¿ùÞ°œ~âçÔ‡ní×ï £êÎ9ôèY_¿@&dè‹ÿºÖ 55¾±¡Ñy]šç¥«jJ@úÂ3u9kº`×ÊŒGÉçÄŽÚø¸´Ôv„ž¨`þ.ìÀB <›VHÞûæ«°}`83Ô3_&f±^‹Þõ!µbTÈìñžÍ´W~Ud®ÕözoZˆUæ2RŸ!É0²ý†¹Ü+#—é”H ²#æ¡Rlù D£Õ#F(õ|Hí?žòË_~åÛÿ÷r/~çÝ­O?óØ»ï¾ÛÒ¯­¼aÃ[2õ"K½óömm©–Ö¶;ßmmÝ)—ÊS²%bîʽ2Ò*23£¾ýópÔÏKW'.©æÇ±S)™Yé_®*u‰ášªá¾´Ô}2¬)³Çl°fìû9Е#¥ý…³™ç¸*·ÃÜòï§Â™ÒÛeà‰™'ó`†˜óŸ„plUCÀ†×=û3×ôe®ÕözoÊû]_i>uí¸\cÌÂ(Ã;ÖÅëæ~Rö3(‰É½> R÷UòLÇY¡•ô¸@dÆŒóçÏ·O_–Kzn¼ñÆ[o½µÇ+Cäxò…W¬Ígðé|»æÞ6ó–Ÿû_:¨Fžê÷owm=¤Ïž>U­/<»á„ªoÅÿüܲÖýêkÄU×öí{ð–7ÿöÆŽM'ŸxT[Mïk§5HÜüÒº7ïþÅÜ•Ëä.-e …O5uõ#¢âäRT® ÈßNÿÔíjÙ@Ï Üpà ³gÏŽÅbV±½zõúæ7¿íÙjP%^¨G^«‡`?¸ò`3Þµ3Öºm· 'Ë¥~Ç}ÞGmÇ«#Uµm±¸‰^4ñ¸‹§N”geËm™å{ƘK ŽâåÑBSÆš>:ï#Š: Hß\ÃyÏŽb3 €@E 1Wäi¥Q9ôÌ yÖµyŸÁ©E‹žÛµ«vÀ€>o¼ñh¯ýª«'ã­ï¼µºwïý?9üø?=üëSÎ8aðƒÓ·ËèÒÝårÖŠ EP"t-SuS°®åÀÑ €#À<æŠ9•4Ä—€ 1ë1ff¾ø–7¾þÓÍÆ'F<ßüÄ‹+>â3ÿ±þ¹Ö––¾½ùÃM£Æ&׬Yò™“GÏ[ôì¥ÿ:/žÐ#ÓQ¾œÙ @J`Œ¹’Î&méX@f5ÌœP³2o¤Œ1K}—½¿}ß1õG¬|ú¹wßÝ´s×›_½ì¤Ó?wò¸c>}ø§U¶yÙŸÚY™Í‚ €! bÙ }sIõè> —%ô•yÉê+eŒ8ìOŽ”õÔ4]“N7£êÃGš”äs³Å<æÐ÷ @Â(@ÄƳæ6˳¾êVq©Ô¹ß{=•ŒÉx2K%ÚR‰˜Ì`N%ÔW"Þj$Ú’ò•l3qÙt÷÷¯’Ûktñ&a–§í €W€ˆ9¸çŽšwF@"fóFj–Å#s§g\Èà±Î2®¬†œå¶æEj2†ufVcÌ\ ÖuŽA@ ØDÌÁ>Ô¾Pus9sîrzb†š¤ÑñqRæi¤ô&õ]Ï]6gbÈºŠ¤Õ³Üeƒ@B&@IJúæš³ñÂKòl?Y$V£Ëzf³9SYfkúžÍ›µšÅ¡be™Ê¬¶‡^@Â'@ľsîË­2®ºößÂm@ë@@ 0"æÂ¼Ø;è*ƒÌ IDAT÷ÞuSЛ@ý@@ ‡x‚IƒS € €@Àˆ˜v¨. € €@ 1÷08Å!€ €L€ˆ9`'Œê"€ €ô°sƒS € €@Àˆ˜v¨. € €@ 1÷08Å!€ €L€ˆ9`'Œê"€ €ô°sƒS € €@Àˆ˜v¨. € €@ ð”째 üöáç’ÉdJ–d2a~O%S²¢^©ÕÌŠÚ)™Ð¯“É 'Œ=é¸1%®:Å#€ €@‰ˆ˜KO±%Èø+_<Õ*<‘4TĬ‚f#‘P+ñ„Z‰K¼œLÅTÔl,~à¡{—>ÓÚÖ6áÄÏ”¨Ö‹ €=$ ãiî’ˆ˜Ý&¤T²€ŒÛ›W-ó’ª"Q#’§ÍñDröu_¾nÎÏZ[ÛÎ;ãø<{² @*@@‚æH¤]lÀ<æ 8­4¡„Œ*²ÈŸ™2,ýöû;®¸dÒÏ~õÐÒÇÿRÈÑì‹ €P8ÍEמ1æ@žE*ÝiÇóæo_gÏ*‘LÆâ‰¶x¼µ-ÞÒk‰Å†]SKK˶÷vnûàãs&œqçü{âñÄ…çŸÖé p  €N€ˆ9p§Œ wIÀ1ÛóŠ'±D²­-ÞS±ò>‰˜[c»víŒÇãß½í‡Öž·ÿô×DÌ]:Œ €@Ј˜ƒvƨo×dR²;ƒ‘?ø‘;ñNÞ'—ûµÅ¿óõËž>îØvíÙµ{ÏG;w=¹b…{gR@@ ‚ˆ˜+øäÒ4d"a¥>úç—G{ì’NÚÛÚ¶·5öÈ“ýôè1çM8Nn¦!7 û뺷‰˜s›±@ÊàÊ¿Ê<¯´*—€ÌT¶6{ÊØ”‘ŠÅ²1´ý¨=ûZ÷¶´ž?áX•–ûÍÉmædE‚æ\9“Ž €•*Às¥žYÚå- ó˜“)¹¡\z«yŸwÄ,cÌ2•Y…Ëê†Í†<Ìļa³w¶¤"€ €@ 0Æ\Á'—¦y$ÔpqzœXfe¨{bÄbûÆÞ–6c~왿ýþ‘g=øDzŒ9Õ•yãÜñr{Gs?w£g©ÁHt7dùô€7)ðÔ²gœÝZ^O_n¨îß•7°3×L›Üo«žm-¥!€@^"æ¼|©|]óЗþõ‹ß:ðžk˜<ý7_üÚ/?ÅÝ {Ûb2–|oäÿ9û¼y§ž9÷³§Þ6îøÆó­#Æê'˜<ó—¿?üèŸ\¶BMeN¦Ú?cÛwS7.]ܬ§<Û'±òy¯¹˜ƒ»ËÓ38Ò·›ÊÑn‡ìÇù²š;Ý9$»§.Ó̰Ýn’Ò°ÐhnQC[Kž†dö‘#ÓKú@Gaβ=LHB Lê&M±BælÀl}üâèÌöe²ë®w„«m¼­¤û›0ûnÌ‘îÊŸ(†s1É£ÜäN2¡"™ˆ›_±T"–L´%ⱄÌTÞ£æ+Ëäd†º9†ÄÐ2£Åœß,ÿ;ù³ãÎ?óä†s&¨Ãe˜9ó´Ì‚[\?ÆëSÜåÓG©±gµlhZÝ`E¿Í³E’¸lÚ†ÈTsUÖ›ïÈD¯™64SÍ9ѹ³Z;¹ýá²çâ)ÌB—³Óª›Ûí6q”gÔ7ÉnÙq³ÑÞ ÉzÈ‘:ëi ͼ—ß‘i¡™“ãeÁŽ€@O ¨yõzó ¦§dØ ÷×™ïÏêwô¶ò<ˆDèIî•ѓڔU¹hOæ Ï»ø~wñ—ì=+Ñ–\r½ÇCI¾ô¥Ÿ&â2ü©œÜ)#•^qgâ+Åœé š7®_mL›£ÇžëfΙָ$½S}Ó"sž¤Ì£4V™d§ÖgËïî‰êUfë(#wV³Ì¬ÃÕžÍ GEu½§M6ÿ­orìæ¬«ÞÛ0<’Ù¨þÕÃÓ:Où®>×n?fCzâ§ã¥ý@Ö(? ™©K7Μ´~uý˜Yíëç³3;Þžmô|[Éàò¨Æf½d¡ü;MÏìÊ•î™3‰ P$Ƙ‹I6e, ãÊñ˜÷=.âmIùò¬{<“çc?¿jõcOÿåO<—'˜¨YÞ;{æM´¶ÛÁ®…nVAwá‹üæÍ,Ž!äüyuØù]Þ`˜™ohª7óR—I¥Seª†úhÙñ2qlE ä*d^¼tùÒÅÆý§k¶F~:³ûánQ®·•™¿ùVJ¿aÓoÖ\éîœIAâ 1Ï’œÊU )ÆŽ{Gº‰V™¤÷¬¸„ËñxÛøcŽžpêIgO8]&dè‹ÿí?ï¯-œ$3~}Õ2÷!ç4ž(ÃÏOüøE÷¦sÏ™#ógN>`è!#jjúœrÊi7¿´îÍ»1wårÏ_`î<º)E~Q϶&wSd‹Xòã· ŸºÐ!\n¸á¦›nŠÙžnVSSóÍo~“1æàžSjîW@sVFîM2'CîÂ|ôÑc?bLŸ¾û©Gd'ÔTf¿¥² €TŠs¥œIÚ‘[ KÈÄ ÏíjSŽ I™þ¬æaÈ” ó.)u3æÎß]γx@@ DÌA8KÔ±kr7Œd,ùÅ›'ÈÝâÔœæXJÃ2‚,÷f– ÊñäE“¨æ,ËX´ZÔ65ƒYL®Y·nûŽÝÑ^5ÇÕŸbÍå0Æ,s}OxîG#€ €€1Ó *_@V"²Š‡c*tVÏ"QתÇ^K¸¬nbÆÊ2 ÃŒ£UÔ¬ž¥m.ãëO<ð áÑ^}$\6'f”CÄ\ù§Œ"€ P*ûÕ}Vˆ˜Ku:(·çøîS+W®Ô³øï¸ëž)]8d@/ }U¬,Ó.Ò7Á0o·,a±ºï²Z¯ªŠöéW;pÿ«ª£(ËLtzÏÕ›’@@ :hV¿û3 s)Îeö¸À‘G)ÆRì€AC¯;jè ¨ÄÀ_óªºyœz,‰Z$,ŽK -w““Ah5Êܲc÷Þmïo—·‹¼gÆüÓ‰z*s×@@ ÄDÌ%>ß3µµµº êh¯¾ýkû÷ï%“2N8öy°‰~.‰È’¢n½œ2$n–1fó‚¿”J4Ÿö§f<›×ÿõL…)@J+ #ÍÖ03siÏ¥÷€5'IÆŽåöÉ”¼ s6ŸI¢ÞɤNQñ±Ú”ЍeµQᲺK†y» 9˜@Â!`ÅDÌá8á´2# 7ÀØ÷…—Þ2/îÓãÇ’fŽ›á³9¿Yþ“XY}7çk˜±²ÜŒ¹Ln•ÁÙD@î`swê’wä>W]ûoA¨)uD@XãÊÌÊ(>E–‰À½wÝT&5¡ € P†zî²|—ˆÙŠž«Ê°¢T @@’è(Ù>À,Õ b.ɹ P@@2°‚f«~DÌezª¨ € €@©¬ùz…ˆ¹T'‚r@@ÊW@ÇÊzZ3sùž'j† € ÐóŽf©sÏŸJD@(k ší³™‰˜ËúlQ9@@žб²=\–Ò‰˜{òP € €@¹ 8Âe©.s¹Ÿ3ê‡ € ÐÃŒ1÷08Å!€ €IÀ —õ ©z4HÕ§®tYà·?—L&åN1©d2a~O%S²¢^©ÕÌŠÚ)™Ð¯“É 'Œ=é¸1].œ @@ Ü$JÖÈÖ÷•ÓÕ%b.÷ÓFýŠ+ ‘ñW¾xª•g"i¨ˆYÍF"¡Vâ µ—x9™Š©¨ÙXüÀC÷.}¦µ­m‰Ÿ)neÈ @ÊPÀ41—ái¢JÝ( cÇöÜ«e&U$jDòO$g_÷åëæü¬µµí¼3ŽÏ³'›@@ 2ôÄ «-\ùW§•VøHȨr!KÊ0dXúí÷w\qɤŸýê¡¥ÿ¥£Ù@‚'`M_¶âfƘƒw©qWcÌ›¿}=·D2‹'ÚâñÖ¶xK[¬%výM---ÛÞÛ¹íƒÏ™pÆóï‰ÇžZWêÀ± € PÎz³57CªJÄ\Î狺_À1Û ˆ'±D²­-ÞS±ò>‰˜[c»víŒÇãß½í‡Öž·ÿô×DÌÅ?1äˆ €@ÙXCËŒ1—Í9¡"=+ “’ÝŽüÁ܉¸pò>¹Ü¯-þ¯_öôqÇ~´kÏ®Ý{>Ú¹ëÉ+Ü;“‚ €& Ç˜u£c®°“Ks:H&ÖþùåѹwßÛÚ¶·5öÈ“ýôè1çM8Nn¦!7 û뺷‰˜s›±@ʰß]Ž+ÿ*ç¼Ò?2SÙÚíÜSƦŒT,–¡í9ìÙ׺·¥õü Çʨ´ÜoNn3'+4û)…}@@  Ž»dèV0ÆгIµ;) ó˜“)¹¡\úpó:?ïˆYƘe*³ —Õ › y˜‰yÃæN–Ëa € 43Æ”óE=‹/PÃÅéqb™•¡î‰‹y³·¥MƘ{æo¿äÙE>‘cNu"dÞ8w¼y›šñs7z–TXâòé錬•‚ŽÏT&[ŸÎåSP¡ìŒ@ œï y=}¹¡ÞC]y3;sÍиߛD£ÒT’€ùË;=ÆÆ¬ŒJ:³´¥c¹s&`6dVF«yC ÏÃÔskìÌ“¹ð¼S.™t–pñ[Þsí“§ÿæ‹_ûå篸»ao[LÆ’ïm˜ô?gŸ7ïÔ3ç~öÔÛÆØc¾uÄXý“gþò÷‡ýóƒËV¨©ÌÉTûglw¢åæøñÜéúƒžÌ'»ÙOc§/—Í£"êó_Ã×éÅ|齨3P{¨R¦O—¹ ¶c6.]ܬÈò,®²ù:‹É“›¨ºIS¬90[Ÿ9ÞöO‡²ë®·• ¦ƒ÷¦”âùæÏ•îÊŸ(†s1É£ÜäN2¡"™ˆ›_±T"–L´%ⱄÌTÞ£æ+Ëäd†º9†ÄÐ2£Åœß,ÿ;ù³ãÎ?óä†s&¨Ãe˜9Õõ{e47®¬&E,›ÖÜx‡ß¡Æ~ÍeÁĉ dƒLáØ ^ÈFym.˦-œcôòé£O‘ýÕ^Ff§æÕc¥³°ÎNý˜üÓBœeµ«˜£žå~Ê©ÅP!óêõjb†Ç³ã ’£<çÛÊs·ŽÞ›ž‘ˆÝ-`Ÿ›Á½2º[›üK/ íÉäyßï®Ê%{ÏJ´%—\ïñP’/}駉¸LÇ0o*'wÊH¥WÜ™˜Rß4Ëé•9’Ælù]5:GYŽŠy×3GÕHF ø*dnlht̺i¶w„Œ9gn­!s8ôæo«ö,½7ƒH ¨"æ 8‰4¡™µœkŒYøoóžšœHÄåæÍIÃ|Ú_"W÷Ê1fïóÖ@2©‹ù¦æœ‡¬¯íÕ8nŽºg•º¥UúÊ¿‰³š µ™ºv\Î1æ‰ 6¤÷Rù8‡©mU“ •šV7¤¯$ŒL5&Ù/t—•¹d)]1Ç˼mf## †€=§99ßéÀW½Á–ÓtûÝo+O—|ïM‰É=?9Ê•îY‰ ÐUÈŒ3æÏŸ/op+'ùèÆo¼õÖ[»š7Ç#PT'_xÅÊï¬>í?ï¯-œ$3~}Õ2÷!ç4ž(ÃÏOüøE÷¦sÏ™#ógN>`è!#jjúœrÊi7¿´îÍ»1wåòîýIA*U@~üôS·RhWn¸á†[n¹Å_}õÕ\ù†³ö6Ê=1rÎÊȽIædÈ]˜>zìáGŒéÓw?õˆì„šÊvMÚ €@øˆ˜ÃwÎÃ×âD,!3<Û­6É5}^KR¦?«y2%üKFJÝŒ¹w—ó*Œ4@(c"æ2>9T­Hr7Œd,ùÅ›'ÈÝâÔ˜c) ˲ܛ9!ëÉ‹&ÿPÍY–±hµ¨mj³Ü9™\³nÝö»£½jŽ«?Å š½Ãë"Õ”l@@ ˆ˜Ëñ¬P§â ÈÃJÌ‹ÿÔw Õ³Hä»y)Ÿ„Ëêá&f¬,Ó0Ì8ZEÍêYÚæ2¾þÄíÕGÂesbsqO¹!€ "æœ$ªØE¾ûÔÊ•+c±˜äsÇ]÷L¹èÂ!zIè«be™v¡M¢f\¨Û-KX¬î»¬Ö«ª¢}úÕÜÿÀªê¨ÊrÿrÞÅÊp8 €N€ˆ9p§Œ wFàÈ#”c9rÀ ¡‡×5tPTb࿯yUÝV›R5¢¬Ö#*\VwÉ0o—!³ € €@Ȉ˜CvÂCß\¹†Ä¾/¼ô–yqŸ?–´Ì"æ|:lC@@€ˆ™>€ € €@>"æ|:lC@@€ˆ™>€ € €@VÀ}Ïe"fú € €í$h¶ÇÍDÌô@@ò 1çÓa € €DÌô@@<¬¹DÌ:$!€ € ` 1Ó@@È'@ÄœO‡m € €1Ó@@È'@ÄœO‡m € €1Ó@@È'@ÄœO‡m € €1Ó@@È'@ÄœO‡m € €1Ó@@È'@ÄœO‡m € €D5A @@0 {`¬×£úÇhz  € €@ØT ‰ÈW*• ‡eMEÌò•´yè”°Ñ^@@ dãLЬSÔ¬ Bäwš € ` ¤‡—e°9³xÏcNï‡ € €¡ÐãÈîHØ{shXh( € €íì3³2è € €´ðœ®Ìý˜é% € €ä0geÈÅ€¶}<#ë|y° @@à èØ3ÆüsK @@ºS 1GÌ¥; "o@@)¾»œ®;As Ï!•F@èNfet§.y#€ €_Àû &Áo-@@@ `Ï{`dfedž­rm댂Ëá@@(à¾W†n„º»œ|%啾ò/•òŒ¬ØdªŒ € €@îˆYÆQ‰•e-‘ÉJ§ê½ Èž]@@¸€GŽÛZ¡S¢+ËWkfƒ¤ö³Ðo5ÕG@@À¯€#0–ÃtJ4ž4â)co6–ŽìWeÄÔ, @@B$ 1°ÄÆûé§”ÈlåÕ*%‹òµ{wÖbP­JaA@@ T®À8«Vq´µÕ¯>ÌN]>0j´¶„ ‡Æ"€ €  bà––vñA5*T޶´ìkiiÙ¾}‡…4bÀÀ}ûöa† € €@¨$–ØØ· $)Ñ}{÷µìÛ÷þ{ï[û†ÕìÝ»7T:4@@‰%6n²¯¤D%^VóûÛ,£½ûíÛGÄLŸA@—€ÄÀòeŒ[Z†H¬5'e´nÿËà ¡™È®þAk@@$–¯öq«ÄÆÑ6sÙ¹s§eÔÚÖ* d € €„J@bà¶¶V{`¬Cåh<&ÿÅ÷ìÉNÃP¯cög„ ŠÆ"€ €„T@Ʊ„LfÖí—û1K\,‰ÑD2‘L&c±˜$ém Y’Öc³CêE³@@Â&`Æ WÖ —ð8iÆQ‰“Õ 3\ÖA³¬e‚ç°)Ñ^@@𠘱‘L¦Ç‘ÍWêÿh$½T™6jsĈÈWx©h9 € €@(t ‰èÀXÄ*0ŽD¢jE­© )«…€9”]„F#€ €aÐrU:bV*>Ž¤Ç˜««ª- *IÛö »íG@…€ÄÀòå Œ3³lÊ2¨]™•ŠnA#@@,Ëíǘõ¬ ÙG*gw… @@P èyަ3û"”}F#€ €ø böMÅŽ € €¡{e¨Å~æô èBÉA£@@Â,àùd1«Ma¦¡í € €˜q4)[É6ýGüL—A@™€ŽÛ…ÂòÜ?ÃˆêøØ¾ÙŒ– ™CÖAh. € €€ŠŒ]Ó•S)ǽ÷Ô~Œ¹wzŒ¹f¹A3«=csg¡í € €@(d³ÌÁ¨ÝÏvŸšÆ\­é-S™£û\ïÞI ¥F@¯€ÜCnŒÑ¯_‹À¼SFTÂeC¾ ÌÒÈU¶›Ð…—Œ–#€ €„J@žS"_2™Y·Zæ_è ¤ ¹ùrÿ~Y Iáær¡ê4@@@ªªÔW4{›ey䟙R-ÿW}m÷_ŽF IdA@@ T‘ˆ!_"[‹<4ÛˆHÄlòe¿5†N •E@@@‚cY$H¶/òJÆ—Õ&û…~’Â3=@@- Be‰˜ÛGÒΗ`!€ € Z™´¬âcû ²;€­ G@@@E̲ØÇ˜ãÍ!€ € ff,‡ùìÓv@@vrs ½ØS‰˜é% € €ä bΧÃ6@@¢)Ó@×öu€@@¡€zvIæÞÌ*b–¯¤A§„Ð…&#€ € àP÷cv‡È 3»¥HA@¨|óº?if*•ˆ£2º,¯â¶ÖKŠ}ȹò]h! € €‰˜%\Öq³NS³|ÅlF:åÉ^Á ² –í©¡b P‘üÔ­ÈÓJ£r 8žT1TÄœ0Œ6Ûò’1朂l@@¨Pýèk™”aŸ˜!‰ÑdÒ¯˜mZF2ªRìS7*ԤܛõÙ+.Üoãúr¯eñê÷qÝèõ`ñò#'@@ 03V6ª¬1æH¤J%IÄœ’àØˆËÀrfIV’hŸºQXQì]$ —Ÿ|>DóY'ަ×©ï  €tF R¥"æhuöX@Gåº?u¯ ûÝ1Ìš@@P TWÕÕ‘ššìl‹ª*C¾¢:p–ÍÖÒn,:THåרXËî–?H%m”_%‹X£]Û^/bnd…„\ RUUÓPï~Cî@óð/P]-³Ñ§Ü+#4ë”hUµ œ{Õd³R¡´m,ÚìYtÃqÒÑ55½ŠžsyfxáÎ/ÏŠQ+@ ˆmm±×^ßúöŽÖ Vž:#P‰£Q£oµžp¡¦3G#*†Vó4d|¹·í&’BÀ\’“ä.t¿ÚÚð„Ëîæ“‚ Ðù R[Ûß bî "džL@ÅÇ›Áq*%Q±$ªˆYžû×ÇÆ!/‰˜Ë¥{È@:-Àï‘NÓq`($ –¯¾VÛ#›cÌ‘HíZ?ƘCÙCh4 € vôP²ù§¦¾Õ²Œ£2%C¾ìóduJØÁh? € €@Èì±¾uœNQwhV³9欿tŠOŸ³OÝô7Øw–”­[6û<œÝ:pMÊ;OŸ>ÝqÔܹs%}ãÆž¹É&k‘=e·<;»sâì9ȺdâÞ@rpý)ÇJR'ÊF@Þ1ò¥Ç•õw’½«œÌÍÐ_zƒÿš¿öêúŸ{ÆÿþìYˆ€ÇºÕ«W;‚ãÆÆÆüynذA>YeæÌ™uuu²"ßóbEÕ ,ÐÇÊþ:É$ÿ±zkAq¹Ÿ Ù@ pß#…g„EÀŠ%D®ŽDä+¢œÕCLÚù‡¹bú5¿ZðSÿû³gÆ·téR+“åË—O›6­‹yr8 € €@.* ”“ò‰Ä Cž“¡•QÐ#ÿ>9üS‡1úþÅ¿t”!³5d††}Ú†¬Ëh´N”9D¯[ÇÊt"ß%7Ùçÿrq®ª‡"Ýkh`Ö¬YöAåÙ³gKŠÖ?~¼Ðz]V䥧’5ú++zÒ…ì&;ëÙr ù•1jÔ(÷ +C=»Cb•^Pžu#@ ˜^¿GŠ™?y!* ‘%bn3Œ¸Íæ—DÏ’RÐÒø½[çÿäÇôeI|âùõòõÇ¥÷[›d4ZRnkúùõWIz]ŽÕÅ]ñ¥sõûGu¢;/¨J•½³ *ëÈXOϰ¦XÌ™3gÉ’%ºí²"/õºÄ¾V,ë3fŒLºÜdèZϾ˜8q¢¬Èn2C¦dä’”<õ$eË–ÉÌæNä+gÒ@@²P³|IÄ,_òP ù®cèBk)Að=¿ù…ý(k8Ùžxýœ&yùÙ“N—ï'žr¦µ.!µŽª%h–f‰§7ozMv›÷ß÷Z“JÚ?¢fŸ{,2¨,C˲áŽ;î°Âby)ÁîÂ… õ2ÝY^êuk³•be:iÒ$Y—˜[ôIŸŽÔu ÞÐаvíÚBsðhI €ÅÈõ{¤Øå.'DÊh1ßRúK˜-34 ]$º•ñcë@ %ê•Ñbɧ ™úBK¯Øý½fàJ“eXWÂbÇ0pSS“|§L™âŸE_¨ï¹!cÆîÀÚ3+=mm’—…æà™-‰ €EÈñ{¤hù“á¨JÄxÂhi1ZÛŒ–˜úJ˜1t'?Ös-䨷¶¼1êȱ²"¡ó†u/ûÉíá#e7ûd æ1çq“¡eÜu‡Å2f¼Ø\ôàqžÜ›ä&p¯_¯þÎÉ¿èÝ=&í?‡üù³@(ªDÂH&Œ¶V£U¾$nn1$EÂèN,ò^}mú4=ïBæWÜ6»Q‡Î~2”IÌ2§Y_üç¸Í³ŸÃCµ ×××»oô&±¬ÌH–¥ÃûÇÙ¹ôÕ~2×Y®)ÔyÊTéüWþÉLÙYO– ;‘C¨ÎE@à D&_>cþü»ÞÙkè'ÏËàòAýŒ›fßtñE_n«*£æg8ú­w?üäÐA…6Gâ×É“'ûœYQhæÝ¸¿tAÛÓÚ»± ²FB#ðÖ¶^Ùô^hšKCèªÀŠG~sË-·è›†é¼dÒéÕW_]¥îÃ,·ËH©/™‘Lª %UèÍ2ºZ=Ž/š€\“g¿æ¯hù’ € V¨ŒëÉWUæÙŒñº'È=•›››e¾D [Aå@@²ˆVUU#*OΖgþÉèrJ½´貪k(+SØEΫV­ ¥FÈ%PØï‘\¹Ž@È¢Õ1G¹¥œ1KŠ@³”\ ™L%’Éjþ‚)ù™  €@ä7ˆ …°âT²ˆVG š{÷1ßRæ«:¢RXJ.¯0âàÁ%¯FU 9pàÛïíè±â(¨x¹biÇ®½ßLˆ@¨éQÃè­?´‘{˜/£|†ÓöñÌã+;ڥ⶿¾­âšDƒ@@ ð*b–«þz› ÑŸÜH CÌ?±4@@ HQ —åK¦1[ˆ˜‹dK6 € €• Ž˜e&†µèºG@@ w¶¼þêúÿݽó£Dçÿ[HYå°ouu´và ‡9òð1åPêP¶jƲ|9¦a0¹LNX¬ewËǤä9æ, €(©ªªé?¨w¿>“pùíMÿø—+.>|¸ý™g>ânrqäöíÛ—,YòÚúØá£Ç± Ô¹gìƒË=S"¥ 0bØà#N:º¦¦Wǰ+ €¦@,õµ·ÞÞÑêÓCF—¿ö•6lØîÝ»}R» 0àÒK/ýþšˆ˜+àlv_ˆ˜»Ï¶9ïW[K¸\G²@B)ЫW´¶¶¿á;b–É2ºªpYúEkkëÀ÷í Ñ ¡|7tµÑDÌ]ìÞãå æ, €tZ ß#2wY&cÈD…N—ÆTª€\æÇ‚ €(p†Ëál5=¾ Ƙ âbg@*\€ð±ÂO0Íë”@WǘÏ>qôÖ-›;Ut΃$ÃîÈ6gyå¼!ǤŒñãÇËg²Èнúž—6oܸQïìÞ¿ëM_¾|¹•ùܹs­ uº®žì u°6éúèûnŽÊ¸ÛâÈÇñÒ~¸½+}úôéVUõнÂ~(ÜUòsû €¥Èñ{$W•$\îÜ2ȶ<öØcˤ„Gå!-ÐÕˆ¹ˆŽV”|Èð‘O<¿^¾1óÀfåüQ§cÁ9sæè+‹-’ ÓjÝ´iÓì/%]ö5jÔ† ôþãÆóÖ9RVCCƒ•ùâÅ‹­TÒ—-[¶jÕ*·|]]TF¾Ë¦<»¹ÛâÎ*Wн+°^°`F£tgΜ™+{º•CWªä§ öAºAÀù{¤Ã":¶J¶ò3ÿƒ>ïrë‰ÎeRª£:4aÊ(bædø˜:uªD¢'NÔ;Khh­KʬY³ä¦’ö|ôþ:<•t‰ý”âsŸÙ³gKe¬Ì%|oll´ŽµÒóç–k7w[òçÓ[˰J=ÐjŠ@P t:f%}졇*믽öZ§³*É¡:Ë4¶Řõœ 0–¯Ÿ{ƪÓ7þåb{bÓÜ _ÊŠì#ëòýŠ/k½Ô“=÷¹‡zH6ɯ•£>ú‘G‘uù.‡HÊèÑ£egYN>ùd}¸(/%“Ÿüä'ªc΃¤Õ]AãØ09bÖñ±Ž‰e"òù“.~kË’¸aÝËOùšTF…õ qeÏÜôþ—}ùJYÑÉn²2ï¿ïÏ“U@7EÔ#ÌÛ-2Æìn‹vÖŒaY—ùÄÖ>Öþ¼êàOo²†“í¹É´ y©Ç°'Mšd­K¬£j .eCâiùI'[=+“k–…»ÚöÏümÉ“ƒþ ¡knýgk“»\©¿ü‘ktÜ•ü”Î> €@är»¦¦¦SN9Eò‘ó¶Ûn“{žîß#ùK”ر¥S‹dûøãËUù.AY¿~½d#‰§žzª¬ÈKY?餓dý ƒºä’K^y啃>xÍš5’"Qò5×\óàƒʺ|—CdÓ=÷Ü3oÞ<]}øi§&9_qÅëÖ­ëTsDÄœ¿W°UŠ1û4•W†Ÿõó¨#Çú<*Œ»µ˜õ´ǵ}n"ÕûèàÕAJŠD½zÕsœØ§NчÈw²uWF²•ºs³;bµE^Ú«ªÕ•²ìmt´Kÿi!xRÛ«” Št@ Çjkkï»ï¾3Î8C>`ÔóÚíxé ^ÖÏÃBW$_}ÈÈ‘#ÇŽûÆo蟥V’ózzEIDAT>Ö:]^Êž²¾iÓ&‰€O?ýt½.ß%]ù Rö‘ŸóO?ý´>DRô"XÙk¥6‡^ È³¾Á…ž¾,a±Ì¸Ñ_I”°XO8Öà2ð¬e=üœë,xææ¹sÅÎcvµVfH°kEr8ʺ,öÛÌÙ/P“±vd#GéèSǸ®B<tlêyÕ•±ö–‚¤8ƒ}$yæ/ÇÙÛ"¡ª\Ȩ3»ãŽ;äÎ>2î`—\åʼ´Ej8²àú¿LÙŒ=.0lذ+VqÄ]/YÐd§)Z+ðË/¿a ¯å»¼”ï÷ß¿^æ™gdOYd|ä«_ýªl•Ãe]'^ýõöÌ¥h›µÒ‰Vë4QÛžˆÈUwÝu—£à›nºiÂ_îùÚP¢CàÓ‡~â“CÛÍHóI$aŸŒæŠ_}fR&»•a[ʰJer²¨”›À[Û>zeÓ{>kõȽóÿýßÿ}ëÖ­>÷¯˜Ý9äiø—^]1-¢!XñÈon¹å;³r?À®¾újž’ÝiÒ²>PFÝcÏe]ãÜ•+ö”a•rû±(@À¬-à˜àïªG¬ƒßZÐDÌ݈KÖ €K@Ïú V»^[iu×3!‡Ê b.óó[àEÎeÞª‡ ÐÓü‘O¢%v á€k›ÜÓÝ0øå©ˆYÞ!ô•ò<•òƒ+‘LVWáÍòl µBè>ù ’2Ô#¥|.û <`óæÍܳgÏC*`·¾}û~øá‡5½ûT@[hB÷ ¤Ç˜­ ΄ÎÝg݉œ·ïØ©RÒtâXA¹€üNß±k¯„á‡~ê©§Î?ÿ|¹]ÿ£‚¾çŽ;äÖ#ô†Pÿn`VF·òv5óv®æÂñ €ø8´nl2‘øÍo×֪גEF—%\þôØñ!i/ÍìœsçÜ8 @ 8|ô8ùªÀ†Ñ$º&àŒ˜™Ð5OŽF@¨4.)«´3J{@@Š+@Ä\\OrC@¨4ç¬ «}_ÿׯd2^Ó·¶e÷N31Õ§ÿ€–=»ô¬ã@ Ðèôú}€>P}àc™–©ªê7`ÈçOý”>§Žï‘3fÌŸ?ß‘zã7ÞûÇÿ5Ô³2ÕÌSɤä¢÷aú}€>@ ÐèôŠê©Tuu´ª:zɹGßrË-öëú$¾úê««;î¸ .¸À1¯X±bóöd<Ö‘{WU÷x@"“Öq Ðèôú}€>@¨´>0à€d"‰T9ügžy¦ãN<òHÎ1æž\o$“‰d¼*R­ãiyüëBý>@ Ðèôú@Eõ$6"òŒÌ‹?w”çsÎ+ÿ$ÊŽTG &ßõë8Ðèôú}€>@ T`¨Ráî~ƒ†:¦]X/sŽ1/yꙡŸF_QóT˜“mž|Ω~à€}€>@ øïKV?6zÏ+Š ÄÊúþûOwŽÿ6†¶?TÉ5{ãÂ3ê<ǘsÞ+£vÿOìÙõAÄd«¤Öµ ë8Ðèôú}€>†>ð©Ã˜ªí׫JÇC†1ú¹ÿçºëôÙÊ÷þèGç°®m2eìÞ{wÕko¾çÙ‡k£{VkorPš™«žÒä½­©-Û>ÞòÞÙÇO¿õÌ*çóƒO¿*ð‰VÃú}€>@ „ª Òï¼SÆ\vÙeÇÏ^‰ÈÄ<#ªòM´ÕYnû°}ûö%K–<üøÊMoì¸ÚÐÁ}<š\¾ óU3«ÉxìÅÍÛöv؇'Ÿ9ÊsŒ9ç@ ÐBÒd¨õÒK/6lØîÝ»?Î,rö­õ ¬Øë,m0`€´käÐZ÷yôlrPš™«žV“=x`A1­µ³^É9Æ¼ä© ÜƒYŒQÐèôú} T}àìúƒ~8·Iâ-{ä4`àÀ];õ“ÝUù¾t×y¿ýö›9sæc«ÞqÄ9žM.߆R3«Éöá Ï8¢°1f÷_ºb¤ã@ Ðèôú@Å÷™»,“1ÔsÜl‹ 1ƒ¶¸ël5íçѳÉAk®w}­&ûé·vk=ç3ó˜;ü+DuAî¼av%ô; èôú@Åôs?{HSS“|Ö¯[¤¿Üÿ;v¯ weÀµ±±ñÑ·:fœ3þ w“íÍîºn²V—VäyŸ>Yæµ§ ‰›+¬ã@ Ðèôú@ˆú€:F,Ý)ÞCšå”ꮳ|=b<¯&—SS:_Ýd_ïßô®ÎrŽ1«yÌ‘ôu©T’u³Ãá :úm„ôú} ‚ûÀ9ÇtçwîÚµË: <ø£?´§ºþøµƒ/5îýð'Ÿó:P6þçèUO~ãpûFÏD¯£s¤¹ë,ÿ}ë[ßzl¥9ÙÛx69G®¹’_›wÖøþ×Üz̭Φä:Èozç)¬&wøž½pó˜Íóágþ û讋ôú}€>æ> g¿Èc̯ýìö—/¿üåÛöš÷p©*ÐY¦ú ßè}¼Wªg+tÇvÄE:Ñ+i¯ýìÌÁã×Ïú ½ÜúÓcþô½W§)<Û›«o[;ÛWrŽ1?¸Â¼3£ª¦™w£ìôú}€>@EyÌ?øÁv¶¿3ÆC†|°}»þ؉ï¯Ï;{†q÷ÝÆ ùþÄ7såðÄuCþsÔJÇÏDס¹Üu8pà·¿ým5¹ýlcv79wÆŽ-Ò¸ã7|gûÎö}DÁ;vžB7Y«K±yâºÂç1›ÍÈ}“®Ï28Ðèôú} ²û€n]1¾¿þ§%Æäó;ì¼ÉÆ’?½nå(¡æµœ=oC¶ÏÄbTÂÊ#W¿íd!Ò¸¿_~W¸,qnz¹î 3sI8{Þ¼têÙó,‰L›‡ IïèJèdÝ\‡åj»=ÝqPäÊ3æÏŸ/7P‘qy¤~ ä7ÞhÎcN?RmbÝühé@8èw8Ðèô îçðþç¾ÿþûöÈé“Ç¿µe‹+ó—°é ß4þkÙ•‡Ù5ÃxêÛï0~µågªÔÓn6nzVöðLôWŠk/w<ðÀï|ç;­|[öµ÷aÏ&»òË‘`o“÷.Ò¨¦Q™ÖÝs™Ùæö }è‹jsæhk…ÔðÚ7–]¹)“ƒwyR­&wøž½pB÷ý˜“‚e ù.As$"/õâ'úf¬èôú}€>@¨Ô>H$ZÚ/r®)þ_®ÿラ†SRtjCêæŸþI­®_¿æŸ¾;í$3õË×\b¤b­9ý—Ô~Ow¥]éh¯ýlIt7Ùo±­±ÔKë^ñÜûO3åIãÇ_qn]K[ÂÈ´ù¤³.1Ö¬_/Mþãƒ/]rÍ—M½ˆŒñÒͧ¥5ó–MŸÂ«É~úª…c_©’pY¢ä¸4«èYâf3†Þ³SMÓ‘H\¾³Ž}€>@ ÐèaërÆ‹œ©¾^?}÷íÿøÇퟫ3—ÏÝþã¾ÇžVJ¬¥Â-sQÙ›/<3{ø¯g=c<Ï=ý–6rÂcÓMjwȦÿ¾ðJãdyì»cÓ­Ë4³}“Å‹Å%æærÛé6¿•²ï'ÙËâ§ë=ß«$JÖs6h6#f½ø‰ÄÙ+ú}€>@ Ð*¯H¼•l¿ÈYv¤ø}¹âÑûÆÎzt½µ<:kì}®H&G|jôË·ß-+É䦅?¾Oò—2=ý–äÜÏ]g¨zž/w“Ùå|=âŠk.¾ïÊQß3Û¢–M Êú¦/=l„zùäÒ—ÍÖ%“j¸6C›^qFÃØû~¼p“>T}£}Jû³{úXÓMNG·þ®Ó³vÖ+‘/Ϙñóùó÷E"Õ†¡¿jR©n¼ñÌc6…„˜¹Ë8Ðèôú} l}@&õÞ|óÍ[·nÕ“þ>úÈ#ׯ[gOñ¹þì Gþôˆ?Ý÷Õ‘Öþ›ÿç’ó^½fÝ­§²íª$}ì¬YŸ¾cYz/ÏDŸ…µßÍ]çC9䦛nòœÇìnraeªVÝñ²>fì,³Á™¤±]d¼rÄ’dÇp¬›†qÑÏŒuh&Ép)ú­Õä㺜ó˜õ ™’¡¿ô´f)ßó/Ò­3ƒ¦Àú}€>@¨Ô>à»”síNô“rÊÍkîýÊpûžÃ¿rïš›OQ)²Í\îýÊW²{y&ú)ɵg=ãÏ=]ùåMP­Ê,ég’î½ùæ{u’ñž>VÃ$í¹©$·bÞÊ´ßèÿ}jáØW"S¯œq÷ÏçlŽ1Gͯ¾æóÒe¿#qöaÔ>@ ÐèôÊër?æÙ³g;Ƙ;vÍËé!Tϸª Ýu–×9sæ˜÷cnwW4Vw7¹ [Ô‰*é&ëaõü}5çý˜õìr=´¬¿[“˜%ÇJý«‘véÞ†ôú}€>@ÈÕܘ²§;±ÌS<ëœ+Æ+ó¶t¥zú,ç:×îtûþ²™2mÆÏïž¿«*=Æ\cŽ1Ëý˜~jƒÜ¤9½·„Õ¬‹ºCà€}€>@ Tz8güA7ÜpÃÛo«›[ËÑãÆ½´zµ=¥ü×Ýu–×[o½õQó~ÌöØÆ³Éåß@?5Ì6¹£~;9×ý˜õ3Kìãʺ`þâÄ>@ ÐèôÐöÝûâ›7oîׯŸãeö—X7£âìÒ§OŸ?ü°-. Ôb?¿{Û w“ÑÆü•´7ÙOÖ2Žï‘©ÓgüüçcÌxJÍc6o4—if=‡‰†Àú}€>@¨Ø>0bhíY'yþùçËãâÒ¿ÿ cè°aÛÞ}×zˆGwìØñì³Ï.{rå†7w:b¼Cû»›ˆ6毤­É»2{æì·¹æ1G#UjÂ…\öWeÞ]ΊŽuމïÞ¡e" ë8Ðèôú}€>’>ðæ¶í+^XÿÆæ·jzIˆ”^~hòèlëe Vun‹%·nß»qËÇîóøæ¶=ÒäÍ[¶öªvăhhÎJê&¿ó±L=N/î¶ë ’ž+—ôý˜÷Øî•!÷c–yÌÉ@sø8ÚKÐ`}Iå”Ñoý÷[Ïx=ò/3fÌŸ??‘Ù*tVs3Ì1æ%Œ1{‚‘ˆ € P¡~ǘ³SuLþ"Ñýèôú}€>@ „§è–Zß#WšcÌúvËz>†Ü¡ƒ1f/@@*^ 糎’õ| û…‘ü¥û8Ðèôú}€>@Oðü« 2Ãc¶,®wzøá‡W®\éy‰ä°ž†c­Èþú±ŠºWM~¶"€ €@Ž?þøÏþóöŠËä‹«¯¾Zîá±È®“&MòØPÒ$©qIËw^VõéáÊôpqNúîíøÒ³@Ç>ù_zæ@"* ?|r½={òçRw”åÎ3KsmµHݪªý-Oíææ•‹”øÜ7ܧ^7VEÌòè—ÓO?ÝÑø\ø1ªìw©½u=ÙRŸew7ûéväì³ ?¦Ð}º¯h??­}ôŠõ]jeOÑ•ô“a¡Íg‚.ë-¬ß/¹¶êVçùÝdmrçàNéºaçòÌ”ckžÆJýeg½®Ýò—Õu®çÐÝ5tçßáÏdÙÁ:ÊÚ9Ï´ñÌÜ^‡\gªë’äЭ'KþUguÖ¢E‹Š[’ô‰îèÝ”mqÛÞ}¹ùl~wÈw_£:—s÷µÑñãUý:Ê|²a­ÛS¤þú¥ã»û(ÝR+½s ç(*C ×[Øÿ$W¹|ôÏOÏ£<såã3Ýúqásk7G=;É_y[¡uèÉý{¾†R}¦ì‰ösg¥[+V…óï¦ ;<}=IMY]8ù˜cŽ©0`€ä¢Ãç®dç>¶›Þ Ý”­»þ¹RJ[ÇÏÓ\•¬øôîsÈõT—¨:~ŒZ‰öcí?+ù¹Yñ’E@ÞÈîªvÓÏ“®¼ñ­zº"¹ëŸ?¥´¿³ò×Moí&ÉÜÛµ³U«ÚîŸö’beëØ*G¹Oº½öRüȰO9èyìØ±UŸúÔ§Ž;î¸yóæuGÐ\Mí¦:XïpÿoÈnª‰;[ëG­{“•Ò‰j;~¨9^æ)«’6Y¶ž?F¥¥:Ýúný|´ïïþ‘ZID´?¹~éwG‡?^ìo1wqn?¤ÓïG«ëÇ‚•­;ž)WÛÝ ñ“"¹éŸ3nˆŸR½Ü?—>öŸÞÚAçàÎÖÚjqé=å¥}g+1Ъ!©¼ÄÆ!×××'‰È«¯¾ÚÚÚúç?ÿù¯ý«´ÿŸÿùŸO=õÔò‡(à eX%Ÿç±ë5ïz>«ZÂÝòü Ô? =ëæ8*&ž9ˆ](ÖO'É'Ïû7W)rH®M]iT¥[r«<§8—yžCòlÊ•éå#ðÌ3Ï,^¼Xê#ár]]]MMMdÛ¶m±XlçÎÛ·oß²e #Íås¶¨  € €@IdîòQG%£Ë.÷êÕëÿÜ+Ñ|qIEND®B`‚PK !ñQ¢ž?ž?word/media/image36.png‰PNG  IHDRiï&eÔi pHYsÄÄ•+tIMEÜ 2£Ô5tEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/06 16:14:50 lim_j SGA250167ûÍ´Ì tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí|TÕµï÷PP ZÐBD`HÁ¡2¡Åÿhù7!åO©D®­Nx¯ Ü—P¸¯ö}ŸVïÃ&sŸ¢¼¾‰×ëÅ„«Ð0‚lµxÉ`‰¤ÌðÇ *¥ „H2oísÎÌœ9ÿ23™IÎÌüNSœÙgïµ×úîsΚµö>çXXpÛ¿ë•–ÓÇÚ®´†Jð@@@€ô¾¦ï€¿c{𠑆…þsàO¯_¾tþ¶¼{úgßL» @@@@N€Ë‹çNkÞÝÞvuŸêMû._:g»oT)Ð^   r½ûôÉ44û®yM¿Må–ý;{kŽý†Á·€€€€1o.œýËÇïônùú‹1§1†pÓö‚€€ë×%o{·]¹Ü»Oo†T- ˆŽŸïd¶è*£€€€3òž's Ø+µ÷9}PrÝ yŸn,-}ãÊ)x-¢ýo¯_2\A@@ §,_ìÔëúù5ÕŠ];ˆí_÷”ØêŠê·×S“®üý³ÃúŸey¿ì˜$õrú×lÐëyõ/q™[\²]$9¤È®‡«ýñ¿vÜ"‰6•ýê^ßéíÖ#¿ËÏ_æú!I ®Õ…Jkð@@ Õ L}ÐÞzñë?þñ¿È{ïý>}Õp^!#Õ~MÜ¥WÎXß>Ât¤øA¿šXGðWO‰_BÿúÝ;Øœ§­¼üÚÂ9m9ÿú^©kcç¸ï¤Â«¡b‹È¯G60_uþ´2qgñì¡Áöu¿ÌíªbˆP&«?\±+¨Â‘÷k÷=°jÛµ2ݨÕÈʵ÷s­†Ý¿ªøÿmôÑÍB…5ø    gÜÉ:¾!Kø•犰Po¯Nù?útÇŽî½û²cÇúöi?ëQç;{÷­.?âe¥–òPùk‚CO†Fùîÿ]VBý ‡ÿ·¿´ 9â|£¦ŠÏÅ·‘Ý]bCE'þ…±E ÍB#)Ø  Z w'\áï×ïø½—Ù©å“ð¾×^Sçù¨µõ²øU³»,Ò÷÷TÛúNÔ¤?W¥mׯ÷5*jüŽíZùÛнÖ'~í+ÙàW–S5Ù®}%C~é:BæE6µ#µÛ…æG>©mx`žäƒ5 µUC)€€È ('í"—I~”¼)íÒc¥wzÜ»ìs]Ââ qR8wd™{_D¼¨'—O¨úÓÂü»‚akñò@ÁË#»„RÚvȼâç î*.ÓØò¬CJß]Þ4DŒVGÚ|/QðJ‚¨$×jé‡}  éM`ù3ÿ7J¹§ÂMù¦Y(¯`ÙU»üþ)4—iþBÒ yúµ°j)´išßh  ª>عO+g›ªæ@oèðÝA}€€¤ùN³š7¡ê„:·¬YhV  €€@Z@Ü™Ã#@@º‘|g7ÂFW  iA¾3-†F€€t#ˆùμ¹›º±kt  )C iÓܮʵB#†ßbÿÞwûö»6e¬¢ Ž._¾²ÿ/~z*ÎÇt^Ø”JÄ“ñ ?–'´)}'¨ÿmÎÔa·ˆmO%ó +¤c_œèÝ»÷Õ+Wq>¦Ó°Â–T$ žŒøNŠ8á8Sqt¡sš Ó°W¯¬^Ñ×öîEæ_nÓ}OošÁ9 ÐÄ“QÑ£2îìN…Ѐ@× X.´ŸØs"Ð;ð­I7±¾8£»N@ sXgÛ9#ÔÓ Çùõž¿_þÛå+_\9»ç´¥¡§iÇ Š¥øÎ´N“YZÚNï>Ùq®ã–[oÚç;mÚ¾þ¯S–oà>3ë(€µ=B Y¾ó𚻳ŸÚ&™tø…ôÍÿîá0/ݶxÀÝ/ Ÿ´6㽡ZÕÞ}BêhÀÛµDw¥lûS}Xs¨+кB W ù♺?7¸ß¬ó|zððÅ#ç.Ÿ¾|Ãu7\ó÷kû^î;¸ïMm¯žÙ{*ëJGWzaü„58=¹lé¢f—41j¬uúÕWì;ôÒSâµH,W|V® Ñ’J»zÉñ‡_pnxø“—gp\tvMxsþ¾Ö–óüï­qt=f×áR_óÙ[BG-ûÆúÞíºÄ Ó^nœ¿á§ú.?ÁÝA(´[r¯¿±ð{¶‚‡ wŒõåÑ¿üc󗇾º¸Â,¬_ï~ƒûßäÛáß¿ußõýº0ñ9jé®ó==Jèï¤fÝ›¾]Û#8~7ÉØ*üV|I6® 1áJ§Ê]8Áô1ö¼Éæÿ»pêzéñã7´†ÎÃi/ÿV¿]—÷:ðç;ÇJ§ü¨¥F'œ]~úã³]ÛžÄ)Í@ oêΜg§ÎXþ~–:k5"çZféèîø¹ÏØg#†Ž`mìÓæO÷îÝ{çíßëèèZèi¨ ì7¬gÖ£ÔB ªù¯=º¡u×tÒRñ5&½qMˆ WúTNFÜyhë6ß1šC:ìÞðÉÏ ùÑ©¿É2º‹å‘â!)ÓJ“RzDÊdž²Á ©Óç<úÉ §2­zè¥û¥†’|…Èï*{’WbÛ`xôØï56'1tÖç„=NÀÒ¯ð[7æäκûû³fO/—kµÐÆ,:ú_øâÂÁ¿ü`ßûÿk©PÆ*âØ¦S€‡YÂQ­f…âEáÃi$X_v‚‡'_Ô5©dÎëlï3ú†§oµ´NdÕIª1ØZu:¿JpÅ?E&Ë'q¶-~nì'çsŸ _Ã}GªÊ_£ÈûŠ3P¸&h Vú%Åw62>'”ð ‚Á3V1²mñ˜ YÖÕûç‡öî}æ9V-²_HiÒi/‹‰ß;þ+ÄéŒ5ç)­:Ž® ÁCœ÷qæ7Šã5Ü‹Gß#Õ f›7°çD—<*wü'ÉL;§ÿ! #¼üÊäMšú£¯z€h²³ýRÝW_Ð|ç–­¿w7ùüÃïÖÏÖ÷dË߯k¿îPý¡æÝ-ß°Ö¶Ö@G ÐÉ žM~öúü¾NöïütØð³?ÿ¢B\`xfí}æàœÈú‡"Nðp7Ššt2n~”M|–æk"ó4ªîÔ'©šf°]†¶ìÝ?†Lþí´°Ôk>X:Š~ú±Pñ5\/RU 1öú;Ò2Žíï¼öè/Hc¸&¨‡+eK¢?“á;#±= Ï“ðs)r;ܼŸÓQKñèÞfi-ÎÄg_KY¡´ˆ~Ìlt>ˆnXpŸBàû‹ÅB,nÑ÷Èk ¿šéGúü×þ|PÔltîû}< F»b!ðÔ¢x´hžØ‚>ÐW½Ö4ÙÙëºÂ¡·Ð|笙äåX¯|]îÃy×Û¯?qæDÛÕ«WÛ¯¶\>7aö„ïÿø®Ö6¹ï žM”˜a¥œÿ<’ά‰Ï– äõµUŒº¦¢;õIª–¯]Gn—-A“Õb;-Q¨J^ß,üàØV׸úŸ¤Œ® rL™ ÑŸIöô‹,t~ÆIï¯Qh^Ôøìɵ´ú¹‰¡_ˆÕVìöÈ‹&­<¢ßéÒog½Ý1v‚ê $ðÏÿã òšôGb¥Òûƾ¹½aò g.=ÛÚ2¦ ÷.ç=,;–u 1Y±ê§®ŸÔî+\CÚŒzn?¥ ¯ùÕþùÁä® êaNá’(ÏÇdøNù¯0:ÔØ3ôoáÎõµ:qšóð ϽšÝ»Á#Äy¡ÓÐ: ^¢30ï¾ÌåÒ”ÌÞïÍFÌ¿ó5)Ý*6оG¡fD[®OóþÐr$-P ± Ó5Ç)ö’5àëœÜ[îþÎ…ß»wѽnŒñEÑœYöt-ÌRw§>IÕø¢©C­ÔÂÕ¢¢/Ñ’6Êñ0ÛPñ6Œg³pMˆiŠÔŒæ|LŠïœ9ŸIžæ(U»ýDZq3gÿsÿ¹üuÆ>Í)äEùäbhNbâøƒ? i6T(œ¾ìY¶âN*yüÀx½¸szn³˜b0î™q›wñT-¥p7ÿŸ N‚FÝ#ã5Y°­´ÞN§q¹«÷S䨀šiE ë†kúŸŽi¿,ì3¨_̆EsfE-?Á »›Qø¨j­Fwª“4´ ',]UG³c ášõ¢+Ô”F^œ½öú¸9áÙS\¢Ã™fµ,»j—ß?e‚h½¿sá‚§¸«FR®ãqVÍgãSe£Åx¿ÊÝgxO7…,ü”½ÚiµT±zššÀK¯¾Iú%à|L¸•I>ÁiukÝZ…•}æßpM0ÿ%@C:×­¯ ½¿óƒû’wR°¹´zþ›wêÝI’CzFÄö§(œý_I¸m´gÌA¯ 'äžàÛêÂs7q*ØmÍpMè6Ôfë(–5±èÎSµ±ÔO‰º|ÁzJ( %A É’y‚ÓÍ-ÂÊÞTØpMH…QJŠŽÉòIQ6‰BSétM"ˆˆ‚€2gK7‰}}æ\ Q@ ‰è4 :p>&1Dƒ@tÄ“QQWw6ì÷ýG–‡^XLÔH rœ›?»xéœIá ¡ 5ñdTTWú΃¾#ôµLTH.œÉå é ß¹{ë+± ÉÎÎŽµ ꃀ€@ϨZ|Ãt zœ ÕUÆ1AUHY…?œ½îuïí‘WƼfôèP@@ }t˜úoÈMƒÔ…T¢Øà;ó³| +ñ(ÑDóÝSÂøcj.tkogÖN]wóÒÏØö?Ü|sÝÚ”}ËáµuÜ 3mѨÄëÜüñ}]fÒÝ4ºÐa©1¬irК†2I8ŽŽ€âï;7¢^è_õ.Eï¦ÍÙ¶¼úÆN×i6{Æœgs:'VSS£W©¸¸8´Ë•ÏÆÔ3«‹å4±@•^‹ÊU\‰mŠ¡QµÉËÆûì¢'ëYY½*7@Öc»l¹´.ë,cÙ£EgÆ^cÞº…'µÜT\ZÞøäŽ…ORKº:»‡Ÿ|aD\Bômß_ΆíN–òúývyϨ' Or.±nIã)¹LX{›ô(Víº¥¾ò í–NÑ DG€‚KyÅ¿~q’¾ÞvËÍâÅ^…Hsæl‡=»ä¡ÇGg}tµü.žY­f¬ÀÂrʘ·ŒYò)YË4“®%æêÓ_¾+ÜA¨2•$]©¹´Wžž>s™9Ì*ì4ë;í……ü9jÂŽ“RHwøÝc E÷¼ pœ<{¶'xo¦¿`vW³0:pb-!i)Ê §.e…bGBŽnrcû|¡Xyê>ùoŸíîÏ‹~.EÆÚÊS¬ìˆdÖ­]K™êuS×î[ÊÅ’š…¤)²¢’b5AwÛCM.7~ÎbH¦,gÛ™ÌN¼*3¹¦±òdìÆés³šýeYÓpZSOÍB ò"Ï?¬ ˆFVV Ü(“qÔ1¦>h#à ô0ºsSõG:© ©D¡«9}gâZKYÀÇìvæ 0·“9Ý,@É[ÆxÒ5À*íÊË(©`7÷²¢#$ÇYÀ„BáÏ¡lÑÉ÷’f£N©-©¬K…«‚Iº‹œyÔå?[„õª­¶±ùç Ož\¸»œ•?ô^š…ª¦ÚÛÿ0¹y< äëØBÉ#~öbyö:±ð¤˜çäaÖÉÝãll¸T.Ï!Þ÷›¦qK$O¯­<]ô'o¶[¹»¼%ØQKyóð“ë†7”ËÝ]Pnk9IJfáˆ$}„æ¡k}ÐöuE-å/~Æm$‹‚Êï.×b!ÈäFEnš25(iMO.˜† ¥¨`„VÁ2µž´G]¨­Uý|»Gú{Šj?7šñ­ýÐ]À. ÙH-ì3/æ·ßúmù)¦(«)6gÎ6Nª?ñö´7ß|3BŸymÜ_Ö5°¼tágC­a?·±šUú:i¥»ÛêÉm+ü­ŸÑÔbµ%ܨR·}L;‚Áè¨éÃlåçÈÑð,©ª0z‘‡µ°Úo®ýPjb'|Èεñø²hÝBeì«%zû‹lnáÌ)w¨E?/ëŒzr|QùçbØ*¸‡Ï™mØôQL|M:7H«BŸ…Òô/Õê²~j4óBŠ€må]Ju«dêPÒ`¡S3ž “on$ÑdÅc3Tzr…T…:*QÕá?gÄý†¡aL¨H%Ó¨2ö€)ˆYÙC=a¬fò6­|§ÒYÊxÐrž2!Uj¡¼-m9¬¶’Õ—Kò^òåäP…ð7Ž/ÄòuÂbŸdn‡›[ø5Zº††z’&óx¦n!ë̃~æ®þó“!U“£üö?,l·û$O óVp“ݶéPÒè_§f,<…ùNF6–¸vz7騤¡<Š@ ˆ™ØœCmò}ö•ºB¦älK뙯’Ù+yÖÔɘ;³ã̳³²Õj€Ú%…ì««88µIñ«—Õ) Ìée« &NµeK§-g«ýp©~B½†¢áÊùÐ`á¨Üì†M;aöQY3Ôû´Ê—î×ë‡æ´(íYëþLª?ê†<&¦UÃê^»¿©|¼\-åùì]ío¤$35©µ 4ŒS•xxð$m<™©Ü-û¶ýð¾' kQì2¦$¯l\3ž¢´QOÞCl) MEMgùhÆe‘±JjÂÔ&nÚQƒAIjg;›|)ÿ#%b5…iæŒ;iíÞ·EM·m~{[´wª›¿‰Ùæñ»9ì,”² Å£4ÝH)̓VéÌd’÷eù|±¸‘÷¥ŠšÍWT²œVF«y+¹w䛕Õ © 'Mœ [•åç0IdÌ1(­Zwîæ…ë”÷¨„ò«<:!u¥*äWÞMn1õÇä5¥²ÿL»owyÝä›×‰ER *¬ò¥¤³°Ñçˆ`ƒKÊ÷Ož¼®œ¾KËAÉ“±¹»#ãcMåŸ,\×¼N¦EáG`åëþWHó~(4Ï./.¦g5kËl¾nÝð…îP­–rQs^@FÝ7Mf&%¨¥BM¡š”¢¯ÏПüùðò…û×.ñä´ñå¿G“ÛÞk̽ò¼ó3‡’}O–&7‚@‚ ¨W‰è•Ë»·ìª]~ÿ” bQK_¿¡¯°Ižgåýúv¤ÍÍÛK4 »Ëd!}:>ñw¼t—þè@  ÐólïÊ¿CnÙwGß"ÿú—C_È¿þ©þÓ’)Òùvî3gÜó@iÞܳ4H~sd2äB&€t‰%cåí}ÇÇåÜ*–ÐgÅ^EOé9ßi†v‰4ƒ€¤ õ}œŸ6#ãè_õ.…Ñiw¦ËPvÝŽi÷i|Ôç?|ã7¨ŸÏgRß9e&ygBßßéx%ÐÑØâdÎ-üuüìv¶¾Ž;OÝ›ÓÞpPt¤bŽ_ECèW<‹„‰~„È ©½ÂÇ ›+Ù²bî`¬¥{xpG{t ƒšN±£ žÜOæ¬_ tÄÿ§dÐ\uÌ‘KÈ]fÛ"5„â<¥òüׄ¶™*‘¼@MI¨æw—ÙžS(SZ$rÂʈEñÿ è{ÑC½„j:ªÜÎê•¡ß)1´DU$hkk“÷`Rßá[nO”¢òMä<ýulîrõ³Œ¬… ìÞ´ÛU^íÜ"¥­¥åN¯èqCz+&OÑ.Hö<¿ÌëÜ¢Ÿ? )ß©™ÚJDïY]Æ*Wtš… £áÈž\wIÖ"W(ð î‘…Ââ!ÄÌ]æeÕbˆ¬Û úª#éÈB#™:è:ÕS–™[!~¦t·R î#Uw¬¨de«#COJ[,Gµ=”‚@w ×“É»2­ï<öŒ³-<<´.™ï ³qæ¨s=`ŒÖÕž_:íc­Ìßäµç…硬yvo“¡J0=«É=ÍÕÏÀ]B–”,µ–¾AqmNðkŒ")¼f‚n¡¬¦Ü]‘°òš©Ýs’°×³±Ú^T¨œ³SZĘ£Šbèæ »Rdu-{C¯·8«7 N„Ô“"þ€Ä !&o gõb{ÞzQÎr1^laR!Z™è”zÊsát…Òºà÷êeMåbƒ•="4­…EöêÈÛêC9ôqB4Ô»i}ç°g…œmcþ…Â÷ìL-r$ØZ8v}‹ô{Õ³Ä9¿‚† ŸÁu™Z{¹K³dÍj¨hÖìbU?œá ®’ÍEësI±ðìcl‚C.'ج‹ÊëQ²QºNYζ³µ0ÎURŽ›œ«èÓ/îz㋼¸÷ êi™U´5‚'ßÈÀ]˜ïŒ7× ê ‰ `Nß)MvòÛTêû×=’—ˆµBâý$”µ`·¿/IDAT3x4åǯRÑnû¸mbz6‹/yU&ry–Ž…¼k´Rõê…g-Òí$á»Yø:Xeïzr‚å´Æx‹­,WBKl”®7¬¼¦™¡ÙVjÎm7¾Ó1Ïé­–.nünùzŬ¬­XSXÄm÷îXQÁ$£ Ö 9^á³Áûs$½ÌNÐ…õÔDÇËʼnjKîú¢ g¸¶<ÝÁÓ_Wëu΋˜8§lÍ Dί²ÅN¤°ìª]~ÿ” b?-}c^ì’teDù<ÛšššâââîT }… cÊiZ…:Ýc‚~Æmš+L¨6Š1WæùsÂhm‘²TÕ 1 ‡ ½óÎ;‹-ºtéݾɟ„À×ïu\¼xéÂ… mííítW ÿ§Ý:zäï~·aêÔ©ÖRòèƒûÌwÆ`?ªšŽ€µ´¦²¡ Ö‰I yJ ªCk„þÉmZ,pœ=0èŒ ÀwóIÈ^Å#¢¸%1În»­£Nô³–Ö»¼g'””»És2·"\'’ôs¸³µÉJIø lxžm² “|þH£Wº¡Ÿîë¨scèÆ ­œdç 3 Zl€,Æ&¦ óô¶N¼°3m> )J9Û8¨   Ðcà;{ =:HQð):pP@@ Ç˜Úwýø}z<Â3¾£ƒŽA@@@MÀľӷ§ðð€ÙƒÔ:£@@z’€i}ç±g¶/ž;ª'á oÐ `Rß¹së^ß$ûã=ýx `(Èx¦¼¿Ó·g1›ØøzRnKÆ€€˜Ž€ }gË«õ_²Ó_Žóï•hmÛüv}Nã#y¦ƒ…@@2’€ }göãÌy\Œ–Wߨy8γ9980@@À”L:ßiJVP @@8Æòá1( @@LEq§©†Ê€€¤øÎ$¨  `*&ÏÙÆÏª¦¦Fl\\\¿´ôôð—ªF€€@¤§ïLHw½„-tt,–¬>}z·Ó§ŽŽóç/´œ;¯i=|§&‚€d >}úäååõïß°°ÝtÓMâ‡yó~¬ç;3l­Ÿå[X‰§‡¿k’%kQÔ½{J,ªö¬ò]`VbaQ­×ßUâò+wj*+ÅðÝïÊÏW÷ƒTHQ<òÈc=¶`Á‚Ù³gO:õÞ{ïµÛí¶˜3îärªmØ8s˜ ´+´2H]-¾¹OW>kZŪjyÝTB—ñæÄ¥@+ŸPFD"§¶È]ĘøÉW_j•>* »Ü­µt•Í’S2&Ѓße# @ V”­}æ™g³0F™ÚŽööú@ÛÙ³çôD™ÓwrmgψíQ|š>RéS­¬> ‡"ùåÖÒ=Ò¨ºñ»ŠËlJÏÙ³ÊG¥w2*YKë…ä?«½öJ_ Þ*ô¡Y˜€ÞUn§e¥k…ƒü36 !`±Xôr¶z2(gë)a ÿ“'B)èrIåù.NÉ/|-ó²ê©\/‹G)ØI.×"KVV¾ËU’•ÌÇz„Ïâ_(C*”ål=‹,‹\®IbÍI²n<«ËXå yÌ™påÉRM=#Ë£O0‡°ª„1œªõD@z‘Jä#B…%.žWGJhNѦ¥˜­ªtV®bÅ)§ªYÖAþIm&  Y(Ldð+*YÙê.瘵uA)€€I <õÔSK—.]´h%oÅ´íÝwßm «y}çÛÛ6{‘þÞõ”þ1ìrTQÎ*Uì²&^p3o¿Ö[K¥jN·P`!ˆ·ìÀÜÀ§wÙú¼ææJ{ÃA~AvT +´èÏWÑP ¹¡°¹BÙ{õ²¦r^Óíô–=¼`{6VÛ‹ #Ÿd(¯©'9’Yl‹¤à•XsÆäü x²Cú 5/ØY ¬æc a/[]Ëj„æn'Ûȉð“§i埴 µµ™ÖÒr§w}ä<=›ªå²1¶Ù«…ž±dJÏÎ;÷˜4iÒØ±yÆ 4hP¿~ýÚÛÛõ˜3g~•ÊÑß/¬Ùsû’ISô,•?üðÃòZo¾ùf˜»J¨eeJ¿Mcç\r›˜}¹ºº`Ï¢¬‚êà§¡çqjÍ:ÖÎÈjÚÆD—3ì’òz’#±Wøbõ˜aÅ7V³JŸ†ÅzR$JnVµ9WÑPðœ«Lki•:Ý­Y¨’¨a¦c®sVy¿´Ôêw•“ë|EÞÈ:ÆÆjéW#º!Põ‡#@9ÛÑ£G8ðÛ²mÈ!=|§—Ê súΰš·:vÏWGO±)ƒUº« ¢t–ªv‰-ð,*h¨ðuðH†’ƒ9r˜ØŽº(­‡õ,)à^V Äò“øŽ9m3+*Ê‹ÉyÖÕ²Ššø+tq Ð@À$~ó›ßÜpÃ × EœâÝÌ›³•ÞYï;0hh4ŽÓÀÈ8vQèÑp0Žvä 6ÛyV/óÆ%ƒQçª2¢—•òÚzRüë]¦9ÛGwÌX"ï™ÑR(ÏN“…Z;e~&£Äâ¥MG:Ãa-\ÀÖ×yêÖ3ž2ˆØ8™hãþ(4@³¸zõê?þã?Ò *³fÞ}÷½ßýî¸á·4hð™3gõT7§ï¤{TÄÉÎÍ‹¿Î©{$ïv=õc)§;7ä‹€Œïòt¬`¬¬“µBÚ “iËrøZ¡ò¼Š`Æ–Ö¶PI.ùÒê‚ðª"m Ì1Ïé­ Nlju¯¼¶ž4¹Ø\Ñ0+¸ÖI¶VÈJn‘u:XZÏ*‹€tg ­l•“•åðš+ó˜q^[‡RtÅÚfR[~?ʲ‚e¶UÊél]­×9¡ht|Q ÒÍk^¾|¹µ•þZ/\¸@.óë¯Ïœ:uúâ¥KzæYvÕ.¿ÊqwKߘ¯ÙÙÙz¢»³\y/ЬoÍ{WºS·xúâw26­2×m†xò;NÓýÖG2sežp)64&püøñwÞy‡Ö^ºt‰îéÈG.^¼Dî³Üi[ýKÿ·Žù»ßm &XJ9²vî3û|g”#—’ÒÀ6kiMe~N‰Ç$žŠ»ò2~{e}Ì?® Œ4ã.OIAµÓ€ã4ãà@'0sæl» È íªèîjOÉS7+0N,w—.Â!éF‘në´:"Ï™‘u€E— vÒ$îL»qá9ªâ{$_ZÂè£@¼[0£Héw¦ÁÀÀÓ€ï4íÐ@1“€ï4éÀ@-ÓÈ8ß)ÜâÅMþ¦1(  ÐÓL¼VÈ·gܶ/9ŸA {<=$o%¿!ÝïQìé£ ýƒ€@z0©ïä€?<´nÉœ„š…‰é/)ôÌ’NޤXÄu¥®ß•ŸïÂòû® ÌÀ¶¦ôôæÎ7ËÿžŸ1dÊñqå³î¹„.yY–If8ÑÉE&V(^èCÿÆ.Ÿ®‚ ·íY$8á/vyÝwÈ%BOÏ"2Sn¤£ª£#Ð\a0C]˜òFìhœ ˜Û,ïѵ–®²•åtÏilDûR‰€)}gÎ$á)ðâßÄÙ,aÏäK¥‘‰Ð•»„YlKG€.…ô·§ÔÌï µ–î t¼âˆ6µ¬ÛâdÎ-‚¥ ²Ó^áãÒš+Ù²b3üêÐ#ÓU==*ܬ¶.Ö*iäu,õ»ŠËl¦ñœ\IG•ÛY½Ò̇J÷SúN£ûÞ¶ætó3ù<%¬ÄÅò-Ì"üI‰%¸Dü…êwñ½e^V] ÕϽ’È&bsM™TÓ%¡¿|—þAà¯[ïunQÿJ²£ò¤œ ºx¤•ïr ù:JÖiRg²@6«Qô³ÈŒÿÂL¨£œe^}5å2eIÂÎdvšàU™ÉUŠz ÁS.éW] eZ ؽ¿ÂU k( ­©§faDï!K‰'g'ˆ…2ªÞë£,ØÆ¥'7jSÂBGá¶>fç)ô«±u‘¼jŒÄ.<«ËXå ù+­C‘ו•Ç<  –ÉYn–*ÈbtÇŠJV¶:2‰¬?F¬P”aLî;…—`çëþA©®e50·“mN¨’¶J(¡?VÀÈMZKùçJ;sº¥rãpP-“Ä–5 mÝÌ[tÒ*k¹ë´U†št%ÈY¿@ˆ¨:| ÒuÀ[v`.…nÞeëóš›+íâ£ï5 …Ü]¨yèÚT½¬©œ—»Þ²çÓ=‹r–ÙÜRÍÈüŸRWu>P¨¡)ó@¹FoaAå•â¤Þ5jzVU †§BðÄó“NQUUtNM¼Î¹†ñ°ZÏØ”§!~C0j‹³zS¼“yqêI®³¨ÐJž·(QΓƽKäÕc$Œ¯gcµk*Û4Eòm²\K̉ µLki¹ÓúaáÙTí,—±Î^-žëZ‡!Ê@ ’€©}g"ç*&žÜŽ*Æã=?k ŒD«ã:Œ”2!î*á?Vfì“Ô ±hðÜ® bHÅ$÷`_ ¿}ú´¶¶öë×ïza0 ÿÀnºið­·ÞrÛða·ß>bÔ¨Ûs¬£.]ú†²DYYîÒÄÏ:Õ´œ‚Îâ:5Ž?óÚ™¯^r¨’YÄOjÁ3*CÏ.uêYTÐ@übÏCØ]kcÿ¯½¢¹Þ8P„êÔäQ&=Š_g‘wë0rŠ4¸§”‘Ëq&`UG¥X¨êwAOþKŠy ²‚¿BìuþÒ(àªTè˜=ù¨k&ãPÔ–éXQQ^Ll ëjYEM—~²ÃÎÔ ““óÆottt«KŽsøðáähåÕÌwî¬÷èö™N]‚æô2ÅlˆXYx%¨²øŽPW13žT6ÓûîX^a¯žcñY±êriuÿ­Îêê‰ÊyT!m¾p®”ßÅåZáèêãÊL2zP@@ '˜3î<öÌ6¶&ôþN¿ïÕS‰bßiÒëë Õ9䀀¤súΣ}¹öãNØ÷ÕÛƒ†Nœ°a€€@Z0gÎ6ûñGæÜ¾uó¸é‘’I@ÂV>Xü)àŽ„¾’$-  %sÆ-¯¾±y1›Ø¸dζwÜMG£´&Šjtt +ÆÛ¢@…*  ÚLé;O}±õôwÖ냦̜8û´Þa’¨ ³š„?Õ+QêA€€€ù ˜ÒwrlçŠëƒN÷±£¾•H’ª—Ö'R8d€¤=SÎwÎ{~ÒW…5›]þÙ3æ<޵Bi$Â@H¦ôŒÝþƒ‡:¡)€€@&0mÎ6IƒàÙXmÏÃÛ$Ñ…XÈ &;“Ÿ¿¾ÌËœî|g2øB&€d ´õ555â ‹„gòeÌÀÂP¤HOßò—IãÁ  ™K Óæ;3w¤a9€€@¢Àw&Š$䀀d øÎLiØ   (ð‰" 9  ™B¾3SFv‚€$Š|g¢HB€€@¦€ïÌ”‘†  ‰"ß™(’  )à;3e¤a'€€@¢Àw&Š$䀀d øÎLiØ   (ð‰" 9  ™B¾3SFv‚€$Š|g¢HB€€@¦€ïÌ”‘†  ‰"ß™(’  )à;3e¤a'€€@¢Àw&Š$䀀d øÎLiØ   (ð‰" 9  ™B¾3SFv‚€$Š|g¢HB€€@¦€ïÌ”‘†  ‰"ß™(’  )à;3e¤a'€€@¢Àw&Š$䀀d øÎLiØ   (ð‰" 9  ™B¾3SFv‚€$Š|g¢HB€€@¦€ïÌ”‘†  ‰"ß™(’  )zgŠ¡°@@tüþ÷¿ÿè£h§Åb¹æškøÐCY­Vê q§”ƒ€d É“'ßyç!Çyß}÷9ÒÀxÄp° @@ #ôë×oêÔ©---çÎ?~|NNN¯^½ ,‡ï4€ƒ]  ™B€RµsçÎmll´Ùl½{wâ;Ù)Ì`'€€@Æ è3??? ˜ïŒ†ê€€€@˜|'Žˆ|gl¼P@@à;q €€€@là;cã…Ú   ߉c@@b#qÊùóçckÍXMbíõA@@ ±n½õÖ˜þ-ÜByg<âbî?a Ž?nüèÍž¨Õþýû[[[5÷¢@@À€Àµ×^KÝ=z´A´ß¥ô)gp§OP[DŽsΜ9 PïB €€€1‹/®_¿~̘1ÆÕÒ{oÊûÎ8âNŠ8û÷ïéÒ¥ôZX É pÝu×uttÄqíM†2=%3å}gÜàhìãn‹†  á®^½Ú§OŸŒ…Ðé:[OI¾Ë/áñ”Ð ZøVâÑ- ‘TUö»òà »øÇ¬×M˜ŒÀêÕ«.\xäÈõ“i u@ @—V“/yï½÷ô®ÿ )7Š;ÉÙå”y™½r…Е§¤€¹ãå%ž@•C]Öɳ±ÚéêXVºV8J­žÕe67µîŽbÊíÛ·úé§?øÁôúëèàà LB€®Çßþö·é‡¼úŽU“ŒÔ0yên÷îÝgÏž¥÷¢$)·lä;­¥õBW~±ˆ‹;ÃyUü³µ°È^{‚QU‰C÷Û~×ʆÊ¡y²·¯¾úЍ:tˆ^ü­×]žL>ðzš£<] Ð19dÈZû¦þ€c5]=Eí¢C4%4?xð Ûí¾ë®»œp…|§ngÖ16ïF?“-²’JXØw:VT®Ì±XH…ŸVOI™mU@׳êö$íp½üšëå Õ*}ê±Ò§~¦×¨¾¾^tœoýnkk¿xk…ô¢¼GX $\””p¬öÈx S=´VHo—yÊir‘ÞÇùå—_=zÔ4¾3*<Q ôîÕ+«½žê+=œÞÏ•(ÑÝ#'Ž>ä;éÖOº %f¼»#z( deeÑTä;ã¸üFÙ…ù«õ˜}ýÅ‹­ò{]oíóGókœ {1vmb$A €€@ê½È:&å/_¾Úïºk²lÓÿ×ñÏOÆÔ•A@@ 3 ûüoߟýkžª½zµ½ùÀç­­W2¬N PÄyÈüÌ×ü™táûFëßYyñâ76FÈ@”ª¥ˆS4üÿ4ëðJˆüýIEND®B`‚PK !§­^aíaíword/media/image35.png‰PNG  IHDR»”Ju¸ö pHYsÄÄ•+tIMEÜ )†“vtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/10/17 11:31:41 LIM_J SGA250167°f4 tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì]€TÅù{‡€ÒQé(ENÄ‚ ØŠˆp„ˆŠåPT5J@å,X"b, B%…EÅD‚…p* ê?–((`)"E@¥#ín÷ÿ•™yóÞ›·íö޽c†eïÍ7_›ß”÷íì¼ÙH»3.ß·{g•ªÕ‹÷î.Þ·kÇ– ŽM‹€EÀ"`°X,ê5êV?¤PR¼ï j‡T‰EK®YgÛ/kwïÜth½Úƒï¼­CÇN/@‘ˆ ‡—S,&8ã(pœ¸*’j*iÆÇl"›hA‚ËÃ,3Z™—j+ÿ 1&¸Š˜@T-‘”Æ„×.ÔÕ-¡Í«Ìc3š&݆’ò9ãÒ5— &¤˜Q½ßgÏÛìa>¸z‚itœø5ò6B¼*”¢,XÄʹXÃÇ!çì%¢§hÓPr¥®¨çJw^ËjÈË·G¥ÓçË>á‘×]¼ÒYåµr.@ÀOuÍ&ʶvY¦=‰a’Æ\N•tå’0¢sû Òf C $‚ê§“æýT/A”¸ürÊcCA@Üèvˆ‹>(d¶IÃC'¿öÚ…öÞ³·Ø`2¬Â¸\¹¹9_~ñÅi§Ÿ¶woqˆÙ¤ÉfŸ’wœªUyû­7¯¸âò÷fÌœ0ño¿üòCÕêµkÖkT²oo•X,Šáòö÷ÞsgÕš ~X»ñ•7?d”E/‰89ð/ ÒpçbÚTìì>³„•&QÅð©Ø4Q™h~#¾ ”E¸.ªˆHÑfKÎE£QP§fX–Š’ !BÖbQ¢PŒ¬W褖è +1'ê Ì‹r`3/é§K‡ì™ÐB™߉SÒ„öB# Á§hªH§Ð¤°à¼Þ)<Ò>Uèj²Iw[X ï{q”õPEtLT­É»DzÂ*1#Ð ž4I¥®]"¾î‘¦›‰Ä|ÓˆÊú. ËýtÇ¡+ËJS|ÙDfW¹q ”‘‹åi+É*(—|¾An|¾RÎ&Cä*¨3I¯’fKkîKZ{™0c7i)ù¡d¨9ifz#Ê„Ò`0êQåš‘Ðî¡‹iDƒ )Ä¢âlš[ˆâõèBÕA½¹Ì:+Uš]Yé‘2Œœ21›×²á3€ÐæVŽ­yó¤óìSŸõé¼È!—®XYŸf6«|Sn¨ ÃÇÇ9¢iƒ¯¿š³Û9dî‚åAÅà‘_"Žu?«)Ÿ×²é‡ŸÍoÒòص›KnrglϦ‡ŒÕ©]eßž_÷îÚ|ß½wE«Ôýê›ednN¶8µºü‹s ¡ïï>%Ažër£#‡Ðµzy8\÷´ùãU4ÈP"Z"ær3Á§fÃYªEQŠš)‰ `Í¥¸(QúGRð^¹±ˆÆc0“CP†œ)°ñ‹µ± Þ, ˜Mèó¸rÍIWƒòÍ-cW•˜ñÄüìÇåxíº¡lüãZшûå:žŽðû+ÜAeÇ5ð¤î®Â$µê«ÁcB2u/t ö(5wR²ÈSdùÄÍAǸո‰Í -ïdÀécSÙ ÚŠNá^‘.]¡¡ðá zΫ:;€¯“¨¥.*4eèÅy’Ák¥”<À¥a¢@´‹ ¬#b"rÃcJ´ÆÌár ÄÉÑX ü‰äD#Ñ9Pä@|Œ-Ÿ<¡„,Â4^³~Tvݵ ¤ë°0§ðÁWFu:%‡.. Èym“k"(“¸Ý•ŒÿLIZõ1U5¿FÊSGõ»œ¤¬Qae&ªQ물+ÍMæk&ÎB‘±M•‹\öÎ]Þã˜(ïÚZ{¥@ ÎXVýDï ܸù̪®åv0ʨ9DuÂR¸\ñES¬ãÖ˜'OÄÀ3¶¼xsB—Þ"JƒoP‹¤w½Yë0"–•vаEÝosÀ $¡SÆÍØĆvY¿5‹yStà$ Ô½ïí@ ;pƒ$ðkg Íuß°@.o‹›.ä^Ê®" ºj…V¥89ÝbºÒÛ–Ãå)ÿ¯xú\~#\ëA3dãÅ“>í~c®{%Û.ÙµËs®•[ë0åZUj_YÂÒ«×¼®ÿC>V%·JÕæ-ó–}:¯ ìÆ 9ö`Sج֛Uè Æ©aX ðÆÓÃ¥HPÍ( ½!S¿ñ'Ùáüt=¯»íj7ÙaÔ€’‚öJˆFåèqá†ÀHÖŠ°· 1óJ3²Q´\L±rN D˱œœ(ÍQ'£gP˜{›1\AÈ£€ÇܬP£®Ìf‰.Ȫ"²Py‡ n5uY_¥Yèõˆz쉹Á'tVw#i¡4µIGÔGÍ_ŒHšzÃÅpV / -áyÚíM¡Œû¡ ¼½ÕÔ‘ôD‘y÷¡;‰6•Ñ3d™ÖÓ˜\Ñ/2ïÙþÓ¨Ù.d…ez?Qþé]%ØsøUwRÝ&+*™ NðÄå]äÐáJÕGžB=w¯ “A4ÂF±È$ÎÆrRåÖwoœÞ)—Ú”ÝÄ?¾¸™ °Ø”NžýÔn eÄÑw}þa—ôx™âpŽ7`{¥“Ƹ£2zCœä·´˜DÐŒÜ(ˆ²¦ðZ”É? žmÂê².C9d!hVsò:}&Ü,7AÄpYÙâ¸ÜG)}ļñç-§w< ¢å*`þ°úu8X†È¢e|árÏ¸Ø Tà¤ðôL­2ì~híB ´»wP‰ÞT$;¯§$ w|wnW" +ú(‘<cû"ü%:b„L=T ¾Ü2#³$HÂDɹÑhqq 6FÉxQŒO‘Ò¦h\³Æ9R‘i´*sìŠtÏ…Çõ‡i^uqUâÃJéòв#®!tWæâ¶´GDSÎ@šKËŽJ¢kZÌ/lÏ_áÒz¡`I¹ª<:2ìÞJ){äbÁjBàB‹"¥E/IyhMnDàW×|¡ÞY7½þ®Óá:¨‡tIz•Ulò&Òf™óU0sZ3¦É‡ƒÊ;¹WðŒ¡S€Îý\uÎŒyì¥4¦ØÌy‘ª&˜¸ü÷wT‘ö8⎫O<"â”Vx¦ ÚtŽª 4·ê«tƒÅ}Ì µµò™Ëyä¬,ê$!‚k¿¤™› ,T¶˜³nˆ‘ˆ §YóXQ3](·yNÄÍPÄuóÌÈó1¹D‘À¦Ð£ &1o«;ÒîÝ»A×U×Üï/¿ø”®\¿§ã¬Ã†I¹ô˜ëÊ(sÐÌq¹@C©[—ÄêÌ ¡^ÝšP†3쌅€bcX]Æ€9#f¢Ð€"fú«ÔéàrËš-%¢z)„™y¬è¢…¨c².¦Ú˜û®QNue(Õø©Qžv]V~£wµr²ÂhÁH‚TÒ"1¯/Ãj2„Ë%%и†Õå}Ч \Î¥ÁP‚ªPa´˜6ÌD`Ñ -/£UNȃY¹SÃ-A¢àÑøÑC?Y A(ft;¢0@ò¨hð”¸;Á¥  íWoÌ«™Åƒ›‘5@dÙ4š,!ó¨vñ5±j5ý‚™}ÈÝ÷ÎŽ2®uÁ`6óµ*{¥©zÇØ¦*UüÁZ«Î ›S‰¾ÖWDO½ä¦Ê3Q/0–Ìý4¦ÊR‡_ia¼õˆÁ7ƒf_èìÎä²”ø›˜n3Á¸‰òÎIå Š.‘ê‚w[ …%ããÄиÙüáZp€-nÊdÇã!Ðf €Ä šÙOrÒ¹ºÊuX¡^I4L¤zMŽ•aû2¬7oß.vMEà#sÈëÖzÐÌ<¸¤M›4¨Žè5½ †ä)1ƒ.çb„ Q3¾(FÆ+ —å -dFÁä°KÞ›0ΰiÀØrnð¦Ý–¢ºŠ@Ì ¸ÜȯDq`8pÐàŠÿòè’¦ Á€Œ%ò ¦‘/Ä‚x§}1X9ŽÒƈ•#%%„4ti Å.ÃÈ…M ’ R)J¢qÑ"äú¢\ÄBê4r:ð•qÒEÜ*“¬J>~Äç5ëOœQ®$f5pèU4‡p óV, (ãX:—C|ªÔdìÌ¥ë&IÂM£Ï’ÜRܸªí3'ùîk}]‰*JÒÉ,d öÿ,t2ã.…ÕZtöàDš°Ï€oª#±Ÿª¿©ì>o„OÖjœ¦×Ä|â°AÜŒ É$îü—ç{u?T†Ü)‚H"Ì•S=’H’ãfÎjÕƒ'n&j²ë;™$±û Å4kÂ왃ó'âG· ·C•yI@©‚˜ Ha¡ƒÌMÒ\Ææè]WîÊ&š½sjêÔ84ö+>ü÷ô“Ó÷ãmœ—ïXD:½žœ š'>÷ ¸áN.+V·.qtÅ-⃖!2Æ™×”E¬Œ¡3\n]:¡ÏÐñóvˆ¸ŸT¯È¶¯ÿÞÿ±o·zˆ9‘ï?¾îÂÖx‰k¦ÝÒÿÂ!3¾W²;þ÷ø¿|½CÓ¦kö_³u÷ýûû_8öûG¯è""Ä÷‹z$z¬©óÇÚ=²ªë>¸è¶~p¡œ GßF€ÐŽì“°c?r`aÎú™}h½« æ½róeÃ]~÷ Ëï×à+îüÔ²‘\ø " §&Êz$rP•œ*°¯œ>É@i†6"(…›gÐW6=MŽ_ªøh¢å!  ™ —ÑxàEë»^9š8” ÙÉȾ9Å)Ò”›f-åHex±eB 46Î=aâÒ÷/MìLø#¦Õô+D øeRB Ò4^îIvx5 ð‚‚ñK}<*Ëîûú­ÒS3†€oìS¼³Óïú¤¡®ù‚ÝòéÔ‹2æwRÄ7‘À}Ä8¦R­–ïŽrû ÞÄÐ_¼w4EnÈÛ0З»˜¤Û|odQ—HO'!“ð–Ïø~M4.f6UY" %ìòá—Ñò>ÏRñüG 5=ä'wÉ.Wˆ•))Y#]@W©Ñ}2”…pùÉÑ„=¥ßú¬7ÑW#].:“  ¶‚p ãÕ1 ã‰CLj¼Äq 1½S’¶¯œ=ÛqæÌ\a±7 ä,Þót¸bÈ«Óù¶8ùõEÛ­zuRÈéI‚ÒR$ÒªëÓttÎôtïæ9‘u3~÷‡ß+¿Ñ´ª€¼–rL½ØCÎ À…uˆ€•·”Õ̹•€¸i·©~þ·Í ¶Ý>oÒ^º=’S§ã5ã§<>~Êm—:‘Kü¯¯úëmmërDL,´Q| $hÄpç‚·ïÿýN *Ðü`‰I†ÊDG¨‘,ˆ{œ6:wMA˜¡‘¦G΢ëòP¡ž G”·Ë(AöçQ¿°â æâ³‰Þ¬ó †„”€w %1 IÜ:ªPpjqsÙ•f2õ,|¥“ÂýOG›)•G®Ý¸U*ë¸Ù8AsOSEú¸­JùšKƒ<:›’*ÚÙ%š©^§V<²|ã+9ùjû@y’Ùtÿ§^ …ü%/¸ÐÃefôhÓd9 ( %p¸üøÈa-CtÎ@ šÑ} H¨^SïÊÀ!Žžñæ…áAdËšÏ>½¨]˦Ç\7÷“å°ZÊÇöoFÝÔï·øšô21²úí›™øÌ?Vˆí5¢DÞ #m{<}éì¾ZÍt%¹eá3¤­_Ï›žùj{²='|Cúê·nê7r!…Økßý-ÝÈ„ÃF¤?üŠã¼:ø¦«‰sÛW®þíMôb%Û¿yÓ3oÎW÷ºéê·Ö€ª÷zÝ|u¯›Á–®œÒ-Ë®Rt„o²Òkß|ÝÛ½áëàÕû£Õ(½ãOÜúìÜíÛ¾~±ð¡yΧÏÝ~ñЙßÖ…$ÇÀ»fú]7]vnظ⳵h–¥_\ðÇ[ú>Pøî†­ó§>4f±3û_#>ùßµ$Š¡°“CS±4ÿ2xATî÷jDa»ºC I‘êíù‡ÕÆûŒ.gdÍ'ÏÏîçMNNnûKfÿsõ–“ëÔ‹8?¼u×ã±Áã¦W×YóîoÿôŧC¤¶uÎó÷<×çÑé]p¶ÎyçN+Z u"ÂkyògÝqÏ›m_é]›)gí;W=Óæ™ñCZ:Îæc¯úÇü—/ÿÍ™Ïü¸å†ë­Yô<ˆ¾jóñí·,yåÌÓÆÕ‘¢v÷mÖcú}NχœgžíVμjx«G¦_„ã€Kƒž]0îî#€ùË +îxùÙÁ[föûÃÃý&8W>óì$®ç¬þ÷yÀI‰û#ðê jv€EÔù!Cù‰S'Ÿy¡åšŽœþÕI7$¸êœÔÿÏ|á¶Y§üù޶µD·B~šÁDdûÜI-øØ”£k;±ÕÓî|dzëqÇ}w÷¨#ïùÇe áåXqIô’û†Nyè“ã†ÝÐü`üfÛ‡:γ¤RŽ+, ÏmV}ØÛ=U¥¸šX_`ðVëåïÖþ¼Š™KóŽ®rujQ>”""Äêšêf\ÝÌâ *æ‰Ã¦¼ 骒†+C£IªVø«^˜¤`¦ÙDÇ“X©¬~!Æ©<1\€R‘)z\ë½Â׋T6Óª úÛl®‰ÏC• v®…¯Ãpß@¢öØ«Þ[|'›¡(CßÍÔjЕÆ5yî LB©ò‰@©„m ~ý‡µeQƒRÈëq¤Õ’0•rÌAÖÐH ª órEò¬ˆ¡÷£B¥M]@ˆ|÷}OpŸö£_Ô)AEÊ2 qxô"Š˜E[úý^·äï±ËÇ4Åò–yŸ>òß•ÏöhQlìʧ!\†ÔìÔ:Mz.¶­ú`Î)\vÂW»ýå—Eþã×EV ÕnãàS¯úÓ;ío„•‹_†‹?܈ÚrýéçŸôøü5=œÅ/ŸyéUÎëë¶ÄêÎÝ9æ¾:‚Eö<)¢þþlŽsOO|§Ôj«C!ñõ=N¨ç8õ޾®Ÿy¶{ ˆÎžì|¾yóyGÛåÌ~ƒ§TÇ—"¿)©^/¤ ëÖ*Ûô˜Îkk·ßtRMª¹ª>~Õ¢öy±m?Ìšï|>ÿÎÏdáiÛ¶õ<ë/ýßÍO.}hpÚO}OØ£~‰ªàMþ… ÔIÊìJÖ,{¿æ’ª‚¼Ð‡ðGI÷$Ù—/EVwLT£Úö¿(Ϭrø©Ú•Þ1ê5JRnò ‡ÚÎ[ÓÇ>°”~‘qÇö£BuS B‘A¯ÊÇJòûôQ¸0]u›`VQÜ"Š„Ð“Ê0÷%hf8ÕX+½:h ¨{Ÿæòì®›ãæÃ@Tœ¥IPõaqŸ–÷UD÷g š¥N>8ÊQÄ]Ux:–ˆAI9çvBÆAôI.–*Äü‰q³4£ ÚO¤;#ä`WƒCögá§/xÅçªðкœ>¼V¢àg«^óž?ŽFsÕ1¦áU ÃSñ¸Ì¦(ÜÇ!²ï‡Q<ûø?wÐ&?åEÄ,b.jtl¬ÿ÷Ëþ ™Û†üC ~³¦{+†AÒˆ¼RDF‡Ôq˜¨D PätêÛoÄIƒ^ûƒW²å8—>2ý¼æ 9 ÄZ9ÃÏ}`ÅÉ]/?ÕYñ‡ù nÿÖ¹òŠf 8ÊV´Hݾþ¾I½›‘ê±m›ç䦵Tµ„$3¨£Þ ۲ˋÓÎeû¬IT•2ßý²­[‹ZTºíÇO£.ÃC±ÙQ5øqwçcõµbÞíP©YlxOºÊ Pä ÖÀõeÈx>ϱBÂ%’” hàªoœ{8>Z©²¡D8œ¼JeÄ/ 5 ~Î8yu4óˆéÇ¿`fNšªÆ®*iѲ`Ô§’²òWÜž[µðv{Jî(àë8ïA‡¸cˆ»—öÁÉY^A ‚’ ÿg¨ 4ßD‘!õ©©QmªÄt ‚}ƒ7šQ@é]‚«ÃE®’À­Yɦæh<îò™bãyBY3µçž•‚j—58sùÛo—çHnßÄmPRŒ]€¤¸q‘DY åµlwžpÔ-)$niÅ…ñ‹±}nÿAÕ˜EÓbÞö9 ™TñC .6 ïh¾5.6{è#F•ƒ‚îàD¯’½î2* EnµðÁgÌ‘ƒždnaÜÏ‹ ¦tʸíü­ë—R=ªJ•*9N*èç ¼8+¸Á[ øpŸ ¸ýaáÛ±kï˜0õɉoŒýÛ[Ï<5¼£óüâUÑZÏt^yí›qùÌ? ÿŠºH­:GG¾|`ö*¸Ü´à™Á¯cC.T§1­ÖIݯüôõW>!B‹¼+×ïycµÆ‰Ä¾ÎëO<ûM«šµ[vòóÏ<ñIŸcZ(ŠÉ}A’ÍOèã<ÿÐ;+€ãJ,ש÷rÂvv5ŠGá4/ ÒÒÖgðV(+Ov.j{$—‚  áÏWÓ†LغÈ…½²Ê,EÌŒK4V«Ù9'|õÈ[ 7ƒ@g‡q7F­/òÑ b¯¬\‡ÜÒwRDÒ|î2™¡çœJ1Ô‚_T ë§© žDþi‹”ŸlYtS¦4ÄÉò8P‘äµ¥¡æNÊŠ1+¦¨ä])kNš#3ð¡,ü¤{M¼û9qTNèY/ê]뼞Kõq²6&r©ºf÷sý³Þ|ö «à< ÀÕF\ø IDATSNú.t.2sRœC!;$X¶ ÚÇ(™P™ÄL­ÃÒ˜Tˆ˜ovÞ;ŽñþÞàè»á’—*fä!‚(‘ºƒkªðfá)iÓ‰ˆ„ 0§*ÌËAó0#ÇHÊ(s +Z7í$ëjÛ²mGýú‡oúyc£õªW;HR@ Ć¥·B,ðG)ÔK¸&^¡ÓHO–¨Õ(LÆ_õjU^oëæM‡ÖÀÈ&ö1+G1z‹Â'¢Øº¥/Æú<Ö‚A8€6'êÔêØ­ 2rÑŠs/¸ãž¾>2¤¨ëØw@ÇWcàÖüw.¾û¾^¸«¡ï€K¾œˆ(£‹òÓÁƒVÈ‹¦Ýžêóê`B“nO]òÊ-_=ý»äOow9ÂiAª³øÔ#ê‚@í£`#òÀ¼æB!±­œ5ø¯çëÁoÜób獵>ÐqÈà›^=óæ±wû§Sþ8øæWYÙ€{^¼q)öEs@çp”kíöÂwöVäcM{ýéÖżíBΟxë ×6…u¢£ ¤c,[»C×K}ûg‘Ëžx¬K ÕˆÃȸ×ͧ>üÌ ß°ÒŽÃ†õ¯ûÍàaE”m7ðé‹’ãOÉÿó‹£f;Üóû“š`¯¥šÝ£ ÐüaAQ7ª ƒÌŠMµc^Q;üC@èóµ®AãKÿÒèFiÔ•,øèµ`¸|_5}"é×·4’0 '§ÒèÌ”,Dá]M,—dÊV¸ç÷®s›rSß•V_Ðuµa&²%YŠ€Ôúèæk˜ä}¥ÁÕ7ô®ÅµÕuÅ—ÍRDÊÔ-¼é%þlí_¥ñHMH«<…JO¼9aÍmMežø¸Å‘Æñ+‘E¬ŠüWÅõf¦€<Š33í†k­|'Âw’=ŠAp;N®X„ D€‚.)$™N×ÔÓ„ة̷¨¡V¯û©s§ß)z瘶yG6iš[¥Z1ü@±Î­}ô#Kñ’yê×­•× ·¸ yEw…x¦”Á’yñ¾=¿ü¼qÁ‚E=zt_²|MP røǽù¯×¦¾ûYúl|ãü“?ÉA¿ú‡;ø¤ T!ªHHsƒë•ö×0´Žñ>…øî£¬Ÿm+ÁW&îÊŠäÓ¸g»ì¥˜è⢠ºÊàJ8¨ùI=_XÖÆE ÀelÙpsl¯ÀÏðÓØÅÅÇù¢ûöá“ûŠ£Ð/KŠáÞJöÁúmzá27Ir$ŠýµTmåBcä ï¬aÀ'¤‰#Úct™ð.G³*JO:¬"ŠîgûéɸÂch×NÙÔâ¶ÔH¥ò(0ú̶ãÍf‰Ô¨¾ ZϪk¾0¾‰ìO\¹å³˜š»ÙÁÁ^§Båc%ŽÁ"ŸKz–¯á•e%zÖPD_åAOÒ¢$5¿¦¥¹Œ…ÍÚi©8ˆ˜‹¼žýs‚„ÄïɰrmŠ@n™–(Ê ¼¤ ÿVdܬÄ=Öé‰@NŠQ¨ôÐ]‹ŠÙ4£'ÄU¯vÖ-š|ñå×›~ùiïî]J»¸òð×I{ŠÝŒªWÜL&¥Hq…«U;¤þa‡ŸÒ¹ãªµ7mÙ¡›¹îòn}¯Æ5f¸BÄ¥Ê\¥ t7Ä_%‡Í/t(%ú0âÞ})Öã䶬$ˆ¿þ?€á Æ}±ßõ…Mz¦³€Á¶ª–d¥ü+£ 34¢ % ŠË£ŠÜšWÌI'±áÚ»ËÔ s A3­&Ç ƨ9б2ÆÍX¬›‘šQ|RD5ì–þî§ùó.,.FFPQ*£' °÷Á~áÿ-¡fÅÀµOU`¿F 4Á&‡ ÓãË&鼂ÅÐÆ Ux†mBî$JåQ’6ÊšÍ×çõ¬º† îÁwåž^D•…ë8&ʺve¤?ápȈ]5¦†Q[%¾Šq@Ÿi|ú:€Þ=ôkÅ©_°‡\ýŒL²ÊúÌ‘`–- Jå/ëbÉ;  Âa¾yï>Æ{‘h2uáÛ³7ëÛß,ïÉt#GWð?ñ zäQ-Þú0"à ױÄÐUX Ê:±¨ÌµLn±™ÏܸP¥ÐÎæm;W­ÙxêÉ'Õ¨q°4sÎK5´ŒÆ[*/4¨B#ç‚Å+6mÝÉxú$9bæ¥IŽÞ0bƒuå’hVs°Ã[+4Ä/ž¨†¢FUý° Izì+èDöóM°×#èÉp· ªÑ»¬k¸¥Zo ÌÎQ©æº/%BJp¹Úh«)åKJ 8†ÇOc¸¾ Å:ï+.¦Uf¸Á2ÐIÓjŠ­Ñ­Mû“Rž«à—"‡PYœ5Èh$·’ñùJSªêÞëâ«g)I+@ô ÑWß E³<À‰_óì)UóB°ï–»“¾>¯gášÛ4زÉÐ}Ý&,[î5¶ÓDÀ8¨1®z STGÒ{6pbtƒÿôY‚Íé”4ý>Äôa›jua2F0<9yмwŸ°{‘Ûô²½U'A‰©¸Y¶²`¥°‰û%(‰E" ¡Z7C_,€—^è¦ê*8;a‚_z„ŒFè àd¹Aá‡ÈJ¯0 Ýç"y9i‡ÉRçÁbä¡:R,>cqDÁ墡òB,çÃ8†Í«ÒTGº·3ö†È •°—jÈ¢¨Ö(¾,K‰®FºKÁ¶ Ä!^¬}ãg“õXÐérkañ1î¼€Ø+'"åˆË"°©Á†È ŸqÖµ:ű¬9UМŒ%F¢’gÓfì×°™½œ—!„(“,.3S”¸&åªÃ¾©)GSz^怅8‘U XëEd\Y¦ó/àc Í”çß‘(Šp¿Ò¢ï£Ð…­ÆV8¯ã®¹inŽ4¨ÂV’á"ÊOC[†Kí‡é^ šGÔ t&×1IM¯™žþYzØÒ÷ȵ­t„TIÜ!JïlÒ 5ÕÍ€¯¹}¨gAŸK‘#›0]]-ë&‚¥ÙOÝ>Îüž¡:pC”ÅT“u÷TŸÁŽá.Ýч.9î|]HeAyh,èüœeW3 ³lŸ\ Mƒà$ë¶­=é’xrò{ yÅ-ìóÑ7dê Ê·iŠˆÝ[¸è)îʸ™â º«à›Ð‰-ÝõŽK”rXc£)­`„€ÿP餵d¤èZœúÁsÈF‹t Å8øp Q›ŒD/ Âàà mi“°ŸŸ>6øˆÉfÍ é—Ö­‹]ðu?.-ãr2Æ1›éq¿HNq î^&T¹‘ÙW'£¿¾j«»³9äΘîì«ÌˆZ»Ö°E½Æ8ÏÜÞ*䓚èZüÇrê±Ä(9hm˜(D¥‘Y õ­$‡¬Ôq‰Wüæ%.0ãÖ ü0ƒËÇ4w9ƒ\1Ò$b:°J7ð¯èÊÉS¬³†\«ŠÈqaæÓëoæ(S*£gÉUm—’$½Š—F6¹:Y®ôà6Õ;¼NkÕ|p¡²`¯Å;݈t ;¤(œUV‚FÓ¯À~’T÷-ÿ<›i²jø R_gл‚Gï̯: wLÉúÔ=Áx/›å®Õ¸Ñ ýæôðxïDÆû’éÂ1©y@„|+r§òTn]n@ÁÔIk¾jg†T¢z#ðð¢'°êKÉÏÐà•žø8P?F|H6´ê"‡¦]ïÅÈŪ¦:ÎF¢¯!Ø\€èJ+Žù’Ïzkd”SP¬1c(F€Â©Ô.c3à¢2ÿxði:XþОZHÙÓ`änàñ„1ç.pÑU(Ò²W)’o¦f-줧?s²u…ë¬j0ɦ+ö°h¨Mø‹Eª˜ ´ ’^JÈF@ñ…Òq/nO&F^9ædZX+Ï@ö,BfPC…ÅØ€æâñø­Ø’¾q½AY®”:“6ž#ÛRØëU R•fL|8 àZÇyo” c¶ôrF€[Ð;‰á˜åÆUm§²<@’çêø¬–s­3b¦\}ÆÌˆÎ,Wg,cMüz_R­Ö˜_M#Ì–å ”«{©OÖ:˜Iº*nØžÑ/jàñÞ‰Œ÷%5Òݘ@ï!$w\œO$oùHÃÑ…¥rA rÐ=TÜŒd zP–ABº±Apï¸&J=’F©è•B·i±™9Ä W²Ñ)Ex‚…ê<ôY»ú²(HшÎÃDýÝZADFMƒãSÄø¢”Îc¦ÑÀ þÉ(9‡ZAa-@9ŸV½ÚòšP¤´OŒÑvÝâä§ZtìÞäÉ{ ÙKè‚|­÷ QJâ …EÒ]êÎRŽJ…5ÈA!®ÄdF‚H×0—‚¼ç:9®2Ã?´Èq11Á±ÙüÐ 9ÅŠÜR¯2àƒ'YQ½ hJ¬ªãïy‰…ö‡œDx,(ˆäÐP‘´jŸÌ8)ͦ¨MÍkÜSS”ŽËž¦G®NÕÞ¨Ô,䟸®d¶Ú”¦5wñFe}#BÐéÖ‡ÜSÚØÕ@·Él ¬¶ò@€[\X¢ÎŒ­LwQ_ðQ”sn£YØX 3pV§(ÁåBÍZZ|–LÝ}Ã-)‘$n@â¬ÔyÝ3:Ë#;K“jY¼¯C·Úit¼a+²Jµb±§]êfÁMJ-ÄÍØ Ñ(Æjb!eyÚ•n ôIŠ4˜'aô„ü&ïa!Ô!4QG€GP½Øœ¯(¬ùøvŒQš DûX€$ve@LFµ…è >+@´ á÷sp‘Ÿ@ PQ…ëg½Õ ÷’ò²!Iô¼T)ù[ «š4q;±]1²ág1QÎú¹“éÐLÂé†ë\a)q0—ÆOF¤0•ꪴŒfÅõÄ*øƒ om¦e4‹›5ø§OȘrKÙ#–ÆîŒ¥PaôWT(3ÜZeF_jZT]ô¶NMEÜ^°«&!§±(ÿäçw7”åöIMq|nÍl|FS©ì6¦²´i¥òȵkw”¦íi¸ ·q®WEÁö•­Lzþs)ëYßE¸/©ïÙž~üÕW²ç%Ý-O»Ë»žrO•ªÀ­¯ú«ò1K÷¯0<}Fý0¥/Ÿ)6‡ÊŽUo”ÌZa=7)uk&KÞSè–7cÐ,%©¹IŽ0ê‚BTX;ºûx7ià­ÊUL‚9`U‹Í2– :OM¤Õåþ˨ãÚ¢;dU8+*… ”|ýœ)ð.$›ï¯ñŽT¥¤°:2Þ Q—Ì7çp±ÆÌÁw#8߬w·ÓkÕ8XÈ2B‚áö÷ÊkAk`)§±ŠW"ïp/ã”ø:(g‘ß½Ò ¥4` Å£3îÔ%‹|²”ußȾª´+­9©Ûà$ïZcqn ÁÌ$‰hºJ½0Œ§4^F×ééñ„2^Öé2n(Íq¼š£ÃüLÈ&Xè! $éz餓4’˜Íßó´‰P\âßÈÐîTÊfˆI“Æýs½ßbbLŽì;ÞùXÌÐܼ²wÓ_ñ¤QÃbø þz:ã#äëyIÜÎÊ‘8fõ‰Â7¨=³„›‘êÅF•zoµ¼Ú4Fá–»:™Hy¯Á[É#)1S…QÍŒ‡B‚IH„’!lß±ëÍŸ9EÄ #‘'°a·Ó>þhÖ»3f¹-Å"`°X,‹€EÀ"PYèÞí¼ÞÝÎ ÍjYT>«Ö¬q0„ËK¿*ª¬XØzUPfÎ^[A=·n[,‹€EÀ"P!¸é÷×÷ÈϺˆ˜ÝÝÅAnK±X,‹€EÀ"`°Tr` Ù»ïÃÝ•ûÄ1\†rb‰Á³6Y,‹€EÀ"`°X<0(v£f¹Æ Á2¯.«21x}ÃÖØ"`°X,‹€E@  =·K³þ ­[fweØc°X,‹€EÀ"p`#@q²³ ‰üáå$[{‹€EÀ"`°X,Œ˜g9!fטôÎaëŸ?®^ñÝâ¹;¶n.)±ƒ(=³K*7·JÍ:õŽhuÌ‘­Û•©góVü8ó›ïÖoÚ¾¯$ÙÇHÊÍmT¿Ö©G7?ã˜eê›U~€#ðÅ—_àØêWnN9ùä„tŸüVÏiÐvsBð,ƒE €„ËëVþïºk®jÞ¼yü_3 ˆZB–"ÏxüüóÏS§N]¾x_ë¶íƒ^V=¨Ê‘Mê79¼NNN²'êÃOxþ¼eÇʵ¿üºk/+„pùÕgÛ¤æ9§7ÏMZOI4öÃÏ¿Îøzñž½%]Ú·úf)L!pÏ~™ReõX² GÆNJÆÏ® üE!w·ÈQtóÑ=ÿNú¯}.ö—³“±”€ç½{#Mé4rÆì£ŸCŽŒ/²lì%yà xcÉ„ ˜qÕ˜3»~íê8lé'ýÛÄW”|©r2‘oÉ«´œ• X]îõ•5Ú±cG%«Ú\Úµk_~ùå=>Ú1Ù¤ü ý¾þŽÊ>  ¶nÚ nëæ‡ýoé:æ‡Õåc›Ô8ïŒukŒÅs´ãùÆ·g}m#æ”p³Ì‹€E %0b6¯ŠÄÝ•‘?î¯þ~ÓÄŽw.wF²û7Þ»?rñ¿L](\¯ŸüÄ!u/}£ír²ª¦Cÿ³p¨ã,{YÞÝ ;=Z4›ãÚ¸I ¬¾Å¯`j–,·\#5«ˆ°V—m¸œURzgöìÙS§N]¿š?5<´ögóVœ{r^ÐÐÌÿ.9ïTˆiý è«×onÙìPU›1`uÂå ;¶òs‡ä£1çÓu» ðÔ†_šöi—%[,‹@ð?ù‡Q(ïkNðäŸ`r°¹.½õ/Ì`ß4Ñ™ ¥ê"šTýÂ: *9 I™!¦¸¾%¨`òV,g( bæ½Ëâ¬ÆÐŠØ‚Š‡@¼68°º iä+cÖäþ2®à‘ü»pÓgÑ(ÜF‡"R@ÀÞeµãÑ—G³ž}ûö]xß\Å Y3Sþ=2ñÆ»Š´õØ"`°d(MР¶Jæä䤭Û1»Šbûâ*åàØÞ{0ÒçM§c»N_/š2‡.ýøª6Î'k ™È*®;ÝÒó%ÌL¼äø‰W ý¾ó‰cYñst‹kÌæâÅ>gùË~6XB~úª¼{±(qîó‡àîÚ³¬BPS”ÏN»W;_"µàÞ¸3¹R®îí¼ô¦[)åÛw/ø[6¨£§‚ !hÔ‹ Z±)5J}ÿqÇ‹®öŸWÖr!ƒÅ^ŠŒïê{\ìÞ½›cåÍ›7Ç¡c úèv%|[æ¬_¿¾Zµj¬Šy6nܨgØð³ãÔðËÛ¼EÀ"`°+ï+.ù`ÃÎE[÷TË´«]휆5 hN/n3lÌðÏÜÅ[ãþ+–Æv;À¥'Wb缺yœ3î÷y÷õN¯‹§A¸|ôè9ÏÏ¢|8=vnÏI΀~8á|à>~öæ^(õþã‘ËÆô}ªÃìæTÇÙF}YáüK.ïÖø?3¬+à›Uq)(Ô³ÓFŸºŠveØd°X,> \^³m÷ð/\´‰B>J§6ªqçFõ©–Æ£ùî³7s ÅÄ¡‰#ν°E)b=¶A›’_—Eq…xþâïîjÛ-)ìtî䟟}sd»-~uø‘Âot>y‚XfŽîJô‹÷fáõ¤aõclwÑÛE@Ðóx°ÛM,s¢R¡r•|p@Wთk>wjs¨SR¿í±Ž37Š:©R.ê•rºÕé¾%s/wŽ¢š²fŸÿÀ¦WÐd´M^峽ȟÝ×µp )ëóðç’¦ÚGŸöô‘ÿœÒ§yšò2º‚>q⟠¨Å©ïßrhçú‹_ûå)üÈHïßrùËWqaœÐÌ#Ê!0nÐ<òha% ØÊn1xo3ù]°a.Åʯ1ÃEÝØÔ0Ë3?¬1|ðÁ¬Š+kÌzÖ®1—}ÛZ ‰˜û÷!/ð÷û½¶C"ö$ÊAã{îÖ½q÷ÇwG>ZÏÊ6É7—%âQ”¡8uy?›[uÉ•¿„6¿¹xU±e&öÿ郖løõÄF5~wLý=ÅÑ© ™½pÓÈÅ#{´ÌÍMyŸgø® “ùäimn~2–÷TäŠsî¿>2uàÒ.Òe‹níÙóe§ÓƒÏÇò^£ÚeKWxDÀMLE·yãzœkâÉ$*Kè¿Ù¨ÓÙ‡IÆñHäðR¾ú…› ‡?_Œòê¦|æœrzª—680†AŽsþS³ÿ´ ó¿ßê|cÈ ±õÑá ÐA+–R΄4+z!>¤G£w>ÿÅÜÍ?¾«Åo} ôÃÑÎFˆ€ïxî¿AºôU$ü¤çƒÛšÀŒß“Tqš>î =;í™3ì³=›-W ‚}Áé?v,Ê?¾û.l¹ÏDÈ^…ÆÝ‡õ_ñô5¦pÚ V¶Ag‡kÇv¸¬–­CµöƒE“ÙMƒ‰÷£e[®Úvl£c{µ<¨ †»]ªÛÿ•o?]²é»N òÖJu™9ýЉ±êzKìçH>Zaå´nñ¸hSн G–FUmºŸÝ öEÜÿ:®*Cúà1+V2ÏcZ7mê2£ hÔ“Œ ðÌ™úØXöîǰ>à·¥ÔZ£ÿZP£^L’tò%‹ÀêåKiÝŒ¹›÷ï“8\NVqª|]QB9y‹µ¼àâ_þ÷ûDX>î¼C9Ýò>._ñ²3ï=oÜr(„¼[ˆÜ@àýš•»²‡‚&›ÒE`Ĉtñ(º²8}Ø &è‘:¿wK£]»vA¬ /^c£sߪ…­£ž<ãÖÆë7l€3: JV/\cÖ²k6Â>f›,ûõë×5iÔˆí7îÞ½lÃåýWMk¹"Óòâ5;œÝÅ=ÛÖƒp™÷.רV¥kë:@üvíž·SªYškÌE·>€[&æMÈ»µYì·‹¼ KmF?wË7_9àþ&^ÑsâUĆu+¼bFáÉ='Ÿ¾ÌÚê¢Ù_:°s£ça¼Ýfô—ÁÒõô¥={ºõý£f’I™3H… 6ÉW=0¡+DíÌÑt¨Éÿ6zŸ48oÀ$hÑRJƒÀéç÷(¼ñáÉ]þRp¤«ž/µ”ò=F/.Ä0ו^Î;Óð£¦ËÚ>Ûkü÷œ-²üG æ yï/Δë.X5Åö~LhýâÀå×Àûßú7õˆ9%%%3mO1ìïÙ-s0L£NñÈκãä)¿û¿ÕÓZ:ά;zŽm2}õ‹ÅÍGçýßôë[:P|Æ£«W? â³îhþÈØθ¾¥®G]óðzd½¾Ø\²Üpà ¿üòË+¯¼ÂW^y%PT˱fÍšaºÔ>æ×>ÿ}qã®?fÕï®û˜ßþô(ÜÇ<ù³ƒt`0îc†›ô|xU‹% ˪Ø4(Ô³oN<Û®1‡5Š¥—Úw|á…ßmïÙB!·NÀ9¼OÃݽàÞs::_݈àúú„û/he7¿QQî ‘Û!tUýh¿È£CŠÈnÀ BA_Ü ùâ³IÎCó+!WûŸ8ïÜQ¾\°7—(·= Á­^ϱFÖ+€Ÿß|B++CXËØ½o×.ϳn¿þºˆ¥Ug1Ë]̰-2ä|fúü'§ÇžT”αŸoá nƸ™/u¦tžðót ?!¹"‚àÀ‚4+QŽÁîÏžíÀì5-¥µ¿š’jÐãjÖù]å+PÖ·'ÄÁ–®i½‚&ç= <·¤R#pváçïAhÛu¬_6ªõèÅ@#à>SÄîäË[¾÷ÁçX‡íÊXð섞/~¾¸)JN9sJŸ}º~ôqáéUñÑ”7uî3: 3ìd¥¢½ ¡3_ IDATxšÌ™söì‹ß²ÉîÝ‹/t¾yí7ÍdùKÏvçG÷´¹þu*<þn×õ¨ëà…ÑKL 8•âÎ;ï\²dÉœ9sZµjuË-·Eµ¨€f S¤Ö˜/;å/Àó믿R¬,ö1C©‘ ¾EŽ-{cwã)H—ŸúW(ݰaͪØ4¬1ëÙå?þüã¯Õü²t‹@Ù#Al;¤HFǰaàÑy'Þ=vìBžû÷‘ïþØ¡{c}÷»üZ·¾ÑÝcdžwR@ù»®è=Ð1¶1†ŠïÍí¶=z]Ñú ÆŽ½7)0ÛÜ÷Š &׺᯶%Ú䆡 óëÿþ¨P‰ŽB’Ó ¬¯V£!ëó©îžÚI4ãÿ âõ|صcõzÌ5ô‚ØáÊÉ‹Ê'·ªóʬ•¯}´ªëq‡Õ¯U êùý†E_¬=¨8Ö±Eí„[2à«C÷Gý(Hö¬1c¸l“E b#pdŸ¿-îƒanÛѰ¢Ü|År§Ï5¼=£yÿkzúdµãàó|Çu9S[‡6Tù¸ß Åc%… ØïqÏÙ§8òÝ]WÜe}`Úø,’J~2OæVÍœö¿£‡®zŸç–<¬Ö´£Ñé>â\õÂ%×Çž[²äl¼JD]º^ªaIÉ#P½zõ§žzê¶Ûn{衇 T•Í&ø¢[]-ÿÔ0,\xë‘->oÔpá…³€á­É]xyÁ‚[‚t`ðýF õloÒóÙa‡} “þ…W *No½ÖEÏNÜeöÒíº'öÚ"PîÀÞâ±Ý1Îòwgìµ6¬wÖ}!4¥Žð«òòÓMdÄÙäÄöôdßóç­ëxÆ×zj’Ï;•q û½ ?¢Sj’ÇŠ­Q£&/¼0²Q#ãcƒ¡úÜðjý1àñ®)÷ñ}ÝF¶¿ø7;¢e[gäØ¿]ÿ›þ*j×8W~·à¸ÖGÛª™ÿ^àôDñ#[·à»• jfÀQ w!Q‰èVJ_ßZla~é%<:žáõ5k4Ì í~Ì1c€gçÎ+»kÌFzÐ ô›ú„Äü°Æ\¿~}ˆ’•]XcÖ³Ë×ýTÃ…›,ûÆÝ¯ÉŸ÷èü¹×âÆï¡L‹§áêŲõSFïC†¬óŸÜ‘¬~çÓrØgÜý¢$´aìÀ •{î¯+„1€„ùÊÁ_ .ýaó­O}¶ç×½G5«óÝš­ÿþª”;èwÇ\qn eèA3>ù÷[.û{ nÀ˜®Óág°ù,D೦À2¦UŸ¿¿ ¯e §y«ÖΔO>#Úê^œÖçLÓª0ËxßÌúdIÍšõ­jzfOçýç_{ßëÓ°›ùºÖ„!~‚ ‡Œµ£.hKééVï,zð,¦Ÿõà;w:² í½'üž¥³ˆ²ÂïŽ>Ž‰Í¯ùÃ%Sn$53b—N%rV×KÈ ê±©¬ÆÐªåy;2¾Òü^ÝT£FÞÍ€W½zõ€'ŒŽEⓕпgÂk̬ÂwØráE3Ô«Aƒz¶EãÃK¢1~º¡%XÊ¹ï¾ À˜p­lܰ‘óõ{’Š%êé@d ¸Ô¸ý‰M¼ü–T 6ßßd=.Mk)¾Ìt(°]‚"Þß}¨øT’@€‹×Í›OÓ¢{{ýÊøž‡˜3ƒ”'ž ÂåÅ+ôÐô_Ö¯?³mí wýÆÃÝ»±ÓŸüÆ#Ý®èÚ&Õså`žæ©:Í'ÿ*<¢¶•Ó[­:­-<¢‰ žäÃçÿŽ,üç]°CƒˆÇýþŸS'4Ÿ}f¯ï5<ùw\ë•…]OÃGáyA!;4Žj{¯3þƒ¸ç4C„$£«³\¸PlVF´ ëˆkþ±ðr” œž%¼e,¥kB  HBDƉê”-{‘Ьa‚¼¹ÀÞ÷8àÙ±cÇ›otƒ õ›F:0° R “2ÍJ¬(~øáo‘*N¸Æ¬e¿[÷S4VU•Ú ‹@y#Сáú!C†°UXèÄʯ½žk“Û2põó‚ü÷(ߤcÇ&AùÀ8Áï_,õ³ãr+†­¸Ñ·¡¿òžGäÐ|2Q?­{§fMÚ¶¿öÄFëo¸~ó/öí&XcîÛçÿ”Å7‹º÷&Íœþ5ý‚¿/ØÂ×O>9ñÉëé‡Tm²”_|ùå=C2°Ë­ \«*鬌Lü(K%À¢”U€¥¿¾ôî˜ç§]pö‰ÞÂåd¢äGÆN:åä“•é›~ýSOŽžô¯™Š2àò ú^uµiÙûEa)½·âʃìëøî®{ñ™¿Ðƒ¾г*i ²8mÊ›+à›¾&þ•€³2 V† µÆl¤ƒaWFÌÙ¼'Zíél‚¯g×omvh‹0K×þ¤g—¯û¹$fšÃ³IëEÀ"`(#àiéß÷»àðÚÑß域d¸œ¼'0ÛòÁrâx9úV®åisÉk²œÊŒÀ*8´îÙoq_Gœgþ€Zu]µjUݺuá«ùÊŒÇV7øµêM›6U­f>Ê 6WÀŒ9ç[x`ÇÂèÀª¯NäD"øä_4öÞz5ýÖþf]ÌY·YSš;ó'O–žC±É"`°X°xѧw>„Î¥@'aІõ`8â®Oøw@šÄ±ƒ¥pÇŠZRF`Ù’”E2&@‡Ö%¡­y«¶³fÍêÑ£G#ùKXIY–lG`Ë–-üñ­Û… suj¼eÿl‘Å@¬yHµ]»÷ª‚Æõk¯ß´«!<6šú·|?mü¹fu»¡Ù²%Y*xàrEð³ÂøXºpÙ­&ŸŠ¡âf1ûÃå ‹uÔ"]´ls\´¤dÒ˯ìÝÃ?b’]îYoÒCV—!\>ú¸ÎFñM[w^¯ÖauCÐ(µ{oñO›wª¢S>⯿m¸aÓ!õM4UÂåÙÿýú”¶ðœ«M‹€EÀ"aÔir1Ûoõ2Œ®Uw`#кm{xØXµ‡#ñ×nOà¥]ó³Žm±¯¸dÖçsg~øEJJ`uÂ垎NIÊ2[REžŽJUÄò[*'Û§F*GkÚZX,.í[ëÂWÃV 2" Ÿ$PëgëdHŒ€gtê;èÛ°‹€EÀ"`°X,ŠïsÕ1J+F½¬—‹€EÀ"`°X, "à šÝˆÙ†ËDÙª²X,‹€EÀ"`¨ÐèA³ˆ˜m¸\¡[Ô:o°X,‹€EÀ"qTÐ,žü‹Ø_,É8ÆV¡EÀ"`°X,‹@…CaÆö¬Œ ׌ÖaDà¼SíYZ¶'X,rB`æ—ØY·œ°¶f²ÿYÙê§õË"`°X,‹€EÀ"°À5fXx†Åg»•yÿ´€µZJ:tpæÍ+¥+n°X,fN<Ñ™;×\d© µ+#°_£ P(Þnéì¡m„nÈO½8v×âÎy“ 4rŠ–ýZ¥ø²1ó çP®ÓèôÕ§èe/oæÍ+).^³fͶmÛJJJÊÛºµg°X*/¹¹¹ÇŸp¾}û*omÍ,aøãrÝÇœñ€žS—9Žˆ˜‹¦Npñ§MþìØÐ0Ó¤S´Ü~z,–O –Sä åë45Z±ìEÂåƒ>¸aƒÙë¢õÌ"`°T@ø'¾ÿþû è»uÙ"P ü¿^‚ªÜˆ™7fã$yƒ+V¬¸ì²ËæÌáu]“\›v&N-šO±«˜M|¥¤-ÓÃå *Dn3T­k—RµÏB`u¹Aƒ»ví*MïÍÂzY—,‹ÀþE ‰ì8;wîtøk“EàB€÷*ë'føÁ†Gzx@¸\PP diÓ«Cf²@3‡Î#ÇÀÒ3,wû˜"l·`ºç¨:“ÁÛeÓ&Ϫ ¥h…ÔûSÝÏgóÙ†oÆHÐ÷²ÍiëEÀ"`Èz켚õMd,[ôgüÄs)ûƒpùŠ+®8ôÐCa/®ï2O^¼ÌÉocXa.…+ólžÈŸ‹M#¸}yÌ]ùæÅãNíä^é¸îØÂJ„€é+”JT=[‹€EÀ"`°XÊ!cĬ‡1O.)¿T¸\¯^½D³!³ÓwÚ²¡½ÏïÔî.¯~ܳѳ³þh Ñ>„Ê='RI§ÑF ÎYän—V<Ú£€N5 àaô0å–ž…@Nô±ïÏ–F£QX2‰E£%ô‹Æàsx)/)ZÂùh´aýšrÖØºd°X,‹@Y 1Dð3&ºrÏ“¥ —“ršCæ"g²Sðªo¸ÍPxvf̱lP#÷tè‰>¸ê,G .dªíÒ.é§½£ÚÎv79;at³vK­¨@d|uï³”÷%Q#f š’¼(.Á‹bˆ—£±}5;“ÿõæÿ–¬Ú¹k×U¿;»¢VÛúm°XÊ }ýIš,㳪ü§eÙ3¸Ê©­3¾ Y;£iJ©ìd¾ôÒKA––yuyÇŽ‰PÄ9¯g! "ãÆ _—:ûÒÎväZ1ìáp\Q^¶hï¸ÀÍÊNÙX›¡#DzF ²q1œ•±l¨=+ÃŒV¥ âÇÁDk̰v¬×5öðçDªÄíîÅ%Ñá·ö»uĸ_wì¼¾ G¥€ÊVÂ"`°”îúœíZÆ¡²¨‚=ƒ«ŒÚòW ÏôÉÇúÜ•f¹±‘‘r*B¿úê«Ta¥%`§ W `v·[À3–ràKû' `3ùwž—)t: Ð)Ü2lv^Ú®sž¬/\Å C÷AR=Àh XUö¥-OO}íÛnW=V½zõ*U '-²ôºŸ¶\si¯'Ÿy×®ÝC®»È¯Áæ-‹€E`?"`ÏàÚàWbÓ ‹¨XÅxV†'BN%\N+üêþŒ‰ã@xKY|¦“Ü2¡(&ÚBiö„ ³Y‰÷y#‰Ùü|`šþ[±¬D€vÅ{ùÖ˜±{·ìÚµgýúõ»wï6Ö ‚ì?mÛðó¶nçžóñ—ÿ{|ü?â›°¥‹€E ’!`œS!Ò^Kqòv‡`ñßÅùXêX,æåó°˜(%B-Ú3¸B¡±¥CF²7¹§Ë!=Pìg·y‹@v"ÀOþÅ}7DÌ{~ÙýëØJT\\ì«h‚gÿJ¢ÑayòÙ “^û'ì;úð³yø|¡}Y,ÒÎùÒÂóø“§-s–-žÏì˯˜çÌo÷j,¶tt'gNa_ìäÔ­U<|­³iO/ùUÈÕ¹é&§³nMÉžÁeB¥’Ó¼Q±ü&ÚÆÊ•¼Ù+yõpQn`qlJå;&:{69»7:{~Ðk­³«À™¿aøKíïxjlÏÈ…í8»F¢±ÈCw\ûÆñÇnÚºcÛŽ›·n›ùᇠ­ÄuÁZ,ÚŠ9KZæÀóGFÞLŠJEè,KñW€:±'e%“­é€xÖ˜m¸lûJ%F Šñ!$W³fͺuëÿ[+ØŒ‘›“{Hšµk×å£3Öý¸açÎݸ® +Íð›&¸ÀìàϚćӥ ÖŠg»7nÔ˜^ÝǯHY\˜9”õÐû lÅø w•B_$0°b|÷F…30%W<³|°É"P¹ðwì™…8dܱ–^mÃFhç‡ô˘oIðRÅ ÈÞ-î µûB?äJ;D+ñyWö ®ŒµžUä"à‹ŠåyÌvåÌv’ŠŒ~ š¨ÃQq0çjÕ¼ý©i;Q''W”::cûöíuëÖ¯†+ÌX•.‰E0X¦ šÐJ(Š+Çw?cı“Öýx±¬?þƒØ|*§œiÿÀ§ïÜØRðÄœÞ]w9È_%òtåø›Þèýé;]ñÅñÁ-êòħËzÜüìù®?I‰Y&‹@v#Ð¥GÁ•E+b11ÌfNµoþ±–]äXKÏ{ÓÍðüžce)E{/è¡?›,Pè·H:YÛˆ‘ÆeW€ª[-¬»çËáq±XÕªÕÞðè¦×+~¶ê†»øèŒÓbW6[ÚfÌó·nß¶gO1ÄÙ°À\ŒÛ3J³aiåø›1\­Bä–7–"\Î@s®˜ñ¦Ó»[« hb-o¼½ÝÏdfÅ:cNYER"Ð*¯ýä"Ù­gM.ÈOÿSnW²n~ˆãkE¸™ŽK¼Tœ†v+b(<ËItÿ÷îÊ ´DKueãšÕj(¸Ì÷UR¡/öz\>ŽÂú±›•kÔ¨vtÆë6ìܽ 7f”ÄŠ‹ñq@HñM„–®œñÆü‚ç…‰¯|¶Gáåat£ž™C›ôxv¥·®š4iŒ/Ÿþ•0· 8 ™¿ÉЙ ŠtÎJº_IüF¢ƒØbÑw°3# ÓR,–Ýz·Ÿ<Ç‚›YôjA~5p¬™Æ‹ƒîxü PŒ©Æ…3Í££<æ‡ô› t3J‹ÓŽõƒ/ˆdèÒck5”ã¸qE̾yÆ]ãQseçBššá3ªúQ PÁYùë@zIšú­XG€?êÅ}‡Õb:?âîdZ6.‰ÅÎêóèq]ïhÛe(Ñþ»ϸòÑ®Ÿä#2མŽÎNÄ(®‰ðRØC‘×*Žl˜æ0:ú2ÄM8á˜Ç5 qéçÌÂ3ÞìýÉÚuk×®›ä<ûŒ]V,ßî¨ôùX#ŽïÈ¿víè.¬jþˆ'œ¿å“áΈ›Ç¯#ÆœGµ›¿¾ÀÁY*- dÆO‚1˜a…¹ uo9Äf>3¢Ý$ïxQS„†±óž 1¸vRÁd…š¸;X2>?dgªŠMŽñ©?ì1'/¬½ÿ¬Œ …lõŸ¾(2¼Ý«öG°+T»•³Ð«ù.G7íÊ€Ç÷`ïzãZs4rPÕj‡7hXg_±³ Î8è ê‡Þ°úÁ‡ääT¥J5|æO6GC'ÝѤã´ðI¯|.ÿÌx)¤¦“á­`ÒÚ'`+Œîo?ü“¢Ü}Ì¢Ly[ùÝ"gþä3›Žà’‚ü˜#¹¥OuV¾ÿæü‚Û‹páYK퇻¡T¼å ·Œ(Z Ph$¶ÄEæ•N¿:›±T,ZœßÛôþŠÎÿnQû¼Až ]~r¿yÚ8¤ºé#¯gÝÞ´Žn8Z©g e~~¨X0[o-YŒŒU®nÄ 1„M Œ@¢ ¿`Ç_ÐqËð} þ@ H@ÉÉ­~pͪÕc|t<X½ú!5jÕåsåŠé€ ’âmi“]{Ÿ0¢hæã] ÖS‹ë‹Ö\Oò_Ž*zœ i *ŒîÊÒVË],((²LZÃjIÒ…ˆjáCŒ³¢neåw §uM+"¨Ãuëür ÍuÕ^Y*20xcƒÞŸ{3vá8ѽåh‰ãFoӦ߼´æ øZÆòzÅsùýœIkÖtÁa·o2™Ÿ*2àÖw‹@6!CV1'ö1{ï’t7µÉ"P¡ T¼¬1ú2ÆÁxrœX9¦xxìWî7|jÏÁÏAô A3mÆÀó1ðh¹âX13‡pÄ7^ÚòúÛ &_ÝìöYRÃÊçÆ«ë´ÔQqÑò¨vÎäÇŸ[iòªe›.ƒc4=ëöfùãqñøü Oðó;Î7o¼OV¾ÿÆ7=àKi„Á@„%í…'´i‘V]L¦ µ´d–]{;#®~0Öû|Õ½õÑ×↢ÿÜÂÂï`˜À°úf)«YïÀª2 œeóy\àŽoæç‡ Ž)ñ6Y8è^GIEȸƬ2¸æf“E ’"€û˜é|eÚÊŒÇ-Óâ±ûƒØ¹U¯Xx(06cÓ¶ ¹Ý™—™KL—Ç×ü§MþYÍš±–îÿû{Q-o(zܤ<Œnâ5к<þŸûóÏ:«ÙƒT‹`îrsKúªyå jWr€¹—–5ü’ý„c— jÖìV —ÈMĕ˾9¶‡Ý‘ahKªàÀh9áA§÷ùÞ=ëŽfWóv .X [—š]ÝŒöWp­»Ü|ÿ4O((8!ˆý0?„;cK,Œ1$æ1áà#fúñlüžZþºIÄbe¨Xà‹DŸ÷`‰™ŽUæ™NÌ€ÚŸ¿Ž@@ ñqÄýµh)¢ƒíÎøt Z–.åyÌh‹ë§¯†=2%ô8^œûØêsåˆf>EÑŠ¼uƒð=°ó‡÷W\}KGW׫v¦y7M—$V€@ˆ+ŸbáýÏèž?aéèÎyy‘B¬üýl˜á<æž!+#iÛ¼2 ¿ÁmÌ°Æ Æ"¦§E¸L§aˆšis3¾€60ÎVû˜Z©\M‘0n]öÖÚH¬\õ¶µ±X,X+S3 ÚÇ,΀@"‹·0Ãé˱¡žö Rìæµµ‹.kÌ^f'Íñ6ez×—ŸÅöeÚÊ+~ë„ö1Ûd°X,‹@¥Gãa4slœƒ?dB/øÍ?q LY8WúF²LŠl$|¤/Ûk̼Ò\åCåè9Ú¬Œt|ækÊÊ3æøL:>6Y,4&dú—”=?Ê ?Ìþ wì–ïç„ÓªkÚB®&ñKMZV¶BÀËÌ2ךsl¬¾d¸¿`"V—áÛg»’–¹ö³šÊD;Œa…™’y†\TæÓåäö ŒŒ' çi8Ü•çÐA–N£ƒwL‰¬”c…­)‹€EÀ"}@œ–WØ~z,Æ-3¦ÈšòƒGý o·”]ÊL*Øsâ€é± ä‰ÿë̘j‰[‹ø_“Ç/ šòQ2Ó ÍTZ¸ÕËOËPq1íc–A?ÑSi°«Ô$ü¤‡ç1à |çmʸ;V‘á ?x£ã™!Qé‹‘4 IDAT<Í4-Ç‹Êø ”âX©ÔÚÊY,Ò!°lL_ —90EUm†f.ê-kN§v‹¿KéIY‹gs+”uÝ3¦q3Üúñæ/N—ƒ+ d f«(+Àƒãð9܃/p ìÕˆ¿Ýäî ,E;&0!rðXÿœÂ<ÁàÈK—¼z”£®BÚaúú>T¥É]m¿ƒ¨ë#ª!­xjðM¹AY†DÛ:â/u1$IïÞ—ÐV`@À{éµB/Âè© èbòTÍm÷@C šG&1À®ã°Ø• ˆjjS»Ô¿W†5fÜ©A[˜År)ËŠÌ[·nM­f©sשS'u!+‘uð¦ÂønQÀì|¿rîÎÇ_à–eÞ£ŒÏÁ¢2Ç á1mÞÀ]¸?z"Žc¦6Y,‹@¡+¹sæ·[‹á ±ó&,ͦKˆõò‡¶ÉŸ‹M…i s×ì ±éŽ»+#Àßv®cã‘YþäÕŠ™ȺBÖiÂîÂ8_Ê]–fi ;»Gæ.ÕÀø|TÑÐ ^£Nˆo¬Ó/ë­[°Ôõ]pœÑ>$B[ÁXRy8Ó×xFeªÝHú{‚TadÂnÄ!Nk= )$¦ÿð!Žnû*ÓyÌx¿ù‡4HAÙýG©yÖY¹ÿû_Ú?ñDgîÜ2ÔoUg pTÆCnÉw¬#‹€E 2"0g¤¦í zƒlÎDqX¬ã ¸Ùy‹;ùƒ¿ ¯v&öìlÜæGO°ƒ&T h½vF÷2!ó€Ò¶:b@áTQáN£ï"jþŜ዗9ù>âù_6Pê,žßiô«d\±0 -œÃ¬<›Wlì£+¥ð#r:à¡ø½ ¼jw#’žÀ:’„݈CœÖ4:BtÃaóy̸ºœ4A¸¼uË–êd€\§nÝ h±*²D«¿£îì—7YÉ€ «Â"`°TPÚô*èT8µhB¾aýW¯’zˆ±õtèYA¸êkªº—ßɇG÷€5_3ÓöL'ÖcÒ-h>q8Ó**•o)Z kñ4!¸2ªílw«9Ýô(d€®Ìƒ ¸éóPŠ.*ö2‚=cjñØeùÕ2íc†ŒØoÓmx+·?À^l_‹€EÀ"QRœÖqÅsbOÞ­L¢tV†'Áoø:‡ã~b™–-šÃ»peÑË ¹ ?±@·tt§ù°–›¤ž€b—b‚ÌÀg¯·Ä<•+µlÌð‰Æ}Ûcñë`O@ÀßA.E>  ~î$ZÁ/’8ïnF¢ieRÑÔ€K¡Hzz‚ò"IØ8ÄiÍĵÔ8d4¬ÎÊà'ÿYlµ!sJ˜Zæý@Nvc~ßß¾Xû‹€E ò μ Ûu—Žžß“Ÿã‹Dú:½üëÍø¾>ÖG BË¿Käû.j߉у êÉ¿?lo Û‰Gè'qô$Ù®ŠÓÛKoé‰9dÄÎÚb­ßšV‹ô}ó+¥|þ„éøÉR_§`@%^+@Œ>‡ÑÝ3%àFD˜Ž>Mu .ág’žž2ìFâ´f)3…V’ñ‘YŒ‘-Nxù¥žŸü.ѰÖÜÿÒó‡Þ¹dîGf5åH…'ÿ`ׄ¶+cù¸sOº—wwxø«µNìÌŒÁumΊ»2ì÷ì‰aÌ Ž™ÿ]¢ü8ïÔ£Åu$²bùò5jT­Z5+¼´NX,J„@½úõûíÚ-wÖ­Dµ« UÝyðÈ¡1® õ+ÿ:ÝáœÑO<öÂëïós}‘œÈ ݯºº¿ØÇÌeuèHÑòqÿܲ¥9»|ܸÎ ¾.8­ÅlB yóæßÿýÎ;³É)ë‹EÀ"`¨ Ôsœ-Z¬·ª2T¦2Öα˜Óit&·WF”Ò«,,ËS3P|òžýƒD Ñéi.S©åãb¸ü´ ‘[Jf…¹L}²Ê³ºuªZÕNYÑÖ ‹€E ò!P·nõêÕ+_µ*xpaY{O¹eͯÄTpXu÷!,† &˰X•lÙ.Êò»Sæö»Û¸¢¬íÔè§BjIìððÃÇ)\N—±5îZ•͛ԚÛz[,‹À‰€8ÞâÀ¬|ùÔšâd4sÌ,~ó/‚¿ž'ÎñIÍåãMjV:´5íZž1˜·jlٲ嫇\vî¸å Õ%Np¦Lf€8¥ÏWÀ·eË?G‰Ï&‹€EÀ"`°X,‹€X`†ÿr‰üQ?Ž˜ñÑF&M›QJï`3†Lî†èRê´â‹€EÀ"`°X,•˜UÐ,ve`žbèl q±xÒeu« ™ÎÊpZ·9Α‘ôòqN¢õf ν÷IâD· qÚÍ•°;Û*Y,‹€EÀ"`ÈîÂ2¯2“fñälbÆ_„½Y¹#=íöô–¯Úž Û*<™¨_=,‰H¢½Ýžþg¿º—Õ…XžüëçL! æ<©î½”³Ïþ TzùíÏ¢QúŠ%-¡wøÂ.0‡—ò™¢%œFh|h¿‹Ï; €²•µX,‹€E€žïã]Ìxá=YÀÃg6gV­}¸eß-#Âë-O ÎARÄÈéWg󕈌¯î}–ª^I·(Ad\sJJð¢¸/Š!^ŽÆöaÔìLþ×›s¾Yºs×®ß_ùÛJ‹‹­˜EÀ"`°X,^h3ÄÌÓµ:]Žö6gï ³mI‹@i€µc]E.ìHʉT‘ÏÀµ—D‡ßÚïÖã~ÝùëÐ.3òX¢EÀ"`°X,•sÐ !Ô÷0sÅÌY»3£ò5‡­Qù!P«Ê)&X–^÷Ó–k.íõáçó~ꥥ-»EÀ"`°X,¹‚Œ;9år²\c†så"¼êœ] ͱ:uêÈ­Ëey™*/­Ò4ð­1'£‚ì?mÛðó¶nçž3å­i{÷íqûÀd-EÀ"`°X,ÞvÁ[2TX,Ÿü‹D`ï&þ~I–­/o[U¶¿eymNëvª¤1Ó/°¹9:ì¡1ÊÐ;³þk#æTa·ü‹€EÀ"`¨pðž ±™¼wŸüãs2än¬¨š g³¢*‹°)9™ªÐ¾$H‘h,òÐ×¾qü±›¶îضcçæ­Ûf~øa2,EÀ"`°X,ã9r\1‹Õe:9ËÖ™+4äÖù¬A ZR’Ðú"†_ø ˜pý»®à0 ŸÎ_c#æ„Z‹€EÀ"`°TðÌeÜzUQ±ø ääˆ • ž¶  °ÅÂG5ui¤÷ðB:þH<œ+çàiÌQ›ƒ )ŽÑ tpd3Î6Y,‹€EÀ"Pùà;>,0»Uå5f ¡q•. 0[Ïc®ü-dkX†À>fX6Î éÝbue 7;ü{ò|A1túfU[,‹€EÀ"EàöL<ƒ–“1Nv%›¾yfWíZZ5™u%S”àBqh߯Ãb á[¢f—!D†}´ÀìàÏš5ýT40ÒyÌ2]>HIR{ª‚Àï&tb٘ΙdU¡ÄÀ"Í?ƒ ”d…,›E [ð÷jÈÃ@pGPz~ûµJ-¨W$ßl‘ž+e°¤€XbƸXÇ1ãº2„Ñ/ SÈ*\Ú†3 ¸ëg@§Uq`!GÅ…ÌÎão,í>â³¾£gÿíƒï#9¸ƒ^¸+ƒwhÀVà]F/Åï ÍÚÆi3t6ýM6-ÓwrÁÒ ùñùó',-˜Ü×û© ¾„-µd;ù˜³Èý¤[4u​óSAÉÔ£å¼E#Ä8½êLÓ?¢&£ÁòX,D@¬¡Á¡ ”Âcù &¼CÒr©9ƒ¦3¡JÝõ§·/Ìó®xéêÃ>¾g«£"#á¯ÚÉLߨ¸ëÍ ?öÒÂæo|ý³µ7=;oÌÛßÁ—0ÀkÌ%4ÇŠqŸFèútEF%±ï˦Mv z%`·:¢}á({ŸO ©å¨0´i×iâTÙ§EÀ\ÎçÒÂöÓcîÇÒ6C‡&øˆZ^X•‹€D€ÃbÚ«Œ‰µ+#ËÃe½a1k´6‹Ù¶$…@I „¾Øûqƒr”€uÿyÇÉðªWó M˜ñ==!ÁÇþ0hŽãã€e•Ü/cÅÖ÷+µBòt³ØuÃ/ˆ„ov=[(n›>UúU)¡ð€ÙuI.ÂAx1±gïIÀ¶%X*mz¨›0«ä6úÈr¯ ÃÙ ²9¸x’ÀŠqD‡ÑCÔX²EÀ" ¼®†A³\_sÏÊPz*ÀJš6‹y'#ÈõœèÌ5hŽOU©Àgy+4°ZL'``ç‡c½Ÿ¼úØ‹Nmrñ©MnèÖê¸bÃNZcÆðÎ3JJûÝ uK7AGåT406=з±ÿÏÞÆUÕ‹¿Yºe)‚lRDH(‰@ŠìR@„Ä<¥Ò>§©€òOž¯>DjŸ ÿúH|n€˜¨ &¡ð(d²6ð7HVY EÚBÛ$³ýçœ;wnfîL&“™Ì½3ß1–™»œåsg2¿œû»ç®´ë´†ÆNý2¶²¥Ë,mÔ”<º­ž ;ZV_]wÌ5V¥ëHTíùÅkYmˆëÁ5}õ³=F˜ûÚ[R“´±ÏX®™]ï>‡/‚ÿ"Xõecþ ôaî]j,S>rîþ¦|œ½0ê<>d^² Š%`GÌ*Y%iHPàÃ$æL8£É«•-–ÎßÐç·²úU•©xÖ•Ž€ÎÊPSa¨ Y4'º6÷ÐÝGÂ1ù1cÌê“ ? a}ÍŸc–‹'š•‘H&¶£aSÿàº~'¢mê²NûO½xT-Û4´/ÒCP’úÐ’aG«Á+"Qµw6²gÆ8ò íÝ:Z2=-g`™Aæ1ÔX8 ™­žrÁ¬|“£Z•³Ñ4öEzIgOÏ?5í!ìÚ¶¾®&ýǶýoºåž%³róÌ:7Cg2ëG<+#q1`†˜uË㿼2ÿ2ʼÖFà?e! YÉ2ý…žeY»çÍÐÓb¨°ØG–'f¢ Y¨‚f58]¸´Œ=|¬ÒÊ×a“¥—HúQæC3zÇÌÛŽ±6/E¥£nV#à_2÷z¥ó«‹hå´Ï‚D,›Úl>ÎîÜw º|ý{ÀþxÚñ¦[žZ;K@`bê#/!1»œ,ÑÑt"f•õ¥Ïgþe”yíÄÙ;pêJ¾ø=JTÄìz¯›¹ä ý¤l¬²2d˜9,ÁtÁæc–LËν°I%ì4ª÷¹^¦²ìÔ‡ÁŽÅvVFêŽ9’LE¹‡åÐŒj^Ãp97Šð‡€ ™ÛšÚÒ]ÿ*á«„´ú<‹|XâcÅ’ÃaZŸúqöè•:u$Ãȉ¤©ÁŽ®¡õ€b“*`¢'hNä1Ûárf“Ó©ÿØÎüË(óÚIe§²â ¨Àlò.T¬,3ÍÉ|*7Cm/1«¸™ €”ƒ€‰ŠÝcȉ+ÿìf®Þ)‡7BYöQÍǬnJ"ÿê±d,#Íj˜Ùc¶‡ŸÕZÙFÿ¨ä3ÍG£,ß6t@  ä»ß$1;As<+Ã`蘀À  ßåÐe5¹œL±\iÂåx”OYVùÊ:PÖ jm|tY/Qé 2—ÃÛ„>"€”»€Dv‚fóÒŽ˜M&†,"\.÷·Iéö_ÌÖK/®WÙöô*³ÙoÖiÍfÎf íëMΆºé‰ìQº4ô @\']Ö§#fw–Åúì³ x×” €L•qÑ%ß,ÁŽÑ%@È«@<\NÜ ;žÇ[ViøñÑ»°¢©+Þ0ul¯›Œú±á´É77]{…oÚBC@@À¿Ëݱ¥}N`\i7Vݰ¢¢²¢²²Ò™4ÃgýhhPÃౕ-]M {}Ö8šƒ € P)›pYÂfybR—íˆ9HéËóZ¬þuƒ%pDè € €€$B6Ùγ¾µ‰ªÕÃÏs2÷.ïj˜ß\£Û9Ø1G'aWT˜Qçä×® ì-,K<ætØ·ó\=Y¸P ³†·ýû¶¦e € €À„äÊ>Ù_‡Ä1ëâTĬšXÙùwBUhç¾¶Z/Ÿ[ÕªæÞ…µ=óíT k±DÁ½KÛêWêÔ “è,Ä ´÷79²g ûúëºõ~v;å:匮ȳ"€ €\ÀŒÕÿq‘UĬG›í`Y&lŽ?÷[wuó@{C×r;‰yp]¿£›ºúÖ Z5u ]®¸XmÐ2Ï\#XÓº¤Em’þ¸\ÑÓײÄÄäfëÔŠÒ—Â@@À ¨D‹ÔtåxV† “+ìÕ©[ù§Ó5­Ýíýj8Ù~È´ñ‡Œ×´®ŠÅº­N–Fþ>º¢ü•KI € €>ÐcÉIáp"b–µzôÙ¤hø¨ÙIM‘Áâú¶*f®™]ou¹¢g{C ›e$Z]¨7°G¤;w™ñfˆŽ6KJtjGkšç7Œ.6ME©»²@@ ð)A³“Çl¦ÏHL¢áã®6.j·tÌÜØ9 ÏLv³¾fO®ßÓÉ^Öijƒþ&³H‘Í$Î*?£Ë,\nµxôSBî•õñbõ…~)yìÅ"@@à è)åLHi“¥KöL|ŸÑØKܳD%_´êã‘xfO£\º7ê@%o WJaÎföæ£Ê½…gE£*á € €@I Hp,·+‰ßÙÏde¨\ '_ß7ý+©c@g@@|.àÊeÖcÌjê =³ž7Cÿ—%+ðû;‰F£êŠÑh4¢ÿEcòD½ROãOÔFшyÎÚëçÏ;¥dQè €ÄÔð²ynOÎÏÊ€òÈø Ÿ=Áéo$j©ˆYÍV$¢ž„#êIXâåh,¤¢f«çÖÛûžزmÛÅÿüéò¢§ € `ô³L¬#iFûyj9ù±cw1U’šTYQñäJ8]|éù—.ùÅÖ-[[/<'­  @ð¯€+íBÈ£f—“×Î%þí-C`bUÏC>(2,ýúÛ/8»ùþGÿzÕOnÏÞl‹ €p_ÚW©GÖäÿ‰ÙåœÌ@vŽF#0–@ÒóX›K¸,IÑ·ÞÞ¼~ÃæÓæžt÷C«_=zJ–1‹`@Ž@…ÈúÇ[®bÖ£Ërm ‰F¿}e‡SûŸî{lÉ¿.ÌKc(@|'Ç$bN™#eïzAƒ˜ˆ€$%'í¾uÛð3¯¬üûH(tà‡÷:âvÙi ”e»XԊƬïýŸ Žüè!ÿØôþæ÷·¼»ió½÷ß?‘°/ €øZ )fŒÙ×G‹ÆF ‰8ùµg?yÄ'ôÞn;O9·Y&ЈÝûpÿîxøù·w^ùÐó±èp,<òôm_–‘æÓç©fψĞ\û:saŽ ¥"€ à”1fÇ,?•jNfûÇMu·Bî~­ïVmòjŽÜ#;ñʵε×èÍÜÅñ¼¼$ÅÂxòýß–½öÚ«‡ÖΚ>mʦ÷¶Í˜1cà¹ç¯¾ô¨Õ·ÌæÖù›—eTZ曓iæä‰ÍåíGï@(quy_e…ùÑ×úI>³ùöWÿú7£q^K×òxÈ<¸®ßêëYa‡Ìòª¡®¦ÄÝË«€ä1K¢…û±mxXr0Ö¿½é…W6¼üÚ†÷¶l‘ ô­Kbj†f(ë Ù¼LÎéÈkã( @Š. qÂè3W†G—m±šº†þu&F\ÑSßÞn­q^Y󛉘‹þÎ R"j¸Ø™%+ãG7¿¹çî{Üý¿O=ûüƒ/¾ñôêÁvÚuéoû?zβú³nøØÙG|îš#çýtÎç~l1Kjó¸rÆ£Â}¢Ä0Ø1§Âœ0QÏ\gNìòó$©'Ltñ‡Ú3QBêÆÞÍU{¸ÏÏd׆lK÷®“¥I ùÝ.¯å#ãýIɾ_É¥Æ÷Ô¿Ì#õ—Aöų%äEÀɼˆ?q1ûy˜¹¦y¾e†•%`¶êšg×Ûc΃kúêg›€9ñÛÆÄòû'/ïŸÒ(D¦ŠsƘ%+ãßÎÙó”cÞ¼yKÏŠ»îû߇wš1íkçŸÑzÞaOuŸÛ·ì O,kyü¦¯IÌ:¹¹­VŸÐjêŠ 4´wëa;ùŠ5RPŒP§o"™ô"‘•qäW×~qÿÒžWLo¾÷•#¿ÐÛpÞò9çÝtÔ?ÿîèù¿>îÜ_÷ùŸŸxîOÔe*†Î±'u‹Ü‘æ`ÇâþöEóâe¹NÔ&NŒ¬OM^§z=O¼¨B=æ¬ÛàÊ’O Ù  ÈéM'dvÐØ9TI0÷g0ñ\žÙï‹ÔõDZO ^§yH-ž{¦[ž¦#€ÀDìù˜MІS‡˜¥múKº·®¿ežºÝšJÓXºbE¿5¿Û9“Ýâþ]F]2* ¶œàd"dì|ÉÊÑbÓÉÊ'jêåh¬ã×ý²bÞ'öùÌ ûŒ¾ÔO]ö–ëÿÔŽ–äfäj ÷5-ïíl”¯F²Ê›wMrYr¶D6­jTÙ’µ–Õž¼óZý‰Ø¦_%½õã[Ø'^VÉG¤w¡$&5&Ò>T:Ó¼´I cµAòY.çxÒ¶Íìµ3+ IDAT¬@ X*d5:`}³OÉ«2ŸÕŒ}jìŒÅÔ~9/îXäúº÷âöŒ†¬D øiƘs Ù##·5µYöÄòÝÕÖæ$1ËK«+)KÔr¦Ôã/øB6›²ý' ³2b/¿¶þ'Ö­¸ï)ùùímvÞ|ïÛW=çðëþ°òÚßßqÍ·ÿâ†[®ûÝ­—ýà'Ï>ÿ²3ºlžäܧÆEí&™Y}Õ.ñÊ[VçMÚéÑ&uj$SM‰òÔóGlÿý÷m¥.”LåHTå+‡£r_ÀP824zó­w~qí‡~âÏÿÈŠ®¯ë¬Œ\Ó2¤&õõ»@®éééoï=\U›4£Ï­,óõDKg|$à|fÝg4MûÔŲ­:|íKûI“ÕMÖʘ|ɳÞýÒ_nöÙ'÷º|9!Õ1géìU®¿‹Ó-÷.¥ ‹€ÄÄúN%æ¡2šse˜üf{zæ\ /ø>I—òëS]IWúÇ/4VËeýªÎÎUf‘÷ \Á›LEøÛÀËr-«ÜÌï óænÛ6ü§ÔŸO'[/™U•ûï»—¼=$2 ½¿u佭Û¶ ÉML6¾·uãfùÙ²yËÐ˯o|çï6rÄ]_— M¶Æz¥/›“s%鮺S öeu’éœiPjÌFxŸx1»¹‰S Çlƒ×pÛ˜Ía‚)?¿™æ3+_LífúSùXÅÇŠ%‡ÃôVþº4êTg:u>I†‘Ùʃ\[›N‹åLŽ@Ò8³=W†Ô]!¡² 2Çd°Ù—seLµ”šÀ3ë^vßÌïáUÏ|ë7ÞõÐß–´ÿFfUG"#¡H($sd8 …††ÂCC¡mÃ#Ûäù¶ÙF~ÔLÌ‘˜\0hfϘ“df4´xfdèb;WªïNy,°ægÌʳêÄ‹e_›4tüT³wcµÁ5©£w,E „Ô°Õà0ǯé“Kô'Ú|Õ§w¹exåón>„ ÖÔ7¤G‘žö~“{¡?üÍ‰á ‰É=Ç|Ò-O_ k@ {x`lï!Ññ?\ÿ»s}÷]N>ÆÏ>µí[ÿöìS÷g_,["0 ÷>ö¬SË)G«+öÆ|üüÆ;[Î9mó{Û^xuÃàK¯ßóÐ#CCòWUUUóé'Ÿyê‘* # E¢CC#2Ø,?K ­žË¿‘ÈK¯l¸á¦?žuæ‚«»øãµ_“¸ù鵿þWOôNFRŘÌ}}Џ{¼s@«úrß3÷Ö²'U@~ýfù[·¨Í¤rò pÐsôx}÷ÿ˜²äoد}¡é_¾´Pò˜Õ5;³+[#R>¨ýðÞr3¿™;îòÒëž^3X»ÿ¾—_²àÁÇž>à€Ù=öäÈHXbb1‡£Û†CápD†”å_;bËCÒš%ë9rÜQ‡}ä!a}Çìœçcö‡« 5­ÝóçÔ.œ=*µ)‹&Úóh0MFVl‚ TxT¬ï_¢r1ªíÄewº†Ç%‚Aí/í.s9õµwÞóøÿ<ðø¶­C|øCÿ|æÉrKï_¾õµƒ$’ˆÙT–1æ„ÌòRÍ!7¨`:"ÛoݺMåÄt¹Ï.篣¡. ‹Ôõãß‹=@’@J³=Æœ`–Þøs>æ 1ÓV¿˜›ùÉýüÜ ’¬d ß|ëí­Û¶¬{aƒ™%CšõMþÔ¿jÖ ùWG†7½/ÿ¹û'¯¿éñÿëbYX"cÌ~9D´@ÿ $ÃŒ1ûïÑ¢‚ èÙåbs>lÉ'YËRŸÄÉÃ#2¦¬ƒguKÀ¨L/‘k-kóæ÷¿ÒÒrHÝGO8öp5Q†JÌ`ŒµàLj @(¦@º1f5E†ó`Œ¹˜‡ˆº . a±Ä¾ðáÿG›‰€%– ˜Õ„z6 y©Ó0bQ™C•#–š¤Yg0Ë\ÌŒ1üQ €Å`Œ¹¸þÔî=’,A°DƱO]öB,¶Ô}KB±ÈH,І‡cõ [‘‘¨üDG¬HXV]ÿ£‹tV†:A@@ `éÆ˜Ý¹Ër @”°€š^Y§#Ë(òKöGÍв Kà¬F”õ³Þ@4;Ó0«D cæÊ·~sÐ5@D eŒ9qÏ?5i†ùñ£TÒmÉRîR&mV÷*Ó1(ÏâkKüØ%ÚT,uyŸº{Ÿ„È*8ÖI*×Bç]Èû6%²Ð$ièL 5W†ÚXBmßÌ@JVÀ‰ŠÍ`sLf—ÓAtÌJê²& Ž× èÛ0¨¹²ZG¹Ä×f%{léX¶:`¶{úU•¡æÄP£Ë*kYÇÍ*t–%*¬–Û`š`Zeq¨| ©™*#[f¶C@ ê6؉pØÜ´DÍÇ,wûSqóà¤s /ÎV@¦Ä¸è’of»5Û!€ €@Y ¨3WĬǛճ̰mxD(̲å.ha‘‘ã¦.ikmE[ËÊX§•o¶;`†–—¬©u6koïo[³$~›3†žr¤óÛÌ›®½"¿R €”Œ€ÜÇlËÐÓ5­™YN9Ëí‚î°Úß—»­´œ¬ «7MkGoÖ»¦byogc£lÜ»¼«eIŒÛý¦qc1 € Pvr¡ÿȰ;0–4M«Ò¾Pò˜Ý?%ŒÓ8¯¥k¹®{—÷·/R‘3@@âI±cÆ£¦®ÁÕÐÁuýVý¼‡µ/^Ð1Xc-îŸßcÁ@£• € €y°ïõçûñåšÙõ}mçê.÷.mëk™—óèpMó|«géÒk~3sÞC €”Œ@jâ…,© J÷;Ú­¶Ú õhêoè4³äXô©¥ Ó%1›þÞ¬¦uI}WWý5'@@2 ¨¬Œ K…¡f¢ŒŒweê|˪=rYŸÌ’a1;ŒNy2j3³ñ©‹ë@í € €“*”<æ¼¢ v,îoïŽÇÙy-šÂ@@JM ž•S#Íê.Ù%þP7ή¨í™ßMFF‰iº‡ €äK`Ô³äfH¹®fç«ÿ”ãÚáŸöÑ@@¿ æÊ?¿ÁÑ@@2(Ë<æ29¶tÓKà÷w<"7¹”ë\cQ¹»¥ú7ÉõJ=?QE#æu4:k¯œ?ï¯òX† €¥/àDÌî\Œ’ÎË(ýcJ3 Hdü…Ïžàl‘;_JĬ‚fKîŠ)OÂõ$,ñr4RQ³Õsëí}OlÙ¶íâþt¦¢Y‡ €%"ÛsRŒLÈ\"‡›n¤Èر{Y•ä%UVTgÌÞG¢‹/=ÿÒ%¿Øºekë…ç¤É@(§FÂrÏ?u½ß¨ÕåÔ-K‚n”¹@DF•ÇóùcdXúõ·7^pvóýþõªŸÜ8ž½Ù@‚% ï–ç~è[—TªØX–VV:?ú~&DÌÁ:º´6[¤1æ1w“!i ²ßz{óú ›O›{ÒÝ­Z|5SyÉÆ €RÀÄÀI±DË•,«À¹²Êù1QµÏzÙ»0ìÏéôAë-2wè–×þh˜lüÜ„Èû»\wíóíW¯^¶ì™Ìí”Ñeuå_L’›£ß¾²ã¿®ëüݲ›·mÛö§û˼#k@@  :Þ¬L ŒehY/¯ª®6?•UU¾Œ˜…½¡}@…/íVÛ‚ÂÅÌÙ¾r#”&k¥jŽ4¨n]ïDÞÙÕ8‘Ø×²Þz+ºrå†×^ÛºiÓ–]vþÀ.3g®]÷ì›o¾wÝu>õÔúT¡XÌŠÆä¢@Iɰ¾÷.ø×¯]ø¥óœõÙÏœ2wnêÆ,A@ÒÐqE•ëaãjY*Y®úiî`¢34|ÛíšÖ%-m‹W ¶ó®}ƒkúêjŒQMQ[âÛã䛆IìûÆ#wßµuï}fÞyçËÕÑ™QujeŠeíúƒÿìÛk·ýêúÇw¨Ùÿ•÷bÞÝòÖ†÷¢‘áhd$ŽE‡cá‘§oû²LšqúÜ#Õì‘Ø“k_¿÷þû}Ó9‚ €ùPùWëÀX?L ­³2*dŒyŠú‘õÕSd$ÚϳKEÎ.\(·½ÖyúØæaò$,KßöÚË9‰- ºy4uY}mµRd‡ì/Ç.)‘ Ò8¯¥Ïk¤;^rúºÜí”⥅N҉䖹:ËÓäÏ@I¬xâ‰;G†‡÷ØcŸYû~$Š GvûÀì½wŸ‰V¾¹þ…š3í¦ïvïOŽùÛN[½¬yõÍóVß2ÿ™[ÿåo:\–ke¾9™fNžHМc;Ø @|/ 3˜«*%ŽÿèÚDÇîÁgYËÿ}Û£ÁŽÅ] ó›íÞ¾þºîX¬³QBÏÚ¶z“'1ÐÞß䄬}m‹-Ù•Ì![öÌ× ±•Öb;¿Ã”£µ˜ôÎVËîZnç[ô.ïjYâÔnìŒ Ìï‘ÈÚUK¨mêZ)áôR½gj]IKj:5J'–Æû ºÄ#/[·FvÚiÊÜ“]½z0«|éåï»ï÷O=yÇßÿþ\4Zõê+ÏײCMÍnÛ¶¨êt2†þQó1«šU ¬ƒfór|3m䥂 €“$`Æ’«$M9þ£Âe5–¬‚c œ«Y¡æÐðÝCýVT¨Àx•¼ÆcçÁuýVË<eª¼¾5ö€pC{·ÞØY¨¶´‹’áÝøv‰<ÑoH¶CæÞåýí‹’CØšÖU*ïor‚æx]²£Õ¿NZWê·sM]CW"Ø÷Ýfƒº»Ÿÿu×K›6î¾ß~yå•WîyðW]µà¿~rÁŒolÚôí¶ÛmͺéóÎþÉy—ô<òÌ»ýÏmzzðÝ??öÚÍw?7ÿßîüØÙG|îš#çýtÎç~l1Kjs.}¡h✅]„>§å£™óÝ3¯u·X·$þ£n³­l¤š~[ϵž ³¥Kid¢´l{ªöHן±x¯;¸˜7ÛãU²Û%¿Qäµ¼©&ôÞ«äRã|‰sŒ>m%kMÇð€ ƒ%@6Sb¨ðX¾3Õýu‡Äþ6õOËã-±¯üÓ#Ê9XõÖ1u3·¼eýùŽ—ûÞ©ßï7þ é‰e-ßô•Çnþú#7]*wÒ6ÃÌ™êÊ´®¡A½›Ü[È9…¾L{jóQZY/†¦}«õ.lêRoVùU½3§&·+±Ö dÞ%¹ˆÔ×N#uÅã-m°cœIÊôéN­Ñ,IôºµSÎ#ð*ãt-`¹Tþ]|ôEZ¥N6ÊÀÌxßÙôGE˵k–蓟òè¶VLè‚òlªdð°Ç”ô°²ýc2™esY'ƒÌ*AÃ<¼Kð÷ÒšÙõVúê«ïºúG÷=úÈûÕSv{ãõµ[G65¦yÖ¬Ýrç˯½="¹ËÛo?ã·­þQû£Ë~ÿÒU?üóÕ¿ºï;Wÿ·ºìO¦ËÈ-)C·µn‘;þR§.ÚÍKôÂuJ6ñ®Œ/œÓ±.¾¥û”®×éÝD9Éon1ù£Ð‰Fí(%Ûפêl §"ýDòô#ž¨aÖ&vÑWÛ<ºæYŽG½z_–¶§ifÌ´WâÚ]“€‰?^3–’_åþ€Ø#ÌÒgç½ôt½ç]ïYj?Ò}"oO©ÅsÏt˽Ka)LPÀ‡ùÊž=’+íRO ^¨SôcÔ–u‹ìÅî?ßã[š¬ŒQåÈ õpÏuÆ«]-³·rmé.Äõ<Ѫx™)K5&JÍåt²' ÷Ûo—=>¸Ó†·eŶnÚuæþ#ó^ze‡iÛí9 í²ë‡¦YÛoxûµ;M·¶Î¬Ù¿P¤rç÷8ñˆã÷ÝcÿiÓv{þ™'?ú‹¿ù–VÃÌ2Y]îDj¼:é1jÔóÒÕÄÂn«§+«zS/6Íj·”«Tפ¦|ðúÚÖÌSïüÄ®¦ yû:κÇÇ<»&»¤+Ç”¿Ø õ¯Z»Cz*³?Ö϶/vºï‰™öJ\»×rRÈ}V>KK6+2›?šsâ=•ÕµÚñßë+[2œÝ êéœÒ9Òô1ìˆYÂó#CωƬ/`˜q@ÎŽì°j® ¿ðâúU}몪¦<Û÷Üs„"‘HÕ›oüõ¥ÿ·²r»¡á-¾ëÖ·ÞÜ8uÚv¯¿þêwüöÑGîŽF+b±)k×þ¥é̆Ý>¸³]6ÃÌÁ°Sã%>•¯Z÷yÏKWeaƒ}É©ºr5›ŠS/-M;ë§¿«SwL[]¼Mήi·Ô+<»¦Vd.'‘Çìýçã8oF*æØ…0Èœùè–þZ›'¹}êÓŸ„?Þë,¯Õ¶™å¤Mú‡çfö‡·¶­¯Ëœ@µ‡šÓ-O_J¤Œ¢H~þa‡í}äÛ=úèÎ>§æ½¡ÁwÞycË–Íûì=|È)'VU¿uøsŽøø?Éü0/¿üÒ¯—ýò²ïþ“ó}zõãCC¡iÓ?ðÇ[Ÿjþô·®üùаL9§²2&–!ý7_¿½:#£P‰¾´4qNÃ+òT§ƒáØôפåÈ]i^œ¹Ïáê±[Æ¥#`f½Rãõ‡kŒkµå›Ä¾A¬\4FÅûáÞÄþðÊŽö»Ôþ §[ž¦x#€@NîØXP©âæQ³Z:¡3Ï9µ«0;¹3%Æ[ƒù”rFz¼Å°½dNÅo|ã3?ÿù—››Ø}]׿ùÜk¯þ¿w´~zÙÑ'{äÑGqXÝl+VÕ·ê—ýî²=wßéÇxú‡üã¯m¿ý^‡Ôœ¶ß‡-úʧ%!Ã\ü7±©Ôø¶¦¶äëÒ3®þÉüßüæ ßú·ód¼ø7_{àÁ»ß|óÍ¡áðŒ» ¼*©¡Pì×߉ lÜôæðð&¹Pî’-óDæÊ°-%3£aôýpÔ ÏKW;%õQŸŽ]`ÍgeØ_®jér+%U#õÒÒÔCè¤/®p2ö³Ù1µ¨¤%£/œw8ÍU¹c––yƒ ŽŸHU€'f†BôÎ 1g>å±V [^söǯé‹_«íõٔϻ¹Ò|ÁšútcÌÂ(Ã;ÎÅëúßœ8%1¹× "5¯’çòò8*ô $ÇŪªX¬bÖÁÇtþêW¿úãCNÕÿræqÿ~ÙeýßYÀÆP4ã¸÷±gN9ú ñ öhýþ/¿õÕ/î1sªÜÕï›×¾¶Ïô-Ó+‡{hàè6 ‡ÂydåðŽ{mg…fVÍØn»½_ùûS/m|ñ¸c™:í’–&‰›Ÿ^û÷ëÕñDognµ³×$ È©ðV÷DOå§”Iê2Õ PHùõ›óoÝB¶‹²È¿@ýqŸ^ò½ï]·ì>§èoœÚW¿úÕjõ:>Õ\þ«¥D|& ^¨[^«›`[ÿùå½eÌxó¦Ððú÷e8Y.õ;ü°Óß}÷µp¸ª¢rÆH(lUT®ñȳ4ʽ²eZfù7cÌ>)ÍæÈ­…æÏ©]8;ã-ŠÆèº=¹FòœcìÅj@À $Æú ¿juÿuË¿Äõ~ú)—ÿþpÓO“Y!÷ºÖ—ñIëî~dóæ;í4ý¥—þV=eǪª]£áá7^íŸ6m—í{ÔÿÜqãñ'½ëî»ÚÓe”JŽ¿'N)-T"L¬?jR°‰•ÀÞ €Pñ²ÜîÏi¹º9¶ºÙŸDÌr»¿ê*çÇ, `i2c ȳc–aæ³¾ÿÒW~ö²õÁYöÝóøwø±ÿ¶î‘á¡¡ÿxýå¼X{htõêå;nö5Ý}þkׄ#fdš jld¶@@  æÞØUÕUÎ Ÿ+*ª+eÊÊ©S¦:“;=È€ö“f#Y@f5ÌQY=—í'cÌ@}à¹ooØvxÃO<ðÈ›o¾¸ióßÿåÜc?ñÉãê?考öW¶¾ìOm,·Ìæ €%* 㪩S]±Ê?›ÇvÛoçt\–L©ÖùÍ<(9HTݺOÂe }%/YýĬYÙçCûÉóØÚ¿a/×Qõ³÷ʲ‹Î`–½Èc.¹wB@ ! 1°<¶Ûn{g‘,OÑgì謘2EFœ‘5Š”’€Œ0Kà«¦Š‹Å>uÙ ±hØŠ†£ÑP,2‹„$ƒ9Q?‘ð°‰ÊOtÄŠ„eÕõ?ºH¦×˜à LJI’¾ € PzO:eÇg8]›ªCåjµxêÔvÞÙY1mÚÔiDÌ¥÷ GZ@"f=Q†Ê²¸sÉþa;ãB%p–qe5ä,Óbè‹U2†3 ³Œ@«1f.ã„ €@é H ½t)èYY ¨Éåt¡’4*L|•<˜Y¥þ5¹Ë:Cž«HZ1Ë,<@@ D$–Øx—]f:ý“‘dyT«ñd1'Ƙe‰¬(QºUî:`¶{Zîí'‰€Õè²Él֙ʒ­a™9›%<ÖµÊâP±²¤2«õåHÿ@(a5”<}ÚÎ3GÆWë¬å)3Üé*„žRÂt­œdªŒ‹.ùf9 Ðw@H' 1°qI`uu¥Ì–‘® –#h›®½"Ðí§ñ € P8‰å1:0ÖѲš|Yæcžš˜€¹ª*& ×JF@@À‡&0žæÊ¶Ð÷)©¬®¬”[Zî1ey) y € € PVË;0¶—è{e ‘å¥üð@@@ ¬T œKÿ+¬j½Üªt…Èê)sY½;è, € €€èãQcÇòRBep@@@ ƒsV!€ € À3ï@@2 0Æœ‘‡• € €e/@Ä\öo@@2 1gäa% € €@Ù T—½å%ðû;‰F£1yD£ýo,“'ê•z¢6ŠFÌëhtîч{d]yIÑ[@ˆ 1ó^(/‰Œ¿ðÙœ>G¢–Š˜UÐlE"êI8¢ž„%^ŽÆB*j¶zn½ý¦ŒÌ=æcå…Eo@(CX,µÓDÌ©&,)e;vw¯Jò’*+ª3Þ³'‰.¾ôüK—übxxäô“Ž*eú† €" Aóè;`“ÇÌû¢¼"2ª<ž‡ü™)ÃÒ¯¿½ñ‚³›qÃí+þüðxöf[@¦€Íöj?cÌÁ<Š´:W¤1æ—¿u©»¤H4 GFÂáá‘ðÐHh(Úó;W ­kÓúwÞ;mîIW_·,ŽœyƉ¹ÖÏ~ € <}:Úü8——<(Q¤ˆÙÝËp$ŠDGFˆb5 IDATÃ!+o“ˆy8´yó¦p8üïWýØÙò‡?»‘ˆ¹Dßt @¯À¸Âª6áñèTŒIH"dIJNmþ~ÿù_© ÿûÌyÛär¿‘ð·¿rîGñîæ-›ßßòî¦Í÷ÞêÆ,A@H«1f —+]ùÌò2)€.þÓŒ@4q(îúË3³Ó»lÙ:ºóÞ'š]wúÜ#e2 ™€îɵ¯1§7c  €Á0apR`,Ñre¥ŽeÆçG-á‚À`nZŸV@2•uŸ:þPÉê…1´{·-Û†· Ÿ1÷•–ùædš9y"AsÚ¢Y €XÆU‰5²,YDËÏ”)‰þÉK5åJQ@ò˜£1õÖ7}ŸwÄ,c̒ʬÂe5a³%73Ñ6—" }B@-`F“c-« ºÒš6-ñcÂjÜ(Iˆ.¶Ç‰%+C͉ yötëЈŒ1ßýàS7ßùP÷m÷Øc̱‰„̃s*ìÇœŽAÏZƒ±0µ#½ +‚Ý¥`ÀÓÊÉH~[Ëë…½–zûOäÝž\j¼O©«Éí-µ!€€0að´©–óc–船ʚ>-ñCÄÌ{¦„d>æxÀlIVưžó¿jŒy8tòq‡Ÿyúñg7Ÿ"wÒVƒÍ9ge¨oÃÚ5KÔý¹Õ£ÛZÑëY­¦ù^^GüCJK&Ð8¯¥oMâoÛÞå]-ó­šÖU±U­5yí «¼rR°ãéÖôø1ËdUÖôÊÄ,±gИH…ì‹€/$`vßõO&]– 1<[*Ë%˜ŽXêÚa¹‹‰ÉÍpÂmÏ}Ò.ìXÐV¿2ÖÙߢ¦µÕyžv/®(™ŽøÐ–&ùO ¦®¡kyüo[;`.@+ùX•"ÈU ]`\Y¥ïb2Ýõc–äZû!à;Kîø¼ü|ãös¾vëY¯î¾ì’[ç-üÝg¿ø›ºàú¦­#!K¾©©ù·§ž~Í 'w|ü„«êº¼îð=ðPs“þëwýå¶•÷«Tæhlô=¶³îéàŠž>58åñp‰•ó½ú¡w{í û$°N戟 µAâôpº¢:šT¯-MºÀQ›É’¦.«¯­¶B†v:ßFö´öމféI/eó ß Ô4ÏwBæDÀìœ~Iz3»OË$ž§|"Rz9ÆÇJjqŸÆ4ËSÊgŒG@¢bùÙÎõ#±ü¨ˆY.ó›æú1+ÆS8Û"às™éB*¢‘°þ Å"¡hd$E$Sy‹ÊW–‰ä$CMŽ!1´$c éüf¹ùßq¯?ãäãšN›«v—af¹afn†:¯³¸½ kÕØ³z ´÷791m_Ûb«[®léjªX ŸÊó¾¶¥ñè5¾Á@»Õ¶@çD§/jͼѻ˖=ót¥+­ÅvBu_Û¨Í;¥>«¡]6K Œëž{w$"{š¢[ºtÙ½Kã=Ô%%½Ì “½˜$2÷¯Ó0“’á®7»7sò'³åc}¬·;Ʀã]­‚îñ?ä›7þHBÎ\Ö˜‘ïò&K>ÐÞ ËR—IÉ…Ž $UCZNz™¹:Ö"Pt2÷¬è]ÑcÍ7º&Z”Í›9õ‘Ú£t+]¾þ(ÙXûÚnyjÉ,Añ ¤ ŒíˆÙŸuMÄ<~^öðµ@TnöŽt#Ã’¤öl½„ËáðȜÛ{±§Îý„$d˜‹ÿ<7k¡ –üŠD6â`G‡ g×[ñ ‹;ë ñ³{ôõ¬Ð—ð;Ù¥·Œ'cdW[b«4q6\ÓgÎ/«†¹w[%_ûæì¶,•o|÷Ëñ6‚í˜D2·5µ¥̦ ®7³Œ9ǧÖ³:Í'btûÇúXMbo© Lœ»Ó1PB 4TÖ² {=ä†Ñ÷ªH$,“7G-}·?=‰³D̉©é¼JË´L’êæÈ…tf#É^%Ï;Úã Õ¢lf«¡~ŒÚª˜TFŸLÖEÖE™JãiêD¯gÃ%£©I¶²ÏÇ·ñvQûâZUtCK‹cNœ’–‚j\9ú%|/ †€=æ¤÷¶eÉÆM&¢¥Åô«1åáÙßL+‰É=?¢é–{VÀB˜¨@Å…^xÝu×É S§$9 ôÝï~÷Ê+¯œhÙì@^î}ìY§¼SŽ>(û²¿ØÕ,‰7^´2u—ÓÚŽ‘áç{~òxêªO¶D"æ÷=ö™5uêôã?Qâæ§×þýú_u<Ñëù–ZF–Èõb'1¸@uP, àȯßqýÖ…à \~ùåW\qEÈuw³©S§~ýë_gŒ9¸Ç”–g+ sb¤ÍÊH¿Jr2dæÃ;ô€ë¦o·£ºEvD¥2g[+Û!€ €@©1—Ê‘¤é"¡ˆ$fx®W«Ò$lD%ýYåaHJ†ž%#¦&cÎ}v9ÏêYˆ €A bÂQ¢Ù0¢¡ègÿc®Ì§ršC1 ˲ÌÍ, ÊáèçæýXå,ËX´z¨u*ƒYæ_ŽFW¯]»aãûÕS¦Ùp¼šý0Æ,9Y'l(MB@@ (&Jv0K3ˆ˜‹r,¨@@À§NÐì´ˆÙ§‡Šf!€ €KÀÉÇ0Oˆ˜‹u ¨@@À¿&V6iÍDÌþ=N´ @@`ò’˜¥DÌ“¨@@À×4»³™‰˜}}´h € €Àd ˜XÙ.KíDÌ“y¨ @@ÀïIá²4—ˆÙïÇŒö!€ €L²cÌ“ Nu € €ApÂe“¡!M¯Rói+øýD£Q™)&Fô¿±hLž¨Wêiü‰Ú(1¯£Ñ¹Gzì‘u®œ@@Àï%›[d›yåLs‰˜ý~Øh_~$2þÂgOpÊŒD-1« ÙŠDÔ“pD= K¼…TÔlõÜzûM+™{ÌÇòÛJC@ ¤ÍDÌ>"æI¢§ŸHÀì¾ëŸLº,bx¶M–K0±Ô ´Ãr“›á„Ûžûøzá`Ç‚¶ú•±ÎÆx+kZ[ç¾n9C H5u ]ËãWÚsšÂg³¨‰À„œ Ù/?߸ýœ¯ÝzÖ«»/»äÖy ÷Ù/þæŸ.¸¾iëHHÆ’ojjþí©§_sÂÉ?áªú£.¯;ü_<ÔÜÁäÁ‡ÿzÇ]¹måý*•9}íz®Ç;š=ñ3»‰³± {eƒ¦.«¯­¶Bÿµ,ym?ôKµ…ªeáBÉqí3¸¢§O ex¤Ô•Tnr5Šb¥ PÓ<ß ™³s(éá>;”xžò±Jã³)µx~øÓ-O)Ÿ "æ|(R†ßd¦ I¨ˆFÂú'‹„¢‘‘H8‘Lå-*_Y&’“ 59†ÄÐ’Œ1¤ó›åæÇ}¼þŒ“k:m®Ú]†™cŸ+£¯mÍ<•±²¥¯m©Š—ª±_ýèllì”’Â1 ^ÈJy­+[º§Éƒî]XÛ3_¶W[Yñúúëºí"œ£ÓP—9-$¹®Q Kj§ß9íC *dî_§3 iêKþXyn6ÖgÓs'"€@¡ܹÌ•QhmÊ/¾€\´'9ÈלuKjSÎÞzJd$ºü;7%9真EÂ’Ž¡'•“™2bö“ÔBƹ¤¡}‘é•Ik±|7ª3¿Msê¼S#Í ³Ú¡¡Ý³¦ÁuýV_WmE›YÛ2Oÿ·a~sJx¬S2S–º Mª+©a™ÛéÙ6"p ™­+[›×õ7Ô-Ý™,?c~„¥TÏϦ "×¶õ™:+ºä¿-&«*Ýò€SÓ|ü) A³Š,‹1f Z•OW‡¼ç¸Dådz²p($÷Ç~tUÿÝ<ü§{ËLTV†÷Æž%d»P]H$—á-eòÉWùjl²ôøó@{C†òä›4þHä)ÞÞ}~Ù³¤Ôº’–¡ž²P!sÏŠÞ=VÊ¡Ù|"R?V©&é>›º|ýÙ·?àö‡;ÝòÔ’Y‚ù bΟ%%ùU *·Æ{Gº‘aIÒ{6\ÂåpxdÎá‡Í=áØSç~B2ÌÅžO|¡| Ê£9ÿ›(mpMŸ9]«2ÓTR3»ÞJ›±áÚ§¦uIKW“+(ìèp§F§©+©aÞíLÓ4#|2·5µ¥̦k®O„Œ9ǧÖ³:ÍÇj4ËXŸÍà#ÒJ@€ˆ¹"]C@²–Ó1Ë ÿÂ#Þ©É‘HX&oŽZún‘XXÍ•!cÌÞgleRó-H›‡l®í«m«_¢æ¬RSZÙWþ5.j·ÔÓŠkêÓŽ17vØ[©r’‡©]M“„Êöþ&ûJŠV³ûBÀÔºâ—,Ù Kz™±Ï¬D dÔ°gšSò'Â|Õl¹ÕbúŸú±òtÉôÙ”˜ÜóÌQºåž°&*Pqá…^wÝuòwJ’“@ßýîw¯¼òʉ–ÍþäUàÞÇžuÊ;å胲/û‹]Í’˜qãE+Sw9­í~¾ç'§®úÔiK$bþØqØcŸYS§N?þø%n~zí߯ÿUǽ©Û³(Uùõ;®ßº¥ê@¿ÊAàòË/ÿþ÷¿Ÿ_|ñÅ\ùWG¿Üû(sb¤ÍÊH¿Jr2dæÃ;ô€ë¦o·£ºEvD¥2—»&ýG@ üˆ˜Ë_#¡ˆ$fxö[­’kú¼QIVy’’¡gɈ©É˜ó1»œWe,C@ 1ûøàд< ÈlÑPô³ÿ1Wf‹S31‡b*–d™›9"Ï£Ÿ›÷c•³,cÑê¡Ö© f™9]½ví†ïWO™zdÃñ:hö¯óÔRŠA@? 1ûñ¨Ð¦ü ÈÍJôÅê_ Õ½Hä_})Ÿ„Ëêæ&:V–4 G«¨YÝK[?æ4³û^ûVO™.á²NÌ bÎïÁ¡4@ @Ä€ƒD'(pë¿ß÷ÄO„B!)géµËæîÌÝvš"¡¯Š•%íBÝšDe\¨é–%,Vó.«ç••ÕÓ·Ÿ±ó.»WVUK ,ó—›ål »#€ €@àˆ˜wÈhp.|° Ëž;ÍÜ〚Cö˜Y-1ð_W?§&S·%Q5…œÄÐ2›œ B«Qæ¡ïo]ÿöU–x¹î£Ç˜Tæ\ªg@²smÏZ`ÆŒfÛªê)Ûí0c‡¦HRÆÑG.761÷%‘Y–¨©—c–ÄÍ2Ƭ/øSÓ0Ë ´~©Ç¡õ­2y € €@Y 1—Õá.ßÎ:+ÊØ±LÉmâ-sVÌê¹üÇ,Qñ±Z«P#Êêy… —Õ,zº Ù™ €”™s™ð²ï®L€!±ïcO¿ª/î3ãDz,žÇ,Á±Êo–ÿI¬¬þÕù:V–ɘ™*£ìß? €”§sy÷òíµÌƒqÑ%ß,ßþÓs@¿óøÍØ#È7]{E›OÛ@@ •E¨“*@@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ŽspŽ-E@(†s1Ô©@@ 8DÌÁ9V´@@ DÌÅP§N@@à1çXÑR@@b1C:@@‚#@ÄœcEK@@Š!@Ä\ uêD@ð«@L?Ü­«ökSi € €EpÍŒ1í0P1 € €@ ˆ˜q˜h$ € €Àd$åc˜*‰˜'ƒž:@@‚"šÇLÄ”cG;@@&OÀ71Ož;5!€ €ø_À˜až1ûÿ¨ÑB@@IHÊf¶#fÏçIm•!€ € Pl'Ã'Ƙ š‹}€¨@@À&0vÂãQYC IDAT;8D4@@ ØÞc̦UÍÅ>:Ô € PL'5Æ,/”‹yX¨@@ÀONxl‚äQyÌÄÍ~:R´@@`²Üñ°óœÙå&û0P € €€ŸL ì“g—c˜ÙÏǶ!€ €Z )%CªSsRMÐ\èÃ@ù € €~HЇG1;µŸ;@Û@@(€‰‡“¢âjS™GWTT¨zŠE@@ÀÿKHìÎÂH¾ç)þ?Š´@@  îpY*òÈÊ h.è p@@? 8á²'1û¹õ´ @@‚ H”ì<¤"4'æÊp´Ž € €€ÏœafÓÎDVFÒ Ÿwƒæ!€ € PÔ¨8‘•!õ¥®.D#(@@? ¤c66«ýÜÚ† € €@L³¹ò¯@Ú‹ € l'hNDÌÜ»$؇”Ö#€ €ä[ÀÍŒ1çÛ•ò@@.àäf˜~سË9ÙÍI«ÞYš € €ÀøœÌ ¬ wvóøJek@@JW`Ôìr¦›$4—îá¦g € €c¤Ž#{ÌÇÇšž"€ €ä"@Äœ‹û € €”sùkzŠ € ‹s.jìƒ € P>DÌås¬é) € €@.D̹¨± € €@ù1—ϱ¦§ € €¹Ø331ç‚Ç> € €e c&h.ƒÃM@@ÆHŠ=îù—ºÑ¥²@@Ò ¹t-=C@ȇÀ¨1æ|H € €[ )ç‚1æ`NZ € Ph"æB S> € €@°ˆ˜ƒ}üh= € €@¡ˆ˜ -Lù € €Á böñ£õ € €…àž…¦|@@` 0ÆìãGë@@ -ˆ˜¹Õ_¡­)@@ ˆwÉb7h3 € €àž‚¥X@@@ 8™±XÌt€<æ@H € Ph't&b.45å#€ €UÀÍDÌA=~´@@`rˆ˜'Ç™Z@@‚*@ÄÔ#G»@@&G€ˆyrœ©@@ ¨DÌA=r´@@`rˆ˜'Ç™Z@@ “c˜‡»­DÌ8r4@@ ˆDÌEħj@@p—ì$šˆ € 0ÉÎ ÿ¤^Ƙ'Ÿê@@&@İFs@@ 'À•…³¥d@@0ùî3Òæ1ßûس%ÒiºQм?Kñ¨Ò'ð¯¿uý{lhÙ¤•1)ÌT‚ € ¤)™ÓŽ1Çb±àtª[úñ ÎÜqp] v,‹.½W3ûñnËbC6A@ (àÄÍi#f÷„lE§pùÞGË4b>å˜Ù¼ýÒ¼/XŒ €E +£èT‰ € àO¤| ÓÈ´cÌþìC¹µ*4ôþÐ{ïÄ¢‘rëøæõ/”[—é/ wŠÊÊ©;Ìœ¶ýÎy/™(ms®Û¢LÄìë#>kÏ]<ö°©S§øº•hÜ™Ÿ9£¥R$ P^##¡ç_xíõÃåÕmz‹@žÜ9¢deä µ0Åì8cF†Ë…±¤T@ ìädƌʮÛt|d;WF>ꢌ TTL¸ @(c¾GÊøàÓõ‰ 8ÃÌjŒ™y &J  € €¥!zñY¥qdé € €@¡ìˆ9çaæS™ÝþƒËÝ­“%¯½òr¡Ú[nå¦IÊX¨n 9‚ƒƒƒ²Ä<‘µæÏ#çßŽŽŽrã¿ €Všïd@`\‰1f'´×þ²ñóÏ­{ü‘Ç»Ûg'àñ«N"ã~ý0!²g92%Š™e``@ž´¶¶zn™´Ð‰¼³Ù˜m@|/àñ=âû6Ó@|!àÎÍÈCVÆ ¿qCçÏ|ѳòhÄŠ+æë‡<)ÓK@@ ˜Íʶhßpàì[z~“ÔÉÖ wÚ†<—Ñh³PžÈ.æ¹³¯¤s˜%ò¯”&Û|õKg“§èu{ ôôô4ë‡<oeX:édœ9sÌ’ÞÞ^y"ÖÖÖš”÷ªñVÄö €¾ðúñEÃhðÈÊ0aÓ¸zÑvÙ•×ýtiRú²,¼çÑuòó§·8«d4Z–\ÕþËï´]$U˜ç²¯©î‚s>uÃÍw™…©!ø¸šTª›LŒý>fHÌðhØ$i¬\¹R2›%J®¯¯7ùN‡$u$­ò,… € €@9ä!+Ã0I¼ìw¿r“9ÃÉî…ßYÒ./?~ì'äßcŽ?Ùy.!µ‰ª%h–f‰§_~ñyÙìš_ßR‡!]+R.Ù0)f{IÌXºÔþc#] îå&¼– Yþ(jjjZ³f„Ý]]]žfX•M]lƒ àÔï?´Š6 8¼Ý%[¢[?v.”ðW¢^-‘qeV˜]çX¨§œMkkk“ºÌ¿¦RWíˎòR"f‰¡eÔY†™¢$bN·j\Õ±1 €@1R¾GŠÙêF °yc?6¹òüÕW^ª=øPy"¡óÀÚg²ñÙgßýd3w2yÌIn’)ÑÐÐ`’(Ì¿òRfÃ+Û˜DŽÔe™F£½½}Ý:õçMÒ#êäMy €”¨@ÞÆ˜ÅGBÞ‹/Yd’’ͳäWHÜlBçl%‰Y²2L g4ŸuüIŸÌf¯òÙfùòå’‰á”…î±áÌ’Ä,Yfˆº¥¥eÞ¼y’žav1cϲP6ð\•¹dÖ"€ €¥*Pqá…^{íµIÝ»âŠ+æ~úüRís úuÊ1³ï}tÝAûðC{Ì DƒóÙH™²#Ëg”…”«À«ëß}öŷʵ÷ôq Üçï¾ÿýï»§Á!Å‹/¾8ŸYãn; € € à{"fß"ˆ € PT"æ¢ò]99mÄ €éøIoò bΚªF£±H4ZŒš©@ ðò ³¸,$ðÇ‘øA Ÿseø¡?%Ö† ߯¨´r¸ c >$³¾µ1Ð] ñ €€䊥›·ú¡%´  1ûú¾»i«üøº‰hœDÌϾ°¾S$ € ‹Y¹¨± € €@ù1—ϱ¦§ € €¹•‘‹Ú$ìž±“ÜÄd*òaÒw¶Š&!€å ðÆ+/<·îÿ½¿éÝH$\ý­ªªž±óÌY9x¿êÊ¡¿ô1g"æœé »ãƒ~B* ½?ôÞ;±h¤°•ù°ôõ/ø°Q4 –@EeåÔfNÛ~ç,›-áòë/þíKœ·ï¾û–ÉEçrqä† –/_þüºÐ³ë³„b³2 böõAŸµç®{ØÔ©S|ÝJ‡ àKP(üÜ󯾾q8ËÖÉèò¿ðÏ{î¹çû￟å.%°ÙN;íôùÏþGÿÙNÄ\G³p] b.œmJÞqÆ Âå<8R P–S¦TϘ±ƒ•uÄ,É2º\Vá²¼/†‡‡wÞyçm[Ë脲ü4L´ÓDÌ,ìþÜ«©°À”Ž”¸Àx¾G$wY’1$Q¡ÄMèã`®Œñ›± €%*PžáryöºDßÂ…êcÌ…’¥\@‚(@øÄ£F› -0Ñ1æS™ýÚ+/ç·•R`!ŠÍo#'©´4IsæÌ‘gò'î–x^Ú<88h6NÝ~â½èííu ïèèp 4ËMódiƒ³Ê´Ç,qo–Ô˜Ô¾$•“ôÒ½»» gùÂ… ¦š'îgC‘Ú¤löb@ ˜i¾GÒ5IÂåÜ3]»ï¾;·BЏW:–#`&1çÑщ’÷Ùw¿{]'ÿæ±ðÀ•ü«ÎÄ‚K–,1¿Vº»»%ètz×ÒÒâ~)ËeûÚÚÚ³}}}>§Î‘ºšššœÂ{zzœT–¯\¹rÕªU©ò555ÒùWVeØ,µ/©E¥[â®Â ¬;;; ‚ìeÚÜÚÚš®÷r§„‰4)›ŠØ(€@ò÷ȘUä¶J±ò;ÿwÞ‘eê‰Ü )Ö^cš°>Š˜9Ù,X°@"ÑÆÆF³±„†ÎsY²hÑ"™TÒ]ŽÙÞ„§²\¢ÆljÉr›Å‹KcœÂ%|okksöu–g.-Ýf©}É\Î$¬õa“&¡×Te%sÌ*Jfßý÷ß_ž?ÿüó9U”Ëê(ÓÙò1›œ 0–ŸÇyÐiÓW¿t–{aû.7/å‰l#Ïåß Îù”óÒ${x–&ßÒó³»<‘¥")?‡þû}—ÑC2`Ü××ç‘Mûe¬×ä?HôÙßßï¤@¤Û^örRä‰)DFR y"£ÅI© fxÛ,”]R —ÚÌf²Œm§K{0£¶&ÉÁÙ,©ü¤¾d8RRNjk“ªpº™ZNR½²“ôb@L_¤„ì›”Z K@B|ûÛß6¿–eɍЯ=Ä<ÑfÞsÏ=çwÞG>ò)h·Ýv»ôÒKå_yþ /Èómd‰¬2OÌ–²ÙL–Ë“SO=Õ½±{÷‰6‘ý¿@þ#f‰z¯jÿ¥¤UÜpó]ßi»È¾ΞüÉ&Y(??öÒζˮ4/ÿ´âÙFžËBÙE–»{áYšlðò‹ÏË.RÑu?]:þ^x I3·^6V¬XálãlïÄ”&žvRºººœ[ÆŒå/{6–d )Á»÷Þ{¯^½Z–H”üo|ã¶Ûn“çò¯ì"«–-[vÍ5ט¶˜ÝO<ñD)ù‚ .X»vmNmL»sæwkE Ïs–¦ãÊð³c®=øÐ,÷*ÇÍFÌ&í!éÚ¾T"5Û˜à55‚”%õšaTÏqâÔ2ͳ‹ü+C¶©‘b%†Î-bN-ß,qú"/ÝM5šH]î>&õËüi!xR»›”Šå €À¤ ̘1ãüãI'$'Mþ誓^Æh—óûp¼O¤\³Ë~ûíw衇¾ôÒKæw©S޳Y./eKyþâ‹/Jü‰O|Â<—e¹<äD¥l#¿çxೋ,1ùÃÀ)6_OÆpauÙ ä9b6\˜ôe ‹%ãBFe¡„Å&áØ€ËÀ³ ”Íðsº£àYšçÆ%›ÇœÒ[É `׉ä$p”çòpO3ç¾@MÆd`8©ÙËDŸ&ÆM©Äc‰M“F^Mcœ­¥"©Îcç,y–/û¹û"¡ª\Èh [ºt©Ì\‘EÁcl’®^’—¾˜Q¤"¸þo SV#€À¤ ì¹çž÷ßÿ8ñš%æôªÍ¾?óÌ3³fÍ’bœ…òRžK#e¡l !¾ $ËsùF“ß·ò¯y~ýõ×›ç¦ 2œ,¿rŸ{î9³»œt7M¾t¤(Y’úĽY6ÏMD>q=J(aöîÝݰ{ö{‡YÏþîyý>ç{O~÷xö^¡]ºý`M³Ì¡}—"Ž2€€@jp½dKn.\¸v†ÐgMM Ÿ, å’qýúõ<³SxMŸô•>ßzë-–>qâ夃ÖGÖ¬YCg©8¥™ñ™gžÑWNM³ÚxÂ…©5LèíàðЯ^~ùe¡á²²²â’Ç¿7hQ p×øÛ¾?vÀŽ4‡ˆ(ì£õQ«øÕa%I’- }IÂ.%É`¡ ÉFà«ÖïÎ4~ã°W‡+÷?÷Üs---óK“-??Ÿ/YY*GpÄ5ºÃ¯íرƒÖÎx tVZZŠ·d»FšÔiõ׸öœÔ=¶î\ú’„]²æ‡3  ¾XE™ÔÏÊV¬Sßx@ˆ˜Uƒ€€@j`»~S«Ï±÷–¼Ž½Ô 7DÌI>¾QþÈ9ɽA÷@@›@GèÿDS옆 ®ièò`Ë0õÛS#fºB •äJš¸ü@†7?ÐLNÑ+Ä ¿ AE}¥”ÃcdέMMM999===‹Hmøðáííí™ß&/p!qBkÌ|ƒ3BçıvQs[G·Ç«ÞÒ¸(‹"  iN€þ¦wtõ:‡P0aòñãÇ/^L«s^*ÕsvttУ9 'ޓꎠÿ %€] ÅkåßuöÒ¿XkAyp@`|‘/à÷¿ö·¿_íS_×—&­.S¸|—oFšø 7Ý@ÄìŽJ€€€„&Nþý“Ð1¸±#flˆ'Jƒ€€€ÈF?)“mDက€€@| bŽ/OÔ    qW÷ïg?ß\Ëžu¥»S3‡Ý”}¥§‹e@ h€ h€¤ÐÀeÚ–ìñzGd^:kSáÓ³nݺýû÷ ÖíÛ·W¾ó‰¢¾+S}’y0 ZX¤Á€ h€ h@* ƒC¼CV,üáŽ;ô¿ë£@¸´´4cÚ´i%%%BÄ\WW×Ô¸Ößç¡g{3nʹÕ­ŸHƒ4 @Ð4 @ЀlȾ5àï÷x2î™xÛœ9s„'a>|Ørùíc J à\óz2XÙ?¤Á€ h€ h@B xÕpwä-c…mü«åsõñ3´!ƒ½^ª}*Ø“­ >Æ”]àÐ4 @Ð4@ðÒoö<ʲŠLט-Ÿ•‘uóm=]ßz4„Y·¨iFip€ h€ tÐÀ¸Âܼœ`Öˆ¡^±QOåÏ@Péîí¿Ôí=áS g 韛%™Ë½}ÁæÖËÍßôËNtk:–kÌß?Gp×Ũ8@Ð4 @i¥ÜÑ#ÝwϪU« ¤y#2=ö¡­­­ººúлõ/ OB;j˜Ä.ÿ³öæÖÞˆ^>g’é³å>fVcÖÍcX‚>‘h€ hH ÐRëÊ•+sss»»»/Ër/ÙÙÙä×c³Œã(·Ëãoω*¦å™YÂpx ªIDATr¹úøY<ƒ™aE À€ h ­40ozÞï~»BL!r’àëÈ‘#7nÜXûÑ×Bœ“.GÔð²îŒnÙxçÁ$;8@Ð4 @Ѐô ½Ë´C}›t‡>è×c:¸ìD·¦7E–kÌØÇñ.D¸3C~¦0ph€  4°ðÇùûöí£í¦ñSJiyÓ¦MG?lv,˜‘'·ËlYÝ>~‹~3=X.¨í]ÖHƒ4 @Ð4 ¤‘´ XºõeÕ!î›Äx²»ìèúµ¸²\cV÷1{B¿ Hk— 8°éÀ€ h@r ,˜™·wïÞ®®.‹Ê¥ùÝ_ŽZ©T¶ÿa¾Yy:¹{òGÇž˜¨?ij4+íØF?þ{ê©§jëµ}̺Ø&.Ÿ¯˜;cÛ'ZW¦î]qÜC‹ŒîQp—#ÆrËŠ±YÃïdÿ ò0¥‚8@Ð4 ¤³hôã¼Æ|þ¥]§}ôÔ®—ΛW¬6hhÓÔh^Þ™•©Ú¨mfqV‡Y®ó/Í5£aË·¡ã@°¦Ö,[ 6×(¸ËNô¬çÃÓ–kÌë´ç1cUUCá«HòŒ5þo4 @ÐÓícÞ³gOgg'û —Ï/+æ­SPÖÑç{OL0ÔùÞ“£wOªΘ E£1ääälÞ¼YÝÇ¿¬©V–/š0aÑr¥ºæK^#…š£Õc^ÅÙë­˜ãÑ ^‡•V]6BÎýçѳp™âÜÐñä{Zåd˜WQ²Î«à$Â>Êh0¸ì›¡˜•ïz»P(´ÆÌžŸÂÏmß¾]ÛÇz)$-Ÿ#MpÀ)À€ h@z ,˜yûîÝ»/]ºd·Ü_Yò åGÖŽW®§åøæ‚Ç•¿6Zï/WÊNRS£Ûv åÆŒ³uëÖÚú‹tF?Ž1¹¬÷ÉТf §öM {÷æ*ÍçŽþã'êépiž_-ºäüGÖ6†k0oÀÆÊ]ލÛeÅEžÇL1±þ%N¢oäacà @Ð4 ȧ¿ß%~GÃ;ƒKf婿ÍZ,±FM64œþÁÓ?½W³>¶a…ìï³0Ư'ä.…UU÷.÷õ?ýüŒi'k6Ò›Æ “ywåª_ û|ïÜÊé†rùƒŸ®Øð˜†‡DFù´üþPQ­n*¨ñ‰þà.;¹NM#oñ-ÙÕBç´£rõêë¹LN[‹œG}ªjä’ö9T¯ÂGÈá°©²¼¼’™ô0„t¨,ÐצšŒí{3à¬s} !1ûj¹Æ|°î Ê1Gžô¼óƸcÜ¡h€äÖ=ùÙgŸ×³iv£Œ´àúüóÏkÏcðT4ZV—Ûe¶¬n¯[<Ï–]˜Xa À h€ì5Åfªe¥¡7õ=Õüˆ¢¿úûSß&úü”¶\c¦ç1+á;õ›H-p`òp€ h] fämÛ¶íâEõ¡Å’´Æ¼sçΣÚó˜õ±MZ¸I·Ë#>YPƒ“èy4ph€ h@2 tÿïZSSÓˆ#h‡ªLǰaÃÚÛÛ¯^ Ç«÷ª"½ËN®S!$f_mÖ˜Õ}Ìêó”ФÃÁ„‘p€ hV…c³æÞ{÷âÅ‹éuqá@†ÿvttœ¯öZÚz¿h¾lÇ ­=ärSsËÐ ¾Zš*nÙõ“¹üõåLžÉè;¿®­*²Yc>kUv€Õ³åmEßœÒ 8€4 @Ð4 @rkÀô6k̦X`H;Q¯13B¸‹h€ h€ tÓ€p¯€5æ´»y‚à    ¦¢^cN·; øËtà @Ð4 @é¬ÓHÚd™ò:t¨¾¾Þ´Œ     %™3g.]ºTソ¦´´ÔüyÌ”õÁL6Ôã¤êRRõg;3ÈÍ þ¸{øká­Ûòص®g@¢ @“Õå9˜óR"Ú2Öiï©ÕYNÓXa Ó/+çɸñ’…#Å„/±@ŒCÏœU#fzõËìÙ³ç­ 8a$÷Uª÷n0=uØV|³é‡[¨ÙaCNmžÄ5ídäyX‚R¯ôÖI'Fë>òƒ@ª°º„Ùõbu–ym󷉟2Ö`´ÄÎÐ]ö¥„³6ÎRÿ)3Ëo•;­Ø Ä^C¢{h¬?âœLx)žÙ^™¼ˆiåú>XTì$QCB PœLõ{çÎûúë¯Ç·%ÒD"d‘ jãë{âjsè~"È'Î)w5'ÎGazUÿ…ÿÏOë-ÔöUø4–bžr»;ÇQ ä `u ;¿@¬j°âÃæOÓR¦F«zÚùtá0?Ï&ô3"ûγڢíÃ`æü HÙHéú±ãvžà¶ÏÆF¾ÁD¶b!@qòÔ©S½ÙÙÙT Ÿc©ÎX6AWB‚ª5ößÊrc; ̧V”Þž8V(k‘Í€Â4Êú²ú¹ó¦ô‚„ƒ©B€.dcW4ŸÄráó~g$cÿí-7öo–}ߨÙñ§ÊûÎ8óþðng{²ðj…³TÊ8èú>è[qBy’‹}>ŸwܸqÓ¦M«¨¨HDМ ®&¨ü w~A&¨'ÆjùTk<Å-.º-LjÂW›¶d:ÅÙšN£ä)³óO>?êó§T™ÁpBÀj bWGÄéE‰›‹X\_ÄõõÈ[áÓ¯ÖhÑŸ²òÝèˆ ÕÆæ׎8i%¥óÀãb㨟½Vƒ±Z~–ãb9é«>37¦4Õ4é<ÅÆ!OŸ>Ýï÷{Î;×××÷Á|üñÇäÿ#<2k֬䑄SCvÉá8ÆÞóØkpØÕ˜ÍæO › Mû&”²¯Ä´Ab!¯Ù‰ê±¹~­Z¡"V§bqJÖ²7œ•Í[1·)bsʪ6Ø“‡À‰'Þxã ê…ËEEE™™™žÖÖÖþþþÎÎζ¶¶ææf¬4'Ïh¡'    7„í]ž2e ­.S¸çþ {IEND®B`‚PK !ùB¯wÄÄword/media/image34.png‰PNG  IHDRp¥õj\õ pHYsÄÄ•+tIMEÜ "#wÍtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/10/17 11:29:34 LIM_J SGA250167§šÕð tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì] `EÖ®ÉÍ™H7!\*‡ œ ¨ Ï6xï«î « à.¢Þ èâ…FP¨9ÑH {î³ÿW]3“žéžÉÌ$NòÚ6ÔTW½zõÕë÷úÕ«îRì?~‘à ˆ"€ µC €ã¸ÚQÀÚˆ"€ ˆ"@,hPQ D@Z#€j­!Dˆ"€ ˆÕb‘Âá調}°Ûv¡ËC‹ßL8úê+‡îXúú=àÒOhBªž§yôGþßÚÙý…5mM4[£žÒ–ËX=sCÇÅoNˆ´ff¬yøð€õ‹jCÓ>„]ëôˆ‡@Öª§pEÜc. QÍŒäXKfºgA$NöAq®çqgžüÙX¶×¡ r—\yBÒ‡2žÃâq‰*µîumG§Ö HtÊU´uh ]±8rîµ*¨mÇ]1)È7!αwsɃ¦°H½!à*‚Êj &Ú¬&G"—|™l@yVÅUEYÑw¨gm¢C’­Q*@üxÒJÂÀ;–.ÎYáŒÃ8‹ë`ïˆ'D|(cïZÑÖ…/~”6`q’ͤ»&VÝS×eª¯ø‚ԮƼ0mÞ+kŽ|9Ëá1ÆN_ÀŒäXKfºç[0ÜÀüü‡ žý&%A²ŠÄ%é¸ÏLHYûM q@²–"í¾EÉ«Ãâãˆ;5Zû^×rt|eÀ—îó·ÿÑ”þ¼˜å‘ü¼£E;Ð{±¨¨ KÇ ^©‚Zv\rô2ÅMˆsìUÜ\ò¤-,SOpÒ*¸­°\ÉÂI¸¯n.yΤ{"â«âÚjÑyï‘#³ây³qôÐÞ;Β쑤¼(RÍjDâÄßþ|¸`üÄš-ª âÂZí;‘ƒ–„“lH2Ó=ÿÂ*ñ)ÿœ÷Oû¸8Uô¸û¦Ý_½Î͹éìõ„Åç^û\ÑMÇÝ»êS»pûçZâAÆ‹Žì”<9ïr!gi¿ÿÅÝþT{ªO’Ÿ¤ä2SÜ„8Ç^ÙÍ%— à…ë€ÄP¥[¡ÙUûÕ£«güÜñ?¯Á¬Xõ¥¢´ùÿÚx‘¹ã…ÿ=!íîH“±°Qëœ<¹“µuÖè=ÿúhäüóïë‡=ýÕ,iÏF¢ˆ„;b^;”ñDÔ8zôa ‡‘êŽGþÉš¿ð)ï89–Ù¹ØóF™oƒÎ†%H†‘=FQ ªÛ%wΑjÑÕ¢­¯¿¶>vñÎ9O“•>¡!dŒ¢qÏW0¾‚žV÷ÚÝX FGrWYâ$‘Ñ’EióþIåªsò¼{/É$-ÆÄ²”z˜ §+\å;˹ˆŸŒ5_þ'_Û*{<3sþµ’rÃwOÑ/¥^‚ë6n]5%‘ï ÇFÉê#.bI‚²û,×½¶ d5¼@Ê&¥öÛV(L€Ý7è|Õ5L“Ô…Àƒ˜‘O&Mˆ,:r€tx2’K=zdVBR\5ÐAøù1MŽZŸú—Ã8Jh$ X`8ê\o0¼ÜhZ¡b±K£è<0ø»v¸Š¡Âx]Zÿ¯¿¯ç©ßùüªYýø„ˆ«Åž8¶æ_‡o_²ê ÐxÇ>mkA¿Äü«Bú·ÿßg' ¶±Óó«ÞèGж-~…‡ªÛŠŸõÙSä‰-–Ìíê"è+ Cû~ƒ£ÿ*,€‡Ô£‡ÿºsÀ ¾®Kþßèûòóâû‘cùH~FAbbdQÆa9Ó›Fíô¡#?ïé4`i{Ú¥üÈ_|ÈXmë)”xmÞ¿\rÕ/‘¤-X°ÿ¶_¼nƒ×G4œ0wDƒ¯hˆ…\‰GGsÉÌjLøËüÒr*Lbâ™Ü8`ég«")8Ÿn‰‚#dRR`$[w“éĘ˜ŸÈ~O¬úâ  plÍ?oIŒçGÊÆá±Ï§­ü{þT~X!ý^Ú‘ñ Éž®`!ŽÎw’Kž·ÈJŠ{m\@VÃ+!¥i룞úâõ~<9on+§b5Iäv}B|øöQ—ŽY,í‹ ¸ÚÇG ý”A¿+{†&Ì¢\ÛÙàÇ´`âŸÍŒ£¤€IÁRgz£ZåÚF4šWƒb±täÜù~ñV°|!àÆC~p15`ì cHÿÚ…EùäÒžy³¿e%†$pœç¨ èÍ¢¢üN“žŒ§ô#ÆOþý‡¶­{Õõˆødõ±Âñ¤ðRtd¢Õá¶vDÌ|DçKE…\¿â÷Ý7àÀfZñèr[J¤+?^’Ž\úÖ Ëís×&F0æIômñ<è)¹}ßS‘8iȦ#Å„ƒçe¯˜«Â¢ýù·OzÝûXH2à*³ó¢m¯?±¸_!)ç!޵Ôè¸jHœïÄ0pÙŽpâÎÒ£LáAƒTx³OeêÖŽ%ƤcthD"}ìóéïïç G?í 9ŒON :°a¥é-……¤Ÿ7ø|×xX€'‰F­weDt•õÅó¿¢^‹’s+¥í":ïûøµÈ ½x†vàNÄ€#ìp':Òw’{Ú¯ÿíï>6“;º'*a& \$Ùx´¨)è9žÝÑv²TêûÑLû8)£+ æ–ëFo8¨\ú 7“WƒÒ·‰U$ïñÁbuŽ€K•ªêCØ[¤#ËçØt@o›óé ö˜ å¼yRµS³Ñç?0akPÔ–½Ñj~<ƒ¢}ü`²6ã(w€ô’zŠPË5ÿ¤-\Qx¹ÿ„Çã¹ÍÛÁºî¯®èY‹”~Tò¢y‰|y+(‚þÒžVCËßÒnQ-.–牊Ðóˆ5A-€¥Ó¦‚bxx’r ;mQ<:µ*ÁpñÑýù&ÁpY':.¼âÂË„ë/ÇyøjÃcÞI:4Žü¦-xŸ›óéÇýHñ¶EkFJÈŒsÚCd[·ÃR¸Ý]£Åâ«6g/&îµH ÝKiĸ×?W¼}Éô™—‡=ûñÌøÚ3à;éëHß‘aÏ[k×>æraFäåaý§ƒµïÏm;šq™üw¦ Ĥm™’2Ï®Ú4õæeJ¦ô† •Kuu›‘±ß/ž„%ë?~@$NÚŽc¾=ÇšhMlÚN•¢§3} –¿yë1Jªhû´âÉ:7êu[ý‘Ô6“AýÚÛêºæŸ>ðé–K´0¤ ޤ +zØMç®9v„ãq;Â÷”+Ú¾)ý¶þ}=£Ú¾ßmœq–l¢Föªk;Õ:Cí;tº\.20sì¨KØ]ŒN-Ú >¾öß›£Ÿ™-Š;KGüòc¼PQ&8RLÖš%Æ›’b~Š‹ó:EPÉ¡Ì8Ë$PV÷aP¤aqߨÔUÏÂU¯Ò½”ò"Ý~ܼ7ˆºT䋨v}°¥=…{‡l^ùáE—·ôÍ©ù#Úó?]¨k[’& K}éjNDšÖˆÔýbí·Råk|)IÒ飑R¸ÄLÙaϱ'úÌXxï¢×>ñ_àŽ”53<R"—S_{*•¯sÿ¿ÿ=®ÏŒ§Ïúð)Ðé1÷ß;”dð­W·•pÇ'ïCyïZ¡ÄÛõíóÔ·­§îø‡Â䇌A3iaH_‚ôB{Ež×š1tPG˜Ép{ŠæHÔ”…ÿê =­. êØy)³­8}úÃÇãûø„†sÚîXxLçÚh…Ü1x¨uÐ¥ÆZbtjÆÂV©éÇG0Ñwž£¢¢ ×>‘rêBgyp$™”ÏYb%KÌÏØ)?-z5e3‰<4šÝÂ*®Ò²á–¾âF…#.¾êasöb’½vH·Rzlݬòä?·ÊÛjI2 Ð$ Çé·óIà¡¡v}F¥rýûRQ‡Ÿ#ù“ÄóB%dCr%LªdêAoع‹% Ø4¤ø~áG€"í“7¢]lÓ ãÿ{òXÂ'Ó=$A«(þeÑ‚â{=”‰&‡è´ÈÿÇLM®û²ë°«ªìmä 8¶/ºý8o¢ÐoºwbûOùÑ÷´Cô¼ Ë6 è¼5]ƒ!9ÏØ(zذ:ár•oÃêFæöÊŽ7ßø9ŸDÝÿÚßÚA\§÷ä:³^¼ã¿K~¤ïÂ1øéÇ"z×y°9™ @m**y †bó®£òà¹@D@0è¡6àÁCÖD@äƒÆPå3È "€ ˆ@F  ¬RÕ€ÙGÖD@y `g£Eóö7‡…ùûùɃ7ä@Dh0X *XÓ˜Ží*ªT&“Ù jƒ>d@D@.X *ø¦`Mƒ‚åÂò ­F­RV˜ÍæFÝKìœw€;×¢Uë-Z;U+--ÍÏÏ7Þ‘»î¥­fzÁ7½î­cƒµBàÀÁƒ· \+r­Üˆ»&WÈ]òUOcÖ4¶÷-þþ.Æ Mc'NŠ *XÓǦ&5 –9$Vƒ qSgzÛV,oѶc›vmË3V¶I˜]ZîWYª¬lù Ìû‰ì …‚ßÔDàÆ#¾)ZÓ? òã@RGo*k XV/J²ûÕ÷[ ýØÔ‰’P·ˆL*þ´m¯G´7 hÓ& êôçªàÙ{Ï…k œFÏilu¢3rF·hªF’Ž›Ìk³«”U'OçhuÆÐ–ÍÚÝÜ6&º£KVUp‰~öËbíÀ“ÉÄ~BrXºk/ûw.‰]9ô:‹Á`ÒéLZ-ü5êôf½ÖTUU>í™Þ.kº¾ QW•––Dwê EZ6nÓ*pë®}}úÔðÁ` ?­b2›à¯Qo€£EH`ëV-\·S㦠ÐëõÁÍÛ„4÷Žd3“ÞlÔùûÿ€@ŽÀ?ð «,é}&GÌz±˜MFÎ/Ø/ žH¼'âi+—³Ý-,,L<Â}ñÕz"ëÔP‰9ÿ&ÿNâÖ1hRHT÷ýofnÛm IëÖ…4o×yxÿ•ãº6-œNg0Z 4AŒ&ËácçñZŠm¶_«ä‚+e`¶˜õ²ÿ…g8z÷èâžg¯®þ´ãÐà„[zvíh0;²sïÑ¿=0ZLØ ¬¨¨HHH_ƒºeËÏU0XÓ訧NéŸ}Î:­¡Ñ™Þ{?»ôêák%>NtøùBì¡}û¨ à 6¡ÍŽŸÈlÕ²•˜UqÎ=Ã{Ù3¿üiÿöýg†÷ŽlßN\R2Ç Sé5•ì’Z­Ž´Zí¡C‡BCCýýýº›Úw næµl85gÐTXÌBüŒT6´Í›7 f‹óº°©œŸYƒ¨Ñhýü€}x®(iÖ2<(¤¶œpf…!çbñ°›zŒ.?þße§‡¬µ 'ïD‚·*½štãæŸ7mþÙÞĤûî™|ß=N-–U8ÛìöñÿwäÈ(F›|„ÞZЊBµ¢Ã“&Ì31éý N¦÷‡…'Uù~DóÐà\!±¶T›Q#4Cì¡ ­)3¨ ý%­1‚bßT©6So " 6µK\_æ~CÃC+Ëa Ue~n뾫*Ë ƒZv9ŸtF-«ŽÐ¾¢O¹\10´Ý f›ãß?¶ôd¿M;>?V=–0¨îc¨ü¦÷i›µ5sñ›f*2øÓe‡óÿIvÈ·nx¿^̦”¬dïÀ|j5Ú_vî‚«ãÆŒ[SÈW^9K‚ÇvöoëgøÚìÞO”_\öîctªì ÅriÒŸ@æ~Õ ƒêI0Ih6!ÖfÖïüSIH¸ÅÎ$ÌW¡Fð?,Í›™Ïÿõ˜mXïÒ{„„«êdPÅÖ”å¸ñP :hÈ“–„Pw¬iI¥¶B§ëÕK­Ôª5à›µðÔ`òÑöÍV­[W©ŒU•U¤Yô-ñ=ãxJNPhôAj­B£ N?McáË6Ò9Þñ}Ôe*ó?—ï…øå;_úð šÌeÝ;Ú¬Y3Xš?1øËò=´îb)K& È‚MmÕÂÄ6‹NŸ\8°‚î_óÐñï‘ùA(œn5É/îmÙ²e—˜¨ªª*ð­á€^ˆyæxØ«bÐk¬7ã¥KÖùEX d|JNÏ‚ù4ygHǘ^n¬)pE ­Éh`Ï î{äæªZ¯«ªR^Ê» 4WÎýbò»S~º¹•ëòN´Âºv$»xCE-h«aádKî¥áÝ¢I¹²"¼#µ^v§ŠOô Ï:qrCû&í˛ۊÃ;¶¦&¹ïÀê§?[&\gs§‚¹e—ÅN†~jKjV%æéDk¥½Qg6Dj`˜n·?6ÆåR4ÊOaxׂ½´ƒÀ[ïÊÔ' œoï¾Ðã”ð>¡×ûó(!3fêpbÁÞòIýÙÍÏ$†\Ê ¯‰7ž¬OGqñ•¢+WìU#Û·ˆhï ¥n¦ôåç_>; Z9²ß+üޤ3¾W~b5±9ÖLÛä°pX¶ÕMxsiŸWS}›(–0¨î»óe>!‡ô„Å&êvpfõJÇ=ôÔ_|D=T àÔIÛÔGNfMØN-–·žs± Û»oþ<„)A¹·nþ¨…’µ€_H}Sf¶UêK‰› .”Qççg¹˜S¬5¶¾ç6¥ŸŸ=즠Û|[`™²žX´'N^Û™ëXµ7Ç *DI·mÛf7ö(ÜöíÛÛ21“jYo0••Á½qµ¦ÚÒ í•* wÅY6Ù«×Áò$=ÔruÀ¡ ÍÊÃŒŒ*»PÌí:t±R×-‚ë&åVÚ9ä žùííWÁ7{¾Ø-mi°ù¥É¢JuóyÉAWÇŒ8•}nÙçÇ%ûðpã˜íd? …>pi÷îÝÇíé7èNI n2¡.\ ë«òÅ‹‡Œ ³=°. Lª¿¿Ÿf¹]! ‹{á•ðµ™dœ=•ÁºÃæØè»n‡xØå\¯U–ƒ?… }%í¨°Ñ.·XW˜Û®XrE0¼}²Sרà‰ÉWÔœò5z ³¦å•—J/òÈ/^XSJ«Mëв0aåJÒµwX·ª˜#U`Û*s/Åt½Ý™‰²¬ÊSCë{\ê Öèüþ-‡[rl ¡³²„ÄÒ*Õ™¼ÍH=š|«}n9/·*Œ°‰eð‰Ièh’w$+tÌÔ‰î¢m•'Ž\ ë:Öêž–eì:ö±'C¥Ø¨n‘–dBÂORRy;Á:F³ÇkO˲ÀÚÑ´ÝÖ Ûú¤ªoòÔÇÚºï Óo°ÁÑÃy@¾:rªOòíR¥–B‰ç¹*”o¥Þ0Ÿ°4ÿ*¿Ä¤ÝÍ7ûhMØÛþ\¿Ô)Çt»a yräû9cŸƒËGæ½™œ¡Ôu£örúI®â©P÷•>t»Ç‘óï…øÊŸ:.aPÝÇPa>ÐRqæëÀGü÷%ð¾©ÖHàï¼IÔ‰1Ò*›ò¥ï¡ºbÉ•)µ—OÒk)f&Ê¿Qó¶u9YöJÁ6XÓ¥ÃVed¥R²W&¥šqß„‰.šÒú) '/·jßÖâgP¸‰üÖˬ6ë´FærQéç{ºŒ¸¤T VÛŠµsçÎ }ÅÒÌ`À_ð¢XÚ‡ªÓ›h ÎOÿø¬ƒZ]±ZÖ´Y ¿ZhóMõzx-Ä苇Zªòßz2\§*¿šûg¥Ÿ.¤í-fÿ›ž.4kÁ v–ì‘=So4''ê Þ…õß›I-ú‚oUåª2µRÍÏÖ&Þ O7Ò«¸YÇÁð0Ûþä@Xñ !Ý¡C€kÀ€íÛ5xèh÷Ì8]í;@²¼V£ ææ-kˆpyb„€H0¬?jÝJYU~´èÚ^Okªª¸Ò¦MxÍXW̰‚'†øøx•Šnm’]f™5šRV,7—F4`]‹j3ýðððé}ûñÙ¦jõjðM}µ¦”Ak•ä^ å-h(9_EøªóÑ&¶oöbºFïåí.)¯ x¿¦‰ÍÊÒÅvëÍ:… ìs˜lÛÜrU~yÇ>] NæVö%¶Yåp0;Bí.¯C£B g ¶‰Ƨ…lˆ[¤ÆIŠaRvÉj5)~~Û~ˆc¨Â¶Ê[uâ ÛÛµxŽ~P“OzʉS)I”xž;²V\S­ý•ެA({ÂWšzu‡†³'É‘/ú…ÌcT¦Mâÿ°ä³9T\ºÍyuÚ+?ç@Bª¨ÛéZðqáúsÿžöê"©B5çIT÷•è|`Eø©ð²é¿¦†óS¯ƒ‰«,¿ þ¤ÁR'ÒE Õ=qûUf„ÀšÂO1°Ð ¬)¤©Á6°¦|>§rmPÝ7S¾£.³„ÞÖME4*wó`Ò˜ #„-ujƒFóÍ_Ú›";´ —žˆ•Ä\ð™ÀO²·/‡Àô3*PÀA¥p0ôèÞAÓL ùšæ*M¨F£S©5ôCZü5뫃dî;åtõðÅ`0ê×.gêÕQoªR4Ÿ9Úÿüåðï~JOÖÙ=©1ÉÏ Ü™ø<üœŸÜ¢¼*äJyëkÆJµùê•sü; ë;óP*üÓ¼KCãŸü?ÓÓÓ!÷ΟF޹W‚Š—YW‹.5 WE=‰¡z`„@ ø²Ì zÉŽµ¸û† zªâ*XSxæ«É`—ùb‹ IDATL`à`Þ;|kT²V×®ôûp€@‚YeÓ`P!íBNmlªÆ µT˜}òMmÌò¦îRe9XVÈ …¯‘œÌ½\Y×TëÜr¸²²ko0c'Áç®·Q2Ö=ƒûýWe¢)_±…“ÄØ«Ìgz½¢æº0xç{Éí=MÊNm¡±6Yµ6¥`G·nÈèó*H }fÌôÒ~nt6ç¨Ò:Ð4îð“0¨îc¨Ô†TäÒïç-K7TØ=ÔçÇPŸ’™R:[;ƒÊXVMÆ“®E*Ü®‡÷pèô²™;9FE ¹ j q,W]§ÚÝh:r¡M—Nf…\ÍÄ …—1ø¯iôZ5ÔËç‹Îå·™8–=æHP¢4ŒFP…ð.gff¬ڽ÷Þ s…ððYÙ2Úsq€Ÿ!RFÿóoÖ †  :"ÁdœÉÄû¦&ýËg¹¨]CvþUrÿ •9¾Ëʵ9&Åþ›ŸÆ`5FšÒlˆ„º© Êpzµ÷Ûß"òø»9Ì7euÇÝ+w¥ñÍl*üe *6&¼0uY&¸§ð’.üò]dÍô¾7µF"&M™‘3è ÜÓI­àéñ¯œ*Ë`U9‘}Ù ­ck¤ê\P@eAYþ…¶„˜Û¢¶N£“žrt¦%ú †º¨$‚¥ ÔDYŽ©Q¯#jÔ‚{ªß´¼¤üçü¶–ÖýnŽ`sF"6Ã* ,\k ø¦à¡Â4ÃÌ–IpÈkskŸn¬û$Vr91bO¦îøê0¼z-Àv¿mQ’$J56y£ ™gÚ…÷gt¶×LéŠß‘ýâB_å¹›ïÒÀ?úœ™Úо$2mƒŽ_¦ÔýÙWg„N ¡o²N›1/ >Æû¬™°(iIµf{ùbMêP¥Ï-!2Æêº¡žÎ¾ðÅú Óž2þlSÚ=ÔÇï¸úê›ïŠ[÷á3F@Z™þÀ¨ó—ËéW a]ŒÁ ¡[–ðX`ü…W$Õ:P–Ÿ6®ò¡‰¬ÝŸGvhÓ;˜<õb~Îò·ß#~ÝÙ×—Mã)Ìq¿ Èú?Œ9çΨÊ.j²ßx}nÖEÕWŸn6éH~ðö„.î);]]¶>?¿°‚vǤƒoçZàÛ¶=¬òuÍ›J_§Q])¼(ذ¬pÀçl_hêЋÆN˜âÔ¢û®9Ö‚Û­V…†ßX÷N$´¥VVÀ³Q3Ñ–R^a誰¾}l?¬±‚‡ þA…¾­ iWb㊔‡ùy9'a  GPEƒÄ‚o KÍûô»vÎñd,®) ¼\…DŠ óâûŠ›Ãœ&ŽÀÑã'":tr„ðÙ'¬«Yëº|éô«öEÂÞ´çµ‡ÊæÁàé –äAJxÉ<4økàwóÁ¶¹âvÔ”§\]ª}>ø—/œÏ9cP©T©´U*Me•Î*•V¥‚o)èuz%¬ñœ1ߥ5":v)ÈÏpè#xyãøñãÌ|Â_v@êɹžòÔjßo[ÌÍZ?xæ„ö߇wè *?ó £ÖǸ©™øNºü³åœ2{ü½` s\×Ðÿ.šët/= òí,ânH…4oÓ½°@æÑô 6¸©R›K`êêÉÚ1®Z´òdÚÑÇ€ Kvâè_ 'l¹²„<®C#ô?¶Ãû.}î´¦RõÖšzH‹!×Ë_9Ú©äÒ¥™‘0¨îc¨vŠOÈ d@®-Z´†óúµ‡-5d"#`«§ù÷€}LœÀb?ÿŠömÃÐI•ÿ˜!‡ˆ"€ 2D€¾4ÉØRªtJU± YD–D@ù#ß!Xè+¾‘CD@D@V(b‡> µhÝV]UÊ8Ã4â€2€2€2€2€2à­ (zß16dÕà-˜(”””””oeÀ¯eØÍüîôÄ4â€2€2€2€2€2à› À”ïC¼OfVØvØÆ´í¹ 1¡H < <      x"ðÁZêœÂóˆÕKÅ´ÍaGLP6PPPP¼ˆ¡Â—Ó™í…],1 P (((((ÞÊ€bPâÓš*ØM—Í[·ô­½bž›5iØà[Y&þEë@ƉœÏ¾ÿc÷ëîëìÞdl`q@§ (nåc¨B;üÉÒg†Ý†Öôú«Plp@àσYO¾ü·ÏÈXžˆ8 ×_¬/Ìðkº¬Ç°Á½gÂ@n,Ãõ„{Rxobš))Äq§ Ð÷P⦙¿-·WL ˆÀ D îîXë×ÿYÛEÌQ¼•öªUcXm>º§ˆ"à/?ý ð¬×fÌåù<θCÞ”&1ÔÌ]K¬wñö)&§òéä­Úÿ$ÙîmÇwÏj¶"ö䦺K_®ÎÍY;¨ÏÏ{RR‚´2s­-æÆókÆKeyÌ›¨&f > ðò³3ÞúàPð—¥Åtv¦m‚sLÒ$8íW%3ãFÏóöË3HÄáúË€D ÕúXýé É–­š³œ'ºžÙî*ªj†Wÿ]?‰ÿ:«Ù}˳ùºÝ¦Òlx¡›+:î󡕸wNðÌhήç¾°ýª{Þ<$‚ÅÆ\[¦Ì\¸¹c'¿k4Xн¿mgå!?!.9ÜMCµ=q Ä@äŒC³áìÍ«=-GNöáþÝz°t·¿ñ†Ð&ÚÿÚ–W%«HfºoE² dúVË5ÌoZìܶN§>ƒÁ£6ÏÍÁnV@˜v¬rÏä)`{þñ[”’Ÿ7~?ü®Q4STExobZ¬¯ÄD>2à:†:ö®™o=ò^®ÃórÎçƒZܪàÏYVŸ•ªBÀÜþ>«Eòòö,ÏÒð÷©µäÔ‹ñ·*žþÝ¡€¾Ê{óñANíòJ‡o…¹Ë‡ßj-³}¾bøçÙ¬õíVölÕµ\´8ëédE‹ùi@¶ºÿ“'X}ÕڮǞ –oøŒ?~Ìx‡@ü„L×ó1ü“(ë8/¯îJr¦{&M>ò.0¥ÔšŽ¼ ~J”gtÐOEP‚ ˆm;Ñ_á9﹦ôóå£îQü‹ÌüvÇš1spVüÛñßî8éÜ šºüÐ/t­ ÄH WˆÞž€’, “¶_ÄÒb„èÚJº¢sêÅSs¥O‘Ë}˜–ò‚@™A0Ìñ/RÆÆo-}á…‹³ÚB™a?> ÝZ:¶%~êÅEÃΕîèAy{qùh!o.[<Þýs®´#Ñÿ<+þ§‡í8|î\>èÝŒ¤§i‹¶« Ûxâ¿M1wЩK÷î¥_W>ü6øi»;\C`½}ø´T@öÌGhÂEaô?Ä: 1ALä)ÖÝÅa^ž½ë%¶{?ø…íß¼›6hÈØY_³¦Ë™ãdä‘%`@Iôˆ…¬úñ\ ‰®¢Ž#T1ÚPÛmæYWtº¾ótWJjdß™dÙ³%I`Þ¬ìúNúbj˜­v]óõ.EÛù3¿þ&‰2ÌøhDH‹ysÝâã‚i‹¹ÀÒ¹µƒÆò›GúÒ>’®Ö«,ÿ6IîߟX´Ðuš¨¾5$°xyÞÇûòË‹ì× ýÖ’§$ŠòY{÷عsßð¡}!½sç°©,íT^xobšƒ8 ò”>†êï¯Q–Á7ò-fšv¾ÿ»&}³ ½çÖckžu¾"×ßÅgN2Á[îFn-NøÄǼ­å+÷$ õ¤kvÛ –Õe¤vþzhço‡ÇÜ=p̨AôsÚ>NÏ~V7§ Â{ÓLG!ˆƒ2 ¸uý8~óVmìÖ4sýµW×±YbíAÖëÞ<6ˆØðdÊ×C¸â¦ü$¼71ÍpCyÊÿ-_ëÒ$‹ÙéÌ ÷xx·Ë©T9òRGÄMù™Qb÷&¦”9Ë€ëji$ƒ µG@Îq#ä/â€8À”ïÀ‚Ðæ7Lµö* ) ²Câ€2 ÀªœÔ'ò‚¸@@þÏæŒqäqhÊ2 CEÕ…NÃlDàz#*ú% tÄq¿ ` õz«Hlð ¦ü¼}g¢‚84®_ õÀÁƒ· ì•*Áˆ@Gc¨ ò÷K˜”"Ÿˆƒ§1ԪʒS™ž8~êÄÞÓ'÷?õGæ©=:º–ú®$ïØ¨Û{9ý­%M¬Ž4>ÐGacŠ8 r–Oc¨Y'ÿ|æ¶Ã?“‚ø‹ŸÂÏB,Š$-#ý‰?g6YüIôÍ­[´t¥Ë$=T°¦NåÍfó† nŠéçŠæ#MŒ¡:}Ç =ú‚ˆƒÞ|ócx’ù¦± N1:¶Ù]±Aw÷i>:¶ù¥k^ïÖòÝwßdpgmäø£¢¢¢¬àô¹ôõöÓ U6Š=Eœóó8òÆ q@˜ xC… Þ1ƒº¿·þÄóÓýÙ±ëàŽ3Y`Ÿ΢ ADa‰ŠêÕ:´­¤Ntã¡‚¥6•ã âÚ÷—<õÂÂ8³6vþäƒ÷ìþcê“o„¶i'I3FŒÆPapåé‹0©CÞ¡ xCUPcG„Ö~ŽÜeÌm=Æ ê:zp÷Qƒ;Ô¹àr–WÚy¨àžÒÃl6èõ´ºEÏ™õÄ¢æÌøõÒ« ¾ÿäµ²kE^QÆÂˆ@cB} 6šˆâ gð8†z*ì%x¨ŸügŽ+=•uâ÷]²oí3B²€U§×ʬjFú®;G" gÖr&ÍÂ7ÞÏ>{É<óñ7»%)c&"ÐXÀ*ÆPA¶Ñf7¸üqð8†ÊÏÇ‚‡ VÓÕIû¬°îç¡‚cêÞc%{Ž•ì=^ö둲K–¾_ï¼v± ’3©8³êµNýbÍÿ­ûd¶‡±"ÐÈóó8òÆ„ q@¼‹¡žÊÜóº5{¨/Ü7TR£¹ñPw¸<æ¶({­U?žÙþljE3ÛÝÒÑÄ™`âWM̪¸¯£‡* ,f6b0† ƒ+¿„I ò‰8ЪKþdiê‰ú²ÌCý߯ôµö¬þî÷¿ÙõÞºíË×n]ºj3œ÷––«›ÿ¾ïÐÎßÿtAÄ9›y¨z½Qx¡BezîoCÿoù™Ìœ2ΤäÌJ‹Yå\#M§{SxŸbZ¬»ÄäÆÊ€"ŽßÕl6ùû[gkWHí6“yêÏ1ƒº²U¾ûÎ(þž<’i3“™39ƒÉ?uFN§·è –iO>÷Ÿ×^rRwn<Ôïwž›:¦çÿÒè²£;n \÷Kþ¡ƒ‡-fƒÉ¨ß±´9]šdÑöó!z¨MÀ‚`˜ûÒBὉi†â€8ÈS<¡úÁ{1¶U¾z#u(Þ9N0¥o¼½ú¿+ÖÀ¹âõŸ¬ù ªçJ‘y¨jµªÌHŠ„3ªCè³ô\ùï)óŸ¾Ël2Àd/1Ã%ºÜD  "€ñ96èˆâ  ï¡úû²¡2›^±ì5±ÚÊ:¹ÏžiôoÿÂŒfb4™õðP-à›jõ¼“j êóÿø?=TF3ë|ùsÞþÑÆÜŠ e¹ªJ­¡æsúø®/¾ñíÕ£ÙÛEU<.˜Ó¸˜ûÒ¬ƒìÞÄ4â€2 g›¯UU°A¦ôTlŸê¥F2™ÉwM„2[6ÿ¸â£Ï„…ÇO|Ä[§TQuö½5:s•Z¯R4z³A[f6шz &–oTЉ!z¸ºO1ñA 0k ¦Ë? ÐnYÝ«$½No4Yv¥m¦þ¨Þ2cÚtæ˜B-Hè^Lù²†ª”ZHüó£}Ì7e™ÓÆt¶XLî9Á«ˆ@£G@xobZ¬¯ÄD>2`]ˆäÆ7+,V3brŠ8ßçœ*•Fg0=3¹·ÁhÔà‹ƒô+„ÁÁ° ÝgšXh ÿÁÆq@ä/| 5ÀCåýÔoIÄPk¯›$WùÙÀÿ5©.•BÚlÔÃB$°£ð—³˜ ±tA]ZîÚ÷) ×¹/Ûb¨ü½ÉšfÏã˜FPä&ž~Ë·þ”¬lš~ÿÀyÏŒƒóµ¹÷.üÇ”E¯<ôæ¼iÿù÷hMëv¤Ü°€gs;ØfP ˆƒÜd@7œ®!ÚùzòP–þBn9 ªÜžÁ‘&ˆâ –OßC•ƒrA&ˆ€ÜžÁ‘&„ˆâ –ëCm‚ª»ŒÔŒ¡€b?€¡ŠùˆƒÜdàÆÇPk©q°:"Ð? ³^c>â€2 ˆ¡žÜóuSÐPØGD@þô¹óQ¹=ƒ#?LlÄA,C•¿RE›4è°áGùË€D µFõé¶0öC§#ð¡#–@‚¦u„~Éÿ äí{»‹°<¦DÀCÀCe%ÅϘ˜  ÈM|Œ¡FFDÂf=#Ã"#ÃÃáÿˆÈðÈ.á½#»t±žÚ 뇂=Ô X @ÄÈÿÙœñŒ|"MY|‰¡ =Tê’jIï›–Ã_æ§‚_j;´Ek†ˆæ ˆ@` ¿B"7? ùaw®_b¨aº£3ï&)’ž÷GþãÑðÅ3Ãßž¾ö™ð5ÿÿj~øW/F¹æÅÈe3C"‹–Hhm³Öcö6‰Ë, ]™ãòrõ…œ•C=,)AlÛla#””íð¬q ’®²ª{íÈ.˧͉º,ìZu1q޽°]§µ)ÀÕ½r·˜¨ËœZ^MUÔ[— 6å MùyûÎ$qh(8ø^íûx¨¹ÂÂBBBœaô ¡¿èÿ!Íà„ìf!R„„ÃÿâÔqIãø#;öœk‹*®*Èhãîsöqûætw[Ü“‹ÀXÔälÆ——•íI-Ë¿I™+¬Ä³“S{Øìõ¶ÙI«SÉTwÍm1IrVN‡Þ¬J$Û¶’u|§ÒRV'Õ…Iõp—v3qà0Ý£g&É6LὉi±¾BLùÈ€1T7ªŒîĬM‚IÕS¿‚ÙYéCb{°Œîsæ$º!v=/ý™—VmÖW-ª«#gåb°švâÝç¬[Aæ.³=KØápßœ‡Å¬Dr¶¦’ä ô1#qŽõi#qR É<ç‰Óïž‘:»Ú}Îü¸jêŒl#$„> TÄq³ ø‰m»Ú¨¢šVãê”j=}®³c"˜kùPB‡¥©»·š¤Ïí¡à§4$èðWWZ'™E󸉫˜™û“ž2IÊ„B}Çùižà6ëä0´oo³š¸Ó$«˜x÷ ÉCÀ¶UwDÄC͹¿ÖbΓ¸¶^TC]mOyç2‡0kÏsèKµÓ¬:{6L~óCá Rf˜9q¨0{›ÓH‰J÷ˆ¥0ˆ$3ì ÿ!ÖQˆ b"O€ªNÞæÓz}T{¢:ҌГÎú8!)>Wqtά”Ívn›Ý¼C6 ¼"3É…q©¦ÒRÈ:ƒêàFº¢“>7k›óLwãÙ<@›Ö·²Ù&LÛæ'Óç.æ§Qé$ªb:›QMƒçæt¶©ã4b­#á^¦geWwDrÆ×Öc§bRôa†y€¸žÓ༠>_<5nëK68ÍöçœôÌXè/v;4bN¼êyóU‰Ž#µm™m˜mãÖ½gÀàÌ<þ¶#àpo ïSL‹ub‚˜ÜX€ªî]­ªþ²tí”™®<ýBÆÚ£?ÎLûëÃôðri•…ã²Áv²E3ç2‰Í;„YÀ_UlŽ+:CV¼ÄûžîçÆP/\(ê¦;]Q~º¨â£p–ëà³±a! ‘]xk qÕ UíI"ÅoÓ4Ví'³~AˆÖR‹æ°ë€K˜x¯‹yZ~”ËLuÀg#"!ÿgs6ò‰84e€oùÒí,„6¿FÕ®¦ÀI…H*½á{I_?ÒûѤ ð IDATw‰LêRT¬«(Òi‹Ê¿~ÛÓyÒF¤ýPW¼ôPéK1sÓé KÞ:µ ± ªœŸÇ‘7&+ˆâÀdÀ½zJŸ)¼ õø–/Ñ%Š»u¬)` æ3I§ËH»P‘U¿ÑšÊH7K³¡]oL#¿L×Åg¥ÀÜZ!  Â{Ób}…˜ &ò‘>†h‹¡ >ùG 1ÔZ)¬Œ #Ðg„-†Êß›¬žÓ<ˆʃÜdÀÇªÇ  "ˆ@ ДãRØw&@ˆƒüqPÄÝÉÇPϼõí¡öHþÕ®`t¢ÒYª4œEm!ZŽ¨à¯…hà³ú”áÌ÷Ö*Bˆ@ƒEÞ‡P}×R=zuíܽsDLLdLtÙ–3_>ôtdèV·DÄu$}¢H¿(ҿàq?ùÞÖDpW ïML‹õb‚˜ÈH †`‹Í˜ŒHŸ¨çªÝCUë,ð­_;\ýÕôïJ3Qb±0M8(qËÁ´5B+b'èk‹¡²{“QÁ4â€2 O¸1ÔE‡e§Ž‚³ðÛ Í÷{š²iÉ#¸?Rß}ôÍÒò¤«å K“ò¯Jí£ÆCX½˜»o Iê/þ;=Î[¬ ·_c_6âÿÖ¸ád ˜‰Ô?c¸"ˆƒœeÀO§¦ßò…çøËÒõ£ª©šL&øŽè7ÿûô˵ßqÚÊ?:ðþ{§ 3¼ùÇ;¿ém6“ÌÓg%Ù“¯AÚ>Çž–,YÈëLë» ìã÷üžpÞ¼›éúø|‚×ýÀ Ὁi±¾BLùÈ€/ßòMOOW«arÖÇÃh2Z8ÂqdJJvòs§&½Yøè¢ýýçO¢­4iLpYòà¿JKRìœMœ#ÞÜS²b}fºÿ\}¶Œ´›r~GÞ˜"ˆ“?±m¯QKåååmÙ²¥´´´Æ’’LF0¨œ™³X,œÙ½ûv¶Qçׯÿ¶ä 6ýÛYrv}õn¤v"l»§h`l:A;{öP6_˦j%3%¹qŸ)1¿Ì“fÇìmðƒí’ ÛŒ£—êK¼êèˆub‚˜ÈS|Œ¡Þ}÷Ý7n,((ðAGÀ”/gsJÌü9cYúßþ»¯X÷B¡iQ^ýàŒ³ŸDM^%¦ “"ý ÙôÌØutÃò!°­ÊtÛæp’™b²®sè·f­óË@¶¡ ¨uV>O·áM?…ïÔâš4^A¼B} â€8ÈY|Œ¡Þ|óÍ“'OÞ°aCvv¶Wz ›á°Ð*¸§ì “™0ob¨:£‹Y_bÛÕ±Õ!É`8º'©.!™é·l2—úžtk3¶*ì2 -Àîd¸hÉ $±h-@_Dž¾Ž Ž‹X †Jßbâm¾wo¢¶mÛöÁ\¿~}yy¹Wê¢mx+°¦åƪ£ªãÛ+~Z’ùàæ#§Ët•&37aÞãþù» ì­ÔûjB¶ucj©¾äI{¼”l} mÞ(]¨>(¿g*eª/hc¯p¸7…÷)¦Åº 1ALn¬ @ U÷¸N]YÚÃ[¾¬¬ì»ï¾{øá‡ÃÃÃ=¬ÂŠ%Äv6sÜÎÜm»”ÿÕê5Êì髎gn¾¼Ì(,G2ñóÀÒìõMçtí;’m[iŸÝe[ioM?ÒdMwδÖ_Fw½&dÛ2ºm ïÚJVw®µ8±·ó¼Ö‰^Z÷Yñ@ê Ὁi±¾BLùÈ€1Ô’’’üqÊ”)=zôðV‘Œ»k¨ÙÌíÞ§Øú×®ïºVrq°ºÅ¯?dÿp©øê]wô*¼Zr¥´4¼u3)²àÒ8)›…U(’Rí…¨ÃÈÏËV¯f^¤C&Ô÷ÒZ=iu ›Iµf[’ÄGR×ÑEÆÝçÌ%IæÕrŽ!ol˜ÄA. ðŒÌà8ñÇ—îÕLóúùù=f}Ý—_mӦ͞=ûÊÕ†Í'»º°°0º0²xª¾òKEý²;·"#GÜùíÆm_ý¸ê~óá1ç~¡­³i”Ìt®‰¿¹#ÐwÄß„÷&¦Ù€!ˆƒxo«‡!sê”û«ª*“F Sê‘5•»>DþÚ"€~Cq@ä/¾ÄP‡ Ò¢E ŸõÄùóç¡î”á-'6Ækîêá?yô 6¯>ùd²K>SÆŠˆ@ãC@>ñ!ŒÕáX  ¸—c¨u¢¶f'Æo^¼(õ­Éófò ]"Äísúd’d¦ïm`MDà# ÿgsò‰84eð%†zƒU 640†j_Û!Ϙ“Dä q`2àK µÉh3ì("pãhÊÏûØw&ˆCCÁAÁï‡j]ßËll«|k©cìû¡¨t–* gQ[ˆ–#*øk!¸@¿”Ä™ï­e[XhЀ‡ÊøGq@¿ ܘj^];wï]¶åÌ—=Ù#ºÕ-ÑqIŸ(Ò/Šôï0hÜO Z"óˆ@"€> q@ä,7 †j÷PÕ:K¹–h~<ðåꯦ¯x‡Tš l Ÿ%äA‰[¦­©C•„¤‡ÆP1† B‹¾)»såà ˆ¡.z<,;uœ…ßfh¾ß˶lãþH}÷Ñ7KË“®–O(,MÊ¿š(¥ûà{ ÂÒ;ýt¬Aw^sþ‚½`ë5ëlÎ%¤ZŸùÈé2]¥ÉÌM˜÷Ǹþnr¹Ã¸ãfÞÔÆõtµ?¸TÓ®óR¬)¸¥àÈÒMÜ:2:èfžØ55¼‚ÔN÷&ýÉ? c>â€2 ;€ªn}“AYÚ½&¨¥5⠱ͷ3wÛ.åµz2{úªã™›/o3 Ë‘Lü<°‹£{ϸô¹ÓaN–0/›ž2ÉÕ4® RÙ@•¬¦3½ŽÛ_ÜKoWŠ>æ!µ@@xobZ¬¯ÄD>2àu õСCF£1##ã̘1Ã[]1f3·{Ÿbë_»¾ÿéZÉÅÁê¿þýÃ¥â«wÝÑ«ðjÉ•ÒÒðÖÍ$É&®Ê^Al³³™+²]†E…µaØý¢$!UÞ'µ½¯ÚcnÜ|ºM$™ÅLD Àøq@ä/ü·|ƒBØP‡ô‰Ý_ÔpA¢M›6{öì+W6Ÿì~èÂÂÂèÂÈâ©úÊ/ôËî\Ü"ˆŒqç··}õã €{Œ»@³› }GNÞ›˜f: q@ä)×û=Ô²²²ûî›8ü¶øÛ{q­ƒfË.*•?4W>xo«‡!sê”û«ª*“F SŠÖ´© ì§ÈÿÙœuùDš² (úðÛYŸwêÕCªŽUÛŽ§íÛlèß­u­ö÷@aD !"*ú"làÄAþ2àu µµÒìÄøÍ‹¥¾5­i¢Š¤Mùyû΄qh(8Ðj -†j4è }¼>c¨LÙawzE ÞCe÷&k ӈʀ YÄq³ (`ÃE!áóz¨U)c¿à¡¢/ÂF q@ä/72†ê­vûáëÂÓÛêXhˆÈùyyc…8 LL LéÈ‘ÝZ6 €‘³pJ³úÊ¶ÝÆ©Ó^hˆ*yF!ÙnQ¥š[¹ÍÊCõ”«d1'ÄVlèÊsÕ8xX×^Ù:1.pÜ)8ÿ® s¼î#èˆub‚˜ÈSL Õûƒ‡ê¯VXÔ “ ¬)gÒ€5µèT&­Ò §^e2juFRYQ%¥ºl[ˆS£S™0麌n+“DÒöíÛÇ¥¥~>–No›Ý#5™Í§Û¶né™±ël³Åés³&ÁÆ©P)¡Gâ*šA³$6‚“b§:Oº¹¹‹ ´ÇÑÍuØ~u.Š9sÅæÆñ›»®#©«­­xXl¤½çNã" °ykFz Ý}—ñª× Ä C9Ë@È¡.\¸0ïšù?+ö,]qjÉÙKV/þ\»äK…E¯5ë4fpOµU&­š3èÔº€riƒj_²jâª4’¤s*ЍÒ}ËmÖ7iuzV6/ÁC’'Øc‰CV¼Ä‡aaW7bÛ/Õꢂ§ëù1$¶!.š[±Ž]vŸ3?…gÁU1'N ˜;Z•ñâiÝ­©é)üvu¢CLöz_„ –DHÕ}ú"òôEp\p\Ä2Ð`b¨¯‹Ž¯S7ZM)8©:Å 3èôjC`E¥¤‡ê•¦Ká}<þ\ BàÚi¦¥!4*q]"+¬W\O«ñrÓ5e¶ÃM1‰³jS—Qr¤@×+<ýz­š®±ƒ¶€œŸÇ‘7&vˆâ Œ¡*ôˆ;*x{«­fzÿýGÕ¹KgPâ&3ûœ›tJXSÊbÐèµ£A¯1U)éºåš~²—/UóìÞ3Žx9o›•Î{›„šÉšZ¦×ÙÄ,o«¥›KOÝšC R‚)“ œt1Q[PÌ6 ³r±Õ]ö´. ëÚ¦¸)» Vž lNºˆ̨îMá}Ši¦¯ÄA>2ÀÇPÁ†ò§5]Z ^H<÷Ü3ãÇuƒ‰3ê §Ï?vîBúÙ+û²Ëæ«÷j*µFªy{ Þ¬„?I™tÞ6ñ¥™üÄ%ÌÞò¨y¥Kp ýÁ"ƒ+AȰ Ó³âÜy¨vÇfÛ]_Éæ†ÄeQçOA¢¶9j¸‚©ì”ÕI´êt’lòõ´G,´lí¸c¿ELÚVaƒÒ³Ä0a–÷8Ý›ÂûÓbÝ…˜ &7T°á"ÜåF½60¸»Ýÿ¾Îûû¾~k@ f|ß{ï½wW¼ûè£Ó—,^X¦4ÝÒ³K ½VKß u:ŠJ*³Òo0V`qñІ4fõÄkü]Ó…÷&¦Έâ Oh01T³™ûâ‹/¾±ø¥Îÿׂwuz³Ñ`̽tl§ø¬'í†dëÆçæˆâ ð;ã¤×Òw7Yúú« OZ4˜¹·—/ÿsÏ{êé§µz‹Ñdô¤"–A4Â{Ób}…˜ &ò‘ój|¿þOÌ|*mǯ}níß;¦_l”Åö©‡­.¥˜‡—Zq¾W ˜&œ'ÿgs68È'âДe aÄP›°"Å®7i0†j_Û!Ϙ“Nä q`2Ð`b¨MZ­bç›0MùyûÎqh(84˜jÖ¨Øõ&€|âC«Ã±@p/ &† :öžMZËbç›è£4ùlʲÚ`b¨`JGŽìÖ²YÈ«…SšÕW¶í6NöBÓ«ØÝ¦…ÆP1† 1ZvÛË«A nÖ’y²À· ?ì\}ÿÅr¡*µÀa¶Œ«>¡k†4ÊË«æÎ{KX˜~êÏùS âÇ.y[ÊW1¾Ð¿oÂV~OXÇë-)—<á…ÆŠTὉi6Јâ O`6ß>/l”›†Ã9yÒ;WœŸÆß !f¤&5§W› jø®¯Y£^º)HfÌS3*ØÄ>+?Gf";òE@xobZ¬¯ÄD>2Ð`b¨õA9³N )õ3”Ã5…î Ñ[T&Õecež±ãà§0øõ ƒö'Fì+n6hL°%ªF¥«(Ñi”•JúÕ'/Ø|}ßö!|Û‡ß_Æ·•ºò\5eçŠPoèìÙ@Ìýõi1ø¿ÃáLÊù·ÝÁ¢ \W)ÖQˆ b"Oh0LfГœ¿ZaQ+L*°¦œIÖÔÛ·i•f8õ*“Q«3’Jé Æ«w›á­§=® ;©AD“ßú4°ÍËàKEìwŠu73¶ÛÍ[GRm[ˆKT$$=3vhÕê¦]XZ©mË`—Æ„'û±6. ‚½q@ýâ€8È_Ì{¨fØÕ¬ 0qÄqS-gÒYtU½Ö¬ÓX·ת9ƒN­ (—6¨ÈdÊf,™xÒ ¼m/iuzV6Ͷº¨6£ e†ÐÍÞàè>g¾uO4ÉŠdHòë¦á¥XÝ´´u“ê;d5¿­MôEäé‹à¸à¸ˆe ÁÄPM°×l fpOµœ¡Šß”ZSµI[E÷×é,A§W+*«¼TÂ)VgL-X<˜m¥{Ûg»§äXÑ}Ù®:’‚I©7L·DuáÔÖ@/72äÿlÎG>‡¦, '† S¾ƒÂ¤áŒÔšÂš^jMuJjM5*‹A£×jŒ½ÆT¥Tz¡L»÷Œ#Ö‰]k­ì¬ô!±=àGÎÖÔt>ʤÏ][CÞÊÅÖ)_qE/Zu,ê‚XU0é™çÐOõÙÆPý±€˜ &ò”C…EI­®¬8»èì¾¼3{òÏîÍÍ>púÜñcç.¤Ÿ½²/»ì`¾zQ Ö Rk¼Ñ£‰«²W¹=ª—%%¾dý==+Îê¡&®JKYD‹L'ÉÖ)_"ªèM«ŽeE¤lË¢zÌ›/xáÆ÷°fƒE )?ïcß™Ø" Eï;¦7gìõHÿý2T>+–¼¬Ñh«”ªòŠÊ²òÊÒ²rˆ•VV)µZ˜[Ør\œ‰9ˆ@ƒC þ®Œgvobq@³ (%>­×ªÙ 7kiyÔ§ ‘aD öØ *»7…÷)¦”¹É€ŸA«VÐoEjà/K×^ D¨œîMá}Ši±îBL“+ &†Z'ê ‰  ŒŸ±!CùË€,Œ…q‚çú—Oã òA@xobZ¬¯ÄD>2Ð`ÞC•‚CNë€üŸÍ&È'âДe€ÆPA„Ï8×_Y`‹ˆ"à ô?Ä: 1ALä) Øpîä ðÙ>vKûí®îí›{Œ xàѹ7–l¨oúÝ=CxobšŽ8 ò”?ƒŽ¡òÖ”¥ë[GøF¬éÈ‘Ý&&ö‚3i|‡qÃý¶÷,ÖBdŽ€ðÞÄ´X_!&ˆ‰|d€¾‡j÷M™Í—§‡êd>-p˜-„#°ñ8|u>ôKÕ"ÇÁŸòòª¹óÞrÔ’ðå!ûö2>›+ý‘ú Y£‘OØ:”î~’åű;“ßþ°É‹x¨Œy>#o8.(B°NùÂ3NPˆõ{Iò4¨ß­{{ò¤víÆùiü b†gÔÄ æôjøº/|×׬Q/Ý´äÝ5ŽzP`œ¨ ƒoßËĤº±šn.ÝX%­_?À  ïML3èÄAž2Ð`ÞCµ˜¨ ;¸Ái!¥~†2b¸¦Ð]!Úb‹ªÀ¤ºl¬Ì3–çåžÝUƒ¶Kœ”Bðƒó5€„—åƒ@S^3‰}grˆ84L >ŽÏ0õSüz…A {Œ£ ö74&ØyF£ÒU”è4ÊJ¥Ê6ܶiµ}ÓRØ©­ú£øPÉù· þ8ŽöJíiš˜=ˆ±ÍÖÜЩq76!}[?œé9ÿv×_¼ÖÀO|cu8(îe Á¼‡j‚íÛÀCõW+,°%ª ¬)gÒ€5µÀömZ¥N½ÊdÔꌤRzƒqÛ.â›&q ¤JvÛl­ä÷O#‹a7ïmËæÆY·Fåg„¡€-#{Ef ~§gÆ®³í§j§Ëf–E 9¨xc.·>Uwæ³[ dßÐGa !ˆƒœe<Ôêõ½öÕIÜà×»ˆÙd†ÉÞGL7Õr&EWÅï1®±n3®UsÐ]ìB#Ŭøá· _½‰ßØÜÑs™ÄfÌ’V§ge“±CV Ì&-2‰ZVØuÎüZÄõas{é.ª){®‰r Â3ÆÒq]qu'>]ó„Wèˆub‚˜ÈSL Õ yÍb÷TËèã¼5U›´UtqÎbÐtzµ!°¢RÒ òªµûœu+2©3j=`Á¯ík;zsÜ:2¦kœ™õRS;6äeeB&_>½æ +Ô7r~GÞØè#ˆ“†C…)_‹AaÒpFjMaM/µ¦:%µ¦•Å Ñk5Føx†1¨J©t£ãÀÕŒ›;šÔî=ãÈjqµV« ~,]¶Ä°ú³9+¯fÞ*¸‡6W±►OHâHÖECâªÒ9.ªWó)] s è‹ÈÓÁqÁqË@ƒ‰¡Â¢$ƒVWVœ]tv_Þ™=ùg÷æf8}îø±sÒÏ^Ù—]v0_½¿(Pk P©Ýâ?ñ¥„7©‰«²!Õ£zY¬âˆœòs¶´@fË‚h+›‘¥“¿«Yæ&’"¡´ÁÒ¥ÅÙÈòž®¨!‰Zn²DÕùtS/5Ðb‰8 r–óêŠ%/k4Ú*¥ª¼¢²¬¼²´¬b¥•UJ­V'V™E%•âLÌAøªýýxy¾wÈ$ yC˜ €AX€Ô2ÿÒÇ~û¼Áédh”ô»ûqὉi6ʈâ Oh0«|¥ºÄN!5"€‘*q¤ 1ALä) &†Z£ÞÁˆ@#F@Îq#ä â€84˜U¾XWb×7 /"O_ÇÇE,r¡š-ܧÊO¨*Ô&7J§_ kлcË·†ûû)q7±k’` Õ¾¶Cž136jÈâÀd@ÑûŽ©°û ƒì-¤eµ(ië‘k ?¿øÎ¡­›HjœFŸY¥1¿XÉY,ÜÜè;‹tB ªðÞÄ4ÓQˆâ O`û¡Z_Üd6VVuÙæ 3ÇÄ…luº{ã ¡º9ynSп ðK9ËÚy/Ý×¥)ôû(DÀnPÑb° ˆƒœe@î1Tƒ‰ ð÷³X¨59²ÛÄÄ^p&ï0n¸ÿo–ƒ•mô'ôÐÒ4MÄqŒ]!&(ò”¹ÇP—üûì„®zùãÇåB}jÃl!±pøÊ-|è—^ëJHyyÕ#sÞrV¾;g·¿Ÿ}(0e½rÕÝΗëã÷¶´JúÒFxàÒì­ã·NˆO½ïø¾”®piqOšð¨ÝàòÁÖÜyxVÚ#’X¨a €1TŒ¡‚¤ÊÙ'CÞ˜*a84€÷P-ÔjRÃyß} ösÒ½§Nê2õÞöMhýðØ€Gï6>4¬bÊ ‚É·ž»VRf«Â*KÎÊ ÷“¯«¸"8ÆžûÅ–o¥\_?92dáQ¾Ñ*î秺[ºÌù¹j߬.´9°üàz:ó隟†¡þ‘Ëz@}yú"8.8.bhï¡23c¢>(ìà§…”úʈášBw…h‹-ª“ê²±2ÏXž—{vs6T糎íÌèt3kŒ¨€kKæLÊ›’”a13<7—Ä-R*x4mðG6þˆâ g{ ‘!sð IDAT¤Ç̘Ѕã3IòSüz…A {Œ£ ö74&ØyF£ÒU”è4ÊJ¥Š–ž£&=zpîóæ8dž_yo¨¢#¾ü +¿íåСŸžwJÓÌ—ç í:{¥™óéhÇZÕtXꦩdÌ[™©¦_}ɹºˆ>ÔEƒÚ„­)úb?1ALä) `?TðØÀ¢˜`û60Oþj…¶DU5åL°¦ؾM«4éW™ŒZ‘TVTQìp&..Ëž°±G§pÅ+;Ù¥m¯ôŸÛ3•»PÆ]8²âtòÐ5¹4¼`Öœ0m!é§{®»P¶êN.gÍØ?MΦµÊ¸Å£¡ ÐIp„§“JV~œ#l*.诀FííÚéÛ¢ê;—-ˆMÐç¹BƒÚ„ ªœŸÇ‘7ôQ„2ÀÇP6¥ù´Ün4›Ì0Ù‹]MºÇ¸IgÑUñ{Œk¬ÛŒkÕt@»ÐÐð¤óÙ}ú6îüÁg“¯î€¨ê¹³$eôÝ|±˜9ÏLKÏΦij³aßU¾®=MÈ £»ÓÌœ­[¥<“§ÙI餿1@Ñ¥¢KòêŒ3ÙÂv¡â¿rçK蹘oK@“oH\½slÿuI|”#¤ƒöTn2yýøq¼7…÷)¦Åº 1ALn¬ 4€*§3 yÍb÷TËèã¼5U›´UtqÎbÐtzµ!°¢Rì¡ÚÖ.s–.²>m+‹‚™CIm6?·ìÂC­v[…µluSÖ\ãαóDGµº"Ëy¨À†cõ.s¾½Æ-%ӻݤxu—mÞãÑ”@?€>â€8ÈYñwÏ€2hÕAͬßK:öëçòÑ\ðÚÌŒÑ]•zòÛºyOëôÿí]|TEw ©„"-‚€ D’@¨¤JiÒT:ŠÅB“òQ±…N"Jï5PTB*ô\rý›}{wyWsw¹K®ÌþŽcoßììì_Þ¼™Ù"},åÉK ¤¢© HRV$@ôT&%eœ1¾ü÷;NßUëÂñU¿„¾?Šì‹úKïfû¥l™òYƒ^ÌVùç°€æîªáínLz¸>†½zg&[x|bËaÿ|xáܨП5ø²)Ép«Ãñã4ÁÕ^) ¡ªDÕò³ÇmÏÞ·¡EIì 5¶Sy¹Ï Ì#&xpïÅ~~ ó‰¥l“ ìH×”JE¥eŹ)eo ¹2±@öh©¸D /,‘I%bø'»•Š]‹KšAÇ.Ϧ6䵤½¹ÿßña2yØgVŽhG £ç]8מ˜§ao͘ðü0Þ 9a°rŽ.±JÙØ*{÷§6lÖòÂkðù‚®¯±|% 0_úžÝ#mT 0?Ž$©¨¹Ï ÌSXÄÞd/_w¥m*,-ü_6f¡ŽìÚ¤°Œ9úã ´°¨8/¿ 7¯àinÄJ ‹JKË´ Gþ.Ð.¬ú’ §¢B­zرE‹# uí†íôù@™cqÀ{@ûp½*VڦܼÅÿ&ÍfH⎠Óõ­Íôs´µ˜£\Z*˜ /¾ ýRãDÀVà¹xò¼Bx þyâ•iÊø7mE8”¨ðjHkëÓ}•)w¥Ú”¾k¨4k%¤µpU/w¡HÊg\`Rý&Цî®<ŸV³\Ü|ì·(¹ó —ß;&ÈùaÚ —ÅyÆÝá{Jƒ\}gÙ<ÄPÉÄV'Û¢ñÔÒßûfVÁóÁ~®®Š%³ö8ä`›ú´šáâÓ¾ÛSØc/PfçA€_ãV`ÏâûƒBuž^cOWßY6ï*,-v÷¬Iµ)ÍÛ¦]_¬søêÓ„Ä {›$#…Ù¸í6‡µ©‘°!™-"€a [”©"Á‹{¿1A“4h-k›RæC%Ú”k§V$!^7 Ø "`·`ØÂn‡Î©W/\”gŒÀqŸ¢2ðËÖÒÖ}ÚþZSiÊסÚf Õqî9Z¨Ž3˜NØ [8á ;F—5‚2©Ø«V œ°Â#ór,k§Úz Õ1F”ô¢ êþÉÏöf6È×uÒ…Þ©q^«ž»?Cmg'…ºjc™S#PþRøàê×¾Ïø{úÕ¹sjyÓ˜IbQ¢Üâ:ÍF:5<Øy{@³ÀF@.®5Ä¢2/SmPÃô¶Cµ‡2NÆ*S¨©?}v}àXfÕò”öêZ“ÊÉzžAµeH: ëRÙ'³?ZºôëÙ¦ÉÎ [Ôy9ë¯uÁQÃÝë¶ajðr’7äÖ²÷@†L&•©'ð°Aš:äyÓÚBjDÀ¢ÀŽ{4 K ]kx0Œ··O]©XÄð4×¹TÆfŪEͳ*Š¡¦ìßÇ ^<—™;|ÚŒ÷‚µ$‚M/àÎÒFg¡VU,p –­Úœž™óëÆ¯=<Üíç¥_CÜ~ãñ²_ÓPÆ«~HŒ[ˆÔ³o”NV½ÆMÜ\ç%,Dª°PÁ6uquƒ“yø.5DZë\ Û †ã¬vpjÃm­æ`ÍLU|ÒþÜ)öš³×z2;§¨ZLÙîý"ÏûÅðU©D¡Â“.é,¬ !« lÅ  ³+áð¨q^¾ü·Þ;Sã86Ÿ”cË2/+yúÀ«q·ÒüÈç\üN,• Ų’2iA‰4·Pò0O|ï‰(%+°áÔ5˜?6γ oÒ1 ”ô]žRÞ´Áêd©ËÛ7áÃöRŒÀ¼†ì¥–Š11öƒs ¶ä3w?WW•” áªá£ô&ŽÅþI÷ƒYPsîdð—xxÁ…Å ö¨êbåóCµ–Õä+¼§Ybßin•Eo €¶Z“-ùó¿n3š@3ǵ^ÞjÛ¾‹±Lʺže˜oE÷¡ÎBkȄڟµP!Ý[;>þèû½bZ]]°øhÿÄå· \¾p±‰®B;ë0Šk>ƒúvøõ»™în&°à„-ꇾšpÄ£MÝ®õbÞ *•É}€=*“ȈyJt*Ø©R9| D¤ cCOááÆˆîõZ¾ ¾Þ¬å±+g4Q”°AŠ?‡%ï»QŒ£«ÂW\ºØ«Gïß÷lìÎýóZkñµ?.͘Ü8å?™°9œæhõ&Ÿ,`êÅ=— A˜=¬zM²3¿Œ¾ýd_³£«xƒ^¾öÅù“ÆÐoèÚýÞ'ŽM»N¢B¦u½f𣠠8´n\ c;.¼Ï#¤Ý~ÄÈêƒu7,íÇûˆ»m<[FCnºðŸàà  Óæ®5,s‡cŸzx—RR™9½ÚuùÚzØ\y±^5#°ïá¶ /•¼¾Í6í…?’ðÛzlJÌÖáL'…ËWwa5w›¯2vþø¡iÚTK2©”˜ž›®òÜ7óX%*÷Û·¼^77)¨U©lqN‡g÷{K$L‘@¬UÕ˜¸iC1 JA &ef¹yC_ºÃ4 jûOv Ãìß{wؼNL|R sïÏxfØ«+h@›©ÐìÛØ—ÑØè±L3’¿{Ü®fV%eÇUti áÄã5~æÕýY×׸£ªkgÝ'Owm¨ª‹¡q¸éç¯;€UQô_/wú’Õ2–¶M©‹ëPõãooWz­Ü§ñÝlòJÅkYìûò'ï+:4¹¿"£³ÐÞzòV°Üšžx‰´‹OÁ»Ë, y± Sfý•+l9X¨æ)TPlƒ¿]4~ÜÑœöØ÷„k,úc–ü™pãŸNsWF2‹v¦¤1[™N[ÈD¼ “+v¶§&‘ÃZodýU&v²Iÿ‹Oà‰î®- ºví&ý·|qêÙ½Y#Õô¤—?ÀbÆó>UñLÜ¿2\‡¦·Ik@ U¾6iÛšæ•c ÕÜÑÀzˆ"À0Å£¤ù#À(%꽃Œ½eÄ,•ÿݽøJ×"Öåkö¦›güÖÏRA æðg븳åÉÌ»­â®Ç äïÆÿ/S9)ÏàØè`ež\¼8®Þˉ©ª©°®-4ž1¸©ÊíË´„å嶦éM`Ñ€^”¶Ïú›ÎÂ` Àz²O®ølø¶õáøJÌ”d½*®C58¨x@ô#(  ‚â„è©âCB§$†*‘A™¹*´K¬å”R$c”sîx›²Ù«˜« /ä¯ývWÝß vèã”™R˜ðo±cRQ+ý½t”+à‘bݳtÒ"oó:±)¹°è)xwÕÍÓØ€ÔýÞà\œ\‘›]·v£šüõ° iì%ªªZåçúòZF †óP)GºÄ_Ç~4V.¤3ˆÀÆmûvÉ­†Á”ÈÉñ""`KÈå÷nîÙŸ=@qÿ7·qË7¸ò­ÙÏ{`·;Ùy"1ìç ‰¤B‘¬L$o!û-KKÊ$‰ì„õÉ¿°¥¾¡,Î…À½ÿ~gžýú¼ÿøÅŸ}îæîåîå#“Éa*Ýzê> JeòC­ŠËÅ+¸øéíZÏ´àñ\ª¢=l¨$ryQî]¾[}Ãlº Òx°ÜvMçîå+—ñ]܈=ªÔ}\=h^ž³•]åŠÉðjøòB¦)âÕ•k€LÿÀ„Xå }º¢)~ 8HÃÖ[°4ìA3\UsªR÷‘¹¾•ËóACc” Í[º7È@ì¶sNp³û.aœ6xÁS^Ày¨Ðu¡€Ý#‰î—¤¥Í+gc¨ºt²3@m}Ô Øc'Pf;DÃv8h(2 ÚTÁ ­Db¨ìZjHúô ©ål •èje U«U,¨J6ý?vTy\ªgl×CGW¥Ø"  †-ÄbÅjz a!"`YFˆê„qvç^wOE •£û¸zм<ÆP-;vFq»pè@«¢{¢{Ù2Fè*cd|÷ó9…Ý~SÃÍmÇ/kT ”+°ÓP±F5€Dˆ€ #€^§ c¨5ÌÏK×–þÝ A^ÃgJ|jåzJÓzvl.>¶O¥A©åúãγðíPÇÎ ˆ"P­` µZá·tãüû÷™ZŒÏ䟟.æ0xVÞé}²æF   Ñê²êŒ¾âBJ飩¯]e9s(aìFmË®¨Ž9×'Þ>z!õXÒø>r>åpâ­ƒgoî?ýïÞ“ÿqüÚïGÿŠ?|y×Á‹;$ïØŸdNX°ôdˆ¡{íu.Ú:ÑxŒ¡ZgÄ r•–KÅdvYþµ‹¼¢¹·g?¸ÕØo׫b¨4£iždK.ÂSøí¸f_Å'G³¤™»MdFÒ|…uõÄtì4ótÒ'ÑdE&̺›’˜=2(~edf¶ÈEþrb ~v~E7ª 8w„üüíÈ {Üæ3ßžˆ!`’ŠÑ9@A•&-œêõ¯â?!dF4ýþ·§ü’8ÐgîÞ6bá<2RÖHÃ{‡Ã6¢×¸!½Ø›"`X/†êª=—Éúëà"¸”–ˆKÉ„O÷ü È-©;dFYqYÑ‘Ci—þùþ²Ì'·n=«:§#ôøfÿöe\ØWñG+W1 |+ˆäi-ƒu bÐ<-;‰  š˜6qDJzŽœÇtöéãL÷ÌçÌi¶²BìA%.šŒjÉξÙ, Šq$gBCÔÑ0à†øáËÝéÑ3·Ä…Žo˜ÞÌŽ¸Ì­´ úb¨ž>Rº—/G÷qõ yùò*hS ‹,Œ@àü¼×Z½\K,–” EÂ2‘ T(”]J½ùB÷¾¹"ñާÂÀžÀÆ-$àvêÍ/€ŸÕè”’ oÖ†*çõ)–](Ñ^àË=´xTÈÿ~'µöON³FaTæÂÞ&¬ a6$fÇ0™Í!€ª•Î,ZÌ|ÅÆ!i´HŠB{D³ÍA8¶Ùˆ…ì6(€>ëwœ ¦ Q%2+;¥’Ÿ¼Þ¢?»Ì9ê3à­âß"*tjè´’û•a_Vôi£ø3dzvZýåî˜X¶VHð.\~@ܼ`•ÊäKW´f=½ŒD&Ëzã,¸|Á÷[bþãVÚiYfgß S¾m ÐÒv:q 11øžy>‘éúÁHfå§ç³G°s,ÌHab¸]ªJ÷=ZÉ<ô0´M¹Ð¼aQðjåÊ‹KË„ƒ#VŒùn\÷MùÅùE8QR(jW§ÆòާG6žúñ÷—î>:w]ñ@6ªQpÌ6;uRÛK¦ªÌN‡Yv">éÄÿ¦Ñc›ÉÌ—ø…Ì pº—¯ÆOn«lõLffŸŽÄè ŽŽfÒ“Àý«P\ÊÄUåžFíê‰-Uˆª>aY0Y¨;±˜ÓYEjpÌN Ý{ÚܰøÃ¤5oà4&î÷ƒ>É+§ UÛûÂæ$$zJt*œ(NOÛ”«D*+ˆ´øØÈOø`GoÏ"ôàœ¸;“IúªÛ̸L¨N.QæW‰PH<ðkÆ€¿ðTѰ™í W§‚°ÊÜ=šõ*Þ¾[ÉMC †åU¢º¿ˆYΉ >_%Ê3·Ï¤Â”·bl„¢rdÑ‘}Rã>¥HrËVAÁ‚¬€®¼û,D\l©>Å+UÖ™ãòîQþAQQÌñ¤LµîkáI®šÊ¤r(ä!7#]‡ZÆîåËÕ}•Ïc UëÝú™¨„¡.Ú6è“Í} Š@§ JË=x}›úŒÜùÏ‚7ÇŒÌÍÀ3IKw•ÿ[£;íªQI“¹û7’§IÎÀ[*ñ^ÂÓ¢­P¨ ºlÇÄДLú%×ø© ŠèÁÄÍZÏ„’Hr&¨q«I•2Q6^\ÐÙó"µt´¨¢d™¤ÀŸpÈØ¶c/¹y;Ô™QöKíoÕÚ…¡J„átJ-¯‡#dâî߈>€<€î6i¬§ºŠ§aæ´u.Y¿ý”9íãÁŒÿ[H™ÜÊ@¤”Në©”X¨›®òÜ7ó@§‚úôÛ·¼^778 ôèâœÏî÷#¶H@6"禊¤I_3fPT7ø¬>à _?'쇄3Lò—Ÿ0KÖ “¹‡Ä„5Mæ$ÛŸ¢#>:6§72eó®Ä¹êüÓפG²…n>€Eò—c¶„-$?gá®Ó%C¨’ Ì fãöl¶JúšŸ™ÏYÎ{?ô)óz+:ÙVc!ôheìñØ/Ub”wA ½TÞýÍoЭzw2“0ÑàùË$žVÓ¨Èx&@{Z+† m¨üÅZ5X`yÀ+VPH^Žæ Ýßc¿Š„Ò2‰°L?E‚ó÷1WÒÀ\}f©%úüÔ,UþŽz/é§€Q£*BgÍFìXÏ>0 ÁwÔ€i?½?¤KÓ¬S°P¡äÜÿ"?¦àNËŽhþTk+ ¦Kèj&:F1?5¢sOf/Ó.†K#'žFxBíe=œ i]«E•0$ñÉ—"ç„*Í'ŒèÃ(ÿЩ´j”ÊÇž²£Uú¿nTųÞ¸ºçܤ¹¬8 ° ò|À[ëß+/²¨€»]•uß„ù»÷ôVWñQd¸Â[ $Mþg¿Oâât˜Œï9pÖ¢vIs)1[ÃB‰n,>ña'•ÉÀëË,%@ˆÉD_fý•+l¹¼XK¡ª¡¡CЋËF€üØ›dþIÑÝ–ôþbW¼Pàßüð’1Á+7€ÜÄ¥!ù)Ã"Ø›?²7ëKïÀd§† ÿ<Š02¤÷l [‹rS•@&+;•Iß7fÐZz©G$K2B­ Î!Qì>NîlXè2býò ÷.OU Vÿ©ÞFÐÐeÈ„#ÅçÃÜÝÊDŠ&(¤ÚEYW³ÅraX n‹C‰ØiUb«2êUå/¨2¶³0(J„áW…ÒÁÊ­¢Ýk5†ÜFu >.¬ºô…κf’’E2¬…zï P,!ž^øüݽ˜ÄP% P5ïa3ZÑQ%pÀæ£2·ÏŠŽMW=ÓuY¬¨Ó’£Ó:”sãNdµXUÁ(pÀç㇞M¦ZÐäYØa.ZÜ» Áß«òë†ô[ÌÑT,“ÎÎ‰à ÆiÊ"LL½¼ÆP+žíU-,äç µ °¤°H\F@ IDATPT\ *#“_¼óø‡3w½ßyÕˆÈwÖ Åxœ¸íJTŽ —’Ð)èN6€J>ì\$ò-!?eš._LþêSfÉÑ9̧«ÙÅj)èÍeÛÆ‡¤f™²T`@XêØORæöû4Yêú U˜S›¶›Ò ÌŒQ]MX»,1žRö™é̓U 5œ˜´/lø¶£»Ÿ•SÂN25~o&FtÈz1TrªÎyMFH…$f"PPòàq™¨çü ™H*†(“‹\ê/ù.¹ÿ$ý|U¾i;™×où>Ri‰§^› 2V«e’´œ<‘X–©H$ŠÈB0ø²ß"±´¤ ¦./ؤ”¾Vé\m>~Nì‰%©ãWÎg‚Æïúnü¶ï•ÞÄÕÑŸ*¢KŽBa@§Kæ@Åsçn|È¢?ª´ùøá½!ÐPžÀðZBT,ÌQÿ~‡aÄüÍÃÇŒQš_7aX€ê¸;H±Rä'~r6Ð`TŠàBÁÖï±Ú·³gO5ï²’33¼¾!kÕìàÊ0±|Àú1T2•ŽMúô ©å¼—»ve‚B/ÊúÊÑ4ƒß•D`㶃}»[x! <¤*)VGŒGààÉKúîaØ¡÷—­d€1iï¯KUd¦¯L5¦³h²âß“3öè´öfÕÆJv‡À‘Ó—?ÿì †Ç«å×°†‡ßÅMX {0(tWš—çÆPI"€ Æ Ûóš¹CoÅŒiß4ç¶n¹6<Ðfä±@—…hÅPºµG+•w¥z˜ráêd#¤BD@ìì-“>X›JÅî´älЄɹJ$5jµ-^µêru_åó4†ªC';ÀØ[D¨:ª×$ôþÝÎáå­^aªtlI6†ªýÊÛ¦”9ìåK´)×NEÜí”Ôt;’Eµ/š……XC`Ô`Ö@y€X(`÷òB UÛG«­§qe`«`:ÇIŒ1TãG¤Ú(5FaÖyäU[÷°a[B5Ÿ-Êb!x ‰¡²Š¾‰mªÔ}•ÏóËJ -åHó’ÙXxÈá¨2¬s#WD €*´®ØÇžÕ¦Úz«ϳ1T]ú¹{‹M#ˆ€##€–¯#®ÝôÄP•‡ÝëÓƒ¦–óµu¯Ýà‚"ˆ"€ &"1T¨1Tø¶”mJùpÖ¡b ÕÄQArD04PÍ «XÍu¨º|´¦Ú¦”c¨&sXÝI¿wä”b£mWW—â’²½‡N›Ãë ¶@éí/]ŠO{Èoiç!¿æZvQ”³Ý6DC)‚€õb¨xj5ßaµýj>xø¸D@öìåóùW®ÝhTÏ LU6BÌ1&k5Rrë+· îuÛø¸]+úçSÏzϼ¥ñ""P XçÝàÙÖiç·Ôi³‚q7¡¡no ;ö[BfT{DÆ„~"iµ"€ëP«~«5Þ°A½’RiaA!ãÙ>Öüv²’¦vê¤Ã[jV\eLóð )““œ£—(æ›ß®c×Ôª€Õ¯–ÌŠŽ]}V 8³Z«0pÀç]?{wÖfNùÛfE›þ-•¨¨\Vó”/Êe„ye˜ÒûO³þ}¦nKQö)žðVVrÂ_(}ò¯i è?&të;r4ke%Œë9¤#ù¬9Ç0ç– Ytž’€‰9g+½Ãfñ<ëObB?—îgÒ¿7¤#­¨Þ K0gѲ9´QýlñŠÝ `½u¨C­æ›à~.óÃaÙSß!-:ŒÖî¹ù”çû_M)0S¬0ã^ê#æÓ› ™²yWâœ3Ûržj:PÕ0=5øƒÄ£Ó:KЛCÂR™)Ãì|™LF;ÊgD.b!O\ ¶)#H…ž¾ÁÒ2qÙ£§Ì#ùý[Wïæ”¹ù¿i*åTígÍÛ´J¡#Å;ßmãŽÓ‡vœ^ÀlÞ‘Ó¾}ÇýçXÝy>)5Œ9vž(àÌóç™ ÆêͱʒÕÄJ̽>ïÐì^ ¸…wœžNÔ§z+,izjÐû§MÅsÈÕµ×_Cµ×‘3,wöSùê¼Ò¢üÇiçé¢ušKdu'¥Ë…ž­›ù®«ûjjÌÞ0N§êf€¥:0 ÕØh2ǵ<±‘×[ôwì)ø¿7ÇvɦG§µ_ÅÇ|o—çqJĬ…ʯˆ‘óÄ%r±@.,’• $¥ERò)–ˆKËÄLA>Ù-œ› ‡CÉÜ#Ø Ÿ» ©Óö‹Cg²³‘ $3;•Iß?nÈw”W÷Hy;ÿgÓ²3äáÙç2»¾uü×äŒÁçN2]çùs›3!ïnàÄPÙ.Û„Ž “¥Õ ! éÚN§Fð§}!`íªˆÂÁîõ ÈÛ@v*íþË@ò8ëaI~‹–rÊ<—NhpõùÆÃcû¿`r§#bÃ>8•8­ƒ¯¯Ḛ́‚³Q °ù膗oBð÷ê–kâê9i÷}òî¿&²³“ì-ËW.ºÊeŒDÀ“”ÊA¡–K…¥Ò²öS$)+‘‹ÊJÊ\󴪱}m×ÿÝ_§/º0›Cßñ›ƒS9h5îʬ:—‘5|fókBvVòq&ê“ÊγÓhŰÙØÞ !Àcc¨ 9w†«û*“‡½|‰-+!>FÔ¦U<äÿ¦‹æ p[4í©T2óWw露¸Pð4EŸ$äåZï'`ø¨Nû>ôU¢’fù’|ã°ôô,¶01iËšNq¤ý ´å<—ô¡ª"Šý¡×…svÜ/Sæd†Ïžú)‰°Úìè»%R˜–$d¤T›É…%R‘T©„¨Òbq©@&*• KD5òar€™Éؼaw,=@«4eNoÞÉ ¬ú·ïÌ_´óNçˆ ò™§!ìJò•H:Z©7¬j“(c¨šº«ÍËc µ:\&“02YZv!<›jz»7¨%œ¹ôôÒå?”æÀ” ³Rô´s›á=¨},ûùŠa­U…J %g™Þ ÆzIIíqRR…HëFÕH†?{;·äƒµM† §VTà€±=NͱÃ! “’d"žD Ê…ÅR1L‰6--–––ÈD¥ÂRX$ˆÝ ‹Š*X/A`ÿOƆ(¯†ÏÛ0ŒÙ4½Ó«CÈç[b8µ‹bî0à¥ù;G2i^/CÝÂ;vOÿ~<婣ݕ°Ôn°^ •×2j°‡·"\:òWŽl°[ lKðÛöíi@¦…¿>üûïŠsïz‰îlßüå…ž,^²Z*)2il¯ÎÏé¬X*$'ùaBª#§/뼇·oX_ðE wo/_ð zùÔãñˆË—ê>J]™<]‡ª¸¿1†ª ¿•ǶvI»Q Üykô`—ö­ü÷emª|ˆÐáeDÀŠ€Çwí†ä¢â¼|Ü<ï§¹¢¼|Aa‘@ (å´JŽÇÒNìd Lˆ@5# Œ¡1*7åÖuUÅPÁ6ÅjpÔ‹õ¢¾y+ðÁ„ØÃßýÐ|qQŸšÖ´ì^¾¾R±ˆÝË—øeµõ yåCµÀð D@{AÀz1T8µ|~/ÍÛ (Î*§ÍNEÁgý;Ã~;.ÊóPÉüsíu.Ú:Ñxr*Äd釿Fì"€ ˆ€S#@•@1T ÝÇÕƒæå]Á ¬KK <½‰OÙ©‘¶‡ÎcøÉF e4„ÞÆÐÁkÖGÖs¹{ùÊØ*W÷U>ïJ…Ûµ©õÇ[@M²³²5‹ð7"`QÕ¶Õˆ¡ªtWš—wÕÖÉí2CD@u5 @}dD °8ê·œL"aܘRA¡·O=m­¶N4ž†ÄPTY‹Ãîkˆ @DpD”Sˆ¡jê>ö’ht¹«‹€jqgM_šwDm«OI7@)ÙóH,Az¾É3þ k%% Œ‚ ‰DЀ¨Œ¡JØ*G÷U>ω¡²šSÕ ðzLsUC¿þqáûø cú´j¢yŽcÕÈ‚­ UоV)ÜØ˜š1T¥î#qÓÊåù “¡9•ªÕ4Xº Šò•ÊäÅ%ŃºµZóÛ‘´Ì{–o 9"V@@psëÓ~ò]EgÚùIu+Þ)ÌøÑèvrÁ.vÊ. 7)l4 ߥ%d*W÷U>OöòÕ©“þÛ@B“‰ÅPçH S,`Â| A¿ËÞxctVsë2SX*ƒ«Íä¡ ûXq0âí>gëäÖ¥²•†ǭë_©Ó¬LV0Õäozì Ù´tX§rÏÐ!­Ü6÷ß•uw¯ÛÆÍC~ïò:ß–“ÈmmL2â&6† Ò •A€ÄP•IŸ4µc¨•3늄eP³{3F$–––y |µÃ…ÛÒA1~*v_o{2måíŃŸñ2­¬„±c·„}¾óL[/+aëy&ˆæMc„Ôt£j¤âÔ…¤n†º(mµÌÝ£,¸ý8Æãe¿¦¡ŒWý·ë’†µlU\” à €1T‡º„B®þ)QœW$(” _ ðáöði‘ü“qÏO[zjÕôV/†©]2DÎÖoˆ6ýP¥AûWd'ä‡ GÕâ «aœ2N.v¯×ºnËF^»•>9ûøŸcµÅY3ÎÇ.ï_Ÿ+ ?Ÿ'óÓ4H5WƒøØ¤S#€1T‡~±X¡Ó!/óFFº½Ý®æØAñ–-MÂçïÔÂÜbé¼ågdRñ”EgMèyVòÑÔŽuÚ£`õÃ~¾9OY‚5{ëyEùØ9DsLV]e˜ó«c&'dšÐ¼ƒ’êFÐ[ºŸI_7vpÌÒd†!`~³tvLÕZGêꅺÚzÁçµéìíçWúð„§_]È Cdž6ª=ü›UO@›Þ_œ ߦ÷-gû{C»õf?ïýžEê_\Ú{ÞvÜÂt(±†6ÖŽ¡*b¬¿ØØ8ˆ¶”Xb$‰D,–.;ølS±X!Õu½¡îìþ.ð]Pâ5ˆÛ£îþM¹½tó5#y*ÈÂtEî’¿aýÀ›@×gãì­Š_úº_£ãï "…+·F-6²cÌÙä£"€Û¹³§{܉ñW¬T#><<›)•‚NMO ^yæ°?(×ÓŽ™†Ö±-‚2¡×½KßµéS˜–îí±àìn|ÑÝûyÇN^}0%´¡+Õ¦-^m~sñ­Fs´íT½ýÉþý݉ۚ~ºíX$K’ýûö$æMš×[/ Æ# XˆÊÆPiž¬=Ué¾Êä!†J4hiq¾gM?Ô¦ÆI%)…bé—k”‰xeBq™ÐåÌ?$ªº`×\œ[RTRJNi~íy#5ñý&5^ç5µ`VN*Óñj¹ö§û–Óð¦OoÈäÙ)KªÂ¨È^Ÿ%›Ñ´ÂÝá#fW²—ŽR]'ªš ‰mÊIl ô6-èA”l/•7Þ(†š ØÔï¼ì×™7j|á±ô\y’9â¸ïO]ÛÙŸ«M™Ç%>hí4@WQn˜!%³ùoϰYí¦ÏÜó϶û1´¤6ئ M×N«}õÌ©OË+Ïm Ú4ãfÆžc{ÞNxGFQ&÷UöÅwbÞ‰Níó+†~|ŒeÕmæ±éá€ðö÷gþp‡¼ú hbŸåÍb hÅPº¯2¶)­ëª­“tk#0¤W$|¸­Ì_Ÿ?ǬH¥¶)½Ô³…\.#ë¥Ô“Î' %i<ì­Ž1 3 v(æ%Á,ßìþâüØ-§ÏO%Š6+áÇ#ß™E™¤=Ÿ=,ПÉJ‚àë;Q¤0(*ŠYÇ0±óëyªi äè¿õ¡JûÍyZȽd˜¡=Á¹wqèT¦]S•mzpߟÑ};ñ;òŽ>Ô²mK…6UŸ—dà&oê–¾>(o7}ÛÑé@wqYŸÝÛ‡Éùý‡™GWf%Iž¤þÓžàDY«™T -Áž½Þ¾ O¯¶ÔöÝCCסêÐÏUÔ3l†E  ¸¬T$ëV *T.“ÉåR9$ÈÈ4Ýú4 £¦žÞè?nÜú;lØokáÙ>oã0eaȤK¢¬°ÌU1=ӶׂŠÂÀþcB‡|ÈÌ>¨÷¡¦hËyþÓƒjL÷¥Ž²®ûìÓ³04ªÑáäý‡®J¯–¦›¡] :µAÏÔÓ«êDL£~êžÞž¿Ò=5xßÉÉf亦(AMZ»ð ÛVð€Ü߿ٱo'-ûn (bFó§]‚ŠBWZëPuèASmVŒ¡VÅÈUØFa‰ð•»L&)“I„àÜ—Ë„r)|“7)ÓR`ÿÄÓ¨žtÂéÍ%Th÷j¯xß×äã´¿uØ~Özó© çäõ㥋¡~j›¾òðÐ`mù@‚6]”ütN·:UÕ&Ð]жKÓmç’&Gé›…”½gÒBfáÞ­QLÎŽ÷W&ý¾ÛÛ/k÷¼Ø>¯~²uV¤ÆOÝí`©3#€1Tý_>mk+=ÌJØ|wا¬É… 0ðúB­b¹g¢ø¥ŽmšÏX›¼œ÷k+ÿ!ÃcbcˆjdkdïÙ‘ÓoˆJ¿æä¤4õ'³”²/¸ÃtQ2 ¸h33ïëì&’Ø©œŸ÷—õÙôý¢!—´2ÆI„T‡ÆPnHm±C0}fúw©Ä'¬9OØ¥E™lW{¿b=(”,9– Ú4ëþ£†-|[ NÐiÅêî@ää£ßûOzwX,½ÜtèæUÂÈ~¶ÌÓgÓ4æÕ¦ly¹8fá^ÍŸÌ}Ý­`©#`½*/üµÉªÕ2.®5 ùðN µ%»¾qÛÁ¾Ýõ¹®Ìl¨X 5ï×LNX ¨ãçþ2õæjS:ûW#Âú4Ÿ¬ ÄT=ç.^ÿâó…5ܽaÙŒ‡·/¬C…bPÝGå©Lž¯šË¼pjÕ0¶ˆ8àÝ…¸éÆuûujSë,vÇ€*ˆ SUàæî·¶4¯\qž Ìe²G\PfD°A@§nœ®ZKcƒ¢HÎŒ€F UWš—Çu¨vv_É ®8°³Î ¸Ž‹èT⦎‹ö̰^ •¯OÛ ("€ ˆ"`4Ö¡ªxêӉƔã:T‹ 2Ac@/‹±H!uÀu¨ÖÁ¹"ˆ@5 €q‹j›T!`½u¨|í¹Lˆ{#“•™™~7åÖÍ¢¢¢*n›CDÀÙPÅP¡ã–šßKùà^¾Õp/åçå=}ò˜6\RRòÜsÏÁZ¨ÒÒÒ‹ÉI¾¾¾...2™,ìÙgkÕò©á°ID@œkìå˗‰›r¶Låò®¥EùžµjK¥pî&¯´(òˆ¹µ€“Ù  øUzëÖ-ÐìYm$A¹H$… úUT*\=:ôhþ_;÷ºd蹯b àŠ[ “nò.íûý²oç‰#BÙëy—®ß•û…êÃÞa nz6#Ô2m Þ ‚ƒaÛZ½ôºEªîRw²àöã—ýš†2^õCbÜ®gHÖ2N,;ë«qB*ûA€>iK‹ ¼ýêsu_åól •hS’¸yûÇþ$…ᤴuëÖàé}ôèôJ@³Rå ?!¤ª»c>Œ€@Îøµn|õJfn[?#Õ$[ “.r¯ŸºìÛib‡%D~m_ûT¥7uâfO_?¿»w3:5 &ÝɺÛ4°“ýŸqr±{½Öu[6òjÜ­ôÉÙÇÿ«-Κq>vyÿú\ ùù<]ç¡ê‚˪E@3†ªKêÓúÊ]©6¥¶©J³Vm¿œ®5jŒ‚y*‹AzzzÂÔ$ø Ú¾iy£F,…KÆÉõgÓYf!±¬k1÷úžÔ{Ü)–9u”x‰÷¬ÿ›^klÏe²»%Ó´ÃèXö¡ïÜ)/-+¯é Ô6-GâÎÙŸ¸¸1gºÂ„0éµ;ŒÖ ´¯øöã Y»I`íYwcƒ4kHh;8¸ó\77!ãîWòð„w݆Am:§>r ÕþMÊ–›Ñ6½¿8»ÑÜStê¥oû-?¬¤Çü-3#ìÙ¶•»{ùȤ¾«W÷U>ïJvÚgmSànÛ 8Žt PAk‚k—êNú3<œœPMu*\:yòäáƒz¼úšyÝοz%£vhoÖ< î<‘Cðпž×ô¥ü+ûÆŽè§ ÚÁcý§+>ý¨Ë÷ÎÙ=wûM$ïÝw57¸µ2ÔgžŽQ«¶K¡žàmC 7xM)ð…iéÞ ξáÆÁnøÇN^}Àž~Jµi‹W›ß\|KC§ê4é9} ·ö›Apäiòw¯~õ]ôžIíl°ÿ(’=#1TP|ôÃÕ}•Ï» Šò¼jÕ¦Ú”æí(ûjM0O!N…p)”€è7nÜ€oÈ7nÜÊ_y啽ìéÓ·Ÿ)½ÊýlMRžøÊ‰3wƺÃ2©ó"|ùùùeY»·¶²ÌË+`r3À¢e‹ ‚¦ù[ÃP'0X«r[Tï³ðf~cÖ|õãôtZ~k¦  ŽOE|+h¶š.çe߸μQCàË¥?èàÊ“ÜÈ«vÃWiSæ1ÏÓÛóçþ?Ž<1ÆdI#Â{0»³³†œ'Ž °0cx ŠókúÕçê¾ÊçI Ue›¢j±3ÈHe†R/…°ŠlSšàgbb"ìØ¶uÈÐaùq/ÖyQak* á±~Šé0ŒTð=#¥0IutÛü«;ã~ÊU=â9,ÐÓ«6×Ckô0¨pfìê._2M™c™w™,&´½‘An“š¶>±gØ,0ûÌ=ÿl»CKjÓ“ÚÖN«}õÌ©OË+Ïm Ú4ãfÆžc{ÞNxG¦¢7`£ÒKìwròá&í6°ùì?¦NÙžJr›5g×ô9ÓÈïóãf€[¸œ@YÂ\ZÞ/>hí×ÄØ-Ï“B¦+søx`E|hC¤ L‰€F U§Ô§õ•»jëd‡ÄΦ:>^ªSá›f¨f…3 '-ó´ ì"&))©RÂçççS%‰=“… IDAT2J^~­÷fv²ŽGNª]Û—¹üÏÕ6èéå€R祗šÆZÏ0 û’ÌòÍoûkkš›ÀëËì;uFÁ> TE¿÷.ŽÊ´kª²Mîû3ºo'~GÞÁчZ¶m©Ð¦~êÔ€>%Œ36N±þï:ýàò¶¬"¾´|Ê…ÎkâÖ°~à©ñ9íüÿØÂ^¥IÛ›|·†jÖ©íZCõ(;ÛKÕœ"Ÿ‘¸äàïþŒî+cíWzõƒ§tSnås~áºú(€ÏVŨhðÓ78Ôï*^bÃj»˜(%Ú çÎk;ûCÜT%-ÌBŠú©xz{þ6Ê”I”Að8P‡ÌS§^¼ð^[@;—ÆdžÊjYH]Ùpÿ°ã+¦.YC!èð¾Ð÷­®ÛïpwgÕdöå“iÞRiS 1¨P)èõ­±Õ"¶)µY1†Z 7ʳ-ZÜúï?0@A}‚f…Û;@>+«¢é, ÞZmýô‰$tªJµc‡‡’G¼*)g-±µÛö­|ñç9y^,\Ü8Èë-øt1Ô"²çž‚mº(ùéœnu¸ººTá;±$úÎ}û£Å 9‘ ±Ã‚ß'E*ñ‚Õ¿÷ÍNøèÕ72z|7½±â—³êµFUHز„ª ­Æ­E\Êê ÙÇ ”¦ `½*ž‡jÊ8XˆÖÇÇ7<²]lž½ú¼>pð·F½ &é®]»À»«,Ô&²AªðúÂg×Þ£ M;¶i>cíÝ…æ¬ è? ÉÏkw‘II›0gKÈÑè@@ÿ¯7¼œ–“C “ÙëÙüv¼C4±V6ÉÈSRòEÕRœr&¯tj¢ÎVGC—V¼ñ‘ÑΔsœ="`•óPµýÅö½ËÜ5¶»±]P6¶Ò!U‚À«½_‡v@ƒ.9– Ú4ëþ£†-|[ NÐiÅV$QÛÁoÇ_þG»å}§¯ysÚÔ9¯ýÌÖè:ý@»‹¯} ó¦!A ^Y–`»È,x욯Y[ÖÐЯ}=‚¨Ò®z°ÔêÉÐòéYo(ØK7¢­fCïiÖÁ߀€õb¨¼WzL€ø.ŠÙI¿tæ_`²·ìÛ]妲C`QP¤oKBËðG.ˆS®šzsµ)ý«a}ø¤AFª¤¿þùâó…0#ÉÍ£¦›»7lìàâZCCåêAóò|˜¿SÙ©ÕÒIl@ˆ˜BÜtãºý:µ)t“†0ñ¨zè_™*†ª¡û¸zм<ÆPæ9†AlЩ燫ÖÒØŠX("ÀAÀ1T¾¶FÌmª§Ã³ÿ@§BÜTc~¯Ùܰ""`A † Ü`*|kûhµu¢ñ4¸ՂĬDÀpf1(!µ°Þ:TŒ¡Zk̬Æ×™í%ì{Õ#`µ#Õ„€õb¨¸—oõ iffÆÖ­[ú¾Þ·EËçx<8ö"à,ÈÑ@u–¡¶é~Zc/_Œ¡VÃÃÖƒ)·Sþºô×¢o¾þëÊez|ŸO;)‰oݺ¹fåò—Û’R5¾Ýk"‚¿­‹ÀG*w<ƒu¥CÉX/†J÷ò­§ŸÀy«‚¢\¯Zxþ¥ÉÃcj—Ö/¿Àçñ“’“ùåçÌô´qïNvww‡}7lXúÔÙž=º1ÂTÎHXŽ‘­€áé¤k_|þ%¼úÔiìâê&•J ssàî•Ëɹ’"¡ÀÍÝ‹¶‹yÄÁÆïwšp'óxüÒ’o_8µ\÷U>Ï m2Ë…$¾‹ ä/úžþÄïJ"PáNIR‰äð¡C¿üò«D,‰íÑ­gÏ׎>rèÀŸ]b{¾=ztÍšÞÚä–i*K..éýíAåfc¾]?HßY@¹;xý¢7ñèfýh"ª*l¨Bu÷ªû˸ºzÈä2©¸L$,aØp(ϧ³<08ØÁ= —»Öðtóð†Ùd„ÂBu½á+“‡‰6¥¶©J³ªþ0cU\\]_íÕë¥V­W®X¹÷ÏýûöîwswiþB«qãÇ»»»élº"oÈ…𼏴÷Ì®™3ÍÐå7fYÓ £Z­@ÅÝA¨kÕp©<ªZ0Ûa«-x¥‚¯Zua&ìÍVZœïáíK»RVR€y€q°ñûn]ai 8Z¨ÊÕ}•Ïsס*ìT;üK·c‘atýüGŽzkîÜÜÝ\==kÍ=[Ÿ65¥Ÿá³×½31ùüŒð(Sª!­AU¦¦_}Ö(u‘»º¹yÖ’+ý[ì‰ÍŠgæé]„8Ø"<ž‡·Õ¦ {Ž©â¾­|Ö¡æ2e~ÞÅ=WRãRãÙûf¾Ê€‡së+6PÑ¢Ú%3§G}nd}p®ÐT³6æ ˆƒ½Ü4n ö¨êÁc©<Ÿèaˆ¡æÂ7ÍÛåÃÍ>…ÎÍÍ5{ÎÍ[·_~¹õ¬Y³›6mºhñ7]ºuÿiÓ&P«–èSHLKÊιCN°P¿8“’IÏ\fÙ¸TáUKÈgŸ<*BÕ>{U¡ÔŠýeèùTZÏ î3óÚÏUÄÄ0áÄPÙ¿LU†€H,^µjõ;w›„„|0}º/™Ü!‰¦L™œ‘ž¶yóO³fÍ„6æË“}ñÄÀ·ao6ðˆùrßN0•uç*’KÚÍÇAj‹ªƒtW»šûË(Ÿ$þ„y“Cœ¾ö{“öŸ–X¤¤ ñ»÷ðäò®±]Ÿ©=HrwsóööšÿñÇÉ>x ½‰R‡I Ån¯àÜÖô“)QðÓß¿)s†xz—XJià’¾Š\&N’7Uǃ…½_ûË mÊñçi??ÁÃ>êwvªò} fîAþÒA\‡Ê>?* ¬C‹Dk×®]ÿý±±Ý¦Ïœ¬Ú) š…­7þ°!ª}Ô /¼È-‡Ky†Ö¡.í£Z‡2á{Î2S˜[ôî¶Ú£n3Mg–öÙD 4/…Ÿ_1ôãc CÈÂɤ$µŠzáT-›epÑTm¶7f v&ùÚ_|éîY ¦õº¹{ó]Ý\\\5ž”1}†`qpÎ{€÷JωÐsз^>Š=’P¡šõÌÑQÉ€BêÿnÞÜ÷j¯×^|ñ¥š5kjÔ—H$b±ØÓÓS£<×BÕ!!•Gà,«PA•º{ûJD¢šµÀô`Ë}n`žâŒ883 …Ê}ŸB…Zùå`X¡š×JnA©y±"`6g“¯«ª»§¬Ž  í0 )â€8Ð{c¨f?d°""à\` c‡úb‡XNï Œ¡Zñ™ˆªÁEÖUˆµP1†J!G{qÐ{h¿sUáß)6… vƒ®CE;L[_ &\L0†jÅÇZ¨VYW!C¥`ëµKØõHƒø` µ KiÊñÖ8blöÖÅ*Úgh¾H v»¦z˜¼ù‹¸Õ"ša¬a¡>ÍÇY¾dc4ç.^_ËfÎyÐ*ù Dß­ÐBÕ~”˜W‚ªy¸a-[C€Z¨nž5a›$e æ[¨=7¨ÌhŸ!Î|(<½Ü÷)[ûcFyDÀËÈ)E%Et¾Ú©š¾=ç´ÉÐçŽ;ÆP­ø¤ªr õҲ׿=¤ìPϷΊ´bµªÍF/[7Ùñþ¬ i'c¨ônwfÛ ûnÌ=€1TÓ Áã¿ÛzäÏ­G>Ž9ôåº Ö¹jëŽÕ?·®èÏ$]bf;#ÈCEíQÃ÷¿¦ß3ªÇ7_mÏ.lØ †÷ U MdDO&33»‚óÈ sërTéñí‘ý°À: ÈoÏ }Ï,§p!΃ÆP ª/¼hXËÀ” )ùP“¨(ög֞ɯëA>ë.«—¾}}ÞÎÝëØ’a“wçÐ*VPša=V\bKX²$EÝo“˜ìÝó4ªhqV¶nXH»»ªBUCò¬œ;*í®S& Ìþ!` í3Ãöâƒ1T+êLkÄPŸä ôK|éÛ¾Ë1Ô®3Ж¥„ÂÝAë¾£ŠIþnrvßuî2Jü]/™/þ˜Ô®œ©ŠžåÖäÍWö dgÂF/]7À˜(«hsîx‰ƒ* šn™Aû˜³óƒÙ™ÃU?¯ãå=J¼ô7®C80ŽHï ÄACu°ç`ðøu[¯{3ìøEE5;瓱aòð}‡ƒRLͼÏv8xü VÝF„ƒg8+›-M 4*•LÉfõEÌ’w‰`õ¥ªŠnÎ,+GK,ªR›2VÎÞ2CõÓÑz¬«?CEû mPÃ÷€+ø÷årÅz2n^×–Ù ý>ýá×ñ9íÀ $)FÃÕÑì=“‰©º¥†×º‹48ë&r¼Òìø?eT>ÇëŸî‘*Ì4òÑ÷ÜÀrŠâàœ8ð©6-)`×T)5«î¿',µ lúÓš`zø7eÎüŸSì÷î¥6iLŒÑìK'Ø!'#9WÌÈÞ(’¿{çt»u{¾òÊåwUîûÍ>+¸Ï Ìk?KgÃÄ•þ}¡mZ‰çŒmVmûæèÝï,Ûµ²ßÌuoNž<»ÇO¬œ$tªKàˆ¾ã·Ì~§ïv¦ILÏ&ºt”µÕâL£¶:H¨(gç–3LC°b'ªê@½Ôꊧ·¯w­ºÞµ\k¸óx|BÒ°q9!æ)ˆƒãÀk5ØÛ·.EÞ§ ñnޝõ81«À“’š”d–”X ¨ó—þ^µb5¸|½}êzxqjEñ:"àT` Õ©†;‹˜‰€"BœÄ.„ j¸ª|Ü`›b ïDЉÄO¹4Xˆ89Cµ· {1G’—ÕªÔ8ÅÑ‘ûbøÚóÐ,ù ˆ€! Ð£êvª†ÙÊþlóù/ïU3gu‘) :ŽØo}ÅÝ4²B,ÆP虇]A¬‡€ZÕ€yJ.±´mþ“õéªô®ÂòŸðí„÷S.*è­':rFª\‡ZE@c3ˆ" Ž@Î3?{uÙ „p † ŸÐ}O ¼u:Lí¾#ƒôø!ÝJÐîû…°AžiÐH%U †¹+¯3hö”·_ò‡5©—üü““mÆuÌþdåzbƒªòìîò—¿ø­_8Äñù€«¿÷\úpâò‰fÉ>ýä$·¯”žnaƒ Hˆ€ ¸–<ñö­Gogš7¡6’V7ÜG^uË‚í;2mÚú¤1/Ä>>>`|»±ygWªò—?Î|¹ÔíŠïï0Lç‘îÿÞcúeý¡BÕ ^±ð|}}äO µèºnH#Õ$#G;¯*,¿šùä^ë7~zË_çì$.XˆØ °•xh¸vjõýÍbËÆ €žycPB #°æH¦‡gþG³Ó_3çP\È¥ŸÍ?Ažrì$…N¤“‘”…œ«©ûG Ýß|Ôô#[ë&­ÿxþ ®l\&–Ù!UŒ»!'C­â†±9D°GR·}7íÀÓ€@8ÈèAöƒºAl'º<YQgný²bÊ~Z±"R¼ŽØ'C­†qËÊÉ9—œ$uỈ¥|^ _èÂð^ëÒÝÏ×·biÐ@­#¤°<Scƒ6¶Ú8¥³¿?LJº¿bx6܉ëöÜ:6ñË£æ¯[IœÕ/Äj•_:óWÿY_}9ð¯„nÉϛ؜•éÖ²7IE6LZ5iPC’‹²ç&¿¿ÿ–âþ‡Ø%¼ð×&«æÀDÈ_<°Î.»b{BëÛ{|ü”ÈK2¾„Ǹ02>/cd¼5Ém™š\¹T"saÚ¿Ô<°âÐnÏ=-±½Ž¢DŽÀ…+ÿ,Y²ÂÝ«–WÍ:îžµ\Ô&%9xß±{ˆ€ñ` Õx¬,F)ç1²º¯JÉ‚%¬váó¤)’xh·§²¬{|7=þgÍÍÚú𔇽½duXbÈ0å”HE–Œå“¡lêˆM]§x)·V5«äìš1g{؈²-EUü@ÇCÀµ¸àIMßzT›*òŽ×K›ëÙOƒZ¨ÉwÜ¥R‰T*“‰„|ÁU‰þ÷úßOû$"ጠLíAvBüá&í6(¾iKüjòÒŠ©Û›|·ô(Q~íRÄ>36mk·á÷¸R¸vW8_"£q«CòwÓr"ûƒ>*—/sI)›Vÿ?6…L?°¼­©Â#="€ öˆ‰¡ªlS´S«faÙ $:ËW,Ò™¶+‘ÊEb¹HBB§eby™PV&’zwššB­À± G®Â„¾ âàNáþdJIν4¦Ã[päýû¾Õe{bd€8xì –XUÈeÆa+Ø'œ^¬äCÅ…o®0ÙZUÂýÃŽ¯˜ 4yUµ0ƒ ˆ€#"Q:9¬‡,ÎRÓ¯Í;b7m«O|X£œå+‹!ß¶cø>}dÏË6pe:t¤‰¢³“’X—­Y)' ºíhUPÉàéU%•%j€±FfuB_˜õZÿŒR÷²ºx Ð@Rrrd‰LX6Y‰­e…Dnv‡@ù:T\âX•ƒw,é.mNìBN‰<b¯X"ŠäÓ'¿¶i©5REÄBÕʰ Wé‡[«¼Ð¿q(³ý\ò$ò€Êùã·F¼Gé3N%ç „ÐiÎåSiFD@!¡ü-¡o§²ì¸ÌuäYæU –ÿ¯`>Z’“#gmaLö€¤„')âIä<> [ÀDt±XìRÃËÅÍKg¿€˜[^!½N&U_x%é$D_ Ewz•¶þWò)¡PèîîþrD§ª—[´\ËmSFe§Ú‹ðö*ç›H@’¦M;OH¤LTb¡îÝ¿rÝÜ^½Úg¸E;Ùvúš7ß›:¢aüΚ¯•hphÖÚ^ýÉl£îƱ…”rN¯_Øö»Lßÿ›Q¤¶Ñ]V|>uÄjåZUÚ]ìõÍY¶F‡ÏP›rð³çlPPPÍšµ\\³|ÿý÷ßää“Ï=ߪN}ÝCÂín…ô¶€ lÂsâÄ •05jÔh×®ÝÑ£GmA<”Áf`c¨Ê„gÎTý8 Ë„b‰ìèþ=ÄÊFz[e˜BF(Ö´P JØvz‚ö õBÿ¾ÿKбl4pà×ê*“ÄS5(¹Ì#ß‹SÑ——kVi»?a’Añ¢!ûdjH f\§NN:õÃhëTíµÔ†émŽK—Ôb b¡—éÛÎÙ¦$ —oqþcÔ¦Õ2Be¥‚Ný'˜Ò´a§¯)œÔh­ÄÖly°¢-" “iÞ' cNŸ> úæ¿×Ûk©Ú Õ0½‘}•<Î0/’H$% ßà|¦yÈh8ldKÉRo^!KKKáûÔÑ?;žþßu8J‡ìgÝLùïZ³–­LbˆÄ΃7†ê<½¶¡žÂ ^3VÅØPPgB€*Èk×®Q}z+**ê™gˆ—‹ë UABé¯^½ ” ü(}íÚµàÌ™3f#çæ 3(­“dâRAqçÎïÞ½{ãÆ hƒ/'Ó¡›ÿý÷_AAÁÝ´”æÏ½(“+N’¶ŽÈÕ^€j¹mŠvª½c¥ä~ezÂ+•b€•™L"äËå>Ð×V­Z©b¨`‚‚ÌËËÓé¥ µuëÖ*„€ðãÇ>ÿqf­Ú ]\ÉñJ&%j¡sj‰OØ–ÆÇ·6Ð÷r2KK´T¸jV‘Qüeâ›ÿþ”'O’IIÐGhâÈ¡½7NLL„|Íš5===÷íÙÙ»ß]ýf_$r0†ê,#ýD*ƒ€XXrÿ^¿ 0¹}û6õµÂ7¨™çžƒø©îDê­[·¨?Vƒ”Öý¬Ôg¹{ÖÔ]_O©N µ8ÿ‘T"jÚüE344mçÎí Ó¾}{0FAf˜Q•šJ6kÖ¬¼Ðò 9ð{·W˧ꋌ¡ÚÙã‘v6`Ž".g>¦ òÙgŸ¥*ü„X#(K}½¤ôÍ›7§ô PaÎpff¦©:U#† 5kù2r ÄU sï{zùdee4kIÌâ2A¡XXZ«6YœVa£YÛΆ)W 'H~ÿþ}ŸW^yhàç“ûiõ5©'8CuªáÆÎ"f"* ¬Å„É®nnîÀV’P;õ¥—ÊõÕàN*¡Ò0*è$ê ƒê|>ßÏÏïñÓtªN šõYV’_*( m?A¹JÄ"#µ)•¦AU½HOO¯_¿~Ë–-‹‹‹á•‚jÜ¢¢¢’’’ . B5ófrÜjCuܱŞ!–C6œnÙ²¨CH5j¸Ž5jئ B •ÆPA¹%Ìô$äU Ô*l˜:µ~£ 7£|¿Ú1TPÒÀ¼~ƒÆ>~õ ò<=†}5™g…º¸Ö0P™ðƬ@}OЯ 'hS˜BU«V­èèèsçΕ••=ÿüóÆóDJçAc¨Öë?Ž ÷˜{G@*“‚w·¸¸ÖÍÐe)`¥â¡ ‚ÊTQ‚–¥:‰ª@ºÜ®‚]˜róïç[Gࣺ¤ÏB¥5}ëç=ÉVê<`’6…ê‘‘‘t6/(Ñ»Éx5ŠrsฺFË÷СC@1Tc„D'Dc¨VôqCû–Ñ6à±¥÷îÝKIIoxˆX±mdí,û~§°´X5gòƒû÷Ö×3FLfϲG4lаLX˜S7d ðéê¦×þKÏÈ Öà\VVúøA¶¯¯/˜k°Î³´¬L (e`×A¾ ܽ………”Þ°6šììlgêï}òä Íbž>~ ËTÚwŒÕ×5r}ëPá¸V77·G÷3© fß {±Bñ¸Ì¹þ^Цp‰ZÒ/¼ð 2»ººÂ$¬ÜÜ\#EE2§Bc¨U7Üð‡ a'xÛ­W¬¢£¹ªk[²CÜ<¼á£òpÊ·~Ô®ONì{ú0»A£FÖ‚ôòªùrx´*ôR^A‘NÎÏ<Ó +#•ïââëëkcÄb©k ²ÊîÞãÇWÈ~ýõW.YhhhBB¨%ø[€opÿ‚bmÚ¡SzõÃhôY¨R‰8+ƒÌ(ö«ÓÀÃÓ+åæu~Ú¿AM_0’-ü…Â[jL«ªÐ)H1m ó~Á¶NNN†°‘<‘Ì©ÀjÕ 7U¨ð¾MÂÒ=T¨U½Ý¶äáåGeåzÕªy0Â*ì+O аċ(ÔgêçS%7¿HY#ÿÀ{Yw\\øB‘¸GïAîž0Å×H³Ï·^`‡.d¥ 7ù‡´¤?3ïüJÚTmj ûwnˆDB÷Ö®×ÌèFþ!©·ÿ幸†9J¦¦-^Ö¦ ìQУàémÑ¢w?æ“gIDATÄ€Á×­M†%ˆ €1Ôª» à¯ä^^^ðnjþP«®mlÉ>¨¡4O}•™ºÏ²Pi/…‚<OP{®àõ…Œ1U||³õ‘A¹_íºW/Ÿ›Ï$mj ä M£cb·M ð„­Á(‡X/8@›eƒÆAy¹ORoß0R¡êd*ÌÂyUð— /Á`aCÜ uc¡“#€1Ô*½¨N…|ˆUiÃØ˜}"{”ä?öVž`AòÞå`}}òðð¼rå löðä7¦ hJdp)Ú«Çù³G·MõɦQÞµûë>~d'ÂÊ'ðK‡µ¼}ãj@°bÙ+ðlñB›¨¢y•àJôÀÚ N\JkÙY»KœŒ¡VõèƒN5Ò]VÕ’a{¶‡Ü*5k×WÉyj{–fâÀÇ0ÆU˜hd˜³_º¯õ}Ó$žݬ%¨åSû•v]4ˆó¢Øã ÍMõýÃà£]µ©6&X‡ý{U(pó "€ØÖþÛŒ$‡ÎÛb²’`Vbk‹¢LUˆÏC­B´±)DÀLðtE3Ãjˆ@" 8„ÈÚï¿UØ#l p(ЇäPÉqh ßz”±svŒúìxðPt'Cס:Ù€cwíÕYÅÝÚ•OaµÏ® Ôˆ€Ã"€1T‡Zì˜#!€>$GMì‹£"€1TGYì—ƒ €1THì† €1T'dì¢=#€1T{=”ݹÀu¨Î5ÞØ[;EçáÛéÀ¡ØN…ÆPj¸±³öŠÆPíuäPngBàÿËD“ÔE¿PIEND®B`‚PK !"’°sJJword/media/image33.png‰PNG  IHDR©pë pHYsÄÄ•+tIMEÜ  7êÒ–tEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/05 18:55:07 lim_j SGA250167WJ9 tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí} ¸UÕ•æy dµQÀR¨$Øe«h+1€±£•(R¥B}(­nPcRPT°Ûˆ&`"¢mRP1­$­©¤‰X0ÑŠ¦*jdRˆ)Dò†^{¯}ÖYgŸáÝ{ß}ïÝá?1÷í³öÿ½ÏÏ>Ã=·!ˆo ]ºzì j–æ&]Eï444tíÖ}ðá‡OŸ>ýSŸþ4í–©Ô–‚ü¦•å*Óº%³'ÕUK¨ß¤¦9‹«Ù=ÏR|ºˆ¾cñê:ܾox‚h7Ê9¬)®ê{2µ™X¾Ü¦îî9÷Ë•œýª’ÅjÏ)¡ƒ€§w5ý‚ø\Íž¹ÚmŠV|ÎÛ½ðÿ®kÆ£šmwžNh'®Ã°ò7ã@sAt–.žW­KÀ²üܧ])íc†}ä‘G>wá…û÷ïS¶iþ´Ì¨:áŸ(@·n]_zéå±§¶oÿþdo”NFíé± PöäÝ=züËO~rÙäÉO>ñÄ<ðÞ–-M¸«›­¢¡Ç'¾uîÜׯ[ÿüÏ~γDòv»E†Oâ~~iŒâëdïç„Hí!7’»$‘£TtŒ0‘§'áþ„0dKÒ+žP±¥ œ‰ÈÙ‰ëmnf`„Ë”®9Ô‘èé®löº‹v$·di*PÂsRŸÉ$™„®c@V(„E'©,“–²±³•Ü,çr¨-&’X$ )E$Z‡]I”¤+ñ,:^rжìÙOƃ/´ª1ŸJâËÓŽßÿ~áç{üGÛ>ØñÛÿwÏUDر}êL˜©%ÜðáÃûÛW·¾ÿþ/¹:™³þ·*µ[’-Ãnº ¿¢HË×”žÑ£G=÷Üs};ì͵k¯ž~MƒºÏ½õÖ-Ñîë~PÛn½uç®^zé% ÕµkWŠm?­þxèØž9:|€å)äöe…hUîìú­¹¥™»D"ñtéÕy%©z=M½¢ŠBÄ׈^PqËú1Ÿê0H¦J,$J[+ˆ+ö&j"—)׿ÆihW\»—•ÄSHÝe<‰½ÙÌn5Ú:é_Rò¢I®¸|€’p­ŽP%V OÉýØåž1aMV{pV¶ƒ%¢ÃVfׂKÿgí-ËD`g·ìSƒ&ñà…£`’I²¡Ó–^ ¹Rÿ›@A ã§aŠ3û”^þ§ZÀLÉ3ž–NÉ‘Ð$NR÷¿óÎé¿SO=…¸nÎÍ7ÓêÏpß§>õÉMMÿö›ßÖëÒ¥ Y«OãÌl<úyÀq$A*žXbOŽªDOA‚ s½Œ?^JŠLô§©¹‰>¹mv›š^³Èðx‰I Ú¿´¹‘M‚hI%ˆievkôl‹Ç’3úl:Ñþ¹.«âæ;W^8½"ó<Óh(º^I&uÇIrh’NF¼ÅsvQă8Ñ>I¨¤ÉM¢À†ž\²¢Ùƒ™Þ–¼äµÐáfßg@‹ÛbEÞ$mÄ!Œá R„º"1t½Ô§h=ò²L²v­cæOkôÇ ±þ8hHŸ>ƒD²k×ûÛÞÿ#×ÂÊLN"3Çðº1¢†üÃo‡@ëXghÚá xà¥×SÓ»6ÎüIœä*.m3â/‘rÃöYWV‡u¥éD½1W¢)sÎjÒx{™•Oš.¿t¬ô”WlA]IçÒÅ)is’È®W¦¸Ò ÑaCŽÅ Ú­•˜h¬ÏqIY4ŧUrt&+ceWÉêØ•ŽÎ!Ø9¹ui„áE.jÜ`5ÉŸö„lËúò©«ˆº(\.ý…iJ"E&¾ÿ·üñðÅI×P[ÓŸéâå‘U2©2œô™ ?ëÖ­¢Œž¢¿¾ý÷ìÕíݳcç‡[úô;¼gÏP²wÇ®[¹—£ˆ¶ÚxsÍšk®¹æ–[nîF 7pР_üu·®Ý ùuíbÿrÓq`´ä:2Ü{cŸ¥•!/HœÂÎK×'†£^J5776Ë5£vc#Ú5ÌøØã\tCo4l1² ¨:O Ôç’3VlÌÛãò6³%jGþã:Vnç>—Ê<îªBK´­àe=Æ5]j¬=yR-)aóè°±š¹ABOMvuþÔ–J¥ÁB]‚×Všîh´&ƱäÌ hŸ¦Ûã;k ¨ö­ÂÃ^âÊal\’8¡Ý¥æ¤ À½aÃDT‹&—•~8Ä'9-„þlò­ø4ñ‘OÚ%úcîÓÍ…ÉåÃÓªÁÕÅú\¾KÞÒ×BÄ'±˜a‰ø´DsŸ„.ª±yó»gþ·3ˆ÷̺﨣Žb®£¥ŸÙºñЬíY°YR› £fVïÈIW ØôÞÖ¤™Öi9ù˜õ—9É%Îk"ìjYöé<·ö ñÝÌêÏõÚI@ãã¯S8eHj'Y„vêF´ÂÇ’ðÓ¸Ñ±Š CtQR%1ë„&Â…ÑãÃ|¬[ãC‡’ƒÊ«‘vu—.5YAä© ¢™cÂQ$œ6‘’u¯-Ô”#Pè<Åë$5%OÒ¤BŸrâÜì†|Çÿ™.ºö•`@1Ѷ1?ֵģ¶L' §3 ™ˆœMH”ÆDÍ1±b-êb‰4Œ\é‡Îü¿âsß>ssàò)3éóáe‹<= fVhS’¥?²õtL.áÃ={¶å1Ù1ÃjâÛ»wG¬U¾ŸzÝKƒ{ä‘G’Äpj}Žø¢¦Øs`ËŒæT˜þ—Œ¡Žš”ÎHTÖ9öY\¦‡\ÅÊñ}ðy®e?³ê3l×dÎòiTìúcˆèYza¡qëE”ÝV‰OJ ±2¬c‘Éúä9j ¢Û>‡ŠCi°CíS#B¥\ËÄÆàMZY"ÕЯ'!‡> :ƒ´¶:¨%1Oä,áh7™›tyÞXÙësIΚôÉ ' ¯C¦%µ”ÉŠ%.—Àq]†vG‰-AJ¢ñ©¸’Ó`¤Ž(ÎcQ’9¥Iv~¸•Yoçέ´üè£$g®w“¢ôœ¤†•ðôþpû{ÔÖôÇê$1§À;·M;MPj¸E¢#e™Öºƒ¹lìr6ùk×~ô?ûiÙÏ.ë>Î#î3¹RÉž$y!Òg±¤„¢9M—øº6Ñ­Œ®]šˆá ¯7u9pÀÌYƒ \Œ Øæä˜8‘Ö¼fÅ¥gIÌj©Tl›%‘Že.Ñ$‡D>ž¡ìFÞœÈ9Ÿ‘Û0Vd¢¢h¡ŽnÚñ²d:IÚVÏ*Ѽ rªÐaC–NØïþ²šN@ ½ÙŸœúb›lHž^É#жð5 9¤ÍÎ"w ¬+"9GdÚe‰ì:[3B±CV#üÅÊ@j½³.ë°‡È /B­ŸE b·eËè¿ÃMÄ÷­…·Ú³"T²RAx­`(G„ª(“±D—µC-†þ¾óà]ìaÚô¯ðµ¿h¹kKN®3Éo»çûxÍ'ŸÌz†ø¶¿rϲg‹.›ù…‘‡xë¾4êñãe®¯–±ŸAd»×?öÍÿøÔ¬‹ëÙíÞð£E¿ýäÌ/׋e´¿py0yæÅ¡ÀŠÉ¡95i6çL£YJË;"Dª—Ã|ÚÿèYó/mC—f:—!=U‹hÊø¹L¬ µÜø å¶—uéOl~ĬBŒ€˜K JsâÒPÇŽí0¥(™hFf­×tE\#}ò¡› šìR1‹nrh}ÌëØèäç) Ë‘£ ©ÍrþT]&ˆ0 ¨I™Nâ­øô’0,Ú‹ËbF§Ãs&±¤XŽ­´C¶x#›¿:s®ÎöÚ þ“¯õ¥MÄ·ðž›ù™uãóP‹]ÖÑ ÏúuiØ»é_x|ÍÙÓ¾vÊà.zëñ…ó÷×7^:â›'á’Ì š£’ÝeÐÑT/š„¶Yœ™E©’Q6¶';tÄo™wnˆ®ÙÙû­t²k néB«@’GúKk\Ëx´4úX(Œ¿±'žmfê).sA `=Ò$-mkÕl|k\‰s;Ô¢,¬§kâÞÐ(Ò' ¥Ê,êè‰ÃœÅÑ\iKûç¶DIÝL’†ú°LöfI²¬$ }„³Ð3á”´QójWžœmu¯õipK®=µp1f…ü˜Yg4øª_It^tPëß5l $19a81\ža© vŸ©P¡Î@EÑúÒfâ»ñ+ÿ‹ˆoë–w„*e)ÊšäRþÁ6EY¸|Ó03>¢?'±‰pi}ûÞ«÷aij¸/`P›Ø–4鶯—˜W¯xóÔä˜ôHÁpmöBÝÍ0]†iÛ»éy"¾¿ý‡S7{‡Œ¼tî­†Œ¶ÉÒwž²Ï%§t´.rx¥…1Õr–—œ/ž”¦ÃÐbêÆÄG]Í ÍÌz4 ÍYÖµ ¤ÿYŽ#Wæ( ›Oeýv1ünä'š6á”[¼9nð;¹ìš)ÁÁíÈÐ*„UÚ–ö@‰QÐШ§3„Bwż±‡PÍü%‰„Œb«z/¨¶ÒÞ²Úì„ËÉÑÑ ˆZR(É$"i˜ÌV$l¨CP—Öç hÆ+Vè\hóï¶=Î :žU!°‚ç–“ä@ü)jÖ…ÙhrPR`™KÌîÊÄö M8ŠØò.+p~ÑÑ ºêG¬GjlÝúŽõ馄0ùºYg’ tœ’ÐgBŸ\H¿ÃŽèÕ»ÿ‚;ÿž‰ï¦¿¿“ÚÔKŸÔ¶Ñ}úc ˆöFí俢ÛÇ}¬DU›ñ05Ú¾&8{ìáv×Ð9øm~»×ýð·_c‹Ñ—ßt­w¯[¾à•!ãƒ+_'ùÄ/Ý~Z°úæûWÁ¨+nš4²÷îµ?¸ëUê^¹Ò˜¿vuÏ]üTŒ¾ü+“FôÞceë’zO=¼eË‹s—ãÏ_¹ò§V6ã¶±ƒé/E^ð=!5j¥dXšvÜIJœgjFƒ6ã¤áKsOl½þOÊÞ¦ßrÊ€¦–†=oýä[Ë×XÍ៿ꜣz0|üÉó›G×`"3=I+ >’ôÈ3?Ï;<6t’Pºc¬g=˜ EAÚÜ`ŸâÖÓ4ب- î¼q¶ÕÊqØé*Ä6˧Èí¤J÷ŸoËV<^^Já FÇžçŠlµçà = ÄqíÜp2/öFææ€7*†Íé…mÒF´ ëKôTd8’¹Ce<s'± Ï{`OS¥­¸m|òXP#¾õé;èÎ;n"ÙßÏ^@—ÿ8ºç-)Ô™ˆ²K‰'ŒÃÂÞ½ûÿïù_æKŠÿ0çî=»·å‘„lé“$÷‘¹ÊQÊôÒÎÙ ¹ÏàéˆÏxlöîy78þ“½ìh…k)jË‹_8¸ò¦y#éÜw÷Úåw-X}í¼±æªÛë+޹⫷_¶çÅ[¾}ÿ-+‚ wû<"ÀoÿnËü±½É𵕼ò+ó.Û½zÎâÅ7¯ &^;o~@íß»}ìà#NŸûé&É÷HòÂÚ¿˜4ÒDZ¹²áÚy· ~ïÅ[îûùúO]:|÷‹ ¾\þÕÛ,YνÿõQc¢™dŒx[ˆÛlî\N°òé`Æms¿÷«[ïÿÅúQûÑËßZ~Ôß~õsš›v­âþ0õ¼£z'QãBÍ šÃfF°kjF]a[$VÕŒj$a‘:¼­‘Ssšñ]¶ÕTJÜÁ,»Üàzc:ÖØdBö&úÚêJ•‡8ÆþjCOAðI¦v‘+4]‚6×¹å‡SïªõÆK++)DBèFN>Ú–§ŠeŒ}ë´™ÙÊ•lç%µ=Úzv"µ‰.M÷€ÑÁ«Ô=¸÷{«o¹o…uIK:÷7Ýif±7x-ß''o­ &|‰ˆÏÈ>yù¨§^/jB³Ø_·Œ¢ìÇÏ8•½üôƒÝõ|û_Iñ¿nïã˜mÐ^Ë}Mgeå™”a;’ µ„T¸Wt¸WïråÄ ­ã&=$ãÚL],—1‹T-± a¯üå©/»*#“éëÉnbÊÉÞè0³%‡úèñÒ`¢]ç¦]‘­§Ï»žŽ¨Ihq˜Wr¦FØ6Ÿf@–{åˆg´µ‹€9Üœ ñ%lãêüµDò—">2׸ù‰.;±mœþèT÷k7ßC]ÔCr%Ô%Ti¿9`$»q[0…‡k —aä#ØþÁ»;¶ofCîݱcó‡–i“ФÁrùÔ±HHE™[ gýûl¶üa½– çÀÑǯùá[¾F”aîuš+}V‡ìŒ¦ çvioTÿž6²•XO®jnÐËÉ\¿h~´fù}+ΧóäÁæÜùn¢4«È^ìÝ»\0V‰½I…þqå/¦º”蟑Û:Ιò•ÿÒŸÜn´Ìnl$]ûŒÍÀþg¶ð.„ù’¯õ+º Ù%+;›¶–*gÀBç2¦툎çAa·ôIÇŸç0ÔqIé^•§Â0îÁÓIšë)èõò\^#–gœþ²L ‘‹ÛÔcƒSÊÒa¹N[$!Œ1 48¤i#¶Î€œ{f+’ðPzЉI¤Ï³T’B˜F8 ì”Ó½]î2·uïvÐAýéOÒE™^ò?é’ ª»äðáÔ¥K¶k?wjåÌ¡êè*\òŠ.¥„d&~òA@Eñ#+©Êê{3¤?C =‡ú™àÙïþhÝGæ94l^½|íÎAǜ߰rñ/6‚hþhíó´ <æpC¦:#³5Ò·)¦iØÚY¢5ùÒþ®÷_Æ;œl>Úü*]Íã<¬…ÝìŒknîÕÿÄ`åÏÖí¢`›Wßõ}V }²sÆJØ0 Å.œØ¦× :æìà™eÿöž fS3_í°ÙÛÍ&¡6ûÅ“ˆåF.2NÓ2Ädnµœš-Þl"¡6‹œ~äÁbMº)OHæ¿p³;lèÄìS\\+¬â»I™ÇžŸ¬]ÒçM»Ò½Ð©If9Ï—§ºòBgé°šôzj¼«{½êd(´¦ö©:pÁÀ3„•É-5x&k $œzjEÊä‚O„C°b¶Öÿ¶môíÓw×®G=¤gÏžv‰ã¶(„š$©°KDÝ«¡˜œ´LÑpš3 Í>Å3ÏgîN ǶÊM<*çÏþì¨Ý»wÖï°Ô´Íº|ÑaÚÅ,†˜8è1Zé56æË_êÿÄýߺÃYž7ã–Þ-Á)_þëw,™K72h5ùÆÓ57ïf[)ã俨·´G–SŒÜ±‡h4-%67 :åú¿þá7oe‡Ap¢oãÄ$cÿ˜H-=‡aúùó¼ûvÚ9ñ¼sO|úÆaô|†I>xýÿ~ÃÞ ¡ç'_zèÄx å&hœ558iÊÙÏ.[öÍgYýŒ¿ºzTË›&g¦.û7›û¯ٵÙЧk¸¦MQR {E“•y—ëÑæICî¥qC \¸0ŠË! ÉôÉÿxÒW«5›*wj梒ÄÂe§¹·«ñ©ä·=Ž’åGR-Ü*Õ$µvzú)„© htnÓ§õ­YÊN¼+!hÒQ[_4» ´EŸ½_•*눭ޕ1’dÖ¯ß0öô±+V¬M·O<æ Ý`eÛ(„3 fÙ#íÖˆVqÐÀAô‚(jØ2b¶Î¿•q—Ž¨Ý‡šÎ\{1n]¼”„h%KÈlß¾ãw¿û &þößÿ#©DwE»ÒýÏüîRý½Žè!gû•^zêÍ>æfþç¹0c–ôZ˜Ds¹ï6uñ´.*J¾Cñé•é?9‡“t¥ê°ÐÓ ….5ÚåMRÕVÒ:Hï xqÅjrrªC¸.KÇ®ÆÉÀÿâ/Fÿüç?ß¹s'Íyî÷•C©džÙ°éyœ`dqž6Ôê^ÐXLeÙ¦fÆîÞ½{ß¾}Ï8ýôµëÖÓS9º®/ßxÃÅ_ìÖ}tH3?“†Í<þªC‹9i¦gàèÿR³ÌËlòÍć:r¦µ,}µ½Og ß‘BüpÖ3òbμº¥¹±ÉŸýN/!_õ# 3b£]󱊹ÒgÖ£Ì_&ýhñåÑtIhÓ0Ö$ƒõ4&V7ò/],Le=!1§Ò‡oâÆj4ÛD_ h‹¤úäiBf¼îMÕ,.„¶”L=’ õ!çíz>tVÉUz5ÖƒÓe‘ˆ] Åî'J1ýdx¤.Õ-`mÚ}ÿý÷ß|óÍ3Î8ãÐCÕDz·XóÈ+™’HLˆÄ‚($ô¸c>Ccÿoˆ£óáºÃ?*¤jþæ7¿Ùºõ}¯jv ¸§=ï#Êk¦ÿѧ½ËAmúº«^÷yL”¨4Ó•Edz8#þÒ$Åy´êQÄ)tà Â}C}Mæ}ŽõèÕUö^‡]Þ¹ÍÑŸZ´(=Ça¦åÒG±=º7b=.\uúkC£vÓ_Ugè0^RH£R_ RìG¼ÅÝæR_âŽ2ÊéTþ®ÙªUÒ$+W9]äƒA$(¹+)¥b¨*-Ë•‰]Zd< Cj¬Ï™ó®U÷Ÿƒ¡.OY#ÆL áØ±C‡¡²•x{÷ÝÍô 9q«w£vëÔ|¢3äa¥1qjB¡•oî®-8' ÓÍy "[{Yî3#HD tˆá™ÿèþö]æ¬ØÞ+¦äø{ìÈc÷[ÅÄç#í%­/‹%cvn%ÏÈ£ µë.âÙ¥Õ,g½†û4š% o–™ø¨dsÕÒ\§´ h½±K’p`%—l¡¦QŽ–ŠF=ôà\±D„âP4í|¶ciÿÎzÚ·åÓ çõò®LVÖ:©]…øL ”#Ÿþ¼·³-™ SsÓ!R}Š+6ç]/¨uÜd8êe!}Š&MÚen°·ÙDÚÌ€\©5w„È÷%´r4d*9O£dg- YŸuE"‰I¯îr¶¶g²M jEϹX‘œ¦´©-¤+§iXÜh‰¡Tæê²·€³ÜzYyj†ûèh¶‹Zè™Ež=ö-Ý©WWñª/Y¡'ÉDòNú‰3•ëÏÑWB¢‰‰,CØM{6mrÊDfÈÌòŸ)ؼÀ”IÐî™U/™ì K†Ä'>­'ˆÛ¼ë„aoÈS¢Ë)ø¶ÖmäMv#3.'Nô^oXrT>û¡‰¢5u;y°ïÓóÔ)Ч›²iãÓ¥ëÒ “<ߪÞÔZ$ ×%»Œƒ“U“D Ù9[…U¤0 VðM˜dÔr243½¬ Šnäa1bMî’ôÄœs¦]Q`“ÔËä?ÿh y¨E—ÓÖ¡%–IÌŸcÕ°‹‡]2‹•Å6¯×Çõ+–ÖNÜ9/]È'¦³'¸L|öµNö‡ý&›ý^«YøµBö9ÝY+8‰D1~y¾B8²ÚƒïMcÔ”åß±%†³ìÇtïþ‰=Ã¥Oò&¬GNÀû*ªb~ä^“€·ëˆ.‹°‹äSôIϪ؉«’·ö,Œ\¹–úã™è];©"i۪ě¯Z?‘j+ÎØUªUN;%«ä<ÌɬZõI:ž[ÎÍsË»Iag’xÕ%r0ÇŠå(7Ö¢ ™„ý˜.û?ÙåEŸS¶H+¥!þ¦í•@¬`åÂnØCÔÅó3—$„Ö•*´CLÉ阌ý1riÛã‚Ó„O„Ü$:v¦9ûGyö¤Ý~Ÿ‚±äçܵöÇSÔ9iÓt¹̧&Õ”êÙiçr«”|‘œ)€ª¦Ë}áù¬¥<#·w6øæ» ;Úm2(;–ù¥P`üT?ZX Ÿ5¯I8yˆj'låë™°+²œLh³m> Ü,¡d²ˆãØDô­½éå‰Ç¦$#ÎIÂNŒ„¹Õ*i³Nc–s’䜉•w¥ËÛ ó·Nri4%´ n‘-5§¡ö…Þêτџç–7¡?sÜ·Ûc¸ÃçûÜkÙ©ÏfÊããc²É­0ƒÕ9Åd¯©%„^÷¦ =ópùòJš+ñÃŒó`úÌÊÏTkÈŒþ³Ïÿ…”GýÂz¬c³îórò¤¦¢DÄ'éq}¬ã)‹Kê„ G¬ÇAéSÆ!Yšäš§ƒ,½^ƒ†8é!K9©Y”y–[–èŠr(|ZèSáìþ¥—J9V²pm¢{Í1™®7áÇÈÐN êÈÂsåvà ©ÒìÕ!¸ÍýpÖ˜>X‡6‘¬„?ÅDÜ:5uà»­$j“ïÖÈÁ Á±(ð¬ŽEÊ†Ë *.i GÔdI,Ÿü¯Q;Ï$ IDATDlá uÜÇÇ?ÿ+DN Rë9ÝÍÞ¶þ‡‡3K“özS…Z‡i…$ZÓ³Šw¥hdíÆžMKÖ}VÈQ,-2õ˜¿b¢„®W¦-ÛZM—už•Uo^Q|h?Îcø‡ yŒ¶‘gÏŠve£,•R~oj dˆ%ù±ôäÎq(U°~¾UN¯žÞzP’r-ñ %ýŸpò#Ë.;"žw¬@:Ü¡w­n, ÷r>ɶQwsÛ¨°C9¤ –Ó®âµYSRâ^qžÏ€Ö§#‰¨y6%®å®Ôåæ|˜ u¶aEÑ?=ÏQ†ûlH÷×¶[®¸âoúöé¿‘•‹D%´ä€V¶ÉXiŽ…Q¢NaCO?DÏ<";Ñw,»‘ÐÆ° ÉI[:-«$|Q,‹™Æl8¾ßo¥ñ謨>SmÜE g_œ ÏZ%a’ÄÙA˜ÐŒ  fc+náõ-°„dˆ„×üƒ:éÀHrwBgy@Œeå$ ǬJµ[i3£D¾ìå/%A9–Ptp5­ee+q)ˆÔ5bÃN%ôõC³4•$\aT‘dœîAÇ‹rþðÃËþé{É\„û¢ÉHÄ·ú—¿|ìñÇ“Ú ª ‹.ºhÊ”+–-óéÏqŸ.¦OŸ>D|›6¾]]"[ €@¡Ç ›0aBRžø~nr¹Ÿ4‚ PUÈå{É:Æ}%_©*,õˆñ›¦¸”ë}õˆ j@ ÐÜgÖ}‰{nu€J@ ŽÐ`¸ÕŸ½¯ŽÐ@©@Ô æ¶ø2Ïq_iOWÕ n(Z@@3`ôŒ IõÃŽRè»›·üç»[èùÀs¾<³ïÛoÕEÖðá°cŸ¹{Q‘FP@ }èÛ·Ï1Çدg«aÌ’/ñõÇ”çûâÑŸýöZ¸oý¢EOµS¦p €(+ý•Î}O]Ó0bÖ¬‰ §/Zf¸~Ñé ×aÛú'\zA¹H®(œ†Ïœ3}õž”õgQÆYžµgïÅ¡m Ð1Ð/Iðog·1œºØç<•Ä}ÃGŽ^=kÁ“:™Ö©/:G½†‰Æ¬È®¹æô:O&Oæ„Ùl§/Z™†B«Cú VÏá,R±ˆGI3Y'B²qâØ×Ö–Èœ©I@€@9àßP[¸p!½ŠN§-^ù„T<øÜçugD¢óÚÁ,ºÞçh,Ö½±zôÈÜU_t.üàüðuõk'.kiy`ñÚˆY£W˜àË‚<袒΢mF+‚ù‹FPPwMj[¿hþƒcÝš3Åä7Y=k~@!ILìí{†ÊßX—Q*Ä@t Dvt¤ÞyçôÐß#<Ò&ú³¿>ÆUOn8îã»$’FkÕÒ…²… §yÕÖš¶éwK2Z»É2–9‰^x“%4sËý$äUå4ñÁ4v²kÀºé2z…\SL‰¢“»p™½ú8á¢é,ö°ðÓ¡ :&¾»îºkРAÇ{ìàÁƒŸyæ™ÒéÏòšùî†Ý¸<Ã}æŸì®î(¨ú‹X1ýÁ.äZ½Òí³„[·plA¾­Òtkb·øZÏöº{Q_‰QZ_´ž14h;tÄ?üðãF:ñÄ<òHbÀ!C†¼öÚkD%;èϺ0ÜGkÀÔŸ»ÎŒ=Ù'w=Z[:½ðíº0¸:á˜/ Z5'°ÜO :=Nؤ ò£¤YØÑ­›,ÈèHˆ§.¿üò .¸àÔSOýô§?M$xüñÇ=ZÝ­´|ÌOo[Kÿz_Aî†_Ì7§š³&Ò9>‡~Á¥AÞ­Ö 7у(æ uÊ£SÖ}Ì’ž¤þàRwΘÓj62æÒ"©æÞëH‰Òš Œe_A£% ÐqtíÚ•.óÑÖ½{wþ¤m$/9 ZK†¶¦ÑÐÐ¥ë~ô£»ïùÑ wü¿»îꫯ–ßiÛõÑÇCþl é"ýKF´ú[7s¦Üu óÍ)Á²¶?ËG~F¼1'í·äšs ÈÛ+<×:(Þe0pàÀõ7·ú+ú¶ûï¿ÿžo|S²úÚ?|õ‹_¼D½¿/ä5ÅŽ¹% Ÿ{fyøÌe—ž>âš‘md­§ÌZ=v!?<˜¾<îsîêòD‚ : Ó˜êbï°¢Ä %¾´†Ïü¥zj:M#Sf{³Üu@º¿Q¶/‚d ;Ì31­*A*G€˜MNm¹””u_gÔhhsfgFL êYÕ FÜ'"ëÔ€@ #@·24­ñ­’îóÖ0H( šF€€| ÜWÓãŒâ€È@ÀóÊ‚0ï^Gß¾îû¾jVL…c@ j û™´ÖëÒÅ=ÆÇuÄîóæ©ïØQµµ#q êúö-òÂç˜Õ÷:Z!¾zÇ õ Põh–3ë>y‘AÕW†€ ÌÛZd½2ž{—AB €@ "@þÒ¿×Qƒµ¢$ ê»ðó0À3.u>)P>¨SÀ}u:ð(Ô9î^GòB`ã‚ò¨%ô)oæwÚðb“ZrÔ€@*ül³»̬—¼(˜j !@ jàwչ培ï]ïÃr¯jF‰ PŠæ÷øJCV@T!Ùó.ƒ*+é "¼«y±g\ð•^Ì jßì3.î'Øè%µZ5ê@ ~Ðßç•oöÊõ>ý‹=øõžú%¨Ôô^)JVö]ªVœöÖÞÀ£" 4³1ãÉ»Kíé.ýŒ›=R@šA@Îyùv\È}xÈ¥fÆ… €ÿîR£†Û`A €@Õ#€wXUý¢ J@ íömâV8ù-Y˜ PÙ$ïâÊó}î^GÊëM+»$d€hsÎK*æwÚD3å^GÚò°Ïè@T.!©¥Ýë°Y)Ržp©Ü!Df@”€€%5û_´Éó}FÔL?Þë~è÷0@T$´¦£;†üç¼¼Ôßü¨È @ D˜þÄØ‡uàœ·Dha€@…"@¬ÆÄÑ›zosø½^Üë¨ÐáCZ@´ ´{ úدmÊB€®óué¢îe˜ÕŸÿ.ywC*ª$€(ý|Ÿú^GøÜñ(Y PÉ$ÎyùYg~ðßi«ä¡Cn@”Š€9íåÍÞð°;²âñ• +쀨pô¢/ä¾ð;náÉ0žr©ðADz@€÷;m±çûˆå‡<Šv  €@E"`hÍ®ðô{JÕó}Ñ½ŽŠLI JB@ÎvõU=·îã¹õN‰K # €@¥!½ÀŠW–û,ëñßJKù Úˆ“ŸùòêÏžóºûñÉ0nt´d˜ PY˜oó†?Ù²?ã>åBtˆsÞÊ4d€@YˆNlÝwvùù>ã[ˆôW¨á AÀ±]üºž~w)] 4©zOÁTHöH Pöœ7ºšÇ-³î#R4/l¶N{KV@T,ÄnÑélØÒÏ÷ÍMÍ8á­ØñCb@”ˆ€ý-Yá±æ>{¶k¿ÔQ¢k˜ *Cl†åhm—¼Ïëñ3ôˆ  PsðI­¼£ŸmZ¢ë}æ^HÍU‚€¨_ø/¯û&8Ã}r!Ð0"x¯~g*5‹€]Ò™«z¦a—w±÷÷Ñ~sKsÍV€¨OÒ¾µÁë¾–¦æF^2- ¿úœ¨Ô(ÄiMvëÒ¥ ­ýèq*ÔpßÇصë#ËzæV/íÖ(( zDàãvïÞM•¿Ñvà€¡8Ã}D‡ûöí#*ä“ᦦÆz„5 P£456Åñ3|ôIŒç¸îoðS|ƒ·ykt , P§Èí\W¿½£ë®÷QË=üæ«Óé²@-#ÀüÆK?~ÊŽˠ¹ÙÜÞåë}¬TË0 6 êÙìº/܈‰Á}õ7+P1¨e ÃÑwÚ‚&7~ˆÙ½¿×} ¾ZÔê¦?ÀÒ`øŒ ™CN{딀@m"àNgiíG«?[¢»ÞžõšçûpÎ[›ƒª€@}# ôÇ0Xî#_æ#âÃõ¾úž¨ÔÌzfͧÞYÀϸÐó}ök¼vù‡×ÔÞØ£" Pçf³'¼ÂonÝgxÿò«ó9‚ò@-" '¼r·7¼Þ>èbx@ –°7vý™ÚÜoI½ÃÊiÔRå¨:F@¾Ó¦É×}t‡ÃQžíã[Àu J@ ¦ b3´ÆÏ±DϸØgýx —…5U6Š@ ÞÐ+>nG¿Q)ØX~Ä€¨R9-|¾Ï. eõW#£ €€E€ïvh0äù>Ã{á ^€@ Ðg¾ÑwÚ¨ÐðŽNzkpÔQ¨[ø¤Öû6»îãå Îxëvj p Pë„+>srÝçeúcê3`ÙWëóõ:CÀšÐ×óÊ™0¾Ð[gÓåšG€–{ækúzŸÿŒ‹î«y

&ªõ‰€}€K—‹{ü}^w2,ÒúÄU P«¹É“|±ë}Éea­º€¨7<~s×ûÀzõ6P/¨ôý[áºè^‹@‚õ3!P)¨’üf¯÷Ùö³~A¥@Ô ËYŠÃ3.õ2ð¨F€Ocç¼á /~˜$@Ôr‚Ë…ù÷:Bú«µ²QõŒ€0›4R×}õ j@ –çû,÷©‡žk¹hÔ€@Ý#[÷ñ•¿èl—ûê~~ PK$Ox©:ÿz_-ŒZ€)×ûX÷:0W€¨=4³q;ö|‹ðþ¾ÚxT€€·°‹Ýç%t°îÃ@ öp ;õ­5Ç}ø…¶ÚlT€@ѽ¢?,úrBU€·ôóÏy«º6$€ÈA@/ïbϸ`é—ƒº€¨^„õ¤»ÏK…áÂ_õŽ.2@ p ÷%±p{h *^Õ¹µ÷þ>Üè¨üñC†@´b¹ø» ðX_[à„-Õƒ@æõ¾ê)™ JGÀ¿×Qº'X ªp_õŒ2@ |€ûʇ%< P=€ûªg¬)åCÜW>,á JE€mñ¾¸î«Ô±B^@´'à¾öD¾¨$ôÒÜWI#ƒ\€hg ý5˜à¾vFî¨HÀ}9,H vFÀç>¼Ñ ‡{ *Ÿû*")$€hg"î£}íŒ6Ü ЙhŠÃº¯3G±èHôΖûè×ÈÕÏVvd*ˆ€èHðþ¾ŽD±€¨8pÎ[qC‚„€èÀ}2B Pq€û*nHåEÀ{ƒ ;÷•dx@ :÷UÇ8!K Ê‹¸¯¼xÂÕ¸¯:Æ Y P^º•×¼ *äí¬û*p˜편¯Ý!F *p_ R@ Ý÷µ;Ä€@"`¹Ïþr6 €@ý àÖ}É› õ*@ æÐoîãbqÎ[óƒŽHAÜ— D@Ô$ú7z¶§½59Ø( €œüb݇‰€@="î«ÇQGÍ@€û0€¨GÀ}õ8ê¨Ô iÏ0ƒûêj X P§$ŸïÃ;¬êt* l P‡è§Y°î«Ã €’À}˜@Ô#à¾zuÔ ê ´×µ€ûêk Z pfõˆîóÖ㨣f PoÈÞ––®ë¾z›¨Ô5B‚ྺž(Ô!ü5p_=J@ |¾/ù…`€¨abë>¼¾´†G¥  À9/æ5ŸÙÆqö¹K¿šŸ(Ô-­¼Ë õ]Wu  @ –0ôg×þº¯–ŠD-@,À}YÈ@€@-#î«åÑEm@d!îËBr js‰þßÀ}52º(¢÷”¨À}52(|¼oî‚ûòáB/5…€\ø÷ÕÔ¸¢  DÜW PP@ ¦÷ÕÔp¢  DÜW PP@ ¦÷ÕÔp¢  DÜW PP@ ¦÷ÕÔp¢ Rðî#óû¼Éoº¥C€¨jRÞ]š$Ū®É ²`4ë>Ù)úï;Èò9@ ZÀõ¾j9ä €@[÷µ=Ø P­€ûªuä7"z?ÜW zP@ ºðÜWÝÉì( p_i¸Á êFÜWÝã‡ì( y¼9ö|_Q.  €h'šššZZZ’λtéÒ­[yX«<^’)B€("¾E‹}üñÇäø®gÏžìß¿ÿg>ó™’}z†à¾r! ?@” :39sæ÷¾÷½îÝ»rÈ!ƒ ¢Ï?ÿó?',WŒ²9*WBð€èÚµ+ÑßW\Ñ«W¯Áƒ0€‰äåÜW.$á¶"Ààñ']×£UÞ…^HŸÃ† £Ï2%ŠsÞ¶Žì(¼Ü‹nÅvëF7=N:é$M|©_Ò(!p_  ÁvA€¸hN¸b$ïêêÞ¶$îk z°@ œxÄG®‰éèžo¹øNç î+çÈÁmA •û˜Ûâ6ÕÜ— „@t©°´Ç¢j÷uÂ#$©ìÝ»7UÞvaCCà}O¤PîÛ¿Qá“)‹òe ê}ûöÑÓËYo¡Ü·eËV!«ÐÔ¯ãudmˆ€@§#PWP’‡zh§Z(÷y‹¸Bê÷uðX"¨L<º ‹zü¼?ÑBíö;ÕÕ€x§½…rßAÔ*¬^…ÍÍÍ­š@ÚC um$BjÐÆ ˜ªÙ~€ýÑÆ¿DY(÷y÷_$c"8Ú¸ /㮪ýð‚g Ú‚Q& æ¾Nç‡6}Ÿ—ëùþ÷¿%^[fl@Í#@qï½÷2cTH±¥s—±`Á‚~ýúUH1HŠE€^Æ÷ðÃoÐWt+!ɹ‰ïë_ÿ:½[†^(X •  *zßOÊÜ×~ÃÏ@ ’èDF+–‚¸oë; X¸Sh Ú⥶„hûö7664uÿãÖÛ¶@ŠB uîدgEeŒd€ŒÀ!=Jg§¿×èU¸¯ª‡É P"ྃU¸¯ª‡É P"ྃU¸¯ª‡É P"ྃU¸¯ª‡É P"ྃU¸¯ª‡É P"ྃU¸¯ª‡É P"­¿Ë DÇ0@ SXºtéæÍ›Kxóf§fÝJð=zqÄS§NmE¯€np_ AT÷/YÒóàƒ¯¿þúT[îyùnÛ¶mùòåTÝ—fÌÈÓ+ ÜWHPÕ†Àö>˜vÓM}ûöÝ»woµåž—/ý´ùäÉ“,X§TX®÷†´€@U!@¿šM4±oß¾ªÊºõd©"ª«,¿ Žu_ëpCT#ôƒ95ù›9å* ë¾jœÕȶ"€u_[„=¨XʵDªØÛ’¸¯-èÁT4ྜáÁ9o8è@ f÷ÕìТ°:G€}Í™ÛÓ³úõë7ëi¯Ãâóúõ;oñ†L³Jè(×bÜWçʯeìÞŒ-8ùä7î]uïì— Ž–æ “Ê—kÀÀ}åB~€@•!p ÁŸ~+Jú™ÿtå•W¶co-™pÃ3)þ³ä)ªeûÊ&\ÊB {¡fòyÝ'Ìùö3NiÃ’{~?ÿº‰¦ÃJž¹¾g·B•– K&h©L¸áY¨S,<ýa׬˜¸"æcgÉÓÓ/ĸÏ[.$áT»víÊÈiÏ iÿž“Ïš|Ù2÷äqA°é‰Ç›Æß=`ÏëFnìNž»aÃ\²~~ÎqwÝ;õä©C7-½äì'/xvãC­OÒ!'/¯úì† Cƒ]?ùŸ§Ìþ W¤xþ½ÏþpêÛ CëÓ§õúüœ/›ü óIÙmYrQˆ½zõJ‘/º¯xÌ`jqW߼澥›ˆáþϼ㯛ʬæŠ#Ò3Û´GxÓsO¾2ÙS ‚“.øŒ5Ú´qM0ùœqVuèÔë&¿²þí 6ü¤G¦]bÜÇ7ŠzRðÈ´9Ï(÷í˳î+Žð*ìÛ²--tKƒ¶!gMhyâ_Ÿûî·ßœ=íLÚåo÷‹ÓZZGÛ3³Ç¸ûÅd¿s*Û0º×tê+—¯[wWóÄ ³Ÿã\È/íÝØ|y¾Ýt[–<ÒV¹p÷• Iø‡@ú3# Z(YÓ8zÊu#ï¸êŽ`⸣µ|ãúWÇ7”$Ÿ[ñªÕ5ãX–;ã¾ùÁœo?£´ÞZ2á² Ò¨xßZrÝœÝösÂL1CÚŸ}á ‚û Ç šU@öb¢Ôž Oÿøå+'êõܰs?òï×›•Ÿ…ëéþë?ÿëöYñqÒ9£RJUÉŠB/ÏÜ@_´Û ÏX &,Y⤖„«Ý– K&Ä}M¹”äŒMN½Euá>oQpA¹ŠhllܵkW™ س¿é¤¡ƒb~Iôòú×ví°ç@ðòœ9/OþΆåÕÑ«W¯Ô¢J¬7¥"çþä¹6Ì¥öósŽ»ëÞ©'Oj |}†‘’lÚŸLž?.Ø´ô’³Ÿ¼àÙ µfTùósNy|< žŸsɽ¿;y*6íßS"(Yõ¦‚#ĺ/txeýÛ¾ÖIDZ褛¿sóši—,ÝäkTô~JE6_"8³M{$Êþ¤›¯göÆ39X³‘ÊÜôÜ“¯L¾n*ŸÕÛ´qMðʼ³i–ïÈeGµ°îë(¤§ {ŠeÎbÈYÆÌ[õÜígž:Þô¯O¼2òº!ŠNÏZš‡^¹ü¡u#Ξ=tÝ}úôÉR÷e!9Õß²e˲j÷e!9UŒ@>ñQaà¾*]¤€@*B|S¦LIUˆ¸/ë+Yf *M|8ç­Ì1BV@”‰¢Fç¼Xú•yàŽE I|9缱ﴅôg~³ @ ŠH%>œóVÑ"U ŠF Xâ£)ï2ضmÛgœ1ô˜aELJ@ S˜9ëzŽ/qãÆmÛöA2)Ã}ÞKý_üÕ¯O;õ”ñã'$µK“È ³J0¯§NêØK å‹F¿m_ÂÈVšIÙ¯wçüÔuCÐàÊÿV’"ä¸ðYr*AJY‡U–<Žï¢$yë˜ÐçžóÙÃ#Æ£pfÝ×ÒÜüó_üâŠËÿfÀ€lß¾=+¶O޶{ÈÊ òÎE 6«(û,õfí²\zSwi”=9{~Îù½2s Tk™VZè­† 6î¬3GxÂÜ[om<`®÷ED»vë~ÄàÁÓ§O?âÈ#Û£6í3vɶø`µqq½øºÛÑ¢×z¥=æXÊ´O»!¡ç´»"fdó)!xÖ¤jÇùT¼ë¬ŠŠ÷”nñÎþðàƒÒН©ñ@:$ ]ÌJ@ Æ ûº¢ÿ†§÷˜öÌIEND®B`‚PK !-à ¼ ¼word/media/image32.png‰PNG  IHDRQ\—¹— pHYsÄÄ•+tIMEÜ  6éâªtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/05 18:54:19 lim_j SGA250167œ? tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì½ |Uÿ? E EK(J $-„@QáVPÊÃþ’ZM±¶[wý•MVH‚ÚõaëkýkwEëC¢îº‰è]·ÛZÛ m² E„ÍÁB Mx¨Z¥4Må¡-H›ûÿžó=sæÌ™¹sç&7ÉÜ›ÏPnfÎùžïùž÷œ;ó¹ç̃ã`(ueVËÊ)õ&£}    0UdFŽrS•æ+++;fÚ±§žrJcccõ¹çÒ¦E"JÊ.å8™P;+1ãZËç,^ôèÏR[º®(϶Ӡ7YÚïË­Ànœ/’`1¥/·~#Q&™F½¥}¸‘vº„g®ã•y™°]4)®¯Ð"6…œÜͶpa«7A ˜µŒ³ ›è\UI¼žm5›¢«äܧ“‹)Kÿ´Ãt{Û€[èŸqºýä@íO@…"*Ä,ÛàÉ7èÌ«%Ì[¨‡àá‘ÝjcŸ'÷¨hE¾üß3ÔVÊ• ÔÇ@1ÌÂ0HÊrgîey»¹£·kà7´‹©@çÏ›·aÆw,[öòË/©$ÿŸ`Œ¡ffâ1Ó¦=ðÀý—^šzù¥pŸÒ8K@–÷xV!üq·ÝvÛ{W¯îîîioofïÞ£G^™&ê/+;îø>ûOÿôü‹/>ôHß¶îîî'›ÐV¬4¦8ÇÄàá5/ʺx°®‘‘“[«#ûÌeÉ2¹RÐ2“ È2s+UxÑ>Í"´îQg½©eã†ä•2‚äU]œcbKF ÖeWÇ)##ªi¦[ö£!ëÓ‰¯ vk³¶‰)RÆÝë´g³s’¡¿¯Š.?E×cõí˜]=mrR‚;¢à±M@ùÆìëþÎïI6ÝÉyôº6à0¬ö&°ùùâ‚}Á Ä?t-Í”`®UgW,6º Mw=$”bY†¦P.Öå'²/½É+VbÐR§˜öщì3èÙKS/ï\öŽoÙ:´ÿÀƒ=d†ôf¦èu+Wla&ŠRF :r.JŸ¬íèóèÑ£b]þO«,û8—+bµ§¿uV-A&*Ö,¸¸÷Õ•f”h~«Í*8]ç†zÕ6Ú•¹Z¤è£ ¤9z§wqAü‰ÕjŽP‡gõ³«è¶èžÀ}Ìê!¡!MêÐz‘XìÌž©ÛbñB€Ániömv¥ š+æ7‚{8Zßž|äó<·ÌÌM«ÿ+WòdT~fAn…n¸þrì6´]ÁDˆv«=xý„΃‘êEWíqœ“OyÃÌ™'ë”çž{vß³ÐuØf‘˜ëL#Ú˜OÝ‘QG;¹\Qo:}ÍÕW Í·¼~ùá÷ÊË…øãO5ä'Z&VÉ>¢zCZÄ5‹ˆ7Tú™UXey‡ õb,n¢'¡tжR>=©ä)0;Þ¹ŒÓÙÒrhnz®ä©Ò¬‚æ^ÌV°s36n§°½n%êÀ¸º­ð8ÄY8BÁÈ’¦7|›7¶kÏ+V5Ѻ)ûhS‡mgݬknÅi¯yM—zþù}Cûö˜)/PÊО8>Cm`ÿcýÓèFÝŠ“O~vß¾c=V(>-ýxCJ?ñ!ÿÓ 5•®Õ² µ 1ԃձ̂f–9¨¥mü¡&$q<ÝŒÊRK>‡†˜!dÆ–Z´‰\W¨i'´bx¢SªGWÿÉ¿bÓK*QÖ*r´™L‰†W×Vé‹é"¡áºN.GŽÑ’ïȱ.U¥árdC+ôɵP‡á³mn ±þú È¬ƒ‚y c®Q×k­˜¹Á,!{±ÂMž‘nfòB›äˆ‚ [ÿÉÖtÈ@wžInªŸTúxÅ]"¯X¬ƒîQÚUЀýëtk…r£{fèÁÁ*BGDJ¡®›Æ•Ër ‰<ÿ‰%O :q çD&@I‚è–šözVÌz5vN´¹É&i›ÐíFøLÁGÆ´I²Ok>+°Poщ:<|º.V–VJ|ͧv–{Š×ìÙóG1ÎwÊÉ'Ëá=!÷¦©ÿIñ‰A?ÚVã}<Û[¦Ðk澉nï•h›ˆ\ÒŽÙô¢jž¿pœD)§¼bbƒ7ÍT™oé*‘â+©œÐ`˜…ænFΉæ.ñ 2-¼dpº [Š5 I ¬¸V%õ|_2éCZš-ukqÃðu Ó’ÙwDè>Öy”H+Ô?Hõ½òÊ+#òûSVFFê‹'¿³cU{º&Rhu¼ÐÞ¥m¸ÛXŸV–)«°"Áf‘à=K[wÝ+Ìñ·Ãì0Ü+tºÙ[t‡Qß©"Eƒ° D€{×(œY½‹<„ö7óàföC³Kg+ËöVçgcÝÛõwÄmäÕŸÙXö SĦ<݈3¸{jÑUk>êD'Ò %°ò3ëÒëÚ³YŠ›6Ú¡ït¨ƒð¯hŸ/É;pÿ¶¡™>ÿ³³-‹¹ ãùÏf”=ŠÓØI=–}¬,M H¹Ä/—Xµ+0Ïæ”G$å}»ååÓ¦‘Ø“zO¬È5ùG(A÷?ë³]Nö¶¹³u,¡‰”k¦»JKrÁ°:²Ú¤JðL‰¤}zc„ìRvt‘«»~)Ñ‹DÄ!-µ½ÜPeÝtáÈ­ÕÓy:Åubve]Â+)rü—+uã2ø¸f<ÀçŽíFÿјޑ#òG ü¡^N›¢'Å©×pä”K¥(%øõÖÕE¯øÂŽ65ruú bÀëÖ'¬ÍÆò½æ„jãW« mt;®à±™ûœëuxº;Û˜]‚û•eYð˜á°”è>3ŠFé¨ËZ)f76ý¿}Á#›icåê,^:x“N ”Âc~nŠ–£MNá`´[/‘GÖÜs–6 ûÐ8‘`Ÿ¤W"dÙ˜!™XµÄÜ)ÏýùYV{tù½ð )€ˆÜœY.B)<Õ+Û(ÒòU~fÕêY-,öXù‘êcåGj-úxz׎Ûld¶@Ʀª"l06 ±IÝÒ4"xYD—3wRèãD/Ëð®‹\#6QEÜt/ÑH!_„R͉ðXôÉ@¥…[+ç)Ê™4Ó‹Ìçf©Â­©ùY\^‡'WÄ„._Ã'®Öjïh¹|â‹/#ÕO³ºÓ¨ÚWh$žçvu®Y¼5_cbáê8]5­°7½ôg›Å-Kò£«:I~ʨwG¾M›°Šrfv ml†gu³“ðºe@N¬ôœ1À`*ПÑA×ÇF«oëM]‘uÜ3{2Û³–O2ョö±Æüt:$‘âm”)­(ŽÏº^ázMb:0:³Ðºöl¦×9W1íÍwè>Ú»÷wôï”SO'Á÷ÖÏŠ¹èPíRîIÜN·­eßw:¾Ä%>ØøZðitrΦ¶rÖ#4ŸÌãa=5ÀGã{´&ûÊ<üoÿ}ð²àÚ¿gå‰å~áe ²±¢8øämÿúȹ~ç™38Œg½þ{ÎuŸ8ýw_ì¼ÓØ’÷üÍÞ}1¾<« ‘'c0Ò>õ“oýøu 3]ýÈBf߯¿ô}çº]x²Xù¹ô·ðÝMËD ŸüIû–\ÅåïûØ›ä“û~ý•þB¦]þ¾fN"WŸêùöÖSßÛòƹlîì{°uÃÝrý²¿¹á™ê~íîùÛ”]å²ë®™w‚Úp­X„ÉDUÈ-ˆ,Ôt³ Ý&‹¸_¿ü“é vÉÚîðïÞrçÓìÜ9}Iýe§©üHuž4 ¤æ£_WeåGÕ´>ѧ|*EÙô9mšºtO<ÁE=½ÅwA† ö?•¬Å´™þnsŠù­ÎZ8ìÌm)Èo²‡Ð*"œ#‹ÄÜÃ*"½£uà½ofv Ó2ØR«·LLQK’ „ö¨ø›G6]ÊJ µ!c\aWfºŽ3ôû¢]3Oùé‚üu`Ÿœ¨¿_\÷íPç4‘jÃNt®ùµ2=›éÁ°u®n¬iωòìšCC‘àkýÊghÔƒŠ´|ìó4æG+ëÇûëP fÇHá åÃ\!›ÁP¤""n»Ð|´È»4Ä?yã®\+/;üûŸvn¼üo>zá©å/íÞö­/÷¯¸aùY' {¥ ü Оä„< —\É1²”Ÿrѧ>q1‰¯'nýÆÃ5®C¶°>E-FÏþê ßË|ð.²Õá«_{þÙÎÃ/*?ùD6ö?w®¸îÔÃOw}ÿçW6ÈŸìzl¨òŠgwm9­aMý\¡è~òï?øÍü¿ù„'òÃ_\ñ¾½yîÁ§¶ÿûœ¿æMŸ¾íß¶îá¼VŒsŠ|zÛ†»ßö7-VÙ·øÐé7 -èÊ#ºìÑ©z×jϘžÙ÷Ð7~ø½SßË¢Z ¾®%§È–ªŽ!$”“¡_@,šÕ&5EárJÛIÄÃÞÒ•¹öºsgKÚ‰KË iÞU+ÞöúãáÇ¿ÿ“®ËþöYÄ]Ô7ÓŸdnÑ:õZDhrÞ–Š(Ú”r{ ?ÐQÞðS®ÆÃDA7Ëm¶Í|íÉÂk4ŠêÕ麯³™þÔpÖ§å6[ÙZôdЃÂ3;§^×ÝÀì?Á¢‹[¹”n»YE2 ª #`CFQ¯>6r¯cúøº©k1ƒfÕÚ•vÌ¥,ž?Í>/•mfz u]JPå$‹ì³*âMv°•¨#¤³,{ _Ð:\J·Œ¯),ø>öÿB‚ïÙ½¿7Ê…Ïÿ«¶È„nVœüzºoƒô%](Ï´N*“Öé6^«Ÿ]#£ö•àÔ³W„ÄsÏår­¼üðï{· ^Fç‘wâYõŸøäòÊ×(3iaÿ{ÒL±(Çœ,¶ÙÜ–¹/ÊÔv&’¥?Q‰õïÄמwöãî;Äú£|èww:WÍ?µüðÇ+Ï8U¦¾ºòÚ‹¨!$8?qñÉ2¨WŸrþBçO/:<ôèÎ…ï>çJ:ñÌK®p~ñû}åe'žùÎøèÇÞ.–Uêßµ`y5•¥Ì‹ßæÜó‡ý^ˆ´&ØJM[V±à] œ½Q¥Ð…%•ä:ÿ)¢š² .bˆ’¼Ù„md½Ú«aŒ_ŸsÆUg8C/½,Q¨‚쟑ùËrš›#!TP(xY‹\"DÛä›Ë_o*Å+ÁÏ8YùVšp{½×ç„Ç(¸"Ý]­ÞÔÐLzÁ"3ª(^…:ÄýpŠy¸Óë&.ÓL¯[Þ¸ ™Ët _·C‰œ"çD!Ö´ÆÛA?:Eqg‡D9¯6vËŸÚFoêJuH:…›¡š®Ì\³¬½ž}„‚®ê#µ'ߟ}‚ÏöÀÛî'7ÌŸµÅ‚oýÍŸ$ÁG I=^¡‚ôÜ–ÐÂÙ£5§+°Äâžž¥LQ ãðsƒÎåo©(—ÂE¤Éyù‹Oüøëv¥sûŽÇDɳWµ,¯<ÑÙ{ÿnÉ\yÕí;îþ®ºþSo9UÈ%¡™H0ÈDᚆ³Ä¦ð'k’Šs_|bË×6JŸÎ9ý‘kÉ©óìýë¾s»H Z·~W8¿å‹;ÎYyãµr¸Ñ ;sâkÏ?çGコòÕ¢Ôïîp®¼þTrî_Ÿóõ[nÓ\ÏÖe4L%î«UjäððNç´K_}øw;×¥^#£rNœs¶óÈ‹‡Þ| ͳº’b† :°Ëyí%'Ê1/çÄÙ G_<|áÉd&ú“$Û*•¬™ ú}Ï·=õrçž»I;ßpóÐ7(§Éi¹l¥zè››2oMõþoZ¦¦V~ø¼9TòÐ~ö½î'dÒ™Kÿæê7L?ôû?Øyò¥Î}÷r*elù_žù–Kœ_î]ð×KÞppø÷wý×®ÊÕW¾þ5òç†ÁR™Šˆy ÿ»·Ý/=;Λ—½¿Z ü ?öý[ óçÍzwÅ»þoõìLæÐž»7ª™áÓ¯xÇ%§ë8/<Õu×#Âîä ÞvöLq¯†^øüÇgDÙOÔU¦MèzðÛjHNô ˜,Ù'§è,^±>ÍøƒìÊòÃEÌ*¢cKl.µ« ð£Ü/Ñök5\of[1;@°“èž`­pC&ò@C…" ¿tæWcÎCAfbDEÜ©Ò`ïÕ‰VHú[ÀéìÁJäS‹Ø­¶¡]#ùJÙÇ'Q]¯iÆ‘ ¤N×U½™êzÍ´®‹r90%]•DðÌ<éä›ÿy mò×Óå}\»—˜nŠ™ešÑ: »/¬û8_2ø©µ_¦ËøÖ|òfJ¡,ú¤”àP{` by ݤ–ª¹]F)¤‹ø'à:ô'§êÜérC3i¼W»ý«núôµ'|âÇmÿý³'›ß}–pû§ñÓÿxг÷—ÿrË-ÌÿÌÅâ2>vɵKY$RŒÅÝÞ{ÿ×6¾¾ñß}J&#Ä߃7]SöÓïüaõÿ(ÄŸ\Ö^כּ%ówŸ~Ë)º¼ê(4ôöÚ ÎÙô೫^}âÞÝwæ’Ï9±ryóê­mm7;W}ðÓo¡+÷XƉ♽|÷Ž%øô)eÏŠQZÑLÞ뼡æUY6‘5·[ÄN Ê}“/7D5Gð‘mËÜ׿«ªúí3Êœ!Ǽç™el©~ðéÿùö=îU€ûlÛø?']÷WóE$½ÿ묺áCs2Cýë6=|Ú‡9¯û”•MWÏÉ8‡~{罿o¸jù}â¾½uïm¼z:i´Gþ}KfÅõçÍÉd†œû~üÔFšæ=¼×So¹àŠéªÓ*ð¼_ßš_u íͪ?ÐP-ª&ñ÷Èž3ß>gø®[¸¨¾A¸øÃ/6>íÈ ÿüØÆ;Iü½möÑ‘ƒøÅ¦‡žY~Þȯî^|õ²¹å¯ÿwìêE”‘‹)?Iù‰g·D þ¦é²cYñ¾´®b®ã ¦püúa®°on#­+KPvÂð v?ݲ­pzðS÷^Ñ}Coš)ÖLT”dúÀ2– uÖ%ÝÓ¢SfAóÝcC¿8úËâ6DXiÿÜL¶ÑMnа åð©Î,æwÖ Æ²Æ© 8‹CWLɳçz{$LC‘âÔ{J3÷›™.šïþ?y$ì¸,­óýfŠåÖ_»”1¥ùrZ ¬Aœ³új©ÄfœõÖ«œŽýYó]s½Pcç”êUçüìaº¥Yݺé[IíÝý32ëøg9ª'–Ó.Ë»›·ýòÕRä);Ó—ñŒSÎ?籇÷¾xÖ!’|W_ï^ò—™qfý§ÿñ]ÏÞó¿ly$g{øÂ-{Þsã»Ì+¹ŸÊz”úSëâW½1*3hÛÍܵõÛò@çò¿½q¾¸]„2*—]>:š=ûØ@Õ²Ëæòeys*ßYyOÿ¾Ë„‘³xÕ"ogNå;Îê}üà¡×ýY¼šyS;ýÑêɇ2³ÉÓY•:Ÿ«éÄ Ž3çµ—8]Üî¬ã÷ïzòâEKÈ‘*?õÓOÉ.^ÞpÚ "søÑΟüR&ѸžCRqðé3®|‹îËÚy9O‹Œá?‰q¿[¿/GÿÄ2祋κôÿŒ¤ÿç‰cÿêô8ûÕ-˜ýoÄ7${¡9_-ÎÒzÓòh;(7ô`‘#Ž"ÉæÃßx숢`îY A31W8—í³}š]…×éÓdìZEA AŽˆãU¾•]»´î–¦s³o³Na3³sŠþj˜•šÝ[*aeõ*Î)\‹èuåVh?%’¬¯Œ®×Œ_'š+f`¼®SÌ,Õ9AÇ—ëqxº©¡hJ÷ÓŸù ÙÓŠ®=èJ7ÐŒ×C-3yÖ£žÍn`гXÕÊOÌ:Ò}!¨4$¡(ägúÜs*·ÝºóYºƒÞº5B……š é á– ÅŠüŸI„ð[,Ä&{rœþ¡ƒËÏÿáîŸü’§tï¹ëGƒ²Jé™Ãp˜¼/\ÖpÎ,Óä2‹Wn¼ªâ¢·þyëOÿ‡æv/_8SÜÏ¡og¸u±GRçZfÁôqM¡`ø <:è¬l˜³Ùi:7­Hƒ/TغK°Ãàá•{²îf_2;OÐùÐn³}/ Õø)Üy ­îTVïÕ]—jÉi£ÍRfAªîêf̃ hS¥Èc//ì™K™)ú«ÇçK>‹òêtçy°âÑ6z%¤v®Ë²1݉8íØi¯zÕ«>¬K©Ép"?±EØ–V†<Ÿ iÐ :%fq55ŠºGÏd±Üò¥vJsPÿ¤¢8áô /sîþá¶'_PIÏÜÿãÁç…jqûïþgheäÅÿ¥yÔy,îèxAÈ’gÝôØ953FN8¥ælgÇS{¥XyñO>vöù'OëRÚHÁ#Š’œ˜{úUÎŽ[îÛËYî'‰¢¹~ú†•ç<þÐ3\3Å&TR^è5êß §œöã7Ýá,™w2'>sÿ?ßÿ ­Š˜hôoá¬ãGŽ>ó€|7Ðócä Å(÷„Šš³wnîßKï{á‰ûîtÞö†¹"&!Ȥ~5ÑÆ s«îÚúس´þÂ÷ÿ¹ì sÕ É(|*+ÑÉæÈ‰¤£¤Y©?{ÁYƒÛï~’‘¿}»n{âLŽ@þõîÄ[.ö lò̪YÇ wßæ‡ö "Dö(P±Wá@ú•/=;zÒü+çß÷“[ï›wåüY7‘%¼ ]IU\#‡þü´sÑ)'QÒÁýO‰ÜW?×yúÎ'÷‹¤?ܵöáYov~}Û£û©*z®²p –WÏ_ö¶7½öÙ?>ÿ²NR}GÊE¹È Õbö6¯„ä:N ×¢7uœ¼2ºOrkUa¦ŒSÓÆÏ­{4ü$,h•º>ÚÔ÷(qHº°µi¥sØ¡Ÿ@³Éiì(¡Ø8(øÑ:èqøÁ#að¥m‚+¦“`Àf »5R„¦ …Søì`yã\}âP¹r”$h¯StEf '²Cý©«³¼ í?iæIÏ?ÿÜé§¿aúôé|å¾6+¬ˆ8)˧®ÑÌçÆ†–µµ MŒSœ.­¢æœþ†7|ñÅY³fY~Ä8Ÿl§i$ORÎŒÐóésöy7|`ÖO¿Û!†4Ųäýÿ0=#&,Ï>ûßù—"éìÿï¢9$­gùú$R¯xÿ'Ï M•9aþ»>°ä‹·Ü,Mi ïºOœ)$o¹c\r°Ë™sá–ÜñÝï~>uö‹[ÿíGsÁ†OÐ3PF¦Ÿ³rá7é޳ßýáwé^åÇÎè3#Ä›óøãW’ã:æ¾éý»×߬žlxÅu;cú OÞ!ž ¸ù›ëU±…×~èóæ]±|á·¾ÿe‘³`ùß¿IH¾ƒOoÿ÷.ž¨ýÁ—á,xçõKç½áòwV}û‡­w‘Yå²ëÍV2Oì©ìä§/“{…þI9NædŽ{ýUï¹´ýG?øW|éµwÚ ##‡ÈúŒÌÎÿlÿ‘|É»>ðú㎎W}íÅ÷méúνlzÑ;?pÍÊ ¯Ò»ãÌœwõ¼mí¼þïyûiÇ¥#¥å IDATwÒ™óiFöL!!…Ø"Ö#’«”†ìH”<ûÚ+îÞòwÊöt*1sÁµKöm¹í‡¿¦ì ßø¦§+1³ªî¿êîùÏ_qÑó®\ñºƒ÷ýô>¾Wüì ß>{Ú‘#¯¸ÚNÔ+ éEÉ>]­ˆC6a W§O·æ&­s:¯dûäP#r­*t‹ú¯ÉLØžJBEV«i3Ø];Ä掶ú 5Êtê0 G I# NcL÷a«£rçdÿÁƒ¥ëDë[`~¬ðt7ãçD÷«!¾î©ITA›V)ÓžsE0ò?^´½µi¦ó:}rCÌM³rpð‰ÔâTwww͹çž[}ÕC÷ÉrY]…[*÷ïas•Þg{Á¢óEÙàܪôhÖ¢‹¿bÝïb<öX¡ë8ð›ßüº¶¶î·¿}Ð4 Ex̶mÛÚ;¾MÀêÅkê-êÝkôpfšØÏÞwîŠ ?Ró!÷AËêT¾ïW_étþ¯|*rèÚð  ÐfÁ,rëíüÐ:ˆ£~'¯¿¼åÍçGª]Ÿ?ê2AJ&•%Ò´™\á ©õÔ" Ì,6ñ¼¹¹Ê¹ø³¿ï;·eäý²*ùŸW£®%:ñ¥?Þ³õÉ3ßµøuüÈe]ÞËûë5A¦éÈ]‹—žIo½gÎÿyÏ‚“t­ãH¹Ò;8ÄçÑ#ôÅ {8ÜO¹"ï)—oe¯ê ÿ© 37Z3)Áï•N±VÌM^þ¤àMçM@3 ^…ÕO îŸN@ù†m;ô÷Ý-›Eš 4Ý[LÉ7lØ—àñdìm õi%FØè¬Ð"œhÙ)EŸâåºRÖ§Þô¥ós1Ü"\*XÜLמ­D&)=‰Ú+**Î;¯æž{îyî¹çø†Y³ 2vËðߨÏ0¡¡9†(‡yauióc§M›9ó¤Ë.{ëÎ;ŸÙ»×tÃã|b,Š<°vüz 4ÛMÒ <#.¤gí’:§ó8O31%ƒKŠ "D™­ê8×8Øzî ¡Fƒpí·ò œÌ¯ªoª£ë踹ð—7· '²$5ˆ•–»%冫÷HÊu‘*ÿ—Ù4ŸJ×ÎÜmå[Xû+bW²^ÆFŠÝêPe&׿J8×Q9'ýùÉ»v/ºæÒcÝ›í,b)¼³Ãûžü½sÞ‚u×§ Xó‰=+g’IÎÉu±hy§Ä Ï=ËÙhÑv7þŠ8ðñÿ¤ª­/•N±V8H2FˉV–ÞÌö¥ V=þÍ-¦4· ð„4ÃÜã­ÙIÌ^¡×uä¡ÝŒrM?llÖ’†#ŒI' {Z# õi¦BZ¡ßЈïo°K›ÝžN ´)ÏÒbÑ~Ì–²_.ë&÷fU¡7Ít^gÿº º:N¡Í}ûö=þøão}ë[_óš×˜"ÊH‹XVð!{-{ñEâ'¤[È ÷?ð«½{÷Z•kÍ'díq¾¯X W¯#®k;æ(­ˆ'"Ë'ó¾B:eäÈ_þòß¿G„Ø{å•¿ü%´f#ÑÚ¶¹&& K­8¯:íê|øj_Ñ¿¼¬jÖªÎós }}Wh*Ÿ_–YJÑYE̱@Wäéâb…¸ÑráM/Wª7S̱¿BÔ3¯¼üòˬð¸8‡å Ïõ [ÇÅ_zæ—?£ùÖs¯XvüK†7zŽÇÎó·šLžê'÷<ªŠ¼ö¢«ßp¼G/zÚV«=)õx9Jc{jhÇÝ˽YÞ@u¾àÆCc ~Û}„ÝÉ8}¤ \^7c´r)Ë4‹þú[ VƒÅª`~Ã!‡YMDZ°ÕÙúL°p|º3èFW&¢%¨£$ðª°G• Oë<`ê¾M+Ö·5ø•acN×®ø{á/Ë#|>åÇÚØÜTUKsVcV$Vlœ«mÌMŽì…/yÿãÿDÿÌÈu÷ÑÆì_¥gp¡£}žµi>+f¡åø$¬£s»·Þzë׿ñ šÊ•÷öŠWíªi]zë½r—”­Ð ÈäsúÈ)‘ u=ÖDË«_ÚG8çx,=ĉæÖDøþ&ˆ¯Fñ<72IÄ$3U£Åšž©”ë …‰t«K™É<×›4’ž•±®…EžáG™r*gqqWÏ©à «ˆ¿¹ÊÎkªUÐØäA;Ø£uÒzr]¬ÐBC{âüS9œ-EŸ¢ZwöÇ/'øÝÐ)¼b~R´L¦°%‡­êVSƯãá9¼k´¦ ¨"ßx­ÌM½n­˜½=4‹b–åÀH _b°oãq$ õi&F˜CÝüˆ#$ei‡zµˆ.eXÞt.¿é!Ì«Iõ© (¼`³ŽDoš»Òô xó•Ù÷ºU0ÔyDEÙ‡ä„Ö´cÔb´NžËʼnœÞQ’y4Î'ÿŠwïŠ+ùôê}A_qSÌÓ¿%–Ô £Û£µ®úáHÌc(9ÖU™"Ì´ô©1WÊ ý”%‡Â§P|®ªã$•/ÊÐPŸÊUzNXS-º¯È)èÜ&ËUÏR¦=¸ÊOµ´økϪ~8:$«Tè&¹Òƒv¤âXü‰¾"Õž”œ&T 9¼gÅê|‚uHºGq mÒ êØF§k…Ô°7³"ª˜àÆ¢ºq" û‰µbö¢Ð,ŠÇL§Íl½eœ"‡Û¢& VlE¨O>èq-Ù ÌÎÌ–|À4{µŽSw{Î¥MNq+EõwA{³RLo´.î4å7^ù¿Vì3èMW­³Ì€¹§XMvƒTõ«M:_çí³ rùÐÄœYºíÙV¬˜³›‰¨ÕÜ.MÒ‘À¡[5޲ØZÏS|âÉ~âz¿\íÌVæò¾¦ {C©Ø“ë²€)È´WG©“­ó¦W_“qº¶R·g¸6þñÜU¨ÊX¦‹õ@í*‹ÉO·ˆJÒ> 7h7ɶ1j1Kå\'?ŒŽ>ź7ê'ÖXö± }ê…ÝÚ1ä¬,3w6^‰h™ƒ5m*@šI|‰ ½+u° „vnœÎâ²–Ea&ˆ€Õ! YЭî½\…µi%š‡Êàw‡•úÄ›VätŽ"SùÉMq˜ÕÅy“OIB–ðÀ‡<ÇŠ’î¹’ÍøS×b˜Us:—¥ŠXPò¦Î²6½øeЦ7k,)Åôá‚•FxÍÊæÖ46ïÛpé-Æt.k>!ñÊÔ|.Ù´ÐDb„Ø`\ÒäžÍ—ec7×¹¸N¡½ÎxÓü”qºf®Î£DÛs-]W®q•«2 ‘(S4ZåM³.3Ń‹Àõ „c¦ö Zü³ \ÇyüÍpÂÊ6ÍQ=6pm´ÆucΣª 2åPƒ]Îì:Jd{Jáu3…ͬtm­Š jgV£‰Qìûä¶ÃêÁþ`u ÝtØÔ³KX›fK­º&·á¨=á¸#<Ș‡ÇàWÕüjð—‚c³¾ÈÁNî/èÝÞ¡›ú¥£s¥‹,yª¥‡ «M¿æÐemò7ŽÓõ§®K»Õf:Ë$ã­ç’}A? £ýëtZ Ͳ,C7­Ý´QšO0sIQe¬£­ZG„ö¬ØÊÒ{"hi¦P© ¥åÊÜëFàâl`=RŠi¨ 8UV¯µ­«\ãJ±îä`€ÒصW²IÅÃN„;d¨=s{9jÏÌh…kàUÚ’s-o:q+f ¢¥|ç² GÑpà †1Š'¦‡jöjJѽ‹V̶X›!'ZŸLÞ쥡ULLQK¡˜;Ôô©;F¶nÀJRYÓRw$î6¡›…jü”}Œ22ifèá‘{/û0°Žœ¦½ŽMq(…¿f kJç,®Wo’¥ßX~§Ü©^3‹×ƒÆ\©ŠÌ‚M m¦i)Öùô9*¦bVš¨cеXqÆÙŒð,Ÿ¸"Ñ¢&ë~àý³N:)8P“gA²¶ðä8 ±á]/ë،Áö ûŽtʹž™K©Ò¥©Û¸ŒLôŠK?rÛí—Ö†ƒR€—?Á¯ì¶°Ÿ:63È`À…­t¼EtiïJu(P?@96³ ²4ÌÈ&Û ¢Æ kõ+*™½Ÿ/ÿ±Ëøº«Ö—Ñÿ•áÚÍ@uª‘hÛ«ílç…Pó±ïÐþüïþ‡é\=eŽ/Zª’à»7þÉm·…D„X¶l):Söùž¬LÑ“ò;餓Hðí~ú©„7က€„˜7ÿŒÚÚZ3Ë~ä&BÁ!@@@ŠŽ€©ë|š‚¯èö%ZÝy×óEX# @@@@ H °ìsŸg]¤@Ø    1Ø×óÅ("#ÍWd; á‚€€€À(@óŠ€€€€@‘€æ+²†pA@@@` ùF E@@@@ È@óÙC¸    0 Ð|£€†"    Pdì÷íYø‰ ÷Þ~óÒË/ŒŒ$&"2^ÊËË?î¸K/zÓxU0Ù~Ñ™'{ ~ˆK äGqAÀ.h¾xœ"­~Ñ{ßÌ×¼&õ–7Ϙ>=Ò™¥@àà¡C¿}¨vúÛ_R íñ·¹ôö)ZTÂò:áç\iô„±}h¾ô£##oZtÞ 'ÿÒK/À\$›ÀôN Ý}Ç/îIv˜£Œy”àP &ƒ@üÃ~ÎMÆþ—:óúVBó•KTSÈ)½Ænúô ø¦È.ùå—iwëWV—X«Ñ™Kl‡¢9¥M þá?çJ¦'ÄúÁ&㎠¤€€€@IàŸs¤KªUS²1ñ…~Ò|eîXu‹RÀ6)    Pª,QçóIÙ—)Õf£]    0 豂a øìã46E@@5Ìî¿+ê¯Æä5yòØ£f(ÖxBóÑàÞ¨çsé´T__ß —ø'3Ý ]|æÌ™ä‡> ×@Ÿˆ,¸óÈ8O=õ™ÿÌ®âöýüŽg®Yr®ò ¶.¸à™;|¢0Ò;2‹ˆ5¬oG¶~nICþfe3ž(èÌEõ€@" ßÿƒ¯©å÷çÒ`·(K…›Q”WߘœË»­šd³Ç-àxÍo+RzBóѤnY¾ƒ{24VltNzN.£ÓUº89$'…m³y¾,¸óˆPϿꚬ*n_ßç^uE…*M[ÎùK–œï<ÜgŽFøFV‘àoG½™6æWcÛŒÎ<‰ðQ5L(!|:‡.½I-KA[E‡3Ø}ÛÎ…Ënºé}Ïž}ñûÄŸhû¼rI«¹šl¬ÎçÎݯ_ÏÞ×;”W4Ejl^ÏGÂ/ïǶðiI7^ë*ž–²Æ-ÈÌœ®âÜÎÎN^±Œ-AWìÍüÌ×¹[ZËhvíÉW\uêÏþ+lìNH¾wÏ‘’¯¦¢¢¢o4˜Ç¯ÌíaKa« íáüuà~¨¿ú‹쟺ëjÒü.pÖèƒGg=;”;Ý^¿¶‹áû·÷ÎYvS]¥›1ûâ‹õºmœm{îÜBê¼lµŒ5}Îgç 1ˆ9¸kçÂ… ÇêµÊËg2 ±Wæ^ÏG+c›Î7zÌÎ[´Îu:'R:¥Ð´—®¤U\ËJS_êumlÕÓy¶Ø8$KÑæÅåÜUÛ÷©ÿúyM³Ò“Žóg§Ö|Áõ$%ß{؉¾ÿêÛw…ß8¯ a\HW_}5gM”RÈ 'ºÇÒwD5øûÂC€¡_( ÌürÑ&;7Ñ™ »ûà &ŒÀŽD[†w-¼4TäÑø_§£a<) iÔíÞ¹‹çôö‹Þwñp÷×n£_Û©6ïKÉ$ÝâsS2Qç\vå&: ;…òtØyUª-rÞ«6mçÊ0<6[‡Î½äR§ó¾Á‹YßßïþÅK/Úy/ïS N´Äól¬p0 m©—È-©”íÕÍ åÍaŒÇ§Ô|ráA>zclþƒ}!…ê3>‡ñX iœu~2}ÒŽC‰ï\[cÓr0¤y±’¤ê»óÑ+VÖöÑ¥|:Á“|Žéûª0ÖC€±ê€Ñø0³£|ºO†v§œ=V5r~¡ÌŒÎ<~½žA`Räp”;òðAºÁîN1þ÷>’'B½ýà~¥Õ†zÅ4pÔ>B?ÕÝ´Ìñ”œEóŠ‹Ò$£âÚ?·á¦:)Ñê„o—÷_ò>¿s=å7¶€´ª\°ð¶]ƒu•¢Qƒ;…Kg;zr·ÒWu¥œ¡¶Kåf¡-¥Ä nz9ì¦ÉéÊ‹…7¯™Q4 “G#zzWi>º[w$3BîG1½›WPAy—WñPcöis„ZF'c ¦D{°sÏ]rÍ_Ýøèߺéâ~ Ö“)4æ÷Ì3ÎW?õ3]®ïÑUçBôÙ'o›³£|¸9Œmu§±÷Xòoú̶ÎüЙ'¯¡f(±Žr14DJÍÞï¸ã³/¾taï.e4wñ%RJ‘|rî))+¤âs/•†²´KËÌÜ…•nýÞ0Úܬ2q ±U^²øÞíB‚ ß×;çÒ›f;Æ¥‹!U‡5Ö2 m©ˆpH Orƒ.ffQØd=‘+4]Ä'd S–QÏç‹{U ]gš (ƒÞBÙ,þè`Ðm0…OÉÁô|R*®xï5m_ýÏgœS¯¡bòîf÷î çѾO½æ£ÞÜ゚·}¢/¼a;ÁÇñEˆ­ÂöØèÌpÅB`쇣¨–ή\8·W }EÙMH ÞæÐÝ •bhqû¸TIíu¶ÓM*;i^׌YuL3º;®š‘ß}1l»ºo—®ßãá=’}ùzç辏΢-ÈkA8 Ÿ$%­³”ö:GfVª«ÓEÌòŠNÉùoÛ Õw*'úïÞ’nßð Ðôî©ö™ö³a»”ûg0…Û›W§Í†9¤ƒHbnçmÆcL†ï¿ŸôÉìÙtÃÃ.*tåÛÎ… ¥Q©øPï}²¸(­LgÏ+i¡û'‚凇†x¢Y\eÌvSƵwNïm½Ž7´(ÝÆ¬:hÚR¡u“°Ñ*䛑ƒ+Ù[=†5·ëÍéfòÖ}tBÒ§=¤L4µš^M¤æ˜ÅuëtbhñÐRÁ"–†™˜ásW}Á7=[qEó® n|øü%Íž'ÛÎq„e>5Á6áB»ÕÙ,)ÚcãwZ¶ÔX²}Sbs³;):slt0"$@W¨5ÌýAç׾Ʊ‹[3h­²®a±›(’ò’|¢ø²…_»ík$ìèºCCúú’ÐfÅÌk§˜»p¡šÙWàÝæÞÃáÂ[lTË\ Å?›RuØ® 1 m)GèNîÊP&q)++?fóæ}áæ/‰Ûuià/“ùØÇnúð‡?¼ûé§&1,]5öÑQ³cIrÇݽïªû«—^z) Á † püñÇßÚýÓ+/_<uMpèÌ ÕÀ Ä<%â«-nâ û>¼§ÁŒ±íÉ->Î-¹ÓçÍ?ã›ßü×/­ÿ²ïñº5±8##òùÌyô;é<í1t¤¤ÀõÁ€€€À8>ž»Ø¾Gdœ+÷Éi©|¡®¸l?åÜ®T|ô”^Ÿ@f¥zz‹>È7鸀€$•€òr_rAS›}7G²Úœè–ò[Ôõ|îã[äã˜ó¾‘£ðÔ‹Kç‘b>tèð 'ÿòË/ž<&ŒÀqÇG»›3%,´„ƒÎ\ˆpE GâEiâ™t¥¿$½¥¤ô¤æ£û6Ü1SRéï—B·ð˜cŽùÍC\xÁù$û íþGàðá—hwÓNO\d…¹á&ˆ@üÃ~ÎMÐ.ÿjÆ"ôåóùÊœò²rz8õ wÀoü£.¡Þ–zË]½÷Ý~×ÝPÌ%´W³6…¾&åååo_|IV‹bÎ@g.潇اø‡#üœ+™Î_ès“ÍY)5·+’x€/»Å¸cJUã¾@Ìc$€ÎžËõ†ù’ð°–’‚ŒÆ€€€€Àd ç±¸dÑã|tÇ®¼ƒ×¼Ác2bC    …$ eŸÔ|ê-Ú9nâ($gøI&ÉHÍ—O棿â-âs¸žo’÷ ª±󺞨óîÛ%Ù'È'à»×Ä”.Oø %Kò‰Z>óÉæœ•Á>s[qún?°’'s¬DÏâõ¾]Zã8p=_É÷’Òkà‰—]vÌ#”^»&¥E»ÞpÁ{×þvRªF¥¡v¬znæÌ™¡YH(7ÝtS¾m¹à‚ bѲOi>󶎘.` !@‚ï¹?ÿùÊ8/`‡üª)ö8jƒ EàË_þr|ÿøÇã“¥q=žÍ’9ƒ€€€@¡ :t(ŽËéÓ§Ç1 ÚxÏj1ò ƒ    ÅDÀzâ²zV ÝÖÁ‹lÊ$Nî ¶-vCYÜ6˜,°=MSÙD'xLT]É¢]˜h>òçWòß{œ……qY0/_mt>2ÛçÍN™íl جz8Hš³ÄšÞ¨KÆZ¼øÆù&ùª>¡oªú׺íít¶÷Äo×ÄX¦ZDx­NKÃøIR—®Î«lîÍô6WNLëJ«)˜Îøóæùo‡sÍYÅÖÀaçÚçÃÅ6â8‚oRMQš«U„…*4ØÖÐRÓi¯uV67ëõBUR ?•ÍkÓ›¶'l²@+7¹Òyz‡óÑ'Üæ ;ßÐë%ÒD4@@ ¤\óé¹]öÌïÛõ¯e+0Ç»îºë‹_übV§ƒÛ7¥ëCEž1ßÛ¤FþäHXš¦DmâŽå4p¼2ee>·mj 7Þ”ª¨¨©‰&¤¥\¡z>=K®\û¡!غ'ÝRÅ.1?»ˆ½•í̘í\1˹3TäÉñ?žðýª;ò'&UÏR锸ð"e°å"Å.§Á;®v'‘¯6Šü8níÚsôÎѳ½b%»7jÎ;¢!@@ ñFâ-yµÃ´ævåݼã ûî¼óÎn¸á»ßýnT ©êªìž¦*1þ'–Ö¾:­šÒ-ëœNJìnì¨+k«´žnYïNGdwÛ_pe‡5ض®#µr©šrM÷USí4@™Ý'‡êM “妕rš8Óí¬S³ÄìG6Ñ“ÈÞ˜'(Ò³Þåâ7´ƒªÛœ°¦u…ÿ³½›ùWzWÔ5¼Éù”œ¾üJç Žš>ýž–Š6Øv»šD¾û ÃçI¶]û§çò°ð"Ò¼ý|³ªâ®<ð€,$Ð’oNØ¢sóh‚Ðtbá"ú}»t•ŸûîµB?—™ß7ÞxÞyçåˆ2Ýr’ÜÕç¸ãrJÕ5JµvÊëÜjëI!)ý%Öûv©)×Hƒ·kä`£Ï•\¿•• ê]eçÖá“CÕñ KåŠõÜ&y*2T°HUuªÃ“À!E¦xÒ,'ä'Älg¾ãŽÿ ;ß}Ê9c–ÂÔ¹ÃÙI«O8w;ÎÏy€P®ŸáÞf‘Ãà,5Îg*¹Î_KçÚÕ~Ài—Îw> œçµ„xsœ†²Þ+ÓOÊËŒA@GàÏî20` "JѹyÄM7q¢ÎžÛÍÃQ+oé<0¡¨¹R1lyû„Ö‹Ê@@ N਱<þøãÚ?­›Y£®×›ÛÕC£ö,Wð‰’bŒfi=ù2ØÖF°rAãjA1¥šåš¿`ÝÑ)ãá6«O÷v}Í¢´t§t£us³!á7КÒc›ñ|M «oüFÌÒê+öèB:ºbÏvžv\-8ÛùÀY®ùË—Ð,çtžJ–×f]¨öYN“T¢tÉ`¾s»¶[ÙLéÚX°  EKÀºœ¯¿¿ŸšBŸVú(ÚÇÏ}ßn&c<”¯`Ïd~à^yå•ßüæ7ßu×]hm{f z1Mž²©õÒZmû@«›(’Boóˆrž7n³ùLÕôÓh\š¡‘:ž9–ª*k‘ÁQj»%Í+×ÕQ¦/Eê»Äͪ<žæØÍO8o>àl¡©Ï+eÖço~$þ~t³—عÙÙ(7š„'œÎ79?lµÜ9Î÷Ñ"ú÷»ß†ÏíÒ\mƒŒ€ ®} G,ª-o”fOa¨/.dƒ€@ ¶³"ìëë &æÕ s–µ¬¬ü˜­[¶¬ÿòWÈßÓÛ|ãG›v?ýT´Ó¯ë{Ÿùds´ rŽe몦ô3ö>sÛº.º3tuuÕ××GÛdËyÒIxßn68ù¦ÓûvßÜ^°_}ùÖû «ž›9ï’‚A ”›nº‰Þ·Ë{9V]]MïÛ½à‚ ¢Ï›óæŸñÍo~óK_¯ñeåçŽó¹‚OÔ„~NÞ0‚(üUv®¢#Ï$û”æó=µ¯  €3œÆ8æ_Ü)ʃ|´"4Ÿ)øÂ m,è*Å]‚8–(P@@@ Ùr?ÕnTñkÙÇã|eîãúh3»£"ŠB“G C—;tÒ¯&/€Rªù…éxÐ_)íO´@ hÐ%zã«ûèeéš5ŸÒy|ã€.ÇÀó»w{S©‚ÎsS©¹EÐÖçžÃ)‚Ý„A`,>ûÙÏæ[œî}ŒYÄç¥ Á‡¡¾˜a– ¸·1A;¡ˆÀßýÝßÈÜ€”·¾õ­1šä ê÷pè)]ñ¾ÝN`  0þn¹åþŽOÐbþ $A§ùhE½‡ƒÔŸXøøeâóçï.7 þ¹bý2‰ˆ–ަõ]T„_$dÀ$ˆ?Î'$]&£_ãëi>J"½'>ŠKòU.¨aõ‚¾QÌ©MYç<¨Xv3uŽtB³ƒ! ©xÈÑà Ä¯ªNuxBÌ‘— ¬mv¿j^Êû à58ÕÚ)í*›×6º¿)‚8Dîµ>ËÀÏ`Y¤€€I€Œ»ÄL…ÿx&G—Åâ^ÄâþÌèt6ù¬fûe ZNr@ø…²A"L*¼„³ìó4ËF>rLj[ò­¼v ³T~ -c:6Úl ?ÍÇB äìC@쾚JÈù%¾îtÆ0¢!do4$¦dž©ðU¦¯çã¡ê]}®•ø•1Æ°èøšr:êØ1ºEq1ˆ?ÎG7hÈ›42ü©4ŸÉR7wß}â¬ÝíÔ±\-«ëSÃ/âÊ}ƒ*9ë!+ÒŒõ$¹hè¯Á8ß:è¤åÙUy:Ì"ñ© Ñ@®˜ì—WþÅ»r3½i»|dÄ]Dnêþ‘Á¶uYî7šT@¨¼(Èa·±ý<ɯ<®Ø ¯`ˆš(ÉÏ+¬AÆL þ8Ÿ¸CWN޲̓š¯˜ŸBçÞjAMñ®s‘C8j‡,2Ò™Æz”™›×ÛÞÞËeM'cÞop0Žô„׺ê}Ê H|u½f͆É)]ÚãÝ5þ©²,1¦júÅè (ÙÍgDºJTßá ‰ûø‰¸PçÎ,8‘‹‘hÂ5û=ôÃÆ½CMüʈrËù‘Ep…«½È £œ#@`¼Äç£\‰'V¦‰m#*J*º[8Æ *ü1ñ# =4~qÒl6rj†VYÚÔ2×ê5½VfI¯”]#UžÕghÈH?_?täÍj-Ò‚fy{›kÛ»ËêÊHí¥Z[MVÙúƺ:²§k¿!lN½¶ØA’I€¤Zì÷í UW&Ê'¡ùäto™ÉK<&“¢)C ìç™ÖÌ¿p<™öËDçZjrÊPDCA ¨T»þúëc†LWòÑ ºeN9)?÷ù|Bð×ýº1 3(£lb†×‘Ïd¦EN÷ ÍÇ©¥-q!@Ã!¸Îi\ÈÂ)€€@4¼¦dÕ=Rßù4ŸV~Ñ•!@@`âœt’xÜBÒþQTX@&ƒÒŪ™…¼{—þ“÷p¸³ºÐ|±Â(‘ž{î¹DÆ… @`̳ 8(y]ÏLJ…æ3—¼ K‡ZRüfΜYü@ @@@ ’q1ïÛ%G®®£ë÷ä=´x#|òöݵ!@@@@ Ùø}»£w|=­Œˆ°‹rrW?M”Á[›ùî ùˆÞÀK;äé³?5ßJ`   ãNÀ½ OÊ>ç“wìÒ xéÿŒSzI¥ú¬—oÉ]b¢" DŸœÂeÍ'ÐÌò5¼S|©©qÔ«TDOWGcãX_U>Å™NtóÇ8úËo3¶ë¾»†‡Cˆf —€€@á°¼#ò,¥ÆùÔãZ8I$—ÀBó±5ݲEùZûž&ñ†{¹Ýí¸s·é¾êN•ïkrm}cG‹¾Á훜•K3¿xs‘ôÒØÁnHÀi×\ùÒž©^7¡ äH[ àF‡Þmïôí¢ý‹@@’A€% ÅB+òù|ôŸ«))AŽ9ŠªêTGÝâjzã¸Ôkƒ»úœt‡û&r§‘ÇíR>5gÔY»¦u]CÛ`móIǵ™JÇõ#Å«£×—Ó’jž·oJ7®íµÆƒ\Ï¢ÞÆµBt’&h^ÛØÒ5à8Vl2Ë„/ί˜§ýH„Aû{]ukMK‹ØéòöYÆþÄ5¢¯È.²ÎízzÝLt+qkOµ¶Ö*FøOd.кŽ&yùù|| }fŠðù|$ Œ6 US/λ4•Ö,çPÓâì^E)ê,ïZ2.©réJ§a{³©¯µ³Ýôß¶¸Î¡ñÃZ!‚åb¥ˆi>#6V„±JÂhlx„µWW£¿B±÷4Ñlm¸žK·ô¯¥ñ`)÷×÷4ËcoI·¨ßÔÁòÚ—j ˜ÂÚÏqÄO, `øö·¿M·ž=Iݰ«ºµo“Ó©~?'¨ïZÓ»`}YW½žtQ’$ÐÙÙ§]¦®SÏç£b¬Åg‘ôÑŒZº…ÆädÓŶõúÄKâj 5%æÛļ›š‹ÃHÊÕ´Ôµøçug ?ªR ïIO¤SÙ=ËzÝiâ¶u^p^lñ‚Uð«ê,jô—›Xê:Òý4º¤Z×È>Esþ!³·úz¾êuy=Ї~Ÿ¸ŽÅphÍHqéI Í?¸?Pä$†¯[ý<à S„€¼žO´•5žÐ|r®W%ÉÕ"}µí­Ž{ÄëkàQúé+ºšNM«àma{ŸæwSú¸ª,(‘ëjè¯Qã‹âzÿUà~Yo_‡Bªk ý±…ÕŽ´1ý]@½@Œ°f:âïÞmAƒsîbßå€PÿÙuc¾Þ`ÙˆßüÓS[ø»qH?Ïæ é ¥M€Op¢´&çv3Žx6Ÿ\гér®Ô ]ÜjaNÊòùÞgÕ2GÅÌQBíA§‡ÕEÂÎW™é$¤^Û¼8¡';j1ú[×жTN~ÉÑßnß诳¸Fki¶e]Ûš,Sºy6Q ý¦VŠA`RœRü‰º»è2ÀðI[#OÓÍáYÍòŒæSŽ€˜LéÆb&Aõsq± ©IÀ•vâú=onwj²@«K•ÀØFéú:ºOÇ»f ’’;­&îÞæ ¬ÄTmîv9Ù'mkÛéæoiÖà¬ÌnY92A 8‰aÏr€€ÀT%àÊ“ã|x óTí %Ýî°Ù£¿’‰¯¬1ôëÁ–AÒ™¬‹uYÉiÖlUKGX@ H ÐíÎ^kÏr} @`Êàûvå›wyôO¯L9h0€€€”"Öxò)ùÄŠ«üJ±½h€€€L!ÒxrnW.,øXüM!h*€€€”(­ëèÚqûJ*ÑV£Y    0µ˜ºNóaVwjuRl-½® ›…6€ƒ¾N 0F<Ú§4Ÿ–˜Û#V5ëS£öƒ‚   šk_™C½ôæ]ùYd ‰>gÓöAgpWŸ!ôÌ«ütƒÔ XUKš_mïÞï‘-=ŠDPT¦V.­%(Ã#šu"A1YæaïŽJV6¯õ.Ptê"AÏbjÛ‰AßH˜²X×ñ§ýLfV‚E††E_ÏöMŽ]¾ _³1âf9˜–jäa5uÁ_¶ôl „†«YEÂÉBÊ¿¨Í»¨0›»¼ÒýžeäNíÎÐéê¼\Ã@@@ ”˜ºÎÓ|tEŸ›QtwrÑ×R×¢%]åGÃe4”g>¶¥m¬÷íê>ÀS±Ù¥\å‚§CN麋¼þÏ—bv(i¯îCl[çÞyÒ炞¥ ?’±<ÁR I   Së:1ü$oÛКOÌêòÐÍð¡©ÿL(]2'®Sí*kp–z÷í’F UlÙÒ™‡¼åB,ëª¢ïĽŽk-…'y–Ox‘‹T¢â!3î=Â^…*®ú cxvŸHf;.ºÝ‰€A@@ÆL€$ù`íA+Þ»×hÃsEë@Lq6ÛU†&ÚF1·IBfÚCl)µ¤^‘F!UÛ|ÛáöZ¥ÎmËÚð¸BBE€€€À”#ÀꎔŸçófu§4@@@Jž)?ï}»´Ác€%ßl4@@@¦-íh%tn·èîᘠ{ mQ ¡=ù¾]ó•kÅûBŽQB@1(Mæ­þçó±àÃ0_iîw´ @@@`*ºNË>¡ùä;8äóYÔçT¶‚€€€@IòŽ5ž{ßnI¶p ¨ëùÔ¸.æCÏR"àÎðº×ó‘èq•_16t°m±˜¡Ëbó­gŽCoª0_Á–ͬ˜A@@@ =–ç÷š÷jŽâ{õšÐ{UýkI²Ê¥ÓÙî½Z—Þ_Û׺F¾Ð"Ê,-¤ƒ€€€@q0Þ½FöùïÛå›;’qßn:>xð` ƃm -5ÝÆ p+››õKË·oRï¡4‹Q L@@@@ x ð»×ܲ$]Ï·{÷îmÛ¶íß¿?\RuéÆz-òüÖBòq^¤™ô&€ ÙÒs…lHuåž9Îç{2sbtœ%K–lݺuÏž=9ÂIUW…[ô¬oQ’Oäg5 /ŒT(,ûÔÜn!®¨¨X¾|ùæÍ›¢ˆ§ûó{ºÜKùdéP3uïGUKº£NÞ¢†û²¥GÅ<H"’}ü¬)?)þ’qAŸ jΜ9«V­Ú°aÃÂV.]™êèònÚÐVâî•K+Õv6³Êæ^1³=Кjì–SÜí|G¥–}#G¡ù&y'¡z#!ðF„ÀãEh¾W^yå…^ÐdþË+c(    0¹Hà=ÿ¼'ðÄõ|4È÷ÒK/>|˜?ñ$á䯝öž¦²Åmƒ†í`Ûb+Åç(`¯X€€€@8räI;½øžÏ—´÷pŒ+^¶1Jp(   Pjø’>šÎõžÕÂMLÎ#úÒéôÁƒK <Ú   “A@>«%“¡«ü µ—ˆ{8vïÞ½mÛ¶ýû÷çEÏÞÊ•¶&Ò¶´ø'€É+å–•5õÿb:˜Þ›š(7ó%@@@@ 1HæùÆùh;9ã|DiÉ’%[·nݳgψ¥[úëE«ºÓ-륾ã…T^ÓÉ´Óky{šª6­ïvÖ©kÓ}Õœ=†ÚQ@@@A@i>ŸÔKÄ0Ÿ SQQ±|ùòÍ›7 Œ–Vªu ©:Ç©­otúv¹·zlj*Oè=Zwõ9é–*9ÎWבîçºR+—V޶R”d°¯çKVtŽ3gΜU«VmذáÀ…‹-í8)WÛ±×FòS‹R‚…« ž@@@@`² ˜ïÛMÌøžexxxãÆ«W¯ž5kVáX¥Vvöv;uê ¿Ê5N‡;¥[¸Jà @@@C Ñ×ó mÙ²eÅŠUUU‘ÄÜ™Ù5²–«mX¹©JÞÙA«­ŽšÜÅmY‰!@@@ x ÈçóeÄ­»t17ƒ¶Òž;vÐõ|4½Om;Ýj᳨lÏð•z”Å+”­×õŠñ¿À#ýŒ‚‘•#@@@Š€ï™Ì°V~“ü¼yó-Z4cÆŒI€€€€@±ð4_ÒZ’J¥’â"%`ß·ë{hK‘¶ aƒ€€€ø Øš|@@@@J4_éíS´@@@lBóÉÛvÅbgb@@@@ $ØÏç+‰F¡    >öÜ.üÐA@@@@ ôØš¯[ØÓDlê±"l[œÏ[9GP/cs¤K½•/.-<¸‹ë7¦'rg‰˜Ža   0U ”€æ£]—JõYïËíYß’ÎoŸŠWqô6WR¡ž¦ºŽÆîŒÚÊá%DŸ‰ƒˆ¥»ÑIµˆ5ö›Ã²A@@@`Ü$Wó¥ÓéƒÆlxM³iû gÜÓÕÑØØ³pˆYª:ú¿!E   É%\Í·{÷îmÛ¶íß¿?¼ê5kkZÖ»ó»ƒmëúZ×Ôë‚Þd«š–ƒsmr×›Âå;ú¬ëpÒ-Uîôªœ$– 6·=ãàärHØ^QÃ<41¤0’@@@@`ô’«ù¨MK–,Ùºuëž={b´¯¶¾±£‹EßàöMÎÊ¥b–V-Þdk‡žN·ô×ólÚ‹dO¶jNVNÈö4UmZ)çg3ÝŽ(L“Æ54ï+–öZϘ6rI®Ü¢­}u|Å^hb.OÈ< $ZóUTT,_¾|óæÍ9ÛU»¦•/êªl­¼0O/j ðô’j]#UiE§o—1-l–swõÉ1?±Ôu¤ûœªêT‡Òk>ËœÂUc=+ÃÊæµÂ™ôHÌé     'Dk>jËœ9sV­ZµaÆähZåÒ•tQ_œ×5Ýhò´Î‘Cs­©>²Åíj¡Áò   ¥G ¹š/NR>4:Áuç¬nÇŽt=MïFZÖ¶gøºÚ5©TŸõrÝžõ-i¹ÏÄÛÒTk§xáY¶Ð Gh‘¯P (ÅRÝÍh€€€À'\Í—N§<s÷ÔÔ8›¶#u=]a/ÌÕþÄ{rS]öð`Ìú`   EE ¹šo÷îÝÛ¶mÛ¿žÕkÖÖ´¬wÜ`Ûº¾Ö5õ9 V.] Ñ—ƒ²A@@J„@r5^²dÉÖ­[÷ìÙvm}£;j7¸}“³r©œÊÅ    @­ù***–/_¾yóæœ{«vM+_ÔG—òÕ¬å«÷rJUWå´€€€=Dk>¢;gΜU«VmذáÀ9`Ó\-]Ô×#çuksØŠlL×,Àp` T0(vÓÞ€ááá7®^½zÖ¬Y¹B­l^[SV×B·æÆr=MU-5Ý™8â0W½È¤Hô8ßÐÐЖ-[V¬XQUo –æwSþy]z>_]‡“niàð¥é -rYW=i÷ŸNÇ“ú’Þe€€€À($zœoÇŽt=MïF6¬¶Ý­£§ñµ»Ænzo¦ÙMjÏdt¶á“,CÓ#«E&€€€äj¾yóæ-Z´hƌő‚€€€@B $Wó¥R©„2CX    Pl}=_±ÁD¼    PÐ| Ý1 @@@ Hš¯€0á @@@Jš/¡;a€€€@ @ó&\€€€@B @ó%tÇ ,( â×|=Mæ«3Ü-ú[VÖÔc‘¢—r”)k1Ÿ,ë.‹ùýD>N®dÛÔR4A ¸° ¿æ«mï®iYÏên°m]_kg3¿n7•ê[çl=ë[Ò6€ðmzgoF.ä»*¨à MDj©J‚¯jÓJ3Ý?0ŽÁd‰ak„k±š¯Ìáñ¡±:+hùt:}ðàÁ8.é-»¬îHÓÕoÛ­©q6mô<ôtu466ÆñèÙÔ¶´¦:ºìÃüœŒ·õ`[CKMw¯ÒºŽSÛn¼Ix¼+‡b àç#å—œ˜wïÞ½mÛ¶ýû÷穲¹s妆ŋëœnSìT¯Y«GGŽ®©ÏíͲ¨\ºR‹>cþÔ˜7öRe¢9 ¦×åJš~%3]Æ›†µÜ°Ÿ65Ï,ÍÈI]‡“¦‘GßÐãàöMéÆúÚ°–åö)K…™55Ñ\±h7Õ­¶ü1„0ÕÅÃÂB€€€ÀDHôÜî’%K¶nݺgÏžœT*›×Ö¤Ö5–ð©­otÇèH9+—ò¬oNwá=MU4œ&§|ZûêX­ùfU#‡×Ò-ëœN1]ÜØQWÖ Wi=­æ¥É¹;9Ûí¸sÒé–þzì¶ 8rÞÙª)U]%cvÇÇ' 7뫦E5T«\(nŠËŠ!” ùLëâá,‘    0±lÍ—¨¡¾ŠŠŠåË—oÞ¼y` Çõi=MuNcMKƒ}ÃE¶ißšrµÐ"f}[êZF;¯Ës—R‚ i¥gŠÛÖuÈ1?yµŸÿöàªê”;ìFwd ÚN–έیm›¬Û4šé´TžLÓg´Ù@š'Ž…ö DÊ$`…I'hÍ744´eË–+VTUñåj!¸¤(s'WÅ”k‡­úH¥B§_ݹT÷‘}†wµ®z@º‰{xûêäô«¸öŽÇâh6U>ÏE.Rvqr»Ë‰}›°pNÂýd: ÍòîáUöfºæ†ÝçÕÄõU5ëI «¡¿Fó™1„2 ÙMH˜\eeåÇ´··ÿ¿nÔq|åË_úÌg>³ûé§¢#ûú·¾÷™O6GÛŒ%—æsËË˯ºê*šÞ‹”tŸ¿¹íÆ]FWWWCCC´ rA@@˜@ggg}}ÔÓHæÍ?ãsŸûÜG?¶F›–XvóæÍ[´hÑŒ3!b!\Í—Já–béEˆ@@@ é}=_Òá!>(Ð|E²£&€€€Œ4ßà¡(€€€ ¥ùèYE0ÂÈ›ÆùòF†    Pt ùŠn—!`È›€§ùÔ Šo’·§I‡®Þ„‘7…Q 7ÑÊŠ· f+Ï¡Ed+˜oºˆeªÉ7,؃€€$…@È8_™St×ö¥Z2bïF ¼vv¼P‹·®5:©ÖÎæÊð*zšê:»3™ÞláÅb§’¢tužxùÚxU;‚€€$—@ˆæKH°étúàÁƒùS¹ ÆéÛ•uØ-?g…°NUg}Qp!ÜÀ€€Ä#\Í·{÷îmÛ¶íß¿?^C¤UOWGãZ9ª&ÆÀššhòUû¹Ó°4ËÀ”펣ed&R=keH„$´©If9øF)uNº¥Ê‹ ÄàRzèQÓÅT¯6×S¶!ùDÊê¨ónˆŵ¦ì…C—TëYÉÉàürh ÂÚ R®«K…7Ýô¦úhø0û’½¢¨ð²ûC€€€@iHô8!ž3gΪU«6lØpàÀÜÄ+—®LeWefy²BOH¾¥µ´Þ?àJ>GÜ‘étôD°ãˆ;1Ôâ#æ§4cK£˜"ˆÖT!À€€ÀT  4_b‡ú†‡‡7nܸzõêY³fåÞ¤ÛÒÛ&Äj"—®’[×Ác~Rô5¬#ÉWéÐz_×ú~9ʧ~¤­ÄP ,ž}J7wPÂ"<†xeÙj _µL´1{Á±W”Ý7r@@@Š—@¢ŸÏ744´eË–+VTUEßþêÎ½Š ï‚,©mÏp‘ü 5R'D_ZÉÒ¬Cþò—¾¸ö3kw?ýTt#¾þ­ï}æ“^©hãQäÒ|nyyùUW]EÓ»£(Ž"É!ðù›ÛnüÐuÑñtuu544DÛ @@@€ tvvÖ××GИ7ÿŒÏ}îsÿ{÷_Uu'z|hQñ"3uz€& LZªUkOz}¤X›pÆ~hf¬AÛOðQMÔ›Š?ÔS¦´câÔçÓ"™Û–K53B2R Ø–ÔQKgîd˜J‚1w®cïÅ)T8÷¿öëì³_gŸ““äœ}~ûCéÉÚëù]ø»Ö~Üw»gRHîñ=UYY9oÞ¼)S¦Œo7h@ˆ€_ÌWwñ&ܪƒ/C@@¢(öûv‹‰N € €%.@ÌWâH÷@@Ä|È‚ €”¸1_‰O ÝG@"óE@"  € PâÅó]z©¼¸|Éð9@@B _Ì÷ÿ¨¥R¹üêYªiòxã×ҞವZ¢s@2Hãƒ3³71r͹u8¸‡R Ÿ@(´€óíûv£7Ñ1R‡zÇZÆ›È2ŠË;tSÞ7³…·`ÕœJ™¯l ÏxV^èVåmp@@zOmq<Ž9ïñTÍ®Ñú÷ æ]ž‚ € €@<Šoo×ã¼k×®¿ø‹¿ð$û%ôv'[–·VÉ)纚ýÙo±m°³Vvk;÷ùÕèLSYÓ«ˆveV æIýDçR#†Ö÷$¥!©õµUYܲµËy@@`¤ÅóíØ±ãK_úÒúõëCª‡Sr4h=¹mÁö.­n«éQÛÂ]Úæ¤OVÍ*ž«j]Þ’ìî5rYá¥Ô°¹ÉØYîÑV™Û·}m{U¥=-}mk{µúuòIÓ·‰¥{½kÍ&Gº_ìÓ]’@@_w̧oï˯|÷Üsχ>ô!ß®;íëùæ®Êé²¹Á}ý‰ŽözU“ è|š±¯çÓcÉúF+èëíî× J ÆžŠ8“}{ô:¬J%¿w¯¹zn"ÙÀÅ}>Ø$!€ €À¨ ¸c¾Qk(çŠí€OC£U šVÜ­D޹êÛ;úe1o°sUÓµ‡¬Ž}¡P?¢¬2ª[IdY±YÆ|¿IŽý"; € *P¤1_>ŸŒspÛæ¾ÄÜjù$‹iVð'»°Arχ¾ùªŠv® Ìæ(.Q¥¶yíÚÍ5Æeƒšºk$imé5ã“.ß@G‚ûM|hHB@Q(Ò˜ï•W^yï½÷öìÙó ýX²dIèØ­«îÔ¥uÆÓXôkïô‹üº5¿M[£¾úu=f¶f­É/›}=Ÿµg¬‚¾d²¦Qß–£~Ý@‡f^N²p'»¼Ö=rG‡~È•„fà:6N"€ €#˜$UÈ[/F^Qakx@?¢Õ)wH¤Öy³:“ÍÓ’d„jö³¥K·¶fVã[³ÚšÍÈçI°Z‘ÊÒ 9êª÷í¯w¤ € €…ˆÇ3™ ¥A= € €@<Što7žØŒ @'tÌ'W˜Sh@@`tÔõ|öa„}ãûMªsFWQIt È›GRêkÍyE}.Yõb ã lÁägÌÎHÖyßXÊ{"$²ôf&@ÊB Ìc>sŽÕ+rû6oËg©¯,¾% @J]€˜Ï5ƒj‘léÒÚ cUíÕGÄíV{MÿÐiî{vŽõܰ*UÃéóv­îþx[‘”†¤Ö×V^©oé? €ä&@̧¼;W%M ª »¾þ¹]úþjïÒêÍMúæoªG[•óÞo_ÛÞF½lK_ÛZÇz¸5h=Þ\=PS‡{jå1ÙmêíN¶,o­òï«•úuÒž±g=²âܾGäF@â0c>#Ö(FïÌ0«º­¦'}žý îë7ÌD§!Ù·w@bÃ\–ýíúuyõ-Zÿ>kãxs³ $ýâ1ûz>ý¤”2ƒ¾Þî~½&oTíþ­Œu"€ €@é ¤ŸÏ'cئtG’WÏ%Ì ¿å¢¥'ㆊúݩּ² õI”¦ÂGÍ\T ®­¾½c•ÜXR­­êoê²r»úÃý½Á~œA@‡{»Á_‡ªÙ5Z2÷-Ýà Õ™DS×î­Ás…ŸO©ªMÚæµk7ר}]9F¥?>í’„ €ñ æ ™Óúuê!.æEv·\Øá…=—ÏÕ†ÔÛ´¹ÚSÀS• ú’ÉšFëÉ-Qú#MÉ®0÷p„L+§@( ו{{»e¤Üîà}^f¢zÞ^Èf®dN­ËP«²êtÖc¶?xëõV%õz²yCH·è[W™M.ÃE@ Ÿ˜¯B‹ãU}—^ªýã?2ùÙ>òí—¿Ìž € PR>1_Iõ?rg%àK¥"ç.ãŒewOÏ5CG('®ç+§Ùf¬ € P®Ä|å:óŒ@ÊI@ííÊ|ö“ùäµñþÛo¿}äÈ‘wÞy'ÞÃŒ>ºÓN;íœsÎ9ûì³£!' €”Š€ãI€W6×óé3sèСcÇŽMŸ>ýýïŸ\*S5Úý|÷ÝãÂrâĉsÏ=w´Û¢~@‰üÊ+æ;ò›ß|ðƒÿE–5O:9.âEØè¤Iïû½¿÷æ›ÿ‡˜¯g‡.!€ P(w̧ãø¨ÃëÄÉ“&N8yêT¡øbQOjâÄ "‹±0@ð(»{8ärÅÔ©Sú¯Þ»&O>ÍüuÍ_ ‰#üÝYçä»zƒkxìÚÉF£RÄÛº71rÍæè‚›öfðÿnŠ €¥-à|GùÅ|©Ô)ó—–Ò®úÆ?;zìØÿú†ÖþÅ¿HŸ²óø~xþ®Ó¯û«AßSé:þó7þ¥ñ®¿ªó»~|lÇJ%RDèªÍ›è¨ùرÇ>åÛzÄDwÿcãNiÿy¥÷ €ä%`oÝ‘Ÿóé7îæU[ Rᕹ¦izøwêÔ…w~ù¶—¶ôF]³ ÚUyëLͪš«õï‹P§omÞDoŠ·õˆ)®ªxZu ~é2 €Ùœ^ù­ó™ñŽkͱ®¶ÿñº3ÍãîíÆÊÙþo[Iwoß~÷™Ÿ]¯½üÀ‡Ï<óîíÖ’¡½Àæ¨gûsëo]vÇ,9%Eê¾½ßÈc¶?ø4]÷ø€gñϵò§ºdu/uJU&eR§Ò¿[_bÔ[yüncÛ5Ÿ%ÁæÌ;¾¼äé¿{ÞèÀö¿{zÉ—o¿Puþ‡7IÇ䨒úÆ·eûYš{yÙ¿.ÐS–¼üÀ£ÛOù÷?¶ßt† €@Ù X›¸FØ—ŽùŒ½ÞrØä•Ý]ãд—¼TH|Î¥ÎýŸÛeI.•Ú?°W[²`¾~~ÖíK^~m0•ºpΕ^ÿÄ~GAý<•ÿ‰ëUr´n×4 ÷üF{æ|ã³ú²Y…íÏîÒô•_¿GoZµì(bM×ü›•kþ‚%¶ênߺW/¨:oŽèœ…ô®ëý1*•üÚÞ}Îþ˜?–ퟎ €@|ì¸N>¸ŸÕ¢:Î×ö’Gó™Ï%‘5°+V¿ú÷·ÏÒm¤ª…±”3‡ú¡²¥÷`ËÐSŸž:õ•æMÿr¾žÇȤŸ2¿*ªç©ë?sŃ¿âŽÄt;Ñú ..Ô¬¦EŒê½)u_Zý;œ¥}ã_>ód¥´®:¯wÐìŒé…tW}š6ó‰‰U‚ÿG@بˆÎûd‰§üövÕ-ơֻR(9Ê‹.Ѻ¶ýHO|ò›]·Ô×™§+[zþaÕ{%²ò)hærœüûîW®¨ž)'fV_ñÊkRNŽmë2µsZ¤éWzLoZµìî›O£•ó?£u?öX÷%÷·Tªbzç¿ù¤Ñ’Þ\µ* IDATFW=-YT&®è‹Ío‚ €€) ž¹¬ò³ü^Ž1ŸÚÝÔµáj﹚iußü‡•{ÿd†:>ÖýÇÿðÍ:Iá~ýç[~É}-²\WË+Ë?6cÆý/X5¥ÿ_ÓôSfñm*{jVË}·üµQgv‹Õ¨Ýºõ¡î›Ílw¥þØÎfW®yÆŒú§^Wé³®ÿãÔ_ÿõ%õª“êPO™Í›ÝsŽÑnÈÛþ| € €@üì€O†&QßÄï~÷»÷Þ÷ßíq~ýÏW?øà²á7†ÂGþØ“^Öž§ˆÎJ›J |à8vìwEÔ±"èÊgœþë_ÿºººZõE‡*l§V®é¼çŽ%áuvww777‡çá, €]]]!•3g­^½ºýËË$, Éïæõ|?‡ŽÍ)ÙÒŒÍX € $`xÆj_úãç 2ñHŸ4i’|“&Më|ñdš:U=…„#«€@q € €@\Êïz¾Ã‡ã2wŒ@ˆ `-va_löv;keDúQÛ9Á¡ÐYz—ZíËÿ/í ®^õÔè¢ñöÕ/1]wXÅÁMr@ÊQ@bcØòAÅ|v¬Rª*ŠªÞ»ÜxÿX*Õ¥m ¹2é`å¯èÐû0ÐÑßœUµîNín­ŠÜŒŒ®Aë170wŸZa»¹'dD@R°Ã¾Œu>;µ†Ó××wôèÑ=ìln«éI­«·òVµ¶ÚŸ#”/|–ªÙ5Zÿ¾B-6ìíKÌÕ_‹¦iã>´ÂcQ# €Œ®€àïÞîðððÖ­[<˜…apÛæ¾–FŸ ϹfNo/í•ƤÖ×VmíÅ:ö‡­e:½`¯¹o,‰vï¦lºŸ½ÝÉ–åúJžoüVé¬zk;÷¹Ç[ߨÒ×֜ޯé¶ÑëŒ>‡õÓÝ?#€ €@œÒw¯š{»E;¸ºººgŸ}öÍ7ßÌÒC{,K>‰ÁÖª%AýXW_¿.ÕÓ¢é²j‘°wiµuRmÎÚÁR_Û*­K ô´$*šõò¹¯m­gYå­ØôªcÖ>I†tÓ]Úæ¤»„ôs i³ªZé¼ÝÞÜdì)÷h«ÌÐÐêó@‡æ Ý5ó3 €ÄY@KÌÈϽÎgŸ(€3fÜtÓM[¶lëOßÞÐÓŽ¢ÕsÉt4—Qçà¾~ÍZ/¬j]ÞbWšèèÒ×ìd½MK4-Ð/ÄSŸ½»·öõ|sWùÜœ<i:ÑÑ®/Uª–}2ªkõË=w‡¨nÛ±fÒê´ÕçŒøÔK €Ä^ÀˆüÜ1_± {úôé‹-Ú¸qãá ‡­T-hJ$»=knþÑc§.­ÙZ3óÏ5ÒTÕ¥èqhäÖªZ»:|‡Úb.]ê«—™Õ©@ÊP@øœkyÅó:thÓ¦M‹/ž6mZÀl©µ,ÙuMß(;ØÙ©B@YÓ³/¹ÀÎQX¿Ž„{™NÝxaÅŽƒ«’¾×tÁ•¬.14ö›ûQBš¶¶ŠUË®Úz;­kùÒõ¦³èݶ¶tíä¾ÍÛô[H/vŒ6r!€ €@\Š:æ;pàÀ3Ï<³páÂêjó¾UvuÁ›Ú÷4fmZí2cA•Ø­™¦r{ƒ~È•{úMúýæ=õëìJªå 9÷Йө֫*n<ů>Õ¯Ó/”£YkrïíÖÏÞk\&¨zÝ£×ëî¶f^Hh?0Q³W­eê%òˆOIB@’0ß½&ál ÛH~üãËõ|²½›½cjÓ¶ÕMbÁÔ:3Ñøÿ*GŠ~™E¢DO%rÞÞ- úl´QSº'Þ>¨6::³µºâSsF’»Ûj‘snûn{èn~F@²Ïkú}»FRñD~•••óæÍ›2eJÙL E@FK ó-¨ A+­6£Õ›H$¢e$ € €@wÌ—%;§K@À¹]Ý¥‹ € 0E}ÇŒŸ&@@r æ+‡YfŒ € PîÄ|åþ `ü € PÄ|å0ËŒ@Ê]€˜¯Ü¿Œ@ÊA 1Ÿþnô›×ÌY쬭¨¨µÞZ6fS)q5j½úCާ›cÖ1B@²ˆAÌ'ó—Hô»^9Û»¶­¯h&6Ñ1 ϺN¥Ô ÖˆúŠfZè €å$P¼1___ßÑ£G#ÎEM¶yÛ`:sow²¥ÅýâÚˆu^6yM®Ö¿ÏÑÍÑkŠš@@§@ñÆ|ÃÃÃ[·n=xð`” ›Û¾¼¦m­zѬ:;Wõw´7ÚÓÛ«æ*›¾Û©ö„å°÷b=ÙTM²C¬ç‘ÜVF+1½U›Î¶/¬·‰&šT™}4j¶*ñTšN°w„ÇögõaéR©Ì[H=ÂzÌ9@ˆ‰€ŠùÌWï߈êêêž}öÙ7ß|3B×d -Ùm}ƒÛ6kVh¥—”SX{«öp_ÛÞFc¿µÏ =Ùz—V·Õô¨\]Úæ¤Ù IÜÜdîÕjzu¾Ùœ]îk«Ö#ÇîÆÔîV=äóT"{ÑFK©Ôºz#ƒ•0ÐÑß~ab_ÿÜ.½œ|vçìz2{ënÈÙO>#€ €@lŠwOÈg̘qÓM7mÙ²e`` ë Ô·wõ©¨f¹ZY…̼+n“ôDG»Š­4ç~«+Ûà¾~+WUërs§X5+†kHöíÐ|³etW¿žo #a¥ªˆ«’깉¤#²SZõjªmÕNða-J°Û×’1ô¬ WÊ@ˆ“@QÇ|=}úôE‹mܸñðáÃYÜ«4ÉE}½ú¾®-dñ«AÓWë$ì ®#b6UA‹^›~è‹r‘ŽªÖ.3(5²gVRÕº[­&6Ëj`¡ïò³†"1 @ÆEÀŒù**4ùU„Ç¡C‡6mÚ´xñâiÓ¦eëž,ˆÕ´5´eîëjÚÀÞ¾ÄÜj)¬–Á‚ëðf«š]cíûÊ‚æ¡$jÉŒ›„}³ùµ£÷¯Yí{+ÑóKà'a©ºËCÏ`mUKÛÆšŸ,Z ~ri · ‰zž¾¹zëjÈ[ ) € GŒu¾b‹ü8ðÌ3Ï,\¸°ºZÅlÙÙßMdnnJIÔô êš÷Ö„¬óùd«_§ž®¢®ÄkÖš¬»€ë× ˜õ©jQÎ7›ogõ6TÔç©ÄºD. Ô7gU†~½é u…ž±œ¨vyþTtk~w%KÐØSc^w…c.Cƒ € 0þ±ˆùT¥Þ’a]Ú6y#Z¤£°ñP¢c@ï‚zmZpÔ§ž³;ú³þê×ÃêiÑÌús( L € âùúúúŽ=a;›Ûjz¯E«jm­Pnô²TÍ®Ñú÷Çbã艚@@ ¤Š7æÞºuëÁƒ³ønÛÜ×Òèä9×ðìÏé-ॽ’ØÔúÚª­½XÇþ°µL§ì5÷%ÑÎâÝ”M÷³·;Ù²\_Éóíƒßâ¢Uomç¾,ãµOûôVK÷/|9jäC@˜oÌ'ÀuuuÏ>ûì›o¾™;17ê›på½¹²$¨ëêe×ÔÚ0]'1cïÒjë¤Úœµƒº¾¶UZ—èiI6T4ëås_ÛZϲ>ÊÑ õ¨ £馻´ÍÉHå|{뛩:2!€ €@¼Š:æ›1cÆM7Ý´eË–°ièÛzÚQ´zn"™Žæ2êÜׯYë…U­Ë[ìJ]úš]}£\Q×´@}Ô?{woíëùæ®ò¹9#xÒt¢£]UËÁÓg|{뛥6ò € €@ÜŠ:æüéÓ§/Z´hãÆ‡öŸ‹ªM‰d·gÍ- ³Ü?‘êÒš³ÜZë_8rªêRô84rµdD@ò(ö˜ïСC›6mZ¼xñ´iÓƨ–Æd×5}£ì`g§ eMÏ ¼ä;Ga¹qv #á^¦S7^X±ã`窤ï5‚]p%«K ýæÀ>d”¦­­bÕr”F|{뛥6ò € €@ÜŠ:æ;pàÀ3Ï<³páÂêêÐ öäÂø|¥ê×é ê}oŠ´·«ùöÖ7ѧ=’@@ Ü**&L|zýúûÛ¿l|õª•<ðÀðCá=¹ááe­áyFrVös'L˜0þ|ÙÞI=”w•k:ï¹cIx7º»»›››Ãóp@ ®®®ÆÆÆÊ™³Ö¬YóàW–Ûy&…äßS•••óæÍ›2eÊøvƒÖ@@-D»çÅó%‰õ¥Û € €@± õõ|ņE@@ æ+щ£Û € €@Ä|9`‘@(Qb¾8º €ä @Ì—Y@@ æ+щ£Û € €@¥óÉ«5j;­![?é/ÜH¿ŽÍ<=ØY[aæÎ,–!f½¬Cc‡£îX}²êm›GÁ*õi'¿¤Œ1ç3ðÏüzD)@(¤@éÇ|òÞ²š¶µê»š&o«íïèR/U“#‘è_•UJïÚ¶>ýTÖ#Ñ1Ò©»Ú;Zå#:ð©²uJ¥{²v!ÿ ‘{åhB^_gŒ·E3Çn¼<.ÿ^P@ŠI xc¾¾¾¾£GF±ªoï0¢;‰éŒ×è¥jj´ÍÛì@ ùº“--ÑÞfk7«Þ`›Hv!e”Îøåìln«éIQõëòx™¯_Ť!€ €ÑŠ7æÞºuëÁƒ³¤ªµ«issmmƒÖã ¦æ¶/·WÍ5Àö°7Óù7Tµ É úÒ j×X~jHj}²h,fžuT6¸ms_Kc½_õé _cZ_¢ëTûÒÛÊ~Ù–.•½b³æ–±_¯díÓÞS¶öºU+vq¿n9;ï-®,=uf©†Ó € 0¾Åó‰K]]ݳÏ>ûæ›of5ªj]^Ó§u´»«úÆkN/­i±ë›µº€ é ФìËO=æN¨ifžÍ¬"1·ZO°‚%ゾޥö†ofíC÷µímÔw•[úÌ-kÿlýs»R)Õph¯¤¬,1êÛ¶ý ö…„}vñ€±ɾÅ}C«á$ €Œ·@QÇ|3f̸馛¶lÙ20åú·Þ¥ ZKM[sæõ{lûæÈn…læRž,ïù!gûÌ øªZw«hÎ(=¸¯ßX&”eº†¤•%aF®¯jýûdk: [:€ iW•µ–%.n±Ñ‘â_ß⾉~¤!€ €@ñuÌ'LÓ§O_´hÑÆ>¨&_Gûºöͺ™ÃÎ*;³rQ_¯º·Ã½X]æ µ3[3[eN6³„§pÈÙªÙ5Fôæ)¤i-Æœª5ì¿àl!íú4G €”©@±Ç|‡Ú´iÓâÅ‹§M›0EöͺrYŸl_ºТv}ÛÚòÝ×5ö1õpl`oŸ±Þ§¢@O_ÂÎÊj£ÖVíyrŒŠÕ&±§®Ì„ðlaíjš^Ö¼Eœ’—õÀ·¸obP ¤#€ €@quÌwàÀgžyfáÂ…ÕÕÆåp>fzP¶Ü|<‹Ú¾Lº£>‰¸-Vg úí®»%Ìóö©Us¬8#r“üÍ{kÌu>Ùµîáð9›nKméöh fk²(icG@8 pßnœg—±!€ €¶×óñe@@â, Ïæ³×ù¸ž/Î3ÍØ@@ ¼Ô™í°ëùÊûËÀè@@ ¾FÀgüNÌßyfd € PÎú{×ì°˜¯œ¿ Œ@â,À:_œg—±!€ €" ·p¨ßåVý÷I  € €ÄRÀ¾CFÇÞn,§˜A!€ €éE>±`/D±tuuKWè €¥/`ïêVTTÈhˆùJJc1‚Ó¦_øéÿúáX …A € 0êÿÓÿ¥ û$àãY-Q¬Èƒ €”ª€D{öjë|¥:‹ô@ÐoØM¿‡ƒ˜/ÄŠSc'ðÎÁ×»»_»öh @’ÈzM”¹Èg ”˜¯ä'<6¸úºb3‚ €À¨ üdçóQ귯瓫úxVK1ò € €¥&¹·KÌWjóG@@hö ò˜/š¹@@°Ã>b¾œ=ºŒ €d0Þ·+¹Œ°˜/çÇU`xýVžoüZ¸~h\û’Ѹѱ‡v:w<$]ýlrØNÛÙ.=/ªn =A#Ú“†ØÛmšÈ_`׃ç_÷È«‹7¼õú°üúþ‚ük¢$ €e* ž×¢?©gµ”é7 †ýFòÛ?д?ýþêëŒÎÖÝz[ ô:£‹×­}}xm©ušþ"€ÄG@¢=ãe»¬óÅgRã7’áÏíÑ´ÅŸªsMß0ÍØí}#¹PmªÞ¨~W¿n|èAkGøÁªxÄ FqcsÖhÅ®ÓÚ±µ÷šeÒÝ1ïÏöÞn@mfÇœíz+!@ØÛ»æõ|öºßê¤(… êòªY™uJð´ä{²ø'»½;W\¾ç‘„㊺¿¥'jÚ«µ{_î{ø£šöƒGŸ~î!8ÃÌ–-jûø­×7ܬýbÅýé ­"¿X‘”K÷v¶«POo}ýŸæ1ØÌÚ´]³b^Ûë/>rÙ/V\gD¨yTL@‚Œ°/ã#ò³ãÁಜA`l^̼mc×öïIÃÆâ_eÝ—iÚÆíúJžsª*­N]V-¡â¬Ys2;žÁX ”€Òy8м64äl}Vµ—9™µi;{7J?ø3µ6)Á_Ž•‘@èìíF·"çX \û©›¥I‰´Æ a¹YD¢.mEŸZç«cxèWÒÔeÒ¨±Ä(¿ݳ‘=V¡@ø ¸ÖòxVKü¦8.#ºîNÙœuìÞîxzý3 ¼à/g€¡¡×¤Ìå êfqXPÆÚž†íØáz¾ ŠôtcrÏ#Oì2²íL:¶¡CKr@\|övs)N^F[`֭Ϩkò6.1îÌø³mÒ Ü »áf e?T.­“E2ë®Þ‘tfÖ­wËòÞ«+¯9ÿþ­aõTÞöœ\Ƨ·žXù‹€œrYž~OFöÇòÉE„rŸö½ÛŒ{8–<P#É €@ ¢bÂÄõë×ßw»]ÙŸ¯^¹lÙ²á7²ì©=ö䆇—µ  Tw•k:ï¹cIø(»»»¯¾î†ð<œE@Cà';Ÿoll Ѩœ9ëk_ûš3Àco7„‹S € €@Lˆùb2‘ @ æ Áá € b¾˜L$Ã@@BˆùBp8… €ÄD€˜/&É0@@b¾N!€ €1P1/ØÉd2 @@ @À\çs½‘- 3ÉŒ­ÀÎvy¡…þ«}×HZ~#¹°òFóÍfFŸM;GRy ”Ýñ=|³·VÊHlÉ<¼½Ê³¢‹Ü‡4”oßÄôk´Š–J?GküÔ‹@™ ¸÷vYó+ó/D _þ•]¢­~ëuùõbõÐÎtMÞr6üÜ­3¥†-ùÞâ o½þLKe:q5—zÑü’9 ŒKÌQˆFó‡ÊA' «oÿ}*K.T=ampŠD`R‘ôƒn àØóÑêYFêÌ–[gºÏçûóåUf¥ùV@9SI¾  €@) ¸×ùJ©ïô5Þ×Õ/þÅŠû×;ßû¬¯Iì”…JЕIDATZµá»Ð>¥öÝ\[ÀCOÖH9ÿ!µ@h,fÈï¶Q{uå5FYÇ ‡»Wñ4ô®Íj/|p‡‡ßS*]­Ñ «'Ö¤oÃëo4ö¯­ádŒÑ/ƒæéƒ^d½¹îeY¸~ÐÓU;ÁFÈRIæöºKRÓFúЃ2:{_>]*­7e6ÞfÈx‡)Œú\Ë᜿F]î>Ø&’/ÓçÌ’Ö¨ý…3¾TªKV÷4M¶Ååê©ÌýÅó΂oÿ=‰>þ¾“ây´zÌBªoÖ„y¿‡®6ùÆO€˜oüìi9‹@Ýêá¾[ŽË¥À«+ÿJû–Úí}D{äý½]óÜ‚õ-à Ú·U (ÿ¾&¶ý·>•2üÖêëìf¤Âï/Ö.øÅ·¶Üæ\ëóÔ°ó‰•s¾ï)®ê¹öëzCRÏ5/4«÷6*Õ®˜#ûÈzo_[b]PhaÃÍ—œ¿ö˜Þó›÷<òÄ.³*kŒüúðêÊúÌzÒ­K{n£möÁ·—­QÞ%8Òתetk¯5M—zýëuzZz¤Öð=s‘ÑaßÙ÷ gLŸ·Q·NW† Ã…]Ñn½ûæÛÍÿNصý{‹ïn©ôùêê&SéÛW¢¯¿o¢k,Qêqy5sB½2Þ¯7) 0nÄ|ãFOÃfÝúŒ0Ùk$—?ü—ò¥¦ÍlùÒŸ¾:(Þƒ¯éKwjµlÉ÷ö ioühÛ/nþRFTÚ”·†YÕ—ýàÏÒ+IÎÒæm%²^˜yxUÕÞ|½qÚ½U…¬!ÈB¦vù‚:=úTŸ5ô†Qg¶ >}¸üá¥ze×#­ô‘½õÊÛî]lTœåw¿J\¶¾5Ôo)•è©>|ï\d”õ}rÈô¹×Õ}Ș£À§O„ {"SóƒÞ]ªü޽¦O7:ë™…¬}ñõ÷M ¯*{ëëXO Px®ç+¼)5X`fË·VÓçî·ñ³§NmVÕGõ%d9vöÒ… û ¤²îFmëÉ­›‹Ð~yüûžêëG=þE¢©²Î+ÿüë"ÆL€˜ǫi(GëªÛÊ„\]g]wùœ{Ô6®ºTθP¬nµº¶O]ö§~©[+dGøûs¬”ô…óí{j°ž xÝ#Ö?ÏFÙëî|X[q´rßÀœºªó6ªª}m‰Þ+uÅ¡}Y[`?"냳‚ºÕúå€ÒúýÚÑöv½í{d¼YTJô‘Ö]ÿ§úF¼Ï0FÕá-úϾÙ=}áz뜥®½3&n»L.ì7ùí{çÔ_k2úåñöí¿3Ñ×ß7Ñ[{Öz¼E$%"‘oY@`Ü**&Lüîw¿{ßýív¾þç«–-[6ü†cyï{=¹ááe­~gHC C`åšÎ{îXŽÒÝÝ}õu7„çÑ× ­zÑxÒ^¶¼œ›³·e< 0Ÿì|¾±±1¤†Ê™³¾öµ¯9<ÖùB¸8… €ÄD€˜/&É0@@îÛ ÁáT± ÈãÄŒçº[ÇèÏ0ûc€L gÖùâ<»Œ @0ˆùø& € €ñ æ‹ÿ3B@@`¤×ó?~DB&Ožr–S € 06#ùþýßÿ=bGS©”‘sÒ¤Iÿ[?>,)v FgJÄÊÉV@{¦Œ:§M›ö‡úám"ÊL]pÁÞ‚¤ € €À Œ4æ“.×Oœ8Q¾k®¹fêÔ©®ð"תÈ?šÿô§?½ð ½m¹b¾ ú!ó+‡ñùرcÞR¤ € €ÀØ ä±¹ºø¾÷½/b§ë|GޑգS§ÔÊŸµü§ªa/"æ¨f³gJ>œ:uòÌ3ÏúíokL´ïž(ä0¢=ßœ£Úm*G@‘Æ|ò¼³vù—Þˆ$DÅž“'O¾÷Þ{®æ%]Ï&ÉRœò.õ9£À®Ã)YÕ2d Þ0C'óîƒLΉ2.ÆÉ¬yë‘y”…^9+Ã?qâ„óíy¡HA@`ÜFóùÀø¾øÅ/~ç;ßñÆ|F õNž”PA¾•”Dâûß?ñ†O]ÿGôGßüÖ_:?Üpà m÷ÞwâDÉÇ|'UØš¾àÒ;)ð}âŸøÙÏ~&ÁŸ„øÞ ¤ € €@1>æ3¾|ä#MMM¡#LÉ_©Ç|¹^|ñŵµµ®þð‡õÑgeîŒ š8Ág…Ï9³G½õÖ[Ÿ~úiU¤Ä‡úå$ €%,Pà˜O{dðCú,}Íž=;F6p͈¯”£‰ëf̘1uÚ4ׇ³Ï9ÇhCŠÿ”p2G©Tö‡8žqÆ<òÈW¿úUÙØ%ì+þ™¥‡ €e(Pø˜O½~ÿ÷_Öùä.ÐßéÇ»ï¾'×…d+òSgŸ}–ÑÃßþö¨÷ÃÛoÿg‘÷?¼{½ÉôœqÆiáÙ$Êÿƒ?ø™ñÞÞÞúúzb¾p.Î"€ 0.Žù$€“K»î¼óÎéÓ§Ÿ~úé!C2®ç“+ÀJú¢7¹$ѣšŒK¢7™žS'Í+ÍæyçWSSsÑE]rÉ%|AJ¤#€ 0¾…ùdîÛ çâ, €ã"Pà˜OÆ`ܨ{×]wíÞ½;dHÆ:ŸDE%IˆSYYyÖYg¹>Èõm’RÒC“¹3†`ý ®Æ%o¡È!7Y@@ÆCÀóåÔ‡•k:sÊOfB~²óù³œB@‘äóÝsÇ’‘4LY@@üš››9’SÙüc¾œš!3áòÝ ÏÀY@‰1ßHô([0\ÿc¥` S €å!0¡<†É(@@² æ+ëégð € P&Ä|e2Ñ @ÊZ€˜¯¬§ŸÁ#€ €@™è1_.a.†‰ €ÄIÀ\çËíåq`, € €@°·[“Ì@@ ìÒ1K}eÿe@b+ñLf+ìãú¾ØÎ7CðذaÃ[o½uüøqß³%—8yòäóÏ?É’%!=/Ã!ÿü•=ï?~êÔ©–:5a„Ó&Oþø—Eì3ïáˆE6@Ø <ùÔSgœ~ú½÷Þ{ÞyçÅcØ´i“ŒëŽÛo÷QùÅÝ/söÙ‰]>åŒ3|MJ.ñè±c¿ü§~×5µWEé<1_%ò €ÄYàÐÁƒ_hoŸ:uê±cÇâ1ÎsÏ=wñâÅk×® Nùä©S—ÍûÐé§ŸöÎ;ï±”Vºü‡ŠŒè…±ÛÜÊl €±xï½÷$HŠM( ó$c‘ɸ‚æ¬ ‡,°qÆé±Ù¾—™•±Èˆ¢ß¡ÖùR< /èÏé €å! ÿpFÿ·³$H²§ ‡\7z4÷voFEEÅèµDÍ €³@Ö ©˜;Ÿ_ßÊpÈùAÅ£”ï}»ñ£@@ 2 €ÊpÈ9|!b—Õï=<ª%vÓÌ€@Â$ú‘GxþØÞ6Í:>õÄ~«~IµÚÿħ¦MkÛ^ð¦³Æs#²ÞgãpŒª@CpâäVeÖ!‡"žìyôÑžÁˆ™3³IÑÿñò¡¼Š¢Ïd.„"u € àxá¾é‹ö®~õ ~¼ÚØ}ù§Ÿråzá¾Ë»_=ø—󽥋4eè©OO¿|ß7uðà“Úó/iOG¥[‡^þùÁ9sþ|C·¼Ç¥b¾±‰‹óî"@ù×° Çþ'¿ÙuËßô.iÔ:séã«´‡û‘ñ“üã{*µÿÉO/J¥s´õH{v¹·¸ÿÉ;ºäo|ë“VÑ™K—ÚŸs¯Î¿„Ž“Ç1_’Cƒ¯is®ºjŽöÚàø­×å;ÎŒ½]ë{˜oe”C@ dò2Šìßþ·¯ÜÒàŒ‡f]ÿ™+þup¿Ò¶ßwåß~æÒÑSXeyœ‹29Wë”UÅ ÷É­õã¾ô4I¨ê)3µþ)5lýØÿT}fFw‚Þq+wNÿeÈ#Ë£‡|Uçž[å úôÛÁ—ÿÇ£ê°ön}ÆIÖôæðî÷¦ïáVã¾]Ý2²/¥@JOàĉo¿ýv!û}ôøÉË*/£RIze°ÿí·Ï;úžöÊòå¯,þîþó ÜjzS¦L N>Cö”ÙÈ+öï_!Ÿw-¿è-¹bI¥>ƹ]¥JÚ:þnñªkµá Ÿ«Û¶`Çþ¿©Ô‹Éàw-ÿØ3Ÿ6v-ÿÜcÿ|Å)xòøÑ|\²9$ûY=ä[p®d” oÛà¡+¯TŸå8°ûçsšï½÷\ 纶½\õy=Ý7QÒϽòãsÝ7ØPU%? î{mÎÇÌjŒÊFí÷Œg2KØ7j Q1 €E-Ûýr§ö ¼îÊ–ºôÂJI’n/}è;ýê ×E¨(¯,Q¬ó¨ØgPF-;ºH_Ø(³êÐÇø…«ÕÇ«?ù'Ú¯^—‘ýxëž?¹ó– Òí½þ+mÏÊ:³¨&ó¼Ÿ&ÊG’Ç\åSU¨•¾Ý/ÙwrœW»@óT8wà€¹ë뛨·_5{ÎkûôƒûÖ^¥b¿±8ÜÏç#ì uÚ@(>ÿ ø‡×6\ºúG/~íê«­¡ïìùåì»þPµ£–X*›7}gpöüå³ö­´³Œ±JÎCöÊèñp×¢/¦¾³oßÕš|ú²¾3«Qÿ þßøl|t¶ªN,úŽC •ú‰³àƒ„67øÒî´®GwÛ¹¬Åºt±C‡zëð&V]Uûóm/:W“BôuÃ19ôu>ku/繓.Ò €£- ÿ¦Ÿ óé‚Ïß±hÓÞeÖ¶ëáëWk_¹íú2ÕÞ'yþ+û¾¸hÃh,öeý7=¯!ƒšmêÔІ 2¡Á_^z‘Z¾’¸Ö\¦3ÇèïW×_ºéqçp/¨œ­e¦Ø8¹ÏBÖ!è[$»°çÕÊ®u4מg.ÖÉ6®yK‡¬˜3Û\·óM4» _øÒKúÕ#êU.…Óë|æÅ|lïæÂG^@®~äWÉ_|±‘aQòW= z•·lLî¿ø†ÅÚóo© ¬¨˜NÈ ž¿hñ Ö¨.ýÊó¥{·}åÉn¸øÏµK-º4¤·æp%£òÈÕWKØ»X/j%…ÏS*ä›s•#@“°í¼Ýj¥OzuÞôÛ}ô€|šsã½ÖV­o¢5ÙžþèsÚct)ŸÞ¬ŠùdýÕ%òÝ0y<ç‹¶@0–ßOçwâ+öî]aµ[ÔOhšù£Ê"9F¥ù,Î³Í nþþÞ›ÓU«Z¼IÎ1º>Û"zû™E%ʼn“ecxºªÁæÌVϽòó÷ªê¼ó®ú|Cƒ»7žDwö’ »äèül®óIåêð2µ"€»€±ÑYì½Ì¥YWpÊpȹør^õlçÚcu÷†1˜Œ½Ý¬ßQ z@ÆM ÏE¯qëo.Ã!@m¤U¨ºì> ×~~ì.åÓû¬ïíê×ðë|ú‡‘ކò €”–€ü#³…¬Ã)Ã!ÎwÒ½c«·â›h´¯ö„¯®„×ê^ç3îä/ÃY@â$ð¾÷½ïðáÃüàÿíßþ-ãºà‚ dD2® á”á%Â9vìw§Ÿ~ÚñãǃXJ+}òäÉ2¢è‘›ïõ|,ô•Ö¤Ó[@ LŸ>ý‡?üáç>÷¹*ýÕ18Ž9"#’q¥ ‡–úÊòkÀ @@ æ*æ“ øõb>Ï @Ê[ÀýÑøÿ8P›¨­œ9«¼e= € Pª‰DâÀÎÞg<«Å8ñóŸ¿ôñ_õéúO»FY¡U¤SÒÕ§ ççrÊYJe ± ;T,³µ \ã™ýExãÙKÚ[‘¯¬§Âž£vNöGÞ÷éç7„ÐnK¿B{î;GÑJä=Lß6 ˜˜ãH:õo¤à¿´Í¿¢}ÿÖõ­Ö]•ô;ì¯ùÀs¾-æàÛÕ¼k½‚ÏÓ0¿çúÿ™¿YIŽ?TúGŸ<ÞNä‹W’>_B/GHJà·2¤LØßdYÿ.*ÈÔ“€¯ïç/9;:)uêäü¿ÿwá¬Y¯ -ízñEùåÌäœWû³ëƒñ£ów©Áõ£]gÐ%(=„6"!µe=•_sù•ÊÚ™è û7fôvË$g¶8ÆŸ!Êìð­9‚ûuDÎ QúS…væuпñ o\Æ7ܼaÃÌë:åüùü¹ð4Po]àlú²Ð©£:%VgóþFùÌ‚ À3)r~„óòýëd2);º'O¼÷ÿ:™1a¡ÙïIEND®B`‚PK !ú9i1 f fword/media/image30.png‰PNG  IHDRª†¥ƒRì pHYsÄÄ•+tIMEÜ  -4å/œ[tEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/05 18:45:52 lim_j SGA250167Ø‘DÌ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì@G÷À5‰iŠúÏg¡+˜Ää‹ID,X±Ä^°FQc –ÄcŒ%ÑH¬ITŒ± 4À`GAŠšné¨É{áàÚÿÍîÞÝÞÝî±×à€·¹œ{3oÞ¼ùÍòîÍìÞ !x $€@H TNÆMõí9Ù8S°Œ„oì§5‹ÐsèøÄ0a:(èË2¿Šå\V‡pºèC?é4£:À°<{¿–`ež ŸŸ6¡û6¯ æb"@6!pñ·Ì ?ú#ë6цJÌ% ìþ¦…õmï÷ Q+ÌU‡òH H'ðö^ïí¾4Zz”´!a÷×Þïeô}6¤Œª€ú·†Gvèû*¨;°Z$€ʺ¿òc5!$àPÄÜŸœ³òÈ\§þ{™ó!qÅËC„m?öìê ÷ÎÖ¥fmñýïááR$4A-ã·hÒǸÙC@È(I²mF%1 ˜3e¬“ë0È:^]CúÁK›%˜(¦ÓíM@Ìý17=²¶úöWÅ=¹J½^ÖÖˆ#Šî‚ö( QÓñ²Z0÷tØsk[üCc³1OÆ"&)X\›µ¼¾ŠÕCÓ$*1m›é1 H&`tŸ°kÏÞ²âGàïj׮ة (:sò|„sÈÂù%Édí(hÚýež»™Û¯ÍF…7ó8¦]Œé\ém³Le¥¤[…’•›ÀÑ„ŸàeÐpOÔC™u¹?(ݧÿ ˆ Çî&j¸Éáû;ÓD!a³jCa›0éþºu?`JèÚÀŒ©îºÊ®ïðmùÕyæóø˜ß"isî(Ñzùa½zuµ0µ‘üˆ >у™Ÿ9-mv-ÉóK(Ó3z 5OS\k!"5’1d˶æq…èúÓLt¹lµø^µtíу¨UGÄk›ÕµG“(üÔ׊5ëÌ™>EL¾O¿þ ” ìØ‰ù(¬ÙX-¦Ø›€ˆû+ù›©¸yäí­Á}œæ’ñ»#»BJzX˯ZîNÌ€óì_ßÁëÛÞ#DNJÿ&%ÚdÏAÃÒ`{ *FHIºFRLÏ_3ÿ®¾ý>9á4lCüÄpÞl#(ükfË–3©a=ân‡‡]r©È´Xw»›Uþ×ÌÏÛ_»èCm›Ñ…o›h¿yoUßv!%‡ÃZž‘˜vðýúbÈdZ£&—bïî@ý@ kçV²Ç·ÏœIƒºÛÀGÂ]ÿBƈe‰¥Rû)ö;˜9ª ÓìK@ÄýÉÿÕTûLø‘¨ðìx߀na»¢"½®üF:~Öñ_pwÄ­Ãg¡c¯ýKÜÐЊȵ'PÚdâU1=MWMnJUu|c<Ùåê¿!àŒ¸6]•²„ºQ8¨…M#wsj°`ü®¨ú‘ø¦ƒœÛ&^ãðàg¨¶l0éÚßnŒ{%$ô ÚFÒ”Ëeñ½ŠèÓãm¢*†ÆÑÝÅ/ÔZ±\‘ô3É¿=šØî Ðuôhx@ö\H5¦•7÷g`FÓ¨E)Íã~œRÞöYZß­+ÒËÜÒãnMäÅ›¿š[å+/>!ílnüÑãGOœïÚ¹u×`_P^û™§Ç'Ëd%ìG›W‡ Í%`rÅ—ãñÙ¬Â[‡d·nÞˆ4mÒ’œŠ=Î$fÇÕq@0¿ÆF-Zf_ÊaRާÓ)?±£ =bÅ Ò AânÍ!#6ifn²£oQ¡ì‹Ñ¿éÛVfŒÀ§ß1Åñ@V0ð} ¼¸BpˆeµzT`&£¿à&—…rk„ÎQ¿×ˆF‘)#}ØD:Õ°QøœŽN#B©ã í8ž3ïÍ¡+z„Î Z‹ß4©G¬aÙ3A“ÙzÑœáVü¶("’4òY´¿y÷øk?7±jËkëQŸMGÄzjʬ‘wZÄÓ³VO~¨ÎæÌÿVbó©³c‚>þ!˜(Q!ŠÙœ€ð‚Wé[ÛÛ¼&û+ü5¬ÑþÚÉAûׇ5 ›ð{÷¬V.xe¤•˜üJÔbH JHÝ_%ì44 [09÷g‹ ÊQÇ›‘·Þ,Çê°*$€*7Œþ*wÿ¡õH XL@8ú;žó¶Å± @fÐÝú0³ Š[E£?«ðaa$€*/t•·ïÐr$€¬"€îÏ*|X ÊKÝ_åí;´ «ßúTùàþ¿W”5kÔ”+k8=UZ£¤&qònÖªvíçåÜ‹x¾Kýÿ4¸{qMý·&ݾ[ãþí‡÷_j,‰)H {0Ãýæ_™Ò漪†Â‰Ô$ªN5TDå´>½y¡qMRS­T¨j·—Õyþ1£ŸoüÖÓ·67x9´øÿZÕ¯_ëÁå­u޾_*&ŽéH ;0Ãý©ˆªA%Ÿ «œj¨Õªš5œ”Nê»Á-že |þ?véÖkÏ{‹Ù[ßYÙ Y©ý–s3/òÜ<Ÿ~ü@uùÏ;/Ô©/VÓ‘@v"`–ûS]»]gmôïÓ†ÓµÙCít÷hZ¦ªFÍšj•yÚÉIõà~½:uš{;=âñKo5xµñsM‚‹ÿ=û¿?×R¼ì|5=  0LDHÀŽÌpNÌFn|ß»øyXw"ãRº‚&7ð oPOMžq~ü÷Éç4r»ã£‡äÎ]E³&/ªT%j(U*('ð~ÿþ}Õ³°†H »0Çý9Qaˆþ¾[>]Ì–K¿Ÿd]˜ À{µ^ÞèþvïÙ¹Ï×öËM‰lòö‡¯¿þºV¸´´´¤¤Dëá–”\¿~½¾º?A˜ˆ€ ˜áþØ  ¢?ðq¦jf¼¤àñðï« ö­Q³^ ù‰Ü[í¾6îÞ­¼ÿ4¤á8>ÖëÃÉ•+W5`"@HÀVD]•Ptê2£?¡‚\ÚÝ:“jÖ¹4hÙ0ˆ‹Ÿuç|„{¬ß÷àÁƒÇà Þ1³°’€Yî>#ÍFéןQ*J¥RNÿW(ô r ø÷¹“ÉŠÒ’®–Œq¾Å÷Éårð}p°q‚F˜û³²mX $`‚€î|ƒ½ó+——NÒ‘Õ«PªKåêR½k!“«e%*Y©jô{S¥¸?psàïØ)?ÖÂ;õ¦J%º?݆YH XOÀ ÷WžlÑÜù-‘ÓMp[õ†÷¤£?.þj3ß”aÃF‰Y®M›ÅÆ}¬ïcC?8gÑý‰Ät$€lEÀ ÷UOcw±$òš á㹓?ÉÊ’Rõ‡“ÇAÜW\€¥4ú³O;ø?ÈŽyá@ö÷~Þáö1ÌŠ)Át$€€õÌp-þ«Û:ý׿JÒ¶þ~ú1võ7ßóMéÑ;TÌ2ÖýýóÏ?·nÝzôè‘öIö¾;ìßbp÷CL ¦#$€¬'`†ûãWV"+‘+TÇ⤱^‰jìè1Ú NJä¢Ñ¸¶¸¸¸‡ÞcŽ;wîÀ;zýYßÔ€NÀB÷'+~Ò¡ÿDéÕh%ᇵŸ%µ—,(ŒE@¶#`¡ûƒ»º‚7vmgjBH Ø—.wj_¾¨ ‡%€îÏa» CHÀ¾ÐýÙ—/jGHÀa  ûsØ®Að/töå‹Ú‘pXÂw~ƒý_vX‹Ñ0$€€M»?ª•*õé¿î^.ztï±î×»&ä1 H'àü|­W]^èðZ=ØGFz)”D–0Ûýùå_§5dOžªíô”¶JøÉF1üÚ·˜À =—‘{Ç|„ÒŽ,5\ß2s±TÕ&ðà‰â·Üûpõj…ÏÅWí®vˆÖ™íþ.>ßÕãrÎß5¦.Žup2â n®6uwïÁ÷A “{ñ—Ë¥z«ü9DËÑ$ðlíZþ/×Ûr4ÝŸöNÕ3Él÷WªPתIo˜Ü¼u“ÅAýbr‰ûîÂ;Rï§=Š™Í‹*Áqðð‘J`eU7±!‘»¯VõVêÚ7qtíþyõ!P!-0¼§Ùî _æ,ûe`HçÚµkÃGn€«9ƒQ0=eþ¬»÷î.µT¥Žc’yÇÑI lb>OŒ~¸±³A.÷1aÖ‹Kšÿ–<±©p¶.5{M¯–{ß‘") )aVðµŽOgÇç}»¶Á$$€ªCGÓ 5–<ø¢bB9ggêýàåL_µé'úígáÉÏÖ&pFH=ê! Ñ{e­é5€ìz ¾ ¯_Z\ûÙH@#UÁ旆Ź܄™/¶û.‹Éõš~øAr˜—˜dé´F'H T–D¤,7Á€ì¼ ;ýgèY®_:ï×Â<n:=¬©)×Ãú&±.1+VÊ8BZÉ2NÇ$€ª*K¢?¥˜ûcnz¬+TªˆÞ+¸ßˆôÓ6dé%^_Ó·®“ óšó3'O«RÃyœºí6_gÙsxÙIR½åä2=AO@@SdÃ$Vy_ƒzU=—ý<Ý ,¼n4B7l ~FH ê°Äý†r 6ÊcÎȳ„¾èø—À N xLýWÏ%w2{ðq¯çôÑQ6+᣷g4߫ι£Î¹°úòv‘Ù4ÂC¨Ž¢9 ñÃIÀ ꜈ž<1=)‹®ö£Ê÷N¼0oåqC{8óªNÇbK(‹€%îO,øÓÔ%»›’sqË/±ããÏmH©w—ÆtþÎðå=&A}=}õÕ!Nó‰*ëÚU2±KgFÌcú£S23é9j¥ÞI‰¢z>ù 'UÞ¹ßpòg6ÌÚCTøtNY— æ#ªDÀ÷#VíqSFRî‘_à±æ€`ïf|ι]—9‘“sëÞ‰øÜØU¿Ô&¢?M0è5ýË%Ññ ^&àXI:£ÇÄŒâÑŸ`HHMëáë4´Ê«y™]ûÞ·ÜÄ&+iú#+CíÁ@ŽD€ýÛ´ÄýiâûEFFæÈ¾¿)‹É‘Íɹ+‹½»+çâ-¸ÅÚžÎ^o;ÃS€É«†sÇÖlå&ò²NLyËÇGéÙ܇lJ<ÆÌî]_³aûÄàNôœúA:÷çÓ´uJ& ‡!÷ØÁ=\¢6—'Y†¾Nv&‘ÿÞ³L÷÷Ýût,¯=LäÄÐù!$àh˜?N«Üß’Ë÷œoÊ>÷ª=ëUçίÖ[3îÄÝœÚä^#çÏÛ.Øâüªsέ»Îµ>¹Ò©y–¿Ó« áå³üÕø¼Uꞟ¦®¾6œIôßÛ=uc;æIšJí=2|â^67ž f¾F HçQ)ËAϬž¤i=|ÜÃ.|Ûø®MðÜt¸g+¨‘p–<ø¢»õq³xÉ[õצ7|áù¾{0nô¬3øÁP¯· ŽÚõdÎeä&;aÇksÏ…7Ô 5Ÿ¹\÷é;nL×Ê0‰ F#2zÞqã76r¹_Ò!±Ý—ê?4ç:IÓzø:yUÐiÚgAËiêî»ü৺ÍDõ-Êß?bdr÷_v‡"»½è _@(1yu«¹§¡Ž_'Ín¡PAAI‚Ù˜XI è]¯¼7²ùw;µ$!^Ó ¯´JÚLa³-rŒªœœ›^βË÷îÂ½ÝØ[$þò]xØÙ¹EíÚêy1¾œa8ÀWYo¶PØÇO…ÈîEç†/:× ]+»y=íåW^1ññäš·$·Hs…Qÿ²:IÌO¹Ú•4H²NB@Û\òuÒAêõò÷oO&AbŽÕ”Ržs4×Sj1Ï¡èû¸ÐAŸ²ÖÁ×ç÷®ô¾eÊlc¶û{%¥Ê6B¨É(O²ø×›¿0?p{Õ¹¶3¹7§ã«+"R^nòjí›·dÌ‘âQó>¨,¿ù5A¦ùÞûöïòºàûXïfú£ UÂYînÍIrn> ²ÉWPxÅÇÕƒ­É}~¨(\?¦">¤Ó§^ ^Ï]BUÙs¯º<¥à~íZªºÏx­jÛø"{‹Üë,#K{¾ )Kç„Èdãsî]º÷*¡YÉJñnº—Áj}HšþhZ•@nò¹C=†1~ b®·ç³"Ús~¢¦4„xAýZõU`¨°]Û¾™;çEê¥kä¡ÈgÉ%Œ+e‡E9kFökµ,MÏ*=Lñ¨Õ ™±G¿^Cãð³ãH;yÄ«{{WÇ7Ô ÍŽþ:ÿ·~⯷¤äÁÒ/ÚŠß&ÏÀ²/»Nds)žÏ´ðlçüé­1³¼Ê6¯(bóA…RÑÕG¹xÍ%…B©„ ÅÛ T3>='§ŸéáYC9züEµkýž&(#õEýËš3t~šgà#[Jûn|’öÙÈÍ—ØÕŽäE… d:W„­ÄïÓ¤uÛÇOiõé»ü3¥¨“'ù1#F~¸}gÄhwcµÚªAÃÇ$h£Å½ /¦'gMîÐ IÓIòšVs÷'…N™mdÍÃw!À¿µ— !ðeìÓ.–»<ÄTÛ›a¶û{ºVÞ­_‚—ímq‘»¯‰YñD&[»è}±\múc™*d„îN™òÌì2ã_À%…çr¾FB¹üÂk>#—13z¡Cû~·Ç¨Œëè-FSO×ÿ3ð€n…×HÇIì  ûÀI=vž„Ñ‚6Ô+¬ÇkúHf±œvþ}É›âZ… ¶& ¹yz™‘ï:[×ähúÌüÚ¤>CŽk_nýŽ×ëq´fP¢S«#N-œÜãœ^:ìôüa§š‡àe“êl¢D&“)”êE«wAØ;iîY©ªÿøOžÈT¦<,V¶îvÿ}/‘«JårKjtoÓÝ''Çhk‰*~÷ËÞó:tšÝ¬U†å«j1ò…®¬÷û¼ÜÔÓÛ³‘‡Gc·;?]Ù1lrc·_q«õº ù¯+yÓ•¼ÝÄ·»¹¿'Å2p|³ß^*W¯üdJ‰\½uͧàìþ°º¤D•ý­L®:¼ë[Y‰Z.·è×sùi?gzy¹/­LNEàîÚv*yDJ¹lõÊ«£¿< ›É)à¥TóAz|¤±%YkÚùÌHaÓVg&O÷6–II˜ä²IW†Õ41^=û£rst‚ØjÏãÃWlŠX¬V«UàÞTô%üF~—BWc…'x‡sx3yZüΕZ¨H 8ÃÇÒ-\ìÞúVÀ=SP?ÛØýÃfEqÍQÛ·ñ€„Ôª÷Ü·Ñ›Ö ¾ôçeáÝFÀcmì :Ö07M­>¼§'«á†Eäî#bªd¥¥#'ÏV(Tp(á?zP‡W¦sCç'†Ó‘@Å0ûÎ/knJJJË–-Ÿþyˬ—+äôWºj2hb&8§üÑÊâ§F|~Ž.9UüøAˆþ„5g­Y„LŒg|=§›u—UX©¤TýgY$A!$€™€…syyy?ýôÓíÛ·-k›BîO­TÓ †º_•)—Õ¨_sU²ØéÉÑC:x>žx5z¢±ò¬¸½0èØs~œ„NNí&Mjÿг5tÑzÁDc˜‚@u%`¡û\;w>pà@QQ‘è`ð £Fü² a]™2ê‹ä[²ðŠùäá?ëW]¼úÔw®ý5 ð*ȼÞ/ …@)¶Ø¦Vg® )3Æ0ÁD˜„@õ#`¹û{饗ú÷ï¿ÿþLX—Ù̃þB‚YlB?öîÞñP6T*‰L.2þ%)—„* Ò î€x÷^O#!˜h¦±V‹C;ð…€C`þ¬-wP¸AƒC‡ŽŽ¾{Ö}1ãhPïEð}wå~yôÛ‘{‡–þ9ôÇ —ïÈîÃÝÞ^óOwÿø¤‚¿¢4OqÏ~tDüç5.¸3£J¢ÂѤ‰˜…@U `•û»sçΞ={†^¯^=³`¼ÕÂS©VÍN8öð‹â’'3ÇlüíÏ §GyaÅÂGÏÙÌèÖgR›w~5ãܽqpf09˜b˜È•_ÉOX »°¢pu˜Š@Õ%`¹ûû÷ßccc äã#4gY÷Ní”Jõ©d§¸sÇöúß¿¹~Ÿ?“SpëŸNm_¾ñϿ߾]¯Î³B:à :¿·)„½Í²W+NÑɉ>¼§»/ Ã`ÃD(?QSœÿ Pe˜†@&`áƒ/@äøñã0÷ã_séÔ¯_?))ù¿þú¿§û¼xùb–Û…Æ÷›:_}àÔ¤ÖÓÍï&ÄîØá¿»$ìŠMôö‚ß*Ü3zº &”|þY0±çFµZà¶ŠqE˜‚@U&`¡ûóðð°ø¹?27kÖìúõë—>ºZ46ïÎćcœíú¢<°MKÈzðà>  †{x $€ìEÀB÷`•oß øÂíGòÉž©ùvKß:ó&C"›e¯æ¢^$€€†€…îÏV'õl /kµ Žf­­ Ë#$PuX~ë£ê0¨È–¤-îпµæµØpz­e ®YÀʤ¹ù1#9IÁ"B‰Ék4¬IÕ-TPPXg€`6&:&Âíašë0,&Ï”R¯„¤åý[/ç/$µ S¹ÞßÅÈèþŸIk‰ ¦ZÁåUpô'ÁÂJ/"öô6Û05ñš¶#b¬ºœ¼ÆwÞšŽ§§ µ˜UbZ-ç>pÇéð/û„){Â×g¨'?fÔ<qú­4?fG2 Ùΰ ž‘p±îñb[Á3@¨˜æxàµÓgÙ ¶ë™Ë`T;^Ÿê›lòJЈæÇlºÞ±Ù³=¿ ½¶™CSPT3¿Ýß›:|à'ì ü™lu…íÀÊþ[à«9¯÷K=kí‘•’G2Õƒ'jÕc)V“Gð®"O`£Ú@µÒp!;‘†Tþävþp¹Àñ,@oqë™ á¸ Ýj¯T‹õaÁÊF pÇbêûj¿ölqä%'“àð1$bArá(wÁç7,ät&É–«ðWØà·Ò­ölawI/–œzا·Ë%|!wèïK_kÎh5p‰£¢ ™4:šØ‘ÏfkÏù‰š’mš‚<›Àçfî\À)4”ŒÆãÆ•BʇIÎÚQý}é`‡' k…V“½†iZ{x¦áiyÈOKÌ4X÷›½´ ûtñòp½«‘3®pGïÕ$&'ÝÚ¹z´kGާé¥ ®¶€ ÁÖÓUøA³`ž‰æþ*ÝjÏÀ•V„qà’ü3"zÐ2i‹G%wÛq ãôŒedç›rÖn%K eÇHò]„ÆëI©´1C›Ó–äÆ%Ú,<½®Ûñ©kþ.øßÁüA¬œ9éãþ>×9so0¼nì¾ødßv‘+õé½_XvûnÈ?w{ݸ’ÿþªVüVÁ"Íì>´Ë[™Óf“eÇŽ‘¯Iå|A~a&LOœwêJ.»¦Ž×´…Œst8±‡9;"6Ÿ‘c˜¡Çð¡}ï:*’9‰ÑhíšpÀܺøÊEõxMÁmׇäÁ` &Y(¡Œb..´Ÿº6óT8Ëk ÌÈ—]+ß5(˜¬ÝÅ¿¢ßVq%°"ý»€¯ÉÓº93òµå*ü3÷gÍjÏ„.P¿wH¦:Ù›¢L˜4 ÖaN+óá>pÉ{á0 Îö#ô¾iùPa.<4dëÆR’%¥-akͨϑ @€æ³ódòt±[^¢¶s÷¸`ÜãÉ¿_—¶í»œ+dªïwÚ¢©gæ¶¼¡§¹Sg¬D°Zfä»Ãf#_¨ÃÂèV{~üø± Rù«=™zÙIQ¬öœ:rùYvÛ#ÑÕžÁù™ñz¼n{ž5 ?K©¸ ›.$SF]†Ùšù°£ZwWrJ3æÕŠå$&3S~ºÉ½½ÙŒFµš‚ -sç6vC¸è=†bÉ1šqta’fC8¨]»!Ü&“Âjã·‰i…¸Ãæãç "à:êÝŽ‡ÙÀŸµ€¹ókùAǧ#÷3QóZ7ÍGsX®”–̃«W;9n*mi Ý_E­ö̬èb¸Ø3ÛfugæàVƒ„vk¸a2¤iGÌìjд”n͔Ɋ³U}5pÛÄ d¹Ü6c&‘µ‹còÔmn‡ >:G_p?Þ÷òÉ a"oéô@ZÄuÔXzg&02 IDATá2󆄎jY=†'m.åĨÛéÄXá×væ±ÃÔµÍ>Þ1Ì•0µÃ@˜©+¹Ûv¶.¦E¢•Ò á¸[ÔTVÒ´Ýs¦à˜à†Y¶"0=CÛãÐé‹Iü¤K-اƽæ:j³æ aì¡ãÓÎmï4sÇî5ŒÌ€Ñ» õl €½Üv}b¨Ó9àóÓmùl"{ï_Â^nëÆ°5òô˜4Æ2JX ؇€…î¯ÂV{¥ÀŒ‚×p+>kƳìÐÞaÀº¸·´fåg¡ ;§ ì³Å¯1íó1)]·Å¦ŸŒM_J63^,ðcæãÉúü¼Wã§rÖåú32®l4Ø>­Í''×v=1 <£ÆÓNrRùm#2çkXKAÃG°—ÛT0ãc½½ÜDô˜0F¬ LG@ÀB÷–vîÜùÀEEì>d晃_µJ w8ØŸÇ®LõEò-Yø Å|òðŸõ«.^}ê;×þÍS îR?ºz_üÄ”+éâõÜã]X…VÓ5ž…„IÌöI™vM5½Ï³ë » ²›šÛõ-… ô "Ó^SCDZÉ7Ú>ÍuÔ&ÖÓ1êÔ„œî'tÏÉÕ¥6WTic¤ªG9$`o–»¿ [íYIÀêÙŒwÓ®ç,*i”¡YùÙ(à ¦Ö«uoÓÕçôÉáí. n¦l‡¯NƦ±¯Û¨aoÀù„IY;Õ‡š§‘ÓV¤MÔ«Ú}àâIt×ö˜ÖÆW+\…tc¬Û§ÁD0 H!Àþa[îþ |¬öL|ZðgʨÛz½¹7Û+ßéÊÏVª0¿¸ëȱ~šÏ›€ËÙÉŸŒ£û¥fǼœò«ìx™nù&¡Â”˜ÜD^á™9/{ºFç)¶–ü˜Í?L>2ȱñ`JêO&j(C‰’˜…‚€Uw~­_íùú ¼H߇™c6Þþó/d q )˜A±Èk4§„ŒYÓ‹Ùí(a匔‰ñbZ BÉtåçKÖÌ~·¡P®]Ó¦§ms=f7©æ3b/o³BÚ|²mÄè1ÓÚ°3Ý?JûxàÔ¦ é´‹øtèÍDe°—['r({¹WF'›3z«ô÷`¥¹ÍüÔñuïЛÓÞ¦c÷/g°Ž ­µMLOva6¨p–ïôÖµk׃Z¶Ó›‡‡çoeÍØ¾ÿ÷:“þï“gî¿ÜhÞsÏßüêÕ¡}Ûo‹= \”òâÏ–¯4ÜéÓlñ§º]Þø²hÏu‰ìí7ýgôà £õÝè›ïô&wŽ@ŽD ádìôf¹û«Q£ìu ã_sU¿~ý¤¤ä»KüÃ;#ç³n7ß\r‡S“’•AKžštì´û@ÂÎØDеa‘¹ú­‘Ü}ÝŸ5±,¨X÷gáàW{®}ŒF"$`‚€…îW{6Á³¨,t¶j®öl+’¨ s Xõà‹¹•¡<@HÀq ûsœ¾@K(W<ø-×¶VXeåÿ4u…5+F•ˆF•¨³ÐT$€lI£?[ÒÖ…ÁŸ0LEL£¿ î¬ Š"€ÑŸÝÉcðgwÄX°ˆFaÃBH T~èþ*¶Ó—tè¯y-1\w^¢m d–fU+ã"’«ÈÃéT(˜h\¦ JCÝ_…w•×”bROĤþ0"sÁZºÖÀa¥ë‘R!î¶øj¤»@õ˜„ª$tÓ­tõPãuêmj^9TaS{Q°+tvÅkŽrXZ¹û6ø:û¥fDüe:!ú}ùÉY?v ?ýGáÎIœ€n¼\CWš8Æ`S7¾ º*øá¤ö\(Ƥ#â²ÔšÓJ”EŽCïüVx_P¿¶žZÑá«~¬5í?ŠIýNÁíÝ9ü«'>"÷zþÀŽLÁ÷M?ÚiMêFX·Y{ä¬ß°çDŒGÊZÿ±g‡Mk¯×,*ôòE?¤/»ËgI̶’·{ÖPB¦ˆJb¨|0ú«ð>ÓN̹nÖÞÁ/Fc.úŒŽütØx]³žxM™?Àü{ Œ …ª0R,{¹ùŒÅl®â1lˆfá{ALB•‘º?‡é5w¿®>Ìž“0Þ\@¾‚›!'ÖL‘²›‡ôh«^%‘@Õ%€îÏaú–†u^žÕ1{¹¹]4ÅÈ<êÂô÷~3MÐVAšx²®DMlç·J2wí`ÇÉÛ½WŠÏ MŠHÀQàÜ_…÷„vb†¨Ììžû€)Û¦íÌßËÍn´S„Ý?JýÈoäÆr;O÷g6„ë½$fçOáÖUA\GŽéà¿` þvnÆ…ý,áÄ^ž8¢7±ð¹Dc½˜‚€…[9‚éö°Á[•Ê•ö0u"$`1#§ÎÃNo8øµ DH rÀÁ¯Ýû—<°;b¬ XDÝŸEØÌ*„þÏ,\(ŒÊ‹~Ë‹4Öƒ€ƒ@÷ç`‚æ $P^Ðý•i¬ #€îÏÁ:ÍAH ¼ û+/ÒX@FÝŸƒušƒ@y@÷W^¤±$€Œº?ë4 ò"€î¯¼Hc=H 8tåÐ!ð³Ó¯‚]“¶ f^“bòË6R•²–+˜36xæ®|#s Ê[¥Sä‡ãLVfnfúÒཞ[¿Á,ÃerÏ—³÷îÊ÷£ª¸#}Ǧ\B<͵ å‘€­ û³IQ=&ò[¸ki”÷çûçЯ$z¸uל‹ªÔËPOX$Õd-Ò Ii#I¡L3Ò@wSrô\a¨»f™þ”´Ÿºu蕘ÇVa†.E6"€ƒ_´LM~ú±¬c½üØwƒ0¯¥Ü2£‹ÍÚµg›øîXRVÄ‘Ü ïÒ|œµ+Ÿ1ESüÝ=±´Mdг¹ºsš¸ôËYÁëÎröK®Æf‡9­rÍGCå&m3$â9|ˆ÷¦P sîÚ–÷Áð6Z!ýª5Öê5–ʉ ¶T—ȶ‹m»¶™ÚJñ¤š@÷WÑ€·‹ÐÆâéKߥQaÊñý)[C³>Ѻ­Ü ¹mhâç®RWâ7ÿøœ^Äóƒ­û·åo~¤+þI‰+£‰¹Yž3RŽO…ÍáÚÄÔ:é@U«<å#n :F“DÛŒkõëÐíôiÖ•ƒß'¼–ëWÍ–5h,M4l)$¦tÙÊ´ås²…~OÀ¡k¦±e˜R=  û«è~Ï*â2¾!ù…YDºß-—nDφ3ž( M/’—'P’‘‚âÞ¡ìmîC‡ôbÒÄÏ.mµR6´„ˆRü°Â¶öÃC³¶Å‚Õg££¼Ç Ðóû)ÆU 5Ö@L°¥ÔBÓ0ù“ÓWso0á5S¼q˜S­àÜŸý»ÛÄ´œ›_ï§“§¶ÿò ògÈ ÒÙ×b¢ý(V¼ öÝOÈŠcûÛÃÈô½ÕT«`ãêÊ´MËÚKVŸI&DzC?›ÃÓCu)U‹ÃÕÕaÅ1Ïr‡šÝžW£6 Oª1Œþ*¶ó]GŒî·P;»GH½óKÜ\½‰fœX»%Qd~PÌv(žÅîЖ¿g¯&”kâé›[À”IIˆï Š®²#ñ˜‘Sm¥mÐ^ £H'?½ÐObÕÆb‚-eèiÆ¼Æ I_ÚeÖ.ÊÁøÄXSª2Œþ*ºw¦¦luyFj¬!Þ¡»¿ƒ3¿ù[C5‰0µ÷•.‘d¯ßüÅ÷ò„Ð^ÜmÔÕ²‰n¹ë èÿÁöúDï½¼Ùl˜­[1çÝAºÍI`;¬³ jñ&z3•0–7®ÚØ>A1Á–²ÎØÌ(Ñ3^H-¦UW¸Ó›^ÏÛc§7Y‰¢"¯.Ò¾[4ž?¬HkìYwõi©=)V݉Ip§·ªß×p“ÒVõ¶VŸ–Võž,¿öáà·üX—cMpïbÆnþnèßc-G;ì_Uõi©ýYV¿ÐýUÉ>wñÝþU²e†ª>-5l9~¶žÞùµž!j@H R@÷W)» FHÀzèþ¬gˆ¨”pîÏîÝfðã‹ìì<»W‰ $ D iS~2º?!HöL3è{V…º‘0E¿¦è`@U˜º¿*ܹØ4$€L@÷gŠæ!$P…  û«Â‹MCHÀ¼õaŠŽmòŒWâ³^Ô‚€U0ú³ FH ò@÷Wyû-GHÀ*èþ¬Âguáôe]µã^³¢Ø¥˜ËTZ;®«daamüzã6µQ*ÔhÍ6hµš‚jª tÞ“ž|¿?ùèþè0²aݨìÃmÀ÷G¿ u+[‘ó;\½ÉGçxGÎh·R³†D­å/f^«Ëß>¬±ò@÷W}Æn$öÐ,÷¡ƒ{e¥œ-³&«‚­Hó®Mô÷}èˉ©ÉŒö| ša×Q9#@ÿðÑý•ƒû3· ˆ×f/[9»]×uÉP´àÀ¸®ƒÛ1¯eçXUT€)ërazE½¯•É•tôqƒMÅwtù¤Ó¬rC…L]ç8Æí)â*Û³ŽµÓXL—¢×"Öf¦ ã²z b&ZÍo2g þƒÊ$€¾”‰ÈZøö1}°_Où{öÅyD¹±»Kæfº¯>{Ô…þÍ‹ò^¼oK[ÆŽ›½ëû•ì°—)•¾|\Jð÷û¶À@øÜ:p1CIÔû3Žu\}ö[(ËGg“®û<˜R–°õ²Rl– BØ |Ãö€¨£ûÜ©«w€*z©Xþà³G§‚%íÆž:µ53>ÏìPB&‹Ø,T<š^C4 µÚ=vCÓÙg¿åöb/¸éîÀÜêCÝ_…÷uî7ãC­úòhÍöž]ÿUP”I‚ƃïƒÃ­ÿønQI…p¢±™ææÆqÅaK³6 ,+h¼Ö÷i%üëé{+¤%='Ïc Ó@Œêeņ1¨-lÁ¾/¯€´1ïÐEŒñth¹ž‰UaX6Ûiˆ±†×æ‰+ǹ¯þ~¨ÆéÓšð@e@÷W ûg{NÖtÕNâ,ÍQpÀ%tc_÷ñàUé­g}…„K¤(/›nÏMbeš`MYV¹òýÑþ`¶ïšÛkñ¾¹ì·E™V @µ'€sŽ} ¸¹ø¤$ͬܖĠ þß6“»E;MafñôRÊn¢ú,f|¨±BZ<÷X 3åG½$c€°˜QM –µ‹1žíÙ|©eÅ"¢Á}èʨ0ÏÌ|05}977j|bd$&Tcý9xçûÍý>tܸÁLÈEãD] GSØÜí#™Vt›}v¶_è·³óºr)L(äÔmåG0@fry­ÕºAí>Íc4Æ i½>ù«!°‚3PÈ (ÆÓÍúÍ]Ô~á`p|Íô»­K,ëbÔ­~# íÓÚ/Lb²!*„ñ¯æþŒ±E˜‚xp›s½ËÁÛœ?‘Ém}ÉAP“ÄóÚºž>¨‹»sbÇJP5(_ÇÎ\ÄmÎ˹­j;—çí*õ©g[UŠz@•#€ƒßJÕ¥ôÑ“¨ktL_Þmp ÷š-u§·ã»In¿ÞÁ˹5ô…D ´uAãJéÒÓšF ¿·ÌõWD”™ƒiHÀ†ÐýÙ¦eª<'oÙw&qß®0òÍòùRt¸õß’¸r¸Ô5Äœ Wï™-¡YŸj÷ 1ªÞ¼º˜âàû>Ígu&qu—S3$x@£z1 ØŸº?û3–VƒûÁ!Y)É@i:%I¹¹x“ü|›Õ[½#)ä3­wv>7”DÆj¶a’d !ò!€î¯|8›U ×–¯œØÛém¼f€¬¥ò::8e‡ÏºÞ¢'sêåç@re<Éýfüà@±|Ï¥ÅwÌÄ’ü8Q{.“ §/åý·ÓÛøñ³£·ð‡½›Òe ·Óø‘vCHôdºAÚ™o4›þ$Î&Ýöyê•b›D}"»ÅÒìš.R[ª3)ïìÌþmz‡ÀZ„¹¹ÜMíâ)h,µ¯A!Õ>”C  û“Ê~b|7ÄÛé­-ã¿ Š²HÐ8ÍNoãºîô–Erã9/FHWn§·qZßgÊj˜ûc<)ss#_À?Š“¼C?e÷oƒ;»_6«FÒúËzzÂ6rôðì¢m—±ÚXýæð‹ˆ˜ƒÉHÀbèþ,Fg«‚7d¡¾ /­ÛéN£4Ñ™…FèŠ1Ú’ÎMm§Ý’‰ÙFnœÔ5úÍÑÛgÎjÛPÐ'€sö¿"ØíÄÅÞ¡~ã,m¢+Ü—HJJadò|4(È_³ò(¤0¹ßÃNoZ ®tƒ4½ö7w&ªÈ÷äé ±¦ÚÅÓ;7"7NI‹×Ú`p•ÂþmŒI°›NŒ«ÂeøÈ x¸•Ì}¤#e2~@;ö#¿]ÆJŒ›£g<3 ·ÆÕÆ'B ›Œ)H@K€ù»ÇèÁงßÜÈÐñaƒ©…ž“#vz£¹3·0 è:ûÌ,¿áfçvçRB1;½u]ùqØào˜\^Cs¿DZæÖõ\‹SÖ5(„'ªê7w'Ö||hG¨´zfѺÀîƒÙT°a‹ÀÆ»‚JØÆò›c¨?#ÀÞô`Úc§·GOJmØaŒªŒ/º§þ<…Ùs$€Ì&p"ùÜéÍljQUñv‘:™æ£HÀ àà×{EÔ¦‚aaѰÓÛû‘Sp§7QJ˜¤@÷'“ƒH¹õüY³Ó›ƒ˜„f JKïüVÚ®CÑ°Žº?ëøai$€*-t•¶ëÐp$€¬#€sÖñ3¿t^žÍW1¿r,ª5½'&Ðý•÷Õ`Ðå]=Ö‡€†~ñZ@H š@÷WM;›º?¼¨¦ÐýUÓŽÇf#$€·>ì~ ¨ÙU›ì^V€€y0ú3J#$Pe û«2]‰ AHÀ<èþÌãe'é”UC:¬ÊQžñE9F;  &Š(Àd$€„ û¢RÎi¶fõÌÞgäãÊÙ¬ Tb_,]l®õèþÌ%f{ùüÔs¤cÿÐŽäDj‘íµ£F$P=DnúfÊûa%%%Ò›‹îO:+;I%Ÿ"ý]ÜýÛ’SéùÚJ Lè1¤C!öê*L´“]¨ T6Gâšõá”?ÿø]¢áèþ$‚²›XAú Ò¶üÛͯ39—Ì­‡ñÅ„èf‹öž>²÷r.«\0Ñn†¡b$P $Ä^¾d‘DÃÑýIe/1fäëǬ\ïÒ®#ùn/s¤ ðz³á¡°§%ì>xpO¶rÁD{Ù…z‘@¥$гWŸ¹ I4{–ÊNbQ[r¯‘;°;UÒJÒRfúØ©6T‹ª4Ö¾m/ù²^ýú[‰ÑŸDPöKMKh6|Ç:Èe^_¿×,))®ͮGGÁ ln¾o7øL´]¨ T:=BzoÛµWºïƒ¢û«È^NINjÎ|Y3`üë™ ã_ß%,¢·>>'m¹Á¯pbEÚu#Ç!°þÛÈgžyÆ,{p›s=\öØæüác›osnV£0@†N¦à6ç†Lð3@ÕˆÞú°{g« .ùbwÈX°€ÎýY ‹ $P`ôgÿ^ÄàÏþŒ±$`Œþ,€†E¨ ÐýU…^Ä6 $`üZͪ"¼% ¬Ò„…‘0€››+¿º?óðY/mÐÖ+D H XF¿–qÃRH Tzèþ*}b°Œº?˸a)$€*=t•¾ ±H XFÝŸeܰ@•žº¿Jß…Ø$€,#€¾XÆÍŒRø›73`¡((Gý•#lÁªR7tê9”ymHK´¸ žÂŒ=?ÚÍí¯Åê1Öfxç“gÒ N”.lRf"›@÷gŒ–*ðYš°ç$¼6¹ä3«ÛB.I  ˜‘.&Aº¤py&ÕsÒ&jööqdã—uþÓD ·~›¾{ÚI:lb¤¤šP¨Ú@÷W¡]_T”ÙÌ…sný†1[»I:,.(I»Bnƒõ¼®ÝŸÓŒ‚(Š*œÎýUhøûõüì«Ï÷ùn좳"»‰Ñ™ôsÐÒ¿³=¿¢[Mº±Ë¬“3}91Â+鉥¬:ÿ#Ë•ý¤ I8–ËiàrŸŒþ¡ò=ñµÄg\„ž…FÒL‚¶ ÷¥ èZAz~ºgõìŒÎML¨×ƘíŠvO ßxžõütùŒßœ&¼,VS!HÀ:èþ¬ãgmiß9 ð·Ýé{ž˜x®ó¦=›ÀG¤n˜¸¯É¦„YDë5tÕ„zb3÷œœ ÒÔãìâË 9s³Ü#N&€Ÿå¹!Âl+,|änÜÙv{Â7êªÖîö·ì۟Ьív.‚åU11ÚûÓ=›ÀëÑâíf½WQÆ ½6 &áD‡ˆ“ë5_üæ¤nØè5ëäzë¶S‘€ÙÐý™ÌìeÜúu¶nÏ0𓆮X¸gŽKQÉM€ÐŒ­¦‹·T>(1Ô£_8kÅàÆÈâ$F‡ç$.ѳs¾BåùIsú¹Á¹k¿±]¢ÏÂ:5z‹eänäŒ Zψ1uqU@+‚ƶal6()ùFmÌ/:q=hì:žy¬>Ö’&.>Ǿšè±i/Ffð XAÝŸðlXÔ­ß'ãÎNɘ3”‚Caǃl&4ØXS?oÎt1Y¿'F”Sך4³‰{3^>u[îí ïNåçb¸õºç¤Âñ Éê´™úm,(2U î™Ä÷+ØÿQ§Üžð !}†Ô”RÌC¸ÏoÅ^©5%ŸÎõqoBÜ\¼IÒûMº°Ù¸ ¿!Ú#'˜Ù4ñÃÅÝ+wã îÖmʾèÌ.~G—{"1ƒ* jo–ÓaZq–½‘]pð‡cúÅÛèæÛ¹Y­vôåöqžY…`RÆŠöiãñ†b0•XÎ IDAT"€ÑŸ’òLðwÉÚ‰­îQÐÁËœÃ'N¢³ô€Äpßö]¾š?‰¹õ®½õ!P'ÖoÒ®ðÑ!ѤYPO~pÇ5MOa@xĤ©Œ0͆o_§bóôÎ_ $CÌeüqªÄþñeZÁ6ƉúÅÙ\½6[7+?„KaB<ž‘éš<ÄŒ€è†X­˜ŽÌ"€Ûœëá²Ç6ç÷–˜Õ%Ž! Õ~w«†·ÆíéíõÆõÆ2˜‚ʃÀéÔ_' ï‰Ïý•k¬ƒHMOÐ>äˆD€ÀÁ¯tB•7Þ׆çaüám•*ßvl @÷çÀS‘¦ùΉ·ÝsvÌ­ÛŠl Ö„ û¢bÓ4î‘8›êDeH XOçþ¬gˆ¨”0ú+‡nÃø¯ cHÀlèþÌFfe"úà.H TW½ßM¢û+ï>0è€ò®ëCH@CçþðZ@H š@÷WM;›~í àû3Æ€ÐýYM Èƈ>ú°ôò¬³²1 Ç#€ƒ_›õÉ'Ÿ¿}õꛩCEH Ø™FÖfã>­– ïÖ‡óÍ[ÑZ Ë#{@÷'‰°¢äçNÆóE‚ûÕ|ª.›q{òãÁ©pòN¿u’”¢@J¿’ðƒï{ãz½z»Â«OHÃwº;ŸMŒUÊï³…?ÿä"¼XÇg™ï;1¬s„Ø¢ö+z}¼§ÐÀN¡Ä´ { c^Ή6K¨  páÁIõ ŠZ—(Élëª.]´g‹kXçiÒ¶*ÖSfªdæejB›ÀèONµJíêú ˆÖPÉk(KàÕ¿Uáþ„½ ¹Ò­Iw¹BqëŸã¬"ãaoÙ7~ þ؃Äì.ôª·Î6vÏ[õ ¾·˜,‰ÛÝ„ îI#þ°ÓÈ!¨‘ÍXÙ+Æ}ãÔ ×~ßÅÑeZʶ_ ž\^’9f›Öd^.Ô;iw³…»³”bCʼn)—Ü@MIqæFº1¡¼ û“DZ©REIZjp|5•%Nòk'Ãü²µ…çüpù~É’t ¤¦’ ©ÃȺ¥©EC-ÞÌŒÙ߃sž®ýÄܨQåP1fíYA}ßl­¿«DÄ*ºÇªRýèþ$õ¦R¡T*JŸrRƒï;zö!!õT*g…B¥Pªä ¥B®zÝkê+n ¥Ú¿u¥J©ö‘$½T¨(%‰tšãâFüÉŠŒ‚ApÂLxB·w˜n»ÁDV¾_Å«–î÷ýŽï@5ò Òƒÿ×N‹ðãö|`þ¤UG gÒ°MÁ3‡]$( ‡)ò®Û¦­g „Ï»«xõB_¯¶-fH5ÛØZQi" &GŽ»-‰û -ÁìÌMÌÖN\cuf2š£0ãäõÀ1‚±ž¤–ÞÐo ¥3C@ƒ¶b®ÝSI¿^}=¹›òýŽÇí>¾00sëAÞl£ÙBfXivîu÷©Ç5¾ïdÐ*jOÖA½© -ÔB²Í`ó^|&3_¸ëEöŠšZfKµf؈¹^·â{ÀÁ¯$²tX+—åý­P«ê¶iöˆh+8þuP@h–í `ô'‰)Lý)å² 9uÜ]•Nôy%)}¬–Ý•?º_òà~ñƒ;ðÊ»šs-_Üw¸$¬PZú‘fÃ~`ÆkÌkÕÄfgÎBàæêÒìúîÝ̶` 7øLÔV–vPóp L&2;¦ƒzTÆJÁDým\òa”Ç~‚ÌŽé³7{F4fô¾Ð*© `« ÁðØ {ø¶^µ@sëC£Úפ”Þ¿|=&‹K5[ÐZ~•0‚ž™ß‹‹£™[l½šÈšÞÌámÞÔæƒã]4p`÷a?¬m&Mm ?CºAn˜X®p›s=ÜbÛœïÙüeã&õ_­—Wrý¶@©²V±¢Ö“Òg—>ýDþt±¼VÊÕš“?ÞÐìUÃÕݲríR¬ ²œIû ¶9Çè¯,NL¾R©*̹žu¥ôÑã¡?xôäþƒÇðzð¨øÑ£'‹Kd%G6ö}’´£@AÝŸ$ê¡ïÍ•$'(dÑÏ&5a"@6$€·>lU!$P™ û«L½…¶"$`C8øµ!LaU8öæ‚©H ¢ `ôWÑ=€õ#$PA0ú+oð7oXöÓ³ò¶ëCU@ã&¸Íyy÷ªÞð·q“&å]?Ö‡G@ï¿x] $PM  û«¦ÍFHÝ^H TSèþªiÇc³‘À;¿–\Eù°VIII£&./¾ø¢%*° @MÝŸ¤¸w÷îíÿÇŠ>~ü¸E‹NNNÅÅÅéiuëÖ­Y³&¬†ïݼù‹/Ö‘¤…p8ø•Ô àûš5kæíí ïµjÕªQ£Æ…‹e28¾»wﺺº6lØ0íœøæº’*A!$€Ê•FRqC¸¢/^twwW(¯¾ò ~ÿóŸÿäåå]¿~ý¹çžƒá°T]:¹ì”Ç ¸õ^ë3èugóu` $`-;Žùë£Åùí}ZÕUWìÅ:âj~ÒæKuöhYŸS{|O¾×Р¦¢ú*4ÝŸ$üj5}ZÞÁñ]½z<œÃ€H/--÷ÞP’.C!ÎëÝÿmÿ‘3ÜL]yÚ’e\‚†5àg$`‚À½ G_¬8a¨'#t¤®§…ט»{ÓsùàG9÷—ŸŸíæÎ­An„ŠÊB÷'‰<Ýè’ñwo¾ù&Œyÿùç()àYWa*PXW™k€€šÔ}ãm·ß/ÜmUWbȔ XGàΟg¨ï ðÐ\Nu[½±{i‰]cbé`J]çºy9ùê¦îԬ켦®Ž{¡¢û“tñ°„~r¹¼Þ³Ï> 7@à#ø>xgÓ7n,¨KŠâËÀyÁ™ÍçòeÁCaàp篟¸±‰[`09ÃŒ—Úü›{ïÂÏ?]„í—iÚvd0oçAs0 ðÜË)¼×´…‡Á7iö¹ükŒœÛy‘x‚¼zmGz±…5W,\™¿Ôéͻꜽ\c ó‚ÝÀŸæåxxÁ3Rþ*¤WÐýIÂî| rYOÇ~ôõ¥[ç°²N:•x$¡[ž’4 ݇ÐÏÙ«;ú¹NpƒïLWáÅ¿þÛôµû¿üU7xHoÍ \X;/Öé=è5*œ}î§×ÞhÁ¼ã?ÿ~Çí Í´‹Q˜€8;=¯ß£z×!wÔ8d$\ZÙ…*øIõ]Ýë¥Þ¿ãßÇù‚ÑèþÊèL6›õqúÁ¦ù ².]ºïpÞ¤IHoÕªÕO‡~ìÝ÷IJ9¡»AGÏášÓL9çß{&›É¯÷¼ÑÅñŸë:w7vm÷î> w 8 -—3º?sð£ì½{à+ƒC=WwýëJ7æG™ =Àwv[øbUî^älÎý7ȃûõꔥ·ŒjíœîO`mˆÇuÙ{ ÏÁ@ÜÇð1%%öîŽ2Lún¿õ^ãâ8%pa!mGNp£cÞ4Õ¹U÷‘­îÿ¾ïλڋŒg7Žy%u" àU²Å“˜k’™–ÑüÒËÕË•œ(Ì#…ÄË_âD¶x=vÍÁçþ$á…Ñ.ëá=aý <òRPPpãÆ¿ÿþB¿W^yåõ×_o(I©˜Ðý{÷Ùñ—Ñ Õ}cP÷7ê= Ã Þá\¯ɾô»~¢˜fLG†ê¿öߦº¹fȽwá/vÞÙPRúgÿ’¿Î\$î^ŽüáàWZŸ‚ûƒ»ð„³VFÁàæàigvB¼!¸ExüåÉ“'ÒTŠKy¼õÚ1?Ãd³sS7öËS7†@Æ õ]=ŽŸÓÜúhÛûîÏ?ÅìýQÈÝ*WŽ9HÀ€\3uþióÞ3L†óÛÝ{Ã?Myט dõ_ë-ð\ ŒëþN ÇË&ÔTPns®^l›óî_½|ùþýûàìÀÂ?ûùùAègÜqiii#GѦ߾'ò@ŒqILAH \$güŽÛœK%]§N]ß6þ|éÇŽîß¿_jy”CHÀñà­ û¤s—®–ÄbH 8¼õáý€V $PîÐý•;r¬ Ç €îÏ1ú­@H Ü ˜=÷÷Õ>ºê§\AJäêâRõ“õÍ»¬”Èäj¹B² xZî=‰"$`&³ÝèoØè¥GÅÊR…ú¹œ`‰B]*W•Òp‹ªó¿^ƒÀ˜iFUwØß{WeèØ6$ €%îïï[ÿ»ûXýH¦zT ïêGŪ'%œ [J)—P/Š $€*˜€$÷—såÄÅ ¿Ã:w%²wß!ýBÀjðv*¥Z©" ¥Z¡T)”D®¤#ßc>#¤^³âÜzmaRÆÇ©#ia„>mq-#ÜG O/)3·yôp)’št¦˜¶F ¨ÅIþYŒ "{äþ2ÒéÖð[֌ݖ~·*ÎßôëðvÛ. p*5}'¨PÿqùŠ¡µà­z‘8µšz½Ìˆˆx"âÿ ê}æ9GŸð u¸IaÓ™­WYè:M«Å\$€*IîïñÃGΣ"Ø–}=S~3éfæå%ëþšëÚòîýâ瞭ݤapJ•Pœ“yé|ë\Hç^vpWÉJ1W‹”r(ƒ€= HzðE÷tU¥ÅÿÜzœ{AqçOuéƒÜRß~c?¼”sóì_—¶Å&?÷'¸?ü ˜2`üù™¡™zYÂÖAÌoP=_8{ÎŽXÏÏlÎJóô0¹a¬r­"Ãh-ÏÉ0åDÄ0 *H@’û+‘ÉÔ÷ŠTOŠTò•ro>hò¤ÑÔŽÁ­»v~sÀ€­‚;J8–{ã°ÿÏc™± ‰T_ ®KëéâÚÏl ãa8®­ú­WY>Š€†¸ñ­jý™C1=çg^@•ÇãýÒлÆrŽÒq-©L|ŒÐ3¬S[vqœ_Õ7´›æµ*Ý2%X XL@ï œ[DHѾÜ5Yå/HIîOV,{œyê¿ü˜{ñXîå_¯wiñz3ç§ŸŽiÖÔ£U÷nyÙ¿ÀmxîO¨ètãé˜yå72~;èþÙøó—ôCC! Bi¢zZ¯úˆÑ'ù튡rÆÒƒ½ Gz9ó»'#Tµ-Ó<&|•x(*qAàÏK¾Mµ¥fÔ…¤Ð\‡¢¾àBÒÏ“YÕå‚”4÷÷àþƒ…‘OÉdîòÒFòRùË=žoÝ ž~VÉKàÿ'äźÿ‰ŽÞñTÝWMÁö ZÝ<6>ò#SRÕ7ÏÏ·;‰)($þ®Õ—¶¼â ø½3˜5¢\’Üß²u;ø½²3æÌµ[K×{"S?~Rú ¸æÍÂ"X¢8"â ΋ˆàîxdŽ>ßz¸ñ!-ÉLpƒôpfħ[ÆÉ/çÓ¢5Âí’øXx^f•€R&Éç“zÄŠ¤3Ã^u\,¦j=;$–·™XzÆÏMý¿g}_á“'ïÉ¢ªzߟÀ%Æ}¬ûæ芔ÞcWÒoiBRW‡.dÃ'Ãg´&¬Øÿ“KhÙî ¢†Î÷]ºW[„jfŠãŒ ]oê?´JKü90ðØ©s×o—Þ|ôÔ-Ù3Yÿ‘œÔãMez|$ûÒ“yå7×F'ü˜çúB"™0=è|£N:ÞÂæÆ’ñœ.æ wëC«Þ´ãþdS´sp«#žÊù•C>b&!ÅÊØ3=oódfª%Å7qõ;ÌÅv~ÕäÔN܈˜l§Ó1pämÎ÷eÇÈY?bÇÈþ3˜AÊ¡ðî'bö²6æmŽ"ó¸¡tè22E¿ˆ f{6uWš+°o(o²¯hßW{š…²d%hƒe&JŠþŒU/2é³í ›½,{üäÊtxá踑vmñq7.ŒÂ*g÷@Ló@ ¿„FŸ^šVÒ´zÏÄà!C#c¹gYM°Ú³qcíœ3/Ë÷2Rg´¦KªÂ·.Éûyrèf¶âÎt;MXÆ~ ˆïáIÒ¿í¶„]¡Ücg¥Ç„YÌ%KÅòÝýh¨+BŒ53xTk̨奮ž½Ù3<ѯŠs±Ðý•ŸŽÖ°éôNÿÄö§w…tõÍøÐÉì<ª887Ïõycç.‹-ògFµš1¯¶’óÕÁ0v Y|(ÊŸÞª[/ œÄަ…ó0 ÂØ¹ ;RÅyX2ø5Fò㟖'x]9õ˯ùƹ˜"…€ë€Í~XOǰ®.ÍÈ͘W¼èYM›ÐïìÂó'Ù=Åe¹‰šËÔƒU˜@ú·ã’ü¿§SÉUÿ°<ú3`sðà¡9³göì_-¨™u]> ¤Õ¹ì‹ÖCÆÆŒÿêGÿÕï„3ôƒÉ³»ýÀHuÿy'ÃªâŠøõ ‹š=®ïÒ4°[S€F›PÒÚH3ö—YY…yW ´®h_Ô’MèuÅÝDͬºC`áÞ"Nhïÿfì겚$¶Ó[YåLåÿï®Õ[_šRyH ˜MàÜù?`§7áÁïÖèÃÙyì G³õb$€@¥ <øý#óÖ°÷—UŠØÖȉ£ûØV!jCHÀa èÜ_FÂ7¾=';¬¡•Ø0Ó“•¸ah:¨Ü„¿•»Mh=@H@=÷ ¼$”B$€@¥' 0÷W= ÎýUú+€$p’Ë¢ %þùû¦%Ű @VøOÃÆ|èþ¬&j¦ƒ0³4Š#$`3xëÃf(Q@•‹º¿ÊÕ_h-@6#€îÏf(Q@•‹ÎýYØ_7þþ÷бóÅ2yÝžýï+î¾-›‹)§žÅÈ`:¨XýYÈÍÖ£o¿îóáø>Ãú^ü3ûêõs¾ˆ²PCH "`ôg!õ/?Ζ|îÙg:µ}cͶŸåªšêÂbH TtR©Ç1Ü„öÊ|£…Osÿ[ýC¢BUK©ÆPZ*L”CŽ@ÝŸ½ðþˆž|éuÛÏüdŪÏç|³x¬ZŒEÓ¿í±”Ý²ƒxY¹ž[ïÞX΂”óïD$jʉ+±÷ Ëémø ˜(nCáS>Híh¨ÄP>uMhJÛ¨pnMý*€Ã9ß#‹¤èaôši¡¡-ÆŸõpu›¯µÓX’Ÿbs3LW‡¹6#€îÏr” …bÉüÔ.žÝÜó%qE&o~PßW¶aãzŠö8{ Ya;U{„mXÆók‚ư‰Y‚‰â­tí»þǾÌÚÕ¦ÿ¶íË÷cV™.,Ê&yÙé…ƒ\é'……ùÞn}ˆk+)z˜:̴Д]lž®2Ú¢Ñgs3Ê6%lBÇk–cT(ä –®†ò3®´TKÑþè³Ýækݓˠ™CÉ6nKKu:v¹&.Þ¹7  ÓS›ŽJ Ø_¥ž!Ù­é»h]•!€ÑŸÔ®T©”¢3'nð’‹Z¥Þ´u›)-&bˆÂ §²Û„,µ2.­:6M-,€ ÎGô‹uŸçjݳÜ{ÌŠõý™Mà M™Âî€Þ~ÑAº:ã¹í,dêÄør¾ : ¤Û¼]šq¨fÏM®÷˜¡MA [V¨RÒ™$žpcl`Æ’õàÊMš $R úr¥þÎ=¼ Ù–‘: vø¼™ŸíMT—¥§ ¹F¥®‘â϶N«¡Ûdý´ÆûÃçD2ûCé`Û¡ÃUb§ò¤ïv‰Œh²W°S@i5ÓÚu¬$‘äwžÛ‘FRá*zîO­&¥re¿.o×é?pDªc¹¦.ú;¬‚D^þ V./r7ùøà®#ë!$ܰŸ†Lç#¦¤v\¿ë$Î#;p; Gø2)í³"ǼÈ)#zô£¯ˆtVÞ¦ó ë‡f/›Ç¨Õ ŸËý˜¤j& …+ÍvûàˆÎ÷ñ•Àyž¸I.®žloæ×Ö Á†ôŒÄξOªÕf¬GÌBÃFùû·OLe6MÏÈnJNePV…©Ä­1I?éù!%pçý¹:µ¸¾M%.ƒ">lJ‘žXFEôezʸS´ÖêlÓg›§aeI­r<±=Œþ¤2…¡._´T¡”•*ŠKJ…Bª A¹ì"øÛ×÷€îMXQ°pæOεïÈÎ{R¨O¼“e‰SFD²ùšÐÃp; w#±Ô•è©ó£™¦îBÐÐ~${çA«–ŸÛtèÇL®kÿݶÅÒ3ZD Ò޾&¶H÷0a8¦E©çÃIF¢§o8èw#;3ŠüI·LFz€€°…FÒŒ² S :ó?µûBaBÇ×á`¶‹÷‰¯§¸ij½:õqÁÞxó2zôû‚Dk6ꔲÙzp¬,!iH?Ûº?©0r›“+”%¥Jð}OJäry©TÆr®0ÔÝ“’þ¾¿v/A:v©ïá–Ha.!Üß;æÕêÚݸ"kSlZ)ã˜RÝ ºù¿v¹BÌ{!5—uLÖª+la”]Ø$?×È´Vd÷!øb8Eü?¦lû®?Ø·ðÀ¼ýò¿RMàwŠÔ2„Ø”¤ôjQRˆ~…¨¥i£?…JÅø>ù™^òÒ!q‰i.ƒ†µO\ã,ö £'2¦¯&ÐÈc‡l„™" éÚ¤)9«óJ¬B_ŒÑBGÁt"lç F­ö€Üì={™Ü±Üà×úJy5ÐSê˜ö,ÚF¸ ôŸØ™íæjèô Š1Å-4j”‹ 9›ØÊ•ÀyAJl¡çÜáÚYäì"Ó;2ÃÞƒ]uŠÖLÓlYã­ì>!$˜f1Œþ¤¢ƒÇ\@T¥R—‚ïc†½ì«´Ä÷GˆßûGæ} s¬Œ¬×ù#¦ B,Íà«uøú¡S¦ÌéÁÞkéüá‘iRí×ȱFô Ÿé@Oº Æzí{,Žn}t#¬[¶¾R#ÁyDÒ‰?6¦ÿH"1žølš EãÊm©Ìh—ƘÙp¾ž°Ã}Œegí‹ áéÜ_$“ç=fVÇ3_gYN\\ÇĆ…‚[ͨSiz˜f«°¦û´uበè¶9·²Ê¯bstBß®mÛ±þû˜Ïf‡¸¼ŠåŸ”>,.},S\¹’¹ugôO;DŸ}ùûöcA…e%žÿº_¬Ú®¬˜oØ)ög\.5¤]ü¶9ÇèÏ Ø¥ UBj6Üë€ù¾ÒÒö‰R©›4CŠ"$PÑÐýIíš5k¾3Iª4Ê!$àðpð«×E&¿w¥¥ƒ_‹+Ä‚H ”A€üâß20a6@U•º¿ªÚ³Ø.$€Ê €î¯ @˜@U%€·>Ê»gÿýçVyW‰õ!$Àø¿ÿ4â“@÷WÞ×…A”wõX@èþ„¯µ²Xý÷õ£kp",!9µdIDHÀ^j>«xÊíÁ ½Õ5^ÐVîO˜6ø¾gj9Õi9«æÓu„%0 ÊC@%üèÆq§ÛûïՋ~ƒ¸¯NËðšO?Oˆá*§e”Äl$€@§j¿èÖýÑÍ|Ó0úî(óÖ¬õ,Qq?hËÊ»ú‚²fšre §§Jk”Ô$N#zwú¿z ÄT$àhŒãîÏDé~Ì›pê”6çU5N¤&QÕpª¡"*§õ‡k×$5ÕJìñÒÆËÛÅÙ„:ÌBHÀ¡ ûïµnØ«v"ª=”¾?TN5ÔjUÍNJ'õÝàÏ2埆ÿãÓr¦õC\æ $PñøS ûïµ.úS;©®Ý®³6ú÷iÃuNít÷hZ¦ªFÍšj•yÚÉI••wÓÛÝÄŽ—âua@åNÝŸ8r°(ˆIDATžûsb¾2ø¾>vñó2(|äÌïSB;ˆk4Î9öÜ„-\òë«~ ÷6–±uJÖVß7/Ÿºlm;êC6$€îO&ßý9QPý}·|ºXK¿ŸT©T„WJL’—ãë×Wý¶¼^æÚ!ÍÇFö93ÖGB1óE’ž_ß‚©ˆ4•ñx!вv$7¿,*t&º‹7÷Çle Ñø8õ’f=(£bvÒ¥E|¦M?wÃá¬Qö u™²ó@u"€îO¼·5O½0ÔC•ýQA½RâʹP«¦#x'Z{~6ìÅoÉh²e{󸇟†\ßáûf»ŸÛøý¿DvI*ÐbèA4½õ²3¦ºS}:É~´ #Æè¹ÄÕÖò¿3G¯So ´ø¯»Â›ÉèðÎÌ‹T\SWÿAUº?ñ>-á6g$èÒ8lô—~ýXà^©TÊéÿ°}ƒ\X_¡xnÁÆ?¥%_Ll,®—Ÿs›9)½AJHæ7k·¼Ùáš+œCâ¥ß¼7«ÿmBJ~ {3¢å.„dðõ‘¾:¼)˜¹$àÚ¿q>4qVDHÌ{óððô¸Œ¦„[ãûõùÉ<=$#ìÿvµ e )ÉÐTjT¤ù¾™-©}©Ux *G@wïÝŸ¤Î…_à`ïüÂþ†td‹)”êR¹ö2¹ZV¢’•ªF¿7•L I/Êœé×k&=é÷oÍÄŸÏðÌVçÙ…¿‘nŸïûÿR`cÌœu÷€ GµwX1\¨òö\¨Q 1V`=0sÀt2U‹‡œÉ’SµÙ§³ ­£kå†À0 Ñâ¨Èd®lÍüï7²Mì|€ä¡Ý›zf#œU ¨öBe$iB(~vã È-@,@ó½RÀVA€¦Åôô›ÀÛÓ En'¯Ø:Rì4cTÁh Í-þˆ·½'ïC”þf2ŽïßòûÏߟ¿þf%Û}ß‚€¿@­?bM$F’Œ>Üu{ò½Àßú%n Ún/ßñ¬ØF»wrùHó¤²~Z¨ñ 7°á˜ZT³&Üb(ˆºõŒÁe´ HL$ªª!0Züs¹AˆSÛWÿøó—ÁÒÔâÚ²qÝ„ióðð‰"ÊDb™Î9•bjæ î|ƒÚ‰°Æªþ­.` ( l¦!*SëÀFÇ4ü‡”`.ƒiPLƒ7°kŒ"Ž¡ÅçcðŠs ¶ GË>HÐ’Ã6F‹?’£ö矿ÿüÛ³m#¨­÷ó_B\<¼ÑdüüMRëÏtÎÈ<²3P•RLWjåM@-à@ã€h*‘ ÷š°®!Ž®Åôÿœ 1Ý0*2C:F‹?’£ïÇ÷oöi$kÕ0£!0BiÓïhñGr„€µ0±K²ù£FC`4hH¥Ãhñ‡#œ™XÿýýÍÄÌŠCz`…±v™ÖI£¶†À ðÞ-d0zÑ%ö8cæ’ÿòöÖ¤3¯°« Ñ!ðÿÿ§·÷þ³ˆ ;v´õ‡#ê$¾=]ôåÆfң£!0C,€eß{ž°Ñâp´1²ò3*äR¥müüõÂöª Ñ {P%ƒÓÝÕ£ކÀhŒ†Å!0ÚùEÂM»O¢ òGC`4†câ¤ß•CÐHIEND®B`‚PK !ßvTº`º`word/media/image21.png‰PNG  IHDR©pë pHYsÄÄ•+tIMEÜ ,2šÉòtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/02 14:44:50 lim_j SGA250167±ìvÞ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí} ¼Å•~ßå=76 `ˆˆŠ„(I׈ˆ“8@  AÉÈâߨ0jˆËHpþ"Itò̆€ÆÄ˜€£ÆDM0aIˆL#¸€(ð–»ü¿S§»nÝÞîòîÎi.ýºO:uê«ê¯OõRyë‘/ýä˜7ÿý—»éýë¿ûœe¥-^Ô_g‡¶#V„ÞQZR±•L]•h,”FŠie!ªVQü(ÙµUÓ\hÚJ¥RiõŸ%T2TxÅi,¤5 ¬( aEãñh¼ÉŠÇ­˜)ý°á”å•ìá ?¢{ñÉ´•L¢sZètè™ô£>ÊÝ05êÑÔK©cGœ‚º*ëQ6£@:ð—X,nEcV,¦º¹:ª¨ó«R°PYôÇÞ€%ô~>LøP‰\°òÀ>ʸ+BÇÚˆaÛ8.”»¿Œ=zذah‰.j‰üà¶3Vø‘Œø¸ÊPœ:ÚÊ StXa?ÁÑ LS †SêXE”§Ž2ÇFÜjŠFphà× µSÁ#²sÐk¶ã‹›j]jä@0†Û,y*;s®Zž{î¹¥K—¢Ð_Ü:íœÖ-OÏž9ãôOœs°ƒÐ‰6Åe)ÐuO£V%4ѦD|bà5š2Mѽ‹0#ÿ‰0möC+í%Éd4!ˆÚd…vñ©0 -„ö¦¶æVOGÓ©h*⢅R©-Õ66ØA($QJ[¨ °†Þ2EN0ªŒv@½æÎÍ»ºƒâà4å:Õ”{\–óß5ËÍ?—é•o®B=dÊãcƒ ú’ :zz8 ÐÁbÔ±é@HÑ:–Š$Sq5 ™¨¨ŠôH“v]A?•ާ*BKÙÜG ØãPô[\¨i°Ç²D­TÄŠ©ñ Y -dUÃâßd¥Ñáͨª#…VD|¬E#io©æ¶-ª£TC¡[œĄ́)mNµ3ª]rG›Ò µºúƒkûõëâöO-ôÑŸwN[Êê'@©6 i4'GvŽ@µ·jTn€LU.…¡#S䤯‰$SQÐNoXC‡‚{b>œŽu[8¡á @‡.mÔUc“‚S4·øÜÈ„¨H™G»fÄ'AŸ«+M=f/÷¥ WAu±~«Ngÿp¥S1újŒF¾‘ˆ»=QõFpb.:U«…ó¢Ï#<>Sa÷_»W3]ª 5öÙžt­”3ÒHjg A*)túϹˆ@q”ð¨HIQ-—Xš.óÅ@ƒé˜"6Û Ç´«AM|ð?¼ný/µ9çš/ÁÕ‹ê…Aà¾×^{-þä“O^}õÕÀ½Ùi-®!µ#3¨ÙÇ„^cA«Ÿk!¡ê ÑF±h"ÙŒ]jl´z 76â>Õcôb[s¸ÏìI¬ÃÊZ„J„z ªÂŸ:ÛýÏ0/›þp÷5uŒø„„þù ©×TÎ,ù+°W¾úE—BåÜçÑ‘@48§R+!PP’L_%‡¨|@†-}"ЗÐQ™þ¨×©³uu³*¦aÔfí,HqÚ\CWètÿÄ~ú@Àgq¹Ê]š•©\GMokýŒoÎQÀy™ø(Dõ´ºyžÓÍá">Ø‚þÊÁ} >M²Ì°.II =ï¼óˆû¨-ZØ`ø;ÞÖ ÃB×®FÙwƒ[ŽNbQ+ÙL äd‡‡NcÓÉcEû£“\f{»’°ËEsÕ<¶E@hF+ŽÎä-¢8ß,eòAö®£€¹ƒc=_´z#hͦÜÜäÓ gD.þa—}˜ ØÖ}[+¸4Q4ÝTAØÎÇ5‡¢tÛƒð2†½öPÙ&b.@FÕ$ÆÖÖV$_1e&Ö?|x «Úç£",÷0ªm9Ÿ?ˆõ@yL̰&"5#yê÷aáµ4(³©l꘸ëm(ëöf&"‰ºËv`%òO7yPÑZ®ó†hº¬ùf1}öU€}wÊ.2(Wˆc5˜¤{ª+ìʇV‚òÖ`5‹p‰É„evPƽWwlo·ä^Ák³«»²dºßmw Ò]Ðñö@æß ¾§õ±A÷4”4ù‡{´­ÚÈŽâ™»&ýAeÌE£™õ°±þ©_½ÿþû&˜.¤ÕRàÈÂaIlgÖ7WÜ壆žµƒ vÙb56Åm¦zg‡L­1’t[ºŠæL^ótI;`ê{­¹Jq9Ô ,¬Y¨3.Üjj—‰L÷{j>xœ~¬™Ž`)¤sçI‘P+È,£çrÒ„4ÏrƒZ!ãÁ€YöÕŽî¼a®™:u¥tïâƒ"«k1ž:†rŠÉ³›iµ i‡{lÖa=K)¯*›ÞQÉ\äýòÔËñûÏ–G@|ÿ±øÖ®Ü{¶àí!¦Ä“É_ éï¡ïÜÍWOûzɉ–£¨4~úÒïr‘ ÇÝk'E¢×ìDå¼Ë®5“"Wï¤è?,jcó’hdñf{£ùÞÍ:ŸŠ±w­›é>qõßp¹m@’ÌÏ[§zå›E£†å4yB±Gɬ…}Ëö¾Ù®'ñÄ•í¶í¿ÎìdÜ|o$‚¢ðlŽ©lšåZCÍXîÝd›Ýµfb$¢teñVª3»˜]>6ü»X€4«êPd‰V7lŠs Úx ‰€—“.­ðÔ“J :vœÖG yy—½Í¦4ýa?ê–ÊŒgMy—©cÏeŸ³è"Ì .ÎeS ±Áà(3GW$T±ž9ÎCÑdG-lÁìI€øß3?©–žu+nõjM³D×v>:AÙ1Ðæ%H¡“r<¢DM&ÇÀnn¤Ý›^iY«Z6ïÊÄ賤®V1Znø×’©ƒ³‡C²{íåÝ&­ÙM6ú]òHêàŠqý•=nß:h³®®À»î,ýÆ>²éÞˆuÏFDz[Aí›6ÙŽ®²«¼Ëµêúš¹º¼bom¢‡\ñÛxÏ #£“ÖR…û}zE*±b쇜N¯ã,¾~ÚÂ- øE[Â42iýÆ®H¥VŒíç£Ý™þ§ÙÊ—>4UÍY>î*‘.7H¡yÑN¢¥°F:{9:ëΠŸ|Ö}É·oè^¤Õè-çúÃ϶™¦-’Xw8‡'¶ÍB9/û¦Ñ0;•M|Ì¿Ìw RTáÔËEsf‡ám^3ñͺa¿ˆ³!ØŽ))b›oì‚g;œÛ¸ãyÖB²à¾+5`Õ—ÞxŠ5°Ù½©eå½›7FFܱy÷Åý3–F\·¨.ƒžm:*¥ðr,0Ž ´ VÐ$h¶¥¹­t3‹6ÈFt²p¦²ÖÑ©¼5ÛÑç@ÓëèÆšlVC„]Îbái³S¿³¢[~SÇìá¦'f¸Ê¸ª`êw~»8A.}h æ!a*޾Kîõ?§‚Îâ[®×`$h#ú)n¢Ž Ô=^¸Í.¡ƒ,BF)±>4lkNÏÏÚ5GýÙ£`]–6Î%z»$œdºGžxFî.ªRÕ¢v×k¶ÀðÝ _¿“ø\šZŸ7Ì]o馎Þfâ[x׿‚÷ œû¯waXc%¹ÏËÅEù‘ËŽ¤úé³:Éõ-¼pø°óïy¬eã.™£ùw®½¼K4J¿™-Ìq¤¼eqW%ì6éŽð@ŸÊ¾öòèkv½¹öòãǯ´V}fH4ºd‹µyq¬Û¢-ªmYSv¢Ñæè¢MÊ8R›-ZƒòE›¡]b4ºx ©1Á±?ØåªD»×NŽNZ´hRS4Šßåkv±>ÜÆ®²Cf¹#&¬-÷ÅÈ+eaËbeI©-‹¨.Ñèa“îø5vñþ:ýîµWD£‡G£Ý£Ñ/¬ÝÍf͵éÏ)ÞcÝð4*µiQ´IÕWm,BM“Ö ô½†Ç"¼§@—Ik×.ŠŽ¸Á²na§“~&U…Ð$¢ŠB¼h‹$fÌDqí–Ýk1ðVK¾q¤=ÔuuYs—íq7*hm{â9 2â«\rËš¹¸e±Æ‰7ÛÚÒiõ³ZñîúÑoFŒ¦ã5»âð{F",Ç?Ψ×d ¿”… œ_š6ÒêçR8;­Ô]C@os÷6ϵ&bè.Y¢×ª×ÐÂjØÀ˜÷®Ûç⇠—´ZˆÜ´æÛv,D|wç7ÿ—±€ìp™kÞ…\?úb!ÿ$zg¥Ž=}ÂOÛéóItË#Ÿ]yï ¤“‘ ïzôößîwq+½eñqãÓ¾™ÓßÚº8vöªÏ_^ؽöªsîØ”š1œoè*ë Õ xü½×%üñgÖ)ßÿÒËËÇõ‹X[Ÿ!÷Öîÿ¹|Ä׿µéýÙÃÑÃþ°86jÒ‰ÛWŒCG±n¸!¹)õþð-÷ÇFܵæò‡Çõ?yVrß,ʵ³ïXs«©à š"e­úú¯ŸÜžZ]{ùàñlNÍî·öòAã?þ›Ô#§Ø¼¹û uâíÀÓö -60° :Wޏá®M©k©:“N\e},autlY6`üÇ~—zh¸ýÛÚ«Ž™¹f犋ûeÐv” {a!ÙT½“«v`¸õ‡EÑK?±©}ê¾{ݤ3×î\1`ytįWïLéqkj“amJQè:oÙ‰piÀ€Ecm­ºò¬è .©Ú rXtAúSÏô÷‰Íé•Y!hÆÇ¶˜þtwÇ.o›°è=¼Å¸LyŠ–hg|-T®ŽËÐ7ЈÄ}ô >zþá p8½ËA¯L¨3ðf‘󀽂¡õ™˜(~TcgXVo©wØõ»üz(ÙU¾ÓëLD@TŒšñH— Öü|³Ö,WYia¹ë0ax­´2‹Ùš.zí×Y\jz×e­Ð]Ýó¾Å¹ôý SR¨Á}â>@ŸB“ªf WÖ”: þãÿÌIkÓ‰I«=2ü“ßzôÜå[Þ¹~øÖÿ¹!½pãy½éî¡ÿôägç´àuî¿ø'ŸòŽÒ ?}.¾ñ›‘•˜^A+¸×-:Ú‰[aYڣĉĶÝôƒ•Y8¼ïYÖ‰Ÿ¼lNËïî×mõ­M_=ÕêH¢ÐÈ¿þéï^ÒYŸ3æp+ZŸ' à,2‚‡tåT2$xÛuÓ7¬UÐLl|z> øX”ÖjùØ®ôUK½iG½Y•ÎËßwþÚúüÔžiëïjr`lݳi:ÌZ[žAHgh¦µZ>ñ·›þtR}/Øúž6û½ékÄÓ[fOFÆ «—dåA¨¾ÊZµjÀ*Çò„»çÌNmº7:qí®•æÝð¿®#ÁËnZIùóKNM³\o¡á>‡¤æ,WçU}Ú—¸/î‹$ÛÕt4Ÿµ7^•÷Qè èÞÔlÊ<±Ï”M|ÊÅjkz!—ô§$Tœƒ1 úá=\z!€é•§)›¿ÎãÖØpúÙ×OìbCuϰ%c€Iï‹Ù‚ ÔEŸ:û¦ù÷@c^N…œ7¼Êaå…¦aHëÕz%¡܉àkWÕ´†z1‡ß4Ä_@OçNÝòì¿€ENïõ/Zù>p¡ßŽøK›êíŠÎÁ#ÞõQ² ).脆) :`LgH'pÒSܤ¼VL¡DÅA´«Î¨lŸÏ®ÿ·vÚsn}15í4ëïë.þJÕj™v%j±:ZmË`^…KèjĆô#7ᦾ@•Á€LÐÌ}÷q¿D*ª jA½T]uý|ïìaêô‹~‡5ŠÐ ed¬ÝZe}ü¦£Ú¬7UNh‚^¡M$‹W\,ëÎM©nO¸€~çÄm¤ÜÉeÂê|׃{'I§ÏÙuÕÄþ‘qîXg_‚ÌY–mÄ£§åš›JHLžÒ ¹]¨!î9ºÿЫ™8…·°h!L΃<1‘š“EÍ•³ &0”")~c ½ˆNºÜýRê;5 šˆ…×yÒèÚ—ç`Ù¾ú þàm\LS‡‘&©àm6”¨ú6~X°fc6„!Þð¥?‡¥k×®mmmÝ»wçæ jÍ«¦LÂO£g¶µÞf̵òGš½6Mm³ÄtU¾–m²‡ƒt RmBwl|ú–ô=ÿýnâÿðÛ“xã•'?cÍùÅï:z|䟬¬{£­£ý·ß>qü¡á’©ž}?ùÉgÝŒ±{ýGÌWƒš±Êæ>Ü ¢-E‚Ä}©D¢×iÿô¹UWÜðä_Û“ím©ÍË?óÄ禜ÜT‰ÔtG‚~ LÚ~ó•ÿ²îùĉéDû®Íß_ *J´§©Ë%Ó ”6tDõkcîkKµ¡_ZiP* ‰û’ýNùÒÄŸ~fÖ¿¡™äQ*ÑÑû#Ÿµn}z3À-‹Fü”;,TÇztüªMÐÜýÔ•#nE¢›Ÿ|Á|ë†Kþc318~à20µS:Ê"lÉîu_ðÅŸÜóßӆà ¢<ÄÎü"Ò$~~ö=Ö#èÚUQuÙát}P‰|–¬ÄÝkï@x¡ÿ¶ßˆ©VŸ©n1SÏ£#FÍú]™Þ|¯5çiÿ| ͈؈·¿º$^…P«eO r»ˆ‚mTgDº˜ƒžŒííímí­­øµ<Øzp?V­’x NÃø¡¢ÑÕlWtda0¤®/¥Ajþ>èplÐþÓ/ÙN?Ì„ÔΟ&S M§'ãôŠ^ÆklÐálbx}9æ˜?ÿùÏޏù2‘ÚÌÅ—Üêv×]%šy9)H3ÜÕ"Rßxãúfäg¿)x¡ó5-Í0¬·>{Cú眠ڢ½½½­Ç_]YðìÆ£ÎûÏ'n}üªS»}äèQ/Ýz×8dB†a37>6ñß>íÛuÀμçVD¨Æ>œ{_pÃÍÿuÙÇût}p  …"úŒ^öëyOüýšŽíÿôÍÿ¾ú;õìP̪D[w 7Ðvâä¿Yþâ%½b{3å§ÄCèv¬–@ïànòÆ];ƒâ>=å‰7ÛÚ)tCÚè1L4#z[ï1<ó­G'‚‡Ñ~‡-úƒ_='Ž}ýÝ‘›GÛ#zqêžù*ÄKž2{ËãþmT´ÿá®<ƒ„T‰Ô©W=³Ðš?ò#½cƒzáwïV8ÛgøGƒ˜oŒŽÂΠ¦¤žxñï_Sè¡»r}õP ÖIÿ¼iuÃÙê¶ nªà‹5|öÎÕèÖ-êöÇðÉ,ÀŽ™8€®üoýÆ.Y öÀvðhæ.PžÍ§¿¸fW`Fßþ$ÔÝ-k5M7¬?ûä©©Ë rÌWîrÒÔɳ\› 8§Ú¡}U± ‘`›úµ·¶µu€ûè² b:nqº¤ŽŸš÷”Ä0ê cj C†MªùÞ`Yí«khÁš5ØvÕØE…¶Aôjl'T_4L!ìüñ¯¾úêï~÷»}ûö!påÅî=Šy›7ô.s¥–Û…×Ìkc· :îÙ³ç÷¿ÿýÿøÇÁƒûêD&yÚw–-Û{Ð~ʘr‚™¢6Ð]Qã¶AK‘’Òà<êãšBqÌíÜí¦…žX”:,(\è?õ&½Ú«P$ŽDéÑK¥hÿ§NBP+e†rM¥±ÔS”5/Ø5jaâïjGÝpA“¿ªO“3Š»Ùˆš®°PKX?/_ TBø”³&ˆ|Mâ9´ rjKLOO>£½˜÷¨cᨣœØA}CÅŒtKKÝ}GÕéN1(vТÄtMW±ŽMø£B4pÝe¶!ã›§0Ì$…b‰}iQ¥¦öâð±X2F}ÏKh©`¾ËEœKãúá“ 6/cƒ|PþSiêÝH*#¦rÌ«¾KhQ|¦îYÓP9Ô€Åv†;.v8—’S©ÑIƒ×qÒÖR=‘º/~ê¼M^ÿÚ6ŒêÙÖêè÷c³£ë#‡—wÍÃ)ŸÚ™f}õs*„ä¢öÊœZ³]fUÓQKñ©V¶ºRó%ðkBÄДL4ñÃCŒ8Tï³oòò­^2ó"Mõ¬†OÌe°H~ØkdýÁT*Çõ&êºÏØàBŽ0T¸§Î×vRuß $| …“JصtkªÒTº§Öd9 55U…Ý‹Îî¢E·^éö‰û€íjöW¢=©S5ŒšsÀ¦ *WQÃêÌÃk Â)Ž¢…OhÀûñˆÓiH³©´ŠÞ0íàB æ‚Æ:Šo }q9:Fܧ®«Ï€¨Ó/­ÞÀ5E¡Ô_UˆfG*wÒ0ÃöY{NûW³ªæ(°¦¹VxØ|Lj±„ zõk\â:< ò¶3y *¨“ÊܹÕt<… â) œˆ@ ’TX€µ{rGâĀТŒTýõ;wH€Ô'Ñ+’Ø‚©O^) LLØãnLüB¡ F™žVºu˜ËÈ>³¶Íºö–Õ¼¤ÆÞi#œM¹„N=Šð±³YhîRüÌ ë³cuð³D…]‚>»I¸™M»1”È´`o;´Â¦ ÃìÛѹ|²+ Œ;(\Ń#Ã"ŒãáxSÊ”§X‰Ow mœ=ä]í$;ÀÎp¹®ÒµÃÚgÓ[ÅU/]ŠYMýiºÛÐGˆ«ë#ÓÛãó¬£Î¨MùfÔø¦ Ù¸¯eW¹ÜjšPˆ¤²(‚O“f»›}‰¹s‘œ£6UŒÙ£2-ûŠªî6(È_ßñ©ô¡Eº†mskPõ‹kšã Mˆ&ý±Yªºciºw¢Î"œÌ3‹Í}hTó8× àÝ 660uµ´.òL+fokV02(»oeØ x¤‹hMêÑ»P50KšÞ Éâõ¿ö%Þ£…ZÄ͹Ì‚z]i«^tçÛŶàðˆ¯ © ûd×9Ü+×ñRZ¸Øš—W½’ü5¹š¦…ðFɳFA.ÙßëàŠ¡>ñĿٰºi~X³Zž¬Ò`á­åÍÈ-7L—‚ÌúfwÕ%(¯ w¨¹MWRN›.…œúyvQ«.…vƒ"¼å"¤Ã˜Ð5êþá¼`÷øôsØÅ•‚7l¸iî\¯¶HA@¨/.\x饗z£?{ÎzÌË ¸×È2x×W-Å[A@òCÀá>ç©]p_³p_~؉– Ô/qš`'iDà§.`Õ­IMÉ-‹ ‹@œ'òl;HÏ‘3ûáí[õ$YA@hX0oâ¾T{>¼‡ iè›hnÂ|œ [c©˜ x‚f^L¥0﬚~‰‚?ÌàÂ_!|A@hT0‹-ô!zžYÍ{Lk‰ûµÅ¥^‚€ @¨I ðè (ª¿XÔ…?YA j´´´ìÚµ _P+ȃ.]ºôïßêÔ©f®†7UDZó6Ó¤ø¼€šp˜þc,Å™“\‚€ ÐyX¶¬{·n³gÏîÓ§OAÖÞ~ûí+V ûµÓ§sƆ7U>¦2}Çô×ܵ+x1âbÒOLz'‹ T wßyçê¹s{ôèqàÀ‚\èÕ«×äÉ“ñ&ƒÎÕð¦ ÂÇT÷Ñìž]ºb¾DžS@¥ãMj:YA à ;`1ŸúöVŽ©¿¯ÖÚÚŠŒÈ®ódÊ,©^Lå@'8_p¤o tëNÏ÷ñ¼(˜å¸ ïvÈ"ÕC@݃Ìë»ùaIß\¾Âœ5óÍå+¬º©œø*€èè“]é«A´`Ã'£dÈë‹– "'÷™q_P-_Ü£jpK:ýÞ{ïùV%§BP¾ÖX”%H^„©,AIÄ}¸¯8OŸb ê ÂKä‚@Å5xgÑ¥kÊÓq${öìñuÏeê6õ<‡—Mâ "&_¯6oÞl–{úé§›»™BFXsYÐÖ‚LùÖ:\È_¢¹[ÀwüÊÕ¾pÔ$U(78ÈÍ‹}à5½pÑ 4‹Ý@hÏ>û,¯™ìP.ÓŸ^Câ%>vÏ”ƒþ4júñÝ’NC®ÇÂù˜Ê³îù›bâƒÙ ú 2•§'¦n½³˼¯E@)YÒ"ÀÇ93¤ž¯ìÓZÓ—¨é/ˆ¼rÐz<þe;æÚ›…Sƒä^ Z”Å%×ÄÇA û<‡Ï!¥%Ñ3Ì‘Íè±$(ƒÈA $‰}ûöqA:â3£?½ Äúƒ2² £Ë=Ó”™¤£?oñÜý(ÈT8 ù˜rôF¾¦ÂKçT/ÿÆí/œeçv_0ÈǶè‚@IÐ×ûÎ;ïü_üâÙ 5"A÷=è+ç¸]Fôç¢?ß,PvÉ](@Xl“騛EƒdšÒ¹\B®í„˜råòÝeúÓ·¢üT…ÄÉ?ÌaÀa of ‚@ÅСJñÙ¦?oté^¹&>P€®[Þ,¾¦“úbÊó1ÿ±˜¹°ÍBÓ~)_Â…QB?°è?ÌßÌãßðl’*eEyÞqŸí˜Â÷6¨iŠUMâã›^úËÓ®ÇyéÏu.OSùàék*ŸŒZG³g”>Ò–¶Ú’V[ÊjW?°¡û‚AA¶EYJ€æ¾|â>.Ð5 Õ^˜r/ñ±ÓŸo³6Þ"\ôç½AáÍîmxA¦B² |ç £˜·¯ ¶·Yí­V[«ÕÚJëð\- ·,©‚€ PbŠˆûàoXäû‚|ýé‘oA¦4ýy‰¯ó^™ÞúzT—ÜEqÌRŠ_»úV]ûK[ɨ•ïuä §¨ eC@Ç8¥û@pýnñÜØåz •GÁAVœéÏ÷}Œ ,¾rïÚÅ}¥ÂsÖSÜ—hç Ö©æH"‘{öˆRy vAÀ‹€: í.œ{ ç+5ï:“ÛÌ¥¥^¡&8o¹03zs!ÉW¨ø_P._SABêâ[… ! Õ÷yã€û©d’.­ª¯u¤Rø€‘\ñ BOä‚@Ùhjj›¹Çs JÂŒüËCdDvÅ4•§fÆ’˜âËj*ÏJi5}FQó3ý©÷‰øÔ·Ú°’Eª„@ïÞ½{ì1Ì +pAdDvíxÛʳ‰4åiý8½ÑÁ;¢QŒ}£p!½<ßíÈÓª¨ ‚@I˜>}úÒ¥K—,YbÎBšO ˆòzöìyÝu×iå†7•,L|¼ÎŒy1™¾×ÅdÍ cœJEðù0¡,‚€ P=Lþê¤ o*|ô•>½os€û¬æ.à=¢¾tßêHÇšd¿|ðA@¨4ë±ÇqLXúëÚÅ~À×ù0i³q©´n*&Ž ‚€ „ŸIqLX¸¯Iq/4g}æ6Q)‘ ‚€ POhúc§ã¸°‡)K»8UÊœõõÔžâ« äB€ïr°–q½O}¯—÷ô|¥<{³ËÚ}´ä²/é‚€ T믚ašþŒû¼ŠõÌ[Øõ½Ë;ÿ_gæ_’h ‚€ P>ܵ¤ ãæ€—é/®ïsœÈ—û *I”A@ȶ¶¶·Þz _ onnŽOס\wf!Á‚ç·>úè|,»tÜ×û˜û\Jzü[D’EÚDÀ$S;ÂcôåÁÀ:l_²dm`¢$‚€ P;èë}z£ØÑíÚ¯FN˜5k\$rö’íNý¶/9;òUM‡´g/¶òèEg v-èЮ©Ê†”R–Ø.?##A@F³]ou9™Š@ÍvÀ¬¨§j¦ÃÞ,ÚB–/F¿ZduSÁU–ª áp@}]µÈv2“ÇFÌ]FíôbñD(æ;ýÇ}k¿:ÎZ³mñâ5émó†Únl_2eåÄmßK»Ä$'¼<e©åakµM‰g-ÞF‚m‹­YS4iú }*7öÛlnÍ4ËÎòüÌ!JÏÞE2•ÒáënöêZ+8£.eÈÌç•Ù‡ÙâYgm—Å~Z1°j>ˆ´·kNu‚ÁYÙµðÉÔö%ßÜ:mÚÖoj@ó¨o¶uĶM\™i!_D$ÔàøËkvÜæ>& 3!¬^Û_ÝzÖ°”Ʊc™~¶¯^iM¯¶Á‚³N]£hˆ—!3gêmÎ5sÞ´V®Öc°Ð1QÈßm/¿à¸gyŠÎÓÐÄy‹ 2Ñ™rW-OûJmì··->ë;?-ôÊÁlôòsçN´Ü€æïŠb(äÔY u-ÿ"ES¨4.ú+*î2ôÔf-\mºnRßê•/Lû\6ÙU´–c?7í#¬,®ìèØwG>¨ei«6düÄ"È/«F6ò°T<ùù"v°³¶¾š}z*JÉ%ƒ@Óˆ&X“9 OÜ $Æ j5 ×ûô¸‘éC9D&vÀ(í;gÙQ¢Vñp‰_ÀØQ-ìÜÃDþãÖüŒŽý6ƤnöËYµülûj¹já«CÂ, ôI'/òÓE0\ã¾câ‡á^Þè…$eD”‡¹D/^ŒuIèO³qáº;îËwØ«Æk‹§Yã|é%𘱽0&v®ÕY–¯° Xõ•2=ÎÆõ;º¬¸Õß¿<+ösû«–§M¯š>QxkáRöʈ·‰üÜÞºKË\RT=—8õâEL?7|²_@vèwÝuú[¾|yçéiM³×ÂyÆÅ¾mYàƒ}ŸûöšižëUaã8ßÃÛ+ÄQg€ŒË‹–Tæÿ™s=Í(`ì\Ðg&x «šË­üª@ƒèü«æjíÂY/èXî„Y/XžÖÈ-ÒÌB,;–/Ìh E"ÀÄw÷Ýw÷íÛwðàÁýúõ{ê©§JEðI‡wY÷:òu6ódŸ¾ëaÆt-þ;fÀUð“€ê‚¢3ܤ㻠ë‡k—8w<‰Zr¿Ã+Md°uœæ_µ|ª°ö«gî …»â“ºö§ßɊ䊺u»¾ˆw´|Š‘ PÀM?üáO9å”aÆ 0 8pàÀ­[·‚þ:Y f=¶“5G)Ç„s”1d¼5%yZ³pè=O—ùhÀ5eõö™üˆ]>v6.¸±!RÊaÒ•L#ê³O8!2‹ä”=üÖ …>JUéÎú²®Ã´5iû9˜pè)ºø5eÉøç§v8±ßÊØ:$Usù0$¸ Z“xËðÎm!Üc¤õMܦ¯²ªV8kÖO×~{l8\Ãcý£°ïs†qO.e@ÇîW\á5l¾îæM —ð°Ö¥™6mÚ<©IyóçÏŸ;w®©Šy\Üs šÛf<¼ö˜b=œ¹ŠÖ8Òœ5Þ@ã^qïób.ƒ<çqY¸pá-·Üb~ù_5ùÚ×¾–¹×á sCëztñî­væÆjî"K¨áz÷¡Öü®²{j4>/¯ˆ¹„m"¦r"àÑfy;Y.Ý)줉Êe§w¾]¹â -©ÊîQñ…º,ú‚@m#à ﲞqqݮ튈w‚€ Œ€Ï}^m£àÁoÁ¥KA@ªƒ€ùf]ïÖ«NkH©‚€ PqŠ~¯£âžJ‚€ ”7÷•βXA vî«Ý¶ÏA |÷•[±,µ‹€p_í¶x&åC€¸Onï–_±,µ‰€÷ ýÕfóˆW‚€ P&²žï+SbVZC ëzŸDµÖ<â ” ÷˜W^é-ÐbVj ›ûðŽ›°^M5Œ8#eE 3æå©MeØ[V¸Å¸ Ôî1¯kz¿ñRÜA ´dÝç• ¯´àŠ5A@¨YÜó6ƒþ$ô«ÙÖdžG€¿Qé­&¾U„ÏõzåEKJi«h'$£ ŒÂ¯%K–´··c|×½{÷£>ºwïÞ\pAi!î+-žbM:…Æ3gÎüÁ~€¯©qÄø>/Ö'tRg¾QéëPֳ;"A bÄb1Ðß•W^yØa‡õëׯOŸ>L|—Öá¾Òâ)ÖA ø;^㺢¼K/½ëãŽ;ë’\”1o1í$yA ´p¸§o´‚þpÓcäÈ‘&ñ13Q®ï,Â}E )YA Ä€û@sæC&Þ»ºE?‚‚ŒL¦…̳;ÔXâú‰9A@üpT˜§8Ö+:âÓE±5“å$îók‘ ‚@eá¾29’Å}ò`s™P³‚€ Ž€ï#,Er}Ë⑯ýÜqdðë œA |8p |Ƶe“LÝÜ^|[[[¸‚¤ ‚€ P­­­xz¹ ,%Q¶¹OÓaxзsçÎÈ¿”Ü1XøÎZˆ ,Ì€¾š•¬£›ûÂËvÝ‹÷|„à‘ã9쎎—~\[Q¡”—}M6 /½¦Rñš £Jy7@5åmgœA£%¨#uÙr¼ZÔß$o#ŠàÔp˜$ 澪³ƒV÷ùÍÄwÍ5×<øàƒ^îã, ¼dÕ§Å×HÝ ››c—\<æ”SNùÖ=÷š—\rɬÙs‰†â¾$Qy¤îÚH®pÊ=zô¯~õ+~M­*.ù²mg¹‰ïôÓOŸ8qbh­Òù‰ûÀæ˜^âì³Ïvm|ô£UƒÄ¡x´)7\,ZâY4B{‹$6û÷ï¿êª«¾÷½ïQwªÒ¡¡éO=;Å} r ‚N;í4„?C‡ i. lmæ«RÍC|+. ü†){ôìéÚ8ò¨£˜ä‹3[ƒ¹ÐYÑvé´LùSƒS7.a ÒÛn»íÖ[oU‹þ,M‚å>>úЇ÷ánFH;TK{{Æü!ju”tä‘öI|°ŸÝ67öí{¿Žêî*z*š­{÷®áj’*!€iÀ€`‰µk׎;¶ºÜ§ì÷È0Œ¿îºë0£t·nÝ‚j9_ïÃ͆¹†Ë—\_߆©&ꈞŠfK%;ô!--I‚€Ì?zê©§üñ'Ÿ|r|ì,÷ÁÄÒ¥Kï¿ÿþ®]ÃâÅ}D| ÷¡:ýû÷?üðÃ]8¨š6Hx‹öÅ=ªd"‰¼§K‹@È aÆ!îÃõqà>ß;y*©’›û¼Ï „Ç7vg̘ñüóχhrÜFhR@4ïâ¸6p]’†©&Ú”«Ãg†4±$ AàfÀ™gžIˆd²Fˆ®fq_¡ÄÇUeúÃ…?T,¨ò‰dR]ñkm˜ðáý÷?8éäSQ_ß þÊTõ%ëÑéZâ¾új¶šñ”7}út>ƒÖñeq_qħé/èÉ>VhokÇåð>îÖL£tÊ‘ÖCdZÜ ç¥QnÐwªÕ%sáÔìÈŽûò$¾üë×ñd#®t¾ûî;=z…ð¡aâ¾Âû@}çØ¿ÿ@—.]\/öÔw•ÄûŠ#€¸O//Ü] ûzŸ;={?è¶\¨ê!Cþüç?ïÝ»7DM’jææf<ÌTSc–GìÐt/gaî895Ë q_žA4‹ _QK¹k"ö+€®cæß[*àQkTÑò¤°¸o2äoZ4A@¨Y à¾w-©Ùjˆc‚€ „@¾ÜwýµS ²+Ê‚€ Ô¾jäõiqC*Š€p_Eá–ÂA *xC?ᾪ4„*•FÀEÂ}•n)O*Œ€~ Ú¤?á¾ ·‚'ÕD óʼ¨£Ç«‰™”- „€Ä} Ô˜RA@EÀŒólî“Ð/1IA@s]æÙf¡¿i[©† 䀌yóITA áîk¸&• ‚@÷å’¨‚@Ã! Ü×pM*<îË$Q†C@¸¯ášT*$y Ü—H¢" ‡€p_Ã5©THò@@¸/DEᾆkR© ä€p_ ‰Š Ô9Þwv…ûê¼IÅ}A@( á¾¢`“L‚€ Po¸B¿|¿QYoÕA@p#à3Ÿ[EöA@hhdÌÛÐÍ+•„û€± 44Â} ݼR9A@ø›pŸt A@8î;[]ê,Â}ÒA ñÀÓ-ò|_ã7³ÔP|(ìù¾.îAËżækÌZ?+8Í?Çk0hÎ?K¥¡Â} (^Ä‚€ Ð00æó^»nÕTkÔË®\ªª¾vÝÞuÊœpS©0;‚€ P¹¹¯0{¢-‚@= P÷©0íYj œ=jÝáÓÀ–—Yë Ê;kdØåpë -Ö†G*w–Œäâ¶gƒIªœÉ±MCrXÌ*3“Ç 0mw‰Ùû•ÖCâ(ˆûPĆ_¿˪©n¼O1–.´–e ×ÏùøeIqï*k¡}©pÃË'Bkñ;טŰ‚Ñ4ÔHæÍÉÃV‘eÖã-v.þ3øÚ¹S[VÛå¯_Ý2u.¡a‘‹œÚâ”™•˵ã)qý}vy†—a$Mê,îK§Ó¹*2êÎëw?Õzy»}ûù¨…¯m™:„aZ6¼²C™uÙ%Á× ½Y qJ#ªsy†²lò[¿úeÛ)'ðC8™Çâ-ñøGµLÈÜ…•òeÉ<Œ‰Š ÔYÜçzþ¥s5™ª"6µèP/‡Å‚²Œ¹þΗݽöÀ—™S1``©B7Þ9*GINrv‰t1æt0vf@§%QºB Ð1o~•_0Æ,Þx§Ew1ÔDaàªïux³ŒY¼jjË20ݺlª·"¿––aãí ˆ¹Èé¯ sÇ}êú 2Õcµå˜ò”èÜ+ÁeF›O½…ŠDÈ´iÓ–.]šL&uu¢Ñè­·Þ:wî܆¨ TBi.\BK$…x<>cÆŒÜqß! ›T^á¾mX©– xç2î“"‡"ò¶C±Õ¥Î‚À¡‰@aó¸šI­A ±1oc·¯ÔNüîóÇE¤‚€ ÐØä¾Þ·s×ßÞÜù·½{ßkl ¤v‚€ P_ôèqÔG9ºg÷âܶ¹—ƒ&28üðžþ¡¾½*®É%‚@9øû;ïí{ÿ@Ñ–3qßñe@ß{ïIÜW4È’Qr еk×·Þz o\477ãÕ2­Ía™y–ŸÔkmmí{ôÑá>÷õ>ï€9\–dA@j“=ÙY7÷Õ|ÄAA@J€€p_ @‚€ Pwä¾Ï[wU‡A@ð"àöJÜç…H$‚€ ÐÈ0 ÚÜç{{·‘k/uz@S‹bê=s‚ÑRy-q_©;‚€ Pb@y©TjñâÅX—œþ„ûJÜZbNJ‚ÈãÑ»îº ý-_¾¼äôgs?@(#ß’´™N"ÀÄw÷Ýw÷íÛwðàÁýúõ{ê©§JKî÷:à±0`'›M² ‚@' ýð‡?<å”Sz÷îW>šššýmݺõÔSOí¤eÝçïÐ¥*Lì‚€ `¡+®¸Â«i¾îæM-HâÃ}åeA@JŽ@,c›|9®™Üë(y«‰AA@¨-@¼˜n ÷ÕV#‰7‚€ P>ÌøQ¸¯|8‹eA@¨94ýÉ{5×6â T̽y´¥pK‚€ Pyëá1Sœ&:óV¾!¤DA@¨<Úuy«àˆ)‚@õðy¾O¿Õk)Yʈ€Üç-#¸bZjf@¹ÞWãÍ$î ‚@YÈÌãbFƒe)JŒ ‚€ P3dÅ}B5Ó.∠t8в?IDAT ”ó–_±.µ‰€p_m¶‹x%åEÀÍ}öÊÈ·¼‹uA@¨8^fóy¾¯â^I‚€ ”ßxÎ÷•±|1-‚@U0IP⾪6….•E@Ó_æù¾Ê: ¥ ‚€ P9¼Ã^óV})Iªˆ€ëv‡p_ÛBŠª!á>ï=àª9% ‚€ PÜ×ût)ÞQqy«‚€ TóV})[ª…€p_µ—rA š÷U})[ª…€Í}˜§^¦ª¯VH¹‚€ Py²â>¡¿Ê7€”(UA@ƼU] *#`¿Ï+¶T¹¤xA@¨,÷Uo)Mjá¾ÚhñB*‹€p_eñ–ÒA 6î«v/A ²÷Uo)MjºÏ«oòÊó}µÑ(â… ”¬¸Ožt);ÞR€ Ô2æ­v/A ²÷Uo)Mj7÷Éì͵Ñ.â… ”7÷•·4±.‚@m ÜWí ^‚@eî«,ÞRš ÔÂ}µÑâ… Tá¾Êâ-¥ ‚@m ÜWí ^‚@eî«,ÞRš ÔÂ}µÑâ… Tá¾Êâ-¥ ‚@m ÜWí ^‚@e°¹O^e«,ìRš Tû;mì…ÌaUåÖâA RØqf-•‰K+…¹”#ÕG ëzŸ0`õD<Š ÷:*³"5†€Ü먱wA "dÅ}r¯£"˜K!‚€ P}dÌ[ý6A ò÷Us)Qª€›ûdØ[ý6A ü¸¹¯ü%J ‚€ Tâ>y¡­úí ‚@e¸¯²xKi‚€ P÷ÕF;ˆ‚€ PY2sð]y«·²øKi‚€ àƒ@2™ôå¢h4gÍÀâ“9?‘ÛŠÜçÍ7Ñ2"â[²dI{{;ÊßuïÞýè£îÝ»÷\PªRÝÜW*»bG¢@6sæÌüàMMMGqDß¾}±>餓ÀƒEÛte,™¡R9$vA@ˆÅb ¿+¯¼ò°Ãëׯ_Ÿ>}˜ø /8Â}¥BRì‚@gàçíxëzˆò.½ôR¬;î8¬KH|pTƼm-É/¥B€Ã=}×ô‡›#GŽ4‰¯TÏ#Ûܧ ó½·RªŠ‰A@B÷æÌ;®Þ»ºfjˆ©œI6÷1å1¡ ýåDMA ¸ˆE€”ÀH¥â;Óç¬1o™Ê(FbS_îc,yeåz_É!ƒ‚€ P$¾°”#èƒÂ}E6’d’#pàÀ’Û 2èæ>ß‹}ç½¾½ 2!rA@:À‡?üႌ€— Òw)»¹ÏkëƒöDšûþõï{½I"A NÈÍ}ú¨Në&n ‚@c#pD—îEWÐ~¯£T í‡dA ’ØÜ§Ÿï«dÙR– ÕB ó>¯ï]Žj¹%å ‚€ PVd.ƒ²Â+ÆA FÈâ>y¯£F[IÜR#àŽûdä[j„Åž Ô"nî«EÅ'A@J€p_©{‚€ P÷ÕC+‰‚€ Pjlî“g›K ¬ØšF@⾚nqNÊ„@î÷yËT°˜²"ÐÒÒ²k×®¶¶¶²–Raã]ºtéß¿ÿÔ©S;_n÷ñò˜Kça ‚@ux`Ù²îݺ͞=_w¬®'¥-ýí·ß^±bjwíôé´,q_'”ì‚@-"ðî;ï\=wn=*9h€èÕ«×äÉ“.\Øù²äz_ç1 ‚@Í!ÐÑÑšhmm­9Ï:çj„z¡v3C¹óûþó{ß˧°/_uU>j¢#åF¯òúU©*•/÷¡¦}å+ÞÖÂ×3q•ßN¥Rßùîw½ "A (lÌ»î™çÍßÿ´ýGÿúßîybçßÞu}Ké‹q©¡G‹xÍ¿Òëg§ùçx &ÍQ˜ +Ñßê¡%͉aap„6bÁÍj­0ÇDÛF€C¿[—ªu ã>”:ðÃæß±|ܺ_îøÝÖ];þò¶‹û®]·jª5êÎe×.•§ƒ¯]·w2ç{¬Ÿ5¡eꪽ¶J© -£ßZ”±<2Á0Ÿ‚:ãagš£3åæS¯CH§ÁX¯´£øƼf—‰F#½{öxnÃkïîÝÜÀÞ=©ƼÕîS£N<¾Ú.Hù¤9¤7Ô4Ç}Ý»wíÓ»G×.ͽzùøÏo Oú̈ö\Ku@ H]ƒàž‘1 Êx™µž,RÞY³ Ã.‡XOh±6Ü8RÉì%#T£b3—eelêÊÔz»,˜Ñ*žAu–¦N…4ËÍÀ3µÈFÀ·ª2Þ: h˜}˯â| uVÙ³Öçöðâ¶ko ·¹¥ì6bÄ|ár®†¨Šd®Œ¸Êõñ2S¨l…"€( IÀ²nVÏž=g­s¥îXzqÏž/Ý©6Ä¥º×Q÷}¨oŸX¿úíýúöúõÆ×ßzgÿÀ=GŸ9¸½­=´6ÜøÊø½XVMÝpã}cm¸q¡µ,K¸~ÖÈÇ/ÛHŠ{WY íbÃË'Bkñ»€1‹a£i¨i™•ò¨Ø²t.ؼqÆÂX6Þùò}˜eJo™Ðcºr$Û=]!GsãÖÓÙ)”§–US[7³Jô©E6¾µ@‰ÞfƒÀ¾ù8–GÅ9¯j°ŒFÐæöp™õx‹ ’ËÚñº¸9üà ê/Ù宿Ïi<£µƒ²ŠÜƒ@ؘ×:óÌ—¿õÀSeý}7¿éTX¾ª§yjY¤ 0îëÿ¡>?úéï~ø“ßþßÎ[‹ /òOcOÇÉ K×®¡åºózÅ]cÆOµ^ÞnŸä«ZøÚö—9 CL5¡eÃ+;”ÍQ—]RÄ5C'Ùœ:ž‰sðµs§:VõµH*ÝQÎrOWÈñÓÌnG2ˆn2j¶ŸµðC “ÙÞ öÖ?Çt]M©¢¼N¾öóÇ7L›óò,2:Ix°ß^k®šùÀå©»¯àøGµdÎW¾*",“O¶~¶Î¸ùÔšïéK_*Ú\-;ç)µ ¹j E…qßž={g}ù<ÜÖ¸iá“ݽ·oï#.8ëp_SS‘× =5¡Ûö’ ëp!œsðõ«m# µˆ“Œ/+JJ‰Db_ಿÃJ¶í?ó¼ÉßÿÙJéOþ$ùé³ú°œgÞ²C-MþþÝ÷ý4î»äã?ùôÓ,½åLH üÒÖAÿ¾cöž¸þãó†<¤Ÿž¿õòK(Ë‹i¨EY=ïgG}ôõO°$\nêØÛ¨WIZº0î‹Ç¢{ß}ëóc?záYÇ_4ú„ Ï:áý>Ø¿ÿ@,ææ>„FtG¾>–§«cÓ55ÜÅPKà‰CS×½Žûdóå Ê ]Î*"˜5ìŠ;zÐuC•}Ìõ¶—Ó_æ÷u¦yëq, †pS^'Á0«†9à+ì}q³9žÓ­Ë¦Ú%z­®øÀEÃe6ÒcµåÑYŒr»$À>÷x<«ú²“çeþ+÷·¼nYÏ~wÁ‰3¦23=;ïxZ®^ÎÂןY½q²KŲFŽ¿@ezý/¯X“/:_©š:còÆí¶¬ã†Œ\~õ2Ÿ½ Ô‘Öò«ç=›§Ü¿4û‘iÓ¦-[¶Ì|:æüùóçÎk–€wÚô{PÆëPÃëXk5¼×Ñpï´áà[xâFçJi0/‰•âC®Õãå¶AIZ ¶Üzë­wÜqÇ›o¾àæ/æŸpÿñO­œ:èõ–‰s­ãÖÜo-ÄžåÈ­–‰혱mÁy–R@ZF¢Mj#à>­O©Hxê"ÊŒ…Rnßtùƒ¼Ë{#n¦¢Mׂä>îsÌ17Ýt*è“æ'ÂÄ ,pQÜôéÓÝñš_^[&¯¬…€SI`Ž:ñúúðU¼,fhâ2G1 ]O;vÊŒ¡C¯¹}ÄÍëUÚ¶üõí›F ÉëϬÙdÃÆ óǸýþ–«Ï’!-Lje{ÜPëöõ¿øÆ¹ç‚í¾ÿ‘I3¾a~ì”ë­I_ÿó_ÒçZOúºu÷«¯’Óµ×ä%@ ÄD¾Ü×p]&˜DO°Ü¸ž Z\Ä]óFDDêä pî57°Ž3 ¼̘¡·[#&MÁšƒ¦¬xpûP’a™ôà« @s™åÜëož4fèP’€HWPâsó‡^³B©@oÊ ÞÍdS[°ì+w©•x7_î+q±uc›9OÖ–Ï:F7L¯­­ˆ7eF‘žÁ(dômmYœ>ðÊå·Ù›––Cø§+3™Y©ºÍBbÁë®f¥ïRp¥P±1š×Ôîë z’W¨i‚¹¯¦Ý®Œs…Ýç­ŒORŠ åF@â¾r#,öê :æ­ŽK%)UƼ%QŒŒ€ŒyCZWƼ!àH’ 4,ö˜—žÓ‘EŒ K5<¬)TŠ«”—â⸟™QYA ~hjjÚ³g^xã7ê·^ψz¡vÞ¤ IÅÅÁzø%|±l* ²(rA@¨Yz÷îýØcM˜0aÈ!5ëd޽÷Þ{¨j—^¦8sþŒv!¤¸Ì‰ûò‡U4ÚDï«.]ºtÉ’%%ù”míÔ&œ¾îºëòw‰ã>“âp—B{Ìk~éqŸŒyóGV4ÚD  ‚¨Í*”Ä+æ>“â÷ùs_³p_I #‚€ Px¹¯‹É}f@Uóò_ 8/.‚€ P$`3ü̸ÙÓða6+iÜè¥Kƒæ}ß"K”l‚€ T Šs¸Ï¸Â—Ž ÷U¿ÁÄA@( 6÷y(.Ž©fRi+‘²p{——¾Á!q_IP#‚€ PmìY1Àu<á§^ì¸/… ~ùIÜWíÆ’òA ”0ÙÁ¢Ô©¸/eñ—"ŠþÒ1’È"‚@ƒ!†ÓôO%-üÚÚ(ì#î‹X©&á¾kq©Ž p#@_Ôµ"δ-úâ^<‘H%©Öƒ)úàn$ŠÉ®V²4À<„á–ª ‚@m @ı̫¢JïèhÇoÿ@ŒXÀÝ»v”è뿵QwñB ZZZvíÚÕ†1N-]ºtéß¿ÿÔ©S½u:ÔêëE K¢ã=Gïho÷íÛ·W1þE;zD!ÌaH’ºBàe˺wë6{öì>}úÔ•ã9œ}ûí·W¬XÚ];}º©z¨Õ7&¾”ç¢>ŠûÚÛ[ÛÛÛÞoq_4†aoû‡º ÷…@)IõˆÀ»ï¼sõܹ=zô8pà@=úäs¯^½&OžŒÏo»µúá“‘›ä§îw îkOИwŸ÷E¢‰ŽÞ`ÃܶDC¨0 h¢Áˆð·¶¶¢^ÞÉZµúæì‰ž!¯…{ÉD¢õÀºÜGw;À}™o¿å4+ ‚@ p¨Íc|¨Õ·Ð.ˆçûhI$Úí»¼‘h*•Ä­ßB ‰¾ u„€ý½z¾%ób‡¼ÒVG-(®€@qŸz( €S=Ôê[üñX,Åššº(öS $úAÀ‚Œ‰² PÛj\p¨Õ7¨÷y/öA37á×ý°#(Y…$)äS Aå‰\Aüæš¡%ÚÔÜ¿#Žìqø‘=h}D¦æfHjÄcqC(‚øêvé×ëfá#¼\¼t‡cR½·céÅ={ÎZWú¢S© à®sõU{ªT"ÿMd 6TßœýÄýÅ›»tmnîrd^œãÞ.Íø×5§!Qꢛ°š>5§ÏåÿûÍ oO ­×–=ãÓé kiGMž¤¨é©9güô³¤Q‚+²8TbÔ¼“yûí‹”é×–-[ŸžÎÛÁe’’A¦\%Ð5é/Ú܅㾞GÅ?Ä}Ć%(GLÀkËîùþ—Q\GËàé÷Óš÷ÿž2*&¹ÜÊhÔ<$¯-›AÄw¯&»ÁÓKJ|Õ€cÞæ¦¦øaGâŠýºÑ=Þoj.àÓ¿Õ¯Šx ä‡â /;Öýì¥/û”aõ¸1Ÿ=ó·ïpB®usFý쳿¹ÇÔ(± !U/¦$o+píeÎSJÁØeËléØeTgµìX66[Ñ-P.;Ú…þ ©oAI¸×›V7gŒ‹(=#‰,‚@ƒ!H$öíÛWâJíoKŽÔ7Ë.D/mߺo_ŸýÖKóæ½4ù¡}J_p¦‡v˜o¥Š¬¯OlógÞ²cÇ-Ø~vÞñwß7õÌ©ƒTÿ8¤]½ø‰Éß<ßz½eÂ…«Ç?½ã‘A*jþì¼ÿäÓ,xvÞ„ûþpæTdL¶í/” úú‚"ŒÆ¢Vd׬~MVSÜŠF3s]…ä”$A@ 6nÿ³ˆ‘CŽcÑÈùÍåê -¯»5jzß§FÊ_-W/Ïx?rþWΧ½ó/šl½òTóõgVoœ›+¦¾Þ±ý×[&^~pÛ¶óÙMœ«îΪ Ò g›>ÿ£n¨k¯ g]þ QýTêFÆ`ïK”¢n¬[Ìu䫲lÏè§·ÒIšµ”|/u)Q-ÄŒ Ð) ½´”‡þ±SfLzäšy¿°U1ï¢Û­›¯>—vÕ1†¿ç~cýͯ\3±å/y˜+B%‘"¬¥Ó\£t•ÒiiAõþ²}ÓˆãÁâ_žY³‰¯Ö94+{ìùãFÎ9êÕ':à7$qÅÒV ão—9ë}1¡ à‡À¹ ^}pþСC9mÒƒ¯®8×­6hÊŠ·3ÉZ¿bŠ1t«ÕÊ>j´~Ȥ1N•Fܼ~\»ææûÇŒz»5bÒ¤!žÚu…" ±àÜs¬¿y’ÊêˆB²—>‰øŸ Ç÷ɲ¥bÞ©o%­övJÃ/…)ì›­d‡ Kßb±º È(f ˜Ó£oûÓŸnsu!޶H¨Q©àO<@½|}ìT}^¹üOWfÌ’Û^‘YA×¶†CU8;+$&2¾Î‡ƒê”ü†mG»óI"4¾JD܇AnоU”ÂÔUX0¡ÕaM˜Ä*ÈÈúE  ÌSÓ`jõõm \ÇKàslÕ‹Ôí Ä}Ä“4aU²íMÚGsùu$’G&ó÷ù‚(BA@¨;Ð%;ð9¶´š®€þ%»ÐÐ6Ž8/™L¶µëa?°^"Ùº«¡8,„#Щ1`¸éª¦µú5qZ"qð@+Q–H$qxÄyˆûø%;ÚÚ8èƒR ‘eCm x¨Õ×·ÃRx—è ©é™ü"‘d"!îu$Ï\Ï<ˆ+Ât_DA@êÐ|”MMPŠúD’©îÄÕ<¼P-Ubf çú¯¸Ô@°ÈôòÆ‚$dÌ”T×Z)søá®†º×Aä‡ûý0Wó•Ò'Šb1{S}£ÜüŠy]%Î „@SSÓž={Ž9æ˜7Þx£‘8p ê…Ú¹*u¨Õ7´M‰ïð%6{rf{~z+®¾ÎmŠ7§¢ BE‡qLd/“„‚)‰õ†@ïÞ½{ì± & 2¤Þ|ó÷½÷ÞC½P;—Ò¡VߌT,ÃäTæ±KÄ{ô½Ž®]éåzñ- -üBlI’ PwLŸ>}éÒ¥K–,ñ~ʶîêb:Œø“+_wÝu®Zjõ iÄ¢¹x¼k×nü€Â>|¤ˆ„Xa£k—nüŽÞtƒ@¾×¥$Õ)^‚¨ÓŠäéö¡Vß XÀf`´®Ýs.ê)Š#îSì×Ü=Γ`L‹#ô‹¹ u„¸â¾Ãšè&®ºËæ³ðëÒLuQÓNÐ.~²‚€ Ð`&fÜ¿à!/ªúc îuÐL¥¸¾§.öý©;Á Pe©‚ *˜‹[ô "EkXô0gsÖý\b?Ìâ§fµ’EzGਣŽÓáùú‡Ã}ˆö(àãq.Í^ÖSû¥0‡•¼ÒVïm.þ ‡< ¾‡~˜™.F÷ÙˆÐ&Øoî‚é0MjšÄÏIšä3¼È"‚@Ý"ÀÄ÷íWÕ²¯ãAM`²ÒdªuÛÁýøàÀþ0íA&ú“EúD@ß”)SˆþœÛ|3ƒi0N¼ttìßÿMÞ"L%;zDÂ}õÙäâµ ˜Ä‡1o ˜¿¦,=x`?ærAˆ 0‘è.ó6á%rA@¨eò$>T!ª&·Â¼ÍÛZ[1ƒ)~ÿÀ€µ\=ñM/^âã1¯WÌß—¢ù]íØàEžqñEJ„‚€ PËø_ؘ×~×™É ¾ð”Vµ\IñMB‰yã˜À SºÄãÍjšÊ%™Šœ3úìi3o"TTèlxÑf¢Œð|0˜&£g¦é±iš ôå/j"2!°qÞ<¶¬7>>j>Sä-Žf2uuéÖÍNK[ûÚÓã.ýÜç.ûG".E}tX½¬Þ÷°#EÒWI<ñ©š Ë&>¦?ÊÈôç-¶þ%Ao¾JyÔ.‡Z!/ÖäSœ¿GÁ¥h›Þ.“£¸`›§AdñëšnŸC,»U+ºŸòûâm£ ž šoFÓððÔNÖÃÇÉNZÌ;;ˆ¯-[™›,ÞçðØ–úžpÆÁv|C˜ 9˜ŠìÜ—ŽDÕ'ÝéñB¤Gw¦óú,lÒôÍøEðR0¦¥÷„±Æ£ƒªºXù᜷ã5¬¨æ;ôYøtÁ á:A©þv¢Ü¹¾n¡_nQxN5ëbæÏëëO)RVŸïQð5è®Oõös¢Q×\¥¸à Úuµ£­–¦£ÛÛÄfªöÙ´lúÞ^¾U®"jðnÛ‹Ï=—þà@ü¬³ÏùÑòwÜ{Á;ûSvïCœ…Ã=Õ/Õ{¾xï„!þÃñI‡hš¸/Þ„¹°ë!ôÃh—ùN…ŠúùQïBn{o¿÷v© šêÞã5”%HäL~N9ÄÚ×·œÅeô-×ÄAoûjÖ¦°„í˜]Ý,ç®n2WÛ™±íRƒ?ºt¾iø¤^]Ä´Ì?üñ‡rZüðÃHE¢Û~ÿüÉgœû>Þæp‹ƒ5{­ÜGoû¦bø :ÜGo«Ybx]úÚG£Ÿî£A¹îF¾½Ù$o— ?–L}²cŒƒœñõÁmÇO öKÕõÃñ+Ô²rWËÚøÜsx‚ïÄOŠ}íúYéöƒþìgCö=nð úP‡ÃbDgj.?þ! ÃÄ/úV†ª”yœ F»jêV—çËßCTºd@¿@åE‚®yåÊî¶ì”˜³P7*ÁNfŠÈ´¨“;8×ËU Ÿ/É ×”†"8Õ¶Z¨»^z? Ä@ý¢òkôbÌû6®_½ì¸D'© âeŽW@%d‰Nâ¦Ñ än)Ãê`ÔkÈÏbêX¶< 6ߦçžû¥K?6ì£GÕ#òìs/¶µ·ÿö¥ ¿ß¶ 鮸⋟}Nö.ï$Wx4Æçöí Ã"'ržiUg+Á’ËŠ_:d!ç0¿¦£®ôK„ƒ“3H-Wi%€¨&JÔX¾žxðÁ*› àÖ‡÷í–Î$zì°K¦nK¾NWUøüs¿øñ—',ë´ã‡~ä¸ãš›š"/müÞè}ÿý}{Þ}w×®¿ùÖ@Y¸Û@Ù'r¥š?VTA ñö‘ã‡=ó€øâñ¦ÿšL/‹×6.IEND®B`‚PK !ô¥z*Ú*Úword/media/image17.png‰PNG  IHDRS\“ûiª pHYsÄÄ•+tIMEÜ -øù¡7tEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/02 14:31:45 lim_j SGA250167è}zô tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì½ |Õ¹?>›„7_Z¹\5TU1¨T*j‚Þb¤/â¿õ†ªU‚”Þªø¿õ/V¯$ÖVÉm{áÞöB•*$"¾ÔZb? b!–€Ôò"oBvÿÏ9ÏÌÙ³gÎÌÎÎÎnf7ϸ.3ÏyÎóò=gf¾9gÎläÿøÇçŸ~háí/ünäÅ?õJÃKn1#c{ì;c[4jÄpÊ`Џì±-Â?F„™ÿà>/FaŠ™|sm¾q;–?Q)((,ˆð1à pgàœ©ã·i ¡-(ãVÙº;fÇ2búFŸÂ3K’«° Meþµa¢Ì·•;†ðï„™„ƒíðªf}Ùdâ¾¹:Bä`«€€ˆÎ„C™`ªÆÚyûÀ·éŸµ á_¶YH°}Ñ èŒ¾ B€ B Ÿ¸æškJKK¨tã[d×®]'NœØ°àþÆ=ƒ€|ë›ß¼æÚkYÂq>ÄY'7&¿Á¦c£2HÐ8wJÜø1§}œô™ÅkAûÜ+!C,ˆ˜t‡Õ•ìal"B^ÏÜñÁ°8{B{Œ:q¶dE!”™ªI·¬ÔBwJ‰ér4¸ÜánážÄ9 „r)ÔÃC§RGŠ'MjJu—Z.EN1Èò4« Ä´¾Ò7®5+„Кv¢‰•ù÷… ”@"kÊÞÝãÒP! thSE¢44–Ú¿!)QÑnÁž²¢cWð(ÑvBuƒRóƒ*>¢õâÅ‹ŽâÚGÁk«¤äúnZSP”’50"ôƒê½ÚÀ< !ÌnäÈ‘0æ÷Ç?þñ¿øÔòW´gÏžUo¾ùƒÜ3âškÛùPÆ MöP€”È_Q¡)§œ•pºÿ𔫲BBö„GLŸŠñ*‹ù1}ÎYbÑn6^•Í‘*NULcZFŒGhúvÐSâØ "0'd~œû¶tŠ áÜ(KÅ$ÈÏLw"#Ó˜!ÇÀ¬ÂY2@ÌÀÑo Ÿr5!’Ìâ®iês6ɃãH0?Î\ã™Å7ÜVuA'ÖÕó³òEÏHþDúh-)vb§¬-Bm©»;÷RìÄî:ySšéˇ¸Ø G¸Ìa‹#àv;þr[ËuEEÙfÞ4M'LD4´È]‘(Dî9ò>TW4±‡ÈòLÀ+®`v&\ä·Mqv{OS\C¼W §¦|ûËéþ‰ùað¯ÿþE8yìØÈk¯ed 9Y›Éð8Á‘-(A:ž)AÒ`2I(‚N}Ø(²‹ò0{|j’‘?Q•‘ðYBø—©ÅÂÑ-ÓUKDÏãG&ãäZø1 ÌŒg*6•ùI´upP «I[Ñ¥üC$¯VÀªqÓ"G@DŽvxÄøˆ‡P“…U›ƒÃ`‡1x N÷ºhAûm¿îkÕd¡¨â¥®¸x4˲Kø+!i½Œ(ÈWÌÅãœT“Ô^ÅäëµrÉë¿ý[nޤ61H4’jÀ¤ß±ØÏe¹sâ¾è3JO-.úä‚U„¦l 3µKÒDÀ)¼4Íf¨zvN˜ šÒ¬I÷W+©Yw…ÀqûÕ-Zýú…ÓÇ\û½ÿg’{ á,d€üóÛ±cGÑŠ+îúÞ÷JÄ™äÉ6˜eÊ!¿ø^òd‘î 5‘µÝm}±Ãô9]ƒ …f‘Ì\¥Ð0;T–õÁ1w  ͼo&ûõ^!®i“Q €C0f‘o¢g(éÈöµR Z>çÅÅŒˆ«³PK=zÁº>*&µï•KQR³(tx" å-âeÔý[¶#úƒÊkOYH”Œt ¢é•¹Ñ±È‹&&"wžSÃþ Á¤¦ÄÅ-¥ï¯VÒ`´ ^0Éf<Ú = Œiß²†ùÂõø‰S`?ä|½¶út„üÒ.ñˆ€“ 3iÒ¤E‹Á .é@Î#˜‡  Q-ê)L‚–bS[ÃÅ‹V`'&¤5»Y"8“š ?¶×jŠ#{" Q‚t±&òBû¢®ˆÁ=_wËZ´ùºå+—8Ád}qYw1¢-ÊÐU}¹D•Q¿ÚL¡Kl é^êžGåÒ/q'é·ìcÀâ((.<FjáA@éʹƒ¥¢«ˆÞ+úƒÒ‹„‚r%±{QÂHª‘`"âŒHµzHôS:‘SRI‚" í“iÈáÈ_&˜Ð>á ù¥" Äé¨Q£€ù±)Añf â>0Â4?El©û » ¸¸Ðê‹*XŠœFþVj Âd×”‹œ|ik¡P©bOÇh…¦‹5(’ ‚5¹죂ݪÙå²AØvƒë—Ë% Kåo/Þ…¾‹²‹S—ZîE^ü:YÈD<²¯tbsŠY±ï®†·+í7Å•â´ë€eº» Ò\AÀÞQ‚ñã¾Ü ðìÐ~ËB¬ÞIº ž59,¦à±Óæt¾ðòØ€ŠÁ÷=fªŒó!჊@Ú¥©Ôêc¯ZÂ6䂨®´&|ÈG:lz/} ²/{. ¼ÞKU3ØDœ¼‹<*ð' £ø.RÄ¡"w²ïEŽ÷ Ðô~õ л=BñÈF2›=Z»DŽ_Ég Rþ–ÛÚ^*’E¢½´.ìQ‘$̈öÅ •Cìr‘½‡ˆþ£t!éc‡ñ~²'ÅM6%zcÒZ¥€Ñf:N‰wGÙ Ì7ìé‡7æ†k¾=y*;0þwäÈßÁ$­ˆCz@þpäOÿ üáBv϶o@ 2ô±ûBI:îœlv”Ü)—ŽŠ'~áÒ€›0®=ô~ÉDv›Jv…”„$6Ñdb®žxÅù[†Kè¡\„¨€¥¢H{Ø­@®SBÀ¼ ˆ×.X•EgVº“З{;ê(šØ[d5°­¦j(+gMæ2’OU/^²˜—`ì:é„llñoŽ´ïgµ?9Í7»‹ $àGþYÁÀiD«g~ñ46Õâ[„#U+÷ ~Þ¿?nœ˜Píýy‘¹ïÇØ?ÊÒ46懎o¦§˜äËŠŸ+››¨I6c³«Wãne³~°J#}§ª†ä¥[ã…ÛéÒŒ¥`ÇIÁîB4“½(M‰{ ™óë%l”V¹ccà¿ÁŽø¶w?¹Td!ëkS#a  œYpí.„¢oãŽÜ™e à 4ó÷ð¼p×QJÅ—R­,(c`îŽ|äënÐ{i:¸Áh_íœGÚùv_ÍO€¦cÍKÌ8­ ß^”}è¸1¿½M#_ž6ç}xmstÏÿ=°`bãÇ>\¨U†×´ƒÁèž•UÆ„»ÙntÚpUIw¼©¶°`Þ&{Iÿ²ÉUƺÝñØ6½5=6gôð½M·—=ðôFîâ_̪nZ|ËU¦deÕô2f.®!¡ˆÉ Œ]"9Ó©%Æbf³qî²[êâ´GîO℃ÆZ@!y<]Å¥\{áV.ôZM ÉnîNµQ(Ç£Uó¡\Ýw<Úœ„þbs²æE.÷Ü×>qÅr0û¤¨hßQüÊ.¼„D:áDOŒ öE÷‰è·¸cÿ:JçÉh¦r„u¤5ŽÞ}t~U´h…¾'Ów¾Ú8}ý¥†´¯fúc@ûä•þ¬9…‹yež²6؇þ@îTÅŸÜ™ùímšZ¹†À€•ÁIx^eC4ÚPyž?/®Å¨ßÒ…-êg?ãï[—@¹óþ‹9½ÚiÒL‹/îݸpÉ„·³ÂþÎLØ ¨]Ü87þÜœVM›×ðÛW$Q­VV…i…$_ÇíQ;•Ê—x¡f·Üi%NpeûZ¾¦‹ëîe¹–¬#Ô0 ¥–HMv‘å|É]:¸tZùR.ì‡XW| Ô½H„'k¦³R—úž;þ^0÷WË‹åѶ7ýG?…Bû‚ ißì'Œ¬X&î€$pòçÌüoš‹¼ O <ÙhØÄyó&Âcýl3‡ù0Ô¼y…¦ÔψfK0j0«–Ø/{ fL/>%ШŸEü Æw¦—9T²G <Ïü­}qè„„ÑøjrO b€ˆl % ØlP$‚.p`Í Òã:Ie5AH0O„f5C‹Ç€“×X|æßæF{Ý—xE9Hië*g”S]E-ðÃŽò ‰$…% ±‰d_âš®ìà¡øÆ‹†| A{‘h>¹(ð6%ƒ™C@î´rŸû¸cïWBŽ=_þ–ëÊ6…NæÒ ¿å0Ÿ)x'†©â³½O>>>ò+Ejök¿¬Þ=1ë‡ø(áŒ? ÷Á7‚\¼êÏŸq¥–¹¶×nkïžµ± “¿`ÍÚ$´âÒéë`š¶á<`ÆÖLÞÝPÉêOŸnÀ<êpF$ÊÊæŽNû¢Ýª£dSíÀ±0 »†Þ˜ÕšÆÝu‘iek_ÙµÆ+Û7…e± Ú©aFýÆ.ØX[yÞyœømà#}0r·gåís6ªÕ6Õ^Îf‚!Ü·ƒòWÀG'σáÑ÷ C†Šù㎠¡‰C`3lP4\•,KXÝÄaS¤°lñ&f•yóÐbý l<¤ó`ª½†åÅbøiãí —¿SâÌdK›£iOQóåæ{bž†}á§^©Åi&®ï(Iéô}—ZÂoJ-çnYI!UË.Ñz1•¹Ø¼xOªÙ ||¹ ľ¶]„~R/¤£(²—ì9âŠäþ£ô%';9 ‹SØâZù:éØåþjÙídH"ZÜn¿c#×.{`Z Ljå²0U›ŠA zÎ|…bU‡,I€wGæçfb  X ÀgG˶~‚ÌoÎFœGeCm,€ÇîR`~Œ®±²‚é–Û«>i˜¶xqû€yUΦLP¿OâÄ)òiÛÅl¤kâ+@µLbÄh°ÊOjýé„Ko¸”Ëg2O{aׄ çŠç™þ!੹r"l›¶Ù¡`ÌÏ=ÁóðëçDÊÞÜ4møñ{p±–2>;åÛˆ‘Ïuc`¼9—°2[sŒø¤¡fñÇ‘ÛÏ›7Mÿ;lö 4(ÊwQO¹²;Øó#MqYñnEŽ_©åRän?xdË.¸¹Çæ½TS¾š‹‹ÜÐ"$%6¡ƒrñ ‘(MÙ…÷8I3 È®ô<´wÑìEÚÎ&Ò ¼ó£;°/"Ï>¤Ê¹ýécâžQžì]ºtÕ¢¢$D&yzdÀ;™kx|PyW³]’’w`«0è­¢—‚jÿ²;«–Ž…UâÔòu&,Ýú‰åwïžu± CaÑa¾ß8½Ú¶1r9„ž|âåÏú5áâÅÅðš °ì‚/ñ@îÃhŸI&xætŒxP³Ö«x¢ª  Ø…“:£~ðd",\Yb=Ò(«*!Á¨žµæ…-°qÝ08'Y£Ô\­ß¿¢áýHìTÙf{…%(ÅÍÕ¶¦PTôÕÍ4I8‖á%òŽ(‚»\4.‰oÙ ÚT\ž Ì(öë€ý¼VNyTpúÑbŸ‘­Ù}’šÜ1˜FÒÁD\ œpP®NjÁÊ»uëæeý,¾Û^ï¢0³`ƒ ÜÚñãÇ{ôè¡5ëÈü€v=4/òÀ—Ù]O­÷çYwü¥&‰ÚÛôÄl-ZžþS$Œ…L˜\v'c_0Á6œq±nㆯ´U6X‘EZ¾¡*ˆcNýn+#{–E6ˆÅY§5ÚŸ´Äzœ&æ“èÉ£šCxX»ÆdL!¦­Âæ…Þ4>ÌXöÀx\¤¢W²¤ñ5/¬5˜´ÿ€³99-ÄÑÀx p6b룉á5Ñ«–.«iÜýÅKe#(•/ñ^­p=»©”ª»+ËwE3£~Ý£ÂÒMÛdâf€;öCqA—~yR“0SaD*/p‘NØXîÉr§RöñŒßî‹ÓA¶ƒ¥aKÙw<>:¼8­|;õRQœ­^”í:Ù ÒîW+`¸cÇm©?ašøøsª­gÇG}4hÐ m©3ócë`á6;À<õÊb™|i„u°Ð‚½ö$¶b·˜ü›`,ȤlT ÔØ˜ÝÜrU¦|•)ÖÂFå€û¡*_f –ˆŠHrG9Ñ„ÙS‹‰Büøˆ!lfLœÚ0jùaƒ‰ý+jÙÛ\xˆV>èÜZJÁÇujºLô2¼íEŽ5m°Ù¡PL&â€isªt^³{å»fÓ™o¬a"+û«æÌ1Ÿ/‘c€æ‡%Þì?|;¯rÄûK<=í‡á˜½GúG„‰2€w’†/+$­"ûõaªkk%õ«­BßñxÏÚwlN1{”‹»îhE‘¸ôËÊŠü #"¡ã1*RË  YåSC9Mð4´ Åé)v0Y¡™¹»‰Þ~"x©å®HiªÉNÃs._tÑE­­­úÓŸ<:uEïrѱæÝ¯¢ é|ðÁ[¶l¹ð µ-©®®~þùç•óÇÞ3De¶ `ÁñGæP• ¥9,¾°Û"‰…@ °é[ÄÈÌ[gc{’/i÷Ðz³w8Y¢ÝB{].ÒQSêz‰Á‹Ž=$µd;^,xÑ±ÇæE‚–í7]Q‹äo(JU(ªÈ!ùëŠ^’"Ì!`Dt'Üqú†ðD-¡ƒýÁÝ~ yu`ÇóáÚG(âEkD+ôaÒ*ð(tž¶¶6Cò—´Š…¬¥#b;çœs`´x-¸.,,”cÉÝwßäÁFQA„·Bà(qHDH} ’r~:¯RzÉò„•{R„JÙ_æ*Û¦†[–ÌÝØ0@?D•Jì{߇à¹}Ùa´+S\WôûuKírûb×I9ŽÄ‡µ1(b€€}”ÓôQÝ#þbób\Ä/»ÀD°HIJQ_|ƒ/д E ²M¢¾— I'<Ø{…Üsp_ô¥?ˆ]òRtdkÊÚÞ3ä(³Ù9MÁDkDî âdgœ.ᛓN r<1åÝÈçŸî´xÅ+óóî,óš°Ò kȼŸÐ{0)0ÌÅ:.·Mž¼¥ïËӬž+÷ØÆû’[Hª!®ûÊZ …¤¦q:‰+Eª\ô}Gåb3¨¢Ä°+nùöåÇ}åjrÈ•Æu: R²Óˆ~bï•ÒI°{ °{`÷³wž RSz{PfÝíøsj‡ÂÝ‹ïRá)îä¦ô‰¿ŠàZ`%[fÃP V.;…¡Ÿí5‰\|ê¥'öÁL†\¤ ÕÎâÃû)§Èí .‘yQö¢cwá^˽ÔnM–¤Sí¸[p/uÍK©°¯\(Å!#­¾,Wöí‡^¢%DÀÞ *œ¾!,‚Z²)»Ù`³î@Nàõ*>à Ê‹b'(³˜‘âº3ÂH €øl/R1AÈp8™LÑÌjütM1¨E_f™^ÌÊ!ÙÓ]€5/µQi…2Jh9XûZ§ù*„þg¿ˆdí§‡‹²½–‹²»_h‹h]ü:YÎD<²/ŒÍG`N+ò¤ñƒkÔqùF›vM£Ðc0¤f짉"±÷%—>ƒ]p¿3tq" èÂÜâ>bÍ*® ¸“7ù†¤—²Ù^ 4òÇÞZ‚å ÄoPsâ=vÂ's&ôh6'ÿGP4TÓšµÛv´üOØqjÍj…›âQñ"…#Sh¾Y[H„öñ|–_.+ÈúŠ<0ÅED\FÓ±–~Ý,Ä zö|Eür‘|Ç‹òʘË7¨‰k¥rÑTnöÀHN°ÃÈgŸèŸöŽê¥oˆž ìÈ},@(DäÚž #Sʹ஠¥™5XLìÙÙ%.)R$úR ÖÂf¤ |Ú-ògÿ™Ù ¹±“*9+¤DvÚ„Žð[Ökðj|»ŒÖ²lÊnL)Ñ8DkZ›NÍÊŠ ¡)¼àŽ0®"DNöIˆkr±p: hö˜Ãƪؔ˥8Ä ·hbÑ „\Üà1)EÕ Hé$B’éš;o"Á&“Zôg¹Û`W±÷Y;ÐTª£ÛÝ¥ƒ§è–éÉN]I¦Ý…‰=à ,§„€=Œ”ª‡V9Îü€óáÉ™B˜d…¤Ê%%´ S%°,3*±FÀ22?Ü‘ýÊ.„MetP"+Ë6EäJÀ2E“÷Ñ *‹„ô%l ~ Z®©8¥C”;r5‡ŠN· »ÍÌ‘!÷ÜKíq+ˆiÍf'6ô¢D¾+ ÚC4¹à¿C®ûZ$I ¢éå> úªR*º„@îrC¥_vLù8#rŽÇ(ûH9– 7´Ùûs Ñz1R„œì4öƒ#Q¸ÔBLœÊħtef&ó3¤M2ÏÇv¢"0ËÔ¸*êóä™Aþ„e™¡² ¸Ã¬q7ì+n޲à x‰ ²1øvÚЋð;Üd<<4¬|câƒg~­Ì\“\  œâİ+ˆ3ß®£ÅÓýÒ/ûõh½ˆŠÚZXª-ÒiO$>ª»—#Ïq/` *ß"6!G "Ø”x­ô’餃€râ('¯8=ÁÞ—ä®’N$¹RWœÈ)X+¥* ˆ¸`ûÂw‡8nr^YFØócÌ/f´GöÓlçìB£ c|(Ê™gFøš7ñ²7Á–DÄ‚}ñæ1iÛ—ˆTœRI‰Fø³°/`~íŒö­øÝËÍï®gõ9‹bÿZ'Ÿq¶YƒyŒñpB–0¼'ñ Tçux=,²¼ ‡bJè‰Ë,ÖÌ’@÷Ü"Ógý}€öÁà3‡b®›ÌË„k«•ƒ‚•B¯‹”ãà"MûJXÒ.!@„!@tW\qÅ­·Þj'曜c0Ãeó¼ð‰Äþ¸výü¿3: LrI„!@„!6³gÏæg7ÃF©ø—´‰a6»:IB€ B€ r6æL¦D£|™P@6Cê²&"gS¥À B€ B€èäá0¿Â"VZÀ‡˜_'ï”>!@„!@ä)ŒùÁ¼†ú¢…ìSc,6B€ B€ jäˆpGê':êÌ~P£:„@!Òåˆþ¨ë V ØmútŸ˜_MÒ^>üK=zt?qâDæÈD¸8£Ghî×ß~'ÜaúŒŽ:³Oà¨!Ðx¿ÑuÑ>ñ™Ý×F@ÌO KjÂX,vÆ=ˆö¥†ZÎjŸã§Îì8ªFƒ€îj´:Ó V¬_¹¦Ï­Ó*‹-é¹W^)ö½úëÛ7H¶çÕkªz}ú[Û¤Ͷm[‡šª•œÕÏÈûüà®#Æÿàîûˆ£ä ‰0òH¥º —2ËûBYñèѸSl’ÂkSjåK'~{óƒÿûÖ°©bxWßòæký‡=aYâÄï›lü¨ßÿnþÇõ‰Ê)9$å 3f \me‹ Òa¸÷X8GÄ©ç jO(L>¹àËÊÔ™ƒm>²Fd ,\ŽX.Ú¶îzµ–êÁXàBsL †ô85„¸µ}GöY³f+ô9ù;Whœ÷ l]8o«y¸¶/ˆZÕûŽ„ [¹WÇR4e ¡ÆÖ­Œh¬3—æ_cªÆME}l*í;âjcẶ+‘åX¿vÿȱWïÛºÛ‚c™Ä-Ú“emjÚLãB̤˜ç+ÒÔâadî;#ÌÂÕ²4¼“Ḡ¬`Ÿ‡õ~—’mÂ}‘òn\hÚc¤Ð/úœû½¹åú‰’-›á?!ˆ?ƒúÍeÊb8Я[ªòÕÖ7í}RÛ’öXqj$=¡äL9 .@f° Èå(y2ú»¶Æ…l,ð;@R‡ûŸõ&cÛ·†M WrÄXTå´[8Ÿ#jñê¬6ÐD·8öíï;yZ%'j•Ì6RÌõ#¾“h\LB{ÍF°Š‡ }e[[e1Kªm«1t칆˜î-Np]Ìç¬Õd¡žMM›)·<í;`¤­¦«‹¯dÖâiº¡‘©²L1?§xí$ÏIÓ»m*cÞ« M{lvIjf/}ãës¶|ÛªÅVsà—ÀøßÞ½ÆÜ_V7o™x)Q¿Ô@Τ6^m}Ó>MÒVºSú=ìË6ö!êÌ™ì)d›È8é_Ž’‡¸oð5u|ìÀý†5xî•W]³ÍTê;r'T@¢Œµ45¹C¨ÞwäX®Èk›ãjÁôZlù©õu$‹iÄVq™g‡0ŒaŸ{ò\;¹"ÜíJZ!ªy)´›µKðÆl—§"éwý7o¬›û›½Fÿ¡_Û1ÕZÛalÙü~ÿˆÏÿã­º¹DýR7ºéÐ>ŒÏ…rÛc]à Î칂@ú—#·LÏ-Úw9 榗•2|Å€µ"Ål˜qeF\B¾ÆJX²fzå!A®=ª±Ð­r3ÔVÍd"÷`~ði—>(ñè §ƒûŠÀ€ŠÈ…У)¡&ªËdZ¡lY(ØíhÕ¼Ü áÆœjðª>ã~ýQ˜¸¶ƒ?Xܯ¾ýßß,¿P5FÇù„€Ç )§yB!hÔ™ó©óP.„@`Cr[_‘^xr`ýz`)çž Ë!¶!]'â¶b›:u ªï[³ŽWgµMÕsûö匰Áê {ýûöáÔ3{úÐ^lIÒŠ òí³æ•5F|˜‘›õèÚ®¦Í”G¨,$–òaC\°lßqÎ:í6æŸÓ±˜ „ `xßà¶$n*bxÃ.ThÚ× ¡H®."BQK®®­e¯¢¨aÀÚ0ãž¹tâ ¶ý®ŸúÄõP{Kמ7£êÓôì†À¶ )M!dÚë½Ó¢¦@ÆéLñ ÚI©3{†Ž Dž\›Ü÷Λ‡±³…°W\9y¤%d¢”ˆ«~ëÐy¯Ìz+<`ý·ÍX& í¢Z6»Í‘ö:ÔœëeOæ½b­ð°ÀM/6ðÒBIœßÖ¸Ö5¥FM›)FhM÷òå)²áœ/ºŽ|»ºú?Ÿþ8ŸíEò×={ø‘G™1£C‚SœÂÈ<)å2_† ßøÃš¯WÞtâĉ0C1dîÝ»ÿ®qÕ×®™_YvA9Ë€“;B M<^ŽBqj³%°*$þÞ˜4soõ gê±ÑgÏžýè£&p¾Häž{î):Ýn´GŒøáó~FaÄ8»·Ûε£&y&B€ ?°×%÷©® ñc)ìuBžiÑéSÆéÓÆ‰S Ç'|=º§>ïHXÅ„ò¿ŽDŠ|„!@¡F€ Y?“þ®G¸Ï™L‹ÚOííÆ‰clÄþòwÆü8ìÀ-·ØÌ’;v¼Gî'Ožì@ÐÈuvèÖ­4·¼B>;~³ã…:svp&/„@ äÂåˆýÔ{‡]þo9“iQ4jDÛÏOç‹íþ×Þ#´yG °°pæ?ÿŸ/_äÏ{-ÒÌQŽ?Í ž£ñ»‡MÙ*%B…€÷ËýQª†K'˜ôé~c{0Î׋±½øf\0¥Å½éduG•_õû5ëVÿþòs”y‘%¡A. _9BS–û"ê̹߆”A'BÀûåˆþ¨Ë›náî;¥\ouf˜é…ÿ£D]œ€J"ÏW$m*ÎG¨3çc«RNú£.oz€wºï”rÌYE"±¢">ÚWƒ~FAQŸYN œ B€Ès躩}Cg¯èÒ„³.ßœ}Û¤Š©"`ŽùùƒÇûR­Lú„@€<÷üógôè1mÚ´¾}ûh¶ÓšÚ·o_CC z÷÷¿/ƒðöšu½zö,¿ê+gžqF§' ‰=vlã¦ÍУFŽðµ£Ð\ª85áìš"'œ}˜¢*¾ˆÏöùó "U û÷oƌ޽{;v,ƒÜȹçž;iÒ¤Ù³g+8´G£—ÿRÝOœ8ÑÉ!êØôáïhˆ×ßö¹ÚšÚ1ØæsjÂ9;8ë…¬É༮<º—°ÂÃ÷´/¡L¤À©S§€¬II´Hž€ªbNó3ÎèASêAáìÛ44„ï«.µ£o䵚ƒpÖÂå[脳oƒTÑ#ГÅÕ&>Û •BMûzÄ‘ÔG@îšï„ÅyÞ s§” B€ ´hÆü:ônÑV7˜'ßFÖµiCî0aÓ+´ìÇðm$ôm)2N„!‹¨ïóëHÚÇXNIËLë–·ÐXÙ6HËk[Yx­µFÍäÌS ˜Û+žº&¶fjqØp xB€ B 'HxŸ iuók«›\3¬16¿Â±xjhOñÔ™Õ5³V¶…7œìŒ<èŽë¹‹EN„!@xE@óóZ/u½ßÿþ÷ÿñÿáX¯må’æêq‚öÉzÒ ðsŠ5™3à *ÖXYR#^'I0[gNêz›deަL)jn#Y¨q›qMt.ìý®¬7škJФ4þ§VQ±Í }ð’9Ú‚B€htîô}Š” ,! >ç—¡[Å›o¾ùƒüà׿þµ[Zå¥%šâ¦)%l,'Y7W îÔ\3ËXÒÆêúÊÈd¾ ûÍ5³­)bwg³-ãl¦Ô°ÚêfÕ—W5'a›7—‚w¬t¶‰¡Æ'‰AsIŸ8Ž5³Ìyc´ÃÓ0ø´r|ü°Uišmá’¨¨KÇÆëôéóÀë@@áÍÏÿU)´ ™ »‘¿>sMuWù)Þýî²øöîîL’Gb‹àȇ«—-[ýá‘ ,w]gRp!·Žr˜»Ði#Ïžñó‘ú½¶Hh2? ˆŒ8 оûï¿ÿK_úRËÍ-­v¶m› k,M² ¥òÚ…|6¸bð$“…±ýÍÛÌ…!® .fgðÇS",>‰0.úÎòîbCñ3MÓ ðY)ʤÃ^¥¤´¼>N„5UrSÄép Ûöçžn¹ãŽ–§ŸÛî`¦˜£¶"»Ð¸â ÕÈêg~`ÖT·ÙëA¶º@¯Ko϶«}´ÖƼ²÷Ó«×á–D’·»eË¡¬†oÎÒ`[4 xZçãø«{nYeÿ[(Ø|ÈZ."ñÙ^Aû’pÊâ±UåõËC·¤CiSs…‡2ç¹á}³¶jÇd„ alÏÅXb¶ø#¶Ð˜ ÀZ³Õ.us¦(p†´ýµß_¿÷Þ¯¿{MKý82ªW»I.¹$ÑÈëÿ}Çwhª«æ:ê8Û­>ðüAÆáÃ:ºÖ³§±k—Áî] 4(Û@ä•?‚4ØæÌ"ž¯ºéÒ^íêÈø`±#k!À˜ ÷‰OÔÚľWÚÇœ±1˜·“˜¶º: ‚ÅC†#d“¬Ï¦n&Ì:Úl^²’CŠg¹¦5Éë-t‡*@ÿZkËÅ8§7[JkÇj ~c.¼p P¿Õ;Dê;æWöc[å|éÝAZ¡„Ö{§_2óço˜’óç|8ëÞJQþÆtn¶é–ŠaY4e R9}:xæñB©FN7Ь^çŸ6ÏO²ò Gù,ÞnS"QŸŠWÁ:ì8>„(¦UË õ,-í¹¥ÅºÕù°åð¥¥ç øÌtÜ®b޹y÷]ˆk¨!åtóø ÞRD~ZMYB‡É§Yˬâyöùç êgë̱uH“ì Æ¤\ò¡ù(G>á¯ëlNV„T¯‡q ž>L÷‚0í½÷ÞƒŸذaZÓþx|ÜQÅüXkéH˜NEŒ¯­½Šù­µ–‰´‹@R6fl–k‘¹fFíp.™'U©áƒt¾œÌ4WVBa‚KUÆ-gKAÌúyòÞ—Ó§O>|8õÖt®±sÅ‹í7?ÝŒ–ßÜþÞtç`PþýÌ«fÿjûâ¯;Lm·Z¡°|ô”Ñ~òè£&Ýþ»—ÿýН†iùè&gQ_ñïÛ·ÿ;7~ÑSÏÜyŃ™í•cßܾ˜¹4`0ì0yoëà7·ol~ù~+ÄMϼ¹”Çävæ™giÎÑÖ!˜SÚ¥ƒ®?f ×Úýîª]çß4~ °ÀÝïÂmcà% <´¥dãφ{ÊÚe‡Ù ñÙìþ²¶e÷%W dU¶ôDpïYµúÛÆ\R:hÙ®ÝW d6Ùà])¯ ZF¦)‚ƒÇµf¥#»vç8Ûh± ^5~üU<¼e-–¼älæÉ TX8t¸'M’âMTÊçHƒj5-|V‡a­´îÃóÇ\’'àwžº–§Êî]‡{‡w¹N 8izÂIÃuøÐ–å섉Ÿ¤Úf"aî!À˜<ã„?ð„̯0cD0ˆíßø–‚%6ƒ9UÕ×$ ¨Ý× Á°$OÁ,F$Û1& 56™féŒ5‰ÜŽ q*™J±(…~\®V©ˆ+©åð1,k 0úo¬ˆUÌÄŒU»¡þ­;eìÜñ—²‡g_Ç¥wÜsûc?gkiÿªÆc¿‹Øºãë¾÷ð³3~ý×ëîü[ýcCîi}å,ê·)¹k1¾ìafðn¿·;770RV1ŠK ãö{y Äë;¢Ñ\•„çŠÆ\b0eÒ´#À„}„tr„£n½.ÁïÝ|R¸'Ž ²ý˜ ÌØTмñl |[vÁ­'~‹„[Ó¥¬TcY¥K/mYÇÈæá–-=9YŒ÷(vûˆöº¾à.whP)ã§òf[2_¶To‰UóôÈR-D¾ZM‡œÕaDÈð³‹g/˜_æ'Ž­3÷ìÙ‹=1ðð®Ãç—ž¿«¨ßùæ_KŒùõâ§ž°ü$Íüu­sÉŠNó>Áü€üu5 ÒFä>oÿòñJ©¼þöc£F¥“Øàë+o½m4n}xöc’¡ ªî2~ÙÚ ¼rAÕŒt<äjݳ/qéjθðþ€0’'6Ï™·ÈžÀÙànŠe`0Ãe¬ƒ‡›€,Ž"`ó’k«ÇÈöÖÙª‘À'Hõ5Rj5`’FPÌ? ©ÞUŽJ3ˆg""ìo›ž¥pæhŸ¾Å0Žô< ÄoàùF Ð;‹øå(°¶7 NÇ ømk7Øç´q*jœjÐÏ[¤E‚\ ñöêÅe¯Þ&¶Õ—-^ýv,öO ÙøøÂN,ö·?gÃt°§Æ£aÏÂò… ÿ4ùÞ!ßõ¸QùÕb‡–üomË.Ì,¾Õ¸ ~µ²lñÏü-nC(33 1x0¬ 1ñ†ë$Å€v³Ü¯`h¦çà~†q6Œ2|¤,²M ¯b>‹ç}4è|NÚØ½iWKË®ž¥H(=Yæ¬ÝbXÏš®>ć?øP—ñ§ ãt)I"ùYì©D©´˜8„½c+±Í–‡£Cæb>4‹ý!_ÐÍž2B8ÃËÿÓ·o¨uðgŒÀÃþá]-‡Õ³&_§ÏìÑìõ.ÖI o)ÖP[váx:£~ì©WšÓÍå~å-öÈ7¾]=ÿ?ßõé)ó1ÎïÝåáG~2ûÑ$3VÏ<·à‘ÛžÉóæ•´:=YwÿÝwjSîÕ»÷¡ƒ±è'?ùÉã?þÑGø–V„©!ï3yøá‡X¬†h¿ñ‡5_¯¼éĉ©Ù"í н{÷ß5®úÚu#}ØÎ÷vd«pzÂó£Yä!ÚæÈwœ}t½t«hqN×(Õ×!0{öìG}TU(((¸çž{ŠÚOŸn¶³Û D àåpíííí4Ý«C‘d™G #_™š<„!@9‚@›ŠÆ¢í§£@ü"1`~ìç øÃK´YF ØÙÞ,BwYŸí !!@„@ExûA²‚ˆÁh_¤vØ¿„!@„!ÐAÀ»óíѾB’Ü*E……0ïÛ¥K6ÊÇ™_A!È UE:&²‚ÍöffrB„!ÐI((*Št?£;|zœÑ­{.…E‘¢¢\ƒ£­n$©äÛÈ:é¹O¤iJ†q èe&d&Ž@µ>…J„!ŠŠº0À×ý î‹Ïñ Ì¥ h_É’ªÖØþfMS¦´ÂodäR+Cž?ýôÓÒòÞ@:,ì<UÅüqtìØñ=ºŸ}ú¼ð &L(.&Þ@g8tèà ¨*¶àYŽ ›þü¾|¿Ü ¿?~Â÷£5ÔŽ~××sjÂY—_©Î~íQ=?ñ3àw\Í äsi²·må’æê™âW|eØX`M3“T7ÆæWÀh`dVií°ššz•×¶®A¶¨S3ªúzà“ó)‘J¦nÙð2Õñ„À÷¿ÿý_üâuuu§NÑ›Ä=!殣}çœs¼ºIQU~Õï׬[ýû?ÐÊ_w3] ƒIðXõWGŽðçˆÚÑnNµœšƒpvBÌŸÜ gÖ¨–?óƒ>ø­^±!ôg®cj•—–pÇ…CR×4EL7Mgÿ*Øk§›kZfÆ€Ï ¬œÝ4•ÓAÚæÒÖXŒ<Ígêl92«nF…Yì˜LóÝ«¦ä{Æ“Ÿo¶Ñ1á’W¨€ XL8 (™ëh €öá8>ø†Ã\šì›[àÁ>ØŠ§®‰Å«Ó¶m›ç•Àµ³TÊkgðáÁŠqÕÆæm°ÄA­j¬5á”MttS‘B€ B€ ÒDÞÞÇxž }Èü|>rœf,þª†NS&y­ F÷7g5E¬4¸‘ÖÚrÇúT@„!@„@N c£{:L+fÔ5%Sš”2Æëg%}Á‹»ZkK3N%³§ uÎIF„!@„@î Kk9œPe“¼CØœ,*ÀS~óÙTmÅüÖÚ‘%%‘.fk<´\Õ€UÎâ&Ê««iÌO‹_zÂX¯^½z÷NÏÕöŠÀ‰î=žynWmÒ#B€7÷ß}§óù±´+Ì… 0JÈ–uˆm~LÌùBkßMÍVÆ<¹Lûh‚N]åðΘ?0’G~œÐX—Ì$KøÉŒe²J„!e{²ÎŸÇ<˜íõ—8Õ"\EàÈ‘#¹:ÅM„@"pAËò5-G˜_Yü¦pçú@Ê´„!@„!(92ÛûþûF _5höa6æ÷7œÅF„!@YCßoîÄZØÏæ—5È!@„úõ‘Ð7H^ÈÎMö’«ÌïðáÃð³¤'Nœð m¸õºwï‹\{öìî0):B€ B€ì?tN2¿;v ~оk×nÃßAæ>ÿü$$uúôésÏ=·ƒB ·„!@„!ÿä$ó;tðàÀçìu4ÚžMTTÔå ý¾°{÷.b~ùÑ ”EFÈòßÇÍ…Œ„@'G@<Š—5rdmo"§ÛÛ b|ÑG¾|b䕵†ÏGü‡“~¢$#“þ8Kî$H‘ƒ€Ú-àØöË>Ü“ªŒ{²B„@´·GÓ¨ZÕœd~"#|Ñ(ÿ4ÝÛmÔÏZqß~(äwÀZ·î÷4YÆÍZmÏŒêžàÅ£µTÔRk¸N¥]^¾¹RïT0P²Ú1¿ŠqÕÍ-­¤¦åõÕãè¥ëÔiB ìh/h :'g{@*j½ç…±@vh¥¦ _Ì1bË“?k»ñÞ‹DÕ׿ÎXg#d/©šMª_ÐÙ^[£CäôéöÓêß=§ÛØmÿ6ç…ÿoî–Ñ÷ñ6a’SŸŸ:qRg‚dùŽ@—¢Â'OiºÊà¡#ê_üÝ37ÜÄxõ…ú»n}FÛI¨ÿä{¡üÜA/hðèÚÙg÷<~âsï÷èÞÕ»²¢™«c~œë™#j†$0>º¦*£wI¡ziitYc[\óÕ—ýÝï~7ÑKR;©*tº¦Ôg‹ïûñ¥Óïz¶M©´êÞ®ÐûÙçÞWyÑ«?è>êÙU?»ž °ÊØþì(T¸^ÔÝn–öè~Ϫ”b å! {»çEÿwÄ/_ÁF]õò¯¾÷/œ¶N"Òà½e;JûÔCBÔÐ !ÐÐ]Ð2™·Êü²?êè/;À‰Ó=6Ôg ò)‡ÛŸ}n÷½Æ‹¶ÿ\^e_»ï¬Ñ÷ݲûøa¼ú©?¾ôßæYÂíÏ>¹ùÉ©·/¯Þgš=ë¾×¬ZНDËq¿Pc[ IDAT½ØbËÜýµ–çZ2€‘°1š»ñÙß•þð»?kã%\Â…'‡Ïï¾û«ŸZEkg<ûO.¿ëW_ïzWìWLaù]ë~8w«Ñtï¥K¿±™×ZnÀЮiˆþÉ 7Eá¯>>ÒŸ¸]tóÿ±ekÓU/ÿò»·Þ„¥ºNbÕ“m˜ûÔCTXé˜ 2‡€yA‹Å2÷ë ¼rN`~öbÏ·ìl+&Œ¨ÅŸùã#x¸jÞK—Á;ÿ`«ýÈWÝ?ü…Û6òãe±§žåCzÆú-CæCùkøÐªþµ±wþ׊UÜZ[ã‹Æm7ý³e6S‹V—Ýù_Oþ¼ tÚ~þµá/š¦Ñ—lüþ›ÈÆ'¶|ãk¬Š›¼Ì6Œ9åïæg—ûÑ<Û³_uï=ºÑã뿎g2â©_òIá›ný®1â|~˜íoÞ£;Û[[Œu?Uº1î—ëþ,,§  `õ\T1Þx¡q»±}Û–»t}u&¥⌠•„@†€uŒ6z¤+…Ý©c~AºÊ°-ÁÁ™‰›‡½rÁø1¿Øn–° úúËà}ɽz_°~+0Œ+o»é…Ëcõî¢å)VùµºKgÜ Jq/¯M5­ ßí¯¾´þN®ßâ–™ß;ÇÞÀ‹.¸{ÆÜ³/Ì0Zyaþ¦žÚòu˜Ã5·í?=ÎXÎÆüZžá=Á»xþyöfïÕH3$À_ÆŽçËE•ß0–5­‚¿ÖÆ#ç7ütê!!ij ƒÈð‚×´Ìù!ˆòe3WWxÀtO»ù” J®€±9ëè¯Û¶—T †²ê¦ýÕ}þæÞ½ß›Ü°îE0Çþ½ÁêHíí¯Ã¤a¼¢)g³ÇLxÁ˜¯ÇînZ]¾åñçæ€qKÞöüÍb û÷ß`€í»™&L;CË?7c)ÃKZØÈb¼Ô<œ 2²BëÄÿ:‘`“_xï>ýµ/}}1â)lÿp݈K.d;/®3¾aêàŸ†BØ¿¨¤Ôøá“?›6æñõ;îœLÏóšìÙ¸ðæo—ûሧ¶°ŽÅm.¤øâëþÂþ3Œ×^†acÖ©¨‡Ø0%!@dó‚—4~UËœ#°,ìçê˜$T‰oƒ/ºä½‡ï~®¬~æá÷î¨mEW7¾;늖Ö6¦e,|ÚÔÂb~ûh·TÍ…ppõôKžø°ñõ³"KÞ¶õ½+Jþm¯.W|Ãׯp¶Ìý®\Í­·=÷ôÂxpñØxa¦›<£ý){Æ/úA½ß»ñ§Œ^vF÷3ÿõÃR¯c~7ýìÏO?ºôL¨Ÿøøaö2 OE&|GˆY~ðäÖI.º÷Çßûõ8Þ^6¾k†E=$£íCÆ B ãHóƒ™æŽÈ[l(ÇbÇ£Ÿ~÷±Ê«®ê7“UýÊcï6ŽfEoüð “þ›»cÑ'0{¬ÅdOCè)Œ ù7޾÷±¯ÅÕl×¤ã  Â§¹¯¯ÜqÇW°úÕ+mû‚éŸþšdÄÀèúõ“ƒScc4_‰ƒGÞé6Ý=7>sôFž ï}ë³{° ïyãø=qBYÙaÿÂ{_?ÊêãF°ç^'‹ÅWxh‚7ÛW4¬k'óìgGŸ5ü þ嵨‡h`%!@d~Ac¦mt$þðʘ«³½=_ËÛ?ÿ늿ÿ« ÖKÀþõ³÷îmÊP2¸zÅÞê¸VÔxjïh;q–u´$³³aæ–·‰'ú2«Céߟ2MƒAÙˆa$øåîì±óãèA³]”vœÀ~B]Å ’„@! .eY»¦å*óƒF5ir5/…J„!@„@‡"“̯¨¨h_QQáéÓ§;½Àœ[åds†ÊÊpw“­@€ SWéäÉ%!@Ž€˜é;»P æ$Õ€—ª9|øìž=»uë¦&”›ÇÐàä•›á5¿›g¯÷7Ê"ìõélIûÊ¢[rEŒ@=XpædNB@<Ý®{Ì=SHå$ó;÷Üsû÷Ÿ6_ì’)t²f·¨°°WïÞ˜WÖœ†Ð‘Lû`"Tˆ C9…”5`¤Þ¡ßy3äŸ5èÈQöéìã!~ãÕŒø_ö…<æ$óƒf’D<)Ÿº/2¼ÛÙ/óÊlÇuØ'‚´ˆÀ‘à B WzWPÀÞ¡†ß°#X ¦@ü/Wš2sqnÛº5%㥥¥)éËʹÊü|'LCˆ€`u%%%›ÆãÈñ[pAâ!l¾ì‡Ý€î”Ù‡<ú@@ ò!Õæ‡,vŠžL]Ú¼ùQïkÙìÄüò£çäp‚ÌÁNaa!P=‘ŒÅM ˆr"9ÜØÁ…~øðáž={g,Á# îå‚ð¸Ê¡'¤€È…$ø Èb. pèСl>èŸ#̯woÏ…æ .FH¹“m‚特N:…ûb°“ABé:"ðÙgŸeóOdÇ8¨€H†tT`{¸Ák`Ã}¨Çâàuæd(RyäóûôS§¤›¦Df•¶®™Zl*Àñòq±ùü°­ndIM3ß-¯•”œŒ¹ÈÁne½U7Æ<,©JÏ´‹W³(;^’Ç‘A ¸½Ã'÷ð}þùç'Nœ8É7AþäÑAºPf°1rÁ40?è¹)ÅØÙ@ž×…oÝ»w‡ï®]»ÿ\püOöëì`QþYA G˜Ÿ3ãª+—·†Éüš–×W›ÏÔ9ëÖ‹Y$°®É˜ŠûÎÖ\KßXiidü²xêšØT×ZN…*euÒcrÿ^ܬ†¡ É|#ó’·s }Û>ùä“—^z) qR „!@øFàšk®çñáâÖÂËÈ`œOžóõm–*ÞÀáüÎyæg””–×/oš_ÁI ~mu“í3Çþ ¤xªôŽ”ƒfÅüÖÚÍ%©ƒ‰“! h_ÆÚ—E¸8Âh߆ V¿þ:Lðë[ߺöÚk“Y¢òŒ# \ONò¤ù®˜Ô2(dÔ¸—üéd"ì4GÇåêZSZ!¦ïR„ K–,©ªªò‡•S­µk×^}õÕN¥Y–c‚ï¼óÎoûÛ?þñØÅ_ —;öã|¸M;øå É]'A@Üp!_¶Î<··â±UŒúñ$8ñc°må’fÜÓ&ãS°Fb±“Üf$î†îFÖ±W‘°)SFF"Ü2X™Y„sÇÍ5%¦ºT(*È…»e'[¸¡@wļ0Õ £}°í[ú ßþÖ·æÏŸÝu×™@Ò?€è:Ê]Z 7TÀ}ñ¤&î@ƒºlBÙE‹ø›ûRÛ¼T„?3ümØK}£Smu¶ÔŸ™°×_²P†BÆäò!«44ž¿¢Kà Æ~Ñéˆþ ŸpƒKüûꫯþå/9~ü8Îl¶€'‚éšF’é#ûÌÏ`,ló6N¾,âÇp)/e/ÉêÖ¼¹taŒ36Maÿñ+a£1‹CóI=¼8ÂåüXc5{ö«3}>1 Œ&V"•„Ð…A‘†ÍrÓl«¦4À™Õ¬Ór†€àn00Ú·gÏžU¯¿~ï=÷\{Ýui™¦ÊA# î¢`X!‚ò 6U·Š){uÙ¯½ÔE‚’úu©ènÙ©"ʱϻ[ð›“kpª)ùÐ^„Œ¿…5¹È.”ÚcpŠ6/åÀÿî¹ç’ „LUû¾lÊž"ž·êµ?,kà‹öø¾ÿõ{ß’ vÐZ»éÆëÀ…]’¾¯I“&-Z´V{óƒ¥b¶.ƒ€•xúîÈ! E ÆüúÕTÖæ˜dʆÎ`X/þ4_[¬í hÃÉY‰8*v‹‡ 3êù$¯µñç$r®o>ªØV7Ë|VQ¬Ý2×BÛZkNy명W†wø† ':e×¥NM…7ƒÎޜ𵴘¹r»‚C,õqKzçKª m ¬å?³àËwEmœvaÒÈíUp¹äæÿ‚Ï—nþùåÿqUÅ¿9Êæ‹·½M#‘ªÆ=xéU¾?nœ©Z©–½?¯ 2÷ýÕ«ÀÈÇBöþ܈ª¢uà"d&l2]æÇ·eg‚)W Åœ|ÿFþd;þ,8ÕJ'*'›ÈeH±¯bÖ‹Ù@^nP@;bq_|;ÉÈ:J`NE0ÚW;ç|$Ÿ;ñª§•á[[š¾P‹XúfÉ!àß;õãóOŒÓûŽwc~ŒøÍ}ÿýHÙãïï­<¯–²JÅÍô77M>klZ4Ö7ñ |¤~ü©>¹)E0 Ä},…}·=Eÿ0]¤°»²÷;ÁÆ#à’½øŽÍ=e(ÕºC¹½)…\iJÔÄ Å·p-÷aSq!”íMÿÑOá0 ´oö“?Ú¾füøI؇ø†}Ø öQ?‘íÙG€Æü²9yô@÷{n6¾_y¼zì»n+‡a„ïè_bG·ÄŽ~;¾-vì¯ÇOº râ7zøe_³lÁ†½Ö²Ó½M·Ã‹HØ6uA¼ò¦ÚBNüéZ“¶T6Í3MlÚË ÅqAÁ<>žÇóæ1-S#nbÎÊ•¦ÿëâ›Ó'¬\9Ç,†ijÓpAÁíBÅrÆE`¹-ßþêDZ=+ÙL1n6O¶°Ó7ŠùŽŽEv‰¿¢5Ri§°5ªYic¶ä‘(¯ð%;•cÐÊQˆj²2d¤/Û·›’%0êöäã3à“¡÷¹ \`ü‰Y?ÄwKÕ– ßxòŒº¤½È!àsÌN³@.ÊÞ“&!àeØïÈé‚s{üo;W>ýïçÆ‘cí±£-Æ©‘öC±öc`°½Ý™lZ<7VöÖ¦kÙî7x‰¸¤(,8ò玴3æwÁM+<ÁˆŸûrÁ¢Æ[ðHçê6Å¥ù{ƒÉ»öîYgL¸ó‹\È߯¿° þ„•{êàþ±ÔЄ¼„Ãfèçè9FÙ›óŒéKçl„!>K{Ó¼c àƒá¼Ë5%‘ Ù¿‹€G…Ù%)ÊåR'M÷dµ¥m©‹0Àd/¾ã#.!ÉüÏ%©ô‹D›b"`Pq-ó9;í“»„lª{÷î°~ŒÝEš ,ýôýY8~üx=´uÏ<óL¸ÖÁ; 0?à‚Äü´pu!оt˜\ªéÿ"IÕJôùO×â6RþÝ4À_¹ÄÍI-9Pv ̯á•W^øëG‡ÚY×}íÓÆOã'ƒ–ÄFÓßáÌGüâïfPã77_:Á˜þÓF¶Ô—ÍûÂÂ_ØúYzËbƺø¼¯mį?ÌʰãeC{î, F†O‹îY9 ¶tìTë©<ÔNö=|<ì7ñ›$ÑRä–Ü çq@c\^«#’±Øe_› …uXøqããDæ^ŸËMsB¹u:±w7cîuÁ¢bÔ.q³ž³eî°(T;£Y*¾àPHìû(ßìËÄnàÀ;vì‰0‚:.‡Í.Xã}ôÑ Aƒ‚µIÖ@È æÇX_IËLë ³ÐXÿ‰^øÜ͵3øa¸©& Êpùo^ù¿ËnX¼äÖ%ì™·Ó§Ú/î3¸o·ÁÑSîÝã6TΉßh$?¬£|ñf˜ÄîÖ¿bñƹËn£tekŸž33^³{eÕô2{Õœ9ö€ØÈÞ®ÀuFlÄq=± Ãõ¯¨ 8vêÙ—thñâ´Rf’ Åü@;eHü€úMÛ½büf bчiò²(œöeNŒ…'þ2þŸ6âÍÞN_„D°#¢ˆ±=¾Xktœj¥d6nŸ×ÚD¿N¥Ú*Á 1»MA•²›LË\""ÔßÖ:þï\ÐÚÚúÞ{ïÓ¡ßV7¹fX£ôCºÅS§[•ÚV.6s ;tUKæƒÊ;ûí‡ôàÝ.°ߟìýlÿYÆžO¿ïoÿx×aã*6¬Ý†×DÅÈÜáæ3¼¦g;5V¥iæ0Âht±y0͒ʦad—kHB± CÈ4¨§ ‘™¾¢Ö÷ÅÅçUš«>¬8£Òk¬Ï»Äz÷®Æ]¶E‚‘òˆ¿ˆ@&+î¬"^ÅÚSLÙ³’ýÚK]$XÑ)ž¤~µ–}dêbG›^­…`…èTØÄÀ€2V¸/Š`¶÷_þå_¶oßþ§?ý ØZQ’ãt’ÛsÁ6»0›’sÎ9Fû 5öØm„@ø/óÛ¹s'œÀ7ÜpCŸ>}Üpn×\=SüÂm¢*#~ãÖ0™«œ=dÍ|›'¹[DT–>vΧµùñ®ƒm{óÔÉöS§ó蟪±×õ~±×%‰GÄ Þ£¾¬–N]îò©Š–› p!Î#™í¡/AµD+Âcm |1ßäSÒåôt) 6Çô­ÁÒ L0}Sdð2?ÈsôèÑ/½ôREE<â–vyi‰¾¸ivͰqb¨ÇQM_™¤!D@¼Éw¬„Ö…›G|¨OyÕsSèl!i9‚b—PÚº €ÚŠY¹£üf!5ï.\FûÀˆBQÙþ ë[LÁêì<Ò¥È{´YÖLºf9Ëñ;B@ jæ×¯_¿Ûn»í7¿ùMeeeI‰»ƒTš[Z CLðÆ[·i9<â7_kÕ`P¯¤¦u"õðo5N;É©ïd û°Ÿãêl…D~|# îÜ`ÁNÌó”,F¨ðBw¿ -Ð* ËÚR'¡»e÷R'›"Ù”r´[KÇ»ÝZ:;ÿ±YAõ\\È:J^xhw!`t1KE„! E ìO!ÀTïĉ-Z$žQÓ([U^¿<¾¤C”³µUc-Bè¤VÉs~óc­¥#K¬71”×¶®%ÖÚŒNÍ*„!¾ø´°¥“ÜÚT‹ 4¯&Æ[¾¸ñÃÀ$¨ƒ'Å+ÊuÝ«x· vRRv÷«-U²Öê8 3›“_»ZMiqÊ2Ęŷ(E ²,’ñqqa‰$„!  jæ÷ÆoÀs~IÖöbBlrvª”[Ó”%U3ø¢Þ„MUSËé˜ ²€€rçÖz”ïôZ!ò E^Âög9ýZ^bSèTúNµÞ¹3™Û‰ʈ-(Œ€#E$..´‘èœØOüð2¿Áƒ{{ŸŸ¶)+毱½¡E«HBB€ò©ƒÞãe–4d/LŒ ß¤Ö¼+xôëÝ`€š2‘ ЬSʽG!²E|‹R옅—LI‡!ÊE5¼Ì¯¼¼<„ðQHY@ßÃßòò^;ÈB$ä"›hïè(ÔÞò;°KdÇuv¼„¤‰å0ü){œH…<„pi»´=’YF ¼Ì/Ë@»0#ðòË/¯_¿>ÌRl„!@(\yå•ðK !6ˆù…­E(†€xý6ÛÅ€ö͘1ƒ !B ‡˜={ö­·ÞJ#9Ôd$Ô°¿Õ¥“4¥©E@æZ„!@„@JóK .R&B€ B ‡Ð0¿>'›ÃSèé!@Ã~éáGµ B€ 4ÏùÑC ÔG: Ï>û ]áë¨& ¿„!iŽ=Ú¥K—‚‚‚h4zŠo]»v-***,,¤ûo¦Á­ýC‡¥[¯^½¼èÃXž<œ‡ûæçÅV˜tš¦Df•¶®‰ÿP[[ÝÈ’%U²$!\›~˜’é䱜uÖYˆ€ü>—NŽ ¥Oy†À™gž ×:Ø`§߀ù$æ—g í= }™œw›.šyÀülÙÑuØ É]P@ÿËÝæ£È B€ †€ùœ_Ÿíknn†!ñ°áEñ„!@¦ÊU IDAT„!»˜ÌO~Q~H’Ù¹sçŠ+öïߟz<0Ÿ;²® êñº)øFxIÖ 4™ÒÄ$0AŒJæ1«8e Ȱ8õ¨FМo(’ B€ B Ž€fmoxà=zôK/½´{÷î4Bj®iÇžol¬n®™ÍYnÀõ*ÆXl>ü¼oÓö\  ²Ñ˜Å9£a4o.]ˆÅñJ´—-ˆóe iòC„!йP™_¨¦}ûõëwÛm·-[¶¬µµÕo³”×ÎngãªÍÛÔÆ’ÉŒë1Ö[Û¶ÍFsM ô«¬onA_åUc‹ý:¥z„!@„!@t<|X‹m"”懞¡"}úô™8qâ¢E‹>ýôÓàðk6Œr‹á¡Õjþ37“ç,¥ˆøÑ°_а‘:!@„!uÌjà3É«fEãÀ “&M:çœs‚sX^µpM£Qi>ùW,ÄHÐ(žÃ'ø w Xì‹é½¶WJ]S!!@„!@¹ƒ@xÇü|Ë-·$£}¹ƒ4Ešev°¶,IјUê=roùå„ÖgŸ}–™8ÇÜÿÄ• ^Û°3¦pM/W>áìî»_[ZS½LãÊ'6¼Æïƒ+ÇÒ£~ΨQ !@$EàèÑ£]ºt)((ˆF£§øÖµk×¢¢¢Âœ½'Mš’ pèС$‰Å½zõJI_VÖü†Gö¼òòÍð»»Ékš]Ólå)àÿ¦)&édIÃÒ¬Ñ9Y!9"pÖYg¥ÅY×^[øç?;Uy z?ˆ¥e†3Öãa|qýƒÆå†P³ïü—aÀÇ€Š—›d‘ö^àä1wåí_úÒg3»ñSä„@!¯ª…kl°ÓƒoÀü€ óË¡F 6T }é0¹TƒÑ0¿TMdH¿¹¹yøðá_æî¶Ì}ß¾}/¾øâøñãKJ¼-µ…ßòje¦×¡Á'l'· Kå5/<±Šù­fm,ã°V‹À3{ÜÌóéàä+<˜©Í•iöì ¾~P+Ì ¤9a:^H´/'š˜‚$rºÈänÛQäˆ@¨ÇüÞxã xÎ&|][ –Yˆ‘7Œ½BSŸeG®"öí;\]­]‹ÉsÉlIH¢@+{ÑšrÚ*ºæO…„!@„!@xD ¼ÌoðàÁÞßçç1[R#B€ B 3# ®í…©ÈÀQ^^îñ5Î! ˜ÂÒ{­©xY$æçµB6©/Ïß›‡ÖT¿x8‚[I´€0(lojÔW·£­—LšvÄaÜ„¤Žâñòc,wŠÍî”$„!@•ùuެ)Ë!@düÛ+†É$!à<óKxWFòŸÒðƒÕÉ*2çóÇÿ²c=$ÅŽ‘¸Ö8–2– ö6áÆáìÏ&³`+g?NXSb•›kg$¬[a£~ÍÃÆyÿEA›„@æ ‡©2‡-YN ð¾É9•4`B‹OÞ±×^LÀ:ÊTœ“np|öÙghÌáà+—DjP¯`aÓœ©ŒÂÏêmƒ·âUr¬¹ò)ö,éËT‡¥·À7Í—c‚ÿøÜ²´`rܨÕçeslzÙf^[ÂïZÛ*€ 2‹ÀÑ£G»téRPPFOñ­k×®EEE………⪑ÙÈzø8tèPJAõêåÿê󃮿Eš››Sþ ˜V3fmk3*èÖ–R òYg…±¤ÿ>qõW÷À.ˆÖØRÕ ™–Æ€U9ñçõSøY?%(%$ùPkÔž‚8ÄfC„!ðÞªð9ø‘¸ÖÁ;=øÌ¸ 1¿Œ´A.Ú—“sIQÉÚKk ‘½M·z¦üÈVRG)µ)'"Ð9ȵ:!@ä3Døò¹us'7yàYó ÿëÓ§Ïĉ-Zôé§Ÿ&A¸xêBé·X ñ˪.ŒÎ±žb É`ÐÓiÖO¸fÜQò©Ø7çûdjÉæh” !@dAþˆf¡ÈER¾¶÷À “&M:çœs’&ÃÞ{™\7f|áç jfÕͨH\R ô¯Õ9™­a Ë›æW°%Ÿu³ê«gÎó00È_¼Æ– /¯7ŒZÅ%{§Z¢ÙäŽh±IÒv L¡G÷¢í±]Ÿ Ìb§1t¾an¦µ)Ñtè}V÷TMç£u»©‚FúB ÔÌoß¾}Ë—/?~üÀ½å_1£vV ç~ó[kG–X¯Ú€Q¹qË#•Àå`ƒ`cÅ\_»!^ÚÁæ}#•¦W]]­q Ô±±%bšåï ·¸;ÒX!‘| ûÁ{ºx1M::Îîær!’ù€×“Eä#ò—ÿý"G2 5ó{ã7à9?˜ðu3áñ·X¨ï³¨€Iß;ª/”ßšaª'¾Â#AƒWQíØ¹FO…„!@yŒ’?ðËã&ιÔÂËüœòûür~ 8=bð¤Þ½Ó³Aµ€$A™@‡úhÀ/Ø’M„—ù•—›¿Sï/1ªÕ8¼sggH“r$ÜE+A|çn"yÞ  ®íÍ›Ä(B€ B c€¡>œí•¿;6$òNó£>@„!@d Áùp'SnÈ.!àðÎözNóü¢t~fFY„@'B€_'jìI•Æür¤¡(LB€ ÜD€È_n¶ÛÿßÞÙ@ÇqUy¾ZjIvìDVcÉ!0‰gi™À:¦ef°gŸ0‘Éj8hwBB6bÂA°GÊÙØ–& öL‚± ‘˜cKØŽHpŸ™Î΢Ñ$–lc< ñ—‚íøKê½ï½ªêêúêªþ¬ªþ×q”êWïÝwïÿºïUU`½†ò ìÐú:0JøaPeô_F3!`¶7ãÌ(0áÌqET P2pcGÉ µŸ @Îo¤Ýì]¼}M¡PSßÿ?m´+ñšÊÆ äÊ5Ÿü4|ÁôU$üö æè"*(1Zñ‡´_‰ ¾Gà €ò#²‘ÈhwRÈ1Ô#=±8GÎÞ·Ö&Ez·‰7øÒ‹ÚèW¶áÆX}¨}ģ÷™ê¿}±9sbû4l¾'µ€£Â{6mÈ'dþòI¶]H™í¥t˜wþ"‰ÇãÎßáÑØ(íÜ=Ñ!ÔA ïŒZó`ïÛ­¡7ïZW‘8{ö¬è1SÁ§ú{÷_ºaâˆt÷Í¢èÈžAéñ-w8t œ}·Ò7¬€qîܹ zËxYÙôôôe¾UVV†Ãáòòrµ°•ÉÉIW!Ó¬\Õ×VÖ¯óóÎiwìØ±ãÇßu×]éÞÛËÂièì’ê{F:ú¹Œ›èëíÝÖ5f§ü(¸²%ƒôËøÔÉGÃÙ³g ³Ù?Ïåæ«¥ {ŽlÜÈ¥~«·È*0žÃ&€ØP+³fÍ¢km´3“o¤üH BùÙ ðQ’}Ù(9·dRf{Å<¨[ù«¿|ùòÁÁÁ×^{ÍAÑUmCbòvb÷N©eeƒF¨ây™K@&ý÷ˆ©\.üVÜ,±9`eKÎkç|Õ}6;,6u>˜Z§L {(>íLšwfÕŠÏ€§×ùÍ›7oõêÕÏ>ûìøøxZDÑÎ^±Ø–ø5v©ó¾öí" õöp´„ÚË\óÉ.'¥Ÿ"ü¤»{ÏÈÛÁÇÇzlVøÙ¼apõA^÷àêÁ ¢&µîÅ|qNt ¾% ®ðƒæóíúÛqÓ‰\Yù™óB¸4Õ»víÚíÛ·Ÿ>}:?4{K‹ýFØLo§“µ{”Œ7.Dj0 ÖbÎRü)ÒO~ü–‘È»õÁ—l"£/½ôà­¼*Õ|IÉÚ4Á!°%ñg‹óE@<ÑDk]¿Î/_=gj÷Ô©S;vìX·n]MMM:u]¡æݾë@δ×LJN$bº~q<ÇØíâ©,ˆÎ°±ÖoŸ¤¬ñÛ»•eòöÒz?’€ì­®ÿ2|ö„p@Àº˜y6·âÀ}T í-¼žží=qâÄsÏ=·fÍšúzg“²4ãiKé¥çù5HñX«xêKœžå·î†ñ„¸„ªZŽ'ûä,çað¬_Xã'âj¨·y~5™ó»¹®á¥W‹ã¢œÚ-ݺ[<Æôq0A‚„X@òLÀkkèó.Ì{@2ççÁ?JöïßOëüÒÝÛíOfîèé}ý r¥ü@¢C)êO$ÔÚ‘¡š¦å^¼ úG“¼¹z{“~*wõÒ£^zh Wæ¶ôq ¦|éÒ¥Ò»I2nÜûƒMõ²K?¸—/ï£;8ZÚy^Ñw•_$)táMlBž<ãs$Þô^€€€/¨ß¨Â[ï*?_Є“E'0ûÃ.ÿõ¯‹îF ˜zßûξøb CCP PH9˜¾(¤»è+XÔÓϳ½Á"hÜ`©>g7ö’ì›j˜߸Ú5¦ÕPù `œíe÷öâtÌkØÌž›óu¦ÿ²ï @@ ¯°v%¯xa܆€î›TžíUKqjڰáÂ+û¦ ú»Ä•ò{ýw¿íõߟ9ãî½×… ʽ¬¡û™÷c¶×CŸóH`Μêù7^ã ×;ìC|«ŠK¾aBCµ\P¿CiG=ýôëü´ÇrÕ1쀀;š©^WÊÙ³kÞ¿øú·Í­v×j[Xóç·>ˆ# PŠþpròÍ?žw¹XkåêOY·] >˜PÿêPO?“'9ãÔ4e‡ÂB „Ÿ+ͧúÙWÈaB_ P‚p‘)ÁA÷uÈBÔi¥‰òóY„#íÚ×n(Ÿèÿ¡Pûˆ.z¡GH®Ú,¥o«lMâÝÞ‡Âc“7ß8kÆú/]‚Èì¯Ù‚»‰H@#jØÓü¯ü¢ýñ¡ñ&úºG{·uˆ×öF"£Ý©²m¤'w6¤ôî_žtJíz£‚tf$µ,+ɾú-²ÏäôØx>:—mZø»iŸö‰ËeîЀ@1 àjVLú¥Ú7É>ººÃ”ŸÐ8^cÇÏ;çÄ+z[¯Ðx¤ì5oíml”vîžHZhkksb1Y'Ú?ÞÒ'ÝÉw퉾ÖXãðYñJR´_óFâ|wž7ûâ™ÕsœGÚSÓ¾¤YY6=*WЩÉbÓBI6¢Ä-LI‹?¯Ètª*6v'Jْ̛AmBWû1iBSC8¤À?‹ã&¾éB3v?jOÕ|Âuv‡‡zÀSŽ;vìøñãwÝuWº÷öJR]Ƕ–¦Ö¦ñÆáä+|%©¡³Kªïé2H仯FÝ ZÝÊ–Hlh¤?å’¡^N¶ 'y•,å…ôõÙÝ0.t˜ºÏw†[v6³æT­ól‰²‹²dÓ™a £»¡·1 ‡yµñöP3ûPŠiº—&vu‘{Æ-½Mž5«&µI´_’{å~«ŸTL˜0ÏÕæ¦~=%gÏžµ:ä¶œœà°VtHÃêåôè9“KíV½Œ˜RD­}Q.¤ÕáÑš¹¢¼û™ ­Jž‡’’­FÚy‚–yÀèµP}ùÕÑ©ÍÍ:2/cÑJà ~ú3›M’rZIô2œÑCR”‡F§ ¥ØHž|JÉð‰SÕ}ó¾P  JjTTT”••MOO_æ[eee8.//×}Cg×Zû‰À䤻§RTW;½—‘N*Rw⧠”Ÿg·åË—F£ÑùóçÛ;Y×ÑÕënÙ¦“ÑUmÍŠhÛ½SjÙV'Ù²;J_Ø”ZK%`Sûre_³Ê׸]cIŠ“ƒ4[Ǿ¤C£l:¹Ž f¡M5j`¤’2Ѳu%Hm)ÕúÃRRVjº‹4t¡M‘aâ+Ý‘Í(YW#Ðt=ÚÀ=¤-)Jºû:¤ú`Ê„yžl®q3íîìÙ³YåmâO‘L.…#íÍ„xx¬GêlèÚŠe„W%&vwKê‚–}iRÃRÝÂÆøM—óà•Í´0m<¦&FZ:…õºŽYe5Eü¯šqvb²l…Ô?y¤––FÊ}w0%;>&µµElþö¡üy7-`æ`ÈY³fѵŽ6Ú™É7R~¤¡üòÜûfIö9WrnÃÑ~‡Šýä:?1çë©´ß¼yóV¯^ýì³ÏާY·F_ôR[cŒR5©H¬&‚]‚㊾°¥¶Uâ+‘”f[œ-¦ù6užÕÎnD$G¥HËJþÍÏöYB†Ó’B¶5pÓ´Ez;yj5+ûJ&$ÃòŒ¶C›Õd©G–ãn{7eÂ=O67¶J[¢yz³¼miŸ'x:û;{%åVµ*û–ݹ{„åD„ˆ²4buÀøµjU3Ûrš•T6WëôèËZÈGÚ´®FYD>˜HЂG“òR$òpF†ö™äo&±Êe5ÛÒ+7Ex‡(ªÜ%¤ªñ”BW>©fÙï–XpGbt¼e§ùîoÃÖTÖH:©ÊN ÍVßÀW¼2á·R$‡ÅAß$*4W¢2€€€ èdyèõ{{O:µcÇŽuëÖÕÔÔXUoè¥å~ôuŸº¦ŸR>4ÜK›è±0.f3¹cߦJ:„úd$*¤U€©·ÓW§’‚£<“…]}17®»Y_Çò3É)FSšº mÚW‹ U!–ˆ™u!ßÿ¢2±ôÓÅ¡ù诡…]´”«*ÙÏ­Ê él¨÷s'’÷ʰUz²×¦³”r—hk±Ìú<ìÏÔ<éueaïžjŒvw¦”Ùú…ƒ  A"@ß§j8ž¾Ãcÿþý´ÎÏþÞ^e‰¾‘ú±?y—/é¢~%`:.Vê)7Sš ¬õ!¦°Ø©›¡¾¶@îYí—šZìŒkBH61t¦‰ŒîÑmÎlòµp)q¥ÒÓǜ⃡mj€z~f9?å%ƒtœÃVj5ùV×U¬€TP㪺:Iܶ¥ôW}kßJ9…'Wd÷ö:ÝRïõÖ¶eõØ]8tãŽøÃòp‘†N7ÍÍê²Äv¨¾}¡0Ê&è醔“¯-cYêtª×}@f¡ @@ÀHó±¯TåA.´ãú;µ`ÔÖÖ~üã·—}s@ê¾®S‘Í´ØOf*‹²k|®ž”ªºÈŽò£´†ÑÕ¢JrƒŒ7tËÉYv§µ}û”µtìQzä€&?KÏ™qtPšðIŒ«FYBÚ`” tƒ£ßøzHs3â™ IDATdÓÀÆað!û„Ã"ó'çüTIè`è1dÞqžžû …?‚(£®y*’žä,©OµN>°Ä$MIE ý˜²Z&”ÆÚ„®eEËÄmJ>ØàèYë§ÖCS£ÆÔÓ FÚÙ£oÌzF€€€ ø)ççG¾ð9WÔ¿Q´¬¸6žú2š•ô‹@]›,`ùi:Jv‘þo¸‰'ÇÞ°‡#ñ)6àÐåP<½Î/8ÔIøR¿ ÚY7IMÈY×óÆÓ$^^]󟼢€qc¢J®óSS Aˆ1‚@V ¿@@   ã¢)YùÑW¬Ø²±Ž¶ CBö¹=-ÿpÒÝ«sè0L”\dJa”£.µ§ŸíE–%`ãíÇpä; øT¯ñ›ˆfÎ_˜JüÇÎØÔÁ!çÞ!I€éj–9³g”N°ˆ4xôÊ/x""¿° zÍõœ9~Ñ›þÛ««r»ÔÒ›Â+pK¿n‰¡¾‡@ù±‡ñª/I£ÐêÞDöDÞX\b¯À2<=MaášM…\ ̳§¸åÊ~Áí¨I;Ûûæ±c÷‚€€€ÿˆLŠwŸä솨ò*Sövµ|?ùBõ‹ž‡6ÜFºo›Õ“xé¤Dµ¯uTÚº¤+•×αg³YÉÏ´v¼WA‘{x°œ÷Æ€ø‰€ñþ]Yù‰ž %Ÿ;wÎKôb-)õ¦îÚç¼v¤ÁÅkÁrÞ»¿ bÉ©¿ÇÞƒ€x‰€ºt*%çç)ýwìØ±]»všâž!¯ íçÕ‘_ Ž(×c, t„ • @ÀÓëü–/_>88FçÏŸoË‚ ¬«A“«ê⣠ã‰ÉÀ‘öúXãpâ{]=­‡kê£uy«Úš‡Fú£Qidh4"îžè訛ؽSjØ&ô(µEŸÔœ–Ð%pK¤Ã¢æ³»ñØXW"ÑÏ%YÏHG?{‘*{««˜„5ó)Ô¤“CR<ÖMý$ꘅÐh/w^±Æ^<ÛÏÌs×Ý×y@g_ácÙ‘Î=o¾¨áìÙ³"!øö³=íq@À—h:«¢¢¢¬¬lzzú2ß*++Ãápyy¹š•ñe`p: ““îIF77fÜ›§•ß¼yóV¯^ýôÓO777××ÛÌ›*÷P°DYÓ!YlEZV2mÅÞA/µu ¥C/ðj‹ KR}C„M GLJF[ºZvv“ô[I¯e5iˆ 47)’7ÈÊ’´å*z«îHo'ï#ºªMêf¦µµL}`'YKeÉ ³0Ú œ×Zi>QÓÌVfÝ‘{VÖ ^>{ölêS¼±7×/ð(x0è@ÌÌš5‹®u´ÑÎL¾‘ò#-ågF«$ÊHöe£äÜ2òúsçÎ]»víöíÛOŸ>>¶º•-‘ø »´Õ”vîž Œ_ËÊ(í³Œ׊ìn‰Ä6©•þöRf„Ù}òV¨;‡õ¨¥wª2'Æ{#úƒü,Ò~˜ äà"((êÜ…˜ö-À©g x:çGÔN:µcÇŽuëÖÕÔÔ¤‡Hê-iÑ%Ùm11µK³½Ý´Í™2é×ÚÚͳ|´?ÚÓ#I-jžŽä߸ÔÔÊrw¬9M¯ZLò¦wŠÕ0÷ÁY[Qk|,.na1J-VM³ïÈÊrË…Ús®ùføÃå¿þuDW E&0õ¾÷}ñÅ";á¸{˜ÆuL óNÀÓÊïĉCCCkÖ¬q¼ÎÏôÑyÑþñÞ¦zþFþð=yâ—¤_l'ŸÞåÒöǹðKNªRªåyseº7ùÀ@–…cÏlí[y`aº2÷!]+Íñhgo7w"ÒÖ&çüh&˜fÁC1æ’Z3ëŽ\ø”ߪìZ)f~ÓõC²oò ÞÛ‘Žƒ@€øîùí:û|Ч•ßþýûiMøÚbVî|H©D…š{Øn‡Þˆ¶P»o´gÚœÏ «F5Ý©]§õA[!í¾‰ZO“˜WTi¤z¥‡â•ÏÎ~^ñ~€€€€xWùÕÖÖ.^¼˜Àú#|4Ï+–ú© þL*¡ HÀ»Ê/) 8Ø~ê*b7%ð8?? |0%ñgŠ…Å"àõ{{‹Åý‚€€€@ðx7ç<Öˆ¨¾óÝï:éå/?ýi'ÕP@rB@MûåÄŒ€@6 ü²¡‡¶ù%ÙsÚþꯌnÑóñÉÚÔÔ=4àïþÎX%  Wxž_^ñ¸s˜íuÎ 5}C`ïOhÿýÛ+Ï þóW¿ý¯ÿþ”š<²ùž9òÛç2Xj{Ïæ#.¡ºŸ‡ØX’q<®L9¯l¬i,ÉØg4ð'(?޼NG`Á;Þ!þ½sÁ‚º›ßµ÷ÅÿýÝáßœ°V~ûb·®>x†m»×Lû¿5%ªc6‡Ò9´ãF‘ewY6×^ZSi+d|*äÏ2¹”WãÆ ÜÑ”€@°`¶7Xã hè¶ÞìŸêWVš[3ç…—Žœ:sî] æ¾ÑÛi¶×Ò‘‰±¥«¿p3?xóƽÙ?šŒì5ïªäJý…"‡ÞæÐ”Û“Ft}d³ÛvŽê1.Gþ¡€€äüèÉMyÓ®YÌôÒPSߢ&bG[ÍXèØ²Yo(+.«®šqÝÜ93ª*¯­¹fpÏÿ+++[ûñ%gϵôêæ«¥7è&l)Ù OÿÒTî‘Í|é¥oMÎêêKöÄ4“ÅJ¢Bµ‘2ÌŽÆbÜú=›÷‰nD…}Š:¤$“e¬$Ù6¶/é¡>Ii´cî‰$ékrÏ7kcÑRKa"§R*³ J¬bŸâãü” n{LVÖóaá'Åè€~P˜ïF—Ž˜F-ˆp_…zõ ¹ïTÚ:—T\<.¸)O½«)çì¶Õ¸’ ÕÑ‘èWÓirùêá­¾¤Mc/FoôŠ> ºð@À (? —ÞÉFÏÈL$Æ{G›­µ{¹Åþ†6Ç›b9‘è×¼Äqsµ¢QVº·QJ-²|Žßõo»îìyéç¿<þö·]ûϽqòÜ‚k–Ý~󥋗¬)RãàêÁ[ù7­ø¢¥/fuþwõà†=+¶<¾téã÷n™A–Ô–¼ôà«+•ÉâUBî{âÁ†ðdéÁ'RV¾4öî-¢¼G;ƒ{è«úî^n„7cvè‹÷^‰™ íÒ½÷l>,I¢í™/LlÖM&¨ v,=1Ô$û¦±<¦®òÍ;׿ÄC‘Žì|i}çÆ[ê6n{4ç“Öã0±Ò»t³‘³BõàãK¹¿fX¶JòÈh–˜¹¤;όѱ öç­Ù—L=Ñõª~d“Ÿ…t­O­dÖ‹÷Ô*P”ƒ8 à]åÇÏ;ç M•º…Òè!–ÕÃë¿®¿î™¡_=ýÜ/ûúÙŽPÂ/ôߢ yÞª3l¹°Y^þíØÀ²L¶PŠKAÊ”˜!Ée³-}ü wßòî¥[ï%-¹gÅÞ3½)Ç—®^!$¤º#ZëÒ3䆤Z&5²— )ÑDsˆR–KÇ&Rn1ѧy¬=Ñ×$û¦±)g`b¨|÷—˜ôKqgã¶Áˆ\Ym%Ã1c[Ã8˜¸dµ2"¦Á<‘±0Ú[wË:Þxžïôq࡞¹½YSO QËÚq ³@[ÍØ äoMè #ÅP«XQ –€w•ß±cÇvíÚuòäÉ´1$+Œ ´uñ¬ž6Ǧî›%ÞØ0Ûšú¥ëˆUMfUcŠ…|è“§ ù¤2•4HñX½¨¢o®ß’;._Ʋx>}&ö—¡aýJÏ®ÿøÏ3o›{õÔ“ò«¨p¶°õî•ë_z•˼õr®éA.¹\o²šì|•$¤~BÖÌXÊ&)_Òfµ­ËŒv¬<1Ö´¶ÊŽ8`¦Î÷ì#Íšª¥ì ;=êÀ£)½Ki£NWaé»5§CªKJNØè…ËgfS88øÚk¯¥,.ªhk–†ÝMÊŽ´×LJÙDñ6iç€I7Še¦êê:ºÚ†FD-Ed’…-b®yXêæ«%yc«˜Ñá¶x¬gDŠöÓž˜’&÷Fzä.³A6q7xE™é¿‹/ΞUuç²…!‰Ÿ¸ç}!)AKý*–Ê%€Ta¶o÷Vú6Õ&vR»Á̲¹ã»{iQ—”³²ÓP'¤ÃáWÙ’,¾Q™'¦µg|¶WlšC,w£´S§Ú±ó$µ¦•_Â5ÙeÇ„{vïƒæÂ/Û6ÝsŽ01º”6jCùï>‹­ÒÎÜ%£“š{³:On®kPJ$qÚhmë€ë9âi¤—êªrŠš‡Y„iÛA2#`ùE˜™¹Ü¶š7oÞêÕ«Ÿ~úéæææúúzkã´/àã÷pûÖµ“G&Fz·ñ|LÖź Ëâ@tU[óÐH”äÛÐhog?õxhTŠÔ‡b¢BÛ*þÿHo'7Jõ¥nš}ŽjÖ7Dš›œ{ip*¸gÏÊw`d&øT0áò²3§ÞX}? ¾p¸|y¤þgÏ&¦åå–'<%Ä~£i]aƒr-l1Ÿ¦Œ­ï»ûæ}»_º÷Ö9¯þ@·e߸¼äà»Í‡…-å¼õÖ9²9´ƒ{Ógƒhb­‡Òƒ²µ¥ó;“®1ÏnÙ<(fÖïµ¹ƒ v,=1Ô4D”j]nî1«Ït‹…ðëÛRÜ>â|‰†ÔAI^Ou)mÔ¦hâ~+ W„.»mtÉŒˆi™Ýùco6ÕIJž6K—.•tg£ö<¡£ÚÍØ‹oÔ”¨/ i!SEEý-J—ùVYYIO›///§¿T}œÌ9ÉÉIW6«««]Õ×VµµµmÙ²E{¶Q®êá‡îìì´7úÄæ­ÿM‡}lŽnß¾}ݺudá?ÿó?>ÿùÏ×ÔÔ˜¤¹ÔnEG‘ô«뢻1´…ê¾aGêkj•¶Éw}h›ˆ~Œ%L[R‹mR«ÜNí0é™}×r=Ö.oÎòÆ3Þ+{ì}_ظÞèiW®\¡÷j\ºté÷oû«õŸ|ã7þnëÖMO>yyjª\ÉHÓåðk_ûšÍ Y=gÎäù),ôö6õtVÓÅ”z¡.è§ê½Ãoo3J@ÀG´¿õžu»§§ç«_ý* ;ÕCRxý×ýgögôuvÍ5×Ìš5k&ߨœ´ ”Ÿg‡2ߎ‘ìË@ÉY}·ªÞÒøØcéÞ† ,S ùŽÓ¡ýS§NíØ±ƒ$ …ìK53±{g<ÒÂ’ƒ”X‹S*VÙ Ñ4n¯itGH¼¹g¤ƒæ`'úº-«iÚÖ­l‘Z{z¤Æ®<Çî)‰u÷uF]Þ3L÷KM­ú| ©—%]˜Áß¿x9[IŸ1¼D9bm˜y*\¤&F_Í “¶í [wéË#É÷ìúÒ}8   ^$åÇ´TýX=,“oÛ¤Ý6Â+eÌdVæÃDïŽãŒ÷Ž6[K4öÎ.^óKÑ5KÃ"´ñ†C,´ÜºyÀùj©Hè|Ù‡](UÞU~ñxüܹsÆe¢¯•Þ£›è/f£u꾃ö¹¯R·°Q=”«ÄãøX<ÒP/¼,zh¹‡enQ$üHšF)€€€@F¼«üŽ;¶k×®“'O¦‰kb÷ÎxÛ*©§MŒ©ûÉIáö*lâ±úPHdè43ÆJÊŽ7‘g’©P­bœ¦Mú924ÐÖųz¦>˜eì»M}‡ôñFWµÅc­Él·…×)>Ûù©ïÉsŸ1áë¹!C  >'à]åG`—/_>88øÚk¯¥¬¦ÄÒÔ#%ÖÃÒƒ|ëFûÃmŸ¢e Ñözå ›®U%S<Ö-m£ÃmÍ¡V¾KûñXaJ™‹HÚhr6™LëUHv½MÚ9 oA~Ž·ìd¦¹²3º½³EÌ2Kݲ@T|ï•´¢QoÙÓŸ‘öóôðÀ9ð´ò›7oÞêÕ«Ÿ}öÙññq;¼ñ1ÛÚ¦õ ‘¤¦K±9qhTRr‡u]mªÑHï6ž¿£Ü›iYÉvù¾q>W]ç×Ðmrë†uÔu¤·“§-YÏ&ÙÚ@¾|PÎN&«0·UÅ9 8­øœˆ‰]ï!íçý1‚‡  >"àõ··Í;wíÚµŸÿüçkjjLÈÖ­l‰Ä†F(…grP_ÄTŸY·i—êëe÷™»ÄÔ(W‰9Ûê:¶õî¬g¡êLêBÑæ"™0”VåÌ…|:{öl¾»€}(.ZÂ^QQQVV6==}™o•••áp¸¼¼‹›‹;4Eì}rrÒUïô¾zWõµ•½®üN:µcÇŽuëÖ™Ë> Ëk…šCtû«,‰&úúÆé&ÊïñÉ/Zx'I½JÜ$ÿÆ¥¦VºC+¡ØmŠ‚œè릕zý™ReK#-ì¦ KRLS×ñæž‘òŸõ¬q•Uéë«ïàYGÕ®&ÅÉÝîî댦Ü-ß¹{‚µá‹ »ôJ1Ó¸òßnöìÙùï=€€@1 Ìš5‹®u´ÑÎL¾‘ò#-åWÌQ)jß$û²Qrn}÷ôlï‰'ž{î¹5kÖÔ×Ë÷¶š‡Ç±™Pyk•V2­Ã!­ÌcÛ$O¡ÒÍ|£}ü ~÷„|‡G´_5RO+ç ™5󾵥ʬ+k.žÛb惉h?_DH[«Ô¢Ÿí.Ë™×ÃÜ®ÞmI^`¨Üª"EÇZå8].94ñ®¨E¸¹·¨øÑ9€@¶Ä—N¶VÐrGÀÓ9¿ýû÷Ó:?šðM/ŸÆÕW#E˜Pwâÿuš^[[…´¢ÁW3fVû¢ÛKIOŒ>°>…MAmµ] &–SŠôn³ÙÞ†Îjèz,>ù Íç“‚› é þ£›Ó×C È?ï*¿ÚÚÚÅ‹S2<ÿЃG @üyt`à€€€o xWùE"ßR…ãÙ€æË– ÚƒxŒ¥ý<æÜ)QÞU~%: 9[;+s0 Cÿcø__ýÌ[9±Vt#7ΙټøÆU·¾ÃÆ“­[·þîw¿»xñ¢Mªªªºá†Ö¯_ï#Ÿá* @ù™ Äð×±'†NäˆÀs¿<¾í•ÓUËþdöÕWåÈd‘ÍœùãùïþË¿NO'þü¶¦®l޲媙3¿øÅ/^wÝu¦|WH7Ò³&(®6øÎy8 *(?œ  w»ÿßëUwü—ºšߘœßß¼1câ¿,ÞýÂ?[)¿S'O~¦³sΜ9çÏŸÏ;ß‚tpíµ×Ò#Æzzz Ò:|ðôS]ò4ì‚€@a ü~òBÙ¬«¾1/ óžb¡ˆ(.+ô€b’J.XV°jèÙrŠ…"¢¸œ{ˆµ}ÎY¡fÁ çW0Ôè@ Ô ”Ús=ø;Òõ(“ Ââ/ƒ†¥þÛ‚øóFÊ/oha@R ”à× †Œ³Ms}“HÞü±µš*îÌ;©-¥—AN̤Ö9üã!©ûÉö›äÒ;¿}ℤ{cº ™Œ ¹oT¯ð®ò;vìØ®]»è¯>'è:»c=ÊŒïD_÷hoç*µarÂUθñ9Ù>6KL›:;k¨&Ïó:T[©È'’ù¦$ð”’¦¾CvÞ’´¬¬ãUôFôŸ5Ôn´SÉê>Ûio'„36v,*Øy\´cé¿OŠæ:L äVúÞû£_¼§î] ó®…·ÿýðó¬€y˜xþKK»Þóýávm•ŒiCÂϽڥ¸¤OÜmpúù/ÑcåíKäá-Ñè–-J!+a[²–\BÕäFÑ-‡2¦Á8+ÌtìÑHêîëŒv0íu±R*kîéè§v†j#íõ±ÆáÄ(“aõ’ÔË RáΖñÄ22ÒNb0Ú1nVMëo¡VfÆ«ä³BMÏðnÎÍ›7oõêÕÏ>ûìøøxZ‚ÑÎ^±Ø–ø5v¥Ê$9›×<´éíä"L;««6qhT©U×Ñ%ÏS!©ÆzžòkˆK¦ÕRÜåëüÆ{#CrVÒh¤¾!2М¼7„Uh[%T"ë›õc½)‰D’¼ñ¶”ÐÓvdm´èGö+úÀÜ ¤RÚed®*$ŽÑ68zäJ±ñ’„´ä¡çÇÇŸúäöÿý£®Œº©,çÐl1¹±'×5çtô;knáÛòÇò KúÌš&G÷ïJ¨%wüÏñ÷OïßuðàcË•Vwí?Bsàx”lb+‚€?xZù¹sç®]»vûöí§OŸNC´ne -öá3½B3‰”k–†Y&ŸÄ—µ ‡Õ˜ÊÝ)Ë:Ûê:¶ÉÒTÔO5R×q ‘Ø&µj¦™M_«`¥w%ƒÐ@CÏp6£è¬Ö;?Ú¼äÕ£¿ÑTþÍÄËkﺃHÒ’æ¾3‘¸ã3I_ïܪ­ä̸³ZN8;³¤©EqIÃ?Ñ»ü³®»†›÷bÛ¾‡–Ð\6¿4(Íľ¶D¡’µOñF|ÛÑJÉ¿d+×®q²Ø@À÷<=ÛKtO:EïI¤æÔÔÔ¤ƒMɱÆPsŒ2l)ó¢ãcñHÍÕ²Yà¸ÔbeÅX­nac\ž ¦•ƒ”/d³½T(ÅÔ9cfÌ´šY/ܿ־•4ok0Âë“ü—šZé(« L^Sßm]l¶šƒ<ùÇ&š‡d´‘ö|Óy«ïÈr Ù,‚¼—={VôëkÞY£ƒ‚ e~”;Ê]· þbãÂEw?\ûÊ£wÑc¿î³‡¾²çQÖ»Aby*iÁ_|ã+Ã+þûÖ;¶ßÏEOn7ŠÈÞ I%÷!/¸#*i\~á‘EmÒ]ðÖ.àÆŽN¼,Ý"@ò)Tï‚P»§~úµÚ|ËžoD—|}ßO]F%ÄgÅá{na5Ýû¤†™ñG7/VTT”••‘#ôFÚ*++Ãápyy9ýñoGƒJ`rrÒUhÕÕÕ®êk+{ZùÑ뱇††Ö¬Yã`Šf|#ÒBÝ‚8*ì®g í"mm69?“jÑþá¶Psˆ.9‘ÞÞ6i§è£¼·‰Ûc%ÔúM«i!«û¼®ýôFV Ñܱb‘ÔX¯ ®$eÅò@6ï+ü‘Ìï\&é8<’}ã®EÓude_ IDATêgÑ gÏž-úÆÅ¯hc€ŽóG Á4G.Í/{d¬ÿk ‹q›Küñ3ŸÚˆ§¦d͵àS?8ò±_­ûÚ‡sÙ7·•Fø±*„¼àSÏü8qߊE+üméûÚ2é·nþ˜)‹UÎù ër¼Ô.‰ƒZ}j$%KŸe‰ج’É9 Çi± ]ëh£™|#åGZÊÏ1 U$Ù—’s‹ÃÓÊoÿþý´Î&|m£¢3Ô)W’>,9Æ7µœÍ¤v¤˜Ð6±©–¼éƒÝ;k\%d¦öø-$lëHí*é;˜lª77¡$ÝÔWàG”›Pؾܡ6] ÞDoÇЯåÙ гCÇÜÈ(–®“¦¯ŽŽ~U©¤¨¬wÜ÷ÿÔ\ôiô¾Œ$XºÎÓ&À2YöYv€Å•ZÂ$cLÆ«Å!h¤–H)dÒÅgrŒ÷Ž6[k?ö¬zu¯Ó‹½¶ƒmÃmô9nßEc§ €€€@Ið®ò‹ÇãôZkƒ0Ñ×kdï¨UêÖut¨ûÚç¾JÝÂFiôP1¹¥x¼´xΡgð'ï*¿cÇŽíÚµëäÉ“iÀNìÞo[e"õ´ùB…ÍRÝ:Ðjå»´õ¦”¹ˆ¤­YNf œMÉ®·I;œ´0÷Ö*G‹[)$¥h>$üŠ;è@ WÄ p­5m þÜÍgØqNÀÓÏó›7oÞêÕ«Ÿ~úéæææúzku—$G çê"ÍM ã&Kå&Jm]"wX×ÑÕ’Fz·ñü]tU›4Ú°’÷Ãö»i>7šÒ+­Ãã†ù=‡Ì:1êš:á]óž»Í«iKM½•¬BHo¯¸5¬®}¤ÿHÒÑÛn»­§§§¸N¢wpE€.\êÅv(i š‹B£"te•A cžV~½'gíÚµŸÿüçéáé&qÖ­l‰Ä†F(…grP_ÄßÄ˧IãmÚ¥úzÙ}æ.9V£ÙõåóÖZÍGûåååPYY™45%d}¤ËåŸþéŸ~üã÷y¬rßTF«ß:VG äºÿP…šê²±D\ ¬bÒª=QG\âhŸÑ…Îô÷ÑÊÊA W<=ÛKAž:ujÇŽëÖ­3—} K“Ñ6Kù=ž ¤Þi€‘üïèoÁ`·e ‰܉¾îÓµƒ+6»l願¶ô!¥5u­L³žm,«‡L½5-tb­ØuèòG]i£w¡ÿü…èŠ(œ"ý7===55E?½¶‘WùÛ®˜mºît@èkÉ”•('žb‡~ŠMvÝG*#¢=/DIq’[¦ÿŠëzãåP÷+#>ª¿}â×Êôê$.\ªA’z/¼ð} ‡ÃBö:uÇØ/J@ O<ó;qâÄÐÐК5kæÏŸo?-Øoh¢5v¢›t¥=¦CÍ!&¤ÚÚÚÄ!qSÛ§”ÍËÖ­j£‰äPŒ'ûÇ{#Ì„“bªWl_Œ)Ó¾¦>¤¶áŸ¢ýò«‘ÞÞ6i§I}‘©·¦…ú–^û,ÿá’Hö]¼xñCúÐ3ßûÞ‡ššèzê5W é}%d@€Z '©­n_[¢Ö¡Ó&¢Bf>’úüPÏñ;¢û}4þâ¤ý…¥&ßûÞ÷-ZDº .КПxô^cz#0] ©D5›¿¸`Ù›&'']9V]]íª¾¶²§•ßþýûiMø¦Oã꫱GáõË…âÿuš~@[…tšÁW Õ¾è!ÅRÒ£¬OaScP[­Ãˆìiª5ñ–É]Ûô„ŠþY\æè'mtÕ£ÌîÛßþvR|ÿ(¡VÑ=´q€|N{­·ižöú ö¢So¢\WMEª­,öÕúÆC:gÔš¦ÆÓzŽ à_Úßkãï Åeü¥Ðþ&Š}cø$ìèQeT~ûí·“…«¯¾zÖ¬YW]uÕŒ3*++IùÑó¿Fn%RB²/%ç–’w•_mmíâÅ‹éwÃmH¨ï#t¤‹¿Þ•Ñ ]oºé¦?ùàŸÜ´‰¢hjj¢JšFñlD¦_ yõVý^1~ýˆ~µ_BZOTµ'*hÅŸZM×6m_yÔh\ä3µ©`<ÈH %Ù0ý½Ö*BÑ…±„Êm©„6’}›6mºóÎ;i ˜¾×HêÑO¨=åˆÓ9û¡ƒG¼«ü"‘ˆ£P)HûÑupæÌ™tY\¶lÅôÌ3Ï|ï™gî»ï>¦ÿ<¿Yý¡_0ÇÕï‡=ÚÔ7ŠB]tEV±¤8iTË!òŒ¿5¢Äþ7âÅ_ܾ};yA²RAšO$ùTåg4› —a, xWùYºŒ"@—<ú{—¯w.¯ªª“”ù#ñG«aŽ?Nú¶EŒP@JŽÀ’%KÞûÞ÷ÒŸµBóѵNáU'y¡ÿJî´(^ÀP~Åc_ò=‹+ý¤.t5¤Ÿ¤/]ºDòo{ÛÛh)4-ˆ¦EÐâî9ñçµýÙ%6øèÕŽX üaöy„ê%Ž.kt'©=±QXtwþŠË]ñ|+Ü÷(??V°}ú.ˆ4""B!iAºnBùûp$³gÏvÕ•A ÀTå'f6HÿÑy«ÎöÒ•öé*G›¨Y`÷Ð]É€ò+Ù¡÷\àjòOõL\éâH—Hñ÷1éBÒHøynð î}•Bùœ::tM€.kb ýÊ ý§þ²ÊÏ5Y4È‚”_ðÐ4G´«&Å“.‹êã‹…æ#Ùå—#ð>6C'f{}<~%ãºøƒV½š‰¿f…û¤…4$$Ð%s^9P(¿"º×Pÿ>—Kº ªKahG$üD}ˆ¿?shÝ'­-qßãT%'´I=¡óÄŽø)®uÿ•½–£»aü@GåÓx{¨yÀðj^zco}L¢÷stÔ¥6KÕä‹>¨X}G¶ÏûfÏñÌ¥ÑlRÛ§Äœ‰6<9©^"ÅŽ˜¡¼](Õ^Ìó:BY• üJcœ¥ú7­€BÿÑO Owé HÀÃÛü¯üèÍgC¡ž‘Ž~zýõv´w[?‰@z_o$2ÚÝ7•%!†‘&½œ<&PÕ{$hêCcìÝnfãèXî0Ù·³e>üðÃö<±yëÃÓa_'›£4ÃKwBÝu×]4á›´-:ǾÑ÷…ëíݧÓää¤}5¨®®NûÝÚÓÓóØcéÞ† ¼û<¿ÚÚZ‡ÏóÃt*&’WôGΖ¼†q‚(ðÍ»Ê/1ÞFQ°Q@G    @ž^ç@Þ @@@ŠGʯxìÑ3€€€–”_ay£7((¿â±GÏ    PXP~…åÞ@@@@ x üŠÇ=ƒ€€€@a @ù–7zâ€ò+{ô    …%åWXÞè @@@ŠGʯxìÑ3€€€–”_ay£7((¿â±GÏ    PXP~…åÞ@@@@ x üŠÇ=ƒ€€€@a @ù–7zâ€ò+{ô    …%.lwè ìLNNÚÆ1ÐÀÙ‚Ó@ 0Ü^Ъ««3ŽÊ/cth˜{ٜʹ÷=L€®’8[<<>p @À¼^Љ„p% ‰ÌöºT_€òóõðÁypAÊÏ,T¿P§zÉauÊÏ/Ã?A@@@À|ZýG¡üÜDmð­þƒòóרÁ[pJ@—ð£fP~NÙ¡€€€ø”ŸßGþƒ€€€€SP~NI¡€€€øˆ€˜êU'|Å”ŸF®‚€€€@V ü²Â‡Æ    à#P~>,¸    .¨¾êœ/”Ÿ |¨    þ" }˜yåç¯áƒ·    à”€îöjvÚõ@@@@|E@U~¡P÷öújèà,€€€¸!@RŸhu~nÈ¡.€€€ø€*øTß1ÛëÃa ®Ë“““Á ‘å˜Î–…9âp{A«®®vî¬Èü©ÊÏ9:ÔÌ;W§rÞ½A&@WIœ-¸ à‚@^/hÚu~Â'ÜÛëblP@@@üB€dŸP~êyŽœŸ_†~‚€€€€;jÎOm†œŸ;‚¨    >" KûAùùhìà*€€€¸  Ê>µ ”Ÿ |¨    ~! •}ê´/”Ÿ_†~‚€€€€;FñåçŽ jƒ€€€€è&|qo¯Æ®‚€€€€ ¸·×,TÿPeŸVÿa¶×¿ ÏA@@@ÀŽi>u¶Wì@ùÙñÂ1(¿ &b;¸ÃÃŽŽ€€€€ß `ŸßGþƒ€€€€#¡PH[³½Ž¨¡€€€€”_!€€€€€9íT/Õ€ò3Ç„R UÿáÀŒi™œœ Bˆ¡ p¶3:(·´êêj·n©«ý üÜ¢Cý<ÈàTΣ70íat•ÄÙâáñk .ø‚†Ù^cƒª    àkP~¾>8   .@ù¹€…ª    àkP~¾>8   .@ù¹€…ª    àkP~¾>8   .@ù¹€…ª    àkP~¾>8   .@ù¹€…ª    àkP~¾>8   .@ù¹€…ª    àkP~¾>8   .@ù¹€…ª    àkP~¾>8   .@ù¹€…ª    àkP~¾>8   .@ù¹€…ª    àka_{çF`rr2`!œüÀÙ’?¶°  P`n/hÕÕÕ{å—1:4Ì=lNåÜ{‹&@WIœ-¸ à‚@/h˜íu16¨    ¾&åçëáƒó    `N  @ù™ @@@‚@À(þ ü‚0®ˆ@@@œ€òsB u@@@@À—ti?ÜÛëËQ„Ó    à€Vü!ç窀€€€ï @ùù~€€€8$å窀€€€ï @ùù~€€€8$å窀€€€ï @ùù~€€€8$€§º8…j    à3êó\‰„p9?Ÿ !Ü·T åçꃀ€€€_ @ùùuäà7€€€8' Ò~P~Ή¡&€€€ø›îðð÷øÌûÉÉÉ€E„pòGgKþØÂ2€@ ¸½ UWWgì!”_ÆèÐ0÷²9•sï ,z˜]%q¶xx|à€€ ¾ a¶×ÅØ *€€€øš”Ÿ¯‡΃€€€€ P~.`¡*€€€øš”Ÿ¯‡΃€€€€ P~.`¡*€€€øš”Ÿ¯‡΃€€€€ P~.`¡*€€€øš”Ÿ¯‡΃€€€€ P~.`¡*€€€øš”Ÿ¯‡΃€€€€ P~.`¡*€€€ø…@HÙ´Cùùeøà'€€€dKÊ/[‚h   ~!ö‹£ð@@@@ 4ë«¶BÎ/€h   ¾$åçËaƒÓ    (¿  ¡ €€€ø’ÖùùrØ‚êôäädPCC\9'€³%çHa@ XÜ^Ъ««3vÊ/cth˜{ٜʹ÷=L€®’8[<<>p @À_ÐäÙÞß\¸‰ª    ~#²ÎâÏoÃA@@@À¦ü´‚âσ€€€@€$×ù Ùñ ÁE(   ¥N@—ö“ßÞ¦ >cV°Ô!~ð3­ºK*?*EÂÏÏà ßA@@@ ~‡ÿ7ÍuýLÓ‡A@@@ü@@h<ñSøf”\ýŸeþ¸Ä    àSªæÓúO…LùÑ6Å5ÛK$( åçÓa†Û    @˜– …¦5,„dëüdU¨ˆ?¬öà   ~' ž…Èë)wxðbUó!çç÷Á†ÿ   ¥L@h9£¢ãëüÄ?5çWÊœ{Q LNNµtî'8[ü4Zð@À–€Û Zuuµ­=ÍAå"»G’/™ócúO]íçÔê@. ¸8•sÙ-lù]%q¶øoØà1€€ü]ÐDjOî“ßÂK[ÊÛÛè3ù™ Ê@@@@À߼¼ÉÙ^ žêâïQ…÷     <§E»ÎO¤yÎ=ÐO>„œÎ*y¶—ÂãòO+ ƒ2â%T~% aƒ€€€@ÉÐ+?¤ýJfè(€€€@ÉH¾ÃC â¯äÎ    8)OuQ¢Ky‡‡(4­8@@@K@ܺ¡»·—¢•Ÿê2Íïíz¡ÜèØ€€”‘È›N” ÃTDÿ»"pý'JJ€ B`ÊoJ <ú¦"úwQs@”¢ äÜ%þÞ^q Ç,.ùÂW¦%úw^Nú1W—K—uÉÁ„A@@@ 0HË©O<¯ùš2V¾|Yº|E:{6éµebð)Òr—.Kü£p?”×^Í^øâEéÒéÌ©äM×W&.^ði˜p@@@@@"-GÿΜN ¼KU©¾ð… o½uáÂ'N©ÞY]óÖ[o€€€€€O –{ëÂ[oœ˜Tý¿iÎR}aVNÞxC=ðÖ3οuÞ§qÂmÒro?ÿÆþ ¢¸0¿ŠT)?–ô{ãå÷ÖuTÈ@@@@|J€´m©oI¾ð…·.\¼páä‰j`¤ióiœpÛ×&'“Ii_ç @gK £ Âp{A«®®NëWsN¼¡xh–÷BøÒ¥‹—.]š<“üƽtñ"ýKk@ 眜Ê9ïýH€®’8[ü8pð@ÀH O4!çÞÔ¤T.“à»t1|åòÚΟO.죂Ëô l    þ$@Z޶sç4)¼+áééé©ééKš'øQ mþ ^Î9X€IDATƒ€€€H²À»r™Þà!ppÅ7¦'ûQÑôtòq/TA¼åØ@@@@üH€´mLà)Ê <)–$z¡›ø§‹½å €€€€€? ˜ ¼pˆd_(TVV®Fâ›?ƒ„×    $îØ¦xR(,•ñåeIH$û üp΀€€€€ åW®Ií••‘êc9?úWJ*?!ý)<'Àä\ªÀ£Õ}TBëüÄ2?Lï–ø‚ðA@@‚E@7‹Ëµžf’7XÁ"(?œ    P*øloòQ/¥6â`àOhÖ„È÷¹òc›öˆR†ÿƒ€€€ø•©;½À£wx$7ñê½Bôk´ð@@@J”€Èö¥¾••…ù›ÚØû=4`Lb‰bCØ    àKIi§¦öHñɳ½)Â½Ì €€€€€¿ (/¤æø”u~{þYx   ŠÀãÏufGÃì½núwxP9”  @@@@À7˜À+•©“¾Lú…BaöÚ^z‰[8ù`?*)+ƒòóÍÀÉÑÉÉÉ …ƒXòJgK^ñÂ8€@! ¸½ UWW§u´é¾òа<Ï›`¹>* ———•—•UUVª&ÊÙ†'<§EŠ ¹'àäTÎ}¯°èCt•ÄÙâÃqƒË &òtA+cj®¼’ '5mŒà€€€@ž°—®Ò«<èÅì›M¼Ò›=Øæ°¿Ì&ûæóÍa¨æ´f‘²¶i•Ÿ\…   Vèå½LúUΨTæwåô‘´j¤)§7X8¨…*    Å'æïó-«ª¬"_„ø£Ï¤¸†%ùN(¡€€€x„@˜Íõ–•WTV°—|ˆ}P‰ƒÙ^,É÷Èá¡¡`‚(@@@ Z[['''3舭󣭢‚’|| ?½ânð(/ËÀš€@Æè θ-‚€€˜ U§}X ÿæköÙݽšCô„(?€(ÊÌþpÉŸ?°   ¾& tî1}TH©>zª é¼rñ(g¤N"ú:p8   %G€4ý+Ó¤òx®O¢wx°g7'Bì™ /AίäN    ”Ö#Ù§}X ‚\ùÑbâi>¶©; €€€€@I [6HùUT$ƒ¦L R,õB!õkš™ß’¢„`A@@@ è1-ô¯Š=µOÞD S~ê²>õ ]š»=‚:&¿¦—ë?1ÿ°ø€€Øغuëï~÷»‹/ÚÔñÑ¡ªªªn¸aýúõ6>#d8¾8d?ÊBçiïÜZP~u‡vzëü|1Þp@@ W6oÙrÕÌ™_ü⯻îº\Ù,®'NìØ±ƒâÚ¸aƒ©'Ù‹¿ íGYÈ9í2å'Ò~j´P~þxx   %S'O~¦³sΜ9çÏŸÏÒ”Gš_{íµëÖ­ëéé±ò![‘ñQ¹ý( 9§ÍùÑ3ût’ÏGÁÂUÈË—/Ó—è… rf±Ø†(Šˆâ²r![‘ñQyÚQ6E^àgz …   P"èGõuÁ9m89v”1ÊÊ/í0¢A €€@IÈàKÔï|²ßG0­ÿFÇÞÛ«{Q/ÞÛ›–#*€€dPðÆÔQ録©œ£Â2!§%IýgZÕÈ%   $¦ó±íÕ(Û=›+=P©úéð¦{jjb{sÞyZ‰“EÈÜg±i¢ÊQZ8îLæ3ä¤'lH3¯ÌC³a²sFÇ碦ý ùs C  Å'ðü—æ®ûú/Oòí—«†nûØ–£:¯žÿÒmC«~yòÝU|ozptËÇæÞvèË"¨“'7K{žwØ2ÕŽnùÖXkëØ· #éÑè´O¸h²ÎúÏ££·@@òIÀ&}’Q·G¶|kÛýß?Ñ~“0|Sû“ÝCKŸØ×N*/Á¾j§‡7G×&’52ê%«FîC>²eãCïùþ‰oß©4½©] 0+O4e8ìyØÜ‡œâÄ‘IŸxòsÒç>÷ãÃínvé`~CÓ9£j>]9›íÕýsªƒ€€@&Èåvxï~q3SHÊö®»?qû¿O¦×Þ/-ýÑ'þ…k¨|lN†Äu¿Æ Ï‰ƒÍ·/=Ï˨ ºe‹\ÝÂÂæÛá-ÑÔŠúî¸RÛÕÿórŠ¿ô‰»ßE#)ýh¯ôy9,%RÓB X†DÆyE•Ž«x©rÚ2OuI @@‚OàÊ•+o¾ùf.ããòÄÁñ#ºÆ‰%7×Råj–<ôÔC¯|fÍwŽfl>MC'ã•Æ„Ùa“ DµŸ³æ±ÙÆcüÌl÷Ž;?)½r„"=º×ÁO>pÿ‚¤á£G^‘>¶\nÊQà ï¶ÉSȪ·ä~"úîý‚D ü„â‘~“Gµàþ>)Fݪ‡F@¶ïã²ï7åzK²6ç'*Ë÷öÊšO鳇i»Bð·miê¿ó£ÍK¾¿ïgšZ¿ùÉðË ßõN6GǾgk[w<µðëwui«¤±éæ°önìñºÆ „‰ßlmùlâ©C´í{h‰˜«å1ʨû¬(u&—JÖò†|ûŸwÈp\{Æä%ä¤'?û»¯¿üò×ïªçÛ]_Y’‡Wéo޾*"´/¼ã3½úäÖßüf듯6”™n6!k5ŸvŸçüR—úÙXÁ!$úæuoIÓ`Á_l\»ã³ÿT®öÓ‡ïþºô•¿\Æ?CÖß²G÷|åÐg×n¥tXη´J(£EP Õ¨¦nÝJxyÉ-,éu”Ô­œ²“cÔÆ»àŽè’OjÃ]P»PJ-Qá¸'’Ÿ?~ºoÇ’¯ìyEÝö|eÉŽ}|t%éåáŸð1d᯽“±E¡ ‡HHÃO=5,EïÐd@ó²Fã‰ß\ý:¿MûbÈžÀ¾2ðÈ¢E‹„¥µ¯l¿Co´öþ퇭X'íÙ~­þ '?SP{nY·B‰ŠÄÐvòó/¿²yÅŠE+-Y»–r~–›.U¤€êLù‰ ¨£„iqG½ƒ€€@N ðƒ“éO„œ5iå–­%ÓBM…ßþÃæCÿão¿š­ðK;ÊÆè üŒLP  Pвýö!3„œ‹Acé=¾JTkÌ´PTøíÓ÷ü›ÿ÷ÿ}×ß¿£À”­ì“oôà.ÑG¬õËÅ©  ¾! î­ô»M› BÈ(:©Òôð¿6ñÛ˜µ•M E…÷mû×ûØnÚ!Jß» !ç´O˜ ‘§“zP~éa£€€@PTTTœ>}zþüùÇFL , ˆ(.«p²•Û²P~ZE'J˜ò#=X® TðQäp@@²!0wîÜþð‡÷Þ{o]]]6v¼Óvrr’"¢¸¬\BÈVd|Tn?ÊBΞœóÃl¯F®‚€ä–À† 6mÚÔ××wùòåÜZ.–5JéÕÔÔ<ðÀV d+2>*·e¡üŒOÉùñÇø‰Ùbäü|4êp@@ 'lDRNì{ÐBöà äÐ%!瘼ÓlôQ¾·W Ç8Û,Ì¡70    oZå'nAÑßóAâ¯ñÈ÷0À>€€€…€^ùÅ t     PP~€Œ.@@@@À ü<1 p@@@ @ʯÑ€€€x‚”Ÿ'†N€€€€@ÈOuÑõtÛm·õôô {t    sK—.5}Z S~eeeÚ×6ÓþŸòÍÔ‰‚=ð¯`™†Y€BÓñ0ö«­flb,1Z@ €@ö sEÊw/:ûi/ ¢¾Uµ|{›ý¨yÐÁT¹éÀÚ¢@¬FÁƒ1Â%°:g˜ò{á…–-[F;ât¤Ÿö¿ÏöGEÀNêèÐèšd`!W¬ó×µqÔêTÝ×íˆâ¢ îk9kÍ»ÈØ°ú-¿Göˆ_"' ɬÚJû›håŒöMÄQÓ_v' µýšÑVÐ^šŒÛwg¬_ø’¼zhj܈TW¢Eª'˜zšé†X-×™RËXcׅ޽L€ô¹Wvçw~ï{ßSO:opê…á@¿ÞbÓþ«W±£þ5i°Ô1pj}/Ÿpð üBÀêÊÉ•A½nˆ_RaÊIC'×+?]qÖú骡¨œAhô’M“¼zèd˜ÈydÑJüTQìhOÑPÄ®«¦¢õ!'§D6´ÑÖãHï-Y²¤ìšk®!G8 ={ìÏfû£"lñËæ ®‰øè¤/W½¸ªœóÞÅï¿•Úõº ÑZÓÖÇ/¿a”—«_^úíP¯-Vuˆ’ö×ÍMw±2VЖdüûhs ´ñÜÞ7›VQPí¥Æªš÷Ëm e㼩C\âTTO6ÝŽz¢ªçqGm¢õAôžñY— ´õ8‘ðkll,»é¦›>øÁnÚ´Iˆ?‡¿ö5x‡Õ´°ŒMºäqâZ÷œ\DÔâ§î^|ThwÔ^œtá#bp2 `¼˜#Î;„«K•}£«¢GõÙXÁ¾ÄÔ,}3µiå†iÆ!XYp¹“ÓLåiÜ!2‚v¤lªah|.å$4’}¤ôèþÝ©©©ÐÄÄÄÅ‹þóŸÿêW¿"ë÷Ýw_SSSNºQäðŒÌ¡©ÜƘ+k6—c«CÆrcI®ÜƒÂ\” ÓK—,Ì…Ë $u‘¦êÛÔÑIÃÂ`,â©‚®ÝøÙÏ~¶}ûvjE²¯¾¾¾²²2ôûßÿþòåË“““'Nœ8~ü¸Hºµ‹ú    $@kûÞûÞ÷R¶d_EEÅÿ[ÜÝ ¿”OIEND®B`‚PK !ÛŸñÞÞword/media/image7.png‰PNG  IHDRÞÜnÖ:ž pHYsÄÄ•+tIMEÜ )¶PƒtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/10/24 15:15:40 lim_j SGA250167¬H¤Ÿ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì]€EÖîÙ¼¤%Ã’aE‚dQA1T†S@EÁ|f”3b<³¢' zÇáÐSTD w¢aA$ƒ¤Ý6Ïîüß÷^uOÏLÏ0,àéýS;ÛS]õêåªz]ÕÝãûû¿>±–å³’|I>& ß¾ðÏo_uüö¤Ú§`6,Î’Ð4Y`ÑPZ+¼"À R€4L Ë•ªÐœÝ&€äB Rç” >þW*f ‹¥NpºÁo–‡à1d„3ËWi TŠT¾q¦„È—–W¢€<¸ä(¤@j…R% ¶•< ᘂ9!lPÊ—°^š Qe%ùÉ) ¡E(ØÀ˜á)ózƲXð«IL!¿ì›yb©$9¯Í¹K”‚Ðà·¢‚ü#ƒleE€|üÔóü#\ëÙ6ÀœJmP‰ÌÌ‹ Œàb€wò@lIè±Â,¤·ÖuS)¶ËÈ‚7»K¤T ìâÐÚ°3ôM¦<øeâ·ˆF¥ñ‹‚˜,ª€6(0K¡ùcRã¹”nˆWáÜëbæˆÉwФB–’:»x+óÆzR u’ÎæØÈgúx4) AAlè:Dm>b2ŒJ_’­^t™y_-«TE·T¸Û“ nÛ¡%\ t|v bqX–.Ž5ª@F©j]Qº£oäÌ$=G{¥oÌĶ]LÖu…*G —xFoü’îg$ÃsÎvVté4ç|™¤Ì«"T™°!Íaûö7úŸ=ØŠvTGÔ’þ)­x¨…S?„çT›ÑÑÕªs­É s°w$Aµüç̬*%ì=̱ b– Œšƒ0 ¤a‘ñ]àu<^¤ŒÏ™H!)É"hi„3åÉp)BãOJ¥³u!g"’èÉdéM,r%—ºp}Ûà¢÷`ß¡P8•ëAs¸ #ɹôaûû&ûLòeÏŽ<é3Úß„HäRbü3JmD±p¬)ä_bý’~g†XU•„z*¹°;DæÿN% uÔ”ª¤H‡2%†è«IÑ!Ñ?з˜®é©t©‘yƒƒ¡"Ç0.#%;µ*PjìqöW”>þrŒ¦¤Ðsdõìp!„ÃÄÔ XÜ k,&À¥©ºfˆ€Òª¼¡ò¸ÇUÛáTãŽ*QµP“NŸÐ¾fÓçK-@d,hü”eæLùS ‰ô‘ ‡Ê—‹;‰ êØM¸Õ?EM‚Bƒ”dH*ƒì'ºúbº//åO¦"=H"Š%ÌV‚H±…¢Õ3=Rv:'EµKœ'ì|D8àˆí¸ñiÞV”ŠB%SñXän!0Ê>g\òÃø¢í**üvž! 㙟eé€qI Â5Ï¥¹8ׯ¢ 6ùùO)Ån"‚Jkw,Ò?)—Zj3*£¤Šl‰H²¿Ý¹ …Z ÙU6”Þ$χȿä -b5ä‘’üI®ø¬Š ö?Ž%p ˜†ž<"2“fÜ6vÇ› U‡¨Â%ôl( Rÿcï·’À-z~F>Œ€ôŽôIñwdÁ•¯R†BV#d0H­$^æQȃª:ÄÂDp¤Vyá\!ñf¼Ç FÎÝL¬À‚HõÅ,ŽRQÀ©&¢Ð» ÌšàR¼FŠežÒH”ŠC)Übs§Pœ‘tÃëidb0K²™]’0µpáL¼v (ž£ãJ$±8JÔñÄ8&IÇX2°È%3èa2æ áHÎŦá2ÅAöƒc¦CQA&ààˆ 5C è’!Ð`\;R<öGöSôb~#dløƒ•9ýHàH PЬ»'5.}ÌÐTµ¨Û‹‚iJI•U Ž7Éâ,²þ‘” ÂôÎX0qD¢—%4„1îFç7tÚê²p²œIâkT*• ',°X©5I Ôâ®ã¹šÇ]! ¡p†rÖé7OÐ]D­«EÈk8=-0㦰¦ É7*:ÀãQ@(ΜCNE ¹=©(!VšI?‘™ºäÛpÎ Àà4rp’æQÆ~0u6{X¢¶áB #ð‡þLI ý-DXÔœâZâݱ<1œÕ_ñœ¼AB(–#*× DXtL úú«-Ñ» aŠFPƒUOèZvNÄ,”‘S oÊ ÌFv„ÎfÜ^´iú›ªÕt=Êìaƒ¤Š”äd!@DZ’×ʆBˆQP°Š?]2Ñ D¾P‹D. hÔÁ$¸×T#˜:œq1u*€-ÌAâî!ÆU‚Íh%¤9š:%%\Àhk{6ÎÈ©™W4rt‘*wHÁZ&˜RþÀ¹Kâ—]g#¤ Œï8Pt,tº›J¯‘YJt"ñ¯‹,éS9::ì*j‘‰ÿ”Nú¾ô~ÈeŠá‡ß’l-+`H £¡ F„iþI’H Ý[TäÂWBËj‘‰*Ìè¶Ž`àxA‰õ¦œó”#+YK­°„3#‹HTþ‰˜èÍç¤fµeU ’ÑÿÐRŠ/h’›¸NJɨãË‚m]­\…nDàšâJh¢ %ˆDü)þò¤r¿_®‚ɲüÚ– (rÕKêê¡øUÍÂ[á £á9Ë…µ© jq# .dÁ„G f\F¥;r…VÊÒ êh9üitÂ6Í@ˆæ€Jþí“ OvU8—Î¹Ý ÜÂ’["t6jûƒRa˜°yN‡-ÃYr1D596 úU4f±Ùk<¶¥UbV9u—ÑÈÁ"©²ÿ ÎÙÆ¢=M2µ8„îä‡9`æG&I‘$c^IIJÁt“‚<¢¤¤¤gÇÁÌ΀¡A2œ!ë*”q~*c)ö7Œ$¸ÂŽ~?ˆô-¬ÉJø­27#ÑÒ(,2B‹¤ü_) ÎW"&͉"öEÛ%pÖΈr‰EX‹¾ŠÚ‰½çø“ {#Šxd‡ÕPD ªÈ0Ž”dHJV ܺ—‚ƒRRSà‚Œ™—ÀmÔbô×À´â- ™ÕðŽ$`áŠYvœÐø—–±88:âDt'Bˆ¾9œØ\KØW ¨~ÑKB¥& êEegÞIfÆ2H>+Y`Á¿LîHXâU›œ( ÚÿnR†›k6pTÁ^kc ®¥ÁU˜‘TO¤±œª¬âõ—ÂU&ˤk÷¢@’Ä÷ÀS™,¨ðjC¡¯*s°Iª¥Ÿ ¯j1’$áv²ÛÚMLKi.­léª;ůG LPRY™ïVÑší”§µŠ&q Nä³3¾5ÁiŠ  C‰Þ*ã‹€‹rE±ÿ$*ŠV9TGȓՒ(Ž»$Xå´ÑŒrlçùÍ&úmçÌ©)WÄΉ lP“.H»­ð®¡I%J8Ts±„ë–>Ÿ_8d¢h°?K±¹XÁ:Ìô¡B‡°¦­td1HâùR«ƒÁµF'j}ôuîÏಠlã„Wc2ÔñÀýßÜÑ R.Û¨ÉdÔ“™MgÕè$”A©–"—çz¨¸i° ” æÙ›`¾ÐªP¼÷Ìpâ èƒì;¶QÂyå¹á/6=@<Šö%u©0d,dÆ¥‘Q)Ú¶94j„‚âÎZ‹ 06 ¢ %®ÝL† ­áË” .INMN‘Oª“Rq ,a §^ÙCò"L›.mø·;¸áÄ”* î^Æ3é!W8Ü>Æ€â/·?þФò _¹È„æ\”¤ql¢ŠEªÄ³~‹IÜÍ‘ÖôYND(s‘ k'’çœ$ c˜AGï5Q ±_K¤"ðâ2"9ÌÎ/ž"D¡·ëÛÞqõ„˜ÖJI–OŠÇT~|˜kx”Ss4`¨b1±ºbŽp®_ÜyD«^[õì0é'G¢dŠ)t=ÄÔø äõÈ©²?¶o =6iÅä#Û·èe>“V1ê>kÕßA´e¯)?23åG](¤†W¾Ò»cË7WŠÿïúâO[÷é|Ýœä Ñ—$``¿PL8”þ!¬ü˜bdV¾Ú·kÎ]_m''R‡¨,i×÷vËé÷(î˜wûaýnû"OÚ*Š…½×rDž è‹È¤$§ ¥âG9°$GwÆi•œ”·øÑã.ÒÿÙ;UðàÈwÏ}nHÿ™ëd`_OJ^ûöN{kãîyÏžÚ÷Ù…y$GºB ̺>$.„Ì_<¾ÛSßå2--ŸT~ ïrvÿ.çœÐíœwV§§¢Š8ÓD#¤S%(í¤mjÚžïž?íî¥{SÓ÷.øËY'þeñî4$4×zæYžž–ÎofpÈØ>kì _ìDžå%k߸þž7V–².U ÓÑZ9L+YýÞ=o¬-jBÕ”“¶$SR¼vê­÷ýó§R‘‹SMˆÔÔíßÝyó½s¶+´b˜Ô¦ÎFjä3t‰Ä4“lŠJ£‘4èTµTúó›OL[S*FÒ¤ö°Áè9â–:~ã[†#÷xyP†N{v˜‘ˆ#XÀ9ȲB:‘ôaÌ>c±éCÚ}¥ <9± ¯F'MP‚Nžšž‘š‘™–Q==£zFõ™ÕkU«‘•Y£¶³ª!SS?ÈgU«É’ê,ϱzuy*djW¯éúÔÊ2§µjW·?ÀP½ðí̵ðI¯V3½Z´Œjø¤fd¤¤¥'§¦'¥¦aà“‘[†|QˆÑˆˆõOŽ3Áóx]ÿÀ·íª &àfö…œ^ÜñªH’“A+i+rá§ßâîâ§N¿b‘¢3åŽ~âqÉýR&â„E’}Ä8rjç’˜‰Égp>Ùªb܃¯&ôíúêÚAc>¼éÝu¶·|+&÷h×â”—sïßPùˆàX ´è)¼+A«vµÆ„;¿¼ú”+¦ß ÝÕZóÏãî L|í›ãê2ゼ'zÕÙž{ üø–#ë‰òÍu¡ÍLÄ…v¡gÁ·ˆ#@Ö17ÎüZ·x±F:ì*6O…2Í·áóV~üÚ)äoÊ]Ds9§KíšÒ&)Àõ=é¢f¸'§wRS)!€WµK¾N‡áÏ=¢¥ $àÊ¥Ïj~Ü“/g86MMõ¦ÿÜþXàOŸœ-çöÁ䃠Ìí^þêmózô’޵Î…Ù ¥†g’*kµ>jû-ÿY=ö´Ö™XB‘a¡C%n4$XKãb ž9£ë¥†”Œ6ßôËèXAéB¹‹v ê‚—ÓP­ba·‘­\fÑK™a8"÷ÑQù²LL4kôl¸´ Da"ÐK …„7â/J@(Ioq'J$(™B«´ÀÙ-,5¡´vâ¡Ør®É¶j8ÔQêp»í›9š"Äÿ¼ÕÃRcPÕ®È<­Àɘ¼” fw;[ÒðaÊõ4!/E@(ˆÄžrAÆ+^Ýð"¡IZfjŽiɈØ%PG<®×ƒÙºÛ4m—ß ‹A…©{(]W1²ô%JÁ‚ë%Ø4å-æåþ²Òò”´ò²’¤rÙK!ɺ$rìkÀ/'ŽÒ¨¯HïNþ›Iü ¨³§`÷4w1ë¸ÇµÀÙ;5QD™}¸ÏÃŽL,¦kk¦‹d¯– áŸéfE… ЃݪàÌ14ˆ+4kížÀÒÊêÕ3«eUìé”^˜U³:‚™íKw¯œ½có`©þa5š¨žÓ5GpI|)3¿ÏZþÉUŒKþÐ^ü¦ýå WŒ"ÃÑ$õZs"¬Ð-´+‚ À²™WN?yâ܋ڙ˜¥n¿çÞÛæÂéKŒè “Z÷u±;@MZ¼ÅI´lÿ‹éØåNnUW}‹¨ÅïäÏf‰ßn¾ôL¬ #ȃó—È9\à|+>½öCiÄ۪ؓÁ-”RP0°"¾"¯J!„r©Ì.NÏŠ‰\ VbŽû5«¥yƒ[u«£ví–'õŸóÙʼ#ëbôV/})0ò…Ãl¦¨Yæv%9s3kt¢ã‹vW£î˜h×D<¶kI ßiíE•¾6ç?Õ6æ]™Ä&>*€¶ò”`\B0‘› 4óE^øaFƒ#·6.ýW¯þÖá}ç˜Ö 6~½èÜûnÜûÙ¦=í;Ôgrá‡ôˆtL‘†-eO¸­³Æœi•«‹Å M¸`˜‘–†%“Ì´ôjX>á" Ö;£`™U–+¸hf9eÖf™ZÔ¼£h“>5oWé`ÉÁ‹·–”#:Á-]ååeþ”bÝE*·ÉIÆ÷@bömÞ¬ iåŽUC¸¨¿¡sñyáWýH#qE­:ãÈ.Ne¼U–SW^ ªðòB¼€\w`|Ãm È5†ôV¶So5Î+Ú÷÷ƒ£¢”y[Kgý\X”áÛµxM`oI‡uŽi¹©u½Ú?-ÿñë-«VïÌHª^-;kךŠ5oï.Oý©C§äîJ&}Ë¿}*p×X/±Ë”Sȱã‹kN¾rº²yÊÄïëß%ït¿ÅÿøLß5uù¨ÀßZÿpÀôê'OPŸ‹"מ2Zf}ëÔg¿˜p¬oëâÀ©gth@§4=Ū×úTkô×+ú梳€N.<â“_øæ2*#ž2•átû—wô{Ȭ{|u=hÍ<ª—õ§×—^nýý°‹Õî9îµ%—rñˆÅå%xä·é¾´•îxb¢›'}~Ò£Ç×CÑòoŸ;yâc]ÆÜÊ(»bÕë/ ¼ûÅEí,kÇÜ;úÝö©4ºñÝY·Ý;莴^xúã«_[vžïo'^Q%ÝüÁ—wá]_ß0T£œ›ÞÿÏ…‡'íúêþÁ£¿P˜þOýõOGU~wϨ»>·¬ÏÇÌÖR¯¸`ÒñcÿvO÷º†ÓÚ9ƒŽ¾wæÚ]}zÔóY?/ü[àºÇÚÀ¹V}8`xàŹCóåÍ»c䟱ý5o~0Ì÷^ÿó­I ÏDôb­üà„ó“rÏÈÙ±àÞ÷ÏR§ÜýîãGÖ—<(ï‡k×;rÄí÷ ?þÝ)ËÎn«ºkþ½'ÜKî~mÝôô[­Þ>ïýþùP,ªä}ûø°NœúhÏú¼¹c/+Jéò12*ú|+?<<0aöà–¾Êµï ¿áy£–Ͻ:¸%Ÿûœ}ë—ÿ½G¿¿ÔÁzŠ/óœyg ºªyà‚ÅmÚ鈚œâ|{—NÿÒâïÚ½3žcç¸éë[±Î8ûÃ÷Þæ.W©¹U±nö÷Wœyî‡ÓÞîxéýg–sò²o;%§E† úEK&©Ê8x'%ñ¶½h ¼*ÝcH´¦N9Hr"¯ÌB™§päÅ>æD' @äFŽbXqEˆ"QF3®¢ &á òÒÃØ½ôÖÈÀÆx2ᑜ3Òì|èÑÝý {^ÒíS¢€ƒ€E;tDU¦ ¦°nl(ަ®dŸD A1¢¹a@˜ÐJ!"œÁÏXÄë.¹F…Œ°=f\Âs'@«zÛ­éhAìê´Œ®eýR¶.SÓ±{‚ˆ;)é™5˜Á'5ë(Øíäf¥„& NU/âŽ'8º"”HDªª8ÐV"à ÊÉÈÍ%He©e¥¥x UnÂ…7‹"¸ª"ûpC†1ô>îˆÓÒÿó³@“K©¦ä7ô¥‰—<²@i„@)¥5|¬ðvR^Ø!Ã/”rá„p}öXÀD lmú0:á%ˆÜJ‹„*ó0^}¥¼5ï—²”yË?;¥võ9‹’7o9¼ziaÚ¢]y[öÖmÖ<눊ú-ó×¼_'3%mýº‚ŽA±‰x‘oçöÜÀ së‰gbóÅÄ"wÌ\4¢Cýãž_´œ³vaN¾òýËGq^Ÿ9þû—¾[øôÎ×: Ö~¼5ö£…?Z¯uüñò5°^0ºû›ËžÃ¾ÉÎÙ× xhÖÇcÖ|fõ¸ŒÓ¤ÓÓ­º »QíF~÷¯À‘ça´µ?­Uº£øt }58æÉ¹ÏZG½?tΣÇ5Ú1ûÚ‹&ôÃñØ{Xù÷¶˜ÒgÎ%Øå z¿EÕÁĨßî¬?}gå-Çõ©¿cÎ+÷?ý‹zë„"ýZIoŸsÇqc;¿ûùCí¤o;·YÖÇ/,ùË[󞬷sö}ƒ¾êõåç±rÅÛ=‡ÜÝê›ûÍ8ëÚn“sŸF„„ž¨\öö©£Oüçã>õ**™w÷€‘ÿšòÎY÷OõÉ o?²v °î½“o·^úç™9ä ÿ2¨[µëßoÖç«wt¯[oýâçW¾Ò:ØaÖª×/½£Ó3ÿ~¸ §{4ûIDÓn.rW½žw/xïn¸ß®ÜûN¹ïß+Þ?Ÿ¶b×óìšsÉŒ¿Y§ïøÒ‰ß|èøºVƒ#Ç1Þ:þãAÿ{TÝÀ‰ž ;Ç:IÈ®yã²±»ÿ•Û³¾õó[=ÿ8ë¤Åo´ÖÊŸ÷ì Ï_ôô§ƒZ@üU3Ï»æ…ÆÓ5Kë-+¿`U M‡Ú:9¡Æ¯<ðò¸Û¬—ßÿ™›&ßÿéÝ.í$ ˆŽ{çmߨ‰O4Ý8ûúñŸ-=røôdбg锇Wzð¥YüÉ;}7=¸åùSšX¨ôY¹S×]ýÄÓ—“Û‘ÏOb£ÝKþvÇ3 7Nêù£­›çõÄ¥j£ð¯ýsè¸Éý›bì«ïýkã§FväÄ0}šuý“pð Ô;bñ¶¢ó[f [šŒžHw#S>0ØJo3=BddGž„Õø(_Ä­¨èò'ôHPã Xx‰ð©’ªÓÜåÊÇEe—€{=@ñSlðºûXÜ¿cô PÈŒ¦£ Z‰ IDATâØF.’gyf=ŠÙ0D€ ?×fÞ¥(]E!mÈ•êÆB€¡ÊèNIÈ%'Ô¾™òPÛQu®ö&ëÒd5iYw€#RÏÁE–Á4@Q£vÇ.!”PJ´øãƒxŸÜX—λ­°j’ŽUÞ瑞Y k'éØßIÏÔЄ '¸¤5¿r,¯B´ç(IHRrRfNìAXz×L–øË°fRžZJ–ØJ€áÁ))|f‡wâ'Up¶æªÞ “Ë`iëզ’KÅ!å¿Æ‰Í˜Ò²9ŰÍÈ_Íe’3ôFq3 Jd|—û4:açädÄKn©þ9îðª„#G¥Ë*„!èÂR(_UÐDJYiÚî5‹ݯU­ÿrþ’‰Ÿ¯l\تzfrFÏ&mºä8¿÷޼Ý/¼¿¾Q­äÔb]ÐahMW‡œùsžÏ× ¨wÜó߯xaÅßZSSí˜u[ߟ¦ºÛìÞ}Åñ }VÃÞwàÚ飅#lo5ÈzoÛ¶#~šº ã¶ÝwA6wûöËÚ6 N‚â l]G”&…fô¥Éê¾~è|Re@¶­x÷Cëãl£°uûÅí°TC,ßÞvìÍÊëMï~…[ŒÒe Dªw܈[FøxùWƒ¶}ôéí—<ÜÀZ'” w.ùÙÀGnÆÚ =Y½ß²>|3Zv­œ6ëä‰×\ŽÛŸôì©Þ_¶ãÏ#gýóÕþ·Ïzû‘þuPóÓ¼·ÿå˜xš ºìù‡}£æ¯=«3Q‹Â™”#±½ª¥®ìé¬Ê;2ÿ‡—#°›cQôœ ÞøæY÷ý×{úÖ‘5tSÉë%A'~µkÞí#umçG¨h¤ÉTJÉwØ%}3"ÎÍôYû✑­ÕÍåŠJ–ÿØí9ÄH,üÏ‹ž\óâä[Ÿôì±Þ3ƒqûòW4çØ‡/nÅ0hÝ{lß×?_}a×µ¨B5ÙSy7--0즄mÞöœ-Øøxÿ&›z;0ôŽöÒ q·1]¦ÍQypì<ªgctÈf}ºX^÷]Þ®VÀÚÓÚ·hÛ^B8X-ë¬?õkjMsÎòMÛ¶Ç:¢–ÁP«Óð‡¬)w~–5á”&®nlÛㆳ±²ÂTðãä›'b™DRKѧdyܽñë…€d\‚Ô¼Ç5G¾ûÍÚÝrÊ[±HSéwubñi ìd´µ ¤]GŒ¦Ž. Íψ×öÉd¡f»C‡^IÉþ3¯Î0™Éâ0'5–GÔAç‚Ä,,áØÆ¥a±­¸®I pŒ$AQÕþ&Ì U„:D¤E 1 ÞŠ ʼn-Þ’h º,Ò“uâ5p(ÂÛ¸ñ.>0Œ›KdOë%™é\;ÉDŒ’'eðŒŒ>–Æõ eA”éÌ{ŽœÐ‡BÅE¡K~í4ã"´to„åx'55©¬Œ.¯eâ{ S*ÊýòÀ"B,EÊ~)î3Ç D'•;.È}¬Øˆ°„*#ôèÖµW½G™ïþ6wµUNí…]ˆ·•ˆ: eWH·‰–õÈÙP®(4 g×XÍu€èÄ¡Cê¶hû¥/»QèwÒ v¢Ò¬nz÷Œã>ܱ`nIÝ^-ö¦þ’’´êÇå•Óææ}¾´|ÆŠ6i뫵±iûº´Ät<¢Á‰£ÆùrÕ×;tÙR盤¤Û¾œ~f§FðÑŸæ—]i Yàá Þ5«QÈûx žäÃûÜå{äÔ×VHôÓiÐÄÓ?}Ôk+d 7)ü=ç¢G?sjGÁ# q’ê“nJ¹ÚGz{ƒÃ‡žöÙÕ÷½M®ðÄ6ø—Œä 8Y‘L® $„ ¬ÐîôÇ<üÜ“ƒþ<è›BŠ)“|õ; :åã±OÌÞIé(‚øvÖ¤zíÏîÿÙè _ïl¥µüß×Ïè?¤cv «Î1Oÿûõ;}OÎYÓ{´ïÏW½¹‚]ªrçüמ ŒéÙ‚ŒéÉ(3Â*òÀ/LBä:‡ßoÖÃwO\Ù£•x0«ôDf²Ž|è݉7ù^ønM ^“ã­É¹ˆ¬|?¿uÁ$q°ü‹'œ•SæXµ[pG‚ ѹ(ãŒoçü»ož·‹ä¬]Ë?ùÌêØ¨‘ð‡ ðˆkƒì¾Oþ½ Qçç>wíWDœ\§Õk¤yÄüþP)äb:_Öa§÷ùjì”Ü]”Âúyî#_õ:®5 >p̪•ã[½s_Ƕî‡wÝú—WŸ|aòã^~ìëºZoý´1Ù »5í£ó±aöý/.–xC§z¢‘¹A8ò…)¼KZSƒT>û!_¶¼öIS«ŽÁVÙ'þùk».üfC᥹|oƒÎÏ_èÚ»Y ²ðã{ÄIŠw‘TͦÇtË}æòÅÍÖç¾ð]·>-jJ€¤4ÅL{w.íR§šP®h_¸Å“Õ¦xçœÚ[ônÄ_i"&»ã ãʺ‹ãÎË3Ëòì¿4¬T¼æ1|>x‰$O>Øácòòíü3§PR«Ï¹ã5Ô̰1Ÿš–ryø]è²X*á-²5 'Z#Õ±’0*ΑA ‚9E(ØÇ±ƒQŽ3Dùä8@Ø M¥GËÐacѸj£~ù‡J7a"V‰L ¡ª²‹âiÛFb”B3Z¥Ê®C Ú*«*By/<#Gáyë+×Nx3,BÆ(™i™ˆQ2Ò3°š‚N™Ç‘‘w}¯µnÏÈÌÌ|Lbb³H÷€œTpÎí$Ópƒ ž â=.|n(5Í<ÞL—ÃõœP¼’ês fÆ’.'ÕoÖê†_ÀÌpб%R»K7ÖfôÉÇb­]Óætñ5èüÄôµ]Žm.#/’Ž@ P¸‰÷HQiÌó”ðˆ#ÆüsÜøag¶xB[Üùé¢K;68áÅ…Lê1¤Õ“Ï]o,…e¨pÕ;J¤g=vfŸÇLËüO‘O €¥¿û|õŽ»ç©½o+@Ç?5ùœÃùªB™z4kuü£G_2ê‚I'Ü>åÞîz7™FmýÖ§œ`Íþ|x×¶TŒ)Ÿïç7Ïý”P9ù®©´òùZ]|‹oÔùgG^НèÞ¤öY*#’+Ùä\d™50¥ö0 ò›¤HÍíEoN§ñªYûŠ4³ªÝÀeµ ¡(‘Œ°8]BL z¸8¡/>BŒÂ· 1áqby§†EyàÝâhˆž*CLõ"†噌žÊI§ãn¶stn&ß•´”òÒš?µŒ7çJìÌOJ2!"9¹"‰?Ã"íyå,‹¢TЬžˆä<ì#E˜sð·:hpÉÙ‡PÅÖ# ù­ÙLË"™]Ä öåA´-X¤‘m8Å–±IO 7æk%õÍølÚàQï;ví)D Û´Iãš5j‚Þê›——·ió„›ÍZ¶¬•U›3±/E_h/ìЕGÄdÒõEd'±«²GûÏTŠÕàâ‡4¿”±¹z¥@ê ÂÙ†P:›ÛŠûhKõ#Ai‚ñ)$0ªÄÄÑ‘tð3Ä•˜Ò`Õ-¡"Š¢…+EØÃذ[´ t…c»«“jƒÂ·2‚DžäzœG”ò‚ŸoDÕ }6D¶jEÏ*•*›G «¶àQ¼Ðð­ª×x4_-"¡6²b>ãgb)Q³hM¿DÕ‚ÉÆBä¼P )'¨ÚG¸”§ÚΈ\ÇPùôÎysä ¤uëµú>i"FY7ëÊi ¾wŠ˜÷Ö‹ŽTE¢U°±«›¦ZMø–¬$;çöF#›]g@ƒm´¡H‘T-vq€iáÑLì 9å ‚ŠŠÍ³ož]çÎS[e`¡™;ã|îÛ“ç˱Ž¥gþìºÄGÖMoq³ä c>‚m·*<+à Ŭ&9y” årà<&Ñ#kX I¹l%Æ’Õ)µžˆ ¦(í+"”âP‡"MãYAúAVœ\DF´î˜ù (°m舦^à­‡›1‚yx]Mt_œ„6Afª"»aN¢vD­ÃŒb ²™)£…íþ `a• G®9ÈJ >xZ˜¯8«V=ƒïX«)o?ã»Ô𾵌ÌêÕ¸¡ÃçŠ%~áJ 0¤#Qª8†!d›’‰‚ùQÒ,áʸT¡ãƒì;eåexIYyiqqIÑžâ½z,.ÜSRXPR¸§´¸ue¥%8úËKõ©vNר"âÆ¡Ë —˜;@Z¶o›AæA.²É ­Êc„ÁiB4(_ºÊ¢ë¯Æš2A˜SDDÚR0Ñ6A®¤X²ú]…cJ9Ÿ·µ’R2g7KjÊØ—´årÁƒÒ: Õm˜Í'_²»oþv”Q›†tÅ·Ùp‚ãܯ^Â+R׬E1”_åÒáT®øx—ˆqFñD@ʤš¼»˜:f!'щükQz"`$ÈFŒõBOã%ñreø³Ñ(5t† š9óâŒE0êml¯ºF‡äÊŠÄ*‚Gå”:Mì!BœÈx,¿ˆfæÊ#ƒ5 äå(:j›"™¶$içÔž&‚QËäÁ¨ÈéR%ªV3HN`ñ'M;rã1JÇ®«<‹ƒ†–èØŒeÈ3“ª†Ly¥TŒbö`%ØS¡¿¶’. HE(F ×P‘¼n¢ò1=ì±È ­¿n£_¢29gÊ>fl›ÛÆÎ¸þ铱gˆsÕ&Ê2)çj}rª–0à‰mSƒ‚à5„a–_ÌV©)–#‘ƒA¤v’馡…ö™çÐÙ§1tüø·IëFŽéY?=¬ªÑ‚Dj¢U£o:$ï@e‰­ZEd„Ë+lD–„Ú6¢º#€CMmlœDu¯k_ìüêÜÒ×xŸ?ºê˜çmuH²nB›‰1^NøÏ,Q?t‰) Füz­f´Ã€<Ôâ…fe‘XÄ»¢%©2ƒŠÂ„ÛgÒÕcà±ñA˜ o`Ÿ»ÝE»‹ÃŸT´HÐòC¶Õ‡µ2ØÒi û¢VFº¦YŠ0K&²; "Ù)±÷øL0¢û>¼'…‹-Ä ¶&mæs;ÜÙÔ½Mç–Îqë´ 2<—A×î€ÈùP™.èðŠ,$év!*+ßÊàê$PàÊPwTðÔK Žø‡4b²ý¢d;‚•ìÁD'ª3Nr¯ðH™ÕiÙDv…$d?f­ì$ˆ~uxaÐ"&W€0Br—óF+We$†5ó',“I™·Ôƒ:l9#Z‘·*T˳v1ÂðžGz.·7ˆDxÕ#!LöEB;ƒðo¼P‹a8½Þ…/ÉxÎK/»ìáKÜD{Œ@ÚçšSrA+Vž IÑ93äó7tÏ_|¢@nå‹¢9ÌkÇ1 ˜YXšR¤*'`°)“‘ŒÈòû0²Ü(#8OôhN)¹”è7¥—qÚ°IfeÄ€*8ÂfFÛ/È6;#z÷¡ ùçB(N&âF¿^!Éä©â:BKœ6Ȩ^‰GQQPI<3lKCjA:;>ø¡:,‰ø+òšF®˜èC~8AN¢”B5úÇß÷xe ¬¬Ì¨‰š¡Ü¢7 üˆQù±cDaIx~ ?D6ëzÂµáØ°-0P£ ëTK1Ô°†&®v%\b¸õRÍ ”¡IeZ« þؼÂ_ +¹:·C‰>$C,ÿEDP'´¸0$ðJ¶UByˆ„ܯzchÒUyĶLü†r!I°ß’CpÍÍþñסäqDØ‹{@4ß¡`;¸`Ñæj\ÊËÀb¿ìö—9šà‘"K"­º/ñca‹^g°Ú#ЮGE°ã†@…ðÅöÎ*0kšFpR`ÌZ¦—O[÷´³É“sWhBo0ÇÁ_Ã"sdàÑÑGîxá¥/#^ë)«Ñ\.5"Ñ ü‡]IÂÃq<=—~&”M=;8¡$¯A†ÞªB´à©ø/22ð±ßÉ´ì5Ë‹wpG\Tíä‚üw•‚~C#©ø¢4*.HC°&˜$LtN휀° ZÚŒ©Nø"ªQlª%‡¨PÞ¿”RZ^Nt䃯/a˜©¬26a#Ø…|_ ,ˆ9I)xîŠ5x¬)ûÍÀ™”©0“ŠÏ#³Kž®(> Ã1‡m™¡‘d “¼Ôi¢Ó˜îÂæM3ªÐþ$xñ'4+„68aS<íG8Ê^)†Uüì ¯éÒÄ«¶zBŽ—ÀA‘RÙÎ%áòÿ|†žY™wtwYî¶6AcžÛRQOµ+éDiN´ÏÐF+K|‡Ã®YdÓ%Ž5ù’hé«t4› ¦<¢Êáœêµ:–·ªM䯇°æ _¸üS ú‡m<Ї5V,´–Vø¹äÊ ÙÇ1ZQµ‰bD=äK€%´¥^p«f„Q‡OÍP’µµBmE@F ¥ÃpÛ`"#’ ï”ÛíשLô<0Àíú„hæ‹/׿ÊÐÍ ¿…t’`rÑ2|°6Œ%FªT¤=À™šT;C’,ÂÜò²^¹p™ C—Od¥LŠ»R8yÈ Ûèð:ä*—1ÆÇD¡B:1 šH§àw÷p³K—ú…pˆ®‚HMNÝ. wƒ0U†Â‰ç©,^ÂDeØÞóS…ö¿ƒ˜Þ<‘ê Ûñ Å>³û¾yýÃKm™PD 8ýÛLþ„à]·åÐO¾ù/ý IÁ¾VR6ŒdªXPä4¤+—P¤1…àäÝO,A#†S7ôÃ{ßíSbXÂÜÖy;ðÒEuXáf‘$OWÓªCsƒPüÕ¹@*¢ÜøÅzEi©øâf @H[Øb‚\üW´…g‘ˆ[V™4CWQ'”†M@¬'/ôP^ZVRRf¶xKôÝúf$½ÿBBY_… ‘æù¥\éŒî¨û žÈ”ÈÃígÍ“éu¢$ÕžÀp"´Q€Ó¿´Èl<³  f`õËP1m”‚ó³-½C=DÂUj~£˜Ñ‰ÖCdþ‰Ï ¿ªR»ŒÎšÄì,¿EÆ}§¸€"Ñrò%~b¨›µO1•Ï«Pf9*ðµ±èP^#8ÑŠ@ú@²žBB¶–Z>ÐGÃ#/ƒŠÝ%”{Þг(G—| ¬Š¢G!äQì ¡dNB¿"ÙÇõ@wQ¨°ÍD­$`ÿÛ £J C$K̹ÍÆ+)w¬É¡XeÑËD\m…ñeÁQ#^ð!6ECd€Cx1´„îí±'Ùn%¼‰¨JpÔŒ–˶4ðþj³ÃPA ? ıÄGŠ•åŠréxþ@€?J,ƒ‰LX‚’²È5 Ì?I؃¼ðqЊ’‚ÒEˆ],ÍGÐ lc9u`¡ŠÎ£Ø‚o=¡Ä² ¶}È«aMY¥"GXHFW3IŸT«…Œ?û!ïû–+G ü3!œ3²,ÿ`á±Ìäâl²x‡/™ a…QãB"’H²³æ[)¥Û#qfä|WâOZ‹§i± GŒ¦œ–6&yˆ3+EÁ,ä]ÐÊ9Š?báQþeqa™+”[f"à$থ¨q$-JÁ/Ì4Z™8ÅžŽ8Ñ#-åŒ% ¿ Ÿú< áÙ­×PaLÿRs@®nÑTòˆ&Ïù"±—ñ'Q»¨jWÕeó ,7'ñ¬øf@j\CΕÑ— ¢œY5q‰ûHü… Þl"Q4dGE¢/È×Q‘ÆuTÏVö [¦•'†k °OœA[Xï&˜¹#(\ôM÷&9£ÐšÜ 0(#0{3`{l´Ú-óP2J”¡¾JYØL¥È¥ N¡1å.Aÿ‰LËâ?†(.n-Æß 2¶“H‹¸8‰ù*—EêÞFeÛçbk§ÏË8)£%¹ï5áïè¤ãáa<ěާvÍe­FóŠIëD³bZÒ• F!X…ôbSn"Á;ùÚwÁ«½™ 3AöÔ]àwÊAćpÊ¥Ù Àº¾xΓLÅ“`Ø$`È‚äÍÅ1Ø­Ä™lÿÐkkÎ[ò‘«Iy£°k7Ê ¯@JJ¢˜Û³Xä¢XìNæ¹2>âfs“Ç߬pÖÐL2æ=ÙV±ù‰¨È½Ü> ÷S˜)Y6­§ª IDATwÌ*g"aZ5d2–(.¥†f C:@¨8Jè»d°…¹ &t•º\›ËG’X _<Ê•ÐáÕdQmm¿ç€ ÒÆO ì\g!Ĕжrô#ïd¤6xêöœ,ëɆG7Ê•ð+µÂ“žó8w¼ÖÉØJrÚ&ôn,=Øpû¢çU/^mzYˆâÝØ]vÖe0f¶“EgÑmðèPÑklÅý¦Ý¨©ÂtàêNU",ƒ¨ô"ˆƒ <®cÞ,‚—ÓsáÖ<»+W³fì 3Hœ¬„ i¼C/ fôå°Ãíb<ˆŠ›Ö0ìà'ˆ¹R‹Øc+ÙväºÈsœ DUI¿åFQGG ×Pb£ð~î-|Phë›·d½7ŠDiB $4Ð@B $4ð«k ש¿:ÑÁ„Hh ¡„HhÀ[)ºôå]™(Mh ¡„Hh ¡„~] ¤ðnÃDJh ¡„Hh ¡„~H¬šü6ìà"¡„Hh ¡„DÑî5Y8ñ’ ³lµ¾à‡º/¼óöïŽ~ôž!MPõ~fD…!øûß8yt76›„5Ã&ZZ¹/]þvÓ:-Û4Îtáüžoœ¾å@pÆÁ‡[´Å©¨Í$i\$¶Î]8‚ÌxÚÚ³06 îä%¼]‡£ˆç¾ñØì@:yT®âAY˜øÕRäMXêµÎ3à!T´"Ðú®—3°„r¾ßCÁ IWy$‰ÈwÓàÁÙ[rç[Ù—ïQ?ùàË=m¤JÛ°>ûÞ)¯@€Ü—lIq÷¸û§S®¨\ul͸÷Þ9GÝ;å[½UÔF˜Î»†jƒæ0±›«HëÄïÂAHy,ŒÎéBÂä»=}eb6•óòô®n帙ôt˜øYRÈ0Æ"ùÉîvÙÄ)—xѤË>˜>¸«XÊæpѫß¹býybV䟱`<9þM-V(Ñ?…ùKñSŒ&µ1®Ë!ƒêõðÒÜo4»jÊ=ÝÝþtÃé¾Ôž=Ó…ß²ªèð7Û°`Kee£-›=OkÔµñ±`0èöKî—ÇvE®6Ħ›NŸòÊH—=ÌK-mܹ¶E›Ë0é–¡œ‡÷—ýõ‡|B¿9 ÄX5i~þ 4a.AoàÑÉlÞ²ÞÚðå¸Ño*Ä1ÝøC`sáÎ-[Ö·:¦+ñ7tz¿·¦‡ÐrQß/6îÚÓziÑæAÖæ ͳ›E #H$ÿ]·Ú°es ÛÖù›Ž:³çÜ÷Øpá\ë¨+³£­-y2°6¼iÔÒç“7Væ­æGu<Ôê3T$µzÌ´[­®áT½‘\mÞ2g}Ÿ¡÷„ðàØÂ“h…AoùèžËØ,öu£ 7±ÛÖ^Ö‰F(²<Œap’ÝÐ D KŠÍÏ¿R”©`‘о¶Æ’2ÂMáÒ‹^ñÜn~>èº9ìÚ½Ÿµ©‰š•ùé›7[Ýö£„(_Dµ€'¢¦÷‘‘ˆZ•%þc„Ôˆé¥ ·úú/wgß{ß~\„pÁ@¨ÚÑCñ‡ùOœ’vëÑç©ù‹.,ü²Y÷Ëa¸lëÝ…[ºY›ZeÒí ¥× îÆBÇŽ–—ƒÑc#t…£ƒ3n„ ¹Œ†/—aл›ðì/qê'–ÐÀoVQWM8óºÖáœ}DJì »ÆQ7¼•6êÚÛšœ»00×ê1†«h«!77Þ¼±Çi—v ¼7qÊœ`Ãø(³aãÇ n,ðF).y)iPµ28ÆÔêÖÍnxA¡½¸Xsµ‚ZZLÛ´”nTÑÕNБ։‹ªÃ[ÎYßd(̱hÃ\è{—ãmÝ¼Ñ ôp)'Ü|Â’2ªIš&”ŸÍ3î}.pÃËéfmýhüäK¹™ ÏÇ©™PêŽZ6ÏŒEtkdmœä°H©#2¶—6xÏË·Î|pÄåû^û—Ë»8¡j·º„âe8~j µÜ¸97{cß#àFºö|´0wc ÷:D:¯µöHg:¯2a܈2ä’h´nâÖŒÓ_âWP2¡ß¨ðóÑÚÛÂä7´Ê)1™FÙÍ­¹Ófrz©Â'?°­ïÃEDµeætnî Úp¢ûM«q·#­©Þ³ŽìÖÈnÏ}yú#¿iÁŒ­î†qŠ.Z¨ ÑÛ‘4°eæ´oŽêÑÅ%i¤Vu;ªE¸ž=I쓽`«-‹æ®oÖ„蚴ظË6`fѨjb}Rt\ ?ù®÷š_3²+(F K‹oœ»HœŠLªr¼˜<`–”·MFò³uëºé9d&Ü'Áݼ FñVKl¢^µñ"šÔáÛKÅ¥ ÷Ð9Í6l©Ê°µGூn))úŽõÞ3ÿ²ÄÕÅß¾yoêú¦Éi”áÅÐòt0oµªq#ÈIÄHë(Ä«¿éö×+ð üv4€·Áz.DðŽù ZvIN‰“é<ò¾3Æßsßeÿ’ú£¯œ42þ«' Ù8õJÓ–gßu×ÀÎ#¯î=êù«0;¶<ûŒc­\ý \›ÎÝ~ñ9Àï"oØ¥GËYGvihK‹[ÿÊ=òr#¿ùûœ†Âë¾S¤êÐÆ]¨z»Š70XÍνïŽ.ÐsÀC«Æ]¹i´Ñó±W?iתiísÒ€KÇ@çµ[G÷>ÖÝËÖÖÙ·.lˆ0ÒÏj¬®),"ÒfÍ6O¾ìÊh aE9žLz:Lü,)d˜±"ùpîûãï¼ò=«yïc›kp7‰–“(jéIÔmñÈÚ8É9`žR‡9dL/]ô·Q/Ìt½¯›¸¿­<p$Ý…âoXÕîß°K¯fS=ºÐÕAj´¾²ºŠS¹Ùð´£§ƒyª…ƒÌ!7®"Ý’[öÙ_C'2 ü^5à›ñÅ’ß+ïÿS|ÿ×1‹º¿8"þàîJúfëÇãïÝzFB{¨ÆDóߟ0nÌȾ÷Žº}üûã?ÁqBÞˆv¯‰7t¢ôPi`ñ¢¯›7¸?wë*N~‡xÏ|}ó! ÚûÚ.Áòi€»R¼WÍsíûÀP'Z'4ð_Ô@Ô'tþ‹<ýÿ"ýË'ÝÿÁz«ÙÙw_Òûßÿ¿„?i·~òȃïð}"H½¯~~@B{¢ÍDÛ߯$Žß¯ýœ{iÀ÷Þg ½Êe $4Ð@B $4ÐÀA‰U“ÿ‚Ò$Hh ¡„Hh š÷šDÓL¢<¡„Hh ¡„þ HÙU°÷¿@6A2¡„Hh ¡„ðÒ@ŠSX½ZF£µ3ÒÓ’“’¼ e $4Ð@B $4ÐÀ!×€ M—´lÚ0÷^¿¿")šrµ'$4Ð@B $4Ѐ·Lh‚õÄ%ii©ÞP‰Ò„Hhà j ¸¨pïžüŠŠŠƒŠ5ì÷­\W¯Y«zõZabìܹsýúõeåå¿oñ˜ûÔÔ”ìì&ÙÃ_±÷¿§š`ë%¬·‚_UsçÍ;ªwï_•ä¯EìX´_K…Î!²â’ŽÚ§$'4Fˆþ'4°hñ’ÈÐqÉÅçZ-#ýBĪ QTRú×7>ˆ Mþ÷ôcBÜ_ç>N½ü'«×kZ·a½¼Ügêv½3/©`çž‚çW]Ù‰–¿–|ü}ºDJhà7¡¬—$â’ß„%~cLÈЇ'¬—$â(JðüÙ»ÿ=ýoƒu|áoMGþâóN÷9¯žÝ=mëËõÚ]T\¿gݺ)»|uoúèÙ+ë—ŠJEö±¤Ì*)”ûãÏ+òÄ£ð¿ýìÞ³{É«ŠKʳjd6lP¯eó¦ÑX-ÏkŽ*¿¿²¼¼²¬¬¢¬Ì_ZZOy¹É å¨=ý‚}û¿¬NõWT”–•¿¤Ä_\Œcy ûwïÎ~M‡hlÄ(¯(+*)Ú]½6WÿÒRSª¥V­þ¹~ã1š Êç߃£¾ûó’/µFZzfìV1jË‹vIiiizµºժǀ¬BU¥/IN²’SR¾ jÄ`%¬ŠRŸUYá/$¥'¥¤û| ³{¿lüÉ£ÔU´yóæî½ Y{ˆÐ†ÚQ±¾~ò>ü*’·DIB $4à©ÐÄÎ)¬[»¢^Î(+£{íœÖVµ†­ú¥%ÿ’ñ}IÝåR|ü2ÌÓÌXåþÊù‹V"˜‰0²62úIª9lÓ/»*++øc®„ø©CÛÖ‘Hª\òþ'ßõîÞþð6MËÊÊç/Z’žžñéì…—œsr$B%Õ«×XµªôÚë<"âRÿy#gײvKÃö‘ÍÃJ—4oÖvéÒ ¶¢ÿ³Ïý´sÛüí;<ðï!’RŠŠ 3jú““S2Ò’·mÛ”š^-ž†­ZµrÀ–/_¾yýO ²[W¯Q3ž¶€)+Ù[ZT À………;vĤ^\\üÝwßeee%''ÆõµHÏÜoßc ¬(¿²¢ r–Ó7Š«UËL±**“!ãǤŠ"¿ß_TTœ”öËÊÊvdÖ¨“–q <ÇÐaÓ¦M›7g¼ë™^~ùeÏò}"´nº3xeP§ËÑÉ>m‘Hh ¡x4àšD[/Qt;ç=YØ {½ÙÕšœT¼ã«í?üÛW¶aÍúÁ{‹{K{‹+‹J-( \YQ•»–"£ŸV™=²Žö”§÷©£¾ûVϪ…å{·þ²È P³nóä:Prñ9'i9n nݲå´Oæ”Wzo‡cE¤zu 3®e…‡ˆKö•ï-+ۺ6a4~œõ’eË–––úÏõDxþ²Š½{ó³êÖö{åIi%§¤¥$§”æ×¬Ý 5ÙZ³fMó6û^}qÿVò˜“srr–.]Ú¼u‡8£Ä%h‚ùã²e˰W8wîwmÛæ (ÉËËëÖ­VP–-[Ø¥gßh:‰Q^˜¿¥zV#Ë—TVT¨(ß³gï®;ËÊËð³÷5kÔhѲejš/Àè䀒¯¢‚cwÏž=X+IKK¯W¯~åî]zÒ2ªáÕ–ÿ0¿}çCr£Ïĉݬ=%8<–uˆÐ:\=óþ­7œñX":9@3%š'4Ð4àšÄÖK½Þ7Õ«°Òkþòyõz[ôèoj<= qeE ¢ÒòWü•¸¡¶¼‚»9g¸Ï²ö;nˆŒ~’ýž0sà·*€ä*…Å…±¹V‹¸¤K—:Í[ð 8©²<©¢ôÝëj`Ö©s„»É´Oæú+S*Þ/zAh` Mj»[™¸¤¸¬°¼|à€±+V| -\/ÁvÒon\ºäËí;*Ó«æ÷›ˆØx=ïûGûqð11á# XAñ¸Ë˜ß}ïƒiï}àzæ³ÎFqW~xôÓ¨ë ,I`v[ÀA TDr‰ŠÊ Ë_š”‚û J“q«ãîõIVѽ׸±M˜²I›/(”U“BâÙÐ),*¬¨Œº«¹^²§°ìú­[óiýz7k–·óG„&åå%‘Ôã,ñ%§ãnLá’ªE‰$ÂPih²víZDˆêÔ©ã†A fÊo¿ý¶Cç^5jzŒÒºÐ‚#ön@ 0hŽè˜5LÁ©[oqÊ¢`ÊRZZVtÒ3k4iÖªf-Z*%[p)²Zsà7š0ù€œ ôɬVcóƵéé©<ºÐ$, ‰”¬_ýÃúU?8ÚkqX§9Ü”ôLñ£õl»°´Œ.Šè¤u§ÖUÙÙɪ“U‡µA8SÁú5µºôÚ]gYMvm\o5íËå·²ºôl¾xÁÆü^Yû~ Ìþ?áaÐs‹]ÒmÚ'ÏðÿDâ}ŠyX‡î?¬Xm B,±zÆÔÎ=ºdù*ËBh²ê£·­s_‰¶Âdðæä؇·¦±tà ×j%KƯ\m 8ô«P¡Iì{M~Nѹ޲èi% ÷oñ§$ó‘?µ>û–úuk§Ñ 6\<ˆ@¤¸¨øãO?£¼§œ— |Ï/+¬ô­’ë%•ý‡ÑO‡Ëò¶®}ì©‹¹ˆ¢²rÃЯ€;;…E¡I<$°Pá/KÅ= ¥Ÿ~…RêTVÖÆm­Ø*‡å|è¦ZfÅêo§ –Ž÷X>Ñ çê?,.Ái!C“¢ Þ§éÊJ@È- ½[qÉŽ‚âü’’¦ÍÚî).,âŠK1ùƒÑ7¢è¥ØvÁ4 &SRR5Žú´‘¢D¸w’+G’¶oßÜ5‚c£F€ q BÍíÓÏc@Ð4Äü °ÌÌL„G8Õe-ÏÎÎŽÎu¬àDp´ˆNjVÏr͵šâ‰ØÁÇ9ËÓôI!¢¨Q£Fë–ÍvïÞ ñ‘ E,.-+NBФ¬´Òü† f÷·Ä:7ˆxn¾ Á`›Ö­@æ-ÛňK -By™F`±%ŠQ[XZ¸»ºÙ³aÝÏ{* þ8嬧Î}¿A͸ühk·ij}&S>c‘š}ëXÓ×lè—ÓÜÊÛ“_§)ãçB_2]ê,[¼¥Y]† è"KþüO¦ÏgpÓ¥Wp)Ï.D½îŒ¸vŽ\+[Rg@¿:K§O]–Odñn£8DÃÙp!ÙÖ•ÓçâS¢ÞüLvC¿6›fS@ðÖ¡`ê'‹qÛ“#¾{ÄcERÏYGDVËSÎëg™ý©é/.ãiŽ£º0ž­–Ö†uuöÅ› ­RÚºõ—-¿üâ4ÍnÔ¨qãFUÁ”sÚ¹=nÿàã` cõ3ý»Ý¾XF¾…Ë}E·ÊÚ[?î=WÞnÛý¡G;ß9õ¿¾ ôüËÇÇQÈ5W\‚O\úB¬­¾áÚÆ"í^igÝ©¡Ûª¹‡0ªp¤–ÌCÇÝùW”†m­~nü”áw=ç&‰5˜ÃþxèãÐôMb _†Ç[÷¬·¬žƒ9.øy)¨ðs¥dàW=定TÊ %ÞÑÉESN&Œb^­Ñ«ÖnêQïÄúý®Ç»"±S«ÖH*‰¶ '\/Ñ›&žÜî“/ëËK’’*×®ÚZ\^kÈQ{\7aøøöJì°Ã°³p¡  ­0sR£==òÈ#¨Ñ ªfÍšµè»/»y\Dë} - ëäçç3VwŽ9žK—¸ÁIrrR%!ŽžâœÎæàÁaÜh“,ØV,ÍUqi˜kâ$HÄ%{ò¶bm aNÝéxF$nº­Ûw×S'«hh¡ÃŸZÒ¢MÇôŒª?^TZ¤qI^~Á†_¼èãýˆKÈqÝZY»6aâ­·ÇjÓ¡vÎî– v#J(X³¡e›>á"íZVÐó¼‹O±pÊìº`^_=gúüZýÆ hiqϾÊ&ÁB™}§.Ív„³s´nÍîÚ–naÆÊ:ÙZ·`YÖ)çkÜ-X¼`Cí6LïÙµlI›Éòb#H‘Àž ãÖ™1DµîSÄÍ5À2’îZ†¸y'jqÓzqw—aç]\×%~¸‚ÂÎÍ4ï' ùÇ‚¥‡õ¹Ø²‚wóxiIxÞ%TYB ‚t›\ö4lРŠqI{3¯ã-%³`ÃÇônÕ€ëP½`ÜCÃr÷”ä0ò1áÔh÷ ííß.™5ÐZýܱØ=}ð 'b"{öNyãÀ¿ðìxãb?ìðN >ÀBIΪ"‰A‡—¥ŽUÓ¦ jxÁ¸åwq‡›5râ9ûÎ’áaÛd«&\v{ç;Kbõ8e‹Ì#4‰}¯ Öø+ó—c5ëwMÙ÷——[8ŽÊm‹rÞk¢:|¯I4¢%<Ö4Ÿ¼È7z¾µç"µ?|ÒzìöM• .ytS߉¹¹ßŸ´wOQÔ½’Ø$ü¼M·8ÉW¶dcÍFõ*“ÊöXò2&Ä…%ÅåEE·ì|õËÖÇŸÝÃr˜i IDATßaÌA`QR‚©Ú:¹ÏíÛq%Ïu~\Ok&w>nV()Châ?U 0à††¤R7ùÅ%[ ÷".ÉLM.,Nµ×Kÿ”YåUY5A¹ó—õ` Åø|™™¾@åŽí[0¯ÆMÀˆfÍšiã/rqƒ[L š³`€y”ë^Ib ×YMP@]wA¾I“&˜Ý{öìùíןõ>öd/QËÚvìéYW\´7]Rµ{Lî&ñLç@’Ž;^kÕܳ;¯vúh^…çqâ!„¸doþ/uëÖÅkKðLê ±W×®]÷îåƒ~øáž"ká>ƒÃóYÈà"½ûGW}` ,>aÃnqî7]zSå褸´ë%UKÈ ¹ÝÄZ³!Kb‘,ëÇõ»šYr£IxªÛ±³ -Û4Ÿ-Œ•·»v¯£Z²L÷\˜ã=+9¤ÐªÝ«CËù }ì£Ýëóšvn³iÉš‚.–½gTAÆ'YuÌ2Œ´³“;Vpn4©Û±¯äÝlDRä4ï۵kƒ‰?ˆAv¯œy¯‰›V^ÍìÐ5¡’ AX–Á™ÈIX•§–„ç¦J%:Ö¯iÚÄ,:™ªâìÙ»r_Å”nãËð¡òÝóÁWn »äÜpçðÛeÂö"Âõ€G'Ë­£9×Ý5üÎñ^@¿vÙØÇ(I''ævkÚ”N‹´·š±j°%7š„§žÞ$w¥7k»ö‹îà X©9ÍY|úäšNã:M+0w׆c9èç¡IlååeùË0íáå%wœWG6V*Ëü‚¼m˜¨GPÁ…(÷šÄFîÔâJyÄ%Hˆ¬qk-âäúTXˆK¤<€tãD† Êò’u¿ø•YGå쵊öòþܯê/ÂkÊÊq{GIaYQÑëß×ÏnR³Ž÷2#nƒÅ-°EEþ½{Ë>[p—C·#df¤—–öÃ’É>B¾Z­¬íauše⳨ÚÞ¢¬¢¢’½…Ø*--.ñ¢4x3Á~ »;oŒµ{wAyYYVz¾@E«¶±tòÓKšµ´w£`œ:uª»wÂâ´S§Nxiì…Y3vh¢«&˜é²›ƒ'ŠQ¨ §ß|ó Êg}ú~ÿSΈÂÈ~oÛ²!3#¯‰ç^“8¦sPU ÕÐd?XqÆ&TVZ´7â(ñÈiT c- \Õˆz¶jÓó:]ÊBh‚ è¢ä@¢“¢²âÊüŠ*­—ØÌJа¡ 1 вZ´±–¬ÙXp°o41;Guö´é€€` "›5›¬6Gq2î…;m±èòÖ?vElèDÆ ž:Þ¯Â}îãì¶èÀX1šmõ¹xLsk×ÒéÜIÿM¥J‘|øvnç;á5Œ¾\û8”s¦KØU+1”„‘æWÕßþ%†9¹Ýä“öK†ŸÁZsNf=ùáG?ìûF“Ù\w–`%é<ëW½×Ø#4‰}¯ æþÞY^ùèÛùΪÉõ§pCƒî¶Xh¢ Ú;!BÞýºyf)žFææQE`É){ùšìc¿?šqž,÷/ø¹në¾r\LUXeÅx$UÞÀZ„]„&WoY¹¾îé4ôöÀ„y¡IAb®j|øÚS½ú|iò¼K乿LĈ;1x^7úª Öžp+IQQéÿ1ˇii´Hº5ÐÏ7Ê–á^ÝûŸõì]|ÕÖ¿›„ÞAŸ”Hðø°%‘л€ø¤KWAPáA¤cA@QÁ`¡wT E¤$°HKHBÂSélÊf¿sçÎnfwf7“ÝMÝÿü†p÷ιçžûŸ3wΜsæŽFß:ªRïܪY7øÞZ¦ßù±~Ã’ãÿ Ô:o¹æŸV¹§n‹¶6±ï‹ P‡ÑÑÑâQ[t~ï½÷:2Mèn'n±ôW¸ÚdeÑkÃÔVT’ËäæMBžÅÆÆê3Ê¡pU™Ò~¤”•«r‡G6buíï+eË”ºyýŸ •ªøùyþã—7þù“l²KÈGB…ŸI˜ „­Ëk¬)‡ÿ»´)k(G]ЛetF„[Kœ *uÑÞôÒÒÓþ¾ùWÞã8Š®¸Ñ°áÈ 2¤ÊªÕ*_ØsŠ"¹ºñ=§/+Ü'ß}M/!óÉ—ÚþòôÂïÆÐ;·<Ç¢tÜ‚’§›4é3‰Þc’ØÐèV<=™ì6M‘£žœGúþBM¾{ñ‘M}9P ï@i˜&Žä´Ög¥^Ë4g3Ì£ºVÎ$„Éík”QÏNÄ¥d¸h-ØwKN‘h"’W¤×’Åë?Òê)”Ý’mN5ºî5¹üO)J*y¸ö]vû9K2ÓÓÈÉL#—IÙ×ÿ¹¾-¹Fvå‡î­)<ÂöâÑo2M(šCv Ýïé'Ù%µèT¾Œ_Ù2~+”¿•z·ŒVÈÍ(ãø zO˜ûHh•:ÆüÿU¾K·'ëÕ™ñöÇ$…Éd4¥ÛÜQ4$pZE÷6ÚÒRo“¡@·U¿Reh•0z†”Ó¦öEçž{î<é°(81MÈ¢@’•Ý %ŠÑ_q#$…^!¶{õÚ¾c}¿3Ó7¯^ÉHÏøWí@}-ôRÕ­ÿïËÉñä¢%×òÃ4©Pù_´B.ÁRªT)«]ÂÍ~əѡKO½‚:¦S3¹”tZCtú„á( ¾nïƒ<È…-=Óè–]»$£¡ú)Vß_¶EÔ©G«‰Ô·±‘JÖàñ– }zñOƒ­ËÄ«v ’VCùtã!ΜÖ#¬¸?æD‚xë‡Ê·ør)’’õ FÞíÎB»G-©å†'¤ƒ"5‡Î?‰®Z lêª?ð`1|Vr‡m·z6þ}ÃîU?Ñ Øuر¤Áj¢”k—…Mðód9pCw_£eÙþ¶N›‡šT™$IÇS%è¿G<3´J%þ‚'­É!%Æ¿2éÙ*½Ëò•Q†<;D¢eì‰7É•”;„Ù¸e’âô_p—ÞNf}»È¶È݇°ìiw앳„‰ä‚¢XXüGoÉ~aTâ Ú fiCä†ÔÙƒÿ¼}WNhpžkr:.qÅÚMCú÷~¢]›OwÞ¶zMžköפ·?°&c.,ÕJL¨—¡½ÚŸO¹Î×¼Ïä_¢¡#}¤&#›òFéoF¦é®‘îqÙßn]êB§~ø¢Víêª]H?ÿ±9Ãä—–å—šQænFéÔÌÒi™~1g}›==ýþ&WüüzU½gEÙ+6][>w攲e|Ë•æ¦Éì9ïþ}ó _3½ï“U–›µ`„ªÙºêJÍ:5bÏ^¹qå“áõëÛ')9~Áû‹™O?f<;mÞPÍVÖJ矄½˜xæÚÕ¿ÉD XJó6OܺqõįGé†÷ïÆMï«m?}9ïèô‰Xé5" ›Õ4iÝÁþÝo"3¦Þùߟ‰äN’^ ³¾$¢ì޼&Èķݜ͎8í.ÙwªT»×¯”çÔ×ÝÛ7('¶œêCíÎAÓyô.}³é·#Ó¡¬^2XB˜ÚRY[l]ˆÿN„x‰^h¢%zÉ_Bç÷Á‡§ïÑ«ê9ß¾”ǼWvåÏ䇛þGÝj¼_Ÿ¨Y;ÀRÂWž—ߟÈw|xÂìéIÖ|ò½¿¼uðÑçÔœ/P|ò&¯‹ÔyöšÐkÈ ÓÁ˜‘Ý7ô6½j›™I±S…^\5D4eoßû%ÍzTÒë±)‰çãÏdܹÛïδ[wRoÞºKû­;iwîÐ*géÆôÛô~ƳSÚ%$FXËÒ‡öþvóæå¦•iÉúgV,=M¯(’þ>XÎtŽh|YϾq°5 ­ý}R¥ S¹ÊýΜH{ë§Ýéw|L¡™i.æ—(ûáñˆ«ÿÐxðýШJµ{Z¶ëê@\ªý'< ÛÃeËW¬ü ²îä¯1›6mÊýÄd4ä“Ý d wšô “WJ²È&8ñ+[¼j”Wy¥§S£<;1vÑ[¿ÿy¸™¦]¢“y^ílA Ý ^ÿõ‘÷òú(x!K|¦‰ó\+"Ï¿üjþ¡#  üãÿ`ûaî3¯]Ï·ß°{£ÝÅ­þýêßÏ3Lóc#[¤éc-òƒ³ <›<ÑD~ËÕ…Ö%¼ Ùdüös.4È'È$júH„;vI> ¶@ P2 °st¥B@6M¸—Þl¦uJTÚùm:h÷ŠZ PB Ë y›.…2¸Âê×ÇàCÎKZ‡¦PFN‹ô™R â—¦”æ×fyc6¿ø{†/ y—Î|<#¿~.r®IƒzµŒé¥Ji8Qôó%@@'w)|z릣LjL@Vò¨X©rEUõò•+)S²Í< Ë›7²KjÕ¬¥\>Q Qòð‘M“*•Ê×üWõ;w¥òÑ,õfÂØ@]ˆÏ¡1Jÿôñ½q_ªpœè‚ D@ €@þ àG¯ ηïoß¹’?½€+@ t!@Ÿ;E~‰.¤@€@†ÆÍûQ7*׸{ëªèeà€@ Ðè@a逡Q³>ùý=Z‡eÒEà .Hà Ðèt àuÀ§bUZ1Œ–3á;ÊÀ:€@ ÐÂÕ è<#ù L9e‹ L8Ðèt:€¤Їb¸Ã„ì#Ùs‚²Å‰L Ðèt:(xà¹&>Iv¶ e2ƒx>À:€@ ^ ¡]F¥Þº& /_¹:•¸¿ÞèáO·{@Tâ/À/'â?ßxà‡ƒ±Êke1Gà(Ù:`x@Ê5QÚDŸ¾÷r‹pØ%3B@ÀÃGO½8ñ£‚^B _à€–ȯ K¹¸òÖ"ì~f΀@á"Ð"´!]“Êke1Ià(Ù: ‘kròûV3  &íÆ‰Þ ëÙýèt àu@¬k"Ͻ² — .!0qT?åî§‹Å,Â3¢@8è€7è€F®Éɽsäùp×›†¤rßiïtµÌ’¶ÿÿ0¼ÜÂÆ¿=.XûpNmüòзõ×C©Á‰z¶ÜR?lëùÈ'4ˆTUºeSµDp‰¯<;÷£/©!è¯(«ùì‰úšöŽ]Ÿ¦ÝzT³²I‡Éÿ¼"DB¿À:(,ÐÈ5‘õâ> 푽#õ¬™öõÏìr”}b¢E¹?î^î¿ â¤¶ †KÝ4®#>Îë©—&óOH¤žììœØzÔ¹l:™€ èF€f2ánSš×KÇ.O¶lÛl‘CßïôT ŸTI‡l®&äšXl7<+ $€pðð6‘xX¶h>¥->î§G„ˆrƒÁ’Ia™$lþ·Þþ]8ªÙD³Òy/šM¨ÒµVޏ¡Þ»سs;ívc&Ó[N6qÉeÙ¶I÷½ÉŠÙ¶e3“–²m[7¶lÛžWªš(¯M”Õó0&Ð’§ŽsM:µöËÜ‹lžáâ¿­ð€AÚ‡Ë~>±2F†Ëþáú.ˆÏ—¢L_ZÎþßôèý6|¤&‹§æ¡výJÓ·Ô‹Ø´|@¦Ù5ÅÐò‹8Ñû.Y©2!jÚš6=ÛçL¡ŒÕlÜ4áT¢T³ïèrå»r.|œ´Túmø@¶ãÊD6pY”\°v÷^Løeíq[ÙríQ"˜ö©ÔÈgììê,2SÈX¡Cš{CN>Æ(N=pÐ?n{Ò7t$‰(Ë3cûÚ§j O!ómÀDó‹5ÉøˆŒ!*yxÅv¥“šã&¶1 À’m†É\ê9`n·ˆã‰Cγ9å#·Tý—0žøHµMŸØëÜãÓD²š!Ó75ìuî»Úizî#CMnOñ(Mû\{ã Ó¥f6ÒÚ0 à>Ü‘œ%ÊM³’”×&Êêù ˜è@ÉÓÃ-øçýÊWªnµKNnzÊýÉ·À9ü6¼æ¦ÆÖd”ï+z::ájÒû[嵉²À 8è@ÉÖé:¾r2l¶)‹Ê'7u×9o%2˜&Eél@!Ф÷6ÁI\›(ètÀtÀq®‰‡æV°@À}{àð €N§Ò-ž^÷'pEòšàQœà Þ£ZßÐ)ró3Þ‹žŹÀ:à=: ‘k²hÞ4ï½`ä@ (!0f !žt:à=:€\“¢t#‚,@Àx^ÀàðÐÈ5×ÄÁÝÕ@   ¯‰÷<' p1^à€ פ o6èä <# ¸€p€x ×$O· E¹&7ž¡…Îàà=: 7×äÖÍþ8yøÄé˜?N:ýû‘ã8ùÇA£ñ®þyºÆ¾ëªµ·Þåî×ÜP&ªÊõú›ƒx3x^g8è€7è€Þ\“S¿~9ü§lŸ,óeÙ>Ÿl–møèèc¬b-_æk6eeû²º÷Ö¬\¡¢£ûG@¹ý¥¯|V¯Ù€”ã?ù7}<)ú‹Œû†\ÌÈó‚ñG=(y ×Än­jqнçÙãŹöNЛkb6°ìO˜ªuϪö„éÞŽ™Õºšîéd0:4.×¶qév–ïиüÅ¿}¹·zUS½æÃYùæUôaå l9²NÍ2wnñ b@ÀxFÈàðЛkBᛎ¡Á‹×žxµÿ¬sèÞ£‰fsV6}³Øœm`¥™!ÛßÿþÊUjhN²u/v-{ïÃ5 *w_Ûôÿ}ò ¿¬‹·ü¿:›|½båêšMP ¼äšà¹Y\À8xèÍ51˜¹V(íúÙ!,¨cxHçÐú‚ۇ´ ¼”rÊѽ¤Fظ€GÚT¨Z5íûËU­AåÊgee5¨]éÞòé÷”3V/“J{µÒwi÷IûÓÔ/DÏ‹â¤àðÐkòG Yä5ùô1Žn §Nìß÷Àƒ­5 ÊýPêòÒ€Gžüßù¤ZÃ’b"k?ò¥ïj%ÎÈÈHOO7ô÷Ǭ^7Ç=£É•@ Ä#€\äš’{ϳ²¸¢1^à ;×ÄÌÝ&ä5!ûÃÑÎÑ4ø9º[ÜþßÙR÷=åã[Ã'3!éJéûxþÆ• Dl6›É¹yóæ7®IÛÏ?ÿìˆ ê€·!€gDqÆp€xèÍ5ùãäAŠÚäî59šø@“æŽnµiÚ´©ò(Ù%ÂYBÖIš´Ýºu+..Ž|'õ;äãˆ?ê@ C¹&tBñ -´8ïÑžkb g‡´‹²ƒÉûW„×äË­1Ë7\¶~ÿ’5{µkÁòï-ý†ö­‡®^¿[~ô±=ûk21™LÊz²K233É(v ™#"šC (äDÑä€J àUØ]›ÊëeõÜL€ t „è@“ýi®7™²|}åXÌB­/ŸüãpÇÐúâ è3†ú¶wˆ,“9#Óœ‘•M?™fcz¶1#{È‹£ß™:A} ©ì{+44ÔZOv ¹IÈkB RSSÉF¡¿‰‰‰.\hù ðfÆN˜¡¼6QÊ€t dë€Þ\z;Øò†Nzf&•kõ$íd”Ì|Ù» #i_¸dù§‘_iâè^Bîë!á/ѲKÈ:¡²¨$ç ¼&Ž0D½·!€øº8ãÀ8@¼Gx®‰¯o)1`“)“Ê çMUÏþ§~¶VfúÞ7îùn™&–™eJÏ ¯I6ùKÒÒ%ÇI÷š¼úÚÿizMÊdýÝ¢E "#EÄnD‡<%Â4é&—/_ŽðÂDµ¨^…ÀØ 3Åxŵ‰2p€@¼A¤uM,m¹¬5÷7~°¹uOÏHÏ2±fmŸlÕñ¿éYÙ|üù'Ÿ}ñ劯h_·n¥1CZEk¹&ýõשS§Nœ8ñû￟”¶3Òvîܹ¤¤$²KˆìîÝ<|G«+Ԁݵ)ýÔ¸fQ¯žÇ€ 0[04i9€¦pSV¦¯Ÿì;Y8WÃk¢œæùåõ—ú¥Sf‰ä#±îDCeªkÚkš^ZH$·oߦ÷„Å«Âô—^É!—‰ú62ú÷Ô•¨^…À؉3•×&Êâìà(Ù: ›&å*VM»sC 5WÓ„^ÀùþÐÎ‰ó&8 €€dš(¯M”>À8@J¶H¹&‰°Cs5Mpÿ@ ` ÓDt„gDà€xèý†NÁLÄèMðn‚€8è€7è€+¹&šS'*ð8È5±óé „½çÙãŹöN뮉Çç\0@@xF(àð@®‰ž»h€@á €\ÂÏÍBù€pð@®IáÜrÐ+Èx^pàðÐÈ5ùýàêMÊ`ëmT­àרNÅÖTóõálÂFi‚õ„&àðÐÈ5qbšìøùoƒÏéÄ åmƒ–rM£u`ÓxÙÈøÚmÒOÚ¨nל %=Ê@@[©YÇ“nš³³»=z¯&V’i"FçHà€xä-×äTÊÇï¯FúQ«f-Ú«V•÷ZUkÕªVþÕ¬U­VPµF5«É{Ú&†äŠ@¹²~¤]¤c^h‚ä:dÄ×DÀ8@¼Aò–k2gsÂè'ë¶ã²u&ån’4vCò—\§¿ÂwB¾Ë–vãòîE¹Î¼ „@i?öáö„ɽê rM°® i‚÷<+ µÇxCž×51›YUã¯ÃÚU{¹k-¾÷¬õÚÀj³‡U{Xµå/W‹|­Úª)ÕV¯E{äøZ󆕭uyN¶™Ùï»GÞ[Ñ í#÷ªÊ5;ÇUlþéyU[5ýùE]tRªÛšwŽk·è¼µž³‚îUÖk4Ô!˜]«œQº,‰ÏÁDÔóîTCV-‡Lݵí(,ýž_ÒüÞÑ;³ÍñŸ¶“5n·ºmÞkÜ<§»½£mq03Ò.lvàQ€tÀ{tÀ‡ìS­ø¶Ÿ(;¿7Ð •¶ªUË–-Ëh¯Ê÷²üÿW¶íT]®,£cÕèSÝùâuëÉVß2_¦ýׯç¾SXî¬ÔUv¶££;ÇWjþi¼t4h̶[ÑÃQæRÏ{=’`M7tÿUì–yõ§rL÷M“ïFÞ×óä ™y\÷Í!ÝdëdçøžËm2_Þ;¦ݛ톜342{SO4´2~Ñ+›ûÆ,ê’ýÝŽì¥Ò 6XÙÓ‰-˜ P9æ pÅ™²•°Í"Âa¨|-‡œ«ŸU^›(«ç+`L %Oò–kÂo ¹=×RJ,ß(–r`¥ÀŽý}ôü©ŸÂŠ[Qý1Ã;ªw©»AeY왫Èr%à|Ü w; IDATx«ø¥#Çþ{Sôðú²[ò¸( –2qˆêÏ"¦þlN\ÐEAàˆOÌô³OsæFü{ydñÌ¡ÉÇ@Ü>iN²T“Åhµ@Œzür¶E°˜éóØ|‰á꾆±ì+[æ$Ɔn$'`‹>‰'žVæV(²YÌÙøœlz1Øn¤‚RÁŽLƒ¿•­¥wöX“zd…ä 6>r䨆ÆÔµ>‰!åç…æIC­<ݵ´•Ù¤âÔ¨%‰ìòm8 1óì¶gjϼé£,‡$Ù6<Ægò`ašØ_|6צò:EY=w`(:@¹&|‘’´;7¹ !•o¹Ý;Œ×cYþë–aQ?.‰©vûMx¾ˆý%•©*;öšØUR:磤´—*¨aY-6²>Á ŸÍùE½Ÿa‘›Ïý79Ô‘ÇòÐoqó˜Ù©‰´Ïïb êÖ%tÙî½9Ì)~´¼Ab/† .[þZ~ BÏ i§͇±(.‰ŠÒ ²ÉŸpÚy©/g§F-‰’^t—ÓEИu›ßcCÜc˜$£w΂'VhWÉ44\âë9à Þ ´® _n’l._¿ÒbÀ¿\åhþ¤uMžíP׎¨aºþjd¯%iךFcâéëSÚÖúubâêÄëRt§lͲåʱ´ëÆÆÄW¾oÃðûE+‚Æ á+ÄÆ¯è²ë¿qkFÄM»¯+[kžÑޱÄE?õÒÿ–¶d;§Ý7»Á‘è!Aœìüxéè÷#õ?ù&¯´%>Ö2œðQRj 1yYóÎo5YÆ»VP&Žl4¿ñw;ÆpÁ6<á°k{1âfÅ Ž×èU@”8},O›Ê¹eqžpÈ«ø ÈÈ>±\g ëʳOߨzÍŠ¨Jo oflJÔå²?^ç&U«x¹QÄ#µ–/‰9µåtPÍZöé)mÆ×44= Žúã…àlsð´# >.*#Þ8Ý\rðçoî‡4nÄý ¨Éà}äÊ.íw}ñqÃ;Äaž•²‹S>¼K Oú¿ýGƒ‘Ü'gÛ<43n\'¼1?¤ó}cÙc#ú<&ä±a¢dh) 1BØÚOu ×è U@” ¾Ýkr.EYÀ€C^u@|CGö—»Æ¹×dp»ú{vr¯I¯¨Ë³®Ö¨VYr’D¾±$ê2-[µZÙ)‚®Å×3Y²äô÷Q‰Ae/?ûѰ4 åa(Gì‚i’¼@ Š'dš×$¯Ï… g8µä9×D$$&^ªj<}ãúéË7æÿJûu#-¸Ö¸jÙ‡kIv åŸ$RX§Q-VËÈS ¼r/žÓ,¤@À!PÀÁ}È[®ÉÛ/t õÏÌö¥ŒEÚfþv™2NhkDkÂÞ¸1±M£¹ b®ÕêÚ¨ìå+Æ—i—¯Oç½Ð9v^W¦x´Å á52«ŸÿPL yÕ±” ·qt,kÒ¨N…3o–õË®RŽÑ>¿Y­—™ñav£‘ÍéÒˆjæLŽèj4þ•xãÔ Ê&¡Ÿ‚Ò;ÿ¯éÒ à2üU6íL9—¢¬¾¿`¢G¤\“R–\“Ì *ÿ~Àá:YÙ»»zúÒŒ,Ém‚Í)÷ežC®‰S„p”Èk²àÃ/²MY~¥Ë ü›©&i.cC8@òª†Ð.£ÒîòõÖh+W¡ •˜&‚ u"¹.—€Î‹Ÿ¤}ú_0WlÎ ˜„:Á(0¶í‰;IùŠÕ32Œ>¾¾dˆ¹T€2p€äU MZIëš(lüü6MBúî³NÆ vǘ}+Õœ}7›¥™Ùú›ÍRiÁ{~ 6›ž*°É%?:ÊÕ4q¡SëËÛ.´E òm{cgÏ~×·T™ReÊ3æSª ½ À× À³²@8‡¼ê€È0¡ØŽT]Ô!÷× ¬Y¯^­zu¯m?³ò™QµBêVúw]¿&u؃þì!öHíÐÎßz¬¿¢ÊˆÜ$JÑœÿ,ªƒ€\@°¬Œ4SfºÙ”U¡ružv"Ù&Êye`Я>Y™ü»9F)¦#Ê0ÍÄMHŠO:6ñ÷SXÚͬ4¿ËÑI·÷&d}—Ìö_`1ØO) F‰ë"vF«§µì3¢/yÓÀVÿ·"™¨‰((‰µ*£Z8/<è±VCMâ4£²˜"`£×lR*䣚VL‡©!¶9›RM2Íf³r.EY}&ÀDäy]‹2U³ž«·¡=í®û%uã!Cêµ!}[›lø`àÛW¯wýëz·?¯vMþ«‹#®ñ‹š,[óEyZ ~çHj˜ÓFp¹“)YºÈÚ‘´ŽêÉA2amåJUï°¸tÛ1¿:ÿ鈉V}ИU_ÿ|ðëŸW :÷¦c" ÷êƒ Ðb YG–Ä›ìbË9û'91z4›Ë• Ã%¯8c‹cE ‹üzõ€ÞÓ„ÎÐßwÚ°æ­õ«\‘“>aÊV¨l%äï X6”À8è×µý¢ï2t*++‹Ó·g×|ùÙÊåëÍi7?ù8öÃÅPeµòŸìYÓÈdb'OŸÕ쀌‹±1#¢èá„¶¨¾šDy® ÍÙÅ-äK°D,Œã?¢Çëä#]¯jä?dùÖ!ÄvPïlV7åk3RDvz|bÕ~rµ¸I@ýjó 3HúhsóÇŸbë)2ÕÊæª1 "ÿ°h ¢')šóa½üï»p{°Ë5ÑœWÍ·¨ç8¡.æšÜ{ï½=zôØ´iS\\\^§mÙ<ׄ\&b'S… Y&&<(”kbÌÚjÞ1§´:ŒèÛRC‚»õ¥l+…f¥š£ÃªáþÏp‘èBóƆ(²i¶wvÀh4f™ÌÓ®¦uuG¾¹È˜‘ÝcØ[©Æì–=_¹fz¬Ëð›wøßôÌìŒÌLgŒ ï’˜¨ŠÌ8"×[Ðë탾=@l@@'ÞÍA®‰úÙþ`âšP® ÓXŠoåme“5jôë×oíڵׯ_×9E ²Õ*‘]r=óÖ¯wŽïºñ휓ý¾ùùô5ãMºUw›| óû³ÈrÑÚº<Í£<'Ïåé­-FÊ:m/ §ˆ?w’þÊY±"ïviž1ÅÅpÓÊË:·k×®­_¿¾ÿþÕªUÓÙD=Ü8Ðd6ïIع÷ö»ié©·ã†.=~ò›”oÈ ¡Ø,)Ê£½u™@ïÐM`yfç"ËËÃ1vÁb—Œ¢ª”ÛÏoÓìœGžáYÑìNöÁŒ•É™µ·.Kéå k.ŒäGÉó–nL'Cdô”Æ Ó€—¦Ðß®F“ï¤s¿æ.ý_JKÏî>𥴠²K94;¥HG[õxtPtg9šã?äù6ß¾)U`Ž—× ŸöŽL6‰5·'kîŸ(ض½¨Á«P>cø4žbbíkL+q4; oû„$OƒµnÎùhŽ•ÅÉ–m^â£9tJL&îà¤)þªçUå‹2ð8×þ ]N+¥ò‰+Ï|ä)騱ã×_íZ®I½zÇÿˆ»bӉʣîûû­27ûŸ®9©|…Ëï7Z:à©_m9Ì/òÌ´ïÌ;©’DJúÁÉ¥Ýpžœ‰*HEÒ‡5=UY)••G”9#tH°¶©tÖ›•ÐÂR•oâd¡úaãæ.[0“|1d†Qæ ýg¢—–èÅ% uÑ/³þR™þ õjÔªyV86 ŠÛö6ejù*5 ?Z«ÞÇ·T¹ŠUìæU!¯˜cQÐç:`x°Õ ˆìº¤XzLŸ:PL'¯óCõêÕŒ¾~7ã›ßƒ%Îø³îŸµ®ôI¿¹ÒP;}^«ÙJ³6­[­ÛºsÕ–ÝÄyÍ’é¹ó— ;#C ö•¹óò0…Ó„Þ»á«GfÑkJ”gCÀü}%n“hJÓD›Âƒy@`»dšQRº\%ƒoé²)?Ú+çU” À8èÑ?“”Ëc:z¶zõê5mÚ´B… zˆíh( Ô AƒóçÏÿ/ãÎÙKÏ^¸6âöíÍUo÷ëX)³exS:të_2¿k{W¢$.ÈSXMV4¥°ºF¿@ä”k’™nü•ó*ÊÀ: _\É5‰ˆˆpÍ.b‘]B…Þ-+>–Ù4µmˆo¡Õ'½8€*Å¡ü›5À O ×ùÎó'€~| á:Öyad—¦ßÌžµanÉ#Û»>Yð¤TÕ²òš•®÷–@\À7t@Ò;ò†20qM\É5ÉåÅa NrM\‰RR\n‹†@äÛ÷!ׄãª'‡4Bƒs\ù†N~\Ûà €(à:â$ºö¬Œ¶ÀM耡Q³>Öws„—ë:nN!}÷Y93Øcö­TsöÝl–ffwèo6£ïw¹oÀl²__ÃÍ® ¸9¼& 8º…‚€ðšøøÑ;ÃÕÅËæ¬ »yU†geàУ…“krýÀàÀšõêÕªW÷Úö3+ŸU+¤n¥×õkR‡=èÏògÔíl¿$i¡L:è  äš”ðÜÜ×ú†NÎ:°úßÖs¡:¡‰;›Ÿtþlâï§.°´›Yi~—£“nïMÈú.™í¿Àb.°ŸRœ4Ç! €@QC Ó˜F"éA=÷¢-0(„\“YÏUÛОö?×ý’ºñ!õÚ¾­Í6|0ðí«×»þu½ÛŸW»&ÿÕEkÞ¡åÕš[Ö¦§ãv?m[ÐB®ªoðQ»MÉN«GÔ ò€rMXî?7ƒ7c(­kb`ÆÔ[ôW”ópºDš••Eíè k¾ülåòõæ´›Ÿ|ûáâ?¨²ZùOö¬iD_>yú¬K¼ø‡ø¢ÇÐ÷ˆŒôN1môù³}‚"·¾œÚ@¹5Æq J>é:–žvÛ:—*çU”Õ÷`Lé€+¹&111wïÞuy®ÉÌʤ`iEöÞ#âúŽ>mÈJ7¥•8ëÈ w‹à}äÏeæh€(k"`÷æg}ŒÝS:àÃmŠfHß–ʹn.\ؾ}ûÕ«Ws¥Ô$ÈÊ$ÓÄl2ó¯Æ˜²Í¼—iô©î;¿›)‚;wGœ]ký²¯&»JÉ«±HŽÖXb4ÂÕ!¾½GŸ+6,,ÖàÈ£?bDÊßú8h0-øªØ™­{Ö©¹½æÍÙ¾XÛðgÑ@“‰–´,vÿ® â¬yÌ…J)×Än.UΫ(‹û p¹ë嚟Å[”u^“×®][¿~}ÿþý«U«¦³‰ {¸q ÉlÞ“°sïíwÓÒSoÇ ]züä7)ßAB °YR”ÇÁܰIÌØ¡òëÃu‰ñ´£ ZÕÄ•-ãqÛ쓸…yôÀhñ/Ð:é¦N·êƒ‹ì%=ÆÎÝIŽò°e²Ý¸ø 6›‡]±OX,=‚7þXL¾úÙ,z›}‹ð©>ì´o´Â É¡§¾â&Y­û––ßÄáîLr¿¿® rÄ'qqÒã"€uæÓÍ9†—#ö¨Ïo¬n³œŽÔç41.pܱcZê†Ì&ÙáXôAG š³#Ž–ëBi+ÍwGíòRoÉ5É™K³2P¶¿¿õ=˜¨1q1×äŸþÙ²eKïÞ½CBBòrñrÚÎm››Læ¢ ;~Ü»ñÛ¿ÿI »[aßæ¸Í¯üÕ¶ÙýþõÏÿ®^­V¹œ&Û.Kã2KìåäÂ8‡é#ÊÖãqž«ä*ùI,럄Œm2…¿œ+Ma ¥Rº©¯ôï]GäûtrJœpB½2é‡3I"=(èÕ©’áÐkĉ‰u‹JÜB •‹ëõï×]£ÿàH.@Ü$É·Á{·0«ƒMŠæˆ˜‹«ölñje2¬-ÚŽ™0aìJ)&Ö`“g£9VQk" p'Ïm¡Ùk~¥ËZm*ë™\÷íÛG¹&ÓÑC¬¤©^½úÁƒÑ¿ÿñÇ=¥»W:ýK|ÝŸkݬ_õì-Cm¿Ò ¯ïܱ­Më×mݹzËîà MG+µŒ±ï•2U­Þk9§’/gb“V«¤—xÙsí¢n`ËÁ^‚¢õ; ×ìÇQ`¥ea›6O¨ÊÉ=%é º÷ÁØ©=ÍüŠ2äØYµ?zLKû˜NnBó|ç^ŒQ,fs`¤Ò›ûÕ§‰gØèÐO­Žz3\ÛÝâ‰fïR4g¥æ$£IŸ{¥%×äŽo)õ¼ªœcQ>Ðç:àʺ&õêÕ{òÉ']°Kèâ¦0ÐÿûdËð¦ßo®\úÙÌkI·oo.»ßS•úSeŸÞ=oݺٵ}Äš%ÓiÏ}2…È¥""5þ!ìKÇJ(gæ$Ô ±¸OÈÑí€-#nq«¾’^K¾°v½=YôfKl(åà¾ÄÖáôì‡ýâ5fzÏb—]"‚¾N©³\ø8õŒ€ÿàçÚl3Ñsòæ•_b×!¹ Úd}¡æÀ‡¯†XÔIGk'$\{­ÉXNèòrëš´àóîë€+¹&*TÈË5kC{þ<=§³Þ-+>–Ù4µmˆo¡Õ'½8€*Å!—9{ECç/82AøÐ‘lñÌÍÌáSWPB Ïÿà;å–ò—Ÿ‚B’ðŸ”82gLKÞÄð³ü¦"å©0©|ì áSçÈdSÌÍsÈq„¢Èti=zqƒ7V>ãϤÞ)¸#õÝi…èK:Q; oû„% –‹*(ó‘hdJ+(cŽYÏ8ô™¬¥®›5Ï©ú¬ùþÌ¢!’Fñ˜K»ðzB»$…iÕ.hÛA¡Ãbt¶œ…RÙ2ÑÒ Ét¶áìV’ö!×9êœ `â&†[¦‹ªlùJ¢=•Oü°BºÐ°¹‹@äº]OuTærºËÚSšŽ¸€žC`Ç÷G§½5µT™ò¥ËU®Xõ_™éôr±WΫ( ¼pУ´®‰‘®!zQ†þвç.XpÊr!Ý{Ð <…¿Ò)ׄfÑŒ´;Ö¹T9¯¢¬¾×`âH\É5Éû-x Š5È5§Ïý<ð†>d³dJïß‹r±ž <@ P¹&ʹeõý˜=:àâº&…rå£S €@G뚈„ç~ààŽø¨í—"~åC< €@D@¬kB¹&$›z^ų20è×äšÁ)ΙHžJÛ <…€¸b‘k"ppçYm¡Ðäš8³p   äšè&†ÿX9×äšèœv@€È䚌àÿîè\&PH IDATrMrŸk@€Èäš8†Ÿøè×äšä:ဠ;È5¹ó¬Œ¶À¹&¹Ï5 @èD¹&úŸ‰á?VÎu¹&:§ rG¹&#ø?€ƒ;: rM é©ô.¾A²ãøW©°gRV¾Ð3¬´¿°ùIì¬6ãW&{hLÑ‹dæmrÈRwÉ›‡xP6‡òàÈo R®‰!#í®u.UΫ(‹û pzt@Ê5!kDÚår~_ÂàŸð;ý«IÏn9úƒ´¿ÅF{´3â?™ÍÌWø'¹È\a¸ôZñÃüÁÌ€@Á#``<×Än.UΫ(«ï5À˜8Пt±vaz]Ë¢\ð5zÌÎV‰JY9kuÈœ-oEX¾I\·×`Q¦œ5Ô}ôbÊ™ÿÁÊÊ\“³óÕdˆJ Pd.`‘= 2NÔó*ê t@¿ ×$VAQ'MŽÝ׺ Ù"N6r{´íÆw9sè]ñ³gØ»±R»ØYmǯ\·H¢é9d]Š ³ˆÇ»Ç­~Ë®2‡gÏY1v}KÜäX’(Óß÷¶±Ä‡Š|œ ãd˜8 äšàÝÉ3@[`裶ã éŠF·ž@€\ÎØÄÎÓñ«-G÷o9:‡}&Y-ß~î½ûw,6Dâ‡IK4­Ï,Ýl›PþÖþÅ¿•¬‹B<¹«†Ó50nr®I-Äáõî,h4‰ñF¸BXG|œãl¨8 Sfõ˜a¤\¦žWõ?/¢-°‚`]“ž¾ò¹»¸gÙ®É)qÂ]A‘ÉÎ$]âÒÄ y2¬[Ðè’Ñ@>–œdÏÑð2a…HÖ çiqÕôz¡sb’­ŸEï€òq.Œ^ö ùÖ5ÃçÜ×äšä÷|åaþ΢íáCìÑÎ*!9¤¶­ßß¿%Vìo„›“7žÌ¤šÅ£C¸¨‚¿µ@?•åœÞzÍ´í`¬yœs˽ ýÂèN•q"-—®äšÀW$çkÂçá¾ß ¹&bV)ý=ÛzûdEÂGòæUÊäÿv@Äq䧤œ1 äØÝq:@ˆÙ¼Jv¢¤ú>ñþÀ:Lâùƒè%yógßÙ%»Ô IL~”˜#Ûô '-q!k"N†ûÏÍàãÍ"פMj%bL,OøèÞVÚg³–6Y±áo}5-}U>Jy¯½F³Õ}9eJˆä5Ée‹ðO*˜¿úaý×W<ãÏç)÷84¦ÓWcZÚ°­%ÞãAö¤|(¼Mgž.'ÞŠZç|r‘ ‡@¡#€\÷Ÿ•áo†B ¡]F ,èÂ.S®"•ïÿªÐ/ò’!@äº]OuTfzz`X™YÙà@xûM›:­|¥ê>¾¥K•)ïã[ªlùJvóªèM̱(è€s@®‰çæ'p@À‹Àº&ðyÀçá)@®‰O¥:žF¹&QoΓÀØÝ×äšxzf? ¼äšÀgà)Ÿø`]¯œD1h <Ö5ˆÂgÜ×äšxz~? ¼äšàY~#OérM¼rÅ Èk"puÿ¹|¼CäšäÏü”\]^² È'ø\ø <å3äšä£Ö@xÈ5çÚ›Ÿõ1vOérMŠÛÌ™OO}` €€ËH³rM𬿑§t¹&ÅÍ4¼@ak"NüÀÁ¹&†ô´»Œ${ÇP„¯zˆ¦ýUa—öÐ÷“”kbÈ0¦ZçR弊²¸¿à Gks àk"@tçYm¡ÐŸŒ´»ä'ÉLO¥¿¢ìk, £³ÛõzܲώqMbòÚªdGmuw‘¼e¨ÌG“¡f¥£NQŠ:4fe¤ÛÍ¥Êyeõ½˜G:€\“¢>ååQ¾ W¾Ü|äûÍG¾7eñaíÆnšzº`, çWß¿?(@[Ô’ŠrMÄ™…ÿ8¸£>éåþþW*c+ ø‡°ä$‡ÎO ±ºð„˜à ¬Ìtê(“çšÈs©r^EY}¯&ÀÄ‘ פ`f­ï%æÈöÎ}…Óâð{–(Ï{G#—É{ÛYâGÏözœÿ¤-eÕH™ '”Bá^9t]ŠCÑsºPºa¬e-ß òäÆÖa8Š4È5§Çge´†9¹&„…Òv+ÒW?„ËÉæ Ûÿöþëa‚¶ÅëRˆçûןünêä°)T`RP†]2fOÛEÁæ)¢EâG_±™T3»õÙe[TQ!.rJ>|tö³«CfóŽf²˜íúÚ€ (ׄDÅs°£ç`ÔC7ôë€YØÀ¸"ðîpq™ÈiMñÿ̚ͳXÊ%g‰jK>º'®õ ÏøÛzerÏzTñø“Q!­.TŒ5*’SâB–¬ŸzÏô}RƒU@ ˜#``<×Ä2—*çU”Õ÷`Lé€ô>Ë0J¹&R[I@ ¬cHbEc(†BîYôJˆGGfí£\Á Sä\‘½§šW•s,Êêû0&J@®I1s›»C‚É’’r6Ä¿.‘óU+n^øÌIB‰ªEN…µ V;P˜AtŒP5¡´Ù¸Õ+¥Wš/¬Û`!Sç¦h%©8â‰z Pd@®‰8ÈîëyMrü%¢\d®tâ–Dgc:~)½»Ñó¶ºt椄È^“°6­i°þƒ–¾²lŒX EßR(ª.˜ÿ ¡­·O‘r\1Ç‘š°)³e²©,Â1™ £F Pøȹ&ð—¨î)ð¨ï³ÀÄ9&†¦m‡Ò5]ºl«]òÛ÷_þU^"$ˆ\·ë©ŽážJF¦É³ Á 7ØõÃOÓ§N+U¦B™ò•ËW¾Ç”•i0P¾‰Í¼ªœcQ€ààHkâæ¤„æ@ŽrMœ?ÃO|ôërMŠÙ¬êþ§ÈÀÏ" &äšÜÏ3`ˆ\“bfšàÓÃ@9¤Y¹&úŸ‰á?VÎußÐ)n¦ ä@ #€o舓ƒç~ààŽ פOr âƒrMœ?ÃO|ôërMŠÏÌI( ×Dœwž•Ñ @®Ižê Åäšè&†ÿX9×Ê5áß{ì|D§øÌ‚¢…€ü2)×DžK•ó*Êê{ 0&Žt^“¢5½A Š)Y™F’<3=þ:"Ä3ð8×äšÓib P´@®‰8ÈîëÞÐ)Z³¤@ ˜"•‘A’;ij2ðèѬkRL§Aˆ €@QD뚈³âþs3øx3†È5)г›S™r]bûâꑽšµ—ö‘›“óºpfÌb¹aòægÛ_œkw.¸Å™ŠÉÓŽÎyëÀ“³6ý¸´g@@Ï/÷½?0 OÍÓþµÕÉ»ÌïOØ ³’û<ºrY’óîqä+È5ðzó³>Æî)@®I¾NVžgîÔG‘²jΚàY›&EXžXz°–íœ Öó/¼ÁõÙžSrЈ‰ÝÞ©u7‡ƒ*#rzf!‘F@\çÈ5?@?4zô¹&ž· còѽñ­[GhõŸ¼å¹ö½#¤}ŽìG‘|ë?•Ï­OaŒjæî`IKžëmùiqrXš?·~‹Åó¡pð†‚’æ¼÷ZDû3vø=¹Çˆ÷Ž*™[~Ú3w*›ý û÷ ^¶•z‘¶”Õ_]x¹¸•ȶkªV–ÓªÈÓiN¥—àf¦µS€!€\¡ðwt¹&%k: ®£9:ç9îM‰Ù·)æ‹ñoYl²B’Âyå¬Ögùm>lò¾‰ÝXàË_lú¢Ÿ¿—œæ3XÌŽ\Kгot ÆZ¼.õH¼vMðО66™F×Zƒµ#Ó)—{’¸{é­g“þ”£¦ãÁáˆW!€\qºÝyVF[`(t¹&Åmòt’’P7¬CðѪ„ 1DkCú)ÊÊzkY]©n.8¨)‰­µ’"#o±¹{7Åì]ør°T«ô_Ù v󪪘cQÐç:à#®ŸŒ´»„”õZ*!†ái(áTÓxšsQãç=#-jÈ_y²2¥oè(æR”Õ÷`LôèrMŠïLX`’§¬~QŽMÜÝzî§¶ï˜ё÷Œ´ ÐôÎ>k"λ;yh šõ)S®‚"=í.•E@ÇCsj èx°% Ð1|éž*:ô†Ý¼ªœcQ÷àéÖ5)I3$Æ€@¡!€uMôðy÷uÀ'SÊ%ÛþŠr¡]Ùè Pl0I¹&ʹeõý˜=:@¹&ôº°A²qxAÚ± €@ž3§AÊ5‘çR弊²ú^L€‰#¹&Å%˜žv§L¹Š¿îûþ/K® åíÙÌ«‚Ṟ(è€sàëšd¦§ ˜J•)Ge˜&žšÎ À4ñ”¨à€€ËÓ¤\Ū~¥Ê Ó¤tÙòvóªrŽEYÜk€pp¤”kÂí²_è¯õZrùEC €€w"`É5É™K•ó*Êê{ 0&Žtëšxç,ŠQ /`]«ûïh€7c裶YòåzS €@‰F 3ÃHãË’þªçU<è€~Àº&%z²Äà€((°®‰@Ú›Ÿõ1vOérM jÞòT?fư P¤®näšè&†ÿX9×äšxÊd €C®‰Pø€ƒ;:€\L¦@ €\çÏÁðý:€\LIE†ÅÑ·;ön.ﯭ¹¨O®‹[žï¨›X›¥²ßÞϯOѦòd-õèžÌµ'Ç^%䚈“èγ2ÚC¡È5)S¢r/¾)zϦµÃÙ’··$ë\ÝžŸïy@]=¤DãÈ&ûÞ318rlóyGu²+4²¼ºÐÄDÇÅäšè&†ÿX9×䚣©Oˆê<ýh8A@¿>Ýâc_tNìÚQ¹ Ût\keè¤ÏÜ¿ûHt¾'ëjŠáڈР¸‰@Î4‚\üÀÁ@®IΜRBKäç˜ðö¼ Í;~M#¼¸õùŽ}šKûÛ?Šs9ú“sT"æÛ¥5/Yé‰rÞ–´äù>Îü"uÃ:< ˜Û3”úúQ–áùõ—äN4ÉÖ(äT“åÔØŒHÈ,u¡nk3jædÔÊ!Ëâ? +È5qþ ?ðѯÈ5ÉuÂ)ZÎîHVApaýÆÁÍëòŸŒ%ÅŒ=¼gtÝŸ_ nê„ÕhEGcÚ.É"×_2³K«_»§ÍB^³gã›ÍÂÞÜ3¡ E4”’XûµVJ5j†\˜%+Ø4IsäBIdÉá’$­ÎFn9,s“…ŸÆbvÈ#ÕÙÖn NGýã–%õ'X†œïÎç'G‹bŽ@®‰ÀÁge´†È5:PÂþ&}ü|Ÿû ˆ xï“òà;DÔáÅ‹—âX«Vͤں=†uJº ÌXåGåæ-¦<—|‰]<º7¾Õ°~RÛ¼mõüEw¶ 9“ÀQ“$Á¬¨ûdÏ„ñÿ›…wcÉ(¥—È‚ ”„çá*þ¿ã.ìÛ:ˆºwÿ†»çÙ8fD_ø œ"€\ýÏÄð+ç:à'®5²SÓK‹>äÒ˜§;§U=œVïíÝÜZ}q«š"÷nÐ £¼ZþŠ-C¦L½t!±‚Ÿ²\;t§­fïìó==’×OhÑ1©ÛLòå*€@”k’m2‰ßÊye`ЯÈ5ñ¦Yµnvð % dùn‹E` ]nÍÿ J)kĦ&w´Ž¾óüš™’}£fÈ›'í‘RL$— wáh“©z"²ø5«%á“)\%Žëmëx 8ô›·fx`¹ŽØÑwä\uA%$*¼äš8†Ÿøè×äšxÕTö&O1áŸÏÇtø\á á0ð£,r,?J;¸Î€O&„XjÞáfAX«NRŒÆþõ`Kà¦ãÆzŸ[= j†Ä!0$y¡$€Å‚ÑèW󤄽9³ÕIøé,Bèèm«ˆµ •?~(  ˜KÁ,MáQYò@®‰8ÇÈîë€á¡öÏŽé©·Ë”¯$ýuïò’?‹È#×ízªc¸g»J5fz–¡äˆm¥Œãxº?ê‹lwBNù(Xר{è—éÓf”.[¡L¹ÊÙÙÙå*U7 ÄJ9¯¢,°ÀA`]׿¢ÔêÇØÁþzW\+AãÆP€@~ €uMªî?7ƒ7cèCö i€ˆ’Šr~\®àYVi15Y~e¦(Š™€@±A@ddeIbõ¼ªœcQ>Ðç:`í2J`D—S©Òe©Œ€Ž§æÂ| è¤y< ã©á‚ðRöær«ú•*Wªlyßҥ˔³›W4bŽE8@œë€ÚvóÒÙÃ@¸€)‹?6¤§Þ¡¿êyÕù3"èt@©È5qc*BS €€-È5xxsžÆî¾ ×3+@À ×ÏýðýxJ°®‰¦$°@`]¡ð÷u¹&˜Q@¹&ðxÊg>È5ñÀ”T,ŠÅ‡X!$ð*”3rMî?7ƒ7cˆ\“‚´+Ð%äšàY~#OérMJìD‰ P ×D íÍÏú»§tÀ'+ÃH{ [þŠrA^Ìè  P ù“rM¤¹ôŽu.UΫ(«ï5À˜8Òäš”€YÑ:„£ïtêÓRÞ'¬½¨oh·뤛X›¥²ß>ÒŠl9}Qu§š•Œýø¡eP}†m¸ä€µ5çÜá8ðÈ5@ÂÜÑ£ô ²Ýè¯({è ›BA pÔò‡vo\=œ}üÎÖd="Ôí±|÷¼þz¿ïçÀz`r¿‡–ˆŸöa´£~óÖ—Ä…ì’iÉbP‡v/ìðÃXÖ‰£îQò‘kb’¾¡£žW•s,ÊÀ:à\k’SU!²èÛ§k|L´Nlj­['˜%'{¬ßKkWì:Ãj9Õéÿæ¹Å¡éãÁ€È#È5€¹ó¬Œ¶ÀPèÏ5!,”öK¯Gq¸ŸãyZv’œ<¤"},‘…#$ç¨Õóqií(+=Q΋bIëÓrÞQíaÿÕ±äƒQúW¬e-§‹¥S wÈÅ£{ã[µj¦èªnX‡`aúhˆ‰ýpl›hµ@ÀEĺ&Fé:êyÕù3"èt@©È5qq*âÍ’7lŒ Žh.‡i’âë=´{ts2†­ žÁ#>RäÅ.'ƒŽÆtâA‡f°ÏyVÙ%c÷¶YÈkvo|³YØ›»'t±› a¶Hö =ÓØ»ö‡œC•#Ò4¥¦ öWÅš’’RƸLÔáVÖ&êžP<€rMˆðwt¹&˜ŒŠ ÙDðîÇ=dÉ;4«Ã‹/Å3‹¢nç;Zïñ?jµ0ž»p‰IN‹çûJmsÙ¬¹&þŸkä·:nL(ùExJMŸ¢Šú :ŸÔLÔÃá,MÔ¡¸‡rMðÜß§t¹&îÍFE®µÅDà>¶VïJ¾çÍùaé‹\l-¤°6áÜT¾òí¥€•#ÅA'nÇ_T5È5˜¸ó¬Œ¶ÀКk’ΘA²õ Y¼¬¾äPS„p¾8 ª&°VúSŽêÁƒ1MòÖÏ÷´jõ¸TÒÑÏ×_ÊáàÏ-›+±]/Ö.’Ét $?‹¹N Ù(äñ ʘX©Mì ÔiüšÕ’HÉë7æÉüëôÔ*Š^ù‘òèÖ³¹+M&êáØ/e½Ð+LfuA C»ñâ'P"À/!ƒ)+KšK)×DžK•ó*Êâþ€ƒ@®‰tcö–-ìÍÈñÓû´ìܧåð˜‘vž~”-ËÒþ>%ºÖé¿dB°¥FJ› kÕ1éãáâ¨5©Rf+^¨‘¬ ÑW4ÓˆÔÈ­ÃÞœ.“Í`dÍFšÎÞ"užÇ¦o\®`Òd¢Ž·œfŒ³@®‰þààŽ5ëS¶|e¢1õ•ÙYˆvIê:rÝ®§:†{vDwR3<˱cïvŽmùÝ+.€<- øbˆÀ÷ѿΘ6“ •ªÖ,U¶¼oéô´Ûvóª–˜cQÐç:€\“b8zVdzÝ7¸ŽÞä Ïv n@ !€\q2ÝyVF[`¨Ì5¡uMn"R ›× pqëðÎ}[MO~é ë»<^3v x)×ĺFŸK•ó*Êâþ€ƒ0<Üa]B~¥ÊdeÊvÉ/{Ðñ̤UL:ž,¸¯E€t¦Ï,U¦qÊV¬f6› þ>r^EY¨pztÀÇxWò—Hv‰({íü‚ \F 3=•Úšs©r^EY}¯&ÀÄ‘ ×Äå‰ 9 ×D`|àà¾ø¨mL6@ WlrMà;QùãÕ÷ø €‰#@®I^çŸ<Ð@®É… ªeÜó Hpzõä7Ûk"@Ô“C`¥KÈf!?¤ÕvSú$]¿dѲ °NŽÕ!ú@@Ê5¡4XÊ5ññ+­žW•s,ÊÀ:à\ü(&$0¢«MYÖ¾øPëfSšù[ÍwÎQÁ%9ʺÙÍpƒo¹ì2éÕÿûý‘xÁlÚô©ns PÂX¶b›¦½¡¶CüÔ¶[ Ǧ0†GvI?C妯ù––Þ- )Ð'žA ;óî?÷±Ö3ö¨ÇW|öŒˆàŠßî‰UÛŽ|'~BxøKòõ$’¿¤rÓq¾¥+Ы…ùÚ˜ Pø”*[©nç;—§iRÝ¡ P’PûHÄè”õ~j›¥$APDÆBq_¿r,›/‰ €€Ý'Ú=´-à`@€ ¸§¡| «ÙËàWI¢¶7ùQkR`*»¤À FG@  @ж GE÷L½´Š¼$„Õã/4È5)¨ÓkF(§  F?@ À@жÀ!G‡EkÜÓ×"if†‘ÜÆÔÛvï«}'È5)¨³k†×¤  F?@ À@жÀ!G‡Å»¸g¶)Ó`ð©P¥†)+SHïÈ‚\“‚:»hšDjØ}fþ¸µÖØ /¿¨ñ‰-ã‚•5+µZ£‡àñÃ!48àݘÅðïÜø«\Ūfs¶¯_zê'¾‘k’!šIö‹\önóaôfšÄ9íD¯alÑ‚¸æ¶ö‡”W"adUqR™ €%(&L˜4oÞÛò&,‚¶yà Ô^‡€¯¯¯ôLú2·oÅ*÷dÙøNlìÊ5á¿wo–­PvI~jJåšÄEí`}Þ{½> *aÜ«õT#Ê&ÃDõ³f¥ª)*€€× ðþ¢/’’/­Œ|»lß$€Â IDATÙ2z]`z(Z¥QªLy²4*V½/33ƒ,¥í¡,+sMà/ÉϳX@o'oÛhîÿyÖ™=ÿ}Ü+ƒCĘί }hÁOŒ=öö¸¦dšÐJÖˆfe~bÞ@ !°iën3¿þÏ=úp#]b„iB±×–?« ׺•ÊÃk2ß>Ôë`Üñ_„þg[Äx Ú{°úè)”c6›+TªÆÌr2V£,S®IŽ¿D”½¯iúŸÑ]¶µÙkü©¯Fý³çn;Ý~\}êöØð‡4]·ãX÷ñ؆ŒÍÏø“¥kV„Œè6nÝó÷_Wöó®. Â4!çk“ÇN¼0|שÈÎB(Í­.y%"Îpþñ ü[ܷ᳑Ý=+?Ï8áÑ`𱻃³‹ ;jppx…K]`órè Re*P¬o©t²=*VUÇm„âCvŠ,eÙË,¦ÃÛu€õ —f–ÚÝ{²ñ‹ñbBÊñ‡†¿ÞCF &ƦYYL‡ ±@þ Ðç¿-ÞŸ9\7oºÍç÷Îc¯ý§L8>û‹8¹/k4Öµ®sš‡¼:jØ/;¶Å»ÆÇI+7%t‡ŠRä%)S®¢õjªàÀövˆÕf¡È5Ñ=MÂcïMûiê †{ºÑÞpj[U4%…T@ È#Ðâñ>žûò£Mu?ìSÐ6ßwº™Yý3šÌ°(AêNªá!Ú,÷Eh… |+*;+ꥇï"ý0¼B¿qš—~PÈ©hžÃŠÓ©Ÿà£`뀡¢S‰s‚–B ¢'V£–³?Æ7}Ð`Óo`….ŠŠ+=ÛÄßbKO»MÕ¶ùK¬õÈ5)ò¤~÷Æ,hø¹½=,þØ?txaËÞ1];ø7ýmú{{{Dò€ÎêåÐ!žõµ*õ÷J P¢èýT‹•ŸŒ/[¦tFYAÛ«Œe²Œ?».˜¾åž×tX8®¾\#…h·õ?ºãÅp÷. ýà§c];uûú›È6¡lï¶ãeÿö§q£jÇ}»Od9¢Z›Óä°xùC­ÏQ88*OþÌüOm–þ5̶††õ]pÔY§]G1švÖöü̼»¶ Ý?ÓÙ=«óVtS*¸vÎH ò•ª[{u”k⣴SD¹$E—ž@ jûîÇähŽ`G1åÛ)¦¹®Óòg¸+ek-t´+=!xâÀÆÏßÌ›]RÐC¦‹:HŽØŠ®)DËâÆ‡ñËÜðÌîŸÎ]bõ;™ÇXÔöÄþo´f[bãØŸÛ¶°þOXŒYf¹UéA;rlBd2ζSO)Ìê÷˜1(îT‚b¨êNb×þÖiÆ(». ôW4 \L¬·F¹&Tvä;á뚘,k™(ËEs`Ê ]îèj{8dÔB9 ºÃó?c䃣zÈÍJ'àE}æ¿ûÂð½ÓuÚñÏÅ$P§?›»-ÁÿÔÉÖ¯/ gïnŒK`kYë5<5^¹…Ì. ‡fÛiBŠ‹lЬä"`}C‡rMÄú°ô—rM²ëšØÙ!>âwšd¿X•\ˆ02 €@É@ ö¸eÃ?3B´|£-Û=íceĄ篱ú8w¦R9qËâdKš¼n$¶[öJô [§­²xPuZ?¼ÿCvb(û:6üž± ¸ßE]Ð-‹-fE®‰ÚöPÚ!>bŒx7§Øžk€€·"P¿Çš™ÖW}C#g–,xÃXþv^È­Ùor‡ÊÇW%ª¢9¹BÇÙ—ÂÁ†°ý*½2ÔVÝiíq{§7µˆ1œÛ4¡=I1#I$l@À.×Ä ˆÒ14jÖ§\…*âÙ,TþyÏgÀÎ#D®ÛõTÇpb•uvJÍàNô&·GØ‚ …€Ùüç™o¢RzÊ×øé×k7zºð¥* ÈçÓÓ&xT@£›b‡ÀŸ§¿64ä+íøþè”I“*TªQ¦|•ÒeÊg¤§Ñ÷tÄp„í¡,KëšPØGÚår±z‘Ø·|½;WÏ™ñ‰"¦ Ð…€Ù|ûj+•³(”®V%†ˆ¿ ûÊl%f¼ˆ‡àëšXì ¾®‰í¡°CüLY|}ú´;7ËU¬"Ê’lÔì›ziÅ3Û %R÷kôg‰^–õÉߎü‰Qæì˜&%D“ br"¬™°¥Lzêmòš½AßÐQÚÊrκ&°KòïJU1Ž–ózÜëæÖt÷ 5DÀbšø”Ê6ñå·=Ⱥ(²ªßãØ?–WüŠ¢|©ˆ!`ùVŽR,»\«íÁß–|%´ù©m–"62ˆã ‹½ì¡Í8 ºuý­ý‰ m¥{ÿM_{/P!Ð(²PÜóZ¢Oéѧ Ä–‘.}CÇ”éëWÊH±šJUÕqa“HëšXìe¹È‚)PNŽ@BCAÛBƒ] ¥ÿe®5È*ŸÝ7tÈÑ(©íäšÝ“ É€(.x0h›e²>d—ÑCN  €u±5qX® Ö5ѵ@ €€Çг® rM<; Ü@ÀîIÓ Nh ŠúsM¤uM,/[ÊEj, €(öH¹&òb&|]{Ûƒvåšð<”´;7h]6Q.ö£Ç€Å8MŠí©ƒà¹ `Î6Ezê-i]“Li]“ÛCYF®I.Pâ0@ à)tæšØÛ,žê|òV›…ˆkRìδÀt·žÁæì\¿Ÿöeu’hŽFË\Ðh¨E¦Éé§Ôn/ÕŽ\ÆÅ^ñ<[úÞ×9¶“uŸ^¶ó½gê:¡Pòˆ:ûÈW‚Fµ%v?ßߊPuÐkÅþùƒTõŒL ‹%áFÝJ³F`ÃHöáìÍ4Iì*óÖ£BT=ÌAS|°æšÈjÛƒü%Öz䚟³š«¤—.Å5¨#߬ë>ýÌã¹6°¸ÜPw: ëöéÝåüѺl,Aжu´‹±8:ê¤Þå†vÄê–!RÃ!k·X¸):U —9ŸYï¾Þvñ!Es©kÑÐ*Us™˜Å‰¨Ž4ç(áhD€1Ê5!•¡\úK¹&¼lyGØ®,¾¡£\Ç^.敉¾]D tâÎë^×ösÖeÚú‰ÜkrlîˆÛ-[¿Œ|)G–ŒØX{ÙÎ×X—MËìB!v é§ YÄøõûÇÿ{ßU•ýS(ŠkÉÌ$w]]wB*I€PE „²‚HQA–Þdý±ˆ¨¡)M)ÒHBÈ*R¤’Iìþm?]HÈ´¬¤gÊÿÜwg^ÞÌ{3™IIÎý áÎ-çžó½oÞ;ïœsïå¨=›–<.”s£Ü Øpþ +´¨;¶"lÿ$rÿ) P#flJŽöÅh§}¹ßlù 1ãPÈÿ¦ì‰h÷%ÉVüÛȨ‹K„s}6œßìqI(Žrëöî Ïo µe¿#î•2Ó7-Qn3“:·„Ä¥vÛ»|=&¾ ­»µY5NynÉܱè̉&9«§è±úȾ(¢J^˜@ÈlŽ 0±§ž*9õ³Q)” ¥s#ð}å98ï0çMKw¢NŸ´ÈRCÇdì['¸fÜXæ!4 Eì”pîÞfÓJÔ"Õºsy±S6 Øcô'þ²_®›°aÇ‹âÂjñ/"àtŸmyØsü†­X­Œˆ{wØê#ÑBþåòߟzwràûû­~i"»ÏÏ©/QÃHjšDíWqQ,Ôe³#UÔåÖ–)£·ÐRÐFš«»ŒâRko>ÓYLÀ¨éƒ\€;ûBko}fîNÈàhæFŸé¼^" šÎïkâËÄê,Í ˆ*‹bÄß§f½™»x,ûY‚h9† BøŽÂ8PtV‘·N¤D]òk›Bê,¨§*E@´m¤ªN} îƒ6dºÍÜ.mGq8_i-£ÆÚ¥eCâgOŒÐ¤-é7´àYÐÞœÈqŽl…¸£öfˆ¸[ µ¬°ýÅÕ…GÝÈURÔØS­E©AsÁÔ²°‰5±±—0,0Ö¤]Êc–…»º+ zø…,„\Ú›æðQ ˆ; Qáƒd5¹çòÃ% è^°=ɼÄ&óð¡Â,·Ä‚sÙ”Hl´K 'Åeb¢9¶÷Këîb¡qÁ5H­óîþ©Ýnj¥Ü¤¡lŲ8ãXX¬EÜœÕÔ•³„¬ØtYÄN`⺔Ýo¸ôø÷¸qàcnY2uÙˆhÖPÝÉÅ lU³:}ç©>}…ZW»3Y Ž„ ìa]b5@Î긅ÜZhq¦F°Ú ÀX7œ”†g)B¦šÐ3`áyê°-Þ>~ÆL}Bΰîõ™ Û¹¼™'©Ž‚f#f˜ÿÂÐC$8öY¡QÄÜÙŠ`Ôü 3_ãC ¿3ÒÑ-D½ P ¶ _áB9)˜hÔ¾bÝÕZɘ¸y¡z¨¹„3˜ŒÊ±8§ÀÖšåÀÿÏ@€÷§ßÏX>ðü»7f¼¿‚È3Rf¦§ðž;r‘¬àj‘÷üîBð¤ ^¢\âXNðõ‰X1”’ßϘ8Œˆ÷N©©ûÞ‰“§ŒæÞ>¨}ÅÊÍî'Zû·ˆÊLؤíK âÌ%œ'ÌiVs‚µn‡€ó±&^Ï œì³ýט×N³«Æí¤ò8†v%ŸŒ!õ™ŠîWÔ'¹F¢‰´€:¹lČ͜h+_•¸ –  ‹ÀEå¿ëý7^YEÏq‹DãXµÓ…þ—Z²6eßz SËá±›; pòÂÕUÿxvƒ…3üìü¨·okþ ÆžPÁXw˜2äÁu”9_ËÆ»Þ{ nŽ€9 Ü ¸¼|èÀ=&B´X]YÊT~ÖCþ׺ÓqL…º#àL¬‰¯øÜ¿ºŒD€®?:tÖ mŸebÛ€£"iD ±¨«"PG>µfþmËMF¤ÏÚ³£êÂ:}Ê‹~ÏΞ9u¢SG™°»{ àü:¸¯‰{ÌX3ç"tñ‰úÛG„[bÓÌCñ&C@>qû‘‰õ5zÀ¨½gGÕ1¤ãé8kâk0T/RvÎìÄòž.|óæ¿./0Í”@DÀ ûšx‘ŠÒ{­Û¶}ƒÆštaÏÐqçyDÞD@f…€3gèørzJgnO{Ð_î@¾YaÐ …A»I3œT  €¿q¼š'4Ö¤mƒQïCÚ”ƒîѱ‹P÷æ¹Xî¬HÂ|ó¦ÙI¥£›†aB&@@&dzšvÒs°5ÿ—ÄzÄšP½„ÙKxÅs%oiœãͱ¥Í8ÊÛì@›I³Ÿâ+ ù ’{­Û´}ƒ‹5¡¾±âíŽNgaø‹ @D@zGt ˆ5áõ ¡î!Ìû–Þ¿ÓîÁÎFÎvÂòõÎ DDp4›8‹¶ó0 Ö¤uÛF#èmÀ^Ò®c¡î!ÌÓXöDæ=Lâ–Ã.Þ¶ZÎ\£¤ˆ"€4#lbM˜äë!¾b¥áà©¢lßð<°~¿òÿ.5oÊè©’ ߈"€ ˆ‡ÓEʹXÐ= ÖDì·a: îk⦗Ìßß|æ‡n»)sÈ"€4 9o •”#JÐÔ’›ËIcÞª>ZØšTæfëø!j:“ô³ù2tÒ¤¿Xk)vscœÙ×Ät·¸±8-‚5°—0“ “vú‹]àÓ"$G!D€C|¶>„tû}~è|›ƒ.ªzG÷ùür޹F{“|™©e_UÕïý%û:‘7HÒ—iWà³G¦>£v¹n‚6ë4’4±°Ù#— ÄšÀ_.Ö„® ¦yKœ«McMد¬Qÿê+~É:B8dTÿ>­üX ØKXæÓc¯AføˆÍʆ îÀ€&|¹?]5* î|*d¿ÏתIRgf†LŸpSUHˆœíåódÀëq1it?„ÈÌçn*FF‚ àp>ÖÄ[¬³ Ž è%O?Ýù¹arøn¨*bã¾ù÷ëð<(%µÓK²6$Æmȵ#EnÒsKS´6•R…Ù[ãžKä>[³ìÐ"Dª£dcí±™ãJ6­[¡Sl×méÞº”9 ®Ä¸9Çjk_—&m]ê4æÎÃ6žˆ€bÔKAWŠ~Æà:™:`LoúÙ|…+IcÖ˜59k,<È.Jh#ô)ÂÌË´Šê"Ý¢ä!§³¡/!…7™baMÖ ˜¥pª QáÏÝ´á“>'[_Ó›1 IÖ§yv>Özˆu¡cMœµþšŒ&¹¼ Ðó6Vy*à3²§öâ©§|¨ðüèÃýù¡vî¹ áÈ5ý´ÇöÄ )8’¬•6 51ÛBÐ$V‘ÕŸ'Ÿ…Ïv™*[¢ #bÛÑŠ8}ˆšÙøðówÆÉíÒ³$(Бb¾º¥Ól;Îu&©âµ@5‘ƒ >‹ÉûˆI í´€œø1wyÇb­C„¿ÍzËK]"ÕóÊMïE‹Cv¾wP-¼ rÖ¼˜9`wÚ•3iWV‘’µÌYC;ffß !_^¡wõ•Là/¸JäA š˜ HT´<¬Ï • Èff>(¼7åÄ–,w lÝOVÂ@»'ž 3ÛaËϼ7àü\ШbÄ )ÏP¾ø9Òmp¸(Lš¬cÁ±ÖÓ°üB0Ö¤ÞîõKÈ»óê+˜^âªÉ=µ/)M ËŸÔ[5¥¯nú€Ÿ`mNíì%À§F©$±#cÉyeö°×énËÌÆ\ùˆ„ðú Á¨5 Ûº”¤äà7’ñ(yb 6H¸[¾*pk² –‹Ù:uLïcz¿qñu!‘3g ¹rY5à…(r!G ¦‘ d@”•›Æ¬Áde$·Ž"€@¸‰Z­ú=h0ô†""KK»ÍZι“À~3¨ ÀÖ +ŸðÕZn¾1f=‹«4ÙÆ É75kÒÔ3àp|ƒ¶å­låe½äÌåû„t6;éõF½ÁX¥7諌Ouí heLÛ³Öh0Ž›¶Ä!=a¥.óé·|½$)W3ÆâôÕ{yfò Bz¼˜Ì7—,dµáaCV­+-ôÃ1‚SB,í¡ÉᓘvÉ]ûÜ‘€íï$ЛËVÏ\¾ÍLÜÑÁÙù¤º®Ë‹Š{2 G× Æ…*!P"ÑÝ"’³l‹¹Îi!éONžU¬þ|V$Í‚y”²YØêqc¸–¤Í=Ÿ3YR{“`U,i¡µ€¨j6$(ðc¦e#9rÖþ¹k² Pè“tæµÞÕßý÷.käùQ“ÀP±ÿ¨F“ó%‰ZiÿÁi0WTÏEÓà¶€¨(’œs9Ÿ XÎk06d…냴ª|B¢¥&B1jå´Ìñ—s–WÿTlšÙ•"‚eÍ Œ5qëù4¦ªrðãÜü±¬ÊgÀ3¥CÂ*‡EéGÄÇöó?¼0D?upùŒ!EÑy»>ê‚0ð˜$ô¥HÚ(3Ío3¹kgÒ×zð5¼N”T] I²*tÑçëû]ZÐÿ¹ÄµÙ¶íÏnOÌ[%X±a(,BºÍØž|v~¨ ®z\k:;ÔaÔòFÌ=ÇïZ6tìug#ԑ킼€×ÎZô’ó±ë™ƒ†3‡À¸Ê~ åìK³¶Hñ&+ ì±j#©(ž {l Æ¯Í dž{–5MX– ààJ²rñ#ùÁw—E÷%_®I½Ù¢\!¯ºîUš·¦OÃM.ÞEºÉ¹r súàÖ› ËW[²PNòÐÆ ëÜŒí) ˜•~Pþ‚…¦€3½ÀWžgKF‚Ûì5! ‹3Ö Ûð_=ê}Mà:ÀXîwáNI_e0U•yW­}ð‘®FïÊû¤XcþܽAnmøñßåšk7¯f||®ªïÎóÎysB¹—"YT,Ù‘ÊÃjuyÁ‰‰Ük½bÌè!Œœd¡ÕH²„MhZ§@{Ílò“û¨kç/²K§ÛŒqœ–¢QÛšˆ-œÙíγ^¶»õ‹à¬DÌbe1ñ vÌL]­ÿªŒ`-¦<¿vY­QRžzÂÜŠWüâî8~÷Õ #ÿwZ7KIزÝL»æö8–~ÖÒ%ÁЍ(ÓMÒ?JÆò7N«YÞzYï¾ÝHHToº¾>a±ƒeH‚,8tBÔïÑQ¦ Yõš¥%×=RV0•c`àÜ­A‹>J CóÆ—ãM’¬Y4^F+a…‚cÞà.šœ‰5Á3tx¸/C]5U媟ô&£_xp1)-¦G,ªˆ¾ÔPYZUV^U^RYZz0«ìOO?Ñêç^ÏMÞSpƒ,过—%'k~¨]{ª3ËG¼þ¢rÊ•ÜEãœií6m„mk?/+¨‚“/gÏŠ”ôé¸ $ÈH³@ lÙ™0¡  k/'X #wŸi%¦°D\kijE„@ŒíáËB*¢ŽŒ‡e‹$/³ª©æ™Ræ{Ù!KßÞVXÉñ°Ðƒpþ oØ»žL˜÷ i=ŽU51T•_»Õ1@nð¢k† ¤²ÄT~§ª¸¨â^QÙ½ÛðQýpë?jCÿøñ.H—s28q/[$Bÿ®Ÿœq rYp^r2ç—Ѥ1;t$ ùÁ²Y–BðJA°ÊB{ÂQƒ¤=¶ï¬Å‚bîâl±£˜®Žƒž\•ãîβ]·TÛȰòÚpãÚúqÌÌÊ&Æœd¶%V¢=–Â`w„XM’Ö(,éan5qÆ âØ@ÆEÀ&Ö„\¬‡à:;3Üh`5ùﯭ¼ˆéüKÈýÛ`,©ª(KIU˜LÊÀ^rç×;ÿTwíÐÛ“ ɺ’Ñ#v½ Ä |:Ýv€Á#žÙ¤ŒÙgDB£û¯_a ƒµuHÇÒÊê!‡Ýe[’[áàZ ~ÎlâÂ`Ù¸‹ ìЄς%ÖpqPsȪ]…ÎSÄ Dp#œ?CÇ«ç À¸·YGüÕSÛÝHOfeWòÉøVþ”ï>æßå‰ÎªŠ¼mL¾Jƒo™Þ·´²MIeëÒªÖeU¾™?ø¼ºtkð¶ÝïÜ+÷dHwD Y!‘ýÿ$ãu²´¬ª.ݱ/"àž|yùúª¼Ùºm‡:tñmÕÆÛ·5ï'Ô=„ykÒÅh0gÞƧ¸§xÍ€+ƒÁ¨½•wóûÊâ’„ââ²{Å¥E÷Jàs¯¸¬¸¸´¤¬¢¼âþ cû‹õ’f ;Š€ ˆ"Ð2°ÄšP}ÎÐi×±«P÷æÙ:ÐŽ&ð÷pu˜ /[G‰¹4‹ww© 6FD@šѾ&FÆ‘P÷`yðãP]„ÙKP/iê‰ÃñD ¥#€o-ý h¾ò›ŒT)/)jݦ=èàÐêÂ<ž¡Ó|¯” @Dp3œÜ×äv»Ž]Œpª‹)½Gón&²c…¾Qá ˆ"à‰TV”¶nÛÞh¢úFĶúuêÂ<îkâ‰ó‹<#ˆ"€ †€+ûš€½bM8{ ÕY0yÿ-¬Ývñ%$2‹¸%ù;¿S³[ €L!‹€ÉÄÅšs±&F.ÖD {ó¾Œ1‹zIãNRmG³ré<æÏ\Ž @š†ñ¯š†làƒC"ØÄšðº‡Pñë,”°@T91ü IDATD Q@ŤQ`ÆAšÊòRj/XBà<s¬‰µß†é$kÒÓƒC"ˆ"P+rß<.Öòy'KDCstÚàŇ4¢ra3m츲nœ`P`F0VÖ–ØuÜQç¶Éº™m-!ÐÑ,Ñ–+P[öÄ´±Ä­p>ÖÄ›ÙR@OЧãV³ˆÌ ˆ" B Û+»R/¢Ÿ¥âSÅ#wJ¯u"ýÀnq/Û’Þ½cO\±èíMRp6Ëî¦Ö¨‡s@]M ˆ¬$osâ\Ú%Sƒ²UÍ^M:«caû¦F€5Fĺ‡PÁ}Mšz®p|D@<¹ìñ[Z5Ç­:++ä¥ñD]È}Ó]¹HúGº¬Õý'DfV¥#Ç‹•-OAùtgö5ñê),ï4}lX?è4juÁ­?|ÿþýú¡ˆTD E  ;4kÜ´TÎnn‘YGÕÕÖZÅ%ïdùaí RðÁ´qœÏ…·Fp™T³?ÅLHQ— í;-õ¨•˪aýáŒsê0¢ºH`¤<äL6õÂBÕÍ€¦bXºÇæ4,iyšÖ‹ #ÇÞ<´Š‰`nÊØ³á¹š++²<}Ìxklò±&4oY#l“çÎб¬ÍÁu:3¹wïÜùí×_ØX%%%üãa UYYYnN¶ŸŸŸÑh yüñìØ8üà(ˆ"à9P ãÊnìÛ§fߺH5øè•qáÔ-22€X¼-YG?è¾èÒÖP³\§‘Á‡w1_0"¤àõØK§fSÍf%ЙÝ—i‡BV¦îŠ$êÔÅ“yÅ Y@÷‚ -è(…*9A0ð°ZCzk³O _J[B÷¬þ»Rwš’µÔÞã °àƒO"?9•ZË´÷E ]N¡KOm<4k^ìGdèJ¡‹ Ê­x‘uÝBã9sÜ\9µ=C‡[K I¬‡`¬I\ —‡„„À____ooïkׯ———ƒRrçι\þÈ#dg‰#Üš€U@X;ìèCº½¼3õâIøÌŽ¢-C—¬$˯5­d_ ,ð¡Ýe²ÇϬÍ š+gÄù+ìÅõâÂMLYÙ'ºË&" n¢âM(èÎÌ3`wYyé?êBZ£, Mò‘/,(ÐÚ(KÜ’zqçø›+ǽÅUU³gi)I–É‚=ø9k‚ûš4òmÇ<˜I wýúõ€€½^ÿÄþPQQñðëTª¼¼¼víÚjst~æÇg-±ùŸ|~ÌSšF:µe#pû›ùö.‡A§g†<ßÓÏ.pÅ^ïhÿBU_Úùßè!¶œžQp6EÝ=!6È.=¬àPŒÜyr¤úðâ>C žkDDýAJO¾63@ýlïÙ@4 "’¤æ\É'qKy3FìÛ 6U(4ÒèTù„ô–bF1òï/eýõJ®}VmÈJÁ2O@À™}M0Ö¤ fÒïT4RòÃ?(•JÐQ¾þúkŽza+++á/h*µâ 4’é >äiòmƵ"§HÀã!íö qª=6Bì#p÷ÚÉÜû½é'†h  q-¯±€€ ¢¢êKS­ÎW ^b~î;àÊ9¹ˆ¬Ü’)š–€±I¿Ô-OãÊžÑ ypÞ¡ƒJJK}øð"šnG-ûˆ2UÚŸ9ôa^@ 4¯äÒžÃ6#œSr%šœsy±±B=IyÔ²ÔYwåBÝ5>dsß–.‹3b¦±Ä-p-ÖÄ$ˆ5áón!G3eBI@/¿ùË_ÀóóÏ?ƒ P–HLqÐiék܉C‰ßÓÏ(¾º®¹ÓÓÏIÃ × "P7n“q½cÌô¨@Ëåä×ó)°™°KËÞ5f¯Xñë䧺¥6P¶òµª y ^¨N÷!7O¿´(îÂÚ¼—6.%2ùK‡ÿ:ëèÇ[åæTné³ò—c(²Øk—AÇ‹..07±ó_èÒ•±}VŽ¥äñ—Æ?KÄžeYï¾Ý>$‘½ÍëjBc’/H¸ÅLºtçøéÓçõùˆ#o®[°ú}°ß@˜pB"äª!ãú0V ñX`•-ù" Ìó,IÖŽXì®°XpÀ§}§ßA¬‰âÕkðL¢äÞíö–3‡sO²ËÞ]…ó¾v%ŸŒ.æ÷ûï¾}üñÇÁdRUU‹‹‹!2 —À_¾<¶o?qßßîÚQYhÓü¬O®w6æIªŽTç5;³T¥Àþãbà¥óö·Ÿ™í튘þ$Ãâbµw¯úì:gn ŠœÔ_bŽ&D@zñÜý£íe—¢ð#p•’@¢QuŽœÔ][}Å=¸2ÿÕq˜ðª£×*Ø`"A×QMUwç.`7JWr¿’ü×…Åû%ÔnêIstútÝ‹VÞ·à ™ðDÎgþëÍU«[µin¿®þÞ¾­!°A¨{ókBƒ >Þâ=QZOäì% €ã†i!ìkh(¥gÚ T]¸páôÉ/ (´Ú¤"0™tê>˜3™(b¦+à]“SV¾ýSГEÿúÖ¯ÿ¸a–[<Üô… Íg·äæӎª³§¾º­xÚâæ¯ اå!Щ“h]è¸V×!wîù7 .­|Xêá0u‘tVÁ†]4Ô›Óßac¬¬g2Sý'x¼ÅSÏÄ‘\‹D€ZLÚ=Ø™S<èG¨{ó¾%÷~kß±+ÓKX¾EâÕ¨B3ýL&Ìja%,èõ»ï¾> ïïïZKÏž=?;þé°øá®0wçÛÏv~K;ÀóÀ~¯›{©ó“ð‡ÉÏžòë4X¬vܽsÜј)€•¥;<\Û¶xîÞ½—X 0t–X_WÕ¶:Pbò鎠1œ¥Ht'—o=MîuîX݆Åj§€ Qæ}˜Çš‚3$cBêŠòÎjBí ¥ {ø=$Ô=„yº¯ o/AÛIýÀ_Þ4ÂÜ7, a-1ØKX‚¯™™™Ð 5ùиÄñ5‘äë;?ivèXJটA"'MWPkù9ZÚ©çàI=‹¾JKýäÿÐG?ŽÓ`cC:u—w:¢UõWpZ… ‰»&¥:p¹v—“sZÑ’îNN¹0°;6e‘9MÇ™,qkj¢`ø¦æ§éÀ‘ëÛ3t¸!Äzˆ7¯§@5útê{"¤é‡i'ð—e˜Žˆ5MaaáO?ý&“?üáO=õ[°#MșҢ»EÌÆ~÷–V° Çïé1ƒŸî|šÊ©SçŽ$ÿ»¯¬ Û .Oþ)¨:¶ î^û–Å9ÕðéÀr³ë$ {K1šÐ=ðƒ4;à&Àé"eÅôQ$Ö=Ào×Wïk‚zIíož.öÕàÀîj|?ðì€ ;­±ÐT@eÝMJKé¶¾uJÿóä×GNAàa§ {é¬öï€ìê]äg³À‰Ã…ÁF»sê³#©_qcšÃfë4>vnYÀ5ã×éÔg;S38¹;=3xü$¸ÆàÑåÉaÑ$àÓñû ¶öBߢè° ðlö5‘ôÛx=9bM˜L,Ö$÷$· 2¦:#`o…ν{E?üßÿ": $Øx-,, L&â1³³³'½0™/w¸BGÜKD hˆ:÷Šk·§QЉ¤º#p!ëß+–/ïà÷pÛö~­Û´//½±&Œ¬0Εå1֤L¡cG¿Ðp«ÝÏ}y&--ÍeBØ@š;MM˘š;(ŸG# PT¯ñr>ÖÄWëÑ(x(óqz(çÈ6"€4(Â;{ƒ„ÄGÀkVÐ=¸}Ml×3cM|.pD@œGWÄ8¶ôDœ‰5ñÆÄ²¼'ŠŠ<#ˆ"€ ˆ€;#ûš{ü¾&4Ïíõ*ÖC¼a=±e[6º¶˜Û"€ ˆ"€ õ‰51oË¡cÉ‹õ_¦¿”Á¾l]Y¾>AZˆ"€ .!€—àÂÆ„‹5¹—Æš˜¸Xî!Ì bM,gz˜-U¼kµÀIG‘=ÒïWvü¼C—NšËëQ³JËÚÞÿí~›À©'2ŒÔ;¶±&Âó‡-y_±ÎRï| AD@Z]{Ýþö½.NhÓõ™ÖmM…×¶Ý~pÜ7—¿‡ aÇEa‚s* *qDy‹B …m Ð3tÚ¶7î °—tzHì·a: ·¯‰”ÎÒ`òHÑlâ‘Ó†L·,Ú´-ì=´ýŸNÁÝI»‡»Å´îfxà¿HI†NCÕD,lfØîkBgèXë!Þ¼Î`¬I3»PDhTÞU_=[òÛíüû—Ý-‚¼.÷ƒ*ƒ©¢ÊXRn(*1ܾ§ÿéNUᯕ74ÕV0Vánmÿ“ûîЄ~r  dI²ÆAUºä×úÁ׎© ê€V9€íšwbN•[éÄÑÏÖL:wR]4Çfð×kïâDgn°¹ØœV¢%½¼-±&\–[›SÄ›#Êc¬I“ܸê2(šMê‚öEÀ¾KZ·® m:•üt¾}×Gžék2vØõ‘×µk×ßÝøƒÁÔåF+r­—zøe)nüÆ¡ª[[뒔ɋÍJ³ÆºH`.óOؼ@5ôHàâá ’“™íï$(´ÇªÚ" 96sfrðÉçØ¬iŽ¥(M ¹v0¯iNÚ*Ó['’©Ž#!ÕE1|û‰áœÎ™›´êÒ7Ø5ãôDkŽí½3„¤¥hzÕïUáL¬‰·Xg©-öØ@D€"P^Ñ® s·±èܽütRrµàÊ®òRÐK®Aè%x]¼Ö òzƒ©¬Bï*dqó“8pËUBؾ‘Ð¥$Q½Ä¢M¢‘`uT‰‹|èt7‚eæíß%Õ-PæÚ(šl%é3b|r.[çZOû­ÍûšXbM ¡Ø^Âtn_KæíÇ·Eàêúø ƒ,Ÿõ9nË'2Ö\°º_M‡;šîð\ó5Ù¢.È;Úïn·äíÓÕ»2¿àÇÖ=1õÎk7þåu6ˆÞhÔŒ¸œÿ|†ÞHJJ]VMˆlÄ”îÉ«ÓD x™šG?[³ÉÚ˜¤dW¼/Maº ´Ù+ºþ Áú“¤`ûÌÄ8VkMоv¥™>Õ¤-åJœ)fCD½¥hrÏåÅÄØê"6˜S„“6ªt.å5눰!yR€ÎO>÷Ù{XsòJ.m ÌÉ &ç”:Èk”J¢ð·¢Oé….þ|ÁÒm&tŸJD¤¸Q ¶ +(ñ˜“«W›^ãй±ûX–n±ŠM9l¡°Áœ"œ§TgEVÏ©åJ€J«îÐw}ÜÅ Rí“U &¨zR¬'wûèÖm>ø‰rÏ‘ˆ(°ÌÈCãˆ2“]i¶"8¼PÅ©T¶²ûw¹¬£XoÂíÇÆé,–Ù¨0˜<°ÐÁDG–zø,z>ûaÃÇ2»sË» jùèß^möx‘NŸox¨kƒÁÉ»ºèÇO´×ëÉýÒªZMsèâ7ÛSö­.™=žKŒ[•qC]Hd²:x¦d]ÑÄMŒ —àÝW—y‰ÄEÔdÙ“¢,v›¹x D %ÆL„æ5j<¹Æ)ÌÓ9’UžšöØL˜ÍçlÏËxf“²ù:Y¦äsÛóVñ… rnRìÓ§*ll(w$‹Š%VWZÂÖÐÀ‹‹51ëBÝC˜‡}M~mïk‹©.Ãò5Åj@ '÷TPÄnöTÐ~úê«)7)Û1«Ž¿AÀê~$`JÀνP2e-}»…7«÷&¼qŽ“-nþé¹àçš­ˆ8¿šö¼â`‚vÙÔ½*abK™ëŽ #O» ˆ³{\\Ý K`ójæU*lf¾²v ä«Àvb Û¯_çÊMŵTM@E1óÀ‚¤ììbÞ‚wîêïþqds¦V¦*ˆ??”8¦Õx^áÔ,Øû€šá”5”H`xNÎÈžéêæ5òÛ?A.sŽlά…Sùˆ/*'_É]ì*eFÀ.ýÜC{ nq{xHr²æ‡J¯}w5n_“&Î W ºÝ»¤Z÷æ1ÖÄ\= ­j竜k?3ôô{ù[ÐÕõ¯*û™½ð¹#‡Í¾jçA²Üìš°†Ì¶î"IÙ0BË?A\¢;¼.%x» rp÷£]ü‚áîD0”P«IáÉ ÕgåàÍü׋¯ÇÝ·N±(ÖDl–€ˆ–¯²q‹á¥bD¸¹,˜dìMÓ Ë"cɹ¤#y±¡ryMFª^…á¶ I°š²)Š,ßK*Ÿ›ôÜÒd-´g¬}.:£á!µ²q© lf†µÇ’¹¼’¶å2fã †îÊ¥‚þöHñôí $AÈfçœ NÜûyòYógýŒàŒ žùÚÎ ðà|¬ œ¡C…ÚN8¸0y(àé{,3I®rn/wEm³ªS¯NØÉŠ åþœ>†. ÔÌ~ü>p»Êù`ÐjjG¡µÜ4³{œpÖø€0ÎÌw!bÊ5ŠÍdñ¿fŒwZ¿—+ß[´³ÛüÓaÍXjiÑXX 1°.Є~hˆ 5Ñëé×ÒòÚ9t¸å#^Q9e=tÑöÄ—g.èϾö_pv~¨""‚ìQö[L˜Ïƒüvá^Ç©fC’ŽEmÝýŠ™‰;¸Ž"RÒb©³„Ï:»]öòÌÄþ¬<ø7A.T€¹Jà»™eU.S?g!ó5æ´ÐAë*á ìq`K?ëJFØõ‚UäàÓé¶ãJî¢pÖÞé¡Ä ͱ&w¸3tLÜ:¶~¦“xõò t‡ì;äs¿Ø&&ˆ%µ@`WòÉøµ3´Ùí×;¥vë˜ †{0hÓ—‘ƒzj¨Ï¥ðêÇáç©1??,yªÍ°f°¤b YD¤šÑGޏ‹}ް¦e! ¼fÌ’Ã¥8U=šs6Ôyõk{¿ñÔÙ“G÷ÏÓÞ©¬‚Öô••†ŠJcy¥þVp+« %åz½ÞxüèöÏ>^Ë£sç^y3D Ejñddÿ¿7W½ÚwjÕ¦·okP<„º‡0±&Íóz‘¿åph`æMÙŸÁ”ØM……7ƒü©â¡½z>Ÿô³ÛNPá$egHa›æŠ@ÎS/Eì~¯yê%5NZÿ1ôÅ"€0œ5agè0GáÎÓ1çJ÷DÀñôðŽCBz›rä¥uŸF¼7|þ¶„Y¯.´—(nþ©¹Õ®_(0w ‹ŸvpÑÔø3(¨º«­nÆÑ°ŒÒKD¹…>8T0 ¯ ††îðÁ ’OèuÅ¥A+.h1n8§–'ã8þ‘ã…†x,bMx݃é!f‡Žpm:têkÞ¡ó‹#‡N}1ŽtDÀ)²ì;tœê/ÕèN:t¤pÁ2G #ÇìÐ1~É™CG¨{óÂ3tPW÷ð™GöDÀóÀ±çÏ!JàÑ:æK^è·3t~ü:Gô°@D Á೘AšÄr†ÕE`_ø+Ô=„yŒ5iðÛL=€¯Tõ (’CDh œ53tè³Nh;i q D@DhQXö5¡Åº‡Pñ…ì!ѽëqmN‹ºDPXD@D q•ãz†Žù¡î!Ì{sþ¦—˜óË(ކ ˆ"€ ÍkÂm@aöÕXéœ}„é!4Ö„·— íÄ㮌Ÿú¯ÇñŒ #͇yÌ §3ÿãííÍ6¸Û5o4Â?8éÏ*qU&«P0žÌ¬XåÉ8ˆ5±ÑC`ñ° +ÅwíÐé!–÷dÁ[ïŽoŽ-p'&<çÔ™#aC§ UÔLÜi‘—úE€ê¥÷ïøµmÏé^BÝC˜¯ÞׄÙXê— ¤† ˆ@ËD,&BÁ&çüá„ï‡WL𷤬¤eâƒR·Xlö5áuê·á|=¼AOá2œÇœgUø@D –€=M׈fZ:uåL{?òúÛìé4’.7Z=r8 Ô©_]÷üø–ϺlQo8Îóù¥©ZQ¹°À™6Òt©ãFÿÛ§éXjìm–YÛ¦¤M`EÓ$œÖÞEœ•ïøÞUR£Øa/©©ƒ+õfEœ‹5‘Ð=ªõ.ÖÄ’„yW†Ã¶ˆ"€ V ø®ý0ôj21‘k×®A è%#!×èS š”Uè].púGqJ%ùðmÿ.UO©´ÖÑn©~Ve²qï/PEÃôáj!Xc¿ÞtŽÕä͢ǿk?MÍ&’ÒWÏËÕu«3¯8´6sgí§ûoÅ &i©Ú^¢Ë£^ˆÔÃ,ZbMÀ èÕžêfË¢X1;tŠïþ‚zI=_[…?ýzüË«eåU~øÓBÿü¸=J®¾dÙ£ƒåˆ"РèõTçïE8`)1šÖnü çÇ!z£Q3â28tôRRêªjÒ \#ñ@@§»$3Ÿü..Ò$G pxT¼¸&;‹Ä¾–@6¿­'w±³…\½ófSRzÿ6kB“P÷æ½Y5ê%5¢Ù  Þßsæ™§zÌ{éùÄø˜ëßäÿW¸øƒ :"GE€©&Fµ‘pks¨v¢7ÂW1¡öPSôcqieØ –Wè(pPû?o÷8_ž¿. ן"ª¯0ƒ?߆Ë1ûÌt€õ,PÇÍ«G>•ð;ÐÁlVwø¼Àa‘m¦Ž'Í‘¥Ì£Q=JÄö°®áaƒó“ßfÓ$d]ÇãÌÍ yåðNë 3Ë@¶¢•u‰ô —)Â#É¥«Öî6ÑdÑ~®ŽU×¼(ÖÄLP¨‡@¬É/ü8Â|]Çþ® ðîÒña†íhÓ/òéMûOÝ-Áw)WĶˆ€›!`0ПðGÿöj³Ç ´PD:}¾á¡þ­ #h$ïê¢?Ñ +÷K«l˨ƒaU¶eÙØ÷íý4 žj«Éª÷‡ó~Sö§;»/8ýÏCðYÞkÁ? &à :tzn/ÞòÊeT;5a´ÙŠ˜” }uÝ+ÉA+hÇe$ëÇœ®À† tÉê Ä)²ïˆÎLù YÆQ>µzüòšõ(Ždt ¾gV\ëú^ZÊhiLм ò´l·Žn3q–¾"ô´WÏ“ÈH91É{õ%YYZ~ñdUWÙ‚i‡ˆm3‡×§ƒÆÀJEY1þ–ØÑ=˜‚±&qhv$`ëÛc¬î>’…öÒ~:{–²¯-ÛöÊ÷'dFœÏý89öãY¡'G뜡#ÑÝv¨Z|·‚kÐë<ŸŽI¹”cbXÛÔ¿`E„YM OVTé©>_,¦±&zPMÄöQöh’dj‰k…U VÄo;¯M_6(^5xÅÁaÖµ´·ð‘ž:(䇳ylò_cV…†yš['"9(?Vuë–’“Ç/Ÿ’553—éÜðh§ÃnÜœ‚/æðÜãŠ÷Ú¬åÕ”½ª›dá ½<9ʹ=#ªé ºL¤þ'cMêÓ†£žéÕ¯Ïíä?Õ.6©áØlçoζ!o©§m=pòSø$õÍX4;ÖÚi\›ò@ ñ[FùÛ§Ì~o6ãJÚáM¿åÓ5cè[€£ODdôé¬\s­.Ÿ¨.ä˜åÕjÕ!ŠGáí Ñ›…£A³d][ ×|úlpòã PÎÒtrhlæ*R¿QK +¡!& …p&ôÃE¿Ò¿zúµ´Ü֡㈢DÝÕõàÊ9>Ÿ¬þÀÖ A¸£ÞÞ=Ä.ÝIDAT%0OËB$:KÉeÁù))9´F›~„9t$š ‹  ÉØŸîÊ(äêúøe‡é"gq¦†Ñ<¯:çSNRHº¬KªG›×FºœÜSA »`m¦î xšN{õŽã:Zí{!9,xˆ :„Ò_C"[5÷õ 4œv $$ØkÁ¶²wщ!$Çm¾…a2µyÊíì6ßÊÅV³Ðâ‰ßÐ@E”™!±½FjðéžÊnpR/DjæµÆÎÇšx…>ûª ¹œ[k8ƒÀ®ä“ñ%°“Ã'®Ìúë0!ˆäß{46@رgß?÷'Ù£ÿóoö÷ŽÔŸ=[7é˜ðªÕ¥ÍßJ惲ruÈô€åÖ¤€«2drÒ–‘Üc›v¡%„D¯¤¹f“»ö]†¢êffn¸Ú-¼êÕVS ƒ–à|+‚f–ÚÉ Aû”æ¾Rƒ’8rúœ‚ã%žˆc–xYf”zvn”Y>Ãx¶C§ÍB)7MÌŒ’.ÝËœÇÒæ/Þ•OÙ¶ `#û .¾Ã!ΦdÙ® þ©“"ž€2­­ÆÊ)$̀⠀òú7ö~ã©'²÷JsrÐÏ>®~!ùõN©“½¼ n(|ÁÊSÓàcâÍÌ«_¿ùæšÖmÛ·mשUÛö>¾­á„){Âb¬‰=d¶\&]A‚+« #϶¦…rúÊleß-¶@mγê"FrÍ4£N{…>>×WŽ´RÏií쉻8þ¸Ç0PH Z~` h$”ìò4+Å¥ºV{tù4BàC©AóI'Ù3r8`I&ï¦Ê¤þWM"ÆÉ{ÉãÒµðæX˜{:.t>ǧ ‰éØãP$TDôJåÕùa½HNn~ÉÏÕ‘Ë´¹J¢˜ErŽïê6ïäKЙ͈f¸¨æ7fÃ<õ€44s Yy,^NàµF<)|{ت,XÕI[Dð{Ã!ÇâXÚçôHuøý;=†s •i)7ƒàgé>,9Ç8¶rkœ‰51«&¸¯I#Ï$¸o„#Vê å•zØÒÀmÓTû”¯ƒç²µv1!4N›C¨ŽŸ—B礂3N[T ÇŽ" œ6Š{ʆ…"ÜcÞŠ\à4¡ò¡ Ñ“X*O–oµA K¹ZùÈQƒöÁ¶˜ ÁHÚ7Ôž^}±Á”’{º§‹(È'¹º¢ Q@¼˜MѤ9 eñi•𾉒¯iGê3šlËBÎmœ­°¢¬Æ´†‹ôš¿o5-«9½¤ "æàSUYQhdc£O¯áõ©G€L†9–Tr¹zª¯DGú"÷"—?9êR\½5w…L ®=þÉ9Ž,Ÿ 6?%•…úM7¯:®û Ö,ª4¤¬ÜGÌÆ! .eW¾Bn«Ùtã¾ÚçP$”,"†\ØžÓSN ¯É„õ4oNò‘kvMÌ×9óêêÊ™GªçH4)Bô`˘¯ãôIA‚eM€«‹„°="à‚ûš4ýíÅ1æM¬¦JÐK8WûTVÔE5/Ì+'—0dÄD6:¼ÄÓ(s Òl…7{øfq(ôš¿%aöìÅCöq-âæœÃ7v2Ã(LB›Sç…`c(ÿEô5A)0ØA„-ªû 6¼¢¸‹D˜7,"½¢ ¢–€ñÄ™ä€C[¡¨=fŸ’óàPÛL>ä·pN(”C£†9”[ª:4'dò¾ó''Í'2ùäôióC,€&šžmÇØB³zG’3ˆ"€4ÎÄšà †Bè:X¡³e÷‘,| ì%àÄ).«*)­¼_VYR®ÿþû{>9$ ×·áï'+t‰ruãˆt…ÍâGí±®ÀIivˆlû+tj=ð/·KkÝ;"n‹@Ö5WVèˆ}ÚGÏv—­¡X^‚ˆ ‘¥ŽÂâ‹­qçÄ'p~Å9À.K çcMÌ‹‡qmNcM Žƒ -ƒÁ ”ô8XL&ÊÊʘjy8N Œ(®">g^о­iZa¿«g+ûl9ðű_,'plgxDôi%w–xNn~¹Èî©ÍUÅc‚n°¹NRŸŒÅÏŽ˜¸‘Ó òÙ)AË9:[ò×,·EÌ)P˜7ˆ¾CWGÀ@3{tTiB9&£oî;žmKOõÑì‰ÀŒ…{DX·êÚ%Di R±ÅkªÊWÌúõ[´›æ;ÄšðÛ[#Œ±&M07îJN¶ÁÇÛ§Êàíժһ‡x=Ûo`'?¿&à‡D@ÀF5Ôf5aÚ ÓK Y-T8ÜqÞòÜgÓ¯ŽáäÔæÕi0]0YâBI¨,¤ ´RÓ'1âbò5íH¢Ì }¸#*I6fÃ1ÔÒ0q#ØHüNô$f)‘ÇOŠKÉ,„-]ˆò#I'ð¥Q\ /lHºFK­ˆƒŠ#¡µK„ãjƒ–p¬ÊGŽ´/Ý\hƒ- ìj#5GSS àL¬‰/ž¡ÓøS“™=;üªÑ[ïE|ˆÑÛËÛHŒ^[Îy“ù“Aoô!½Ÿþ½â‘®ÏŽˆ õ‚;]œ‘bö¦—0“ äY¡„jâŒÓÚ„Æ¿”¼xcö<·Ñ+ º>d«Rë¯)ˆûZO’|\§%IÄZb#¤,~É ÊéYWçæ*xøÖ^XÎS,·g¤lÊ…c‰ :&"&e¦`ƒ‰3ArXsSü¯Apþ oá>°¸'lƒÌ†ˆ¨É‹»1t~^ßyˆáw«:5<4ÈËä5àôûcë¸?µðÇvW¾úAÔÏüãâï˜A¦E@òGÊ y« è(Ì™‡™O@GVCĉ:ö«dcæ'ä¿mYm+ó"—Á#h/‹ˆ&7¤çG÷”Èk2èÍ RÎñ4sò²*|=LæÜÑÿä|t”U¬ÉcŠ •†uÉÉåúJ0Y‰Eމ@m~ÊaŽUíÑt338HÆ¢&AÀùX³CGh;iŽ[Ô &/ã~ë¸éÐWsÆ?Í nòºs&û†ÑÛÇÇdô"­½¼Œ]¡Bæß¢AafƒSM~þùçü±¸¸˜_-Ìb`A_ —À_ˆ„JíøÝžWÅhYüâ”3ö³µ3½ænI˜3{ñ³û9býæ˜ÓKAö+cçË äó!¿…æ«S˜¿zäÄgÙwè2jeV8uËÐLúŸltBôз'R= _ô@sU¯È~ÿ¾$:(ߘñcÒJŽQ‰c"½æ.33òBÂ@¢äº‹q“­s€3ûšx…>ûª g9'¶6>¯ÍrÄ]É'ãJă'MR£ÈçróÆ`ÖÕê¶?þju³&ruãÈgÌEôž2¦¼«ºãsfÃý®Qƪ2l€4.9ÿúFò7\|ûÕ¿KKKïß¿ë„ÙRaø Éõ8;>ÚÃ3îð7Þ¸âáhˆ@ý!?–7ß\Óºmû¶í:µjÛÞÇÞÀ½ì‘ÇX{È4`¹—5VÕäÃ·Í Åƒ}÷Õy¶_¤¸Êa‰Y#Ñ]>cÃñˆõñµ_sHŸU‚”®`êˆ,~ÓѺì°äÄhØð@œÞàÕeC–Z!à|¬ ž¡S+€ëÖ‰íN ÞÐ?Qâ4˜Ú%ˆW¸?]©‹o ÃIíXÄ^ˆ" €•ËEº –"ˆÆš¸ù¤Ñ j´šÔ“ ÔÂAú‘3çÿ ÑûÔÿÂ6e"—Y¶cȲˆKoÓò’6±}œª[FÓŽ°K™ÝÔ’¦Ùws®åj Šm]Ú‚Å»ói[ËXõ$’ADðLœ‰5Á}MšdnéNwÌj’“ׯ` qUôƒ?P«×Ãÿí6íý\_Y1Æ(—5¾Qѯ~&(|‡9âMuK‘tâ(DÔÒŠº/ûd¶Q5byÚ–·8³ŠjwJøŽ£ŸÈiáÖ´0(¼Û7ÅnùdÔæ|8¶oI›Yè\ãÔÖ—m³ ƒŠºÈŽïœwb}OŽùÙˆˆYD@fŠîk⦠‹‡!±:UU•ÓÇõeŒê ¦Ê*S¥žIZ^e*¯0–W_xù5kÕıPªÝ³'í¦MÀÔÁšƆq+}tº[$z"[ (‹ŸØ/5RÕ$pê|®1_H ¥êŒ™„â‡r£Zèp_l%nÝ%Ì?äüÆ9 0Ãà:#[´ð;"`TãíBƒžÆš¸õüyÃê`Îj+ªªào¯Øað÷Ò™OW­Û)d=1ñ¯.Ja°Ì˜áb?sóB ¸kè!¤@¹yY°¾Èö2©lºô„YíÑׇŽT \ö‰õIR½± @ÐÀˆ×@óEcMÜ}nÏfßb,Vù<™¬óŸUé •¦y¯N{IYg8©¤V“ú”D&ëNR3s^ç:ÎGO4ïr­º”S8lº«—ò™Y…¶ÜyƒG\ÜE>ò­äõ$lv¶“úœL¤… ˆ€'"€±&n:k £hàK>¯7È~ÔjòÙ§éïmã¼1–4dØá×:ç{ÎÛ2nÎìIC)!j_±E»k¶‚mJÁ¼Á²–‹‡Voß$¼gÝai ƒµTˆºDä}û2W ÖÔK„b¾ù püŒèˆºæ#J‚Ô?ÎÄšx=9–ߟží ‹[®Õ×TØÛrMHÛÇ'—¼’P‘%œ„ÿ@ÈCùßÿwág¯å»üøkq}±g¡#Œi­oÚHhäüë[ØK 6võ{HáÓªµQ_u÷W¯ÉD­žà_çíØ˜g—âÐ2q¨,/y°ó£mÚùÁÆke÷ïvèü0ÃA|–îkÒÄ7Îò²Ò>#g¸ÀD…ÈÙ¢ì‚lØð`Ú¶ï›[zyy{û¶z°Ó#úªr¦šÀ]˜— ó Ä¡eâÐæ}[µõñi?{ç÷±rx†NÞqè¸:ü©w‡Ž«,`{D°B ÷ßÔ¡ÃâíãK`Ëg“‘íûŒ`!ˆCÍ{ á¯cL¼Agá[óŽ»a-"€ ˆ€ò’{ì+ÜváØÛ§`Ÿòâ"–Á<âЯˆ/ñööaz‰=݃•£Õ¤ï®h5i@p‘4"à6ØXM©ê6\##ˆ€û"`6ª ½Ä}§9CÏA ¤èWžYÇï…¬¶Að_h5iÀ{ZM\$¸ h5q›©@Fš ¾ ¯ÙìkÒL$s1p;&÷˜ähp Ö¤m»Nl{÷U,G|ðpæ@«Iƒß°øàháâââÂÂÂ7nÀß*îôLˆ€Ö}xØA-V¹Ù+tØ^R ë܇7äð8p_“Æ›2¸[µjÕª}ûö=ôŒ šJã#y&ð´£ïâí;2ö1ï¶8<ÐÁ¼—TɽÛ;Óƒ± áû1â€×@í®´š0Üã/lr ×ëKKK‹ŠŠJJJP5i Ð=|Œñ¯¼åá´ö¹½¤`—zØÔ¤Æ=Z ((("PK0Ö¤–ÀÕ¢XM|}}Ûµk¶???£±^O®CØÅíheÙãÖ}´÷£Æ6H˜wCà× ö’Û>ÌïÙ ÇïÐlîÄÁñ5€V“Æ~:Ñ]"¹ÔØãxˆ@İ×<ëÊ2.Á“:ù(v=#€ûšÔ3 5’£ûôÂ~x˜' ïâE¿Ò͹„ywÆ?„¿ À{!æÄ]ˆƒó8 Õ¤F] M†@ØÐYM66Œ ˆ@!€gè4ð8,"à ø¾ÅÐB¼ZÂ5€VWžØh\ÐjÒ¸xãhˆ"àü’š”;‘ÇIEND®B`‚PK !?GÂÊ+Ê+word/media/image6.png‰PNG  IHDRð`õ-œ pHYsÄÄ•+tIMEÜ 77 útEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/10/17 10:55:55 LIM_J SGA250167âóQ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí] |ÕÕ¿›‚HiƒÊ#A£ ÐJQªE, Æ U(ø¬|>c­ž …*¶ˆ"|XHÑÄ- Bx$¬ÅD%ä½;ûœïÜ™ÙٙݙÝM²;9ó Ëì{νçϹ÷Ü»÷Ì5];ê^BH—‹.†O¼‚€ÕÜ:Ÿ1vƒÚßAZÅtÞÓ=¡7â‚tPL$¦ƒJŽb#àùwí'Å¡ïϺ=òÀ¤ÃÓDÀú²bÕ[~]ù£(—<2óöÃÖaHáQ(Dàúkûýöî›ç¿´IÙF » µµÄØP%—\^#j¿±Û¥“#€ ÇS:>`w‹þÉS¦I›¹û);,/ç(²wfׂ´¯·ÏOV~ìI­\?ôš¦jÉ©À J™±^HŸ±íôºñ ™dIšë&£Ä„ÈAàñß߯V™E+ßòyTR´þÆåL„?ñ‘b¢”Pi¨|sè$×óIª÷•o.ýÄ‘s«b5œ„°ÔkbŸþsæEËÓ¾ÚJÍc@îAs.!j9ÉÅD(%} χ¦idâ¿nþKħр€l©f\ö¯K3h|||üÈÑ7ƒ Ÿ}º ¾Â=5|…D/eK!dѲ•ò?ª*5¹m⤑Y£Aõ©ög†¯ 99•â/ïÀú=—:p]í›KÇÞfzŠÌxwçºqr`æàŃßÝyîÏl:ô®¥WÎï_OˆØ¾'Vñrò÷À!Ÿôz;f#Äz@È©ÆçØ‚cSÙÚ‡HÉRÓoVåÍ—  Á/ ¿£vþü’üò^gDá–µ·¤PæÇ¼8âTíÎZ·Ko–ÖMµÄ/“ßdk/#ÖfþpêÁ¡ž%K‡¾v(g6-QxÊÂc…ŸáA`ܘ_0-µŸ}¶Ø9¾·â)ñW{¤–NH|'¾ûãnÔ³ñ…y€ý¼P….ó?ygþ™¢¡·ÌÜøÎº~'¾$YÏg…'WŒz~ÚšÂSçÉ´c»xÔ~Oªñé¿dvÊ*ëÚdˉ“çs@Ý0쿤,Ÿ\´†ý×mÜeêµpÆÆwrèW.ÃêQ)p/¯›z‰SÇv¡ÜÎ@•N­z g`„L»–ÊHú»Ÿò‰ønn=qY€+½ñhR1jOUÒ?+ýª¤¤tdæµÀ«¤dد̦y€O®þ9ïÚvæ†I¤ÿ¥ƒÉÞÂÝ\♢gßɺc¬”[RÚà3åU\Êîë¥O|îðñC)}tdæt²£æq2}m‘;ù̦5ôöÌ¡M_z×-`‰\†gßàÈñŠf|´D½c“€Gj’)c/-Ošfâ)¦=Î>˜DHÒº²{†fð‰Ô!ñþe iþãY¦éÓ¨êOËšá.jÈÓMȘ¶8,Kâ—Z%Ï,>ÜÞ{|ê¶E_>·tIJynËÀ[‹NýãRðXŸZiJ¢VKý"/6Kä3Ì7=Ç‘yÕÖ‹~iúuåRuç:~饘(Í`š=[ü~àÍ ‹¤lGf&mI' ‘T3¬Kd"0ì·Ÿ‹Sr"³ÖX+D @hP‘eô  4ˆžÚs5²®fH”U«1à1Mi¼F€ÝU×·G°LD ÀIpŽÅE*èEjË`½Ú4€6 ‰TÚÂö€ ›á¿Z‰mø+Š#ÀË  ç¿ýö„36&ÖîŒ1u²ÅXc‰)yÀ/âã»…"×ùoŽÜ}÷Ýï½÷žôó'W†sA³KçÎ[?¥û#œN—Óé€ëž WÛlBØg(µGZ£ Øþ÷ß¿þoWŒÃDb‰+Æã".ÓÊ1¤{ŸXË:®XrEï¤ݺëÂôòK?'Ož¼eË–0ÚÀû{NÿìÒþÝãã/îÔ«G\b÷N¯­û`ÖÝ7êª'f66 €5W¯ñN»ã\¦–uÅÆ˜œ&¶nlZWšÎðoWyÍÕÝ’u!Å÷ý¬pm}}ý…sÇáOäÓ÷º_uîük« ÝqNL\Ì2ˆa"M<€"àA@‹¸NÕöX¾é«G¦Ò þbMu%û+\1±±¬ËD:›L®Æ†Ä={i‡–ïû].˜üÂÍV<4ÿ9ÂÚX§ ¢%ÞX¹êí×»ëÁz^òSíl¥9››šþpg_›ƒµÚ]6k±»ZZšƒc…TFE °ð¨Tû‹›‡õóAdÏÁò=Gj‡‰ÜàrƒNi]VÖÚof |{ìϽú§gîxàÙKz÷ÑÎYÌùÀ]CÚN/8/?1•7¶ ¸!‰!Ð`&šF€7^ž«AùWŸ‚*«=ULçG˜BÿÏ›AÚÕƒY—•Ó~ ë0WW×¼ú§ç€öé¹S_g¯"ÿ‰0÷]ðh~ê…W_~æ1¸Aí÷X|ØÀE\`-÷g'Ú/~øìÈyÎ "ŒÍÕìºvcÉ™ƒ?ÿ xAægž¼‹u¶€%¤øƒv¶bNPz)Uœ©æÈ‰³0ÍH äúlvwÜtœ‘ÄHhÑZª+G½ ð#PÝzÓ"íšÂó ¾zqÆO]æ`-`ļ×Î÷ú;Å^8Ž0dâø‰PÐÞíýëßWýîž9hz›Ìùµý±Œœî êN§ÓNÿQ·>à©Ãÿ_ôiéA‡Í:n´¦°2~°Z½Våë›ß›ù‡¥½úÐ%i—ÛXgz.qíÿƬ»7—œ‚…—ýÛ„x2jÔ(`Ó`%YY¿®¯'µG7_|Õzc^c"Ø`ý.~f“LÉâ‘p8Y›µ9¨ëÏØYÆê7æ¾Öhü`á à­¢jø¼iP§†ÛË«vÀ”xnÁ·;_¹!þåÚ±÷Yû_ñ·¢Ì!î¾´ÆøëÛwÈgÛþ‘íõ–lí%`NC!Øb`“àÓj§úzÃ/é[ìö•|ðÂâ¿HÁøÍoîÕŽ ?´´ÐÕžûsè"O cÿýëoíûýÕÿ·äCât'ÃroÑ~ù¬ýÓ…¦óÚ_ÏÀ¯ 0h´6hç‰9 Œ@`áwïçßyBì±?ƒ¯_|ú±Ýá´ÚØ?Ìþôý+7Øè )øÅw÷¿N6µ˜dõ¶3õõMuÍ-fú5w|âr\3v¹vnbNŸµXøï›ôó#GŽ ¹qôýgAûrä_Û³R“»v‰ákD)Hb@Ú5ž8rÌá$7¦#ÀǬþ«ˆñ¿š¦—¦f:̺½¯™q6¶X›[lf«Óf¹àt؃[ú”®ý3Vþãâb}¾ƒ®ÿ$õï´ÿìÙ#YI ?XÝ{Øl´½Mf°ü @*°•±Ú®]EÐþÞêºÿ¾\±ã‡øÁU/:MÔÃyru)ß÷óä÷ë Ó½¬øüâÚ?ÿ–XaµÖ=ý{ÇÞ½{é«Këë³’ê‡$Ô_9¨ï†}«/þ`p!•1ÐgŒÅ5yîÜlßçíôôe^z‘G ³×€î„ëª\–Z.2Ož»¡€Ì{U°}ÿÅiÌæfR¹c3™2v ÙsݽCöÄJÚ…ð÷´;]KÊæ¥˜¸!^’A÷t™Ûé’ù5Ùkxµ})Ë›¨¤ò@ïí¯q ‹ÝΔ/–éaîãtÈ™'O˜’ºèDV1K_yÝÙ|A Oxô_’vêhobš—,žAÉ”9k8ƒ\S¨AÊ’oM¼fû´”,wJ…ÁWqÚú{¨àééï …?êøãßê#Oö–ú U‚®ÏJÞ—¦+ Žæ¨(ƒ‡ p(Ê#Ô£ðê¦Õø”Í+ŸÈûe~:¡‡ZÉ] (Lp ò…ñºl^>çVP§Â”Ë{E`×|§Õ\©"â¦Qè¾ËÊ+<‚(z@‚Ä>Ù”øûê Œ³é½ÜBnˆ[(wY*`Pû¥²£i õŸü6¼&žÇ\“íÝRů Í,´[òÀt€Á·òmý=TÔ—©+«:´þpጢ/V•%Ö)„P/’Óu~’vê(z_ó‚…¤ROFÁc\ßîߊå*&\î!ÆñÊ(ØÀie(tª"sZ nt‚+g­›«‚L 6!ARýV‘¿zvþ ¯ÈJ^ ‹ò‚Pªr\å5áÆ:+ã+ýýZŸî-"†€  š!eõä0,‚rtøÕEU_l<~xOUUMýž¢³…KÇõzRO8cíö gÁ|¡aû„®HÑ?†Í=e¯(ÈÐ^Öº/P:êðx Jŧ‡ÖÎrzóDêBIý%¤Tõ_zjÂu-H®dð—Tú«2E0p˜!÷T1­f¶V13 «ªê˜ÂÂã…«Õ0`ñ}ú]Ÿ¿ ô!©¾Õ+^&8T h7H•OÐnºèí‹C'!ôŸÅÛ%ݰ/ã@|dù½² E6§ì´²þ9O9qDo‰K¥½«d†vÇÄ=*iã)Í¥À_ÎDÒ³ò~Šªö—mÞÁ9áò‰ ­¸ß¦‘ׄ3uoÙ}ëV}‰Ûó£ v ôåÂ÷` ÿx}B5ób¿øGSƤ&.,ªÞ±§®*žÔ'%ä¼xÓÂõ9 © U5u ñ² {`9ãÏù¾° FÝ!zQÒ§­xíážn'‚gÂM¥Ý“`Qtÿ| D»§"Â×|—£¼—ÃÛ[ž®u Õcâj,Lt¨3ìaËÀ*N¿à;™üü´¡ÄßW8ÐDÂi6íQDL¬Ž${Fz9í’¹Ö[‰Hå5‹ÒÙ¹îDÒRÂzåv“"b ¦¡Ù³ED­òÓûûúwŠfL˹³¨:ÿºÄÔ>ñà¯_ïu«cãNëw]ºþ¿jÕñ=EUýâ«oáŸ!>mÀï鹊 %‚Jæ§UÈ$«PmŸè½þ Ë£%ASµ0 "ϰœ9"•î­UUÕý˜ãõu°ÎSXP?%¤ÅÇ'%öã´æð­øÔ>„q¿N+ˆ*"IHÀkJfʬaPTŸz€#š‘Fß4Úå^` ýÌЪÔú º -ž0†Ý?„¤&Ä'úÓR§?Zvçñ>9©ñÕ5 77¶,^é±³ë‰ ô!@:}rÓEÎyetzMèzK×—Ø6Ïõ¹@Ò:-)¬*#LIXp‡Û×_²äø¡êº®ñ]Sã,Í€ÛF ,„@H.È|Áýx—„Jy|q³ qB`…`Ð7¶7]Ê”Ý"ÆFšW£Áp KšáÓEàåÐ uYçí!–…䈀ÚÔ B)Wõ·;]ðRu«ÍµÉ?6­]ö辚á SÆáÕ‡3,lΡ½ß  @KóažPhk¨8yªÜ¸è^!KƒÃW]z–48 œ„$ž3©´13TA‘PB Mç/þ6¡bóXøûîÝCæ÷?3™/Ü7eûÏͯMÿSm]Îu¾«ÍùïªêïÙPëï·R%)é®i) ÏIº™ÿå–û ¸!U±LŒNÚÔøÓ°¡£ç­¿ümý{¬¥áõÕûW,?Ð%^ôzÉ;©N'9zü¤"’ Â° -l¿*š¢˜Iw"·E‹nN¥[¸=Ö*ñYŠœ9³’m!RÌŠ‰Š€>¨¬¬lðàÁݺu N»Ãîb ü29¯N0ý÷>§¥Óô¿ ïB·üÜ!€J3fÛ¶mçÎ BpX¨?w¤‹ÜÿjÙ½.­aæçxš4ý°rÉ¡“Þ¸|Ò9gØ8ŠMìõœ_¢>Œ$ØR1QÎV=…îUqû[À¶iR…w{I°Ç†wÔ+“ï¤TgO" ÝлwïI“&mÙ²¥¢Bw8œ® zÏàŸNÂ0€R€« '¿D÷¢"æPLTa«”Ì;7´o§[…ùXØe%Àn_œ$+A­iº íÕ«s½iÓ¦º:تãê•x1h½ñpó—ŸÔøÒÑ»?øÏñ Lœ¹=áéÞúä§°¥‹†Ũ-¥ÜÓ”GJÌÇG ½=ݵ&›‹ Õ@#ÐpTd Æ.\¸Ç\O:511Q—×¥õu²lÉ™â]M¶XÍM¹k¾<úÁÿ>µ‡é/œ9¯¢ÿYñçãˆQ[žÐ2>¨Ég’ KtÓ»ßFÚ°­Ñç% IÜã‰D/–F71z"†¹1¯èF@·œ?¾°°pòäÉ))îühàÖÑ™N'»·Ô´ã‹]ïøãù³ÃZºíÞZ±õÛšFßtÕw?œÿ¾¶6±‡âë$ø`:Â{%´µY,•‹£¢~Šgˆï¥½i´Rž@ž³zw‘ J¥ S`n&ÀÅÅÓp5ÂñÄ¥PíJa9õ-ƒBåwïÞ sð‚ô rÉ%—ìÛWúõ±c?é|ÛÅÇU^ñŸ> ýN6š.ë<°®xÇGY£®yw[ñÆÂÉý.WbN}¯ÅO.¤^Q•i÷­0Á¦Ld¬•’Èý°T’Ó"}på•Wý;8N 8}úô÷¶æ“çîÿæB^SÓÖ„¦»Ç]l9|0G¢ }.Pp’5‚wßÐÀ(¿0:8–íCoïÙ³g=Ú§x,µhu€¹¯Ùl†U£Î»¤NÛ+Šà?"ÌnР†ÊÒf³‚8°¡V´Bå…ô‘@«@C}ýe—]NL&Ýó©5"ÌåøxÕ".®ÓO{ÿôܹÿ¡D`ëW¥V7‡Ó㢽4F„©í NÈðQ±±±1 Qø"§vF -&Á Í°þ´G„ñù%ŸÅsºŒZQA™p>_Åtî¦by–WfšøÉì.ñ]¼þ²–WÈJñæã.Ë;±Û ‹3mb,l‚¦Ú#Âøü’OB­HàC£j¼¾ºù»ó÷Ÿ³Û¼gvHüÇœ®£WTÒ§ãV˜[Ìð·ýwäÆE_ÓûÝsúËJñæC‹ópà3CÂÜÈ®]huˆJG5—nóÔÆç— äœºw‹ú|UƒPžMž¢F˧Ëò£ø,Úž9ìÝ»÷•W^Ñ(,ô™|÷©="LÖ7«;î>f媇»sטU§9B.ñ4|ÞñWrà‰k»wx§ÀP6tœ^5†'îþð'”öôJñûNØÿklôhḚ́gÏžGyÄn·?ñÄZää]mÈ)ƒÍ¡5 DƸ.kš±råÉq ö]>é)X!„‰„»cç,9ðäñÇ HÉÜž“_Ûùà²q`ntÖ1¶ a ÛsÑU‡Kf÷§“Ž’$Ž$%sot¸¡¤?òq++Ç¥,{2mKCÉ8·\2²ŠióD.ºG^û¯¹æ]2qA%¬öˆ0>¿ô“'ù.~%dØËÜLŸÜ<á~R^qšÞJžzQIÑ|§+Êɧ®ƒ_·zöœüÖ“•lÿ«†½5yÜjŽ w)”«KrÌÙèDí‡PAírA <¨>ä#Â*-g¾³=ðÍÆA–g2]zQÌÅá`bDŸ_RD¿”¡Ðù ÉU§Ž‘Ôì+i„%̇…tñ^~#r’槯âbIî{µKož;ɘâÚ¼ª7Æ'$äxç§îYˆvñ1g$# cNûAxèGAoàÒÆç—|^9 õàÓ½^É%•,úà}Ùcè-í¢© åu/&JŸúäá¾W²a±›+ŸKÎ+ÚŸ?´¼Jóåà"¹I±nzÐa¿ÿСCÿá®ûï¿_cA‚7ÁjIÄ›1‹÷¿È.1ù½{ÿ¦üÅý‹Çð¨} ¾‘x/ÜŒÉ¾ï ¥Y°Kä#ÍϲR®\¶] ¸z_˜:?¯dPâ QnÌ´úvhxyDRR’ÙlIMau-¶¾N>XõüwW|×§æ.kÃßL—Z_ýe~·Î$kÔ/!"ìï…;¶×žñœ\Q(^tQךšš ÂA#JŠ^™ð¡ Dð+Ž+1"óóÏKo´±>aÉ?ÿ<:y’¾ñº´áòëâ™àÐ7 ¢Œ¸¸8Ðæ¸¸XXýüóÏÁÉLn’F„ýöö4HäÁ¿-IYZ´¶ªƒ—Õêm ŒM÷èÑ¥Kë©™ý¦f†~Ö`[·L$@¨­ ÆòZ V7~çð…ÚZl¢Œ‹í™€{¡[MÛq«ÈƒJÓm‹Ej@@Ç2¨n˜ˆ2Úb’­ ¤Lîœ>/tžÈ¢À@û³²tïJ«êb›œ-ß¿ÿöÒ»î›í‡„Ž@¼@}ÏnÏ«Øé^§kÓºE°¥–eè ×áâv­ÕÕ5Î{z‘7(âA4Þåßú¯ò‡óÓ¼^=êUÅ×6†Þ2©}ê ³8$eó¿/PÕÉ1B³Gƒ°®I!âÇÆ˜cmfâ4›-ÄÖÂZ[œ¶Óì4·¼²½³ÌþUN®¯Jûì³>p¼zÈ£·\KU†qÙcm±uªoPt5†ÏBQ _ºNIX°%¸ËÕT=Î)}!(íÝýÇTÆÛ ¿lËôSD@Z>ƒ‡l8¨„sƒè9š­¿ª¦±’Af‹$[±bÕØ±cûöë ~ œ¨q9¦‰j¿¹Ùe3[-f»Íj¶wnljÒçü€‹“#óÙ“¦~ àʶǟR¸xÞQáÔF¹8þ|30Ú+O„|ÊÙd%A6Á-ã§9´ÒÒi‰²§Â?Dê( ‚Q~E‡<üðœñÙã«««m›ƒµ[mÇO}yäTUÙÉïK+.øoË¿ª;YìqÍ-f¥æç0­ƒ fÎQê=À±yGsè4¼qL—hˆ0cÐtò°á rËÓý"Ö–çÅ^S±¸Œôò\:a¡=ß½*f“ ®]†Z.™"œ6®‘–Ÿy¦Jî2¬*¸•ÝW«G„…ÌÀZ¾|ùk¯MŸžûRþóšƒöëkµX9óêóôœ¥¨½@¹Bû+j%oËŠ·CDX(âÁ»ƒÞ~ûíç_Èÿõ¤»]q ŒÕi·ÙÏœÿ>žH‹ðD ds²‹—.ý|ß>ÆÆ>4{¶Åê‚W,bû!aA V¹Þ©h³[·œì°Ù;¼(,ÂGøQÁwm6ò*i¨EúÀP`£0‘’퀵ˆ¢`(a ‹@Ì{Œ3¬¶·`Q`ÖÞJbäò£ÀBŽ“Çg÷c“Þ_©<»ä@ƒè޼ ;„0+½¬Œ¬‚í+[4@¨a툰ÏFÔ¹°¬kƒEˈ" ök³!&Æei¤Á°-ÔÜ|öìBräb "à(X kD˜7²Ø&…ð.!OÀ0+!pÌÚ’0+1—o|¿ûa‡BG |a|\Ä@ò—,Ö ]|ût„YMƒ@.Ÿíñž¨²½×*u0V¼Uè ÚÚ¢Àœàdâ,qÀ› ,¬ƒq1.«®ˆ0>ÖOˆ]äAåbÜ{ŸsÖ–•so^q‚‘@!Œ†Yù!ô [ ¶ä.åÀyR¸x+w4fk·>ò'Q`ðV]—ÓFœlam,DSíç‚!Cƒ&á »h@®¿Íý 7Þ„!)’7+ú>ê¥!*ƒFH…!±Q`0—Íä0³vªýð ªýÁG„ Ècäá]¡„YiÑ5y8*ÃÄ[iÁ }óDÁ*L‚m¦ùBóãI«ù‚Ën¶B°ÅÞbf[\Nº9ÔñêajÓX§Ì!žÆ·>VÏ}ÏÈËs4ÌÊ”c‚iCFAAÙÌñ’ª0]Æjâv!Ä*õñVåo÷ Q°´à¥ÇሱƦæºú† u µêàí MFŒkw}舲ˆ0Ùë>;D#¡mƒ@ÌÚ,¥c"€Ð1Û¥v#€€ªÐ¡@èÐÍ£ th¢àwhŒëÐJÚšÂG`DXk*@GçrD˜¸ýÓ÷%ËíÚø/Ö®ð …Gƒ„&„eQ•›5Qe_f{´Æ‹µêÞeFÁ$8lg„ÑS- ðBïöW#Õ laÅÛ׊§½øÆ]ù~—Œ%nK–Æs‰÷ôF æ‡OÀÝÍ/Ö–¶ˆ°íÙRþ…ö²X0ß8,O „ðç¨7Žxˆh¿xÆïiÉ òâ‚ñbê ¶Õ“(0€ðD„I' ‡E3p§³ÀE#ÁÜáb*" +Ü™.^gFÈ òbñb*ˆ¶ar@x"Â’çn(8*9¨Íâ°BŒk³z¶¡ÒERQQ`ኃ®áQ0 ÚU¼ÐYå¾rÎGÀO¸Á&*6º,ÓžÀi’µœ‚tå0¢siW‰€ô9H„ªI'Í>>"šT/A´p™rÊ〟x Û!.PÈÃÆ‡ôÊ«¯ž}ö9»JÊL†—k FÜ/¿øâ˜c))) 1›09ا„Ågï½j¾óö[^Øæ¬ÆOxvÓ¦ŸöÞ§NíóÊKKjF£,—ßpÛ­7í]»áOk6¼ôÖ‡Œ²È’'þ…Aîœ^¿ú“ƒÝç«IXk!z.|ª‚¤¶¯{!öc_ÂŒ"”™….íâ‰íjÉG‘H|V>±T„T ƒ40õ‹k4¼Ô$#—c< 1ÁãJJmD0™™´kLR³rƒ½"µ¬AZE9¢0AS" f‹šžiCºšè¦»Í2ׂ¸êüz0RP¨GEâ cHà}s…¸ÐªÉ2D\ú€DhÔÍ©„Af’DŠuª`€ž‹£–¤>H3™njÆFü…°I=B­ 2§çMÚ8R%ëcJµ_šIf£z°ŠÐaXL™2À”TȘ Iÿ¼a3ütnß *äûG…ÙË5ËËJZ7Ë«Uû`(—±TÎ…îFµ3þÃÍÈ-öÙ=¡®é}lêðªF¤0´S6b&án¹r‹GúŸE´Ò$¸ER ²q;¹*S‚yê)1‚ Q€^–×Ṽ‡F™1ïÐ"åšÇ'€PåDùLÆA‘‡¦Cv½>³9éEŒÉÐF¦xOþ¦³F˜Tl$Šÿ5Y:” ÌémV– ‹R«ûÛPkšaÛÊD=nšR†’ÒávœWŸ¢s~*@øÒża²¦g‰s×$Æ«qaRy{.i|§¤9ÅHÝHÈ)jtŸ~ÈÝöé7lpCl~ ÙOÉlJ‡Å«zAaÆYit#pýPõ»*JT¿ÃN`þp\J ß5Õ5“ÃW‡™ˆQ?Oå­7z«„¼¹€—nxA"&ÿ­{û‹B%NÜuSTJê ²Q„4ào"ÒžpHTŽì²qµÀÙ@‚À Bì•‘âÔ¡W¤™.ö(% ²nl†¢™¼q‰*dª/|µ¯H]ÒaÌHÖ ÝÒ‰Sã¢Ù¾)²s)Æ-wßÚ5j7àý¸ •TðŽ×½@³[™#~³pÙ1]‡IË¿nÛVó·M«û]s˪µ¿äâFå2ïáo8ÀMÖÍØ7Øa›þ­(Œ‡RSfXZˆ³‰ôT\œˆX/bqŒÍn€OüUNã¹XÞŠv”S)N‰ ¡Û­>/)ÙÉ/šH‹«•Êxhä›M»²0øŒI“W²Is‰i‚OxÉB" ¶cøŒ:‰¤R=Òõà˜SÚö¶i^y¼Óñ’ûºNŽÇàrM¨%¿ßƒL t$%­à‘2C‰j2$(êkumPg­ XeÌ]ftBS`Ÿ=Î<þO`SzÔ>¥Ƭ,VvÀÖ^ªÄ8—UžèiÀ½ÌYdØT©å&˜,eÔ5DOžT]®úrÉ^¬cFÌOÅÀWly?ð ]z( æY,%ÅõÌ{ŽsÔ鬑) }ÕKɺóGLøa1ýÖ,ìˆ$N²Á^€&,€áƒît"oI‚+¢ W„ˆÞµ5ªÔe¬U‚JaÁ†aÄP6ˆÓm¦=†…‰\.O~í_Ч_ÿ+a_/šá0V=ih75÷ÊßX¾ówn¯±ï5hà¡ìw@ÍŽ­,nëòUë†^6ø¾ÿV³Fͽ›¶h³ôßÔ„ÙT2×€9ØT6«ñfU:€1"4êÎp'´~aRÝïk‰¥Óµ2ÿƒÎ†Ke¬—sËÊ#øõ,‡ 0uæBà 1‹|ÆÜYE].6wOð âñ` bö‹/š@ŒˆcÒ |ÆÀMmƯhè¡h¶ÑsTIß)q“ÖI9òÒ‘C§ÐIJRRuÒ¾®NkTŒ.ƒ0ë 9HO×EmÏDK³Ç,¨ËKô€’:,ÚEGø«®_¨Ö 2SB–“*iE|q¬’öÄ/ÞßêÒ–E~e§@:‰>•Õ321,Ó˜<Ñw2îØnT¨Ù>dƒi=O”{zªø3GQ€_¥“J›lˆ1+|à —¬ðØ%®d䋵§ªðš2ˆFØ(v™ä»0[çÞwïªÞK.õ©p…mü¥èÐlJ'_ýÔl eÄYнI²Kz½Ì#Ætå„éÈ)=DMu30»³iÑâ$ÿ¤Eôkn#Ÿx×I… Q9]æ‘£W0º¬—ËЇP4«ŠY ²nè =”îA¹¬lq]nPÒ¯˜7lÜzl×c Z® Þ4¨_—‹e¨Œ¡ZÆOQ.çRñŒƒÍ@NêOfjÁ¸ýa@C˜6bõžTœ(~ü¼|b= ƒÊ´‰äÂ8_ŽE3–͘W8kš0é3ÏuÛ­@|µ3‰lc"qѬ.£¬CÙ)yùVM*àGHØB­Ð Ÿ7Ê¢~f"—ô—œ§óSç`Mºÿ"LÅ…n+-B™7^׆«›±BYcóŠj’¾œà³§ ­âP÷$˜£b¨˜/Z`âú¶̀Óõ@Á";6a…Þ‹xÂb±õ^JÚ#W5« QÀgMl?2Û ½)n0”üò†!†œõîæ}ý“=Q<~=Ì ›È¬ó•£MaRÑæt+ÚV ú Ôa`bèYÁW #Oø*­ˆà¾Ÿ‚{A"ê4K᤯rhp!5ïïh8åóˆQÐ/<¢â”VøÊí·év.4·ÊU¾}ò20h}­|F߉È»„ˆÑQ6ªÏñˆ›pm±f6íFDŒDÍpGå9Íš‡ÄŠšiG¹Íƒn¢n†&™ dá§t …å¦xD½Bta@çóí«;dqq14t=|¾8éQ£ €NÉÆ@:0® …2Í\—ë4´º±È'D Ö« ¬X1çÂj¹¹PÃè2Ì5°b& ýø©b¦ßJ»»‡0¦¾éz´0O˜¹­ñP™Œ̹‘Hy9æÀ¿rðšŠf(›H9–oôŸ>(ka‡þ³zÕÛš/²Es ÈAÓ3“¦CP²Qð3eŸÌJ§HÐ/àÅv‹>ù ÇAri”äÉ?I2D¨ìphªh ÜÈs|mlW'‡%±¡Ó´Áþ?Rú¥\IQÚ 1qØAÞÀ¡€~ìN£ÄYN¼ths¡*èVî#6½̫úN10s‚ŸFïëJTSEFV±ºýù_±ö²C{XÔ"aðtç{Üœ€T"qpJV¦w©ËÈÒñB¿yõ¨ó45õ|ïå²A܇á: qçß|½W÷CeȽDIT òR$’亙µd`5Àà©›‰*n¾®Âñf=µX¦ŸPL·e¸zæâõñ£[gQO¡RÅãwXóhÐè sW€N£hF¿Õ%T—ÕëöÍû™»ÿAÎþEwàÃ=rWY™XeÙÕæåÇpâé ²#hªhžðôߘ4䊛T¹¬ìÇÐl4ñBËPcÌcÊ¢VÎýméÄ oºzì’mÐÈuó_vöG«ñA@þþPû‰ìlûîïß-~žœ»-!ñ­‹ž<ûº~µ wù ¦]ëDÄ:]§"K|ú€jÄ\Ê6L8Êq!(f%ˆ½‡?´1j^QéÒè/2ÈTCǘ$Äø‹ Ÿšœ˜Jf?ú€IO°9qªóiá|œ¢™'DîáàºòŒ¨È!¸H–6—IoÓTd¶Å>êŸ^9” Í/«lòZ°Åå¬hÎ1øT†(ç {ð2•që)jdg*ÀºY¤·þ RC âOPcÅÒø|Qg:ä3Åÿ Þøy˜h(Q~+%‰Õ^‘ç>ÕxÕczà§~ÑPû¼Ãž:õ¦Š %[uóMDÝ¿¼nª“+5ïù©dÅ}żýùob(Áç/îÐN ¥h¥7n’1±¨KäRÁ£PÌ E i'Ž*U~»‚x¨P÷zW„ (…Â[º]S @þ§h×p›2\IñŽîÖÀiB¹üȘ;Êi»î†»`¼™-zj2¦aC]‡0„·0Þ0Óaü+fðÏ[ª2é¿ü…¼Ÿ=ýåJ,-±TÀÛ2VÆÞâ5™CÇé1êÁç§>ùü¸~E÷Ü:ëG¯,–·Þ lÕïpÝÔ'ÿÜ­žÖÀÎè²à6–³}ᘛƳâÀ¨Ðiî»X(<í>õ¬ÿ¤áž3’IÃŽS•ÒPÛ@-4@^ŠJ©ÆÕòsYÔêè3ûížrPmóx'g#¥>þU\€F ñ&ìqá/Þ{€Zy-Z…”à]- ¥Ç¨1ôÇsúu(7}§£Æ+\÷¢ª+¤Áç]Ÿ—ŒI²‰”‘­‚“ë="Æ QLæò2Ô`!×­Øí)µ¦å‘k1fH]7sžás¦©&}8U+ïË3ë­ú¡¢§„s6 e*«cÄÆg–q~Å௄&#jÿ¹¸N2›î¿âÔ›Àa¡ÿO&)©Fª®Äòª¢,‘ãS,g‚ïMÞ›DØ-ý,Èœ¢—X’¼ÄÚ¸ ~‹™ž¡RDæQ݃‡ZÝ,Z¥¬”¢I§J3PÉ.Ä Ü+B÷rÁ¤… ë·a6ªNÑ q¹|È{¡\Æg¹é^é"~Ó†ÂÀÃòm¸\Tç¥rÃJ}çï°h†Ÿß‹¿9&E,‹ 7-*1ŘW›ðÙù‚Á_»ñ£58R‹èò_$Â(T6RÝ*72@[Ëî#Np~Øü»ÖèÝ5$=·Ü !K–Ebp Òß5˜N€à.¶Ê,T(©d।Ó!Äv‘©>YÌj—jg0°‘U>bä­ê<ô‡7TÞR+ÿSãʤž=p{Ý=7\W¹UÅ¢ÇMøl$ù*¡S(0Sº&¸|p¿Óúe&±Çp*šSPà¦MA·ƒôVÎqí´Mš†ç ýdÍVáU~Ý,NcídŠú'‘ö ºCç ;Ìš^K×í‚™®ª*$ï¿8À!^-iÈââ+ƒÿÓhÂC’Qô*„ÉntÕ¼5¤êŠ{7T¼w´°[†º€+Ñ)B{[™.-€„¨›™·_.ùnŠ eÝŒzÄ&v¤*·n± ›{'Aï5ÕJ¡r‰\¥äeóÔÀ6Y 3øKÖÆz”¬ŸM0@ÂïS{ÄMÀìèå23x´)ò-†NQìr¹ü÷Ñ7sµ Õ9ï%¬h¦0µàýJC(<+…8~yæ*—$ÐïÆã¦Lû+Ž.‹)ȱêk.9ëjú™½Šß^ƒ [<~ÖÕ3~D¿Íÿ'"rõËÖMF¨jEþñ3Þªf¬ÈÉY1û’‚«ñ4³Âœ53H!n?ΖF%%ç÷oG_ó§¾Ô÷ºÁï,œÿ÷Q~ê̽ÿÞ«Ïÿd-ÅXvpj€E ‘øz€e©·*QÊ<ÓaÃürÔ 74À9Ü\:€}ÏSdq`™¤‰N)¡™—Gl—Úé #›o ©àÔ±N—¦q +²M¶xÎÇÜØ;¥Sèñr¡'¦\¢ÇJPÄåZ2l.ilf ‰©¢ì زQã áP‘$)Ø0%æ†f09\ÁTåÂbM®N×ù´R ©“÷ÕŽÞdùPñûSs{÷J…»×«Ýk1Q×u^…5é<̦«Te..¾B§sΜ/q5Å»R«3®¦ €ÜUÝ!_ÅÊÖé0†#îu@ÞûØ+¡FJ Ü©›T‹ª›¥!ÁÄ|È/ïéÄ þ$¬[á}ÖŒ†àù(Y}ÓÍ5‘9ܤuEwýA6ægwE âZ'E‘G¶ˆßJ-KYeÚd.Þ6úþ¿ÂO´x›Ò©óx´y…ý¦ åêÊâïû L•†í¯7†éËðɇ@WK5ûÅcX÷33Ÿüðñ~÷Û€kcŽç÷{ä†Éó&]ÑEb÷kÑø[þù‰iê9ÎOo_uË[í^êt~Ϋ¿þzNSgÙg_8Îó֜٢ÎÊ÷ç^Üÿ ½® ›hÆÙ²ê¿ÿ=òÄ+êR9÷¥ï¯{bÚõ¶Ì7ðõ‹êÌÀ³zzÁ½ú÷aÝd°eþc^þןêt Öï_üç:Lë¾ùÁ›þ~øm/ÜܘFsaŒ{npîüä”;‡vÞQË©$¥Ð0Jé>Ð0bh„¹øœ L4rOä¢'OðÀÍ!­çÝÐ&ò“öù…%(UÒ,C¡ð$g(¦iÁ2ÿ½B~QzãxºKÒ7á ò{³—Œ(–Õ5¸­¬JëÅl¦µy,õëÚSÚ'PÐÙ /¼õžKÉîûv[“:bœT̃!¶‰ i•g‹›¯b&%¥ª§Eަ¤$B"ñ$VêPßÎ…CõI)ä†5›žF©ÃLQÝt0ÔÙ•á¡:ô§ Ga$ çµÇ^õl1’'›¡¨@ßâ]©Õ4PW ÏÝG»Kƒ~ï‘0È—Ñ•DÃû>ßȼ×^¸X`³Ö$ïc¢…JVK¿(„*Î,^x=Ñœ-dùp&×@áÈÄô!¤â_Ù®.PlSðë/Ö–1¢¥ )vµ`›¨ðˆc zpê)RÅæò)ô³A‰|Ëíÿ`:>íGoÔ)~Í% Q &­‰*fÑ­a÷±æ§Ü3ô;žùî±þÌüÛï9Ÿ][ õ¿uë9mþ¯ðÇÍM¨’/?ÿåï·n=iëþ{ä W˜n|q×Mmàãÿê\ßq¶Àî‘7]…Å÷ÖeŸ~qüŸÿÔ‚E=æî#_|ï§­Ý »äW¬Åç~1p®Ôx俇üç“#ÿzÕ¡ô­1dY≠òT¦*K©VΣ¢¨FˆÀ±W5¦{¥|KE {¨Eš¬’P—p·k‡ÔoÙ´Ñ5U]³É3qÕÝéš‘ú![âœÕSר×yÔ¾±Ãª8δòwBµ{lgÏi%/§¹rÒØÑE¸)˜‹m:WµkËVè|C¨Å™U™À•Z?Ó1® ¾Ùyo‹A7Én¸$Æú½%+ŒË¸³¸’´º÷“qibW'sÊ™Í óR…C±ŠY·x+aEKÒ«#`ØúÛ¶úõÞ¼qC^Ã÷©µ ʺøKåÊÛ°®a_ŒV7ŸX\…> /A‹(Œο}jíwð¿nÙ|Pƒ†lb³rÊ<@‡¾®PÉGk*8¹瀮çÝxüW‚èÕ9²ßˆão3èjVÙãήíV·N‹£z8s[wl ušt¦ã[€:\4©ÃÈ´Â*ñ •ÌŽSïðk=oÐõ#ÿÄz‡Ü:©+¼ßð7<†z‡¼«ë°»dëq׌yDÇ›nð‡†}B—ýu|ßFúõ}tø}s>7¿rteÃYÍœ2Ôý²¤&Õ]G2bå/s{š<™,êYŽ‚ÃhI¿ð‚æ.³Zp‹*iJf4$FÇyŸ© ¾ Ðoá i¥A`9ðéqÝ ŒÎ X„‹úõZ†.ÚÓÿÅŽ¥¯G9\ùµ à£GÁp#LC$cá'¥.2{’’« f>Io ;> IDATB,á "Ó<„%3dè5Oò{GˆÅùI½Ïª*Œ& ëjÃLd&«¥P'µ~vó>^ÕåUŸ*Š¢rCO-Ž@× ã°£ÌSpíJ`0Â8¿Òñ^Ýû´2OfÔ)=ñ kno*óòî¬8`ÇofUä¿RClL«l]\á—oæ+1ˆ{8¦Ÿ:¤‹+6¡¾òß³é7¦‹ÈÐ(ÇÇÅ òx @/˜aÕÚ_ºwë<½púáíÚ4kܤFÍZeååè—ÚÜ]¯ —CãÕXê×; MK˜f+‚ò³ÇWç—I˜Cæe¥»6mÜ0þÂ3ϧb Üäõ$Ð/qMˆ˜¾‘ +×.È-…e`Šrwé€ +Äæ$ÅÕO3s…ŠQð{è®E¡J²ì«:°Îþ­š7þâ˯6oú¥¤x§Òî²’‹ô¡|÷4êÁ°’X0¨zoCLáZµö«ßàࣺw]¹fÃæ­ÛtÉËúŸ~Ñ€?á3ÜF¡”Tm%ŽüÒºâ[ÉaÆ8.yÌ\ô]ýû“¼kú‚ sϽ.ø9<·à¿ât¾¡¼`;}0Æ7dÓ(2•Å<Œe1UÊ‚³ÔeGcÍ:&x (âŠ&"ö6©Ò”ñ¡ðQ„Y%ˆ³*ˆOÔºˆáûœ>F)¤L„!ð± • ‹q €Å=® M€šõÔ¾7R-NÉÁnS dÜוjc±™|­ì‰?/<ŒàdŠ®‰cÃôLv„IWÇ 4¸­­¡7hgËoÛW®Þpt#÷ß_/hÁG^*õn 'ƒlòÉãÀR0Œ9€Ó¡ù‹–oþÞƒÀÄ3’¨”J7¨)a˜¹<’£Î¹Ø‚ÃÌØ[9¨™¥m=ÇÜ30ЋèÆefhP³—¾uÑÓCÆÃÒGÞ6êðÊʰbæÒÄXŠ+_­V¦¡cV¦Š?åð3 ÞòÅ‹fI!íqJ?D` C”õ*ÿf1jÕDÝ…÷ÅœpdǤÅ:R°“yü» ¯®¨üa®çeØXµ G"Jg¡õ¹[ ÑË‚0¸¡KÚEØäǯfW<¡‡Ái²ëÖŬŒÒ²rZÆád(Œ£P6ó˜rnY¹]¦îRˈxc ô×›s|1˜CîŒÉ\}! ÜVDæY \(‹65ÀL|ø%À1!Eù‡p¡SL@^Î9é(ɦR„*p¢0Õåš,x¢X¥'œá”ÆÐˆy)æ/§¸ÖÂÚÿ¡/à嘂Ÿò]Úvu£,;¤Ñ4Ûΰ˜~ð3ëñû[+œÂáûÏ³Ä «¾KJ~1JÌŽË•Žl²¶,²p2ë ¯S`_uì¨C°ÂûâS~ãa¯”¿ÑdÝÞíüê¾Å×ÌŠó'«N¿3~ @¡Ò@O"Õ¤øU’pzT ¤êžx¯›•®U?Oc×o‘±aN÷Nx_Rgº~ÏV×¾•«ºYæ¹,§.sÝÌÅ0`Õ–hÌWͬ·¨lôV}(™«:yÑ#ä78È’ pi1£i×{q d„U¤:àD£GØœ(Ý3Ðï4ŠfÐæÈ§ êcÌ\h °*5”ËØ 8¨Ì¿¼Z†–YÚSß){Œª¢sÅœžžnc0ÕŒ„ Jއªe<àAdþ„ó 4B+²‹È@ǬuÉo9È.ÓQ´2;pÐÆcÃòH¸"9IR†¢œäú–Ð:õ7Š@º»¥7þ …9Fª²I!LC–ôMQj'Y¶+>•a¾Xk]îaKøLê*bÔ¬$¬©ÂÙΊ”Œ ª±¯‘>µŒ‰ÛÍÄDƒâ“lð+Î@qK¬P¸_¼1:µ*™OŠÔ>ÙyÊßh…ÆXAÊ=—¦ ²‘ej¯ì#6‰ ¼yq‰‘9*Ó”{¡ðôyòk ÿF–Mêžjöœ&Àã½Þ—Ô™.ĉÉuŒᎋ"é@ãª@ջ䲂 VÄ5Vf(Ë Ak†*pL”2’ aSèl–¹MÖx$[ 6“÷ ¿Õzè³v5I º»A‹!ˆÈèµ)›Iü“qK€ŸÖcÆÊ‚Àé Y%çR/(¬±èÈЩ‡-÷ Eڀ‘RØÄ]íkà¾ô‘:è4ó‚y(Oða;~ÂŽ»£LÂ~\.s³äAV%€û|¤ÌP«¡cÍt‰#ÒY™E8ÅéÍ*Y"'V+&':ƒ§ÍÈ€×eør KÀÜ΀0-’7¢´TÅÆøâ2e¦5úÁç‚‚Hžª’Îp·H³IB ®kZ'©"Œ=E\uª¿}P©«ŸaTú”.k#ÍÆ!Øä_‰” î˜ÊýBêK› Ū­@¸÷…JfLº‹ê)äßW>¹9Æ—}:[ý¹ad]†”mªÕUK«ÏñQ›3ó$râ •{Ÿòºè,÷¦„0ƒ¿ÝKɈ‘3÷ž{Ć>i7|/»”fþIJ-Ô͘…\N€ ‘•\"±ûÒ l}’•S¡Áå©…¼ç•¾„¼¯höÄEÁ&Ò lŽØÝ-LP«Ž ‰Ä¹Üþ –³2`‚/BQ—Ãw¨–á7<–‹ƒü¢'ànÑLªU*÷ºç²Á†ììŸ×«Äo®jÖ$µÌÖNËã.%ÂîF¾ i(¦rZ*pÝaµ¨@:®ñ“E)LUî·«¨³[¨# Ty ¿¡ Þ#Ãßd˜ˆHáóG°áB…5$±xëfЯéöBœÆ‘HjR%Øp‹—Ò)êg1Ä>MJ\~×q“Çý“–«†°f6yµ˜@ àäŃ%ÒòÈU_‹Ü³4Ø´¨ÜwÆå ˆî È'¬4ÂtÕŠdŸÿŠY•¾“–»Y#Ì×¥ uGuÊî½.é1zú]Þ•{FÎè©¢bQ™àI ºæ…å¹a4 Ì+盆ƒ™Õ;%sZQƒè¹‡ð¥UÞW¼G$·ìðºoðÄÔÝä2Þù±–•u3Q)“P!Ý}¼“4ðÖÆ™&ÃÇ#¬»Ì1*úD’V—CxAÖñƒãhѲ*œÞ"m*¥u ì EõîJ³Í¯ÊÕÉÕ¼)‘ð1xí3§ ‹1fîhÆ–0>çôcØ_!ëñ•¹ ÃTk,ŒéJD‡+7$Þ ¥3Šä‘$™ 7)fÌ ïa‚ÛJð5€$Ò\ÍR ýý ƒ*h_ì˜8”÷:?G§ûEj¥¡€4‰²ÑÇ­âîèçÏâ¸âbKº ©×Ô¤f)x73CË"W%È! $è{zÒ ‰Ïfæƒv!»øË83´ûµ²bÒä…qwõ‹‰ŠÎ@¾è€[gŸ~ÌÇÍž1ë?·¥X,‹€EÀ"`°Xª+gœ~Ú9§Ÿâ/šÕ³¾ÛÖÞ_(—ÛuéU]±°qUQ®¿ò‚*ê¹uÛ"`°X,*ÀÕW]~fŸ>~W}³šµàûÃ_ØR,‹€EÀ"`°X,Õ BöNqgeÀŒš˜íÈb æêÖ÷6‹€EÀ"`°X,À¢Ø­šå3Ë\#»mòáƒõZ6‹€EÀ"`°X,‹@µA@?¦ŠY¯ÝYÕ&\ˆEÀ"`°X,‹€E %¨NÎMIÔ Y,‹€EÀ"`°Xöè &f°Hð-gl2Ùc‹@– ðóªå?,úzÛ¯[ÊË˲Ä%ëFljÔ¨Y»î‡µ<¼Y«ö±9wK«Í¨Ý{Å­´|ûfùÏ|ûúͿ—–ÃKÀÚöªQ#¯þG·mzÜáÍØML_|ùån²lÍZ*£zôˆkÆ}òXõÕ í“q±³ Ù€7kW|wÙ M›65×cÏÿ¬AÀS7nœ2eʲE¥­Úu bÙm4›Q» ú 37ßöÞ«f³Æõ\777øU ~×"‘èÆ­ÛV¬Ù´cg ·B¹üò‡sŽh\ûäc›ÖHXOy$úÓÆ³¾Z´«¤üÔN­ü†²‡rë°K²Çë‰E ƒ<0î…D´yV—ƒ*YÍñÞ¢ÔõÞÏî.-Ì?êŽ1—Oï¿Ü}cg†µÓŸ¾ì¥5i)u…!¢VÝùèÓË3¤Ïª©`tyðŸ.ÎËËÛ¶m[¥´F2ƒ@:uú÷ïÿ·¿É¶ŠÙfTf:8Ë´Äηf,DþûÕP'è8ÔÖMÖkÕ´ÁwKÖ²Œ.ÑxÿÓŽëR¯AÕ0[[ÇiöÓúwf•åsRAYf‹@õC+æD¿S›ÑožÂõåÉg Øû£gš éÔ¯3ÿ1ŠL4¥c)ÙÊ·˜€S–…€É0ºlËå*—»víª[·îÎY÷=ÇfT•Ë¥DŽo‡TçÓo–ŸÒ£_ÕŸ/>íh¨iÍ è«ÖmiqèAª&cÀè2”Ëgwmir‡C}þ¿µ;¡ñèC=?õ!\–l°dþ7˜ÈWÛÇ™–Aͼ$݇ ¾zb³Ñh&Gg5ý&P1šLÖdŽc¨Ñ”ŒË[ðÜåx©ÃVeÚdg¯ÙŒJ»c³TA¬|Ëq`t¶Ñ/]]cÓ=Ðg$NÛ-|§6†Ñ¡ „T´0wYMÆxðÅ1¬§´´ôìÛ¿V< 53åÝÑñ§Nf)šÖ-‹@ÕA B§7ø S7ssS_ñ¬˜SAàäö=Ö/zËå–gL¼÷ØÆ¨eÉÿ8wš\9öÊsÁ½/Ÿ¹'o˜<]ï}éÄÕÓ7ž{&~¿_;ý_ƒ_<äÞ—Î I{ï9÷›·zÿý+ޱ*|fÑÑ—£'`ô…CoxìÌúR9Ìâ ‹’,z¦vœñ×{Äô´î˜Î˜æ|ÆpÕ6U ±î…cÑj­ÞØŒªÞýkD¥ÉÐé#Ü;ÅÅÅ\+oÙ²%›‚fq€ž›/­ëÖ­«U««b‹6lÐZ¿Ñqöߣ ¶ÁZ*¨•KËÊß_¿}᯻jÕÈi_§ÖɇìEsju³¨˜ab†1{+Fýs¡¢…пyëôçGÞwo»Ïï¸ã©eŽsò%Ï]Üxú‹ÎU_yôܧNwKÒÇ©n£ÿœ>àšuÅ)½_xáöÎ}/Ÿ¸úއQUð¦ Qøçºw,F…÷ZøÔéÖ(åTÇ×?—Zùܽç_ù©2„j§ÿíŽéÎË'^Ùòa¯3>s«O9÷g…@°¯–Z¡@ŸùÒõ½aõû¿8ðµÍãzIÓ@ÝnÎ×´¢&I–¾Sµc¢w¹ù4A—ßÛT¡a%¨\ÅÂá.ðÂXùd_¯U¾ ÁµŒòdKœÞgÞ8LºÅx}쥦ˆ@Œ|ã¡b`XraïFŸ|PïçhÁðÏÁÌ´±G;Ά0:0ècÌÊ-à_ÜÿôFÿý áÚr(¾Y·‚Býp꘣WÒ¬ »Y,GÊåÕ¿úòç…›‹•ò£óö¿³{^ýýj¥°T€;ÆlÌfÖþÖÅæ7nø)çÌI÷µ?#:KÌV uê÷¸÷^,£aûfa´eãYòê kÜrÜσm›ß˜<-~¸ðË+NlÖÒ‰R¡ ”07ܦ0…M_$6XõéŸòÍo0ÃÓ_ýæØã›:Ñ4‹§\òÞ<¡mó*郰è7÷鯵WœóÜÀuƒ^ÈÔ3ˆ ŸýLß½ú¾sçùý‡ÍÚô¨¨™B}ˆ©Ðù^(‰ÅTèÓsÓ¦GÁÖ{×4º­¤k ~T‘„gΪ⠴´üÉ©óáqY ’°´ŠD ð¦Ï»ùÞ7F?¹¼—¬+Ò‡,ÕýÞ£o´=¯ƒóFvºÐq«&^3¹ÿ³EX(¯š8ùSç¨cãúžnqì7à2õztνó»¿ûÞ£½Ô_.¼²Ûfõâ`þ@÷,JH·"‘Fnz拯·5ýxdó³®ÅçðÞ}â8c† ø¯Oî§+AÇ(ð“ž÷ol ÷ìRÅÛ´'ŽÓ§>~\Õc† v¢3xÜ8,”ž1&lg¢d6ðÔqóàuPO *§Ä*¶èìré¸.—‚ÕŠµÖn°äEvÓà´ýhéÖ+;"oÿq}[ìUËÝž­ë ~éûÿ-ÞüC·†m9 ÙaæÐÐpq‰³ñ¸U4ºèùWõ9ÿª–ÑèëW9mú_ÒØüaÞgë Š/c<öGrj_'®èM~£a =Êë},ùÙòÿŽÎ[òßÙšé¦ ¯Û¸L4IÇ”Å@sÂØk 759T‹ÝðÙ¦@ŒÓÓ§y£-¯¾¹Ã—?É#¬ÞCˆD6?FO»þúÓ:èú÷¢Q8Á†­O¼÷4ôeb¨ìIÔ%I B”e™ ĘªäÙž4!Pî‘#Ry²ì‰ÑÎÍWç‡ÄjfIwß}·„FüŠn" CW-[rx«C¹¡éà~ñËå!I?½½ß¢÷¹_|—ûÙíÀ¿ðEç›;º‹^Î Ñÿ”!¸ÏÊ]Yo÷e¶7ª¿¶TòMæ wÜbGé>óú¼;wB­ ?<ÆFç3ËŸo0Uã¡¡=fÝÐhÝúõ°FTÉêǘµÃÕ`sUÞÖ­[Û8O :5:㌊-—«2PÖ÷JGNêE«·9Åeí„r™ç.ï_«fÏVuøýšm✌ci1£±¹ÏžøÄu}fßPxÛm‡Lºÿê÷û _¿Ùó¡¹ÿ¼áÍC_”/þuûmÎõñú;÷“¯ÿ8âþûÎ#%’˜ BCǦÕ.xÿU\¼rÅáøÃÞ8ûê'^=ÖY·ä‹u,åqÆôÿË#Þ¿’§p,s¡˜³¯*¦±¼¼îp^ݻʜHYñÎãœÔ®éÐq'O»¼… ìÜ ;ßÜÙ£Á(pá¤U?UH*ÃKŸ²°åV­já€ÝW­zDfÿµéã®8Ž }sçÀf ]ØàÛ;‰ö6ÌÍþkÉÐ<µ Œ[8­×…¾5íÁã å­oÿ/òí» _ÞbÅ»“#-ß¹sÚ_{ÜÙnÒª©àåŠg NöÖѺÕºúÉëo{ÒkÚãŒcÑi³ƒµÔÊAê˜wèµURîDKwùØ{Ÿy7ÿ±—<àH 4u¼å½)—5' WR‰^{ùQ)'4¢Ýšùë$Óñ´Hüc.ÁæcO;ßYК9qÜ¢EÅÇ:‹8ß¾zbÓ{ØÎù§ŸÐ¢ãlùñÝ×õî¸é‹.9uö›Ñ‚±ŠM_àœ?ìX2Õè’ëοgÖâââFºèö›×žèœõÞfîÿøì?Ü2öÞââdàF\~«ÜtÓM‹/.**jÙ²åõ×_½§ ã|Nœ4â³™PÚö§Ç<ÔjÌ¢'¡PÆ ¸ßd1;yþ²3ßÿ ë°YóŸ_0é³EMPjÄäã' ŒQ IDAT÷Ú¯çG8«ê/>š|æÐEMœÛ} AË(#+v•F;¶h\\¼È׉Å*ÁHe@VpBB›Òéß tÇB ¥|šÕóGáµÇŽT+‹yÌÐHãF¹µ$º¡×±êô?¡uýúõ°è8«bK0Ƭ.ûyãÏ;öI(¼,e‚‰ yPÛ+”Õ1Lxð›Î·Œ»f!ýÜè?w9£‘>{aFo @0k×åÝ2nìay'Tk g‚Žq°TœùõaÓ£×®ë=nÜ¥8IÙ¾žYEøÍr¬~kS¢ƒÜ0`õ;¿î¹…JtÔqx<0foø•`¼ZDÃÖõ¡Ø=ÑI4c~ñz~ó¥ãô¸|æñ‚Ó×j܃Ê=ZÖ}iöŠW?ZÙ³CƒúÔ‚`\¿½ð‹5{•E»6¯wJüÐ}6Æž1f,—åæîU_D÷„«o﹑Áý u¼‘âôA>ñò›=ý–Ÿ¦»0jM™Äéçʉç]}zñâ“ØîÓ¯ë”ûà†ÓïéÅ÷ã ™¶ˆÓ¬ :üƒ-~ø¾àŠûN‰>úôŠÑ©P0‰¬$)ž<0Ô~v˜¿tE$r˜Њ¥ß}7¹W>ÃÖëÑYo †ò²r·}öÙçÑG½ñÆï»ï>(Œn ùZެ߳‹úa™Ûn Œ(7]¾Ìé7ˆ§g4<¨ïCŸ¬r|ž¯Ã©ÇÇŽ§ÃUwÓà±’Âì÷¾¸õ¤£œ?ùaä…·BÛ}ïMüÐ2J‡ÚqV~0õ»¶ÃD¿x;1ò±›r‰f…RîµR¹}T¬¥”o¿êú}Á‚š5ÿ,ïg_„!o¿ÜÁ1æùó¯÷Ó• Â2ÏWÒóiƒ_Âmûì Ý1•·_=U?œòÊ©s–ü^Å»æ;ë¼aÏ9ã.Í[¿ÎYû–дuíßõ©4ä§ËгqçNôdßÏó¾YÛµ7Ö×úÖ¸ÏTÆ1ì™ëFA[ã>½©8Vlyy'N—øØ`^­?ûœ øBFÑ»k!½E-öæW‚üzDëò8vOt’Ì̃¿oë!(ð›ë„ØÎW£V8 k×ÊÝ»¼ì— »<ðß“;RZýèÛõ%¥å×þ¡mÃzûÆ­˜ ¸4»E³^1ëå2ñUãzCƒ«sˆÕ(ïã†BU0§ëÇ··{¬ÕÌɃ›é]|Ø¥cFöë}Å|§ÃHÙëA½–~ºFYñÃü­šº•¼;ß)0õë²r¿Y‹vÎèqÏ^~¢[ÀvJ3bø8§`ÌaQØ_ô ”÷—ÚCæYÝwâIP®M7¹ßu÷¡ -a¿CÁ˜É×=Óî¼g1r ׉÷-ZtL.Euq±Ì<La~þùçÙaC»Q@{Z›¾mØ´A0$|Iú.­\+ᜠzNºpØc÷¿²òPç±e½Æ31t3ZFéP|ûé£Ûýkщ²_¼¨qdE³Væÿ°::d,âMEÝJúñîÑRË7>7 ß?|,À·}ûvª•Ý1æ@:0'\‰Êé.óÃsýúõ¡JV]cÌúá²µ¿”Gqè«ÊoÎÔç›ç}})N\ð.šÅ´x:öøÑ®¬Þ‡ [k®Ü‘¨¦ó)ùjw_a“€6,ø¢¡¶øž›±òW˜0_=Xàï„K~ÚrãŸîÚQÒúк?¬þõÝñ«i­½j\û‡Ã/<%‰…2ô¢9TÀÕÚ(—«dáQÝ|Á˜'CWz—³-Y‰Ü´àEÖ„t vˆÜtÐßoꀩ.šæ?Ô»oýž…¡YÞ¼"’jªXU$r›R6⇶ü¦ujÿ„{¦ !ôá¶ÐÁ“û8ó>'7åýE“ñ>æEW’³½§õ™~Ï †2Ràë3­w;-žxq¹€þÓ‰“a·•Ÿ½7¿M‹æNÓ–­œÉŸ|J´U'Míw|Ш0Ëx?çÏþd%IÍžý½jr|óÞ3¯¾çˆñi˜Í|ÙDÿÃÞŒRÙòXËé ¹¸_¸çe'j}Mýù¼Éܳ¢ç™YzBÏóÈ %ƒÝ*€|“C§Œ4Gî|a^ßnÞÿýÏùã,ø9ðÀcб‰Õï3á1fÖå;Ì9û³ÔOÆ õÃæ.DùG×Seö¿ž1€qñb|°Ñ!yÎW3%[ÔÓÈ⋬Q§Î½ü>–d P6ßÒ§ñ:šÖ¶Øn0£ßy Àt ªxž13ÞÛÔH‹_‰îFèþÚoæ‘Ã4èÞI†2¶ç!æ‚Aµ^­ \^´bãµ÷MÛ´nÝñíêŒyÒ›÷Ÿþ·+»=|m78ýžùÉ®+g9Ÿè¡Oþy¯Õ ML5Cîsò^xÂ= N qµ#b=lÐk Á>7-sˆ©Ñ'kÀcªr" !ôΩí{…ÐA!_ô}PëafgÕj!z"ðûo¸Û¡ãLÛǶ\yL»žL…'ùðù¿f#þ=fh±ÃUÿžì[¡ù¤ãû^y[À“Z­Ñó|4žR0C£u»Ûœ½sfoFéÙ"“”šèÈÜóµqŠA?(M˜žTQš{œ&ù&5Â%„»dÔüj½mÛ¶·Þ<vÔ;ÿéÀÀ‚Ê18At"óÈòÁü6©â ǘµÃÖþ‰î­Z«ÞN—CÖ 6Œý†Nœ¡ÜèÒ[à¹69-G?{÷™IÇ»vm쑌üæ`©ÉŽÃ­X¶âDßCÌF8ö<"‡Îà“‰â ¹Øn°².>ç»\:xÞ°‰Ã¾šó*útu¾ 0j’üJLŽ ãÆyë&Á¨04žEGºø=§'.哦ÏÀaµBvðt– ª ξï—ý|Åí¯ü¶­¸ç±íî»öä½÷Þ+ïà½ipD˜ÈLŒ@ä4lÖá域ð.ÛÎÛ%çõ¼þ†ZÃ:”v³dwþåR¿7ï¾öÔwÞ¹f ÐÏk)Ù…@“&Mî¹çž³ú_U™n}ñ@»ON–+f¶„Ju ÅÈ·ö­ò.[×¥ÍÁ민€ßù÷Ç>xO|³ðŒ>_ܽ}£5CÎõÓž™zF·C·ëtiç¼uWœïü‹~¿Ƙôû‚ï­Â3Î!ͼ½1­÷só·òþ#Lxäò¾ª)Ûv¾øòË[‡e`ŽT¶Å•þÐZ™x)Kv„³;½€/Æÿ|~ÆØg¦ö>©óãC¹œH•üÀ¸ŽêÑCù}õU—?úȘÞø@Q†ôï=`àŸ‚Æ˜íðòîìnk;9àd€?ÁÄ=JNå®DvC¯Á¼ŽFÞ†Ïü…n6£B¡©â 1ò'WÀßjÇ×ýÀZP+ÃŽc¤CÀ¬Œ¨³eW¤Öc¯m†?°¯ûõЃêBY¬[²æýpÙÚåÑ »p‡ÚºoØ]À³¶W]Òûà:‘?ôé•`¹œ¸«p®òÂrby9ú› ìçØ?&¢åÜP÷ •+WÖ«Wþºݰ¦“EÞ¼yóæ½kUÚÒZ+aѺ§¾Çy1žùƒ(lF%Û•U‚?v¾Áä ¸í}/Và7" £›>¾”›“4LJž¹NÜO§Î·k£ÎÚ-šÂüâ9U@ë¤E ª _}ûÓJç4ÆS˜ªau.!Çývk”ÈÿùwðJ¥ix`E-i!ðÁœ€©M[¶›={ö™gž™'ß<•– +\Ylݺõã?>¬UûÊ2H‹Ö%`ÌfT U=–ØùSëÖÙwëoÆ‹â„Y{¿Z;‹KS£úuÖmÞy<ˆœüßiÙ°±ö>UyBs¨lslpÁ娶5)Ò+—]S¼*†ª›EÅ0¢õ¼%%)_-³E Òh‘ß!R^þ‹/•ì2^bRi.XC© £ËP.·íÐ=ኔ±U‘èî6ݱómó¯Û>ð€õ|/¡ŒéoqIÙ/[¶+–£Û6ý«ïY¿y¿úA¥…«‚ryÎç_Õžsµ›EÀ"u¨Õä°bþ›PÔÿ:®¬ Ã:dZµë? ‹@¦°•)$«Šx©Áš â ¼”}>áˆæ¥eå³?ûúƒ¿HJ Œ.C¹\ЭmRR•Ï OGU¾QkÑ" pþÌ­˜³¡—¬‹€EÀ"PE8µS+ø©"Î&禾’@r’–Û"P]0+fmþ••Q]:ÙÆa°X,‹€EÀ" ´°º±2§bö<®õ½\ A3–Í"`°X,‹€EÀ"P•0Šf}­ oXöÉ¿ªÜÍÖw‹€EÀ"`°X,tЋfµV†O¡ÇìƒÄ,‹€EÀ"`°XöÔjrb…çXnNþH`­ŒÐŸÂkZçìG?×ÌŽÁ–DÓÌ›A[÷q˵nÕ.wˆ ©œ\>öxéûŸÇ_OO*NfP§U•{Îj#µX,‹€E`7! UÅPóf>ùçºsVFŸ'þ9乫't½iÉÇ919]…3ïÌ9÷!SŒwߪÁs¨A•»ïÑC—“õ4þßÃgé¸ Úܲ Ûƒ…s†Ñò– º§ùºÛ·Ø†*µ ‰#PC±žvt¶¯Ä”xT–Ó"`°T&«W¯†÷¢Õ¬Y>cÛ…W‹—••Áç÷?ýn¯º±±²­Õsì'ÿxq:x˜06› `áÛoàð®ÿ,ž:„Vn†Ä4‡)tÖx'Çô-N€‰[±œ¡Ÿ‡ÊÙ‹€EÀ"`°X,i €³2`¼Y9»ª¢¥N¬.GžwäÔî˜sbÿîð‰;—¢à‡Cù>¯ù°ðšŽ“P÷„óðÐùa¢`vù©>Æ1fµSÄVºt\´R»# $“ˆßOª¹Q•lò›cŠò¹vÿ¡×µèž ªû5wxƒ’¾ùš‚IçþX,ECûÕn‹€EÀ"`°X*5Æ,§i(Ê~éËl;À)¡ý“_Þò„óÄUmnûÐô¾çN6Ái;¦è©áb5÷§EO)xÁòïÇ÷îŽs¶ôE©÷þžsÁØv™Ó†”D~Ú`§lÖÐÎc‹.w”³ìõîÝÆ¶¹¦a´ïÚܺÐ!bá0TèD~uŒéz[!jà¾Ðs=½QÙõyá„èèè–&cO½dÄóOŒÖq8Uô]ã%[>ä +£œjâÐ+ÎØ"T±Ñ0¿|ÇÒŽÂÎ[ôÃÈü|ÇY<¢Û)¯ÜóÌœk#ƒ˜m±ô‚mù›Ý{Œ/¢]'R,”è;3gO€¦nÎQ/挾S´!Án>šXêD¤BV…Úh$Tqïèu¹æs·üƒœòúíŽpœ¯#¨“‚êöÇ.”sú Ýn_\´h™Óš"e͆ÿÀ¦d4¿å³Ý±X,‹€EÀ"`Ȃ拵2À=ž˜¡ÑHÓáük‰¾z:()ºóòœžo.õª+¼¡ §Çxçžg˜'ÐÖÒ%+€Þ x6N?täŒMÌ”ÝJ\ÿÆÆ$v¶Õ"`°X,‹€E r€'×ÄÃkÒž[1sƒñJÀ´Üêy}tã]C¤ aåmí¢ù°“ѹ² ´’ÆIݰà~G•a{ÿͱËV2oÉZÇY;uŠQ‡ªqõ³ú¨ES¾Kg| cáCÎRõúš@ÿµÃz1ñ´‹€EÀ"`°ìJJJ¦Nº}ûöÝ`Ûš´d+zÑþ“˜ÞÞpN™øf|›žÀ £°/2=ÌÓÄbùš‹‡Üyׄ & ¼+zóé#.œ5¢GÁ+UíSÒòs¾t`æFAƒYÔ–?æË?Â0í´%0n}§?Œ¤'Œ×¤C€ Æ#qà]ã{BÕÎíM†ùŸ¯øH€ó˜˜öìq… Óíé' ?¹øÉŵÇ‘ü”Sÿà>ùdŸV5·èŸâ«Uj°X*X?îí·ß^±bìœuÖYqW«t­A‹ÀnC@Í9 ›u|éÅI^ɾÀ ô óz^ã_–|0r·y— †ß4çÂY0'DLÂΗöx>X*#$’Z*fçìœ-†XN?°_^ã>~Ò~4•ágR+7Áäx Ã'ý™[TôÔß!‹€E J"`¬Ç¼sçÎ?üpþüùuêÔiÙ²åGѨQ£Ü\ü´]¹Jv°u:=Út>鑇ÿ1é÷á5&¬iè…½/8È•T((Ò³b¥-Ù'8žZªã!âÔMî! +gw\Ö;‹€EÀ"*Ÿþ¹*—óòòvíÚµuëÖ””-Û¦vz·îcš@™’=*šã±ÇC t$æVé`:êS ÖÊU2FUŒ³2 0€Çþ ATâW%;fÍY* £ü…Cü£ ä=ØJû¸ñiA«¯äDñÇn‹€E z!p m™ˆ)øœ(¾ywl÷6#ŠºY2gxøÄËLØ}ÎR€5 C…S& 9w¼“߇ÉèFQušö!µKÇŽ-t†ó~FíXeÙ€TÅòE%Pˆ²XÎcFe¥l«Ñ»>ºÍúrÞþOç1gÄ%«Ä"`°XÒE ¿}· S Ç÷¡ÚUÌéê _:v–ËãU‰œ?¼â¿øaI•„€;Ckª(ÆYž Ù–Ë•ÔÖLå!ðØõ‡ êøÙŸ:~>°ãwœsQǹý;~uAÇoúuüöÜŽóÏé¸ðt\rFÇe§w\qZ‡Onÿãq‡ÿtTÛ•][¯ìØòÇv‡ýغÉòfy˼´Á‹ë°°í1M+Ï{kÉ"`°Tax&Ob€Ù98]‚*&q¨ú´¯D(ù}/Â’™Ú©`æÒYNÖp5Âd ï$wê¹C1lK§¾R$T´â¨z d=H‡¥e¾zØ3ÙNÖ̶þ²þdfÍšMœøü(µú>a=rxÒ¥¼ÿ——ÑV ?ü¿¤´ö࣠2ë˜Õf°Xª)XÒÂR±¯L]ê,]4^³pQ_žBQ4¯ýËÑè’1Ýœ¢p¶sáP˜Ì1æ=µhD›À*Ô„ õÏ[„“¥Ý‚Yñ>D)ps‡‡M NŸñÌ2mÈ„Q¡Ó®»µ¯ð)&>Ç,a7#à-šeÅ T_5½›µæ-™Fà®»î¾ûµ2P¨VÆ­,ÂÕr9WÊP%ÓÅ3Í%PQgÚ5«Ï"`°TODɼp)Ôº³ØS­Xð p¬JgƒŠÙØó¡Aƒ#êq_U‹s6 â?¤'™ а­haÀ#ŒbÜe¿å u=L¹¥g-ZyŒ3>ù‡SœÅ;¡9k°ŽYREàÇdQ®›_ýõ>} àŠ,jå2¨•Ëi\YþÀTË0º Õr Ž0ÃOÄŽ1§Š¿•³Xö8¸(ž0å¡…zÁlÂ@ÐܪØ|òÏë+6d;ÜÃ=Zº8}š7o®ŠfÐVX8 ›§¾ó60Ó|ŒòLº€-32hÀ™ÿáOÓ Æòô=±,‹ÀžÖ›0 ;aÄbJŽ5†wpàÙ9Âùù‹€©hÄC…ÃiEáØ±ðtÝÒ¡9â-»%s›‚À8qÊ×%N÷0s£Œ9ÓX1ðÑö0´taMÓøEÁ]’?üî!99PY‹Ù°Vxo ¥`¸ª5`Þ…X+C߉ªA 6‹@ ·Ývëý÷?M0À …òàÁƒx´¸ Še,”qVüÇ☪f9—™ÊeüGUtYpê·D‹€EÀ"P%€—˜|÷ÝwÅÅű½Ýk¯½Ú¶mÛºuëØlq[¹d6G˜a¦rΔ2ÊP*lÛŒ(ÈáÉP'ºBé÷0Ó“~bªŒc9Í…/2dûÝgä˜QmГnC†ÀŒë° æ‡,iß½\s «xÅ 59½ØÜÂè&Ÿ=ÎB †?MèŽy*f[.gaŸY—2ˆÀÚµky2è¼ôÒAPøBÅ|Ñ€ á“êcª–¹r¦ñd(’KU¡LMü/ÙyÌpÑžr®zîŽFµW •rÛÈEÝÛ¼rQØê¥îEî,¬þŽ(&úIŠ“Ë€æŒ= 0ˆ½QÄÔ€î»#31YÍFiÅpÃñ1¥´c„!%Á:mÓƒ€™å‰œ­ñÁ1µJ‰Š>g=žA¹|Î9çÔ®]¨|ë‡O¸ÄÁ4œMÏ@Ó¿Í›·|ôÑìd+f±,³nKfoMpeòKæÃ<æÀbÔ ´)å- ÿúÅqb´T(~›Â°Ê³7zÓÏh0ØÃê…€Q4‹'ÿø ©^‘Úh,¡ð‚8h ù•â~°á£}ø&+—–~ôV¿þ¼þjW M^¦ùÌü`²ó˜a}¹úü&ëÑcã´Áþ=/Ä¡UíÒü‘|†FáIî^"iª™Ã¦(z¬øÐI›…w !˜Ä75dŤP€2ذtì¨yC†Ì =[1ññ)€ŠD>ꓜ O“%ìÙÀ™«?î%–b¨ˆ¤ªôsF—8àx?övÚ~ÿ}Ûo¿ýþË/W¯^³ò§U+Vü¸lÙŠ%K—x`½ÌüIÍxèoÏÎ+}ö# æ[èå1Ž1ë1싲³¿#­‡‰#°jíf˜qqæ ]{יƎ£0£×ÂÀÑäîG"ŸÌ™7ç½—Ô$ 1£¼Ü)Ùºsç®;vŸe"‘(>‹©ÍÉÎÊ€¹s¸úQø£ Ü8:3O̤ƒ#碗§Þ¹QæçK¸;S°¡Ìþ£ )£„j!‘]+ís„#pÊbœHݘížE °oÇ ^€…tzCü‘ þf¯éàhe+Ï3MXö¬Ç å2TÏv&såvеVÀÚɇ5\ۼѺÖM6´kºáðfë:6_Û¹åê®-Vvk½ìèÖ‹k½€é£ácþ¡¡ä’Rgצârˆ™—Ãáh…NzÐ…åÆae, Û÷m×IŒ9Ã#'Úa©†Eig¬XOßX †kåúü4£ö>c¥}±à‘¾N 9—O,‡ ¨õš]oãÇ×]°ŒÂ@8n2Æ@¢Ò¤ ã“í$)ß6mÚ1ßq‚$­ó¤ D¾æ¾ÝÝÃÐWH؃ߎQRR’N"ˆÕŽõõX3.‹VÖ">X{×]¦Š^œ3œ©Tæ¥æÒ7e5X²’2¹¨E´&é9‘ÒhyI4Rìrà§|WÙ¨˜Å+Jp*Fié'3.û|ÚyEoŸâìÚ8¤ïš¯î³ìÙ-—œÒ §f@µLOÿ%]1;ùí:ñ_w—.Ä™|02L+î,¸¨Xx.ϸÀÇÆFQëáL Ï*ü4œ|·oÜÆ·&)u¾@¬å¿dÌï-™1ÆQ4¯dɇß]€Ê‰lE}ÊžÃûö8š6„—¨ò`…/|à=Ü£À’Ù¾ÇÒìfØcàÇýð©?Lü¨“?¼÷{ 6Ð=XA™ÞãW¾vs³U[¬ü¥Õò_Ú,Yøâõ¬ëòíÏÝ¿Û>°à”cï¸ÿñ;|²×ù×@QüÆ‹_½ôüâ “~vvþ2fRí&6êùNP.Ã( ´â:0»#šôZb*3”È4¦œßWÜ“˜ÍÎè6f$=³‚3.øf'q;wŠþW®^d¼Ò>ÌŸ–oyÅ…’“Ïœ±æ?N¼$¿iZ6èÂV0Á°¬ f.™EýbÝÆ¼L…¾áI‘¬¨FÐÍïb9æÛB£ð…ï5höpäw½ “Õ¾cOþ‚€|‰‰[1Ûï{H×ïQa¨pÔ)ω⫭[4mЪyö-óŽhÝäˆ6‡vl{X§#ëÜ¡E—Ž­ºuÊïÞ© ?'~ÇcÞñØì»ŸúØ)ÙP\\òðësëÛ¾»@®5õ2nIÃHS™ ÍãÚoà §-¸S±[CËE÷ýõ²þwä˜ÊB©>³æ¿GX,Ý5½wX÷!\]•«iz‡—ûü£’ÇJÖ·}\L€Aç¸oµd‹@|¸d¶oLj”å°TCôÚX­•¡ÅikçjØé{hH»JËsÊq&†šž#ÎQ'B#¶ðt”¾°ƒÆ?­ß…Ó3ðµ~PdÖão*).)/þèÖ÷<;zŽ.ó*åÉÿï»# F8°0n0Mcˆbs½CÔÌ틪b ˜múe3¼Æ ‡¸c R«9ƒ•¡·úû»@Ÿ*™åj!žY×D¯cô}ÀcÎûö3 u;ŠP1Û`§®ïur {¦ÀŸŽøíÐÀ/|†„ò3䜵Ø[,» O ¨ IDAT÷.¯Šb¬˜ÕUÉ—»-kØ"ZŽFw9QX ë`XòÊe˜Ñ …2TÉ0·Šfxã5”ÅeוƒAé²RxÝ,¦1êÙ–0Þlëjðº@äÑe”LzÃZÏqŸÒÃáb5Ù!¦2í5LÅ5è°àUS!Ôp®\if*Ëçá8}q–GŸñŠˆ3ƒËmT"Ÿ¤ƒiÏ4ÿ!¶ ¶:r Y«Ó±fð>”¨~wë´ß[ #ÏøÝh8h`õÉ´NÒ~+€·°ù ;‰·àš`òÉ?%; Ê=´¸§®Û`ž)¢ðÅÄžâ¸oÇ0ó3Ûàs–9!çÏÖ0z~K³X’D@/‰¹2ÎiجãK/NÿêLU+:¯çÃÿ²ø›“TnÙ-‹ÀŸ»oÉ>í趉›õßù§üߺh´ôÛŸÚuíоö¶¤dçÖÒí›Ê‹7EŠ·DJ·ƒž¢·þ²r]É‹¯½ôæ„ÕûþÄËJ šŽF·}?tÂó¯¹çu.B;÷ôÙ;O%â€å B í.‚#$mi‹@zÀ ÿÞyçË/¿|ÇŽ0 —8MˆD¶oß±mÛ6|VþâFo?ÍoÝò7&÷êÕë§M‘¯ºé¹f¥-»¶Ozxì?&M~Ÿ]Áa© {_|É ñÎ?wh™ LÒa¥±åÌ["ÛÐb¿í,¶Fl5µÅ}(äh>½âüзHø,¡ €CË´,LÏ€ÑeHÔOɇAeºCàè2.´ ‹h”;exß¾À„fÆÏHdëê1ήÍNñgçϰnÆž-âõð à´5%À\³¦ù’ù*€ˆuÑ"`°X,8è³2ľ÷ &©ÎÈXN[Ïž=cÍð·Ò‚)°¤–x‹­¬5ÞÉï3'šè»ããè6Ë·ob<´Ðû8R°|Ú)ãn›²ÔJC ´¬¯x߈êm¨~ÀrpNùÎhßq OëÁ_?úGk|Ú‡–éÊh`v€‘ÿ IƒËøv@ø?ðÆgy&ÓÞí‹‹Þ3á#†¨íÑ«V•ÌÙ¤åó<[ Ñd²Ç‹€EÀ"`¨àîoŒã“9N§ Ñ8ó*Â}¬[·nûö틊Šb½Hò§âÞŸ¤;‰VÄâ­ò! µ ­ñæ0hWoX3šÂö-ÙLž 7•ìÄÅ2 .žü—Ž¿nÎ1—Ï:ö’—íÿÏcû9¾ÿ¨›¡N†¢ºÓi—tî9¨K¯Á]zîvÆe]O¿(ÿwêżnFëî}Úw^ûû׬µï>ûì“Ý¡[ï,‹€EÀ"`H¬‡¡hoöC%5ù%øÚ?ýe€)ÎõêÕã¢9|¤KfòS2ô@øMcsüƒOžhñý^ã‚Ó—ÇŽìã{Ý3ã“ò#p¦1 …¦àÒ‡ðhæäKÅæˆÙ#óö J!erƘËwA5̳–g=Ð2ÍÁ¡e\TΡ±ähy}––~ðÚÃñr2LÆxéñQÍ›7‡<ä±D‹€EÀ"``ðq"gZ"3"« by؉³’óFwCì‰"ÀoÿeL1Iékˆ©>©F®y ‡’i/Ç}矨£a1T'3£B˜’C¹Ïú\Ä•-á]gø¢0ß›|3øþ$~G.ø±¤ý(5r,™åCaæ_*æ ĪðBk`Þµy!LÏ 9Îé·.?uøÜ“¯yï¤Ë^;yàS'{ÚÀ‡q¶sÄÃÂúë£ïõL\¶Oû…Adé‹€E@ `Î2d^ðB퉒þ·âLÛÁ‡_ Г¡ð…O‰«ÉLš3ÉE‘óUQ òVu1Íc–djM½`†ujæÏŸß©S§Zµj…„%󀩅Î+ÎE/c¸ôì͇( ]àšéý^}ð•gB­¨Ô±ž6t|‚‰˜‹oÀrd5›¶n;õ°’²FùÍ¡Æõ1¦ÞÓÇ•aUf`†]|‰ ,”OþÁºË!ÌÁÈË˃F;#!K¶X,w‚;üHgÀ€©K‡‡ü!xOË7V¸§‘ýqÓ௘ÉÌE³ö–ìôÜß¹sgürM`ÉŒ¯>«À÷'i‘à€1%hÈ‹— l/6SB4Ùºò¿§¿•F`ä•çÞöç î¾áb\aÖ£ÊËex ÞZ;4ÀŒo6‰Q1ÃÐ2 0Û1æ`”-Õ"`°¸PÁÜ7_þI™h˜sìP^Ò^=3¤ áhmüºRâ/D ©§‹¤¬‡ˆ@¿!óÛ‹Æ‚¤ûÞSsÀ×/ Ž qèPð‚äܧ™”M‹ÛªŒè$ÝTF›K!„˜p}’º7d/ÌUá 4kXΨ(hÇß#Ò+j3;Ê«Ùõϳ´›%¤*ÄBe’õ×úAŌӚ£üéŽB'7‘*‰Í›7y䑱F—eˆX‘j¯>s#—øÉ7¥ñþ$õ>4|·ýýÃÿb0ÓœrªhïKÅ*³s¬­ŠA¦gÀœ‹•ëŠW¬ÛõãÏ»~\Wüãúbx3öÊõ»~ÚP²jC Lk†×ýUŒq«Õ"`°ì1ˆ‚™ÇÇp¦ÜŠF,<Wšïä|H’ÔZ8oÖ´4Ñ4GŽXå¼Lü rЮWV2àkGŒ] +MÂs2Ç~÷ S„m ÍV.d™^4¯=X7,‚?ø nøªT£pô{ å  äuOÔ£Y.‘Š’0Ê媡Üïª >µÅ`áè_ 3B‰¯G\¯^v^™ \;^;f$ÆBªõW‘žú30rÔã´3ÖÌ@Âùø½$yÚ´i“ŸŸ_£F„DÍ•7J©|ñLŸ«ŧüp¿Ma|…¯¹R•.¦”ùMsºž@ ®_v¯Ê!Ó3&½öVIY),š¯Â†Õæx£2X­¨0 ]åâ²[,¬B€§dФKenóPápñ’ïncFÒ½^ÍàŒò¬ú O69EÄóúðÄþ¹Q·1/Ó”äŸ×¾/©ôÈJ^¡½ì¤é…P½:…Sæ)K jƒ-P¶›øã7ú3än®uýÊýÞ.]ôJÑ»“Z- Ô„ôA:êð³U¦rÝUº|1œÍa*=;¾qà³1/sE† Ž2…xÀ:†æÀ¸øk¿Ÿ¸ªLÛ•}ì–ò.ÖÞù§='é,Æœ¤„e·T*0=£RíYc‹€E`OD½**rTñ pÙ ãñ%ïti,ÓóY#ÏùΨy¾Ç¦4}²qìÑ2\â{².]W " g|OmeÊ6Œ'õ Y »TÃJ&š`îLÃà*]9ô̤ÔýË„sV‡EÀ"`°X,U˜K§ñ¤žÓÐMMŽß5–ÂãCEbΞë[™–&R?ôMªöÙŽ)Kþˆ9°î¼žXWî÷6…ÇŸb›ÐÝ­ÜïLÈS[>‚ MΘÁ¸ –D4Æå!UAV*MVÃj­ dNò4V˨ÔX¬1‹€EÀ"`°X²,˜=õ)ÕJr>q¸Ÿ}Æã|â6Úójá¼nK·N  Î9æ_˜ŠÁOþÑ5L¨è4aB'ñ3¯F¿¬ÞŽþÌ+ wp~²6œŒ\~oý?y= ˆ&¶ ]À¯ÜtÕÿ©-œ¡¢ÁàŒ"õO³Æaà\4Äà Ðì×—/„„Tù•W…F’£¸&€Øp'§aóÿ{ñù‰Ï¼2ƒ‹h˜š1øü^ÃGÜ´øë*Ï5kÉ"|¾XqvtÛ$,‹EÀ"`°˜¬^½úwÞ¹üòËaMجT…¬‰lß¾cÛ¶m¸²P,Ç åù­[¾ñÆä^½zý´)’eW]˜;ª=?ÙoÆçÓ”sýïQIHÖ§5D™¯šði½…wûÁ«&áÅ £m—“Çüão_O¼É$7犋Îø§ÁžùÇiÌdŽeÛ¶Y,‹€EÀ"`¨TðE*âià ØÅñs\«vÙpBúžo`·Ê ¢QT̸¬µÐ@t  %Z,‹€EÀ"`È~hõ_˜PÁ«m¤é//%\0O¬Ý‘¦¶¬çPqV¾°²ßM˜]ÐpYÌÓ3Ø3µVÚr9»ºËzc°X,‹@þ…eu&ßz² ±e}Æb+ó±WeÂjÜn¢áã(|yPµ±¨˜sð &ØfG˜ã‚h,‹€EÀ"`°Xª-ðÚø #ï)áYHÄbY<h§eTÛ°Y,‹€EÀ"`°ÄEªbš›!ªb±ºœZm.®| ƒX–.°M#ƒ¦žwM±x[¼ùîòxšôvS«ls§ãx¬.;”_@ï¾r>k–×"`°X,Ì# ïæx÷N©*HY0ó±XÕ(˜UÑ,ŸüC†—Zé¼|ùò÷ß_<<Ž. ¸Ð}Ç<¾ê–Çi3™ž^ާ .‹"¶—©òýAøÏvùø†ž=è™×ð.Ùã[Öýò몵›–ý´áû~ž÷ýª9ß®ø_ÑÒ?ÿþ—Í¿ïñØX,‹Àî@ ¹ª@5KNpw„fmVÜee&·EÅÌó˜i†˜®‘TP[¶leöÙg%%%±óÛkK™‹‚9ŠmKÇ€õ̵Uó‡‡öÀi…+áêÜmFL€ÅÒSú›¢SV,û€ryí/›mT¿É!Ò N^ƒ:ðypƒ: <`Á’5¶hξ³Y,‹€E ²€ªX›Êì]YøJÑ\·nÝöíÛÿ?{ïGuÞýÏJ²dÛ²Ác ±MV‘²ËmÒ\ XÅ…úMx#µNÛ¿r!mS-©ú& Šry¤÷}ÿ¨Ô–æâ\\‰¼Ä„„$­—#ŒÛ€/ßm]÷òþžsffgwgW»ÒJÚ]ýËzæÌ¹~wö7Ï<çœ`0˜I4;wÿ‰ fû1îG¡<&œîñc¥{UHçV‘fÃLlÓ‹ t4Éž=M؇=–wÓöt}†¬' ˆ!—¯½rM8‹D£ø+ö«WtnÕŠæcRsþ/^<žhÉÜ·[3\,ÌX/–a’¶¤tvTt¯ìäØ&É®!í²Û¡~úd¸›e‘ÇNžÝøèµW®V»]Å*+*æT”Ï­¬˜?·jÁü¹Õ ç-©>oéù´4ϲ¯»K$0in¿ÑÁ@›±le+ìFë‡Û52©zÈ^Ù¥Zÿê›a'hÔÖÓdÔ‰%,A7ô6ËÖÙ*ŸìwmËã` £VÁÀfË[sÒ}f%J@ñle,ŠYû0ã‚>¶gN€@e%´G….Ê5;$³±u{~Ä})ªV|6âßk×ìiÞÀâ¶2}pºK›©ôýf}wÜ'#­‘:}¹¼R"^yõÈ›k×ÀLQ^æÁwvÞ¼ÊÅ‹æC"/_V}ÙŠóßpÉk.»ðŠ5Ëß¶îß}ô%ÒgvƒH€¦€Ëot¹÷‡·¥=>›É52±}ê‰q{KâF{.å§ô ÃyR’*mU±˜Vehó]J^FXd§h¶lÌj]9S3OÔÐŒêwíÚåóùªªªÒ×’¹óï6$m7)>û±-Fc‡ º·ÞP÷ui*qú~Ä“HéÈ#Þ=Mê†4“%;MÑŒ.¡—E"ÑѱðÐðè¹Á‘×Ï |}ð8 χŽ÷¿xè÷úž³ýÛ½/¼ør‰ô™Ý  ©&0Îo´(Ù”à™’JGŒS~š\Œ& 8Ý.l+°5óë1GQ^ëð8µ /—¥ ‘Ìú@ª`Ö@ØBת[?Øœ-[1|8ôåP¿¹Ñ¹Üz¦k’ÜQ”÷suvª§/ðÉÀ >,—Á0‹ D#ô~phô4´òéÁã§Ï=þúác§ŸÂ}ß(âÏ Ž >Ó¿oppxsb×I€H î¿ÑAy´Œ0ËÈ52±.eÿJð¿t/?¥…Þµ>£{›öºu¶©u¹H 'ÖºrñLñ™j#@L Ì©@3ñ‚ Nœ8±nݺLÖe«`F]Š…Ùv·À:>õƾâá¿ÍhÒÙý­pƒªALc¿/)áÚ$®Kjr€$66èç0]²ŒDy?é‰ôŸyŠ@8Á×sþÿô‰GWœ¿ãÒe¾ù±päð·yÆ·ú¹uÞc?4Á]lc{I€H`†¸ÿF×ùúåé±üº÷Ø?¿®‘IÍÆÏuOýæ#ˆÌ¥|Y·V’$,àï²5€8Bó7†¾Å\­¥‡±óŸÙ s—lÛº¬ÖcÎÙ-£¦¦Æëõ–——gGü#Z)­Þ½ðçïJ(AfX1æ¿É™•:v»yLM˜Uã˜hVˆ„eÊt3|3t‡÷ÜݺðOß¿ÿóŸÖ§ˆEG±nFdlVa'I€H Üzk[w&ý¼£ª”Hû×Üù³îÔÈäR~‚R°õ€{B[-¤Qy À"J„ô0Ö–ÓîʺKqsYnᙳ\F,Æœ­\.’ìFq€Æ7«ÈÁ®ŒžT­¼ ïþ×—ñ^±b%ޱ؜Èå1Ø™% À¬! ÅpÜÀŒŽkÅ,d6ÈåÜ71¹öZqæ(ÕzÇPrÂá0¾í¶¹ò’Kñ:óŸO¡£Uo~ Þ£Ñ(®ŽEÂðÍ(¹Þ³C$@$@$@ ¨™}Öô>ÑÉÎõ˜íi9š™÷;µ@]‰¾Ð;†’#Ó2¾°°Õƒ‹Æ¼õoÙýÜyï}Ÿgù ÄÀϪ—á˜ޫõRöÜQKê…BÍ“´»žci}Ç*üiÜ—œ)%g×fkµ©$Mé™ špÆÌÅò* k„X­Á9ÆÚd¿öÉ¥Z¥?Ø ƒJ®­€ÿƒÌ J ®‘¹–Ìô$0eL³S4›ŠYìÊ18lÀÀ,‰&4ûoʚ͂I ïÄÆ ?feHFáKwWÖÔ.øÛOÁºŒ˜hhì(²9Oµ×Õõ%í¹ƒ={œ ¾è5åaùó"? 5ýí#a‹±=uÁ}LïkjJ.9Ç&‹Ã_êOZºB¿÷¹eLW ãI @ Èœ²þøFYæÆ[SñµÏf°($6‹J‘€Ââ>aªb9—™òc¬Ý—å@ɇ¼†Ó§Oçµ¼i-¬zZkceÓD‹`àË>6Á@õ•—ãÅ÷?‚µŠ¬Î02c :qÌÈW›|>Ù½§Å6¶ÈÏoSS·Ëò¤ªÆPg£ìYŸãígµ›„ÅšŒ†-­Fc£³ä|µ˜åÀ,' ûjmëíò«ùbJ0'ÎNÏž¬{žêb1$@ã°e1D3Rkul{eXù–Ëã·‹)H`Z>z”ìyåÈó/¾:6?fryÌôÊ)€úeÛ˜E<#„#}ÏïÇn&OC?ýÍóGOœ™pck[Û}ñ}YÅ8ÜѺ1mi —¦K¥ó¯µ•¦N¦lÀ½âð`9[¸FÚÅ:Ç k_\3ƒœã ÛmÚk992:)[N"êj§™Bné:Îx˜Îý°L 3굿öIƒÅ9Žâlj#È­Ùã vÔâêw•.Þ­ Æ‘ äH@Y“aNV.Ç*Ä×ʰ‹Ê³…9Ç&29 LÈåCG¯¼øüK.ZrÑÒEcaecŽD*¯Y¿â‰ßUékÊi9*>·6–ýûÏ"õÀœ?%˜#Ë—.B– —.Zºdás'!šñŒ×^T?uÛK%CU0S6’O&c f½/¹E€J ´[ÐÃ,_ÞØi>UvL*¿Á²x©ü¥°6Å”•›$ô4ÉN8ëi2”I §½Í²ÒªJ(Ë Úò8èߨsãw Éýà9 *‘Ìz3å¸`¶Û ¿*óKŸiÙÄ”¦£ãö4ùM$0m¬=ÿ ¢µá™NÌÓÆžMh\Èåk¯\M<2 ³²ì½oÿ±Ý{ ì;<°÷Ðî=ŸßóÊî_yþÅ—ûC{Ÿ í{>´wwh/R“DOË+:·jÎdD3Vß×.ÇòS«öéq„¸³©E”n¬lÁln¥¹Ùvs®ëØ¢ —]€ìR\#ËU¶®äv™&2˜–ÓÙæÖÚU+©ÒV½{ÐÆ&C ô…ð ë¾â)ªV|6âw‡iÛžÍrì¦ »&Ä&¶Ž{étñi[À $@9Àì>囡<™U0w0˳iv¦‰9g¬ÌPÈŽ<»ÿðÑk¯\-{–Dc•ø¦ÃùG¾ß YsY­‰s²:Õ¾øGü˜1p.ò”•UTTÌ­„çF%@4_UsÉ…ç/̹ãòóÛˆ |[û:¶dvˆÛVÀö t«H&OÀ¾˜š\”¬‘ìúáéVâðÛ\oÀvì—£Æ4‰M¥KÀ³˜1´àƒÚ#CÉ×`“sÊF6#(Ý`7÷à@›×:wªM_º{F3E@´±µéŸ¥˜•\Vjz óc³øKkŸþé—›=Çùö §>ºnÝwßçˆÎ‘Kr©Vö=_½nݧŸQg×~qâÅçØ&/4¯¼zä͵kЪrQ^)_øyó*ïùT³n§’Äê;/ƒo?öG×®Õ‰]{a'¾bõEHüÑ?wÛlÒ5g<XŸ§>{ròjKÉÅTë©÷@®š&çPg'æ Úuâ!1J‰/q!–dšS µÍØÌâ™X«úånëlõÛæïPP[Ö¤(£!¹‘Ö¹w­Ï°ô=<´»›Ú3ߤ+‡ñ$PpD2פ³¯ÆúÆÝ!Û³²clcxFú’Õo°6ˆf­–űPu×Þ%Û’ËS(˜›6lº}ûÃ0ócÛÙ´á>ãò›~zêÎ<³WjùMß>uê&Uðž¯~õ1ãN}œçšX\¡½|ÌwÅ*ñ¯ÀÿX–cØš#ÑÁ¡‘3ƒðÑõãà©=±_xñåóÏ_š}â öžuÆÚ”åI]Jƒÿã@íz87ëk¢ã©D078e·m§Bš:_#ì^8‚éËÒØ®‘IÕâ׿§ßcÚ­•Ù¬µ£­FÎëššêtbxc××#J.ÛÙý]VS¥¡¸™p!À((jhÉÛä¶ÀÝÂtVÂ`«ú.Wü—° ŽNí2‚’‹‘óLƒ£Òõ4]¼[ùŒ#È•ô0–\Ö&f¥™mÅ,»gã¿É¸1ïÝ»÷öÛoâAqºpùÚkÙþØ}7)íj æti'¿ç«Í"—ï³%òåwÚvíIˬEIJí:–%–±œ,‹1&ÞɘއSìØ?88ìšøØ“?ÃòÍUWÔFæŸçLœ üÚÒù;gÇ;8 6¿ºT•šAÒJBñf®mÝé³fö”H×Úež’ã÷Ù¥Îñ~¹'´{Ú^—N1Š ‘@òwÛú2{Ç šž06tW’3«Dnw”© ‘ÛD³‚€ü˜ê%™å]mkí\+g–-k"8 —,Óuš.¿ù}"™ÕU%˜µtþ›Å×}¦g˜‚¯[¬ÃßH¸[èø„cÄ:¹Ô´çÇß}Æ,ÚåªÔ¢ŠOéâ“Óñ¼¸À_}ÙŽ$ùÏÛoÛq鲟¯¹øW5+w^uÙ3¾ÕZ=+Ý<&öfGb86¿ü‡ŸºfísÕðBsã³ï¸æØw¶¢;qqq`kI€H€H€r" }–µÃ²Ûêr¦ÃFeB.à8ÿüó.Ì<J$ó®¨ã¸`¶ëyì+G qópJ+nºO'ùö¦G¾¤t¶[¸v­å+ív•q³‰]ÆœšÕ';c#T,ª^øGo;ïþxþú?–iÊ%cTV—ÃQ<ñ‘'úô'ïŸ^|£‰‘ñµ/ß}î¹ßÛ‰gEö•H€H€fÛ{9ÞeµçŸœÊôÄ8Fâ4¬ —/¸à‚%K– ¥IbFC2Í?ÞsçÍ¡]×®ýDbZñÙ¸ý:çÔ@ײ`d¾ýuåÚ/º&@ä3»ãîÒvÇT@c±”°I{n¤‹OW8㋊”0¾ÝðÇeå”džWû¦Kïÿ7,'RY6.ó³Z2¢9žøø“?CâòEÕ+¾ôFNœMñŒ..˜Ù‡o>lÌÅú†ðÌožê¯ó¼uí‰ot)ofqÆ€Z†»…3ñ™]Ï¢§s×^#4„rõßfº IDATîûÿ*vár;qqq`kI€H€H€²$ Fd1#Çuq|—ìxt.îÌïÿûQ7LˇT8{öìxMÉüéÛ?*˜uFÈWHZå¹›³²#À‡C_Þ³ûíq!ÎÊ骺üÎÿ±é‘Û²[­•Á0; (¡lˆEQùê—-\4¯î­UëÞ¿@Ù˜ef1/×9%1Æ ÊÓ⾜˜xvòd¯I€H€H`6HÍj­ % ayÖý7ÿÉÆÓO?œ?ûÙϲK.©Äì*˜ãî°‹ýÂwñíÚbÓ&]ÁMŸøâ—Ö­[üiãÚM›ÒÙ˜‘ÎÎO¯½nÝâÅ:—¬Çl7šü>·Ö¦‹wK˸â! fcø1G£ÃÚ+£êŠ«.¸çq_Ã3BT®jÙìH\¹ö*ã?Ÿ=¸rzä•WN¶~¤üšõž·\ûƒ7ëÄÅÀ-%  È€VÅN²c=f]ŽÃþœCÁ9%/çÌ·jÍŒË1§/QËÊ,?+Æü79³RÇn+-§&Ì©‘L\*`8;1lÌc¦Wt³ZC¹/clQÎX§Y¹5;/Üð¾ã?>tàh[ òêÁÈბ¬¸¾úZ'.Bì @(íÄl‹fË+C'Óî͹ú22 0˜–ñÆ"X C;$)G qÆ©Œ—Ú [oíLl,»xqà3ž‹FžÜ=.V|ø“Ñ7xíÄÜi6H€H€H`‚´¶4ƒ¹¶icÖžH1 &æ 6ŸÙH`BÆÂÊÆ m<^ò•Š×2|0d±9˜!õ¶&r NñÄPØ•ï¹mÉ :üôoDV¯®‰ÌïL<¡æ0 @¡€NšÖ§3ìΈ†¬Àe9§‘¹Ð?H¶/{pÀØ·ÿØî=‡^?34ª¶)‘ÿÄÆ¬°u¶šõ'ÛhczŸkâIâCG“gߦ$  ("–\Žï†mù1[¶eYLƒJˆ\“xäûp·@P*Y¼•ÅC+Ó2þcs4 wç—$v…H€H€H Nz»cãÜÆ–bVK4{ÊÔæÙ¹¬.'ecEŠŒYª‹ú#°ÖÛ(êNÌæÆßó©æÙÜ}öH€H€H 'PÊZ.C6Cáj×eS1OÊ}ùäÉœÚÁÄ$@$@$@$@$Pø µ÷…mcF›þ9­É\øÝe I€H€H€H€H`\˜Ù‡4æÄ¾D?f1>ë˺Êåqi2 @)P+b$«a±1+Û²yA¹g(ÿ     ˜]D§®.gî`‚kðl6½™'åÔ<µP{›=žæ^»9M ë;C†hõ/ äD@Ù’“äp\1ãªiƒN1DçTË&u¶õ55õµÙjØß%‹HÇb=MF]Ç€ílñNaX4 @ÉHÍ¢˜•³¬ža½ ChûV£¡µµÁغäýŒØ,   (n¦ 6Ýt_Lsáûc†Ì¼Þ ”ÌÅý=dëI€H€H€H Ð (qlûfhŬæùYqŽEæ ©/¦`6 JæBúXØ   (M_f¥˜e;ìj¢vî³¶6)´žÛ‚YKæÀæøü¿Bk*ÛC$@$@$@$P¼°¶¹vœµ8³µƒI¡÷©ws 4j<»¡Ûz»üþBo6ÛG$@$@$@$Pô”bŽ©m³õÂÌ…¹´\ï¶n,†_#Ô¹¾†’¹è¿}ÓÕOÝCòň•É{´L^ö>–xEÔ%ý’cDêS•1xꢞ~}ºšÏzH€H€H€¦›€,"gÖ)væ¸Y»/ké<ݯ>Ì ŽuãàË\È$™ƒË ´Ç«ˆ×K•@ìÖwÆ¢òŸQ¯ḧDŒpDŽå]‡q),ïaý®®êKQD"—ùZ}ºTA±_$@$@$@š€C4C1‹~VëËÙx o=f¬»œä€ámÙ阡˜t]–iîâ§M©ÌûB\p|}Ì!`ßKZ—Ì!¡Æ‹#yj©Œ!  (%žø†%ª[(fJRú„Ù—l$}çq*ÎHÈ1廡F†90TŒU£Ó8Z²áË4$@$@$PäR¤‚¶1'ô*nl.òβù$`ðüðÉ<ú1, @)HRô1—ò‡Í¾Yîû»Ë>¾éf'Ø”eSuX’•K3aF–ñuVîÊ¥Žñ¯v{fÄÈiÛ—;H—H€H€H d ¸Û˜¡£Ë`€ãç’ýÜÙ1'ïíۧãÆÙáè냱蹨13Îâ=j ư ‡ÃÇnÑrï"–ERû÷¿ÁŒ@   % ¶(±ì̲e‰íÇœà»Y¢½g·HÀÚÚÒ{Åš±Htx,62‰ÇÎ GώƆ†Ãahåì¿ðhôÛä ÁQFèp‚™Š™_&  (]N3²<’6Ê̵æDJ—n·Ù3P´3B/ì}éÅ—ö¼°ï÷ý/ïúÝK/þ×K¯>õÒ™{Ãÿ÷ã§/¿zÙPéÅC¿+é,Îæm̽͞æø&•8[ß²>} +Œ;#“>/¤±‚UŽdÐÁQ²ÎæH¡Ì¤*27 )1OI`vH«†‘ÍhŸLr©VŽø Î~àŽ_S LŒ€ÆŽwìÉ JRò™ªybT™«(¨ï¸xV|þ¯‡¾}^x㙿{ä—ï|ææ37ŸzµþøIÿ‘“õ‡Žû_9r :gçXÄr_ÆV?8‡!˜#9uÙ¿±©{›%™C»ûŒàÖí¦dÆY]­×åã;ô$ò¶ª†Äb=MÝõJ!÷n7¶$Æ$äÁ*äru Ã4ÆÅy¦6gl@JÆt?ù) AÅL#7ØoßÝØ i£?óh`wE-×ô·›=¶ÅؿǞ`‘ÌF$0) j2“šä$B­•Sü˜Í_ Z›'™™ €|ÛE/KÓÂØ 3ùŒØ• OØ­Mñiþ³Ëj³}š_xéF55;™HÈ­ÞÚº¾Ý!Ã]xBÛ·ú::úägXŸ [›ó¸•ëõZ ðnl“$þ–RbÚÌ¢Sòz[Ú›mÛC--ãÔ’“$@ €‘‹›Ý.¿Ú@ æ)Yê?ÔÙðõĺì}¼³üþ‘ÀLPÒ8ÞYwÖ¯ m]NzŸÉv²n˜¦íFîÇÂc¢}Õšði^õÆUËßð†‹ßpéÊU—®YséÅÞK®½´âM—°Ò¸f¥ñæëßó#±4k¯ ±1窘74Ú¬ ÁlÔnXë3mΡþ o­ÈYÛj«:M7 ‡÷†45ÔÙ¦l\Ž 6ê† ã b)¶¹žÊDíxük9u8ÌÆ.Î(¤¬ï6d[M§¯‰³Q<&! ÛËZχL 3zf–¤¡â|ö?ÆQ:*“þ*“¶“jIñ½’ëéâK„=»A…EÀôcNñÕ(¬VÆ[“êæåü ¥ÓÅÿ:á”럙BíÛ5…´DV:9ƒbÆ4>XŠÅ朵O³Þ$;†^ÎѲ|­O?Ý õ¸° ‹ÍÙzÊ›Ôñ` £öÁ6«g³æ7_žÚÆÍP*¦©ö´dQØq=ì«…'ò÷6׈AKûmôÕ'Ér\ÝÚ œ:b=F›øt v; ù±§fO“¡?3…‹&" ’YU·ÁÚ»ÙH™†‚lB«Çs·O®A|³H€ ˜@³zt]hA4C–n^¦gÜé³ÐúÂöÌy¨"«/í"–µ–£toö>ÍâÅ¡&*Áœ£nÚ•f*eSöÖŠÍÙtbN¦Q×ѪìÈâq¡¬ÅËXÂÆmÎÛ@­|ÝT«2{<"ŒãÞÑ–vGjË %~NGMÈcq³ÖÙaJ–kÊ–^–'·žç$PJ ™Õó!·Á*>Éwœ.}7Í8x2“>$ŽB3u§v×+3µiJŸ¾x^!ȉ€‹V6fCü˜•¥Y¹7`psóJx8íÖæ¸àp»Ê¸ÙD@$²åÊŒÅ. ••öÅ4>Ó§“üÄð‘y~XENÞõ+bìzþ R ÄF-¹sWÌâÙ·»wwŸÖªò3Ü¿ÙxTÄ?(ÇW?šõ†ÓóÑùqZ7™,_>þ&m€î¦Ç3ää%(5Z2÷º Vu'»ÅhÌô<Ó¨KuiØ8}?œIÌ;ed4‡¤9Óŧ)žÑ$@  Ô°Ã3þL…,>Íjæ̙ݼҠ€=/+Ï4Ù]B —õ„WåˆaÊeèf§O³²"ãRº‹aà=Á+Fý¨£ñœùç—±¥G ièÆ;hÍšû“r[2…¯<¸Ýf`|Kð·šÃ©±ß—ÎÆ,ɺ`ƒ6G%²7âQ1]oŽÓÅ—Þ'À‘ÀLPnqÏ {Ï?T­¦ Ó̬nݳ›GÒ;[ ÌV²Wš Ö¬³(/àøs7Ýþݺ¿þ‹ÿnû4ÃäÓ²ø7+õ,ÐÍçÔŽÙ²I¶”€%™s_]NU&RÍ5áäTæÅáLÿBÚ:‰ŠLÈ—ZR¼uä,Á¾”™Ô3•^µ#¥¡f™1ç²ZÒø)Yf+©/<% <^¬ÑäMÎaäÌiF¨ë¸+€¾³ $0+ ˆñ8fšÅwÁ¶1‹ˆv®˜Qh€Ò¹yeh§·eKG%g 4«.Áã_rí˜ñöîG¿õõÞ­_ÿ-_wú4k3fŠ3ü1``ÆV%›iƒ•øl¨ýÿÄÖæ âïÁÙú%ö¡²;$@$@%`©bÓÌl®•Ò´Ù~ŸhùS–o"n^ÈãËvdz)k8 . ¶’WMàó(—eiœž(s-‰ ­¬ä²ˆf¬%§{ •á1(£0º•Vh§ú¾Ž-iW©ËG5,ƒH€H€Ї€S£Õæž8rº.¤³róª]5³4mñ¼ÐGâOP‡ÚÃñiÀƒ¬­¦±sCÚí‡iyXÒÄ6,BYÉeq°P6cåŸæ×^;4:ƒ-y$l Fq0Æ+ô´ mcvúS;·Ô‡ÆÅÞ#¶ŸH€H€&I I Û~Ìq'fTP°œ]~ÚSÝ)áY–0cÂé9:IzÌ^¼”]Y©dí›!.¦¡ØöiÎÜ;ec–Å4à©¡·>ÉœžWI€H€H€Š•@’¶m̲D† ÓÆ\¬ÈÙî‚  ˜Mß åŽ,oQã½7^ç¿á]Ê¿ÙÜÓDˆž…-‘£®ªwåæŒk $@$@$@¥J ¸mÌ¥ú©°_SOzw×ó{dΞZMYít­6ÊVcÑÀD C˛ھDEªh•KGˆs)ù1O=|Ö@$@$@EF ÙéÇ\˜Ë1h6·À|üS_±ä¯–ÅÊ^,²Xé_%‡uŒ:£2œ0”r– öhu O ¬sl @^ decÎk,ŒfœÀÇ7݌׌7ƒ   (élÌÖ:ÍÒ zhÇgÉV’ 䛀Z„6.‡q _Œ Ù×Oœ­Eg¥ÒRZ9+ßY @)ÀÔÇVejqY(fìÈ042Šž‹¿¦aŒaç    ˜}Æ"ásÃÃv¿ÃÆÚÆŒùM£ŽÝJpàÙ÷a³Ç$@$@$@$@ €²F±¥™Ä£˜öü›@™…H€H€H€H€r%´¶Ç(˵„™Lê\ï±ÂúÎÐ6¥·Ù3µLaÛY4 @^ ˜{ýAIÛ¯¼–Ÿ¿Â —k¶6 ˜Kâöøú§R1ç¯Ù,‰H€H€H€H x8U±¶5ã½¢HÚêl øzb-^³½þ®®"i9›9Å®½ÖøÝ隸O$@¥BàškŒíÛK¥3ì LQÌC\ôBÓWsN5…¶o 6µûÝòˆí9”+M=±.¿‡Š¶Ú_ ШºŽZe»%3šŒînèð.£ÙS/É­2Üêa\øÝï"áð^ýõ—y)ЉÍ"˜yååå ,X½fÍÌ7…- "$P,6fˆßZm_¶¤¯ýÍÊUc'®õ6ÃõØß‚!èoAC<×oîmQ2Ú-Y_-œÚÉégî<(ŽË·Þ–±‘¶Ò”Ðî>#Ø]ã èv5mTÿÖu´*s´c“Ѷ;dø ÷d ,'ÑÖÚÈ\ס‹â{ñ€uyÙ²eCCCýœ¤xx²¥$@%I“çΛW’]c§H`$¬•!ÎðИ†js­Â»ÖgôAûº8cXÖä´!}2X­ë UÈ@G]Úü¼P°´3årÁ~@l @!àÉBø؆â%P,«Ëù[;Œ@MsoiQÒÝmã.4—9Y¨?¨]>Ä[ºx?ÊÙÞrµ‡%_$@$@i Ìöß öŸ&A hü˜Åcm³ÁU€s—¸Tø»:Ö×Xn2÷ÏFÆdPãmªˆº¦&Ú˜]ù~$ŠÔï $@$@i ðïdZ4¼@ã°³Ó£ý2¤~s‚^BŸ”_³3¦+fûf ƒuœ)YÊ5©)ƒƒÇ8Ly™H€H€H€H ˜ $ cS1'iäB•ÌÅLžmŸJâ‘Þvrá-ß÷1¼Êä=Z&/û@ŸFË ¼"ê’~É1"õ©Ê‹¼GuQÿ÷ÑÏMe‡X6 䟟ÄåŸ)K,9Z§*á µsÂt?•(5eÉ!a‡fØ­ïŒEå?#¢^јśÃ9–wuÆ¥°¼‡õ»ºª/E‰\æk]ôéÙ}%  ÙC@°݀Ñmhb(å õ¯ÇS昘˜nöbO‹š@V¶HîÉåÔyŸh]2oq ³r2›”ˆä<'  (:Z+' c ˆeç²²r»KIʺèºÊÏF9ÍüKR»8dLÔâXKP1FT=X­Ü‘3½ÈläÏ>“ þá*ЉœQJ—¥ã2(f‰/¯0šá JÅ<£Ÿ+Ÿ%z3™}=?|2~Ìhbæê&Òæ! )&é¯äWÍâI X(aìÁ®òvƒµ0®@,‚yA­Ý`‹.–.²$†À}wÙÇ7Ý켨LÒ"±áØ —fÂŒ,âë¬Ü•%Jã_íö,>̈‘Ó¶/skÈ4¬M$@$@ÅL@d0„qE¢b.ó(¯ lÌsÌÞ)K4s1Ö³´íÙÛN´AZûq¨eœ=J4‹~mÛ·ž¯ûÓÿ9§² CËe¼‹X–Æþý/E"HÈ@$@$@$Pj”ḼÌÆÚ”ì)«uœb|†ˆ.5ìOiÐú7‹>šBÆcI¬ìÇ"ƒE.ã‘Ì£§††F>¼ô‹æÍ_`›œ!˜#JS‡ÃÌHJÍœn&!((üÃUPSÄ sÂ?mKq Ñ\a¿žÙ 6Š&E@ÉeS\›þÊ1zÙ´%C9söìX8,®¢MÇ ñÊ0°Ü\$ŠUçr ·\|ñrëÕòxn™sOí¬îæöfWÀÞßsqÖ‰³+’©H ¨ <¸ø=:ÆÏãåÇÉŽ O×¶÷›­¿7;k-j„l< !‘Á2ÅO½DÃICbÔ?ÐÌžøKy8X{eƒìæÞ¤V…:×{<ë;CˆV ¬ £Tb•DGlõŽÍ™,ËÑBôpjÐ¥KQ¿b7 u¬ü1 ˆc‹¢ÿV=ܹäõÿaŒkÚpð†ªMW¼rŃ­ï9{öÌèè˜v_Æ´X¸c„ÃÌ‘ÔZ2džï³Ozõ¼:®Ïœ6ÃÕê·6Có’]ÝSmÆg?öÀžñsÄb«ïøñ¡G?¼:›¤H“mK²,ŽÉH  \KCß ññ¶£gKã-×ç8R\º¥þ"%Æï}à=¿mà.óOÄ«_‹=¶Ã%c¢RþÖVTTÌ›7oþüùçwÞ’%‹/ºhÙÅË/Z±ââE‹¦¤e Ì ¦hTfeó%Ë0c=fs9f1*c4Êi©«ëkë ù[¼vûz7‚†Qg×u ìt\Uj¹&à뉙;^‡:;{î~] ŸïÔ6KIjy©ï¹þµR1æÌ?ã{ßüíðÐÈðÐpÓ†£/ºldd9´òk¯^ºô¢ªyç™òZv2‘0µÍÍ_ék>|Wcû½?Ù÷á¯Î_¡,‰f 55¾­½wÜpƒô÷ñÞ­ þ)™ô»ïÁµ_õÈ¡U„ÕÓ7`¡˜—.]ºlÙ²åË—_d…%K–¼ÿý·Ÿ8qÊjÿ%YG9Þgu˜à}‘p¹ðàø|ÆÖíbO6Cï¶î¦¦¦´í u6Š\î²%²·…r9-­â¿ LÈî/éœiœÑFey·_¸óÞúÅšw}rõ;>aŒ½ÒÿëÿûßñW–³X—M¯ ±1Ë̿ɽoYqË?x3Œ9+VÀOc௛ܧJNH "³i‹Ñ÷Ù·­¸8ðà·H.³ xx|‹<ÆÍØ$)°%€Z;rŸYµ®=^ã>UHüªJ,¯}¨Q·°åqgKÏXiæ&ñ* 6Õ7ÝæÛÚ£Úã½[ü×ÛcSFŠsPàTY=‚Ç;æÀ¹8f°ì{ìû} ·Üj±‡¡3MºøtåH¼khooÿ‡ø‡~ô£›6mú³?û³›nºéío»kJF’Àl&`.Ã\j[ۚͽ-Z‡:Ûú:¶´÷w÷¹7>´}k°©ew:%kÓôLy_àCÛ—Õ/ŠœÈ©òÐ0*+«`f©^r¾qðøèðb,”±ôÂåsçŸwÍE߯Òoxg{eUöÈ„{Fz~Ì’5§Ð×þ¶풣ᑃ÷*[R_û½·=uðàê'îZ±iEÛ/\mÈñýß‘˜`ßC·¼ýcÞØÛqðã’{k~Ù+ã'VÀøu=~Á•í뮃ð§Hhêð¾‡îÝê»í©Uª“F_ª%öxàmíµ|¹¥ð[Ôe"‰äz"ð¶Üö˃J-wAŠßp‡ñ ÿíˆ:ÔkYª-ÉEB3yBL`$ó^Ük\¿ZY˜ï||í¿£èP¯ŒAÒzü©qgu|ýÝ‹ˆ'—Üûà×›O{’Á‹ªfMÚq¤Šs¹š.ÞªÝõß”rðWðŸø„ŠŽÉˆérvâÄ ×I³–€½q‰MÀ¹­Y¡añolªßÖÛ准 6¶xþxƒO@6Á´ çºÚ¸G¡u…íÉ+üµOT‹©¥cÈZ«u•=p­PK,Ë´?,$7Þy‘¹ž¶Yg œB./XP­—Î8rôðˆoR*Á,6惯헽wX‚Se÷µ}õŽUhùõþ£¿æÆÕ)Ç÷¾¸?ÐŽ«ï¸«¡½wŸsfGÊM½ß ÉüDoÛø)OhP_ûÛ/±ºªEÕx›®eß‹ýFÃ]׫ÈÔÂåjßV3;¾?¶ïÅô5ÜÕ«Z˜Rc’S𜊙Àªo3îüÉÞ;n|±ßWsgÂ(‹­†ÏƦ[p klÕSç ã'îºdÓVuÅ׿¸š0vúðŒh•Jûò¿½Ý´ ]"%ÈݶºËuOÊîvš:`ñl¹ººÚÕ+íƑÀl!pw©FŽVÌ8Œ#OÓð·v´5Š3shsÀ×ó选~Ìpßö㢹€?ϼ6-Åvâ,ºúXÌ:òR*ÿ*K±~!&ÃÂÌцúÞk‡_Ã,º(ºX-qîì¹…‹ÂsæJbY+#çÕåÔ“šìF9c\‘û^|Î0nQ%Ä˹îλï¹óÁ½«{úoýj¢É®nû…õ;n’qäÕ1f¼j’¦  —V6~zb䫤|%¿öÆ^=UÒÅO”:¼20íÏ ,¨Â#5˜í0ØB™D¨a%ý22ï†83÷ŠGFkf ¤¬ëÞ–¼ºFAu†É'¤oqâ7ZV_•l¾<ò³¥6öSfå ,”ˆáyNåÜ¥.»î~sõÿZãùŒ^:ã}Kÿúí¯¿é_zïÙsgÇFeî_†ê\/¹3ç˜s96Œg¿ÿ“}RÚ¾Ÿ|ÿÙ†[´IØ1RaýŠýàk_ýq«²'u9µñ6¬~c­±µ÷ •eßC÷lM,\]½ç!Uµ~­¾ñÖ«cÔG—ZcH ä¬~÷mFû?»íÆUÖwÞùå_uGï/î¾ú¹1^V{¯~v`ŸO< ›°_¡¾«½’QF±9dRÆÎêÝÕ°õƒ+ïÒCR?ô }œ×¦nBÐ^ÍÍjhh¨¯ï;ÞñÎk®¹víÚ+aHNÊs˜ô­ÒVP£ ¼Ë¨–73¨Ãøiññ¶´û<õØ“Ç3#e“§ÞcØ“ÿ°VFˆ“ÿ ìóœ®æÈP++«o»Z}YmW¢t²¥¤E7c-òòªy Ò-qôÈá‘‘!e°Î5<û¹w¬üœÊtõÝ0ÿf“ýê«Bw®\ù,’‚¥ÌOXíêƒD98‡É W­ü ñ–·F6…ª4×ßó‹»ýïX¹RŽ¥9‰¶-}Õj®ªëŽÞo„Vš1*"±%YWÌ„$PtVßxÛÕŸ3àÑ”Üò'>¹òƒÚÝcB®Â}jåW*ÿ‰†úúÝ}ï;dä\ÝÐpurñóëï9ð ¯5$õ ´/®¾£÷·œéâÝÒ¦£WFz6¼2k h]œ¨„c1å•¡ xfÔk–‘KÓtWl v}µ@ˆxm¤IÉè"' o3tB%0Ÿˆš¦e%—Å´ ‡f9PºYéi¼VÿIû‘#¯ž=wÎýèðð²‹ßñÉ9••Øf^-É,AiïìÃu_Ù¿ÿ+Žä±Øª¯ì¿ÎºWÅÕÔc© æ£=V6³B» }ŽD¸åº”Æ8 ´kMŒ\õ¡žýxૃ]Xíå«ÔqÂU}Gí삤IjIö,˜’ŠŒ€9ìqf % b{Xë‹ÎQ"±‰cIb\‡gò Ó£.ï RþVH ôÊÈ;gXô…±þÁWŠžË…ì¼,M„øu¬·³Ëú0ìxgÇ'åmÙk)úOŽ˜4q<6Ê"ˆµi¢€ÕÀ€\6ý4¢²6–θ`éE «ÃÆ9séŒ%,›;ov:rä060™t‹òQÀ¾îè¿û~WóÓŠâÑo]]ó± dd ¢%‡ï¼óNõÇ06666::ªlÑS§OmŸØp˜4$a¬Dr…ìc"[þÅ%³:,t=i, äè{À4Ý’ßÓ~,ÎÊ–]?ÊÀ,žmi–£² èãʪXÛ}²t6˜Ÿ;ÁyóA*ã¢9g0M]yŠV¢\·Û¥Ä}ÿüÞ?ùܳWßýóÿH^TÎ%ñxQûþ¹þO>ÿ,Ü3~þ•<”6^m¼N$P8 ˜!”Õ\Žè¹sƒgÏž Ã…±ôc.œ‰-™n¢—±ÝŸ]­lŽ=ÿd›ì2lš]oDP1O÷çÃú&I ³Õ²XÙ’•\V.Jë9ÊÀ¬4lŸfË }Ãßüû±×^CQ®|6dÉÒ\}2&Ôµë¿òŠx§é×êæÿx¥Y•›&A.u®þмbzhä¡´\jfZ  ((zoìr‡0ù,й¼‚¹rN¥ÝÜrÄ”;tAõƒ! 05±=áÏ4*[ºY eQТJ:6gNü1½¢²J[ ±Æ¿Z*ƒH€H€H Ô(a\^YéÆÊååØR^¼ùóìãtNE1íXjŸû“;q­Èì•¡lÆÊWÏ\4CVÎгýô»*@-ɬ4ÔD@ìlâ{Æy*ÒRÒ²_ö8ÕåÞæ  )'ùïä”WÏ H @‹0ž7ßn¬)–稰pÁBûœ9°8Ç•u1ôŽm$åò›>@ûîz~l×w=µÓ5ü4dû>µ‡ŸDŠ'Ÿò¸7Ìÿ3#U´Ê¥#?-~Ìé;Ã+$@$@$@SC¸²rÎÂ… ìâ+•T®èÊÊEÕÕö…ªªÊ**æ©ùXêÔȤ— ããŸúŠÒÄ"ˆ•,VVc‘ÅJÿê *FEÈeØ¢u:±Ê¨3(ÏáÌÕM]7Y2 ÀÔ€ÆzYNa¬4te6ÃÄ?Õ‹Ûu#]åܹS×–LÓL`Ã;¯Äkš+eu$@$@$@EGÚxñâ%vËaIFÀt&ÎÕ‹ã6fÄpOù¢û€gyƒµõw–C`÷I€H 3ybÆ@$‘€˜’çVU/IÆÐÆÊkyΧ»†Hè9KãE    (5ÐÀ Æ'øA+C-ë¥2*æÏO ¬¨(Ãj ·ÙSßÐ"Ùñ:›² ªlÌ” ídJñ²p  ˜ …±R˲ø2Öc®Œ/À\^CdA1ÁØ1Ùʹ­6©œkú‚ê4“>kÌS“ ¤иÊám¡ö))«(+ÃV€†Ó¦ŒSD2@±ÀÊâh*Þ±¶E±´™í$ i&€?’ôcžf欮 @SàåÆfŒÚ+;A"ã¯â¡Îõ5 ´µ©'Öå7œç=F½rå¨ñôÅâè[™3 ŒŒŒ,Z´(çœÌ@$@³‰@8žMÝe_I`"D' cã1*T<66‹*‡Å¡˜{›k¶6 ÄvzÅ_c}gÈ¿vsÀ×Ûé7;ë1róâ˜Yæ™q—^zéK/½tîܹo @$@…L`îܹrûØ6(Êpœ`;Æ©aónØ¡Ý}F°&dÍ·i£±¡¶®»~}.žÎ…ðѰ “"°x1–ÇM ÀøÛ/ŒŸ˜)H€,Ŭ˜¥Iþþ±xfxWv–H€H€H€H _ŠY1þ®#PãÑ¡¹WVŸS¡&àk—Õšý›‚r—H€H€H€H€H`BŠË+ë2[³útoaO޵8:î×ë6Û1ÖBÎbÃL$@$@$@$@$€E2H€H€H€H€H *æ px‰H€H€H€H€hcæw€H€H€H€H€l±X*ŒâòcNm?cH`|žº‡Ð§Ñr¯ˆº¤_rŒH}ªò"ïQ]ÔÓÁ¯_1S #ˆæÄ°©˜‹ñcd›s&»õ±¨ügDÔ+3"#‘cyWÇa\ Ë;6’•wuU_Šâ¹Ì׺èÓ9·€H€H€H€Šˆ€miVgú1ÑGǦNš€~Ì"›À;¸Øû››Ã[—â§0+Oºj@$@$@$P´*d«lý²û` …¢íN™ $É_œÊ}$¾÷1å»ÌêX‚Š1¢rèÁ çÌdy•H€H€ŠŸ@ª0öZ'ºjˆ^` R"àùá“yôc.%2ì €M 03är™Ã;§IšI ¨ Ü÷w—}|ÓÍÎ.À¦C€ Y¹4ãfd9_gå®,Qêÿj·gñaFŒœ¶}¹£¨°ñ$@$@$@®´ NÆPËeeJ——Å_S`îÍØýÚ±Ñ5ÎÖw†¬nêk¡ÎõÎÈ$ÖîÙØ@Û*G2Ø»k»"cd©P^¢—!“E-›ZYéf%—å¢RÉ–zV‘"¢%Ëþý/E0#H€H€H ä@‹0.¿Ä²,йL ÌsæÄ_8…€.¨àßØÔ½­×lRhwŸܺݔÌ8««õ²]öί{«CÞV¥b±ž¦îz¥™{·[cܳ2¶Ô˜BjX9)ks²˜¡“µ,ml™–µnV&g¼"b`Ž…ÃÌTÌ¥öÅ`H€H€H´9ICWˆˆ.3ªªâ”´¬.,jÞÚº¾Ý!ÃIÚ¾Õ×ÑÑ×Ŭό†-i”²Õ¯×Jéml“hK‹¾*1mfÑ…Õg¶&ÿ —;{°’=jí8,(§W³ÖÃjrxAG Ò!"ÿ|¡±i9ž¨O;êžX—_÷MN»ºY×1°³%Ôìi«Å¿.ßkg•Ö%M 7‡þ1) @*¨b¼æ9^Æx‰bÆ4?¸1Û/}!µˆŽQ®Ì½»ûôß‘ý۵ɡaq -ºÂéQšC!LZ„Ôrâ•1:oý¿>ü#¯ý—yQápl NÍŒÐQ¼D\KPÎbWÆœ?(fY`NÔóü˜MÁŒÛ·üHfq1ªƒ×Ý öÕb*+îþôm º;èè«w¬*# qÍêjx‡(}mG!?üDzšÄ›IÆ@³€Hfmwq±0÷nVŽ2 q¾RC®©[9× ØH€ ‚€–Ápc¶_¦b†\ÆK jý®c ¢ÕÎFˆÎÔ óï Ü4º 28gð7O‹ ­2ü‘˾L¦,²™LÄ#aÕܘqðࡽ{öþèG?Ü»wïÁƒÕšrº'úçM¥R:[VÉÀ\Àðˆ^ŒY æœm̶`Ö’Ùtš:eöxäùH܉ÙÒβ’Œe¬R~Ê—É j¦d¹¦Œ[ôKšÈçÀ<³ƒ€u‡ëöDS|6’ïJ]¨˜Fæ¤Y¾‰ GªyÍ4ac:`w½2S›¦ætñ.u3ŠH gZÏ1 û¥c°Àœìð§å³~OÚ0窦*ƒÜëq£š˜‹mm±Îøƒ3Y§@D†˜çlåÿ3”±^,j²‰RÀ#£æÜ¾]»víØñØÅ+VìÛ·Ç¢§•b•,ë4KÐËÌá8‰E#£ÚP­ÖÍÈU1ô´*ÄnЈ;GæÊU€%L솯ɴ‰M¸€\ÛËô$PÔ´dîu{¢©Üý¶™~Ḑ™oui@8}?œILwBd4‡­9æÓŧ)žÑ$@9H'ŒMÅlÊgeo.TÅœ¼æ²ZgÀ~pŒ3mp³ÀG[NÌq‘ጙ¸ôÈé`â™%…«w$ ÃýB¹g|ëß¿³äü ®¿áÆ—^ÚÛþ¹/ˆ`¶³ž(ê3ÿÄ+#’Vöfxh䨘åá†%t¥LüN\2g"‰g/¶WKÃ$LTRW «ŸêôŠ3UÅk$0;XÏ7m¨ÄnãçãYynÀælÙŠ1äu2¬ç¤=.äyN:`ò<f丷²Z+ƒH`Fhœ*ŒÃ@¥OÀ´Çbc£cÂâ’±oß~ô£?ùÉÏþ‹9••‡R>Ë¢’ÅûÂ<Æ©Èc™óÁ Íqh–·œÙÞ@V®t6%»TÛa+K×&ø»Ä}Y=Áÿä$;´\5L· ýˆ?÷=>+Fý`ãé gþ¹²eä,%ô|3NÁšÓ)åÚd _}Û <•ào5‡\c¿/Y’u©‰jä"4âó0H](¥‹Ÿ¥»MSM®Ë $Pú”µX<.ÆF‡cÆÜo÷GG¼vñÅ+ ‘—_|ñÂêÅßÜúÃÀ'> æAeo^tž9@ú”U…xÄ'#G3~ “¦ÑÉcŽ8õ¤ëêñ‰ûg’ZÒ%FJÑ©«/[ÿ.W“«K>wo cI`ÖH5Öˆó¦ŒTçà1ÇpræäkSLM8k³£$P¨˜‹âcb#'KWü“E1Åb‹ÿîo>ò·ÿˆŠ“ßûîw´óÙ!峡Ü6Nž +· ÑÐOœ?f5=Pmÿ结mÚÔçwmëÔ×ÃH€H€H T P1—ê'Ë~%P"XÙ˜Gñ~ôÔ˜lŽ­–‰“•ã"XqYœ1࣬ö͆ë…zÄ@ á–s R«Ë‰×FQY;Ó áCݕӢ2EÑ96’H€H€¦ó´¡fE3I@lÃb<ŽûÎد+”­Xæña¿p,ë2ö&Ã)^†y0†UåpÕˆŽ¡µÚ†²1CtEàsÞ¢ø˜ØH  ‚'@Å\ð˜Ú;–ãÞ}‘šÉ§&óÁkY™–•YŒÊ²<•eºŸ˜™Åê¬S*ß ƒd"™óÑ(–A$@$@$Pp0ÿ6µMTÌ©LS‚´³é£¬Ü‘åÍô¸Ð ωËr$æÙ¬%µ’È*ògÆŽÙZI‹»s ~IØ%  дhe`*f~7fhß]Ïï? µš²Úé~âš¡¼™%R-!'ò—e3RE«\:BLÑÅâÇ<+>[v’H€H€¦œó”#f…@àãŸúŠÒÄ"ˆ•,Vöb‘ÅJÿê *FEÈe˜—u:¹ÅT1fPK53 ”6XšE¨Ŭ‹suûp¢Ärïmµzk>‰Çù¶±ÖÝëe«…xtŽô“KUåÖ›û-²L€Yt¨³yû†®–Ps³Ñåº|Ž3y±øø¦›ñ*–Ö²$@$@$@BÀ·ùÙóoïÞ½;vì°exºNÊfbýØJÔ X%Vöð•éü–Ë骊oIl=Jµ^#´Û¨åB[é¸1žH€H€H€f;µýfÂü¿ü(æ“'O–••ýú׿ÍÄØ[[×½M6â•` æLéóuMíeŠui»±iM {¯ïŒ+÷|ÕÂrH€H€H€H€Šœ€­•¢9?Šdª««kkkƒÁ`&ÑìÝÐ`Kæ¸`†žÕÛ-hMïiYmÇ'+õ«‚J”UK:š:b±ž¦¦ÃónÔΪLD$@$@$@$PдÓD’ËqÞ3º¾xñâñD³Hæ¾ÝbÞu±0÷nøDÍ"dp3õ+¡§©»-½¡8;r¢®õÓ'£ ¿Ÿl Ì<H4ï›vkò©˜QheeeEE…³‚¤~C2[·‡àMÜW—ìN,>õã»K˜FæøÜ>7´q?æ.¿6]×wÇ}2r0O»Î8    ’%`‹f»‡ùT̃ƒƒ»víòù|UUUijÉÜ‹Yx ’&àÉÀØ£1“ÃÔo½¡ Ñui+I¼ å"µxcô4i)Á†e¡LF$@$@$@$Pª´hFïôAÞóÐÐÐørY ŠdÔR³&y u«<7`s¶–Ö€‡¾êjÛ4V¾æðÁ'&mX¶}X.ƒH€H€H€H€2ÐZY»NäG1/X°àĉëÖ­Ëd]¶Ú$¾ÌF]Š…YÍôS¡&àko®õ¶´7‰'Â6£Ig÷·vÊE¹±ß—­Yrú»d®ä8­Ë¿¼H$@$@$@³”¦F`äg“šš¯×[^^ž`ñ’hq¤Ä\>¿œz1§¯+¡™ågŘÿ&g1¬³Çs¦ÆdÕ.&"    ÐZf}ŌŘ —H€H€H€H€Š€ro³-—qL¥[ì+ÛO$@$@$@$OZ1Û.(šŠ9Ÿ|Y @ HÍùñÊ(.ìBi8|ôôØXxÁ‚¹£cŒŒFFÇ£#ᑱ±yW”—½ë-kK{G$@$@$ ÈeÛ%CKg*æl¸1Mq€\>tôøµW®ŽDcá0´²Íc‘‘ª±‘Ñ9£•cC£cCC£ÅÝI¶žH€H€H l¹ìÜ’Š9hYF8z⌒Ëk‘óX82C4ŽŽ©WxxTŒÍézð•ÍÏÌ;ïôéÁÑQãSŸ¾»Zf»&LºO$@$@$PØRE3sablÝä;yvÿᣰ.GqŸ¹ O ¼´K„òhdDÞai«¨ˆ¯øÒKc?ÿù‰S'ïøðòÈXôªukÇÆ"<üÍ'.úîwíØ7<8ÖöÙ[V®\„=á'×@æ&  (DÎihï ñCb›òEà•W¼¹v J+÷å••• _xØœ¡¤¥.¬ûýíÇ´ó©S‘m?â½|ÙŠ‹—}þóÁðØHX¼8"«/_u÷gž8ÿüeWÕ¾ýàÁ½Ÿ¼ë{ýóû–,Y’¯¦²   ! å²su9*æùhØŒ)!zù˜ïŠUÆ"Ž£1¼G`kŽD‡FΠ²ÖnÍá±è /¾¬[Sôã;ž_³jie¥çºw­C.1EŒ­½òêËÞ°vl42<26:2¶oßï^ý&*æ)ùØX( Ì(íÁìœÿ7«ËY»a£ë;Cn@"Í·Ô‰qŽÒ³/$Ô¹>ûÄnmpÖŠ~¥ïš[fÆM(e”=84zúÌÐÉÓƒÇOŸ=züõÃÇN?5888Šøsƒ£˜ó÷Lÿ¾ÁÁaÝŠêÅe÷ß¿þ{ßû\8¢QãùçC_ÿúÿßÝ}ÿýûÅéydìµ×ö?öØÃÿúoIz^3e`Á$@$@$@ÓJ@k9TiÿÖO»b†´¬ïë€vGhØZcIãɨä$ˆuºü#Ðè.É“©ËÞÛ;[¼ÉÑiÎ]š*ûyKèi2ÌÚ³/.M-ŒÎÌöƒ×E8=üÓ']qþŽK—øæ70ùïð·yÆ·ú¹uÞc?4ÁÞŒú~ù‹ßeóþï|ûÈþ¡ÆæPhïÀÀÎ?ÿ‹>ø—7Ÿ:zù¥¡˜ËËÏó]óî/~á×ÿ÷?ÈCY @ApšÆò©˜÷îÝ[WW—±Ë¡Î¶î¦[Lz[¶@Õnî͘g½-íMÁ­Û]­Ø.”‹Š@$,Sþd•ŒHT7|ÏÝ­ð¬ØÿùOëSÄÃ%c4ÁˆùÕ¯ž‹ѺºËW­º:»÷Ñžn¨{ó›ç¾õ­ÕW_}ù/À=#-¯^´fllÎÉ'‹ K$@$@$H;uÞ3ärCCƒ³h—…¶o 6mô;®x74Ôõí‰å¹Ûj<žfK?‹§D¢{ƒc%[os3RÙy\êTQ‰)ãåØ9fãäZÝåÖT÷j%W¼ef êŸÞq»æÒ÷J›‘”°3Âá(ìÊHXµò2¼ø__Æ{ÅŠ•x‡{³Èe84IØ•1 phË6G±³Éٳǣ±è¼yóà¯ìñ`1²á¡±áa¸k”U/® ÏX9/’ W¯Ëü(fÈå|àçŸþÂ… ÇSW›âûìÁ©ÁògèÒ‚:h3¶(7‡ i„îm®ÙÚ Ý9zŒ6ÓÛ"ØW‹Tfž¤ªÅ ]×°Á¬ÏN‰r¾åC1ÐÑWŸä0Z Ä«]1jJmjº‹»{›yл­»©]û}X]‹{¤TÚ»Ùjb𾥫“ñ‰0³ض1W^r)^gþó)¤ªzó[ðŽù€¸: Ã7§ÞšKž{nàüà;ßù ”ñÛßöîÿ÷ž_ýêô£½^=ôzõâKá•%ýÜ®_{O$ IDATí~þ»##§É›H€H€H ôØ~Ìv×ò ˜µ\¾à‚ ²Z7ò8™«‹ˆ6à ¼EéKÿÆ&FhØyw÷i#4:QßmWÄŽR•­Úãa÷&¶RJ9–[ùm$4(µe7µnrËÇ;GãMÉÜ»­¯£Õ4®[]³kO­Ô[[׬åÇ«Œ×]À´Œ'*°ÃÅ—á¢1oý[Gv?wÞ{ßçY¾1ðs–õ2ÄÌ,^zëßwÿýÏ/ÕU/Š;7¸â’7®YýÖ?ÙÕÛ ½x®²j)¼2ŽÛ34¸ûÁ‡þ¿‡¿ñ1—*Ý£ðlÁåYˆz” ïÙT+8nãD’gæËâx`b6&5ƽ•Œ%pH98ÇsC”É£1nÉ¥Zy3 ö\ŠgZ üÐ?˺¼É*æÜä²ø`ØVWÕÑ£¾µ)fç4mÒ¦a1»›•u>sî]æDiª@t–µ¤/ ~ÅßÚÑs8¬Ý}¶±;~U”²+•™ˆ±-F£›Êʦ^¦1 ˆ~ÌÊŒ(¨ç%»+kjüí§`]F ƒ˜†¢†lÆ)öóÛñ“C?|pÞyó0úxñ’+/}óò×Ω¼Öå±ÑðÜyWUU÷ô¼T]] èº:ù.8sàQBÐqno­Y¨òZÓß®ž‡ l1¶'»üÛYz|¸M×;)—æ2- ŒN›Š<*„[an3ų£8þ`Ï®¦"Ȱ¤’&«˜ßÿþ÷Ûshhè gÏžÍØTå¨Poÿ°‹ƒ„aÛ^3æ4¼k}Fw’âÈœÃýª*Çô•PýªSjQ*Âõ"·±uóæ­†C0[³m¯î4]ßåñòvïc³ €E0 5±ÿ¦"¹>^|ÿ#ˆP«hÀê ±Œ5èÄ1§!§N ïÙóòe—­…\>uêèÉS¯Á=cdk0‡ †Cóª57ýàûgQBŸÏH˜ˆ*?¿MMiK u6ŠoNüÞÐÛÒâœÑß…ïJâÝhÚ‚yH Kò¸Ïr­3LÁœeÖ\’å4Øs)˜iI€&AÀÍú`²Šùi~f…`Ði3sk¦¸õæÓçz£Ç^ÔMnæfþ%çM`h‹I™^¥œ>ÝñON2V§Ö᪠x*(±?nSMÇ=‚¯»Ûçtë¨óõ‹ñXyèÚS*µž·#ÉB’éÍÒs¬© ] ¹Œ.€Óøà§¡_¶YÄ3B8Òö¿¾õ·ŸíúÝÀóÇŽî?°ÏÉ“¯mÛvÿŽÇ¾ùúé#Ã#á½{ólß·_yé§çξúÒÞoô®6—pÎnmk»/¾2Œüáõ•••Ù´Á‘÷ZõÛz1}Tù# [¼Fü²Ü1Ô)|tºàªäêáŸc•LN$0 "™·âAŸß«sâ/—ž¢½3í£]¯õ{åÜÖÙêw_øŸƒ}³’ÀÔ€0€ŠÐåÏ„bžºžM¸dü-¬«mpö •%q‹Ë B†<¼”7Ø—dßþc»÷zýÌШڦDþ3³:ÀÚrjÖŸl£Ÿ_½¨¢KÈyª«ý·¿ºáÌ™3ÈpÙê7?rðô©•yŒ_ûëoxÛ¦¿ü»…ó+«ªª-Z”kCáØÞ†]uü-!¬†ÒóNÇd8%;ö½3Žò ÌÖÉ_šÂ_Ý\?¦'qˆg]ãöPˆÝ})?zŠv­sܺ•©ŒÕSÕíp».q®ƒFäk®ƒGJ{i¹ßNŸ®pÆ“ L‚€-šg½b6ÿô@¬ˆQ/¯A-2(ß%çµ™%]ü˜xäûðÍ@P*YÖÄ€9Yj_ ü#~̘¸léÜHb+l¬47gÎܹ󌲊±ºw®?7xvpðìØØR£¬lǯŸ]TýŽÅ‹—\pAõœ9sr†§~{­ãÞG‰m+`¤³©FM¢mçW-VLCٰǬz(”Ô³Aå™4µlj±¸,î‡xTŠ£ÆÔë“n°›Ï‘qóÚÂtñî¥3–H ?f½bNv‡ÈVUŠkÑ®N#y¬”E%h¸íú7×®IEédõ´N0ß~¬æòe©‰áî Ù-Š;ñ”•Á£¼¬ ‰?úçã<ŠMS©8¶{긑OÜÊ4YO½?¶æOe¨³3”nòŸ¹ÊøÄÚ”¦©Œ&‘Ì5éÇ,þÐë•çFme+ÆsKËr¨?¨ŸýÈ=­ÑàN4§Áî^cI€¦šÀ¬WÌS ˜åÏ(ÐËÇ|W¬§ üu1`NŽÅ¢‘èàÐÈ™Á8i@b™Œ±è /¾|þùK³O<ñnÁ3£ÎXëî̘X*n¯j×cÒ©Ž–ÇIÕڮϲ̜£È¸K´rõ@®¤˜ñäúĻǜ$Pj” عޑÕÁ¸»LÌ2¦ô]®òŸ°–ÁO¬™¡P×ÔT—žL¦ÁMîêØ—.>}-¼B$0 TÌ“€Ç¬OJmÅ^}2ÉOœ2ÔZc2ùÞ8ÅÁ®ýƒƒÃ®‰=ù3¬é\uEmdþyÎÄ9vÝùlÁù;gǧyøàú Â¬;ÝÔÔx¯ûdÛûÀä$0K $Ck´¦,çà3Unrf¬¶ä6g=ÍSÉYJœÝ&B$@Å\ˆŸ Û”/pR†×…ìQŽü×ívâ—O:K®ùÍnµÒt³L t&Æ6/óá}›¿~ÝÜ û¢üÜü÷þ7;q¾ZÈrH€H€H€ ŸsáFláÄ `%f¬ £¦úÉvÙ‹ªç]ù¦(<—£†’¿06GGe½ X›ã‰<ù³Ð§?‰ô‹oô½~êÜþêµ/ß½luMÙš+t≷‰9I€H€H€Šs±}blo. „˜!š[˜(É<¯öM—Þÿo0!‹‡†˜Åü¬ÖÑeæìÄÇŸü—/ª^ñ¥ÿ3râä‘ûï)[¾":ï<(o8—V0- @q b.îÏ­ÏL3ûb†Ø˜!‹õ"äg~óTÌÑ©¾ãsßÿ—j ño†O³3ñ™]Ï"ÍܵWÁwB¹úï?#ÂZ‹ÔFâÌõò* @)˜ì.Ù“dco¦2NQãï4:NSpÙ¹'ª.>ÞJ,y½¾PäR Ì);'PBÙ‹2¢bc.[¸h^Ý[«Ö½%:²1‹ó²¬!—œXö ‹>–9‚‰‰“kâ9 @é˜ażwïÞ;vŒ/š­EàE_Ôîvn”ÿl DnÊ:_*ôø°ëq³{[ ìU èòOEÌÆðc–5•ÅIT]qÕ÷<°øK_«|ϭʬŒ]ÿÄÆ,²Ù‘¸ríUHtàh[àÔþ!røàè™? ['žŽÖ³    0ʪ««kkkƒÁ`&Ñìߨ 4&99¨ÍIU€!W/%/Û4(³®Óhj«ƒ^3WªËDÜ£Â4 «ôͺŽxz«Þõ»Çùeá{K2'´ùÆiŒì¨jöNÛ©åuçe˜–aXÆ"ÐÇθ$ZùWÀC^j‹l½_¶3±±ìâÅÏx,yrG8ô<2V|ø“Ñ7xíÄ94‚II€H€H€ŠœÀÌ+f\¼xñx¢K¾4l…¦³E¶ÞÚ ýzŒ¶N,%ßÓd(sOa×O&h3¶@4 t) \Öž—ÐÓÔÝf‰ó` £Ž 6+k±¹1"·[eo§¬BRkµs†ÆÄkASûê!€eUÛ`X›ÚõoV!hu½§Qu=p´ÖIɪ7¡Sèw6è²êg¡%‚5<`Q†ò’¯<°ì±§|á~xVÀ×fµêÄ´g5;0ž »ò=·-ùöãó?_Õgÿ÷œ‡{£××;ZOÙ   ©#P(keTVVVTT@ܤïªÚ9 FTø÷ĺ¼»ûŒ`·ì=ªBÓÆôWê:¶(¡)ú3° Ò¹[°6¶Jòº3S]G«_aä6Úv‡ ¿±»e¨8UF›™0í?uµ¨"äÚÚô‘ôMíª–xSцúm½]~¿Ñ»­¯£ÕÜPÊ*DZØW»AõÇÙZJ)*Ý-“ေoÿ±Ý{½~fhTmS"ÿ‰Y`ël5ëO¶ÑÆô>×Ä .’ćŽ&%Nûó @É(Å<88¸k×.ŸÏWUU5aoË–Ž­5ЭHØå¬U¥Ê•“ðhRÃ)³­É…~qmh§Y^mßôµ‹bÎÜڔƸ—ïoíhƒkŠ×hëkØ’µÊ %÷vQ,\“xäûp·@P*Y¼••iYŽ•iÿˆcF4 wç6•H€H€H`’f^1 /—{;;1áOD¢ˆÐº/lÃ>#ÐÖÙê×¾ ɼµuÁ~mB†ƒaX6ãàÖí!)HбŒ¸:¯=¹P. ÉZçÞµ¾`ýæÞHõPg›£äÔ ¦g…hzärimúƨôÚž¬ªijWeøE›7F¶‚Ù½ÞÔ¦–lÌ=Ÿj.Ù¾±c$@$@$@ÓE`†ý˜,XpâĉuëÖc]ö¯íf„š€¯g§¨dY‰ÂÙj*Èœ85=М¾¦¼~ëÕ¥mFSœf¯¿Q"¥˜Dgpuqý¾º øý]Êc¡Ñhp”lgQmÐV;`ÛÀS[‹ôé£z×§Û/îÚVSÑ-_w·ÏtaÎÐJë’k½©ùœèR¯2†H€H€H€f5ÏwÜñÀ@ßÙàLü™Ï|æ _øÂ4€‰âYx,V^^> u©e" b•Þžù0ÁÆ Û¶'7Î|צªÿæ»èÞrÅTUÃrI€H ¤ 8pàG?úч>ô!¸Dê_aüãàܹÁ³gϪ©Ð2!ÿ{߸æ{ßûî7ÞøÊñ(ÿê–ô—‚‹ø§ú§ÏþóIÂø#ùÈ {e`1f~J9€‡F_ÇsÎ_ù˜”H€H€H€H`Â(X'Œnš3ª¥–á¡¡×ú˜æÊY Ìb3lcž^òXxر´ÆôÖR[®Q‹ë¥”    ©&@óTfù$@$@$@$@ÅM€Š¹¸??¶žH€H€H€H`ª P1O5a–O$@$@$@$Pܨ˜‹ûócëI€H€H€H€¦šóTfù$@$@$@$@ÅM`V­•QÜ[?žº‡Ð§Ñr¯ˆº¤_rŒH}ªò"ïQ]ÔÓÁ¯O¦IÌK$@$@$P,ŠE1c«»ún jSÏlz‡õŽe?jìè¶_êUÃN_,ŸõlogìÖwư¯U,jDÔ+3"#‘cyWÇa\ Ë{X¿««úR‘Èe¾ÖEŸží@Ù  ˜5ŠÈ+£®c;jKèrYU2w}ghŸ›¬wœ~íÔ«ñ˜IW=‰V3kÎb*‡ì ¯ìSµQ¼¹[¼u)~ ³rÎU1 @i("Å\ÀÙ‹Â $qÃÿÈ1å»Fªc *F{b^ $@$@$@³Œ@‘*fÙ2Ú4)‹…wýzñÙj<žæ^ùÕ–Ò*èseîlÖQ–-:)Q¢©Øºh%N5$ë¼ÛUw¢V]Ÿ´!5Ç,ûnZw=?|²lû“=¿˜óè/ªûż¿œÿÓ_.øÅS‹~õÔâÿúÕù¿ýõ…}¿^¾ë7+^øÍÊ=ÿuÙKÿµêÀÎ5¯îô ^q2xåëOמû훆~{õÈ3ׄ{mô™BëÛC$@$@$0uŠÅD„„¸1·ììé÷lîmÙ¸­Þè‰íô‹>m«/d$èmäØN÷6Còúewé` ¿’°»ü½›>•Õ%m( æ÷åÆÎ é½5 lvÝcØU÷ö{¶õvù¥ÌÞmÝMí1iC¸ïï.ûø¦› MY\|`=V.Í8Œê@|•»²D©cü«ÝžÅ‡1rÚöåŽè›@$@$@$0ŠÈÆlû1k7fWQï^NñjíîÓöf˜”뻃ýÚ»¹®£U‰cÿÆ&£o7â¼µuÝõi|Ÿë:¶(íímio² Èæã@áÝÛ”•»w[ŸYa6ù˜fš (/ ÑËÉ¢–M­¬tsÌX4úµ'¾ù7gÏœ [êY4´ˆe•eÿþ—"˜È@$@$@$0;‘bÎéÚ )ŠÚ,H¦îŶ¶ë†[¢¾s þÖŽ¾¶ÎP¨³­¯a ̹ ›¾´¦P†ñX9)ks²˜!˜•,6FO >|xhhX[—Í4±XD ̱p‚™Šyú>2ÖD$@$@3K xso³øcÀÎ÷6Qz×úŒnÈÖlÈB6tÔ)›³3·nW1¡í[ƒM]7Ò”îÝÐ`lݼy«AÁœ†Ð G[Î å˜ílŠcœGŽŽœ9{v,«³HiÓ1C¼2 ,7‰ÒÆ<ß$«'  é#PDŠYMìSa}goçúzåõ 6]åZ{柿k Ã°S§(j“.šU¨ øÚ• †#ÔùúÅö,×R½>’?gÕÊ‘Ã×ÝZdr.žÏqÆõ+~ⲬŽM'æhlQôߪ‡;—¼þ?Œ‘cMÞPµéŠW®x°õ=gÏžÓî˱˜'"6fæHöÀwÍñ5Lœª¯9沎WlÞ§”Z#A ‡4~Jã5*ÇëReº9NQV÷s –Xâ„3ŽÓ0^.AɃ-çÑêÊ$¹T+Q|2ú4C×Ö1’H b™ù‡ v˜µç-1™Î'u§>ò:SرVŽ®˜m(FQê8!έxë +¡¾ä«Žô’!±qFnviG·x˜_ûÃ"½ñm×<:ÄÂ8Szïrþrgß'šÞéü½oþvxhdxh¸iÃÑŽ‡Œ ]62²Zùµ×/]zQÕ¼óLy-;™HȾ©¸©ª·¦„ÊϾo{¨Eݧᬮ¶ÕðúÍïqö…æ3%& d˜ÞšÏš¤,qZjj2ðÈŸ|¯š}U)c·ÖmCÞ?wHù! Äí›]S0ç§ä„RB"—ã“n¼ú†z ªb‘$@%PD^íâôåSÏÔ°°^gcúêeMi ŒbãkÃ8zîúW_×ÁSïzåÔu{O\ÿâ±wï>vSÿ‘[~ÄßwøOox[ÝÓ¿Ý÷oß­¬¬ZºlÙÊKß` …\^záò+ßp}í/þôî³g΄á¡˜Óvë´µ¦^PîíÊ7^äb통>sM•PзV³ý V$¯_b|}çîxñާ¸öÂã–³ƒãÉ/’Il<õø)%ë67ã+ŽÜªpøF)GœÛÉÓ,vî$¢óo‰\L(0at«–wç£íä®áš¤«8s®×žHÆ™ÐnI*ÿÔÏ”1³¾¦"™UW•`Vf_û+”ôÅs~'ãljßF7jãL˜1pJÎtñ) A$TÌù h–¡VßȰÕv«bQÙ #!,Í«/]zùªeW¬Y~Õ/¹ªfå\q™ïªË®yÓêkÿàò:Ÿw½¯Ë_Àœ<Þy .nû—5pÆÀéÜùç-XP­—Î8rT-¡¦*G\l̦£êe Cý"ñ°WM7ÿ;ûƒµÃ7ÊR/=ðÍ߬+lÖOleu—­ÝfZ¬;®ã" ÄÝùãËÖ9Eº×Ð «ä)ëÇÄ' (1íR²ª3ØW»ÅÊ5Ë œ ‘ÝõžFuop†ºLÁ »}¡ûc(“­‰»®‘NV8†nP °;º&ŽRºA2XMo2Ôò” =OÛÍþI5òtöɬ§†» Ö ßs¡Äoctuµ³ëIS Œ&B&@Å\ÈŸÛ6Ycc⃡-Í( "JïH‚ƒ\3Ô6%˜É÷Êk#b?Ž‘˜® ÿô½›?öмùç•yÊ©—Î8wöœ^žÞ̲VFnŠY¦¦Š–ů®²){kEÎ*'æÔÊ”µÃ%¹¼·,®©ˆ?´å0o/nºÈzà íÚ®mIÔÌ ›‚SIJ×’¥Ò:Ç 0Öšå²À¹/Çã,vn f-™Í;U¸Û"讑‰ß eŸKž¼kšõ`ZNÒw3yíöôeðJɰîìÜk¦1å“Í·ÑuÝÓ„]â¶Ô|ž#妋/ùƒ$%@Å<£øYùƒãr–fÙ£Dmà§T†‘X–^†hÆq™h`!9$õÌ©œ»ôÂe×ýÁo®¾à_k<ŸÑKg¼oé_¿ýõ7ýàKï={îìØ¨ÌýË­íJËöîîÓ"W~†û·kÿ„ÜÊÉœÚüyÁ¼Á/u„â6Ýl Ï\zÖWÓ.v£\Ð6hCÖoGÑ¢dS‚kdJ*=!KO"`éÈ4iMYÐcª×m°¦ýž;ŠÎæÛèôýp¶J?¶”¯±¹Ã€ùŒ$]|–=b2  bž6f*° Ç¢aXšõv}øÿØ;À¨Šû¿MÂP@ÀD¤hükbŠ`ÕDzP­BåDjëQRK[¡)‚­¡õB´ Å°*Õ"AQAý[µ¬("A‘C@nBÎ=þß™Ù}yÙ÷Þf¯dwß~ŸË:;oæ73Ÿ7»ûÍo3ï–Ê3oüðôk—ŸvÕ³CøðiE³ò®ø“Ü-NÜ”D®ð7(qed¶ë­3ž}jãüßh5bëŒ{ô+}*ÑßîÙUWW#÷eŽäß»%E%šß§Œ0ù%%þ ææìˆ˜¿7+Ký~S¹ï¸?ÂRä6JñEcÕ tÐäÚ%³dH |ÕZm@Þ´Ö–›ë¤é¼E[p±ë÷îô+Z]2[n‚n™Ô[iÚdÿu‡+×½p?›º¥gÄi˜ö ðŒ3Þº6{ìæ9þ,øŠ1ÕÕèÚâG"¸‘Ƚ2x $î•‘T—ƒ‰3•ám€§YmºüÞ_sàT~dáfú.g,D@†UŸº Ü°yÀ÷¦ïÙóMÕÑ£ZýϱuFï îhÓ¶­+3KnÉÙîrrTÂTÒ¨^EÃ|-ÌÛãàžðÅ®"¾ƒóËÊŠµEÒ Øw¼›”‹´ØNmE%¿Þ±üTˆd!™‘®”‚Y­)ø«Ì¡ âDà°¶l,ÑLÚ¦-!˜ý½Q$±^ªMÐ…ÂEÿÛjYf5Ųl½+×U"òQwvi/ͯó‹‹ý>f±KX²Äi½zÌÃl†O;„@Ð[·qT¦yá«Þ§Z1öO”‡Ål´Â‚`çÊ!·³zCëÅ0Ã-w_²Ë·²Ï< ˜ ¸&Nœ8wî\DH馠'¦M›6sæÌ˜Ó Ä“À›lÔÍ8ç”pL¿òæÇýà?_^tÞY¹^¯ë¼É•õÕÝ5ûððÖð6…‘ÿ£dë>9åÖIpE«û`{|š»Þ]S[/õyGÏ)}bÐÉ…wÓã¸ö²3227|þÉÂ%/¿ûÒ#áôe éØ/¹±´efÆX„H $íÛ·ÿë_ÿºñÆ«««Åž™Â‰€‡÷èÑꪪ*7jÀ… ž<9'|ñÅ.¹ä’¯÷yÃüÔ Ù2O’@ ˜:uêŒ3‚„ñ¤I“ècN‹Ç.FM dO<ÍPÀøZxëþ“Õöpâ%ıܠY1ãY.æójØtYÞ©Œ,èã¶í|¥‰­3\™í;fwêØEÔÕ\"š @zH8føššìÆŠ×þ=`M›´FpÙ‚­ŠªÈ3ìã1eÙ±9¼Ž…ÕœU?-{~»–Õ˜Ù-ì­ÇÊ?,ïÃã¢_qþ-«Ï½qŰq ‡]ýè°+Ëοº ºjYˆjÇ,ï›-Í21â–çe:e\ IDAT ®Ó¡}¶KË„L†?F¨k”æA$@©I M›6µµµ:tè$γ»té|ì±=O<ñ„þýúpÒ ArsUW×à+1##5¤Bj^ ö:e¤†¹•nUXÔ,b(å‹Â¨~ ™Õ=¼C΋æB–·>ièa˜íZÛqfn=ÖôyX‰+œÊ+îˆu}µ,6•ÓpÓl!—Ýò¹¡A­ü“k±Çœú™Rx¦Û´i‡x œÍjÛNy q“mXs&²ÄŒJ¿ ½±yËÌÄô­’€Ãäææ>ûì³Íîù¹Ü¯_?ÈkM{Ûó t&ŠYÜd¸nUª/jÆŒh…›”¶rsi9Í!•±òžfƒ¡]úû-õ5ª÷y qÌËŸ¼§ä^8Ô–Ìbi ÇxÎp!<£“ÔÐ%-EwZå I€œ@Š9''Ž¡E3s¦<œ0fŽb#"?µˆµÊ-«R¸²+ï6êæºwIµ¼}±!ŽÂ¿Õ¼aóyý‚7'O„(olÔŸFC1Þþ·±½æïœÛTKHmq[±3ô°ˆÊXz×€å÷ñÚ#^›ûÓ׿߸ê‚ÛËŸ¼]Á–ÌÏšÿ®]óß?’Çš*>ú¨bÍšÕkÖ|¸fÍkÖ¼_±w+Vÿ_ÅêwäÖÍŒcNÈ%e£$@ñ!Ïqçλ†<²³³¥ƒ™ €–">f¹3×"ÜV¸0GÞª´éV;êV¥þ͵l/ª¸U©¨'ÂfO)œl±¿–ØàwÜŶTr*qs]­q ¿åö˜þí¢qhÏ\M+kÒ~ãYyº`våjC»AÍɾÉû‹¡X”7Í®‡vvpûåé‚‚PÚ³Ê'Ï+ ¹áTÉÙwpßËO?¡7¢2d†º‰‰¸q‰z)Bübg çÉE/?²Ü’Y,‡ÃY½¯Ä†s2Ûÿ"U°Ÿ$@$@$@±HÅ,$³6vé¦É£Ä}…§4¸ºUé&jÔrÈŠùMu­±¬ŒjÕ5Aˆf 3M²äí‹Êbbú’Òà³Zñtÿ6¹âô¬ l¢Ô›6—#î{²|sýQçåí­ìo¿\*ÿA¸KQA³èÂk6 KM¹i4z5ï¹·±gÆ×»k±-†¸Õä2t¯Ú’Y(a!…qÏ¿ ïOÂ!°K$@$@$@ '2ŠÙ/™Ëqóusº€ìt¹*¤oØŠjã2;¤ÆZ•hbpaÙ¢\ÿš)‡Ó9“ýÍý%ÓÍ™]s6’ÿ<<Í ž{©ÞÝ€ø ÄíÕãŸ+–$   HGTÌéxÕ9f    ð P1‡ÏŠ%I€H€H€H€Ò‘@V\íóù`w—nÎnÊ\4?P(¿¬RÞ‰:ŠvJ‡D];ŠY%• ¸òwi><2ij7C<ô„zéÍÔððÈSê!ÒÈT/e]äàÙ«L­©x4•‘°ï$@$@$@ˆbÞ"‘#G†!šu Õ›ëZ¿Ì7¯Ðª¿ÔÄVT˜-ß/ôyÅšG>¼>ÍãÑÜ‘Ï2íÆ)·xv«gyVò"µü³¼k¢íë‘ ¤øDe8p ##ãý÷߯¯¯›Aá¼Ê²üùKÊîÀ‚$+ñ[~ Á?•Ò_ÊŸGü¿‘N5¾„[9Ö–YŸH€H€H u ÄG1cü]»v2dHEEE¢9gÔ˜€d†KÙL€„VÁ%¹.—x)^Îhoš] s foRY¦b~3šfÊHÝ+ÇžGO Hþâ¥+‚@öÉØ –iqÈ•vù4ùw<ô1ÓÈļðB){Ä?(cq4à¡þÕ7Ô#…'7 8ˆ ‡B$@$@$Ð ¸)æšššÈä2¹šºuÓú åkÚÔc볋–ÊðeQ¥x4¬Xƒz5døÚ ›´œÁyÚüÒ@г©f8ŸÀÿ8}úô?^ýujVFŽÔÊâ€OYŠeRÊPÉò€xV¢¹ŠÚù°8B   ø(æìììýû÷ŸuÖYax—åz>q`C借·pJ™&³Ç®Ïóû˜ GVþYœE÷óóÖ ç±K—Ýæb•€(2]DpˆÝ9T;¢bÀíÌÉV¾úê+5^¥›ŸþùÂÂ"¸–ýZYÄ\x¤_9ð@ jÞe¨åzáaÆÑiƒ%  4'Ÿ8æÜÜÜœœœÌÌÌæhÖæ—ñ“›f‹šÎâ¤ðMÏ‹õÃd$Ç¿œ0D‘àŽðµÓ œtÒIºhÆXËË—ÁÙ¼ô_/ ³ŒÇðxtÃ+œÌÂá¬þ¯¤ãYfz=NçÄñ‘ 4ˆ›1‡!—ÉLàÎ;_ZúG!Ÿ}ÐÈè“[Èd¥‡D(†ô%«få[®áÒ½,üÍõ×  ›'  hEñQÌ­Øa6EÑعs'‚1T<Æu×¾bwÌØkä*?µ ©,þ/C1¤LV‡ f–!(¥bnÜ<°‹8"‡ôýÄÕ¸w·2Û‰ž‰UMs¯¬JÉ<ÑÝ(œ­ˆÑA°m®É‰¨+†gž¥H ø€×˜í±N¼`«Î-ý¾æõ$ˆ‰sLøX9E ¨ 1„BÆ"?éVÙÿŸ Vnhxë¥+uíéu8àaYB3«E€ÑÄ1‹oÃÜõÓ[µ,Ô–ÚÞîw’—Å–Ï/2©Ñì´üÅÙ4»tmqñÚØÖÓŠp*±Ÿzx‡AmDV1<ó,Eb=Ízÿ²]¾d¾XfÞ/©Þל$@VâÇle™y$xÛvî‡Cøò μä¼3ÄžpŸÁÊÉp.»½"íõ¾»zíêן ¬üaÊB>#Z£þ`MM]MuË…m4|Ò ˜fÚ±yÓì±âv:[æLn^#âëZ+Å./…j2*;-v°Q6fámìØ¥›ÂO‹õƒ†I …ˆMý—”Ï+”÷Á’‚¹Éâ™xµš\ïëxŠvHÀaècvØåpš@ˆE¿ãvžÔ{×É'ìÜwÏ©ýwvÒÎ3n?sÀÖü“7ŸsòÆóNþLcH÷±zHWr}ƒV·¯¶:àbVÂ-<ÑÇ1ë{ Ft}ð?f”ÑùÂŽáÝ€_Zºcgûo1ˆ{h,ç/fQÑÐKSqã9!˜Gåàn÷š¯Gœ”–ÝÁÞ2S·dü‘:¸=œó¢»xU4÷ûÄÆ:þ—æaéA"–Ãè°pÚÀä’Yrð{˜“\¸žƒ¦«q&7¦›Îa+¤!Þ×¢8Z1ýÖ*ߪ æ‘ ÄL€Š9f„4ÄêÝM-|¸‹Ÿ[ó6ø<õ>o­Ï[§áá©s€b–±É*Z¹¡áÝWoø`ÙO*^®Õí-µãËÅí7?q`Üðþ"4jY: #VÌ@¸»e´;0.m­`mGín.c9*ËÖéaÁ%ëG«Š’Yâ{¿\Þ:^ÒámWQuÓcyiA ޽f!è›Jfy{m¡ì‰V26°ºef (y#ûÆîaKHõ *h¯–ã¶ (ÒäDv£0 ? ú,BB2‹íü‚Y?ün²&×t[—‰äóÁƳI€Z˜s ¦ù„ÀÊò>~žûûoÛ;`ë·ƒ¶|›[¹ûÔ»Oûl×ÿ|òMÁ§G¯->lÚÝO»wÎ%WÝ Qüâ3=ûÔÆù ¾Ñj¾-[}Ï‚~¥O剽2¤dËÝá‹|¯ c8d3L¤"Ä}w¾­&Å-íˆ_Êûøà÷× å—M‘¹"ÀC~ï«[Çë÷ñ±­(MÉËû7P/šÔ².˜•dV‚\V3ÞÁÞГÆÛÚ[ŽÁ7"¹uºáð;èàZ¶?lGa¾½ ž!K¿1ÉL­½›,ë#3œ9lùžð»°sK*æÉŸZšþ.dÊ·ëóI€âA€Š9i#Y À+ìÓ<.‚,ÜúötÒq§ ìõ“OøNÒ/ï;ýÎ:àN”Ÿ—S— 1 M<í¡UÓZ9}îÛZýžÚÚú¿<¿æá—>yô•Ïd³Œe†‡9Ò8fão»a²Ê™¼°Ì´¤. ;AÍYÜ:>t‡ìn,÷Z…~;"|ukú>pû&-XfÚôŠ¡H“.qüaS†Ù$Т”d.ü¢bl+œwS8sØî}-íËÉïúY±ËoQ4NiO€Š9í§€£Ô5x\‰¡‡g³OóÊŸú±ºÒi8¿Þ]'Â3Ämý ²q¸´Ú}õµõÊû~y×÷ÞeµË†G‰àŽ_¸‰£7Ížm»W†ß.êä5F5¨L;òðþhKì_!ô‡8ð…k¼u¼mÅ7–1Öþ-=$K£KÜt{ÑË̦}”º¡IìǦõʯ'=íáðí ñ ˜ É\RT¢B,Nëï&ñ NÀWŒ7ˆ*Ö¶y_›c @âÄG1Ë¯Ìæ5DãˆÀbž¨vaU´ŒÆÂ6#~ä »pâ® [ޏ–}¾:͇ â„Æ–ˈh†P†JFlD3îx Yìöj*˜²·ûÃf¥O D †;jöÍ7”ÞeQ3ÒÁŒ"Â80õÇj£ü¢VwÔš§¦¼ó» ¬Z´¶#îï7."›ù6éià}c¼u¼}EÛË›%½d¦;Ø‹XfA„’_–ç‘]HXæç»>Ïïcû}VþéÕÃ~¤WåI@FåkA‹p%—àw“_øŠ7ù­X¡³˜ÃVL­ßת$Þ–ïh»|+ûÌ#ˆ™€kâĉsçÎÅ\7í;mÚ´™3g†o|óæÍ[¶l9r¤ÑŽ}u|Ì”©ŒhVsùF#þåBáÛ³ïYÓ3‘ö3\»,7?بWqÎ)áYñ놟¾ËçkøäëÁg= Ö}ke}ÍÁ†£û<µû¼µ¼ Ga§â¥_oÝUÿÌsÏþsþ½â®ØòP·ÇFÏ'ÌjïÍw=¯ï—Œÿ_sÃé@ú•±|×Xf¦Ž˜’ƒÀöíÛq›Þ¬¬¬foÖ Zëüù×GÂüÔMŽ!²$=©S§Î˜1#HOš4)>û18p7Ê~ÿý÷óóóÛ¶m}7£ª)þ®/)冰QÁsx%áZ–Ûb <Þehß÷þš§2ÒÍ,7ZÆ&Ííõ‰¨ l†¡^ïÁíeZÝ~­vVó öÍ(9P«Ý…€ËvÔ£0¾oŽÃ#  â•C]»v2dHEE¶ˆ˜mЦ–M6¹„wʸkhÛ(\0aBIq£Ù¦[´ª[87 ËÆ¬ v-J‡î Ï&·Çç©ÃáB{\ÃnßôÝI«ó¯{íÌ1 ÏúÉ#gýèÏgÿø~ø‘E`†8Ôíÿ¤£Ùí¶Û7£¡¶º¶¶6È> ´x:ɺuë¦Ds„žfÿž¯«±©TùD–[Æ®¬]ÂN°!£8ÄJ§ü1•þ=©*ÖÁÖ\ÒB5•·Q0»Iˆ©ÑÉš/XÑyÛ-ŸÐ¤K­peØD<`;8ÍSãóŠ{\cµB—ߺÿd±ÚO¸–å3"›…ƒYCA)’…‡YÜ Úë¹öWO¨ýâK‡ÔÖw×ü·T§N9§O[>74¼ùÜ_,;YZ|öÍxöáÒ“N: ¿¥X–a& €S Ä-޹¦¦&J¹l³çk㖱ѱ½E«¹Qó^°¦vcí’É 3ZšĈʨۿá2Cûþï·\Š9777'''l¹lZ$c ˜ }¾yFê¨Ð4'MFD…¦™Áf•ɼÁ*šÙâlp;†×Á]rò¤pÐØ¦Ü4Zæï/þŸˆ»kþÄMLÄKÔK‘73ñ‰•vC‡kÚe> €³ ÄG1c3æÔÀ$îT6dJjô•½Œ'„g æâëݵÓ·ú{eÈ{þ‰»dËí™q›,äA$@$@$@&ñQÌ&³É—!6˜+©Ðž1Oß0#ùzɵ„g,xî¥zw6ÍhhhÀnsê 7vkF.vÆh©æi—H€H€H • ¤b¶ˆÁHåëÆ¾GH@ψ°‹“ @üîùG–$@$@$@$@$àH)ìHö @* bN…«Ä>’ $ŽsâØ³e    T @Åœ W‰}$   H*æÄ±gË$@$@$@$@©@€Š9®ûH$@$@$@$8¶û1ÿàú‰ë[& ·ÝôS‹\f‘ @ °U̸op 7Mó$@$@$@$@$B(æè=»H$@$@$@$@-MÀV1k}Ì- ŸöI€H€H€H€R€€­bfPF \=v‘H€H€H€H å Ø*æ–oš-@+på?îÒ|xdˆgo†xè õÒ›©áá‘§ÔC¤‘©^ʺÈÁ³W™ZSñh+õžÍ $š€­bö1*#Ñ׆íÇ‘€ï‡ú¼â?Í#^ŸæñhnH‹g™vã”[<»Õ³<«Ny‘‰ZþÇYÞ5qìM‘ $9{ÅÌ0æ$¿tì^Ô¬v¡¦a~‹—âŸzj<%óäK¸•UšÏ$@$@$@éH „bC#\tí«r¶Ë¿áÙöÏœñÌÛþðÀãÚeOÜuÊHl±/kuæÒ_OÿÕMN4×¢•Û¼@÷"ì•­=žHfAS/EØ>2~YQâX¦Å!s4¯Hº|âÁƒH€H€H ýØ*ææQ¹ÜcÉJ¥ö=abÙÄ'´Ð¢YšÜòê ×¾Ú¼qS‰×î/}Md¶¾´mýMƒgFÌ\/¿Ç8昻C$@$@$@©DÀV17w“n•óáßþðØf5Úí=üÞ93.ºô™glä°Ü{FcuÒÅËNÐE a6Ä©TºÒéÜׇnë÷Ëq— ࢪɈÀf„4# 7²HˆXg®,²dÿWaÏ"†9âeé}eéÌ“c'  t#`«˜›1ð´sޝ|î-C©-Ÿ~°ûªþáE>sƳn_¾wôå¹8½sùc×?cŒÖg§ýõ1»b/{rư>Âpå_~f§¿ í——öÿ¶áœ…hú§O¼ý¡Ë»zÒ¤€©{ÚewÜåÿøø¥Kÿ¬ÍxöGgkÚÙ3î-^~¤7wÂM³o}¼èÚšö–¡cL&+…!þxñä’¢Y¤‘èR?gÉâÏópO›¶í22³”\ƳË¢„¶mÛW¬äA$@$@$6lsóÞàÝ{·4)Òýľ>Ÿð:wÝûï}Z»hÜŠ‰Ã/}úé€ãY¯ æbgÍœ1øƒiÓæÂÈEãþþ³>Ë›¨mý²èvÌåeë?Ðn;m£hý®Ëç~쎦= tùßg\uÓ{͉C˜]þ§iËEú¬™ /¼ià_¦ŽÕØ>M•15·}øèo^úþ¯¸s‚~i’=áÊpË+.±ÁR:KY¬Õ¬©©ÛµkWÏcïÐ1[w9C0{¤¦v»!˜©˜“ýB³$@$@$Gv¶taa—ÐŽï9@yæŸ÷oûZøê4mÿ‹/¬W­ÿPë dz̔n¼& S±Ç½;cÆŠ…3VLÌíÓ§—¹uÝŽ8eU^´þÐò þÖ÷¿ÿÞSO¾X¾øc¨ü&½òAg£õ…µÔa‹æ¾Þ»óŒýýÚÌýdNÜ ØÍÕðóe—üWÕ!T³ÐË~_2ægݾÚêº#UU n7Ê ïr 0CDehØnÎãÒǼivËÌÞ$ú]>ÁåOFœÆcByÐàBŸ ŸD˜%ÍõÓÞ‚eØ…íÍð $œ@ðû¯ñžŒu†[ Óüùpì @#[s36òþ®Iç×–¯ tú¹½ö.ö;k›©òtåì1OK/o˜GPù³Â¬&‹Ð¿WÓâƒ._0Q›=næ&ýå§V¦‚»7~ÌòSÆýêõEÝ?||Ú: «šÌK,Œ!Ô¯ØC„aÈ´ŒÇÁÞ¿kuûµÚ=ZÝÞâQ;´šqÚ×»KŸÊ»æÎÚ´iç’á>Ÿ Þe·‚ÙñXðm˜[’·Ìç+”U7Íž]®MVé`[ùe•«'c|±Mí›×´Tàlp­ˆ^ÃtéÕJ3õü͉î=Jö«™#gòjßäfÊ4ž¿'a›dAˆÂÑÅEKð·­Ö—/™_„g¥H€âM „Y8ãìí¾\yöÄq—ùKœ9sæ0_ù›åê¥R#Ai=Óœ@I•ùÅîmZîÕãúØ·(©JX–·l]oB$ºŸ3L61ðôszUþßJiKÕê۳Ϯ½›ý§”CÒТes>߆§fÿ¢|ß '†ì¶l„G,b™üB.‹ë)lˆgÑ™ã_ù§½øÌGÏ>µqþ‚o´šoËdß³ är}}ÃîÝ»jkká]Æ!—âN&∰3›fr¹QüæL¶‘ËÃøºÖÖn¾è„9“§W,ZšI8 v ]ä ÉŸ¿$ðKÌÖåÆÈ#ªÏ‡Ûdu ”\1±UÌ!íÈ“«žù˜V²xæâñcí±©ãŸ ±sóöd‰5wÞùžVøsisæSšuGZ^ucßöÞ?öï¶ý±§šø³W½ù¢6윺¥çö]ªðšwÿÛã'w«Î˜šþ¿ª«î[‡á‡I‰Å"'à—êÊ©,žõ‡Á^ßÙ?¼;÷¢;\®`ê IDATp»V¿§¶¶þÔÂß\}÷×ÍÄ1û,Љ¨ ácŽP1oZº¨"òïZ|AçÕŒSWþÂ[î÷ðÿb,Ã:M ÈLỞ¯U”äº\f£fcì‡ÝÏÅMx‹B& ¾DÖ3ü’°c°ÒxVoĘeìIpJäט5H ÞrFÑ%s£`ÖgxÐü6¾ÓHùS”•¿»Í|> Ëšvùñ†@{$ÆŒºÙ6*C¸àš=V.±Ò\¨â÷WWrõtˆÊª|±ì¯^f6j2È0•·j½iš¶íùÙ¿¿Ï؈Þísn»sNÓæËﻳñË<¸¹ +öÝç™Ñòwålö»œÅK¡¡µmÛ®çqÇu=¦»¶c_}m7l”ÑóØ^í;v:ãø`ëŒþNoÛ®æÊ‚›Ù ½Esþf¤o#¡eKð²x™oµÙ£8+N+ŸuEIé˜JŸ/GèO×Ú2‘”ªxVù䦡ó|Ë4=*£|½kIù¼BÑÓQÙâØ4»ò½Ò®bíÙ š‘¡&¢›ÂxÁì&‘8»=[- B¬NÖP(%[1öÄ¢Yf‘@b ɼ?ôæøC2ŒÝ)Ÿ˜ý¡:Y8Ï盇xO–ΞRhØÁçC¨¶xŽH åØú˜…°pèCÑtêè<®ØÞâf~"ClŽ!¶¼Pñr‹e ÉuìÐ)»s·Ò'"/!—³³»ª­3ö|»«¦¦VTò¢pä>ft½b}Ø öù*Ë ?‡.ÏŠCñÈ/[(¿…EGÀ)Ý$¢#P@†V÷%ý¿;—/Y[6%X¢KW´Ë%„qcs •MÖjß¹Ù¸8믧¶hXúÒ¦[K†Ø./k“@Ë€dÖD8f³IÕŠ˜¢æW¹úÌøaÇþ0½/EQ¿ ;·¤b~‘tSû]Ívùöæy†H "–^c{Ŭ¾”ø jN–óÇÑt* ],„²?vY¨d±Oüó?„nöacf/^vóã:vÊpe"Smq´êh}ƒ[9ªÅ^‘FeÛ s9“–­-U;j„Y¥ùbBÚŽÂ)²!x‘×ZÄ€˜ºÉ@¨ 8ÂGÐ ÆPµxŽ’†€’ÌåKi¦·‡Xäê[¨mÔ²æ^CÝiò]€?‚ͧeŽÝ烴/+úßGþ÷]¾yf“ DA@}u+Ú*æ(¬§H•Šßþ´lNöôH‘á²›’ä²PÉþ‡+°æOJg ,×öù¼®6mÛ÷<ö¸á§}pz's]ÓÔÖWö¼þüÃC_º÷Šª£U õbí_„\…n¢ÆhD¹WFèuòJÆÆC3–ìÙ„KJI0k–…"ÝA|ÓÎÓ £DÜFÓXmy¶‰è—Ê Þ4×Iž'˜ˆ÷GIQ‰Y0+«¯´r‰.|Î_1b8ÔéMë+”oZ¼ûìúÍçƒ-æ“ Ä‘€Q7Û*fÝ÷Æ $ XÞJ"‹©/`±R.Ë,¿’–ÒÙ•‘Ù®C¶ÝÖßîÙUWW#Öf¬,[«~[…Kj¬6Êÿˆ[h\«§[†÷W3iæåíº”Ÿ·^¸Ádh…òR!C­ü“²]hóùóó¢—(œ§JÄ'¹‘ÅYMEuø½pPËò9ò=±óI qÄzz¼“±5}xcÉ7_øŠ÷Ú­X•”obÙ4v}žY¼ì>pïËhìòGŠ-“€ƒq8TÚ5qâĹsçâíl<1mÚ´ÿÛù޳"Å¡$!?üú:½W#Î9%ü>üô«®þ¾ÜPÙ¯’…b–rYlçuy”†Vg…nÖŽ©Ú³ç›ª£G¯<þçw?q\ïóïhÓ¶-venß>{×®íÿXZþ΋‡ß„–ëšÝz…–˜v~޶Ûq5m'XHÀŽÀöíÛ333³²²ðlWFåã÷47¶ ÷z?ÿúHDŸº¡Íò, $3©S§Þu×]~•Ç?ÿùÏý>f£”Næa°o$!—ýNe¸¬B0¤ÃrYå¨uBCC@cëŒ=ïݧŸV‹­3ê±uÆ1=ŽïÕ»÷ÇeddyQÇI‡a6¯ù‹v„bS¼ð7‰¶Ö#  –! ~~–>f£æÐ”x–H€H€H€H íè±jäþÝåôèæ Ói‡‡&   Hozä…•‘¥A3Ò{z8yô®üÇ]š ñìÍ=¡^z35<<ò”zˆ42ÕKY9xö*Sk*u22ŽH€H€H @ Q1ëL¨›9=IÀ÷à }^ñŸæ‘¯Oóx4·G¤Å³L»qÊ-žÝêYžU§¼ÈD-ÿã,ïGRâ H€H€H€Œ»d(û1 8™€OÎ…*¥¿Y2_óÍÝüâÈW5w­¦yäi”„[Y&y ¤£nn¢˜1|Æ1§ÇHûQÉ_¼ôIY ]Œ`úƒ55uZÝ~ÍÓàÏQzÙåÓðàA$@$@$ŒaQi@€CLG®—ß 3ŽY«;P[]×gÇš¶íº´ÉlcÇœŽ9f  HW~ÅÌeé:ÒeÜÝÖï—ã.3Ž>eñ‹ |È2¤ÉvõO ¿rí­foñ¨Å#wiµ»KŸÊ?ýÅ6mÚgdf‰àg íC0sé}eéÂŽã$  ´'Ðd¯ Ðಿ´Ÿi@Fa½,âÉÑüâ3ÕÖÔÕÖÔú¶lAv]M¿ºº^õõ »wíîqìñ:d ±ŒÒ^mÛ¶¯<Ï?ác†`VÏEDoÓìÄ=É£`ö&Qµ|B ‘!Ca“ш²n:m¬GéI ø-„×ʵƷXtT‚­¬˜?¢³ÏZ$@-B€Š¹E°ÒhP;È©°#éaÄ1ûWþ‰{•¨ìëîúçnŸ×¾c'Wf–(Y·[g3”2*‰;™ˆ#²1ŠoÃÜõÓE«âX¨--Ì@¸¥s&¯ö­žœnq–#°#P8º¸b½üÛVåKæ.ÔZâ-ÖjŸvCe> @s¨˜›#ÄóŽ!àתʩ,žõ‡ÁrUŸŒWÖÚ´i׳çñçúÞ)ç÷k˜ªÕ‰­3~Ðíºü½CO/¬ª®ª¯kˆ0ŽyÓì±%yË|ó 4s&OÖÓŽ!Ì€Ãä ÉŸ¿$ð·­_0·ÀùùÐPi’âM€Š9ÞDi/Y Èè µ3†ÔÎÂËìw4Ë ‘–Ëû4Äc [g<ûÔÆù ¾ÑjÄÖ÷,è‡æ­ñíîÝ5µµ‘Å1oZº¨B8§Bø¥Öàg_q4þD+3‚^†¶äù0š d‰_„'L@tˆ°jjT?[PP K¨Ãîgä½à)pœQctÉÜ(˜õ÷CÐ»Òø>iL›Þe&.Í|> •Æ÷¢¡²]¾É>3H€âA€Š9i#ˆ0 (c±§²Ø%Cªcéf[,‹ ¡›‘öjØ'O½ä®>çüê¸ü[µú=µµõ}/¾cÈfüÏÕ¼ÌFeä (Q8OùÀ—Ï/1Î峄SZÂ3ô2\à%¥ÚB˜¨,ÓJƪÐiM«X;yÂjp£Â¬:»zõôbݹ&¤Âtz„ åD@HæµD`†…‡9¼w¥Õ»ÌD¨¹ÏSf ´6*æÖ&ÎöBÀWÓõ×w=ºïPõüG?zã_¹÷O³Ž­Íðîx~έð4?xÿŸ2êj|™{žxnŠÐÏRL·iÛ®Gã{ŸØ¸uÆ1Ø;£Oÿî=ÏÈÈŒ8ŽÙi‰Àï‰*š¯ÎŠŸƒ‹}ÅA/--Xdæ—-”J7gòôÆ€Ìü1£ê=¨Qa!p!œ~É\¾dmÙ”r‹–™EŽ É¬-ZºIÛ´a­IÕ†ù®´x—™ÐX~>ø]ع%ó‹ä/PM2囬2ƒH ލ˜ã“¦’”ÀO^¹­âÖâ•¿¸qЀ÷V|œ5~Üøã{tZ4÷¾v§ýsé_¯?¾ûqç?sƒ¯Êçw3fvedañ_vvµu^vhŸÝµ}‡Žš–™b6þ¶k _Ešt)W–åËbuÖŽõM½´4*ß÷¦ÓæF›)œR¶îîM³K×6Jl“f€³ (É\¾t‘fz„ó®læ]&ÙÙ}>Hûò3¡XýÞä_a—ïì ÁÑ‘@¢ P1'ú °ý&ðêòê>=û_ðŸ=òÀžïy§KFÕ¥§îùpÙŸçßÿ‹ã†ŸÖ¦SMÿó«—¼óà½þª&wµ»¡AØ?Ni BC¨ç+&ÿã¼ëÅÆsØ:8+‚2ľÌáÂÇ 7Qc4â¦Ù³{elZ_¡X"¢±Ñ,¾ñm©~FnÐË0š¯Þ1–’6êf¥T˜5ËB)„Ñ2‹€Cˆ÷AIQ‰Y0«ñÞ•ð9|ňáP§›{—ÉRÍ}>8„$‡A©M øž©=öžL<_ÇŽŽ=®cûö;qòŒósEŸgû꥟kÚIy§àòg[^ûúÖPß BœåA)—¡Ÿµ¬¶í‰¸å6mÛʸblÉùîrf¬Rër©æ—U®6ôþÜÒÜ\W‰–_\¬|Ìø%× ÷RŽX£g|Ùd˜%¢¦8„ÕÉÆsùyëá¥V‚+Ì61+¿Çó\Â÷:;¨_’€³°¥`6½+ñ‡±«È%´rqq±‚Ðì»Ì_,Äç4ù<+¢vùVe™G$3×ĉ~øá††ÝT›6m¦OŸ>sæÌ˜Ó Ä“À›lÔÍ8G(ÝpŽ%/Ú°qsõÑÚ¯·}sGñÖ½û¾­9ZƒÇÁÝ;zîùöÛ:ܘ¤¦fÿYC¾©þ ÷ϯZ¸™ýk‘@T³ ÿËåAHæµøÌóKÞ}é‘p:Òe –Œ6lŠ—ÒƒaçI€$íÛ·gbK ,ܵ)34øÜ؇Þëýüë#áꆶɳ$ä¦N:mÚ´úúz½ŸíÚµ»å–[ècNò ÇîÅJ ¶Ö}î9gÂÊ«¯}êvyÎ…§h>·æiØñéÑOÜÞÁgŸ*öÆð5|±Õýõ¡o<îµ%³K ©›!‘ed3θ‚tv#(#²¨ŒXG‘˜ú"„¹l¡¥{+1b«$@$@$ŒcN w¶Újjjü¿Ÿ@å64x4wæ®ö¹«ÐwƒÛã«uûjê¼GUpW?¹åb¯9‘nfµGÈdhÂ2ĆÎ>ä*ýÜEcÔV(‡F$@$@a 9 H,’ÊàcF÷±¢2·¾¡Áç>êóÖkž:dâv$õÞj¯ÁãóÿøâipKuŒfñéo< -·s‹ÿ„dNe*Íö]¬ÆoÝl    ç bvîµåÈ$š·Çí­­sc `}½[k8¢³»ÞÝà;êö6x}B@ãð¸áuVrÙÇlˆf˜!ï(ÖJ%-¶Êp¶bæì!  h$@ÅÌÙàpµµ ï¾÷^õѺ½ß÷|ðÁ¾šêêڪꃫ}gx¾ªø¦¶¦º®¦ºêÐѬ!óG}Y,|Èr›9¹+†ÉÉ "Œ9â˜>58<  —s¸¤X.E TW»Ï<ó¬#GêTmªoøôü3’/´Ýûº­8ØÐó—Çׯím_¿·VþA ÿý¹D\†Xí'ÖýIå,8™UB½HQì6 @¨˜£€Æ*©D ®Îýö;/ÕÖÔ³koÃYž?öÕm¨9Z{èHµ'ǽçcl.wnæÚÃnø˜q¼ùÜ_Rixì+ @Ë bnyÆl!¡°—è 74xkj?®oØqòjw]5zäuwû×OÇ~X èn¯µíèëþî‚=èí„v–“ $˜€+p·1c?¨˜|UØ|K@XEeåÖ#Gvoß¾aʯ¿×ýÛo]_½§ró¦Koê}à½öû¿­þfÛXóîªu-ÝÚ'  HE~Å 5-"5y€ã<ôð1rÜà8    ø0 ãF³¥ :þ] E    HnJëeÞó/¹/{G$@$@$@$ ºC™Š9AW€Í’ ¤*æ¹Pì& @‚P1'<›%   HTÌ)r¡ØM     bNx6K$@$@$@$"¨˜SäB±›$@$@$@$@­BÀ¼ç2ïù×*àÙ $%•+WþûßÿF× Ú¶mÛ¥K—#Fäää$egÙ)h=ܹõX³%  Hrçž{î™gž©Ëå /¼pàÀIÞgvZŸ}Ì­Ïœ-’ @²èСÃ%—\rèСÇŸvÚi¹¹¹™™™ÉÒ9öƒ’†sÒ\ v„H€H€AÁ?þñ×­[————•EaˆkÀ6“•~~Qá\ù—¬—ˆýJ2ïüçó$ë»C$@q#OsAA¤sÜ,Ò 8‹³³®'GÓbn›4¶ÅlÓ0 @Rà/I}yع¸på?îÒ|xdˆgo†xè õÒ›©áá‘§ÔC¤‘©^Θq5zòâòÿÌœö”2µ¦âѸôFH€H€H€’Ÿsò_#ö0|?¼Ðçÿiùðú4Gs{DZ<Ë´§ÜâÙí¾hp÷·>Þ³ íqÛsiÅ…*¥¿Y2_œºè;=tÒ!Í{,óeCÚL¿åÈ}âùwo¸ê|$¦Þ3w…7Wå3 @: bN‡«Ì16%`PËâ^úðzÙ'c7´+Ïí3ïw¿˜0ó…y/¯}õÓnã~¿°öaÈehåw7úþ×·GÖT’) @ú bNŸkÖ#u½üNøqÌ÷¬.G÷ýè_»ÌyoÕMûÍhä4©{ë™ç¤$@$@$@iDÀV1¿ùÁÆ4ÂÀ¡¦ˆæç/ÒñÝÿèbTyôáb½¢Ê¹ÿá[UNDˆ´u–' d#À½d»"ìO+ ³¬•³9    #`ëcö‰ÈN$@$@$@$@$îl³º%`ºãáøI€H€H€H€Òž£2Ò~  @H¶>æµx²•4ÔVÕÙçózZ©=6C$@$à ®ŒŒ¶Ži×±«ƒÆÄ¡@‹@œŽ ød*æçKýzu?yØémÛ¶‰Åë’ ¤'úú†Í[vìæ¨usÉïgÎ}pVPø22ßxË—¾ Ÿ‚79w—=vgÉM€£Ò¨«@ÿé¥ þñšÊ4K𤇙à®_¿QË–-+))1vEÁ@H†]¡§UªCpC%çå婸ÂÂÂp,ØYf> ¤:8De(Á‹Ÿþ›‡îN6fÞ9½ /¿;ì{x>÷ü‹õ4$µRÕÍp0COoýr3ŠÍyâ…TGKÿ]ZÎ)S¦ -\<W6ÛU¢2Ay#úyþüù\Ø,:  $'Ñ÷H’…Ý#ˆÛ]²¡ná?Ö—BþBõÂ[Œ±EY¡ª$Hr5mÌùùùz•ÒUkûbï¶r$ëvðR…yÀë¬TxìMÐ @k0}´vØ 8‚@c³>´Åèà?V±¨»}ÛW¹§EÒ¹òóuáX;¡o3c0ŽÙÌ ÁcÇŽUù³fÍ*..6—‰4Gin³GÛh”••mØ þìáA$@$@$@iK 1*#ê f$ï¤[E`wøŠ»KK”t1‚˜Ó¬ÿmóNõt(£b‘ÕÅZ»vmˆÐd# ëÐ+ÿÄŒège Õj?¼D¦Ú~®Y éŸc$  HO®‰'>òÈ#G¿Ågeeýñ~Ÿô$’T£>eÀq'LRu‰! H!ÛwØøåžê0»J‰%°ê•§KKKôn´iÓæ—¿üeÜVþ%vxlH€H€H€H€Zˆ@ðÊ¿¨ƒ˜[¨4K$@$@$@$@­I@×Ãú¾ô1·&ÿ(Úâ"ç( ± €N€ß#œ $=]:S1G±jz½>×Û ±   çÀ7ˆOó9o\ ´>਌Öï[ A`ïÁ*W†ÆP™ˆxŠH€HÀŽ~P>x¸Úî,óI€Â'@Å>«”fŠæ–£µåÎÙÙ”ËQÓcE HsmÚdegwÒÂVÌÆ€w9­ä2fH]]]×®]kªÓè„4_D7|FeDÇ­µj¹x¯¦ÖBÍvH€HÀ‘"ùAì2ÝgŽœTÔT ª7QÌzÐFÔvY‘H€H€H u ¤gˆfzŽ:ugiBzNsB°³Q  HR”IzaØ­„ˆu?æ‘çÞ±mk|‡ƒ-a6¾l%k6Aêg$Œ=±ü•`Ó¦Mª0žƒÊÇ>ŠòòrÝøìÙ³uƒ*_5‡èƒ~JõGå‹ÅÞZ  &`ó=\,ðr9ºãñbÅŠèŒ$°–æ“€"«bŽ#G]%ŸÐ·ÿïoÀs§¬©à:%7§OŸ®>V.\Ñ©®¸¸Øøù(Ÿ››[YY©ÊçåÅsë´UTT¤_´h‘.š‘¿lÙ²Õ«W›Éçää 3xÆ©ÅÌ™C$@$9àï‘f-D'[aŸùûöíÃ3¶žˆÎH¢j5Ë„H ‰3/F8ÆŽ %ZXX¨ CwêiäL™2›Jí¨òJž"Þ¼yá´f™ÒÒRtF7ù^RR¢×ÕóC[ ³Xh#fóXàuÖ#†‘F<±^F/ñªª:¥»“ÖV—ʇ=jÔ(= ¬T5D-|ÐÓø¤ÃYËÎDeaiß0ŸH€HÀH ;;ûù矿袋ð£ŠhÂ'ØñÒ <ýs>Òìª*ýû÷:tèW_}¥Ü4º½€ÊÇK”DúË/¿„þÞ÷¾§ÒxF>üP‰2øNyë­·Tä¨èfã•h† O§=Fs\D³ÚàB…/C#âÞ_dB«€cŽg%”•ûÙî*XZ³,ìØ8fÓht±«‹fˆT¤q·3®ÿƒïŽá 3¨¥„²Ò¸¦F,2”ŠKVÑK£!4gQ9Œ,KûaÔc  ­W¯^«V­:ùä“cgêê@Óª.ðºuëúõë3z&^"N" ñáHFßhø Ï*ýøã«´êÜÉøFûâ‹/Tu„»†/˜BŽ9a,NZ)òØéÑ‚c˜U±Å=ÿÌ…B¡ÆªÀ¤[§ ô±ÈzÒêB&ƒ¡bŽ| ½`ÞCÈnÖ}Ìá@E<C™-­…î³Ï"daë"ÂñA^g¨Oµþ |áw:ýšBÑ"B–‘‰êáû˜U»*¬ÛØÁ͌ΠÔL7nÜÄ#è*èFì‚›Íö})9: HBÊe]Ç.½Ô¯^}õUh\%CuƒÈ¼ì²Ë”e¤ÕÙáÇϚ5ëþûïÇK•V§²|ÓM7©Âð@㬪ŽÂÈüÉO~2s¦Xõ¤7'"‚êLDUX8ݸ°JqBø LyFFäÔð+Æ¥‹$ï)Ž;ñø&iavQ_vÚ4L#,F$@$ê¶ï>°ñË=aŽâ•çæþñܱcG˜åSì„NÀÀ¯¸z’cFÄDM`Õ+Oc2 ´]ÿ;*++ë¿øï’5Ò¤®ï¯ZÀ—Ô½dçH€H€’Œ€î¬M²~µlwècnY¾©i=(悊95/#{M$@$@-@@Eý¶€á¤6iü¥=©;ÊÎ%ŽsâØ‡Õr„‹œÃ²ÉB$@$@éC ‚ï8Õ ÓÐᚆCNŸ7@¼FJÅ/’-b\¯73#ÎÛf·H_i”H€H Éàħ‰[J…ytîÚcëÖ­]»v=zôh˜UP¬C‡û÷ïoÛ®½ÆÂ!´*æ–cË{V¹2´Hw/‰CÃ4A$@$úà:=x¸:üqô8xåÊ•—_~9¶« ¿Vª—䨕 aœ§H€H€H€H QbRÌÛ·}•{êPÕuˆÝf]ȉdJ·$._}õÕŸüä'7ß|sJ' hQtO´(^O+±ŒåÊÏ×½°èI£8›á3Vxƒì#T¦Jã/ŒQvÏT$ô–vpÍ)ãª]4qó WÆ2Šä¯‹<ýxñÅ/•z&üÍðãâxä‘G0•o™©N¡$Š!@â¶ÛnCŽ^ù¯¿þº±9¤GŒ¡Œ«S–…õFQôVTac[zK;jª9Œ%¨'|I$@$`$0}útõ©?#ÇX ù¿àØCHBØCƾÅäc†!Q@°Î}pÖÝe© h_•3( €Í±Ëvv¶~¹UTüô•c®OBÐñí’Çã©©©Q6¿üòK¯×Û»wo¼Dbýúõ @úì³Ï^°`ÁÅ_ü·¿ý /kkkQÅ2SÙÙ¶m6­{çwPÝXö/¼ðB•¯J®\¹rðàÁK—.U/CVê­«òÈ jËܽ F1(TA»ãÇ¿þzç__ŠÏ$@$‰'"ÔíÙgŸUuö³Ÿ!GÿÊ@fvvvfY…HÀL VÅ ‹sžxA‰cåûž„%¤qù¨+¹E´†òC[Ú¹fÜz(†2ÑO›Y$g3t§êÛòåË‹ŠŠÔK$zè¡{î¹ç«¯¾:í´Ó† †üqãÆÝu×]؃sÆ æLÝŽ²†bÈAu¼Tաůºêª7*QŽü>}ú,^¼Âú†nÀË…•5”ÑÆtP&ºg×hqq1z…þ ŠtÒIHð  0h×®Ýo~ó|hWTT`¡~6DŽñ£ß æZÌ!ˆ‚@3Z…&žtë”wßz]ÉÙ(úÁ*vðûÜÉêì½÷Þ‹„zV93gÎT?Àéeõ”i|©P…õSAÖúõë‡Ïâ'Ÿ|2''çñÇWúÕ²°ÞOc‡í2UçCÛ1AÕâ3 €N }ûö<ðÀ¯~õ+|à~%æÏy²"ˆš€~Ã?Xˆ)Ž¡zPòÊ×—õ0H¹“Uø2N-_úB+áuFÃægãxšµ£v|3>þ”Š}ë­·† ·«~à%2!j±{(öÄO€ –™ÊŽzVÅTI¤Uu¸_xáfK"}Ýu×M™2‘Ç0kYX·†.!ÊU`PÏÔÈ×»ÚŽ^2¨'|I$@$DAÌO=õ>ŸÍd‚4>xy DG &3Ô°Z·‡¶€¡¢Š‘ŒdÕ¤ƒº5~Â-jÿf”×O!*x.ùýL=3´èF›Šµð ¨>òV¬XQXXhüøÃKd^pÁsçνé&±+6~žÃ3Êà°ÌÔ `à ,ÄóŒ3ìqùå—«SH›@Ló¤I“Ô)Dã”]aÕè/ùKÕµ¡‡Ê4¶¥w/´Õ¢ªžŠW}& d €odèû@©E@_ög|¹°J`Μ9M²\®ÒÒÒáWŒK­á9¬·#Îüæû^yn.®ÅÎ;6:‡H€H `- vϸâêIê;¥Zd$êV½ò4–„©_lÔX  ±ŸoL>æT‡’ý×}Ì)Ñ[v’H€H yÐÇœ<ׂ=IuTÌI}ñg V:Ã$’º»ì @2à×G2] ö%ŨeúŸTÌI}ý:wí±uëÖnݺUUU%uGÙ9  $#СC‡ýû÷·m×>ÉúÅî@*Ðcš©˜“ú²õ8÷òÀ²¼^½z%uGÙ9  $#pðàÁ·ß~»ß !IÖ/v‡R’sR_¶9C½ÏÓÏ<[_翉IRw—# Hð.C.Ÿ2´ izÄŽ@jŠÇP¦bNö‹7hpÉÞKöH€H€H€œBÀ,š©˜rm9    ø0ÞóŠ9~\ãjÉÝÛgÆÕ$‘ ¤)|§¤éÈ9lˆ–÷ʈ–\ëÖ{ûõ[·A¶F$@$@$@$Є€îf>f¼à&çÉ9AjŽì­¯=”œ}c¯H€H€’Ÿ@›¶:vånKÉ¡ØÃä"À8æäºÍöÆÛp´àòºtÎn¶$ @ÃGªÖ|ü ± ÄNÀÇL7sì([‚Ûã†\ÎÌÌ4Æž·DC´I$@$à0øõß ^ŸÏaãâpH !WþQ“%ä„Ó(/M8”X†H€HÀH€ßœ$#cl÷ʈ&«“ €Cúvs8#ézì pб 8‰£2œt59  ˆ‰À¥/tý×V¾ºÏ’€# d裂çY?ÂêÞ{{乃Õ#D-رmkˆêÊ„Y²YSN-ð»ßýn÷îÝúè‚^Gb泋-B¦ñxóÍ7ÊŠã" ˆ‚À¾‡ôÇþƒ‡:|èpÕá#G«ŽV‡°¶ª|ñË Á‰Åâ{ Í>¸•ˆ¯ñˆ¬íüú‹{˜CKK¹Â1Ee@àÞYrÓïoÀ°‘†zþî°fþ6µ•¼à¯Ð·?Êše1fFDàøã¿÷Þ{UHäÛo¿9cäL='L›‘–Ó,‹‘ $!Çt5÷êhu99Ðj«ÊœiŸ~'«—*mYÞ.Òpxá˜.ݺÛ°ËG•Žý…ÝÙÐùQ7dvõ»¯éB·ß³zÿcß.9ÕZLŠyû¶¯rOªÐ(½ëTL ¤9»¥„kÞ[a‹nQ¨^°Íî±ÖwÀ¨Óg1)fx”ác~aÑ“W޹^GgóøŸ^ª^Þ]öX×Yw'£€J«Âx¾|Ô•%¿Ÿ©°´ƒ³“n2÷ÁY¨Ž„±]eÐ|¶ìž©Ë—¾€³Ê¾*†Ž¡çH#±më– ƒÆ¦áó†ï|Á¼‡æ ŽN¡•kÆÝ_8ÒPÀºˆì ƒhZuZôí?0Dÿ“çÔž={ v?ýôS\¥˜UßÙlLä² Û@uD6'Ûn»-| ÉÃ=! ˆ…€ËB {v>fHI»æ:w=F Dh;q!µæjÈJ¨ddšËëMè °cÙnˆF¡Pûô¤+ÝŽ=9¨Q%p•â^èw–+ƒèùÎm[üŠyÛ¨g½usçCØÑkÁ`ç®ÝõΨQ[V´&2ƒÚ5# È‘CPíâO\;³Ì·$«b†Q8_•8†P>±ïIÈQ~ehS¸u¹¡Dªeóv™0hgªW?…bAÆÍg¡z•;ÙØÖÓËt#瞱Ѡ*¦»É1èòèâ³íF×Bù_,rÚi§á>cD-‡ÙZJ¨û˜áŠ:tè'Ÿ|ÑlTÞaZc1  ”&`§Œ]šµ”V.[Ë!÷>QìC݆gåE^d<+ÝfY˲¼*‰SèJ¶Bó)i»FQ]5*TcEÕ¨²Œ¨t²ê0ÚÊ NAh*•äÐþ>Rî›fíèUűcëkãJ¼†¨hn%DN;øËå_“$Fdð©8(f˜„l…§öÝ·^W‚5¸‘Ľ†¤Ö×&Â~G’vb¯^½ôQ(¥¾2=|}™ *†—p6Ã9¨ ¥ÂCWçY  gÈp5î£e‘¥’–QË=ÂYêgŒF€\ƒú ¸Ÿ­÷Ö0–lP£QÛQÌ ÛpTÇh ÕÕZ=„Ÿ®e†AÇŽ´E-X¿+Âlî[å Fù•¯/ë?`òø"98…â ï,V Â댳ªŒ]CÍÚ±«”¯¯MDg*?_N-Õ4‚1ôÂèjDj;œV¢.¿ïâÅþ—•+Wµ)½¢ÒÜæmæà`FH4‚=bo‚H€H€R…€¥2Fç-㘑øÈ_ˆf5@¨a=­r”/ÓD!Ý·"–Cù}ƒÈ˜Ëëp ~beß.*îQ%îíj©F•eô 1Öæàl8›w~½åuê¶±ÝÐvŒá`†?rø@³1pCÝ ¼–ôÂï€å(˜i&“jÁÁʨŠ^@ÀzHÒAMŽŸp‹Š‘@yýÒúÊ?=3´óH,sÐC„,£“Pêú¶–%™ªiµ};ÿ¢Kš­Òj°tkòàúE‹ð7ë¡Æ¡;az傘Q@-TQjµÌ*ßs³Bw€gI€H€R…”16’ƒnFB"€ÙŸ¶”%B~eÐ…øÒ‡°3G> ˆT…ZÛ‡•sð­¢°|}培¼Þt`ÅÞkÆ•–3AÇШꆊ67ªFºf›µˆ<–c Ï Ú aGY†¨UKñRùÂCWT™À¬ kQFŒý×;ÚŽy\Ì ‡€kâĉ>úhPÑ?üáïN}–iQ¸aéˆ ÏËÊŠé›í!“ $-·Ûýæ;ÿÿ¦ÖøÒ çžáLZ2Qw [|ôé;Ðì~ŽÚ +&U¯<=cÆ ã/->ŸoÒ¤I”bÉv¥Ø  HÞ;zDk„Xó¢"O9€³."‡@$@$@q ÎÎãfñ©½“-£5š­Ë @Å쀋È! @0ü”œÅ×10gÇ`ŒUSsR_³Ì̬ÚúúöIÝGvŽH€H I àÄnã‹$í1»EÉJ€Š9Y¯ŒìW×cŽ}ÿ?^ú ’ú*±s$@$¤ —9æXO’öŽÝ"T"@ÅœÔWËãêØ¹gjÜ£;©9²s$@$®(—ÓõÊsÜq&ÓLâÜš#    ä#@Åœ|ׄ="   H&ŒÊH¦«Á¾ @âà&á4ÎMè¡Ä2#@Åì° Êá @ô¹ç_ôÖY“R–£2RöÒ±ã$@$@$Ðö8¤?öw6ËâˆÆàT±èÔqEtqS½0£2Rý ²ÿ$@$@$ÐB(æo¶oîÓo:D—nÝ[£7lƒZ—sëòfk$@$@$š22\vßùõ泆}g×¼·â”¡ªüÍ«Ê!=øô³õŠ–™ê,±H Ê ýsòÏû¾^™ç_Ú§ßÉÆÖW•/>|pŸ~ʲ0 /£¼žFöwlÝôñ¿ÍÙÚQ¢hãÝðɇ¨ˆhËØËn:yP1'ϵ`OH€H€H ñ\6ÂØÎǬ"1t×2^ª4´¯Rº×­ÖGe™©ÎB¡5®^RÉÊá…Ýõ&v~ýEç®Ý‡^c6k.lÚ¹ë1º\†k<ÈŽÙhÝÖÕ?Œ@[› «5zäÐ؇…Õï¾ Aã‚)CüˆÂé¶y ÌiMŒcnMÚl‹H€H€’€2viÖRZÉÀÀ )+?«@BêæÊ1lô:›3-q(®ªC(Ã+\u¸qá`v—îpëBæøò¤5  HmPÆG«k ›‘‡&žTÚ<°Û¶¨]2ôSx)3O†÷± šöšqåŸe¦^ÑúÊ?ÄË…ƒ° !mlZ…«å¶,|ÊÐ|Õ˜5÷\š½^jåWÉÊŽÊQ õŠv…-{Ôœq\ÆS–ݶì*3NÀ5qâÄG}4¨øÃ†_1.áŸ`÷#’IDATcH€H€H€Zî’Î=ÿx—ìV»"l¨õ ¬zåé3fiñù|“&M¢¹õ¯[$  $%ðÚÊ·“´gì $”sBñ³q  Ht'Í¥`G’ŽWþ%Ý%a‡H€H€H€H€’ŠsR]v†H€H€H€H éÅl·LÒu–"    V'àcÖE3Ö¶zØ $/Fe$ïµaÏH€H€H€H€’s2\öH€H€H€H y ï.ǘæä½Vì @"ÐÇœêl“H€H€H€H uP1§ÎµbOI€H€H€H€A 8*CïÃÏQâõºÛvÈ®­:$3}í;u©=zX`š888888881Ž ,Ù•‘ѱKÏ\p’º¦AÏ®‰'Î;7(wÚ´iÏ-ÿ¯†­æ|^ùä…U†irààààààààpÔðù23³22³®ºôô3f×õAOš4)ó¬³ÎºâŠ+‚óªU«¶îõºê\¸½IFf§®=<î$˜&ÎÎÎÎÎÎÎΧÍ.=¼ž—+sÈ ã.¾øâ 0^yå[ó‹onм^×áÊTzÚëó0 äÀùÀ9À9À9À9À9À9À9à¨9'±æòi¾+/ùŽ¥ÙvåT¶+3«K÷^xV¦És€s€s€s€s€s€s€sÀs CÈÝÎÇv¡¿´õ1/Y¹ê–ÙŽŠSaL¶¼ø¼¦ê=@äÀ9À9À9À9À9À9€95{.íÇåXú˜m÷ÊÈîvÜÑÃû\aö1"­h2Mœœœœœœé0Nê׫wW_vÇ6J©«žÊÏ^ŸVUÝðmUÆæ¯÷XÎá쬣ze;lÈÕu¾m»lÛsCgÞZ^a[ó?ßúøW—¢FäÀ9À9À9À9À9Vs WÏŽ—?äšk®éÛ·¯cmöîÝ»dÉ’½þá—;í„v|÷öòË+þ³uwu³sxôŹ–>fÛ8fe1»Û±*g¦É„s€s€s€s€s€s Mæ\­W_}u¯^½ªªªŽ8åÀXºté‚qõ?>Û|=ä}ºF¤iõÂ*aëc^²²’{0ƒ= j¢9pppp¤Õ™ßû/³Ë 1ƒ”“^vîÜyòäÉ+V¤sÒaÈÍÎá_trd>fó_jŠ0Ÿ888888?»Œ` q7ÇFÑo¼Žé0äpæ­åE¶>fÆ17ûWHÐ_f,¯f9çççç€æÀ¥ß=¡¬¬ á–ú)¥3ác.))yí?;‚¢ ¾_ÐÛÙCVnõÐú-ò8fl,瓱Ë2Á49pppppp¤Ñ¢Øqþe1 %÷-4žÓ‡Öû׿![³ˆcvù×ú|^¦åÛ†ÔÇ9çççç€ÃçÀ÷Ïî}ÿý÷>|ØFAÅœýú­Ý¯~FYùŸ™«ß¼yL#÷¾ÁþW›çŒ(˜úçö?xIÌ51€Å¿þõ¯W|(㘠Ú&C–}þ¯lÎ0ª8õß'2“ú›Õr?Î8fÉ6œø–QÓÈs€s€s€s ç®~Kù˜W@.¯›±zŸùèi[ó?WÉý˜éU•¨È!ð.r¸Gך¿&qppp¨9€8æ?ÿùχR߀q}Þ2gäÙ•¿Ýûב«oÜÞó¾Ü߸ìÕ ñl¿k×®wÜq‡ˆcnMs C6 *ž]V¶üpn±i5dåVW××nžGÇ,;ŽguÝÈ88888œ7Ôˆâù¼åÕ%_{….—azàe£ÏXW¹%ÐÈ«·Ÿ½dô‡‚:žë¶ìæj”™0ë?nCæ!cäœ9þÜ‘sôaCs7-hʈ²o¦jvc7æUòû˜Õþ)ú¹iÓ¦É8fÿM!áåfpÈAÍr ÎÎÎÎÇÏïŸÝç¾ûîûöÛoMr+æŒ/ÿVôKíáe7h´„¬ +K¶ýùâ•wô¿XÓ®Y€tÌ Ù8öØcûÛß®øp'ίcLC¶TPóZYî;¶£¡Hjr¬‚ÀK?§Õôòš¶òŽ¢Í7/»ñË€›ÙgëCnvÞþxxN3û1CoŽúfuiÈ88888œ7<OmKu ¾O>ߨÄ2²NÐYõí´ßýíwŸ/œ³¡%Ú61.][yU£²Å ýu2î4ÞWü%àk¨ Œ±x˜8=lÄUÚg0Ò ËÿùÉU·ŒëÝ8æ >Ó>¹ëBU p”…ÆRa¦ô!‡ó>µÞ>fý4Ô7|Ìÿ\µ 9Í*q–¡÷s€sàÿÛ;ƒ¸Ž0Žol•`‹×ÐH¬Ü‹Äz(±i(æ´'!m Ò\J¡!‘H¶–R(…PJ‘ödi–BS¢x(‚7K#˜5E MšbŒÒoývÇqæÍì<ß¾uwöïÁ¾÷½o¾ù¾ßûÏì¼Éë @Ð4àŸè=æÁÁÁ‡3±…þ¹ÿù®…Oç¿èÈÞ5L^9q½é·›ÓWNô&¾—\ ˜ÃÑ£GûûûwÞcÞó6í1G(Y+Š3Þ5ÓÑg‰on^lÌÕØH¹ã„Š$OnŽ—ÌÛêÔÒ²¾Å{Ìx';«-—§+ø0,ph€*Y´®ÚŽå§áƒOÞë½<‘ >q¹ëËDßGí;§ômÉÛÔmûç·úîôž^Œ!ª‹nk ¶#”ÌEUm/S…‹÷æ’¯5P‹·žÛ)MÔ(×Ûðö»É±ër¹ ¯'öZö6 †K«ìÀÚ&™Œ{Ìx™YžB°£@ˆÀ: hðR´ášJ¥–——••SÁN§úO~üG;ÿÝÁ·ø¬ß6ý:öá«™ÓŒËݾÜYÁz®¯¯¿zõjà{ÌQKNÿøþ;_Íq¦IÎÝžËû}ÌÊírY}Ç¡8@Ð4 @žiàÉÏÓétmm-½mâÓÏáÇ=zôìù¶~¿ž>Kx_²Ë8U–Ä|jÙcÎ|3=zÐ>t®%Ž™8€4 @Ð4à¹޼ÜùæÉ3gÎП‹Ë-„|øïÚÚÚÔÔÔ/·gæ¬+k¼†#/ù^ò?y×´¦ïc~Ñ~ói%þdm•}p Ð4 @Ð4P!x°²:ñûŸ÷ÓÕTWÙKåuõÙæöòêÓ{Kõûø`å_*9½´\ý‚Ø--¯â‚³å’ÿ~\#.뵋q"Ï{̦F°ƒ€€€€€wL{ÌÆÇ&Z} 8fàÐ4 @Ð4 ø­À§Ë{Ìó `/ „Þcf xŠh€ h€ JÓ€ò<€=f/P€€€€@h¡÷˜+íIõ²¦À h€ h ’5¸ÊØc&¿ñññ™™™À0‚€€€€€—ÚÚÚΞ=+—F¿æÒ¥KÁßÇL®ÝÝÝ¥‚2.©”J*Ÿ"'SäîŠß‰?oî[ñ±ŸšÃà €@4ù˜†g1ç¥8úÒcÚ+5]4õ€!@Wž«àÉÜt¼dH1á{,ýÖs±™3ýé—ŽŽ¥xSF~R¹ºbVêØWaÝäÛ­DvìÈE0a}âëÚe>| ~SV²…“t ¶|øƒ@¹0 a/¦«\µå³I\Ò#è–è ÷ÓÞJ¹j)–ò'gö7¹ÙûŠN z„¸3Ôãç“ÉA´ÎveŠ&ÁåLw*:IDˆ•­“)~UggçÈÈHa{"MÄ!‹˜Â¶öø¢9–ùøŠÚ_äøjT¦×ÌÇQî_6ıl¡üùTù­·âJ…}…£øAÀ4„݈)‚‰ÏŸ­¦8Žv1]8ú 7%ϼ@ìÉs´°9Ó¿ø*HùNÉFùÞ »8 ÛݘaÞÛWLÔè+ Z'·´´TÕÕÕQ^>G §·i$ÄVÏßd9Ø”ùÔ”¤÷öø8˜&Pî‘g@eF¹­‰2ðEžúŒ¤ço·ìg–=7¾ î^;sùˆ´õÙž,"¬r•Zé7]ÎAîÅ… |J¯“ÉdUccã©S§†††âX4—B©1å F¸û€Œ)=¬˜jõK²´•IM9µôåÓ%Á6p¥JÙ.~‹ùQö×§TŸ¡p!`š‚xtä^ä!¦w—·¹ÜdßãQô"¦V·È—Lµë…¸X(Ï3û.Ä¥—²öQ€»ãâû(ÏÞÌ#èaÅU‹=éTvƲ¦Z!ÉÓÚ˜VÈ­­­[[[‡666¦§§ggg©þžžžöööÒQ‚SC ¦äx£g=‚cªèfùäÙ007¥•=H`A¢(ÔìDq,ã×Ô 51]ŠR”¯mœ•囘[šX.™¢Á^:&''oܸAùÐrùøñã555‡VVV677×××WWW—––°Ó\:w ™€€€€zw¹¹¹™v—i¹\]]ý?hôf³¯èD^IEND®B`‚PK !\‰æ˜33word/media/image18.png‰PNG  IHDR¢Ò‡+u2KźlvÅ™ïb=lDû•ÿ^õÇWv2ùÌ[¦.ü…¢Z"HXWŠ)$H ³ƒœh®­­­ÿÖ­[ï½÷ÞDp}@bŠ›”ª¤Ì%N“K À˜NdC©ÿNˆU¬hrRTp-±ñ‡rÜ ›Ö3ã?š¿^›˜ÎÆ7‡˜€ÍgWýÊ«oÒ†n¹ù{ ~\ JÜÅÈú˜îÎ;ï|þùçûƒ¡ïÿûîÌa-D ¹à'¡i¶³"ˆÈžìh)¯oCç“ß„§ ¡xAÞÊÈãxŽƒ&à˜NšÐ„h=ŽcmQ25I€øìc´é&ÊtðÈ h.ÅÞ–"ÉŽ6Ò&@›º0…l¦™Í„*aç.àÞôµ‡m¨28Ên`øÎÄqPê®]Ö)ôœ€’ÍY]¯½öšU‘IŽù C P­ Sšç&©DJ^ )•S!›ÌR ÙIÓŒéÀy؉»{Á¨/ ³;qâ„ u¤èÑd ˜Žæt|fG×°Íò <_³NaÝaGs`…ç/`½Ëþ=5ÝÙ:¡ûBgèìùî”É/Då*#=ˆtâ±ùþ°)A9‹Þ:¤-PcfySb˜TÍ¡YVg"ѦXœÂ?ºC÷Ë£©½} ÅÓ^S,eL÷oþ™–ÞSôs'Z ëx­-ZAD/i^8ñ¶ß¿koû—ìÜÿsCîÿ:qÊþœÃuóÂÚvÖÿâPíü@a¹ì½Õ)Uï*ª-#‡˜ì½U³Š´!1a°ItI;®-G„ :E©WükPf1)ØøO‡šÔ”XËÔ–¨`%¡^Y•ú%‡<®|å/é3hÿ3ødvN,Ûûf2]Ã_' IuQ΄ÑíÍA§t kýX9³W9õ×§ÉÒ×ò:¼«²JQª+w²TéÉ‚êüçws탷ÕîÝ‘íÞÖŒt²¿b³&›ùì‚ììç¿èLì$<”ã‚Ë÷÷S°ôh(>oJ/x ›t ÷¦ØAdÑ }#ÐfLÛsgÎv‡ÎîWÎ ]øB9ÿ¹Òùå©3v4GXnÕ{ﲞxïpÞèQ^\QÝe¯ì~`Êj|÷óù®Ñµ0Fn£Yï@—Iß™˜œö©TǾuZ%FCÂÊm{—¢*½uæ´e?ªDËqQùF9®ì©_ÐÏÔ—üâ)x Â_x /"ž´Z%vÉæhÀ_ê%}G¢ªƒî»M)Î;S”ìÞÛAókÈÝN}:õ—Щ¿†Î|:½ÿÌ9I®¨7¯²Ü-S&ÿ`å •M‡õÝ®»>–A®%•áÊ»ËûQáü'ß´1)D¶{µfl~ÝaRÈîSRV«™¬^M´4°‰•55Ëž¤õ@ñ•e55+µbXmk†SRî`*zcª,÷£–ïxùP¨½†,xé%´$¸‚D@€u˜É3 Õqá-ŸÙ¹¨nSÅÊm›*Qmÿ㎧ž(üsÂ-8÷ ²¶Ë„í?¸€×`KþÒ[³Gê¶k¯f>‚/y.<Ñ™rãªçÎ|üIÍÓ^¢('Nw…N5+ŽºŽ‡ºNƒé®.kNÚ½1¿jUÓFHoYùÂMíyy£LÊÇ䇶~Ö ¯Ù²ª´¬óe-}zW÷SÈË´j…|LÃÁ\”õVM{w®–(ò÷@BY«oé~€˜Y¶LÙÕÝ­%mœÝ´¬…ù•»ÖäæŽ:\÷䲂…íijÅ£r7uwo‚Ø@óÃ¥]A þ7ט,Zö`@µ ­ý0PÛÞ}Ûè@vøÒÒÊßëŠ :ˆ Uz6þ)Ó™ò&d<(&¢÷RS&5Ó¼ÄYŸ—Š]‹HKyš¶ÂŽx‰„iŽeÚ¬ ¡™ãÝýÎ|òñ‰÷ßïèì·'Owýzã®óÝT8ÎòSF»_]ZµKêSn^ùBÖÆÝ@c»_]ZÙDø¤wl-\Z /ïz¶ª`ëjUuTnéª@•5wvµ+óÓV§‚$v`o­ºhR» Ú+iðzå.µ\¼Få>´2?ëù‡ºïl¯¬^ùЦQŠNsÀ·óÓôElžád/°j—N¨š©Àª&•ÌHáê÷ 8>:ïáU¡¬WwõÕ°Ø.J)…ñBž¶œÐ›Yöœ(m×_˜ +Ä~ýÈ\¶¹`ÑúÐ/ɲ^8 ÐÆ”M¬Iá •ØT±/j†˜TǼ7Ǻ„jïì÷õûïŸøàý]š«æl•Z‘ Ë)¡ï¤,e…¯Â6˜LÓ™¬úÃ#›4’9Üþ–R°p¤Z˜nׇ$º‚šö5pÿéjÔ.Æ iiÊ-+•¬WV+˪Wî‚äM×Þ½:-_¡©$jÙ’Šœˆ{þ¾Šï¥ôÁò=Ç÷öz—A+Š'¹(qˆ„=Ç94bR³rÛÊ|ùÚ¹sç† b¥@åô±{ˆ¥ÑúÑ`D…3gÎ 4Hª~ „/f]4·é¿þëÅýŽwÍú¯®¤ÿj?»åÉ“, Vs¹ðc!°S–¾²[yM²ìÉZrðJ–¯p ר´Õ?ÜH(F]¾ ¹Ü(X\*pZ@}$I[ÁÂ,v¢1åîöš8ÎU@­:‰¾“Fµ#ýr'lÐ-ƒm¹;9¦Dª6‰šjø0´4»\Æš¡Ð䙫 p -%}òg_)GŽv}ÚòÚ?ý]?P€RËœN·£ðœ@7º¸5*ÒmW¯^º@®ŒÑLfE¹X×_OœX³ò,´¶¶)581%×EEVÅÊ7/6²¯¸âŠŒŒ 0n"\ø†ôŸýìgæ“Vê„Õ;áƒû[_¹p®ëÂúá‡Áë pèª!&¬Æ¿ ¼Ôubß‹P¸ߦ;qâDwvbARÌÆaÛÑêtÅLs¦à!ƒ£ú¢4²8‹ŸÔ8ÿx¿;X±–=4kãs:ÌãìsW ì“P¤0þýÛã,•:FÛ•Ù©WR@(•ÛX㋼Ôev"‰¨ õÖŠã@Y£9°kê0¸e_)ÌAÞ S‘´yÆ 6Ü’‹9Èú3Ãt²XÍwSÔÆy‘[m”ù"²shAT3±„¨àD1"PðFËlŽ'>Ö$’š“^ìLâb»¦ðR7±ønÓw2â=ŒH…Q…~š¸ÌÄ RITÖQèÀ”ßàH viÝ^€ F'Bác€¾ײ9j‹òšÉ.ŸÖ±Ø!Š¥>Fˆ¦ÄA€Ÿtü3 ›tÚÓ[&ô+0î¦è¤_þx·7ßÂSŠ%ë`Ú£*Hèå=l´€$>tä³ñó¯é-ûKÃaóÙct¬ivüòÁEÓ«Øûf‚7¢5QÁ°7Ç(̤g’[©‰ÖQ‚ônØü„I¯éÔ`!›J©Ü¤ãjÙSî0ÕŠƒ?^šÐ>ÓJ;‰u<_#"(%;>Z±Š/¢D ñ ÇxÍ4'™éõÓ$¦F4N¿½Î4` ö‚2è¸^z饷ß~;ñÇzˆ ˆC ++ëöÛo™Îü@ Më€ãJJJ>D@’²²2 9ÑaÃ%´8bZ(ZA "€  ‹@˜æÖEt @/hó8/Pb]DHLÂ{süaPbúŠ^!ˆ"àÃãÁ.êcD@ó¢×­ Þaè"€D‹AD‹ê#ˆ@’!€4—d†î"ˆ€ Ò3†ð×jBM©†E,BD Ñ`<ƶà$ÝO4§ÑD@\ ÀøN²hÅS€bDHX$4—°¾¢cˆ"€¸@€Ð¤oôrQ« ˆ"à`6—à„î!ˆ€Wü£¹¶ŠÙ©³+Út‡à–»óê&ÖGDÀ-þ~ ¢±´8Ltn]Âzˆ"€ø‰¡9õ ƒµË“íœ+2KŸiðd+#ˆ"à/þ-ZU¿æÜ¿¢¹ÌÐ5SÙ$‹Ù`p6‘Í®h€…®úB]ë’e/½Ørj“Jx!ˆ"àö¸Ó÷™æ”q‹KŒ ݬòíjÒ°±ùšuM+”Ò2…¾Ø¼­ H®xó¼&U·iÞfmñ µËg9 ÕDP ‹S†™æD"Œ·YåÕ ŸÐ±-»´‘ÚÊ™7gœúн€×mÛ676–f«Ùh6æÃ @×063Óœk‹\ÅY÷C6öÌ^UÒÌf9ÚŠœÖVë™_GGýbJ…ª`1"€ ˆÍ©+×ÊJ-wS2Ó)aíÛ«Kd>›3/§²†îÑ·äd(¡ @¢G &4§(³î×R7xÑ\@Ï *mÝ·¸¾Z¡ª$¤[rxa‹"ˆ€Ì¿Óê Š… ÐT}¸î:«·ì…^¨©1ýpEr\Qn0<°ň"à esÎG-D@b@ÔÙÜÐéÓû}ðAìÃD0#Ðuíµ'ßxÃ,t5ÍÇïèˆdËDða©©öFMOÌÑgJpÑj–"ˆ@Ò#u6ÇGÜ~èÈgíG::Ž'= "€$*©©ÃƤL=ÒµƒžhnèÐá“§Œ¼|Ä0×ÍcED@ìøüèñ¯Oœ¶×±/õºhE޳ÇKDÀ#ÞIÆ+Íy «#ˆ"kæb0ÚG¸" ~ÿˆFsÚ—jêÿ¹pªuÍ4fdQj€vB¥n‘^®ÖÔná?óVŒfAA´L%òêbl`pÚšVÍaúJ÷_¿“GÇéònë-èAIqК3ħbòЪ:Å)vB/‹Žšåo9Ëò¦Mžà-"œø“ÍÁ|ɨ*lÑ~ ¬VÉÓ©gj¹&l)ß³\¥¸¤B|¹ë©ÅÚ"¥¨–¾\Ÿk°  UYÝ"æ´•G¦­euY[ºlgpî§.²ŒÎÎŽ±Œ…jÉ\Î1zXΑµ@¬nˆ¢¢IU5®QÆ+ALÖ6ʤGÀš«©RÊŸ]’®¡A¦¥£0<éã'íln1Á%ºƒ´õ£=S ó©éKví;µ:µ¼|R°Œf£ZÖÈÑ9µzéKžå?ŠŠªª1ˆ¹hîú¹až‹Êš_ˆEÕ(*#qAÀ´nõ‡æªb¬b “*3ÃT*ZY°—§ç*bf_G^š_b¤!Âr‘¢“[²z!w1plÒÜ\%#SaùœE‹R±ˆIÍ£èYè~õÁš³Œgg0ƒ¶+J–îI…–&dÌ1N·• …k)¬¢­™÷Ìd&¬eéK1'tÖÊnJ22§îùˆ.4%È,ÊÓXN!tçøV2‚;µüCLæ2ÊÄA Æ4Þ{ÚÁÖ´á½¹'Œ Ö[“Å*¹j'yÌër××*l'1*Ç)·4ïœ4ž®¯åV$0ËíÜGhˆk§=Ïñ­´”O ›÷ 1Ác  „€?41Ÿˆ1—à€ªÇÅlîÜ"q0’ÆòܒªeÍDè [Òë:‹Âct´1’Ëi§2¡PKy¤|.Bô> ¡,Fzæè1&û­CÆ1ò`C”(÷«¸tÇ¡'äÑÖ$@Šû€ éjdåºaƒº¾3mbÙDç$ŠÖ5 ‚“ §¶Qú¥©“ ÃðVgLÌšó1w`-DÀwx6£ÆýÉæømž@ O©ú¤3w=yÒB»–g¶˜OjP¶´È“càyŒ…^оÛÕ0×Ln‰¾¼³ŒŽwC%YË(šÍpà8ëòº² áXDebãùp$C1@,R“XŽô¢¢¢µk×vwwRRRR{ì±’’©Kð}Oìûæ¾>q~ì—IÕPˆ ˆ€_´~|è²áCÀÏ?¢ñ²²2à®ÎÎNVÔ¿ÿŸþô§álNO¥bå^$?)åò:¶X$¸{± ­#1BÀÓ1ÅȧXšU]ŽeÞl'¸{Þ‚ÃÚˆ@!àÏÞ\9Í"ˆ" ÍÁê5r=]¾ñι2j"ˆ"-ÞIÆÓ¢uð þg»B?Ç_À‰¶ãP@¢@ uè (´UO47`@ÊÁ" Dð(–˜bÓ’E«¨„D@’¤¹äí;ô@!€4ç&TBäE 꽹аaø:yá@ÏD ‘þqá^Ô4÷õ'Ÿ¸h« ˆ"ÐSࢵ§ÇvD N ÍÅ hl@z ¤¹žBÛE8!€4' ±Dè)æz yl@â„€_4×LM 6pN·UÌ6 HgW´Å)4l@ú"âWgúEs³î_‘ÓÜf°¶m›•÷Ïê‹ c̈"XøEsʸ9ó”ÍÛtž#,7oθĊ½A>‰€o4gà9åÈRV¿ÂKZ~éÊ^“E.½Ø²jÖÁ}²ƒ0hDp‰ûêLÿhŽã9–ËÍ*ïЮ¦Íe6»rmÅ›ç5©ºMó6SM¨]ŽË^—=ŒÕD@GÀGšc<Ç­XYŽ–]Úh:Ôhl,ÍV³9Ðl ¯~m*a"€ Nˆú3­vFÉþ\ñ¶öåÖ‘}¹†`6ÉÑêá5ð]±]UEYX¹›=BXŠ ®ð3›Sh>WÆŸ>d¦Ósˆ}{ÃÙܸôÌÆ½û¨»Tü˜SYCŸG‘>‰â*6¬„ ˆ à/Í©<×ÈÎXá)“æz®PPÉÁÍÉËšsHÁ¸ÅõÕ U% Ý’Ã#¢ˆ"à¾.Z)_u,f~{qwD\_¯ rE!Ç冈@‚'Dð@\ às6笂 ˆ@Lgs¡PÈÉ/´>½ßÄÔ'4Ž ˆ€ ]×^{ò7lLEašsÂqP8îxþ0«s„Q@|F ÚßiÀE«Ï€æD g36OG퇎|Ö~¤£ãxÏF…­#ˆ@/F 5uؘ´‘i£GºŽÑÍ :|ò”‘—pó[;®=ÆŠˆ"Чøüèñ¯Oœö²×E+rœô±."€DDÀɰ¯œ£ X¯4ÑET@D g@šëYü±uDˆ9¾Ò\Ý¢Eu¼Çu‹DкfË!5^P•à’ ͈nW»…ÿÌX1ZÑ2•È«‹hƒÁikZ™œ¿ ›à4¨aÔ{Z.ñ…V·ˆoEtÃJbrOªæD‡VÄîK¦î“Œ~ˆg¢td0a4SÌÞ_*ðV•íb±ª•Ü7š#³>oÆ ¸¤é>ã˜Q“ùDs9"\ÍÓÐ5x£+ae»Xܺo¨çÍÕ-ÊÛSÞR[TT«‰RWœ47&ºRþì’t­QB/”ŽÂ^¤Ÿ´³¹ÅTè.âÖöL-̧¤/Ù!´½U pˆVlÖN †Yª°pRU å¹–f¥¨hªM¹%å{¶¿¥/yDa\w0Äl*ûW„Ý—„Ýg3Šƒ‰æßxñÝ’m,>´æÍ'“Æ«L¢IÝ– E”åtбò–ÐPf†©T*´²`/OÏ/T‚ ¸¥§½zäR’£iÑjÊ™S7¶¢Wþ\çê¶ì)œ›ikèœÖäÞÐ軜úw¾6×× á¥²ae̲IöÉ– A-¡dm ~q«ì¾äë>~Ì@:!L42-ÒvŒÔñ"JlG§¤PEL0mMÝšÁ;ƒüÚ†·@Æ.¿#3¬)‰+r‘øl0èùDs$+ɃEkx¹&ã.ƒ_!Ý]ƒT›¥{R¡< )³@ŒS*æ% Kµµè÷ÀxƒŒ2L¼ dÅ»“‘©|ް\>Ïßß`H šñ M5·3؆¼Hšî3.øØë{2ŸÕFº=ƒJH+Ê…â("‹62ÐZÊ•à–ñÏ–O……*[‹¼²>Ëž*’:-eÉø—ûàFêÍ©I\fTÕ§T^·s+4©0ª¸ Ûl}¬º— søHÁ‰eÞ t ­bZeCîÉ›"ùcs 䳯œÏ¸oh^»›wèÀàÔòu¿Q»Ôu‰.†Ú±ÄœË4GAL2P}БwQ}Y­ÕÀîãpN¦î3ïjqa¨/õíˆI[pˆsë{É(" ØŸV“/Ù&#ìFO æɉ£_2þ­±/¡é¯#¡9`{+6¥“Ù´žCdĘf”MmiKwÔR‹ÙܹEâ> ´Y!2,mUõZšw =\4ö,_¾Ç ³1¨Åô Mag5„ï囨}jW$S÷icÆÉD·†4ITSL?ñÓF‘–@<Ò «%§»4!0Î63¢ˆÅz61úâÉÎLsî8ެºõaÊC£!ø¹ŠW´öÔPb<Œ ÖVUÕÈÞÃ2,±³£±¦êBwL fèFÉRr1ï"EÙ '0‘MRßœk,j©Xê{値¾håsÄÁ°¦vØK¨Yß>4 BÚÂîKæî£ l¢Á@ÒßÔÃûÉ¢Dq<ÅÄQDÆÙÊ]+=Yî¢Ð!­í¥X¯©¤±XLk±Hbš‹­MJHêÞ䯰{D2RÈ›ÔiÅoŒÁ#'ð†,_µkŒg.§Ô,Ïd'œò:†íÒàyŒ…^о<‘³”Â’‘%Çø‚Qý$Æ`AðMÍNy ¹õCsó|(j$Ú¢•n­©.ߣ.«Ó—óÁvrtŸ6>H”·¨…ÛÖ&Z>,Z÷ЩîsQBž¯r8ŸH-’¦¨»ìê{.<5wz`ð C—«êÒ5cZbPV£c1Og÷f*+**êìì<Ï].\xøá‡õX5ÿ Z&úôÀç$uey $|ôÎß4ñ†"»™=‰Qm¿{‚Ýí°ìáî‹ä.ÝãçµDI$ RÞ²¿g"ž…x9Ð×9ýVrŠ3/Z+™1¦ •»žÏÔ(1³Ç,íD„ŸÕ ™Ÿ£½OAÀãj4õõdÅCåÜõ|ŠÝ”=Þ}ѹÛµ£iÔž¾ˆ)p°´s°;ÉJ¼ÊÕG—ãÕ˜ÚN‚ã“à »O»°ÄÜaŠ¡R¯H²¹^'… }¯4ßx×g±ÃÀD x'O‹ÖÁƒúŸí ü'}M }Ô¡ƒ¼¯ÑìÕ¹8y0 e€—Ʊ."€ Žpz.JÏÁ$;€×ÍA/uÔ.*!ˆ" „­,›C¾K†ŽCDÀ)^ œ¶ƒzˆ"€Äš±±Õ+´‰4à±Dˆ#<ÇA³’“Vû³ˆÐ°aÃL&)U¡IDATRSãè06… ˆ€`!+D(}™vÞ$4gUŸÊ¿þä{,ED g0©FMs=ë=¶Ž ˆ€poÎ J¨ƒ I]ÃâDÒw$€ öh4G¿UÊ^KDH|LǬà°aoÎæÁà¡Ó§÷ûàƒÄ=DßèºöÚ“o¼á»ÙXd'­ü)„Ó#à¸ãøýXô ÚDd† ÷æ}„¡ˆ"à§ÙœU3¿ùío­ŠxùOþᜨ¡"€ ¾#à•æÀ¡¢üGÑ­þýûÃÚ¸«««»»{ÿþ«¨€D@⃀?‹ÖúWwðÿþòaës›ßúÕÊ—Ú£;‚ò`Ú*f§jW°A®b)…º³+Ú,‹± ù»X”¸Ž2*SΕEMQâÚg¬èæø#X›óV›VÆ^qý÷­±cÓÇ]Uÿƾw÷Ú÷ñ—Ö4×ÌÞ<¯Iýù±¦Í2¢‡ˆ(a>ÙÙøÝ+‹â …Çæ]ógÑ Q2èÒ©ƒ^tÉðonÞö~JJÊüf£µmDÛäƒKK \ЧÙUÃøÑܦ¡Š"FOhC´]®Ñð. ó0»´‘ïM±Ñ[½ïPSÉvk¦9~õê<–‘—_zò´òçwŒºü’·š>ùâ話iÃoº~Üùsç­À;TÓ¼ÍÙê°¢£ F![ÆÎÛ\¼mκ99+šêÓœd}¼¤±to¾¾æ-c|ÙðLifµºVJŸ1ìø56_³ŽÊËúbó6—³Êõß통3±£¬@!&àªV fWìSZ·ãþÖbj]²ÎìXz"h‚}i,êœ0`¢†iR·¸da£ŠÒ¶msãÂ’ÅWë¨Û¸-¶(Ç'¢b7‘Ž2»4NÄYGµiEŽê¯ –J¥„tƒqWCæ’iœ‰Ñûñck¶QꉩUvKøT…0‚•d­$~‡Zš$r3͹s{ôÈKŸÛòîüáOÛO¾X©\àïr¿ËÕƒì‡,VÕ¡Iò:2G!ySyÞaæ¿Ø\9+îŸ%_}MNeç¶9õå†òœys(_²´¶éÜP˜e˜zõ„5h®’ÑœæVÈù ÜÚ³&Ø—ÆByKÀDPžuÿ …ðœÁuœÛ‚M™ÕÒÀ‘uŠXWè‰K’¨õ‘vñDƒ… ]Y£½i‰ãD<Šrà¡s{³RO„¨5ß0 x5±ä‚·ô¨‘žëP«XVÎglþÐÜW_uò}°ûPÙÖƒ‡;.ñ›§fÍ àì•Yù ÷ªœ¶PË¢ù©üõ¥QgÉ^àKóºRfÌpb‘2mk™hÇÊQÓÚ*)q€ Ùؼ­ÚHö†–:p@4ev)bÔ‘r®á†ƒÑ%=Û½ˆRâ̬Á“([HÞuhÂTñ‡æÎ;7ôâ3oP‡þÍìkJ¶çô·¤9òÖÎX¨¡¦†ÿ–m(Ž-}_cV9¬…Lé–•Ìt:Oöí%Û(ꦡ¾Ü…ý"uÑJ/®ˆ¼+ëõôb£;OŒšV~QgXc‡‰êYA©œå"¸mӼІ#D#¢K£´7?u1ÎÐvï’è$'±7kòd\z¦.Qè°ám›79ÂSDÏèª>DeãÐC˜¶U“·Ð’†¢ ©¿”Žc_ü(w2°[ÿþýn™šqâäÉPw¨_?KûêTauJÛwQ²ÇÉȞܬq 5Ù©{«Ùò“ /UÒtÜC²ý²9;;µ”,šê#¿ÏÃú  ?ÍZÎ õÜ7ìñìêŠÍZ1±>›j«r>v,=4å‘P)ï m²¢L¦O&©ËÑ=)ƒÛm­2R™X§w Œ.EŒZªû•Ä-ºæ¶è’Ôs™ÐnüØ›5z¢(áa“““£˜F#?N ”¿ÄV’¦Ce€&‡,PTT´víZþ‹˜ {ôÑGKJJøà³»Òîǽا ƒ?€)øðš Ÿ‚À{%Çp@/VÓ_¦Û“²²²²Çˆˆ9DT\\l™m9w?Ëå+ÔDø#à•æ0M‹Ÿa‹ˆ"ašã3½¨L 2"€ ‰Œ€Ólž5‘{}CbŠ€Íï¢Æ´]¿Œ;¥9üyV¿G;ˆ"güyn.ÎNcsˆ"€8GiÎ9V¨‰ I‰€¶he¹áADRv#: Ö`6g – ˆ@¯@@£9LâzEobˆ" AÀüÜò$!ˆ@2#`^´ºû!ˆdF}G^Ž€™æzy¸"€ô=æú^ŸcĈ@Ci®u8†‹ô=æú^ŸcĈ@C€œ´²ÓU<èc½á"}C6‡O“ô‰>Ç >†.ZûX‡c¸ˆ@ßCi®ïõ9FŒô1Ì4ëV\ºö±1€á"½3Íõòp1Lj>†€Ó/Iïc°`¸½-Mkw··wœé Á(JZêà¼)is³¯° §²²òСCçγÑI¢¢Ž=záÂ…}Fšó VOPþðÎg?üjàM7 ýÆu1J·:Nœþíïîîýíuc¥U+Ö­2xðè©ËzI6÷‹/µÞ8¥æõ·¬hîØÑ£÷””¤¦¦ž>}:q;&Ï.¹ä’;ï¼³¬¬,šJ]Ü›“€‚¢^€À‘ãgS.òÔe½dù=±@D—Uï\¸pxáìYK«Š +‡X "ˆË£‡˜Íy«'4}íó‹o/ Ù—pæz–¢sðe’xô!ÎÕû`ÈÆEkDˆP!Y ©Ï냰ù¥^³Ö¶é¶ÛÖÎ ßÁ¡Ð_"v†»æT§µ+XïΆ¬–™B$YÄx(hÙ|òšsRu$B »»ÛOo·/1_Ùtôè­`tÿºÛ²g‡Þy¹ø*Eé&sڂƶ/Í~(sÓÑU·’{?Ûvd f±‹f!”ë¶Ì}çèË ‰`Ä𠇌;k¾ðRxÑJ?ãå‹Qwñ`-DÀ_B Iü³Ù¶îéæåu3©Ñ+ÕmÜ{é3 ‹£©4 í[—;ŸSñ¯iÍDÑfô!·½¼EYþ/‹®ÔjÎ\ùå— .bStd|1æ =¹Š¶he1áZå8¡4 óÁÓ Äø—bUH%×ßüjÁþmß>zÎ3¯<­<ø‡Û^Ù·ñÛªÎâg¦B-™qç]|ñÅΕ­4ñ¤Õ ”'=ðÎíb£Ê2løüAÓ¾¶îîðG>iûP Í${r°6Ëzx{Õ™ñÿ~sÏŒ…0Ícq±\ÄÆxÔ!ƒó!mcÑ`ö“ÊÂ[ŸØEEYÃFc(ëá{f¨æi•ýÜz¸ŒJ”ÿ»eP[aSÓ®[®~\3”õǶ<¹q›bP„'­1M& VKBÕoý /kïþ9ùÇ­»æß:ƒ%+ïß …fÜó°òDI%¯$Øñ p‚kÔæ!.¥öU³Ë¯=rkm^ÃGäjx8‹,j—¸ NBލ£Ñýš9ܘ‹ˆ*$°5§fZ~]c¼xü³~ù'joåü{?zè'7©wÀ´­±?~ê!剟Wî÷«QƒˆGÀÑ7Ä _+z×HÚ¨ò«· ­ÞðÃÚ‰Œ€ºóÓÁ›m^ÿXæ„ ªÍ¬Ò—Ÿ»›–êh+ä±w¯(­»mί¾ÝüØt?ÛVm9˜ò.B{÷s/‡îš3áIêoáúæÇnR>-­¸M‹”ĪesÔºzê†za8 ÖݰžK>7…~WAß|‡"ƒHsÑ …ºI…Mm|vyÚ¯öìù•nS§”+îúÝïÔçÔ¸ÛsWøÖG"¦6®CÖ|Ö|%‘%¤ c8^¿Q¢qEÄØ4Ó®[ †:É‚€‹Ô&YB³ò³†l“›i.bT@’º‘,Þ:ñ3bjÓCv‚Òœ”P'ù9lЧÏþóѦ|–|ÞË<~º{Œrú,Ä%+$²|õÕWcÆŒ9pà€•NrÉÇŽ A\Ý&4‡óò"VO@ò'§ý¦é¯Ÿ~wâýƒÕOjö‚ë̹PÓ_!.«PFŒñâ‹/¤§§[é$—üøñãÄåÑmÌæ<ˆÕøŠÝ®P¨ö­]_œè%߬yÙ7ÂoAX}u0tCqqñÚµk׬Yãý{(¤S!>|ø}÷ÝçѤ9bõÄE àúoÁ¿Äõ/žyg„8Õó&Ã4ÇÎX#nsö¼×è"€ Ž|Ø Ÿ)qŒ*"ˆ@ ¡¹$ð]DDÀ1HsŽ¡BEDHNæ’³ßÐkDpŒ@øJWAED@’ =ê_êˆÏxŠO+‰ÓON<±âµ€uå‡ÑÅ[U4Ñš²²ƒòÞ„Àk¯½öüóÏCDÀq]tQ ¥¥~©¾¾îرc|çwzSÀ "€ôA&L˜0qâDÈãàëàúÿºÒ^ ÁIEND®B`‚PK !j‚.êµêµword/media/image3.png‰PNG  IHDR±½„7 pHYsÄÄ•+tIMEÜ :)märtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/10/17 09:58:41 LIM_J SGA250167?¨ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì]`TÅÖžMB“'J(iô¦ô:H~ETŇ>õùQšŠíÙEŠ>PP)" ½wAi¡¥Ð{QTHö?ß9sïÞ- IHB3ÙÜ;sæ”oÎô»»®y›¹•[)—BpQàwù£ü!‰AA v!-È…&@E|tÜð?ÎA«ý.¢¼H- ›œ’ÝБ.(êVÉrÃY¸@;~§7/ÌE7xø(àÌD`«-1”Á,ÒE . yôÎ*âE#÷ ÐÅEî¹`²›í`qÅŸ• nœDo¤‹#Þ|ƒK2³ÐL%Îê°~÷h¢ËSª‹²d‹iå–µ±!—äÒôF¥ñ²ôMv'%k‘,â´BÌSâ\EV ÑwüFND.Eñ@ãnvAŽAŠÜBIí«\D(ðNBÂÄ;¤8ó°¢"‘Yü%ÿæ ßäÆºZ‰ÂGRqg!®ôŽ ûVÀ€È*®n`—Œ¨ h_4Pñ(8YUËïDÎ5ãaA·ÂÌ“nù põ2T¤` 9Q׵ř‰…³ç-Ik¹LDá m¹<4·E±†A$YoH¹l šqÔ•ö)°®.ËП@«Fc¦œâ,aüÎÞÂ1ÏÅátì^ÔW:‚ÕGÚIÎÒ¶âÅ”%äÃmjÌw8î¸GªÛ"‘Š;ª '¹d…°¹&H¥;®,2݆Ûå¢7êï) WiÉA*ãJÃ^¶XkäÔI7Uð¤NW@´^.ÄȰ¶Ö¹ìª¬#”¢¸h“!N`lÔ@AbŒˆeµ$Õ™Åñ áéÈ%Jm‡¨,bÀyƒM8»“”;˜pB£`=¡€ðô\ Îr»ƒ‰Èjâ’ÂÄôäÒÍŠ¡a©¸:HKç %ly’¨{ä`º¥¶*Ê[ÔTÄ”°d¾,[³Ô6 ’`‘$´}0–H’“ÈéG„ a+×´]½DU-Ùb&lªîÝEAx÷ïb&Ëen:À_Ø$‘ÝG¸JŠçVxpcg3`(˜$[é–ª6Nœá‘ 1@í…v‚h­a°$²V@T%'HB3‰GÖ$î`)JU@ýk½‘wQA” ¯—ÂxçÖ2ÉÜZƒP ÂNM„Úh2¦1—3y>cJ—6ˆAÙò*´x”ÐÖb|$Ž4å "U(Â(q}á–š~r)ˆV›J”$‘'Ú%5p¶‚æâ1 †óPŠ)†Þ¸ e ¼¢æléÅ¯ØÆ`¡¬`"lÀN³d‰P‚dÖæ¦.…á Öž+_XR3ætL§ÿ8Ãb,ɦeÒÑ]É‚Aóç>ÌANÔÂlq•ßr”à4Y"°µ¬æ,ŒËGË «É\ÅìŠ×äÂ_è`†µ–`kÀ]› ¢va‡¾1VVSHLLÁ Õ`s`¶(q=€  ÜÉ—’0Á¦@Ch¬uSK#RÒ…¹zµÄ89Èì&çãn›Å¡ë‡›qÿÏLø "6iµ}SÈ>´}Jæa€Êó C(¤@> 0DH#…ÆšÝP1˜)î†!N ô5Ä•4åÉðp`8EÈlàPÚk8©,ˆù˜ã)œÆ˜¥—øžÖË«¬%ßá\)®k“ûè$þi{)³C1eí$6ľÀ;mÎI"æçËÒff–v>Ã>¤ riçx'²¸rMÁRt©,–*›³ƒá˜` /À¨€¶È—Ž3±m+E¹ ær&ÎfQµ §,54ºRD²¹¨Ç =íäf!ù€#'ÀIµæ¸•EÈd\ŒçI¬%&kÃ=¯5=×,™È&•~,†@f ‰ÃŽÁ ›Ò0]¢ MÖ0a7N¦7ž–¡,tЦâ¢0ÁÊ c±xEÅ m‹VCÛÊm•â,Ÿgk`4ã2`DÕ–¬œØ Ù²†¬ÖÝ~ãTH#¡>3[Ø qú]—±Èbu… Tl§Ùì?B ±ÕÚAbQDd›ÄÒ¸®˜'Jè«ø ÷ ÐIÁ Èð° Š ¶²!ÁZÙµäâZ¦Ü êàët*Ë¡\ÖžØÄÄ@ÉØÑ@/ .R7›t‰†Dha@C94g†²6&áòX&Ðêm¡Î[<‡bÔ´0p»hžB:ã™<¼À?̲Ì ”KêÜÑJyPvÓࢥ&&‰˜í _€´ €V<Sš1BJ YHãvË*kùÁ2¿ãÚ@çÀK‚óÊ™šBªƒsUÌTYø3Õ) ‡ÆDXH}IÀ)R{‡oÑ¥mI¬“èèPO÷p2KÏPXæÚŒ(™¡³ !ÏŠÅ—ßE?À2ìì–Þì¡ £@ÈåèMâ¨A.F¥ÙôÜ`GlŠÈ`@§ ä„4wgMéGsg¸7G1‚õîlÏë™@ëÎz°D[N‚l k*<5ÄJ`ç¦'ùÂ..E?*@LÁ¦¡WÈgAb½V“ÒèŽ €¨IfËÔ±qûçI+¢aÝ ¯46Å8‘©!Ä­$öÜmÑŸ¼ió4Dl*³B). >ÜÑÐNc8`Р<ïp¡Ú\"3VÊ+h| 4¬' ÐûQ§aÎÀðÐÁÕç ,xØâÄ ÙîbîYe0ÐHhn6/a ¤ØKÅU™5‘O‰{*DjAu€ÂQ›J³£ea$ é’|é’+èÍ(èy‚E4Â{hL “IAŠÁ08øÐt›Æ€D…ˆ7ÜÓX]^ N©XE[Ði7oqX®lÄI Ë–LÁC¹1æóÁ`N/6†™’*p4 ¸çÕ@ÀœÆ0lN‰(BO\oŒ„ÆCÄ ¸kQĆß+‚|~·n…Æ^™^ÙºT 7'ä³&€C¿³>Hqr–ï¼#"& ¨§­¡g£¹xxƒFßÙŽ&f«µ°Þ5±ˆ´Šy4õ°’<ñGÈdfRZ±“ü 7Ã@qMòNZ¢âŠ© ö1É'q¼…Žƒ:U9<õ@ŽqlÞ3¥ V+}CÕRîÀm‹¦2ÔTƒéˆ‰Ú:"|å" àá„"Ü%¡?æRôÂâƒvÔ%ŽÛm£ª•)R5<´jxÑê£b)E°L‰_¢fÙb5Çý;¾Xq¿’DH¡ëŽOjD…NÜÁÜŽ/x®lX²}—ÅÐF³vnür%Ñ­¤`Åc …8c¶¬yã&}lþA'æ¿P¡P½Ï rYõdázæÒ+ÓÄtX²ÆF!æú$+ˆnÑ÷1&tÅP «ƒÜ!´”ÂfòëøúçÃÛÔ.ýÊò£!ÁfPH°+$ÈEq¼N.zåæ’Óvå Æ+˜^±c;Ô³ÿä¢7êG¾µê˜¶BKGïÌ‚Xb‚ÚA)Í-„ë üm|©ÜTœ²B‚ò„ƒȉM/FßÞ l§†e;}³+$8˜Òé"œJÏÂ/Šä É—'$ïÙ•ï6ú—³yó[õnóêï¬;•7OzåC®DòæËK·¸æ¥H>¾îÿ_ÇÿK¤Tb“çÔ–a7uºü|â,¥ò²”¼”rvÅÛMžÞ|Y”˜—®yèE¥áD\ó„œÜ2¤vç!+ÏéÐCIM³kf“*·OÙ…âà@œ¡åZ·Á¤ §S¨Ì<|­è¥ífÛ ÂÂyž\݈PÖùuÿî>|Åy"@ ‘2=W ÆlEƒ™5=¾¢áPsF#‚÷ðê†Ü‡= u)ª^¸eif’ÅÄŽ 0AÃ¥¸ 8aWHóŽä!dâv` Eyí!l‘0¥Òû0ÇY”©• §êwì|³ôæwºÈ‹) µzÞ²J©‚'íû¸m)èxjŒ©õßA4½áqðG*†^ž4SÀ´„0ç|L”-ìÕ¨Ç÷ƒïUÊ]ôHÓÈÞ£×Ö¢„rïsÏðNŸ®×<̵sœ¥¸)U½ßö„GYì‘%ƒïûòÏÛzWÃT £‹ 2šA“ÕЦ‰62_’áSýôà·&ü³27H*wü·¯æéœ°fžÞLI2«‡E˜3avE£+ìà‰;L%!ü ØRDø•Tž?UbÉ@¹O¯ü¼¡ã·ö«´{bX/÷â•ßDª5oï¨f=Tµ$käŠ]7ØýÜüŠÅªÚ(C;ÃÌy(†«õ»†9K,h°Ògm1肜—{¿ª;HMœ²¹Mwòž¯Ûpò“z¡G7¼\o~Ç5Ï5*!"È×XƒË‚È߸™»\!H § )Ñúå û`Bà¹7Ýà®PXýöM÷ o.ú¬J0æœIG·/ø™’¿ß²uX ]–Û ä5 ás2”fMÀÞºç-Œ°†#¶þH)‘lº48buS÷ûº‹Z¢+ Šã[uwÛÒ·"3¥\[T!dŠ8J8ºöùú?Þ±fpÓâØ9aßB Íü ¢ËU¬éû$Tý|íÒgbй/ÑôÛAÜäež„™) G’ýxTk`)Æ5Ù¤„´$ì[ò’‚WG4ï¡¥=Ëå-$,es’'‰˜éA;Šñê z1~Ü詼^NÀHrkšOð t@UúJÇò€JÑYC=o¤Ÿ` åéa‘S yõÀ"åªbu ôå ˜Ù·žˆ Î(Ð`D<éŽì|RJ‚`OÐwŒƒ|øzÝZ* j5½Ô–÷ çq%sÀ›µé…H×¶W•Kii"\”Û« €ƒ¯ÍÃ)ÁÆß.¢ísÑxàNòO(È`. žžÐƒxå‰ùÇÙŸJ ›äT¸ÜÖ½uÖýßwœ¸åáê—¸ŸT%Z~2cpø]3~ÝÖ§ÓÔ+Y‚6X ;Íúuœ™Õ¡\Q  ÷Ö¤Ú$ûæêÍÝ o}A®)­ ¸\ý[ÿÊÕ¹¸·þØk:KD§Oz‰•l"íoó>·ÜpŒ‚©Ø‡þšB;ÖÑÐZ!®Õ{вk¸Uûr¡te(H/%*w¾kÑô­'[”$#©:6½åîÿ ž`.¸¥‹mÒp# Å¶ØpX@¹¼”äJ¦-0†“Án°eý¹ªØ ¯–É©0š²¬!FÐà ­Ãb ä ¢×ñÞ:L°ïÌ­‚.ÁÁ؈àêÐuÂÒ!_” ;A`Lõª+†h¬ ’î8Å ^7)°d-(h}¬'5{ŽoðNbÑtñ¨†­Ÿ]”)ô?­RÍ–ßP^"’*njeÁ%lº˜8¯·\M$þdKBep¡ Mqg¬Û¶1öØŒ¯6N»aÆ¢=¿lÙt$áྉ[6}´zÉ”­;;ʵï…ß&ìÚ¶]êŒe00Û–½é~½Q5DÑŒi¿C¦Žÿü@¹7ЫlñüO,8BEŽ/|°R¿‘_ô+R9¼H•ðQ;”Ú1&´r™+=úÓ1”rûùÁ %o¬P²P…R½–V®£‡6¹ï¼çæ0ÛãRI%*Ü¡^Yºkûg7uâVC:—-õì¢Ãl¥¬fØå/x:²÷Ò£G–ö¯Ño–ú©w›Ê¶Ó´óó²5*—«Y¥|Í*cv&Óƒ—‹ŽêH„tÍdÃņpðú§:¿ýѼc¬†Ú¾ô¿§|<Ž;¿(VwüVÞÛ>¸ü©n*Õ¤Fé¦ÿÛ’|tÁ:Mùòñ–u#§ì$º1Mo*Õ¸zÉ&7—l:á7ö8÷‰eýš×Šh^;²ùÄmÔVÔñÅCëVhY¯b«úoyaÑIZ¬ÐuÀ,5ï¡Î5Ê4»¹T¯7Üê[šTí³ú˜t|Чxõ{ÛÌ{…Á;WŒt«[•4ßö}ƒÈïvc€;½zÀÝÍ+ÞÝ¢bç©;‚‚vÌjYi欃ƒvÌhõ],õ…'Ö=Ù¦Nd»ºÑíë=±î„vfâ‚Þ™Ar…5~dØÒ'êLÛG¤½Ëu|Ëõ‡þ¬V<sw³ñq'—¼ÓâÉM'Ñ™ZúN‹§6žB/}fÍ“·Å”ëP¿lû·§'^§î˜^/šö¸°TÝóy»ºe[׉n];ªõ—Ûe%t°qíY;ä–.7çá$(èÄž™³oX½Rƒ—ÍÚv†‡Zîž^9 m½òmê”mý&ø³ªÛ§×¯0mÒçmëWjS¿ò++ºŽ/yµAÕv ªNEuîÿºfǯw徯kv˜<áû˜êíTiWÿûÀòغÿ”ºâ$îúü–ZÑ-éõÜ¢S»Æµê6Ì­†?\#rð²c'—÷oñïqSŸ‹hYsìÞ“‹†Õм¥6¿þ³è¤ë-^˜§–<Ó¦þç{IùÝÿëSµC£jW¿õë]lËŽïUùþë ·5ªüúªãA•õ]ôÝþ“l5þÙ‡ÙCÐES×JuÊØÀ½¨4cFHŠ@of x%Ѐ˜÷_ôŸÄõ 'Û«žr´ëÛ6 #*ÞÌáÝ,ëxsG¶è »“”D»bØ'âÝA´³ÆWzÃÞ)A…M%º ß1KäiÞˆé8s¾LõX_/R¤³ò.ËÇC†‚^ä¾e5 NiD£±¤”Þ¦áDJ‘*`´g.d—°À×ÙR-W“TG˜3(™‰Ž1…Ä&Ð4ttðQ<8ä‡e¿þòS;U M -¸nóî#‡*üë÷¼›Ož:t¾hDä?nrßqáØlW¼ö¯^ÓT9qd­ûŽÔbiÖtôçšÞÏçákö>V£DÛ‰ûM$×>¾ gý{§>qô‰b”5sউ;w}z싈fwE¼¨†.=èú"¼é¬m¿÷V#÷h0ûÈÕÜÉÇ>óò¼ÕOÅÎQõ£nÚê©•»DÉ:ªöÞ>Ç]í65}¿ª® ûôðDÍ ‰ƒK…µõËhUkzçõï´(vlñ?oÙøÙ‚m-Š%'ïšX½Ûç éUôÆÊ³wAÍŠËò`Ë#nèvóýürÇÑöÅÃŽ,ûx`Û®;ŠïÅpÀŸ¢HÒ¥‹Wþ»Ö³5æ-}½*OŠÜI'»Õì‘[>Ÿ¶aTØ©…/·üäôÃ÷U%q¿N®Ñú¥èMÃÃfÜýÏ:ã6|\A>à›üÛ·z»ß_º¨Iqå:±f`ó{&}¿èþ÷¿ÿØu÷Ýf¼Ó¶xPО‰áª«®¡õb3Uñ·w¼oÖ¶#[–ܽv°ûù•ø`„]‚bÇ÷z¶Î‡+?*§ÍÙ΃÷ <ÖqR"æ¿Áž#kž«7p^ÿ=Š Ý+&Ü”ªòÈâo]­î)3ªÝÄoÞº¥ˆ»Dý†ºi¿hõ•pŸXÌÚhðÁ™ îùâ§Ý¯ÌkR2hߤ¨¾óoï¨{<>¹ph÷áý§&t¯B´Û¾­Ù~H¹M¯´*eñ9v|³»F íƒqϸãûæ½üÙët×èñŸGÅo…=ª]Ÿwà~cÁ¾FŃö|U¶ÏüÛnµzÌQïºÇ¬ßUdÅSÝžjÖFÝúÚ;úïzúÿÆ-m5¢™PUÃþ÷ÞT“v,¬²kZý;¿\Ñixsì«@ó㋇tÛðæÂ„&a¬Žr-›æjÞÕýůT"·_¦ÔOCµiÅ;%Éàá[ ë>¶ph›îJèþÖ†·T½9ÖiZÜ}|Ñð#›´«k%¢Ø>-æîWË.Ü ÓöOÞS£×ï)GŸîIV­Œ?ý~íPÔ*„ÝO.Kcž‹P1r-äñB–ëO(1Ç—•èhªŽÍ"^ІC¥Îʨˆœÿb†Ž@ÔÀsåÑ\žíE žü$“à fúhiØ"" ²G„{Ìkq¾ƒÖ\ˆWLà ­'õX†-ë`'²r)‚ãaÝXð¤PF`óÊ €“Är>þôZ›TtAçèIÒõå ±´·ªÓâÂïÞ™ÚF«Ö¥ú-@}ÌœýØA)ìm޶ë`«Ï’ò÷_yÏìýeàS÷—üGÁ¿.%­]»|Ú¢¥~/[°@pþzeŠVÿó¶ÎmΟ9=sö¦’…‚ó^€a¢!-Zy’¨Ô¬ØêÖ0· k=aÏ‘/w|Vðvêè¼Þt÷,mwCJãä×û·)¥Ü¥ !í—í|äfÚˆ(ßIM;txûžøÛKÔ%TÝãORtý‘#}ª•àñ€<™}IÝV¾> L)$ŸÜR‚Ø«+‰ÑF ^xdûôÙjîì¶s-öí} r 2ûUG–?ÕàñÙœ5xé¶GjRqí¯D»G‡tëúï[î<8cök}>sïaÿÆÓáX'ùeÖO·¿ùtåKé‰A êmdÝ6âé–¡ÉîÛ§,l?ñéÊPÉí®Þvä~÷ëñ7û.ž<¦Õó?óZK˜»j”ûùÑ1¡4È(WhÃ^Ï»z®Ú{Õb0ÁYC¨dµ܇іÑÂé[O´<¾ñ ÷€é7aCk†– Á•ûÎùrìm//™ðÚ-EAÌó˜C€„!Ãàpzùcûÿ€| 5)–ŒLÆ/â[õ‘…[ú_Ú¯[ÝŸ¬ï[VªF1ÔŽ •±ãkî͉)²;N¸åío£æêÔΩ‹ÚOPUFðêmFuúèû_O´*Y\›ˆ^{ É»×w?;»°¨Rûé¹ÎÛ¾ G•½ë_s?;“6Þ‰°B‡Ï[½=…³6ªåû·•£Š¨twKån?û½¡Éªh-×Ï{O%7ü´Êÿú®k%*Rµö³®‘ûO¨æ%E7U¢õðÅ®Á­Æ†ýúHEñyv)éeÐ:L|º%Îl\ÿ]ûß?i㫳iL ÈN¸íØ'ªàc6nU½õû·}2sÇÉ¥ˆäñɽ+ð³9†XãÃÿš /[œÌugi"å¸W_ǨÀY ´`Â5zzLƒ ž £‹zÛŽÝݪAGU:} s¾GÅà&ᾞeKDzéq1-K vuåê†Ù:7þz;˜w¦§Zް…ªƒ^'ù䨯{s¶îRn•JA”V¢,­øÝªlKè/iÚ‡ŽVa;Is²DJk²r5gf(2­ò|ç(†Ñ=>“Ž?^, IDATb݄ܒüwþ|;­ Þ@«ÇSªdéò-Yàì™?ÃÊ]jѺfÏ!.ÖÏ«ò•Ë[€wf¬ÂäUÅo¾¿£êºzÛ“Õè0™ž¡ñ„­ão¾;yÒÞ}íJ©ß>.ߊ=‡ÀëTWw0ed¾ro¿›Ù™ÉK.ÑNý ×ËßnÒòê"dHpïXùš»îtœÌSøldž¶ÁtG/öBV'n7jé›Í©ïÅ3Ýèñ‡â”«x³ý8+ˆ=Ñ=ñ ƒ²‘¸ª4áºuÉD5hÞKK_§í—§ìKôÜ8¢ÁÇììòÌ5·œÃK@³±@"áIþæö'ºÇôVO~?¯ïëÒc]Ò›këÄJ±F›‰VcÛÌœ‹VÖѮ¥ >tÿ¼ úêõIzš†Wí;ùÎþ÷6zX==÷Çû,AIaר.ýÝo-:Hëî/#ú$Ë£O”ÅÆÉ8<¸h³á¯µ«3yE§³Y¨[Ë@­WˆåŽ€T^,Ír|‡·Xhƒ›ÇQ=¨:Â0ù×ÿ¥›ÛZ¿£)µbϽԑ3©LUõ/ÎÁƒwóPÝDŒÊáñš»+p£«6Žn¥{!Å[Ÿ¾·ùÍîx·5V·vsb1z÷Ä:ÿV¿ßÚº¨û·)µÚC}ÉøQ صÁ MzZƒWžaæš(kÌÝQãoñ•?Æ`à³i:‘X #:x ÂàCÖa F˜±Ðq;Ù‹ár0:€˜ $4q¨Ž{æÇA²©ã€ÂtßP¹=Çt—Ï Vx× ¢jC;¹Ô‹]X‹cY¬Œ%”µ´o%ãrWË™H&Öy´`³µT}ë}ljŽ$¯¨/©î……‘¯d åÞêh)Ñ™ain«ìÌB» %C—á-MÂ1ú· ±2,Y\”ÖL‚ÚÜ\ì÷?þún»ë£ïW2cÍö5'‹Ö:“çØ%ûçêM‰¿î:½~Ù‘2áå“ ,Y¥¤ÀB¢5ú s½Þö%G½M?zh£»Ë=7—¤Šß¶ìyªVvç6ê‘’•ªÚô ×à&ã~Õ~ ‡J®vÛ~ìUü6)ž¼ml¥N¯ÜúÙmUèž=“MsƒÂJ²à‹"éÅ«ÞÝq~ÿ×–…"Ò“ÓUzo¤€¬è ¬9"/©wµ®#ïxñíWîúèö›%—l¢aà¯.®Ò®õœAï.軌]E¢oSï}¼ö8Ýlû¶uÏEVq)Zµû-óüpÙQ¶aÛ‚þ3[Ýu3-§ð¸3^ÅCkº¶1ô2p{n.W3_yáŽ6…^6Cïî[¥Ä-ŸÄέSùÖr#4óßïéUŒìáíwÃZV.D#¾ßÄK|fm)à*Öâ¥:4ÐF/ìÛ~¼ðuzRŸ bK@)ª@%1O,˜¢•–®Ú­‹r÷¨J; 4‡çT(B1êdTñzÃgôk~W¬ÃßýØŽ#l »xëaS†µì^« §©/XܬdòŽÑí{ c>·þß²nwÙ飶uþ¿3Í-O¹· óxÒÑ–Kë[Ú6y³Ó—Žm¬Ÿð$RÒ¶T¥»ïR?Îx2æfºÃ”'ÿx}Ïè¶÷ f)^ÿiEZæ÷꺷}ûwIaý]CHÃbÍÇŒ+Õåf¦¢@u$`Ì=øS¼T£A÷ iQú&iñÑÆ.U\I—Âê=ôòð›tQƒÞ]Ò«ù›·}ñŸf÷(ÕdÀ ¦‹6‘áÅšŽúäÙ²·¤"­þ3¬Õ[ëJâ‡a¦D›¡ßmuOÝ–ÌS=7IsÚ­Ç Ã»ËÕyɘ-Ç·<¹æ5÷Sß•Mº„Ï'Óœ¶Hã{Ÿtõ_·½s·G?]£ß­´¥¯Z>3¨å»ÑEó° .ܧƒ3RÅçx à ßÑ5Û‹Ô;gòùÁ-,ä›Ó4¦§™JÜýö­µºyhëO6ý‹É˜CXÌçÅÕ¬ÛÒbË¥ÃõòB÷­Ô`z>uèÔ!­º5l… Â|î’–¥““O1™s«]«>k}Ï$ŸCÃÀ2¦^:9(„>LOڢф`ÉŽ‡-N”vÊä6|2~ ¸™Ð£¡ðk^z x<ïL &rNÌÒÉ÷„”ó™5/O4̧pÇÃ/ËR–"30©Ì’ô¤ËâÅ¥y Æ;ßóJM'¡KáŠ:â50e“xb)”J)ÙŠ Œ“7–ç¹àÆRÛ•¯nH²šœ““vääjÇ¥¨S¥Ž›Ââ¬%Ù·®™kèæÂ…?Ž>tîÌÙ¼yÃJG(ðš%_üûÒ¹SG>\ @¾Èè²EBCñ©Æx†Aó òYžÂ,… ^*kÕ€7v ]Õ¢Z/‡ÉVº€˜vrdÉ™¤ÐòiˈÂL˜]'Ë<ƒƒ££,mïäQôöªˆ E83><’îƒfð’ˆ&Þà$Z Ø“/úäPWHº?|b Y„#×7;%tcƒ°d§ãã¤$Ú"ÂSPzÊ€9ÃJš¶£SÕÌÜôf)Z tpt‚¼‹Á z½ÛðF˜Ç‘¥4…Ó4X~Ä•;>âºX†Ÿqã‹V×,EI¾ $S°^A¤ Ÿá#tüá]Oäyñ""`éÌÖósYÄ=„¯†–%ŠRZžpB:qMþmzÑef¾_¿¨F σa×…Fûf¶ì‚ø×êp·£ë…HûÁÀ÷0SÆDsiÜÛ…˜$èwë–•Ö ?ÜØv0”Lè)®¹È›† ß*wÚýU¹¯#W=׸8|Ö——èzñï‹—.^¼ø×_“åìeø|(_Þx²t±ôð¨#&ZhàL¤†¸æØÿ­ˆæ*&94õTŒm›• 2îjÃÙ…gžÐTnèŽôÐQƒr<Ô`& o(Êvz¤Š,‡jé‰J}øÖ…® Œ(Ãq‹‰Ž>cá8’KEP ¡ B ·éÄqËó$Ú<Å\ˆ®Ì!=>Cèè —ŸÉÐà‰‘r§e²!¤!½qçÍ"¨bø|áúHæ':qVJô . ÷FÄí¢AßÈÃ=0éðÐuø¹{YPQ)>”ô< ÀPˆvpv­³¤J5°ÎB%}<×›ª"ÂúAM€¬r)OvàÅÃ7_nõlŽ#e‰ÈzŸ À©h#ךJó¦ ·¡“*ÝþEí;ïÿÞ’û£y RP•}Ù`ƒ3 ŒFXiodÛFزE?‚—Êbôæïä¡î–wq Éì"ì^³a™§(jÆÜé¢kBªCÈY†K; '–?ñÄ/ãþ×½TçîÁ†aø§¡NÑÃbd'޹H©„Í vˆ;K À  Ã[ðñþláBS © (Åkã1Ùz 5¢—t Ý.©=ΔSöý!,•#(ߪ!8÷ÿLNøéé·Üs°D³[‰:ÏÿÍ7W]—NjÝd¼È­|o!M|¤ùéâIðfHÏ;D9›­NÁGõé·XOkw–wšc•·<t¤š%P“ri[ßü°f?§r¥ :øª UúCIÛ–4*`’Ê[˜ÖS¿øì=˜Té6€FÀMR‚Ô9{:¤P.ÿéYÆaGÇL”hùø`&®Ü p Ï.Øtú<@aâL/šƒ#ÐCS`'$¹xv›¦°ü9p`…0[Òµ†é7©Oßóœ®$€†^²8Œ´|‡6¸i}€‰¿a! ¶5ͳM¾ò†/CGœa¬O±JàïãÖ 1| {zÃæ/GP”ÆÝÔôàÉõjk+u*˜K:Ûβ…l¢§Óe„IàÀLØBôŸÚk®Çø@3ÔŒõÂ;þôdÂÒQjä†k(ÝÐ$ˆD"\qì ØÐ YŒì†[QOT$2TˆˆŠ”Ö E£;#L`lÖÓ|qOÔ¨@ ‚•†VÔnb­…¹˜!È2¸¢\^óÒo¢&Ü/·ØPZÿ²áü ßg‡(þºÊÚ–;{BÙÖȆÜØ}EO`(Mª£ºªø•²jÀ[QÇ ©C´P0iò:–dwù^Q&Ú Ž ˆ(›èaë¨%Yz€^»Š•tÙwT‚]¡V ‡Ç_– ‹åàÁ!`!Î=Ç2?/°ÜÊæâ—`å 'ð¢Ò7V¢~wHpF=e‰crÛvgÉ áŠA@GÍ]™ZùOC¤"#±ÕŽÚ ¹æ˜É 4:a|‹¦ôðÂK<µÌuh TàI3<ž9ù'š;?1˜ ÃKø!9Æ]&7pÀ÷$QƒF§ˆO’Q2fÎØÙ§D1j6˜ZóŒž>ÉЇ R 1Yö?Ñz‘’x˜i¹ˆÝ— ƒWs&9X’õ¤uZÔÓЄ“˜ãk¿xþ® óQý"ÓèYUZ€å ]@>ꟸs •Æs%üS(@ŒG+ÔƒUÍ\ÉÀOËêÚzKDš¼´NȤà/ºë²M·K{x±]R÷(­Û1 áN›;þwô©Ð‘GT2V¢™ÅŸ9y„éîÃ%óåáƒ÷ødiŽ53´˜ ÈÉ^GjØol†O/m×óhK7ľ0ŠÆZvJñ FKôgý†jâ` öøNjÈê4™~cåÀƱÅdlå8F¶†À{¹ÆU>  [vMHÑ•$þHukC2Kˆ+ø‹FÄy“”Ô¯º˜]N•æDyò ´1iûÜã£ùàŸcÖ(Aqøg3-ÞÄÙ„§%I÷Q0×#ÜŠ9”µ«Ówv=yÒ¼h½ 0ßO˜_‚òJ¦›€Œ%Š2•'Õ·Ýë¤@Jû¤9™ë¸fÏ^"5:¸õ*NßWÁXfK*܈] Ý$<’ œ OÜS6ÍØ0å ïEço°COIô¨\Y‡JbÚæRËȸ „ƒ£AÓwÞ\Ùâ8 xHàyºr3fÌêq èp0™ãá¬!H\žÅR/ÏËZ*¥·Šx|µLÿÑŸà{zx“@7n)ãÑÝZ6*Ò… Eÿ„ný/œI«¥±` (  gÍY;ÝþÑ0dã…šáÉÁcÐ9¡ o|ˆ±`‹ŠTáUTÿ ñd"f,ô,ŒÕAÂ> lj&a>à š-4'ÒBÀ¿”Å'˜€[›‡VD7rÍÜbÊ]"‰°Fî-áh¸²w’bÿ„1¾„Í>œº²™ò{Ái\,ÛZ@/Ìi0¶Óà…ÊdR몉¥¸ÍÚƒ#Õ‘Ã,.É PÍi¯-T"Ú?¥Çdž!®4ðÁ ¯;yÔ£; û>\ÎOœ ´56Lš)ZP¾Ã) fW¦˜ p§‰tkðQ4¥[ Eq+m”ôõ–…ôåGü•´E¥?ÃÆoP‚T&âôZâºÐ—YˆeL*úi-$Au¬I1x*À·*¼sR«)æ°7‰jo"’ ¾ŠH®$Žú©ÂÉ~©¶œ¼L{¥fv ö@O:ÄP¹ØÄ“Î4‡xÝ0¸¯Ã »”&m›Û ÷ÃM3P9¬†ùRŸ\õÖ%Ô(éPÔ£0ç9¼ÕBÖã 6¡nµÒöÐX˜›³jNKçt­‡‡§@!Ñ…íä@¼´@m”fmiÃÓýΪ]›mA¸X\Å"ݨôrl¬–ÃÇyHñfm¨¼¼ÚY*Úäˆ}K’fqópuøÅ5S?Þz^gÙÌÒ­ze™*B¼•ó@ȘZ«ÆP%òÒÀ°0 Œ“t}X´’裃ԉ]ÔÃE¨=Ž`Ý3_1Njš3ogÝèT¿7:(bU·ø˜˜Iý ÷Œðy §àÈãµBÃâ%Øöâ–åHŠ-ÒJ`ra'%5©}ãô2ObŠ1mF^Ñžêp¨á±ÆÖ×™kä%ÙÉSÛ™¢fḭ=4ô2oe.S<ÿ¿LIïìÔøxò|©ô½o²dÝ šßñ€d iÀ¯ù›™ŽëÉçÆ‡‹'Pq$zÞÄ%©ÆØót·êñB‹T‹±z $ÛÍÄŠR)S¨½Kq¬vbIccD°ŽZL9ÃW $Z̤±["<ÌÇ DlÙå‘"FzµX¯BàÅ °½œd@@ çÚ ÌcµVOø Î`'üÙ–rv²}àÂ6:Û‡JêØ)G»ˆí~:p‚F€1òþc| ÕK’eµåL$¬íjl€-n$,HÐú‚ì‘nW”e‡]ÚJH×»¥³®wå P}Ëi^[C¤ÛPðG¡TÕC–ñ˜S–æâ˜Î·ôóÖŽ 8²RQÃ!ÇAe§z¼#Y˜å{*’ØSÉOc–7‹”¦˜ãr­ÝŸFa†Ì `0®aBè烇Ÿ;ÿ;=Ò‰vÒ³4 Ü^¦=wŸ‰l +ƒ€AÀ `È"Bh0(Q´P“zUéW·2Q‡Å8±7>±\tt&²5¬ ƒ€A ‹9{þ÷L HWz´lD‰­;öâàÕƒ€AÀ `Èñ„ÐÓΙ»2°M–¶,?»Êñ ƒ@®@ ¥Íý5C›¿n}¾ªúøÇ“š®îÑsE‡/ß{(š²¾.‡Hš ÄÃã¦Ñ|¼ØJoõô¸~uD”ûC™7‡tRs^|~]cŠ” Àâ²I?ëómø«#n/­)7޽o}½Éwºž—ª”Ó´¨iTþàYš­ˆÄ ór÷:ñ-oáŸ!Ø}™¥|Oôö2¯ìTµJ™Ñ外+c¾b«¯´v®Xtà@²ÖÕ·[··æénWjxôöáŸb³I%+ ¢r$IJã)[î)¯NÿžIËè›+ÓRÚ-r+ô•wX=Ž™ÜºËÜöÚÄÛH¤}Ùáú´èQ§~ã·×Ó”éñ`ãúU-ë÷u—©cñL ŒÐئš=ìÙQsê½z›5"¥ÌÍciÊ4žœŒ Á0Ú˜‡—î;ðÏIÖ (Oã0/óë<:nÒ£ÄÎËœ”&óÄúrJ3,„ÝGÞ•[}…µ“Q2b>·ÁMÖe7;x(NÅÇm:tG4ˆC‡” ¿=]íñ ÷­ø@÷þ"üSìr©dâ ÒR2G{ùŒ¨/|ø†?ƒê—ƒÿ\ÿ”€½K–*»lƾµxí±iݲÆõû¦$1 ÜÒJâQµTÇ;Z~=sý[ï¸ü€VîL—!4¼JÕzôÎq/ØàøHÏÿt™à$Îfq©›°dØê LÅð´Ô]†äRŒ?p0¹µ€CÖFuï—xÐL¿+whý*úáSú}b›Æ!ÒÈ[“ù‹ðO±9¦’•>©9‡:íãA m¢¸o{ôür¬iõþ²µdVJÇÉZé3*ÎÙà¡9/ ün¿Re»wŽÒ¹›>ë53üõNŽZJ)/<2¹Yÿ/ûžÒ^ªNãèÁë6ö®C%6mZÒ¬Î#øTŒðŒm$K¢RŸù¢·ûÈúzcxÆìM3»ô«i*Ÿü±L³ÌCÕL-]A‚êzäªO’È8ˆV<˜š=dðä8ÄZ<Õ_}!4¼SNp¼q ‰PûМA/Hu 玓@¢Ö¦¬Mgðu?}6Ž}äÝåÌT;+óTýU@C°ӡáÏMÁ7·—í.Ú¦C/éX¼…ªÏzyÁî§R:$ iÊVÛ^átQO¢UÐéâEéÓ!eÐêfŠ×žj̆ƒ·Ý^úІ5ªÌc¥ÝS6mè[§®:| .¢>ýr®Ûö+Žt˜éjó'Cf.ª÷fI1$!¾ôÐ ãÉ€ŸY–ÅàAÃgÁ®µªÝQÍ:tuÌÐ C¬Ž6ƒhxc°øÉ/|CŽ/µ;rí|WïÍñ£KCÃ1³j95Dp½HYÿZ X©$ú(æ¯OéÚ½GOèM6í=sVÇZ —¥áæÏüà‘ønŒ-Å?œ³áVr§´‡”`QÞB_òqB?•Ò.Q(ý­ÖH:¼ÂÓ(¸ÊÆ9“#Ÿ0¤6³K‡jMýðjµKÏuðW*ƒ^W²TD†CÉÉ%p×»½d­RMgR‹¬}dãÒ¦uúBk[ ®ÓwLßËQ»…@°dZãµû%»B#¹/òwKoÍ}ÛKzý!GЧ2øœø©—°KíûÁ3TÇÆJR^Dþß«èßh6}èP|ÔÝÕŠ¡Ô­w4Ÿ:‹"xQ¦wÄOÔJÕª§>Û|ðVu0!²tG½Ñ<ŠW KõûZ4©ã®Uªl¡ƒîڇ׈¹«Þš(¸iŠy´tJV”íV _k¶þ5®c)±BEÆÔb>d©jt7[ªJu¼»É÷+7M”ÄR­Zßèî!^:ذT ¥DŸRnY:L¹ý%BáÈÿ{”5÷×­À¡m ZKI”Ò½>ÞõâFGÿÐG«¹xäÿi°4¬U§¹:PF°E|ÖÁƒªvzÖ(a¡ÔBµ7B¿Ü”¬K)ÝÏj?¯p§ê*a¥Ê®ødpé¡Ã:¦ÇZ‡6~ ø5oþóºÚu½·~s÷¦¥uúPÝ•Vßm:T[([úViV6[x]ÇÚH´ëQêà±~XÑÆTæ4^G¿ÄÕ<¶÷E›‰Ý;h/)Õ{NNOe©­ÿøÊ8/¸œÊøÆÓŠ/˜6,ç¦&ô°nÅÙdÞÕÐ+&Ú®RªÃ1Ï}í¡>‰ÍþùIŸZW®€Os¨éÍ?c^G¿(Z2:ñàÆÒ‰Íê>DžR²V]÷›6&º>" ÒfëäoÅáê~&þïÓ‚¤¥gBãõî—Ré.<ÍÄ©¹Ý^Ò[9‚ß^šÁYY-þtRbêŪ/”r¦—,?cöfPš; {Åœk“ùÒâHP©Ú Ô”g¨µKZE4+’¨Ö|?Ý¡õñš1³@Lñæv Ä? ¦yâf¹ØR÷¡¹ß¯Œ©[Óa©¿V%kÇDùèé%* ™Ã_ƽ<#ò‰^µH‰€=qÍfFæÐæ5ñ¢aÉ2Q‰i)C‰›7é J¡ÖÒ¥{U®¿>‡ÇE•BõA_Çð)ž? KêBt“{9 IDATå^¹Õ¾^‘º«°_•ì0hD׈„CN7à“u» ì~ü3€-ä’«LSeh1*þ¶rÆ”øðR%µž6['è`aɪÆëÑÄ·»@ŽÕMù·—´ÖBÀª¹Z‰W²>ˆúeÏ=ÿY÷Æ¥ãÀ/ÆpÌ+¤ð@ $Nüø¦îòòËjôêß°ïÈÇ©£‰îrgSµß^Ï_ Í‘uúÑ7~tl¯ôM„ÂjÖž¦Ô ³4ñðì5ìÎW† ë=•`ÎD¬¦mlÐÄO ø0» ·a)ÞÙüÎÄ,÷q쇫ˆ{† ¬Iò·‹¥þZµôè~ZϦýG>\+ch81'¹#o-%4¢ròˆˆƒãz?ŠÁž$²†aíïФ7ljk ÖR„&… Äüõiϯ¼øè Ù°i¤ ä,’R<i¾É)ÀRÓ_¨vÿ\_¾—»hµW¤ê*›ÿ×wÔZ–ÒpÀèôz)• ¨€Ã êlöæ–Ñ6V³~ÄwÝš´ÀØO0ªåª;•S€õ°[‹ÊšÆkkåï–Ø5µº)ÿör¹úÏ‘ù®1“¼³]€~ša5:å:0$ä¶Öër–ï…•Èý‹(ØLŠAÀ `¸æÈòõÁÑc‡¯9ÐŒA@‰âf²•#*âšQ"kǃ¬;©¾f*ÀbÈô°Æµ°c1ãM©¬A kǃ¬ÑÙp5€ÀÉ3ç LDÀŒ™¦aeÈVjT-›­òŒ°k3\ë5lì»v8÷û…k×8cÙU@ÀŒWt#Ò )$''¹ý!d ÃìdráßÏŸ;”””B¬Ô0ãAêø˜\ƒ@ÎEà„„ä  κ!aÍÚµ1 f: 4T¯V•TÏtΆa†È’ñ ÷,#Ãxš‚ìCàÄñ£ù ÜP°à?òå/¥CBV˜D+3d°WÂ3Kƃ\÷)Û+AД5\-â  Ua¥°J ¢#MŽ$Æú':S ;n¼±-òäÍ`4`3ÃÃÃ###S²x̘1)e¥=ý@\lxt%3$¤±œIy¿AƒÖ kqw½k¥)åé ô½ö& éA éÒ%:RÆ©¥á«sF{’C é‘vÚ­›ÖÐ*á2D&;g#pUÖåªîy}ØŠï‡Ð—è›`0X :xðÐáY„G¿~ý|8û§dX4 I 6\»vM:1X%$,ûô@Ôc¢EþžÕ_n¸ñŽî7áÛ¸ùSãËw«qjÞ¬½ávbjŠzO2yÄp¾þÎFU´ºÖ!Ó¥ØÊ8Å©Èæ6,iÔÖÉÇcÚJ_•ñ@uèÝó§ñ߯5½G;@Út5TkQ#?ŽùÉè|ùòeº¥7n´yÖ­[Wn)’)‚èpøøñã"£*¬ŽßÓ(º”9}ê¬:y6þäMEŠÒÝ™3§ UE*´ïY?STÍ= œÙ2eÞòõwÔ/œ!.i.d:i.‘>³ìß/bÅ#ïéWáËýk3þÛûi7 ¯÷—*µtÄÝÃVˆ¡Ž=%¢ñÚnJ†Ú “˜5ó‡ölË/›Ó¢äÉã·oZ¾qÅ«ž¶ü§oâ÷üšJ)êúí@dO…>]Yò1Š/ž‘£Â¡…Ïœ:Ã"ÏÄï-T³¾:sŠïN&Æ«ð( 9!®Y/òôÞÄÓ9A—,Ñáê¬È”/\Ôâ ÍÞ{0Ê6lͰž+:|ùýW”²âýû'%~Õ²ÕÓKÖ i£V¬ÚUIíZžø`ˆ¸å+TÙg³ ÃÔ ˜ùÃŒ'NLÿþ‡ËêR´x™ä¿ÿPÉØµ®UáæTŠ$$è=:[¶Ohˈ†KÿÉ“7•²—ͺtéÒ_Μ9CcÃêå ë7jEÏÂ^¶ &(R>\-H<]¿p 76 U³ö&4¯©N;Ž#{JË‘š¡Û¶ì¡ÔÂ5»·¯É£Åéõóf­§¥pÍú…l©V"%ÈÆ‹ccÊ1G&²­¡í›‡þ6kÊ6îëÓºKsÆ꫆ƒÉeVªB£žíR<î‡:Ì¡yùË` éVíÌ”y[NR†e¾s¾`îOV¯ŽcP¢Ûuk®ôö׬O·á¶‚ ågÑxÊ'$‹® ‡¼¾ªÞ—«|‘¥gTãv©}?ô¼ûI¸µ‘jQuOBœj·$®Cï¦?_×#fÉϪÃpЛ`¸ètç]ž|*QN]ºZ¤h¹ªµSÃùˆ‘ó䀶þ÷Ån*_>Ä:‡Tre< ÁàÏ?ÿ<þ|£fmÓ1€oÑB…O Þ®È©sª|µ"ÎFo8K]ó™½ Ñåù >¹íL½n=ÛáhaÙ†„šÔ™îY=k}¡æµVØÒQª:Šx¹Ë›ò[áî7ÙSq{ÏQ²+E+U¸­ŠÛ°­p»nwðžU áÌ– EÊ·—ƒ urÛÖòí{>V8‰ ¨0‡<Vqó©s”QMË=¹:kÄí¡Â)ëÓ³5»wëYÔa~ êZÉ4„D6§ ¿ÕèÞ¨§Rž/”²h<¸Œ~:»iקƶâu«÷–>ÕÂsÞA½»$>bßž¦½^ŒQã§ÅÅ«ŸTÓž%EÚ*ƒ@.A &¦Ñ›o¿]´h±´ëQ®Z±%/K¿wï^¢ Û¹s'Má©§Û‹/æÍ›744tËÆ•5ë6Éð@Ü®`0€îúAíM(Ì@aµ=þd„âÃßP´z îµ£ËG.ãaC:[¤~ ŸFbKgËÄpQ¡šQ©_-z=Ækcêlü©ðålÝ{¦¦Â–T3Zd„RÏ>¯p¨^px uvÐöáAÑêÍ8îTÃ_"ƃ@ «“ ºÓ¢qô??pÊ:u£l Ùrõøä¥±× F,,§ ‰•7JWu]j}:²¦åÅÔ/OúíùwÐW®Òe·‰®\s µÑ2Õ¨çc‘êäo³¤Îô*'ÛJEuñX9ë.fÈ—=Õ§êµèŒG7kªbU‡f!(¾knœÄS·Êär#cÇžéƒÁÖ­[çÎK:³-h8gš×S”:ô‚ Ò1ܨø $=õúÕ[ÔòìN‘ÐBqë·-tÙÉ/ʆ:½~;o‘cKGl Dµç€ì›#·B8&’E#¢ÔåÎF•/Œø©[O)Äuù³g°;ŸîXb 6L¹Ï2#„ÞXää99ŽÛk=k1¦ƒzˆ£aﬥ¼ƒ·ÎÙ¿>ˆ²4Æ©Qtw7ô°¢º~µ´«—¾Îÿ\_ã̽AÀ à…@ÛŽ]|9°;üþþûï4£—#¨C§”ê5d >â“þ3QÔ;ݦÊG耺ozê¿|ª­6‡ šïºìÓ„e8OŽTØÃæûô©…O§.£8&øÂ +-{yƒ«³øXïÕx6Uhæž±'šK´µtD„rÊÔ-œ&纞l{{JNŒ1ðJ+zS b¾Š¦Cxï]¯úÖ)ó¾\OÏìF:°]m';Qr™üc¦ÿª%ùÙe-0ƒÀ• 0sÁÚ_Ö­(V2"²,Ðì>((8- ãvo¥g‚èû޾*›¾ÊÒ¡FíFoô<›c³JË÷›þyát «ÃãëÔª™… M¶!ýëƒl3Í2 ]±½ìŒ•Kæž={¶fƃå%¥w0Ää]}²d<0«ƒ«_±Fƒ@Ú Õ|­ºM®d0H›C• È’ñ ØmT4¦­:^$‚\AIIÉÁÁWû‘–«b|NjƃœZ3F/ƒ@Î@ +~,+X¨ÐÖß~3g9£’µY3˜ £UÉFƒ@ÎC `AúÙ†Ç×9OÓëH£¬®#©«†@¾¼y äËwC|7Þ¿`Ái|¾èª©kçxÌxã«È(hH#ÇOÿíÎsÑUàÔùdúey„4Z“l¸<f<¸„ƒrf5å"­Ìx‹*˨jðB`Þ‚EyòÈ[àÆBÅÂÿúã}ºŒ² *öûÙBgâ‡tù@–|>™~ÎÕ4\ƒ€A K˜õóÚ— ¢§ÌwC¡¼‚ƒóг:.þÔ1wr²‰Òëæáß,m³†¹A kÈGthY€×?Š”0qƒÃ•øÀUZ¬ø þ‹‹¥¡T}ì£/ﳿà:kán¸fõAž¼7Ð~QpH^üŠ=﹓“\Ö™¸T·Á!8\õƒ¸''~·~ ½>jÿ󀞓¯™Vj 1dáC‡¤«,ºž ,\\"§U‚^/˜¸5U6˜ˆK\‡¬ø~ÓTÏ'ô°ÿáï7µ?0q¬ „@pÈ’ý"zº(•—ªD¿PäE Ô¾} ’²ïÃÏÕ«K¾[7‘~(íÝ ñ”¸fØ+ÚOün%ŽPŸMNdÎû>Ü߈SZíøt ©ˆ3YÜ‚€ôb3˜1lèË—ÕYˆÿúã€%ŠXñ´7"CiÈõÌæç‹BòÞ¯ÀAüùú1d²*­O’XŸQ0ôâ Âá*£éÜãbR þ8ǃ‹•¡ƒen(TT¶>¨ˆ‰ n‡4âýûEþŽmR  "`Î̾&žeÍxpÙgåR" F‘R–I7œðbÎd 5療CÖì%‘Ûš`0d!³šóÀköýÅÉ2‡¬Y˜I¾AÀ åxóùÁ¬®‡,Zà™h ¬C`öÂuúû‹ Zß_”œ,““’Lœ 08¤Ï²Î_ gƒ€A «0ç‚°Yd Ù±>رk_V· Ãß p Pµr9±TÖ!ùøóÁyCòZŸ?0+Ȭ ÄOÒ…Cvü~²íÁ×I‹5f²:?øë¾ØŽÍ”ÿ8‡/¶3qƒCz}À3¸“.¸|ç>¿‹"âLæj0ä\ÁT²Éa\ª?­?üµ×rŽzF“܈À»Ž ùßåJNºäŽ|—/ÄU¨Ö¿ƒóz¾Q=7Zht6\“$_üýüÁŸ?4I©ºw¶3_ìxMVr¶õÃü5¼šÄ—!R ¸c<8¿«P­g‚óT ߥn‚AÀ £Ê“ÿÆÈç½DãA¦+æ6ÊtLsC he «¯ý¢à*ùRn°Âèh¸L¾-76g%ö*Áç<Ù Y‰ºámȹ˜Bέ›¬ÓÌ^¯óˆt›¢¬CÞp6 9 z2íÂy&“Z^çPÓmÖ9«¶Œ6ìAÀ¬²çœ&åüéc®  wrRpH^:KðÞ/ÊÆñ`NÿÊ·«1îQ-´¤ï Tß2ý™ŠÎÌ€‰J›4ƒ€A ½˜!½ˆ]ô—þ¾@'É´2øós.WÐUv1dK×>êƒwc›zwú‚1o[Ñàä壯‰:1Fç^|ûíÏ0 Ù†ÀŸœÎ“÷Z%çÉçN¾èsžœMç±sf«no>¯žï1gï3OFûO_‡GC2ýŠšƒ@®Eà¿|¾?þÀı#òçÏ—k0Šç&‚ƒC’.ýE›EAÁyüβéaÓø™SÝ÷¯¤:¨Þ cÿù@%pÏĵß]¯TýÏÔ¢ñ€Ö4LÌM€] é@àÛïæ¹”ûù§®W§Z:Š]1iªÛEôC¶oÌÄO—Û‚»ÂŸ¶e†ZçrOêßB¿œ øõíÓH|9f&_øûÂyú ¬ä¤‹ôÓJ~ç̘öΜœÜdRɪv_ò[3··y¦<‰]×·ö»µ¾ž½®­Šõ¯ÊJ½ó÷AõWÀÄìÐÑÈ0\-¦~7ÿØÑËf¼qµ$·\Õ=o _ñÝà¦23’¦‡¸ÉÏÜ3|Z‹±]ýw |¹Fu¸¤«obŠ÷W8b¥È÷šÌ¸áÆ¢—.Ñ ²è÷pR-vîÕ%†×e:uQÏ~¸ѽ‰¿Ôîû|[D+õ¿¿0˜˜o“gÈõt»«Ù‡÷Ín3èÊ©¼”jßëþØÏ¿³iH¿Tè/›e¾·{§ØKãR•~Yn ®PÀ<¯±DúÌ¿Uóçg}J9»ÝN­{spìúÁ¸ŠßN¯ÊƒcÕ—+çd»F A g"ЬÑM£Þz¢^-¯Gër„ª‘]­ðÕK“}•¡mœV]àõÁ2¥–½Ñeø !Y3¼Õ³ã9N4o¬ñ-è{úáo<+|PD³M¡C(sJœøˆ¨AôÄêÍ™j߇vipy¹¾z\W÷ù üö·`‘Ù>,X9®vß]Çg»õkÌ;µçM_ TùˆZ›Ç¾IEûE_&^WÕeŒ½ž¸çÎfó§½Z¼ØUøBI:?HåE•@¹Í^x¾Òè÷&Äëçþ˜~ÍðW¶›0}íâék_SŸMNlÖ¼åÌekµbul%5oE"Å÷¯X©¢Ãü…!²&O™Y©Ió(á¹/6ú鵋Ÿj¶_UzÙN¸?vг© u«Ä <9¯õ‡ _<ýå¦1//~¾“*7€{!&»®ó,ª…‹þAWúd2]éü »Çƒ9³æÕ×›EÒÐi˨ҸY´eÔ`ì×íÇÝ‹ECÕRïN¼žzcëõ„ÀÔñóçË›ƒ-Žyùµ¨&9fúñ‰±jßGviتKÃAKvÄP‘U÷$ÆÑBaY|»^MÔÂ5q*qéBÕ®i„·]ºT·ÑQÊi2°mÙJÎ*¢º>rë¾ý ŽÒþBã×ÌmùÈ}>"r09L5:?|ž7Ír5o{ömÞB*õŸFi„¶O¹?¥3ûwÖ‘€‰Y®¦`¸ÎÐ0e«e.ݤë€/ž|eÅó ÓEZ¾³è©æžráíÔ{Kã"öïiòàó1ê‹iñqj¾jòJ¤M/¤åüï¢8îmÏØéBà¼*o¡ñ¼‹åo‚póèfb¾Øç!y \•ó_…̽AÀ {ˆxà%ÚÀ¡ÝyQ•Ô’1_;"Z´Vó_Û:&ZQ<~ñ¤D…xz³]¼’‹ÄOóSËVMÅý…FÅ´«ä£†SÜšWn‘“ ÿHz´ºiéü@¾4—®WãüàZÄÔØdÈíØóò”"d ÎŠê:¼Ÿþ g·Šyé÷»G?Ùð–.x½“ƒ¨&Mܱª]“‰ïú)^â>œ= mÎ "“í®AÌó¡•íþG' Z:ø èùÙó-5†¯MËû>zH«DçYó}©;ßÉSt€œâpòÔiU±¶, Š6¬]aÝ~P‡†.˜7½HÑ.õ‹7hNî›:r“ªP^)N7Á `ÈÔ ¦¸›l8pøšf_¯½ï9Ð"%á@¬Ú?»w·‘R¸}Œ»IDå½âh*¿<¾ÍƒMLX÷ —/Vm^ wŠhҬŖ¯¨ÖÌ.3øD©±+4Uñ•£º€ÌŸ-ø—íÿbgÚrGvîÝ~ÒRZ¨è"‘~ß'SïKø®wïn#†OØØÒ3¥Ä6\ _·×«ýùƒ¢ÊýzÿžåSß2ò©Ÿ¢ »ôkxjýäq£O–£³ &oéׯ ìC q—þþõú*thñæüM=·Úª÷—'„Çímrÿs Õ„é jj2Ô«ï¦Ý' +¢âoo6€ŠÒO.«¯×.߫ھhwÐ>lO7ˆ£=búIeÿÙyhß•=h¤áñ PðaˆäzJ»êŸ?(V·nÅ} FZ4Ù_»Ñù|QÑÐ"j÷~I9¹vóÏaChýûºÔ+zúÔ Å4f›èzò[ck#ú6 ×á=öˆüölI‰¯¤–Žûæ€g+ÈÞ¬•Z0bjl«†QˆÇ/œ¨÷Þ›Á¤çǪhêÿ)‹øÌ›4jw”><À–äÑcH,(~í‚Ý-Ç\ûá IDATZ4r0\ù>¨pX¾xå¨pÙ:Û‘l×¾Þî9.ëñV8u|ri®ö)Ÿ¸èu5ö‹*tè:>°€Õ)Ú K7­¿UjÝ픕[´N·û°ØóÓ¸»9—–´5TŒi¾·Ó*´ïÓ¶ÇL0²™ƒ) ŽëѻϿšÉm»ç–?×0ªqÚýi;3}ŠÇR|œÿ¶ eGáð@óiÑNÍV1Ö:ß-‘•­÷~³öû)vû°©Ž‰RÃãÚwÓ Ò¡;‰;`¡Ð°E»·ŸïÓmëæ§mc•ãÙ[ççø÷þv™üãíb2Wí¿/&e.CÃÍ `°˜»x}¦·Ùß/\4_oü¼|ã+¯Œ eAÞü7ÒxP°pñ ë c¯AÀ `0Öç0¸pþL–ìÉÞAÜ `0r>üûÉØÔÉ’ñ@æä|Œ†ƒ€ `&q×¥'øœdÍxp]"kŒ6ä^Üf—{+ï 4¿êß_tº›¢ƒ€AÀ yøœ˜óä̃Öp2 ¹|þ?È¢óƒ\ˆˆQÙ p=#àö>?ˆÏè\Ï æÛ£¢<×çøóÿ6繤šlDÀÙed£X#*»ÈÌï/ê4p‡¨?óõªÙm‡‘g¸îp']pùÎ}~E®ŒWXÞÏ ¸‚ $å‹ú+ô.|£èËß_DŸL¾¨ò© ¿gÆç>x²ln€Âèh¸Ö Á _ˆ«P­ç-t­ÙfìÉ’/þ~þàÏçN|ógX_aϧŠÎhãˆ"Wº_DƒÁSî§kùÒù³@ÃÒ `HZªõLpÞ‚J™oˆI%“a#”'ÿ‘ÎzÉ~¼8)9)RñùAÒžÈ6]iãÈl·3d3´MR€~=›åq¹Z XdæùAÊ \öÃŽ‰_õû×ÇúK{|3ºKýìu›)e?ÿïýQ)sMcÎÊ¿¼„i[¾ýó€€_“®Ò..~z¯‡W¶ËÅÒ¨¿!3¤3¤,CêƒÀ%>?Hºt1O>õçeÏ^ý|—]þß§øþøýüyäºx6î‹wIßzØI•^ùv•üìuüô¯Vªû3ë'°‰ùËêÿÛ»ø(Ь_“›r î*9 QwŃO’¹AnPVˆºr¨€  B@äP9  Á@$€Ë},r*âî !$™ xB¹fr}¯ªzz®žÉ̤'“ãõ¯“JuÕ«Wÿ~U¯Þ{Ý]˧P5À(÷´‡²žr ñÙñ(Fˆ@E =EMôÎ4#¶xü®?~ðçǢ‹KÕ®UjMMmU-ñ¯®ÔÔÀG­kêÜÛ–¤[‚ªíïSeð–8M‡ŒÁ&±Wý(ØòRnF·Ym=Ô¡}Ðzn¶l=8ÖÆNåä*ŠU™ž5UÚÉÏö5egÔ$Ó<‹_B)Ì>šÛgJ¬D`‘Ÿ°®þù¤á!‚æ þ¥µÌ¿$äèÊôY¦ïŠí6äe ’£·Œ Òq&APh«ÎÀqÄÍ‚ÑùÏ/£Û?=?rMÜÜŒ7ˆÎ‘%A‡Uy1tí§ÔCõà‹« ÚÕq€)DÀ14†>8ïýÂ&-ûSR/'4ìKî–¨G¿wq÷¬ó}´¦ŒÙÚú <¼ÂrC"‘µh–•vÁÚø(ƒ'cò¡óuš;µ•¿ýóðµµuÕpÖêø­«ª®ÓT×ÚƒŽ¸~—®œýþóIï¦l‚ο¯oß½*umøÜŒ ÑÚP&£ÿ–”-`d|ò|²ª§nö~ëøjP±ŸŠºDŠ ¥(P˜KtÁ qãVstò׿Î8>8‰}'õÌs éÞb."Ð C€KêáßíÔN÷ÕÆ«¹NÏæ”=KˆI>I‹÷Yó¯h¶Œ5½×1påãÑü-ñ©Ó«CDÛZÔcÕŽš{­`?0ûý¢ºÚºººš¯3C÷_xä_—úüñ>Û}jÛž4ª ªê4Uuê*š°–Ü"دÔìQ¨Ê%}úpoRȈ)qùù*º½êƒG–Á¼/Ô¢eò×>?2ö‰‘±ïœú1ÿº!µ  R2¶ŒÏ}gäû T¤šmÞü³t¦cŠ LRP`©oæ‰ãDÀN`®tô Ë>év´bwE£¶ttîeê” û¿ÎµƒËUäbÕr+M䪾¨Ñ7Äý“ÍêM•¦®ü°FŒ|ºäÓbFéu«¸44Uµ`¨!–`ëÝ?âÔ)˜¦m:BFl9ž²ˆ¬@§xz€›(%ƒŸoˆvƒÑ‹^ ÛZ\ÝÛÔFš ð°©ÃO˜Åàu±¡¼•½‰ú(¶{ðE¯-WjOÆûŒYy ÐK zƄ̩›È³{DñòI¢+à ô/&ÐRW¶D±ŠQmÑR[Ôg@LS:ñ/Qø¼s@¯:kšW¹Ò SÄ,°Ú:µ Ñ3Jž=¬¬® ÕT©ÍÆ“+ v|§°®6üBÏ,ý]Utcÿû*-+¯ªM 8‹à’ô 1“Í Mx®Oì;#ÉbmHY¹{»r„îù¢à ’t*}}.H¹{Ó‘>Sæ OˆŒþð˺תHwZfÓ—ÃõÜDZF2vo1!þU>‘ÿà_:’`bŽ ­S×1,"?>ÞU2ÎBØ`ÍÔRÓïˆyÆm£´^6&ùPÇò·@Èï„ügv—ÿ›MiÇíÿíÕYGþÓaícw,ßÿÛ÷«s©"šëdÿÚÙ%Ô‰˜ø-tØþPöêYá0åh˨µÿŒ®ûírì#ÅX óê`’ßeåc_îÏéO®¬{íBV5µØ¨Âè«áêÇ›ºô¹iJ终u¿u$ê½bu’—=z%mT¬Ä¿—½?Ø8öQÔªsƒ§’•ý_Ø1bcÝ‘ŽR¬6¤Ž¸M6Ñ&,kãå5%y`%¨«k7Íð×TùV¨kËÊË©}ú€š4a BáØ[Ÿoÿ?bü—ÿÔ'ýÖ–ñÚ«aÓ¶|HŸ×üá•‚eÇ PÄʼ»‘U„¨ï\­‰”ß_Kòi\æ™Z‚º™~Z0’ãú ò£ûÄ-›ûüȵ”²XTŠ1L!-ûWði]èbTâ—Š S¾Ü?X¿Óá!‘Û¢ؘ3U;ÏJCrÿŠW˜Îè;…lÿ_LTßu‰OêOóîŸ:aÊ‚í&õ®ÌŽ¢UHõÁƒûÇ b 婾#q‹Xu>|ÑÄÄÝyÐÒ W¯lª21Êïø6nÑ1ËLš°Ð’2´3wµº’½ ßʲÛf탫ù…oü¯WÔ㵺nø{?ݺþßä÷{‚}êE’iðÀ¬}P/pÁ#¶3z¨?ú­cÚ9Ýô*¨c3 ¨š–.”·Œ(¬×œ>qíìßsnЍ ,1Fôè¤ë… -ðá9¿ ‡¾¢ÃP‰|‚–§—F ÉV¢Ô¬Ñ©®þ.®îfýEM¶3È"€´`|œx®KHý¯›Õ Á±ŒM²Ð©·¡æX@t1æÙûô0OnŽ}DžD y"pý-ç|MâDvõ†Z‰ç¨ãèUôŠ],4ñJzûT³ýJÙþæß?hâýAöD€¸¸×ÖT™ßü¡è8ëØþYruƒ=æ$±–F§Îà%kß?…«y2RCRˆ@kF Sx¨Ø}WïÐÒß/·»ûO …kkÆûn-uu·Ï#îw‹å­}ÿÀڤʽ¥®'ÁRÅ1@¬EÀ`pÝ3º¼è‹Òÿ}mme,×ê¨s¿»ÌŒ âû?hõ‚4[î~а²<ò{qE³…·í²Þ?pWu¥?E–lçk ˆ"€8£øêgßl@'!P­©„–kª4ð[YnþûENb›E' `ósؤó ñƒ:úý"Kñƒ ÙžP¢>`»À†ÉšjµºΪ*!9Wç½C?0"€4WP!4×;× ¾kjØû<~ ±øþhŸ¶¹¹êé3¨b0:*ÔÕ£þvÚ—Üfù†úeË-ühâà mâ7È!ìiãt—4ÿ»-Å`í,TTH–Û§”^1$ ä˜Ç Sð,A…ɯsϕΠdÔŠ)ñàèþJ µl?É_;ÙЃ¤åZhË´˜¹^°^sft}§ÔÏÉ‚‡ÍÀ[¥k«U¦Lo—p_zPY¢è-YwÙÔ3 €fJIf«D¶ÞNíš9~Úî"†÷ú3÷ªÀ6o݃’^8Œž+²!såR8müÀÎQ[A(û×ób¨ kvVqÚî½Ú’ZN‚"û’¬LF?ó4 ‰ ?‘“E/Þ(Ì æk2mõÃÖ³Kì¸.ÒdÜŠGtT\^òRÞ!“³gijŽ+²´š÷?FñKϛ£¥°§æÓOw}>>»¼ª fjTQ³€&4š!áa•jýE$zþÑÕàué‘H´ÎÒcNJú€•ZúIc?ÿ\Ÿg²çw§Û)§Ÿ95ä¹”¸$z„2?i±õØh­Áóû¸Ä|B¦1w!Ùhæ@È_ûE쎣)!Ô 427~uúÑ Xš>¬ “Vb ­]{ùù*èÅ\¢óK˜ÛШ˜ }±™©kÃ禯×î ­k‹ñ\8:ýè => .·Þ$n1à€^n»Ë$»¾=·$$³õ` \‹Öi‰^ {_¹jVá°}™#¢2Þ' {‡˜îéQ—½/1lÖ¡U̱ÇÞYdØW!k—Ž ‚õ·¶ ½P¨|æÐÞ—A zè¼Cέœ–þVÒšh¢Ú=/ž8õX +ȸNê‚n’˜ÑA‘Aý¾RªH·ë9GúEÁWQøÊiY}×&­¡÷yýôÝEݨ³¶ qGLâÞ¤ ÕÞéÓÖ슦lhÈY{—§Ìœ3ðs÷VÒ,ݰƒ|žMÈR'UË;ØûoËú º²’h4¤ß®¿þ ‘‚JFæOß.†-4+5 LŸ/²,]ã×ï¯L' &èSyã'Ω#JU.Éß?yäZ~+âàêݘ\•’ÔAÀ dÌòô1 Tv ²dD– XØ´ùÃCx¤ ,ˆ°æÈ®e]bÒ è-q=!ÿ·!÷Tÿ—sô.YèEPàƒG–MÈï—~õ°ic™A+òi«g\õ•”¸5¦w$¬?¿Ë⢂—ô#bÕC¸ÒÉlQx5¤3¡ñlZב³ÞÊ4l%L¦Ô/;FœX9=xùš–çÍÐøg˜Î€u:ùJÅþyácÞdórЈgâ>ÿJ(MÆtï•ynÉ9F<ß¾-»(†F³à *4!ý`¼À?{e9hØÄ~É NˆÞîõÈUI#©ª¿Ò@%°ªü k¹_zu›I’Ç4•BüÀ’>€xry9Ä“«KK5Çο#vÐÓÓ½—§ZÝ Œ3úÀ 0‚‡'ÄgŒ; ¨ˆE˜wõ EI/ó]V£'ÆïJH. &»rû¾¦ ÷^vT*0A2 ”¤‡Ñ, ÃÞ˜¬\£VŠúG$Êœ¡ zS7EÈûgds½¾ùèðÂä9=äëMOÖ0ÜZËPÇá­±‰` 5L@I/ï]/)QZÉdjk9 ?‹oØk¶:|•¯ñòB¦¶@ÐÐ5{†ªRçV7û¬hýŠbZ*SŸ&oƨ9BÈ .Œ‹ù;pCvŸËÊ'}guÔ2Ö3aØÚ£Ž™#‘"U>¨CþyÁÀ¡oNÊŠÏÌ™Å5-¯ÇM‘Õ‡@l¬'l‹€>()ÑܹC_AØ¿}ÕÏÿywÁ›‹ßšÛÖÛëVY)(0LíÀÌì™™ºó´@Ñé“ù„Ö©T?Fæ®SfÍ*ÇÆÖܽídÈä1´0ôÓ“‹¤ÈFOˆ'k'rFÛ(8¥È —X‰´D+ãžë½H>Iuñ#Àl¦ åAÿª®! ú`ÍÌÑB‚Ç,OŠ»RH»)Ö’àS¯)@̃ߢ*ò[3 Â-ÊÔí,m1ý| ÜL%³©ÂźèÜãÜÊ%$aÏL²DÏY¯å(hø’ÄI¡yE†.{Ëüu ÏKÞÉÓS¥î>bZ8¨k_’œð9 éÈ®AùɉyÁtâàÿ’3ÛRZ,8™ÃrTçOæõŒÕWîÙûR¨QGQÖ邈à{ù?ƿЊ1Ùs+ŸžÏêš&Œk7‹ÿyü ºŠ‰Õåw,Ùì`T€›JGöÙ3ÎÛÓÍËÓ­­÷íò2OEºJãiÓóEÝ ŒêɡЛs†ºGFLýâµñ’HDï!Z aõG’Ö…Ï™'dDÏÛ<~òä×z&²ÿ¡âÝí7Ñ™OzÅË>¿z¬ßƒ¥ÈjÉ›ù+ÕJ÷gëˆÃâ}³TìüÔë&ZÇè›?0Î4¥¯e$󓞂Ǭ÷?Ž&¶Œ%3iùÙpk6Mž¬§ˆñIë¡Óѽ㖿÷‚ ‰ À54Ã಄dZ¨ÞÒ.q=j¾W‰Ó'ðÁ1ifŸÓ«ò&-›I'í~aÖ¾+é$MUlöú¿.…°¬†•\`l¿U P±ß̃¯Ð\®†õÚtäÌù=ÿºdh‚ˆIcâH–X’Qƒ#°[¯ÐDÓ†"àˆŒíGލnÂÊ,ræš13¦Ïô9++4®\;èiº+Ú’¬@tǧ' bIZx8°z’¬Q ,ò,IV¢&ÜrÒÍæâuÌ0RlÜqpèÀJâxwaA§N·oßÙzæLÍÍMË¿íåéÚÆƒêƒ÷Þÿà×’A®uµUÕÕ^äòž¯ßÖ¯_^Y%A³D@޾`nÌÚMþçßËì®+sEÕ¾Ó‹&îyYzV’¹±VMîì…KoÏŸïåíëÙÆÞ?¨­©±dŒ}÷ö­ß–”ÜxÌWSã3ö‹ ÿ×¼}Æ~iSs°t%šÚšêV *v@äCàìîäÜpá± ù¨"%ilØ?ùϽßû 3!pâ -úFî|QÊì¹›òx#=R‡Ò'øðp<?Ëâð[OüÀñÌ` ˆ"Ð$pöôøÌŠíÏè!ál~šÄMi4&Äø¥ïU47Ø"€ ˆ@ã#ï@£ðþü‚­`)~ÐøÌa‹ˆ"à$pEî$àÚ¬ ñûùDѲ;¬‰ ˆ@#!€ñƒF›AšüµÜfÄ0²*#büýE2¢Š¤FB`ßѳÔ6Ó¢`ß/Rh*ËéSF?hÑ÷;×2èßóqèØ±3.X+;w7ÚšªºÚêò;7ëêj᪛»'ÿ¦ 2/£)àpQý“]‡Žœø`'þÙOU5•H<DÀqäÞ8ùï“D¡€©Þ uus¯­®‚¡ póð‚!9ðu6L#–eÀÍÝ dÆÝ£ Hú‹7`‘2"Ð8(|ü;h*+Ü=®îm=ÚhÔå¼aoLˆƒ9y ¶‹[›vUšJX[8äýþu'üEÇ!ÀGxMýÖd•ºÂÅÕ¶4qóh-‚/>M¿˜Fê•WwOP  ¨5ÎÆ •ÌOzÅb§é.†ö²£L"ÐÕkjj¡½d¤ëé5e§Þ—Gy>m.{iÜœJ½Ú”mŽ®˜4y©\‚R…ļôå£zÑí!ñhuxùøò>Ãxö ø£‹«;?}ïêˆi@q°,íÚßëââÊ ƒ¶þw7º>€‰r!ùàÈ®Ópn *÷InÈ@šS2úob4ìúà>Ø.M¾fó……Sâ«ûŸ|M«²—.L¼h×éu°ášÉ<|Ó‘åãè¶9‹™Ô³'C™ºùZïÁ×v(${aæ‡5ó™}¿êÊ20ÿá)ø…7N18X#à&ä§¢´ÑõJu9"HØ^,xø8é½l–E;–&E,â“/­ØcŽÔ¦W6‘Ô.Ú±&}‘xà¸yãIâît¡lœi ]+‹YCJ¢Lafé;bB_r,wMÀ§5dùøu» «™ì´kã'Àü¨,Êe‹qº‚^˜v¹ÀÐ1’+ BF/?M§iíaD–f‡MÇÜýÐ ƒe5Í£iXò›iEK\¤ D¬séÕàI ½ zàèr©å?ãy,ÛTäS0sE³F`¾dÝ—LZ¢¦W“̓ø®ˆyq°‡Æ·´C0xøÂø0jè"Ì«§ û'GOˆ/# pç®\a²ƒZ½…(4¬èõ6O&t“z6›d‹HýoØ õ¥¥é½©)$D€H¨'Ï\/ þ¼k!Y­o6ÕC‰^ÎÞž˜9‘[pNHÌ'\Òh¶Ô¬h‹4I0~Ào ®ôˆC£ëƒÌTíc0àøÎ 4ˆf:Õ £yÃwo?2™{c褟fì&Ê‚ò 릘<º*E¶ž±,Ñ s^-‰ƒÃ'‰ÄèQ!3—%è¿zõ§K‘­gKµÒ}ÆéE:âð€é&cÿ>'JÝYëXØ4Z²%SúÚbô©Ö4ö€‰U*‚+ô]­÷´+¸ŒÂÖÉžGÎÚAM’cÌlâÅød<ÃJÓˆƒ­2 Ø¸ãàÐÝäú²Š*y "5D0Bà8ûž¼„ìÙ^ISx²“AXý¹{¶á…18Ø$î/Âa r#€ñŽ(ƈƒcôã>Ú‚”D€#À†>Æ0`!b>ŽÑr/"€H"€ïpXÐ2‡ì ©ª‘”]ÌD¹¸¦üIÿØ¡¦šÆí`µ_ü¯©¾{ŠiÄÄz@û@®á‰t§!€ñ=Z ÄõÓÆ06Œ4? ûßÂ/ó#+Ôe˜Fì“Ô ’Hp?àУe ¨œ6’±aD ÀëÕ5üV©ËáWSQ†iÄ¡!2€ú C«#ÎGãü •Ð@¬}?ùØ¡[Õ55êÊZ¦º²²º¢~«*Õ5êŠêÛ·o-_ÝGL”–Ógð@Ç!p"ý›„ .n>¾wÃ[ʰ-b•¦ÂƒîœLºÓˆƒ­2`­}Ê 8è~µ:lÚôγ_ìíwºÎ'²ÃÛ{yª58û;nÔ#eDÀ?àè e õÛ’–¦ª¶ZSSZZìמæ—²>N_fÑ>°4‚ñ" Ü>p÷ôïÁ Ë^Þ~üûEhpt;p¨ß>0µ Þz§ëŸºWáš÷ëo¿Uªý«Ù[06™kzÍÎ5Úˆm¨m®hú‡£{˜£w5çƒsÙ·µÅ„¹ª˜ß|(Ú1ËÒèÞÓR -õà 10–L©*ÊÔxA®áåëiW'cú–Øµáš‚Ðø„ÙIWʘFì’Kß»-ƒÿü絺ú½w…˜A•ºêβZ…!åe•V°Ava8%¥‡wÒ-”©;2IéÏGÛ@’U¦n¹Ö{0í6£ÆÙ¿Ybqç"²¿#"ag!&N!Ýaßš¸Ìf1°R2ƒ‡'ÎúóABÚà„oÒÖ­hÔJú6BZ]¥ödÏAüÞBððòæ{)cq°C,Ù¦–Áóÿ½ØýûN––•úúÕÖÖ€>¨ªª´A†UE—#…;xø8Y”!…™™¤Ïðñ}ÈñL«v°a,ÚD(ÚñUl:fGÅÉÉ ²{è×Oã#ŒÈ‚ƒ%} ©¬­ªª¾sçoéN™æ·’ŠâÊÊÀ ««+ÊÊÁ2¨ª¨PCº~±KÀ&À¹;ï4˜µ©«‡{¨Ã‡z>·¨›ÛãÔN7çe*J?EžèÒ½;9•mÑi`§X´I# Ì>žÛ»—ñzÖé° wþúxî<¤Ÿ>œ+å™13tWJI&E@%^¼ ´Ü‰¤k(~gªa£6«é7 exÿ°÷“áÞLÆ4â`¿ XÒà#RkªoÞ¼ BF•AqÅï·*~.-õª©©æž"0ª«m±HÔ›‡W=qj&(qÒïñúδÃpÎ|>ã&ö>.DÒÓÓOöx|扬XÙb¨NL ¤{º'Zô$3Ýt/å† 9¬ÝD M ]s“°—AT^bÙù¹!¯¦žnŧ’ Õ×o# ¨Ôõ¾¼)U/Ü¥k(qôp“F%“¤/YÒæL|ÿ€C†VBq°¤*ÕÕ•ju‹úùøìç^Ì?-}ô«i%ðy3à–Z­ÖTUÛuuÄâ8vÍÎSÇå&Œ^šÉJ q6XÙ±cºýö…§DrÒòÆ‹!u…ª\¾è!!íráu}úÔYLËÆö!ë“s„«œ䋉z³Ì6^mZÜ"¥ä Õ¿Ý$¬_L <òõþÌõ¹ió˜Å)!“cÉ$ac8-IRXPÈ”+1Ó&ú’ü[—ÉG>Ä ñøE+-¤Ê€¥x2{ïLsD@Çò6eåêòrïÒr¿òòÊÒ²rˆ!«+4ð[£¾dób†WþΔÌgÓsÞ T½æC;c©§è#v1jü”]ïî* "»®ö}U»?p磊¦ÇJ4–“´)ÿ2™Ùg“xílÆì(©’•1«¹"ݯÓÌ´¬é±16ö xøÆCaK ]+%Q¢dÚJ™3b}nÁØÈ¿aq£øŸ¡¬”18Ø*–샊 j”—«¿>ñþ‰¬³.®½\ø™ê·/YÌ€Zð›úõ|8mè¬Tö (Eé'óéHŠŠ.w ¤a9eö‰«¥˜îädjÒÉçGÁæòà êDÒ¶ì’Šg=ØiÜÖC;O 窿wJKËèàŸ–‹@à¸g{Lýx¯áù¢†ÜwSÉ”;ÇÐÇøAWÄp“Ѫ1´¤àsÔ(§á ?x¿ðüèEoÏpqq…˜AMMeMÙ÷55¶¿™TðÂè>ƒàœùÏð9aºþw²ãYÈù ¨S'í„ÕI;ÞM»Ìzsã8²i&«8ºÏ Ý{éiôÖÚP=°Gß°ƒÚðƒ¼#©5-b¦ƒ×ñj'Òƒ®è£zÈÿ'ȘžH±8ÎÈ80•L©jfòL•—¾™fµÙ?àH`ü 8Xz?yñ‹÷ÞuöÇŸŠZß³[ä˜Ñ£ò sW~ø1qC*LÙ3ÇœBðÙÜ%ÌGYøw†öûE~Úï©+àýNœ?{ŽiÄÁ&°d ~2ðÚ•‚vê²{}ÇüïbÇwæY·ò¢KMTMÙ%ˆ'Ë"ÓH@‚¾ÀÑCË@,Ùv‹)ÚvC‡+àöý~‘·/<õäå£ý~{K™ÁÕ1â`“ X²¬”K,† NB€¤†}¿HûÑ"¶R>^ƒiâ`%¨œ4±YD@ªÙ×bØÎÉøœ ¾ÑP@} Ç Dˆ€“Àøã²à€úÀIã›Eä@ šíF…OÐã[²Èê9%Ò@œŠ¾ÀáG+¡8 >pê8ÆÆ†!€ñ´ d± @ ꃆ G¬8ŒpøÑ2‡èúH<DÀ‘ðññWÇlܪw’pˆ>pä(@Eƒ a‚ñYVÇ" ­ÖÚp>pª #­Œ´ò=³idÛÏ!ß«¸]J÷è0s\=óÙ±íµÐ>/õ¼ÏLÁgœÜp&߀Š—QCº´o0aN:rÁwبGd¢‡d[8™ùm‚„6í\Ý<á«.®îžm|øädà“˜Fl•§ØíöÒ„¿ÑS>e³ó®‹· ÆSh_ÞJÿP"´(Ÿ2°y°l€š^œ\wQº93¼a6"`#ÕUìûEì ° 084@œî/²,þ7KJ,°ï*w‰u¯ÚBÅ„%p"=ÿöR(ß×q)RFÍIÁ2M˜TÇ DÀ"ÕšJØû¦ZS¿`%Ào•ºÓˆƒ}2àû€ºk¾gRîß%.¸àXI—Q=I{¿.öï=ç7 žçoïW||ûgtʆè®àSvk?8yNA¸›F±Lý£Spر3VÅ“;õ¤¤vmÿ–Ug`+S–´•î{ü‘‹»övžt ÞE0`Æ®æ¬à‹ ¶Éôa€• (þ/¦;d ñßG«w³‡yšÖ{^M¥zaÄ-ú>Úºr»ÚZ8U(`QHÔeðbï<¦›d )ø‹Zø¸Åî!C€*Ø÷O¶r`(ÆžÓÜè‰i#P8l¨"aDÀñTièþÉE€_uE)üò½”18Ø!ñ•Xú~‘ㇶ€´NQÑ"p¹¹{ñïÁ7‹ø$½‡aq°UÐ>h3v±å"PÃÞ?°c%µp¸Éꃖ;U`ÏZ øý"~«Y<@80m&¨ZÍœm‰`ü­­œÆˆ¨”ª–8±Oˆ€ ¾6†ñŒ‘pù“‡ÆÐN4Ø$"ÐÒàúÀÃÓÛÓÛ·¶¶®MÛíû¥žmÚòÞÃÊÓâ`¥<8Æ_„Ü"ˆ€£ÐSx?à``Ì 88F´ô¥öh"`üã2ÆP4‘ql ö `ôý"‘®”9ˆƒM8 >°gbD ‰ €ïȸ:†{ÚÊ­ ÔMd\#ˆ€ý`ü€c‡Ö@q@}`ÿ Äšˆ€ÓÀøA+_уÊh!¡>púˆFûÀøÇ-Ypp†>ÈZû—Ácع6Ãþ`GÍ¢/gðvÇüeÆ¥¬­’³lð_:²kÁr-Œȸ:aiåÖ†Cô¥¯•{^\LÞ?|Î …YÄRa"ßUhw𬂠¬]8ç’tÛšÎù›â­çdËúÂXþ±d±õ8èk:Œp4ÐJh Ñ–ÖdEEW: oÜ?=&ÆRYù®%/ÛÑiAò\±¹ÆkZ¾N ¥–ŽÀ¦ë_™ú‚Z­¶¾£?hå+z-$é󫜘¨AWw¼—_4Ò+£L}ið˜~ì\–Åó³Áå’¬4JÓÌe+ßè7xM&­®JžaXKG‡Ð6¡Ì>qµW¯)®Ì5²†óóeÚýðÉßðÒ˜~+³Ù¿zlHP€†àj3KÃÿ5wÖŒ¾ÿÎ ù¡B†ñ®;Ñ2éΛäoÔÜ+úšÝoðØeY¼@β—¾ì´à˾<±aìÕÅo&[ò¼ç_ ™qâÀ´î¤(yÆì}VÐZ¾d  “Õo£³€|–Rdмh”äšk:Ca4£ÓëÊæ=™xž=ˆ„½ÄgE1"æ(Hö3ú8tàë–,®¿+QS][Ò¢BAm¦ûe ñõÈpà˜OøÔÏT‚²è*Å;“îà§ÿÖ?¿Àp&7aýºÒe,ùÿ6’¥ùAéÀ~,hš~‹O_)¼nPñj‘ÄGVÍ6öÒ(6ïÇD"ÊB ý$²aóá?ˆ€$ƒ?õæü’—Ìebü€#ƒVBqpŠ>`<?ýöä°C9æDÜ®ü^ï3sžÂBž·Õ¯ÓéÓ‚9ba¬„4 ]#£Þ[Úù‘G­l{Ï««ØþÉåwà—G08Ø!®²öhÝAE§òïéH‚;íd­ÜóÙ1n+t í¤5²²™Ž`:Å8…c7‘P1pÌ„^‡‹*0/ö$ƒznÚ´1ó9 §`ž6^im üë“[¶%´·¾ã?àX¡e nÖKž<%c ÀŸÃiõŸ}‚:|çnûøyh&øè?èNtï·x,Õý{ ’hœN³ Ïî·™^´BQŒŽC€¸¾‰3 oÕ¶BH§±Ÿõx£¦%ƒ’½ú¯x륱(YýÖS$‹™ˆ€×}j+?pso£./mÓ®½¸"öôn‡iX# N6áàýpŠïPëDpiYß%,\äáåãÙÆ”Amm-ßÇÝË+hÓÄÁJã/Â'-DÀѰ!ŽñŒØ' ’O£™Äœ£¸2Â_Dp0?àcü@P8x¼"yDÀ‘°÷ÀG\ ¿’+>Ìgøà“WÖ€©l >pä`EÚˆ@£ €ïp˜ÑJh ¨e¼b#ˆ€cÀøZE2Z?¨3L‘*"Ð(`ü€ÃŒ–,88äýþ97q8\/²ôŠF5Ø"ÐBè¨ûF‹‚}¿È½àÝ®}µ¦r*Ëïxy·Ã4â` lÜqpè€nòŽ•[·ñýyEjˆ€1§Ï~·há"w/¯6¾^íÚ×iß?póð‚‰€—Æ4â`“  ¿Èx˜áÿˆ@3B€ÇjØ÷‹`E ¿\`q°CP4£±¬"Æ`ü€#‚ñYp@}`<ÀðD !Àß?¨dïàŠØŽ1∸¡>hFcYE¤À÷8.h%4‡zôÁ¯?ÿ¤þ|ãúu•RUXPR\,-˜˜‹ ˆÆÐ*’Ñ*ªG€`‡……ýòË/ð Gxxøý÷ß_]]}âø1T 8ê±)D@Œp\Ð2‡zô|D÷ìٳ𛑑qæÌ™S§Nýûßÿ}лwoP Å·nI )æ"ˆ@c  ¨©®†ý“Yü@Q­Q³4_l¹°•Wo?˜FbŸ¥dÇ>pû!A¥\“Fâf"Í 6üªÔåt„VQPY~~¹2À4â`‡ جêêê@=<ðÀ y6«¬¸àÿØÿ…_SÉ™.¾UâàËõïúp˜ÍcD ù#€ñ~1~ 6ëˆ%@üÀÈbhø°*LûôË­ìL»*P+>åüî|ÆÖ”K\mh3¿ÜzLëtbÅÃî )>ŸùÝMN _ÍØ ~ª›—¾æMÀ¿ZšDL³D¾Ø®!µ†w) r#Àââóãh% …Ô °M€2MÀ† vñwßúßäO)…ôf®žgŸ)ø†MýW3¾>ï׋fv'×´S?d^ f¾¦±½È³§ØgG¦€þÈÈ笈âÜUÕ»“yæo^úžt§N§®äâ A ™/Wg"Ÿ¯ƒCAèûf'])cq°K¬Ò`p¡çú ^û >ÿ<[¤oýôÐEÿîOuõãn[ˆSk€†šiõââÿ®…Ñ´ßcÿ,fò>”Í¿©*`aÊIxP¤ £ Ü—¥‹=вx ÎBÀ ~€+bÛWÄpãТªÔâV}` 6 4Áˆ#ª´hˆüöÛoæÇ€å玸›G¯vØÿuþþ«C[Ïÿð`~5<¶×µäÓŸ&Ÿ&~>L®1QxìS·}’|‘Õ }bLïpJ˜ÿí­Ÿ&ó ÿ1x©!À´pPèñ̯?ýU|ø‘pNŸ„† ¦?Ôð-9ž¼•¾gÜë…š‡È°iBhÿ NDââÃ~hð8ØC=ï£]ùñ]ºtÐ$eýûï¿1r”饛%¦™öç€7éëâ‡h4ØÑG^ÆÖ ¾F¾,G·‰ô»8“}qQÂbˆ · ¸ÇÝÓÛÅÍöÑÝG°âÃ4àŠ8pᲇú탭[·Ú%®²U*¼x¡ÄÿqêMÂ@ ÀøÇ­Yp¨GÜÿàŸàtÆ„ÀòW?pÿ> Óg~ð@# ~àîAß?ðö½Kôƒƒ’À4_#6áP¿È¾á'³¿È>&°"Тàþ"wO/o_¯¶?¾_äî)>Uâ†i&ˆ õâPÿóE-zLaçæ¾€O‰O(70ú yOÈ}+G¿_Ä¿_$ ¨Zù|‚ÝoÞàû \ÃíG CÄõAóž{DÀý“¹ •Ð@Pà|‚4c0~€«{-$Ç<_T,ëûhÍx´"눀£8“CßGóòñs÷ðáÃÎhUÞž›»¦ ÄÁ&y°Ê>€GÙÊJK¾qÝôüéz‘©¼ó¯:à/"€8>î´ñþeSª *Ë臹2À4â`“ Xe”Þ¹£P?Ü}·8õÃ'íÊËËúé'ødE¯Þ}¼}|ôµÂïh˜*IÌAdE Ùìý?¯¶þ°W¡öý´ (Ðhpq³ ‡úí˜úo—ßÝ¡CEEìœ ÇÕ«Wsssáß+W®¸¹»)Ye‰!ˆ€%´ñ´ Ð*’Aê·nÝüÝ·];__asb¾9ZiiéÍ›7/^¼øP燃CŒ?4gÑ>ÈËÜv\û}é€ÎOŽì¬¿H~ñùÃÿºdšoiPàµV‹ÀÍþ¥ý®‰ÿ㟴ð]¼ ¾–äª>Élbsûãü¶Ø´ †*X^·zìFSR\ܶmÛ;wîpã ??ÿúõëðéëÿýïnnne¥wà¨6ŽP/ŒžøÂÀGÉgÎï:ãßuàD%¡kmŠö»F66‹Å[°tØöÕíG¨,ѳ'Q@"!%³I¢‡ñ›üãp±¼…˜Š%}P|ëÖu•ÒÏÏÏÅÅÅÛÛûž{î¹ûî»ï½÷^ÿ_~ùTüÛ¦M›k×®Ù7RèÆâ8ö‘ÀZ­›?œ¹àÛë…î¡Zü»vÓ ƒ¥ÙI&¾Ào8¾Ð@Ìêƒâââ_~þÙÕÕ` @Ü8'''###--íÔ©S—/_öðððòòúõ×_Å80éš.ótÊNêJ×w,qñøÎmá<|¶-ãý­þµqçé¼4‡U›?|;c`$!úreÔep4‰~ËfŒÆ,¬vá¾¢5`>f¿wýËO7:wî “¾þX-”ùÁ£°O8”øS v ©’‹”þ÷ â·nû=3zb{˜ôU:Z·~(y|ôÄ'HÁñ§¿Q>úD÷‰„Ô㶃¬Ò< [¢á†‹I¹2®fô¿¡dÖS؉—„xúP '¬Žk´ï`šßÄÁ&ÌêpAÀfµZ “¾xðM3aGe8Ú·oϯÚ8$èÿZF¯  e`tt~$œf…Þ|úÝîØ(øl\ÿoMÃS÷õmŒa"Wô… BÔj[^&ÛUët’”Ì& imu5ñ å·}|;pePQVÒÆÇÓˆƒ2`V€СC‡víÚéÐ  ÀY™J¥RT6Ž©ÇŠl$Å[;þ÷ù¥*x"ØØeT0ô…®„€¿èß'Ÿ6(Þ\%“ÆàÍ7vàŠq°[ÌÆ\\]aêû€ƒË xçȨ2üÚepz²üFèfj y¶D–H£!ÐlGåé™ô™"vŸÿAL7ÎnH£.j™›VÄð+® 1˜Ø*fõÁ]wÝUXX³?ð[VVœÂkË ;;Z‚Kà>ê؈ƒ"<(ãɈwSn*ô‰ÑO>~û4}Ü€žgHµ¬”öƒ¦ÜU3¼)Ýÿ€GÔ2À4 €8p1°³ï£Ý.)ÉÏ¿ç‰×)KIDAT–šFš Ï ~ò)xÐH¿ŒÅ÷Ñ,ÃKˆ"`-ð>ÚâEô{žÞ~ð¸Œø“¥%mÚ QLs4+q0« >|¶èlV& *.âiþ˜i—Çïd$¨¬ÓX°}}àåC´àúÀÕÍ£¦ZøÊ)¦9ºˆƒ•8˜'Cý¶íÚ=1 Î^qÅzˆ"àp4•å`ÔVk\Ü<ø*˜+L#vÈ€%ûÀnYþ ¿oj7vX° æ/e.#OoÐnîžhxh p ²³ñdëdK!ˆ€3¨­©†æ+ÊèþâŠÓ“Rö´saÚJcÜÂýÑœ9G`Û­Œsºx2Æø·cEŒ@'â†öAk˜:°-ˆ@ß ~¿¸ ¶rŒX’X9È> 2*?ÿtCÿ_L#ˆ€Ýüñú*(ç¾_¼è]Oo_wÏ¶ÚøN‘ "Ðxh*Ë ±Zæ&‚1üŠ«BL#&¶ÊÚ7t±%D@F0~€±.N2â€öŒ#I!€?€†Ñ2@ ©2€öAc`lŒpe\ãYhÈ26‘"à0~ÐÀ1Ü6´*D Ñ>pÎ0ÆV"€ñ´ ¸ɈCãÛçV §=WÐmuá0htêî"¢Ú;uè¼]*h.ñD#°M 2#€ñ\ÝËh!9DÀN®ÏÐøuI‡÷%~»×á÷ÖÆæ Ûzõ܇CçíT™ÖÒ6º/iíˆÀº ak÷-dZ s§!°üïY?ô Ý?Y{Ð]±0Íö‘F›ppˆ>°v G •t‘Ž"€Ïÿ9kÆK°-¹õX`ü@ÆÕ1ÀÞÊ­ §êƒìœ#á1݃˜ð«öN:~ =×g £¡h×kø¯å¼k%eŒ´ò=ȉŒ’c¾gNPKGhüÚ¥£ÈÞiÓr²^Œ’ª¢0;Òð"ДàöÝ?Ù öOöqqópƒ=“éD@WW7L#¶ÊÚMyÈ#oˆ@=ÔÖÖB ᩦ *îÜ‚_>`q°IÐ>¨g¼áeD i"Àí¯¶`"@A¡páñW7æ>¢¦›d탦9Ø‘+DÀ*Ô¥P®Ž)€rfpe€iÄÁpˆ}ð >_dÕXÆBˆ€ýd±ç‹À8Çà;øh 6­ˆ±¼¾Ì }`ÿ€Äšˆ€Ó¨cñƒrxç-´,h8}D#ˆ€=pûãh pé‘´ìŠXh"`üãvÄ @z%qCû ‰Œkd° ŒȲ"Б—<ÀÁAöÿ4þ"ˆ€ã £ã2®ŽOÉUsëÉw}@ß¡Ç@‡@ÖùKð|ÆpuÏeLcXZ[9l í¹ò,ÛšÆá§~£óS”Öµ¨Ü7}˜Õ…ÕàÜ„‡³ëµ®Ï2Û®TEÉÂM¢›ÖÝIþ[m&›0~ÐÊWô 2ZHŽÑõ,ŠBã×l?´gû¡ù=,wK®§ŽÕ—Ï­|z~ ì©`|&¶Wn\¶>ºfÏ’‘â–j¦ r̵[O5›/«öM_B=8תè—Àí8ô¸µ­›v´…U¬E`Ų÷¬-ª-‡ûp$pÿYppŠ>ÐÊr4lr©TY57Û:LÌ–>"./+«q5Ë®å† J*hèHº³4-Ï6m˜ýÊßÕjµõýÁøŒ«c€½•[ŽÙ?ÙJqÎÎ9“Èç6XöNOÎ¥{&ìy™nªLŠRfÍMÌ£©¸ùÛgÁÄg\¹»C&'~~ÊDLZ¶fø•O¯:ÿLŸØoæ¡WÌí»IiB«“~äȉ`Ú¢Ž¸¶9V d 3Œ›†êúìÍ$Kô۽טsÞ !YOH8ÁþØ3íÛ«YÛ\Ĥ1áÚºÂ_P¢KV}ÚuÍp½]%˜«éõBèшÂéúÜ©n‚`2´krkŒ˜ÄíEàÈáý°“Á”§>ÔùëiíŸ,¾q «fLŒˆ—¥zqpŠ}P8} §' ÊŠ:´r(SçVNÏê+8‘ȶTØœ’Î8'{-£^‘=LH”Ì‚Dew=å~¾/‹DÎÚ33Ž0×e JÝ J(FX`äO;DÕ0>Ÿ;aÆä-1ò8ÕËža»ÙûÃfêq®×1¯°&€É»µN-£.ðž ̼I²¨z38 ­e}OÏW Î"ËÌׇæÌ dŽŽ ‡æ;hÚæØŠÀ‘Cÿúðƒw­¬…ñƒV¾¢9‘ÑBrŠ>`óõš1'r²¸Ô«®çÁÌΕĒ3¹ÊDuþd^ωK`“2´nhüfÔïzèÇœ (!Z½o_ñž±Ü÷4tb¿‚ÂëzãÑöôŠ“Ž'VM§ZÍäÈ^O!7b„‹&]€æÂÇŒfÌPï– ØLtäJ `Þ¦({æ™—¨n&Ë,-tÐ m̶¸AO¾þæ;V–Çø ã²àà}À8úæ$%3øn"¾v6»´g®¤zËhéÿÕ±g”ñåúþ·¥i¡Ýþ&Y«·„gäu¡àeñÆn úÚ7½N =’{M7úa®ƒÎHËkðñ®Qo'¼o½³ã2®ŽAœZ¹µá}`ù @>"üóµ»T¤.¨c89ºAW1¨kŸp£“2l2«ˆiýLÓ«ú¼éJ22²5Õ¾m'èrÒBkØ ëz·dã¤Ð¼"½N±P0Ø#uÔú8—è4——¼“1£ï–Ñ£˜Ùû(b4³(ótADð½=³Ì“{ƒÃ©¹C«@ÀFKMº] °Šúµ‡›tЈUü×F ²aËÿ€öúRj.Íî†pÅÄ|\5s(+qpˆ>ÐTËÉÈQ“È&úôgäÌ5cÈçsÿúôz~ k^p‰Ì ׿¬¢ŽrÓ2’Ä#cûlšÎ‰H̤ÄÁýB[ŸžÕgÍËÝ J™6-Áž®Ýìõ¼#/|làòŠ:…$¿M¬, ·dDΤOâRfþAbŒýEÑ•Ð; ÔÜMa3?¡.5ËÌŽ+PûkÑR“DÉ2=DÌuPZÌ´ÿÓÓÓÓêâPPÁ⊺šøe+eE-¦{eÀ!ï'ÿü{Ëx?ùܪ§sb÷é[F+–E†ÀÙ ð~ò{žÞí<¼Úi÷?€Ñ@1ÐÃÅÕÓˆƒ­2à\ûÀacEÂôqXêÞÁh²hã|g4ª ÊïÜ„_>`q°IÐ>éª}3èË¡SøËRE0p.Ü>ððòÍ“a—4…ÂU»2ZôΠ…ÄåÓ&Ð>ÔAC?Ù³ý  «"‚yˆ€£P°ï)à+§5ðKW‚ R‹iÄÁ^@ûÀÑCé#A€Ú‹ßólÓÎNO7WW7ª ØáââŠiÄÁV@ûÀ!c‰"ƒ€? OÔ0Ëâ·YüÓˆƒí2€öAã [ln€eàéãçÙÆWᢠeÀF ‰ œM84Æ÷ì~ûå'™‡’CZ+þp~×!~úâ À2ðöm/Z˜ ›äíƒÖ:¯`¿›9?°iå wËs‘·€ƒcâæ^±Ç|D 6¸1~€ñcEޱ~kï'7ó$²ß¢8û }¾ãV»¶>]ƒåc´èqˆCšÂþ¶?I]À•µŒ+ë–§C샟Ð>h:rÒBÈfö¾Ào/Z ²à€öA -°[­Œ •#£•ƒöAë˜6°—-n`ü-Y,®TÐ>hqóv¨5!€ñWÇ 8­ÜÚh|ûàܪᫎjGì€yÛgò]‹Å1\´ï•éY½áâø¥éÖ4¯ÙÝ׳OXDfx…m£M°ÝÁÖÊ4F<·ìc¾ewöúÁK•“­%b7ï ªöÁ»ð|Q›v4„À¾_äâêF?lÇx= Óˆƒ­2àû tòšíRéi¬ àý8•+«óS¤6¥oÐ0ÂÊ- ¢}Û z(Ø-%'VÊNe@ŠR²”Í%?(cß/⃿Œ}·Óˆƒ2à}ÐL†²ÙäPeg‘žCGõ$iÙò-²÷¥ÇÜ×äûÎTð“íŸ,¤Ù^Á˜V \ lÂÁAúÀÂ+˜|œ‰ŠRfOx%s#}ö^µ÷Á,à†|ÁæéÓí”-ÄK­¢¬3¤wtÇ ènäÌ9• $\À$å„mýYY2’F@²(%™LÞ‘]hâÀRÕwèŸÚZø)»ý;eÓˆƒ½2à }@EÔü³üÄÁÃáüçYÒq䊙÷}±ï,9¿j)Y¸bhP­ëÌÔ™ØòÛ¼ÒÕ<)¼ÒŠ(:—FºÅ@œ)0²79›e`!X/?¢4N\•MHö¾Í¡QÝš¨^>¾"³l%(˜æ@ 6áà}ÀfùT8ÿÎ^×™óÈ¢á«È<þ¯(Ò˜@,! Ê>KzF²DǘždóWçÍ–†‡èúcîæ¼3‹h‚MýÂ!Jã¶™Ñ×S’•“ŸiNëºZ0bHÛ3-´(ñ½k³£/ ö#p~×¹dîà/D9g_é*½´§) %äzÊì}Á+,,;n(ó ŽNŸ¸™“œþYó~³xÎÅ„VÄ|R€ÿ1ÍAA¬ÄÁ)ö(º<ÁÐyl_Iý6eöªkÏ íFºŽzN¹hö>•nˆvý +ù±y?€ñxÆÿ[ g³ÎDÎ"Þep…ÍÒSù`•ã YB‡ñ~Û0N z­´YŽ-dh>dóû‹ßw÷ôñòñ«Ò¨ÛÜ£PÀc¦tµëã{鍊dÀ1úàWÔÍg^AN›'Ùßêô¼¥ìââÆõÂÅEŒ`šß[ÄÁJâ/jâm#{ˆ@ @€pŒ`ü@Æø‡Cìƒh4Ï%'rÝŒÈaöG›¶žÞ¾Â÷‹à›EuôÅ48 L#¶Ê€Cìƒf4¨UD Y#PWÇÞ?àß,bÊ ¬„½¥ŒiÄÁv@û YÏÈ|ëEìƒVÒÆÇϧÝ]^>íÜÜ=Á&h½p`Ïå@ßG“E¤8:°À@ ?ÌP ¶ˆ€Ý >°:¬ˆ8Q >pòh)ÍS}°ï(¾ÜRî'ö£5!ÀLÝÙšºŽ}un>ß „ŧ`¡q<ùׯ_¿rå üVUU9¤Y$Š V ðáú08é”Ï…¢­O[±[½hÑk7ÝtÓùçŸ_÷ži‹ºDÀqS‰²l)DyïvÔ¯‘ÁˆRÕ1nA©0¢†ˆ n¾ÅD‡û¸jHŽÓ–œ2E=‚!• ôØÅU";&ybòÓq˜iˆClLQ56fî*Ђ–ÎÉ­,‰\P¨‘»„]gbቯã%ʇø¬Ç'½Ïµ×ïxa‚ñiv¾¢ÝÓV·Hã³î Íœ!’ ¥‡öÀík8ÔÅ-ý\µ2;x#HÒôÊM§»ŽÄ×€3àlçœsιçžûþûïÏš5Ëðõé×7m÷Ž]+W®œ8q¢žZN<ðZcF@½Dù ±8Ë pÙ`-Õ©3Pà¾`¿5H)·Ðã»5D”Šh×ÛŸ¤Þ§âöÍÍç˜è71íâÒC ›<µ‹ÄGÁaF™ÑQû½/ÅgBKÅ„€¥sʾ½ˆßÌ#XtëZ19Ó(˜å½‚¡‹ÒgyFÉ_÷lꨦŒ±Æëu!CžcÒœxÜÜ¿‘“˜CŒ€G,UußvɳøCÒ úa²9³SfÚwû¿;|ø0øF<ÃZsÃA@½4“~ºØf•ìI3Ë[U€J¸›² Itâb㓊Ø÷,yCD~•!I.Åä0C+©71Ù|²5Õ†¶—¥9„S ›`ºÔ©žJ n™.sÁ>,5·‹Ñ ¨hèêMŒùcBÏÒiÕSÙîjà†æf?B­$ g”û èa†h⊆GvQö*‘&Ï“XLû’#1f`ms½Ñh°›¶÷‹»H4†$O-ÅAÏœ¹óß\þžTxé%ç»ntL>4fèZ!CƼeÛÖ´¢¢¢qãÆ±g–1¦¸«ÝH,–+ Nkm$ÖÃdkã ¬¨7Y»Q9ˆr~`üHXŠ47±b¢7¤vÁÄRdˆڎšI¦,’îhWfH2IQï–ûd4·Mî+Ü‘àÈ}‰‰–Σû’cÓXˆO =&ô<Ø;4·”Ö™(@—lòŠ0š›*#zM5Xï¸j EL]ÝÛ“dÔrº¼ðå'¥ò+¯ºÊÉHšÕÔœór;¥–1Bc=zþ‹óÓ@‘^QK4‘¸}¤ ˆ üòK6ÂöT‰-"ÀÁ\‡†>o ¸A6¿zc)»ÿBm›9¹™„ôG¥°r‰-þx$v’AQÓ‚0Ÿ!0ÂÊÅkh.l1‘å(ÅËÑQ•%yBÏcù^U‚€]ˆvH—¹ €ì)Žæ=‰ˆõök-¶¼N‹è §D¦u´«¬—`~œv•·I² tN$™Ýú¡€é2Ì˯hI܃/wd¤D³Î3Q= 7L’Œ‘U±Ú0©ð%À/ݳ+—”hØX‡®’$ !œO-µpÊÈð÷_|dJD‹VΖUd–£d½2a©°š"S9,i6kÁ–4ur‹È‘O6„K¶ @ÆÜU;tR­,ȨUC’èÁ¯ÂÅ²ŽŽ›ôœË,h×ÌõhwC5êVs¬„ý±Dªº*–üvXܬØéêU¯ÖÊ\™[\(¹l?"PÔUäÍAÊ ôÂ/O»3‹¢b¥çqˆD©Ye³à‡o‘ÄF¶hx¼}®| ‹…×ÿýo®©©‰Þ¥88eÒ<ç©¿°ø¸ Jxº šÃ2f¶d^äåKFeå½2¢h×+¹øóôÚ¿¥ö~¸-'ŽˆP„5 áoì|GÜÊ—\••gízyX¦'¯½%8 ¾®£ôC“T”Ê-l–‰OIHEc2pK>0»ü·‚{ý~XÆeÜš¢Hx´,ÿð¨­}fÌ*R\¦î˃ü‚¼ùkü·ž lrЯ•U‘(còÝùÑÕQdß™Ã^ð°ám—=/_2²ÓÜëv¿!½öV¥k±W˜+MÕ¸Øñ•1R¦Ë–Œ™Å-Ct)q¡5ygr8ä¡WêTc.³in9j²N>r•”®2] ªH=ÐçS‚A¸¨ë‹Î.o^8›w)¨“ŽDC fr©ȸÉ¡€JLôdFÈDᥘ˜Yš¶¤Ï2L¦H= ΈñH¬jS9ùê ׊õ¾ädµ!åæ5Ï‚vTA{9»Ï'Ób`“¶/õ&ÒŸTbã£lP{tvŠÝ @SäÄj]øT±ÙŒæz sv;‚,“¸¤@Dò³g¨"NÙÊH1-stêQzœ@ç#%c(o€R¹j…q³ÙºÇQšVmIÓªóØ!ÍËìåRUEdàì§tƒJ¢jNú£ò°æg|¤»m©²(‰ã”¯#)Èí)/y*.7Û œj•\–ôÈz£ã° …Ü}BŽLp¡@Yö >•G°¦V±qU$:w4W#@@ÞTeçIˆÓ¬6±:£qŒ{i4œÞ<%C® µyìU†ûs‡/E`‡SY€2‹KUÀ U~ãìãHP(‘⬎ª~µ,­€H…¹³]V"½R ¬Ae`À=NP8ý,·*ÿ,êpPd¬€°’»Ì˜¡:Õݳ­´³-•“Ë´k|>†Wb…pŒ*Ø .®å誈Ù2CzL)UÖ‚´ŽDC:‰hšðUÍIAuÊž ãE|üFMµQSeTñ~Ĩª1ªƒØI,áÈÕp¤·¹³˜h=d‘9< B A:-QxG[TËU²<²Œî™§"À`LpGÂäÒ|÷î0j™;”¤«UÜ£d/²do‘34ôÓÜ™‡O% päva dY-ˆn l 6ÓØ¡Àf²ˆ;6™jQz+ ª“Ò¶È ’ÊGJ.FŒ/Æ:»‡óåO·¼8-Dõ”E˜¢ÜQ™üË]&suNíéG2¼­GLjŽ%1SUÕ nq;«2f<ðGØÕŸ2‰[›› (hú`©4l"CvG>zbM;¬cæîN÷Ü2‡Ýùè/úß¶dçKÃà–E™õû¸xg—!ãòŠGøܹÛÈñ­~öÃxeåÚÛr:B±àΗœ£,‡Ê×<šIµ ò?*Úx9—,爥÷¿ª/,_6@mäÃX VGï‚5΃V^†•Õp÷A׊ ½*Ãr…êqc–C‘š.sr‹cüœf…9´ó}k U&ßB¿ÍAGJõázy˜/NÎ$ðHÚàð fîrpLIA¢ Ì3©n«~¢ÚC¾‘8jPÜcqdë` 'Ä 41¯I£™º£vÚøyÀãëEúÃ2zl!`Â.N¨…yðµ>»'[”È´[`„”Ë€ÕÍpÊ123;'b„H9 9rÓe*Õrà½P…Ìø%+… 0rî£ænyŒD@‘ %΂éÝYrAÁ>Ú¹»|äÄ¿}Ôêë‚_9ÈŒ1ã.†Ea\¾ú™PÏæŒ.‘ÿÌêdže «Pk,X²ºkm_UÀjIŸÇ‰Ø2烻†c?%48 B™ÆK¹á( äv¡ÔÝT#-Í€Â<ªqFˆ¹²9ôBxÔF£µ敼\PØØ¥q”yãi7ûµfºŒ#ºYQÝAÈL=QÄÌÎ!?0ÒÊì9|2¢äG4ÚÉW^„ zÂ+Z‚L÷-„Ž×f˜Yhª“‚BNäèBdJ9LРµ ’Èn±0j -jâ$·ÌÄ(¼À@·¦%R°½øC»ÇUÀˆ³ÎAœ –÷@6BvXX  6÷”8åÏOÀF™1î"@ž h;ΘI'[ ‹”¨Â¨,³À›»±q JFoö%E„²a3'–YŽìrØp˜ûâ ø _q¡ò”`ZšÂL!{f+ ê΄›FÌGGyJm‚;_,òˆ+œ,‹ fèiÇK€zº Ì$€Jæ)Ù‰™µ1ÐàK*\³>:c¦ã¢±À–y©¢ÖϾ±‹J™`sDæ:‡"ëÁà€8À0‘ý”Â|ÊN*–CÊkS¢n€ *•X(ØüTË·SÉ ¤`mãÊ7vâ+4B[yŸ žY}íY ¿4¸ õA,Â$²ÊBÌѾ"CQ*‹;ÔWf”/yëø> Ì·3GIMŒ•¡ç·‚8$cVjfÌ8DÐ ƒÏ”ªò‘O±Qh^G¾Tsp…Y+Ö̹‘™é²r™Ž°Ÿr°ç.à-zkŽå˜iÁ91 q™˜ƒ:ÒMŸÁU8…\ngšÚœ¨«§¦b#¦§Óºº*œuVÀÞ@ƒA0QÁÉSfࣚ4s”Ì-x.l”<"t¢Ÿ0†= #Ä©„Ël#©9¬ÂÈà­&.pÒŒ7ó>¾ÿ?é´¥Ô[‹²5™™¿b @÷ 1KF ˆZžªe«Æ„žs Ú¦`?¡mJf¦è2÷.UD¥[ü•²‰ŠÃâ^¢ÔF¯Gc gmx’ŠILñÆ…›r7z¬ú£áoÙ²%¼•¢mÛ¶Þ̵Ì\½•'¯¶¢¢¢U«VŽúEÆìÝGá>mÔ#²òò ’æÌþ׌ÈË»¥xÇËÃ`Á°¸ƒqd^^Þ˜:6rŒ‚…ýó@rlK˜ÄÌþ×¢Þk9+^;4=–iìáêðZ¢ Rñ.xM:šxÑuQ" ‡mLàx7GJ10+©*1à˜‰û’×£SÞ #/§AjþÅ#ÁPKSVb·ûǃ\„Æ–I°‹d C‰6¿(µáñ z©ÌpÈ539ñ½3PhrN†LÒb#Q:UEä¤d9ÍK#§¬‡A ÅEy‰©•£KøGøÃø##,l² Ë’“ê&•5#~‹ÜØc£pDx 4xƒ¿œÿ!r៱q"–Ãòb9ÇìÃä ÁA˜ÅΪ¤Wl…µN0@€;ºK šp‰F1›†+ˆ/ämf…, >&2ª,dÚÁ3ΘMYl b—æä˜ü€ÿÈÆ*(Ù¥”[–’Q\ÉC• „ÌÐXÄò’‘NŽ˜òR î$,‡¬øM2,ŠT‚N™Ÿ31Škùš¢¥M~j—PÆ,Ôàæ·1>þîEr²Uø¨„¨{ð´®hPæ'fn ,2’TmŒ<É}ƒë%³ÉŠÎHfºcàÇWºŽ^Š7 Š0Ü¤ï ¦Ê–²z™[r¢¥ Šp•'+”µ¬ ŽÔY¹BéU"õ&Z— ¼¼m,˜X0vs›¡K6n;wÞºukNNN»h¢»RÌúºíÛ·wíÚÕQ24ÇìÖ † tú·¢ òà2s”;çu)OcÊl¼ræ`\TѱϺ¦L 3.™~yuAJsá$߸XCdÌPûXdíf-Í7‡ ¬ NÎvwaîi?® ÆýÞhG¤šÇcŠ– Ðàbçï|i¨æeXðCš /Áœh\à Þ€ë0#+¹ŠFqΜp¤$¬ŸÓD#„pBKèé)ÖÍó~¾T|%øæ„Ä1]fNþ‹Jy(Æ 7üóAöÝÁ¯Õ!Ý à qhÂ{9!ðaåxmà†G  ¼ Âœ!‘’"Çyš¿DÍœ™‘ ¡™þX”² 2z¬SJ†yüÄ‚9¨¾Q“…,˜ÀYpãžGX’ã&‹ÊÎÞ2ìKð> G6üyð!è0c†…Œ›pLrÔ\P`ÁŽ!›0›I‡–‚EÌÐ@pÄϘdГÙ=ü'Ü g°Öd“ʱ@þ0Ü—ð¨Ú¤Züt‡xš:IŠ‘ža’ #t^¦¡fÌ*nPæ Ž ¸b$ÁEõÞªÕS.Ñ›Wž²ꩽJ‘[lÕ>¥ßÕ^Yüâp#‘(ýKžfé@²Mxè÷¨Š•µÁ$ôÌ-[¶@~ Yfz¦dÿ0»Ü«W/R Kà7ÝtShUÔY•—½½ 8%³zI'¶mÈݵoç#Š3“ ¹a6Yƒð*l(¢‘Œ§©xPÄá“)lzý€…ž¢ƒ¬/Ã4®æq—R%Ò€’…éXMq@¥‰+‘¢ÑzÊîÐn8ÿÊ–p² 6Dy˜éLó¤úA)¤`˜U€r ´ajƒˆrQ3 ¶l €ÎP ›™H kGÀ…>Òd$%U0[Q…ê_³,m±V<¥ùKÓ–yÊY:Pq9ŒÙdÚų9ÍL“¤¨*•¦H¥~&š„~ÖÀM#] ùȈQÃa€¸ãÄ=e<Èev *P&›hn‘q³€ÏtSBm°j–Bऺ%© v/Á&íâ9Õ’¦°–£C\&sEl̆±àŒ6'µ¤ ½‡Sœ›pÄLg—¡ç•q3QÐutÇì!ØO09¦§EE®Œ‘`¨ð‡¡È°*þ[!÷Õ© 9 IDATèTl̇{0jìÜŒWS œM†A$¥n¯ÐI¶f¢`‰‡(Fx’cø?ô \­ø ‡ì‘ƒã#ƒHŠ è/d¶©tÈÈã)áåLßÙM²î;FñÕÑÆ­,YNN­ŠWñ)4¸<µ”%§Z @%1›ªJú™ÕV‹Ä¤ñÂ=ªÎZ€³É¾´Õ™Ñ:3sçn5bÆ,» ÔNc§°ÓuÒÃð÷ûàõÊ/ïÖ?áWW…ÇÐŽS;ðݨ™»À}óÈ u>˜FÆ…œðº0p“eΟÄuô¢ œ¯¢áv‘.C¯£4‹•S'¤l‰ôãïJÀ#ÈÃáíÒØ‹\¯ð^ž¥Q™ÇRLij :Ío. ô”ÇâÒbú:ÉîQfÏrø‚ƒþ¨ƒª!"Ï×Jý¡+‚ÔÃÛ3ÊæE掟8©<­ãŸ<YÄÒ<'\É*pÓX9g<ØåÌÕÌ?¸!@ ËÜQ³>Ê*§Í°„‚•@˜@¢fÜF>Ç §fÒŒVÌt‡=Äd—5ÃQ4œ™Ç›3Íè*;zÓ(_…£iKX0 ’Bž¼$JFpýjPÜ<¢‘MdäMI¡À€ŠÄÎlZ“[ÞývZÂCI&½„lØ%1#¦•€ íÀŒ¶øó•™4³u¨AeÂ?dDÌÍS"ëÈÃnÐëÃc!*YW<ÁÈL¢"mj0õ ¢S`kÊ¢Zhn)æ4uAË £ÔR,·Íœs“Þ†y1õ”$%[– E)A‘ ^w$Ör™“Qš±u2i FÁ`3—’¨’1 ø‡ `«Sº‚²ÿ‰ŒÓ?Hwè“ 0â_Î_9—âÄš’f }ù`îì9%@²{À;ØgPF9šHI£÷à”Å£¹Ì€D`Bò”ü¡ >š,¡¿B9ˆ ¡)å—˜ü ðþJƒ£6³€ß‹€bi:Á 0쬄>ÝaóqÒ,,ÑôD¢vFõP–ÑIÚA?|MíG‹„¬¢ ñ©{`f[˜f)RñkùœÿBm‘l,ΘMߤ‡ UðI[ÇÜÕæ–¶<…QÁ&L†ú›üì‘4Ðä`†””òFègœ=‚~ÐÌÓ®8ì§£Nxù+lœ%à°j*ç!™ÆfœÖÃ1Õô8òô02%Ñ%±(–_¾¡à‹²œl MSæ‹wÃdÜH¸êt àO‡àl¸Â5Ÿß0£81F7Õ”ô˜>HŠëÀ#»¤’4#ì"ŠAîô‡TÑT7üU§ºÉ(£s¦ð¥ÈeMqHs|hPZP‹Y†J]BØ"È®¢1Ä2 þpeáÀyx•1þÂÅÜf7 giÃÄœ•¢X(.³–XhB5‚ÌÏþ‡BI€ŸÜ@"lMüÆE9ÝÁÅز@ XGY&ćY5~® ø_ªðä4óQÒÌUB’¾¯À…&]2 q_"‡AÚ iZÑ 4wk$ˆÌÐH_؆&CóÈ.±=‚BŠCq`¤´kæëøeœ†@"Ýü_x"O¹±d{±YÕ’°3ÈN¢Z7u£Ä*H¶ú*XRaéçÁê‘«,yŠA™‰5UU\V‡Ú¸ã•VâÖPA‚Ù÷£UV¿nGë¥/îxmš"Ø–ØB—@U‘ãi0asÌ{AuXEÊ­a’ ߬A3ß(ÕB2Ì5[ /§5<,Ný-eàZ°q>‘9T«-—yä£iJéIŽý4.úÓ‘¢nÈ£L3ÓÔ#ÖsÊb¸šœ1³pÑ! ѵ0†è ©VdtŽæ(w¢œZ–3ûŒæ¤°cîFÐÿ-Αw‰p‘+'Q,궉 3ª]Ì[iCq.XìQ à%f‹u–Å#U%¬ÊTNgb.öœ+%?œâ 0…H•/vUFŠVà?͆†&Åfa©0Ì0ˆKc¹Ç˜³ Ç‚8kµ" —?vféÇ‚rبô­z4’ -Ì >î|†ŸU8ñ%Y„‘&˜Q©œÇ~üÙ ”ògŒ—?e !ïÙ=þ´‰ü„ t}D„C}€7VŠ%¤)L§i,ÈF¹$'WICP»­­¥U!ks[qÂî°ì„jïb éœBÙ.«(Nz‘[_½–íÄÁÒÌ„XõOöÉϵ,›¤H¤çìv’¬4"µö¦L¸ól¢çeñß‘˜ð›ªÂ´ÐP¹¹C´²ß8^Q²ÉÅ1Ûí^¢¦Þãä .Ê;¼Éò tZ4ðý½©¶P½ÄÂ@€CvÄe|S¥¹8`s&î7 ·…l–•G(p#ÂTA€ mÃòPÂ$™¹¨Ê9åâ#×¢W´³“2ßb7¥{ÌQ';&UñD¸š(°Ã,koÔ@}^½ÉÂ)­kÅKB:&Sâ$ a支õ…6³Z=×_xÆ#CfNõ(±²Å"€€ê†:7»(õCAõø¹ó°iBò3Âò”,NÒG$Ñ RƒädY ¯…ÁbQžÚùÕ€ NMT±Ë„¿Ð@lq™îpÁ<â<1•q†žØ,I3&ʬмUr¢,ÇNy_e‹ ,ÃÎÂØ ßd`æ!Ae½cÁŽ!S,J,D‰!ÜNU‹R¥ˆ£W’R²Ÿ¨@Ü¢Ð[OÝÔ:ÞØ´l\{†Ä¹‹ã[Aé{j¹n"jàV´d;)¯}{ÛÕÞ´åb¯½BG ŽV‰ŽâÞÄDéñ¶Ò j1cÆÇxó.ª×9ã‚7wóF÷,â˜ù&ˆDþ$M!òà¡ÞXÕ›/k`,Üî€êí˜S+;²ìdÝÔª[Dô©DГ#€eHpEoq‚‰Ñ¶410ªmÄrR‰›6Ùg,VÅ:Ù7N#Tw8¥cÍ*ÝÒd×’1BcdŠŠ—íÝÉB×ðóÜ!çCpŽ™úm¦_2 “)šâ«U-Éò5(ÝVCòzÝ™uV=Š-¡Ç¼œÅO”Wº3RîÒºÚÜa.)Ó¨f‘M©JÉè «Àù°Fm:Ç3µavm'*V=JîeÇ 4?Ð9ðb%KF)s¢SdŽ‹"]¦¶Ù=B˜pP&-‰¡ˆ)RÞ¥*J¶pcÈ&ÙžŠIÈ;…a ¹j–ìØª¾I=Þl–pdì,®k¸]6{ŽËÝ€éǶʀ Dîõ²oدÐdDQ7:íAEc7>©h4Ûy¸íìôÆBqôŸ”)îX¥'nêR03ŒsRƒ'Có€Åƒ=ßúÃä[9Þ ù §[?kàìªd«Xî}|Od}\¥ê–ƒO8ñ'jsßÝTY0å·jQê¬Kô¸-Èm.ÈdTºmi2ÇSµÅYÁ—˧P%Å%ƒÊ¯¶¬ÚT -š½á•}@j“Ù³]PµeÄΆQPÿÇèÌ/,±ãëH¦ÎÄÕFÉ–³y‰û—‹Rg Š?‚) ü,M±pPŽZ%¿ZËŸ¤¬¬R•ÛµYÜÃÓpßT|¶ÒôÍ®*zŠ£ÿ¨™µ‡'.¨ÖLš¡ˆ¨8¬DäÍ@5‰T ‹)¢¹H‡ÁUg Ì’êQ8æž[,.ìÎd»;ÅíTÕш[\‘"\°ÀÂÌ@ä=¢-ç8Mµ´µÙ°Y+;ß"BC-ùc!z_ôÀo1wLÒ»·žÚZ ¨ªÆ"[g!sûÚ7Q4„þSŽ3ìðsÀ†7¦`0~|ÂL”Ù ¸è%ÖêÍ áVªD«HUT@YeÌ°Ü Y?³É²,03'(¼˜«˜.ªKnªìÊí·xtÕÎ× (v(Ô&­Žxz˜³˜°pZ´Ù•G¯ÙbHª²kàLŽr–ݱ±)ÒcæÐa‰¨nòŽÃD¨¶{bIà©Ýº£òø\R•[Ãv4cc2g ÁSqX¥›KÞÖícS„6jß0Íœ[«í΃7I³V†§ÚÞþDoDN7@" ƒ£“Æ'jY³ø _#-ŸôƒäŽ))Fª™@G”× úE’›]Û¾øÝ5WwíÚµi¼8½~ñ¬ëð*žo¿ývÑ¢E[J«{õÍ©£QZÑ=*J [Äþ–‘žÖ-«CÖOŽNá0º-~ûýÁm;¿;\QÅ.Ï{{ÕO³Ú^xv×Ô¨õøÁÿ}{øÍÏJTùçôŠÎxýpÝ5ilýÖV5IFàÁ™ÏGc! ~Æ ö–ôËø´ŸÏ§i‘~‘×0N¿ÿ…_ 4-¬š=õÞw¢1W+ž!¸ï¶ÓÂ4ìZòÔï^ÜY+¥!aˆè¼íS{jk‚ôi5u‚Ì._÷ÛßdffçèÕèúR4{÷·ŽÇ¶û`ÍÖŸŸÑÛ®jÅG/9­uúöòý=º++`1Ì.Cºü«Ó{Z¹]Î!?ÿï® ¨Ô±Ós‹ÿëÂ¥É@ƒ@ ’cHšáwþDÆ âsä_0¡÷5Ãw]ðçíõŸŒ?¿[`0‘³³Š~+PUVÖXÎ=ÔzTÅbAó&^»¬p' Ð&]eÃl5Ý£’ÞðõdÀ«¿ù ˜]†mÆ‹…;R¿{|ôƒ¹·ã²Ýâ‡qi£ª@HFk—åbŒ‡^(`=ÕÕÕ¿ºgµä…¬™)ö¼t²žÐÒf5M]Þ,ÝL•ÇñnðÈþÔ_(c¦SHšcØ.ìwÆžÒç9]î9tîýgg¡ð¦GóÂR,t¾¡ð†+:bé“§§àâ +Ïé÷¿xþŽ%ß^1 ?ßïZòäu/t¼ÿÅËàFrÆýÓ®XóúG>CaÍQáÓ¥ƒ®GOÀèó]nýû°¦rXÅAM²¶´c觉åhݰ:c5g ÐÃU]•¼ÆÂäXÔZ›6ºG5íöµD¤ÅÐè·¹ •••œ+ï߿߃ŽUN«8@Ï¿™ µååå-Z´`UlqïÞ½êéÿö|kmšÔ:X@]"¹ruÿ­=‡6üp¤Eª¯_»vlIs|y3¬X†þ`á²G¸mpÅ€Ñá Èh!ô5¯_zÛ§ÁϦßß÷£{ï}b‹a\8ö™ßd-yÁ¸ñÑ}úÄ¥¡”ÔÇ0:\Ñé?—Žy¤Þœðó!Ï?Ïcú¼ówÜû(ªrÞ¤ƒ. iü~̽Qá´.ÅO\:f§TNy|‡+˜¡×°gîqÃÒª]ò—{—p8óο¡ç£áÎØÌíøù»%ξjjR€6³u×å“:\õÂÕ/ï›y‰i(3ú®Z1±U™T`¾X9'zÿéȧ†øÃ«’V”Êe\.üîú°€\ëžlkµºwÁÙ¢Ò£ÂzK„ÖgÞLªÅHmçì¦Æ‰€Gã©b`Ø4jH§÷W´ßÌ›ü˜)*d{ÝèÀ Î1K·€ãU—vzoÅñ»ü|³*®…êéâ‚A_Óª ½i4 GÒå*§~²{þJ©|Pf›)3;´nÇ«DÆŒ“ÔðJ9Úàœ*ß5¹E±ïÕ{}Âöìô~CƒŸbŠÙëø.F‡3î¿ÓhØÖlö<~PÇM/=¿3ôÅ•ëö½ºðS´øö†O&œß­§¤D(nn„ªÜþ}I©PxÜövÚ”ï{•6/yiÍÙçv5‚›‹?»|/hÛ·ÝôAX´›ûàÛ].{æêòkžOÔ3ˆ Ÿ>Æ€€m,„¶?í´uWMzó»ÇDÎ jCì §Ý)±Xj4.þî»ÇÀÖò[ŽÑǤ+ -ü¨"Ï’Î*ãr´´uÖâuð¸,îÈÐðˆÜsqþBrëÊ>œ~fœ¾[pÖß»½²ðÊ®qÊ›x©­=d`‡Ò—d— W½üøŒÆ•Ñ‚-Û.¬ïÅ鱫ÜbpÌž3*æR®lð3ÜèŽM ã4óÃs«V­X{sÌêiS˜c^ý̤¹ü=ðé×ͼ¶-ZÁË2ï¼ch'»®ÝKg4PÝË{µÏ¯O6^m˜î94Üö¹ó>,ÅDyûÜ…gžÑ÷Ú&ÇvŽ!Ó%­ºÝÀ7–?v‰üæ"\ö´>ò› »RM©o\šÝ л¢ ÓýÓÓ¯>ØõÝÛ»ÿâf|ïÇÏ9f ÿñ©ìt)h‰,ü¤ç­Û²`ÌÎ#U¼=~Žzºøç4î9fÈ`ç×Íœ‰‰òî¥KaÁv"Rf žÊi§¡w\Wùô5Né´ƒXr“Îþ×Îì-XM®‡°êÁ¢“ ›—í;e߯ÿúÀO3ÛÌÞ#ŸÚ3.>±ýu/~ùßû68¾wÇ£bfv] 7—Ï[ƒ¥Ï½»=wÄ=ƒÁÍ{¶½¯›ܼöÃr ÅÆƒ·1žû#9YV‰WÔ*»Q7…aÊ; :›üìyê ÌMï­TLw=.«üÛ-¢ÊtLZt4‡ Þ\ü]ç.JìŸõi­ð¸Rcj*+ÎyèÙ¾]Çϼ°èú‚RQ…5SÎ8n Œzvû#ƒ…¤d°x©ò³R6ôüÏöí= °ûÐöíÈÊ?v}pæ„sÈК)þ«6ê¸Ï§'”¯),ºÌ­üã ¡zqÊ›¹¡è’Q£^/zè¨yýóSŸ¿±áºë{l{ca ç?**ŠþxÆ”¾Ïn_ ^n{:ïüÁ3ÿñHV¾Ž‘n˜9xTͳ۷L(VNé;l{Åb°!”œ¶PµN˜0á»ï¾{ñÅ™ø›ßü(ªmÛ¶µzqö%Ãòox`þàY£»…ª`âyäÛè|XAi>¦Ñ8¯l 7–,^'ØFö}bø“oÝuA˜BS°÷¤e³F 7äëñ,n°öcv¯gÇo¹Žÿº®s¸J²ôŠÊš€Qs‚°4bVÑögkºôÆÖÁ&8Ç¡WÈVP»"7L6Ü}-ñô7S·\ÇüÒ‡7Ötzçú“¾þåïÞ…Êÿ z®cžÿÁ v:08®c† ›ô¼}u÷ ˪Ø(TO_ŸsAãžcîŸsúܹÏ.Í [Ba.€‡ìyFhõBˆ°Ì8Ýøì³Lb° Xå×_ÐÌnnfq1® 1—C¨ª®3æÒz‘‡&“]›N]ËîKh%H®å i'y¢Y•«×¶f.®(_†ìáÅ%Òí0ûÒŽpÏ ±ÆŒËfÎjÞÕϦ^‘Ó•Õa?|øp5ÓãŠÝ5cŽ”}—ÜuU‰´XúláEÏÒÙæ¢ß^UîI§#¢*Ä\<ãîbçâTha‚ÛÞ5C5 kw̺åîYá¦Ãœ±ÆXrÑJgG5µn€üÖ†ÛªòÁê#@>ûþ§ßÈþûÒ±&ªN¹sù¢ßu'‰¤±xÎHÉ;¯“}ç®ìëÌ)w¢Eâ/‹Õg_4ÂX"sbyfiiåÙFézãó—Îï:팸¨ò¼§¬Çš¯ÞXŸ÷û_¼1sIéØÁ+_ ævª,]²Þ1él2ÕiìïGL{scee'Õtûµ›Ï7~±|³ ÷¿ú×_×ßYxeå;fà–¸’~ o øÓŸþ´qãÆ’’’ž={ÞrË-@Q[ ÎæÄù.ƒÔöâ™Jr<òá^¥³ QÆ øÊ…buòº-=–½õ!$Ön«2Ö=1;ïÙK;£TþÂs^9þÊ‹ßy7ÿl̪?~gá°ñ¥{l AéQ–^q¤:xJ¬ÊÊR[#VÊF*zwH¨“:íGw41*âêoB³œcy&Þû>L¹²XÇ µŽt`° ”ßW÷Vâ{¬®ôO¨Ý³g¼tœU±%˜cVO·ìþv÷aø±Æ»Á„LÈm'›Ù1,xhÍiwμV!¯~fÆÒÝý‡vRW/,ˆwWyæ3gB Ó;S@â°«xè˜Ù SÅe«‡º-ÞU\>dæÌkq‘³­^V Iøæ\7üU–D;¹aAÞî|ù3 •è¨að| gƒÙ•`¼JD“Ês)ö°èL4cý îù×ÎT㲙낧¯M¸&•Ïèyô‹+·½ôÎן|\‡£àwGŒ¯ö*þxgzMðôîíb]’âîsÒ ¾Õ[£GÆ'˜Ô —÷òù×ßñØ¥w¾ýnÀ¨T…ÉDOW8¿žûëëƒOmÜx¥É6ýªN³Œ ^ùÔÆäthÀè–œ¼b[Í_æM˜þóàcOmÛ\ ó À×$e†gžXÔ~ ž¼®l[ p‚ж²/¾XxI6NÃvÉåÁ7_½N™·­›VoÙ²åc=vÛm·MŸ>RK3¹|,ïvå¿J¯Ä4·oÌ(wݺŸò^žÑõºk†?üþvÃÀçùN|®w<'ßxMK)œÀ^þñ]œi¼ûþæÛGK¸œ IDATÝuÓßrZø¡ô(jÃøzÅâ/úLíÞˆwC].Ú^!•‡[©›¶iŠVâêoÿÔ´ûúõ·vëþafÇõ¿!ÿ7¾ÜÁ9æuën±Ó¥ Ä’z^¯¤çƒãŽû†í_ Í©üßKƒÕÓEó¯Úôc#o X[ é}Þõ'€¶ùÍw¦Ÿ¤ksg.¼ò÷Óцҡ|r^ÁÂß?Ý÷×ÿÂÈM€ÎŸ^Z:O&×¢:ô’M‚%ÌÏ=÷;l±eI Ãj»^w÷¤¢k`Jxlíüz;¼ çBÐsÁ¨I`þ×]Œ¿o¹¤À²C5£ô(êwï¹tFß'KÏ7Û%¼N‡^Ñ­×Éë6oƒ…y^ÞU+µ·Ykˆ¯¿ñµí~ÒI…ß¡C‡(WÍ1;ÒÁrQÁÈOŸp™æ˜;tèY²l˜cVO·ìúÆÄ©¯F¿uzM֮¾.„¿4’iñt ”øË褅kfï“&í²¾¹#Z7¬ÎÇå«Åxè'l¢Ð†)°4äÙsk¬üÆ„(Ì7 øžpÓÿößúØGWØåèÍ;~xã]ühÚ"=õæ_ž4êçñ¼(ÄSš:1FQrÇÈ‚Y®ozŽQ™f¯o`Ђ!Š6Ì éDˆÜõšGþt2¸iV­{xH_Þ®üLÍò.bR­ª®pž7îO)ËßÜçd»iU§,Ÿ7m‰Bî~¼0×Xgä^ؕ˥ K¹ sé äì¢Ü%Óγ8`:|¹ECú*ñ˜¸Åа¾J)üsÂ2n_¸|]ïÝ®={ ßÿ€hÛç>»øÊsf…Y&ü¸nåû_“ÔÊ•_ ©ÎçæËŸ~i¹!æ§a5óïæÚ>ïQ²·ü½ç’ ÜÜ.Üòf#z÷Š®×ü¿_/äv|3økk/=ïâ_“ê zKýÍì1tá»2¦<¿vø?÷µiÓæ²Ëß„ý˜cŽñ c Ê ~Ï„ç˜Y¤ï°VäW—¿)÷ã?^=íÞé'þ@wUO£)¯^º&€qùb|°SÇLã³e&käÓÈb‹¬SÎiYáü6–X 6ß™›UŽSÓÊæí3Ú ,— Œw÷Òe‘~M´Ø•¨n¸–w­YKÓ¤{Žú ¥·ç.æœApµÞ¤* ].ÝöíÍÓ‹¾+/?·o»Ù·_ðÚ—þå†Þ|Æk^:êâì8Þ+ǹ¯Ê¨é¨&Õh:˜ºBÆ9s,|þ¯[þ+·Ã "ž|ã+ moh¾àÜá7Üíðäßɽ¶å_|>Ï )X¡qbß»'ßò|OsxR{‹ÙY@©µ ³ïÙ긋A;HMØÿÂºŠ¬T X±ÑçµDÀ¡¿™áÂM2u ~´>xðàë¯] ù›Žt``Aé\¿  ‘ùaFù'?ùÉÿ‘*ÞpŽY9ݼë›@0CÖ6¾BÿŽå“&Mb¿a¢W(wºöNx®Í\–³ŸCr—ÑyÖé§gÙCäÆ ~ëd©•§[1mÅ…¾­•pöˆ:ƒO&Š'ä¼Ý`eýmÎ÷¿öºµ“æNúl.¬«È=ÝXã`ÔJ²+±r8ge–? ³ÂP „½t¤¿ÝszâÒ|òÏês8,ßí¼œÅÉ&Bƒ«ïË-»'Ü3ÿÀÁÊ‹Ïî;ýæ 32Ò3’Ññ¸£ Â8Vb¨¸øàùâY³f©àÀº«?ÿùÏï•ÚÊi"€ê0)Sþp­Ýó7^~bÊ”);wÚ' í¼šÒ°èܹó´iÓ~qÕuéÖÇö}ÿBóN†urB¥)Ð<ú[¿^™¶”÷ïý“=7Œäßü»<Êäµâ¡+>Ú8°_§ã®°Ó[Ÿ^aüæ_ðË}0Ç<æÊÿHø^/ziæíÕ¢!ϬûžËûÛœ¿]?\V5´ÂÇŸ|rפ¬‘jhq5 è]‰øQ–†N}zŒÿùÜÒ§¹à´G§^ér4Yòƒ3Ÿ?óŒ3¤ßo¿ñ<ŒMêü(¹é¦›\ç˜ë3bm[#5ÐáóžÇìQÔš4c]#P­ë:6ß~7>óçºéå M#¯ðèo¼¸¾«Íš?÷ïÊ€\ rŽÙ‘ «2‚Æþ#y|Á^þC—c†´X"·iç7êé–]ßúƒznäK»ß€9ßÇùI»À/s/‰2]ŽÞ}×kU9=ˆš³8êèc¿þúëöíÛéõè†6+ðëÁûöíËhQg¯Öú^Z÷Ä—¸®Ãã™?ˆB÷¨X›²Qð{÷7X\áƒ÷~)ÞÀo‰Èlê2æŸhX”¼¬”ñÖîó]Ac×~EaêŠoÂNAG£P;©h,ÀGß+/Ë…Ô9á»fÌÿyÅùM¥ ÷@+ÔD‰ÀŠUK/ºöì»råÊaÆeš¿<¥6ÍV¿|ÿý÷ï¾ûî ½úÕ•ôÒº(ŒéHÅ»¿Á’Ç£Ûµúþ€å‡"„Ù¶u‹ŠÊ*ÉÔ©C»ò}áAäðÇ#h¡êoö~Û¶ec^ÐMšÇ|á²k¥®ˆd¤Ëà…kÆlÃ~%%v‡µ„F .è‘}rÀïþ…«ŽX~Ĥ.¬kq#³Ë.÷9y`Ü’$¨{T’€­_µÞým߇~rÌQǵ·ý¥§Ó•U5ßì?$Yõ9aÉg_vܳ¯u§‡ÒÜUAº¼ê£ÏÎì ϹêM# h¸xdÌúÉ¿†ÛlÚ3^}s`טh…€îQ‰B²±è5عW<·Ïçý´{u凫W¼ýqLJ`vÒå¼}b’ª{fx:ªîj‹†ƒ€Î˜N[hO4€F #08§ì8w×Õ7 ¸sé@SFÀ=c6ôªŒ¦Üð:6€F@# Ðh4(pϘƒ¶ˆR¥fÓh4€F@# Ð4!<2f=ÇÜ„ÚY‡¢Ðh4€F@#/³~ò/^PµœF@# Ðh4@BÀã Ï1»îÅOôµ¦}âJ¶ª–ÝÚÎÜjÈ‚»uV[6ó2¿L:¹µð\Ó+ö ŽçÎ.‹¤''¨S«Š&tåéP4€F@# h<xÌ1{­ÊÈ}üŸãž¹iÎéÚôø9Ѿ¹yÙ߯Ž[´~vèCœø•ïðèPÁË” q²žÎ“ß[?Ù0ÊfŽì}çú¯šD¯·Là‹¥½}ó°ñô‰ìiªôí¢A ýML FíšF@# ˆ mÔwÝØ ÓÜ·ßpvÝ#cö~òØ3hDý€`ñÿ½Š.¿ão‚ŠI‚Z®†‚·f·½jüD¡Ý3ƒ8ñÞð Lßl ­‚'Ïí±hŠ‚¶køé2|ŒÑ»F@# Ð$–âVÏPX!}Þ4)±š»Ï1×üà Ãa¬ VÀ¨¢ò…óö?n<~cï{ ^2üŠÅ“æ} Jž˜,ÞæþvQðçyÏã^y{ö%À}ʪýÃQjù#¾‘…c뿪7) ü(´A¡æÍñ§–Œœy¦±eÁÀ…½'þŸÞwm0ˆX< ¬oŽÐ3‹¨CøØAÏ-ô‹Ê!Ÿ7Ì Îîï\8xlþsN:e2UòEÖ¦ýosPaNvnõÿ±ðœ/2îÃ$Âè ÞÂhíˆßïß±cÇ àÈ ‰€F@#©©©mÛ¶íÒ¥K²ZD#ÐÄpϘý”»nœqVÀ ù柟í?\ÀYص¥›oÏÎ6Œù~>ÚÓ«&f!ƒXmqô‚mëkϘ]BE#P)”¨…e+ç@Õówøäs+‹ÿ] ´qy§€Ýl4QfL…¬ µÑL0¨âÞrÐ#òrÅçÙÇþ}j«¨“‚pyʸô¼÷l,)ÝbœH‘²f‹ÿÀ¦èd4»· é³.ÔH—[µjÕñøãk¡C‹j4€Ö*+*¾úê+k…>×4?B³ÏçƒðƒðµK"¶ì‰ ö~Ì7êÍ’)×ûßôÖåªÖâ[óò^0L{:Ø{ð8,Û´ èÀ#nb*¾Õ‘׋è¨ÇغÃK&R]Dÿ-˜@­·Ú#³ËÇ|EEE¢zoí]Ò4@@ƒ–­Z:tÈ0Z5ptÚ `}»æÍ”:'`»ø–à·g*¢VÞv•®ƒBöè¡YœY:ÚÊzÁX1eÎ*ÃöÖk…[ V²vÓ.ÃØµxQ™£ …è¨'Aà)Yô1Ø([ú.Ì…ûÅ@Sj§£ÿJ€†«ÑpL¢tC³y#À‹1tºì’®Õh4±" ï«±"¦ù›0)Ž«›#Î3ßúg\2±fvï[W9¢³°¾ã`¶ì‚§.‡d9{âo {ž3*ÏwëÎÉw\ ‰hþyc9J±çå«>?Àx3õäùF½ 4˜º.ºÒèë}Ç]Ÿå;œô¸[ ¯Ëë=¥Ì¸úϳ/–UýW\å輓hÝÐ|Q `ïÉš¢Ðh4µD Š»¯fÑ4)8V/N}×O˜0kÖ,?¯ý¥SSR¦NúÀmg7)b æ-\RbY«ÍŸXV”‰ÇHA­x3(| ®Y³¦OïÞ‡{¯¼O¬/Z›F@# h´nÝzã¦MßU¶Â».Ýr›EØ:ÈfŒÀÝ÷Üsß´i¥«§ú|7Ýt“û“Í,z“AàÁy°€·#ÕÁÃUÆÁÊÀÁŠàÁÊàÁŠÀá#Æ‘šxný%3{6|t €F q”ì/žè7µ(Ø´jròÚ)ï›ÚO±ç‹®Þ^:°÷üÑñ¶jÅ`€–‡_®Ã"Í¢àìÜØP3€PtŽEeÎÉOGǰe¢³ë(Þ̈rŽYÆÍóÍ:cnf¡‰†‹½ÙeæãäœS Þ;ŸýðЧ(ýþ` Òª€o&¬àôá{¨Yõƒæò÷7¸j¢Ðê°4f@,ó Ù“Wñ—w)qNrª,%÷ŠqyøP“ÈÉ‹ÍwÅl#;—IÜ!åEÁ &Êe……ÅFnnÔÙªê…@(’cæ"‰8Ô+Fi×AIó%Ù{¾õÉ¿æ‹%r|D¯H}M‡F¦‘"@¯€ïÕΉ0‘µÃã®3aJ,Ÿ~µ_3í¶F@# h‚d÷0g‘xC€A sŒÓ¿QaR¶¡d@?‘•gOžœ ªul.*šÏ(ËŠåÎ17£NдCåm9†B¦ ̃EnÌ5"Æ´X¤ÆøG¤Ë⨪ i¢F@# h’Ôzà€ùRx ×ÀB|»ÌzR‘ÿŽ5²ê™W%š®nd-SæP bl1¤q<¦Õ’V&#´“ÃSÙ%ùc(Ú@–h”ä÷fgµ2œ…¥Š ;¬Õ¬ÕI+àXùâr÷ÐAù_(P°ûg3gFÓDÿò…lϘŪ kRÐDQÐa5Y`ZØeUÆk¿€¨¸ŽÙÍP“ÅV¦Ð4g\n­QC‚)m~IÉüÅe“‡—®…ŸY=<ÛØâ%kûm帄’Ñá«&—‡Å¼H˜vôß7xED;¨~i™‘›-–d¨ÅççWE˜Î Î1H§Þžë´ìX6O¾|^Å §EFhµcž] á°qŒÆ0 ÂB ÕÒ*–…a«®-æÈ7S›¿%7Ýô”äo¸QÀLûáâɳs£ƒÎn¸ P W†¬˜~ OlœCëuÌM qu´ÈÂé¶Þã˜]ÿoìP J­‘5(–)Ã_Z¯ ‹˜aÉ2-beøK<¸úkñtꌂ`p¼F\# Ð4j?¡&Ræ eeÆüc@$Ì4WK©³apB½¡ —TÀéœ<?_ÇøšÉ¬Ú ßÃùø€~·‡3⚼꣎ŠxB–œ ÏkUnZ ŒÙ­o|4þ••®P0rõìÉ÷ËŸfjq÷q&OÕÊblf 7—‘ß10ÑÕÛɘÞ6¦Òè ³YhÎù÷©9¦èUM qu±!@é5$Ù˜8cº Ù0>ˆR!ÿÕøƒÕ5íÁØáÁšàöí_ùOo€F@#=˜2C*¼èá 0sšì Œ¹f¬0ïlnQ¾‘Sæù‹‹Ï7lÊ1í Î3Æx,¸À)[zª/ÜT~zoÙ“ç( §½™k_[ÇæT‡£®ö6T œ"Ë#¸ e÷9æc#|‹ÑPÃÔ~5]Ê6zÄÍDðàt2u}xÞ*àÄ2eÏ8Á,¦Ÿy.éüÆ Ã¨©„Îô¦Ðh4Ñ#À³ÌsæÌáf!H 5&‹aâÙ€çõ²³KqõF>- –âÂBxÆ®  Gzí¦Ì½óòÍñ5vûm2ާ%0¯Ö )mœQ–Ù•¡+£ÃbgP;2  %õW‡a>Ö¦6»oN ¯o€œ|ª°%•C­‘¿¨xv.„ŠÕãîÃe!æf7—mxñN8âm×&¢Bg«l²åÕ±žÓ÷Œ¹ÉB¡kŠÐb‹ˆa^L\fÌ3´b ‹˜ãê \¤—Ódxý$Ì0Ç…¡ˆžh€F@#Ð8HÄO,̰Ì0ãƒsù¸"Ê‘)±ío.Ë€8Ú7Ä‘~û ³å%ʘðÂ7~‡·ÜÛ ¦öFOŒç6ÇœÛwLS3?¬´Æ•ÎÙð^»<£…×jÜÙEÂÖ€‚‚qÆ|–6¹³7ÀÒ‰ŸÂ&)ÌyñÓºk\¸ÀBz({ÚU] ­T?‰„Ô Î|ã'Løç¬Y5Êoþ¥¥¤L™:õÁéÓ›Aø:ÄÆ„ÀŠBsÌ–ßüË>ñăÚƒY°|\ÇŒY/æ¾>\€lÏ0-¦%8¹ 91iÊ_ÏLËšáȵ[¶lœ=oá“ü?»¡H”“;]=ÏdóÂî‹àˆôþïÒ£ýEOþù™Â˜w z‡ÍSƒÊ¿õÉ!ç¼vy ¾9Ó$€ŠÀŠüNéýße7˜ÝzlqnùÍ›k×ÓœºtTׂ[㘠¨/¨Ì9ùéèBûôÚ¶m[¶ys­óå3Ì_3¡l,Ò̱#@š¨H:ù÷Üsÿ´i‡•ÏŠm|¾oºÉas䙺¤{« hbC€’a‡MjÁži0³Áz Ìáœòà šN¦ž’å•LÀùeJáƒ%l‚ãÃÈùówíÞµk÷§®¿zò[$NîÅ È•ëC®¾ÊQvkwR쪙ߚÜiè[I¬Ç„¥»–ÜÐÃI…¦iâB`ð°Ñk7r÷Bù·Šæ6¸ö=ÍÚ¥®¥cGá¹På%à`ÎÙ†ÕÏ0®†}é‘ëµÝhÁƒûæÚª×ò#àôÕŠ5cÖér‚A×ê˜Ór œ-)*RàÇÿÄeL—aî|¸ŒŲ̀èxé  ,ʨõ“=Nü©±aó¶„â²uÓÚœÞ=Xenp™aN¨I­L##={çÌ/^!„VÏ›ŒŽZÇ×B›‹òÂÊ>zm\2-»ÄªÝh:Ðȶ…eÌÖʦ¸Ž¤é#€I­mǰ©[Ó¤2ý^ gÏ|)•/ ø#¦™Í¬~ÉÄ—ÿ…_ ü2 /#-Ín%6ÊŠây£ÿ0¡G˜·oåguÊ¢=i[19kØOæ3qè“ÛÂM@­ä$=åŽ^{ßD Û¶'‡²Î¬¬É+,àþmLä2ÇÎ3ÖþùÖ¬08èñvÏbKŸj—^–3¿ˆ»"^¹ƒeWÇ®¸í‰aâ* îjÄv¥Ø°µ^ î[5avò¡On6¯5ïKÀ´k5Gt‡KFúiËÝC=Ž—ž:&tŒ{¯ýà/ˆƒM}ñ‘t]{lµ†d ô”CYžŠŒ™¯¥dÖ:5uÎ!;íæ8Ãÿ£´žâãuÌ¡·Ë±4¤Ç))Fzª¯EzjË _댔Ö-RZ¤¥´l‘ …ciÓ½k¦³!Gë!"`°ö¾s²pk<ÿ×ÁbÒÈÄsÑ_wîÚ ûó£çÿõÉ­è)òoÊEâó ÿc²Á­O;w %õà‚ï_ö:À”™WäŸs_?` ïOÝ0v˜©–-²*æä2hx~´‘3õ}Ö,ÜôØÝcmú¨pC ;¤Ì6o…þI3ÌáWÁŠ@¥«`gÁ`Ð`ÖéJ‘yaZ®·Ž­šuòYÆëø|Vèr6ÇK@ÆØ.=+tnø×‚N­¡7@sC€>êÁí@l˜1Ë“æ†…Ž·É à6}BНÃ2|`ä‘CäÐ0sŒóÈ>#%Å—ŽÉqJë–)GµNiß6혣ÒÚ·Mm×:µÃQ©Ç¶K;±ÛñžÝßÍ–7Ö1C2ŠÛû½ÿÚ9÷Ém¡ëWþ!«sç¬Îcùijº$s¦Þ ‰ƒœ;šVqðuúúÍç¾~Ùû˜-Ó•«ì=&ƒrHŽ;範Y®Í ÊI€§Ç„?Œ^»)Ü"7=‹Ë²ÑUƒ{6—ìNjJ³F û%—¯/ßj@¯ÂUDaݯ¬Ù;ì©m²9ôFç+….rk™ jѸÚPIw¸VˆÊ‚ÓåP,Ö÷¥gƒ.áW¢ †þ«h–ðä—aX×17K0tÐMîÓ–#Œ|Ȧañù‚§ðžâKKŦ“±–Ú"Í×’f”!]nÓ25­²æ»·w~ñ—µÿ¹åƒÿüþý7'¼ûî=Ÿ|óþ÷]:oNeÅ8aƒNÐÞýâËN]» '’i\ƒãÖ'saÖxÇŽ;Þ›zªÉ&ù%ÖAvõ¡ûõO9‹"3/vY–jõ+A…8=õ¨îIsº pD:ðµå+Þ|=ø«Kº‡wõî×ïØñxpbçÎÿÀߓػhÄ+E5v-8ul·®k¿F/%K€õxéÙ¡s?nb“tøžA\gÌña¨¥ŽÓ*©©)ü• ¬C¢\ÙHM5 EÎHóe¤ûZd¤ÀÞ*Ã× eÊ•a‚Ö`ìyg×'÷¯ùèÙ²/J¾Ýø¿Ã›vZ¿ãð>,Ÿ÷ðš•Þ´ýÓïmy/Á°mùkŸŸšMl‚¸­lí©ÙÝ«[ˆ_²aáÔ_=^üœñ[u*Õ®|Š'­a1蛯£ö`ûó‹a²Õ>õÈüÑÃh ÍTÛ#ûÔÏyÖ9¸r Ll³oF#èQušÊHuA#`E ÇÅ—÷ývZð²Kº;õºîŠß›rêúÍÛ‚†St¥8_ Êä¬:ùçÓ§‹eëSµ^.—€¸œÌ¥§@—à+‘ðÓ›F ù"ÀC'įÁ¤ùv‚æyFz.·ÀPqíÅá@ðÓCú5Áö>£sª1è˜ôãZòçF\ܨ l|vã—ïïݰúP¥ÿHU ²Æ¨Úÿý‘šÃUð‚æà7;ü;§}yy~ïÏ?6F?Ÿv^—i(sê”÷ŠáÉ¿Ð6x┿ž‡•§Ž}jd­ƒyosîy]^WÔ >±¬K—.,:ú¹¨½Ç#ïM."¢ExÊJÙp¡F—ßvÁE £G›¿q¯ÿúíoÁÐðˆäkz”ê@Dz\rÙ©ÓŒË.Q/ZùÇ.¿åEIÐÿ°Ö¡‹Fs¥8] JÇì ÖüÈsâr8uÊ”ÑÆëáQx^Næ¾~Q}`8ÙU޹ª•~3´…¨¶Úº•ÍTÇ´l‘³Ë†Q0nÞSóßïý™¾`v†¯O‹”Þ­Rz´I…ù+xïÛ‡çoǼ÷í—îÜ\iì9ø>`Tú|G‚FeÐè<°óÈ;N?º‹qÐø¾"¸ïècýÇvl³îïê8mN# Ðh4úB@¬Ê%Òäˆå4¢sð¶‹/¾§òÜ7üóE1‹(/^4gܳìÜUÁh;Þ]·¥ÆüõMüaÎñÅaïtÑ‘=9 n¸ØÒäd  |”êá‘>ì‘>ãÓƒþÿl?rLŠÑ±uÊ€¾AíÓZ§ûŽNM¯ löÿZ¶óûj‚ø3ÒR`:¹:ZScTùÓŽisæ•=‡æf¶k—þß7ÿ°µºò`åÎ=?žØé'Ç–·O×%#­S# Ðh4†„@bÖ1ïß¿?%%åÃ?0`@FÌê¹lÙýÌYT<;7ëEÂìš rvßc~i™‘+²ô©ÕjŽóèÔøÞÜSU±½âØÖ¾!=Z^Ó¥5äŰÁóÏ:¤_Þ½ÕÔc3Ömøá˜@ð¨v-S«ü©•Õ)‡v§å؃úÅûätÞºñ`jj†¿¢jû7úÔÑÑbÃF{¤Ðh4@mH̪ ðâè£îׯ_IIIUU•«SÙÃGcÊLõ”0sêl.ÖÀ…¼ÑR u¹E¨ZrÍz ´rßdJ—m‚æ,U®銆絾 `ëÝ÷u¢H—¥ç»*ü‡+|¾£ZnŸQÕ6ãHFÚ‘V®ÌþýŸN:ë$‘.sû̶Æ1GAG7Úµóµk_©ß3ÓðÛ^{¨Ðh4¸€7¹³‚„eÌ ®}ûö‘’fL™×”¯š0ËHŠÎÏ)â%Ñê¯iZ"¿·,7gªº(:œ­$¿7åÞyF‘©Ë*èjWr̽)¢'q5J ÜXGxýEÀømZ¥öiè<Ò"Þx!f‡k‚Æ¿ÿwø¡•ûTZµMÛúÐQUÚô¾¾ïÝ#³º·OW}ÝÄÝÆß¾MM‡v5íêÔ½­ƒ9MÒh4MØïÚ¡Y§Z=¦»áF(aË%ˆ†ù´•·WÞµ.6Xr"3f–d¤¥¥ÉŒÄ6¤ÌÆüÅeFYéÚý,+%pÍF^Ø£vy ˆ¹â¼9޵‚ë˜é¦µ©ßTy½ZÝÌ•-ž_bÎK{™Ðu §÷ó©ª^öîÇ_nþºå¡ý×5»õ®=û¾?pðÀáŠí*ÿñå|üã€a´I«n•ê ÷¶J œyܸ“[fª+TÕÔÀ æª÷}ÿãÞ}>Ûq°úØÖÕǵ­èж}ºÑ:f½k4¦@¬wzL’zo¸ÏüÜ0ÏXåó÷a†¢Î#cu/1üuæžbŸ¶ZÅß™'&ˆhµxëí•wm´4¾4žmSWdƽ:óðáÃëÖ­ËÉÉiÑ¢…k|˜2ëg¾1zž5cÆgïè“iɸ"—‡õ ¦ƒÁ\|ÅÆW+²'µó7शMõ‹`.²ÍÑPpì·OêÄþ]šqä­}¾å­ÛªJ=ê[ÿ·U5}ëßó]MzjJZ+£ºÚ€ùä6?mßåà¡ +vÞêÿewßéGZMãöY¹±ÉȨ>l´ó.jhß]\; %~í‡F@# ¨Ê Çà·Å¡/г'×G’Wÿ@hš ›c®¨¨ˆœ.#~˜2çç壇;>Œyì¦^¹“À%”ìÒƾlC ÏMãLpÍl$à"¨˜3µÑbkQXÕ, V)Á;:Wþ°çðãë+ÿ¶Û7oo`û#Ø:%Ð"ÅŸžRÝ"õ”޾©'¹w qAŸ–é_üøï÷Ü¿!cþž¥Sן²to‹ŒãZ¶<:ã¤v©CÒª³OJiÙ.µÁ©Òh4õ‹}IË(…;‚ó”ãÇÃŒ=D“U´‰’ÄwÀ‚gð52­®äz¿T.dš-ï˜uøÖÚªŠø‹…?â…·ä™)Æ@DÕ½B =TE¼Ê;t­Æ”À)Œ*ÌeÕÀ¦0„K=Të¸ô¨”X|°?&½rtÀ»6ÔÈuKs9*T;ÃäöþÄdÌmÛ¶Ý·oßÏ~ö3¯Ùe3ÌH 3€C[ïüzX/{ò}ãæäi‘1ŽÅso/0h‰ò˜ 9< 1×1ã‚dúÃ.h5'µA]”#ÖA×u{x„¤«<ˆfÝ`VFàý*Gu¸åþŠøu’4_ujŠ/#%»}pò‰U·T}œ¯~F{Üùgt¨NÝ´ÿÇw÷|°pÏãÏ~;oÁþ”O¿é¸foöúoz–ï?õÌôc»gDcQóh4&€€Ç½×¡Ê¶âÒä)YÛo^gŸ‹ÇËg…Š žŸ ÐΊÆ´º'«ø¥]ëJXQ’¿á „½h\IþÃáKBU•äO5À3|<*Ï7†Šá²&Ã&H@Æ–©îMÆDE¼Ð€Þh Þ5@Z—ëæãZ› ÖF^…jÁAí¦Ç#pÈŽ-hE©ÄêƒàÒ1Û%äÃËò¸”ãRT»ƒ ™à 9žØ|ÃL™R÷Øhn@Ã@ÀÒõ©F@# ÐÔoðb9ehioYa¡%)Å_ XÈåA#aÚÎ/}ò´»î¡Ê΢”à+¾`sY¥M/{øax¡ÓóY¡Ç¥ÈºXÁQV8ÕüM ÓŽÓ³[Ž^EÐã$c@+%ˆ@ŒÏ’9ù¢æºÄÛ™kãs;ÍQðè¹á(@Ò, þŠCÑѰ[I{§Ð4>ྠ«cóV5â"]z :2†Ó eË ‚ùGèÙ>ûƒF¸BB>ùgã—º½uWå%7 gÃŒW!‹eœŠ{ôÔUΜ9ü–ªÇú¸ZÈà¢bË/O8=»†C(lO=Ž‘ØÐòv&¬½BÁÆ ¸£3J ´vœºÉh§UvñèݶËÖ–â7a¬Y³ªàgÌ-#%eêÔ©MŸ^[ÝZ^#PV|´Qê»hP,ÃXƒ[·nmÓ¦×ϳ'Ô ­L# Ð4jjj¾ûî»ßûð®K·Üæ;E iïÔ~ü ÷ÈiÑ.oÅu—Ò5!ðÑDx‹·åSDý ô‡{î™vß}‡•®ÞÆç»qâÄĬc®Ÿ˜´U!еkׯ¾úêСC€F@# H,-[¶ìÞ½ûÎ5_'Vm“ÒK Ơ̈ݤbªã`àµ"% ÔJoøv&¿U¬3¯yªc¤´9@mHOOÏÎnPZm¢Ñ²ÿŸ½{¯£¬>>'IÓiS J¡¤%¡f‘È6eQ¹É%±»¯]DÚµò‘ÔÒ…u—MÜ*`­¥º}5Ñ•W¶Ñeq–eëî§&Ü ¨ëRµa1Ú­!¡U¶€âBK¡$iÚæ¼ÿgžsæÌ™Ë¹OÎ9s~ó9Æ93Ï<—ï 䟇ÿÌ €”‹€šU±Þð~ eδž>NîÈ,¹wÝè”$+nNŠ˜+í¿µdv9@*G@ò²‰Ø¶Á›Ã¨Œ´Ìô’Þô+³Ï:h&t.ðUAu Ìž­òêX@‚¸TW.ÿÊeA 2$v„ñ9f3Ÿ@¹2.ƒrÿþ †¡ €%* 7^Çî·.ÑÒ- / ƒf›ss¶§Ëå1W§^®—A¼-7“&½5\¾Ç^âîñî÷Œ‡î¬5~ íéöêGºWé÷Â'™qSD@ ¨_×ù„…í µ!à-`‹˜3y½ë0 y¼×¶mÛÒÍêùŠ»ÌÇ€›‹zû²Vó½×Ö»¬ýZÈr»úÇO=§$¶l6¶ÆŸ . 75#CFiúYªR@‚ døM“¼[Tˆ@Òã³.眺ÿ~yÎùöíÛ'&&R«w¬ÇÞwcÌ©Êç¸o¤{…}ºo·tÈÜ/÷ßÅþñI”T¹ÿÑÍÆŠ ê¯Í6Ãüët¸«Å§{îGrírŒÊÆèk7ÿ>M5“íS5›@@ ÿf¿˜9“zIñŸ›u½™„ Ù÷€#ˆ $Í*b–þÔ»K\ÑtVdcccéÃeU£ ™;Û:ݳnN®‰kÍÌ ùã1>W,9z÷È®=7­þîôë ú»U¦’yÎ#ÝÝæ³2$'CÒ5äâfy\  €X`@ý‡dY<ï)jXÔlÄogé^k>1+±˜{“.Í)0ÿLu¨-l(ðH¨ Ž-„ijýæ?ߤ ¼ººº}ûö-^¼8ÕìrüXuýñÿ@c¯0~OŸä8™ÿ &øªÿ:³Åh×%[o‘Ä(õ_lVìjö›c–’’餤Ìÿ²£ KÍ&[7©ÇØÉ?]iÿpõ(›@@ …@Kó.õߊå™TÍ}î_¶­›¬ßÎ*?ÙQ@íÕ¿äU jÞK~c÷5Ç5ôD˜zP­Ú {aCŠ^± \âAsäúÕ«ïºë®C““zŽY.ÑéUUŸ_»vãwd^÷¤yxuuuæ‡Plä¥SÖ!¼}*[=Ê#€9 düÎ?‰a×6 gûŽ9jË22%s>=XPOßvÛ¿ð…ƒ““V­uÕÕ~ã‰;ÿÌÉØˆŠ›³Oχ1.ô|Q €•! ‰—®gTÆÈe9 8Ÿ•!A³~}v9 ‚¾"€ €@Ù Äžb5{¼FÙõŸW’@M% –±"€ €@pr‘ýV¾t ©‡]t¤+Ä~¦ZÀóv¾½ÕsßTwö@@(¶€Æò9ûâÌÊ(vi@@" 8f“‰˜‹|>h@@ ìAs,bÎóõ%%8Hº„ € €@AsÌú”©”J@@(wkšÙ™•{™{¹þ#€ € P gÄœ[µÎOË[}–t›¯›×‹|—·\ªÇ1&mβÎZã‡ëÇ<šïeɧú,{Cq@@ &bÞ³g϶mÛÒ&C«—ÁïJDÌò–Ÿöe­ê¥ñÑlߨ™î,¨h¹q׺،yt³±UÞNÏ‚ € €@ö…‰˜÷ïß//ÊÞ¾}ûÄÄDª>44µôl‰Ç®±€9Uù÷t¯èlî³½¢¾¡£#›GªçØ,‡!€ €„Q 1›¹ jÉyŒõõõMMM©‚憥˭90[i‰< IÖ0 {ºEb]Öb‹YÈcÙÚ; &¯}iÅóH¿í>Õ°@@ 2ª¬wþÉŠZÏ#hž={vº Y…̃C*1Ãc†¹£š6—M¾ñ®!¯à4—¾öžµö¤è¤óÕÒÔPçQ"€ €-P˜¬ «—µµµ555Ïúõ[Bf£wëˆ124èŠjUÎF[ú›ôb“Ìm=~mÈv{º´U,6…ÝØ9ÐÓfNSǦšý¶§¨Ÿ] € €#àŒ˜}CÝ DFGGwîÜÙÜÜ<}útßâ:dîßÚk,_ê˜V·ÊMz+±¬»‰nÛ s"z¸«Å½ÛÜbÏý°1ë7l×SÙ±™l¿í>Õ³@@ ¢’"æX¸œSbÆØØXúpYѪ¹³­Ó0kw _%¤537dÎ9>W,9z÷È®=7­’•ýÎTCǺv™FNd+twûä<ûUÁv@@´€sŽ97—ººº}ûö-^¼8Õìr¼j5l´¸f˜Í;ýÌ¥±³y]‡Ì?Ç_µi‹Ñ®o½¥Ëèl”-+v5ûÍ1KIIvîÔ¹ª°±4‘-1¹gš´ßöÜH8 @@ üä9‘hT}d%Þýkùäc466644TWWg¤¢² :l%%¼5ãÙ¹§oSR ê.¿ø–Øÿ;6£c¯ûÝ3ê…@@HPsì)úYñŸY9ÉØ³*Oa@@JP 1‰,²ˆç*Ç#]ùžSúr Ž“.!€ € ³@RÐl>޹áœ19@@ œŽte"æpžfF… € P(ÄR£Á ˜³k)·Ò2 ‰4vô´©ÿëélÌkR;·>p € €@y T=2yôèäøèaùŒ;|øÈál'™ £¾¾¾©©i`` UÐܰt¹2'f+­BågèÅÌ›°§[$ÖÍè×\2O®hÝwµ«yç¾öö>™}.ø¤vyž~z € V@"f2;4¦~Ê ™Óé.0{öìtA³ ™‡Tb†Ç sÿÆÎfÍʲ©Õ]}l‹Š~ÕÒ×Þ³Öž|À€Ì#'ÇÕ#»ÈÉðEe € €€¯@Õ¤¹ž˜8røù™˜Œœ”çgä²ÔÖÖÖÔÔH<ëw°„ÌFïÖÉ&lq¦«œ¶¤[=k‰M2·õxîmLä1ojÕS×m=‰œŒ,¦§S5Â>@@ ¨J¼þ/ªÌlþ/ÇetttçÎÍÍÍÓ§O÷­B‡ÌýrÞò¥ŽðÔ-€ÑÍÆŠT ý¶æDôpW‹o#É;T½RZecôµëP:Åv†•R @@ Bªª"U‘HUÍ´Újý©™‰TWUUg;þ±±±ôᲪT…Ìmî€Y·(á­D·fæ†Ì9Ç­!9z÷È®=7-O¾È¢’“!SÚ2³Ý,Ë`A@@ cªêššêšêé3fÈgÆŒcfw¬¤UÔÔL˸U°®®nß¾}‹/N5»¯Qå2-®æÄc”;›×©§Í5t¬kW™²l1Úõá­·tfŠòŠ]Í™Î1«#[7©{ý$gv9«3Ka@@ Ž%h®žql•XHú±|$Z®©Í.bnlllhh¨®ÎlfZeItØèå^>óF¿¹§oSÒ)QwùÅ·Äþßy° †õá‰#Ý[8Ñ € €ä( f“«kŒcŽ‹%1K³l™–]ÀlÈØslŸÃ@@(mIÉ0j$b>6qÛ_Mu$ˤŒÒ"½C@@ šê*£*bÔÆó)d޹:bÔd–^‘G»Š € €@yÔH:…|jl½Õ[Ê£ûô@@‚ ÈcŒå1ö*kä›|ìsÊé#æsÏ5~þó‚vŒÊ²x÷»gŸÍæÊ"€ €ä.‹˜³»qOÂeÿ·úåÞŽÌP ùž ¢ € €@n±t û¼³žuέ:ŽB@@ Ü$1Ã>„ì&—Ë}ðô@@Ìtè›c¶GѲžTg^%%@@@1æ˜ûW™o¾VË’î/R)á³Ç«tò6[í™W2Ò½$óÂ^}°·šrh^³ @@ „¦Ð»Õs;çJ9@@ Â³Î%Èyø./_¾\fYSÕ0²µw }Y«­HÃÒå-ƒC#jæ¹ÇèlŒDVÅãg•)‘œ¹ß/¤æzW­’RÖ1~'—LÔci›6v¶"uÚ7yuÕ»YuT¢g±ÌÿëO;4Nx7ÂV@@€b³¾ÛOE»9=ëWÂåk¯½vΜ93gÎLÓá–&WîÃÀ®Ijˆç3lÒõ@çZc³™æ0›„î_ÕØ»\§sôkcÙƒMR*vŒ£i5¡Ý²|i¬=«¤ÔÓÙÜgæP w ¶9¦Ý­Hðj5,-¹»ê7b5Çݳ%ö@ÿ–žöu:ï#>´DÖˆ«Ñþñ.úŒÍ¯M¶#€ €Z 1Çl†jɶ .Ÿp Ç|úc%rôèѱ±±—ÍåàÁƒ)»b&*´YA J0¬¹×”G ‹šžx2Fê¢)÷šõÄr%Ì“óª]­˜Q~ÎíÊÑFïÆ½†-`Žßheuû MÂæá.•år<ìD@V ö“œyæ™g²;V¥«ç1ë£dfuG,WA2ÚÚ#²i“g•­›†»–4J s¯o1Ïcíu=º2o?VÄÝJkÇŽ¾]‘X»ªÙV{Wí·1z5-#4GÚŒ¾hb½¥y—LèA˜Ç»]¶EÝ ©i0Óx¯æÙ† € ¯@¾s.í«g{ÅöÍ›¢V$*›ãë*W¡ÃÞ¢­˜µÙV>Q4y£«³`<9Äc¯³ÇÎï~ Å·'ÏcM·ìpy'éÒ IDAT8mõ$²u@@©¨ŠÝè'S®ÖgjZ.©VäIž÷æßI•œaÞIþQ € €@^î$f©.ß<æ¼zT ëËkõ£9 Ù%³jy0]ák.d/© @@ µ@1²2R÷hŠ÷:Ó! ؼgÕžI#l”ª@@òph–—´}:¾nò™K$ÜléÖíkîl,¡ð>Õ-ºT]d € ´€ÄòأbÝb•ÚºwÝ!]ÿþýû«ªª¶oß>11‘ªÅ‘]Ö[¬::ZS•-™}­›†»Zz¶x‡÷%ÓK:‚ € ` ¸ç‘e‹šcֹŒª¯¯ojjH4·.kè\‘œaè\Çò4d–´­ÇY]sZ×>ij­›+ýêÝÕž)‰ŒŠXÞ‡Y¾;– ’H±ˆ·»¤{( ZÃÒåVÈœÔ[9.Mgl£ÓóÔêøD>JlLI•È^«woãÙ,îAÉ;]š1±@±€gîC•~ìœýçÔÌž=;]Ð,/—^Þ+á°5ö¯jì]®óúŒµÝ ›¢}톙±)Åô@çZc³H w®\Ú0—¾öžµñà| s×2½m s£9[,ív6› "›ÞžL±½Õ¹Ï):“hEº:Ø&pCǺvkºKOûºŽÕz¼éu[d…98­·v¥x»Iƒ’qgB—éP)‡ €”µÀd4ª?V„‹˜G£G Cÿ”‡6ÛŸÛ<5®­­­©©‘`Ï¿¹†Ž*Òl3ƒæ‘¡A=£,At[ÏÀ®¤ûïü+iéÚlš*þt›d– WkiéºÅŒ¿e’Û’F¤Ýø6U‡Kñ=f6‰woý;£Ê·/Ó‘¿ÕUéC,dîß2ë—!$è©¶,_jFÑöÞz(¹•~”@@Â/ Ã`‰Š­š«Ž1Ž1ªÏÄXD~Ê×#‡§TdtttçÎÍÍÍÓ§OOÓpCÇæDnp{ì^@ ´SÍ+{V©bÒ¤%qs¡d{’ýÆ‘­½Í‹Ì Ö0RôÖÕï¦Zoé”Ùï‘±ÐØ»\òÖífr8e@@Jøèacü­ÄG¾J´\uxâ|Øo}’-ãS366–>\îI¨ TMÛ6,j6É®Þ64µÄ§%ƒ!±{ w«9­ª‰Oâê½ÖÍ…j—«>kƒ´ÏxÈ5eV†Î¬0cyïÞúwÆ,»gP5ëªäE½7ö™ÌÞíúŽ= € €@ H ¬ã7öëÏ›öM˜¡rÕ¡ñ±Cããûö½j}ÆÇÇÆÇÆ¦Æª®®nß¾}‹/N3»Üºh—Êa–E%ïP‰êI†ºÑÏ\T¢†y{`ìÎ?3ë·ÍܵŰåN´4ïZ¡6ªj’ç¥eWW·bWsª9æÖMfư,+Œå^YfÔ²¶iØšûv÷V€ý;cŽNòOÔ¢Òµã]•a5÷ô4ÇR˜38Gžíº³Ó¹÷²@¨‰%~íµÿµ>‡I¨<¹¤õï½÷žÿznÅÐÜðŽÛn»íÁû¾=0““’W­®®ž‚¶ÌÇSHkÆÛÅ_r쌶eYöI(ÅozðÄOž³j¹ôü³ P#U €d ÿúåߺ8Q$ ×\wýÖ~a‡í¹óßuÖ7ÞT3:6>::þ»W^³FÙ0oî[oMQV†<Œ9 ºS6•ÂܵyÓ”µGC € €@ H ìŒG’h¹fllb|üðÿþþ€…16zhtôPÙ”ÇPåÎÄÆÎy|ÞŽ’˜"/4z‰ €d! 1ðèØ¡ßÿþuë˜ññC-׌OÈ~¯í?˜Øqèðø¡”oàˢݒ**Nñ¨æ)îj¶Q×ë˜â>Ò € PIËT²30Ÿ¨9|ä¨|Þ´¥aL>*ŸJÂa¬ € €f|ä̓‰üäÇU¨\sôhôÈÑɉ‰Ø«Cä><Ù"Ì@@¨(JÌë-5“QC^´wD‡È‘ˆaDdËäÔ¿ô¯¢ÎƒE@(=‰%>b‹„U`5j$D6?æ3+dfYVÕû¿Ò=B@@ [`kAm©‰æk2lOy3¿Ô ªE@@ D$Ö‘q¢*.ŽÔÈf™`®ª’ÉæØ"á³!@@*J@…Á2“¬_®§¦Í€9ReþŸÄ̑ħ'™åUw‰E½»à‹<ï8²¤{Dê•¶ôŠ­ ÷ÞÄ–‚w… @@Š  7«ª$jŽ}ÌIg5—¬þÏ\b…ŠÐ½Lš”—wÈ“<Ô²Éã©Ê^an&µZeÔóŽý_ íޛؒwÓYõ“ € €A ħiÍT 3W9)ûBvÙ:u#€ € P~eš¯lK‰P3¼K–DÚzŒÎÆHDgl¨ýzÑßÍiàîXfG<åÂQ(yª8¾3^Ø=‘¬·ÈO«éni5‘1â>¢ü.zŒ € Ÿc–G2ëL=—êËKÌ€X-”JJD_sçÆ~É9n3úvìØík7Ì´ •±Ñ¿ª±w¹Náè3Öš¹É†ÄÓ»–©”޾öu ”ÚØÙÜç“æ1Ð¹ÖØ,û†»ŒÎ± ¼¯yÙµÕtGǺöž-±$ëþ-=íë:¼b+ € €@‰ X±¬¨‡/dz2ô·ØÏRḬ́ò˜usë¦>£-"ñ²+«ydhPÏ7KtÝÖ3°KGÌ-]·˜éÏ­ËÚÁ!ÙÖÐÔÒÓæºÅOŸ¹–®Íf°Û 1p¼‚LΩT ™û· ÆÌä8Ê € €”Œ€=6VªRqsRÀ¬¶ª€º¼—öØì±Ï}‚jpêÖ½èfc…žµö®Š¾³YZoé”Yí‘˗2Áœ e@@" Äg—u‚ùÓŒ‹«ä§ ˜“éké‡Ìf>FTæ™]ÏškXÔlôÄ“1Ò¸KØ<ÜÕbÎ9Û—Þ­æ–‘­½íË<Íá[mÃÒåFïÆ½³¯;@@pÆÅª›ÑhìåØIé%:+Ynâëï^Òff=¨9]3µBò!¬;ÿZ7©üãXÖ³í^¼äÉyæÒØÙìÊ7niÞ¥æžÕ>wÖ‡ÓÇÞ´™ÈÑÜÓã®Òyß@@JO ~wŸKÍWýÅ5Wz]¶z$7ØE7Ùû×í0¿ªÜ s­Á^ÂÚ?dSÔš(–ªÌõ¤ä{|{|eSR{ν¶òê€äÎÙÍKÇ;Éÿ#€ €YÀ›wø©·d›¯üKÜïg®–êíE&Ì y•Âܵ9)ÚÎà(Š € €_@ÅËòº?«#ê娑HzÑŸ¼î¯F¿>ÛÜ«61çpÆäÎòLÜó—‡ € €ÅÐïÆ®¶Æ*|Vsuµ̵Ój­þUË–j[=Å?÷\ãç?Ÿâ6 Õœ¤‡tFcXþÞx÷»gŸ-õ € €%.`ÆÕµµ¶ÀXåêê½sì1ÖdË´3¿¹(‹„Ëåÿp»¢È¾QÞš^xSjD@ÒX–cŽ9Öêb,Xžf.3ëfZ;¦M“çDd]Ä18p ˆ­WlÓõõõ;vŽ €•, 1pmí´™3ë,„Z3T®Q›kkgÙ‚¤éÓk§—FÄ\É'Œ±#€ €L±€ÄÀµµÓí±C×ÖL—¹¶¶~öl«CR®vÆŒ)îÍ!€ € P\‰%6ž=ûx«2“,KšOVsâ?ÄËÙQÜîÒ: € €S, ¦’gL¯?>)0–ظÆÌZžVgO×P!ô´)îÍ!€ € P\‰e©›™¸ÁObe‰–«ô³2޵-æ–ÒŠ˜ûÔì‹¿¹;!(ß?õ˜±û›'oÎ’ØY«:\¶Åi Û%^aæ˨9¯~zv-óv=g# € PÙËâ ŒÍÇ1ËsçÌÛÿbóq̉7”‚ÛåKW>;”ˆ˜ÛzÿÊ¥— ozêõ§nZX¸JÄyñàëæòÌ¢2g­Ú{‘aÇ<šËa,¶fØnp € P:0ž^;ÍúèÀXÊ,¯4dNÙúÈWÙXZËÂEçÞ¿5>é ˜ ßÃÝCÏž»(/¼é¦Ë ßBRSÜ\À£¡z@@ Ü$–=0Ö[$^–·b«}ÖG¾–Ü›+^yµ2'fkzU¥#èÅÌ¥°O 'ÖÓg@¨©ì[W%Ò?äˆkî7ž½uñl•âS­™¢–‹¿9¿JlHtͬþ8›3÷¥(ïÑÿzÔcöê›±´“x–‹ƒ.¹‡|C@*I@ÅÀŽÀX†/[Ìíêÿ¬zÅsɽæY…Ì;GTb†Ç óc_¿õìX2Åþ×ߩó-\yÿ—íIѶË@ЏÒ8wÃ3¯¿î[ïcŸZk|“ñÐýÎK*±÷õg6ì¼&)Û0Í©ÁYµy•wÖnÖàÙC¿zž½uh©RxPþ4øºùÇEFtî†Ù‚ €„PÀœ8¶Ô䲄Êå2T ™‡ÙmìÙieNÄû®r6œÑ¨Ç¸b“Ì2mœbQ¹Àf´êšö7ìuú·Ù=³á\¯öm oÚ´Á–8®x¾û§¸¹ä‘¦§Ëwx €”·@ùDÌfÈ|ë5·ºf}$l–X8>qŸÍ•½ÛºÍn÷#=ësÎûf<[CòšÊvU»°áìX~ƒd Ù9{-{ø‹jw|¾Y·ïn.uy5!ìê€çPÒÔã<ÆFçÜÅw@@š2"P¹Ìž³¾ÿMd僯«ùgɘ}Íl¿®\Ë”¸üæ _^¼xö­Æ¹+WúÍ1_Þ0$ÓÔZDjR®[¸tå5×ÈaòõÎË=ª•Lâcm»aÃJã¡dÏËï|fÃÅ’­¶J>ôSIYÖ^Í¥*oæ}8ÇeH‚…ÕC«ñ”íÚ»è¢Kî?ß@@ŒÈÒ«ï½çî=÷ú½cVôÖÛoÿÎ×ï(äZG£ºé§•Ýj}}üͶsQ $Oüä9«—žV)t‰> €• ÿúåߺ•p¢£|âæÛ¾°vísÿ{ØÒxçÛ§ÝtÓ_”QVç@@"1&@@ÊH€ˆ¹ŒN]E@X žlo¦ôîü“Ûä⯌§ÓìBõ~ñÛ ýö³@¡€ÍÉoÀ.½ˆyÿþº3$@@2°fšÍR•QF§Ž®"€ €A F½*[¬Öš+B‡h@@¢ ¸ãˆQ£ÃãäT B³ € € PQ~±šc–p¹Ê–!_tEI1X@@ÊÐa°#0–h¹ªÊŒ««µ%Ëô樹d Û¿*’X–tdpˆg©'£=«d# € €@e H ¬ãêÄGÍ,«ˆ¹JM0O›–øÈW  ³ZöìÙ³m۶̂斮a`÷5w6FVõû4DLìÃf@@`ô$²#0VѲ ¢«ŒéÓVgÕýû÷Kè½}ûö‰‰‰ŒlÝ4ÜÕÒ³Å/dθ "€ € PO¯5¬ÞbFÌÕÆŒé‰O³t°¾¾¾©©i`` ‹ ¹aéòxÈœH×P³Îò­­Ç9h= ¼7Î1Ò½ÄLñ°ò3\Åâ%bÕ†kCh©@@ ±Àx†1#þ‰EÌò°Œêˆ1£*ñ‘-±'hd9òÙ³gg4Ç›hÝKÕhïYÛ="ßúÚ 3cS«IÞ«è\kl–ƒ†»ŒÎ:#ÚY¬cgsŸ®×¬¦UcïrÒgH3YŽâ € €a𠌫ª CÞû7ÃöÑ[rè­­­©©É,¡Y·ÐÒÔ`®Äæ‡ejÙkñØÛÒµ¹CÚб®}`—Ž~ÅšZzÚwŽ êyk™—në‰ãÕÛ@@*O@¢bùcûH`,1Ëm~Óm½#¢ÑÑÑ;w677O—´èL–‘­½Í‹$ì•d‰6Ü –Ôfב©÷*V‹»XCÇŽht³±B"äø†í±9giÊœvfA@@@ è0¸Ö0¬O,b–pY>: Ö?õ–láÆÆÆ² —UŽ„$M˜qëÈ®=׬bhWËÞ{z·šËêöeR‹w1™ƒÞ!aøàЈѰ¨ÙP9®Ø€ € €€ŠŠå3ÍöÑ[äsê :|Ö?¯Ì¯®®nß¾}‹/Î`vÙ¼ŸO-k›†ãó¼­·H2²Ú¼bWsl޹uY{üÎ?½Ò©–æ]jò8b…Ýîbñ;¥È:•Á¡žÎ¡ÛQú>Ø.“S@@ l~±ºÇÏ"Ë›H²}KvcccCCCµÜL˜fQ÷æmò(£ò':’·Û‹ºöÊN57½)©.W% ®Ö\E<úÂ&@@ŠÐQ±ýÅ$z‹$b`QïAaA@@ ŒDºa<«Œ @@ pDÌ…³¤&@@0 1‡ñ¬2&@@ 1Î’š@@Â(@ÄƳʘ@@rG»#bv›°@@ rÔ‹;’ãf"æÊ½9 € €@&DÌ™(Q@@ ²ìÓÌ…‰˜£æ’V1þÖj=Õ­~.éI{”O{eW3Ò½$Ÿ6}ºÂf@@ð XAsa"æ={ölÛ¶-mЬ^|­–¾v£¥kX­íèhÈW‚cϘ8VÉp—ѹ"³Ð[½%;³6U·üÚÍ ËA@(O=¹kï{a"æýû÷Ë‹²·oß>111õ2 ëÚz·æ<[=õ=¦E@@’°æ• Ÿ•!ã­¯¯ojjÈ%hVÉzYÕ¯ììße¢·­ÇèlŒDôÎT¸jVxÕ*©Ì,š¨Æ:Ô6mìl4u»¥Su„} € €e( “&ôO+h®)à@fÏž­ƒæ–––ÚÚÚŒkî_ÕØ»|8ºC4úWIúEë¢Í}Ñ­±¢}FdmÓ°o6ÅH÷Úž–åñüŽÁ&Iø0ëjŒW#ánã’î¤\vR(Þ³e{»ý«’º”ñØ(ˆ € PF:J–Ÿ4[sa²2, ”kjjtTž)ÍÈРžB–Nµõ ì1šZzÚ<3—“ë4'ž#'Âé–åKÍØYUÛ¾LGÝfÞ†TœXÜŽlíh_ç—Wi—24å@@JSÀ š­î2bݹsgssóôéÓ³{ŸºÐ\6µêþ¼èfc…t7e"FìÎ?ó˜–äFSWi—R×Â^@@2°f—õJÁ"æ±±±Ãå†EÍFÏZ׳.$FîjÊõ†>³Ú-fZ´$4¯í‰Ï7ësän´aéònØOi¾]*ƒËƒ."€ €(+ëÔ‰ÂDÌuuuûöí[¼xqö³ËÒŸÖMêùpf‚…žUŽ?jYÒ-Ì4‰ÖeíÞùg?ÁªÚÁ6³N•Ÿì˜‡v5ªf¶ûšãÝ0ç¶mí:»Ä•„ € N õÀ¬•ÂÜù×ØØØÐÐP]]›<—99Båv € €”³@FÏcN?@.Ÿ°åókÍØwÞê®Õß6RÍf•{¹þc¤¯ÜUâѯ®}TmœúÐvê[t ž  € €S.`Í9Ï1Ï»aiÃÏþþó÷ìÖ}ñžÿ÷ôùë/ºâ»ßõ ‡ÍW¦¨wtç9ÖBÕãèFŠjSìÊs,Ž € P¾sš¾/x×ù' ÿól¥öüò'¯|äô2‹ü‡ëÿéý/>ü겫e÷Ëßó‰ïÚ³5̽·ý¿b ®üÎú NQíÏüâo[»Îòfý?tþ'U%ÓßêÍw^5ÇÖ“¤®îWþÍcé?ÿ·+¾b¬ÿ§ÿsžaœ·þ‹ËÔ×ÿ2œÍÍ»¡û†e'©þH[·ÿÀÖ1V@@B!à1§Ÿ ~åÕ=I…döxΩó£Q5ëµâöçTë_<µÿîËW¼”Ü“x…WýÃúÜðô×TsjQÕ>üoX­/¾cóûoXðµÛV²òâíºŒ«¹/^öÛ»ü¯Ÿ±zÆ  € €@ÈRDÌ)G*áñI'ž5†l¥¢Ñ}{ÿG¢NÙ´ï_zF­<µëg«ß/Ïf­v鬌øŠ«˜ñöS9ç­_¿LWûó]ѨÇÝ„V=ÆBwy³õ;е~âÞ§_rõ$^àù‡øùÎ7¢ÏÛºwñÊÇW«Ùq©g¯£Ãîæž~õåÕÿç>ö»ëî÷è§?@@ÊZÀ7bN3ªÝ¿Øþ»5^l<üT¼àÂsÞ3÷Õb“µiŽN¹{¸{ùýæ,o†‹£üâ 3‹Í;}nrñ…WÝ·Úè^.ÓÌóÖ|í¯ªœÝ»nùÃg­üëÇ{çüìÞÛoµ4¼Žd € €@9 ø¾óOݤ—jyñ[ÿ>|Þê•WÆÊüáw\í¢_•·ŸXÇZë)V¤°Þûü+{Æ®<%UËöÊ=Ë{¶n5¡VæœÙÄ‚sΟ;üOš­é£æŸxÊï^ÝÛ…U¡gsÑèÐ?vßÔÿÚ¼SSvÛl„%rüŒ>#€ €@rc–¡?õ—ßöÀ&ÃOï¹íº̰>së­'Ý·áÏ·µš•>û½Ë6¦Nv—Ï䤼öâÉ×l{àÝí¤ùì§žø×?ùóo>pñ»áŸþNWõÌŸýpç†;þÔ쌳{?ûƒm7èŽá®kIÌÈŸ2 € €@™ DV¯^}÷Ýc´`£ IDATwÛ_Ÿ-³€·ß~ûö•Æ¥åKÿüþ½ŸëþVHÂÈSÂcúÜ_ÜêÝ¥çŸUÂ=¥k €@¨žøÉsü[7Tg”Áø ÜvÛmëׯwÆkÖ¬ñck¼l…~€þ{@@²ð˜õS-²¨ª\ŠªPÙ̦-—ÓO@@b øFÌÅìT°m|æš`[ v@@ øFÌLÁ†è,3@@ÜRDÌd-äÎÊ‘ € €¡ð}shFÈ@@@ÈG€9æ|ô8@@ ü¾óþõoÃ?zFXVò@вê/E@•’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@B"@Ä’É0@@ b–j@@ÊR j.ö®×”å8è4 € €A ؃f昃”¦n@@ò b.ÿsÈ@@ $àÈÇе1H—j@@B!àÎc&bʼne € €°ÇÍDÌ¥¥2@@2°'fèu"æ2?¥t@@ ÐŽlæXÄì™ã\覩@@’°’1ìáqbŽ™ ¹¤ÏC@˜*[áqRVAóTÚA@(iï9fÝe‚æ’>ut@@ `+Nšc–/ÊËS= € €@ÙXá±’“ò˜‰›Ëæ4ÒQ@@ìñ°µÎÓå¦J@@²в=tv>]Žiæ²=¹t@@ Ž” ©QEÌŽ8š ¹ÒT € P¶Žx8iŽÙ ¨Ëvtt@@Üt<숊kt}V‰Dro#@@(s Œ%$¶ga8ßùGJF™Ÿbº € ¯€=\–º<²2šó5æx@@²°Âe+*vÎ1—íÐè8 € €ù H”l-R—šÏʰ6åÛÇ#€ € PÎÖ4³D"+ñ£œÇHß@@ÈQÀ'²2¤J÷îÛá0@@ÊVÀwŽYHï.ÛÑÑq@@rÐIÌr¼=*æÎ¿ÜA9@@ ÄVМˆ˜ywIˆÏ7CC@ÈA@ÍÌ1ç@Ç! € €a°r3ô cO—³²›»Ã,ÁØ@@p X™Yöìf×l@@@ B’ž.§ Hh®Ðka#€ €$?%C{x<(@@*\Àûér…<æ ¿8> € €€ØÓ.<²20B@@K 1sÛ× € €žIÏc&nö4b# € €@% 8³2š+ùj`ì € €ngÄì.Á@@*Y€ˆ¹’Ï>cG@H/@Ĝވ € €•,@Ä\ÉgŸ±#€ €¤ bNoD @@J b®ä³ÏØ@@Ò 1§7¢ € €@% 1WòÙgì € €éˆ˜ÓQ@@ ’ˆ˜+ùì3v@@ôDÌé( € PÉDÌ•|ö; € €@z"æôF”@@¨d"æJ>ûŒ@@ ½sz#J € €T²s%Ÿ}ÆŽ € ^€ˆ9½%@@*Y€ˆ¹’Ï>cG@H/@Ĝވ € €"‰DÜ#%bv›°@@„@,böŒ¦qB@@ ÒÜqEàÞWi:Œ@@Ðq4ÕdepU € € à!`M(1{è° @@K€ˆ™‹@@TDÌ©t؇ € €3× € €©ˆ˜Sé°@@"f®@@îg.1s} € € $ A³=n&bæú@@@ •s*ö!€ € @ÄÌ5€ € €€‡€•›AÄì¡Ã&@@,"f.@@R 1§Òa € €DÌ\ € €¤ bN¥Ã>@@ˆ˜¹@@H%@ÄœJ‡} € €1s € € J€ˆ9•û@@ bæ@@@ •s*ö!€ € @ÄÌ5€ € €@*"æT:ìC@¨(ˆ¹8†LÄ\Q׃E@H/àškÒA @@*LÀ43Ç\a'Ÿá"€ €d)@Äœ%Å@@*L€ˆ¹ÂN8ÃE@ÈR€ˆ9K0Š#€ €T˜€Š˜ÝOШ0†‹ € €€¯s̾4ì@@@@b³ç³šB@@¤ç1“žÁ € €€C€¬ . @@R 1§Òa € €‰$Ÿ‡·>dí’ÙhÙ²¡ëž[;oõº«±¯»æŠû|Tot‡àqBÒ RBX]ÄŠ€u±L6ë<žž½EŠÉœ±l”icI–¯zÝš6¶²;¤€…­Êí½Úä@Ù"Ù):è(æ®?űìB@JV 0³ O‚àîÿ{û8­édûÆ[×uÉ×?ºàòó=^b­KH­£j še‚Yâé~½[ŠÝõí‡JÖn :1œ“2ǬەàUG¨ú«5lUÈW='½téRk]‚`UKP+ÃOïÚµKöZ•Û+É-˳þ)£ @»€û÷> ƒ@ìyÌ6Ùï*’èVæ­[%ü•¨Wf‹¥ª¬2+ô!9t œ‡$Ì:x•`ÔÅʉzõÌê鎓.sÌy[YR­ÄйEÌútäyQ…óœ2*@`*œ/SÙ6m!ijNBÍgd2¬s-¤’÷þ¦ñgËŠ„ÎÿڙIµóæŸ.ÅìÉä1»Ýºººdbر]B[P¡c\÷Qî-:vä%¯[·NçoèòÒ4ç>6“-žõgr e@@â ¸£â¤¬ }g˜»P†–wÍ_Þ¢ ë¼ É¯Ø°¶S‡Î™T"IÌ’Ó¬oþs<æ9“Ã+¡Œ$cHÚ±u¦$¢•ØTÏ ËFy’†g.²§Œä%KN³®Jß/(õØ+—u¿ÄeÎ!ÇúÝ (-ºë÷ì@@HzKv}u$Q\½üòÑõ¸Sí…=×%ævT¨#ï:’ÇO8‰kÝÙî'%ÛËx®K¨í®Ç³ré€g VǬ½öbžõ;Ãw@@¼~Ú •#J|#æP¢0(@@Jpä\ìY•lÊØ@@B,@Ä\â'×#+£Ä{L÷@JI€ß#¥t6èKÙ 1—ô©›œŒœ,é.Ò9@Rß QC½‚Šò 9OÀ`õõƒ‘*#ç§—Û9jG(m¹ûõ7FK»ôò b.éó´ÿÀ¨|Jº‹t@»@,+ƒY̰ŸhƇ € £yÌ9Âq € €@…$²2dšÙý>‹ Q`˜ € ¿Ý»çù¡gØôè‘J©®®©«?þ´ï<}aS%Œ—1æ,”ÇLnFÎŽxxüàø›¯E'T?Õ"€„X RUU{ÜñÓ­ÏpŒ.¿üë_^ÝÇæÏŸ_!!̾úê«[¶lÙ=txá¢æ ¡(VÜùWÒ'ý´¹sμàœÚÚi%ÝK:‡ P’‡y~÷‹/¿~(ÃÞÉìò'>þgsçÎ=xð`†‡„ Ø¬Y³>úÑþ߯t1‡àljÖ_ŒVþs¡ló­çHݬKß³(ßZ8@¸€L·¼ÓüX‹ü®IÁ#É2»\Qá²h:t¨¾¾~l´‚þHHq °Ë!`…ÎDÌ¥rmüðñŸ¹»Ò8ÿ„ùóNtog  €™ì}éÕὯeRRÊHî275ehE±ÊÐA3Ïʨœ3ÎH@H#P™Ï¨ÌQ§¹Ø,À3W €$¹p ä;Ç|Ù{½´÷w½ùl‘ ƒ¨6Ÿ.íØˆwËK–,‘ÿF ‹¬ØKXÙ6Þ‡±@ Ò|~ø1H¸œÛr¼myì±Çr«¤ˆGù°-oÄ\@G+Jž7ÿômÛ‡äg+/Ûªœÿª‘°xݺuú_+›7oîïï·F×ÞÞnÿZ¶£¦ã €…pþI[ona«T»cÇŽ×^{M~Ê£'r«¤XG¥5¡%1s22X±bE___kk«.ÜÐÐ`­Ë–[n¹E*™I=”A@À-sÌ*UécÏ8ã Yß½{wÎUå@7[° >bÖ92a,ŸŸ>ýC«±¯¿Ú¾±ëK·é¯²"ed]~^wÍÖWìáY›~¨÷;úpY‘¥!©?„§6yj@&˜ì!²²Ì+ëô  ¥X) €€Kà3ŸùŒNÒ³~Ê–¤RYO1»ÚÈrömÛ>ö±-X°@Ž;ñÄo¾ùfù)ë{ö쑽HÙ"»ôŠ.)t1Ù.+—]v™½°ýð,{Dq²°þi²Vø;ÿ$êÝÐuÏ]ð veý¾•ü g/ù`Û]ß~Èj»óswÈGý#ñžE×®ü¤¤aÈŠ.lïŸgmRà…_ï–C$P¾µó†«—";‰r.ÝÒÒ’ºû’°±uëÖŽŽŽÔÅØ‹ ùO‹û÷ï¿÷Þ{õXV¯^-[ò×Ñ£GÇÆÆr«á¼óÎÓîݻתDBgýUöÞwß}—\rɯýë÷¿ÿý?úÑ>øÁþÛ¿ýÛ{ßûÞ'Ÿ|òœsÎùþ÷¿ÿÉO~R~Ê!ò_S-Z$¿Ît…R›.‡È¶þÆ7¾!%së¤çQuuužÛÙˆ€%PàˆYO K¸, H |ÕÒ«_ÜûYþÕN{¸,[t°›úLxÖ¦ó›%È–cuCRLVôzê ËnoÄpNȳ{2ëlM<ËÊÚµk‰˜ÝJlAÂ' ·ÛuuuíÚµëÇ?þ±„˜6l-öaº¤Fˆy||\âlÝ´žs'=;/£öÜÎF,Âged‚+1®Ì Ë$±|ßyv&‡Th™ä€Y’.dŽ9í½}ÍÍÍiËT¨'ÃFB' ó£ÿò/ÿrÑEÉŒ¬ÎH¢sâ%ÍøsÎ!–zõ±§Ÿ~úÙgŸ-1®|µ6º×e—””í2åü«_ýêø€^—Ÿ²]–ááa)#¿ø~ðƒèÃe‹^äÙRØ% »+R@§gè¡8bÖÀ:}YÂ⇷>$S¿²QÂbp¬[•‰g(K™~ö; žµym³k´’tÑÖÖfÄ’²,ëV³.Îý.66 €a˜;wîSO=uæ™gæ?H C'sZ¤i}¬DÀ;wî<í´Ó¤k£|•ué¤l”âËܳ¬Ëo4ù¢òS¯Kz‰^×]¸îºëä7ÚóÏ?¯ïéé±w­±±Qª’-î{±LÖuDž¿5„X Y’j¬Öüå-’R,¹ÈÖY×»$%CÒ”ïþÆFùª³œïÛt§l‘¸Ùšc–9P~êüf} gm!>i‡&Iò¶üÛA—”)gyŽcFÙºÿOVÒVH@,=q›ÈWÄâGyDb\†ZÊÆ+¯¼R×,ëzïÅ_¼qãÆ¯~õ«òU¯ë]’²|à 7èÂ2-{õáRX6þéŸþéw¨[¡¬ÊÝ+Y Aw&«C(bkjÙ~aDä.»îº+iS$"‰°heˆ-ÊehgñöSOJÊH˰çC ‘Íœ!Å@° ¼øÊþç~ýû G÷ý¾û _øÂK/½”aùЛ7ož üC]š1œžúþý_üâ­¿Á¤  o¼ñÆÌ1çÜ' NÀ~/`p­P3 €@ÈìBȆ–b8Ì1§Àa— bæJ@@˜€Îú­4u¥ ™ñ¦©e)cý5EÄœV¬¸²¼É¹¸¥u@’Èâ÷ˆ„;Và„k¹ä®ÓRí•ÓLÄ\ª§Èì—ü‹ëèäduUiRÒc¦s €ß QC=â-Ãefý /¼ðB}}ý[o½•á!!(vÌ1ÇìÛ·¯vúŒŒ…!'@Äœmj~È;3² IDATõõƒ‘*•r^€º¨@ Âdêôõ7F3ôü‹äzW]u•<®.ó£Ê½ä믿þÃþð´…Må>ú_(G>†®–ˆ¹P¼Ô³ÿÀ¨|©šJ@H8£áìÉ£Gïÿî?MÊñµå(*³Ë.Ÿuö’rì<}HÀ41DMµ €”ŸÀÂEÍò)¿~Óc°ÿG~d¦J@@r°îùÓƒ`޹œO&}G@LÀšfV³|á¹*QçUñØ›¯NŒÈ« F¨`iµÇ[_A·ñUð©fè… ¹šSP×äá·–œÛày¼äxèù¶GŸü¡g6"n|³2~úôoí¼AmÛ>ä‡uÙ{Ý÷à£óæŸîW@oiï ×]sE&%S×¼òÊ׿þu=Fy‘é_ýÕ_p¼¿üå/7oÞ¬+¼ì²Ë.½ôR½®·ëæ>ûÙÏÞ|óÍ't’Þ¥û£·Ø‹°WT… 0e¯íO<£)QÔzë­#/½òæY N˜]ï{'úSý¼ñúkÒÉY³O¸¸õÚ©éí¿oþæÅ­Ë¥­§ú{eeÖì9SÓ®»•—ÿçù?~4ˆ±ë1¦Ú¯ï+:‚›%L[òÊÊWÂe(˺DÏt÷ߦ©É¬xZBêawêJ*d¯=<•!÷ööpà:Þµ¢á¿û»¿“ÊuÐ,aôŠ+Þõ®w¹›“ÐùË_þ²Þž¢˜û@¶ €”¦À Ç×Û;¶û…œxñ•7=#f«-¹ðŠSN;SŽ’¯>êõ¬F—ahè®S¢É?Yq“{{&[rnÔQ¹„Ë–@&íªŒÕÿ| Õ™pד×;ÿ^Üû›Æwž­$ØÍ-\·oÁG÷ÀHäjÍï._®þ¶.Ôòä“OÚ+¿öÚk·mÛfUþö·¿=“†2,–IU”A(ºÀ˯¼±ïÀØ13¦t‚÷ó3O?f%tË!\.ú0óï@ݬ¢ÍpçßyjH+׳„È2ÇüPïw®^þ «%Y¡¿nèºÇFÛÓ3ôº¤aHaùyÕÒ«;?w‡UÀ³Ù»æ/o¹ûåY±·+[<÷v}鶇·>${uýº˜tL'“ÈÊÞö8*´7-sÞ2w~ߦ;ïú¶ª¤¸‹L0ÿîw¿óœè•Éæ_üB=tóœsÎÑa´äNHø«S,då÷¿ÿ½­\ {v‡L»+—¸\Ò0¬b’ bÏÓ°Sè< +bsÔ_\:ZGÈA@Ò—ÿÚ[ràÜ·ÍœYWë®Af”%Ã3D–éÏy§7¼ôˆLëyh}¸žøÏÇd—l‘2-ï½\ ˺äè¯îòVÓÖ®Eçœgm´¦ZS7j6Ë‘(_&†ýµþ°*”Œ‹³ÎnÑ#•IôçvXÉ'Vç¥Kg½ÄÞyw=öép{g¤fÏÝc”-z¼Âeï¿…àYì•î ýâgrˆî§U3+™ä1KPÞxýÕqZÁ±Ä¾z=äd©Á3ËÙ¯ž~½[G±ò:"fé{¯Dáò‘]Òʵ+?©s©%¶*‘ÈÛQ¡•K-±²ü=0ÿô™PNM auCO<ñ„Ž€u…DÉV |É%—èIh™3–PXçZH°k­ëD m­äc©íì³Ï¶*·EBm9Б»ì9XG1GýVJ´ç±lD(É]?|àÍñ·pÜèèáß¿vPR™çÍ%/öì¡„’žÛeãÌúãu€h¥Øš±æ +%J–”‘H®ñZ¤˜ðÉFwy« Ù¥ÃP©Ç³ÝJ„zÊi ­H÷OVœéhT׬#΋[çèìa]¡ôüå½{bóÞ==[­»;Ÿ¢ë(©pfý{η54G<‡)íº‰õ¼y`¿¢S®åøUËvO|#f©T&_up,ò©óß![ô¼²Ä¦2­+™ioøs÷L*ô«G¢^k—sTîÞk¿7ÑjèÖu]V%ï¹ð{…ºŒžù–u‚Ä奓p"s̺‡€Ê"¬þj¿cϦ¤UȺž“–€ØZ—Ù_]ƺƒPf¦e‹U¹Uƒ¬ä–e¡›pÔo¯–u@ÒøxÏÿì{é•7æ4ëÈÑIõ‹à„ãŽ1mbâ°g‡õ ž»N>U=‡Nâ6ù©'DeEf‘å§ŽÛ<ò,¯KÊ. ÐuØ*1Ÿž1uTâר+]õ»+Q7ªk–@Y:yð iK%Zè e—ÌIë(ÿÍûN1Ã}÷’¶ëÉâxé…G%×ÁkŠÝ­¤Ø’¢ùËD4Çø¨)II Hç®DÌR¥„­2Sûã<®Vg#Åû.!µuo¢Ì…gÞ‘Ò¼QÏK0jå1ëÉɾзßéÛõ2©uÇž./sÌy[Y:OÃÑV†5ëbŽú³:– €E¨ŠTͪ›þÒ+†ͺ æ«ÐÊó•(uI›É­~öl ×$úŒO??à9L{yÏ™lt4šÉ!)ÊH2ƒžØ–‰êÅ2Ü¥ïÕ“ ež[æ¤IƒÎЭXÅòºóO¦oõd°ôþÉÇûN?c¡žñ•í²EvI±cvVî”YgÙ«Ëø ;m=~:¶[÷&Jg†µ3“£tÓ’Œa–®fmgÒJÎe$¹Âš¸µ*‘Ä P¡cÜL*×q°$cØ K:‡õh9Ù®3’3©Í]Ƴ~w1¶ €”š€DƧž\?ÿäØã2NŸ7{fÝtédUUij«’Ÿ á¯Íz¯DÃÖºÞ¢ç2íIæô­ÊåÐó¾ŽjÝå­²Kæ‰uý~Y~êàÞï(ݨ®Yz%9Öîäl™l~ùvËGÏ:{jdRý@™`–@üÍ7ö§=PÄÄMŽuðzꥈgÏÙ˜Z ¯9f‰†%9X7 ³d]ž¦l¥4Ⱥ£ùëV}Jßr'å­]²nÝùgmL]OêQY{¥‡’²,”HÝz¬GÚcuÓúv@éÛ…}0í!SV@21$MÂJÆZbSY$eY6JÜ왋ìÙ=Ib–˜X'CëûevYî´*÷{œœÔfEí~÷JwýžÝ`# €@I Hd<:6>ÿ”™ãG>ú¶ã=|øˆlôœc–žKd))¿fÒ…ú¥ïùLbyX²ÐIúÞ>¹sNæV¥°•-Û¥ŒÞë.oÅïØ{Ô~çŸ' »IÉFu7tª±»Q= ý˜gGµÔJæ±9ÆTù ºÝõèjíy)z.<õú/©V§µèJìý·z›ºO+6¦ˆ¬^½ú[ßú–£Üç?ÿù‹?´2íÁZ@^Xzéûß[S“×6Aw’ú@JSàÈ‘#Oüè?3©µüÒñ{çŸ5@yç_æ–&K>½’G|œ2{ú9Ÿ:9¶¤žúþýëׯ·ÿ}(OŒY³f ¡XI&:ƒ €@1x v }ÉÖHqÏ_ŠÙ"æœD†€ €@*yò8-Ÿ~v²g¶FÚc)"æœD†€ €€S@þS²sßóð{,]Urh9 1—ôÙª®®Ÿ˜˜QÒ}¤s €%* ¿Aün×+ÑÓ-JU€ˆ¹Tόٯúãß¶ý§“Ì”ôY¢s €@‰ H¸|üño;Z¢½£[”“sIŸ­£‘cgžXBïè.i,:‡ à \v‘°\òzƒI. r  € €e%@Ä\V§‹Î"€ €L¹YSNNƒ €”¤À/~òp&ý:çü«2)FÂ$@Ħ³ÉX@ÈK`õ'?™úø{ÿþïS`/¡ båieP €ä(ðØSÿ©ŒDŒªªªšêªššjùL«®þÃwŸãWi×—n“]Ÿ»Ã³ÀeïYt߃Λº}¯çFÏÃ+j#,¥yºÉc.ÍóB¯@(šÀüSO•Ïi§ÎÇi§ŸñŽ3œ±àÌ §ÕøÎ²½´÷…ÝÏÉGVòé´‹yÖOëÁÖq'V‚51—àI¡K €Y *©©©™6M}jå§|ñ˜·ÿøÉK>Ø&Y)r¿i`ˆ˜ƒq¥V@ÊS@%c¸Âe‰›%jöГ÷½çÂKä#+V™-–¹Uù<ÔûÔõ^))+×]s…Nð°—í?}ú‡Ž¦o¼þj]¹ÞåYØ>³k­ËŠÔ¯Û’:SÔãlŠÂVõxußôÀu[Ö¸ìðì¶»]¶”‚€ïÕ_ £ € 0Å*w9yvYÏ4O›6ͳ':ÂÊQ–¯z]bÄ ]÷üѰGÌžuµÛ¶I4i¥;[%¥BY·§AKxºðÌEw}û!«?) »û|ú ¥-Ù.°Ì‹;êÑ IÒí«—Â:ܳ° £‡/üz·Ô/5ÜÚyƒÔà—Thu «n»–©`Žy*µi @R[ýìɱpYÝüç=˦S2ô¨$}à~õ0 "ßy¶„˲nÅž=9t®—øûª¥W¿¸÷7VIɯ~xëCV žº°»~™ ×=þÕN{L¬ë‘(Vw v%𵎕]ž…={xíJõ¼½K×éèƒÕ«˜{Œîn³¥¸ÞWqûDë € P,õXŒxî².Ëijßwc£tUÿÔ}ö{bF¡F$ñ¥LÜJÄ,¡­ÌòJ]¨š¥=ý\À ©*Ì1‡ã<2 @ # ³¾ÕÏ.KÕžyÌ’{ sÉeZù*%¨•IYÝkM{nôì´Îë°r”eFYOÙÚ Ëô𚿼eï {ü KOôÌ´•dl?\Ž’öŒ]}‹UÞ¯pêzÍ^§¬çSCêúÙ[Xæ˜ ëIm €”·€.û.Ïn{v•Eˆ¬^½ú[ßú–£Ÿÿüç/þÐÊ¢wŽ € €À” È[²3yçoÉž²3BCS/ðÔ÷ï_¿~}D_¢Ñèš5k<þ^œúÎÑ" €”‚/Á.…³@JP€ˆ¹O ]B@ L&ËD€;ÿÊäDÑM@@" 1 žf@@ÊD@EÌöìæ2é6ÝD@@`ŠbyÌVÐ,÷NQË4ƒ € €@9•Qg‰>"€ €O€ˆ¹xö´Œ € PΧˑÓ\g>"€ €LsÌSgMK € €å(@Ä\Žg>#€ €L€3+ÃjùÏoꜜ®þ„£GË ë8p p p p p p p p „í˜uÂäÑÑHuÓ·_rÉ%Ž'a|ÿûß÷cþ×'†ŒÉÉ£“Gª"Õ:žžŒe](pàzàààààààÕ5 “ÄF$jD¯þàxÎ1ûÞù'Qv¤ºfÖœ¹òSXÇk€k€k€k€k€k€k€k „×@• wg’#íÂúê;ǼåÉç$!C¿2;Ty*äd›'ŸsªÿÀ®®®®®®¹ªäž½ˆñá‹<ç˜}Ÿ•Q7ûío½ñZÄ$¬;^­kMÖqààààà਄kà´3Ìš3«fÆ1út‡ãç‘ñ±·Þxë7#{<¯áºš·Î˜[Wwì´*–ÿ˜'£Æè¡èÞWÞÜûû·d4™\·žƒöcþÞž—ø«K«á€×××××@E]sç½½ù¼?üä²Kß¹à4y‚gU~£Ñ_yõ;[žxúéÿ³g¯ãIh'Í™qå…M×^{íüùóCóhyÒÅ«¯¾ºeË–ì§/¼2šö^vI£ç³o³®±nöÛ¬«uL¸¸¸¸¸¸*ä8ñ”“W-»tÁióŒzý­ñp|d,'Ì™½æ£WÎ>éíîó(³ËýèGçÎ{ðàÁ7òÈXfÍš%ã:ã”ú¬bZ«°^ñcÞòä0Ï`#fô…‚\\\\u 4¿÷¼û¿|³„˜úž.GüTÖ_ç7ãÏ>óµÁÿü™#ι¬åä¯uwIˆYÖ£óìüÌ™3;::ÛñÛ´×ð‡/:3»9f÷_ºlÇk€k€k€k€k€k ®ÉL,Øhø>¶ Ò~%wY†¬^]ºÅq&×­gÌí;ÇLsÚ¿B”2úªÂ®®®®]ï~ßùßýò_ï{kÜ3~*ë2Çü±Ï~íçÿñG6ÁåKNîêê’tŒ²gçe޹³³Sæ˜Óþsš}³üGˆ¨¡"qs…u¸¸¸¸¸¸*è0ßÉh4|gâã™ádèæ—Õ€bat&1­gÄm¾sÌ*9»/P®ÖÍkýÏ8p p p p „üh¾ð¼üòͯ lŽù±ç~ä>ž5o|ô/Î4×í¨¿£ñ¿þcÍBYþ¿ð®-¿»ó ]¬P?O¨›ññÏ~}ðÇf³-¶¹ü¼“¿úÕ¯¾ñÆy4´û®K—Üö¬YÁ¹wìxâF5Ž‚-ÿ圿]”S¥róß§?ýéÇ~öÛ´±Ü‡/&Ùã³<Ý~\_!µ©gï_àô{Ž!ë8p`NNÎW¥õyûà½Ã<™jb^Óxfªoè°‰ÀÀp°®¸Ýÿ´^±àÇåþñLE'Ï®Öö;‡ÒX®+ÊÙÛ ~z$sK…C{|R^¼²Tíªº\®Ë¡}ZÚÚO©Ðµ=¸œ^»HU²ÒÞÖB­.åÖWžïÑŸ5[)+/¿|¹üÀÞS³—>2¸ÃAyy™rÊ‘á3õú&CæAw#!åežŸ±Ñ±ÇÌ¥T}ÓóÞ£?“$`%쾃à8€à€ý8@ç˜7å/©jh˦µÏ}|ÿÝç²ò&ùýUož—Y±ðÜ›÷(‡V[7ìÈ—s«³Ç<¡lðH"ÿItÝÓ½ç˜;& =æÂÂÂúúú†¬Þ6crÕ²Ê5;[wˆ©µ\yãÓÇ“‹WŽØò5HÓßV4Ö:þDÃàbLHHÈÍÍ¥=fffPßâ3vÍ}ÜÂ.8pÀc¸ÛÝ.·?É-{øó'²¿õ9ÿÚ‘™ß¾â™»<—žgA¸©‘±~÷вe÷oª¶ Ê‹¦^7w*%iô>I.µkÁˆGýÖέ[©íüùtê°$’9qšžâé¥cÔ¬ÑÑNš45u׆­ÎŽ¡“’oQ:K:$å%–غ¹«0õ©-ÝcÆ9f†”Á·ì(DÀ<Àp°%èóƼÅÖì1{)óÍóãæogä™þþ¯+'±æá5)ën>tðádÏåñWg—¿º{ïÂD֡ߴǼdu‘î9f‡ÃQWWú85̾ïµÓÌ>õ僻»Iñ‹RgÎT*R^'QIîÈwR¼}Š¢j/Üãµ¹åLa†ÂMý"E0 .Æ!C†¬Zµ*2ç˜U#›©¾¡Ã@ÀÀp°\íí´ékÕOÆëÇ+ëÙON%3§òÀœ$ßå¸5õÇ÷<•ñ„ W‘·4ƒAmÜê('ÎÛYæÿ윗èÑð‹v:;™(ÝQæës»UmŸ­#Ýë[ôæ‰Ê:ƒ‹ÌóSU³Ké3Î1Ûò3Í:òbÔÀÀpÀ€tŽù­•‹ª~ûS·~êÑ”¯nÍfÝsÌùùùaí1G+.´Ç\PP€sÌúgqhÖðŸQ8pÀp XXµ»ñ=ãàÊj$ãmÚÝ+ófîQŸÚÒ=f:ǬøÿJϼÑ&´€£pà8€vç@Zú¸×^šî÷Ð^€§*·¢ë’ö˜_XûîÞç1‹µÍä;Ó%B}VFt娊†ö˜é1 _Ò³2ñvFÀç1«\›©¾¡Ã@ÀÀp°ÚZþ«8{~À5ñtrÃNŸþWÇýváz ˆv¾þmUjjjúõëg§|)—¾}û655µ^‘>!„ ï_UIÌ. ö˜=Ïcö¾Ò÷¬>´ý†pà8€¶åÀÐä!·¦Ý6ó¾ô¡ƒù ;üÛÐØt°øÄw'¾w–;U5^Ò þYãGN™2…Þg‡Tý9477—””ì?\Zyþ’_&å­ìyÌW#B÷ßÍLmà€à8€½„¿T×ÇÄÆÖ74Æôéc\,õ¬Þv—ëRScuevÏ7üsô»òšÚº¸>|·´g%§mk›»®ñß_ÿŠçÝÚÜù}­ï"À9f™ä@ €@ÀvÈö˜ce™RõÍ»ÐfPà€à8€à€½9 [œc®Ô5€ €@Ø ÷˜ øÀpÀpzTß°ÇlË/HH  €@ h‚Þcîmß$/ãpà8€à8Л9 [eëì1“Þ¾}ûJKKu @ €¶D`ìØ±Ó§OS£w ,Z´Hÿy̤:mÚ´h‚"Žª¢*ž.¦‹‡ëúyᯅ—­Ò1¾”»AA @‹ìöìÊuÉŠ±´>3•õr4µƒº÷©r<nZxIÂ!Å‚oc‚h§ž%멘é=('NT%/30ƒ‘½ïR1»®ÌÔäX‘U§[åÙä@f¬ŽuC›Y¹kðß•(aAšqlúÐ=Ù-ÌîY/ËÚàoïÒzÐJÂÇ04ŸÆVª^ƒd)~Rfú25ã±ÂG |VG¨õpM&nÅ•™ÉMt‹1Èf*|$áÁR¨N&ÿ±YYYÛ·oìHÄ +ha‘ÛÈæn7“é[¼uI…æÙºUË«çÏ‘ÿ¿lð¶(¡øÙ¥ê·ÖŠeÊå¡%+ `d·°ùDæA†[?u­t…2?&å|¹0©ÏÕTqÄ8xæ-غR¿ë#TAÊfJŠsÇå¼Á6Vcœ¾®„c…ƒÕÉiii± /¬|ÇÖÖ¢;Á"·Úøe’î @µžÊ‚´½Ü:d (‘­€ªe” E[q­Äºi{B"Áž‚ÝÈÚP-ZO¹ñyœÚI¿±¤{ÿfÇÆz-Ÿœ›ÏáÌãáakW{’p·ª^²ÒNºƒ8\zûYIDATŠd  ° 9555699yôèÑEEEVÍѪE1ð;Üü iQ$Z·|©ÕvqIa«5Õ¥ÁXvêâØê.£”)“óß|}õµKª B.@À ²%ˆÝ—ñÓÐ\4 ù~ä£ðe»ÕJÄ.YîÚDÌHÈBNÄÌ(=ZG¸y¸Ø<Š«7Ãyкå½.¦I—¢2öhT{IðTS…|x|||LCCC[[ÛÅ‹kkk±Ó=³…H€@ º:»˜Äã;¯ù>¥b$F¾`àЉ=ÁŽ‰È¦ˆ”8åªñsÕ`À éq—îáðÈ-þ¤v!´HI Q¹’…LøOh d˜˜E@ÆÈÆ‚¸Såñ?ˆ¬©Ì? `Ýܼ‘ 5åd$ˆ°OÂh›hI¤OˆÂII8å1>(ó¦…w8},`/p ÉQ™3¯¯l¤ž¢ª PLöæPJ*FCE€7ã‹,Ýfb2a{žFm [9¸/G x”Q{h'Î>yÁÅ2¸rXU{oôZµ¡ñ\¶4b¡Z•— Ý“kŹ¢«pÎ"³µK&°S¤%¯§ÒÜβܤðÖ`8˜’Ëc¯QNycÙŠ+騦z‡~*Q¦¨bz2Ü¥¹‘¯[ì‰(¥+Ù!Ñ…âf£ÉŒØ¡KÁ0l0š &°‚‡¡ñ/ôè)à›ÀxÐMÓ;:S°8!cx8øà. bçú*´`x‘«§¸¾Dö&ò “8*ž”º«Ò_½m6Cãð °%Ëh×\7©æB@‰ œ'ÉÆIZÉPS•…ÎMNÃÞ$:³9Й£KE¿ g.p„ƒµ&#^a$©Æ¤Er»äŒÁó¢w¦w((kÉkÁk‹]…°Ep"“hݵ#R‘ªXb…Á»,”9/N 「©•å.†<Ð*à’r(“²IŠF/Il¹T‹S1ärÃàå1ƒß¸¡šÌ9Qo¤Gæt;‚a‹ê.+ÏÅ£d"‘ã47Eø¤+0K™Ç– ¥À¦ ½X+…)—ÍÙqŽÐG€©já6RU~B¸[ˆ´I‰ ‰p`ÐŃÂ/¾QUpHLA™Úb³—“!Å`5Z-F«1øI¤àÍLBlF „R Þ³8€J‹¡`ô¤O8ð&œz- ‰ˆÁLäACÈÇ[Cœ  ~íÊ?Pg,t¨®Âì]¦H¡¾XŒš™Nƒ‰çEíáÕ“IV§eè ] Û¹(ÿœ»Òå’U^±dj|,=?¸‰jÛEáC1Õ:KñX¾sQ¯Rž”¯”r&öDM={Nf£Ù>ÈŸ¤3Àý¼9KŒ5±Ýñ&{¼ L„bO#§ˆ™àlåQ/Åm®à°1ò‘ ¤þ†Løý=`Œ)ÈÒQ™™üÎS4M΋q{"ÓÂtÙq¥à’\02æ…ˆË Ïæáš_sç g#-ñá÷Jq[¯¢Û|`Œ®9N  AaØD?ŠŽ”<¬5‰$’ë„5ãAKFඨVT àšÉÓ¢+¦ð€çèãxõeBÂ9òbx çräÅÁ&(ˆ3ðÎÉP4&!s¤—ï èvŠT@.¼Qˆ³æPE3±#†øâ‹ rš­m¸VX}¢#«3®81 ‡0Ý|Œf³É‡R(Ç`ÄÀ“âµ!ÇMˆ«±Q8žPa4D3J´H´M<5A)x'A£@Ãð–⦈àÉ0ñJÓ½$ê‡j jÀÁl6™|€0¤J«ÕÁ"Tš³[c.ü'@ô¥L1˜0†]PGÃüg¡“ä )If+Ô bö@‹Û8¶rËsUåw›Ú%'s!·Q‘È@ðOœ—"“x$…+ ¾h“3žCó»¦T"¦lÄîÀËrX/W[Q^m¼k}ÉÞäC§²Úl×LR–£ç(F½ÖSIÎ$Kòú B)*©Šâ^….mÀÙ¼]”V€,ÞRØL܈¦%Ôzí%¸RÜS:ÈCçä“^f3`3>ÈãÀ-DóKØtÖ$ô¡’ÆÁSP`Ray F‡‡þ ÇÏèê+üƒÓ†‡òØ%щB·Å®‹>ÚB@èlUCµÃå#1 Xy§•O46„õä£':!õµLP*·AÔ†K¥|N§èÊÁ¾èŒ $iî(`¥ˆ. ÃéB “èF)øÂ‘È+KvO¡•âŠ6ò<0Çè)lÓD\;óñKUYöÔs0‹Ç]ª2WÞqzUÆÙD ÿ8Naã.D$ò¯˜Ä;¢­qHq|#@è“À‘Û ¥ÌEöŠãå“%„ó”‰d2^H ±ŒÙÇÇ"/|‚ñxLšK–ÄDDR"‚lA…åŠKÔ†ZZƒîÿÀñsD{cDµxÓШ“9afíCKu£ƒòc0X1Ær½f³™îMÑÎÔŠ`iþ/Ÿ¡ŽkâðˆÇ°‹Q8¦ŸA.ToÊx¦4ˆ»é nDgI4'˜ I¨4˜TÇÀˆ«2ð%ˆ{à kÞåFqJ×KàÍ)w…%Y¤Aا‰I>Ö¥¸¤…'Tȱ£~0é,]ÉÄûk.±Ï‘º|ÈÅÕ;¢"RO·äÒPwl~(ŸÉ•JI>7l%eÁΨc†V<Á{Euªè•S ZýäÍAdظòM:^ÑàJsЕ-Û奸Â^DŠÙ@ÁÔãô8Z¤¨¬Mu³ÉÇ!º”ôfŸô€Íf¸&Ÿ 2!Ö✠yMຠÑ`v –|ÐáhƒÜŽt œ_‡þNžšÃ¹kê¢êF_9ËK…Suídm`Íd²' ÞJ1‚[vz$ã$DO}„4GL‘‚¨è<ÄðU?¹0J&Ôy¸`Ù‰+—!ƒí€=„4®’ ¸Bi¨Æ¬¬ T˜“ÌI>èâQcY¢j2¶¨$¿5!&\5ì4Â(C˜6]á8C"!!›ž µ‚ ¾ˆC7K@ƒkQðºC[ɵ!M8Ž\1àM£Ir£z¦¨Â?Í'Fœ­Ì™'*ïÔ 2y…xÂ61y U8§I^tCt×'›!7J@=9O`7ÈGÓˆ'ea!lª4/OŸ c-”¡Fa¸òñ±-6/µn’Öƒ!£.>I ÀAbØ!Á˜`H þP} TÈjCB IG˜äꄳׇ\*Ga’Â&¿àRÁ”©Žx/)VðJôEãAzìæFºËÄû\Ô—tVA²Ýåð4.€dj©cªbÀvéØ<΄©›-펡’ëLå\ 'ÕàpÎp'À–§–s…Jê@ ˜§œÌ煮Xn ù8•ÁšZ\>’•ª%vàèíeò²¼å˜VôrÇ÷†=H\ëE7GC #L8Ã4Y`Òh!wñe`t–ËNÌšD›PáŸâÏ…ŸuÿŠPjðÅÆ)5 À¬¸<ÿrÇnÜ_ï¤Ð„c, *pÆG½Xp«¶7÷ lÒg“\‘†³7}Y37ºì½Ø‡áÀm(xÅ´-D,x4$‡© ÝXERa(ÊËóþëàð6ƒ¶õYp´m 2à^—ÿ±N§/kOÛ^ýÖòÊmgX¹+´†¼5áž—â(¤Ðˆ 9èÕ“`½¦DŠ$zq-8P|€?8¡ªŸ^Üfc=çláEaÎþp,ð\Þéã¿E ÊŽÕ…ZÝ9ñy¿ ¾n×opDÇÉëú)= çöÉ;ct„[ i8‰Na?àiaªN.üú›°¦¾Lh#:ÄåâöîCWúå|V&… ¬61Pßՠމ4¤¥W̪ÞÃØðßò^ÝgxDÛ këùÁ4 Ž•>È™4¡<ŒÿýþÅ€ f ®š â®OÌÆ&]æ÷ýy]û’tƒ‚S­‰‰ñ0$Äè{þ§N¥±?·ô%t°QeÁ(—L¦¸2ĉ´"ÍõPCl+ £8ŒÆVÔŒò-ˆ¾b£8º¦x Œø]à•m&Z&Nª•îT¡EMf«™b>´-Mqà*„õDºÙA6Ö ÅI) ep ʽ!·Z;ÓWjÀõwvùúª A6ÄQŽ-…·-vÑNàÀ9´h4}ìV˜G£r¥«rs¢?l(<ˆë¡\*à«`§6Un»|@‰ZöÉÐ"ö‚l—d.r¦#•’L$^j«C®“ä¶ú½¦ ˆ˜Ò䯑KcÚr«é4 OÒÉpààxé} GqíV¸ÛÌǪ[".ßfE1˜¿pý]¼ƒ{†1u¹8w(è—~™ñö¾ñÝ¿ê³èT‡RFãí½£·FÖéòšùüÂò­ ËÏ¿_'úÀO¡ó¡ *hYŒN˜®†#xéúþUÖ¾yàóZyA ØÅ1›lX㹿M«Çð÷âR-š,Y{²KI¹KãCà ·ìÌÜžQkrˆ8[IgPmÅzøí8ŽáÉàÈ1pP-ê½ß.<ØpbÍ\¨FÖ '¾„D¸ñI÷FèÉ3¡XcH†,¬:MsR&Q@ ÁŠŒRà¦æqž€CïL’ÈÖ‰C`ƒ7%èÒ‘á…%mæÔ›³l|pvëõC#koi´up…ìèÀÂd±VìÄæ\¿?Æ'0×­K»öVmðAžÀêKiÇ}ö,Š»pÐ ²ÅjKÒ…»r®ŒZÀOú`óÃ3Í"B·ÿøzèŠw¦D4 `ìß?gì¹Z±…¿!zkè6im#BëLAXòËYš}Òùk?÷ç¶  À‡“„ꀄœ  ÿýiâë×ç…eºtæ˜Só!}æ‰KËCŒqŸÓ$šN1¥þ’Oúô>ÔÙÀµÅ˜Ëÿxð-ýÖÖým¸ùaû ÐPsضSÆ|µoÛƒ3 „@8!¨×cãzooüÝÊÙ¹n¨4$§µ^°kqnuµÖlñéVÅ©4wmFú ®IÓ¤…Y’ü›~ßûëûK.ªžß`‚°‹«ÍVè0ð…\87'%ÑŒHFZÚâD7ÈØb!p/1†6YæÉvùTù$\5$Éž"_4RÍ!wyøŠh:Jœb¢&ÅL!u*Èã˜Î±©MšÛL‘ÅE"—À°S„'¹~çF¥¹–Î+\ °Ëq¬‚y²r‘À±\r‘ì¡¶Žd²ùЇ’lj_©}ʾ]TRG~6NY^5¢SiOÐ ŸµÃ3`ÕÊüÏ#ë•ôY²š3¥OxPÀú0sælèC{púÆõqÿþ}†+Y‹fÏ^;›ß«~pŽ> ¦ž161ÓØ]lp×Ò¸!Õ”·î¤®Ü=¡wÆ‚#|R܃[!yøBG]•â:5§(R!ô‚¯Áy½×šE4ûbåõÛ¦WsƒÀš¸ý‡ÐÁ÷ŸPgçð“?äþ}-zL² à{B×EûµÑ@DEE‘?[{áNí<{Ë­½ §RÍ4â Í*ó KõPbƒ!÷%*c  $¸q¿O{‚ЇbäÆ,Œ¿(‹Ü;coäËáׂ`†‚°Ã6´°’eÂØà?£Z/†*ߎڽ/¤Îûy鯉‹F—s¤$KÑ›Cˆ°@Mh.ƒ™Q=\Å_ÏCïÝë‡X‡VÅ E%–+hÀ[¨ ÄÌÇì£2$žr}y"¯;ØÎAR‹¢·åq7 q©¦Ô*2Vpýoô¯‡Â: 2ã~{8bOM­õÕ/M6¼õ{dXÉ’xEQHn+hàtÛ°þØ(ðO-Ï›, mnûÈ`I*üã¾]PèáwE«¨rÈ!¸E"„Ž Q£“-Ëd[r㢡ãÎ ~!Ý©bPç]îLa-&Ÿ<þµªÍ:¹–oA$5P,´.V¾¾“DÝìBJ+gé ™jHq`Œ$hîdò¤›lú‡Ç}ç½PaIBPÖO‰”dfô‡JpGM½’¢*èŒyüƒÁ¥8PãV7ÒR.ÉhôV]Êꂽ)nŽBȪՃε Žäò5w.2µÉöì=(à–!ö ͯɼäS 9Y‡«ÂD'+õ’«I=Žî9¥}¥ÌçïÄŸ¸r7>#»õûéÞ£ÀR¹JŠÍ—#Ï£·cFŸ¿p3ƒ1s¦¯d‰Š]÷O¢)¡DIpýày`­—H©f“Ôî:4pÔ:ùq4`2û>¨å§ yë"áMþ=£à/õ‡É ßw&¬´ôçì×[óÅx¥~›*—cá+·•”}(d‚›ZГã9¸Òóó‹·RŠ|¼úïwK€ï:ýã­¦ ›Fõnù-hõ‘N¯ 7÷\£ß‚¶ñ<:ãd5Å">¦æ£xüz"¤‘ïBç^¬Á·S‚úÚrî 01šnž[µ}È÷_Ÿê¾ÖÓŒ·÷}Tam«ã“Bò2ö÷¥PPfõgÿþYÞÕ•[±>3mR‹)Û¿ ü«wËÖóf­5eïˆ*9À¡F.ê=Ój}¹}Tµ<ÒùÅ »Lâ4ì£uÛCKG.-Ös$¼YßéØ^8c{GŠT%‹•ÿõ9×¶Dcw¢¶¨Ù¬góƒ“;l¬³äÓr9XìêZÄ5cUÃ×|Tìì´Nk-_6‡AºuðëÎëk-œP&ǹÍ-:ÿ( è7qm{\1À!ªÙ,o³²J%ªþpè—¾s‡•ÉÎ´þp }ÜdI‰ß¶íÓßeý@­‹ËßéÏ&¬íP˜bÖT9YW®Q—±×qÉÿö™Ý6Öš^.§ôï±1}Æîâ’«…¯P)žSø`†[qÛwuí8v/ѰòÂ35ÙòZIŸ¦ÃŽëðZiŒ8FãùÅE{èÁµÜŽõÏ¡)ïl,Ñ“-ˆØ |ºÎÜÙÒ°¢uºÞèåŸUÎsûè§·7Û6¢šñ𨺿¾ñ ›>i7”¯÷í㪽Âή y‡ÍÛߢˆáæáÝGì€Ãû?Ì+´ W8pÛ¶ÇÐ㻽oœ¬1€õëþÝ×óB¦.|7¦35Røå·PãŠJo΂‹Ðâß6˜¿|bˆ´÷ƒöm䵦ìZ9»áÖþ¯Ú­+f]8wWèä µ‹Ö/7õ¯kõýó[%¸ÕI˜Ó€©%Ü+ ÿPM0E´Hú’¬ÕâãCу¹|PD£ƒ«¡úN.ÕÅ»~¨pA¬ðVXË}Tþm0v’ã&my¦$xõ`7Ž)´Ò¥2VJ)Aåó<'Mˆ«âœrÝ'€orOZ¹tK¦s(Éò'ö^”v…]±“‰l,ð̆:ªQáÊß´w9¼%9äªf eã²]¼o+tºOýp§‚»¼TQÜüÛWÌYnÜáŸù9KÖ£§Î_¿Z"sü£t'oݾr/§oá,¯Y3|ðÏ&CFsº«±wJ”¢ˆ #Fzö†Ñ˜¯úä}Ó>©Ñ¬ ôKt—×ͦ×{ÿµÙ\º1[×'œ}#¯÷S±þ1£X½É»ßü¡vÑ_vüùª$]ÛÛ/è—6'§ÔÎ4ò´$}a ã; ¯Ÿ^¹¾I»Ñ°D–¯ûùÓÝð.úôü’­fïnòUé¿´š2xõ±N¥¤v«»…á æÜâà~eלÂoìû¨Ê¤Ý¾¬•øq,é“¿d _ÜòKVþ„µ?t¾Ëk%Œ§·õÞ4põ8Ãï4(ÇÊ⬴Ñtzq`ƒß#N«™ º›ÓÀgÌ4ë¶ý§JYOÏþ@ú|sd¥ìVéÆÎ±ÍƒWýðWöþsÖÏû`›úÌÍ}ã»Lê½ðt›@¸8³²Z‹Oý÷ép.B ìÉVoïXB’®^gKÓm#*çÀecœÒÏ,IÅ+tg]ÿŒêP´èͨ_wÔh< 'ÍTR¦»ÇG~|úËï7WÍÆG½·Îƒ0wÄÁ9J4[°ÎÙMÍ;¯9Ñ rTH02†©CΊ£fŽšÐ7¬ëþÝ’7‹X`³5³o¾ÇfìhVÄá9Ó(h'’bº{tÄÈyý?[×±0»yêóf‡Ù$³ñ$úç>c Ãï*—F¸§†¶ÙøížE6üwyOÝÂÀØ”4ýwäûÙõÚ¬ÈÍr™ÚÕù`ÿ….¯ ·öôî9uÄì#]/Q{/+ƒRñmç‚3“¿ß<îΪšû†ü`è?í׆UÕ>Úya}û\T'lYPc÷ôS6þ5RÚ5®YŸÝ]N´,ʴѹ¤ûÈ iÛ&‘Õ™ðÄ‘]·6ÿaTµœCÔ)&Íšaˆ8´¾8Öfóž.xK¹¸Þ»³7ùºýñ †òÍ Ë¢ÚJÒ™¹u?2|¶ù|¥ëõã[Ôùeþ‰YAòö…g&}»fdܽœ§˜ôÛÝû-|³â®j¸s¤†×D˜v† L3¾°ï’`#ÌJã\5„gn¡¥¡(J!+‡¶œ¬“ð*ô*­bç|IJâ[oHyÝÃä’q¨NS‰µ4<Æ\>v§J"íe†\œ2¢¦ªp2U/O+ ¥å¡‰˜²$=îÓ”‚ÉD_¹z¼( 3\fRK8<‰05oI…ŠšN]pÌuä•ܵŽx¹ˆëœäx:æ{ÍÉ뎓»v#ÀœŸîß §ú¾S?_ÖÌV£ÏÉ?Žÿ²çlþû™3š2T(˜ãÕGMÞªs÷έ›þÈ—Í”> 9Ftæ¸Dj2å þ*ê„ñô’WýÏ;5½^A>çC W`MÎÏW}¬¬B+r`ãW‡½A³gÀÒpÆZ‹˜º¡sðªÙ¨ÍgëäÁyË¿¿/Ñt‚Ì©13ÜøkíæÆ3>)…æ–'¤û'†_A/Ùc_€µ(«Œ*YÐ V çªñ¾\:½$¨Õ—Ä¢þ×[?«‘NAG´;n¸%›Õ0xþ¾–“òšÚø‡__5ž¡°ŒUÅg2žÙ?…ý)¤Í“ A·1æ‡Ð’°gõÜ¡±¬ÿúНà.Z){pÇYïcgZ¿=ågã ·Îÿ[(Žêo[½«nDŸâ|¸Tí)g­ûß?Uj’ õG¸K¡j#o˜<Œ³Ã¸:0¨7ëò›9ÿùmwÝz䦰Kz 9*O˜ÏFvû%ïªÖÅq„úb\F„8êo0DÿReh±‡Á1U‹‡øˆƒ+ Ûà_ 9+úi­!zMýÐÉgR%;Q ²r¸EÎ ê½í·*áƒ`,±ÜAoÄöññ6bþø†õœ_.ÞsVo÷x*²e1\ å\ÄÙp놭µZŽÊ õÏõZ“†ÝîyklMÙ_Öמ1²l’2ä©Ôåc¶ë‚¢™¡{hµFCŽòýàjÚÖE†Û~õ¤-7n3>°&Wó S‡VÌ—jXWÚzýF‹"ÜŽŒ¬hèÚ9KZŽ?¸`T5¸1@C ¤èÖNûþØ*¿Åk4œ_]³Ãl®4kŠt,?"Œ7 \_9.ï²\Á>”>8~¦EdÖö~ÕØs…ËÕP‚¦Áñë²¼ñðk6ÀVgf²úàò¯¶PÃ>,“) ̘Q.÷BìÅmVÜîd_‰S9ªŠ6zŸi r€l ¶ˆˆ‰´ Lº¢Î…W8àÅkZ¦(JÙ¤³®‰¥ª\¨Np%ÿË—<ɼ>¨yœ½4g*ÏS´B\óÖæèQQš¾Â¤ŠS§;›Îmu”RˆxCÈMÁÛ²–Ú\Wl]‹w㊗nzòl’§Ðe¬›ø¸¼\”7gbñ a‘÷DuÝ IDAT?–5øš;Æ2eÊ™/ãÿ>ÊS$±VÝÐ_ŒÆŒ |X†"é2D“rèÐѧ‚wBÿ„˹ãë×-Ólíé˜Þ¥‡Î ×w¾W}ì§#ß{Cº¶ùÃ2‹•®F^™Pˆ€4~ÿÅÛ¹Ù¢}ßÖÉ _Já‰×wõo:aè†3°ÝêŸj®à‚wŠšüŠ N­>sÆäAZogïNüþ6>žBv HÓÎôżÈUªU“¿lø‘M¨ßæ(î·ÂêbMIQ>#B® _!—ƒcØ)Þ¾½1˜t|ƒjæ¨úÕì˜Òõª²¯ö~€¥QæòÒðŽ{£!™F@´E…‰‹ôD:^Å"eû±÷Žóûs_Hóž95ÝôÌQyüW±Õ[7dÕ'¬a {,Òã9 ñï±áC#>š´±ƒ?»qrbóPˆó vÀ¨ ›œ"&X‘V]š÷Üßagsì’kà O™<îÈåé¶`½Tµ¯DŸT˜ŸfòžËEPéÖé­;Øž5ëò x—þ¸Qãu‚°¦o@ñqZH«SwC!ÐĆ<^a5p˜…3·t—Cv¸—™òPUmIE;üÐpD—z }­m[B®<Ö4¦¬bÓaN¿å¿†–†í„㚬‘k‹rñk‘Èe †hmx‰'¨v ¾áu\CÁ¥Þºˆ%=° í 3h…+,°¾fØ…e¡²°ÙŠªD@¹òÁEÛPÔdñSµEHí•)°¶±¥Sª—3V‘…gÑ%‘Rì¥# ò®<gÞ?”"Žb4B9†Î x’bgd6ÃTŠ&ƒ„'œ™&WJ9 ›&TÂ^œ<_&ã ‡I¶v’ز(WË9Ùv!f^Þ—p-À;^î¨Ýå¹–¯“cÇÈ\Íϰ"6~ÛÕ¼Æ3øA””³¢ßÈ¿¬ìV̹\sÄåÍ•óöÅ»…|‹Yã/å.Žx”ÄÈ®äìü*Gƒ÷x\ÃÙƒc¤fKsÃn² òÅ×#ײ‘ýÁuJ×þøq#“Þ’»(5£ìØàTé#Ü•‡OeËÊ®ŸßĆõ*±éŸÿ­ÜãZ)g¾ Ö7þ Î7öì8Ibƒ¡O—ª0ÄÚêûJu+ñ‚w}ô°ä¸ùöjÙ}S&ùUˆKdI(8GÞõnù¹tz^f¸I¢z›‘•ù˜ÕêðCÍÃï–‚"ôe",ˆ_Ó´ZÊ e]ß\ôç›E%Ãí½K`°7¯äƒW-úößË´[ÿwŸmjmïùí½Ã*ÁÐîôooþü˜¼aÛ€¿£„÷ 8ÛÈUâq•+R¾ë:v8«1a`v¼V¦Ñ±&XÿVûçùŽì±åL·áyJ°í;Îß ªÈNÎpÕ­-YïÄþÆzvñÊÛgvî¿â9©¸Ü¯ 66?öúúvþÀ<êäV{8Ä6ò“²ûUcÿÙÁ·È¹ ÀÚg«5Gö’ìpøæ¨µýníÿ¦$öö#È „_Ї샮ëƒö6/ÊØíƒ+f³®³Š©]Fìkm½-•ÏÉnŸ]»§ö7K&„ä¡¡Épn~ýПO_­‘óu¶«ßÚöûÞñ¿¾sb÷)°ÖJw)ñéæîœPÆ:˜A-)›Zn„ðázÊÄMÇršÁ•²W¿föÏo¾,²M å\odŽu'Ò[q; ½ºâ6û›§WïdÆÆS¸TU¤Â0é–+Êþï­¢ë?»~úÆÐ#¢8“®rVòæÂ;·" ¯•Ì[éè¸ÙŠô¦ð oiév ¼Å ûŸq'…nU&—LèÊN©î½·ŽççõuñN5”Ep­hÔ]¦À*qZÞðXC9£1ÿ>²¢f¡ÌV É-hSC¬ˆs¡ŸÛd¤r‹[>žd{}v©®@&R>\‘¹UEDÐÉOӦرÐfÈPS¿UaWÛHnÌC¸1!™Ã5ëœdXÚg+¶ïU!ÄîTr—ç‚]òÉæ×`׎Á¸bïú¸qoõ Yèüäu*!•ª84¨Ã~Š‘”…7Ã/?U¹veb_ç›crTL±.?~qâ¯ó9Ýà/v¶ dw ì8˜oúq8$—U±`h£.Á»¹~}–¯©˜Ÿ®€lð[ž fOCûéÕ¬ë7c[ûâo “ÄŠ¿ñ>cßÕ­[,'b;¥ôûrsµ°i\Ý£š€‰å^ý«îù¨Z­ûä³mÎP?dÃÖÕ‹7ûæxûæuˆëòÍ®r¸FXs\°¾µÔürÎðª­z±!}«/dìݰþl.J÷{sàÓÍFµœE:öèw÷[É˨e‘·çŒý³Wßàijúøµ¶…^T>WÑFuÇŸ8ײXÎÈMÛj4ý$Uú2tѦãêMÜø×Õáíwz²VߟCñî½ûïû¿ËqþԸĚ‚%Í`ìåˆbäBj ‹Ñ9 prá§Öï£Ú¸9k­øVéÞcØ;wÂæ.Ct”xkõ×[•Q&œ›@ÜçÕùºIÛEgÖøi|ç%Sއv.Í ‚?ßÒ²˜dù‡7 ‹³ ÿ^Üz´KÇ÷hM—0§Ø·¨´Ýð={üN<|… ‚¯$ùÀØh€o Ó(ÊÈ&!×u¡Ò\Uwï)Xi|Š$çŒ`J{¢ñZQ‹ë ríäì!4¦R¼ÈV[BÃV'™-Õ•š<5Íý ŽÈÀŸÀá$Å)+¡¶“«|¹-]d{Rµ¨<»r.„ÆÓ¶¶”r`÷Ñ4Q*‡ n.5uGï.Ï™¡;jwyΜ Åëº\\%:4…aîŠß€µsçö¿ħϔ)Ÿoá ³€O†çÝ»}ãÆÕ«2øòóÏ–-«m­‚›v|œ~qîËù×qg*\ çÀ E„ª‚µáÛŠ‡>ª¡â(”"¤0åÓ;8Vî^år¯4’á=X¶ÌàÈ@Ù›†„ (³úP§W±£ñIäHƒ"ü‡|!y¯ $MèÛʰÍGP'ôzøÅ&ÜU…Ÿôí[N‡~Ÿ±Œ³ÊxZ>!ŸþqÐKþœ"kt·¤ Ÿ˜§IkÈáŠ\Þ‚Š¸ò‡øXÛ^0¥#P4Ažè³å® ç8eOÒdŸÅOåz¡²*¨ú8[gÆ3Š»4ï”|­p€K/-Ë%÷‰´ðŽqÙòVæòPY€|‚s¬8­ÀµV¸Úyƒá6콊i³¥C´\¿ä•jR3ü8`‡O·†KôÝôø% ­ñ@3Ät²2dйxNQ—€7>¶ÒS …—ÁOJ§Rx\1P·-Ï>üyX "™é†'\"- ›¯ŽÞîJë-uý0a…u²h:p‚ÏëBË¢GIò‡N&àӻк÷qÞr³óZðJhÞ9 NÉZ ªŸ‡öJùœÈ4ôÁϱ‰xiÍnª¼DGÞ¬ˆÊÉ‚ÔO.VM×ѳ$ÞžžÑ¦.•lG2S ênT²o/Zʱ×ê¶›}ý8þjºJ Ò†j¶†ØCÞAÊ=Š·e\Ó{ ¤ëÂÚMÕ=+àHeÓÄLûzà>ù ÀGY™à…O‹'æc6æÊ›'o>|Ø>&Ý 8xÇZÚï:& HôB—é!”Î4r¯ÃÞ¬P*9Ð]?%¡»æÄÔÑQù¯Q<Îôrb(}ßÈnþµ~+| ¤_2…T¨Í7SÄoˆ<¨8=?tD¹I£—† zWœ»Ä=ŸèI_½4Ák!ƒ* >jˆe©²ôœþd]Ü4ƒ i€låšÐ7\NmÂhŽ‚ù] ºx‰ïÀ€¢ ±§•?^‹“tĆfˆ?Âf‹4ÜTAª, ‹Ò¹| <ù¨õFõ‘ÞH.eªÅx¥ÚJÈ®KRmx” ‘ü§@…øÃ;¢‡*ó¯1Q¦ŒŠÌ?²Vì¾¾Ï8ßYÃ`¯Ì­â Ã(sÄÖ㱇°B=E±¸ ¬¥’ ¡8MA3¸©‰·ÎJ£QØÆŠa›"Д¹4%á%êŽo0æ¤è‹8¡tJÅÖáüd¾Êí#A./]Ôê¶_•š=×±‚Û5_¸æ‹ÃX+4x®ö z*«™™¡²¸ÎK¿cÄ{B(sö¤„ó¡¨çœc—âÜn híB%5èÛÛ€ÿrE«àIÔ‰šz1'UuçøP&g¤ÔcíÔPšj­«†½ý…ZG1qÃ*%Ydˆ® ºQI£¶—ü\ÉQÒ=ÄN&£Ö¡vuF=ªWíâZ´½ÇI® îó½¶}v®•%SM¥Ã Ã7`…[.ñ‘†o½£ë#gþü …]z&,BRÄo‡OY‚RA´¤'ôC_ãï`O4| ¯„®:ñðBþ ? ,9<¢ÇU0ZGà–ü;Î9à‡¸-P JÒù¥»L•±¨3}G»@ÉÀGîÈxOA!—úà>¾â‹ÆCe£LÄá¸}Ö ²;$ARTŸwŽëÅð¹~¸‘›“#”Cíø å!ðÀ"p=(êÂè†]ÃàV!®•ü€©(¿A}8'‚…sF ’À«Œç6ËÀ+r€XGÌ¡ OáïÄ ¹ÊtÚ<å¹ÊÙ¨¦¬¥Ò¬t#Ã5áWx!tEÁ”è‘Lȇ㠤Z‰Y‚F- 2ÀôK‚/)“+Œ Bàþ ïYÀ@yAB ¸Èñ•óãmÊSÜŽ€Ø# ¼A 䀭O¾C­5;"d¨%É*Ê)p 4|¡+~ðVåá—Û ·y‚/ÑÂIÁf¿ÎÁq-V!‰¢?­>ó-‘QlB(ÆÑpWŒ½ïÿà&gGˆ€¿É À‡¢‹ ©X‘ó¯©sºû›aû¨¢¹µ‘2¤"©J­§œc(å°Ú¤;ã '¤ÎI%è S"ãÒ4Y2…Øú.»,7t.¤(C¶4ݲ%Ü‘9•u£¼¦©œŠ) Zh mrDØ¢v óÆUÛEe§4ºKþÎÎI¦II+ë—ÑOuVÅV ¯K¸aæ"K‚Qo"äÉ¿rMÓ%Á'áïÁè ú˜×åŸÆ#¸ñ£±Ü<žtð³fø»žèsኛ€ÒëÔ®Äë„ï4ˆ“ÝÅ^H¡nŠ}ìŽÁ¿ÄÃtYþ)»( )ÜöÈöv¸« £¸%$BÃKµ•ÝßáÁ.rAòm5ïçTá'MT¨*þà l5…‡< wÄ`‡Ïe”c!Ì àN(2L¼ Á'$QøEݱ&8‚æ¡GÓ *0ã3õñù¸!š¿|ÖšT"2|qsç†×…’¡3„70ÞóÚ" òí§Â…N~EÌè¹*—ŸöŽóƨ(Í d¦Ä _¤¦¬¨¢2¥Ë)ÎÇN"–â<@6?p¢MMæÏ‹‘*·#²@YŽT‘!Þ a.qã1@­¹JH ”\ºŒ0 àéœ EµÜPᇊœtp\”Dâp’†ocÇ@Ìwç¡Mã„3Æy¿q‘[» ¯Ñ6¡Ýi&¿:‹xË2jJÛÊ—¶^_M2WÊžN/͉“C‚¢¢’¬½&{ •,Pe:¸ò2@Tƒ9!uFì&œÛÈÞ˜9™9çèý;™„öHIý½«WB#™kåBGõx¹MSøº4^Ú)› –[HðBiJºÐ\ÊdÈÈU9[•m™ªDé]“¹RÌu‰´Í-”8ÚÏÄQÃ_o¢¿7¿íˆëŸaˆ‡K Øeða‡°“xø•Ctp‡˜Ãô,x3îëdµ1¦ÈMH¨¶¯lP¸­JÈÉÐ9±EqxƒÛ|A–ü= À¼(£ tÉ<è¾UåŒ'øÏû20!›Q"::”¡è‡•‡Ÿ„Á1;rÁgã­ÔÐð(AȰþô<ŠË¤ 0E½q‹*n°ûÆysTþpX2P6äPô°àkñwkøÏ¶ò…>úà÷’xèERÒ«È«Wj§ÄXÁCˆÍ¯RQÖÙ1¯!ÇJªgZD­e$´g”¤P ÔdÊ‚7j "ÔüË )<á¹âí蜧ЙÂß&‡ŸÉ9<¦q¾Ð||»<逼HÚ“RE0ÏÃwéŠF棄hH„w˜¨­âëTd(ÚÊêã9 ‰ 'nx kzG éÍ Ëx‰ï†)ÆÒ²ec Æ<¸.0Á rqro©.óD,èæà¹! ,ËäÈò§œT…êôÉo&±f¤9e`…8†¼1ÈœðPÊ2 Êà¹DBYNy6*Ý3 µ‰‘LmfÝ2O*ÑN%›PnuʵgMé^eoAÃF’B.J—¶ƒ·¦­;kZMW·}%u ©Ë }>n xm5®$¨Ý%û Ãñ?Î :àÒ;w@x…g8Ó /ÊÆ97ì¦xà~¼Vþ ZË ý·hª(³WÄÉŠ [™Þ蟂6öZ+±…) dªiÇÞùJ6"rä/T¨æ²^äxU nèÿðÆÒéi º5ç|5Ÿ²Z\+¥ÚÜbЧ’æÜɢǥÁ÷µüÖŸ¼“ßeµø‡ª°­¦¨-¼ÎVKç×i³l¼;ãʪeœ¤9¶Š÷ŠÈpðÚkê©r–AíÍ!|ÈTÊÑÂ?ÙÿTøPŽ3&U©¥Ìƒ_r>p’À-)¸¥p”­F±!lA›9ÉfJ%‰×žôæx8‹S´ÓûTêè”ç2ÉÒM‚}Í5Wª*g« G®yåU)ršr­0¥vÓöWntt—•* ¸ÀótÄè$iùèeë¥%/ÛCŠdà´ËVÍy;¶ &%Ã̵JúõS]sáj¹Ï깆WË£8rÀ_@° 6_)ÜÐ'Ù΀’ˆåý¨øuJáñ ½ :3›ïÁQªK6„oD¦¤¢{‚ƒßúã‘B¾Ó\Œx >ÉsT¶çlvŸ(OqWñ…k‘´‡L+Ápø˜'+QHÀK€¾DxùêÕ»÷îÚc*"ƒÅÌ3*˜{M€@@ (˜!îæÉ™­z…Røëô©wÀ|jÌ¥›‘1qEüýS«à$çó÷î§zÜT`4À7ϧ#qS€@@ (àÓ¬Rw¼«bË÷¨h÷ÊØ€@@ pµ{(¼æÄµ <¥z³¤ÆÁÐw÷5ZüUÈú©žx„ìàÕ£;1»Ó7;•ŒÚæ½W^K¹k NÓ‚mþÉ‘jpRPGriÇçôXQhügÍ È„Ççv™ú‰^åÉÌ._‰f1Ñ'®4/ˆ–åÊ¥"…šyeöYqç¶pNqᜢ–r“åÌY¤ž Ü„ÞÔÑ¿•«sà3›ø3t2ñ¡L¹Î)zåÒòåØsìXX¨OÙS­b˜ü` §˜D«jP¯Ï[EUupà™¢J¥X/TSÎËû’O –ƒœâ‚ÙÊ)’ ¦sé²5‚í•c‡ýÚ·ŠŽ»,YóÁÕÑRÕÞù\tCÝfL‘ºœ\&:‹pNQ »Ér)@džq<½zóÌÑ+Bß]|«X{ÚžjéÕÕÕ.+¼“ÅÇNhÊ\Ù8rØê(ÆÚ·ò“sOÌ麮ÐÄ—†}»R†ö\Ügq˜þRGxþrÕüG9Þ½”8qbWp¹žø~Îs4ÎC+«6ð‡îlnÏ£"h€jO³¡ÀxÏ…*=«¦ÕÁ^Ü`í¯l1”×zìø¦ “F´žªβ£…&’þ^Ž˜;és|nÏ©{‰©Œ3)Ó¿âé¨a­þ-®Œ¼,òÚsm½ÐÀNº{¡lNW»¶vRÉ ‰œÔu­±Fò|„ [¢Rðʆ1£—F#3½7Z¸V­®<Óòïæ§ÔÔYıËM›¸rì+ø~iÙ‰caåʳ«—¢}+懎¦Ú´÷]º ~ÊYÓŽ:½OÛAäºCs¤~!0m(9™¥’eg)°@oMÐ Ò7¡÷âôwßâ¿!Þrâ/áôÌ+ûãP8®þþ²ÄŸ±½ÓB—ÄÕ õu$'µêz¡7Å.Ös)¨:àûnåØÉ¹ÃVûõ›=¶,»²iü'Œu =A¶d û¾7ë¾¾à„‘›\0t– )ùÊV.|àò% œ8z V…®T–ó„Sx´ê„Ùc!†œ?zÃ¥±å«N=z<,¨,;y<ÆÅ¿Ô¤I+Dz=¼ªòç*Ño|œ•£¸²M„Õ&}?»À•M£GD¬‚ j‹kUuG·ÊnsÖ§@Ùî³v'çv_·¾I)£hxr~çé=cÚ…/ü¾ÀÕùëÇC«y~¸‚…Ù éÐÖN*y.‘S:×ZFìlôˆ±ëѨl¶§IT ߸Է÷Â1e‰7† k꬀Օ-°Yß±”šz~ߨcW¬Ö|W.Išå Ê_c~ÙkÇw×(†Z«jP›^j¾ðû®švÔí}z°¤ZQ»¿Ú …©Ë;›¥½æŽýÅ[{ôg7¡×a­×IÝèØ³ìâZ%<³&ÕÓ ½®G½…ß¡Œ^¹ã÷ÖûA8Î߸yÍåëá_i⤇»„üAØœ“—³Ë±… 4‘Ù2ÏËWbXìîïýÄT/'刽rY*{õè¥*oV8´ ž8Īô*઺²Uy®Ä ÈË$gqX»Âo÷j’Nò7y«ú/Ǯ‰­Ê UÊê£+ÝM¢b¸Cõ%Œ©]f$…ß–aW4 *W“]*DPàùúË—YYoFÞú°@ªŽP¹ÑQ§\7ÔÍrªuÕ·ÈÌ˜Š¹P8%ª ‘7À¾Y£ „ÚÄ›ÚjTqRÀÉêìù;¥[)çIJå«~uôdéÄnßr= í °Õ'®”e— 4æÖ«²E«kRÖ®™ž¡Å:Á3Û©ÓG4ÝŸšynêòúÝDu:ýÅ ‘"xöpz=QÞå<³ZØÅ0â)ŽBú’’ æ:Ÿx¢•†&_Pe6ïø é+ÿ~>.Ná‰Ý¹Jÿˆ®|8e¬,/_Î9®|³nAÒšÍ‡Ú z(Ú¾jWOŒ)øˆ¾ê$ÎzJÂÕËqL*j‹kUuÇC}T2{Åpûê_Þ>Cê1«,»ºiÜ<ùÇlͤ§˜Ú|Éëâ–Ë›Ý ½êœ›¼${ çZÛ쎢BŽ ¡£œ¨6DþFc"]Ý<¡K¸àfõz|¬®Œ={…=—–7ŸÜåãâ‚Ëwªä */m:qFf&]ÙüË~œ pL´¯o¾F#>kã{Ek-:M¯«[2°“ùiù§[”›¯l¶fúJV¦X¸½í_³,¦Pþ|²ž*[vÔ50}XR½Ø«çl–vNÀ¹¿xÚ ºM#O ÇõV _ünè»”ŸEN¹É°ãëЙÝábK1¬âÆ-Ý{Ñú·5Å‘&_ IDATªÑ]ûT›Ù‚ë–5Øqü¹ú)H:y£\µïf}µ^s»z7îÈ[¦¼ÿJV©L^EÏ®Ÿ¶7æÓî+I â ÄlåñJ=ÎcáüSµ }Å\^i«æÛöÓ™óó5ë7œÄÁÝ…¯ïåyÝ{áíK>3Ë@MYÞ†ÍeXµÊ5”êëãRjÅy¾³> Û®7¼×V¸rÂvmWç.¤9&»€¥Œ³Pm[;ç:òMîZ·Ö½qE›Aë #Ì9‰JÁ“ ¾=LR*8Û[c€Rº h¬®ÜI{þySjêyËTô]&•/£\ W#ÛË‚¨‚Z5tÛQ·÷éÂÂR©p#\íÔs6K\vQ¼sQ9ˆÀó„€!b首 tBfªTbí¯‡ ÔYNæ/)“«[Æ…_mù]ïn@^R°Dµ_$NýðþÆáÃå‘*%êò’"ð8£^ s±ÖëQYAäŒÀï›×Æn‘WÀê HyÁ€©AZöb‡Á Žˆ¨Þó‹@š‡^ì.âx\®ný|Â*ü>-•ûÌl˜ó—§(/xþÀè+Lÿùk7¡±#izÅ=ª#ä)¹Î[ÈôújAiJ0ežw^wÆë)újõó^q¡ÿ ˆ@š‡Þëÿ\}aU<äÉ-–=Ÿf*¼G mCoÚmàò¾¦¢„@à…Bö0ŠéªEEe^&Ò6ô¾LHŠº ž4·þ½÷¤E y@j ` ½’å¡tmµtï,œ¤gÁC HM ¦Œ†L†ümÖíø‹ó•,RS€à%¤e^+­å­ ½×V§7²}lJ—-ͤ Æ@ °&Þ¿wù·—3V^,å¤DQL ð4€å¡»÷íÆ´šÐ{ïl¶ ¦t™³< Ý„L€@ÀFŸ Y 7ºwe$„^wt"O xö¸zÏk;ì&œMæŒÌšôìé,4ƒ= b‘H˜…@àÙD€/±|m æ¬\ÃrAe´ª:l³q÷ÙlG¡•@@Øœ!‰tpI§€¼ôî ËÔs^×éÛcH™^ú÷U‹¿8 ‹šž¶Ûå¼EÊÅŸé_-4}®ò̇]:<;*ý{;±‡ Òƒxéòþ(=J”“¤ýMOJI!G ð’" >qüŸë×2fÌ”%kÖŒ3Bô}ò¡æ´_¯ø{ϰÍÍmăf¹¥$ñƒ/©mŠj+ >yògƒ½ÃC³Hd4'ø×cÊe/V„eÊP3éZ†SrfI”âá•$%$Zð„%&Yž<ˤ<ÞÉÔ€·(±7:*2GŽœŒ„‘¯ÑhrØfõÖzῤŽ#/?ÿ\£ÎX Lßhò¶Aý‹‡À—ÓçGÅ\Z4÷³ Ò{Z;¸gUŽs¿MNŸ»\®W d*Xïá½ÿüù›!!62¦É½‡Ò½GÒ½‡Öñ 0'·Zñ~WÀAàú5ü9ƒl¯d‡¯Oºtö¡÷I|³¢»ÄІ~úz¹ÐéÁG>ô£  ¿—„!øÂ¢Je§E ÞÚpw ë[nUË48Þ–uVé“?,F4S‹™üDàBO«·˜ôÉ€nʽê‘`Mø ¬;ˆ™­,}öû×vdΕ߯|m&e™Ö0¿Õ"Y¬,É"%Y¬I–hÁÙæÖ]>9‰`´H$“¾>Åõ¡óó+•Y×ÑCbÏôTÏ'QSƒ:Nº—vvo7qé,>nahµœ ·Ûð`BS4N§õJ­íqúdäªÊ¤ázhRRì´‚C²âí¯}迬‹Gª&Þd,‘%\n:5|Uî§ÖŸ6°¨œÂâ„•]×ñð†#EÛ6½ÒWG4mØì—5skWbÛÖ*›xjíÑ} ž[»Žž„ª©ZoÁL àËWÿúÏõ«;Ö|î¹&ôþ/Ê”ùú\¿òÍÿ‹ŒÊœ¡rÔþ¹÷sw>{ÿÍ‚_M‚Ðk•ðp’ôÇß§‘¹§£^\$šrjìÆ8÷uû]ç¶ØÓÕµ÷T´.ÖéÈýNŒy¸´;,ó7¥I„8^(ÎÿP)è‹ UI|yñüS7' l䪹“[|n­¬îÿÕ0"VMé±ÙÞî°VË{¬¢ÅMi»6†¦þdÖCO¯™+Íý©È ¯ØˆŒ;ÅÎ ªÜÌ»™¡ÃÖ£g/±¢~ÿŒ;ÇØÆõ; a«c—×­b|zj É´E Ý›Á_Ž óX8 ùõàúéÜÅk2ÉbH8u5]îÀœìÔç“§Y­ nµáE_«;?leU&z'ê’%°_ŸÇ7¬;ïaAÏÉl"ôðœ |¦ˆœÚ âîs1@Ò«x§x]¥+Å/œ?Z¾h G¬x`øZébê9_Ùt*ë¡§`=TîVÉ©¤ô>v‹‹©jÓvê§z«ßnÊŸáaÛ´ú4ÜpcƒÄ_Ó*±¢U:²]ë"¬ú3¤E}89yh) iÃbq^D‚«¾öí}+y<úƒE"åuÑØÅœ«Ê†³矸RcÇ•>G 9ôã_Ûvø´Å‚B/L8ËÈiʪLôNÀUñ%!¥žï ËüvXï· ™Gm>çæWÊü†^a›¸JH0õÛr‰_‘Skªô@Ùgûß  7 ½wê)`«£È}ž8·}éñ·Z7ph>‡æÖ’ÖÒ¸‘¨CLÔéq|rèôH TD1°Jr·=› JÓçëÙ¡=nÞ¸ªJqPÉKStí£¶Y¹&L“œ‚ç„Uª~”NþE}ƒØÜ1ß¶kÚGÔlÑš…öú‘µÈàü⤯kÝ.ùÉ®4ÑV0¤-m[/š5(Cút^ˆÑ¬¼$Äç´Þ…çÄVhR½„Ñ`H’p¤kIÂpÛ¨Cïj ¿ÅQ¯ï?¢èë骺$ÄÎ}ûõ¼²!g}/³xHüëTñéFA¿&¬ìÔ Ÿ6©ÏXäêJ•ÛO=ìn!©i6µ~Ï¥­#¤­JO¿ÎrÿXKy®• Ò§ƒ@¬lî@G3+:×®¹aâS5¤#«h9’Ås}¯3ë{+…²Së¿iÎzü´a.ØC;4¾úÙ·M7t˜¹±Wÿ¦˜|ìõÊædcÎüݬ‡¦BÝ1/cOuÔ u)ÚjÉX5’Vš{8Œî‰Îðú碇°“ò 3œŸZ|QÌ6§ÔD¹gåßó.îÚW(>>ÁzçôÇa\;äûξñÁ¬›ïͼuùêu Lĵ^>áŒßëõ y%¨Äè"¶µRzl Üq©¨akôƒØ£?}÷Ü_‘öÎ I0wu²á§¶;l/uäÏ'c`Å0¹C1$•nà0 ôtrk3 šÉÑ‚·m‡ê &N™C6Y¿zvñ´Öö\ vÇŸ—qZuÅ*ùtý)ç'?ê­4÷F%­¶}¦I}”„¢­ŽÜheWmŠsnòÕ—ÄÄË¿âÁ—w‡µË¶4'$IÿÞ¾.IxnI‚9gÜoå="SøÔû’T’`,¢‘q)d#Š=_ÀŠaÙ¹«¶õoÊoËéÚ?·2fÊd ½ŸW ¦Ê¶+kJ¶P>ó Ï Jè5úÀ¯ 8,ñ±ïÓÔT|ái¢/d?3Hv_%ÈöJÎì9sçÎ[ Wž|™3gN•PûÌTU("x™à‹Dð䌗©Ò¢®çZ2À4•r¤Oç“1}úLÓgÍ”!kæŒOþ{½ÏjBGÀs€X$z.šI(ùR"q×ZàõÎ×nÜI| oß³fÌ”Y„Þ—Ò(D¥_Rq‘6d½ˆJžäéfeÖÙh4šŒ&³ÉdæÇ³¢¦ÐC xz¤àWOOY!Y ðü!°uÛŽ,ÙóÂú¯9]F“ÉG¬õ>M(4çøwAg ~Åóéÿ|ÂsžPX )AžÄeÈüJnxJk½û¦W¾“k^êý‹;ú¦¤¢Œ@@  AàÁéðly|³äÌ»÷ËÂÕû>x˜áîÍ»éý» gIÂñ·aÂ9MBo2ëFû¦WÝoÑêN~ FÜ¢°ße3‰èû,˜†Ðá©"0.|̨ðOS¬B.ÿŠ·þ7-gþÐô¹Ê§Ë ]>öí+¯öNôŒýW=+#¨€o†ÌÙ˜Äø3¨ŸüZoÜ¢ù;[|6•â.¾F¿Ë¾[¹Çã BÀ‹ŠÀ¬o¿éÕ£[|¼üCáÞV3}†Gþ5ÂX¦Ù‹µc™*Ô|ÏšùᦫÞþpæ…Wýñ¿ñb³·  z@ª!ÿàð²Z±>ñÐshë¹Úujh*ãW¥a`tT ¤2pѾ•BZU iÕiiœL#§T ™NšÈ–N;²TÃG0<5Ö¯[Û¯oïßOJÑ;'ÅýíþÍ«™ Ö{xç_8tjÉÁ­–‚±qÑ vïùaçýȸÑëcï¤6ö«%O¨÷ñØ[éØÿuµI‡õ¸Ù“9S@Ázmèõõ^ÈYÕUËÖ™^¤<§844Ó3 mësú÷V©&æI½ÁDííPOŠKF@ü8Å]òu•Ak½O>ô‚Ì@_yÄkSíâÅX~qñëùlü®ÕGÁPxê";ík¸hõHüŒÍ‘ãñů£ªRJíÓbÄ쪅Eúó‰ÀºµkƆJîþµ?ñ+_;söì¯íȘ=œg)ßùÖý g©!] ÉëÍu×ÍŽ‰ø÷Þz{~× Y¿G‰¯1qçØÅ_È·Å1±1%à‡Û¼<ÀÕŽb“[y^ó}£!®ûµþá·/ßA¿à•ÓôR® Â87´®ÚÖµ«ù¸•f·öóÜbVÍ i¹ÌvGh“â¡9)9Is©«e*$òµÞ‡wñG<Ÿø¨dž‹sº£)R¤0¯X‘~£ÛøÃ©_›^)SWÿºp+ ßy:Šÿ:c‘~ïà²U[0>bN\ À³€@‹–oŽ—MÅgŠÚÿ½õßíÿE®b÷Fí‹8wóÔö3ëvîxd6ôÍ{?Óý[wzº¯…È}òè6´bcCÎÌY½W¯õç·omo #q0€˜ÃÛÐ&+Œ7ˆ{T3Ó1'×L¨¿R\5TJqÛ)¼Ìå é¯õ¦É—‹¨ã¹>ª÷?27IqŠV/‚]Wr‘"QS+…\„,H¯‰‰UF/|·Sç+}Gä‡J'¶³?§LqžGæÌj»ï>ÉU,Ñ*½R wÒ‰ ·J°¨BÇ¢ï¥ ¸Ô,þÑ#¿#7ãò'ÝÏ|Û’”19ŽùÁÁ!CöÁm(Zedú³yûãj²è’þÔ‹cãγ¨ ÝÚÎäåò©©€¾#`Å|bë —ì‚È-/*q"ßw¾[ñNìªnÝÚN»bDuG‰.ØŠèõL§97´b0&fË¢cY°aèUídÉžS|6Sl&fÿ~Vç#š3õ­Y‡uXzø¸iÓ=\3QÈ+{¨:rÐ-Ÿ ‰êZ/üÐgÚ„Þd•¬ÑÿÈÎþºTEB§ÊÁUÍök³hg-ñèê´s͹.?‘(x¹ÈŸùÁíÿrd.~?ròÍÌ×™6Ïz-àß·2¿1–Ûù«åWæ˜<¦0,÷Æíõnü!ò«^-=¼'’Õ¡ÆÂ/¶}lc¨Óދބ1…ž°Â­?í¹¿uÝЋ%Øê1iÏ>É7´Û:n=[kxÄï¯öÿÎÎÌEDaUP‹Ú;¤²®­Á-  &ÑÕ[õ]øÑ„ýi{ù÷z¹¼4Zëu˜ðü´òœXP ^NÜù©byâÅ'&H92fy7Ãë½û×üzç¿yéX“$K­Rq¯×.XÔ]yÝ<œÍ[2$‚ðJaXî]2󼿿zÉvÍûYù6 Ì!jÛ~J‰=¼í|Hˆ6¸î_õ# ‚ñˆÛ³#ª¤¿‹=Ò Å‘íá õ?¦²Î'²Tññ !àaC§Xãý‡6ý 5ä×´¾Åwí²}.|}ßz~ôRPÔƒ"Ow­×‰@@ RÊJçÿïQ|¤t³fb7s^Șèc±š¬Æ2A%ÚU-§3êMîÆ7¸N+^扖{kX…¯ÁåpXÐø¨zý¶øúwH1PJJE +€@@‹À¯{Ž1Âä“!C¦WàGŸÞZ¯h€@ Í(œ7C§:æ‚yêüïOc””'Ñ;±L‘ôuª¼þJ¶,i&V0Ü! ]ëM“mVêÞ"O H32g4·¬T ^K½Öc¨¡@ EÄ?¼—>cVx†³Ñü´v8§HoQH H#DàM#`[€°Ö 18MF½’Μ½(ÐR’%Ф ÁD xÂHVÜõðÞí'´Ö+œÅn`!N ž5´Ïp~£Þg­þB€@À1ã숈¸¤.†ø‡÷q­×b1šÒ¥Ñ#5RWcÁM /iù çQÀK„€ô¾D-ªú”¬üðÞXë£Þ§ÔB¬@@ ¼L<Õßë}™€u§?;4®Î²€S:ѯ‹C ðè“Òç.›ëÕ™ Ö{xcï?þfLˆýý\£{­â`Î~GÁ+Îû¾l?ìW»%z|5·}!¯˜$G|äóF“7ÊD½ç~ÑQç'œxÄ® ;PÏCb§Ò"A ðx¡7feç.?NXu˜ÿ„gÌÊEûY'—¿•ýÁ¢Ïþµ?I—.ž¥Ï~ÿڎ̹òû•¯mµfž’?É"á+ §šÏ\¸0t,ü°ødÏ+Vããe»?rˆŽËýÓ0ÎÉ7fÙw?_]cf«äo ·š»¥•ÇIký=VD {ò;œãǸ;Jµ~mDܦ(x|ÅgŠÚÿ½õßíÿE®b÷Fí›ûèÁb‘ÌWVf:úvúë+-V)kæ }»¶y|YiÇÁ¯}»¦çì‹M; ‚³@à) Ÿ©Ü£,Õïekx'K‹Û9ڤɨ×ÝŽ˜C[Ï…ô¬®³²ÄKá; ‹Ï8Íå ·X™ –Sl4!_îè¯óÛßO[!R ð4¸÷×Ít L¹Œ Û£®ç.ÕíÄ©èq¦†Y-mCº%è›Xõ-Sˤ+éº4µvîý°^‹ÇRç{—º1cµ&nù c¶©éƒw\I(‡Wû-Éš†/ òî¼((àÙ”5ŽSY¶ñW?äo‡¬†V6š¬“2Œ]ZÚwÀ¬ó¨_ÓðÁ,œ&´ÃÚÏ’uÃtqž&Y,°½Ùàc6˜’Òh‡³ûÚúºJ:4ަ£°ãë Å ¦¼·rFÑOÍ©¢0šý ¬ZŒöOïüS\;îeŠ\À @ÆâÞr´Bݹ‚ûÁ 3ŒwÜajYž ^Øñ­,Åî”ßt1þÔòËã>8úèÐîlÖDmè•ÜÝ/ËÈ )”G>;P7bY,Êü¦ç²KÕÛª>hÙ®A@|äóÆË—´¯ëµ‹šµ¨Ú¢ÍËü~Þþ|¯vm.ô!á«÷µû@»Ê¤2Y¾|c±j‹|I‹ºàGE¤#Ö _Q•±ØÕ={YëÁJ)geÄÝíµ¿Úõ²&½y°Ôx¹?/åAe_xk|˜àñ‘ff6[`“”&£Þdªt..†1WD1qç‹ñðkÓ³Ñ;ãóõ-¹eR瀯ò‹4×wi=ƒ3iÝQ„^W€Šô— Ä[‰ÁIJÅÊ’,¬jQëÀƉÕ#Le'ù¯::SÖÝz¾1àà¬Éwûz,\bã.°¨M=Ûǹ4€ÛbSwSBÀû2÷€÷‡ÒªmÕ*MXŒU „x¾<:–U·ÛKõÌ­ÖÄÍêBo@]^ÅÕêŽÂ­º5XºûœÈ2˜³2±qÛ/Ôê63u÷‚)âħ@ ­ì›>VÉj6žxèõ«Ò0ðÇûû×ôj_•_›…;ÚDÿ4¨J‹8áŒqVÌ3§ ñE‘«UJ²2‹Å ïkšæõ–šMèÙºÚâk7›—î?åð‡ÓÖ’&öÌÚó­‡u›?#5#WŒ†³‰›—UÇ™ÞéÞsxŸ†¤)=”vqž! î23X™•aÏã“ßfåûn×õ#ZÛ¯€³r±zi~¾l×Nž³2bKHm%Hûw˜²ì½"çbâ8MÄO¢w=C†%TyF€»#:† IDATa/Ü]'áÀWº|“]º™”øà{}ë®å×kßMm°hd¡ãIW/]{äÝWŒkWØ·Û=9Œ=•ãÒ¥³Å á]qìáíÉ÷šÄí>HlbWÏÿµV->æ|•)\¹n1{õì4€)ñ!Kq'—óÉãj*Ê t0àz‘™¬F³ÉÈŒO|Ô JUïhoç.­å•ÛÀw–ÍѪZeÔ‚w”Ü".˜‚[¨öO¯2bÁ`z·/Ñô«2›Ò}rh¨º ¬e%Î/°•#*&žZåã“.úFÁ‹W’,ñ·Øƒ+“ ñ·]¿È,·n%Zr=6•†FtìÙs@È<âÒ`ð®A­Þ_4 S㥬X­&Å‹µ^a.®}æáøØ~ÖÌY™JgŽn,«×¶eU­T«Áäa0§ªêIi´DÀ“Ì|§ž#™Ä ’!b首¸N“š<1'5Ù ^€M;ޏê³Ë6Z¸t§íÚ¾é zÔ¿={Õ¿'›–…Äð r­ tÿnï[®wˆœ99ÏÉë*×ÿîÅ?‡™ÔäpÍM}½Z¼z«)T~îØyàä­«§ý| /Rª`¡B™3¿ò4F½Ï=Œ¢göM«ÀKUnÀŠf¯Â'¶çy£ìý#ÁÿÆß~ðà!ÄÝg´^©uðð¦b…B½*"ˆO ˆµðý"«ÉÀŒü~‚½O©„X@Ú#»àÆà%ÿ{´î¿ŸâµãÝ´×" $ÄþÒ«|W8àý9}S¾1+ ô,.°03š¬‰Ö¤$cºÄÿ³÷.pvUõÝ÷ž3·$@˜™ “ëdжÏÛ!Q!\Cõñå&×êûò±ÄK€jèkõ±Å¶j+*½€X-}ªÜ¯U¹( äøªO‹É$„Ǫ$A É\ÏóûþþkŸ93sfr‡$ìÉ9{¯õ_ÿÛZçÿ[ÿµ×>gAoñÜܨþ/* ¼^¸ñØE¯—èí,wÊÉ_¿ûäí̳`Wx`{@›œµƒ”·üº<×»ƒÍ+Ø(<°¥(&Ë[걂¾ðÀy` T*õ—J嬹¾a ¼ƒœ‹ÏñõIA\x ð@ỵêêJY=¿ 6ð:|¥Æníܸ»ªŠéò®Ús…Þ»†úõ•õ¥º²žÿi¨kØ!÷z‹Oñ®1 - (´váeÿýË÷äE|ðË_{ûÂ~äÇGÿóßž9YU·Nåd»™P0Úí<°úÆ]ôõøÉ™gýË?ž<úwnr8y({ÑŸ˜“{i“Mv"w }õk½¥MAïÓKWïééѹ>Àq¢óºººîîîyøî-»Ý ˜-l9îüsã—ÅÖ<¹dYÖº½~eLÌïÏŽþÈù ®9g[ù ˜Û=õ#‡VœPœØ™=°±{ ‹®š:뽿íZ±Ç¸CW‘yضàåôV|ù²'n¸d;ÿÞÞkÐ=Êy넼úùNÍt7ý\ï¾ûîÛÛÛ+ˆÕŽh­YéhnnŽ)»qãF½nÉÞ—<îSAĶC·C¦[ñÛÚµkÛZ[ãrûr~ º¦Qx`Û<°vÕÏ'vœÝ7P*o\ºâ—ïzóûãu¿\¹ï›azчOŸ´O{y üõo^·mBŠÖ…6Ó«oü"¸;““OÞö’£ßÖ¾uÇó‡‘=o¦z¯1™rÕr‰½Íåºlôïp~aÕóÒkŸ}öÊj…Z¸{ðÁÔô¶ÛnY8VÉše+Öt4v&ê´x­¹ÌH =¸@Ji†®*Ïì˜qÿ}?X4óÔÙU?^ƒaEÇê•ç8Ÿ½îæû–«þæ+Ÿš9ïÜã²Á•ð|Üä¶§³ÄÝzÈYCäŽåˆ¢®ðÀö÷ÀøÎ‹õåìë4xWt~üè“$`üT¤hšÝÓÛòq³zêùÁN[/¿VÖâüæð<âo¾{þá[ϼh¹»x`ÕÂ,;âœáéi~ÿâ#g}¥ãL÷,²c³{˜ò7ß¶¾¨•ê;¦þ㈱Ô~ò9ÓÏúÜ-s¾vZû®ä)?Y”#ÈÆÜá¼ÿþû‹r`@¿qÔ×ÕÕ¥O¬Î«_u¹5–W²ÒÚñ —£O<u×/i={ÖÚEOµÎ;÷ôò¢Ñý×óOÕáe÷Þ¶èÅŽA =à˜´éFòµ‹+°]‹áXw”Å¡ n3ŽÑø¬yjÝìs?r‚4¹öþE]³G»»\ÛÚ¢´ðÀŽð€–—«ÙöôõoìéÛÐÝ×ß'h®uŒy³7ËV|]Òíþð3yÛgTÄÉÂËt÷÷k7|M7}Ÿ¸ò£·¬>ü}»TX¬å’¢l[= 1³}òð¡5ç’ï\”½÷Ö©_óòB®eS¿üÀwÚuþ£4œª$oÎx;ü‹~ôÞºñ°|“Ae(n«Æ;²}´äù¢¬ÌîæQœcjü /àŠry=öøùÏ®ó8@ˆ[9¶FÓ5k•Ѧ5á‘í׬]—åiqÛ¡Í\¸êÖÖûï»­¥-å”ЬY®¬4šÏÔݪ7›4ëôógÛW>˜Lk-†cAïH\RS1ø´<ËsîEë´wl+˜"³(.<°uèë„ØÞ¾þîž~áîúnÝ;bÇÆÈcd|J3ýÃ_ûÛ3ò½TâÁ“U«—e+îùh‚çìØCËY½#ÝüÆ+Y¶Z˧£mÂËÇÏô£k¯åUw,øh¬ dÙ{‘×4Ỹ*{.gs.þÌ“ÇÝ¼ðŒ “K75€wÏ×±Í ü?G…^Õéc*Ja­Öœ#ÁýÉO~R»Q¸e6µÍœÞvÊe'tŒ½æ<Œ©÷:­]týµÿ¼†gp{ŒÝËnÜvèч,»mù/Fù-S¼ .<° y ’õö w{×oìÓ_oO÷(VŒ»T;Œ RR99⯿s^Õ:óØ GÑ¢(Þ<0yöÑ3oxô‰ó¾æ,#«GÔˆóÉ']õÝ.Y}ÓÇïœò1¨*Ã)'>ì¤ûâ/=qÑPV;¿û´×J?¨{¾£±“9–—zè¡ï}ï{ÚØ¬c[¡W)é¬Îå÷_ù`ì5—ô؇\Q£­µ%[º"j×<ùô²Îé9H·Î>ûÔCÚÖ­}13ÍÓ‹^¬¡û²'—Ä3KÙ‹Ë—¯imi ⚠ݼ­¥mͺ¸±¼¬ky ŽyÑèŠÑ¨¨*<ðºx@Ÿ_ÉÕ ¢á®—šã¯§{4èÝ65'·ÏÌù×[WWqYô¥÷~ò¦U*y²m²ŠÖ»ŒÚÏø£#îù볿ôD®ñª;oªœo«íg\rÖ²¿|ìm[ùíðöž=°»¹¬]Σf½¬Lh•ò~øá±¥Y…‘ ’+©ðH…+Ï ¬¢¤ã„?>­õö[®¼ö~×·Í9å4ë£C7¢Ë}ÚÚ¼¶íàÓΞ¡Âe÷~㥦è<úÓÊåI¦á†.GǼ?>.¿ ÜѺîëW^ëbÊ©‡¸œa nÒÁw~ã~×vtÎP¹u˜Þqß´  g“Ž¦Ø Ÿ8 Êü¼x/<ð:y vGjkUÜâݰQYoÐ7–²v€R³/þÚY >zñqß4ïc/º?_ ܲ –»Ž;ïþ¯µ/øèÙG³™g}ó¤üìwûåÏ|ôlm³sœ´Ÿñçeêä“>õÁÇ?Cn,º¤Ž›½åºÒ@Y³º«¯¿ûÄãk,<ùãÇ5qÞo¿ý:;;ðƒ¼üòËÇwÜ’%KæÌ™Sø>úè£'¼û=Ã,Ó×Nbk¡FáÝÏ÷>´¨æg¶ÚÒ+¾që§ÿôƒß{l™öUyÝ­¥fèò_¯¿å;ÿó²anYóÒ†ÝÏQ…E…vüèÉŸløÕ/&Ož<ó­LioŸ8qâ¨Yï¡oç®Í³ÿñ¿†e½<ð@µ1;l½“x¬P£ðÀ.éúúú#NúÈæ«¾‰•ªÍgTP(…&…Þà0ðj{³±·T5ë 7EîûwYa~áÂ… ØèÑ"Ö–ø.I£îpÞEÛÂ… (ýí‹ÊesôßšMè¶úæ /¹¦ËDg^{ùI›áZi~ëÔmrì&t*ªw„ø2«ô|Qi «+ë¬666êkœ>øà‘ªz¿óïÔù!áâ(ióqw÷uËnkY>¡\W70@\+ë è¾sFà® Wo}ë[ýë_o™·ºîûfþ»÷G}hÞŒ-k\‹zÓ —þðêE{¿ï¬ƒÛj5ßú²al_|ê–Ÿ^›e­sN>mNëÖ³-Zn¾rŸ«Å&ܾc`ÓióÛå(GL -ˆªa¯JþnËŽÉî{pÊ¥w.xûª»”À-u“yŸþ–á‚©W~žDv°ö]Cµú– ÿ,Zç}úÂìs—³ }þ]sÌ…÷||v.¹Zb”mžÐO¿ý‡ŸCirƪOÍ¿n¥wžóÅ+†¬WcŽ>?<Â4O^õ‡×·_sùþ7%ýÇP5Ëm´±çL¹æº ‘•ÞyΙ×ý8y#LYµè‡]ïúÀ¡µÜ^Ùƒ>„ܰ†cƒ{ñºóy@Oô–Ëÿó_þõCùðøñãÆ‚ÞÝaYow#ëÕ¥Ö¥·ÀÊ5 ïx ;êCç¸k>¥›G[lw†ÙfÄèÚêN:ø´y/ ãîn5“Ú¬‹ÒP×ߺ°åØó>CÈéµck=¿ýR •wÞ¢Z0D[”³U·ßv_ÇÛ¯Ñ-WèWvMùâ=w´gåE_ÑÂé§¾u…W`pÁ§n¹Âˆ«ƒVªýñQW|ë •ö‚NrvÔ®¼/5ϲc戞„¯‚»cÉ6¿‚â‰l“B§Íÿ„5ûŸZø‡'_.Œw^žû·w>xùS¾xÅ)cÛ´ù§ž+²²º:Îü¤Ý2ù”Sç]w[SŸv­®‘ k:³&«‘ŽÍÆÖp¸üâúµô€¾ºyÿÉ“¿rùWæÌ9Tç[½#q7J¶,ëíè˜ñÀ}-î8ùI³—?ðÕ¦=~ó>xl«–m_š•‡T­.ieýÖ)ŽVsµt4d™ºCåÓµ‰ÕºFÕà¢åŒcçeÜ·\d·~õé)ÓYƒ>çÐ:kNšC ï@%^c3qfvìÌ•`ÑŒcÏ;pí w,Y#6­³Î´gªUªB—á‚ÞÀ×kºV®ííÜ*¬ÎܪŽõ9ÓºVWY1‚fx4ìºñf»……úáÕí§õ®û>ÿþËÃoÝ¥ÎYM»j²éX™pò§nQ*]ãd¸øâú5öÀ+¯¼ÜWî»ùÛßþå ¿ª¯óá¢xŠW¯Ó§O_¿~½r\W 7nÜç[–õb®î‰žw0¹ãW˜9¥ÜÞÒvêÉ?º–Û9#[ºríœUü\».[³\™hx«Cm“æá [FçNÉgÍZ’§Óª¹UõH-úu­sæ:ƒj=döŒ%¾Ù3ö1’ ômqK8Œ]³÷ +€á‹Ö)ûmimíºïŽ–Öêµ±…¼kת£³Mmgk›¾­8hpÙ#Ë®^úCÏüòUë#óèÖ­°yö…Wœù'¼ÿÝ4%?®$¸æµöîë|uÌ…wl¶n¬>r*q*9ûÇ\~éï¿Öµ¦Ûä1¶ÐM6ÁÊk%Ñ„ç\<÷‘ËucøÂ¬½ýœÛ>ô‰»®þÊþ‰Å“W½ûó?ò¹RL­è¶W©šHFy›}á§ÞõîÏ¿_ «½Qó²';tÁÝW´ç~ã¹Þ«¿"’švÕd5Ò±Ã%×;^XýÂô©Óo¸ñÆwyÄÛÞ6s¬gam,)ë†îŠ+*6Ô××744îŠ`Ë¡×œÚæÌµìŽåKjY›o¼Rú}×u8kÑC‹_lÉ­›q|[‡®3W´©œTòò0â”Có!ëÕkŽä4´d(«MÓ×ä7†>µèÛæœü¡9kßðÍ«×TC-Ê7lY[Ç´ÖWvÍ›1|ÍyS±o½¤?tÁ¹Ò®2:´ìQòÀì ï ‡C ½*;ÂYS¦Ä½Õµjþ­ «ö±oÝý±a FÊݤÐj‚ÑÎCÊp²S¾ušk”àÞ} 'ÉêÉ îÖæ©ª£ZÕÜ3£È¸FÛUwýÉuSÞ1äNs«å·îÒ-ä*5NÉ]=‚r„>#}XmJqþÚy`êÔ)ýÞ’,<}ucOi ÉWí¥êîî©È~úÓŸ¾ôÒKsçÎ=òÈ#õU*Å=M/®X¾¦µ¥5«loáî]R§uÆÌlùâg–··„Û´3kéÐuæ\ñ‘ Ç YE…³$Ô omY»ðß™^»xÑ( ιnñ>’ÉÐúÑ®Z9ëäYmëÖV¯®Fû,÷‰Ê.9 6Ìoµ'F¤­fµ+6Œ•Ûñõ‰…÷u´·oG†»2«'n½qiá]¹Óíý­6!Ëê›êt—7ëïëïëî+ëååx~W ¦øP¾«¬·©©Ix\*•D³eYoGëKWõ››´ d=ä %7Þqõ¬µsFeõPˆ˜Ý¨ûG¥(ÖyÔûÖÞqëß\âëØ•˜Œd8iqâB6<‚ŸJœbvNë¸ï‡ù6«‘ôGÛõ;ºüm‰š3#[VaíDÊ»«\8ý´9c2©jTótȦ£,†×lø†*Ô0hiÕm‹o>`³y®WoÕÝ7†;xlHu‘9FóÝ­J!e»«ïúØz¬vÚ_± =…´ÝXïZŒVßrÑŸ}#6fïúËÛO|c{c×ê»í¯m}C}ƒ¿ÃJO÷®^ý\ÝÕ×ß}âñCoÍäBûÑ#mmmÊn—-[öꫯsÌ1ÝXm~ä‘G”òÂEßÌQ.Ÿ~æYÕšn親8 ØøþËGûÌnµ¸_þæÕ­n[4,ØžyïëcA!µðÀNì_ýæ×“Þô&)ØŸ•÷{ó›ÇZpÝsÚ‰m)T+ôuðÿþ?ûí»¯NvLÖ›+Þ Ø¨k–2­Ryq{ì¹wˆ Ýã&ö×”úß3®þÐRÄŠZîêïU¸êW3EE¬:a®BKÿ€Ò( hTàÐSˆBZEˆ~FáIÁ¬¯Ô' çºR^ËÂï¡Û[¦tðû}e‚uŸ PÜ„6{47MlVô,5+…z àX‰ _¯è§b±W¤×Ÿ´!^©Pðç˜îxa¿™dä IDATÝW¢þõ9j«©®¾NªW`ZF)úA%t̵‰âh#Ô”½õj§`IÀÐ 3‘boOŸÞêú=ˤ€ƒ³€WhâR'jðTå€êT¡¯Á'ô—1º’ ¾Y}ƒÀFX>LZkjÐÇ BÐÉ|Gð¢‰.o¨k:IäH°n Ê¡ òšÜˆ)ø$¸ÑC¡8Ià« ¿¶vè¦a]I–2iÿ„tòkH€U˜d{}ÀÔ—ª;qø )‡PCErg}ÆBQÉêëVo꽟¹àŽ÷˜½Ô`ÀbÔ’:áëüÕAê÷'¨­7à èO¦õÑåLlXzëuÿÑX©Bœì§V ýò\&à´¡t#.‹1âñfÓ˜aûÑΣoI/lÕ,ÄÓÒ¬¾_véc õ5{,÷1µ`ô¸|µ(iÆe½¥óNi¼òÉ¡£py£g_L etÔ⣓(†£Ë÷¥úæÆ·ì³Ï¤Imã÷œØÔ\@otrñZx`ô@I‘Y@¡È"XknÞ{ßý'LØccÖd rùÔ e`VT Ë 8uB‰r½"^]}¹ÔG8VB €ÒÔ(xmÔ7Å–êC‰FýåR£NF5nP†¤ìX• &H1Ô¿½ ¨ÎjÊYŸ×&+)«">—ë`dëê”1)Ü™Äg¢¢ìPÚQ¯tVIº#´ÿEŠÆ’&@§¡)>=÷pÀ•uÒ¢¤ªx©hXF‚ä+²Ú!Õ!Ü„C§Ð = :Õ,D|T©ó²È¥Ž Jò™lÖ„,ƒNï$ìÌTXG.+Å€@Î_dAà/àL Þ/ÒÞ‹ eù†Žd[.i@RG'ËÙx'G³Yǘ§7©I†(â>ÈtŠ@%ü†ƒÈ/ñf0©‘fÒ‘å æR°/ë«×lM²D#¼".P~{Š ¸Tÿƒ6 1ÛÉû¨b  0_X#õ<*PD¼ä°úÁ­Ú1#ä³Íèê4éHã@Žÿ´Ú ñ¦)È€Ô+ åÅ¡^ó;ôk|Ä&%µŠ?gäŠh-Gs!µÐ_aù€’G41eº&À!F†´>/|Ù”F5}!ÇàxйŒG™lÒƒ¸IZÈqäÉÔ oMûe(S´ l‡Z½×«T#¥Ú¥æ½ö·wˤñÆk¦Ud½1‚‹×»žô±×âÞo{šzö?¾mb©{ÂxÁŸ~EÑ…C¦à:%|)v*—Õì¾±®ðÁ´Ÿ4A¸¢0_§0«SôgÊ{û´°'hl¨Sâ¨(ɼ_Š´€XY*õö*‹êÓêž–Õ”“±àWÇzßÞ ÍûŒÐ-A&Á“°ög$e•à ƒr²‚”;~*È"ƒkb­ß¿&!¯ãºqTÿ!J8DhDA£¦ae\ÁÁ±Ð¤±£Œ‘8UÂw áñVýÚå¡£ŽÐRÞá˜òt ˆüšØ…8¿ªX‡ß„jÌÄtÚØ‹€Js’}ëMÏèw[gŸø¾9›ú ÷M°»zŃW=”Î1c“µ»·´S` ô7*_жÙRy|V×S.5é¶®ò¡þ¬‡Ç_z"§(Õ÷–ú5+¯kò=`ïïÔr²¶¿²u†èÑ£ÝU M<µÒ?Ðë§/zKMÚR[ÎÚ}M½=jÞ¨-ºìciß4 ç÷žà4ÁÓ~•ƒ•ã£ñÏ©‚‹ùÓùG"{^Ê3ÃÈà G,Ng~Ë“‰IhöBbÅ_͉šß£qž­H-1f§O¤&ªUX®„}Btȧ™I0#& ÁÐÝœCøNVBŠGìKK” ÃL¥9ŒjR$ yBÈÞ uˆ2¤<ÓÉŠt×?!ó!µ0Ë3Û<[wFœ6:Aé»¶•[ßÁ€Wƒh ‰N´,ŠñÂ:ƒò¼åž·¹3bñ V4¸¾¡: `“º;4E7×…Šùµ] …”R-,Ý¥T†áåX7O˵9_·´ýØ’ÊÎFÕgø €<žNU`‰–=˜tpX‹\5Eõ{e<&÷ »¦ÝÛàéséNOèr |« ðk|¬YxçƒÙÜù ¦Kîš…OweYǶi°Ýf[Ó“zßñ/ ãîn5“ÍðÆš…Ï¬9=[üôšÎí=™Ø éÉÎã¦õýåF{á9‘zÝ©uÈbuµ¯®Ô¤ÍSMa‘¶u*‡ÕC¾=Â[vW)nÈôü¥¶|hÃf£žPÒòXS9ë)õ7õt°YONj¿•¬{Å×Ûr´«¡a¯ºìM{6¾i¼Rà”Œ8ª!׈ÓM}MÆâœjL±/¹1š¤FÊ`DЙ„DK0¡š˜nD´äÂ6¶°ˆñ CüUl \à(B¹»˜b²§@±õ•HI™¡ÍÒÚ™ ÆNà<pô„¦ʹmj•˜/èÝñ?²j£„'-aŽgbœ,HšT5ôö"¹•äØÍ“üšs“º^&Žu]©©ÔÆ»'ù2|rm‚Š|.|ÌS׊làcs‚3½ƒ“ó+¼ý@‰§¶ ‹Á##–.*>4#iO§¸×p‰§%&¯ãEÙ¼U™NĴȻռœ¡fŒ§ŠfÆáô"î†SKž¨åX ¶j7õñ QŸÈT¥˜Ê§ùî1QàjT|nàQɦ†}'ÔÿΛ&¼iB£p@Œ‰4D¡X ÌÈX•Ç C,+C ½ßü*ÉÄ_±ž Î ²@I‘Üó—€ÙAÓËŽŽrŽç ™cj¥A qæäXnìr|õ³ ,¹:·qz‡C5ü* ‘×D…hiÐÔ‹5bwÔù\(êFøˆ0ì@†¨Óº¹s5ꢉ½™ ÜâÐr'ny‚õUm‘MW äšZ‡×ˆq-žåvkc9Ék ùj»OB?5á±1s6o„´B(kßq‰(k®˜ Úÿ¡€'º•ZÉ•r"dgîá#ÚáC7IÖøL±ôåÁ’¼äz‰³w=ˆÀd S+D§‚¡/òp»oj[?wŸ¬Àœ#Vîd\f›]›X­kTå ÅY6ý˜ã³¿¿Bd·]õ ÊtÖ Ï9´ÌšÝbGJyÇfâœø˜Ž•bÑôcüÁºïZ²F|ZfaÏT«”»"‰yqåòlÚÑ“Z³Žì]kgéDÇô#´+ vè˜Ø+xèÎn;S zyf€íï¶*êÙ!}Í’Ðw ©ÔУ mˆæ&úôíBWȼ„3ƒ“jØŸú1_“édÿQœ“”ªÚó)õ³OÜ/ॱ•p4b\)ª}]š˜».ìsNÓã`ÈÒ…š6aFx"ív3´‰'zyøW·«îu òÝÆWÔ¥ûxÎK0 ƒSt¦v{òÓ´k=:º2¶­ c|Ùƒ1*ñGôWì ³ª±NRY®–iÚQÑúµ:éœ;p½n øª“éÇH>€ôôAgtðÌëV,ÛÁÌ+–M?xë··uM;uÁIºYÛußK^œ>ˆÜ#Ž$®W£JʬœqÆ9ï˧Y6xcx$ýÚ‡n[ÔrÌ‚“:²µKn¼+ˬá8©46µYóÌS'Î_ÐÊê«ÖÍ:ãœù“˜g<¸xŬyÓ»?Ózü9ï«u+wM×ʬãHnZwLËî_¹fN+>¾†zEÑnâ߉S²«çqµÁªÔ߬¿ÚXų¹1žR¶*Låy£^;Ai“v`iE¹‰ÕKgfÚªÙÓKÂjŸ³Ö™ËÜ$ÖϬhÏ´øè‰Þ¶qÍû6ÕדHq8|·W8×IŠqŠ˜k¢“@–˜ÉsEΜÀ[‡<kHà$3Ô#,š7õªMp ¡ióWWséD1/%M1>‰ï–‰cè  ¦!Xí-Ü ¡‹´m,TNà—ËÉ£,ò¬B¨ãÈ-9ÕôAÝí¡uœÖ‰-ÏÅ:J3mP…±YÿÍt”7-ÈüŒ¹‹†a6¬"ñ‡y´ÒGr,“žÜù9¤p‘µ¦|è\’,¦GÉ™Váö*Ü( †éïÔa©GƒJ±¾ s+¾+3‚6"^­5°º‹CÒÒûªeIô „i(ŠÄ¾Ê\ª}%pôÿÀ?õ¶Óä˜wà,;Öª„C‡˜©)AÛ¸ÿì¡’øæŽOb½1O<Ã\{7Y3Ï*8ø¼ÈM¯=ôJ¶î‰.8ˆÜQ{…Œ¾ƒû¤Ú@2Ù®ÇtNÏ–®\;ûŽN­]—­Y¡L4LìP›Á¤y8Ö‘ÄѬŸ5kW®y`wsÂô>R®JZg)ùÚM5ëéKkQãr$ˆÚä–p»vïé6ïSöÛÒÚÒõý;[Z«×‚³W›s¦;iڌ쮧—¤Ô|túhU¼î–PbªïÔ«¾3y¿ö3›VLáY^`Y›¤´ ÜÐ_êÑI¢ýýúêeí¨ÒŽeà–o Ö³Iš›ëQeÏ,W¢ôµ}{ïÙ0uÏÆf=µËáïé8B@D è4d¤ ‰cy@LºHˆAD¢yP`AaX‡$ªaç\Ä!ØŒøß£ô4ƒÀ(mDñ͈٩4±,·œÒeÄÄ ECsÖ– döå*X³XqŠd$¶–VÀ'ña¶ývÀÅRÂ#7n"Ã3*1‰üZdú“AѲ¢¡Sá0.™gÓI‡qM.Ç“$£T)ï”ØèßÝLª€g¸ÏÛ¹½LͲEÐáöp8D ÁSÜ›â¬"l,᜞Reanüöþ¶+Ñ-·½êyOþØ´ýA“ŠÕHñ½roÞÂdVŽSn‡QØ,®•êNôrù°Ê*·Pt¼;›Gd(¹~¦NŸ‚ÁôYÜò”»zºÊ„H÷F’ûº@¯­l›s䬮»”ݶ¬Í7^iÕô~×uþÁ¬Å/yqïlñº3*ÜÔvè ÃF/5Û8†òY³°ªªæé–Òo“¬ZŸZômsNš?GYõu׬©¬ ˜néO–¬Y—±fž£ŒJ_‹yQ¶ûx@d¦Ï„M…Åú¾úÞ¦¾&a­žºå3ØÍ7Gö4*²ö ôêáF}e|]_c¹I`«€ªï½Ò·oèkõÕÞw¥­Yúö ­H7ìÝß¹Ð.KÝ0d§¸O눟 J÷9%ÁÑZ¯‘"sŽù^‘özu€«Ug&Àt0 §•# 7%^i6aÉ.’ºöV@„ÊbÞ‘&  ¾s{ƒ~4¡¢}ö*¯¢@ð bW™ñÇ¥üu¥tÀf$“/¡(´©OáÎ*Óaiá—ˆTÛ/y…Ö³Ï>º8¦¢×8M\X]°ºðá%ï²¼ñkðÞµðiîiêÐ=Ë5--­YeŸ”–RõdŽÖéÙòÅ?YÞz`,,·µ¶dËžYRkWÑH†c¬jë˜Ö: géQƒ¾µeí¢Ÿt¡äÚ%‹W„ºc¿Žd26}^Û:ëÌgµ­[WeuW× =¹4Á9éïŒ[—­´2:ªèµt£ý<òdódT»‚½•øöY}©²>ÕýÚ(¥Û¾|•>áúÂaGIß”¡Ïúš*}ðë…Ê|É€àÕ= s…Óúvå>a³îñ*ë?¾Ô¹wÓ÷˜ ‡…ÉôGüÕmAA¥ýB:\H8­Š®b’%PŒÛ)všÒ›Lc°c:Ðfé˜Í‹‘q±$é'¹‘Šb–0lq`‡oõæ±eyx‰‡'eŸà:W¼Äiœ0­–뤬“<Ål—@ÉR'•éè†B ¾@/*Îê_`œ«Ì3`A§\™RÚWrvêŪÂ"~ûT*%™föÃuè#pÎû ÌŸ?iÀ…Þ uC¢,—y߸œÒHØã‚®#÷MÈd˜'—Çi³ÕfI îfpIþ›¸ÂÝÛ§|„rNhU*Vô(«ÁÀ$’ =^’-Fϰ! ŽÌ$ B}×"Ö>`x%©ô,»È#‚ëôpQè‰I#Ž­/]{ÕuQ<ãøsÖBë!>uÓ]×,ÊZgN‡aÕ¼U72oz¦åø¹‰UçÜS×Þy[ží©aå‘Ö‘ Ë“Fçj”kð9èÔã_º6qž~´À;§ÍøþCZܶ”¬:çÝ¥»³+ÌZž==ë‚uRòŧoóîª,œvêœ1™Tô©òOµÓ–ÝwÝòGŸÏ”óÏV,_Ö2ýŒÖAÊIÓ¦·Ýµ|éÜr×Pú| S¡yR%¹8ÝE=  §O8¿RÄ—;²Ã™õƬ§^ˆê­Ëz(ãKõ•B%}U°t¿Pâk µ<].ëö/ßj¥5e¤I{•&Ÿ@8©„ ErÞH¼àiu(t– îE2âàšš€¤fÌD,Vr" ª`ë)­ÄÕ@/U`nD4>•81T E~³¦±HÎWo„ÔzùR¤° –„H_¥Ï…Þ ò­Ñ K}K¯Zg9½7@І’H֬ЀCJ¢Ý„\ñEen!Sü'‰¢¨¢ ÕöQR”SC×–¥3ñÏg'ò›Ó(ü/Ï`.D+.²v02¦††\Y¹Ã´&駇Aˆ”•vý땊Á~Fk<ËÎ%Räð@t+¶8SEŒÍ¢ÖSµ“ô˜£aÎ÷üÎÀlÐ=Ûpiâ.Z4ñ;<¦Ò –ŠSÇçzX\è¤V6QxjpQ&ÖÛ=HCE7ÉMÍÇ’¢“·HKjºfTÛ°AAªq÷&o§qŸOp»u’ׯ¾þî? òíw¬ß Ozq(<°=pÿ–üçÒŸég·§v̘´ßÔ=öÖ.¨Æ>yJlp¹[«§{ù.ÂÞ&~„ˆß“á–¢˜‚œž÷õÏàè‡óôúb«¬ebSû8ýˆ.Á/v¾:þ o‰’Ž*$æ;(¥°ï¼0ÿQè ^â< …SÌ|â<–Š9¡•¶2ƒ6 ¹Hª.ÀÞqU [uò\ˆâ[(âeLÂ×6þlFu´­ÖI# Ѿ ˜&œÁ·ä‘àl¸ ²Ò:w Ÿ„"–à­?ÒÆy™Ý•GrÃXBÍÜéðBš „P·Mæ¥s®0=Ô'CÄNå™à®$—€¡VØV©-KÖxšù„wå —rO„$½†Î:¡·Dg´¯ÉE9·ŠûMPN*&›u/y2,¢§ìG™*EŒz1CŽJá†j&¤•”ê?õ£ë±fS¾âkhtŠ¥}ù@ñyáÄÝ.IrBøçÛŽ˜`SÌYÄQÅ9âsƒ)µ/Þ Ø•<@þàŸ!Õçš_íëcMXßáld(÷ê‡uµµªIù¯~¡ÇŒ´!K¿1Çö•ôÕú6=Ë«ó½oßqÓ&èwÖÕŒhèøE§|£¬CÁŒ(B@SLŠ…:‡߇äݹ<ˆb°Ò¥aViÁRg*P¤DwÓDÈÖ™Ã%y‡¬Ó0hùó‚)HÄá½Ó,p;º11’§´ÁÛ¢ÄÑ,¢1rb2fÎrL+9'k midíº­’&2¹ª²ó‰j«“€øªO (L³ð0ÜU‹h"ž2Pˆ|pWžI¹g2Æ^ ñÈ+è5Åy4NÔb‡…RÀ6x¿›š1•b¥!a ¸«Å»êVß‚Ð3ͺX•°§ì’8 ’á ¨Ü5ºX/’Ä!—‡®Täb­¹µ4 õà¶~N*27¡ÛM5¡t3xÇFîŤ+HäšÙ0'Ôª…o˜Ä ‹8J¤‡fÈæÌ«hâµëðt|"Òqï8冫uæ~‰%b•§:þ@GỤ”ÖÍôÛáD¾|JÀÚ§dÿúªJôH®¾aRp«/â÷×ZéçÊvà IDATJZÖ74ëæ¯6Péû«ÞÚ6áwZâ—ë4Ê T±Z ú*f(EXMaÃx¢Ð•£iŠ« /*‡“£"Á ¦b@°‰…ÉXD}2êüÑ ¦ÈWƹË´ß¹ô*6ZX-ÿ)‚E‰Í/b#',p;Jƒ.ºíA;è"è¥séøQè@,¦ŸDöÇ91v¾Åm +“æ(‘#¦Yµà¹E!gé°š€——Ô"Ôw°ÝJ‡@Ä ^YÌëPÙþ£»hkˆ~¬¡ßBF2Zý^½Oü"Þi­oÉ6Ê Ò¼‡.Õ•;Fb˜X) ¢·l'Ìì£T Pû‚DR0Åø7f2¹µÍNù(—ž<À—„gºò}T¦3t£giÁÝ®K&Ñšd/q³ý‹SÅÇPoÄ5-² Ëç}•Ùͬ,Í@g†pŒ÷Œý’wUΟŽANˆbµœ§­,ŽÂ…vE8o!EÑ+…ýÌ~A_;¥Ïµö67dúÖe}kŽ@TßS_¬!R}GF}¹G)î~{ÿý}ölntqlˆ´ 6ngovl+ÍÔlÿR`ŠCPfÑô¢t<%‚.¨©t¬"$²«ÕÁÐᎈD˜,éò›H󠠀СAàb„Xb!x¢Ji›$;@B+ö†o°C¯´Õ ”ԉЉ¶)òã5±þ†|{G§ØãÓh›. PfIÊ׃*Áid»mÕœx¶ÀA=lǘ…Úzn¡=ŽTˆÙÇØ¢J¢,Ë[¼æD¶®™Ý…`lG†ç’ʾ¤6áHôƒÆ™)į\«"Ÿj…(”F9»ÑV@ÁýºÇì§«>ÍÛÚ/ÖI\âOõtÒ(ÚºLêÇ®‰aFH &mß´±c.šÇÀäÓoq7¸¦½€˜P‘$YL®vÈÃEUBpDq(<°#0öŽ ÂC˜èI ºnÄÌZD ô®£ˆ’$GÖ ‚6&Äc»–´±Î*¬û â$ÀvÃ.I -³ 曑c¨Â¬Ó>£f µ"òƒE‰i5\â½ðM•_àš{WYK‹;‘ÃI ©‘:M X¸g’ÓbcUÎÁZÊÉêp“6Ö4 •šneÌÕÝYñ\áó€*Æ9qâ´—™‘üØôœçZFw…œH;õX®•aNçJ^±Âβñ:I#I!ä?7|à?„« g`b Ud¹ÀÒü®3×Ìs*˜ù†Lè±ÝÜXŠ„CC“èšÐòxÀœ8‚CR"g–ꊷÂ…vèë2Ø9¥ï¢ÒÏÕõø»©~ÆW8©-TúB*}e¾‚Ywv›f¶N옴§~¦HÁĆ¥ ˆ£'ÄÍô $bº# Ñ8€àçÈÉRjì7#†8+IˆxX|A¤‹TOÈ:f™#Øêg1¹/™’í]/H˜G€væmÔ4!7t)Ф;P’u‘ñ†S(´ÈPIüCeë³ ª˜D>PéÿˆĬ…³ÐGµa‚_½u)² P’eÌH ¡8ÌR æ(H .ö­eÛÈÊnÁPÕ2‡ˆÖ~æDÌ‘ÃsqŒäSú±¨Ù DAói„öÚ¤©])f‘ êÄ£EâThÆ•¬M'¡‚1ÓÅüçBRz’- à5úPЍ%£0m7s²µô¥œèY;u¥F°§¢T”XT71²!Ãç1-áš&ötL‚j%žO®…4›æ‚níÙa1ku ÍÀT‘1O¡t‹Â“b Šû†xÎ*Gá» úëËúY@¥¶|ÛEnñh's߀vV•zëT¨ Ïlf®kîkßkÂïµNÜS¹®Â‚#‘‚wÏß#¨(F8r:H8 rxP8!6H"X¦ræáÈXôz3cxGJ”³#rÃÂò‰ý)¦YŠRj­I³Li¦Hu@¶6ÙÞž¢"R{1 Œ:ÎúÍ_!(¥óÀfQž"£1boyñÝ[¤ j}I•Þc‹­Û°³!(†ê5’ïD)U°U0ÉÂDe8Á>½àTN°§¢x %/{9¦!Äì`©c¤¶½9žÝ¶è–:(É 3°ËÓAW¢òV /°P–åkVÐbMc`Ê%¥ÎEªTC.nm­Û ]Ó­¤&ÀçíÓæû’tliÑLÎðü΂ýªuw‰ŸÉ }ž&LÜR_¢ÚæJkWæviÚè‰Ä¾J‚NÂjÉðÀ9‹å§‰¾€ 4ã+*c,Ò!úC„Ž˜sjhÔñ™ÔÀ#ÃÓf»Uq(<°ky@Ò uæ^ýji¤V˜ëõ+D„¶ýø3£}'6þþÞß¼»:Àÿ‹Ûy-¨©$2ˆ¾eˆÈÄÝP" ႱÉ÷Ñ®…Hƒ‘„`eÈ%]ÁŸºˆ¸þäEDtK„ÐF8ãXÆ¢iäIŠ”nj¾MçP&$fG3ç;ƒÜš‰EÒ*2óŽfŽ©’ ãd,¦X›øï·x†ºšñ`¸†WÓÃÈ0ÔPûÒ¢ ×Á sŸªæ$gˆEÂ-“ÃÈ{‹¨5ØÞö¢¸o³?*¼fÊaôÖtKvEkš¢WeÞ䙑Ê’¬ŽúÔ¤‰‚T$Aú 6Öl?¥\4t‘ À mÒœâÞÒ_‚4Z%ÊŸ vDˆ¬`§IPrß#†ˆ ÛÚ&°#ÍõÒ²ëR‹Ø÷ºÕ̳|-Ñ18ÈGrç¾6=GŽß$µAK ¸ÕYƒ:F¬½Äæ‘^4Êè)y_ôt²zÊ7ˆfÅkáÂ»Ž”æfå¾~EA›¨ôµUz²HÛ«2Á¯~§h\}éwÚÆMÐì°›P±-PR¡!>üŠ=>ǃø‚%ǩ݊.¦JáI—†=Ç3ç"–Qª"‚mÄËÈ,‘ÙÍÔÆÙ«Ã¤Ñ;:%þêMþˆï"ây CG€‘q>à“èg5Ð!"§.ÁþjDbeM+M,5.î%oËÎ]cΓIؘõžþ)ù†K(žš¤!®D[\—¦ ^t·ˆÂiúIÏä¥M½ w§L>àg?ë¾àOšƒvýƾü§_¼ø«E¿þM*Ù¢¾ð@áíé}ÈëëôC½ú¦*~Ù¾_A§œ½y|ó~­ñ#FøŒ±„1‚½Ñ œ#Ý!®˜2=¼i–Ã…ªrÐw¨rXqx €IQÖ‘ßáRN’Á*@‚H­ŒÃLv"LÑÂÔ)":Jr–åléAf`u[~UPŠu’nù4°NA #, Xµôü€ð™là$T Ñ´VqŠf hB<¶ÓlÀ ™6OÌÍ"š¢+>0Œ¾!4qkˆQqªL 'ƒ"²‡+\o[üÈ–D^Â*V´‘J. äHL™€åóg¼ðs·rØÿôT°1°¦Ž3z&:!:Bô@b ®!ƒþZ²)©ÝÇ't˧g¶¯â=æù T)ƒÂJ…ÿ’€S¶>ü]ì%ÜJIdˆìÁ¿4÷r§ÅÔÇfØ|τ‰I^Lªrñ1sÿ¢Uª4_+o!i¦šw,SJÏŠé!õj¡-ý²Yo%ßýùÏÖÝÝ÷7M¾ÛÓ;Ð×ÓÿÊ+ëönk)—ׇŠ×Â…^[(fÔk§UoVjîË&î©oÉhзBF( M§ÆŒyôp`¶":·„‡7‚Œ€Îþ‡è>Å› 0+W!ìÈІøø–\ >@)mh£l8ÐE$ŠŒÎJFdŠ$8i¢¤“ñ Ã"OIHœ²kw1pôÇlZ × Ã¥ƒ¯»Ö³¹rAì»J;Á 1û-ô6ŠûñœPÃ^ð5uN%+3ˆ˜Îä‰ñàl&<-s6ˆ¢mÉO@¬˜XóP+ð2&”¤$0É%*É+=á–ahlÀŠùx’±¤ÆEê‘heîíb„¥¡¨§γƒé³B]E3à +<[Q7ùûÓIœ»;,¡‡SÏ<[/s¢“s]ÈO—XCR¢³¹pV$Õ¼¶.NqSD×0œ˜Kh¢êy,ƒžöjÂà§OY‚EŒ,LõHŒ™¦…ȇ<_vD¾ÛÝ=ýü þÛEø?>sȧ?sÈïüÞ~uõ]¿þÍo6v·ô郿EÇãÿtļÓý÷OnQÃ1‰½ìô#.{²ŠäÉ/Ì»äúçUP9³}Q¹Kz`õõçÅX:ýˆónn,6c ™µš<û¹i\eYÐoBn•NÃù¥îæÔ)Võôš¦Mœð¶–ñ{¥ß´Wœäv“L1'ƒD8‡"I¤O*Wu°!9áH¡› £KBðT¹ªjÈ_¢2x:òÅí9¨ÊðMx@€e4‘¢xø×I[©Ðé£1KfÑ$Þh¡Ôl¤RüìRÁU([©±²>î°šs~D^§+Ô2'©Ê  ŸÄÙ„$‡Bf ´2¯xuòËa¨@`âèBû6p‘Æêy2æ ©UPÙ÷A¨žòêjª`r®“Éèîa7›*B-ºÇ­ ö†ˆ4³ÀNF…ûŽ`1œ†\Ù$mgâJ‰UULO’ñ±8L§24ôþjóWÃ@gærÀ‘¿ü3?$K¬E”Ö,^/Þˆ—ü௸ãnÑðGküv&yLP<|Œ¼QèÎ÷®ø8˜XЈb P®“ÒI¤%åÄžÁù@Q‹ùœ›ð’<àÏKE-×z MëCKé(GÍ|W÷w{»{_~ùÕºqY¶þÕ u xµŠ¹þ2ûÛûn~§*Ÿ¿ýúdzw^‹lKËž¿ýË|OvóõÏzö”-m\ÐïšÐX:÷ÛŸ½ù‘BNS^Þ<ýÚ˶xlæÈœrʵ÷b=ù…¿|ø=Ÿ½ùÏ‘¾B7“ÿ–tE¿H6©){Ûž{´Là±?`ŽèäH¡;™ÒÖÈR½ÜÙaÊ˯À±„Fy˜/ÔP•|Ôä‰XÜ_‹Ô@µH$D† :Uô¤%w¾Èô"3 øá–©â³"ê¹"¿B£’‚öˆG„;Z,=µˆÖ¥?…F•J‡nñ }Eeƒ‰Œ¸#Õ4±Ëh‰$Qúa–”²ÓTWÔ BŒ¡Ø*â3[…ŒÞü5EÏYý¤ŠI6%æmrhÊl;×Ηq’Jê ‘¸‰»;[8füÜjúþnøÄÂÝ*ú%Þb¡Á 'ʤk<6…#¡´ÐʘÊ%_†³ñ”tŒÛ±ásÁ¥Øâ>$;µr^q–)Ó…F5pbBgGÇ¿»Ë#+Öse¦3+ 9œ…Â1„`8§¸*J&3óR)Ì(gët¾ `gÚBÕù&8Dð >\©0zØ,¡`xAd+ìq/(á£1¡wäýÝ—_íùØÇŸ^Ùõý7MúÝ·Lž¼öÅÿ%èííݘ ©¼yÔ>ž_õlçä)A0ù”³'GצÝüÒç{,›û§ïÏþþ³­>ûŒöÁ†Ñ¯º®œl>Ó‚r§öÀêë¿ðíÎKoþó·çC¨z8ÖÝ£•ËÒÑFæM²éÓ5Ö*£},ÊÑùoƒ“ëJûOlÞoâ8}o³óbH zOú)ž9žóÁ'‰X¢VÇÃdW*”9`Á6`†ø’ß9”$—œ ‡µXŠU`L Ì`h@c8øMQ”H¤e[•c ªPñu cÆ1p$f z—rù}AÇDU£fUÎÁš*‡ä¨5®Eà4wÉ Æ¢*Y„aQÔ,µ|X;#OÚ§ŒÀ°thu –iœ[@8Ñ‚±Â€„OôbßFd3EmÂ(긱ðˆ Ó)gÈH,)€·¾·”AMŽêIË@q5!ÈÚ0uMÂña’CËÁµçp„±Æ½˜¬´÷qî.FTL<™ŒX›‡dó²Ö>Mf ƒ½©¹vV¹w"ÐæÚiò•>Rá >0²‰ É:UÉV·ÆüŸ›Ð5ßãÞþ`ØFßš]ü_ _˰pŸÕ>z6ôöö½üòËQ-ÜýÍKÖmÜØ>ùm}}^]¯|·wÆn×n_³ôðÃÞ³ôÛŸ½iuuå£_:ýˆü÷%­¯¾þüÓ¿ðx^¯5ºó½¨¤!hN¹L½úч²ãoŸzø;²‡ž„¸8v{<ÿäýKsô‰¶) Yü@KÊadlX èõfF^=¤ˆó„PQ`{É °:k ÛÜ’™„]…ä„ƈp P ÄsäÑš¶ì°†›Ÿg è’š¦-Z Óà¥#\iu°í`é0Q*Û”°ÀS³œ´ä;ÕKPâ u\‰XyÚå!Ã8­ v²Q'1½ñl+_àÖY¨çþ ·:•εÁE”ßh•—è’S>6ªtgJ?¦[å¤4˜Xš—;/äs…Êž@ D.àÜ~ rÎ4‹ *¾²{L0Ê¡MUÝ=}kÖ¬Q=¸»nËk7ü×+¯´´Nîïï‹¥f%½}}#²^„ö7çÏï½ü¸‡þT@û…ÇÍ;/¾é‘{õwÉ{¾¯ãýÏþÀ‘ß{TLí£>üžœlÃ*Œö1š>Eù.ëÎö)ûU£ë’÷dÓÏÓP¹xŽû}ÅÒ©äÞ ¸Á1| #G&Í¿úoå¿dÔùìµ·=êO•AAמqòP¡n’ÿ6zÞð„}νÕ4´Sô N}¶U Ï{DÞUE|%²*ðáçæ[ ‚a"¢IWóJ¢¢(ääÁEï¤!Ž:–,ÐßA˜ö‘‡ˆ("Žt´Í:rŽV ”AnªkÏ÷'D#¦é¡;Õê4@"áo„pCS’D˜ h‹ˆé9€Êôæ¥Dk­+ÀÊØb<ÔáC§k )bìŽH/ö,hG æS;»<  HÄ ±€ŠààÁ@ÂêIg¥.(õJ"LgÓ4‘é2uh8‡Î@qø„ˆ÷=+eÇ¢„xRH-UˆÇ¶GGŒ›¤:…îiìã#¸BÅu0Ä8þ!KÒ.çFC uj€nf^¸ðà‘|&“´æ%­Áhèu *œmƒ´•Ø$—V94mpKû„êByNÒl djÂ@-)¬Œ)C8¾É]Fn›È4’ÂäDÂj7sžäkÄ[ðX÷z7v÷mìî.—º?8ÿÉu6þòÕW„»ãë_ÝИç»ÝÝý=Yïð¬7ÌF»ÚGûYWÞtÖó·ÏŸÆ.½é“J\¿âÈK6íôÒLùÇ¥Oüèâ9ïÌ>¼üì?º8+?¿ji¶â{óÏøj0<þ°r6¸ªüÜãgs?®;¼*|ÇÜì7.<+…Ýp+mìßâØ½<°tõsYVóÎ~UwO?öðöJ×SÎÀ»þÙðÄ Œº÷Ä ¤dÄÈÔ€üä) -Éìæ•Ïgï°¼ ÿêq•ηŒÿ6õˆ·\¦º>Íé”;¶:"Ès®XH<#L¨Ò ’*Ô B¸ä·Ætî¬HA³\R8ÀJH„M<  €¨ÙQL¬~)1#ÔØîZ·ËʽGøº,8Uì‘F‘4Aù“ŸrBZØæ(!p‹¦Y?ý zî‘JM'4ª&dƒr m„X5Œt'ÀÛlì=»ÅxÍQeɈAY} 7µQ.,u3Ï@m¨bÍY:ëBÕt—Ù厖‰ ÜÔ|8¡IXceò®ÇË& NPK/ŠÒvݘ:PæíܦÃ0´É 5s+ó¥fn®¡‘u­Hø\¦àæ€XÒ{C¥(½Dâ§£Ãbc–?¢B2Ì®@Q½z/™lÑkò·Ý*Œ*[C ÒÍL’ÝŸá›6ÚáWȃMøÎÒC{Z˜GT¨l6æ$–žà†4w ³ Idæˆlë¿F’7N@âîÀ¦Ç¡FŒ ½|uFÏ­û¯ÿêúîõë'¼²~ïõë7¾òêzm­êÞУ×þZ[ü:唿8÷ñ<ºð““WÍ¿4û½7½“¥æ0Ÿ9tîÍuÓê)ÙÍKç~|jb}äs—ji ¿}íŠg³ ¼¶RøÄ£ÀvqìÖ˜rè±>òø[¼MoÊ)×Ü«}Rl·O½²’ Wùª22‡¯fož?·€äå›Ç¶&•"É+ü¹æs®—ˆ)\ñGDˆˆ1)Hê,èR0¨`/ûS ™fTÖøšÐh­JÕ˜#¼!·›³#à$¶0ˆó&Öݾ—˜4Oà«R§¸m|»Á[Å࣢˜ XäØ;œõ9îzžš¼ï„wÿ÷÷vÌhÿì翺a}oÿÆþîÿŽ[z>yå g­Ž¿äaõ”ÿváN¸>ë<ò=9;å4Ù…W͸䓩`Î'¯9{þü<µUÃ|IY7ƒß:÷ò©ƒj´¿sîô«”Lo]ʲ¥æô¯£¿àákÚuÛ" 'ÍÀ®”6sŽ8þ²?ŸÆU ’1”k?ûÊ †T×™/ŒÑ~hUµÐÈe7‡ÿf³è@0Šü—8꜇ù¸9¥3OÊsùëú‚¡…½.¢R£´~ˤßq+«ã‘Â'9xé˜çɽSʈ¢V°qÓX¯sˆ•l½Š+Ñ^¬¨J:û®#‘9 s´7›o)bk”ëLy$tš¢2Ç5 뉦Š%!hR˜ '[¡™Ã6«”l4f9ÔJƒ ¡=Æ*H!2&P¯ UÅ>:àÛlè ÎgÍÔáÝc`2'Ø*«tcð¶öÁ=Y ±ÝÞ¾à 2ƒSªuoðßè–EµJü,@çhÌYÞ…œ†O¢C‘kÿ§·H”mŽûŸZ:¿($HOí'´´tù.9ÃJXºªŠU^ÃWÎ-fÞè¶¼¤©‹Ê˜|g-è1Œµwá+h†õ£‰1 tEKÞ¬%Ž¢‹=Y!WõJ¼Y¹ïhK=“-J=×J‹=žþj«ååqóF¤µ¬?èßÕ×ß}âñ‡™ïðã¯þò'oiŸôÄþrÝ/¯z×a³Ï<ãôÏ-ýÊ—þ1+™müÏ[î¸dxƒüú•õ=£Uå… l<øèS~ýìäö)¼õ€ööö½öš¨ß-"Ìb"Äy²L¤ÈB¸Içä€ "…B%g!D îPP¦T›1(X„Á”3ës“L,"Ô¥Ò\@R#â^?µª¥¶ÚÜxß0hÍ’"JÁ+°/d¤…¼ˆ—¢ >ÌÂÆŠU^pûŠü8ѫʬºã.o1KHöcR`hb*Üi3 HJÔè$—FîƒtO‹|Ó’#½å>­r]ERÒ6§ê Ë芣sí]DÏn†[?š 4ê:‹±-‰0ælF޼Gƒ¥»ž?WýÅanµõnÆäì…?ñ”lR‚ú„ˆ68øª´ºM•Ê^±±×<¼âlŠA?è5Ï ¡áb—nÅÊ¿ÇhL"m GsŸ€né—9ú¥ñ)V•qh_äÞå4úÎnçq’\‡.U»±îõ¾ç½í·ÞôŸ{u÷ŸxæüdÃgÝ×ÝóJ©N½¿kE‹£ð@áíâbW—+œûšmË K ·žqû] êB´ª"åÈÉ=/(ãqÊ<FürP‰ìF4Ž\,H¡Ž5Gîó¢‰Zæ/)yŒÛ ,Ñ]ŒŒÓj¬F É6PÑá?R8­u§= }OÐæGÌŽI‡é"*µñ•Ž€·`ïè×^©2ˆ¢6Ï¡p*†C2hà »Ô4«˜´PifêÔ'¼¥'?1‹qj¢5äS¡Aj’'7,aê‰W¼¤JWþY¬í“'í ®ô$ƒ®r/9B[î]ýW3kï$_~p¯Á×÷“Egæ¶” [M ‰ªŸ{1Ü'Qh¸„¯à>d4˜“*ÃGÑ·Z‘Á)^‡0úÁ-ÝWGA·±ÂÉ.ʦ_Ñ)@»ï»"=î{rÒ¥UÎyØ}“Í šΖ-Î0If0;ð‚>±sôf‡yj0ôΞ3iöœw *_œ(<°3y€O;‰ª>͵ztãsk}i MälyàM‘—0@ØŒ‘!_ tü"¸8¨…#ºÆâ1(…EßâÒÚ¢sX¢Ÿƒ›ø8Š…^±!Æ…‘A , ÄÂ! %5E1Ø¥ÀJ\u8…W´ ÖÌ1¨±ع¬JJ%ù¼GbpðUE9®œäèUÓ2s-Ä(²:¶âÃÁIeÄrÌF«›d&D¸éÒ¨öÝgc<)tGé4¹ ?A(ð©#$ÀÜ$Ëý"2Ì ýü¬d¸( ƒ¤*”ZÎg-‹f“Ä%;-`‡3¿i•ÖÚ¾cíÁËòaFô•'@´ç†Îð‹WSœ"ò/†cô>ŲÊf$÷b ý-9IE,fÝÁðUQ-»'´÷ì1¹ÀM£T.`š% û†i"iÞöþÀ·îÚ˜ÈÄýUzÅÚàft3>ÑâL¸)æô“7½…zø4—s |cc‹£ð@á]Ó==P¼§ß„E’ øœHèL•"8 !L¨ŒXªšÖ Ä!EM!% ˜Љ(¤™ÚðBrpËá?â£xÁÎÞ•zá@y´ƒ+mn‰gÁšˆj há°¦èÇó¾I>SŽx%œr–,V3]‰r¥8ùþ¤¤‡@”FPp Zâm®Nˆ¸Äâ‰{Å#ìG¨hÚûš[˜‹%âfC¬ßN4XOXŽ6—D°kJ5 £–ÄΔ¸.q–" cRÇØCrgÁ ?°M: +žˆ‘ñvŠÊp}lï¡–êtæŽ ÙàRŒ5»Úfà¼cuáû‘)(ä7¨®~·ÆXȵuqZý@e†7¼T잣ŒžjäéRÌPàÈ%‰9†ã6)êKT8ŠqƒÕ¡dÜò¼¸'÷Úì|†V5a¢'ï6É`4ãS‰ ãWTÃöð ­‡ÓvbÜ pßT¡ô\¸µÑ*ÖSg‰ˆFh†’¡n”Jx³™:SÁ]ê}••o°ïA[¼a 5ô\‹ÒªsU%„ÆqP  Ô1$N,삱“LëF‡¬;ã˜Ý6·9z§ U¼¶™,h2ò ލ þôµBƒXHûXØÅ?ÜǨ ­3éf¨Yw`𑪼Ʉâ ýêáÐñ†=¨Ãh™5@S93 abšXƒAª Á…±¢1W 6î:ƒá8pK­Pxf`1RRÅf>ØŸ=|Ìô4Í!E: è”"¢˜GÐ4®ùìb<°-+§2é£ÙÀØž*"0®$ˆt¨¨ ÝéEØ¡@Tð|–Ót/:+à?~ôZCŽS Á†Ýuú;ØwpGBª›Té“” šº3ê`Ô¦48b=–°7£>‰d¹oãžN©‚!4o(…ýÛ#TªWCøªšÌ’^~hŸzkôÌÀ¹$òƒÿ0#1A¤€î¸–9,êF¹„A޴ɧމ¬±8YãÀIŒU¡ ¡ã@µäW‰²M¥ÆÇŠ"¤É•$Þp±IéaICÆu7Ì‘îkÕá†"Ë(ÔI€Š’ˆ.tF¼s‡È¸˜_ö6ÑJ@T@~ù0)SL¿Á*Ñ¥âS°Q]µ;aüŒ1‘'¨á=B½!«DÐþaŽE2ù8ª°16Š ‘#Ï.ib‰YáÛE*2 QL…zѵÙ ©ë¡óý3)è#‹iO6a@+¨w =ç%ÓvLªg¥VºVÇ~„zªÁ}µÃ»Ð¨*À!JŠìŽ2 Ãn«±… c=þñ˜;aÕŠ:J`OgôUl{]†Eº—ÕÐëso‡ Ôéþ Ü`{Rö®;`D¨J=°©•zOܨ &ŽtuWÊ BÂt£ûD B¢;E3SƸI‰úx£n˜È¥ ¬ãÃÅRªã'V ¶3cJCç@A (BÒdy#}ÔÑ·GþSˆHŠ rÀg†9 1n´N;èŽQ=Á 3‡tWDbRbˆ›U•7<¬@ÿy‡rÙ ¼…g;¡@ÙS©ãiŒ–´pcLáR|dÅÍØ2£Á°p#}µ™j#T5È%Qâ_Ï®tHİG˜ð¥ IêÕù•wa ÜÀîƒ>õªÇម>áÆÆ]õgôÁçþ€:êÂXº"µQצŒèýªê¶ô­Q¿ëÔW z 7c‡ :"l@uNvŒBwHBÔÎý3wýÜŠ*ìLy㵜T ùçÀ"4à0EV¸ïæd@-ì[Tìº †Œ*zCÛÜ£R$΄ad £¿7Ø4âfS*ƒ ²GŸ{n}è±ñÁröáì«?$Ž=…¨ ÌJ€«™Ý.51de‹Æf[uðYÃBt‡v91‘ê!7lY½aLŠQe—ÁP(Cþ¹@**\ª§x'ìÿó %aÃ’,H.°¥ Z²ì4Og&¡ È1 ÔT¦Ù,j¢rIm|£M,"`æ‰Ç>ƒ²ˆ”€)äl5(÷zÇ-wÓ¿×Ò[›]s÷ÕÍ=ŠV°áЧ¯n:àb#îŠ!ýÚ7¨ Y]ÉŠ0¤m|€ì‰aÀo¸«€®„ú?ülÝVpïUÔ»S²ÊÞ—(9nÄž { êE°ç 5RÇŽ‹;>eÂ$ˆEî¦ eR§:|ÇV6Ç0Ø$¶b©€"Nê_ÙºFäÔ9H2Æ!YeÓX¥´tmê›±gDìh”»HÃ8¥SÆÆ89ZLá3v²Š’l^94p+8zµÒÄ]Å"µ(zòÂ}.S ÓMA¼S&vuB±žHT1HJ¨FI›ÈTàôêG‡"ôÇŽñcÙ$BÈëÍ®w6MDMð¶Ð{ ^,b¹ 3À逯ùLê½T_É‘¾G oªÁÞˆú;Uot3QÝïx$×/|‚uT/C½Hœ›jâž;3ê|üÃwÂB*b6ÄwÆÃf¥IGuiìCC˦HÐ%÷§(ÏNÚá.]ipG­ï(™r–icp„™úODÎÈjÌ I³¶Ê¼£Kh¢bAáÇ)c“['K:EŒ)3<1ÎÃDIÚ¨®p Ž ÄˆA=Õ ç/Ê!¤LV£QÂIœ~8“¢/Ý!ã6\SÂ$X(„oú1ä3‚Q*e†CáêÞøð«È ÂøÌ À|8'Ó©¤ÅX3ÇÇš|F𠉚¤C6)Xƒ"YdņŠÔˆPÀD¨’‡7>i´l€0– pÝöÔ©áG›º7ÚÁO<êI@Ä}Š^K].ª8;j2‚J8J¡þÍÑ»²„ee•³„ÞŽÆ@5Mb$©dÉwê:Pxg-¨W‘~ Ï —­¢Þ7R‘`rB»PP± Ýcoí’Mp}³ 'F=k£ËIåVW /%‰ëa+- š\¢†¢#Ar¬3ˆŒ[nA£Jq“>É£¡Äàa‡B#E2E½¾™B”"muèÉj+)RÁfÆÊöQ‡cEê0² Ê#„ŽlÑâ 3P `¼‹¾ñOCˈ“ÄYJÈêëèéô#ߨD­JMísÊé$ÁxC\:2r1Rغ-Âĸñ?Ù¢̼T8•jRå õ C¤ä‡,eÚQ±Ð~TåŒz‘¾î\¶øp3š>°nÁŽø~⿉Ük’šY¬iÎ)â¢Ì˰6}š—ZsíÐBemÙ«;›÷¸ãš“}»¢ÓTÊÕíÑŒ‡ÅºG0~yñâÛѦîF±VHºmçÌ6z×ÔŒºÆÝ$©Îî&èìú0ÕMªn…ߨËçžúÕ¡CÕ+P7Bý–û5ºêN¹QbJO¦n[Ùa“$¬:I£¬:?UªÜ3q!+zÁq)8ñq'ˆ*† Œ˜A+»l˜zEÆ„›xv…œÞŒP@o”ñ+l"ƒìmSšÀþ]c™r A%åŸD°JU]#~e™c'÷´™«±–¬ãÚQrFì&W¨‹»d@wÉò”huôΨ')rº3§QÂÇY[l•  U–PrÊ 3b´*žXÇ|—.g¢ÁŪ«—S å( AO †Rßד ×AA¥dS@CQg¨*³ÓÉ„÷J™p†tûêNDƒ™¯í€%ÿÎ:Ôr­võ_Óâ´\M+ܹ#¹ß_ïŽÃ¤õñÎ$¸Ÿš»iYfì5w÷k®iX¹xgßd-,‰rÇ_áö­ïs¼`jÓw÷ƒ{´Ö­ØVج= Ñ=BúÿôÕ’+È&–äf“€Ó‰ÿÍ3Û;Û ¹ú¯šæ¼ lu¨›ÍNRŠTà# /بS1zã#®:HswOU(kîòÙ‚Æó̙݇á´3l0ó<ð±õF½µP¯NÍ{µê|éEÔ¤PWÃ^\:ÔbÇ‹¢ô6ÕwaAhT*¨¬Å*\¦¬aô‡l‡bSº]ÕbÎ1¤Å¾@ZǃU´kàq"„JåUu߆g%ÎhXUeEH:3¤:::lÝžÕ˜³mÂÛž;)sœÊ£f„ºI¢ªT§¯£×=ë6Q\ÇnvEe‡tQë ‹Œ’° (; %,’¾óÜS§+£&ÊrJ^ž (‹Êœ–nšì{Üti×ȰÍÑ»N9ä9~²§âRõ,ÌŽÔçÔ4.6pîñº„l@æÃûDW¥¤^·{½)W_³Á¿×aãèàfðŸ!kZ|ÚåÍ3ãP·¨DK¹¼95•¸¾©AÓ$?3Y˜*<¤r¿¦5O&£ºÇæÉÍ>-Še›XÎ*)&ï¤ &i¸b€­A[U¥¿Ù¸ó°›AÙtèã¬>íØ™è Ý?uvÐû=…êÑá£ot‰®]·'v—þ£;7ã6ç®LûöpÑôÅßê©­sjÅΈóÑ!dêËôÍÙù*%lp `3î™Åt Œqpצ«êÑ“Ô$m}|nTP3ÛPrøÆðHñ»&ކÑ8!‘!BM—ä˨c1ç¾j0Þ¨ÝÍ–?Ö“YØø°ª¢ˆÄÔw^†P†äDbØ1¤Ý½£]>C\ àd¯ƒŠ™‘°GÝ7ê0Kˆ…½‘#§ê¡1lݪŽ&Mׄ…#R]?UPÞõH˜ã ÐI¤nB¡N>C–+u fPv¦S%¦*‡l_‹˜<•5»¡ŽJWµ&Æ =ÀU)©×-b/»…%w›y8·&žg6t9kúhÊ ÆÁ8^‡ëÍlgÅÍˆÔ þ3Àý’© ž‹º@îªTAOÊÜÈÿQÂY‚"ö)¸®Š6ï®_ø¸ê¿”(õ+fÛzwY³¸ÿ–üª$)hBYSÚGÃÊ%{1W`¥QzÇ7êÁpÏèÅY^I° ÞêáÍ×-ÐZT½+ÕãH=¹ ²D¶9(§&I+3:=¡`›ÑÌŽ”WÕbn7U˜ ,)à?§cå½svI£FY§|€ôaÎUQê‰Ät=ãTTá!¢ x´ÐµáŽ‚2ÇžŒÿ†'QO‘(Àš.þU¤F†Ô¯ûtêÀ€o]MÇêäÄ9ÎwbQú?ï0pÝ“ó°½Î+Ã3FNõXC()UVÎH^Ef¦LZÙtgÙT:ß « IDATêܦª(ʪ°Ì*w¦®Ú§Æ—Ž ¤Û·Eû¥4mãÎøX-÷ð £(ó›Tyn™úf›~{ØW#H†bqQ1Úd´s6î`n|ñNLã$¹[Á¢.€7¸ß@ ê(0ÕéeUÅÚܧ¨>‘»TÕ÷î±YÔå?÷æ ÇýQà‹~``eл&¨ |QKЛ¹?C)‚l`F³ð"hÜ;Ó)á?jàwµC.Œ”DE2klFS ·Pö£¬‡È/K(ì}‘Eçæì~]*M;.âäÊ0†ö¨†“׳Œƒ‚#&X†ûºQFªäT%; Î#‰V)Ù°,ÿ×wLïäIoˆâ]l–1Ô„o *HQ%H1ý?5,šC8XKGV߸BW¦Fn‚åßæìîÔU~ÑÿÊàsv$s’ÕqB¯ Û2!t"%ÏŒÞ8:JU¡ŸT|J£¼ql•k2G–*eÔkÜë…uL½šZ÷V›i b¯È‚…T±`z·AlÉÇ þÙQŸ…N¹z@ÑŠe¯.øêp¾º…`Ú ¯ÛäÓ2+6µxÁvÒ¦…Q>lVHºRóÔ¶;¯øw¦ŸÒL}Ç× !÷׈DDà±…êä°»Á>;Ó¬ sÿEÔñÛa5*“&Û0‰Q-›Á7**ƒÜ_“5½ÈmœÝØúï¬Ò»q£†ó©.ͶÙ!üÇa4@0ÁD°«âÐ󗂤BÓÅ Ä3ê¹ÌÆ£=U6sCNôˆTÐ̬¦>$]²î‘Â¦Ž‹I‡ù2ß/U¢&$Å„†]€s‚% Ó‘äø”¼a•”²äF®ÇÞ€ê.'ÓÉaè¡*ØÊàÝÝYàïrüȉ÷`_¹d‹lÛˆýS€ÕúIGeþÇ,:-CUÓáØ8çíÕý{tf£úêçÿUÀTîçÿΪø/þV‘V!U$Ñ­ |úå¶_Nä$&&¶hÙ"Ñ‘X¿~ýèèh꜅ëž}ÔJšßL½2õŸª#14ÍJCuXê~°aŠ¡¸Ù)û9ã©=óÉdb£½;ZF­Öm»Ça«B&{î‘Àþê¹Y7lu±•vã¥[ûÕå*Rp×ZeUééÖ”Šå#ýbkÊu$®{0¥»“£Æœ§ÛBH`ß Åä lÀ¦§ ¶iFn.ƒñc—Mnžà¦c2˜òv|²ø¶'Z§;¨ž (3æÄÌ$Y®«²r£^ã/£Ä­œÒõÁˆKÂ3c2ùpÝ,ò:`lÐÿ¸ŽºÖÙ ,á’®u£: V3%Mãó¹|Ô U…Ôåú…D‰&gAõ‚ƒsÞX·"ÎÙµ'Å*ÉT©8Ô˜ã¦krƒ×={f”4¿éWï§<ê´¤tÍJÃjÕdÊÅ8HÍï8õX»±©eHíh~F¶–ÎeصZ7Œ[˜ÜmîB¦ýB•r+=hê;*µlìêÙHob Òu7è]ʼnŠêÀ#"}pf¦ËAÔb^€ìhƒÇ݃ ª© íÛù0k»GmQšÃ±u6g]Òaa¥bFÊ$¹Ú‚Cüš¶rvj_P¤ãÛ·‹9-¹á3ùpÝÚà%Y¦ÿé5Ö:3º)–R{6öݬÒatÝzP#L¦6§ª³2H©—9ÿ€0  œÎ˜‡yw®‘k;ÜŒö +ÍLŒiÉaÈñõ|8ƒ“z+4dM¹j8=£BF†f°«ÃVV8W%a@(Ÿc<ä"zrÏBÏN-›ÜhÇìÝG¹¹tbA\TŽË\^°J©X+A½ø¶É©$©M^yšóîÛ.ÅšÙЭ7œ;;i$Îâ syyæ]íÁx Î €f³Ñ{ÒÈ­Çœá¬ÔÞ¢pæÍκ]kn ÍpQ:qjVÔX|ʆJ¿ ÙòC“ü³SßÒŠ»È®=QäɵՋL]z[öw:xÆïv€ ²tG0Ðzë qó²O²òªìâ‘78Zb¼žä«IÞ…x%õzùDI“0 ”¼Ò«½£¥;´¸A<nì˜Ú±ôÛc,óB_Ê”0ÒJ÷¨|l©Du=WÍ.Î,øEãáµ§ÕOVæ`<«Y€, à0w:LiûGB^ápbnkO‹³\B3\ÐU‚ºn€q§'~l!Ùñ“ØèïDoË4”lZ ztmñâ¢Z7ýq¾Š¢K[~4[‹éºêäû„Ó»¼c˜VgÂ9LÉØÂ€0<Çß–øÝû¸î&à>Œyf²|”×OÜ‹ƒî:Îæ¥F0ï}À‹Z¥5ÁŒn°6v¼Õ¿øÙ'çâ±+?šæRø ÿÞÿØí+O·ÔŽíèÐ\Ý$ö&_iœÖq(Rï‘#tËE6a@¨0Mš$VØFe¨›~C\Ôì,ÍXi+`9Ò;Ä´ÓŽ©”|4òÖ¸©¸ðØç­1ªÃ'½üEãÙï­×Ž_väœLø¦´õ¹>_L¾Á)a@„ªÈ@ÈSï‘ec¦jO¯~g¼^sÞ*RÀoŸôÃw_xý]ûÂ?×’MCu¤"ØÏ³ÓžŒàè%ta ‚yêÍÏÏIq4a†› ¢¯æ/zöí“ßyÐp:×t2I¨d`Þk³î7ú×_å‰4$RÔ…ªÎ@pîõzYgÕ¹SŸ©Ï?õnÇ×;œÜÀtìÛü“&}žà¹õ¹¾KšÎ~v(fi£ŒízmõÇMŸ^uoW-Ñ}é³sÑŒÒrÚéFúvdëúÜnÃ;Ûý°'×#šÎž¿ô[ŽÈxmðÑçú>¿vÆÜ:ûúIÒ56È/à…›„kV­ˆÒ¢Fß=¾Íåm…a@¨® „|Ô«u|pUF÷ÏÒ¯í{ësjÊwëscßnñÄ;V½³aömûžô~—ôྦ÷oÐóîú?g Ö*=[ýªûl²ó„öú×_/1†Ú.Gғ냳w";Ýræ/û1Oê£%ãéÉ€Ó…êzÂH\Ag`õªŸ65ènÄ0 T¡O½«cèKœe)ûÉß§u»Š§‚› ~ýÁÃÞ~ò+©{g.ó@Öeè vÎ{+$õkŸÜ˜sXý¼§â67ßfÙ“G×Ico¡Û¥SíðaM†_à+ï8‹çða OßÿþÈäðÁ+H…aÀo‚3áì Œ&ñÕ]_n}ð_¤}”qg6”štìžòöç›ïí¢[Ë>¢1aÀÔ´NSþñÏøøî ²/ Õˆz7/Ó¿u“ÿÅg[6m¬5q´Ð6~ΓÏG–½þ1€7Mч¿›·à}V· ³éF—Ye²ã>Ϭ´C‡u[ý¤1Å ƒæe‹À£½kwWÞö+nÁ›ui‹,z÷é÷ú‚Å•˜wËJ”ýrP+\[vrmÙÿŽ—ýï‡È:­0*B>êíâ8 Â,YÂcǃ³oÅX ÷SŸ¥åQ˜,¯}òVLº×wëcCÌZO:Ü7ýÚùØFˬ:’U£áz(¾/KÊ]îÝ0Û¡{Ñ´”ÛÞx jYÅ͵3¼êúç«–Y™$|·`kV*…'3^™ã¼’Ïüß/uá¨è¨¼©¾FTÑGeM&ÊJA–¤J¨0Aù½Þ’åÛ>2b@ðÊÀg›·Ÿ>‘“˜˜Èßë-Þ¤X¥~è\+‹¿N;¿MYíĨ¨Oy]…pg ä£Þp'Lð U‡€{Á fÙ³Îå;rUçp ’jÄ@PR¯LRU£3DB‰$ê¤DQÞ-ƒ gíì„×ÿw¨hŸ¦ÁË×íý§ºû**rÂ@3”ÔÁ|JèÂ@3PVö{Yãû¢~Ù[V¦Ý;ÿ×è(¹Šã£)Ы2AJ½ò‰­Ê]°U+¹Ì*Ÿw¶F ü/8õí9Ð$Ÿüs MT" ¥ÞdRBª QµQ$ß¾ççìñͯ¯&HÂ@…‹A&XÌ €bàä軳¢ç4ñ5»§»>wζȠzùlçh~ç 9õ È Ũ7?ÏÛ“!=“ja@°aÀ‘húÝ›ö U¹ [Í»þŽ€=àˆI;zptvÃ9<´û]óü­'4ÖrVîn5/¿ß㎖åZhìøúUß9„ì~ì2r!›0@B‘zƒÚY 1% ¶)6€3ÉCoh´he~Nr¤?£å F|xlÅQ‡äHhÙJc@&œ+zq, TõÛ2 $äxlíxªw.W 9&7>6låiÖÅvz4¿“š:Î]U¦­š—5:‹Áà¤tÆQ*ƒÌ¼“f§NuZßE¦P~ô¼ÝÑw£TÑ'¥í šœ’åÓO©IìÑY`êà|­tÒ“8OnËŒT çÆ@pF½²ÌûÙ„pe`ðî ¦Œš%OVô›»}F$-½çÀôö­'$üœódñÐ'R¿†šìÜΫN}EÜÛO¾Ö¡¡–]¼Ã¡íØvzBBÝœmÅZ£æ¶œæ¬:6ß÷2Xº£Ñ¥gfÕÕ40{¬ÝèÔ¯a~» ¿ó“»§ÃÔ±g§}újÓÿñÝ¢—žy ti›¥i÷»ÔEËÖ¿T þ1œÔë‘„*Ç€mе¦äsÂÝðµÑÅ5WŸœ0B×.(Ý¡•Î2ëo\Ñ1Nk“ºª4ç±½th߸E«Šrúj+²µ¡#õ¤¨TKÿ¦´â>œeLbÇ mObh6n ßWNpLéxli¦©×ê´ tQ~Ü#ïžSl¢$ øÂ€¤^_Xa@(þµê»1ÙI&£;SL?”rz¨v`EAÌwGãþ6"^[U°¯ h‘·À9feÕ˜UhHêê´@„ô(‹1Ï ”s¯÷ÄÇ̯ ŽÍ;’wøPIq±g›Ò" €wêNÙhǸ“J[BL;­xʪÓ&ºý:h‹æÛÑ!¾¥åÒ¥«K5,û³‘٥٤R?ekÜ@óÊj«Ó„ø¡7fw'Çܳ{:Œ›aÛ½à*‘à§ÁÊ%!))éøñãð¶äädø™”3gάÿäcɾåR'Â@°0?ʪâe@«–né7›†€­/ï­î– nÄÇf‘VÃÙO4Ò>ü®æ=Yøš„[´Óò5˜:æòŽ­¥\ö’ŽÍî˜C6ñ^rJo—­Në>ðXR[Æèl6 #Îi3$pmÄh-Ør"•€-åüh sOœ8QVVv–¶ßÿþ7hÐ >>~ãÆ×v¿..>žÎF—­èT©{•ì Â@@ØôõŽŸç8àG[´lìpÔ¯_?::º‚nybý»´ŠÊ(¸ôTÏbÞ[+ˆ-pê0f-è2¹8ÛbIðrîõB¢íܹó_|qå•W·oßyv7¬ÿdà̓}sdHå~ùÆ'‡Õ^ƒ67nc“»ý4Éâ?^´q?“»Þu}Ós²!JÂ@81À—Ӏظ®®8zÙ±M;k_íªõ:CÝ›P¥¶m+þ·#æÁª³RIçÁf üÔ `°kÆ‘ŸŸß¦M¨Ùµk×9áS·xÇ’5›²û§Æ“¥¢¬Õµ®wÁŒ[”µë ¦%YBÖßV?€ÉÞêAj„0gà–É^3«¦½;µ¢_.ª4† ò»C&þãÿ¸w/ü²X….ãÚµoºc[^Qj\ž%E%qñõù˜Æ§l$-'‰0I iµÜ–¬$86¿âû#$Ã2D. øza –Y¹ƒ+íá¯}yÌ$]7´[ ` ûaV‰¦Å¶KÝq@VõJ÷Y夿M7~òÕŽæ}Ú5p‚qnžÇݾ¶ ]h¦°1¦B·æG6²ßÁ.Ö*¤XÊ_ùšqм§ËjOõt-¦„jÏ€©—WZAÞ Hê-Þ±íp\óÞ4ämÚmLÓnðŽÉo×å)mâs¿ü0+¶Û˜>IÎKkNpC뇚Ü8¦¨üxõŽÂ¦ÎD›Òõ®ø]Ë—,Ú¦º&Y…ãûÜuæœpÎõph wílÞû®1q˜¶×ïj¸[ÑüIµ0P5RÞÌsÕ„-¨„°`À§Ô Ã\†So…G½…»`è‰a=”~£×¹Hªf٢ⒸÔ?%¡ÏKc *µÂÃJÆÇðH9ÓWkЦÿ˜6˜2_ûRÓ5Ö*Œ6ÊÛ´¹š ŧ¶NÊʃAwÅ'ÃËs)íÂ@Uc`qøÞЭjT aÀŽŸR/qÍCÞŠz- ›‹¤ w-÷¾Ê£¼ÕËñ©jw`ÍáÜ®—C¸nžFºvÄh…§à©!²NÚ–©„a@¨å?Rãƒ>€aî»´½÷Þ{Ë–-ƒ¼»råÊ 8µ¨‹¤ŠáÇdÅÇÅg}{%q^š5 RÛ¿{G¡E柳vquaÞ¡ÂØØxÍ‹0 Æ×+<ƒZØпì;…G“}D’œ˜%˜_BÆ­”M„a@ð‹rF½`릛n‚¤;hРßô ’q=þûßÿúåÉ›pR‡6;—¬y#K‹Knª¾i”ÒµÛE_;¼—Y5ÕzJ׋Wˆ7tq3da9îÔ¯-bP÷€X…“>ùR-³JiÓ6™íkIɦÁmƒØ’õ‹ÞÀì‹·ŸÙ üª*n?XVUa .a@pa œ§Yå|¿çŠ+®€ghØÒöÍ7ß |‹µ©¨$ O³*†Û·E­ï ÁS2r¿|“¾ø€/[Y‘a lÚ²ã§rŽÄ-[6n˜§YŸØ„Ï ”?ê}óÍ7=«‡¢åðÎ,Xr¥¾³ ‡âC„a@"å¤Þ–—´‚Wý{4 « —ìR?”ÜõÎ@<ñÊ£/i„a@BÇ@9©÷Ü€âK÷ Zß8¦µÉ} l–MÊŸîħy„ÄW¹`D@„a z2”Ô[=©’¨„*Æ€ù9V\À£?®\Ÿ¹e{Ή’3¿Ÿ­W·}›ä›ztn™”ðîª/oéÛ5Ä…0î Hê ÷#(ø…Ð1ywÂSóû]›úн7_Ü0®V­èâS?½}ïS3Þ¹¬E“ϾÞ-©7tC<…3AJ½2eÎ'…`<0ÐøâóžÁùê'îAêâ?Äõ¿¾SaÑOï¬øÜƒ’T €;AJ½înd_Ï_âšçïÃÝâucÜVCÀ<³3ïÊU·;a²/ Ø0 ©×†©„߀If™gö.‘€I½ráÊ€1è…¾Ìê¶©ÞŸ¦nOÚÛ“»Û7H­0 ˜ð)õ–••þùçŸ~]r«Â>ØaÀÊO½w/¾øâ¨¨¨:uê8ÈİýôÓO†!_ÖØÞŸmÿ—o~rD)Ä·¶þVAqÖš$Zëýñ!²ÃûhJЧg<³çJ-°ÙWeÜ}«¿½üõü¾;Z” -ÁñÅLßo™Av?v©äérYò('õþïÿ+).nœðã?ž:…÷z!ÝFGGCÞ³gOÍš5á0üº‘ŸÏyV·dÇ’5›²š¸u—q©½ïLõ »ÜÔ³ª´T3ð*-»þÕ£oM¢ÀгvÔb“*r†x=3«${n_/ª ÆÛ]‡­æQì[¾€½Þé==cMÉð‘îKào'Õ½oøÅï<]°¦OJ¯ â6©óÝï”>†¯<¶²ÀáÓÀ×Oï_Ñæ§¯ xK½ÅEEÅEð³ó±5jÔ¨KŒwaªòñ‘#Gà×{5j9øûï¿÷3õ*âbÛuh²3ûHqj¬üH_u8—BCá®M˜w»&é~ãRõkátfº-´ªðAxë ›IæÛŸÜàë“ͽäÞ‚¢Åù±_azHz£ø!ŽƒßÕz%Ž»ïX«‘±‹çý­áDôç½i"º ÿªiX£i±K_‚ Mb7Ô~h%NY;ÅÌQ›#–QEKÕ^Ϫœ5¸xÀ°ÍGhvÚÝ´žžñÏ=壃á#“´y4¡ýtöC©I§‡Ã‚Ë& œ#Soqqññ~¨S' 0½ ƒ]cûõ×_!ÇÐvâÄ XäìæÜRaW¦9e°¼ÿ«ÙZ3íÈ¡ø?Ýѯ°Ýyâî^±­~¿ëš¸ñä~fVwCŸ#ŸÄe+Ýóƒ¦áüséCkbw¾Ô¡濃3ÚA.,7­dÈ#>‡Öí¹W­9Ý«7‰ktú¥¨©;¯à£Þö#æ}k޽îˆÝ©îõ–îlÔêôKËÁàmGvø2.zùvg\…ÇÆäÝÅW´:ý~Cú%MƒÜï¢åì ¾0à1õ?VкuëóÎ;Ïl嬾ñßíÛ·ÃnûâÉ*SCÞ¸æ½Ô·èTìÍCî€ ÉýyNÑ¢Ý%†Üqvè“Å›¶i{ÝŸîÐ4•˜­ö¤&ˆ‹³üŠs²ëm¶çU9D¹ž™åWËfæºnFí°ØWòKs5ÍõþkL«‹Y;柡[³ ŽÇSøò±öËN­ôõiÙq{j<½Çü³ 7¯ˆ®û¾FÌÜÌÿKRò0J6nôÆ iÇch0HÃnØ /†zÅ]Á/8L7ò®Ù”…Š1à1õÂ|r~~>¤ZãB~56¨‡ F½°5hЀ[ýÄP´{Ŝݨ¥±.&>±©u'¾õå4´mּɦìS°šF¦¦ýäº:‹ÃêÏëª8tËyUœõÑŠlµÄvÁþ¯4­ÉÕ£ÿÔŒ…mÏÌêL¡—ØlS¬5%{±àÞ”ÓË{>Ø®õâäÍ8]ûq÷uȧ¿?f¨ò<³±‹ß°ðºÅü³BCRWw4Ñ,›0<¦^×þá¨W¯žÙ)$`ȵ{÷î…J¸Ýkäc?Å·Æùd?•D\03×<1î½¼C×5QYÓgvâR{Ýëøl'œÃìÌt»Ïë~ãÇgJÌ‚†OÖ<Õ³¯­uïë{þ¼Üþx×6œþÕnhÕS=Š«tñŽÓ÷%Ô¥|ûØps ÎåÚO­9Ý“ïû’#d·²áx×½2 .Û®õ¤ ç§²bî4XF­.îâoqìñ €næÝH'Kâ™Êõ"ki·oäóüéÅ›&¾rë½ãþÖëuâ²{úG¤Ýòbúáþª†i[âÓ®ìž1yÜísɈ­„‡J‹ý®[{ýpÁʯ©ËeÎÙmR82^š8cbIª.QsÞ^Ý¿GçÀX¸æÑ«Ö>ýÊfÍ»°¿­[)WYµ”Ó¹Ñæ¾ðAž/NûÏü`ÚàD«)ÛO~m…ýª„3Ï$™òé²)À¼^nœ·Å‹)WE—Mhý Ó‹;iª(/<û”ëü±wƒÕ³K’¨„H` H©×7ê:uì©Éóq ê›Ér¥ ê¹óæÐ:-•Gó÷%;Y!±ÿàN~¨Šhgàõy³'Þ÷¯¿þê+NHͰyOÐÒ* Uà,³âÁKÿÁDlÙº6¹Ë\øzØÍ[>~ü;ûPåª)Ëîé‚…ü%éÎÝ¥ž,L‡ã.“™1àý¦i2÷?ŸƒL‹¿<7s`AÆ€ékaçÞas»OXs*;å],£ºÖ][»¾ zt×Ýid& |­®ÁŠÞmšÙo‚;rÃæ欧ÏÐát×â/·&îyÇŽ=ŸžþÏ÷Sg$IÞlÀSƒ¦ŠBE4èðx3ZÍ.LW\H¿–Cã„"¥ 1°vÍJM‹9fÜe­//×µ?)WE„a *0œÔ[Nd‡æŽ6d ýdpvÌÌ¿ùš™ gB’Û2küÒü.5È^Ÿ^ýÜš #ÁØÈhÚ¡¹G­Yvhõž¶|óÀ{Ò—MÐŒ|i#oéû˜ïÕ°ñÐþ&Ï­Y.Àø;É,œ©ü#K8ã* 6®Ýá™ýn™57ÉÍD—û®¹j0ã.”†IÝB˜¼¥ŒÒ4x™¶´ôeÏ÷Þÿ1eGoà­,€3K™º„'ÜIî²e¹§­Î¤Æ_Ö®YQTxrþ›‹ýUya@*e¹٨™ ×̼µÅú­j•PÞÑýÆë=`XïiŸï;R åe}ºÿª;\vä¸Ù¨A”¼ËŸ»VöGý§É”Œþ*ójÍ®éÈ£L0~UWž¼MìG÷C‡šŽ /ð̼±£ÅúépasÀ%ÄÈCsÕl Ü%ß:„À$ÔÓÆŠcp¸Ú0\§†ð<ƒ·Q÷PåÑŽ¡—=Ø–jßèٻߤ‡÷]^$…a 쨔Q/±”Øÿ¡¿<òOàò¸Ö˜g¦Ö¼åvTºÊhÆpÍNÖ½ò=MŸãæ <Ý4,\ZÖ¬½RSåÜÓÂÓ´)ËvÁ ۗψ¡†nµ93}PE-ù­ï)@¿ ‰‚;R;>6åéøøî ²/ ÕˆJõ*þ`H—üŸ—ñ«>‰“µÏ˜‡‰‰©×$»ÕXdxÀ—üM§¼å ÖëƒHvá < ˜ÄÓæþ¥Ùþ|ÓØ×X!…cz‹‚Qîö¿³˜Ààô¸›à–åú—£ò7o:Ô¢I³ç¼–Ð4YÄÃÍuÏn˳ã®i »ˆìûÇ@Ï^7¼öï·%ïúÇšH aÈ@åz‘¬´!yTÆò.ýÓgÞ:~<Þ¿Ä– Θpx€ª¡±cšEƖﴮݧO{ÉÖeV¶âª’ë»8>¦u^ÆfumÏé·ËV˜6'e+›Cuê?jу£¼£%_ÕWOyÚÒÒ¹ª÷´a&a™UOÍõ»»†)kV…qÎÀAÌxïKOÖV=P¿Ó¬ÜŠÛ,ÏBJúºS[îI)OLµ‡ •pD,„ Tî½Þê—«Äþ/-ëï—† UœQQ5kÖ¬S§ö_äBÞu8â{õjóÛo¿Y`çÌ1©õ’³/_kKI÷9—XŒUrEÚ%¾fÁJ*î#õFÚ—x«0%Æ›§¹1nŠÒ ïÖ­S'&¦v|lìú ßB}ëÛ4h ®¼]Ôs?|ÛÈzÚÌ+ƒ–’Äaq éõÀZ®ÌyåÏ®5N™Ñë\æ2q¨÷ÊZe¡Ç̶¹n¼R¿pü*7/=ff J.9òhVsµ^ú-Ô2Ÿh_ƒÔUYw7‚ßéÂúf¨¶8]%mx -PÍ,9:C&¢¼òì¦ '=fîqêÊüqÕf@R/÷Nò_¨¶ 4ºøÂ ^tèà_ØðĉŸ>Û¸':ºÆ€þNýø“}Ìí/õ¶_[5¡=‹Ÿ:{|Ûó»ÓDîÚç&_¾kNŽÃeY4pÉ,Ñž›™ãê(sòÓÚ«¤®=2Œç¯ŸI§V {c Õ8½¼ª-Z¨ô½™uµÐw:˜ÒÒ¦n;»v|ºQ>>³¯l™»[-<~jÎõ.@mp£ètI;œêV¨9³þ|ÉÒ[¾×Yr"$TÖÍÞ¾oDY­IMÕb@RoÕ:‚F8ucbæÍßøð£‹§¿¸vî¼ÏÀ~·«/IHˆ‚á°í¶í;/_;×r÷ìÖpXŒ[Júƒweî…L™réoôëi¤X”ɜܾÆEõk\4xÞö=n©7mê|¸ÿjR‡òÚÑ(ŒÃSÚÀBûçï#/Éã§ 3*½˜u³À*ÖÿöØÒöii‘µÃ©é’¶<&¬^r?\ºmäƒã­^,nÁZx†&_ˆò`Rª«¡¸×ûßãǪNÀ‚DkþpQ#ñŸùýL›ÖŽåfËuGºæìÙ³µjÚ}üSnØ~Òʵs®·{„©G×)ékO¥ïŸÙé¢ú™°²i:Þaù–û Òª“ó¦Á²ŠÜŒžƒµ·N½^ƒ¡¡Ê³Viªñ`Ö V#«<ø2ªuœåɹ¶»BÍÅÙàŠnþ…YQo¢<ì>{övE !ˆ=a r(.)éÞ½]îþãï,þXv{×)9s¦f-ÛË{yÑàdPξ¹³rÓïq®ºjÕZÓssnÆsoŒ|p¦â6yü–ÍZ§»÷æh=Qæ¹™^o?ÈË\º:çhâ X^ûÝvžåÆm ØKiÕz[¿—Ö¦†ý3§ÀPx*Wz2›k±à逃eOFÜU,8ÍdG]£¸ò€RV/tMã™wßlÁݾDYŒIEUc@&œ«Ú<€¯ Àc1¼¿ØP­è蜜ïGþõÊ^=/OKmÞ·OÛ¼ü£Çÿû_XðÌîFzÌù!nâÒt1¼Fh={#F}3ŒV¸¡›=ç:¨üˆ§‹kty¤ÝßîmÉ2Ú#—( °rÊ UK»lÏ0lj?é²wI½ÇƒSµI]Ð×w—µ×½¼;r!a¸»lèí&×öfm,€sß»h‘ ~w#ʾ+ŸVœN<ðàÊ’«—–wºâ2“>rCerí…g›0ûfØUΉá~ÄË;‘D>à åiV?T“§YùÚŠœ0z¾ÎÞuüÈÞÆñiV<<Íjá|çÓ¬àÎn­Zµçï´€áiVÃF„òA’«&ÄN¹${Ëݾí'7£W‡ïþVâ¶*Ø”ûÖÒB 5ØTˆýÀ3`;ãTa7¼@¾ÂfÄ€0 TȬ´Péê¿8i{ûç½.º®tŒ:€µKßjé}UŽ©² 'õVÙp˜0I „v8Xfs^½æ’ÉÛØæÈ…%´"º*o84Ÿ´¾Î”=§ªC­Ê4F ¶àL8ÿ·zü|BÄœh2ðõ¶ò'œÃ0,, DAõÊ|sDœ;d`€ü@ŒB%„a d…s9I³0 €0X‚2êõ 1súÀéðLWÞz<¼pB'Wñüå÷ßÜmæ´Á¯f¤Q ¾ž1lª6aÕýi:p‚½ßÄ×óÇållq×s3Òi·eVßgŽŒðÕHÕ=oÍÿ?_ÀÝÒξ a š3úÔ „6óÖ©9úÏXÊ¿äWZÍ“„gÏ@þò…‡®ê¡½¿$?Ír­æãùc=ó—l>ÒÂÞ_«U·vLßÊ´3z´¥N;ï¼óà{ŠgÎüVVV†K aG6a@!2áB²ÅU ȃ§']Õÿ–«´[òf{ËòMº4˜¹Ê7´vÃüZ÷éŸlüjsæ¶í;ŽŒ¿ÿÍS?þZ£†]°vt£¸hzþá¯Nëüj~ì¶ò©Â@ˆ°ûà…È5»É_2qØýK©ß„Y¾‰Ëó4¬<²$ŸgÍ?¬ïŒÌ"gaÃ@þæÏµn‰ºhŸgå¹À¶=àd›…Rô¶å/yG6°±7‘*Óæòsv?‘f m’˜¯¦‰M’š6k߶휹ŸÂOö.\¸9::dx‰–úŸ;½×mAñïðʺ,‡~71;wa. ®0|ˆÂwIWn«!ià92¤ gïóW˜Pçã§ùªÉKïü„#—=°ã—Ïh“—Þ˜¨eÑç wLßbˆgã‚ Ž.yçȈ›SíL„qü6 äݺuêÄÄÔŽ]¿á[¦Çõm4°»òî9èöm“ƽœãpîôÞqÑ qѽ&½*'®EñOîS˜£ž×y6ÏQƒØ}«MÖ¨i­»5Ð;ø2„§»Xc15n2lÁ£`¼<š-;‘+¥œÙ×*§×ª~oi™SR „=ñ¾ÎdÊ,iŠÔµ}Œî”Ê~3P)©7‚ù–ÐÆ@Ö»oÚ÷ƃGá5æCÚ†­'“qí\ê=7"&Zð²Ï}]½BUpd? ‚Á ,‡£Kw9`qûo¨ÑÅ^Øð¢C¼øÂ†'NüôÙÆ=ÑÑ5ôïpêÇŸìŒõy¡xÏÀ%­Œ„J2™SžÑ^)èÅ#v<úßž˜:©õbž—~~÷L´×Ý8â­)Ë®}w{méÌßû×,ÒZ¹­ZÓ­e=¯=zgèë^"SÅ+ns Õ¬6ì¿¢-zK…ÊE³Hr±ö/—ë§|A–£ïDòreK[ûÜ”6+Èéï/ô„¨WÜ®¥Mã/õ ¨ËÜÝji’Ô͹½ÛÄèARª#‘ªz³¦ãTóí™W=v‘xh$f¯ lÙº.yÈk”Géiõó/cY¯ºašš­Mèëðùf‡Gépi¨3oþƇ]<ýŵsç}°»]}IBB,ü ‚‡ZŽÝ7z!£Ø´)s'àóaL¬íÜ© ~D_þ%Á” »3s/T¦\Önמý0üýpçÀ‡‡jKVì×rÖ-Ñövû}xÝš¡–×òØ”´ýöÏßKö“ï‚¿\Ä•<0…¡çù;öìãj½É‚Ò¦<€©Ô‰Üдoö³ …õf7æðmðÐOøY‘«šä «‹~¥ìß§Ãj2³°¦l]Xc”æL ØÝì n¿Ž‹ f ¦ÝÄO¯ÂßÈÖ&,U7Û:ß¿`ÕýÁE#ÖÔ87h¡€sÃó‡öü9àl´½³ë©ÞÕe˜ì—”tïÞ.wÿñwã¼Ò°Û»¶H¹èÌ™35kÙ}ü×MŸÌ««rÖ¾—Ùîf˜+6 .SZ]¦MZµnÎu=`„:ýù7GLšm-{Þ¬=E»yAs,ïœ ô¸ùAË7µ2—­É{oK-wŲm#&…u¸¶ GÕX£ €ØßÖoæº /ôм<åmM›Ì•Ú¤ç_~ð:ÐuÛìñ¸KY÷›ßûõZçq{s4€alû-x¬šª¦ÅÛgî…‘>¬G[÷¾Â‰M–=Z†HdÀî³WqªÕÊЊÓ!„Êd VttNÎ÷#ÿzeqñé“'êÛ§m^þÑÑ5`Á³ ¬­öÆG«/Wݹâ(&9»Ô«õy!óù>i,™69óëëÈVóÞCµÇ ˜ƒ©ÊßB9Ó’&á'è¿¿£q<~ið¶Å¿£b'?ÓêÊøIZû·µgP}^X<¢ñhHfíþñümÚ"ªe§­?F{oM&ãfGoµ{_7ºñú¦…#iÙ²ïýîL‹žŠf­xÌú˜$ûŒ}XáÔîq›SÊ£©‹X‚òËE'l—oD,ɸ0x¶nßýÃá½ ›§´HHp\P¯>I×ìiÑë3Œ§YÁÝZµjAëï´bð4«¡ÃC9¹´zbü”?f~íÇ×–r§÷IûvRÑÎî§2ðý1ðÄb•fÀî²·Jp€0àøœÈ0ß>ù¿I;Ú?ÓѲ Õ…I½ÕåHJ‘Ç.üq}¹qp«oÃÙJ¹ATžÓœ×º·šº‚ á Iixma8¼è k´’zÃúð xa ìèó|‘qƒÖ ø–cÖÿ>ÆK{•nò1Æ*ƒ€ *•ò墠F$Æ…a@„*Í€Œz«ôáp€7Êqö¦,m€0Pi `ê]¾Nž"Ui@ €0 D5_}}Ä|úTaÝú  ?½~ñsGÍÉÉÿ6?li I¼Â@å1ð¯Yïü¯ôôy1u”ÇnÀ©Y«V xsttT<®<¤âYü`@M8_wáÙ³øU?x¨+|ùïüóÏÿÃþ»æïÿùaUD…a  œWûüÚuê•=ËÆ  _ä5 CÒmаaݺçCöü@æ@à€0Pjòx—ó.—!õÆÆÆ‚—øøxI½e[Œ þ1Pû|ü$ÂVúSIÌX†h& õBÞ­_?¶VMI½þ+ÒÂ@å2PÓï.ÃãåêÖ­Ë ž±^¹øÄ»0É À¨—ï]§~ÍK5JÀBà­F0Þ…¼]³¦Œz#ù<‘ØÃŽšæñ®šsŽŠ‚ì ¥«]»vØÅ#€…êÄ@šçýrª°­Ãˆª ex`¤9@ȸ¼U§¨%a Ú3à~¯—–sµ?ð`X0ŸÄ â/âkb e˜d¶"—§&Y9‘a *3`s¯·*ÃlÂ@¤1à>/%i6ÒΉ·:2Pîïªf~q¹:†)1 aÉ€Ûgve„jÀ@ ^»ñó©B†ËÕ * A¨6 ˜?›\®6¡I Â@Ä2ÏpÆ kïêC_¹°ŽØ“A¯‚ ¸|6és*›0 „=5>uòüú ù;û\û˜$a 1`þlBYnõV£c+¡D.ø½^ãY9æräR"‘ Uã³Ùä·wª:A$ þ1÷zñ¡0Þ…ÿFöφH Â@Ð06¹4WbXBÄ€ú½^¹‡"¾Å0à'æÏ&”¿úWDÊ& aÍ@ ¹¦ëã'à«=nóR VçíÏÿ±ÚG- Õ›¹×[½¯DWM0îõnÙ]<ô±ƽ!ü¹@ýAëRæƒ-<Uÿ{½Õ¤k–0ª+Öy)ëú ‘Nä¯s *­×ÝÐg™¯¶®™U]{1‰K/:ö¾§ê_¿3¥‚SxsÀ÷s@îõM›`ÃIDAT†WW,h#Žðº–—±—/9|9¢:öWV¦~”7*ª”·®–QoÄõïpÕd cŸ{Ôu4}6¥Ì}”ð <„û9 >Ï?—Ð÷zõÏvÕ솕0 ˜?›Ræ>JxÂýˆJëM÷zM×Ô2êÀþ]B®š À¨×m|S3:º^½zµkÇTMÀ‚J|a &\;œÛ膂²/j"# ¡aÀüÙ„r½ âÎ;¯vY™<Ë94ô‹a ( üõµOÛNˆºIEND®B`‚PK !ˆ?„ôMôMword/media/image8.png‰PNG  IHDR»”Ju¸ö pHYsÄÄ•+tIMEÜ ì6ZttEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/10/24 15:18:14 lim_j SGA250167ëä tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì]€EÖî]P ˆŠŠÉ. Â(bVdåôEPDL÷‹ §˜1 âÝŠá<ÉUTPï<«‚. ” ",ËÎÌÿBUuuu÷„Ùaªwv¦êÕKõUuõ›šêê¼Ö'ôÝYú{õ½÷)/+-ß¹}ë–õŽ=,‹€EÀ"`°X,{0ûìÐ>ûDÊwîUc¿ê±hdßšþºqMéï›9¸Ö57^L‡Žy^€òò ‚V^L±˜àŒ£ÀqâªHª©¤ƒ9ˆDóÛˆ±ëŠ2#>5’¤H’fé8 *ÕXdV…¸åÂC—*”mþ ÉîñGòêæåÃÝ0¼ T¢’È,àmöà ëZüè8!À*;I ¯fÉ”ùë‘X*‘Û‰5ìyrÌÁ^"zŠ6 %WêŠzR ̸ãZNCžÝU‘>_¹ð ‚apÝÅ”Î*ÓÊ9K<Õ 6Q¹µË1íIœ&Ë©’®\Ftn"m”(AŸƒD štÒìã#¢IõDi—)§<(ð‰ºâ¢…ÌÖ?ü^|ñœsÎÝQV`2¬Âp¹ªUËÿü³ÏŽïr|YYyˆÙ¤ÉÁ>%-î8{ïUý×_»ð¾³Þ™=aâÓ7þ°÷>µj\7²³¬z,Åpù· ·ÞrãÞ5ëü°fÃÔ×Þg”E/Ésòá/ Òpçô°Ïß9Ø}MÂJ“¨bøP4PÑL#QbÂp“t‹,~Ä8¥t ‹Q)çD£Q’¥ƒy”d–%Q£¼ ±D,HR©’Þ ”Ð#•Q±k ÏCv´»ê•fåI‘¡Ó”×ÝДn%&Õ³E%¯w ´¡ ]MöÐÝf™À± ¡:¿U_£v.:>Z‰Ã|•=J2êƒ×½ zä*I¤ÀèqÀI§ÈFTÖH@–)ú;ØCW^)UL1²é8Ÿ}ÙÀ¡’ÜȦ­$« \2|ƒ,\øŒRÎ&Cäʯ3I¯’f ¿î&­"ÛŒqÇëäO¥€š“f¦Ç1¢L( F=ª\S""Ú=t1Œhh"…XTœMc Q¼þ]h£:¨7—Yça¥J³++=R†‘SÌæµð@hs+ÇÖ¼yÒyJç¶sþ7/o¿zK–¯†¬¡™Í*ß”*ðõÃq5¨óåÅ¥Î~_-XæñP<2%âX7Yƒò-š6xÿãùõ›½fsäªa7Ævl}ïÀXc¿ZÕwîØV¶}óm·ŽŒV?苯—Õòó±Å©Õå'R‚zàõÝPâçI±ž!ê0r]«x«&âÈD¿Í‡„ó1 …tBhˆŠó(šÊƒ±¸ñ èð.ü‡ñmSð2%èù@'»ÃDôá`ŒPŽÊ1Ö~ ‚,ÁRóRÀ?àÔ›E• BLˆ£aAÊHʵ2iLˆ)×Rµ ÑãÚV »4 §ƒ#|‘m¡ºeOên«¦qANF‰:yTk%#•{”š;I)–Lü¹ÅÎø‡õ‰P+ bÕÌ!¬¬$+ž~S7¬I}ÇK´eHr¢®Ž4§ŒsÆÐð1—a*>‹Äœê±¼rŽcð½"cSê·ÀYWß¼jíOùxP¸Ì)ü„ 2nF(¹íƒ éߊ‚9 :d `B Ñ=¸‚ôÑLQìÖt3Æí†Ëù3Cp s‰DcÕ!8¦²¼(@ã…û5ø-“¨„þÜ‘”² é? ÐI$Ìs“f—èÝ-äœ[DÒ¢š²¶¨“ÒÇ HµBÉÆ§tKé¢2YJ IþЬú0¡6óAbŠ'q»›æt»)Ik€¸•ök§Žj2$)ë×¶›SÔYk–ízs“ÍÄY( lSå"—†½›Ò£Ò0,f»ÂÖ^Eˆs.«~¢wntîE†MÕµÜ&C5†è§¢.W}9QS¬ãÖ˜OÄÀ#¶÷’gÔ[Di0Ïb©GŒg”Õ: _ó9tÆøêx™N 2n&>¾¦°Ëú¥YØ8 (yýÁø žpƒ$ nF£Â QD•ä<®†÷RÅC®L÷ 6¬*ä#Ó-¦¹,h.O{é_ЧOß+ ­ÍOÚ¬æ^ä·Ÿ#ÛãòjûPí€C=”ý¨~Àañ•%,]¾jÝ˾ÿoÕ«Uß»aÓKÿ7¯:¬Æ ¹¬Á¦°YÍ7«ÐЈSCÚö´C·êš¾rѱ|tê¬>ªìp¾ » üÄb„Lá2¾hYüG–Xy$ß—À@D€ 4D"Q€~8á%ÊtʈÎKK›‰4‰q.AOžqÆžïºEü˜G²K7)t’’”dBRP©Ó £’”¬n^*a ª$¬‰½¢gÄØàÖ,µ””ÔDSæÖD¸¿t„SÖ.€m^ZÂÃ’ z({V ÂÛ[ a½( ~Bwm*£gÈ21¬§1ø¦'²àjÖL(@²f17 8èýD9¬wÏQàWÝIu›Ü¬õ.ðŠ.o«Ã•ªK<„z®þ^AÑÅ"“tÅöŒüîUÕ;äR›²›ø!«‚.(:›ÒÉ£ŸZM¡ ’8 º—vI—yƘFNˆ2Ø(Õ˜„ãf`ƹN>Ðâ$ÿ¤EôØüA÷sqqrup ýòÔ³M˜]ÖÃe(‡,Í*b–~%Öi˜p³ Xžá²²Åq¹AI?bÞðó–.އh¹:˜?´ö,Cd Ñ2¾‹p9Ÿ‚gœl*pRHüÌz¸ím–ġi#ÕÞBCˆ ÙI=vBxuãÊ ÐQ@N!cÄ,.GpvZ& ¯êÕªE`zHà{>FÒô‹I>®­ÀîG‰Þ):(ú—jê°ð‚rurr)v5bcÇÅ;ùC‡äY²„ìü/9D$ɹœ¬É0-´È2­T/1°RÜ&öfžÖwÓ·¥•>OBU>¸¸Ò¨4 ºŠñ…Íù*˜¦ ­Í’SÉgG†ýÑ[)e\¿YMˆ ÃºSr5O™ Z“$Ušê•rÓëï:Ò~=Ì ›HÙ¿Ñ6Ëœ‡:€™Óš1M*Ø1˜È½‚G tî犨sfÌcºÐQ!6s^¤ª .óúŽ**|1 úÀ#"Ni…GJ¿M·á4QT‹„yJY]»©Y•Ï\…è‚•E]ú(>Ç1OˆBž±]κ5"F"\QyM³+Å]5“ «‚Oº‰¸ŠdQ ?¥K(,Ń:• ÛÙt^OZÖÝ)--…‚‹^ ïS&?&NûCö0æ:,‘Ý÷”9hæ¸\ ¡Ô­K€|R$ÐpðA5#æ|˜ÍχØf—1`®†3Qèৈ™>•v7…ÃBÅ]O˜æ ³@ý+LÑu1ÕÆ4µ ‘/Ï.C&"årˆaF„»,†Ê(Œï÷ƒïqÍwòÊqŽVèãfHÑrêld 2<ÅŒ–Á‘OZúŒb侨X0QíÉ/LLK’!âò¡2V,hêC(SJY³R¨Ù2%§ìU…v},ñJÜàRPà“ŽgJ•©‘Å7)9d2¸¤å,c6P j4±j5=!O4<Ó Eaïì:—2³ê þl6ê™i霩úÂ8§*UüþZžÝªc°z·Q^©ž#(r Ó+¨<õcÉ\O3aª2u¨ó«Fo=bŒ›A³:«Càå™®+ª{@²þ¸‰¢¡áƒ¿œó`Âã …¤R”Lø q¡²EDù%ŸåZ0£ˆ‹©…•‡{bôéÊ‚øs9×Vë :9€q…¹ºÊuX“»²çíS“ceX¾ óÍ¿ý&VMGæ!jd’“Íó¼µ4³$NiÓ" Èz€JVqF̼—«a„ Q3¾(FƆËr†2£`rؘM‘6 ˆ^êÕæOáVÜÒU@ì*oòÃç‘c°Âår¹E Üö‡ú«q8ˆwìA'x"ÀÍ‘3ÅÅxhšñ 8›h\·A_q±4¼`~šÏ7ºNs»ò»P#hxzÀl6*-²’lD Š£,QP(Uî8á-S9¬:MdIU¸”ü‡^ùä¥$'¸g …ÉèÀòV, h¦‘NœÉ²<Œ@Ö¦™¡Y¹Ø.·27®j;ÅÀÌI¾­¯+QEU·¹ýý¿êÖ%yÏÃj-:Œ{ð|OØgÀ¨êH¢Ï{ÇŠ0[É{[å9ÃkužV¬Ž|â°A^Žñ:‹‡¼<ðxï¿X¸C³Ëá]µ8_ò8nFOg`x…&~¾:H"£Ë=:…c`Ð|³1’ËbÝšQŠ90x ¨´º¨bŠ*U<‡±27J“Ïú¡+'¥ø(Áüýqö?$¶ oþ{ä¡;Ëeåj3¬ˆºy©IçTÐ<ñÉ¿±ÐàËoTá²Rf=i;b£eˆŒ1@æ9e+cè É_–Lè3ü_󶊸ïT¯¼_¿|fÐß¾ýÅCÌÏûþÃËÎù`µ—¸zƵƒÎöÎ÷Jvë7öø¿iÚtÍfš­kïyyßpÙ9Ã@'½”9è""Ä÷‰ }ÍŒkÁ·50§Î_4fœhw'×aU·€çÖ1ïÎ%°J…Jè«õaÙÕ ƒ' ·äSS#Dï§³ˆÔ Üg9M'—¢RZú$Ö$Z@"L1•Ï%—FŠ\&Ô"ù¥ET(Éôé2h½M—Ó´îÆ^i7§Hçwë¨%‹Dj^<”MÌ@ÃcS›ÃJú~UP#;S þˆ¡1ŠA•ø¤„OÿÄ›a÷1ÕÓT–N”€Ìûy˜ÈtÅ UZ2ìºU—EŒsŸâ ™øNà¦J+ U Cë”c¦øª£]tÿÔÉU1§+ޏ¤™—?ïEMZâórJ‰¢©ðÚJÉ:±¨K¤ 521 Ób!'J -*f6Ue" %ìòጞ¼Îs§T:Œòêt^xyÑ¯ŠŽV½:1$õ‚ÒÊâ˜ÔgôŒÇŸ1æ¯'N¿ýo‹~~«h[ÕÄ¥4úÓ£“ß8£‘ŒæUÜ,õs]@|[ù¿¿\ðñZRãýðJ<ìrå8àÎ,¨@‚È7j"b Šå¿~ÊA´ÍóÜ·eÆÍFó'…< Èåv Á§(¼ìD(‘Å|ªPO`«ÒŒ2Gî¡™H¦»Çg®{Œ™Î$Ìû¼K( ØÈ!w$U(89T%jÙ•Ádð€_ÁÅñ©áþÇ—‹[š–G®æPh‘…Oœ¸n¤UÈÝÜPÁ=Mé àT¥œ' }è¥zVÑÓò5—„3Õ«ãÔ‰Ï,ãüŠÃŸ…"£Öþs(02›î¿âÔ‹Àa¡„§ &)­)¯ñGÙŠêÞr|Š¥cY!âQâ½H„]2ÜaA^àEhcIò_tp|Šv‰Ì#ò,¢ÅÍ¢Ô7QŸCY²Ë¦øª­ÌIǸܰÆxÖ¯Ö̤ÜFõ¾‹¹Î£_ìýœFcq¸|݈{ \Ɖgyï î Ó>–Bd+n—ÑùNy`¤¾ý7Ø4ÃÏí©‹¿8.El‹ - AåõQEˆ[W}ðUßoê÷Éç«¶øG¾FÐÁ$Ž òEŽ3¤ÏEÿ{|Ê¿² ?XØ-×k!¨l%/ïÀv}ÏÏûhÃo2ÆÞ}i&(Ž7Lz}¥ô!-J0´*AÂ% •˜Ã3Ds£W ˆ‘Ø9Ç(‘Tã¹±+Á L¥ü§æ•I½:3µ3†O 7®U'Š{¦JÇ HÝÚè9å|' ¹çêOõsG¨Ð§Ù‰=†+¢± T×´§u ­œû¸Ö•eS%â¹A¯œ9*Ý£ìÇÍjÈV})ê]œDÚ4‡Î–Í™VK×>#ÒÕRÕäýã€dqd¿/Š˜ÇýêmfIFÑ«0»Æ_óÒPQ/ðºiÈòEB^ÑÂ.jiV¢S„JR¢—2]Z 73BþÕ—]B…2nF=âpÃ&ª¸YÔÙÄš#WÈz¦¨±”£C¹D®’„ a‰âaFR¬“°RB"±*‘4?`5óˆïƒ$ôpYJ— ±@Ó¦j-ÏáòßÇÜÄÑ2DçœJXÐŒn‡XcŠ0bæ`Nˆã—g¼x!1oËêÿ÷çÖMuÙW-£ˆß¾~àªgãë¹÷HœŽUo\ÍÄG_Z.–׈y-ÌkuÖ#çϽó‹UL§ø- %m ¯z´øWÌN˜¿Yê³&×Ìê…Di (®i -ÿ%¯Ï™ÕëªKP ý¼äl~MøzŠüúÅ„K`…¿}ý·«/éuõ@x ¬ôxП®tε—;ù›/þ{å_gÄœ™÷÷½í™y[Ñ0÷<ì'ƒF¥z ‡€ÈÑ2Ecà‚ZZlÄKdqb» ü£'”$tÈ·"•Ó†}§–¹7sw[šÔ±NÕú:§°"˸ˆ¬¹§ˆ ´öNéz¼|º¿†øeRxëZ2l.ifE’SŽËÏ«èØÙTÛŸžö‹¥A‘ý#9•æ†f>5\ÁŠÊ%Wód¹Ô)Àz–O+Õ!U89­z‘Aä¬â÷g“u4—øÂN‡\ò1Û¾0&jPYð#¬Hça6X¥*s5— m°ÏœîŒkJ4R«3Ë€\UÝ)_¥‹­S6Ž#î8 1e¯„)©.ÓÚ¸Áj<ßÌ9ä—×tòDü$¬[Ñq@Cp”Œ¾éb‰šÈ<Ø1J1]Q¨¦ÌÏîŠ:ˆ±NŠ",QµÔ(RV™6™K·Ž¹÷xÅJ·*:rÒd÷üÄ@ „Å÷þ+,•†ã†›ÆÀòexç,ÐÕVÍ~Ù8ÖýÌLÁ;ÿŽ9ÅÉ.˜óVôÔÜA7^åäWkwÞܯÚrìç9?¼>òï±k›Ùæ gõÛgßóÙ ] Hü¥ø©[žìsÿÌ®œ_æ¹ñ3§‡“Ê,]/óœ¦ÇÞpÒ ·¼Öjê¹µ˜’ç¬y{À£þkXSÇÙ¼à‘‹ÿ=ï¹¾'Ÿôè¿\žW{õ·OAK|²rSÛƒY<õ„ã©M~Šø’¢éV}=-6ôÖÆŽó>õ²óèSš‚ŸWý#ö¢Ÿ¸÷—Kfß;󌩞 à‡×oúGËÛžy„ãü:ÿ§¹æ/.¹fùðÉ´9ÔFÊ#Ñ‹]1Ä nƒ]ÂH/WíêA3,Ƹåö±P )Š‘†I#² E C¡YLy‘£x(f›:TSr~ï€Máü.R±ˆ˜9Vã8 ›ÿ~é¿pý°—”¯W÷hÆÐàšn6Š´X‰xP`¢åÖÂf<øèwýñ//~~‘`…’óï›yFC¯XÓ¼Q%_ݹ¼S× :;Ëÿoþ‚¿–Ä.ê{„Æ‚š@¦I@öÙ ò„|Á½±”øèÿÈ?{4uUþð:q`§ߊ¨>ÈL ŽPUPØ¡2^‰$è7øhÀ2p‰9fäÇ^ÎÇì´=‹Ð$ðÐw56Eþ¢TNA3åy;g´/ëÄŒø.já-ðÖØü’\Aç1“«W¦\”üe¢ž(ý‰úv…Œ©Z¨©j„Ñ'F¡G ?Ž›,oˆT«Oüz+U–GtŽT–r®5´£¸–P^Ïr:λ7îêbf$-ú•ä>%AÿÏPT»Ä;×2d+¡Õ”ŠS§0 ØWqw£”Þ¸:\ä*ñzJ6¡oI3dgˆMÚøŒxáóâ1NÞøúKýƒ‹i’/—çHnÃ/·AÉv’âÆEe+7ƒ4(Å T\wpCï„lM‹qSØÇðh§KòM6‹«·“Íÿ«ïµlpW½zµH™;…Œ (XGéà=æ8­¿·0îãæ Òé+ODà¶3[×”R=ªzõêùN*hrP^ì•Üà-­Çu6ºý°ðØ¥7L˜þÐÄWÇ?ýú£êà€vÀ{\ô¿—§~„ÐÆš´èŸ÷ò-¯®\üAÄÜ;©éµšÜSþã¿}Žj¢XxѼÔè‘d+ÀPÿ¨ÁyS¯™.Åb[Šßž üì 4h58ïùkÞãRÈCøzD›ÞyŒaB)»NØp‹eØKð@‹ÁCN0`VO·Cô«lÔ×Q—P‰Á1w*:èŸ4Á zµÈ ã\Îç69w¡¤¨›³´”A:™¥ÂUY!— Ë“Ö/YÒùd¯”oQÅÕd4+"/pJI5 7‹0˜¥vË¥ƒÆÈ„ž]ã1]ä ºk\`«FoÔ³â âóHï»Þ4è18•æ„&veÍ«ˆíÜ9­ä0pš+'„.ÂEÁœçPHã*gÙJh%ó*P &2¡2‰¡>òT!|±3¯­Þ‹&k WXkcß\ H ë׋˜¬JPŬN©¢H ɬ4ˆa‡DÄÁ•ÁŒ\Ù,ø‰—"Ò Þ Bá FUÌŠG™ÑåÁò–_·Ö®}ئŸ7Ô­sð>5ö‚IYæT‚\ —”b_Œ®I;Ú ¤'KLBο}jì]÷°ƒÙ¼éCëj똕£æ:0 ì IDAT¶vÉäXŸ¿¸Ã‡£Îºõ˳hùiÝo¸¥ÿ9÷ ëê:ôÜáù 7þé¾%7ßÖkPû>ïó‰Øjè¢ü¶AðÈst{¸Ïóæ¡~·‡ú<í½—ˆçÝóÆéœúÑ:ßvnt0ÈÕjžç|6¸EC¡PVƒ¢³nÅ„²¬»ä8Ç Ÿ|ê±Ø/P‚FÁá›úO¼ÿö^¯°p¿‡éÖôÔïX~ÝuÃ^@R»kžº¨uã¶WßýÎlÿ×áÿa¤ñ«Î'S+¯:7*r¸…Ÿl[›Ö.ËN‹È°B¢ð$3ÉÒì jBŸ˜à4õFÒŒ ȉO–E¢\ϱ ‰4+AsÚx £±W ÉŽU@0XjõðÑkÁp£š†Hp]*› @ÉÞSÙ¦RÖÏ'Iˆž iŽ’!š ²Ùùå¹ÀtnSnJÿ»Re]Wf"9-W! Njýìæ4tW£Ôßa€¢ú†Þµ¸†ºN ÙB!k®$7ÔçW:Þ©kŸXˆë¬ºèð€j\‚ÜÖTæåÕYøÂÍbî… É¥§Ø˜Î`‡af#z')Ñ£·ƒa€E¨€Rþ=›òx0ÒÔÓ„ة̘ÔP «ÖþÔ©cû·ŠÞ:ªU‹ÆõT«^£<DÖs“ɪyè0Ö>è€Íp-×Âd5=ò—§E)óò;6þ¼aÁ‚EgÕcñ²Õ~uy‡5jóÚ+/NûãêôŒl|ãþ©Çy¨eC%¸r¢Š„t`ßÑìxpôÚw94B6¶È¶ü•`ŠÇ+we$ýòå¤ëgûà ­Ô4[ô5 "`š9ŽÄàûN Gá>ÀXÞðï „Ëñ 0 £OP+¿+RǶ0ZF Ò¨ê"%z3–ÒŒ5³c<.øäŠâgêUëD!„•I3óäpxgU¶RM°ÛÉK%>É@—~ž%¯ZrVL:¬"Šn2H„Mzê+ ­·¦®%¨ÅS×bH¤å‘»9o¬H$›L¹1@ëY•æDà{ ‘íâÊÃb2NæO{uœªeÇJüE†Kz–ÓðÎ>•e%z6 ˆ¾8ÊýžTˆ’ÔøZ!Í•,”hÔ®ð9‘à"¯'~‰1ABbúF2¬\"[f…e`Šr“”áaEÆÍJÜcŸ^Až(F¡RêÕ(chÂ[ô„(×Ú¿y“úŸ}þå¦?••n'ݾxVóS0„|xH¦@Xƒì„h !Ì5jìWûÐÃŽëÔaåš ›¶lÕU\Ö·[¿þ—à3\F!ìSe ®: / t5ħ’Ã_x†ˆ0F_FÜ«/E|ø*æž;.ø9.Á` ©fêKð]_¸P€~ý~öWN‹®à :Ì ±6̱2Πó²!Cá2ÆÇCs ŒÅxðA)q!:Ú€ú‰X1c"|Ÿ“ÓÇP 6øXƵå•@$1\‘$€pÁGY¬‰ 5sÝŒwM‚«.›Ê }M¨6>‘UÅçñ—²'þ~áá„ú¤á¡hš6L×dC˜t•à 6UBž&L¯†1å²Ù~¡NižÓ6dxÒò(Yà1ú¼žUiHpð¿+õ" ª,¤ã˜ÈB+ÃDÂÓ!#FÕ9¥0̈Út”÷ã€>‹€'ñ‰ß”¿òLW\9RÓA­òeS,yƒ ?Á#ïÕ'ðZ$F{u‘¢+‚Û™)Kë2ÅÅ›Ú]fNd—…X Gµ´|Sí}A2XÂÊ…]ÖDú)j „˜TæZr°!¤Q)Yg7„_ “׸r´³ù×ßW®ÞÐùØ?î¿ÿ¾²P˜äñ.˼<!ÌLE?X>@e\R¨b”ZP²|Ó/¿»¥iâˆ× ‘B7ˆþ`š9̓Yç|,‰gÞ‰hˆ'ž «8À²JkÂç­î¡ìÐÙ-—1¼¢\âú‚ú\¹ÕoÞpÏ3ïuûõu"‘ÔíüG¾4³L«-0óÊSÄŒ13Ì6c)ÝîoÀƒë&Ð{þ×;-¦ù.@2‡×XPk(ØÉW<}p9´œe&n¬ä˜pQ§o,”WÄÀ*¹"d>â $°'(X4¥w‚”S`Vuãó;IÁÊ R’Vg‘^Ae<(ú):˜Ù'u4v„:¡{av}2ú¼ž…4·©¿e“¡Ý&,›ÝêZkG pPç¸ê-LQIïEl;€£üÓG 6§S*îúî.©Ÿ¶©Ö¡Àƒ'O‘÷êv-r›^¶·ê$H 17ËV¬T6µHš®UðjeÜ }²@€BzQÌ Âщ;d£B'Ð á U÷åA! 3S_tq‘¶ò~Úô ¼ØW#~UgiaêÓ‰ŽÀk±G›¦!…ñ &rGµ®¤:Ÿ™VC1˜«V ×%@pŒiœÏæGñ!Õà7 ³Ôa ¬°²ÇM\Šý‡A ¬£Î£LmuzŒ~¤é/߱Ì-Už–$c +&›!2†å´<CåX VaD˱)-c4‹û1ã?÷[Ö…~ àt§•±ïQ€…Œ˜ˆâí—X,6ÇÀGo£4½ pOƒ, Òù…ª°#jÜ­ܽ¸[£FDÁ¡!„7™Ö@ÄM&7ÏõÅ|Š‚~•”ŸHI–/P8y3!â@案›\r‰†ÀlRH‡kÏh v—\òGUNtÔàʪÁQªÁ|¡ÝIféÔãI*`“OUd»UŒ?>(Êu’ìä9Ù£²žuÙ&ðЍ'`„Ô™ýœbõ…> ™™³X­\3%»Yç‘(íŒÔĽÈzÔy¼âŒá ;ƒÍ'ñSs ³Ð-肇—“Vø,u,F‚ôÅÍnp¹ècHAqR C<´3ÈLjØ4Oº—3ö†È u°[K ÝRë»ü¤Uô|Õ›Kþ¶ Ä!š[qT%!걞G»ËQPˆá`5\y`~>DÊù#æÁ¢f;ž/­&˜µ:űè¯yœÈÊ<‰Š‰Mó`Ïp ›Ù+ÀyB`ÆÊÀG!3­ÇÀð'’iA3¦0‹sÌN5£R|áÁÑêa&ØciƒŠˆþ>G:”Ç4ÓŒ]”wä¹”>e—f¥t†i²B))#9"h¦YL¸$tdæCÖ(3Ú ?Ú2“vÒÖ%ýã³W‡‚F5IàuLRÓ«ÎL_ÇHˆŠ{äÚU:Bª›çpzN'”†ÖT—NsûâEÈ»¼:hu"NÎ+Uº]ÝDBrAtû8ã{†œfô*c¨Éˆƒº{zCc§•]…;‰ê = J±Žt.èüœeÙ Ý2××€¦Ap’u› <ï4'Gâ“Ùô@óŠOwÃGå‰ ˆÉuŒ²Ëk:ŽäŽy2n¦Pƒ®*ø&tb@KÚĵK”r*hE+!à*â~Èg0ª"»²? Ns…D- KVÀÀY($÷ÕHô²`´âoÛ8‚X ÷áà†4<’àY¬ÊØYÁ©eœN†À8a3Ï)ç—Gäì26nì̇·Nf×!_w‘¢âS|ˆÞã%B.Œîc4Ôr®kØ¢ÞBÎs§äö]‹9fHb”Œß(xÚC[y§Ï.cÃð™4sŸGœçZ@FÚeÕ®Çè•Rß§wxÁ-’!ÅX+´#/1Â#iîeÝYCeˆMpåõJ{p K)×ã8n ÃU*«í?Ï’3ª@KIMRE}JG6¹:Y®Š#ÀYïð:Òªù ¡²`Óâ]~ãaÿ”¿ÑŠW`Iªë–9ÎfÚŸœ:}üÎø)€êz'1€QEŠ_uî™’õ©,ð2^96³®U?Oã×ôøˆ0§‡Ç{% ¼.©3]"&5ˆ‚/EîPC.Ë¥ËÀMBø‚@’æ|ÕÊ p‰êÀÓžÀªO%sB'¯ôÄààƒÂkdC«.„hÚõ^Œ\¬jªHÔ¸bþkqAᘡ%ù¬·FrlŠÄ3¯C@aWj—±pR™?ð|Li`™¡=µ²§ÁÈÝÀã «á.åsÑUâ+Ò²W)’1R³v’WDœl]a¥Ñ/RAˆþèÅL1E<}W0SweY”‘UBÊ›T‚ðZ±a!#&èîd…ð[s"Œ`žz-uUè ÈõrëK²Â(ÃtR‘¸—ÁÃ8âzƒJ#iéLl5%® ÿTKZ ¢êÿK2&¶xhÊ&6i9²‚€<[Ý¡(ê\àDÅÞõ3HY~£Y©k†x†¦ ëÎQuqÎe,¼9¸Äé9PO}IrHÉQt*íÔk5&«Ó-¡_êòf¶œ&Àã½^—ÜÁ„U“ëeኋ=DÒÆQŠwIYA#âÀƒ”e Œ5cÜË2`N”z$¦Ð4ÙÌ\ ”AAÂM’äD‡˜!7t„l õw6ç¿jcÌpÔ¯4…q‹Ã ‹Ä3ÿ("£XPFÉùÔ klÊ:uhdšP¤(hCŒÑvÝb7 ô‰;ìÞÓ÷² –Ð9MÑ)v ` ‰ed§PKà ;-$Fš´ËIÎ k²PšÓÀ4)Æ¢*ÓŠ‰¯:Ô©?"Ÿ‘©Î<¬ J¦àVzt«¤%c‡ª{Æ4†+‚Z˜=/œyW–ÈA„Ï‘<5T$áf‘fS¬ºd7NQ>{=r5ªööA¥F!>}â8QEЦ4¬Ì4g„`£¡D‰øyÀI¥öu›Ê¨‡ÕY¹p‹ Ô™±•é*jôƒ¢Ürû_&èlõ÷ £GUn­rJ»µüU\?Ó-.¯(Læ$®ÒZû‰¤h8='ÕR°0AfU1$Ä̱a]!)Lh|*Åa—º™‘‹D5Ø 9œÀð‚{%Ç <ì ¯„½Uru 4ŒÉfòžwúò¾ }ó6S2­ÀæP»v„ ºÑ”!dÖl¿`1±*Ö „Pë|W€h>a‰x>Nò‹–õU—+a ¼Y÷\6ØÐÑG¼XRƒ<ׇ ì9: z;F–LcLùDÓ5 ;x¿Ä•§|Åe"#˘ŸDPPiY;*q«ÊR(CnauÙ(ëà“» ®¡7t ÐC~ì¸âüA ©å ;±dÅNÍgN0ƨ°b‡^‘ŠiHGJ¨·u: eû4 (qùý]ÇM6·}  $jfS×€Èí¥©ËJ¤å‘«1*>¯ÅèBÚDq–õªÈß¾êôDû>ÿ¹”‡D5i»œ x\ªTWÔ5e׎Kz=í.Cåž;hÍJw OÇ ëWX?7Œ¦yv†Ø4Ìœ¨Þ(™ÓŠšDÏ5„‡V9†xs$—ìð¸ƒfâƒ7jnrƒŒeeÜLT:+P!]}¼‹4ðÒ¦FV?FÅÌ.ûI¢’V—CxAÖñãÚ¢;dU8+¼%Cx¨.­S -Õ› •f™_•«“£yS"éFRLF53 &!éJ†ðÛÖí¯½ó±ŸSDÌpòìŸÓíø?˜óö;³ýÜ–b°X,‹€EÀ"`Ø]èÑíŒs»æšÕ³¨8|W­¹ÿ¾.·:æÌÝ [¯*ŠÀµW\PE=·n[,‹€EÀ"P%¸êÊ¡gõìéwÕ1Ëß{vë߈ý8XŠEÀ"`°X,‹€E€€)dïºwU®ÇpʑŷRÊ"h°X,‹€EÀ"`Ø3À Øšå3Ë#»e¿™`ÏÀ×ÖÒ"`°X,‹€E`7@@›?¦ˆYÝU»AEm,‹€EÀ"`°X,i @qr~ ¬¨EÀ"`°X,‹€E`÷G€ž`bV î¦Ãf©Í[r W-ÿ®ä«­¿lŽDÊsË3ëMÕªU¯yàÁšÕ¸yë–]I¶=jW¢_ ¶³Ößæ-ÿqö×ß­ÛôÛÎ<,©c¯jÕêÖ> sˆ'Õ$)]ÄôÙçŸï"ËÖ¬E wì± Í¸wþ«¾´½ó/!v–!€àfíŠo.xqÆ ã?=(¼µ>0p×ÄÏ?ÿ<}úôe%;›·j—S°Ø•SÍ‘gö·½÷ªÞ¸~íú‡˜ŸŸì3¢ÑØÏ[¶®X³qÛö2vÂåçߟ{týš§viX-i=‘h쇟·½óeÉŽ²Èéíšg¤¾•¤ä–a*I³UkصÜ7þ¹dðì.Q² ší.×áž)çt’æNuûɘK‹§û_ﺾ½GÃÚ·ž¼lêš´”ºÂP£“VÝñð“Ë3¤ÏªÉ 0»<è’‹êÖ­»uëÖ¬´F2ƒ@­Zµúöíû·¿ÍµˆÙö¨Ì4pŽi‰ßß×?8þ÷Ëï NÒqˆ­Ô9¨yÃC¿Y²–E`vùèúûŸqÂ1Z'I%ÌÖÒqÿ°þ9_æxÄœR¥,³E`÷C#æd¿S›µß4ãËS/~{ÈÅÝ?˜2ËdH'¿ÎúÇ(2P”Ž¥$d³o1 §, !‹1`vÙ†ËU®;ìØ±ãÀܾ-ç¾çØUåúR2Çïo‡RëãyËO;¶…_ÕìOŸÑbZóúªu››qˆ*€Å0» áò9š™Ü!yˆÏÿ·v;v>¼Þ³3þÂeÉ‹@N à‚‰|´}‚eTÌ[Ò½¿ðó!'7n‹ervVÓo§ÈdM%Gmœ¢T,XÞJ@€×.'úI¤ [•i#›­f{TÚ ›£ âõ·<f—á3uÜêjëw_Ï‘¸l·è\ÚF‡"Rµ…µËj1ÆýSƲž;wžsÛWвf¦¼9&ñÒÉEÓºe¨:Déôaéf~~Åw¼0#æŠ pjëc×—<Çár³“îéRµ,yð¢)oc¢Áã®è}8¦>ê\¼aòt¸gêÉ«ßú¹÷Yøý~í[ÿ4åð{¦ž ɱ÷ÜÝ{ÞkÝÿþ% Ç9>UÒy(zFŸ;âºGΪ-•Ã*²(È¢giGîË?кc:cšóU0Ž«¶¨rˆw-¬‹Vëî€íQ»wûµ‹Ñb hô‘ý¯‡Dii)ÇÊ›7oŽCÇ¢ U ç¦‹†CéºuëjÔ¨ÁªØâ† ôìëvœý÷(¨me-ÙDbåå‘÷Öÿ¾è—5ªåµ®UãÔÃ÷‡ ¹bq³ˆ˜aa†±z+‰ FíÞÑBÕç½Öíú/‚?޾§Õ§·ßþÄ2Ç9uÀ3ÕkŠsåƒWtþâ‰nnHÀã8µ{×ûO·þÏÔ;—ŸÖý¹çnëïŒ~þäÕ·?ˆª‚å`ˆÂ?9×ô¿}1*¼ûˆ¢'ºõ_£”S_»734?ë™{οâceÕ¾õ·Ûßâê<òÍô:ã3·ú´Þ?*‚}µÔJEÚÌ×]ßV»ï”‹_Ú4þLi(cZÍ}us*’T`é5CËý˜Ñȧ ºüÞ¢J­V’ÊU½Bø±º = aÌ>Ù×jÙw!Ø¢Ö£<½%Aë3o&Ýb¢¶ öÎR+ˆ@œþÆSÅÀ°äÂîõ>š}бÂែ™™ã:;Ά0:0èsÌÊ-à_Ü·[½ÿή³6Á7«âRP¨ggŒí¼’VeØÃ"`È8.¯þµtÔç?.ÚTª”w®»ÿêÖÞ¯F¶ pç˜ÕÌÚoMaµØôÊm>áœ5ytë±/0Äl^ç§ö±÷܃a4óÅšÕé|ø’Ÿ[ã†ã~,ÛôÊ´/Ðâû‹>¿üäÆÍœÊ@ sÃ- SøÈ[%Bá¡«>^ãS¾éføî­çu9±¡ûN³xÚ€w/çm›VI„E¿¹^{ù¹Ï\¼nàs™º‘á³ï) à»BÛ·o¿ ï°w6>,bf PbWh„Äb©aÌéºqãÃ`ëÝkÓRÒ5…?ªHÁ³JgUõ ´´üñ àvYªx Cî?¾­ëˆiäVŸ{?}\üpìñ4þ÷´> +(/ñÒ[zH§Ú%/ª.åUýîµð “[µ§ïUÐc+–Übð^ðΨ@˜K±²ÃsÌ£65\§™æ˜÷Ýw_VÅÞÁ³žÝ昿zfØ$þ¸Ã ñ—“F+HQÐ8«îÍ7õ¨ç×õãÛcî/‚;-ë÷ .÷KÄ£(Cq,êò&›[uÉ•¿„6Ó\¼ªØ² v–—ßóÞ‹×ok_wÿ?U{GytúÂsn³µ|ÌYM«U«$–öªŒeoÝWtý-¼%âÅ%ãú=G´t4?+ȸ—ÇùcOJ´t6h\×k«ùY“/wÆõƒiæW>xA†9g`¿·Z¸þÝjþäí·¾$ai•‰@àE žwÓ=¯Œy|ù™26®LrT÷»¿Òò¼6Î+¹é^@íštõçÞOJ0P^5iÚÇÎq]úžnpì7à2ùðÜ{tzó݇ÏT¿\xeÛ·ÌéÍÁüݳ(!ÍŠ D£ü½ñ©Ï¾ÚÚðÑMÎþ Þ‡÷æc'À3DÀ7<ù©Ÿ® cÀOzÞ»¾>\³ I3;AÏÎxô„ª=Ç ì$gÐøñ(ÿøöÛ°`;!³§–­×ã¦Aë žNˆUnÐy̥㹬V®•€jí‹A^ä6 NÛ–nY¸ò×£ëî?¾WÓ½ªc¸ÛõȃMýö‹7}×±N‹ÃHuš9t4 . ž·ŠÅJžýpUÏó¯l‹}·~•Ó¢ï€ú®àwó?YgP|<8ŒñÜÉ©´N4\Ñ‹üFÃz”×îÜ…ülö‡Îu—üwŽfºá¡õ×ý¼LIÇ”Å@s¸¿mlp„VwÃg›M8§§O7òÆš]uS›Û‡>†É3¬Þ„!D"‡Ÿ3‚g\{í‡rí»±dÄ98°ô±wƒb8€¶L$ÊžÄ\’Ô DY–¹@Œ©JžíIÒå9"‘'ËãÜtUAH½ªšYÒ]wÝ%¡Ÿ@ÑM4èªeKŽj~4Ô'q¸ ##$é§·õ›vïÝ~Ê›ÜÎn»èþ…Sœy·w­Ü+DûSÁ4+we½Í—ÙÖØýµU¤¿É¾Â—Ø1ƒ;ͺ¶îöíÛ!V†Ï1‡ÑùÌò÷7XªñÀcß¹®Þºõëaˆ’Õ ç˜µìê °Ž¹*ëÖ­­_WL:ÕëÑ£rÃåª ”õ=ëÀI]²z«SZ^Øê`—yíòþ5ªwm~ ¿]³U Á©8–ö3ûâÙ¢“»¦çœëŠn½õðÉ÷^õ^Orá«W»>ðÅ?¯{õˆå³Ývëû_øxýý⣯þ<âÞÑç‘’@ILR¡¡cãêz¼÷"n ^¹“âö+ç\õØ‹]œuK>[ÇRgLÿ??ú½+x Ç’±Ú…qÛªr #‘\Ἲw”;ÑòÒí'Ü?¹UÃ!ãO9´© l߉yw{è(páäU?]H*ÃKŸ²¨ÙV­jê€ÝûW­ºDæÜÐð¾ñ—Ÿ@†æÝqߟ°húõÄ éãfssn8vÏhŠB…ãÍ<ó _›yÿ PòÚ׈~ýæ¢AC›®xsZ´Ù£Û·Ï¼áØ;ZM^5¼\ñTáɧÿ×E90ç5¬é¢ñ§_X>yÕªÓÁ# Åœqw´:kÕöÄàC¨rÚB×zùå—oܸqêÔ©L¼è¢‹€¢ûQ³fMÓ‹.gž5âŠ{_8ýñ~Ý"˜x¾à%”?klÉ £q^Ùéå¼5c`» Õ½þõÞ-§xJÁÃf=ÞÏ™vY÷•CXÜq`íDŽ擇,ïOjàõCëQF¯(-:å; F#ÖŸ¹jryñ-°u° Nèªô®DàõÈz}±¹d¨H“ºÕ:æ?¹²¼ÞCZù§Ë>„Â7ž†…ë˜_øø ?×1C„MzÞ¿¸ÉbeUl êÙ×&žRµç˜i×aÒ¤Éo·ó,¡K'à&{^§á®^p ³œΗ_Ö%Ÿ€µ.áú šÙíY·¨ׄÈ庪AÎ$Z/rÿ°"²ës#¨kù}qW‚ô4~’'š©„\Ô~Þ$\Q¾t_Ï‹K”ÛÿÒ¯çŽX#ëå3gšõsw/¨Ó¥;·o÷< xÛ¶@Ü«Bu—³\ÅŒS¼”N}ßÒ·XY,™<îŒÉ”ûnæ%}gz=ñpòhª\æ¢1·yÉ\d¶¯ IDAT:ŽGpÕËãn£P¥«¿öÖǽ¦=Θu,>cN°£–š ¾u‡^[e'¶s»ÜóÔ›¼=à>GR ¨íÍïN¿¬ I¸’JÄðÚËH)<©žýà–‚¡/“LÛ›Ñ"ñ€Å]Î8ßYx$sbz|IIi§d¡óõ‹'7¼›íœFéIMÛ.Ä’ïß\XxÍÙoŽ«dÀés^Ž«WZòÖBçüa]ÈT½ל÷;‹KKëé Û¯þådçìw§3›pÿû§ÿ±ðæq÷”–~ +nÔ«Ò³°KÀ7Þ¸xñââââfÍš]{íµ@Ñ[ ÎçÄ)#>™¡m×ñZp|ÁÍÇ–<2FÀ}¦‰ÕÉ –5õÞ'X‡­ÊXðÄ„ÂÉŸ”4@©ÓNœÖgHŸ®|8¢ FÕŸ}0í¬!% œÛ| AëQF¯Ø±3Ö¶iýÒÒ_#–ªF*zwH(S:ý‰@w,1)*Ôß„f5Ç|Áq8öoÛ¶be±ŽJéÀ`\(·”Å6”â>V};ÿJׯ_›Ž³*¶sÌzvÙ?ÿ¸mŸ¤ª—£L°0¡.ĶÊdt îŸ×þæñ7Á*䯞óöÇô¨§¯^x»; 2k×Õ½yüxHax'T%×Íãëa¨8ë«aË£×­ë>~ü¥¸HÙ¾šUAøMr®>µ%ÑAn°ú_÷ÌýB%:ê8<·5üJ°¾Z†­ëIu÷ÔN2 ó;ˆ×ó›.¯×Ëgîp/q}Ý aRùØfN³âÅVvmshíj@e¿_ÿ{Ñgkö*uhR+á’ øÐ}6Æž9f —åá¦v_D÷„:î¾­çÖ ®O0©ã­).ï䓇Þôp·›ß’®nÀ¨yd’§kœ+'74öäâŧ8îÓ¯ë”ipÃéóäâ{ñ‚LGÔi\>{EÓï¾-¼|ôi±‡Ÿ\±"6æFÑèJ’’Õ“Cí7±X›KWD£´ ­XúÍ7ÓÎ,Àéo8ÎüsìWAx™ÝcŸ}öyøá‡¯¿þúÑ£GCè`4SÈ×òÆ}ž.éƒan«±0£Üpù2§Ï@^žÑpÐÀ^|´Êqð~¾6§Ÿ¿>m®¼‹&•N`¿ûÙ-§ç|øÑw#/¼ÊF¿´ðCëQ:ÔŽ³röŒoZíâmÄè‡n—K¶W(å^+Ùm£ÝÉZ…úÀúƒv_¸ðºÆM>©{øÂsúáDÈë/À;8Ǽ`Áµ~ºTRÏÁó•ô||衟Ãeûœ Ý9•×_<]ÏNáô¹K~«âMk‹Ç÷À8oØ3ÎøKë®_ç¬ýCh::´ƒïúòÝõeÄY¿};º³ïÇùóÖvèŽñµ~ÔïÉ+•q{ÖúQGÐQ¿gw Ž[ݺõ'MS·nàmƒAnxµþès(à ©×£{‡"zŠZüïùõ­«Ëu÷ÔN2™ùðû¶^å¥~síâ‚ßùݨNÚ5ò÷Ž”ÿ´aGÿûþ{j»Ãw–Ç>øz}ÙÎÈ_þÔ²ÎAû&Œ˜ šÝ Y˜õp™øvãx«Ü«¸õû„U¡(˜»ë‡·µz¤ù¬iƒëMÜèÒ±#ût¿|Óf¤lõ Öë~ºFYñÝ‚6̓º•³ß\àšúuY™nÜ´•3füÓCOvØF§:#†w Ç6ŠAºä)ï ‡6mùFŸ| „k“ÆOësÍh´¡u`H·);íš§Z÷4Ö\Âuò蒒ј˜\Šêb™yXÂüì³Ï²Ã†v#€ö”6të°™aJx@ú.­\;ᜠzN¹pØ#÷¾°òç‘egŽ5Vbèf´¥CýámÝÆ´úWÉɲ]¼¨qôŠÆÍÛ,øn4(4È;°ˆ·+êVүﭡbýÏ h÷£Žðýþûï+»sÌt`0N*‰"ô —ùa޹víÚ%«&9f=»líO‘N}Uù£^=çÝ?ÿ«Kqá‚wÓ ¦ÅÝâ£+­º2z6l­¹sG²n˜ÎWÈWøû›$´aìÀ u$öܬ+… ! ó» üN¸ä‡Í×=üñŽmeGqàw«yóCüjZc¯jùÓQž–ÂFzМ*`´6ÂåݲðZßtÁØÇCwz—³%9‰\´àEÆ„”Q "7ø÷Û`WE èÞŠ>OÃÔ,^I5U ¬*=ið)ñ]Ë6~ÓºN•>éî·„úpëèà©=NÏSrºdZ §Á0—\AÎvŸÙó­»O25¾ž3»·Òꓨ^n wU* „ÿxÒ4˜BÆcå'ï.hÑ´‰Ó°YsgÚGmÕ¤É3úœ4+Ì2Þ÷s>ZIRsæ|+¤œXè¼ûÔ‹ï:b~V3_6Éó·G©ÞòH³·qp»pËËFÔÚ: W4øçMãv|'vžÙKOêzY¡Î`JB  ¿ÉC§Ì4Gïxn~¯nÚÿýÏýó;ð:øàƒãбˆÕÏ3á9fÖá;¬9çÏï¨W:uôl“z‡E¢1~ézªLú«·ß† `–T 6ßܳþ:œšÖŽøn0£ßy Àr Šx|{V¢§©‘¿ÝÐôÚyóÉašto§ßCßósÁ „Zß­ \.Yñó_FÏܸn݉­jMyÊ«÷vûÛü˱¯Þ×í®©î+g9Ÿè¡wþyÇÝ M[™Ý ¸ÎÉkáIw/<‰æ}TBÔµÑÀ—„4-kˆ©Ð'kÀcªr" !ôΩ¥½B耠/zÔz˜ÙÙ@µZ=5ðûoTp—e¡áLÛ]š­<¾UW¦Â|xÿ_ãÿ +4ˆØæÊOóíÐ|ʉ½®¸5àο6ÍWŒèz<Þ÷ )X¡qd«[½wŸfoÒ{‹ì, ÔlDGö=_w1h¥ ûŸ§«¨BÍ€‰Í§‰@@“aá&Õ¿ZoݺõµW»AB=ó/ ,¨ƒó4A#2?Ì(vØa¯“*>pŽYË~·ö§hloUZõǾnذaì7Ltâ åz—Þ ÷µÉe8ûÙ½ç,Ê×ïС¾¿Š¼aœà7'KMvœnŰúnBÞs‹:ƒw&Š;äâ»ÁÊŽñ9Ì¥ƒæ›4ìËI°®¢gg^€Q“äWbråë×]7f…¡@ðl:rŒßsºãRÞùgúÜV;d/g r`7¡ÁÙ÷í²/¿í…_·–víÒjô_NÝ{ï½ê¶÷á‡5Lf%F òê4nóü”g'¾„Û¶ó1༮×^7¢Þ‘°¥=,9„À½ÔïÍ›/=qÇw¬YãŸ(ôóZJn!РAƒ»ï¾ûì¾WfÓ­ÏîkõÑ©rÇŒ öG¡²;Ðâô·ÖÍë.Z¶î˜‡­¿â~æßŸ{â5ñÕ¢³?]Ü©u½5ƒ{ûéÀÀ‚ŒÎuOÍèÑñˆú­Ú]Ú¾îºËχgþžÝsÌýûüGÁ÷ZQsI3¯ÌìþÌ‚-œ~衉 í¥Šr-ñÙçŸß2,k¤r­^¹áí•‘‰‡²äFuv¥ðÅøŸÏ¾=î©ÝOiÿà¨A.'%ß7þ¹ãŽ=Vù}Õ•C~hìs¯ÌV”Á}»÷¿ø’ 9f;½¼+›ÛÚN 8à'˜8³G©©³ÜYD`´¬ëønä­xÏ_èa{T(4U¼ NãÅð[mý ø¸Ø+beH¨9æ@:0¬Êˆ9›wDk<òÒ&ø}Ý/Gr „Å ¹%k~Ò³ËÖþ‰]…«8ÔÖ}‹À®Bîµ½r@÷ÃjEÿÔóÌ$Ãåä]…s•7–ÛËÑo‚γ?&¢åÜ…pà!+W®<è ƒà‡Ô]è†5*ðôàM›6í]#k[k­„Mëžø×uĹçja{TªMY%øã÷7X\—½âoÅüFÂèÀ¦Ï/åçåA ‹’g­×SÇ©õõÚ˜³v³¦°Ú쟟tt“å‘9Ÿ|5ûýÏRR³Ë.vl™’Tö™áî¨ìµ-¹€ÇÉá÷؈9ZÉú`°X,UÓÛ5‡Wq657õR“´ÜÝ3bÖÖ_ÙU»K#ÛzX,‹€EÀ"`°$‰m¬nìL牘=·+Ä|HÒŒe³X,‹€EÀ"`°TeŒ Yß+Ã[-{ç_Unfë»EÀ"`°X,‹@:èA³Ú+çЮcöAb ‹€EÀ"`°X,{j79±Ãsl7'_Ø+#ôUtõ‘yûÑëê9qØR(šuhë4~¹£áÖYíÒñç‚ÈYÊÉåãN”^±oð~â„¥‰ôTÄÉ ê´ªR@`Ï9CmM-‹€EÀ"`ØEhQ1„Ç|˜wþ¹®Å]•Ñó±~檉n\òØ N\NWá¬;òz¿2xú îC5 x 5¨r‰n=t9YOƒáÿ]8Üq–Ž¿ ÅÍ ;Þ_4wmo™¤{š/¡Éø¾Å¯`¨R[<Õës}'¦äke9-‹@6X½z5<­zõêðß.¿ù1ç±+[Ü6î·zõž1l¢ÓrlñÃÅnîïÏŒVøœ3øßïO8¸ÛÎÝÜ ¥Þý{Þãú?|Ìܤ$ú›Ð‰òw†´W<`Llüqβ—;u×âê:±^ÿiqË"‡ˆEÃP¡ýÅ1–oDéi…¨«ðY€žké‰Ê®Ï‹&ÆÆÄ67wú€Ï>6nXÛáT©âoê/Ùü>WÊãdã^¦ÿ{+äüLç&& FíáE`? ˆEÀ"`°X,ÊGÀ ŒÃWeD(&=8â,s€-JëÑu "Û–Fqv~Éw# gñˆŽ§½p÷Ss¯® bµÅ6¼Ñ Žå¯v:vB1%h©P¢'fÍ™EÏÝ”§Ì+-z£hƒ Û‚Ý4±Ô‰J…¬ µÑL0¨â*¼ GÄåšÏ q"µ[í8_EQ'UªãŸJ9ÝNêxÛââ’eΑTSÖlølzƒŒ´ða¢|¶ ‹€EÀ"`°X,\@ hý°Ø+Üã…j4.¸ú¡Ø‹Ý@IñC󺾺ԫ®èºÂ¼c'8w?Å<¶–.YôŽÀóóLñz¨S g|b¦ôèVúh4>&ñkaK-‹€EÀ"`°X²ƒÜ¹&n^“ö܈™ ŒG¦åV×kc?ß9Xª V>Ö–,€DA¿õ9² ´RÐ㔎p¿Œ³Êp¼÷ê¸å+™¿d­ã¬1݈ÃÕ8z‚Y}Ôâ韥osáƒÏVñúš@ÿµ †õbâ3h ‹€EÀ"`Ø”••͘1ã÷ßß¶­I‹@®" ÍáO0‰ë}Ñuwâ’‰yZ\wDììV˜…-œÂô‚±Oþƒå«/|Ç/,œxñ±›º¸ðǾÐ^…Ñ>%Íþ<÷sVnú•ŒýüÏ0M;sIa!Ì[ßáã#é ã5éPÁC' ñâ;'t…¨Ë ò¿@¯àCÎ`bÚ³ùJA ¯ã“yN ^ùøÍÇ—Jp6ZÍW„Šø…i r–dïQVõEñ?+ÅW«Ô"`°dØ?îõ×__±b$Î>ûì„»ÎeÝAkÐ"°ËPAs^Æm§N™<ñÅYì LB<¯ëµ×ÿuÉ쑻̻\0üÞÃy¾kBÄ"ì\pi÷aöRq) ‘ÒΠ1;çœäDi3Ľ ‰8åLã;¥Ë¡¨ßËùJ¹ÇÞéõÇèÅÅOìñ b°Xª$Æ~ÌÛ·oÿý÷,XP«V­fÍš}ôÑõêÕËÏÇŸ í~ÌU²­Óé!Тý)=øÉ¯¼1aMC.ì~ÑÅÝU@…€"=+VÚ"ÛpÇS@ë꘥³Bœ²ÈÍ´rn×Ëzg°X*ŠÀ§Ÿ~ªÂåºuëîØ±cË–-R¶t\'XÚé=:Kje…ìPÑ<È)rБt ›Z¥wZÓQ_ÑÊZ¹,#`DŸ*¸í D„ >²ì˜5gÈFø YüÑú=XJi<ø´ ÝWòbø²‡EÀ"`ؽ8ŽLÔ©`øÜ>yw\§#Š;Ž]2wxøÂËLØ={.Ä›š„¡¢é÷žàô$G2zP­ÚÍŒÅz’Ú¥ãÆ9Ã9Q;VY. Q±|P „",–ë˜ÑA)Û¨ÀÀ[ô®Í…f³>d¼×ÿ“ÁuÌqÉ*±X,t(hÝqâô¢ =)vsº:ä—Žëáò" ¯ü¯~XR–sghMŸ*Ã!Ûp9K­aÍdG®m4°í'—´ýôâ¶Ÿ]Ôvn¿¶_ômûåmçõiûuï¶ Îm»èOmK Û.éÑvY·¶+Îhóý©­¿?ᨎk¹²Ã‘+Û6û¾U£ïl°¼qÝåõ[zèÁ‹:`QËãfÏ{kÉ"`°Tax%/b€Õy¸\‚?‡ ‹8Ô }Y‡W"€‚^ý0d¦r ˜9t–‹5\°XûˆÃ]zAîÐALÇÒ/ Õ¥8«(FÒai¹†€/ö¬c¶‹5s­½¬?™E qãÆ“&=/¥VOö#‡;]"ü”Ó±^ü_¶³ RðV ™uÌj³X,»)ÒÂV±/ÌXê,-™Yè׋—PÏoý|,¶dlG§xD\í\4s †uD-Ñ"0 5aBýóKp±´0+ž¢h!îô°©Áé9Yfž8*tÙuÇÖ•¾ÄÄç˜%ìb¼A³Œ˜ê‹¦w±£Ö¼E ÓÜyç]wÝuç A—‚b#V ÅÊx”G9ZŽp¤ Q2›ÏA †Ÿ&tÇ<³ —s°Í¬KD`íÚµ¼t^zé@|!bî×ÿBx§ø˜¢eŽœi>‚ä*P¦"þKu3 ÚÓ{«ûN 7ªµÚ¨”ËF–tjñB¿°ÝKÝA®,¬~G ý$ÅÀÉeÀŸ9ã/¬ÄÞZÄÕ€î»33qYÍBiÅê†ãcJiy„¡B‚qtÚ¢=³—'s¶&ÇÔ*%*ûœõxáò¹çž[³fM ò¥Þaˆƒ5h¸šî¦¿M›6ðÁœT#f±-³nCfoL02ù% `s`0êÚ„ð–¦ýâ¸0Z*Ÿ¦0ìò,ÄÖô3 6»{!`ÍâÎ?>Cv¯šÚÚXBà 1pÒnòÛ‰wøÁ·öá-VÞ¹óƒ×ú\ñàñW;Êhñ2­gæ›S]Ç {ìËÝà@X¬G·Ó9ü=âШviÁH>Ccp'w!o‘4ÛÌáP½®xÓI‹Ew !XÄ7#dǤP€2X°tܨùƒÏ¿=[qññ)€ˆDÞꓚ O“%ìÙÀ™«ßî%¶b¨ŒN•õsf—8àx>öïtüöÛÖ_ýí§Ÿ~^½zÍÊV­Xñý²e+–,]vðÁeæ'5㦿=»_ÙÚç>j½…ã³¾Ã>(;÷Òz˜<«Ön‚gÔáÌÚÓÜq VTà^8›Åt4úÑÜùsߪaˆ¥‘ˆS¶eûöÛ·m‡Ÿe¢ÑÏ>‹¥Í©®Ê€µs¸ûQOøQ.íÆŽ/VÒAÎé÷|àÒ;·–’.àÎt,è «ÿè@Ê(¡ZHäÖNû\ÑNÿþ¸d1AMÝ:Û”E °OÇ V€ …tZCüH?‡Ù ­lvðL0Ó‚eÏ~Ì.CôlW2g·Q¬µJDöNnTgm“zëŽl°¡Uà G5^×¶ÉÚöÍVwhº²ã‘Ë:¹ø„#ò-}4}Ì/šJ.ÛéìØXºMN1óær8³Ð)Oºð­Ü8­Œdë^­Ú‰9g¸å¤]+ #Õ´(%ƉýôM‘`ºVîÏ/AÃ9jïíáqvÚéûôšsùÄv¨‚Z«ùØõ2¾}ÝËÈhL„ã!ëHTš´ic¼³$åÓ LËóÕHÒ>Oš`@-«¯¹o“{8ú {ðÓ1ÊÊÊÒéb·c}?ä$öŒKÇ¢•µ¤ÆÃÞ}—)b†ÇçÁ g •y«¹ôMY @ ¬\nj‹À"='º3)‹EKcѼ";Ê7CÄ,Q‚K1vîüèíË>y^ñë§9;~ÜkÍŠ÷Yöôæ§5Æ¥-ÓÝ)GÌNA«vüëîÒE¸’f†iÇý€ ÷µâ‹zóŠ ¼ma±®´ðìÂOÓÉwùæm|{’RSàÓÄ^þKÆÎw·(õ™3÷üä†RX(ÌKDsíÍ0ã½ñÞë8ŠÖ•,ëð³ PY ‘­¨w€BÙ`xŸ>¹™ƒy‹*VaµðUß0h³{42Û§cà\š=,{ |»Þõ‡?æäÁ +ï}æß‡­è‚ì LÏñ‹¬ÝÔxÕÏMWþÔ|ùO-–¬?jñú¶ ×óõ¾ùýâÂÓºÜ~ßÿø™ç_ Añ+S¾œúì≓t¶ÿ4vrÍû&7õl;—a–Jq XÝKy¯ ±”BdšS.h;î‹EÌfct;’îYÁ|±Æ…“xôž®?Å•cÀ€Yï´ë§åS^q£$Åä3gìù ¯ÉoZ–ºpN4,«€™Cfÿ£XDZÏS ox@$+ê tó;‚˜dŽûôÐZøªï5hs{8ò»^ÐÉjŸŽ±‡w[ý=ù7b¶ß!÷¦ß£ª ³Â1'’ÃG[7mxhó&uZ6«{ô‘ ŽnqDÛ–Úݨ}›¦Ç´mÞ±]A§v-ø>ñÛyÿöGæÜõćNÙ†ÒÒ²_þâÑ×¾þç› å^s/ã‘2Œ´”¹¨d>Çžx^4#hÃý¸ŠÝZnºï—õß‘ãÀÄŸ IDAT* -¤ø<Ážÿa±u?ÆôÞiÝpwUަé^îýJ#YßHôq1&>} DÔ’-‰àÙ>#1R–Ã"°" ÇÆj¯ ­ž6vÞ }­ÒŽ‘¼®ÄPË3pÆ9æDiÆîîƒÐÒ0iüÃú¸<ëA6yNéÆ²Ò²Høc[VÜýô˜þ8»Ì»lDRÿ¯»# G8°1°LcâˆbsÒ­SÔ¼j™—BøÃeR ÈðÀV±°Ó>¬í‹*b Xmúa3<Æ §¸ã R©¹ƒ•¡·úó»@Ÿ ™ån!žU×D¯cô}ÀcÎûô³*¿¡b¶À" O]ßãä÷LŸŽøéPÀ|†DRý3䜵Ø[,» ÷*¯‚bŒ˜U†¢ˆÔC]VkØ"˜ZŽÅv81Ø ã`ØòÂeXÑ 2Dɰ¶‚fxâ5„ÅåQ÷•ƒIéòð¸?ØLcÔÓÍ`!<ÙöÕà}3€È³Ë(™ò±žãÞ¥‡ÓÅj±C\eÚ k0™Š{ÐaÀ«–B¨à\%¸Ó>¬T–÷Ãõwzá*žW‡Û¨DÞIËžiýC|A,uäD²§cÌà½)QŸýîØn>·fžÛñ³ Ðp ÑÀâ“™í¤9üVO`óýµOÀ=ÁäJ<~- +6kp0N]·ÀÃìŸAØŸ³Ì }>ðl £é·4‹€E Eô˜#ã¼:ÛN2y‹³T¬<ð¼®×ÿëây¦¨Ü²[*ÙŸºOÉ>£sËdŒ½óß§ýa],¶óëZuhÓ¾;lIÙö-;ß)Ý-ÝÝù;è)~í¯+וMyiê«ïWÏû+h:Ûúí‰Ïþ|õÝ/sÚþÌŸ¼ñD2Xž  ÐОá"8‰AÒ–f°¤‡<ðï7Þ:tè¶mÛ`†8œMˆFÿ}ÛÖ­[ñ^ øÅž~Zpd³W^™væ™gþ°1šä¨›žkVÚ"°ëhÙþ”Çýcò´÷Øœ–º°ûEŠgþ¹SË|c`г8(/g^!OB‹ÿ´³ø±ÔÔJ÷ '¢ùôŠ[ðCŸ"á°„*€N-Ó¶°<f—¡£~üPL*Óg—q£eØD#â”GáyWøÞ˜ߣÑ-«Ç:;69¥œí?¾ƒ»6sJ×À3×”sõêæCæ«"ÖE‹€EÀ"`°X  ¯ÊiïL*º"c9]»v4Ão¥…ÓaK-ñÚYk‚SÐsn,ÙgÇ'¨ [,Ÿ¾‰qð"ïíHÁJðn§Œ»lÊR³†ÀÎòH,‚3,Ï I”¼†/)Û¶¥|ûFx©9æÿý{.ÌÀ"f|b6>ã$}3J·ï(Ý^:¸î›±c{£;ê➥Ûà‰Yü€Ù¬ÕŲX,‹€E ûptÌ“dî&Í{æßæÍ›óóó?ù䓎;î½÷Þ¡•ÉÒó“4ûx»Ï Þ'¢…zg v?`;8'²=Åg\ÃÝzðëãÿ8ïöéez‡0'˜`ä_!irŸÿ_ÿ4¯dܽuii»'~Àµì\÷Ã*‹5‚5›´}žç$šL6o°X,, WcïüËsp9­¨ˆ%XWîãغuëâââxÒïü©¼ç'éN¢±y«¼ICmhk<9 ÊÕÖŒ¢ðjÛ’ÜFOГJ¶ãfGb§þõ»¯™{üÐwº x¾Kßvé3öľc!n†8‚êvg hßuà1g:¦û Ž=.ëÐíR üáô‹xߌ#;õluÂy­Oî[½Æ¾ûì³OnWÝzg°X,‹@Àx‚fñd?TRò‡ýÓX¡Àù ƒâ 9|¦CfžòK2ôŠð“Ææú'Ÿ<µÅç{M ._7²§ïqgÌŒwÊÀ$,c MÁ¥àÐÌɇŠÍ«G<æm¦J!aræ˜#; æUËïÜ×,ËéeÜTΡ¹äX¤œÞwîœýÒƒõ5øTXŒ1õÑQMš4~Èc‰‹€EÀ"ÀàíDÎÌdVDVÄ2r³ßf%×g¤~ûï( `ŠKJ_C\õ)r ÌÉ8•L©<÷™"ކÍ*º˜Â’ ¸ʽÐç"îl Ï:Ã…ùžä›Áç'ñ3rÁ%­G©™c1É,o 3øP1_E,¡J ´† æ›Áò Zƒát»eùéÿ8õêwO¹ì¥S/~âÔþãθøA\íuàÆð°JÝðð›ƒG= —íÝ~aYºEÀ"`À˜óž¼Q{e¢¤ÿVœi;x³Sò{zR4¤p">ð)y5™©„æLjµÈŒùª¨ƒa «¸˜Ö1K2•V<`†}j,XЮ]»5j„„!sÿEÎ N¿ç9\º÷ŽÖC‡npÅô|¯žøÈ³þ¡VTNjXw:>ÁdÌ%6`9r[6Ž›Ñ¨¬¼^Aˆ‡qŒw7ÅyeØ•'˜!‰12ðÎ?Øw9ä€5uëÖ…B»#!K¶X,˜w‚+üH§ÿK‡‡ü¼§‚å›+ÜSÈýzÓä¯XÉÌA³ö”ìôÜß¾}{âpM`ÈŒ>«Äç'i5Á cê !^‚°Y<ØL Ñbëì5N~+ŒÀÈ+zßúÜuÝE¸Ã(ìG‘1†ËpC =µ4ÁŒO6‰1ÃÔ2L0Û9æ`”-Õ"`°¸PÀÜ«@þ¤Ì4Í9noi¯îÒ„p¶Œ~\)ñ "ÔÝERÖÃ@D ÀoÈüô¢q é>÷ÔœðõË‚#H2¼ 9÷n&¥GÓâ–*#:I÷•ÑáEBL¸>HIݲæªpŠ5, gT-(áoé•™ åÕìúçIÔ ÊMÈ’Rb!›dý±~1ã²æ¿»³Ð©-d†HbÓ¦MüããÍ.Ë*bDª=úÌ­¹ÄO>i,ç'©ç¡á³Íè÷ÿƒÁLsʈ¢½ËfãX[•ƒ,Ï€5+ו®X·ãûw|¿®ôûõ¥ðdì•ëwü°¡lÕ†2XÖ û«ãV«EÀ"`Øc3Ïá*LyXÔwš Ïä|@’TZ4/Ö´5ÑLGÎXåW "Šwùá!>Ma|„¯¹S•.¦”ùMsºž@ ®_6Uå€å“_z­¬|'lšÂ†Ýæø D9ìÖ T˜†®rõ²[,œB€—dТKœenñ@ÑpñïŽcGÒµÍàŒòìú w69ÅÅýúpÇ~oªQDZÏÓ’äŸßº©ôÈJœ^¡=ì¤éE½:EÓç)C *ƒ#P¶£øñý|Ǻ~å~o—–¼P<ø®”v 5!}Ž:|o•©\wÕ€®@Lgs5•ž€„¯E¸Ålìó‘!¨£L!ž°Ž£9°^üÚïÃ'¡*Óv¶ón8,ãbí™úÔsŠŽÁfÌ)JXv‹@V€åYµgY,=Øôª¸ØQÁ/@ÀakB,ŒÛ—¼sÐ ¤1LsÌ1~Y3ÏΨù¾Û¦4}² ìÑ6\â{².-I(P™ †3¾»¶2efŠSº‘,ŽÝ ªŠc%E°ö–aðA‘®œzfRÅoýË„sV‡EÀ"`°X,UX[§ñ¢^ÓÐQ-ޝ>k¬·‹54 ÛÛ·3--¤~àZTí³W–ük:`ßx<±®ÜïmnŠoBw7¾r¿3!wmù"€6¹bëm°$£9°^þ*$£*ÈÁ¬Òd4¬öÊà¹aAæNžÆnY­‹5f°X,‹@î €³'>¥XI®'÷³ç\OÜB»_-œ×-éØnQÁ5Ç<ã K1øÎ?š¢†í&Nl'žbæÕè—ÕËÑŸù…ä®OÖ¦“‘Ëï­ÿö'¯'µ‰oBð+7]õ@ç¿k W¨h°8£H='Ъq8ú;ýœšýºëå«BRªüʳG¡™äî LäÕiò‡)ÏNzê…·9ˆ†¥ƒÎ?søˆõAö\³–,I 0ûÓÅŠëŒÎ-“°,‹€EÀ"`"°zõê7ÞxcèС°'lvª‡Àö ŠFÿ}ÛÖ­[qg¡rØŽÞ"G6{å•igžyæ£96êÂ2ØQ­ùÎ~³~n˜¦÷ö?G%)YŸÖe>¾Ý„€wë-ºËÞnR½xÕhyÌ©cÿñ·I/¿+žd’Ÿwy¿_2ȳþ8•ÌñlÛ2‹€EÀ"`°X,YE¤"î6Ì€]œ?ǽj÷¤ïIõ lV¹CŠˆ·•£šˆ´D‹€EÀ"`°X,¹íþ *x·4ýå­„ÿŸ½w£:ïþÏJ²ä‹lÙ`Œ1Ø€a…$ xE’Ò\Ä!«(4.P¤†›ÿªiH“jß¼Jà Š›¤‰ÉGjZh’R©á’Z)%įBœhÃ%^J”Yhñ|Áø~Õe¯ïóœ33;»;³Ú•Vò^~òž=sæ\¾³Gû›gžóœÆA-vÇ4KËëÓUWÙ+ƒW'œíµ ó ’ÅÊ=CµÌˆ•Á!—óër¡5   RËš3¥Ä“M(!ý¹)•¥/,%{!'”PW'½LÒ|£›CkŠÙÁ+˜ð1X˜'…ˆ    EK€–-¡mÜCmå•Á‰,–µYpË(Úï:    0)RÅÒ7CSÅZt9#Úܤç[fÐÂÒY3%ÒDÓ„µ&é³¶Z|òÚå“•d>ž\ª~,Pk «U-@_r>›Ú@@@ ÷ô_sþõž’*˜ò‰¹ï J,$˜ ѬÏüã4îÞÔ¤óŽ;6oÞ¬M´§Ä!‡âkÌóRïœÝfrí^ÎÆâhÛF±I_?ˆð¬sò =%4çÕþ’”ü‘ýïÞwxû›¶½þÖà¶Ý[~¿ó7þÀ¯_ÜvðÈÉ’g  p&d§ LV³ìN<]CB nXVVfÙlM1+?fé°¡¹kdÕ©£GÒBÙ/¼ðB0Lw¢³ÞÊ\ÌéòOñX «…â™›¢:ÛÚhÁVéÜÏѹk}=,}J7±SlNË?$—÷<|Áygî’s—.Z¾t½Ÿ³tÑÒ% _Ù ÑœW -Ù"@ªØäÊœYkÃTDsMMM}}½ßïO'šÍ«ÿijqƒ÷£fw‹ø¾Ô½r³s«°Y0“–é‰ÅF:½¼€g¿—ÖaåÜ´=[×õä€ b’ËW_¾:‰NC‘h”þ§ˆýò[5¢9”Q€@‰Hù–?ßí6ÝNe™h2ÿú' eû24ålìÆ‚v¦MŽ™ºXG»4 ‹Y‰}1³în‚¿± œ÷Êá3¦5çoñâÅ“‰f–̃Ãì˜aaa¦xÙd–[Ò’”掲îåVrì`‡dËÍ6ìv`>–ÄJ,ñÐÑS»÷¼úò‹åjW±ÊŠŠ9ås++æÏ­ªž?·fá¼%5 –žKs‰}-Ð]i°úöû:ÄFúcËKa·è?Ü–‰IÕ“ìåUªÕ¯¾¶v‚ Úú½ÂÍ–°Ý0ÐÊKgËóx½kCû}C딂ðû6èÞšÓî3 (Rê‹g(cVÌʇ™¨}cVàTV’ö¨PEYžN’Yôn ñ`ŠªeŸø÷ÚòtNÔn`é¶Ò~3»Kk¹ÔýfcOÜ'ÃÖHm_.Ž 7ß:pMýj2S”—9è;;o^åâEóI"/_V³jÅYžöêUç\¶zùuk.}ügÿU$}F7@@`XüF»µµ?œmëã³™,Û'Ÿ¯oK\hÏ¢ü”^‘Äóâ1G©¼4ÖáIj›\.s,™}¾TÁ¬* aKºVÞú‘ÍY·“‡:Ò:ç[O»&ñ%™’ã~ή.ùô…|2(BN…ËÀV¢‘õ~t,xœ´òñÑÃÇO<|bÿ¡ã‡Ñ}_ÒOÇÆ‚¯ í/aNè:€dCÀú7ÚÏ–iK˜ed™˜X—´%ø_Z—ŸÒBgKôô)¯‹@W‡ŒË… ²" Ç•‹ŸŸù'¤IY¨e®®®>räÈš5kÒY—õ‚ywŠ…Ùp· 8.ùF¾ìáß'¼êtO;¹AÕRJËËÎÆL9ɵ‰]—ääÎ,šÔs˜ncG¢<ŸôTús @8¡¯;ÍùÛÿë_ýlÅY›W.ÛóƒGBáÈþ>úŠëâW×8=ü`0…Bd‡.´Î¡½  p†XÿF»]Cüô˜ÝûŸ_ËĤfÓÏu¿KþæÓÆV0‹ò9n-gIàé64;Bã7ÿ } ¹Z]ÓÊZ7´U² 벌ǜµ[Fmm­Óé,//ÏûG´™rê+¼;ÉŸ¿;¡žA §hÿ&Ÿ,Õ±ÕÍcjÆŒ‡L%A æ)¤›É7Cuxû½í ?vëî¯Þ£>Rz8 RÜŒH¨$ˆ “  Ö?½õí[’~Þ©ª”Dã×Üü³nÖt’Eù JÁÐÖ µ`£r@E ÒÃ[N¹+«.ÅmÌeet G‰YËe:‡‚1g*—‹„$ºQØH Ó7¢È‘]™zRuÁ*zßóߤ÷ŠÐ;›c¹";3gÀ   P2”Ž˜©ãJ1óžMÇryŠ‹˜” Dt´„Ãaú¶6æÊóWÒëäK¿¡¾U]ónzF£t4 “oF1t}Èœ€œÙ§OïclŽÇlLû›Š™9ó6 'œqdZ¦¡@öcre¦Æ‹Æ¼†÷L ¿ºà£·8–¯ òs&UM‡É—9­•ñRÖÜ‘!U P-`’r×3…Ö7Eá· ¸Ïg¦”œY›õhÿ\‰Méé šò‰é‹ÅQÈúÑ[CŸi¬M÷kŸ\ª^úäƒ=?¨dÛ òàD‰›eb¶%#?ÌÍÄlÍšbf»rŒ6ÈÀÌ™¦4ûoÆš‚A çØÆL~ÌÒL…Ó˜Xâ»·²¶¾úoï&ë2¥D£d¦UY6ç¨v·{0iÍZ³ÇðEÅ<ä‡=ÚÏ ÿ€Ö­çÞ6ŠM©÷iø ×›\r–Mf‡¿ÔŸ4»BL¿÷ÙhW ÒA O 𜲡øBYÚÂ[3ñµÏd°ç)$4 Š‘€¼F¶¦Šù3Ïüãcå¾Ì;R>ät;~üxNË›ÕÂhõïY­•Í  ‚A_öP(BSåWž÷?ð(%È(duÅ cÇŒ\µÈåâÕ{Ú c ÿüz½=áIe®^³*>ÇÛ?ÕhkÍÛEK‹¹ä\µå€@‰àuµúº=r¾˜̉³Ós„'£Áž£ºP €Àä YL¢™r+ulxeè ¹–Ë“· 9@`Vì?xœ(Ùþæm¯¿ ‘³ ¹Ò¼2x  z6fÏ´…#ƒÛvÓj&¿ñ~ýⶃGNN¹±õíë]ñuYÙ8Üپζ´„À¥v¹¤`nrêKiªlÒ<À´éΖ‰F±æÇÄñGÃÊ׃Ži¦O´Ü¦ËÉt¢é‘²î$"viçOÉíîãHY!`^K³0S½Æ×>i°˜ÇQ|?qY5{’ÁNµXú]Ù¥[U4, Hk2™“é?ÍŽ•a•c s–MDv˜ $—÷<|Áygî’s—. …¥9©¼ªaů~WóïH§å(û`ÜÜRöŸÏDo§9R0G–/]D§œ³tÑÒ% _Ù; ÑLÏx ú©Ë^J*7íç1e!ùd2š`VëiKÈ<~_‡ØH=¡ðå-]ÚSeËĤ"é7˜ƒ—ò_ }QLŽÜÄ[¿—W Oý^!H"œ´r¤U™‘àòØïZ§ÎöÇï’ûÏ ¯X2«Å”ã‚Ùh+ùUi_út+È&Ž ›ŽN:ØmÎC2€À¬Ð×ü#­ Ïpbž5ö¨h¶Æ%¹|õå«IOɬÌëcïÜ}hxû¾‘ûGvìÞ¾wÛö7‡_sÛëo v¼ع-°c8°ƒr’'3Àzš_ѹUs¦#š)ú¾r9æŸZ¹Ni‹û1kZÔìAiÅÊÌÚRš 7gwçFY8¯d”b™˜X®´u%·K3‘‘iÙ~ãenõUµ’*mW«­ó %<ì ÁÈ?úúЧ¨ZöÙˆßÚ¶=“d9Ø5v­ÏO‹Øšî¥íÒm[€ Y Ù}Ò7Cz2ËM[Á„-ÏšÙ&欱â„|&pèè©Ýû^}ùżfI4VYQAßtòcþÞ£?&ß Ú8沌‰AædùQùbÐ?ìÇLSçÒ9ees+És£’2h¾¢öüsÎZ˜uÇùç·…&ðõvnLïɶ-ŸáAiUOô‹Z‡Ï8˜š•¬Hvý°L´ªÒè·¹QíØÃ{-6™ ÅKÀ³4c )àƒ\#CÊW¿×<åÀ #“d7ص58¨ˆ uæ•jíÒ‹÷" g p¦°6ÖýÓ³”ËRMÏ b~ú³‹¿Q÷ò¯ï¼Dë9}ÞÔtìóë×<~‹)9K.É¥ê§oÿ—ë×ÜóŠütõ×§^|–­Aö|#ðæ[®©_M­*wˆòJþÂÏ›Wù­»[U;¥$–ßyò2xìéw]]§2[öÂÈ|ÙÅçRæ¿ùs«Å&-ÏŒ'’Öåhô‘=99ÚRò‰lªu4:H®j&ç@WÍ4꤇ÄTJ<Ä;Tè’Ù¯M1T6cíËÄÄZå/wGW»Ç0†üʲÆE‰æäFêŸu.¡ë{òÐîñ®O?`WÒA ï°d®µ³$_GDCËp@xÈæ,mÅ4¶ix ÑI}ÉhM6ØóŽ %A@©ev,”Ý5VÉÖåò f±¶éŽÛ6mBSÌOozôަûÅ%k}ìγ—jùÊÇŽ[+ Þþ/ÿò´¸Síç¸&—ïor]vûWÐÿƒ,ÇdkŽDGÇ&NŽ’Ç#O Zûµ×ß8묥™gžbÏÉ3Ã-êR“Z”Fþ#õ äܬޱ>ŽçbÁÜl–݆Šò¸]C-d÷¢=2}éÛ21©Zúõïrhvki6kïì¨åÏn¯×­2“7vc#%ñaãtO÷H§ÞTnèn&, ò€€Z<Å6¹-än¡9+Ñ`à£ê.—ý—( ŽÊm1‚’‹áÏé;JËP»t«ò‘ -ÒÃrY™˜¥f63¯žMÿMÇyÇŽ·Ýv›ŸÛm—Ô]ý覧ï_+µ«&˜íòN#}û¿´²\¾ßÈ—Üiص§Q,N-H¤”©Ý£cÁñ RÇb™ÉqXŒ{'Óô>úH;[GvŽŽ[f>ôÜ3¾¹ê²úÈüæÌÙà ßCCCšçŒtsSÁÚãW‹ªRO༜‘½™ëÛ·˜ä¬vzJ¢eí|.,äL_}^Ž$yé¶?Ù¼rÙ³«Ï{¾ö‚-W¬zÅu±RÏR7‡ØÞlÊLŽÍo<òðo®ª{õ/›_kmùý{¯:ô£^*ÄÈ\XÐZ¬(Ÿeå°l]NsØÈ¢L’Ë·ß~ûYgµpaú¹P,™·XdzQÏÓߖ޼ÅÍÃ)­X{¿ÊòØ~Cêl«íê:ÝWÚê(ÒJ‰]¦99«WƦ­bQÍÂw]·à]4¿áxÚŸtÉrt9Ú‹g>ðÜ3{¾>q|ñ‡<”™N|û›÷ž~õFæR¢ˆ¾‚€€@é0¼—ã]–kþñG~#=1‰‘ØŠ•’ËgŸ}ö’%KÆÆÆ¬²ÄÓH2‹Ö§¶ßyS`ëÕuŸOÌË>·]ožV6G; IDAThY™o{T¹úë–(ñ•ḻ´‘Ç4P,æîPžvév…#½ ¦o7ùcpX9)™çÕ_¹ò‡(hKe^¸„ÍÏ2d‰æxæÃÏ=C™ËÕ¬øÆ?M9zào•-_·€ÃÌÉÌùŠÁò™¯eb¾öí3H@EÂ`'fŽ1§D²²1Çå²TÏYlf¹œÑi,™êé§·Ü”d¾äÎ_;Ö-ZÉéÂÒm‚Ë'u{›†è—¿~µM…fßsY¾<‘¤²É’m—nS<’ ‹Íì£o>Ù˜I«“/þfÈíyOÝ‘Gº¥73;cZ&w sæ“[O=[w¡I(×üÝ—çÞú—±s–™ ‹Z    !6"³9®‹ã«dÇ“³qg¾õÖ[)f-™–÷ÉíÔ©S“5…%ó=·Ý“*˜Õ‰$_IÒJÏ ²9K[1mäáo~Ey\°³²]U—Üù¥;½Í$»e¬ l¥I@ eÁeÚ‰òW¿lá¢yî÷T­ywt~µ´1sf6/“/sJfdP&1Íîˉ™K“'z   ¥@ I4ËXR@“åYõ_û'3/¿ürfã¹Øl)˜ãîdfû3 ßÅ·)ÿ‰;îP¬ýü׿±fÍâ{ÄÕwÜagc¦œäìürÝõk/VgqlŽ Ì¬“å²&R0“ŒŽg&…]ùá?YrÃÇÆ_~‘ŽF/®ÌoÎ<¥æà$|'@z8iZŸTÌdw¦d’t˜?ÃÈœïíËœ9`ìÜ}hxû¾'Ç‚r™þmÌr‡–Ζ³þxmšÞg™¹ú\μï`RæÌÛ€œ   D@—ËñÕ°u?fݶÌÁ4°@ ×äï=úcr· MªdöVfw ¹/MËô›£QrwÎ"sABW@@@âHÓêØôÙƺb–!šerñìl¢ËeB·¦¦&“lÈ3Aà[w·ÎD±(@@@ ( RVr™d3‰båºÇ\”}F§@@@@@`jdTfÞ 3í›ü1²ŠÉ<µ&à,È+4³Ú£MìKôcfã³:¬Z ¹œWW˜-2"F²f³´-kä @é¿ @@@@J‹kàÔèrš3#Ïf-`†7#ù ´:­FÃøcâÖЂ’å¿Ø@@@@@ +Ò–œ$‡ãŠ™Žj6èCtVµÌ`æ@WÇ ×;Øa¨aO7‘ŽÅú½ÂÝ9Â{[Úœ3Ø     PôRD3+féÇÌÑ3ôWžblêÍííÍ¢w ÈyzÐ,(lš ÖÜT_£Ëå±?†R079MÌ…ý=DëA@@@ ß HUlHc¥˜ån†`V’Ù·!>ÿ/›‹6€€€&Z[‹§gÖW0É÷þ lðùý¢Öá3Ú7Ðíñä{³Ñ>‚' sL.›­3ç§+ó@_ÈÂt5ÔB2ü·o¶:àp?ÈOQD¬Œß£eü2vÔÇh¹ WDR/Þ§DõQžK)ôUE½ìÿîl5õ€€€Ì6"§ÕÉvæ¸Y¹/+é<Ûš¬>ÌÍ#¦¸qäËìö¥“Ì~ŸnNPÚ“U„ãÅJ vóûbQþODä+‘ˆGxŸßå~˜…ù=¬ÞåQu(J‰t–öZ}¹XA¡_   Š€I4“bfý,ãËxò/3Å]NrÀp¶m1ÍPL:Îaš»qµA •€v_HL_m÷’ú!mHÈñbÊžZ*R@@@Љ€#¾`‰ì–ƒ3¤@1]aô%IßyúÈÎH$cÒwCŽ m`È•£…¦`´dÂy@@@ À ¤HecNèUÜØ\àEóAÀ àxò¹ú1,€€€@1HRð1óÅFßt÷nÕ]wÜdæA6e^T,ÉÒ¥™vÉŒÌ;ìë,Ý•9IîÓ¿Êí™}˜)…?v|³tA@@Š–€µ™ttàðĹh¯;:f&à¼í—ÆÇñ 85=1‹žŽŠ±˜8EïQ1*Ä8‡ý‡>¢ä2½³XfI-vïÞ¡Ø@@@Š”€\¢D·3ó’%†s‚ïf‘öÝ}iKçe«C‘èx(6ŒŽMDÇÇc§Ç£§‚±±ñp˜´ò„ÁHÃ9ß‹F?b˜œI0G¤:&Á ÅŒ/€€/³™I‹2-ÖKéâí6z’€rÆ Àk;v½¾kûk;ÿ0ôÆÖßízý·»ÞúÍ®“›w„þ¦øõâù7„ÌÏ>ê]JgvÞˆ`ÎÒÆ<Ðêh/RIŸºú%QÇ(¸91ézQ}ÓËáÔf*Yfʦ̤*Ò7 )3>‚@iH«Bd2Z''“\ª~F|Pg>p'¯ 9@¦F@ cÓ;­É K’òªyjTqVAßqö¬øê'»^{ŸüÐɧnœøï¾rÓÉ‘›Ž½Õxø¨çÀÑÆ}‡=oøu*ÂÎαˆî¾LKýÐ~8L‚9’U—=ë¼=}ºd  ï&M2Ó'w½Sp¸Äø =I…œí²!±X¿·§Q*äMbcbJÂ9…œŽt _K\œ§ksÚ¤œh÷“Ÿ’ PÈhäú‡Œ»[A+x×yÒÖ)v—ÕríÐzm Ç6ŠMñ{ì)‰Ó@¦E€DƒœÌ$'9±€±2ÈTE~ÌÚF¾°6O 2NÎCümg½ÌM Ó%4h&Ÿˆ]Þü+£µ)>Í_Uÿ´áÓüڮɩ´’ oÙõÑYï­ÂØÔëêìäŸaõI4o4-ÎcU®Ó©g pÑÇY­©ÙïÒñ#¡13xùP4œ!,™åXµ¬ô”n(ð"´j<÷Èñd¹±o6<&`cc–®ómcÍ¡›—æÄwúÌ·¾ =g€?TáèËäVs¬å¨ Ý›¹O3{qȉ€R0gic&7 åÊLf*iSvÖ³ÍYsbN¦áîl—vdö¸P?ÖìeÌÛº>óm R¾VªU€Æqïh];³#µnÐb¿ ³£&Écv³V§“)™I˜½,On=>ƒ@1 É,ŸY VöÙH¾ã´è»fÆ¡'3ö[â(ÔòéwÊ>O£4Sk6 »tûâq@ +:XÚ˜iìÇ,-ÍÒ½97+7¯„‡ÓVmŽ «£H+%,‘uWf vAZYj_šÆ§ù4Ó$?6ÍÒŠL‡¢¤›)½‡#4ÏO¤¸å¬ª§¤˜I#û}B{øJn=>ŸæÄœ1hã+­\'¦&g©j¡»f¦zFË£ åϹýã䌌 PX2óе¹»%ùJ’V> ¢ÛbÝVLCUu–¦*( ~Vc×~ÖCfä¸a « ±2ìh!f‡@’6ÇcV.žÒØœ—±2²póÒŸ)÷­³Ø5;¼QK¾PËõ±ÑTÞÃÑ}oíݳgÙ§Y3*³9F1H+‡ÉäÖ )ge{f§ 6Xg»±ðñ[86ÎiË2¹ï“U™½,Xç®éì[ÖåzºG:ÕS^öONÒÝ|Thnê10I‚~—ž"Ô©ñ˜ùg ©ÅG ièÆ;¨Ïš!÷'鶤 _~pÛ'h|óæi׆SËËÎÆÌٺɭJ:½E4Å¢Ò´¼9¶K/¾+€À™ Ý.âžÆšR†šÎO3³¼uÏln=’ÞÒ&h¶’èL°FùD@zÇÌ­½íÓªuŸüÄŸ>Ídrްi™ý›¥zæÒͧåŠÙ¼H6—@!™³.'+ãG©ZL8þÈóâˆè“ú…4vT™˜p^jIñRäž¹ãPbbRS´\*jGJCµ2cæ°ZÜø ³•Ô|< <^ôÑäLæ¡ ä“mF¨å¸Ëƒ¾£ P’ØxÓÌÇì»L›acfmŽ˜‘o€ìܼҴÓÙ¶±s’Ó*©CäqA_rå˜ñ‰ßø³~w ÷»ÿwãwÍ>ÍÊÆL³Ù¿™ü1ÈÀLK•D-¦M¬ØgC®ÿÇnÌdm.²ý=0[¿È.*º  0Uº*ÖÌÌZ¬ *MÙ˜÷©–?cçMÅÍ‹ÎqeºâÙŒ5çÃÀL’WNàsH—enœšÈsu‰LZYÊeÍKNõ€'JÃ3¥PùÑ­\´B9}4vn´R—‹jP€€³0¦VkkþÑžÙu9/ݘ¥›W}ÅÌR´ÙóBí±?¥Oî*o ÓÕ ²ŽÚ–®&Ûå‡My±[ÔØ6ÌBYÊev°6céA>Ío¿½/Š‘-y",ƃQÚ †é•@„ô4ec6ûS:·Ô‡Æ…Þ#´@@¦I I ~Ìq'fª o8[ü´§ºS’gYÂŒ ³çè4éáôÂ% íÊR%+ß v±Ð ņOsúÞI3Ó O µôIúü8    P¨’İacæÆ–Ÿ6æBEŽvçåĬùfHwd~‹Š~èzÏ þÍÚš&j‡õ4+lNäyT¾K7g:† @@@ X ¶¹X¯ ú5óHïnݶçìÉhÊr¥k¹P¶´³æÕ0Éb~“Ë—ÈD™,ÏR ìÆ\L~Ì35€€€@°³1›ý˜ó3sFsóŒÀ]wß§Ë_%‹¥½˜e±Ô¿R«¹ÃFerÂÊ™7¶GËõ!Ï:‡æ€€€ä”@F6æœÖˆÂ@àŒ¸ëŽ›èuÆ›€€€;³§™{͸–h%€€€€@® È ´q9LÉ£‚×u 'ÎzÐY®´˜"gå"Ê(f4õß´T™ .KŠÙÁ+2ŒM©çì¯)DˆVnÀ    ¥G  Ÿ7ú&a¬lÌ4¿)hZ­¡W.½‹ƒ€€€LÈ Ò’fúÆŽ…´æßzŒS@@@@@ [I‹a;DY¶%œÉü®‡¾5tf°)­Ž™­`ÛŽ¢A@@@rJ@[ë”´ñÊiù¹+Œärmoóˆ·ß54“Š9wÍFI    …CÀ¬Š•­™Þ+ ¤ý®Ÿ«?ÖæÔÚëéî.–£™    …M€³C°«ƒ ”‘§½ lêõ{×{¬ZǶgŸŸxûcÝAõ.Ÿ¯‡’Ü#[”ʶÊ&¼¢§‡tx·hu4rv½ «z–·"‘Èž={Nœ8A;yÛH4 @Î,òòòêêê .¸àÌ6µƒ@(3‰ßze_Ö¥¯Ã­ÒUc h%×cO]¿oh}Œt0‰çÆ mRF[e¬''Yj7gç"]íÃ’] µÔšMryÑ¢®<ϼØ{©A@A@`1qjtt×®]óæÍ›$'ƒ¤Ð3¯f"ÍÌIëh§œpÆüì¸LòÖÙ¶%ÖÆÒ–[þžZ‡O5Ë»Nþëîl—æhÏ:¯è°ÎÖܤ;y°¶VFfw§* ï…C€¬Ë®\.ba¬WY8 -8ªçÏ;}ú4ó@* Ÿ@‚™|3¨Gù¨™u.ÑËÚW—¸&òÊÃH°¹(öÙÈjÝ(úc1 ½›Ó‘œ¿¤3-¾Íß&¢e   *@V^C#@@#P(ƒÇÓÞ)|µ­Ér˜•tOǤæÒg ù•Ë{Kã›Q xµw¼@@ÒÀ“¸ý‰C³ó€@Áø1³3F]«²‚7òbîf{³§{¤³¡VwË`;²%Ô´ÙHwÈ"Ü^¯Ûòt$æ?²1cÚ_þ_&´@àÌ(?³Õ£v(\£˜±G› —€[ú5›SºÉ½BÛè}?]¶”c\“e`ŽÂ½ÐÅÞr20cHO*ÓóÁQ°'PPŠÙ¾8RòÒù1;Þý¸CÄèUÆïÑ2~;êc´\Ð+"©ïS¢ú(Ï¥zª¢^~ñë%Ï@ ŽŒ wÉÐà|!Åœ/Wí˜rbN7ó/vóûbQþODä+4_0á}~—ûa:æ÷°z—GÕ¡(%ÒYÚkMôåôÕM¯/8@f†€ŠyfÀ¢Ô Å\¹$º˜ÎÆ ~,8ŒégÈ£…‰ÑÅ?’Y9b:žš)  ,þ–åA«Ð(†b6Ç”ËÇørÀM<ƒT Œ ô“AÙ·¾öd¨VâXîó&STÜ:²Í˜Í3pÌ6²äüáÊŸk–ä;da¬)f#E^¯•ïpѾ3H€n:£¯ãÉçrèÇ,û™®º3Uƒ€€=ؘíÙà¤%`ؘÕ("å sZ`8˜§ØPl×´û?·ê®;n2•&i6¶c3¹4Ó.é_Þa_gé®ÌIrŸþUnÏìÃL)ü±ã›´4¤muvÍ@:€œiøÃu¦¯ê/XI~Ì4– ˜ öb–tÃi&ßé °P–z™_ü梙÷igQð;}?ÜæþØ?Ì©¬*+¯Pr™ÞY,s±{÷®ÏÌ´º […l  0ãÊæÎx¨Š”€TÌ$’¡“‹ô—J·HÉÆ2ZÁDÊd×÷ðºuÎI½Icç®O~ËõÄï»Â/¹£-7¥¶6»¿ªÈ %O@ "Æ`cÎsÑìr‰ÞM&É<Ð×ãõzm/f «Åçêu{ôζ6cßö,(Pì.aÿR™U²šä'ƒ`h/–ÁÑØµ7½ö_¸ø½ŸÁããÁË=_lø³¯¿÷/»t?f¶.k^lcN_]jKt«R¼‘϶VßÞõó‡ªßé¨~gëÏ#ûo§z5Ü¿Sv$!ƒL¤”;{Ä«>×;w>Ôõ>>KëòÏïu¼ï¡@¼psuÆ>Øz'ÕrïåÜ®U­j׸]–?*3ók'Õ¨ZØússKžµÇžÊ) PP.yoó5}}j ýü=q½Ç›Ê1«FiàNmà8îTƒ%å¯Áö_õþÏŸ¬û°ªÅ†æÖâ)_ûÐȉ—œOÝñ§WþÃã±+íßÒ3pgb†í®þb×MuŸøG±èÁúWj»Dˆ§_w<ùL÷‡þˆJxò'Þ»_rÆ›D…Ó AÀøNÏÕkG.¦}®qð2YKô™VW—ëñ—¶¬‚ oéâ2³žouý¬ù•—¶p-_oøçíž»D×ûoé½õñØ3+µ®™[’Š6Hü%°¼é–Ë{_Û.>´’GÙǾ$¾>Ržêñ]ù±gx ¡†˜6îây¢ÂsÿK±û)Ãó­‹¾ÓõùkMMï6yy]}¡iü&áÉga©pìÒÓÒÌl†tÚ"pJ”@²bÎo3³g·±o ÛC:˜±hÞèCñ ç÷Õ:¤"^2-“_†»^:g`+‘QLG·õh§ ñ‰kÄðžÞWÖ®ÿ…la¼ ½%FµØ¢#à¼ñ:ñ©§Ÿz×ðïõw©Q¦ÃUËÜü]Ã¥ÿ¶å3+d¿MÃÓ¼¿ùŸ·?-38;yðš³ÉäÐiñÊ›à¡ä¬?n¸¶[s=\ôSÊèýa÷BØ¥ËÂ&Ù*–L’‡AlXÌüËgwfO{§rf&f×zå­lô,îǬybø‡Üžm ¹.æG¡šï²TÉô‰ÿ×^”‰Q`æhóÿyâ¦Ï<8oþ‚2G9%ªÐ§O†ÂÊPͱ2Ø+c6·}Ã[S«khÿûßÙøÎ ®{Wòo- ôþØ!z}nJZ&>p4 IDATHg«ÓûcßnH­) P*V¿«Y<»ióK½âýMêŽ×èùêo9Ô¿QÜçXÚØºÙ†©ÛÛ…MÿÖy•Mªâª§ûRKå˵ñÈr™6»t›â‘  Š9'åÎT!Φfrf`ŒöôB€rº{ú0Õo¦®D•Ëæä¸ï²CŸó§ ÌÒAYÎí#ÃóœÊ¹KÏYvý;^|çÙ߯u|Y…θeé'ÿøÄ•?ùÆGO> òÜ¿Yé ÷©}\ÑŽ—z·vú±4Uì¼éý¢ïGúDóMÊÄ•q£V_àú/ôŽwü ±py”´x¼8ù‹ž’qUÈN`EÓ:ỽ[XÜ—rÏœŸùöÈß;Gh¼œ_U`h‡ìîæç{T·w¼é¿jßÐò(¶#±¢í‹k{n7Éî?îJÐvg#@`V${eÌJ¥Ó©ÄÙ¶Þåhô‘=9Ũ–T,åô:˜üèê `òßtàð¹J"K¿ 6*“âUË•H¬‹iÖÍÂQV^5¯šBgŒMŒ{›8tÆÄت‰‰åä­qðÀþ‰‰1i°Îv ø®mT^CǸ™œîtùŠŸ”ÐÓXy‡Ø°î_i¤r>ñ6ý®þøú+ÅWbI¦¯ÉËnèþmkõ4dx;ÐQË}Qÿ·ßŽ};á4Ï·ÉM"!ÅûÑT¯ sFæÄD~°ûñ”>\\§Ä·ÅÑä.¤¶$¥4$€@QHúPZý9òzJè! _#E§¤kûÛ2YOåk‘:$‹ :EA P3‰_à ælÛbh#ÝœÁte(o,ñUQ\6t"[$ˆ9ø²ÊÒ¨lh¯}­ÒY4³†¦ qöÒsÖ„Åi-tÆ’³—ÍW]VV~àÀþ(åȇ*¶¶nLÐSo=G¾jUûÔÏÇ™   P´d ëWÑö+A†™”²ÍdWV+cs‚ôc¦OÚZÙäsá(« }L±2Tè GyÙÜùÕ ,ªœ»€òœÁ3¼í뺱Ñqí³Í~|2÷¤ J““–6:nßÙ™“Ò2¨Y@@@ _ ¨Éò˜lÌìØ)_Æ–ô1_{„v@ÆHK[²”ËlaÖä²ÔÊqóî­ax9‹>ûŸ‡Þ~›Npˆré³ãPì=ӛͣ[­ÚÔG½ÓhOòCçi…SA@@ ° ¨ŸødaLŠÙÑFÿTJaw­3ÍØðG;rúž”˺[³Ü“ægöÍP‡æÌ©" :½¢²Jië‡cžÅŒ    0û ³Q5 ãBñcž}^¨±¨('fÍ7ƒÃ0ËXÌj¶Ÿz§$-$³ÔÊú¡2¹g,ZWÒ¼^6sQ}=ÐHOŠ9=-¤€·nÛÎËõEØeY®tM~¼|Ÿ\ÃÙ®,=.øæÿi‰2Yž¥(=ü˜‹äº    P ˜ â2¡‘Ó%p×Ý÷IMÌ‚XÊbi5fY,õ¯: Sd&g•Ï2EÛœþ§Û0œ   ÿ¤bvÅ,6MfRùßz´2!p—'z—'Íâ™”<   ÅO Õ‹Yõ¹ÐVÉ.þ+…‚€€€ä(æüºh €€€€@¾0)frÌP¯|k£­ä6’°5tò¯™h€€€€@°²1çŸ3--·~¯pwŽðÞ–¶LV:#¥ i]„ßZt @@@f“€•bžÍúQL›@YY‡¯p”O»$ ÅK€þH"”|ñ^^ôl¦ Tð’´%Ù•óÏÌl "ÐÕPëóó1o¬Û#ÌŸûEcc©uøÔAë"Z𪫫OGªç­.øž   0sbb"ä˜;wîÌÕ€’A ØゎÇ<ÐZÛÛ<ÛB­ä~á©ÛàsõǶx´ 뎎ú‘Ì<8Šá"—hV®\¹k×®Ó§O—hÿÑmÈŒÉå‹.ºèСC™eG.8BVÌáAáï!²êŽwhªw÷46@#—Ø7|Μ9Ng&~í%ÆÝÈB÷c& }#§ gÛ–Xl£h¡°­9"„b@@@@Jˆyf˜_ÜóBVÌÎ:—èéH 3G²y¤Ó=8Œðs%ôÕFWA@@@`æ²bžî‘Ná«Õ5“UYÛ\ës­çðsžu^?‡Áyæ¾A(@@@Š@aù1S\f}VŸº0ì†ÑfºFžX¬Û|É8sBB±_Oô@@@@ × ÚÆœk(@@@@R@1§ A€€€€˜@1ãë    é–sºžàØp¸tˆ½h5m‡ˆ–ñËØQ£å‚^yH½xŸÕGy.¥Ð{Tõ²ÿ»vÕ!@@@   Äb‘¸6sA_P4>S±›ß‹ò""_јˆDD8Âûü.÷Ãt(Ìïaõ.ªCQJ¤³´×šèË™VŒ|   H€D³yƒWF^C4yÊÔ·ŸïMã€?ÊIínR?ÿHfå)W‰A@@ žsÁ_Bt kIò—>ò$ ä˜ôÝ òä>o2Eí;è „sÖ°q€€xeÁED&'àxò¹ú1O^r€€€(æ"º˜èŠ û?·ê®;n2$›rŒ6²K—fÚ ¹Ã¾ÎÒ]™“ä>ý«ÜžÙ‡™RøcÇ7;mªB2€€€@( ¯ ZýÚ´Ð5}jè èC t5˜“®”¾z6­§­—Ã'¨ Khá÷:m—¤ëe’ɬ–5­,u³”Ë|Pªd]=ËDÑ|ÊîÝ»"4#€€€@É( ÅìYçíéÐ.J`xPø{7i’™>¹ë‚—ËÞÒæ´¾ng»TH±X¿·§Q*äMbcbŠõ©H-6šP&5,”•9™ ̤“•,fm¬›–•n–&gzEØÀ ‡I0C1Ûý4 Ä+ÃYïIâÀ¦^Wgçà)fõI4o´QÊz¿N=IoÑÇÉž¶6u”S:´¢Óp¡¢ @r¹k@„Ùì‘åPNEÓãÎQ49z‘$ŽP6’Æ´Ex£¾ÖRAiÞŸª™žv4ŠþX·Gáä= dÝ#[Ú­ŽŽzú×â{m>CæµÈ“r©èJmos†™SÎF”,o C‘>÷­‹µOo@%—ªãåêóËOî’½4è8Ì>BQÌMÍ¢eS ­ÍI‚YÔo¬¾¾nG†ü®u,Œ¿Ar§Óåó±Iú³èêèñ®ï6cfus{&²cö/jÌ)vƱñ°ãž›SË¥ƒ-Ð*4†Ü¡@±XYL”Ó÷ý¯±Øù$œÃaÌ‘Ô"&O¡ïß —îк¥t=ݱ“~A —#Ë"µ/5ÿº¶t5e¢™ù Œv‡hYbb¢ÝÏy§" ²¨4ö)ë wl ¯Ç»®[8=Ù ¨ÌˆHµìêÅÔÝt ‹îíÛ´;ëÌJ@.&P^dN®sùÙ¬LY479éïۜհ”¿*~ßÐ:åƒá÷mΚ×ríÐzü'ÁºZ|®õÙéføB ø™% }—ù5J®HzçP"Oþ£r*ÀœÌ¬ÞH4ǶDÂr: ­dÂ[r)|滽æööfaøep’mgÛzoÜ;É6€L=ÞŒ{JÁœò{3õÂãgÊ_¢øÃ'úÅkƒ\ÎX”¹$P(ŠYh®Ìô'ËUGag=Ë͉9ˆ»³]þUc )¬¥›3oëúâsÿزÇ7õúòäRð¹¨ÈëOxܤ˜÷íÝwÓG>²ï­·ÈÀ\VVVA¯rGE…cNÙ•EÕœrrÞ`ßfA ’m9ı2È+ƒmÌSPÌR079ô¼$'’9~yÈ*ÜÐÚJSY¥~|R«1Ï•3h“e-¦¼š“('ù‰ø}µæRT_t² @ÃÕÌqÁl ¨¤ádhüàHt´7É4súÛàO£Å©Ë êvéYôYA2'P0Š™42¹2 ª¿+,;†6) ’yoMšu…Ù£4‹Bµ Èrì• Æ[ÿý‡9ðöÁÿ÷‡))Ž…È©Y:J/×¼Iç ¶+Óœ?RÌ`ŽÕóü˜5ÁL·o¹‘Ììbä&®ºã¬§©¬t÷§nåÝÁHç`£)ª g¤£äÐ,ö³wˆÔ×FO~"ý^öf’…aR'À’YÙ],,̤#oi† ;_É!çí‘cÎrã ìØ@òš@)fÒ¾FŸÐþ®›FÏç—çÌ7ú›§D†RiþÈe^&r^ÌLÄaÙܘػwߎí;~úÓ'wìØ±wï^SNõDý¼É\Rgs” š žPÁ˜¥`ÎÚÆlf%™5w¡© “`‡ƒŸÄ˜uíÌ‘dtc•ôÛ¾Lú&ą̃ÓÉ”ÌǤq ~IS¹8§4èw¸VO4Ùg#ù®Ô‚ŠfdNšå›˜1q¤jÇ46Mìi”fjÍÔl—nQ7’@rF p3›æÜ"nTc— C¤åpÆq Xd°yÎPñ?CiKÁÁ‚&ÀË‘H<Ôæömݺuóæ§Ï[±bçδÏzZ*fVɧ™7fŽö#‘X4T†j7#[ÅLÆ(¿®UIìúEÜ92[®ÒÌÛÔnø¼šMlÊdÛ^ä‚& $ó€ÕMéî·Q´¤ûÑžfÒxétÛ€0û~˜³hî„t¢6lµ1o—nS<’ArB €srÌegÀxpLŸ”ÁÍØ!>j_wbŽ‹ sÊÔ¥GN. ™¤pÕŠ$ar¿î?üÏ-9ëìÞð¡]»v¬ÿû¯±`6³šÈê™6šùÇ^±ð)iio&,3?ÜÐ….—I?S—ÌéˆÑ³CŒËÐ0 •äÑ„Ãò§ÚþQqºªp JƒKf~¾iø@%v›~Nh²<æ9‘ ŠÐa‡f~˪û†7~–MÉ(Õ°G§YÊÒ² žnv_–OpÙ?9ÉÍG…æ–¡ñÒÏ}¿KO‘?Øôô3ÿ,Ù"±D $=ߌSÐçô‘‹”tmÒ„/¾>AAyó´kC®eÈegcælÝrâ¹´µˆ¦ø<¤–”ìÒKô2¡Û 0Ó $óLc@ùÅN@Z‹Ùã"‰¹=þÓƒÞ>D‘—ŸwÞšÅ?è}Ò÷ù¿! ÚAio^´@ ¿|ù˜ˆe!öÉÈÒÆL¿†IÓèø1GœyÒqùøÄúФ–Dù¹èÔè˺ǿÅÑäê’?[·© P2’G>âœ)#ÕLæe•o1eжÉPÍØ@@ 8øýþåË—Ÿ{î¹ .$Ѭ¶âèzÓ$@–fÖrËbVÅ) všÆQ¸÷Žúµ4g£Ï}ëbíà ¼ÔB<9M V‡’K•å6jë-  èjÝÔÔÝhmÝ–ñà­JGZ¸ëŽ›èUA@@ çî»ï¾9sh§ÊŠŠ¸$(”éÍ9§A€°C†¾â67Šy‡Ün¼ñÆô¢™kìã¥DU3(J¬w]·pz¬\˜æ%‹ëd£ Z£TÔµ‰À&Qß4ÍÒq:€€Ç{Lu$É+£8z‡^€ÀÔ¤ú1çf•ì£G–••½ð Á`0]Ëœõîž>^ˆ—7)˜“VBKwò4ŽÉµL).m­AZëë¡5ºH¹c'@^{öì …BUUUðÊ(ñ/º¯Óþh3‚s£˜©ÐšššúúzxéD³³©ÙÌqÁLzV XZnÚÆ[+Ëj#=a_ªßx&­oéÿá•KG:½#±X¿×ÛON$SöI_Ž‚€€@A ¯ŒöööO}êS·ß~{SSÓõ×_íµ×TÐXÈ9˜ •Aå’âT¥çÆ+C•µxñb%šÝn7ݧZ5Ÿ%sïp@xœšK†9ÓÀŸ«?¶e³3«ßn:Ý—»Ú=mÖK™ùÉŽì“…“@–NË!ødX]¤€”2xe”òÕGßm°J&­,ç鱕–>æÌƬªTSŒy…©í É,z7D`xÐ]Ÿ$vÙg£qrw ÍÈŸÛ—Z‹œï§6èö(ÓucOÜ'CÙ°­ÎC€€”xe”ÒÕF_3% T²a`¦Óricݺu«Ëå"_(Û±dnÙ4 zEóÆdÅÜFS¥¼õë†á”bèp£ ·  ½–”Ö ¼RpSWƺ-Ý¢µa¸–˜  P‚+£/:ºœ ecÖ2rgc›\.sY2û}¢¹ÉÒŸ‚äíH§{<7ÙœýCj‚ùp¨Î†üÊ6M‘/ü™ôWËC>dÒ&˶«Î²Ú,ŠBV(ãããŒyÉ’³æÍ› †9vààá·Þz{ÏÞ}ÅÑAô¦@ÀPÉfsn¼2h‰ #GެY³&uYo2û2 ·…`ÖçôÕú\ëÙ=ÙÙ¶ÞËž´õ ¯:ÝÓÞ)ÈEÙáhr¹³€àéfË2Éqb΂²‚€€€@é0´²±“¯ŒÚÚZ§ÓY^^žRö’h3夹|r¶ŸS›Ó?¤ÏòãžíÇ™’NB?=á´I¦Æób@@@@â´™”@³â”É97Š™‚1ƒ3€€€€:’ÈÊ´,å²]J·Ð/+Ú    KJ(ëry¢Ëå²±( @@@@f›@Ü+#Ç~̳ÝÔYØðx(®®ž Ehg" †ÂÁ‰ðD(4ÁïáŠò²¼».ËR‘@@@  P6»dPsãÇ\„¨Ð¥""@ryßÁÃW_~q$ ‡I+KÑŠLT…&‚s‚•¡±`hl,XD=FW@@@¦H@y.+ÑLEäræß[„Ó@`æ üƒ#GÎ}üGû†Gvކ:¾ò‘ .XTQ4½+„³A@@ ßH#³áÁL»ô¿÷ùv•О\xó­×Ô¯¦Ë¢¼²¢²2á O6gRÒ\_,ÖýØÓÊùرÈO7p^²lÅy˾úU84f/ŽÈÅ—\tï—uÖYË®¨ÿã½{w|á=ñà¿Ý²dÉ’\6e€€ä%—Í®ÌPÌypYЄ#xã벋H³8ŽÆè=B¶æHttlâä(Y–ÃÊ­9оöúªdŠþåæm«/ZZYé¸þkè,6EO„ê.çª ëBÁÈøD(8Ú¹ów'N¬…bž±K‡‚A@@àLÐb0ë¾ÜŒÜÄc& nøyLÞ9}5ljGCWÀ*?å°9b•;1ÍTzæ…º2ÏlÕs­Ô/û®YŒ´#@J™Ê ?9vôøèáã§>±ÿÐñÃÇFGGƒ”~z4Hsþ^Ú9::®ZQ³¸ìžxâ¿È…#Û¶¾ûÝîéy`ÏîÝìô<zûíÝO?ýð÷ú´éyÍŒuƒ€€Ì:¥å¨Zã·>7ŠyÇŽ›7oÎH4“´lìQ{¤¹·V—ÆÓQÉI ݪü‘Nák±–äÉäyíí-mÎäd›ÏMåõ¼yë÷ ­öÌ‹³©É9 @³ýÈë"‰îÿõ¯~¶â¬Í+—íùÁ#4ùoÿ}Åuñ«kœ‡~0‡B!²7S}ÿý_¸oÃî=vàÚkdlvŒŒlùóOÜðÿýÅMÇŽÞØõ:)æòò®«nüú×^ø»¿ûIšˆ"@@@ò’€.—s·‚ÉÑ£Gi¡ì^x!HÒm®Žo¿!&mIÕnHwÊÔ9ÛÖ{ý½›,­ØS/gH˜§üq”ŒHTµ{û½íäY±û«÷¨”N.Áp„BhPÊóÏ¿Q·û’‹.:ŸtöÀÏúo¸Á}Í5sßóžšw¾ó’={^#÷ŒH´¼fÑêPhÎÑ#G ‰Ú    %Û˜©öšššúúz¿ßŸN46õú½ë<¦Æ:›šÝƒÃ¶<÷¿¯ÖáhÕõ3{J$º7è)z&¶õ¶¶R.ã; ‰9ãågšÌÆÉµP™æ$«¦ZWËgÅ[¦Õ ÿ˜´k°®©i 1GÉ®L«.XEï{þñ›ô^±âz'÷f–ËäÐâ dW¦Y€c£¶9J+›œ:u8‹Î›7ü• ¦Q6>'w²šÅµ$ÃÓVŽƒ   …G@`Njwn¼2T¡‹/ž\4»ëS|üCrjÐýº• öû:ÄFéæà׌Эµ½ÍÊ£_thÞþÁzÊ¥“Ô76h»››´úŒœTŽÏÕ/}(F:“¦Sk!ñjTL5¥6Õî«À6îž>í` ¯Ç»^ù}è]‹{¤T:°Ao¢MßìêDz"šÙGذ1Wž¿’^'_ú 媺æÝôNóéh(&ß úè¬=ÿÕWGyô'?úÑ/Hÿñu7þçö?ÿüñŸ ìyk߉šÅ+É+ƒ”ô«[ŸÞöøÄÄqð(>†³Ñµ\*f*”Öw µ¤EmÙ‘f!¢yo”úÒ³Î+ÈMvÞáAe„¦N4öèÅı©Ti«v8Xǽ‰õœ\Žnç–~ J­EÚÅ5­›ÜòÉ>Sã5É<Ð7ØÙ®×õ®µ§Vê¬w÷$kùÉ*Ãq dZ¦/#ÙÉÅ‚“‹Æ¼†÷L ¿ºà£·8–¯ òsæxlff¯ŒÝüG÷?ð®ø†»fQìôéÑç_ºúâ÷lþÅÖàõÓ•UKÉ+ãð¡íc£Ãÿúàÿÿð#Ÿ±¨Ò:‰ž-X< ‘Ô=›Ì o¦Û8Ó‘äÙ°v§˜˜hIM±n%RAÌ’G}¦ç†<(“Gc6Ü’KÕÏM3س)yArG@ý,«òr©˜)úÀÖ­[].WUU•ukÙðºÊ,¬G]u)fgëÓ…W™†ÙÒz~›±ïá‡÷Î[0¦’>^¼dÅ+¯Y¾âê9•g“u9 Ïw^UUMÿ.òDÊ´ÛÍßóô(Áoúl|oõY¨üZ;´^>¡m£Ø”ìòoœÒï¢ÛÄI½“²i.ò‚ÑÃlSáG…äV˜ÝLñÌ(N>Ø3+¹@rC€¥rRI9SÌccc“Èe®Y:*4?ìì ! ÛkúN:ë\¢'Iq¤?Ãú¨,Gó•ýªSj‘*ÊõÒÙ¢wÆ^aÌúlDëۦkôgy¤“½¼­;‚Ô P ’š´þM¤ìjñR‚Œ¢AVg˃Ž3è#cÇÆ·ocÕª:’ËÇŽaæ_r'Yåo1-Ó+—3¨ZÀþÉIÆêÔZH¸JžÜ¤ØŸ´©¦¦Ó=‚«§Çevëp»†Øx,½FTí)•êÏÛ)ËB’é•ègŠ©Lº˜ä2E¸ 4ü4Ô˰1³x¦-éøÇþíWº7²íÐÁÝ{vo?zôí¾¾6?ýƒÇŒO„wìxñ÷ƒ½¹ë×§O½µkÇæK«Çǵέo_ïŠG†áíëlÏM&k›UH}€“>?Ž‚LJÀ<¬â‚Ùp«Hš¢mv·ˆïëÎ-ü²´ú'ìT‹åó#»ôI{… S!›5ÿjkkN'=ÑΨ »¸;5§9¹;fÓ(YßçgamæMÙŒdSþxÖÄÄ”rdFÝ9Äâhr‹“?ÛU¤§'Ú±E}û–dÉ•z,™ûŽýL„ÂÒÆ‰T^Õ°âW¿cevZ޲ÆÍ-eý3FƒgÒÿt³êüe Ì_í¬þñ£O„Ãek×­Ùüä/öìýÃ9ˮݿÿw_üJë¶Á…¿øùÞÿwýõ_7×~&m0å¡{­Æ¾š>*ý‘DóF§Šæ;FŸüH>:ÝäªdéáŸe•È 0 ,™{éAŸÇ)sâ/—š¢½ÅöѪWÿ½ åÜÑÕî±üÁ>‹„SA`æ0 ¡ÊÏb¦`Ì3×ÜÙ(™þºëÛg¢&iIÜhqƒ0•¡Ìd´.ÉÎ݇†·ï;qr,(—)áÿØÌ,w(¶œœõÇËh‡ÃgÕ,ª¨ »>GMÍ¢?ýËNž“c{­ªãi P4”õ1§0;&“S²iÝrÆ‘”™:ùsÕøÕìà8dI€=ëZ6Úš†S~$Ôízó¸µ*¤2EO•#´Óê8§Yv2"×ês\ßKóý¶Mº]áH˜Í$ ¨€Ü(æi´äLŸªýé!±ÂF½œnªh–A¹.9§Í,êÂÈù{þ˜|3h“*™cb9Y~T¾ôû1ÓÀeK—Ð$-…M‘ææÌ™;wž(«¹ß×pzôÔèè©Ph©(+ÛüÂïÕ¼wñâ%gŸ]3gΜ¬á©ŸßÑ;é}Û¶|šA:“jä$Úõøªe y@ sƘ•…6ùlPzfø5-›Z,f÷CzTJ{-©Ç9Ån°kÏéÄ u[L„véÖ¥#@ 7J^1'»Cä«,ŲhK§‘VŠ¢4ÿɯ©_mEêdù´…œ`{ºö’e©™ÉÝ™d7+îpÄQVFžåee”ùoþ|’G±6•²c»£ÑG7R“‰[ž&ëhtЭöSèê ØMþÓ¢ŒO­M6ME2€`É\k?féýˆhh‘žõnÝVLÏ-…`‹r`ȯžýð=­h¶&šÕ`·.© 3M äóLFùg”@àC®Ë.b§ úŸâb99‹F¢£c'G'ÈIƒtpÂd„¢¯½þÆYg-Í<óÔ»EžnQgí̘X*Ý^Ô7ФS•Ì+’ª5\Ÿ9Ìœ©È¸K´tõ ³’R&“ëSïÎb# MÀæxGzãîdbæ1¥îr¥ÿ„‡=±jy†‚ÛëuÛ“I7ØI“[:öÙ¥Ûׂ# Ó Å< x85ï R¦6ŽŽi­>žäÇN2VFˆ'ÿ‘÷}¤­#»GGÇ-3zîŠé\uY}dþsæ,»n~¶`þ3Òm>X>¨Ðê¶›€ššî´žl›eJ”@ò0ÔGkêÀ2>Må&ŸLÑ–¬æ¬Û<•,Qâè6ä#(æ|¼*hS®“2y]ð%áÈooûø‘ÿ~Î\rí‹Ã2ÒéfžhÎL˾ñƒ‡wnøZø„¶ö¹_üûùýS#s®Zˆr@@@òŸsþ_#´pê(3Å…‘Sýx¹lÚ*ÕÌ»üÊ(y.G…”¿dlŽ9^Y›ã™<÷Làž/PþÅò„N;ýÒóoóÞe×–­¾Ležz›p&€€€@¡€b.´+†öfC€”°ˆ ÖÄ´„‰”Ìóê¯\ùÀCdBf 60³ùYÆÑà0sFæÃÏ=C™ËÕ¬øÆ?M9zào•-_·€”·ÊœM+@@@ ° @1öõCëÓ ™}1Á6f’Å*ùÉ3äæ9:5ŸúüÜ[ÿBÆÀ`ÿfòi6g>¹õ÷”gnÝä»LB¹æï¾Ìš3³Ô¦ÌéëÅQb"›•GH‹k¢¤¥_.”"B7tÑú SÛÌ‹‘N­œU¤PlQ¦(Û˜Ë.šç~OÕšwGçWK3ë`6/s ¹ä̼^`˜õ1ÏLÌ\øÐII 7ŠyÇŽ›7oÎL4s,¹õ»hQàVóšgækMŒoh°Ù˜ü˜9¦2;)S‰U—]qö·¾·øß©üðÍÒ¬L«þ±™e³)seÝ”9¸w7¥O¼ùæá;šNýÓ×&^~ÉÈœƒÆ¡!Å|ôèQZ(û…^ƒwÜÓ=Òéî鳓Ì—ƒŒ `K€ Çl'&sHóÊ ÝÌkeG(´ùW(­ÌkþÉÀsñÌ ›n¡BÃûöìðûÚÿŽìß|ê'‘ùóIa«Ì¶U €@ÑÈb&,555õõõ~¿? ÑÌqá5Éw×`«³Š Ïk.(#tâQý"ÈÅIÍÞ)ÙôZ1´ü’vŠ‘PtJ @¦e2,S ÒÇê hé_Ažü’Kd«õ²Í™Å²óû¾ì¨^4ñÜæp`Zñ×_ˆ^è424€€€@éÈ™b&d‹/ÎZ4ë¤9î»tÕðöttèS¿WHÿ ¹@pâQuŽß×!6Ò#Â×¢<¢“³ lð¹úU¹²ZI¸·Yù„ô ª¦t.sÉö”¬É,‘I‡ÂKîûÞ²§_®þÚäYA¾d`–QçHL³p–³ã™IaW~øO–<öËù_½¿ê+ßžóð@ôƒæÌ%‹$ãX•••¤Q2Fé®WëõÆ—uw¦žlqÔݹQ® ì¤uI}}¤~éCR6g½»§±¡žV –u†…¿‡—+•›w<[1 Œ» oßwâäXP.SÂÿ±YîÐÒÙrÖ/£MÓû,3WŸË™÷LÊ\ÌÔÐ7D¹TÌ£££[·nu¹\UUUqlêõ»Ö“j%g‰FAÖ`ïµ$Ÿ›þ¨‚Ôoj6¹:©tÄð{ûcÝ,ù_67c+ äšü½GLî´I•ÌÞÊÒ´ÌûÒ´Lÿ°cF4JîÎYd. ~è%€€€È™bËN.³;M°~ ù•­™5´hNº4ÖGý½›md<æS¼ë©”ëBH6ˆ†–á€ðÔ¹„¯£«Ý£LÎø”oÝÝZ½DA@@f–@nü˜«««9²fÍš ¬Ër>oõ#º½×ÓNÎÈœÜ2är«{Öyõ™G)Û5ÔÂŰìVÎÎ)…è3)ËzVÉCÕÃ'Ú¶›Yâ(@@@@ °䯯\[[ët:ËËË'ë<ÏÍë¶È$ý'ÓÍYSŽÒA¶Mw'”•Rˆ3¥¶”,mA€€€€˜äF1S0fP¢$¥[”—È(朡DA    EIй(/+:    3PÌ9C‰‚@@@@Š’sQ^Vt @@@@ g ˜s†€€€%]1Ç„ 6D‰ñ˜I4;@Š€Ãý CÄèUÆïÑ2~;êc´\Ð+"©ïS¢ú(Ï¥zª¢^ö·I¡K   )r³‚I,ÆjZy:¥ü„Zµº±'!ÅÝ9²…ׯžÂf.,ãb] µ½ÍS®s ÍÄ)yC vóûbQþODä+‘ˆGxŸßå~˜…ù=¬ÞåQu(J‰t–öZ}9oz††€€€Ì,Üø1ïØ±cóæÍJ7§i//|Í[¿WÆå½Ìä2‰ã†®@jÁZ!#Â×bu<õ ^%;³:ù\»zSËEJáPÞG|sgòCâò~O»éÓÅ?’Y¹púˆ–‚€€ä”@Šbž’,8zô(-”ý /ƒÁœ6/£Âœmë½þÞM’:£Ó‘© $}Ïé#?'!“¾„Dîó&SÔ¾#&è… @@@ ÄäÆ+ƒ ÕÔÔ\zé¥~¿ßívWVVf‡‘%|~>ÇÛëöóç~Ñ(]9j>u0]Ñdî^ÑÓãârâÅhåJ³qG½òÊH®”ÊMS¯3©‰éZcyIÀñäs9ôcÎË.¢Q   3B gŠ™Z·xñâúúúìEó@+ûǶ?ó@+¹_xê6øHñnñh=Žõ CæZAtuô¸›G4whÿ`=9|ȲjõbX 7t%¸/§TÚ&”³l‡ÜÌõ´&4ɪHËg÷nÕ]wÜdn!Ù”Ù1ˆ®³ti¦Ý¨;ìë,Ý•9IîÓ¿Êí™}˜)…?v|³3Ÿû‹¶€€ä@ŠWÆôÊ&ërEE…Ô!oáAá÷ÕÒ¼AM ô„³ÞÝÓh鹜X¨v ã¸s²»¹IJ^.Ö»N©né·AÇ·ÔJ›zýÞõvÓ3mRƽFÆ3J@zað÷”d2«eM+KÝ‹‚ßùÕ>{êä©`(¬«gÖÐ,–å)»wïŠÐŒ@l   ¥A —ŠytttëÖ­.—«ªª*Kzäo¡oä”ÁóóbE IèÖ4%i3ÿbìÈ1…-±ÒôdÚ¤ô¥àh^Є2¥“²2'³™³”Å"xlllbÿþýccãʺ¬å‰Å"l`Ž…Ã$˜¡˜óâj¢   0 r¦˜ÇÆÆ¦(—u.ÑÓ‘ë‚4êH§{pxªúd±}Jp³ß†noVPS+u65»-ša¾ÓmÒ,\OT1ÝÃä!3H;k☠·ÇG'Nž: ‡ÙêÌRZsÌ`¯ Aáæ"Qؘ'Cã   Pˆh¾¿+ËÔúÜ(æêêê#GެY³&{ë2µÅÓÍñá”[†´*Óô<¹‘»…t“ð¬óJŒ´ç”KÂÅ6ª‚ÈO:ÉR)[¶û]z3dU¦z“›”R ;c°úe? vY–ûšs4¶(úPÍx×’_‡¼M{o¨ºã²7/û×öŸ:u2 )÷åXÌa3 æHæ=¦¯éË›µP#W{늩•ä<è¡þå–c%o¨Ô&eÂUf7œ*ôîgA,±yS>1ë^â„‚'<ز­–’KÕ3ñWSÛfgZ¶‰ 6r3󯶶Öét–——ÛÔ’”Lq™Ý(Øç¡Í”ÉCŽæs8sBL)„OHLL.VéªSSû,Ž&×cúœÜ¤ÌzŠ\g˜Àî}GÂä?‰~身^ ìFbaú$õ.½ó~4úß[?u¤ó?øŸñ±‰ñ±qoÓÁ·«'ÆVML,'­üöÛû—.=·jÞM^óJ&¼eÞ7º÷jìèöȯ½ô¡Üh“NóôÉ]ß.œžÄ!yÙ9É™ñ@9©žù z½‚,yì&L^ÅøMsi=HNv'¦)‡ŠŸ€¹ôœS›>ÐG+»gd´Ê@M4ã]ûm tu ˆ¶)¹ÿUAAà Èb¦`Ìg¨ýYVKðXž`+4uïüÅÏi½åÈ ‹XDDñhH¾Ÿya¹rº¸öæ¯ïßÿöÉS'Eð¯ÆÇ—Õ{¾8§²ª¬¼BŸüç`™,½Ÿ¥æÎB1ódVv0òÐ/M1uuvòDTõI4oÔó”Æe!ÔçvÑÒ¢ß6”F¿ÑË$Às¾›]M0Ï@7]-,—ãOBê†zªB‘ HrÌ(¥›q÷l3ªç]ƒ§nÕ²-ò•@¾âàé¾uâ{}àÍc×ï8òÁ×Ý8|híÐüá€gpÿÇn¸Îýò÷?ôxeeÕÒeË.Xy¡?’\^zÎò\øÁú_½þë{O<&o `NÙ­³è4yÉ µÈËÅú¦:—æcò«‡ƃZ¹Ó¥9&ÅŸÍêlº†ãõšžâ*õÐXf0=ù¥l|8ž{r‡ˆ”’U­­ôØX9N5t hÏ鳑]opšº¤`nrÆ‘­Õ Ô ‘]HN4zo~´\Ó6î*}¢˜î†gW"sF£%©ü³¸ØÈZDäüm>ŒÌÒìk|…’¾xæïd|?ñÛhGFjÒ";Y×pÊ»ô”ŒH˜%KF1ó£XÚ2_"{ztqv~ÃÔ²4_¼ré%-»lõò+.=ÿŠÚ ÞqÙ*׫®ºòâ«ßq‰ÛålpÕRø 2'ÏŸ· záâŽ_MÎôqîüÕÕ5*tƃ2t†œ(=²±1 šjªâ†X.ÒÃ^9©5þlæå÷ ­ãok?ùïo“Wµàâ”¶Qôò‚>‰‰1vÙgIåj?ï}ƒn³HwŠæ\n)ÁeôðŽšwq¼:£dY#;ߨŸí÷uú@ìit´ÈÝxƒÓÔ¥ f²°wª;z «Þ[&jý×ÿ!Ý #º›ºÆþTªA<›—>õ{… ­“ÐsÛn¦ðOªK‡Kf5Ýb°¦ùž›%~mйëKëI“ $ƒ@>(ÅœÏm›1¡û`(K3UB"J­HB;rÍË”ÐL¾7ßž`ûqLDbrÝhþ?OÜô™çÍ_Pæ(§D:ãô©Ó*<3y3s¬Œì³®eéWWÚ”õ,g¥sꥻ³]Z²Hÿ ùcÍù´4Ž-®pYF×Ü?HŠ6¯Wvm]¢¦‹)nj”’Ò²d®Tv.÷µÇ5ÜH=Ýh°}]†`V’Y»#0˜=]¯%5¤º‚@ïÒ>—I]3ëÉåBí6ûn&ó·+é%@@¿³³¬ößó0™| ÐN×LØ´".Ý–ò¦=²K/Ë.‚À$Å|á£ê'0"ÇåYšy¹€Ÿ ¨LFb½L¢™bÄEx:  @r”·¨cNåÜ¥ç,»þ/¾óìï×:¾¬Bgܲô“|âÊŸ|㣧NŸ yî_v­—Zv`xP=|åŸá¡MÊ?!»rÒçÖ~ÞY07y¸Ž@ܦ›a˜óôdvT>Ò± ©NF9¿aÐ&!`D€4•ËJ6e³LLÉ¥HO4 iN§•6y PcjÀj°Ú~ÏMEgòm4û~˜[¥=¥¯±¶z€öŒÄ.=Ã!€À”@1O N*dŽEÃdiVËõ]ûÙ‘kþê·ïüÄÏÞqë\yóïhÜàúè}2Z/J"gøñ%޲òªyÕ:ã?y­çá·Ä‡Îø‡‡Wu<â"oƒöOLŒÉ¸ÌÙlü»ëkô ͦLn=>ŸæÄ-‚C¡3Î{ïæTV:Êix Éœ]t9ÙVv¾¸ze†a?Û'á*zºû½ŽFý»;;½¢Wä˜â §œ÷9<œ¶$<+ó^ƒ%3íHÁ¬æ¿ñÙ«R]Aø€¾Y—lÎ1ɾM],˜µÖ¨$E@Ý®!Zæ“.µO«e™˜T9)–þ!G­ÃÇétn·§½³£–?»½^ÍÆÌQÂ)‰§O»›“PÀá"!4tã½Jùž“ðUãTx)~¢Ü,¾VXÈÙy¤^Îj@Ùèž]U³K·*i Ó&à8wõU=ÝÿöÏõE}úÏ?ü¥/Ý=üò¯¦]8 \øå‹¯ÅÝðîË2)úÿþòw¼òÅ—v~àº5µÑ¨ãº¶‘àè±ðØazEÇFC§©ß<öÿØ;À(ªûÏ&!\<¨"(È‘ˆxÄj°Ö«¢R5‘T«P­Ú Ú㤖VňxQMÚjëIT<@ª ‰Ö[Û¿Á„DP%äÚëÿý½7;;{fw³ÝÙï8oÞ¼ó3o²ßýíゥZ»©ý¡y÷O¿ôb˜¢õ{°½~ÃÓáimk…•ú˜GUß7rTùu»ï¹W¯ÞEyyù+?|wÞ¢þçÉ¿'Ò¦I€¤G`½ä`ꨑ Æ$$@q ¬_¿þ©§žºð [ZZdÍL1"`÷íØÑÒÜÜìÁD ˜äà-5báÂÇÇÿéV_‚uãÖÌ‹$FqâM7Þxç#ÏZm½ìüÓ+/¼6æ,¸ylbÊÜ0 {ݰ4Cãcá•[GéåáäâX-Ð,NÌ8ªÉ|>‹.«·"”W}\ØÓ_}»,áÊÏëÕ§¨oŸþ’×p‰47   Ü @Åœ÷9W{é†öu`æ¦÷A ûýG­_¹[¾ôµnñµmó*óKó¦A-‹¨VªZ-¦¡vÈf8é’[6m‚ÆeäC&# ꩹‘ 䘊ùÌÊ ìeָ좟&ÛÖÌéóÁ±WŒÊÏÝ8óúÄ´,‹Êxi6Â^:ºÝz柚#ˆ5æôÏ”¢¡{ôè  \-(ì©-ÐxÉ6JK¶1L›@/½™WH€H€H » ÄTÌP Ý]7Ë'î&©Œ™°4+ ã”+×t´ns·lõÚü˜Ÿ¹ÿr\RkeȨWK2‹AZ‹có\pÏè«"JZ‰îîn<Ë'  Èqs†´Í Ô ÈkId9fèaÁ‹¯.veÈb10#(²X’`If¯wÙ—Ëôåq!í謖Åh)AØ”¸¦sê÷…9I€H€H »ÄTÌp×Ì®ž°µ$I`ë¶­}æÐ!ûÀ+C¹a(Ó°zq‰>•€±2†×{ÿüÇÅŽ,¢X¬Í8À“YeQÆgcn|:"Y3†H€H€œK ¦b¦S†sozõlúEÑÛ9 ^ÅšŸnjòòª?ÈeQÄÊÒ,JX¤0Þù÷ܼ[s »J$@$@$0˜Š9á˜2,Ís<ÙáqÃ?NÍø_m*àÁÄ@ÄbÒLïÛG$@$@$°‹ÄTÌ0½í¢&±ZH3miNs¡,ŽH€H€H gÄVÌÌ93ØQ    8â(æ$ó ç<;¥X—þÙ3÷üâ‘ ±k:|ÖÃÇ­»æ¯÷§ÞwÝo"°&vÚhWNùÝÌßr¡³£•3.м$[³<^    p ˜Š¹óŠ\ÞsÑ5ÕJû™Z3õ>#¾hVE®yöç_ÕÝy-ÿºµú_ÞùÒvçט8¦$   èv1³,§orÑ„â·ï½æîÕ:Ñú»ÿöúQ³N8åá‡cÈaUœZ¤«k[ºÊ kEœbã\êZW˜›H€H€H€H ÄTÌ4~Ä!Gíݸà[ª5ï½¹éÌa#`E>|Ö#ǯfËÄÓJpù³gî¾àa»·†º:ã/wÇJ6âÔûg=X nüóÏbéo[½áéUù÷®<êB)šþ¡}/¿ý´=l- IÑ<ãÔ+®3Ý?þ÷ä)·³ùÑ‘†qä¬ë&Êé;FxuC.ª½hâÞÒÔ5ã[Ã$   p˜Š¹skð¦åà•Á IDAT-kBÁz¼Ç¾ûùýbuÞcâ>¯}òCÆ ç>7uÜ)=0<[t 2Ù×ÏýæŒw¡Î}àgƒŸ QÛr«œÈôªö—Lž±Jj¿nßú»¾?yChK FžöÀ¬3/zýÏRlRì3šñŒ„¸~ÞñøóÕ“ ÖÏÐi"ª[?nâçO~ÿ·Ë¬–1@$@$@$@$à0J1«—8¸\.{ß:qŸ€<Þ{àp¿±Ò–Çïÿrݧ( Q_.||™^^ñöÔãaxV2Z.ébˆdÆ^û{9k–¼vÛÿVøýQfZå##Ó«Úof¥YûÀu¯oˆhI ÁGÏ<ú¿£ÝÏðdkÞ¸sŸŸ*Öq”³.¬Á‘Õ½¾å³©?zàœç=¥ªn$@$@$@$@ÙM ¦¹“n­~÷;Îxæå@‘‡~wЖGMcm'¹ã^n¬ô²ò&¸…¥?"Ál*ÙaƒB“þÕ͵q’³ý}ĉ7ÝxãWK¾ìüÓ+/¼0¦s2Öæ¬¤êøfå]éžF»Êîq~ìyrôåÉnô©/ßÀîU—ô.aDêS•18útQËîìžÆ²T   Œ#[1'å¡‘qýŠÓ ‘ÊÊ™6N^rÿ÷Èâ÷^µûü†×kx¼–£ {pÉ#G>ª«ú’‘ÈeîGøâ; 9ûC$@$@9D dõ8³ß1³s¹4üá§ Îí{—€þš$O‚í “œª‡Ã|B—‚§0+Ç-–I€H€H€M ¦b¦ ÖÑ÷=·;&q*ë£hq¬Â²©Ã'A—_vn$@$@$@N' ßRbwHˆ£˜)œ>r©®¾–F?æ\"Ǿ’ @ް¿Ý/¦bÎQ6ì¶ Ü~ÙÐe/=š`ÏÄÅÝçóªƒþÏëñaî¸Ú0܃Ã>O°4&#  p˜Š™3ãpwÙ…0Æ »öÚ™ˆ¼à‚óõ¥ûïÀ #F©e‘ʘ#}ì…f,ÿB){ÝÏQÊOƒ @nˆ©˜_[xsn`/³†À‹o®êb[!—gμö“O>A9aZ1¢•ÕÁ¬­Êj]Rûÿn11ã?,šÁH€H€H ¨•ä-ÙtXÎ…ÛÍ>jZ.#¬MË=öXyyLËÊéBVì—ÂØÚr»Ý²wtxtššûì38chŒóÏ?OY–}“&Ÿ­ÁÐ.‘Êrªµ²6*+ò>ˆá9e?æ¦Ú±X©Fmck›wý”@(1ÁmJ}Ô{YNÔd)GF¶*fQÒÜ­Œ™Ç¼¨Ezcâè,Kèõ”3&W Sç.ð'çí]xá¥øv÷s»÷‘='´±1S7§…) É|jjŸ²+c eVlþ§œ•ÝîWž<ã·çÚŽ f‰R.rÅŠ³|–¬˜)‹×É6ÏX] ^YM£J³¤²®"B&QN÷߇¦Úêå••Ë«µüO±¾âiKýK§'˜Û¦6’˘`ùLFAå+V¨ï¶j«_TW9±Ü莗QÏuC$@A1×Ê $puŸ} ƒðiÇ>þ˜ÃÔq~´2d²¬ç“°Ï÷Ÿ¥Ë—>ÿH`æŸZC,Î^£c[kk{kK«Ë…e4üÊ ­VÎHe­Œ¦ÚÉU¥KüsÊP‹§u®ñqmT¯l2ʃj2¥rºíF6-žoLš7ݘ|mÙ¨ÕGZų”?†žå§Ê”Üá6Ú·¶µLÌ*Ny9Ë¿Iû1CZ6ˆq*¹ Ðe“&دqʱý¢°K+sl­éåð{¦3“EÉhkfDrû5ÌŠ‹'L2æ/âT¥õ¦ûI Ò¨‘VIö©ÃëÃ5s“æâ¬¢Îh¨*Ñ® ¶ŒQzµûÉݦÎuÜ"™ÓÂ,¡€3UØpµä`8t G#ç¹–ä¨%â·¦xñѪ` @— DQÌthî2U):Øøíw?ûÞŽs*Æ=ㆿ͸éŽñgþ ¢xáÃï<ò઺¹Ÿ­_ÔÌ-ºqîÐêKe­ %™ez ¼;üɯ•aw‡ì€òcn¬±l[!É£–Ó´r¹°aO›ô½,«™®,Ûâà¡>÷åWæ  6bfTuÊUeÐÅVQV³%˜µdÖ‚\e+«™§\NÂZ%R%·6ei›æ­bè`Z޽ÅìED÷c—Á+$•@àû YÄ·Õ°§)j~D&2†£?×ú·š’ª†º õ†þ.«Œ'H*ætPd™JVa¿áuùe±¸áû ¹ÿ^ŒtШ!•ì{ÈCKzØÁÿ}ÈȲÒâ±¥%ÃÐÄ3nyÆí/ͼëU£cs[[ÇŸ[ö·'ß½óéô ND0«÷&×cûo» æ,ž6¯&bJ] å„U'“–0íprðÓ·“öTj˵ØyCͺ³«jÚ…n#ðÛµ­ð´UÔ/vê•W^¹rÙK].œ@: ¼øæ*«¸“Ž: ‘¢Ÿû÷ûãÝè÷»ßýtôáïï÷G^ÚØÑºÍ½c«·m«¯í+Ÿ{Êixòwk7v<¼à‘'ênÂÊæJs¨ ,¨ÍN©{p˯®{L©]×aãÏ{ã©»i@¨Ó¶¾rÔÈÜcÓ@fX¿~ýSO=uá…¶´´À ¿¼ÁšàóíØÑÒÜÜl.±)ëlz‹GX¸ðññãǺ՗à_ÝÌè"[A©}ĉ7Ýtã]üË*âÒó+*§\Èõ˜SgÊœ™O@LËjY ¸gÀºŒ†×ÿR £²ú„ë²,´ŒE4¼†Çç×/1ÑrYŽ>ß¶õ5Fû—FÛf£õs¬›Qyò£m&.ÙÐÄ||2°…$@$@$üÈOD‘±Ü¯ß+Šîʈâ:fZcGË6OëVì–ùÿþQ%޲¹Õ«³ÅÿÿaÝŒ¶Öö¶Ö¶Ê ²nF{ëÐööA²fF[K[[[QQQÆvœ #  H#*æ4ÂdQGËÁÞV¿OÞqÙzøõñ•[GÉl?1-«#d´˜ $”Wú)7 y ”¶Ï{ÎoïSÓÚü•§ŒikÛ뺺Wt8jpÆu5SÌÈY‡Q#3¥Ål tJ€Š¹SDLÅà<¡ÞTÒ&‹e`Õ Ÿ1î÷u´~ånùÒ׺Å×¶Í«ü˜_š7 :¢ºô¤s•SŸ¬a@K«7fC@m/t´í6jlyAaï¼ü¸2÷êÕ+‹¹°é$@$@$@É bN†ÓfY=6fo;Ô°öZ~îÆ>¿KL˲¨œ¡lÉ~¯GÝîü9j«+O€3Æ#«ÞÿýwÛm·¨iI$@$@$àTTÌN½³ì—€^í_®t»U>Æ)W®‘µ2Z¶zm~ÌÏÜ9.Á%#µ+þúôÆq•³ýb!b< 8˜³ƒo.»flݶµvñÐÏ>ÅûC‹WÆâ놋]«2‹Ay‰ Ê™Xw9ÆŒAƒá"1bb4 8™³“ï.û6ý¢‰Â ÿ-~jΟ¼ÄD^\¢O% /3ñËÌ¿XÄ`ZæÊ±à0žH€H€O€ŠÙñ·˜pÏ€Ïŧ›Úà¦!¯ú“µ2Ô;ÿä-Ùjyf¼æÓ¹‘ @*æ$Œp"¸gÌ]ðd‡ÇE3Ün7V›Ó› x°Z3b±2†»Î>‘ t•sW 2V°Ü3²¢µl$ @FÈ˨ְ1$@$@$@$@$i¨˜3펰=$@$@$@$@™E€Š9³î[C$@$@$@$i¨˜3펰=$@$@$@$@™E€Š9³î[C$@$@$@$i¨˜3펰=$@$@$@$@™E€Š9³î[C$@$@$@$i¨˜3펰=$@$@$@$@™E€Š9³î[C$@$@$@$i¨˜3펰=$@$@$@$@™E@+ff5Š­!    Œ!`Ú˜ýj˘V±!$@$@$@$@$) ì hv¹\™Ò4¶ƒÒDÀUvËðcÏ“£/Ov+ O}ùv¯º¤w #RŸª¼ˆÁѧ‹ZÖpgšZÇbH€H€H€2@ˆbÎôƲ}$*ÿ÷ûä?ëvŸßðz WÂrTa.yäèÑGuU_ò!¹Ìýß²TÂ|$@$@$@ÙG |æŸòÍ {FöÝH¶8!zhËï(¶A.§ê§ó÷•À¥à)ÌÊ ÏD$@$@$@Ž$®˜ÙIvŠB„É_ù’ˆÿ!ýÊwiUX6£Ã.¿ @î WFîÝóœì±ëŸ¯¥Ñ9'²Ó$@$@$»¨˜s÷ÞçNÏo¿lèoÎ=ÕÞ_Ø”õê0pl†K3Â>CÄ×Y¹+K” ã_íö,>̈‘Óê›kr‡{J$@$@$@¯ Žœ# ¼0Äc2YÔ²©••nöý;îxéáKš·7w¸=õ,ZIJʲnÝ'^ÌäF$@$@$3¨˜sæV³£Š€)”a—µwÇœi°[F4‘3£ûS4ÕVÛä{Ãò1¨^!õSJÄv.[cÍòŠ0÷e\?Éô01ªE¬ã3ÞŠB~{K’ý>ᔡÉ~d4‘Ìú‡ž(æúÙÑÏE £\mx>ÕCuKâïCÔüŒ$èNJ!‡Ø˜CÍÏÝY7Ë&M@^æ'>Øe¶ŸøW(û±(fà¼ü‚>½ûõÛ­ú¾pÆÀi¯>}‹Šè¥36¡–ÎPS•`NÒÆŒÎÚÝ!;é»rn¬±ýlÏ`ù1[nÌe5ó”Ì/Ž€Q:Ä£#@¹VØÜ2U±HiJæúEËk¦‡ WS ‹0:'jiZ¹ÜØÎ# —«}_Q'+[Z MÞ ^&]B’Ùw$ŒæU+>á_£4Ò42ã‡Ø[Äs)IMvIU¾ ËfššcÅÇ.žWH€’" ,iá[¸W†¶7‡§â9 d9èbÊÚÒ¬_M‚3YÃÜE7û]¸2éê…§þêžÞ}úæ¹ò©—ÎØÑ¼C/ÏŒô²VF²ŠÙþÛn‚$‹§Í«YÛ$•`)aÉDÃFlåÓUE°"/â)Ð# ˆQ© ÐbbëÂDÅx5ð t+-™ëÏ7"™ˆI¼“ƒZ6²%P·†z ð%8ò²Š‰õ÷A•¯2šÏ‘ù ÅŠQ<£I€R _¨!9\1§P(³@æ€\¶—}~—òÆPïóÓffå£,›ÏÕ£°×Àoí5î7Ýóþ× ½tÆ/8ö›ƒŸ¼éôæÍî™û—d—Å 3Qб©¶¶3Ç]ä)Mt}ŠøÍ LÙ‹á.©$ÁìÙQAübñI?ºÔøtˆßF¨¯¶º"ú•2H÷×€ÎÉë$Ð%ò|TUTE f]*ä+$­òÜ€Í9`+†‡¾Ü´¢AÛ¦åé‹ÕŽTþ>Ä*‹ñ$@i 01Ûu3sÀ²ˆÌ' %²ú¨„±øf(¹¬¢L1­t³+/¿gï¢XKg|±yc{{«2X'¹Á™Q<}Í)@p7ž`ú?X~É‘‹Ãú¹¦[œô±šTVºBÌ`.q­ÐV*Y5KÍüS²]´y]]i îås¬N‰r˜Y®¦S¶® êbIi FUÚ’X=`< ì:òEÏòw²7#0§–zxLá+ÏÚ"£R§T±LL˜¼¢4–YžƒXp OMÔhbÅï:R¬™D@ÄA`ÓNê»B1 ¨¯‰–†ÖÊÊÆ,ÿÃ#ðŽ’€çÆðïÍܼùóæ;ŒŽ_¶µíµÏqWô(,tå¨%™SX]N5L~KÚD™4'$ªxŽ?èJ‘#~z\µòÚÃÆ˜éKê‰,(ÚZ!…šÑD•¬t´žçåjxÍáç¡€xF»ž@ø0<xXãé’[6m’GÃÈW«møe© ›{Sw´6­eÆø ج#­¿§µ°´B`a$@$@$4S+îÇlIé¤KeÈ`¦&¶&üi Ó¨ÊJ2+ó³øf(%íïÑ£çî{î…ì…=µ¶öÊrÌÎòÊÈàǦ‘ ÀÎ'`je›c†©˜­ ;¿M¬‘veYC²ì² ³:(ë²ÖÁ"•Í%™•V\ÊsÁ=£¯ÒÐ%-ï˦bÞ 7U À®!`Yá|¡?òƒ6f}^»æÎ°Ön&üþ‡«åu}^qYVoº†Ÿ†¼¾O½ÃO"Å®¬<.ä€ùf¤ŠV¹tâäÇÜÍÜY< dØÖÐdmM¶¤³(fë$ÛzÄö’@¢~s埔&A¬d±²‹,VúW_P1*B.íÓÉ¢bÌ-ÚË3mÓ‘ d8ùØ—©}ú¥Œö†{eˆ8àFÎ"ð›sOÅî¬>±7$@$@$@ÝE D+imu9ŠæîâÏrI€H€H€H€2š€å•VZÒ9ÄÆLsFß@6ŽH€H€H€H » (¯ ]‰šùðÊÐÞ™¶ ÝÝ–O$@$@$@$@JÀòc–öEõÊ ™9Co›E$@$@$@$Ðý¼2´µÙôcÖBÙnlîþö°    È8‘Â8ÊÌ?š™3î¾±A$@$@$@$@;‡€òc¶Ù‘ÅÊTÌ8¡VÞ97‚µ d2Ë̬ôÊ»É}`ÛH€H€H€H€H ›„¨bÛÌ?s Ú˜»‰;‹%   È"1m̺ÍYt/ÙT    ôÐnÌ(ÓÍjy9ÎüK/d–F$@$@$@$à–)Y³z­‰ßå’£CúÇn @× D}ƒ Es×Á²    ¬&ë²ÝWY{e˜QæµÀ«´³ºŸl< ¤B@¹^`³TsU ¢\Ë©Í<$Á\e÷¸àzdøóäèË“Ý èS_¾Ý«.é]ˆԧ*/bpô颖5Ü™Á=fÓH€H€\´l IDATH€ÒF ¨˜ƒEšª:mu° Èþï÷ɆWí>¿áõ¯„å¨Â\òÈѣꪾäC$r™û¾e™Ð)¶H€H€H íÄŽZ(ßù—vÈ,0³ èÙ­aó\åT=êà¿kõ“Ÿ5á^ò ¤¯t–DHÀÊ~ý cŸÈ`ãØ3nÜøùÆíÛ›Ž)mm{•þà……bZ†˜–4òâ÷Šbö{<ÌüüÈÀ{Ë&‘ $D ¤¤ä‘Gñuöw ryèС׆áI¨\&"çWÌÎí){FB 茡ü1ÄØ¬ØzöúÖÞƒìî6ÖníhÛ ryà^ƒúôî3zÏ‹ýð€“gõ(ìiäå#½‚™6f( ¬%Å\\\ìv»ã‹f(æ|µemGÙpHku9S9hý¶âY d5Êågì⻬ÂÚ‰Êùù½{÷í×·êûFÀ#?¿r¹oÿzéŒM›7¶¶¶Ááß+6ff½ð\RÝkª‹ µ­m’¬õS¡¤ ²%Ž(A*Ñ¥G\Jµæ#Ü$þá|J½|ÄR£^j ”È¿©•Ÿh.XŽûõë7 îVTT¤ ÌÜH  „ ãõ˜s»œ;”ï²ìØä¨Äê*ãI€:#@ÅÜ!^w S«j£²­]d°šÕ§ü•=z¸÷1¾~@¿º¡î«vY:ã»_¶eÌ£3Ë›[š;ÚÝIú17ÕN®*]âŸS YëIàƒ`NÒ+£lL|G‰ò9Ú¾¤²®Z|œëg‹QZmb™;Mô>4TUóPDcQ5Y»NFÃò1ˆ“RÃ+•bõÕ¥KgVZÆ5‘ 3éè‘(t¦s‘ÌËWŠcF sbOe´§,‚Pg"20‚H`g bÞÙÄYß.!àoð»ëîÜúuKÝï¼ðÔŸoúÓìí;Úò|»ãR™o»õOyí­þüÍ÷-˜®W!…˜ÆÊ{î¹÷>û3Ú°tF–ÎØkg ¶ÇÀ½óòò“öc¶»CFE`Z¢*êôUù9¸"h+;ZB”ȲšyJéO›tÈ,›4! ÞÃ*•WáÂiJæúEËk¦Ç5G©™Q$àÌÆüÅMFÓÊåª6Á§2ÊS&êßÓ„]RÕPW¡~ ýý)">¢TF ¤‘sa²¨ %pßC6®k¸´òGõ Wþúsÿ+8ïÜóöÞ³ïü»nîyàÁ·TÿåüóÎÛc¯~ußêö7û}ò6ؘ]y˜üWTÔ_/ÓÞ½0q|@¯Þ} #/9Ålÿm7*$|4VʤÜXS¦RÈì"Ìœl~L†F-$^$>ï#.GV’¤|zÍr˜»›j«—%vD!Œ gÐ’¹~ñ|#â1Hä©ìä)Sìbý}På«¿ •ú÷&s"D¬xgßöŽv5*æ]}X7xö™–Á‡wÐÏþþ×ÍßóZÿ¼æSÜüö’[ênýõ^ãéÑ·uر-‹^»í¦;ÛZ²ÔãÖSNðÐõ|ú´sÁXxKgÀaWÅ)C¯áœhãÅÆ 3Qб©¶Ö¾VFÓŠmÀÆ`¡ødħ¥þQ±a§ TÞ Ö1lQ%cTj«¤ÂìÙQ”B53 8„€<UU‘‚Y÷ÏöTÂæ°ÇC_îì)S©:ûûà’ì d7¾Á$»ï[ß)¯¯~íû­½úôêõvl‰dñ{×/]ü¡aì_zΠ?Xó¯O¿6ÜnqqVÓ•\†~6 {Á~Ë= •_1–dN~u9836Ž[âré—Õ4.µµöÜê’W•QVY©mÌø%×tЀy©XæèÙOCºÝP%9e“R§Ù¯••®€•Z48J w¬ˆ¬4¤Xõ9^êÛw|ì°\<%gpTÁñT⋱«Â%Z¹²²RCèô)3“ÅùûM>'ÑXñÑÒ2ŽH ËLŶ6—Êè2X)ÚÛ=Ëß}§eGÛúõŸãU}o¼¸¬uG+öm›¶ ,÷½ûFC;^LÒÚúåW› Æ(Ŭd²¼ [OTî½{õ•é€j^ $³¼#çÉnò[jˆžUSï´Ž¸VŒ™€¶I™=õS3òrê2ÍÂç„ä³jDë#* ¶'Ø·NÖøHÓ“@ÖPQØCŠ~ÙGó¹ Ïl{êCAD&Ì:Pl0 8‚€µNFXohcvÄíe'bhkó|÷¨ÃqýÙ½çñ||Ôñ~áuoxoÇ»ßè#”µ1üîÖz>ýús¯ŠY/ša®Í,oÒVKÎ)µìBRÙ§Œä¼2b·/“¯ˆ sͼ¨B=“›Í¶‘ @º Ð9ÝDY^†hmuëAåºÝ^ÃÓjxZüžfDzܯ¿Íãom÷íÐiÜn¼ÕO³ìjfìÔò~(i¯ÈdÓÆ, :;xS³ôKæOÒKm8¸£ì $@6æ¨ægg«À0‰SÀÆŒ®`F\):Ün¿g‡ß×axۉבtøZ¼~·×ß¡»ëu{”:†³ü«ìÍ£hhó•Ú^YŽÙÙÏ!vÊÀ~ $G º0†bÆL$½ÛË3§'%WS“@æhmõx=¾¶v¦vtx ÷v# ˜=·‡ÇçöùE@cóz`uÖrÙôÊÇeqÌÓ²ZxN)iY*ÃÙŠ9ón$[D$@$@;ƒ@taLóÎ`Ï:v!¶6÷^½eGû–/6vtxß|skkKK[s˶m-þüŸ4|ÞÖÚÒÞÚÒüõÌüƒ`~çw ‹Å†¬–™S«b(‘ — À&n̹àǼ o«&  ]C ¦y×4‡µ’ÀÎ!ÐÒâ9üð#¶oïØÞÜÔá~ïØÃá’áõ{M[w{n›{àQ.¯¿‡Ç׫cK_Ìüƒ~`Áãâ—E¬ËPÊY6™u@ŸìœÆ³   L Àµ22á.° ÝH«Ë½úÚ“m­ŸoÜâ>Âûöÿü­;Ü­;Ú¾ÞÞâ-ölþ—Û3sÛ7ؘ±½¸àÏÝØM$@$@$…¨˜³ð¦±ÉÉðx|#GœèvûZÛþ×áÞ0jL‹§½ø<»=µÁÛg(æzz…}ü{ügîæn5™²™–H€H€H 'P1çÄmÎåN­¢±qíöí›Ö¯_7åç_ßã‹/\Ÿ~º¹quÓ)íóÕë½¾ü¢åóu›>ùhÙ^~?—A±ï$@$@$@±hÅìÂ&žšÜHÀqnÿÛa>Mp\çØ!   A hc†hÞ²    È*|ç_VÝ.6–H€H€H€H`§ bÞéÈY! @V bΪÛÅÆ’ ìtTÌ;9+$   È*˜ù'3þ\ø/°!l?ͪ$@$@$@$@$"-ƒ#”°«ÀÔËa epÙŒ93 @ÖІäa,ëÉ)3¶<›{†ŠÈÚŽ²á$@$@$@$@$ %‚!Œó Ã|Q‰Åbc-gSÌJ0S1§B™yH€H€H€H€²—€)˜ƒÂد…±(f±0ç…¼Ê1ÙÛU¶œH€H€H€H€R  Tq^~>lÌæ†håÄãŸü|»b–˜ê`    È^Ú¢*ŒEE‹Y¤tAP1ã4Ä­9{;Í–“ @ÂÄ”*ŒµqY¢µjZï"¡é•‘0Y&̯½õaŽô”Ý$  œ% zóþª-Œó ̸9mîÐjfn$@A—]<™8H€H€H€NÀ\*#ªYï⫝̸?fy{ DrpªŸ¬AÅìðá[Ýs•Ýã2üØóäèË“Ý èS_¾Ý«.é]ˆԧ³fd Ÿyëúꢖ5Ü™[Ù[  ÈbHÆ"r†]KLÀ}9D"ÓÀœ#"Ǻèÿáñ~ŸügxÕîó^¯áñJXŽ*ìÁ%=žFïñÊÿ6áê ïyÙ‹½Û?ÓÀªk~ÿ×GßÛ¾ôéãÇî’ @ÎPÆã°Þ'üå v4‡ èÅÈå)0—%rª óéðŸpÐÀíÿµáûó©cz̼ä¸xßcÿùÅ™Ç"põw=ç+‘ôÜH€H€H€rƒsnÜgöÒNÀ¦–%§~ü½ìW¾Æß<翞rýãsþ¹üÙ÷v;÷Êyʾ\†VþÏ*ÿßžúbû²F%  ȦbÁØÂäDî°`OLÀõÏ×÷cî÷Í@ è¿cóŽwÞô÷ÌŸóJûŒßODŒ{{û+/Påp#  p(Ð"Ô°ec¶_‰HåP ìVޏý²¡¿9÷T{gñ$ø±Áª¬\šô*àó÷î™÷ä¿ÞFâ>ýò>xsö—ÛÝ>ŸQÔ'ÿO7§säqGâ´úæšAÇn’ @NáƒG¤²ÎIXì´s¸îQ}ÚÅ$?™çç6Þþ·ûáÓÔ×H—Íòü땆민 ?ÿÖ„ñß¹þJ£zö½c?tÛv/\2¶|í²^·î/æ r#  p¥DX=SkgˆXs›mCšpeí8 ìPî0µ²’Ënt3F>$´O˜ñøŒ“;âÍ·—AC.ãøo,ƒ\Fš·çðÃJ½Hâó{<Ì©)æ¦Ú±²jlck›vú¨ŸâšRoÕŠ3[#ô5i`[ZìNï#+$4ÍéyLÂK 4xÿ}H#7EYN@s˜,F„é©T³¹gy?Ù|ˆF@¤±Z<;ä2D³Ç+¦e嘔t–½¹Õwʸ±(bü÷ʶ5{ÿö²ÿâí>rUV§ƒÒöúR°1˧aÉŠ™gpž±8(^£58ëó5~®(WË'VÖ- ÔÚ´r¹Ñ0±©ÛqV6¦Ø(ž¶Ô¿tZq”¼Œ"$€G¦aEð»mý¢ºÊ‰åÝò˜¤þ÷!o »LÝOÀ¦Šµ ù!8¨…CÒŠóqÀV]¬ôùW–bÅ ý¶¿úÞUr°$Áœ¤ÙþÛn§Œ”wž19øÙi–Ä(Wæú•˵î5°b1<4L‘m/Ç®—ñ ñ,FæÆš²Ä+cJÈ~Z2×G{JyTyvbý}0ëÁCW©u2'BÄŠÏ~Øì dJ÷elî"” ĺܣ°`@ÿ>ýû÷ÅÞ¯_Ä`Ï„F³ $6ÚÀŒU2ÜX%;–ËðÂ)ÙZ"Ft³ 3ËʹYDó—Û='{Ú0î˜#6osk ´¬•‘¬bV¶W˜‰‚ÞˆMµµâ00.Áîkë->ñ9n"†W…ðªlª­V÷“Ûä㿪¢Ê0}DP`]U•éÄl/)ľlÀÏYÿj,—Н‡éÿ!ЏÎÈfg&Ê×Jé–íQö8ÇvL.±þ>d36¶²–D0dp¿~EÖ¥Œ-¯gOñÇØm·þ»íÖOŽúKÊž…YÛS6œ¢À¢r¢’»¬Ç,ÞËâÊ,¦eíÊŒsy›‰–Ëêèÿ¦E–Åøj‡’×JIcä³rÏãÀü¹ÉÆ»æ'¥Ä.2L†ÀD!x,ÏW Yá*0ó¯|ŽUHÉüIÁµ7¢õ9jœ˜³,Ç íºa9zX —ë ó‡`Y ¹|z!MpM^QÅÆ\>GùOËuc½2¢rgdö{f‚ T£=Î<;¢ÿ}ÐW¡É£>é±â³—4[NAŽÐÁý °v¥¡ ]Ç~ÿGwÜñ÷>òù]X<Ëg¸Æ}{øµ×^ûô£ú%iÑz6‚@àÅ7WYN:ê€Ä™üí¡g/ùâXe]Ö6fèæã†-Ÿ ¬¼2´n†¥Y¬ËêêY4õÊ•ï,Vþ"¯}¼÷΃-|å±ÛoS’ @æX¿~=f+áWæNç,á/ž jú|~º=©¿º™ÓY¶„’%P~ö/gVW¿°l•ñÔ#‡ýê׿.èÝ«G¯ž…{ìÞKkA4C%ˆÕ™6æd3}†O õª?13ËëKð&­’•]Y«dC^f¢ÖkVr&fñoÖrYÔ³\’%™S±1g86H€H€HÀ0zB÷ê9`÷ Y£gaÒÇ{ìÞf6¯jÀ¥ü˜9ó£ÆYă9ð¶?ýÚ?ÌJk‰l®Í,2YǘÞÌøíE¿Ð\¹^˜úÇ×È;kx°7$@$@$ È¿=àÅlñ((æÂüÂùýûõ†ÑMìn>VÏÀUyƒ£Oµ¬áNçbOH€H€H€Äx,{^@‹‰Ù´1¢‘ WX–ó¡ èeËMt$àþï÷ɆWí>¿áõ¯„å¨Â\òÈѣꪾäC$r™û¾eŽ!ÃŽ h0Ã#£ ß⡠ɈQN.W¾X• ”qÙ•TÖÄGN# Ýöå×ÛrŠrª~€1… úö«î‹Ã’=¹Ó˜°?$@$@$@Š@>s¾Ñ£GìÍØ D"çù˜ˆ€ßÈóùPÌAeM~$àD6µ,ÝÃ)~w½ŒUc´8Va} 1†O‚xB°s#  p(‘ÁyFaa°{Pň,ß ˜š ˆdˆÈÄbçF#àúçkiôcvv‡H€H€HD½{aÀCC"ÅqÙ0 ¤ÅʆÎÌpÏ0›&:pÛ/ú›sOµwFÖ —5c 86Ã¥A|c”€ø:+we‰Raü«ÝžÅ‡1rZ}sCа$@$@$@ÐÀØ{Ù–ÀÈW1¦b¶¼5 à A3G޳ (/ ÑËêÝ=2V‰f k¹,•J¨gÑÐ"–%…±nÝ'^ÌäF$@$@$à,ÁØ{Û:U,Ödmc¶+fÄP1;ëî³7!L¡ 5,ÑÊ~,2XIg-‹•±Ù2-[&gÄx•¦öx ˜©˜9®H€H€HÀi„1º§…±ø_È*¶þê¤NÀþ€"tÆPþ¦3’R¿bEÖFeë¨LÑ*ÞtÌ€W²x!˜icæˆ"  Ç€ÕX»+[=Ó1jæ_¨QéèÆì¸À ¥•g…vYVaå!Îbb6}šÅ_Y9`À¨,oÀ¹ÙïwÁºìñ@0{É”H€H€HÀa´=1  IDAT)Ùîm¡¥r@1»\¢ ³Ãn.wgÝg_z¼¾ÓŽ;|ÕšâLáõ{|>¯’¼8JØçûÏÒå—ýâLXµ³öi†JViC‹f­¡å’¼ÉD¶\¦Ê¾“ €# h} ó±µ…ÇÈ;ÿ¸‘€ãt¸=Ã÷8rÿ½1è QC*Ù÷†–4ô°ƒ‡û‘e¥ÅcKKà—l b=ÛeÓCCYõ.ÖeœŠÇ³ÜI)æú)xÀ¦Ô‡Ñmªër­mŠ Yb]²¥WKB)K§O$£Î&Yc7 ¢UÁ*".1‚œH üYÂ9žâ®>á¥È©¿I>”N¤Î>‘@FÀ³Ö»†–wÿé-#ËF@:tàÝ×jÓ®b8Æ>¯¹~Dð§›Ú=OÀº,îÊUÃ\ENÏÿÄ¿ ¤ÆÌ?èå¤ý˜ËÊ–W‡ŠãúÙU ]ëbý”ŠºÊ%~ÿÒiÅÅÓ–Ê?‰—WVÓ((kŒªÉ1D{XaÉUK$ÞB¦$]L |beÊà7ÚúEu•Ëä„ĺ j¹dÅLõç Ûk\³aUÓºíÛ>¯wô{®~÷Ãî~h!lÇ¢MŸfsÚ>Âì1J0'ec–n—–óÛìÉòñ[YÙU ec’PÉQ*+ž6³²!¤]Q1Šr“@ñ˜²ºEíj æn ÑT;¹ªt‰Ny ìâiÓ¬p7ÔÇ"I€:%)ŒñVìÀr6¹ôhî´H& Ì&àv{ô:ʉºg µ¨cÛêrÊ+C;4›.β¸\ÒŠyÌô™¥U³Ÿ¾MµÕËk¦O´àý$Â7ÔüÙ爯¨3ªJ´7F4›nHúNï“”0e ~V•Ù~"´ÈVE”’íQÁ¶Eú¢tÚ& L!PGÿ»¤²Îî¼Å ~b}ªŸR2’r¥ð/1ªk‹çø—Tâ\Ã#,}twi(÷º2«% ËÇÌS•!¯½dk¬Y^æQY2Úi5ùѳm6»Y¦¶"ˆd^¾Rž(føU™I¼aãÑ­ª«¿E4œ$@©Ð2Ø.ŒQ’(f] ÝÒœjÌG™H¦e¸dx½®Ý3>þäã5¯yøñ'•hVêYÛ˜ÕspØPóÿäBo˧×hgfù¨êulZ¢`6nó'‹ 5«mZ¹\Y”e«¨³»WFoI'éÍ¢Dw@;KÞ€ÑKùmØœ9a~Žh‰2’…u(z«KYE’YySaÐG¨ZñÙÿ6¥sÑíðdQŸgÓ„]RÕPW¡ž{ÓÔ+>¼Pž“ ¤N ÌEQÌ´1§˜93¼2DæúýI»gˆ\–ù~v·fet•%™S²1†þø­Wöa¦d±è–Y1/°,ô“T¦ù™[Ðç1ô8éÍ™Ú|§ˆ—â”#£I  ˜ÏløBÒ™ˆIz“ƒZ6²ƒÑíÐtvßûU¾ú›`>næC+>²vÆ $O L+ãToÑý˜“/Ÿ9H C À´ ' ìI»gà£J¬Ëjõ sÕ9íÐŒÒ`e¶¢¤:ƒmiUEU¨G¬¶+´KŒµVe“æ-]bŒXÅ£KN*N6½½8•לñ$~¡N–‘%«ü°¥@:i/“@vÉå™ 4ò’VynÀæø†  ú£Ösùfä ·rSm-×ÊÈŽáÁV:–@¤nsøŠsŽí>;–‹`bÆBpð¢ˆtÏP^²†¼¬G/8â'†¯õS*ñj* Â⹌Ò`u9ÉÚÏŒ²DÊábòŠÒ Y*(ŸÓ8i¾žÜ‡ ™ÊömœF$›Þ^”ä]® ¶9†RD– Ù°¤ÔtÑü²0—DD³§Õ¼DF@¾Agÿ`ësúàÚ¤\’Lá+ç"Ã\'ö£ÒK8;[Oœü0&ƒÂÃõ¥Xñ†Í!§pUNzÇwt¨zu§ óò®­®¾éúëÒGöÃ!^|s•Õ““Ž: Á^ýãé·ÇïpÈÜwÞ]yÜwÆ@ö~ظöðƒ÷Çx?òÒÆŽÖmî[½m[}m_ùÜ;PfÓ¿[»±ãá\pÎ9ʃY½(ë7ã ^ ˆ˜w–½ñèO¼ñÔ] ¶Á)É MŒ7ÇÉ)e?HÀÑÖ¯_ŸŸŸ_PP€cüŽÂý ËÕãøá§Ûÿ«¿L^% 'ðÇ«¯¾öÚkÛ`E l½òóýë_h™滜ÚïÍŽ€ÍËMø{/K[Ú=ížüú_ŠE›ffSã…'¼£D>$$WpÑ ˜™ÅÆ,†g¼aWsŽ'~h.3=çºÍ“ äKÛûŒÈœ›rÙå²ÌÌ9†]u:8eÀ‡ÊX»g@éj÷ ¬ƒqÌ´ÆŽ–mžÖ­Ø-óÿý£J3^Íâ˜!/„²Æ\@™ ¨–ÊÈ%Å,kÇáý„˜,8§kïKqúhcÿH€H€²Ÿ@T;²(fkƒ÷Töw“= ¾0º©Í…™µtV«g@û¾r먀߅20‹†Ùpãèõ¾óNƒZHNm¸¢Ö`ÖâÆœ²s6Þ™›?-Î6“ @Z˜Š9Ì\–KÖ³´`d!™K`ë¶­s<Ùáqï?<Ì=cÜï?êhýÊÝò¥¯u‹¯m›Wù1¿4oŒÒÕsÿ±æeÑÈb^#³è“Ìí0[F$@$@$*SŒÈ–ÿEˆ9Õ™2—Àô‹Ì7Q?°ðßaîÏÝ8Â'‹+‹†ÛŒ“ut»_[x[æöŠ-#  è~–ÿs÷Ãf ™A Ò=ã”+×ÈZ-[½6?ægî¿\Öƒ'7   PöfQÌø×|õ_ Ý™9<œG Ò=cñuÃÅ®,k_ÀÀ,ï$[3Ê™¶eeœ‡‚="  ˆJ8LkU\ ÿ±Kd4j)Œ$ì%éž¡|”õ‹K”W†z•‰¬†á—™ÙÛS¶œH€'ðÒK/ýßÿýÒã×çÂÂÂþýûŸtÒIÅÅ\'q„Lé(‘ÂXžؘµ>¶/bNÅì¨;ÏÎD°Ü3°,†¼êO¿£Dê%j†Þù‘$@$à@ßýîw[[[ÿûßÿj¹|üñÇ1Âýd—H 1‘ÂŽAÅl÷Ê bN )Se+Ë=ï4q»Ýø_m*àÁj͈Å"ÎÙÚ=¶›H€’!лwïñãÇýõ×ß|óÍ!‡RRRÒ黓)žiI Ëhé®lÚ˜©˜³ì~²¹] `¹gt¡ f% ç€uùÇ?þñûï¿_ZZŠ·g;§cì $O R1ëóÁÀ 7   Ü$Kóرcs³ïì5 „€OžZC/ƬEr˜Õ™ÐH€H€H€H€H€BP1s@ @<tWŠG‡×H€H€H€H€r“€õÂ?tŸ6æÜì5 @¢¨˜%Åt$@$@$@$@Ž'Ó²Þì=¥bvü}gI€H€H€H€’  ý1ìº9¦ó‹o®J¢`&%K€ãsçòfm$@¹N€us}ä|ÿicÎù!@$@$@$@$@¡Â3bÚ˜õ¢Í¤G$@$@$@$@¹IÀÒÍ1³vàÈM:ì5 Xè•ÁÁ@$@$@$@$@&È…2p!¦™Ø2€»­¹mûV¿Ï› aH€H€²‹€+/¯°ïî=û È®f³µ$°Ë hW »‹2ó.¿)ñ0tУŽ>´°°G¼D¼F$@$@Ñtt¸W¯ÙðÙ¶öhG$Ð »‹2½2:µk/÷+*¢\Þµ·€µ“ @öÀ'HQQßìm?[N»@¢keìÂ&²ê —‹4H€H€H uüIs’€a™™ÅÆÌe18"H€H€H€H€H@ˆœüG¯ Ž     ˆGÀTÌ)›™Oþî蚯¶×€˜ ëÖÆ«“×'Í)£©©IõÁqìØ±‰–HÊúúz«ðÚÚZ+‹Ž×Õ!Ú`]ÒíÑ1öd‰TÇ4$@$@ÝK ÚçH÷ÖÈÒIÀ‰‚6fK'%ÛÍÕ­|ëõW“ÍÅô‰ÿSaZRRÒØØˆO°•––&VNB© w+**¬ÂçÏŸo‰fÄ/Y²déÒ¥‘£%8âRœd‘C$@$ÐýÂ?Gº¿FÖ@!`÷ÍHƒWÆyS.™;çv‡°ÉønLž<ÊUËS4vΜ9ilruuµ½ðyóæUUUYå[•Ư1Ádñ áU   È]õÊ@OöÝoÿ‘£F?>ÿþ°^Á[v· „aÖ‘ ‹[yáΡcpDiHó«_œ‘9°vAKBM00744”——G¶dÊ”)ú›ú*N- `-Ö ,³±Ý»Y" ‡ö-++Óɶm»Ÿ†½ ÚOG{²°ò#ÛÌ  n'@s·#f9A ŠW†Ö=Iõ¾êÊëïºmv˜û2"_xc%ög?n]‚517ÔÜ}UÕE¨B‡‘WWwÞOO™ûéÈH žT“œšVwÍRÀÚÆfí§QWW§c 6cDÂl g œê°e6¶¼;@Ka«p;=”†Œˆ·Æ´iÓ†KY~œ¼¼D$@$@$@K ^ºoÁ>t¯½Ÿ–9ÙyÕÌœ~çèïáøÝcO´ÂÔZUC4ÃÀ =½öãÕHvÇ}g,»Ð0—n€Y× ñªª>µÌÉöVÁ­§Ú&=aÂ+ ¬U5D-¾ AO¯X±W­Âí…¤æeµü@ŒU Ø D~Ž @ Òö–l¨[Ø­)€¿P½°£MIyVè,)ôÄ™YB³¯£a*1P½Z@'µz†]s lÌPޖ׊…†NM1ëÛV¾3ï{E$@™L Üð’ÉmeÛH s ¤ÍÆŒ.Â~¬}-^¿î“’FÒ¹ñÃ÷0d¿aHfwÆ s$·šš†Ãâ!mµC…Ö¸‘¹"c´óKž9s¦ößÐéQª‹Ì›HLÔòÉÈ4$@$@$@$iÒ©˜!y/¾tºî¡ö»€Å ÕUZ:'Òs81çYOþ [æ9‘ì¹Îp;Ösøp„¢…6ÕVaœb%¨¾ÈQÉÀ/>ͺ(=_åØ G8–ã²vç@ÞXsQcdùQ›ÁH   Èp®©S§Þyça­¼æškÆ~n†7=šwÀð½öÝ{÷\è)ûH$@$ÐÖoújÕÇ›»£d–IŽ$ðòÓÍš5˾ \L/¾øâtÚ˜ Ž"   ÈqTÌ9>Ø}    NP1whW_æ$ç]}X? d7~Žd÷ýcë3„s†ÜˆèÍðùü^Ÿ/ú5Æ’ @\øñò *n$@]$¶õ˜»ØfJ`˶fWž‘Â[£–ÆH  œ"€KÛ¾iÉ©.³³$ÐM¨˜» lzŠýêëìé)‹¥ ¤D€^)ac&    œ!@Åœ3·š%   H‰½2RÂÆL$@$@$àDŸ¯[óÑÊÿ6ý•×ëqbÿÂû”Ÿ_P4`÷¡#6rLø5ž“€sFw[sÛö­~Ÿ7£[ÉÆ‘ d$W^^aßÝ{ö`ë —?ûø½_œwÎ~ûí—#“Î19rË–-‹-Z½Ò=rti‚ ˜, P1gôM:hQGZXØ#£[ÉÆ‘ d$·ÛóÑêõŸmkO°u°._ðóŸ 4¨¹¹9Á,HÖ¿ÿ³Î:ëO·ÔP1;ànv_¨˜»mJîWTD¹œŽ,‚H€r’@EE}„3œ1`]Î)¹ŒqÑÞÞ>`À€Ö–ú’“OCW;MÅÜU‚Ý›ßÅw5u/`–N$@'Ìç|—áŒG‡3a÷H y\+#yfÌA$@$@%›r97{íÐ!Ü]Ý¢¹»È²\  ÈF”Ùxרæî&ÐUóÉß½aÝÚô¶vG±émäN*-†SÆØ±cñÃ6ì-‰:µ¹©©I'ŽLßõ^Ô××[…×ÖÖZêxÝ<$@¬Kº=:Æž¬ëa $@$@áb|Ž„' œC.§¶ínÛž{î¹Ô Ù…¹ba< h]UÌiäh©ä!û {á•8¦±ð¬-*üO–›3gÎÔVæÍ›Ñiõ®²²Ò~Šx¤/))illÔéKKÓ¹tꪨ¨° Ÿ?¾%š¿dÉ’¥K—F’/..FcpÄ¥8É"32†H€H yáŸ#–šlE±ø›¿uëV±ôDj…ìª\2aÈ ÅÌ›‘É“'C‰–——ëÄÐV1Ó§OÇ¢’örtz-O?gΜDjI0Muu5cù^UUeåµâã—–`²ø…ð* @Z¤¬YQ»Î;|øp„W¯^rQ»$cZè±H¿bÖ>0cëõW-v¿úÅöÈš¯Ö§ Â8ž÷ÓS¬Síìµ4$~|þý:;ȈŠP¾ïS¨iㆆ»DÖ]†­Wû?@}._¾Ürˆ•¹¦L™¢½)Ð…àÔr±@ÖbÀ2kó¶ŽD–ÈÂQ{YY™N†°mÛý4ìwGûiàhOV¾ï&»D$@é&ð‡?üÁrÓÄ„T’´‰¹«M|á…Î9çœ#F  ^~ùå8"¼fÍô†4ˆÁ%Ð)‘@'C<'Ÿ|²=±={W›Èü$<ô+f¨Þjî†[ÅÜü몪‹´ð…œ=q|"±çèï¡UW^¯OŸYü8Ò ŒHdA¼½QKC‚µ¯FTt×m³“ïuç€$ßz8l,^¼ØJc¥·°ÖÓ06ë/ñuuu–†Í‘0ÃY%è°e6¶¼;@Ká¨AiȈìðÖ˜6mZœÖ†%‹,?N^^" ü´8uêT ˆé ¯×ÛšÒ†J<òHhܳÏ>û¦›nÒe Òyݺu8ÅÕ¹sç"üÚk¯!ÍŠ+Æÿä“Oâ>V=ôЧŸ~a‘1£GFblÇsŒÎŽŒ8E!·Ýv[JmŒ™ ½î 4æÍiVÌZkM GäÓ&œ±~Ý'ˆlüðý3&]` «°6Ç¡µ4þìs/D@W„dÜqßãqŠÊÒK.#Ü8sd_`u¶<††?±•ÆJñªª¾d™“í¥Á­§Ú†=aÂ+ ¬U5D-lÐÓøK‡«Q“š—EÔò#{Ê  ;L·«©©9öØc ‰yà 7 Æž òs$>@hǶ”6ûüóÏã9Žx ÊÊ•+Q ";î8pŠðÑGð>ûìsæ™g®ZµjðàÁ|ðb ’/¹ä’'žxa‘—}ôÑ;î¸C·Eg?þøãQòyç÷ᇦÔƘ™¨˜ã ^4+æ™BãÂü¬mÌ%œ`®\L*˜µÛCØÜ¾H,˜Þ§ÓhñªÅ¨=b zµ9ª8²L£³àudcP,4tjŠ9²üXm`< €@QQÑc=v 'àFíÿÂ'ÜðÒ <ëï|²”«³ 6ìàƒþä“O´™Æ*ÇJ ãqŠ”üñÇPÀßûÞ÷tGÄcÕHƒÏ”W^yEgAŒÞðÅÀ*6]N¸ðrÎH³bÖ \h÷eÈbx\Àú‹HÈbíp¬Ã𬅲6?Ǻ QK‹šØ±~̽…ÓÄ®%š!RÆf_fÎ>ÿ¶†ÃŠA.-”µÆ¨$J„ÖÁa~ɺ1VjT„ê¢dN *jù äc  cРA/¿üò¨Q£ºÎÔ—Ò†ªu^(à÷ßèС(ÆŠÄ)Âh$"‘†d„ñ‰†Ÿ@qÔá{î¹G‡u`NÆ'ÚG}¤³ÃÐÞ4|è (ÄDìÉ kEÞuz,ÁÁÒð¸k@_:®ðE¶bÖ—à2 ís çcÈè¹snG t³ec† 2âhweŽZšƒïG§]ƒË¾a["ÂþaVg¨O=ÿü%ÂïtzŽ ‡¢E$6¸,#Ù·1ëzµ[3–±ƒ™«™U¸}°ŽX Fb97G–ß) &  H/m²M­ÌSN1õÀ³Ï> «e¨U "O=õT]2Âúê¸qãfÏž}ë­·âT‡õ%¸,_tÑE:1,иª³#1"ò“Ÿ\½Ìz² $Õݘ¤²0q®pa–ÀwÞÖík®¹fÜéçæ‹ ìïÃ÷Úwï´ ¯¯XÚ4ÁB˜ŒH€H Û ¬ßôÕª7'Ø‹§Üuíµ×nذ!ÁôŽI6dÈtüô³.vLØ‘” ¼üôC³fͲ¬(_¨.¾øâ4ؘSn3vXõ¾î«‚%“ 8€e¬u^×âôˆ6æ8pxI bæH   0 h¯ß\Ã^çZ—Ùßd P1'Kl'§Or’óNn«# ÈtI|Žà—hhÇ4¸æ`—3}Øf^ûD1ã áXɼ[#-Â.¯Ï—Ÿ—æ%M2³³l @z àÄoÈ+¥Üú ØsíÚµ رcG‚Y¬wïÞ_~ùeaÏ^è »Ð}L³åàLéÜ}¬S(y˶fWž|¥I!/³ ä8|¦oû¦%qûýÒK/vÚiX®.ñ\ÙžrÛ¶m¯¾úêБc²½#l· WF·âíjá_}Ý‚½«¥0? $@`xñÁ>¯÷¡‡éh—×õåÈë2äòÍ‘þ²›© bNs‘ € Œ]ŠÝc—H kÂ3ºÆ“¹I€H€H€H€œF€SÊœvGÙ    ô bN/O–F$@$@$@$à4á^Vÿ~ùë*ŸÏSØ»¨­ùkéïÕ·ÛŽot†Éc€c€c€c€c€c€c€cÀc`;Ü’]yy}úüÁqûë{vtM:õ®»î ‹1cÆ‚gþ+/ÒöËJæ~Ÿ¥è4 “ÇÇÇÇÇÇÇÇ€£Æ€ßŸŸ_—_pæ)‡Îš5Ë>¯Bøâ‹/Î?âˆ#N?ýô0ÅüòË/¯Ýâó¸Û]X 8/¿ï€=½7 “ÇÇÇÇÇÇÇÇ€ÓÆ@ÿ=}^·Ë•?fä^'žxbØJO?ýtLóÂWâs^Ÿ'Ï•¯õ4^?Ç0PÇÇÇÇÇÇÇÇ€£ÆŒÄ† ïÈlÙ²eÑ¢EO=ÿöÇŸm[ mï=zŸrÜAgŸõÓ¡ÎêòÒå'žzþ­µwt:†'žXÕÆÓY—X´Û·tG†É„c€c€c€c€c€c GÆÀðAEguÖ Aƒš››·;eC_ú÷ï~ Û»(ò>º|ÖOÏD—·77³}»3vô]Æ×€áƒ$¥i­Ä:ÓÆ¼è¥F®Á F´(èBäÀ1À1À1À1Scàä²}þ\[‰¦œpÚ¯_¿iÓ¦=·ôó0sÒØ!©¹Ó} ëBÿ~ý~[õ»çßÞÐéþñ £’³1G~óÐu3ž888888?àÈ g y›ã6»š´ßGñ]vh—õRèx"ã6LmëÓ˜6fú1wú-™F#r ŽŽŽŽ‡S¾3¤¦¦îQõSVGÂÆ\UUõ¯·6„yŒ?rHí­·À#«{µñ°1Oûݰ1wúœ&ïÇ 5îWJ\&ŽŽŽŽŽŽJ[9ξ,Òª1ŠÆsz—óÞÅ IDATz~£*nß§Nz×]w…]1c†ø1»Ìy~¿aõ؃þóAäÀ1À1À1À1àð1ðý#÷¹õÖ[¿ùæ› ªËÑÏ_ºÇYëR¾}ýÒ5R…{óhólõ'½ú _Þ6¾Ë•…€™p¿ûÝïž{[ù1Û´Íx˜ÕoùÓ×]ê²´yÆUuªW#ÒÙôç/Ûãæ,TÉ”< ÿª+~ÿü[:Õr?G?fE6ÿ¦ÑƒÈc€c€c€c —Çî~wÙ˜Ÿƒ\~ÖÒ­j[:ññ±'þ}µ®KêTÕ>wéØÇ'.ÝúדÓÞ=ª#Ƕô·+]^ý÷“ö»júÖ-[Õ~ÿ™çÒÜv NÒåúœÈx¶ó±Â1mÌO¼¬Öc¦UU¡"=bÈ8888rd Àù–[nùúë¯õOëqÍ'Ùø‡-99Pj0â…ËÞ\òö §>–"õ0àŠ+®?æPoؘoýÓìTmÌk`]nüÃÖ¿¤Ù nïøó—ïysIJ†kؘ÷ûé°1wúü&ïǬŠLD‰3¦OäÀ1À1À1À1À1à¼1 {”ÎãšgýïœÓ-¹Œ¢Gœ:ñ°÷×*yöò#M|;(¨ÓY¹UV¬±šbeºSÑäò —í9pOµ_ö¼*Â÷¤;î¸LGž|‡Õmhn3åå:!¾HèŒ{^öBŠÍŠž-Vßíña9M³^?źðc6_ Ó·õ¶†5%r ŽŽŽŽŽï9øæ›oþâ‹/¢k®®Ä~|oÅoŒ¿-¹px°DßXµî–_ºb¿ó5Œ³ç"Ü•:âåýÖ·¾õ‡?üá¹·?C"ûÿ}gßtãæ/¶ÄËëÚÇ÷œþãö%Sm KúÒï÷»µøµú ‡#ðóGÏ~ðSôð¥+†žg< }ãþù£?¤b¥7ìôÕ¿zúÂ%ÄjDÌø½¾5pú¯|þ­õ>³?WÜÉzÌÐÄö—@&¢¾™Fßr ŽŽŽŽŽç¯×ÛÖ[»ÛÿBJFÔ!Ã#ªÃkòÇ{ÿøÁyåw¬ìŽº¥LôË’–aVU¯×—b­íß»6FÍüìo‡î·ïP¨dÃïiô±òhI{ôIgï¯ZÙÖ¶ò™'Þ=ó’s÷ °råûÆ»³ŽGÆ}‡ž7_]BÔjâE¢_‰Ï¨º;hc¶.C}ÃÆüÄËMˆéT‰3 ­ïÎðc¾þúë?ûL ±éÞ>¹â÷?º¬ñ†ï F¼zUÉ_G=·è‚µW•\hÜkK’Æ6 <øê«¯V~Ì!Þ°1ß0kÖ†»Œ>Œÿ貦`§t‹?¹ï'ßÿèÒÆ¿g Á4£vÑû¿rUÉmÒÇý‘"6¬d“ˆ+±dLn2xðU3fÀƬ³ÅÑ·ôc¦O¶9¶hÑ È8888âè*_·lCÏ»äŒÇ.¼òe³ð—¯üþMÆô)Ç©S¬VáCµÇÍú×ô/œX÷q74ý­Úw©:ÅM:õø…ÅV¯|×݇~ÜôþÁ#‡¢Ì_|ú}MT/¢« „‡Ž«8ø±ÛìÝ:ü#4ÆgϘd+ý¦9ñ1oʦÀ?1mÌj=fú1ÓÊÎ1À1À1À1À1À1‹c~Ì×]w݆ æê aú) §¯]}àE u9?¹ûÃë×AÄÞ>êÙÇÎ&§’dÕôÀYêÔE 2äšk®‰êÇ|ÝÌk7lè‚Y}íý?=uöûºšƒ§?óØÃŒµœyÊŸuð?1V޼õñó‡½:ãÀÛG>‹Ò……M"?¹{å,±—ö“»W\oØ2&GcÈÁ×T_›?æ°š£~ó@ÆkPä@ÎIš1“L~ìu¶ë޵ò"vÁÏ÷3O%Ið,Éòã&·TŸ} #2n¦.bÚâ+Þ×û‚óT?öûù³àº™ þ¡ºvÜÌt 2læ©ØK»&x{Æš$ñ±jÁ±bÚ˜éÇÇÇ…ÖwŒ!òÑ9ÇÇÇ€#Çü˜«««»ÑÆU—í”HؘgΜÕùÿÛ;—žÈŠ(Ž ÚHpÂVÉ„ ‰6$Ñ„ Ñ„I`á–/ÀgðŸ{c4ñÃB;a¯ÈÂnÆA’Ó(:ÔÓs†“J½ºn_êöíê¿ ¼]Sçüê_§ëÖÜÜþèÃr1âƒÐóÇŸ|Šç˜qòýT<8í`àÐ4 @ù5ù³:<¬|ú'‚Ìžªûlkìµ=];Ϙé9æg®Ÿc¦ãD\·ÁËÀ€ h u ¼ýúËôB‰8ïÊÐ6cE¤3fz È×OÞǬîmÞšåý÷Þ}ðà¸h‡âGgÌŸ}þÅ7ô®ŒNº}§ãû˜5oCvßhÃÐÀ h€ Ä4pþèq­V£§nRúottôôôôò±åýÄ.ÿ«×ê/$òórëIÈ!ëÔº÷œ1·ßÇL·t}Ý×LÀ€ hH\·_¼µôækËËËô yסþßl6www¿ü¶zP?Óöx·_ºuçWï.ßM,ä‡Í‡;»÷¾ú®zP£;èÖõ>æçü“O;ñóæÓKÄ5³p€ h€’×@ý¤ñý?ÿV»?Röo–ú«ö²õïï~=úËÔpýó~ú¥vÿ¸ò¬œ–öWpvo[íÿ>þ³"Õfì¢g»‰Ï1»:¡@@@@’#à:cvÞ6Ñî[ àšQ€8@Ð4 @Ð4¶¬wžç˜¬P    IÈ|ÆÌpÐ4 @Ð4 @ƒ¦í~gÌIÞ !(Ì2Ÿ1ÚâeM8@Ð4 @ÐÀ kÀºË¶œ1S»íííjµjí€BH’Àüüüêêªý~Íúúºý}ÌÔtee¥l ÈãR¹T* v¦àኟ÷!ù‰x÷ØZÿG·Ô€d @Éǵ<‹ÌK1Æ2mú#uÕ MÓ`Ѓ×Tx27/•R$ü„bN=ÛÞ1ÓO¿,..jÁ»:„0J{•ªÑiàX7ÛLnÍrà@!‚ÉÚ&ÞÐ!IPÚð…ü%¯Ôv2Ä`ÖðÑú€k ózqÕrÔžï&©2-˜%ùvgÓßK«õKþScnïjæ+?üb{hÚ©ô’Æ~eJ«qÕ×Lå' Q Ð>™ì/--mnnÞìH¤‰²ˆdöfcg-0üäãÕåx1jéµýutý/r­–ÿüQûköâH¥¼»ÀÑ Ò àZÂá ÄeÁŇ󧵗µÐe'°\ÒE`{i¦ùÙˆßy¶–Õ‡"Û”gJ-TçNÊåBö7c†§¯HÔ+Ú'ÏÌÌ “Þ>ç1gö´"™5ýw•ôÖ-ŸºœL¾<Wå9jiT Õ¾j®DÞL^°_ÐB6]”Oò,|ñÓÌH¦ÿþ’Þ~gù}ãÚHüÉxxìÌYü·ÍlO%bV«¥^椫>¨£„A›2àòôôôðÄÄÄìììÆÆFŒMsB䃬ððÉÓ¬¤Z³JJºp[KjÚGÏX)U [k¥H¹\þJ~TÛ›)5%DˆB¸R¯ŽŽéE]bæp»«]º^2Ф1k–¨U®ØÍ@BJÈç™® ¥¯ÛhÀÃqñ<ªÙ›9°Ó¬Ô .nIÕÆRØ×TÄyÚÓynnîêêjèðððââboooŸâ_[[[XX(?ˆ¦†º8ù=Ïo!ÐÕ6ó|r6´ú¦õò±Z@!€@7•ÈŽgýºF¡.®ªÃóFÓGÝ£›I{Ä®²w-}9gŒ£ þ³ÒÒ——ï¶åÝâÞ¦ü—”bUœº{ߟ~ÑÊì/¶2c¾|ê¡ú©’䫤nu5“Zé³LÈayA ñ¯›ÿ±Â" %}Ä•ÃGÞjj¨%ûLKK»iÈÍÔ̇ï½KRšvyLoƒ‹]KK>»îòLÑÞåwϻܗ…ø7 ÿ{ƒÇžœðj¯J6gE»vÒÇ£‡dNÌ¢ülA˜+Õ¾mÌ8òs;ò_—œt”J;¶½yÓa,Ó˵±«‘lWmZN3Wi“~3dÚá%“VžážSùËmÓÛÀ?Ów‹LÖwwïMo3~y©Èiú~`½t|~ßÞ†Yï¹Бë¬\(„çx´Ë»Ä[Ÿ3Ëoê-—Ù½ÐpÓË%¢õݲzJuM--NŸ5ÞÐfa!‰uàr®½ZH'á#F áÒŸ”éf(è 9¨ü‚ºmô˜›r‡¡2[ÍBêHrøùaJꬻJæx™^ëÊ_^>ì6ÃcÒ´×÷¬N9§÷]Ú÷õ=‡(}fkNÎË­š×£R’¬’åɬ&¨¤H“„ÅRÇײY1I2TJú’s|þñ‰Îò¤¢å†;WΘ§AEÉìûÎgŠ((Ÿ7¯hñ‰ŽTfPþí å¿ÉdÂÏ_4ètùžL¦Ûüå7kuóÙâç=_v–ÿR2ï˜Þ÷퉇ö"=‹–ç<{8okQÙ+€p*Ø’‰Àð¡ÿaª+ÿðCv­ÂM7]O*Öᛂl>¼€6­W#­…ð(Kø((vµžW$·š·{ã¼3…9~3}ÃÆuÝ¿ú\ÊýïÜódžÒeƒÿ{ÒÚüÓç¥Ëª™Ó£*V5Aµýfžò%§Ç²Y=˜¨Ü«§I[¾:u>ŒGÞH`eÅ‹™ÙÓÆ4ì±nû†Ž §mؘÇþäÖ Î¤´·n¾[œ8¬“v†T:½>ç7üç@’&]Íú(õ÷ŠL|'%ÛF\'9¨ë,á2  žr,X¤î£ô’§Ð)ʳ><ðEQÑ›^M颢ÈbEÚ£¼Wìš’R_s®ôwØíÆù¾WyŸ(îUptÝ|µoùe_—¤Q¡j•[P6CãφZå›+ÛòÓ5Õ2ÉnýX©U´÷PѾφí7|X夵j¹£ð€Édºš3HZÛÔ‹]EÙ½…ËψTÙŽmgúõê,õ¸¤¯´?/Ïw×-`‹¼ÀŸ_àÕ±@” xØ*µFVJ¦KL»tWbWò«´¶Ãý*³cuvɉΓèN"¶MZ༿3äºâ»rˆL65u_‰í(!≀ð±FÕvI·DŽ]ã -tÈ ¿ªÚ&b×Èq…$ˆmìJë®.Ûé(´ÈD~znš‰ü%±‘WA ,Úù/V“²~£M{H®®:ÿÝw_ÙSŒ)V»ÑÐÂb4§H†ž—ÿGZZ›°t+ÿöè„ Þxã í÷ϺFrI¦UË–[ßcW&Úítˆ¶»Fõ¶X”Ü4F{ÔX¶)¯µ\wý×?¿úÃõŸ9Œ6ƒ”"9Œ£CrV4Jm»¤H)N»Í‘"]Ö©s»6mCÒŸ¬”Êk¿Ç·eË–Zì›û¾þÅ%=Ú¦¥f\Ü¢c»ÔŒ¶-ž]÷ÖÌ 7„¤' ƒ@SÐÚ¦æ9Ã~¯‘pÒíuGØÙût£ÓéH1ìgŰìÖ¼-éß»'Êz· ø„5·^ ¿êT6ÚWYYyáû“ôQËu»öÖ–­/–©Ý¬(ø³¤¨©¦šnŽÅ‰A@;çÕYwÕí„Óà8]Þnå¦/þs"»›VlNCEѧ%º—Çé0H- GuUF»öu%èf ¿êp8È`é•Ùüêߘ÷„ä´8íº-ø…U«_{ö‘;î²}‡ŸëJ˜Y[SóÐíÝ,6§Ùê°Xœ VG]]mÀZ(qB@»îlì*œ“ÖV©37÷ïîÑ¥}‡N´kSðýÞU6W‡ƒKV×av:ÈVëvýõÈ=ñÌ_þ4ö¾?wèÔ%xÉjÉûîȹ}Ö+Û,,rµÛž~t¢øiCª€@“-v5Ø´™¼ë OÏõ¥î‰/Þ#ÃóµW7_xW:D¾Umvï¾N‡™ÛjƒÓVî\Ù3y‚ê>>wâó÷ë ñŸIg˜æßÇž4õØ“Ï<ý§G([õO {ãŠ@X±+Ÿ©’w%›ô×nÕÁo»~xô<ŸK&‹£Öqõ†¢Ÿ^iûÕÏh>\ÿ§?Þá´×‘ÝöôPðbÕ’d¢ÚZ©†²£_}Cáqº$]7h”Å*?Ø* ɨ±!NìJë ¤\@ïj„w¥Z·Üx™ZwmþWóV|±hÚϯü¥Íi«#s•ìáG›Â£¶l‘ráü÷’I=b45´ÿ“ý/ýcõ½w͆ņ:d(cž±kƒfÝUM{éÄ®Þõà×­hÓn·[Ù?ÒíµÙèÿ‹Þ;pÈf12ÈK‚N†ð®f³Û*he­mÎÝZ¾ã™:d_jq:¸Å†²©k­7äNØ\tšZÖïÒÓ¤Áƒ“˜*³”›û»ÊJ©üØæ‹¯¸=Á( 1% ?}‰?g˜l3UØ'™_JŠœÖU‡V@hg†éœÍ}ãsE1›Ýi±:-6²š¬N“ÙAÚ)÷Ï Ò\…wmàæúJá9ú¾ñÊUu–§WЉ§¹+¾Ûóÿ/¢)±xr¤®bº™k­û{áÀkd¿J¶J>–>ݺ]óá¶wF^¡+™ /´¶éZwõíW™ÞFZ©áÞ•¾ÍVf]ý~Í^=ðAÑ[O.ýmÏî¼óîà;*¼k];|O;ñ[g²þáö^•·tûáÇsÿoÙÛ’Ý!ÙMNþ ×à7µV¶ÐjjGÕ…­Všhu·Š"ØjsUð2Qš„€ð«¢éTn»-jè¡õšÚRÚ—N{?O%•¬)¿ 2¿·Ój³›-·fÝK~µÁ̬…yW_¼óé꥽Ÿœª©«§]k¶©¬¬©¨­®«gNÑCrØ®¶Ò»VÀµVZhíÖùWG½æ†ÁäW¿![5IG?Ùž›Õ³u+£Ð< L¦ `ÐÚ&[wm¨%[e›6í¡YöU®'#6 B¦†úÁcf,|êÚz“Å6{L–Åj5Yèz&v!C«VìÉà…,IÛ§ïˆ>}YÁ©ÆmOg˯¦oŽ~•~éõk£4 íœ7Uk»"P):ëä‰ß€¢¸å¤µæM[Ci»Õl·YÈJéÛé°9ѺŒfcß¼â©ñ’©rÊý%äù@0Cˆíü7ØØ5íêË óUSÇöÓßÍ\²Ø»}Z€­F3dG†€ð±FÕvIj±kxí_ß¿xý׊’Xÿb/ÄŒÍyUÛijšb† @8ȯªÕŒZÛépD¢€@thç¿xÎptC*D”€ð±:ë®ÃnÀu´% a ÐڵĮ‰ª }ÚØ5œu×eùìÖu3™$º(ÉÔ Q‚¥ézÚÇÿ¤ò,õ|FLôûˆ@ ™ˆÀºk—Îìî²Lf&‰]”ÆÌ“rè» Ù*ϧíð×3 › ?tbN ük†IÕse²ƒeî´A¢\(QAßÂÇ2kU·Ðî}‹94qM ±±kºéÈ´¡³óº°ÏØ.OÎX<-cé´Œõ³3Ö=œñ…ÿ˜ß…>ëæwyfZZ—sOéÀØ5Ó o3wéìYThàs¥>w»v”>70È’:ÂvÍÔ6ÂD)[pëˆô•åêµ»º"Ÿ5çÕem×\żpï…²ŸÕ€YÝÈõ'\à^Ýóîr< D`Ý5==--M¢=Q…’ì/ö/­5}(»ušD)IÊ Þ vžT(^’}Ú·½zWÕäh†¾çÜÎsC{ ¹žlR,sóøù!å…}N”è• 3ôÍ;¶B^2~s¦b=»fæ½8ƒpèöÀÕ5¿Åtu*}n*õfm&ûÚ.EòžŒÐ€»FjäZêøÔ ~‚u{””™Ñ]w•ç¾<®á«'ä’Ų3EnϹsGzîo¢¿éè~°O¡ËhF®]9ÕJŸ[L6© ï9÷ÕÒƒÏ(¿T*ÿ]²˜,¤´`³4~TO‰Ù–s-{ \l=ç.ìãêw(”(*¹k†ùI&M?l9zFñƒž¿±šY¨×üX;‡iæª^”ŠÌ4ðÉž¦€Ž¾÷9yúí5#¹VÝÅ3Fë(ÕwŸ¹s»äi3µ¯¶éîRƒ÷Æ[xÏQã;]êꈗb‚¥gåbò%¥®P¬ÕsL<þvë‹ËáΜINY(ï ”¡Ñ®Ž›V9Wåiyf6ëw­°ÛEÀãšaº_ÝÀm—%ø'äÍåEM½3‡>l>,ÑG¼AÇCàȵN6$p &y6> -Yq,ÏÇ¡ëC gHØÜÒÍîš©/§øÁ£™ðBú¡P}šW7ï¥n²Ôß g¼¸X™È?¸XzUäå¦ò¤F8©¡Lª %¹ŽŽk,>Qâêˆî\XQÑ£˜ž|ÏÞЦO¯ ¥/%äðÕ_ÑâcÙÔ)‚ë ©hÏ[·ˆbíH¯‘êÙ«õÛS[üí‹€›mÒ5Ã*ØPË2&Ò¾ê—oª(>{xý‘üi…¯.ΨÐ÷¯’˜¡1Ëä[zú˜¤x6š.Íw<}ʰâî7ɱK¾Û•fùô‘~”Mv¯äÏÕmÀŠWy°Ì`SN­p¦÷ü´å½(KÕ铎»Zð“Ò•ï§|€]J_ÜÈ+ò‰” õÖ„Ï#ú;‘÷`<B“ÁL5Sö©'Ƙ²þ%({ywÔy3ÏežëÅS²âXç{] ü„•|ªI5ÿr .›JB šÅó]aÅÔôÔ}‚õ®L 2}®± ³ Î%œ²|«Ê,Úß:©ž|ÏΑÝHÜE$®œ™Ó9-0 Ï‰©LO6Þ'Ãý#õÖ„(öQúΟÜG ÎÕs¤ü­]w5dÝxGJ*{™2mdÇ”þòƒø°~cá´Iy·ž[|mFV—4š ž¬\MÏà¯0¥g¤-œÔýÚ.l½uõê“û ÏvO;·të4ÿ±7*ÈNé$˜_¥EŠËg—(ä¥ÕÚ>Úý,ŸWÝŒ tÒ­™œ™Wýú.Ñqa›âYMòÃìùu‰A=ØþìÙsÝÓM'++èÜo~™k]‘ž–Ö9£;·UŠgé!âiY]$“ü0ñäÄÝ”½¦SãfÎìŽYù×›B’ÙìÝ›!nòYæ ÎW‡(º¹¶I÷»Ê±+ùÕ m•\+Á¡ÛlÈÁ¡«„%)+=-]ªÜ0)kòÃÅ·Ÿì’—•v®ÌÄÏ@5,]5»¹“Œßþ±é}dµcË4³%´µa[‹¬>I MøUa›†>¿žL]nݦ}CìW¿|?ÀdX‹hYþÙbÉ4@JŸ?VŽQ—-;yø\Eë´ÖYióç{gJ¾è"DŠÀUƒïÒÚ&][(±«ÕBéÌ5RjA€€72W‘iç¶ÉcWůjÓÞ5™S]]]UUeÒ¿Œ¸‘²ã¨:Ýçо}ûvíØ ï°@¤ÛL¶*lWµÛHµ¡Ê¹páB}}}ÇŽ[¶l•5i¿šo²Hµ&Gu=½rÙ!58¥ZúvHô:‹q¬æQ×$Ú-3u–ÞQÝ¡C‡h·ùÉ@@k›©âa²]“âc£€Þ¦úË_^* þÌ+zXízͤÙâøtÙ;›^|îáÞªµ8L6*½1ÙbÏéô‚Ã1"ÊDUfjj‹Ÿwúù÷ßÿ æUÎI"œÌSk›©6«%µEKa«" 6»Ý˜b´;ä\”œ:C­Ô™ìšâ†*[Cê¹ßHUv©ŽÞ¡¼c¤”˜g))Fêo40BfÐÚf£®‰Ùž“^-çp,ú}zÉæaôù÷ë‡ëßüÐPaÊøÁÎ÷7?;ù/åy?VŒúwyÞ?dWä‹òߥ+§µj%>¹+KtËøÈÜ5›*^YÊÕp:Jþ6˜äÌÚ-'d™²pW1Q8”︠0A@\ÛdTm—ªDu>L×»Ó{ éCqµENtã+ÿó÷õo8ªž_óéßV§ÌŒ‹ž/Ú˜EžéØÉS¬ŒREMìžÝºÏ#ŸÜ»½žÞ[W¿}¬Wï*šá®e5(Ÿ{oú¯Ç¬}LàKn ¿oXò%¾ov÷ …¿3»uëÖ³ßшÅâbÇŠI€æ¼TRØfª¨RìZ\\Ü·oß6mÚÙž\ŒÙ+›èZmV‡“¬D7£„œœáŸSì -&/ú˜Eµ ¥‰±vóM”wµrfõÓô¢ö{óWÞL¾Ž²ož5Ë«Œ«´wŠO³I8µÊÅs!܇‹²üofÆê„\äûýÞó6éÄ~~„4.11gñ~»‰ME@k›F­íŠt@µ¾ýöÛ;w–——,©-@‡°ì]­d®N;Ù„Ãiw8Ÿ]Zb5;¤,ë(=)&ÆÝêfœÚÄî6õp•%»¶”¤ßß:Ü-Ïœ¶mÛ3g(ýÇR«é–u‡n&ýFp…ìŠÛF«JSÂM—Ÿt|½Z«JvrÑb›³g÷œ¶c¹µ¾4¶mÛ9{„(kH û' ÿ†»:tÛ¶mßÿ½ÿ–´{Õx’&ÃdäÀìüsÏ3Åwÿõ@™iÞ¿mK5?®ZvøT‹.³–êªUDâë“d­ý{u÷#™u<ÞkmUÕ‘§ûK¹ª”äëe /êàž˜~ÜÙòü¦Wu¯ãÿìûèÁ{¶Ðr1}ðÑkç¼³gÎØ—¥þOayU+† _Qµå&…•Z1LU˜eaÈhTìÚ©S§1cÆlÙ²¥¤$„çxˆÛµí´1“![eÞ•>ì5éôm—„§¥Ø•Öx¨§ÊýÝÊÿ¬óO•zd³Üþcn¡P³û-cè²¼„n¦ìöÔú¦Kœ WÉØ³óÊye]öÐþÚÇè§‚4êqká±kÛ_óµ\ÎS œ«ÌÿE„€vþK÷»†ù¬&ºæa„ ›6mª¨ ûro4÷e†j·w̸˜lµÂZ}¤öóÝ•o?ulÂ[ÿ{ò‚©ÊfwŽzüý[þøž¬™o¢¼ú=täTÊ<~ºÔ-ŸûHrk,S8Lnü:™n¹JéœÌîŠ8¥¶¬géivö+ç©ÏhÚ/oˆv±«ü ¦ÆÁÇ®K¾šT‘}´\Ih!ëÏ; CÀýYM6+]”@çªé[¤ƒ”M×î¼ñÆ'NÌÈȦ ù"²XÚ®ÍîFÑcÑ™]ïÖüµÁ\_S2uíçÇÞú×[d¤t’ÉÆgÈbå]ßCg-Α=Þï¡"‘Wôüó¥.RáCÛwÓòLéîí‡$iÊÈ¡ú™¹þJQ½hå㇤œßÝÜUiÀ.ü"ù{¾u½ùw9$ùq¹¸ƒ·Æ¶¡Kúéõ)LEV´[&•b§­Ôz ”`hm3ÌØõüùóùùùãÆËÌ”°auÎyËv»sÿCÁÇï¾ùöOç¿é_×fïÖ’­ß•ý8äÆ+þýãùÊË3Ú±G(zÌzi¶;£àÓEý¤×î¤É8mwnçg˜Ùvháõ:]¿ð4eÓÒ¡Š½xf²ú›¦(Õï|­ß¢O fÐ$Z™ÕrYô%ÿ­×Ú»óå¦_“ú-ZÅ*wŸ1L—©4ÿ]—¨€8PB! b×TÕvS[´é`„ìÝ»—bWšSX”¡C™f›YYW~ðÁ/ÿYËÛ.>y¸ô²ÿíRÕ#ýTµá’Ô–½*vìÈ|ÕëÛvmÈßÓ³û¥òÉ ·6ºÝ·ó‡û49Ž}ÌÆú=ùÉÎò{îX-nxž™¼Ö%?”-qÕ×6Ñõ¾‚2.Ú•ÙuÆÎ2íãï’[uv~J’†.)ûAˆ”§Óð®.ÀH5–ÍyUÛÔ®»²ùp0[×®]ÃYwefà8~üÄ A?úèÀ ç©ïïùöÂŒšš­é5†_líù«_ЮS§Ø×fßOßT>°>JìèVX73°,”¸#À×]eÛ¤k†]¶+Òõ0 ØGŒ©¢RSSÉœRSShç£>¢)çÀž5åµVã!­R®ë›Óî÷¿Í¦L±+ zÈzGŒº™zµ#—§ôTþŒœ`HJRÚù¯!gä,ÕvÓÚ´£ôïÿ=â`Ø tuu·kGÜ‹¸ð¸Hsþšêê‹Ú´Á9q5. ªÌÕƒïš Û 3v µóâØ½P^ÞìoUIMIiŸž[ õAy_»ú’ë?ŸŽ`Äþa/xÐÆ®tÍp˜ë®Þr‘ qXw¸N à‡€zͰëz¦à×]ýÈÅ.ÐÎÃGN‚(_„_{yìjLõÕô-Ò¾ª!@ ÖÜm3Ìk†c­4Úä& Ä®äWé^ ??ÌÓØ@⇀Ö6»ÆÏ¸@Ð!à»jüª°cÈh"bÎ+lSÄ®ìôávÜ̯ém"æhÂ#àf›FS} ‰±YØËXE:<©¨  ZÛDì  #໺üª°ãˆµA & ÿbݵÑ8!¢O@]wEì}ØhÂ%€Ø5\r¨1'à»Ò©bzÜ/}“c'æÃAÀ'ÛDìê“v€@ücWò«¤“•¯»Štü¨M@´¶‰uW ×ÜbW­íŠt\ëå@ Éh翈]“lðÑÝÄ$€Ø51Ç Z'Ä®I6àèn"@ìšÈ£Ý“Œb×$pt7ñ vMü1D’€b×$dt±¹ðŽ] æúZzì ·c\5Ü\ÆýhÜl“¯»Êƒ‘ätsè$úÍ‚€»mÍ äW%«¹¾EºYôfB@k›¸f¸™ *ºÑ\ ¸Ç®¿*츹výD$ ÿâšáDAèœt”uWÄ®I7ôèp"@ìšHTÆ}ôIDAT£]“œb×$?ÐýD"€Ø5‘F º‚@ìŠÃ€b×$¨‚bW 0»&ÌPAQÐúX\3Œãâšb׸(Zˆ]q<€@Â@ìš0CEA@Àº+ŽHˆ]` "hýªH¹íÌ uìYM< L qCÀÍ6q¿kÜŒ ßäØÕÒPGþÔj®§o‘ö]{@bJÀÃ6ñ¬¦˜ÒGc *·uW‹¹žê“_eß< @ ~hm±küŒ 4Ÿ\±+ÑúXŸ5°@ æ´¶iðg¶«5Sˆ]›éÀ¢[Í—€»ZL’ÁÀæÇƒ•§›o—Ñ3H4û]mü o’p]ëk¨û̯ҳšx€@üÐÚ&žÕ?ãM@À'MìªøUaÇ>k`€@Ì ˆ9¯°MÄ®1ÇA ˆ]C¡…² Ф»6)~4¡@ì:3Ô˜@ìsähÂ%€Ø5\r¨1'€Ø5æÈÑ 4Ž€»Ú,&ºJ˜æÇô-Ò‹Ú #àa›XwYhp‹]Mü:aò«ô-ÒÑh2AÂ# µM\3CÔ˜pŮԬÖÇÆT 4 à—€Ö6»úE… ÐÔ»6õ }šb× Q¡ Ä5v5K’Ï 6 KLJzÐ@€¸Ù&bW ×k`€@Ì ˆ9¯°M#;µd˜íòÎ4Å|8Ð ø&àn›FS]­&IVØà¤ÚéK£–a‹C_ ] ³R>¤¼ôe¡8ŽŒ”0 “"u^8„Q›e2"ƘÏ.`x®d!…g,†  "Ä~ò" çh†š‰RÂÈ¥!ŠÉR=’[,ž`ÓK‰:æ‚›ÔüKlRIY‚yƒªÅL³¤è9ž¡nÙ¡?5ÊPpÊ¥ô& µIt}¬ "…*[—ø‰Ž¥4ô"Ô$(³˜r¹fäQu«à‰€6‹,h©ÍÌÌÄP#+ >!þ€¿Ì¬L+ a("† Ô+€Š »à=.NX%â×I[—dHiÑL–QEÉ9Yû‘3H—C>ƒ)uy„ 8µ:îK¾#`|°Þ™¦)Ìr`÷ŽqVÖpXYkàŸ%¥„rS!Øè°Aˆ*ƒ±R"æÒÖ ‚ô“Mxè#:Ä࿘‹¼T•a€Âš¼Ã\Ê…‡8äËFY:"ëcÊ#],TB¢³À‚J²’b6ž"EÿÁÔÂ9ŽîÔ¶8=A) "Å%4a4úAÑ\¦Q PfŠ‹24[Ì`)8©ìSä@>úÇè»~¶ƒ’é!•DF²æSHÍ‹¼Ù}fË(ë¹X/ÉZ¦Å Ðõ ‚5)AôR’GŒ_<5<ËÎíüÈÇš¦¡ 00AŒŒ x‡Ä b @¬4™™Z+MV–[ms€°r4ʧTt0xsP§*: ŠTh ä¨çrçå ›/”™\Ë•¨ÇŒfUþÂ"J}„¬/(,ÛÜNA#`|°^†µcx‡®†èš1â ¡ì%qÚCà‚˜ü`­Fßm™“hà ZN  £ dã€BÏD*¥ )MªPÈ“¤”2sRLA5aÏ.÷E°šETƒJP~ü£Y §&Ä%fˆ®—Ð,q‚ê‚5*ÂbÁ6*ÂD ˆˆDj@ôP¦î2"‹Q(ý±Ìd¥¢.³RP&4I³‘‘ DQ¿Œ(ðSQÁº˜+ªuÊU¥-`$¤È@¨}ýŒ«`m 3eNeÌzª‘IIüz¿ 3a.²@„!üeefdØØØÀ,„ p½e@'~d’ ŽB…A  #Üõe(˜”|`+ ¯ VMÖÊʼn%eÕ'Q¤S£„`6Å&e¿TSrâ+.ô-ú+÷•(/‚©;cÍÞió…°Cˆ+ôa‡5þY[ÛÐ7œa‘ ý «1xÈ¡5ÓW©ŸØ §tÊÆr¼¢°ÙQ…¢VødKHy2³˜£áä$°¡›:K¹ÅAÎØØLs(È2q)Á„è©0mÀf1ÄáŸ12Oé …>B`Ρ>&‹A³!„b,Cu0Øä‰ä[‘ª–aðQ…ÔËg7Z²æiC÷ Ìgkë»aKV&Ô÷Nÿ}ùºܽ¾!ˆ@6†bäÈN0†¤óXì` 8µeóÞ³ìëÜZ5ъͲï†/ZT¶Ñ=*pI¸å_ºxlEø¡y}`sX©µìmô±)lx á†øÕ&¶œ'‘…Ü+Qgñ(d»ÅßœdLeÉ‘T¦%¥,FQr#g“+)ægÃÉO]Åœ×Ò aÙEªLÅ Çi:­àÚ¬‰H}ÖÖÚŽÑ’b~!]ÆU«àÔábiš…òK+)c§iåÄ„ÎÆæ“h$‰Ý [½K3hü¬Zåù÷¯cÒú×(—zë§OíUÃÖÀ‚ܘTÁ01†Û‡llÊÕé5c¶)~Cú³ß$ö›Ð׉z¡yz÷Êuø¼tïy å¤ÝâÌÄrP;i äl:L­ ®PçÅsQÞ”4WGˆKÛKÚªvnÉ¡óד÷ù8fïú“?,=ß4°mZ)НXk¡õ]®Æÿ½óð“3q#;8—„8Öøm«,¸Ü²²  ¢_wÑΈXi…ÍT …H`ÒVË‹‚6n€¤£ªFYÀ&Q䜌¨dfnÉéJŠ2×âÂäŠÚ‹êe•eù©+7ö¹L~ €ÁG†©ÓÊÞ®|úèWOÃ6Sv¥”J)ou§‚æA dÚ¿xê™TÙµŽíâAƒ“ø¿×üõÎÂï:¹Sªg·í;{ª62ÈD‡…¥±Ò ­ì`˜a¡¢O/?Ýzú×ÝXY‘ž‚(¼ÃÍ»H[v¡©'ÌxqóÇ$$xç²îXYÕKiÖŒ²Œš‡ª kKð®lK¦TnÕËË$dªù©KÕ'46©<’K:e=²y£K}ááácûøLmºÃÝZ©Ñäæ­û¥­2Ë:U(ge¯²Í°¹æâêˆ÷`âAâ®ïÔ \àŽ$ì5éÓ>XŸûèÜŠÑ‹CYÚÌØ<¹YE¤üQ{ùæÛÓ@þÉÝÉ¡þoÕ‘636Lnf¯Ñ<:·rÌÒST¤Íô¯§6!nèÚøU¯¬4C†/߉æ¦}ËZí°e?tw§£Ž.PAz%âÀ Ÿ,À‘,`êG7Wì»è=Î œÔÅ]û¡å‡“k®X…Á€&î×áóu 6ú»j4/}9qíßÔýó6´z´ñÓžýÉ®ÏöõõÉoãí®˜¾3×ü׌=¾ºeÎáÈß;p¥_5Íã+As¾mVVÉgæ®'»ýåxÙ`hà礗m…òu·´­“&ùTàdÂBçäÐ韓î]íG>ÒcÜÒöŽäIäö…Íf ¬[$˜µfæ49ý¿w—¯?é/fhøîìîdß²³n]ÉþC—zŒ›YõøâÍ—X€spµ¤m‹¿ƒóK‹ç€Îe¾N’àé>yq;g’•tzþ­ç_®ÓoB'7WŸ›§ú¸:Ø û(,LeÁ7_øa6›ã(°< Çl¡ ‘³‘·òS£4x-…ÊØÂ(K’5£PRb13Y†"Wüº `™V9=³äÈ?í_³.e{á77‡¦¶/lîÝ~ð0éI%×ÒµÓÒl.=¿Ø¸ŒMÉÌ'6Øác(€ã.€ô8å–®eûòpj¥yt~õ8ÔC\±êÇ›}øãîáìQÄgÿ[|²Ïîàäô7‘37r°ÿ”ûo%ÃVüð#94`꩘ÝÝȱKkòãTˆ F¬ó͹ }Ï:½ìå•¡±¯Tç‘ßg °áEÎì=|[}z<6Å˾£‹ûƒ[´[gŸ¬·ˆþéR.o˜¸¶ú‚¯Þs|HyDÈÙ]·',ýê½ò)—6¼³÷̯þS 8ãþ·è›ªKßµŸû…çGëFT£!ŽÄ‡ÌýR7zÑgõËÝãëßÎZxüãO; ›ý?²ð¯–³†ÔÃÐ"dêÝÔe¾ÎÌ–°°«Ö¼ñÅðÄÇuê”O¾}@×m®Ê`Ѥ“Ÿ|ëöÁ’AlÐ0+ ètNÒì¾Råk¿³t>ÒßÀ($y^[XZ¡Mÿ„ÃÉgîûšù_Ì:Ú`蔵˻Zý§"ËÎ7™Ö¯–I¤lT3õ ›ÉS«¿'§.¬iGóõÕMĶƒ¹O#woøÅÌBoŒ„’ÃæþÓ÷€E8RSãu®žÐ¸èyò¥íWºŒîgÕý¯¿“ZÇÎŽhîœ^ú?\öýÕÔÏ\>ü‹fÌ¢%v‘;> Z:—4 ˜¾¬kÒ¶OŽG6퇺‡r`?™øÉb§¤S«ŽEzA¦àû“ë;ÖD™ùiÝòÌ›º‹' ç–û¼OþØbÜ»³—`öÀ埄'×·/Ú|)ùSŸÁs†“áÍga ®Ù×uÒ§t­,1túªUf¿]CÚ_hFΞW933=C[±Vä½çñB“Pgê1X¬A€‹ÁäÃ…¿+°°vàrdUÉ4HœÊÓF§%éW&$gäYr RÌ¡t›S8…‰€Mú‹’oœëPKS&Í fô“S/Ü!ŽO=Ê–¶*ÝÜY[þ’[ÍRééec.‡òÖi™¥™st°#ø¿“RIGì›LÚ±sjÜ¡þ1¦G«F.dó°>"–êÝ>¸¤bÃapÝ­ø¡DœÛ?vuß™Iv,)S y¹ën<²»˜<‰ü~ÁV:µ‡›!ۓij—€“íÒ!Îßõ:x6±km YüÇ´­ ϶5ä·ð¬ø !ôŠK /h¶bè’¼ÈÌ=ó e¾(c F‘—]5­OÌ –­'¹©MÖñÈû–Üha2R'–?êrï—Ì!6VÏîÛÚ–!™O° ÂvHÇ–N™+9”yœ’fU.ªFå’0XÙØ¦ÖA*Ö·Òüƒã­0¢©òníZUW£»ºyàÖLÈb¼Ð颎Z¨›±yg³Š$úÀÛÒqÛ8ÛQyl2È 'L}öÙag(fh4ÑC4[G=hb_îôXÑ¢/oÕÕú¤nݤ:˜bA>È /$A¥ü °0æ=í«‰âNXý)ûÆv|¿rCuR1¦žÆ…fauÞµî ÍìËGtÛÿ¸ð=6ˀϜdð‹ †>†’Ž} O)H‚ßJÁ'|À§Á…õÔ”AëÔan«oæNü’ôšöY-–EŨÊÉž<‚'A1…1ÀD×ÐT9§æ.ýxÝý®ÇûŽ0ÌC¬Û}ÔlÛ'3¾aË.¨WÐ/8£M ý,H7èãŰ•ôÎéY¨A5uC8ĤmÍnƒ.;q£Q¿Zì‚§p1N9¿§&ÕIù K(f ù˜+Gä‡ÏäèÃðñùÂ#’7·’[;P¬.¤Òw±]»r°†>[ŸÚ¦ØÐœ(EÁÅc27ÊÕy{¿³§¤k4bÚ ºv”›úNMÑÃgÒÉ…[u#§/«kGaú‰ŒG(­žSðQøYT€­ƒè?E†¹Ç4P"¥ NØ~Š–QœÞÍŒ^Eåf1tÉ ÖS壨šI¶cÇFJX{Sñ“’°%æãÁ”å[ÌêòMW>–’«2…€UµWž>{ëÔçFùöðº_±R ·{ÚØ””³÷ïUˆI­òPSãþãÚžµ¼ÒJÞ,Q)vî²£|îïh¶Ï^{á!<7 Ú/kµïEêÚúºWJÔ¥o ÷ÄŸ¬ÀÖFÇPäöŒì´ECʵþPÍ·ˆÂLa“–»÷ÇmÎ,}0 )ðŠ:0`ú·Þµq…§PK*hwš O­¦?ÓÆ¥†(Íέ}ë°åßDܧù¨N Ï–Ä—x0yý9ãÑ­)u©Z« -·íØÞb| gG‹T 5­-çâÝüìçÛ/< öQk&ŽáÔm9gï&ŸïºH33cÂ7DxµªV–j)[{è'S{iöþïP³»fϪ?ã¨G®þ¶W×ݳ*òà Å\EÐà»2ŸÑ ¸`ëèÕèbÐÖýº®Uð~„ù…e€W™šoÏ}¿9t3!«l¥ä0|fiO®‡]—•õøQ iÐÔ¡,°&Üþ…š£èbEaØëqäÛÿIAç²RâÏ]&ζX0ð(cëL.ŸO|Ù‘‡¾»ŠÒYe*Õ'GŽE>FkgVDÐGÁË*SÅ«ÞÕàÂÒÄËß_®ÛØ¡ ÓF5–­FâQ“‰·Ž’N#gÍ d¯Iƒë‘÷ýÿ¤ÀS@N&è‡g†b¥c¹ñ•‡jÚ…«Bðƒæe‚O:D–œæfiÚΟ>¼á¥¿R("š%i}”£kÐÔ±ˆ¿{GZ÷@+ëЬá¥Íû¯,Èqaë`¶¥1%…•^0º§oÔ*_ /$W…Á¥F› 4k¼„øQü€A]:Ìx‹MJŒ&¿Ä,?U¦YÐÌF %'Sh†ÍÈ=#7Ì8ϳ8yAÀƹb æÞ…ÓÊ—+UÑÁ«TO|íRÕ¡¬{‰{‰çî]ký¤lù6D›~ÔÁñNÕŠn´„IŒ ?„ç=W{sË §/§N,úÑfÚWîºòî>Iô^?±³„–^eØiÓÍ`‡tïºdhPà´ÁL]þ¨à51xi­!Ó߈dÈâï»Â²SŒØY³«7xZ€À4dÑçtW„в•÷6Õ{ìg°ÅÒòÃÏ?ð¢«.b.|RÙRÐ9: ëì\Ú¶$º¶.v0ÚÂ’a|¡ž@¢\½³úŒ[4s,õ¾ÏŒUÍp€BI(o¹zC>êóá§3§ÐLò}RÇV›ðçô{iÙ½†ÏZ5KWuæ¨èE+÷S¸Ûnç„Òl0¤jª4ÞpÙªÙ þö„R6<@‡­C“FäÒ%wpEŸ2‰§|‰_D&¤áÀ©oWÉÒUi×…lX¿à0!:¿E6ekôuoÞªyÔ8°†¬h^ ’²Õ;5Ù³rîô¼î;S[B˜£-[ݧÓaÃ)D­ëlðÛvH“ºoú×½O³ûŽxkÁ–UóQˆ¿Åcí ³{Žò_¾iÅRfãÍÑÓª—•Y$o¸ù_M|\½æ³¨#äÍÑoHye«·~“|•Ô¢UŸwß\øL?ŸN>!ô€´O–†¦ÊÚê ÓX61ž D¬sÈ|r}×òo¯PÇ:}°¤&Ä ¶5Z Nak´@Q"¶5Þwöâ9xH·­Ñ¡[ðzØpÚmÌ"Ÿ~ãºÍÇ4=ºŽŸWÛV›•‚V züZ£ÞÛ¥á'æ¨NéÀ4­ Œv€mà…Ç.¦¿¿Ì°˜€Õ(»m—(¬XòSe–QKF1’2Åf9#[f8óš:ß&,òSW^ËÅå³C@3úýñÀOWLMMMOË´)aeggWªT)Ø\]\zÚóÔÔ´’%m*U©\Î %=à×€o‚ÂR¸KŸ~åÅpµžŽŽÂa¢ßp0`‡Q÷ ­SŒô%‚ÑD+Í4R¡ËÌ7ý6/ôܰ¿tš¨ÑëÓ7qèa: ѤüSž+äP’ Äüd¢ÔeIú£ µ«·ÀNÅwÑ#‘‰1R¨Õ.;Då”D³ QŸXBÊ&q‰Ü’š«vÈýbù2Š\@é‚ ‚Ü´šáÃ? ­ô~oOiª“A{£™°K–¶C¡gӳĦÆÃŒ(ÕJÆe»pÕÊŽÆ&O`&ƒ>Y=39ü³³vï¶w,—á‹ôt|Äz:~À~ÂPáò2ágçØ„ "ÙA—™_ }+B—,5mxõÕR £Ht9ƒ2­d3C‘L+B–*1ZS¾… Ì—|V—ä* 2‘„½=N°Ø™Ž™°yªl9[» åésƬś2 „*0¢È»föUH'PÀhÔe IDATŠV„±L1jê½Ð_@£ìÆpÐÂp¼“ˆú•NýÀ)g¥‚Rl¢7g8 t>œzÀñŒÝ K ʉ>!U"°Ó ÊŒËôI2 ÕÈ)^Ï‚GÔ²ø¹¬ä‚^¦\?!Á42›Ô.cÊ#œHtÊ!ÏS#çëÕÕZjJÉÀÈ4G^‰,8¬?7HÙ7ì¸þ‹ÓïLjþ† F–÷4bx!F‡ˆ°hCj¾²0êÏdRJH1ްÍúg˜‰ ]÷#åæ¾»ð+ ¿f›øÆB 7`= #œb£³Pï&`Ìù‚geÝHÁÛÉ…"t‰5*Sí_*ƒty@KUz+µLIã‘8åV”•lr ÓiÊ„ÊJå9¨3¬¬ü-åZ’`x™W¨Š©ÒCU¶óp}Q[y•ϱÃ\ ‡Às;„Jb=Všô 왃gAè¸õ²†¸¢‡ < Z‹1 ô‹ðRô>–Qä©7†c“0Â)›¬… ÕŠÁU ÄÑWšAyam…@Giö¯Ÿ6a_F×g@E€(° €Qƒ8Æ£Bšf PŒ ¦,!†´l˜EuaJ'Y ÐQX,…F‰¹ìST#ƒŽ­×HU!C¬ Ô”¾–¤ "=V’MÈdÄ E‚lF ¬˜†j¥³lõ|*Ž˜Pi™µhYÁâ ”‰FáÔ0WÏ#ïÈdjs?÷Áæ0hì‹.¤ tÐ_»Í’"Ü+ó|…ÌTsÊ¢ïFr*YðüÅÓ7©iÉ+W骜b*Í ”r™fP+§0+R–‘»X$O”nHµd&«àkÒŒvðÄ DEœ%,»ÈÛ%óFMhUVVð k(Yl¢˜-¾À; š˜‘‰aÌ… 'Ýí!=›Q×”½¤0ðR3R®›8¶t²td×ãÅD„w1K*ˆ ÅðN™´("x@éHƒAKX4Á äE*ýÔwü@rh ß@0C\0ü5âT% å¦iÜHH=`‡´¯P¢ˆPWVöÁ\IA‰Þœ±„ѹüT4g<¼Bo¨@(”NŒ]ó%ÆT&±Ïa}+èdóÂ)ž°ØBÿNIâ©0ÿ¾JÎɦF'‡]Î_°eú—[b¡«,0Å1ÌÀŒ‡0?¾C§=Ì¡—?Øå› ü—Èç|+|!n²kJ9º3`ªFi‰h*WÒ¦T.ƒ”Ò\ŠR䢬CÉáõYä^¿h~ûãO}IÅ®Ÿ Rß!õ¿@˜1Ày¤b7 Xÿ:M$°¤g0fUöV”ÃèM$Iª\ û©?Œ, ‘ ɲ©:ŒA˜u‰Ne]’å L}GôÙf4!G¯‚±1VTE¥PNʕɭê¥~£cÄDÙìäävE•´ˆêfD_ÍåÊódE0 ›’7kÖ”:]ìp :)LQŨCˆ3@›¾ SÕÒ… nH0™©’A›”•F¹˜Â•<<¡§Â‡˜B6ÊD*ÚŠ?©¸zM;/:`¥Š66Tk†4ABF)òÒ)ô˜ji FI‹±kEžÒ²ŠJN)4•ÞÈö1•Eà–…&=ºßv¿ã’Ÿ}åâá ÷‚#Ààp8ÅÍ_—b‹¯wÙyÖ²‘ÛßÅÆÿbåLvÈñ|ŽG€#Àà6lGd‘Ùϳaæ?¬”'&'?I} ‰<«ÌFls±…go:;Â×|ŒX_v0³)9Ïæp8Ž@~ `cjm/?”†æ?DU*•oÛ¼®u/ïÁæ¿Ø„û·cã=ÝÝJø²ƒYÆmp8ŽÀk€Á÷#^B8˜ÿSŸNäÁ³M<\ª\º~[ ’ò"Ê]æp8Ž@Á"ðŠÌ|À7 aÎCª ö å<‡’R°µÇµs8ŽGà%DÀÔžs_ YL,ç;‹–4=7cÚßm–Ïíá Yûœ1‘—âè÷›¼ù½frm¢ rH4jÒ–™m!KzmðX¿m‹ |ru³6ƒã„v ^5ÌxÍĤ SJÓ”"/šÛ J̾¤¦Ü°˜ns™½3ªu­J4ï…¢9us2! å&4™%G|=òÓØÈMzeVWî3-‡%÷6ä’y.u^k'Ïä°õw ©c1ô+éЬÀ=Ѩ Í”­#ÔÆuåT·‘~èmz» ¹Ìh„À/B€2ýÛÛ½<ÊàŽÙ”ÿhؽu§Zãþ89É·!'OïëÒfRÃæµßáÉ–]bv ¾ŽD¿Õ'&‘%½þðÝ;˜x¾wÝ6ù ¥iF‘MLcAH;rÒÒãF|'n¤Szx%d¨&œ;g{ š÷ø>Yc c†SV§çÎo×#ØL™]½æêZV;æ­äT·cÓ6îsþŽÑ ®hBÈ™thætlWÐi#U' Ìγ¬qæÀ'ÊjÜþDlúßÊ“”Uh{Ô™‰-N¯A¡úz$-øhgä‹ÞRfËS°%_7¨q…K–“q™.µÔ åU£'Š‚òÉpÎ|0íëIò£ÁC3#ûvsJ #Îcœt;Ï…jÚŒ$'ĸ´0hü´N¸lßyŠ¡¯G•I¨Ž³ÍÕ®âƒN‹ ;+óc"oœŠf)2´Æ\´@ó.ñ\Ž@Á!`jÏ´í¸íÿÛN-ûNøjTÚÚaSû)Lœßx¶õâ¯Àèpþ›9štÉæ>ZV ¹þÖ“·¼Û”€¶=n¾ZЄ$ý²h!ïèmyÚ2–Œ8à¼xŒDF;-”/dV\:¼éy$6V^„5 Ãæáæ½ÛÜ!4Y=h[ü6\¦ ›×Î"•ÈZ$24~˜»Kth(ñ˜ªZJÓ”"ÙâÖ|¹-.Öi^Ð(@Ä×bIcḬ̂\’”UrhÞ¼3Þó‚æŠðšFCÕO‘h„¹—‘·2ÏUëZY;f­dê1¡dú­ lLÊÂR'÷4_¾å+'gã/98 +*/.1ÿŒSúãÔdÄWA#€ùü¦ûtñ¢5%zxþ›¡kþÛŸV+¤× ï -ÙòÃ,ÄÐè,£ö¯pÉr‹¦J- )kúëQ¥•FÚî26hnªNydëOv°;–é'$— ÞÁÑ%.˜Hšäà"0ŸÂ>©®>tD‘ËÊbù»¢ÔŠ©3ÛJ«:z„~9ÇiÞüÜox§pÀv/cýFíÇÂ’6iÖzÕÙó#uçB\šŽ„ºs"{Î%5! NÅKUêÓ\ßîÒ‰R=µ [¬+X߉KJÔ5I>›àýÍÃ~>ŸØ™œ #Þ£ ®Ùl}6èi5oI»AõËDæ¹âzÉÖgà9&g>°›Å{SÉC¼ (EL`ã÷ž¸q8»ý¾…ùÆúé·TEƒ [’Q½?‚cÙ…•²âøIr„ø,qW¢«-¾zr5dŽqºé3|Fk²eWlÌ‚(£4M)à¼Ë€…3»8R½“T"ÌDz‹Â´W5‹jr¢œŸ*•i£ç–2)¯Vn{’á¦P®Ê4ìhQY;–™E.C‡“ωuîBÉ@7jBd #91žèšÉÀÁÚUåÕ%漡cX5†þ$š·N7qã—MHò/ 7Ô”Ü㴅Ș€%ñ°9£ÉÊ\ ÍIlÊR+¤ùVêØiîÆNɇßnÜ—#½òî€!줱¡~C‡-·VÕÁ=>1Â)¾]³aÐŒ¼šé~9¯kõ?œ”5K¹~³ Œ5?£‹®&²9"Ñ11¾Y·w½t?†Hä i6†±Ô[e垘ºLäRÒõb©IÎÇ(B¬hãUy¡O†t‰"$œ\IØÞÃ8€äâe¬´Åþ|ð<ªJ:|Ù©Zc£ —˜iʧzÀÊ YLÞlía”ïîZ›Û° e¤™Ì߉̎ùãûxA‘ݨÔ@Ö;£À…‘âNKªK:¼÷”w³Æ²’*QuhâífŒ³^›Â™ºÐK%‹uqÆ›lg·øD˜z=çÏ™„ÝD혱¥GlN6ÏþÙõƒá^`QYX¬ñø°ó´Q¡“ 5'óì’Je)ýINŽqstœ1n“ A^¹¨™ˆ óFÕr-¯S¥6næ[)muf.éë—”›À+%ì ý¹ÀK ×ùyÍnB›:mo§~Þ[ÍÑÁøRU©GÕ¦‹c“–$l㸖MtN?”L0-X±°v”e(jøHÌj×KÎìZègãä/ð„SÅd¶kÜÙYtƒ;$Š”h4|~Ï…sçØMÚŒÞ4Üò; P¿sÎØTÔ½ÏìÙ ¿Õ¨ÏÇÂøçÞ§§‰ Öõ¶š¶Ù°øVLø/8 °òR÷KÒÉG¹tâ=/8`PÀ¸f_Ræ.3¼q™æËP¶ÎéHH+åJÓ”¢„øåD†ÛXÜH@\úÍl %Õ3¨ ê?stÂ{Î>ïþ®W#Shž©È1G»þpg¦«êß]€´iå#TºZ]«ÔŽº5ª‘éÏ;;²¦¥,,„(..‰›GŒÆ  KÁQuRµÁ¨7G3ª,¥?þýö-œ1úgâÚÊÇ•]rSis&ey&`i¬4*¯qe®…æ$6ÕR5H³­ôü·£¾ø‹ªk5þ«ªÊ !;‡Tõ$MÏꯚ«^TmÜÂe§®Yclêp 0’“Ä‹6*8$7TëQµ©Âfš‘Ý-G"ŽƒôüœÂb„‰Ü=e³Ä;±‡T^/ÙÁÏó9Å͡㗊¹t¡K‡F¿Pÿã{¾¥ò…”\êµ@l߯aÕœ âÉ ¤•,¶Ž9ßtÃ0ËÃ7¥Š×—’|dá¼äž½×·¼¶%‡~ãÓ¼ÀNl‘÷µ…ü%DÀÔž—¦(âòk8¬4­¤XêÖÅó¡®r/o©W’ïâá}±®=ªrô^ÉÚå…2‡L„³/!šcâybˆ€Éo»C_U]‹¯ˆ¥i%%{×î]²`,qé3gHUX$Î^€s0’.[ü>_ŽVïîÏÑã-ãõDãÞq¼žuÿ2—šÏ|ä¾ö”wÚJJöÚ«¼9}Ý›”-7ÒÙëe9ª¾ùñï•­d^°lh°®!ï:²‰gKøÌGî«åß»ÉFÂJJîµsIŽG è¨òßFQtès˯|æ#—•¬º¿U•˜K\Œ#À("`;9Ÿ‡,"ì¹Ù×›)©/oYÓmËõîÔ¼˜ø¯«P¡˜xÂÝàpòˆÀKÝ1æ±ì\œ#PØH6lË–v¨b_ºTIk+«B0œ/&Ο¾Âô\¼r•Ï:ä ¤\ G€#4ªëÁqàp !ø€ÈýZÕGS33³¬^žà£àpáš9×'OŸ¿ÎÅçeç4Bðsy”,Y¢ íqýŽG ø#­ÑhÀOö^ü~5<„[_[»ò¶¶åŠsÿþýØØØôŒŒW£˜¹.E‰6NNÎNŽÆ»¡_F|„àV[`Î#׈pAŽG€#ð*!P»fõ6øgmmÃã¬Ùó/)ƒˆ<úw-[ºTazR m=K{±uû~eðñ2â#°ÏÃÂÕ–ÊVÚV®V©jå‡k*5}ïþC«”ûORʽ] 뉻Äàpr‡ÀÝï”)S¶œ]™2exü‘; s'EàÜø€9y(‚êO)½Œøè7œJµüãHôïn\ÿôÜÖ©iÉä•ë zþFóJ•l_û&µÔ{'"+>O×={¡{&¾§¥“´ ]F¦naÿgªzÌy|cžÅà1Ñ·+V¬Dˆ3Ì~XYYóÉBÀœ›x­P >Ì—¿’}Vå£Hé¦ö51ÉWE]ؼö;<ƒW sWÉ3GŠÙ5( ´S.A©¥²àÛÒ}]#füÔpô¶É}¾$Á4ɃæÊ&ËcÖ øiK?S"¦jP.+¥ç’¹ÆÍ”œ^\È„MpôÐáoÝóƒ#ÀÈgT‚ó*·šR¹¢Ž”²zçOÛÊŽnÍüˆ®ÜjGm–.KK2³t™YZغš‘…k.}†Í'$Ç‘2¾±ÎŒ«úŸaZ-(‡ôÃûÓçOÍ{›—Ülºœ“«›ÆL Þ;Çþø ã‘õßçWü³kp Yub/Æ1»‚N’öíL%?¹°ù4RAoÝû}¢-4´›YϺ7w|ãMñaGØÖ/£Ái*]ô:`éYØüÀc=— QšÌªÅd ÊêõÜãf©Ûœ¯ X0wΜù r¥=*ìûS Â*Õï> =¨¹u&8ÜNHçJ«I!Ðü«ðƒ‰„¸¶ÓZ™”QË(8Õ¬*íðx»^A¢Å¦K._Ó„}à\Xç|è¸&ò_EòÑJïï™¶®+›!GÆTØ×+eÊ?~Mvö3 ðôÛÊ„‡îbzn®ïÐpfÒDJ>§ò<1ØóÁ¶}¨ªO¾o}j‹6åÇ·"OÏF‡nºù`ï±+Y:]&ø¢!H¦îҵ몲%B|1­½ýó;–±¯ içc·nÖLw”CÌQéF ‡Û‚•lUC|ÐÛèXއËйäË]!ùe/.þz-A·{¿¡¦#ü2Xzj×$GBãõšOžÞ×ůgAXR×éé骞A©ækP.k^<«!ðÅçëGþâÅ‹\ù1ǘþcü“«'ϦäJEN„s`1·‘‡yk—ì¼òȵ& WóÅa‚itU.l¬8fcnKÅ4å?­|ÏÁïÔ†€LÀû˜‰ƒÅµ3½0*wU@fþâÉPú¢Iñ+K¡/ïàïw–]¬2“5¨.Kë‘"Ãp3öYµ dÍÃTCâôBC€ûö;æâùó&¯kɽJ…ÆÍ]ÝŽ¹‡me{YÉ×_Þ4h/Ž‘ü`Ô¬×ôò?·húÖ¡–,'×Yðqó—]¤_WS³D|5jˆ z e´N…©#¤\ŠdªóŒ¶Ê²‹ù=QVÃU¾zðrsb543)ÓÆºø0k:ù5ìFfVfû&uXüË"ª¾õþ¿ÏŸ=?òëoÛé­7áTÉöäÎ?¤”¿‡ue«ô?¢“Û½QoÄÃäèOWÐÕ’©ÕÆõ: úaýå鳂 >”žÉ)ÒÌ„ž³¥npµf‹ÏO!{Ýcw XÔnÕP·°ù¸]`ï÷ºzð¶xßA”-úðI@i¸+d|c‡÷ÜõA#Ç5ß@pí¢¢ªÙVÉÙ#ׇov¼ $¾tÙÝ ]ÁàÚK÷~úÑÕÉAƒÇô¥5ë?cóþO祆NòEýgŽŸ%n$J®ÓñÆ®"1*Òc}x8¯æaÜ®55Ã7K»ITxæÊË;ÈUVv™yõäeXÈ&ˆÂJŸ•U "o\^~^”ìß÷3<Žé§½ûòlj”³GàDH…ÆüÃWcy$P )®˜Ð寝^Ä>[³F뀷ÌMÒ±%žöÕN -P[/eçÑ‹dÚä+,*«-q'6œ ÷·ú·'²ΠWñ´†)Ÿ‰;‰‹©˜oTm®Žää;IwîH¢NŽŽ¹ÑT£[¿fÓöÙà ·Öø5™vµ ÿñɦî¦@hä+²´(ÛtÉòF3vùbÍ翃—Èÿ/‹ð@Ȱ_nAÄ€ÑF-uÈŒ½G?ïìOnþѨ®@I¥¦‰%fÎØ T£¬[ë ½NnæQš ˜”OkX*Á‡ù⥿HÓ>‰%¤y—¶µ­4šLÎvdeâlG§wƶ úg>´tCFšzü1hàfBJY|Xþ½›Ñ Í*ÿ÷ö²`‡‡VWÞæ9´¨çWp΃…8©ÏÒÍ{[€¹7âárv70 ÍÏ{NœÛ³Üú½×9øO\¿‹$Qûz­aüÙ€çÄ:‚Â<ÙK|12—¡›÷Ř ×|ˆ?\U5PæXEVlL̼'Er­ò4 ú½‡‘ÌUôÁ¼c’ŠìÙ|¾š¿+Ƨ_Lppí{Ýõq¨‚W=;µ£ƒ·ª‡®.u/ì!î°Qå1@RrØ0a®Mˆ0²Òge|˜Å°ˆ2{ôü¿ñ&æÚxÊÅð8ûêþ¸çŽW/U÷S!æ×O„Ç5†âÖ™gË·ã?F!;¯T`D\MiÞ?à-bÀy»Z÷1¨*æWˆ$\Yì"xöà*D˜–â¹­ èPI¦-›A¼âÚx0.¹Òh@ëBôVLúü¸µR`„ðõÅïÞ U«TÉeäaàÞáñ¸•!팎GÆø­»é?²Ãg.ñ$­ÆÃÖw5µÜ²ÓíJ;Ö‰ÜZçÓŒÅVp C¨ñ$õiÐöŸ€èÀ>–F¨½fí†áûoBó¹ùX¡sí¡ aº+!#& IDATÂÿæÞ ¡½ ‚ dŸy}vÊ“ €X…~Ÿ›¸ÃcèÞ”Ï;˼½¹~Ä´F3Òò)ö *Á‡ùç|¼x‘®}týùóç0÷0;è<Ïãy÷™½ð‹-lÛ]ç|˜BÙTØ!ñgeá”Ææóš÷Î’'C0Ô°?¸’|:-á—4ˆ<–'´û*"âBÇÔ'ÏrómS^倎‹,ã„{z&†’û{Æc^|4Üít`~«BäsÒôƒY³ný–Œ ís< ¶”bFƒaV,Æ;Åâ ÈŠã¡äÈ­€%3òÉ#·~߇ô‹Ù6¹¹oN ™½g4iÒÒ4©@‘aT;Š|N(j¼½[/ÿô³J•*çÜy4ÐBüõêJõÛÑ´{u×áq-æácR£»#±oQÏýlÌT`¤R©~#Úcp>ˆ" ¤Ì+i[«D“ÛzhçF™%mB0$S`”Ä ‡Í•Wªo”õȤÏÕ˜ÓZóžSÍÙ‰)‘¹ÕÙ¼¬Ðý AMJÏdZ†ö¢ŸÍo™ˆèט8cè4:$«Á{úå›é&Íãg±P©°iÓ'a&¥„…À¶þû¯#{ƒÒh£.Yrèf>>Thh¾x 0pI…Æ(5jŽ;ž6(ŽØí•&Ž~Ðpfý)Â>V…šœr¼ç###=ëÑU˜ÿ€‡yö¯8ëûùƒÊ/ °{_n=§YZprÂÄž =„‡y'Dp@tŒÚ>i n²D”®K-ªàv˜ŽðÛ¸ZÜaŠ3ÿdL?_¡xQGNÒ–ô·†¸¹Ö&ǾÚF‰–¡»‚`v øã¿GÕõ¨fNƒR9ެ˜£‚†R;±»¾:L]Íç€r_L:šØ9gÞUÓºZõÓÏȘx†LÎKa¾Í¢ ôYYfðÌÂG {ž;wïÉUäÎJ;@ͯä¨X0«›XñkwÀÌ Bm ¨Ÿm˜Rpn˜Ð aG^#[wE4ª-@«-l#jšá];˜¿yÙ„Ř aGN#, Ýöq4òÒОXÔè:€\?hɆ$d;<`6¨?1šÉ+j*3æ÷|À×ß3Ý~‘ž[¾ë‘4ó1á-œ«`a®‰ä-ø`ÅJš…_¬¥[YcxƒKÐhÑ>“—®nîË‚kÜ™;'„óvô ¸/‡3 ÓˆÄ{npÀàÜÃGçÀpóÓ>®Q¾½š3mÀŒßàu1­A©Ü{èæÀ(_ÁÝ5‚Û/&úi&È yÂã7ÄàI(Fþ|øô›X‹x˜ü2¬.¹*7«æ!n‘9F™`²ABÆL)äe—=wÄ\ š/ºÒg•*0¯‚ç2›¶l-p‹öË“³ 1o¹Òe—k15êáb‡ÚA9¯]ln¸Ú¢Æi­¢ýƒ'l–%æ6L{Lo¤ô7øæ-~×cP0F>oÜkÖiþ›9²7ˆ­°€lD¯ÕG&Â7Tq¯C1XvÉ”¸í£aÿð ªJÔk&ìƒÉQ” à4"GÆ4Û5 â¸| &OÞ1a•à#[­™ÏdèÒÓÒuïw-Ÿ‘¥eôxòà!^¼ŸžOñLl° l‰ð=^ºÏ)°ËD«{–VDË. #½`»¨Úá°Ê8¼ ‹rÞ¹!Ò@› Æ…ÁJÈÞ¹FšÍhPd)5øÎØ+¹¤7§.hÞ1–+÷YÕI ÕJ§‘¸¼°†Ú”*aWò €zHåe7U© ³M͌ϸiƨ~ÕÚ§½ÚÔhÝýáÑ~<ÅÄ¥ÓK‚Œsç) lã§i•‡mPÍ´J ÕøñĆ8°ë^ÃØ¨{óú—v >Kìk¸ 35ª¹ÿzFÜpj±ÏÙºQ˜ á3…åüέøüæ‹_“†Ø­nY—š7º>¬‚~YžQA· Ö7cx…~¥! C‡¼î¼n—@„ §CÉÎÂ,Lت٥_ó™d@!ÚèÜc( "½„¸æìééA7íŠÕÍõK¶’ÒÌ3ááæ´X’§Ù´ó8ð5ªëñäés&`~ÏǵQAÛw دóý6üòDšùx·Í¿3–¬RšÌÝãGÁʰ¾oÅ?Ä'µgd¦§gÁV“´ôLxAßÓ3²ž¦Á$Œvßž¯ÀDTtTÏ·ŒÆo¥/9£¨ý¼‘%Âæë¿Wb ?çápŠû ‹ºáàèäîQÝÁÁɶ\9kkëâåâ«ë͹ wÏ…ýõ׸Â7 ¼è¸5õÚ éË2n/gÖoÙéݪ•‘L¡â“3Mrçxæ~H{ÒÒµZ>ÉÈÌÊÈÈ‚÷t˜‘ $w¡†ªwûU¥s"G€#Ààp £+§k¶rü0h…JNàpôØÀñ à‘ñâ(/G€#P\€hÃÚÊnΰ‹´±áÁGq©îÇ«‚€ÍÒåød°²å+={Œ¿Ñü’¦'öªÔ/G€#PôüúÛŸ6%Ë–*cgWÙùųT¶<ý²÷“ÜÖ°8ÅM½6ý¥åL­6ë%MCðQO8åßv)ú1€{À(|öÿöל™3­K”.]¶‚MÉ2VÖ%t:íKÚ72ô^Þ¾ûÿªÖU9û*¶œÒ×Kœ.üþ‰[äp^iJÛ–úÆ—½oçþ¿c´¢­ž=ÁÕ-ü†!/oºhúÀÐ5Í}{³×àmñùèCÈ’ÞóÙ/Ý£Rø±˜)A±¢z0º$Ì[†Rzø ‘Ôç‘»c,ÐbKìîÁrMÊ€K½•ÎÇl›Òœ‰[ªÇ¤ì3X•™/»©j•ËJéBð9ûRqŽAàÅóTÐû²÷Üÿ—w\{µëNØÂsâñ2¦ ¤ï1¯†ŸÀ˜‰Á{ÂC൮Óïãó1þðíà·ï¸aÄÆG’¨#'…à&&&¦®‡ñÏb›÷Ô0~cvzOâ9qn_w£°&'Z xÝú~²r¨ñOA©ªó¬{ë} …,a[7D ¬9Уª<[bØüÀc=—î ßlºì&«ÕPVÒSà>g[(Î` æÿJ´Eb„ØVxCâ|ûFî3«>ŽCqÃÁŠÆVšgOÂûË›¶°Éìø0ýŠÿv c+‡¸1—!sȆÝÇ͉˜Ñ¦Èru©{+>šj‹>Z{L‰N ÎÄûø·s1í˜^Ö›”e†Ç”l^è`®v ”^Iè™}ýzšv5/攲„xz¸ °¨•Ý\µÊêõ(­pJ1Dà‹Ï×ñnÚ‹–øF; N ÏÓÔ++™áïEƒÀýûàK+ã&Llìåe‰¸çC<”ý$ËátŽo¹k6,òÐfeÂwÚYzü»ÝÚµ¬Ct™–\Ÿ¯/O-wãÂGEÇ‚gÔÚ->»Cö¸ã¹2¨•Býƒ÷Cn蚀mñ¾ƒ([ôÛgC&¥E 43¥.5¢Ž¡¶„hâ3ÌÍÛ£óÙÄÁçC<„ôË5çÁ¼µ°;É76—¡#üö® â$?Ó—îc€# f)ð“Þ ãü„›Kmrìë}Gèà)ˆ0›¯½áîÁâªðÛè»ûëÃâ,ˆàûðôŸ»r%‘ÍäžäÂC3Ú²ÉôÜדŽÞ*Ó ‹A€i¸L—Ý}ÐÊÝc<#câàÙá£ôÒ|µ*ùe¥Ï… ©Yßx&!Ý{ôܹû'Ë#ÀÌhχ„¢JŸIó8AÄqà8XÒà9¸Ûâxgi¢Ë ¯_G•vÓ¯n+o0b¾SÆü*º'xrcM7MénR¿Px Ÿ‰g—’)°Œ‚/ÜW!l,E,|€Nº„þäÂCs–’|úN¨å7ÚxaE’Æï×áZ`¼™X­ì°…bÛwƒ;U«Æcàœ¼ì² sÕj¾pJŸ RóÞ½ö¹·|SªT©Á{>€_Þ7ò´r¼à˜pLr×4 Ú „ ¬¬]E!ò äòÑyô=>ªìÚúwO©In¬í[{g÷È“ïÖÊѵk)³ÞY d»ÐŒ ÜŠ.‰Go& 7nÿ4߯®ÕêÌúc*3lA‡<¾³ð¹¦”p:G€#Pdø¯>˦ým—JN…¿í"ë'å}&O³ªâ8p,oðœýœK‹[Ma½SÇÒµÆ02bÿþ´ UoÈì.Wdój¤Û~ð–žíð‘ÍÃúŽÄ7ðƒ#Ààä'ÒžPªì'ùý.Ç„·¼´3{>p³!,àÒ޲0êýÛY‡`³ÅÍoZÚ6ÐÐרÌVè-×Þ='ÔIz@vìfreªWÍû߬l/éÉ$‡giÚsC¿}¨?e¬WàFª^·W.º¾bÊò³¿áº8ŽE€ïù` Á’õ{ÎñÊiPÛóñâÁ<×/ƒ¤cúƪµ››´ëáˆW.ÔüPwl×ûGy}æµã¨îþQÝßï]èÛå5aêÂ'Û(‘N¥DàÜ7ðoʹãùÜUT9ÓÄE#Ií»ÒÊÇ7ïÙO­ß9´gÏÈýk ÎHþÔî°ç§ÔÃk¶kÁ+êg1:¼ççk.Ũ>¸+Ü!À÷|äå¾–Ëòyóm@å9$ã}=&$rjKMeÿÚ³îPK Vر2üsýñëãG™];Ìy5’IU_ñe–ˆÈ)¨Ò¼søìµkT¹¨Ó™‚Q¿Æ#ƒ;„†~ûéRÀ4¦\ï²u}?àÂÒ ÷­úÊë#0DÅùÁàp þœjNïk9?ÇÍ|PÛó¡¿€«¯8µM— ¯Ñ]ssU'_¿"‰ùD=ôµ²‰ieM¦Í‹»!ùƆ]z7SßßZ½Ù@rjÿï‡æ^ ˜ÖÑ´&žÃàpò€ßóÁïÝÍß»s|ò‚îùÐÀï&ÑK[zµVwö"Ç~ú²ß>4w›_!¸½ýh2%Fl¿@‰”B K4×òoKöì[¾‡ ôw4Áï8åc·©ƒƒ‰©èÄ„'s8Ë`{>ä}#O+Ç Ž Ç$wmÀæ9}ÎGVV¦µµ¶øâl²éT@˶ƒÀ0Ä+N-gGª{E®×8ÞêÈï·Q"㜢™GuúX·’&„£IŸAŸtk;h*Ò›ê]ç7Ô|¬«.ç1Lwì¹Â ~ÞÌTtbZ09×þÁñƒ#ÀxU¨WÇ ÓIþ´d;èá §Ê~RÞgò4LJ·œ¶MÃvøgeììŸ?›x\ÚÕ=ËùQŽ»êŸZ4ÅLèöCSýÔmÛ¦œ,©lú³b±yÎGvÅãùŽ@ñF€>çcv‰Re ø€ç|¤?Æžó!ï'yšÕ!Çã»6`•••+.ðûðÎÒEÜ-À ßÌQÄuÀÍs^{4DKÛ%íiŠÔ7ÊûIžVŽމåm@í9EÖí$¯ì4HÓöÔÀ/»ªo5-2ǸaŽGàµC€?çƒU¹ùï,pŽOîÚ€¦a{\vÉḚ̂¶)ÁT\ú1/Ë.EÓCñe—¢Á[弊à²Ë,ºìRÚ6|”(U–-»ÈûIžf5Ïqà8ä® ¨=çãUìM LAdÂkóÑÌ/f¬Ø“¾pÇ‹À ´‰ŸÿïógCV=ëÿÉÓ^KR_Ñ¢óbq8¹D€?çƒÇïï9ùÛ4õÚô—æòðRO©¹ýa¹¢C[æpò6óamS²´­=L{Àä<ÏÀ¨ŸdvrwÏÇe9n¼ «=ùÑm˜Õq'ùn|âýÛ±÷®Ý¾wñƽð«wÃ.ß?såþ¹î_¾õP {oùÁàp(|Ïkù{¿ËurÃÞ?ðݧRÇËg>$(x‚#ðZ!À÷|°êæó‡‚k¯øžK®t|c}7—M}j~÷àVè†3ávâh–N—©e/‚dê.]»nÔ½BŒbE‡Þôµ&Ä$gØüS‚bÍêa²±»,äT±V˜'ø>?Ôs¨ÄbßT,Zh‚³âƒF‰dÔîhsujiÃYÚ»ÅÒ0Ù5b© ÉsaÃ(ï øž†¿_ç8äo°‚¸0ÅïæÒï¼ Àùxö×_ù¨ÍBUOŸ¤Úû¯d¯áïTÜáòübÝ·âîž¿{;î.ü€YèsrÄî2ƒ¬<¾çox}çšY=oØ‚S¾‹¥çn}¿;¾rˆ[îô€”ç„ï¨3Ç÷Ìñɵ.øŠ"ÍµÃø¨w…ò÷‚-VÖürQîØÝ_ßòëqë¡hÈ›æ\8S0"Ú,ñ9bß(ï'yZ9vpL8&–·K÷|h{v¬wØ$ïˆñ-#nÝ>±=èêÏ–u–¯…Ð'JÌ5v…Ÿ;¤Y:½gÊæ—“ …€†øøÂÔŸ›·? aK‡‚r¥æb‡GŽâ{>\ü~ã¿mÀ†íe•â8é»ìF×§N£¼_~íö‹6–²tš‡¿†ÝÐZY[ë´RR£Ñ>N©X¾Be˯í¿.*õF“ÊõœÊ:w|~ïäÝË¿[eÄÆ¥ÖÌ‚]Yð†‡N§‹‹{ë?íTÕf¥gùÕ÷É8§šI§<ž³©DZš[FºcFzFζ-*WÌ$$C›ñþŸ» U·oÿ®D…zêòæ¨0ÆïSCz/€9m×øÄo4»¿të;ºsðŸqÐ5›“WÏ‹5¥ÇsÂ`£À¤ ù!:–´7P{>ä[F¼ç,9ӲòKö´ÌxN˜C£¥o¦-­-J#CÔþ!½×2U[ÓOO!WÐÏ?Š17â!< 1¨™CQ¡Ø¶ƒ…mØŽ$4'¶£ˆ®¹L¡ ]|;’~߇ 1 eVL+1ãJ1É’ö|Às>”ý¤¼ÏäiŽo9m6ËJبܭEÊ ®¶Xèg+>¸ y×oÿ Ù>¤ØÝßïIʉ·Ð€kìb_õÂ÷uj‰-?'jŠ?ozÚ3pRÞ7ò´r¼à˜pLr×0¤€ÃÌœc€µHÀÌÇÕ‹šë5hŒbùq/ö²Cýáÿ>HѤߎNnW¥îˆ‡ÉÑÓ'ÍÊÈ"8ç‘¥«íVaõ¢É ~Órf8ëT¯v?åéÎ;jÔI{úìú¥KÊý:" Ã¡½õŽþñbf4Y>.Q°Á‚tžþ÷@Xžp™ó],ÁP".‚ÞâÐrFo ;:ûõ´xÿ§ó²)°œ%›Þfõ˜r ÷|°Ižºc¦ûÿ¾ìƘusˆ‹Û˜úÚ½k¸çY+zeËQ /[‹aÚ²µÈÄ;]oMùÃéÅ Ÿ‰ð…p±q¡Ã&pOµù)݆åʼnrê‰cu;®“-âÀÊ‹çZ˜üÓϬÈ5³ýLÆJ¨By£]÷^DÅñ€=éiÏ™g9½·ãü7ÞLµöÛ¸wI IDAT.%Y6Ä/ðs«?™­ì®\y³UM˜ùذԠ'’sB\òÛ_Q ªOïÂs>¼[µRjJüûÝÚ5ëÜ»¤;ôó²ÕÛç &ë2Ò*V,k•n½|öø*†ªŠÑ’ßv‘d=y}ǶL©ªË̘6~Fç˜Ú~ùýÖ›o&ן㇘r®èéð„< 6…½OÜŽ@±Eà ýU[úÛ.Åßvßý6è'™ó¬ÏäiŽo9m–îù ¿Ãf>þºU*++öƒfàff&¾Anf&|–ý3ôïÌô¦¶h¨v7°XSήä±#?³}ÇŽ€}0íqü«io5©ß´‰{xh̽G¤ŠªpΉöveZ5ò`r«V®2yÒ4ݶsçÿŸ½ë€ªØú³©ô*RRÁDЧÏò>²”л…Д*ð)*M¨ JÑ'U¥I“‚>z'$YH|¶÷DŒ )› !@ÊöïÌÝÍݽw7w7H6çþî/™;sfæÏ=÷Ì9çδì1ÌyZX@<›u>Dcãp^Ën>â€88Ë>èõb>àS[8Ø×.Z­fÂÐ. kP`WXކzÀת¥jC©Æ0êŸSS>t Ë.½_"$@œ#>uHçg;†×®_¿yëGêÖop“åºõo½ÿõùʯ¾Xש÷ßÜJ‰!ˆ@õFb>üjÕ‡ù|í"”“lž‡ùˆò€k< u/ø–Öüµ‹Z«…ôÿu'¨‹>ÝÁ¡p®\·ù«M[@ùpVäÀ'µ°ÁÛ±ƒß‚æ ãÆŽ5zäˆQ]Ï•y×Ñ{Õ}´Qýºu`mŽJ9@ÿ˜9w~û.m©C”‹‡œ‘ Ïýëõ ¨dx²×ù``À¼Ö‚ ¦“Šó¬ó¡ñöõ+)*„oÊôZš¶}›ŸN¥áŠph½›Ãß giuzµÆøöäq`ó(QsÆ µ|Ø£`/?++«×Ðü«µ›µkÔüïÅ?«#;ê×þéû:ÏL vb{Ma>"€ ’0èu K‹ïrë|ØÊI¾ÌÄ4{w ˆƒtàb>@óà~Úæé|òé²0Ò´Ÿ/—$ªë(s軄•_˜¼$¬JŸ#$=Ù¼BࣱqÓì¾Pߧͳ§yoÛŸp8/(^WÚúɆwïÞr–8–GDÀlc>Ää¤=ù‰ù pÄq°ÇÞMZ=耾ë”ê´jH÷éíøAÍÊQEýão#‡¿:tȰRñ©§ži÷ÄßÃþ†>ö”Zk<{îDhÛo^òóóS¶\½xE6fHCƒ—ףĿaãÖ—êu¹cð=þ¿á¢îܹÓö17ªÇ¾.m3DÀƒÈȾzö ]SÀÛןÇd#_Nb1A¨øp¤ÔæQjÖëË•)¥%ÅÑ'–[¬"B[ÕÎÉ#y·ëù¶êÔ«g§øU¤¸¢èV¤;X@j¦•M ˜­ºD('ù2ÓŒ9ÄA:Ðu>|Ìq:­ÒŸ/Yç£â‚ÇÁ:BâŸ)nP§E‰šÜ/&EEÞujkaão™÷‚÷„…!Ç©u>D)3aka&æ ˆ€Ç#pøÌ÷ïÏ_àåãW»žiØ·ÂFN2˜ÌÄ4â€<à,xžb%üôÕ/ïõ«3¥ËÝ™½ï~0ðîŠ× >tÿƒ˜b{šÇÃí*¶Ž ‰€Ṁ¨œ´'?1ŸÁ…8 öx@ötç‘€_g©$ËG¥Š'{–ígèêgìÐêÄ£”hŒÅjc±ùo©†.Okš};¯žMÑòQ©· ‰#Ufù€µMýj×—¤V]™Œ:^œÛayv‹ÄAÈR×ù¨²b¢ÜŽ5oÑì‘GiØ´i£¦M?Ò¤Y³&-š7 hÙ$$ ñc· iTzï¯ré`D¨à:ì¦Û›¿b>âã<¸˜J[åZ>ÀæQ¬!÷K ÷KŒ÷K÷K Åj¢ÖÁ"bô(¾sõÄrúÕÿ@ˇ ø¨!`̇pžÊn=æ#îâóaŠìæôÖí!B&°žræfpÆŽxtɘGWþ³Å†i-vÌl¹w^«ï¶8ô~Ëó[ÄÏmîwÍ´•Äa'-y¡‹Õùú.•ĺ’‹¥.â5±HêèPëÝJÉ`Áš‚€jÇ3ÇNØŸëhÔŽY®®JrTÝrÍ]-AîYXšjÓlî®w_¨Dn—q16²‘þ4ËIL³÷â€8¸Â>¥Ewᑆ¯u}|ýYZ•~Q’l©R…ü颫Âv½³dº#ѰÎÀýÕu:ãW®+BŽÉ*"v­ãÜ„´¹p!uq—øÐ퟽L 9(/FCJ^ë©fâNÑg‹ÂKiËÔ”ûGÚ¾$!-¾£Ü¿#…¼ÞÁŠ{mp°ÏB‘]ú,;›2½£í:>ÖÜÙ"£ÜºÝ•øíÊHö¬qY©ÛÖÚ˭íwµ¢÷V[Z1 ý¼}…r’/31ø 8Ë>ì]žÕd?G}÷îÝÂÂÂÒÒÒŠ>Á¤~ââ „VG·¡a‡Ñ(3ŒÑë>×öû)÷¨[ )m4°~ÝZSÆ z ÝÄF€jÇbªy,°¨ Áƒx¯p§ûÓiÄÈq©¤C¤ýšnn‘5þ9™¢z=ؼ–`ÊŃ}¢_n“äËIL³û‚8 ®ñ€P_(oß¾]\\Ü´iS??û"¦ ]±§|è¸=ðà`6P;ö§’Ätï^õõƒ£Çê.LѶÅ××û%Ý5¿Ñý £Þ,éþb…FÅMø~§$¢?;7½!à y÷G²Ïœ´¹ ¯¹éæùÉXZìÅ% £”ï¡8ÒnÒêíÃ,Ò Fìi'»qeRVEl Ü»1p;”Hõ²ÎІ¸wmô!ÓîÙöÖúj…€ÀÊUeêÉŒè ¶† ¸×ËBGŬ¡œIxŒÑÞºëÀxûC7Rf6Á‘=¯|¾ÃÊa]Ãí-räCG %£ö' g=QíØªœº`hNe*z=•êâ{°·‹PN:;ÏÃòˆ!òŸÄ×ù(¼sçÑfúøø °ã¬ëç#ÎYÎÖƒÏ5pÆ¿ÛißÈ“¾?áÛæ˜oË#¾ øú†³"­@]káWö‹¹]ŒF6Ð<ôcJ¦×KÏ“†ë~˜~çù£Ùê_¾¼:YõŸ¸º#ÆÕÿò{t¤å§.¥è¹=!í\BÚ²‘‹éøyn΋ÇâÍ¡Ùk¶’Å´LôÁؘäm®|ôïë÷ \éÙkFÅDt¼ì¯oœNˤ.Ž%ŸmBûd&µ}$Yï~7¡3œ¥ˆo™k ÉÎA‚‹ôš¯J1–ª„rŽAþ¹x’€_ˆÌ†!ýÖ¾>&Œ¶$ù¿ÝÜ"# ŸÄs,ø ô"ï,•£.9 ×ù`˜¹ö-ÖEÜó€—EƒrÏ‹N¯÷òö2®Û¹h†·mÚ"$¤eHÐíC¿ïxurËð úí‚|ž O’gÉó­^èýïŠ7$*[ô qpq vÀ‚¥°^û6†w¶‘¢6z?»,ð¿íã®|ðbð¨ O_&_®¸7yž(©™JUhL]ˆMü=7ŸV+Õ¸Y¦éh=u§:thÒ¿gÎÚAÓÊ[2÷n º ›íE.XBÞí²Œ,±LCͤ‚Mè“ Ò—´3Ñ]Ø|×ꪹEÑÞZúã„Éj@†Ê–³D†df Ë%0ŒQÖ¶&#ñ]šˆYl‰zîÐ>üLª£¨U··Èõ <>[i´lRÜÎð1Lÿ‰»² æHÁ\ þ å$æ#&Èá»ë|Pm€ ‘¨È mFzVNfΕôìÿý–KJ u%>×RrîÊÒW’³¹D‘KþC§PvZÉXí_ËŸ;£WgÚïŒqC+é!ÂB= gúïÿxm~Ó8öТ/ýó–v@èôÏÒbW•t6~òUý…SБv ¼-L]à&” ¾ÁJAsVO —FÀÅRªñ Çä¬{ë¸,^­¦€—$Ül0pjÁƒ¶›X×Ä'eQ#$²Ëc;·Ûû«RZ五‰â|ÊþWF޲u$956' ã: ,œÇ#îå/¡îÆ æ¾ ©è¹xl£Œøîp^ÝýcñÞ$YñíQC£‰ñŸüøVA¿ý¯Þê§¼ÑZi+sM×ÚO]ž[\TÌGŽÛíYÂÌø°…?ŒWo‘ü[:mñŸ¤$÷ö=ýÉ?¿úWÏó~Ô]Ïÿ³´,:ÕA»—‚ÃI"ó¶˜Êä©~gögê·[OòÎárn‰µ|ë˜m²~s^v“ƒ‘ã:c¶QïßxÌú*”öVr?°`µB¼$ÔÁWf·à¾v©àAI¶ß¾šiVJ‹qêñY»“t‹äÜŽ•{Xb> ¡œ¬Èœë"žÈâ1ô™¦Ú‡¸Ùã‡ÿü§èþ}{Wùù,ä>0‰ÛºqÇæ=Æ’Â/¿H]³úo\çË“qOèõä×Ëé´5Û¶2׎ŸýdÂýÕ=Ì}h=y²%m[ØÑpЄR¥ÊQª®ää_½þWîM’}M§Wß&ÅJ1jdêÛ¥7ÔZRxû¶Önìˆ4!¹€Æ^Lãü,1°,A‡ASÉÎ!^¬ wÅòa‰ùˆµ+uÇ„e“u"‘£&)ß5-ÕÐ:<÷sÚ ïà…ÒîÒÎdÄr=¡‘(6WM¬z+mXªú!Ða:÷Ã⇀Igj6€ ŽÁëgX‚„ÌÃ!®paLàX.R-²nÁ3=ÁQh¶ÛîÆ|0(Ý;ßEšˆ'ãØÛå5H±T–õî¸r¹<8$D£Ñˆ>Ç û÷ÃNÑ]º4iÒD´€%sßÉŸG¿ÒÑ.N“©¥µvmúˆÅÀÒÔ{éŽ ßt~í—Ëééï/]}:~¥©¬/z<óûì{«{Ù6przý¥m%ÄÌI#$bÙ/§&·!ääžCµ_ê)òí_ü‘Ôí»öYhŒÚïÝ#½Ç÷(XŸPøs¿g!ÿƒgžØrÜWÉËßx5kÝŠf?ß°ÖUõ]m­Ó` þFÜŽ@ʪQÊAr§ëÄûŽ×í­< ‚Gè®¶ Í{»xûÕªgÞÛ…®‡ÄzÄ—™˜FLœå/¶‚ÕÅLKù™žu)‚g1;vìxèàÁ«ùùŽŠ ð¥+øSôPˆsy|þi†¶Ô«‰÷gMÉ"æ‚ -š˜¾k"4)¤C"L`á ÅHÚÜ¥†õ°ÉOŸ9ÖerkwØ9†ö‹<´c…åübWCñ_ y@ñf#oÀYTRT¨.(..Íà ÌF1:Lß><ÿœÐ£'V¶úå™å!ù0§ùrÓÂwb‚˜Hç/†‹å.æÖ9åÒ–/¢€%@úõë÷í·ßfffŠ–a™àv0 º®wŽY¡x}iÊõÒw®êbɽk?û1Ý÷«Àë €!i颤ÁÞñÉWo¶† ­ßœ5ÆTˆßmÇé¼m ów¶‚“+¹[zðònZ 6¾ÙÃ1¼Š ðÉ®˜SÆ#ÐÑsKªKîÁ_¡œäËLL#>ÈÎò€Ý˜0VÀwª¢»Ô°a×_~yïÞ½·nÝ-fÊ4À y°] Œ@>yeVÈ€íáÙ¶¥Òóå¶:n› _¬ÀÀæ®eþq ~@»–reàžîÿÙÚýÜ©1n-·-w¹oZÙÝÝ”‘"€Œù`L€1 ˆCeð€—P_c@ƒe” у]‚UP80pàÀ ˆƒÌ¦ëƒæQ ½ûÓý_ŽÝù÷’_‡}÷ÃåÛ¥…°©JÿØÄÞsÏZâ*B&¾;jÛ°¦oŸ4_ÉüòKš†e;¾ÿö|uk0dûöûQ}»ÑL””ˆ"€¸­š[çC`ÊL,ƒ˜ 8˰·í~tåCà 1e@°v>|¸ÿþ­[Sˆ½ã¹'C!ÔôdÖÑS÷––À2Å£×ÿòëwªïèz_ÜÖn›……nŸÞH]üÛ«ÍLÇcÏn´!ÿ÷ÄShfäü'v}Êå¡òá^©‹ÔD€! ãÖù0}pó?Lã¾¾Ènàˆù {&•3¿fÙ6rðF ÷¤¶£1))¹wï>Í›·°W†å÷îÚ–=—";|áÔÞÿu3'¢¨îéýûó®ßèÕöê›ÞºÕ¸Amè€8‰‡®ÿy‡&†pá# h„M>Ì2—weDA‰ ˆ€›0Ç|ܺB9É—™˜F|œå»1œB ~<öØc]»v…˜ñËæÜ'žhwøðÑÿ]ºôˆß‹õ/¿‘Yû‡Û$µQú]ÿë>~ú‚£‡íõ´¡Hµs÷®°ÖŽIñ¯Ò¥Wa·ëÃÍR‡‘£-በ5N`Ì„•áïGšˆ-Ä|”Ùà{ƒÏPX~–N/wõôª#}@ù°×ПZ6"u|È•¿ˆZG¼Àc£1–h ÕE¯²7.ÌGJEÀ&æCTNÚ“Ÿ˜/|§ &ˆ Ÿ¼ hˆ€¾æíí£×ÒÍ\¢žkóì³tß“jtüøkfÛÇE;œ{½ô× Õzrë.),,ÐN5¼“o§¿×~´i£ì¼[Ù7.g^ýoúÕŸ/å>ÝΊ."Š'f"@FÎÕsgÏÂWµ°“ ,iõ:*ùrÓì}8 ®ñ¬óA~ì±%KøÐÓ–3è•Óûœôî|Böc²'ʂ˚”Õ=(óþ7œnlÔ†TQ©þÚr½€Ü.Ô–Ü¿ØhÿåÐÙ›þ·¿<·í‡§6$l:ã§ÖêœëƒbUD×î´lpïi¥S›Z¡m-VH«D Ö»tÇQ<ª»ÆDLÜŸë©Ì“´ÔfG\©M? 'ÈÑP¥\ãÖù0øq@*Î^ ³ŽÌ¢ÈÒRHéeÂÛ¶ mÒ2$èö¡ßw¼:¹exPývA>O§ɳäùV/ô®LåC­¿~ܸ‘§%…wï2/ÌãÍI“ú¤a}R¿.iX×XßÏI/Œrÿ¨XòÙÙ„48·æHÕ ¤ÃÆ/Ùzê6®¡³ ä®QÀZ5`×®ÓrƘ¸(m>9O9ÖI]ÁBåþYÑ/fÅ‹é¸(?Ð'ÈÅ»ÏÖùДÐu>„r’/31ø 8ËŽÖùpñ‘µ®–‘ž•“™s%=û¿å’’B]‰Ïµ”œ{§²tÇ•äl.Qä’ÿ¨ì6”¹ªD™³£ÃªL»å]hìsgå’/<Ò{ÁðF%¥:U¹ .˜"R|¿D}ÿF齿ŠïßÖÁ~3Ö‡ðsÞ²•ê÷ðÀ öÉoð ×ä"ßþ:ª.ö­°ƒòÐ/Wí]r­–=j˜_mPíøhgØ’„ù.åq¬=&±—o!G¡0vôz7rB¡â#c©X…û9{ï˜$Àu>Ÿã"ÄPÈ^B}rËßÅceÄw‡óêî‹÷&ÉŠomLŒÿ|äÇ· úÝ(èõV?å¾âmæ?4ƒ[>Ýh<òÔo.lþvõÚ µN›˜rîÔé#û¿‹ûö»]6^˜Ò¢Âû÷ àƒ~Ø€W¼¢¹òö2v.Øm­6ÑùeL$=™#†Îÿ/}7²ë'‹'ò<&ŠU‘Ìîm·¼?Žê›‰1£X»&:´•o¦¦M—ø}.kÅÒKǸ†\é†((˜Y%P¦žÈˆîbk3Xvˆd¯¹4•YA8^ò°œHfÒÒK"—“3©ÖNÊ Ñ'¨ŠáÇÖùpv>‡å…ïÄ1ò€+1 …¢¨¨HŠ `otX=nëÆ›÷K ¿ü"uÍêKP·q/OÆ=_Àþz9]ŒTæªÑ3ž:’2=Ìt±ïúõv”±Úæ¼ß•w†öm?nHŸÑÃ^™2~ôÌ·&Y{aîܹsÿn‘Vë¥ÑÒí³%‘ ήîuf¨æ8ŒÔÅ£½¶%¤žMH]B6šô’ìŒÐ·SϾ·`Lô¡ó âé‘t>qÀ˜A!`ô¶[Þfrî aÒi_Û0'|ýþ$¨K>ÝtàÈ^³•,†v·$ë?ÿÆ*ÔZÙ¾„ëÕ¶‘±ïš¯²ŽACÒ»!,XÕ ¶í0ðœ„zôRçFr-,a[Tä7(4DÞ ˆGö"Š$+–R!@ˆð -öð31æƒÝœ»#îåWb>rss:{Ë•+´:-ì8 û¾ ž˜1têe™N­/ñ¹øâkŸ$3 l/'N$óp¼bâ+bêÆÑIfG̤£\]Èè N„Ë…½h6ä|áŸó¶AO.þø³fÞkÁøî5½ÞË% z{£sú‡R•Áæ‘ %Ä&¦çäs·†Ù!ýó¼ã©™¤žË9 ¦¡ŽËs•Í÷†íá,SJ",!3».#K,:Jë©ó9-$xЄÞÙÙ|s mÅ<뵺jî˜ݰêþ¨Nd¨$›YÂ20“IlÚšŒÄ™œIÏPn‘œâØ©YgR¬E0±OÄö ©ü³0æçëÂù:bâ.Lì®óáø¹ïÖ­Ûúöíà ¤N ʇ‘žt[ã矂çÄ«‰÷gF}‘¬ø>¸`HÑÄowåã)"ò'ù\ê~™¯wùÊ jé»Þh\Ù s|´jV_Î4RNÀg¿ZÃs½tÅ7nÖöó-*Uƒ¦¤¨èÖ‚ÂÂ"Ð}ŠàGqQáÝüÔŸžˆ|îq‘ž8È ´x’bèùÔ# Pô§&ý€UàKäÈQ“âÁMLâ3º½ÍImÇå4éà’*7‹Î ˆ^rÐmÑò˜Y­ãDøÎsŠél=/å"xÐö³ƒÉþ |k\êöõÙédZ$} Ùq1ind'Qzv‰˜K[ž 93ÀˆRy8™¸ÎÃæ»ì ?1˜¸‹¼ÔË-“Q]F&ci):lh?pàÀ}ûöed8ŠÄ· ¨œæAÏ1+¯/M¹^úÎU],¹wcíg?¦û~8°L†Y5­0y„MO‰–k&ÓG¿ e¥íŠÕVÍêoŽ?}ðô…øƒ§÷¹€†\Ð(zÒ >ëƒzǵiož –W¾¬¶%æBMS¿™¸,cÒ NL)Ê™¦Z‡ç|N¥á6ñ"´•ŒX®K4ÄÄæ*´!½¶ÂßÕùt.â‡EÅD~D8+Hd—Þ–€SC÷¢Û@ÐR[“Ï…ÕÏKkKH—%¤lK„ˆÊ«¥]q)œÚ’R-K@zמ»¾Xh)¯­ËÁÇñ­·}öš ¤Pä~`"€H@à(l,·ð}//Ÿ: 1ííû^YËIF†ÉLL#ÈÎò€‹ë|ܼy3!!aðàÁ4¸Ï=ª7Of=uoi ¸ 3F¯ÿå×ïTß9BMáå {õ¶!ýLÑ¥ý~]¹†wôµ’̇ÌÑ¿=%ÁòaCÜÆ “pèØ·‡|wøàÞ„øý »_é+î¶¶×CÌGF×ù`7çèˆCeð€õWÁú}œÍƒ¥¥H“Ó§OCÌx^îݵÃ/—2Ï¥ÈþÛàTó¿¢ü nú IDAT{µ˜·?ãZ”O¯/uÜ– Õ70Ù]DH™ƒKy—¨N2ݪ(ê»i÷1‘ê‚,ðÂÀ)ÈÆ D@lO¶m?þu|…r’/31ø 8Ë®Ä|„„„ 0 \Í6Å=|øèÿ.]zÄïÅú—ßȬýÃm’Ú(ý®ÿu?}ÁÑÇözÚP¤Ú¹{WXk.W€õÐçâ pX‚Æ|0”*cî‹4k2¶^ ¯Áø-:‹”§Q.—×­[·Ü’òòË:E>Ó¾­±ßííœ{÷ö×¹7ì¥úÃ!sÈà˜»w ûu—Ç­ûÎr©aD@$l·RM)]PQ('ù2Óˆò€³<àḃDpåÊ(9¸S½ÚgŠ»†{ìñB“yÿ¤kb°Ké`1D@0óÁGûâP<À­óa­×WÆ>©ï3ß}´8~ùÀØIÝ+ƒ>ÒDDÀ½°•Ïayá;1AL„<àÃWÐk:î}z=‰ÚÙž4 "€Ø ðxxk!&ó¡ÓjX>_Nb1A¨¸²Î‡ðù|è9𵋔u>œêg5Yçé1aaD(\ç橸® 0 âÀž–ÊÀ¡rc>‡ž¶œA¯œnÜç¤w粓=yT|XÖì ¬îA™÷¿á,_` D@ óÁÀ® ?ÒDl+=æ#¼m›Ð°Ð!!-C‚nú}Ç«“[†ÕoäóTy:<HžoõB睊|Àºïx"ˆ@ D€¾0æCè§ÇØÄÄ]<àÊ:NÍ=2Ò³r2s®¤gÿï·\RR¨+ñ¹–’sïT–œÍ%Š\òþðÚ°hz‡Ue{»Øü´îBæ*§º„…Dˆ®óÁ€B[âà^pe‰-[<¶QF|w8¯îþ±xo’¬øö¨¡ÑÆÄøÏG~|« ß‚þWoõSÞè+ xÉ0ë%OÅ a."€ N €ë|¸kŽ‹tÐ^"ä.^—®¢?íàU(Ï<óŒ”uÆt:Ð]mwoݨ+ñ~}PǯÖÿÆB|×ùr׆U‡üöëåtmUðÒö3´ìÐêˆZk,Ñ‹ÕÆbóßR ÝVW«3~;¯žm[b»íÚ–Á߈"à¡p12vÚ““˜Ïn>â€88Ë^š’"x¼´êbøËÒåJ’ÜÜÜC‡ݺu«Ü’ZÖ`$F#<1cèÔË2Z_â;rñÅ×>If.Ø^®\"Ö8ÿ˪Il¿9³cæ¨"Í[4{äÑG6mÚ¨i“Æ4iÖ¬I‹æMZ6 hüX`ã°àÆmC•Þû˼„ 5 ‡:ÚF6òå$¦…ïÄ1‘Î.Æ|tëÖíÀùùùŽE’N ʇQo4 F½Áøù§ÚR¯&ÞŸ5%‹˜ &´hbú®‰Ž‰®*füöŠŽ#3V8Ò;¸š^ÿëæ›7®ßT]½•¥¼y9ëæ3nþðÛ_©¿ÞºxéÖOé·~½R`Ðk­`"€ c>¸×ß4O/ºøô5ú—KK9š5k»ÚîÛ·/##ÃAyp»  z=wŽY¡x}iÊõÒw®êbɽk?û1Ý÷«ÀëP»$_9‹ éûÊDòëeA©"eë)gigìˆG—Œytå?[l˜ÖbÇÌ–{çµúna‹Cï·<0¿EüÜæ~×6 +; ñO[ÜmP¤ù\¬pö«¨>s‡ÒÙZÊÛ%˜´l¯{ÖÅ«#—¥• £¤vÆn+±rÐm¼ôÀPí˜dæØI 9޾ã*÷.ó pd‹ìt[»ås²Ý>8 2“:­ÚRNB ä$_fbñAp–\_çvµ6lØ®]» „on–£‡Ã@c>ÀìÁNPF ¡ÓfÑëiÈ…Xõð'å¼ìÌ?~%O=&VÐa :aEÀVB 0F#øz¸“èôFÐŽþwùw‡4ì]lýÖÖýÏ쿸udÆüÕÉöJ=ìüŽ¢%¥™z¡Teì“ ÓçE¹JeÛV$8fÛ™O_ ~ØÅö+eÂènÓsFsì g,IR@ciu›ù²B­&/›~²ëª‹s"Ä©¸µÝò9Y¼®çâ: ;œ£#•Á^tÏF§×Ã_.-ñ€Mk÷ìÙ3|øðÆÛ«Ò´q}Ð< ´wºÿ˱;ÿ^òë°ï~¸|»´Þúýc{Ï=«ÝDü{ü)ŌѦm®˜¡˜øŠ _Å@Љ…¼Ñ(ƒÎPMHo„“jp:èDÐÝàÀp¢Ì©˜u_F``Û,U.G/W¡Ÿ8’ä^å~©’Î’žò@÷µ„”ª&ªo–ì ÿhÿ|‹6ó_³wµ×¹»gÎ$s¶½j…ÜÝîçdˆù°‘|9‰iá»1AL¤ó€‹17oÞLHH´zQ»‹ƒ1 .).ê=Ôd9 S½Aí¹ó#:¹äÑLÓ5˜}j¿ ,Ü4TaªuA²3:£w› ÉËL”¹òpÐ*-ƒb|»‹… ©Ñ“(’¨nDµPy`øñ‹œæjNFp(5xXfÀ\b÷j›v-ý·ô„Ö ºg2oJ ÅL½5÷ÿ?`”i'3¢»Øjp–"ÙkÇ”±Ÿ€—XGUßL3ì)V;+ßcÏæA9ÄÝí–ÏÉ•‚,Æ|0X+cî‹4k2¶`ùà<š`󠥯|œ>}b>?î½»v€wü¹Ùá §öþû¯›9EuOïÏØŸwýFר¶WoÜüóÖ­Æ jÛ!6=…Æ•Ò#eºÙåÒw}ÙKÚ®^ÂÜ.ð¹ u¸pvPzæo»ùÎÆ³7ÿ5oËŸ ¶^Ýžèß:bÆüÍ¢kÙéÍæ7¨óɧ&œöÑ:Å4ûb˜M[4“‘±¾Œ@ySõìµÛÈ"°Š}hþ …d¥óQtú†æÓé8‡™Íç 8o¶–gg„@±iMÝ´!ÈrCÛdçÐÁ]Í!òNÁ]zsvª3µ7W´ 3{mn{ëvËú¿ˆ(™ Š ªÌ*®¸˜N˜sl-<;x<\ƒl;1ÿÌœ„sšÙÏš—l+XÿÎ^»!qÀè˜Ç¥ÜÜ®Sœì¸g’®šb>X´‡@Nòe&¦…ïÄ1qÌ®Ä|„„„ 0b>?ÁMš49|øèÿ.]zÄïÅú—ßȬýÃm’Ú(ý®ÿu?}ÁÑÇözÚP¤Ú¹{WXk{–[Ç-”bN@ó 6tAdþÖ›c»Ê¶ÏjµcvÀ–YÁÞi³zzÛOßzªÔ£³¿pjÅKÌGàFæ;§æ)fpÌ„ÞÜ+_4“ëøÉ%Ô_^f ‡7A,'Íåíá­`rˆÐ´Ù§£`6 ˜°Zs1q‚¦b&µ´6@?(„j¦€2R,Õú­áœÿÞÒ.ô?|äëܼ9äÕ¡X)ÑA™­âÉIÊž£åälZ.zvlá}H¿3Tyå·lÅK´¸É¸5}mFâLcðêGêT^Ȉ»Ûu†“Ëp¹%0æƒA„ö Ä¡2x€‹ù0Û$J°+W®@ÉÁê ˆÐ>SÜ5Ü{`šÌûçÈd—$Ò©H1fö0@„÷ÅQ¯UëH‘ºLí¸SDnQD¯Ó¸Òõm·Û <5KyeÂÆãœD4“6Óºgì§Ÿ’eVšW©Ò™›6'ZÎ>Aª윹ÐNÂ]:¾s­)àC”/ gìÜÁ½ºrwÇ›Œ.⃠ìÔÌ9ñ]#B¤•çv©Mãñp|m4uäñƒ¾qAB>mÏDåÌI ,œYp½Ú­' ú'1c>P•1÷Eš5[c>$>·–b“ú>óÝG‹ã—ŒÔÝÙº,±¥J•*G©º’“ÿGv¾N§¦ÖÐ6ŠHØ<îÓäÜ+!Þ§15Ç|ŒQôÜÊ>U˜O?»åAh& ÅÍ4‘ï8gUϳÓÛÛß¼^ÈcÞ";‡å%*1¾v‚*К„[ŒöAˆHÀ‡è #æs1(0¨…Dnr»ñAQ›J†é HgWâ×4¢˜>èLù4îƒpsÀòÒ‰úÑ€ ,§zøÚzKP‘m±W?ý´ÍÎaÀÀಱûÛ­'Ûv¾Üßósz׿ôˆ›Üd/ôlñ¶øÕª é·Gw=zt¹Of•*°i÷±—zF »$uû®}üüÀgÇíøDÛ b5)Ñø †–ddå]þõ¿«f—} Ñê…1@„À·Nç:Yûe„…ªOαsÿù`áûµë7ñöñ÷õ¯ãåíë_»žœd£a2Óˆò€³< {¦+Õ3@Oñ«U‡ÁçIʇ¨¸›ûeÆÍ‚ûz½\0½Î!!ÄØ´a-¾æA1AåC>ÌDl€w/v)ûêÊörµûÍ”_ÿºþu@Äz­º áƒ*xrÓì¶"ˆƒk<ÊÇÀ4f'ôÛ£»xŒå£"R•Š ‡uê‹§||À)õë4xD¯Ó1åƒ/'1Íî/â€8¸Æ®|íR}e ö@‰è´¥PR«.¿èÅ—âÅÇ2È'ÒyÀ•u>$>ºX @ê‹®óÁî~“‚8T< ¯]ª¯Âž#ˆ@ÍD@§¡ßÞã\Vú\±B¬¤ó@å®óQ3eŽ@<\çƒÝÊʘû"ÍšŒ-Æ|xŒÄ ˆ€;À˜œÇKŸÇ#VÎb…1î”VH @<Œù`·íˆCeð€E_ãV‘º«mu‘/»¶þKJW÷ìÙ÷íQ·¬8-¥5,ƒ Õˆù€EÆ`>W«n#¡œ„|‹ÌÄ4âƒ<à,øXt:ÏÓ<ØÐärº›Ú Q/:v |8¸Š—D Æ"1°Î>Ìÿ,rÓˆ ò@Exc>j¬PÅ#ˆ€#0æãœcÀòÒy†‹ù€…ƒ¹Ó”vôx²ÓÂ÷b‚˜¸Æ5n¡ýÞœ3ÂvsNªLϽÿÂîŒ%I ñòŒ>²$,díæÇl=óéÈ`q‚Žzå ÃÜ%a‹¡†u«â¼jzý ‡ ‰I” ³¢dŃb-àg»”ùmYZIZ6ýd×UæD{ò°rÌ ýë|04*ã{¤Y“±õÌ$Zu1üeiþƒçyi¡ýÃ¥1ªv.ÙþÑþX¹¹vpÌHKÚ%ŠX ¨*…W• éózWrR¡ªH·•»gÎ"s¶¾X"•TW§)©¨Ó”Xd#_NbZøî@LéòLÇìV±¦K@åéÁ)©º‘µ»øa§ÖxÙ'lüÖâ‘ fJÐÑÊ=`’PÆÅ|˜d#_NbZøî@Lé<à¥.¹O¶V]Yú¡<è Q~´‡ÅÚaItjãD`–˜(\Dí²‚j«Þ s‚žÃ¢ÑAî4MRÍÅÝÓ\Äë•`SQî‰Ï0½Qv/V/ìñj¹£€¨g'›8Ðá”¶cCvú†éÌb7lC61)¯bíá Æl]¼vìjN÷­r‡VS }‚Èø+”“|™‰iÄyÀY¨q1 Gl4—ôÎ[± l.H” ;AQ©Ò™‰›ZÜ!LƒÃI¢ÙÛ" è¸9î­c·.ç¹OØÁyñm`FuGÀ¯º<,ÅÅCa#÷”™ë@ÏSÄ%Ò—OÛ3Q9kR‚¸Q"‘Ê)†1 Wwùø‘âÉçˆù(³y°tå<ȇê?ý6}úl8åO°úÎÖ–°ü<}!ˉ^ʧ]ØFcs¸ÆÒ ò˜·ÈÎa`£^¢ wå#"vËHbžeFÙ¬…PNs#×Ï 7×µØÌEÆóF›ÄCm†Âǽxx ¢¼J"¢{q½rØ.¢ÑE–ƒÚZYÈÀóÒÚ6ÄR¶%Â9xا+ÚìVõôṡ­mX(3óayÄy@öl·± |ýk[4£¢GÍ—U?½i÷±—zFJ짃؎§ÂYˆ¨5z‰= ,•؉÷å° ‡€¸ŠÀñÄÿ|ðþ‡~þuüë4¨]¿©A¯göQ¾œÄ4Cq@\ãóaD a0%â<Ø —,™®Ê«ê\O™° CM«ó ľWóö ´OTÔĘ‹œb~ç¼-•!ä&MøwP|ÍË>y˜=Á¶ª…Æ|°û±ˆCeð€‡Ç|8fÌÔñçÍÛ5Úæë|¬‡ïhèRîx ˆŒùÀyåÍûÛ·· ŠWD@¤#€{»0¬*cî‹4k2¶51æCºÜÁ’ˆ"PcÀ˜œ÷£}¢òx FÇ|ÔX©ŠGrÀ˜Ú'‡ÊàšóQ®èÁˆ"P“À˜œ÷WÞ¼±Å˜š,]qìˆ"PóÁªŒ¹/Ò¬ÉØbÌG9¢/#ˆ@ÍDc>pÞö‰ÊãÙ }'³g 䋯_-HÏx½³Ç¬púÙÞ›0.½^«×ªah:u‰FS¬Qé4%:m©V«6è´L°n^1ÞFª5ºš)sqÔˆ@ Gàxâ°Âiíz||kûÖªãåíçk@s;ÌÁÁä$¦äŠð€{¢ÔÅ÷GËÓå1¢§äþíÐÇ{ìñv-CÚ5hùÄ'çÖíc¿–¼Zt34ï­oÞ_×jœµôÙ3d"€¸=73Qs{»°½myr’/31ø 8Ëóñxó‚7{zÁ9{`íYýjµêÚcRçãæ',l}hqØÑBà ¨ÕÜ-Ò ‰ ˆ€‡!€1ì†b|âà^ðêk&;Øp ÎÊAó0¨o .?ùB§Ôõ-®ßÖªþÒd_+ͺT:ÞãuGæüÀamòÁQݹӴ'gÚ’î3wV`wðäeƒÇìQ•õD±†n:ªLS1²Î kxB^µ7@ < lÉØ¾ûšdJF¬ ŸiYyçö­•Þa{©h>óvƒ 夳ó<,"ðy F¬óÁ×<¨É=þc†Fo0êtrÛX´*³]Ÿ¶×–©œÓ?¨l‘3zß…ÓÜK’vP¿c§èôœ«B°}ù€N$8f+®€îtk* q^Ó¤ ÔŒí·äÚcû2¦M[² qÀâ}ÖÇ‹ª)ÂFÅ;,,W¹9¸ÎÃ×½ó]¤‰x2ðð˜¤PóØ›âóÒÜë:½ÑxÛxÕÐ<È_²Úukoø5_˜ ±ª¾Y¶xß<¹¹LpÌKÚQE4¹KmO¤&™(¤;ÝÙ-d+Ò%¬[½p7¯ªòÓÂ&RÙ>4$°<Î/ÙÝvþö19€1h«@[Eåñ€‡Ç|€iÜUq~Ï mö·›huÿ¾òô‘Ý?9ªù*i¹¿ç~wú»ÑÆñ•GieÚ©Ìèh¹£"à@‘wçNð›Ðƒš‘YÎ:Y´ùi&Ñ#,1‘Í&©‡{Ev¤Wx“TeÂXF–³xC+5AS£f²ø¿Æ" ΫÀQË“œucR[²l¦ÜäF჌Ê|+æLydÿ̸÷ùÎAvEeâ̱¦KŒiË»'ÁºQS5[úâ~h÷c>ô8_GÜË5"æ£ë[y©¿ÜbšÇ+ó®wé3 بm÷ÞÆ7Ž}~Ü¢yéAòàx#ØŽsö)NÃ9»ÿ‰x¢8°®Íl.g_,h-6?Ëš ìÔ-43†}€Ï¥?ø\¬Ž´%c=¶p”“Í{Tà¦9œÄ)7ŠÔÌ0rê­¨¼  ¡­$ z:"¼ œIB§/Ía<–“:Cqz*§ì:> îÊgf€&mV|¡|κmäCÊ–Ñép ì(kh˰A£vé°’•™18ﯼy?b[#b>t£|’lcÿÔé8\@dAÀGqmôY°yätóvNó€ú™ùåÄ•*Öpv˜_rõ§,7O ?y248JNΤ)‰*7+44ÐZ¸*U™l¶ ”$Òè ›¥‚ž$'åömª˜t†ôˆ²©iMÕ(ÊåUŠF¨-Ϙll3Öe&ÎæŒm×ï:³¤ß9":¬ ÈrjçX9%Œ+³åô¾ÉJ“·ùÉ'ĉ"I‘vŠÈ;‰XW¢9²Ü sVVX™–˜%ï$‡ŠùJ°Z‹Wí(fz:åòª=8åØÄrÔbgŨ1N 5Þìqo¾ËvЖó—@BÌ'ï[d#_NbZøî@Lé<àù1ƒFMóÏi¦LŸ<ýíéï¾3sö»ïÅÎYô¿ ûÓ¿OøïÇwfýÕùù¶ï¬Ë¶Õ?쇛B\èÈQчaÚ—bfS&ìdi&æòhP^0P l.‹£<ôÓÝB3•*ÑŸæ¼ÀN]ɺq¤k¥ÀNF6(0Œ$nÞmªÎ"T¡ð©%ñ™´0TÌMÜ•oUÑÑ(œÄCjÕòx•Ï`Â4䘹×ÄŠ) ÔHKª’Îä´ iEÓì°©nɽjAÒ†¾ƒ‡ëoüǘÎ×÷ò€Oiñ½ZuꃾȲ4﹫öÉ¡ý"á´7 Ð6–Ÿ¾ šGÞµ-Ú5|fÈ?±WØ6_>U±%`,Äë± a#vÅ+"8eûŒW{Ä‘°èþÌò^˜…‰\‰è姉ÍOkêÁryÛ¤‡\è:‰ˆÝ2bìØò\…^³³# 0Ù¨èK C:Ò[„­À_5 q^ˆîµ|öØÁë(9€#päWS­.Ësz˜Ùêf+û8Ü!î¿Qk" ¥Ä;\mw_‡˜Zµèµ¥°¼ºPNòe&¦ägy€îíÂPƒ'×ǯ¤§{ÐÞ.Ä_óȾV°ó«Ä_ölÑÀÇR¥TíŒ#ÆAKx @ª'ÎÿðáûÖª×È×¼·‹¯m9ÉÄd&¦ägy€Æ|j ³À_ËÓU­…‹=cv÷&›¾8"ªy¸H«!ˆ€§ ÀÖù(åövÊI¾ÌÄ4âƒ<à,x~̇IúǦØ„6Uð"€Ô(0æƒÝn÷úû‘&âéÅék2F YºFIÐ? ΃ïm©QÃÇÁ"ˆ€dÜ:2½¶L6òå$¦…ïÄ1‘Î5b;³D°‹®óÁ Á9:âP<1 ×CÌÇ]øËÒvŸE¼€ ˆ@ˆxD IDATA@+–ÅÃÙÊI¾ÌÄ´ð=‚˜ &Žy FÇ|Ô)ŠEÀ˜\eÌ}‘fMÆb>îÑ_SÆÙ?`1?<D¨áȈV] òÆ|˜e#_NbZøî@Lé<€15\ÄâðD@Œù`¸ }q¨ ð¢z ø5‹¸˜."€ ˆ€U̇@Nòe&¦…ïÄ1q̲çzŒ)ããëoÑ<¦¿ÖiôèÑÕKôlÚ}쥞"˨þU§tØÃ–h`'9ÑH=?R¬&EC±ÆXª%%ZƒVgüö½ú6CÆN«`ow!@W8ý`‘¯ÝZuÔª×Øh4ÊdÔ!Í—“˜fh#ˆƒk<à%ÔMÜõW:aÁ Û…6|¢M£'Ú4nÖ¤]XÓG›7nÕªQH@ã6 jüxH3õ½¿ªHo±ˆ"PE 1°·-Ú•áïGšˆ­‡Ç|´©wéã±Í–oö¯IÍÖNn¶~Z³M3šÅÍmuøƒV'? 8¾¤Õ¡÷[~ÛÂÿ:GZéXµóŸƒå°Ã'œÿL€mÆ%iKzÌÜ™ç¸ ”1“í1xì•£Ò°;.k=/a¬Ê¢WE35Vv-yùà% ËOëAA—–§'ˆKÁDZ·°”]¤óª„ÛÁ¸ŽréšdÚ¢X>X¸Ôn÷¬XËŠç;I¨èö"ósz׿ôˆ›ÜjÂ:ଅazß"?´ZYQ©±°ÈPx_瞦ð¾îòoWˆÁù/Œ©l‘3jŸâwÆ’¤²—qÅÅ`è”-Œòì°3è»\üH[²0±ÿ¢}Нb‚ƒb¶œútdx9Rv•÷žp\Å%–ݱcôáds¯òT™$甤$)órÛ†´âµè^|ˆóª˜Æ ¥3@m!YÎØ~K@®=¶ç³œ…KEÕëFµÒs¯Zò’“ûwŒÒ¯J*ƒë|0`ÑV8¸—<<æÃǧã˜ë?ÍÒä­ó.Ù¡:Ô®nɆº÷㼯m2ezQ¯×ú8­{¨v.‰ [´/Vn–xA1#-iwJÁˆØ-#ÚžHåæ—¢Gh¨=…C´¸»2ƒÚf©˜±G©P„MAL/ UÒYÒCè®vN…p7¯æå§‡³nIe{g¸X«ŒáÓODGWÊ“U>®ó!eþŠeÐÎáxẋNW [C˜iyí­2¯Û¾ÀÏ2ƒoQhûñ¤VTÓða¤Î?B;¾y:ùhxP'Û4ìßùé´ãÛš7kÒâ‘& IÃÄ,i¥‘”SûR¶ŒÈ\83ކw”e~@‡MÔ!SÑc WrÙì8°C¼J«y§f÷'ÔAóõ0KCκÜHŽrtúÆ)e㉰TI™Í7e‹vªÙ£—CÚääÐÑ]Í!òŽAѽrsá§ùma¡Ž=LlÑë`ñï(R3Ãs…€g‰ˆðª@iœ‘rj*¼éË; îÊggtè1øã2ŸKκíä‡,÷õ°;ìgÓ``Ç®¡™yÔ‹—òP}.ósz׿ôˆ›Ü  2N£ f'(OúT›ë°‚ I§'Y'çýp¦èÖMÿÝK ó~<ûDô¥Ÿ+>Z~~Á'Éó?<;76Å(3EÀH^f¾HØ(~0[‰ƒbÆ÷â^Ï6â5Îtý`¹éFçf9㯱‘[~˸˜“läËIL ߈ b" 棞QVYÚ-l!bôÖ‚éÃh$aÝßz¶KÝ&uKÿJ¬Ýè‘ ç:ÿq÷qΠÖõZ£N#Óh4Ä(â|ˆÙ2,~Ujn4DíQûœVvëúÔlNÜ!­ŠÔT¬§¤äå²x@úÂÈMs¿ZÀùw’óÒ³äåÎÏ@¨­¥b¯9µ]æÕ ˜¯)s®œfâºy6±A1L-‹;vRôÙMW<ämŽù(“|9‰iá»1AL¤ó€‡Ç|£ÆH²”*b¨—“ºÕxûÜÝÌý¤$-;åk…âg–tz­ÆHƒ?ÀFÂ-b(í1*úðBÞ\0/!LÐAa„ÆgÐ#/a3‹•ƒÌ̸o¸Låžx“Û…+)ÁÛÂÜœ1\ji#à—ív¹dè"nöFbŠx"'âÖ•éIëÛÇÄ=FxrjI|f׈`šÎMÜ•Oh‰ØáU‰µ…Å œ30AåÐ/›ÜЛ¾naÜýÑóÁn,Æ( •Áóa«×»_’<<Š2£6zÀ¯M}ÿ†ê·GŸ)ózÄW›m4ø4ÿÛ™º@¯óÒ© zA& ¾Åu¢§ò©\Tç7s éHç…ó,™4¤ƒyÐ#æ-¢š û€ÈMn®$ÙHçô´ý˜Öì‘éºeŸyÆé¸ŠÄ¾CpGܪEÑn—KúæI˜Å” áÂ%v11AZ†¡6•LÓ4Î<‘kë Ð^.b‡WÅ8AˆxX¬Aä9Ì]™6³ñFB ü!û èsÅáF·%OcÚî¾jŽù`û^ÙÊIœã ߈ b"`o—7à™õñõc¨Azúk=foâ¨ù#MfÍ?¯×èÕZƒ¾ÔhÔèÖÝçÏ¿n[ª”¨uªã%DðTN–ííÒ°V½Fà·5ïíR&'ù2ÓŒÄA:xẋáVŽK:ÿkE×uŸwÿêË^6÷q&ÜÔa¼„ ž€Æ|à<^ú<±r+Ù }'CÔÞ¾~žV3,åJG´|” @<°|,ú`‘݆¾~uýüëxùøùøùÛÈI¾ÌÄ4{w ˆƒtðbOT ÷Í‹åéòH‚ƒBD@: …KŠi̇PNòe&¦ägyÀ»e›çáÑ‚¸n£AÏËÈ¿?ûì³ÒѪPòÇ_3Û>ææ%½! µ* û€ ,åµÄs‰Þ`ðð­U§]{Å|ðå$¦ÙMA×xÀ‹êk2¢×ià/K?àç›CD Ê! #u1HEO6òå$¦…ïÄ1‘Ξ¾ÎG•iØ!D¨à:ì>UÆH±õ¢z ø5ïs1\D@ƒž‹ù(âb>r’/31ø 8˦ÏKùz( D@†··‹éÀù:q@*Î^B}­æëwuï¸kÎq¤ˆ" Mi1”¤1Ö¶a¡Ìtv·åCäšó:ÇòÓ·;?ßöuÙ¨HÇX ¨9`̻ןã"ÄPÈó¡…ïÈ8=TÆÒ5A¸X4¼k7Z´køÌ¨Ô„ûŽcD$# 3èaõóa’|9‰iá»1AL¤ó€ìùžàiôöñåP£Ç´‘îvLó`i’!eC)ÕëyeO žQKŸõ篼¬ú›¾8Â4g;¿x³ÐKk šûe»ÊIáš=³sÜ•¹JÚÇ=gš÷7çå%ŒfJjÃRÈšÚ‚?¾à\e,]ãPŽiæŸ7”Žàc`±ò)+wX‘Æ»"µ¢¹Š³åÅ:Q™yšÒ" oàfeB9É—™˜F|œåùx¼iÖ¢1Íà\:¼pJëÃFލóòÔöIæ>ºiA4Ø<~Ù?òèä&Ç6LxGߨøˆµ(3bÿ¼°ºÃÂÜ)_ïM9 çÊçfpú+d¬+ üúäŠAö©Y•OåÔaáPSs_È\¸:ÅAßð"ÀG€ê¾3rF1^Ý›2$_î²ÇfpIÀÀB<ó6guîŸoͨ¬¢Ê6\-¡!aÓ"‡B€1'ŒW@*ƒẊ•^Ï€ö¨¿Å™wC@óÐÜ»ÙoÁ£ª)~š+üÞ?²™Æç¯å†[ÆûÅ4²]ò‘·ý|ÿE O°#æ ›R$ׯPÁ €0¢ÌÍ« ¬\cÈû8.lÑÞyQæ aI»Š‚R¡ ]b^ëBN)ò]¥QÕëq1ܺÏÖ¶aœã:;ÇÅòÈ3Bððu>ŒF:ÛqêfŠfÁñ}ûÝ9úÇã·ÙûY„¬4£¹ÖçæŠŒv}ÚÞ_•éuÇ…$‰˜—v*³s4_‚Eôã)ªãzéÐsȸ=L4ƒ…y–É“gºÔ¡ç³²’÷&- çÇ äŠÃ$gݸ!Ö6m^¿.¤î5„Ó{(ÙWÌ2‘*£ thù”¦+YÖj-ç7Ê·í˜5qI¸`¡ª‡€WimØÌÁ½>±0ªetùÉçHy@°\NÎ¥Y;qDX”HÕÃJ¬G¸ÎC¥2æ¾H³&cëá1U>^{±}¿>ƒº½qvËÁk ¬ù毼}Q{¿ Ø<@ó Éj×­øÖк-ùÂGèö°Ê „ì¬Ëää¨hÕa;yÿäÞä¯G7­Ü™Ç2Yá´Ç)º½7®."›öäIþÎ7gœì²’æœÜû^TÄ{'gõ'¡“¡Ì¬>}J4ÐQ’eæK™<#ùäT9¼NÆÑ .¥óõˆŒ…³ ]yÇ·“Ó(‘ ©a䤚#¹ …18Àx!a]›YæF¡oŽј‰?Kw9€Û¢]’Œ€¯Ú²ÿ^Ã/ç^ä¥$òAÄÑ(’8ç8þÚRv@ªü†ÊíIåà†B0æçëÂù:bâ.L<<æƒmÕûÍÁ‹q‡/î>{û‘Ž_™p㹘­ yÜY™Ë4Üßs¿;ýÝÿ-ï—St I3U¿GhˆicÝÐÉó• ã{åäZBQ!'/?ƒä|1nHÇžC:.<ÿ‡2ŸpÓñÃ$4Êi$T·Ül±£P˜€Òº”rçÎÌci70ðñ¬|˜˜¦$+{Œb“TÓœ•À¥+̆±ŽQ¢fâ:‡Eª."¼*ì¬à^s–°Ž=g|‘y~M ùÄæÌù\"(‡“€Ž]È»ùa§Ö”íö ªå`Ì»#hŸ@*ƒ<<æÃh4 dx¿È¡}"bzFtîòÊð9Š;úm}YÝ·‚}~œi½·L,ªí̾6ÔÉrþ<ÿ“ªC‡˜B@,R4?7K(Q;/ãŒôœ!¼\~mÝZ§±WJEr^Úù,yÇ(H«ò Ÿ`~Òؽ•¼—J…;f¯˜ÿòªÄÎp’|råä0c¼gò3¦íÜ”óǦTî9dĦr"Õn´“]";ñ0‹ȧ»æ¸Hí%Bðð˜=(Fã®#©ñÇÒN¦ýûô÷ß0g:ƒQ]Ÿ<ùew°yôÙ:©¸®±XÍÌÆ…]ÀˆQ/´øÂÓ>GÞˆé`ªcŠÂã¬&k»NÎo6‚pYÜ»Á*§Ü.P²+‹¹4GÙ¤åØ|‚µK'¦§>Þ›Aç©Vžß­2ÏYiÅàa+âÞÍŒ°cåv T¯–Ù- ¸'®"ŸjCÈQ؈8‹MµkE\",”§Wíc>Øý©Œ¹/Ò¬ÉØzżt2¸OÄÀž/v{¡OçôTÉ€lˆd/­Kún£šMkR>‰š AÌÝ±ç ²hï×e®“Ðp%µ(t¾hªY#alñÞ×ð]ŒiÖØ‘~ŒørV¸9‡³lGtîŹf¬Q€|³¿fœ¢Ç×–m,’›RÎXÈ9thS»4$0“ÆB9HgœPšÜ4Ö˜g®ÁœÓGØ1 eLTs€W-¼ìñ1éHmöØÌf°ÀŸV<œ’|þq“Ï…•¥6B‹xÕ„”mˆ¤}BÝŽJ“w²ª¢‹18_Î×wa"{¡ïd†&H¶N™'­pšp⇮k´FÐ-Ô:Rª1@â~©ˆž¡Sß_½ní¡+,’°¸”..䦤mjç“6Šˆ›h#Dp+§’~„Nýë4ðõ¯çç_ÇËÇÏÇ×ÏFN²][Ûë"nÈ>=®v½F–§Ë­òÃ$–•ûõŽÝ³¬mjaùðû=@©Xb>ê6l&”“0ÿ³ÈLL#>ÈÎò€ìù^ÜÞ.Þ¾z½i¢?m„çìí"Ü•så¢ýÇÅýA?:JÄZÅèÓEooHO!÷˜]m+"!Ýcù¨H°."€< Êb>jAÌG]óû~[ËIÖ/&318 8Ë^ì‰*¹WØYž®‡ñ¼c›ˆ"€T!èA–ýl9̓/'1-|w &ˆ‰tý£×Dx¨¼¼}8ë"=¦¢åƒÃ-Œð/"PÓ`–¿ZõàƒûɼXÌ_Nbšqâ€8¸Æ>Å÷ êÔoÌ4–®i‚Fâx³³­÷Ï’X ‹!ˆ@5A uknÉxó¡.¹ʇQ¯“ùø å$_fbñAp–hÌ‡ÅæÁô´|0ზjòÊÀn"nFÀóÆóëRØÈIÖ¤ks>¬‹¸!xYô5ÀÂòt¹ùQ®¦ällj—DÀƒàDìÍ‹ïÃ÷€&Ùs;LSL.JqêÒ1Á˜N̈Å%n\áT¬ÌC*‰À©dºÂ)Æ| }‚±'âP8x õ”*) °Sˆ"€Ð>!|?"&îÂÄóc>~ʸٻ}8CÇ–6 þïﺎáY{öþ:où>ÞhÐÞùpå‡3ÇÙˆ*´|TPvcuD š"€1ìÆá\q¨<ðü˜ކ¬ÃqêÛ•{ú‘¶¥"U~ä¯çÿæ·vÅlÞp9çVx› j*%±Ûˆ"PI`̇»æ¸Hí%Bðª×¨™åÑå§+éy~ðdÙÉÐîý’’c‡Ú÷Ӯݪ}G´9¶ ×h‰Z£ó’y;Ù±´Oz éh>?¹àdmñâ@sV\ïìˆk“#^srÈ›læØÉ®—'àC+ÚpuMJ9­UÆÓQN“•q¹Vݲöä$æ3ˆÄÁYðüu> =c‹W†¿÷ÆŒuãf¬ysîÚ)ó¾z}Ú².ýÆjt†Rµ¾¨¤Ôyá:yóÞäô|/ÊùÚRjÀޏ'D·ÃuüzBËÔ$¨;#÷u»&¿G’©ºìEtîyþ|ùÚvå?•1æçëÂù:bâ.L¼Ø#ì‘664½Þ¤|#ÑŒàgÑé‰Fg¤§Ö ÖJ5º+¹W FX2Éê(w %(]ng H§)½¤³}Àòž…@~Ü'qaîef× ÃÍi{\d/‘¿:"#9­\ˆP(·îC/Àu>bùéìÜË3èÄAÈ,æCf oh§ÓÉøž¤™òª…Î`ÔêŒZ=U;tùYÆýŸßÛ¾øöæ…õάo_œn,º[±ÁÒyä'+fu¢Fi~š¼ã{ éÄfu» Ób»¨#&×d È\q„ä|1~H§iv«âD€!—v*³sg[㜠9`Hà=k?KPDì½[zö!ãb>dFžläËIL³÷â€8¸Æ> p5éÁO{Œ\C¬’LmÔìAOÃ5¥úÄ7ú?~ hᕟn(ºßäö½›ŸÞh2ã_¾šJ8}ýAKw^zbjšÈÉ Y™t" ÚçyéOÆÓyçfþ …ŒŸµkóŠá4¼ÕRXBƒ¾h=+é‹SѳH¯½¡&:ªc‘Ž@X   :â=+.-–ϽŽñ þzðø ùÀÕí§Ã^ɪ›oó!*'íÉOÌg÷q@ìñÄ|PÍ£øÞmøkyºª®±÷}²’縩¢=ÅnU9ÀK&%DTÐqŽë’N¬œ¶=ªgó«#:·ŽÛY~Ø©€f5Ê`þg¡1œ´‘“|™‰iÄyÀYð*¾ËÙ<¸OBXºÉ‰]ÕèAí0À‡-j ü5}¼ïÞ’eü MXç7î}õ×ú¤õÒªK2‘HЉbAaÄ,úó|}Rè}—J,xèŠo„fæ¡ýC*bXŽC¼$¼o‰7¢î¿]Ö:¼:"3ÙÃCŽLë|ðd#_NbZøî@L騭¡szóiÄÄ]< ûGïI€&èku4a°N5zôè*+D;¶i÷±—zFŠ^‚}[ÞùèëÒR Äúúz7mÜ ké yrß%õ†…~§·=Ó£Þ¼M§Ÿõ÷úç’¿ o!RT¢%ˆ™ˆ"@¸°f|^̸Üç;VÚR7 èÓÉ?.Zô‘Ÿ]ÿº uM½ÆÍe2ê†áËIL³›ƒ8 ®ñ€Iùðòò¶,ÆåaʇP|yÝÊ/]ó®!?»á-ê€õÅ~¹eðí5(t¼º¶´”GåCæ ÖÀ7º©Ëb®=¾òá_»ÌË›)|9‰iv³ÄÁ5¨16ÑÐ4ÀwÂǾ/O8õX÷-" nßdæŠÐ ïñ5¢8 D r€OvÅœ2•Û袎1Òý÷ë€X9˲úN¶Ø<˜þâñ–‰¢ -Âbˆ€‡!À,þµëûÁé_—~ïíc#'Ù]›óa]Ä yÀK¨¯y˜Áá ˆ"à¦u>èºÏVß e¦³s>,"Ôʉb-Âbˆ€‡!€1솢}q¨<¨‰1&(q8ˆ"P`ÌÚ'Ð>Qy<@c>ŒæMç!¨ÒoyÖ§¶.K%´|¸ VDª5`ùX ŸÚÖ®OÃ>¸˜/o9ÉÈd&¦ägyÀ‹ókÊŠè:§2–®ÖR; ˆ€;yh¤²‘Ûë[('ù2Óˆò€³< û¿Þÿ„UæÅ´ú̾5¼½'-2æ²BˇËÐaED Z#ÀY>–øú×­U·!Ø?¼¼|Ø:|9‰iv‹ÄÁ5ð*º{ °cqÝ,]­¥†hç·ŸÑÁ¹ù„æ‹C¥Ÿ%}´ëî¼­3¾º9q埯-½:x‘ò¥¹¢1@j,ê’{tìÔ6L„r’/31ø 8Ë,æƒ>]p0ýÅó, y4oA·'€½åJ4ÆâCQ©¡X iƒF –Uò˯‡2,‹ŠqyuHð'"P#8B-~µëÁò¦æ˜ˆ‡³’“ ׿|XqC0y[ø:‹GJ—?¯ÿ¥Rý™—÷gžòšJu-Ž<•J™—““ó{z·a6ˆ"€”!ÀÅ|¢{tßoœ×:;¯ÅòÈ3Žy F‰÷kx IDATÄ|œIËzµï?DŪÑHtzÒá¥7íXaS |ËìçùÁyVëññ+7Óýfñ@ª()Ÿ™Kf%ÍŒ0÷/í“Þ{C7­$¥Ãù»¦Ìø"“–ì÷§m#'?³|`ÌÚ'o •CˆùÐét€Ý¶=G…çöø£ù×o¥Où9TóPNÞ´7é8œ+{$ÎO·©³s€ Ÿµ+ÏÎE»Ù®Õ²K/Ô\ò|ݹ_ö^1&”ÀfÒÈ\ŽÕ?è|äƒ5)5GŒùÀ¹»ã¹;âS||ê5jfñeòÓž$^´:½1zX_þ À«ÕÓóª]åƒ]íù»¾9ßïƒøáA¬L«ás‡Ÿz#!eè[ìTà²tP͵Z⥇€ò‚‚DOIV}xA5<ˆo¢³p—C6‹ze8ãÞ¨È~d¯2ÏØA’½¤zã\«nËìÉIÌg!ˆƒ³<àe4 àê/2ÂÒÕ[`ˆõ^§¥ÊǬóÏ9ï<ÑÇj-QkÄêpš‚Ý3/íTfçNQ¼AÝÔ¹yóý'½gÇÑ„% 9+Žœ/ÞÚéÓïM.ß{h§ÞCÁ^Â+é –ýÎ8è'^B(ùɉ¤{T@PTILƒ/»cßsÜÈgNv)?nÊÚdQèòT™aQò çF&Œà”Ù1fÙÈ—“˜¾;ÄD:ø”ék …xèÁÜ.+Ï£Ò‚<àÔÁ—/ô,ÕÒÓ•#,@0÷ËÉU"È%ä…¹Çg‘Þ{C6-çüëß’óå7QßÎ;ðÆ«vE±|›^ØÔr¥X ä¥&Q )ïEt'«Rò—q©Sl–¿ké®°×âƒk¬u>b.Û™å$¦,ˆâàxrë|pOK{ž`Ñëõ0(ðAq{Æ8úíÁ£GŽ=uò(?\92ó!¡!)…¾9w •àAÇöäT<JC@y቎à4†€ÑäË= þÚ9@î=´sï·¿Ì<ÿM ]z¡¬dʧoÙzÖÜ(;u=.[]Ì­óÁ“|9‰iá»1ALþŸ½óŒ¢èð\(F)úKr©l? -t•ˆ4•*JA‘*]Z@¥”ÞI ¤!ÒA írÁFIBH»ö¿Ùݻ۫¹K.p¹{ëöfgÞ¼ùfnîí›·»¦&æCŸ-os3 Õnl¡qRR»„z>àï_›pJY>?“òq˜j"†‹Ë;žèq{™/Ê&Ähœˆñòx TF cÛ†œ[äó𠪌iÉ“ô:aŸØ#}{[öx®Ò`ÅOù‚LNšPYu¶s^;æCßè³M™ç|èÌ“x‹Lp Tg ÚtcÞí"à¬8þx­½Û%þ`ZÌ nwÿü‡õy°Ñ2R!¡Ž©œ|ûítÝç|—ˆDåÍÈáÊç|À/jwtÊJ.=2¼Ç1ꑼ(ê‹c„Dµ#™×u'‰$å€$uÁJJÙѧ 0TŸ ¼=—ÄòB>Œ!¢ì8Ôœz‡8B`!F­‹Æh¯¾ŠÖ'ádòïôÝ.ŽÌ»]Â+m¹w»ðæIþœ‰Çl"ä`ú¼2ÀÉåyØqpl“ÆÇ¦¸]Ƨ¸ªÆ%<›Ƈ2øÔ`&<ÀÓ"Àr¹Ü¥‰ûxõ’¢Zó$«;gâ1rÀ1`î`ÞíÂxaëŽ?„oµ•{>XjfÿEãÃldX ÆÀמo³ çƒkÌóa…Ó,ª„€š€2æ£óÑÀ¡N=eÌõ ³ù̽ÎÃüÈ Ç Às>Ô>ö'!$€(/)¢ðZVç7ýº¿›ÈÄ\&óapŽEχA4x Ø4ŒùÀktv€#‡šã€16=‰bã¨*Œù0÷Zó£ÿÃô1€1g&ô|Dƒ'€MÀ˜¶{ñº9ÔÜÀ˜›žD±qH T•Æ|àu¼é×ñÈÊ\VóapfBχA4x Ø4Œù¨¹ë]và |äà±Üún—{ð—=¶±Yeå>)ÿ~ô»]Ò[¥7H?Z-¶LÒo¡¤ç·ÒN_I:N¼dcmÇæ $Pu BçÆ¢ûª¹‘?Oâ±îo2A&¦AóœxÐ{G޳­'œ‚åÁÎ>eRæ5Q‚â2Å£R\N•(— *è›õè&ÿçìÙµ¸5ø„SU x€€5à<Žô9õÔQ>çƒ?Oâ1×s¼ßd‚LLÅÌ=ܬåÁ[ãlPu®Šì~ç/² æ…Uc›ü<á…Ýÿ{áèœR¿xyå 7V½pme“ã_Õw-1ðÚªWŽ%‘¨­ÊxÏùÐ3O27Ã`ºÆo2Ñý=E&˜Ð˜0=”ÓøãÚÔ»]`mÅûźlŽh>¨õæ0™\Ndr»_ÿ#sò¬Eü×ËUó¡z - ÿîÈÇaÕ`á…/ •¶÷˜ØÑÂêJÄòH Tõ|Ìùžmêøx>œêÔ­ïêÔš'•’霉Çà,¾HefêÔãNÜìø|e1vÑ$guLTø¢ HL^Þ•Ù™¬_dÞ¢)L",¯¨s¯XG!àta$ÇÄïQûZ”‰á]W&—ˆg‘0‰€ ì1¼ÛEwnäÏ“xŒ|p Tq °1ßÅq‡nÒ×Ój2Ån?üNd^u†-z;´Yí“õêÖsvrÎO½_’JÎŽ(ËËËÖŠùxô¸B»ŒÆçü¸qŸ¯É$ÝgÅO †óºíôZ¯«¡J„ƒ…™#–¬à^YN"Ú9eèéÍ«úxª«ÓC˜i¶ ä#Z#¯êÔ•#óú0µà†@ œ:1së;:9>窌ù`gØ* ÄbH hàÖ Š þµU4e’»¤ì†Æ.+$©,ûëIòˆ2=-1niè¡ã½*>q}t欨y©:§SWFt‹Šè¶ðúŒwÇ`ã6AΚ‘P$jèÏïT–‡–œX‰Â>3F¤ MÎ`œÊ-oÏHG=JÀ;²L£nc¼7FÕä„wøãPcÂñ@U!€1,µª­ëcYäfh @̇Úça“þ0>Æt¼:ºý%Øo®®¸µ¶¢ô ¥ÁX¥2jy˜·Kêå-ùɧsš{6Õ˜Õòóoù¹{@R^úÉ̪Ìw\]9B¿Ì¸mŒ£E´s'çVD’ôãNUJ5jÄ¢H ( 01ÜfhžÄtr@掺†ì2›™‚*ÊËnåÈäô9§uë)ó¼S¥åÁ<烱?Ìko°G.¬ª°e"''Ò ÷ðÈ…_ŒŒZ'öùhóçC»Å¿ðî~º‚x9tO«S‚uåL›1+ ÌŽæ#¢»z/!ÓÖGùyÄæUÀ¨XcUâ9$€8ŽNÎ*†æILg!ä`îàNÁfQ•´±€ÓŸ“ɤr9½¡eÛl”Z^!/—*$2…„{ð:6²Š’o.æ?d¬²€SÕ¼ô”`qgdþ¸Úò”ðcµ6L€p ®Sçç›Â‹Ð ½üyÙ€CÕÆ€íßíÒkèdÓgÉZd|œ[õEV´æM1¦7s"$`Þíb ž@"P×Íb!ùO_ ßžxúÚTWîþ^F ™òoÇ­®h,ŸÄ|À­¶lŠ¡yÓ‘ŽªÛ÷|Ty>µöe—*7 "$`”z>ŒâÁ“HÀlÿ9€„"°Wøœ¶çáú^5ð™T  çÃàœŠžƒhð°ièù°éîÅÆYÛ·U`F%¨mð9lUÿå CÝ1€žƒ3"z> ¢ÁHÀ¦  çæ»g0æÃ*º•@HÀ: `ÌÛ/xíŽ,;ÐóapÆCχA4x Ø4ô|Øt÷b㬂€=Å|(åïÝJY“~hÑÑm³=°Š@%°JóÁv‹e¯wQ&òdÇ€í{>ÊK‹/ç”HàQê i½¿6…ulU—”Þ¿÷ð‡Ç›GN—Éer¹¢C+w·ç_ÔšÑóa•¿¨¨qèù¨qÄXݰý˜‹Ù{¶}¹w‡–o‡7W88ÿrV¾x3))zP¿~ý·;u }+²m›…ëöÚýH@H è!€1,¼^G–¶ïùH¾|·O‡–ðÖÚÃñóZ¾ÑÐÕ¹NiÑŸˆ¯\}xûoÏ~Î~XPt,)部îZÏ}¯Ê1ìÍG,YOßmk|˘×m§×úÑBÝl:§è{ãR:êϬ[S€q¼óû%ÎPÔ gÓ¾ΰªßãú?ѳèùx¢¸±2»$`û1r¹zV¡ JJ÷ýòÛæŸÏÿ¼%/îWIÖ_îžÞÍ_ûìôHA³z?tb|âaØ'w'Þ­§Ç&XfÕ@ˆ°ÏúÆ̔)qyfJÃìöL ÙnŸçem|â4’œ 8ÀŒ¨Â@ LJ¢Å nOâÛa°rKžÀ˜–¦e¯wQ&òdÇ@Ý®MTßWþ±%¿ÄOU–L&£õ+½%•É%2EE…´ôq±C½úÏÆ/þ÷pœ¨×¤Ç%eOUG¬ Ôü¸yq~³â§+«öÑç{3UШèã3Hp€©jm>G'g•î†æILg!ä`î°ý˜™L !¥2¹þ‘ÊR©\*'™ÂyóœîÈë6¦AHÏ;9ùrðT{‡sD7f_œÁ_7—2Oãb.:Uy Õªº0å Ä…‡HΚ‘•7$ÓíŒ@^úÉÌðp•åÁµ^k ÑÁ6oñ”ˆn+Ïiãá§™( 옵Ó~|oóÁ޼^G–uY 6éó`›ž°<äÿþ-Ƚ)i(Q8HÞs>¸ö^Ú±Mßz¥×9>ø÷þC@{Ö5ÿ3u8O„btÕ<.* :Ïßɉ«´®a6_HfÅ'jÿ¨/USÈáÉÄ`àˆ ˜lçüÜ=´ LÓH`+çdz.I< qKIÚ™µ>»Gõ™š-¬4È©Aµâ´“Kc•žæ^Ûa~r@ºcÀöc>dRøOQçØOõ.}vÓ\ÙÝ—£Š.¥\¸z_QZ.¿_PúèÑ#Ýy;ÍLf›LÉ^‹ó`ÌÛyx½Ž,;8ãƒo¿Ôây°êŽ~Í6üvIêxéÁ#—QõCºË øT¦ê°‘¦0>‚{Dâ†vØ~^¾õ|’ºª=|ì6pèÏ÷yO ø}ÇÓÚÛ«yÃ,„‘Ò̰k˜&ÚBÚE29¹˜VÃmÆ3H€%<îôúèÌYÜèj?„Ñx#’û UãBuI‚C%k×vÁ0>µG²nîZœ‚1lçUçË"CÝ1 x5d€*ì870pøðáµk¶ˆÝ~øÈ ½:ï9v¡O×°¿þy +/-+N=Tç¿]UÔ)¯•ËðØõâÇe»wÆîÛ´@«xQq¹^˜ˆ%ºjT^ï÷E΄ÁŠŒM!9rqΜ¹r™Ìµ‰g=G§:uëƒÿCkždÌΙxŒp ˜;lÿ §îý5ö?@dDuÔ«W·q#—è¡aXLÚ¡C¤öNÑø°©ßlLȘß=½Ý!}®‘©î eúŽNŽÏ¹²Æ‡<£OHw¬ Ô¶óѨñ¶¯™ýËOóÀ·±{ÃÜu §Æ¯›Çü]×ò¨½‡Z"§L `ªÍYZD1æƒbÙõ~”‰ ¢ÁHÀ¦  çæ»gl?æÃ*0£H ÔNóÁö[M\û¢L{f‹žƒ3"z> ¢ÁHÀ¦  çæ»g0æÃ*º•@HÀÚ`ÌÛ#èŸ@51ÐóapÆCχA4x Ø4ô|Øt÷b㬂€}Å|””Uܸó÷Åw¯Ü¼{õÖ_Wn‰!Å*ú•@HÀ* `ÌÛ-5qí‹2í™­]x>â¤A¿î÷âk¯x?(|œ+¾'þ³0¤µ¿ø¯û’ YË—_zα¾î¼‡ž]&˜‚ìz>ì¡—±O—€]Ä|D÷ z©q£ó×DÀº‘‹Ó[zujûÊѤˡ­üßò;›~ýOwbíHÀ `ÌÛ)èŸ@51tß5g…³@•Ub} ‹KÊÊÄù©ä€«£B"}XøøAAñ›¯zŸ8{Õ¬*Î-ؾ»Æ®ñÚÊeÁ1¦Ò7‚ÕAåe0¨üí+GìÇZ¯SÖ’j꘤ßW+›ZÖïÂå©¢ÌüUƒ„ÉEœUy Í“˜Î"BÈÁÜ1`û1G’®&ÿž%p(ˆ\5•dçý ÇÿÞüïýGwÿ-ÿ}ß,çGèħÁ>©;ñþh=^7ÀÝä9 3"'K oï¨îr‡°ƒvÇé©$90ÇVÐÕ7oïOÙáݳw16´Öf‚äàqs}â¶Q5¡¢¢gXë7c>ØÞ­‰k_”iÏl9ãƒo³hÏ$µùsè›Þ®Ü¢Ç˜¡]***¦øsÖèÁÝGM]Ò¯[›£ [$],š¿û§Wü^‚ ÿÕ«ÝìeÛ¦íW½9.cþ(z‰IWdÖEg~­ŒêГȯ'gÍ2ƒ)B6.çA´‹¸Z9ÉoãÞsà*ÿšÌ]i½—‰Õˆ¥k†€Ÿ»Ž_!`ªjÑpbSkN¦ç§§ 5E0hHHt$)ÉÖ‡®dƒ…úûe’¢X f{Z'0æƒ%¯{ÍŠéȤúcÀöc>T3—óù³#\‹7'úí`éÔÿ•òžðñ²ïfOˆÖ{í_^~&Q^b {¿ß9'Òz5„z4•1&*)0õ+2½û"ò•i?fèYm@f¾žÀ íF{ƒ'C#s¿MX“™4ñ穜yÌšKcи‡E5ñÚÂTŸ ,ç/"=×Ì7kPö“91,皸öE™ö̶.Ûx[ùPMO qíùõÁƒ’ÿþu£×û%ûúnC|R×ðWŸÕ÷„¶”´¹ ²©r²ÇìGÕ_½‰ [UPyŸ›MH—Î?ËfV©ÃJ6M;Ìe÷„üâÎ¤Ž Ñ·´¡füÉ {¯=Ô›X1Ùë¹’3y™±—±mcÎ-2¡ýFÛô䉬ËD{TBox™ž½ie€çǶ¥öž¢O=kè<Œù`{¯õ‘ƒeÇ€Ç|°Ã…µ<þyPrKTòNì‚ï¿Û1jüˆûN\æû?ª;Ó Ý›‘¤³ªþãáma>Õ›¨QS²Ç¬Í.’±àkòí¡IäkÝøê*Žåmš€û !ᇾ¸€„´]u\…–§¦ò‹ÞthÇ)nÿ~´ŸrØ›!-ûÑhêós45úŽUŽjŒù`ûýÈ¡&Æ€íÇ|¨,Ûy%‘›–4iõÚónÎkæO }û£1ƒ;Iºa9û#`Ê:˜Fvè>°Ã¨”ŽëØ‹E½‰üIÚ»™h9S$®·¤¢[®>Ýù°w( ˆþPôe%Ïi0ã³Úàq§T#FÚ|FÝ m;ç¬5°ƒÆ³:ty@¼‘ÆJß¹ä$nÍ…Í +/Þ‡’ù+/º’u„,ž°Ö§ÿ 6….8&}Y‰ºŠÕx Æ|°ˆ-{½‹2‘';¸Ç«ƒ]£"2n`àðáÃkü›mÑ b·~'2H¯ÈÌÈö<¬_X®èüóÒ&­Zªò€Í1ìÓoNî\¾zËñ=Z ­â…Ååzb"@¶M 1åâœ9së;:9>çZQ^êü|Sv~àÏ“x̎䀪6lÿÝ.?½Üö™úÏvܰðÅÀ·´fÌû‹Þ?·sDÐø}t'S4>t™` °|㣞£Sºõu/Nì¶ ÔÛùxÿ³ÑWŽéZÀÖ_ömš§×ò¨9â( ZAc>Ønª‰õ~”‰lmßóQåi=UF‡‘@­&€žZÝ}¨|­ `GÏù¨ýJ"$`Uð9lw ¯9Xv  çÃàDWøN ÂÁHÀ† $¦ªN1æÃ†;›ö Ø~ÌÇS„‹U#$P{ `ÌÛw–½ÞE™È“èù087¢çà <lšz>lº{±qVAc>¬¢P $€¬“Æ|°ý‚×ëÈÁ²c=g<ô|Dƒ'€M@χMw/6Î*`̇Ut*€µÀ˜¶G,{½‹2‘';ÐóapÆCχA4x Ø4ô|Øt÷b㬂Æ|XE7 H X'Œù`û¯×‘ƒeÇz> ÎxF= z,:¤,êÿá÷ë‚2FNé¸v>÷¢NƒRá”Ýå©‘SCZ÷™;¦Ð—ŽVmÓ^59X Ø/ô|ØoßcËŸŒù¨2iïÑkwœ:H÷uý݉°÷ºƒ¦X†ªSJ›~höªs†r™‘VÈÔíyfÀ¬HÀ† ÌŸ;ÛÜÖaÌK̲׻(y²cÀ¡kÕw’lîó[†@p`w"¡Ñ`š( p6¬_ý騑ååf<¶ØÑÉYïÜhhÎÄtr@¦ŒŒù°Ôì¬ò40»Vuè1öQ»ò¹ òöŽÒJÑ[sjú!¿0!sNY¤CÖ’¿ý*ö©pšïÛÐòs°ë89kGìð}!ZõVŒ‰HÀÆ >´Ê„O®^¹lV;1æƒÅ…×ëÈÁ²c . }fÍGLfúÓ¾–9Ò‰ÒÈY+êêà8’ºªÃì½çú Cat\³™;Ö“¼]S‡2Z»>¥´Î“N­`NB"Ù± ‘ÔU`Ä„zì]ë£:«]^ósÀ”ƒ“ˆ*²$u•ɋųH v8tp߃÷7Ç%˜ÞIøG4 IDAT '—ƪ̦\Ïar@ÆÇÆ|˜> iåTÇ|èćzÀª5”¼ü;~ÑÑL©°ÿîzêd¤­ö?žÎ|@ƾ¡®ŽÙI·Ew‰»»ÿñEjWŠ!’ª\ЀXnÕ¹ÆÅ²ÈPw ^  J»ŽÇ >|xÕ¾¨O«TìöÃïDY¶ö‚GfÜ•gÙªQ@O‘@RêÅ9sæÊe2×&žõêÔ­þ­y’U3ñ9à0w àN NqÊ žÃH Ø.¤ÔK`|Ôwtr|Ε5>í6[†žnÙ…o³<-ª]eŸiãžÎª¶ /XVJCH –xÞËwŽôMÀçáü|SVqs¯í0?rÃ1`h ؈çƒÿÜ{`Ù™ =–å‰Ò@m!Ðܧ©W‹vèù¨-ý…zÖFøœÚØk¨3@5NŸóÁ"†kwklº{±qVAÀFb>T,²RÅß{Å·à š€T³<GH –ÔyVVß³ÔõíÄ :Öœ3¦×ÝQM$P;¬Û´U”ƒ±µç|€åñL]ó›“êÔW¿‘²vô j‰ÀS" —<.¾{‚<ØIHkö¦}‹ßºÿ”Z†Õ"« ðë±4•ì]ëu ÅâZ…¾æ+>ç7'Ô©ïDˆÌüÒX {$àPϱ¡°kñŸÿãÃÛmFO„ßÞ°µw»ÀjKºÏ¹ô‰ÄJ°øéHl†à?çÔÖb>ìhyXñèCÕ@HÀŽ ØfÌíP.¸Øñ¸Æ¦#+# €wÙá†잀B¡ þEÀ6c>hÿ*Ðóa÷à $€€5Ë$‹4t{A p½l-惢~bÆÇ‘/} <žnmæÍøÔ›=æýMŒynY‹Ë»'4Ó9SYÂÁ±Íw¿{+¶+›OSÔûKÅ„¬€7öE›$¼êjT¦&žGH $P9Š²ÇŽÏ6ˤuê‚ýa‹1OÆø82CÐ÷Å—®3†Eî÷íº(e|êEHRŒÓÊ—â™tfô1ßïÚã~=÷žŒíN%ܹ}‰\½t s•Onß¼Ñæå‰_XÆã¡4À¥ráUW£ò…9@m 0yúÂ…s'WGÓM'Õ.U‰””K¥Š’rE‰òoY)“($RÅÞéø êÆ²¶I ¼¤°n=Çú¤ø?œÝ^´µç|0öb>r¿ÿ&aÄî+š±uyLøqrÜ›ë~úu"sC©ÿØÌñäçÛæJæmæÖÆÁo~7ùÒÍlB<ÀÐÙ·Sý#˜ÞÌj¨a¦Ö˜ X'EË~ÌåoŽëèøL55³£¤‚—É‹KÅeŠâRyI9)—r%w™§”ᆀð|Àç:õžqrnß[|· Üg[Óûí“qz÷äUäÛ6ºÕÍ›·OÇ8Ý@®M|óuÁ˜ÓDö‚Üþ1ÀéuÓë˲8Å”)§©ªPj`̘ʌXHì» ÇY`m´èîùæÏG™ÌÙ×/ø¿âË•úžf Å¿_6ªÐ[KÀ²;T pÀ@quկǢ)Çpœ*ÉFõÏú¾• ;›¹ÆÁÖtÇ¡|»%@È®=G‡Å|ñÛoW c£? Dû7†}zt“o†7Y:úÅØÏþ³}ÚKû¿v?òmӣߺï›Õ4~úKõÿ\¯#fZã{Þ¦½[‡3ûˆ]¹•d6.ÊâgS¿ÿ|“H-6inﯓU5Ï&/m=7•ˆv Ö,b¸ùÚ ç´x»žŠ@Ó;ÚT2Д¹z̘ZZGHMÀ! …¼´¸þ ¾#¶óQW5¼U‘·ûkTô‘_¿~Ó7öÞ,Òxk‹ô¥| )Ï äúÄoBoÝ;à|™`Ъƒ£Æ÷ 1oí‹N?Ž/ Xr¾ÇØûíR³õŠ{M‰ZfÝWZ\ß}ó.ñøýºñz”âÞHÈ«åû7·ÈèLnÿð\ˆ-¦9¡j.‘dí ŒúôìÑ¥çÞ_bÛãû.½%¹ôëù c›Þþui6…X5±Å,Åц&¯aª( Ô0{ŽýûÏ_§~™W…z¤Rºì"Ѐ}˜=e "“‰\.•**`—À_ù·o™-Y”0xÈ–æßíù-Œ)*JØ”L†±ÇfËzÂ#Úž˜öUX£­øɾuV<ì=ðÅ’ÜÜÜW¼ûÏ ­Iýž„*µ«ýöuøŸ-ßó¬RcD k3Û¿CvléH0Y²1!UÒÊp!G'õ“ÇiÐ)lü÷Ô.ˆgx.Šnkóðoö„öæ¿x]X:!CGì›ðâˆ,ñ%r{b`OAãž‚AGÏßÊgJøGwkªU´G¯.ögãç6¼æü›“¸ÃwoßÊnÓÜ]»â¿øSÆDà×òVÌÔΌ豃G°hÕ]ú2‰Ä·Ï×Cn_}|=Û\C[îÏŽžAv§Ý&w÷í&T8µeVÀ5o̱êá_$PüÛvÑ옪U"‘J  gΜ‘+À­©å!SHd ©ŒÀcœ˜»‰7}M-¯TÖ†g?k¶?û¶—7½‚gdÒ æ×i/¨ªÑp*QŒÓœùX[6ý |æýJ²— éÃtÅõõ\èÓe Oþ&Þ4BO"kíyµ #'ÒXsPYFK2›l®m%,õÙÉ¥1ˆ²Å˜K2&§é„i]6 ZvË“Kfèa¬ˆòœ¯Ç›äèW¦¸¨YÛs&á*PpKìDMÈ|1v>c1Üþaë¶r¦jÎfÊÚóÕÖ Òôí¾$nÔÖK}ƒü gï^."ô˜ÛüÇ.½5ÛÿÒ-ô˜Ò»˜ÇJ ô§í±„o?_õ÷M²Ë.ìÃä Æò öìœÿ–`—é±?Œ¯Ÿø½ÖÉ“ö5³s>iÏù-Cn}1ág{[[ö²ä[Hü®ý¯_ô™N&Ð ßµ¿¹&!‘Bà—Ìh†vÓ™IÓÞ9¼C-3'XSŽºöoIò¯ÚêyxùegçAuùÙ$,Ü3¨}·ÜlP/9õ×nÁí85¸Q}L®§½í"Úÿš˜FÉ$§Þò§÷pœ×úÞî:¸tZ]оŽš A|>ݲçüô ¶ûnyCŸŽŒ°UÒL0h(¢ð êB’O3#„µ%e@ˆÁü•je £){\ÄÀ_¾Ïý*.•t¯ØNzÂÒ Ýgˆ®Ë®›ô¬ª|z·€Øô2s$SÐH6( ¦€?y‹qBÐ $2$Ô$‡ÄnóˆVñ‰à–] 1=æ“(LŒN‡ºQŸÊEf…9¾´%›[‚FÉæ3}¾æZÇj‚‘@-#°sãŽÏÔ¯ŽÒ2pqÀŒé 8qêôK/yHå°à>Â,»0»”Þjkv·¹% ‚4–¢}{Ö#âÙoT·ìœ<ö¼Ï§_õó‚ð`øÑê®qÐãÜÖ1¿dÆ3$/kÞ§ ½àVm>Ÿa8Tr vÿ!ÙڽÞøŽ:'wa`°6ü<@/orô¬˜ øÐ]6M¸Þö*×w’s»|È^ÜS_ ×j­¬=AoGk+­ìSUº(aí¯O–ß>=ô™Í¹ÁèšéDñˆèD–oQ¿6V[ªE„h ­Êg~Ìw«-ÿ]sUiŸeÀþ¸7^·é=–P,å’cï©VUÔÇt9£¿ /›†<ð:(ƪS¨dõ'•@žd0/T5òÕ«¬N§j*ŸÈ?6Ð@Ý&c °åàçƒÙ¦ˆŒñy@À)µ?¤°þbÀò0L‰ ƒºøo9}v|¸ÖÊ [„_ŽU‰ªtU"ˆ2%CnÂ/È÷‰{‰xSÌ÷‹°}©·vö” ûHòÎ}'|<ñ #[Ó3I—™œ’FôÑ+\o"Àes=r2ÆD6&äæ’£$ì[¡[ªVü5ÔѪ†êSÏ~[!zú+Á;v|¸TÚÏk²o’OÚ¬Qµ?5é‹ uþhVIH…˜çç›:°òÑçQcœQ0@¶C@÷¹Èi¨c‚°>&Ú”‰<5¿Ã>hÿëtõå,{· ñôhNNŸf¯qE ë+½ æW Q"O|ÓŸú*ˆ(íèmò öÛ[~fjÏÛÁó‘(‹P?ÿ– kˆ7ذAþÃ[–s†Å²gô ×ß^zAtöŽ[ôúŽsOo+¯õ+«ÅêÎèè*ë n'ÿ! ‰{ÎsûŠOý•Æt™bzuÊœlÌG]¾ÏýæcÄH Ø 0/Dyb¸«–WÊa‘¥Bô>ÛªÜ碄6þüf!Cû´aà%Ž‚fn¢Lôùtó÷Üm5I‡õûôÇOúEl!þíßQEué‘4snû6Óû€ÙñÊGCÞ!JG¿:'˜>ËIX /¥Ú¶ïF~%Á¦)©W¸þöRŸÊšdêP۰[p¼¹ÖÞMc £Ûw›7ahŸåݦÿBOO(“<†ÅjxÙ“’N¿Òiµ#¹é‘¤´™jtŠJ2³¬FLÂæWK·ÔÄ|8>çÊJtç¹õ™´q‡n©ÊžàŸ{ .éÿûO³.uê=¡z±$€lƒ€Bq÷æ/Å}߉ z¡q#v>á·,þ`Ú¦¸]¦´uÿæ…ülr¸17$`ßöŸHŸ3gn}G'0>ê9:Õ©[ßÖb>ê<çU|ÿVÃ&¯u컯±õH ˜L@¡xt?‹Ôkb¤@T ØdÀSH ˜B€ùàŒÛ‰ùøOTIþ¦â›ûLA€y@zM» "Ùù %`›1‚z.ïO¸0Úêñ{XTV=X ZGZ×e¨p­!Àù°‘w»T<çË´–í,+¥!$`õ^f4T¸¸XPSŒø° LU« Øàs>6mØab–íô|X–'JCÖOàLÚ%‹Ï$ÖßjÔ X %P./c,úŽ8vE¡åAÿ‚ÍASä`€Èå'R´­Cº™×w¶ú•±i³ÛOÜ,RæM^0/M_AÍlÚ9àlßåή?? âÍ#•½32!טÆ{Y]†æ81µ #â)ŒÆü _"Îø@Ÿ‡žaÀÒ÷7äóí'öÃ>±ñµ†¯éçNqš¾C}lfÕée1'@fXðÝ“¾žz&š$­ +) âë*"Ï,¼›^ðÇ™+geÄlJºô¨¤B*•™\*(êÔW@ÞfDÓ¶í"öIã2ˆÄ·IöÑd1û1G$zÅË]oYãs!>ŸlÚ~zwú¦Á·¿\–dδ¤·:L´ QÂÐöŸf¿Ït ì3Hb2Œ(j+l雯{Y9fÖeF¼Ï— ,hP2¿9êÑòmľš-ªæ@SYÿ‡ßçþþ”ÇH Ø ëWÿxTyyyÕZôì³ aÒ¤6…ƒàú½ÜC–KŸ)lôÌËyÒÿþéÊI9˜$rêù¨#e?LÜ„¯dŠÙ+àÜäsþ£“\Ö‡*N:I"Ã'›³P½ÂBÉÉ4ÍE-Él½B”zÂhñ g‡Üé=Œù° 挅m÷›Á¬È¬”9GÕ¡'‘_iκmäK¦ùqBÔË:'ØBr2=?9±\HÚÞuÞ™EŸí“-ü6 ¢@QHÀ >¸oþÜÙUÐL&‘‚í—lPöÑ?ofþNoü™—Õ¼ôqIñ㣇þH–zrXu¡Á§ÄÁtÏñðöËÎɃBù9¦þ öÝ_µ‚ÛQEÓæ ;É.£|KÖs¦FöŠŸÈfa…¬]¢áÆü˜¹ð%Y¬ÎéÝ!È~rw÷?±Xå#±€Ú( Ø n=Þž:}fš ž(% uÄÁÉɻѽ‰%$énËþ,½ÚèFÃgó‰L¢I‰LêP\.ç‡é÷ÃÖ†ŸLýž^ô·?— ø B˜@¥1‘x“[”ñùdó;áÙod7ÖváW¨ŠùðX¯Ž`õáq¨@å%¸ª¸rõçÌQäûìe´rÝNž¯ö¯Чº+D¦óª½9o‹MXSv“ª™œŸéÓ·'òýO„0k.AŒ¹àÞ‘¬Ø¦7<™dXó±ið+œË­&ù2Æ;Ý™ Ÿóa55ÓLÛø9Y¸PŽMTýÕúÈ VdòE9„„…xï˜9dÎþí!$?~ü •(îÀ£÷êý½ó` &§ÛŒí“ÐùaZa.$кMàÌÙß¹¹52ý«­‚¦9À‚ Ыµ×_zt=;Tò ½°üÇg  äoOysnµ•)drY9¸HÜEWÜx}4ì㌗èívãaÖð %ÛÒ’²Häÿ<¸(D±øx,”›‚ùá&qN&!pN« ö¬0(Ò+u«Ð‹^Ü){ÌÊc BN²$)×#'3tØÔ òS‚(—ÀUõZ°ß¦Sýr·Ã’MöÛ²@£PŒèà ſ:˜¾8<¾]¨Î)¶;ø?ücOÊŸ.~Jð^§4CÚ¦µÙ7ɧkUSÏL âÆ 7<”.4$„) ™=ûÍ=qFœ¸Ý ê…ékœ*MûV[Œù0ŠËœ“î~äL2k}Š÷n:Ñ. ,½‰RsN¥1¡âŒS™L‘üüÛ~îtÐý ûÍûñïL±Y÷÷ê…©HÀtíÞkæ`yT­±pK­@á@=2Ò®µc€ÿ_%¥ÿÉ z¶¤m—g»…‡Käå xÎ)̯ðŒSsÂZ©Ï|ëĵěö!JôÈÖª€4š¸~»V`Gö±sL I ÷÷Œ;ëÉU5›xúóY”°þHD{Zœ^:û&þ6½’†cÑémbåU5Íè5hñÎÑ>·Eb¢_•t<0DÀcèûp;Iß9,yþfÕ±¡BFÒÏAˆÆà§v§sûòOü•Ýj¤”áS^ƒ¢üõ,á.`þ¸Í…uz°¹Ç«Ã}.¸òb>L­“Ö óÑ Î4nÁBô&ò zû‰Vtî•IàÉ E‚zÚ6ñƒ^Û‰_»n~üœÌqÚªÎsذ³vsö3ŽYܨŒÀÒ•ë*Ëbô¼ƒ&N)*ˆ“CÝ‘Ý}ޜѥDC=¤õ¥r¸W ¯PÔÔU(ê•¥u~ì}V°‹÷ôLPû®da>èÇ?6\yÛujú4HôñÏYØ!ŽÀ¡vŠp‚³W ïK]¦Lðób&à”¿±û*3°Å©Çeí9ênS#4ô6ÿÌXCç–~™È”‡¤xèÓ‡/ Ÿþ³Ç°á,yBÀt Cº{þDè/®g ”%C×çŸ;“”øJÇå^ê$f%¥ÍP[¢|É\4€–ÍÊ‚†ŽðMBøºšüPU*è>V«¹ã>ÜëLÝ~øH ¯@<(,³ÎÆ¢VH Ô³é—ôÎ$ñÓ>Ü)'ûÏbx‹Œ”J¤’ ‡R)}™\b*w`#IyÑòU?ìß¼@¥!}nHÀ¾ <•±pÁ’gžkø\ƒFÏ<Û°¼XŽïó@ÿ‡}l=@ú È¡=?Và_jg€£„ÌÉäìÓLé£Ç¨oâQiÌÜÎ/êµø°²Œÿ‹V÷Óû‚YȶËsͼ(Õ¯ž´xï§˼7$P´Gš¾Ñ(þeÌG)èX…7'3#ÓoÐËÞš¬NÊ’èdâñÏÛ(Kè«Å 4/T·q“,üšHƒWùÄžÕL™3­N:ðÌ™¤tÖįßíôš³sƒICßX´ùr•ÅbA$`'l<æƒ5> ¬C"#ÞMèòŠD.H¾¡`-°Bþ½_RA_Š]…îöÅÎÔU( E`®ŸCæì£6‡ø—ø4bõ³mÕŠ¥ž2GšÇ»«÷¿Ë¨z~Ñœ3ÊŸ“ ñ/›rÚu#»âÅm¨ù¢~ÑH IDAT±™(Ä”/”‰¢žrÿ×Òr™¤L^þø¥& ¡Ö_Nüáë«Ýþ'¡ Öjù`èXm¹˜«(­ >ø[R¦xT"}ôXRV&…uyÒ—ŸÛÏ›¥<ÞÕ™¯Ÿ´:XŸÍ¨ÊHóòÔëÈ3Ì(/-…„2¬˜›–åafaÃb­ùLÙã½ çztö‘—=’–÷7h÷‹#g´fQ7$`=¸ËÙês>`Õ…õjÀjË«î‚7<Zû9„¼\§ýku»µrìÖ°¬¬:£Jž­N„k²iñb6‘l ¯ƒ»enŸ›¯y:?~|tç^t_”g¨œEK¦uîõC |‚KXæ÷QO So¬„1Ú h‚ɶM@ÿH#$ŸNÊqÂZø 뉹ë>Š“ð‹ê¸ó’óJH0D™Ñ¨±å§$‘Aî ’t>Oã”Z`eB´dêfQÚßÍï‹¶’þܺÓ'¹72¤VþUQð— ü!Tq`®™Õ¤Ó±_ðüt­R¹Û'wœ´Ed¦°Ê³3Õ)÷oÎU^€É¥jBkÇl¶IÀÆc>à®ZÖ°€ðÒsТDzâRÙãRYiiEiIyYI9QÔ­’ñA'èų¨Òu›IûÅŸÔùGUq˜Ö' _t|ÿÂ17ÓsÑñýr~]’[Í,ÉÃFH¿?uR@—Üu¢þÇ÷e–íI釡$¶ù½5§Uº#'ÛB~Ü'Ô'y"á•H&Õ±‘*ÅçO‘éÔצY‘"~W¨^yÐhDcñ0_¨vsö³ãV{0kè¦çAÛ¥ü¾«©:ç •=.}T\Þ°Áó/¿\.qßrIùÛ¡N]ÌØÿã„^|oN>/gÅoñTJß¼.›s„˜ž×çãŸñê2½ æD–$`û1ì’ ¬¶´òuɈDVG"%R9©€[]$dõŽ„4€ T=›ÞDu>¯Q«™èS†j 4,„ª¤úBQQ°Ìœ>úÇ?÷}aXúo¦è¯?ÿüGáè’ùçÝ?E×·¼d³•À|â pn÷rùÙkwÌ­Öß—;'â©ü®žKÝß5¢×Ëû=ÌU ó#š#`ó1tÙÅÁA¦{ΗVâYi™´¬”ú<ÊKér‚:Œš£Î—ìñîô÷S>H9?©¥õµ›³çÉÃ’f QùÆ+…ì€j¤U-´"R÷AD*øç~.ã{ÔÎïø)÷6™Ôù'Òô”ÏÚè¿{Ë ªuÇÿÿÞ/øûŸÂöÚÔ}ÆéÍÒ7R¯äØroH¤—÷‹õAûòÒ’mcËÊÅeR­Æp¦”á&zGG‘÷wŸôi[šG¼õgÑÇ_Få0Æ”=;¿ßä#Lá®SS¦2G⭣ǯd,Á^ß$|šþmÇxÒ•ì?â¹ðä§mE»ßëL>æ,s¤¹)U¢rŽuXöÓ rnyÈÏ;ÖzlîïýMè±ÿQ /bN)7ZJpCµGPeˆæYmEð³ý°ñç|À² Üáòì3us³²õ]`ñ¥¢BQwÛJ%ä™Ò:õË]ë ôz>ŒOìÕ/ÏKBßÜÜ|¢€¯jZ:Ü…;’™8twn¬¥ýïÎÆ™æŸKÊõIáñR{ßí›Þ æÝµ«®ÅÃÝ—hžÕMáUµèhh¿£Ü®[®;ÒÈŸü±¡;DõžU1dÇ<û—&Âh÷´Q}S.]=<›668ÈðàWúÕBô W½j¨+ÿïô¼»÷Z¼æçZß îk@ˆŸ¯Wë®]Ö¯ÿZvï&Ô%“É>ç²þÎã?œÕ®šßNísÌgE`D—ù‰ÉŸ¶CA”~L:[Hrh:ÝÛNIH™Ò¿í¿uPà`OÆbè¸,eÒ, ò³o{-K9áAéß¾¿ÕNÂOTÔî÷?˜´õÇEƒÕ :4çÊ÷û­¤µF,<ñéà5Ss:í>;08ñdቾž ˆ>É^ùSèŽ ž´øÒ­!ÊâTCÂùµŸ‹ü1á'¨ñÜò÷·‹ÛäëFkÅ °l<æNÁø3¨5û0Súm¥¤6“V;†;K Ègº)•ÖŠ쀞‘ö§ÉÚ´í´xƘèõÌxcJ¹G-Ë/žšrÆ?|ïq î!á^ëÁ“§ö¯T.„˜»*bŽüß_ôC?~%ªc Q:ß½E,–øûÍì7‚ÿ n ÄwÀÿ%¤¡Ë wŠ|Z½¡úu´ûínQh_QÜVÿá ž„‚ >‰‰L>ðNîDĬU;$ØS‘ì «H|›DİÞϾ1]¶&B¼†ñáó±†9øåœÔNó{ÍI`ü.L-_ö¥%t‹îë={ÿ¬qCH—` Ý8ùø l<æãÝNoõŠDå›™ÏVo3iŸêaJJáAcíSÎËŸ±‰ªlºù!%n’¶^Z‰š¥<Þýú½y›N O+ݵ+ÃÏöA@w¤ñdžîÕ9ÁŸÅã³~Zý…Qö›wŒù • HU¯ƒ»ÞÁ¬!ÊØø×¯muR_r{áÖ_*^rƒõ—T•ÖùSœï'|±:2Õe=#ÉÒ3çȱ¬Á³§òD‚ûaø$À2‡ÇRËÔeªqn,íšš[™:T”v ¤ißÈc®8Ìo«l<æºÍL«ÂV;Û…@µøù6>r:¥C—ÎDQ¯¤‚dæå_INzË"Ö-²y î2c+„Yhø)Äâ?šyÐêð ÔW fJ³­±;ú¶¨åü`Ôðôð'[ϱ+8»cFÄðM=š¦K›©‰–ŸåŒ†ìc)âÁýʺXø!#• g2ÔMOí˜d¿l<æÃ~;[Ž€E ¼ìë~¿ðqüúí/ú½\ö¸äæ•+ Ž}8$âàöÉ‘ƒ,ñNÊо7#^Z&$þ<~`§­¤YD¯fl{<¯…@ñ!Ì}ɰ\¢Røåƒßÿ ðKWXxN¶xöJå²ÈË£¦Fžœ{Ô²/‰‡ç¨ø£wCÀ)”òÏYÒ)›®Y¼RálN7Ò"d-Ú(̆^  zÂXqÁ¿púЉÌÎâQ^!3tÊúÒiX«·vŒªõ©‰Õ6GÏ_ÊHnü‹Bï盼èäääÀ¶©­>ç´¶uê‹€•pmølàëÞ-›½Ôäy×%ß/ÿîÏÍSÛ~¿ˆÏä°ÒþBµ¬–€íÇ|X-zT ZM ³Û÷K–®ùaU»®-6ÄwÓ•oÁ“ÌݽtÇ Ô,Œù¨Y¾( &öǤiÿ3ÞÀZõK8ý}ŽY­ÒÙ8~jIG¡šH ìy˜`Û+'`_1°Ô$òÞþ­Égýzö…Þ•SÃH Ø'¿ÿ¢ëÔ`pÀ»åŠËäÅ¥Šâ2Eq©¼¤œ€ Â2‘Ë$ö [L'`ÏùX»v-ÐèÑ£!þšN s"$`‡š6¿ÿîµ.%eÌj ýËwô%!ËTÙðfmbø b1ºv†nJec#+eˉ<¯NQí|•9!å‚s¯þ-]++ ç ~;²?ÛÃÄÌ&Èãép"OùAØndˆ—‰…ÍQÞD‘4[ ‰5C̪$ðàÚþ„kÌ'×V]{µv1ˆ{Mš¢¿{˜ÿÇ$ÿîÜ §eeGG˜>ÝIP¿å¢²$„{\8{oÂÉ Öó¡ô˜W]Þîg’ÇwQ›#o÷¶s$̤Ÿaó*Ñ“êý`[³Ù»’Ùꘪß3£êêÛÞã4Ì=:b’m°¯˜¶/µì óÍnHx¼ÞJ|å·B/#‘Ooð¸º9“ì"¸Ò5ÅóôÔÄškžÀƒkg©å¡¶’][›äŸ«yÍjQ ÷ ÿ%÷ö’ÿÇÞô7Aó2I™c=O×ÿF>— Çíƒ^…ÄRi™yÊËÿ£™;w… ìËó ˜'ÆÌÜâmßRËCíoxrU›©)f·]öóQ\ü¨n]ÎÒÊËã–& øTÿaþÊ !.­[¸¬O½ìÓõFü’wf}J.“@×e\ÁÝ]ôºrêÏ=ŵk/·ëª5檴„½ÑÊùr6»p£)Ð%¶ý5v¡GY„ß!|¹Ùy^­¢ËCS»N¤vÂk®ÎpËI!䄨“Õ™w} õ^qëÚÎWG ÍC¼H^®Õ‡ß"ÛýæÔš–d‹ |[h/À1­T0ÆT=è£Ù4*¿;÷20Ìj …ê*ZVRTö×Ò¸q| dõîÈQ*+£ .m{k¿}µ<ÀÿQjN]¡A=g.˜µ#pã@u1Æ-ñóY¹$Á÷4¨ŽééBõbÖkÔË(\)µÍ¼ôãw"Fèõsªz¤×ªõtmèå‘K7¼Ë-š|ÐU—)ÉSˆ†z$T „j~¼Hö °µÉ=nÇX©™z|&åÀTÊãòôÔ¢IC»íZ¬*U 3Xž€D*“HdåÒòrIY¹Ä.b>ÀòÈËÍýçŸ^|ñE Ê¿á¥*6¯S„í:‰·œ¼æ©ê?çÂv‰þ$_{½Ë×}ãEY!^ôW?O”%|}¤ ÉRÊÈJaüá]½Háå]GaßÌ­%!d!ê€(ñ"#»‚a‘{âÈåB Óçá5°Q¨t°K¸xMi¾-]©å!öìÕKÃf"ÒOÖ9Ÿ›Âꜛ]äJŠDZº6*e:çê„´‡E.ý¢†€@ý-â1ÃÃ'NÀÕÕY»NƒŠßƒbíÌøLŠbÇºŽ¬[£¬´ ŽÃIÙ*.ßLÿ:õ2õ¼ÙÒ§L×ùa,â4pú±¥ÛÆ|¶ž±3B@dú\fAd#Ã/臓¶mTFK€•(î8çŽçÒäcD!!ÇÛ/M^­ü‘V€œs7îÚ~•”n‡©~¿¡,¸[ôhe¨êœU¹QÉÇ>9a3÷$G}2ýØïÍ*¦H'D¥†! Œæ5æ¬Û…ŒXpì“÷VOɉÉA‰°u¬¯'#sզиc»<)„¥ÛBø ÕÂWC«íP‘ê,Žg« `û1`yˆE¢FÁc<`‰D2™ Ø?~üøÍ7ß,..†ãæÍ›ëö†žï¦f&æÛäÜ.{畬ÔÚP~¿rOì<Ún- ÑËGx&[ÔÎWH²Ä…­^õ⾃´xÁÃ"×VALŠó­„—/pßP- L½Ü)(Bæq8W|„oC¸µPÆ|ݲ«=Ö’Æ\ ¿Ú«‘VÅgˆg¿.¬z.®.…aѦHôÐýuŸü+Ùo±ˆ¸·eJéQÏÍÝ“9e¨EšèðÓ%PP®5ûƒ7¨è¡²͘ÁùÛQÆ'G·-Y)ŒÑìEÃ¥•é¾Á†ol)úëHC=¸­¬¬<°±þU¨)ø?vÆ®3¿Ñï­Þõý‰í?ìñ1‚Z!@¼ïˆ.ÛÁ4ºåÝ9”±6Xg†Êò ) 'çÀ‡ì7„ië£Ræ9›÷8•QEÓ§ÏN ‹\˜2äÖ{Üt&V‚a=•4tÛ‚”Jjk‚ŸŸL,ðŸ‚ù_aã1=ÊÏ£–Gyy9X`yH¥Ò²²²4mj‰7h{ý·Å•„ÔÜN\ÂÔ|†)¤Ž„“L¢ï«o\H»üÀ™\(òìhø.åÐ#Akp˜0é»ú¸»^xD:tõÑ;Ô`nu+,{ƒ1e 89).p{Tèóª—¹ò{QAv>ñ wKåê镉O‰ ù¹„`7˜µ¹¶îBâu–]¸t³dÙJff¾,…¥Øÿǧ«è_H™=ºE¨!RµMØwV̹è³éÓU­¼ÞRÔ© çöa`çfŸ%¦|Æš8z‹ZQ¢8.åÚš«VÛÁ•‚›u°ñw»äfg±–ø9ÀÚxøðáýû÷ïÝ»WTT–‘5;.ýñ§ybSvoã¾öâ³§s^ölJ„ÍHb"8š`ËÛ½áhD5šz7ËÉa×ÃRÒT7©ªë¢öD↼3FŽFŠ:·Ç{Ã"Ìì?—­…©humé­ÚœU]Bú\ºà2…Ì\‘ÌU˜süÓÆ©Ã@Pn•Öb¬íæ4óÖ$ùððôJ>“¡õêÕ“(7ðÀ¡\.oÈPclµ–%t³r !4ò4èõì£Woµ'u„…ð=W_!ø Ø<.àHH¸îÒ)˜/“žò n›½óÌú¼3ÄåõVB’m@‚¯»×‰Ôýë¯{uÐÖ7¸çãv^fbRxª=¼Ùèg·=û·cÁEWŸF-{vz´•“ lËøÒaSaÛ~E YÔªKÏÖ.Br9Û=¬¤Ãq÷¤Çúȧ;¬C鶈ßjž®xø„xvÐÓõèõ;Ï0ºBÿÒ±ÇTL:׃ZÇt´0=k×›†KCZ±¥¬ÿcæÏœçczOhºhÉWú0ÆâžÙŸsNt™œ<Ð÷é߃%&Ö&†Qúîï ›ÙŸš]¡÷x½Å woõäœÈÏÂb鹞³wN `äp)„Of–NØ-äãäîÊZ˜ç|¬9l­ªYùZ"º,˜k:T,+‘ÍP©UæœUÊ%¡—c&w>½ðNÌÒéÄ]=fwÜjààÝL´4,2 @s**­E·í|%•ðß'K€]máþ*‚€îcAxŸm×&¬&ã>üÉjUÝÚb·~'5õlI§Oÿ`Í`v@>80И‹óÞC³ÂÖõTm^,g(xu°½ßV`4Ì,JàÜùËzg’“±Ã½[w»”·Õ¿¸nˆÛ=bè{Ñ=»• .󄢂?ÇMûêäõƒMUz•–I,ª£=KŸ¹Ó{ãÂ'uï±= }Êm,¸qÍõ¥–ŽÝ>ïyrŒÇÉÕ⾋Ëþ)øìRý0¨{Ánð4ž0@@åë0p“kfÊÄš2íâ9`DtèxêÄq3ûê L®Ø} ñ ÜÊÜfvfGO€€ÏK$íjAéÕ eÒëe H™«c3ê TU Û @PÕö‡ÂÆc>T}öGŸ~ý­¯ aA=†}¶‡õé†!$Àh5äW]ƒ{Gè&bŠ%~qŒ¡b ‰(ÃÚ8°Kó¡Œ`z—ûÖõAH $€j’€jÕ…YzãƒnªhÓš¬e#$€@öH€ñð6ˆù¸×Àµ1{“òع`›‘@5B½É5‚…ÖnLÌÄž2ÿ¸v7 µGH X%ì‘Uê…J!ËðñV?Ä¿àáƒgê×kàôQÈœœœê²–Gqá½.UVˆåU@‰H $@:FHÀ~¼ð ð„oooøëììŒ1öÓõØR$€@O‡€ƒƒCf«ËnàópRú<³ÇOG±©õÊ¥‹ÆåÂ{n»vïa<žEH T™†|T´a4æƒÞÿÂlüc›i3<ÏU(Ô~´ªuðb9›i)6 $€@­ P—µõ»]lØòLºv†nŠ94³R·žÌóêÈ{£,¤üÞ°g¿–ð&ÛJ·‚ GÀKbMË\©4uF+åG—×ûvy£‘¥«žÕœ¶W½,Y¼ùÓ·Úƒü m&ôfîÉg³˜òðN€ŽB¢¯³ù+©×>Ö’~2=‹ÿ”æ •l{À}èÝù¿Ö¢1꬘@]¾ÏÃöb>Tä/\¸ :nÕªûªÑ5n.…'Ss}¹÷Ñ›%fáÁfU­or×_£[ ËÛ4úkÂÔZC€ÚœÛÆ ðbT.¸p-—¸x™>¨4 ÒÎ’àÁ1t-“EX±Z8Ôƒ<+õl–°m óM©j¥VÀ A=ZÁµ\µË ¼![¦À_©L~¿ dÄÇ“Ñø°‚¾BjÛù`;AËΨžÙÁõ«ûk­òáU´^F."kÁ@mÀƒkÉÔòP[É®­LòÏâRXPèêʽ~ÙTQn {Z Õcm錗C¿å!““Š yiIiÝzõ¬MmÔ X'{‰ùÈËã–# øTÿ+/`…”—•=ãèX•îqiõªKlÚeo­Õ¼³±©p9]—q…÷Ö>zM9õƒÿùªk—ž®7Tk4ÌUi!!.¯·r¾’Í.ÜhJ ÜbÊØëìB²ˆÒémTwuf¿ú„«Õ¼\7¡Wê\’BP²­¯¦¾ìe+[:ÛùšUO>M9ù¾¯j;'”+tÜ ‚1ö»²g½5µ…õš‹Î=amE¹yy ÏžÔö¤P5’Ùõ>ÖÉñßG˜¥À±ùt„_`¹‘LEêÈš°ŒÕ ¦ëó8’t½SX‹'/UHd°—WHËË¥½»‡Ü+*-++3&BϹôïº,<¨Lo³tC”»ž\Ö–”²¢ÝWI¬Ræè Ýé½aa4Ù3bĹÎp`ðNkk°¥ôÉûÙwiÍÞÛúCõ¸´kP²ª QòÂÓÈä3“Uïá3µ SáÓ~öóÁ¿á…í«µç3ÒÿÛªõsNNÚ½oÂgaÛŽù[O]óÔˆÞ€ßxa[(L'ßk¯õkùšïμ¬`/øñ&yyYÂ×b\»^Îäaüá]¼Háå„£„´`*Õ’<˜u@ x‘˜.\’{òèåBÀއ×áçD)$\ëJùà!?z áš «êÃ"ç¾7"¹„Ó-7§È•‰´tmT(Ê&ÎtÔðe.—• hÎÔŒ›•P9*ÔzA¬†Æ â÷l~%êCYjRï¼¢2g¡ÀÃëW}º Žq¡áóÞP+š½áÊÉ•Tcm§UÆX°ÎÒ%â-ºæÂì`”Ð}u…µõ¥ñ²ye†Ó¿ëúY»ÜÉg&YÉ ]AŸÞœn<}Áò˜%»“1òãÆ}6BaÄfÒ4„}6éC%VBFËZœ”·gD̶f³vž a‘·'îñ ÑáÃo!ð1Ž(oÏÆìðdgœ(PÃ’£JV×òÔ†Ÿ½Ä|deÑß{xÂÚü!“ɤR)|”H$õë×wss;uòD‡Žªdø·ÍÙy5«%µ6”›:ÏôJ1'¯­/Äåå¶z•Ÿ³  ÈµUsUêòÆ…W~çDhIàÉ&P„<ÌSZ œ~T©fÌͬ¼êumõª×…|ð±PÂÍÝ“)åâêrµÒŠòº¿æ“5§ð "Î#îaÌY=j( Òœ¯*[ : HeëÊžUéÌó™‘­Y©ŒM¬\»iÔ²gLKš!6•°‰n-˜õG:Ú/*`‡™Ñö’o–cÏh –=I#LaÙ…ç±sÊ»ÝB¶ì:EÒ€Ö¯¨Ñøb3|}'&-yR;â IDAT@˜AO#YKùü¸-I=fÅG Ùô¦ÑÓ¢ÇìNŽúبÎ|!•Òx­¬ñ:óãæåÿEˆ²ùÂÞJ†ª «D%¬D)çHÄøÁdÙ×)âh!ßg¦*X‰¦J6Ï“~l̇œm4óœîXC­Nñõ¥ŽØÀÕ&üûŒ8¨¨¨€]ûÃx§±gé_¯·Z\Ý’Û‘•¯€©ó, ¢áx®8‰ âûÊë¿§]~Ðü^(ì‹åPJUœ=VKƒSz$¨ó³ƒè-ܯד/‡ÓÇxu®Þî䔸Àµ¨ÐçÕ¶ÞäêÅ‚1ñ r5E †0Šáf} ‹]w‹s;zxië¦1ꘓ)®­"iX4 ã‹ •Ë.]ìÚ*ðõìcyY`=ë¥JÔ{–’Ï¥sÚZÏ Óƒoy€«,0GöéÀú?®ü¡ºÕLu¥M€ \a`§fŸ'¥| Çy{bbân1’àÇ~{¹L= Ÿ¯füöLbƼ®;½b0W½ªcæ`VȉY´8d{/oÊ 9£ùˆ%±ì²ŽZxøwGÀn`ŠŒð\½.¦0ÙîÎëʬÅDý99iR­¶¼ôãwÂ?á}Ù©ÎËróH¨PW™¹1|!TÓXMU5êe~AµÕcë®Íu¹ÑÖ >Ð $’<æùÝ‘ %+¶ÕÐï{€B+òu÷ÒÊÝF®8ù÷"¡· ã‡ùW =…ô4DC ]Íh‚§žF-^ó«â@‚ ×Ù!Q5•r/\çöƒü¼‡ÎΦÜ\^µš¬«]vQÞÛÂZÛvŸ†ƒ [¯Ût`Í¿ÊÜÛ*,¡wƼ˜8¸PN:ŸîYSâ¨aC-Khâ•9¢·¶œÕ[ÈLÈ6+üନÙd<-2+üÖ†=É4;OéËŸE~Œg×ÙrV‹‚xÙ¦™Üƒxl*˃­ªÌZ[N.7yi¥¢Î¨U¯!õ´«¬}ŸõpÓå“sÇ:˸IÙô¼ô$$ :Œ’’¬aúêJ¶:`ü˜ôy¼7d¨òß;_þÿö®.ªêû_we)ëWΊZé/Í”MÅ]L±PpÁ­,EËT )ÍêWY™eå’ihen$‚òûƒ¦æŽ²¹ôSÑ$YgHË †Ùþç¾÷fx³Á̰ÎpîgÄ;÷{ιßûæ½óÎ9ï^™¬¼¼.%lül0> eÈÐaV΄NàðÓ›q„Þqž¸z µ—e×nB’˜ã2Ê__Ú$œŽK8Mœû’|Àh8šÁäN ðòŸpÿPJb'޶ès­þÎSþj·p ®Œat)_ÈÄY ^–’/œÀÄ\Œ„ÏÙPsÓzà‘¦DNW‘0§د'Àü“ªíê3óêqDž®e;âØ/À™ÚÓ+»6Ü!3™i3à_;“¦¡Ûƒ}«V›ç1u⨿6Ž5J.]«-[Æ,Å»y áÑ_ô'¡ZÜC^ ÜuŠÞÝ3¯Ãs2R»-|‡yäDŠ<1]h}OQ1B€yAjø´¬>ô!›€Ƹ7´d† –þO1Üæ(óêÂèle1kD=s†l¥øÆëf7CáÝF³“¥=Âs€‘ç¨_Jë+:{b.ÌD† '³ã³f虉f01Р.SiÀ¬ÆÈù¸ÓÑåa­ÿê5ÒÛüA°3.\¸;ÜÀH`“ðy€óc؈‘®®æ?ÃAÎ-ߥßä)ýXpàbÎæòÀÒkäu‡Ë·'sq‡hË%7UÁM *ÃÒä2!úZ™ Ö%ãsÓál¨†nG­æ ¦øç±4cŒ3ü“Šw>;‹tFfHÀoÑÖ +”‹Î™ÜŒ3T »€µ‘rfâ¸Á?ÿòäy°/¼ÈÊùsB á´®žeÿôxîúÆ8ueÏëÏF[´ Yæ²f<ó§Î.Â…h †ÓÙ\æÐé©gN—æMcˆ›™úº‡ÄÑä\ÈIÖÎ-×Iä°-ZF¦³…L2ÑU¢A¦Òä8!ÏC{_7ÙÃÆøøù‡N™:)t2|&†„‚-RVVf¡åÑ _>ÏÅk„=2E:!@=Ì»-`y€«#,tô¬iÏÍ™4÷Å`°< EMê$€FC Ô¸ÜÝ…=ÉÉSg~ÅI?6nöôvR%aEuõì© yœÍо²[‹ s]>µôà̘ ¡œõLø Õ™Ì a²M­R†Çš«ÖI=Cvͤ…ÅmÚç윂Rð¶‹¶n…Ž0Ý=glgpÌ'vaOÍ c7Ú…wúYÉÁ²n°Î¶ðý–1°qj¾Œ5ÚŸGý²ù5t/¿Y¸^Yý‹ÜzC€jU¤äæIe•\®®¨T*á [µ£Jé@_²%Ö:> 6rš`¡yaÒç¸ááÓ˜H0´¯aîî‚Þ.|Ž{ØeÜïô–6ì£iÔì„W.Í,,sÍC3Í'5ÚÑghà—+@7~Â)Z|ò£õÞ›Æö5â8/ˆQeøLŒJ1l4TO“îjHkC-€[œ@3§°ÎÇŒí@{3ñ©_ÌkZÚÉ'†Çò‚_yé¶1-K“˜¬Ç™PŸ ÃÐèé×°:x{ ä88p™§P_<ÝΜ9!¼þdÄí>ÌE.ëé?÷*ê2B[@àlö%SW’}G.Äý´³ÖAüßÏ_êÑH*ªjí…ˆ€}#p4í‚ôŸ\¡PØ«W/ØjÞÙÙ™ÉùpÖä|”Ѻ}C€£CDÀ `ÓܷŠܰ "`fW2…_7Jݲk}=¿eÁ£ED@ê'Öò(g|Z+¤~x#D@Z<F—\oñ¨ -©TZQQ!‘Hà%È âVÅi ï¹´¸©Æ#ˆ"€ ÍöíÛwèСS§Nðáâââ>PLëÿhJ¢ˆ"€ ˆ"`·´¸u>ìv&q`ˆ"€ ˆ€ àÈ÷y`·Ìª‰ ˆ"€Ø0˜óaÓ‡ª#ˆ"€ ¶ˆ›óA†Ä&ÿ_0µÅyDD@›A€®ó¡¢–-üºÍŒ iÍKßyTäÁßQZ.8Mîcþæt<Í‹OÇeéŒÄ¹oèØ¾Ìî²5•: ­‰1Cc8µ!J.¤$Ÿ:}ÎÓ«÷‹Ý?ÉȸùÐC­»vmçѽãÿjk¬¶!ˆ€>N¬åQQv·ƒóCZ+DŸ ¿AÀ͹ìhz¡—¿§‘c56±èVŸ´‘C5²Âƒˆ"Ðx€å±%ûËw®æ]º3%ø•细9;·í?À­Düàò•;G>õÔC¼»4žB( °YœXÍÑçaÅ ÿ=@tå|©'îgxذ=ÿµ<®Üðü´ð¯Àêa*Y«=¼Ü„ž®9Wn8–#—Ëý=ÎF²mo¦Qã†GÀ‰ïó`ë /Ô^$¸ èí—q©›~|äþùC©çËè(½üföš(rgb(…G®¨ÿu?ÿIËщÚǤ:ÃßÍIåvÁ ç9] Ã@Æb+"€X‡@‡ŽmNå$ú÷}={×¢‹`S •J ÛÒ¿*rð५×ò‡ púÄïÿz¼m·nü˜i æGÖã<¿ÿb:ãùdЦ…ì[0ÿì(CÖ)޽æˆæ|ÔiVÜF‰wËqç§zä¥§æ ƒÂiòGáÑC—ÈØ Qe;/÷í&N#~3G»[[á‡crî{õ)½˜ãj°=X@¾ºOÚ|`=®ß=ë‹ñ ž›ùöJ‹š¬ €9uœH/ÿ! —óúhøÜ¿_Fî‰À±Á6xtÿ¥Ùy|Õ7fŠgIZCëÖþ¸¸:§AãÊ÷µˆÎ$ð¬ åa&¤H†XŽÀÇæVÈÊ¥²ò¿ï‰ä2ÅyÏÈ¥ò“?\‘+ÕÉÉ$ý6R.ˆÚ³‡ÇñCg'…ô³\ö@Z˜óQçÉöìßçJbzá(#ˆ¶Œ²ØÎ0TÂ7ÔY& ø6ŽÑã®ÆÎPzioÂÎ{š°Ë=°KÊJïRë«1†°@ÌBàõa+?ùïkÞý†ç\séSy+MýÑêÏ•jõ­[÷Áòpptˆ|=}ñóÖßÊÜ6‹i-DZ‡x÷â¥ßÝ Ôã?|‹¬üêÔ„}7æ­ãQ>¤xß‚»®3¬Æ¿Üþ§Érày¢GAÙl#!éFlü¼~R=\šjÑ#µ#€9&1Òwvj|¥õ<àpêÑ2âÖ\¤®®ÎäüÕKý…Õ/ÊæeP4G‹=G >š¾Lù‡Jï—¹ºv†–û¢ûD ñ¿:÷<†ìÍ,»Ëhè&<¹÷å8p‡Öþj®qØ„ µ"ðX+÷‚7½¹#Ä©U›¿ÏÏ>Ô%P*SýñÇßcŸ]^.iÓ¶ãˆÑÿ–+ÔKÞŸóŸÍµ2ä|–„N‡n¯ñ¿¦ïû®û[Ç×ûpmÞ"Õa—¬/ìêñaüf°9¨²|7Ž)¸ásü€€iYËýiß3i'ÇÏŽGËÃ’©AÚDs>ê\×¾}ó\bYyùÝ?œš¸—ýêáÛ»,³¬o¨y¨sß GRÏw ð8š‘wÕcÔä½ì ]e<û÷¾’xdçyâê%d—)<º—‹Â€s\àð EZ‹Œ ÂWoêcB‘"`€À¿…ï¿ÿÖ/­ŽZïûÐP‰TA–gôÿ‡RI.r%Q(Õ…×nvyÔÅ w Ý^ÓIà`üü"3ç&|²GìNn @·‡ùÀ!eC#àÈ`.Pk°¡¡5Bþˆ"€4Kdòª³g ÏgW)Ôr…ª >J5Ôᣀ¹ê\F®¸¨Äׯg½«ï>õ‹Ÿçv»Q ž ^qô 'O¥3-Åû~<2l(ëá“ø"'öíØ @;GÀݽs^Þßi'¯WÈäÿ~Æ®šJµê—m¿Nš1Vª"9Y×ÏOóÒ»ï¿u<µ>Ðf€i[h%}ÃÈ•'d‡­: PAÀ˜¯ÞcNEù,Ûz«Dõûù¼?®äÜÝÐgÚdMf¨Yêù,; G¯mÑTÜ;°ˆÏlpTü1mö†v9j Cždü‹´2Ku$Bê‚€“J©€þîuèìÆÖëÂû"ˆ"`ߎyÊÃÃ-3#ïø¯'Å¢[pÙÝ^Ýôy˜• ¡Ÿ½žÐì{õÕôQÖóUÄñK¢6Ý`tê1ý§u“܉†¹•ºY ’· œXw!¼ç¢Ä÷\¬šòÒKE.ÝÆpn{eΡ“g@²E^Íç˜íEG_"Owß[œççç ŸžçBò4ø‚óy`sP+$1ÇÙDIÑ…«.#'Q&æ~8&çß^}ÊŒv‹ä2o2k™Ãi†€\QÎŽøæ}ÉøÀá·K*5M/•”Þ<‘y5çOjyAà ß·mo;` Û#´­F¨–”Ææ’â„wæ¬Ù7x-ÜìëP„“6¥L¢ýkjB„l—Ý=>Ø}Ô!í‹O'alÝjž&Das GÀIúà^ûÎn¬åÁÖ[8"fÿÞÕ[®Rjpl pẹ Ü™4Ïû÷ËÈ=G@ˆG7Ò·›0­@4ÄKHòÄ¥Ï>ES44…wïÍÞû]ôö¸ ‡‰Ñ ޳«sѱÃÎnf$“2ÌÁÅ’–ÏÔÜzÃcÝÅg‰{(µ{° ˆ€ r.™ãîß÷ͼ&*üK&“•ܼ%•ʠǸQ#;~ä¡Äd¿ÐàŒmÛ}Ÿ÷˜ N&›Ý§L÷ÃÞ3¢I`ˆ4Qǯ¡–Ç2­µ!lBešÛXМ­Ïý–À^ëK.`”Œâ_Fžzúbæ¥{ÉÅ2÷‘cÅ@Ëä¨BŠëÞ]÷j»€%øÍ˜'¤Ñ–cT’‘î°Äœ[Yýk¡*HŽ´ ذ‹ZMÊ$å¡Ï?uûÉž¬çãtúå3gނī‡ëždŸ+7ΞÉì÷Û­ÛÁuB‡ñ@äRCW¥, {=_qßôÃ)hêõJô¦)zPCÖë•é=8y %u¥˜Ñå‡t†R£©(ëè¡/k-½ˆ9•´ÒÏÆLï7†htÔÑ¥>Ä%µõ(Žàb=ãøÖžøÕŽpTÒôl5ø<à/[·£Ñ5ÝP\]IþÕKtõXmqqïFŠ/\+ví­÷,C,fß•½þjQwõC¸uv¹÷€É!Eš×zé7—¾¡cžv++Õa^-F[+»_æâÚ¾ÞÏ3i"lÑíî&êGŽÖUÕ7lBZ0J¥,ø'«’Ÿ¿’¿-!5nGÒg_o:|âh¹œ¦Bò©ÜI}âì…=:Z‡SqÂÞƒ=üSS k ÍÛØ}4e÷ÑÈ b†aÁ¦"_¦ehîûÎÒ cB$)»ß'éšÄ¾pË»ô˜p»lÚAÞבN-e4L‰÷ÛÞxî e¦DƒfìÛÔ-ŠáÆó»X‡#ö²œØÐ õy(ð%1I3'fj”†iôòÿÈĽ—ž#C!ßÓµ»€$BÒ†¯n@VÍoÙ›¤Ô¡5j¨<Ý=1m‹=º³WuÑÑD.ŒÒÝw†›QéÀ‚k÷x¶÷åÄ#».—îBÆÓbÐ3_CB!voñ³c‚83úbA=T*µJEªdòÿîöèÅÒ•«>Q* 8?¤•òîÜ¿uç¾^GS¿S YÁ¦W§o¢_†~š2 ~éj‘ø)8È5‚_Á—áÐmÁ4ZñóGöŠˆ?ßè1ý=?ú{2!¨°²4 ºpÊÜ7½°Ò—1ºi¥Ã—Œ £?¦žª'Ú<‰†ôôú-úUèïXްÉÞp’Jî·ïäÊZlÝÞ†Ø ãñòa˜õ©Ûè:`Œþ2n½ƒæÑÜ ®ðèƒÍ1*T›ŠÁ戸òZŒŒKO+=qvÑ뮥7 4›¸=À½!©¨þ(’ªÔ°ª˜:#ûòý{÷Á-òÇÕKí¥Ë–Ì=ÿû c.ÝðcÆ`ˆ@´E[²z¡ÏÈ»Og,d*òÂWB´ïµÉ§)»ÁÛ1ë,WOo€>ߥL‚”ÛÑ ìò¶9 X.{4+Áç¡Uˆ_oVZ¢2ˆ"€4-àÞ(‰äð¡«zÐB¥²Êó×JfNŸñß_nÚ['U…‚äÔO\´Å4' »±{w% !Ó„ÕGjé"›5ôàÇÓ¿dxÒo»hëzüÅâ\6F#Ê:ƾ—«GÀ~5*ÑÄݧ|þã+Ýn³a&£ì°Ñ~pâû<0òb?‹#AzE`Є—ßÄÀð|àù@ª‡’bbb>^ºp.+íÝ%3®ˆ©›dŸ·7MíÕ¨Ñ?0lFGý¶Ô(?Ÿ·?:úãé`v@Âé8’n”H·±¶.~‹~Û$xíÕé£Ùn=¦ÿ¸ÖW¿I vD½`Öùмç‚ï¼Ô¤È@ì§žð8rêBÙ ûy )Ÿ6ñ9-sÞXI+•Ê%Íuüt9Í\Š}¹¦N«©š5ÈÆ—h–ZHÔäpaþ{.vagÃ.M~v¢ˆ@£!ÐkÒ¸vW¯4š8„´(îxzíŒzS'ìÂŽ}µž·ÿ¾Y+  ˆ€"Ð÷ê•KךóaÅèî•6Ëœ+F‚]kx²GW½®˜óa.–]µx³sY#"€ ˆ"Ð’Àœ–4Û8VD0µRª¾•¤–\‡Šy=LRÑ-° - ‡Vím<*œ_P·2þ Àu>ZØÃE3Ë£­“ƒó3oµjƒ[˜’ º¨äå’’ßîþ"y˜[G!'ö;æ|à™ƒ ˆ€ðy8?³´UØ%Ž.iŠ@,BÀ±u»ÎîÏIþzßT/6çÃE©¨ ©¤´}'+7{7%ÛD°9 ÚÒÊ©=Q)XÍ¿ÚOó`‹\A`%1i•ºB¦®Ðü­¬"•rXp]}fu[›,*Œ4Õ¿cÜÙœjy@aü\ݱ ·©TªóÇR:u.ëôˆÏÍÜ_ï–ª•j"“UUUÈîܾ5ê…™×:ý™Wv=²ÿÇ6ª}öjyÀä9::>ü˜ Oök>ûæ“•Ü^zr©SUyù͒ʤÿû^Õç±Îýs¹?{=£p\ˆ€½  æ\Zߺù ŽŠ*"©TI¤jI¥Z"UUȘ ì˜UJ9Ñée/Pà8úF€ŸóaŸ>-b Ü¿\µé“ONÚówÈäG«*œTŠJUå=·Ò7Æ]M¸é¼·àé¶°aîzRß#?DhžèýäÕÕža§¢éãjµBì*§" p„(U %³Ï­B:g%Q¿×<‡Z!Í GÈó…´þf¥\Ý•Y¿¿”ýœ8û÷ôÔ÷ßíóíÆB¦ºNšxRY%U”ß•KþVJJÊîÞ+¹[z·ŒBa^ÉŽ ™5žû¼[ëÞ׿ñ¬Jœ¼$Ä2YkgÅ£œr IDATfjقμî™ǯÍ&ðÔí^›²x¼¹!'ñêbÑ„òOxþIÕÜFY¯ú€ñ¡ù(Õ†lÈ »(Õj…Šý0&ˆB}éê5*ž×ËŒúoáí½¸OpLnµD3ú61£ÏÂßô¤ç~ìо9¨×CFž ‰€é_¤#äyhòë¦»ØØ‘'ŸêðtÇ¿S‚†J–ýÂø'_‹ú{ßýgνv»àznÎë×DÛµJ˹¯’YôB¿ç¼õ;$íøþ%²%&YÔP¨ðî‚àuIŸM±d»i?ÿ€Céšû¸$žÈ³šŠÄÅ=Ý'–ól¨"ßE@œ¼½0`la¢1CÙL+„;ááœô5¥«™¬Luofí<3B®Ù T„ÍÀU*%8?¨çƒ~ „ÓÞ2ã";OGÿž£.Ϲ¾šD½—kYwóoGÃ;„šaÜP}¼ÿ÷.åÑ/Þ¹LG×Pº™? ¤´5èiÃ| Š£R^¨ÿCMغm7<ܺìAî/ƒž‘¾ûQúãÏÎŽYqù+.3_¾—´.oÊÛÅ£"¼sçªdH‡‡P~ÏŠ¡ CBÇæ¥§s÷t+4d ga k‰2Ó½^ #Å1òÄé§Ép_K ™†Ty740û$ xjÑZŸ -Ñ.øÃ˜û(ärvD`c€Ïƒµ9ÀàP*© Æ„]4C®î¥ínº¢b.Ì´K¯ˆ×çOùïŸu7Ÿ¸Zie€%{¦¯zWj^5Ù¯‡¶Ì §Ñ³Æîæëƒ”-S¶qd0véó€¡ùwÙ8ç¡“ØvííOÖ/[2ý¥…ï¬ýñÖf_ޏÝ×gÜWß®?œuûÓoàý¬ô:—cíu“>öÅ®}w|ÈÆ `A#\hFû`ž 3¹ö%Iƒ¥š’éH´| {ì!R¸e1ë0ç=Vêw'DéÉb!8œ°†µ6Ü}»zËbDüUœçîNm-O¦’´‘%ê¶$©„áȃ¡ñâ;ºJêøù«`­qàlM¡¯?9}N×KóÅ?Ǹ NˆbOÅÔ4y1Ÿ^‹Ž©Õ3u!§ŒÃÂã £Ì7ÿa5Ô*c@V=Ÿo~ ] Ƥ3:=Ù¯¬ø×f0ý{u’–—¶ïèB}°ÎS7Ml«Gíòø{Ÿo!ŽÔ¶èçðü‚¸¤of¤¸vÎ{eêä‰AÐ>{D8|¬¡()ñ—ÿ÷œ¡0Ï}Í$ø’»8ÞkÅŽuà †KðâwÖ³“Â-ñþß'íÒÆ ¾Ð”éÃ×ïX27Â]ß/´àñ Itçújö]É[<#D{è/p÷,<FŽà¯bâ?Uàí>2±XLüÄY‡FúDêSn)=´Ô¿:9#d¡o¢¤wç2v164ÿ€Ò³#}½IfVžÉËO Чm÷EúBð{ã# >w‚ø/§§(£ÒÅÁ¼àwdR$©>ÇjPŽÁ[èñ€’àÜ€¢Âè²28KuNì5›C²jƒ[©tË| ÜŒ úCƒ´xÉEëö€œH8òÊ"²àqKp‡9©*!2’ûíÚ-ý‡_Bs~ïù½úvW"ÛÞ?æ™Ý)YcÉKòñ“ùõR/Jõéàë·SzÑÆ·bÆ@cVxÿÿÎÈLÉò"äÈ7>±ÙA¯óø¬ð.;úоpô²Ã¾ýq#|@ÏÔ}ûæ-KéU=RV¯ÐÙKSæQ¡ÿÝ¥¼Sx'G£gPLŠ:ºõ1‹½8er¦©oϹÓ7¤.x.©d 7Üoß|‚h:êuæáo ¤HkÐu>Œå…_· õkÓ’¹VTäˆ)ÉØñ/Œ~Z%²Úú×tœ-Ö¼¤ëÉÅ2h‚EÀl64.ž=2ž±€ç¼¥ ±¶‘ÐTŒCÜe‘ôŠd5ÅD˜ì .¾‚žÇb—¸¯Y¢I´j¬CžŒµáN¶gŠý $| ÎsÞdÆ|ñõKtó [ÎŒ‚F—¶%Òšñ¡qñqzñð0ÿñçD!„Fv–êëc &沈9EþdþÞì)†v*£µ‰ãÿd5 9 ÿ]¡Íð€œ½”#ƒ†?Û†g)e[ã‰ÍÊm®ÁÚ€<ú]©ôI@©TªTðQÁÿ`†@í•YaßPn ’å;!ŠŽzlÊí^Üð{ÍוVóD¿“±+Á€â²rv\"ÄCÀ€ ½¢73ÄÚF”¹[8Vð85˜é£áÃ|áʘÁó¦ŸIýÚ'ˆd%^_þ5ÿWŠÿpARî˜Üµqϼ“Ò‹dUQ ãóµW4×Ú+:‚¹pg²ãZ b 2HÿðÌ@z½>kÞ;hŽÎ<9AøŸý àÄZ•å¥í:ºh­»,ïcù9™†fO²cÿþм}‡Ô0Rc)2Õäjâ9—w-f‰ÙÄmGö+ôѶóÄE…DíÏ&â|È=JRþj’Íçc¢®×…¬M çÄøÂÀ껣-“ö‘î^è¿X Àñ¾÷ÜÙB2l©€ÕÓ˜nÕ k•çÂH£`à0²á¬¸kq¡ÿÔˆêød‘˜ÀÓö2;@F,Mƒ@ö/Û ÿ$ËÆoÓŠÏJð×…‘©É6HBT²{4ëÞàf²ŒŒž™ºd5ØMFRÙ_„)šêI¦ÔÜ $àÿsDA[Œú?BMñ1hïÍ:$ ˜×Pr ’AéÃ0_¨×ASxƒ/Ÿåï˜ùmI/²ã÷ÐesG‡‚xùÍ kþ{„캾“o€£e:I¹DJbƬÑíÃûf&ía¦Î&Eá[A@*•VTTH$’²²2xeÌÎs>`„01/ûÁ2ŦMôB ß˜á~ƒ}ûô®‚øfA×îäôö5WqòŽc •Tx’}ßD|îdÓÈPîÐæ˜£‰.ÂÏ6¿ä™/Ö¤’°¬¨Y¿ra2<qÇâ·r µ â¼ø=Ì( ºt˜chthô‘údLb~À@!}¼.>³WLhKS#™uØ+lsÒŽTî³f®—æÌlPÕLœ¥ *³A™Cni‘Hî{÷*Yÿ‡ïˆ`µ•k6ýýç_ÇE¯ÛòÍÆ­¼ÌÓúPÇKø 9”x„a•—ôáö±¡¬„äî:ÈD…ò2v]dÊ¿ååf™–ßkÜp’¸ç‹DÂùWŒPv]úN÷¨éq$ÔOÇ:É+ÊîïA[¨\#ݸ&C2PïbÜÌ@r¿ÝÁÄï,ÓÙ´04šÌ¸-*@õ|¨¯×ÓDŸ;~o2ÒO÷ Xó™ó&èh…óÏ16#˜Í[m#,Ü ç!SïùÒšµ4ðè°b~¦NlþͽexÈPqáü—;unÃú?NI†÷\Þy3\®$4烮3¦‚Ìz‰O\f¸ïf› ê#Ñ86z=s}C—\h·üPXÊù0òg¤Ö‰§ø„Îþheh» Ö<=aùHM#8&ʘ©ÑýÉS¯3ÑmÆÏç?Ñ%Žô;¯¿‰ŽÐl„Ì'n÷X‡éÀìðþ8|8Fi©YgÓüñˆí#àà3þum´Å©u¨¿1;`Μ9¶5´¸ÝƒÜOó‹ÿñëÿÍ©†tZ&á ¬Ž\.%’*ú~Û[áSÞºÙè`oÞ.7Ú^‡FÈö×fÖ vEúF ßSîÿ»Vœyá2{%Q\]Þµ÷$C!ïlþë詳‹^;!`À¸)GR÷þõ÷|²Y3_š·8"ógóÃ.†BjmáeÖJk‚ õÍ ‰Ï§Äq~D ÔL“d‹VêDˆH²mbJ®î+}ü#P¢wOÁºµk…Ba¯^½8?ì<çcÏΟ?yÿŽNm¸p„”uݪá1‚>žÐ L«&ž ¶ƒÍ$]úÃIø?ޤîoÇ ç‚·ƒ]^z>ªühÆ£‚Ž^2G#*›º6.»¸ñ\“FTE5-à  waæ=—:½ûÑ´Ã0%}Ùò¥¦a;"€ Ö!ðǵ?†}ÿ£u}›º$ŠÎºH#8{ûgå²£ç¿×ÓÔx üFÀTr>ÊÚutf-¶ÞÀš´dö°¦‚‰W[2*8vD "àØ¶¨ulÕÚ¨j¬ÿÃè¡Fiô‰»Í¾“o…´®K¤4Å3YSɵ"ìROè­u¡ËÕþ÷v©'‘ "€´ Zuð”ܹQÚ4f*"P¨ÕewòÔNpïôp†œmáû? h°@†ÀcÓ*ÄÛ$×þÛ†ÃEê °<$®ÓØÔC¦Ü öšóa8`lAD VZ»8t[­ƒT+u·ïUÔx"-Ìù¨aÖM%ÊÔÐ!ˆ€í"€?yÛ;ÔÜÆÀœ›0T@D°u0çÃÖgõGÆ@àö}ÉïÜ‚U‚x6•c¿±îËPŸ'º¸vj P"`³ØyÎǶ£tmSm‘+ˆL®–V©+dê ÍßÊ*R)§îVX)hß»xɰÙsGꀀÒÙ¹ßSýLsx”>¦Öp:bAZ8U:ê!`ÿ9ÿzì3ì< +Âþ U u'¹LÔåª*Z³ƒîS™}ñ:,·ÖÂO>"Ð2¸’ ›Ã’Ì WŒnÔ‡Ž¤ÿ9=hàšŸ~/•TIej•ÚA&'’JU¹LUY¥†g˜*…C§Îí¾_>`êKóÿïç/µ0þƒ §-ó”ÂQó8›}‰üC·"Ò'þ{.vùÎË­›ÿ°£ƒvu‹…Dª–Tª%RU…Œ€ ¢ÅÖ³@£@|vƾs_Öo ?TUA¤Ut¯(¸’Àê¹yb%}Á‚ µ नbÖù¨(k×Á™­×Òæ?Ö.oö F6œÓV`ƒ8-\/ v;lÒJBªŸWjè¹ØXØë•)°iíª)M¼ksÓ§Fðð "`ƒ°Æ\.@÷¡O‘·HÁmˆØR›C*'ÔóQE«*ËŒìèà˜C4ƾ¿3ªz·á¦Ä(ýë™?{|¹!Ts]ËÜøÜŸ_§ˆ½ž>âÛÕSy»$7¥–¶'[¼çÍ·ãò½½Â¶|=Ñ4pbìõ¨j˜”OO1¼†®L^èOŒuí¯ž2–¾¹ZLüÌäå|0Vˆ¹‚sf¬ƒœ¹>oíîí×צAPæx:uºZR8›C”ôÞ‚˜dÿè`Ó§‘%\õiÁª€pÍ1nG}ýð;"Ð8™}ÃÉQ½;9­· ª4ÿ@Â5™´R&…RYIº¿V >T0>d2°L”tÛJ‹Šg8{¡÷†Cè]¤é‹ÿ࡞ù‹ÎøH?sjìà…Dè½!ybÓ+g£P; Þëý¿²ö¥hÿžL2ÕטÅ`ÎÛ§deòNz¶0¬üš­Â‰š)ËŽþô”ƺ5S¨æÌ4GËiœø>¶n9“æÛC!§ÆX‹ü²´Z®#¯ÎžI¸mÉw ©s'޳z ÂÐÀm‰éâà¦v~p#hnúX ,vDšr…bÆÎ*Pæç”fîkëñx«‘³ßø`½ccyTɪdRP؈ç£ÖÕC€>>>cÉÞâbâß0Ï1–ùxמG³ÒßðfÆœvtè7L­Tiã–J-ÞóU¼×{;£`Oö|Lœ ¦[gOChLµ¥¸äO¯®BóYQæžó&±æZMÌ¡1TÛ¼&çCãóà×ÍëÞܩڷïÀ©Øg£š¨J’±uÓö|Õõ³õR‘äð1÷“^ó'G,þåOFLàŠí‘Ô,eÜ+üN®¦í=_Z³6¤+=\M@;2d ŸBNÉų·Žœ3·ð§â0–äÅ}ßusmî–Œµ³WcxŒŒLÈ—Õó¥iÝ·ep>}J¢–me|ƒÍ9Eð?D e"¦…và7Å<ýÜíÿ­ÙïÒ#¨\*m#ŸØÒ*Y¼ËÂ.<83³yùoa-x®]Ï\=†®Ü¾ñžHÎ]?n`p1©& \ xÝ'îõØÀÆD´uZ!£È¡£µñaiôzðz;-s!}žÅFùDÑ#<º’of¦ bcFº4{ÞÀÝ4a¾²ç }Qß9X1A·E3ãF-ýõ ›,½áHvåyÅ|}Æ®ŠYè]c§®„;szÎa£fìtL.ZÄ :>'Ìë§xžPvv øóN̪BÎG%°®¬xЮCg¶Þ@’š„­6ìÒ‡–ž8ÜÖÁ¡Õ¢Wæê)³á‡­½ž°r—HQRâa/¿Íœ{²0ß}Mj˜çbÿÒ}Åöµp¶Ñ[û{ \è¤pk¼ßæ¤íBÚ¸!Áâ)@™1lýöµÀ!󻈤¿ÐŽÇGvɼ”~.Ò—Úé§ö}@âëã±=5È©5“0y #‹ÓŠF‹a€0P@¼Õ325š1V° ˆ!dä eFN~çg‡Í;ÕïN¿•wcþzP1Fv⨢ò¾²â¶JvW]õ@õÆ* +Œƒ{ôÛO,{'ÈŽ^”>bÃÎ ð Ïܸ(Qì/LŽë¦= ¤@@£7pVÈŠ=œÍaTražû—¿î‡ë µ`Žýò×XM&å£+H›äAƒ†z‰‰¯ ý쩱ƒê²Öï¸aÐÐÏfGùzƒ¥’çEò2ÅS…Qf:q_lT§–ØŽ ýa{Gí_Jx&#\ù5“•¦O¬÷ú~ úÜOZë ãvùoÙ¿S!¼UÉé¡ZcEWÌrµÐÄhÎLήҬC¥¬¨¨H$eeeAÅÏù Vˆ6ìÂêØáÖô±D¥¢þ¦P?Q;¶jc|Ô2ãGIáVpHÐc&sî/â9̧+å+ç“€Y¬‡­k𬑿œBÝžs#bm£( s¬ÀEáÃ8â4|XÙПÀÕYK‚käLÁ´©Kô¼ ÆôÉú.hõi†‡ç\à çwŸ¶ŒÑJ8‰F‹([hÔSÀ§kÏc±Bc†Õÿ"-Öøø%%--={Îô‚´²²r…´¢\^Yª”Þ³CUUJÔ;oÄXX<ÃÁt ðÀª sˆÄy¤ðk‘¯Q>Ä‚ 1‹Ü5 ”@ó-œøâ¨ø´B îl5 cÃÓK´aB(Í$§ÓÈR.›ð3£ÎÈȈ§T—ƒFÆ~¼N¡} Ïê6ûc™bŽ/Ó'xîîe¯†þBºvg9|sEÀ„Õ³Áìèñâ´@’Á´(àŸ5 Ö|XŸYüa°! VíæÖ%§  ,üÜÁcmÙÅÄÞ_2çÓuÔøXxÁŒçVÆþÈŽoñÜÙë·ne挗^[¿†°Gÿ¾[ak0 ¾ˆ@=#~î’ôŸ\¡PØ«W/@@s>dÚvèÌZl½že65;Áþ™_{¸@`–C®¬RA"„Õ‘m¯ˆ“wL[¦ã±r‰¿Üè>­V•r±"`‹|ºìe¾Ú?%ž‚T寿{UV)a‹(Xàÿ°Å¡¡Îˆ@“ @×ùÐú<øõ&Ѧ!„z~~C°mtž%{aí|Á1’ûe®6,–B* ´*«¹Ú "`£ܹsgÌ”WÍV³¡Bƒ€ß硵BìføÓ‚üàÓl†3ðÍD«Ïè:9z»Þûn–«^˜X.{ ö…ÀÒù“àc_cÂÑ Š@õ:ögy4*( @£ ãÃ(,ØØ²p„<@@ëÿhÙhàèD@D Á°óu>?€ ˆ"€ "àÈ÷y`äÅBô@D@,FÀ~r>’³KfY v@D áÀ”†Ã9Û.v²ÎGøtf­?MUÕaë¼’’’ÜÜ\ø+—Ëmw†PsD@ÌÌÌc™² ¹Ì©5Ý"`ùâ™›•À>Oua‰­îh…¬ÆïÒþ‘^/%"-f™”9¿nÓX888´nݺcÇŽ]ºtðwx±éq¡òˆ &u›¶X(ÚwrUÊéfª°t EàÀzá°Ã¤E]Xb«;Z!«ñ»Ü‘™”yàdy[¥LV+VVVTHË+*¥•R Ý'¼¼ukâêܾMku…´bþ‹A]yÄ$#<€ „8±–‡L*iÛ¾“Ö ±udXãÃÅÅâææ†Æ‡­O(êÏG ''§m‡âªÊŠ6í¨õàÔºÔaÑb‹P× ìmmQ–ØêŽVÈjü.w.Ã¶çÆ‹k['÷Ç…Ri¹¬òü-//­¨xP^ÞªJîàÜÙ­uµs§ön9Ëd•hyG[¼œÿÃðãÃÉÉ ìÀÿ&ˆ ¶¾Æ‚Ø `O·nÛ±}燚ý˜ Û%X4¾²²2Ø^Á¢.,±Õ­Õ]L÷eŠÊ•JÖ©£ƒcU+u«¶NÚµº}DZK×G~¨S¿>žoD¼·|y}lÐ#G‘ˆ@£"àÄ÷y°õF•ß`ÂXû£U«VmÛÒˆ8DÀn€\ ÇV­UJ%ü­’JÚ´ïuK- µZmi@«;Ú:þmÛÝ ¯³B±ZMࣄ+Èüð¥S§¾cüâ‹u_|õك͎K÷¡eJÏ9kÖ…0F¤(96k`dÈ_±kId»ï(´Š–.Û’G7Dý>f+ç 7IDAT¦q÷F%/Yœ>|ýgS, îqãÂÿ4hf¾×2‰pb$º›xÆÚY‘ÈÕ'‰¹•Lœ~2aö™óÁBö”F… ‡€£££öÄîäö(-;Û" €ÞÒ.,«;Z¤^3$V(ª÷¢¼v-//¯€Urè°AbÝÍ|ÏžÿÂß/¾ú”š…cvñœgpe¥A0#î|sG0%&²îIKMYÝxjUÇM¼n_p­ &¨ïõ •(9!“Lñ­Û”‰’·Œ%‰ "o»ÐLÎFN¿šFQÇì3ç£þðANˆ@3E@ÏgYZZj©¢VtaEXÝÑR ›½\QýÒX¬©‚+(!áÿ p{,ë}}χ9ïÚji27Ž_}šø,Æ#èTØ÷ÑÖFÍj)¬õËÍRévB/Nˆ‰÷Z±#ÒÎfH‚à)àäÒbk dSí Qf: X4•lø"S°5J©¯€å 7’Æ t ¿ûÌù¨/°"ÐlÐ{OM¯6_[0 ,íÂ2·º£ùº5OJ…æ}í…úû¸»(êÀçF¾:? ,ÐÜrχîp}H NX{Î?"X¼v#‰XhbcÌìØD÷—Ü·l£–JÏ— ^óWlÁY7BÅ­_Db–‡íˆdŸÝÁNŠPÃH_à ñ¹y³YܪÛaFôAÖL):ý¢’Ý£õNqúi2|©@HüIÌ9QT´E3¹ƒù5dÒxóñbHÄ„³ã²ÿ¿^‚®ú³é­7e¼ ÊNÓL´Þ¼W ñ_Fçzà0²á¬˜q¥p½ô8s´'–‰±Ó¯‘¦Âžs> Bƒ4v³6OÓAh®dxc,Q;h¬ öÅ–¶íÚ±o?¿?;à99ýúô4—)¥óœË˜ L¡ÀVÆ÷p˜qKl=¯±HXþ_Ϲ“™'Z_Ÿ@’X,&~ü›¾¸$Ÿ^ø˜ ¦DïðOzwà³H²1B¼–}ùÅJØ>¤ÑmÉ®®ÂÝh5ù0i‡5w6XÂÞ{êK‰k’Ä’˜°Hs+Õd ¿B+8Ì+þLæB?ýÈKmã¯M‚T_ÈIöžm…’eAÛ´X£ÐC“LŒ7V›#+žŸK"ÊAz@€ÿ›Åßo=j p}(UD¥$cÆŽøns´\¡–T*Ë¥ªÒreéÅÝŠ¿n?È8Å N5‘ˆ‹‰»€ˆÄÅÝ-\»E‡© kwrzG¨w…‰kÝ,ö:X"`7èüf1çÃnæ‚´`ò¶í;Êe0`¶ÞBFŽÃDlþo–­ÛôpìYyx¬Ã‚ º°ë|PË ³fWG D ù#€¿Ùæ?Gh{4ÿ9B Ç*Yü6ÀçÙzã+DÀ"ô~³ðûµ¨;#ˆ"дà:M‹?JG¬D×ù°8ì† ÍÇ*æ™ |ô/>?5ƒ)AsàÿfÙº9½@æ€Íù¨ª¬ÎùÐÖ›ƒr¨"€G@“GÀÿý§ÄV H>œaa$G‹pb­ªÊò6í:¢åa1~Øh"ø¿Y¨7‘ö&6|ú8þ`39‰DRRR’›› år¹½ ǃ4­[·nÅGGšïáÄÊÅç§ÆÂå õƒ€žÏ²~˜"]àŠÙ±cÇ.]ºÀ°E!D°0;àw¿&øMÁ/ <Õ>¶n_ì… ‰ú,mÖøpqqYnnnh|4æ(Â^ã,ø5qÆæ|ØëLã¸Zè³lÐY¦ÏgNN:t€Ë%\4U*UƒŠC戀#ÑøAßü²þÅY^È’¦aIEND®B`‚PK !›±}U}Uword/media/image16.png‰PNG  IHDR-O—½è pHYsÄÄ•+tIMEÜ  5V3&tEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/05 17:28:53 lim_j SGA250167i[Wl tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí} `ÅòwoÂ%— AEDh5€ÜG6 €È-AÀpxá!òÄÏç“÷GDò5DE \¢DäÐŽM"·á¹÷Þ¯ºgvvvŽ=rÎîö¸†™êêêê_OMÕÕ­a‘­‡öv‡þ¥PjC髨†4`‡ÔktÚ E@°ÆÙJ¤PjM÷ØÙµÙm‹"@"POHêЦÉËÏìõhg)¥P(Õ…ÀѺUŸ~ÿgîu^ ‹¾<ýÉ^=îCŒµºÚ£r()]êøÜØsÿ›&o‡½zÜKPŠ¥Pªlk‚ÍÅR#¬v¸©@Š€7P;ô%ÊC¨Y\ß[0„™ÓÝ£á~qI:–X‡‰>33‰nΟ.%NÓH êÉ"£KŠq`³Z窹¨#’C诰_ÜaúL~P¸î):I]Yeä‰ ÐEBÆ?9a‡ý¦cÍ}™žÁŠâ),!âZBµåx|ÃA^íªt¹ru_}a¢ÒO*0sû7À …E²D¡e‹ìЊCSƆPçåœaôgξÃÌ‹ÿH‡‰5ñÛ3ý–§’t%c}ºýñ?WÎ=Kü‰S3ŠyTÉ-ƒî£î· ÈyˆŸÚ·ípË/Æú+ìw¨ý€¸všct¿Ô΋î+‚¬}jô‘Sy¼„ôï6N{ªåGÚ·³šÿv4ß‘‰>%Mo½~ä‚tƪK™3äôȉ›µ1yI=;i¾³O¨-áñ •1»ñ…â±³ŠÖ»ßÀÌô­?íÝÁb ;pD(r/XÙ¸”?PÄK/L{må6ݳsÃÝèRé"gCnE`¶èQÚö¼¹/·ç8wî\ÿô´ÔÓ¤cnk×váù¤)ïDo>¹n°C±NÏÎíä“’"XÜzìž2ÈaaÝ>Ý™¾ª§Ë8°ùÓ§G­²¢º#];E°ÏÌYÍѳsÑð€ihåi]ÞéÙÓõä#bµÝ^ ÿ™ûÓɹèÀôOO9†ãü61ÛŠGmk‰!3ãø‰;Á¦âÓ&÷raøÈÑpÆnÛüqihÛ–oz÷€‰rÌlkJþJÙkDö÷Mo2fúì1š&‹àŠˆr?éÞä ùMç.ö˜!iGï¾"Ÿ3}''©è”ug­G'çE? ™ýIRo^\€iz"pÂX‡¨¹³¢~D$À/?iñéåsû9t³¦Ïæ”ÑÌÞGˆ2+±òÊHØœé¾â\%—ÈWÔ™í«ƒÂßܽiGGŽÂF(úÉâ#Kä1g%¸?”j›`:†äó ³È´êÔ{|×o7³Ã·c×úø~ZÐyp¿iGßÀŸ°¹y'ºÆsô(|e±¢N÷D£Ó§YÐÈ9ç8m”x¤°Ô eÐСƒ†’ëcƒC JF¨‡Ð»)+¥?\U<Ê\w†Ù»o?°@l„}ûÁ¡ § uWhºJŠŠ² óUdBºV¬ïÒïl;ØâÉáŸ0…w!Ó¶éÑïEµëð „ò¿íÞý™¤Ã+ç†a†yo÷:[¸+ç% â¡éÑß?¼ëpB™IÝÿwT;[ šÞê³(\J³5[¶­ëÛšOß²eÚ«»"8ex}"GMzqó³´¸ÑÒì½6´+Îqè©MÚÅ$'\‘ôb$§ÌÉñLá,hW3nUzÂ\@]ÂêqÑ}ðb$BËq¯ÝêìÔJ€¢p×\†ºÜ.Pž/“ÅG‰ÈáO*;‡CîP¢mÄ×ó¢3™I¼.F<Èbå™–sõ½ c>l ‘ë ?I0\³Mûj×:@›Û.'Å¿ýŒË!„P ÔM´/ËÃK«ûAý1VþôÓo JïÞÂ!é¾Â¦T¤DG¨Q}öÂDv”ÙØö\íÐrƒPK:;¯ûàyx¿ïö‚>˜İñ"ØÏ?}õ}«ï °twŸ·&¬Ù|öº3,ÿ€0óD pž]ωBhÂC¸ /Ë´b@ìûдq»Óß Ó¢ã›ÿœ´à=Bä6ŽM;{Ò›³>ÓõÕêþ·&zþ†Ëqgõ=k5÷ö°åX Qfv’ѦÓgnhÁÚElgNŸˆž´t$âùÓÞØ„ùèNg‡RùéÝc¾8‚¢ç¥ÕRŽ_ÒYnD8ÿÊá# &:`Á•Ýâ±pExÀ?º}±¨{xÒá™mIÓ¢ê.jE èfíÑ=ßõôŸaQ³yÌÎݱa.îààé_nX7WIŸûܼ¨WŒ<Ëáé"\ØKëu~0|hWd7€x‡;ù”R*U ÿtðÌ̃½{>â23€)²û Ò‘«:¹Â–g-Ænª’[Áé“ű•]OSÆ#»uYðïMVD M'F¾(9‰I•°®ãÑÊm{PÚÉI°÷slpÆLDÛ 6hQAÒ•²Ò1ÑK6Ìê…ÎaÚÃ. ×.(ýÅæ= Zrú*lB|xžØ6*ZP/ÿÊ tÏ(wc!Ò¶ (¦[½HÓ6šÃŠÔ@Šb6ˆšÓnøwVäöãëtiqèU&© ‘#POQ7ox•ªÍ‚áÚžÕÞ\æžÃ™{ êßmÐ€î ¼QÃÛÒ&öP¶9×ûCY)1ìÎh´óRŸþ憾£¸s.?mW!M;Aˆ„óÍÕ„èi‹ƒ¶|¿t ?˜½K+´ûê=ó&~Fvu1Ô¿.‰n‡)¸]i-EÊêøb)éˆnõ¦õ,£/:Ë5Jö]?qÂt¬Uz·/Á×—ÛÞ÷@þ¼Yé:"=}åG&ô³xR¬ mÄÌÅgÿvBçù¶ÃG"H÷¤'åɨ`Û–ün‘m!ˆˆÜs–3B “*+ñõT·+KA7oxØVí¯È¡{`~`“`™P¤Ô[%¨ÄÏÒ»¬ËšÔ=f‚aÏé8K¢Ϯ„Ë0PáJLˆ,ç\Í¿IÅ pM%;ÜÖeÔ„wãb&ÌÃô.(LûÖðu×͵À“Ë£Ñ}\ÄåÄwçF¶ýE÷&ô$¦`_†­Ëº/ûj&N ìöïIÓP©á^g‘P¹Ã LV;>EO:»“e“ât¢6)iùÒ#ØpuÖɵ%Õ6î#D? W´¶. KdÀå¯Û¿×¾wæ´eG–Œ×L”4d?:8eÈÈ®›ù"¨§Ùœn†ÌÇ^a41Q!æ‘4ìW„W_ÿÐK}±Õ7(Üd‰B—¼§CŸôò²19¶ãÓÛnŠªR4 7!6Çq7$rMÔ$ ß]zKx§WÍ­Éâ#K¬æ†©8u"Ð㹟yÅ*—ÖP· Ä=9i»Ûªj‹ÅáÜÖ`#u+l~‚Æù[›^·êÐÖT..­vÙÀ‡¸òOhª½AN   ÂÏf´µÛzMõJAn—uÖ)”QrÝ"PqiÝv„¶Nð3Ô—úŒT]Š@µ!à—îù«kµ ¦‚(¨ó9¥i1E `PÓóÒ€™vŒ"àj‡¢ÅZ@ 6ìð·Cð…¾7ª˜G%(uòüþ°´äÆÅ‹§m¡!¡[ˆ¦¾9ÄŠ4áiÔ¨IU{ Þº[o¿û–[›çí[Ò©O¢ÅÒ¤ìfù±bŸßâUø_«Ùj5Y§tx»*úк:DÀ³^ºpúÅGØC¬Šì!š;²kV AMïE¡ŒÍjEw·nÛ¼ISŸºq{Ø£/iÿø„†­º¢Póå_×ÜÙõœÎæãFøÄ}îúu¿õü’ÝRt7èmµÚ-»Ùl3›­&“ ~ · Cé°q ý²‡Áª´g;d4ÈÞj¨ ÁGÝvMÃØCC46 S4 êZøwNÁMÂ}Â0$´¼}Ïé¨ÑÃ-:uDoïл²ù6¿EZáb›Ùf5ZM“Åh}?kŽÕh{¥¿rÞ“Oú©’,°I“¦¹¹¦_’13ƒÉúÌ”Ÿšãœ@ØîSe¨Ròxc‡ö³…ÍW¤ýñòxœÔÈnŒ¦(ó7=$4”±kPÆ^ZÒ²ù­­ä‘£ê27üG—V÷ßÑøÎ†?_ÏÞb¹p±<Üf³36øƒ7X‹êÂÅ‹ƒúÉ}FØ7ª§Éb0õp_J¥²t»½ù…ßVÜÓuXiþ¹&zü•õQ›‡^ùÏʵBæç§N‘­Ë§tÄfVþ’h4ëÁã{è·;ÛíØ›ò^ñ¹‰cÏäžwãWÝ4ÁݼzîöÛo?œµ§{Le\ X`ï(ÑkJ šŸ~ÜÐ]Þ4*å1ñœEz½^XÄa¹Þ þÐh4ÚlÎ9E¤B(E…x¶CvÁ`ð‡`lî:@ÌÕûíÆ…ì6QS®Ý,јóÏôj}ßÔ¢‚s¯%.²Øà9ö‡‘÷Üš¼ø•ùº—i1X²öü ÏKÇk»'³V;"±­·~Õ½|(#¼í¶ÛÀµiÓæ×Ÿv=Ö{°Ç*"° £%äü t麹´¬Ü×ê<¿É„íøCns1B—Vè+lvj‡•Ƹn*zc<8òè}UÿOÃXd@—®Æõš?Ï÷ˆv§÷NòG¬œUÿy¥žÅزeãϾþñÈÏZ÷™¬$ÿ™þ3ixÌ×éøe·'ðä“?g~ÿÖ2üª’d–^Xðk„õëׇý_ì|ü‰!îk‰JÁrþ.Ö\¹i7+ìL¨Ou…Ìl\ W–(2B8¬Àv¨·ÙÌ•n‚V¬¼±Cü®Ÿõ‡‡òÚlVxŒbÁÿÃ-þ¥V+üÛxßÁÃV³IévN¶{@6mÖ`ÿÎïØ{Â9³¦Â=!8Ã×,Ô%êá.í?xþF1j-[™A‚ÅŠ#Q›ý²wxBõZâtÞ¯B)ÈT஌ðÚµkW®\‰ŒŒ´X,!!!%%% ܟѳo¬»šŽ2¸3¨š4 5š5“Þd(-,*{cMÎ-þ+¾“7„<ðŠÂÿ#ynú!½ÅV‡ »A¼c6Ç…u0šh\ê+®uÏïÙá½lìóR‹Åüü˜¾¬Öpº›-Œ¢@„ŒÆh²ÍöÉ3_òÍ­`Ö¨ï§@ȶ-›S>ü˜þÒ3OtéqK³fm:þ£I³æìt޲hÙ‰;ƒÕx¼ÿpøKüªK¾ëÄ ŠîTV&OlÕ¶#üÎéþhпžÛ<¸öÄôê¾–°tðÅ+¶ÞÞµ´Âd6–™ e·ýã…Þ^X™i .5A 4°ï#ׯãh—}öÃî—M&£ìúCï‡Hœží0^L8ž—š,øÆƒ ÿd~÷Ÿ÷¸0’íʸqÏúÚ'¸¼[möÛ¶b¯ecžŸúë¾ö.ú@m ir{‹f¨ac7vÈJ`½¢Ô¯bïJ$ûª˜ˆ¿¬¬ ÎxØØ»eŸ¤½<²Õœ”ŒÈµËôe7‹®]^Y)#„Fá9 <£Ñë­ååæÝ¿¿Á«Ñ°a}p°&Sop†Ô}•0{¶CPtÏo±êZBÛÀÎ/û~°Xm&3óÊì©à &âÍØúÚ«üüüÁc¾Öº¥õ}-Ú<¤?nz´W‰)8~ìpãè—îQ~1ÉJ˜ñܳ²~••<ò鉾*&â‡p”õ<¾>få¤Ì‰š“òÛm-o+/¼¸bÁc•VîÁA½?ªÙþåÿºõ²výg ê…¾ÿáš‚ŠrÝ .1„úÃJC\G=ÛaÔƒÎêÐñ“pº?Þ?ùá»ÍÉpa$«üÐa|í±¢8ö«“wßÕ¬^X—=-BS¿Ý¼ýâÝ­ÆŽQ·––—Ê g%ä¿"ëWáxå`eëzO„[Dþéˆ÷µ„œÄsR^qLw_))ä[6ð‡¸(€0Ân½7nX¯QÃzM›4.ÕW4Ô0&‹¹!}^Z)xë°’g;*g2š ̃0ìýLö)“ãy7;&‹ÏþPÚóòÒÒa£Û^ÍmQïæ1îüÚÔ©Ô\ïÍ´óµòvÈJúU©äJS:D<Ô¡:&S¬´lE¸¬TTÀóç?ÿl»™óî5jzé|ØáÉ£¿ØmCÍŒî`ë!zXE¤k»ºovh4èûŒL¨Q;Üy˹‹èâͦõïì=xPï)H_á¹A©_õ\Ç9zônðÓîã%%G7‡/ÜÆ}¶æ<’!O¯áØÎBŸB‘ÙnñéæGøf‡µpº>™毶Ú¬G¯U„6¾Å¯†j*ÿÎÍãªw¶; ^â¸yãQeP#¾Ùa-ô`¡¶1Y¢ˆn B 6òñíQ¥‡57T±šÃ–Jö Ú°CŸ¢Ì D€Úa:í²ê v¨º!¡ !.Ïi.ù5! ]¦Ô9âç¥ñññu®U€"𤦦 ûHãÒ€qÚA?@@ì«Kåˆ1Ü’ð ÐhFåF{©ž±WØ‘Aåð׎`n#þ쓱=Y]R9?E ¦ìàˆ¸7Ìb³CB†Élÿmùδµ)ÿ<ð]¹™1­V°@È)7Ûº·^µC?=y¨ÚÕ†@ Æ¥º3ùçrÏåùëÏœóÈPb5Ôûû๲ÝùÖоó(ë<:rI¹¹)=5ÜÖ3%W™O®$c†FX‡;„D›Ï‚å£4Š@Õ¨);|û¹ºàwå«£úo~ÒèoNÓ‡ùqãÿ&þ_a‘öZQÜ•Bí…k SK`ŒÈY9·dKEÛ3ªÞS»†—ž€b’uxÿàœp/䊬ڋ”…"à#¾ÙaVVL—äM}l0™Ê†O?ú|ý׌¡äÃ~{ÅI ¶lüaæ†ûm6”}ꌜ¨Ü”øÄÎéÌÞHÃçÌQ0X¹ê”Fð?|³ÃóçÏÿðÃ……îRY ,V‹A ƒF'èÆ¼tJ³üêO|û×IK~fcT+Ën¹Û7f%Œ1<â—2¸pÕRÊeå*!ð âw…Ç _»e%Fh4l¡²ZB¨4¾Ù!4Ó¿ÿ-[¶\¾|Ù}“VXë„al žæPûß{:‹1ä¶Ðå­ÐصCE™4…TƘ(…´Û¬ÄÅ(J]2JŒwÜ5ÊÝk',͘±q S™t´„f,Ãî˜lkb!˜uıNí½pÊIð Ÿí°uëÖ#GŽÜ´i“N§sÓÄ¥ L¢†§ôÅ¿)˲ž}ç`qîëë¨ìÚÊåGÏÔ_Ýnäy Y9 ¢c’SÉ-]øœE <“,Q^° 5÷l6ëîàŽv-³VKáÈ`EI5†€Ïvš´jÕjìØ±iiiEEEJŠÁ¤`~ı?ÄÓŠ20Å(L.ŠXß÷‡ðJC¦zxܘ˜µ[=<˜ÁÖ#Ùx"X’ “;Gº{"“À¹?âÁÈâgCñ`˜4•€L 5‚@eìðæÍ›_ýõøñã[¶l©¤T«–ÍÀ‹,¥ÇÊOì(þþ¿Ùc¿ûýÔMc Ìz÷úC^ÛÓ:)ÔÅÎn­V`¹))œYfmÜN^a¸ÜCJ‰á‘³ø¸ÂLùûM¶yàEkq8êº1ê’c²ÏŠé :S2E JøüÿÆ[·n=zô]wÝå¦å‡£:Ø&3?#¯é–ŽèÉ2]üšÂìëMi7 žÐ%(”kÃM™.ª'<aYà-·~QLçpSY@æx”#CŒ]£Kî¡IÄpu™Ç>Žæ]x±Ü[ñ£¼Á¸Ñð Z-È‚#z‹è@þ[½øl‡{öìûCMÝë1¤_Ï's÷ÔüÑ|w›ë7,XÑö_ßêþ~¼Þà OöJÝü3ToÙœ]ÉTNe–—Šš‘ÜTÊêã¦ÀÊ]ÍRÌ á©P'üâQÒ¨œÒ”F¨$¾Ùaûöí£££›ÀZ˜n7XŒåÀƒž<ùÛ:š{÷ïw”„µ8Sª¹³^ƒÈ¢ŒíÛúöyð«-_nÞÞ±[I´"øf‡11 ŠÁ d§Nòòò®šËÏ\žrþfBYÙ·-ÊÆjféýh4•––@eí¯¤)6C (‚€ovè}¯Áyt礪喃ý†vîÞü_3ð"žl‘÷¢œ’xÈ}—MkPêš²C¾S3b£áW§}¤SÔŽ@eÞ[¨½OT?Š€¿!@íÐßFŒêˆÔT\Jóññl¡}ª)jÊA_š_SƒFå5—V)_Žï’[_- ÈÌwùž›¥c’$÷ë#ȵ‚oOé—àÕ2TA ¦ì°ªùø|.d#uVJ¿¨ÔâŒÂl6¨ÆlŒpš—v-þâ[6KsÃdÌpÃV)h%Š€ovX‹ùøNkˆ]SŸuæ¦,cã…‡ÏI…TÆeŽìÅÄG×ÅK6zvQ¼EÀ7;¬Ó||,r—ä’Œ4>˜uÆŒ¢\{i²?N³‚´ gÞ½B¼ÉFª6q.¿·¸S>Š€ßìjÖf>¾ã$çLÃ9Ñ“3QÉ‘ŒŸŽS¥âI²>$Ðgq.N’kqfýëÌ»— K‰ØääÓó‹"à;>Ûamæã“Œ\˜–±q‘ËJ"TG2~옅mL\8¦á}’9(͵‡R™dÓäÛt·#+ß]ZFGÀg;15œ‰¹rù·àµˆ$ÎC‚®|g䨢\{I²?ŽTÝgëËIuÒ\å»ç¥¥*c‡5œ;DH¦¤Ðåd±~ [ŽBoDd™\{6ÙŸe"Jžï&MØ]K2òݱÓ2Š€>Û!äãoÞ¼òñ#"&U#Mñùø»ËÞ1˜ô8ÿDöw—¾ƒ4|ùø8MGZî™ ¼d “C±æ ÄøœÎÞúCœk6íòtßâ9…ƒ‡U¸!$s%’MáÉ ôRN¾Ò”NPF@Ó=v6_úÂØî×]ƒ¹¡BBBè1¿}ûŸøÙ¦?šÏnsý†%ãOµýWã&¿wÿ>ßf1¼µdÙ¡ôuÊêÑŠ@`"ë®­úúß7ß¾k£ùøyRÐ^Õ5¾Ù!Íǯëñ¢í&¾Ù¡÷Ô@>¾÷SNŠ€Ÿ!PSvÈÃ@óñý쌠êÖb;„Õ_r¯Û¯–1K]¨CÛ¤4·ÔGmšiÂ[‹ßSˆíðT=4u½;ä–úÜ,¾ÞÃÒõatü¸÷ü~ÆÙ¥‹ýè1?Ó™ª«2 æbV&ÒKl‡eÌBC4xÉ4Ÿ·ãÇm6®Ú}ãöðÕfTn´—ê{…TíH¬ÎÕâër‡†j*ƒ‰Ï Ò Œ@£zšNÿÐȳy°CxÏþPimB ×Ë||ù‡Bß+qiòˆe6À¾¤‹JˆãT|¶Áú¡äœóõÇž©l-Ø÷2_ÒJƬО+òøÖE‡®Zå¥<áÂŒK3fjꇺüžX‘+i¥J½«º4*!x€žK6q\ÊÙ’«¤® Ü \ì#˜C¿”1Whôå“Çô™dLÍI! 2Úº’\øe¹½"[)N¹/2vèÝY+,¦Â:¤ÀK¯}õéGVCè³O÷Z½æw«š«×²ñ‡ikSžx&'ûÔÙ¶°É5½ÙMt(ß04 j.r”*òtüÔ=bH<# g‡2q)»®=ŽN•?îßÿ¿åKE ø´wT±Xa]n|8:A7æ¥S«Éf¨?ñí_'-ùJÀ Á²K[ÊaO}“ñBýžï¯˜Ñ¨¾~}!Ôä‰:(Ò®GYÿ¼_ÓhV/P$‡Ñ¥ô%uÕŸ±×Í}ÿ öPóB†¼¡nbiÊàH{D)Ù‡/2þ*Ȳò†þãþ½ó^yÙj±¼üÊ‘õó¡ÔÎÀÊÜìÒÜ ¬ sRݺœ±q1*ªHØšþ°³´-0PøñtþAYóO-ª0­A;f4yjÙŽ× &œ Š]aJg.¾/çà d*%3^ŠÚ8*‡ÙÓ Aõ+rE,›ÿ@zÅ~GΓœ¥Þ‰èô"à=ιÔñ‡PΞú²÷#Œ~èAi©°"Ä¥`…d]nü›²,ëÙwç^±¾ŽÊ®­\~ôLýÕíFâUÝËaufy û~éÜX¼?tÄTÈ&Ïrx RQ.”ĽrÐù}éßE!?1Ù„MFìBÙÍŽbwçä­ìÙ´aÖsß1)C\äóB„;Ue¹(‘"àÙ³HÆAœîÒíá<§ʲñ[+ϯ IDATµlFXd)Í5ä_1Ÿ;tþËû ÿ/æ¾;‡4‹{ýG«Í?¶ I[áádž–2dßœ0„2“MKÄ!QŒågm :ˆü¯¹ %,2 %¾ûþüA/† »öÂÁcLÏgs™ÁNQÒ¾+¨ªÄHéß±Cöä–ŠÉ>~Øb±ùý([ôÜ”)Rkå)|>~^Ó-Ñ“8¿0ûzÓÃcÚMåãK… \©[Ò/âá[Èêö%݇cQ~“݇[ĸiÚg:kNK/^é2Í…ƒ?69;ypçˆ[çIÀ6|k‹kÉAÂ7†p…+Imš'ÒŠ€OH®-ÎÇ¿ãÑI=ÃBÍâÏn¼j¨ecM‘ž;í»Üçm>þÎoý#_Ø;¯à L9„¢ƒù¶¿ûÂC>>ÎÉIðLcm=¼ÝmüóäÉ4ÞìÔÑÜ»¿£$¬Å™RÍõDelßַσ_mÉøró®ðŽíd/ž[ª ?Rµ.à¡mz…€4„j⸌¥ÀS˜ªœs¹—nv°Óá?ó®šËÏ\žrþfBYÙ·-ÊÆjfyàÁh(:WPm?ö¸·ó=yÕ?ÊDP=AöV&ÚÄvÉQWJìíZ†È¿ÐWó œÈɃ²¡=š–[BökÚ5º{ó—§ "[$®éÇRøüAkª£Š€‡“—Šì·7ÓœwUJl‡‘·‡œºj?|¿uðuë߬EÓFâvf ?n›é«Hñ[›µÈú«R÷Í*êU¥Ž€d pu÷· 9쪈دó!﨔º¥E•ªæ•)þÝ£hLµô*~úOÿ¨¦@€Ú¡?ŒÕ1ÐÇ¥uÛßo¿L*ðôDò*Ÿn@G@EþŒð¡‡ZÆ k¿áÚ6O iñÍgI¾àï\§Ôí¢ ’]TÔÙò¼ Çe=×c×VØ2¼¤£òz‚8äÒ…Nå¡0ªŠü!äg´k×ð ±[Bl&ø|äÒWŸ¼kµØ¬ÎhµÚ ‰Ãj{qÁ;Êc“¬s¬b¯‰Ðä¤3Õ¸¤·r«| ¬¼¨Ýš±&–|XGVGÌÞž;¯’ƒb¢æ£ð؃ ž@@v˘Ï08_(´3F€öÛñÚª €§ÈÖ¤D?G@EþÐf·!«‰5ÂP°ÃÒ õ~\üI=ÏOé{ùùWg-ôm¼SÌÚ­Ž…ï½®WEƈ(¼È7ËÃuNNF9xÉ!n™Tå&ÂñÅâ /¥Êî°V,X\U¹:-ñ_jÛ÷ïß¿téRY¼lV›Íj7F˜ùsÙ®?ZîÈéô÷kÿÍáviYw~öcÛÆ·Ô_û¿×?xï_+—¾&+ÄIÄ ß; Q6¸ÓAˆ(\VMF ö‹ƒ§ÌpR² C£hãvlˆ`†(*.²3§¬ÞÈ®vÊK&; Rni·Ü”ÅkF¸|®Žý©GCö -V-µj‡{÷î}ñÅ?þøcY8ìv;c1‚žË-0XBvÕíacÑÛþL?ÍøAhòPëÔ!Æ„¡%½îÉkÙª­¬9¢ì*öY‰‹qÄ‹ £ÄøÖ…ÉTÆ •v&«§¢lv† —“K“² ër°ÿ¿FücÆV±]á*Y‰9#°èô„¬ÄeÄusF‘³È5¢ÎM‰O켈¸t DjÏÁ_~ùå|P F¸d,†sùŸ—šµie1—¡ò‹Ü¯X‡nþi+8n¼ø{>ßk ‹€ù-tÿã}†Ë q]¾w³Š=6ÓêÜÈ-bÆÙl6®ÄjÎvˆQ}‹)–‰]¤V-¦VXƒ¤:Yµa‡Þ!·‡6‹ñ÷¿šßÓΦ±@B† ™+c‘¥¼ÄTZb(½ ¿ógþ:{ÁñÀcž€¸ùUì³ØÛ8|—Åš Ã1‚7cÀa&2.ö".EN<%jçÿ@ÂÚÄDîæÐ“Ö|9(ÀÞ ²155B¯‘óSÆÚ°ÃÇq"ÿÑ£G'Û”)SdÁø÷ X݆yøÎ d¸‰ŒÅ}±¡¬X_zS_Rd(.¾~éÚ¶ ­n»§—²3äµ_¥ã]ˆì*ö1sâñ#|ûÇžæ8ð\«%M¶"G»&#Æ£1ÞÄ¥Äcó™ yô)zè"ÛÇÍ!V< ~ÿ‚Ÿ×À]dQ 6——•òB(Õ/çãÇÇÇ×U?Þçµ;î¼íþ–çMy°:˜mõ Özzsà s½¥ÁR/ëLèø© µ£¦×’ ŠŸŸÀ3Ï­ø-_hC›ôoRSS=äã×Uÿ ÕêÒ_y¹§ÍåcËË ¥åú’Ò ø•–ÊËõ“ÑTi”ŸÿPF<—%fÅ$K¶Ô\´Ý@B@EßÓ$¾þ®úÅN01‹Õ öÐ7ꢀÐHEvèž×Þ‚§ðšã;´µH#~Rƒ?B“}舱v邎ÑeXkjÀüÓaÕáªÌŸSS`´\2s4Ýj;,---))15ÔdÕÅÂMšNÇ~·YuaT‚WP̽‚ÉS£Fn½õÖæÍ›‹ÅvxóæM½^ߪU« pêƒj·ŽÃT«[ *F1¯úÈšÍ&01vUB¡4±–ßuW;˜8ÑÙ*ÞDê­øOÄÈn+2Yƒ™Ñ›½ã¯ÑŒ—Ó°X™ýKÚ¨¸[ªVMå§„ª±s(W¯^ýÛ[ß~ùò%‘¶b;„ZBBCl°6…º7éd¬mÚ¶†màUXiÊlešZ°Fì[ìf¼ƒ,Vû‘ãgDí°’C+ż’‚‚ºV&Â@æ{<Ÿ7¤>¨ø}©”«×o\»q­àÆ¥+…ùnœÊ¿ñ‡îÆï9×Ë.üõdá±3…ÙyEv›E¹_º÷û4lÔüú¬Èõ­û/4ìó¾Ž;Ü1Û!Û°aß:eù¾=÷ý#˜-z=Ö—h>¾ ÿH_Ííz±Éˆ†éWvZ9}~ÔÖŠ½ƒóVöè…+;­êž:U vž˜GÜ/4—–’D„È—Œ’Jõq©«†ƒ!vxíÚU@D®kù«¦½µ¹|Å@𴎳gwtì{uA5²ü1›ûCEÕüa÷öøøû+Ùµíã©ÃVØ™]§íqo'p\¼æhölÐÄ 6½sò®6ý:õµÐ÷°¡#{¼ VÌÞ]>ízùãl‡Úùb¶gërÐyì e g‡òq)·¤6»°¶úþBÏDÞrKc ~þÃ_|•ýîLJ`ÿÓïO¯ùæ_^öqÖÛî ¤sH+b9yßzN;ˆ¬"îòÛõRÓþ+w­êßoýWå‘RY"»v"_Ýý!´ÈÉlÚô¥X&x)Òïù£>F‡<„Ä*u:ªÇÇÛv‘†À Ÿ6v {îЂéœz®]ÈÓe÷xzpÇÜÓ‡zDv"E#ÀK)³lB=•x8òЉsm–Ê! jÊøC6v—X±º¢k3Ì#ú=;¬#¯å”'ïiÌÚ¡ÌE\+œ¥¬?q©æÐkïŒL™qèÓ‡o]ȶ2%ŽroOGº÷è®Y쟨º ·ŒD3wäÍ¢ËéqïË|‹gí*ž•ÿáà®·Îù¦8™˜bfâà £¾)‰ÕÊÑå1±x¡pѾ,³uæ.jуª! c‡0O ë:ª&¹fk‹4d_Œº÷‡0ó"è$Óµöƒžê¾ð‡Ëûé î.^l¿ÎžDL,ìË;Ftç9¼÷Ƕç›Vã¿.Lâ[³¡þ… ­Ú¢ÅaRàÊ/R ´efeì´oežúÐÙajŸðÁ7w#=iÏ0 «?QB ž‹n†”xœÍË@W³ƒ˜ÒÁ¾¤“»?„ VÝtC¤ {Џ¿?dmU®gíæMNÛê•LGaî‡â}ð#‡·î€Wv{‡'ÇöW"¶ïtÿá×g}HXí™+^çx9yØ1ðN–Ý€¥¾Çñ:ˆv{û„ôßwÏÑá7&.üN®þÀ§Ðëc_GO lÏ2?tÃZvè`Ï|¥ÛÖ§~{«K¶ö¸Ê Ü%g?0]Ø'BŠ9W@ÿñÙ°BÆâ8ÆßâRöãÞ²±«|×ú¿wí·í£­[³‚º½ý™£ ¡n÷Ÿ}¡uë#@žœv­?&ÉQÿ÷~{[û裭a¸:áå6lVPÑApáÅrc3nÿá…ˆ‚;ÆN7dÁÑ{xÅHÑÖqГÝ1OÂñ2.êßéìíÍ¡JZ­ý Aœ2Dè{ +A=ÌÄé–¿Fûè¸[óa⌎b^®}yèÄÚÑcÈÂ(Îlj‰iÛ¶­^oð ¬N‹Û´msµ¿„à·ov?¤#¼™€kžôÿ‡§ÿÆ;ä/»ý{ÍmŸüŸ×ºïßvyįÛ:kȽ鷌RÌý¶+u¬xãÆ·deeyÎLJ³¹Ž•õÔ¼TÃØ)Ë‘uHjÑ""2²ÛƦó:[]M¼ŒÖTSÕ(·¨¨…QQ:GÀ?íPÛ{ß\çiîóñ³–ß-©M :F @ìPô2!j‡u|ÎÑæ¥È|×&eò Š—ùør}!ËÒKÖŽ k’µìñžò¢ör}¦<5â\NÕ§bûÐŽ £Â¥WÉÒßPæ¾³¬ž.‹m8µ’@¨¨-! þÐû||øŽKî$ˆ‰É^œ’+˜¯Ï£P fÆ«*.j/'ÍWZÆ íZ˜-œ,”g:,’ƒW™qÙÈÄâxETv1Ü”” 4Ç÷…5`ÕíÖŒ5±¤&Y2{{.»ö7Y¤q> uÓÙ܈ù ƒ'OÆjjgàµ=2¶ãõ\A[žâkï)?BâI>¾‡ÍÇWbêÜ™[P›cÀ+ø&$(qW?]nRg+d=`á"ˆás*a„XYž‘]þ–œëœœ Q¤¼¸ÇEÃײŒÞbY+†~5U¶€þõ±Cïóñ•°‰š¿¨3·Ò!°À‚gÙÉóG8˜…ñ›( ÃE3f@K‚2AäèÒ$a›˜ûvuµž))ü¾Kœì\¤Q¤>Q,Ђ¨V–計—gd—~ĆË3ÂòŰér¸EùÎ’ÐÈE8'¯'ZLûS‘! qã÷ÝÂbæ ©¨Çz q©÷ùøÊã(ÙˆoH G9bnn£c £Æ¬lXl‘ÌHèx‚>ÌØ3ÂKÝ2‰•Å.곆IG|,:'Ò¹/l]Ñ_f%.…˜pÜb|JÐÊYqxiÕ­àÃ!yÌüðØÈ„ÅàcuàÿGˆS¸e%æ,Â(¾V,˘3nìŽ0ÚÁM<ö"Œ‚‡ â}#–‘]i• š1îÂcñ©aS þÏÇw3? ›ïfäbç'ã›D²ÄZçEâ4\‘ø%I‰Ã àÛ-‡À‹š’Õ…!\«u>ä‘åq£_äXªX“œJTå[IJD®*\o° „À»s$TŒˆÂþ‘ÜJ_ÓÇ$Ï'w’Θß+ãmÄVá£-ÁòËE@+­j×:z)v¬ž„ú}y€øCïóñÝŽÙâ·g ÙÉ©×஢›2òŒ‡„bYØ…HOu7uù"¼Äp"ÿxE¡6qćÒ“‘Ü"fDe³þwzÙöíÙ$ð~ÖI)^µ¸'¬_ìír¬2€ˆ|+ “ƒl è}>¾ÛñŸÒ¯m¯ô¼ÛÃZâ2å6ˆøw³EVÔvÞ?Á¹§K&ÏG”yä$ò÷TÜšáÎäy)ٲػ=ÖWàž J‰‚[5ly¸—œÿ•Ö&&r7‡rZÈÒÀ²N‹+]ÖDæÛ‹wx8àÈ¢©lÓH È7ùøbÓ)“’Špþ¤çh"4‰ø@|‹„b×è’{Âbö¸0&Y‡ïÉ{;8œp"Ú±áÛT-´€¥ Ék]”C8+ž-éœÎ †ãE†,‘—FÜ«óbƒ]ÛZä0aA›’]ÇÍ!.€Ö&|½AYˆCDŒ ¾|h´dHþá³< ¢^K4T‚8?>>Þ»ºòó^æãJ_çTÐNjéËFY¢‚J®#RSS=çãבnUjÖË|ü*µA+Sj‰K_|v(üj"*•"PãˆÖ8N*m v KèÔP–¨ÒPµXäy)NŠ€_#@íЯ‡* H\š{Ób,­0šõF‹Á`6Ͱ¦…Ád­ŠžW‡S ÈYB»QÓˆÞ,·îÒu€¥J*е"TQ^QRT`*ÿ{L:ƒFMŸBT~5  v³ËÝÑ5®‡ò®#“…ÀD›fÆ`¶«yÖ¹j=*"PûCƒÑz©])ÅþP_n0•_3–]×—ß„9õ½)xÿ-ÍÊ÷®ºãK.ü!i¥2÷+]Ñ;ý(—Ê;¬0Úþ.FEèf‰ÅP^l¬()/+²˜ >ÌJŽSØ„‹JþˆY’J¯(MøÍ§O%Ò?E PìÐd+(C׊QQ±¡¤´´¸¸¸¼´Âb 1“õI½ÙHÊáüùŽ$YoªPŠ@u! vز^qò3†7žÒÿßÄÐ7Æ·ø×¤{æN¸'aÞß°è“wHq³B8³Õq5â¯|Êvg«pù$ÛI0¥Ž{Çì÷Î$õ§Q|£³&“R…Ôxï:H¹T@€Ø¡ÑbùñàþÝ{Ò¿ýnÃÖïÒvïùþ—_wÜp-;ç¤Wð󓳸"d%.ÆÓ 1ºd”ïHx’%ŠÚÁ© 8sŸllV|çB¶ôœ;Gé 8-ÃQÌ àö1£.9Û™B ©ñ#ØÚYÎù;¼êeR?ð¼ô«ôßlVûÔg†þyú\dø=9§ÿ ïÔ!7ïÜ]íî¹Yxõ³M;'â~$ó`6Äv \G˜ØžH¦“P"º¶Àfî»LŸ!ÌŠIVRˆ$ì/bó—pÚ Qgj<—€«$ƒÒý@°C}ÜðÇ—|¸åù ÷í=‡ºËÇ`mñÓç¯Ár6t˺¯÷±«bƒ?¹pñâ; §¹Žž"QC…ÒÜw¹Äv2ñ $^áà²Öá{PØóËä2…ŽQr5 q©ÉdZõYzÃúšÓgÏ$ãµÝ&ÆuŸ×c\ÜãcãbÆÆõ×{”ö‰Cû ÔgïO¿ˆaéå8̇ÆÎƒ]¥„Ÿ'ø–°¯,‡–øàãG>Ác¾á‡C°ßí‰að÷çÌïßZ&œ=?uŠttÈ :orIWÇŽeÛe‰"ÁÒÌýùÉ‹#pÚyLB™˜Ì¾$M½—Kêɦ‡‡@€äãóãòù÷¿Nö˜ÝËi3VþYlÈj…¿ŒÅj·X™É3_ò:%žRÒl÷€;åÕÑ¡€ÍÇgáµ3ö¢"ãБ£ápwúwï$»Ì‚1qÂduŒÕ‚"à‚@ Ä¥ÂÁƒ™¦Íìßùñ„ÌœYSÁgHü¡®ðN @šž9}æ‰>­&¤eÛe‰ÕÔ ¬šâwâ×Á:¶´ßþƒ@ ¼·ð´©¦yÄÒ||ùá¥T?A @ìæãûÉùFÕ”G @ìæãË/¥ú rXµ||’$Yܤ¹I®d*ñƒ­˜V/Ç\ÕSDÅ©Y­TVKª 뫲r‚£^€Øa•óñcbÄ™øøãoïÎÁÙï[>¾T¼×†„m0¯Ên©–‹«±Ík­x µcítQgkP7¾Iß•¬1¼*!8Pì°Êùø;sËUs ÂW§üE•Àµf«Åw…+†Ï™ãXê©f[öR:ÿQ;ð«M7/»P»lb‡UÎÇGQóaéÃeŽ 7ž¬&y>¿¨§ðZ+ºîÂ!·º½8­^::áBöØ£9ca,µgOQdqoÙÐŽ$7*®“æÒ Vd»ŠÁ͘²¹‰$uPª•‹4®Óð{–3oše1$D/g<„áÜø¦¡ÂQB¯vJ€ØaUóññ0qëUã]>=ßóð)¥ÕKkвøÉÒ¢°>6Ù°÷]tð K†>·p<íÒ‘x¥N¹E´‰$G+é`ÜeÅu¶AX€¦À)%’R8ß…3 ˆ:(«•S+HÕÙs~Hï»,Ü¿²“H‰ŠÓŽ`Œä&7µ¥ÞÃ@°C>ÿ‰ÇYðâÔIO{ëÕgN›ôŸ/{ãeÈÇ÷~Xƒ”½I„[Ã΋×"õJšŒ+“¬Yï4üŒ­à}E%Î1–.ïhܱ̮DG+Îíy‡È­‡Jª çÜ¥£”I@©÷òZÉ.gï•ÉÔîMQ Q/9•h€/V¤«dš.à‰¢ŽH°ð#B€¼·¨Z>¾c¼ðœñðÀccvrªp-ÞJŒ'Y^¡ŸÅ†¿&½‰@‹³å§—¬8ÌJä$½¹'t<2‘ŸÀ}©||YÎ>|NjòÆ.™S^œƒ*;¹,ѽ¿, XÕ||çÀÁ•¶3^9~L¾;7ÅuÞ}séšõd2œË–ÁŒ¢A.İ£\{$¦ú™Ü”¥g’îç–JgvÒV¾ŒÇœZؽ’ Z CX ºÞ¸LzÇß ú4૘ïbKà¢bP¤8*“[çÝYM6­ÞE*9Ëâdž¯Ñ¢t†³{¡(61_¸p¼Àýáû¯¨žpÿŶóz”¶H(ØéŠæpÊ”Jgp¯•\»±‘9pkÈ–€û$xµC£Õàù\DËÁ"ƒ•Çi \””ÓIÕ4š_ÇÃwg[Gp+Ö±*uÐ<ô>Hg< ùøupº)6IÞTõ^TQ:-ð!.‚í?ùøøõ@b(]ïEýæÔ¡ŠV#f‡Õš_8KE¹{¢*åPŠìä²ÄÀÑ­@³Cšà'l€v/Þ[èÐÐnâi>~³ØÕ±Cšˆ'gõ)@ìæãÑ9ˆ] ûêåã³+È«q“…ïÝIï§ùý”òÕ5”áÖ¼lƵºw ¸å’t*#)r+H\èC§ÄUƒü8@ì°ªùøøªÎôvA›+àø`’áï-«š¹_­çmu)S]rªµs~!,Pì°Jùø5Þ_5gŸe×ç†o•;''#œ½›©~qQ%«±Ã*åã»IoĪ’pBp2¸Î3å\ß^T\dg.ç:Gâ/høì¤p9óÎPÕ!¹gÊYçHKôÀ‚ذ:JÊIÏ×pTœÑK•ó÷…¥®:¸äù{¯ŒT½À§ˆV5_>½Ý}8$³Ë&§³' $ê°¹ººœÕ*ñ8ñ^:£EVbÎ6§Ü‘Dïl:mt¬á(£K.q 7Å1ý„Ó™ÓI®ºOß‘Ksá¡Gnò÷]J#A¦’ʾ²= ;¬†||Ùôv9àòÉéÜ©ÃYñQØH¸›CñÙÃeãCDÌóq4œsÅòËêã€!¥Ì"Èf„¼=Gè Ekµ^> h$É…ÇeÊùû¢R§ª®“ TR1RzvcùøK×l¹ë®vÛöË»RœqàØÙ‹…{ù=ç¼ݲîë}kÒö|øeæ_ìzmÉzñX’ÌWÇL1âBOÇ]çØÈÂÎXHÆÙlÖÿá@5g;8*™”_Om¸+ç`l†q±¸ J&,šIDAT¦HEñ^L#ÛÉ…m]âtIØ`õrq¡ë±+2UUÆ}[~_vXå||…ôv9àî“Ó±…àä~œŒ0¯MLän=78ªå¦y‚Ô(..•ׇb<̬)ý°Ÿ½u „-Àùãxfä©]\.É…V’æïËŠT@Æwed¥ 1ÞãWC>¾|z»çð5ºäž$ÙoâÙd°Ÿ̱ƒÎµHzs({VÅ®Iç²×c’“ÐFÂ$¯±÷ì7Øa_GÌšp“?f¼a²Íá ‘Õg^¹Ì¤#› ïPR&_A2#¶*+#+!¸ˆ4?¸Æ›öV%Ð||• Uƒ"àD âRáxúO>>= )k‡þ“OÏBŠ@àÚ!Íǧg·?"ï-üwª3E@ˆµCz>Pêj‡u?TŠ€ºž—~ûe²pHžžÈ¾j¦ÃDpTäÁûöí4,ö^øi‡Þ9¤wè7Ÿ%ù?|?âÜ\Ó„b\s||iÀ-/ˆuiÓõصQ¶ g)†-èC.Mr;þ\¨"h·Ù÷îa“e1¢ð&(iëÞµ3vø¬Øf³c*ÃÀŸ¢¢ÒÄ×ß•ƒ|¤ŸpáOºfÔí²xݼÞùø›dfdoÏCV\!YóQx¬òÚl(7b>¤+áº|_2¶#XrS½“ŸÒ*@-ÙaVVVttt“&MÜh ö6rÄ#<¢5ë‘M¯±V scª°™+¬Ær›¾béÖnäà"ü-çbH Š}Vé¡ZµsIX6%?§ä³GH~½CAûááÕq_¶’NÍá¾UCïª**¬–âÒóçÏÿðÃ………n·[±ÇclFøÙQaˆù&2_ׯ"C½ü²µü’¥ä¼¥è|þ™Ýn„pEõÇg̹‰æ$EÎ`‹%‚¢2\F”W6%ŸˆÆù¢ÔaìO«9}J±´ V¨%;„¾ôïßË–-—/_Vê—Ífc‹B4æP‹Ic.ÓXÊ‘¥Üf*·™õVc…U_n,¾aÔ—•”•+qäžÂRf$>ÅQ¿Ø»x•y™"ñbñâ,r™* š¹Š)ùœÅãé«\2Él:U\6\YiZR'Ôž¶nÝzäÈ‘›6mÒéœ7Â>[­Ø™Ð ½Bc-#d¬z0B»±Üj(³ÁÏTnµŒTR\ªÜ’ U>­×Mʼlç‹Å‹²Èe«(¨ä*¥ä“ÝðC‚'@ìÜ¢”ceh‰ P{vx´jÕjìØ±iiiEEERxlVD¤õ¬ ²Â=¡±íÆR»É`3êmà ¥VCc6Vë)Ú!‘Š×dϬh­œ2SÙôÒds™,r7Ò$}ª–”|~² 2ñΆ§V(AÚß µj‡7oÞüúë¯Çß²eK)p0'·ÝfF6p†Æ\Ê€'ÄFH,\¢Ñh7ÍFS…¹~q‰’?䤒uîãñí ‰áÄ\% Ð+$›;³È¥U¤ÝRª’’ÏËáïuÙ ˜¡{Ìý³´öìðÆ›7o=ztD;Q„0ð‡ÈnÖXõŒ!<ÅFh,ÃF¨/·›õ&ƒÞb6é- JËÊÄ•ÅÇ7Žˆ%âvÉçìæò†ORD*aÖøœÎìä+Žç6Ü™¤Š¸]Ñ1NÉ̱„]’™¯M*Åù8Hßë’ù1÷¿•rFÚ¥¨ZÊLJX4$$dàÀš*õûýw^›<îóÍ£ÆëgLú›v‹ÞÞÏ`©Ð3¥v›Õÿƒ,õ–m4ä_¼ª$§Žè`²A¼Ð}î¿ÍÖM>~ûöí=¾?„°tÕG‡JËÊ‹ŠÝ,jRxÓ\T¬/)­0Œ¸Mþ =Õœ" „@-½Ç‰ñ0Éè§ð‰Œ’æ”NjÉ0ÅžãªîŠ`Ш½ç4>*FÙ)A„µÃ lÚUÕ"@íPµCC "¨Ñ`Ó®ªj‡ªªX!@í0ˆ›vUµP;TíÐPÅ‚j‡A4Ø´«ªE€Ú¡j‡†*DP; ¢Á¦]U-ÔU;4T± B€Úa 6íªj v¨Ú¡¡ŠÔƒh°iWU‹µCÕ U,ˆ vDƒM»ªZ¨ªvh¨bA„µÃ lÚUÕ"@íPµCC "¨Ñ`Ó®ªj‡ªªX!@í0ˆ›vUµP;TíÐPÅ‚j‡A4Ø´«ªE€Ú¡j‡†*DP; ¢Á¦]U-ÔU;4T± B€Úa 6íªj v¨Ú¡¡ŠÔƒh°iWU‹µCÕ U,ˆ vDƒM»ªZ¨ªvh¨bA„µÃ lÚUÕ"@íPµCC "¨Ñ`Ó®ªj‡ªªX!@í0ˆ›vUµP;TíÐPÅ‚j‡A4Ø´«ªE€Ú¡j‡†*DP; ¢Á¦]U-ÔU;4T± B€Úa 6íªj v¨Ú¡¡ŠÔƒh°iWU‹µCÕ U,ˆ vDƒM»ªZ¨ªvh¨bA„µÃ lÚUÕ"@íPµCC "¨Ñ`Ó®ªj‡ªªX!@í0ˆ›vUµP;TíÐPÅ‚j‡A4Ø´«ªE€Ú¡j‡†*DP; ¢Á¦]U-ÔU;4T± B€Úa 6íªj v¨Ú¡¡ŠÔƒh°iWU‹µCÕ U,ˆ vDƒM»ªZ¨ªvh¨bA„µÃ lÚUÕ"@íPµCC "¨Ñ`Ó®ªj‡ªªX!@í0ˆ›vUµP;TíÐPÅ‚j‡A4Ø´«ªE€Ú¡j‡†*DP; ¢Á¦]U-ÔU;4T± B€Úa 6íªj v¨Ú¡¡ŠÔƒh°iWU‹@=ÕjPŠ=ü0:~< zäwéÒ;¦Z­©ÖÊЀ2L­´DQ@@£Q(P™Æ¥ªªD# ö‡©©©AŽHMt?! lMë½L•¦{ìl¾3åÅ×½ïåôœ_¾‰zü–?'k£÷)gµ! ÑðCPm2«&¨i‹Ö¼—V KZ›"PˆãR%™S_YE+2Yƒ™Ñ›½ã¯ÑŒŒÆbeŠ™§TÒ•xïg âÞ¬åw+ ¡tGÀ[;„~¶iÛºÜ`3[™¦¬ÑdeÌ»ï€}Ú?ëïXÔ•þ¬ÍÎXlŒ u/µÃº¢o×;¼Zp½¨‚)7ÚË ð—)7Øõ&ÖÈêh·Yj\Ùm€…žÁ¥MoFÞdÝrg‡Û?žyô÷?ŒF£ÉhjZÿð˜Zfg·16;²ÂõÛf·Ú\È!(ÿ–YÔÖð…9 &´coÄ,ùV^“þ«³Fü5í奧ä‹Ôûãw¬dŸ7œ2’ •™O8è–Œ™¹M†IBòZ7IMï íš^ûÏï^„•ˆMŸ®‰[ÏQ»-?{xn„„¥V DŸiÛ™uøTá7]R÷ÈyHêÕ*>5æÎ:6¸Í‡¬¸¯²Í«—„ý.=út}| ìÐÎà¿$šúóÔiq«`6 Ñ1c°ùÝ¿`8B^ú"1K8•:4¦*ïT R+iÃâžUï±Õjå2 cg!Àº‡×©g~ø\Ÿ4¼¦, ìÍ(¯ì¼[·o&é´‚+BúÒyGêV½¸˜4wÏK+ÊÊ[ NbSÆÝ6±Ovÿ;¿ùàýò.^?~êBþÅëÄ%‚o”ûR$üÎ{.]9âu*uieŒ0À –ïŽÅêŒçFc·#øÙU‚­"¼asßšv$m›NRPë„èhä¢GúæõÓ¦M«u5ü«Awvh„'¡v³áZAŹ߭7³sé9s÷S^ÉùëïŸOæ¤nÎØóK6œ(—ÊôyÛoÚŽ÷r'—"p’YáüVƒ‡tÙÀõ­Xp?Kb÷Ù`²müú9Ëû#$`‘CJ_^È ß!jW¬_§7r<2 ï÷»Ï]¹§K…QjŠ{gÆ,Ü×k‰Àäú¯^wnɘ¨˜1QÓ¶wXÈ[ aõñ䘨y{LJrÚÆ·ÿ _rìžqcˆ17bÏøv’·tÌês˜§ÿjžÇ¤fcƶñÏ¢Ýи9Ž++A±ÅçS¢ð­/0À½+éÚô²5ó×ïvgmß}0cïÏ»öýô×…‚þ½w'Ÿ¥o®ï6~8wxäDÔߥ¥Oœ½^†9»üDž™÷& ¢yˆ%gÚø³„s;‚È’4ÇÊÁ¤i`9üîú̓W÷–ôžT;ŠgÑmKC¼VX¢vi®w4ž3Š¥q°„ÍÙ‘ (ÍqKìFg×;T÷Ø© Ô Æ ÝþëǾ;wt÷¹SÇÏFuîÔ¢A“Æ5E¨SXûG† >Ÿ žÙÀûC¹¾ÀéΚñ~÷ßÝËdÔS©ýÒ¶c¸\%4E9©ëˆ¹‚+Fw„s®•Gìì„{b´wæôvÖL´„€Tú&1H©nÊ-îËÌà `‡/|øžöíI«\)¯‚ÜŽ .cäž Çk»MŒë>!®Çظ˜±q=GÇõ¥}bÄÐ>ÃõÙûÓ/rµFÜ”FƒÍÍysè°HÝéhÚ(ö¡ ‰\s8çÕmùb?<sr¢Àù9øœ–ílÝieé›ÁÕ¹<‘Ḵ –ã›D0î¥ó¢E†Êy:þñTéÆIÉèÄiVC¨çàÂ*³íx¯³vê!»{NSZRúÿÖÕ7ﱘÛZÌ–{‡6éÖª%Û¡°eÝÕÆK2:.`6;~B-«M© „À,œöÉ–Ÿ›6k°;}+øÀ9³¦‚d?ÄþPö=mmc…¶ƒ³‡kרvÙÞBp,}YRÛ@To{U²CPåìµF[ò†ÄŽì¶={KõjV»Òà]¥ðeí6.híÌé3àk¸yx9'÷¶Á«V#æfæzÅY½LuÕnõöBQZUíÿpð"ü[ ®üüëñ^uQB…õŠJ¥”^90æ•«Y[µÜ½·¨-‚«OҶ埿\}®ÓÞ^½V¸5ýÇ:UÁsã.ÏK=³SŽJ!°g÷úfS¥ªÒJÕƒ@Yý†ª÷ks |××CûBõô•J¡P|GàPú*—ú­A¨n°?deR¯XÝØRy€'d9þ?ÙáÖ>CGIEND®B`‚PK !Æ Pooword/media/image15.png‰PNG  IHDR“[^ pHYsÄÄ•+tIMEÜ ºLTŸtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/02 14:27:29 lim_j SGA250167hà°k tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxì½€Çq&º‘™ˆ3 &IÌYbŽb•ƒeYÖ³}ÁIw²ÏïÎwÏÒI~÷ôîžO²%9ˆŠ$Á(”Ä`ŠYbA$‘H„EØÅ›ö}ÝÕSSSÝ3ÿüa j‚³ÝÕU_UWWÏßõ÷„ªªÉϤ&=0éILz`Ò“˜ôÀ¤&=0é²=Pí#T×ÔúÄIʤ&=0éILz`Ò“˜ôÀ¤&=0éòÀèÁ߉Ԣ¶®~þ¼y_øÂV|r‚utÔ—L£hV!«›Dº–‚ÀI‘M#§o\[B§Ãñà‚†*6Ë4ÊÀIÝ1sŒeJöŸèÚ”2WåÆHYh´vÐÔ3Û‚ Š,…lu•—¯<^KÒ®V]Ïà¥s¦·•‰ù- Šg+a`XC7^{b-· EÑéFŽgB!k@³ä*Ñ6vã‘´®´  êthDˆ¥üq©„'1ÂÐ1ïÅ¡ DZÉÖ* RZÈ…Íým¢žtãè ÄÂ&‰ïâ4ë45úŽ’ HVỂ`Œ¾ÜÅ—¼i·ÿÇŒÌEhìò ŸE¾-ê#Ç8Ò5ÕUË–-ûÑxÍ5W÷÷¸o"´á0Õ0ÔÖÖ=ÿüó\pþ¤6*û6ú<ŠR[ÀçÎ:ëìþþtætƒ¤L>®t-U ÷Ýwßm·Ý¶ægk¾õ­oílo’üu\™ÒÐøþÕ_õ¾¾~ýÿø¥dÒ¨†¾ÒH$M0¸jIc†¶¬¦ƒ!õÖB)Åå (îÖÁу~÷}4E«whÌ#"ŽÜÊ2”Õ1Ï)) ñhu(e™¥¬Î-IbÂBi‰´\:„éTžòä9ˆÔùg%)Håød”8˸yÀfÙ”…Tõ•*¶l†ìV†ÊÉæ©š\1¢Îp£º ž`Y 1ƒ¶XÆUiÝ(Í“¥éò¥òkÏÏékaJ± iîõ§³Rš&˜aÛdÓ8{@WUª|TUØä§¾¤©çžVJÝ8Gõ8«ó½Äç,ñ§?8‰ÈG¦0¬d‘ª¤eEJr2ºd+Ó#bÜ'Pg¦›²­Q)%z†%Ì Hä†ë¯ûéwîÚ½÷¥—^b+%¦Ìl2#ЉUUG}ÔK/¾´cÇÎ}âW>”ì…”’Šý¨£V¼;w=ñ«'}I ªS"^ê” ©[O^µê±Çk:íÕW^ýä§>5mêÔÿôW58ç<5$ý ä¿üå#ï¼ó®gDÑ9Nvß8cSQ«Í/T÷vœ`ƒó¡ :ä<æw÷èÃ8¾ ¤ó/¡”ªA’5GúuÓ!ÊÁƒYDñ@”43ûŒUžÑ*‹1*Ù$3+¢•M$oŠ“I7q•)(€HQ‚«Žø*X5K±HY©×äVj—ZÒ!çyúðÏ­ç\€µªL¦sUa+«:ÏX“Æüœf•/(‡Æo% ñ¤µNÒ'¬ÔIŒ«²ã)f8rd5£‰z¦bÂúdÒ° 2Ît’Ç@SAEUŽ"¢HŠaNd qò‘è>‘èôÕ­bLŸÀ©–AŠ4RU£øÙ7M©ÁµÅ ‰²l‘Dt‘ˆ•Œ‰É*É2³©U\L% ›/›‚89‰AuJ6¹¬Ë `Û²uëCÿ|ûÎÈ G0‡K-V­:i`pè™gŸ ˆZEsZ«¢ÓÐdVý'AEA¢s - Ä*èÖ<&ɽO8JPsj é,’†à’A,g1à˜– ólDc¦)oÆRä;HFö˜ÝF†åäbà²ëQ4äÙUp©Î²U²ÀNˆP㿬Ýo:TÕåigzš1éƒ^P¶‚ 0À2zGTC†ìdÓDð¤:òdá“d€Ù\=¼â9§Ã †}NœÃMùNÂ<ôò\ÍqÂ]&6uVçh‘q%Cȧ+ú~OY½˜ }Ç_À¨å±Å*R ‰CÁ¯™HYuö¸Ãȱ‹˜YÚ¬ˆ¦©Ð9;M"p¢feƒ’*XÍ#ÎËׂhž|ò©ýà~ ætDÝpý ëÞXªŒK­‹yK#ºÞ†ÃüÔœ;_U€Â¶…ÑfXiû’dsv×Òò …&{$gˆë“°Ì¤˜â±±WeA% íT˜þZ(ÿHDüNÀ­ÒBÉïÓ•ˆ¬úv’8ƒ€Ïe b¶Ë*‹3&JZ8U«$²Jµ4¬"ei¼ì”/ÍŒa™»“;HøV‘&v˜¨GTPtÙAffNî¦Ä!XPº« y>CižôqJ¦°ýic]2ò ò€ŸGSê ÇȘIØÒ< Â^VÓ¦¡?Y5OXP*CEi6Z©q‹êJÙÆÈ]Ò|*PŸÇg óŽTBQ¥—XM¬šÂ¾‰ð]D 2>¥ 2TalöëL¶8ˆ¬ŽMe"éJ@™¾ºõ(!0á‰H@fvM9¾ÈIdî¼ÅÓ§Ï•€ªÜÕµk÷®wÉ*_{† o$QÚæ,š6m•÷ïß½g÷6I9Êžm9aÓØÖ½þ:îÓþË¿ü b0© Õ6gÎŽGcî {< .AG xw>¨1?cÆ—EÙd1ÿ‡×IJÄ óMÄŠdóí1& ü “6Sk4äq_$ÊXRK¥à—‚d$eAÜDR;c&x¼ÄZƒ[G½­(-R‘2›«¾ˆädY ¤)Ê"þl_føÁ©(>8[•Ñž`«êæ{£Šž²Ãy˜üî+Ùw9¬„öÞðL±½àyá{/‹~*àY‘b“*ò˜4Ésh=À3‹ÌUš|L³“g·ä3U©€£Š¢Ò8͆÷0ýPîx"óH¥hp9rPðe%ÅgE‚s—e߉qÔˆ½¤Düƒ@|Y¢H« %±p üžâ©s׺“êuM»r‡Ô#–%ÕT•}$c$³iÍ—] ¯¸ãÇßʘ#7Ýú¤l§¯=CV‰*Ä‘W°F€ƒ¨(å§Û¶m¿ìÒK‘MУœ[,X`ØÞÇï’Oa!ãeü$Jÿ’P,•ˆJ3øé£èR\þÐKQâ3Tg~þOÉ+$Œ!RƒËäI…Ì+¤óûD¦@)« oó‘© Æ”$Ëš.Ù$:3H ÅOUÅ©œ, –üJ»Ÿk1³¯”e¥jŸMR¤URµ²–Ý7&ȇ˜¡=CÜO3˜Kn’SFN1žk4OùÈ<>ñÀÉ, c†’­-Í“%«+SðXë;¹ Åg(³ã“âcáNò”uêÄH­|¤VE$#%lšŠ±èÎ$f= ÈêlLº‚DÈò›Cf&py– ² 'Tá„*}À  ´hᥠ3X6³KR,Õ‚ˆDcŠaˆÖoÄÀR\%Jœz4^œ03ñƒEtÅÃDkQ`-3_’†/m܈ Ê( ŽCåh­ˆÉmmmlž» é@~h…ÒÅq· ¢vB ‚.ÑÖƒ°A¢Ï“T¡ILU¦E]€ÄZXÊï(’Ȝܥ˜ †%(Æ‘êÒ:%éókïy#UKJ0ˆ#ƒŠ‡^žÚ ËUññaIF«Ï_,%ŸýP” ìN™kXA~oWÏø“ f·û Ü_*H~¦ ªºÏU¶ ¥4O„-ŠAv­(ÁCÅÌQ—6jB*;'õ–暃¥BÚ1ÈÀÄÒTOX)?æ'¬©1ŒcÀG“³›Ëê$ORì4?T˜AžC¸ÌJ%,%jå&2žm‹Ø|ѯ´2¤ Dö—ac"]“-8™&m ¢Q}”mÜæ‘&± $¨´ou$¥¸ÌË}¦¤íf°…Aœ‚DÚ:—;t}›\òòCŽТ‡Ïo¢°öÊq v OŸÕ(º2J.ôCš xA­æIÐð“‡RØÅV•ÙS“àAEŠä7("•¢Š<Â0®:VÞ WOY—¯»¾X ‰‰a)‹° uÙ‡bW+¬K…OgAÉÉŠääCž*ÒÑTò,@ `h\v~‹ÆCÑýî(³¥‘ÌÒ±l‡K“ô9VÑ ö¶t;»š†‰ª²LÎd_•ì †’ÊÌc€ï™¢”æQá*oû LñÇMåM†ÆÉ¦r< âAV¹L!<ªqçѧÍ÷ åX~eóO‡rŒ$Ajì2f7¸ ›´ðàXCÁ®)@v‹/è7‘"‡Ö$³Ü§CuD,ƒ¾é×P¢_`«ÝuOîJ4¿§Ëê‹–ôè)P¤cUYâHóØ0É É£Ê]]]DysÃo¸é¨£Ogz@Ö®Vô|$Î.¾óí¯‘Äç~÷O9¯` ^;çC¹Ø DŠßk‘{ßëXž®Jžàè’ê´#ME4ŠÎp6-ÁJ0 ^> ý@œÌÏ%é(+¯p«l°lqΗŠµÄÃRœö(Á˜Áê¤] (î‹D@/x ‰ã9• ï4¥Z…PF•œ q¦("Ù© ˜'h¿2›e3u3­5ù0m’>Gß©*äUjâ>¦qŽ&þ¸”oa þÈ?åÈæ×2ÉY²T<Ȫš€R…š¼Ü¤¦6Ñ3T”lö¤àøx€b€tùs9xb3ÓQ–Q$ãíçðR²wÌH ³d$q2#¶8Á`Ai6•=q÷Å=AÖN­,9,PUô¥Ëoi™.»¬Ê½=û·ny=6 þÑ3õóþèµw²ƒ€M£ÇÑaG¾&V‘Æ^rv!s¥A hxÈ›*P¿Ýn2«_›„A •ßYQPc¨T‚‚D òÛ~™ë`¤C2ûeŸ"ÝB€Ó“yd„ȣ؇Ul '26–õù%•%TÊœŠÁGÈ @–§%ÍmRÁÑåOZ‘²*‚MåÈ‘|ÂÆç±wŒ%oMæQ¤’néjr‹<2`H­þˆP÷Ñšu–Ècë„áÉ09ÙÆº[¾Û}ÊXÛ0‰?¦Pó‘«J)Æ]ròÄä¹9¦FŽ3øo[gŸmhèi ™Sd<0'!OзÁ¨#N€(p‚e–Åwà!6HD3Ä )Ù‹a1¬X ‚(ûŽ2òŠ´ë”ˆ“®k"AÙ5‡Zª ¹wW}Ìûd¿˜N:${ôF’%P›3÷Übñ?¾ñ¬åóïÿ XñÀ(%@>(gßk°%$½.]Ÿ½„„{¼±åEiÏ :„(·aA‰à£)6Å€*}ÎdÞ€OPBb$)Ñ\G\Úââ[1 ˆ'€°'A´Æ8ìOŸ(єە"Õ*UøMi`úsFZÅó“ €ò‰ŠT'í÷•EŠ"Äg†bµcèÊ™Ûyzá'Á¡¡Qöí'f)Â9^d‰Ê<¶MLž’GóPuÇw»O9T¶Mê-Í3NN@šƒ±Rb ;’¥ŠÒŒ<´RãäÒ“‡ªË4”þù™ìa ‡ŠßI‘à\–AŰ ¨"ª~«#b`Õ\µaìVE$’f0‹ºÙ7þ.ή%2Êø@þç-b :ßÙÙ™spI–»ì¤¼ïrZßÿ÷¿ùs+S cUh¥DtÙóm£¼êÿOþüoH5Ž(CÜÏ.¬–ÒW î QÆJbþeX‰žøƒä·kß`‹!Nš_2l —èvryÁRbýÍwWd%×⊙ŭœ ă£|ÔsR!>âÎ eÑ ®qBB€Ž‘‘tKIØ®Èü¨“%¿?TŒ ñø²>Åçd dÆÞ £ùû)ë›áS|二Vª ¥4šGS© ÒbxVò\OX.0‘ |,¨ÎŸ¼E¹‘‡¾Xññá/a¬¥a¥õ±ß–#;>.ýmÖ⇓¤ð\ ‚œ’â—É¥LWZTõpô¿<_ý㣥 ý4^8úsYQP¥ýD¤VÉ ƒA’²Šš@d~%ÈFrƒ(êوͭ'ªÄ¯ÔÅÕäûõ|6ÒN¯ø&³ÙÙ‹ÞÌOš ‚õ„a ïòˆu8ó#¸Òa«MŠûÿ×_ÿ1éD.[,p¤*èüÊ _IÉk¢/ˆBg(àT¯@dJÀþõ5Ù&¥¸W”;úMA?zfÇ“. @‘j”ȊBUê“Ý™°Yo¤ÅÔE™š E˜AfÌ4â/Ãä¢c_@}Í”·pÜñ\fçÓˆø—:e÷™S k6N,Ñüc N2=#2+Þ7ßí<¦Ê6¯â6LŽƒhøhžªi+'/ºœ˜r:³©„‰‡$†ÇÁ{ïUyÎN2N8T\ɰӸ•ÈêäIF"€Mªc)å—öKóp*EU&„Ì&‘ ‰pÙÁÚ+ž$CB»ÅÅG^ÓN°›6®#N¡£O‘6[Á8 bóŒìèh{ûVüKh÷*R 5’?=F×#Ÿ.)È%ø|D—_—B£o0þq﬩­Éþ­3ZðõHr•ï÷ Ö("W½ô!»×q«Ê+X…¯dÈ#~kl@´ gáÐ!¢/ÎÌÔ$¸Œ‚j%Šbf6`2¿,$ø ‹ù°aôh]I!œ„”裤³Æ`û([Y¯lÍ úly(0Ò2C†8±IºäÑWiƒ0‘]$u4ÛÇIɃŸ-Ù—1ܸ E~‚Á>§!ã£ê¾ê‘’ŠÀÍ.<û'ÍEÑKódQ*2˜óŒµ/ÍÚÒ¤X¯šk?¤y~p¨¨&’¢ÊD©EUÉ>A}ÅZdJ2Áàn2ƒO!?q†Ô¬–ëëëpé ópÁobpî wÍïë‘íC ²ï1Cü›sBˆ„*HÌ)ÎVO™2¥®®®¦¶69Z07]™ƒ*)öQ؃`P<ì·hìK\“Æ$£Šx¤:¿5ÆA0‰·FP_Øl™cЖ ‚Ç¿$‰U³v qê¾tSPQtÕ&dž< EºÕgŽ{-†L!HFF*ŸÇgÈOñ‘“0‚<·eÔ)"±‘Éä<ŠØ¼ sv«o<Ûì7I¯uE¬”k)t^JÈE— Ìc¯MUÝdçûÝ—Md‡£\ÆyLÅŽ‹p*ÞGž8ÁÎWd\‚ȓĊx <ãÔ$:ɚײÌ3D œõéÅøƒd‡}í‘î­ l±P'T#N£Lt*ËŠdüHNÆ”ZV"H]28Y{P*8XIÇ&^‚Av*)âçxv­v¹Å¯¿€öÝ»wO›6mW×Ò¥K¶n}gå[8 ÂJœ(T%ãƒÚÉ ¬=Q¥ïòÌ/r%ÈâA:™Á&sQÇ4X R]]ÓÔÔxÄ¢E=ÝÝ3gÎÌÀÏJ-Œ˜]ʸû›©ƒM!r MzS¬§}E–5.6G2+ÁD“×5ò2‰9yt½‘>Æ~‘3ˆ’«T0G/©Zxû…UVÉÊü&I¡2ƒR<…Ø<%UNUi Bœ±`“ó™ c"1@0ƒMIUK"£9•‘A"r—Ë™ðøcÚıGQ!ÝKþQ^ :9a*GØ~Ÿ2¦]«8x°ïA-ù9ÓÄÉ“ÁÖ4bA÷¦1¤ÑÓMÒÇÙê\$«r’ªi#ƒ­j†ò”—!§4Žs+¢n|¢š¼G“Ó*b|É 2Ä÷ƒ*N(¨;Ô$Aˆ’a!rûÊwãKp"F¶Ñ !¾Ö­JJòS+Œ´WG9c7lxóÜsÏ}àN:éDü2=I ÌÔes¤GE› ²ÉùÓ1$¶#æÍ{Ê)'³ÃÙ9$n«¶/¬,WeO^eå‚9–Ê_â«–‚"õõ&eÀó²^xá7W\qå‹/¾d1J-¬¿Õ¸úÃDÉÉ–_–úvpô`PÄ·S±Q^‘ÝÙªö+€†VfQ6:©d&“4Cëè6®•x²ká>2& š¤aÜäó…Ð$[A÷ú˜y(¾¢ )bæÂU|"õ—̦Ö46æôûΰlì7Iñ´ÖŒÞŽMìgådåjUGt\ᎮH³¹`Àä­4 ¡¨Øcf¶S•q”­͘d˜  QSCÌsMI<ÁéÉS›Â@V90|Ä“fäñ€:igšT3G‡sRGDáÈa©"À¤‘Ž·Š(ÎW†ET%£K¤©GÜ`ªQv±}ûö‘‘‘k®¾úñÇÿõÕW×Ò+nå­àÁ¯åcb”rH\¡ü¾ó¿#1oÔ½„¹ÁJ¤Q†s +. âeS’©¯«›>}ÆUW]½~ýúííi8‰] éú´A’@Ì£ÆLò°‘ɉµ‰$@~d†gòš(ÙäÌ;.ÔªpP¥tÉýÉÌeY`)c¤II*ˆ‹zEŸ›1bŽ/—’ ÔÊG’M«f*œ¢ªJišI9g¡13ª<ô4š2|6êcN]d*«(ª×ù™Ur rfžr‚¥²8ér“%ù•£œãû*ÈÀ]¦©güTk 50ZQã[µèvß ECŒ£€œ/Pë‚bGÓ&UUÆ–\%tquD“d;´ª2^H¢üÖF5Ÿ{yôi¬U0øÀ‚²t#Å’: ª*©#(5¾l~+!K~i¾§PÅwƒê °–ç£Uííík_[wþùçM›>`M‹H!LMìK¨4ƒÍ¶l± Y+¿¦õ¶@î¯p©"vBºxFâ!}˜V«‹¸Ÿ{þ×ðXºrÞµðþˆ:ïXñ’bc;RÅÕ+¹í‚…FZö-(îëòÙ˜"›\9r€¼ïMÌ)÷Iˆ¨Ðo¼â—<ÊñTƒF ï“ödX@ÓI…q»ýPÁw— \™Æ­$¨ªD©¨„rPQ˜U(+Ь2ñ3 ª êù0{Ú¤Y2]º"¨Zš]”{>-J¢hf§7Û) 4‹ƒÃAÊxh˜Sá{Fº«hs£UQ ‚•aûƒc])-Ä¡qÉäÁÍà™lšP IG&q™g"èÁA/8—e¥Š Õ÷œÆŒ[T›¢œÇÀɱ“æqTp$€“`Eq‚GÅ r2ŽŠ"TMñ(åIÒ˜”u {ÛE·¨ f–U§Ú®°Þ}÷ÝmÛ¶‘ ¢S9›Bœ|ä®AŠƒ­’Ó•s|—KÌ“l!Èœdɪ§ÐZ¸×‚ààè Îì«•¸3iâ3‰ÌÖÛHˆ•rn¼2JJYÈÔe7÷ÂðD«$¥Ë!XåÒÉQÖÂe|\4©%¿üp Î5JyT³O1 U†™ ¹"0&9ÇÎò< g7—9 8h¬Õ­Š“ã ~˜A6¥ÈH2@áH›É$¢DiD•RÄG¿eóïÚ¾|4锳Ul¿lå2ƒT<»ˆ‘UoóUƒÃä‹úÙEœZ(—ùÂÆÄÌ%~PD ¾xC$ þh¥ I`ð9YŠË-VË IDATC ˆŸ­’âòZ¯Ýf80”…!¢ë=ªŒ`©•™£$"Ê"lÝ&˜B¿UŠ[Y;÷Nb216Lò•]#Øl»H©š« E€“6¥• –ÊV]rk6>»Qžt²uEÉ/:˜ÍXnk”´;éä`§‘‹èªJ ªû\-Áôñ³µÍ~C3EB…›è=óë\‚°‹ÓÉi’lÊSªS‚¼!z”Z(²m$±¼Ì+¤›2,“ÔmŸ9HWÄàÆû1ñzŠdG$ŽzÁ,A+1È®9J„Uã¼"vˆå‘¯¿ ÀXiT'››è¤„˜_šêˆä PHDYëû¿LŠ2©L4imöä¤î;ÇÚŽ?졨“UŸMÚI"ŠBÕ¢f£#1ËÇOCc:Üy:*‹An_°û\ùŸ|Ï0äYB–US.ãBL¢E e¦DO15À÷ps•·YħŸä±p’§4¨xS€›xÊÉ«b@6Q+qæ?´³¬4/))?ì+ëk! ŸÆBKQ˜Üq6‰Ç8'(«PQá¡8I–Ž$¢¢% (Cc4—øÌ Ù¤»`§Ì¬$ Ò(¥Š-ó QøÊÔba³ù ÜWÍÅ€*5Q[ƒl>ÆH]i¶q—ƒÌÙ­i˜‡5g ‚G 9:²Ër¼ÆÎjÄÇNQiÈåGNij6å7^Æ?«Î/>É9Öðž)²ÀóöÈÉ«Ìã&ÐiÂRØTÉØën¾øÒó‡¼jiˆƒqâG3Œ“T¥À †•¯”µì=¢3,!‹jâ ’’È\Æš eSµ‹8~¹žD–àäÖN8|dó–úEüÔ*=— e>£Ip6@jabþBQâR gz¡»2ŒSƒsªFE ¾õ «’îñ88]‘J¹¥<ñ+T¸¢p•Åee]Je64±Y!Óò0¥'œˆ1~НTŽÄ”ø%—}KJ†*(]ÁI‚’ËÁDää'ÿ¨é­KZ[а‚]Ëf 'ç·‡Ð(´Æzï¢à•Qäyô½ï2q—©@ ]Ž…ô•ê/û‡Ç4§c'&›êÎÄ4RZ¥ÜÎq(ãvâ÷bÒÂ4¨é)«\N“¥¯›bOMih‡þÞ8ÕTПêœÌÈL† …˜ýs *XT} ‹“R©‘ÍŽWÈ hµŸx)Hu6ŒÅ©€cÆö3Åe¢Ð‘ ðÙ¸;Š“À[0»P¾"|¢t+-¶ L“ÍJ-ÈÑ$I×#¹ëÏ’`®ó–È"RÖ!DO}‰ó ãóûûÚ•”‰3´f PP­X§óUP|ß³³:ú¦ª;+F–•q8ÖŠ¸êjNH©&*óKA©…è’Y9J2¨¦rª KN.ªXYRÍa¦ª@Kc§½WDfó¡²M•‚i£ gG6ZF«ßå fnâèÍüÉ#R^Žh&êûÊÉcÜ®*~bðµ2¾ß”“ÂÈ—œJ‹eˈ«õ0ú€™N-¢Q)"_I¥E`•ÁJfP0Hç(Š¬Ò˜⪉@¸ÕïógXÍÎIc–z3pò4)ä!ž'¥ü`š“NzL%Ÿ£**ûA¨¦ù–Ç4Cišl†ÈdÓxz@=d5甄µ,åOXÙÊýRJdz¿•ÒEÍó±R°'8—é$ @4ŸðelPTÈ&P|—BÄÂ!ÁV‚bu>25ùê¸/¶ÉÈ”èCêäÉ»/Òž“*±j¶œ1‰<£læ&öwŸ¬ÌÞ»PRl?#»“§)È/‰Üµ §yÒ–úønÕ™õ4qЃMŽˆá¥8 š¬&NâsœNˆ‚Y¼¤Î`‘¸Ó’’W0ì1!HI Sd“RǪ£¤#éLŠ,”²ÔDQ.m3ýü~ÕÍŒJüLðiòŽl¡×2~²“õÉ*;ÊgãQ@“,ûÈnõù{(jârTÈ%•e“ŒUn…ÓTY‚¼g\š?–Txx˜X¢ø ãcؤ–Êz€ãP䙓ËŠi­d›±>¥²½˜DgÈÈ8u“Uiçó´S ‡"ÄUäøD¦K6Rµ²ácýÆ+Fj .í¸ÉH‰å!(S¥jr‚o ÓcõÞ „¤$i&JÚQJ1;Á— òûli”4q½k‘Æ—†ëÓ)’N6H4 F”œy$³/¥ Ú³HP,I$Êf#aJ*Xuëpe5ÑdñŠËlOžØasýÉôö¨£fÏšŽÔiÀÞŽ}ëÞxó‰'Ÿ|ýÕ—ûöw 344ä–ïö; 2ÛdbÈôÆd"M3fpò©çŸwöqÇÓaîÙ»ïõ o>ñÄ“ë^y©§k/rô¯Ö싘\E.ëɇLᨥô,Yº)Êúõ¯wvt’2ïŒMɨ591§âJò+·0=R)q1I ~™[5½}ù"(éZŠ™˜¬¡ù–1gL'b‘„pÉö9µ!¯G Ø“¦x¾²-Ï¥2=ºÔt"´ˆ=àAR.#¦ñ”È!¥Å^` ¤‡ÓGü0‡IS’Ѩ£Åµš?çJ-õ^÷ì´éÓÛÚÚV,_.S Tëêj¶lÙ¼¿«ë½á€ðIÀ›û 6â³::ïñC€ì,%•rž,l^˜zŠz÷dEܲD|‰Š¥k„'w* ˆˆ¦ÔÖŽ¢å©jkóÈTUµ¶¶N›>cÖ¬™~j!âÔëòìü¸¯¯·¯·éNCË´÷{Á'>zËÒ#jÄKÑähUí”i ç.˜?çC—œ¿ùíß¿ýG/=ÿôÁÁ“`˜ <äÉi°×5ÙüùDu-v7j¦4žzæ9Ÿøè­Ë/<8<ÔXk0ñ©n¨ŸºhîÂùmºøüÍ[·ýó÷øë§Ÿéï¥dœ? W.…°±Èôˆˆ3gΫ¯¼üû_üýK.¹˜½àB7Žà”ò»ç±"dCxZe+ƒ0ïð %ç;ÛœB><ú$¬<,úQbj1]?ì«BOœ1Ÿ‘ é…ÉZ•còD‰à?ý³?ýÚW¿V|OtÜ?øÐCÿûë¨£Ž–PóçÏ{óÍ _úÒï_~ÙeÅ«xKhRwÃÔtWdÆQfc:¦kIJ—><+J‡*hs<³-ö£=öÿø-­­Ùš»¼sâ­˜«L^Ñׇ`ZÛüÛ>õéóÎ8­þàð¾v³ñÜç›ÕT÷û_øÌ¿®:é'·¤¿›6Àl󅪚h爌«mœzë'>qÞ™§× uî4˜"Áw†?3ë¾ô{Ÿ}üäU·ÿÓ?tíö/èyÃŒL€2¯peÛ%ÜÒµ¿ë’^ò /N‹-“æ¸ã¶¹a‰ìˆí!]”%2oëÚ­ŽÉÒIˆõ YUôÇ&—[<9dÊa)ÉÈr¼îPÏo—Ð1x|d•&K[=¨œÉÂLƒÈ’Éj+/M¦xºŽk]·ˆQÌijGÍ£CºåÇ^©šnSå[JliEi}Lñm®ÓKŠlå]3‰X‚2ãÁ[’!y¶Tm‰ØŒ+:du½«+"ÒÞÞþÜóÏ—•ü+.¿ü_ÿ.Ø–P¨ötw£éÙçž+IE`¹P"NåIJæ{x© wâ„®AržÞÓ{!"-ZÉ % CKpÛXP®¦^9’»> ·¹ál Mˆ–0R9Áµe±Ä½Mw` %dÑÅ]ø½ï}Þ)KÊuAÔàà`?òŠêêis}öwwÅ¢ùí;ƒWkE±c:‰5ý +—ⳟû—ï|ÙñÃT±N7Ô6Mýôç?¿|Ñ<“T˜ž„÷ÇáwÂÊeŸûü¾÷íoõíßC½²ÝÄ05J$@±9Œù•špóî G›%†‚»ü«ªš[š›Šl³Û+¦‰A:;»pwºYýXq°Ñ#ežÅ"©³ÉÆ™ ˆÙ)³ l1"Ä )^Ì$ÊP™…bx3ò7FgŠüà Í ;X¸šýŸ ‘X: fÖõ°Ú`³DƒAbº©Aöñ$ÆŒ&k"ÓÎ;õ5³ûF‚M%#šÏåÞö¤µ DNqöÔú¤kùãÒ;I«¤Ò#ß…Ið,‚>KKWZÉ®¥ca!Xp”*Œj,<êêk*TiåCKŽTœŒ†îËÛ¦ä”çZ|ŠðNæ¶'¢;Áò&ë%XŸp•ö[20= ¿˜=bL¢ ñ¨Á¥BRƲ¾ÜH­˜­”æ1¤¤Zé…DKH6§ËŠ™qIN¹¡&¾w:¨¶pjå5îÛÆäkž:ãú›n™3cjï¾yO6|õf}Ï<Uf™0r°gÞ¬i×|ø¦Õ?ùAÍȉ*Dˆ¸Ñšúko¼yÎôÖÞ}Ó›¨.m0x.îFvÏ5õú[n½ãûÿ4<`î§4F ¿ NºŒ‚+VDãšZc­Ý6©¶ òŠß¼ð"ñÚ§\Õ477Í8Ï~fÏš944ØTWo^ôm?H\ìÛIó×~L¿l²Bg°mŒ“ g!ó[öÄ'Fpd!¢y³Y†ÛCó!Ƙ2þKŠÌ™ã ŽKq%A#ÇhRH,§ 3 ˃¡mQ2šóhkžÈD—fưBĉߘœ..œ#Ù°­åÇ[ÙÃ6l̨å{iòÞiÉ#$;\þ¸Œ™'H‰ÿ8L\ÉüIÄNDHá¥Iº>®‚5†ºŒ‚Õ/Z¸·O ºgÏžmÛ·̲Kú«…:ü)>¨‚hUè‡[Ð ‘ L±Bâ•mO šœÝ¢!28:Ó{žàÙN=WÄøü®QG\DNÐÅD0ô¨-Τ”ßJÊ wR›…Ii‚l»ÊIdŸ°Öâw½ h£US§NmhhÀj¹ ¿§§Ç %ì·qŽpNvʧìR = ª¾¡á¸ÓÞ¿bñ‚Áýû0U°†·£nÞÞØÔØ6{6ôíÚ³›î÷~k´ôö¬XºèèW½õê îç}óD`cGŸ|ÊŠÅ ìãeV•Ì5èS¦ÔÏŸ73²c_gÏþnÚ•ÀšŠFzzyÜ)§¯}þIù`Y2Û>wÊXÇG.˜Y^g’-N7]?ªª>÷¹ãGZfUÕ¶VÕM?ç‹Ëê^©®î?X»¿«þ«·í•W6ƒ¢NÃr;„…?d˜‡³OjǧKÊ/€zIJ§—æv#,”xcîÒ Ÿ>F”ÇH›•ä'Q×Ìê}¡¦‹Å-©hÁÞeqgµÅ6a+BÌ¥¿lMɸ$Ž&*(ºS}z8>8ØvÌ™¨ÅÚ">ŒO^e[;>>É23—¹˜²´”ÔæiMŒf 9ãR’½“By= G6®{-É&W3òЦæf<Ë·iC³ªwÀÜ´2B€Ò³W0¸çÜsÎÞ¸a}Հɪ«jFm_Sß|îYgõíÛ êêAw’4I ži;‚eÄÈÈ´©Óúúº÷ïÇæàÒ^×±çÜsÏÞ°níPO&³}• ;T^A}±Ù†‰lùã¡D±ZÛ64RÕ_5­¡ª»wzWãž¡ã¾ýg[__¿é¿Ý}AÕh»}O…œ‘˜þkµ‰¶Ú½ëßÞ¼å#—-¹áªËqâ! +u$åý?¼ë¾k.»¸mÖ,Bå{?üéþݨ666|ìÆëÚfÍ,Y©Ã¿ô’¶Ù¥ƒHí›¶¾û“{eÚÔÖÏ|䦯††’m³Á'¥uÝÈŒô»‹8'h1pZXdó?¸óÞk/û`ÛìY̳qË;?ºû>kÿÔÏ}ì–¦¢íصgoÇOïûÙÍ×\ EdfY¦æŸ¸+¥F«Ð…®¾²Ó§MýÝŠ )'[FË>XæˆfÿŠ šLÝf±ˆF*!K0V‚?!]qkžUØÑy3wçPQ”Åž×ÉòŠŽKQM2ë}*Šë^ f¦‹LÓäš]jã¨M kœb-þyóæÞ¾©§æÀЃœ·wïÞmîÜ,Ýæ·\µªÌ±_ñÒK/nÚ´ ¸ÍÍÍ]|É”äÝRûÌøà"‹§ŸzꬳϮ¯Ÿ’Æör¤ «V­ZqäÊ4ÎBt1ã“s}phè™§Ÿ:ó,˜A÷ŸàÑ #Ï>ûÌ®]»€ÙÔÔtáE'nMIžÛIoò|¢Ï.Xø=û̳gœy†Å!¯Ä „8e7Äw½–±×Äam+Ù1§ _ó+Wóà2í&°ø¡9N6Ðfa%Å2Z.e˜§›h©š'Áˆl³¢áÞªRÑ:µu´uöŸüºsÃþ!V{ú¬ú?>qîèh;nµ¶?ê9@óV‰dœËNP¹@jÅTÁ°-^~äèÈ0ò³ea‡YÔÚÜùô¿ý½Ï!£Ø½·cÏžŽÅÁaÍRІŒâ‹Ÿþ8ÌÜ~Ç=ˆÎ1²SB+¢ñ‘_=õï¿ø;È(Ð…ÝèÂ"³¿àûwÜ}Ýše>%è%‘È©ö¯ð°«ûÙ…ñ–ó¦7 %[‘"X`ÔR¤Æ‘<á ô|ÁM÷X& ‡ÒÌ1Æ=c¡8aš&'ÿ‰™düÇ!Ê~¦êniiÙq°õ¿nÿä 3L^±-t5”'Õ…ºðÉO6”ÐÛo¿Ê 7|ÇÍ›7çü©1û¤‡… ²,«< Ëžgž~º¥¥ùz«k¼µ¯¾ ¢²<(Kü^ÞBƒM樆gÿ4™·“™KЩ­»»{``àÊ+¯Â’rãÆ·__·nÕÉ''åÊ. át¡§MÍM´/ḣj¢¢º”L0\ F‘k¿‡¢P7DGˆÚ-]OÊ[ù8[pé„ȼÑj.Á&„JP,¤û^“wðÝ¡{Ù· 6aw¤Îg‹œH£3gÎÜ/?ÚþöÞ¡fO¹lEëÐÁƒ÷¿ÙóÒ›ÝÿOÏð¿9uºI-È6Û!¹Zëÿ†‡†T[ßxÄ¢Å#Ý]ýƒƒÝý}½Xé UÛíB¼înppéiO_ß¶íÝx>mÿ@߀ù×Ûßæízƒƒ]ºx)60àY³¸79D 0‡öï3˜ˆAÃÜG‚8öôõîØµ{_×~d¥€ÇgÖÌ ýÃÃÿàÀPwçÒÅ˰÷Ô|Êó «Í#\Ì‘#¨Êt´ÑüþÝ»wÿõýêC=LŽšÛ6|ÂQCÏÞYS5ºÿ‚ã_û£µ~ùŒ,®Y7oäM@áM?ö¢M‚F«ðج뮽ƒmݼ¡b¿K·ë.ûЊ%‹‰KüÂy…ÄÊ ÃW¨=Æ:ÝݽûÌ“¶!Dÿ<«Ë&à‘b¾á†&ݾÝ=­--´•ŒT¡`^‘×4=…ê„+CÈR£ª1 ÃþîîÖ–f²ëìp^!DíYm#OCp­‹Ïìô´¶¶Ð=ˆ¦ …òŠpÍ)áE‡ý+BÅÕ­TBTüj¢ÙY»hȰè=ÓTÉÐ)Ã)‰ar8)#‘B.Cù¤hå< ãÉÕ=2¾øâ&SŒ fT\s Tål/iÆŒé¯lï«în­Åo¦Œ¶hÑÂU«NÂ1ˆ\‰,Ž—Ì_à~ÄY¶lY6sP©Oìëïê( ÏßG^qò)§’ –O§žvzs<5oÑ“¹¿¯—µã²|€Ð9†á:~“QR=S IDAT TWµµÍÁâN¾zØèJþ´ÇÚ½SŠ#`uê©‹3OTüþ¨Ðeûµ¯£7Z $Ãlvíg?v2ØŠ9˜r "ù˜›ù‰âèVXR¿OÖH&MÔ ¢Æ©­­Oné]¿­ï˜ÖÚÿvÑÜã›»OÚÿµKæÎ«}~c÷žº) Ñö—í i&šÂy-Ëàw¸ãy´vJcS¶pA†K¨¦¦Ö…óæâ:(Š üÙ¶}'Ò ³ûÆ­2›UUƒý MÃkêêÍuOÀªfWO7ni&¢ Phln´ªMF©w·íÀ*³˜–:·möðàÐžŽ½x7Zúûš†q'xý”ºÚƒxÛ%tá¥~6½0ý7{c·±Šn:5¬j`ÖžúÕ5¿´LHM†F†;:»[[‡:^›‡ŒÿoþöþÇN©«ÙsÀ<~ ¹©8h¦ ‰øM7~øŽ;îtuýÇÉ!Mêîé]8.µGh¦†ß¼¿çÝø å[¯»zùÒÅæ’›»î;ñØ£yâ)/½ð¼ãYùݘ˙þáöŸzÒñœuÌkÃuDŸ½íæ=½·G·\wÕò({Ѷ„ê?ö¯/¾º-§œtüežGW:Õ¿zÚ¨¾àÜSW`ì¼ý®{`¤¹`é¶›BHœsë-·üø'? ´ Ò‚ysött¼²îÓN2ºH«öðûN>iù’#PEýò«×^zɽÿrãs-¶n{êYxã;?ø‰1û‚ó°×›÷cö4Îzß©=ölÆ6ò¨‡ÿè—^põˆõ?y޽ìÂóáãüãb矶êD0ãw}üH´óÎú@$‹a4±‰aݽ·ó•µ¯Ÿ~²á¤~ûÇ&•ñ®/úè-ØA¿î¼ ]÷‘ë¯ÔíwÞsíåøÕ&ب<µ¥8½þ؇¯»ó/½è¼{üE×þßþ—®:þØžÞ¾÷ŸºjÅÒ%Ð o<ÿâ+7]sEÚo]àÁÜxãwÞ™ŸÎZƒ8|ùU×…áƒ#wÜ·æ§œ¼b™É„7n~ç¹—^¾áòKW?øðÛ›¶€rý•—>ú«§UÿüCøçŠK.@ÿù'w¡#t=xà®s>púÏ~ùˆ·Ýpmç¾®}ôË/ºàôS¬£ä4ˆ ·m¿F­¶hÏéÛIvMçO—A;œ>ì)îÏD·ž #ì&z&íKõ k"ñ­+~¢•Ûqá¹³¦û“ª£¼†#Ž8bîÜ9ÀÀ¾ gB°ñÎ;ïò¯¾¤ ³gÏýwmÀq[ÇÀµÇ-X¸`QEÓÕ¿áþÏ›—Wø[xð‹hßâ•úÁ]³o¿õöÜ9sye‚j}ä—½½æw\Ô4Þ|¬@ž~úé]»ÚAዦpEÓìÙmëÖ½6oÞ¼ãO8áÑGV2çž{w XºäiîÜygžuƒc5ßÑÑqúéïó B“Á7Ú$?¸^‹pvïÞ…- qQmÚ´QÚðÈ#àÕg°áœsÏ›>}ZwO÷üù‰­ïžîžyóæ[/"ÍÀÇ€Â2q•Ô…Ù=hêî>€œ9sçžñ3Ð…á¡¡Ç{¿—¡éŒ3Μ;oî~ü¾XJ"H³¢ÿ6zcW2a º õˆh¿ŠÌ'úAüG?é“n»½ @¡¨‹£}°­ž{–ÓÚÕu‚lh˜òÖ¦¾ªþá-ŸµgÏîn{Ù<ÖùçÑüÓ—:ßlï_5»ëybÆ1O"š•Z˜%:l«®©ÂErýCýÃUµÈD1QfN›±k箃X+™e¼½Wbt¼IB Òú†77n:ˆ·Þ5Ô×`®¦¶oh¸Oµ „¾‘Q`ö ÷TÕàj§ÁãV®œÒP;1£ÈFì.ÁèÁÛ¶ÃÀA ˜õ5u}=Ý&|j«Gª§Ô L™‚ç»™Wì!¯¸á†ëíƒhíÙÌÞ‚ÂwÝÙÐÐHÝqÏÌ­jîš÷µM/¿¹ëͪéHlj:ö¬ª¯þÀ¥[úñþïþ´öÙu+poy}{ß ÉPpé… 5ûØÆNggçM7ݨ²‹ˆÑÊÙÿ°ñ‚ÑRXÈâìf £ÀÚîŽû¼éêË[[›‘ŽwîÛ÷çøÅM[ÞYóÈcH->ûÑ›ÍQö H!ý˜×6犋/Dù§÷>€Kÿ±²»£‹×ÐÒÛè•^_ÿT̘>-—^x>þÙŒâ^äFõÀ@GWןýÁ6mykAlq€í¾‡‰•.î¬âDô€8'Î.œ5–ÝŸÿøGNüüñ_! @F¼bæM”Z €êöö]Ó¦µþÙÿñFúÄDÁ`gÞ¬™X‘¯ÛðÖñG¯ñÕ×7|é3ŸxgÛx9’ìßËá@:ÁˆÅ=|›tþQPú“{Ì0­Xºø…WÖvů¸7óWš}áS½ëþ5ÈR3€;o÷>ô‹OÜtvpÃkëß<ù„ã04+—/CöH]€…Ú¶Ùysæ\ùÁ‹aªx82nÞà ¢Nlx{#R 4¡€4#¹€ììì(˜]À!¿÷©ÝqÿŒ8ÒtyÅz(²© ¨b[rúÔ©ÿñß~‰t¹t _…äáž5?ÿä-6ýÝüÎko¼y±G¡ƒ/¯{ã~÷3[ßÙŽ»8Q@­?ûå£hM»—ÃÆˆ=ÓiÛN˜(pèäÁUkf:©l-1ï,Å}RbO²(óÔµÖ¢‰· Õš3$Ç©É0N†LªÉãŠù8âul*»¾ã ¤4¢G“<3¦óØéñ ¯˜1Ó©dãþ®¿ÛbŸJû˜äá›æ·6ú<ð›=ø‡òýx<ŽÔ„#UUvá~¡çËž—puwš.Ð\{éñ³ý“Ïý†߸ —aÛç7ßž3kílHµØRæ¡–_tΙ€ö»Û-ì¨G=fƒÏ™‚¥¿çëüÑÑÈù=à]´`>«?樗^{]ăé ÝrÝÕHévši­­H?þþû?";O[uBgWì<á“¥$?IG˜\¢aÉ‹Lé#‡í…_=óX…ã×Å3Ï< ÷|CKsÊ+ÀƒDM_| ¶0dw–[¡”AfÍšµ~ø üP‹]…+Ž2p°nÁ] XqÂ@Š``XèÇâ³g­_ÿ.ôÀòwªÄ¯Å&êyúi³ér l;@°¹¹Åä£Uæþà$N#FõòåóæÎCÉpE€áÁ5?ƒì²eËNZu2šÌ½M‰uQJãèËŠ´hÑDˆ£½pÀM×l`ã6m‚7è+Üm_H+îßz_ADgF;O£¸X¸æ °D×Ãß =½=§.žqçS;ï~¶ýücŽn›ƒŸòköÕÿâÅ­µ#£«Žh9°gŸïØl©…\Óc7À|kâæìѾÞ„K]MÍó¿þÍ9çžÓÒÜl8ͽI?Ü €N"Öq˜#ï¾³}}#CƒævïáÁªjÜ'm…††ÙÝ38<„Žö]»wîܹp½„n}:.Çß±sv'b–¸ÄCûd†h‰ØŒÙø6n&á2$\Y„ß•±òÀ/µg°X+á“·ñýi¿¸m‚sîð/Èž„‡Œ(6dÎ;ãý´_ì?€8N–§hú£ßùô ¯¾öÕÿù-ìl aºŒyŸ(Ö<£5 D69ÓØÂ䏯­Io!9¼àÌ36lÜô¾U'á~܄͊’=èœb‰D\®¶î s Ђ¹s(?,‚!¸ûî{ ²ÉÛ…giö+–.>ñØc°ÿ`Í…"ìHà>ïß¼´ö¿þßÿ ;|uÁ¢¿Ø#â„r’É{^@*Šû7Q±¹²‹tôfMðfø+ð“’Úõ:nTxîùßì3[Q'qý’½ ÈV›[§Ž ××⡲î LÜ#ÞÔÚ2²?ð¼ðÂ+ϾHË{2 ©±á̳Îln4q wCû3Ï>ßÝÕ]_Ý›‘æ©Ó© uµˆ­Awm ð‘iܵúîø†»ï¾›î²ˆ2J?LjaíZb—À\ð„$%útw÷XBüim­9Ù7¦Šuö+àn ½d¶ÔúÚÚ÷¼êÇ÷ÜOwS€‚e}ß@[Û,\ûD)(¸æä‚³ùR~Öe z’ZEðàz!º jÛŽ]¸#â)söæ]sÿ1nEØÙn g?ZŠ®’ÂuPê.eI°j’®»ï_œéywÛN,I‘<à ;ÜŠ€ÇòjÉ¢…?õ Ò!´e™Z gCªƒ<ÄßК$‰öò„´›mضcç;ïnGf¸ný›ûù‚(IU¸æª©ow™ûßÚ¼yå²e¸%»qHøî Ê-±Rg ÜÕ,Ù·ïÜ%.²*`5v*ýÕ3`ºèÜ3‰UÚ¬ÏÆ'ö+ÂC©B›W  onÞ|Ô²ehÁ>ðÂHˆ´e ™ZLmiÁ˜ÞÑMzl&‹µßMZšý›¨X¢=ŸÓI݉†÷.RЋ²pÂ1³³üÑÖ¶ka>-Wáº7 ¡Â 'áÆÁöôGß§R[rq†–hYdø ñÇÑYù8¥,‚²‹œy岋¯¼ïê¿|êþÿ|6ÝeA Æß=°égw€ t©‰»\ce<¦óõ7^G,÷ñÁ£üµsgûòå+äéM†Þ¾sÛ¶m¸Ãeu£6x:É&\7ßÔD÷¯:‘f,]º”®w‚ lGàNc3W!,zÐzäÊ#q:–Od0‘ù Ü} ~ö”o@bñA¼ñŒ=ƒ0Áv¾òüD ‰¢ÛÛ·o;ûœsÐ\É;éB2¬ŽfÎ4ªÕ¾«ûì45ÚÅaôÉsJI„YjÌÙe­Ù —é®ã¶ËyŠ{j™…˜ ‰lÀe¿Ê.,Ï¥X„º—’]˜•qž[/âY§;={Ö¬}õ_ù‡—û‡—/hÝ´£ûϘ{-¦ÔVæÒå×¼g¹ËH~(/` Ø~ä'R •W@7Ü Vê«wnßyäò#ÞÞЃ4?ücýñüs¿>ýôSqa YzÚ©§¼øòKý½æ=yvI`FÇþàk¶-ZüöÆí-ÍsS8ZšÚ·ï\¶tñ[o¼!ŒÎ­× OMõûN;mJ]Ý0A[],â…_Ä¢W=áꤚºª#/ÙºuÇôiMØ/ŒN\†‰p”ܯ@:ƒ ÈpšçÉ"Ö±cÉðŒy›^só”îîý¸shÆŒ™K–,žÒ€¹§äJê¯)›«0F1[(¯°„äú?f5ìøøw>~+Ý Œ*¿×7^Ëëßt=~–¦Ë]HA´8Ø1X´`.߯Mêˆ~óµWÑmÜ@øØ@hȹ«€+|~ýÊ«ßøÿþ~1^;½Ã鈷+à>iºD]ßÊì³G†[ç¤æB·p|ïGwÐ;7N2Ö©æTK—õ_|±pÁ<¾›Ìíà7æJÏ"OJ‹ñ($Ü#žÃ¸­™!dÏ;óxy &Øìäß17Ù›/d_§Ù›¹o½î*\…»/ˆxÅEàŽm\Fº%ãý§œLoÃ8v呸Õ_Æeh±C?·qãªË/¾9ÌTòL¡§¾R|Ì+ kNÛ,„nËF—3QþƒLcj«¹itÓñ.ãÛ¸o½þj\IE7jW£»“JŒN­r EÊþ€Ðù]o_Ðïö‹ð¢)˜œšÉ¶T“2äÔfË3ø'›¬ 8¾@ó¤©Â1ÏgÁx|MÉÎAZœ™Š$nÿ$g®Ù°3c¥¦g¸ªà~Y@G—]ؼ‚Ê8¶Íi[8­æ`o÷Ç/_é?‘'[Ý 4·äèQI]ûD·_£Š¤©Å=÷˜+ –Û ¢/YŠk¥V¯¾kÉ’%sçšËžñÁö?W "¸ "›-0ë§WXÜkUàƒ[2p\¶|žH{÷ê»Pƶ .‚Â=Ün?!©7pÿÂÜr±Tä‹#Uxõ•W0ŽtC`qW7ö@dÊââ%Kp“Æ=›V/^¼Ï?¥vOO7^³@æávºIn ¹ß^*†òªUæµµk_Åq¹ØÊ ©BG‹Äæ"Ø—±«yÍ…r¢ L6evPÑK²r/ÂRã)`mÑGY¡´ìÂâ‰OÑمŶÈ+:{kþüÿ}¬»w蜓~ù3§uulܶ)àÊ%3†ú{L^As9Rˆ8G`Ï@TÙ…AG²€‹ˆ¾ñ¿•¬TÆrKpÌ]·~ôÆ7Ö¾‚µ8.ÃB_ðf ¨?qÕ xš1ïÜѾiófÞ£»©‘Ç6Li<ö„U?¾ý§K—¶Ù.™LÙúNçÍ·}xÝ«/áÞs{_Áµâmsf­\iîòÁ;¯¬}­§¯§¦ºÎî0ŒàéR'ž|ÚO~pÇ©«VΘ9cóæ-;vì09A›GC¹WðhS ÓôéO}â•—_þÞ÷¾ûÒK/ã²?–ö„b1D6”9.cÙ›IlçŒQè,êÂLüIž©àÜçØ!®‘ŠAR‰‘(x~Ã˹7oïºì“_…¶ÏÜðµk_óE°¬ÞV¢]qDý‡þTÂ'c„!zŸt„­i߈3€Œêv}澦µxñ} ‚q‰PL]Çză¿â›ÜÔL, ·ìwü¦Wò)RqFHL¾@rÆ‹H6¸ó¦Õ"§åÎ.`Á\šÂ©…œ6$ŒUÛÌæ{îùÙÍ7_ £ð\a(¿)õu¸bê­›‡{ð:gtÚÃÜy N<þ„þèÞ¹m-ò±hƒšjkêÛf·ÞwÏšo¼ `»vî ·YØ. ýàÆ[ƒ÷dàŽ “ y´jþüE«N:ñŽ;×,š?}Þܹ0WaAÀè³Hª©Æ{ÔDႲs&yÃŽ`4Œ‰¿‰b¶Çpè y-LHáH!§ãÈþ(®~»~ IDATâ±2ÔŒY®ä«®þð•—’;Rcü }5²Jqʈh1É•<à ÁjÎè­1lâyÛîæåõ‹ÖÉÅðšó·¯åç¾.-ãs”MýŠö¯ö‹›ÞVŸž’ -¨,²%Ú^`@KD­¬X¹Wš|ŠëSÈÉ—?.•õà$šô@zÌ»H±##ü#"fV!¸L£ô!±ëaˆ‡*-=âˆ_?ð5¨ÁO¨xö«¯Ï¬Ø‚®°kAOE>~)”qQR”aY¹õ[OŸÏ©ÕÂDXY˜E'˜ScÏ.ÜU<ò¸‹06XQÕùjÿÀ±åˆ“Tc²µÆþŠoKÑÇ®È]NòPæ ùã²u&Á^BrúªcßzëípèJ½¬RŽHzvH-ä×4!£/¸Ýb欙۶m\³æÑ_wÙ›o¿¹eË<6 X6àñ¯æò'|ð.Óu\M´|ùÒ•G}Çê5û;¶.]¾Ì@q+±÷3Z…›¶lÞøÐC]í¥ë7¬ÇýÓxš²éûè.sª¯ÁP&ÝÇëõÀ»”–/_vÌÑÇ®¾÷á}{6_tÑE¸ÍãõëqÍ'F‰ûX…¢BE‡Iî–e‰¨M VÜ’üV‹™’t£Ë(Ìø¤·Û–ôæ Ì”&Ï6ÉWIE)úË%gÚ_.xš|ð[!bNLî˜3öeÌÀ%ñýÓ‚Ú3U%ˆ˜<åd0Ú¦,-¥EqÚ Y—Ö¶ÌFH¢)Š™x2Å¥Û—RZ˼,'§uñÐ+3vÅv6Žá!–^I<Ž›T™æ”`p‘fZ½³eÔÈD@ ¨záI3Ó§ÛuáŸi¶lÝŠ¾8S€ü×ü¾i–F…Ud€W iÂL¢ÔÁó,Œ8ÕI]8#qÚ¯€“D~i_úÄa 4%?\£­–ïED-ú/Á‰ë—œmÖ’Xª†Çs*ç©^µxÕÕ]ûÍ‹äOrNQèô"’eœc] ûOˆ"p;/âéCx9âÆ·×þÃwö~æÓ·-œ;wË;Ûöì݃˳ðþl\W„þá ¸º­m6Rü)S¿ý÷ÿÒ×½ "¦~›g†ËÄðgùò#7¿½ö»ßÝû©O}ï}Û¼õ]<‚m6i>ò “ºÔà•1sÚÚpÙUSËôï|÷‡‡:/¸ðB¼HnÇΛ6m6y…ÍìhUD°K·;’ø€‚'šÝsϽx½ð›7*Q[‘ ©ì¡1:Ä´ÃÃÖñ·2ž²Êl ð{¤2Ê%3ÊðzsH ‰ÐÐq¢ëÊÒÔæÔ†Ü]=ܼ<ì-ìõ¹h’qL=O)deŠÇå ¢•Õ%,-ð|˲ ¬0y¯D˜ ¢é†ë¯+_E9w°¬@3ûDò!HòŠòiññ–”µt¨¨ÅþMgc[*rHêªk/€´fÍCx·IMmœ;˜¸IR‚¦BOˆúú׿ák&¢777ãÏØLÀ½ ›6m¿âÊ«ÎøÀiµ5#xG"žq†›.ðº <­lúŒY£UµO?ý›×<°té‚… `MAö…Ìzÿà(^ª¢¹[{poKyçö+¯¼úýï?¥¦zxïÞŽ®ý]Øà´iӦϜWd<óì ?¸æ¤^µê$Ü.ÞÙ¹ïé§Ÿ1 ƒÍÅ—BÙ+#¢+†+.¿ ó»ñ‹ólò’ƒ±$I7û!EQ™É~!5°³ÒìT!«ºb“%a­ì‘ßCKñòí17'å§7§7˜£-Þ²Œ'—(…ˆFªÀNt6Mu~è}Õ d1&ƉÍ1sãÉÃS,žkÞtÎûŠD]Qƒ;NN ©)?®B¨%Ò2ˆ—-›Ë猰÷Vö\c æwæ‘eÛî!êóØ„9eáþ4üüŠ÷ùÞw¿yF9}®¹úêº:,9pû(…Ì/ý°HIÔ1Z?”dK@(8÷Õb)QõNéÄ è+’äÇ!ðoäÆ r$ËÈeqÞK°œíóþd öhnÐß”©Âȉ A*âÎz³ÅŠšSx±VûXE¿ñÆzåÅ¿øÊðž:m«AB¦‚u|[[ÛòeØ?XüÊKO¯Y³{Ç{Ìâ% gNmèëxýwÖ¿ñ‹M›7-YÒvùåNmmµ¹¢Àõ€nŠÆuS°É®ù±Û{(FÌŸwôÊžµ¯<óЃâ)ÅG}ô’¥‹fΚÒ×ÓÿÖ[ÛßxãÑ-[·,_6÷Ö[ÍK ûλï¾üò+xR¬Ãqû&Ü€i‘©LEW^÷úÇÁÚÅô$M3×ä|“Ý&I|,Ž#²“œ”æI»‚¢jF“eH¥æíIã ¡9îb0‰¡hI(~Uô9%97yNŠóŸ¼i¬¾)íÎqzªÇ'¬ gÓ‚ì¡/ìƼdoW°(¾`ÜEÑh‚˜xZs ò,Ž wBù{5ªu+; y?Pó hÖ*Ç;½WÇ%£Þ<‰ð‹‚ÂF,Ââ(Œù-Mq’C „ô¡ó~u}mÝ:©ÕŽ?K¼D+îñ ro†eØ5ÆMÞ =>c³æh!G„Øx°&Åe5>ÃÅWi=O-̆Ÿ!&’ ®FeÓ!#cë¶U(ò«Í[I9>DÝ·|æ“Zu ÔnŽî-EâF["íÂxÕÎUlàÎj<¶·§£=~ÃrÌ.‡ÀšŠ÷ZÜu×דïµH‹uÜtG°Íœ9·lC¸{û:ñ€gl`+`êÔiÈ=æÌ™CïŽ ÐÔÝæUḠßç06 šššñH¨ì†47ãê&ÚL4o²ÃžEÇ^¼›»€Ä›_€ xñ ÞaÙ××o¯˜²ë‰ô¼¹ã1qè>´1•dÎ3D¾2,öCSQ™‰W`©íóø²i<>'+ÊÐèóägζ$ ¹4©4´ ú¸)’6ðì%bÎ*±Iæø,Àsۛà }JÐ å´4)ß·œM>S¼>eð–Þ¤¾‰80¨<‚¨è² SÇôÒÍ’¥yuèO0¯ E”Äœbabˆ"¯ ~:’³Xʨ°wkH’´{œ¤ˆM–i% ­L:÷( ‡{—Ƥûä,“XÐþ2ñƒâ4èÜäWÑ$=ÀF’3•sØÃ²´‡ˆ0 ®8•‘8M¥`:: eèÌÛ2»ð}NÆË£„ö»Æœ`ã¡!UÍkâaËç;§¨®” ÎÃ'ùn÷)4X8BiQFN2›TÏP!¨+Û~Ì~$C–ìdÖ¨Œ$Nn²w“†é²}ÒˆŠ.U3,ñðQ™'élp°S¦µÐ÷zƤÓOˆR>bݲ`VóGñ¾j|Øî  éü/\YäÀAf‚Td÷Þ=¤ #óÌW»Í¢EAäQk¼[â8U)7€ÔȈy²SÌC(¦Žÿš)1H²Ì&9 ±YÁƒÇ8¬H¨¬FQö4£‰ØÒ؉–-"[•‘>ˆ2Rv3›ù¶†WÎêëq°î’sмÇ•œ/ç-(t]£ŒV¥“‰ª` ¢G§q¿x°¤FjÉž|#=GÈÀ—6øÚÓ‰Îó»Ðé(¦@« šG|„0bÈtÐm6Æ£^;/ÑYØ9ßhŒ¼'NSæOMLÊnfäl¶±kÍà)v¸¥Á‘W3Â3Ð?p«ïÁ”8ØA÷)ÌIÒDð€ '\f*¨£ì…šãÌ žr‚v"8JuUç7Rzl¬uå4žÆ—™ÉB¶Í?Ãg0l¤¬‚%ßr÷ýÖlk9\%ŽOL c¿S´A!,ÂÁlÇ»õÜÇ,ªªqÙmwpzAL0Œ«lÙfižê/7E;*¶ÝZ£8ƒ‚’¨ •!L*¬^½$ “¥ËÜ÷´·]?¯86ÈS¤ÈrÙý Ô"莇;Å] y6^ª fñ{g†;ÔeƒMŒC ²JŠHª(LdqS2(fªæIƒª]Ž#­„£;}-¢Eʬs »{¡âÕ§³Åy2šxfòGâFV,×À¬Z-ÅÙȃÂ!‘f|ÌéîòÒŒÄP‡Ä²½žß*e¹®ÐI[ž¿ÎCãz!ë´YA ½Öse#<ƒ£é¸;VKˆ®¸òœR‘Øs>Iµü};N7Üe ÍÍœ±u$9›¸{Þ(¨Í=3€ó¸Êp>[Æa%êŸ=䩉g¢<+²ˆí(EÚí´“×,¹ä/8ï­ƒ9銱øñÑR”õÚ$:U û=ëCHŠ¢ÈDU¿¡ ŒX¨Œwß0ôåbOWÆœ31&ÄÝîº-ºð6Ü+C´Ùmw*Ú÷ˆÉ‘`ü5ÇQß‘ôê-áJ~Ù7–Gçø:W×Dñp}ꓟ˜>cW£I¢“~Ú ]}ñS—b4#ÎÿGÛÛg ãïÐ#wX.‡ÑCˆ0ŽeuìÜRøRü½ˆ9#Í>»¡¤9„¸cÂÒaªïÌ0ŸèN CDözãógwÄçÏ ˆ±0ƒˆ¨å2o*›ûÉÀI4åçÌ‹˜É:“ù.‰Oq®”v“ÖCá4ƵN˜žLˆTbÌEÓVåo&´qŒØ°âVfãlaë˼ÊLØÊ PËñRƒÖ?‡å=•?.ð™ǩЅ æJRk¾«‰h¯gÀGžúøH!ZÄùÐÓ<¡ÿ?{ßhEqõ¿¯Ò¬ÑDMbT¢Q‘( 1‘¢">TŒ%Å‚=üòÿb‰cÓ°¡‚`A¢‰`òÙ¢$ v0‚%š¢&Fi¯Üÿïœ3svvvvï}Ðî²ì›=súÌΞ³3»fféw³ä°©.mr€Í]E\ŽÜ,}Ú|£é­òjêRNFö,+~sÈ+Õ[¥_ 9Ô‡DýÓëøÒ!nãh_uÉ ¾å’À¡$…T¡?ªc&¯¤¸2¥¸Ñø® ”1Dñ‘þ&f0ѰÇ7œ~ù«_x2(œZ ¯xô±Çîºë®,²^x mˆÇJSR@< ´sAUx ð@áöå{£×pAoÌÐÓ”ËÄ?mi_–Ú(<°¡x NF†È_Ž×‰ÜVˆ)P (<ÐV $Ã,D}}=¾ÔŠÑ ó«ø…k=òœ+mdòÀ…ŸÌëѳ×Ðaò†S‹6Æn¾SØ¿>BF=…•É ¡, †‰¢X,?ËÏ.¼»ŠwêëŸÃÆM$©Ze@ô–ù&>á3VšŽÉÏeÆç1­}ÕÔô{bR[¬¿‚Š'ÕÌbìÈh JˆÌ¤Vô/Ü>qmjnlj\½:B¿üóŸÿ|ó¬¹j«Ï:ã´}ûõ9Ôs·  A)mÙ{*ø*© u9Aœ.ôÒî)­Ì+•d¸øè¶ùf¸–TC' šR®m្™´^^‚E9~Tïà„ÐC°ÖkU–"íK’]“ºÂRò(*D÷Ñüóçu²ý4Ô,eë[ñêk¦OŸ>bÔ˜šê楃 ÚS1"¨›[J³ïš5vlÃÃü¿›n¾eæoç:p—]vA΀6HîÓ„ÌI†DÜÝW¯^­Ù…Z¾,€… h›0½ÿþûH-:uê$A``Ãàƒ £ØJ^Q!ÿ S pÃПÌ< yCãyæ°èàIËÉó lÍÈ/æ0èìPúL’µ¾H‡ Ò1AbNÎßK& ᆽÃÄáÒĺˆþ2kúχ ¦ `ÌK.{7J‰õs%¡L¡%dqç¤'qt]ƒ)©B^qÃô;Ï<íÔ=ö°¦¹ôýtR<©|j¶¦¼ie0LKkx> ;ÎKü0ÆW̉ÎÉÕVPòrå¹R‚þ”w®b½ÎÖ=Ùe\³~ý‹*Ó‚Öh—ÄuD ˜hO\`¶F•\:,:‡EÈŒD³—k©rõ±€ 1Ë£%1Êã§ll aZ)Àa¤×¾bæ'ʸâVEÕM55ÿm¢ fn®ˆÌvÌ6(7YU;ÕV¯(EØw߯ÿÕö_ôäc×\;eLõêÕ 7o$šcH"~­¿Ý4uú]®²•È4®=Vl$f´G×:}<ÑÆc%F¦–Þ›K4õ‰§¹tÉÏFpðÔE¦øˆ_”e þÒî½{÷Fš #~¼N’ TùQP9¿g¥™#.‡°†kòFtÕˆ©rXq•UBcª|—³5®w¬ }Vì úµtNö¿=KG¯Œa§'”©<Å¢Æsn\ëÉ ¨îÂÁ¬iÎ䈨Y[€K”EÏbA÷Úuôº{sÓªÕ«þöß÷îyè¡sοw¿~¥–NuñÍ4¤5ÁâØ"K|[àVZ+d9Λ|c4¢rñ©ƒðå§Ÿkˆ©»4¦vã¦bM˹†ËtÂrNXKr—ý:d•¯õ:´N˜déê´Y¸­†¯+æëŠO« `‚ éæwH —`²¥,B IÒšt¬Ž:vˆ:wŒê䎑›y6JÖP@ÖäG42ÔUG:D꣨ª7iÀ~çÔD7M›¶Í6Ûhjç,à…ÔÛÓO?}ßCÕDÑ·N×oÀq(3ü–6=†äê–GX¾.ÛYåi-Æz½˪!ÒáUW ÏÉR›„yˆ6ð”ŒðpwN±ØXmè®’éNÿv$²%…£¯çcîrÆŒGy$ÖÅNhë%&Ìñ@Ť&ÁˆZø‘.~†N¥C$òÊ&É+(J}×cjøã¹yÚ´Gþ²ø€>_ìÙ³'eÝ&u~¹ìgÙœA&ó‚öS }PD^ò‡6è'qP\‘ÀIˆË8ÜMôº ¢×}o%¾ÆæOv÷¶."lÏÒXÃã:A~0g‘©¬oÅd¦˜ÑÄ9 UcáÀ=Z&.ÌÝÈÂ}Ób´2 M*ãˆA>çüsxLæý1é¿òÝw£+öëß¿±¥¥#[.{€ƒí6AÇðÛ ”ì±^†Âš½%\-—HªÃ»ž¦²ƒ@¬˜›^®¢4¶Aù~È"LqZï€|=דøEèZÚÒ~š¬U†¬+µã&“‹½*ÜôbÔ[Pè\Eæ;èÇItô!{ëÎ÷€P%Ç'x^U…ï@AècôoiéׯßmÓ¦ýõ¯Ýl³Íð ;Ýóy"÷™gž¹ãž{N?õÔ/õïß\*áe p»]ºRŸçëhÛ¶ ¤mT*¶Rò” ëøÒN6º:R4„¢&à¦w2æJ˜lÕºƒ¹í-^céícâ4èGS¬´~4Ú¬k)AëâN›£ \æF Á­âÞ+TJkNUaô™ÚÚ& ú[V#°[¥ˆc8„É.Q´º%¢ç«£5|\½¦iõÊFùi8NrJÕ5ÕuuÕõu5uuµuõ5ê£-7­~¿©eEsËöÛ÷Êýž~ü±k¦LdX% 8ñÒŒW^ DŠdŒ“‰ÔÂÍ+Dy½„[Ê[A•D 2l&vN§<å5Š1"¸RDdq’Ñ$«ÖÀ ‰õ@ó þÔcÉ3oŸ¬m‚—¨‰™Å’š$'.¤£—Y଒IV⤌ٱݨã!g¦K¨/r75a5ñ}÷Ý÷õo|¸û‚o2âÈBåoH^NBo5ÌŠŽ¯m¾`b•¼S  ÛÁÅ€ñÇ⃡kWÀB½2]n,»ÕV…Ú±Ú»®¹Ïã’‰GcïÂTüÐ…§þ¸Ÿ! GÁÝòÇv¹Ðn¸qúï~÷BuÐAN8~, ¿ÿý#ò•ý‰y–Ž0¦AìPF6|‹þ˜£Žºý¶ÛðÆžÊ}«þõ¯=ððÃgŒÿ¥~ýpç \ {†ÊOÊé&œèԆͣÊxµõÌ+dX!Z¾|0ý.+ã®e<—1œI­9Z'Hg•ì‚‘œ4£’ÛG¾ŠEíÇäÿÂHQ:>™þ£…`Ú#ÅÎx%TJRƒ0^yA°rÆ¿²> ™ Þ¡6å(Z¶4c:4jlD‚Ѳº±ÔD DITB.÷fñ[à5-uªÐG€¢–ªÒª–æ½÷ÛïÌ(ºÁN±"µÀ`…™Ušãà™/¤1Ê%㨧é¼"d•e —&c8Eï$fÖ&AåH À-ˆÿJÓHÊ~O©€Y@LŠNØ3Ø)Ò)\ìÞþbYÍäܰ4è³p…T–GJ ±œ`k0I"eœanF•,C<²…³CSŠúiUC¾Np@v PvEûpʸËξÜfQ<Ï—#k]½×К!.lK¬¬=M»:ÆÉ²,ÄJ˜<„ÖÙQ`Ø@<º®ýkPì°C®Ö¦Ñ0†Ès úî’³¥1Ó®A^1súõ3öd°B^áB¾á¦Àcµ³Æ"Ùâ$§TtàH-d³<ÄKÛxÅbÍŠÈ+0< øê`XɸèÙB*e9®OxxióÖFâT[h#ó ¯, m>ñ0’:A¤SxùÜ?u ¦t ¶iIúa´(†ô¬æhçðäÅž×?5¯°A#Í(‘ 1±I×»†îõ˜;¶])¡#75GMѪFš²Xµ¦yå* »¤»‚qM<éÅJM<^¨®©­A‚—ôd&«ZZ°R«7—-[†)ÖÎ;{×HP&‡“Z¸y9BœÇ¢DžË® $‹*k•HŠ] `6Á3ébs ñ§Å™VÛ†vÄF8Åq•ÞQH¼¨ •nYÛ¾Õ+C–ªkÓ Û#@žÄd@’¹•Ÿ’P˜ !÷ÑÉ5ò]ãék†UfiÇØÿÌ“øëŠð÷+ZEL0³&yEnž™J¬ƒŠ¶©*éJŽÓJXUˆ¶ +XØ@< W“§¯{q¡JNu(Î1Î# b~õ+û#£\G-å¯4 H•¯j]÷å ”ñ ©Åœ9s0…‹ñÚMŠTá Ð`%ÞòJ|’#h-«ò \¯º¹.ÒÖIë##³ŽÏz Ã]õPv1ƒhké«‚¼x@ÚZ:@Î…æ¡¥{KÐíŠÁZxÃM3~ÿУ<èËý¿v\ô›fÌ·½÷ï¿ÿІÆÕ-«Z¬j\¹ŠÞæB4É¿ÖÕÖдé_§&|f>££Q?Øb¥ú1G}û7îºë® 9r$†)ËNL\Äú¡ê8‘tê]‹dæ²Ó†®ô7TW¥ëJØ€žxˆB·4­þ[RצªŒÄ¹~´+B24Ns±µ÷2G”$HÈO`ˆ-®–¶Ú×ÙªåÄù!rå]ôÏ4Šä²Û(eq>Àˆ¥‡SvÔù°q¿¤#­’GkA•ôZ Ö®C ]~¼åKO{#¨ÜÞ8²ØºpÕ¡¬ëÐð‚Uá×îÕäi‚*lr]è%æ^&9š+açDž”p³ Á‘¼µ""xÍæh+L\…Ác R 1ƒÑ\_ßÿ€øÞOƒ"6ó'­b9H…NðØ-*'*1$¶M®+"‹CN{•Õ0 Áµ7K®ÐJïÒv—STiAËÊG.šglÛ|žeQÿè=Ék¿Õþ }ÉëÒ8UXáÕfÙ…¼ÂPE˜‚¼Â…ì{PÃê5øgãª5øª5¾gw’Þj5 IDAT$"Ì’ 'Àú¦Ö]b5V©¥º¦ª¾¾¶¹Î.p¬¦ñ§±Têà7N» cÔ¨Q£>ýéOO˜0᪫®’¤"}Õ»zbê8M#Ap(Ìf˜SÂñÒ,G1¼ÂbdOæ#ŽteD0[ çJŽpMžì #dèC‚(‘¿’HFár–„ÄV*Ùi6ÕX|2 ¥Ÿr̸P¸Þ(둇ìé˜nwÖ7µ-ºº^~©¥îè¹ü[ðÞx­§B™UÛø3WYÑÐàÊgR,d6ÐÓ,L¹-§¥åosÇVW7Ìù[’P¥¼S lä[ïÇk$~½N¶ ¸Rƒð r¡Ë`B—9“ÑKÕÙ£©†#ÁB…r×ZP«u\·jkïr#¤ PåjsKÁ=RÃ9ø¤qÜÞâ–•vÝXpû< Fd¹}É•îõ«ünæuHåãÉø Ç5xÙ…À‘oôØÿ ‘ ôµÙøtøy |vŽÖ`Ò š.Ew\ ñ Áì`ˆé€úèƒ:¨ÿþ}ûöÝk¯½öß²´]ôê`H<*ú©EÏ’FQ‡MF­3Y j0UjP&s%Å-Q›àÄ'.¾-'xðDO›·,R¯íüƒ„aÂi7ª67¦Ï‹Ì¹.&tY¸²ÝŒ‚sRÒßd.^B^\áIq2ÁI‰MRB<€«‹Oü—gF— Þƒgö·vÛÙ_,Çl=Õo;ô{—UÍzùŸd¾ÙT’×{Ó9K§|L¯V¤ ÐÕÙ²¤ð™Ò× k jq*ÇVî‘H^1ù’ïI^qöw. Áì²ò¯èe‚„î`Ⱥ½=o\þ4ªÉÂ3xÔRUzÖ5Ýçè\aU®<:êÐ!¡Ù3W%âU È:v  «þ^ÁÅ ™QÀ6<x}I†© :F¹ƒU°+ºÀ²"ËbŨQƒ*j¢ºÚ꺚êZúñŠêúZüŠEu]mU] öêZ:Vág*jkjè¯u×PA FMü1 °c ^ÃÓV}Ú’N-´o{¶'DéõtP(ÈÀbJ|@ P`« X†K%å4$%7 ÊjS<€.ë¹—2™Ü ‡fbâÂG"b_–õeªº ýVHÓZC²kÔTÅǶç>ÜsSðt†ÙGNèÃ+¡Ì`1ÖGéŒ-–¢]4…‰…Å×tØgB)š¸O}=Óá6„Ÿ»åMVTàè«®:Z`BŽ[¯­êyF䪫:Ôw8æþ·£¿Ï‡ßajÃäÕuå•G%Wq9:ÖýIé+¯¼²Ÿ‰®­ýü¡wD3ëZ[{å¢hÑUuô‡L~æ*\î¼U_ñ4·ÛÛsÆÊUuÅ3eT-ª l40¾MÓ†m£Å|Å/œ@ßRijšø½KðÒŽr 8²‹ oóï˜A–%”ÀbÌì×pS§™Ô³öÈá–¨ÚãŒU«WŸY1z¥l[‹·èꎯN†÷ÛìyÜè艷âaÑ‚s£Ÿ *§ê6C¦­\9mÈ6­ÕÀàË­DÝîEléS·i„ÖÜBí=U\¸b*C¯Vµwy¶Ñ¤‚¬}x =Ô$­bº$.Ð%I÷¥4CùH”7Åú=zïí3êë¢úú¨¾cmÇuêë:t¨éÔ¡¶c}m‡úÚúµ:Rס#öúºŽˆ[ð9Úß|¢#Rw‡\¯·§5ˆèìÖÚφ‚hÀâ‘Ofc ÉŠL4+YÔõ®ê4•«¨Ôæã…Œ­V?—K² nþ–ÁüŽ¥þêw‚¹ØT¶ÿµ†B×ÙZÈçʼnÏÁ’6ù*‘ÖG¤9—ARv‹Ù¦àþ˜öÉ#ÈõZž*Û½õõ{éÚµ6ºìÏMgí^*íŽd£ëç6Ü6l»hÑ‚ £g/ÿÌýÇt}ìž×àmØš…Q}ŸÒStïÅë#ö}jÍ­("æïöí¹ËoÛ 8³&>~Ïò5·ýóêûìS?1¢UOÊ3eݰ-˜Xšü$¸Ð­qâÄè©5«w/-º¦ãˆÒ=ËWÝ6¢$£ÛöW=µæ¬ÏÄì·#‘#Î9îµÛ÷zæ˜>VG¤}®Üxé:aB„Õ^_¬ªÂ‚¨ÏßpÜë·“‹æ³Pøè½ýzóðÏ’µ{_ùå–Áó?wȾi¹fo­ ¤Å±ðÀFê¹G$†Ù”¥2¤zw¾dü_òH]æÈ%Λt™  ,ŒRHÖÇgÝÒ¢EzJSàÚ•sk«Ä >ëvyN¹Åá7=}ùÉ8³ø“—Y”mµÊ-óºM°™ÒÜMÔPe¤•5nñ÷ÔÅÔ²k”ª!µª€wšV¬€lÐ~¥¶¸¯#Gz‹À…É+dŠ@<AQÆ*˃F4´´Ôá OßÖàtÌ ‡ÚꚎëy¯ëØÉ¦8(»@¦FüiÍÑ–ýQ­á#¸šËgfÇæ®¿”Ø ãìW|³ùe(WÎ!3ÑÞ))q@Ï%95Gb£ÿ'•ÄÜÜL!…A¤3/…âmÐÓ $þãðuêòž¦)Òa•O)á]à9ݪ>µ<ë°ížÇ9ó¦§Q¢Ìâ¸=·£ìãø›»_®XôðD™ÀÀ¬B·3#^ÓDÛäó(ˆßcÐä*Ê+( ùLÏÑÑãoò‹âîF³Øöyìîåú˜pòS(VU-sâþÙfÈw/«š8_ʾçrNtdÕKÿxë/7bRbD7žÉèó’ ºl!1 vûèí§‰è°®À£šsåÍL'`R¶ÃÕWãàÿ>ïKe ›]’DfKѱã¸þÁòšŽ_:7ŠÎýÎÝåJ”[̺éi™·ˆç, iG»æüãc;{Í5ÇvêÔéšÅ‹¯¡# ŸGÙâeP¥—gŒKíýoñ5øÍ/Þº\³ˆ‰g8ÇÀÏç4FªŠhys ò½ ¯JNƒGiÊ4+å,)á`ãñ€Œ îÈ å –Ë®.À$ª;ÅŠWºÝ)Ö?=üh§NQçÎÑ&]ê7ݤ㦛uÞlSÞ7é´)öMqìØ¥K‡.kÖ¡CTƒÔ‚§,$µh•£s"ä@j¡ýž®"WŸ„x`P*¨’ = `VÀ_P0‚ƒ¼,‡²n?0Âùæ`îåÞ¸H ªòñíÅÄ÷é0ß»oHÌÆB3Š1Y/]¨t§Í6„½NaUU_<ó©ŸÎ1·“[,ºÿ’ïPfAr],¬Úa»ùˆTBöeü8-!ˆWŒîùé õ“׸׬¡Y’ ¶ÀlŽ¡’• f…bŠ[ݘ{_§%ü1‡æÛ‡m‹öųß<á¦Ï!L¹œVH•í’è\ Øð={ùŒ‹ƒ·êõm´{y®\¹šˆÄ ª*ƒX?‰‡x”"ü1{ÜrþÒĬÃñ z\bq¼ýôM3'æTѱ>j›yãúNøÉ“ø>lONžØWß]À¤,ŸœM¼Äf :þ5õíС/!<9yֈ鼵ۈý„Ïk³£çCñÚìÑŒ¶Ç™ÄS«V%W29¹…³ KždÉøò{FÏ:œÄÐ6ëÜ'Ž[¾j•³¶kÛ¡oÙÝ£gºƒSª(ºxËàñWï:bÖÈïÌû;†I3P¾=ïØ}ÿt÷«+h{â’s÷ûÙâªÅWïpD¿'VäÃÓwg9ÁòrÑÈM 4p@SBe+i4§œÇ Ñ^¢~É[–-Rå¢)ršJ{ŽVaª²#¯À+Ý_þr…àeîŽ)µè²I´Ù¦uøAíÍ7ïŒ#ø¸É¦6éRݹ átì€_ºÀï¡Ù݉+Œ6T=ÏX?µHà1ï„€4„ùœ,]ÂToM=òØ^»Ž£}ÌìåŽ^>ÿ܈XkR(®™ ÏÛå¼_/Ó‰Rȸžf?ï7*;—‹ç8²ÚL…/üÁnߟºÌMX8©7Aâ­jáù»ÿàFÒ îuÒõèh{¡ñ2šÍÞ“2¼Šçy £Æ¥Ø{×HJ‹Ô5d9¤8%TöUÂâ!;±xÁ„Ò˜^[CkÌ ËèsØ—ñÔƒl{œ¹æõ{ÍtFÌrA—UMèœÐÈrUåp¾‰ïc˜ÿ}Þ¥J“Í*aÜãŸ!SÞ¾ÿïlhÌÌçÈ ²Ð=(®ÝvÏãœy ÜŽ#Û»½å/—W}ç!zÙ‚hZÓ’ÙÒ‹šÂ¶Ü³ZÒµk××_]«ÜÂ:±6Ÿ¡^¹ÐáóŸÿüÚKÔ':‡j¦HiŒáÙÐ=îùgƒ±Ú2!è¼€•£ïi0kö‹ àF3w0ùIŽÝ1¼E³^²¯ALþ-Y"X4ùI~qc›^˜æ}ëïX*ŠÈ7°u1KIFϾ‚(¶ÙóxF3:ÄÞR¥4·H¼ga§-¶?|V¬>t÷_°À[Û<»Ñ}¤‹w÷OoÛ¡ßýItçËñ«o?sóѬ‘;ð$žßJxÏc3V<^Ú÷Ø‚/…'L´LC:”u–‚ŽÆR([+ÒÈIÉæà‹Óöìàp¤](­9ªðÄPG ·›¹ýMàÚ¯„r‰[n¼ ûÍ7\‰2€'×pÓ WN½áÊ_Üpå±Ç5t¬Žðd£ &.66Û¬jóÍëhߌöÍ6«ÞtS‚£¶SǨC}„yÞÚj¼ÅM›èC¿t‘Ö8¢W‹ÿ·[-Ñ ¸BÊ¡ D>‰!Ëf9|FÏkoyq0+³löÔÑ×ÅŠ‰aqë En0³Ç¼}ûDváië1{áEݾÇäË~}ÞÁßžýåY#ºÛŠX‰r%ô€€O¡D‚'3‹dñqO0A£r° ¸Êª„ Å<šad_&«À@úk¤CWÒØh G•fâ: ­C9÷´¾~3ŸZ€¢ˆg0ý`>ÉJCôÄìÄ/4t=ìæ J6¶£÷1úÔMÀmø6LvL胲ȦÅOô2ĺÙö8sùìÇ»ÑË´¾g9Ýqé5zôã};0@ކ^>{L7¬ˆÁ¤Ø0)š#¥K#ú & VØ÷ùùCñž o˜Á¸ýówÔí…¥QØŽ¼ïÛM\€3h¼Ȱ)þØx= }>0ê²É€ï´ÓNóæÍÄ%rŒ-·Ü²rOèÕ”Å<Í*x¾÷Þ{o¼ñÆ’%K† ¢¬‚˜i†AˆÜepD(B $cÄüEc{ќŭ!ŒÖÃF÷Ê{gÚ$Êöï©u¥yÍûÇí¿g±èêíîY¾ ^þþR&õ¢«»¬R¼}— Zäv—$}÷«7 kÄt/®ÚãŒW·Cç‘U?y‚'.ʶxz¼õå:2µ½€£eQ5}êÂ…p¤ "ô4Ó)EE;ó€4YÙN­‘ðb² GÏí9 —ž“æéöô $´C¹¦>Â[Úx«o_hH‚V@ÕFˆN¿½½jUçN4 ¤_¼#ŠðC]ºtA.' ˜;ÅJL¢~êSŸêÙ³'XRÏ>èL릩E;OE9Íy{Ûq‰AÍifŽvùðÖÔ‰”W\d£ªªÿúÙ”¢S–ÝWqTÒ,Âîß3zò̇–øz·%öEÃÓÞT‰†Îd±Þ‚`ŽœK8CÀ±&Cª²2ìßlÅc’Kp$¬·iU2™ Å¢²Yµí ¦RGÏ Ÿ`{b6¢ñÌ :}”–6~#yuAÛ)ËØ­k†Ž˜¦_cŠ QpºV5p(Döš5»÷q—¯¾`ç6@ì“ᤘ²ÅÁØÐ=¨‚F“m‡â'.n³HDuVSóYzS4ýM¤¸ÇD?´w&ÓÖŽÈ¢Xx`ãð@ÎÍwÁ#F,]ºtáÂ…ï¾û.ìMÒ•8¡ª òÌWvØaúHRÅ9ワU1»àe«ö+Í„s‹}ºÑsøéƒ'ñü˜#¾}ÿò[icÑô³0Ͱ ?iÝF}û^=h->AŹÅᘞ°opÿý­'",v¥l†¦2¢ŸU*•ÞþÛãÀûâgà(Æ›l"•Y£fœK9ÂÛó.ýnÕ¥O Y0ïPlûů1j䄯QrA¬FíÛ ¹eÅ×tÞïáŧï.‹¢‚"`ÚíÒúNÓÐsFœfÁL«PVL…‹4WO¯ªœŽE};ò€v më´r(ð¢W¯^Y}Fú˜z ¥o(OéNòìcvI3šª¢æúÈüzŽÅF:!I 5ÕÕKßx£›bõÆü^½¥ÔeÓÎ;!» ïIEч®xõÕWLja{µáí$ñ¬…Ô¡Jíá¡k°R/ ÛØÔӃљ­Ž•¥eOÎynÀiƒÕ-NÌ´|ö˜¡Óe`}Ý´‹gá÷wÙcb×K&ÓçÿvŸxÙ¬oüí¼].§ùÐ!ã.9âÛ/_a#:"šug×_¼8~ÐòÙ£‡Ä~ìH‰å¹%Q˜ ¾?¸nÔ·_º¸ˆÞyb×K­è™_ç9±’®aüÂÁåé–ãù ]~ïчÎx–ÏF^sÓÿ„»þð‹wítõ¾÷ŸyÇóQtøU7ž°lÒ¨+^®g_rÓ×hõlÕë÷7jæ DÔï§Ož¼¿eFáí܉‹¸½qK˜õÏàéŠýhÊôò"^³¸÷uªßŠ÷ÔwOݲ×WÛ |ÚOàin9É;Oò, ¨tðtó¹-݆ ’' Úž¤˜ÝÛ`éÚˆ—ä(:¯½çƒúhs¨ד  ôØ~< ·Uѯq£°+oî@ï´BýÛF%o÷V(‚®zŽJ©;÷fœÑ»Â…¦>ékwØÑ*xqÔÌ’yÍ M^ x›áÉË:öݾƒTcâÖµ>µÀ3zSÃÌÒÊr©ð ­ºê¼Ñ³_»uÈ6nQnÍš¥_…nz©ãö­æþ_ë’m†N{bI§îL½xĨÇ÷íŒT³Æw¿jÞŸœm‡\v×;ŽÜÁ¬ž¢ŒíîèŒùƒ|s*¯¨¤Ï»„ ËÁ*±]L1]¸}Ë‹óÅnÿ›Ðâîë[l¡ýÁí!ihWñ:›œâªÀˆ 鄬kòò a4dÿþ÷¿‘Û¼ôò˘bÅtè9xósÕª5ÕÕ+`¬^݈¨båÊU[oõ©·ÿþ¶±Bã›·«Âî‚(¦¯ ¹s{1PÚ`†`HIpQ•KïÏídÁÞÂïÞóºi3Iø~Þoî§5KQôÚ%KǼôÂøªSzžzׂ¯ÿñ‹ßŽì‚(Páå.{ùEÄý ÏBf &£‡œ÷^õÞØ‹Ë~3sVï~0Π‹§!Q!&»ÎüÍÉ}Dô¥,:Z0¥‹DJ>6üþi3A²`ʘ߼uà‰)ö4è½6ùc±RÕÙºñ2…ÿsèŒ?»ùVdËgsؤï½ðxš0yíòŸï{ÏÓ7u{øç{uü’s.Yøçí¢?\ßçìÙÿ÷µ“öþü£QO|õÎnæ¯?þ–·ö?Æò)%<°'4.Ë‚¨Dèt¨tßr¹…åÅ4©z[EþhÛ¶èjúÄn«C·õ/¤Cu R†\QAmÓD*[nàè»Ü}UC½ø šÓJÊJ.Pá¢ÅOcS80'Ú“¯'µË[!´T ‹nÊ ÁQva»>Žb”èÈrI»uªƒÊr‰5¶Í6ª«…a›ùl|„êÓ;Û…îÝ:¾jøZóÇ {ºWh…¤oˆA šU· ¡c¯Æƒh`~v»[í ,ÕbÅ“ó©r'dÍ̬Ñ~ï⌤˜”]m!Zrëê!èÔo£`&g–Š _Ñ»5æ†qñ[ÛÓ\Uö8¯k'tÊjG²p3V®”J*%m:m¥u £0Åîg¬øP¶ÅüÄŠ˜1t8}ÅŠÓIÁ†sêÅ4²ÛÄ(‹RУÇMú­wÍ]r¥rEd)VÀÛ§¤•E7m\UU§XŸzê),¤”†vûX’o¦Òêp-wI÷¾:Úl¹ÅŸíÚõð#𣍽—¹ã¨øxD‚ì_£Á{!ø”-Ò–æ|cÆSÃÕY«ljá çz¸Ìò|oYðC ¥ˆ 5\+›StôyîÍW£h{@Ê-{ãåhÀ郺ýˆÓGMÀ uûîɘC@ì¿ïèhæ_—Gƒ„¬ÍÖí¯È|›àpÆ`ÃáŒ#¦ÏûkRŒR ]:î:ð‹Ft8¥.òÓHݾk9û¢#ˆxmÖÐq— Â(Zñén¶aºûÛ‹O¾¤çÂ|,ÿÛ’hÀ)rˆ¿ýˆ“¿ã÷ËðÞ*º}ûLJÑß÷9!ˆâ|Ze§žÊ¯[J:¿4O­U…`1øDºK 7œš»nHêµÍQ¦ãÆý‚mä=i¸ Ê O°u9 ÃÏ ™F7b¾¶µ6šQµM­¦ öê"O8J‚¹Ä2¤¿œl € ä„ çä„\¹ f%×9Íx2Dn9æZÙêJ±H ºHïD’4„ë´ü¦QA*K\'Ü` +⌯l»ä0ÎrtuSµËºF­È‘R–IÁõOa-Y «7D¯™„Ê£Íbµ–æëà!}> Ó½Ágá¬?8_¸e|ãö½MÊòÉ¡]‡UùÞ.+¨B+²ü–/=‡9 ¡ÉaÙSÕ«uOÓU® ©Õn&·×¥!"„ZˆœJATŠŠ(ëÞ¡]y@Z0ØñÜ)Vínë{e×.eèv3EHtÝ\wà¦Ùä̱ê-O¬æfôÏf|´²ºº‰"Ì*z沈zOÕšˆà­ÉA#Í9ëõèñ6»@%fEqmã(7Žj»pÓ£ánÏqê¹Å=•²êæ´Q”¡úl Õ‚§ƒœ sWO”Ó" m#6©δrÔiÙ P8ˆærTQCLå]ÅF÷¨µ.P=£A s˜‹Âi+îjè–ƒøžÂŽx8®ŸE[íóAqÂG¼'øA´¨w7¹HåR ^°žb•cæXÄ—f~#Ä]ŽÄJÎQc]Uåh¸NDä›Y‰ô|¢¤‡“C’®¤S¥M–æÖFrAN]r­Mó, ´´«¤ûLV?xú¨~Ð~•îÏéôÆvÙ16é-IÇ©2s¤qÞŽl(¸$r¯'¤´6¡W/èKŽ-#Æî=ÒÖp(”¬Hžmwâø³N;öûó-¾…r÷ÏõŒyà!ˆ-a±ÐÏîpð BmíöÄaž°]>ûš; q9¥ëE—ý«o,îýùYŽWAri‚ ¼ IDAT ˆEüì7o‘9K£šÄ‚ªº¶GôÈïf¢å÷^Ï€ƒR‘ê㦰,•Q7P=ö‹›!Ô‘fÊÊÚòqPP$ý¤õXSnM.þ€AÀ©.stÕ)ƒšªvÕ &yÒ# v +ñó’éïCcÇÚ)¸GïÖÊiš ¡p·ì±UAª ~UU“ì–ƒ«Œ+Ѱ-•H \*‰uz?Ne'äR©»ØR*?v,k0{U¾ê¿ºªj X ÞÅœ´þž¯äTxJYtaƒø¢WEÖ,`GANEe¨äREŠ«ŸÛ®±¥»+.ÈÜUÀeèÙå:Dù¨Jq+8šçXu—'(-סmíjkÚšÚm ªí¥õ†‹¯µ®¶i_‰’r’¸w±ÒĪ>j¯p­¶d&©«}dX–£'C€ú»{¨ ¢5+‹™#Wæo1¹_V¢?6Ê:-Z{`k5T‰! ÏOõGèrÐò™ß²ÊÖõ@š¡+½ ¾†.[RI¹ B ’ ÂùjÅ )¤j£ÇG +w$"Ê$0Ÿ›9z‘.ˆ²¡f2¨ŸzÌVQí S_˜ó¹†áÇî"ؽæÑ÷Dû\4§áHìöÝû<(ƒW)êsð¨ËOÆŠ¦Qô7muF}~|ÿØÑCÇõ$}^6æ >paùlШïþlÂÁ»NzÝÛVþö¹øþ±c†Nè%/RŒ:çÅ‹H JÅí}.¸¯á¨C¿Æïu›pïEBum^3•aûs¡“ª>ÿsט¯:¯ï• :ìÌ?ýpï?£ Mk»­Ş¡û/å#å¶ØÎ”ÅÖ:µ2È+=¸-}µ¸á¦–)â Žr ‰Øå!«yÔ*Ss¬ÔJAª›h‹£D{zæ8Êól<&ÎB(Tª Åyìx¢;]Ãx.B·Ë xª ,‚Ä3O!Œéd&3¤4ÀoÁ7æ°’à3•ô9;qnžž¢Œ{Õ|×â(1MI‚ ¡T@S£Ä4ã;l)7eˆ¸T1… Žâ| ë¥@&sžL}¹š¦h°#´UrÜM­ðàÊ´à&h šLûC—•4ô4QG¡EA‰EI-L³‚ÖÃT*a(îÕ> ü=VÂA|.˜`"§Š©æ§º©±¢§TÉUê)‹>ÂMšIVB)ˆ»GŽ õ|ž6d-!¸.‚H%l׆¶þ±Ã3ÆQ·É¤Q”dëÖf/µÊÒ,ä|éùµmàY Ã4´-åé ˜:& •{*Í—nD…ƒaŽVIAD«b*%Ë-¼½yÀëÒ‚Áž¦˜nßpûŒGåu<í0AæùnÁîÝAòñQëJwiévPU]3kÖ¬K‚¹™ªsÎ>ë”SNYüò›ˆˆðŽ)Ž´ó?Â÷¤Å:Ø B{âss˜Wrýäç;EñÖúQ\™Ó-T(q¶Ü寸WáRà*ãx§*1lló踒’¬ØØä%Û‚(kkïáO’&>cnezÔµêŦ+>TÆJ½¦æ¦ÆÕ«W¯úàÃÞ}矿½wúõS¦4¶´hÐ)”@Îoq7ÄÔ@S"JW„e¦O²¹r*°8@Ü‚D¨èÿØp¡4•(‚GP+±;„‚V¢gD´±ó¬åüf‹(¢^6–ˆHÑÉI ! ×.J%H¹˜²I ¶« ¹ òŽáABßœmi¶ÙÙyé¾@ÝTWUÓ\¢øžT-UÑC§o¨ª¬ Ó¹½hcÝ@‰&Q08hÂ!t„6ÜäÐi艼ŽECñ¶92{w„‰ ýà&¨ð4’ÐÆ&J-PBhE9fijè(:kVIn"µŒ‡Á\Ú”í£ ZÓzž&bKˆ¢?çE¨’¢=ÞeØU¸œŠë˜8îr"Hz‘ÂQ89N]3_´2y,w<#×öjaÂ¢Ìæ6œ6Ô©Û _ ¸g´Caé6Ïš@CJáЬèóÜÐÒâÂG³ åo|.]…o*øú¡´HÄ{IùFùõúÝ=x[uÇ™ B–VJ˜O•%7“­SZ§eÉ…ù²”t=é–¥s…Z)y~NU–ô4<ŸI~­:¹,ZZn¬¤E¼‚œzG×KÒyÜ#jN‘( gÕféVÀÛ•¤­ƒ*¹-›Õg´{hïõj? ŠuèÖ&€0Ä]Ý­²©… (¼ "0ÐQFÁÈ"÷ï|ž­8>¡% À­šÞMÑÕ>]£´S§@ÀÂ^óÄÛÓ´VîŬméªaHøiÂòŒé>AN1p)P=)(U+ÑÚåSvÅþ.iä´ —I›ØFÇÚ˜G7—}ÅUÝÄl$ʈBds¤ôR*û ]V‚3y¸+_c¦ èâm.p1sc³ Ũa±å”tæÇírŠJÉXðD‚¨Ìøjšˆ1×PR´ß{“fS#à÷ qêÑ&Ë⪥ø•yÒ%IÔ~ÈB(©58j6¾åФ^ §vK;GX&0D1 Z%eßڻź‰8°´³sÌ)'ÊF1® nÆÐÙ sQ&‹ªrjgÒÈꨙ×*±@>rPKY–Î ¹Î­H%ˆg%D±…¦\øz¤^Èö¢@)™@XJ¼³ŒÇ¤¹QÇ…'¬²À„¹tÛÇHg»£ Æá(ÝŒ±JBbÿ°8Þ´á¤WP 7”V7ƒüÓœPUÔ&¡’±ËžAϧɑy óر0~“”›ý¦Þs´H(¸¾OtxKÕRåÝwÝá0_·4C¬ð•ƲhA)®ñÅhà 5º„mòp½Vˆ–Ë£|eY)9mTž»ÅðÚÑ#̪mƒo³TJ› ˆÊu iLá™…¸°R†žYð,U x{ó€4q–V^p›ÛíKÒ´/yÝ,ëÈÚ*xÜÕ²ð¬…Ç7sÓätG‘LP~=²1U1 ¦ôaÎ1+WfŠ;U Ðc«§ ¸3KQj³f]±C(nàâjEuÌ‚¸iþÀÁ7°”,EØ2—_Œ jW7æ•Ú¬b…yêIì´a–œ)£”F4 áá¸RC²b˜+ñSdí ä÷Þ{/¾îœ2&€bòœXVkÐd‡› Ù,´D.Ðã,ZyV˜^ÍA¡ÌHTóôMØ`ËD·ºøÕìF*:$%‰«Ã¹Ê-Ë©ˆ“£„³âm±W%j¬)=HäÝX4«Àÿ%Ô–è–yyB…Ö=rõÔ±iê+Âá΋ÿ¢ŒÌT"–+ÈBeN™•*î-¤ %ŒŸˆÌ8s54C‚™ ;I%óT¹R`†*Ôð)z´%S.âyŠožåÛ'úÀ…qd2ÐþÀPãp’f„ÒߤßDA1}’q=c…û˜dÑt8ÜJQ?›0mI "%>²&*Z âS¶ªjcAykg¢ŒÂì%¶–KþZ'›Fœç|hq/t§eT £ÍÆþgŸ}öÁorc5èº2TC‡¬Øt] ÊçÓ*é­B†ÜÖâ{ªVBîáTB’ï·V¸¹-¥!]°|ÀÝ£pËAùW®XÙ®<¾–ÓWaí$éîHºkÿù¬Î’eR ç^¥EÒŠojt'(טÛ9¹.­;hâû™A¦„œ¢ñÕ (æ¡2žîÍÒ×È¥ã2q6&\ÇÏܲÏ*dn ‡(·ŒL>‘¥»¡#˜ ‡ß¡w–!¥UŠí¤V3`cé'/œö"DGwC—†„Eäã¡6{C^1qâÄìú¢¦ð@áÂŒ&Ož|衇V®.FG ½HÂcRad™8*Wfí1?é­ÚZü Ý"Íç"§›ÌƒOÓTÂSÔvkד!Ú[ }ÐæözWk›ÞÃG,ˆÏËV¬ÅCð4ê9Ñs†Ø$¦ðã~§Æ‘ÆÐtùNüÇéáàXI{dX¢à´,'“*G\Ô(ñ(÷ èï Â… ´CØpSç.TGúÖ¢Ùx²‚'-bœÑÎHtÊ‹¥,ÄT0|-7–žÅCgÕ¶O8"kìÞæAø” ¯¤blå8ÒÒUãhmiö¼û?V;Ì%¦ô tm ØoT3M³* … øx€žíáMâÑÞ'ÀìÂÄÂ…6dhÊ'lަWºy… ôí‹RkÒ q¨™é3 cÄ4 jÛfrTUD|{=B “fp0m"êtúÀ•æ®"µöH“ÂTÓµ¨xq¥L@˜RT3î¶ÍW(÷dÁ弦¥!¼ páÂ… (æq´ò6 ÖßW*#äÁV§& ì R–`åÊ_D öµøÎãø;‰3À@S•¹{2‘pùÉþÄE.+ëòªñ¬M c¿‡]®NyýÐñ‚´ÈÚxþ;gŸ¼6äíO¯¼Vl~U7hŸo~þX<Ü®úáÑÓô‘ÞÇÒ^…ÐÂ… ¬?ȬEKK‹—]8ïZpîåF!‰3ùÈÁ%¥üxÿiÚA1¤DŸÁhRؤŒI¤KaAfI6¡yÒÏDž2Y ¤UZˆ8¦LîGÞìÀøÔ„ëîÄ6¶°mŽ@ß8r »F2 {ê9ϧÊ:Ï”ER |ÅŠ• m”8;wV»>É~øÈ·prÐÕíªºÊµ-€… (<Ð*ÐLk«8kHOÏšY D‘¨–¼ñ¥SŒI±-M-‡º&Þ•”qœ8¤¡ U¹¤ÊÐ Šü0U*ä¢ —c½¬e5 °­$lÑ29mÃU¦>€æ€üÚ$[—q´Øô׫ËÖ\=«m7½¸±L‹º_«ŠÅ¤Ìó;«á­XQ³Ñz`îÉUUý¯\š²oé•ýCàÞº|”²Ö…¾Â… (<°ž<€˜-‘Sø![X¬“5púàd‰Qœy€½ÞPÍuœ„P‰ÐS„ á³Çˆ+²jc¸Äž±T#0ؚ͒™¿!Ù*M*C(I‡7—c©qUk‘ š2”!0>ùE(‡ ûSQ¾ç<Ö)6Ãf/˜rDC–}ë®=xòÜ€XIÎ…7?̽û'tÒŒû–ž}öÎí¶ ÔáíVÃE±vÕ7¬6jý£À¥… ¡… |r=@Ô“”uBÙÒã[âw-‰ÃŸ§„Ë8JfB³nŒ/Õ>uò\(óqŒ*.RL&Úɱ6>Ž£zÌ„'4ÄSm }•üs£K1¢mã+™:—Ågª¡e3hÛÄÉa=ÉR0§¬A† \WÁæhça:Y.?‰ªõøÊµ_ÙÜng=àU~䧤ÍW®}ÅÊÅ©s¶öÚ¸ŽIpóµJn«[cCn3.}iñI#¯¹;r‹\¼·Ò7×émë½³¹={óÍ×»8ßÔ¼ó¼~¨W#>µ?ÞRH/´Ar‹¥WwÎîs8Òœs¡í|öù'=&i;é|,›v=#`[rÅâ ø5ÇÎya¤ A1<>¥9Ñp$'à<£a‰à4Ì8T)YÙŠ&¬]úòsûŒ& O쉌Bêʉwê]þR¶,æ|**ƒ–9:\ƒT« Ûƒ9C>eæªmA~IkCgMMMï¿ÿ¾Ö47¯þÀ=GŲ{ïlžtY_‚nÝè^w>»èƒ¨y¯¡ý·~ÿýe«ãBsôÂóü»g¿s3àÂðƒÕTŽ@Àö©§þ²ï§Ï7²÷º÷ÙC ·X(ª÷ßïûÃ_ß=æªE—)ùÔ1]ø¡ÝkR,ÚSiQJÊ¢cNì;¢K—.râùäî5é÷3-c&°gPÊ… ë¥èÓÝö"7nýÙŸzðÙ÷g?¸xÒ¯'ýöîÙïõ¹æ¡ß‚Ûò˜x>Ijë,ÑÔ®7Y%ǽԫ!>yîÙ×£¼ã±¨k©ªÇðsú]±Ä~Cj÷^RZòÂcÑ®þL!|ø¥‹ v]rSC¿sîž{ý0L‰`Ò£Ç ç—&*Ž#+À ¯sEÑÖÇLåT,øÁN§\Õ执µÓݳØ7ºû¦£¾úÃ÷?ýì^7õ雨)€µljùÎãuWž×¦ÐE‘æ‹;yVG½ú·ÚÖQß¾2ŠÝ)ÈÒ]ƒÜöšt<_DÚ¥Ýn^Y?¤ÎGÎéžêÕzí¤ûúâͲËv6U&Ü„íŠç&¸¥~º|4R>C … |H?Ò%~¡¢•²eä±Üâ±Î¤.»´H_–DÛ¥èßÿ~gáã þûŸ÷ Ðf[|jà—‡wÙ¤‹”†¡Æã> ÿ<1\¥bDÃO£Y‘oêÔÜÖz-ÖÒ*áFÛ*YùûVåžÇTªµ‡¯÷¥4‚…Änàn! ´èºÃS2Í´j‘¦bo ϵ¨òÊ6x «³•ÿ°Ò}¿ÿëñ'vwâµþ!™2ùCÖt' .˜{îØ-Ÿ6û«%¨¢–M½O)0æ0ðîùÎ/zE¥ZZæÿ û†=¸d—NTÚ IDATô\6õȉ¤\¦Jž”ìï)¸~°–Z×5*{©eàWÆ^óʯK/ûæÝ—\óÊü_ìI.™?)GùеuZ(š|NÔ É‚I îîµäŠX¶¼~ýtF™B? 󜯺@Pè¬ß.O[ÞùìGçÐ{Ý|ŽÙ ú°m A’ò(RŒa7]Ñ?%+Ä-ÛûpÖ7|µ¥å@ü}`þW¢¿ÿÍ àýãg,9>ŠžÔc§ÆþêÁâVÎê<Úaܾ'ªä@Ö²£úB“õê4$ó³Ùý°Ûñ§íñÀü ¾‰¥]×Nåš³M-ج%ÐM*¤ì=,²Ž²Ý £ ”õ€Ì£,§rL¦†“„œr-Ë\\î£èàOæ• üPýŸ÷Þ}ö/-|ôw_ح׃¿zðÁ_Ým—žÍ»ë/O>òÞ»ïB¤eÁ“0k@ˆ£,Še&Œôhø*{EO°ÒꀀË5ùm«Cœ´¦M,n˜ÆƒÊ©=ÒßÁA ó"Ó*B"D6‰f¥’Îj›ë²õÉqw¸Jî—r4<ºxâÔW hÁ¤=&-#دèÕùsžîµÃöbØ¢¸EO¿²ŒÏ æö;ô²Ò²Wž&dK²ý á{NÙ–^zdI bn 4›Š(mÂi½¦Og&@%=hóØz*¤(g*¸ITøÊ52åBë%qËÀ¯ôºøâ—†Ú¾D¥o^Üë+Eh†ò­ÑÖÕœ^pÊé@éúatäíQl¶ž€1²¢0ÚÙ;ãÜÅ4åøeoÌ𦋔åªhË®“M³ hÁƒÓ÷Ü©ÊÈ1¦ó›ì5îG¢;¼àïïùÒ_—B8ÊVù}Ò¨8 tfuò´,§­K%\#GNUÅDº×— D§Õ¨¸’s\V)`5KÉÑ$Àĸ…(?Ù›8B|€²·z,[¦f¬J-0()%ñLX²¦å‚J²%äªÙr£nÇ]ª^‚¥Â®ÛŽ(uïÎÔ•:€dä2ÉÕ6Voƒ-¹NvÛ&ŠÐ׎#OE䪗v:ÊäÔ9C¸;r×[¾ô[å:×']y^›r«ÓpÜæãN•2;*TŒ›‰õ>àF±y;1Ã7½dBãVtoH®ÊÉþ|ô(äÿû£¬kÇ7?¥Iž]æPeÚm/3y”[çÚºmþhÙ¤ŒZÙÖ‡èvëðB±Â…\è4…dÕÕ4—€£l('æäk¢*Ìh\ãÁ\Æ:pÌF£^UuÍŒÓ/¼èbÂaÔsÏxúé§ÿù…7LS¼óÖ_ 4°Kç·̫­[ùá¸Á]oìo³wÞuïªÿ²Å‡+>Û©×1Æýî÷ÿ­3ˆ9ÑIl«ÑåÂó¿pÅ]–õ&Lž~Âv A–&-=Z6»áLJýöâ»›Ê8d‹Je °ÛwŽ:ç…‹öQž@\>õ¼!“£ïÎù±r H̉ó%X$‘›œ–h“œyeË1…­±1P!ÊEÚ™å%˜¸|D›X°œÇGr©iù™>ªÒΖchì Ë êPÞÜÜÔ¸¦qõªU~ðßwÞù×}³oûù”)M--èæàVýþ‡?üáĉ}Uøüú_M;í”ã—-[¬m5pùMÇœýøÖã¶o5åÇFн{÷k~#įK?¬7k~{ÿÃç~güzc¿Þÿä§Sz`91üß/<ôågˆ”ö“³µ«~(ÊœüÍqíÓÿ“'OþÑ~$㱎ʧžzêðáÃñ–H‡üàƒ¦ß{ï¯~þ󖪪Œ„<âåŒóÏ??k0c•!Ý­ùùžÈjAr 9õðÛ§¯ ­ XçÐ ‰Ê’NÔÔÔÈ©PuÉe—ý¿ÿ÷ÿVqìŒqû&55§Œ?tà ÚÚÚŽ;Õ××£[¶ÚjËÇŸx´áȆ={]~ùåÿû£ 8‚£í ~tì±Ç–Zša‹ÎZp$Êã[(Ç€±¶Ø|óAs:°C´ë¶[=÷¯–¦•õ?]U7x÷},{iÙ?žÂÁ†±°òÖmâ}ŸÐ……“¾0±÷Òsž»°­2ÂÃïvw1ã¹1f:pÕÅ‘ÄÝ_ž5uYŸ»h)Zxýä×Ï4Õ“*“Ÿ\þmã¢lsÈéÕmnˆóÐ,q?ô¡34¯u½]º>I³>YÆÖÑ”Lªr4M9‰±“\wQsèÓ¹õWÒÇ=í[µÄuæ‡öcRûÓ¤Œ“ÿø£=N›¹ÇÄ{Ï/ƒ×þ [w}‚M_wN\;N’ãN qÍŸ' (GÐ6å¸õ…6, $D¡2)à :}A9ø§¡r ™$íb›Z ʤz^Sã° 9Œ–Jâc7u[>öæš7^û î½•Õ5+kk–—š÷ܾǃ{q—€cTÙˆ½sÂ!lÔçÂû–ú§‡/ìs gC™o©»wHˆ¹®GÏhîü·Nñ²;8'Yðƒq§¸hà¼lö‘ç/&œ±='?¶³,¯²@òóçÇbnѨhÖ]]_|>±V$™Sˆ.|t³Ûæqìg!ƺ@•“¢(Ãtn‘†%8¥p'.B ê(œ]Œ›<ÑøÙ¡šâ)©x¥ðC¨w¬cXáä²-\TÖE‚À7ÌŠ>AË#nùMr*7¯@:É P¾÷Þ{øQ’Ý÷[u÷ Óä{_¥–h—½Jwýfºü'qçñFÚÉz üªñÈ ÇêøñÇf7<ùîN ùq˜{›ï¹gtç¯oƒ®"Þa×èöëntÅî°[4ýç7Ñ3Rb©ºYeÄò¤“åÕÕïßN»’¦¯ù!%/ó í©€ƒuÛÝzíÕ2knËλ·Üñ‹[DK©®æ%!À—Ây º@Ñž¢y3î€ÒÍîæ‹7® E¹ðÀ†àýöÞ{—]vÁ(gXÚ´É&Xî„Õ—´áz0{Jç‚–¯tºÞÀG  G“Z˜ë—Ѽ‘GQ¥À¥iÅW7ÕE+?\ш¼¢®Ô­þOuKTµfMSUc DuèБðMxJEcA*kqƹ…“}|Ø}·LïŽï8^7ö†húø½\xÁ}@üðƒ1þ–í£…VÊ+æ›üü }Ocá$z ãúÖç‚ëÆN}k™ °U}¾:êŠçŸ:h0ò'çFûý¤{i©ÕrÐEÓ^¸' 'í6sê·°n å×.]:†2ùSv9í®'"Cˆ€ö"£!U`´…?>½çµÓîÌonDÑw‰!€ Ÿ3í0™?åHÒ„¸½¼óe/>Ÿ|«„í9¾Ð3*8ð$-•ré¸L‡$3ÊpÑe+en:S $‰i‚VB¨OgfYá- )N¹^¡•b6 ô~ÿhᇲ%Õá¥Ðö/«]õCQF‡ˆË{òZÑþóŸ|Ò·^?c€°”û7íü~6$˜¯XµjÕ3Ï<óà£U—¢ãÇë×ßbÀ›úb1sèsÀc®;ðRbA™„è’]˜0= ˆ‚Ø}|07x0´ i¬‚Xš$ÉÖšx邹ÁP¼O<ï'N i¥ª²T²ƒmáÀÂP1ª¨Jl)ÍÓ:"\„0slH/P0I”¤”DYœì³$g±wC2ù‰Z«ÒËÝÝ*oô4ïÄiOUÖ8†‰ß\ÚÛ4f@n.ÈÕ$q#©DW™1cƘ††Ýpô®™3f444<üÇ?N›6í‰?ÿ¹ïž{öèÑ—f-è*°]…øêýÖé-eFi|œw-hu= P†yn¹ÕgV¬XyÝV_¼ß&·ì$(Ö}êoW7UÕ×VmÞ±ºë_ýYŸ5[|j+¹rÔÅ4–þ5UŠºí¼=Âý7—D¯Ýu豓mä—¢¾4ê4^+UZøà’†“(¦·rƒçŒó "9zíÎCbòR´]¢KÑ o6L9wö²Á#–ýrFñ·t7‰ °JÑüëv=&(ðö§\ø¿2xßÑÑÌW—EƒºSª°‹‹¡½Ç^6˜°¶?qÌèÉ3©ÄšÌ>îR:‰¢QûòŸnÃgçð D¬ŠÝô„ rfš€*‘H—b. $˜ÃG…øBÝ n3:pCÔ­ëu.¯@™:w¹ñwƒ~!8`sj÷(º\»o¢ö¢ Þø_'ª`ŒÕÃlÙãfŠ˜_ç¿«W­D^ñÜâEÿqþé§œºWÿ+£|55FMÍMMkšñw É1’Pp®EuMMmžÖÖÕ×ÔÖÔcáD=žòÝ„“z?¼ÜÀJ>ÉFØñmzq G)tä ƒvÐkåÀ EYlM"x!€˜IR˜±>Ï#ÐòÚºÚšêZü¡TÃ`OÖ ±yMS ^4•&¬L¥ ̹*‚ôÞ '^0ßÅ‘  ×ÕÃR^‚uQ-öš«™Ð–®ŠðT¬jj)÷7ìå%ûÀmš­#uìÛêB]„ x…`A ­vk­žºpŸ–»€1\bÛUŒˆäi%:WÒ¥+áÓþq𨾩ªªûÇ­+º+4ÁÞoàÀ>ú‡?ül VÈ.0q«LÞ²ÀQçŸ)ÀãЪ8ÏíEn׈D‘+¸Ï¢¿ÊÓŠ s¶Úz›þëŸ{lýéÚ¨©cçM£kþ³×es§ÏtÜ¢Si“Õÿ¬ûï;ï¾»ÕÖÛ²š¢l“TÓÂýÏu=µ; @Ã:¨Stп5aÖ¹7¼Õ=šµdØÝdÜ 23ÀSÜuPiáX|]3~4÷冟ĉJ‰VR]÷ü´AÑ[S¼:1N¸â°Ìé´èç-O³JQt²%@$N2¾rê \¼(í¢Æ@ŠW­tDØ©’ˆ”  TÔBÜJ”YHnAÝ#/§ÍP3iUJ¡Px ð@áO 0¾Ê.ã­–s\A7hN-Þx÷¿;vëÿþ÷¿o¾ùæ3‹ÿrÆøñ{ 8àÃ5QcS„ð˜ñ7ã•ßS~P2ÙE“ˆ”Û…}øV_-Âx|§ªVÆ| û%`ÜçGZÄ…¦ ð—wJxð(î˜7 Å‘[ å"BÁG{k#Qb&Ý&8ÒgM — Ë(—i3¸’¸¨Fæ1¯j)a¢w¡ê–MÐÇߌÐ*XLk<À@CcJwRpöÂè´ÁL p †”„šUC7K”Ù^Ë—ø1 U¡]%"¼ ÇdRÁˆœñÆ‚›îU瞦i9 H,DŽÈ&§r•(£§YYuV+|ب¬Ú Õ*X[׫h(À/Í)7O›ö™Ï|Ÿ§Ó—¹9§~BíÎJe;p%Š1_ÄI*]@ȬùbÈÉ+€Ðm‡¯¼òjMŸëÞÿưŽQ#M\àêíÔ¥S§-Z¶xeÙû׿öÚë=véM×i’—m༴ðüCgô¸–Ò‰R÷Ïõˆ™rÃ[®=ÛÚ/š{÷/çvÔºôô†Æ#S¦¾ú®'ȧ&ÈÉ"Þ¥EÛ8¾ëON› ëÛÝóꛋ{®;—ýi.¿¼¡T.Vôê‹{~€–=9‡Ñ"}nú/æSqùÔ™³›5¹6¥I‚•Â:ò¨`†%!>-nSåàT'Z<-" ‹N “a´0´¬Qa²Zx ð@á Ð4 ãžÍ·¹»‡ï)Ö4à(ß Êlo¾÷aÏ}¯3ÿë_ÿzã7W¬è{Àk8`Çí˜Öððz*Ó'bøí‚L Ð$¿Ù‰7#i“µxøOÕõ4üªZÖ9"ó<±À®¥2fˆ#¦ªk±39ó'Vu\ ˜NÀf¦hª žf jëkkH®Ý_ÇL˜ ´UH$¨Lhò¯FÞ@퀇®`AŒI{0!YЂ‰–m©¦©TÑ73yRƒ&(øýUž£1šcšnæ¢ÛïÈ8OrŠE÷OÚÅ¡|7%'s*CnQAsÉ`K ·4rDûA˜žx§Ë@¤@†IRdDh³pÂBÉA± ,ìÍ•np8béǨvÐÕ˜Eé?p ´ÂGü1ɉ%”˜äIEîîv“‘hn”/p΀M B!Š.*±ˆ¼7ßr«Uk1Lýkõ6ŸZÙÜ©®sTõ>¾x»Íç[ªßûp«ÿùÂÖŸ~ì¯Õ›n¶ÉãgÝ(è%fÍ×.;ôk—‘ˆnî»å„î"¬Ï÷5uèÄÞ\ä/ÒÒ<ÃŒÉ=ιPP,}©´Ý‰3ÎYÚÛ ókÜ}.ümCÃ!w³äÏÓÛØñfü5hä¹½£ð†eEƒGž;eâ°ÝfD½ÑÛ%J–úî” Cv›´Ñ­ÏEרå´qH*ð÷èè1&èsÑœ±GŸ°‹,í¢÷³yæÖÀoÒlPÞ<…>0™lÑ8§Aô„lYê¸ ‰»Öù²(¸s}PT(mIk™(¶ öDBx~Dî_Ç+•h¼Ÿ¥[“PA54¯XKòC œ úá?Ýkš›kiªá€¨ÄÓ˜Æ ¦¨£y #†fMP†fØyA”Y)EofpBE’(aWöv€34ò¯ 2é(¸q4c&4¤}µ¤ @Î;˜½q„‡•wd›–"œ+Kä’X)¸§.nÓ,ŠãR ²Ú’§tkꌋZC²ãÞøëi¿àbàA<þãÒJÌw{‚‹kù˜£¾åÆñJ7Ö jjAƒ oœ=Ç¡e%²€C„´1©ÓÉQr ð…dØgðø•³ïžvØ¡“_}ùüÍ7_±y—Ì\löÌË[Þ¾âØí~;gî!GŒ£A‡ùPǽñÁÙ-¾ù‚˜9Ø8tqû³ô³Žw¶;aú-'ÄÈ}.|–â‰ò-ºŽLýê…¥ësásDÅZmwÂŒS-QŸ‹N³wÜrb,¥>=¯$¦ÌhÓ’hHKÆ›>a¹Ôä®_íÎ\º¸ãùÄïo·„> P/WrA°ÇÀŠ(ÂÌâ’†§!Ž¢¦)²@å’Ó n^ÑPæ¡u… Ø<€aSv1FFÑÀ¨Î E ¤œ!÷rÜ5Èû¥úúþ°’SARa&|x ¨šù£ í(¬LLÃUÚpY-=Ùm•â‘&½a«c%N÷ ¢ƒ`ºGQKÓG­)jƒ2¯Èª $1V.åF^1súõb꘱'£àAl´Ö®WÑ·÷?ðÀ[n»ÍÍ+8ù§ÐÎIݦ⎠BàÛ/<»9ŸoäOž ›lºÙ>ý¿|×ÝwyÁ[/ßýìcwoóÖÒÝ÷ê0~¿mçÌÛïÀ¡]6ÙŒ5•ç|9;ü¤'4ò™JÖ†”.ä®­¸c*]ˆ©ÂD~y-\& ~9}qï±;äòMWÚQÉÿcÚ˜3¦ àcL©½ÅAO&$Ì=)ÊQVÛ‡Ó@ [áÂ… äxã¤DoÀÑ1ó•W^éܹ3¦p‡\¹逿Ur‡Ò`‚àÌåá;nçH"°Q4Œ· ZªKÍx ‚Òº!Ós~ "X$ÿ(Qf@¡¹™îÀ"(<È—;Þ `ÛÒ\Ó\S]j©£`ö §ÖÊ¢ âK”Xp=§ö¾Nà@ÀÜ@â› ß](¯qâ_±ˆ§$òfVxxLp«Ÿ¬¥†ôÚ5pÔQ°"ß^bžrS-aNTœ–0×$ ý ² LcJ`ræAÓ/¢þ²zØ$£@ ëÃ9`á<$üA'´J h˜~1jX‰ImH;aku u)1“ÔÌñ‹Å–'1gUtv€}hîËnøKsJ²«$GW¸eÄiNGŒ\Çk•›6d•A«ª*1LÍ„¨¾ZU¡Yh^gÉBÛ(á2)áfb¦äm˜²Èò’ 8j0ÑÒün˜lî%›ÅÇ…›ætb}ׂfJ•.´Jú9²‹Í·øÔãüþÝý‰ÏÖÛ|nØÈqüÍYîÌ —!ÿåL®BGå”2æñÐb7æUñfüö¾°Š"[»nVA@T% & à%0óÃà q|3¢>M3# 3óÄ7A Ž‚ðÞü,‚#q!²EÄAp‹ a0Q ŽD\Y”Üÿœªêêê®ê¾}³°VÓÜTŸ:[}]·ï9]Uݘ/ÙØ×Sø sF7E*€^Æ" ­”Ž$ ^ºE²«ðpµ¢( jtñݤºÙöëc AÀ `8€k+lì“ûIÝ%Á‡ØÝ Ê1ÿ§t âF<Üq‡|ò v‰g#^—{»Ë>0?AÎyÂ8›=“ †?x®BÃz¬bM C¥3ëÐñCçÁ<tÔF3GL:áGƒ’À+jýÞ#3ÍDøÆÌU0 Œ=åI²/Ë"P…‰ ÈSe0= T3@pˆ™äL-o‹¸åßl&(S,ä¿¢ 8N¢ŽÓ“éw“k¦§Z‡è¹u†ðй¬B¥0ÓZ:#¢f+Íðô³ºà³³‡TWÑ('²‹¿Îÿ3sÿWã~ÇÖ]Ô¤5€§ô à 8ƒ°¹ÔBß ýÆM÷²N¿æÈÌ:•õ…Dv~-b•\žxé’é-Z^4 ý—wüç#~}óLXáÍ[`yÆœgGØËƒ(U¸˜`0Yj€^õüùY­›GOe*­–jBLÐ’/”¤=H Á!±ÊRºzîÕ£8I)˜2"‰ IDAT*™ñ¡ÔG„V‚Wí„âgF1`ƒ€AàÜB€ýZ{]W®Ý#b¤¹ðÒŸsÐ÷ !&Æ1_½yGèÂØÌ¿M`evll8.öãùõCóJ`îpS¦8a÷æ­Âhú Š;ÆD†-0úd~ƒ¸‹ĵj7îõÝ(ŽÏƒå{(%”Ç…ëÁ^ b¯‡F{½XÂö8¢;j£.]\äÀ÷¯þqGý g”8ð³†-ó6˜_LŸÔ$í jødÄïÖŽhÕpÄ›{˜~âštº‡¾}íîóFlø)ðTÛØa‰Eì–¿6mø×­1± å)”È €|r½N´ö„Â/ª;ÑòѳÀw/JGmðÌãC®þ°Õ)L”Å‚®Ohjk©}ÜXAèaí!#Vï3 Xªgà´—‚‡8±­¶<•»¥8òé“ ‰3¢u9ØsIñÔU°¾Ã¯XA;¼Ë6ÞÁ¾Ö7GD£ê-»µPa¥ÂͱÝÜXcCC  8(‹—v™î¬[WRÇ5‰ IVõ8Fˆ,—\½¼ÚjÃg0Îbà* ;yq¥3^}}.­,+°.怑#¦\þd7Uøbæ ‘ƒ …CúÁ28ñlY+Œ–•€0]¦Í!_ýcDÊ#¹E{ûáØ£žË‡é\®È^²ô>ãÈ–ÿmPþ;çU>Ö[È´ê6fy§ò # nY?…äöíÆÝf"LCë›—~wxiÿV<…“A% …£w‰–°øOoù³ ïËÒ’ˆ܇Œ ¢;c«…O˜Yvý ÷Ð7ÉF‡C¬¹aeñÉÔŠZ8TË.¢aœÚCoµµî`íÕj8µDæõ|XH•÷Äö²Gø„2P€Q¡ÀM[qy—QÀ~®ˆZ]‘ÇéŽÜW׈oXK#zÜ]ŽD2à¨ç²– K¯•.¨™Jk zdN­{˜ÍpµAEl,´- èߨuêTZ—-2qEÓʱZ»'Ø×?ý¯—^¥:ªô|Ré§øAáe[T½Åö”^ƒçÇ–5ó× `0œ%Àõíй¼yrp 4È…¡O>ù‹‰WÏÙB%YQ˪QÁce_—¿Dë× è1¤õÍÏ?ÐM§Pd\œÙd]õ‡Q2­¯“ñò¢-{8P[×ç@f‘¬s@ˆ 'tF“Ø™Nùòàƒ¡ÄÎÄYNÅ0)ö{'>¡ vœU¥ì0¬¡m ÔBèïÏC3?%’QXYÃv•¬hkñ5Šø>Dþ y¾Él.~ÕV´FVŽVCmñ«žœd sú‡æpé6›AÀ `8£êÚo§_Î\“ùÐôÕ•®ùñŸä5‰iB÷§?!ä“ÙMcóŠÑüW¯ÿ2¶I øÚèØ¼-ì» [9üá”;Ö}%.Ú[æÔ¯÷ pЭä©úÍfÛ׃ýŽ×+·Ì­Ÿ2)LN©×|Äk_²çµÍë×§;Ô¢u#ê={lƒÍaª˜„ŠçÐòص{˜Zö“nuõÈa//ý˜·¼•CëÛ ªö¬‚’RF<5gŸ*ÙòT‹†)&ìY;¶aà Ø>rí×ÜeR¶läÅ â>r- ‰@H„§ƒþ&…·<Õ²aCØAjκƃ­ôp~ÊDÁ0äÕgÑ$î+‰—uÌ1¤tE›W B+ÍõAµà2'›P=ágÓSe¨9E6°\s£ Ùªž*ÈfL{=N:ç¡ÇûÝÜ>Ù!СÖG-Ø›\–ÈuXd!œ+г>KCT2ÒÀ¶jÇ{'â¾È—FÍ4vÄ—‘B¹6¨t¹Wkë@]ÒóÚãS;õGáuØu{æ0Å*ƒZw²Y)(´|³m²Ó »Í¸,à‹NØ‘Æ+z*l3NÜxñQ)4J}`á°«·@7bÌV­dªÝ©œ.›#ƒ€AÀ p– `_ökÐ vÙŸ²Î‹n™ô?ƒ®ÉYóås­‹ûW…£¯ÙüÒ—UÚ@R‘×ôšY©U?{<ôØ—•$)ôñ’aÕ›[²®ºèã…¯<1i!û‰¢×îVi/|ºê—ÛÅ‘™î{Æ º [1¼ãŒÂaKkE¶¼õà°ü]¿>¢Ý»¯VìMÕt;ZDê§„?8vŒq|2»Ez}>‰æ&þëo×À/SAÎ;/V]øõìæ×]×r†÷ì%O5¿~YÉ‘ûÓrçD _ôñž.Þ²þa’û6($äâÏÿp _¯Ñ)}Yñ‘û/†ƒ—sÞ[QñÃóàÔSp„Z Xpø0òíY{Wû[_úýá ­oÊ»¯–^zñžµ¿jëãwýuýI† (Ýß}a×áþ­CáOf_Øý©ýW”çþàr kÌÂ>¤SŠ``¿v å6ñ3ëø½wæÜìQ;bØ…›ˆü¨øÁ)¢Š¬9`¬ÿÀ'²I<\P‘bþÙñ¥lÂòét¹EÜz|knÂG¹OØe ë>œjUß›ûLšÌÞ÷L <òWøv8™¢êÄŽJái²v8¬IóYRÍzˆê¤BÁ®…Ðgȵâ QH¤\ÖÍmäVô& (}Q €UªŽ}Xšm vIcCŠŠÝ)‚CNU«Qæ ¡„¯iÆm±ˆóÈ•wya?â +ÜÝ€;“ „: K~È´S"üƒóŒn¥.܇ É’²ZM³÷ áL¢ó@ÁµÓf8.vnw̱AÀ `8ÇðC䉻àËŸ<Ø¥arÕ=Ízèê¬×¾|x`ÿê£E¯_¹r¶ ÿ²2û¦'^Êýø««C‹^yâ‰nÞ]ùËÊ…/3‹j°7È.öÿ[ÉìzÍîxõ_Kk}õè¡C}òdÚÍ߬xØèmmZ·~þ 2¢ÝœKh.áÜJÖçÀ/Ôõs,roÉ5XÎÔ¿5!­û=åŽNH†È¾SYT¹çþ®˜ðíb˜•s¢´ÆÙPïCÖ¤ ñéœåÖ@2lÅãZ ·)qÏ#Ûßþ2绞ÿö“0i5`âŸIêö=Z°mÏÇ‹_%/¿ÚÞ Ã*÷üWgêŒ mnQBI†Ë+Á@9©ƒ¤‚5 Y¿Çr(ò WÚŸT tN;9¡y…*Ndç0ê!󧆟>‘I 5׊8¼• MŸy“û ä#¤—âÁ÷]­Ff T2lÌ Øà©­à‰–¿v‰pÆ™BWvaÙ¶‚wˆLi(XÓÍúî¡]š¯X×&ö]²µ‘e2Ò’ –6AòàCD‘Ç»ÚÝ®àœnɾxŠxàË0ð”rT(*‚“Ý®¶ƒ~àÐJi‰z·h*ª¯Š@E#µq1`ÆT söó¡~bÓaN·þùäK·-{“]®ñsøªO«ªöó}ÙÍmÈE†/_ôÑ'Û_œÑ/«Ï0õèã²—nquÍ>JÊ*šñrú+Å!ÒæšÃ_zþã-ëÿí­£¯†R„þÏ…®c¢œÐÃu&]~ô(ÝèJë3:],{« AJ««G {yÉÇka6Ôt:* “¯âÓÃ+*¾?räû÷s™1ÑF¦‰¡PÉ_ÚßNVl;|ø»ÃïM“œØ.h ÅÃèa¯–9ò Ý¿>¼ôgV^Á}£Q»K-Sx™Æ!bǨŠîL—>SqØùæÕd§­r1UF[ˈþtY[­T9âèÒví¾üâ öœ´àž€„.pLžãâSÎoA „õÿþâ‹víÚW(·0š¸Îæµ’e®É9bB»]ðÛÐ{øîÍ—W,ûë«/üß? _>xð'·ô¦6ï“5´À É}wK`².g™ò»…lgµ7—@vV½-²§*ëˆy+ê"ÚsèrÖK»¹˜ JÕ è¤ªA §ª•z%¶ûÜ4=Ç‘ ÓÔÓËtØ…ÆJ6 Ý?uD*ÏëÕ+¯< ò¨˜êdlu§9*7´ÌxvtÎ>kRmâéÔR<®¯ÏÉéB§Õ>“§\]ŠÙ’¸¦c‚ÂV·ä®Î„"†Z§AyùàK`%7î·¯ÅÑ¡Ö׌‚ú'~v\™[wJÈбW äçûU÷…nŒmûµûpÙ-,ñèÖï1à˜Ù>¯é«7F°5Üí†÷(Z”Ö&D×cà2î; ÷t»ÿŸO„° ‹¼a%7®ùÖo²ó’ŸøÔYúܧV½Cf|ƒ 4èC3 1'DHÑ&·êÿüûÝÓã­e÷ßq}Ø­ïv‡…Ú¶¿•¼ºëÞnÒ³¤.¾ùñW!‰¿°Aƒ‹6¼häÚo-˜ >º>ÅãtÑ7i‡·dàn½r$ª‚K•CmõZ¯ìÀ†@Ç ;+Ã'¶ˆº*^u"S˜çøÌb'§àq 6¦“"nµ ZqbD5g€ï]ÇË//ݺµtË–Ÿ~ø¡>¼[ÆwgÏ€ÁQ„)dl ÎÅ«l °ÿ‡J¶lÙºuë—_ÕÛÄ·/¢8¯¢Q¾s“–qCÉGdµûö~ÿïŸ~]Y‘”Ôõü¦MAïþý6ý}E›K;\z¾¥ÛiÌâŒ+úŸ­@+.KÌ5Û¶ûØ¡’VŠåЊÖ,û±IÔ?¦+š\x¹ÚåðuX§‡ ðÇŽ[Oƒ! Ùƒó´!²*¸GÃZ'V˜Ft)tº´èm#•c>x,ºðåâ4ݬåm^Ù¬^‰ã ÃóÒPqáøÅ³Ê6Ñro&‹7e%Ô±³I}aÁüqãÆå¯*ÏŠ 6/¨µt-Ñb!óir¶ùŒgc ÿâP¿I&-<§ÝÐ]F[ß¼, kàré"\iÛ¤½p¨êS[©l×:í…ªCì uÚR|Oµ4pýW=ðã‰@ã´{ŒgôëŸ0"2àùcžw°´¹åùÇ8©íýGÜ/Ն÷üíè-œÐí¿Žå†Zß²˜‘é±Ý:È%ŽÐUÛbëvÿ¾#²FB<¿ÏZ2A°–±v»ïÈ‘û„FC¾¥ðOVw/[íM¸½d¥¸ Ü`žìC‹Ív•)Uà”5¯¶u:žÏÃ5Ù©Ú-S+Ð%![&A½e½?1PãH}Iˆ :«åâ3ýkmÌ„ƒTf±:’u/Ó2ÒÓË>û¬èƒöþðCƒ¬S‰®"¢S¹ZêêZìPð`rHH‹-âÛµKOOÇw@1_3ÞIhW‘7‘ZH>øº³£ü_åÛ>9tðÇÔ>}Úµiùà†C{Éá'Züúüfͦ4iÒdÃÚåM›µèÐ岄+A[V,ò ´mááÎ-¨_°À[TátY:²*}™<¥»Þ"‘-1ŽÈ|¬¹š ŠójE™§19ápèÓðÚ5•’¥›H›YÝ´BÛÐZ"&d-æÉEb^/L,æ™`¿– ­m5åÛ‹ÇelÊ ½¢Ì-²6mÒùâE×ñš8=;‹5¶îZs|† ~3Y´A#~>©VZÀ~ŒÄOÒž×ÿým«v\ ïÉ–o1áŒÞ´Lû0°*õæ¨^D¢ºD„Ïxƒnò«³Ùh¨-¡`?Іæì'R´Ñ¡MM*„g«msŒ!"&BO šwú[i áœÚɆœi¸èà¶SÐuêñЄk®ÿ§©hll(66ùÊ+aè!;ïØ©(«\pɺzˆàl€-ìü›NUáºßð+ ä`–yÂíÛS[Ü=ÝvðÃwßJ¹öª7÷¶á¼Û IŸVÅ]Òìë.×–]pàþcŸMîÓ禫’»¼·ñÎFa‡¢—ø[ôÇ«F_ÕíÎnÝîLN¾ó4­çöÙEIÂòTç±$¨«vÛ¥ýÞMtï\1¼Ëà v rD·¯cÍ÷\fÕ|GmwY%~Ò’}(i µ¶Q”;Œ8¼¼t»ïDdu)ÖöˈJ"2`rQ<°W¯ÑÙÉkø(Üc¸ÑÙRp(¦áÈe^5~<åî•WÈÄW'"´"çèìÍ›³ݳ{¶årÃÖ,-Û7+o—ËUæwÞš=dó¨K­àIÌÞì‚Ìe‚6-N†±²Ø$¹Jjµc¶—›ÓW-(_•Ÿœ‘F;· ]>£ïs¡ê§Ð$y([ÛøñVci{ËçNÛ]…ùÀΠ/³€ÍËsGçÒ9sÕ°³gûàì$Þjí6[Zõ È=ÁÑÒÂñÐO ÛN9[JÈ*WQœ”,ÒÓ©0HÆmÄôE—~7PØv¥—Ú&<¿n¯dή²üƒÄ®´"» Pº[¯œmb—T}òLlL‡AáWó¶e:éÛ»™r67†Ï·)7>{p¢ä„Ê-uMz‰ZÖ:~Û¥Vsfk6‘˜Õƒ:Ãa6)>q‡CJQwÙ1­HeJ½PˆíÚÚšù-§Ÿ¬! œ·ˆÎã’Y™ÉúL‹’§T‰&ír§¸æ–NŽhfħð)¯Þfo6™"ÛOò3Ëè×±,3´ºCuÕ¦€K=Ñ-Å¥VâY3Îé¶j‚ÍÙÛ2˜W³Š§:¼J›Géè0«’[+¯jQ8ýÔb3XfAg²ÜBç³ÿ¹Ð»í}^˜¶ð¼yŽF­lŸ;-8´?ð™Bص¬­cX{x®A E žÚ:öPëÝIôjUO¼AàºDÌ$Äv٢䖪§RuÒÕ1T Dû ý>†ÃkÈÀ^yeª~¢Ê}º¥c5\ÐyvWç—â >‚ /ÛEà’Êv Èq(XA ûl+¶b£xîºÝwüÄá/ÜÒÚ¯@Akcï´Ž¼@Y„ò¾WàjBusì¨ %° ÊY•ö«¾éOºÇÒ'+8V]žh\ÁG+‘43å² ±(ÂUpe ¼¥ÖQ Få2;ªì4#ú•'j=s)ò©a½‹µ: ;”»v=û»‡%ѯDÙY²Žh˜É¾ë.“Ð {ã# Áº^‰  &ÃáŸ~ü‘Ô«·ùË£¥e{ëýp(&öP\ì®pøêö‰ã«!Ù&KnúVnذ¯LˆVŸë2È;w98F-fY¥e@ù+®®:…¼yº*~Y¦ƒ›Ôµˆ›“E§g ±«­U‹“ÃdΈF$¼pÙ²tÕ "™oìСŸÖ:¥dfæ¡x8åt‰0qúhâ;œ_gë|øm§ë¼Ô³s"³1,™•C×[@Û³x{„¥Õ=3'PIQÐûšØ¹çüp·tÕàMò u™¹§dw~A!xBï ã†7‰•”EuU¢pÅZŠKm¡Ýd  ‰µ©& ÆòSf´ÌY>|ôûÕâþ°'ñQ‹™Åf„O !·Køì.ôú½=ÚTWYkõàXýÁ…Ž–Yðxy®šÆ1pþ¸)<+E`¼;‰V­Æo|Zª9ýɵÆI§E ƒ¥J>јAlÊ‚/ªz*U T¬ïµÕWUè"áàÓä3­ .»°±ßVV[ ^šGKd²¢ ‚˜ý€‡ð4[冫xð¥ÍoÙ–~§Tw¨ÃÖ¦¯–©4«áC Á "hÃ0È–±ÌŒkí²†°­²Ð(ÐLûí×4žÁzE¹ F‡`@ÄÁ²Ü§c.?Oþ!"Ìz‘Tà ¤Æ j‰LD¨j½('¿¥§Ð"ë¢Wˆ®Â ˆ1í”ð)¿m÷7ZÂ~Ê7×KžX©:ˆ_nµÀ¯™·Ãlp^k³kß¶/~ªÚ½ïø¡ã1õ¿ó£ý•ÿüé‡óâ8Ö~^ȉýE …ŽöÖû]z¤ÆSv­¼#yt2îl£èÉ“nXÁˆS6] IJ¾ö_.´žg·så/“îL¢ûä  †,ò–“ŠÜÁwv\„:w®¼=éή°wuT.ȼ³KWÜ'¯§Öw®Ììzg箣ºt}öMòÁ#]f½B*þ­ *lš k/«E åàlÔP°ÂO"·:zþØúÔº‚~ŒœI…@OTÉy…ÌÌll©*U¿pƧÊÇ᳦Jî¤dé+úëKj‚áìà>Q»‹ÑïO_àf|s Y©íûøeã+ˆ„Ê.ÄÆÂÐYèøÁG¾9XõÕ×<^¯|ùŽì‹ùñ»Ð7;‡ŽÅ‚pý äùrø ˜i mÇù–pÛã‹Yðˆé«Æ\µ®û'/¤·Ç;ðýað»·¬ZR\¼¤øéг áQx`´bæœÐãHySwþžüWIñ’’§{—Ì|uªúpÊàüÄg–””,)Y•Yvï# w^7µ${(‰ÏYµdë´ëùpòàwÒ \²dë3dίèMy° ¯571»tëاõâG“½“¶ziéÖ¥¥À¹àÒé['þ‚ÄÿnÍÒmÓï™^*Ê “!zB¤âÊ{ü«té¶gzç¬Çª˜ßñ™¥@œIÞÁ×xV…È? þ§ãD À>½ŸæÁÆ”\:´w=0´d‘A™K‰òÌ ÝgVfpÔZóTUq~ÙÉÅQPî Üú©‡‚È;ƒ2p7®#θÉfswð^jr§„„NÉ›·ñP¶l›{)‚Öš*‚wUq*|N%)Þ®Œ-+–]4Á jÅ•„Dãªí<÷Kâ±).µ.=r‹TÚöÚDÀ‹0 \­v 99}ÕâkkT‰&‘üí§ÉWܯ2Èy!®FNTÌ^xsN¶>ˆöPëßIÔÆ«žDAQÕúPT']‰w+$Ót&¥Ù<Αàtè¡Ôˆ^E¯Ô8qFDáò–Ñá“…)"€YÝåô@®eQµ˜üí˜á Ááaç¼pàgɆ)¢ºÚ{Å+rÓðw¬ûÕd 8˜Ða‘ˆ|‰¥ðy4†ýì0Í–Ùìv¨:q‘R‚ˆ½NPF$ˆ+ä\R@ˆÁ!;ôÿäxÒHRæ”eµþþœÝµ¢ûŠN´—už†Éñä8Lª"'pr%£»¼ÕèËP] í;ÉvîÀuÁšºQ¿¤ïª§Ÿ´luðࡹ-ïìwC“Æ- À1Ò V9ªjÖ0¦ÝO§mÖâB®Ùý‡¹Ÿ]0mthÕÈ[ßëÑ”T°¶óË2R^¢t IDAT±|𨙌?£;ýÿàŸ!ñ $µûPòÅýèkA±üòŽ$•€Hï }(c‡ô ùoì‚qÐ-ü¨³ å¶K’ fe&äæßE);ÿý)©xeÐH‹³‡ë´q)çŸ0ä¿IAÎ~=†‘—À¥¾äËO»Þ>³òµ¿ë¶a¹/aé²K“—?9ñÊú-í9 ( EQ›&¤°ò¦˜(ßîÝ|©Õ´Ô¸Ôj–u ¼Âé­ÊÜl’Yf c”˜XЩ T³ÓäòÙO—»Îë¼”‰³¬¸Šy#?w6¶ì”©àø0»]QÓ‚…Ÿ–^¸^G9›ª"'E9§οçTD|ZjC'¹ër2$::FñlŒoˆoQ†¬Ä¼|w ½²9|Ü^0$3^3ÝnœIÇââÎ.Ûìb Ñ-lP†|Šè„áÓÿ‚ "¸Wáœf(AoCãSIù¯¾ôРƒ á$ÜG[pK f–# ›KƒV…›° †dcÆdÛ¬ÌÈ#9¼± k" k&6q€»¤Ð0Š}#Í ¡˜?®4 ðÊ÷ÕÚþ˜{á¢j¬—-]Šy½°Åªà9àÿ‰è(œ‚(˜—õû¦õíì#²^‡hX»\"¦¸ÐÙ ¯ ïÃ-úX,TЀGô"V–)Õ@Œé .ˆ^xœ5+µÀ¯ ßü;îµúæÛo»]xQ9Þ°qSÒàØQxjt(æD£‹6onrä›z¾ûþû–âÛ1å Û _Kð„ÚB4Ûž‘=yÒ¢Ê>cá­:°õþKñ„¾¶ ÑTÝÍ‚¸÷œ’ ©²VÑ!}ÙÖôŠwéZñ‹g–Lë½çl½§¯Í‰Ö^Ùù t:Ý!ýÅÒô] &]Ù¥bØ30pa×ZN:ù=Ž4gÝ"‰Næéƒ¢S£ xœ ]BzÊ„ ¡á00E»þ)Þ\Ï!ÅÉY²K Áª‚jÁ­ƒ%ÖÏ‹l—§:ؘˆlÎé*DóÜy Šè‚J¡«^X§Æ\¦Y•ó¹® TtZf?"V6Ìà­ó]#h†V8ÛÎ5ÈàP÷]ÕÏ)ç%ÍjšÚ(=ph3©óÔª"Æ¢8Œ˜3ë z¢’2ålFT«xâ$(FÓRÝ¥Ë).x´Â…!JO”íƒ0)¾¼:ï¹agì$²_öãÂr v醸xãc+U÷Ä/Æ ÎK7VÁ½Òt­$a b¦À®òÀC3 ÄØWcx:¼Ò‹%jÈ¿Sþ¢dc'‚ãCÛ,°b™ƒa€áÀVÃN±Â¶?–Ãxí‚ö²8µ>­@‹á q!|H‚`¥X`”¥$ì9ú†¥ùÇ`Q5¶Ú}åB\Dÿ"g€*ì,ì ¼ºO޶”c àôƒÈgΩC>‰Pý•á“uHø®avqœ̧Vaç©‚^GÑ_¨jŸåš z­Ô²`õiÏÞYbÑÆ7Zõš»¿lÌù7į9ߨFç5jÔ¼ªéö“Õßõù×õî¯: J)ìb…ÚšxõÓ‹úMÓ¾mÉŸ·0£ïXk`A•wRÂí/I$ùol˜š ë4VÌ-è=ašƒ#Üæ,ÌHuéd ‘ø»[CþÝŽJÒ÷’ŽÀ¹`h_u`9í댥À`HÇ­OÎ3ò‡] ^‚ Q¿·Ûß5c-™ôàNX’a7õ _Ýv¥ë”Ȳº*«žærò–6I˜ÞKB:§áŸ¨ür»Om@Ê%³@‚¦tà6¸‘éƒJ  Æ°Î6ÌϨë'( ‘Šdv…+qÐ1>þ ~Œ- ìÆŸûº üXA~ÄB˜õì2‰f`:.ˆâÓg¡>æ8‰¡‘7P¡ckûÇ&Ê ?û‰òîºjó½yí&%dY0Ç€‚ùTÀŠ ø1Ä7ÒæÒŒg`| ‡1t˜µË2,+¯@G C|KA¶3¢l¼GS"aâ!%Yœ2&G³y‰EÙÁä‘ùµ®X!¨¶ò,$BGa½‚µ ú PX' ô8H$èÂyš·³÷/ކ@›à“SB!˜§Õ&¾ A¥˜tE¥cX©zLßÿ‡ÛÜHXjÞ¢åá£ÇbB1ßiuÁ¡ê5&¡ýqq¡V—VÅüðSËû’.¼hãg1MÏo®wŽ).Ká”ÿÌ^~ëïWö{aÈ£+3G ÉI~‚ÊedOÕ+¨)®Ê¼cð¨$$Å?¸ê±T,¤üGƬ{abUFvÉ´”i«2oœÓ•ͲÊÈÞ:-…‹o˜ÛõÞ´ ƒë·™¶:3sЃ]8çÄÒé çÉ{`ŠT–ûg<9aàÈ?¸m:W þ¡ §L¦÷•÷Ž„¤"9çöa„NàsΕ–­gKƒ&Nª~•'‰YQPyTŠ•k¨5ŠC§uàcO,?¹T\=;QÓ¦ZA@½õ«R!C0œý˜/‚æC^±rÅŠwÞ{êØe®Í8ÃÇqî¾ÓµÖ,T¶~KXvàø™àŒp»^ÄÕÖo3Ž6 v`[LL,,ÉŒ‹‹%±qtñÇ­²»õ§ÛÏk74Ã8±Ã¼vH-\ÅÑ¢+½±Ù´µ ÑO 4”(¼‰{p çÀÅéuÛl§ÖýÄ'ä—ß $´³ Ú½M::ì=ºw’ž<»ñ] ^,ð›@½qtj÷¨E©ýÓW,_2dpîŽO§4kv°ÙyUâŸÿɧ «¾š5ªÍª5…i#½ô€ë!’2¥(ÜÀïg.¦}4hn?äù-C˜‹ÌÇG‹­L€¤èËíÓ_(N§jèFK©Ó–”XÃáé/”¤;ZÌ8S'l-™`‰Q¼°bkºÐ„¾Ó—–Z‰Dêô¥Ûc’dz)ó*Å*—Ñ~¿{þUzàåz¹íúwÍHáÂÎ?QœH]Bà—yh7á}…ÿÁSoßé˜ÝbÔ:ŒHOÿÀõúf3 “‹@8 yÅrÌ{ÕO.ìÆšAà´A`znî!C\x§ Y€v›c97ÍÅýhÒôüë{ÿ|yAAãŽS+÷õÞøÆ±V•åÉ—}7kdë5……×÷ú0øÉ³x“¹ø!ÂO1ÄJ £RÅJ[@1&¡aÖ¸vïÕ>¸´þ—w½ô2o ‚é³ä•ñg¨À†ûž)aÜÅÅRM­k–NE¯EP*l5[Mëž! ƒ€vi5X-8†h0Ô.4YÀt¤ÌÁ1j!f¹Ù÷¶=épE'¨ì"í–[.ìxë"BöïÛ_øÚk=SoaUrH† ¸‚—?:A‹^éì;à凌ÓG«bWRÿ—YÔðPŠe IãYå‚áþy+«èýl)}¼•ncu5 ÍÛ°F G–!l(*ª)oAЏê2¢€Ö ›AÀ `0 ƒÀ鈤 lÒ +H.Ú©…”WhBVµUB4k~Á;ÿ|ã‡o÷ÀÌ‹Z]’6t¬ÄP95.£;,®g9N‹â †]€¸&%P”2§‘S‹j×éÍ«Óìt¤Í]/.½Ë"¹Ü–¥£‹Ú5¡Y /+œœn±Š¹Oè£nN÷Ý­ž’8­ „)NY™¿ƒ€AÀ P{˜‹míai4ÎQ¢¸ŒÈÙ…„–Zȳ ü'D ñ-/ºåÖ;ª= ,w°BQ\AŽÏĶè¨ÔS•€5€Íà2‡H9 s;H¢Ã‚pùô…ÄçÎÖQY•_ã¥lÁ• ¸ì FÕ™¢Ö‚u-Qx%Pâ>uݯY¦Î `0 ƒ€AàtAR6%JyÝŠc­¸{Òžüeœtµ áƒlÔ(·À±µÎBü«l£\‰AØŽ^‹î>=ÓìŠÚÕ ÁÛ …ÕM à‡ ùX*»óI·Õoµ•n8xò""¯ÊŠAÀ `0Ts½­hFÄ `ˆÈ,XÖ N€GjqÒò î=‹8ÅÂq9´#QJ²èÃlÎÆþ(—X…@}‘Të,¼Ê-bð¿²rC\g>Êp?Z•Aø]`Ó”æ)|pô §AÀ `0 ƒÀ)G€-_p%Ì+÷¢ØBï“ã1‹5Y°®\X‘¨ôWœFï«§M…†d‡ÚšJ?o¢d§ª˜Œt/!„"2³³ìRÃWµ¨Ã~ˆfà‚:Æ?ªÓx?L­AÀ `0è0W\=.†j0ÔøRH|± ߤèÓ=!ª¶,Õîtà‚Nârb$ƒËü âuӖѱêh–)‡=M;˜f®ÁS‘F°z$4çoÅ5jA_gÅ&qËs¢,ÿB#²j\vN‹b0F©Õ° ƒ€šk¯»©3 ÕC€ÆˆtsÉÛ©…yèøªg6¢»Šè™¬iYî úŽ ¦»–¸Œr­õw3»…)/å¾DO¦<\õôJ ²ì@é^V˜ÏŠ AÛ6t‘º)û*Êj_Ô*1Dƒ€AÀ `0 Ó ˆ$Ũä8òTZNV„½§E1<‘… [Xœqv†âT‘îκ¤O’ˆÄëTاZb `çJJ æD WÜY‡"";í[éhõÑ,j“ÝZŨ1 ƒ€AÀ `Š@€pÒ­J{›øÔ§¬%ø)Ú¤m‰®íÑq3Cz Õ&AISï>ÑÒªøÅ*X8èªÊ&“Ý,Ö±›îl!BâËI}f@y^/iTn|a„óP8¹#²EÐbª ƒ@ü¯¢8XjW[´Ö ¿AÀ pî Àò 5»p¼2O­öhïß}ôÎúû€0±i³ nH½¥qãóüEôµ}âå†"èôh™¿Ÿ›ÿÕÉјßç9kÈ)Å5;ˆ:šÍ Ô*+ræWsM½Îó 4Ú:ÍY§rª ‘Ž t|Åòb ž•Úda”lî,Ѝ¤zÎ*Û”•Š ÍWžFËú­°`þ¸5áyiúZC5 §#âJ …“rU=A0> '»Aⱜ+}°S p%øä}{¿ÿ÷Ží_WV$%u=¿iSÜ¿ÿÀ¦¿¿ÚæÒ—^v%¼¥;ª†AÐi½A¾6]á—Fö×:ZY¼êàô±h‹+Š$SNN|”»«t&Ü|wC¿¾}ÎkÜxÐÚ¸z‡~ٯ㠛w_Òìëv×~ó¯îÿiOÛ>}fTUU­{ãï—%\é©ðíy=²7ÑÚ^O|0þFÆÑ'ÞrÁ‘kÔž¥»X²p•_E†™µRO×SAÚÏ”[hçŠÌ›ÓÖ̸«ƒjÖ›B-03 b¤ýT :)–‰ÚJ-i·/ºŸ;u[Wºs·l K‡¶ü³…lZÆ©Q òÎÏ, C‰M‘¼˜ÍÅË ±…Sd1Ξžìä5áMiÈ’8¾0 c‚'1Ÿ3'N%\jUyVVÚ¼pxµÃf^¡ÚìmS(‘QÒ¯ê5¬ ‡qÆä½òÊ—3lî!®æð¶˜?ƒ@í!`_%jO§Ñd0Îzà†)m#¥òc¢N-ªNœhÞ¬Yß5oºŒtnÝrë·UÇ«ßø¢P½~É=Öïܾóë÷ï>ÿÆú)5 投c³É,ÂŒ¢båÒ·É7q×X¤ “£x"aÇéEìöÊå+§mïq¦X°ÍÚèËbìÆW[ôH×—V?vWYµíœË`˜MîòRK':¤ç—¦{xT ²Tð’Mpki€`áyN”œ+¸ó®Ðƒì6çŒ>P?lgX—ÔN½ò×å] ¸g” ÖZ0ñòUù›7o¶² È7V•e’ž™ƒ1Ó° ™µ˜.¹HœÙ3;ÖµÀ5C’½™•{ο=gåÈë6$µ„@&B—3£Ð [žÍaúͧAÀ Pcü®5Vn S‚ol¯+ëÖÔˆæpú‰Wç Q â§$õêmþòhiÙÞz?Љ=»+¾º}âÁãäD„fìÚ½­sÛöŒ)~ÈHšWðÍŠ—á/ŸE€xÇÏ 'UFàD#^ª¼è’sÑ]JÚÐ Ûé\ºüÖ, «JR)\-VXÿeK>Ú£¬&ÑǰV[l›²pŽTÍ·Âñ‰8‚[Ù¬žQès:ã¹$ †Õ `‚$ð§Ãð`À߇ -Ï+y@yÃf0"!`Zàr ™W?já< î52•ìÚwìhè¼ÝûŽ:Sïð÷;?Š‹‹mp^\ƒ**Ëth¯œýÔ”Å×-¸³ ­®\:ú¡¿Y4ù&ŒûCoÍëþ¿m_zï|hö6¬¾uvy ïU( ¹óÉ[³>y4Æ:î’_Š•½ÿ²åî>äÓxú†×ïË/!$ãé%¿Úñð'* :é·¹ÏaVX\\ô‡ä—¯xú†×('Ôþm,Ô"‘dåíž)žºkÅ/c-lCŸY25µhJ×YËá`Ш܌ì­ÓRÈηs†ÞsJîI…ªPåÂÌs·¢È/ž™Hî}ò( ù猉¥ÓÉä®/]±šNˆ‚ÉQƒ–1Í¿xfé´¾ÀT„µ¶Ë¹’œ™÷V“•hO‡œ,Q· uŒ ‹Ä Ÿ\ZæÏ‰²¸¨*I/êL“.ÓLf†t¯‚Ï*¥S¹ú#š=)CdÎKƒñœí´mJYg·aà!‰¹…Yð¬(äHž’@¶»y4ÇÉXbP¶m3Qt¿¤–NˆšÚ¹l±Ûó|* °†d0N Mnº)¶¸øÔØ6V ÞœHNþñí·½ëë¶'AÑœÂñkR ÁáLB¸±±± ?xàÈñzäÐOA^Q/|œÙSEBG‹…³~ƒZqª%eÊ/½ó¡ž"CfAFÑfÔ¸^=þQ4¥O Ôm|sÓñ‹âÿ9ovâ,M%¸œE®~劕ÓÇ´–¢?y'mås/@ù­gG,ªLÄŠ'çܰrË’öoÍívߨòßæ·!æ&ßWðÖØ ©Üwö§bæœV/i)Ä_õ{ll/KÈ-)Á4cÊàüÄg–,L!^´ê±i%Ù$éå„U½ 0,š<ø´ÕKòAjýÜÌ…•}ï" 2,L›YšÏ³²u"¡éÄv€¨»È2^4yвŽÏ,}±/Ë1&-ä 0*r?»m[é=äÍ9ï]¾á?ï髵PÇ 0ާ±¼*:ïS±Ä€`dÓ̰`9ÄþªL<ÒVº¬c7Šñ3HÏ#vB—yOCu]‘µi .®F;8Y*äMuÛLÈZ<«W"åa,åS‹´œYS™SìV‰Ç²i£8÷ÉíŒNÎÐ ƒ€AàT yž½{O…ecÓ à‡@³æÍýªë¸ÂU6ÅÞsÔBdþ©Å¶:xðÐÜ–wö»¡Iã Àm˜dÕaÁê#ÇCõãBÍÆ´;°ã锣Í[\èD¶µdÑ¨Š•c†Ž™–·hJŸë†d°ñO)7’¢7Ëoû'ú¢mç³G_ñøs£é2\+Å¿»v—“Š‚!w>Á ˸ƒWÿàŸÓ;@uj÷¡ä‹+úÑ(Ë/ïÜEúv`¬ì9Ûg‡ô ùoì"!¬OëÛÞùeé}O_ÊyYú=Œ3 ÃçÎ/?%¯Àe!ÝÉ®/_ÛÚûÞÛX>² +’¦Gèá.ª¹=ÍC—­Û>ÀAüï~ƒ9é×ãä¥;Ñ[—**ƒ›<ŒÀ\âtÁÁ ¢É‰~l¥ r>a—ÙSÄl]`BäX–¥$‹þEl»¼ûs×Q-óì©ýöŠkJ¶xdf(‡³l!QåSpJ€¬mÚÖì2 \*¥Ž°0j ƒ€A :ì®Üóåî={÷°‘1ÔÍ›7»¤m«¶mZÕ’¾êªÁ )µøO}„÷,ìîý—â»Sm4ØÈ€ƒÂT¹ÞnÐ_bÖ)šBî=g넾Bn×— C@‚²ñ¼PN,"‰ÊY?¯àÄ‚KL¨aijBQˆh·®±òo¬©5 çæJ[g¹I“Ý®juqËfu¡Üè4Dàëïöí?p0 sݱár,&óí‘V:Ѩ^cÚjuiUÌ?µl°/é‹6}Ó´™÷ô¯›ÚîHÓrÿ{l1wüß$Œ™HîÇ,Høíyݳø‹/f¹GÛŸ§Ï¾Ÿ-ãžšòèÊÌC~×͈ÊÈڢ̑w9/¯:€„%±ü/II˜ÜÀ*íTw;S¦­Ê¼}ð(šÅç¬~ Â$å?2fÝC—q—NO™¶:3sPN—™T’RîÊÏþ¬kNg:G ÖgOï—Òè“`÷Љۦ )Ó×Üž9p$]Øÿ»53úŠššÜýÀ},k× *øÓ¤Z,òC©(Ô[œ:}š²§(˺5œ†d0 ƒ€AÀ PGÈ‘#DqA¶'ª9"8áP”5˸#jì{súŠW– œ»ãÓ)Íšlv^Œ\œÿɧ «¾š5ªÍª5…‡ŽôU’2¥hÑÇŸÓU°Ý4þý¢ñ0^ÀZ¹Á.þèQ>æn?äù-CäÑ„ÿ.N±°Hy´ØRBä2±lÄæŠ_?V2M6Ÿ2µDˆãBˆe[Ýo¢è;} <ë‰oðª 7CÊ´­K¦¡·Ü‹¾Ó—Фbz©åæ)v-‘˶{|›_ ·¥Fe±žU#E…Y‚á3/°&Ãh0Îiä€ `ppNãeo0Ô 6E áªó^‹&MÏ¿¾÷Ï—4î8µr_ïokUYž|Ùw³F¶^SXx}¯ŸCÔÞV¬üßòÛÆHï¸`±4~Ú%,Ú+œÑv co[m¸Ý×ÑÜ< åZÈ¢pT‹ 8#kqWº]­jçÏŽsŽœÛI÷Ï?Æ?î_/÷±[•96 ³ ÏçÞ|óÜÏå&©”³ªÁ¦1³Z‰ãxj9‡Ø‚`vYB§ž©·@vÑ$þ–N e_ö«kš¾ö¡*ˆ‰§rɨ1݇¾Ûÿ±!t2”´ñH³ ÜÛ«ÑýèCì(Bëèhn‡qżššø;ë_ çÙÛ°»XÇ. +yp°»e¹ Y!øû µ%„“féEDH ƒAÀ `¨]¤” @6€¥vÝ;c´ÁÛ‰Ä6¾”Ïîí8†W'é(½g—‹Cïñã%1¦@¡QI[ïÙ…²j.%)æP¿Ë?”]ã,Œ ±6lÔ9Z¦dg̹2ŽÖjWQ æ¤i#ÞyÿÃåË ^yå•OJ¶ üŨèó P†¢}¯hÚ(wbA#j§³ ”–1v§‡¬V†I‰À¹OìExUn•)2÷-2£ª\¥øg)`ÃmÆ}¬ªÔÅý’f43Ó©ýÌû IDATwÙ'uð©ÒøbHƒ€AÀ  »,G‰ û9Ðü(xëJ–¯eà Ÿ¯]N†¸Ü›j.ŸðúëüY|åÏÎJŒ·’5Ö­Ù5¤Cò^yeŒ²† d¸JqãÑ%g#•)Ëëe1oÌéb«Âº$ŽOÌÏ´´'•’T©ØK[ÝÔcpÞV^“”•ÈÓ…^ãÆ•LÉÇ´’^½˜°hwFUi(§ò5!@lh{3ÃìB ÿªŸZ€º-/J˸cį³Fýfâ€ôÛa…wÊÒ ÞZöG4Ýw-âÀ…­ÏC³ÙÙtÌ ŒþI‚nx®Ùs+ð‰ð¹>9pt ·*<Ö«Cª¾Æ›®Ónhƒ€AÀ PSàÚ.ö ºˆÜâ³í,³€‘‰æ|£“œèHÅÜ, e­³F-Ü//;ˆ¥bì`øBRZ޳¥ºÏ¸_~±,P4<|2Õå†vgÉ ²•—’…ÃÙȵ“Þt¶P{E'þ$z/µÀÐêgœZµ˜—œ¢ÙZÎÌ÷$+ÇéF0‰ ¨*%`§“ç QUióðžc8£Cºà †¬æ\E¶Ns˜Ä¬¤ÉÒü*Å™Èj Ç™ƒ@u£CM 5©…†ë”’°µ¼Å²žÿ$$HÇí°Bp3¸£p+ Çª}VôºHâ~­n˳Ž?u—Ö{%® Í)OIÕnV:|â5š¦ª¬!%gVÏâíÒª¹Uùd™)C¨®Ñ‚ùã`öí¼4Q ÉÄa@â,«àXÕÓµA¾†xž^â[”–¯[»¼ Í, ¸¿vùÐé@Ç3xÄïr8é>ƒ)£íq u¤Vc©VIx›ŸO!rè!8Ë+ N¥ÔÐÌ0ÖŒ›O—vToSÇq {Œ%-2qb²Wõ¬©sÿÔ‚…Ƨþ“ÆÙ40§É…Ømº³+1¹»49 ¼k˜“^ˆ¹b;„F%ÏAŒ»ÁÒ î˜Ò—z©žŠÃû(zìC¥™BòÐÅÚsÔJ&ÎQ›—º£)''»H SGWY¹E9d™9ó6mÊ ºÞÍëäjéåÛ‹{vÆApQвbµHȪ«sWm—ÎVAõÙzfi»úê2iø$–Yà1€,cíò÷¼î̓RÖøÁéV|R•—&Ý[­ƒM«ö”­µ€ð›d%Úc…ãƒ#8ÃúHóª$`åµ°àÌì`¢ÎOŽ‚âYDž!•KÄKG¢·a$ÎMüS ¸¯|Úìø"h¼Ï!-¾× >ábWËC)ÖfçR!D×;K"Â'¢Å„o/B÷yK˜Åõ|<E•¯:QIt»çh, fJY¥Fà»5fádðì  Sá”´)µèœÔMÎ-hf1˜ðyMp–MÄ1 ù¦¬Uv=ZPã¶PpÎÞ¼9'Èòý)pð0¶âñ…åy£©Hq¸¤ÚCÇÆç^[Ê95ñ{°\6DÕ)θ,ºpé´°GÝ"|.˜cÐ~•õF.¦¸a;Ð1?Åȵ桱2ýÌóÔ³á‹^¯¼Bgtùc74yqºð·§(è¶}Õyå,kº™íÕ1¥n=þ(1œ…ÔoyÍÊÐn (X—æçé Ò)×ÎÔ„'µˆ3ò >†à@Æ-ˆ• \>!§Ë¤k馻·wÑZhyÞãR8æaNôÏûpF)ŸÕ<Â*k­Zý©ŠF­^CmR!ü.Ë+ÁÅtHÞå‡5Ó™ùÖ* œ7åÃËËày¯dP¦°bö"ìê4 ·½À]‰Q½:—3šË«^ÎPÏX`VóðìŒI-X”Ÿ4£àÙÍ4ðP m5÷Éõˆà•(Y£Êæ fšò³øG¤²¥›Åü‚rn×ǨTån/=F 4sÀµý® ŸÓ¹œƒ%èÎFÜ m[–ijÑÞè¤Ñè4Y<š²[°Ì¯(ÌÍNÆG–Í"Ù¹ÚÁe>·•òOU£UÈ ¬§Âuzôöœ²Y={ÎÂÇòüh¸xX#žYO(M¦P)H‰ìÙ\Üy1B dq:§älÍÚ#ª L“ ѨÐá08ã²è:Ä´‡b¤š¿‡ŠˆË(<$esö¶ TbÁ¨ºa‚¡þ@'W£“»Šà{©`XáŸJF(àˆ–êøLqÖpzFùœ 7ÅoTÌ}–•n&¡ÁÛ¢óPi£¢G‹¼…’ 焬)ã6³á=øšl†ˆ%¨V/U ‹Yàö)Vx<ñ”¿Aô+æÉYsä¯ÎiBÿmÃ]DU§ª·O1Á WìÜsÈ«6 ïx³[ë|0»㨀ßçl• Ám‰KT·D¤cɺ[wíkJ‰¤-ªœþ±Eèj¶-tsë?ˆ`Q'éFOÇs2h,·À˜žf|0æ’CJÁærŒ[SÖYñ„¿¢hŠäõ­Ô#mKãÙv’ 3áaüN—"Îveë:´~yΛ Bx^$LT½aTE⦬#bðsäémT¼»’zŒDø d Gøéœe± y*ä³ý!ùå+V=6¶ƒŸ„C‰‡F²é(ª4±¾ í\qûàÍ·¬š1¶ƒƒKÛE¤ä­‹C`† Q»¿;ÂhH§uNŽC‹‡³Èœ0œtâ8nÇŽ=|äÈO?øî»oW½úüügŸ Ù ‡aÔŒ œM™2%'Çî ‘yÿ·ôw¿½' :¥;wwéÐ6 ó™ÆV8¾×öñ¨\:/kq=9÷LƒÆÓ_;¡p¢ç)P[3™hÌù©<É­‹Æí“Íë“¿/Õ»züù‰9ìµoŸû—>77wêTHÿí_øY?~üÀÏ;ï¼ ÀµñÇ\¶råÿ=ûlU(K¯„°Ã#J´Cæ?HÁåôĉ;¿ÞÛáâæ»wïþöÛoŸé¥yÏ>{ˆÞ`c[Ãpx2ÕâßjSfÍ›ïÛ»÷رªÃUuú Ü#ÃyN#Ð0&\¯FO¬gªXLÏÍ6uê1z bW†úáð¸»ïNûùÏápçŸ~ãÆ6lبQ£¼gž‹ÕѸ¸¡¦'Èy$üëqwùY߸¸8`©_¿>B¡¸ˆµlÙâw7eÏLìØéñÇŸôðdaúÉ'rõ«_…Až¨G-ªNoÞ¬Yß5oºŒtnÝrë·UÇ«ßø¢P½~É=Öïܾóë÷ï>ÿÆì jkmJÅÊÿ-ï5„,_R‘¢æ>‚€‘žàA-d” RVMøhŠXÅN‡ã:‚v<åŠ&w})a5Dö><žÂ+¤Ý6DÂE““^JÀt‚„;¤¿P’.ëÁ‘owµ5ì´cŠÞ©•¢D΀“ëÀ³¥Í{¼mœ«5ió`,Äl‘×/¨ ›o|Ñ£ö…áÈþúqhÛ¢ œÄÖ©ÆOJm"ú´Êxrz!Á\½ÓË#ãÍ9‹€&X« aÂ^UENTч˜V‘úõëA^qÞy˜Ô«×àĉãû÷ÿÐDÔ©è…þ§$õZlþòè¿+~¬÷á˜ØCq±»Â'®nŸ¸n÷¿š±]±á]2àž1dΔ »GÝÝÍfß³lcgÈc(È i;úwæ¾YËÞr¾5ÂÕÁ«ÀT5¶ê„îÎîªÏh.'\B=Ÿå²tvD+j=¬>gªÌÙt¦ú^Ç~Ÿêõ‹µi¿6uÕ1ì§zƒÖipŒ ƒÀ™ˆ„s°ãE9NS (¼˜¿ ’ ²¸ä’K.»üò«®º– ©EÔ˸é$ ?صoÛ?UíÞwüÐñ˜z‡¿ßùÑþÊþôÃyq À=×ÂjêÝo­%ýSÛÆ§ö k‹*D}ÅÊ1)£»§Œó›‹µ{ɨÑSß¶ªß~¶û¨•À 3©®¿÷ëþTw½Ã¤è¿¯~dñÂg¯¾jÔUÝFݱ¨ÒŠz+Ý>ª[2îØ€J»VÜ‘<*÷¹”@ˆE¹cá—Œ ÝF¯\xû¨¤$ØGNÙeø¤Jàÿ†9]o_±‹T.ÌÙµ+î“×ÃH“ËIEî ‘])B¾+2»Žì‚ûœõx “¬çÄÉëÉ®“híÈÌ•Xoo• 2™ ¨¥T˜éD­tí:gê†æLN¢åÁ#»N£ES’&-Ü Báá… ç‚óÐØ;ZúíÆ®øCòËvêÊE¿Õ­âöÇ·dªW¦9„ßÀNõÔ)ƒ€AÀ `0 :A€gU8! Â`H-®ìÜ9)9ùª«¯îtå•­[·ŽÊjÔ£1±0ã*tüà#Çë‘C?<yE½ðqrd_L =z½äo©dׇò „Åt’fO f&f—,cKAà¸wÒº¢©©x¸aÝÆ¡÷,m¿aNnâÄ­ÀÀ"ê­‰5! ‰A›ÓV/]Öõsn_PÙ÷.«ÈÓ³pëÒöëçt¹wä§Î,ÝÚj»Ü»|ý]÷ôµ¼$ë—ƒÚÒ|±¥è‡ª¶Ë„!hÈ´„Nˆ†MiøV1³|Xqñhiò}Æ Ð|Gc œ žHÌÞòÚ²ò1¡ZeÑhQ:³Ÿ83V9ªm?l…†8NeS* Á `0 §áfÍ`RûiáŠq !=³VðÀÔÆ+hR«`¡œÜMžuäÈáà†¢N-.¸ðâƒÍmyg¿š4n/@€È°Ã‚ÕGއêÇ…š5Œiw`ÇÓ)G›·héã› EWh·í3€ÜöÿŠFÁbîŠÝå‡O½ ©ñw’·K7]?$ëýþ)åFRôfùð1¢Zaø"‹Í‰GHP"ûW) ÷¹þVòÊŽ]¤ymiïñ/´A" ýw}YN* šIuŒîd×—e]2OÅ£öc‡ }âe(°(³‹ö—$ÌúeBî c!9 “ÔCï}wôˆÑוÝþ›i0˜piRÁ“·'Ì\† Î{õ;¿,#ËÌ¥¦HFú'>çÏéíáoß¿ _\ÑJaù¥;Iß”¶¨63afþ]mÐw½*ÊéÍÇ?økšœ¤vJ^Þ¹‹¤»±ñc‡eÐÆ’—$½:kDBîócDF5óÍÏ€G'kjéY`§B¶aò  S6Î5ðG½VÛ¬^fkUý¹¨lÿ®]çb³M›Ïà3Ž`¡®µÀëQ¸&¢¢N-Z^Øê›o¿íváEqäxÃÆMIƒcG÷‡LhtqÃæÂMŽ|SïÀwßÁE>£'E‹ò*¶‘‡ºç‰“Æ’í9L“µ|Ês»ãÉòò÷`6“¦²È“E‹o$»—ŽšCe( lö¿ö :SÞû/ÅpÿÞ:ÚÅ'Ai ‡ÛãªhÍHJªú̯øõƒ/ý~aeòRYÚýíA†.›®X8©+2,Ö×¥¦÷œ­÷€-Øhœ]Ä\³}ÑZ¥jó·¦ÓéRTm Ùª¨EVc­¿´2ª­}úó[Òw-z¸[·ŠŒ§—üw.l%¨˜—é‹NÙôÈI‰ÊÃl0ÎAªõ>Á2M6êQâ'rtƒ Qð> x„TË–-/¸à‚¨ÌFZÄ_ÞñƒëZõœ»¿lÌù7$1°ZãHLˆ4:¯Q£æUM·ïœ<¨þ®Ï¿¸¾÷Íž~¼ýþÊÎÃ_Z2„ŽZÀ *zóí»o¼©m¶ًÞ2'D-_‰¢pÃõ¯XD.ýͺÚ{×—Û:_BsŒ¢×·0£¿4·¿þæ.ùóe¤Šûñí/I ùóf¤Ž¥£ ¡ý%‰¥³þº!ýQœõ2Œ’À„(×Ö~ìc«ÉÿßQIRÛ´ïÛ“ü~ùÿrËÿ ¶µ;c ™ô;dD;\’H–ÍY04õ. py¨uØEŒ¿ËRÛס mhå]~«‡ÎÆ‚¢¨ªöc[ÉÚØÇ5v!å :£©'kj­. FÍã¡ÔSd(ƒ€AÀ pz"Ð䦛b‹‹OOߌWç2'’“|[,J®>°vˆç!>†í¤Nˆ‚™N‡‹ Å|{¤Õ‡N4ª×˜„öÃo[]ZóÃO-ìKºð¢MŸÅ4mæ9+–Ltð¸•W 0'*þ)º bJ^¯îY£!©èœ5|y—#ë1^|*á)ìø¦ôûç=t[Ê‹¤s¯!ðB3+ä…¿8ˆÃƒWÂh3æ…ìÏ»åt{Åà–ü£©)®Ê1˜SHFvñÔ”GŸî|ß(H*’~›9”¼ã8'æ&Ý·‘Rz?SBcîéGÞK&–t ä s’îå s¡MÿŒ'ïIP·NO™¶úöÛ=ؕ;B qnÌw´óX|ýœ®B-,Æ mܪ¦¥ ¡ÁÔд”ÿÈxòÞÁ#gfL,9Z~›£±¬±oÍífµñ/[¤¼ÂûPš„Á2ŠU>Õ~¾™:ƒ€AÀ `0œ¾@^¯¶8}ý3ž«ÔÊ* L( ð‹!1ð’šcÔÕ„(¶ê@=Y©ýo]±ü¹!ƒsw|:¥Y³ƒÍΫ‚%çòiê¯fj³jMaZÆ(­,#öþãâÞ, °T·5 Ò¬½ñîw?¸›“G i;ò¹Å#m~( ‡S&¥àêk lSþø®«®ÂÙ;)údÉÍ7PU|úÒ-éôÈ¢ô™°eË~<_ Á=dS'à2hÎÊR¬ú)œ§Ï=%Åö Ý ªÏ´¥,¾G:ŸŠ‹SµÓJèâlQÊT©,è<ÇH½gk‰¥–‘\ªœ†R§.-™ŠZ¡ýÃÓÁ òh1µ…ÖRþ{ –Ñ%ÑØ]+F<Ñîçñ$?áÖ|”güô“•¹C6•$²ÍŒ%®þX}§£ØÁ‡Ž2› šù4 ƒ€AÀ pªÀÔÞÚKb«p6ì×\{mÓ¦MáÍzðŠ=Ø¢rÌoB}Ƭfkzþù×÷þùò‚‚¡S+?-(Ù\Ъ²<ùš÷ÜÐzMaaÏÔ[€A#FS¢ºØP+dô7Z¦o&eÉådVår ˆG¶Û;W<[–ù?Ó@!*¤ÊÍå zˆj\=³âT;,ˆ·a±Lš Í/é’ÙÆ4Ó&ÁÆ!„?¼‰¬$ S)Û'Nnª¦¿lÇSã|Ü1{’±YÉmákþ çºK{@¨u…5òæ,Þ]¹çËÝ{öîu¿|ý,j¢iÊ€@óæÍ.iÛªm›Vµè+„f°ÇÆâý_(@¨–X'OˆòÉ.O¼j!»H»å– ;Þº˜}ûö¾öZ¯¾·\–p¥Wk}z‰¤³Âc9™ÀpäY°¬¦LµU«;’Ã{-rfnpÕcð¨Û¨â´°A6‘EÈuªr1,àr2 OãÅ&0éÞO§w°1Ͳ*•S^¶HÎlÂá*V¹’ )µàgDÓ8C2 ƒÀi@“&-º]Õêâ–µó¸ÏÓº©Æ¹Ó¯¿Û·ÿÀÁÚu"@È( |ƒìž£G«ª Ã~äȱ¸¸C!×a_ó~£¾‚Rˆf-Z¾ûößóX¿¨Õ%ƒ†ÝéÿÌY…5©eÑ,|0"¤¦ŒŠ”ø„ɇڌ]¶d¬ƒT½òJljÒf·lÄ[ÿmÆ,[2FH1·ôc!Üa‹Åm º _¯öáâ Õ¼ÈmÉ ƒ€Aà´AÀä§Í©8wNXw©Ük†¼"Rèüê§ ø‚–¥eÜÁÂI«æ¡>ܵç·Üéís\€Á0 ’ á¡jÅÅõ˘yñ5ÂURê•Èvý“/ 4ŸÒŽµØ¾W Å5Ý ƒ€AÀ `0†±HŒؤõh†(4(:g¾kÎ …ñÓ*Áß@q¹“)¨H=CP˪%Êü> Ò‰a.×j”î0ì«Y[é$jYΘŽe5 ƒ€AÀ p¶#À² öY“¶ž=©¢Àb\n`‘*–xFꞞ؂NKmPaÆ'|ƒœ?U˜1h«<½‘©crXqšT` üóW­|ÈËÎ?²SþšuîšAÀ `0x"àu÷¨ÅŠÏçâZ^¥ IDATÞ|óÜÏe…*¥æjEI5ìÖ¶HùìÞ½g—×¶V£Ï P˰À >E¡&ΪÔ/¯ò;¹i™_s­K¯ç%8XÀíÂZZßà©X{z·üéÖ¬ó ŠÜÉ£>z²;ü·ŽÝtªYKŒÞ¦‘0 “†€”ä°œ4ÏO/C…ãñQ‡l_èò-¡cÒ¦Ò2›èˬo—+;ÁÃñã{Û6Y)Pc=ĆŠÔb(wV¥RïÀ˜_J*‚ÅÞÑer_ôÉuYg{ nSõŽ`ËÙË¢êsªhTâ3Õƒ€AÀ Pc†’åkÙpÃçk—“¡.÷Õxù„×_ŸàÏâ+vVB¬HÖ@ÄA·5¤À[¤eŒ›Ï‰‘™ƒ‚Ô%g#µW–׫W^-n| !¨´á3ø"Pó€ílK-0ÐæI-² ~GžEeÅ0fg3£¢åuZµÄázâ¥)PCü¤ýêP¹£ó‰WdXf±¶æÝ3rã ‡AÀ `0T"·øl;Ë,`d‚½«ys:ɉŽTÌÍZÖ:kÔÂ̓–·?ÅåœS£lV•žµŽ»¼. ”SSÓ¬V*eU-R\³²ªHô2å«óI^Ù¼4K2m-c!FDn¡cvAà˜‡J îÚuŒa8 å³ÇdmÚ”•² ®Ûpž;DŠþ"#a?!ŠE©Ð+# U‹£ªY³ö7ª–¨:©T5Ó¾v:íoÖß@>I½©®:V ? “AÀ `08¸<¡Ë{«?#äòu«v”u02±wå€ÿ©uî'ä½IÛsöî…ÊÏçæÒOi§÷î½Óƒkïž;àYfe]Öµ(ÚŽ èbÐãò 9c›¯^—×êÀöXj[5ÍÔ¸?½Õº9ëþ’…MI“#$véUòi9Iô`ÞTÒÆ@ Ì•8>£¬ Q)šR8>±tr8Ìs›1³-"c²’Ö„7¥püø2òÀ‹òòÇEf€#ž†©úÔèá³Q™ý¢ì«¨økÂÌn™Ã'˔؛ÚDYhö vk[©™§îš´K’…(cüèF-œ©hÄÄ øºë`€ 1 JIµu†¯—¦Ò `0Tú;"ü+ÊKYtOs€k'½Ç8»wÂÙRÝgÜÉ´ixødªË í>iûg¤r^^J.l¾Ð’‹IŒuÀ-÷ï¿nuéŒû1³Ð˜–lÚE­Z;ÝÑÊÔ%±W—DU}ÂÃr L2fuù B´Ì½2±ä†7È´O!µP)ª •Rþi ™??4ߪW–‘D²†`¾Ö<NQ% Å  "àõ©üZÊÙ6!Š5’AŸrä-Í“B.¿hW‚V¨Ò§¥™Qµr‚T ‚H¿ƒÉÙf?tfíIOQIJÌQÉé\04ƒ€AÀ `¨- Â/-_·vy—A|láÚåCaü¶gt×Á¼"ì>ƒ)£óJÿûg”®^c¥4-©-µZŸëŽˆk´óWG|þæù«I0æšxk­» ‹/`jVÚ<,dà$)eyM Yƒ€/îÔ‚öHØ|…ΈJÞl .‡ŸéÑ2¤ûÜ•—ŠZŽæl™h¥#šà^;­D”¢ QùR­<À%dÒŠ`'Æp S€@ÿA]& ŸÄ2 4ß?Àºn>v¡:å̓Rci–N·šô”µ¢BQ#¥«³xfágú=Á»¤U{ÊÖZ¤å䑬D;j‡yG¸ŒÛ±ÖŽÙc¢<˜4…óa¼Ba”4GNB'auÔLÂB#Y¹ò*òòÙãñ¹·`Àroœ“…›ãyU¶)j“7!ª6½  ¢hˆkñÓ*±÷Bc°Ë(”È,5ª–¨Û=ÞŒêg}J^¡4&]$©LtPÔj‡|µ’·SæØ `¨[ž~úéÿûßGŽ©[3'E{ƒ .½ôÒûî»ï¤X;À¸!<€%]š_Û|4£ûرúQ -Ï{“˜Ìžúðõþ0ŠÑ?ïÃ7_Ûœ/ÝÃ*Ǧ0·Àut’”V-¥?ké°\Š –š>yL}*#½aa479nö‡æ: ,(œ7Oeþt®«Î¢â ü@Bùlâ¢2¯ìS°Á˜ Màê uK›W–g»‚l!ïabx„éȓDž†æã¡y¢” ¡¡Ôgmjøð¢qüÚ³¤"LS 9ÈeMØ[³ŒÀÊÂÔXÍtac¸ƒ ­úÙ…Ôi´—?G§¢¨)l:šCÌ-eAïd2GƒÀi‰ÀÿgïK¬(Îü{f¸Q¹£Ã53È!FHPQA˜7‚²ºÈÆ]FÔ2cÝ(c’ŘMÐ0‚ºY$k4]ÂñÀˆ NV¹„™áÏÈ!È10ÇûUÕ]U}¾î~Ýïõ{ïkŸ=Õ_}õ¿jº¿¯«ªû vhß¾¢¢¢gÏž‘4ЛQXµj8uOe¥·–I䶸û$OûäjºÐšmp@VlKÛË/kä峤<ÈÌ£.ý6rJ+¾u2Õ²@BÐmUóåݜ׼²ÂL±RM¿°‚*1“ÔÜ¢¤D· Æ7vÑTAæ›)fÌ ¿%¹ebƒ Q†5dŽ.»éT@±™œZpæ&‘åÅ&CHÎÊ$Jgù4°ŽýõTkžx'ËrÔÑ“xܤެGð½&"10¥.í0±‘±'añ«M"‘€ ‘AàÀ—_VVVÂk@Oœ8£üÒ½{÷Y³f-\È^nä_Nô[:]–£o}æ[¹Åƒ0%©Äb&Sæ;f™œZÈ}I‚rm2K1,ø0;Ÿ&3,g0gŠý$\ƒ\7UVi‚F“ê¬Øtâqà ÚȃD¦¦&Ç3#¯<Áp* Ø¢ ÙŒ@ÉR«iL†aÈLÉfÔÐ÷ôD ÃS dK™„š`P*ÈÐmÖ!¿žªFú|~’—^§cæùQr"À,b±:˜È˜=Ï€2øe¶‘{a®2P,Ó•hYíMo¡ÕËŒk]\£@BD S^å¡B”¯% ±»Q4"€ Á"àœZ¸Aƒµ*Hi"rgÉÍ4 þ%³¢Ìé…¥fƒEHlA² 5¥B;O!ØT#έh6âu35ò#Ä¥RU´]–A="?2 Ú°ŸKáȆ ©AÃñÔà„Ö¯÷A˜—î2þ~ðÈ7ztIw/Ðþ´FNˆÛïœZø £è0\k©+òznJ!/«bfëœ\qÏi)……ÿ< `6ŒÂö¦üÀRŒ%Qßk¦ûŒ‰`%„2Ùø( °9CtÀcøYiD"€Dø©Åø¾Á}µÔà9«/2|U-2Žd›!®.ïÙJpþvìЦ±%öñߥåçÁ GIˆ€{ºžÑÁ=sxœìSÔfùY‘Z°™ìÉÿêznÀ‚=k_‚£ðØÄÓfTãPìÒ;zqRµñ¾b<&¬Ìëx2Õ–64!®d©yÁÙ8-žX IGòŠÖÖVGµ¯Ü5êùé9øÒ@EÙóÄÔo—¿|ð—“ €>Oyü¥Ûš Ž¢¯ŒŸ&®2E­.×)2%CÕ¶m›Û6C]C·Ò ›»ÑpÃ9µˆ†X¡e ìâKúD]ƒã¼(—Ù…-[ ‡&ÄåíÇ%7Óœe˜)¡ù„‚D Hâ„ã»ë¶¾öŽ”k@YÍr5^1Z ¡•¤)Z8á{^fÎ GYˆ@Xĺté¢}¥#,(ðŽœ™Þ…ÛBK-ȤaÑp¤Ó D`iÙ³DB~­nJ” %L–ÆÈn¨éœñöoï®Ä@×Ä®}º e Ö @œøàäk•‹ïxbòº2ú½3¶í^Zzñ|:Ejôƒï,Vîœ_[«\T²k¶²‚B»SYL÷×?a½òËG®€/-ó¶´õº2E#Ð#I W‡D ¹Ý·/¹ Q"”i"²fÔÖR9Piž.$øSÒgvݯ3&ËèóǸÔÜÁ.…tÅ…¼aZa×wHG¢ƒ@ssóÑ£Gíé9kåk§f\Ük>pªzíÙ9ý÷-Ÿ÷‡©¯5¬ì¯(û–Ϙ·öᇫFÝ­<¼júo%…Y=÷-oiQŽWZjl»­¡áG”óîǶŒ¾ìõyó ÿ«aåDF9uüè‹ÿÉÀpyõ‹³„ß[çÎ}·Å†ˆ"€ ^È¢Ô¢\ù z$~f±¯q-·Š!­·ÙLu&‚MÃÐÈúÞZë–VTUš^¨9ѰÅÐJ&ÒD Ä[k6æÏ^U7þ¾QUôƒß\ºPYûÞ{ï_^°@µ~ä«»Ká r`Ó”ØÈûo@5°ª=¯®Ý¿P¦´ö4ò™[ žyÿ+«A‰ k¢ZlHù(   ˆ"|äyO¹²zg[òmJ¦F¸øòá~R¦º-'ðZ óLqº‰`Ñ( ’ÑHã±Ðé>Êwã‹*ͽPjˆGö0C™ˆ"~/ˆ_˜0é†÷ë÷’KÆ OîâÛª[ú´¹¡Ày•™Òï–UDÔõ“ŠŠæ¿ß'Ž8®b5"€ Š€›X. ×u©…¤ Uö„á£I¼’¸NEÅ Ðì`·x1K‹ý-%4å(@€µ€G;ü5n‡>Wó ¶ž[Ë1~Y”K6£vCøÏåxÜ.Ù0 JàXŠý}gnZ¹cEKÀlŠ A ЫW¯ßÿþ÷3fÌ(,, B^Še9rܧRlGøêùÕîµá›€D Z¤*Ðrš-„‚¶†dÚÀ™$ (ÓΠ‡‹ÔÁ‹;Ó¥Xß÷3Y†;­2—ŸÖjvaJ2LÛ±ïvb D ÊÊÊŸÿüç>úhSSSX:’(Æ+zôèqï½÷&Qg*UÁ…—ÿRiêŽË—/ÿì³ÏN:=ÓüXÔ¾}ûsÏ=wΜ9³Ðe4’Y¥K-²mà‚e4Ç £,Óðž+xoJ{È ô¬Ú‘9ˆo§äÜš¦k¸!ˆ@ôÈž@<ú}áÉBv f×Z¼âz‚.ã™â‰N;VTTôìÙ33œ=pàÀªU«À¯y·ÝféQºl‰CJˆÆQ‹lXñ¦ZK XˆÌ.Çœæràò;Uty…þD“ú–a}êšsTcmRDÈøÕ ì—)ž¡ pèàÁ[++»vízâĉÄE@D÷îÝgÍšµpáB;[²Ðe;(’OÓ2uo 8ÈL¾_n52GÉž~Ń}‡AšDë]£a¦ÝÚ‘XçÚ@}C2ôÓœœSZëÌ’ Ø@lG€'x¥ÍöSAï?Ìo„X¼±±1c`_À#‡y›Yèrt:×8jË’g Õô2,¿'Š—ÕJÇÙ*ž»ãu–Z­”A$!ÂÛ[h‰‚D °tB¾Øâ…Ï 3I©´Ù„€)qgÙd¡ËCìWœöòYúÌ>;7– Ð=Ù$è·´ AÎ8¢‚ë-o¹©‡%‚©Î‹£ÞÌð"yD@D âÆâh‰”,t9 ø_>›¥Ý Òú^ãznZ-‡ßñ iòBìbß}¶ c|›"T(@DÈv²0À‹–Ë{¿²LYúò¼™~&ê^Íû ¿ GÒ ÚÙ°çI„¹@8âåìœarä|$ÁsÉ Êƒd+µÍÚ¹Äæˆ"€ ˆ"5 Àk akXre7m»rIÑ$µÔÚúr9T–¿‚âÖÖ¸iCB.SËÕ-0Hð•q]ŽÈYg1j‘¥Σ)t»Í‹hIÚg,&w—`@ÖÒc#ãéÁšólÀX÷XkÉ%Àœ/š]¸vÃ^…7)(´7kD@DÀ ÀÓÝO”\ôµï¨DÔ½rWÏoO½[s% 4HàÕ7lðÝ· \³•{V4Љ_ó‡®ãƦÿjh˜Èìzñ{¤~%í[>cÞccVZZ”ã tC\—IZ­ö†(’YÌ|Ÿ4 ¢¥H êY¬¬FÈôSÝlc“ˆÔ#™ÉuøÌɱ¸eY&ú„È$‚`çÚVwŠMzÜ5 š+//eA Fyˆ"ÉÀu®™ì!ú†P`–HÕD¦$dIGì½Xéýç-øÁo.]=§*=Ëòã2Ø?rPsË}ËgNúéûÌ„‘ƒö´*±‘÷ß:òõ4ÜÞóêÚØý ØöíþPy時g4£oÜÝZ`B̳Gž¨c<„õÔ8fÝw-²=¯ÖE°ü½³†x\wÈ"ë„#ö t½,“d!šê‡(“•XkˆpÔ"1±5"€ ˆ@f"ðä”~¿ÿë×÷ÞrK ®}{vŽ,¸BŒ‘¥o¹e¢räùw-˜B4ý¸lö Ø÷Ô “ו®ßµ œ…ò=ì3Ëô©<ÔÒ¨JÌwbî_¿JÀ MØ’=G(é ÝZ MÀqg O)Ÿª5T$Ø¢*6Ù}šá£À~¶mC1„<bk?V ˆ"€ ˆ€g º## Anã¿{ŸòÓ{–ïQen¨šüS¥dB>Y¬LtåÿÓÜ·ë_nàõAª&²âÆ«~]¦~M®Ú ¼¡ Ê1e$ñ ¶=¯¯{Ÿ8¨ºI¹h9B‰òÓ'y³üþƒß—9›&ÖÇ߸.{>-Âi`|ChIÓÃD¼Ð ¾d3¡@ ‹›ùÕ«E%ª¶±CŸI„’W°^p#ÓÎX‹ ˆ"€ÄEbÙ¸<žòo~ú¥ØMS†<ÄZÍ\ºýéK”ÖHD@r ê—Ö›2+öÒÓÿÔϓ䠘ý¹Ìüš:dˆj8–I¬hótäÌ™#µH™ºICBš[Üü³Þ¤5ƒF?~I*#øÒψ<µIPFR޶ւáB—[h(EÒÞäE#u²c„õòm5ñÐEõì@GJŽÅp¶ EÜ ®Ajê•,GQ"€ ˆ"€xB€=Â÷ÔÄ sß›~»õ&ÎHm ý–/ì÷ÀÖ­Pí/Äw6 îsðD\ÖûEì'ž< ³H¸É]Ö50tè@c gç¬kãº,7f50LáZ °/ã¶ö)k¨4©PG+XÇX \*“uänM DY²f6·0­ÈÀ‹@Dˆ"€ ˆ€wˆï½[‘ÔYè²_Þ›éáQì–qk¡ixš£-™Eìd¯¸0Eò (:ÔÃ’F÷áÔ²Š'#hКM tðR¯=D](@D@Ü#@žakO±Ý·Š2g\w²ÐådöŒFhŒÑŸq­…¾«ŒÜÉ4:õºÀ{š0Xè¬fÒÝ¿W­æ;6RýúǬÑ÷ ·Ð¯PíôØ 6Ý/¼<ËÖ¬@D@²¶mÛ>|¸OŸ>û÷ïÏ òóóÁ#ðËÎ,tÙ ¯ ±}hӢ،'Y»qÔêH¢ÆY²\€ìÉÿêèàÃèæ.dŒ@sË8ܲ!g/ÛIY_†Œ^r3T'„ P’f'‘‚ ˆ" ö÷Š`䣔tD G¿ÿýïg̘QXX˜Žö›m>räx~™«% ]¶„‚'qy,›û#êR &BRo ýéHãVZAó=’q‘Ïq[¯ê^ò ÛŸá’ÏsΧ©Se£u ™HI0—eTnÑ8h’ñ–&Ï+x™ŒÌAƒòDÈ6ðºšm=îÒßÛn»mÉ’%>úhSS“Ë&gƒA‰nݺÝ~ûívvf¡Ë(Ø|°ä,¢f3£¸©Ô±o9ØuXöÐylOCar¤ì¬Âv}—›[ðn¼ÌjºQp™SG2™™:S¬5ה嬙[Z¢Ö­ÛXSë«ÇUlÖêæ®B-ùASé2Eeƒ¶³•›Ê3ä©‘¥ÃHD!ùëpŠpAµ‡(€,b‹ˆôÕ%°ù‰# IDAT‚dÔU;Š´)Odɵ¶m*'‹$BÚôŠ Í–„¤Å"ˆ€Èáq„Ð #ˆ@š# Fw4mˆÛ³È'(©³ ®A©O#9òz5›àI…\y—¸±¼À„´òÃÐú×u;68¯¬o J–Ö-‚ÄC†ekØ¢ Re³¾ÂA- U( ©22*,™Éˆ†^‘ÁëÁKYHDD@DÀ’0ˆâñC<5ÁHx×ZXt†- ú…~©œ-½ Gê&—m›G©B>ÅâŸnQ²ÜŸ-?ì„Ù¥´5™Ñó–JV,Z]Dg@Ñ5…ʦueêŒ@Æ!/p£¶°|Å¢±0ÂUÔï´jczE…J‘ΫFHCD@DÀ%ÚxÄ538¯w 9ˆ›©SîTcjá'ÊÅ“ R6­çVv{— V–6$´&„‹0Ø›f ™tT®wÁD*Y ß <ðÆXS‘×Èš¤pŠA"gÖ Z[ƒ"òrZ£q&ÍH@D@DÀ%l {öí0Ie .»°˜åÒâlfãAµ.ºŽÒ¢ f˜ÙN?é€Ý‚ ;z6Ÿè;"€ IDÀùId AUˆ"9ÔtÂ!«ÐLÙEN`já Ešká¹Ögâ}JR¥7±‰só\ †¼‚ ŸW8˜,ÿâw % ˆ"€X €I…(HB ž- N[>× ~é0\CÌ.pB”ÏÓºŠ=µ'…TæÂ.øï›ìF|n‰Ã„xj‹Ìˆ"€  gRtNÎÅ]ôÓ… ÐáM ÏÍØ!ó9á%¬©Ž$ÚTøË~œÆÃ-—))o骻ôÁeî/wMîqæp:ºL<µéeÞãÄ;E5r$q™}Ñ‚Ít¢g6K'äƒñ“¼‚.ÉdŦ U{èÃô… ài†‘>Y™^§œƒÛ'SXKÞx ì ”Uù4›!ˆ"€$Š€ü Êyyyf‰-Šrõ5×\}õÕæªð(Nw¢ð´& ™ß w´s„a ‚- a™nð´Õ4OÆD ²ƒN¶|"ìh†ì,/Ëþ|'nñ“ÇQ²Ý)æÖ _Âí”ú<µpœ&`Þé¸h­S”Ü6jÀÏò ùJ"çd˜Z8÷ u-ôt¶§ë·åŒ‚–aã<ÖR|Q gsü“›YÉt1ny/¹!þ9•¥ù²!ˆ"€$ˆ„¹¹¹WÀ;}zãŸÿ<æÒK[5¡P˜"ÎÐF‚&X4w¸uXp§ŽÄïP`?°E¾1¦Î´4³pÓ2èy:AÊÌ}Sìk71Æ:ñM6‰²ô'¾«fN­àÙ¼dó²Ü§¼¯Qoµ™fe ÍÉ0ÙÛ´óO¦¦H*Èa,–Kÿ½³*RÐþù³,~xëÏVNŸnÓ¦ \:XvÁ Ü Â顎]ø·Ž´ÄÔÂ/~p¶˜^DKitÓjµ¢O-ì”d2]žÂíJÉ,€=?ãd[˜PW¢¥f^ù}zÍD@ŒðÈòжmÛ^zé¥Oÿîwc¥ÔÂØ YÇp“I‹›ƒ¿LEZØïÜŸÌ;yü¬k`ŸÇÂG5H¡ýŦÁÈB)Å 3§Á”¸ Φ;ÖZØ£ñCL öš]fõÜw»xÇA²£EB½%Zju˜È'0h!‡4`80½6|A³…¶yyp•¸à‚ µ`Ù»Œð삸@zö{ÂO%0µpu昙}Þ»jÊ$síÆ[™Y ç·ofK1ÿ[1Sâ ±dJŽ¥p$"ˆ"€Ø#ÀÂ*g£%œyæ™pUÞ &ÁŠ”nì¶•w ù^ÌÍv¸A§WÊÍ~±ÆœÎ dQ/{¬®…’"DŠ ¢›ÔÑ,Êl;yÍUövæ“zë¬Gõ’ .ÃЛ¼—Jþ½v®5ZãêØ®—-·ËÍ}ÿw—aÆ\4à©»€¨×)—»ÛRš"¦nP²áŽb´žé§E*íù:ËËPã|ýµ­¥zÅf>”*±ˆ ˆ"1@(@4ÂÿtBT‡úõë÷ÍaÃ~½d øXýôÿ<ýôÍ7Ý4î’K¢k:Z%Œ±ƒi&ŒÊ`¢ƒƶ¿¬Æ‚r=Á (3,åDʶ·7múÝ3Ï@OA^QPPWŒvíÚÁ,J>pÁ\b6:E’KǼ1µð‚–‰—‡÷¢'‰sMl ¼!×!³²Ólo++D@2 H*àA#Ìh€ø }ûöì¡#$] <øã?†~å3:ƒ ¾€ ±_¿AÅßú&<€€+lZÀÆR 6p—uT‡fEìçK›h„©E‚ªƒ$È·¸sž‚0"iE °®cµlŸ°¥Y- ¾zlQÅf ‚¹ëbKK\à­f++6•ºàM'–ýJ°¹o¤R¥×·ÁØÐì"…4Íhsúôi vìØ±gÏžC† illJSSS+ÝØcÔH=L † FصâŒ3Îøäà‘ææfžT\ Ó``ã×5©€D#á'L-Œýáõ˜ç¬ÃHwÊ$&Žç¬Ê2ay ­¼Ú„ü–/ªS“QsÊwÙ…ATHÑ-k.XúÑŸwþZ…äŠE²¸ÝÀsGpâæ4›%YäO`j‘5ç:Šè`©¼ãáèéØYgÁÖW°Ê0à e¸\ÀÆ8I‚!-ÂIML-6§ O(HÁáÃy<…5[ƒ0 eX!PX¾bÑØÙÕõ%Ž(,ß´ÉÊv¤!ˆ"@€˜66pÁ a± W°“1° 1C¬B.gAVqütçÎÙC–`À.°gÓ)>pÁ_ – P˜Z$ iΓ ÖCÐŒ"ÓPƒ"D ð¼›×Ô)J!›+TÙ%K©dØËÚJn‘‘ôl@of/KØÊ ¶n[Þ§Oh)"€‰ÀÑ£Gù{äØ'¬5<¯€‚¯°zѰW›0µðŠX~m*¼X]~£q KIuýÎ-ÅCáA¶yæ’BR 2N‘“C¦Q†ÊtXÂÕK¥¸;ÅC‹„k°rÂ,V’W_½Ú?záÖfêç©êjÊŠäAƒ–Mü[Y2}néššéÊ–E•0P²Ó¿ l‰ ˆä±>|UZð=¢… Ù‰¼ÑçI”ÙH…!Cè-à1èl™ªòB2¸°lM µžßç”ÕýØêz¥diÝ"˜1«1H†@æül)-cŒª/ÐV©XHIäÿˆóÈãùÍ; …ŽÂ¸ b“^U¨‹?’^•Û œŒžè7³›¢žÙ­(0Š#7271økÔA-1áœ[,+-ÝBvÌœdõ‹ŠžÑƒ.‹¶¢/T^3¥ÁHDÒ(0' ÌI² |Õ&D k€ËŸey°‚•ÙS ¸Œ¨'¾*ŠQ u@D’ˆS3½Â« Y¿ÉQ–I(Ë L_íàOÑHž¶‰¿/Ùk§~2µIú¤=‡çýëÈøa"s `úNÑ¢ÕE”Á¬'ºÑwJåŒ]TW5bsiQÎX’ÌH¤-mªÔïTŠ·,ÈÉ)åÖVm.‰-,TŒzkÖ¨b§«òÉ€‰å¦š¢‚]¼ˆ-v6&n&7•jºVV@,(⣟DÄ÷šw ›B@ý-ÖMˆ’[ ЉnƒÜBÙ2T2fDOQ„1D¾ûÔ“A!æ-²àÞÁ ÈPx|þ±22Ôct @ü#çúìw-â(óïE6µäi{I°ô5<˘<ý áù“ƒéÌÕHeTê¤!³Ñb%3«Ó3Š7À º¶ò™Dìd–“¼Í\Aׄ›7¯A¯8,Ñä—ЗϊWЂö:Z. ¦m­¡£%fC€Èù‰ƒ:M”©!_×mjBýeŽJÂmy€“-àÖà1qš’ïLFgÎ2Û8&q2:d¸, éÞÁÓ»ÿÐzD ¥° Q˜à´Ö‚MÏ DMV !qµ6ÃŒ>ãe;‚A ³‹€ã|7žO:Æà,¢;:Gv꼬:%uV~a, —°<ª! aÔêÐÌMOLÂÀe"ˆ"€ ¾P'˜øj+7rJ-žÕÔ‡ûäû†ô=´ô8àøž.åàA¾<œ`6€ªèln²’èXëÁ’$= 7³x°0…¬áZ®ô†ªD@° cž σâFZ?BÆqÕDz‘ÄñºX^; ]Fù2”-ÌHÆ)"N1W%â/¶ED@D@ëÔ¡I»ÃŠe*E[¿,DòÖ µ°Éen5'’WPé?îÍ?ô˜‹˜`$†¶FD ŰWC©™EŠmAõˆ"á`j‘ìV#u-ÕÐeÌ–$ÈeFa †‡Y‰“9óO–š˜$l ˆ"`Áð~¦ÔØZD ÀeÜÉëd¦ÓP]×í™ÎC{ƒ™vm¹t¡&`4¬ Å!ˆ"€ ˆ"€$O^L{!‘Ù4L-̘„LÑu9ðÔ—ÞŒã¢Ö–áÍväFD@DH>b<»ìS‹$ô—Paõiʧýž! Ár†_>Î?¿ª°"€ ˆ"€ ˆ@ˆ°¸öü—ˆ2L-AÏO[C&ÁÃôÐãuƒ‚Äô±“ÏÿØ@D@Bžü± QAD U°¨ÐklhyíÂÔ"U¨Í/2¤!™ÃN¾@Üë¹£Yå·]H^¡XD@D@ŸÈq{jÌöžÄfFá¢<¡ 3t[ù_}[,ÿÌ¥…¹±3ˆíyš‘€ÊÐ  ” –,^¼øã?>uê”emzÛ·oß·oß;ï¼3½ÌFkDH&Ƥ‚Š­°Åbd[N®Òk5˜ENŽE‰©E2ûÎVO4’¬³ÃÖ"¬@lDà vhß¾¢¢¢gÏžàÿV­ZNÝSYYwàÞLnÎtbÅ]:²v£aˆ"þðkÏ.ؤ’VÄZš››sór•f%¯Mžå¡,³ L-Rs^‚çä¦",XÌŸ¼LbÙ o˜˜ÔôjE¾ü²²²²k×®'NœÈpºwï>kÖ¬… ¦/_XÞº½›þØã˽7ˆ"–|oÞœ0ìÎËËk×®]GØ:ulß®]Û¶íÚ´É;uêt×.]™:~¹2g˜Z„Ñ#®dòì‚wRË6\µŽ"fQì´ ð‚@SS„㙑W€ßà8僤òÂe“<ô@ AlUÿöý Ä  Dˆ4 þãÑ@ìƒÇÙì‰6ÙÓÒÆ·ÞìÔ©S‡0ŒÝ¾-ÝÚ´iÓ½[÷sÎ9Ǭ‘]Ã8Ý)µèŠÙ¤èHRDî0â÷nÆDÊ­ ’à2þ°óD ÚЉ9~/ Ñs--|¸!ÁȉÅr­&.GÔ̱è믿>óÌ33Çô$=€ó†¾üòKß¡›+Þ±ó% Ãd eN<7éÕ«W î²¼ö •E¤pšxéD¾†;w†F/À0–`ð•xÚS ÊWZ§Ô"‹Qˆ¤ i7²¾„»9¸`‡¶Ñ©ògªC¦×ÐD ;H‹p<º†$p°LvìÒO÷¸!ˆ"4 yèe‡P,ó10;¥RÖäB²øB€DØZ”Íþ†7-Ê4-í'±,å*9­tÏ~NܾÄFˆ"4ñS‹=_9ê¾ZªwÎêË&mAšËƒë%ûq? ‡:dì* tÌ.Ò¼óÑ|D ý`ãìâ×"W¦ Ü†湫æéRúXLºF' ï¾Âîm~äCL Òç¤BKD€[…úºAÛ?/—z~ú_’í/?Ý6³üe3gÃ’+¯\ÒtsÁÌ&%~š”XŽmù%×îªËÈ+µlÄŽÙQVúD …§‡O‹±Y&"â󾤎e¸÷˜ÙfãF-2±û¢êÝÕžü 7–÷#ÝîÜŸqQEíB¸˜oº&»ë¶¾öŽ”k@YÍúäÊ ´•Èe^Î+θ֤!8Ï~²íFˆ Ž’¬µ€\k‘†Ý&#é‹ ëX^×"–Z¸‰õÈZZõ d5ˆŒ€sjaq%L_ø"k9 lèE6{-TƒY׺9{3ô˜‰‰ÄÖˆ"2æLA§pàäk•‹ïxbòº²A‚¾{iéÅóé©Ñ¾³X¹s~m­rQÉ®ÙÊ ZPíNe1Ý_;tþü„uöÊ/¹BQD[Úz]™¢ £G’–[|CC¼t–BÂ'OždêÚìËÙ’y… 3ÊG@(H†“ÇÚjØï)8„+i-e Ω…'áÜ@V$» O3h!tü¹:·=â¹&§«þçVò!ˆ@ò€o$=zÔQoÏY+_;5ãâ^ókTÕkÏÎé¿où¼?L}­aeEÙ·|Ƽµ?\5ênåá•PÓ+)Ìê¹oyK‹rü¸ÒR»`Ûm ?¢œw?¶eôe¯Ï›_ø_ +'2Ê©ãG_üOF†Ë«_œõ ÔøÞàõ&¾ÛÞ°  ì—9ÂÍøØ±cïnÛÎTð‡¡_ôw)ÍÆÉ¢ÓÜ;4?]p8áûðÂ(˜4ÚÐ07¸øÀê¼Fy,¯0د¥Ʋ§&ºA ¼Ê…Ùβ½v¯“4èÇ ÅUäÉy´Ä“Ê©«°ˆp‹gFþìUu³éª¢üæÒ…ÊÚ÷Þ{ÿò‚j³‘¯î.…› [C¡/(±‘÷ß:j Ÿ{UZ÷¼º6vÿB™ÒÚÐÈgn-xfäý¯¬%.¬‰gm²ëÙUÏ ÕâÚG®Íê¸I­6|‘ls=é«tÜ-ÊSo}¿·2S< LGæ,t9»)ýmfyŘ1cÞ~ûmð&ììÂ`NÈÌâÍ˸Y‚áI:2‚éÚ/¼sôS×Q"ú[¯ ”ë\é` X¶âª2!ˆ@š!Àî®ö&Ýð~ý^rY¸áÉ]|[uKâ2¿õHNWïJìB§ébµýnYEDÝQ?©¨hþ®ì°eJ!ô†Ç*fKÔd €/ZhÏ],2sK_”qã­WBh,¬…¹`±n˜VTõ,ÔÛì ¨´ò&–ç!ä° :>+1wî\»€ÃHÙÏ/»«œ&Daô˜ª.„Û4»»ðB–ðœ aa̬ðn€ ˆDÀ7p·p'Ø·bÖ”†yþdQñçõ«F|7BÉÈŸ®ßð“ñ@cÕ*€J:jA®Â-e!Ù\r½òû:nQ¿C¹¾„¤‹/íØ¡ý]º¸ŽuÙÄ_-¾oÿ-š‡´ß±h¢ÔŠ› Mdi!¹°X‹ÛX| ˜ D䈗Ó„€1EqÞ0ž‡ZÌ™3gæÌ™×_ýèÑ£!Á(..~ã7äu{×d :ÚÊ.éD¬üÇiÔ‚¬#–'OiʲFN.ãznõÝ!Öü¾¨p##z m-Hn¤ûlæF4ò ˆ@ €;åΊÇ=°uë‹Ê-Ó€¤¶*ã4Þq¿%M~ {Ö¤ïMj [o"uoþäü×úõíh”¤£%sÁÙRÝ /kªªé“?–fhËädƒ ‡¿ý¿u±XÁË/>9ìê_CGºcÉ;(ËŸîèôËš;*bÊÛwïø·S'“Xù?h¸P`Á³õ¼­§N¬cÄ­M}’ˆÅjî¾ãßNžº~u9Ð_ÿdè*ÚœS>".3Çé_u—– D»‹²Â:ó%–U,_¾Üì¼™ÓÌ“, ý O*Å1µÌ.’ÕEf=¡íêÙ`ÖˆD@äÞ½6þû·?§â~á=k«’«=õNöÀZ :± \k¦\ýÝéÿûòâ¢]ÛþåH`ƒàü»ÉúPØÆ 1 eÌÃSر¶·à¡CŠRPrý˜Ê”!ä ¡n»òäo:Ò<ƒlÿÒ¢ŸZhÖêÿºʲe&`é “…¤lÑ6›q$Ï'ŠÎÜ"6Ražå”Z°‡ÛÉ‚õ¨ŒBŸUÀí&„Ï(Yd.$7Ýâ³™Ñȃ ÉF€q‡ãê|Wõ·¿U JÀÊBo é„(rÐ0õš[¶ëOëþ0üjXFAóŠçþaë©×ÈÔ¨_]þ/V¾¹ááíÆ<¼%F*¸½uËSÝ;Pi ‚U¯#-©ØŸ‡É3ƒ¤ ÍúŸƒ“â_ô/É)µP…áÀ…ªáÖñ =iÑ;SÄÎ㔩p}Eéˆ"zàkn‡îÓ§ÏþýûSoMÂäççƒ;àT’ fVS ü+&¢1nž|õðéÓïþîšFR•c®Ÿ:ˆÖ=÷¶r=cW›Ñ¦„bÏCZ}÷‡“cudêÔ ¢ao_»èOwþŠÌˆJ œ#úJQÞÞQóÊ 5c¦!éÑUm¥zFÀGóøƒ“Qt­T‘×OÄI-pà ÖÐêà<3~¶„×g-”ÞPe–fR9§3®¸HÉInˆî½ûî-¶–˲JoÉ‚µ$÷– '"€ YŠ@´Â‹,ítHŸþù¾}û<([À3pb×®]aÂjß¾}Sf¨I±áÚå”Z¨ã˜T˜@LAŽÒy9è[²+Æ´Ÿw%§£Q "€d3ò]9Èì‚.²Ìf`]ø‘ã” ¬%<èy¨(WŒ3¦{÷îL#666Âl)øÚÂëhOŸ>ýÕWGê¢Z€I–¨œR ê›Xp߸ï´²“L‚}cÀoõ¹;»öè¶w “þxB=7ˆ'ëDÈ,oÒ¾ý¦³í…Ý·ØLjèPŒ¨LêÕôó…‡`÷—_~Éò šEÀ2 ò߉ä ­­-Í-'O=úu×.g}þÅçñ“]d ×.ÇÔ‚WàÀEúPDì!ÆîÖ¢ÙÝÉŲ̂ †& ˆ"FG€¹¹id0šŠ Á"À"uXÕÍ·Ó§›š››[Z[Hjq²±•”Z‚Uš¸4ÃS ÇÔBÕ¦\ùQ˜c$Þ%`ßð‡9- ì3éóhsâ¼*D~D@Ý õˆ(7(!OøœÍT@˜N,è£Í-Y°­…Ί"[øÆ$¤!^j¡åø"Ú„`N¼1öå?áðßÎ&ÛS64v– @ G@ ´W²4 <˜awâÄ (dÆÛ„ƒ=d´ƒ¬(-cèÒ¥‹¥/p*B"aYY"»v‰8Rð(R ë£ôÎðÝ$ºÅ-ÉXg0?¿PL B*&"¡t E D@}éåqQhÓ&ޣø"@Eàøñãvò:t ß^L»åç†ÌÜiZ§`jñ«¸è…Ѧ¤É5؜ՙ)ÁXrÙÏ(.,…F=xŒ ˆ"€ ˆ"~èžjàÀEd;Ðzà"€Uq=N`ô!¹‰Èyùgoßû鰽㺄 ˆ"€pàºW0ñ:»É+¿K›;uꜵo¿ÍùÛIÏG6ŠiÃöâ<Ç[Ex°óƒ8½pè¼Ü½ÇY¼œçÒšt`û¨a§0³s^îs¦¸«Õÿ½Q`uŒL9cÛ¨ç%ÍÅOöÔq]_9ÉË:œÁËÆ ²´§åø—œ.ûrÎ9çpúÁO?âåþ¼œX_7q9ïlªåå¡|‹—¿øh/Ð*Åß¾Ó½Žú;oò×í{yùâññr[B?ÿøÞ¢Gß>¾åxT›ìÆSà†áÓ¸â"…]Jb|-Îñ~ˆÓ¢ÀW‹äÀ[ªÜL†…¤€±ÌËËcÙEÀrQ"€d4pÝ€«G ]$E S¡Rè ªF,D€Néqž1µ`ˆ°O| ºÊƒÈ–Ò˜YL™*—½…öXi\Óá”&è—i°ÌBÝÓ³'Ô@|€£t9 Ad"€ÙE2ÑF]ˆ"*Ö©SÉ£BYu8ðE´¡öŒpºká»ãS·ú%îŠo`?°3nÇ‘Œ ˆ@z!à8Ç8½\AkD IúÂ(ØÈ_øZžºµwÒÆÒàERqR Ó#r5³Pÿ$ gT#P#súG¥K!Dï¦ÁÔ'vJ!—€*²gSC$ ˆ"©ð9Æd\Âq {àb{ý®ÿ“ú¿òr×Þù¼|섘/ÞrX̳ïxöhγvõó¼üþßàå+KKxÙëœuG`RPÙð±X·0f¤ø<ÙîÏÅ:?¿ð·¬ÝÙÃOöïæô³:ˆ‰vÇ¿‹7Ìn]ÚqþÎmOóò‡{ŽðrÏ^bíD~õÂP{ôó=œ§Ç7ºóò;µ»xùågÇË]úñò·&|[ðÿñ%^nßEØ|àˆ°í¢o‰óá𡣜ÿ¬3ÄÛT›rVî_$Öðä5 ê÷æröº®¿ô\N?ø¡x¥Rõ‚9}xñx^þèSCÓqaÿÀab}È9m„m§ñ.¦M¯½Ìå|ö¹ÐuÁ…C9}Ï^±ö&vJœŸHëmf—ÝÌù9ÿá:@¾eßÈcŸãn…2ùd3bÜ+ 7Ã}.SäJïå^ SjRàô—/‡ìW\¸Ç7pN9Æ×Åû¬ŸìüÀí@ˆ"€ ް À°‚Ñ¡EAƒƒ:¬BH!Э[·¯¾úêÌ3ÏÌÍ…×·Æ`‹åvêÔ² 2œcÀÿðÛ®]ºny€£¬qR éjž¡ÿ¸s(0$£Ð² ]v¡5´$Æ“·>ŽÔ8ÕqÅ#"€ ™ˆ& ™Ø«è"<ýû÷߸qãÁCEC^ñoˆCgfOµì9HâϨ½¤Ô@yà‚”qÅ…§~ ›Ù1åHX9¦ CˆD ;àEÜQ :Np nBBv`Œ^"…@ß¾} Ю];:j¡nl0A¾Œ+FNNc£xýqÔPˆŸZ¨ƒÌpË GÔÌL{œ.BÿmØVdf' Wˆ"€¤ g!æ²ÇòÅôkn¼†ûðΫ5¼|¢Išsß ¾3p¶ôþþÞúrþDæ—G Ħ¯Å÷ >ú\à–›'Ö3tîÚ›ý›®çå†íòòáÏÅú„–&±úö«ãb½Áùßkîß©èÔ¾=—SxÞ0^Ö(Ê™ÄÚ‰a=9ÏžOŽñòÙŒ徂ç‹ÄÚ›ÎgvæjØËe ë9‰ Ð2öH$Fî]dc%ìU?jÙ}cä ñ¯ÀB(«td±hGTÇሧëD@D@ÒW©ËTÕú‡W¤îå§iŠ{âf˼1š7'®Í ÁIîl \3 DD ­€™Q.—[ÈsÒÊE4@€«Ô ˜r”•ˆ@š#És¨Cs˜W¤ù ‚æ#ˆ€7ZkÁ•[å87Ç[7$Î-' ÖɃ55qÍñ%¤N³j<ÍgKÈ1LöÑe@q‹¹ëv°·Ó]" ©µl„óh2ÑH 5Œ+¬ýXHóÒܨOÌâ}2 ¡¥Ìº€„ Q'D)z±ª”¯´BÍ,ÌrdmDWiéž„8[†µˆ"à„{À8Ü<¿s’…uˆ"€¤ Þ&D9Ïub+.œyÒ–´4“Lv"ÿ㵿֎ðXß"-´n‘ÞT˜ µŽ¬¢f^À3{˜kT3bsiQÎXÆ3†Š´:uBc$…‰§¸¸X¡ïÙ.Þ² '‡¼<œL^’g;‘)HÖŠ…°Ø–~‹ˆ@ç ¦LAR±t©pBUY"¹Å¼R„Xa²ÅÇ,d0˜ùeY[([†jÃÎva-"€Ø#À+"2'êåu/scÏ<»/ŸüD¬OkÓK¬8qà3ÎsàÐq^þÆ€þ¼Ü|ø/w;w /çµO-›¿ßp¸püdÎÓ©-/F®°úw«¹M#F‰+äÆÚqúûßâå®ýºóò¡cb½ÄYíÄڌ܎‚~ΙÂù]õ{xÛÎßÄËä‹ïKüýˆàoj˜·ò[»²……D@çVAW:Ëe6}º¿a/§÷.ƒàÚˆ‡û?ú’óœÛ?Ÿ—¿ÚóW^Îë>˜—üýû LrNŸâ<'OòòQE`Ò¿»G?>ÔÄy&]$¾òÖbÂAŸ³»qžØ1q~~zü4§_~Ù8a'/aÁ !©k¦­ª=ÒD_òÈËÝè­–Aпé®çöر;dU©·$®UÖõ¡SÅÒjU•DPa6mbe{²°{æ º¦Ú¼i«:Ìézr&ÜÌÄÙ9J!¬´hrÂL±k$äh&ºÜÂ,!ˆ€wXRíxÁ» l ˆ@2€, ¨PÍbBÉ1\=ÍÖ1±yÅE2@zäÓÂúaT­þZ³…¬^s Pd‚7Ù–â2‹QÄæˆ€Œ€»Guˆ"€ ™ƒ€· QÞüÆ oxÇ Q¼«ä08î$%-qgN\Æ…DE§©yP$:¶¡%ˆ@Ú"€CiÛuh8"€øAÀsja9÷I~ô+.üôCpmä´Â:ÅàÃZúaÍœI( @ìD€Ì1 [Ê—q·´H=Ð$¾¥°ÿǼâÐßÓEZ9ýïmÅÚŒvÔrzS«˜ï¾yóûœÞwÈ^>£­øžÆ…irè°’mn#ÖäߦØý‘˜ëŸÛ,Ö–ìÝýwÞzäØ1¼\·/ñÉ'¼Üöˆx(xòp{Non+BµØç»9ýüË®ãåšgþ›—‡›ÄË·lò›òrn§~¼ü^­X7Ò±£XOÒtZ¬Óèr®X/Ñõ±&ç£aÏñ¼3¹L¥Y¬÷ØóÉ NÿFáã' 8ýôqqîuêБÓßÚðg^~õƒý¼|ÉHaÃß?oäôŸãå ¸ÖBôGRK¢¼è·˜Ešs²Ë©U^T"¯+Ü HSå•~çŠuqFœaÖ?ÍŒká™ÅZ”qãź‹¸ )ƒXwáŽ?>W¯½3õî+ìÙ³W¬©8``|A9ÆN°npäS±†ä›>gä þÉÖMm©“¿c[…‰ +ÁÈ"ú´…ÏQ ûÑ éÕDœ W\$Òç~Û’ ¸ð‹¶CD Ap¡E‚bsDH&A½mÂgjaíª~N;Ri˜]XC>Õi:”¦]Ïã¦Eøv£D@Òöz(Ì1Ò¾#ÑDp€ã„¨˜«ï©#Qz̉0º¢–ÝIsm92ÆGçéž\-µjþ FÖYÆ>¯Êšƒô>íwµ@qCDP`šE8DÈG-`¨ÁñGâVLMr%WQ &s¤‰€U§¨òiîÁG–Ôs·&ØezRöo§¾z¬:£0§¬&eV¤»bòÍî{ä±ÕõIvÒA©]•=É–ëÕÅÁ6¥¶¡rD@E íYŠöƒõü—møÀzþ‹‚ïvöÀú þK¦]z÷á?X_ÁÉ´uù@€Ì‰Jøy‡SjáÝJI±Bý%ƒbó P»‰÷Æ<Р‹w"O6´³ÒùLðZëã\¢IMYÑê™utzBÝ¢-¥ñ’‹CO7¢Üð‘‘®š5Ëæ®‹Å––˜¬IH¬IZº|xmÛÄ[hp-¶ê|Å&ÞçA9̉ j~³7ã@ppœå^%D—ú™.Dz™/¬F=äT÷’‘3aâO‹JXE¨ß¹¥xfe!µ´°|ÎËò×gÆ¡•–mÕM$o±¬ÌX"óÚ“{vM°õ$ßÀl§.™ØÖ5,£ˆ›<¡@Ó3×J@!à4jál&\=mŒßk+O*ÙHkÁ´ :HN›©TÌ–¦êÉ'ÚДa<Þe¦ÆV×TϮؼ¹¢ˆÍíá„‹=õ/+£¼„S-è&Ù‰b3^˜¢œ4×`ä‡ÚIͰòEÃ×É‹²žVg­¥ðj:K Àå€U!æ* ¥;ªNQ5Û̈ªNÒÙ¤…Ja­èÞÖ< O³n¢ÃVÒÂmSO¹v˜Î==bõâæ~ Ë…¿F›­úiˆ"€ ˆ€{µ°Rh¸PY`®ç¶‚ i!#oë”±E9 §xQݦòÊEÅEkj––”(d"JU¬naΈu±M%­9¯nQñleŦòBˆòf“™T›`ĪfWO[¡(›· …¹U p.PXaöÚúr`f[Í KQJáR˜KDy¨¨zYSgùÔŸ©#¦Œ-*«±š$k\¨€ñ¡¸V²æ’©°(ŠÙç.T½ žëð$ ·³ðÍ;ª(z º’ikg3”i–³@–@kڼʲ—)0µ«DCÕb,F’C”Ònã’UЦ×Á<'·T×dç ­Ð¢ö8Ø&N¹Õ–çž±µ•+­ÖQ–2 Zt„±cðØ³¡|ÉóÓh]ÍŸE³SGxùdL„Ó®3÷ýõ]Îs¢­àÙ³S|Ì¢cÇFÎ3bô$^îsæq^ÞºO¨=¶ÿÿøÁAoR<ò:yFg^ÑúÅG¼Üÿ[ż<ò¼^®}ë ^nîЗ‹¿uPà±ôìÿ ¬ò;à­e›ûœ[$ì!ìñ¨ Ù DÀÿ¨€áuÂ+â:—¸`oyJ‰k&¡È¶n¿(,¯š»l yü™Åô¥hhñ²Rx¼vÚ&9x¯_»š>¨'yf¿zmä&3§±p˜tÖÙˆÙSpþ ÝZ‚ÞY†^ЩɦM¯1D×$Íf_LféÌ 3ž–‹¾Í‹UÊ <@Ž¢QÀ{Y“¹Ê¬”t¢ÚÜUY“o¦p½æÙÁbhÂÙ$-Ķ-; BæSÎp昳ÁD’©‡ÔÎN¤#ˆ"€ ®H(µÐi!3Em7]% \Ø2bEtpìáèšmaYÉô¹›w@l !P¯Y³…FXjâQµÒü#²pYÛ6•‹gU²)ÉN”n)¹.¶“d¦µÒoÔškÜ D|Ñãi³€aiͽO ŒÐ9v¢5ªF>±»‹¦!ˆ"€DDS ç$A®e©3TQÊ»¸ ÒtÝy¤Ëó¦`¡$ ÀKK·Ð!ÂAfÄ“I?ð 2¶ÉÏ´uRìÏ ;Q¤ÅˆóX$ÓõO IDAT]·Ã¸<@UwÞšöóhòð] SoÐO¹CrM§ÕÞ—B+/T¥‘'<í…s9JÅB:‚C`‘ £ëjtU–h@Õl³$Go¦è‘Üsš%ì·ìqs+çS˧L 5HrŒPºgFND@21ÒŸ?>ÖE¸âÂÜ´‚>˾û<Õ_G3á6›V¸²e(ÜTX³Ó‹èZ ²£¤nGiiQÎŽu±¥RSZ£Të&ö›;Å^Tå¢0&¢¶(^$š’¸VU'xŠ‹‹•¡„§xË‚œœRR úÉË ÖLç· ‰?á¸&,.±õ…ðHµÜ µ­Üܽ;rsh%% >ÃÚ‚&Q!oæ*³RèD˜ÿ¶Œ4Ó¬0!/ÉQÍ0StŠ¥÷œf ²ý´Çëwš™ôSwð3ªŽžBôüÖàr)3žN¬w@t²‹#ÇNq{óNååÎýð²;ÞÊé'švóò 'yùßÃË[÷äå>ÃÅ=æÍ7Dââó]œgÆ÷¾ÏËY»–—›Oór~1¦9DZ_Á pèˆðë’‘‚ÿðÁÃ2›e¹[±6Cfh9ù5?ÜPûW^þÇ›Þy_4Áµ–ø"1[H4µ€ë‡È.à.oz¦­c (›)Ù ~ ü–Ó ß)tr:>Œë\ðl·z7"“ŠÊyXq 2_TL«é[Vaƒ†‚ÖÚV”NáV%È* Êi…ïóŠäujBD@D Â8OˆòkxÜNõÏ?þâV*ýü)× €¿ ½ˆöÃתÿÜmöÜ‘Ýýœåí´éP¾§E~ñfFe9Äè>"€ ˆ"€ ™@©EÜ„B…óÐÆÕ/*SïªñèÁïÕ+ qmoÊNµDÒ ƒÑløB÷Íõ”¹…ŠD@}"¾ ñá{›yEѨ‹xy{íۼܦË7xyÒeâÛßSÇéÛµ›— ç峤ÈbgÃaD®ø†Æ¸ñrú[Å7.:æ5 9ç@˜ nG}ÎË]Û‹onÔ ·”«& ;…Rï¥^x‘7jß¾ÐÛ£/÷>»›Ü|”—·lÛÏËß+ì9»Ç™Þ Áˆ@Z"`‘ZÐ9Q>§)‰ìÂ&Ï äC_ìÙ«+…+§ÇøQ|¨!¡‹´D?"F“ì"ˆ æ_D¤[Ñ D@DHGòèf¶¼•nfz¤(©E"ö¹™¯ŸS8´èÅg׿3dæÅâå90”ñÔ뇈îó'—_GžTÚøÜ =E³lÏK ÖH†Ì˜;uˆdð÷ÿçñÚ„P8­êòBYˆF‘¸±ˆ ˆ"€ ˆ"€D È+Æwüøq° Ê={ö6lØàÁƒçÍ›Fj৸Áà€S Ñ1NIÆIwÍ{oÅã¿¥]S5 fCÅ>|õ©í·TÍ€ŒºçŸ}÷ÀÀ‹¼¶b{ÁìªëRÿüs„"òS«æNUd‰Åû K,ê߬í9cîÍ<Ùøðµ¯wŸVu½šc,{×cØüÓÁ `Œ ˆ"€ ˆ@Rhiiyë­·æÌ™Ó©S§Þ½{Ÿþù°¿è¢‹ÂÈ+˜cä=±¹pjwB”fvÏQ³«FÁHÅò¯\SuE·•/êžZP˪‡ U8¤|Q¿B¢(Òû³ëŸ_¶–­?[¼…ÚvïÕýÃgŸë>ïz–‡!ç ò R5þ[C^ßÃ"¸ÔÛáÔ pá]Ø"€ ˆ@xþ™¸…#ÎãåõkŸãåC_|ÍˈoP4K|öéA~téåßäå_?ú/_^<ˆ—wïÿ˜—›„xåâK/æô¶ŠX0ÑØZÀéßîÝ‘—ÿßÏŸâåÿǽ¼ÜµÅbÒ¯õWèÙS¬39zð3.äãO>åå–Óäq²º>~ô¹¸ói'Öiø³[e-Z€ïË—/ÿñ|á… :ò  —Ø ›pŠpjá-˜ì>~ò¸í+w}8i ¸§½* Š1X±QÌŒ2ø¥Ö*“Ëa8Lúƒ®²ûøëËÇ~wÙ²ê/È„(Ì"lNK²œV$žb°¼³ K¨‘ˆ ˆ"€ ˆ€ö‰9–<@"H-jjjx^‘ˆ¿k¤Ñv#+õߣ‹*åÀž_ôèÑSéÞ³‡²µö¢E÷žÝ•­ÿ÷.]6aØ}yˆ­?ôaƒU}·‹æÎ{ö¡C@,ÙSOÛÚøž¯¢Â-Zvè-KŒ#«D@D@œ€e<»€d±X¬´´ö,Ós'A)­ xÔ•/…=ýrÁãŒuÈŒyd1wÏIs.[µüñ'6QêeS‡\>û²çV<¾L£ˆåÚ…—Œ~ûñg«_Wzž_(M’" ÅD)X NÄR! –‘º³GÏžKV‡ãf@âƒfÙ0pcfX‚ ˆ"€ ˆ€Œ¤¹¹¹ò”'òB(úJ(N”k£‰^È©…X{!»?dò]U“ xt?³b<£‘çåð?Ýd…ZÏ‘7WÔU ¹¼œ.Ýî~ÝÜòët5¶B¬#à‹hQD@( pÝMßáfÔýM]Ø”.»“ÓßK|×bä82S™muü}.Ö~ó$ç¹úªQ¼üѯxyÒÄɼܶEððâ[MJ/ÎÓ^k6ÕŠ5¿xôgœç i½Gþ¹âû»ëÄw68³¡0¨H¬±ãÉÏï+ª¤òɣ¯¯ã<±îýx¹ßÉüÜ|ú´¤B¬]±Ó‹tDÀW HÀEôÓ ¹ïœR‹D6[L§1‘Lõñ¶J‡§Ýx–¥)¦¹plìG0Ò´?ÑlD òü ®Œ ¯› É<‹ ÉDÀ2µ2'µðw­cù€ˆ-y~ …›F}¿Yu$³o³^é+­¿Li‚t09ô²"ˆ@V"œ ¡Ÿôt¿ß¹WZ"}‘4R!3 »P¼‹Q.[ ¢xÿ”‡¢œ;о.^Í…]lXÄ×¾m\‘ûõ“F-t-ì蓼q¥ ™H-Ì€„}‰\¾Ó¨…×ÔBM á¤)2…z"i¨Às›Ï¯dQÔ¢¬;˵%p~®›"#"€¤Å‹üñǧNJî U¶oß¾oß¾wÞ)æü­ÁI›ÉàÄ‘6u5e9¥tÕ"ߊÕm*Ç7£¤M¢¡éÀ‰'Rb(\¬H°—Èl%Én§Ô"Ùî[ZZ"“mê#gË(èÛT‘BŒCà vhß¾¢¢>þšÎ8p`ÕªUàÔ=••àNê\(Y‹-MzÔŒd<ì9Hf¸Bj‘@Z`lŠÑ8Ë0»ˆF? ˆ@èøòËÊÊÊ®]»¦êáY°vïÞ}Ö¬Y . Vlô¥-øG£o$Zˆ ‰@©E"8I¹O3ŒùF"ò±­kä h„Ù…käHcššš ÏŒ¼º¡±±Ü§RÕ%|sà³™<úÞ¼9µX… ˆ€%A]¦‚I-´yLš© dв‰îÀtÂ=Vȉd ðÂ"ò΢LÙRë ÑLb¶Ù€ñð‚ #’DH‚I-ÀW÷Ù„3§\‹‘8‰´ 3Ht„@jÃñðý ]ËZôzÌéO*àƒXéGèæ¢DÈb`°ÞLE¾žÁÞ…0o¹ò!Ó9[ð&Ð|}5S¼IDnÿ˜ï…þeaKDHØÀ…Ó~÷’ɰ ƒnå/;1¦¼.%Cª?˜†Å~Íth‚|PW¿‘OýP:ÿ9ð@$" ¾**1¤ìñŒÎŒàRžV`~‘XG'ÖZëÐà:61{°5"€„†$­q¶—ËG=?ý/Éö—Ÿn›Yþ²™¿aÉ•W.iº¹`f“’’¯€|ŠÞàË~phN-Z[ þƒC¼Ì†vj£`DHLˆ rÈ‚ºl!Ђ” tP ÷9’שDÈ|â„ã»ë¶¾öŽ”k@YÍ«AôV!·’4E+gg&ÂÉR H*Xž—Ð4Ù0l­- üp²Ÿ916ÃcD@‚F€WĹø»SÀ¨…;Eþ¹pàÂ?v!´dwÊ£HDˆ qf1 œ|­2ÿŽ'tl O”À·0ÈVòDCÃw̯­QÉ]w©B+¡5°â.•õ®W¨ Ñ–¶–ô(¡-%˜6·*ð;ѤœÔ~„bºz¶´(ð;Õ¨4¶’F9,7Râ*E,D€¼$Êë³M0%:j—Jú9®`)Ë’hò a  ö²ÖÙ¼ÓÃÐ…2D µ477=zÔцž³V¾vjÆÅ½æרª×žÓßòy˜úZÃÊþвoùŒyk~¸jÔÝÊÃ+¡¦ÿVR˜Õsßr£WZjl»­¡áG”óîǶŒ¾ìõyó ÿ«aåDF9uüè‹ÿÉÀpyõ‹³„ß[çÎ}·õÝÞvÛܬœ}jæ]l£ÌÃgýïêká&ˆ›K éf.qC6D €µñÌΟ½ªn60½QUôƒß\ºPYûÞ{ï_^°@m6òÕÝ¥0]Š­¡Ð”ØÈûo@5´Â„)¥uÏ«kc÷/”)­ý|æÖ‚gFÞÿÊjPâšxÖ&»¾…¥'é£7z?knO’ ÃÖÜÔÔÜÔ|òXkKû<¨…Ô‹d F.<3.¹$oË–àåFRbˈÇÞ|3’¦¡Q‘@€¼!*''À m¢©…5*º<ÚEÙ÷Â’]ã¯Sž[¾oôÛ¿¶jØsë~>gÌè½ö™í×ÂÚl •{_øÇ«ž)üõÊ&Òʽ/<µA¹…•-¸ ¤Ú†?WðÇŸß2 >k†s`J‘áŒî!˜äˆ “nø—õ{c…ŠrÓ»LàÍö=µŽÊa’¤‚*Ÿ( Jƒ ô»eÕ®[åÏUƒ‹ŠôbÝš•b¾æ––Öæ–¦ÆSêÔXrÒܮŔ[4·csãÉ“--í[Zá§´´WZ\cŸb'ÓY=äG¾ú*=ð`{—®]=p#k¶"íµ..‹ðgß«›”Òø×R¥æÕO-û‘‡°Z~h [¶5?}ê’WüûD­fÀµ®ó “°l%¨«õ¯‹~vBÊCìâ$ëD `àߦó›ö,¿apÕ•gÃúU# òó'”Œ\µžÑÔj¸B09†?´ m•Ÿ>©Ê£"á†å{ZÇÿäO÷ܵ{³9qjSr©i…Ô¢µ¾ÞÜtºé4ù+!uÐo„­¥åÔ©Føïô©Ó§O‘ XØ"€ IF€}Š;B/ŸÕùï*öÿôõuJɽû_1VYW»O´ÿtùõ7zãða7Ά,y^Ù÷péçß_«(µ »÷)Æ CÃo¼€þØÀÃÀ½Oý÷bFüÇÿÖ§+{kÿ´mü­ºIˆZü©7ËÊ#k”}\uãÄ 2â¡iM¸ÿÞ †/¶RÉ4Ì.2¹wÑ·,FÀ9ZÏ¿ù饱¹CØ67¶ôé›ó[%Ú”š©/ýh|~ÿ¢÷š2ä7x O°Q -wahû³îbò¦<ô>ð‚‡ Y?é­­o<¢ˆY悳±Æh>9½ ã밵Р’š+!iR”Ÿøç)'N¼ì²Ë®¾újx}¤_0'ªþo: c±V˜–Q "€ :H^…eÜ>»e_m2öý¡õèåÑ×÷]KçDA^qWMé/·=×[ø´ý Ÿ¥Ð°¶œÚÑ©M¿›H£ü«î}Jª´ï‘úë?Øv§²añwüá¾óRµý3<€|¨–k¸jÓ”?®üÔmX É¥ÿ F9ÿ¾íŠ˜eݤ¾ð—lëm¡!³HÌQý€o)y €Ý(È\ب…³ãغõ…DͰÉ4 i‡­Ê8wÜo ßoaÏšô½I-CaëM¤îÍŸœÿZ¿¾ O#ò‚´q´d.hfØüMÉE†>ac™Yü‘ÛÛÈ2îö`Õ±cÇ[ö?Ú%|#ƒûìÔ)xGW&líÛ·?÷ÜsçÌ™ãà ºìNZT¹éå:ÎZ‹xÑÙPß'Ù„Òû²R¥tiíXÌ ùƶñ·C^A7¸[?ßûi2¾l"epmÙôg^Ý 8èÿƒ¥+Â'^<]ynï^åRBÔ¶mû÷‡D ŽŸÖ+ûÖ\uã#Œ>ýbú×QŽM“)—e~^Á@2¤þ² öèR¾ñzD …¨ÉB’,ØøïÜþœªëÂ{ÖV%W{(NæäæÂ//ÝaIv“K)e„˜“Û¦M›¼Ü6yyp‡4×À-Y<þÄ:v¬¨¨€×!'Kg¸z8°jÕ*ðkÞm·YjB—-aI/bÜ^öêŽ:* )I-j—-Ü·U¹køBîû;o<4Z7È`›X¨M¼]|Œž2ü™W7ÜyéD3ÚãµMßÐÆFÌŒ‚⣉“¸´¬“R ÙEZzF#Y€ÉüºÁ¸Ck\ÕßþV%XV°8w.åA¶—×¶C2AÀÌÉÍk?Ckà­]»mÚ¶iÓ®}Û¶mrrÕä CÞZYÙµk×ðàŒØºwï>kÖ¬… E€ep ]΀~ŽÛË©õ1„k˜õXƒäæ†wž>kÝŽ•ÛÔß/+‡o\¿F F— ߸ä7t™„ƒ½‹”¯?l{_XºÆf…¤ÆFn¹}üš;øÂ õ QÊ€Þ…ÊÆ¥†…º†¦ML2Ò vŽC¹ó0%·|w¦!"¥´mÛöðáÃ}úô¡ƒ ØÀpœJrwBŽÐ¦mNÇNm:tjÛ¡s»ŽÛ¶i› ?ƒÀÖ±sÇŽ:uèØ¶]%/Æ7’llV«ƒ¥ö¥566f à x~Ùy„.Û!“Fô¸½œZ_ŒQ|Xo€Á(rÃËÏ/ýÿí} `UŹî„A°§é9B ;˜Þ½ §A…”„’¤í-h!¦È¥Uê$x”‡T‚EB´> \‹òÐÚ °ÖZÓ#§‡äB¤¢§‚\(B’½ï?3ëµ×k¯µöÚï\†µþùç|3{ÖükfÖú…G&Ú(Où;uË rgüæáツٌIëßxrLî¸IÏÎ-¾sõ¤‡ëW’Hî²êÒÒâ;¿M ž‡÷L¾ZƒÞuÁýÿý»ôŸÂVlžI¿kg¹Ë~WúÓÌÿöjFøð‹ZüEäŽøì°nŠ2X,¢gCüÒO\ðèWFÅoÓ@Ïb o}ë[Û·oŸDZ"ÜYáèÊÌà}$§¨ì‚¸f3®M&)I–AÁlZ„¿öpœíæMn»¼øÎì~îˆsYJhk9º}wÊ@â‚]Ô ¦…8sÉ“h!ÓƒNÇX:‹²&Ç¢:d“`³J¹Iòßyhí~˜ ˆ€ë@xGv@€Ükµ1l«€£kRRŠÏÇ^Ðu{P  pr²­¨±â¶ë¯¿­¢Q( —ò…y.– xWuè2˜È¼V$•ÏtH@y89Œ˜„Íå‡Þ1ª(æ»n ]6ió¡Î vÖ"R38qê–aE>ü’諺„h ÅiB\Á¸pâ"X˜ 1…Ÿ‚Pnç•4´à3ðZ~ÀL.íT1…'£4ø–|î¿ Ú5{ÃøÝ³n‚ϯÀÝþ½J=\Ž;´”z½üc汘’8³vï†ÑDlÑ…‰ .Ÿ¨,ÑkÞg~1NSO&ΚdiÄĺ2“]œÙáƒnДA,ÎûLù/¼ã›õ¢ÆëfÅ)bc6&Á"›™:K0Ë >ë•ëwߌ˜éM~,˜… ˆ€€¿qòÕM0'ÐEjcN¿|²þÒï\ ŠaGîDöX™=÷áA‹×íee©Ñô߯Ê"øFME•ì’ýËèó+œñV.É ~NÕŠn*ËK.X ïï]n¬œ»¸®nñ§ ­• “Ëýî«þóòÃÏJª¨h£p(qP5kÞérYq9RÍî—îD¥mM 8Ô^ç,Ú»U1 nÚøi΢òÑLž€ ƒ‚%áÄÄŽ0f9w™»#˜ >ù|:iмP×ÍÚæáM#aSeZZ:¯Ы¯ƒóÂ|pÊd ÝÕœÕ XÚd޲¤C… +0ºHÀƒ.#ˆ"Uð§]öLbCºR¥ïôUÅ%¿¬-f—„ä,ÚS5Ý#Éòùš3Éž“ûÉüYß‚â#/ï?I²ÇMw¢Ñž}¸ y-;(â@ýçç"EËÀ¨Ðf»ãrsÓ‘œÌ™ÚŠnÞ´Þ ÐVÁ›Š¶”C›B TðÒ­êd¯²šl°Ziâ L‘B@¨ù@ @•ÏSqúËŠTU ^D@À=ˆ?b·ùnhBÁôi³ÉŠà2Ý“}`ÅËûü$¥."ë×-{öL:gáõ6m,É^"ðÛ´‰³¼«:uÄË^ ¦N’ IDATQ—«k›˜CµÕ™ÇGg9!t–‹—Ëû–Œ_‘={ZºNE3dtè` ˆƒ~.÷Àö߀.Ûø ¸Í`Ö‚«À"2p·2¡œ¸°Âï6€(Ïã¶Âã mtÁ¿n8"ˆ"˜Ð!|¯Sä€amåìY4-hɼÇ_œRU 1JÞã5N-8‹Ëy´æõi}Ó=¾¤ð)OÀiÕî̾ŠJ`a dpnÛ,«œ¸Ìí<ðÔ„+E5ÔÃÇ_Ü;˜‘r¦LÉ¡94“ú•~׬)ƒïXE™ò T:nÕv‡|n¸ ®4Lë ’4ý÷ZC§ @ƒ¶y8ô&ª‹™…Â(Qø'ìnÀ+Tãа›€ ­#น¸yHÿ—†“§gô±n3r"ˆ"ýô‘źA:òЬ‰ª?·íýS7o¦» „ dÔÒúQìèõSei”AÊ#ÊSB9E Fç¶Í¢ÞUº ¢UÞQmàòÒúú¥JK%dÀsžã%¡r–ë £Ëb•k ¼Öi´Ú8¨š‡£:¶PËåºQÌ,´åò¨$‰ gý õRg!pâÂ–àž ;Atn}Ô"99™Gîy‚’D þ€~zúpÜRí(< Ÿg”Å èrWNÌ› ´0%Zú«@rVÊÒ!mI‚3ɭżÝ0˜„{­«·\à¬E‚7BtˆBÜz€…®ÅIprõFyHºƒ.G¾’‚¶ `-­Á¹³ÐÂîz$õt„úZme |™ßŠ%‚4öuÉj›ð:8T1Tœö d¥Fƒ³K#ˆ"s`ßæ*KII9wî\ZZÚ©S§Â¬:DêÒÓÓÁ#ðËH>ºl„L ÑÖrd}1 -À2¾µLÞ_æ¿,J5‚‡Osû%ƒmiû+Ùs[Õò¾Âªnñ mY5«„—$ï{aÈ;·ºïó’‹€ØWŒw¸Õ-¼-³zÕŒ Qs°uK‡lËüݪé‚@Õ¥IeYç4YÊÖþ@Ý©¥“ø0/ª}@  Ý >m À`ŠöêÕkûöí“'OÎÊÊ FNô”=þõ¶D@H!`2 ”I¡Ö‹.‡á—è“yéèÐ |žEäÃ÷š¡(%2Ç¥eïøhôyã¡ô~pX%µð5Ê@O6¾úÂA%p”¼zZP×¼«D @L"¦æ]w*ÊŽ%µtaÿ¢’¥µ<æ n:ÉÎOî*]Tª7M.6˜",IïŒI¨ÝUÊŠ”¾&ZÒŠl èå’‡QEPpõNÒ¼º¸„]2X‘aƒ_د§)Ñhñ·Ÿ,ÑjýED@D€#`Zð˜BŠ,‚ 1ÅûôÐÜx ø¼‘Œü¾'wÜí§š ¨ýhÇí·¨k¦¹üø-‡WÚW_¾Åëné¿¡ ˆ«È‡;~X¸ª¾¦ôØÜ…O’üqy;÷²Ñ|íGdžšZ4×~H²ÒHíöÕÙ 6TÁ±lŒZ¥Áuóê ò4©.%åϱ@¥niñ–þë©§eKHþ J9ذ`ÒÎm›Næ.ƒâYP]up¬ƒ"Â90¬'•Rˆb 2vÉruÙnb´@;ÐeQzkjíÈ@^D@"Œ€Yh!™æÊúO˜FRÁø¼{êh,1 f)úe’Ý{OÓ™i<þâ7’¼øñ{Gü6ZØ.1ƒy‚"š2F’çöLk<:r护bûÉ“¤†Œ|:Ø'ni˜ØüÚÂaƒ›'­WN\¤eQh¦‘@úXʯL§O%dœŠ(^Âz§¹d]CU>]sõœSÞº†òõ2⌦Pø¹ˆ{-â¬ÆÑD@bß7¿ùÍ=bÂÔàgƒ‚똆ŠHB:u]¨G™t»Å¼9åž²ß3S=°Ýbu9É«ðX°Ü“ÖÿÐê_¯m~uÌ ”1 ýÉ–=ûÈ/€i]væÍ^ AFŸ1Å䑲m¤ø!éSP|ê•_R|‡¤Äs÷ª·ÉÂ? ¥¤½ã}2²›ï/ÛU°NPìÿå–úI ò£šaIÕô»û“×Ê›E'+¨%¯ÔN„%UͯQK­éTýô 8¡l¤PåPµ³òµ;òAN$¹ÞÕ-@v§/ ! ‹Æääÿú/ãlÌ #ßù9p ŒúPUĸР0!ˆ@H0 -˜F9–Ïl›"O&Eû|¿ØSN7ZðkØnAvõF ƒ’Üåò†Ì.¡üвÒIäC&"wyMiIa ›rð,¨YEã$â3’”XXNÇñp~ Ϋ٘Ö,Íý€ž˜Cðåç¯X³`ò¼ÞB3‡”¾½-Ç¢ÉÓÿøs0Ëg0ÑÁâÜeëó†Íõ·dÌ *Xñ!y“„ ܱ“Vß_\²zÒØn±¬º´´xÞ°r&’QØYÜ&+ÑEÜ:Ž!€¸Â•%§!C@"±ÏÁà6ÐVd@D J0 -h(Á S¨.ƒtÈ3sUÃLYFÁʪù*wùa>à–N Oq^ðÀ¡Ãt%M÷ˆ_ÀðL¬¿†!g3&¾Ñ0Q¸Ì ‹ „Rc8Ø Jõò³>Ó·UMWéuæÏW\១”s7®Sœnì– *ÍÐÓÏ4¹bâÙKô @ëàG-¬c…œˆ"ýXÚÆ-¹Α!èr¬N~ÄÎð±Pd¢_=:®ÔÈú€ÚD°ƒÝ“õ7>áë¡ì ‹¼ˆ"½-è8å¡ê2d®a<2h# Š€Ž*D °]D±h"€ Á"`¶ J– Cq¤/*h°1²´ÁX/åË}ü5~}.ø"€„“n-ph¡KØŠ*˜¯lxo;9+ÅÕSÖ¶¡XÀ€©È‚Ä«ÊË»vé2oÞ¼ÔÔÔøñ*Š=9sæLUUÀ¾°Œ¾h"€ ˆ€uxt¡}ϧZ$ºÎS›-+`á)t‚ 놘s†høéÎÄ…¹é˜Uo`ÅÈÄg¾úª¬¬¬G—.]Š{cÞÆž={––––—óöEÈx-•ýW„ Hÿ—†“§Ó®ï!£Q-"€ÄÐK@_qñâÅÚÊ ˆ#$-~³F³ÚY è ùkú´Y!uÀ–pœ¸°2#ˆ@dhkkƒÁ.Æa«…+W®à{Ø4ê(‚Gzì©}òbùí·0V€ÑSÿ£#Iˆ"€0ÂWè"­¿ J¿ca„K؉*œ=®vVJ×O—v\èËFªuܬSëZ‘ˆÄqfŒ˜ûfšÍÕG·w] ÎHˆO¯Fw= uˆ@ô"pþüùˆ§ZhMÑÆE›¥-nuAÁçÊÔª^­ÅHAD Äî`7hE¯N)J4Z ™N—#Ã…ýeQ‘7D/èh"€D^>«´ŽõÙx_ô‹gæaäš3„ ¶ L^ &­¨@ð!©ð÷DÅxØ{¡H½ã—­ï<Ô£‡Ÿ©Ôû¶C©ñ'”Nj)ÁA`£bl²Ò€A€¾ [Ìú"Š ˆ@ `#´¬UD R°aîˆÑ¼Û!ˆÛòÌÅ\D@‚BÆÉ^¿ä#¹+þrVNÏŽõÏ×½j¬¸í¶ŠFݬPuÔ½Eî¡c² »w’÷Ú®#JL©QS‚r ªÂ°0"€ ‰Š€¢},buAÇ ú`'H'žZŠ2+R°«D±k51RÆ¡^D@4ø v½tàëµ;þ͸o÷nºÀ&L£f=#3Æÿ˜Ì­i¼oÖMÔÁ5»È×gZdd°V²–¢0ªpÓå^kï¾Qe'ƒ ˆ€cTý›ýY Ь¸_ÑSñ2L·1Ç®cAD@¢ÿ>Ô\?JceQQeå|øôMó÷ú|@I-ªld\ü|/åi¤œóç1.J—KP6­dAyÊ,•Ë2‚ºlcåÜÅuu‹Gˆ&ÖöƒØâÍw«Þy“üx|?ß^ÑlÙrQ)W¦f 7•£ëÓ©¯¹«tðÂM'ÝPNÝÒ°ª h2 ±€jë€/gÑÞcRZ6ÚëÊLø‡%¾5côÌE¾·ßmò6½û¶çqº/§(?Ý« {Óó‹r>=Ѥ'D`¦Y¬"?ùäÉïgÒôý'?ùäíwOè Þ!Âl]’U‚ĦWÂ$QQl…Ÿ.¸Öaœ¥–oÙSkdU“禜-333òn~Õ1Š’ÅÛm­GD ú°·×‚Ûã~ÕD¥ˆTm®ž×ž²ß¯ºÛCš_YX4×÷·Oôø3i¶CÔ-žýÁ¤ UË ô„Ù¥1év¥(ùûLß¶ qð¶Ìrµ#"SÝÒ¹LZ_µlL0ZLÊÂø~[fõªé„dLÜÒ0Ñ„³D šýpÙSq#))Òyß‚b²°v?©&Å«úú|쌼vH§ˆB¬+R$f™^òòÑ'G3å45oª–LR••xø‰Ê*ßûKÆUï9Zå¡BJj-ܿ؈‚®œL‘UÀPut:!ï/Éîßßß`•UÑvÉúñÃÁûg£Í´@‡³´{ç]¼!»²<3'ß~èÃ÷Ø0Pòdõ Ä¢—]vt$O¦#û£Ãx´@ÂDþÛ¡g5¡H¹é£‹ÈŠŸ­ E£ù|+%æ²Ì—÷QÁMµÕ²=éR¥q6I”ÿ ”Í©ÚÃÊz›6–d/ÙgVÖßv/U\½¾Z´ÊKÕÍD? ´P”©Ãpà8̱ÐJ˵VQÛJ66yóþã÷å¥ó2Ö’_ ŽFˆ"€ÄÚwT8™µ!{rä.^ªÈV!lÞ5e–zÊWqø|R·xÐ62‰ìÜ)F…%»ËÖTÝÓ‡4ï*)äœDœÊ˜Ó+ß²gж¬ #wϦ<Àð³ PN… -[ó'dÿ¢’¹;™]“\‘K{ê_–¾ºüζånþ•SXé4oõ!ÆÈç`¹Q±`äº0R›´¢>_:x5ÕV\RS¶†J–…ˆb™ÌÙôu ·¼ ƬY3—Ù¿¾jæÉ…?íç†ý÷ËöIþjê\Š3Šô<ñ—lŒŒ(yhYi-HA§ÀX. Sžš0p¥DÉ™2…Lm‰MLðóôÑ…9+I!‹,:Íä¹éw=õèÔÂá:çÑš×ó¼Ÿ5IÕÌ’Lá$ý®×_|b0+Ë û6o• eÓ3ú¸oÂÀã/6<ñ=Ê&'°Š¬¬)|ŠYEòî~t·‚ æU OÐ¥ËPuïÀ*I¹h¹ÆªtÒ÷ÑÝ… )ê"Uø‡'¿;–š¤=ñ·¯D@‚@@]8-¤øA{æYŒ.š_Ù¶cÈÈÝ(Q·x‡E5U[á|ß S^=›e­9tFù4rȪY5ƒsné¿¡ªªò!ÆX¸Q ËÌ{Hsùº‘Õ‡«úî{aèì’cekêA=ß¾ÿ䯬ª_A•.¼mÓÏsé:"Ò¼úøäƒ Ø1wûþ»Æ5Åknãaå_ZüaauÕà¯}¡ôµÓùBYʤµ¬a‘†ûTÈ–þë«¶Œ!,ÆX¸‰/dbÎl Î¾ ÆTŒ|»¡ÊC¡öSºlÉ_Q!ˆ6ý|•J¾hŠ¡"§²ñþ’‘%7¿¶ð‡„,P€—ˆ"à>k!½qêæú©:’xh¹›áÝ´,Ì8Ù§¢Ée’€EU„HÌR–Ì3ji}ýRÁﯔ@n‰Ò\¥U’ ÁBQÈV¹ëwíg¹¿U^ÑEB€aG{"[ºY þ2*íó<%<ªs|—” 8˜… Ñ…{E”n*„>å emÙÎb9º€= â<!¬Gj.ŸPRNóó*>eûš??Jšwr"<«¿…•ö•†õŒ©ùóc$oN;÷Lœ3iËž&8¡ fOÙ³LlÁ-“È©L.„žokj&ùAà :A¥Äa±gÁÏá!=!c(ÛÉ“$Ÿ|\s(o–W@$ª›w—¬f%™‘ó¸L•¨ ^€ý¥BòfA\)câ¬I[Þû)ƒ§pŒ$ͳ€oÛ ÆœÊätÉ0`¦a†Ê~&P™Œ©=RÒ‘¬EæócCJŸf.xîž<©|›Ÿ^kô& œü¹¥µ"È…$Úñy"x¯>J÷][1F¼¢~!ˆ@" ÏZ@h·ï“" ?¤4T h’°ÛŸÎ×AI´:M)—Í»îœMÖ®Ê÷Þ8ù9›Bó ÖAÙ ;ÌuÌ%ëªØ¼Š]ûM‡N²ZÚä0º0É ˆÔ€ŽGÊeÝGn‘2õ"ˆ"[èN\8_ŧq‹%¤€BYèÅz¸yҲɖŠWïÈg{!Ì’'­?Ù²gßùtATÅμ9ò:d³rr^Ó©ú!ép}æ%H¡Q¡Œ…C¶T¾v‡¼ê)ƒªö£•5¡3!ïÖ>ÏDUîÌ›E—6ÙIVí·¯ÈºäC«_©¸l i~mlúÀQvêy}RRRÎ;—––vêÔ)}¤ºŠ@zz:°»*UfýQÁÜ~(ŒB™ˆ€%6nÜøÅ_´¶¶ZâŽz¦.]ºôîÝ{ÆŒ&–& Ë&hØÊâ}²Çó -L\è«×L\è³)©¾Üå5¥S ç aˤ`wõ!Àr–– ¡|ž²šUù¥ûsܱ`ݼ ÚB†äMbR ¥ì¼aÌ$¶;wYuii±@·€C&̰Úe» ¶¥H“È\HÉ0Jð,¨¶oÿ˜;TÌûá`¥ý¹c'­¾Vj±mÜb²¯HG²®7¹ËÖçÁ&p¶qO"ê2Y$Z¿[ˆlˆ@Œ"ÆÛ¾}ûäÉ“³²²bÔ…Ø2ûüùó8À[f£µˆ@HØPYÙíÚkçÍ›Ÿ»©¢° ?sæLUUø5{Ö,]¥ è².nÕ³|vØÖý‰ ³è"wù§lWƒ*y&n=Ý dð;R!D<ï3ã7U3$íTeî²Y—ÿyÕ2¥ú_€ ¤jºÈ¦'J)Ÿn±Ð|zÂÄ­a~ê¸Zqû5½’ °¡ˆ‹ÑJ60lÌtË;Owãg4”Mχ”••=óÌ3k×®mkks(‹ÙAæ+zõêõÈ#Ø)„¼ˆ@œ#ðõÙ³3ËÊzôèqéÒ¥øpµgÏž¥¥¥ååüѵŽO è² î‘Ô¡…sÉ,– ³È¹,‰ ˆ@<#€ÃÜxª]œ’§ÚL_àÑŒÅã&®€Š»rå xdòÈ&]i{v'´Ð$ô©!uG-\9¢Îó¿†Õ®Ö™ÍEa."€ ˆ"€ 1Š@ü½O"à ÐåÐ5NwB Á>íÄ…•èB1¢w}po)`°Äº*@Ɉ"€ ˆ"€DÇâQd«K¦$ Ë.!§cZØêëºDµ Q3²CÔÅò54íË¡íˆ"€XF€ßDñP–CÆhA ÇÙÑårÓ†Ûî#/¾3»_´´vt2å…þÐæá£üðÝ<¹ £˜Ì‹›æúYbÂI¿Þ†GØ0mt˜‰ ˆ@Œ#À¨t"œbâV@“²˜…¸‹ ²áÛ®§ÆŠÛ®ÓmT>„3¯÷‡ ó¡w\WK ‚r™Y.$× ]B0XtÙÝ6£”f>kcMI˜£`ÿçì‘5ÿð…$hßcSæìð;´ì¹­÷ôNk©nñ ­Y5å3<ÖØípÖͰ#7¡yµKBÃÎ#ˆ@Ü#à%xÏ¿¡ðNP{s =è³-øv(}5£–'î±B£×¦'*‹F¼ùãÏ쾉:¼w~êw }ï¾6y:ð‡ì’†åŸ™u“ëš­ìL1õkñ 7ΜÇôì?o,?·ªX—Ï+"£›ÝDóY Û¶ëv‹”¨È(X¹µáS8Ên‡¯RüžžC\a[“µ6b#¬Öt#"€ èуÀÈh@êÂ¥$…W b NQ‰ç±ςÛDÄÁ%&D âÐX×Í´wÝb²|Ý}ý™cŸýóròæ;lpèkdaÇŸ«¥l753YVðt¤´ñ7Éò??;V,<öYzÁWAX*ªld×E••óÒü½œâ+E.ÊpdÙÄ Yq9D<æ³N•"Љ Ún4s²hŸSUæå,µ&8qa)æ"ˆ€›œ;ç¦4”ðh>e ¢ Á3¼kÄs¥>/½9¶û ¬f÷“1´ˆŽLp+ÚÛÛ/\¸à&͇ê‡ÎHUHMíU··¾%«£ãw³o&?xo[©2×MÝTV÷îÝÍE:t¹ùíuYs5–§–¾ÑXÊî[œùÜ[¥?oí¨{òÐ¬ÆÆÇeÕó3rÇÔN¾³í•ÆÆn×[fÒü7àªyãäÙÏ\M::HKÕÐes@‚É5 -¬…yjí,¬ÐKš1;÷ûóM»JŠ]ÏŠNZ¿õÉ1ììä®;µD(=²ïôÆÉ­>äÏÏ i“¥Cd²Ä¬Õ Є´‡† ˆ"€ÄQ´ÃÛô;’`pO;%“î)B˜¡ôÓë…¥ tZxø¢©ä¤$ÄèL "«üÝ´šîv tç€,”€þ‰¯xÑ€'~5k(Ö¹Ûp‰Ë`ÎMmÉæSÆ­8À•çÜÔCÖœE3G3>ÏM9àvÓ»oû•s °5Ÿø”lÙ’¹E4÷ÎÞL b6|‰,«Ù‚¨ &¨!À`=¥$ü¤åÌ?#ñþ”ºÅÅ¿î¿aë¡Ã[ÕüôØÜ²MŸsÝ"E,©IÚÿ›ÕÙe”ÿðÖåß7\PÀØò¥.O%‘mñ¨@P#EG;i½B«W’à€ËövòØíí<-+"WÛÉeˆCØÁ·}‡Ú<”D ˆ•8zEûöË>P]{R‘u²éHN¦åæL_¶§¸zÜâýz%Ý¡ôœhÒúRNB\Q]¼ç(M{åPÉT¿(ŸŸ+)8,â%X±e£ýŠ81ÍŠËAñÐÐ&­„BD¡.Øt%Ø)›ßàÈgŸ#yãǰ!câœÛ››H’.‘E#TÅM}‡î,/yõ´nØ ©ÑÍEb`5 @¸EB o¤õ2¹Ç%B@h±rÇÊIŠ­…íí> ¶´Ë-ä—(OÌw`B"ŠŒé ƒ›)ïžÇÈŠ…›™û–Œ_AŠF§ÓÍÊTWú´§;ú³)ßMÕT–îX‰±S—™_ã—ì Þ·Î}$‡ú©©¶úuPp“q±óôÑEdÅËR±tOöÅ¥Ä&Šuðo@—ÝjbZEf ¢‚Ñ Èñà„(σ‘©.뙸õӉͯ” Ø|û†­ËÇøåƒvHJ-Âð:Èâ†r1@D ÞðÏws IDAT€e]´]…P¡ î»II::’!ØP%Èího¿|‘tJ†•PôÉZ$Z "q`,ë® éw½^ã›:aàJ.vÊ‹ ¯x?£#5[Èñøà ¥¾š×§õuWµEiÎ\æ~(hÇÒ¿çë?˜{š3eJ}¸O3™›ÂÄw=õèT±z¢F¾$9Ö<¥(bѨa Uh!8(FªHr¥ÀCàô¤e“_ï­}°"„æ];òæÐæ§KôÏ3³|7)+;qšŒñ{ÍT0qEÔÔ‚ ˆ"{°Uä0qÑîíè Ã xû“ö]tl¸ý±Ì×ÖÞÙïóßÜ?uý!Rtû]°yôRKkrgØ¿ \Ií]»´ã´EìUx¼YÌá»îÕS7×O•¤²66û x3ji=Ýoëlˆon­öɺŠ?—ýý¢öSO–úiÝ”\ö+ø¡…Ș;§ŸÐeýbލ*]! -„pÂ`΂ý@îòßÿtÊ„)ƒ©WðRÚòz¢Ký®}~ðìØE^ŧWˆ°à¿ˆ"€ ‘E€?¤„û-M^xï}p)=þó–õýžþíÓC^øåë0kqårK2lô†À‚$µ÷HJdmGíˆ Šñ}”›€.»X#Êè"„¡…ÊbMˆ‘»üÓ\?¶ÀIí§Q,èy°áÓµZÔ,^k¦9pM”Eä @D@ ñýÊì3†¼ýï {¿”æ¥sW[[“““;uêD_AË(:¢„„‡QaÈU)¾ºÊÐe]\!†6´0Ÿ¸pÅ‚ ˆ"€D|ã 0c_ƒQ „ IðòAžÒ~²®öŽc¿ž³• …Ù ˆ%xDzo[‰*ÏИøG %%åܹsiii§NŠoÓÓÓÁ#ðËÈtÙ Wè¡ -ÀDet¡™¸pÅYˆfâÁŽ|½I =š™È‹ ˆ"xÀëÑa‰S甤NR:::Ã΋N°æ HŠÔû¯Jzi3¬ƒ‚ˆ¢dÂÿ°™æ.:™½¹1ñ°DÃ@¯^½¶oß>yò䬬¬pë¾óçσGà—‘øtÙ Wèrh!ÍÑŸ!K¡Ž.‚2#‰ àÈ"€ "’“I—®°`¦%’ˆ/©sç¤äñÞúçÕcyØ&L,…pâšk®¡¡låæGç?òÃJBL˜5kVEEÅÚµkÛÚÚLØb( &%®¿þú9sæÙœ€.Aá =]˜jYTˆ¢‹ ¦,8–z"0Üp¥¡D@äÎ,´¸–‡ôˆÉ}2ÌÞ±²{wBú-¨­}øâÅ‹6n…p¢ËµÝÄ "¹sç”ÎZ$NC‰VOMFáÑjr°v% ËÁBf\>¡…¬=DQEpŸ° æéÆ a"€ ˆ"`ˆÜY““H×ÎôÞÂï{@a/˜õKSR ”¸îºo$w‚I ?Hçkˆñ‚puq¼FD Ð -î£wà†*¦YˆáÀ´ÀEpâ"0FÈ ˆ" "AD礤®Š»)P4‘ HÝ®£S|¢â ˆ.0!ˆ"»è„Ì÷ã á„UÄVt»Œ–#ˆ"€„؈ ‡ò}4p©Z@tA®í&Ä4 a&D@"‚€+£ÿxèÄ\¼ qâÂÌED€@îZðÛœó`C¼ 6|w™ xððC °ˆ"€„è¬øŠ‚W‡5´f*Ä ñß à Òÿ tcaD@D@ƒ%è'ðXŒÁFÁ‰*A\Ñ,€‚;±W`h¡† ¯D Äð±4-à›A­#ôþlÑê`¬ç¸ƒ¶¶Ë×ȵÀ¢)ƒD@F€ß8Œ^éoz‡{0_Å7c?Þk¸½ ëˆ@Äâ °¢‹`’Z„í çÚXBK±èký¯c ,Šlˆ"€ ˆ€H$ÃWóÄQZh@B"€„WÀ_*\žµÅ»¡´x#ùèÐC_=ÆhñB "€ ˆ@ü"· N]°ÃµGfñ z† ¡@@Š.è‰Ox|mÞb!u‚囊ä£+=iÒÖ½jõ`ëGÅÕùæ×:Þ˜0ʵ,c#‘Ž ˆ"`‚€YÔÀnÎô>ˆ‘… ‚˜… !F€wD º¤x ¾åÙ¹s¯^½²ß,·¨_Z@†ÞMKh)æXÌÅ`nd°ÞÆV=[Q+"€ ¡D@Õ â|E(ÁFÙˆ"`›nºéßøFZZÚСCÓÓÓGŽéõz!ذ"EZ@ú%ô#w!–P„Ö£‹Ð[gN\Bc3n«ôVª7•&IZøð›R‘@hG:?ÝUÑn7Ú‡ ñ‹ Éä#‰ÌŸ?ûöí0Y1ưaà ®€ŽK7´Ðöf:¡E¸q³]àø>Üuäª>¨p8`ŸJgò’²óçÏ»ª…!ˆ"aT“RgȵÀ#ÁÜ#ÊËË#l%ªG¸F€?£‡¿#FŒ€ÕJ|`&{œD§fΜù׿þ5++ ⊎ŽݸB¤H†Š˜B¶M—¨4áëLxˆØ‰3oÁíì=îàî¦¯Ö Ââˆ"€H@‡Æ_´"Q »SörüùK‡øœ…ßþ~ø£ÁàFc:ßëZwjªÅYukpJrŒÊZ\§m"Ù™©±RJ[Ýü±‰ýÔ4äù¶ÞÄ-@²XŦ NôkÛ&Š1+ *‹Ÿ@\]êÅP´ÿaµŸŸŸù”œ@SÑi-§äа…iʸOàªûr­I Ð…[‚\–€F GŸzc´3kÙ˜Dˆx/wUá |÷rüÞ áà5W¯~ðþûÿ:z4Ü×!ö€ž¹@—HaŨvÜH…êSEu:ƒìà–`éGFã Ý"ÊÊÕ2‰¢þzé{öM(O!¥ÁÁœ‡Ç6•\F—ª±ŸÀÆ¶Ý [p•¹ JÉJÌëKÏ€A‘n©x"šÿ´Ýò´H*¤¿P|ÿýkÚÚà•PPƒT€Rè¬àõP,Ö©zÖ"€’j×?G UP×êú²$ sTÎ’ðøfºtñ"_üí`H;½$’v]ÚÅ‹âÛkô@–‹Z.þãË¿ý4»¡ë —.þ€1_]ѼtåÖ[o…;÷s/TtëúËéÿ6mxî-JÂÍÏ„£7VQ¢ª—¯{§âbu³è­Í_«ºÞô´Y¹À1ŒZhÔ6¹q­‡’õep}æŽê—4¤š Ód2‚‚ §”l<íÀK EÕrÕ×*-†Æ‡•ÖÉ´l’;Œ¬÷ÿ?ø—aGÅÇØKëöRð/üjE5ï4j䨯¾:cd…ZHOV8ߟþôÑ­·ÞRXXÈ/ÕÓiV«ß*Ÿ‘qÝ8tX”2˜Æ–$D7S„š§µìvIľ®\¹rñâÅß×~Ïó„Ђ5á–¡ý0´ˆî6Bë6TVv»öÚy󿥦¦†PME㙪ª*ðkö¬YºjÐåýüè›ÿôO#oþn÷nÝt1‰9bË¥KþZ~åç>\¼xþ"„§š!tàäËC=—.^˜>c:,3èÚõÚº ª3=dGtô¡`[ÛUzÖÑA;Oú0F¼í¤ºwpiÈzo±Œ V5!ðÜ…ºD¸¯Ã6Z°8ªQ¾<ÄÁ•fe¸îH5¥)¨´!“a†žCšE ˇ+ÿMˆ¿ö¯üÇå¡Àä÷Û1jüÁ7¹ ÚXRÒw¿=^ýMðtRô¸Nák¢à/o`ðâ ˆ ÿ‘šœ²/¢¡…ÏÛñÕßÿž‘‘ÑÔÔ—À·oÿûpHõ¦m¬Zж’­ðhKQ‚‘æ°ó52%ZéáwÓŽFÎK\7fd^n¹ø?§OÑÆÆÀ„HŽhÅí -_Ÿ=;³¬¬G—.)_¨Z¥!•Þ³gÏÒÒR“¯ž% Ë0¹>ü »öÚ®ð|!¤à‡M8ÄÃàÑÞýÐÕØË>/]üŸ/x/Gû¹Ë—Z.µ\ܸñW° ng0è™ØCÒ;2‘èD̺\¿aŒ`” ¿®|­/&´Ì’V£,g£(‹¦)µKwâ²]"¿îÀFNÈGÿ!$/+1Ë¢üþJZu¡‹`ŸÙ˜Õ,O†C«Q •¹v#P­i6*m•®l«R Úø…¸‚ýZY¢¢éÓù÷«ägl‚ve“v«½™CmÕm¶!¡)Nu…pûûõëqDœG˜µ¨¬¬üÞè|Zh KžK¦k)F¥\õV«)2µ[m4¤°¶^¹Ôzåò×_ý]Òråò%8Bª…G-ðœÆâqWÎ0zÀ/#ÌÐe蚺u»6nâ ¨YX¿u¹¼OûúŒØËù U\¾rù²¦I°n›Ré ¼ƒ‡žÓ{9¼·Çæ£aöõ\•|Å-[­Y–¯)¥fµyM_9d˜Ô2*3²$YŸÉÌýN©bÝû—WéWERà/ËY•Áª(LÊ•O4*ÀÍxoœ£Æ"€ Æn…G-Wûj3Ü pyÓƒ ÿqÑ_)ÔûÑRú}Na?`J¥ÑMÞè üŒ E9¢@¥ïAþõÛ’ (äfçféçðÝq„¤M-¾øòËo ‹Uv×ü^BPkd©Z€ 3/A«E—¢U­Ë¦Kä6sKtâ†(ÕNxœ~66á»ÊÒ…óç¤rW¯¶^½'Ï2m‚ìh®ái±aƒ; ; èrØÀEW[¯´ù÷rm´—“wAçIïØô¯ÐS¸ 4ˆ1ØHA5¨zxûc*R-LĉbÔbÜSØ`K¿¸4#]úeãN»šÓùÑœÇå\a+ŒáÄ1¢Á%¡òDƒQáB8QF¤ŠsQ”h·\­Œ"]jý’ti³Ì jùÍ´hbmq-ÅÜ6-¿ 'UÿÐéŠ<Æ L8‹Ø 2pÔåÊÅ‹S6u(lr©á‰Ã¦·êbµš¬+µ¨pD[·VI¹BhÑÑÞöøOüÇO\wÝuÿõ×ÿ>vìÿ ›4¥‚€ÌÊÁ¢L­’gx)¥%ZqCѶÚ¹&Õ…u`á•ÐÞ`M”d¼ƒŽYˆbcëí'&ܱbdºl–øàá}Úå‹ìó=4ù:ÚèÛVô½£Ý¨|£<0*d qÈâ_Ž ©ôÚÙ8@hê—ºY\·­{Š4æÓ(Ü5Œâ}Œ*šÑ˜1op9¢†ñXpâ Jó©X‰ é+pYY¹¢ùhH°UYDÁå'ŠJð.Œ‰õÚËfÐ+EòŠT™šK=ùœIj1š2fcyf¥œæñ_4i !yBø Æò5Õ%„é þ;ç?wÈжgÓ?Kv‰_aK’233‡ç|â ˆ `\'™(¿! ž²,^²¤÷ 7Ü{ï½7ÜÐ[vÂ’|ÊnØø,bIšÛ*ޞ–i±Í¬{ "ÛÅ [éEºûÿ¨¨| ®aY”ä0¼Ó (±í?Zºí'8‘„ì™wý”LHîÊOÞ™Ý6m¸í>ò¢pÃ#rf°í”wì23ºŽ«š±õÜšñv´šðú!cÂé¬ãÕk~{vÔôi#,¾Âðë7ÿŽüÀ2»+îAGk«Ü˵wÀí÷þügݺu‡='×\sMJ ü¹vFÂFI¸ÒݺM_6@¿in‰ãöc4{ê\¿?:7ÒÈy>ˆ3Êu›î:  TmŒ`º#.¡¸A)Ý"’IjÕ*[ dôH–ï,~°  hÓëÐmw~Í›q(ŒœK©²…¿tWZ]€ÚÔóêv‚AN'úIDh,:ÈS5¡/¿ü⥗^‚ù e\ü^> yûÛ)>ô”" p_·îÿÁÆUÅ›Fáõ(\‘ŽBb:¢ 4²í×Þù½JHÕÙ³ã dSeáðÛ|©™ÑÛ#K^BöÎþØàª³¿xgS½ÎÍÃ_‚c—Á•ïîšø—³5,P'¯ˆyàBR ã@Z@—ÈÔ-rüè‘9þõ«±…®˜ÐáOp´*ö¬Ã ¬]»V|â†áPh}Déˆ"€H[·•Pø…?ßü1a¢k@;:Z[á#ÂAC\öBÌQ4"€D :³Qbš¯»/Ú®JrJ¼ú‹~Dö·^¸p! › †–ÖŽážV MíEµ²êž¼ùN*ìÍ·Ï-°!Õ:k÷îÝÍ™º Æwê…¿ôÜÇg¤æ“<p5ÍbDNÉS;ùζW©¿ûgNxþ½ÕdÁŽÂ÷ßð0žÙÏ„RzÂÍ‘rºlQŽ9‹,¦OÖò;˜·È"äÌÙÔéóŠ{Ò˜bSõñyðý:-øoudÓÑãÅYY„®¨º „2ñ> ¾'(ñ˜¬…#”:Q6"€ Q†QQ eûÈ,¬­§Ÿ›å޳½‹xÓM¨V vÖå½^¯ï“Æ^oº¤§ùħÄ7–ø|$gÑÞ­3N.é¿îÕ™£gÀÐ:"ɉË`< Rµ%›7N·âw#gü˜|9‹fŽf|¼HÓ»oû•s ½ìØh'¦|òÉïg>)8Ÿóî‰b}áAG_)DgŽœYs„ç¦ÿB‹ÔY,Lè™5 õGß’ªC¡Ù#n°†Æ"‹ìb}ù®QiÿóŠß±~{9×FAˆ"µ`hµU·†ñW (÷mÓP#l *âרvÌåз 8§ºé¤o´7œ<~ dühÞÐrŠ úú|}g.Z?¾lcAÕôÈN\¿ÈÂÚ“ÓýM~ɸêâ=G«èüæ’…Âk*…‹ß…e`J•”^òòÑ'GK §yS5QbÔ6%:gñ£yÓ ž€D_ütüë~Ʀ¦ª'#”¬ì¿=z<›œu —B?i/¨W@ÑÇ)Z„r т–šH ;àÍjôÆKg*øÁ®…ŒÂ]`ÍÁÝ”>mvöŠñKöq©MK~vô±{òØ´4®.}ÚÓ‘ 76¹«šéÔžºœ>ºHiò¾%ÙÙà$!ÙžtæEÓñÔ;ÉGÑ_Vîe(U²Ñ;º(§j§>TŒ²”mLº|{‡È‚ȱÌR#GÏ3gø¶ :£Ñ«' -´®b‹#¿ýíYa–#x{L$P4à?:Q!]“˜… ˆ@œ €³qR‘1ä‹#øèG°šSbÈ4Õu`$ë²Ì¼Ç^|bðÀLlΣ5¯ßEßÂ|[9ý®§Ý]8a©§á‰ï¹¬>°8g.§ßõzoê„+¹‚)/6<‘G>{tC¡à)õU˜£à Ø…Ï åd8 Ô]°VL¦P|ò|›7ð¨+°íá8þÑÉ€éò´-þøÇ3©©Z³æ·`Q*|ë" &3HêY5E°b r6•¯Ÿ ­ ¬O“'‹¨2öH%´ZQ:"€ Q€†QP o‚ƒo»$Êþ*áàhøSˆ26=ø9«xžÿB¦ž#¦M'ôsxó¦ù¯ƒàG6ºñR86pkq>2…ß±ÐBƒDˆG0´ˆÇZEŸXC $¡Etƒ€.G²Bè7¼ÀÄFÈ·YDÒIÔ ˆ@äÀÐ"òu€  Ž@ü­ˆ³2k'¶ZEdÜ‘g$D´´žsóBý^¨Øª1´@ €¡EH`E¡ˆ"`”””sçÎ¥¥¥:uÊb‘(gKOOÀ/#;ÐeXtéÒåk¯íÚÚÚjKlÑ»té ‹bËt´@P"€¡E(ÑEÙˆ"^½zmß¾}òäÉYð5³¸HçÏŸÀ/#oÐåäääOþzð_¿ómˆ.Œ`‰-úåËWÀ#ðËÈì$Ü\a ÒD ®ÀÐ"®«C¢Y³fUTT¬]»¶Mñ}±¨·ÚÌ@˜”¸þúëçÌ™cÄ”€.ç¼yß?Ú³ïýȬ›2ª‰ è0_Ñ©S§‚QðõoÃÄç4âÆeC?1@Z`s@#`2 °e!SŸ€.›ÂC†tä㢩È×Z€ aD?™F°Q"€ ˆ"€ ˆ"¿`h¿u‹ž!ˆ"€ ˆ"€ aDC‹0‚ªD@D@øEC‹ø­[ô @D@D#Z„lT… ˆ"€ ˆ"€Ä/ZÄoÝ¢gˆ"€ ˆ"€ ˆ@ÀÐ"Œ`£*D@D@D ~ÀïZÄoÝF±gª½uæÌ¨QyžŒ~Ql2š† ˆ€U Ξ=k•ùDˆ#0´ˆ£ÊŒW¼^¯]À§jÿôÑG·ÞrKQa¡|Äç T Ý'{¾Ø•D’(ìKô,I¾d$Õ5e9ü9Â?fyþœò•F•cÄèZ4"f *Žt¹W|üqÒÆ¸ùØ|Ô† ˆ@”"€¡E”VL›åóv|õ÷¿÷ë—ÑÔt’»¹ÿûpã²îÝÝ®@W„ØU*ñ‡Ï=‚LIDATN»j@¬¼äçEu¢ÊS(º^ÛˆÛå×UêŒhKµ-fgö˜”ŠþÌÄøèÏò9}R¡ûû•šJ†Çt}ÑZˆ ˆ@$Y‹#8zôØ­·Žl8|ØAYÝ"p ~À¼]Û"NTùetÉéR®î%ø¢¢sïÌ¡3Ï•ð±È <©vVÊû1ÀpF­–Ú,s 4“öP0¦`kÕ.\0‚¹ˆ"€Ä¸;*1ö\øâË/‡\8a˜nr?¿c||“B§ž§*©òK‰¢:Ñ^rŠ×—d}© RZŠK˜„Aªˆ tŒñãÆegeB§. ‘ˆ"€‰ÎZ w‚€ÏëýÃL»kjjjj[{Û×_ŸÓ½%ÛíâèÜEQÖ½C`£òKºTX§ƒwZf•ËÀtPÄ:ÎæœT;(bnCÀ\œµQ =ð&qS¿~ùùCzü‰'ÚÛ®FÐ$T ˆ@Øp²Û2lÆ¡¢øF ¹sJïn¸÷Þ{{÷éÃ=®ÇÀNW]»Uk¡Ø¡.oÂæVêuª²Ñ¾mÝñ´Z¾ =]naå¢]¿\”ﮨÕ]§Ã*-˜nàÔgŸ½ôÒK0_ÑÑÞV£Q"€ ‘CoL‘Ã53’:áÔ6DˆOpëv|Ö+z… ˆ"€ ˆ"€ ˆ"€ ˆ"€ ˆ"€ ˆ"€ ÑŽÀÿþG}zÙMÜýIEND®B`‚PK !ÇÞ%(L(Lword/media/image14.png‰PNG  IHDR-O—½è pHYsÄÄ•+tIMEÜ 5>îtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/02 13:53:02 lim_j SGA250167‰ :] tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí} `EÖM¹YA a5¢A\È!(™À~€l8%(¨(YøPQöïºò-"‚QAAD@‘D9IT@ pƒ†#ä`2÷Lÿ_U÷ôôtWOf29zzªÃt¯^ýªó^u÷«2p‡ÈÑÓø4ÿ…ýe0ê½Yoó €‡Œu:k…!@EØEÍ`‰ †@]"`è‘ôT]¶ÇÚb0”ÄH“n½±É³O ï}_We9–Â`Ô¿,|ûï]úððÙÉïÝó6Ä9kª=&‡!ÀP"pÏ]5pæÿeÒyØ»ç_ •¨±†@#€¹&9|ì!#aÃÍ2A€ñ0”X†@í" 㡃´öÝäk'­Ú½sÑ¡M3ckW‰ª¤}&®æÞí'-Y¸tX—ç‘Ô“©Ú¦Ç{A“ú.ZÝãÎÍc|Îz²sò‡>ź/رïÙ[«B‰å×ÏMŸ¨&úõe¾C…ж¬Mðd±5Q*“j]u]ôû@¿Â¥tI}oèžÇâÔ )ýûÉ—Æ“†üXŸî¿¿¹¸°·¤ä÷ ž?騗Þò+£î2A[N¢•ìÔWΩûÌ©A¼Pß)àÞb¾àT}ó,@0눈hI1.ƒ’†X-& ^£Fúô ü°k;œÂwÈR›ú©ñP¸’âžyzÒ Ë6>ZUª‡¹ßkÔ+K¸en9>óÙBò·ß®N}dRÆÑðæ¡o}û 8¢ˆ`ËWoÈtRk[ö×ð‘ux‚©Ô¡à!Ô:|$\±›7¬E Ú¼ñó>ýĉ´Â|k¾ïÓ`Û\™üHK¿ïšÜ$eòS)†&s³ ½èƒMî0Ïäoø’¸Àâo„ôKOêÒ’¤"'ʺO®F‡g%ÜaxêƒÅ}D9NôÍ\CŸ eâg>™0ç=">'Ï;ºhfQϬ§e Oí"ˆ2KçòŠÊ(ŠyÕë±ô\¥È¿Î|xÔþJÑ”'`RU"‰EðW„‚×_ZÑÓs^šg¨Ô4déÎAƒl”2N!Q¸h½×Á ¡×—,S~puYIÏéÐaÃûôë Ä$ì×N)%%ÍûÚCÛ’U†Ù/ *|géênýµƒïxø`ì\ÉÍȶyr k·î„Љ/zôøÇâ}ËfvÂf½ÚûXÉÖ8œ8kñ@HÜ;9á«1û¶îëŽóâoþj|J"íÜê£x\ró 7¯êךÏÚ¸qÒs[ãeD}ºŒ?}Ã×Oq£_gº{¯iW–ïÑÓ¸x+·J‚À¥‹§w”9<†+yÚ5Œ~;kÊL@]Q Ô:RøÎô.-½ö«³W+ Š>_½èù‚Ið‘«Äd¡PŒ‘£Ð*î³Yñó¸m1|P$9ì*ƒÜk­,ùᇟ!·OŸûàù\µ,µt„]Ãÿ"“/êÅxÝ|yè¸LR+:6«ÇC³ð÷~[ŠûÆátHì4æÁ†¾Ÿ8zõ{¥ße`º¥ï+cWl8vÝ‚ ,z‡PòØjABcïÂUD9X¦ „Ä~wM½=ëNFôÛ†C㟃$ ‡PÌøÔø—Ÿü¨°Ÿ±ðÍ ³×Ä9~óVß±Ò0î;R¼Ó",(óT',$£õG .í²bG&Œ_C:÷İIÿZËC¢?=JÈê‘øÉ~|M‘ü´J:…sÅSªJÒ\B ¾r0æ¾H>ø—îŸÌí»xß´6¤†¬]A ûÇC߃Ü(€¿¿Jqµ\•ôr~ß¶-§O¯»@ܶm»ŠüwéÈ—‡ÞRåÎÃfªšGñÑÃ%ó•e—)‡zt{þßëÇ./ŽCëŸN¿-Ôéž1hÙæ(óðø5Øúy Ä8´¥x/~xU:N °.€ÎŒûŠ}O»mâ$*œøã j?¢úHJ{#Óª(P¸|®¡Í‰IŸ®Yõ j¿Y††{ùÉ­^Ö¶û¶íÜ?h@÷Aö 6Øœ•cµÚøSªÌjÅ[tj›€¾Û°ƒ<‘õòš~#„‹àDæÖb’økæA’HJ¾¼œ$VuÄ=”ˆ6~µ`#óÿ¯¬Ðfæsígû ¿Ç‡¨'ÏíOh‡Sp»ÊZže1Pïà' HG —¯_Í FgZcmn»ãĬ'³ I^Ö²OöíIå+­®zšŠVqÓæûw§ƒ…!¬.åÔ2‚\ p˜ YjͨÙCµò|z·U¹ã{$Ž5à3l9=×Y§„cËàçRáš$ò%gþM*Ž}ŽÌâÄ£Ûˆ±¯''Ž…Ó»¡NÆWžãüXÿ¾(Ý&xb9øúÌ.m>A ý&Im‘´)øN)ÖmÕ§ý ãÆ»ÿ{ü$”Kjø×Y&”rj\¼xÑÃD8Æû¶¥<É y.M«ä½Wì$ürµñ“"%Uç^z7ÀʘuÄ Jj¢´€OÜÓÞzØ­Øo“۬ɛEY3ÇnH®' Ï÷νâ3Ó£õ’¥1jží%UË/­!=äbÀÅ=<þùzšç`’wnåj±s†@­#P=¿´ÆÕ‚û+3gÄ..ýM7(äÛåOÀ»3ÖmëµÕ+&7ì¨A¿4ìúÎfÔ'ZõKëÖ6C >ðñKwœ¼§>uam3" mÞ§‰¬1`½exÐÒýR6. HE€ñ0RGžõ[KÔÞ»WK]öê¢YÅ´ Óªö¨úùaEùå³gº¢£¢®(Ã5ö([42Äv¾·Q£&¡¨uG̪ën¸åÚëšß5¿sß4‡£ÉÕ+¦eA?Å_[òN»ÓisN¼õÕPôauõˆ@Õ<VÒ|iæïÏŽÁAüÁJ·ý\èŽŠŽæÜÔÀ`pW”·l~]+Õv…Ûæ5üK·V·ßԸ탖Ë{.åíˆrœ9kŠu¹Üœ þàö¢:söì þô·Ï„ýâ{Ù‹Õ|ï]·™­¦}»žýóRàJ `ëš4A DˆÊy$4™&»½øtvçNA{Ñj-²ôG jˆ•’’Nöì(nç¾üæ×õ ͸As‘Á„¶¨¼°«I«6íïéçv7Õ8Ñåâœ.ΜÃÉ|ìi5‚%ü&w‡Óâìqw|Î÷œ6lG%!AM[à!d¶–Hh±W:?ôBAAŽš–Î xhÀeÀ.Ÿ?CMtþï»À|©åRÓÝîæg~^Úþž!'N5iÔódî{7ÞõÏÿ,[)-üÄã©uùĉñ™e?¦Yíf``êßÞúÅ·ûÜnlME«øØ¸QE§ýØUeV+^Èl6K³DšÌv°‡V«Õåò.Ý¡ÂR#P5ù ƒÁÙüÉ%t ü¸|&ïÆø‰¯”ì'N÷n}Ûã¥Å§^H›ëpÁ l»´¿.}Þ?gè_¦ÃâÈÝqî—Ž1v‡’àÌ:݈ø¶ÚU¥|› óØCáð!!ñK+Í•.7ã¡<–R!vÒª´‡Á6~È2 Yй %ɽgÄë=¢íY_¾–þ/çíÿü3ÆamÙ²ñGŸ}G—Z÷ &ÿwügüÐÄϲð#ÊîàÅ'÷lûê•…AØU¥dÞ/µÙl|–Œ„pZ‰yhv¹ìʺ,…!P á!~ÖÏÛýǺ\N¸âÀÿ;NürNø·ñ®œ}N»Mm:GUȦÍ|÷í—üœpƓÜŒá÷+žÔ-þîn~É9}¹ µ¦V&‰ ÁáÄž¨Ë~ܹ,!ˆz!m²hW!dª  äÀ# 𲇠»÷±É{Ͱ@6ƒø‹ÝžÜéV«ù¥èXRõ¨š‡ðÜþ~©Ãa"¥ß\îvg/!«ƒ³ÚÜV»{´g‚ã¡hú=ü? dóÆ KÞ}ŸþÌ?èÖ;îÚfÍnìø—&ÍšóË9R{è&ÜVãþCá/±««¤…ÇU5§T™à—Z­ÈnGûÝ{éÌ­v»Ì#ÿ¥¬¢Ì ßíÀCf©ø±Ä ¨š‡Qð`Âs¿ÔæÀ3"ÞýÛ½íËÿ¼!¸‘|³£G?lû`wœ.÷7›7a«åâžxü1Þ|íœûŽ!:ÁÕä†ÍPÃÆ~xÈKà­¢Ò®bëJ$¥ܧ{4f³Ód²oÿå_b݆ ¯¹¶QC›­CÆÃ  e…ý#P5¡þŽŸOòRÑ7—w}ípºlvîŸO=–Ðb#&ÑŽí¡ÿÆ”¹'Nœx(åSiúµ­okqã]æßl÷õ.wqÅ¿Ø×8á™öê&y S{”jWyÉçlÚO ̇ååv³ߪÙòé›Ý{?¼rõG b¢ßzwEq¥Éàv‚IŒböЈ,+ªæaüÞ…V÷þv.÷ûûãÛ!_¹!ýÁä[ ~Øþ[yùŸ Íá ·Ñ­8·dÈMbø{çµ®cP5ÙÝ.|¯˜ Ðއ5{¹SµßwøDÁÉ6Ú`F/TF7¾Ö/¯F¢©…k)±m‡èQ“àY‰ŸÇ%µÔ2¡ÇÃ:iޱ1Ùºˆ B .âñïëéÙ£OcÀjV1áÄÔ©uꂇµÞ ÖC Ì`< ódêëÆC] #ëD˜#àsŸæ\ÁOaÞ¦>C ,ß/MMM Ë~0¥a…@FF†T_æ—†Õè1euŠ€ÜÖT7ãRvˆ¢¬vd²º+Ìœ»Ò,2Á_7‚E'¬øµOÎõ÷šj”Éa„)µÅC€#î¯.7dØìîŸ}›¹rÉÿîþÒdç,V§ÁîvWÖËb< Ó‹‡©]cÔ¢_ZXpâTÑ©ã'åŸF–r§%æÏœSW·Ÿp~{í:rO£ýçÔûQ´¤—A8z-)R/GËÉžjÖNáÙ´`Zc,!:µÅÃWkQ¸îAøü±öWóç?ÌW&¤ôå¾_÷æ¸ÿ–”/–&ÿQb|ïãÕŸq–òwßùù­¥‡!±eãw·­¹ÝåByG hÚ-IMëšÅ­I;c† aiÕYC üއ§OŸþúë¯KJü…ò8œ7‡8œR˜ò̬òk¹fÜ«?Ÿ¿‡÷QM=ж¬Ë2ŒB˜©\H湕CILZQ˜Þ+.Άàê”Û>žæ}Êb¹Ã6á[3ø€0£±Ã¦ ÎØуû·fš‡;vì€ù!¸¦þõx¸¯ƒ‡‹¾Ë1üÞ|û—îoX>°²Í‹_þyÌCcÿÞ;cè޲9¿“)Mv)ÛKÅÏÎá“JZ¢J}ܰܗ–ò²IàžJuÂÒ”fi j";tèÐ6éô{\ýõ»wç:|ø/ †6;òkÑ-¿ÜTÞ©EA…¡mLƒ.¥Ù[6÷ë{çÚÙŸnØÛ±_I,“!ÇÃÄDé U€`Ù¹sçãÇ_°› ÎO<}eÊÕ«_´¸:jP3GŸû «¢¢* Hšj3,ƒ! ‚ãaà½Bá‘}š–˜Q9ýFߓУù‹SñFÖ|Và¢<%þ$Π&/›Õ`Ô+µÅC±SS“àS¯}d3´Ž@už[h½OL?†@¸!Àxn#ÆôÕ#µå—²x|=^-¬Oµ…@mñôeñøµ5hL®î¨E¿4¤x|I8¾Ol} €$2ßç}n>')b±>’X+x÷”½ ^#cÁ„j‹‡¡Æã‹±HÔU-ü¢Zcˆ# óøx| JY祗q%~㛥߹á3²§ú)V-X%†@p<¬Ãx|/’VÔàkEKæÙDá±32 ”q¡'ºC5ðÑ÷B °»º"ë5;‹Â!Ä#ùãCšèÌz}FY¬½2؇YAX…7î^Åßä=UE1y, ¸³r )ÁñjÖe<¾ç"¨á]èÉ¨ä ÆÏ¡R©$Xès§ˆµ‡PŒDÿzãî©n©2Y1š|v}1‚G hÖe<>‰È…e)<‡`…¨$’ê ÆO«°¥$Çâ4üD*cí!—ìO¡¦Ø¦¿/Tùþ*°<† ybj9siñ·`ˆÎC€.½3´TY¬½"Ø{ªþ£õiR½i¾òý—e¹ ªÃÃZŽÇOš ·NâKRæçòv 3G¥7²dJ¬=ì/ Ç2 ¥Ïö&ì¯%Š|ÅYC@  yñø6l€xü¸8•EÕHSb<þö«¯Ylf0ïËs_B~•ñøØÍBFáž =ª§ÿ}×`m¨¨¨¨VߡíŸöÑúß›?uã¥5,s¤Í‹›üùÆí+Äx|—ÃòÊü…{³V©«ÇrúDö]{û³½bß‚{¯Åãëó¢`½ªo‚ã!‹Ç¯ïñbíëàx8µxã¬$C ̨-Š0°xü0»"˜ºõ…‡°ŠSy¹Õj­}X› =#ШQ£ë®»®yóæ²NÊyÏÍf3ÜmР¡žñ`}cÔv» (ÆïJ(m_ÎÃò²²›on‡ ·ÛŠžwŒÿA¬nµ#“Õ]aæÜ•ndá þº‘!Ø!›ep( ±º 0B &æšZßpþü9™Îr:]®¨è(ìMò`<>‡CÆš ¸èè(`Y<„l0RxôˆÇ•Vw©ñ{þ™s •»l(,ÊOR¶õíôk_»-o×ôμ²S_µŽ/ëßõ‹G¼…q.T¶Ú§Øßú–¹kLC ÚpQ”—Øäö¤Ã›Ô°…hµ›á+B<þè¤{ñwóÎ^i0›&¤ô0|]ú‚ öà ØðlÜ#©_+ÛÂ?XAÙ©bžÞa~ÿnp[ŸiüÚm‡v>Ý zË\ù”ò¦À‰²E}Ê+rYC fˆ¢‘‹ÂCB‚Pí!?1k?|Ïi‰~ô‘ÞËWüâ´@s1-¿›¹rÉÿÈÏ;R=S´Mk`S¾Û²S5,”Å”)juƒjÈ¿–˨ )&ìá¿Ï÷»w¿õÖ[~Ê8œ°/70œR˜òÌƒÓæ²\3îÕŸÆÏßÃû¨`…Ë_ÞqŒ½‰âéÖgšXöö3MÉ1àíã¤u’xþŽxí}þ®¦MŸÙêÑJ&‡s{_¹é3ßàºÇ—‰ç[©ü!à§ï,‹!ફI±‡` 6ʇâ»wï~î¹çÇSOyß—ý8ÀCr“-a`X“êúèEœKðQQå”M™`»*ÚÂ%:xx*œBúÞŽrN棽Þ}ݾc“¹‡ÿÚóуþúëÖ'šŠò|1ö—!P'Pxè†G‡Šûª¼2?üðà /¼$„¨<àƒZ1( Y@?Þ‚=Äa‡œÿu!Þ6B V¦ŠBHǸ@`OòÉc‡ÑíI°8ðs=éâwå6iy|‡–C©Ÿ•,èÉw¡Ù%SN.Ü¢Å>’á[¾NÐgD À/e¯)<Äs3ZQ á‹/¾È“D-ÆgµjÙ d”:*Š,'þ°ŸÚ{úÓÛ,ÿ/ñ¶¶£š%¿ô½Ó冊oß7úÉwfM;µcéKû&¬€[ÂÛS\Oü®ü"öQZ!Š^zãݧ`©Þ£Ã”¬Ÿ9ãôÂ"÷ßòÒBì;C æP8€X4‡Ô¢G…9á¾}ûx•{ì1j1>WŒÇ?ÞtcGôw_’w©é¾”vãeñøJ!ÞøùUã}÷µž‹Euõç, æ ¡_\ü.~4aô¨3!óâx—Eßòpê#A±¤ìÆ|DJÂIGŽë¨@2ÙÁ¨Q”<ˆ—ÇãC„a›6mÌfxôÒѳgÏãñ7ðßZb•a…@ãÆ×Ã’ÜUÇãûq8éòwÄïÞsèðá¿4ÚìȯE·ürSy§†¶1 º”foÙܯïk7fºaklÇv!¶ˆ>¬ C@ãÈýÒ˜˜ FLL´ò•ðÀ{røðáÞ½{ïÙ³çov®àüÄÓW¦\½úE‹«£5sĶ¿² Ž‚´»ã§™äÆ&;€€‡_ ÞÉúÁQW+*š5oÞ°aHqOÉ%¸KLލœþ £ïIèÑ|ú˜ÈgE欋 909~Ëdr^^ýõPâJI‰ò•p¹ÈÀÎÄ6;/{áÂ…À*±R }"}]‹<ˤ=”óò ²œ>Qa½bhÊû¥ÚPŒiÁˆ #h°YW5‹Å/­G]¿ø4]Úú#ãÒêQÖ4C ÎÐ=ÞuWËä!íà3Ôxãÿ<Üâó„wŸR¿›R€H~SÑ`dÓË‚Ÿýp|Ï}[áóð–ŽêûeHzà‘Ë6:¥C¯³T ÙCˆÏh×?,‰r;¢\6ø ¿÷ÜÚ^w:\Ngt:]ðLÓéšþükêc˜^èÙÅÞgÈÏâjpKoõVÅØyѸ){EÙ?ŠìŽ˜·¥hÞ%Ÿ%ÆÏF±I9Ü 5IEq³9nÎB§í³·à½UA€˜¢V™¥‡3²‡.X!ÎiãI <¬8ƒÌ£{žßëôÄ~çŸxaÚà’€¡Æ;1%®ÜäÙø>àz!Œ‹Ç›|!°=\×ôt”—ü¶IUo"63x+Uþ ÏbÉæªêÕYNø"P×<üî»ï,X@ÅË,v0ƒ@Âm{®ný½å7ù¿þ½ã¦>ß×.3·íGß·i|í5+ß|é7^\¶àªo"Þu?¯@ IDATøÞCDªsW.¢t[5©)ùîÝ|ÉT?.%ß04ŠÖmÁD¢øä.]`÷F~·SQ2ù"i[»-™·rÊ0Ÿ]±=­’ÈU@²5‹@òpçÎÓ§Oÿý÷©pÀûtœÃ <.®¯G]´$5­ë\âà²CÔ„Ï>ûìwÞ©#Ì9‡%Ên:t®Ù­ÜQö«ÈtVø”¢+‡\Å¿YÏþR´ÿ‡w::Å Ë*ªI#édaú.ö‰üî¦oÌ3‡& [!a»`\VD–ÌÃ&ˆGì_\<¶dr¨Ü¶Õ#{¡¼;‹·`ÅǰMÉ þÇ n§ºt•©9ꈇ" Á SSüR·Ãzúl9ܰ¹¯³ 9L¸¤Ëlå.K©µ¼Â\^VY^¶æGËwÝ~ß¡jr„tŸïýìbiZ“™"fËãýJì¨æo58ŸÒËLl"°k1caM’ædÕ!!ÓC—ÃúËÉæíÛ¹ Žr  ²WrÖR‡©ÜVQn©¸ŸÓ'qÅÝñ·ª€”˜ú.ö¹ü4ÏãryÊ<†¬ßv3E—q^~)B˜yiÆ4$Ø?°2-M˜V¥µ˜ ð³AÞ§f$ ¹0-X<„~äÿõ×_!Çĉ©`=üóò5ÄÝݶY® k™Ã\f¹Zf®¸b./µ”•]:wqó™V×·ï­n ÅMíçÅŠ&„º‹}b×üT|‹OÿøË;ž+ä¶É&äqA“Vd ‰©(%¿”1yï©[Ÿ²›.Ôþ{&‡X°€øù ¾_³È8¢>+éBXjX" ÇOMM­¯~¼õÚ 7µ½þö–§mÇßáu°»b,γ½a¥½ÙÑÀâˆÉ-ˆóøãˆÉõ $8ˆòû'pÏs~ÊWÚ°&ÃŒŒŒªãñ륋°"Û¹“Ç‹ŽÚM•£L&K…É\^Q Ÿ “Åd2WZlVÛÕ(úøüÛè‘'êEÃhÕàãœâ‡î¾)õ¢XÝ5Ú­ÄÖ]sÓ’†Þ§I{éõ€`‡;=xÙ¨º9°LËåÛ‚›=2ÓyöPý6[ÝŒ‡^[Ñ5 1~ úJZÁ1ŸT“ãnJÕÅ}špÄé˨këqÖC@‰ã¡–¨kt2?|ãóK"r'²98‹3Û8³ç¯ÕŽ·Óp8¹ÜE·Ô5Ƭ=†@U脇ÐÍÛ´†­hàUØiÊîäš:8`£ ¾;Üvü9œîý¿Cˆñ°ª‹‚å×9úñK/_º|ñòÅâËçþ(9qæò‘—/¼üKþ¥ŸóJ~:\r  $ïx©ÞVU=¼ÁQU†7)dHc¦ S8…d‡z(¾B$-AÖ n‡ÅÆÛ® ôS$ïäàZRhehj°´G@'ö°M£I÷µ¨¤‰ï!t¥yLˆã›øÇEK–d£!?’€Ç$¼®wxÏŽ_(€Ò¸"Iµ<‰÷‡Àb!þ‰DS­ð¼ Nt'š'!yŽ›Êâr’pG§fs+âH‡§HßÔ#±UÒ2!÷_Ñ1– †€Nì¡ÅbV롘~ñâ•2Âè}H;#tª´Z2¼‹î]dÀÔ1ÆbT¯y’,Šßû2»':šX­&ÑFY&4UYí`Ð ¯½¶1ôúã¯O¾³6ïõ÷÷Â÷¿:ºâóß—~²oáû¹¯¾» Ržzpò^2䈘M Û—'9”•»ÒshÔ(¼Ü­|­[ºÈ€[ V2W%–Yˆâ—0GŸx–îðÑ:2Av“ø¥°ŽtùÑ!ÅŽOüûm2TyåhQº¤:„í§ÂBMØŸK]’Ìû–ÔÄ€!75nÍï2{*ÌÏ’º,äBA—…TýXLÄuáŸ+8¥¸ø¿°ÈGœ! ù¾zÇGñÃ*SëϯÊá_É@Êø—Àr«‰€Nì¡ÓyèßB¼¿*HªùÔ°}j¢ªly†r}ìm¼…ãYGâOüÌÂô<£76Ê7ŠŸjeªRFÞv^#èÄò»Äù·‡°ò"2lcÒÄåéeÈêH:ŸÂåÄD`’¤Nî:L¸™B•'{e/¦H|Ó\å»äòú˜ˆ©[²„øgÈšˆ‘‘¾.Žô¤I¢ø%ê©êH¹.켦Љ=ä}Î*ì¡É5쎑»ŽäP†íSIܾg¹©ì…iBˆ?u”èë€9°Ôc&Éð/®´‘½Ä³Îžéb[ÅOª•¨TçÂü:U”¡ö‡%Ö:±‡<þí!ï»Ò1Ã3¬x˜a ‹çàåˆù‚|Ø>|K幑OIÄ1ÿ½âð \ÝÏMŸ²X.¬ ·fð'`ãbáñ„d©Gb¿% Þ$uɇǔ¼¾PeZÒ nô A"tXJ¾{‚näA Ïåøå—åex‰ìo]  ¡xü@»K‹?\öñ7cîO&`ñE¼è7þ/ÿ¿¿üñï»÷f­ ´!ús?Õ‡{‹ ç‚4ðù?õ¦»vãñC„$iâÂ%h¯:ÿ CÔKÅ>jOo¦Q°èÄ/þè`øÛyÍ—÷¼£yE™‚!"†!dm3BF€ñ0d™†@È„¡_Jë3‹Ç§¡ÂÒÂððfñøasÑ1EèÇ/ !ŸD³+‚ŒÈ Ÿäíkü-À×°˜@T¨ªoxTU%U[…v|ò%ýâóüw–ד¬2à‘ãÕJ¡ª,C†€Nìa¨ñø(11oD IvúÄo‰Â+j/ÿ‹ ×À5•=Õ¸Òó^å}ò"Zè+ˆ~ü"8ÖšD~äm)⣆IÇl‹_:WëSQÜl~‰ü®‘q*ÞÛ#[ûïç>5±,]'ö0´x||tí*l¨-\8¼ÏgÙˆZ¾VT# I»5·bÙž‘ßþÞùîšžŽòa¡ ÜD ›4ÆÆÂë¯ä ÛX‘/²Ø>•ý ð0¤x|‚Xüì¹]…á 6<ËKŸ-†9Á¿è¿ÉÜ0œ5u*x°Ä)“xŽªn›¼ ¶,|~¯%KèÁøªQD1ùâÔDÏeá‰_䉟 Û3ÂöÅp@<>,v–|È!óËñŽp²Íä°=•í¶*ÅMü®ðcå ¾z×÷¿:ñKCÇǃ,qÙˆm€è¾|ùàcïÐK/æåæÁf‹8N‚¼…Õ˜!ãz-µ¡ }cíieVHðgt¡ã«ÚKêâÔD^a¢EÖš*ÌG)³c“ºL™‡ãû ù5§dÎMËŸ‹Qü[±0{¬àCücpØåﺊ±ÿrÈäçàï“Õ¨<éŠÕ °S,B*¯­×sØÃPãñÉð&ÍNÇ“Dà\*s%SEqð‰]Räx¬žnyli$Aþ²X{j™@.®š[1~o° Ǜؿ¸xì“ÉaœB‘ÄôÙ„0Þ}ÂIà?«%¹ããû¯#M âÙiÕ¸ÒÓK¹aõ+Q™:±‡!Åã‹ã(†ºç¥gà·Hkâ ÷xˆçEbí•—z ÔÀŠ’fÈ1;>¯¹Èï#¾pË–pDÈIÆãÓF¦vâñi-i+ .jåJáÔDméÍ´añøì`hø¥:Ç×Üåª%tÂÃZBGóbaÖ¨œÖQ5ß•ÈVP'÷K#{Yï̡̮BÖ  ¿4¯èŠÃZQiµ›­‹Ån±Ú­6›Å按FOŒ ƒqb]Ð7:áá“ská­.*¯DKQ¥©²¼´Øfú3¥'[TJß°Nz§‚Ý7µ@cÐñKÈæDQBvÎbwCºNŠuC×èd~h±:Ï•¢?*°=4›,6ÓEëÕKfÓXS?ðáƒçßʨüÀª{ÞäÂ/’V+r¿ÚÓ•Ò8:áa¥Õõg*.EWÊS™µ²ÜtµÔa³ðï48äpÊ>à"  ´Bø%f~¯RZ®‘°*„7ZW#ö*¨hwo¨T'ÑNäàcó±ßë=çßw&¡w8[b½õD7™äª„ÆÖAVJÓ脇V‡ãûœï¶ïÈúâË5›¾Ìܾã«Úž³æb^þá€àgñ%"†§ÍCöZ˜ŽÄ}F鉲vphŽÜ'ıÃwÁGÖ;gYSðV‰žlA€Ô â}¶ÅÙ&„Æãkçz×ï¨s¬öÐÃýÒµY?»œîÇÿ1øÐÑS]bÛç=ÛùÖ¢ã§nn×þJÉ…Ö;aäÃþG³”ÂDŒã—€ÀuÓ3HŽàI#ËI¨%ú¶ÀGîçàÒÞƒ7ø<1Ý·¸÷ŒìÏå_V“5ê pÕd°ô°C@<ÐG½þ»Ÿ;tóÎpZxþçv=}¶%u¡kW}¶ËßÜn°'gΞ}mÎ$ßqÂK$JöÏ…LqiA± 排©‰*×€µïƒÂ·T•B,9BЃ_j³ÙÞþ(«á5†£Ç `Ç»Kî16¹çèäûG%'ŽJî52¹ÏãÃ÷2¨ïÎ~”5-Çî¡ç€mê=aõ(ÖnÁå}VL£&úJÅ¡¶¾‘û°¿ %WÁ{\À¾º–VèÁ¦@Ä|Í×{á{÷†Àß=Û¾ze¡t5ôÄã•£CVx(”xâj0P6±k~*,-ß RÜÚ@M” VFîÏNŸ‡ÃΧL!«ó+Ä)BïiAýJ¥YоÐI<¾8(õÓØ!Ôåæœ.üq¸Ó 9‡Óípr¦=³7kU`ƒó9íT¬Tè6ŸÇÁ͹KK­ƒ‡„ÓíY_¾–îC¹qc' +Ψ ôà—Jq‚›1M›5øîÛ/‰%äf<ù8Ø@b ‰=tÁ‹§ì`h½ñ°àhÁï}XC0SÛ©‰5Ô ©è‡ø™„ü±D¤Ž-ëwø  ‡çáƒ6Ó”!@G@'öÅãÓ‡—¥† :á!‹Ç“ë©IG@'\èùáÆ‹Õ¤Ïܤ¿µ²ß]8v·—‡Õ+Ç¢PÐ'^$¶h^ KíÕËG”2 ß#Ñ'øCÑŒO+8dûzˆ¸±©SÁëPø^wj¶¬ƒJ­|¤ ÚÀVn¹Þ¸i’HÅ$¸âÄ ÷à&6 =Ž‚Í'脇¡Æããqö«Æ_ÅðüªÇO-¬^YSÚO¶v-Å›dO™›“ã¡/l»,$ß©“¶‰6iÒÓJAøYñ]€W 6 ‡e°AUäÂõ.]I@ÖAªV^ižnC­Â”u°æG•³ÃWmü¨Åÿù÷Â= ñøb{ò“D˜v«ºi@Ò¤E¨ í'»äz‰Ÿ½ ¬¯Ì±Ä1ÆÊã={¶ÙU(ãiÅ»£½h…ýPIÉô‚¹ôäò+ ¨õž®u;{ê\Ôo ,3,Ѓ_*:|âññã´\ìPÒîЄÅÅÔ¬1ôÆÃǯ1”i‚üÝQ¥•×euqj¢.»ïí”ÞxÈâñu~Áê´{zxn¡Ó¡aÝŠ tbY<~]³zìªNxÈâñõxqFPŸtÂCA׬»ª“ùahñøüÀJâjüDávÀóiIº4䇼u y¸µ›ñ­˜~K)z•Qdù$Ï ¢Sòª~®†/ š o—ÄPñ±ž&É~ß2ÔÈý½nkJ™š’S£ azáaHñøµÞo5çã_u†7»¦§#½G¡aq1%kð0¤x|?áí_UN¼|WCòîܥ«ó ]»à7hD|Y"ÄÌ{]Uä^KŽyGZ¡Ä–¸”P «£¦œòÊñuGåý8W=~_šë«ƒOœàÊ(ÕÓŠNxj<>=¼Ý 8„ÔQƒÓù‹uøXÕÂ|ÕŽ*±8ð^g•\\¹iùÃø˜rO½·é ´Î³‡#EŸXâDa‰Bý8„Ù…µšÿÕ¡È«ÇïCEe<¾™j*£ò=Ôk ŸÞ^e 8=8]¸t†ñˆý‹‹Ç$&‡ò«+QˆÆ‡:ˆÐ—ÒpÌ_žªÇ†þ”¹ÍÛ{\_ÈZi ð^D#E,<ÎSß—åzUõ]L šÊÈ‘Òë¹xcñø Vl¼ùæv›w8þGYöîÇΖìÈÙÿKþiºvÕg»Vdîx÷Ómï|²õ…ù«åcI"_=+ÅÈ3«:‡è:Ï!3:„!ÙÇòxû‡Õü-`¨(!¿Uµá/_p€1 ““p…â ”,L‘`?cÿ+S¨‰'±ð²¼KaADؽ\žé{î‹L¨Êøo+ìsõÀÃãñUÂÛ«Œ÷œŽ‚ƒûq0:PxeZš09¬êºÁ^­°Ì„F ~)]BÄTXYBúá{Þ¦…Äö´×?0ÆsϨªvq¾"^ZI¿O©‚LðÊP¥ë0QÏñk ŸÞ^u øŠÂô^$ØòÕd°•¬±Î•H99¤^UI+²„èõÄôô)h)Dׇð}¿À &"|/$4„›&ÂâO ™HL¾9ì4òZãÈ+Ÿ•t¨ò%)ñû*ú˶I]ª„ÈJdñø‘5Þ¬·A€Åãkd ˜ /zðK¥ã>ñøì*dè—‡áÏ®B†€~yÈâñÙÕŽèá¹E8âÎtfH`ÑŸ´8øáýïá†$ããL~Ë‚XŸ6}Ï}åóp$úkØ’Þxä²Ð!¿#Ι²‡n—{ç>X# O!%sÕënÎ oR»\nœÊqð§´´"í¥×i°“—´à.üJ×ÔúÝ6ï{‚÷#›ÃÈŒ¼-E3ÈŽ+$êb6ŠMRß› Å͆}Bq]±/Ù[l¹©ÞÑÀgiÕG Žx˜›››Ð¤I?š߆»W,ÀE™£ífä2œ•È^ÉÙ*]öJ§Õä2W.ØÔÀœ…ßåœDI²×*«¨V£ÙBDVÉÏÃ!ùü¢ïw(i?6Ö£:îË&Ò©Â{ Zè]BńՑ_zúô鯿þº¤¤Äân'¶xœË 7*‰²_AöKëd)v›Î;Mçå§¥§Ol÷#DÈ‚¨?1bÎ7§Èò:ƒ‚/¨(¡HPUFˆH‚üê†äÑ8ÞB:Œíi ‡O©ö‚eÔ uÄCèË€6nÜxþüyµ~¹\.>+Ê`vØ ö«‡ 9L.›Ée7;­•N³ÉZvÙj¾Z~Õ¤"Ä{ [™ÿ{uâfïò]æ)YòÍâåQä”**š@rˆ!ùãñòU>‘d5· WWšåÔ uÇÃÖ­[>|ýúõ……ÞI ´ÏN'æ!]ipWœ& !ç4 ÝV“ÓrÕ›Éé°X¨¼¬B,˜â=Ù½a½~Bæ©Y‚Aôl/‹"§VQQ’C É'+ºá"†$w€øµ1‚YçB]?–£ꎇÐåV­Z5*33³´´T‰€Ëé4ÆÉ!'Ì -œÓê¶V¸m—Õìch©pZ*9»µÒSªÊC"ïÉž'ÙÑZ=d‡ J¢é•Áæ”(r?Ò}ª‘|q± ²ðކg,T î uÊÃ+W®|öÙgcÆŒiÙ²¥8X“Ûí²#C g¯àÀb‚I´ZÝv«Ýj«´_SV®f©dŸûT¼E»J`8¡«bz•`so¹²Š²Ò”PBòE9â\—wŠ ýcž¹uÇÃË—/oذaäÈ‘qqüBrÀÀ"·Ýà4sLB¸;ŠIh½ŠIh6¹íf›Åì°ÛÌŽW¯Ê+ËÏ!n&âvÁçüáó„O‘E*ᢩù]ùÅW<÷mâ„™¢Š¼]Ù9É—¬±„M¢¬×¦”â½d ˆçºd} Ïü·ºKÎ(b)š@ ŽâñÁŠŠ8p ¸¦jý~ëµ&Œ¾Ã~åW륛ùŠÛa¶õ³8*Í\E¥ÛåtÀÿ@B‹#fá:ˉ³ÔäÔS:P6‚7º¯'Ð÷Ùú‰ÇïСC•ÏÁ-}û½½WM¥e®”6)¹b/-3—WTZ,V ܶð…žiÎPC Žžã'&V±Èè§òŠŒšæ,! ꈇúLµ'‘¸«»*,#Hêî>Mбâ B€ñ0‚›uU³0jvh˜b„ãa 6ëªf`<ÔìÐ0Å"ÆÃlÖUÍ"Àx¨Ù¡aŠEŒ‡4ج«šE€ñP³CË #h°YW5‹ã¡f‡†)A0FÐ`³®jÆCÍ S,‚`<Œ Áf]Õ,Œ‡š¦X!ÀxAƒÍºªY5;4L±B€ñ0‚›uU³0jvh˜b„ãa 6ëªf`<ÔìÐ0Å"ÆÃlÖUÍ"Àx¨Ù¡aŠEŒ‡4ج«šE€ñP³CË #h°YW5‹ã¡f‡†)A0FÐ`³®jÆCÍ S,‚`<Œ Áf]Õ,Œ‡š¦X!ÀxAƒÍºªY5;4L±B€ñ0‚›uU³0jvh˜b„ãa 6ëªf`<ÔìÐ0Å"ÆÃlÖUÍ"Àx¨Ù¡aŠEŒ‡4ج«šE€ñP³CË #h°YW5‹ã¡f‡†)A0FÐ`³®jÆCÍ S,‚`<Œ Áf]Õ,Œ‡š¦X!ÀxAƒÍºªY5;4L±B€ñ0‚›uU³0jvh˜b„ãa 6ëªf`<ÔìÐ0Å"ÆÃlÖUÍ"Àx¨Ù¡aŠEŒ‡4ج«šE€ñP³CË #h°YW5‹ã¡f‡†)A0FÐ`³®jÆCÍ S,‚`<Œ Áf]Õ,Œ‡š¦X!ÀxAƒÍºªY5;4L±B€ñ0‚›uU³0jvh˜b„ãa 6ëªf`<ÔìÐ0Å"ÆÃlÖUÍ"Àx¨Ù¡aŠEŒ‡4ج«šE€ñP³CË #h°YW5‹ã¡f‡†)A0FÐ`³®jÆCÍ S,‚`<Œ Áf]Õ,Œ‡š¦X!ÀxAƒÍºªY5;4L±B FÖ׌ŒŒê=ë*C@z$=%jb*»¾Š¿ ­IDAT¤ ­ô¬E~î:=wO«}‹OLÑšjM[´Ub~©ÖF‡é‰ÈýR5 ÿçÛåp"›ƒ³Ø9³3{þZíÈêàN®ìÇYjÕYºo|îõAüÛ»è5!,=Ü”‡ÐÏÛ´6Y\v'×ÔÁmNÎîpÛñà§{ÿoÇ‹úÒ€u¹9‡‹s¤þàe<¬¯!ªõvƒàá…âK¥•œÉê6Yà/g²¸Í6läut»µ®¬N`¡gðÓf¶#¯N¹Šnùãá–÷§ýúËïV«Õfµ5½f_Ê0#Ú¹]œËœðûír;]~ÈÁ)‘úŠ]ÖÖÐ9ùsî&iþ•8ÿ º&–ç;9éÙGèÙÞÔÛS¿Y}ï®@JR$A+Óð¤ïžŸ2m3¥")`Ý5Oh×ôÌè¤{Åò~àEè>…جɆäÕBj÷EÇöÍŒS©Ó¢Ï¤-Ü*|©ˆGáâ]f! ¨W§XÕ˜?îÛ{à¡ßåŭͳ/_”ß»õì{ÏýÀC7‡ÿoêБ£òV6sпS0ýnO}~(B]ú21&ÉœÊ3•âŒjrXÞ³š=w:¢@ŽãÜrqXÿðz•臯õ±‹‡Ö`/ÇÄóîݾ¼¸Ð(ùEÈZ0k?BÝk7Iów¿´òª©ÅC‹ùÏÄÑ×ë›7 íçï¼õÎñ³—~;ræÄÙKÄ$‚m\ShbÛ¶?÷GŸt$cAuH¨3¨éÝq8½þ<ÇÜn J°U…W!,næ+“ögn.TdÔyBBòÑ#kÃêI“&Õ¹áÕ ?ZáN¨Ûn¹X\yêç•<Î^qÊÞcØÄæŸüsÏáüŒ Ù;~̃ üRJŸ7ÿ¼»]òÏvöÉ#™» Ág9XHŸLßÒçoç“øï¼3Ù&uõºüE’ È!¹ÏÎá…#kW®_çç×­Ê€ó¼.µ+/|¨ ¥ºJ‹Ë-ÍÏóÈ÷ §D 7W®€÷ÜéxÈ[Bž~ðÓæra6ªÂ«.!°]=&Oîa0L΂b`( ÂAÎáÀg é={¸ë-Éå@uð~÷Ïê"C5A’ŒûñÏ¿’0kÐ4ÿòÁEÏõ¡¾Úe ©¢2ŠbÞŽÒž‚ª:{uô•fòüñÐfµreçÝæónÓWÅ©?+ÚšÛ<ÓïÁîƒt1bð½öû*{û©?.ÁåRiURqç´Ä9»zÏ—PnÀòÕɧæ§ÀÕøI[n#²N °|72%~ÖNI!59mR;üŒ…Ï?Ð~t !ƒô |Æ?À“ã R–ŸÂe,ç9%#l“ú(ú_¢=Ãó‹ÀKPmñÖÓKâñÔ ÀÜ•tm>zBøhãÉ•«"=çýRŽCŸeï_ÿí/_lÿeÓöý›¶ýôåöÜ-Ûs²wîٺ뇓gŠô¹ßŸ|•¾¼ºû˜¡ÂüpÿÁø5ž¥eMî2+a 8¼wlÑÁdñ:ß?ëe% ÍK˜%3Ç#%· ð,Is¼œ4  "g‚Ý]½ÁCh0u¯(ç¤Æb‘ÂÍ™HÔ K4®"M€ÀÕžF€áù#ø´ý+Šy;²ez¦Ä~tö¡úÇN¹þxhµX+ ¿»tàËS¿n?uä·ËÀø®[4hÒ¡¦uîÔáÞ‡:}âܳ燴¾ÀåÎSŽX¿Ûo¹ØÆ;¨G2Þû±MÇXZ¥*ÓTåg¬"tSŒnŠL«(Žðx"Ü1Ú9m>z5wš/Þ@*Îx™R©›z‹»¶Ç àžÏ¹»}‡¤Õb!WTöÅ?cdN™cŒÝÇ%÷›ÜsTrâ¨ä^#“ûŒ0>0lpß!ƒúîüáGZmH#fÊ`ÀtóN=Œ,8f ýmÜÐ1hìæ,”ypÑšU’úàF�ÏFì.• Ï,†Ë¨³jSÉðg7ýbû&}w¢Qιæ{/¶º¥õMÇŠ¯þaG§¯r+íןçΗ—•/^üÚÒ·—Éû34ÕãÚuNîÝæÌéÓèÈÙSèîAü´ðöÔ'î÷ØF¡æé“ç<rè}â3¹X8¯B¥-‰x¤‰ËÑ~:EÚôDf³·÷îßÎW·*[$<î(­5¿i` 1Ý0óp9°Š`G'ߌUTi î¶äñ"±çê±ÈsKüÆý$‘”=EqB2fYæ‚2Ó§­„Yɳ|}Rðžó÷wÇÔÅíª7¢,êy|Vܾj0:«7¦‰öP¦à½5bÊÄþ DÜ5ðÄùøÙó‡rvîæÊÜi¢teóÙŽ0ã3~\¿ü·ãÓ&Ýò LÒæ@*~ŠàûDñø‚äÏ!¹?Ø-HܹíÇi¯®^— f‰ìô+‡¢ IÂ~c*ùvfíò]½§ÝºvÎèxÁÚaëÖ¥¤œ•Nu˜‘ŸÛ ÀF_ݪl‘/0?4iÀG[’â÷€[2gΣXZjå­bÏ~C÷lûê•…+¥õžx|¢_1ÔLãªc‹z€ãŠ3±åôx‘ÝòÇ ˜ `PH"_²‹Ç›©@p““!“7?˜elØèÖT«ÙÝ&›þæ£ÌõõäÇ$'~þÍÞ±Cþï ò-.gÉ›nxYb´göfùð£ŠnѳaîàÃ@z}HFÈ׫®á ü¨4ÿ• ×x¼EöGó‡o¿F>ø0ÜÝûûOÇ Çç}rµ†áŽ qÓ èë óW?ðÞ‡OO}¬âàá#·g}ùZº寠HÈ߉_j†_ è¾È%®C]j¬© y(m¹ðBãùÙŸçÖøí&„ZÖ˜R)߀™3éƒ{š6k°=kØÀO>6mÛCêsÚºÆ #̃cûê– |»|oÁ9V>,©k j¶½ ýReóCzÝ2x@÷é¯nTf±%þã€Á*ª?¢ÀÂjÂ/U*¥ÿû¥5ÀCýaöpåâ{ÿ­[Šdª@`ÏO¿M™ùß* Õy6‹Ç¯sÈ% ~¹ùÄéóõ©A„µ}ábɦ¬ï5Þi{¨q]™z ½"µ7 /xÁ†C ¾ú{Ÿ¦¾Ôbí2" ¼çÎ÷¹§ñéHë<ë/C ~½Ñÿy´Œ9FÈ!IEND®B`‚PK !zÔÜÁ#Á#word/media/image9.png‰PNG  IHDR¯Q´­U pHYsÄÄ•+tIMEÜ *•WtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/06 16:20:42 lim_j SGA250167õPûP tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí] \Õþ? (k¾ ¯=®€`AÖ-ÔD”’õÖõ•¦=¬0,Í4)«›ÿ®7-»ùBK¯VÞRÓ5cQIófÒ »>JñŠÕ5ÈDòX–ÝÿïÌìcvwfwfAœY~çƒëÌyüÎï|Ï|ç÷›3çÌÑ0 CØÐW7•;À_DC PŸÍ%i€9È1˜0Dø ˜€‘ˆ"àMbÚÏ90@ÜâGE\ßñù§Gèïžc¶ŒÀ¡£ÅÙ}þcÉïvœ˜óü¤ô½•0¦¶Œ¶pGà®;"Ÿ7t曄™3 ï-HwÔ0(;xÁÉæ mðA$"€Ì‘fCœpaN“5q竚‘›Øã±¹ óu í›Ô!+îÇm3£…“±%koß1^JNIPKú[|úÖ3«‡ dr‹’¬›[IŒðf=÷„X+ÞYþ‘KR¾~ü¥êFÀŸ=I0’_PÈæ”|˜8Ò’[ЦäÃÅ;MºûÕ0ÂPÏ: Á%Ï¿']³,î‡-”W='¬ŸHˆXNAáöH¨%~'‡ÆIâY7Ï5bª_#à6–šögCC-PE«Õ<¿ÿ«/áŽ!IìF9ÅßßÕ3†« çc3{Š]¬ž¯NÏ©ÒûÆ79¾•’®ælmòó¾€?—Záʦ·¬àÆ(ýÀÈ1`vä|J¸rÈŽ­Ÿ <„F eæjbÎ}ƒÓG=7aÙÀƒÓþèPéÌlj ¿gÏÓ·]M­­ƒ5û'uz/îèú™=á”;~¶(á¹5p–p[æÄåL6qdÙß+óÕ­P¢ÏüNõ:jak#?/¾÷ ±yvÍѼÙóô×ÿ€â[Ò6Œ¦êÙŠÛu#D¤F2‘¬YÛ+·vŽÎ‘a$=e›àHåªÅß«@ê°a„±äïÔÛI¦c#…_¢¼³t¹»Ê³¦?'–ÿ#A>pJ LÌž KæÄ:3§ñ76¶×êŠy@ó*Iÿt÷êTˆ)œ”°0áÓÝáøì–Äć\>3ªŠ&bü4Ú 'w æ‘nÿŠ£Ùi,´å“s<óøx¦âY’¿Xóp¶>c&ïÉ ÏLHÈ¤Š Ë­˜93^Q7È3 gtCnÅ}1Tøñ̹NW쎡ºe.Ê×M´Æ£Ñ27’Æ“>p÷AÐ3qâ’Cº)´F[*‡þ^eRSþd¨«Ø¿ÿ;ÐcàÀ~pJ¬W¬bbIbñ„hÛq7\ö@<W™3sš.ÚTž¹sý̳úĤû&­[¿:òäQ’ü÷ä‹Àró ¿OX™sú"¹¹†(Òd?€Ò#O‰É‰Z4%ŠŠJ¾#l>yꢮckQ‹ æQB F­^÷¥¦Ûìôuëuô”ͰbP »ë&^ãø!ÁTÚYPéôšÄûXf2áÚFeMå"ñW1<0ì.biuèãrÒO,U$~ÿòó ìÈÊÏÿÈà ‰¦qÎÌqÉ¥[?§ Wî‘ÕωWZ|ùÉã„ —«UrnyÏÊ‘[ó·&èú·xuù{æïý>5¥OêD® n¿CÀ`häN«š+½G¿ø,—¹|ÇÖ³}z…‘¨Ⱦœ=läYýßÖ'——p¶¨”ÙSHoÄ‚9bÅ\âLz„ä–Ï"¬²ù¼g7ì.§™ÎÚpÔY7¯5²þö>[C›DÀ…6€X\‚$1H„lΊÂ&h¸f1Ï„¶ºàÑÄ$.’úNÎoxÂfÎJÖ<2rfBrºµªÞ£&¼3Ä\ œlΞһ®†X'" p„@-=…z*ôÖ”Ú3¨—²@æ(»P;¥"ÐÌù®¦3·|¸Bb[^Q”èx•®©¾øË/'ÍMæM;c@c ÑD÷ü“VÛ±9€\üéȸqã6nÜÈÿýC–_nß~ËWtJŽÙl1›M~›Ñh[1Þí±l›GÀ;sþ÷óÉçú}o 0iH ±h,Ä¢Y^@:…’@Æl²’›»‡uéØI˜@ÈÏÿ3fÌæÍ›[<Ÿí=sý Q´A¡ÛuëÚ©Ý’ÕÛ'»[–ž˜DÀ;s ±tf&0Ô¢ `K`€Æ¬a*‡Äu`%¶‡_•ßÖ1Z°±HÎÚÀ÷à¹Ùªªª.?ö"wþ¹}‡Îb¼ÆèB¢a¿“ÍÐË5°˜"ÐHaŽåtE—e~x~<]ôÃFS™ÿ]±% 0±hH{ÆRSÚ¥k7éqÖÆb±sàÜ´öÝggÎ!Œ‘1aõÒû˳ÿµä¥‡žy£ëµ×IËÏY{ùò £#Œ&¦±Éb42 M–ººZßDa)DÀïÌánÙ|Ú€ˆ¡}#]í=XÔ¥ë@éør6ÇÊ‹BhYK#cÚÔ3fœ½ô×9 Þz}ÔÓ»¶{¸tÉöœO?”8zÊŠ&Œô)ÇlšÿòxŽ¥>HÃ"ˆ ÌÑÐ<`sÞŸ?] »¢¾ˆ¥ Æs6ÝÁâpü‰»-±4²´i`Lõeeå Þše_›>þ½õû…xŽ„Ì§éW^}cÁü×_‚¤gÄ0U:Þ™Ãmê6èáI.K0é³9û\dý5b0Zj-w¬Ëÿ½ÿ­¦?þ¶ú×_yˆ1×…â¼ ]¬='°…_*HS~ää9x” !ä®ÃMÖo5ø ‹ €€”Ë^d^mŽ\49›¥î¿çf{Ù•9'gfý07ýº[o41¦:`1ûþdÂÙ™öí/]÷‰ '•=ž¸¼Ãy÷c}ÿÞVk´Ë½÷oݕ洧ƒG¡˜ˆ¸!à90ìÌÚøml¢zŸ{é÷H¿ÎßþÆÂò>üðcnòE#8›SWGÇОÐÑ¡³:CÓs£{UÝñÛ…²ÿ[ô91[ˆÙÀ°×’\ÞáÐ8†.Pœ£M•ÞUÃÓNMcµt™˜pGÀ;s Ìžï¸OB‘¦ÀëáôÛ¯¾h2™Ì SžkÓÐÈš#µ9îˆÅÀ\=ÿ9u¹®2¬Øz¶ªêremM]==8,ŠXL·Y&VÖC¼Ë;xöÇ#GŽô¾{X›s@9òŸmɱÑ‚8Í=HÃ$D@ ï̉»Ýña¸Â#ÇMfrÏ`js¾Øž“µâ¾Üaž VXüåZjs&?Qo0×Ô5ÖÖëÍÆ†KfS“o#Ñüw8†F¼À 8ôM.U ‹€' Í¹sG’ÃB~/\ѽï$X×`¼g¼3‡_¾ÑÐØd²|©ßN-L£å‰Ç'ÚM À«zÏ•¹§Ö\¦ÎØ++pÖ†Ëðxj<ê¸g–c‡Ãe†oCƒaèCßçîÛ·~öºª*9¬ªwHU[#Ö~½â¦~ÏH‹yä1ÇÐP?hdF ‚XS[o0š¦ŽŒ565Œ0{€¾« ²˜}dŽ n@žø„añ 4±]PÀÖ7ÇÒ×:†sGN†ÜÔO°F"^Ç7“8tæ¥Z6¹]P G—¾ŽÍMf“¿ŒÅÄX®Ô›J°™#_Û”õæXb¨zü¯oɶ’R†yÚò˜Ó²€À0ÃÄQ}ZV¦i@žG_þr"m¤À…yh5¡ýúö¬»™‘WHl3µÂâmÖ`N›Ù¦@æ´©îÆÆ¶Èœƒµ)œF†Üs¹ÚTïcc}GmŽïØaɶŒ€¼QéE9tR³= ¦Ðc˜O iì)ˆ;°ÐuÑu[ÆÛîOÈc´<<ŒÎk’Pn}¯¥Lø Ú°ñv|ÅÆŸ ö €€l攕[Í52 ¦ÃA%ür–‡Çä-Àþ@T„€¼çœÃáô”Щºpú7*üÅGB祇.L]35tõ‹¡ŸÌý$3þVg†/H׆—½)DÞd5LÎHæ¢ Sÿ¥%¢ÉŽ„’¥ý%æ–7™_ e Ò*)åhµ³º\<­Î­Éü¦9²¹WàÜ [:- óêõ·»PјfîêÖZÑ › 9ÐŒ­VKà–(Ã!=£ÿ´à¢;h  ÿÜà®#zîÛ„Åq§Å©ã^”Ã=zúæÀôhÙ¥$‚b1›Æ[?›¨/*–RJbÐWw,Ë*¼xì¦1ó&ëVe‚-p4Íc6AJ–N„Ö¬L+‰yÉÖ¤ŒUº–àŽ<ÀE ’¶p˜(éæ(Ø@DÊfŽ­Îû Ä=ê¸f..*HŠ‹áb£§OOsM¿Jçp¡Íˆ×;®ß´•+[Nµ’¥ó€váÑÓ×f‘ l7 ;ž›.1›UHIî&2v8ÜO¢£m7•´-9Åݳ²’R£§ÏŽwÀ ©ˆ²2µsر— üˆýW0ÃõVÃs“ÜîŠü›wLoà«HÁŒ õFøNŽ€¶ÈR«èæ‚¥­ä®g¸Ð 2FqÊ;»–¬À<«_õÛëtw¨Á¶Æ]xôð±IÇN—8⦇¥k{­Ù\ä[+`'/ŠÒ×¥‰Nmq˜AMÿÉ“Áoå”wx°¶®á´b%»jâåÒSn¹câ( UvÔ\æ8l‹Àw¦á:lþ¸¯N»À‘¶’¡î \ŽŽžˆû=ëSgÓ‰\E1 AŸA’¨óãdò& Ë)˜Q4‚ ×gíwz·N²ÝÓmÝkU*cƒ>cÕ<›kQ0cYËÅé4ÙCžpPÃæõ鉵Œ€Á((*v4DÐY³©è’MH¾kkÀ²Ç÷²kƒbŠf;ÃÅ•±µ¥Ì ý†Vp,àŠAÊ•u×êr¸¼+Óœ{*o­›mŠD÷Š\•WÍys™Ãk¨¡² ôКÃ9éúo³ B+…­xðhÂ’„%OÉécÄv3žá+–¢r’²^b­ uWÄoq¶jY候¶`5:`åì!)k-û`E&±>O8Uƒµ‡t«¬RÚ$@&G Žå{ÈÏ¡ ܱÍq³ro‹ò¶F‰BÊ–wׄµ®³Å:Á¬r¹/ªÛèøÈœ2)¨"‡aLš `bÊô¥ß®;qxoiiyÕ^ý¹œE‡µDücÐÔÛOZµÍÇ!G×·ÈÜüI÷PëxFqV’ôšè3¿5À›úfÎ ¥W˜Ý&HkÏé,_¢Ï7–òƒMØ{ÒZ2‘çnðm£üʯv _˜sØ@-5|PfØRjHÏ)-­4ääœÈYWz¨ÜŒÒF„DÞowÂI¬këò–Ú|zùÐ/½jmû,íìŒÃmÉvÇÎÛÆ»ñ» ö&Ç-¿SDÚKà­Ä¸=dÙÇ3¨²ž%ØRÙæØ;6–ÞÏyãZÔ"V;(M&?—€|w!B÷r@ÏfKx 6å²îcTq]ã® {pn»«n@¸ YM?°ÕWÓë*÷jœûœy'ªBÊ s#µ/Ɔ¤Ä†ÎÖ—åî­,Õ’ª°ÝÜ{f¯Ñ…Ć”–W†hÝlNZ¯"ΓÑЇÖ¿‡ñIê¹Ñ@d—A-î²cS·›ÅŽ3XGì˜y–ãZzCÔN p³ŽqG(¨zbQ¼T›CÕ²Ûü#êð;„è¼ÈƒÍÍÓxxE%$ßµqp –އr OZ“⋨`{Ã}8Ñ3¤îšŠúx[ÛÙû¯§lƒ-P•Õ£S·É!šÄ´)vä õÙ®½à|¾f½>}‚n´¾lÞ¡±áZðÕô'ª²á •†Píì ‘w†Ó÷8ÙÙ'öêK#µe ·¤{ˆ©W  Œ]P…_\Ëó⊽drSJm!4Úà–Ós„$=‹hýÔ¾º©öJeϾ)--‹ 1œ¨ª„ѳœr`N%¼ÿ ‰ÓjÃB#YÚÀ³|×PN Öï¶~ Ûzð9¶Ìä^-p…»@I½¾8º¡Jó‚uØ®ù¯°›§FsJËc¨ &@ƒÙ9 3Õ‰ цªuby±`ô‰p]¬¶¬ÜÀ4,\î hsTIJ> @ýOŠy(BÇœgÐ÷+›ÁÓá~u©!Iž·ÆoÑ¢œÒbH"!™£¬Ï3‹8TVÙAÛ!6T›™é6< 8PGDÀÍòÖìr3GEf:W‚lñ:&ù¾Œ­ùØDÀä=çøP¿HÌØ=öSƒ‘Ô,5õ°»”…40¤~-¶20P˜1?ØÌº°8"pEhUæ@Kbn‰j2[`ïF£å»E»6¬Zúâ×ÛkaËuƒÉœÍ¡ŒæÄîï‚̹¢ýŽÂ›‹@k3§øÔYP¹Î`¡óÚªM AeΑj3M í»[ M[nnC±<"Т´êsÎÜ'CŠ7 ¿_?=TÿÙ~Mý¥ÇÇbþ½iÉ#oUTê.TÿµB÷óQÞð^‰{xË.ûÛu%•€õ¥?ýÏëtmÁ0²!ЪÌ-y^0-ë?úçÇk62 Õï­øîÝeÇ!2ôš÷ò×ÇšÍ䨉S‚]×>¼N°Í1ÔÌ$;’‡H§nÓÙ5ìÒ‘š‚’Y>ºMwÌŠ‘þ†€Pn˜ù«é5rùÂòE‡Nµ{ÿ¦‘+Ý%ôZp¦l_0pJçV0Rw‹·N[0Ò]¬x Weu A4Lb¦T¦X:˜Æ­x ÔtŸg,.SüÙÌéÞ½ûÈ‘#7oÞ\\,{%¬‚…>ç€Ááþèælvíåì<çÀ€µ²K+!'·ê„® !ÄžC0RD¬P4ç‡QkBgàsks`Õ Ô“èqA²6'›9€P·nÝÆ·aÆÊJ˜1-#t í ´©lª9\{tgÕço·ý¿'.ªMfføkÿ¾ÿ•¯L@,¡À}¹E|1´P¯qÂ6ŒãVHÚì »¾se»†‡z’ȯж… ¾0çÒ¥K7n?~|hh¨,ŒîŒ‹03LþÙ¼//¿ÝÐX¹xâʣǶÿo;ðÆL¬ '`‘uÇìë6‹K¹e.Bn‘ÖòÖOxÀ×$`Ò¯õZ-˜ý‹öÚè_ÇW X+„¡" ›9/^ÌÉÉ3fLLŒõÃiÒ‘»p³™Ùw@“ûí—Ÿ}þûÅs}ë:îÙR¼å—ò ƒï¹å× «¨í"øÑn.á(X¶¹É^+»’’ºTŽ‘7Î.8EÒõжâºU`O<-éªÍ6>À>í°ñ  V +G¤_þ’SÞ¨4´zÏž=ðœ›\®½öÚ¯¿>ðãñãhÿ@ç‡JnþoxuTÈ©Í Aí{UæåîHtû§[óÖå쎎¼IH8u—œÆ¢Ùïr@0’ Ñ*ÄM´P”@q"…Z€q~„€<æôèÑÃç÷9àãõìÙóÌ™3¿kOâ§K—/o ¹<.µsÓÀ~ TSS Àꆠ äG×—ÿ6Es’’šuYmÉ1;UÔ6xWBb—¿N‘\’ÿâŒ-ó7|_êoH`{oðׄÊ!ð&Ó6€k¦Zˆä*½ÌüPmyÌ|Xjf¾&Ôýé…ôíÕ“}ª9³|H—λt’ þ”Å’šïŠ l~â÷¹†¾ò¶e%7ªódöÒ _^²›JØõ|–‘‡¹BÌ;ËK¨}³ wÔK OÉ‚b¤ïüÃÕùÏDÐ$Û/<¹dÏå÷Ã˧ 7I6s|[Ê®c¤¯ åòó~ )»»ªê³' Ï¸äÝÓá%c×®c>²Å€5ÿýg#!uèp¸îGÞOÙã¢â3 s¦¸ˆ¾z§µ+Õ!Ü^#ë¤Ñ3zmØbùÇ\œ=Æ‘$ ß&‡fÂà'Èf´[îšPø`åŒÙ,}M(—ßñÛ#*–?]b ŸÐ¡RK²Sb6Â'E*¾3‘ÅÙ\Í+tLMÇD¶¥˜{¤þ%ñ£/vñê,ÉË)Œê!"Á‘Ñ.ŸW‘»|6?€à'— 6ƒEÀæÈ] ·\¸n H_Êåçý¦L™G^ëóB¾5ŠÚø”¥äÔÁĘˆ,Ù¹í \Í)tÜ£g,Y»ð=Ó¶‡™¯gžÿBŸ×ȼ))bíòy Èçᓎ_qN6s|Xjw¤¯ µ±Dfä^Ø@g‘†‡‹æ.Ï/,eê\fv?ˆ˜z:¶\¾œ_d=€êiÙœ-ÛqÊÂſt¨¤Ì/i™”…|ádÃ…\*Ý]ÚA¶2ÒÞ?Ë—Ï«HH¾U”_]:m¼1òVÀW;†*}M(|"',,¬¾¾!6öVXZYgÜþcôÁÒ¿ÿzó¯áå5V¬¹¡qÁ½ó:¶'Ƀî…5¡Ÿäì†.Yòºc÷Rÿè¡k®éP^^îÃtÿh¾´Â÷§|^ þÊñãEôÿæ›w—5¡Ñ¼’N¢ßŽ3îø…üþ5¶Â_÷&Ô‡5¡AAA@ƒ  @’þæ›oÀ«é}™¿&ôÉã ’Kò[”­ ÈCÛ_Ñðv]ñ¾„ÑßË55»t ¶C6¾äøþÍßáX5]9@¡QQo\qæpóê/UT´å™ÂA]CBp‰·«QMéWœ9\1xѨé¢@]% Ð̱«û„JèÌ¢Z•9 ëµô†@k3GâšPojc:"p•=‡ 9úJ_êV |Õ™¿û†Ë©svºi”ëV¼]£¸}ªÜr¸U‰ˆ€Z•9ÒׄzÐØ{ýJ4÷½uÁè i€Ï²ËÚÔ#E½«‚9üyÞškBmèI_ê·xcÃüy6Ç·5¡v¬|Þ'TmÖ&,¥{DC°¹hœ¡€_رƒÝ$ÄÃ.Žý@¹LüsiÄ•Ã?F@sÖ„:˜ãë>¡; `FÑÎ+°ïE p;y²¾™è>ž°覱ì^Ì[ZB`SªxØø“Û^ ž%xT ýÙÌ öWiŸP±NHÊz)eʈ "sCDº­!k” èVÑmFa¶U:×ᱚ1¾ # ›9€•Ü5¡vx¥¯ uëçéß+Ú-—/toikÓDG˜µd"PɃ‹çK=XÆ¿ð…9rׄÚ“¾&Ô äè^ñŽ]Ûé>Ÿ#XCÓ¼RÉ*ê¤9n³C™ö«yš`iµ! ›9>¬ µc"}M¨;Œi+‹³ˆÍ±:–U,úèÂ/ œç¾TÖÊØÞûÄ̈ŸM÷õ*Á]SŒi\ñ5Ì\:›RIDAT¡vaÒ§ô5¡ë³ç´ ø±‘ªBà*¬ |pŸPU]$¨¬ä½ õaM(¿~Ü'ÔKo`²zÇœ–j×ä´øk)i(h}d´¾ŠX#" @9 ìTI sTÐI¨¢@æ(°SP% €ÌQA'¡Š D™£ÀNA•T€2G„**dŽ;URÈtª¨@9 ìTI sTÐI¨¢@æ(°SP% €ÌQA'¡Š D™£ÀNA•T€2G„**dŽ;URÈtª¨@9 ìTI sTÐI¨¢@æ(°SP% €ÌQA'¡Š D™£ÀNA•T€2G„**dŽ;URÈtª¨@9 ìTI sTÐI¨¢@æ(°SP% €ÌQA'¡Š D™£ÀNA•T€2G„**dŽ;URÈtª¨@9 ìTI sTÐI¨¢@æ(°SP% €ÌQA'¡Š D™£ÀNA•T€2G„**dŽ;URÈtª¨@9 ìTI sTÐI¨¢@æ(°SP% €ÌQA'¡Š D™£ÀNA•T€2G„**dŽ;URÈtª¨@9 ìTIhÓ¦¨@MTP…úl…©„ê JGXƒÞšÒ; õS&†a8Íúê¦*SEÔ Pvíÿoþk<žÎ3UIEND®B`‚PK !މ,LVLVword/media/image12.png‰PNG  IHDR ùî¢v… pHYsÄÄ•+tIMEÜ '®ÊptEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/02 11:05:39 lim_j SGA2501672—:< tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí] \TU¿( ˆ[¦) ²X™…™¸à¾+h© jh ¹•[¹”–©å¸¤æ™•¢¤¨©¸æ† ¶Xî ²š}îÈ2û|ç¾7Ë›yo†d€ó~ãxßyçžsîÿÞ9œ»¼{E/w~§†cmÂ\2I1¦lتL°s©×ˆõnði ÄqÀ6P5ڀ赞ﲯ¸5ªuy˜@ÛG àñ½*sY·i•çXÛ½›í7b´0†ü~áWÌ>ÅØ“‹ƒøKc¨!@*ìoYR\6cšÅAo ®Õ%šŠ 0±›ˆý`šÅAä7h²¦?œ0¬kÇ6ØtDÀöøãRÚúïù'ýžÖTiq¡TRTÓщ¥`ZÏÁE}ܵã+¶_¯h!"€°œ½peæ—±\W³¶3¸9–‚i=—²!¶D¨\txK÷³Õº6ŒÝØJtЫK•¼rU-Z‹ ‚ÀœÖÙUç4:8ÁæDD r" "RqQÍZNRq!Ì7`ÚÀÁɘZý5¼vXŒº~_ügßLlÆžq1ªo{ríH[;´Õbæ€Ö®n­ÍàVŸ9=ÆïÕÁú'Lò ü^­ýò¤Ô[Tl ö²#0{ê8cBV¬Ó¯rBŽ'ìƒO¿€¡ðÑæ$Ȥñx7æÂ4]è«» ‹J? BÚDþ}CUtãæ2Õ¬Ð-ij:ûÔŠßIáµßŠJ+Q µ§ýß«ô9“–Ïù‡c°M}ÀZ®U·ú¦z…¦ížéD(òª¢ÍašZHýÀÍŒ2š ¦MaUÍŒÑû±éßðÚp¿Aƒ»õê í̉#líCnôÚƒ¾$Ö»AìdL vQµ¿IâóÁ”°¹ë¤-Ÿ N§ÈDÕBÙ|_%±‡nÍü°¹šóèјзö]gjÚdîgýРP”Q¿,ffÔÏRþgK•ÔwüðAø õA]BÃßC†€– ~'s{îÖ«% 1hÃØÄXOÙ¿®Y&}2Ü9(|rÈy~à›¾ÕÏùó ?ÂrR†¨#jºßÚ õ'“Q'òNŠ!Wfù¾"š¼5ª›VŽœ™/ê¶•6RZÏœä;o #>QK®GÎ쥱Mž0YmŒhòI†1fí|ÖB­1<6]AüÖn¥YÒùFmf‹ÀÚ`ì[‹Ë  Ï$ÆÎtøÖBÁÚy äð­ÊÐ4U (Á˜…H·ýì70€ë\àˆz–ºÑÒ¼kÖñ?4»–G?1dè°n={k£Þ­g/¸à䪧QÆn´‡Îâ ÁIþc°z ozéDBÒ6¬iÛ릤xå’÷VÕƒfDr Ü÷kßÇRû’±ÇÏï¨Ôu3=)ìÅ]o>8æC‰³¢ú1%Ü÷—àÔc©ž0¨å·ê€É9$%¼á­i^xzY´÷@tÏ >aïÞ°ÙÇ|ÔÆhíi5|ÌÔøƒ“¨Òƒ±Ê®;Ü_ÕØuLœ pmÔÔVjc®«L½¢Që"fB3ä±yꂤm˜ÚŠHZj“6ë¬ÒoVº;zú`2øšÄ2·Š~°„h¡àÕ#‡g•Ï®Y­—¨ŽSÄè% Aýÿ+Wúõ~C\øàÌ™  ¥[·ŽpKL4cŒÑ ©UƒýSÇ$Œ³iˈ± ‹ƒ¾ƒ“Ýgžårs–_ÿY4ÝóÐÝ>”DÏà>ŽÒ×/‘ž_ô¼î…¸÷ø"dSüÍûÄ2Dn`˜µDpÞŒQ‹"$ä5šE+‡Ê”S@ìùZبĄ¯=È_ñÿŒ™ó5CT_j¶€Éc>ŸôCZÏ€´U›|?Þá#ûK—=i³hô¯ »g$È3Ù“ Éd÷õ÷À°Ý¸~Éw̦ >††-ØMùhÊfQ ~þ?]¤wQç8§Pô©öVÐ$îS j úr(æúHöy®ýOóý¼£R'6arèUKÁÿžC¶#JúN7M¨DFÔ{j„~æÜßÇŸëÖå5wüøiðqlÚˆtJÖŽ»©çR™X¦Ú¦õœ6ÏÈä%4°*åu÷úBÙÌ¿ðJ‚WÛ9 w‡l¼ëCv_6ÕGų]0Yw ‰Ä^³ƒÆkš |ÍhrèîŽr7jÀ:Á¬”h&e5ÃfÏ€Ô»z}Þ&­}9&dܹD<†—Ini ¬j ¤mœ/j’¶}Gt£åÆÏ!]¬®åxRêñûõn߯¯åXó@Â9±XÂÞšV‡q‹þœiÌ´O=›ú’_㓘ûŒ„Ïwô®þueÄ»Ëÿˆ½ÄÎÏ72Ä’.Ÿþþdï/Ë÷’àþlHÂÏÐdælY£"ÃÚéyÀÛ¹}Ý(…êåçÒPøl`Þ¥Ÿ–3IÛ¸;†e´Äf!eM^z%cÖ¤„4æYºŸ.†tt„ByÓŒXå3qÉÍ…ž—ÒÌBظt|bsx7°ü8;pyðÈ„¹8Ç;6Á™µNãçО`òÍØÓ÷æ:(€ 1Cd9gŠ2Cf3#eÚ«íðþ!³(½-ñ øâ•@2[e"Þéóf¤/yIÝ)ÓÈ⊙­šüD|{†q£'®*H °µÞÞS4:\[û…cÂH2“ôÍBn¢¢"0öÀå;ææÑ¶L†$}( Ÿ Y˜¢é•Cdšè) IÀìO¿5ÓêΘÀ{ õYDLìFçà´þ»¨[»êƒeÑÝ_áMv·.SÇ–$Ì ‰¬ ÞSËýBo4Í¢â#3"P1tV«XëÚ Š©YË™¥Wçt©º¨åTÐÛ½2fN%Ѿ$ÛÏ-§Ò¡XDà"±›V[uNÛˆƒƒÉ‘rð·ÂÓ åÕ2½Mè'pGÏCGŸ±öò*Ê­ÎàÛ ÜQH+vQ«s£Â²#†€A•Y¢ƒÃ´DpÖ8P1"PÅÀYT£³¨I·ÛU±ÊÆâ ÕÝ$ƒ¶°8ÊB\5hÿXÄꄎÁqcXtpÕ©ícY«ÕyΔ_vtpÕ Éc«8ÇaŸ…ƒ»’b› Ìf ³M¸ÐªJ€€úXTúƒæˆÔj.ùU­ü'÷sr®+ìíìe ;Q ©Äžˆ¼½Þ¨¥Y']ºZÅ!ºîóîµëºÞ:¹Ô«Çt™ÌùéÂ?[¼Ìwçƒ/åR¹\"×bqé,Á\ˆ@UBΚ¡§J˜]áª}ºd—›}}jÇ‹J;¹ˆØ¥ÈNI”¢u)vÄå{b¯RÈ•öĽQWg‹ZÉóžsR—6ïâØ°±—æý¶©i»t': /ðnÝ_êxì·_-ÌgŠ]öÈËåJ™L)•*¤R¹D¢€L¦Nèðtð(GS‚ð"ðÌ ó§Œwƒ Ó%;8•ˆ(TÐxW)²S©”öv"…Hõ¨OëÚ †5á_âÕ»¯8{³˜šùmg_мK8©õz=¯–ÄéùÝj…e[Ç>X¢*äb¹D&‘‰åß$O“‹3zß.ÉLË׿ìì’ž.™ú€ÿ*–ÈßwÆ•î¿×KfKEFD Ü€_©LRß’âBÇÚΘ6ÇÁ)o>p]û÷‡Át×=öR‰¿¦´³·W)E¤¦H¤ÌRßµnCó+0íøÇçÚ6|ù§¦}ŠïŸ½w9ÉN–Sà­P(U ø¢—J¥ÊÎÉé×Kx ðn=[w‘ÈŠ‹ÅEo¼öR‘¸ õôõœï™/Á˜µ9;“âbØÂÐÐÁw+(’H¥w³{yZÜ¡6¦鈀u€Ø ¼+³:§Kvp"&®âz7¸íÛ¡¥A}œH½êZ·›ù•äÓo>Çz…ÿtnØÄ£]O¥Òe¤“¿B¡’+T2ø–«drÕˆñSŒ98ˆÝŽ$'É‹å~¯·>wêO¹„Fs#-`ÌZppðˆqpõ¸HQ‘ú Ë õnERˆàÄb±B¡ÛU/)ˆ@E @÷ƒ“IèþépaºdýD@ "8ðb¦*Œñƒæ_÷³/7n=¤™w»6zé½Gw3çNŸ/SÀàZyÔ]½dÆÇ£ûš–)+–%'ý³¨Áíúµr%aº¹æF‚|ù upL§¾ô¼ÓE-,*T(ÑÁñÁCJ#Àz7IqcmL›ã•h­ÄÎÒZý§x$)&¹ÿ=ìúñzþ#ILØ¿lõVÎúE3dâúõ~Øuê•V?4êñ®1ùï¼²hÌÿ] t©]ûîô0ʳÇùb¥‘ _2ÛE•H$ì#ï·…ÔÁ)R~^¤ ¶€Ænl-˜ãàèb`6‚K¹å¨PÈa@FÿÉårúOårøßéä¹T¹TblÈL°Ö¡/éR§æ¯G÷³ãnÓ&½ãn¾Ú4§_ÛÖ¯·mþû¹¬û‰nï>ž “ÓN©BIΟ8±ˆš;=\ ÂSÉËgŠ+B Ã=tèãÃSŠd2pg4d“ÑÀ&¤Ò@Ïb vQMaˆÏ* ŒÝ¸qkÉ–‰ÀÅ΢ÊdÒ A=Ùš?"•©¤Ð!$D,S‰%J±TùîÄ,sprð—¤ç€·@Ƚñk¾ýŽþÁ;ÝÛvõ©]§Nã–Ï9×qeO3l1JF‚REÍèÜ{|3‘`4—ytˆÑPP&tQÅb"•’¾=߸wFÛÄR©:6ñ8ÿ±ÒRppÁ â‡ÄŠDc7}‡’œ¬ÑÌ¢JdtÔ‰í ž>¾Ñ×ê%+qÔ¨±–V,DJr…òÈ}4ÎR¨&¼7ž ¸NÌß ²÷UØ9?_¯qt2áàX lÇi<ÈH¶È0˜d€ †¢"yA4ñ÷Ú¼ŽŽ5j×r”HºAø†Î"H‘ù™!€ãnܶd“tá6[=2ûÆ8ò L®HU3&¿±[±„ â¤4‚³´322úmçæªÝè¥z_+úKÒ±ë…êî_¦:ù~àa|+áýñc#AVò°·G[dŒÁƒ{òDZTDçm_Õ¾ë€Í1?Ôt°ÿæÛMw DJ9qvÁY+2?C0ŽcÁ.ÙÁµ~Uw¢mÊ_WÀtîEÇòî_½AÝ£de bi BÖ K»óŠ{³:žm“êÙoÛ(Ç=N.nÙºn~Á“‚ÂY ·²îF‚ðN¬iƒiYÁ¼ÆˆÌëYÁCÏxÀ»µïÚßÉÑ¡–£ƒ‹³S~Q¡£H%‘IqÕ‚H¯8p β18nMIÄèñÁ ×$Êqï†j7HHdGpüfPŸ?xD“ÿÒë9<ìîß§é.‰W¾ÔáóØz;8V?äK6Ÿn±°¦¤?ž=«xxuÅ¢ùµís³nƒ»òÇy¥b T¥„‚cp惊œÏŒÝX ÍƒãV‹¸¸¨Ç°ˆr­¨Mkg朇.5švë߯[ÜRTX²B~$XrãºÕ<“ø×“'ÿúºÂK[£~Øt 昩cø~µ¶â&dµ'R¥‚Î ã…Ø8gñœ¶þ¬ëG›Eꕌ·›KH|™[hïT[/ºÚ‹ì™Ë‰Ø´¹ýÈ0XšbbuJ9iF±ˆ€uÀ8ŽÅ±ä18ëàm¶”yND½Q‡Ùy@4à7†};úvìÐÁ6›ŸÍf›p¡U•ˆÝ´vbúY8¸JÑ,ÐHD j  _ 8˜FW5Z5–`‰ØÝ0-¡ƒÃ"P¥=…òȤbøÆ´ÈoÐdmõNi£ƒeUªba«"°~—îÔ:ðk5jÖb½(Á´á,jhh¨UÁGaˆ"PŽlÛ¶Í@º6vstªƒi좖cãCш@E!€ó§,ò†œµêÃ'(I+J,%be~‘JY¨$Å*RßJû‹é+¢*Å›ÖRŠrDÆÝ0vƒfÀâPŽœÏ‹ž-¼[4iÞü…æî^ÿqÔä|Üë¼äîЦyÕ´u#íšú ø[$"€XŒÝX0YÊÑÁ¥ÝÈÈLϼuãö?W³Hñy±Ã¿ç2Ÿ&fÈf““Y$9‹\Ì5^¯ékºˆÔW—5éÆù„ž~_ÄÍ£¾…ÿ .‹ )C"`Sàü)wÜâñõÒâúÀçÎÎ?Š~>#*zønPÕ©¸U£¿zð(àï<Èþß á–A›ÏÕùpÜ sm#‡ 3ZD´‰—AüW§Ñô¹iÞfH0p—fä@D ¢À8Ž­Ë\rrra¡›{ÐSèNp²ÁŽï·ü³KUüäÛ ¾Y{ˆõ¾=¾ãe…‚\¾vC¨¤¯ Þ&AµIëý¼§M3â …²# ¨¾Ð3틞·\*Æ4 `™ƒËÊÊ:xðàƒ¦¶fc—L.Sªœ88""-èƒk"8–¹¸ÆèÅ¿Yz–í®Êá±à•~(.9b¨€Gc"©Ãêž«¦w)H”kœ¨ë ¿ÏDŠÜ{°™$O÷‰Ø‡ÆÅàDÀÀØ­…RŽÁõîÝ{ïÞ½yyy¦ëR.§R¨à°œtµêë4™Ø®}dC²ˆí®¶(Œ¸kdk9ÿÖ>ÂÒ“§/!Û o™¶šLÕŒÌ …ó Q¿ïÄôXU d =¼’̵iôk5]Z]H)$iˆ€m ±"fÞgÀ´e@Ö¨Q£aÆíÞ½;--ÍD…BUG]Ñ3˜égÜÊä±ËÎÝϼ#ÿ”<ýߺÈ?nÔØè6l“°„ä«FDû¯ÞÆ ›yO›¡e$  ¦ß¼Ìh0°™ õií¿9ç°BRåAã8¶®,vp­aÆ#GŽŒ}ô葱‡sSÁ¯1ŽFpô¸R] ‡–6šƒ188°F »w`ÿæ}%Ì*P·Ä»´DpQœ‡”ܦ•©é„uÀÆÄlà=ÏщPðxØ+åŒ[Gc7nÜZ÷ðáÃ]»vׯ_ßXm7¬_¼Û#YþŸ—Ž<þåËË#÷ÿ~í¡ø œ¦øé©sOÂ1FòÒðlsǹ¤¯Y£öwÉq‡˜#zãt|¢w«6ÉÚ.,ô8…ÇôXõÀK6Óž©þ^.mµÿ囆t#6#°0vck¢”cp÷ïß1b„‘2Füë­[(Tªã‡Ÿ.+†y´ÐM—.ïÏÝn ¦à´h£þ 2ÃÀWÚêËšUk¡$P=çàßæ* ¬D>0J¦ ÚDGé`b€ö;/¯N35|Æåeb6Íz9P2Ÿvˆ ÀI[ùõ¢%! ’K%°kÇaZdñ«ZIII0½TÓ@èÕåÒ•ô_ωþvMl|¯³ã“¾…M>Ù“öog‡þ!ovݲ×w­mTí'Nã?mýñ9oàNˆh$?•îSŽÖwôT¹ªé:žR¾mHAlˆ_OG¯êœ¶¬‹Ú¼yóÁƒ—èÝ4hpèÐá®\y®æ:×ÂÓkÿþ\¨w#ßñ®CMţÇõUY˜»}g¬wK7Ûih "PåC)Xï†iË"8îè½Ñƃt^^^·nÝúOZp#o\ÖȧO÷Ô{:²_Y·Ž¾ð(?ÿ dèc–4£jð"€ð¨Îñ¿ì–Ep<0À»Á³Ý\wùõò±ÖׯÁ'C€È>2šÓèè)òß­$*Ž€ˆÈe"‚upùðiË"¸R4Ž÷ù§1 "€”Ë€§c®êœ.¯®ÔƒD ,ˆ ™18Æ»a\YÚæEl\ÇV ‹CyuQqG_›køhPõ@@»ÕrvÅt9Fp¸£oõøAa)mŒãØZ)GW¦}9úêíÎk•¶ÄÙÛWï¥z–NI¼M.©=œ-šà |ß*uB¬Ž»qÇËËÁ•uG_íF°‰Qc›‹”ªiÐÞàí-v?¤´ 8ß ØL_»ç¯E=ômöÁá÷M°•Ê"Ì„XŒÝX0Y,spÏpG_›´ÉÔ«¤¶Œô5KÀ‹i…{OÛ/­®Ôì]bt#:}-f²Yh²#Ö@çO¹1¬e®BwôÕ¾¯ÝÆHo;_xM^Û¯Õu vëåoLwg‚MCt;÷éz²V›ánÀÖh¡((3DZZæà ϳÜÑWã=Ô>GwjŒn#Ív¾ t‡¥Pf»_Ø‚7Y”ñvë…„_°Í¥nç^Áª¦½° É/sÓDˆ@YÀ1¸2Á=Ë}™­'aÇpÍ¥ž€C´—f;_ØÓˆø2ÛZÒ4³“·^x*°]°€Ï3«… Ê7+'2!å„€ˆ‰Ýà¸úÁ´ÅTK9ïè ;P m4 á\a¶Þ…(Ío»õò¶ ¦VÓûýšÖ¥/ß4/>EʹL JÄ…t? L—ÆÁ•󎾃>¦›Uòv O»šÌFZÔ%™×Lvëe· Ö ‡>æt²úc3¼ÌÑ ßœlȃ”;8ÇBl±ƒ{;úÒžiÑlè k:˜“fX¿ ÐB¯¶17‚ãíÖ …¦Ãh:átcvñe.#ÓŒ,ÝÎÁx‚C¹ÿhQ9`ìÆ[E~ƒ&kQ›2²Chh¨ á ;;»¾}û–¸çeóæ-`Gßé?ìþÛurã{ Ÿ_kò‰“ó¿_¿¼I»£¯BVüÅÒ•) Ñ&4â#D0À¶mÛÖïJÑ2ÀoÛ¡FMöDL[ÁᎾ&š>BlwãÆ°–½l;úÚB FcÀÔ){Áœ‚™m€«:§-‹àŒÁʧ—ÃŽ¾|%HACŠ™ùSÖ»aÚ²ÎK3îqG_3@BDÀjTçx_vC‡ÏŸºòèZ^ÁãB¹Õ GAˆ"`Uê9;¼ÜÌ¥Ç+¼“×ED!—Â"ßâ‚'µ]êbÚpõ¹6";;ßu] }ŸU+…!ˆ@éÈ/’_Ê|¢R*ï_Nà΢RÆ\öpB'¦aÙ㫹aýš‘TQzô!g§qIÚüb))+ó‹TÊB%)V‘øV’"Xm­žûOß,“&ÌŒT?j×rèôbý˜ãYÏóÊ®‹Ý'Ž«®iC'•«ìí¤ÖèžÂ޾2…R,SI¤Ê ‘Gc7¯ùèôþ©ªX,—ƒkƒ31¤ ¿FU*tp¼FŠDÀ$*©é¿S"\tJ»aZ`°S–ù ›¹£/O×á™.]6ÞÒÚ`p«oÛ­5ƒô˜éÓÄD\ô>ƒÖ§ó´X¡Œ(¨@àw*x±Þ â8xŠiÃ@aëL;ó‰°£ï¨AoPþ¢å*i¡¨¨àÝ ï‹[½òÆ»ËÏÂT†> ÕÛ¡AÁ¥’šÁ^·zÌ-§ÈŸ¥êðÇ®K|þ<áEz®Qý»h: Ã`¨…w¯ÇÏ{ŠDÀ¶0ݤ1vckK ‚#ÆÃ·k&šóWK.§½\ðS;¾ßòcÌ.Uñ“o7\øfí ÖwúöøŽ— rùÚ ÊÃSDêÔ4tƒ[>?Ká³ñ)Æò“`šŸ"ˆý‘\"&v)ä2øÆ´@§P…R9 ݼ•u3#Ç¿{ßz  sh¨2¹ ê¢èiJ¥J”ý®¢¸ÆèÅç•0wQ¼L^ìËË×EplÐÜžW‰ÏWm~B·ƒ{ã«´½“¼!L£Ä?æ§µ ØÔ×E Ç%d¯Rob ‡Ü^3¬Ýôߩֈm6õ"éßõ÷Y˜JïGÇ%  ¬…øØ ð;¼˜Ø ¼½0-ààÀóÃü^Ç®½Ú۽ϠÆ/4Ä—%ÊeààTô£w©Zõu!v ì#U uw•Fì‹…® _háÚ ½U’ä…7æß~¸‰$¾ß2heÒÄM=“2Zò0AÙ`‰ÏïçÆ·Ô¯/çð'íâWínI ûÛߦw÷^¹°uÂí£š­’„$˜( >B*M„`hëÝŠ ×v©‡iG»‡F"8ˆÈêÕoÔgаý?ÿÔ£o@ OCt5÷ÐE÷Æx7ú·2Y¡PÝ«Je³§aëÖÝè7ë´Û°›dõ7‚ºT =4·þ ¦ ¢ü½‡“%餻'Õ§e6ÈÅ}D2nÞ É±oˆ±¾;TÙ·u»moû¤ý<"AõÅ— }‰ÇÀ÷°¹Sfepé˜F*O­¡¢Ûö”Þ¨Ó0¤Óp°‹· 88ê’ŒD¿àààQz ¾5rכdžàZ·–š)¹.˜(`Â7æCÀáÑoa£9ƒƒ$”ÓP—§'‚˸y´éÃÄe܈ŒÖ©™õã5jƒúË$"úަQA;ïMËÚÔÅë¹ä‘;U‹ûèókØ þ³_džÁÿ»ÿÐÈs$#ˆ@ ðËñ áÁƒøq«€ƒ£^ÌHG{ŽJòäñÃCûv ììZßgÃúuÀ»=’å§gÜ‘f¦d4Q°_ IDATm©ø3ÿ—š:ÙÕ üô”\¡„ O‚wó—’#¦¬é~hš!gÖMÿslBp”š™–Ÿ†™Œ1ü„]í#JiÑʇL_¿ñã.ºx ÈnÎUu™›–®è¥Uõƒ*D ÌðÇ…œ±î=¸Œ‡îÿzt_ßÀÏ7ifŒ ì|½u …Ju<ãð-—½-É›OÓB7=¸|Ï%5Èm ] Âô[Ù‹/¤ËÊ´¹ƒ}4žNÚ¯>|pËÚYŸdmZ“Ô{lÀÄN¢¥c®¬ÔM2hùa÷ÝÏ[=º“ÏË µÀ6hß+!ìñ5ïz+UÞ| jyÿ©Ūÿöª nB‚÷ ˆ"Pîˆìk‹œZÆo‹êh•ñÇ ßEÍué6¶·g¾Xؾ¤ƒ±0WоKߺõK˜E ìdßÅTš};uº¨Ï?×àîßëD®Í‡Ø×tF ©ˆ"Pž(e…w’Šžäˆ<&ž‰´‹úF¿ ¶w¨¡GˆàèЕË^òn^ß÷–“³16_ÏWœ>}îŸ+Wž«9¤Îµ?ÒÝá‰g½ù¢¦5[=:|è@ϯîÜ{x{ü1ï–n¦E1¤‚É»¹úδ¯é Cˆl ªGª%v5jÕqPðï|{΂Àâ‚Gµ]êsã8Cçäh/‘*ìˆ=o쟢ØäEzÜ‹±wD´8Ÿ¼üð­n^ñgnu’ÜÈ—õ0âéÓ=õžŽìWGæêî;¼›×™ëô=’9Ÿš%Í«z¦öµ‰RýÊîÝ¿WÖ}Þ½v]×['—zõ˜.“9?}XÐÀs„ ZŽ&!UíöÅÚ9Õi T*D"úþ;gèà^næ|=çÉ+Íë98½ä`66Iooû6. dvçz9Ú·óõs êDö‘Ù’l–Q·!ÁóžsR—6ïâØ°±—æý¶©i»p(¥ÍšŽ†!UIñSØ'JR\žŽã \ïWûëÁÞä,Á JJ¯g3n?‘Q* ¶’©1×X2§¹ìì šw 'µ^¯çÕ’8=ߢ[Mºª…Ã`+@;*‡L$j/™¸Ô"ή é\ð ìÁ2¸}#øT9¬P è7uRTº-íøÇçÚ6|ù§¦}ŠïŸ½w9ÉN–Xà KUt= ½T*UvNβ½­`Š@-Wøôk G¹Lbg_C̼Ëaèà7sà88Ÿ~󉨀8Ö+üï¤sÃ&íz*•.#üáå Ø1Eßr•L®1~ ™ÞÝ\ù¾„É­ÉÕ†ByO…;­iýwüL½å}|"P&ÄŒã áó‰7JcªŸ¶‰44ÀH¶ô­~¯6“YXF©ô ‹²õè§¢a?3²Þ9Tôe)#°V²ªZŠ©åT‡®è‡ˆƒSÈÐÁ•¶!pœRéš}a­G»Áù™Îµ:ÜNÞÒøµ‹Ö±‹ìÔò'¼7ަ8¹ÌUœþýç¿FÖD¥uÑ÷b¬¦§ b¹‘:;·«G¶6íÿž~äjôÍ5Š™>ny)LJ[Ôj\ô3㌾¸§•ê56µp,Ô³Ö˜ÒÓáÎëZ3*8W©ôÓ`Š.¨—!ý{¿aÊC…WàIú÷QGäk„—Q€`žFŒHR#]%HÁ*ÎõžW( %BWêÆ¡ƒ»Ÿ}¹qëqÿ{øD$Íȼ۵ÑKï=º›9wú|™‚ÐØM¡jåQwõ’î[Še%i ‡È;Ëç9! 3?lÎ3j¼…ΆO¤”àùÇ.Ùš6à]Æñyx²MtÙ}>œ6oýô±Bþ×”ˆ’ž Zø ô²v jç™|+ýb;/o@*¼Œ§-~™¦J«3ˆtˆæó¼×›µt?z£C›Ä~ézÜùÅËVGG~½æÛ˜WÜê:HÄœì~Øujç7±ÜŒf¤3ü¬ ÔÌgÐòó‰4­Ò´­~Î¯Šœ_õ[“NkðH¨Î?<ñ ù¢ÍÊ5Œ^†¢ŸQä¼ A)O˜ôjøa¶t¿†;ŒJÓŸô+Ç`Nv(Ê>i$+GkØ),)‚š™š”Õ¥?ˆšC®Ìò}Ud-½‡µ ±èÓØ µÌÐjß Viì—“Ã Dݶê*¢_¯°?´² 1Èèê˜.íÆÊ«kff´–êÇÌüy×ö¤Åà””4v#ÅOÁ7Fp¥õÒ’;9¡£êR§æ¯G÷³ãnÓ&½ãn¾Ú4§_ÛÖ¯·mþû¹¬û áe4eAÆX¥ÿ7Ðõr°rÅk}fÒ TRÃÛFùî<”Ú—¤m˜ÞŠHé"$je? DF¤w¢Æ?÷QTßÕ3=Õ&ãà”C© 9qߪ‹©ý÷íîéG\j+»ôËÅ™“›¦ýr€xÏæ¯Í6¬iÛã&)âÕKÞ[T÷›É~­‘$c¯_‡ ¨SJ&“¨¾b‡oQkª6úþBòÜöÖ4´Rë½:k‰ÿÍû‡|¨1,†˜Ì±@ÖjO¼,b!$aß¾°Ù‡|t•è}KTß·DŸ°‡¢!F'TˆZWâѨõ Óh•é09OŸR+U¸¼¦Z>3@ –³+L²ƒO‡œÕ ì{¥ôðV߀¡r¹rÍ·ßmزuËwßðN÷Qã{´íþjÀ˜7ºµ³ìÕ®´#§ÈðŽL²éádÖZfÎŒÜKmÃçÐßñ™<:Œ- Q p~Ñ;[ªåh3’´YEÏŠF»x3xz´¿œ ø%¼<·‰¿Fîˆ'Á5®G-V«Õg-%Ó Àù¨ÙÀÒ8c$ñöŘ´«kèS}¥bÿêÿÅd€Ó>Xk-Ôë¹™1Rk ߪMc?Ws_ÿ°Ÿ’(%5þ²yÎó¦3©RÂ/ OdÉ]‘ܾçëâS¸1m>œŽ®S ŽPÇqÁ™d œ°¶H9r`ŸL®„ÀmÂ{ãiB®:1ƒÈÞWaçü|½:ÄÑ©)zS—–v‘L}¦¥&'¬ö£ãÙe¹ú¾¹lBxâBŽŒþ‡îC”¡½š“2Ü®^î1guG²ìç´ Kzì Á#÷ò‰dÃ+²¹·úJ3rÍÍGʨ÷ÎõË„ fµœùû!pùÍY´=dòýÒðÙÂs)žÃv,:Õê`*Ä ^üòš©]PµÎXá\¹4ŽŒŒŒþA‚'¾5vòˆqS‚缿`ýügþ%y’÷ä¿ë7&$žÉ¨mîÄ䘶áЫR©?["Û‹‡ÁÓÍ÷¯èåL°¶a{ +Q(¬¬éÌÍn,Ôe$Ç>ßÀíqÓh16~Ì_ãs¢ èföE;•!¤‡º‹*LäKe(4ÜКáN>›@»¨ð™N£ú{þKÝ'…ô¥Ÿnóú§F$ëÈT,ôڨ̧‚S¸"0ñ•BGo¡¯Æ ¦¯ç7| ÓeL2û2¦×Ç÷æ Æ˜h߬1|¸JôµCǶͱ˜6£™1PÎÕ×í*Û»n¬6 Sv±ùº(¥*¯ÙÀTQFî$ŒÁiK cp6Ü.)44´Šâ`…bEïTo—tçÌ„¦/-Qbðíf½×ä¿ô‚þ™s;}—dìC©Cþù‘iÇJÌ[E I®×~6åÌ”VaÂôÀøÁì4BiE`>k#pçÚ>Òj)HM8‘ Û%y·íïèä ¸Ô{^ļª…œµ!çÈkÑ´vf¹ùÐ%£i·^ãEJ‡¢ÂrTW DÓN·‡¹¬M•zÙÓ 6e"£F€;‡“ åØ,R¯dܸݤXBâ‹ÈÜB{§Ú2‘Hi/²/G•6+š.Έ¾Hç¦U6wÖ¯Ìú‹ÎlT6Ëm¶5XÕ0ÎŒÁAcp"‡š0çT§>:¸RamWC©Á ½¦3'Nû—øàEGýRï«8 ü¢ïû•V;]2³´™1_9"ÀÛ™Ò` ×Á•|{§ænªpC¤Râ‡Ù2# R=}x[Tóyî$®ƒ+3¬¬€&AEy?\?`%q(@,F¼›ò…1ül8ÇÇÄ2ЍF]Q‹¬2A‹-Ó܈"À `¸ÀÞèÃ1¸²· Uݺp°VÙå D°á„äÛ;ðÇàp’Áb„ïݺmqãd°§^ˆ"P6ÿzqÑKjÒwQEð.ªK½ÆJü²p?¸²ÁÊÍýéoÓäR¹\"ì·É|©ü0Ûü¼È‰ |ð]T>&V €wëþRGy±Ì ²P"€XŽ€æ]TÚ+*zú¾±‹j9мŸüö¡Bª‹å™D&–Gl –‹ß½ÇcD"€”"RËÉU½s&œ‘ŠÎ pƒwëÙº‹DV\,.zãµ—ŠÄ©§¯'œ¾Â?UkfÄp+èCˆ" „€zÜÓG.õƒw«,uRUh»IN:~ú´DVtîÔŸàÝ€22Ðd`—݆t:°Çà~=Nœ9_:TÎ.»Óò#yS–ôþè§lƒ‡|"PÞî¤ù,Iæ ËŽ£ÏfO°†À5€o°Ñlåø y­µg©>hå¨E—¸ÎÊØFö§³ ïÿ"–k íô5ƒºçh*ü c~´qÜøÑ#wN…ÓQ¹qïmžmÙñ[nõLâ~Êê0Úƒ÷”%Àá üÙ CbË©[¿ÖJ0äwþ}. é$åË>q-ØŒFyŒXeHV½ë£‘Kâ»mn¬4†ù,»çl"cvü¸ùdeÒž®À“¿ýéâÏp‚fB„ö‘yÍ‘„uê!înÞé;~„Ä=;ã±%$re²l:JÊ— ÈŠÄÙdÁ7gY"‡Á#èëZ¤Ã™ñô2àá-6€ão@8d'Lé s¬GÎ,Cfb2cFvJb:Cd8cv2Dí‡oóÈ£³?9±÷Ǥog7=þsñÛam åQÎÌ›7¥i¾¾.>E/#Œ~ÄHæ'8Ör-Ç´U`){.*sž»Çà4ͺÌÿÃÜ(|ö%þ%x:*-U¹\ûk(YßÙ³§^쵚3läÖ­W‹õgé Ò§‹zø6\Û‹B »ªMÈÕ’¹~üˆõ áÅ óúž\‘>aõ§ÄÍcBܨ‰ñ;7jæg“¿ñÿŒNÐ8%ˆn=ú¯˜ ûÏNžmÚæ ()ûÖñãG0«5h¬§ ÐZxg­öï› ÔÀEЛ†«Ã§”sºÿF ¡a8w îÃÃ͉?>/,Q׋,m)R¾ìˬÂ3pO–ˆ;»bÄ©®´¯WFàØéß/úˆê>çVÓÑÙŽžÉðÐÙµ!FpV®t6޳²ÐÊ&îlìŽÞ!œØ³â “òE ±gÅ™‡š­Š€Á¬AgU€-fA—ÕráÏ6GÓ×§³:¡{;\xP¿T6• %ÖÚÛµ¢%¥23=#TJÚR Ÿ>¬S¿ »&Ü3‚¾¨q Ù¸;ÄÊåìðIb©—Ζ‡=V.Š+p\y ZZ™¥ NJ« ó!UIñÓZÎuav)Ìcp¸L¤*×7– ¨VŒÁAÙ±‹Zá C¸ ¯4 Š €cp6W‘îíömíÝlÎb4°Z¶˜«Ç18›©ž!‚ÆãB"€ @Çà\êx\ÄŒÁÕÅ18”„ •ƒ³½jÃ!8Û«´¨’" b6¤.ÌX§A³¯΢VÒªD³D@ƒÆ¥B¨ÀU쨴J" )bÖÁ1±[á:‡ËD¬SѤ8‚ Ø2D&SJ¥ ©T.‘(à#“©@:<·  /Ž[ÇX”‚TM ßEUỨVªhpmÎÎ.éé’©POgpKäïŒ;ãJò::8C|ð° ü18Œà¬,èÌÙ™bèàÀ»É ¤Ò»Y‡½<ûêÃ>ª!"x”º3§Þ'J ¥^FpppÏ88½KíÝŠ¥…2Ù€þs ©eúÎÓmÀ;ÌçØì¶ÌWÊÒÇæhÅÜê‹ÏÙ¦ÇLŸžûš5F÷—Wf«P@eA /vЦê§ì5¹$ÝdÓb‹kå¶M…JŠ˜N;—úä>$1‚³Nۋ龕EEE\qZïVP$…N,+2}pаQ rö†/$KÆuŽœ½±çUþ°aw™/ƒ£žtì>4úèP¦±¤.ðsóèÁîÄÿ£¸Ó: ܘ*‚ÚZ=þ2—TÐÃc½Æf!Ó ƒ;›ªY£M Ì/Ÿ¶ÍƒS¡ƒ³N[‘0ór#8=ïÆtQ ‹ JCgJ}nÞMïfê;÷aà_ðB*¼ØeÔ»ÍÕþ‰-cƒ,Ÿ¶Í„nô†: ^`Çã°‹jÃvQ% +ÎÀ»Ám!upE–uQ;w H]¤ß<÷uP÷ÌçëTB Ë´ì¼¦ç×ug;ðç‘å°Î¼Ž-üž·Ž•®ÖÈsà{eÉü6œÕh.CÔ0VÚ²óæI0"É6@NJRz÷n†ƒš¥ fÙ׳» ´:húMQ¨m[«¤¸ÎZHêäÀŠØ„jèÐ7Ƈ§ÉdàÎhÈ&£MH¥ž-Ä.ªISüæ];eF÷ ùãÙ…ÓIŒ¹"xL÷îçRçv†#Jɹs§ÆÄy@ÿ1ü|Ÿè¸hˆøÎ¯oÕ%-ñÊü6ûÓG§B–î ÷ž šJûÅô>&š.ª)<î{¿mùñéõÔ*z•,Áˆ`$ÛÚ΄Î$ƒ¶q3Ó=V> í-õL – ´ír˜ñÆà˜upÌû OÃ.ª°™Á]T±æRIßžoÜ»£mb©T ›xœÿX i)88ÃI6¨6®¡Ù¨uq£röN˜´|\'B~[×cái†¿ÅDäèÔqРçfùù“ÔÓÁ!³ˆ*;7d&„}Ë í×Q¥Ò98¨yШUª½…CK'ùQ:$?gewæP=†Ù Ö£äð4vjÖêøÊpU[ÞQ«æK0^d|b{@ý¥ç娖8qkZQïNÍØÖ¥¦gCÓ½Éhm·ƒØfL)¼¶]ærã\™!4"&`‚¡¨H^P Mü}–ËѱFíZŽI7ßœyúd÷a ÂÎ…H­Yî˜v8çO;§k&¿°ŸÿœçF~¾Õsšfï˜îKL:Fªis/ŽäœÜ[Ä£»u†ö 4úm92,ûçÙ=fr´YeE&[DÀ½Co¯§›êb-ºÜ‡AK`ÆRö6_/Ô&µm»“&Þ·H¾>3ë[q ® É cpààž<‘>}JWŠھ꿬«‹?›»èÓÙ.Nµ€wƒ ŽÁ‘ÇÛ«YÒ‘wî×ÌVMI^ÞM¯fp„'ÉI9qKÕ£SgòëÞ¿zŒgÃ%w7/rzëÏ‚«7š5÷ÌܸL=ÁŸ{³_G!?hÊ(gF4z¼³âǰ·r-ƒ$F YðØî‡-ûMc#Ì¢jÓ¥°›ß¶K!ÄHƒ3LÈÌëYÁCÏÄ´ï: }×þN޵\œò‹ E*‰LêhÑ,j'·¬A=X«ú}|Šú¯aœ1v`,ñê>H‹Á_W2c£çÇsÕöûÍÝ0µÁ¬ƒsmð;•†Î:•þò+NK–½B|,¼˜*Á @ÊŠ€úõSBÇà4i\è[VT1?"€ØâBvÃ5<¦ï¢¢ƒ³‘ªA3D ¬ðÏd@WVL1?"€ØÐ/…K{ù2Û%Ñ4ŽÁUpÕà\Wª¯rà:8Û­ÒÜœ\Û5-Cl 7wºì]{Á\-§zìmÁã{.õaWÑ5¦¹¹éUXE‡úÛF@ÿçƒcp¶][h"€”x‡A+'Ê ' @[BÇàl¨6p’Á†*M©äàœ V º8¬4©R"€cp•²ÚÐhD0î΢š[ùpbW>¸¢Ôj‹w 'ªm3À‚#U Í»¨´\°¾1‚«à:6À¥® Œ<¢1pàg;?îXÁÖ¢úꊀ^Sô¹qÙõá¬Í̶ҶÓ2ùcpèàl¼Å¶ˆØ´l$,þ½°¾Ï¢õ]M1<¹ÍÆÍG󪚦ȖèÂ>2{g’M¶LƒsmØ”5»¨•¤vì0ädã{\•¤ºª¾™‡Ò¿»pÙ^ËÄup•°ù]H9âÕé{¶Iåî›øþÎ4ZˆnKhL݇=ãÝ7o¥gQ2ÝzXßù¨Q󓘒ö™•4Že`Ø>ëtrÍ ÝŠQ9sÇmÍäf!†’™ìx!&ÈÍ»åÕi”m¼aˆëàLTT=29'én~Ôf0 œÔ?z)ø©÷ëµqçF¦w0qw^ç·˜¹9ûí¤ƒShOvñ¾óoÓžlç;“f0üƒ÷ìzÇù{›¹y{§ïît§ÞQ·‡í¾ÑIDATÆG&lÆÉ—¬;Pµ‚ÐAµ¶ƒ€¦)Â_ÇÚáà¼]+vz…ìt/¡?£RàÜ3Ú|5%5Œ—‘}“&¦$Ïð£pð“d™Èx=¸út`$´ˆxÇ&haôd;1î¯ïbö|ñÌQÍ”íã¡ðDÅt+<:6ÓËBø’ÑÁ1 ãÅ6hŠšHm·çWÍÚÜbVbG¶uÙ LÜ18œd¨ðZ1íâ੊¸½õÉø¹_íÉíü6ëqº->8™3Ûp‘=i^S&KîþI‹É⃱I^Ü´oÔþ9^M}£¥H6m[…C‡®\Ø0þtç­Ô»ÙÐ…ëàl¨2,4¥ýÈñ»Ç¯ÜßyÍ[m5iâG}·2úÀŸP!IߊØñÑøÁ;‰W·Ú#¢…9´ö<ɶÕ|K0?;òâvœ!·m`Ì5pAìG6°H“?‡?[Ð(Lül}Ö‡OŠK3"ˆ‹ÀÙ”¿/þªf-gØÑW*)†up"=–Çà*¸…¨p˜«‚kÕW5p ®ªÕ(–@þ¾É€ @ªü18tpU¤j±ˆ"À"€g2`K@*‹¾‹jCU‹s 6ThJ%GßEµ½ Ô÷pÿݽc{&¢Eˆ€"и‰z[$Ö>þ.©ðšÓóp›¼Pᡈ@åA@  „ûÁUžêCKDÀBpœ…€!;"€Tøëà°‹ZÁõ&aW°E¨¨¬à\¹Ô\N^Þ¹” {;{™ÂNTCj'±'¢A½úÕ«[·\ô¡PD0Žîg›R=I¾pajÇ‹J;¹ˆØ¥ÈNI”¢u'ìˆË öÄ^¥+íI—×^toÜP@<†p  (=¸®ôØ æT‰ˆ²á@Ý ”";•Jio'RˆTú´®Íðׄ‰ßÕÏ_0;DÀ*à:8«Àh(D%RÞ|àº6öïƒ_Ó>S‰¿¦´³·W)E¤¦H¤ÌÉ»ãÞLoÙŽ¡ ¼G2 €cpeÏxVÓÍäz7¸íÛ¡¥AŽ©çÝ›Ñb¸—ÉêŨ·¢Ž©¹›‡¯_:âœ]”»ê”ßz>]Xà-"` p Î(rdˆDt2"¸K§}õï“J¥ÒØSãtµ_ËŸ¹¿Óª·ÊÇÅ'ÝãÁ:5··Öí˸=ø°up ÎÊ5¤bv­„¼˜)ÑŒä]&b8öýv>¼ÿ¶øßrß,Ÿ N§ˆgJƒŽÁ•SU)@n‰œ°nþÍ Zš¾54žô&ÇN¸/Ü7©Sî/S§îJg8û²}føŸ2x|Òéׯ(Ý;tźaÌY\:ή4#ÃÆÈÉR6ettïG>$4ûº¯¨'5Ì’·{æìè ®.uVü°p ®œjn«ÇFp)· ¹B¡Ñr¹œ~ÁS¹þwZûý!¹T23b¸¥väî?æÙ)ZÝAÍÊp_qd¸­‹QSwy~²}ø5êŒ>ÙÍ:&’½³Sô¾ín”¸~·x+àü­çºíë@BÊ·S÷æu&pähCÙ‹—¥Ù/Ñ-f‰Â“h,­=ä¦àœ•á†e"p±³¨2™tBPOV\¡’ÊTR9zËTb‰R,U¾;ñ®ƒ+)€ËŠž::šŠƒ°ëMpi ó~̙͹w2H×1¢Û›czïJ¾CTÔ 6›É0k‰8³Ž©EÒ›9%Z+‡¦yg¦RáúYüšyŸX5Õ}Å7lHÈä °5p ÎÊ5bë@4³¨™ Òí»†ïÓÇ÷/úz WÙ¨Qc-ÔÝ^ˆ"`JƒÛ¶](eeUP„#]Ä‹"€Ø2FÇà–o:dËvW¸m3?|ï—ã*Ü 4@L ÀƒÓ[è[ðøž‰løÈ8}A)—I‹¥â¹´˜Ý·wÿéŒñ<Ê/Wm-w¤À±¶ W³¤¸@K©Vi‘È6ò©×È£f-g;ûǹÔk$¸£@E½7c=Perkñ‹¥ª"‰ªHó-–Ò­2drÕãó³rVa¬”ÙÙÙ9888ÒRš7œææ¦Þóˆfr¾!xÇ‹n@"WIdDB¿U9Å\ªP)ª¥ãž«ÂX–wÑjÔd*o= ~Ï\­ÜÛj•çP£–½} HÀO¼Àb®ƒÖÆM+àçç?<úÛƒ½€”°ó#T^üëfÔm«„·ADö5À €ÖLçããõú¹Û>W_©Tɨ#ð-§ÀªÀ©Áß š¯'W^¹‘e±‚‹^ÙÔ׬¥æT6óMÙ[Ë©ÿqÑÓ‡Nu°ôê’v­Þ;FÍÂüu꫇Ë-ppÿݽ÷¨PU V÷ª XY$¡ ¢RA· ªnü­ vľ†½ª†™]ÔfÍôÞ­ÛÀ‘Ù/ŽÈ•ªb)”Pl éGYÌ×Þ±¾AÆêuËëPu#8xõ’N]±š¤i¸±›Ö»,¦Ü¡ï&þñûßb±X"–¸ÔH ÀŸ)!ÖPÒΔ\¡„^k ýBjóyWç½ÎÐþ\à¿t¿(¥÷Æä¡·Ã>\~Mø±Žúr葘7NšÃ) ´L쮡Ÿ^4ñ€d–mS8VKE7õ5çruuå²y5J9°–b ÞãW¹ºöâÉ?á0D³]É+¯]˜¡òØËÀØóÞùffÍ•¶ªãË“Š5þ¶—{é+H¼XÎÕ\øøž3Ó;ƒ«Ú¥ŸÜs©÷<[v˜Q(a .5åÏþ¿e¹w^–nŒ<é¶z´ëÜ‚ˆ8è7Ó¥úçÚu.Ä4 þhYàDýÚË¡s†b–O1Ãq1×¶ ô/Ë–»ÛJé K&t/¢‡>›wÙÛÛsá¨--b@%x88:¦H¥b'\Wo^§}aýŒŒkhy3u¦I‹òk5vÍ[4YWB¸èóÖŒ"“µ§ýß_¬ÉÌáLøúãßaG&8!V &ÅYó!³·D•¼Øm3´Es©¯þ…¥Ú¥5Þ–ñò¦âŽÂ§õúG±Ÿq£Œîq¹wÓŸ7|³áVν¿®egäÜc‚8ˆæ„Öªz7õȽsƒEýÚ¶å¥ñnU²5J&×uíÁ¥ÁÉ‚ð)ø˜‚×P ñ™ùEØÅØi¼ÏœàëKôìHˆ {æfTs…ÜÕ9mÊÁ‰a~T)-þßÝÂÌßå/«¤ù™R¿¡ãf\½ýïÙ+W·ÅN:~„ÐEhL.œv üúC/½GÖ%Ç]e>!¦Ó» X[;çe–ĦÙ~e“И¸«‘½™Î¬†A@óôÃy¬ð#z íóš§æ~t\hVøµyÙhܹöjòèÙ§}¿Þm‡øFŸž¿N̼s~‡0(Îk*'&úÏ;Ùu)Ç—õÞ˜¹4¨µPë°C-æiÝ/«š6ž&е j=ë‡É˜œ&¡Í/PáKÿôdx‚g<ß6ãO¿EP÷ºGóæŒÖ»ê§Z„p¸ x7úà€ö£ýB;Œ ôØeD`·á݇ì1¸_gÎ åX‰DÔé†È4®.íú%6œý­3Ø«êp«}äÆ1i‰”S- Â5 ŸÎeê´ëÜWB<gBŽ$`Nä%Æ}%,ŸåkàÕ±„„Ú«½Z H&—®³°y.j2›Õ|›`W%ÉÕ9^ã—ÝÔ,jþ“üÏ¢kˆÅ2i™Töâ@çö ëC¼!SÊ$ð¯ˆÔ©û|lì5êú½vsmÛG;߈ëÙ›¤W–æäåí^ S fŠ¡Omî‹à`Üþ#$6v^O©„þ‡Î*¤Æ¹á§cÙ99Ëæ g©'ÌUfÈGQ÷ ÃÑ O{iz™†YÀ}}QŸùüRðáYŸ!Á$ä@‰½¹ƒ9ôP}A2@@@{ÎÆ§0“ 5ÓfÃ2Tù{v‘-fuN›Šàöý.9r•üšQë\®kÊÿº7záæÝ§w¤$ë©ê…ÒübÅ¿¹yO?‰ŠZ¶vý:Ã3$TÓËó ìÚ$;+‹\ƒì^ïǽ½:¡³&šSç̺«‰é†tÔ.é0 ÷%ÈÈ!Db:§þÉ,}Hc=M€ÖÞ÷jˆHD} „@ ‘ål%bq¦W ôá!0Q÷%¢¡˜püÆd„8¯=yÉ`€Ž­¨Žöaa&v` ˆ>& kkFbYLéŒÙ̵¿¥«s¼Æ/»Å/Ûw0¸±×‹â¢ëÿüÓÃåð{ãz$$¥¹]÷BeålJf­éµJÑ`¢ƒ+gÝG~ˆÝ ”IÆúÿ|$%dp'xõ]#"£ïiÑyj Àjêw'~’ çxJeŒo™³¨Í”l?\¯CkŠÛºÏè’¿«_X¨†_­k…íHãe¶c•Xbª‹*h♣woˆ<¸íÛô?Ξ¾aóÔö€¾žóÇÔdFb‰L;||n\¿Ñ}hÇuíû&¼"²lutä7Ñk¾Ù°ù»-ß}®Diψ]û!4½ð €‰ u?÷(«´*øó‰lQªÝ‚.*¿®ÓþsZz¸åÕŽ?ÿzú|¤˜=˜¶uïY—:5öAÔ6mÒ{àÔØ7áh'¸ÞÐ|Öá¤á8èíšèžZG•žV/K‚~2mJ9è¬Ì"«ÛX›±òZÜEåWúà.î{·Ÿºx/ÿRøtQ æ.1¾"„òZ£‹Ê7ªêSªO•?ÅÖnõ¤[ÁÁUý‡UK¸9ê“®ÚZU$ +³¿ý1ó«˜*ícƒ3QuÁ™…ÌA`k쌬³fïßYgÍìª*§ÊQÛ°óîŸ7z—E·Þñ²{è«T}U•¶rë‚›Ôj½Ó£‡:T%¦UFí÷põp‹õ«®—Jùiu_åG¶¼V'“q¤Ü­V~¤ ùqM'­§UŒåÇ-×›˜¶“Üñ 7íP^¥¡jëv”m©þ5ÎeÏÛ7E®¥zɶ2m¥PúÕq ÓV UnGº»\:njڤZÿ¯ìªªzþ=Ô?.X¼ž¢—šHŸúǵu³fƒ @HFàˆ#Ž:t¨(²Ý­êÕW_ݾ}ûŠ+~[¿¤gçÛß:åð#ŽT®Œ@LàW‹c¥$]%§%¥ViFûº•!?RnÛ½j s;®h–Më]íÍŽN[*±év”ÛÜ]b¿jíSµÕšÕnè÷áóëV먲¯Æ§ ÏüæßN÷%úÞË'›—Öúòª¼ºÁ¸žP6¿„x;¾ØD‹»%JRär «ašwÕo%-´0`^Ж¶á³¥•óßo’ÚΛÄõ;}°Ü. Öê”CËC “ ¦Óˆ½ÁZ_IРÓfÚué §KoŸô2&"®î½÷Þo~ó›åTÏ>ûìç?ÿùòú,ÙÛ}÷Ý7a„§žzê׿þµ8‘À† ²ë®»V766Š\¾ë· ¿wöÙ#¾øÅæŒó¾«ºdódV¬Ú2Tv´PÓ eß~JÆéº;ßš“t=ÝR)ÑêÑhHÓP7÷j³¢Ð8±{×–j¢:k¦{Ôþõ¾ØÛ?ºÓWkU^¨ZOUe÷eÚ‚ö&SÝ©ŽÄ‹ÓíKO«k'J"·8jš\vÜ owÊ\u+¿Éô¨VúÛ›\MÜ#ï· Pç(pª­9”õo/Ú å¯¡rv¡Ùî$AêßnXÐ ´—‚­ „º•Â’‡=4ˆŠ­¨ry·;2Ÿ¾9Ô%ö«td›‰Ÿ`s»PflŠŠãÎ@@9ƒ¾Á©Ï²)Ô;ö«S¨‡DÐgySîØWZ掠JέrþËè¹W%4 …fÆdYú®ˆÐ‹*4Qù®¢œ”ËX‚‘0d;üðÃeŽùé§Ÿ¾ùæ›Å¹ˆæê-[¶,ZºôÜ©ç|îÈ#›§W•³SVVšîj äÓ‘ZËúÌŒ.”ò fÕjOK:[tʾv.­d_ÿhÏZ‰š^l3)ÔÝ™BÝ©ÏØ®µýÛ¡š&:*_¦ºÖlG®êL%/ši.–º½£Õ«hèj7Í^ž^("U¢ÕÒŽ€+¡½#Éï!"šåÕÄj™òBûÕWˆˆ6˦¨‹Ù´ŠÂ[”7ã¤`«‚ýÆÇSÑ÷©’c‹Š¹¨rš>Åú5ØÜDè33‡Á&”t¾ÁiFˆ¾ðƒ@—û^EÔÐê”ì,Ì{…F—0As&´ïÕ—šIJû×t¡½oÌL§>›`C—N3ØÊˆf;»Pí÷pZÝdŒ«¨0tRºV÷¨å²Öëv­í!ûÁ6ó¡è{o2‡ö;¦Ùo;½`$I|–Öª g}é—–]…B*³Ï@‚—Í|ЛӧÍtUÌ«ñf ØÃæÕE±cß|ƒÖ>4çݪo<ØcIjÍ¡NÊçP”+_3DuTårÛ¥ýt&öÛK—^0øy·Ï_üØSÆlô—œtÆÄ‚­:¡œ2Í¢˜7nÜXýÐCMš4É› •Ï÷}¡„ M_c‘’RâSŸª·Û8¸¯[™rã$´¯`/1YØ}i3íSµY¶Q>»ky'ÁbÂ0çN>érŸ¦ ž ÝÊÎÅ”øüH[_Êæ0è–’ÎIÀwí Íø =Š|™¡e3ŸB2‡“I¥£ ¥WéN;§ÿîBË忹ÕÀÒY²_ ÑlKs­Ëƒ%mr²&Nœ8þüjQfGy¤-¼‚« Ž ê6_|Aƒ Ž ¦ä³ *悽}F•# f´ÑÞ‚–º<ÊÞ”Ç(f=¿mL¹†f^c,©2Ìç¢wB³7Ú2¨¨º˜c»ù|-ê\hç¡ñ$ì·¨îŠ2î̱I"¶Ž1']†ò”&æÙ;E1Á¸Kð ]sh®)3~ôP±ÇNДhK»°K(6Hᨆ¥µ*ª‹ —=òäÍ»“=KNÓ~¯+‹Ã`$2»lËe1CÍ•PÌv_Z—ûJÊÒéQG%ŠY=vBM0»0Ó?BÓl„O„ƒ¼L‰öïk¢§?cZ…Vµ³ LžfÐR—„fa±³ Y¯E–Ã$?æn?m\á‚wcyãЛäè{1U%¼¹lb÷[^mh«‚ýFµ*9ž¼íz í"ˆ7ʬŒåö'„Ù×;æU¿éI§>c»<ÔŽÓ®*cä¸jg¾ËJc9¹zÇ~µG²íÁÛÌ·_–ÔôøìÀág.¢Ò©hÀ¥…”0þ²;/ÊaE¹%$ÐLÂ&›HXùÑû k&óÊZ(KCÑå>¹,µÅ: µ×ä«õÇš>ˆù u‘¼0òÃ3¹‹”Yjbp«èi7¾„·!óQZÑq^}BåÕwŠÍY³wìw?ÝÄ43_‰Äcj톺\^+÷.Z Z$|½ºÍ`Ð}gßj3ÛF moFˆ9,^B3,Úw{³ÐT®¬}g³ín+mÛÃ+ÖƒèÔoŸv®´’‘°ÿùÏŠõÜ^O!‹hÖ³Úfn[Jʾx:o FÙ¯áä9c $T9IJ$`1 Zú)hP¡Ä;ªß$é´Olº»/y‹Óïræ½Î~Ó³«Ì¾4-·=øœØ‡Ih`ÓID K3dÇ *{_¿دÆÌ¤fìu‰6è$‰·=ŒÆ| MJˆSzÑ[ m“4)oI¼%±I¹¶©Q±¿¹ûf-—oºá²fwKU±–ÒžiþWv«„\–¨‚‹–óæH2™­ŸTU5¡~‹ájïl­?©jÂ"Ýó?éQ5ëùüª¬Ê. oÚKH¡v—ï1ÄÌ_TìiÀ>…Ì'™þ„³?Ød¿‡|ù¢»E&è*ؼXŸÚC¼çøÚ` vIiñø<èB;jKl¡“Êû‚ëW³ã³°ŽCmt¡Ï‰‰Á´N–€} è}}Zõ~è«=ªÍ¾}ø|ÚU-ýbãÑpŠjÕž—‰¹T‹Š°ý“`¬·Jð‘Ùåêþ_‹»}ï¼Ëʵ@"æ¤èåòcÓ–*¥˜mRz?wÙo[ùË{ç¾ÛWn‰º½­˜Þk¯ªßZŒ}¤í°ó6/šà|ó¡Íçsœ†zöøIC¤­UQ‰1‘¤_l:?˜O2ß§š¶ŒúlK¦¹ë®x/vüÁÖ¥}0·%;†JÄÌ1ª$ôH¿˜*{Gü˜Z{?hc›˨0(ï|cÕwáèC9ïÚÌ\ ö•bWIÊúPMÀ×…±i;=DÍ@m»Ã<Ø™–м+6©DÊrÍø)ãYÐrù¼Úÿ)û ;Hýp QçMÙMöE¯KysWÞ³}ÊmjÛVþêÞº•+gýöWÏoksÇuuu ¾r^™4sñÑøÞûŠw@‹nNÀþØ ¦üœ3¨â۽ŗ”×›é«äK BñØJŽ-ž¤®ÕçÎ÷Áf͇“.1¯æÐXŠÛFœ‡& ›NK 8Ú}ƒÓ7 ôè ¾J‚v¡ÎW]Þi X±Ì{E± ãíµÛx›JÔšw¼6:•\ûëä§äòu×\¨Õ²¨s½#%e͹UÁS.K2”`5ìÓ_ª[ð˕۲‰ÞöðÉò·iµûËÜ̳šéu·“®z6b>zÔù+f-øÊ=þéàœ¿'‰žV‡ê_Ù”ÏÜ®·—ÅdøôŒS;\:V|ÎtÁI?¹á$ýÇôYÒyà îþ„Óîm…4¯4óyæû`³ËíªäŸjà¹[Â’[ŠÃ¢Œà3+¹‹’–gh+ƒýa` ík¿šBíÐ>4~‚6Q]„FEaW$ Ç’º’Ýk9ôÕWhê&ºD§o\•‹†Æöh,—óx?%ôh¢÷ÜÆÚdÒ–Èuءڇ[h×I E°^såäGv’Ø—f#ί¾âûz©ô.¼FÔ¹¼êC)/o×òP2ÿ¦‡»º˜îùʽu+î‘gϪûí•+6|Ñ›7öÛúÐæÖš>Jпoüiâ@têðéׯl•E²Û÷>ç0¿W}<ìä‡&ôþ“Q­çï›5h¸¡ßØÏ­l½G–W¨¦çÕo¾ñ´ c×¾þ›š> OÔfœÌ¯VÞPÓçõ'jÇŸöªtï߆ײÒé9<³Bõ­"ò9ûÍ¡Òâ¾Úg%âß¼~cÏá‡TÕ:j‘µsCCîiȨFl°?Ìteðc@ÛËÎB ¤mi C|YE&ìJ8ïº`mç‰-÷çmí}‚Ì«6³SVÙn£º(H ƒNKÀwÍšÃàPÑ)Ȱ«¤ÐçA—˜<ì´( fÞÌ%S°‰ -¡qªÌôpŠJ9¾6ªU;”·¶Êw~Tv‰|Ñ%×ë>Ìd¶]RÆîC³ñ®kÝŠO‹º¬vtÝ‚á¿ih9oXÃï¤ðÏ"—eSúwú/eG-ÞøæC?qÕgïã/šUuoÄ,³ÔÞ°ÈÕÌ[†è~´*Þ£6Ûíç^ÿÍD‘ÌKÎwD%×Õ9µ/¾þ›~Êa+Bs¶U´3¥˜º©ˆû=«Êi]áÊäm}Ó¹}óÖó‡tšßGi%ü´³Ièó¶e>0bh™Ï’xãø~cüGU%ì7ªyEË;Cl>¡ä/%ºÐ¼ ûÔ›,*Ê ç•& Ï£}yúJô0ìñ<4%öŽvÛí‡JJÒ4C±¢ùVÔ¹ïj {Û W¯^²ò¡º:N@нè×ý¿:½ãó_ÆCyP†ï;J‚%Eu'*_VK„6‰IØÓ²=–u~÷Âù‡¸NöžQê±P¡ÖÌWÍW½­Îœ¶·ÃªÆ.}xÑsãOûÉĪçúªÝLÝEɦƒýζmqœo´¯L™Ë!Ÿøâ…¡>uäãM4Úï&6ójv’0Ò>c,ÍÇjT¿1mcª öÚÖ#µåÇG²BÎíøí¥;›³†õj𠥯¢]Ù>íòP°vNæTšðì}Þía`N´.´G‚)1Ã7BtÚgiøÂ+£ç„®l›„2)تXƒŠ2)*ßÒ"×ãÊn[ÑN}Aî²Ë.ò<ŠÝwß=>ø6*×xç•«}ÿý÷wÝu×Pÿ!wþyvî óJÛzÛ²è›Îô¥Ïgö•¹ÙÚ«Þ*–ÏËz y†l½ûVuŸ^ ì®ÏˆšaÖ®Õ,ô‚ÚÚûÜ#™½®ªî{Ô…[8vlæ´á}z?m‚ìªåÔ^`1ÿ„:síõEˆZŽGU(ycÒ›© = ¾…zk·Â`ØíÖuÁŽ:UlæƒS–}s¨wÌ«® ¾šónÛkWšƒnb˜ø ²Â “ˆ´f øvì&º*ÔÒ 9S+)ë¶eÏÝôUvÏåuh.´òº õÖU˜ø‚ »}Þaúõë·qãF{Ć²íŠ…’Ô+¯¼Ò¿ÿÐàóîü³-\Áì©Tuö#‹-jŸhØwÌü•rûÞ~={ö<ô××w\uì>íMÝ}×£ïØÏÕÕº¯iØy+d}„ÞÜ}·©»ií¬¤¯óMÌZ˲Š|Á¬?ßëÜ÷•~Ê\-ñîü uæu䎤PB 0ß»Cð#-øö,‰ê&¹e”‡¨òxÏñµQ>ËUß{|myc°û2ozÇ|™CéÚ® ÚëØì·ß[ï°\¹à§˜¡b½/§ÕW«}¯ö¡ôc²°«Ú!µJwQ°/¡I¥³Hî¿ÒÁ‹ÿ¨.¢Ê“o[ꎌOÙ9ðÀׯ_¿lÙ²·ß~[FiÛ7{Ì·Ý[É$^xaõêÕ’`(ê)S¦üìg? åh_®vc], uRÑÂ*ÚíŒ*λ%ß%d¿ƒè| $Áz¡š†ñµñþãÛÆ×Fy.­U±é´±—¨àM¹¼3Ø]Øof_êæÁ*ñïkn÷X0* :'¨Ë\¢ÕUòªÏ»9ԉ؇Á*»‰I¼ì#ß ÈŽe[B%4I˜cå<›*ÝEŒÿ˜ª„|l3íMž²,#sÆ 2ûÖ[o•à§s6ùЇ>$³Ë”4eVØ—øÙgŸí­cÖ—¥¬¹ì¥™¯JM‰}IûÌB¡„ÊÜPßÜöãó)ÞÔŠålûä΃=jÏúUü´ÅUÐ9%]‹€ ïàh–HR悲¯,Û²äÄC¯»„Þ|ñ'loÖ–xâ=·g­œÙ|¹èCûTj€ÁWªö`^¥ÐXʾñcŒµA{¦I_e!໎‚—•H¾9¦mpG‡ª]éÁS–àmW&βxîºN “® Ä~ûj‡¡Õäwk‡îÚ¹‹ÆÆÆ¨›•b6ÃÅ÷žnª‚è„fD­ìnr"º¹ÏIС–¶fÑIQJרd;f‰P+ftsò“Õý,͵àûàñ}¤™Ï?›@hÛ¨Œ:“¨w9]®?Ì«ï´ú>®Ì©ÝJ71U¡‡E¡Ã¸ D[ßh‘Í[Þ1¯fø ìÁc4n;0å4tí»»Vʾ÷|TyÛ³ÓžÛî§³y'D…”›cV×­ke¿zÍ2™œôÌÞ=—\ƒšÇñÉNˆóìÄmP‰š.‚V» õ&1kW³ȾÞ1)HaTC“63–:q‚nŽLé,·?íwý!§.¨"—Ï—Ü0 óñ4®h¿Áî|%ñš =c‹B¤?MÍgª9 MÍŒŠÐ!ڄ®KÀ7zÍÙ—Œ‚Æ6Zš¼"¢FfWäf°$ÞG&yÃÎ`YB¾¥…­)éÁc{ˆ*/¶—.}ŠM6h_ma«~ܺãÈŽ~›}ŽE¡jÉ(–Vߘ—J>ZO 04¥'uygͤ¹ÖÍfG‡¢­2vu­î"¥16*Öøñi_/H×›üÈ:ªìèìì¶¾®sX²)H Zs«”­ý¨h)OßÛ“ï*0Ÿsvy8ñQ×]AϦaT<ñýFù/9Ûa…b‹Š9I¹ý6¨÷57MÉfeJÄ­ÿ0û[“MÉônw‘$$l:'}rÍð0AÚC%tÀøF”?Ú›m/åfüD]¼E‘éØgR½(b騰c‹¯*9ßx·¡µÁA¨Íʈ®Œ®BS蜅J1ËVÉj-wUUKà×b ÝÈDÙcÍZ>*/šMžžgWªš)aåÜ:ÔÆZÝê^lLFþJ¡ö¦…¬x?âT éB»¡<|ºG•’ËR%¯âßÈe1“¶&£¼u‚F7kŸ¦S}(ò¶Ã‚߉ýnFÀþt,6µ¶´-¶/ì‹% ûãÇTéÛÒWâÓI: c£}¨XéPljØ—@ðZ–H§¾Áà`Á±¡íÍ Ñ#°ìÁ‹Cã™±g΂á\!&šy…œÛƒ$f˜Ub,¥Á§§˜µJn¹œÉ´TU‰Ž´W7{rÙUÉ¢•Íd”5³Ë®tµG€‘¶ZÝj‘ª^3Nk‹zí©^\;Q·Êuì4vnÀFL;·:-­ÊîE›®äGýe4FsKžÄws³+šuT*|n¹…íL{6¯æ_Ä›¯Óü8J˜OÇ‚ù‡¶õµ²?8 :Ä \Ì[™Íß|ΙÏ!#µYQ¯:Tßgg»}”– ~4˜kÙK>\1ãG,í±Çû@(ºJ?}=êsQö¾Úçbí%´°„Ëå§„®;ª‰§˜ÕÔr&ÓäÊ妦L‹£ò%yJÑV©E™=E×fª«Õ ´heY-z±‡;ÙlžÀ¡'›¢Tɨj‘à"LEžÊOKÆ·"s•Ø•éayÿJ›+¹,?¢›eó´©»0Dý¸å®g×Ò}UÍ]ñ­"TÞ–[Òâù÷ÒBËeyU­§Éqe§Åi–xZÕ«l2-­úRiª6âʋDž ?R¥7Ý£Xé4ÝˆØ  ˜6ß'¨>4µæ8 5Ÿ«Ð&¥} jÏâ0OLUh¾ÂÒâ±ÄS•$¶6Ú+9/æÐ‡Ñ@°›m4“”}:ìÂ6†Móv&`ξéW{´„îûìÍ¡oºÄŒàÅÛΙ¶½;“BQ¾´V¥E«Ï]im;C«Ðø5À¢˜‡æR.?¡Î;[avŽÙU·Í™Lcc¦©©ª¥Ié]Q­¢JE.Ë”mÏžU=zˆ’ÎôÚ©J­Ãpu³–Œòª—Uè•ÐZÕºŠ6#*\ËåæLU³øt'†µNUŠÙ]V¡ºqEªÞ”ͪ`¥bEŠíáôëÊY-U GÕ. Zµ7^uœÚ±ÈeõÓè47;MR‹Ó¨&Ø%AW.»ÝIGÒú^qõÕÚª+¥˜eÇaVSìîO [;é%`’ù>äŠýY#Ý0¦I[>AcœSˆ‰Á®jK<>?Qš äئ fÒuðÃF—˜Ï ;¼àù ²56Ú¿ÉÂK–Š€ï\ûƧ©µ‰=t.ftùšGeêë4ʬ`¹Æ8ƒ×ZÁ°»ºA»¥lÞ¯|ÄÊ@g?í0¼UZ6·*¹ãýÌÞPºPP¸rVVcôpçzå_%E¶j‰¬$©«(ÕE«ƒuõ¾Hj1K飵5ÓÚÃUØ¢A{zBYÙj=j%jª4Ö«5ò&›³+7¼®€ÎmÙÕDâÌ "t¤·DëgÔy‹ÄÓ+ÓÚS¾ÜMArÔ›t¡§·u+ÝÒ}•†:#óêe‹€=ø „~ máåwQùãŠö^Qç†Mûôbº žA»$´Ö÷áä³ ~tµsF•eiìAŸe}*Í—)‘ï¸"öY=ã¡…6Ê‚ÅrŽÞb=´§}׊¶=ÉDõUib•ö•WyËC/«ìª wJX-™hqD.?ôÿûÌÿ$âUÚHò=zô”ÿ”l–ÉW½tA^]A©µ£je_ëH½ B&pÍz qè­ÄÈ.uP]¸ r;êÄuáÎòæM3»]{rÖˆã|HFßQ›5T¡ª`d‰H‹úÅ@æËE,«­EIf7=½©Ó­úuu³ÙÔï ê×ï·ý;ƒÎº¼ç o€ @B`äÈ‘ãÆ Šfs'[N¹ÊÜðžûÓ/n¼´C¥SDX²lsTå€ @ ížxèNQÌA?Õö¤¬Z¿«æNåf?Y9!+Ù @€ vJ1«ýÔ y([/u“_ÏjQÌî#$Ø @€ njU†^ò++6Ôwiï\¥nŒSOC1§{h= @€€K Ú~ „{žz–œÌ4»ÏPfƒ @€@Ú x«2ì_ÈjæY¹HÚù? @€@Ú ¸wþÉ"f—ƒ^Ó,ßä§¾ÞŽ;ÿÒ>6È¿D[_ÙøÒÚ•ïüë­–þPS"ÃNÕ¬gÏêÝ÷üÐÇüÄþ‡V4°ç7n]òÂKÛÞüO“<æ3ÙÖ«gÏÞ{ð°ƒúþ‰’µÀ ¥xîO*¥m ÐE|-iöérï(É~ë˜ ²ÃA"—·lúËöíþýûw¹sL[‰ÜãñÆo,\¸pÃÚ¦C†Óß©Wõþ}÷îûÑ=å©îÁÚÐùâ¤7Þ~gÓæ¾÷~£6¹|÷Ë>Ùw÷/}¡ÏÄ~äiòã½Å+Öîhl5l`h_B ,~4íÔ²øÁ :«fß™$¤Ü󘕵û}%ò¯;å7ÉQÎAcéú?ý¶ÌÍG¹{mÛ½¸êë F\³xÙA·y;Óö÷¸~ö7_¸jÒý/Î=N¾<ëˆÑµ+òzầÏï(y­ ²PlÉ]bÙÍÈìòßùVïÞ½ßyçn–ZšÓÙc=N:é¤_Wª˜÷ïû¡–ÖÖ§V¼¤¿@4 (ÑÖýöÙk`ÿüeÝm/³ËŸì»Û1‡ßë#û$ñ`lrœýÿþÚÿ-]b.ŠÆ€Š"à>+Ãþj;Ó:vUFÍœŸMúåÙóýáº9‡']¿ñè¥U'þvÒÂÕY›§÷íØÍî7þ¹kBbpmŒ¥vÕoúS«§;ÎúÙ_´zÄÕõË´®-è'?¸£øØâŒóK]Bj¹P'ßd1†Ì.#—;ùi*6¼;vì¹çžï¿þ[оÞãÏo<ú³ƒƒn—üñÅcMëߤü•mo ØïæBcÈì²Èå¯z ß:âX¾­ô™-ïKåaûö¹ãÁg"¬(† 2ÈŸcV*Ô•¡²¸óO›É×[Ë—a'Úêÿ÷·žÛlyͼ~[=ìÈN2Ïbê0¹‡Dá»F¹ Cb+`ò^°Œ$г^»üvÍÈœ¨è"âÎi•#³Ë²]óëY¯öü眉WÕ\ }Ö_«ÆE•K•42ÙËÚe³ã[h™ IDATê»ê´Ÿ¦¦¦¯]²Ò؈CíY—(rù ºå·L÷îEybQæè±w:“î}bî—ÅúSËÞr¿³û±ëª&Ì:åÆáË»NZÿãy“æÅ“EUŸzMföçœ ÷1kð9ûdÆý^Ée·°~šrè´þËÿäèVw¶ò Sx.ÄϹەM.æ5ó2×dÞê7kÔ©µwÌ™5íSÓݤ–ÿ¥ïº·žÐIå¹ÿ8ü7æ'ü"çÂ<&«Ùò | KQ“ÞÜácÓö>é®lÐïX¶äœè{³´m#€4¸fH¬Ë.««é‡´âÖSÅb°îäãú<½d¯­™±Óÿ(õ‹fæ8¯G•‹=Çlü‰ý‹'îóÔ’}¶´ˆøÖ®t­8´¬;ìewU øˆ\~õßÛgüiëš7]Éçn‡õÞíÒ‘½÷þÀÎá ’}.òssÌþÆ-®&ŽÜ´âltĬÕoþä>ƒZÞ[ߪfˆÖ¾tÁ ¹ÝîÅÚGÏ¿üçËÎé« ôdJë{Þ-…ïùÙ¹Þ4sëvω½óèR5E}ç…UæÆÌöúÿ«—²Ic?%ýR]¬wŒCªƒ#®t ‡øñt¹óˆAvZöòIÇYÙª|ºIøúpIÊ}äˆK^\¾vƒóq7SíÙ¿˜Ù †u:hp€‰‰™røÃ%ÇÖ.p¿òÙ+>W¢Û'ë>Óþ÷.ß¿ÄöYu%câÿQ«¦>vî‡Gî½öžÞ¨~e l{Ò]ßÖ•1Ò,¯™8a.Öâùšƒ¼^Ž)¨<}ÆäuÐüG¤7‘¹®Vvô³ìD•‡žjy—×ö2Ǽ뮻jW: ™c¶™c®ü¹¥‡BVþrÚíúŽûCϘ}úðBæ êÅ㣽/ºpLŸ íÖG®¹º^î•í[^lWb:ŠéÑnï7Ë¥žµ*O\ž7wq©PF ©¹ùÿû‹¯½wHïݾú‰½w4·.\ýÏe«ß¼æækŽÐS¾®¯È-zUF‘Ž|æƒÎ¹!3øÆª“/¿ô̪…“×=þuÛ þ¼±cïrF\þóÌàûÄ&´«õë6I¹Øx‚Û5ª?/Ô6®0Ô³ñÕ¸6…ê ÆÞ©3ÒǤlñ(pZê_¹ýœZçÊg×*¡üÊí þà|î So«8v*ƒçË7.ûŸU#zìÆ/‡JfÑÖEO@{¡¤ DœV…÷KzkëþÜÊwú?yÁ_™úŒ”?$7F;¯‹þÁm –›†¾D2bïúyüü¾òŽ?Öu¥·Es·üéáÌ1ûèqØ®DÁÞîœ1{¶Ê[yD–Ü—C2G§ÐgÌ…gl=}Z˜œiVYÑ9üôÙÃO—^+ÛKHZÐcX»LÞx·þíÕ/ÿû“½w›=n@¯j%wýø^güú¯Ï¼øæK#ö¼ïý3Å…2*}t!ÏÚ¹™7.›”µsgXõ¶eí*Ù4qL_­,C] sÔYqé}jVY¶ÇÑÑNÔó˜¶<¸p}hC_a¨Ÿ$ ÅfùÂç¤õ<)sᓾ22ÛjshüV‚Nd§ùL†YR¯lX÷‰ûiëþgŒ/,—“:.ÖNÔ•»©vÙýLfÀq'r×C¹æóa½û˜š$>ù.çùÿ7òÃÇÌÙ •rœ«TÖR kì}í<×öÃ≭T3gÎÌB÷þ•ÛYÌ3©•7èk&|ôÜÞï¿ÿ¾heùÑsÌQåzlÝÊRk'vñy}¶½öš<£CT²ùQsÌÖ᫯Ë:f6tmÛ¶ôíÝ[÷ßg̘ÊÊåŽK“ž» y[^ûê;Îöæ±C>$rY¯]Þmçêcî)…ÝüŽ~ß.*³ç˜ëÏ»L-™x~îàóöË|%¤G= ëV ª»íëJ,Ÿó­I—^6ïä±ó¾}YæÂѵ'/®ýìØù‡DO³øõerd寨èIèAuúºL]/Z7v¬Ì[_ÒixQ˜ŸpË`©$ø‘¹ªøÛ—Í=VT»¶è7=,þAv‚7„Â$Ø#%m!ð…/_{Ö•óGÝþ¬ë¨U«n™;öWÏ®í§ZÕ.8bÁøÉãýÝ“µ_Pªú¹ß-8~òÚ~Î%¡‹b–•¬nU£zšÌŽì‘³£)ó©}·o_»vµóÂ=_ì¹nÿÍcÄ<Ïòw?tæ}nå§.RÍm?f?¸…‰ÈS)~øÃ¾øâ‹Ë—/?ðÀÏ=÷\)1gN\Èirdæ˜'|îf±yï½÷\­ì­c–ÚÐr1ðMr¼Ý˜y}»z ÒI‡ýLj_{í5y´v¥»–9fûpÃÖ7¶¾·KTT”C òdaBoѶÓê³êX \ýü!;PV!¯üå5l>¦½zá‘ã¤@âÚ²­÷E³gËž’wÙ&Þ-õŠÙ}”T|t嘨åÑ[ê·7{öéj‘‚6[ùh½ˆð ³sÝò¯µ$:, ¡`ðÛ~yµçR* ¤0Ó •¯•Ñ´m5nîyÙe T7þßAò#¿ðôÙv^îö͇P8àîi!“ÊŸ=pÏ_/ÝtÏï^>öàìýÁ%Ï¿½önýs›{5g=`b—dHós÷LVÝÀþã±v¼’¹CêdF¹ÿÆ ÎøÓôòŒþgœ6îÚ§_qu?ßÁ£Ž°æ¡C?ø»3ÝÉcÓJM`?öÜŽúœóäÓ/]pò¤îŠÇÃ~ˆâ‘iB×¥¾3/{ôò’ÿrдµ¶¾,åão{ñJ3§ÝÚú¤{Ÿkùòíß83sÛ‹/¥ö¦»…¶³Ü Iƒ¢ävÙe—o¼ñüóÏ¿âŠ+DªfO›çÀ§nm·ú«þÄ`õêóö?àÙÞû®þÚÄ¥bð¿óGé9æU«Î –‹ï;ݠηëçùÈŸäMÿk'+Wzûß{FÙ‡ çZ¶î?v$ìC Ý ÈÚâÙc”ΛöKgöé½_ÛælY¡$´»*ß*¯¥¡¾;°oVqö=d˜{gßÖ†ç·zœÒ×öÖ·F¯TVsؾ¶UùÛúÖçŠccÖ»wßÛo¿¦wïÐÛ]…ê #ßëÖ@ðR"±¸ôsÜ¡õ†…Qȉª·3ÚÖ[çž—]ÖÀí¦a[~Ê1‘c ¡pÝÄBÞHwß¹ÇN-Íÿx}Ç)W=õ¥aû65g~÷ÂkM-S¿zÐ>{íŠbî&gš4ÚJ ÿO[tšL ŸÚVO"`_yÉq¾$~Ž:yÚMWÎy?ç¦ _®ó­Ä°»qnÆ-Q¯²ï=yÉèk†Üºö‹rô±CœkfÿâÌ/žaT»e¹é¥UÜ_Ì^^òÐ*g¬j¾ÿÀƒW½´IŠ›Åò( T¡ib÷bÂ~Ñd ów¨GÇk¼v{Ÿ€¶«´±|ⳤüÝwßuµrnŽ9´<Ø‹Œ›÷7$m/sÌ{ï½·¨dÓ—Ì1Û‡¶ü£%£&NØ ÐÁúŒ9­æù«Vž®.ä?4CÄ´ww ìýª²qfÕû´i[üOîH†?ø’öužû¢Þ”vä ³ŽÜŸ«þ&B‚‰üIpÝßß:ïÆ?ìx¯ñãûíùÒ«ÿzèI5¹°s¯žS¿ú‰“.åAÒ¼’wþuiðjÆ"û1]:›´ÿ‡ÛȲÚ^~ö±Uƒàô?p ³àé?¸e¯Üþ«Ç6+¬Ûä¿®ZúôËn«¥KÿêµêwÄX籟ßó˜ãÍOËjæÿº}s ±è'=î&ªvÕµÇ q·›|xÍåGêò#/ø‡N¶bÈÅ¿s-åû,ÜíÈI^]íK¬ ûŸößßXp–ëfq枥irä±ßp{Q~Ø*E ¨¡Í™×Ë‘¥ãKïl÷³7wÛm·¾¾X~>ô¡‰MT¹ªò~³ò<É÷™è9fíG们 ùÚ×›Ÿ}öÙÇ>< ÏG[Z3ú'0 )€@å ¬|ä™V›š+V7öÙ··³âÑl©ª1w*“@H}†Ò7ß>`RlÈæ‹júnSSÓÖ†6 /%²\ÂU¼[yTOPˆ'è¤@]½åù7`wÒ}˜}e|äÝ…CHI—7¹¼vÓS¯XôÏmÛŽ²ÇÜ ŽºÿÊÑ?>kÄO¦~öþ«FŸ|ì ž+§¡°*£ËÈøÂ/~ˆÜ¢©6¹“OÝÿ·í½È ·ðàïÞ» ð„æ£ŽwÖÅ!wþûœfQHYuuäå«W{‹•U–èúØi¿Y}š¨®p._}dÖ ¿N·²=)âJм&¦2FÕ™¾Ø)€œÖ¨†zq…ÀŸqÊÁbóÎ;ï(–°ÃæR%÷ƒß|óÍöM-²rî²Ë.»âü¤sqÝ3itzKÖwüóŠŸ»jÈÓ_Ê>1#ŒØC¿¹åÒK/ݼ98õfMY×!Я_¿Ë/¿ü+'}7òн×lØ6|ðG_;k‚þο¯×¨¯2¹¿~Ì’?¾8rhŸÍ“N –‹n¨ž÷ónjدïa§Ò{Û”oÊwþeþú¦Ì1Ÿ2þ÷¦ÇêÇœàzÖÛo÷ËUoëýn˜wÙA žûÓŸ~4­ «Ü*Z7pé>+£_ÊÒ X´1™ÚøÙÌúùƒÇuÈOfœ!r9‰J¾jöŸûìgM×Où±CC•s{î±ëÛÿÖ_[jR¸ûv~{£©è³÷ÛÞ|_¹m4ÿvÀ–¢¼þÆî»° 9À…t êË]#Ò.e%䲤®³üè¯[ЊYÞwó¾ ¥‹"LtÜÚÒrç]¿nÜ¡¯ªÎ1´•€Ì.‹\>èà‘¡ŽÞü×»ýÐ?²Wä—†¶ÚÞØü·Þ5U‡ô±‡Wüuß×ÞüÀÞa·4…ºp E./ûãŠÏ ‘û\Ù @ Rª›šæfçÝF¹…Põ!/2UÑùåV•Š¿è6&?Ý&)H@‰¿ùu"ÆQG~ò€¦æ–¥Ï®\òÄsQ6¡å2»,ry숃Bk)„@¹ÈÝQår…tEÕ;2"šß•%—UJ.‹nþ`•Ó˜ûSaWLŠ˜!t=£† ”Ÿ®7§€€ý$¤KŠ!PÝÔØØÜÔøÞ;ïëpÈkóλ65².#E€ @)$PÝÜÜÔÒÜüþûï÷p'™å¿æ=«EC§)C€ @ H ZîRjÍ´¶47¹O”Sk™[[¤Œ…ÌAV”@€ ¤‘@µ{ÇŸ¹ë¯"þõ¯UÄ/NK%°çž{–Ú”v€ @ uª{ö¬îÙ£g¯vQóËê«ÿ2=ä¸gÏÔ‘ a@€ „¨îµÓNÕÕÕØíª6#ßA•©®î%¥aÆ”A ³8æ0ž¥ÕYÎq@ÝžÀ’?¾È»n·?Ë$¨ <ñP8‰j%˜{‰bÖß^¢f™«{õèµSu¸9¥€ @H5›Ü«—³Û«dvYåžQ‡;1Åœ²q@º€ @QdBÙ©îáìV-ë1ÜeÌŽ#%½*¼Œyñ÷öšàÜûöM£ÃÂ’Ê«‡üù‰©yò*wžj; Ú„¹,szµÃ¯ôÙ¬‚¹ˆtžmL°‚‘v¬ky´Ë«¯¾úïÿ›g¼t쉠w@ ››švß}÷ýöÛ¯›åE:(@µ,¿èá82§¬å²¸ÃÊ®ÉØ0çêU§žê\=gÃè|Y\lüǯšð½Å»XgÊÞÊæý™ÉsÆøD{)CÛ$¾„ú­âmõ[ņ9s;£C¿íÁ_˜¬G«.s,ry×]wÝwŸ}ºLÄ @ +a°ýý÷ÿö·¿u…`‰•% óËŽL(«UUUrmÈÚ 9¬èó†G8ãçžçLžüȆ©m“Ìã/ºrAÛ…w€ðÀ©zñÕmŽ.à·¨‚ kWâͳl#§¢:îzÆ2»¼Ï>ûÈ·ðx+‹º^D @ 3¯Þe×]ß}÷]ÇÙµ3ÆGLhG=D1ËMòª¥sµ\UU²_±ÍÌc3ÞYðÈÓL©î¥¶£ç¬ÏuZhG&Úöà‹'Ïɹñ*³ ÷Úë{‹G¦XÕ?j“Ý£=s±É–Ú.ó÷•ý÷¾'¡¹¦9·ù›à³‘ä ûuýÈ&k?V^üq9GšåB°BS1ŒwêʸԲiØQeåõ®×vè= Ñùvɽ¹Ü%OAC˜ï«øäZ{ð´±úë§‚Qx‚Ùqò$óâï}æâƒe ÂÛoÏud‡úC}Ó½Í, Œÿ³òöö½îâq§Þù +?¸j¸'ÔU Ù9\ŸSY6rçpQõºxåª!sßVK?rñ¼ýç+WM0’uåÅW;b!…Ž'qý¸Ž´Ó©jù‡¸œ*sÙ^`*´;O½Èžr}ÓÛ¿@”µ¥ªEjë¾î9}ƒNÉ—¬Rçyé¼)×cé ;üÜ;ß±ú ?€ PVïÍžˆ Ð1*9›–‘ÌZ2{ªoÃúUï<Ï•sjE„nZâÓÕÌZ=š†z×Ï]¹vƒ3pÈðUëeúWóø‹ôܶHΧ;»×^J½ç1gµ³Äãœ:NkN¥rìnïœë*]S¨,=W^®™Ñà¹ó´¼G W+ŸPB|Õ#š³}ICÇM)ØW°ÄòØmwÕ«ü@€@tÛOƒ@ÚY1/¾áâ•Y-)Ât¥c¦X‹ˆ9`:ú<•ù+,äáÙMf‡½ùl%˜ÇŒ–å k7„ f=õ«Ú…?Å#б¯@iÕì–@dKºÌ‚«›!CµÛlàÔ¹Wåì+X€ rX?k¤»²ÓÞFβ–Z–£“õ“«ª&×GWã¾Bå#ßIÐ&¢‡ðbס·oSÙÒ\DV¬l°Í{eŸŠáÏVVä=·MÖÛ~æÁÅ7=èà•nX¯ºáÇž·ì"Üg Tâq.v£UK‡¯–57i›•²[Ýš'*|å©©Ihe™@À[¶ÀÌ GB³·Åsæx7ü)¿ÃÇKm`¹¶Ø»Qåõ,‰ì¼ûTè›V£òùåïTMsk¦©¹ª±ÙÙÑìl—×&g»û³£Qö3M­Í­Í²55µ´4µ67¶6ooiÞ‘iÙÞÚ´=Ó¼=Óâî77fZÖ¦?Í?=ª;Ê!tæ9Z 24}Yfºãˆp\»|DݺeÓ%hU“õ³f4Lšä̘µ¾¦m}ŽÑ0vr}fnM9¢R>< ŠÉ)³ÆUŠˆßC ò– Æ:‹2•ÜúY³êšÒÓLÖc¹(v?íª˜•`ÿgKŠ\®EèM÷žº×„½D+¿òÊS.Yn,ŒÀ¦4ó‚Ï\¬kGßôgПÙKºÏ2VÂôâZ•*É,ûv ^ó‹µÛ½öR¥Jøg?xíä½öZ)¥Ò•[ Àö$+*&LèôC–ÕÍ‹îÓ©}ú}ô µ²@D·Kµî#L1‡ôì=¿Çü¬RrôÑ}>Ò*÷°d2-­N¦µµ%“‘ÿ[Z3-êµµ¥¥µ¹Õimmm–ÖV)‘1h–ªÖ¬¥T˾úƒgæ©Å÷§„iBèüÖ?8ß™x÷Î)§<¸~zÛ$óÄ™uóÛ.¼ÈMŸ9©vF›£ ø-ª`ýšå#†z¿Ä j#§¢:î&Æíº*Cîeó=ãX-ÔÕ+ ¤ÎÝž˜:5gZè‘÷;s×üfݻަý«»6ø°e¿C·ŸüœۼæCÎózË-æðçÇKËZú‘]mªlò¹E"¶kßß—ZÈáK?Øc7¿Vq·ýe¼/—{õ^UÆ}–¢j./²¯ž­¨¾õR^åEŽU7·¢Ëô­±ÞÝ…e½±&.r:‚ СÚüa¡—jè5 îšÙÕÿNžì-â0 ìeù-bÃpó¸AƒÆMtæ?˜[’õ6rÖÚ\óÐBÛ»hÛaµ§×’äbSë$ƒìkaƒØD® 1}({7u×ÔJ9Ïa½·Â%·˜#?7íG˜Žç,¯,.gI³\Vhªûš'-K-º/;Nq/~MQ+abÏX׬l×9殉¨ÂQ«%ÌWÎõxT¸¯nì^ßö‘`U•ó×ß(ïª W_³AèîÚú^':vDíòå"e§[Û ËDÛ:k„Úò†¡ëĹZÂ!2N,¬Ÿ,‹9&-RK"D®þñwÞy'*·û{~âq¢j‹-ß¶uëÝõà/Šº@–Lïóíìý Ã.{æ‘ïXl·å¶_RÛÛ‹è”_o­;Æ‘¯\ÖÀ6Þ:æ ë~°M|Wx[RÛçǃŸyô¬gZá<»”{9)ßrîŠ8û¡ƒ-Xè^5§ØN‚6EAIãeX PãÝwß}ýK/ýsû®ö»n¨el¡{+Ÿ“}D³û¬…v}`slp¬Òº¯ÔÈÄÅ“­j)µ‹nÜî’K.¹üòËõß“ušò‹ÆÙgŸÍªŒn|ÒS”šúhôV^ú×ËèÞÂkG„ò–­[¶<3ùìœ[6„[µ½ôñé}ÆÜ²±Ÿ·÷íÌ][T<[Ÿ´þqeïR*Ô0¤>¢Ç·œ}ÿ Ï\?*¤E¹‹F]ÿÌ×ï?§pÖåî‘6ÞòãÕOY}]ÔI lÁB¹j†­þötw|ê-hCXEê.Ã0E—•å Ô]{½†¹,}à$K@-a®» ;_ —Èel…b2¡qì?ÈÄÙEÔxÖ÷Oixà±MÕíS¼q]ðÁÞ¬û€³ÎªÀ,ðÆÅ8'Œn¯Yßg}èe?]Ò>ðè¥ ÷ìÿ÷Ôœû·u ýû3V_ëÆ‚]i’˰H*•2WK‘ÝÇÆUê ï*xWôë>´Yž§µÑ3è41E3Š¹Óœi˜ûllDzŽù¦_¯¸þÏ^yËïgÌö4–¬c–ŸŸÞ³bÖ¯þxõm¿¿ì§_XWþUœsÙ½“t×w¾ûÉçÞfœÈÿÉ~Lw‰«–Lï{üôÚãûô­}\nºuLß¾}ÜŸéK´ep˯|Ì­›<Ï9K·¡,¨ðüHÛSïv.;¼oŸÚ[o9Þøq2ò7òã•ìð<S3±aæ9Æ¡)—…nÑ}ÙqJïÒµéq‰•ø&W0ÈGšNi6Ivy¬ CFѨëïªýxã*8Ýó/óÙKêלð}™Û~l£ã*w}}e}¦í2,×È^åü 4pÿD"“ÃsO÷̹½&BZZÜïC)®;¹Ø>=ã©ú)z Ôkë~œ¹3^ž7Û§*· œM/­vœãuáÄ;_½Î›V‘,ÍùÑŠQûtŽžzéuSoÝ8À¹nÍ׿XÌÖù?àÌ9—ÞDý’ëV޼`Œµ“ß×&yQLïÆ³zs ŠJ§xœYÿê™2UÙ¯ß ïxõzÅ"jVÛJ–Ýö °tÎ̆çˆ~3MgõK¯;ZîÍs{€™ÁŸ7tu[kÀ}ÎŒëŽüþ’;¼Q™Î'd¦>¶qàºÕ_›zݱÎu7oÚ˜y óµ9¸ýz›ì¥ê2lóMHæ˜Ós®»y¦î§køyÛ×1·¸bŒê+ª<´I®pÀLJ:óëݹÞ̦ۮ›?ñxwJØq^¸ÿ±Mnác÷¿àº–×åM¯*;Ó¯½À—OȽz½×ÅÒïïW£» IÇnž‚›ïSꟺôÓ«_Ò|^ZýéA^¢Îå%XúðüO_úÔ«f“Säl9¹/\>Çáea’>S¡…áƒy€ün·ú;ßÉ5ô_Ž• §^¿ZMoËþêú›×g¼©îð«#ä’I> ]ã2,úm*ô¤»×( À3c eÚ¾Ž¹Ïʈà=꺧.­9r¿ýTµ(o‰®ìrýÔýö{AJe2ÕWÖ–Gîw¹ëIJ¯sw¼mÔñ¿ó©Tå£YËñÉý¾ãÜñªoy隷ßO÷åzPSß›l/Æ›•ÝW°÷ü½–êÏñSÛ4Å›T7¾ƒéØÝ&†°ôû)í$›Dïæ¶iý Ÿ<žEÌ6ÍÙW‚ù„§¬!#áÓ—?¼ôºQ£®»câ~ßÙONÛ§/½t¢ó€^haDà¦Ì¹ô#õ°¹ F©1wù'ÌQËþjÙ·‰ðš_œx†`{ê$—a¢œ1‚àL‚¬ã Ä|ƒÉøïÿ;*ÄžXUÆo0YõªÌzxám—EuW¾ò¥?è_7ø÷‹Îlƒÿе†£|ÑÅ{Úôó±ÿíü4/öÒÒIÒ*¤³øè¨…@bIF`gvˆ+Qõ{ì±qãÆ6ƒI¢¾0‚@g ß`2sæL½vYÇ#7ÿsÎ9¬Êè g‡ºVý¬Œ.ò¦Ÿ×­¹ôœÜ’çv zÀ™?=á/þ@ÖXW|[úƒ/^>´¶-¿WTǪ*g§wé.¾9µ€º/õ³NQry®‘ȃ¦—Kõ¶ Ú ¡#æ-¬Ÿ[ãÆå æ69 oÜYÓ–Òâ°*£8^XwE?ýñ¥Ï=ûÔªç—ÿeåŸ^Ÿ¾Ÿç^XQÄOߟ[ö‡ßuEÄ @ ²Ö?8ù¤Cf”Նɓe­†,†PÏÙUî¡hØÉÙUª@ŽÆÎs–×öÌööÙ¬òýX¹7QIfÝ™šaÖÒ9»XÃçÐ^n‘Ûtnú‰L_[H/^¾Vd²U®ÁŒœUïáÊ® ‰‚©áf[éÕ0!¨ì¢j/27ëÒúõ· žn¿œts¢gI’9:öȇÕG(æ„O×e#à.˜`ƒ ò(îzÄЈ•ˆÞQ³Ïõ“ÏŸ¸Îs‘3Ã]ç\3W‡½hÒ<)£E“œub£&«öõ׺Ë>Ô–›Ìv£Ì÷c®$sÃZÕ—;Ü/ê£Ú.¢[V‘éÛžŠÚ_^;Ãp™uuNí)ÙUá6Ì,Œuu c}˲è”:7ô…žµXiý[c^tüjdOôôé3'e§qÏÑÌNñÇ ›й¨‹1 @Ñ–¯‰¸ÕoÄÄq®–^¿¶AÏ»3Œž¹7+3Ž-h¯–Xøµ¡×,ÚHfgþƒëU÷UãÐ'ÚyÎ*4}oVwpíòycÝÉto25ª<Áˆº»]í8H$¥ñnÃÌêÿ<×E; žL‹–Öo U0Y6~;SYlîIæú… u„ü¥"Kû ˜ÛŸ9=V†€{[?€ PNE½aÛ‹âNò¦ˆõ,±DZŽ[²®nDh³|{ug[æn甜ôÔâýhÉ\ÿà|Ǔ¢Ú±Ä;×–Qé»þÝì¼D¼©ñ¨òP®þ-~ËGW|{­»‹ogG›0†š êäO ëgÍhœ¢â( sù™â±CÈ­xü@€@y ù~®æ9e5· Õ}VFÞ6hÈ0G­½È®_³\OûªÐ@‡A{×DÔ¦(P½ÐÂkïÇQ’¹vlmP0ëæ–C™sÎÎæÊú]]ÀyÖGÁôù*X®fÆe ]$íÂñÖg‹Òô­7 ¢s5}üÈîKë7Ð*Cdîšíµ!¿ÓD·iÇs;¦«ÊèÑC cýZ™ð @ ä}U¦F‹Ë\VƪµÙ;ùNqÆùÿ¼^3W-É•Ûú² dnQŸ²f˜7Ç,¡7wþì½ÕUò»¼!~òbWr1t=€ß¡§ûU| IÚG!ç^Oqé‹&÷­»Ö¢ÊuíˆakÔlºÊvQ°¹‚ãÑVë“ëº}¨Õ/‹†eá»¿ØØ¨m\¥õl8}yç$¿w?lÞ¼ü³šgÞ¡US¦L¹ùæ›å™³& ¹Bf̘qÅWth`t?%|ÑsØAfãÆ»í¶ÛN;íäoÀ1 ´@ssó?ÿùÏÍoWÙïºmsIëäDË—ð\jiµðDÿ]‘É;Ë’û-!Ú¼ÀÚzQy†_rÉ%3gδW”_XÎ9çžÇŠ‹Â®D ÿþûÛßÞ}÷Ý®4±Bè vÙe—8`óó/w…`‰Ñ% +IF ½ +ÂPK˜ëîžÛ)BÅ,BÙÅÜ)N A´…@¯^½ ŠxœQ[üÒ€ Ð…¨gÇÕ.Wæ›ÛÕ>uèù²Î¹žf6ºÅÜ….B… @ =dY´x\òêáeùÞï"ûõb*­•n\¶Ðãø´­Ž;ÿÚÆÖ€ @Ý€§˜}k5º{Öä@€ Ì-€¹9fDsfTC€ Pyòï{›‹hbª'.Õ·åiÏåî"¤WŠ  äÖ1ýÌEB€ ò}ºYýä±óäëãô3‡Ë´`·ü¡ã±»ð昑ËÝõ“ @ »Ðß Ø]²!.E€;ÿºÔé"X@€@ç% VKèÍþ¢l]–[Ÿ´Ê+‘ æ±óó:Û\¡ë'l1FÐmçEd]йë3"† tFõ×ÊW9Ë_­eË~_óòÚÎÝr¼H¾öúZõ­Ì"vÕ÷9»F‹œZþæ• š+Öê¡Â9/òeΦpÙôÐ'öÝvFBÄÔ%ÈØ Ɖb2¡€ â :bÞØü{ýFÔÝí*Üš'9 kevxýÚ=,sÑcç-_³>¤¤øžË㤄~iÒM E3й›žjÒ‚ ´3õ5™»SD çVe„Ä ÷ïe7o.:XÒ¬PQYœê„úÔð‰æœbªéÔ0!Q@€ÊC@dóººî|rØ6hÈ0gž»#»KÂÚ(+‹“}P:¶6fŽ9u§Ÿ„!@! Ÿ—\U5¸vØÌðÕÆÒmÍÜuuNí`ëÁ’eÙ³˜ÄÎTç§tR‘qš6F4çžÇ,¤”ï1IÛP _@€@yÈíy™¹–+9®ÉZûjñÆô¼%~OÊ:Ô[¬Ûòd…(9Ŭµ²^X@€ @@ð¯ÊÐ% @€   ø3\ @€ ›Š™ñ@€ 8(æ8:ÔA€ @ÅÌ€ @€@O1óõ%q¨ƒ @H1¼ïüC7§x$: @€@8ÿª žÇΉR@€ ´ð+æ´r o@€ „@1‡s¡€ @šŠ™‘@€ 8ÕºR¾[ïpó_-ê @€ÒGÀ?Çl¤súP1 @€Bøsˆ E€ @H1sŠO>©C€ $ ¢˜Y˜‘€&€ @i!¢˜Ó’:yB€ @ @ ø~(æ$ @€ `@13 @€ à'`?sÙS̲v™åË~NC€ ¤˜€YžÁsŠG©C€ $ €bN @€ ð¾%[`aFŠG©C€ „`Ž9œ ¥€ @ÐPÌŒ@€ ÄÈ­ÊÐOÐ`aF-ê @€º;[ë}ÿ³ýä¹îNƒü @€ P˜@N13»\˜€ @é#ò¬ ¤sú†C€ Dð¯ÊCfDÒ¢€ @ }Bsú 1 @€" (ÅÌ2ŒHÈ€ @ žŠ9žµ€ @i'€bNû @€ x(æx>ÔB€ ¤@N1Ë—cóýØiä@€  àŸcF4Q@€ j¹ç1›ÇÎ!šS="H€ @ Ÿ€Ž>€ @€€MÅÌx€ @€@sê @€ €bf @€ @ Ž€wçwûÅA¢€ @ ŘcNñÉ'u@€ PÌ a@€ b(æŸ|R‡ @H@Åœ&€ @)&€bNñÉ'u@€ Ô³2̃2Ìe'hˆ  @€º! $ΛcéÌcæºái'%@€ 6Y•hnOšB€ t7!й»¥H>€ @hsàÑ€ @ ”b®nNAâ¤@€ D”b憿D¨0‚ @èîB§’ÕÓåØ @€ MÀˆfó< o³®ÕÔ°ƒ @€@š øŸÇœfä@€ ž•dB  @€Ôã1ô 3£€ @qPÌqt¨ƒ @€Š™1@€ 8(æ8:ÔA€ @ÅÌ€ @€@sê @€ à}çŸùF¾Ä„1@€ ›€7Çlž6g¤3˜ @€ !·*ƒ fÆ @€|XÇÌ€ @€@Ž€Y|aŠüŠ™ifÆ  @€l~Å @€ @À&÷¬ &˜€ @¶0ΛcæAŒ@€ ø°*ƒ!@€ 8~ÅÌ4s-ê @€ÒGÀ¯˜ÓG€Œ!@€ GÅG‡:@€  ˜€ @ˆ#€bŽ£C @€PÌŒ@€ Ä@1ÇÑ¡€ @(fÆ @€â ˜ãèP@€ 3c€ @qPÌqt¨ƒ @€Š™1@€ 8(æ8:ÔA€ @ÅÌ€ @€@sê @€ €bf @€ @ ŽŠ9Žu€ @@13 @€ GÅG‡:@€  ˜€ @ˆ#€bŽ£C @€PÌŒ@€ Ä@1ÇÑ¡€ @(fÆ @€â ˜ãèP@€ 3c€ @qPÌqt¨ƒ @€Š™1@€ @&“ ²@1™P@€ ^AÑ\^d@€ 0>ÑÌs$Ê @€ %€bf,@€ @ ŽŠ9Žu€ @@13 @ˆO]â IDAT€ GÅG‡:@€  ˜€ @ˆ#€bŽ£C @€PÌŒ@€ Ä@1ÇÑ¡€ @(fÆ @€â ˜ãèP@€ 3c€ @qPÌqt¨ƒ @€Š™1@€ 8(æ8:ÔA€ @ÅÌ€ @€@sê @€ €bf @€ @ ŽŠ9Žu€ @@13 @€ ਪª ²@1™P@€ ^"š}ºÅœÞÑ@æ€ @I ˜“P€ @ ]ìifsºÎ=ÙB€ $$`D3Š9!1Ì @€RA€uÌ©8Í$ @€ P3¯ÌªŒÒÒ € @ ›Èd2’¡~eUF7?Ù¤@€ P­’åU‹fíuÌ%¤  @€@·%`D³ÉÅÜmO6‰A€ ”FÀ·šÅ\FZA€ tgZ4ëµ(æî|¦É € @ XÁÇe ˜‹eˆ= @€@7' ¢Ù^ÍŒbîæç›ô @€’ÐZÙ–ËÒÅœ –€ @ÝŸ€O.KÂ(æîÖÉ€ @ (Ì1… c@€ t0rY¯Ðä™cN× [@€ Á%bŒbŽ!F @€@êEsuê0 @€b hÑlL˜cŽ¥E% @€@ʘåËF7£˜S6H€ @ –€|3¶löÚ VeÄ£€ @ eÌÔ2sÌ);ó¤ @€ P {)3«2Š!‡- @€@:È “(Š9çœ,!@€ð=%C·@1' ‡  @€@j˜ge˜ŒQÌ©9ù$ @€ ˜€­›Q̉±a@€ Á…(æœvR„ @(†€ïs(æbàa @€ >(æôs2† @(D€ç1"D= @€@ê ð©€ @HF€UÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒV€ @i%€bNë™'o@€ dPÌÉ8a@€ V(æ´žyò† @HFÅœŒÓÿoïN€ä¨îŽœp=æ,4”6 € € 0pÜcfó`Ù@@ #áiш9#M¤ € €Œ“@=bŽO×§ò)@@É-0âzÌÄÍ“ûdR{@@ ˆÎÊ hždŠD@˜Äшy7…ª#€ € 0DÌ€J‘ € € bÎÐɤ) € € àš2k¡¢ÃëpDŠD@@ sⱫ$óך ¹sÏ!5C@˜G"a½¬GÌÕÐQãôÄT‰R@@è Çã„YTkª‚ € €ÀVH;Nˆ˜ómÅzr(@@¶@|V†IIžÇ¼ *È!@@ØÖñ±co³©• ŸãëÛºÎ@@­*ŒÍ¹óV= @@`Ò $ÏʈGÖ“®aT@@–ç1+‘1æ–ÉŒ € `³u§œ#€ €´$@ÄÜ™@@¬ b¶î”Ó`@@–¸º\K\dF@°N !b–×ʰ®#Ð`@@Àzsû’x$ÌÕå¬ï € €ø^¬œËUC&†v•¤µÁГ‚ € €V (*V$ Œ•âVG\®V«@›«th, € €ñÀXá²ÝÁª3Xsz¼X:g˜Ê§Œ@@ +6î Œ5 _@ôJ)ÖùÐ`@@»¼°xd`ì(0vr®ã…ǹ|!øøéDÌv÷Z €X( Ø ŒÃCÉ9EËÞ³·!Š˜5MÄla¡É € €€ÝÞ@²F•p`ì¥h³¿Œ‘`¶»³Ðz@@ÀZos4Ž ­e¡á € €4 bn‚Ã&@@œú¬ ]ƒ9XB«!€ € `“€wg’h{‡æ17Ïö2ÄrE÷â5 € €YˆúçŸ'“‘±t<²ÎªíB@@Àx·¾öCãÄŒ8»~°ìÝpxƒ ¢‘C@@À./`Ž %+!a³],´@@@`äÆf†@@ Ç‘î’m! MF@@ ‘@ÂÕ唕Y¼HG@Ȫ@=ºá_­VOð®•Á‚ € €ÜPèLÄLß@@@ €4{³2ôo$pæ Í ÌHF@Ȭ€bàH`l¢b×ü‘MÖÌJÐ0@@’â±r)Ñ‹˜M(ÍDÌI€¤!€ €d\À„Á…P+5˘MJxVF:gœ„æ!€ € †’Ã*Ã3V € €X.˜MŠ[õ¯¾\ñœµh]ãÍ\ÙòîBó@@;tE¹¼} s1f!×#æA?b6²¦n(ŒfA@@ x³˜†"fÍšÚ¬š@@$àÖ¼ˆ¹×ÇÐõ(å2ƒÌô@@‹‚þÉÀ,;zôôyÕªS­9Ó¦:e9³ € € €€"æÊ 3Xqzz<ŒjEAseÐÍ—ËwfA@@À. -›ÑeóÍ?Óx·RQŒ\è+WkŠ–µT§M©”™ÉlWç µ € €F@³Âå³2jµªƒe1W?W«%ÅοþWQC cèŸ{j¨dR€wÝLžV•^Àu¼ ΙÑg/’Öè¼ëÌùW¡ë½; IDATcA@@ÀBÈÄ ·×…b©ËÌÊ(T+^J¾žºa!MF@°\ÀTöƑ݂븮ÓÕ­¹P­kÇ-:Åb1»tÐAfzVZm’v|íµ×‚½ÌËóÏ?ß<ß|óÍ­–ίÃ%<üðÃJQ­‡0ùƒ¶hS$%(Ðì®v°×X*ɾ €@öüÉ~Ãi!cÐ óPIy3CÏ‘8&ýQV¿¾ò·ÿötúüälE úV§¨QgêꫯÖMµÜu×]A ÙJ±Ñ¼·ß~»)PV­Z¥õK.¹$š)éu$þ²œzê©/¿ürðrÅŠJQå-Zd¤£¨æZÔ¥<ôÐCÚ¤üг÷ߥ,]ºÔÙ Žµ{øàñÿüó‰!²Æzƒ ÁtˆÄÄ–”̶ùûƒÙ1<‰BéJœ?¾ —¬8XÁ±ÿÖóyç§­ª¹êŸ8ßÃÓÚKL mžÃ31‚òÓäi©™dF2+ÀsfO- ›3‚<è8æQö˜½1fý¯XY¯s9=ʹœ¢ç–"fÕwÉw¯»õ–#Ó—•øø¿¯Ôã—ÜlÒh´R®_úãï-¹H;šuík}î_翟‰¿ƒQê zMê–&O¼>¤ €6 0+ÃÆ³N›Ûð&cT¾~§·×éÝâônvËÞ#ïý3èôlö[>r6è”ËNYƒÑ­/?6s-´ë[ëÞ4²BçU¯¼˜¦°]çî¦láÉÌcŽ»iêBxtVae0RûÀ(¿RÂsã‰ÍÕSò7ÞhfǤæÆG”u Å»fÆEâŽA¢&f¨¶z6)ªj0~¬áç}÷ÝW)Z OêPfÕJùUóFuK“§yÅØŠ €Äêñ§gè¡8Y‰nEÿ(bîñ®˜Q­8Õj¥ìæÊeI·¼(ä]üÍKͤd 9kʲæW(nN?ƬIÌš•aJ8ñ”Ó=ò¸–+‘õ4uAS4SÂ4T£­šä`Ö5kÂ|Osކx¢ÂSóí=å ïž(gŽ¥‰ÑÚªøUW±0×€ÓK3جDUFωS™51CûêٮʛšÒy«&ŠïƒDÕÜ$*%¨›É£]t “Ï“Xy@@–WÊN_o­V­T«ÕšS«t*•ÁÜ_}åü[oý§7ßÔ–jEKuÙ¥+®¸òìs¼ûM°l[OîññOì´]š:(ÄTt™ü˜˜¦4ò €dCà­w>xuÍ_²ÑZÀV¸{ù×^{ÍŸ{ñ²ï±c颋»Zõ¢èr¹j"fm®;o…:qˆ, ãĦQf:K ¤- € y?.®GË~¬Qfïë®îõW¿ßßÐ]ÿü›eóMÌw‰qn !ò8ƒR €l}çóÞ½þtfïªËZòn!_Èçón©Kñt­R)T+~Jaë×#& ¤ýè’°&&&…4@¬ ¤ý=’ÕöÓ.ZP ¬GÑÍ›½4Úœ/äò…‚[p‚››Ò]¨Õ Þ|ŒŠãkÅb±¥ÒÉÅ"€dX@¿Aü¿(³ €@Z×uô˜2u(b®å nÍuó®[ô6tOsjUÇûÁª*bι%>’¦•Ð|6nÎå½é2z GȤ€þÒ¸ñÞL6F!0A…¢£Ç”i~ñþ'N/†ö¢å¼ãœn†î[¢ ^fˆy‚NC«Å~°©GV÷"? € €@Å‚Ou‡wuk~ЬPY)~º÷]@…ÒŠ˜ÓlØ]@@&³€¢bEÂSCMÐK/ÑDÌ]Cá²2˜”ÉÜXêŽ € €@Ë& .…öÓŒf/bÖh²ÖÌØ³ùv€Rù¢YËÀì€ €Àäøóº7^_ùûÍ›>ÐMÎ&kFo.0}ÖvóöüÔn{í;znrX  Xð0LŠ1k BdÍ&†¶Àd4±Ü·¹ï£÷t‡™IPWªˆ Ða¹|¾4m»®îY)ë¥pùí5üú¹gÏ;×’/ëË‘6lX±bÅê•å½ìŸŠlP¬‡†ƒ«Ì˜/bfÒrÇžøys¶ßûýJ%.ö×±§ˆŠ!€+P.¾¾ú­·7ö§¬¢F—ÿ术Ι3góæÍ)wÉ@¶™3gžyæ™ÿðƒ¥DÌ8›coB‡Ãc­‡¾ èÄä#†»ø¸”0cútÂåq‘¤@ÀBbÑ>}š“:bÖd .[.«Wô÷÷Ïš5«·Ç¢ þ,´Úäp$l›uÅ oØYו ÍТ[=ùÇY€+13(Å!€– ´ò{Ds—5ƒûÅZÖEhn*zÄž'«°:@§*†L € 0ùì —ílõäï­[µõˆ¹:¨"fƘ·êIà` €tŒácÇœ *ÒAy.ë1 yþTõÒK/½ñƃ­Jož¿3ÛH­@¶•@0ÒF̾{챇ö]½zõž{îÙF!ÛdÕ|›—ƒN"ü`ÙtzzœÞÿ¹×{©Ä¶3§BÆzüößžÊùÆ×O'.ýûËÍK­(Öõ|î_¼4“=KSæû–ÿ³Ù]+ÚQRùm×¹sw94 ãçŸ>›šk\ÙLÏPôü /“(å×^ëÕ^fNE0¡"1±%3¤mŠ5;BÌá”8þ|Mêh©X2#€$ \vÙe‘9rJ‘³å!æÄã´øøãŸ}öÙ&\ž={ö·¾õ-=kÿ7ÞxC+fQ¥h“YѺҕÁdSºVŽ=öØpæðî-Ô†¬Œ“€[)׫}=~ŒœËçœ\eJa,·ÆTÔ{ýÒö#ìjýÎyTó+Î}Ü¢e?½/¨ö’ï^§‡÷#ñ¹_þÚš†¡“9Ü´ÄÒ”aíšÕÚEò÷–\túWþfœ4&A1x`óZjÂÆ<Ì‘h’ÿª«®Ò§jŸ aO9å3V˜Øüˆá­*J“4T”âcâ ,Øÿýõ:“G‡Ó;»É¾Lr"€4П?øàƒÛn»Íd¸ð •Ò(sšôJ¥Ò«Á³¶–ƒ>Øì·nݺ …Îæ¥¶ÞyçG}ôš5k?üðgžyæ¸ãŽûùÏþùÏþ‰'žØo¿ý|ðÁ .¸@ÏÚEMÕoý:3ª4í®]4€­Ì·Ür‹r¶UÇä¦OŸž¼T†ò•ê`u°Rîï×cPÏýÕJEöˆÌÀ°Âeí®@ùÄSNkÝ›J\õÊ‹‘¸VÁ®$nr ÄÒL~ÙZ1R6­„Ãñ&eN®Mú©°Æ˜ãMШs•j}ùòåAžÄüf«æ@kEÑ­f?ÃÒ‰‰ñ#&¦˜B4+,^´hÑË/¿¬Âï¸ã¾˜ÈE" 0v}ÝnéÒ¥‡z¨ŠRˆyýõ×+%\lü÷Hóƒ*bîkkQ±¿úÕ¯ô‹@Ϻ ÊÊ•+UŒ;ì0­è¥Ö9ä­ï¼óÎgœqÆ«¯¾ºË.»¼ôÒKJQ”|ñÅßÿýZ׳vѦ»ï¾{Ù²e¦.fwÅÙ*ùÜsÏ}å•WÚªcÃÔêæ,lE _­zóŽªõ¥¢ýyH{EfŸÖ ±ó?µÓÐP`dÀ¬TcÆ‘ïöÅ÷Õ°®É“2¿&rÄ ãÔ&&ÏœŽïè÷oÑ·•S+Êcæ{Ä3“‚ 0FÞ{ï½Gy¤FdÍü‡F^F9ZðÞêŠÊ5»ì¶Ûn .|óÍ7ÍûPNÁ¤ë¥rj]CΊ€8â³®g¥kÑ$•G¿Gžzê)³‹RÌ¢A±ãµ2Š ›­Ð4 /šÉk)ôÐâψÒÿÚYÌ.Ìôe…Å¿|à>þ*Qa±™pl ÕÀ³ ”Íðs£#%––˜9³ó˜c­Õ¤ ßA³BX­k _fN’[±b…Ù51¿ÙdþÚ¥Âs£ã‰Š¿õõA³‹¾V¨éX¥ê &’Ž(kŠˆ†@ÌA£}IGh[`Μ9O>ùäÞ{ïÝv ÁŽ @‡ÑZûW%˜}¿øâ‹óæÍÓþA¢^j]•T¢2(Ä×@²ÖõM¿#ôlÖ5½Ä¬›ck8Y¿Ñ^ýu³»þh®“þ¤©¢”_ gK³n"ò±ëQB†\/PÎç‹]S¼ÀÙ_4+1}›5ÕØd^üÍK5õBs‘ƒ­›Mš2¡9·Þr£^šYÎwÞþC¥(nƘ5…C;êÙÌo6;&––¾nÙË©Iú„­wÓ4 k>FdÔY‘«ùþŸVó›}5kB§[ëš.@Å5Tl¾½§<æpMTMÝ–,Y¢<Š­O=õT½÷™üæýH‰ª¼žUl“rØ„ °MÌm{‡>þøz<ðÈ#(Æ5oûAJ<á„LÉZ7[:ê(ÅÜtÓMziÖÍ&MY¾è¢‹Lf@k«Ù]™•xÚi§]w÷U¨ ðøJKM0•ii2Û&;íì o½õŸÖoö.-gsº+¯ºò´Ó¾f›E¶÷“{|ü;˜‘–²’Š¡5¦ÛäÉŠ•ãßÀKLLyD²!€t À[ï|ðêš¿¤¬Øƒ÷Üúw÷wëׯO™?3ÙvÝuW5üä3g¦E4¤m'üÙµ×^k†M!ú@µxñb×-:ztOŽ˜‹JqÛ>;v„€†–ã¡ëˆšQ @k;¸Žã_5ƘÇß4s%ú³ët»ÞEÌCÑr±…I™#¡A €Ø*`fýÚÖzµÚ¶&ÓÞV¼Ñd…ÇSýýÌjõ’€¹UÇ Ëßâ—œS×#ñótbbê"Ɉ Ð-üÑ_¢;Zø»ÀÂ&w`Oíð*¹ ŽÝ\®¤[Kø5Õ3sçœ3½qé‚únfçT‰š €Lý©9-ÜÿyƬÖ®];kÖ¬-[¶L–6޽žS§N}ÿý÷Kº \Åbz”ük&x‹:·ð´qÑl»À†›u¡¿ðôó±—I  €–hètã‡=é;wϺ£Þ‰'ž¨ËÕ¥ßk²çܸqãÓO?=o¯}'{C¨ÿ„ ¸&>¦aè£(ó„Š·Tø›zôhi2#€ ОÀû,ÔMö¿ÿÏ@¿w»>K.+\þäƒ,i/ÍlOÀ‹˜µÏæ7Œ1·§É^ €Lj½ì¯Ç¤n•G`"¼ËÈ…ãc&L„2e"€ €L^¾R6yÏ5G@ØDÌ[C™c € €L^†7÷û/ÿuIµ:Xš:½oó&¿yµ)ÓfömùÐ4•uèôú}€>@ Ð2Ñ>Ò´ä\>ß=söÛÝœÓÈsî /¼õÖ[#©W\qÅ=¿ü½®4W«yW2¯U«*Åäaú}€>@ ÐèôLõZ­Ppó÷Œã÷»öÚkÃßëS ¼xñâÂpòÉ'G"æ'Ÿ|rí†ê`¹?§kç ÓfíP,k…uèôú}€>@ Ð²ÖfîP­”s¹Â¾{}ü裎\ ãÁl8Æü¯¿^éT«•ê`>W¿X³n?Ǻ>Zà`>_á€}€>@ Ðèé$vrºGæéÇ}:qŒ¹á7ÿeç îÌíçèÙ@ Ðèôú} ƒ} ï…»3¶Û)2í"xÙpŒyůjB†¹¡I¦æ©0'Û?ùœSó3€ôú}€>@ ¨äõ½œó¥#÷Icnx­Œéûø–ß377™¾·n4YÇ>@ ÐèôúÀîóæì<«6½»˜ÏÊÍ«5gsOùÝÍùÕúKbžînÙcÎôŒ5¹§¿¶îÖýe‹šœ¦ß™ÈsÃ1æûŸz]YùÔe¼pÀ>@ ÐèVõ9³»O8tß/ùËsçÎÍÌ‘uÙ‡ 6¬X±â¿zvÍÛE®„¶ÓöS2ÜäÿûØo×¾Ó3j>õèù‰cÌ ç1›§lG³¢gÖ1¡Ðèôú}À’> ¡Ö3Ï@ ÐèôÌ÷Í]Öd ï>n™[ÂAø<ÚÐä4ý6ñCQÃ1fæ1ú)$òÉŒü¦‡á€}€>@ d ÿÙ]—.]ªé‰ñÓ¤NÔó’%KýíúÈl‚/´s¶›l†Õ›Ço­ÏcÖ…åjþÜe…uèôú}€>@°¨øAqæÆ—½™p?!ÆËz“Sýü6ø0ÔpŒÙ›Çœ«/°V«²îÿØà`Þ>pÀ>@ Ð2Þ¾pðÎ7ÝtÓ‡~Ø ‚j3ùWßÜþLçž÷o9.imüþ‚ç~ý½Â“öN¦/ÿ}ûÛß~ìYs(¶&¯^vÌA—ÿÞ¯Êg®‹6%u dlŸ"hò¨±Ü—Žb³ÏŸfþ yLOÅú}€>@°¹èìóóêÝðâÙg¿xÃV'ì0vÌÄÄäýÓ¥š^ïÛ&%]I¹VÿèèíZyé{õå¶Ú#%eCZÛA“Óôç°O°ÞpŒùþ'ýë13ªêSá0ôS”ñÎ5M¢ÐèôÓ4ù?øÁ¦M›ÌoÀqy~cÙ±:·Ýæ\¨çÇ¿±g¬ÌÇ¿5ûûóŸlILŒíÚJ¬Y³¾óïxó˜GÎ&Ðóš¬Æ¼ê² ÿãØVªÒZÞö)L“Ͱº9¿úyëó˜ý6¤‰ÄÉcN78Ðèôú} {}À´h<žßxd…sê {îy©ΊGÞJT¨9Û[Ž]¶jø(‰‰ãQ‰ ŒF}µÍƒ¨qÿïì““ÂeŹõå[û…+áØeËê©Ç. $†Ú<{v=c,¡ÍºÅvkÔöpzd§ú³¹~J°íŠ+®ðç1×o ©ásÖ…ƒƒé!8à@ Ðè™ï_8x—ïÿûï¾ûn,Üj7aÍOý7ç>tÁÎðšã<ñ¹ç:w®ûÁÑ^êá×8W>£‰‰í7¶ßŽ;îxÙe—=öìÛÚ>cjr¸M±#ú jÔÒùC­»ûË~›G6ôçåmÚ;Èïíºhõ7º`ÍP Éh’4yÔ~û¥£öåzÌŠ‰Ã7L}“Çœp Ðèôú@öú@¥Ré¿eå/ï¯-:lg¯À[T»æ‡x«+W¾ôŸþö¼CüÔ¯]|†S+÷7H¿š¨]ApUm¿ÉýåÚ^y5±’\¢;Ï{îݦu}g¨Í‡s†óÒÊ•jò/ïÿÃÍç1‹dœ?\sx}W¿líèû´¾MNósšyGï’Í[6mЊÄõÌ:ôú}€>@ ØÖtÆÇoyê¶þøÇŽÛÇ_Ž»áν=å•þ®Ÿyù_üKL¿ºøÑw˜‘1žIló0»uòÂz“F”°æ§_ºÀùÉ*-ýíÂz놚iª0Ôäèáeq†¿£¿\„©µïÓÎbâà4}ØäŒ`gФÞk®¹fýúõ‘È©½—Ï\þ©îýȽÿy·`÷µÿëŒ^¿ø•ëw´í¢UúÂK/ýäÕs%&¶wìØ^»îºë•W^™8y¬MöZuã‹æˆ /õ<”´ð´ÓœW÷¾IIaŒÈºá8§ý؃ vJrbб¶5Hš@hÞZÀœlYuêÛ>ÙÚÑB}ßOÛ1 ç×zÃ1f]Ùúäá}c“uiá`º8Ðèôú@ÖûÀÚùòË/ûmï¢Å[4Æ|Ýu×=ê_9ÛXÑäÑúí©£^9ÒÒDßä1h8à@ ÐèôŒõͽƒk×®íîîÖ Õ,-S¦Lyÿý÷«ñóÕ3àd¾Éi~N#!±yÙdŒÙ›Çì]0Ï©Ïqa}H#ôú}€>Ù>0o§éÇò©Oð§w6<ù+ß\ûV©8ÊÍ+L—˜,Ïåêú =¯­û(~ÿôÎ5yíºõÅB0Z:YšÕ¬ž¦Éþ¨dŠ·=ø¹nTP“1æUö!@@ì 4cnø±IÑw Àº¡Àú}€>@ ÐèÙî‰cNd!@@À:–ǘŸ¢p Ðèôú}€>@°­D>+0Æl݇'Œ € (Ðò³mŸ$h¯é78à@ ÐèôúaJ<¤ IDAT€Í} 1’NcV¾_üâÏ>ûlâ$"€ € Iƒ>ø‹_üb¸iºÍâÅ‹“¯Ç¬¬§œrJ§A¨ÆU¥ŽªÏV®ÌV>ÜÖ?ï¹à¶ðÉÓüeãbØ‚-èͧÑçÖ|_šˆcÅËlÞÒF[Íx-@Û—5ð4nq^¥¤¼ág¸ƒÄO½i¬1ëÖ/GqD¤ñvHc”íŸÒpë¶fKSk|³…Ow¤ä”JÓaZÍ3q‡Nó&ä1+Á³jN1•LS`«Í'?“] Ñ°ùyi´Õ´ºÉï¦`S¼„xÊØ Û+³ù^‘­M«ú+³Éß([óc]`ì%Lt ãåúž¬ Á^Aææ=3Ø%±ðp©±KR„ (NVùùcŽ9æ®»îß#©OLD·˜ bÇ·íWZÊæO„üÄ5ª½’'®‘·Wï×ÑÐ_6‚õpŠêo^Fžã{™–éí5œ½Ȇ@£áô? JhäcÞ?÷JLlTNÊôàí"eþ [¤ž£‚4¯¼)­Õ:lÍü[¿†Rs¦Â‰ás¤+A…›g3†£ž¾­IͱÆ" 8ù3ŸùL~æÌ™*Å„Ïc).¾ïý$LP±ñú7JÙ¶ˆ¼Ÿ6ªdæÓ'ΡѨ9¢yŒ¼‰á}Ãof¾CÒÀÉ" äxU'èýd,?øA=ãïHñú7OÙ¶¿³š×Íl ž¾íÆ9¨OPíø»½R‚b#[µWü¤‡ë>Jòt‚€‰.\˜ß}÷Ý8à€eË–MDÐÜ M :?áé '¨&ñbƒ·Úø¦ ¥jGÞÔ"/›+K›ÛÄ·QµÔ¤ÏÁûc8ü-5KD´4Þ‚ÌOǨo/á±øáFÝ=¼KÛ?ÁQ‚·… ØxJxS£¶Ç’&E¥™÷™¶’æ(“:O<=—9áwoã`Jˆl ¸LN½ g'µª%•Wl¬ùÀ¬T*¹×_½¿¿ÿ7¿ùÍï~÷;µÿ«_ýêa‡ÖùøÖÐUJyÇ^ó±—²ªÛ0[“_æÝ0±n‘½š’X‰ 0ñzwR9M~~E»4Ú4–FeußmnÕä72o²K“MJ#½sž~úéåË—«> —÷ÙgŸR©”{çwÊåò¦M›6lذnÝ:Fš;çlQ@@m" ¹ËŸþô§5º¬p¹X,þ@ØÈ£E–ËHIEND®B`‚PK !…Så `&`&word/media/image11.png‰PNG  IHDR¯µ¦½8ß pHYsÄÄ•+tIMEÜ +:Ç ÛtEXtAuthor©®ÌH:tEXtDescription |hardcopy|2012/11/02 10:43:58 lim_j SGA250167¶ä>@ tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ' IDATxí} \Çò/ ( b JŒŠ"E¼ÐˆEe‰‰ƒ‚FT¼xýõÅü}&¾ç Qƒgä%æh š  â‘x`Ï((, xD¢š^ $G²GHŠD[7'ô”ÛŽ˜uÍû[²øu$Mžê·Áïçc™¡üêïÿa\fü"/̰øËÀÜâc>˜¸8n3¦úý™y,Ó ¡´8ÿ¯. gëÈAS[~ï‹ûBë Áä]Á}aø”b>=æ£RF£OçÑæ&š%ăJ$÷´}‘­ÖSwŒŒN¸9nng•2Y‘dñ,W0nKÊôE`u#6PO5ÑÖ¹ŠÅ³6©³V++Vã04¤·¤¼øÌ™ #(¨œ"C°5±ÑjÒ_K°áv6šG ò§µ¡ÜÅþCããàÃE}0ˆ^‘ƒܺ†‚W?_ vWFíHÊ}ŠÚa†Ø­³†(ÎÜ•(„¢ÞÂ]4r°LÄà·bÆOÙà%DW“®OX²"ª6›pö„³¾ E_íðûdüª¶û‰‚ñPì^±X ¥Ìl/,$£ý·rž sl9·®ùMØCMÄgÚȘÏ÷c~ šÒY£UŒÞ  ¨\À"œ­•…~æÜßii炼âÒÒN ècéH Z.¯ØôUø’­âVt+ ¡pº3àiºN42n=–ü{Ôö"´ÿÚ¨¹>Œ,^½"Q|ò ”˜5aŽê­ Å<:\´GˆŠâ†Å3vÅD3Ù0«™:³eiÃáK»TÊŸv"3íäÅÐ>¡ƒý¹‰cãä”s‰”>eì^¥w˜^müÐI'()+öL /H<žÏÙg\h¸‘Á®@]¶Ø¬bue”ÊŸ7”–<½wï–ÒÞÎ^®´4’ÙIí‘À»Sï&Mœ«£t7‡]Í[µkÚÜ5ÿÔêNÈåÎ/Ÿ•]yañ³§Ÿ‹ÿ£)RŤ_VG¾/X r4Ü¿{kn¿‹„B€ìa'°#!ˆÏ°C.¯Ù#{R© ìQ;wWg‹ Úʫ߽ÌÕžý£[öBö²íhÓk!®¬°p(¼Ó¥ß±¿þ°°Ÿ)vùóvЬPr9!“)e2…Tª„].WèÐúî8GS‚¸ÖV9H"ZW"xEEìH’°·(äóÁ¾M©É6†dz‹º9{[4w;û2ÏSQ“žn:"§V‚#¥em‰Å«”2¥B¢Ê¥r‰âëôù ‰raûm³õ8;»äåIçÎcpv…Tñá¤3®¸8¶.fKå£9h r‹]7'þýq$.š 7Rð<킈°³·' j,¥%-\›·4Æ¢´UޝöhÙõ5§6ƒ+žž}rã„üî½2o¥’ •ð7øþøÝ{÷B1¿K(ûÊ+*$âÞouKÊ2Oߺ÷ð‰ùØ´…ëÞÙUT@Š! eby™LVT˜ÚÉËâ¼Æ6¢Ð+Gƒ€ºbu¡§Cúv4˜ÀÉÌl׿AæÏÊ't9”!G·òG§œ[z´ïL.c”JR¡$åð© å rÌä9lh€¨p$ý„¢BáßÓ÷ÜŸWR'Ɔ[ M[@4QhpÓåQA¡BV.—º4'盎ÒÍ@ƒó@lؾz>Û$³ÿ>—2[+# \ï^ØÜ¾×»¥wœ›ô½þMë·~¿S—yÚ”IŒ}i⤎xÙ~D&D¿½‚ɯG3 GM„˜<~lN^¡‰c<„D‚KRÅb±n“ ebĉD¢Tj‹õŒ…p‘R9èØ.75C 4æoOïÞhí;éñ³¬àNQ {—)Ï‹î,]°\®„åŽ Û7߸já'㇘–)¯§Ÿ¸÷‘Â>À éEA *Û˜cŒåK¥ TlPmzP 2E¹¸\I4<4P_g¨<6ÛÔ4åzÅXTî?*üd ®üGÇS~[³ñº×–/:È%-Z8}¿÷Ïn¿w8‘Mڇݾ˜0"`o ~¤Ñçü5„³i¿¯\oAŒ1–Lg ©TJ7@NË1ÄJ¥Ì¸/§)æ\Ðø 2ò•J,òäøŸB¡ÀЪPÀÿN§Îe*dR¶4Ïh&é.Íÿqô7z­0ÖX+@`øsǒо={x^:WøôrgìLA‚\sƒ’@çO&CTQKLÕÄh™ìZàfòÞÈ‘½'OÍËåà{ ä8$à™,Ü«ƒDÚ03UýHßSÈå²iÁ´ýÀè29)ƒ¸ŒDNJ¤„DFLœ9Ï24(\(xØû $ù@Ò¦mÿ£…Ïûð>M›5kÝñUçf®ta?ƒß ”‚ÄjôŸTŒÙ¥Ë<>Š5´0Ê„L!‘ ™ îýä ¬$2™ B}ð¢ô…Že€††ìàR}O!•ãLIäÓi¿}±AØi›Ž÷£qMáT(‰#Éñ¬$§M™L_Ê'—oØû)íœ[¹5CŽN&Ð@K #„qŒÁ‘†’lBã&XE R,V”•ÉŽ_ú\ÃàèØ¨iG©4CEØâÄ…Û´Eäö­áàü©Cr…R*#ΞQ¡BJ…Ž Æ–5M)((ñ“.OS÷.n­ß_•ö ,Q’EW¯d:ùÍkÏþ ƒ–0còGŒ1†–<êƒñ¦Õ0h…u ¡¤D&ã…ä៾ê8lgÂ÷ì¿Þ¶£¨¼L@( <Ø5ÀØàû¦ö‹W³ÀèýáÅÚ¡ß’6nUvÚšÃß²ÈèÀ iÅ ³üœÕîõf^=N¸Ùïþ5éð½vû’޾ÍKËJŠ…Óò ÿaŒ1ðTžÀM c_6"õ4bC$à(ô êäèÐÄÑÁÅÙ©T\î( ¥r™cƒ¼§ÐM*‘Bà…ÄŒ#”˜41Zà@*·86û£¬´ôÝ1òÜž½0¸Í^i§R™ÃŠD·O„Ìh %ÇcÉæSCåå°^”ýpö¬òYöº/–7q´¿_˜hȺ|žP—‘,¡PÃ[7èQR!8jºùf­g‡6MïÜC÷ž¹4j444hß&$.¯\ŒqŒ©¼;Gß ÆgŽ_-)yèç ϨÇ}¿ã&,©)ø|³©2ºÚ#¡¬o?—fΦÖl5ktFwdfäÜö¨¢$1ZZnïÔT/AìöŒÌV"¶ñ´wµ&nl­4r‹µ µ ì2¡õ}p~« ÔFíS¿¾øWlp³YÅêÊVµ†ºš?®¥àÑ`©Åê3?†úì]Kç¦·Š¼Ÿó—¥ýyþúdÃ{ŠèèèÒÒÒ’’xCSŸæÉÏE×Mš4iÞ¼¹««ëîÝ»ué†hxöìÔü´lÙ²qcÃ’@Þ õÆðF S fdˆ†’/^½-‚'>.r©òÖmÂM_‰ •IˆR1I”¨‚DeðI (3“à×ÒŠáU…ïX5 884jåÞêÁƒûÝ Ñ¥,vöv¸Ø£Ú›Ï^r%/9¥2âBìÑÄ›þïôoe2²B¢P °H¦ôwßN" Õ¶µÅH{{;ðu%h€f¸`Éš@ƒ(§¤•KˆçðZ¸¢DQáððÜT¢DðÞA#?Œm¬üøAÝ?¡µo¯¿qjn' &|tnÓ5]´}T§>_5™ 'ÅbÁè`묤Ãí¤alÀh€oШÿ,b•çôåd·qa½qwñZRV.—MŒ8qÔ¾ës&®=‹ëÕ¨’µ¢1Œ•?øÍO}ŠË‡RãçÇo9JΡÍSÏBÅMŸ†~-.ÿ(Çæ9­érýä _ £¡ÇoØÈÙsøž”±î h  Éœ)._¾Ü¥K''x•PÉF¯P@ÌÏß}£¨°ÿèƒÀí;.Ax€ïúµpÚYã³oÜÌ)Fcl‰ùÔ7©lóº¼ ¡Ž³gwTW2,Ý Êƒ—5]LŸV*Ñ {¥üa`BC¸ÌP¶dØ¡Œ 55õiq1c«.Q®Ã¥ #Ž™.Š˜wSß}©h4þË¿&¬>Kg ˆ *× ”ŸúkÆda¨ñèÇæ¹„ÄÛâ‚·-ùÔpŒD*ÙiÅš>%‰|•L—yGp¯üxz 8?òGÿe,y ŸT:k10DÆoåÂÅjt½ªð& :”œC/ÇÇ^Îi´½í¨LcÁ/Éç0І¿î¼zû¬Ž0@ÇYŸLR1±õæ€'ª£«Þi¾(e,ë cš7óêõFßïÆ„nÍ×ô0ènbÖj“2ÚÖ Ô×Ö ï=èŽtØíý÷߇ÇXÓ¦MssÓû¦¢F>HPh ©:ð§ÑqF€›Oà7Ë3ô}ÿe‡ŽÆ† 1Pgµj·s³†Ç`"vôñ×pÂÏKo×0OÍ8º]¨/g¡è½ÅqšÑ”($µxúííÃÝÜ2©}~# r”ÀøMI†ØVÆn‚ÇX5j<ÚddbËÍ Ïå¥WÊ®yñûnŒýíÒÍg’¸ÿìÏaKOAQ«aúB<§/ž¸{lË…ijrÞ¶mø!™äajÞ‘ƒ™ÃB؈žºf~6kÅJ¤mþLÅ«’‡—OOÕ¼h÷¯šHžÓS.¬òÏ }~- ·À•Æ8fˆ t¸3f¥)ÅÅÅGŽ ‡u£Dš­§o%I¦¤æ»èˆÞ{)ŠÞQ|ã‰KfDÛ øÞ’JôÆ $dÃã >Â~îªJ´>_^HÁJAõr×Ü9îî¡ãÄÄÇ!˜ÄHD!.|)ì×Ï}9w§xÕâ´3}®Ç‹å†¥¶ŠüžjƒÈKÃ&Ž‹Yp¶¡þ|EŸÁìÌ«H€ægΜ6lx‹-Øxh4àZVÞç»oý¤¿cÉrý*zØßahÔ{»“Î[ Wü{ Ìr<§*Ò)Ç¥V„ “ÏìÃEëèTË F"B¦z4fÄc¨”˜²®(„ZVª›õÇ"PHQÑzUÕqкGô ÌªjFáÔ¹hÀÖcyÞЩS§öí=áymnÝ|OŸ>w=+ëÕÆ#šÝ¼œ×îÒk%^n9¥‚6;?O=œ<ðÍŸ¤þ”tÌ»c[Ó¢t,LÝà¯kuF"§ÜbKÊf °·ƒƒ½ñ .P=QÊ3Gͼ²²²Ïž=û¶ŒÌy0©ðÙô—/u{96´™Ü»}+hÊɹÌ=}g˜#M-–Ô`hF¢Fþ€Ùj/y߀î^––6suut¬Öí+W®€ä¡~Dq™ÜîÜ Gû^~þ®s#ñßÏ ›˜Õ4E±¥éVc$2ñç€4^_Ð ÑñÊ+¯Ç³âbã\U³iˆ·Sˆ÷Dºï£GôßÔ«š$¾WYÀÁÞ¾¹›ík]¡†h€6`2æ«1ExA6l†ç 6¬-¯šu-Àjd@Ÿˆ9¦kŸHå{52"/¤ú°@33kŸâÑP}?ÖŒ+f ¨}º“w'?çöõìBMíÓË㊣wÑ©B”^ˆ.ÞgDÞ¦õ6`S+_•Rg0˦éx88Ò룦hÙª4º w² öI´o0ìÿü|YüËøÔ>‘îûjü‹Ÿ ?ÿ§Xx÷q³eÀô>û"Dp„·”îÙð:¼Æ6ð¥ðÆF•pQÄ>­“…;§Ã#ðsó½óžNÕ:ÛqGNQ,CCzzzy¹?§€%WgÃsÃ=ß}óCÂ^²¢dÛÖ _oÎ"Ô>¥íé ï0éÚ'#såmŠ^Ð=Eë“°;XPcÔµrBÞ¦Uàrpïù»7¢ëSU|Íú£wf²U®­qX††ÂÂÂC‡Á‹«J§a~í“¡¨¼ÃûÒ§dò¿6ÀÏ ÝGÅóTUNš&½h£¼6ãP}Œ…{‡GÜÈÍÃc'J_àc!4ÚѹÈÍ@¾ád8vn`r!!!ð:ûÁƒ¦'J×>)ñ»q\ß5 r ®}j‰¾ ³F‡òé9‰,?£¾öÔ¦V97l‡*uLß¹J½”H_° íÆédúN¡ š:„ãtÕåž:C“qRªÃ…ž-Ù)ÓQdÆD¡ž¬“|Óv±íV‹Ñàîî• û÷ï‰LesókŸìÞ¡¨8Yc'©7Up€‹X³lÜM¥ù°‘àˈp*ããc¸Ü!äÞ .w¼ wª¤ª…ke €è´²2Êgg·ý‹ÑS‚b¸±cÇ&&&>þœm†FµO$UûUó¸ö ΩöÉP‚wçî´/  PUç Ú`؉ý¯ U,?p^ØyP½LÀ½pîèÞ™aÝÈ.R¯E_¾™l•­*h€Ú§½{÷FFFB•ۼ̯}2’ö ,ì|TKm«(;¾†±ÿŒ:10°´I…bñž¿rŠF8„úhã'L«F‰úDùfô²a‹ÑðôéÓ¤¤¤1cÆøø˜ZkjŸŽ¿\S!ãÚ§k7~»ÿ.Ô¯}26N)H¨z&·ƒT2 AÄèìîæÆ†°"Œ,•$8õk…C´aY(¨SŒ€m] Š3É7žw(zG{ÎØ¾ð}ÊCv°³³ƒòyH&Ø ÉÓ³Ô>-ø~ÿß®³[?ùܱ$ò¦Ç¿œœnèºCSû¤”W¬\½>#Eï7¡M‹å[kÖPê¼e¯ö/ZödÚÓÓÓÏÏÏþÌÉ ^š_ûdRßX«° fÅhXX@Í\~~þ#Y™AíSP??h‚ß Y ›%­VíѰ³ æÛ  Ìc‚\tkŸþ5×ÓMæ‹â9kÍÖBƒf3Âü`¯µùðUÇßSTg0¾¯[€Gƒ;¨VÕ³V¦àkŸjÕ54˜µÐêñµO5ä£ÚcÅLQÕÚ'úݱƧú¦Ñ-IR·h_|[­xªöüS»#Y Õª}2ߺ%Iê'ÈÚßÔjØXž= cvæ«ÄeNËÐP+µO\6'Çu· µQûÄjPêÚݤ*pÕ©X…CmI’ÀèݧVža’î¹yXu«' –¡&]µO¬¶M_=‡~muͪ-I"Yk(ê”R×Cù%]ú°#Ì ¬jÕ›‹ÑPµO¬Ö P•"hª›X9Œë”||v õëäz50‚ÅhûX·ö —tœ€½XÚ$]ÔAá:»Ý(îÕoPX†ómÁ×>™o+Ûá´43äkŸlÇÙ•jR•;ÌJ…ò µŽ:Î*jóh°ŠY9*”GGgµy4XŬÊ££Ž³ŠÚ<¬bVŽ åÑÀQÇYEm V1+G…òhà¨ã¬¢6«˜•£By4pÔqVQ›GƒUÌÊQ¡<8ê8«¨Í£Á*få¨P uœUÔæÑ`³rT(Ž:Î*jóh°ŠY9*”GGgµy4XŬÊ££Ž³ŠÚ<¬bVŽ åÑÀQÇYEm V1+G…òhà¨ã¬¢6«˜•£By4pÔqVQ›GƒUÌÊQ¡<8ê8«¨Í£Á*få¨P uœUÔæÑ`³rT(Ž:Î*jóh°ŠY9*”GGgµy4XŬÊ££Ž³ŠÚ<¬bVŽ åÑÀQÇYEm V1+G…òhà¨ã¬¢6«˜•£By4pÔqVQ›GƒUÌÊQ¡Vÿ z›³KÏžèêU›ÓªŽŠFö\×W' ˆ $YGÆ·¹aé¿d”‘º•ÖŒÏ6ç¡:TˆGCßæ†æÑ`s.©C…x4Ô¡ñmnh 6ç’:TÈðž™u¨M- 7Tõ~ŽU6£ÞßÊ-{ñ¤Ê‚¸Ò1ûü/¾ý?4Ö6;}Ÿ1±¡P‚¾a³a²|¦h(7gž†™‚­Ï”…[ I®@R9Y!#ÅRR¬þ”ÈDNÊä‹ó‹Ùºs޾ám˜4=ëôØvœ››Âæ¢ú·öp/«Pʤ‹œLH¤LNÈ𠄸x5—m ŽÒa¾J‚”+IÌÔÔ¬$=y^N–Iˆ² ø$Ë*±&hgJ9G½Î¦6Ìš÷bj ³6ÿoæåKK$©DêÒ(3b¤¬Î'”¤’@ ¸h”„B‰àê41:z¥ÌÀ®#–e/ëIÑ®|°úWf«‡lOy;æãµ7™›µÔ®ÑGzŸ2‡³2Iæ´·u¹;.¬·†ÓĬêg$0eª ØÌ¶RQ‹1ù?) boêE`$¨l¡PÈ•"”Þ€ÔߤpúŠ„>‘¹ªuÃÅk¾?à$ejçÅ~‡ÉLX‰³;ûÇ©Ö뛣ñIDAT¯ˆÄ˜7À™¤Lª@D¸Ô‘#XáK÷MÉ$¥ìâµ]JRBÌJ<Œ¥›)4H*$å¢?žþsûåËbB^VØr¢oßNn „\êäåÙ{ØÐ‚+î¯ ç L篈X‹¿o;Š˜™×®ºò †^|s><Ô˜ú™¦ue“S´{×IÜÂÒ²‘Þ°Ú¨‚põÐàq€þ‡P¤°|‚÷áJ`µkç1“ç e1LúâK–züs˜Ôd‰>‘#(‰n]C1+±ã¢rI\ȸ¥OìŠYCDÀy1A% „¦ú¨åP'ªM8:&œ†CJÒµØ%»tÛÌ=6…†Ò’Òÿ·«‘DÒ^.óËäo wîÓ²,®ä„\ ÿĨYóV‰‰?4jN/óX†¼¹ûÿ~î½/8å±0Ø*™^+àõB‰)8BPAÇM„˜<~ìÖݽwo!&ªy+ñ‚h×c<í¢‘C™J•WŒÌ&\»¬>hŵÈ=U ÐÔºáà%é‘lôGA“s÷]3·lçþZnÑËd¨ð%ù¸\VZ¡|xÿAÉ‹’¸¸5›·Ä*7"Zu/€:…zÜ-,D7ïÝA=CéåB×èiý¯¤ÑqBÕ³ðö}Ž-`ÑïCq:ç•ÈÑáÄË‹eAçÎ0ÅŒ / -`ÿcnˆQá}Ç…÷06|À˜ð ÑÂwFønèÀ“gΛ!O‡Å§‹JH¢ÝŠsIÌh•·/&&Sé^”œx‘"Rœ+Ì»mð‰×®MDê¤^Kà•‡f±¢]]ël*6pÿ7öëÑÓ' :‘àLþ½×ÏÞC™x²ÌX.J¾×V‹tÃùí¾›óÊŸÓ²Fö2 íŽùXÿ DþÚ®d/£ZÏ_9­’x2íüÌ/öEƒ*ìRÛI“r4lÕ=€ãÝû÷áfâùs !ú8›öûÊõ;uEO›2Éò‘„»rcýaõ‡{â(¢¾ôûøeG 8A@ ˆ4§:Uà0¡;NáÐH‡È/~‚pt¸*KJªÅï0ƒ†½ÛºÓ’rñ­ë׺¤N™40åDÞ~*ÕÕÑ–Í|‡ÿÑï÷ÃDfM›ðË‘Œ¨w߆ðôí¥\‰ðº?v#`õ0q漌”*%j=KÁÍ‚zIXU ‚ˆ¤ÑzyÅ,Iêw˜ÄZ‡‚o‚Ööþ$)ä¯úñ¥Ys„iîGÃae—®Nxç›ïæÌ˜bø¨1ÇS~[³QÏñã£&ÚÊœ é\‹ÝS XZŒÝ™‹9­Ní¸„Üsåêkµ°£Ô¨xy¸,æÛg]š5>žrâÁüYS ÐÏãql`|ÜR£:˜! ß’.¾ˆ“NÕÖôÕBˆÈ}Üä@þ°°Q}ß8`†Ò\eɹ•ÂÊÚ wÑK…ª ã³(“ÄO"ª·U 0ú¡s÷`¯žußûì_WßîÁ¦!ØZ9M?)[óÍÔ&§'i©òß&&>°´×ù=.>|ü/Í,ôbƒ‹›;×§gŽþŒÓ¼.*7ë¿æt¯<«ÔSrÈHÙÒW8§þÍmF/9j¾vÈÆÓÐè`˜2 ¡Ö ܲÝà!Œ¯¸5 ki+€q´ì!¬eNnÊ…¨@+þÿ¬³cë ¸æGIEND®B`‚PK!y ÄlÕword/glossary/settings.xml´UmoÚ0þ>iÿåó ÐRE…j£ekë´´?ÀIL°ê—èì±_¿s7•èPµjŸâÜs÷œïÕ—W¿ì)h¦ä<ˆGQ0 2W“å*º¢ÄÔ˜¶ÿ䬭̊³jÃÜÊgó½ÎÂ&qå²åŽVhø©”ñeˆ¢‹‹Ùd»\Xµ· 7“Ù4šYôÒq‹ÄNþX\º“-Ø@¸b/‰È€‘ÁÆî´IO_˜ôxFq7Ò—HZg qø ;ÜmÛ‹¤`ºº¦Û––o”=o§¯Jqšîž¹rÌ8…¯ êÊyk€T®Þ]ßTS«ŠuãÚ§ƒnHUá £JVÆó€³rgbÛ„ÿ |BÚŸ¬wظÅðÏbíÉmd¨Ý¬‚;¢Vwèe/›ô2\NoÚËμ쬗{>aM²Ã©Îä®´ò­â\5´øæ…óàHä’PМaÅÓƒÈú6rgÚ¤´Âug k»Q>µyîßãÅÿÿPK!%·¤ºioword/glossary/document.xml¤“ËnÂ0E÷•ú‘÷ÄI…PXµbÝöŒq ÛcÙNRþ¾y@„x¬ì…çÜ{g<óåAÅŒå R‡ ˜¢°å*OÑ÷×ûäÖµ%KÑžY´\bÑ[ª.…¨¤èßÕ:žŽô†È×Ì`eHíGqŽpgš±m‹¤hûÐÌ÷8ÕÿÄ8º¦›Hƒ<\cá¯fïD®Ì}­9m®ßŒGþ÷‡Rv4Œ¶V»Õ,è ΢ÙaóN£Ù›£Õý,ˆf(4Yç Ù﨎§Aó#^üÿÿPK!A¥Ox¦ M(word/settings.xml´ZKoãF¾/°ÿÁÐy=îw7…x‚æ£7d&Ù(¹ì’h‹‘HÊŠóëS$¥ÑØþìÉrWWu½«ºYß|û[µ¿y*Ú®lêûÇ7E½i¶eýx¿øõ—pë7]Ÿ×Û|ßÔÅýâ¹èß¾ÿç?¾9-»¢ïi[wC$ênYm?,ïîºÍ®¨òî]s(j>4m•÷ôoûxWåíçãávÓT‡¼/×å¾ìŸïcfq&ÓÜ/Žm½<“¸­ÊMÛtÍC? ,›‡‡rSœÿ\0Ú¿rî„™6›cUÔýxâ][쉇¦îvå¡»P«þWj$âîBäéÏ„xªö—}'ÎþlçYÜSÓn¿`üö„CÛlŠ®#UûIÜ*/ë/d¸zC苪ߑªï¦³ïR„ÎÙøëÊy·ƒ¬=Yñ‡rÝæídfr€‹j³üðX7m¾Þ“S¸Z¼'ú½iª›ÓòP´2¹#c‹»@Â4«>ï w‡b¿ýs³/r"vZ>¶yEžu¿˜VFœ®Þ?åuF÷ å¾/ZÚû”ëÚ 5 æûýjØ×Ý/ÈóOËͱë›êÅù1sYâî‘t÷¡þµ#æG¼]‘!óbW}¬ÖEûÕ긳D¾ìW¶e[lú‰Ë! ~¬>ÖÄÐxÔ[àOy›“¼‡Ýü–O—“g‰ü2pñEhRc{=ÿŒÔ7ùÝK±FvŸÊ®üJ„‘Ë|ÐmMŠû”Wí«~h6ŸÿVE?.m‹‡ü¸ï‰‰r±‰z²öîù°+ˆ…æ)é¼ov¤‚ ¸:äRXÒÔ}Ûì/û¶Í§¦O(Á´äÿgŠÛvµËE:ܽÿ¦YvÙ“îæiYüFWlËžÞ¡ÜVùo÷ ÁT4P¸;-woHœ–MÓ×M_üÔNzùø(·÷‹[>ýjyôh¢wYžp‹z{%tþç—«2/§¬:ð2ý"}E„j2 EÇ×Y÷c³-g>¶å›PžMÂ@±£)ñA U”¶Ü£›>ÈF«ò÷Â×Ûï)ÆJÊã£ÿƹùèT~y>¡Èû#yÃÿé°Ñá¾<|,Û¶i?Ô[J÷0r‘«9©Ü g¡F¹§s01õd˜ƒT¤Z›0¸€D%uŠAË n­HR!Dì Å¢ÚThžaË 3žc1!†s,i$]„q"ÅÌud5CÍ*Âó  W ob=DxKhPžT©Æ©H•ט·Ô¦3ÚɨoÃÔ2m#è‰"ˆ0ã!A 1ƒC9jTR8b'Hâ!o’áà9Rk¤7)ÌL>Z1³²4ä‹0~¤1‰…6•”F¦Fœá<*=±†qb–˜ßdlµÅĦ)æ-% ¿ÉLE KšÁ<*ƒÐ æ H›Â| Ë4Ì.dï1DC”TW EFÕPR¥˜d3¡Ìʰ4ƒUF{ ãTYyLÍJ…«³rŒ§dz8†~­¼ ¢…<^yÃô 5›¤X׉R8T¢5®*¡ä ³²Jµ‹¡‡¨Ôê ú›Ê(ûÃ,¦28öƒÌzýòO Þ´^C½Q:0‘FÕZœw45i rMTaÞŒŽ=”‡"óÇjAËi§”Ä’ÆÒÑ z¼¼ìžt,3\ƒul"óµN¬ÆuN§\áÖdS…9§Ðw(‰&zˆÂ;¨£HÛ0¶¢^ r0ß“Äõñ¸7†’¬LI%†8¨Y W™˜ ƒy‹yCË™X$ôKi`œš„nÕ0‡˜”%ë:P †òX.é–<ÑrãLAå4ñШç”ÚÔ:m¨7I>=¼¾cØÈHÛ6ÖwÞ–¢$‚žhc«Ì[ª™…ÙÅf”Ég Fãše3akÛ (•"];N¹ÚÔIæ´%—LB+8*Ž CÌÐÛA¬ æ*çè– £„ ÖâsYz•‹X„o¡.¢îKŽïÛΓÀ(q18+;Šq¥ŒS—(«a] z•KµöX™ð ú¨Ë ]2 }èNûÇù bjæ†qk8Ô5™Í`y"-cYÔT%Ê%"Â÷’(UZA‹ç3ç#3%¤N­ }bLc"9Së}¤y*‘Wyº;K˜‘¼W w\Þ/a”øŒ§ f ŸYºBÂÜm7æ,Æ·¶XHR¢ÓåWt‚¤)”4–ô„sâqP×1¡`‰©ëÄ·©ØHëalÇF[œßbK¯+P£±S‘Ç\GÔaÃXˆc°âØ:ü*§2¬·Œ{§1UÍI“øö£%Œ‚DøŽžF½*òƒD¹¡v(];,O¢©¯‚™<¡Ü‚ïè ÕÆ Ÿ #1µˆ `ÕLè5çø„n´¸?H¥ÐCR&¸€½eJõk46QÒ(5ʶ\*éAFcªyÀdjùÌ›*]BÎ;©£Ü‹%uÔüÃJ›Îæ·ÔS¡Ã’fôòí“f–_¤ŒÑ-âdÜ ¬k‚d¦&Yæ <™ûN&¥öPžŒîθëÌ(QÛÙÐxcˆ• ~u§O¿ fŽe ֺꒅ Fé½7ÅoèâÄô‚qbz§À¥ä‹{—ŒR…Á\æp‡OéÍà®&0ë-ÌÊA°ûA”Ga¥ RKüõ%Ð×$‡ÏQÔ*C †%³4Àº —É Dø€9°B&3z»…6 ŽšA̵SNBû§=þöÈ«°MµsN…ù[ð‚žW0DÓ'ÈL¦Þú [;¦Æ’&ÜXeB¢ îjBFk4È÷þ!X¼ÑwÕáÁо¦VËadgøþ>ý>QßTÓçí$¯Öm™ß|†zè•«Z®ÛÏqY_à낆šŠ¯!«ãú¼½]Eã%F.€ÑÕr[všDÉî?æíã•îyG WiXáû/´† ™¢ýwÛÓi'š ™>=_Žãô.=Áʺÿ¡¬.ëÝq½º`Õ4˜óèXo|j¤»«zNËžæ¹hކ¨äã8Á8PÔ·¿®†OêEÞõ¾+óûÅï»ÛäÓ°´.·4U··«³{möíj˜ +>æ‡Ã4“°~ä÷‹}ù¸ëÇ’žþÛÒtØøÏúQœab ×Ólü'ß ²ÓîóaÃô“v\×äeM^×höiÚ7ÍôôeM_÷™ËM§ÑM´4xô™Æ%.?‡õ‡f¿oNÅö»ËâýâÍÒ Qšú;3(牕}þÜûó*Ã4Ë0°rx±z³Í{2 ùyœgyÅËi¹-6%9ìê¹Z_giÞMŒïË®_»é›–Díÿ¯‘òuðýÿÿPK!l­~ˆ5%word/glossary/_rels/document.xml.rels¬’MOÃ0 †ïHü‡(wšn| -Ýv…"ÎYê´mRÅæ£ÿž04hYW8ìhGyŸÇ–Ë÷¦f¯Ðz'ù,I9§}a])ùc~wrÅ’r…ª½É;@¾ÌŽ÷P+ŠŸ°²-²˜âPòЍ½uÂÄ·àâ‹ñ¡QËPŠVégU‚˜§é…ý ž 2Ùª<¬ŠSÎò®ä¿³½1VÃ×/ 8A¢8ÆLJ É·$zr1®0ߣÐXKÒ ØïõÙå%ë.ÞÄ»ä·d½Ž™$е?ö›dÿsïÿ8Äëüúÿ-‘­©ÅUzÚaø“)®ïö°^|[Å÷Œ!¡é}ÄÖî{Xh ôƒ:%ùhø­W¼øoÑå€ÖËÖË&Ž˜ìöpü¥á¬O;²©ÀvƒÆ:jÞĸyçÍ›kJ‹ió&±›Ž‚ó†Â•þ‹zLWœùTž…½oðTàûC¾op¼Ï!Ò&rlÆóT¾aðJåkT¾apBåÆÂ—¾±Šât~!5¼ àmr8ê¯Oý™…½Þ›¶Û¸q+ïN»Û8ccñxÏàÓСŒ ¸ gkðfõ+sV¿ÂiÚ|‚ÔNyÒ›5¦KoÖ˜5ç>k/.ø˜·1ã™RM;h¨Óɦ꽲èSÝozÌ6ÔŦÌ*@ΙÃKÉþ„ãUÁùÂߺ(´crGí– þ€–*ä@̦gpHÀ»”¾{sº=ú-8Z_õm«›c–î?Uò·œëw³ØÝo¢Crè¼£Ìýéýo–¬+»:çÈ0KÝÜð~­âMº]ÇYïcüËEÀûïÒÞ wJ*×pYß&Ÿ6ÇÞÍ-ôÊÎ&ÔpS‚·Ïd´ºqÇTª÷Zà ׋kð{¼NN;Açe£~8ÄRÔžp` ïA²Úÿšpð©Ù¾Çø¹…Þ>[cŸ%àöhÍö=ÆÏ­×ší#”¯o0Ò\Côªç%^Ó`Ù§Û4»;m… TJ0”˜àï–`Ù…ß‚…X¶ïÓ` .Àgïjµ‚@Ÿ¯EŽ£½4Ô€^‚EGÖ€¾‚HëkÐW3¬ è(t?Ä_g"m¨¤Å^)Î#|ýÑÿ;¥G´ìK1oèÀ<ß^Þì!ºzˆ{~½’çÛñR2„™š)¾fj¦:j¦ :rð‡[©HèßIsåÐW0,K-†lç­e¦ÁÈ,;B{Ë¿£`X¶êMûË!½n^0õ¦G/Á Ä{Q‰æÑKðêhºl XΣ¯àÒú’PçÑ—Ck¸×HÅÔIëMµ£µÞ¤k¼=:j¼=:jÞÕ´Þ}cƒÄT¼=:ÂGB¬;ÙQµäô ”zM‚Gêë˜{âHÕ¦²+WN]Vº}YIúœk*^çÔÑ·çNÁ9/Z‚ŸwMðå|0YÒ¸ˆË­ÇGT‚›Â"iB؉“°¨ø¿¾²sr8a'O…°È0å„4!,?ÀÂdIk„U W•_IÁ-6â´kÂŽš«wâ%`ô Ã’) 0±ªF˜¨$N¤4n]ÊHÙºR¸pŠ™ÚŠWV]s•,+~ÑõŠûbrr¹(‰GšˆÒ¥“°Tä¯V%ŸJÖ"Á-„½|Âú8dª"&^êH”°uXÑîEižm´‚“‹˜„;||ª×—Å?X­¯{üŽ¢~n ɆðÔ„(O²›L@‡™rd%Ø%cÆmâ@}¨üráf‹éÕÃ!J8¤j£îx»å4üãÍž9ìpL7Œ1вþñ¦àþ<Þn26 czï~tß±Ø44ècè™ddS·éñ˜îÜïgX™ílȪ†ÿd“pÓŽ“˜Jhþ.e![%  ¯;XÁ—Òî±âT2D4‹¶Û4Ýc ½Ît××ã¸J°KE(¥Ñ2òD* ±ñU6›sv!ÙÏý6©aÝaLña1úñÁz¼˜ îäNõ€ŒUïòk@àŠ¸I,V§ðà ‹êAAJeäïåtÔÖÀ ;¸XŽ©’e7­ÉVi‡Jvvä±cüjªÚSÕª*°¥œ–&¢Á©-Ø;€4èOÇפØ\Ü7æ>ÿ}}• "ŸöÇø+8³B§hKgTÀ€ïŠz.û"‘ŸãL†•ó@H#F"'DFUÊøµö¤,_q+W5,…5ÝÌT)•H¤~òµ´c[Ø¢ÒOŸýQ7·VªGWb¤mù>”k‡-­ ­“E‘ø®à­"ìàÊ}À\÷æû€¾›D¤â»9.RZ"ÆéÕO…M!6š+™½HªÇص $,ß^qvÜa)àèæAÍ×~tæ»*.:Ÿ·DgÚ ú‰éÌ7Y\tž´Dg2Ê~b:ó=§-Ñ™6Šº¢³¢Êl‰".ß»pQî¢%Ê‘Üå~ÍÆ·2\t¾l‰Î«îŠÎíp¨Ýž©ÉŽ: 7ëºÄ&UD¥¦ï- Eàò|4»©1Ž} û,!3“Ìm#:®&mÚ¦Xt\‘@Ë$‰)Üž½eCY:ïð|‹Xä Ê»¦kÏ2ÀpôfzŽÃã+ú­"3°ÚwÚÌ åGøÛˆ«SÃIka7µÇÃÉ`V ®Â~/þ Ÿmü°þ}z€ úNÑÃa+O`H£þéË>8²Nó7.ÇC‡›kE»ævÂ< è›Åv‹Û "œËFGÂç6ð}ØRÇØqûâ™HÚÄt2¡™Dʘ|]mŸã™Ð"ò‚O{&,dŒvð=ƒ &3DõvÀ†™ÊVŒœqmųi)Ÿh¬¶1¤§ Ô{¼9®T¡â Psƒ 1üu¨¹‚¹)·\ƒ ïŒmJZ.¿cƒa÷NŸ©×ÄÖª|]ÚZî‚j£-Û|#§€=UqC‡}K àb5Ù‰CU9²(G7vŒª¦”‚rl­“&ÃáÕ…Àñ$Uš¾¾ò ˜’ž_—2,¾„á·óò©Æt¡Ñ¥@‰«Åì|6cg*IÂÀs¨9i o4ž<1…fûºi‘½RŒDRgßEB}BºÜÖ,ƒ¦¥²~5+ÛU? 1?OXŸœp~×6GS@ÝôW»›—Ô(ÁÉÅØ4Ý$šÌ†óyF:€ÜÓãùdL…PØþ¿9RC©âƒsRÇhS²bP±tášúìjo´*FzœX/M£õÇ‹kþík‰¢™®Hhçr;{·ÇÖØR?ùßÈÏ%Ì+U›'—ðG>1ðNS†Pèfš;b¦.NðœÄ]â¾¼pVŸ=ÐËŸ°UˆÅ6"}«©œ ,²h¡[>.Q5ߢÜΣ{^CVÐÖ‹åpÌkrMm-†&¿â‰ÆžØÁhÏøã6LNSêdãä4&:%´LôC#2·hM³zlž¡¤“R©ÔnLDrÿZ&bçæášœë#,ëö½¬áÖé„Ç+ä·m´RÍšDpÊ"ÈE´š-'— ŽØz Q!ЈÒ³•ƪàÄxˆ¢ ¯ˆ'Õ» ",ãTùÓ8 7tÚµÞ2M{ø*…5£øŽnöXz#Ÿª4Xì×òm$¶jÈ©m—)>áýVsdq rütϺඖ¨Cc¬:g‰0½º©v!Õ‘n&' ª¸æ,=—|'c@¯&hòk@ Z¾›hŽá:]îdò  ›Ô…èV1óúü iM?^m“O2«õp‚hÎa•%÷ÈÐÕt±‹ (eöÝh#$$>¶j# <þ!6a+¹­Âåt2Ÿ^qñ$ º`*ôCN h’Io'ƒäwü»­:ï ZÓ½*Š™2¥7e¼1ZÄ7£+Òíô,-¯ËRŒ?፩t%T¦)U_h-Àœ4ÒÀGÕÎlÇê±tØðËU3Tµ o© }2™ ¯…“J4þ »™}ÑŒW–á~Öøœì‘i|䲞)ÍD{¹E$w¬øE¾ëÚKt BY}ø­¦j·Â‘Ê”gûE…§. Ic;T±ó)Sx>eZ.‡ð)o© >µT ¾z$>½å„n«Ìcm¢MB,·8C:ë\Ë— )×Kà}¹V]"âÚ.hdçáÙ6]}¶ôxǯ@Ð=ÓP³Ì¢jîgëŒ-¯U÷¢eBqóqH²2<¬D“jPKxé.ƒ»à%.«lßU7ívµÜƒ¬Zíp¢òµ³.@3‰%±k&{²U‰”Ö »Åÿ„™¡ð:Š ü 2-féú»Ûᆳ«ö…h®[ävOÒ÷ ãÔ‘ÝlÅS½pqrƒBQi[à/WÚb WõRùµ¦`&¨ät  ¨¿P}2”h& –P@ÌãR`r©ƒQ|ÑácìG1k H„2ÖÿØkeÂ5ÕŸ‚…h|yH¥’aøuÇCfÊLN {âL•ž—V—‡çÃ!O‹³ðô)@×q~æÎÄOÇ·¬6Œ‰µ`)4ÉEõ!ì7ÁöB$…ømñ!­¢/ª”6ø° Æi³e’Žoökð6 ¯9' >Õ£ÇlÞ‰ .™CÊ1 âŽÒQ*or9í/):EÖAv’Qqè<Ì}Ç&þQpÄû Úæésv«O•Àn´Ì b'\w•^ÃÔ©JCƒ»ƒÂJî+á»*P䝿ôrKc¨vU‰E Ç‹ç`vÆSÊŒÜìÄr3’;Lnc(ÞÚÁK ï—Yiq³›lBšÔÉÛˆ£öø@|ö¤€­Ê®+’ÚÍ’Ez甬¢ùÁ–œ‰Ê8’$Ö΋~(׉a¹œý`mÊœÍ›ïƒ KQn)w ‘UŒ)(îfÉ:(è}¨ä}p•[æƒuê¹"üåN•`Õj÷‘} ••ʺñE t?TºŒØÄýX©GjÈTºyºÛËáÞïöð±ÍïÞãïøwF»oFıº]Ù2.u¡´›ë×N-â\UH,TÀ×ÜÓ'¬Ë Ýo%‚©ôõ¤M'$Mþ+^™>¿Â_zÄæï³U3MŒ›ª Wì¿ >´DônùêT]”ld[¦ââ0"·ÛÖPh–ÓÄM·0« Û ±ÄmŸöÝüëè¡%¼hc,»TžR¯«da åkÌT’ñ$n÷'øa ö£«à¹œÎW솛™ü ×| Üd+î·¨D1Œ„8']˜•ð{to2Ýë±›UŒT`˜¼Ñç›JPZ°Åà _Ÿ}Œ6é.B‡êjHÔ +¨§ÛH™\º[3äJPñZ#°ÁºÊÊ5fἯƈøè¶ƒjê³Nʘ§E»ó¦]¨©4úXB0È·Š £ J¥(¼ÜVr /ëtÒ€î·b@*}5æå¨$]·e gƒ×yYºNó @»•”[5 Ò“Â*$‹\ŽF—ÓQµ¼éΘ!Ž¿Å Zk·û“d?¾ïkÑù]e»ç)Üf¤TÉáv’¿íŸêLîébrÞ§È Y}” ±Lý[oàŸ6ÌV·l†âÔ Û£pùÛU›²„v• ìl“ cÃÎSÉ€éóÆçœŸ ¸<9´°÷´I‚p9 þ¥åÓ3? ¦‡´¡–x”¿Ý6LÓËÙ’·Z&*ZÍC‘8ÃÁÐóë:+5ŒX¢±?Äkƒ‡Øµ¦hPYê`Ê‚®©,¥Î@U‡Cf§í66£9È tÏFÕ>4µn5^Zrn%^Â?òcЄ´˜|: Áo–h•uf|1/—ój¶o} A¶k¿å Õ¾$ ­°nùÀ¡1ˆ,v¡’E11iñã®HFËØ-Éz„HæÖ#mk_>¢EìŠ($±ïÄ3qÒ¡REœCåט.Ó™-‚‡6ìxá3»PÖ÷s‹¶¤ì`ÐÅœ}íg\P÷-hE‡P×fââÐuö3®B>g‹=¨æˆÀÉŸLÜàùÚÆó>›”ìOæ[ùž¼n‰óšÜ…Á“‹óåüÚn,à —)'JÓuÀš˜o‰‰$qá\õ¼Ç‹árP<¯•X¼37Z Úwâ¶ãPJÆ â‘ªi‡ †/1Z@1ŠÛ=7"ŠG‹-"£˜Š!Åíž*Å#E 2ë¢Ãbÿ%Þ¦÷ñ‡øxÊÌ3%bº ù6x?뙨µ×d5J‘›ú–ÎU–D[íß+z}†—zì“UºŽ{¿ß(jòi¶ŸÆpUTá¥û†*fÛhõù.ÍG1±»=¸ÝS>&§EwBBèâ«XnmuÕž µmÁrvß´Qƒå, IØ«-fKaqð¢'ƒˆPy–ÇbG|Ϲ¤t.š§§,‰³Þ»ø«Â-ÚUÆ3t ž{óûGÞf¾3Óþ~9­l">;‰ÙŽóð8¹ª¬:Çf€dTÓ:œÌF£É¢@Ö[‘rBçkÂqŒ…+südß0…i™PϨ`x$òU÷T˜]Œ/¯„­†QN ‘`“¢ÙhÀð“Ê—V,tRSë¤è«18©F+uaAÏ:)ó öŒý~ÈIÍ·);«ÁX,qݦlTtT³Šè.’)Ôäã&ÖQÑÓ†óü„]áYûš3* ôŒº×4ݧ°2¦rrØŸÅ6•œ¤à»ÔÉÂè¾Z¯³øp0˜MZÝ=PÅuÞӮ˶úNWøé&d!ÉódÛL—“Æ|§¦¿Ë"¹bGRÙ°æ˜F½ Ý«ZyûÄ!•¡Ê†5·18#y¹-΀•üÃÈ…S*}¯[>Ï”k;áXýÌ7ó›D »ÜC§ÃÈPº{‚ÍýÙ’ìJ"˜åˆ¬ÒˆŒ‡Cáß‹W-ίÂ9lµ–Ö)“¼Þƒ÷oÒ-¦÷‘•™è€®ÜÇä7.ºšâ™ÕeY@°+0‘ÙοDûä°Á+… xúò'e…kK_,Ì’ùÈ®üo–¬ ZàÞÂN5*àm•-M?'3ª¨©fÃóëkârb®Ïq|ÿÖûa?ÞBò9?¶ÛÂ40|–œð]Ujùo·[~˜üÄŽ9œ‚Å(p„¯ºÀ—²¾EœÈp–fÀüó[é=ÙróL³/è:0u]fá!xÈ "åÞû]²Ýç .ñ¢ÚÍ ý‘’P´þN‚Ó”~ÇÂQ‡Ñ×éIØþpBìÄaÇþRA£‚‚Ùž™†ì’ÑT–¿¤É‡6)˜h“’‰©­à%Ÿ¶§·ÔÔ-Ø`ƒÀ÷%p\¦Íë-ʳÙâB1šŠ¢,l&v•ÛM#Ìí¢ õ·4ûÓ1Ôi¦Eк‚µî `3ëáCÌÚµp½™cn—º¼Ç* ”G8~y1¦Ó?¿î+ x‘{1øñ¥V¼˜:½Ô±•êôSC…ÔéFƒšâí.3¼#®Tëù—Ž»ˆøy(ÒcQ®ÚLÙ‹ _û:^L^ž·dveÀ×3Ü¡DHUM‘cªV£´Ÿ“S‡ÃÝõ:½übt©H\vŸ•;Ÿ»s5_€rñ­¢(?[/æafýcz1Cß½˜aó½J¤ý÷b žÄ˲#ì;HÅHÇtOYv%*_ÿe={îÔ?ë¹rI‹F±4î± ìþ&Ÿ6òc[²QÍÇÓ®ËývºŽ*U*Ø€p’ö]0Uýˆ•§fIb\_¥V €s½¦S>æ=<ÃÅ×¼R¾øæÖš?TkåKiQm{yñ—¼RRHET¿ÓÕ²®Ìóª]Ž&==Z\_°ÿi^‰Š ªgÂrƒ .χn Vm°xïŠ<Ðx÷1KóÙ RÔL1<ûlŒŒ /~ÿUŽÔtA‹kŠˆvT~㜬â2ÚÚ8vÎJòÑ]©ü<+½N2?¤Ê±4wLê1“ƒëfFÃÁ+Óþo•ïf¶¤ï ¹cóÂV¬E-ó N'ûñ:*%ºÏÞ¿¸-‡× Áઙ‚¬é Ì–ß«ð£{€ H«Zä0§àä $O-uüI‘ã|‚ N’ƒ‘‡ÃL}r˜åÊœgyÊä¸8Ç4>I(¨kLs#ž“þí®î¸?аäp"“Ã`ÐRˆð£ÍðKÒé|R8ñQú¡íT³”à¶Y?͉k¯ ~£`ò£·@Ä17ƒ$§}¬iEfé5§‡½øúiÑcÚÇ/·Kz\œ‹èK},2«¶9=ìuÛO‹—šªº¼§ Õ§‡YðÍéa/ù~Rô5]¥:Þ­»eáGÙ³éf߬6_£ìÏ7GHЋ²5–r «³v²bâ{´÷_Ñîþ¿{ôFïEO¼Óã/!hjºÎ£2D†Å݈á¤?š§Eú-Bmø¡èq' ÍT‚²(aÝÝ¡(è|Šîï¯b±<ã…UÜÿèÅbÖe•ÁêZ1ËûÀHÆZ«TŒð%&·¤ƒ÷yûX¡T^€~3 ¬Òª`r­ øép%^àý7ë×gÖB1Óîw¥XÚ=8°§X–Â4Û˜¹V§R‰ü„ Åú}8‡ðZÆå(PÂëòÏ>4-«Ó‹!Ë^©k§µN?…q1¼Óf7¥@×^G\,•;HV°\ÉJ5vÔ¯*»×Ž÷% ð¡ÕB5´ÑøÞ:œ²(Ôô3.«ÃËjÜ¿;V~Þ’)wõ¸Ä¶¹1>…c €yKqÎÿ¾è³J±ü¥‚Ô„îäVSAAŒÎÀÏà(^ÏvÜÖO»©,:«ØR†áx›´U[¨Þ›ƒW“åòúÊ!ʪ€?«B±‡™õM±,œñ&=™÷pn×»Óî6ÎŒ¸;Ò«gz³{¶ðÅCýÇOtx(¹pÅ£Z?²S ^Ÿí’}šýÆ>’ÉxZœÿ¥Þ\@¹æÕ!É¿¦©Þ”o®¨Ú¨ÁY²Nhêœ(û`ÅÉOé69•Ét+¯£ì3;¦œ²]Í}5ö@Ï´§#Gì[lžäT‚@1ôPúýö=IZ´Æ[ÛjAoÇΨ´ïŸ®³Agáxýö]*5¥Q‘¹n„);ª¦EQ¿HÑ•!¾ü>CQ‘Í©G( Ru«¿¼XfŸ;³E¼2&@Ùª¦Šì±‰e€à[ª¬¯Í⨯ío¢¨4,š'Ý‹¶YSZz,ž¤ð£Ò}º„ò0{uî2!ê³Õ Ä­ixe|!ÑÓA$}jÓ²Ý%} A˜-û‹Ýµ.?â)ȆWíî†ëÑ.‰‹è&àQäÖ£Êy)äÖT?1}O¤øELéí‚ ïã ;ôsTUÆêšŸY £a<'{݈#?ûýO³NUŸE¸vmMx6\DëV›. ~«-kZ¼Ø¶ë¼+O‚ð¶eT¹Å¶ydî‡Ûú õÆšWTËEƒ4éåóˆF¢}Š¥ÓÊEÙ¥¡l>ŠÐÃYÞ@KK•¬§ü<˜ÔKc¨Tb-äŠÀ8—׋¹5-Òüê¹Â–øÄSeþ¦Œô(Ü߈]´èK«X ©¼Ÿ†ù q‡§Çý1i Œ6,OV"{:hIv1Ú§ƒR0ÝœÑtýŠ&»ì°À1òê¸ØuC)­®{ýêˆâòµ:æ ´Úò±ÑtR8PRÝÉ)†·ùÆ}8vU²+L×*5ñV~’{EŠyCaã|ëðæµ][/¶Êã0Šª€Ÿo¦ÇAU ôJIVØ Mp#Õ],\¬ yì a§E"ôY'p»q£©*>Bu¤nÄp¹ë–i¢Í–h¡­j¨ˆÇÛu Dív:?3¥Ô‹À=¿4oKé X¼âŒ²ê,oËû|`2 „ÿ,/2±æF¬ØYÏ"èæÊ‹Šå.H«Z;ü®õѹ*HS.Qʵ±ÔD4k ‰òl-‰ò\êR½ë¢„gÛÇíðV²žttŽÙðv+’®2îV3tžXü.\†`Bñßò÷CJ~ù%1šÄHÞûÅíL•ãàzÖ%"öÓþµl£ÊIó–ãëÅb°ÈËäTAH&Fqr‚') jø~s… µ,%Ú{¨øñ¡š"Y· `ÄU^ÞgÅoY‚ }ÜϹïÉOR6.)Îð2oøò2û]›ôXí÷§ç3¬B3më<¤@yq2 KÙÌÍU¶š‚÷=¼Ì:qù•Í2iiné>Ñ/zšç´ZÐØ\×^¶‡›6è«`ÀjjS~ˆV».]2«1Òj2±‘bÔI©ê¯•U?1ÜÝÊVmŠu`ì"SÿUD×>îg1\ÄSHSA;ª]-)վĀà›Çß,…LJÖU^Ám{æzy[oÖ£9Ì3è\GsØO¥ó(¨²ͱèÑz3nܸúìS7çÃùtž'ùtä_?˽‹¦GsÔ饎¡W§ŸHã .c¡N7šÛÝUG·T¼NÌöç´dŸV~e&S•LW¦ï-â6Eæq$SZ/Z@ÌjÁØ#Ú^V1Œ¡&¹Þ‡ü΀ߧ*~1úÀèAÜùƒ:4Þ®Åâj1_,¬™Ñ¹ÍÄüYÍñ0³.‹C*Í  ‚m7Ãu‡c?Ñø]z†ÓÂŒ“9Þ¥=q ÃÆp®ßg±±'ßšo":·ÃL!R¤úßË4ÛEGKìyx9_¹Ž­å¸PÄXÙâ¦Ã+æ¥(Cq>í¦Ø &­Žp2 Ì»$§H ÖPOnÍéØË©¥EïݧœX©Î]=7Å‹þÑr4½&2< }nN÷qvXeÉ=ÿö¼Jõrˆ7eÌé¿öˆzýsïÿ8Äk ÛYò%ÎŽWÛäÓ^pøA34LÒ³ÌS8|3.¿HˆóÍ#êh¿ãÞ9K!‡¿þ¿ÿÿPK!¥Åv?FAdocProps/core.xml ¢=( Œ‘1OÃ0…w$þCä=±ÝÒªµ’tu©A 6˾¦±cÙ†´ÿ'mC‹¼œÞ»ÏïîòÕ^7É8¯ZS 𔀭T¦.ÐKµN(ñÉ›Ö@àѪ¼½É…e¢u°q­ø$’ŒgÂh‚e{±Í}&ŠÛÖibéjl¹øà5à !s¬!pÉÇ=0µ#RŒHûéš †4˜à1Í(þñpÚÿÙ0(N­ÂÁÆ™Nq/ÙRÅѽ÷j4v]—uÓ!FÌOñÛÓãó0jªL¿+¨ì÷Óp6N™²œJS:Ié²¢„ÍŒ÷ÿ2åR ™pÀcWeÇŒgåuzÿP­QÏ‹0’ÒyEîXÿzÞÙuê/G ŽݪiJ"qÉfäšx”CèëË—ßÿÿPK!t?9zÂ(customXml/_rels/item1.xml.rels ¢( „ÏÁŠ1 à»à;”ÜÎx‘éxY¼‰¸àµt23ÅiSš(úöO+,ì1 ùþ¤Ý?¬î˜ÙS4ÐT5(ŒŽzG?çïÕ‹½)¢'2ì»å¢=ál¥,ñä«¢D60‰¤Öì& –+JËd ¬”2:Ywµ#êu]otþm@÷aªCo úÔù™Jòÿ6 ƒwøEî0ÊÚÝX(\Â|Ì”¸È6(¼`x·šªÜ ºkõÇÝ ÿÿPK!ÞG•û5word/numbering.xmlì]M’£H–ÞYß!Lf±èEEð ë¨6 IÓ9–U“VY3½&$"K2@µ¬CÌÚ¬w½ê ôIúu…yŽ;pp*¢Ò7™‹?Åé†Ôíj„±Ãí},ô}O_µzGYbu†|t‹üx^¡üÌìMöŽä·é'š¢paHœ£ßÿ…ÇCþ:ï¼»}¾ä÷B#³Ã›IF:òŠ]‹;Ý€ºŸŸƒ;»Úoï><aä<øðF¯²v…4rö-ÌÎCœDÎ6ùþ¸¿*}ØÝϤô” övðÛ‹ãC aI—–³[tñþè'ÞG÷Åõ|;¸Ù9i«ZñYÉþàg¿Ù²dÏeSÿø/èþËžsZ”d'Ëø,˜Ð6û¼qçn½½Cn}øœ¼ùùƒÿâ:h‚$—Á]tʯ»>5ÿ×6{‚ï>&ø!‡Oê‘ ®¢æû™¦è38xv‚'¸+>†nß¾Þ‘“#|M´ ƒ$Fgz\¶s º-œšžÿÃÛ û{,§Ò¢ÇJ.Îro®O¿pvZŸ—;އì´2X§ÕæNß\Ÿ~äì·i”ûއì·:X¿Oc‡úØÐï›ëÓïœ]Ÿ«°*ôÙu<Ñ ¡çé'IQC×o®O§pö^–()t?m²ÿú`Ÿ>ý.-ý¿¹>Å+Ŭˆ5 )c0˜ÌQÚ*"¸¹>È+M«H5 )s0)XÜR¸¹>Ë+C®5 )k0AÌ»âæút:¯,L«" Ôpž, PW+Ã0¡”å\‘Wdªë–s{¥YR.;˜þº°6øê2ûèʼn hÈ Žä÷øøø·OÁc&‘žòÇ–'ñ¼™óÓxöèEqòÑCP;íPxöz÷½‘ŃpFºø}¼ê1uÆÖ9T/Š úvM{y_r¸Jž¹N·†ÇćNUž?;»ðµÒèî¸ú Þþ6€ý’gá§( óBZ_œÀ‹Ÿ+wÎ>V¥õ‹•¦C{h{]i>fÇ']qÝmþJ§v°s$ ß{ÊoñàÄ.ê=þ.Ú™ÊÚ⃻ýßš×–µ»'Iþˆœl qôô`ûQúC¶“Í zÂ-:]CId >øÇè|—ô¨7R3r òwüÓéÏ·üÏ/§Ö/§VÇ“NÚ{òÀ–WÃ/„ÏÜGd˜Š»æãd‘?=N>…°}$oè»ÓOpPü­±[ÎÎ]ygwdŒ›Ànì¿3µ†ã×üå`ÝÏ¢L è¼íþ.FÖtˆåµM"´hÀqn<ß'÷<Àà_9Hyá—ô»Æ¡ïíRÅ–´ Í>qáùDð[7pÕ>Ø:{7rÒû ›ÞÏÂ(yŸ"çðìm7LjÙMASŸ“<ð„ȃaò¹î§¤  yÙ(}‡ÓÀ•÷,vùß‘ 6¤“f·&J_L7‡X…í)Ü$‘mð/ù¶ð†á1úkÞ€zñ“€)mÜóц^Æ{r’cäœGå‘ h¿ ¦¼Ó…-º~ÿœMÙõ•SbØ–ÃXñ¶ŸÝ$&Ÿj$?Á0G;åì*Òñ!6ÉyÿîšW$²æ^’:ož-¶»³–¤øçl¶S8ÄûæÙ3s‹§ó[VÌt“}Aùðn»yäC6Ö¼òÁ‹|8ñŒlÂr4 ö¤Ú˶@ñîÌy¤CÐèXÒQdlJw8¤Ã»o?Ig´ÎëŸXxwìèüüâ³ïF}üΫڰ“ǒ»9¿@ç­aÇ|mç;îÆñ‚[Úk›f™<ß×ïÆŸß"o÷r—48FæI1ò:_5`%ÈöäðgrðÁï*iÒ\’d^õ„-}tÀ€ùmË{î?æíœ‹”  ^'÷‰¨F&Ô¡|"ÕÎÎÑópæ‚÷6ù¼^“ÖÎ+7];/k³÷ J5n%í@ñû-ÏéÒáÞ ò7/}Nµ®G°AyÆ[—ÌmUôq)2|À╱Y(³¢ÔwI­vIÚôìRÉ›Â+õG«ëÓe§XðúÅîTô³¾;Zµ;òhJ§wîô G—Rœ]š4ÆR:£®Gl¥ÓÔÊ,Â¥t©¶Ø¥q”άëSét˜–»+y9¥³ºwɬL \ãb’*+ÕXJ7¯ë[é dð.N JSDë<Þ`–ðÀR–äå<õ4…H´ãÓž¯u{IöœÅ°´¥qÀ»$>}ß%kAe®ýõ—æk '¥Š@+:Bbà¿,>‰·D×|~ƒ5ÄFŒX€àJ ]#(h…kÞ]»¯9EŒ¥´° ô©¬`yÔ¯=ÓFzŸ‰z²è@UúLÔÓFó>õ´ÑQ™W&êr0ÕtÑÙÁ7m™ê§…I£C®L \3Ý´ÑU™”®#:ÀÖ:XZÔ6K¼ÚöµlV¶¶QµÔˆYt°’Cµ7¼–<æVLîl)@:Q„[¡ÑAçèÉêÚ?çŒ*Ã2Ђ…êù¤×~ Î4Œˆ²úMvíWªP¦¢õ_hÚk/83éµ_­Â.¥›ìÚ¯U¡ —ÒMzí×{Á™i¯ýU8Ó t×~ì>,®ý`PµB‚û®ýÊZRŒ•y ë„uPx À-2šÑ¶ÖÀ4 OQÉéâá)À“Ƥñ€ð@èÞ´ñ€ðàìIdw.8`Q.¡dJ¼/áEZš’J|þ}ñ€°@L€°äqõm®QÂÓ°°àPñÚ¬ì6¥ë% l“_û…-€síÇ{¥µ_UVº­Ÿ%`é+Ã6Övî»gØx£~~„¦1(üx—9];€ð ¼;€À äœ^´OÄà8~œ_Qš­* ÄT LÉR¥öˆA`WSLâº(;e 1"ƒ@d0Â{ØDÁäm"ƒCœÉÆ ˆ â.œvœÀ88l­„̹e,0]<7±çÚbÁc…¼9¬tJ'$' â8}2ͺ,/lSZ®ÏL0å…²”eè`é8 ÅÀÔ"pð8  €à<ÚÇa0Ž@¦€åÅFUô, oä D 6bôIý‚c õš LQTl¡„}ÙÝã ô aþ xÉZÈèôJB¾`G¨çFWß»¯†Jëxc+M³3©ÔF Ç™*µ_ù[W¹µ¥6Êí¯À…ŒŠ‹Ä©•ÛºQWÐXÑPgV6Ž„F ÇêAZNbÄQ!•\¾FÁTæ<©´ž?â¨<މŒ¸¶ÈF¹•G–Z¹­Ûˆ£½?Óqm•nÄQ&“qm4‚©Œ-Â2Ti=ÄQΪ‰Œ8£ÊeÁ;S•GWŸ×1EV¦Ù4å•\šk/ì}‘­i«¶¹0Ùq±hF_Ì¡Æ eT¾Ñ㟜ÈIÉâsDR¤2ü×?òfN€‡¾X¥šXcuèÞ¯–¾³…2t9ÃVµµ:seVN;.§™Åð%™¥ËŠ64 ®žÄ„Ñ–uÛ(´ÊÔ0Ö„QÅHjÅUÐËMå½V#Mc‰n£mT¬á–è2(žÊˆEé7M]hÄ•AñtFežü­F\OgĵED]`Ä•AñTFœÞâGmÌ…F\OgÄQô¯—q]A1M) ±ášº©ö¬ñ%²«õµw‹pNPÌsîÆ ’þ_áÿ…Á˜åjNtaE! ŠyˆB¤V§WyÿQFC0 Šy¬‰­3 ˜¥£0FƒÒu4‹¬¢ØŠ¬*gZÉÖÚÂV-…¶Ò×6¶ÀAiíÄê"{¼©ØNèp‘=>u0 ²ÇßA0åºm˜—ß hó¨Âò,Õ8–²9íñFãËì“ ot8M+«,–†®L¹Ô‘ÖPzn­›¶®­jKÏñ¹Æ(xHûÇrÿWÑ-vÍG+Ÿ“zø?ÛA bäÞ‚Úã€õ¡J F@í³‹ÎH™øÜ‘v:›·b]Ñ9†ƒåàQLçØ`R;ü—Ħp±ñgÒh*VÜ,6RÊø‚bã-eÌ¡l§ÊÄ%±©Cˆ--bÜ,·¬ÆñÇ[ã˜Cp§rS%ÁiƒŒÁ …ËÊ_Pp¼å9—Î@éº[œ>„àÒÒÇÍ—UF¾ àx+#S‚«T»6‘ªŽÌ)ž|Aùð†”´ÊÇD>¨€2C>¤¾òå3Xº¹5„|ÒËÍòÉJ0_P>¼%˜[õg>ˆ|Pf†|H•æQåÓÕdF“-+ ìsê õ¤‰T…’‹µ´±æ'Dðï}{™Æh„üýqÿÐd;’ëê]RZß ùf'‹“‡AÅ%b“”N_¡´Üò™Ø²ÞÿF¸˜-&^Ì%¦&<„6ƒÙ‚âE½\‚j½ƒjtÜË/ÊåTÎBPãã\¶ xQmIP¢D£#Z¶$xñ+S|…´[&cetìÊ–/ReJ‚ÏÚ"‰ñQ*[¼˜”)‰Ú¤Ú®8\–#ãѪ$à¸PÌáÇÂ!àÀªô!Ótߪ27tÝ:“Áª…HÒ|ÁNkŸ‚âSP|>’:÷ÄÈ_Üé´EóÃh¯ñŸ•ðGõŸ‰.Á…M ÓvÚ¶„¢×£r€8GKäÉë[¯1ÓÕ‚È{znžÆŠà¢9¿U ±×KbÈèçhêöÂÌ*ˆÁ¬U0J!¡üíýLÃDp~ @@,Ùåt¹1çfÁñÙ–áV¿z @ЖÁ˜é&hÒou¾Ñys& Pç:PY¤¬˜9ú-Ø‘ÏçTܶÑÔü2yÀ˜s³@pfª Ÿ÷£8-@ð¸bäV(VQsYRM’Õ×B°^Ï­Õ8ÅÓ° Hõì¸ßìs~Ü4ŒŒ› €@`õ(…ÛñÅ5”0Žppæy)4é·¦™¦&- +D_@ HsHè–¸,¢dx”/’ýÈ8zXDÒ·HúßÝe`ÉãWo’š´»@$}O¾ˆHúæ4O²¶Z­eiI×û‚5p (†vJ§hŽ*V´slGÁEžä büõ—Îõä–å°‘ïp8êUQä5¥’®’FâÀÈ‚§üS!;n¡liT¨óÙÑËü"e²cpèL„ìXTAó\MÜ(…(x)D/D½JÁ±‰Œ¸6¾š‹8šÞoôâ¢HÈ@Ã÷¨rõ~*€(4Ù±¶ÖmcažÉmhÙŠ!¯ÖÂïU 0¹IOø½`z¡²ïŠözá÷~¯ö?3åSÂ@2S[Õ†zûêט*£ÐdÇMmcœ™;»² À`SÉ €@‚Ÿ³,@Pqk\‹@˜ñª×G±{»Ì+®otI_.6,*·ç·‡ÈÛ}wô¯öØœ[ö\[°«ˆÜY‘;+"c™šj`“–z…ê7k”÷e4^‘;+Re¾æTšÛÕ¬¥dšóóÁR™Û@òÊËË ×ÊÐËW¡h“5!WPN·Ûê…~î¸A…»ŒW(¤Gt¬¨8õèXËbêgýê)صÚ~(T¾f@@Ómêbc.g’i¬eˆ!Ø´ÔGa!`ÌÍ"wV¸ „Ë@¸ „Ë &¢z$ºM…¦Û44i!k+R£oºŒeËÒZ¶×"†@Ä@è\sJ°Âe \JjÚôdwA…mÁ¹"¨0âÍŸ¥é6 me™¶±:Ïe`š–fikè,¾dáVÿˆp@h"e›:W{:Át”¹XãªxUô` ‹€°‹€°\Î" Òôše››)hØ×"°0tÍ×'o¾ /žòY~ôâdyô}—”à«ìþõž5¥¥P²Æ¬Œ~-ÂáÓÙd7’Rš%Ñ& ’ ÃáEä9þÕÒw¶_Òë@Õ?«´nãûÙÞÞ¯¾w_¯°=¬€ 4z?g"‘IFrü³‡i?Ó6P¿Z:¾¦qâÿ+ò;ÿûÿþ>Àç°ôT¡3Ùw+š‚,½Œ•:}Žê‡@Çè¤_%ýq Ác.ÆvûÏ( þèÊ0Fð²b¦¡ì ’‡ŸÏ ¿è1YÐ0¢'Ì™ãˆÞ„Í>ΪSzÊx§t‚'/xºŸ½­Ç´ ÈžØ\F½1› ÑÃÏïNëql7Ñ#[]OWІEÑßßdŽs‰¦ Û9fõü]ˆô4½OZ»Å’¾qeN}~8ü7ÿÿPK!©È\ªŒÚ(customXml/item1.xml ¢$(  ²I² Î/-JN-VNÍIM.IM .©ÌIµUŠq pÔ‹öQR ø%æbJ ¹9yÅVI¶J%%VúúÅÉ©¹‰Åzù©y@¹´ü¢ÜÄ ·(]??--39Õ%?¹475¯DßÈÀÀL?)3)'3?½(± £jUŒ²³Ñ‡{ÆŽ— ÿÿPK! N¬word/glossary/webSettings.xmlŒÐÁJ1à»à;,¹·Ù•"²t· Rñ"‚úivvÌdÂLj¬OoÚª ^zË$™™¹ú@_½‹£Ð©f^« ‚¥Á…©S¯/ëÙª$™0O:µQ«þòb™Û ›gH©ü”ª(AZ´Ú¦[­ÅnÌ)B(#1šTJž4~ÛÅ™%Œ&¹ó.íõU]_«o†ÏQh…;²;„ŽýšÁ‘‚l]”-Ÿ£eâ!2Y)û ?yh\øešÅ?eÓ¼,£OéUÚ›úxB¯*´íÃˆÍÆ—s³P}‰brè>aM|Ë”X®÷”ŸïK¡ÿdÜÿÿPK!„Ú†Ì'Æbword/stylesWithEffects.xmlì][s;Ž~ߪý*?ì[Nt³dg'3eÉò$U9™Lœ3óÜ–ÚQOdµ¶%ÅÉùõ ‚ ›ÍK7ÙÛqr¦jõ… Aàì¿üíÛݦ÷5ÎöIº}}2ø­Ò‹·Ët•l?¿>ùãÓÕ‹³“ÞþmWÑ&ÝÆ¯O¾Çû“¿ýõ¿ÿë/÷¯ö‡ï›x߃¶ûW÷»åë“õá°{õòå~¹Žï¢ýowÉ2K÷éíá·ez÷2½½M–ñËû4[½ö}ü×.K—ñ~ÔæÑök´?¡æîÌÖÒ]¼Z·ivö¿¥Ùç—wQöå¸{­ï¢Cr“l’Ãwh»?ͤ¯OŽÙöuè…ì{åïýodÆ(,tù›—éòxoHñeo év¿Nvù0ê¶C\‹.}-Ä×»xî~7ôä}æà2‹îa*òæ,ÌXñ—î6œl~óYÕ[ôËC3š}ðéB‘¦èÉ]”le3õX£2ô¡‰|ÿ=K;Ù]Ò¬µ·Û/²-¦–=ëOPóÔ¡íƒ0T÷zíâ“ÞÝòÕÛÏÛ4‹n6УûÁ¸Ç$ò䯫tyßFÇÍaÏ~f2úI¿ðÏUº=ì{÷¯¢ý2I>„@+w 4øæb»ONàNíû$²Þ\³§¬w–ûƒÒÚ,Y%'/ÅM´ý ­~6¯Oâí‹?®UÊ¥xãõI”½¸¾`/¾Äˆ¿Ê@v…aÁ/Fd¿‹– Sl\·‡àe0Œâ ›·át ~|<2¶EÇCJD° ¦6 ?5^ê]s,†»ñí»tù%^]àÆë¤ÿxû!KÒ òõÉù9£ ¯ã»äM²ZÅ úéÚÛu²Šÿ½Ž·ìãU~ýŸW¼Ôâ2=nÐýÉçw³_-¾-ã@hz±¹{Ï^t(t°CÇ$ï ¿ QÅ‹ÿ'Hh¾lTÖqÄŒUû_JG}lLhÈF¤Û êë¨yãæMœ6o mS^L›7.JÓ^pÙP¤ÒRé’ Ÿ*£°÷ ™ |ߨÀ÷ i‚÷9DÚTŽØžÊ7 Y©|ÃÊ7 I¨|ØøÒ7–Bœ.o#䆼Köýõ©¿°°×{³ãf7nåýñî&ÎX_¼;Þ3ä4´ë† BnAÃѲYýŠ!œÕ¯pž6 µScœôfáÒ›5FÍe€ÚK >%‡MÌd¦ÔÒÚtò©z¢,úœE»uù†ºÚ”y(9sx)Ù±¿*8Ÿù{…vLé¨Ý’!ÐR…ˆÑô xבÒw¯7¿ G﫾ou}ÈR¶î¬+î9×'³¸Û­£}²ïœÐ'¶êý=KV•¤N¹2ÜR·4|ØDËxnVqÖûãzðþû´wÍ%•k8­ï’ÏëC–‡ÌC¯$6q †›¼}¦£Õ;†RÕ¸×N¸] ˜ƒßãUr¼¬ñX¼L8bÔ'],Eí –p’Õë¯ Ÿší{ôŸ{˜áí³9ö™îÖlߣÿÜ{­Ù>ÊGùü#Í%ÄW{^ê5 ÖÝyºI³ÛãFè@¥óH‰ þn –$ü†¬Ä²}/˜kp>{Ë%z|ä4x.r  ÒP¨OŠŽ¬´‚'H£5  Õ kƒîÇøkÂvƒ˜B†hZé±WªóÈÁßõè?é=ûRÌ:0Ï—ÊÛ-DW÷qÏÚÈ¡y¾ÔHž“!ÂÔÌðS3 @¨™) ä·Q‘6ÑŸHsã@+–¥C±ó¶2Ó`d–„Ðßò' ËV»éá9´×- ¦Ýô R—PȈÚoµÞ„ÚoBÍÁ»šH{àíA+$¦ªàíA($!¼=cƒ¼QG:o*Ád‚·•àÙÑU‚·­à ÒhI¨ó Õx{BÁl Þ„ð‘„P‹B¦©ðöQ;àíA¨9xWi¼=hcƒÄT¼=Ã$¤‚·¡`l`y¶/꟞êà™ožÈjð'èØõ%Hü߯”ÇÕÙ!-0€¢C<|‡8KÓ/=¿ôø‘C@¼I%7›$ÅÄøï˜¥£Ô-¦%yäŸþ1ï½áõrÆ{ˆ+Å(6T« ±š‘ÕB?ßwPá·ùù¬5¨'džT1ˆÅáo¡~ªÙˬ,ÄzKºŒû¶Dÿ …è+ñL¿?ºM/‡lDÐl²¢’, s€å‰*á¼^éÝDPåøV´htk ¹Õ¶ëP¹ùE\dæë(ãŒÏ Ä3€,³± s6ë_A1Þ¡²Ñ/q¼{ÀkìÇ;¨Ýã¯íñŽ—–Â?ÞJfMˆKòn^xzCÑŠG‰6-ÆçýY°˜%›\2ˆË¡’7æ…2Õ’‡í’wƒ»™sùϧxh™b~­áœS<âìÓ¦˜`€æ?8F1Éԙľ›äM/F°©Žœ7B¼MhE¡)kþÓ•õ˜f¨êpÌ騪ʯ5œG~ú€ þ‰¢}i’æqì3ùJ¹ÚTwå̩ӊ]·O+iŸsNÅ«âÜ:ööÔ©8§eŠC³ÀðÓ®~5L®¨_$åV†ã#*ÃMe4aìÄÉX4ü÷¯ì’ÎØÉSa, L9cÅ#M˰°AyÒcUÇU•W2Äp‹8íš±£ææd =ȱd†\¬*€.*©—q'V¶nΜªDî„6ãÅ™Uç\•ËŒŸu=ã¾…’\®Jâ‘&ªtîd,ùkŒUÙ§²µÈp cϱ> 2Õ“,u¤JØ:Ìh÷ª´„•m´„“‹˜†;ÖøT¯/‹°Z__ñ;Šú¹+$#b¥&|DyrÝe8Ü”+Á.é3–h“ê]å—{øw[ÌU=¢„]ªvê7¾€†¼Ý²û=¢Ä£(«oo îÏãÍæ÷(c:¤;÷£›ø–Å& ¡ACÏZS7éáÞ¹ßϰ2ÛÙ°Uí ÿÉáæ7:'BuÞ9yŸ²­PŽ×¢àËiwß q*"šE›Mšn±„^—ºÇëë±_%Ø¥"”ÒhHùŽ "…€Øø¢?›Í¹¸îçë6iaÞ¡Oña1úñÑz¼˜ îä‹ê9ªÝå×€Áq“X,{Ák1Ôƒ‚:—ÊØßËù¨Ívp²3R¥Ën^“¯Ò—ìâÈcÇ:'øÕ* T­§jUU>`K9/MDƒS[Ž;€4èOÇ—dØ\Ò7ækþ ù»• "œöÇøK8³BÇhCgT@—@îŠv.û"‘_âL†•ó@h#F"'ÄFUËøµö´,Ÿq«T5U,E4ÝÂTT)U€H¥~ò¹´c”k‡-Í Í“ÅøÎà¢ì°*”û€¹íÍ÷}7‰YÅws\¬µÄ*ŒÓ«ž ŸBl4W {‘U±kÈX¾½âbì¸%ÆRÀÑ-ƒÚZÿùñ™ïª¸ø|ÚŸi+è'æ3ßdqñyÒŸÉ)û‰ùÌ÷\\|ž¶ÄgÚ(êŠÏŠ)k°%ˆ¸|ïÂŹ³–8G‹à®8÷X6¾•áâóyK|¦XuW|nGBíKᙚì¨ó©p³î’ØäŠH¢Ôì½%a£èœŸŽfç"5Ʊ/a%df’»mDÇÕ¤MÛ‹K W$Ð2H ÷ÊÞ²¡,ïð|‹Xä Ê»æÒže€aïÍôì‡;ÆW\·ŠÌÀê弓ÑfN(?Â߯\5˜ÎZ‹À¸¹=N³bpö°ð{)ðWøøl㇅ôw)|´e0€Sô°ÛÊRŨ?dú²ެÒüóñPÄaDãæ\Ñ®¹0‚Ðf±Ýâv‚ç²ÞQ·à¹5|_6„Ô~†vÜkñ‡L$m²€t ¡™DʄֺÚ>Ç ¡Eå…œ("öBXÈ%ìà{Bf ‰ºÚmfN(›1ZŒk3˜MSù$@c¹‰!=] †ÀØãÍq¥ 5g€{\á¯ÃÌÜM¹åúÊ2¶)eX¹üŽ †Ý;}¦][«ðuYk¹ ª9Œ¶lóµvô\Å ö ;H8€‹Õ2fgUåÈ¢ÝÙ1ªvšr ʰ ·Mš ‡g"Ç“TmºåÁ0%=¿.gX0|;ÃoçåSùB#âK‹ÙélÆ4Î,Tš„çPrò@Þh8¡áü®mŒ>®€ºé¯’›—Ô(ÁÉÅHΚnMfÃù‚VF:€ÜÓãùäLÅ2 °ý>r¤†RÅ—¤ŽÑ¦d'ÄàbéÄ5]³«ÔhVŒô81_šEëÏ—üÚ×E3]±Ð.åvñnO¬±¥2y†s¿QžK„Wš6O .‘¼;º`ডðÍtwÄH]’à9:‰»$}yá¬>$z —?aªmDöV39AXd±B7¼_¢j ¾E¹™G;^CV°Ö‹«á˜×äšÖZtM~Å=±ƒÑžóÇ}˜œ§:×ÉÇÉhÌtJ h™éûFlnÑ›fõØ…€¶‡yú˜ÝæSe°[/s‚ÚÉWÅ]…j˜9Uyhˆ`wPX)}%rWŠüÕœ_nm µ®*³Hà¸`ñÌÎdJ‘[œøCnAr‡ÉmÅ[û!dI‘ý2/­ nv—Mh“:xsTŠ$gO تüº"«Ý"YäwÎÉ*žÿbÉ…¨L"Icí²è‡r,",0—‹ÌMÙ"B[Í÷Á„€§(·”;†È*Áw‹d” \}¨ì}p“[¶!îÔ[Šð—;Y¨ «6»¼ÖPùPi¬ŸPDÐÀå‡ÊWC›,?–ê‘2•nžÞÝÁ’ýßm!á#b›ß½ÇßñïŒ9öµ1ÇlTørpe˸̅Ònn_;õˆsS!—`y¬ ê¾æë0}ÀºÒýV"˜ ­'í’P?!iò?ñÒ\ó+òµ§Glë}c´j¦‰qSõáŠô»CKDNÕEÉF¶e(. #v»} …g9OÜ| ± ް½0PKÜöi™b#´„m‚¥b—*Sêu•-¬¡œaí™Ê2#žÄýÞá? Ä~t<—£ÓåŠÝp “ŸãšÏ›mÅý•)†“Ðä¤Ë#ó~v¦Ñ½»Y%HÉ}p¹©a¥[< òõɧhÞE¸ ºØîõÂêßé6r&×îÖ¹T¼Ôlˆ®2sE8§ÕÁvgPM}ÖYó´hwÞ´ 5•FK ùVäaTA©TE–ÛÊB.‘eOúÐýVH…VcYî€Krév•ÂÙà÷ñ*/K×¹b>ah·‘r›£&Az2X…d‘óÑè|:b ª–7Ý#Äþ·XCsí^þƤٿöµØü®²Ýón3Rªäp;ŽÉßv©Ou&÷t19íS䄼>JH†X¦þ­7XŸ6ÌVλl†âÔÛ£pùÛUU›²„v• ìl“ cÃÏSÙ€éóÆçœŸ 8=9´°÷´I‚p% þ¥åÃ3? ¦2‡¬¡–x”¿Ý¶ŒLÓóÙoµLU´š‡"s†ƒ¡ç×u–j±ÄbŒW† ±kM-Р²ÔÁ”[SYJ ’6ªŽ„ÌŽ›MlFsP@螪hZÝj¼´äÜJ¼„äÇ  h0ùp‚ß,±*3êŒøl:¾ºšW‹}ëvX°ÝBøMo¨uðem…u+‹Al±[ •-jŒ‰i‹Ÿ|tÅ2šÆnYæ°#Ä2·iÛ‚øÊMbWLq ‰}'ž‰ˆ“•&â*¿ÆÔp™Íl<°aÇ ŸÑ…оï˜[ô%˜`ƒ.Æìë?ã,€¹oÁ*:”º†6“‡Î³ï˜qò1[üA5GNþdêÏ×vžçðÙ¤d{4÷ ØÌ÷äÝp÷Hœ×ä. žœ^Í/íÎBÎpšr¦´1\¬‰ñ–¸HâÎU{¼^ Šçµ’ˆw¶Œvà¸í8”’‰‚x¤jØ¡ŠáËŒP Å„âvψâ‘ÇbF‹È(†â@Hq»ç†JñÈc1CƒÌºè°Ø~7é.þŽ™y¦DL·!ßï‡bÝ"µöšÜ¢F‰#r³@ßҹȒhâ½â{E¯OðRïm²LWqï÷keCM>ÍöÓønŠ*V龡ŠÙ&Z~¹M3ÇQLìnn÷”ÉiѺø*–ÛZ]ô‡§cBm[°œGÁ7mÔ`9ËBþjKŒ™ÃTA¼h“É &Tžå±˜Áßs®éÄ]Šæé1Kâ¬÷>¾W¤E»Êd†.Ás®ÿÄÛÌwfÚß/‡£•MÄg'1Ûq§e€ºVÇf€dTÓ;œÌF£É¢ÀÖ‘rBçkÂqŒ…+sòdß0…a™Pϸ`xdÊU÷\˜Ï/„¯†^N •`ƒ¢ÙhÀðƒÊ§f,tPSë è«18¨F3ufAÏ:(ó öLü~ÈAÍ7);«Á˜,qÝflTtT³Šè.’)Ôäã&ÞQq¥ çù »beíëΨ,Ð3è^ÓtŸÂ̘ÆÉásØTv’ïÒ& §ûbµÊâýÞ6éuGô@•Ôy»òhɳÉh Žò#ÁÂSM>d`‡ïáp€ì@~Î`Âkw>â§Òão¤ÃSëk:;¾QÍ^Ê¢Ýë“èxHñæÅv¹Ná++»èsÌ.|Ã#ò^ŸäG[}§+ütòäy²m¦ËIg¾S×ßå‘\°#©lXsH£ÞšîUͼ¿âP„J‰PuÀš›#y¹M΀•üCÏÅ¢T®½nøpçÇv[„ºÏ’Ó¾«Jm ÿífÃS‚€Ú10‡S°ðUøRÖ·ˆ3îÏÒ ä‚~+ÝÁ#–£ÆÈ1O7î'Ú”S6. DFƒÙùÕ ñ:¾‹¡ÌÍ_Sb“È.J¶ðÅ=‘£æ†›6©H-²@b›t„6vL¦ìÚWKÕ¬<#\ËõRxÐ(ÊM77ˆzâû5'ç ÿÓUãö>géq»B.ÃÐÃR—yooîÁGqžÙ&•ç­™ÛdÃÝ3Í¿ ëLÁÔyݯ™‡‡à!?€ˆb”¯Þo“ÍÆ8õ /  -±¬@Œ„bõ7pœfô;VŽ:‚¾JÂ÷‡b'?ö— z$è(öÌ5dÿòˆ®²ü%]>ôIÁ•@Ÿ”\Lh…,ù´Å$½¥¦nÀü ¾/ý2}^oUžÍgŠÓTTeá3±«Üoan±«oÒìOGW ¤¹Aó Þº/€=̨‡1j×\Àõf«s»ÔµŠql¡²ÐHy„ã×*Æ\ÅôO/ûŠB^ä«üøR+«˜:TêøJuèÔ0!uÈhPS< Ýåc†â†Aõž­b`á."~ÀŠôXŒ«öÓG^Å„Ï}UL*Ï[3»ràkƒîP"¤ª®ÈƱÆU¯Qú‰ÏiSG×ëu¨ütiH\~ŸU:Ÿû*æb¾ã ã[EU~¶«˜‡õ¹ŠúîÅ ›ïÅP"íϸõ< ^–ÍáßA*Fz8¤wð”eW¢òõ_Þ³çNý“ñž+§´èK箑˜Àîoòy-?¶%ÕÖxÚu¹ßN×ѤJNÒ¾ ¦š±³òÔV(• ÁºViU¹Öüt,%^àý·«×'ÖB1Óïw¥XÚWp`O±,…é¶1w­N¥(2ù Šõûp᥌ËQ „×/äŸ}hZ(V‡ŠT!Ë^©k§µBˆ¸Þi“L)еGˆ«¥²q§ À –+9@‰¢ÆŽúUe÷Úñ¾à¤£ÞµZ¨†>ß[‡3"@…™~Æ…budYûw'ÊÏ[3å®ר67ƧpŒ¯‘b)Îòß}V)–¿Lš°ÑÞj&(HÐxãÅëùŽ€Ûúi7•Eg[ÊÐo—¶j Õ{sðbruuyáPeUÁŸU¡ØÃŒú‰¦XÎx“+™pn×ûãÝMœq v¤WÎôf÷l዇8úŽ ž èðPZÂjýÄNx}r—lÓì ûH&“iqþ—zsåšû$ÿš¦zS¾¹Ü£i£gÉ*¡¡s îƒ'?¥ÛäT&sYye_Ø1å”íjzx¦=9bßbóXINS!xÃJ¿ßþJ’&­ñÖ¶ZÐÛñbTú÷Ow±Agáxýö]*5¥Q‘¹m„!;ª¦EQ¿HÑ!¾ü!CU‘Í©G( Òt«¿¼XæŸ;³E¼2&Àت®Š¤ØÄ³@ð-UÖÎ׿qPŽ×öwQT&Í“ïE߬)/=&OrøQù>½‚ò0{uî2!ê³Ù Ä­ixe|!ÑÓB$jó²Ý)} E˜]õ»j~ÄS¯úÝ ç£]ÑM À£*ÈÌGÕâ¥ÿYÓTü\Ìô=‘â3åj×>þDzC?GUõgì¡Þ¨yñ™õPpÆsò×8ò³ßßñtëTóY„k×Ö„gÃE´nµéâ·Ú²fÅ‹m»Î»òdo[F•[l›Gæ~¸­ŸÐÕX³óŠj-Ñ MA®òyD#Ñ>ÅÒie‹b€ŠâÒP7Eéá,o॥JÖSLë¥3Tª±¦rEaÂç—‹¹5-Òüê-…-ñ‰§*üMéQ¤¿‘¸hÑ—V±@3y?ðâOOú;ÒmªXž¢D"öt0Ð’ì&b´O¥bº%£éü]vI° 1òê8ÙuC)­®{þÚˆâôµÚç‚´Úò‰ÑtR8PRÝÉ)†·ùÆ}8vU²+L×*7ÉV~’{EŠyCeãrëXÍ7j»¶]lUÆ¡U?ß2L-Žƒª@è•’"¬±šàFª»X¸XòØAÂN‹Dè³N°ìÆ:äªøÕ‘ºõ\÷h´Ì5h¶Ä 5hU³@El†7RôäBç o6B é*“n5Cç‰ÅïÂuD1ÿ-?¤ô—_£iŒ”½_ÒÎôQù0®g]"b?í_Ë6ªiÞz|¹X y™œºžD’‰Q|=9Á“5|¿¹ÂºZ–íÝU üxWÍ‘¬ÛÐãªUÞgÅïX‚ }ÜϹïÉOR6.Îð2oøò2:û]»ôXí÷§§3¬B3}ë<¤@yq2 KÙÌÍU¶š‚÷=¼Ì;q­…+›eÚÒÜÓ}¢_ô4Ïhµ ±¹9¯=m57m@«àÀjfS~ˆV».—dVg.¤Õdb#Ũ“RÕ_3«~b¸»™­ÚóÀÄE¦þ«ˆ®}ÜÏ⸈=¦¦‚v0T¿Zrª}Á7¿Y ¯«<¼Â²í™3øåí½Yæ0Ï sÍa?•Σ Ê~4Ç¢Gê͸sgàê³OÝœçÓyžäБý,_]4=š£•:Ž^:*Æ\ÎB2Ú²»+B·T¼NÌöçôdŸV~e!SLW¦ï-â6Uæq4Sz/Z@ÌêÁø#Ú^V1Œ¡¦¹Þ‡ü‹¿OUüô@Ѓ¤ó]Ðx/-‹ùbaÍŒÎ}&¦àÏêhއuYº° Òª ØvI3\w¬bì'¿O¯áƒÂpZ˜q2Çû´'naØÎõû"6öä[óuDçv˜)$CŠTÿßUšÝEKìyx>_¸Ž­µp¡ˆ±²ÅM‡WìÿÌKQ†â8|Úͱ% .ZàdwIþN‘,¬¡žÜšó±—sK‹Þ»O9±r/õÜ/FøGW£é%±áQøs}ÜÅÙ~™%;þíy•;ê=”oΘÃ'y;n×õú÷:Þþ±W±³0äkœ.6Éç­ð½Ògh„¤%a™§p ø:f(\~'5Æ›GÔÑ~1ƽ!s”B9öýÿÿPK! N¬word/webSettings.xmlŒÐÁJ1à»à;,¹·Ù•"²t· Rñ"‚úivvÌdÂLj¬OoÚª ^zË$™™¹ú@_½‹£Ð©f^« ‚¥Á…©S¯/ëÙª$™0O:µQ«þòb™Û ›gH©ü”ª(AZ´Ú¦[­ÅnÌ)B(#1šTJž4~ÛÅ™%Œ&¹ó.íõU]_«o†ÏQh…;²;„ŽýšÁ‘‚l]”-Ÿ£eâ!2Y)û ?yh\øešÅ?eÓ¼,£OéUÚ›úxB¯*´íÃˆÍÆ—s³P}‰brè>aM|Ë”X®÷”ŸïK¡ÿdÜÿÿPK!þ & word/fontTable.xmlÄ–[o›0Çß'í; ¿·˜K®*­š4H{h5-©öì“XÅ6²¡i¾ýHÖ6hmû`ÿøŸËÕÍ O¬gª4“"@Î%F‘\1±Ðã"¼"KgD¬H" ÐŽjtsýýÛÕvK‘i æ =æQ€6Y–Žm[Gʉ¾”)ð0–Š“ nÕÚæD=åéE$yJ2¶d Ëv¶‹qUnÔ9^d³ˆÞÉ(çTdå|[Ñü]¸ò‘]xŠ6Diš5±1Ç„³dW[Ué·Ÿ²,ÚÔög¢X±03G³5<Èõh†1voË )XCß©,.,ÊüF•Åk,  XXé§â?`?Õ¬r¶‘БùŽ/eÒ ¢Ûw€ƒÄ…»A;÷c@4Ëm@8•éD¹mÀ× bx0ë|S™+FU!ŽV.Pðð8$\GYp¹¢JNé"f/tÕAÞ‹OÅoÎ")éV½úCíÏtAòL¶p8õ[ªƒ®¿R·¶‰5IHôÔ ÃÅ| b(¤£Fk¶Ð[¦uwîp°§ñŠÏ>[¼$fÖ¨Ì:çIIã$‡~ÉÁPøl'³æ—ˆQÅ£`P¼©u?ÿ'$Ã’F8C¨#…d6ºƒûÆÒHëǴæOŒ½w.$ÉQJžJ (#E!)ïE T‡£Z[Nà(b¥k¤,È:7uaZŒ"u|nʘA¾tg ª£{“× Ü÷j‰Ó]U]…²ús~¿hRg°ƒs‡º/(Bf •ÓÅ.¥Ç ØŠÆ$O2ãø°ÿªÞZçþÉ4"MØ4ÊyC'¸ìÚÎϨSh£eBÚ+mQ\úUÏáw™Î=GQWÝCø`§eâ=`ì¼0UGª¯ÿÿÿPK!§{˜Íƒ<word/glossary/styles.xml´›Ûr›H†ï·jßâÞÑ슒’uظ*É:‘]{`dM- ØÞ§ßžaFt|e ˜þº§{þFöÌÇÏO¾güa$U05{º¦!G¹2x˜š÷w«‹‰iD±¸¶§15ŸEd~þô篢øÙ‘‚èÊw¦æ.Ž÷WNäì„oGÔ^ps«BߎácøÐñíð×aá(oÇr#=?wúÝîÈLÍ„+j»•ŽX(çà‹ ÆñPx`QÑNµGеGºûP9"Š hßKìù¶ 23½AÉ/PEj€`:‰Gm †÷ºø›ï™†ï\Ý<*´7LÞco`~‚™s•³[ûàÅ‘þÞ†éÇôþX© ŽŒÇ+;r¤¼ƒ)¾[_fA$M¸#ì(žEÒÎß\¦×ôý~03éDqÎàµt¥ÙÑÐè?öÛö¦f¿¼2×Nœ\óìàáxM÷ë¼3S3»´»SÓ/Ö3m¬ƒ‘æ"ޟğЕ½í@>€cocue¢9žÔeØCÉ$~ôÔÚ‡X¥4°¼YøX˜t((žuRÃpWl¿*ç—p×1ܘšÈ‚‹÷7·¡T!ÔéÔ¼¼ÔL¸¸¾ü"]Wè%“^»vÒÿìDp ÷åúÖjÑQ‡ ÷Gc,/r—OŽØëÊÓ­“ü]€Útä8èÐA¾x“\(Pñâ¿Gd/Éá«”°õ"7Ðÿ³ ŒúÐÔ×å@»,_­æ&ÍM ››Àâm6ãæ^€´7ÍHR¹ª¤'5VNR|ùy°.Ï”¬Qª¢Ú¥¢©Qª‘Ú¥’¨Qª€Ú¥„׎(å·vD)gG86 W±Š,œ Ò¾“±'ôø³Ôk(ui«1níÐ~íýÎнµèö9±\61ÍU”Ó·‹å:UðP;#ÐõÒ}³&/ýýÎŽ$¼(ÕL}¿áÔßéã¯Pºµ¨aR|¥˜ðÅäÕvëÙŽØ)Ï¡q'ž’Œ2ÆWÆ:y˨u®aZ¿Ê‡]l¬wØrka£ŠI¯ž‰ÄþWáœ]L£ŠPꌓr8ª¨Ëjãß„+þqjo#£DÏi. ÐÅóS4Ð)*¯®Ú(t(!$í‚Ú'øŸ4¾}cŠÿI+z£}‚ÿIãz£}¬óùe+;·¤å5f¯Ý¹òT¸=xÇ5P+cö δ؋8³O‰1{ŸÈ§1søæF©Sv.^t”Aa§#¡àb£ÇÂNJAözŒˆØ *°ú V3­e€Ø¢ûSü–úÏbÜf€*½kÖ.g«b ‘Þ¡T\ÿݯÐ<*å&€?—DÂ Ñ¬Š•G¥¥õ”ô;FŽ›5>¨Yd€šµB¨¢>ªßy²žH‡4oŽ [–³.†eGVæ1[™3¯´Ô7 ï_«·ºÊ}“@a'¨Ü7 vv ½,ë›Vk}“ÀªèÕ9Êk*'(vß̃²7BDíˆ7ÔŽx@íˆ7Ô\¼ë!í‰7ÅÖ†LSóâMá#œ¯ú(/Þ[µKÿftì{håü—ÛÄ›@a'¨,Þ ;;UâM`á#œJ(°2©#°Úo¨ñ&€Úo¨ñ&€Úo¨¹x×CÚo‹­ ™¦æÅ›bËCÊ‹7„p´áUñÆUÿîâM °To…‚ f/©;AV&Þ>Â)†”…ÅÍ ªñ&DÔŽx@íˆ7ÔŽx@ÍŻҞxXlmÈ45/Þ[2P^¼ ¶6¼*Þ¸ß]¼ v‚ÊâM °³SÔLç,v‚ ¬L¼ ,¬—ÆâMá#oq"jG¼ µ#ÞP;âM5ïzH{âM`±µ!ÓÔ¼x@lyÈ@yñ&€ØÚðªxãywñ&PØ *‹7ÂÎNAP3ñ&°Ø *°2©#°Úo ³±x@øÈ@¸Š8ijG¼ µ#ÞPsñ®‡´'Þ[2MÍ‹7Ä–‡ ”oˆ­ zŸ-ì%oOíUuŸÁqWدH˜øSlEç¬Dýî†Àc„ bEyPC¼Vê—AÛØmU%7žT¸¥ûwéä"Xã3' îþž_’0¥qXR§;oàôPþ¸OÒ‡ÀÏøyGvöÇåÚÒG»Ò#@xJî¥Çzô`}ÎÄCUéeü¿mJ…߈Ë(g,NDA¥Þ³=H¸Ý½®Ø޼É8º™îŽy‡Jž;Ù£yÖïXï?ã3î?;G>’dµì ÎB—ê<„”m¼äˆür¸!œÄÿš%ÉtŸìÄÜŸ Ïûfã´Xí«õÄ6NîöºØ ¦6*Ž•_=>Ä âèÉk òÎ$uÕuüá„×™9ÿ®tçÀ“h§%™ìu­(êLWûv²\œCSƒñŠKÆšW݉µZt¯'ƒÑrt¹ì/»ËÅj0öçÝëeÉóÚvÕYÇå×íN&ckŽåÝÜáQo1OÆ—«¾5̆Ãɰ;ŸOæ³ñ¢¿š¯&ÉéÏüT×xg‡‡ƒÑxeYÝkk¾ô“Ùl2é.®/Ç×óžÕ›”g¸vÑáã\GŸþÿÿPK!Më_ªOt?#word/glossary/stylesWithEffects.xml´›ms›8ÇßßÌ}†÷©ñCl'S·ãøáš™¶—ÖÉÜk rÌ8NîÓßJ€ŒÁ˜]C^5Æh»ÚÕ•TúüõÍsµWF÷'z÷“¡kÌ·¸íøÏýéqy5Öµ(6}Ût¹Ï&ú;‹ô¯_þüãóþ6Šß]i`Àn÷5Ñ·qÜv:‘µež}ò+äßÄŸ,îuøfãX¬³ç¡Ýé]Cþ„ÜbQ´™é¿š‘žšóÊÖxÀ|`mxè™qô‰‡ÏÏ _vÁXÌØY;®¿ƒmc˜™á}ú·©CWÊ!1ä6q(ý'–¢8ÁMFιµó˜Kb'd.øÀýhë‡0.µ!n3—^Ïñê¹Ù{û ;(ñTȘÌCs©8,™;1v2Ès“yù=dµh±kœ &͈0¡|À¸pÌÌ<ñLÇWf.›šüäÂzhRß…|(w§™µ{ÿEÙË’à™1”+/ZD2PZº«­0]ó¬ÛûgŸ‡æÚöÝ&*RÿRaskÎ6æÎ#ñ1|Óé'ùÏ’ûq¤íoÍÈrœG°â9`ðÛÔ¾afO#Ç̹HŸ‰ï·âÅü—j¤Å9ƒwŽíèþƒa¯¦;Ñ{½ìÉL8qôÌ5ýçìó¯žVyg&ºz´»Ý ¯VSa¬##ÍþÍEÅŸ¤+iÁâ޹‰è™à¸ŽHpo¢–|ø½ókîbžB¤€åÍÂǤƒ{ò·ŽÍþÙ2ÿ)böáù¯¥TèÔ¢Åw~ îG²ÜÈ^¼Y,J ¦}S$ù§2éÈq¤C;çàMò @•ÿÍÝ$‡')[fŠ®¦IÿÏ‚dԻƠžˆ(€´KòµßÜÄ ¹‰ëæ&dñ6›‹Qs/`/Ó4#Im䪟Ԙ[Iñåç¡s¦dňRÕŽ(MíˆRÔŽ(•DíˆRÔŽ(%¼vD)¿µ#Jé<;Â2¥p«¨/gµ°Ø…VY£t݆R—¶íÁ ÍçÐ ¶šè­E·Ï‰åj·Žq®J9½\,WqÈÅŽ³fF ;‹¥{±&/¼`kFlÌë@ §þQì~´¿Bv°5¨ë¤øJ1ÉÉÉöàšÛr×f¡öÈÞ’ŒÆÿäÚ*ÙeÔ:×0­ßçm¬ÁÆP´ÜZذbÒ«g"±ÿ݉äœíæÃŠPꌣr8¬¨Ëjã?˜íì¼lj»‘a¢ç„4ÒÅóS4)*¯®Ú(D0!$í‚‚´ð?i.tû"Çÿ“Vt¡}„ÿIãºÐ¾¬óù%+Íþ²¢¡–׈¼vgÜåáfçfk VF䬸ȋXÙG‰Äˆ¼‚äS›Zü憩Sr.:J Ó‘PäbÃÇBNJAöº„ˆÈ *°zV3­%€È¢û›½:âïÀÔf UZí5k—s¿b ¡öпv<®ßC÷*4K¹÷áÏ%Óp´~ÅÊÃÒÒzJú!ÇÍÔ¬@ÍZ!TQÕ{ÕñæÍ‘À"˲êb²ìÐÊ<"+³ÑZ@K}±ÿªX½ÕµPî› 9A徉 ³Sèeªo"X­õM«¢kTç(¯©” È}3R;DDíˆ7ÔŽx#@íˆ7Ô\¼ë!í‰7‚EÖ¥©yñF€ä+”_õ(/ÞYµKÿf”õ=iåü/·-ˆ7‚BNPY¼rvªÄÁ’¯P*¡ÀRR‡`µ#ÞP;âµ#ÞP;âµ#ÞPsñ®‡´'ÞY”¦æÅ"˃åÅ’¯P´á¤xËUÿáâ To…œ‚ ªM*‚ENP¥ÄÁ’¯PŠ!eÉâ¦ÕŽx#"jG¼ vÄjG¼ æâ]iO¼,²6(MÍ‹7D–Ê‹7DÖ†“â-㇋7‚BNPY¼rv ‚ªtÁ"'¨ÀRâ`Ézi,Þ|åR%¢vÄQ;âµ#ÞPsñ®‡´'ÞY”¦æÅ"˃åÅ"kÃIñ–käÃÅA!'¨,Þ 9;AUâ`‘T`)©C°ÚoHfcñF€ä+€ä*¢¤©ñFDÔŽx#@ÍŻҞx#XdmPššoˆ, ”oˆ¬ âœ-œEOíVöœAvª ìU$ LüÍ6,„‹…¬þtHC`!XQØï8Ñp»û‚F9k×áòH÷»<¥“»ˆÐ¹Iðø÷Lû–\€)“%u|ònå¯ ÉëIââø¿pe'ÈN– kpAH\íJ¯Ék¡÷p!(½Ö#‹{>ð¢¼T•>–ÿo›Rág Êe”µ–7¢Î Òïê ’<î^WœŠ—Ž®ddn¦§ã{¨ä½£3šgýŽÅIð3>Ë“âgçH“¯$Y-;—³¤KuBÊÖnrÅ ~¸÷mˆpŸÞÎJ’i¿™‰)ø~Æ\÷‡)/¤Å<¨~Õe›8ù¶kÈX0µæq̽êñ¡< .=9eÊ!ïLòQQ]'þÎ[³0=n^Y’¢sÈ›hÇ%™œu­(ìLWûv´\¬]S#/â—L6ZãþrnÜÃÅðfÑ[‹ùrp}Ý›w‹’çµdHp»[d].?ÃGý™,ïæ»óÙh<ºYöúÓÁôúz|mÌfãÙt4ï-gËqrû3?Õµ>ØáëÁp´ì÷»þl1èÆÓéxlÌïnFw³n¿;.Ïpí¤ÃÙ\G_þÿÿPK!y#kIT+word/glossary/fontTable.xmlÄ—]oÚ0†ï'í?D¹oã˜ð©Ò h#í¢Ó´RíÚ¬Ævd‡RþýŽã$°&²µ]Qìƒóðž÷œ\ݼðÄy¦J3)Æ®‰\‡ŠH.™XÝÇyx1p±$‰tìî¨vo®¿~¹ÚŽb)2íÀ~¡G<»ë,KGž§£5åD_Ê” ø0–Š“ Þª•ljzÚ¤‘ä)ÉØ‚%,Ûy¡ž[¤Qçd‘qÌ"z+£ §"Ë÷{Š&Q ½f©.³mÏɶ•j™*Q­ášybóqÂD•Æj‰8‹”Ô2Î.áb<{"Ϥ‚í>Ê_ñÄux4ú¶R‘Eì¶~à^àœíHÁ9ãT;ßéÖù)9ù‚”©©kžI2v†GuPðáUàz&S´&JÓ¬Zˆl8&œ%»2ªò¼ùú”eѺŒ?ÅÌÁìÍVðÁF/ÐØ½CáIº6âÝDúƒÀ/"eÿ†E¤SE@Ap°ê ïúÍ ðû€¨Ž[ð‹P D~Ù€¯Äà`×ù fr£UF40Pè !p0$0ˆ£,¸\R%,§?t³ºl!ŠNňâ§1%ÝH¢[þPûçº ›L6p8^å·ºþLYL lgšè©FS41˜21Òa4Ãht ½eZ·§ý=W|önñf‘Ø]ÃÜuÎ/’œÆQ½œƒ¥ðÑŽºæ§ˆUÅ£`м©sÿðOHï$°†ÐGÉÝðÞW‘JrM£"Ô QëFb‘|'JÉc:…6b‰ytþW¥@w¨Yh9‚ÃÔJÛJ™“5LoêÂŽÆ:>Ö2îÀ/ñ]¥‚bÀè¡îô5|ª—øíuQôUh«?îç@J;xná¡û†"d6W:ߥ´>€-iL6IfÎ_Å·–¾q87ÙA¤*›J9oèåSÛùŽ:ƒ1Z&¤¹ÓšæÒ+fŽ uÉ´ž9L_Ň: ΪÈÄ) ä·-˜IØB±F`æ3WÞ^[shßdMÅÔIL>ǼÃÜ”Xç07)í¼ãïnNê$PР‰Ó&zZÅ]оþ ÿÿPK-!g…ÇÞ‘ [Content_Types].xmlPK-!‘·óN Q_rels/.relsPK-!럺èöuword/_rels/document.xml.relsPK-!é»E€dŸ word/document.xmlPK-!®TI#æ‰Qword/footer1.xmlPK-!RÛ5æö†Sword/endnotes.xmlPK-! ¹!õŒÂUword/footnotes.xmlPK- !ûÇåó”ê”êçWword/media/image26.pngPK- !®©kÉÔ`Ô`¯Bword/media/image27.pngPK- !Ûäe¹Þ¹Þ·£word/media/image28.pngPK- !ÍÂ,üý4ý4¤‚word/media/image25.pngPK- !0MŇT‡TÕ·word/media/image23.pngPK- !0_6hnn word/media/image29.pngPK- !›C)ÎxÚxÚÓzword/media/image22.pngPK-!ó}á ïUword/theme/theme1.xmlPK- !\'Ì «ä«ä¡[word/media/image20.pngPK- !“üw6w6€@word/media/image24.pngPK- !ڼõ&‰&‰+wword/media/image31.pngPK- !{xÝ_5_5…word/media/image19.pngPK- !¬}à;‹;‹6word/media/image39.pngPK- !Ý‚¾gh;h;‡Áword/media/image38.pngPK- !Þ1%ðÖðÖ#ýword/media/image37.pngPK- !ñQ¢ž?ž?GÔword/media/image36.pngPK- !§­^aíaíword/media/image35.pngPK- !ùB¯wÄÄ® word/media/image34.pngPK- !"’°sJJôÅ word/media/image33.pngPK- !-à ¼ ¼: word/media/image32.pngPK- !ú9i1 f fŽÌ word/media/image30.pngPK- !ßvTº`º`b3 word/media/image21.pngPK- !ô¥z*Ú*ÚP” word/media/image17.pngPK- !ÛŸñÞÞ®n word/media/image7.pngPK- !?GÂÊ+Ê+¿‡ word/media/image6.pngPK- !]ðm°mQmQ¼³ word/media/image5.pngPK- !\‰æ˜33\word/media/image18.pngPK- !j‚.êµêµ 8word/media/image3.pngPK- !’Aúãã½îword/media/image2.pngPK- !˸A’"’"Òword/media/image1.pngPK- !ˆ?„ôMôMÅôword/media/image8.pngPK- !ÃȈc(c(ìBword/media/image4.pngPK- !ü²¹kk‚kword/media/image10.pngPK- !›±}U}UÔÖword/media/image16.pngPK- !Æ Poo…,word/media/image15.pngPK- !ÇÞ%(L(L(1word/media/image14.pngPK- !zÔÜÁ#Á#„}word/media/image9.pngPK- !މ,LVLVx¡word/media/image12.pngPK- !Ìe­X?¥?¥ø÷word/media/image13.pngPK- !…Så `&`&kword/media/image11.pngPK-!y ÄlÕÿÃword/glossary/settings.xmlPK-!%·¤ºioMÇword/glossary/document.xmlPK-!A¥Ox¦ M(îÈword/settings.xmlPK-!l­~ˆ5%ÃÓword/glossary/_rels/document.xml.relsPK-!&΢Öú&Õ_Õword/styles.xmlPK-!¥Åv?F?üdocProps/core.xmlPK-!t?9zÂ(îþcustomXml/_rels/item1.xml.relsPK-!ÞG•û5ôword/numbering.xmlPK-!ìTì~áUcustomXml/itemProps1.xmlPK-!ËÅ+ÚÏ^docProps/app.xmlPK-!©È\ªŒÚŒcustomXml/item1.xmlPK-! N¬qword/glossary/webSettings.xmlPK-!„Ú†Ì'Æb®word/stylesWithEffects.xmlPK-! N¬eEword/webSettings.xmlPK-!þ & ™Fword/fontTable.xmlPK-!§{˜Íƒ<âIword/glossary/styles.xmlPK-!Më_ªOt?#åQword/glossary/stylesWithEffects.xmlPK-!y#kIT+uZword/glossary/fontTable.xmlPKAA:^cpputest-3.7.2/cpputest_build/.gitignore000644 000765 000024 00000000016 12521603460 021336 0ustar00basvoddestaff000000 000000 * !.gitignore cpputest-3.7.2/cmake/Modules/000755 000765 000024 00000000000 12523662133 017017 5ustar00basvoddestaff000000 000000 cpputest-3.7.2/cmake/Modules/CppUTestConfigurationOptions.cmake000644 000765 000024 00000005746 12521603460 025644 0ustar00basvoddestaff000000 000000 if (MSVC) set(CPP_PLATFORM VisualCpp) include_directories(${CppUTestRootDirectory}/include/Platforms/${CPP_PLATFORM}) elseif (STD_C) set(CPP_PLATFORM Gcc) else (MSVC) set(STD_CPP False) set(MEMORY_LEAK_DETECTION False) set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} -nostdinc") set(CPPUTEST_LD_FLAGS "${CPPUTEST_LD_FLAGS} -nostdinc") set(CPPUTEST_STD_C_LIB_DISABLED 1) set(CPP_PLATFORM GccNoStdC) endif (MSVC) include("${CppUTestRootDirectory}/cmake/Modules/CppUTestWarningFlags.cmake") if (NOT STD_CPP) set(CPPUTEST_STD_CPP_LIB_DISABLED 1) if (STD_C AND NOT MSVC) set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} -nostdinc++") endif (STD_C AND NOT MSVC) endif (NOT STD_CPP) if (MEMORY_LEAK_DETECTION) if (MSVC) set(CPPUTEST_C_FLAGS "${CPPUTEST_C_FLAGS} /FI \"${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorMallocMacros.h\"") set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} /FI \"${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorMallocMacros.h\"") else (MSVC) set(CPPUTEST_C_FLAGS "${CPPUTEST_C_FLAGS} -include \"${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorMallocMacros.h\"") set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} -include \"${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorNewMacros.h\"") set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} -include \"${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorMallocMacros.h\"") endif (MSVC) else (MEMORY_LEAK_DETECTION) set(CPPUTEST_MEM_LEAK_DETECTION_DISABLED 1) endif (MEMORY_LEAK_DETECTION) if (MAP_FILE AND NOT MSVC) set(CPPUTEST_LD_FLAGS "${CPPUTEST_LD_FLAGS} -Wl,-map,$<.map.txt") endif (MAP_FILE AND NOT MSVC) if (COVERAGE AND NOT MSVC) set(CPPUTEST_C_FLAGS "${CPPUTEST_C_FLAGS} --coverage") set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} --coverage") set(CMAKE_BUILD_TYPE "Debug") endif (COVERAGE AND NOT MSVC) if (C++11) find_package(CXX11 REQUIRED) set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} ${CXX11_FLAGS}") endif (C++11) set(GMOCK_HOME $ENV{GMOCK_HOME}) if (DEFINED ENV{GMOCK_HOME}) # GMock pulls in gtest. set(INCLUDE_GTEST_TESTS 1) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_USE_OWN_TR1_TUPLE=1") include_directories(${GMOCK_HOME}/include ${GMOCK_HOME}/gtest ${GMOCK_HOME}/gtest/include) add_subdirectory(${GMOCK_HOME} "${CMAKE_CURRENT_BINARY_DIR}/gmock") set(CPPUNIT_EXTERNAL_LIBRARIES ${CPPUNIT_EXTERNAL_LIBARIES} gmock gtest) set(CPPUTEST_C_WARNING_FLAGS "") set(CPPUTEST_CXX_WARNING_FLAGS "") endif (DEFINED ENV{GMOCK_HOME}) set(CPPUTEST_C_FLAGS "${CPPUTEST_C_FLAGS} ${CPPUTEST_C_WARNING_FLAGS}") set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} ${CPPUTEST_CXX_WARNING_FLAGS}") if (CPPUTEST_FLAGS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CPPUTEST_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPPUTEST_CXX_FLAGS}") set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} ${CPPUTEST_LD_FLAGS}") endif (CPPUTEST_FLAGS) set(CPPUTEST_COMPILATION 1) cpputest-3.7.2/cmake/Modules/CppUTestWarningFlags.cmake000644 000765 000024 00000004040 12521603460 024025 0ustar00basvoddestaff000000 000000 if (MSVC) set(CPPUTEST_C_WARNING_FLAGS "/WX") set(CPPUTEST_CXX_WARNING_FLAGS "/WX /wd4290") else (MSVC) include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) macro(check_and_append_c_warning_flags) foreach (flag ${ARGN}) check_c_compiler_flag("-${flag}" WARNING_C_FLAG_${flag}) if (WARNING_C_FLAG_${flag}) set(CPPUTEST_C_WARNING_FLAGS "${CPPUTEST_C_WARNING_FLAGS} -${flag}") endif (WARNING_C_FLAG_${flag}) endforeach (flag) endmacro(check_and_append_c_warning_flags) macro(check_and_append_cxx_warning_flags) foreach (flag ${ARGN}) check_cxx_compiler_flag("-${flag}" WARNING_CXX_FLAG_${flag}) if (WARNING_CXX_FLAG_${flag}) set(CPPUTEST_CXX_WARNING_FLAGS "${CPPUTEST_CXX_WARNING_FLAGS} -${flag}") endif (WARNING_CXX_FLAG_${flag}) endforeach (flag) endmacro(check_and_append_cxx_warning_flags) set(WARNING_C_FLAGS Weverything Wall Wextra Wshadow Wswitch-default Wswitch-enum Wconversion Wsign-conversion Wno-padded Wno-disabled-macro-expansion ) if (NOT GMOCK AND NOT REAL_GTEST) list(APPEND WARNING_C_FLAGS Werror pedantic-errors) endif (NOT GMOCK AND NOT REAL_GTEST) set(WARNING_C_ONLY_FLAGS Wstrict-prototypes ) set(WARNING_CXX_FLAGS ${WARNING_C_FLAGS} Woverloaded-virtual Wno-global-constructors Wno-exit-time-destructors Wno-weak-vtables Wno-old-style-cast ) check_and_append_c_warning_flags(${WARNING_C_FLAGS}) check_and_append_c_warning_flags(${WARNING_C_ONLY_FLAGS}) check_and_append_cxx_warning_flags(${WARNING_CXX_FLAGS}) if (C++11) check_cxx_compiler_flag("-Wno-c++98-compat" NO_WARNING_CXX_98_COMPAT_FLAG) if (NO_WARNING_CXX_98_COMPAT_FLAG) set(CPPUTEST_CXX_WARNING_FLAGS "${CPPUTEST_CXX_WARNING_FLAGS} -Wno-c++98-compat") endif (NO_WARNING_CXX_98_COMPAT_FLAG) endif (C++11) endif (MSVC) cpputest-3.7.2/cmake/Modules/FindCXX11.cmake000644 000765 000024 00000002623 12521603460 021425 0ustar00basvoddestaff000000 000000 # - Finds if the compiler has C++11 support # This module can be used to detect compiler flags for using C++11, and checks # a small subset of the language. # # The following variables are set: # CXX11_FLAGS - flags to add to the CXX compiler for C++11 support # CXX11_FOUND - true if the compiler supports C++11 # # TODO: When compilers starts implementing the whole C++11, check the full set include(CheckCXXSourceCompiles) include(FindPackageHandleStandardArgs) set(CXX11_FLAG_CANDIDATES # Eveerything that automatically accepts C++11 " " # gcc, clang and Intel Linux "-std=c++11" # Intel windows "/Qstd=c++0x" ) set(CXX11_TEST_SOURCE " #if __cplusplus < 201103L #error \"Can not compile with C++11\" #endif int main() {} ") foreach(FLAG ${CXX11_FLAG_CANDIDATES}) set(SAFE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") set(CMAKE_REQUIRED_FLAGS "${FLAG}") unset(CXX11_FLAG_DETECTED CACHE) message(STATUS "Try C++11 flag = [${FLAG}]") check_cxx_source_compiles("${CXX11_TEST_SOURCE}" CXX11_FLAG_DETECTED) set(CMAKE_REQUIRED_FLAGS "${SAFE_CMAKE_REQUIRED_FLAGS}") if(CXX11_FLAG_DETECTED) set(CXX11_FLAGS_INTERNAL "${FLAG}") break() endif(CXX11_FLAG_DETECTED) endforeach(FLAG ${CXX11_FLAG_CANDIDATES}) set(CXX11_FLAGS "${CXX11_FLAGS_INTERNAL}") find_package_handle_standard_args(CXX11 DEFAULT_MSG CXX11_FLAGS) mark_as_advanced(CXX11_FLAGS) cpputest-3.7.2/builds/make-gcc-macport.sh000755 000765 000024 00000002025 12521603460 021255 0ustar00basvoddestaff000000 000000 #!/bin/bash # run from the builds directory listGccMacVersions() { port select --list gcc } if [ -z "$1" ]; then echo "usage: $0 gcc-version\navailable versions:" 1>&2 listGccMacVersions exit 1 fi gcc_v=$1 setGccMac() { sudo port select --set gcc $1 } setGccLinux() { echo "Not implemented for Linux" exit 1 # if [ ! -f "/usr/bin/gcc-$1" ] || [ ! -f "/usr/bin/g++-$1" ]; then # echo "no such version gcc/g++ installed" 1>&2 # exit 1 # fi # update-alternatives --set gcc "/usr/bin/gcc-$1" # update-alternatives --set g++ "/usr/bin/g++-$1" } if [ "$(uname)" == "Darwin" ]; then setGccMac $gcc_v elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then setGccLinux $gcc_v else echo "can't determine OS" exit 1 fi pushd .. cpputest_home=$(pwd) popd mkdir -p $gcc_v cd $gcc_v ../../configure make make check #these links keep compatibility with makefile worker ln -s $cpputest_home/include include ln -s $cpputest_home/build build ln -s $cpputest_home/scripts scripts cpputest-3.7.2/build/alltests.mmp000644 000765 000024 00000004503 12521603460 017772 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde and Timo Puronen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ TARGET cpputest.exe TARGETTYPE exe UID 0x00000000 0x03A6305A USERINCLUDE ..\include ..\include\CppUTest ..\include\Platforms\Symbian ..\tests SYSTEMINCLUDE \epoc32\include \epoc32\include\stdapis STATICLIBRARY libcrt0.lib STATICLIBRARY cpputest.lib LIBRARY euser.lib libc.lib libm.lib libpthread.lib SOURCEPATH ..\tests SOURCE FailureTest.cpp MemoryLeakWarningTest.cpp NullTestTest.cpp SOURCE SimpleStringTest.cpp TestInstallerTest.cpp SOURCE TestOutputTest.cpp TestRegistryTest.cpp UtestTest.cpp CommandLineTestRunnerTest.cpp JUnitOutputTest.cpp SOURCE TestHarness_cTest.cpp SOURCEPATH ..\tests SOURCE AllTests.cpp TestResultTest.cpp PluginTest.cpp SetPluginTest.cpp MACRO UT_NEW_MACROS_DISABLED MACRO UT_NEW_OVERRIDES_DISABLED cpputest-3.7.2/build/bld.inf000644 000765 000024 00000005101 12521603460 016656 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde and Timo Puronen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ PRJ_PLATFORMS DEFAULT PRJ_EXPORTS ..\include\CppUTest\TestHarness.h \epoc32\include\CppUTest\TestHarness.h ..\include\CppUTest\Utest.h \epoc32\include\CppUTest\Utest.h ..\include\CppUTest\UtestMacros.h \epoc32\include\CppUTest\UtestMacros.h ..\include\CppUTest\TestResult.h \epoc32\include\CppUTest\TestResult.h ..\include\CppUTest\Failure.h \epoc32\include\CppUTest\Failure.h ..\include\CppUTest\TestRegistry.h \epoc32\include\CppUTest\TestRegistry.h ..\include\CppUTest\SimpleString.h \epoc32\include\CppUTest\SimpleString.h ..\include\CppUTest\MemoryLeakWarning.h \epoc32\include\CppUTest\MemoryLeakWarning.h ..\include\CppUTest\CommandLineTestRunner.h \epoc32\include\CppuTest\CommandLineTestRunner.h ..\include\CppUTest\TestOutput.h \epoc32\include\CppuTest\TestOutput.h ..\include\CppUTest\TestPlugin.h \epoc32\include\CppUTest\TestPlugin.h ..\include\CppUTest\PlatformSpecificFunctions.h \epoc32\include\CppUTest\PlatformSpecificFunctions.h PRJ_MMPFILES cpputest.mmp PRJ_TESTMMPFILES alltests.mmp cpputest-3.7.2/build/ComponentMakefile000644 000765 000024 00000015167 12521603460 020757 0ustar00basvoddestaff000000 000000 #--------- # # ComponentMakefile # # Include this file in your makefile # It makes # A static library # A test executable # # The necessary parameters are shown in # ComponentMakefileExampleParameters # # Inputs # SRC_FILES - Specific source files to build into library # SRC_DIRS - Directories od source file to built into the library # TEST_SRC - unit test code build into the unit test runner # MOCKS_SRC - mock objects build into the test runner # INCLUDES - List of -I files # CPPUTEST_CXXFLAGS - flags for the C++ compiler # CPPUTEST_CPPFLAGS - flags for the C++ AND C compiler # CPPUTEST_CFLAGS - C complier # CPPUTEST_LDFLAGS - Linker flags # LIB_DIR - the directory for the created library # COMPONENT_NAME - the name of the thing being created # OTHER_MAKEFILE_TO_INCLUDE - a hook to use this makefile to make # other targets. Like CSlim, which is part of fitnesse #---------- ifeq ("$(COMPONENT_NAME)", "") COMPONENT_NAME = name_this_in_the_makefile endif ifeq ("$(OBJS_DIR)", "") OBJS_DIR = objs endif ifeq ("$(LIB_DIR)", "") LIB_DIR = lib endif ifeq ("$CPPUTEST_USE_MALLOC_LEAK_DETECTION","") CPPUTEST_USE_MALLOC_LEAK_DETECTION = Y echo "leak on by default" endif #CPPUTEST_USE_OPERATOR_NEW_LEAK_DETECTION = Y #CXXFLAGS += -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h #CFLAGS += -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h TARGET_LIB = \ $(LIB_DIR)/lib$(COMPONENT_NAME).a TEST_TARGET = \ $(COMPONENT_NAME)_tests #Helper Functions get_src_from_dir = $(wildcard $1/*.cpp) $(wildcard $1/*.c) get_dirs_from_dirspec = $(wildcard $1) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) src_to_o = $(subst .c,.o, $(subst .cpp,.o,$1)) src_to_d = $(subst .c,.d, $(subst .cpp,.d,$1)) change_o_file_location = $(patsubst %.o,$(OBJS_DIR)/%.o, $1) change_d_file_location = $(patsubst %.d,$(OBJS_DIR)/%.d, $1) src_to = $(subst .c,$1, $(subst .cpp,$1,$2)) #Derived STUFF_TO_CLEAN += $(TEST_TARGET) $(TEST_TARGET).exe $(TARGET_LIB) SRC += $(call get_src_from_dir_list, $(SRC_DIRS)) $(SRC_FILES) #OBJ = $(call src_to_o,$(SRC)) OBJ = $(call change_o_file_location, $(call src_to_o,$(SRC))) STUFF_TO_CLEAN += $(OBJ) TEST_SRC = $(call get_src_from_dir_list, $(TEST_SRC_DIRS)) #TEST_OBJS = $(call src_to_o,$(TEST_SRC)) TEST_OBJS = $(call change_o_file_location, $(call src_to_o,$(TEST_SRC))) STUFF_TO_CLEAN += $(TEST_OBJS) MOCKS_SRC = $(call get_src_from_dir_list, $(MOCKS_SRC_DIRS)) #MOCKS_OBJS = $(call src_to_o,$(MOCKS_SRC)) MOCKS_OBJS = $(call change_o_file_location, $(call src_to_o,$(MOCKS_SRC))) STUFF_TO_CLEAN += $(MOCKS_OBJS) ALL_SRC = $(SRC) $(TEST_SRC) $(MOCKS_SRC) #Test coverage with gcov GCOV_OUTPUT = gcov_output.txt GCOV_REPORT = gcov_report.txt GCOV_ERROR = gcov_error.txt GCOV_GCDA_FILES = $(call src_to,.gcda, $(ALL_SRC)) GCOV_GCNO_FILES = $(call src_to,.gcno, $(ALL_SRC)) TEST_OUTPUT = $(TEST_TARGET).txt STUFF_TO_CLEAN += \ $(GCOV_OUTPUT)\ $(GCOV_REPORT)\ $(GCOV_ERROR)\ $(GCOV_GCDA_FILES)\ $(GCOV_GCNO_FILES)\ $(TEST_OUTPUT) #Other stuff needed CPPUTEST_LIB = $(CPPUTEST_HOME)/lib/libCppUTest.a ifdef CPPUTEST_USE_EXTENSIONS CPPUTEST_LIB += $(CPPUTEST_HOME)/lib/libCppUTestExt.a endif CPPUTEST_CPPFLAGS += $(INCLUDES) $(GCOVFLAGS) #The gcda files for gcov need to be deleted before each run #To avoid annoying messages. GCOV_CLEAN = $(SILENCE)rm -f $(GCOV_GCDA_FILES) $(GCOV_OUTPUT) $(GCOV_REPORT) $(GCOV_ERROR) RUN_TEST_TARGET = $(SILENCE) $(GCOV_CLEAN) ; echo "Running $(TEST_TARGET)"; ./$(TEST_TARGET) $(CPPUTEST_EXE_FLAGS) ifneq "$(OTHER_MAKEFILE_TO_INCLUDE)" "" -include $(OTHER_MAKEFILE_TO_INCLUDE) endif ifneq "$(MAP_FILE)" "" CPPUTEST_LDFLAGS += -Wl,-map,$(MAP_FILE) endif INCLUDES_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(INCLUDE_DIRS)) INCLUDES += $(foreach dir, $(INCLUDES_DIRS_EXPANDED), -I$(dir)) MOCK_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(MOCKS_SRC_DIRS)) INCLUDES += $(foreach dir, $(MOCK_DIRS_EXPANDED), -I$(dir)) DEP_FILES = $(call src_to_d, $(ALL_SRC)) STUFF_TO_CLEAN += $(DEP_FILES) + $(PRODUCTION_CODE_START) + $(PRODUCTION_CODE_END) STUFF_TO_CLEAN += $(STDLIB_CODE_START) + $(MAP_FILE) + cpputest_*.xml junit_run_output # We'll use the CPPUTEST_CFLAGS etc so that you can override AND add to the CppUTest flags CFLAGS = $(CPPUTEST_CFLAGS) $(CPPUTEST_ADDITIONAL_CFLAGS) CPPFLAGS = $(CPPUTEST_CPPFLAGS) $(CPPUTEST_ADDITIONAL_CPPFLAGS) CXXFLAGS = $(CPPUTEST_CXXFLAGS) $(CPPUTEST_ADDITIONAL_CXXFLAGS) LDFLAGS = $(CPPUTEST_LDFLAGS) $(CPPUTEST_ADDITIONAL_LDFLAGS) # Targets .PHONY: all all: $(TEST_TARGET) $(RUN_TEST_TARGET) @echo "Component makefile is no longer supported, convert to MakefileInclude.mk" .PHONY: all_no_tests all_no_tests: $(TEST_TARGET) .PHONY: flags flags: $(SILENCE)echo Compile with these flags: $(SILENCE)for f in $(CPPFLAGS) ; do \ echo " C++ $$f" ; \ done $(SILENCE)for f in $(CFLAGS) ; do \ echo " C $$f" ; \ done $(SILENCE)for f in $(LDFLAGS) ; do \ echo " LD $$f" ; \ done $(SILENCE)for f in $(ARFLAGS) ; do \ echo " AR $$f" ; \ done $(TEST_TARGET): $(TEST_OBJS) $(MOCKS_OBJS) $(PRODUCTION_CODE_START) $(TARGET_LIB) $(USER_LIBS) $(PRODUCTION_CODE_END) $(CPPUTEST_LIB) $(STDLIB_CODE_START) $(SILENCE)echo Linking $@ $(SILENCE)$(LINK.o) -o $@ $^ $(LD_LIBRARIES) $(TARGET_LIB): $(OBJ) $(SILENCE)echo Building archive $@ $(SILENCE)mkdir -p lib $(SILENCE)$(AR) $(ARFLAGS) $@ $^ $(SILENCE)$(RANLIB) $@ test: $(TEST_TARGET) $(RUN_TEST_TARGET) | tee $(TEST_OUTPUT) vtest: $(TEST_TARGET) $(RUN_TEST_TARGET) -v | tee $(TEST_OUTPUT) $(OBJS_DIR)/%.o: %.cpp @echo compiling $(notdir $<) $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(COMPILE.cpp) -M -MF $(subst .o,.d,$@) -MT "$@ $(subst .o,.d,$@)" $< $(SILENCE)$(COMPILE.cpp) $(OUTPUT_OPTION) $< $(OBJS_DIR)/%.o: %.c @echo compiling $(notdir $<) $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(COMPILE.c) -M -MF $(subst .o,.d,$@) -MT "$@ $(subst .o,.d,$@)" $< $(SILENCE)$(COMPILE.c) $(OUTPUT_OPTION) $< ifneq "$(MAKECMDGOALS)" "clean" -include $(DEP_FILES) endif .PHONY: clean clean: $(SILENCE)echo Making clean $(SILENCE)$(RM) $(STUFF_TO_CLEAN) $(SILENCE)find . -name "*.gcov" | xargs rm -f $(SILENCE)find . -name "*.[do]" | xargs rm -f gcov: test $(SILENCE)for d in $(SRC_DIRS) ; do \ gcov -o $$d $$d/*.c $$d/*.cpp >> $(GCOV_OUTPUT) 2>>$(GCOV_ERROR) ; \ done $(CPPUTEST_HOME)/scripts/filterGcov.sh $(GCOV_OUTPUT) $(GCOV_ERROR) $(GCOV_REPORT) $(TEST_OUTPUT) cat $(GCOV_REPORT) .PHONEY: format format: $(CPPUTEST_HOME)/scripts/reformat.sh $(PROJECT_HOME_DIR) debug: echo Stuff to clean $(SILENCE)for f in $(STUFF_TO_CLEAN) ; do \ echo "$$f" ; \ done echo Includes $(SILENCE)for i in $(INCLUDES) ; do \ echo "$$i" ; \ done cpputest-3.7.2/build/ComponentMakefileExampleParameters000644 000765 000024 00000002260 12521603460 024305 0ustar00basvoddestaff000000 000000 #Set this to @ to keep the makefile quiet SILENCE = @ #---- Outputs ----# COMPONENT_NAME = ProjectName TARGET_LIB = \ lib/lib$(COMPONENT_NAME).a TEST_TARGET = \ $(COMPONENT_NAME)_tests #--- Inputs ----# PROJECT_HOME_DIR = . CPPUTEST_HOME = ../CppUTest CPP_PLATFORM = Gcc #CFLAGS are set to override malloc and free to get memory leak detection in C programs CFLAGS = -Dmalloc=cpputest_malloc -Dfree=cpputest_free CPPFLAGS = GCOVFLAGS = -fprofile-arcs -ftest-coverage #SRC_DIRS is a list of source directories that make up the target library #If test files are in these directories, their IMPORT_TEST_GROUPs need #to be included in main to force them to be linked in. By convention #put them into an AllTests.h file in each directory SRC_DIRS = \ src #TEST_SRC_DIRS is a list of directories including # - A test main (AllTests.cpp by conventin) # - OBJ files in these directories are included in the TEST_TARGET # - Consequently - AllTests.h containing the IMPORT_TEST_GROUPS is not needed # - TEST_SRC_DIRS = \ tests #includes for all compiles INCLUDES =\ -I.\ -I$(CPPUTEST_HOME)/include\ #Flags to pass to ld LDFLAGS += USER_LIBS = include $(CPPUTEST_HOME)/build/ComponentMakefile cpputest-3.7.2/build/cpputest.mmp000644 000765 000024 00000004352 12521603460 020010 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde and Timo Puronen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ TARGET cpputest.lib TARGETTYPE LIB UID 0x00000000 0x03A6305A USERINCLUDE ..\include ..\include\CppUTest ..\include\Platforms\Symbian SYSTEMINCLUDE \epoc32\include \epoc32\include\stdapis SOURCEPATH ..\src\CppUTest SOURCE CommandLineTestRunner.cpp Failure.cpp MemoryLeakWarningPlugin.cpp SimpleString.cpp TestOutput.cpp TestPlugin.cpp TestRegistry.cpp TestResult.cpp Utest.cpp JUnitTestOutput.cpp TestHarness_c.cpp SOURCEPATH ..\src\Platforms\Symbian SOURCE SymbianMemoryLeakWarning.cpp UtestPlatform.cpp MACRO UT_NEW_MACROS_DISABLED MACRO UT_NEW_OVERRIDES_DISABLED SOURCEPATH ..\src\CppUTest SOURCE MemoryLeakDetector.cpp CommandLineArguments.cpp cpputest-3.7.2/build/MakefileWorker.mk000644 000765 000024 00000043046 12521603460 020671 0ustar00basvoddestaff000000 000000 #--------- # # MakefileWorker.mk # # Include this helper file in your makefile # It makes # A static library # A test executable # # See this example for parameter settings # examples/Makefile # #---------- # Inputs - these variables describe what to build # # INCLUDE_DIRS - Directories used to search for include files. # This generates a -I for each directory # SRC_DIRS - Directories containing source file to built into the library # SRC_FILES - Specific source files to build into library. Helpful when not all code # in a directory can be built for test (hopefully a temporary situation) # TEST_SRC_DIRS - Directories containing unit test code build into the unit test runner # These do not go in a library. They are explicitly included in the test runner # TEST_SRC_FILES - Specific source files to build into the unit test runner # These do not go in a library. They are explicitly included in the test runner # MOCKS_SRC_DIRS - Directories containing mock source files to build into the test runner # These do not go in a library. They are explicitly included in the test runner #---------- # You can adjust these variables to influence how to build the test target # and where to put and name outputs # See below to determine defaults # COMPONENT_NAME - the name of the thing being built # TEST_TARGET - name the test executable. By default it is # $(COMPONENT_NAME)_tests # Helpful if you want 1 > make files in the same directory with different # executables as output. # CPPUTEST_HOME - where CppUTest home dir found # TARGET_PLATFORM - Influences how the outputs are generated by modifying the # CPPUTEST_OBJS_DIR and CPPUTEST_LIB_DIR to use a sub-directory under the # normal objs and lib directories. Also modifies where to search for the # CPPUTEST_LIB to link against. # CPPUTEST_OBJS_DIR - a directory where o and d files go # CPPUTEST_LIB_DIR - a directory where libs go # CPPUTEST_ENABLE_DEBUG - build for debug # CPPUTEST_USE_MEM_LEAK_DETECTION - Links with overridden new and delete # CPPUTEST_USE_STD_CPP_LIB - Set to N to keep the standard C++ library out # of the test harness # CPPUTEST_USE_GCOV - Turn on coverage analysis # Clean then build with this flag set to Y, then 'make gcov' # CPPUTEST_MAPFILE - generate a map file # CPPUTEST_WARNINGFLAGS - overly picky by default # OTHER_MAKEFILE_TO_INCLUDE - a hook to use this makefile to make # other targets. Like CSlim, which is part of fitnesse # CPPUTEST_USE_VPATH - Use Make's VPATH functionality to support user # specification of source files and directories that aren't below # the user's Makefile in the directory tree, like: # SRC_DIRS += ../../lib/foo # It defaults to N, and shouldn't be necessary except in the above case. #---------- # # Other flags users can initialize to sneak in their settings # CPPUTEST_CXXFLAGS - flags for the C++ compiler # CPPUTEST_CPPFLAGS - flags for the C++ AND C preprocessor # CPPUTEST_CFLAGS - flags for the C complier # CPPUTEST_LDFLAGS - Linker flags #---------- # Some behavior is weird on some platforms. Need to discover the platform. # Platforms UNAME_OUTPUT = "$(shell uname -a)" MACOSX_STR = Darwin MINGW_STR = MINGW CYGWIN_STR = CYGWIN LINUX_STR = Linux SUNOS_STR = SunOS UNKNWOWN_OS_STR = Unknown # Compilers CC_VERSION_OUTPUT ="$(shell $(CXX) -v 2>&1)" CLANG_STR = clang SUNSTUDIO_CXX_STR = SunStudio UNAME_OS = $(UNKNWOWN_OS_STR) ifeq ($(findstring $(MINGW_STR),$(UNAME_OUTPUT)),$(MINGW_STR)) UNAME_OS = $(MINGW_STR) endif ifeq ($(findstring $(CYGWIN_STR),$(UNAME_OUTPUT)),$(CYGWIN_STR)) UNAME_OS = $(CYGWIN_STR) endif ifeq ($(findstring $(LINUX_STR),$(UNAME_OUTPUT)),$(LINUX_STR)) UNAME_OS = $(LINUX_STR) endif ifeq ($(findstring $(MACOSX_STR),$(UNAME_OUTPUT)),$(MACOSX_STR)) UNAME_OS = $(MACOSX_STR) #lion has a problem with the 'v' part of -a UNAME_OUTPUT = "$(shell uname -pmnrs)" endif ifeq ($(findstring $(SUNOS_STR),$(UNAME_OUTPUT)),$(SUNOS_STR)) UNAME_OS = $(SUNOS_STR) SUNSTUDIO_CXX_ERR_STR = CC -flags ifeq ($(findstring $(SUNSTUDIO_CXX_ERR_STR),$(CC_VERSION_OUTPUT)),$(SUNSTUDIO_CXX_ERR_STR)) CC_VERSION_OUTPUT ="$(shell $(CXX) -V 2>&1)" COMPILER_NAME = $(SUNSTUDIO_CXX_STR) endif endif ifeq ($(findstring $(CLANG_STR),$(CC_VERSION_OUTPUT)),$(CLANG_STR)) COMPILER_NAME = $(CLANG_STR) endif #Kludge for mingw, it does not have cc.exe, but gcc.exe will do ifeq ($(UNAME_OS),$(MINGW_STR)) CC := gcc endif #And another kludge. Exception handling in gcc 4.6.2 is broken when linking the # Standard C++ library as a shared library. Unbelievable. ifeq ($(UNAME_OS),$(MINGW_STR)) CPPUTEST_LDFLAGS += -static endif ifeq ($(UNAME_OS),$(CYGWIN_STR)) CPPUTEST_LDFLAGS += -static endif #Kludge for MacOsX gcc compiler on Darwin9 who can't handle pendantic ifeq ($(UNAME_OS),$(MACOSX_STR)) ifeq ($(findstring Version 9,$(UNAME_OUTPUT)),Version 9) CPPUTEST_PEDANTIC_ERRORS = N endif endif ifndef COMPONENT_NAME COMPONENT_NAME = name_this_in_the_makefile endif # Debug on by default ifndef CPPUTEST_ENABLE_DEBUG CPPUTEST_ENABLE_DEBUG = Y endif # new and delete for memory leak detection on by default ifndef CPPUTEST_USE_MEM_LEAK_DETECTION CPPUTEST_USE_MEM_LEAK_DETECTION = Y endif # Use the standard C library ifndef CPPUTEST_USE_STD_C_LIB CPPUTEST_USE_STD_C_LIB = Y endif # Use the standard C++ library ifndef CPPUTEST_USE_STD_CPP_LIB CPPUTEST_USE_STD_CPP_LIB = Y endif # Use gcov, off by default ifndef CPPUTEST_USE_GCOV CPPUTEST_USE_GCOV = N endif ifndef CPPUTEST_PEDANTIC_ERRORS CPPUTEST_PEDANTIC_ERRORS = Y endif # Default warnings ifndef CPPUTEST_WARNINGFLAGS CPPUTEST_WARNINGFLAGS = -Wall -Wextra -Werror -Wshadow -Wswitch-default -Wswitch-enum -Wconversion ifeq ($(CPPUTEST_PEDANTIC_ERRORS), Y) CPPUTEST_WARNINGFLAGS += -pedantic-errors endif ifeq ($(UNAME_OS),$(LINUX_STR)) CPPUTEST_WARNINGFLAGS += -Wsign-conversion endif CPPUTEST_CXX_WARNINGFLAGS = -Woverloaded-virtual CPPUTEST_C_WARNINGFLAGS = -Wstrict-prototypes endif #Wonderful extra compiler warnings with clang ifeq ($(COMPILER_NAME),$(CLANG_STR)) # -Wno-disabled-macro-expansion -> Have to disable the macro expansion warning as the operator new overload warns on that. # -Wno-padded -> I sort-of like this warning but if there is a bool at the end of the class, it seems impossible to remove it! (except by making padding explicit) # -Wno-global-constructors Wno-exit-time-destructors -> Great warnings, but in CppUTest it is impossible to avoid as the automatic test registration depends on the global ctor and dtor # -Wno-weak-vtables -> The TEST_GROUP macro declares a class and will automatically inline its methods. Thats ok as they are only in one translation unit. Unfortunately, the warning can't detect that, so it must be disabled. # -Wno-old-style-casts -> We only use old style casts by decision CPPUTEST_CXX_WARNINGFLAGS += -Weverything -Wno-disabled-macro-expansion -Wno-padded -Wno-global-constructors -Wno-exit-time-destructors -Wno-weak-vtables -Wno-old-style-cast CPPUTEST_C_WARNINGFLAGS += -Weverything -Wno-padded endif # Uhm. Maybe put some warning flags for SunStudio here? ifeq ($(COMPILER_NAME),$(SUNSTUDIO_CXX_STR)) CPPUTEST_CXX_WARNINGFLAGS = CPPUTEST_C_WARNINGFLAGS = endif # Default dir for temporary files (d, o) ifndef CPPUTEST_OBJS_DIR ifndef TARGET_PLATFORM CPPUTEST_OBJS_DIR = objs else CPPUTEST_OBJS_DIR = objs/$(TARGET_PLATFORM) endif endif # Default dir for the outout library ifndef CPPUTEST_LIB_DIR ifndef TARGET_PLATFORM CPPUTEST_LIB_DIR = lib else CPPUTEST_LIB_DIR = lib/$(TARGET_PLATFORM) endif endif # No map by default ifndef CPPUTEST_MAP_FILE CPPUTEST_MAP_FILE = N endif # No extentions is default ifndef CPPUTEST_USE_EXTENSIONS CPPUTEST_USE_EXTENSIONS = N endif # No VPATH is default ifndef CPPUTEST_USE_VPATH CPPUTEST_USE_VPATH := N endif # Make empty, instead of 'N', for usage in $(if ) conditionals ifneq ($(CPPUTEST_USE_VPATH), Y) CPPUTEST_USE_VPATH := endif ifndef TARGET_PLATFORM CPPUTEST_LIB_LINK_DIR = $(CPPUTEST_HOME)/lib else CPPUTEST_LIB_LINK_DIR = $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) endif # -------------------------------------- # derived flags in the following area # -------------------------------------- # Without the C library, we'll need to disable the C++ library and ... ifeq ($(CPPUTEST_USE_STD_C_LIB), N) CPPUTEST_USE_STD_CPP_LIB = N CPPUTEST_USE_MEM_LEAK_DETECTION = N CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_C_LIB_DISABLED CPPUTEST_CPPFLAGS += -nostdinc endif CPPUTEST_CPPFLAGS += -DCPPUTEST_COMPILATION ifeq ($(CPPUTEST_USE_MEM_LEAK_DETECTION), N) CPPUTEST_CPPFLAGS += -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED else ifndef CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h endif ifndef CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h endif endif ifeq ($(CPPUTEST_ENABLE_DEBUG), Y) CPPUTEST_CXXFLAGS += -g CPPUTEST_CFLAGS += -g CPPUTEST_LDFLAGS += -g endif ifeq ($(CPPUTEST_USE_STD_CPP_LIB), N) CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_CPP_LIB_DISABLED ifeq ($(CPPUTEST_USE_STD_C_LIB), Y) CPPUTEST_CXXFLAGS += -nostdinc++ endif endif ifdef $(GMOCK_HOME) GTEST_HOME = $(GMOCK_HOME)/gtest CPPUTEST_CPPFLAGS += -I$(GMOCK_HOME)/include GMOCK_LIBRARY = $(GMOCK_HOME)/lib/.libs/libgmock.a LD_LIBRARIES += $(GMOCK_LIBRARY) CPPUTEST_CPPFLAGS += -DINCLUDE_GTEST_TESTS CPPUTEST_WARNINGFLAGS = CPPUTEST_CPPFLAGS += -I$(GTEST_HOME)/include -I$(GTEST_HOME) GTEST_LIBRARY = $(GTEST_HOME)/lib/.libs/libgtest.a LD_LIBRARIES += $(GTEST_LIBRARY) endif ifeq ($(CPPUTEST_USE_GCOV), Y) CPPUTEST_CXXFLAGS += -fprofile-arcs -ftest-coverage CPPUTEST_CFLAGS += -fprofile-arcs -ftest-coverage endif CPPUTEST_CXXFLAGS += $(CPPUTEST_WARNINGFLAGS) $(CPPUTEST_CXX_WARNINGFLAGS) CPPUTEST_CPPFLAGS += $(CPPUTEST_WARNINGFLAGS) CPPUTEST_CXXFLAGS += $(CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE) CPPUTEST_CPPFLAGS += $(CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE) CPPUTEST_CFLAGS += $(CPPUTEST_C_WARNINGFLAGS) TARGET_MAP = $(COMPONENT_NAME).map.txt ifeq ($(CPPUTEST_MAP_FILE), Y) CPPUTEST_LDFLAGS += -Wl,-map,$(TARGET_MAP) endif # Link with CppUTest lib CPPUTEST_LIB = $(CPPUTEST_LIB_LINK_DIR)/libCppUTest.a ifeq ($(CPPUTEST_USE_EXTENSIONS), Y) CPPUTEST_LIB += $(CPPUTEST_LIB_LINK_DIR)/libCppUTestExt.a endif ifdef CPPUTEST_STATIC_REALTIME LD_LIBRARIES += -lrt endif TARGET_LIB = \ $(CPPUTEST_LIB_DIR)/lib$(COMPONENT_NAME).a ifndef TEST_TARGET ifndef TARGET_PLATFORM TEST_TARGET = $(COMPONENT_NAME)_tests else TEST_TARGET = $(COMPONENT_NAME)_$(TARGET_PLATFORM)_tests endif endif #Helper Functions get_src_from_dir = $(wildcard $1/*.cpp) $(wildcard $1/*.cc) $(wildcard $1/*.c) get_dirs_from_dirspec = $(wildcard $1) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) __src_to = $(subst .c,$1, $(subst .cc,$1, $(subst .cpp,$1,$(if $(CPPUTEST_USE_VPATH),$(notdir $2),$2)))) src_to = $(addprefix $(CPPUTEST_OBJS_DIR)/,$(call __src_to,$1,$2)) src_to_o = $(call src_to,.o,$1) src_to_d = $(call src_to,.d,$1) src_to_gcda = $(call src_to,.gcda,$1) src_to_gcno = $(call src_to,.gcno,$1) time = $(shell date +%s) delta_t = $(eval minus, $1, $2) debug_print_list = $(foreach word,$1,echo " $(word)";) echo; #Derived STUFF_TO_CLEAN += $(TEST_TARGET) $(TEST_TARGET).exe $(TARGET_LIB) $(TARGET_MAP) SRC += $(call get_src_from_dir_list, $(SRC_DIRS)) $(SRC_FILES) OBJ = $(call src_to_o,$(SRC)) STUFF_TO_CLEAN += $(OBJ) TEST_SRC += $(call get_src_from_dir_list, $(TEST_SRC_DIRS)) $(TEST_SRC_FILES) TEST_OBJS = $(call src_to_o,$(TEST_SRC)) STUFF_TO_CLEAN += $(TEST_OBJS) MOCKS_SRC += $(call get_src_from_dir_list, $(MOCKS_SRC_DIRS)) MOCKS_OBJS = $(call src_to_o,$(MOCKS_SRC)) STUFF_TO_CLEAN += $(MOCKS_OBJS) ALL_SRC = $(SRC) $(TEST_SRC) $(MOCKS_SRC) # If we're using VPATH ifeq ($(CPPUTEST_USE_VPATH), Y) # gather all the source directories and add them VPATH += $(sort $(dir $(ALL_SRC))) # Add the component name to the objs dir path, to differentiate between same-name objects CPPUTEST_OBJS_DIR := $(addsuffix /$(COMPONENT_NAME),$(CPPUTEST_OBJS_DIR)) endif #Test coverage with gcov GCOV_OUTPUT = gcov_output.txt GCOV_REPORT = gcov_report.txt GCOV_ERROR = gcov_error.txt GCOV_GCDA_FILES = $(call src_to_gcda, $(ALL_SRC)) GCOV_GCNO_FILES = $(call src_to_gcno, $(ALL_SRC)) TEST_OUTPUT = $(TEST_TARGET).txt STUFF_TO_CLEAN += \ $(GCOV_OUTPUT)\ $(GCOV_REPORT)\ $(GCOV_REPORT).html\ $(GCOV_ERROR)\ $(GCOV_GCDA_FILES)\ $(GCOV_GCNO_FILES)\ $(TEST_OUTPUT) #The gcda files for gcov need to be deleted before each run #To avoid annoying messages. GCOV_CLEAN = $(SILENCE)rm -f $(GCOV_GCDA_FILES) $(GCOV_OUTPUT) $(GCOV_REPORT) $(GCOV_ERROR) RUN_TEST_TARGET = $(SILENCE) $(GCOV_CLEAN) ; echo "Running $(TEST_TARGET)"; ./$(TEST_TARGET) $(CPPUTEST_EXE_FLAGS) ifeq ($(CPPUTEST_USE_GCOV), Y) ifeq ($(COMPILER_NAME),$(CLANG_STR)) LD_LIBRARIES += --coverage else LD_LIBRARIES += -lgcov endif endif INCLUDES_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(INCLUDE_DIRS)) INCLUDES += $(foreach dir, $(INCLUDES_DIRS_EXPANDED), -I$(dir)) MOCK_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(MOCKS_SRC_DIRS)) INCLUDES += $(foreach dir, $(MOCK_DIRS_EXPANDED), -I$(dir)) CPPUTEST_CPPFLAGS += $(INCLUDES) DEP_FILES = $(call src_to_d, $(ALL_SRC)) STUFF_TO_CLEAN += $(DEP_FILES) $(PRODUCTION_CODE_START) $(PRODUCTION_CODE_END) STUFF_TO_CLEAN += $(STDLIB_CODE_START) $(MAP_FILE) cpputest_*.xml junit_run_output # We'll use the CPPUTEST_CFLAGS etc so that you can override AND add to the CppUTest flags CFLAGS = $(CPPUTEST_CFLAGS) $(CPPUTEST_ADDITIONAL_CFLAGS) CPPFLAGS = $(CPPUTEST_CPPFLAGS) $(CPPUTEST_ADDITIONAL_CPPFLAGS) CXXFLAGS = $(CPPUTEST_CXXFLAGS) $(CPPUTEST_ADDITIONAL_CXXFLAGS) LDFLAGS = $(CPPUTEST_LDFLAGS) $(CPPUTEST_ADDITIONAL_LDFLAGS) # Don't consider creating the archive a warning condition that does STDERR output ARFLAGS := $(ARFLAGS)c DEP_FLAGS=-MMD -MP # Some macros for programs to be overridden. For some reason, these are not in Make defaults RANLIB = ranlib # Targets .PHONY: all all: start $(TEST_TARGET) $(RUN_TEST_TARGET) .PHONY: start start: $(TEST_TARGET) $(SILENCE)START_TIME=$(call time) .PHONY: all_no_tests all_no_tests: $(TEST_TARGET) .PHONY: flags flags: @echo @echo "OS ${UNAME_OS}" @echo "Compile C and C++ source with CPPFLAGS:" @$(call debug_print_list,$(CPPFLAGS)) @echo "Compile C++ source with CXXFLAGS:" @$(call debug_print_list,$(CXXFLAGS)) @echo "Compile C source with CFLAGS:" @$(call debug_print_list,$(CFLAGS)) @echo "Link with LDFLAGS:" @$(call debug_print_list,$(LDFLAGS)) @echo "Link with LD_LIBRARIES:" @$(call debug_print_list,$(LD_LIBRARIES)) @echo "Create libraries with ARFLAGS:" @$(call debug_print_list,$(ARFLAGS)) TEST_DEPS = $(TEST_OBJS) $(MOCKS_OBJS) $(PRODUCTION_CODE_START) $(TARGET_LIB) $(USER_LIBS) $(PRODUCTION_CODE_END) $(CPPUTEST_LIB) $(STDLIB_CODE_START) test-deps: $(TEST_DEPS) $(TEST_TARGET): $(TEST_DEPS) @echo Linking $@ $(SILENCE)$(CXX) -o $@ $^ $(LD_LIBRARIES) $(LDFLAGS) $(TARGET_LIB): $(OBJ) @echo Building archive $@ $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(AR) $(ARFLAGS) $@ $^ $(SILENCE)$(RANLIB) $@ test: $(TEST_TARGET) $(RUN_TEST_TARGET) | tee $(TEST_OUTPUT) vtest: $(TEST_TARGET) $(RUN_TEST_TARGET) -v | tee $(TEST_OUTPUT) $(CPPUTEST_OBJS_DIR)/%.o: %.cc @echo compiling $(notdir $<) $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(COMPILE.cpp) $(DEP_FLAGS) $(OUTPUT_OPTION) $< $(CPPUTEST_OBJS_DIR)/%.o: %.cpp @echo compiling $(notdir $<) $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(COMPILE.cpp) $(DEP_FLAGS) $(OUTPUT_OPTION) $< $(CPPUTEST_OBJS_DIR)/%.o: %.c @echo compiling $(notdir $<) $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(COMPILE.c) $(DEP_FLAGS) $(OUTPUT_OPTION) $< ifneq "$(MAKECMDGOALS)" "clean" -include $(DEP_FILES) endif .PHONY: clean clean: @echo Making clean $(SILENCE)$(RM) $(STUFF_TO_CLEAN) $(SILENCE)rm -rf gcov $(CPPUTEST_OBJS_DIR) $(SILENCE)find . -name "*.gcno" | xargs rm -f $(SILENCE)find . -name "*.gcda" | xargs rm -f #realclean gets rid of all gcov, o and d files in the directory tree #not just the ones made by this makefile .PHONY: realclean realclean: clean $(SILENCE)rm -rf gcov $(SILENCE)find . -name "*.gdcno" | xargs rm -f $(SILENCE)find . -name "*.[do]" | xargs rm -f gcov: test ifeq ($(CPPUTEST_USE_VPATH), Y) $(SILENCE)gcov --object-directory $(CPPUTEST_OBJS_DIR) $(SRC) >> $(GCOV_OUTPUT) 2>> $(GCOV_ERROR) else $(SILENCE)for d in $(SRC_DIRS) ; do \ FILES=`ls $$d/*.c $$d/*.cc $$d/*.cpp 2> /dev/null` ; \ gcov --object-directory $(CPPUTEST_OBJS_DIR)/$$d $$FILES >> $(GCOV_OUTPUT) 2>>$(GCOV_ERROR) ; \ done $(SILENCE)for f in $(SRC_FILES) ; do \ gcov --object-directory $(CPPUTEST_OBJS_DIR)/$$f $$f >> $(GCOV_OUTPUT) 2>>$(GCOV_ERROR) ; \ done endif $(CPPUTEST_HOME)/scripts/filterGcov.sh $(GCOV_OUTPUT) $(GCOV_ERROR) $(GCOV_REPORT) $(TEST_OUTPUT) $(SILENCE)cat $(GCOV_REPORT) $(SILENCE)mkdir -p gcov $(SILENCE)mv *.gcov gcov $(SILENCE)mv gcov_* gcov @echo "See gcov directory for details" .PHONEY: format format: $(CPPUTEST_HOME)/scripts/reformat.sh $(PROJECT_HOME_DIR) .PHONEY: debug debug: @echo @echo "Target Source files:" @$(call debug_print_list,$(SRC)) @echo "Target Object files:" @$(call debug_print_list,$(OBJ)) @echo "Test Source files:" @$(call debug_print_list,$(TEST_SRC)) @echo "Test Object files:" @$(call debug_print_list,$(TEST_OBJS)) @echo "Mock Source files:" @$(call debug_print_list,$(MOCKS_SRC)) @echo "Mock Object files:" @$(call debug_print_list,$(MOCKS_OBJS)) @echo "All Input Dependency files:" @$(call debug_print_list,$(DEP_FILES)) @echo Stuff to clean: @$(call debug_print_list,$(STUFF_TO_CLEAN)) @echo Includes: @$(call debug_print_list,$(INCLUDES)) -include $(OTHER_MAKEFILE_TO_INCLUDE) cpputest-3.7.2/build/StaticLibMakefile000644 000765 000024 00000000226 12521603460 020661 0ustar00basvoddestaff000000 000000 $(CPPUTEST_TARGET) : $(OBJS) ar -rc $@ $(OBJS) $(RANLIB) $@ if [ "$(LIBDIR)" != "." ]; then\ mv $@ $(LIBDIR) ; \ fi all: $(CPPUTEST_TARGET) cpputest-3.7.2/.settings/org.eclipse.cdt.core.prefs000644 000765 000024 00000030624 12521603460 023221 0ustar00basvoddestaff000000 000000 #Mon Jun 07 17:30:05 SGT 2010 eclipse.preferences.version=1 org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80 org.eclipse.cdt.core.formatter.alignment_for_compact_if=0 org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16 org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48 org.eclipse.cdt.core.formatter.alignment_for_expression_list=0 org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.cdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line org.eclipse.cdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line org.eclipse.cdt.core.formatter.compact_else_if=true org.eclipse.cdt.core.formatter.continuation_indentation=2 org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false org.eclipse.cdt.core.formatter.indent_empty_lines=false org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.cdt.core.formatter.indentation.size=4 org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=true org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=true org.eclipse.cdt.core.formatter.lineSplit=200 org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.cdt.core.formatter.tabulation.char=tab org.eclipse.cdt.core.formatter.tabulation.size=4 org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false cpputest-3.7.2/.settings/org.eclipse.cdt.ui.prefs000644 000765 000024 00000000202 12521603460 022673 0ustar00basvoddestaff000000 000000 #Tue Dec 29 09:23:19 SGT 2009 eclipse.preferences.version=1 formatter_profile=_CppUTest Coding Style formatter_settings_version=1