[Numpy-svn] r4522 - in branches/numpy.scons: . numpy numpy/core/tests numpy/distutils numpy/distutils/command numpy/doc/swig numpy/doc/swig/doc numpy/doc/swig/test numpy/f2py numpy/f2py/lib/extgen numpy/f2py/lib/parser numpy/numarray numpy/testing
numpy-svn at scipy.org
numpy-svn at scipy.org
Sun Dec 2 06:29:48 EST 2007
Author: cdavid
Date: 2007-12-02 05:28:35 -0600 (Sun, 02 Dec 2007)
New Revision: 4522
Added:
branches/numpy.scons/numpy/doc/swig/test/Array.i
branches/numpy.scons/numpy/doc/swig/test/Array1.cxx
branches/numpy.scons/numpy/doc/swig/test/Array1.h
branches/numpy.scons/numpy/doc/swig/test/Array2.cxx
branches/numpy.scons/numpy/doc/swig/test/Array2.h
branches/numpy.scons/numpy/doc/swig/test/Farray.cxx
branches/numpy.scons/numpy/doc/swig/test/Farray.h
branches/numpy.scons/numpy/doc/swig/test/Farray.i
branches/numpy.scons/numpy/doc/swig/test/testArray.py
branches/numpy.scons/numpy/doc/swig/test/testFarray.py
Modified:
branches/numpy.scons/
branches/numpy.scons/numpy/_import_tools.py
branches/numpy.scons/numpy/core/tests/test_defmatrix.py
branches/numpy.scons/numpy/distutils/command/build_ext.py
branches/numpy.scons/numpy/distutils/command/build_src.py
branches/numpy.scons/numpy/distutils/core.py
branches/numpy.scons/numpy/distutils/cpuinfo.py
branches/numpy.scons/numpy/distutils/from_template.py
branches/numpy.scons/numpy/distutils/misc_util.py
branches/numpy.scons/numpy/distutils/system_info.py
branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.html
branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.pdf
branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.txt
branches/numpy.scons/numpy/doc/swig/doc/testing.pdf
branches/numpy.scons/numpy/doc/swig/numpy.i
branches/numpy.scons/numpy/doc/swig/pyfragments.swg
branches/numpy.scons/numpy/doc/swig/test/Makefile
branches/numpy.scons/numpy/doc/swig/test/setup.py
branches/numpy.scons/numpy/f2py/auxfuncs.py
branches/numpy.scons/numpy/f2py/capi_maps.py
branches/numpy.scons/numpy/f2py/cb_rules.py
branches/numpy.scons/numpy/f2py/cfuncs.py
branches/numpy.scons/numpy/f2py/crackfortran.py
branches/numpy.scons/numpy/f2py/f2py2e.py
branches/numpy.scons/numpy/f2py/f90mod_rules.py
branches/numpy.scons/numpy/f2py/func2subr.py
branches/numpy.scons/numpy/f2py/lib/extgen/base.py
branches/numpy.scons/numpy/f2py/lib/extgen/py_support.py
branches/numpy.scons/numpy/f2py/lib/parser/Fortran2003.py
branches/numpy.scons/numpy/f2py/lib/parser/block_statements.py
branches/numpy.scons/numpy/f2py/lib/parser/parsefortran.py
branches/numpy.scons/numpy/f2py/lib/parser/statements.py
branches/numpy.scons/numpy/f2py/lib/parser/utils.py
branches/numpy.scons/numpy/f2py/rules.py
branches/numpy.scons/numpy/f2py/use_rules.py
branches/numpy.scons/numpy/numarray/numerictypes.py
branches/numpy.scons/numpy/numarray/session.py
branches/numpy.scons/numpy/testing/numpytest.py
branches/numpy.scons/numpy/testing/utils.py
branches/numpy.scons/site.cfg.example
Log:
Merged revisions 4511-4521 via svnmerge from
http://svn.scipy.org/svn/numpy/trunk
........
r4511 | jarrod.millman | 2007-11-28 14:12:37 +0900 (Wed, 28 Nov 2007) | 2 lines
use 'in' keyword to test dictionary membership
........
r4512 | cdavid | 2007-11-29 14:05:39 +0900 (Thu, 29 Nov 2007) | 1 line
Adding an example for MKL in site.cfg.example (for recent versions)
........
r4513 | wfspotz at sandia.gov | 2007-11-30 04:52:29 +0900 (Fri, 30 Nov 2007) | 11 lines
* Added a new typemap suite, ARGOUTVIEW, which takes a view of a data
buffer and converts it to an output numpy array (1D, 2D and 3D, with
before- and after- dimension specifications.)
* Added new tests for the ARGOUTVIEW typemaps in the test directory
(Array1 and Array2 classes, both included in the Array python
extension module, tested in testArray.py).
* Updated the documentation to reflect the latest changes.
........
r4514 | wfspotz at sandia.gov | 2007-11-30 12:58:34 +0900 (Fri, 30 Nov 2007) | 8 lines
* Added support for FORTRAN-ordered arrays to numpy.i.
* Added new tests that test some of the FORTRAN-ordered typemaps.
* Updated the documentation to include the new FORTRAN-ordering
support.
........
r4516 | wfspotz at sandia.gov | 2007-12-02 03:09:40 +0900 (Sun, 02 Dec 2007) | 1 line
Changed setting of fortran-order array's flag; corrected documentaion
........
r4517 | wfspotz at sandia.gov | 2007-12-02 03:16:42 +0900 (Sun, 02 Dec 2007) | 1 line
Argout typemap documentation made more clear.
........
r4518 | wfspotz at sandia.gov | 2007-12-02 13:17:23 +0900 (Sun, 02 Dec 2007) | 1 line
Corrected casting logic for numpy array scalars
........
Property changes on: branches/numpy.scons
___________________________________________________________________
Name: svnmerge-integrated
- /branches/distutils-revamp:1-2752 /branches/multicore:1-3687 /trunk:1-4510
+ /branches/distutils-revamp:1-2752 /branches/multicore:1-3687 /trunk:1-4521
Modified: branches/numpy.scons/numpy/_import_tools.py
===================================================================
--- branches/numpy.scons/numpy/_import_tools.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/_import_tools.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -21,7 +21,7 @@
if isinstance(parent_path, str):
parent_path = [parent_path]
self.parent_path = parent_path
- if not frame.f_locals.has_key('__all__'):
+ if '__all__' not in frame.f_locals:
exec('__all__ = []',frame.f_globals,frame.f_locals)
self.parent_export_names = eval('__all__',frame.f_globals,frame.f_locals)
@@ -77,7 +77,7 @@
% (package_name,':'.join(self.parent_path), msg))
for package_name,info_file in info_files:
- if info_modules.has_key(package_name):
+ if package_name in info_modules:
continue
fullname = self.parent_name +'.'+ package_name
if info_file[-1]=='c':
@@ -119,7 +119,7 @@
while depend_dict:
for name, lst in depend_dict.items():
- new_lst = [n for n in lst if depend_dict.has_key(n)]
+ new_lst = [n for n in lst if n in depend_dict]
if not new_lst:
package_names.append(name)
del depend_dict[name]
@@ -225,7 +225,7 @@
if verbose!=-1:
old_objects = {}
for s in symbols:
- if frame.f_locals.has_key(s):
+ if s in frame.f_locals:
old_objects[s] = frame.f_locals[s]
cmdstr = 'from '+package_name+' import '+symbol
@@ -325,7 +325,7 @@
global_symbols = getattr(info_module,'global_symbols',[])
fullname = self.parent_name +'.'+ package_name
note = ''
- if not sys.modules.has_key(fullname):
+ if fullname not in sys.modules:
note = ' [*]'
titles.append((fullname,self._get_doc_title(info_module) + note))
if global_symbols:
Modified: branches/numpy.scons/numpy/core/tests/test_defmatrix.py
===================================================================
--- branches/numpy.scons/numpy/core/tests/test_defmatrix.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/core/tests/test_defmatrix.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -159,7 +159,7 @@
# reset contents of a
a.astype('f8')
a.fill(1.0)
- if methodargs.has_key(attrib):
+ if attrib in methodargs:
args = methodargs[attrib]
else:
args = ()
Modified: branches/numpy.scons/numpy/distutils/command/build_ext.py
===================================================================
--- branches/numpy.scons/numpy/distutils/command/build_ext.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/distutils/command/build_ext.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -84,14 +84,14 @@
clibs = {}
if build_clib is not None:
for libname,build_info in build_clib.libraries or []:
- if clibs.has_key(libname) and clibs[libname]!=build_info:
+ if libname in clibs and clibs[libname] != build_info:
log.warn('library %r defined more than once,'\
' overwriting build_info\n%s... \nwith\n%s...' \
% (libname, `clibs[libname]`[:300], `build_info`[:300]))
clibs[libname] = build_info
# .. and distribution libraries:
for libname,build_info in self.distribution.libraries or []:
- if clibs.has_key(libname):
+ if libname in clibs:
# build_clib libraries have a precedence before distribution ones
continue
clibs[libname] = build_info
Modified: branches/numpy.scons/numpy/distutils/command/build_src.py
===================================================================
--- branches/numpy.scons/numpy/distutils/command/build_src.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/distutils/command/build_src.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -202,7 +202,7 @@
if source is None:
continue
modules = [(package, module_base, source)]
- if not self.py_modules_dict.has_key(package):
+ if package not in self.py_modules_dict:
self.py_modules_dict[package] = []
self.py_modules_dict[package] += modules
else:
@@ -259,7 +259,7 @@
sources, py_files = self.filter_py_files(sources)
- if not self.py_modules_dict.has_key(package):
+ if package not in self.py_modules_dict:
self.py_modules_dict[package] = []
modules = []
for f in py_files:
@@ -292,7 +292,7 @@
else:
if is_sequence(extension):
name = extension[0]
- # if not extension[1].has_key('include_dirs'):
+ # if 'include_dirs' not in extension[1]:
# extension[1]['include_dirs'] = []
# incl_dirs = extension[1]['include_dirs']
else:
Modified: branches/numpy.scons/numpy/distutils/core.py
===================================================================
--- branches/numpy.scons/numpy/distutils/core.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/distutils/core.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -52,7 +52,7 @@
def _dict_append(d, **kws):
for k,v in kws.items():
- if not d.has_key(k):
+ if k not in d:
d[k] = v
continue
dv = d[k]
@@ -122,11 +122,11 @@
cmdclass = numpy_cmdclass.copy()
new_attr = attr.copy()
- if new_attr.has_key('cmdclass'):
+ if 'cmdclass' in new_attr:
cmdclass.update(new_attr['cmdclass'])
new_attr['cmdclass'] = cmdclass
- if new_attr.has_key('configuration'):
+ if 'configuration' in new_attr:
# To avoid calling configuration if there are any errors
# or help request in command in the line.
configuration = new_attr.pop('configuration')
@@ -166,14 +166,14 @@
"library %r" % (item,))
ext.libraries = new_libraries
if libraries:
- if not new_attr.has_key('libraries'):
+ if 'libraries' not in new_attr:
new_attr['libraries'] = []
for item in libraries:
_check_append_library(new_attr['libraries'], item)
# sources in ext_modules or libraries may contain header files
- if (new_attr.has_key('ext_modules') or new_attr.has_key('libraries')) \
- and not new_attr.has_key('headers'):
+ if ('ext_modules' in new_attr or 'libraries' in new_attr) \
+ and 'headers' not in new_attr:
new_attr['headers'] = []
# Use our custom NumpyDistribution class instead of distutils' one
Modified: branches/numpy.scons/numpy/distutils/cpuinfo.py
===================================================================
--- branches/numpy.scons/numpy/distutils/cpuinfo.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/distutils/cpuinfo.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -104,7 +104,7 @@
if len(name_value) != 2:
continue
name, value = name_value
- if not info or info[-1].has_key(name): # next processor
+ if not info or name in info[-1]: # next processor
info.append({})
info[-1][name] = value
fo.close()
Modified: branches/numpy.scons/numpy/distutils/from_template.py
===================================================================
--- branches/numpy.scons/numpy/distutils/from_template.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/distutils/from_template.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -149,11 +149,11 @@
base_rule = None
rules = {}
for r in template_re.findall(substr):
- if not rules.has_key(r):
+ if r not in rules:
thelist = lnames.get(r,names.get(r,None))
if thelist is None:
raise ValueError,'No replicates found for <%s>' % (r)
- if not names.has_key(r) and not thelist.startswith('_'):
+ if r not in names and not thelist.startswith('_'):
names[r] = thelist
rule = [i.replace('@comma@',',') for i in thelist.split(',')]
num = len(rule)
Modified: branches/numpy.scons/numpy/distutils/misc_util.py
===================================================================
--- branches/numpy.scons/numpy/distutils/misc_util.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/distutils/misc_util.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -231,7 +231,7 @@
# Hooks for colored terminal output.
# See also http://www.livinglogic.de/Python/ansistyle
def terminal_has_colors():
- if sys.platform=='cygwin' and not os.environ.has_key('USE_COLOR'):
+ if sys.platform=='cygwin' and 'USE_COLOR' not in os.environ:
# Avoid importing curses that causes illegal operation
# with a message:
# PYTHON2 caused an invalid page fault in
@@ -324,7 +324,7 @@
return
if get_build_architecture() != 'AMD64':
return
- if os.environ.has_key('DISTUTILS_USE_SDK'):
+ if 'DISTUTILS_USE_SDK' in os.environ:
return
# try to avoid _MSVCCompiler__root attribute error
print 'Forcing DISTUTILS_USE_SDK=1'
@@ -708,7 +708,7 @@
- quiet
"""
for key, value in options.items():
- if self.options.has_key(key):
+ if key in self.options:
self.options[key] = value
else:
raise ValueError,'Unknown option: '+key
@@ -938,7 +938,7 @@
def _optimize_data_files(self):
data_dict = {}
for p,files in self.data_files:
- if not data_dict.has_key(p):
+ if p not in data_dict:
data_dict[p] = set()
map(data_dict[p].add,files)
self.data_files[:] = [(p,list(files)) for p,files in data_dict.items()]
@@ -1096,7 +1096,7 @@
ext_args['name'] = dot_join(self.name,name)
ext_args['sources'] = sources
- if ext_args.has_key('extra_info'):
+ if 'extra_info' in ext_args:
extra_info = ext_args['extra_info']
del ext_args['extra_info']
if isinstance(extra_info, dict):
@@ -1471,7 +1471,7 @@
def get_cmd(cmdname, _cache={}):
- if not _cache.has_key(cmdname):
+ if cmdname not in _cache:
import distutils.core
dist = distutils.core._setup_distribution
if dist is None:
@@ -1574,7 +1574,7 @@
def dict_append(d, **kws):
for k, v in kws.items():
- if d.has_key(k):
+ if k in d:
ov = d[k]
if isinstance(ov,str):
d[k] = v
Modified: branches/numpy.scons/numpy/distutils/system_info.py
===================================================================
--- branches/numpy.scons/numpy/distutils/system_info.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/distutils/system_info.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -396,7 +396,7 @@
self.saved_results[self.__class__.__name__] = info
def has_info(self):
- return self.saved_results.has_key(self.__class__.__name__)
+ return self.__class__.__name__ in self.saved_results
def get_info(self,notfound_action=0):
""" Return a dictonary with items that are compatible
@@ -441,13 +441,13 @@
if is_sequence(env_var):
e0 = env_var[-1]
for e in env_var:
- if os.environ.has_key(e):
+ if e in os.environ:
e0 = e
break
if not env_var[0]==e0:
log.info('Setting %s=%s' % (env_var[0],e0))
env_var = e0
- if env_var and os.environ.has_key(env_var):
+ if env_var and env_var in os.environ:
d = os.environ[env_var]
if d=='None':
log.info('Disabled %s: %s',self.__class__.__name__,'(%s is None)' \
@@ -1147,7 +1147,7 @@
libraries = config.get('libraries', [])
library_dirs = config.get('library_dirs', [])
key = (tuple(libraries), tuple(library_dirs))
- if _cached_atlas_version.has_key(key):
+ if key in _cached_atlas_version:
return _cached_atlas_version[key]
c = cmd_config(Distribution())
atlas_version = None
@@ -1230,7 +1230,7 @@
if atlas_info:
version_info = atlas_info.copy()
atlas_version = get_atlas_version(**version_info)
- if not atlas_info.has_key('define_macros'):
+ if 'define_macros' not in atlas_info:
atlas_info['define_macros'] = []
if atlas_version is None:
atlas_info['define_macros'].append(('NO_ATLAS_INFO',2))
@@ -1329,7 +1329,7 @@
if atlas_info:
version_info = atlas_info.copy()
atlas_version = get_atlas_version(**version_info)
- if not atlas_info.has_key('define_macros'):
+ if 'define_macros' not in atlas_info:
atlas_info['define_macros'] = []
if atlas_version is None:
atlas_info['define_macros'].append(('NO_ATLAS_INFO',2))
@@ -1658,7 +1658,7 @@
cflags_flag = '--cflags'
def get_config_exe(self):
- if os.environ.has_key(self.config_env_var):
+ if self.config_env_var in os.environ:
return os.environ[self.config_env_var]
return self.default_config_exe
def get_config_output(self, config_exe, option):
@@ -1891,7 +1891,7 @@
if k=='language':
languages.append(v)
continue
- if d.has_key(k):
+ if k in d:
if k in ['library_dirs','include_dirs','define_macros']:
[d[k].append(vv) for vv in v if vv not in d[k]]
else:
Modified: branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.html
===================================================================
--- branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.html 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.html 2007-12-02 11:28:35 UTC (rev 4522)
@@ -5,7 +5,7 @@
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>numpy.i: a SWIG Interface File for NumPy</title>
<meta name="author" content="Bill Spotz" />
-<meta name="date" content="22 November, 2007" />
+<meta name="date" content="1 December, 2007" />
<style type="text/css">
/*
@@ -302,7 +302,7 @@
<tr class="field"><th class="docinfo-name">Institution:</th><td class="field-body">Sandia National Laboratories</td>
</tr>
<tr><th class="docinfo-name">Date:</th>
-<td>22 November, 2007</td></tr>
+<td>1 December, 2007</td></tr>
</tbody>
</table>
<div class="contents topic">
@@ -314,28 +314,29 @@
<li><a class="reference" href="#input-arrays" id="id4" name="id4">Input Arrays</a></li>
<li><a class="reference" href="#in-place-arrays" id="id5" name="id5">In-Place Arrays</a></li>
<li><a class="reference" href="#argout-arrays" id="id6" name="id6">Argout Arrays</a></li>
-<li><a class="reference" href="#output-arrays" id="id7" name="id7">Output Arrays</a></li>
-<li><a class="reference" href="#other-common-types-bool" id="id8" name="id8">Other Common Types: bool</a></li>
-<li><a class="reference" href="#other-common-types-complex" id="id9" name="id9">Other Common Types: complex</a></li>
+<li><a class="reference" href="#argoutview-arrays" id="id7" name="id7">Argoutview Arrays</a></li>
+<li><a class="reference" href="#output-arrays" id="id8" name="id8">Output Arrays</a></li>
+<li><a class="reference" href="#other-common-types-bool" id="id9" name="id9">Other Common Types: bool</a></li>
+<li><a class="reference" href="#other-common-types-complex" id="id10" name="id10">Other Common Types: complex</a></li>
</ul>
</li>
-<li><a class="reference" href="#numpy-array-scalars-and-swig" id="id10" name="id10">NumPy Array Scalars and SWIG</a><ul>
-<li><a class="reference" href="#why-is-there-a-second-file" id="id11" name="id11">Why is There a Second File?</a></li>
+<li><a class="reference" href="#numpy-array-scalars-and-swig" id="id11" name="id11">NumPy Array Scalars and SWIG</a><ul>
+<li><a class="reference" href="#why-is-there-a-second-file" id="id12" name="id12">Why is There a Second File?</a></li>
</ul>
</li>
-<li><a class="reference" href="#helper-functions" id="id12" name="id12">Helper Functions</a><ul>
-<li><a class="reference" href="#macros" id="id13" name="id13">Macros</a></li>
-<li><a class="reference" href="#routines" id="id14" name="id14">Routines</a></li>
+<li><a class="reference" href="#helper-functions" id="id13" name="id13">Helper Functions</a><ul>
+<li><a class="reference" href="#macros" id="id14" name="id14">Macros</a></li>
+<li><a class="reference" href="#routines" id="id15" name="id15">Routines</a></li>
</ul>
</li>
-<li><a class="reference" href="#beyond-the-provided-typemaps" id="id15" name="id15">Beyond the Provided Typemaps</a><ul>
-<li><a class="reference" href="#a-common-example" id="id16" name="id16">A Common Example</a></li>
-<li><a class="reference" href="#other-situations" id="id17" name="id17">Other Situations</a></li>
-<li><a class="reference" href="#a-final-note" id="id18" name="id18">A Final Note</a></li>
+<li><a class="reference" href="#beyond-the-provided-typemaps" id="id16" name="id16">Beyond the Provided Typemaps</a><ul>
+<li><a class="reference" href="#a-common-example" id="id17" name="id17">A Common Example</a></li>
+<li><a class="reference" href="#other-situations" id="id18" name="id18">Other Situations</a></li>
+<li><a class="reference" href="#a-final-note" id="id19" name="id19">A Final Note</a></li>
</ul>
</li>
-<li><a class="reference" href="#summary" id="id19" name="id19">Summary</a></li>
-<li><a class="reference" href="#acknowledgements" id="id20" name="id20">Acknowledgements</a></li>
+<li><a class="reference" href="#summary" id="id20" name="id20">Summary</a></li>
+<li><a class="reference" href="#acknowledgements" id="id21" name="id21">Acknowledgements</a></li>
</ul>
</div>
<div class="section">
@@ -352,18 +353,18 @@
Is it an array, and if so what is its length? Is it input-only?
Output-only? Input-output? <a class="reference" href="http://www.swig.org">SWIG</a> cannot determine these details,
and does not attempt to do so.</p>
-<p>Making an educated guess, humans can conclude that this is probably a
-routine that takes an input-only array of length <tt class="docutils literal"><span class="pre">n</span></tt> of <tt class="docutils literal"><span class="pre">double</span></tt>
-values called <tt class="docutils literal"><span class="pre">seq</span></tt> and returns the root mean square. The default
-behavior of <a class="reference" href="http://www.swig.org">SWIG</a>, however, will be to create a wrapper function
-that compiles, but is nearly impossible to use from the scripting
-language in the way the C routine was intended.</p>
+<p>If we designed <tt class="docutils literal"><span class="pre">rms</span></tt>, we probably made it a routine that takes an
+input-only array of length <tt class="docutils literal"><span class="pre">n</span></tt> of <tt class="docutils literal"><span class="pre">double</span></tt> values called <tt class="docutils literal"><span class="pre">seq</span></tt>
+and returns the root mean square. The default behavior of <a class="reference" href="http://www.swig.org">SWIG</a>,
+however, will be to create a wrapper function that compiles, but is
+nearly impossible to use from the scripting language in the way the C
+routine was intended.</p>
<p>For <a class="reference" href="http://www.python.org">python</a>, the preferred way of handling
contiguous (or technically, <em>strided</em>) blocks of homogeneous data is
with the module <a class="reference" href="http://numpy.scipy.org">NumPy</a>, which provides full
-object-oriented access to arrays of data. Therefore, the most logical
-<a class="reference" href="http://www.python.org">python</a> interface for the <tt class="docutils literal"><span class="pre">rms</span></tt> function would be (including doc
-string):</p>
+object-oriented access to multidimensial arrays of data. Therefore,
+the most logical <a class="reference" href="http://www.python.org">python</a> interface for the <tt class="docutils literal"><span class="pre">rms</span></tt> function would be
+(including doc string):</p>
<pre class="literal-block">
def rms(seq):
"""
@@ -556,7 +557,11 @@
</ul>
</blockquote>
<p>In the following descriptions, we reference a generic <tt class="docutils literal"><span class="pre">DATA_TYPE</span></tt>, which
-could be any of the C data types listed above.</p>
+could be any of the C data types listed above, and <tt class="docutils literal"><span class="pre">DIM_TYPE</span></tt> which
+should be one of the many types of integers.</p>
+<p>The typemap signatures are largely differentiated on the name given to
+the buffer pointer. Names with <tt class="docutils literal"><span class="pre">FARRAY</span></tt> are for FORTRAN-ordered
+arrays, and names with <tt class="docutils literal"><span class="pre">ARRAY</span></tt> are for C-ordered (or 1D arrays).</p>
<div class="section">
<h2><a class="toc-backref" href="#id4" id="input-arrays" name="input-arrays">Input Arrays</a></h2>
<p>Input arrays are defined as arrays of data that are passed into a
@@ -564,17 +569,32 @@
<a class="reference" href="http://www.python.org">python</a> input array is therefore allowed to be almost any <a class="reference" href="http://www.python.org">python</a>
sequence (such as a list) that can be converted to the requested type
of array. The input array signatures are</p>
+<p>1D:</p>
<blockquote>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY1[ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY1,</span> <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY1,</span> <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY1</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>2D:</p>
+<blockquote>
+<ul class="simple">
<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY2,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY2,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_FARRAY2,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_FARRAY2</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>3D:</p>
+<blockquote>
+<ul class="simple">
<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY3[ANY][ANY][ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY3,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY3</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY3,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_ARRAY3</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_FARRAY3,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">IN_FARRAY3</span> <span class="pre">)</span></tt></li>
</ul>
</blockquote>
<p>The first signature listed, <tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">IN_ARRAY[ANY]</span> <span class="pre">)</span></tt> is for
@@ -589,17 +609,32 @@
function returns are significant. The provided <a class="reference" href="http://www.python.org">python</a> argument
must therefore be a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array of the required type. The in-place
signatures are</p>
+<p>1D:</p>
<blockquote>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">INPLACE_ARRAY1[ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY1,</span> <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY1,</span> <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY1</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>2D:</p>
+<blockquote>
+<ul class="simple">
<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">INPLACE_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY2,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY2,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_FARRAY2,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_FARRAY2</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>3D:</p>
+<blockquote>
+<ul class="simple">
<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">INPLACE_ARRAY3[ANY][ANY][ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY3,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY3</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY3,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_ARRAY3</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_FARRAY3,</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">int</span> <span class="pre">DIM2,</span> <span class="pre">int</span> <span class="pre">DIM3,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">INPLACE_FARRAY3</span> <span class="pre">)</span></tt></li>
</ul>
</blockquote>
<p>These typemaps now check to make sure that the <tt class="docutils literal"><span class="pre">INPLACE_ARRAY</span></tt>
@@ -616,13 +651,26 @@
wrapped function that uses these argout typemaps has more than one
return argument, they are packed into a tuple or list, depending on
the version of <a class="reference" href="http://www.python.org">python</a>. The <a class="reference" href="http://www.python.org">python</a> user does not pass these
-arrays in, they simply get returned. The argout signatures are</p>
+arrays in, they simply get returned. For the case where a dimension
+is specified, the python user must provide that dimension as an
+argument. The argout signatures are</p>
+<p>1D:</p>
<blockquote>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">ARGOUT_ARRAY1[ANY]</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">ARGOUT_ARRAY1,</span> <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">ARGOUT_ARRAY1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE*</span> <span class="pre">ARGOUT_ARRAY1,</span> <span class="pre">int</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">int</span> <span class="pre">DIM1,</span> <span class="pre">DATA_TYPE*</span> <span class="pre">ARGOUT_ARRAY1</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>2D:</p>
+<blockquote>
+<ul class="simple">
<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">ARGOUT_ARRAY2[ANY][ANY]</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>3D:</p>
+<blockquote>
+<ul class="simple">
<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE</span> <span class="pre">ARGOUT_ARRAY3[ANY][ANY][ANY]</span> <span class="pre">)</span></tt></li>
</ul>
</blockquote>
@@ -631,12 +679,56 @@
array(s) values. In <a class="reference" href="http://www.python.org">python</a>, the arrays are allocated for you and
returned as new array objects.</p>
<p>Note that we support <tt class="docutils literal"><span class="pre">DATA_TYPE*</span></tt> argout typemaps in 1D, but not 2D
-or 3D. This because of a quirk with the <a class="reference" href="http://www.swig.org">SWIG</a> typemap syntax and
+or 3D. This is because of a quirk with the <a class="reference" href="http://www.swig.org">SWIG</a> typemap syntax and
cannot be avoided. Note that for these types of 1D typemaps, the
<a class="reference" href="http://www.python.org">python</a> function will take a single argument representing <tt class="docutils literal"><span class="pre">DIM1</span></tt>.</p>
</div>
<div class="section">
-<h2><a class="toc-backref" href="#id7" id="output-arrays" name="output-arrays">Output Arrays</a></h2>
+<h2><a class="toc-backref" href="#id7" id="argoutview-arrays" name="argoutview-arrays">Argoutview Arrays</a></h2>
+<p>Argoutview arrays are for when your C code provides you with a view of
+its internal data and does not require any memory to be allocated by
+the user. This can be dangerous. There is almost no way to guarantee
+that the internal data from the C code will remain in existence for
+the entire lifetime of the <a class="reference" href="http://numpy.scipy.org">NumPy</a> array that encapsulates it. If
+the user destroys the object that provides the view of the data before
+destroying the <a class="reference" href="http://numpy.scipy.org">NumPy</a> array, then using that array my result in bad
+memory references or segmentation faults. Nevertheless, there are
+situations, working with large data sets, where you simply have no
+other choice.</p>
+<p>The C code to be wrapped for argoutview arrays are characterized by
+pointers: pointers to the dimensions and double pointers to the data,
+so that these values can be passed back to the user. The argoutview
+typemap signatures are therefore</p>
+<p>1D:</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE**</span> <span class="pre">ARGOUTVIEW_ARRAY1,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM1</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM1,</span> <span class="pre">DATA_TYPE**</span> <span class="pre">ARGOUTVIEW_ARRAY1</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>2D:</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE**</span> <span class="pre">ARGOUTVIEW_ARRAY2,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM1,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM1,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM2,</span> <span class="pre">DATA_TYPE**</span> <span class="pre">ARGOUTVIEW_ARRAY2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE**</span> <span class="pre">ARGOUTVIEW_FARRAY2,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM1,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM2</span> <span class="pre">)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM1,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM2,</span> <span class="pre">DATA_TYPE**</span> <span class="pre">ARGOUTVIEW_FARRAY2</span> <span class="pre">)</span></tt></li>
+</ul>
+</blockquote>
+<p>3D:</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE**</span> <span class="pre">ARGOUTVIEW_ARRAY3,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM1,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM2,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM3)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM1,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM2,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM3,</span> <span class="pre">DATA_TYPE**</span> <span class="pre">ARGOUTVIEW_ARRAY3)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DATA_TYPE**</span> <span class="pre">ARGOUTVIEW_FARRAY3,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM1,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM2,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM3)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">(</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM1,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM2,</span> <span class="pre">DIM_TYPE*</span> <span class="pre">DIM3,</span> <span class="pre">DATA_TYPE**</span> <span class="pre">ARGOUTVIEW_FARRAY3)</span></tt></li>
+</ul>
+</blockquote>
+<p>Note that arrays with hard-coded dimensions are not supported. These
+cannot follow the double pointer signatures of these typemaps.</p>
+</div>
+<div class="section">
+<h2><a class="toc-backref" href="#id8" id="output-arrays" name="output-arrays">Output Arrays</a></h2>
<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> interface file does not support typemaps for output
arrays, for several reasons. First, C/C++ return arguments are
limited to a single value. This prevents obtaining dimension
@@ -656,7 +748,7 @@
methods or <tt class="docutils literal"><span class="pre">%ignore</span></tt> and <tt class="docutils literal"><span class="pre">%rename</span></tt> for the case of functions.</p>
</div>
<div class="section">
-<h2><a class="toc-backref" href="#id8" id="other-common-types-bool" name="other-common-types-bool">Other Common Types: bool</a></h2>
+<h2><a class="toc-backref" href="#id9" id="other-common-types-bool" name="other-common-types-bool">Other Common Types: bool</a></h2>
<p>Note that C++ type <tt class="docutils literal"><span class="pre">bool</span></tt> is not supported in the list in the
<a class="reference" href="#available-typemaps">Available Typemaps</a> section. NumPy bools are a single byte, while
the C++ <tt class="docutils literal"><span class="pre">bool</span></tt> is four bytes (at least on my system). Therefore:</p>
@@ -673,7 +765,7 @@
but <a class="reference" href="#in-place-arrays">In-Place Arrays</a> might fail type-checking.</p>
</div>
<div class="section">
-<h2><a class="toc-backref" href="#id9" id="other-common-types-complex" name="other-common-types-complex">Other Common Types: complex</a></h2>
+<h2><a class="toc-backref" href="#id10" id="other-common-types-complex" name="other-common-types-complex">Other Common Types: complex</a></h2>
<p>Typemap conversions for complex floating-point types is also not
supported automatically. This is because <a class="reference" href="http://www.python.org">python</a> and <a class="reference" href="http://numpy.scipy.org">NumPy</a> are
written in C, which does not have native complex types. Both
@@ -707,7 +799,7 @@
</div>
</div>
<div class="section">
-<h1><a class="toc-backref" href="#id10" id="numpy-array-scalars-and-swig" name="numpy-array-scalars-and-swig">NumPy Array Scalars and SWIG</a></h1>
+<h1><a class="toc-backref" href="#id11" id="numpy-array-scalars-and-swig" name="numpy-array-scalars-and-swig">NumPy Array Scalars and SWIG</a></h1>
<p><a class="reference" href="http://www.swig.org">SWIG</a> has sophisticated type checking for numerical types. For
example, if your C/C++ routine expects an integer as input, the code
generated by <a class="reference" href="http://www.swig.org">SWIG</a> will check for both <a class="reference" href="http://www.python.org">python</a> integers and
@@ -720,7 +812,7 @@
array scalar as an integer. (Often, this does in fact work -- it
depends on whether <a class="reference" href="http://numpy.scipy.org">NumPy</a> recognizes the integer type you are using
as inheriting from the <a class="reference" href="http://www.python.org">python</a> integer type on the platform you are
-using. Often, this means that code that works on a 32-bit machine
+using. Sometimes, this means that code that works on a 32-bit machine
will fail on a 64-bit machine.)</p>
<p>If you get a <a class="reference" href="http://www.python.org">python</a> error that looks like the following:</p>
<pre class="literal-block">
@@ -730,7 +822,7 @@
<a class="reference" href="http://numpy.scipy.org">NumPy</a> array, then you have stumbled upon this problem. The
solution is to modify the <a class="reference" href="http://www.swig.org">SWIG</a> type conversion system to accept
<a class="reference" href="http://numpy.scipy.org">Numpy</a> array scalars in addition to the standard integer types.
-Fortunately, this capabilitiy has been provided to you. Simply copy
+Fortunately, this capabilitiy has been provided for you. Simply copy
the file:</p>
<pre class="literal-block">
pyfragments.swg
@@ -739,7 +831,7 @@
be fixed. It is suggested that you do this anyway, as it only
increases the capabilities of your <a class="reference" href="http://www.python.org">python</a> interface.</p>
<div class="section">
-<h2><a class="toc-backref" href="#id11" id="why-is-there-a-second-file" name="why-is-there-a-second-file">Why is There a Second File?</a></h2>
+<h2><a class="toc-backref" href="#id12" id="why-is-there-a-second-file" name="why-is-there-a-second-file">Why is There a Second File?</a></h2>
<p>The <a class="reference" href="http://www.swig.org">SWIG</a> type checking and conversion system is a complicated
combination of C macros, <a class="reference" href="http://www.swig.org">SWIG</a> macros, <a class="reference" href="http://www.swig.org">SWIG</a> typemaps and <a class="reference" href="http://www.swig.org">SWIG</a>
fragments. Fragments are a way to conditionally insert code into your
@@ -760,12 +852,21 @@
</div>
</div>
<div class="section">
-<h1><a class="toc-backref" href="#id12" id="helper-functions" name="helper-functions">Helper Functions</a></h1>
+<h1><a class="toc-backref" href="#id13" id="helper-functions" name="helper-functions">Helper Functions</a></h1>
<p>The <tt class="docutils literal"><span class="pre">numpy.i</span></tt> file containes several macros and routines that it
uses internally to build its typemaps. However, these functions may
-be useful elsewhere in your interface file.</p>
+be useful elsewhere in your interface file. These macros and routines
+are implemented as fragments, which are described briefly in the
+previous section. If you try to use one or more of the following
+macros or functions, but your compiler complains that it does not
+recognize the symbol, then you need to force these fragments to appear
+in your code using:</p>
+<pre class="literal-block">
+%fragment("NumPy_Fragments");
+</pre>
+<p>in your <a class="reference" href="http://www.swig.org">SWIG</a> interface file.</p>
<div class="section">
-<h2><a class="toc-backref" href="#id13" id="macros" name="macros">Macros</a></h2>
+<h2><a class="toc-backref" href="#id14" id="macros" name="macros">Macros</a></h2>
<blockquote>
<dl class="docutils">
<dt><strong>is_array(a)</strong></dt>
@@ -793,11 +894,13 @@
<dt><strong>array_is_native(a)</strong></dt>
<dd>Evaluates as true if the data buffer of <tt class="docutils literal"><span class="pre">a</span></tt> uses native byte
order. Equivalent to <tt class="docutils literal"><span class="pre">(PyArray_ISNOTSWAPPED(a))</span></tt>.</dd>
+<dt><strong>array_is_fortran(a)</strong></dt>
+<dd>Evaluates as true if <tt class="docutils literal"><span class="pre">a</span></tt> is FORTRAN ordered.</dd>
</dl>
</blockquote>
</div>
<div class="section">
-<h2><a class="toc-backref" href="#id14" id="routines" name="routines">Routines</a></h2>
+<h2><a class="toc-backref" href="#id15" id="routines" name="routines">Routines</a></h2>
<blockquote>
<p><strong>pytype_string()</strong></p>
<blockquote>
@@ -953,15 +1056,26 @@
specified shape, return 1. Otherwise, set the <a class="reference" href="http://www.python.org">python</a> error
string and return 0.</p>
</blockquote>
+<p><strong>require_fortran()</strong></p>
+<blockquote>
+<p>Return type: <tt class="docutils literal"><span class="pre">int</span></tt></p>
+<p>Arguments:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">PyArrayObject*</span> <span class="pre">ary</span></tt>, a <a class="reference" href="http://numpy.scipy.org">NumPy</a> array.</li>
+</ul>
+<p>Require the given <tt class="docutils literal"><span class="pre">PyArrayObject</span></tt> to to be FORTRAN ordered. If
+the the <tt class="docutils literal"><span class="pre">PyArrayObject</span></tt> is already FORTRAN ordered, do nothing.
+Else, set the FORTRAN ordering flag and recompute the strides.</p>
</blockquote>
+</blockquote>
</div>
</div>
<div class="section">
-<h1><a class="toc-backref" href="#id15" id="beyond-the-provided-typemaps" name="beyond-the-provided-typemaps">Beyond the Provided Typemaps</a></h1>
+<h1><a class="toc-backref" href="#id16" id="beyond-the-provided-typemaps" name="beyond-the-provided-typemaps">Beyond the Provided Typemaps</a></h1>
<p>There are many C or C++ array/<a class="reference" href="http://numpy.scipy.org">NumPy</a> array situations not covered by
a simple <tt class="docutils literal"><span class="pre">%include</span> <span class="pre">"numpy.i"</span></tt> and subsequent <tt class="docutils literal"><span class="pre">%apply</span></tt> directives.</p>
<div class="section">
-<h2><a class="toc-backref" href="#id16" id="a-common-example" name="a-common-example">A Common Example</a></h2>
+<h2><a class="toc-backref" href="#id17" id="a-common-example" name="a-common-example">A Common Example</a></h2>
<p>Consider a reasonable prototype for a dot product function:</p>
<pre class="literal-block">
double dot(int len, double* vec1, double* vec2);
@@ -1017,7 +1131,7 @@
macro to perform this task.</p>
</div>
<div class="section">
-<h2><a class="toc-backref" href="#id17" id="other-situations" name="other-situations">Other Situations</a></h2>
+<h2><a class="toc-backref" href="#id18" id="other-situations" name="other-situations">Other Situations</a></h2>
<p>There are other wrapping situations in which <tt class="docutils literal"><span class="pre">numpy.i</span></tt> may be
helpful when you encounter them.</p>
<blockquote>
@@ -1054,7 +1168,7 @@
</blockquote>
</div>
<div class="section">
-<h2><a class="toc-backref" href="#id18" id="a-final-note" name="a-final-note">A Final Note</a></h2>
+<h2><a class="toc-backref" href="#id19" id="a-final-note" name="a-final-note">A Final Note</a></h2>
<p>When you use the <tt class="docutils literal"><span class="pre">%apply</span></tt> directive, as is usually necessary to use
<tt class="docutils literal"><span class="pre">numpy.i</span></tt>, it will remain in effect until you tell <a class="reference" href="http://www.swig.org">SWIG</a> that it
shouldn't be. If the arguments to the functions or methods that you
@@ -1072,7 +1186,7 @@
</div>
</div>
<div class="section">
-<h1><a class="toc-backref" href="#id19" id="summary" name="summary">Summary</a></h1>
+<h1><a class="toc-backref" href="#id20" id="summary" name="summary">Summary</a></h1>
<p>Out of the box, <tt class="docutils literal"><span class="pre">numpy.i</span></tt> provides typemaps that support conversion
between <a class="reference" href="http://numpy.scipy.org">NumPy</a> arrays and C arrays:</p>
<blockquote>
@@ -1081,12 +1195,14 @@
<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span></tt>, <tt class="docutils literal"><span class="pre">short</span></tt>, <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></tt>, <tt class="docutils literal"><span class="pre">int</span></tt>,
<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></tt>, <tt class="docutils literal"><span class="pre">long</span></tt>, <tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></tt>, <tt class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></tt>,
<tt class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span> <span class="pre">long</span></tt>, <tt class="docutils literal"><span class="pre">float</span></tt> and <tt class="docutils literal"><span class="pre">double</span></tt>.</li>
-<li>That support 23 different argument signatures for each data type,
+<li>That support 41 different argument signatures for each data type,
including:<ul>
<li>One-dimensional, two-dimensional and three-dimensional arrays.</li>
-<li>Input-only, in-place, and argout behavior.</li>
+<li>Input-only, in-place, argout and argoutview behavior.</li>
<li>Hard-coded dimensions, data-buffer-then-dimensions
specification, and dimensions-then-data-buffer specification.</li>
+<li>Both C-ordering ("last dimension fastest") or FORTRAN-ordering
+("first dimension fastest") support for 2D and 3D arrays.</li>
</ul>
</li>
</ul>
@@ -1096,31 +1212,31 @@
<blockquote>
<ul class="simple">
<li>A <a class="reference" href="http://www.swig.org">SWIG</a> macro (<tt class="docutils literal"><span class="pre">%numpy_typemaps</span></tt>) with three arguments for
-implementing the 23 argument signatures for the user's choice of
+implementing the 41 argument signatures for the user's choice of
(1) C data type, (2) <a class="reference" href="http://numpy.scipy.org">NumPy</a> data type (assuming they match), and
(3) dimension type.</li>
-<li>Seven C macros and eleven C functions that can be used to write
+<li>Nine C macros and 13 C functions that can be used to write
specialized typemaps, extensions, or inlined functions that handle
cases not covered by the provided typemaps.</li>
</ul>
</blockquote>
</div>
<div class="section">
-<h1><a class="toc-backref" href="#id20" id="acknowledgements" name="acknowledgements">Acknowledgements</a></h1>
+<h1><a class="toc-backref" href="#id21" id="acknowledgements" name="acknowledgements">Acknowledgements</a></h1>
<p>Many people have worked to glue <a class="reference" href="http://www.swig.org">SWIG</a> and <a class="reference" href="http://numpy.scipy.org">NumPy</a> together (as well
as <a class="reference" href="http://www.swig.org">SWIG</a> and the predecessors of <a class="reference" href="http://numpy.scipy.org">NumPy</a>, Numeric and numarray).
The effort to standardize this work into <tt class="docutils literal"><span class="pre">numpy.i</span></tt> began at the 2005
<a class="reference" href="http://scipy.org">SciPy</a> Conference with a conversation between
Fernando Perez and myself. Fernando collected helper functions and
typemaps from Eric Jones, Michael Hunter, Anna Omelchenko and Michael
-Sanner. Sebastian Hasse has also provided additional error checking
-and use cases. The work of these contributors has made this end
-result possible.</p>
+Sanner. Sebastian Hasse and Georg Holzmann have also provided
+additional error checking and use cases. The work of these
+contributors has made this end result possible.</p>
</div>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2007-11-22 18:34 UTC.
+Generated on: 2007-12-01 18:17 UTC.
Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
</div>
Modified: branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.pdf
===================================================================
--- branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.pdf 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.pdf 2007-12-02 11:28:35 UTC (rev 4522)
@@ -42,430 +42,437 @@
(Argout Arrays)
endobj
33 0 obj
-<< /S /GoTo /D (output-arrays.1) >>
+<< /S /GoTo /D (argoutview-arrays.1) >>
endobj
36 0 obj
-(Output Arrays)
+(Argoutview Arrays)
endobj
37 0 obj
-<< /S /GoTo /D (other-common-types-bool.1) >>
+<< /S /GoTo /D (output-arrays.1) >>
endobj
40 0 obj
-(Other Common Types: bool)
+(Output Arrays)
endobj
41 0 obj
-<< /S /GoTo /D (other-common-types-complex.1) >>
+<< /S /GoTo /D (other-common-types-bool.1) >>
endobj
44 0 obj
-(Other Common Types: complex)
+(Other Common Types: bool)
endobj
45 0 obj
-<< /S /GoTo /D (numpy-array-scalars-and-swig.0) >>
+<< /S /GoTo /D (other-common-types-complex.1) >>
endobj
48 0 obj
-(NumPy Array Scalars and SWIG)
+(Other Common Types: complex)
endobj
49 0 obj
-<< /S /GoTo /D (why-is-there-a-second-file.1) >>
+<< /S /GoTo /D (numpy-array-scalars-and-swig.0) >>
endobj
52 0 obj
-(Why is There a Second File?)
+(NumPy Array Scalars and SWIG)
endobj
53 0 obj
-<< /S /GoTo /D (helper-functions.0) >>
+<< /S /GoTo /D (why-is-there-a-second-file.1) >>
endobj
56 0 obj
-(Helper Functions)
+(Why is There a Second File?)
endobj
57 0 obj
-<< /S /GoTo /D (macros.1) >>
+<< /S /GoTo /D (helper-functions.0) >>
endobj
60 0 obj
-(Macros)
+(Helper Functions)
endobj
61 0 obj
-<< /S /GoTo /D (routines.1) >>
+<< /S /GoTo /D (macros.1) >>
endobj
64 0 obj
-(Routines)
+(Macros)
endobj
65 0 obj
-<< /S /GoTo /D (beyond-the-provided-typemaps.0) >>
+<< /S /GoTo /D (routines.1) >>
endobj
68 0 obj
-(Beyond the Provided Typemaps)
+(Routines)
endobj
69 0 obj
-<< /S /GoTo /D (a-common-example.1) >>
+<< /S /GoTo /D (beyond-the-provided-typemaps.0) >>
endobj
72 0 obj
-(A Common Example)
+(Beyond the Provided Typemaps)
endobj
73 0 obj
-<< /S /GoTo /D (other-situations.1) >>
+<< /S /GoTo /D (a-common-example.1) >>
endobj
76 0 obj
-(Other Situations)
+(A Common Example)
endobj
77 0 obj
-<< /S /GoTo /D (a-final-note.1) >>
+<< /S /GoTo /D (other-situations.1) >>
endobj
80 0 obj
-(A Final Note)
+(Other Situations)
endobj
81 0 obj
-<< /S /GoTo /D (summary.0) >>
+<< /S /GoTo /D (a-final-note.1) >>
endobj
84 0 obj
-(Summary)
+(A Final Note)
endobj
85 0 obj
-<< /S /GoTo /D (acknowledgements.0) >>
+<< /S /GoTo /D (summary.0) >>
endobj
88 0 obj
-(Acknowledgements)
+(Summary)
endobj
89 0 obj
-<< /S /GoTo /D [90 0 R /Fit ] >>
+<< /S /GoTo /D (acknowledgements.0) >>
endobj
-92 0 obj <<
-/Length 1436
+92 0 obj
+(Acknowledgements)
+endobj
+93 0 obj
+<< /S /GoTo /D [94 0 R /Fit ] >>
+endobj
+96 0 obj <<
+/Length 1464
/Filter /FlateDecode
>>
stream
-xÚ½XKsÛ6¾ûWàHÍoôÒÓØM§q=±:9tzPeÆõÔ²<²ÆýõÝ i±mN1I¬°û}Ø' üÌi®E0ÌùÀ5À«#Á®píô:-×Æ:|Xó\ YmwÊRª'
Zrc¬gµÀ´ÄçG/NT`รÙüí¸QMLróË_«ÛtÕÇT«;º{¹Pq|¼ÆëÛY
®³Z Q]à÷x½Áë^µ·qm³ù÷¼M»vB;ÜàÕ=Óú¯Mûxu?Ì~ÿxôzñàÎHͬÆá ö$\ÒºÖAZi#r!q³Fsç IlÿÈV¡/N|ñ+e¹4Ê¢&G.d ['X7CÉÈÊ®Ùj½ÅÛ¿Û}©¯ÓN5(´sqÃ7·(~O6\o£)×ëÈfÏ£¸2vv z´ÅewXtJJUgm÷bM«ÎÌ¿·Fnè%Ä;kîlNZÙü}üqÓ·Qj.t(¸Ò ¡²³iM>òi&}լ趵¥!¾iíB¸3À
-'¤Ðp¥¥Û¿êÎìv?Ü6íû}GJhâ@N2j1CͼFo6WÝÒ»ÒW`ñ¦T}°$(Ie¡Îmt?T#5täËâ÷ÈÊ!hµC06ȯÍÒÁaüIðÿrª«ÖQ")yLF^wÉh½3°Riï8x9%
-£F?LAYèÓÌØj
-Fé.i"!ó6'§Ó¬w1kìÓá=%½éðÜMlÈA6,Ê/b$p©°öÔsrEA*éÈbY*gÅ».¶mnx¹é"dØèàV4®T٠ϵBà5ÌiB}}tp¨ÒªÃd©Ì@}bÙy¿![#d¥Ö~Í@"a7Ð8!!IÅ° ¤WëÿèS¾´
-ûQ`8 ýøÁÍüIðÿ#àEbtϸÔÜ'Pm¦äAcKÆð¤Äµiͦ%àÕzµÂ¢ï÷óã=µZu
F[Q×7ûüH¹Þ²Ò¢ÆÉórR0}[gÌCIêKZ®Ww©Ö|îåÕagÍJúa}Eìnºúª1»;ÓÄõ5=Ýÿ=Onâo71 bÊíÚë,ÓAg¢S)lö%)ÃaªÕTÀ.Qꬥ¬÷ÑbãA_ï¸wþ;nÜ ^åº`ê¤ë[£g}×gR¬O¬4¯OÜSÄMæY
-[i=èYYÈú¡¹ÙEÕ&aÇõc×Ó.
b-`.U÷[ýÜÏë7ØQ§GZ,ET¼Jaú0äÆyž=ÔÅOhò\(=Òd)ùn
-rZ°Ø9<ÊrÿÁÄ Ð¹Çá%YÀ7ʸÎE¦
üó<µÆѾe
×ær¸ð<1ºH
yoXiä@þ\º±QîY]D´Ç«Z¥b×ÚRSß×ù3
Ç®Úö ÉûÐ`#õ}«ôsµÉYê©nä¢sm×Ç.Fò"§g¥úþ>h7%Öb*V#)#KþpRäô=î,~-lúEÁs+<°R[ßÆÎÛé2Ôhs3H"ìÝi¯V±¥ê}ç
\ÀÊ{@매/óÒÆâ/)ÏýÙoÌÝ´i'ØfÕäo|cp+µ¶Ã¼èÈÕ%æ lâçÎÄ4@,=5&!B ûv)¸·v'Uèûp«%1endstream
+xÚ½XMsÛ6½ûWàHÍß襤±Nãzburèô *ë©eydåÃýõÝ 11mN1%>awvo Là?`Ns-aÎn¶Þ vÏN`Àhm¹6Öá§r+4kmàNyS¢*4hɱµÒZ?Y=:VãfË7´ãFyt1á¯o®Ò5oÐlnèînáBÃñã%^ß/Z-t³Z´Jæ¿y
×s¼Nè«þ6.°ïvoð~
׺ëÓ
+Wx
éù¯]ÿñ4Ú<»[ü±üùèÙ2Ç;#5³o ±'p[¢cèZ3ÒJ#bÖhîÄÀû¿²WèÇ£c_üJY.²hàÈ
`')¬+CÉÈÊ
>³Ív·ÿôë|d¾M+µ xÐÎÅ_#ü|¸ÜGW.·ÍÊ£¸2îý 4Ú]ѯ͢]Rª9]í/¶ôt5¸ùËêÏÞÉ}IxG¸îvÌçdõ#?îj¥æB+
è]¢_uënCÒ{ÑíïzϤnÄ0
+ É3\i)ãÂOݺ^à÷]ÿçöa
+¥4Nq ô)²XFW æÁC~Fßì.G/Ëì\ÅÒPÌ¾Ê aó¥oö1ñ(¤©¡¤DXø 2À]ñY9ZëÐb ¬ä7ÝÒÁáøâÿíö2n#4}D>RòؼÚÐC
+,pÌËÀJ£ÞqðrN
+Ö ýçÝÂØfÚ Öç}»DB}7NÍ¥Û¬nb¿xH÷,Ö¥Ãs6±!GÙ°<(k¾
À¥ÂS§5Ø5+¢Ë¨ÜoØ÷½áñn¨Ub£&À9<йÒd]k
·`° õíÐÁ¡I«3Qö,%ÄzÈÏ!ÅN²Òj}Z
+ 0Ch !¡bYP¤Ûÿ[¾´ë*0 ÷~ÆøAmfÂDü UÅÍ»tH¿ÿìdc#
+ײQNY='%17ÁFB¿æ~ð¿z ¬´\§qmæä[µuÆLðPâäj·ë xºÝlP"Äû§Å-I0¹ÕëíU)Zs¼e¥G#¦fÎæcSýAu¡úÖÛÍM:y?T¡Øp8a°Ò¡ T»Om(ló^pPmdÑ3[øßÝxùäaf½§Ï.Tì9Ãq<M&ÜÒ·ñ\2Ì(E
+ïõD×É("ëUÌ£(CcÐ÷\,üÊ:m»Îã³-::w̬j¶p0ÇÓîÕt9É=õ¤ù2Ë8L8<ÊdõSwu_U»;Ê÷·Â_48ì=¥4]8êv¯7Ês¡ôvÉ(¢âEmq¢«Ã4KäëVaÒL3çQ¤¤ä"¨ QäˬMÒ×zÔËÊõGõ0crÉÁz{8¹}ÒÝQ(ë:2}áåÛhRk4Êw¯ÇOrR!eÞV:9Ò?nj°ýª)"½ÄN¥&¶§¦<~ą<îOÛÜj¡Yi±fÆ<|:cHk±ù¨NQR#çCrì»èA¡äæëÐnN6@µ#'ZFFùp\ôô^ò4¾5íêCÁs+<°ÒÚè¤_gë R ¯ÝáAûù°ÛMTÕûnÐÀI-+WbXÌqà¤:gÅ=^Sû{ØÞØ
ß_õmçÙnÓå7#cà:N²ÒêÈf;¥:6
+iô'
B|ùÛ 7¦2àÑ£ÑbQðÐ/#÷ÖÞ£
+{ÿ
¸[endstream
endobj
-90 0 obj <<
+94 0 obj <<
/Type /Page
-/Contents 92 0 R
-/Resources 91 0 R
+/Contents 96 0 R
+/Resources 95 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R ]
+/Parent 132 0 R
+/Annots [ 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R ]
>> endobj
-106 0 obj <<
+110 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [98.3198 572.1561 154.7972 581.0627]
/Subtype /Link
/A << /S /GoTo /D (introduction) >>
>> endobj
-107 0 obj <<
+111 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [98.3198 550.2982 162.5882 560.9481]
/Subtype /Link
/A << /S /GoTo /D (using-numpy-i) >>
>> endobj
-108 0 obj <<
+112 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [98.3198 530.3729 189.1283 541.2121]
/Subtype /Link
/A << /S /GoTo /D (available-typemaps) >>
>> endobj
-109 0 obj <<
+113 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [120.2376 510.4476 178.7476 521.0976]
/Subtype /Link
/A << /S /GoTo /D (input-arrays) >>
>> endobj
-110 0 obj <<
+114 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [120.2376 494.5074 190.5034 505.3466]
/Subtype /Link
/A << /S /GoTo /D (in-place-arrays) >>
>> endobj
-111 0 obj <<
+115 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [120.2376 478.5672 185.4226 489.2171]
/Subtype /Link
/A << /S /GoTo /D (argout-arrays) >>
>> endobj
-112 0 obj <<
+116 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 462.6269 186.7573 473.2769]
+/Rect [120.2376 462.6269 205.0487 473.2769]
/Subtype /Link
+/A << /S /GoTo /D (argoutview-arrays) >>
+>> endobj
+117 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.2376 446.6867 186.7573 457.3367]
+/Subtype /Link
/A << /S /GoTo /D (output-arrays) >>
>> endobj
-113 0 obj <<
+118 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 446.6867 245.8948 457.5259]
+/Rect [120.2376 430.7465 245.8948 441.5857]
/Subtype /Link
/A << /S /GoTo /D (other-common-types-bool) >>
>> endobj
-114 0 obj <<
+119 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 430.7465 262.7715 441.5857]
+/Rect [120.2376 414.8063 262.7715 425.6455]
/Subtype /Link
/A << /S /GoTo /D (other-common-types-complex) >>
>> endobj
-115 0 obj <<
+120 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 410.8212 245.8352 421.6604]
+/Rect [98.3198 394.881 245.8352 405.7202]
/Subtype /Link
/A << /S /GoTo /D (numpy-array-scalars-and-swig) >>
>> endobj
-116 0 obj <<
+121 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 390.8959 248.246 401.7352]
+/Rect [120.2376 374.9557 248.246 385.7949]
/Subtype /Link
/A << /S /GoTo /D (why-is-there-a-second-file) >>
>> endobj
-117 0 obj <<
+122 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 370.9706 174.6126 381.8099]
+/Rect [98.3198 355.0304 174.6126 365.8697]
/Subtype /Link
/A << /S /GoTo /D (helper-functions) >>
>> endobj
-118 0 obj <<
+123 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 352.9781 153.5624 361.6953]
+/Rect [120.2376 337.0378 153.5624 345.7551]
/Subtype /Link
/A << /S /GoTo /D (macros) >>
>> endobj
-119 0 obj <<
+124 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 337.0378 160.5759 345.7551]
+/Rect [120.2376 321.0976 160.5759 329.8149]
/Subtype /Link
/A << /S /GoTo /D (routines) >>
>> endobj
-120 0 obj <<
+125 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 315.1799 240.5847 326.0191]
+/Rect [98.3198 299.2396 240.5847 310.0789]
/Subtype /Link
/A << /S /GoTo /D (beyond-the-provided-typemaps) >>
>> endobj
-121 0 obj <<
+126 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 295.2546 213.6367 306.0938]
+/Rect [120.2376 279.3144 213.6367 290.1536]
/Subtype /Link
/A << /S /GoTo /D (a-common-example) >>
>> endobj
-122 0 obj <<
+127 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 281.2471 194.7271 290.1536]
+/Rect [120.2376 265.3068 194.7271 274.2134]
/Subtype /Link
/A << /S /GoTo /D (other-situations) >>
>> endobj
-123 0 obj <<
+128 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 265.3068 179.6044 274.2134]
+/Rect [120.2376 249.3666 179.6044 258.2731]
/Subtype /Link
/A << /S /GoTo /D (a-final-note) >>
>> endobj
-124 0 obj <<
+129 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 243.4489 142.0953 254.0988]
+/Rect [98.3198 227.5086 142.0953 238.1586]
/Subtype /Link
/A << /S /GoTo /D (summary) >>
>> endobj
-125 0 obj <<
+130 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.3198 223.5236 182.5135 234.3628]
+/Rect [98.3198 207.5833 182.5135 218.4226]
/Subtype /Link
/A << /S /GoTo /D (acknowledgements) >>
>> endobj
-93 0 obj <<
-/D [90 0 R /XYZ 74.4095 789.6651 null]
+97 0 obj <<
+/D [94 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-94 0 obj <<
-/D [90 0 R /XYZ 74.4095 771.7323 null]
+98 0 obj <<
+/D [94 0 R /XYZ 74.4095 771.7323 null]
>> endobj
-104 0 obj <<
-/D [90 0 R /XYZ 74.4095 613.3264 null]
+108 0 obj <<
+/D [94 0 R /XYZ 74.4095 613.3264 null]
>> endobj
6 0 obj <<
-/D [90 0 R /XYZ 74.4095 613.3264 null]
+/D [94 0 R /XYZ 74.4095 613.3264 null]
>> endobj
-105 0 obj <<
-/D [90 0 R /XYZ 74.4095 585.1076 null]
+109 0 obj <<
+/D [94 0 R /XYZ 74.4095 585.1076 null]
>> endobj
-126 0 obj <<
-/D [90 0 R /XYZ 74.4095 214.5572 null]
+131 0 obj <<
+/D [94 0 R /XYZ 74.4095 198.617 null]
>> endobj
10 0 obj <<
-/D [90 0 R /XYZ 74.4095 214.5572 null]
+/D [94 0 R /XYZ 74.4095 198.617 null]
>> endobj
-91 0 obj <<
-/Font << /F39 97 0 R /F44 100 0 R /F8 103 0 R >>
+95 0 obj <<
+/Font << /F39 101 0 R /F44 104 0 R /F8 107 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-149 0 obj <<
-/Length 3900
+155 0 obj <<
+/Length 3923
/Filter /FlateDecode
>>
stream
-xÚµk·ñ{~
®ðno24iºh"= (¢%ùNÍIrnuv ÿ½3K.WZ¹Fa¬µáp87çØ¢lad+;§ÆºVkÅëýGÝâ¾}ý0RêV*màaâk£x×Zù¢É|qûѧÏ_0Ù
- o_
siÖíÌâvóå¶<ܶ<=oøÝ<O»ãáæ·þô¹]¸Öi®qx·h8kmgx{#·7
·bù7¸ÝÁµ
ÿ=︱rùÏ+üð^êåö¾ðj÷|ùâpÃíòúX_ãÛCü´B ã#
û±S=±}uxÂwbaÒÏ1?=Þï3&ø&àYs FÀÅÿ ׯÇd¦[æ1Ú¿uyòN,`ÄäX?2ðûxÃÍò-þxûäwÉòì[³<7¯2ß¿óÂÂw4ÁÛÉåË5aÜxA %5fÑ0Ö:rÄS¹º|J×%závE?ow^HæàùÍÒËÕc v{Bïhã+úí×ñ3Ò>^CæpÏ;dÕênÛ·õÞVqa۶봱ßä&vyvFÄd×jÂP1±53¹É-åäkàg2Ë3¶¬ö`µ¡
ó ?vLFÐ?C()ºó׶ôx#Â.á~Üg¢£]˳¥è"wÆSÄOôßö$k~ç·^Ã8¿:£Ï
-` Kb2Ó£gËG
)ħ½i$Ë/¼¸·PUEsl@ÃAÅ$Eø&Pof
vF7aô±$E¨É-è»Óº<(`Ú6ɳë¸?$uôëD&?ìE`Þsô%ÞZÀí±»yF²":Ó
-kX)+;ÏõFîe¥ÉñÍOñÌ$¼~ã½(íé9Ûp|¼,iÝ®¶ªµÓleÀ9®ÄïÀ
-a ÷n2;×`i\ùÆ/þËÁ5ñØûý`ÑNC³åoiDë½|¢Çábðó»:~hü-º Û¢(âí=ùj»
-vw}JöÀã(V©\kçHªfr.X ô¤Y¾èi¶(p»¢Á2F e?y|Ùd°øý%m{@ô7 ÛÍ0¢m¢¼Uù<'ÆÄho<®Ç g+Íw(þÀv¡y²¨÷+Ø2ê¨sÃøèÅÖI.J]yÑÖ]z T
-G²klXÖëÀÑdÖ<ý.~Q£ûùC¶V¹
VªUF+²oò¹D;ç<pà%CP3KÙrfy9ùȱàØíãÆlék2_½aðÕ.ðÝ£`n¬¼ì¶\1Äÿ£(.·¦Þ±zBö¯«µlçf¸í>¨ÂÅÁÆG¤d¾Aê~¼5ÛM
5ùr_»í)ôà°j°ÍøjïÂãuD²öò·º½È2Ô¢&ßjú*ÞNæêeÎp
-ÆÉÞ&AÎ6èÜl°x }&Oªmδ7yl
Ê5¶)þ%ÅRØJ÷këëPFu"Gü³ã<|¼5
-P'¦mD1ír*´Bµ¦Ñê,2°HÊvõ!"ØL;§;;ï8 ¦úlzZóxD
-'Ï"²ª½Ùoqñ®ÿ9 ð{¡¡Ñ"eÓÌË¡>ÂNAÿoø÷rº»ú&ÅJ.lCn£W"
-
ñQrÆR&ð&¯lU
ô²d·J at 8PÐ02 èòÌcT8ó3ZüýÚ¡!{ãê"=>Ä|¸¼9>ÄnGye¤×ÝtÇ<Û[¨óÇCDÌ3
ìGo.weêÔy 5÷8ÉéÈzx J¦¦%C÷>)t
-D-!*MmfBrwE|1F* ¢×ÜBÑïP´Kß¿¤st@Ñç3Åî
üƧ´)¦cqít«ueÁJ1]$ø&Pn
ixSÈ*ÇôÝ:#Õ±þD¨**dåÙ®Òlo ¶Ñxÿ«u¹øÂ\à÷>JÃ&Hdî×-ºâ°U»(3~{ú>ú<:¿¥kç>àÙùXà!)É
Ö]Âpnð§(ÈíâËÍK°Çè³BÉ
¨ÚE¦ÞóÓ@r¾ôãþjiaQ®JÞ21¶çXmCcä5²V´!þ¹¨DÈå~(<å_&ðRÈ
2VeçêV ¾ÉÔ"T¡Å¥|ëc¯¿Æ\®(Ñ2ïËØ '¨Ë³×È¢ [Eé`B¶ÜcnB8¼|1ñ¸
á]£äòß^ö(3IeÆÁÐlhÕz
q(áJµ#Y`ak%IáÙîºEIåü±ÞÁ¹hª2èÝÜû{Y½2©[%
¡³QAoòµ`Th¯µpÆ´A0YÒ3¶pj
-Ûµ;SRq¡ä= ÒÕ¡¥áuèXj
-+uMµ& p>oHQ 7ôr(5 uÁ"F;Zd1#W¼Él9ïSÂÊ6gW
-V:þÕ«ÅùòU¦pK35«¼(¯Ãxk)5ãcøLt¥Ýͱ6L¸
R:DýþS¦dò®P
ÛÁ«aP(}
-¯Ça«ºÞöîýN§xîÂ{aì>Äiï|ðCï7áþ]d£§ §ßÓíÙDm #â!%ÎÄÉÿu³«Ûó:+Z~Ø$
Ê$KJ1QÇ$+=a!¸m
»ªji[åx¬ w"ËP¸ÊjZÝvºS©@fsV<Â7ù û9F;ëÞA-p³¤£rïêòìs4¢½ªe w&kOÄûÖdFM©9`½¬cÃÙYyÕoÍÕÙªµÈÕSW?vè>q2Oå&
-2ÈÍFàÐúp¥ô¡¸æ,odÇ"¥C ¯CËܾõç}ÔãXLô%/³Àãô3Bø~dùÜSÖ(H9å
zØMÉìPÿ_oëÓ1Ý
-ÅÍFH :7W]ðM> .ðVhgô
-q«Q#:Fz .Ï.L³÷ÑJÂã ×Èm*¦âi½ IÚÑyÜtì\Yrè:|p'Ñ~âÓ05r!¹i
oÆîEø&PÛ½
-íµÑ+Ä3¦#rÆÁk ºLï8l¶%
ý6Å$±ý³ å¦Õ««*;-ó;¾} ¨ñ×¥õq¹õqþ*KaÀ
mô«µÐëâ ÷1:ô
8ªóÀûí*$v¡UµrÔ.à²ÝÇ4
2oKÇ B,¬."Ba4¤KeÒçjÛªíT*.\ëhX+xÚ#[¾t#|ªè`eW¬òi®°Ù?5'ÒèÀÂÄ[G"Òð+àÀàjéôF&ø&PÛ¬
-íÅLíq%gè.ÎÓ!ÙÖ²Pj®,WË=f^^z¬eaDÌÝb5T|¾<¬Ú,X
-Ò]á°¤ë-àM_q¡B:SêgºUcc¡.ÏÍ8¨K'ʹèR©=íÊsOz1j
-¢×þüËL¨~¿&'á¥0Bù@ÄÂQè}:{caiEÃÃÏ~¨\®bé²ßÓ·âËã½÷zÍÖêÐn()új¨(üßëÉ`óÃË©J°2Égåýª¨V`½ü@¸îóF
-_x&r£N{s2ÂÓënÂpÀH-FäN×v¦el]rË|¨#·
-íL_î°ÂGdû"ÔÌäZÂäÌ_*gÁä½yÃö¤^x®Ä8HÀ~úm*w1ÎÃÆX£8/Åîäb=:_G·ûpNÃrGèË)è-*4ÍÆâhSi:=£ù"yë¨]½:mßdÄíR&,ÌÜÛ¦ã"Sex_ôÈ)Ë99P®
-ïýy_vÎã
ÁØOæ !_QòtÏ<aÂËmu(pݤ¡Å±;§³é@иtôðô¹l`Å
l3l]Ö²,sùi?Ùi ñ6¢æ
Ù±ûã%ݲ.Âûª¿[ÞÞXAÎÚJR»ÎZí)*/¤éÆß<ÔIë}ðM>`"£½2âÀ7¢g\ P3T0|d%ZwOñÞ{?*, k¡yFÅ;|8RÁ·2ã@Äù×r7Á_^WvÆ8ÓvÉËLMP3Cê°êø>L-½ ¾(QqRÒÈðQg·à
-R5n'þ( çR|öxÂwéuÔ\£8< Ôß M¿LÙéOR7q-kSÀ2tÚW¸ðÏ[þ×óðü¸¾
-ï"Ì-\
-ïðùÛô~¢ ÿI~(Øu·áüK[Ú¥3Ç"¸È_ã. at L»aõWLt> Ë&$¼²Â»S&==ù1¬ì¸uæ|£5*¿×Wɦté»®:n÷¸¾Þÿ.v¶¹úaÓ¿ PÃÇ/ÿî_/qçC$ì¶ðÛ°CGÉBYpK÷zMõb·<it»" t u
-¯Âïa@Q¾ÛõéM\ùclTÉ1<HÌ.sÛûeø[$¼¯ãÒuó!BÁxB¿Ä]RYÏe;ϸ_×G±q"Öv± j«~¢Ó)ÕJÕ}g²su"窸ǸQ
-0MÁ"¾+»½|/XÕï°:îÑZÎ%!¡¸R
¾xãM¾Æ´¥#ü÷IV]kùß#ä=wsÍV(3]æ0MTLNµYp~~¶J61ߤ6]endstream
+xÚµk#·í{~
·XOFo©4i.½¢Mt hbÎöíºYÛï]Aþ{IQÒh¤±ÇÍ¡8øæEEñ%.[´ð-ldëÔÂX×hØb½ÿ¨]Ü÷¯>bFJÝH¥
<L|])Þ6Vk¾XåH>¿ûèÓ/lw¯Z5F;³¸Ûücùò-7-OOÇ\7ÏëÓîx¸ùçÝ>}a®qkÞ.V5¶µÌ¼{Û·bù7¸ÝÁoÿþ{Þwcåò ;üð^êåö¾uxµÁ{¾|y¸ávyÂýG¬¯ðí!~êèøDþoUKÀìG_Þ%pDËXü3CÃOO÷æÛL ~ð"Ì%P£EAàä¿ß˯J6Ó
slë .¯!q#a üû Z¼È ïã
7Ëwø_í³_%?ÊnÍòÞ¼Î|_~ç
-ïÀ»É¥åË5aÜxE %¨5f±b¬q
+ôH¹ºÖ¤k¿pÛÑåÝÎëé<¿½QzÙ=n·'Äùh_Óµ_ÇÏÈ{91Âá¤÷(ªî~Û7õÚFqaÛ¦mµQ±¿ÊL¬rvFÅdÛhÊ0f£T±5C\qËÄø$áÅÂòí¨½è6´`äûÉhú[²ÙFw^óúbI0"¬®ÇC¦:Ú5Ì0;VÁñÜ!sÇýç=i¦gÆ¥_ùWæ0ÎÏÎè³
+ÀÒF1éÑåÍ£ÂÉÔ§¹YI.?{u+PUEsl`ÃvsáWùz1+´3dÀ¸ £6JMP3Ä-ìw§õx4Q ´-×qHÛÑ[¬ü°Ax/ÐxkC¶ÿAÁîætE´¦Ö°±®ì¼ÔWBp¯Ë,Ç7?Äg2ðNø
÷ª´§çlÁññ²¦ý¦lt»ÚªÆNä¸g¼.$l¹wܹ\Kdpæ?12ø¯×ÆO`ï×E?:
Í¿¦}xü~·ô*îä=ËoëøaåoÑؼEïÈ·V\U°»ëS²ÇhÊ5ÆxIáè¥sÁ ×<P$ÅÌòeOÔ¢ZÀmGÁ2A e?yrÙd°øý-{@ô7 ÛÍ@ Ñ®¢¾Uù,gÆÌho<®§ gªæ{T»Ð<YÔû5
ìGLuÜs
|ôÅÆI.Æ{å1F[÷QéQ)1Ê©±aZolpÄ*³æiì7À,ðËåÔØϦ²µÊ-´R2Ò\á=ü*0éÇhç2|ÌFåÔq)Î,/n0©Ý>.̾&óÕûv ïvAþèsf¤äe·ýà!þ/¢¸ÜzÇêÙ¿¬nÜ-`;7ÃmôAf(>"%»ðtZ«¸â½#¶ý½?Ðîªí6nã®l\mdJ,Ú[R½X2òh »WC\í»x dØø¾£÷\:.Føeø}HÙCàþÇ/sÛj#áGðÊÍ\KÈ
QAYxÌ( ®qèl#
vcµö&~!ë º#
±
kíß<[seÁ?½Ê'6N6·¢OqG<q³{åhq)c
+Þc¿&»ÿ1 ð˲õÇ¥Ly½ñåsR@ÜÈC\Ê·Au0âÁ$úÜÒH ¾·``^¦u|Æà%øU> ²95ÚËO
ÒÚÂà%¨â²°=QDCûôß4O>ñæI¶¼Æí]´qß
+#2md²Lp2|ÓÑe*ËED1FUYÇ~<ÐÇ|ãóúè
â.O~g<-0Pq¯v@ÖÛ¯Ga»Ów_dñQrïMaÖzÞ"Z3háó¥EÛsßA§1Éâg³_°h¡&¾Asvs@Ñçb®vÏ&|
+iBÌ
+fn²ì¸z)æ¿ÊTª\£EÞÄl!J*m#~nªà§ØP j
+YØPܸQ"«ÚÛ§mt,ÄrÇk/|5®Q6AóüЮi©vQgü*÷ô}¨âyt~I×Hç!àÁQ0¹Qu¶#?pj½ÙÞ(¾ÜÔ.CDc!mójp·YzÏÎËùÔûc(
IQ&*yÃUµOôMW)8ôöÝ.)
Îw<îzÇsîLGI·2V,ahEçJR ~¨U¨BSùÙØÿ5¦i£ê+d£Ðßtv
*ºOs¼n²x9¥°-÷¡KÀ¨×Ñ#@Ú
+!ÞJÉ忽âQÊÙn½Þöý°FGB»GzKèzíõÃëî1 )ⶤäçaqdÛH'ÔØò
+U0¤[¤]ëߢZ=R¡¸8öXpqû>n«jõ@ü`)
+rm'«GøU>`b%K´WC®ZA+ø)Õ)BÍp¡0G\\(ý¡àRÚÅÉ"5Xãv×$¶ÑJË x>h[²ºÇ¨XbbaÚT¼FwçÍØ#²MfÐüØþ´0òÍÙ"ÄU«@+Gq¾ ¢Úo©Ðq¦v§ò9,ðpÌ23ÞFÃgú¢^,âH·AKÁÊ6Y<_¨íÃànÔNÃë§ÁqfW×Ýý_éT#¿0 C»!Þ{)ÑûMÆÄS¸Åè9XÁÓïèölVWÆLÄØ ü¥ÎÎ2.ϬxùaDFR31uh÷ªz&Ùã Á-Zkª¶QGÀ #å1ÜaªRźi5äºRÁ>ÍÆ~J´³± ìgÒóQê2uÎ91¦^@P:
+§"{×(À¨é3[2¤éˬÌêf¾QéóÛ0ÅÔÕªàF¢]§bºáÝ(¬¹`-èWM;ÚÆÀ©YÆ>ô@áÎP®jYätUð5¯3w
oýycß#÷8ö¹ñ¾dF¿ ËtúøåpOÃS^°¿¥ºY:XoëS2ÝÅͲKÈ6Z7Weð«|@]èÐÎì+pÆ6F|Uuºd>2=¦ÞGSê
O^£´×¾"ç2zAÇ`V ^nxq.7c|3ªV@Üâ_ÜIµ¦äÂ4P²F.$7á Îؽ¿ÊÔv¯B{m2ï°%
+vÊ\> ]æ·GÛ1ý6Ť±ýíÄæ¦Ñ««*;5ó+¾}¤¨ó×g£Q|èhŪâo¸°~p5zC¼#á~$AþGE!x¿íB"HùZU+¶?í>¦u¦[êoÒdaµt±j1S(ã?éÈó¦T¨¦U©q£aài(nAþRZZødiR¢;ÂC~Áæm¶O-4:0ÉÃÖ´ü
+80ø5Æ´z®LáWùÚfUhg,fjóq¶î"õÉV4)9`¥sÂãasÂKçÉ
ñà,ÄÐ>4êCÛª]ÉB¥ Ý»BÚ¹¾Êá+)TH/0¦Å((aºLqØ.ÓNªKÇè©l;>ÿ¤Es½öÇffbë÷»hr2X
+#Dl(4
¨pDé1ÆBTGÃÃe?9»Xçì÷ômtäåqLïý¾Ç¦k%ÕvCýQêÆfÕ£üHÎçÿÏ¡,Ì 33 õ3©ò¾U+°¸~ \yC
+e6JLäF÷æd
+§3ÖÝá
Ü
g¹ÂéÚÁ¦iä[\«æ2¢¿ÊÔ[
v¦?@·Xáe@!®%gfLüR9V ïÑ'VÁs¥ÆA:ºôÛT
b
²Fq>V»3½,öüQ|-ÜîÃ)9
Ë¡ ·¸¡qhh®¼)~6Èé(iC¤ã²`Ý·Ý«¡ãömÆìØ.e"ÑÉå¾l<N%ÆÀûQ¯²|è½è
ÒVá=ºâäÒ^¬x2 ¹¦æK®ñÙ'¼Ü^
+×NZ;¹¶ÍNKçÆF¬øa´IH·wµ¹|À´lKxNQËìØÃÄYnXá}×£[ÞÝXA
ÏZQRÛÎZGË3ª¼´¦#|Q&q®áWù,¤D{mäúâ
+~ÊJPáBák%sq©
×ñTï½÷£Â°V[Ê(ÞãÃ
+¾f οVº þò¼j´3ÞĦµL^j!i¨Ãªãÿ"Ô±7Á7%*N4
+¼èð\AªÆíÄã¹!=ðÝzí5Ùæ(ÎO$(dõWÀÓOSvúô§ $µ¬§ËÐi]áæò/ø½Ïßá]¹ßÃ;|þ:½(À
+1>*ô?vlÎà$¸ 5mÙ_Aè|@$¼²Â»S&==ù1Ìì¤uæ|£-ÿ§9wɦtù»®:.2÷{ø}~xÿwø±³MÖþ 5püôÿiåþùt>Dîh¿[:JÊ[º§ØÐlª»åL ÛÒÔ)@¼×ã&|·êÓî|¼â?Å®,ÃÌì2§¸
¸_
¿IÂû:¾É¹ íÈP=]O!BÁxB¿È-Uyg÷þ}»>ZL¡æ°àP£èú¶¦4V+yV{ôm@(ÎîDÎUq¯q£`<(I|3n
óa¾`eSÙ¾;éÑ\Î%!¡¸R
¾xãM¾Æ4YóU×Xeeþw Ä%ÆsÍÁ®PfºÌaVP29Õ0eBúüllÞ*'7íendstream
endobj
-148 0 obj <<
+154 0 obj <<
/Type /Page
-/Contents 149 0 R
-/Resources 147 0 R
+/Contents 155 0 R
+/Resources 153 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 155 0 R 156 0 R 157 0 R 161 0 R 162 0 R 163 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R ]
+/Parent 132 0 R
+/Annots [ 161 0 R 162 0 R 163 0 R 167 0 R 168 0 R 169 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R ]
>> endobj
-155 0 obj <<
+161 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [288.033 736.4747 317.1934 748.3352]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-156 0 obj <<
+162 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [312.5275 725.0775 341.6879 735.9168]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-157 0 obj <<
+163 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [350.8735 713.1224 380.0339 723.9616]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-161 0 obj <<
+167 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [312.8897 652.6458 342.0501 663.485]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-162 0 obj <<
+168 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [124.3686 604.8251 153.529 615.6643]
+/Rect [448.7246 616.5013 477.8851 627.6195]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-163 0 obj <<
+169 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [105.5626 580.3568 137.9707 592.2173]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-167 0 obj <<
+173 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [178.0471 568.9596 213.3644 579.7988]
+/Rect [180.582 568.9596 215.8993 579.7988]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-168 0 obj <<
+174 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [145.9004 556.4465 178.3085 568.3069]
+/Rect [218.988 556.4465 251.3961 568.3069]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-169 0 obj <<
+175 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [185.0642 448.4282 220.3815 459.5464]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-170 0 obj <<
+176 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [375.3565 436.752 410.6737 447.5912]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-171 0 obj <<
+177 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [168.2912 424.2388 200.6993 436.0993]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-172 0 obj <<
+178 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [486.5452 412.2837 521.8625 424.1441]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-173 0 obj <<
+179 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [88.3572 388.9313 117.5176 399.7705]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-174 0 obj <<
+180 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [332.17 376.6971 361.3304 387.8154]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-175 0 obj <<
+181 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [199.781 341.1106 232.1891 351.9499]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-176 0 obj <<
+182 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [368.9173 341.1106 398.0777 351.9499]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-150 0 obj <<
-/D [148 0 R /XYZ 74.4095 789.6651 null]
+156 0 obj <<
+/D [154 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-154 0 obj <<
-/D [148 0 R /XYZ 74.4095 751.9168 null]
+160 0 obj <<
+/D [154 0 R /XYZ 74.4095 751.9168 null]
>> endobj
-147 0 obj <<
-/Font << /F52 153 0 R /F8 103 0 R /F57 160 0 R /F58 166 0 R >>
+153 0 obj <<
+/Font << /F52 159 0 R /F8 107 0 R /F57 166 0 R /F58 172 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-179 0 obj <<
+185 0 obj <<
/Length 3187
/Filter /FlateDecode
>>
@@ -487,65 +494,65 @@
Jx=´ë»´ë"3Ñ5ÑI _§ô³'#ɱ
â ·ÀhN ¥IS
#gµ¬ªeǺAÇàw¯·Cú9Ù£}çI¢ÄýF¾NrkEZK§Â\Wë\§ñü%h6C à:ðeݾGÆýï«
#SÇ`©!kÃO[¨©x1¦ÌA
éÏ^Èa;keºUs²%ôóVø=«],¼à¢4 @µ<8cÏæùè3~/¨@QÛRîÓÎö¬É²ÔZú"¡Ë°Åw²5 ÀYÑz÷ËÃtÿiyJïÚ]Ó¨ÚƼö{óhë½PeÞ}¹Y2ntB]ÇÉ®gk"a0V jó(>sêÔå8eIçy_FnnéTô¾Í·K§/ëWL{:L a`^O/ÐðÑYqå+w÷Cj§Ò¸©->è"w>'ÏÕDWa¸Ö?ÂãN·4Ýg/c&[n¡+yÉØY÷;äf´Ãkÿ®?xT·î{£ÁÅ¢{òÀ¬Eçø_
ÜêÎd«ÁÑ}îû8N`¢ð/×sЫÒÙÎöë¶!AKé²±ëvÈF;ÚÛ.=WCüÝ´áÌåýp^«çW±-·q½·þÎé~úäbÆE8"ZÞG/ã:kÛ÷Øqwì·Ãvk*ȶí$¨F at OÆ
E³H
D~?®.þÄÄxÿ^ù²endstream
endobj
-178 0 obj <<
+184 0 obj <<
/Type /Page
-/Contents 179 0 R
-/Resources 177 0 R
+/Contents 185 0 R
+/Resources 183 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 181 0 R 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R ]
+/Parent 132 0 R
+/Annots [ 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R 193 0 R ]
>> endobj
-181 0 obj <<
+187 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [98.5482 675.1546 127.7087 685.9938]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-182 0 obj <<
+188 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [258.754 675.1546 287.9144 685.9938]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-183 0 obj <<
+189 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [204.2029 220.3002 236.611 232.1607]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-184 0 obj <<
+190 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [185.0902 196.9478 217.4983 207.7871]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-185 0 obj <<
+191 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [267.0288 196.9478 302.3461 207.7871]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-186 0 obj <<
+192 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
/Rect [73.4132 184.7137 149.368 195.8319]
/Subtype /Link
/A << /S /GoTo /D (helper-functions) >>
>> endobj
-187 0 obj <<
+193 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [73.4132 173.0375 108.7305 183.8767]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-180 0 obj <<
-/D [178 0 R /XYZ 74.4095 789.6651 null]
+186 0 obj <<
+/D [184 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-177 0 obj <<
-/Font << /F8 103 0 R /F57 160 0 R >>
+183 0 obj <<
+/Font << /F8 107 0 R /F57 166 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-190 0 obj <<
+196 0 obj <<
/Length 3404
/Filter /FlateDecode
>>
@@ -565,1241 +572,1312 @@
=,7òñnNØêN«Âò$ê~¦ç¬!CË2ð{Rf³NÛw×À¤1Ã![Û&L;§~Gò¿oo
T'1¥ãS%ÝÉã[4×lØî[ÚtÛ%ßü(6ÿôÙq-,×ò"Àç§õ±Úä°Ìaèt@ä]N_
¤é³¼·ÌB¸b~º%Rîf¤eïsSÂ-°FzZ§ËdÄ6%''øBL:&ÒÜ]öµ¬Ïf[¦Þß²îêý%¿µDX?ß8_ÏF@^0¿§
ðUt´#¥4¬käê2u>Zak¨ê}kä,WU¾-ÿ
EØ(º
};²CgСKº~C÷xãO§çHÃïsb;k´µcý¹k Eí÷üÍö 3á4gwSuÇû1sy{|±2¾fòá H6¸ÿïåaq'bÌ;d³LðV<O'·¼¼Ç·]\$ y?;«¸]OÜÉA¼ÇúÈY_ê¿´>*"
¼"áM\?!½áÙ3ôMäSXtÕªV¿ç ón g¨FqÿåEÇ!Ó85ÂBÇV6[*K±2#jl'i<w/'»ª6"ãÿçiô÷#¾cendstream
endobj
-189 0 obj <<
+195 0 obj <<
/Type /Page
-/Contents 190 0 R
-/Resources 188 0 R
+/Contents 196 0 R
+/Resources 194 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 192 0 R 193 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 202 0 R ]
+/Parent 132 0 R
+/Annots [ 198 0 R 199 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 208 0 R ]
>> endobj
-192 0 obj <<
+198 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [270.1513 734.9304 305.4686 745.7696]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-193 0 obj <<
+199 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [110.73 659.2143 139.8904 670.0536]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-195 0 obj <<
+201 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [175.0442 516.8088 204.2046 527.648]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-196 0 obj <<
+202 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [474.6661 516.8088 503.8266 527.648]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-197 0 obj <<
+203 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [265.7793 492.8985 294.9398 503.7377]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-198 0 obj <<
+204 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [173.2926 381.0379 205.7007 392.1561]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-199 0 obj <<
+205 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [270.0076 345.4514 299.1681 356.2906]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-200 0 obj <<
+206 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [314.0087 333.4962 343.1691 344.3355]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-202 0 obj <<
+208 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
/Rect [73.4132 242.3384 108.7305 254.1989]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-191 0 obj <<
-/D [189 0 R /XYZ 74.4095 789.6651 null]
+197 0 obj <<
+/D [195 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-128 0 obj <<
-/D [189 0 R /XYZ 74.4095 596.4497 null]
+133 0 obj <<
+/D [195 0 R /XYZ 74.4095 596.4497 null]
>> endobj
14 0 obj <<
-/D [189 0 R /XYZ 74.4095 596.4497 null]
+/D [195 0 R /XYZ 74.4095 596.4497 null]
>> endobj
-194 0 obj <<
-/D [189 0 R /XYZ 74.4095 552.8202 null]
+200 0 obj <<
+/D [195 0 R /XYZ 74.4095 552.8202 null]
>> endobj
-129 0 obj <<
-/D [189 0 R /XYZ 74.4095 322.2583 null]
+134 0 obj <<
+/D [195 0 R /XYZ 74.4095 322.2583 null]
>> endobj
18 0 obj <<
-/D [189 0 R /XYZ 74.4095 322.2583 null]
+/D [195 0 R /XYZ 74.4095 322.2583 null]
>> endobj
-201 0 obj <<
-/D [189 0 R /XYZ 74.4095 278.9078 null]
+207 0 obj <<
+/D [195 0 R /XYZ 74.4095 278.9078 null]
>> endobj
-188 0 obj <<
-/Font << /F8 103 0 R /F57 160 0 R /F52 153 0 R >>
+194 0 obj <<
+/Font << /F8 107 0 R /F57 166 0 R /F52 159 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-205 0 obj <<
-/Length 2488
+211 0 obj <<
+/Length 2485
/Filter /FlateDecode
>>
stream
-xÚµ[Ûnä6}¯èÚ#Þ¥¼%³ÉbÙAøe
MwÛc¬Ûím¹3Èßoñ&(=6źòT¢Jd±njøn´ ¢nåF7-QJÒÍîø®Þܳ¿¿£#"B*
§d5ib
-wòýõ»o~l6-iSë
<ãVhÕêÍõþ×íõç+º=\ývýÏo~¡iK$UìP8p<Âñ';×Óð´+ßð@W¬Ù>3üïnw¸ªo¶ÿ©©ë{k½cXúCï.L£%[pºüåù;OþüÑöäwþº;ÐÔD>¾ãc·3VFü©ñìø?¼ðLÃ8wSð´s\¶¡àtÀààøèÞ÷yºbzûåÎ;vkÝTLÒr½©(%ÌÚøáªâo÷Ư'ë½èÝíÎt·O(ªÒHÎ'3êÍ¢bÝhÜÛq b¼7§§CÅæ|k:{÷Ãõ0xáÏ {ÁDjÃPläéÑr4táYÕ§
-Np÷öÅ ûb2
½0ãMK©"LB«½ÕóNß1¼·SÞÞëyëp°á·ow~¸Ñ{mÎj*HÍ <yE*§HÉÑ"EbÞE0ïÅ+ñµÊ¨¶!ʼ0Ñ% ²ä8GUbÒ´(´÷¬Ãþ5M:Ý0 ͼF¨ÛVö;Gy<Ǽ+ÃzuXÒèÂËQ9u¬¬N©ó.¨y'y;鲬 ×¥ñ0r{TÙß'r7"]ð®
-e=8|T]¡rXY-Ò$æ]óÞû?ÌnÃW\
-Uùs;ÀÊnçhÛ1ïÛwÅ`X§LÍyP^Óţʲd8*é(têðz
d£¦má¥À¨
-¬(CvÔaÆbÂûìÑñ±4¬EjYx0*'VÅÊÑ"±bÞ±0ïÍ°qSªÅä)¥ MË
- ãUö;ÃÜH¼F¤{ï°)UélõSq
-+ÏZYKͨmü³äQ¯è¸ùEÖCow~QúäÏaŶý{Àiºýbû^
øpVÔvݵó:÷çÖÞ<^wåã5ÌjêqØwp\û¿¿ûóÃñ3?Ì
-_<¬ß;¾|8ÁàÏîæîtñìÝOnAè.º·N´§¤Fµü×[31ÔÍtA¼°ò½÷õ¶±wkÔÎbcóiw ^,¶ú¼+¦a}Ü4.Ü&'iõ:»+èîÏtQç7Ã`q¾ØhWÕÛîì窱Äu¨{ppçv°ø¢ÉCpÂ4ÆØT'VU Nj
*wØ
-Ofìú>pLJ9'ÏçþØ
-ÉܱO 7ý#:
û÷¾¹ÒNºB¡ÅV¬CvguE·m<ãÔÈÁîFM\º¢ÓÙµÌGÅ&¨å5D²)¡Ùdo=æ¾Â
f
¹y·ÆÇ0
"{ãfÃ<²'J*oá-ZŧV àÁ
-RÆãÌÞ¼óÃ
ë;dªÓy»&DØæ1SDhr<õßgH!¢´k4àóÒÌ»] ¡[R·æ4
-VÀ¸
OÖÄþð?ð°iQÔ0/foõ_UY]pv6)0TiÚÐPÌC©®w¯òâ&ÓÛиLzïô~ìâãvt®ôÓFÓdîØflFb#Ì;,ï°E§q¢±½i+·!QL2OÏ©ÔêsR¿]wJ
°â\*g/LÍxÓ³©FD§f¾©ýcûÅßy(
ãWýÑßûÍ5µ£ta*¨&Áw;¯,Bå
°²²9Z¤lÌ» ìw½²tû×õê¾K&iý/*ë]Í4½
ôF¨ÞVÖ;Gôyôò½³Êú½jTzÃ÷ðb£2z°¢ÞYÚQïoZï÷3Kfe®à¤Ñ
lQ9µ¬¬v©ó.¨=å}lÂVf5(¶"*¡E!ç`T.*VJE%æ]Ê÷y9'«ß[d¦5QáÈbe£rQ °rTr´(*1ïBT¦¼¯øêÌô²l^(¡JÙ
-¡r°rr´(1ïB¦¼oø«f«5(¾"vµ$óRNC¨\쬻-]Ì»»)ï[ä´¬Êoù¢Øå«ÃÿÌ
-Füð§³[aÃ-½¸ät
â²¥ñ)ñ-Ê ágK¯¨
-É'ªh A9þ¨w¾?¯O¶8W¥?DMÉÇÂj«¤»:½¶Åó«V¾>¬;Å´²3¿áÒ®ºÓFl¬èM5°?;ÿµU
ËÛA`Ô¾U^8£¥ù 5rüe-Ä
â'!KTQl4x]Ú_*â¢í4nQlLEf16ï}çÁo,êÍñ.ÏþÄ×váêYöMËCS^¹%PhÞwaCæ¥{Q½Ûìë$ßðàöâí³ÁÒ:ÔöGÊíñdënAß½ëZ$+ôðÊH®Æ¤`¸ <\I_Û½C9ÎìÝßÉÍaç m%%¶\]ßeLXù×Íx@§¬»]
-Ü[Çé-ÔÝïÈfÑí-¹SÏc'㧿ë»a´&¾G¿¥åZú÷iV0e·løÕh)U±`îñn(ÇÝ®.ÃtAüajϬ`îQ+tK§lj
÷öâßt«¢/KøfQ=ýRð©FY#±³Áù´ÞÍæXm>´
IB]ËÒþQÀW¸Á|ÿhÖ±ü£uñgûfûXÔ6ñ\/
-ìf**Z>eOVÖCÍ>Wû¿y¡ú)îGI|U)j¬áoTÊÇÝg&î¬8qÏÙ&î3ÞôÄ=â}áDÆÜúÉC?øYö+÷©aJ
*¨P9µ¬¬v©ó.¨=åý%îs?0¯«+UÊEÀ£ÊÈp"ý#Òù'¤o^ì^ÕªmÀYÝ&
-æ[ÿ-¬fCOFÓ
ÿÌ(Á÷D at Mendstream
+xÚÕ[[Û6~ϯðËEÄò&Ú·lÚ)ºØfÁ¼,Ú¢pl3Ø{jÍlÐßÃtHI¤,ź|äÇóCêÔ°
l¥$´WJ·¤ij¶Ú>¼¢«<ûþó)"ëFÁÅÄÓªæè¦á«
+Wò÷Wß\ëUKÚ7«Û<µ+Õ0¢Vnv?o>^±õþê|s]+f-©Y#ÁÀzãG8~ÀqçJb¡IËDãÞèxÅõúÉðá¿[86ÛýUÅ
^ÿLë{Û{Ç°tûÎ]Bs
lÁhÝ7ð/gÜÈ_áxòç¶&÷|㯻±ôñ?l¶¦Õ§¡AþÔXöðÿ°÷VÂ3?pî(+ÞÀÓã² §s G÷¾ÎÓWëOwÞ°ièªâRV¨UÅiëÛ6¾½ªë±ëÉg¯ÓVtîöÆT·PTi¢k!"ÏõF
+1p±ÒÊw6@½wæôt4T|Ü¿Ê^}wÓoþÞÖíTC(¶¼ÓÑrh6ó¬j!äY'¸zÛ1Äö\A-=Ìر©Òæ2Ö^C©\{«5æû§B´1oçõ<xì» õÖÞsÚ¶`¬v:Ó²AÓãÊrd8 éôÙkð§5¡0Zp΢ TN +Ë£Eº¤¼3Â`ÞÎ}²fûn:ez£kRC¿ÎQÓ{XÑô,í`úwÚôwAP,WGQ"¤u*§NÕÉÑ"uRÞu0o4nO\×\LF¨ÉV69GLNygLƼ¢¬hV²)¨P9U¬¬J©òΨyï}ü÷ÙäÙ\F(U0¡rfXÙì-2;å1ó.eÊÐRªÊ TN ++£Eʤ¼3Ê`ÞØìåJÔ$¬)Ñ! 2ä8RÒi0égGÇgÈùsVtB¨PVV*G¤Jyg´Â¼·ýLÄ¥W³gÝÒ´´^aTÎô +£E¦§¼3¦cÞ7ÛÄË~: U¸kMk Ó0_ÖnäýÁLgw¢ùÙEÖ}g'w~úäÏaJÅ×ÝkÀ)¶þd
+ûZ
xf×v¶õ6îç`oîCÛ©pMÒ}°7pÜøß_ýùàø7ß
LÄD¾v|úØsB?ºÛÓ³×`çn|pCw±9º9£½8ÝN
+ùvPËÏwÝܸåS¥ãÉñÌ,øÞ·¬³;7_ݸ¦XßüÏÛ¿öææÌ
+Â9ò Üpü¸P´P
£³+<V;ÆbÅàæ Xr:zeÌN¼Áàöà êÔ¬<./ÙlÜtÄIÌ ¢Ö<HÌð"8
N.}T¢nÝÂÀá|öì3sËå6ç¡c©½>ìïíÚ ¬3À B¬ûVÞ
Z#k à7
+×Õ6å`J9/#ô)
+R;<Üí<W¸yiÈõ;`ê¼l´RÆqiû¾£è T tqí»á{¼±Q5^yÀÒ
« (#Yr¾tmÚú/[ë÷oÞU§³
0ì»
+ζ{A8á+zÎKÚ¹«¼Q`USÓ°4¸À"®â,XôvÆiM}ë~'ì$³sæ«ÞQf§
FºQ.2½üøøüdäÚ¶ÿ|Þ\A÷ù}zUÚWÐ,¼!Üðþlõª§Sí2ØÐ5¸7Ò¯CÀÂ;UíÝ ù0Rlp+<ià¦ëGé'Ïç~Îa
+½ñ8ÔòaÂLÿÈ Náþ½/Þûpàdë*¬´Ú¥ck]챺¢^eËâñ¥I×}»uõo¸t«Î¾ó6£uñ(óha´6Üòjî.óè|ð÷8 ø
+Ì«5¦<4´µ¤=Ó£DÒ$êQùVpoÙ6"nEp V23{óÎÖ·OONçAîMÙlfì£á-<ºÀï_h RjÒ(U/uPÏK3®v¡¤j mË;¨GZ¡9i!QÑíó ©}ãH
+ù(oë¸wø±{NMØÈìØ%v¨ëíæ8lOÖ5îÅz}z7Tq
+»Qb££7¥Å)E®¤¨¥éÃR!-b2'
+»+©0#³}¯G¢l$pv£Ã8¦U_h£Wcõ°â+×^4ÇñNϱ^F;¿.Ï7,̼sßùÇãìÍ;ü'ýÎßûŵQ<3{0ü*fäŨ²=¬¨lvPvÄ;l»\Y¶þëru_§«©=Iõ°z+
/¶° Q9½¬¬wéòÎèó½³Êôú½¨W"½,Oðì %$¼]~©
+WskÝi/vkÊ;ãÖ÷
(>9@}Ù ÅÁ2^ÚÖèÚVV;GÔNygÔy/0hñ
Ö_àF¡¶1*ç +{%G¼òÎx%æý¼¡-«ß%À^<¨º´ãQ¯ô°¢W²´WF¼Ó^Ixÿd_¹þ:ú×ÞK²°ýQ9ÏXÙ39ZäwÆ31ïWÔ_®õ%IÈ&
\
+"Jpõ¹ °r dÚ å ÷
±8iø¢DsM¸¤
0*ç +{ G<òÎx æ½@"!^t`\|Ç¡TOÊù.ÀʾËÑ"ߥ¼3¾y/1|fU¾DR²Àw¬UD5MáûÊø®}¥|7âö]Â{¡¤ä«ì{Ls³ÂZøΣrþ°²ÿr´È)ïÿbÞÿ»¾w½¬ÿ-IpúÕbÞÿYÂÙÃ-5»(ì
+¤_»&>`f÷<lоx¢Pxù'{NRÂÔJôµçl [«Æj÷mA5ý?326³ë¨ñ~°½þvöMÿlCÉöøÖü
rûf?WËõ\+:³ÞØ;ÿµû·ÛO:×*v)'|áOâe¾ní÷ÿ½s¸®}o»Uf6¼ø¤øÄ~]_a¼cov»).|áû-ñÙ3õMüÍ°¿òp6tÏþÄï¾ôávlOË¡ß¼´ÖjzÀ
+Æ£0óéïk2Ô)]ÿWX| y;endstream
endobj
-204 0 obj <<
+210 0 obj <<
/Type /Page
-/Contents 205 0 R
-/Resources 203 0 R
+/Contents 211 0 R
+/Resources 209 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 211 0 R 212 0 R 214 0 R 215 0 R ]
+/Parent 132 0 R
+/Annots [ 217 0 R 218 0 R ]
>> endobj
-211 0 obj <<
+217 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [192.2385 461.9408 224.6466 472.78]
+/Rect [192.2385 448.4732 224.6466 459.3124]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-212 0 obj <<
+218 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [447.6812 461.9408 480.0893 472.78]
+/Rect [447.6812 448.4732 480.0893 459.3124]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-214 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [444.362 200.8267 476.7701 211.6659]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+212 0 obj <<
+/D [210 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-215 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [161.7108 188.8715 197.0281 199.7107]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+135 0 obj <<
+/D [210 0 R /XYZ 74.4095 506.8154 null]
>> endobj
-206 0 obj <<
-/D [204 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-130 0 obj <<
-/D [204 0 R /XYZ 74.4095 521.132 null]
->> endobj
22 0 obj <<
-/D [204 0 R /XYZ 74.4095 521.132 null]
+/D [210 0 R /XYZ 74.4095 506.8154 null]
>> endobj
-210 0 obj <<
-/D [204 0 R /XYZ 74.4095 486.4609 null]
+216 0 obj <<
+/D [210 0 R /XYZ 74.4095 472.9933 null]
>> endobj
-131 0 obj <<
-/D [204 0 R /XYZ 74.4095 260.0179 null]
+136 0 obj <<
+/D [210 0 R /XYZ 74.4095 138.1683 null]
>> endobj
26 0 obj <<
-/D [204 0 R /XYZ 74.4095 260.0179 null]
+/D [210 0 R /XYZ 74.4095 138.1683 null]
>> endobj
-213 0 obj <<
-/D [204 0 R /XYZ 74.4095 225.3468 null]
->> endobj
-203 0 obj <<
-/Font << /F8 103 0 R /F57 160 0 R /F14 209 0 R /F52 153 0 R >>
+209 0 obj <<
+/Font << /F8 107 0 R /F57 166 0 R /F14 215 0 R /F52 159 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-218 0 obj <<
-/Length 3132
+221 0 obj <<
+/Length 2418
/Filter /FlateDecode
>>
stream
-xÚ½]oܸñ=¿b_X÷¼ø)ª}º&à6-®nâz(õÚqã]¹Öú÷×wR¤DI\Käpf83/Jøc«J²¬Õª2u¡µb«íþY¹º¹×ÏÁH©©t/Ùä¬Pª'^¦V2U×
`*ÍJ×BýþâÙóWL®ê¢Ö\¯.®V±WL¬ØÅåOë¬:ûùâϾ¿ÓW°*F8" ÆtUÓ
Mp!ê!]Umëglýü.èÿ¿éùðûü¾w`?Àãú#¾°Ón ¾ÿH¿ïh9ßOôþÆ~ÎYÀÊ·ª0Ô9¯jNlYsd#
éNh ¥{ºØú7¿Nçnù
<àwì #Æ?ÁÅOЯcj± ©jNSlYSsd#M
éNh*¥ë5õä ¾¸Ö5ÅDQËzAQ=ÐjYM34#-
N()!úü8Ù}Óµ)ÊÒy
ÄP3 `*%ÛëdD7¯Ý¯äãÄgõq§@ôixQj£ôAÍéÓ-ësl¤Ï!Ý }¦t¿'ò×ò}>e"ilpP*råâÂÅ;X·ëvg0-{nÖO0rw¶áz½Û7wðÒá$·ÛkÏxµ~tÀ[|¶ËíÓ{u´P`ß¼G|;7Ñ=ÀÌ={ZÌ®nýBͱh³ªÐ²æ dúãe3FUµa¯A¶®¿ýî,ý®ÅG»]/çPÛ¿½õ[/·c¿¿^â;>lÐA)
-UIF\ÔJqKßÏuq¶t(IüèÌßû¿û cÛÝÄå-MÝçBXY7ö}l$W¾
-¤¯`ÿ¶,¨JÇ
-ëþº}@TʽÞ7g÷ÉâÖ3S¤]nåØ>¸s vµ <yæ*7±Ç@:5Äv×&,²cNv 8¡õRÅECrÊKàQ_;ð·Õ»´^_![!ä)§ûD
+éNᱪÕë7»£·& *Kçm·þdu8¬ÖíU°Ä úhC/AP´\tӯ߷a¼m<ÍC¿&·QùåLÑnk"¼í16{0RNÂ.Û~Ð2s$
-Ñî3q£³îtÛ($¿QQKØà|(½½qb#3ui®Ö?F«V
¬)k
-\8uM0?Æ!ÌÃoâ6ÅÇkÖÙCämÞ¹Ã?às]rÿA
Pó\!ç(mºBk
åc5[ñÆO'ÀøQ¬ªq|àdFá]oV¨¿És]àkÙSî\
ØUG!hï¼5SÄ_·&J)Øý×íþKÌïÖEã°v)cü!f]ªí³åлz]:)lkÍ7áàðYI©ä@e*ªÈáX¸èñ1x\x kRoéMe a§%6¦Á&çáW¼û%z6iÝê¹mêp2øî"u/ã»y¥¬»õ¬ãz?7Ä
÷8S
-ÂdMÍM´"XÂ(§ËW#Zû7287Übè£;²;&]ÂB9P2-GS+ëÄ6àÕyBBþÉ0È^))(دðxÁØKÐè+JÓ@rò3ðj12äÃ<ä!¿Mè(£¸9U|!ÒS
¡ë¢#å
ᡨxaDY¥\¸szïÌãÒ-ø®sæâ0ÌÚÐu{ëÈóy#Lx=wnC9/9ãÙÀËÕîýQ¡ÁëÝÑ=d6[S^msöy¡ôȯCýJ¡.Z02ßýWÜÙîk¹ló_b31×ï1úâ=-ïsüFÅûn¾xÐýÈ/_ÃïÏðûMÐìÓÚ^²Ö
¤t^Ò1Ԥآ¤gÉöÑÍKz@÷Ú^"íSZ^ËòÌTPÅÎË?¿[ÿÙHþCºòOé~\êjiYþ|ÕB°½Zü4ÁHî)Å ©Ç¿°wùRB±{Õ^æÔÔ=زÜçÈFÒ}J÷Kÿ3^}Ì·Vù µ* y½dU\y¸ìzÛÜöyB<PÛ^BÇmá3&ª\ó Æ«õúÅóßÂÛ·ÎkHL '¨¸¥Fµ¾Ì&â3j65ÇuC
í!©vÅ(-#°ÎÃT¶:@ؤéâE]$·µÖ(UTk$g_âDÏT¶u`ð6G´´#\âz^·¾ÚÆιV°Ý(|aÿØ]Kù¾ßÄƹöí©¿Òàÿ IOùfüj2j
-yàóRí¢ 5?R>µðà÷d!.ûÇË5Ìþ§òy×g§´Ü=F)zÄlßåú?öäèºHt`Ç®îyÓÒÑá:½ý๳Gs¯Ù]n»ÇÌH-ÁËC§% #ߥdax)Ð%Ñ|¦K¢¹÷-øÈ^RO6õÌqÊWt8Å_º1Tþ/]
sqS
-åðÖQÜ6þÆ.¼rÿ÷Ï··nH;ïÉ@P/HuþxUê|Òh'ªp6 #«*aº¹~/wsGh«¿ÿÀîõ
Y¦â.1HKQÔBëtN·V2ÝSÜTj>à¨îýnñ@ÆÕêÚk˵ì!±¡öÆ_ùb¼b8
-±lÏÞé.õ æ·íæåÎ
£U <X!áÌZmr±iÅû[hSfºø|Ãd?Bz¢cf%Í!3CõÐ<¬4ðð0ÁµÙÃâC¢p½ñþ>¢û7º²é éÕLè¢Ü
æGzAàZ¹Ë_È*
Ü\_þÜÓ`ÎÞyB
±,¾ûÄòáx÷©wÓw×
4Ì_]Hæ{rñOöP FøíÁ6&m^ß¹;Ç;QQC#ig
GüiÅç|©¾8®ó³×"Ø1ÝÔe²ºÛõc¼Â1kMçòYð*ׯ"ïNjëâ5/Ò!qñ!õ^!{IRé«¢²î¨A¾÷Ã&eßjGx÷o|lK<É ã.ðMO1Á¥M·oxãIÄýx`Æ·è÷¶a5ßMwû¸fÈ\Äø+mãî±XDU'7xF¢OW¦²ql·mý¥Á¹»RË'y> Æðn#ÿdb³u{ée ·þëÚ»ÌÎq4f¢TÕÞ|ïc#
ÏZ)'¬ÄîVS^?¼i£+fçEmIå·Õýv*àp!,ëoñn0 Ò/PKnßPÈ®snãý%½+~E_ôhø~§ç- ³%QAÇh±|è{U3PO'AýÏlý»L9n«ôC§èÃ`$ ôº¡ ¹lÚ³ A³ðÁy¤r, fýao]äÎâe9§ïSa²½êcqtÝÐîiûê°û×ØWbƾ<Êü2ßêØQàkè¦
á#Üv»VK)arÍ4{m½/AÒ÷!²s£[Un¬Gä3=;ô_¢UÓÉóý.¤äÿ3Ã[ã`]³¥È>L,HØUå>*ã㯰À³;D^N8mÙ¤T¿;Îtm˾:|Æëð ÇOAü'B¾0®EJáÝ'XeÖ,wÉla®zÜï<.>óù@ÊG(]Sé·ÜJ¢,×»(cßQ$gH¸Cú÷
ÉZÔ«´RêBªÚæ>sÊìrÛtĺÃöîMÝ7Zòª4ÒMw3÷(H·¶ao4½wvæ¶at)}!ÚlÚÿ¡ªXL÷xrøCí8öNL±2ßÆÉ9ÒÚ\UùoÿC9?S¨b°Slë!9
uÖ<Gïÿêlëendstream
+xÚÝ[moÛÈþ_¡Rîq_Éí·ôz>\ѦÅÁýP\#+>á,Éøòï;³oÜ]KÙgAÈâ˳3ÃyffW
]Ôð.ADå¢i5QJÒÅz÷¦^ܽïßPB!U'#w+ÉjÒ*ÅU,äO×o¾¹lA)Ѿ¯?öº%ÒÍâúæ§å+ºÜWÿ¿wüYoVoäòݳå8<~¾þË7WíBBiõ¢¢-á-µböªîQ|:#FewD9xeÅ'©¿á@7xøï
+4oð:_v§!pø^pP¹ÜVSFö>N¼-Ì¥Üb²ª$WËë_zË<Qàãô|^IµìîÜųfçÌ3ÃÑ~'QÔÁÉø`ÌÛ _+
MÖ(ô´AËß®*Q×íÕ·*<6Ù6cÖÀÕnÜÓí-wÑy$룮ï{+Êx÷Á!åÕ{!'t»O=¿îö+fõ£U9Ü;ôÖg7òÆzóÝu
pÙòEÃ)+xëxë0?FéðU<À¤GÎC±HÅ=ÚüŸÞú |ÛÓHÒ4\gödIP3V4Á²Ô
+ãÜ[ôúnã¼a±! c´ñáÃz>41! 86!ÅÏïÑtùÓQÅHS7P¨¨&¢iÅ·¾s(-okÑZÓ6³#ór@Íh×p¡yª=/3ÆwÿþëRaëÆâb°.hîk!Þ
à}¼Ãø±úcïôÉÓÅ©fÒgè§5<:¥þÌýçk¿j"u;æ=ð
fÏ2èNÜ«ÐTÁA$Ý8Øë`%k@G¡µP×T&aPÁØ*Je+e CÞ¥Je
Åñ%ú
+§ºk÷ýwü/ø`~ga8I¾wþê ßÛvÿè>ïÜp
+Üù{wíg+ôÓü¡½UCM3ãèUò´Í»º¤6òu®wÂÙ©Þó½Mø}kûüzè£Ä¿Ô<5mäªÄÍsPRqëà Õë9(z&øïâL%¤Õ¹©¯mkåÜV$|V.kT¸¹TYë¥v¨y§iÎN°(}
²ÆFËÚ³JÔH)u1ªàý uQmïÿÞq2½¯TêØ¥î;©C¢¨£JLyØ<S%µS¹Þ ¦R½O+Eÿ½VÙ<)ÕZ(>ÃT*1åaóLÔFLåz'Jõ^ §®¾¼ÐZѶ"T-g«¤6b+×;ÁVª÷+Ï««órë% /.I$eàG)/´&ÅÂÃæ¢`o¹Þ Hõ¾Â½0yÖbEhr¦°Æ¨+6ËJQmÏÊ@ï8+ÞWZ¬ð-ªç ø|¶5ás?ñ"PM'³ 3â2S:Ae¢ôE·èß×ZòäËE;Ce*qéaódÔFlæz'èLõ¾âçëÌNÑ¡
á4B8õ°yNKj#Ns½¦zÿ/rôê¼<=gùdßð½7åæ»îÞu(³3|+ÿhÁk<6ÃÍѯõ`P°ë~Ey{ãÞ¢{]QßÆ/÷é 6D Í |»ôi5là¦Æ7ÒÚqOÍ]°÷@çróaû&êP¹k¦½sã;>íðÙv| ݺ&Å®ßáZ&ð¼ÛÛïÍo¦I|ïö ÜÚ:Ë]{¤Û6&q~MºÑõ¢b
iÚbηOÏë?¿3~<ø.)W]cµ*ýñ¤ÒAi÷}hvG{Íú.;±c}coÒÙaÊå·o-üÃÈèMV¦eÛÆ9`\súH¸6·ÞÅy+úÞݦ=¶¤æZ¯}fð²ÄvÄ }4q'i/ÒÚöãwp=jï{û~ÌØ"Æ6Ã½æ$v{©%Và)dÂ]q¤ãmåë|Ì6º-X-ú}ÚÕ*¤ÔzkÝ5ÍÄ}Ψ$óvÁÍ66×ø*0Ò#ÍÅÙgL«©=ÙdPe+ÂÐ
+³-"Ý» aR8gÙâüfÂàÎ"1øCwWó0ch>J5^Ýô»¨äÝ÷a
üMæµæ¡*jÑk6¯ÂÜ¥£)hçz»ûu;V%%<ù:
vôfï÷ñ@*e5üSl8©ÍñÖn°¥^ÕÖkbÂPb§Ö!q8TQOÉ$¡F
"VTTp.:|N2q]ZྩÀqÚ98fNÝX
{4U1ªî7XÙÄôN¼ÏxngêDãÜÍnÇOã`wêa,¸sVøz÷ÆHAÌhhÑ,Þô%Â:yqb>ÝUµA8b¤Ø¯AÀÙËf[¤î î¨Ûæ²wPÝpµZ'±§6åÍ4$p&£¼6µÖ@\-@mCgjeÀWña=³VrôfËÔ¬VTÙ¡0´§yXS\õm¢ÃO)Öë±#z®3&;ãfhiyݤVØ<=Úð¸±A!n6×@x
yî8²x;¹8_7Â
°omg~2Ê&V8
µÂFíΧ¹(·{p\±á¶;·®®T¿É@ɬ6-pºîÉíñ²ouöºO³Iº>ZJ3 N.1×éfJ¼ºIÕªQºÈ° Ý©ÖÂ6À±Ò®ÑÙäàÏ¿}ÊÅ}ZÙ¬#ÏßEÑ?iw4z¼ö=X|á}I;/)Ù½/è_é}bÏÀÿòþ>Ï?ì
÷g1ÞVεìbTÉÓ6ïéÚÈÓ¹Þ O§zñ¶ñ9Þ~½Y1¢©Ô3þP%ÿ{ؼÿKj#ÿçz'üê½ØÞ¬§³ôÂû²hËIä¥
+Z,¾@sÍÒ\²7¢y wæLï
Ú3wfýþN70*.µû._"ÙÃæI.Øë 9Õ{a/ÔåöTÂrÉf¼ÊyL?
´$à$¡WT®.ü¥}ÿoM÷endstream
endobj
-217 0 obj <<
+220 0 obj <<
/Type /Page
-/Contents 218 0 R
-/Resources 216 0 R
+/Contents 221 0 R
+/Resources 219 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 127 0 R
-/Annots [ 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R ]
+/Parent 132 0 R
+/Annots [ 224 0 R 225 0 R 227 0 R 228 0 R 229 0 R ]
>> endobj
-221 0 obj <<
+224 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [194.6375 577.0976 227.0456 587.9369]
+/Rect [444.362 728.5046 476.7701 739.3439]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-222 0 obj <<
+225 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [280.5773 541.2321 312.9854 552.0714]
+/Rect [161.7108 716.5495 197.0281 727.3887]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+227 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [194.6375 343.5236 227.0456 354.3629]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-223 0 obj <<
+228 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [338.3317 541.2321 370.7398 552.0714]
+/Rect [280.5773 307.6581 312.9854 318.4974]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-224 0 obj <<
+229 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [325.0489 413.1524 357.457 425.0128]
+/Rect [338.3317 307.6581 370.7398 318.4974]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-225 0 obj <<
+222 0 obj <<
+/D [220 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+223 0 obj <<
+/D [220 0 R /XYZ 74.4095 753.0247 null]
+>> endobj
+137 0 obj <<
+/D [220 0 R /XYZ 74.4095 414.6815 null]
+>> endobj
+30 0 obj <<
+/D [220 0 R /XYZ 74.4095 414.6815 null]
+>> endobj
+226 0 obj <<
+/D [220 0 R /XYZ 74.4095 379.9989 null]
+>> endobj
+219 0 obj <<
+/Font << /F52 159 0 R /F8 107 0 R /F14 215 0 R /F57 166 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+232 0 obj <<
+/Length 2926
+/Filter /FlateDecode
+>>
+stream
+xÚíksܶñ»Å}<µ>xdúÉõkܦWm§g2ôRTûîÔ£$[ùõÝ],@O©I£¾ÆCH,vØ'XåðO¬¬Ît^-«¬(XmwOòÕô½y"Fë"Ó¦°ð2Ò»12ÏÊ¢«Mä·§O½.WUV²X¯ O¥W¶-*»:=ûv}úÃX7ms²Ñ¢\×G|ö]_Èr}ïWð\³?ÁÿøÜ9h¶Í¾±wß[l_à õ5?ìÜA|&ªXÙ.Ö/½ø5¼áó¾(d89ÜðÐiñÅqÂÄg
to¨ÓûÜä^¬¡)xǧF|w®ÁZccEdÄðÉw§¿[mÎ**h¬2FÒ:R}åV6_×{Ç*TX9zé°Á«^ó:!ø6Z« {pÍ÷¹Ð<ÉqDK3Â!·'ëÄl2ë·{ÙW§A§,²\TÏ*+
6Nñ°ëxÁ0ï"ðxÀ@hqí®¼¦ùü°"·=~z ¸ C.HnÈ_Õ6êð@£êÇÂGØ&cké,eR^©±D$¼!YI¯ëQÊ}ûìÚ}n ðð¤¬×C8Ò0;Õã¯l:ÊÈ ¼g{k·7ì®`ÎÎ×ð>{ml´ØÍJ«%Ñ¿¨çðòï÷Üþ+<ßÀó
+_9,±ÄÉl^ FB³¼ ÀE¾
+ivdûeòµxÉ
+c>ðº2
+\Æ·åK÷Kba
+eî9ÌË;7?8âÛÚ9FÆqî~kvEieºêg^.Y| ü|ÞUêbó
+VYiµ²BP«k
à~`&¤Èéü_àyûfÀCa²<2å¡g¡hraa
+P1R{G^\ú[+ïbK/^ÂØË¢bPTë[2ÍKDFFÇ0L"AͼuËÈ\(:àå?kR mcí}ê4¦R6uPÌhX0t¥Áobø8Hïé´
ø"7=nú*á¡æÒdÒ)ÓÁS±õøx©xêÈvÃÞÒý´áâ»>ïI/÷®aÝ"$ä¯ØLAÐAï(EIUD>ð-<¿G}&s¥°1:¹
+þâÃ
ͪ3>î5Wõ~ñúù¡`ûz¬Oäð5 ÊL¹[Ôç±{ë[âLu<"Lºò2¶]²·w/>"
+úðÂ
ÞºÐyÖ¡ð|pÖé ~¦×¥
H$rø^;°êy4=ìöÐê2ö ´Ö ø̧±5ãf×âûë
,-fäÙCX4Ö§ïê)
0ì2]³£xzçÆ
,Ðt~ÆL§ =>ÝÏ]x::gTÆ4@þrÚ-©8%!¶1&OØÜÚk7¹}7Ê'XFÖ.Ì»rH
+Vwrj\_¥e:ÛrF¶ØË{Û¥ÈÖ÷j+~ag#×bWûÜ#ðAÍæ_ïkgཾËË>íÔ×»~âOç>]¼$·åFÆ'K»@d&µ«B at jl!OY ¾á¤2Mr®ßÉLaÊÀÁPóÄ
¬2c«"¥>Èuæ»øî$㢱ßq:##¿¡+( ¿=Oñ4ÊÛõ9v;·àCU:rº2¹à'UÔ+v²¿Ë
[@¬M-2±YyÿÀJëRSsìB$
ÎfA_D^êìѲJ.é` ßDðC5è#]ÐA Ú¥)=@³¤¥,aûR¨t_KMýÞ½ú$kW¦>O#?ø¸mËéWbå]ôãn¨>ãqQøñCÏwÞªu28·1:UQ¦êÒ6»ÎkÕI&¯«;\4éúë²ñæ¥
%gmK$»mzP;ÑmÉe>{Å(ÜIÛnõ3Oò äõ?L 5 H7àNyË£? #ævWá4m$öýàey%¬>tBóÖåèÓ-SNguÍè_Dg~°ÔZQú¥e?ýÒáè !@ÈϤeÝÆÎÿà{Èø ]ÏdZMd~ÓóqQ¢7búÑSõYÖá bïÛ¯À=Cæ1
в¼×ßY´{o¡þSEPlù|é˼qßç8R¦ËüLzÚgt¤~ta×í¡ÒÙô6¥Ð?tè]Ê逸3^wÀ@Á|ìç/Í1sínDÕg´5}tßO+~±÷q6eÑ®ñ8Dä-¢p5i#tRôU?(øÃzºöx#A²
+võãgõ@ª}ªÊ(ð@?BOÑDè8Ò ¿Ï
R00jßMÒMv±¸Q
+ªG×ä a©îy¶#È;xÞÀóxþÄàæíñ+>iúѽãç9£î(ÏSö;êqª0á>ÑÑx?f1<Ï4fAVÔ¬<ز¬æÈF²êÓUJ7ÕW,Yï_TÒ¬Òä
+jVx|ä
g*gÍWy¦íøåÏ`¾1ú`*1Ço¤ºã*Ñ£ûHæ+¢ùþÑrÙøµÖQÚ.H:´[ôÙHÒ}ºNéþ|Æÿàõ~,×qIÃîÌTzÁÍÇPsö`Ë#IºOwBÒ)Ý_À¦_ÿÚµYa´\v5'm¶,í9²´ût'¤Òý/·ë×÷³íù´ÀMY«UV£Qª ¶¨TsüFJ5 ;®T=º¨Gu=²)_m4áæ*/ÕÊDPs*ãÁUfl¤2}º*ÒýwñC-;YTêUQ% æÄ-+ÉÙHIút'$¥û©ÉÿoÉE[¹°w¡æÔÆ-«ÍÙHmút'Ô&¥ûßòO*üCNMºâ¿ªH«b¢:«xöxF½oð¹2³çínW(öxÅaW«U(3#¦´îIÓÑoW6!±@ããk 5r`?}0qCjªTýSz5Y6Zû2 ÇjËÍõÕÍõCëÛ¡±*¦LÂWrîy6;Ê ;À¯s`®4<pxÙA÷X ¡ëùKRbC_¼D±=®Ð¥§«Bq\¸¯Àp÷pÕÕâ÷Çô"OF·Ñm%).õ©[§Ö Öäd¥¾r.ǹÀ¯2Mu*TÁ¿,Ç
+éûH3£¨á|
Èî²³êð8ï~ÕpTFÜen ²!
+eqn=ú>0ñÚï\¹jè¨ËC«]|§;Rà⯶Ë&VâÅíÞ+ÿØ*©?*5ÝTJ\íaÏï×*9áþÊÞM1¼Ï»? øäoÑ/¼Õ·Ã ±2rZ¶òê{x!¬yü¨`ÿ¨Ðl®ýï§ëåî²üÌݨN족tW\>x½©t¦Æ
+Å0AðùKòW±xç±Åú[ß¹ºçÏ9b{Ëyà5ã?ÇHX¾t1}êî^P?ú-Ö¿ÒÔ´iöçë¸0^Ô\ë¹5R!íjµëöº[ѧÈ9õ"©+;
`aÏ}î¬{R¿ªÒH;~âa6а§2ÐVL¸¦¤6üIÕ½ MèÄÇendstream
+endobj
+231 0 obj <<
+/Type /Page
+/Contents 232 0 R
+/Resources 230 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 241 0 R
+/Annots [ 234 0 R 235 0 R 236 0 R 238 0 R 239 0 R ]
+>> endobj
+234 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [112.7078 377.8448 141.8683 388.6841]
+/Rect [325.0489 746.3276 357.457 758.1881]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+235 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [136.838 711.0201 165.9985 721.8593]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-226 0 obj <<
+236 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [73.4132 365.8897 105.8213 376.7289]
+/Rect [90.5486 699.0649 122.9567 709.9041]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-219 0 obj <<
-/D [217 0 R /XYZ 74.4095 789.6651 null]
+238 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [91.2448 616.9482 126.5621 627.7874]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-132 0 obj <<
-/D [217 0 R /XYZ 74.4095 648.2554 null]
+239 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [191.1121 604.993 226.4294 615.8323]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-30 0 obj <<
-/D [217 0 R /XYZ 74.4095 648.2554 null]
+233 0 obj <<
+/D [231 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-220 0 obj <<
-/D [217 0 R /XYZ 74.4095 613.5729 null]
+138 0 obj <<
+/D [231 0 R /XYZ 74.4095 700.0612 null]
>> endobj
-133 0 obj <<
-/D [217 0 R /XYZ 74.4095 366.8859 null]
->> endobj
34 0 obj <<
-/D [217 0 R /XYZ 74.4095 366.8859 null]
+/D [231 0 R /XYZ 74.4095 700.0612 null]
>> endobj
-227 0 obj <<
-/D [217 0 R /XYZ 74.4095 332.2034 null]
+237 0 obj <<
+/D [231 0 R /XYZ 74.4095 665.3787 null]
>> endobj
-134 0 obj <<
-/D [217 0 R /XYZ 74.4095 180.8788 null]
+139 0 obj <<
+/D [231 0 R /XYZ 74.4095 267.2595 null]
>> endobj
38 0 obj <<
-/D [217 0 R /XYZ 74.4095 180.8788 null]
+/D [231 0 R /XYZ 74.4095 267.2595 null]
>> endobj
-216 0 obj <<
-/Font << /F14 209 0 R /F57 160 0 R /F8 103 0 R /F52 153 0 R >>
+240 0 obj <<
+/D [231 0 R /XYZ 74.4095 232.577 null]
+>> endobj
+230 0 obj <<
+/Font << /F8 107 0 R /F57 166 0 R /F52 159 0 R /F14 215 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-230 0 obj <<
-/Length 4186
+244 0 obj <<
+/Length 3995
/Filter /FlateDecode
>>
stream
-xÚ½;k#·ßý+ôåM²â6ßlß'{ÏvÄ'0CУÑÎ2m$mÖ ÿýªÈ"V·²vŬúQ,UÅz5_uð¯¬bªëõʺ£ùj»ÿ¤[=À»¯>á£aJ7o7ZtÌ#VÉç·¼üRç¬×ð{ûzËpfMoW·÷ÿ»þî¯ÏovÇ´zýê°ßÃõíäëðú-ÜóõîÞlt×ïüCøÿéæÿn÷òK·êYoÁºÕ;&÷S|{8ÃÐÝÍFX·ÆË7ð7ñÞ®_ýn~®Ï7ÂÅ
±¶æ3Çy3 滤"üM!$3Zr~ S âǧw~Â8éáAzïÃ{ö\ÒNKyKô\AÚúäÛ´[R*Æ;{!?ÎÅ7Çùïlo#ø&÷[¯³AËýì¯7Ú¬GÏà÷]ñ·7Âæ¼Þo=*z¡¯®D0AÍÓ©f\YUzÚmÏÄÉn»|zý-îËþûAÏÓ»°?xBGÄtǬ´0yõ tÃ1¬UJ¹ÂÏ)l_?<ïî¢Ìù=Åúý"(Ì6oIn[ å ºwüJ
ë{Q(âcÇ@RI'ý±ÓéÂxjÝy=ß}Øi}úäàö0»\ßúµy¦ù©ýÕ§µ8$¬ÖSÒÀauBËÖªWÄÕ¤d(±*ô¼g>NìùÚ?/¤µ¸ ?[>г½è-±ªÜ¾
×B®¿
Kµÿ!lÃßwô÷û,
-Ð9 äí~nü¥Y$. Ýï£(=¯Y{Þz»óäùd=ð²¶Q7á¥-(×Èßzá¤(÷Ä®íߺõ¶xCkI
-<<§ñÁÆíÓDß1»(ïö)~@ØúNDéööÃsPd®X¯dÒcTÂOè±í@½4W*éåö@(õïÆý°%ÖàÝî'ANÉ ]z£{f;ØèúÅe©OPÿ^©ÿü}
øüögKý9pZ)ÅÜýw]¾mø²%±ñcÈ¥clÔ)cÃæÝ×[&4ìY/ÍÊH`¥µrá Mð|@sµhq¥_?Ëß:Áâ!´ÍÙ*¹`sº¢±5OÈ
S®¦¬0@Õ{$ÆÛö?´3Ïtø!CïÒBj_ S¬]-Oü<å-ÚÄÓÍ÷Ñ{Ù°\ÁVeÁ¹°Üγ5A-g-øÊÆÄíoÈ!Ñö¯åmê ½ðÂÕ}³ÅUx]ðW&·ÃK?#ç¢ðáÁ³90ï½oû·O`üÜö)q£´
ñÞÿÿó'Äh:ñÒnMAæû§ðN#Äü>Ö»!<0X«Û¨æx§¼7x7Ñ·Ç¡s¾=¾ÞÑÃ~>èvGȧÐ=rÜ÷(ò1ù]¹ÅÁKÝm=êSãÿsíå+m Vãz) Hð|@#¦-Z¤åmî3¾ {Tӣп$%=²$¨*bÆUR1m ¹Ì¹Þ]Í¿@BÖG Y,QÓÑ[&¸ÒPó³®Ã¸FT¡ï×ï$Gç(¨¯<»õ«áQBÈJø÷ÉóA ¯ßDËsHâ=¾èkÕÄ9eÃð@öëÏAj[ÛwLéÎ\» ~-Ú+Å9åBfwsÌÌRÝ>-3¦33ÒÜK<%ì:ϾÉáù¤K¢'C×sUQQrKØÎõåìWyãcÔ¼p
-DÉÝNq\ÉÌàz¸Ý_È òYò iÐèwo?éIÊ1@ѧ©'°Yø(s¢¢æç[4hµÁ£@sÔô1órºYh nÔ?'ÎQ\,.÷%õëàãODR`ðÕ¯áòåÔQW÷ôû:æ¿õw>Ы,7
¯h ÇÿÏxÌb?¯ÿQ®ìODÂ!£h¢üZ¢¬ç]áo³²RÿBî¼NalX¼â²
k^,®ÿ¹
-·Ø³õçY´ÛÜ:¦' µ\¢þe¶¹ZÜ¥R^2Þ¥É(éGkúñú£¸¬ß êÊ\§=~.$^ÁßQ*íZÃÚó Z~µ\§ KkùèÇõ|æ%ùù¥ðåR.)Ã/»/פ;¿UÊ<ä*´*ǦPÝSÔ¨&£6|¥Ú
-Ç8°"D:ÐázH1ø×á÷2ÔPÅ"ÀuZÔpW&:/&æ1¬ëºè½\'ßíJ°1Bct+ÜèèVsó¬¥tZÛåY¦ÄT¶wëßÿÛ©)×?x¡5X_ÆyiGÛÂqäQ"pàÎîw)=! xŧÃÆû¨^0IÒý¾èrõ·ib(vÏùJ:FÜñ¥*ÂoòmÕ ½6âx@ÜQÒSÇPjYåÖD+JÁ»Ì©Ia¶ýµQV1ÊJ@×FY%£¬ÙÉ[d8»·µpàëõð6³!;Å# ¢À¸åiJiÎÃhm<X+ð ;
-<@¼¦2PR¶cB ]· ~%-ZdÉ@ÁXøª!Ãh&ÁáÝ´0µé ÅÔ±yð*îÆp]jTZJØV¯eM§¯E{¥J+#æÍVÕ)ñµ@
±Ìi
-*²¬-qèuÊÛLHí%¨RkC(µp|I]<òC2õ>¼IÖûDçûtØ.ÖOyÞíïtîëTÄL3G¼.HAXÒá@̨Ã'ò²Ê
Ôk$äUÒeÂqN)ÅÛd<oÍ'<k¥ù{>Ö¥¹-
-wl8ù+ç=#¥¦p^1^ûÜ°^qU¥jBþþ ?ÉfêGGõg'ýßg%àb
ö¢ü §" =ÓŶGP>×˲°=ÓÎTubsÚç,ø=¥'ó©\õLpm|KêZÊGøM>`"1_£½¶< Ë3ú°PT8°/NóõÛ`s×2"ÁÏТ]8í
Aí¤g@Z]u`9.g¯-Q?©¾ÏÓ¤þãÊF,ø#²H/uHñ7¶få\o£ë;<Öes\(p÷Vò8¦5íWcÞu"×:ña«W=Nç,û.+ÿáØ<[õ¥=R{BxµðüRÑ¡µêMìØÊrHy½[REW1©L¬èJ`0!xöiÆØö&ò9ãq¸lôäÏáÇSx×Ï÷¡òûÃØÃñÕ¥TÀ㻳K.IßäðK$ hÞWãõ¹/¨ÍIcß(&÷.¶y*ÞÃ[ÚÕÇ\Âùëû;ÕDÓ©:WÈ£ð ´ Ç¬<ß{\¯¿D! 0AÑQ¸_ ¬ò^4Mlį^¦ÖYÊÞeå
-òRÒâP>öxtñh7RéÊ{ð-JW&Mñ6S+tTá% d êƾϩű¶Àpº÷άÖ`<
[:|÷¸F:/·¢ïײ¯¨Oµ07¸¿º7º¼ð÷ zö'åÙåî¤!càºêk¹àçIoÑ^tà5g`§BÁ!zëJ*Z
Çà´¡cV«%+Á/P× ½G}ϸbGj
-ÝOÌUÅ£§x?PF@¬ÝiÙ¶\6DdûÈJ´Ì!Gú\|ÿ m0
#pôgdh÷ =¹9Vo IÎöoçÒÁjñ+pPIæz»TOð|ÀÂÖh¯ÜQ)4Ó¸:7¡æ©°WÜõ%V:ró4rzæñó^Ñ#cÙ{ãã¹s¶v4A9øUøFÇÌZ´)¹pýùcè:^N(':àCðY»Î2
ÿ÷3+±EEøM>`"~©Ñ.Øg¢¤®è¨5?»-úröShWÓµ©Tq¢p)ɵ°wº ~~
-Úk5I£ðë~ j
-/{]Qû)èÉô*1ȳ¶ìùÄ'ÛCèÛTî²F`°w¼¢Û3駲ñ»ÀÀNù]6x^öºkS\+°ó(kXs͹ ~he¾A»w°ÖÉÚÅP³÷À!ÓÙröZÈ=ßâÁÌRs÷¨Ï"I~è&N§ñyÖÝï#(âmE\Gì½Ñ ~~©-Ú
´·ëü7_³l@SרpæïTÆæYï¥CƸ#Êe,¿9ãì@/;Íz¾Å0``>©ªg²ôÙ÷RÏÓUMS>ÖNeµ¶ÃíÌWzÜqÖÁð ´/ ¿ÉL 5Ú
°ÀTõñA@óSà¸éꩧ'n!öE>Á´c*öÉÑíá!&âÿFX/i9ã½²×2;Áϯ¸E»`¹ð;
#æÙ ægW/röÖróò#Å~ÿ;ãaI)rúDY·ï¨sÓ ïLmîÕUO1>I²j*ãøO\Uùý>Ølð×ÄÊ<>ªÚáô"»¬
-ß|Ó1m@¨±¥³³f±´á7ùodj´"!Ñ×vWtÔV6B-Ì®fÉe9{«.Ä«âcc3ééÛ©¼íçxÝVt±!°àZãê¤ù©]â±J2y`JEêÛ
-ÓYå`bç]°~hmköJ×KÜÔä4F6 ÍÓ :ÃtgDIÃG''[á£]U¦£M*yÏ&}K¬ÝT©³ïëÝf¡qeÊ.ä¾AÖëýnHMÏe[¬ÂR°®ÇºöMör§Ì~üX>Õbsd-|Å<¤c)Ko"lyüS¬â;hBmÔ5¨YÞ¿7ùaêׯÃèûbý°Å¶²'Y×q»â¦cp/Wö~¨ìÕh¯®ìÁÙÿUô4=Z Âf±Kµ ¢Hòä5ü{uÊMd¢P×'?¾ûÒ÷b.W@íüøÜÅåܾ¢+ko_OTÞ>Òwy©ÝÒ_î :oÇ¿¯°ö
!}Íu¨àß3&Ô¨Çs ²Úá.¹ÕDÃØ÷]Yy¿è¯.mCPùIE§h:§¬HÍöâ@óý?Hbendstream
+xÚ½ksܶñ»
¾tzj|0Þäã&i:©ãiñdÒLæ|:ÉètêQvúß»G2±ñPGÅb±ofgþ±3#¤NëÖm÷èÙ5´}ñE)5Jxi]çæ57Ä:%Ç #+q
DiÏÖF3b´3õéÅ£'+s=5×gWgÎÁ4 ..¿_ýéàú®{¸vpíáÚÄçQEáç ×
+¯ØùZq/àú®p}×÷p=
ëy|ÿCêÄVÿpñ÷'Û¬µ¿
ùÃ$ÎõåÕùZpdq»:¼Á½:F"îBÛ¿
öO ¼³@¶oên"¾Á|qß¾ÆýlË^W?[mÛNc b¿Ã×aHxÙÓlqüñÝÄßë ¾ ÷B¯ÕLvÇ gÐÍ1bÜ{ÞX¹z%>a³'óǼëáÀ[IÞ®#N)îaàÇñ4¼Cs'VoøÀ.|W
ð$çí>°ÕÏØê¹Û%þy«÷ëæyCG¤µ jsïEÔ¿¾<ç®vظÈÑÛþ¥¿J/Ä2ÆAF ¼ËÔ]EW8P]'bGÊá8:Ëí¦¤'6loq
+]GhA¸¡*ó¢dLg8ÅÁb7^àù(:»ÑiXMeì¸)&[¡ýÊl:ìÙDÃ1?±IM8«À&?¿« pJ<$ÈϲL1aÉ·¦ÆêÀȯq)_{Å2jõì°ß{ûslßîvÜ~Æ
éso³¢0%Â!§µAÕ2fõì#xø(Ü?{uÍ¢;ÂhÇP]ä׫¸xx«`8)1á=нæ<cíËÐPE{Êmäy÷Ð@zôÙEvHà£À{m8aÊFMÇëóÏÂeøuÙÁ;°JhqÆO>Wzµ¹ñÜ¿7þ`)3»÷Þlt-ÉîÝPܺê4M¦ä0idMf·«Å:µz³á°gj°sAß·Tà¢ÄÓXðͱWMø鲧¹íÛ^%¡óþ8èw7=»°QÈ(¸#¶ ¢å,[(£°pÎñZF¿·ÉkI5(F¨Lã©ÝtñÉ+2üîÃ:ûûî ° ·q²[ÕEïù£»[aHQ¢:°ï¿="+QÈ2T2¬wÑìí£Úâ~Ôº>Z«¡kÄpíyѾØ>
ëëx}Õ%ʱ޲ím¥[àµ
ÑÚÎ[Ì¿æo[C4MeA¸E~½Oïq í[íj[µÄ-Ê,Aîrÿ`äöyHß1t»Lå&ÀÞ¦Î×i ðLkG°Ù
+»b·-¸ÕÓXÐcÛïb08æ#½ÜÞFÐx±%@ì7ÛÈ|Ú½òáýz
ÐI©WËHý>R_¢8-õêúoáú2f'ï-õ1D{1éãFx¢å²ac%6ÄÆ÷É"بÚAY¹d\Á9¡Ï¡"Ø9Gá×e¢õ)Ù]dù¨Î@ðÓ&!ñ¬qBU
èd¨iÊ@n´-eq ªÞ|~
+/âÊÜEç}'ÒFTÊ©[ÊÓ?MùmæéúE]¶QX°U±3ÓlÍP3ĵ¶5q{>¼¦ù¶'FZÞI*0%µ1k
ûz³ðºàï~*ÓáÑ(~ð}{Øßßñ;·Ó ÀcâZ*¼¦³ÁI)3 ÝÛïwáHBXàaÂëaÎï¡[®Å1núá6><ÝcשèÛ7©rsØçZÈv|/#˲Ìø¨ò& t´t°õ¨»AÀ Z6RB
Ñ¡¾.àR:@Üãë°@-1EGEL£)h)6ZV$Ûf)½µÎ.eA¿EêSÏ"hpp&ÕôÔÐäÐÚµ¼zÊ?«+EÁ½ACN³«gëzDÓà/sÔæ#Ö9Þ¿Næ0(dEºop:âÃ@¸Õ§\ª¬£D*ª®_dâ éBV«5\Ç4IB
+ó $&Ô(a'Ð+t |]ÂÆ aðÔ1ÙPÑÊp à?µ®}Qô}Óg©¹Ü1øÜuÝ.p¶°¯n÷ïqQÅEc§>èlªn0{bòÜE9Iµðma@ ìT*¸ù¨î,gqþÀ«@sRò¾ÎÒÌ$¤¶DIåÞ#(QÎ$2N÷ õÓ¿C_Fõþ·OÆ<[l\Æß«Ðoÿ¾é¿:í(lNÅÒM|ýIx=Ñã¦Èu®}¶ú_=³# "mº-
+ؤ)rA£¢åÐó"åU¨ß;W9m
&F¥°æñìüïq;½YWÿÃø·Íc|{g!lñ\*¨Rýå2(ñÐ
+qÊþù r¢P ´#rþê]¢8Þê
+)_5gpý5Vξ´¯âîçD=¡Ä0e07Ï#ý_ÇÛªÇôTøï9Sºða×eIus±r
¥Á C}½Ò7T1GCT£96ÉáÇ8"Döçp¿©(ø¿ÑÆÅm)ÁsjþË´hÀ]Å §2í<GJóná2ù®¡ ÃæsÕ~É©½MÐSKâpzH¹T@)«¿
ÿìúÃJ¥1tB"
Ö×'íý®gÚûÉ÷%Wõìâ9ljD@0o¥ã0»°ðþá&ou(ù¹/VÐRc½ÄÙ5D;å?°õÏå~]væO´K(fqïÐ4ô´T¦b,2ç@¢áµàæTÊ Ò¥IV 2ÉÊ@K¬IÖäàCd8z85$
J7zÑÞV't¤`ܪݡki(ÞÚx°¡Àl/ð ñ&Ê°c2غ¶s°eËá§Y2D,ù(x»_ÈÐHS'#ÍÁy¬NÛÀk¯âÞjl'a*-,«RKYá§é¢]¨ÒR¢Ø`©Ú
+x¡BbäGí¹¬àzB>Êä!ª½ Úaº¤Üg_ÂEJ§¡%[ï.ú÷ñ¬¯N{y6ÈÚ=Þñª×?òöw fÌͤãe²¥Ïép ¦×á.ÆKÅF
´sÈËH´+0
Kïl¸·Ü¡¯6TëY¿
ÍLµOÈü$ɬ6þpôï6`8ÉdS© 9T¸~E¤9ÑRº> §²zÚùZÿ¾Øñæh¯v «òÙòl¢ßg|6÷^ ðµZÔÉJds^ç"÷Î4Gìêú»#)}Æ5îÞ¥ñt)<Á¯Ë#µøíÒý 7ô´Î.AÍPaÁ¾X`QEÅíZ
+°ÆÚ¥ÈðÓ$ÑÎx{. at P©ÐÓÈP3£K
+Ó¨zôÖ¹QýàP¶8cøëÊ*GKHOèoÒo:UfrΤзwxêÃpa?ÛѤÁt ¦ý¹/»ZG2><ÙRâ¾)6ûÒÉÇ+£¥=Æã|áÕþÚó·©DT¯Ó¢Tn¯ãɪ¼Á°ÔiWpb%#ÎtÊMékÇãæ°Å7ßl}Ñÿ»ð
+ïï.ÃFï7/ñÈƧJQÌ9bË2øº?¹C¦c5F¨
9IPÓc3<& AªÁ}Ç:¥
èá>®êM)
+Áÿúórä©;µç#Ì íÅ!HƱØ4Åï£
+¦VcÌè h^¸#¬ô®ú 9¼xö$eáÃb·"ÆHiÔâ°ýÐähµµ¤ýk!UÏ]ûR:q_¨@²²ÎOõ ¾ïãÆÖwwV÷0ÄAÜ0ç"øºZâé´ÜrG SÂ5D´^ AÍ
á¯rZÕWñ0c ýÙbyvy£;Gc ®j)×2ü4éC´KjÁóëd`¦BÃàÎØ¡À·"8bàNQz±deøêhòÌ3Ló(AMS¡ 7ÓL6<ºMü:`8äÚT5Ñë('Ñ"X l?âä?Ø'ï0 *£÷ápO(ìyÈ]ª±z¨u¶tº²ø8U¨©"¿NaF'ôÜA¿.;(lvá
+®âàjzÚÚD¦BÀZ1ëj"F¬tâf×s3ÇÖGE7ÑíÚçs¡ÿe^®¸¢Ê ÀÏÂϬè^ Æ8UûE<ñ eð¢F9rp¹J¡;$m2¯àÏÓ"0&沨¿.;ä/-Ú¹äOH¡:Z· ¦Gç\¸«GïÂá´Í1ðb|ï¢e*U,¯BäX;*r0ÃOÏav©&)~å¦9¡f¨Ð øõhEE§`$ãdñE¥eÍO|³=ðý)WÅ9`ðî]±=¾ÙÆï9Q ²»ÀÀÅ]&D^öKLIð(kª4ù¿.;e~v®<na
m fFwÀ!MM=z+äoÉ1!³6ùX¨Düpx?(Ìï³Ø@ïP!tÄOÙ2:ÃOOuv¦ìm)n¬L³9ÍÝ¢Â×#zôyGËñïÎn¢äªÆÈ·
+7FÒÜ+X
¯@¢tRW|u7¾«É`(Íú½S@éìð8ñU³Pèy:²fVøºq
Òa.dMBë:"Ìä¸i3îXÙÄÎd½ÈÁ*M¦?v*âÇÜÛÃu*Áÿ'b=ýñ£a9i²9ONwtÆ`á×
+:L2:M-)þ·kC°tÛ(ê½ÈûßQÕXAÇ(3zr°¯â@ãñ4<cB²íÉsµ#ãý¤û¡endstream
endobj
-229 0 obj <<
+243 0 obj <<
/Type /Page
-/Contents 230 0 R
-/Resources 228 0 R
+/Contents 244 0 R
+/Resources 242 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 262 0 R
-/Annots [ 233 0 R 234 0 R 235 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R ]
+/Parent 241 0 R
+/Annots [ 247 0 R 248 0 R 249 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R ]
>> endobj
-233 0 obj <<
+247 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [333.1098 740.4598 423.3722 751.299]
+/Rect [333.1098 669.2294 423.3722 680.0687]
/Subtype /Link
/A << /S /GoTo /D (available-typemaps) >>
>> endobj
-234 0 obj <<
+248 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [253.4973 636.8483 313.0848 647.6876]
+/Rect [253.4973 567.1834 313.0848 578.0227]
/Subtype /Link
/A << /S /GoTo /D (input-arrays) >>
>> endobj
-235 0 obj <<
+249 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [403.0247 636.8483 474.368 647.6876]
+/Rect [403.0247 567.1834 474.368 578.0227]
/Subtype /Link
/A << /S /GoTo /D (in-place-arrays) >>
>> endobj
-237 0 obj <<
+251 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [110.0908 566.6868 142.4989 577.526]
+/Rect [110.0908 497.106 142.4989 507.9453]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-238 0 obj <<
+252 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [162.8935 566.6868 198.2108 577.526]
+/Rect [162.8935 497.106 198.2108 507.9453]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-239 0 obj <<
+253 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [489.4544 566.6868 521.8625 577.526]
+/Rect [489.4544 497.106 521.8625 507.9453]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-240 0 obj <<
+254 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [92.7704 554.1736 128.0877 566.0341]
+/Rect [92.7704 484.5929 128.0877 496.4534]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-241 0 obj <<
+255 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [486.6948 378.8312 519.1029 390.6917]
+/Rect [486.6948 310.8159 519.1029 322.6764]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-242 0 obj <<
+256 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [92.7704 366.876 128.0877 378.7365]
+/Rect [92.7704 298.8607 128.0877 310.7212]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-243 0 obj <<
+257 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [337.2248 366.876 366.3852 378.7365]
+/Rect [337.2248 298.8607 366.3852 310.7212]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-244 0 obj <<
+258 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [432.0992 366.876 464.5073 378.7365]
+/Rect [432.0992 298.8607 464.5073 310.7212]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-245 0 obj <<
+259 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [148.2193 331.0105 180.6274 342.871]
+/Rect [148.2193 262.9952 180.6274 274.8557]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-246 0 obj <<
+260 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [202.5826 331.0105 237.8998 342.871]
+/Rect [202.5826 262.9952 237.8998 274.8557]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-248 0 obj <<
+262 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [73.4132 264.321 102.5736 276.1815]
+/Rect [73.4132 196.3899 102.5736 208.2504]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-249 0 obj <<
+263 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [261.9898 252.9238 291.1502 263.7631]
+/Rect [261.9898 184.9927 291.1502 195.8319]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-250 0 obj <<
+264 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [377.4433 252.9238 409.8514 263.7631]
+/Rect [377.4433 184.9927 409.8514 195.8319]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-251 0 obj <<
+265 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [467.7603 252.9238 500.1684 263.7631]
+/Rect [467.7603 184.9927 500.1684 195.8319]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-252 0 obj <<
+266 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [294.1149 240.9687 326.523 251.8079]
+/Rect [294.1149 173.0375 326.523 183.8767]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-253 0 obj <<
+267 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [186.5224 229.0135 221.8397 239.8527]
+/Rect [186.5224 161.0823 221.8397 171.9216]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-254 0 obj <<
+268 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [326.7741 229.0135 359.1822 239.8527]
+/Rect [326.7741 161.0823 359.1822 171.9216]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-255 0 obj <<
+269 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [153.8573 216.5003 189.1745 228.3608]
+/Rect [153.8573 148.5692 189.1745 160.4297]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-256 0 obj <<
+270 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [351.9418 216.5003 381.1023 228.3608]
+/Rect [351.9418 148.5692 381.1023 160.4297]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-257 0 obj <<
+271 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [180.0698 205.1031 209.2302 215.9424]
+/Rect [180.0698 137.172 209.2302 148.0112]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-258 0 obj <<
+272 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [370.1984 205.1031 405.5157 215.9424]
+/Rect [370.1984 137.172 405.5157 148.0112]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-259 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [309.5671 192.59 344.8844 204.4505]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+245 0 obj <<
+/D [243 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-260 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [171.7521 181.1928 204.1602 192.032]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+140 0 obj <<
+/D [243 0 R /XYZ 74.4095 716.1138 null]
>> endobj
-261 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [142.0054 157.2825 174.4135 168.1217]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+42 0 obj <<
+/D [243 0 R /XYZ 74.4095 716.1138 null]
>> endobj
-231 0 obj <<
-/D [229 0 R /XYZ 74.4095 789.6651 null]
+246 0 obj <<
+/D [243 0 R /XYZ 74.4095 681.7944 null]
>> endobj
-232 0 obj <<
-/D [229 0 R /XYZ 74.4095 753.0247 null]
+141 0 obj <<
+/D [243 0 R /XYZ 74.4095 556.2245 null]
>> endobj
-135 0 obj <<
-/D [229 0 R /XYZ 74.4095 625.8894 null]
+46 0 obj <<
+/D [243 0 R /XYZ 74.4095 556.2245 null]
>> endobj
-42 0 obj <<
-/D [229 0 R /XYZ 74.4095 625.8894 null]
+250 0 obj <<
+/D [243 0 R /XYZ 74.4095 521.6262 null]
>> endobj
-236 0 obj <<
-/D [229 0 R /XYZ 74.4095 591.2069 null]
+142 0 obj <<
+/D [243 0 R /XYZ 74.4095 252.0363 null]
>> endobj
-136 0 obj <<
-/D [229 0 R /XYZ 74.4095 320.0516 null]
+50 0 obj <<
+/D [243 0 R /XYZ 74.4095 252.0363 null]
>> endobj
-46 0 obj <<
-/D [229 0 R /XYZ 74.4095 320.0516 null]
+261 0 obj <<
+/D [243 0 R /XYZ 74.4095 209.049 null]
>> endobj
-247 0 obj <<
-/D [229 0 R /XYZ 74.4095 276.9801 null]
->> endobj
-228 0 obj <<
-/Font << /F52 153 0 R /F8 103 0 R /F57 160 0 R >>
+242 0 obj <<
+/Font << /F57 166 0 R /F8 107 0 R /F52 159 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-265 0 obj <<
-/Length 4122
+275 0 obj <<
+/Length 4360
/Filter /FlateDecode
>>
stream
-xÚÅÙr#·ñ]_ÁÊÁ
ä%8>˱¬R~°]..ÅÕÊH¼^}ºq
!²Uq¹´Î4=} ébÿèB"+ÚX¢¤õýÙ°¸gÑ #"B*
_&.%Q-9\ýå#³°Ä*¦WoðK.ZQ¢Õ«ëoÎWÛz~}±J?Âå[øÛø¯«=\ß<Á?÷í3ðÜÝ×»'ü¢<[`Îàru8ÜÂb½ñàøõà`3·ÈC8°øf³÷_à+ÞB«µ{xíW¼ ww÷ÓÅwW}xÀáí£j|;Ç)|´¿ 0ÿÉxàùg-ZdÚ)_Á?ïk:cD%*:*%¨þîiP!+í#.JÃóË¥QÛ I½+~Æ»$Ø ± }KJ¹
ǽ"¿»
-n{ðp±dê|·õwâ¶QÒ@ÉCWZ}O.JÈó«¨a uØÝ
Ãò2C
vþò>¢ë üÆ ± ºµ^Z¯@ÂC3záùV/´È¸W@Á×ð÷éÇ
z ¡$2*µHP3Ïtåæ(Ö÷I8Åë34/sÈ!góá¸7÷·Ñ×'êeËâiÅK#ø2o^ªA:Ú³
-:(ÂXEDÅÐ Óßp=hUn][Ù+à×z
ëz¼/sOW×Îzå,4Z{
Ýá%Íý,>qü~8à¾ö'ü$Þ®%} ÓR®`·?7¼rïxWÁuc³HÇzåøëp÷®zÀçFÂ×~p7Áa
-IòÞõx\×Ñp5sü=7;ºõ*à zï׬wA'ÈOÀòí@Eô:=ª»$ÂåÚPÐ&ùhká\Pª
S*©3²m©¢ãFïçòº
a-Rïåõè$,ðï¼F©µKw©ÙZï</¥*"%`ö;Ýø1ð4h}Ô%%úUÙ
x÷ãÿÝA¦@FVÿ£æ©!eZka¾zÈwº;¿çëèæðaù/^¯þH
-øÑÃ&üêü/zs³9ÄôG:V^© Vp5:æ/ :w=jmýpkµ&êø^j\½
-pÞ¾ÜݶTñ(¢µãþê°9»e1Ú¸j÷Æc-lß(HTGÖÌFÊ¿Ì´ÁªAë
!ð'¾ÎnÛft0XYÑSÌ5C
QD
¢¢¢ô¯û`«õx{\X§PÚ I¼Óàmîë·ÜKM¢üçÕÛÍÞ¹w Âww^m _û[ÝÞmþÖô úf7wW Ud Ê.Ò 4R_æð
{¤ýl2N¨XQßÕßÂCHe¹ùD6#Ìù
ɱÅ]U®!R=#t'÷ªÎ}`mL:MØo">\¯RMâЧüø6µã&ÚÙnöÇw¿ræ¼;\6uåDYÃOkï3·EÛl*%»Îîæ1Ö**±Ì{Ñã, `k 6Â÷YàùV¿´3ÊÍ
aVQ+wÙ\@áF!:×Ê}ï8º!¢WT1Èd])x"s|¾m9s"5}æ$¨Í¹ÂâS§Üè&µ7¢çÄ Ú>EÎñÔp\ôyø
c¶ ÏÖ»ít¾Øï²`,Æ`|ØìCÄíÖc56-âÉ.¤iTçqxÉAÞ¹z:!Ï7á~Ìâ*_¸)}`*%pn6×1ºôËRÚëðr-,_Eü¦]VmâòuP éãS ;rö¡|ãF ß$ÊÒÒ}¾pÌ ô°º÷Í¡L×&õèr²b ÌÉn6cW3n¬h*5¨J½*®¼À]iShæn.
ô9É¢ÊLY)$±Q¨3¸3ùY<\7ñò±*ºÚ#l9R±f SjÎ1Eøe¾ õ
ÚÓFðZWäÔ* ÍÐàrKÆJ¦rF¬Gȼ*T9`i¨îÜÈß&Ä(k¨ÀhbÜvdÍüÆ£KßÁ=d-ñ)M¨k ©.UmRG\§·ºá2@=~Ó¹NQ_æ&2Æíº}qENÙÐ
RiMIÂT_{`cOÍI95©P¡hM´oS7 Q`, GÔæÒsS;D¤Ö+÷%öSNoÜ1 8¢Ï6f½Ctn®A8¢lßjI¤òDMÿyÔôIÏícÉ - ¸^ÅÆhVjêýêGßèwjó×ǯ©pañËd¼íÒ
Mv½Â´9Ï-¿¿=(¼®f^sb÷·u¿FÇ×=F£
å ÔÁ}F7#
¢¢TJE(U³¥I_æ&%Ú~ê)$Ôz²¡f6ó¥VU;¹¤^À}²C-E¯um´(ÕÎÏpi³s5³Ç¼fÅÚ{rsÄWûÔêPDfW²20o)a£½/pÝ
-(V7°yjBã FRÿäqå%rÈ𮢩è!`¦×19LéÚn¼äëPòstÜj
jã'ÛTÇÑémøKiêNÞFYQ:&ûeZQDRP0Î J;øe¾`"-ªÑÎÔkzúãTAFE¨Í5'ª´bo×ÍUÒT>P:Ñb«ê+pç¤mE°N}*ï"xúéÌÄÎHÂá\ÙÛ" h'.¸ÙÈ» bOQÛÆbÒÔo¦´é7âÆjÀ{¯Ä๥Ê$µ÷g|'&ü·~I^gÁ¢ÈÀwknU°ÆhCø ØIK!}±
-D&ÏúëýHr\z7çÏÞùëßÁAzsN!MYÐz¾N°5¾Ü6Íîiâ q{4\áHÁìH¥q¨yýàè)ÁÍqö
-ám
v@êÂ
òýs(,¤i`
ûN> îúØuy,?Ú®owÛÃdQbC«>yQ2(£Ï1 µuUÆ&ÜØ6Ïð*áf +VÁˤ®§JÍeâE ã¹qí80Bþ¸ÞCu³ 5ú+&G~ ¿7e¿ýTÆ·" Â-µôïÌ|¨ëu^â zÝ8Í»ZíüûGwÂ͹wE5ͬm×äS v<9ÊyпVnj·;=s1CÓGÏÇGÐ9*tA'(çEíA
-M¨aÂ~:ûæ»aq
{v6nX¼Ã!,øþó&¿Þ½:ûw~ê" ¡ÒXlûf/¸·Òo9¬àÚÖóh¦=.#PKLYT+¢¡¨,iùÐeÅRyKzJ§)â7Éî@¦po&|$ܦ*Õú6¥mÖ{l£a,§<í³±Øþ þ»¿©bÛIm( ºÞãj;ahëÕá±9ª± Â2BYªD¿
->öï91ã½//¨ó@?P¾nçÏ¡B¡PCw=
¦ <ºOèþªc/jJèE`úwOD8C,KËDIíc´¨&ÇLGAÝ«æ Zb
-ãÑ"{͹ñ(>fVåŧ=ù#Ã*®ªGÄx·ê+wöa"i2
À¢$¥NÉe8áupÇGîo˲¬?A®LÉ
®¢B{S¹É©drå\292¤óV½¯ÿ³í
ÏØ^Õ±½õ,ÛËP¿íum/§v{.Ò©kÀߺ¡Ojdv Z
-û&KQ£ §gzNýEw6pÊþ´ö·²cÁij¥ý9ü£¬{êö l4iááföK4æTKªk1<³ÄpÑm©)Mê·
D'u
ùcB"6{·3fAuÌ2B=Ë,3Ô/d]bG³Ì©õÆèõ/c7°oðâ§}F ¬rò¢ªq2Ô
-/1 at 0FÛÉxí¹á]'"ä}ÜæmXî~[|´¬RFÜøÎÁ ½i÷;É[Íÿ>lóäC2!ð(ªÊ9,Õëcw×#¾ñ}ùjª]:@f
-Vãݶçã9Ôì^
£ç ÙOH&\°ç¸Bv+`Dz+I7|N2úxÿBÁçý)§0I=·¢Â~bÕ å±ldu8*ÓÏä)9Ôq ãsÔ/ãûÄ&XPë¼à¯¾4¸¼.þÞö9 Z*Êâ à<
-":þÏKƹPÝá§ÖÄrÍSµÜ·¥GXåótÜ_7~÷I;µP¤ÓTh~Z¾Úot§$Á#1"7R$÷õx at V#ÅÛJã¬Äh= äP{PϲÇõÙcØÑsj}]»êê¢Ï¯ÕÒPZ#öÜ)IèYãÀÇ,<` ? ¬[§î;óìNÌç$
Gÿ9kãO¦\=Hêhõ©)²Úw¨Âä}ü[ãáøT|§ êÑ=vNÕBO
-âxêÌõg3¢¸F*ÿÊ
1PÃäcÈ :!B=Ë1d¨_È1tCNíD«ìÂèÎ((aÊT®}-
Êt{¬fwGØò
+h_Ò ª%®(°(O&+Úf
-¬UVhe{TN¶î±âóÓç0Z¶î?ÙØð6þ²~÷µ¿ëÆC7rïß+Ë¢4suF@Æ6
4]=Õ3i,É>
?<ñA0q*\
û ÃáóÕDv¬Z£àÂ%M^ñ¸ ÍeëTÇ D¨g9õ9.±£È©í9"pt}È ô¿{ºýÝ@gÞ`aÚÒ¾XTKIÙïDB^¿s¿¹ÚaÝÀÒoò·ÙC5sÈ
pÉtnGRÆ{Áñô|ææÅ/ÉÒ)B·{vÄ9P¸ÛÇßSïÃï0 ·#ÛxÌ(Z§
3ÓöÅ ÖÖøsÎßäK¾>ã*|ÿ:¬ù*ü!Ýÿ|A_GîP°1y$qNÿ{¨1V*4Kp;sô×sûý¼ÿendstream
+xÚÅ<io+¹ßý+7ÉE2ÉL®ñ"2AÐOî§çÄÉãýõ©âÕ$êÖÛl0ÐsÅb±î*²(üÇVFIZÎ[m÷7tµw?¿aFJM¤Òno7SÒiÍWÉÏîoþëëneÕ\¯î?3iF¶fuÿð§õwTÑ[¶þ-ü>Âï~Ãþ¹»ÝðN»ûOð{ßµ~Ë#^®ð_ü%âè·/x#×o· t<Á£¿ù
þÕn@AlÃ3\k?ïÃ8Ñ1à|CHÉpºýóý¯n¾ºOë¥
æ¯N» ó] ~°kùõW aÿ;øç}B¤ë:VÑQ +A-Ì"×rväå°=îA$ÿE¸32øpË;/ÏðÌ1û½Ã£Àp?ö_ýMXÔzö¨ØzË]ÁsN8gÝjñJqGWdÉÖ8I/vÇàëãÞɯxÊ`:ÛQÊkIǤZmßä&Ü¢ÅU<GöDr@+z8DX-+z*'¨y*8ÕÄXÝT4d'$mÈ6âß&ù#?áò Mñ%ص³ÂÀì$o¼òÆëRÞäv#u·þÖiBÜç;?uåðÑ~èñnä"áT NDgDTæ»õ¾ä!!D>îyáF<r r½¿|ó!©{±ï·8îS¦|ÿÛcàÎt>ëq¼¯Pky
jÿ/en©L+
-mäýèýp³^âdµæ áX*ùæGøM>`ªù´Wj>3Hø§¢§Òüµ@
Ͳ+©pãäµÕ1¥Ö§z*<9ü
QéP¸u&ðÄ~Dá½%=ÿq½Ò')еµPkáJ\ÈV«Ûä(ɸ`-L³q"d½-Þø}xâøþþøb¾q/÷:ÉÏ
R÷ê?àòôËè÷üï/ÙûohÃqçÑõÝwqæ·áþÏÑùwùR,*õÆá RK6î4:rÛ
%o2¹ñÖù²#jÔ=O'µN}Ó³çÀCC Ì
jødþ?
´^>øys&Ù¤j!êNª^ÊZ"ü&0Í&h²É91bUIG¥Ñ j~vÉ
زbö>êo÷~ÛI§L4[¤>ÅÿðíP¹Á8r~IÊà£(µî
γÃ*tI ä9Ê+ÞC ÔRï£ÔÙ9×,©(3T/ÞKáå~n!¿G ÞÎx0?Jë?Dm·ñ$øM> OÖhqÜÿ¿_þ|Bì£$2êd6B-L/£ª|Ñ c¶Ggh^æ§D6Þ{ØWÜFÜÏN6<:ÔH X`ißäðË©4Z§u
tó:~zù
kjt9ume¡_ÛÞùûSƨoûàßk6^CxÉh
+oÿûX9Üa+wÕv"é3Rrý5ºÙE>Ĥuxr¶â]
0E:¶½sà1;{ªXàÜHñÁÏ?¢3!Òb)çiÉx×ãq=DòÅ¡DÅÖ.Ká,êÑë§èÝnA)Ä&¤'ßQ&£Û¹hA ×üû¤#9ËéHÜx®ë2Ý$ìûL¿o±\¼"ó×T0E©*íÏHýô%ÊE£dÒe_'¿ÄÂçÝcLÈ1£ÈA-×MQõ4M)ÖjC'²(4`ΩrAæÿôåôG1ðÄ/6á×ë3.t·Î1¿À÷âªUr¥FèÛäÙñãD÷h£ïE¤võIËÊ ã¡Tñ(¢ã~ÎÍ\|Ájã¨ãÇÚ¦È:ÃôJÙ*K.Beßä¦ÑjöÊItpYÑSÇ̵@dPÊÒÁaö[¨?½à|ÄV«°%a`MÔ«Å?Ý
+/5vöï?
'çß+|áÉ·Äâÿèëǧῧ&MAß:Ý7 Óv4-)orø w&Hç³Æa¸À:øF¨ù¹ðCUNÞÈfd·NÁ]U!R=#ÍLî#¥®sNDæ;¦À/·}ªIú?æ±vÄ8³Ãɾôøö½³æãùnR7XA´íĵrMðóÌ¢lê}ÏJvìÏNC0ãË``iKÀ4|ÁO«Fº Ø¢#ÜrVÒPëuY2bå|æZ«÷Îy»ª;ij_^Ç>KÜé<[¸DðslI@ó3§.fNÙÐ.u+¢¯Ä°9}<Y¿U:?+epSgõèßmvزð+Çð{N!FÃtUwUÊ2Cò uê4+«ê<ònHÿÍ-ê9hZáy¾â]¸T)aà:¥péz¦ÃCL~îü°hÁ8¼<fË¥M«&q:ó}Xt¾ð5Ð9û\®ã²úÃäß³Dôs =÷{ß¿ eÖÔ£»fÐ mfa»áeÌêjÆEL¥º8vÞk/pWÌÔ={GEÈBÚíïû´'äxÂGm`Î8o/³1oëI¬wºÚHÜeà(BØXðI~º Úkw:J¨19µ{
+@4¸lóVÎYõÈò/CÚ×Z©(ê)´í¢kÇL FvFÖ~W
.
|ðµÄ[PW=²N¥)U©#®9'û,ô*!óàʹ¥""Áoò$±F{í>è+rêhP@õPÐjeS>¶ÑSMÕĤ=¶ï'jÁZàÑ$³ÅvN´M!ì<ºÂÕ¯9½ÙN8¢Ï!&º4:7×,v«Õ0£WL]©étVDMoznì+9 $ Äm{MXbx©©û>nZñ¬ÅnSíàÂâÎoõ[.Ùu-n[Þ]'¼®f^³1{ÍÛºE£cÆë9F£BÈ+
T¾óìb%µ+ ^SRºXDøM> ¹Q¢Ï;¥
+u]EF½¡&óeVW?ÄÃ0NÊûdçZ^ë:NLgdu\c%ù¸g
+$yÍ÷äÝ_mêÓ#p0ïa¢¯iݨO;8yÛ
Ƥ~áqåUqÈðîÓqHEÏk4¼ÉaJ×m.ð¯´Ì,`4rkjJC9ÊÅÕö qtº{>Â2úQVÉ~AQèµiQßäiQv¡X3
+OSu:¡&7ts»Ög®l<ÏÁX£©VÕWàÎÉ´ùØukyÁç© ]ؤëZ.p.A-ÌÝuDBÐ.'ïËSAÅ^£¶Å*c©ÃÌؤÃb$*wQËÞ{-¨ ¨ÛÓ̽VªL²íõÂâàùóÄ=þ×Yð¦(f9øn#¬ÖønªùI+©|±
+D&ÏúëÓHr\mÍù³7ý=8èSo!ª:èùÚ`#z\Ü!;;9HÜ®MävL$Òø=?!öíÁÃq·%ÂîÔ¤Û
+íÔ1ÊIjß1`/rb¹ö«ú
Û|FÝõ5°ëòX±~=l_s³3Îéè¤5^§FPÝéÏg¤ha\Õ±2x¶-æøpHÛS°ÔéôP©c³L¼HÂ`<Êà"®·?®÷àÝ,@þÄÊæ&_ÂïMÙÊK=ßØhF·ÔÒ_xgæìhäÃ]Õº9æÍÇloz;q&0bw\gjüú#'ÿÐmm·²HÖÉ'Áå¤õVò.nØúñDä*çAaÆZçºÝ¦g$ÌÓ©FæSluYîûL4ìòSgÏÌðvû¾Bñ##kDØ~?ocVxüà_~Èòô\*6ÃƳ¢<à Æ$i;üÇÓ
+§sØÛ÷'8i¾:ÿ
+3¦vZCÖ¥Sû°nîq½ùÍOUëUlö£ÈmXÅÝn:§ÂwqozV
+¨hÜX¦8r7æ.o*Ü\àÔ¶
ëé!÷a³êÊ°½åz=5:©Æ ܱ<o¦SÓÛúHéùrG65^3Dyÿ´?åÝ×Éþö
æjYI]< ,Pkù÷8 £¸|@$A!ãtEö>2ù~¿É"ÜïBè__@}ÏX³õOäùÈÒAæZR¬¸Å=kZ|Á7;Ò
<EI'8/iôýÐüÌ£Bc/Aj%0Iy<Jàï|Ó»Çó%¥ÄbÐrÞ]3GåÖ,eC9[ôyzÏJ
+ûûÍþLW0÷¯n(¶«7T ¨Å@Ë÷7X«xûtóíÍïó{á}Æâ&lA`vhOxc@[éã¥0båè&M)D£,EIËW®½¢´OÉ^ÓI¼xB(sm§ e×É-T¦vq?µÙ3c³vrãÃÓ¦2¤][t(ÿ¿_»_«kë¤FÃãÎÏöF¡°íÏ/XÐ7¨°
Ç.ete?ÍNë÷áÙoo}ò×àÒ¶Á¥ýg£ª*ÖõQ`
+LÐv\Í;ójÆ^"TK'~RA%Gý½'"\ Ì岤ö%ÚVfs¿K¦£5azq jJLùí
+ïZsnÎxôèò8í#³þ´ÃÐÇQÏ¿ôd{_»cs껳(qÙá<µÜïÂéà³;y¸,[e#äʵ³ðNè¨ÐÞätnr:æ9Z&B`¬ÚDù¶=
+Éß·½jÆö"ÔgÙ^ú²½YbGÛË©=Ütêávr÷çÙÐ
%Sç ¦öLVD9û3ã)b£Ê+oÙ1þÑkYSÄw®:3ãg{÷årÙ¦È9~ÎË?ûîZKz>ÖÚ®%#ðÖÙñ{^ÏÍÿ[HTøìþ-!¿èey³Ì¡.eú³ÌQÿ0f9Ol2ËZo^ñòjò9ó
SÁæy¦dÇAÀCC^TR5c'µÂK³éÇ,øí»S U,lD<ÈûÍûÍÏY±wøÜh|ªRFø)þßvÞLç·¾N5ÿ/aêX' )GQUf,â©ñ{7nór^}Y½ó¼Õñ¨Òr;YThkvÞÍa0~Â=«pÌyB~Á2küs\!¿ÎJ°cÃø+I7|N2úx¿ àóÊáÏ5W"cÎçm¨pcAójGþ3b¹#B.Þ¶#\ö`úÀ-²Uç0átöâùëÆ|ÿpendstream
endobj
-264 0 obj <<
+274 0 obj <<
/Type /Page
-/Contents 265 0 R
-/Resources 263 0 R
+/Contents 275 0 R
+/Resources 273 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 262 0 R
-/Annots [ 267 0 R 268 0 R 269 0 R 270 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R ]
+/Parent 241 0 R
+/Annots [ 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 295 0 R ]
>> endobj
-267 0 obj <<
+277 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [388.4254 758.8407 423.7426 769.68]
+/Rect [309.5671 758.2828 344.8844 770.1433]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-268 0 obj <<
+278 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [342.3603 746.8856 371.5208 757.7248]
+/Rect [171.9846 746.8856 204.3927 757.7248]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+279 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [142.0054 722.9752 174.4135 733.8145]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+280 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [388.4254 683.1247 423.7426 693.9639]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+281 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [342.3603 671.1695 371.5208 682.0088]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-269 0 obj <<
+282 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [73.4132 734.9304 107.2162 745.7696]
+/Rect [73.4132 659.2143 107.2162 670.0536]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-270 0 obj <<
+283 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [351.8753 671.1695 384.2834 682.0088]
+/Rect [351.8753 595.4535 384.2834 606.2927]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-272 0 obj <<
+285 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [95.0206 624.9183 124.181 635.7575]
+/Rect [95.0206 549.2022 124.181 560.0415]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-273 0 obj <<
+286 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [492.702 624.9183 521.8625 635.7575]
+/Rect [492.702 549.2022 521.8625 560.0415]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-274 0 obj <<
+287 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [110.1279 612.9631 139.2884 623.8024]
+/Rect [110.1279 537.2471 139.2884 548.0863]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-275 0 obj <<
+288 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [205.4082 612.9631 234.5686 623.8024]
+/Rect [205.4082 537.2471 234.5686 548.0863]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-276 0 obj <<
+289 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [248.6651 576.8187 281.0732 587.9369]
+/Rect [248.6651 501.1026 281.0732 512.2208]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-277 0 obj <<
+290 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [122.1741 564.8635 154.5822 575.9817]
+/Rect [122.1741 489.1474 154.5822 500.2656]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-278 0 obj <<
+291 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [426.2546 552.9083 455.415 564.0265]
+/Rect [426.2546 477.1922 455.415 488.3105]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-279 0 obj <<
+292 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [242.5556 528.998 271.716 540.1162]
+/Rect [242.5556 453.2819 271.716 464.4001]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-280 0 obj <<
+293 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [357.2007 528.998 386.3611 540.1162]
+/Rect [357.2007 453.2819 386.3611 464.4001]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-266 0 obj <<
-/D [264 0 R /XYZ 74.4095 789.6651 null]
+295 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [122.6681 287.245 151.8285 298.0842]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-137 0 obj <<
-/D [264 0 R /XYZ 74.4095 672.1658 null]
+276 0 obj <<
+/D [274 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-50 0 obj <<
-/D [264 0 R /XYZ 74.4095 672.1658 null]
+143 0 obj <<
+/D [274 0 R /XYZ 74.4095 596.4497 null]
>> endobj
-271 0 obj <<
-/D [264 0 R /XYZ 74.4095 637.4833 null]
->> endobj
-138 0 obj <<
-/D [264 0 R /XYZ 74.4095 506.0839 null]
->> endobj
54 0 obj <<
-/D [264 0 R /XYZ 74.4095 506.0839 null]
+/D [274 0 R /XYZ 74.4095 596.4497 null]
>> endobj
-281 0 obj <<
-/D [264 0 R /XYZ 74.4095 462.7334 null]
+284 0 obj <<
+/D [274 0 R /XYZ 74.4095 561.7672 null]
>> endobj
-139 0 obj <<
-/D [264 0 R /XYZ 74.4095 439.6734 null]
+144 0 obj <<
+/D [274 0 R /XYZ 74.4095 430.3678 null]
>> endobj
58 0 obj <<
-/D [264 0 R /XYZ 74.4095 439.6734 null]
+/D [274 0 R /XYZ 74.4095 430.3678 null]
>> endobj
-282 0 obj <<
-/D [264 0 R /XYZ 74.4095 407.3101 null]
+294 0 obj <<
+/D [274 0 R /XYZ 74.4095 387.0174 null]
>> endobj
-140 0 obj <<
-/D [264 0 R /XYZ 74.4095 187.9128 null]
+145 0 obj <<
+/D [274 0 R /XYZ 74.4095 288.2413 null]
>> endobj
62 0 obj <<
-/D [264 0 R /XYZ 74.4095 187.9128 null]
+/D [274 0 R /XYZ 74.4095 288.2413 null]
>> endobj
-263 0 obj <<
-/Font << /F8 103 0 R /F57 160 0 R /F52 153 0 R /F44 100 0 R >>
+296 0 obj <<
+/D [274 0 R /XYZ 74.4095 255.8779 null]
+>> endobj
+273 0 obj <<
+/Font << /F8 107 0 R /F57 166 0 R /F52 159 0 R /F44 104 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-285 0 obj <<
-/Length 2912
+299 0 obj <<
+/Length 3162
/Filter /FlateDecode
>>
stream
-xÚÝ[[sbÇ~ׯàQ¤ÉÜ/~s\v*®ÄNåÉv¥Xµ%X´ÿ}z®Ì3hÁU×èôéþ¦§ïs 3ÿÈLqı3¥
RÙêñ
-ÏîàÚ¯H á\".¤/«A1ÒRÒÙ"gò§«?~%èd¼ßüt% RÒ¨ÙÍí÷×ßm÷÷õnþãÍ×W_Þ$¶3Ä´V=ÑÄ C;ËpÄ× +cá`q>;%1I,ª÷sF¯ëý÷áý|ÁðõºICÜ(^àüåêûñì }}
3Ï^àFÄ:{¼bÈh¿>\ýóêÔá 6a
-qME{g!?Á÷øï^?`áEjàiÙ!!éêW"ä8¢_© 4Cªs Êàb¢rÛ¾Þ¸gxY´P.(|?§:*Êëõg4XÊØIPg X6+ ~¯e`ôG.ï Õ"AcöÆÏ-õÿ¸ÞX±Îî³f{#xiÒ¾&"Õ"'s ÅQøáOÌBùÕGZS5©Z¹
Î3à¡Ø¿Ï½a¯·ðú¼ÖðZ9«·ªÏf°ìßðÚ&ÒFËöJ¶åßÏ¥}c×wkkk«ñåC½Rª(ÂJñj¥öÒÓ] ù.[s¢o×ãiÙz·¶v³ÝÔx¦àlZñhÃiEaû˽ºW²`35GB
-nãF÷ ×Ý>üùÞ]²þîþ~kYïVñÊÛ".¿~çÿºý©ã~DD$5a£O´F£T'(ÂÙRP)fE ªkÆ}¨ÃïjëÞÝ
-áATApÒgâÈpsìbW)åÁ%ÓjrV(ÎyÅêÿ2c
±ÆÈQ(ÎȦBq$âI¹P\Ëíâ\lôν¹ûy´ùCD¶Î¬¾Ôª¤HrQGÞ:Ì
h*Õ*ÙHß®§³
[â·>ÁÔ8Fݤ6Õ@º°YG6ï ït-Úª¼RcfQãbЧWÛ§À½ó¶`vÛsÚAB6LF=°D¿ÈohÓ\Ãv`[_Wâ¨l QµÒâ°÷3Y¥qÛ06 ؤXO'¨^Ôâlf
-͹9;)Ec')QU&ØÂ}\îWñ»ÒÔêsÑÃñTh.Ñô7J@£aJ
PN6Ù0MËM ¨ÛM@
Ø*-³6à9¤ôPåÕhXiÄ°¤e6:(økv<+EúvE^hزâHa%¦U¨ÒAÖ´
-áSÙ'ÛýÔ
ÆqSè§a¶lJbHQ;LTéJB´¾én9åü:×ÜÇâ¾bTv´4pÃlÊ
#ÙØ
'åÜ°ÛwÃ\lå·!wíBº
-ßoOsÅnK^¾NIÌoÇк2¡«EwÐHß.¿píÈö ^+,ÓÊOTÓÒQsMJé§ÔÆ6ô¼ªÿfíõg{7(دç´Yî{ÔùrßÉ]
-Ò±|?#òJÑYÜyé«íã{/üP>À½Ü§qHN¢dJ¬gÚcѧ ùBuýuq(r
-Oÿµ8Zð×:ÕIfãY%ï] ²³µ·Ã%çÖF÷Wê/Ný.°¸ë 0$:_M»ÏoóÙÐÚß[ÛÄÎz6±½'k5*~Ü:|?Æ+Vî@òè6)Ar}S-3û¸IuªÂ¥Ö¿+²w|é5´NC<Øvv^ÄYÊãqVøyØõ§`qôó%¼Jaäú¦ªÀ7áúc° [~ú7ÒÚ
-¡,ÏÈÉJ2rï~
-µÔÏ¡^+A1Õ>¦gâß"gØ©Ä^&Ôï¶Íj6ÿ^\d8BÇ´5Ò ³DÌ:áyA/62¡Àì¶D»F\`
-c(,.12aTðÙP]b\mË}°ÿ¹i¸¤Ûà£vÓpÚuFCó8Þ%ª6eSäø ÄoÔÀq\ÕDÝ©eã¤ÐT5ÖB»Ec.óÄcXZ¾¹?±u;éGJ¤EµÂã%b nZËo¨Q*`1¥ìD4Á5;\@èÝtmip:
G9Ù%²¡MËMvÖÈíZ!öòSê×6#$
ò»\ãqKôíjË)rÍv4-0v¢¦{¨ÒDDÖº>¥Q>DÀÐøßË]¯Ë&0iª ÙD0 ãpC¬Qöã»õzÙH¯lÎRy?cç#DùÖàÎU²Ö(9TÝpÕÅ©¼³³Ì}÷-£Å41~ jFñSP[sN3õ7löãehJY,áýHô/Ý3Xlçíòuy¸aåôåj&§iëåpæ Ë_-Ý¡Ó-ö#¼
-Ñvûqª ¦´êZ-§Ô>½ñÛ³[-kd¢2bÆF\Q\Hôü64lOÌB6cP;XâiÎ7Õ4
-âËÅ:zVÜHoùeÕÖn´ÕQUÙ3~äÿ×_Ý«µ$ù¨©¶S¤Un~LrBWƨEðue9Ãc]Y¢teº²ºØ OíÊ.6ue´±++Ñ><lm«óÒàÔ z¦.3ð¡4v Z<»-²o¿8µ-ËyoËÕïµ-£J!åé dÎÉ&JæD6,§å¦¹Û-±PsV.rÜ5«íµgÅb_ÓMªüÐ MHZâ-
°Eì2öMÙ[$ÛۤܽÕrûöýtZ´r'´hÍj»-Z±ÚSZ´I]Z´ié±E+¤~¢[éÐ?ÎóÎ*öí³<¯:¥{ÍA3#2âH66âI¹#®åö8{0â"@îÂYÃ&óKóØi[ãäo¤âuÑ«CB\p%4;7y
% "¹Æþ-u§¡òW[ô>¸AWWÜû 讫yr·º:Þ¦ÉÛÐy¶µ¹Ilú
§DyùE-©7`
-i*Õ«ºFFµ®F w.ÄÚVµ3j»À9} _äô×ÕLG.m5ôªBQ»|¤ç#¨c
-éµc6X~ê¾çÞʺóçavgzm!
-lvAÂsìjâÌjµÞ¹³F Ó±wG¸'BÙpAËðà÷JgþÃ_| $¡¦L-RËî³%WûHQÆgPÀ*©(¬ß-ïCN##«*¡'¢4ض`göI<5¬¨ý"¿¡f¶§N '7L³
-O=mTÓ(8l%R(Êiè>öêXÕGõ/QÇ>¾Íqõc[ÌÆ F?cn«dgÓ6÷fvaÆb}sþ Ã=
ÂXyüü¸üÙõm¾cí_JÚó& á"çØ{¸aà²íÝßßåmÃûî®×þDvÖadÎãxר~¯]/áÀ¥ÿmV¿eTå[¤VoBSñVíÖn¹ÌSlzæô)æõQéÖý
·Ï+^®mâQÒ@Þ¬²¬*¦£"D$%
-NDÓ¢5·,DÒÄ_ÎmOPº¿&ZDEFÔé{Ø·¢E`jqéç¿yÿáendstream
+xÚÝ[[s[·~ׯà#Õ Ü/yKÓ8Lë¤2}H2¢eµè´Ýæ×w÷àr²¦ÓñÐ$ÏYî~Xì~ØÅØÂ?¶0HêÔÂXG´Vl±¹» ¸÷Õ2Rj"6ð¥qw%¹&J0¹XqC¬S²)å$BÚÅÊhFv¥þxuñé3)8ÍõâêÕÂ9"\QêêúÇåúá-ñµ¾lùï˯¾¹øò*éf\M\䪹øñgº¸ ß\P"ð
æ_Ü]â¬_ß\|ñ×kR8qGã²D» ·¿n¢®?¹
7VÖÊ
+ÀÇTÂæ RUø@¼¿Tz¹~Þ¡ïðßv¹é\âçÝøñ5ÞB>S&ÓmqÂÀ:o½Dn\Ω÷W^hUËkt¼î¶÷ðÿ?îîýá˯[o}÷ªaÖY¢¢ÒõÑO@Ëõ~¼CÝhñ¦¡V1ó4bL¨w³p_^®¸^¸õþà/g\7l¥Ä±«JñAéw¾lùygÓþÚ·ðz ¯sÁx¡?Ô8aÆ©U6 %Óð©f¹rb&3©N>F©Gåc¦úLùØ;æcözþõílÔ2%ûþJR52)qNÛB/©H±×þíít;ÍÜÛ¼Ç1e÷ÞÀÈy"´B&0Eù÷×íÐ0ÌÄ$Ü°>x-XõFF¾^Çá±½.ø2©^Z@ÏÙÉL ÷!ñ$FÚÌ3ï~£íqs at K¸ à#A£Aàåà¼Ø"ìuÛ¨&à\;CT¢Ô£!S}&bè!G{»¯ B¾p+Î0*(áÚN nvC´b0ÝÞ¬Ù
÷ýAG(SdýNR5¸<¨8Ä5ÁÖ¡4Î9ä?xçù /a
+¶ÒÝ#è¤:'±Á§ÁÛì'áÍÁ[ï2±18¹à´2ØGcù%¼-Ƶ
*AÝà)Å Ìq$ì¥ôßáõ5¼¾×!ÅÃë*\ÿ
+^?ë?¹ ví?²øVy
+Xñ( hG wB÷I :NIê1$«> ôÁ&(ÐvHàl Ì $P ¼Rëö=ÒÀöxc5áƱþ´&©IBÐ NÆê3^Õ?Ëx¼å3>²¼6À;ym µþ¤]ht.z5éþ@é}4ês|ê0"Ü=bi0`A¯ -W¾üàPEXͦåGA&cyPLhhþ8.y8ã*|ÿ[øÍwá
¸ÿô[pæDZÁg¸$êpIzdªÏÄ%]°#äh{\r.#ô&.ɾÚwÞ÷j¹o4dPwrT§dE")àôËæð>e¸t´°àOÃú%¼-KÔ÷33çť˫?÷×Ëìß^àÍòEJph÷9¾Ñ0_Ð~G/vï·÷Û**â¦J1Ûl8`æJÙss*SÑÉ©(
¨ÞâJâYN°Ø@
+êÈ2x³+3ò´à
+g`cKËU{ãöÖ7p>v[¡`¹Ó¦Yü2
¥VGÜËà6W f©¨C áaηªCñȾlÕ?k®I¶bç5½Uüø8ª¼>µïÝvìÑ?«3bWà fTÛQj
`S:t.%1¿x1SÇ$Ör3c7JÕv'ûÛÙïfûæâ¸Å2®»$Z zÜmÄù\{v¸67j ö`ÐáScäd¤xëá&ȼȻ±(_¹èÆ*µ>§³ÊåµßlàbOô
úUÄ2ªJ»àXéݽ9D¦Ä¢SeÀ
+?S!Nyüº?îÖ×"ÞoâµD^^_'[dÔÛ¥#LóØÄÁ¹Êë£ aë l+¬Ä§°³Vrïf7¼_Çø"g¤$·á¦#gîÉ<®r"ÂÆ¡ÊIbÉÃÜd~g::L¥~_*æEÅÒ0¢9c3Tu¨8ÍRqßn¢âÊn³1;r1æGFÞÅ«ö*Zª)óNi"ÄZ9õÞqòõxÊM¯©Zñ|L¿ÀLq(h©Ó}o&©ë
+W¨cÞOnþ¸ÑH%Üx§F
+ûx)ÿÞ¼ÙÅÆn»îC 4Ôí¦§KxIi&RA¡$¿ÊP/sÚs¯Ä1}^¥jëåã
+-
©0ÿÈøL8= j.PbR+jûTµ$ÍB
+
ʶñÂU®±Õz+ìñ2Ã÷n}Ø â×',GrZŲå:/GIêËÑÈ©¿Ñ2$ \Úe(ë,CIlvêÛMËPe·¹f'ËÐ:kÞ
ýM¨õÊôªAX"¨æåt¸Äj¤Úñµ)Ê×,VJíÜÚd$1Êô®Ôuðåª4Þ[RÑÝ^À! yæîT'%ù>ÌZí4VÎ8LR3Ö
Üd
õ樣i$sz.
3±^F±ù4ìÚÓpj·¹ÙI^lýðýú´Tl6æâÃW+IùuBo¦ìdÐÇ4Ê×Ã/R¤R;{À×¥ïü$Õ·.!TZVZ?¥JtØÖK^6êÁxýgxJ"Ì×»4YÃ÷ìHã j6d?y5#MvnÑúfw÷6ó2¨à>ܦMÆn18J§
õñXt+äreY>Ãßá%Ô¿çv Ϋp+Ègù£èÔ¸GM¥ß$3{0q«
+Ü _÷IJ'
ðyÖÚ×ÔGm©*&öEÔ
ñ7YÃ1Ñ'=X§Ã÷cºbý"wÃ$%Àó4¹¼3ûx;¸Fùvh;óȾ÷M9"EZÇ篵÷]Mêðûpÿ.;qü¹§yNw÷(ÔÃ\è²,÷{Q+ÍýnTÁàµÁÂÌ8¤±xú)Ø o+lÔã /3:ï®^Õp5ü=¸¨pÐÜhW{¬áá=Ú¨px^hïc¡Â Ësa
+ç0øì¸-1GüA
H¤»sMwÿ§4e¹ãMY:cSv¦ó{çià8DÇNº_9æbÊ1ÍV}»©r¬ì6+ÇÂìtbù6LéáÄî¤Ç9ZCM4äñJ1×£-
+Å©Òåpg7 £ëò$Õ'ÕLu¢ý4§orc&Þ2±^¼E±ùxëÚãmj·o¹Ùóï[?¶1Cq(ÅË1·(_¶ÜWªÛ9 ®´ÒÎÌq±î4azêëS#ñ ¸*/ð¨uMÌ\&´ìu(ɲ#ïX¯2Û<¶
3ü̧¶qý2yo{%Ìø6áf¨j18+p¸ëÿ²&kÆs~b¿ûög
5s~3.ò'X*KÉ3÷<mûÙo8C:ùÛ¯Oe)îÀëÇMæøÍ௡~ ³Ãú0üá°~ð-õ]ëÿA³²tÄ0çÓ³GâÃCj¥>ñÓ³ß)«7Ë4°qjÁq·Ü>·YåWùê% R{âB$)
¬ÄS=ñR}Ð㩤.QlcfÅùs@ûÈ/+¸ÆßbqËñELÙ?>«ÿ<¼êH¢°~0ÓkÑ$'Æ¡sÙ¡1ë¡ÌCËëÐÌLv6p©CA;´à©ÚÙЦmmìÐJ´oÞì°íùPËvø7CçôÍ¡t¸9:ùä
ÈXÍäSZ´\Çñ-Iý¿¶hL:wÒ#êÌQj¶^îMåòÔh³ZÎmþ5gÅç{³éP[Y>ÒÇtf=gYAêËrómY<\¥
+TíÎ0ʬ2¡F¹ÎGMhÑ©=
¥Ykü$7çendstream
endobj
-284 0 obj <<
+298 0 obj <<
/Type /Page
-/Contents 285 0 R
-/Resources 283 0 R
+/Contents 299 0 R
+/Resources 297 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 262 0 R
-/Annots [ 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R ]
+/Parent 241 0 R
+/Annots [ 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R ]
>> endobj
-288 0 obj <<
+302 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [271.0812 690.5936 303.4893 701.7118]
+/Rect [271.0812 553.7095 303.4893 564.8278]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-289 0 obj <<
+303 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [215.8886 605.3217 251.2059 616.4399]
+/Rect [215.8886 468.4132 251.2059 479.5314]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-290 0 obj <<
+304 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [370.565 589.4719 405.8823 600.5901]
+/Rect [370.565 452.5579 405.8823 463.6761]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-291 0 obj <<
+305 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [240.3865 520.0498 275.7037 531.168]
+/Rect [240.3865 383.1168 275.7037 394.2351]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-292 0 obj <<
+306 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [338.6766 520.0498 373.9939 531.168]
+/Rect [338.6766 383.1168 373.9939 394.2351]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-293 0 obj <<
+307 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [279.4096 506.1473 314.7268 517.2655]
+/Rect [279.4096 369.2116 314.7268 380.3298]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-294 0 obj <<
+308 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [265.8608 396.965 298.2689 408.0832]
+/Rect [265.8608 260.0049 298.2689 271.1232]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-295 0 obj <<
+309 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [258.5279 383.0625 293.8452 394.1807]
+/Rect [258.5279 246.0997 293.8452 257.2179]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-296 0 obj <<
+310 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [368.8832 355.2575 401.2913 366.3757]
+/Rect [368.8832 218.2893 401.2913 229.4075]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-297 0 obj <<
+311 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [265.8608 273.8803 298.2689 284.9985]
+/Rect [265.8608 136.893 298.2689 148.0112]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-298 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [258.5279 259.9778 293.8452 271.096]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+300 0 obj <<
+/D [298 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-299 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [207.6747 230.2254 242.992 241.3437]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+146 0 obj <<
+/D [298 0 R /XYZ 74.4095 650.2423 null]
>> endobj
-300 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [389.5264 218.2703 421.9345 229.3885]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+66 0 obj <<
+/D [298 0 R /XYZ 74.4095 650.2423 null]
>> endobj
301 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [247.2111 136.893 282.5284 147.8219]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+/D [298 0 R /XYZ 74.4095 618.4734 null]
>> endobj
-286 0 obj <<
-/D [284 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-287 0 obj <<
-/D [284 0 R /XYZ 74.4095 755.3439 null]
->> endobj
-283 0 obj <<
-/Font << /F52 153 0 R /F44 100 0 R /F8 103 0 R /F57 160 0 R /F14 209 0 R >>
+297 0 obj <<
+/Font << /F44 104 0 R /F8 107 0 R /F57 166 0 R /F52 159 0 R /F14 215 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-304 0 obj <<
-/Length 2796
+314 0 obj <<
+/Length 2870
/Filter /FlateDecode
>>
stream
-xÚí[Ks#·¾ëWðH¦v`¼¾9©8â£írQWR"²(YÞïÆs0 Ü*oUjâpÐÓÝèntÁd¡8âØ
ÒI)Èâòþ/®aìg$Ðp.RÁÊèÀ<Ê([T!m¯RJeÌ,% RÒ(Kö×󳯾%|aT.Î?,
k·ÙùÕË0Q«Ï¿;ûûybIGZSµÈÎåFª¹\¡r¹Ì -±·+²|Ï3|þ²eîÖ>¿¡
|^Ãï-|.àóßpÿÒ=
-jõÎD~VÆ»ÕÀX>Ùg¬ø<æ;;FkûE¿\®ïÍÆm?øo쿬záÎÓÈ]^nVTø³±ÌwnºÑÇÕ@¥¿ÿÁÞ¶÷+øtÛX» #¢k ´çÿªåþ@Õ÷~KèèüBhÝ÷ÌÑõÎí÷+nYW_
ß÷ÎK3K$]ÞÇçýsT97ÞÛAæÝzç<¯öÏú"ÜÚx$róy®aiÅYÏ#YË%¬ï¦ÜÑ)¥ÜºWr±·¬áóûnYÿþ¹|²4X ;iÇ>´þvc\Z~ÿ6F»übª1°Ì6þ¯d7
Y9`&±Ùâã|²Ä¦åHw² 0Éà9¨~mg¼}ñJÓå??xv[0'¼'{ë&#hl'ÿ(=^¶~4dãÆÖÎiî"JXw^ÜõÎ[Ó`°¦Ö`MÞ.ÍYB"}¢Ô>/¿ÚkµÜ^@¤p/h$gÚOÆ£x:Ú(pL÷ÛËFÅËKgõsLʪÐcîCÊ$ÒÅðÞ9,¿ æ}
-Qmï}_)¶Í®$¢\Àô%¤ÕâÚë5:ÌÙ¶;7¨Ëÿn¦ñiXn©ØhwÓ\µ»±dKYïÂò_É#p]xÄÇ8ëj´Áý<ÚÍ°²váy ×¢lèÀMgêl;H
-Ê©¬ bua£
MQ¿ýø3^\AFûî#L¾x
cèâþÊ:wgÿ9ûwô¿!gèrÞDOêeBÏÛyz>raO;ÈÄRH3Up=,h¢ \Óiö´ÀgªíåÖ§ÛëdÛð½+u§D!¬sGêvt§¯XjVXúînk5é ]*z:'==T#¡È>ÿfÿxÄiÊ6$°Àð!å< ÜGD±*¨#¼*ÅfÀ0,o g<âÚ±O¢²zÿPO;\>®LþºÏ%X:+ &xå[ob
²#ä½Ý×{! ¤Q¨55 `"ëBÀ¶Ügr«p"ö}שQ¢yÁÔaI§x0T¬kè\èBù+×´õ»¤yº$?dÓäóÙæÚÌZ¥côÅê`¤TÆ(EÀ£iòDÕVa¸zªEDí7¹)Ù·¬o¬oM¹c¼rëñ-Zç~YØmCë±9¬å({ÒA5}®f'(§Å÷[¤Ïvo3¶VŹÔò~U©äÔP¤-ÀlÚ:Qu¤,m]&[¨$´IW£±Ü~ÇÜÎr»Ð=gÝzÀ¦JW7XrLÓ â¬Ä¬Äm¹)gr«A<ûÿ¬};Y3PÈyJ]z)é¹RøBL¬ÇîTªÁ
$VÐöSe¬aì×þ^³:4â°7ÂOõ ´Üùj³jîâò¼u`p·ét Û~
-×oW8Umfq2!*yÑ#P
-M;',5íözí¿ÞdOÛ|èÕ'6(Ä/ô¸F¸vc%¶ÅVÕ_îúõ6$²;?ÉoJÿP¾ÝpåÇcûl¯@:VBËù¦I«/û\;ô±»Íóºn§þ¯Áß·OQÕYB$T,>ð£[ÆÈoÈÖú[Mªß0ö{ÔZÓËä<ö÷2ê½ÌX7>SÂ5 ^u§ÔædRȺ¥¶-7ÚÜj©ý´¼áJrc7w^j]mhD±âÅôöCÅH?è¤lÍØö ¢&H0JÚfNTé¼ÁJßèÀ{ÁêµýV^ÏÏWDG
Rn+*k2Lývfº×@¸½×ΩñeÑ`¿×N©î~Z
Ixàû¬t°ÄåæÝ&<¾ó»GfÑÁ¡¹ZBð+q{D¢òfþ³=°såøýç©>E$ª°f1fªÅ&F `Ao_*Ãþ7ÔFUlïÛ~ƧÂq¨9FczºslÔ¸DñÀúùÖo×õ*¹bÁÍ1-籿¢%ª/©¢AÏê´ªQÏ"U·5
¦jV
-³\f«ýr\=!:µN{ë`CÛ0_cç#Ïf:Ýø(v
K«eäDÔm0Âj"¸UÇ [d2½=fa¤ÌwÀxx|¹·®5ªB!£4;¨)ÊHñÚاW¢p}çöÍ°óïÆÇex_´rÿ¢ËÉ
Ö³i;cĽóM}5}ëØì+p]Y!ç7ÍFQµai;z|KË@¾7!ªH¯¢&ú!` glݦr4 ª©>e¬Fª¶j$)à®zè»Ûzñ´i&bõdo®Ä¸d§«9ÇFõLdVcw
-$É_sÒü
dD©¥ý¥4}IðôtJiNÖ¨¥¬[LÛrS5ÉÓØ?Eo8Þ½ál¢ÕÞp2ÑCzæÇÞ°-=öéoÚì§J!¡»ÇVs²VE²~5åQVÊGY.¶xcµ äÖYPå6Yʺ
;\õCtÛ3à KøN˹EÿÚ]ÄÝz7_ìôÔÊfO»û*ªl×0ª$ eèb¿AåßøkÿµwWª½3·cn3VÜY³ôù: )KãôÜy~θ5ÔÇr³ø¯½k·ÁÙ§#0ð$ Ë$M'§%êa$¿/X½4JÇ\ò¬|¤iÊW ýI&ÿ¨*:õé¨B²S«Ó¡®cu%²6êtOáêöô6
-).
-½9 E1¤ufø1°0ç±&ª/ íqÊvÉÎÉ%;uKv[n*Ù3¹Õ=û§ Óé gÃÉDM3À°-=Ãô7C"% 5zQµ¢,õ£¬)w²Rn=Êr±S 'P²¨VYÈiiÕÀ¨lúÀM!à{zû:
!éÓcv»Íä¥J<ätëËKGæΨçÿUÆF3 UñÉnzâèþÿ
áíp¯Í¨Zñ¨úáÓ:FO!´<Ì¢©x¨nö=
iöÎ!Îc~ ÈJIHQs×ÃT3{¼Dæ3Æÿi UrfÈ*û½Ô9Yqòµ¯¬$ üáNendstream
+xÚí[ëo7ÿî¿B¥CÄòýè·Þáz¸âÐär¾Omȶ⸵Ôrâæ¿ï»$âÊgHE°ÑJ;;3þ8Íþ±
DR§Æ:¢µbóº¸gÿ8aFJM¤Ò¾4®
W57Ä:%T3Â
pµÑíýõôä«o\8â4×Ó·ÆáÂOÙéÅË)3«N¿;ùûéÀ I¬åf3ÊMTS¹Êär
#VWb¯Vly×ýj¸¶ü×{¸¶põëÂõ¾úÖf,5'Z*PY½X
àÅ;O_Exsbîðî¢#W(.y5F|twi^g£è§£Í5²E¿ÿ :ܼò¬õpXi]ßÖÕt§ ÓµïWÜF뮹^nÏwði¢m½±vo6ôÛ£î×~ªØ0m`sí»YÃO++d¦O#ÄÏax¤êA8RÍ#¸'tp%´ßLæ_¶üK0þ´ëM|0~ßÊgpýÁû~
+k'àÖÈ×L
I at 9¢o½ xf¾ü¸Rz¹¹4ÛðÌÏ)|ÒðêÅ_n½Fþö|wàøÿm¹_1ð£ñrç_
ñæf¸ºmQæ>
+d~êÁ¬å;E¤Áb«%Åñ¦haïs#¿kX𠸵ñ
û80.Á2õ:£hnY0tfç{$_çôÓõV3[ìç`È¥õbOT3Â¥"sUJ¯$XC,®"Vß
ïù:c]âã03·YqHËDfäG¸jH¤Éj-%]¾ô3ëUñîåü|»ß¿Ê4ðî 7]\ôqFR]ã
+¸òªLÁ%ᦵõ*â(#,üö²¹XqOg4ÑL¦ÁVV¥µ$mÏïEéÁ<Á<@ëns=p²ÈM¥l& Âp¢º?ÊrgÐ>Яó&²Åa¿OHêìnk}$§Ä +*}*ÜT}-$L¥ÔÚZlqÁÊÞrûûøó< îJ =$_Hx&$¹ýö>üº¹õè:+wª0ÇÑ©)A¨)³ùÈþ׿ü5u~½'y¼\3§
Õ·ö¦c½Ùü²l§ZAÊjÙB[K¨Ô>þzòÃOtq³õÝ %ÂY¹x@(æ_Ü@Ȳ*}½>ùÏÉ¿ó¨®s~BeÖ
`Tó|ç-
¦¾ºÆÛÅO´?REábõ0 iL3m ãÔµ°Æ4 M«y7Ç`,
zg<&@
+Õ~=q^,åBÿº1ù(Å3{¨uâ
+Ùc2ÂoÛ¥S[ñíý×S7-,Þ̤nU'uKT³©[WèºÕB©[.ó3¬Oñ6üÓ1©ºiü=¨åØ'!|2Ê2¨Î%!%8ëx ê¶0
ÒéBô£qÙªYhed=l%²ypuåèªå¶áý³48T´À ª£ç õ ÈæÐ; Û@.¶ÚÚ¸Éò71OÆï7c0·µqÞïÁªò«;Öà×1sÙáüosÊöB®¢³çîOrëÜÌ´ädiÈf§¥/wÜæ´bÓþü·'LËæ·Ï5'5ø_n«hp#¿_³CÉë,¶m¸ ëy`
+c ©Xî3Û6«Â÷qt )Ãõ ÏyAéµ|ùÏ·A«ýL$Ùb8åÉsÔ¸¬ô=àdvái¼½ÏTîQ
+§órä9löÁP¸pcmó{gLwiw~À{³ÜA
eÛϱ`c¾x6'1ðv²Q䶯uéòÜÛgs\³©ôh±B4Ï_ÇrÜ]L?$@¦>Ы(5¡lQÜÎ
ºKåÖez{Ë)D»æ&®|ÊlIÓ>®¡ð1ÌnS32)Éhj`ÅÚ%ø:Ç-K¨µ!= ejWV1µPÂo<¹ìÖ¿FÊ"ý6ÍnêÛnVÙgÓ,ñQM¢v
vY()*Sð¾Âñ¹TMüfTÕÀ÷rUûeh[3C¨Í8<Qñ__q ¥ÚÒÆ××;TûaZ
áÏfÝß
+â2ìu?ú=»*_í¢«òÔêÚZû*?çq¸Ê¨þ_«|i!¶Pjgr¾¬ó
d³9__îóMä6s¾Bì«ãêú#
ÆA5¯ë{O.}
+ç¡ñ®^lv=ÈÃ%$¶¨»k¦GîÃrg ]T}%¥DÁTZ4²¦x3s6·¬·D6·®ÜoµÜ6Þr±_NW»ã]íÉh]íb´Çtµ»¶»Ú}é©«]HÿBºÚRYÀßìѬâD6â®ÜĵÜ6s±n`}®Þ¶0îmÝ^¶¶¹qhü8\\¶²K$Z¸ÏU5*OÎ ÔØùjC5÷iy^ùdÉà·"é¤ý)¹òvSÓf"cSR˪JE PUºdb¨Òñ~>eO¬· åµÏlPɾ²ã!ÉÀT£ª»Ø[Äû¼qøR¾¿p§zï«¢;6ÊêdI6ìô
+ðªm¤Wf½t¯þ¯q¾¯îZnïêW<,~T?¹VL×9ÇV]kAW0=GÓ\áT§39ÃåÌ@õåÌ:>S"¤·Ó\´ÍÉ:Ñv ¶}¹C´ÈmFÛBìÑ,wD?r2ÐfC²è1É®Çd_zêIÒåt0{ZÍ°äÊCúéÊ
+ÈÁÇq¹Î»¨¼Sq×X$ÃÐØ^·DiåÊýuÈ
ûûë»
ûëܹæ'*Ìâ/³rÐg&Þ=ï·ñõ}xÝ¿2AúN[
àRÍgÐ1Яó¦Çw&l=D$XØs.õ©%ª-`ÍRª]©EqÈå6'Ã=o¦Úò>´åL?S£H<ø|A.ãØr,¥û«°c7Ñü²5T=%¢å<G´êѸb°¸h9Y'¢
d³/wh¹ÍVíE´7OjhÙ¡:Õ êj=H?l¹R³jÒi ëz î(¡¦ÝiP<
+]u_^&m éØÜÛ´êVe3VÖ¬jû¡%
+÷g¹ß®÷¡7þ~\©Ñ*C£êbÿÚÆ gª$îE¨ñ®X§ÚßÀDá+ü'À"8Ç£
è`9ð}b¬Û©è×ùSg8a{ìÖ0Wà¯9«ô©Ñ¨úZpnƨТ<¢{dï¶HýQ&TÙ}L$åTëbîù"iαI2ÔØG@ò®×1¥"³Øl¥>6°æ<ÖêXOZ3Xs²N`Èfk_îX'rµûEåð('mÅ@)»fKžôT*ÒµýÏ$`ε°2ªÆ"Õ<ÄzBGUBÛ ËdVÝ«m<·ÉàTÛfþê*nuݶOÐ1;$Gö·<_îÒ9»³´sï¥&ÏñgÓæ:2íf5r2'[FN8.6ñ×
+ÿNCC
Ùø;endstream
endobj
-303 0 obj <<
+313 0 obj <<
/Type /Page
-/Contents 304 0 R
-/Resources 302 0 R
+/Contents 314 0 R
+/Resources 312 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 262 0 R
-/Annots [ 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R ]
+/Parent 241 0 R
+/Annots [ 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R ]
>> endobj
-306 0 obj <<
+316 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [265.8608 621.0773 298.2689 632.1956]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+/Rect [258.5279 758.5618 293.8452 769.68]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-307 0 obj <<
+317 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [258.5279 607.1296 293.8452 618.2479]
+/Rect [207.6747 728.6738 242.992 739.7921]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-308 0 obj <<
+318 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [247.2111 483.5929 282.5284 494.5218]
+/Rect [389.5264 716.7187 421.9345 727.8369]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+319 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [247.2111 635.025 282.5284 645.954]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-309 0 obj <<
+320 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [399.6904 467.6527 432.0985 478.7709]
+/Rect [265.8608 483.5929 298.2689 494.7111]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-310 0 obj <<
+321 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [252.4315 385.959 287.7488 396.888]
+/Rect [258.5279 469.6452 293.8452 480.7634]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-311 0 obj <<
+322 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [193.9002 358.3426 226.3083 369.1819]
+/Rect [247.2111 346.1085 282.5284 357.0374]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+323 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [399.6904 330.1682 432.0985 341.2865]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-312 0 obj <<
+324 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [247.2111 288.3252 282.5284 299.2541]
+/Rect [252.4315 248.4746 287.7488 259.4035]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-313 0 obj <<
+325 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [337.8484 246.761 370.2565 257.6003]
+/Rect [193.9002 220.8582 226.3083 231.6974]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-314 0 obj <<
+326 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [247.2111 176.7436 282.5284 187.6725]
+/Rect [247.2111 150.8407 282.5284 161.7696]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-305 0 obj <<
-/D [303 0 R /XYZ 74.4095 789.6651 null]
+315 0 obj <<
+/D [313 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-302 0 obj <<
-/Font << /F14 209 0 R /F57 160 0 R /F8 103 0 R /F44 100 0 R >>
+312 0 obj <<
+/Font << /F14 215 0 R /F57 166 0 R /F8 107 0 R /F44 104 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-317 0 obj <<
-/Length 2577
+329 0 obj <<
+/Length 2543
/Filter /FlateDecode
>>
stream
-xÚµZmoÜ6þî_±g\õÕ˯Üi-pm.5îphBñÊï¼»îÊ®ùï!%Q+§AP¨¦ÄáÌp^rÃüÇ¥bª°zQV£ùâ|sT,.aîå'¥SÚð]iQ°Ê±X¥L¾8;zü¢ZXf0³ )í¢4Ƴõ÷Ë×ÍÏ'|yÏ<{xϾ~üBÉZY2.+T ×ÔDùÎSöXÆ+£ðv'+©Õò-ëQ.9Èpw['Ï/ð¯ "÷zMµ·ø.iZ.Û0Ëæ'(¸Bk?·EÖ¸
-zã ÷éz±\ßM²[:-Zv²Ò
Y~ErPõ·võöìöà67L
-
vçY
ܳÛh²¸?7ÆBÛ±0<î¾·«¦¶ÇÉ-Â|©¼SoÉËø²õë8lYñjù-|Záü½3|CË[X;Ðvôü,OÉÀÿÙ²+íçöDó: ØH¿JvÌí{y¨{êIUÀÎúÒ&RÖ¢KHJ[å´hB<ì0¾¤À8õ®ùò¿Ëe㵧É9¿Ì'RÜȵ¼õxÅt¥ýî±û7¸T°%Q 9lëç£ï,k°Â×G¶R{tãÖÅæH2[éðz}ôÝÑ¿:CE«£3TOc¨¬´e"5nQÑß
-]ÀÃÚZË$7PªÊºf¥+*9?r,4 ^Âã/Ü£Üü<S
ØJIE
.8ýv\WìVâ§(îò²Ä¡íç#_¥M)À
Ê[ PR2gÞs1Ôª§ÌÆP%ʹj,·g+.!¿Ì@ì+×@øò)ÙÞWÿ
+Òxþçâ*#¥ûß Fy¨ÿXdS·zÖÃí U1Qj°½ÉéÇM
Ù¢ß8/¿
-úöô¨8ÓRðÃfT3Ò+ð²¦/}ظ*µdÓQ¦-J2sQ²@6eåvQ6²TìÖe±ªêDSKë°OjVUßè4¢¸ÅªËuá£ñ5ú& ©¶Ëï´5ÀâbÀëÚQG¶ö_¹¾~È[?á
HkêsýÖ¿Ma>WX>U5çóìÏÙ¼ÏÊí|>÷y*¶ó±óïvìSa/ïWÔиw4`ôL+Ь"DÈL8!V¯¸!bæ$I+f
-JÝBsèÀÈ@óØ°[¹°Q8ÎM¡m7ç"^6%Á>
í
¶ã6L¤@ÙVCúi±e"ÐuEáz®
ìt{<{ CØÛaõæU¶xÇX+çºH _¥Æu|Äö°W@HÈÄ>Ãn¨f´ LlÀ¶}-> ì¿@ØKñxÎk àIk¤÷ÚÈäÝ æàùzyû¶ñìûÝä ɺ!3üD8Fͳ㦧FáÐvUTÜÉ:!ñÁ:ÕrSo½+àM,yÝÞÿ}ö~æ§AÏÇо,ÌBkت¨fÈW }&~Lç@[èp=%QÖ)8BôDã:S:4GlõvÆáîÖSïºú#~=!]ÅÂû×ý°û^OLðH¥Jø( ÞsZvç×¹;È1Mûsx(-=Î ~©AJecíñ¦E{G(·u>@
±Ò%Ú¤Î5)¶©øÐDM(øë´{¶I"BX(Ç9Ø(°Ê'âSÌ-µ|¶Ûlv[gÏ%}67×M6» $eUøá³]&kgÒ]ápúÕ£©ßD7º¹©v·þýS§¹H±\S$á§Èï6ÜÚýf/è}ë¿%A9:
{;¨»ÐBdÏ`áK)5OdY¥,Æ'#UðæMÁ¦n]ëÔEô:k:Uá§Óþ¢>¿IÎaüO^\ü$-nXbígBiTá~,ð®ÆámÌLÍô«tÁøv`ÄöM«2`ɾ>C<¨f´Pi<Âõ´ðî£3«§õ9E|Ц ¾ÇZIsn\Ób7{½gÑ]_þ1ÁÜq8ËDB¹q{
-ßè/·7Ùeù»ZMõÚ¥¤4g¿¹8} ÓÊé»·JR¶864+euWë¢Há
¾_ù®Ã4U}<&Ü8Î=z|Ûå¿S;ôà»×~0cÜ0ÁÉ_tkÙg·ó`Ó¯ )Õ·ì°{lêÚPïáØppçè"_foßýªAñîªß³#Í$Ч¯;MÆ~½ïÈ|qðñ9¼/à\@}ÐLÀJåÜE} _¥Æõ#¶háï@ÿÀóÕËR2Yz Æð~>PÍ%á<Ó¾=¾!G<FëPÞ|ë`ií/A®[©ú
bÓÐ
÷çÒaÕµJÐݶõ¸SlÝ¿ ÊÀRHcØrx]ÎýÆVÈ"Þ_Åþ4f*+9«<i¿b¯&º(®ø#}ýýfÓxX
-É*S.$`m-í\ä«~äéÓ¶h §Q =ÐfnjF
ᦹék{CEl¯VÔ¨ðBÛX±Ñ¢²n¶! ×>E%¡ÈÞ/bíî:
-`µkó}|äk*@.îcXNâ À¬>¤,¦A¤>æ¸G¶_b¹çSqÅ7t?¿F¼¦Çÿ%N]ÿýA¸ÿilMÑáj7ØN¥àyñâcAú{êù<úeH«é\Üô|3 Td¾MrR<ÉÁG$äWR°¡@Ñî»Þ4_òØ$"ü+i>bAWJ ÄçÉoX?<§ç.kH9ZN¶î[&</שxE¾{B!·÷SF¡rÉ[8ýû!@9cN9ñSæútA?+c÷÷7æfþÿçUË1}!Sõ6´§T«ó'çI²à²ihÍu`é«Mø©«Ç¿Ñ¶~/»Î*é/Üööbæ4w¦¹S¯ã¨à ²'+kø8MîU$7û®°tÑWsÏôíͽ|3y3±;ÿ~@}èªùû©Æõ_èÒf[{ Y%Dã+a+ /û fôÏ@â¿aËüìc£çendstream
+xÚÕZ[o[7~÷¯8Úú0w²,É¢}èfS¿uBd'Ër-»Y÷×ïo"ynrì¶9CÎÇoHÑEÿèB":+ÚX¢¤õî¬[\AÛßÏhB!/d1J±EòíÅÙó×faUL-..QÂ8·(ÑÊêÅÅæ§æíö×%màïüÝÁßvùóÅ÷Ï_Kõå£P#öYÉG/Y(ÑÄrnà=í-c¦y«%ÓÍoKø¶õ/WþãpªÙ®ÑuT lÓÍ
£y;ìüÎÞù¶ý¥ï¿ Öï¶7ðÿ÷î,[Ñæ»K/æ¼w3ôÚïÂ<]^ÆÙyðü°àNµvÑRJ¬ÌMÌvγ?Gm?÷íÎ#÷ÁEøåÆ¿§87ÁÀ«d'¶Ä!ÛÐý }ÝÃ
+í<{u`^"F
´`»[ØtwdÞf(KòmÞ¡²þ°¸·¸©0ÇÚe S«ì©°¤f¬ÐHMiÅ6:|°ÂÞL/tG<Ê
ÈÆoæ`
Õ ð»1Ò~J)&åb°áXf,Gû=ûéçn±é~ÖnX|D_[ìÎ8±FƯ×g?ýó¸"iÀ6ÑHa2Çh«3Åh±_À>îÝÄñKm·å4º/hwpÎn«²²ûÆmAÙÁMµp
+ÁJw8ÂU¦ ¨Á¥
+L;1O§ºèä«`!p~n¸ïGØ6JçÚñ¨îê!»ßô¼mV¦#$áùG©6s@×G,ÄÁãhh
+DF=zÃôÞ(Õ×[¬åU©}ãm^µ÷Ý¿Ã ùþþív$mÖ!ýe ÉOå3 ©U:ºå|$2aë´¨¦7K|¢¹òþ°hÄÎËo¢½
É^æ$5£Ý7U¥ö:iÑq)E(3²Ll
+eQlez(«õ£,W{Ü =¨ÿ°E`ýâòJÈìt)Æ:R
Ù*¬@4QÌèrFa¦j¹}Î/Oo\ØüÛ+îؤ|fºïpqBW^nµ^;1lZá¹öüÛt¦õ¤'Z°Äs¼rÎç¹ÎDGrAØ¢Ø<&õTëFP®ö >àc´9Å%unq~ó
S$I4c1}a°N Oª08 °À $d¨=¥ÐÐ>¡Ð°Á³BKÑ/4ð¥Y|F4Jâîëu°èDY°ÂçXQm£Ä>õ{+;åÏæÔÜWpäÅ>KêÒüÜ3V;ÒÕ¢i>èøºÎ^£uGªUû¹Z
©Z»»Z¥´¼ÚPð@ÀJWQF8ïæòloó½L×öÄE@õÞÁÌ*{ªp¤¦8Ƽ¸4.Ã5Ëá>¼È#7DϨe Tj¥O.e$!¬þr¥L>âD)ÄÐb®~ßÎUø³dâ³Ê|q?&©?Sa yG®ÁtÂÍÅ&nM¸ÓzSÂíéL¸
Ú?DaPNï 7ÑÁ è)
Áä2ií±0(´?©0°1feØÊ¢Ø<Ê&õQVëFY®öÆíbª_²è¡)ò©ßÜ'_V¥aT#ZÏû©àýôDROsOüºqÒ
müÛQzöNý)+jÛ®ÖKw@ê¾q whAçr±)G±yOê=ú¼Ö;ìó\íÿÊÏÀ /©9§@@T¢æü)Ô\i?
+¢º°CW Öº+ ;qm®#
+ÈfTÖÇéÛòHGëéÛìHßZ~\ÎÔ º®d¸ K(ð`5A÷ðxêý(íeà,c5w|Ó©ç²Hoóý8ÞöDÚËÔ#°+{êl¥f¬àÒÒÿí¥ø)¦È{ùy¯:vâËñÞ|Ä ÞÄÐâË}í½þ)'ãÀµÃ§rà|q¤þLXt¶f3*ÈTIl6SMëMª§w0Sjÿ¸Þ ¸7ÑA\Lô<¹ÌG<=ràBûï)NzþL¬e7Ϭ¹Âf5o¶Vtèëc5økZßâ³ü1ù/¯Ñ6üíÒðæâíüûý]8[ܪVV
;yZÏ´È5²!Ón~ác Fg'.\TgA ±2Íê::kµqúÜÛ¡%À÷KpîÏÓ7áÐ0íãÜSÃBaWáÞ3èè*½²Ó&Ä% ³*V$W%WVWu,×®÷»Û àû#¡øm¹}íò1h§p|c7ðÇ%`é?ÿú;<.ßlü5Çýû@Üí÷¿Ù|R
+<mwÛãëÎ~Îp !%÷ÛÙ=f·ºñ
+¾±æ¥ØßùÏ_à×¾©´yÞçsHÝ©ï:"¥çsA¾Í;ð¹zع(aòJÎÒ:"F©íÀIþ¦ÐÞ'ä°D®ZT`VìW;ì'½ÞkX°âûwÉÜUxfï*ÒÛtm5C4#B¶ü®þ*Ãü:t{0õùïYh~·#±È'¡ë³Â%hÁ*»,ß>)Dj2ßPrÉ3WÁ8ÕÇÁð¥bjÞäfÜ/i¾£±È;¶L£CÂzL4/÷»Ý>ÜH¾×I»ÛëíàXrãàË}:-1'p)|L=8âòÚâ1û4zËü§=þÕ& _¥!ðºÁµà²¯Cëeø~ãßeìÅø=HXD°ÁäXR³hQ³h³úL.²õ(=¹f+@M÷¡ (¡Äuv¹w^v*ÇKäï·,EÒOêż5Øù¯;Å=ê²»,ñ²ÙP(LXÇìØ\ÐLòmÞ¡_©ô=±¦x©D±´§fíQjÆ
+ÁD:YXQÞç#t¤«ugWÁ1N6÷¼
+]ëÁ'B÷9ùXÎsJ¼ÃMkÁ# A^8ùª(Î3ªC¸vQ©â?â73ÕÑù 2Î*goßþ6µw
+£hßâ!Y(¤¶^2m&ÔOÙ%Õq$wjÅj}é÷Å
+ÿÁ=Î:endstream
endobj
-316 0 obj <<
+328 0 obj <<
/Type /Page
-/Contents 317 0 R
-/Resources 315 0 R
+/Contents 329 0 R
+/Resources 327 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 262 0 R
-/Annots [ 319 0 R 320 0 R 321 0 R 323 0 R 325 0 R 326 0 R 327 0 R ]
+/Parent 241 0 R
+/Annots [ 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 338 0 R 340 0 R ]
>> endobj
-319 0 obj <<
+331 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [442.6299 746.8856 475.038 757.7248]
+/Rect [337.8484 746.8856 370.2565 757.7248]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-320 0 obj <<
+332 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [247.2111 669.6024 282.5284 680.5313]
+/Rect [247.2111 676.8681 282.5284 687.797]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-321 0 obj <<
+333 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [214.901 616.7703 247.3091 627.6095]
+/Rect [442.6299 609.4011 475.038 620.2404]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-323 0 obj <<
+334 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [217.5744 555.4411 252.8916 567.3016]
+/Rect [247.2111 527.4285 282.5284 538.3574]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-325 0 obj <<
+335 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [108.8202 463.8776 141.2283 474.7169]
+/Rect [214.901 471.9167 247.3091 482.7559]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-326 0 obj <<
+336 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [405.2133 381.0078 434.3737 392.8683]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+/Rect [247.2111 401.8992 282.5284 412.8282]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-327 0 obj <<
+338 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [322.8707 369.0527 355.2788 380.9131]
+/Rect [217.5744 297.0727 252.8916 308.9332]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
+>> endobj
+340 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [108.8202 199.5738 141.2283 210.413]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-318 0 obj <<
-/D [316 0 R /XYZ 74.4095 789.6651 null]
+330 0 obj <<
+/D [328 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-141 0 obj <<
-/D [316 0 R /XYZ 74.4095 611.1535 null]
+147 0 obj <<
+/D [328 0 R /XYZ 74.4095 353.3613 null]
>> endobj
-66 0 obj <<
-/D [316 0 R /XYZ 74.4095 611.1535 null]
+70 0 obj <<
+/D [328 0 R /XYZ 74.4095 353.3613 null]
>> endobj
-322 0 obj <<
-/D [316 0 R /XYZ 74.4095 568.1002 null]
+337 0 obj <<
+/D [328 0 R /XYZ 74.4095 309.7318 null]
>> endobj
-142 0 obj <<
-/D [316 0 R /XYZ 74.4095 544.7612 null]
+148 0 obj <<
+/D [328 0 R /XYZ 74.4095 286.3928 null]
>> endobj
-70 0 obj <<
-/D [316 0 R /XYZ 74.4095 544.7612 null]
+74 0 obj <<
+/D [328 0 R /XYZ 74.4095 286.3928 null]
>> endobj
-324 0 obj <<
-/D [316 0 R /XYZ 74.4095 510.9338 null]
+339 0 obj <<
+/D [328 0 R /XYZ 74.4095 251.9893 null]
>> endobj
-315 0 obj <<
-/Font << /F8 103 0 R /F57 160 0 R /F44 100 0 R /F14 209 0 R /F52 153 0 R >>
+327 0 obj <<
+/Font << /F8 107 0 R /F57 166 0 R /F44 104 0 R /F14 215 0 R /F52 159 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-330 0 obj <<
-/Length 4358
+343 0 obj <<
+/Length 3814
/Filter /FlateDecode
>>
stream
-xÚ[m$·qþ®_±0dÖÐÐÍwRù$;¡ÀëÁcn¶wo¢Ëö®N ÿÝUdñµ{zöà0·ýR$ÅbÕSUl~3À?~cS×7Öyfæ7ûãgÃͼûãgh2LicáfáíV9cÄͶîäwo>ûíWîÆ3o¹ysï¤êÆάñöæÍÝl¾¾¿ÝJ¡6Ï·|ó~#Þêx¹»Ãÿ"Áß®àö±Ð¤&»çH±?n
wøï¿ _¾÷÷pù¿ósüZ}«÷·[ %{|õtûoþí·_i[MCpÉ8wæ@Ïð{ßÛ 2¿ÂQþ6è!þá±ÏZ2F3çu¸Ã¦säââtdþ]%¡õYM3¡7[á%óÊÀ*rμÖ"ðð_ ·ÂnvÄGxÀKµù#îpèÏo·jps¢É«÷M8q¼«{[ôSäòO@D°'A£ÐÌeª43ÎRÛÄÌÄw|ÔFÉ">!èär êÇx_ºof¸[³Ì(!»Ù=ÐÏ´c\&Ø¢ÌséÒ2ñF÷Í@h¦½3¢R¯ûgºû g¦«|Ð Än+PÝ=uBRþKSâY!|5¥8
8¥ük`Ö˼NaYo£öÒn[K5zÎñÏ¡Ú6 ¯Ëlb·[Ûî[zO2DûÉp{O#NR_°¿ÃËÈbXk9LxëÛ-ùßÔzê¦R¥(bø#6û°Óïcbt¶ò]dé>Ë¡ÕgxÙí{Éó¾Ni\4I´îEü¨ ?'="ÜÍE/=sʦOÑvT&Få´0²»<(³°îÕõxmàHÅyGr îØfËæÝÅ}ݱæNåÝÃ"Rh
-ì0-E«_¢i¹ûç1Þi""È|Cøã'bò9c\×yJßãBn
:ÒB)¦µM÷>:¤¿ÓÑrÍÅ `}A_häqì%³ª83ÜéUç|aÈ4¿·Ôàwo°t!¼ÚüÂE6ýÈÖSrÖÓHoqÄÏþð¦à)? Ìåè}}DUøæéHþRá«L¾ègðjÖ)Îå}BÙzf2zk¹ñVXÈXr íô2²Ptÿ£ nÞ$4¦\\âé
ç¹Ú« `Â2OñùE*mY¥U¤@7[ Ì`7Ïb}u2ý¶n0ͼÛW®¢Z~ºÊTW¸À+@>ÇX
ddàä8¶Rßq[xí72b5òwÑuÅà¨ç?¨ÎÝ=Æ>@RaÓ;ÚÒáòq.\Í1°¶GõÔFú¾vþclÕaA|T]Rà`
ötÿ¿?
ßzÁvq<YϱoÛzá%
-È
ìáAl]W¹L¿Ì{ÞíkU6ÕVtüô*¨Ö¹ -TÇE\R«`"²¾%¸"«w1Þ×Kþcv©°èÊâvd]ÃÕ±á:Xogf*ª% AÎu}uëTh/Eð(L`7O±ÐáèAýup-×´ ¡Y Q{º~_C[ÉkË_e»¶<Ësu9và7m˯÷ïVUEfç8üÃøÜK&<§ øàÈÍ¡XõU©xR`<¦¸×VjßT«hF !l'bü×Ñ쯯D7BhWáKÔ;¸n<Ø®ýÁmàoÂâÍø3-}Fn!Æ4>²tûÓ6HëBäsååþS?Ì
LG0ÄZËÍק4SÚïÜ#ÖVqÐ4Ûø×@`¶K0îc
-,ã^t¸]D ]dg3 >Ý\\1É~[7Ãy·È.º©à÷õglX±ä%ÎTW·àü
ÄfðJû¤¬åÁßäðûX¨jËGvÓÉF¼$ºpjæè½,svcðüü. :«7ß_pO=Χi®`ôâZ4lúæ]Ò¤´Õuõ¯1d0zJÚðÒa<»ol,l*8mu|¤Á?a¨m<s÷1û6''0³Gê/ÁàÇ¿|ñÔþüÒ¹Þ¼?BÃ#ëu0¡z
pÂ{³8ÌAh¹ Vóï¶Þ3É1ÿXwT«&·ðbÂW;Û2Ü0¡¡Õ¿ÛL5·Ù2`ô
ÜÖLYßs;v]ÀÆé!Çض
6ì<
ªü1¾«=6Ë7q)SÔiZ.&h4\·y%
ý{°IÏÉç¥ç{Ô9ÏL¶%ÚjåWZ·¶:YsgÇ4Ðx³È®ÍgÃfbÃêð:I)&: eħån0g8&xcqºÔÉAZÃÅõµÐ0Ñoës<ë6ÆÚ÷¿?gÉhÊL¾@W2¦1Õw~¥db ÜÓN¡Ûjqbpß)6;2o"£°ß_è·u½¨Ä1q^/ÍJh÷ó, at 3Ix¼A'µLµÎ·ÀHR¶å{÷½ãQ"cïÀz »²ABëÍÜÖ¾hÂÛC"g¬e³wÂå
-®qíM¡Ä1x©w#¾þeP¬ֶäWó¼\;æ´àM¾vZðÖ¹H1È«.|pÝ©ßÇè'Ì#|PÞ§t at 6@èf»e"$üÅåm!!ÔôW âF
,:1¥®tôX*ó³ÿ%ó¿£û©Ô2«Ócõ3$ßÁï¯Ôë¿Âï[Êü2'(ä¸K¥´XÂ
-àS¯ j
P$²ëbmØ
-Pôã.zØ¿Þ:=;
UV-}ðM- iJ)%öìrqwË'Q[
²
Ôq¨>B¯²×Å\pÞè{!^ÍI$íwÕ §d¤,F¥³R«Ö@Û¸ÈahȦÜïö 4PïRJ(AðÐÓD/KËõ¼ÔÁÃ
A`;¨zUuÃN[^H²ÛãoCÄ?%q;ÕBU³ÏaNÀ^éâÜÀë?©`¬GXÃ
-þ¼ÍæcÁyÊï>Öãëºüé[éK 8?ó¨÷óh
º* «"6ÁC§Qø.ðeõá*D½f³àì¹xÊU
d»dÏqL)½nÎ*¢k¨®³µ1-ë]4eõ£Ï±âátm!Àº$± ѽ5Êî(´¯r¾Ì˶1=¾Iõ±ø/(GùׯËÖÌY&
=9Ëd©(?Qj¼ºt}7'®}ÓàA)øã)ásÒóL¯«î)îÍ#öìmqWyÃ~¦§àCOM1Îîì~$)`¥¬<M.è;r;ßnø/ZIýÍÂZ`ÈtÐìz^ÆCýáTÚñ*Kc¿£ÂiZ.ZQö²áéüUÝsJ¹êr5|qÚü`}7ë/IT}¢$¬uÖ®N²C^¸è$vÄa@ß2ÂÉt³Êd2uª"Ëj· .Êå³$ k7¡Ã¦;¡~"J/íÜOS+vÁ>%³\«äؤâæâ¶Á¾ù¿&ÝúÙô¢ ëó/%õ¶fÝÁéåó^QÙ÷DvÝÀ¯
[Yø~Üe_ûⵧîXY
åýe¨ |B·Þùb]üó6w
-·Tí;Ývøâ¥9®
(§W<'ŦcÁPUé(Z*k"îö5¯ÏZå¤2ÙK
-:{üõaY6ýBiÅ´WbÆ)~-+è·uùͺ½Rapxõ¥a£×Duep¬JÁ/ê¾ÂjMÂE pµ¼R8~¿y·¡Åw©¨Ôða5óÒ¸uédª+£Ï:Kt>B±Õõ1¢ø\!Ám¿àsr
îS c^d#YÀ0Ǽ¢+GöÚ
Ëôë¢w[.hØRºöÖ.符_M Ó÷»ÁÀî§ q¥X>k¶Õ|/,;»ª¶Îö 1a!Q/[D¾>~ßi²¡¾ú°l¾óð¡K¿&L´Ê
ô½æà¸;ZÕc=§
CàX9Xÿ|æѪÍWÓº³:¤ÎÏãµÊáÕ©náKŠܤÀBx¿XÀNsʺ*®H)²÷u
zvöA^¾îD¶tH9ÈaÈ./)¦nHÚÓ´{JK@.ÆHv`FüÑX%ÓñHßòñ>ÌóHß1'Õå`æþ9²ÝÔ(c7qoÁdØËòÙSf
mÀ·×7~[7o³Y·Wü-HMBéØevêÊà`ê PíàíUUN¬ÊÍô.AëGÊ-ázÿs"P ±X@4¤ì³ÅäÖTHϬku)_çcã4µfíSݯ/ÕûpÃ/äÛ£OXe¥ç«wÐP*îÁ¨P/í-Eî«¢ÂXe¹ã|ÏH!ìªÚì.îú©Ï©³vDçóöÛ8Ѥ/§ú¬%ÀéÈV%édÑC¬D>8¡øµSªþFH¥òBÔaieº$o:I":==;Ó©æ0Pbáiu|¤|\rU&m.ûìmì,ÕÓøçá\^ïJûåv³,Q>ù¯¥´ÃïLý!˾*³ì.,±f5òÕi«æd¥,BÚécÉjO%¤BfªµÆm*
-¢¥`T·/.Cà¬á~âC&¥r×KórY
-É3Õe*WWÊa¿T_Ãå7T
-ÃÐ_è÷%Èx)
f¸Å¶þ3QŤ¾ùëÅ8}Ù>\qÙJñt¦ïÞõï¬B·¿"Xêï*M¾£ë'øîWÆoOXÿWQ,|u·
}eùÄ«°tþQ¸jÏÁè}thÁí+lg¶År-¼÷á¬îK>Ø_Ü5¸Ä>>4§íD}dSØþ¼eÍݦ>êk>Ç=¥SÌ+ÙùãÓw³óitÆ 1[ýI·úB1[U|@A¡)^Ûúþåx*õq19ªÙ~[>B¨t¦#ÍGrS©þ9¬÷BâÐÈ`Å/*ÐZæêI}FúÖY
O¬/¥åDwÖO¼dc&ðTf:ËOõÁa°x2{EÙ
-=V88õBs-Iè·uy`ÖíìÒÂr¶lôg¡èÊØF0
qL;v_FÎgnÊ'®ró{r§Î1)¶;ïá¢gô m#öD³æ;ÄéFÒrÀÅÅ/ÆüàÐendstream
+xÚµ[m·
þî_±
à®ðNFï~H8HÑ&Eâ¶"XïÍ·¹½uwÖv ÿ½¤Diô2³k§±gGEQùÙª?led'{§VƺNkÅVÛý£~um_<bD#¥î¤Ò~Ì´®ï;«5_s&>{ôÑS»rÓ\¯Ý® M(!WF³ÎhgVÏnþuõìÅ5»®×Ò©«ðzçðþºÇïûÐàiá^ÇðzWlÞð·L¿ÈÓçxŦýG|
fÏe½ï^Q#·WÄ}7q$øþæ«~С>üøvõøz
(Ø^ùÞÿ~öçÕÉÎIáà
uN)î5åÇ{D/¯×\n6/i^Âû8ÂË«@,¹¸ºÅÉÃûü¼«B£@îyI+òv¢9ÐÈ4(²A.w÷$Fß÷½êI@Âm¶Èó1ÎÿÑçÏ&ËëuÇ{§ÁL]gTÁ ±éxG4ßd¦è×yÆ[¶¨áoAÂóåBtÂUQíDuapa:ÝsW~T
+zh!PZ´5P¯I}7QÓ
+ì
GhÑ1{,yÖûaÝü¢>P߶6æj3Aí.¬\%XUäÿÑSe²y0f:²Éã(aÝÜæ3f®ëE ß Ó`e-SÎ;ÃÀÒ×ÄsoùrÙqÕ"Î
§¿7?â®Aâdó-[°à|YX«¼`g|Ó7+Ý0E1_Æ}å=<4Â(媦2·DuAæ¦.¥õÊL`Ö]Áeðo¶¦\rÙ¨Qïv¶}ð%Þ o)r+:.9+Øx¸OëB+Nìiòáá§7Ñ{r@~¼Ifù¤V]
+g½ê£9Í9:®ÄB4s²BZÐjÆÂkµ0TÑi6
ÓûÐûº ÕÌeªÚíy}ã×ÏÐÝÀóWxwþspAQ)ÂóÐ=¾çx>çzðý;âä×ÌSÿ~Í>mÙ÷=ßi$òÝ [>4U,ûåáù¯OÃÿB¡³¥u9f£áí
ek>êÛû5ÊÎ)>ööåD?¤A~"2dí!ê-ó¥CÖª,«4ù{~Û0-¤aißSü
ú9)äH|M,·¤÷c¦°É~H×rRÈçâuK"îhí>&07_Må>{§ÕÂæç¦;o8gñ·ÜÔë·3úK¶Ò.91ßò;xýã¼hóèr%zJ:ÒVÛÏ»ÅÍÝþA¤1LëÈ2x
M«
+î|@pa¨1Ìå0i%ð]ÇBiÍ<ÎÞ'ÕÜù¼Îx}¬,{Á°f6N5ÉÀ)nÎS¶aɱô>T3ÿo±÷t©§Ù½wï̾YÏÂNXðÜïá&oþK×þP|GÚ/a©EÕ ¦àQnnB¢è ¾ï|Òx(¶6qS#bd¬âÐú)üU&n÷fáøSY¯ÒF3Zj%1Ü ú(ÅâTþE¦¡ó³¥
UurY]ÁÀ·Ø2Þµp" òML³ñ¥Òâ7~¿F${$w¢\ø]°ôÑhÆm&1ºSÒ¯¾:ÛÌ
,«Ñ©T¶uêA,^Y
Ñd;^é%Ðûð{Z8'ËnæfgöCêXÍîfxHÞ/`æÎ1açj;Uú¥:å¬Îu¹nOÉ-bþ
Ó.AâÍ%`6[b?C";í¤¹ÓvCâÜ_ uíbõÁ´v@,» ÏõÒn¤|ZC»iÇ~¥Ùè®G=_ÖÙém÷ux^ÔK!ýÏ[ÙK§WظKq-ú¾ãÎTå¥ÿÆ;ÙdÔUìsµ_Äq¿öCÊd}õ ÄJO?Ù³èK{Æjßö=0EQÆaÖ=²N`õ°o ÷)3VõÂuVØñKÉÅ lfFVà{©gÖ½©¦ÂWç
Ê®IûE·¥yçl#Æì¾®Ä w'Óîéyv¼4OеóÄþ4ßËNÕÖ ùo©Ü¼ßEõd¦<$ ô«4¥¯a!×ÜöU<©T!e§|ã·j°.7¡;ÞÚqì9·*Y§UgóÂq~ϧ7®dÜX²ß´ýùäúQ¬cÖã@M¹ÒõÄÂEýåªi¤_çÚÂeÃöëYé gñᬱ±ë
É T¨rýT¨T¨_Ñ¥MO0
4Çð}Ñ«
+iJG© 3Ò5+$zÖq®Í4õÆH¿Î;´µ¾í»Vh¡§®8FªR<K!À
c{À:ñºr§rã¦Ô2ÛУY
¼»«7 6ISÀohñÓ/ÖNT¸ÐKWâûÀl Ëü¸µ©¯±
+ϾÚ{ÑR1ÍFú6G CèUBü½ÏØBý±Æ÷wxþâQV#oS"|¡±ãÈ%¨ ·Ò^0¹D¿Î;4ݲ}WcX6¼§6¹Hu^
+ºP\VRU!³ò."Ù[Ĩ²|ãï|ÉLqëÎÓâu$[G,?ñPß½·ºñPÁ,2¦ªìèéµáPFÊ&µO~ÑÚ=&G£{óWUÀ»8§9 eôZ.]6F¨Z,{@KÒÄMYñ»\Î-Oó»y£´ÌÒ³Cþn8Õñß)x+ã[\IÁ²®RÆìû!fÇCL~
X¥jrÏ@°Hð³ÕÞ&Åá\Ùd¢µÞcvíÀwm¤ÓÙ3´Þù
1ÃO´ôìPÇ·&ÄöõµÒìÈê4âSù:aî}Ð?Ì:MSJ«/âdâ~÷à1&KF¦ÜÚw6ÏÓÙ
eL¦có2zÔùòàÄ.%%þ[ FvÚY£:θàý:ïÐ8ÃíùÓmf$(UbT8Q]îu9xf}BäzJ`]¥|_V'ñÇè@Á¢ø*m-È_¤¶F1^¦³¦c}záQWßîN¯|1zwx[ÃZ£íí]v?å-bö^ÈÀ rY"L wY]59iz)5äßì&´1³`®ZɸñKUàÝ|>ªûè÷ñrû<(A?³{âqð}&ß@Âfi>j{xUÅÞ´A|Ç}·tp+z×õ «ÞûàRËué´v³÷¶ËdQaülK"#äj=ÃtÇô:'ï:Qµã{¼>Ââ;CÞ·Ç
+9oAXcïSöýâµ'wÙaô²*2¶÷}L¶ø#¬ã=ÕËê2EÏÙ2÷²Z2g¡?de}vh¾É¾ÏlRksö.Y09ଥíTª
ºèrl¨ í_¦+fé°vùvLweà=j); g ól°§ó>xE 6D/Ä
+áCo ]È
#ý:ï0{¤d|cîÅ@ú?öûÍäYpÓL`¬uÓPð;Ü7¼üÑð)§PßTç+¹T,vdÜDÜBüÒD¿Î;,ïÍD5§6¼£ÕïsjÓþ¼,Ëû©Éдê 3¨´¨ÎËÍ1ä½)åmxâ
¼x=У¿Í´A|©«OºÍ'½è|ën"ÕE±wè¾#F\=sú°pO± Ä·!¾l"LhNÜæ¢õÙj/S¶³³¢j;I.8cíI1)ªÎ"|Ý,»5w(/ÙU7Üs±0]ÖãÍ2~²¼-`ÿsafko ŵôSbMY'«9öJóÀBN#½çKßì@𹬾Sß cå¯è:ÁwÄõ3ºÏO©zòyyØ~Èýãi®´ ë¸Óö<¦È©Î`DvSvÂ͸ó~+ö»k+Bp¬àË˲7SPï]q¨4Óì¦ü³:ããiü
ÔU³t4Þ-¡ê$
+*/~Hg²¿1üBÎ
++HZo <_NÑOõSÂ|âõ5ï>YáoB[ò¥±þ»^rbzêö4r©qâ8°g.{SÏßi åðC¼¹NyþÚgýcT·%J©/b¤LÇïø.á (²ðþz ðYÞ`½CèPB1øÐýÂ
ó!4ççðXÂÙVb?YüλO½m6`5ê{4swX£Q6ïÅþÏ°ü=ålÍüì)<Ö«|Á£[òg̺N:ÆÎû³ê?KdýÙÙa'Ö;ëÏaPÂtP#æAÂGÆF½ó®wC9¶oJ33U»lòñóbMÕIÀ¨ìWN=SïVGÍ
#çLvú0ÍÙ¿¾ $sgô#)!º[ù¦¶+ñ|ÎÿñÒw©üy 欶{׶ÑI"/ïu½«38äþwN¸nî9g£t®ôsG´\('&¢xÓðkBÿÉn¡ü
Ëv-0wM7<hvµ,îÊPàxÈãdÒÆvóoī켪"N;Z³xkÒÝ)_ÕT|ÕlvÚ¶\i\5ë¹ï¡ #ÀÍË @.
Ièa¸¦Úptà]S Òý4DÅÁÅ@§¸ .ªêöM9Õµ1l]]ØÁh
©¥¦ÖTÐJG¼àTÑ9ç&95¹VÝÆ!ê×ÿoõÍc°Æ³Oð6¿3Õàf||, 9îÔÌàFuFÔfwZéÊÉÄâ¡þÌÿzôÁÚendstream
endobj
-329 0 obj <<
+342 0 obj <<
/Type /Page
-/Contents 330 0 R
-/Resources 328 0 R
+/Contents 343 0 R
+/Resources 341 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 262 0 R
-/Annots [ 332 0 R 333 0 R 334 0 R 335 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 345 0 R 347 0 R ]
+/Parent 354 0 R
+/Annots [ 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 352 0 R 353 0 R ]
>> endobj
-332 0 obj <<
+345 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [489.4544 710.7411 521.8625 721.8593]
+/Rect [405.2133 746.3276 434.3737 758.1881]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
+>> endobj
+346 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [322.8707 734.3724 355.2788 746.2329]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-333 0 obj <<
+347 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [300.2304 699.0649 332.6385 709.9041]
+/Rect [489.4544 431.7872 521.8625 442.9054]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-334 0 obj <<
+348 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [286.2454 687.1097 318.6535 697.949]
+/Rect [300.2304 420.111 332.6385 430.9502]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
>> endobj
-335 0 obj <<
+349 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [143.6789 651.2442 172.8394 662.0835]
+/Rect [286.2454 408.1558 318.6535 418.9951]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.python.org)>>
+>> endobj
+350 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [143.6789 372.2903 172.8394 383.1295]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-337 0 obj <<
+352 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [356.307 573.1126 484.2022 583.9518]
+/Rect [356.307 294.1587 484.2022 304.9979]
/Subtype /Link
/A << /S /GoTo /D (other-common-types-bool) >>
>> endobj
-338 0 obj <<
+353 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.2376 561.1574 266.3938 571.9966]
+/Rect [120.2376 282.2035 266.3938 293.0427]
/Subtype /Link
/A << /S /GoTo /D (other-common-types-complex) >>
>> endobj
-339 0 obj <<
+344 0 obj <<
+/D [342 0 R /XYZ 74.4095 789.6651 null]
+>> endobj
+149 0 obj <<
+/D [342 0 R /XYZ 74.4095 373.2866 null]
+>> endobj
+78 0 obj <<
+/D [342 0 R /XYZ 74.4095 373.2866 null]
+>> endobj
+351 0 obj <<
+/D [342 0 R /XYZ 74.4095 340.9232 null]
+>> endobj
+341 0 obj <<
+/Font << /F8 107 0 R /F57 166 0 R /F44 104 0 R /F52 159 0 R /F14 215 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+357 0 obj <<
+/Length 4132
+/Filter /FlateDecode
+>>
+stream
+xÚµkoÜÆñ»
è©07Ü7~r:vØA¢"("8(YÈνâ(Aÿ{gvfK.TÆY<rvgvÞ3g5ügÞS·öÌ7pÎʳÍîI}v
Ͼz"Æ'u¾L<ÂÚ®MkÍ$TÛ
+-\x'
wG¨/.|öB³V´N¹³«3)¥P^ê³vqù¯Õµôçÿ¾øúÉß/ÒR:¡,¬Ê7,Ð&¨o£
3(Û!Úγ:ËÕ
|îøï-|®Ï+Ó¶pK5«øþþ¼RnÕíÖïáË6«Íú.ÞÒCZ²¦?oÓ¦ðÕ=÷· ìØîGÁ8¯Z#W¯®héÞÜߪw µ>WA שÛàÀI6ôè?¥;F
+>Á(ßßýÀR`¨hU?¦y35¶Ʈµ¢Æ ðÑáa¾ËEá«|A)²b[$é{ àø¼úª £AÉ¢¾ÈëKZ@Þ!u«ÈOêÒíê
+¹{S¥´ï±ÌIðóôÛ"}¯Q»oá¿oE«]3ϵ½Ø±?>XL
+zÚ[.ñÔubÖzÆí¯ØÏ^X¡hj¡je,Üúõxx/DÐÉ°2§M7¢Uµá
}OhvÉ ïHRp×k¢vÄ0ãjÑG{¬àü<ëÊm{Á½êUc¬À_xR¦#á)\t<²UÁõ¨§
v4m
ªÊÁJkpðP7¦ß Y#?/K3ôB¶ Ë!âÓÞ Â/Pl½ÁdÀuÑö§¬Öó|HPóD(DíPïs"vk¤`{òR«m*ÖQ°f«³äV¯Ðzá¬l°tàlàÍêÅÍí·óvõ
{×jººÈX!$)ðû)hàâ]Ô½4¹Æø-çÓjÈÜÞØ«ÌÍ]ãên¢uwa\÷ k»ZñoML¢Ë@ þ·Þ&DÚÛ°Mw<®ñ&EÎ}¶pê(ÒשpNX£Z^ÈsG>Ü0[úÎIògÎgÄb\dßç¶!#WJh5»½ø@!¾ÛÆS«[ñ¬9sàemý©Eø*_PZ±íBà®iHUFd]MZ@>¯n Ç j»¾#Dx½:âýÂl;¢$å/ÀÄôÒ*£tH«"Wc;
+v´¤KR:ö {ºbÍBq
KC¿».®2CBâѲdut±u4ÇA6<5ÖըȵQ«Í~0\ãë]wDE7lpÞá
¶:a[RéZF#Ù
+#1Ï3å'<æß´ò¤ñÆJ¨¦òï»;¸r_ Öò>HÓ}2qÓFÿÆ#?ЯARtöÜñ!·»KÚ-a1¸' ÷NÒDpJF¼ æ§qfÚCø=ÐøkOîï¡:aTø¯j[¸{4sQI^·qÑ`pèx½'Kú'ôçzO+mZ:þW]gl=!aEhcÌBÌ9Üq¸±µw 1LÅK¥;)½¢¥3äeV}±äQQtÔ:x<·Ö§Ê.|4ng¬Í ©Õdm.Êê¥yÑWtèÙÁ§økóu:ÀWäµÏ£¾v¿ÍäôWzügðù?xýOøHø<%ÐèîèëGàó
C>IO~§oÀ>íNaöRY®þ;Uý~¹Ù¨¦÷QùiÛO8x`6¼Ë4ù¯nà³OxäüAü©¬ø[iU¸Ä2rðSÎWèÁ+\w·Ñíw'h´90q/
Ýàr¹íp£´£ð 8ÞëÛèuï£?8òIÓÌKÜãCï.éFF²ºØ!u;>"×?áw}<Gbô(oë×r#ý~ä4n zzÐéDB²w[Y}À8ťƲv¸ÝïvA¥&«%EeúyyG¹ÒþþfY~å®2è× ðÒÑgsµÿÜÔÂ;k÷,×=%1²=ØÁRf¦A½æãôæ}ñmöAÒEBkyvà. zÑuE½m0t4È[ á
+Òÿ¥vA¯òe» Øv¡Ïc,T
u3"cÜÑe ÜN ¸"bfùÙm9 Çs<m!±30NFÓX ǹ?mòdؽê|û^u[ìUÏÑõª¼½êÚ^%÷ÊzÏð
SÌv!¼*zÓ¦PÈSoçGòèpÑجH>ãd®vB¶:¦ÞGFpÍ¡¥#mÀ³8ßY/@\Já'Ü ªc®GÝ,gõBì]VïÊ°¢V3Bº)Qrh
+8Ë#°{%s3{§ÛX|õù@±:Ш»Ó#ÈAîÅûX\[æA*zG¨ÔþO¤|!)ù8òÀ8ôü'2:w®9ãÿ]ê5¼+κölSÖÓ
+#Ûè ú¶ò¸? ^Û¦¤b:'^è±ãÀ±Î¸
pAÍ
¶.æÐfábw:\ähS¸ÀäñDæìsÊéø²Ïa{6ÉÃaSnCÐn:KÂQX²®X*¿òÚ+µ¾¬¡gêz«§Ùª*pÕ¤ Z)i/äêïeïÓßÚhc*0;
tïM4ã*|Êcê3¥Ks+$¨û9xh,^²J$®[^Zæoâ´$Àj½iÝ(2°9YD°aÌ"í¥1F:)å«[6¤{®ÕªÀª*³©mû*ëMÔh²$~å^HbðT¦§û@VÂÙ^Ö×å#õNÊ 25[Cq¸ lNlA³H{NÊ Gù20 ´ÚôÝtìÎ*Õ;±òb[9ê-Ë1¹¼*«âáÛÉ:Ñd4gð,}ÕTª$hvrÆËÖÝ@ ¬ýæ`3:ÀæudiÒéP~±ç~-¾â^í£ÆtáÒ
÷Øq?Æ`¬Ç;Z8-«°èáâhÍ'°å>&.ã/Ð%¿ ÑF¯.¾{öúÃ2<Ðëä&4gÀ
ÚêËÒIé/çãÀYekaeí
ÃSï!u7NËx[OeÚ`´*ðö</ùNfæ¶o£
ÐyÜÓÙVS¾ÌÒQŸޮö[~2ÊòWx<²¡S32 ÅþÖVH=í
ÿþI¾ýLBÀâ9z³¸À;Ð>+½Ò iG8O¿=ðØmÞ;PÿÖ5GPÈ<m3D¾[oHµ+ã¹Ò
+ñ-KåꧬYcKüÿïuü<¾H:Nt'°×1Ƚ^«á÷aJ´z-oM
koh|Í;Í:Ýà?~
âºõÖåÔDrTóð¡35«Md);l»UQ¢ñçªá¾¥ö/$³MÕsÈ(^@11¬TX?nK+<d2gZiøXêXGð*/ÆãMúÕ¦µñCÆíjGlµP-ñúÎHóÏ×r̺õ1Ê]¦IT°²hÈ?ï$L~ö´¼îCñ4#Ut½'ûªuµFÍ»ëjÆ]'°Ew=¶w×ÞIw=@ûú&u°@r>ª}teGºÛ¿sp+©éïsz4;c²÷yk¶kî©»¼§îÙf/{{ÞÓýÁh4Ãðuù_=ù²êéÔ;á0ýq3ÿqÓR~©Úä߶¯£R¨YNÒõpôHñtù-çÛ8Â[gÝðÅ ¼ÞìûÙ¢C³ïáaË|`
+v:e]FøIM¾ç.H¥½0^;óhZ®~Æ£ïñêö»¼Q¾Üg^¾!6Ð!48Q¦eÿ>ËAãU-·_ð?»´EëÁu嬪ßéÀ¬ÆúÅYñ_åÊ©ÕbÛùDYàEkìñÈlZ at nÐ^ú!òéÑaå±âkü£ÏáH(¶]Iºnúk j»³vm=Âôá:MB ×aF6*Ï~ç47u
%Vk˳?Ou¹í¼ÎûØáX ëZxkܤÎ$sz×[bt+ÝeÞb2
+²8yjG¯ÞèWùuhZØZéNFð*/ÎRlº {Û-8µ!Ehe¨yäåf<$oÔÀ_áxv¨p|`*K}NpÄyå\k{ìæÑØs®¨Óü,>bR#Â$Äð"ÞÊ}j lPêï§ÚÐÄÂÇ ØFÇ7
+\Ô ¹é]67ØÀP/5LÕµ-òµFÝ@UKa_ʹ#xÃb.6¶i5Ã$Ù¡CB¾CÍãÁ¬ÑÁæ<©ÆU²ºåTÃÚORz.ÕÄNÞ¾(;Å O^`>¬ºÍlO[Û§)¿Ñ¤é#v°·½bÍnê
]7û8TF£¨ÙëV«DãZ5LëÞÅYþ¾ÿ£\ÈÔLO+þ¡Þ]H°vôýïü-o}¦ÇB2 ÖûMàêeÝm ×Ëû¢©~åÕ®ÝFЮo3Ùæ»,h_â4Îï#Ó\¡jp"X÷6u9ohíê%Ôl¡ÇWg3zÍê+\ÜÈ5=|¤÷Û±
µeR»ôÂ
6ÌÎw
+IÝihb*x®~v.éÐVbn¿m þöÖâ¹ÅÂû!Ä#7EÙï2½y½ïâ¸@ßÅLEãýeßXÞô°]VS·$NrÓÛÐôs¶ô>¿|_odã ì«W¥ÿÐUüTû
äXùÚ~KäØW<ÖºuØ%ÍðÇÁÏåÖ\Öüñá{4Ѭø:4oh%Þnp¥°áÞ?àòâ¹ (c¾QíDªp\Ç©3NF¿Àr_äÈÔÛÞdÚp³-òQm[Q{#'ÔS¡(qJH¼CJ®ûÌǨ-ÚZÚG³#Â/QìDºïûlö:´CzqÞ@ úõ®ÐÔÈvC j8PBQ7üÄãdÌa3iFñõ dÊúé!ÑSe at emÕ*á¬ëwBìÒñYÏB@ø?S_r{endstream
+endobj
+356 0 obj <<
+/Type /Page
+/Contents 357 0 R
+/Resources 355 0 R
+/MediaBox [0 0 595.2757 841.8898]
+/Parent 354 0 R
+/Annots [ 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 365 0 R 367 0 R 368 0 R 369 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 379 0 R 380 0 R ]
+>> endobj
+359 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [153.5984 401.4762 182.7589 412.5944]
+/Rect [153.5984 746.6066 182.7589 757.7248]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-340 0 obj <<
+360 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [241.6158 401.4762 276.9331 412.5944]
+/Rect [241.6158 746.6066 276.9331 757.7248]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-341 0 obj <<
+361 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [459.8353 401.4762 496.9558 412.5944]
+/Rect [459.8353 746.6066 496.9558 757.7248]
/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:Numpy-discussion at scipy.org)>>
>> endobj
-342 0 obj <<
+362 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [120.2376 389.8 165.5172 400.6392]
+/Rect [120.2376 734.9304 165.5172 745.7696]
/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:Numpy-discussion at scipy.org)>>
>> endobj
-343 0 obj <<
+363 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [186.1994 389.8 229.7456 400.6392]
+/Rect [186.1994 734.9304 229.7456 745.7696]
/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:Swig-user at lists.sourceforge.net)>>
>> endobj
-345 0 obj <<
+365 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [108.1855 323.6235 137.3459 334.4627]
+/Rect [108.1855 672.1768 137.3459 683.016]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-347 0 obj <<
+367 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [423.987 157.0286 459.3042 168.1469]
+/Rect [423.987 511.8219 459.3042 522.9401]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-331 0 obj <<
-/D [329 0 R /XYZ 74.4095 789.6651 null]
->> endobj
-143 0 obj <<
-/D [329 0 R /XYZ 74.4095 652.2405 null]
->> endobj
-74 0 obj <<
-/D [329 0 R /XYZ 74.4095 652.2405 null]
->> endobj
-336 0 obj <<
-/D [329 0 R /XYZ 74.4095 619.8772 null]
->> endobj
-144 0 obj <<
-/D [329 0 R /XYZ 74.4095 382.8262 null]
->> endobj
-78 0 obj <<
-/D [329 0 R /XYZ 74.4095 382.8262 null]
->> endobj
-344 0 obj <<
-/D [329 0 R /XYZ 74.4095 350.4628 null]
->> endobj
-145 0 obj <<
-/D [329 0 R /XYZ 74.4095 213.0382 null]
->> endobj
-82 0 obj <<
-/D [329 0 R /XYZ 74.4095 213.0382 null]
->> endobj
-346 0 obj <<
-/D [329 0 R /XYZ 74.4095 169.4087 null]
->> endobj
-328 0 obj <<
-/Font << /F8 103 0 R /F57 160 0 R /F44 100 0 R /F52 153 0 R /F14 209 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-350 0 obj <<
-/Length 2537
-/Filter /FlateDecode
->>
-stream
-xÚµZYÛÈ~÷¯ÐK
`ö²ï¦ß6ÎÚÞö@<A 5ñÀÉgÖ;?ªêM6E
-F<<ªë«®ª®KâþñULÕÞX×0c4ßì^Ô;x÷ö4J¦´±p3ó¶J¯+ak´£â
kó,k?ó®j&¹k8³¦±Hõëß¼áj\0ëÛ
ç \ÙõÍ?·ÿª¹½ú÷õ/¾»Dá
«rl¢*q]+ VÊf{ýñoÛÇ«J ¾Ýµ¼ÛW0ÛÎß@B×r{¼õ\øw7ðê> ½ìNHw¸nûèßö»vìO~Ñ#¾z=ûþnø7ÚfbÚ0ÞH
{Cùú p/ÐJ,;¸$éásòòýjËP&ðy9e¨à) |= 2Z®ªlgÈíHÜP;Gª¨ÅÃJZ7¼5ZK÷rº¬vÚ-îÇȦ ÷d×pb¹¼Óâ/ÁÒbíSZ fÎqû|Ð;ú:ñ/Ø8¹²#uÑ~`)x ¸REä\ÕÖò@p\"ÇöÌéiâM í!Ê<añ^jOÙMà;ÿ0º·äL
-½MwÌbnþ.2ª¥tÉÖÓÅl.¦¸óé"Mé̾í(Çx~ôq^ åB~@ªÜ!Ñó|íࡼ-hmï¢íH»vw%,2º»KZO9Í8/=Y»}àÅ$ß|Uè5©¢Ö¬úc^¯ªÊÉH¯jdOðKn¸¡bÿ[J¡GØÐHU)+jùs<ÌUÜ>Z{íSÒ§ìtFªüº>.Ñ{»ú³ÖùDCìÖmPhºµi«%+öÈÉìÈí±ìQÎÙcùý!§':G|[fÐÏWNm'Î[}/Û]ôë\ïþl3ºQ¹¿Sй]P²uP@A¶¢älIÉlEÉ § ³JÎ!ß^ЫÝb麥 1Ä©wö `¡d_ªÁP)²UÑÓiíYGï B\H»#b(f4ê¢|%ãz\ÍËîcîº@Ìg|]3ÍkȾSCbèfëy¦iû«?[Ä(S,Z/UËÞë)E êûÖ»¾ôA`é Å®þèo> rÌýþ&K)íMFé£Ã÷ÞÓTô
ÂÖ£f çW½£%½õ~õ )¶Â )(
¬ûÚØýB]ÈVë%y³º¤ÀKF°ßDB
æ &¾:Ý¿bJ _A/Ø"ú{°Ò?àóýÛBîß·²õHµn4ã¼qcðvç]»RFþu=s
-¥fµI]ÃgMOâó?g]xßû~¦ItLÖ&VÏÎQ¹ýÒG?.¼¬3å,et:X¸"^Ìv]F{?tÈ/Å;5(Å+®- â(6ÎJè¥ÒSÁ©Mbi¯´§Sýç°
xSX|wÔOQ´7ßò 6¡¶¯=A^ÇâýL«ëx¦ÛB¦Ù®°W1+ ÑWùÂK¶¨ÍH¿ëLåP
«Qæ<Ñ
-¶L4yFØkºÚÔFyØöÔÊ<dþä»`àg¥&´êã¼ö
-l¥·kÌeâ
-ëL޳ͤv)aÅrÐΩv"[
Ú°CÐ.pgööýY%º¿°*
´Þߦ
-((
Î,ò#Î+v Ôí¨ä²ÃyÅö×Ñ´/Ò´Áü1h)é+ÝcP´£
-¼ø}X=¶ìýËqæ=±û-²«<
-:B4)äí³ðç«W7Õ k@Öc
Àº>r#ÔNH·kû®÷xøöøè¯w¡|BÝnú£}Ë,("§ó
×M¤Õ9Llð¨+Þ8íT9}E¥jæ(í}êÇ3)ùönýW_öÝÍ%
-¸yÉZ |ðHW;¯ü½Â.\
9~Îôââð7éÀ?ô=1nò=½ñ£ëÀå]¬êºé!PÇãHÞ®ÅèH^åôÅa+.(BYæd!Ää 'ªlh´z>ÌÞFÀ¦aÊ:qñî#ýÛ%k® ÷±eö,#hò».÷±{27¢è¶÷ïÛ¾´áä¡ì»Pa~Eèí²Ã(îrP^.*,Q-+ÌÎY!=äÅñQ:"»®ïéì-Beu¦WR!zEg¼Ê驦+.ÆkˬTb"Å4FªeðC5a]LV;ÿt(Nµ
A%¥Eìéax&Î
- ¯ñ
9öyI=I4â}lí(nÇQ%48÷Ñ_9KhÒ"äû»öàý<Ûä·¢®õYorµ{SFÞ"Q<TWÌ:XCk4£¬ hCd³Ïükªnã°
ª¶1êíð¾õvG²ÞPôùøHxÔü0Kîº_ü'´ê;ÓÑ¿ýe¨9~Ç'ÃT¹>¤Q1ÅÏ[ïÁrÿW( ûß©\ê?ò}>Ç¡B@««@=£>r±æªÎÞÙbÇÞÆRéÁßîã1G?DÞ
àÉ 4%mGóªfûî©
5ߢ>üýÏ1ö9273Çrç1ßG%"$ó<UúÕ\ÝûR`TUäÎlßAGÖùË)GÚa¦7çKË;ÌÊX)º©Àv:Ó]}Hà à»MU3nÔv2:|í?þMñ&q8&EËȾnfÒ]ëC{3LA¸+½mC£êGOáï ·y}Z~AP¦¹3%9«m=A3¹-PW99#hÊþAÅU,qso;ïNmìPx5|ü
-³k¸¬ÃÇâÀ'+á×>´9\)á?åý.¯_3¼%dPB
@ÇSÖâ eÌXçK³H¿¢/jä¯~½Ë|ã~_º%Ïh$RIbdzbÛÓ2ðÚIÖÔ\_¬H¿&DÁ
8uïNOü
Íî¨L¼¾ÝýöXT²Z²ZðfYCjE8pBV;'ÇÂõñקÝì1É¿qLh;ÿ-o*#2¢²ïi3ÚË)Æ´ GÍ þE±Ã¾endstream
-endobj
-349 0 obj <<
-/Type /Page
-/Contents 350 0 R
-/Resources 348 0 R
-/MediaBox [0 0 595.2757 841.8898]
-/Parent 365 0 R
-/Annots [ 352 0 R 353 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 363 0 R 364 0 R ]
->> endobj
-352 0 obj <<
+368 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [132.3327 622.7909 161.4931 634.6514]
+/Rect [132.3327 331.6493 161.4931 343.5098]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-353 0 obj <<
+369 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [414.726 610.8357 450.0432 622.6962]
+/Rect [414.726 319.6941 450.0432 331.5546]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-355 0 obj <<
+371 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [219.6728 508.2807 248.8332 520.1412]
+/Rect [223.7303 221.9706 252.8908 233.831]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-356 0 obj <<
+372 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [268.4819 508.2807 303.7992 520.1412]
+/Rect [273.8924 221.9706 309.2097 233.831]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-357 0 obj <<
+373 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [390.3215 508.2807 419.4819 520.1412]
+/Rect [399.1133 221.9706 428.2737 233.831]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.swig.org)>>
>> endobj
-358 0 obj <<
+374 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [73.4132 496.3255 108.7305 508.186]
+/Rect [85.4734 210.0154 120.7907 221.8759]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://numpy.scipy.org)>>
>> endobj
-359 0 obj <<
+375 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [73.4132 484.9283 100.1426 495.7676]
+/Rect [97.4421 198.6182 124.1714 209.4574]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://scipy.org)>>
>> endobj
-363 0 obj <<
+379 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [324.6699 428.3346 360.0704 438.2891]
+/Rect [324.6699 145.5459 360.0704 155.5005]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://docutils.sourceforge.net/)>>
>> endobj
-364 0 obj <<
+380 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [382.9052 428.3346 454.0182 438.2891]
+/Rect [382.9052 145.5459 454.0182 155.5005]
/Subtype/Link/A<</Type/Action/S/URI/URI(http://docutils.sourceforge.net/rst.html)>>
>> endobj
-351 0 obj <<
-/D [349 0 R /XYZ 74.4095 789.6651 null]
+358 0 obj <<
+/D [356 0 R /XYZ 74.4095 789.6651 null]
>> endobj
-146 0 obj <<
-/D [349 0 R /XYZ 74.4095 564.5693 null]
+150 0 obj <<
+/D [356 0 R /XYZ 74.4095 730.7737 null]
>> endobj
+82 0 obj <<
+/D [356 0 R /XYZ 74.4095 730.7737 null]
+>> endobj
+364 0 obj <<
+/D [356 0 R /XYZ 74.4095 699.0161 null]
+>> endobj
+151 0 obj <<
+/D [356 0 R /XYZ 74.4095 567.2258 null]
+>> endobj
86 0 obj <<
-/D [349 0 R /XYZ 74.4095 564.5693 null]
+/D [356 0 R /XYZ 74.4095 567.2258 null]
>> endobj
-354 0 obj <<
-/D [349 0 R /XYZ 74.4095 520.9398 null]
+366 0 obj <<
+/D [356 0 R /XYZ 74.4095 524.202 null]
>> endobj
-348 0 obj <<
-/Font << /F14 209 0 R /F8 103 0 R /F57 160 0 R /F44 100 0 R /F52 153 0 R /F67 362 0 R >>
+152 0 obj <<
+/D [356 0 R /XYZ 74.4095 277.6534 null]
+>> endobj
+90 0 obj <<
+/D [356 0 R /XYZ 74.4095 277.6534 null]
+>> endobj
+370 0 obj <<
+/D [356 0 R /XYZ 74.4095 234.6296 null]
+>> endobj
+355 0 obj <<
+/Font << /F14 215 0 R /F8 107 0 R /F57 166 0 R /F52 159 0 R /F44 104 0 R /F67 378 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-361 0 obj <<
-/Length1 1231
-/Length2 5884
+377 0 obj <<
+/Length1 1196
+/Length2 5559
/Length3 532
-/Length 6663
+/Length 6323
/Filter /FlateDecode
>>
stream
-xÚíe\í·ïiIéJ:î¤.Rº)Ii¤SFî.i=>Ïù?zýòWû³ç~3ßµÖý[¿k]×}±3ëð)à¶`U8É'Ä/ô ¤/ âÄggWBm8LÙ ~ (x8 BbD%ñÙJpWÄÁ àTâúU$Pp# v60¶
ÒìÒ°³àv0Ò
ô½áл`?¾ ±ClÁ¾À/?0{8@üï0ÈÃõ?)O0Âe
-À2É@YÁaP l/ Gõ£üÿ0õoqU(TÇÆå<jFÿ-kãúü<ÜÅÕ F ´á 0öïRðßÖ´Á Ë¿³H(ÄNæ ÿAÜU!Þ`.iç°·ºÿa @í/júºê¦*<íæ_)]ièãúè¯Ú¿Xè7£fxÌù
P
¨ç?ÿ,ÿÕJfA`¨ã *°A l|ðQçE¢ ?! {ÀÞ(¿ü08õ
- 5 =ÿk3ED>®`دøß!1+jà ß! /ÿÀaàXT ôúB±#üG
0@Àîø@uv{þѵ ¿·äª¯
-ÿ]#&PúM¨¼ò?$jªöI ¿I `øP½þ!Ô©°ùM(MÛßZ¨Ý?$$Z'èDuÿ¿Öø¢º@þ@0ôD)»üF!2ìD)Ãÿ@}Äøkv jpÈ?µßº'¼ÿ@²Ï_øßϬ¢"ÜÛ( àFí¨ P .*ðÚy `ò¯ë uòÿÃöÔw{íð§'àvR¡N)uáÅ*y_J°¹ÑêãuªÛG[ B¦Ð¡ýZnÜï_¦Ý]Ç^gòº¢slñ×RýìÿzüfÝÓz=Í·îñQ¶Ï+ËyÈqsÝØÉ®(ú£¯ÅɦùÝvrt9
7îÌ1£u{Öt¤?VME½¿dÖ'yíVü\$bÞ$9kþsH SnÏì!¼ÅãÞenvÒÅ9E©]P
\Cn·(?¸ê¶«·B>à` ¬cÏàê÷k¼!¯Èô¥U±9 Vy®íù·±å1ó5»åBÁªÇÊ1_sêàAb¼¼Îçóã¦ëÑ5ëQòFZk#I®}@;öµ®¨t¦9y;f˨þKd4%»Þ½Ãó¸0&¼â¢ê^C"ï)èb~qé«££Gë«^j¡b
£»ÝCñXøxüFY.RwÓ멦fKÛÖIá⾯p¹sjÙ²
-n°Æ5
ÛçíHÓ\óì>OÿXÈ: Oq¥Y¿é¾M¾@&Á[ü(æ'ø tï:
Ô,§íÎÈOFõ%îDßµS²/ø'w5EÆã´-<-¼ç ½rUñ7¢¤ÍyR??µÐ¤FÆAø¬\Á¤DIÆÏ÷´heÜ©ÌÊߨ§êJª% ½ÏldjwÕE¨¤nfM|¶¥àZ®ïZMyc?3GÕÎ$>[vzKµ¬®$Y»Ñmuܬ!'õ\þ£Õ¸Æ{+B©å¼²&â®tyèúPûN¿äL¤I)Þ½æt×é)hèRÔåä[¢ÉÜ»ch:ÎßÅãí¯ÌÞ~;ÑÐÖÄn#W¹H7Pè®_8\ §üLõ¿>&Íq£F©eè»T ¦¼¤ÛiÌõ© ì£ì©Ðíif2FÒÙì<SÌw¥N¿NèjV>FØøUiPZ c(o½ ,ຢwúÝt]Þ4Iõ§ =ý]ý,ø>þSLõé»jªª<]uVL^cám}ߧÙTùºÌ~÷s¼cÆYb«,Ü;B
-}ô¶bÖ¦ª:ãNùòî[ÚêëïÆùiN·jUúª¥d`^û×Ñ# UîùuÊ+ßO¬ÜÎùH!aµ®ÁÊоlôôðÒÁ¡?,'ã¥7Ñ·Â)[9âÀ$Z¬¶6ô>qÞºªGæ qÛ¢Ó°gj¯åxNN¸Dþ5Är]Z°Sßq
-aá«,¨k6üiùñÐ
-üy'%1¿rÇÕ¼ùmR(i'4ѯRdXáÊ¿Þ$J|2ËÑýÂÝ! ½pwr4a>/"yúÙh]ÈÐQn_ò»{®
wY4Zp!Z81{ó¸á *;ñ;S_?å&Õ´x»©Mm¥9Ú#{ÏÂ"#÷ë: ,ÔBÇÊTò¥ñ·fÊXyp»Â¿uFÇôXÊÍ«ºnÇ`Ð=Þ{¨3Æ&/"¢®BcV¼lÈ4æcTt9r\MÈöìâ°|ÖY7gP÷P¶T\
]?aéãî´V±]øêó+´ºø^EQyU {GÒÎ A*}6o_òmÌIñ`Os»ñ>¹æPÍÅ70"í
ã+à\AªOhÃLGøú°I·y{"Òüs£åÙSH»+1®ð¨ï'ÕËK«0Þì ·E¬+Á¸õ?«l;̸G2
X`g7
Ï÷yNÝ«u;]YÏK=¢ÔB_Åâ±wcµ««À±ÔsQõ£ÿ1I²0ó-_ÐÒSQb̾3Äadä±òÉÁ¾PÂ\Ää[Àò¸A§ *νMûB±/æ7Lè ¬Ù?ÌíFÆ&ïðXËÉëMSÁ»åÃ<î½4ÿ:Á:ïw
ZXÝòJ-³åò% ¼5sVôù3´¾¼p:üxR4t=6·2«p
%ãjC ÓF/°?Pc<¨uâlLBtV:K3(þ3üuF2!¦¿uúÉä( !]éýC9º¢¤¯/MÝbGä¬ã,ab ÊPä0`Xqå1
sJÍÃ<z4
µªÓ÷9yè²Õß?Ïå±HGÉnßè_Õ2ÈÔµeMßÞÛ7°ÖqhXíÜ|>ÅRãuÔÈ^=&÷%ìðÕ¬±HQf×å4¹Xø0I~ëõ3¬üömÌ[fYcÏ.^®mÕI´ü3q õÖï§æ@ YÇè·¡aºzHÿ¬ØU;r%So*Ýü{pÊÖ¾ÓKI
þÌNmL=NäêGL OÇE/½(hPnÑ»¥.î¤øiO©Ï1îíÚRè®Ð½=öd1Ýp¹JZar¢&v!g QSV/¯ÞÇfj\æ´"+ùvû
èPÃM×19ã'þã
-÷xÃ^ÊPí^¡»ßÉùÉEÇ®lÙâLƸIÓ|B[hù>?MÈ°2_élKIÎ>G¾ÏhûRVRÙ;OùIuîõÜËÊÐÇ+ÔÜcñÛ>ùiÚRÒjM(¬UÃè(u
-ã#k=o!
-h
~³fU4¹d.SÄìwÚ¬9,÷dMOjë¬ë0JêoÍv7F-í¶ÍIÃðAu¥ÓnÒÒË3»4gÒ¥YüÙ@ê$
-w]lyAo!ôÖÌáî!mç1º~#G¶þø3òRà''ÊZJ ü¯i¢ýÚ£>£zÐL
-UõÕR{|üòÍ "óðÖîĵ¶ËK#×áìÜÒ¼·í#¹H'XÉ@¶(Û£qæ⬢m ¦ÊB&EQDxôiytÅ#qÂW"Ô÷»¥BN'÷Lbk4ñÈ#ót^""2»¯ÚÈÊþá«ü¸ýo2µ¤oß4±z±p©\J`øæ±w+zÜ=Z¢÷jGxã¢68w´Omøè"¯Mÿª¿ÚßlA^ÍéÈFqhùtûr
-«ùç¥×TTËÉKd ^OzÆÎ'¼ý]{þÊÖ ²_ò¶v0ÂÄîÿ@F[DÉÝé4ÆaÛ³ËqйOÍÚ¹,ö<Ä3Ú.«\bB©Lº-ºF5LÞùéÌJT 6îG[Îu±äKé¦ÿøÌn,h%Qïn'Ï/à-ZpÿNfU`?uÞ٧ǣ&/
önΨ}
Úð¶µ,ìÂk|C
ûÃ~Ó9fÆ#úؤ>S6Ç4>EWÒûÒãûz|¿Ã7oëËÕr¦,1áþÓekÊúÛ½®F.
ä³Ð
-äÏÊêHÕ_¦ÕkÐ=Cê9u 滺¿¦°ÄPÈ̪m3º§=çßþ` ÔfT&çFä(£ÔÊZ='ÐÛ3.Csßæè,^mEHRÌ´cifö]KÁEB!*Õ><°½Pv2ò§/çF-ýõ|K®¥F~ç%÷73Ë$¾°Aë½Ú®/8»7ß}$vC[!pç-ît ûWzõ°¥eÊõ<â5¬¡Ãâ¯óé[4XJSfmðryt¡HÅs±oÚ
W¢Ýpn£íÚñÊED¦<HÖxÄPOÀn:Ò|aw}¼âÿY°
öÌ¿õÙ)OÅ<Dz)ºíP_YÊõÜÙò]ÜçOi_0¿º1xTcàYÞ UݹÄÜÜôã«üLº3ÛdÔ®Ñê.BÛâ0GþyX½Û>¨Ùm®6Ox?iÃÆ®Ï`1&Urp(a¯oOm(UºÅAƾ{ÑÁýTDVÙ
[·<qÓÕc!<fr,ççHDf+G¨©Þ=(«I¸ }³êEâïPé㸢PZ?7<ßüÅÊY=h=/Ó [BçÄ@L%¯ AÂå1{ÍGÅXúç¡R²ld÷ó'Ô|Ûëùÿ/²=xå·ÔGúÚb×M¢^"¾¢¹Çú|º©\üÈbXJ¬çz-
©|/×B@æÞ1Ox´¥«kfÚã-Ì5ÑàÔ!ñlÃÈ|Ú¦rºfoeغèè´0x¨54dÒ¾áRÌÁÕ»ZKÃW
-U{ÊÎÞ6ÅnOy|7;YZ:"YìÑÊ5{ÅÎÍý7:% rIî¬Ûµ±áu¯ ô¯d½Çvý*nüI0Õƪ>BZ¸Gs×ÌX¸ázM
ûÎÞ»Ü5ÊÔ3ZWïr®që±)
5ù,R´õÅFÍõ9£U¼D̯°!W±ï*\õgE^öOoëwËå¼6Ã;©ÉóFÔ²%lNi:ØlF×Ê0&
6rÙ~5ùB¤|'kåæt zfóEÝÑ%Fu2vL¹°ïa \»÷³©?¼×'RͳQqO©AköÛ§náë¬(MÉåòQzaB¯Á´t1æhïbéä
Cyòæâx2$õÛh/ݳSͧSÒ¥Eô-t÷>éGô.k»¼%)cÃè¹Õ¥á×
-M»qxö8®È½]#Sªwu6 at kIDk{YMZ[aéh#â^Í!fz53þ!X{vvüv<sÀ rÿñÛU©^T4ô×43Ñ#OuÆOfHDV°{è¡~;Üt#hë2×ñ"£;*Iõ}XZÞ¼Ú¤kºYä>ë¯+«sï<Á£.o-R¬Ýä;¦¦uî³E7}`kñ)~'Bø"î¯Cuñ®Èð:þNífR6íÝ,èc¿}¡ó0Ñ£ºÜ¥úÁoÙFX8¦ÚΫÅúµ9|ÊƹD
-q¬[FVYá'3a~ÆWÅHë2J¥ð¢µmP
<i*¤0%î¼ÕUY==ÁW>èÕË
YéýB®JªDM½ ô±OG9áÂæõ¢gãAâ¸ÊGuÚÇ5&¢þGE|É &ºÆæj;ð®ÎYî¥9°Ëp{só¤øþæî®W<ÂKÏã¥;ÓÌ|zâyÊÍ°XïzY¸?°9à¯,¼~E½dÔOzk:MyÞO1È<`.ÞÚæ¶ùð1{wYKm5v
f=¶)ÑÛmɬO Æþª}5/®¯q²fÚÍúçS¨¡H@ãë¨ñÝÁNq©,ÎaEú>Mé}NÎÿa§Ø!TOpgQ*Ë;P;¸rñüåÑ
;pÎ8TíRy2µ¦aÃ@aÌÕj¹qhÆD\öÀ¾ê^(IÍÏcöXäp\¿åÿ>Oö{«vÃeÈåoqßÞmY¿aê¾û\Æû~Gãì_Wz®ªcUrC \1<í%HÌX¢²æS¯6Gé½6"Ùî«©3aA¾ÒI¼d6GÃìz8?|TS=ÈÂðd/Q8¥¥Z +a)Á#,~þtW¼¿jc9ô~Q"e©ñzn^HWaP
s:ÉlÝl [Ò®.K¬ 4SPöº÷Òìab¥ Õ%ËeNÇͺÄU;N:K¹I¿uqGQk}Z³ÙØSf _Åë^h{ £Øu0Mppûm~\´vÀhJÑߨÜu{n®RDÚÁsômà=pÐx?Sk¤ÄV w^0`º%2ß÷¿ed9itj©ëpv
-×xßM%Pg5Ip÷ûç;Õ¨Øi©Nó«
Ìc<"M~çK¾SÛ*ÏKÓ³æ¶32ßÚ´md@mÛ÷/¿ 9:°®sjYzÜN³HVAûжL¥l
çÝG¯ËIx.ºeb?«;pC"«è.-(~SRg»}¡öÀtZ{ÿCúè\WËƽ©íÀÙ%¦ å½I6½«b÷5f·ÂW+ÕóÝS.ý¯bKc.Õ@X=0óv/Þ¤ÿoaf¶Îm ªÝaia.æamx@PC$ß\ìÁ׬òW11âmþ^år,ÏGªØR÷Øy,¤Hö¦l&Må_cÑÓ÷wÞ©áR¥bíÍ¿ÿi7l1²Ó[{NbámþÑj.xévX8âßü=éY¤¸ð[ÐZÙ«äsÑX¯M7BCÏÔÏ:Ù£@K¦4¿;ÊׯD§ðøv¸ZȦnÌËR
y¶ÞÙ¾3¨¤'^WIã¡ËT ¤Ñ¾°Pdåe¥*JËk~*ká;°Ü¬=Û//»¿ÛW)¯-*3ÐÝ'WL@@÷£ëÿSp3È+R´NczïÚumQêjIxTdJë[Ü¿®{O¯´ÛgÕPæ¼ ³e·aµÔ¢hîó$)þÁ"kãQ v×dÞÿG^ï9u{z^oCÂM8;ÐâðÝü5^jß°Jâs¸H)ÆÕò
-iäÔÁO5zl\¼°-f¼HÕAÌѳWi¸evñ¾
ue{Nõ@£±âõËAóG)|
XÛä
ïS@:̲Äø0øùp··NvÒ+÷1zÈÑ{¯*FY¿z*¿³ ÝO\«÷«mª]ÚnúÕ§ÂÒ\ÏKSýÙÒVÆ¢rÕ2köBQEC÷cÓè³ãGëøÄ3ê*7u Mqì÷l3OÍsu- >,e}a¶|Y®¼2Ó*¼Ë¬@ªe¼ñ Öt@\é«Îò#æê0I,ݲ¦ò¼ÞÉC>^]ZÔ,'^ÖÂ%ß蹩ÌÄV=î¹öìg(møMT^Üj²è;
C0Æ8Ùp2 ´2F$o18ûwRõì«ßâ¥Ð3~í´Aô,
-ÓÔó5SGâdàÎ,[IwG>%h̺å}ÛU`oy6]׫Û2n³ZíÁËÞàiààãé3úíÙ
-OÑÊöÝ*Ðæ¿^ïzHrÕ"~pKðѯ^ê^DÉ!ofËû
òëÙ/öeíu
=CèmYIá{OvÅChÊH¥Fµây<Ñy/nSº
ÀößÔMmm£É¨nl3Û$iók;]ßh!r<$xÆ&;{§ÈºÈ7ðµ
Û»fôÓ½ÑË5Ǽ0ÿIÀ_«#ÕøE¯)rx×u´-"äþñ]¯fÐݼu)í²ªºÆÑ°Èb0Ö@þ¨øîÀí`³ï@Ø^2Gîã ÝKÁÿÇþÿ
-ü°mH¸
Âÿ¿ á5endstream
+xÚíe\ë×ïAºS at r Q at jèî`pfhéNA$$DRP¤AéF¤[â÷>ÿg?/Ïyõ|7ó]kÝ¿õ»Öµîáb×3äW#í!ªH;?P (
PÒ6 ¹¸P;P¹C¤@)) @Ñà , KHIIs®>(¨³;[çW@AA@6ÈÝÇh8` C¤âî# PÁ ¿@ hÊ `¨;ÀâEþò£pD$þ=\ÿò ÐS nI Æ"ù ÀGbA$¦ãäÿ©«zÀ`: ø/yÌþ[Â|þO wõp ÚH0
øw©)äokÚ0Ôþï¬;uPD8Á ¡¿CP´*ÔÖº;8A04ä¯8þ· ÌØþ² h`dª©vï¯Ûü+¥"Ü|\ÿýUû3f6(¨7ÀRH at H)Ä|ÿóËú_TH0Y1q
ùcöCb ? C¼o_AÒó 3' G$ø×e}\!_ñ¿Câ AWÌ%!Á¿C A_
+ù; D" ÿ°@ÐÝëwÓ]
ñüCãNðïyÿÁ: aÈß5â A¥ßÉ+ÿC@ Ú?$)4üM¢ A£ßémüaVNô0ö¿ s
+(9øÄtü AÇ?Óúba FþeÄQFþû¨?ð×ìþ@ÌàÜÿ@Ìy<~#æO@ÐûÄ(ûü
ÿ}!<@zûñHø
1×H =ù¿
+<P(Âý¯w³ÖÿaG(æ%@¼!ÄãHPÚ°büÁ<^ìNïcuª[GIB&â°a
=n¼sUfçoÒiÈWñVÙ¼.ÐMõûUwÜbSÇ®V=íVÓ}ëÌöÓµ}V\9NB¾S4ÖnaëÏõ'´gív|ÏÓãV6Z#aÇúhéYó1#T\ÂL5fþ´ê»eª[qhø¬eb<îì@¿K8aݽé=dõy>anÂÕÉÍTMl"ßxi
Öä·
+Â))*¯?wU(d QU¼)Bl°,_FÛ¡]ú/*Ú;|õMfì\âÖs
˶"÷lN¼ÚÏGÕú5\¬°\ÐÖ3Úßüʳ
øÌ
w©C(&%nIÛÓ1Øå¢c£ççÒïgvê'abÆÁEVURÇ9ųLðÏfç= l»Åûäíý±¸ÄDÆ9pò÷ô"æv ga¾Éø${¼yï¸ús^+^á±=þÐo\ä<ë@®äz*Ì×»ñé5g¯ÂÍÅÄëèMÚ9I¾â²èÝ7?.ÓÁòÚhVætúg/é8]Û¤º=oðV3Ye¥oiE ôËT%>º%¬ÏRùéø©
&Ô³
+!§å¿JTjü¬bÄ*åMËdW¶^¢`¨-©vî¾Û2Q{d"ÊÀÚ»+s5mºë³ùEFD)©9åZÞlÎ3À.ñܨèÝôIo|ð¢Ë+úEu¥Ø©wkí8Ï5äe"2²Í~QOÝû
VÅwßTâ®+S>¶Ì±
äD;¾ÇF@ÂòÑ®Ëé2#EúHÃÍ2Ú½Þ
±DÞQ,G;±(@VW´OÓ§ú(OXs|;hßU>2ÛòC
+v«¶hàÜ:¨×xcZF""úPAÊí(úòtb< ·n?w"ô´5ÝEs«j:7ß'Ôæ׳©æ4¼ËÏ»(¤ú L÷g
å{oxò³0zLoÉS(ÿÅ´Ê4üã|÷àéò ²Ò§ÕÅ»$ÙlôÖ,ÄâÁKìJk÷AóÙ$¬Îe3¢ûÞL%îÂÏ×ETèµ<<ÀäB¹§Dv]Á¥-QþÙ}^þ¼Õýáù¾áqòÌyËù# ÔaÌT¨5ÞÄOá$'gH§åû¤R,ÔÐ䩶a6U6Öïh^IÅßö/UøsW
Äç&ÿ¨4bã]*4EÆ:']¤ÔëÞoȲsHù>|_x7¹éÝ£ûì'¬XÞ¢ëcéÞlÎ9* J
éøÃ@~ä£^ ¼1äÉÚ½âæÉL÷&Øȹ^*gØÖ«ºÅiϬæwi\5²Ò@nÜÏd'jUÒnGN=3
Ù ^
]ȤE7>(ëúøío[h¿üë~h%Y4ç¿Þø6#t¦NXÃS¥ÜìrÎ|7EÐÏx¯-'07]ª¸Ì¼²l¸#e!:DúlscyÝ<·÷ExaL&ÝMõ«@Mê]üµ²8×2lYDz@Ür¾aÓ⣯ßT©\4ÓÎ`«$®¡ ñsMcx%±Êà¢ÇµFl¹é|óìÔ½åyP!~ÜH
ÃÇAJãVë¢gÝ;Ö+í>QrÛ2ïÝÃú;9 at J9Gª»è¶mc?î,¸@òk¬¬sb²FÊ«Êj¿wâ*Oåh>
l°*I¥¹N=+t^r:ÈK³IqH¦¦(nÄÔ¨
vä¼ì«ÜívSZÇê7·cÒ9b,2b_»[¾Ü_eðdZÖxÉÝâøªî5ÞÕ-[{sìJ³UIYä«Àà¨äþ'<üa×F/i*`<ý9Ò²SQôCÓUELñ¶+TÀ%4Xa.äøV-ûÐiiÌ-ÂûÊxÄÂ}^¢ý;ÛZ|Ýfàýq%én½ÚF&Çç ¶Õq)%Io¹S¸9ÞøäÛ¼/ó¹8½NÎH³Wï5£W at O*6r´q½|gCBfå(n÷q}ñJåqÕL£¸CM¿ 2k¢þ.ñ?eܧ/i>¸Ág¼Åtòx4qż|Iå#Å ÂñW&yÌñÞ¢Êò§î°Ú87Uÿ¨ø¾qVEðÈÝ&6X-l.ÛÂ$ùµÕ»fqÚ·S´J'ñÏÄYWI$ßDaý-¥±Ø#Õç¨xöfñĹù/|]ù IÞºÙ¬åFjäèÉ.c¦Ç®Óö}õãOý
ÛlÊôðL×Ú7«u1âù±\ú÷hS]Äê×ç»<ty¨ÄÿQ.ËàR»jÅîÅ&²0 at S£{±íJÃU6?6Òy¿æcÐ}¼Bó>7SÝ! ÖµÙѶ¾ jÚÝt)Ô±ÂM?v¦¥[_
ZXësnOæàËîQ}aßÿB5fèfK¶Æ+ÿÌ¥]·òxd6{yºpöJZígáá`0WC"ìºWTuuè[Óhvé°«^ª£1P
g9&Ztõ¦*]<#çîhE uHØg³!þq&:ç¹µwN1=*JUxh+º]z.~äÄÄç¿øS.d±¸Æl¢£í8®õ/y
÷c@¼[¿ê£Ñ¥ªd«$ýð
Í{¶
+TSù4>TÐXËõîo.âDVOðÕ]P¯}g7üc`^rÛ§¡Ü\eãhè¦h¢UEþPExJ®h¥ :y(r3àr²Ã«¹ïsxÇÔÉ\ÇVgå·þl~nÈ&´©ôZmåµïzZÚF Í¢KdlÈhE@#Û·;*¡u6½ ®²ñ5Þä~ãíhG`jó9ö¦¼ö¾¥-,#±ëCÂEiÚÜflSQÜï
+..¤!Qì'=KÍXhpã¼{gé{Ϫh#E~º¬Å\øݽSó§mlõýï§$±¹$Ø<ûzÑÌTvV3kÓ4O<4Â
Kæªú(¯oÊa+ÔÐ?Ö")i)1Ö+- i}$¡î§îÁ4ôjØ%C«'+^Äã<ñÛj¾ºôÃ~ý<#bm<ýí¦©P¶C
åËØ<Û÷ôÅS>c²»u^ºCýkE+Ká¹ÍßÊÅõe«Ø» Çhès¿UïñÞ>ÝíÂÖbÓXÆEHÈw:ÝòýlP´PÄÕ{4Èr</\iÀ!w=|h§×áÛØc㳩.uUµÅAôDÝHÀÊ0ð~i©õ«ªÙ%Qõ£ï<]5JDM5v÷ðrNTíõ½_TGQÉצ(l}ÓÄáu¥®Õ°+ëÀZ$æä®Ý|w ´·!Qo3yS*Ýf]
+hÓÿ sîÍÓê(}5IêÃnöØëeëkNý8Î'f{ϼÝL²XªËR&µ÷]żÓ/´¤nEÏgÅüèNUÌ:õãÙ²ºÁàjпjó2Üܳ
ZÖÌí=Óþà3÷¸LÇb\ÅMQ({c"E(\Ï£:Éʨ¿¹Kãf§c(g?÷AcáÃ
É4 8³Úaföm¡oùñgßwL(,×ÞîøáÓ*áXóx³D½=Íô#©]GñÊê¿JðO ghs^zF+XSµÔ¥
Ú)©6ÊHÏ¿ÜÀÏÀö1 P=ää¬e¥Ýåmx6W¾éã·óæð]7QwU}¾fÉa¬ÁGuóðá§Ô:§Ùë¥
+hÏòtûgÌÜÏÞa«W°Ï¤¾o¹»U-Wß3µ°8t2û¾¹ W(#=let¬þä·>Qüüû_ø¿³wðZÿ´Toó}·ÊCVÚªG(ÄíµùDq¹¢«ÈÅjUCi±uçHtb"ëT:è.õýÓ-J².OßÂR4Õ¼5å×x¶}îªøgKÍ ÃBÅ)A½r!êëÌöèÙî¾,/õ0{À|«Y4¡bCLÙOÕ ¢7ëKD_ëy 7òr}týI®»©3aFLý CæVã1\fdtöÄ\4uz¼)úJR_;ûhw]×tÓ¿]³ä*º5yÒ}{ÜÉ Òi+¨«Q_|«>½SrhÊLdÐ
+ãÑ¡Y¿W{Pz¶tåð9Aæ&íÚD
Z?Ùs{)G§>3òû'Ùv\J lÃÆ¥»ÝüaÁÇ®,ÍÞOĹìWÿÈ]殾ÔèyÇÊ÷ÑpÂ5éÏ?Óéi묳G>.æýj
FJѹk¯Fô?ЮHÕ:¼öC¼)À 0ËN]¨NjI`búú>ÍADRJ'eͬÊвеcLãkÍ1UácÄfÀ:ßÙðéZæûdÇjÖ<{Û{'=w:]´Éºyz¤dº¬·[æoeq¶¶
ã.,Ô^í?¾»ìµcÒþzä©ç¥0õ½òèjÐå[[.ýÙ,o{£iÐ&IZåŸ^¬yÅÛç¡ÊK®tË`E¹ MÂi'Ö¢£³Çr#f+N5i<½z¶sY¶amä©ÉÆXË´oڸʬQÐÛyþ¯Æ{¬±LT9~=mO4
+®´<õÆ4rëa²pªJzn1vÉrÁùn~¿ÔmSÜÕ:©5þÁÜ|£P?¬´étEݸpÅÿ¹ø¶nÊB|á72¸pKUyÎä¡`λÒèγçÏgüS1\*{±¤£xúýºr´aà¤Ã$µ5-²É¾hi¬)ÑÊKëÓâÙé×°õ©v©c»I*·3Ð#G;×PK{ùC£¸&Ñîà¸}Ë+ºå:}Ñ}ÂZb*x¨jÿ»xw`¼=?«ÏèãHI`évúZt½¼ËAöâäȱÖ=Á
½â2"ÅìnÍ/h.>ɾS§øä]§¼LÈw>^OZNÙñêãÌ KKE¹eö©MØmÎg³÷§åóú&çm>¿lȨæQö©÷>¶)fãaÙ»¯OÞ Í¦ÖH¿,ݤîÏã´óþÁkx
ÜAû}3KFã׺,ÖôþÂÏ1*´]:ã8\Ó(KÛ
+ªYk£´ß6îÉ=bå'ùD6÷
+ ö¿p3o5-M fèÛ#'N«TvGê]<¾|z~{kñÒ¤sÐí~¯îþËìþvÆHAIÏ·DôW%KN:C<´jñm½·¿ãñâºåIÒ§(ßLTÓ ¶#å«I*@ªRP<~uËTgÀm1/ºú.@r*k4u4`ZMvÖVRÜ
+0ò³µU8ØoqÃÒo²9%Æz¥3RåéÙ§nµ±>R¹çlÖóNÝ1ìûmº×3"q3+áe2ÙÊÌø¢vU~töKÇ©}æ¦Èµê[jw}á°$¬Énkw¶¥-;nuÿBòLØJý,Ø!OãÙY®l<mY¿ùÀ¡@ÅiKÞ{ ñȦCqp
ݳn.l´IZb-3}µÌ§
+W»* Ê&r$¾¢gÌûiÿ¥±nRöüà´+'Ï=SÜø³er CÌjKy
ãTï[ÕQ-ØPnÀççÔ²NìçÆñ,©üoöãÎ
¯©¦¯è¸ä5&Ng#¨#¦¬ê_¯ç?ÉQ«C jÚD u/¹¨LÞY¨'Õ
ÏÒ¾@É'PyÓÖúw&í§ÆÈùêïfôuL*íúea%
+9Q\¯=ñ
{ÖÚ£RL¦£+]½zGé`ãÕótµéűúZÈý°¾½þy¾¨^le>)D¦JªËåó uvÁ^YÈ6ã{K«ÝÁÛé{?¨PÙQSSÜ;ttX@$ö£×|T¬ïs<J¾Tk©ýmò¢¹ývYÄ¿R¡yÛºé""DSõ
+â^ *·+D8Ån gC±§\ÓÄkSËÏiéòvÈ
+ ïM±ãø
+³RÌsjðMýLme{bÞT
ÔÜú
H nÝûp@Ô±ÃbäpslµäBäýYG!bq5øîVùpäAÞY)¶8ÁºÏÒ§Ç5{Kâr²@Á讳Î[l2Å\°.`Bû¤õ^§be³ýÌ<9§-8àWë¹sÂcL1¤I@0ïnÈ(W,¿î¿¤Î¹·gÕòÒ©Ü$éÓ¸WS³
Wïf«r!yöÏz¬ÖÍkÂ^3ÈÍðÞä|Úè
;Ù¸@ÂZSEViÚ-rærWÎ/V4JeâVÄA\Ëü-Rg¯³B&°àâõÃ17ùÖôDDzy?\õä~Ù^?}Õ6áõ¬*o8þ[¯@P8Oÿ|ÝÁPÄÓ^ý£{ÄeO,µÏHü) C·!äGxOºÑr '<è_°_j)
¾"ºiÙåÍôe5úNEÇjê
vf5OÛÒÖ5UV÷fõ¢3À-¿[%Grzö.ÜïZ0*eàq»DÞéÛ|kó5°añ>¬2t2<¡1ξñQ9'{4¢_®$`䫸¼»:»PNÒþ,xî °6-ùáßÁSÚd5B0è[pu¾@íÁíñ~hVÏGÝ~n=¸Ã5á;À±<?úd1-ëSSe¸ø° xt"à{ùì QFÆyh;E>pVÑKmÊçji´_br¥Ðúüÿ¯ÀÿrGÂA¨GÄÿʽendstream
endobj
-362 0 obj <<
+378 0 obj <<
/Type /Font
/Subtype /Type1
-/Encoding 366 0 R
+/Encoding 381 0 R
/FirstChar 45
/LastChar 121
-/Widths 367 0 R
-/BaseFont /GRPHYE+CMR9
-/FontDescriptor 360 0 R
+/Widths 382 0 R
+/BaseFont /RTWKMG+CMR9
+/FontDescriptor 376 0 R
>> endobj
-360 0 obj <<
+376 0 obj <<
/Ascent 694
/CapHeight 683
/Descent -194
-/FontName /GRPHYE+CMR9
+/FontName /RTWKMG+CMR9
/ItalicAngle 0
/StemV 74
/XHeight 431
/FontBBox [-39 -250 1036 750]
/Flags 4
-/CharSet (/hyphen/period/zero/one/two/three/four/seven/eight/colon/C/D/G/S/T/U/a/b/c/d/e/f/i/l/m/n/o/r/s/t/u/x/y)
-/FontFile 361 0 R
+/CharSet (/hyphen/period/zero/one/two/seven/eight/colon/C/D/G/S/T/U/a/b/c/d/e/f/i/l/m/n/o/r/s/t/u/x/y)
+/FontFile 377 0 R
>> endobj
-367 0 obj
-[343 285 0 514 514 514 514 514 0 0 514 514 0 285 0 0 0 0 0 0 0 0 742 785 0 0 806 0 0 0 0 0 0 0 0 0 0 0 571 742 771 0 0 0 0 0 0 0 0 0 0 0 514 571 457 571 457 314 0 0 285 0 0 285 856 571 514 0 0 402 405 400 571 0 0 542 542 ]
+382 0 obj
+[343 285 0 514 514 514 0 0 0 0 514 514 0 285 0 0 0 0 0 0 0 0 742 785 0 0 806 0 0 0 0 0 0 0 0 0 0 0 571 742 771 0 0 0 0 0 0 0 0 0 0 0 514 571 457 571 457 314 0 0 285 0 0 285 856 571 514 0 0 402 405 400 571 0 0 542 542 ]
endobj
-366 0 obj <<
+381 0 obj <<
/Type /Encoding
-/Differences [ 0 /.notdef 45/hyphen/period 47/.notdef 48/zero/one/two/three/four 53/.notdef 55/seven/eight 57/.notdef 58/colon 59/.notdef 67/C/D 69/.notdef 71/G 72/.notdef 83/S/T/U 86/.notdef 97/a/b/c/d/e/f 103/.notdef 105/i 106/.notdef 108/l/m/n/o 112/.notdef 114/r/s/t/u 118/.notdef 120/x/y 122/.notdef]
+/Differences [ 0 /.notdef 45/hyphen/period 47/.notdef 48/zero/one/two 51/.notdef 55/seven/eight 57/.notdef 58/colon 59/.notdef 67/C/D 69/.notdef 71/G 72/.notdef 83/S/T/U 86/.notdef 97/a/b/c/d/e/f 103/.notdef 105/i 106/.notdef 108/l/m/n/o 112/.notdef 114/r/s/t/u 118/.notdef 120/x/y 122/.notdef]
>> endobj
-208 0 obj <<
+214 0 obj <<
/Length1 750
/Length2 576
/Length3 532
@@ -1809,43 +1887,43 @@
stream
xÚSUÖuLÉOJuËÏ+Ñ5Ô3´Rpö
44P0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22°25çRUpÎ/¨,ÊLÏ(QÐpÖ)2WpÌM-ÊLNÌSðM,ÉHÍ£ZR©§à£ÒQ¬ZZT¢Çeh¨\¢Ç¥rg^Z¾9D8¥´ &UZTtÐ
@'¦äçåT*¤¤¦qéûåíJºB7Ü4'Ç/1d<80äs3s*¡*òsJKR|óSRòЧBçY.ëYìª kh¢g`l
-È,vˬHM È,IÎPHKÌ)N§æ¥ ;|`èzDyjCã,WRYª`P
æ"øÀP*ʬP6Ð300*B+Í2×¼äü̼t#S3
Ä¢¢ÄJ.`
+È,vˬHM È,IÎPHKÌ)N§æ¥ ;|`è{»»úkCã,WRYª`P
æ"øÀP*ʬP6Ð300*B+Í2×¼äü̼t#S3
Ä¢¢ÄJ.`
òLª
2óRR+R+.Ö×ËË/jQ MBZ~(ZÉI? ´©% q.L89åWTëY*èZ
644S077EQ\ZTWN+ÀàñÓ2AZÌuóZ~²uKÖômm+ë\_XŪÏùóÄÚ7ÙDì¨Rl:/P1½dÉ«
¶öϾ(ál=U¸hd¯_OÜEÂk¶v-X1¡Át¿Þ`ñÊæ®i¼ÿ´Õ_y.1§õ´Õþ¢Ç³:un~Q®?Á3/å
SÔâ}ßï]ãÒ
¤¥$e~sû]F1ñÊ»Ï/ËÚQ?ý¸mò»³·|<ÄݺÔ/¦Ùq'}Iüö+6ìâEíÀg¯¼xT.òGÀ¿gtÅÙ¥vÕGU|íª®¾~ª]üRÇëÞ
_kü9¹öË:½{ápËñGúý
îûd}dN<6Îø-uBÛoHºÁ=c¦MÏvHÎzºq½aûÿìRKë~,K̳}¬ËªÂå»m¿÷Öêyoù~ÉîÃÜ×v
Û_¹éÜÿs>§ß¶.#ßÒߦíÈè{/þôÉkÜ<nÈeà[»«×?Ñí[ïÁ§÷ºÞâdÚeãHð1Îcê+öÍ_èeÍä7aÕ-<Ì
{fýß_áþZ#MzîáUü.G?=¨=ãûp®Yõ'åǶ/¨Tñå}[}âWè:)ïÓ»ÚÕÎÖ0Ê3íÿ±:oÝ;K©æBÊû.l½ñcc«yEá2ÿ
-óî-ÆצÈWµýþdöä¡_Õ~Ò+ áiïsûs`ª¨C¸¾îuÞI^>öÉ\mü|¢Ðr¢úÿXöÑñßϾØadj|ïÇéÖR/ü,2 p0,HÎIM,*ÉÏM,Êæ ajrendstream
+óî-ÆצÈWµýþdöä¡_Õ~Ò+ áiïsûs`ª¨C¸¾îuÞI^>öÉ\mü|¢Ðr¢úÿXöÑñßϾØadj|ïÇéÖR/ü,2 p0,HÎIM,*ÉÏM,Êæ æQr|endstream
endobj
-209 0 obj <<
+215 0 obj <<
/Type /Font
/Subtype /Type1
-/Encoding 368 0 R
+/Encoding 383 0 R
/FirstChar 15
/LastChar 15
-/Widths 369 0 R
-/BaseFont /QQHXVI+CMSY10
-/FontDescriptor 207 0 R
+/Widths 384 0 R
+/BaseFont /QSKGEO+CMSY10
+/FontDescriptor 213 0 R
>> endobj
-207 0 obj <<
+213 0 obj <<
/Ascent 750
/CapHeight 683
/Descent -194
-/FontName /QQHXVI+CMSY10
+/FontName /QSKGEO+CMSY10
/ItalicAngle -14.035
/StemV 85
/XHeight 431
/FontBBox [-29 -960 1116 775]
/Flags 4
/CharSet (/bullet)
-/FontFile 208 0 R
+/FontFile 214 0 R
>> endobj
-369 0 obj
+384 0 obj
[500 ]
endobj
-368 0 obj <<
+383 0 obj <<
/Type /Encoding
/Differences [ 0 /.notdef 15/bullet 16/.notdef]
>> endobj
-165 0 obj <<
+171 0 obj <<
/Length1 884
/Length2 3123
/Length3 532
@@ -1853,52 +1931,52 @@
/Filter /FlateDecode
>>
stream
-xÚíy<mÛÇ-!cÏRÊrÙf±ÊDöì7¡3×0ÆØ[dÉP¢He_£R=²e$K¸±wê~îÏÝÛóçûþõ|ëºþ8¿Çù;ówÇùÇ)#ab=#9:$"!Õ´
aDFM1xCÕ¤" :ÐôO¥¬TÈ h»àèD¢ý© gÝ@2!FèFÏŸæ$,¤øÁ³®®Ùè ½AD88"þÃOTþ
+xÚíy<mÛÇ-!cÏRÊrÙf±Þ©LdÏ¡3×0ÆØ[dÉP¢He_£R=²e$K¸±wê~îÏÝÛóçûþõ|ëºþ8¿Çù;ówÇùÇ)#ab=#9:$"!Õ´
aDFM1xCÕ¤" :ÐôO¥¬TÈ h»àèD¢ý© gÜ@2!FèFÏŸæ$,¤øÁ3®®Ùè ½AD88"þÃOTþ
ã¼ÜÿòÉtSÀÑ6t8ÑÕÀxÜDß
¤{ùÿ°õ{r/WWcÛô?+õoó7«ß¿$7w/
-HH8Lü]úø9#Gðrû}Vq%`Ï]A T!þ<u¾ Î@Á:x«'ø3q¿;¡×笠©¶
¾Â¿ZûsÒC R,üÜA ñú'#ÿazÈ_ÀA¯2.¤¿ìÛL%áDG@¥`Èd~è }Ðî#(ô% ½2× <ùÑWzkà¡D 8îDpð<ÀA 'üô?A% NþébÏ_PS~Aº
¯øï¥ÔÒ"ù@Ê' ¨"
-ñ#±2 ¦¬ví)±^d2H¤ü<¯ôüÍx½ èb!Ô>V#Ä9¹âÖëÚÙù,Ç<ERsCÚ^
¥jÀf4ô+;,@±%¾P>gÂSÞ¤Yçp5"\qöjc9<´¯KàXV9Û<vÆîSÓý÷oyÜ2"&©âãî
-óR«ÃÞ¯X
-
§*
g#÷=ùÔ·³|ÝåFû#'5±¿_cZM
ǶnÒβIÔGMíÒVùw©Âo¿t¹r¥ªÝ¾oÄÜzjqÌ?ÚAÞs§ZgªéîMòHÀ½ûLRû¹Trs=êyE»YøUb$hÊh¶LÚHóS2}KPgϳÆxY|þ¾ì×úGúXi£·ö¯ÒwZ33OuO!äÚÕ7c8zðyS-ܸËRÅÍ¥ JtOVëé3â
ôï"6lVËÛø!lIs¬Zð¯¦_S3öé¥ø¿ëRy»óÌòCJP¶Á[Ø©±ÔÂÅL=Î;èªKiS7òªB
¤».¨ÔßÛHRþ¤!û×q¤ë«wH¾$`®CV-$ä[.µml{¯Ü² ´¸úÞ7@üU½Þ·®Ó|Ëòâ§o¼©#¿jöIèæf@?¸ E¼N}Úy§$o<n+g¶b!R3+Íì5:áÆ!w'ýãSÙçÁ3@&¬Ñï!NEþIýª®DùR³Å´ Ç-ôu{J`Úæí»<C\·´¯º?+²Ùà6ª{TÓc9jOD"EÍ:L^_ÜÀ-gAfkaåz»¢¦û£URßD÷ö]1* 9Å7¥ÚJìíÐM Ò¨Îül*ËåõýKõMaÙï5Ô&7ÍW'owõ<!½/@ƲXϨárc>ç$Ò,Á®ÖÐO?ã?¡:RFN²l/
pNHÖj¥ø}Á.°
`ÕÎJKø²a_¨Ê¦
-_W;aæ3/Îe ©¼ êJk½Kì<eùZ³î9'ß
oåÔF|nVÇ
-ÎK A7ú^N^ë
5ÅrauBê?çmdAuª¶q 58"g±¥¼
-nÆgîHä¿wQN'ØÖmª<¼J[KÈWk¾¨a/ÃhÎ6ÿ$\l íÄõ=£Ð½Ií ñ~zîsÁòN»z`ÝÓØëcZè>6K×Wc#ªÜD'®Qó/?]M*×Y5Îø `T0ñ½¶>Rö1rìPÆ$ì´öÙÎ+M§Ã=·^331²[5 ¹Ëë´ÎEÙÕ^³ã6!Ù1Ë°¹r÷tùªGø]Ë>eLîµü
-¦k.iU¨l¼Í)PÁï2:o<ÂNMoîÓ¿Ñý¬J-ï¼ç®ú5ª91Ò±H3ÑÛ_2}À:²¿á\GÄ
°j¹~|Óc|;øÐÅ+ì}lj>Ll÷8/ÆÆ*Q)}ZvIN¶¡Ûb÷»Û
- ëLÅè
¢B>á¨*÷ÍädIéørEGg«¾¹9MÁ±¼«ü2ã}¼Õ²5ÓÑRi LºøÄ!êþ¯´{WvÆäùlè ñ]ÉCºv'U«í»÷ÉÚø
ßEºHbÓ¨I>Ã"Aµ:3¯d%uÔ ûåºÓÌG t|®PÖòªýçÈ¡ª+bZONYز·ÞðÓ3MÎn×kdl¾U7¹!]/âg4 |n¹i\á˲Yò-£tm9Ù¯ÈÊaîÞ
-«L.ã-ÚyªzÊ$Ü+¼¢bÛ¿Ð3&ºK(«ìLy{h¤M`[AªÖh±ÛQû_Ðh¤M¨ÑÚ4·iÖò_Yzf3íhÅ®v ¶Æ¦bÿ·+îV¡iýÍ[˽%¾cP3¯¬yÕRJcS§úãûWûjÎ01uJ¸&©ýPÊÕvT+9pQ³'°òy!4®R{hgÆûî¡ vÕÙb]Ôttª¥u¾v®Sʪó£¡wcLn1Aá/Åø5ÍEÝVÆÊ Q1±="Pºj%?ü8{$I¬X:4<d¿ºîdsÛæ9xw+1|¬Xä||ÞɳJw*s¿j§°Ü`h9¨pm£Å1Ì_o~ðP#¿pª^¬ÿ½a¿Ôd`¥ñeI|BÖô_>vÀI,Ï¢òæEêZ°lgùÂعEP^ÏïÙW&i²ÒûmÅû£¨¾Ú'[®
Û§Q7ùιk×®ª\òàdußË£ÿOýs_Y6tK=q£!ÒÓáø Ö&w õcæ,¤ÂÄ:åpÈW at Zë
Âiw¯»¥íUµgL®Û6y úp9©i¯'wµI+ø tºzjôfJû·4îÛöNnø"ð©ÅcVëàcɧe$»õÃê8trQ,B¡SfÇt' zêÙ£¥,ʼ]kr¿¤!¹?Ð쮫¯ëõU
ä*â5Ow¼÷¨}ù¨u£7ê>ÂÅÔ6¦d_7,¿y ©yÔã¢c_ ÷;a":· ¥vUÐì7M;Òå;õWjdãk¦üý'ÆõÌgúçWÆ-$7t&_Zöß;®l]©êï]¾æïØÖÈÖnp-äÜμ½màIÖÛ²P®Éx)¿(¹Ü±¨½Æʼ731¼~7¤zsZ<§E½ÚÈWm)WP_>$7^ûZ[cU?>Úæ§WÓô¿tì Å%«ÞFßL¸Ì&?#k½Sðp¯ª|Íø(P¡îÞ=%¨Yv8ùT
-zÉysm±unvây§à;ó5M÷æ51ÓNùWc¹ÇÉô&³~|cìe¼w°"6rÏçýÂ*Syò8a¬>Ú5|yZyõãCÖWó`I'_ô&uÕ°ÎS4TY[ÀsbûØæ¹áBêmÑiÒ×'ßNÑ4ñäÍ|ðvw ;Ç? Á)ßÆ4ïÀ>dRlz8±9.ðôåÌFCo«~ìfz¨)¬ÅÁ±Òù{b¯v+j{8cú4Féz Üì<ZÌoñ'KòîÙFRv|7Ñùv¨8ünf°h·l5Å8¢*ºylMßiÀqÿY®.nVîSÎ÷ðÎá[§æÈ}^¥Q¢«aN7KC-liÝu¡æ˲
-3u°ÝûªÑy;d±´äW*To®ª£ÕvWSD §zªu(|)îrÞ°X¼~*¾}>xµÁ6HüM®j§º \5¹Ô}%#Q6*}MYÕ"gñýÂBjÌr2ëS$Â(3÷Ê©z9<GÜÀµ«^aÃ×ù÷ÐÚ±
öµ»$'+ÌÔG¤`Ø[ÙÛËü±gc¼â¥q#Qht½ó¯Õñ²#ó!G&£ìÛÖGåºd5/°u<íöʹ=×3xý¢äBHIkõg´Òäâc¶°}çÄO,É\~¼S_¿rU?Iìú{&#ÃΪ3¦ÉkßÀyÃoäÞöíõïxÞÍ#ì.Óñò]ü¢k8ç³,|ÃEñdÉé
Á^¤_ç¿ØðääNã~wk#ûGBVuçó¦¦oì0s^¸5Ëèr4ÜÍËãÜÜmüY&;¬ÏÃ×÷÷(~£üÅÒuல?öY¦½Ã[9ø=}òIÚËz-ÀoËwyuÌ!Ñ ù¼áëuÜ<ýn Ù£.ø4ÎÕ¢¹å5¦M¶ÿCNNpedW¸Äó
-åøS5_¼Å=~mTµÌ5yXñµÔ"°ÿYÿÆå1צLe¢bÝÑ+ÊĺóL|ÛX/Ae±/¨ þÏüg$Àº2
ä!»@þFÀ© endstream
+HH8Lü]züË#x¹ý>«GÁ¸°g® E*ÁJÅ :_gB ` <ÆÕü¸ßÐë÷Ó\ßò¥Zá_ý9i!)~î øGýÿ0½Hd/` WIÒß¿Gö¿m¦MÄp¢# R0d2ÆB?DtBH@ľ èKwIú^k Düè+½5pÌÐOB" ÷"8ø à¿
+þAú¿ 'ÿt±ç/¨À)¿ Ý×Oü÷Rji| Hå T
øXPSV»ö¿X/2$R~WzGþf<ÞDô±j «â\qëÉuíìÎ|c"©¹!m¯BËR5`3CzÈ Ø_(3á)oÒ¬Ás8®8sµ1ÀÚÏ×È%p,+Ím;cw©éþû·<nTñq÷J
ù©ÕaïW,
ÓH³û|êÛY¾îr£}ÊHØ߯1L¦c[7içHÙ$꣦vi«ü»Tá·_º\¹RÕnß7bîM=¹Í8æm ï¹S3Õt÷Ê&y$`ÍÞ}&©ýÆ\*¹¹õ¼¢Î]Î,ü*14e4[&m¤ù©E̾%¨³çYã
+¼,>_öký#}¬´Ñ[HûWé;§º§ríê1=ø¼©n\e©âfR%º'«õÔéVñKÂ
+ABúw¶B«åmü¶¤9VD-øËWÓ¯©ûtRüßu©¼Ý¿yfù!@%(Ûà-ìäØAKjáb¦çtÕ¥´©yÕ¡ÁBÒ]çUêïm$C)ÒÎ
ýë8ÒõÕ»D$_0×!«Kò-Ú6¶?=ÂWnáEYÚF\}ï þª^ï[×i>eyñS7ÞÔ_5û$ôLs3 ÊÜÇ"^L§>í¼S7·Î3[±©Áföpã»þñ©ìóà ÖhÂ÷§ÊÏ¢a_äÃ~UW¢|©YÆbZcÌúº=%0íNóö]¡L®[ÚWÝYÍlðHÕ=ªé±µ'"¢f&E¯¯Anà³Ä ³µ°r½]QÓýQ*©ïG"Ê{û.CÐÃâRm%övè¦iTg~6åòúþ¥ú¦°ìwjÄæ«Ë·»zOG@Þç!cY¬gÔðE¹±NÅsCi`WÉDHëNè˧ñPB)£§Y¶B8'¤FkµÒÌÊü¾`ØCÃÅB°jÎç¥%|Ù0Í
Ç/TeS
¯«0óL at Dç2TÞu¥µÞ%v²|Y÷ÖÂï·rj#>7«cç¤ Ë}/'¯õAb¹°:!õÂó6² :UÛ¸VгÎØÒ^·
cÓw¤
òß»(H§lë6UÞJ¥Ö-Ï%ä+5ÄDßÔ°a4Bg.6öLâúÅÉQèÞ¤vx?@½
÷¹`y§]=°îiìõ1 t¥ë«±Un¢NK×(ù®KÊ&kͬg|P°
+*ø^[)Ï{Ç9v(ãMFvZûlç¦Sá[¯ÙÜåuZç¢ÏìêJ¯ÙqlÇeØ\¹{Eº|U#Nü®eÎÀ2
+&÷Zþ
È
+Ó5´*T6Þæ¨àw7a§¦7M÷éßè~V¥÷MÞsOW}@ÁÕéX¤ÉèíÌ/>àÙßðA.Ë#â|XLµ\?¾é1¾Å|èâö¾65A¦6ÉÖ{cc(ÊÌ>-»$§ÛÐm±ûÝmA
u¦bôBQ!pTÇ{Í¿fr²¤t|9È¢£³UßܦàØCÞU~ñ¾ÞjÙéh©4&]|âuÿWÚ½«C;ãKò|¶Kôø®ä¡?]»ªÕöÝûÚø
ßEºHbÓ¨I>Í"Aµ:=¯d%uÔ ûåºÓÌG t|®PÖòªýçÈ¡ª+bZONYز·ÞðÓ3MÎn×kdl¾U7¹!]/âg4 |n¹i\á˲Yò-£tm9Ù¯ÈÊaîÞ
+«L.ã-Úy²zÊ$Ü+¼¢bÛ¿Ð3&ºK(«ìty{h¤M`[AªÖh±ÛQû×h¤M¨ÑÚ4·iÖò_Yzf3íhÅ®v ¶Æ¦bÿ·+îV¡iýÍ[˽%¾cP3¯¬yÕRJcS'ûãûWûjN31uJ¸&©ýPÊÕvT+9pQ³'°òy!4®R{hgÆûî¡ vÕÙb]Ôttª¥u¾v®Sʪó£¡wcLn1Aá/Åø5ÍEÝVÆÊ Q1±="Pºj%?ü8{$I¬X:4<d¿ºîdsÛæ9xw+1|¬Xä\|ÞÉ3Jw*s¿j§°Ü`h9¨pm£Å1Ì_o~ðP#¿pª^¬ÿ½a¿Ôd`¥ñeI|BÖô_>vÀI,Ï¢òæEêZ°lgùÂعEP^ÏïÙW&i²ÒûmÅû£¨¾Ú'[®
Û§P7ùκk×®ª\òàdußË£ÿOýs_Y6tK=q£!ÒÓáø Ö&w õcæ,¤ÂÄ:åpÈW at Zë
Â)w¯»¥íUµ§M®Û6y úp9©i¯'wµI+ø tºzjôfJû·üaÜ·íÜðEàSǬ×ÁÇ>NÉHvëÕqè
+ä¢*Y6C§ÌéNôÕ³3FKYy»Öä~[ICr/~->¡Ù]W_×ë3«
+-'É-TÄkîxïQû8òQ'êF3nÔ}©mLɾnX>~ó@Sò¨Ç*DÇþ¾@îwÂ0Dt2n-Jíª6 %!Øov¤Ë[wê¯ÔÈÆ×LùûOëÏôή[<øÜÐ|i)Ú︲u¥ª¿?tú¿c[#[»Áµs;#ðRô¶e@'µZoÈB¹&câ¥ü¢ärÇ¢~xö+óÞÌÄðúÝêÍiñõj#wl\µ¥\A}ùÜxîkmiUýøhk^MR8ÒÿÒ±K¬z}3á2ü¬õNÁÃd¼ªò5wâ£@ºKx÷| fÙáä(è%ç͵ÅÖ¹Ùçï|ÎÕ4Ý×ÄL8å_å?^$ÓXÌúñ)²ebðÞaÂØÈ=kX÷«LaäÇñcõÑ®áËÓÊ«²¾K:ù¢0¬«u®¢¡ÊÚ^ÛÇ6ÏRoN^¸>ùvÖø¤±÷¨ oæ·»K¨Ü9þ Nù6¦yö!bÓÃÍqw¤/g6zÛ´\õûd7SÔC]lMa-ÌßìÈxµ[Q³ØÃ{з 1J×Ë áfgàÁÔb~3?Y"°wÏ6ºê°ã»Îß´ã@Åáw3E»ý[`«ù,ÆUÑmÌckúNûÏpuq°út?r¸wßB<5Gîëô*Õ]
sºYjdKÛì®5_U©íÞWeΫØA$¥]ì ¿R±à zkuíTMVd°»"J8ÙSCYàKqó
ÈÄâõËXPñíóÁ«
¶AâoJtU«´<ÕàªÉ¥ì+²Qék̺¨9ãïçÿRcY"9F¹WNÖkÍ©à9â®]õ
+¾ÎW¼Öm°ÿ¬}Ü%9Ya¦>"õÃÞzÌÞÖÜX¾à×=ãø/Åì³:èDû£ë_x½92ae߶>*ÏÔ%«9xãi·çÌPÎí¹Áë%DJZ«?£&³
Eì;+~Jdñt®àòãúúû«úIboÕß3ivV1M^ûvÈ~#÷¶o¯Çû¸xðnawn¿tñ®áϲð
Å?JNÅ´lmöÚ$}ø:ÿÅ¿$'wú÷»[£ÙG<²ª;7Ý44}ì`ó²ÄYF/ÈÑp7/ss3^´ñgì°>K_SÜßw øaòK×»ÊþlØgiJôoåà÷ôÊ_&!h/ëµL¿-ßåÕ1SD\äó¯×qóô»fºàÓ8Wf<äWÔ6ÙþàÊÈZ¯qç[Êñ§j(¿y{ÿ$ý5Ú¨jkò&°âk©E`ÿ³þËc®MÊDĺ£Wu ç9ø¶-±^þËb^P=Aüÿ&øÏHu1d
+É
CvüŨþendstream
endobj
-166 0 obj <<
+172 0 obj <<
/Type /Font
/Subtype /Type1
-/Encoding 370 0 R
+/Encoding 385 0 R
/FirstChar 97
/LastChar 117
-/Widths 371 0 R
-/BaseFont /QYRETJ+CMTI10
-/FontDescriptor 164 0 R
+/Widths 386 0 R
+/BaseFont /JUWUFC+CMTI10
+/FontDescriptor 170 0 R
>> endobj
-164 0 obj <<
+170 0 obj <<
/Ascent 694
/CapHeight 683
/Descent -194
-/FontName /QYRETJ+CMTI10
+/FontName /JUWUFC+CMTI10
/ItalicAngle -14.04
/StemV 68
/XHeight 431
/FontBBox [-163 -250 1146 969]
/Flags 4
/CharSet (/a/d/e/g/i/n/r/s/t/u)
-/FontFile 165 0 R
+/FontFile 171 0 R
>> endobj
-371 0 obj
+386 0 obj
[511 0 0 511 460 0 460 0 307 0 0 0 0 562 0 0 0 422 409 332 537 ]
endobj
-370 0 obj <<
+385 0 obj <<
/Type /Encoding
/Differences [ 0 /.notdef 97/a 98/.notdef 100/d/e 102/.notdef 103/g 104/.notdef 105/i 106/.notdef 110/n 111/.notdef 114/r/s/t/u 118/.notdef]
>> endobj
-159 0 obj <<
+165 0 obj <<
/Length1 2063
/Length2 13278
/Length3 532
@@ -1906,9 +1984,7 @@
/Filter /FlateDecode
>>
stream
-xÚíµUXͶpàNã$8ÁÝÝ]BÐƵqw`Á=¸»w»wwÎßßÚk¯dïÿò«ó¦/³ê9jÎêz©ÈTMìv¶N,,< Qy55f #3³"(hèdag+fèä°ps³íA V 3+øHµ³wY;hE?ü3 lYÚä
Ì6à5
ªvÆ@'wF°µ5@å'*@G ÈhÂÈÂ0±0vÍ,lþq¶5µpþWØÄÙþ¿\ G°ö_ `I;[kw ÐIÁ
vùCë/.álm`hóÏòÿªÔÿ5nhcaíþïv6öÎN@@ÞβýßS5ÿ%'4±p¶ùߣÒNÖƶfÖ@ ó
,%,Ü&JNÆæ '3ð_a Éÿv Wî_L:
-*Êê
-tÿnê¿-lÔÜíÿ³ê?³ÿÅ,\
@\_ðDðßÿ§÷¿ÛÛXØXÙ9 ¡;"øøàÉ°°5ºn`a&F[;'ð# pM¼¦v Ä:úé <lmhóOü¿Bl &g;' õ ;ÉÖÙÆèÎÙþ s Lì¬
AB &{ Èhëô'Æ`2´G
ÁÕúOûßþëüw¼!hk
4ý+ÊòïèÿÌ
+xÚíµUXͶpàNã$8ÁÝÝ]BÐƵqw`Á=¸»w»wwÎßßÚk¯dïÿò«ó¦/³ê9jÎêz©ÈTMìv¶N,,< Qy55f #3³"(hèdag+fèä°ps³íA V 3+øHµ³wY;hE?ü3 lYÚä
Ì6à5
ªvÆ@'wF°µ5@å'*@G ÈhÂÈÂ0±0vÍ,lþq¶5µpþWØÄÙþ¿\ G°ö_ `I;[kw ÐIÁ
vùCë/.álm`hóÏòÿªÔÿ5nhcaíþïv6öÎN@@ÞβýßS5ÿ%'4±p¶ùߣÒNÖƶfÖ@ ó
,%,Ü&JNÆæ '3ð_a Éÿv Wî_LR¢ªRtÿnê¿-lÔÜíÿ³ê?³ÿÅ,\
@\_ðDðßÿ§÷¿ÛÛXØXÙ9 ¡;"øøàÉ°°5ºn`a&F[;'ð# pM¼¦v Ä:úé <lmhóOü¿Bl &g;' õ ;ÉÖÙÆèÎÙþ s Lì¬
AB &{ Èhëô'Æ`2´G
ÁÕúOûßþëüw¼!hk
4ý+ÊòïèÿÌ
^Ùñ%þÁ;0¶³±1üë»Ûÿ¨³qüËÓÂîXÝÑÚÐÑüO,îÙý ílÿav°¬ëqv°¦9ø×°¡©ó±Knjáò×°®#¸Ýÿa°¬#Ðå/Wpkÿcßì`U[¿E¸þÙ³µÝ_qÿ³ÅÿrÎZË4ûçþqä +ÿ!pz?N-úÀyÅþ8§ø\?Î,ùÀY¥þ¸&ÒOîóÉÿ!p>
?ΧøâçSúCà*AõK®öÀ»UÿCàì]óóiÿ¸Á;2[þÇYåþôøÿ<ÜàDÎà$ÈÑØô§wàéÏYåïÐè3ÿXÁ[4ùÿéæ_øÏYûÁf!xÓæ!XÆâ/oÛò/[Xÿ
`?Wø6c²ýÁv!XÃþ/k8ü
`
Ð_øÏiÿÁN!¸4Î!ØÊå/[¹þAV°Û_¶rÿÁVá¿ücaÛýu±°²ÿ{ÞVþß×½'|Qr~bEfïÿ1Íؾ¼þõ*¿2þM-Àï Ð
h¸4ogÌdÜRâ#þ}²ö#¤YS¬B]×L;Ràb¤uá°¬ÃǵZDz4LÔ=Ø=R×gBÇ6/å1sع×=½4B«4y÷]{òßÇh³7'ìÓk#%ÚùýǹJ´bjûïVÈ ºu]ê»Ó88µ$Ò¬ÕCk©?© §8±
®º¢'ÆìNúXÂ7Óýº´ksÆxüðªñ`À*µØ4aÉÆϵúYÌìa5J QWØÉDe^ÙZ9ûÃv©õ÷rçä¦ênwÙç-£cøûr´ï&¹5OßI ¨Àó7Ë£[9BWJ3³ßà&
¦+éuòiëß{¼Ë4 7ã&MvX4Fø6zèËWŮĺNPu¼dú(âï ÛD4_1ª>ÝtÅÁ¿½HÆ?±ÏëëÞ¹¦Í=¦Úa§z"Áéò¡eϼ#±ò>²DZ5¦QýV ]z¿9ÄÀ=õìÀ"Õ=˲$Q1µÒÁ¡å}é´ó-v1ñ}z£<º; { ú±°]bêÖÏi϶Ä,·ëÞ«øðLá>ò>D·£`ÏÐAB7iló<tÒ3gczaSKÉ%NK>rt!pxTÌýƶké£o[·ì/&炙ùªûcEȵ¯ÃOU at oóÞ8Mñ²ÒÈ®r*Ú@=éöpÒ²ó4ÄíÓàúrò,l£O©?ù÷Øe=°ºßÏÊÌ |×ÕÜlxFÂì°ÿyAÅ~øÁ¬XìÎ͸ÑÖµYHâTûÌÃ
·@)î7X2 ïDZðjÕi@
8J#.Û <,X`
úªr*ûÅ}3ÄÀEûKÈEÖc¶KðÕ-Ï«Jh*ÀbMA^còj=]½#t,óíbË ¯zRI=ݧý%òD.O3&2ß«®9Óó9é¶ö¤K8Wõ¯n.vKññÑ`øµ«ú'ù±26©]A&°ç; c]]_$)gz8xøö
Ⱦô*Q\4ã?ÅPºØº³k½ëRÛ+· ªÚÄ@.-/(BO$orëBI¾¾®ùÞ_ÒpQÇQéSýcRJ˹HÞF!XêÛWÄÓj[^}" ¤Ê3ã¬(Ê*Ç(_¸®ÚNKɦ'zd-§+:üv&ËÎgPé·|w96¦b'i¯0ïàoWV×I\W8OêNêØa×%ÃäMXu¥¬Ãä¥Ý=òl ©Ö ,4B|o R®¢/ú¶)¥6¦sô5<êä6³Úáa¾6ZÜV^(¥ò[íÊm'Ø¡ÉiL6KÙ^0.wîÙ¯/Þô:ñåÁìÞÉf©)T¥?¶ÅéÃrÜ
@@ -1953,39 +2029,39 @@
&fÄeÃÄ2×cÁ}QÿVå!wÖ˳YÊQXóñm>lõØ2
s2&9ºW¬Mòzè¡«)ïM»I?X9ÑÁ²KÓa´ÄMm@Ü[·
¯j*?Üß!çùDÛ$¥Wß"síFúÖÎévBÆê´$çúB÷ZÙSÚ¨àJa`Ã?fª»,ª»ù4*ïTàCwd%{ë×¹å8(Zô¤26«¯PWÍGdÇÚ¶ÐüM®ðç»êç_è*Í'F»:õÍ^ɯ¥Ô0vÇHâiMf;Î"ÃÎMzKªÝ*x¬áÈÁ¶QYô¾¥ó·Z>gØÑ,dZÓcÎ|÷uª>-'ï'&ªÍ:Ë#Þ¡Lúh¬ø®ÜåÔ¸ÚEãc{°Rzj§í梡¶µé¡Éæ
J#È-;_¤w<äôæw+.\x¥rÑD¼|
[¸Øªv Nc/fòÀw\µË&É¿û@d2
ãòÐë|Í9R{'Õ¢5JIë)¿Óøf`×]Z+).
?jðPÎH'¼N¤{w÷]fñ×)´%¤ëñT8cÙE½¢ÏÕ^É^ÿtÔ¡ÞUï#k6ïì),A#:)º åMVßbm«)`=af?øýÚ¶
3¶]¸½ù#Vuø÷h3«ñP¶Ý6ëRjò6Í6.®´¾~ú¥âíØ_Xæ6d·«Ì(P1`Év£V.ÜW´ê-&,ÛôÏ9zRµz'µ2÷s àÙÊÌãsϾô?N§sÈF y&¸ã¼-ÓM²Úwh]qHÈ}·÷UûÄÂ×0ÞZF¶)IEí%AÙZs]Ãieë¿à*Úν~¥á×l¤,Äaßó2£dòÒÀd(òpý|îå³-%BæËïi×háÿ
~*å tÅríéá÷ÓÌeTm+ɽËNö%åÈKÞK¡Qd
èw¥-Ψ½£Ù½Ñ½>r2:cÜMÖ¶7rü$púBSIxaHpw¤hÔ¹zß½Z fÆ.
¨,dþ:ÖÒ´ÖGoù`æÎ`¾o Ø8ú"?TJC²k4¶ÎîlÇ«ó«D r¤¼µ&
çAÖßÄÖyâ¥ù3*
>r¬àóh½$£aMü±ñ[ïG ôPHII[¡oëÞ#×s
e QÃ{¤>OVÁ~eºG^Ê!ÉOFÏYL-êûÂUèðé¨ ß¹¾Üªlõ
áÍów«§[X²¡ì¼,'dìy_"æfÁÏ°ÝZÊ7ã>Pâ¸Ð«J}@/,b\Pn{näNôé<Õ1éOèGĬb
j¨þÎb$Èëþî½ ?ÐéoBIzÖÖHÎoaAwmÅð¤Á4ÆÒÁ©ÊQ¸4©±á½(sÓ}¡HTØ#¬L²64dK®²_ª¤ÓóäSµÐ¹§ØQQÆdäå»ÀCÊMª ÑRÜMbú4Ü eýå<À;Ö}HÙA¦h±wwúÐeL4ÁßaÙÈT-¨=f.´¼©µP,äO©V_1g¼BSí$¼ü)I+B,*òÊ@O¤U¡+Oø8á/["ö½ì]r~Ø#;_t'»(YJîjÕ²«>\5¯"&ëzS¶Y:÷
-rDÝ|ªQófZiôäpæcæEѪÞ%<J ¢eÂÿ>cø½£°y¡ÃQÏÕÑ}ª¤ßobh"û.x^`l´²],²õO·ëÀN¬ñîhô/xj>Ø^´¡Ìé÷r8ÞÑÌÿ?ÿÿÿXÀØhr²³1Y!þ´Úendstream
+rDÝ|ªQófZiôäpæcæEѪÞ%<J ¢eÂÿ>cø½£°y¡ÃQÏÕÑ}ª¤ßobh"û.x^`l´²],²õO·ëÀN¬ñîhô/xj>Ø^´¡Ìé÷r8ÞÑÌÿ?ÿÿÿXÀØhr²³1Y!þ)MÙñendstream
endobj
-160 0 obj <<
+166 0 obj <<
/Type /Font
/Subtype /Type1
-/Encoding 372 0 R
+/Encoding 387 0 R
/FirstChar 33
/LastChar 125
-/Widths 373 0 R
-/BaseFont /ZNRQUN+CMTT10
-/FontDescriptor 158 0 R
+/Widths 388 0 R
+/BaseFont /HCSOOH+CMTT10
+/FontDescriptor 164 0 R
>> endobj
-158 0 obj <<
+164 0 obj <<
/Ascent 611
/CapHeight 611
/Descent -222
-/FontName /ZNRQUN+CMTT10
+/FontName /HCSOOH+CMTT10
/ItalicAngle 0
/StemV 69
/XHeight 431
/FontBBox [-4 -235 731 800]
/Flags 4
/CharSet (/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/greater/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/V/W/Y/bracketleft/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright)
-/FontFile 159 0 R
+/FontFile 165 0 R
>> endobj
-373 0 obj
+388 0 obj
[525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 0 0 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 0 525 525 525 525 525 525 0 525 0 525 0 525 0 525 0 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ]
endobj
-372 0 obj <<
+387 0 obj <<
/Type /Encoding
/Differences [ 0 /.notdef 33/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk 43/.notdef 44/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 60/.notdef 61/equal/greater 63/.notdef 65/A/B/C/D/E/F/G/H/I 74/.notdef 76/L/M/N/O/P 81/.notdef 82/R/S/T/U/V/W 88/.notdef 89/Y 90/.notdef 91/bracketleft 92/.notdef 93/bracketright 94/.notdef 95/underscore 96/.notdef 97/a/b/c/d/e/f/g/h/i/j 107/.notdef 108/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright 126/.notdef]
>> endobj
-152 0 obj <<
+158 0 obj <<
/Length1 1365
/Length2 7439
/Length3 532
@@ -1993,67 +2069,60 @@
/Filter /FlateDecode
>>
stream
-xÚíe\kÛîÉEIÂÐ 9t#ÝÒÌÐ Ý%Ýt -0t´ÒH{ÖzÞ÷Ñý¼÷þ´{î/ó?¯ó>ã¾VSCÊj :»s 9" 5iC ÈÉÍÈ(Üí β w° (,HyØ x¸@^>~>lFÔÅfgcë`aý»I åÙYj w[°BÃ
-äÐZÙݽ9R í¿ßphÝÀ°×`kNl `mgå°ÛØ9csýHÉþ«líáòßC¯Á07D( "$+ Ñêìè
°C°¹Ô¡/0"ÉÿPÿ).ïáè¨rú[þYúã ';Gïÿê:¹x¸a 5¨5æüà
:þ%w£³#Àý¯¼ØZÓÎÝÊ 9ºÿ©ÿ3bÚþ À%c %¥ªÄö_ëùÏ &ÈÎÙ]×Ûåß²wÿÃÀßÀhD<ÿýÏô?Ìä ÖvÎ
Á/ Á` olÄÎ@?À°s¶{À^Ä\ÎPwÄ+ Äø PößËÉÇà²õv±;ÿ]ÿWI ÀåX&¨õ¿KüB .+¨#ôw /ËÕìö÷Îü]DIý&ôoDLÇopÉý¹\ò¿ àRøM< .Åß°UúMMµß©þÿ&!æoBhjÿ&¦Îoâpéþ&Äéý&Á¿ ±¹@¿ ánùîVÿ& 7ÂÞúD|!øD°ù lÿ@D»?áêð"lÿ@¯Óo"|ÿ@/ôDLËð
ý_·?±î "ÇñúDÄðü»ËëDÄðþÿç¹zùrðó8xø!^a ?·ÿÿÖhåÝÿ¹§ï¿b8«`°Ø
-{éÔJ4Ì>£%¢2@®xº
-ý²´Mk¢zcÏ\'Nèb²cÙë/
·ÕÙÄx{è{4÷TnÑp?IùÓ`×ÄÌ
½×{Ù>mTçÙjÞ».tסÇø-ó'üȳ_Æ+S_¾=:.ÔdÕÝÇX¥Eê5~ÝÔ& h(í¨ÞÀÄK«MéZù/rÍ 5mm*4À>óÛÊw(Ü足 åÁÕzRßâZå[º7î¶ÑmâÄ5Q}iEô¶GZÖ«øw÷Æ«4¹@cÇóØyævw¬Ú.åÚù¼£
L
-¾*
(eA\»èöÎZ=¤úÄ:¦À©Öµ"¸
úêâOÏlUßø~ÝhÃoïd>¡2ãÕ±ä°2<*óª/%|
-ûõ®)0Ú-±ïÀ^¾´î
¤Naa7CéKóâÉxÚtè ¶¸mI¢«¬>Áضa´COc\
-:âöUVøõ9@õÜW øGËER¼ ÕÍMóÕö7.w+TÊDÏÁÐ :j)üü²±ºyJú ÐéÆ R¼@õl
±ß½ä§©z<Ì_ºS|T+L½©¯Õß_æ}Çy@ÁÏ__Bàîâä|.ªeÁyÏÁTmúÛÉ椤Pî¸æsã<BÎ>-
Q2̵b3Î*ZæÔÄ×¼»u·:à7µ;nM0É,bª68óðW÷ÛÆk=Æåæ$«XºåSä#ùU±½ç¨'ñ-°@7pÓ¼Är&÷P`ãU<0XÞá¬7µp
-«íåÈN÷`xæã
-tà$Û*tc`&È+çÁëØÚ <Â㵸óRÓóúy쳺P§,tõX=Y
TOñ`Ýí¹¤fâ¹
IÞn(8Q±íp
·%NYϾkÞS`u
Ó*[ûQ%ÂxX/Ïýþç÷ sÍ»ð!aõ²kúooÄcllKvØ*.À2"øÏû+Ï¢xì
X2ت;Añͧ¶çóè´ÍyóÚí%Ð+¨ùµ÷wWV\Jmò8[â¿æë]ªÆ¨¤qµtþ¬1|üØÍ,»FÔ~żªÎ#GÁÂûpâôM§Uf¤ttzOB%á÷įZ; i"}`æFñîÙmÊÂ'?
AQì¸-)!«#»¨é9Úäx at QM5Þ@} ó#ª!ïJiͳòë íY öix|ÐüSbW½¹ïsdåM;§ Õ°)Çç<e×ÏÛðá¶Ê=ì(.»³)ß(9n¿ú I.a5/»_Lɹç^¤8»Å}bñ_ã8õHzÝ)~21*ý8ª3tµ"F!´dÉüéÇN^ã@ÃëéG·´Ë¾«&u ÔèÖDNxUËÙ7¸*ÆsÄbÝgÝ=moì÷1¾bø2>4 ·ù ©DµÓ£kL&Ó$ø¬ËÉå®6IâàtÁU
$ii8ÚYïÊgÇZû(ÃL0}ðN»NZv'cY¸iY#å¿v¡Û}1GÖt¬ï¥ìû/ûî¤Eß
çbûa¡kñ
©Ù¢à]ùÏ5XîÙëf¨É'G!ßÄbsC'uÛ¨-:qòi 6G*²´j®mÜì>½Ñxíÿüëþ¯ºZÕý¥¦¯y¦ÒEÚuƺ²køó¦E;rqªeãÆ[Kº[¬;z~¨|¡áÇ'¥ó
y+HÈþ ñSq
dò)Úqæ´
Pp+¶Y®«¯h ðÆó[§ ©ã\ì;¸>.Y§h'ê*F)
-02ïwFë~sýpGB
³õXHkK*¢ÏXH>úØ®ßVcæzv55>AÞ$òÍׯµäòQèã£O§@ç·kwãVjÏ0F¤6/º6+Bhâ
Ê» ¼ëÙxäÐ÷ù
5âÊ4² ll:zfýT§ÓFU>I&·qKï;ÈU¹öÞo%º·r=|äÙZåëÎW©ÃÔï"S$\¨5Q
åê_3ÒÞË
-²tt&ñsÝ+³Z
Ú.+£|ìþ®¨ªÞèØT«8Izí`þ¯â#|²#§XÍ,j¹ïCpeõZ!{£Är0\>᧢WT)óhõ ¡ÆØS¤h^[óiÇ.qt?/ðgáâÍ Ð¯yô Ñ4·NËSWUðô¶ï^õýÄ l·éþlC´Bóvú®Yùà±\¸ []sÞælíôgNíàýϼõ zý¡üÒm%{#=Òìë+åÉöæpÆWUµ§¿Ãã8÷Z³CîÌjE±Y9¦¸êádé×aþ4ɳfÌQmÙo¤SxÍ/Wã-K=[ÂnD¦£A¡Ë¨WÛµ_ABè5³¶æhº°ÞåKLÞW
eÊPÔê/à|z=}V@cÙ34 ®«¦Ñ
5·¡Ns¹ýúóÔ⯬n`5»ç(2¦Ö<;,Ð04ÃزæÔThR%¼!=Ü¡qGLÇ/^º4}4¿Vycx9+9\ qÓèÕuU;¶Âf¼¶äo»Ó«r"o/õuÕíS¢M´ì%ôL3|¢oqrH¦dòÃHµN¨Q}ø]1õý÷ævÃ7r®Ðk⺾Z=úÅ7dÞØ î18,ÕÇ2 âiGÊ©cf·ø7ÏÞv¨hèîY_Á#kxóå
-jQÖÁýgÎÏFÙÃäÖ-ë`«9j«<³îþ§¿ÞØ3Ø«ÙâaÂ`$ªªóÛxÙ 'Ïh©D[c3÷¯d»1qéhñ-?ÓfGøÛãb رÇúÛüÀluøzx-¥üKÀNðïÏn¯ËuÑRX)/ n²ô)P¬Hõ)|aÑuöúĦäÓk· D[W7ÓMï׸{¹%Í÷kÎ@#1ͼáo
ÏdÚ±X*
=2±¡ZÃÚØHzí(¢^æùy¡á2$ÅÒJQÉÒ ìlc3Ø<{q¯ÏðC
XD2PÕNµ5«òt©óbÇo>ýù¤J|ªÀ6%
l[UBÜú=uê>qÑ Ñuó+¿zÈgÏþûé\N§WV¯ÑO?hæ5ö¾ªyýC®Hz§Ôøù2cÃîñ)æ
-ïè¹¾ mÈ{Ý)£pÀR¯6¿ Ц9A_Æ'ªÉ5¹µ§{faGíQâÃEaÆô½Þȧ۳©ZC¼irèhòYH³ÉÖpöÂ!¿Hó µCýÏï<¡Aèò÷mû/8~Eô¢>ö_ZuöaBÌ]Ã
Ï£
- xù)¥rUÉj w ×|¼ ÿød"~jZ&d9¹±wóéç§äyµÜø]4³õ¿·ã4òÝÁ)´®d
-ºÝ=sé¢î¡ºhªö;[þ ¯³Éûjë?¼CULê¼ÏÀÂ<¯TݱÃË2pjÍÕG¹×}±ºgÜÒÎã$t¯¸KAH%bt4+Û5ß!¢ÞÁÄýfa8v(¬ØeD׬y-ÆXU?ÂLSuFÕ[ÅAs)qiZI½ogwü\¶½æ°Ë0´®r3¯XHy±Â kªí.DñÕO¾kc9½Þ0=dí¢È¿°=
\hÂÚð£ð®ø CÊ5mD£ÑÜÂJr]ðãù.Ï9p4úFø,³ÜÔtøhã³òdÞÆGRô¥;¶ÛÈÄ+âú2YM}ÜJ*¹UË&8â·î§(ú£Ð[·½¶Óõ,VUtX*Û5>ýÜ¸å¦ ¿!Oâªá¼obÕ\à©dÌØÀË_lHѸfÍ[wi~ÖiIîÍÇeêݹÌP¢ËŲÈâd¥¬hÖfÿä´^B«AGmå¢Ï«î9Öh
-¯>QËá`íÏ^ß ì·Èìz2³|Ó_cUz°ë_´c
ÕÜWC
ÊDGr>ó¿iÈ´ü®ßd¯rÖôWB¼5°»Ê';ýÉwæ3Õø:²tÕXtËyjQºGG¼b«"4§÷M daâ¾ÌB[F$¹i«äÑgÞÐuϦTÜú½BW2_ä_¹,^U?¾Úk4ßtì«+W'±Á}TûìçóJ|¡_¢ìÃÊpßlU8aÛðe¨'õN(µ~Ì]gýe¯RJk¸®Éþ+@²Òí¹øw%ã£_ÈwH¹¥@ÑA¤F|ÊçW7%,níçQ¨î¾3,e×õuÖÖï!ùi!ã?|ê)$¯z5î/ª¯aè°³ÕÅsÎCý§Uô¿ÖjãV'2Ü&Âàhâ´O÷Ä mÇé.+zÛÍl$ô´z Ýî<¬J«{YÊ¿Þ¢îîrÿú?ZÄ:Å2ðámħ;Ü¡P¦LÄå©('
-7ðBÞ&PÕ`ió÷§@Ï¿/z½Ý1º(Ê`ù¦IÏ£uáO·"µ\gÿ<-áE«®å y³µìÃþmò¸MÌÄnmb~Ï {&íëN
x&>òÓNGw>$·A¨<Ó||÷HWÉÆ£NæùÍ
-¥®1%¾cRÌrÅtÌ.Îv¶\#=w4O§GIÉi¿Í1·Þ¥m½%Ø`±Ö$ép.¦)pY2ÈCþÙ¥¼ùR>KEð`¨:æçÐPRßîO¢9[ÇGÉê$Ðù¥kÆ\
S)¥Ïåñav+Ô¡ßÇYÆß°íÎnvvýêªjºl¿¤û(¨/g{ºk[lQ¨gæ2ÀL{3@ ´KjÑ:HTc qèøì5¹7ºÌËE/¥â¥/
j^=¤ïèËÏöBb¥á¿ûSÞ×ïÎÚ -ÚÍ#¹Ä%Ò/mƸ*|pÃ
³D°IAËñbßzyÐå¨$é²qâXbTÁÆY jYAåªÝÛ® ¼[üØÓ) ®C¥z° xò eXsɳ£ªÎEÒõ{_Y"ÝíÍ7q>Âó
-N¡Âó·l)UÏècàÿnR#©dn:ý\½®êÜÕÉØ@[©K3»dEM02ytí@ÓÚ1@®;ìM°kZ÷ ºÅÒ·ÕþÐ
\ã>û+
-1@¡Ðñ%¾Ü>²O
Íüo¾qÆ:£^0)ÝóTË´$VT?ëréí¡¹OýhʱÛa;?j±Ùº§âÎ6xöBÙ7'@ÃÍTÔZaiê~BûU4ªo³]¸ït£û]ÏÍׯì»ÖBéòûÛÔx=¾Å¦Xr'¾z®gŸY2R{7\øÎN 0Av£3Rýµ0!háUñÊy¸®ôyä÷6áÚýÆRß{àÓ¾ul$!¿HtâÅ ø¤ëuÖJìZ¡®ãÝ[¬ÛbMðÎ~us]B5mµ¨¸ó÷ÔÑ]
_·]³Ò"nfÅåñÒâYo^¿*Ñ ²qPÝÓêù4@Ûõ 1C,Ýë ¨ëºð¦+lj¸¶W`ôD2ºn¶øFÏO./oÀS?ê:/?N:åÔ>M ,²}? ºJõSn¯´Ê_Ææð¾6RíX¤á9ÃiPX;%ªWñe5¬«í\Ü¢êÙfÝ×úîî]^¡ÇÛ±oÙçÎ>¦²È³/äK|ñÀyú¯lùlI÷ÈmQNEÙ9÷¹jøfg¬Ár¿IHâ92½ &Ôл¦¾_Ôkl·¡ív§åoÉiPûi¨·±hÛK at s£óªCnò¤±OæÛÝ=ý|¹ÉÉíæê&Õý³ñ³iv}ôïð'ÌÅÜ*ìb0¤ _dHæ}R¡¸á^'RyØé×ãê=>ÿ¾ªTÊj'm?Ñ8PµÅÇékÉF)½¬jýíe-*f\Å îR$¯_hÅK*íÃïJ0ä`O«¨7Áêm)ÿTÎÉã]ºäÌ=qûG®Ù¶úɵÙ;jvªG¡íuýõMsI7»ïÌÙ
Qd>Â%yJî>C\#&N³]éÃÆnÔZ1Á4°_¾VZTÁ</TåââÑÖ-Qævý¹Õ"öf}lÌK# [±"~ê2ÉcúÉ~SVÐ2+:ÅåR¶¶þhØàGà§OsôÌf'Ñ5Ö1
-¢\qj
-¹ÏTu"p
¥µßñ£ç5¿;¤n,%OÎiµ c] Ľf¨ýCt]ÑÈiÒ¿ væ~eôMãJËRÔÛl:âv8PKÓ¯«Àp·6î->!?G_>àÛ©¨®h(Wµ2¾°nÿ*7æ¸ÛfÏN*½Jbmÿõ}vlÞw$²3¡]]1XÓ%ãò~¡Ò;6]O¯D®¬ÓXÀ¾4%¢==±à 3Ó0rþFBø§7`«å!U]b¶>^XRËÒìYðó²íGãxcZ
~ïêágcÆ:1ëtûDÔîQ<½Ù3æ¾"qÕúÌÚ¼{fLnÖ%LÛ¿:.åÍ9³àGíÕÖ:ô£>[Ö¸jî©ÔäQþìô2ËÖäyÂÀd>îÀþÊÇøÏg*iÅÏ|
×wÃW¿>ãÞIÏ_?rJØaåRN7MmÅýÝ¥CS+YXC633IB'ã0j/e ÂÊ.îKø³ý%©Ì®8Õî0(mÉ ÊÔôN¼\(ÜfÄ<'HÇ_;ì¡p*?BöfXDÔFÚÓ1
-5*Ã-f
-¦Õ§±4ä
ãÇpGê*MVcùÎÇ`ë-Ä)ÓòQ587ÒË®^î{NÛd5¸~|RYOR÷Î[VAnP!ë8ûòX8Û>ùç!á°|×DO»
RØv*Ñ_6®»b>MzþÛsd'¾Zg7
'5»MYÜÈÃ×SÊy+¼Ào]ììMwØ/
-ÑÝ2ËéYCsË< £%¦Ã±ü$
N)%ònÉù?4cÎÍñËê!¶Ût£ê86Z³Ûȶ¡[æÒÒJÎ`G8îmëô;uù
ð§Â·¬~·
¾¹öo8Þ§mÒæHÕ*ã;¥úª¡ooÂKÑÇ#ú\Î\åM²»úø.ÊãuÖVÇdYw¸ñGU"ß1ÔâÚ.²â`BýTòBuÄ/N-ÑW=*IÅ/ýzzp×dÐvÈæòÄðd£¦QKíe²
ëëMSѼ²3iæ jieZUÊ&Çès²oúÜ|ò*=]'DBÉV¡ïñQL´é«
ôÍ'¬+ràèµaܧ¥Ä\Î i\,±½$2 at 4õ)Y-5ÆpϾ-çÃc<ÏÚè´uê˳!$â,»tÞ{Kï(T
-5~æ?gáy°¾ëKFÔ=½¸K£8
e'#gÑú¼ÉHWlØíä7lòàË" Ñ«6Tt¸ÑÇ%ËoÕƪۥ8r"ì×Ï?ΰJ×S*_·ßàb)n
íÛó:¸¦E³/:d¼Ø-ÝXªé4Xb£·I¦Ë
æP¿¬¬4Hß>"¶@¨ÈÕb=¢Ùâ`BبçêêV6ü3x<Ñ
-ï*B6±ý0äOÎ+vvîbPb;9-³{xòDrC±ÕiS]÷úCðDZáy%}¨<?_÷´ÇD¦ªùgèV^äeJïèÉ?aJú0ryÑ/~1ÄAT^£ôóÞ°;Ãy ¨ø¶¬l&É)
-§Ö³Ôs@iË\ÉåÕPbÛx²« "®ÖK¥ÐÆdø®OåUT·PîÈuÇ:ýÜ%-í£
-÷¯/çoH¤¯rÛsÖ»kS÷ÞFw<±ÂÁêªálÈ Vü/üÝ/ÖȦE¯©cfÛ,îVcï\ß6}ïQ¦)çPc¿ºÚí !þÂÁ×5øeAÒÈYª¤vÖ«¾úôõè&¤;W§p/äýè
k¿f²Ç~`ÐSPóî¹9ëêå´6 1nïá(§í·n3Dk³Ó 2³Âf᱿(>£õé´Y¢,§Ï'Ͻ¤»¿2ó¹X¯uÜò&÷Q uIóÜEÒÏi÷irxÍäb&©%)ÍÒüpÊ"ÇbÙMq²ôÆ0¯'ouãçºÁJ¹`æ 1ó{ú^sÌt+Ýâ;RÅÌ`FxjyR+¡\¹ÐöÄDþÆÃv|î¸ [DIûÝä=ÌbÅË|ÈÀ±¿Ê£hn5IÉýÙùÁ¢ú+kõöqµmí0·¶ÃVbM8#à íA o¸fí7aM]ñv¾2[ 2þäçRåm¿7Úã.N¬ÚHrZG2®YØfd²Hli8d¨+ûµ×µY1wyÑ3?Gît²Á+C{?Ç >ôÇÊí96æ-(%û1q ÀUÝ9T[ÓéWÙß@eÀ:V^76ôÃ%À&q³@Ñ7'ûq»e¼ôb§crbÔÖ ¸z̤o+lFU¶zè¹ê¤+·¥5AÿãÇ«kK©_ïü±É®.Û)æÂDw¯&ôl;FHÏó?.ÊÞ¯Áõ#rÒÀºlý/>ìÊíyl9l¢áIÉ£_¸r¦e ¯Oé
©à5Ey*×½éeÊÂÓÔö4¨0Ï%7NÈüQÚ~±Zq_±jÇUtyG}{ÃxǬ+ê[î Éêêk|mð1iw7ÒçÈ là
t½ÓÛ×d(gÅÆI´Ø¥,¾ûØ1^í^Yµ*
§½¼efù
H"ÂÌÖD)7ÐÑïG¥¯°gò²H)²LíÚ/Üq6kâí_{S©²w|ÂUP8*pi-LèÏþõX5Îhfâ'µLgç=ª<ú~Iª,Ib©
-·8atíæ}6á§c MøE?PÌ8MEZ¿½le½x¿Op3õ>+!á:#ô5ÝoÞÌÉ´¸ÿØÿ_àÿ +G0æuÁ°ÿ¬gÛendstream
+xÚíe\kÛîÉEIÂÐ 9t#ÝÒ5C3Ì Ò]ÒÝH7ÒCwI+)Ý(H°gç}ÝÏûqïOû·çþ2ÿó:ïã8î«i5u8¤l V y;(Q6ò ÜØ20¥»=ÄEÖÒ$
+R¶ n P@O qõÙÛÚ¹XdXÿnH9`öÖ. 5Kw;3BÃÚÒ ±¶¹{s¤ Ú¿áй`¯A6Ø@ ÀÆÞÚ`²µwÁæú;üWÙÆÃõ¿^`nP DHV "¢
ÄÅÉ`cs©C^ Dÿ¡þS\ÞÃÉIÝÒùoùfé[:Û;yÿWÄÙÕèAl at 0ÿl5 ý+4ÄéØ(¹[:Ù[K¹Ø: Üÿ*Ù»ÉÛ{l4íÝí `K'7Ð?uÍF at LÛ?¸4TäØþk=ÿÔ´´wq×õvý·ìßÝÿ0ð7#ffï0ææäæ"Ïÿ3ý39k½bCð ,a0KolÄÎ@?À°w±y@^Ä\.wÄ+ ÄøÀößËÉÇà²óvµ¹ü]ÿWI ÀåX&Í¿KüB .käw /êrû{gþ."Ĥ~BGú7 ¸d~0Kîß$È
àÿM@ÄÄý& âoBØ*ý&¦ÚoBTÿMÂAó7!4µBSç7ñ¸tâô~ÂÏàßØÎ\¿ ánõîÖÿ& 7ÂÞæD|!èD°ý ìþ@Dû?áêø"lþ@¯óo"|]þ@/äDLëð
ý_·?±î "ÇñúDÄðü»ËëDÄðþÿç¹xùrðó8xø!^a ?·ÿÿÖhí\Üÿ¹§ï¿l8« È{éÄZ4Ì!£%¢2@®xº
+ý²´mk¢zcÏ\'Nèb²SÙ
+ôÅÃÛêlb¼=ô=Ï{*·h¸Ö¤üi041sáaïµÅ^¶Oáy¶÷®+Ýuè1~GËüå ?²ÆìñÊÔW%oÏ5Ydu÷1Viz_7õæ Êg;éE70ñÒjdB+ßðE®y¤&£M
8Db~`[ù{Ýc¤<£ÚLê[\«|K÷ÆÝ6ºM¸&ª2Þö(PËzÿîÞÊx&hìt3Ï|ÁînUÛåº\;Wbt£IÁW¥¥,kÝÞYB«TXÇ8ÕºV·³0RÿA=QüéÂcóѯMsxñíÝÌ'ô@&òc¼:VGe^ð¥Oár¿Þ5fQ»%Öã8ÈÖ½÷Ði2,ìFp(}i^<O[Ä·+IÊêm[`ÉF;ö4VÉ¥¨#n¡Xe
XTÏ}´\Ô(ÅË PÝlÐÔé1_mOxãrÙªH0±B$Py¨LôL
¢£ö9àâÁÏ/«ë§¤ o"ÅTÏVËùÝK¾pjpªÇãÈü¥;ÈGIµ"ÁäÙúZýá`øeÞwLüüõ%¤80î.NÎç¢
+XþL@Õ¦¿ýLaNÊHz å4çÁ|öiÙlÐa®ã´q>PAÐæ0g¤ .Øä¼æݼõw¸©ØatkyH~`SµÁ¯¿ºß6Þ\ë1.7ÿ I\ÅÒ-"ɯíÕ<'
<oÙº£æ%Ö3¹¯âÀò½©
SXm/GvºÃ3(Ð$n«ÐM ¯D~¯ck?$xò,
+Ö%椦çõóØgu¥NYèê±~²¨ã=Áº!ÛsH #ÍÄs²|»A6¢ âLŶKÂq\ÞP8af3û®-xO¦U$·ö£J4ñ°&^ûý#Ï'ïæwáCÂêe×ô-ßÞÇØÚ ì°U\dDñ÷WD3ñ8±<d°Uw[fÄ7{¶nØ9ΣÓ6·áÍksq@¯ æ×Þß-T^Xq-µÍãlu·ù¯w©£RÆÕÒùc²>Æ@ð1d"Pòc7³ìQèóª:GîÃó7V1<ÒÑébüþ= |ܾjí$L¤EôÅ»g·)ü4EY²ã¶¤¬ÀîMÏÑ&ÇjÒlðê]QEyW"Lk_iϵOÃãæ'h»ò´Ì}#+lÚ;O¨nM9=ç)»~^Ü·Sî1dGq4¬ütÙMùFÉiûÕIp ëyÙýR`JÎ=÷"ÅÙu,î°ÿ¿Ä©GÒ£èNñQéÇQÉ Û¬½1
+Ù %+æL?vò^O?º¥]ö½X5©c´Ì@nMäGQµL}«b<I,Ö}ÖÝÓövÉaã+!ãÓhIz1x¯%8¨vzt©ÃduÙ±@0¹j$J\Õ@£õ®Lq&q¬µ2ÌÓ§ é´ßê¤ey2
E8âQþk²Ý·XsDiCÇú^Ê¡ÿð²ïNZ4¸øÝp ¶/éAöª¨ßIð-
+Þ_ñ\å½nf(|rüM,67tR·ýÚ¢#' V`3pø©"K¨æÚf(ÉÝÈþé³Ñë×ùÏ¿îÿª«UPÝ_júg*]¤]Ga¬+»?oZ´#!§Z6n¼µ4¡»Åº£÷áÊ~|RH1ß'±Ôè`?h KO±ÔΤ\3§-T[±Íj]\}EK7ß&}HÍhçêÐÁõqÉ&}@;ùS×T1ÊHQy¿Z÷ë»<*ÇBZ;R}ÄZ@òÑÇvÕø¶R3èÙÕ`ÖøyHÊ7_¿Ö3ÊwF ¢Gö<5®ßF®Ý[©=ÃMÚ¼èrج !*ïHð®gãCßç7Ô+SÒÈ
+XbcÓÑ3ë§:0ªòÙJÊ4¹%{\Òxدʵ÷V|+Ñí¹ëá#ÏÖz(_w¾J¦~"áJ*Ü,WÿööXnÅP¥£3ë^Õ"ÐÐ íZ°â89ÊÇîµ@UõFǦZÀÁLÒkç ñ¿á9ÅÂhfQË}+«×ÒØfÜ%áÚò ?½½¢zLG«·h=Eæµ38qêGñó.Þ ýGMsë´<uUOoûîU߯É8K0ÉvûÙî_ÑÊ6IË(4o§èº
I Ë
²Õ5çmÎöÑNæÔÞßñÌ[ ×Êÿ(ÝV²71Ñ!Íî±>¹Rì`g|UuQ{ºù9<s¯5K8äάY8c«>Nf!öó§IÎä\5cjÔ4ÌÞ|#Âk|¹Zo!\êáÔ¶p#2mù±zµ]ûÄ(^3kk6 at a¡ëmX¾Ää}UX¦¼ E}©þ>ÙÁ§×ÓgÕ 1VM9CêºjÙs[ê4×Û¯?O-þÊêÆV³"cÊphCÀ³ChÅ C3-kþHÝIµÆ UÂÒHгÉÊwÄtüâ¥ëHCÑGók7³Ã`7^]¨Ú±56ãµkÜm\^£y{©/T·O]:6ѪÐw2ÍðF¾ÅÉ!fÉ#Õ:¡FMôáwUTÄÔ;ôßÛ
ßÊA!×Äu}µzôoȼ±?ÜcpZ[©e ÄÓRÇÌnño½ÿìXÑÐݳ¾GÖð,ç5ËZ<2Õ¢¬%0ûϲÉ[6ÁÖ1<!Tæl¨e¬ò̺ûþzãÀà f a¨N<,¨zfÌclgâIf'82<£¥m!ÎÜ¿íÆÄ¥£Å·ú8L'á?îs `ÇëOnó±Õá3èáµò/;-¿?¸}¼.×EKaA¦¼¸ÉÒ;¥@°B"Õ§ð
E×%ÚKêO¯Q|Þ&m]ÝL7½_ãî98æ4߯9³iæ
kx&ÓÅR!Ì(ìyè
ÕÖþÀFÒkOõ2ïÌÏû
A$)þÔT"H¶eÏà`éÀöÙ{Å|>jÀ"ªvªY§kK<~ó¹èÏwÊ©Oئ¤íªJè[ßC²§îRÝ'â1$ºn~å·QùìùÑ?Ë)ñôªÂê5úéÉ<£ÆþÑW5¯HxÃIï?_flØ=>Å\Aò=××ÊRü^wÊh¢Cð¥Ô«ÍïaÂrÓ /ãÕäÜZÄS½L³°£öÈ(ñá¢0cú^ïLäÌÓmÙT!Þ´GO9t4yÊ,¤YÂd8{áßG¤yÚ!LÈáç÷FÐ t0ùû¶ýD¿"zQ{/H;û0ÁæÐ0bÃóè% E~J©\e²ÈÈ5/è?>Ú¢I $YNîaìÝ|ºãù)9E^@-7~Íl=
Çïí8<£gbw°D
+-LA·»gn2]Ô=TMÕ¡cgË?áu6y_mýçWc¨éRà÷Xçª;ö¸rYîS¹ú(÷º/C÷[ÚyÅîw©5©Dfes»æ»À$4Ñ;x¸ß,Ç¥» èu0¯Å«êGiaªÎ¨z£¸eå\J\ARïá[æÙ?×-F¯9,Ãrg«ÜÌ+R^¬0Hë¥êE»+Q|õïÚXÎï7`Y»èä_Ø.4aíøÑøGW|Ð!å6"Ñhî@a%¹.øñ|Kç8}#|YjêG:|´uÇYy2ïã#)úÒÛmdMâq}¬&Æ>n-ܪeñ[÷SýQèÛ^ÛÍéz«*:,
O?7n¹iÂoȸje8ïgu$W#xª36ðòR4®YóÖ]u^{óeæ±Ezwî3èrb±,²8Y"C)+5¤Ù?9ÐzÐI[$¤@¹èäóª{¡
«OgãFÔrxAX@³×wû-r%»Ìì&ßÅô×X&ì;åíY!C5÷Õá2ÑçáÏáüäoÚ%r¾ë79¨5ý¯fì®ò 'æNòùL@µ£$%>¤,]f5Ýj^ZãGîѯتÍé}%²0q_f¡%[F$¹i«äÑgÞÐuϦTÜú½BW2_ä_¹.^U?¾Úk4ßtì«+W'±Å}TûìçóJ|¡_¬ìÃÊpßl
U8a×ðe¨'õN(µ~Ì]góe¯RJk¸®Éá+@²Òí¹øw%ã£_ÈwH¹¥@ÑA¤F|ÊçW7%,níçQ¨î¾3,e×õu66ïÁùi!ã?}ê)$¯z5î/ª¯aè°³ÇÕÅs.Cý§Uô¿ÖjâV'2Ü& hâ´O÷Ä mÇé®+zÛÍl$ô´z»Ýy(Y[Ö)²½E'ÝÝåþõ´ueàÃÛOw¸ C¡LÊS/PNnà'+½M ªÁÒæ%îOÛ_ôz»ctQÁòMGë&ÃnEj¹ÎÿyZÂV \«òfkÙýÛäqÝÚÄüLÚ×
+ðL|ä§Nî|H$o*Q'x¦ùø8ï2¯GÌóJ¡1%¾cRÌrÅtÌ®.öv\#=w4O§GIÉi¿Í1·Þ¥m½%Ø`±Ñ$ép.¦)p]2ÈCþÞ¥¼ùR>KEð`
¨:æçÐPRßîO¢9[ÇGÉê'Ðù¥kÆ\
S)¥Ïåñav+Ô¡ßÇYÅß°íÎnvvýêªjºl¿¤û(¨/g{ºk[lQ¨gæ2ÀL{3@ ´KjÑ:HTc qèøì5¹7ºÌËE/¥â¥/
j^=¤ïäËÏöBb¥á¿ûSÞ×ïÎÚ -ÚÍ#¹Ä%Ò/mƸ*|pÃ
²D°I-;âŬ¾ôò ËQIÒeã<ű¨&³Õ²Ê5U»·¡x·ø±§37S@]ÇJõ`%@ñä,@
°,æg;FU¤kÙï}d
üet·7ßÄå|Ï+8
+Ïߪ¥T=C -ÿ»9þI¤)ºEbêôsEôºFªsoV;$cm¥.e2Ìì5ÁÈäѵMOj§ ¹~î°7Áдît¥/o5«ý!¹Æ}WbB¡ã'J|¹}dùß|ã%tA%½`R»ç©$/h;H¬¨~6×åÓÛCsúÑ;b·?Ân(:Ôb³u?OÅmðì5(
²nN)©¨µÂ<ÓÕ[ý÷-«hTßv»pßùF#;÷»?¯_Ùw3¬
Òå÷·©ñz|M±4å`þ
+N|õ\Ïq³d0=¤ön$¹ð½`ìFg¤.(ûka2/CЫâË6q]éó'Iï=l#õú¥¾÷Á§}ëØ:HB~é8Æð3I×ë¬'Ø·B ãÝ[¬ÛbMðÎ~us]B5mµ¨¸ó÷ÔÑ]
_·¡YiDA7³âòxé?ñl6¯_èFÙBT÷ôz>
Ð6f=H$ãcÌK·¤ä:êº.¼iÄå
+®mà=ÐíÒ¶ßèù)Óåå
xêA]åÇIç:Ó§ ´
2QvïDW©>sÊmãVùËØÞ×FªTs3|1g8
+«`§Dõ*~²¬uµ[ÔB=Û¬ûZßÝý Ë+ôx;ö-ûÜùÑçÁTyö
|Iïâ#¾8OðÕ¬¾-é¹m"JÒ©¢(;ç>W
߬ðRU2øCî7ÉINL/Ä#uôn¦©ïõÛíbh»Ä©bù[rÔ~Úêm,ÚµæåÐÇè¼ê<ig,æùvwûèâ0_.¢Ar¶b;Aݤº6p6Í®1ðþ¹[Ý
ôɼO*7Üëd±Rj1;ýºc Þèóè«J¥¬wÒöõX[|¿vldÒËú¨Öß^Ö¢bÆÁUà®Eòú
Ö¼¤Ò>üP!w ZE¼ VoóäèLù§BDØtÎïÒ%gîÛw<2tõX̶ÔO®ÍÞQ³«P<
+m¯ë¯o<Kb¸Ù|g6Ì.r$ó/yÌSr÷â1qíJ6v£ÖÂX@¦ÔøRôµÒ¢æy¡Ú,´nÒ07ôçVÚõ±1/$lÅø©Ë$é$ûyÎY@«¬èÿKEÚÚú£a><ÍÑ3D×XÇ(reÄ©)ä<SÕÀmÖ6~Ç×ülTX<9§EvÔ&u8÷.¡vñÑ
¢Ò3¥AíÌýÊèÆ¥¨96·ÝtÂíp¤*§_4+W1ánmÜ[|B~¾8}À·SQ]ÑQ®jm| '`Ý*ÿUnÌq·Í+*Uz7Ä4Ûþëû.ìؼÿîHegB?»ºb°¦+0KÆ'-åýB¥w$6#mº_=\Y=¦±CµåDt:~ôôÄwÎLÃHÊù áÞ1®TuÙZRúxU`I-K³gÁ;ÎÈvãiú½«o KèĬÓíQ»Gñ,öfÌûtÆQf*Vë3/jû~î1yºY0mÿê¸7çÌ3-64ªuéG1|¶¬qÕÜS©É-£ü5Ùée6
1ÉóÉ|ÝýñÏTÒ/ù¯ï¯~}ƽ¿~ä°ÃÊ¥n8$Ûû»K¦V6³°lffNÆq$ÕAÊ(&
YÜð/gúK&R]qª1ÜaPÚ%/@©5éÁ x¹¸í?yN1¿vØ=CáTìͱ<¨(µ§Sb T[2ÌL«OceÉÇáÔ7U¬ÆòÁ¬Ö[S¦å£jpn<¤¡^î{ÎNÛd5¸~|RYOR÷Î[V-Ý B×pöå±2P¶CòÏCZÃ2aù®:v[¤±íT¢¿l¡»b>MzþÛsd'¾Zg7
'5»MYÜÈÃ×SÊy+¼Ào]ììMwØ/
+ÑÝ2ËéYCrË< £%¦Ã±ü$
Î)%ònÉù?4cÎÍñËêÁvÛt£ê8¶Z³ÛÈv¡[æÒÒJ. '8îmëô;uù
ð§Â·¬~·
¾¹öo8Þ§mÒæHÕ*ã;¥úª¡ooÂKÑÇ#ú\
Î ò¦MÙÝM}|åqÎÊ:Kk«ã
²¬;Üø£JË*MoLjq>-³â`BNýTòBuÄ/NÐW=*IÅ/ýzzp×dÐvÈæúÄðx£¦QKíe²ôuÀ¦©èG^Ù´NsKjieZGUÊ&§ès²oúÜ|ò*=¡"!Ïd«ÐwHø(&ZÆôÕ-õÍ'l*ràèµaÜç¥Ä\Î i\,±½$2 at 4õ)Y-
ÆpϾçÃc<ÏÚè´Mê˳!$â,ûtÞ{+ï(T
+5~æ?gày°¾ëKFÔ=½¸K£8à
egÇ#Ñú¼ÉH¨A6ìvò6yðÕDèUªÀ@:ÜDÏèãUÖ·ÊjcÕíR9öëçgX%Èë)¯Ûop±·öx¡iÑì/vK7j:ÖØÂèmé2äB¡y$Ô/++
Òw¢-P *rµX£hv8àÁÀ"6깺ºÍ&?æÏA´Â» ¡El?ùóû¤¡ØNÎa«ì<Q¥ÜPluÚc×Á½þ<Vx^IjçæÄã=m 1©jþzÇygÒ;zòO>\^ô_qWå(ý¼7ìÎpY*¾í#+Ir©õ,õfÚ2fr}õ&Øß®"ì*«õR)´1Yþ!£kÆSyÕ-;rÝ©N?wÉ@K;äèf¥ÂýëËùä[kGé«ÜöõîÚG½·ÑO¬q°ºê@82ÿ÷uÁ#²égÑk*âÙvef&»ÕØû%×·Í_ß{iʹ%Çد®v»&HÈ¿pô
F¿,Hú>SÔÎzзR¾]°`ÒtÕx
+÷BÞ¯^¸FùkÖ:«©qì=9(5oé¾³®^NkãVùnrÚ~ë6C´6;mIfVØÁ,\2öÅg´>6+åôùä¹t÷Wf>ëµN[Þä>j¤1i>»Hú9
Ñó>íQo¢\MPÐ$µ$åð°YZNYäXR¬º)NÞ&àõäáM³nü\7X)¬Ð4fqOÃKsY nm¡;3bR|GªÌO-Oj%ËÂ2p¶ÕÈßxXÓÏÀa(i¿¼¹bc¡y8öWy²Í'éópÐ0¹Ò2»<XTbem²Þ>®¶æÖvbØI¬³ gd µ=à-×lüó&l¨+ÞÃWf,M
?¹á¹Vy;ìö¸+¤6Ö
Lj¶,[êáÊ~íuEmcÌ]^ôÌÏ¢û'lðÊÐÞÏq½#ç±r{yJÉäðnL pUwÕÖtúUö7#Ðc°×
ýp °IÜ,P4äÍÉ~Ün/½Xâ页3h ®3éÛ
+Q$zn¢:éÅᶴ&¨àüxão}ma%õ+ã?6Ù5Ãe;Å\è.óÕÝpÇéyþÇEÙû5¸~DNHWóÿóÅP¹=-ÇM4|)yô(g:°±ñWjøú^
+^S·©yÝ»¾Y¦< <MmO
+ó\rãÌ©í«5÷Ë¡¦y\AçqdØ·7\w̺¢¾å¬P(~¬}ðµÁǤÝÝH#²ÒõÎoK^¡&Ñb²øvîcÇxµ{eÕª4öònu%æO¶6 32Û¥Ü@VD¿w}¾ÂÉËN"¥È2µj¿pÇ]Ú¬·wyíM¥ÊÞ]\ò WAá¨Àµµ,0¡?sú×cENÖ:£Ô2½÷¨òèû
&©²$¥*ÜâÑY´÷Ù%4áWýxB1;â4iý²yôâý>ÁÍÔû¬èPÒ×t¿yg0'Ðâþ?üaÿÿ'¬@0w³%ÌûgÏgþendstream
endobj
-153 0 obj <<
+159 0 obj <<
/Type /Font
/Subtype /Type1
-/Encoding 374 0 R
+/Encoding 389 0 R
/FirstChar 45
/LastChar 121
-/Widths 375 0 R
-/BaseFont /CWAALI+CMBX12
-/FontDescriptor 151 0 R
+/Widths 390 0 R
+/BaseFont /GWWOKE+CMBX12
+/FontDescriptor 157 0 R
>> endobj
-151 0 obj <<
+157 0 obj <<
/Ascent 694
/CapHeight 686
/Descent -194
-/FontName /CWAALI+CMBX12
+/FontName /GWWOKE+CMBX12
/ItalicAngle 0
/StemV 109
/XHeight 444
/FontBBox [-53 -251 1139 750]
/Flags 4
/CharSet (/hyphen/period/colon/question/A/B/C/E/F/G/H/I/M/N/O/P/R/S/T/U/W/a/b/c/d/e/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/x/y)
-/FontFile 152 0 R
+/FontFile 158 0 R
>> endobj
-375 0 obj
+390 0 obj
[375 312 0 0 0 0 0 0 0 0 0 0 0 312 0 0 0 0 531 0 850 800 812 0 738 707 884 880 419 0 0 0 1067 880 845 769 0 839 625 782 865 0 1162 0 0 0 0 0 0 0 0 0 547 625 500 625 513 0 562 625 312 0 594 312 937 625 562 625 0 459 444 437 625 594 812 594 594 ]
endobj
-374 0 obj <<
+389 0 obj <<
/Type /Encoding
/Differences [ 0 /.notdef 45/hyphen/period 47/.notdef 58/colon 59/.notdef 63/question 64/.notdef 65/A/B/C 68/.notdef 69/E/F/G/H/I 74/.notdef 77/M/N/O/P 81/.notdef 82/R/S/T/U 86/.notdef 87/W 88/.notdef 97/a/b/c/d/e 102/.notdef 103/g/h/i 106/.notdef 107/k/l/m/n/o/p 113/.notdef 114/r/s/t/u/v/w/x/y 122/.notdef]
>> endobj
-102 0 obj <<
+106 0 obj <<
/Length1 1888
/Length2 13934
/Length3 532
@@ -2062,164 +2131,181 @@
>>
stream
xÚíµeTݲ¶àîhÜÝÝ{pwwwîîÜÝ»»; ðñ®µ÷Jöþ~óëÓÝ£G_U5«îYs>Õ¤òJ´F6@1kGZF:F.°¬"#ATبïhfc-¢ïä0rr2Ä?>>\¬,\¬L0¤ a[7{3SG
0å?Aì A+ ½¡¾5 at VßÑhõÃPß dchtt£ZZÿYá P: íFt0 #3CGÐÄÌþIÖÆ6 ölÿÛå´wø øLJÀH#kK7Ðþ«ÍG5àÿ7dýïäbN_õþIÿO£þ/·¾¥ÛØXÙ:9í²6F@{ëÿªü·6Y ÕÿöJ:ê[
-ZXÿ69¹äÍ
MÆúÀÙÖFÿ[ÄGçþ%^THIXUúßgú/¼¾µ£²í²þü/füÃݱ7sh1|´ñ#ðãýß¿´ÿW-QkC#3k +@ßÞ^ß
æãö|+À`fmt ]?ÓÓYÛ8~,|ôÄ`lcóÏ~9½ñ¿lÿF¦4ûÌhùYþ þãfþ`;'G å¿ú?ÎÿòüO3ÞVßhm 4þËÊø_ÖÿüQÜÖÒÉáᣡþ+ÞÔÍÖhýÇÄö±ê£¬Ñ;ÞÁRßÁô
@ï´·ùcøÐkc
ü³~utùãgýèhjü+âNÙ8Ùÿ1üÓ+3ç¿">ä:|âøC¬Ðù/'Fü{fýjmö·öliógó?:ü3þ?rþ¡¼Bè#§ðúH(ò>ö-úbÿصØúسøúدÄú!ù>v*õ>ªËü¡ê²è£ú×?ôQ]î?ÄñQ]þ}ÔSüCõþÐG=å?ô±w?ôQOí}TÐø}ÏÿÜ×ÿq?&ý[Åù!Òà}¤0üó0|¨4ú?üÿ¹ál¿ðC·é_ø!ü¯gá£oæá&¿ðCÔ_O"Ã*«?ø1]èÿÂU6á*Û¿ðô~¨²ÿÿ¹¦á*Ç¿ðCÓ_ø¡Êù/üPåò×0ùPåú~¨rû?T¹ÿÿïé)$dãêAËôñØ}|1üÓuN '§×ÿ4t²ÿÿúsúÂÿÍÆf#tÂ,/Ør'7zæO}¦2iùZ×=Û°jY4*mGµQ«þ\pðùÀå7®Cx»§ÂØ¥]LÊüÛ³ÞA{®úM¬Û¾-ѯSĶƹ»3VP¹±ÒÌ«ÁÓ\y
-åCÈ5B-çúô@6vu±4K Z2fBE¤»ÒPu¤8ðõÞæ!PÍÔ«×6íN(ÏùP9ñoß~¡G#¶0+îP¡)ò !Ö¼÷W ¤LìW G%²P«2ÝqDu§¯0'ECe/iZÚÕ _IÙ´7öt©uM¤
-®âòm*¾?A¹¿ 9óÚ¥ã}H¶|/=ãs¿«~£ÔüLßbN©9>
æÎp¡#è
CdËðîá$¦-èUä c¶ôl.DùÛ[Î ±Gþ83«_Fº_Ó?Jàz[(Ê®jë¦ül¤"²ìïYåO]¤(ëÈ6àÅ?ó¼ýöü\'Yq%Ñùs³`¨á<ôUíx*!J¾"`B8;´ÕS¥T´óUz¸s¿Ès¿X)kÕ¶÷gé`$Ag&¨XÎ]A\ª¥4®qUÂòúSسEq9®C²UEõà
-ÙÐsÒH/~·Ë-IK8/|ªÝm9!W-RÎòA+MSØöý®!Ð$6µÀò^ó49©Ê{!rpR?beÚ5¯Þ%Ê·d\·xv
'IFÇGà`"5Ú½4VCÔÐ<Ð`$ (wú¼°BkcAEá¶ÚÑ/N@ö"'Cos_.-÷jé¬ÀTÉjÞaÌr¬¿1t[;ØRî·ª3´
ô1ÏÜÊ7sÖþ0Ný5y"#u&"ÐeUºñÊdÀôÍÐÈÐ?âÆìlØ/ò¥kã¾~5dr'õÐ(S½Ó$î±Æô«I¢¨4ÕãÛíÒ 7}Dê¢C«HÝOô"Tqüü¡Ü W^¾z©É}Sº¹ñί¡`ûà,3¿ýGNçbèö`1û*+Æ<'A3!\ʬ¶Hab¢Ì\:"¿C¾vÜM©|õòuý~êÙùY4Î[Ú#öNùwlÏ¢lf¾ ûûLNR{óîIÂÌ:MKµ#Q1»°Òç9ÚãÁF´8WM¤iO§çï°hÒxé3´no'oÃŽsæ9pH¦¸¥ÉðÐ×'r¹ªI;ÁR¢yR+gxÙÓγ)"¹O)}X%olSó°
-H¹ÁZ øßéÍù;(M3öȹ¦¶&Vz»ÌD8¥$g9ÞâðP2[WcÛjÞU»²)#¿±k;~õc
ÓêGTð9Íù~Hu x ¨8:z$iÓ/Èá(÷óovÕÇu r:tk³.ÝxÖų#¶6øêÒ4"{QòU"æ ßÛLAºðäkÿÂå¥0â!%$½uO\ØϨZÎ^
÷þ!**&ûð®=GÌéæ¾_)f¨Ø
Êi}5È&YûjMF¡@óf]|Ì#ñã³<'#ãä¯Ë øüÍ8³qëÑÒÀ,§p"ê×?ÿfDRb_éÙ¨6¼¬ÆÒÓ"WP´;23þ51¦5Ç_dºé^´eXÉøÕçØ,«Wb©ë^¬¬]/óÞg;Sé+S¢¾K?»6n6,ás`ëíZ[!Ûï n:³\íÏÜ Ä)7_ÖÎ}õVS.Pù
A[¿8\dÃ[®Î*®üB©Ø:ßúÍW¿¯÷È-αðgeàpF¼ûÅÏ!&_ôFLgÓÜP»mÇ)VÕpëίí0r¤ÙaÆ$|ê!4,Ì3ê~I鬤°¢zÉ:ÿF<-äL¹÷¾$Ú].%ìZ]°\ªò
-çv{.]¡4|7ÍRÈn£v´Úú`åìJ(,9ÐÒÔõø_À±&
-]¾)ø©0zÁY×û¡7E âG3×Ý=·<º*ÇyL£9ÔÞ¢7RZ«aOö6çÀò¼"¯-^ã¶G×Å5;Ö:[Tíl¦~´³¾£×±ý~³¹vé)m-¢
Võ| öï"«v¹éÌÑa)}`½^Z
øÚé JBßôìÝ:Ø ^ .><Ò¯yÓ´ó<´?;¸IßS+>Pm:;mc¦FV"«Ò-å¤In¸]å2m@à]·¦@S¼`H,Ä@Öצ©{A7ßj
ÜqÁ ·!}å¬ÐÐ@pª²d5Ù±×¾c7ïI2Ã.
!Sã½ÿî`_V§ÿÓ00U"|çË4ö(õý×U2Ö/pýà _(O=&;¤ìpõ¶uâWÇzzÒï{ÊÃÈÙJºñ/Qâ5¬
Ö¼1ÖCð¦GÊ@ñDN,Õ3"ÙÝè~DjP!eÓt)*Ósïù¹Q,ÎE\7 Ú·ÏõEÅoç3ßÒ}aJø¶+ÂÏC(A²'$óe6cAó(©»ÕP9¤wKz%íCÖl7ÍØÛ0ì§É ^S²Ù¯K§,U5Uú.W'³¾$T®-«çËW¦ÃÉ&(çtcíÛ
-êwÌ.Y-§?²í3³"Z§eeßK4);}>Áɺë°4Ksh
U:.<JÞ3é×E¢£dÖ`h_9ÿuNY'è`HÙÔì¨J#`îË´%éܪÓé=÷«ê´äPdbFEvs<o)7;Î%¿ûr_ãuxT°
«¨0ÔÌlLÛM*Åâ¤ÿ&Ùª>ú¿bç¥&Ø`tª²GØMIeÚ=É£OáSöùÞk_(JHÂO \£U\ò÷,þªþlËM+}ÆhxÅìîÓâeã*÷q¯hçxè>P8|ÇÇi
7¬úúlQ¨ M×"ñ!ìaÚ,-º´
-T«ìB§º½@\s¹.Ú¤ä¾(!SÛVtX¬UõÚM¼*ÔebÈï§ôM¹Æ9ì´ß6ZýÚo)ì=kàÙ^ Äïåþ §V½ô4W×Êihb¤:Çà)ô³-Zné`_ÍXMÀË®,E÷±'GV'Ò3bÙ~Çf¾=)§2
ÐjQ#;.³õ9"¡Ñ«LKéBE@7¾~3ÌG§Ð$íÐp¿F¶Ö¨®6)!H3¡6µÀGL/?Ç
-Ì&ÿ&«Û¢LÚͪ
-9Tfm°ÍµúöêÈÀËôû²T H<ÞÖfy¼~h2ïK©hÉ
Ãc)zrAX¼Ò±ÞË8»o*Að©>|6
-P9ùv&¨ân»×79ÁÐÐ0î]+Üß!Ö·|¬Té"jú"þ£Ú+á§MÔÎÐÖÙã¨Ç3®¸ Ó÷ö Y{¡5ÕÄ0È£ QN*'½¥Äðí{áÐÅ«Rå,¸m~Tºæmdç÷# ÙÒ'lªØª®"Uô£¡W½ô!Z¬-+owÃH!Xª(Vü'åÝ=ì¡õÄÍ/ÁUiÄÉ"2¯ÎÅ`³±¯~"E&qBeê·}÷DJ±wð&1º¥ªZð é¡N-õ7
-ÐáüÓß.½Ñ¨Wo,uòí5sç0Ú³¹<Bï{Uã(Úµ±¾s
-Ö2oº
-rÐÇI¶,)\»;MÍ«¿âJí±
ñ,
i³ìýßu[óî5æ,>{p@Ä7Â(à5vQ¤j1ä´J¤
-y*cä»ÙyØ{rÞKËÁ¢¯SÍ<qz5aLãuÝváEÐdaÅÀD¼\¾{j³WI»ZÍR.SKÈZ´¯$̲ù!˳EÝ\[û2 Ò\õ
c×ËO±v8ëý ¢sd(\ÔùIHµmxa+WßÄÚt>£4}ÛÌìSÈtÚT/õ\ ÙôÔÆ0GÍ»fC%áZ`%xÈ
-O=/%:'XeCı®Æ`à^æ
üË8¿)t¬< .JRÌO£4y:广
]´Y¯ßµd¹e«~¼TVO¢jldåw »¾ü}O¯ã3غKn¡ºwÚ¾Ë~dAqti`¢IùêrEz¿ÓÉ×o¤>BU&ú" !Öî\02´ü0ÙëÎØ÷ø,ª6Çn#Ø#c îKf½ù5emì:ѤyHÊ`nçø4á<ø¥çÑ*Õ8æ6Ú]¾g÷R£T8¦½¨ï¶aÓj¾cت®ÒQuµuoõéÚ ~=óÚn·u¦°áÇ^(
-²Á]7Íî®+6
-æ b¶ÖaA.)'ä¨âÕA;xÝÖÉô"B¶ch ÂTØ:Û4»ºÉwîñÒ½×æàöÍ*ªÈBO6ÚL](²;ô§V_cÀwì/ÐëÔ÷da,ÿ¢ûlYhÿúΣÛp(Xuss)Pô®sCÐ<©fr.O¢Å®v«µÂZMuKUÀH)& nmn}ðòÐôßjrÝØX"Ah-s"OU¤Að©ÍáÙütåÊxþóU>)?åj½º/Gÿ7awkT°Dp¾SeîOÕ®ÌN#8½ä{ãóݲtëRblÞ«.Îéº{D)LGê_ñÕýêH8²¦¥8]D÷µ(©m÷_ô=2a¾LÑÔä±SBíÓ¹Rªì]ù[Ò\Vw9Ù UÎxLo6h:7°³¦DQäÅÍqÈ)° ñÛ§ÜÑMõ´
X¬»sÞ\oR%,Y¸Òùx<5øêÙÅIÓø| ¾KEL¯´#º)B·¸D5 ,±
ñ*£K¤ã¶xÔpÝÿ|ÁKv"ª|¯ú
¹àÖÒEíôybØÛÍÚ½?IH|ü
-â4¢1®¸gFe´Ý9ù÷âV§¼Ô´O5«Å0;öñ'ÙØÂI9 Bt>¤HN;¬ÊÖ®9/ýÀ-üÁÊÛZVá ºÔIÅ)DGHÒAzC_Ií1ÿ÷
»*â ß2@/3CÜÄå
-2ª»Cñ S<µ72nQ!Ó¤pÙÎë
-âß.pf|mÉÊ"U̽ó²Æ
?üEòèùÏÂ\«XÐaÐÄCñòFÒ!93ß©6Ÿ;SsÅAÇÉq¬qÍý8wºHNeK8èTº0QEZΨÅUdÈøÍ{3ÝâV&#õíN
f^º²b³(VçļAÞe8.
}ÙÃÒî"ÞjÙÖ-MR3zÓ$õjeKav!ºê:ú \þSä 8c¥j9ø·d¾Ò°âlÍ'iæ \ë'
×þ°mÌÂgôIXSÌæd²Éyüû6´óCIrå}Ñ5#DÐh Ãá/KºÒ?]7\ÔHuÞDÀ(lȽ3Ïñg΢åýü²CþÒ
-9ò¶ÑÿÓmÜQä®í,,&Óó)äý,u3Þ]c
-VUO.ÁÓÆ{Åî÷h¶]µJZùÒJ2»;+é}Ô}S1iW¶@W:á'SÚûPUt7bK-lhB0PÔúÓí¿Ù=¡}¤ïàÖÒ¯ÇÅÝ )ºe"f Ò¥ô@ÖçU.°c¹â/)ílòº,»·`¼ý£@c% JN1{ΧÐþS°$²B²¿ua·
-tlW ú3S3T*Vb3b}C"6ÜÄÈTKwÑÁ}ç#gÄêßë¥ÔðÛæÍEZn;H¤½ºÕ#W³
-ÍO3ÉçÙ2¼öÇ´G®v׫´ýuÕ êk©6¯}¼SÓòò´jâ#^Î>[ºd_ú ÛÊÔt£.ôô+lân*.³ÍÕô«LYmrYÄ&I*à
aôTd§¨^¥ôaÎ{ØòRª+ÓÌBUñ#[õ9¿á!]þ«I¢mi
-²À?\Qkò0?_T?j±/±í`@"D}óOò?àÿ<Î9y_EzÚK[e@.âõîÉ=;f,pa¯»i¢§ÅÚ¯ÿLdäzÏtpAúËqyiE^N'0w¡x¯î(Þéªl¬'^Ô ÎÝ)Q·pÂ|ÉQPJ<ÆàR,¦*×R<@j1Î)~Ü7OØKÌWÁÆ2ÜÔMìKí $Ì7O¤sOr\û;pæò¼¹â¼£;
XÔÊf ÇþwÕkëðô(ùû| vÍ8¡W4{*
XP`uî~ÄÎ=ðtX/Á(WT;%áÜ£Ìk
ö¦V¤wBAr×åÛ¡`,ä¶ÖZT"Õr¼|â'¨ûÝz.í®XÃ0¬¸ÞLI½ÀØS¨Å}º üµdhºÉã+wëåÛ£¬4¾8Y>?íåãë}OļkÀIáÝø$äéÄpÁÊ®¿A#Nøª+\Ðsй´zßZF·lAÈÁl¹:ÚôBðs
-{Émo×ê¤Ðì>?;´
-»5ð"ÄQvGâ93Ù¦o>Ñ"
·|EMJ@¼¸þSúönW-ÜdÓÈöHSeÎkÜ:@GÃ<0+p»ì)£62ÑÖ÷-AÎél÷ûYõL¬gO¤däEzj('Ò|XûÎæÕ 0ë,
Ñ+ ÕÅâ>w«ías®ìë=±Æºá;ì5gªÒ£#éC²2£tNÉZÿ M3ÐЪJ©öKwª1
|ÙïskFÙ|'ÅJÛ>ªÏw9:Ù¦z%"¹óßô}aÖM ~|JyËY8©Gø&¹|g éì Ié=·#µ]¶sÁ/XyÑ£Â'´f¨PoD&ÒüEÈ
täµ`¡K]yZjmWsoì¥$ï¢:n=0q|ÜL)dÕ BïÁ¯øJÉ«X8&Sw±ý©7
èËP|»Qc,ëitX%ݶ£9mqÚÜóòîªBÿç$F<ûòøÝR UÝSX+
-¢Q¿>}3ÔÏ>~³Föjëjoÿf«0[ý,nj73@¨Y-yd÷;ø&î"©à³'÷Óé¡$dgdà¸è¼[p¨WÞAÚÔµ_%rDrk5.¥y«/eÆ*s
ñ^+fb~Ua<n:<Qù½Ô$±ÓÂLÀW
m!üWw¬§ôr9;h®qzßo'¸÷Öq`BApÔ4_¥\Cg3· "!ßç3å¸ó,1DÒGÖWýFØ1"±ÐÐ1xÑïØîh°tîß×@Ç:'_=ÙÀû|ªnæåµG½l]0D¦RUw$1N'¿æª$®ð'ëÑ×óä«åÀ:ùÕ#ÄG¦ÊOÓ ++:;{Söå5VÒ]
-¬~r
®ìÔ>û:°¿ÿíÙYnä-ç"Ø||L þoc+´
lÏ|É¢
ò\D2Q !î}©»ûºhÅóѱÎÃM¥¡©Å/_5ì-®tßÿ¾¼Åý¤ç^ScÐy5ÚänÚU«%¼wì»¥Ò @î\0- eøÒ羶#þ3|DZ«±ô*°¡\vǸû¬Vkæà},Qkìu ÆOlæ÷{¨±p|½Á2ûë[³®ãÙzÍz7¿iWât³¨Ç¦ç¥[¾Þ´<ßJe}Æí,1lËwÐNÙ%<`iø¤@©ÁÞAVÿ@Fp
G¸6»ÍmÕÑ_²PklÓÄ)ÛºÉp¹IöÞ]øpÛõ¬}×ñ¸lè²%G{BZUÉ
-põ·u d3ä
-ÁyCõc²tXÇó(®¼Ha { Æ.#&Xö]Àò.°ÌÊêηà¢($éw×'{>B_Ïoë/@<7rVóû¸4l
pKÏÚ»bIÝ]}Yª'S?ñæQvÙU'-»&~ívÇ,gE˪Ýcý~U6ÇåÇ EÓ>³9r2÷â-b~ö1ÒÈú®ÑI7éÑ}¯á:%%49Ñ
¸0IlTAÃbD «/w3&Y</k1*^¢$Pr
-iÍN_ÍùËÃ]&¶{ûü3xÚ>5øìª
-¦$[~ ÃÏßFÞÿ½¿XH£ù[ÏýA4¬]úÝQ1´wxëÕK_ðH,OH2Ðf¬}"ϨÙöòdÜûgÆ.ìB,3¦þesPùDkäg²¶dÇX½¤îzÛ¯ßÜN}$¸ xJ$ÜËÓr¼è#UJTqWf³Ç»>¹ÕÐéÖMÛ5J
\ò¿þfcá*ê ±ðÎ(ÖU-isÞ)0²4'Á!eavpáçØ;@Tòåôà
-ÒJÐ`ùmZeZ0¾¨êRµA]¤
Iúd4f55Òs;F÷^ld¯á:J÷"±ba;d=mT,ðLý5ôͶGN1¼¾Ú7o|&ÅFFP²É+2]ûû[èÊ))8m7aÉw¶ÍgÝVÑÙ#(óDæ;<1Âee1ÿ,ËtAnÚS°TqÁò#+ÛÄVÑÇüó[ç®ô_4¦w¶¨sgo3_æf´{³¾e/f=Ò©ì 1\TX»/w)495eJFåèc*·þðdM&Y
æ¦÷cT¸/35\`Î0Ê{¶!8´C£¬4óQÈR`>üNɲ^2I×Ü×8n ÕPÞ`®N;¦Ëóp¶nÛs;ü\¢»cQ2j>dù|\¬Ni¾ BÓ «J¼MG_÷çNÝ5c4*i26s.7arÆd
-þH\½®iQæsÅ'ÕÊù\eØQu/0ÃûÞtÐr.Éßèh7Ä+Vy{zm=Éßµ_IÐ¥Ößà°U ÉɾîoLö©l/T åD¯ûkP*»©°5¢¢d½S ÎWâZ~±î{³é8rP
sY{F´{û"XÀñ/ºãQd»´ùÔ ±C¥ÖûûarOõd+Aq at 1ùdù_Ç%·Í}sy¤s|×ri¨ËV/A1yMëI\)Ó*Âì!Ì]´7ÛRAS
cUÏéâ¨kvÞoÈ4$麰G ,ÆÁ]cº·ú²}Yf»An¢X~xk¸²©1ü¢¢(¬ý9Y¸¹GÎ%ÊÉØBD%ÁÕ¨má´-x
½¹ AÕi×h>Ã×í1]W×obvÚj#ÊõòGl'ö(ÕZEêí©fÎAýÝÄÙDÃrN®¯ú©&Rôé°ë+#꼤4!ɸ÷NÓ׬*çúìÎËÙÀ¾¤éb'$2,TþZB7aøvÂÌB*hÓj,C9õÃCÅ üü&a'µ_Vß*üUá')í¯h~deÌY¯=,7w Ð M©ï^e§Ëv¹z`ÁYÁ1RM¬i2ÉEMú²¹E¼fk9O{-y¶j>~ÎÃörj¦aÅl¨L:¾w6*=6YX,P½/ý½¥ ÜhiÜ9ª¤55·F¬òd²DéÄéh®hG1JL#lUkËצ?^_ó©BSË6N®Z®Þ¡ÃæçľNÂb²¶V /Fr`68ú
Ïé7OsjÔl3ñõ9Ûæ¾â"6´ý0#/Î$y
-;vÙäTECXd)â1×£¤èvÑògýǽȵyp\ó¶}w@©'R^vséïjS¿úÎ|<çÇÃ<põb.6Ö{6PÂ
÷à "zfí3lòR9{Ùë²µ[}¬9o®3¡¼ÕµìÜ<ÐXz@0ƼºN/$L>hCÍÒôEC::'b³·½°SÒ£°&¨Üdjtü<8ÇÕ6öæF)º(|êSUwqÀm7)»%]#ã¥-ÄpÀ((W:aÙªöZ¡ü"ªè~M¶^Nf"êoÌá_¨ö$äºÑ[9Ãi´2[gø£F%ÞéjÛ¦1V<2ÇУ6þ¥ë^7Å..K`wÂÅÛ×XtíÜ ú×|
-{àâE\ ¿é)¿öá%PrµùbigýÛ!yÿÃ7¸r÷ÞkkÚÂBMγ1y\yøVlåm#Ü®'jþ4
Ýxt}úIÙ'Í|º_Úh/Â,ôã㫼=6ßÆZù8Õ~gñ¨¢¶³¢ohâûUh?_¦Ú
Xì='Ç=/ç¡FßóÂR& oÈØGéâK±V¤X~öY(ø¤·QÛÄ}³×.Ø~ËürpKù
hgi:3+Â'òÅÌGïPòVP´ÆêÎ×ÍÄSpe²½Ð¦Í×ÏýÑCa?ÜóTéµÞ*
-`µÙG±êÈÝ'¼o·í]
÷P XMBî2`ýú,5før×mr§ÞìíÉë®Ü/
-æÝ 1ÚÑZ7ðØAhø6rWy¤ÊGpôkº7ª®xLÎÓï~£X¶¾ßòÒÀ¿¦Sò7£a»I&!ò$¸3¡i2WrËÆU;Qy£±çPóô-Zî=q¼êl=¾Àgä{¸X"¥=/t&øÙh/^»ð1ðÞÐOê.ccuJ¸Î8ä³9Ö:²Û}[P$¨fjPdAGÛ)´¿´É ò]¼³wÂÞÄMn:
!72J²¦µtTÿ+cE6´¬ñovÍ£§24';?µKîí8héV[ÿÏ
-êû Ü]ÅmLDEY7ÙTÈì@1x<è½dáø4O1ª`¥$¾¶Ú9ë3<]3AL!JÁúø1ª©Xa.PྤeTÒ6ñîß >Ý>ÄGVJN*0'ûbîÓEÙ 8âyn)XY[pÎIÜ Êã7wSL¹móÈÂÚÄ}I¼k©KÅ<禧ða_~H×,mÛIeϧ2ú¼ÓlÏ:Tu»VþÕ¯y%´°Ôãpmû>ÞÂåä¯qõÀ£0{Q²Î3ç*8zÅdATµÜßV·& ÙùxÉ9ÊJÎ4Õp
,7ìÜOpæÙ3\®?{ñû¤)¬Kå%ÇÆö¥ò~¨³$ÈA¿ùÌÂ¥"ÿËbø8Ù'g®Ù2V1fNöÒaÐGH$N¹¯£Nuõ[7$#Sux#§ô%ÁÍcÅf»Ïlº^Ïì¯ø¸õà7~°Òª/ôÕ&!}WúÝõ
-CåñævâL|¾Ë÷Ó[Ù52!5,¢ÇÑtý2îãM¯MXÄäó¸«æ¢ÒÀ £
º0ýê/Çe°³%sÑqÁ¡EÃU~týç4«"zôMòTÌÂqÛꧾ©x'ì·Ê2qÌU«
-°úA1rÇd»utÊä¶Q
ç°÷Gô@Ýü/2!ø6½î<SGÖ
-¡O&n»
ti½z]â¦ógƣα¼_ãsè9c¼Àë¬!´ìº¯
-²BÇf?LNO¯°ýÂEàD
©Õ!>J,ÏÙïÄê°eN'<ó=ºíÈJ2`ÏÅMϪª
"£°±Ä<~#H.A'4æäbS¬
-È(c¦¦Ú°ê5jözà4¾Ä$ýYjÌ#|ÿ^SñbGEÚXßØÖ,FEÃNfÌ¥ØØ
6o:4`WèT_eí%cÅídÕIßMé6æR{?)øý1B_ÀCí94ò9YÑLä÷ö
- ÝUÓ¦¸e,)ÊçªËxÆJ/oB¹þWä`k6'°ÂÒf,`6Ñ5ÑXx²Ëìî~ý×3
-¼f ªÁ->x`ÖKÑÞ¢À ÑòÏ6C¡Px*ÖÅgÕU) =XÏ°S(ü
7ï¼}ÐÑ=ÜCë¥/ úL×ð
TêÉ/ØÌ$¤YÕ7ÖdÔ;>uÉ¿à`¨Â#Íò
u8ãôí9qNQ¾âº
»;°{?Pnpãì#bSEçnbÇ0ñ¯Ûù®=O|â@ÈÛ/w¦ó´=OÅBÂ#½5ÑÂWuØ8,ëªòp#óÍ;oMe»dªGï¥SçàÃÈ`éÔ§ÈKÒ&:§ç¸uRP£ÉGvCÌÕЪ¨×rØnÒ/D^ybRNvNiö»{9 µ¹.ÿÙVB÷Àê3ɾú(~eþ©6=ÖxÖB´a
PfYôk#Î^m8Q?»i§KÓô
Äìm깬oHÝ
-7WßÓ¯=ýäëÓÍAI¬Eå³Uú -¹v±8íB²v/36ú: b9>e/Ou§}=éGâ-»Ö¿áBÐþì1^óÀ7HaZÕ.çqß²Ã{ÑTG9Ùé"'Þ¢A°ÈRM/è§1±2¿ñÐê û_H¦ó´Û¶Hsïûô' 6±´úcàÜòË©ùÃ<j¡¼Ë!ÕÒ°BÀ,_ß \îh ²Ýí+ÜGánòÞÙ+òo[ã¸
ÿè1FÄ'îØÌÚüÝhËÅ·ÜI\NÿàÕ.þ¦Ø@Ä×ïVL×`vEE{ÅTM+<LÏûþ¥ksëE4.Þ,üø¸#[£UK2 ÉO½¡x¸ÝJ´Cñ0¶IB¸²§ó@ Nº
=ÛîKñWwæðòB£B¥WwIgËévsw±ßÉzrQ6¦G>
Þ¨*Îв mÛÕ^ä½ç+6Qòv(
-"*1ù¶6L>>»*ÄH½Ú¦~l
a7¨}÷,¥ ¡@¶Â¿réTó N~
Äì6ÀñÁuxÈvºÉ¾5ÑÄ[G'áÜvhËYLD,´lô L\³¾ÌtêcÕ®ºÀ¼*fÔ=»1ôºf/ïH|½<¯5·vo"«¨ÎAºsî~)Àæ½ö½©Hb.cEèdñÐT<Á[ãBÚòRïÎ(uúáFQ«¶k,êy'Ù}
òé2ëƶ©:j´jÐùÉ®¨è§íG[Ül7»Ü§°øTWïsØú}K¸j(\õÅÆÍc¨&Qáö½L¹ ÙOßX2] ÖIeu²*)óÒJFh{Îè*âÙ´
-2
-åïðN
lÂÀûýØÃÆQ¯Ø·óJ-ÝjÎWÏàéö%²OaV ®ç«²Ss
^§>uu/Óç¹_«ÞpN®Iõ-/§IpÍa2öÅ*MüPx!ÇdåG5 ¾|Lãú·î
°ÔsOò·l/II2Å
s2ïHÔ¬YÞ$f`ã%~v)" M¶®ÆHH£L.駦1foyíQ?¢ÁX%±oÈ~ݸ\L?~?ÊÇ_"
U
-
^þ¯Aµè°ýì Q¾ù¨ÎóШT9<6ÖDÄçË aÝ÷v_ðf
-ôÚÃ$|ôÊ>×7ó²LYz³<÷[ÝúïjÚw¾í@û&´ÞÚNùÛÃ5ÐÕa0Üï§z6l$køÄV*°2
-¡7tùÝ üÊWkf9LÔµ{Þê¼¹¾½9´.ÞXWJ¯:Í£àºMçGC®Wmà.%¨Ëϧm¯¤¼È{X£§ù°õ?ý¯/ç(íBÖòËú)Óó©Ó·ûuC±!i©X<s[¦kT½Ü±üÐ|Ö¿ÿb§ê½îÙéк·jCî÷Æh¿9ÔTxöýAS 2NƱe8S
§¨äIM³ÈGëÔ¡ÎF{¸V˲söÞ*¼b¿{\ÔzHáAMèSÏma7©8 >®² %Ð|:¹ét&ojø|a>ßø«7*EæÞk?|ï¥l»bP`.PB,EbæBì¹®OÖºÄX~à/=Ù8b³6ãÌ°'ØÕ±Uñb0D
b½s
-+ÆïdÐg@?aæ(ïðe)íq
Á[\$Ç$ úò³¿æÇÑ WN¤-³îcÐwË[Áåá)nzÝ<çF?ÍA9ThI>Å]º§m7-M ¡Vìê½)Ë îÈ ÚX:ÜQHAdÈ35¿
ÌjYqîsT7¿ÀJZâȼþa=/S½Ïj$ u¡há¹rñáDa~÷ÜR&cëe¤@åƦ*³HSýü$'8D¯9-\rÂOÇ s/>2¥@2þn1ÐiEpY1'b×Ö¹¥Â ³lY÷Ýî-k4¨ðHð¤I:Umò+£¶(ûÞñ<]Öl è'ë]®Sò'çe´©²7³:R5À¸ÄÅJ
&¶#¼%½Ìм` t¼NY·LUBeHYí&åý½Úz¼F83©×tB2wÉ+l.3Dùþ 'c¡î=(ì#tjäÌxçnYõáùwÌÍM¾ÊNÖ£êF^ïMTëm϶¶÷ô&u¾ì
-ÓéþMs0ÅÁnø~¬Ã00ÊßáS)2ªîM½L±A LBÄ3Y§@ôdX÷OÉûzê 5$2°Oc>1gXß]'ÇÈ&Ú(e©ÙÍY8ÛºN~P8ôFöµ%J{Þ/©e6>UvúéuÆ)è|ÉlôήCgNe%7Äêãî1j. at rûp¤òªVd4T·áêø¬³hDËiÜ XC@Å¥x¢¥«³)ba¦úªK6ÍýgP«+ ÑéÛx}lÄÛ»ø!¼QBuDóróÀ
XÆÌ(¬ ÌÍÒsb(ܵ4
p«*~ ¦>I@ÜðÄæÝF¢ÿ$¼GÁ2OÝ-xÿ}±:Õ«
-9r%a7HÞ
л#cu)¾:9j.
ÃMóxùÖFz.Ôhø%O¶·l·_¼Vöå~ÉÿÃ1`. dÞZêRHĬ`E mgo`yÚP£!iHè©£(9QéØ Aw0þÔ
½\ôÎÁìöY¡8T4¶®{d,ÆAÍqªøÓH?lLf'4ø¼OÜ&L%WÆE¶Æ`õpúá{ÖPÉ| ªÜu¿.×* ùw·pç>±Fc¿ß¼Ä¡$`åR¿<ô¾?ê¬{SÖî'Ôø
ú1Làr2>Êû§^EÄw0×¾B&}ç1æGß^äôþÅë\üÄÚÍûË2à±q^ÖJ)µelî«Æ)ño?|âôdKédM©îEÙ5#(ÇܼÈ^GÛZI+¿ë°ëMoæ'äoåRX
ù',AÁMSlYxlSËÑ{Ö«Ýeíqè»Ï¼P kϯWð¾yÒ÷o¼èU¿~EPæ
ù¿ö²ÕռЯ 8¢ÐDKøó1@øì©V? @¸#"íÑÓtpcq/vL¨ñÖ6sC9âêꮾ°ªÆ&BÄÕh- èv¾Ì·7M}I[ei3iæ8Â&h!e?Ú¼wÙhdMb2y»U©bÙyMQ Uhü¦÷ÞÑpLÄÌÓÎÈ`z;p7Þ/'y$ì9Mc9¹EÇaÝà˽Ð3β@Gv è7F nÇѾq7Ó3«PBÄ72Æ[iOSö¸>H6`*PÔQ}ð8än*ãÎR$ÌÝii~-âl
ä7µÊÊ(»V¾ÁÒ!p9ÅÛå¡>æzÿ.åTv:]1Ö^ùÕäcGÖWr§<Éô¶Á®Í õyÈÃHö`&âÃÕ zÝ4ÙyÊ{aÍUG±{1.1$p¼}øy¼6[Gã©þuúµúZb Esü©Ða¼¡QγӦ´4tæ7Ãuýeå|óÕ¢9=ßrýX-«ã>W¡&_·t1çtYó¯ãUIeqÊLvOÌõÛlOÔOÉi«1kÌsᡧLMÿæãj#ÁO³Ïí~tÊ-(Ù.
¥$t#v½Â;Ñ
gàµ)CÄA¶ûÛ(wZ覤»0<å[%ÄìµøÍ[7WëZÉtzÄx"µåwIwÑäJ_ºõ3{/5~@ÛÓ0+b/!1S3x¶
-«+BAJõRf)üoóàB
-
.Ú\ò~ó|ïÒxÀ³ñðÉ|¬¸[I¬róÄãjKØ£öh«K)øk.WOC¨µ>9
@kt;AË©°ÎCó½ªÌ}d;lxG_ksÔÄdNK½vy|ýò(<SENkXéÓ¨¤Uï·®ïâh¹µ^ZL<uÎLk¾Z[+©äc~ÕM¥êæz× %ÁSð⮲Éj*2B0f{{BµjuUà;ãüıÖ+Y°aY´¸Õ BñÄqV¥¥®·dø'Ç~~ä£õå£ìÕÝúBï·ß-dáÛÐÐJfì$"Ýèwjðf©ÐqèpÜóÃm T¶É>Ê ;´Òõ³-´%<Z=9oD=û¸ó\iõªê]ÍdZã`úÅÊ-Ñ' aRï<êÅmêí)bàêÑ ÆÍd }bñ÷2^7¥¨/Ï¥Ætä¦øsûá0(>ÝXÁêóo¡6c*ÚÝØ Z¥¦°îkxGuèSD%?æç\-¹)ã}âlR
[Iíw='d¾Tl-Ð^yÍÏáq¾¤àq×ðÿq
-¬#OàÀ`øøùÿü"¡%PßÞÑÆJßÞæÿ Z%¢2endstream
+ZXÿ69¹äÍ
MÆúÀÙÖFÿ[ÄGçþ%^QNþ«ºõ¿Ïô_>y}3kGe7Ûÿdý'ø_Ìø?ºcoæ
+Ðbøh/ãGàÇû¿iÿ¯Z¢Ö6FfÖ& &V6¾½½¾ÌÇíù V#ÀÌÚè
+ º~¦§³¶qüXøèÀØÆæý8szãÙþLhö?Ðò²üüÇÍüÁvN6@#Ëô<ÿåùf ½¾=ÐÚhüñ¿¬ÿ+ø£¸¥ÃÃG9C++ý?V ½©)ÐúícÕGY£?&v ½¥¾éÞhoóÇð¡×ÆøfýêèòÇÏú!ÑÑÔøWÄ?²q²ÿcø§WfÎE|Èuø8ÅÿðX ó_Z?Nø?öÌú!ÕÚìo!ÿìÙÒæÏ"6æZtøg*ü1~äüCy
þÐGNá?ôPä}ì[ô?Äþ±k±?ô±gñ?ô±_?ô!Bò}ìTê}TùCÕeÿÐGõ¯è£ºÜ㣺üú¨§ø>ê)ý¡zÊècï*è£Úú¨ ñúÿ¹¯ÿã~L&ú?·óC¤ÁúHaøç`øPiô~4 øþs+þÂÙ&ánÓ¿ðCø_ÏÃGßÌÿÂMᨿDUVðcºÐ[ÿ
ªlþÂU¶á?7è/üPeÿþsMÿÂUá*§¿ðCó_ø¡Êå¯aò¡Êõ/üPåö~¨rÿþßÓSHÈÆÕéã±ûøbø§ë N6N¯ÿièdÿ14ÿõçô1ÿÍ>F6è
+4Y^°1ä4On.õÍ*ûL*dÒóµ®{¶6`)Ô²hTÚj£Vý¹<
áàóËo\ðvO
±K?»ù·g½4÷\õ4Y·}[¢_§mswg¬ r3c¥ W§¹ò"Êk =ZÎõ=élìêbi*!AµdÌH)v¥¡,!ë.H qàë?¼ÍC ©W¯mÚPó¡râß¾ýBF6l'`VÜ¡BS<ä?+)AB¬yï®H(Ù>¯@)Jd¡WeºãêN_aNÊ:_Ò´´«¾²ioíé2SëH-2\ÅåÛT|'r;$=ræµKÇûlù^z"Æ;æ~WýF©ù¾ÅSs -}
+Íá.CGÐÈ?áÝÃI M[ЫÈÆléÙ\ò··,bÿ üqfV¾t¿"¦==~Àõ¶P]ÕÖ7MùÙHEdÙß3²Ê<»HQÖmÀ
7(5
+æyûíù%¸N²ãJ¢óçfÁPÃyè«Û1ðTB |EÀpv>h«§J#©hç«õpç~+;ç±RÖªmïÏÒÁH6,ÏLP±»"¹TK7i\ãª
+åô§°gâr\e«6ëÁ²'¡ç&¤^ýn[,p_øT»ÛrB¯Z¤å6W"#¦°'íû]C I*lj93å1¼æ78ir4&S÷Cäà¤þ~ÄÊ´k^½Ko=ɸnñìOÀÁDj´zi¬¨¡y ÁH at 8Pî>õya
ÖÆÂmµ£_ìENÞþæ¾\ZîÕ"Ò+Y©Õ¼Ã-2
åX~cè¶8&w°¥ÜoUgh9
+ éc2¹oç¬%ýaúkóDFêLD ˪$uãÉ5é¡¡ÄÙÙ°;5^äK×Æ}ýjÈäNê¡Q¦z%§IÜcéV1>;,E9QiªÇ·Û¥AnúÔ7DVºèE¨âøùC¹®¼|õRû §tsã%_CÁ? ö7ÁYf!ûÎ-ÅÐíÁ8cöUVyN0fB¸Y5mÂ*ÄD'¹tD~|í¸Rùêåëúý$Õ³ó³h ¶´Gþìòï"Ø4 EÙÌ|þö÷¥öæÝ-$:uj+F¢bva¥Ïs´Çhq¯"HÓ"NÏßaѤñÒghÜ
ÞNÞ {çÌsàLqKᡯOärU-v¥Dó¤VÎð²§gSD$sRú°JÞئæ?!`$"r7µð¿Ò3 ó?vP.fìsMmM¬((õv=<qJIÎrþ2¼/Äá¡d¶ ¯Æ$¶Õ¼«ve7SF~c+×vüêÇ:¦Õ¨ásóý"ê@
ñ0 at PqtôHÒ¦_ÃQîç)Þì«ëA
+,å&/tèÖf;]ºñ¬gG,m!l03ð-Ô¥iDö0¢ä«D(̾·táÉ×þ
ËKaÄCJ7Izë.¸°Qµ9½
+ïýCTULöá]{ÓÍ}¿RÌ6P±ÓúkM²öÕB+æͺø8 G2âÇfyNFÆÉ_Aðù=qfãÖ£¥9YNáEÔ¯)8þͤ&žҳQmxY1¥%¦E® hwdf4ýkbMk18¿ÈtÓ½hË6±Zñ«Ï±
+XV¯Å0R×½XY»^æ½Ïv¦ÓW¦D}~v+l<3ÜlXÂçÀÖÛµ¶B¶ ;ß/2Ýtf¹Û?¹ASn¾¬'ûê¦\ ò ¶~)p¸É·\U]ù
R°u¾õ'¯>_5î'[cáÏÊÀáx÷C8L¾è<Ϧ¹¡vÛS¬ªá,Ö_Û+aäH?³Ã IøÔ#.ChXg
+ÔýÒY9;HaEõuþxZÈrï}I:´»\Jصº`¸TåÎíö\ºBiø*n¥ÝFí?iµ%õ
ÀÊÙPXr ¥©=ëñ¿%bM&?º|3RðSaô1
+²®÷Co@Äf®9»{ny<t=T1óF
r¨)¼Eo¤´VÃìm2ÎåyE_3Z¼Çm'®kv¬u¶¨ÚÙLýh9g}G!®cû1ý$gsíÒ'SÚ,*'ZD¬êù ìßEVírÓ£ÃRúÀz½
+µ: ñµÓA!A"8¿
=éÙ»u°A¼;\| y¤_ó¦içyhvp¾§V| Útv>Û ÆL90¬DV¥[ÊIÜp7»
+ÊeÚÀ+»8oM4¦xÁX¬¯MS!÷&3o¾Õ
+¹ãnCúÊY¡¡àUeÉj²c¯|ÇnÞd]B¦Æ;{ÿÝÁ¾¬Nÿ§a`ªDøÎiìQêû¯«d¬_àú*¾PzLvHÙá(.ëm3êÄ?®õô¤ß3ö³tâ_¢ÄkX=
+yc¬àMâXªg&E²»Ñý"%Ô Bʦé&ST¦çÞós#£X¹n@µoëßÎg¾5¥' ûÂ,ðmWPdOHæË>lÆæQ2Sw«¡rHîô*KÚ,Ùn'°·-aØOA½¦d³_[N-#47+X$«jªô]®Nf-|I¨\?[V?ίL!LPÎéÆÚ·Ôï]²ZN3~eÚgfE´NËÊ:¿hRvú:}u×!6`i æ&Ъt\x½ fÒ¯$EGÉ0Áоrþë0²(;N,ÐÁ"46²©ÙQF4ÁÜ# iKÒ¹U§)Ó{îW ÕiÉ' ÈÄìæyÞRnvK~÷#å¾Æëð¨`9WQa¨Ù42-¶:TÅI)ÿM<³#U#|$ô7~-ÅÎKM°ÁèTe±Ê´{G§í=
ò½×,8
+¾P$
+@¹F«¸<åï9YüU7ýÙVúÑ,
+ðÙ#ݧÅËÆUïã^ÑÎñÐ} pùÓ
+o(X%ôõÙ¢P,Z®Dâ):CØôYZt%h¨VÙ
Nu{¸æþ s]´IÉ}QB§¶9¬è2°X«ëµ9-xU¨Ë,ÅßNérsØ-i¿m´úµßRØ7{0ÖÀ³½ ßËýNzéi®®ÓÐÄHuÁSèg[0µÝÒÁ$=¾:±]+XîcO2¬N¤g<IJýÍ|{RN37d
+7- Õ¢Fv\fë)rDB£WÒ
Zo|ýf,N¡IÚ¡á~-lQ7]mRBfBm8j^~MZÿMV·E´Uÿr¨4&ÌÚ`kõíÕé÷e©@x¼ÍòxýÐdÞ3R9ÐÇRôä°8y¥c½qvß(U<<áS}ø.m$ .)sòíLPÅÝv;®or¡¡a"Ü»>V(¸¿CZoùX©2ÒEÔôEýGµWÂO6¨¡³ÇQg$\q
¦ïí²öBkªa GA£TNz!Já'-Û÷¡!V¥ÊY"$qÛü¨*uÍÛÈ3NîG >³¥;N,Ù,U±3T9]E«èGC¯zéC,´X[V.ÞîB°TQ¬ùOÊ»{Ø1B'ê#_«ÒEd^)Áfc^ý8/ELâÊÔ#núî-bïàMbtKUµá1$ÒBZê+n! Ãù-§37¿]z£Q¯ÞXêäÛkæÎa´gsy
Þ÷ªÆQ´kc}ç¬eÞtä ;: mY4S¸vw
+WÅÚ!cã9X
+ÓfÙû!+¿ë¶æÝkÌY|öà2>%o
QÀkì¢HÕbÈiHòUÆÈw²ó°÷ä¼'6E_§yâô0kÂÆëºí ÉÂx¹|÷Ôf¯v3µ¥\¦8µh_I'eóCgº¹2¶öe&¤¹
+êÇ®bípÖûAEçÈP¸¨#òjÛ ðÂW®+¿µ'è|Fiû¶Ù§é´©^ê¹@²é©a/w)ÍJ´>ÁJð4ÿz^#JtN°Êc \ÿ
Á:À½Ìùq~SèXy@\¤"FiòtÊs+~ºh³^¿k%ÈrËVý ?y ¨¬DÕØÈÊï@w};øû0^Çg.°-t=
Ü2Cuï´}üþ ÈâèÒÀD òÕåô~§¯ßH}8
ª::LuE,?AB¬Ý¹adhù5`²×±ïñY
+TZlÝF°GÆ@ÝZÌzókÊÚØu¢IóÁ"ÜÎñiÂy:2ñK/Ï
¢Uª;pÌm´»|Ïî?¥F©pM{QßmæÕ"}Ç°)U]¥£ ,êjëÞ*ëÓ1´=@ýz>æµÝnëLa>ýPd»oÝ]Wl$ÌA?Ål)Ã]&(S.NÈQÅ«
+v*ñºéE*$mÇЩ°u>¶!hvu)ïÜâ¥{ ®ÍþÀí7:UT
8l´ºPdwèO¿ÆîØ_ שï!ÈÂXþE÷Ù²Ð<ÿõG·áQ±ê6çæR(¡é]ç>¡yRÍä\D!]í4Vk
µ ëªRL8AÜÚ*Ýú;áå¡é¿Õäþ2º±±D*ÐZæD«H0àSóùéÊ%ñüç«|RÊ!Õzu_"ÿoÂî&ר`à|§ÊÜ«-\(.FpzÉ÷Æ)æ»eé0×¥ÄؼW]-Ó+$t÷RÔ¿âªûÕ$pdM-K7qºîkQRÛî¿è{dÃ|¢©Éc§$Ú§s¥TÙ »ò·¤¹¬îr ³Aªñ8ÞlÐun`gM¢È/ãS(<a1A#!ã·O¹£êi'°Xw!3ç¼¹Þ¤JX² 3q¥ó+ðxjðÕ
³?þ¦ñù@%|4^iGtS
nq%j4 at X,câUFHÇmñ¨/áºÿùìDZUù^õsÁ3)¬¥ÚéóÄ°·µ1{øøÄ;
+h(Dc\qÏÊh(&»sòïÅNy©i.þjVavì#ã%O²±
%r2
(è6|HvX]s^ú[ø·´¬Ât©8S¤ô¾ÚcþïvUľe*^f¸ËdTw!â<¦xjo0dÜ¢B(§Iá²×Ä¿]àÌø.Ú
Eª{çe~ø9äÑ[ÿò
¹V5$± à >âå¤Crf¾Smqw¦æ.$ãXã%ûqîtÊpÑ©ta¢,´Q«Èñ÷fºÅ¬LF$ê;Û
+Í*¼>ueÅf!Q0%&Î9y½Ëp4]ú&³1¥ÝE¼Õ²[¤fõ¦IêÕÊÂìBtÕuôA¸ü§ÈpÇJ+ÔrðoÉ|?¥aÅÙOÒ"MA¸6×O4®ýaÛ2
Ïè(±¦ÍÉ$dó&ø! ömhç0äÊû¢kF Ñ,-@Ã?
^*t¥ºn¸¨ê¼QØ(*2{gãÏEËûùeü¥räm£;ÿ§Û¸9£9È]ÛYXL:ÿ¦çSÈûYêf¼»Æ/¬ª\(§÷Ý)îÑl
ºj+9´ò¥dv'wV"Óû©û¦bÒ®l®&1u*ÃOZ14¦´÷? 6ªèn(Å([ØÐ` ¨õ§Û³ {BûHß+Á¥_»AStËDÌ@¤Ké¬!Ϋ(\`ÇrÅ _RÚ?Ùäu%"YvoÁ.xûG,ÇJ@böO¡ý§`Id
d;~ëÂnèØ,¯@õg¦f¨:U¬0ÄfÄúDl¸©î¢ûÎGÎ<Õ¿×K©á5&¶Í?´ÜvH{u«F®(g8fϳexí'i\í* ¯Wiûë4«A
+Ô×Rm^ûx§¦ååiÕÄG¼},·tɾô ·)©éF]èéWØÄ%ÜT\f«éW²Úä² -LUÀ'
+Ãè©ÈNQ½JéÃ÷°å¥TW¦
ªâG¶êr~ÃCºüVDÛÒd%¸¢Öäa>~¾.¨~Ô$c_bÛÁ )Eúæÿ:å~Àÿy5rò¾ô´¶Ê*
\ÄëÝ{vÌYà<Â4
+^wÓ:DOµ_ÿÈÈõéþàôãòÒ¼.N`îCñ^ÝQ¼ÓU!ØXO ½¨A»S¢náù£ 8xÁ¥XLU8®¥x0Õb-+R8ý¸o°¯ e¸¨&ØÚA$HoHç"ä¸,÷wà$ÍåysÅ1x?Gw
+±¨ Ì@ýï:ª×Öáé9Q8ò÷ù@ìq8B¯&höT° À,ê
+Ü[ý8+&/={àè°^Q®¨vJ¹G×
+íMHï>å®Ë·C)4ÁXÈm=´¨Dªå
+xùÄ
7OP1÷»õ
+\Ú]7*°!
`Xq½
z3±§PûtAøkÉÐtÇWïÖË·GYi|q²<|~Ú%Ê)Æ×ûy×»ñIÈÓá]$GðUW¸ ç siõ¾µnÙÙr/t´é
àçöÛÞ®ÕI¡Ù}$vh6vkàE(!£*ì
+Ä)-sf²Mß|¢E
+/nù*8xq[ý§>õí9Ý®Z¸É¦í-¦,Ê׸u<y`Và8wÙS<*Fmd¢ï[ÒÙ=î÷³êXÏHÉÈôÔPN¤ù°öÍ«aÖY
+£WªÅ}îV1Ú/Ãæ\Ù×?zb7uÃwØkÎU¥GGÒdeFéµþf¡¡7URí:?ïTc
+ù²ßçÖ²ùN¶}8Tïrt²MôJDrç¿éû¬üø&ò³pSðMrùÎ@Ò"ØAÒ{n'>Fj[»lç_°ó¢G
OhÍP¡Þ<L¤#ùéÈkÁBºò<µÔ'Û®æ.ÞØKI8ßE4tÜz`âø¸RȪ7Þ_ñ%W°pL¦îb'ú So$(Сùv£Æ8X6×Ó6é°J"»mGsÚâ"´¸çå=ÜU9
þ#ÏI2xöå&ð»¥
A«º§°VD£~}úf¨}üfìÕÖÕÞ"þÍVa¶úY&ÜÔnfP
²ZòÈîwðM(Ý=DRÁgOî§ÓCIÈÎÈÀ-%qÑy·àP¯$½´©k¿JääÖj\J?óV_ÊUæ
+ã- ½VÌÄüªÂxÝt0y¢ò/{ ©I$b§
¯
+ÛBø¯îXOéåsv$Ñ0\ãô¾
Þ.Npï?¬ãÀ4à.¨i¿þJ¹Îfo=DB¾ÏgÊqçYb¤¬¯ú°cEb-¡¡cð¢7Þ?±/[ÝÑ`/éÜ¿¯78tN¾z4²)!öùTÝÌ9Ë)jz-Ø(»`L¥ªî<3HbN6~ÍUI0]áOÖ£¯çÉWÊuò«G4L¦@VV(tvö§ì+Ëk0¤ºX+ýä\Ù©|öu`ÿÛ³³ÜÈ[ÎE°ùø:@ü ÞþÆVhÙ ø;Eä¸d¢@BÜûSw;÷uÑç£cJCS_¾j(9Ù[\é¾ÿ}y'ûIϽ*§Æ ój´ÉÝ 6µ«VKxïØwK¥0>Ü;¸`Z@Ëð3%¥Ï}mGügø´VcéU$`C¹ì
q÷YÖ2ÌÁ=ûX¢ÖØë Ø$'Íî÷<Qcáøzeö×·f
]3Ç1²õ5õ.o~Ó®Ä
èfQMÏK·|½iy¾Ê:%ûÛYbØï ² !KxÀÒðIR0¼¬<þà
+pm44wÛª£¿d# ÖØ*¦S<¶uár-콺ðá¶ëYû®ãqÙÐeKö2
:=-´ª8àêoëÈfÈó9êÇdé°çQ\y"Â>÷(@]FL°ì»å1]`!Õ nÁ!EQHÒï®ÿNö|¾ß4'×9_xnä¬æ2öqiØ7áµwÅ(º»ú²TO¦~*ãÍ3¢ì"-²«4OZvMüÚíYÎU»ÇúýªlË!3>'¦#|f1säd6+îÅ[Äü<ìc¤õ]£>oÒ£û^9à uJJhr £paØ6¨<Å:@V1_îfL³x^ÖbT½EI äÒ&¿+ò»Ll÷öùgð´}jð[ÙUL9I·ü?¿¼ÿ{/±Fó·ûhXºô»£b<iïðÖ«¾áXdþ$¡ÍX5$ú6D3Q³íåɸ÷Ï]Ø
0YfLýË:ç òÖ>ÉÏemɱzIÝõ>¶_¿¹ûH&0q"ðH¸§åxÑGª¨â®"Í$fw}r«)+¡Ò¶k¸2ä-$3
+üÍÆÂU8Õ;báQ[«[Ó2ç¼S8adiNCÊÂìàÂϱw¨äËéÀ¤ )ÁòÛ´Ê´`,};QÕ¥jºHô9:þÈ,h0Ìjj¤çv"î½>Ù&É^Ãuî%EbÅÂvÈzÚ¨Xàú77jèm4bx+|µnÞøL6 dWdº.4ö÷·,ÑS>9SpÚnÂ#ïlϺ44¢³#FP4æÌwxbËÊbþ/X éÜ´§,*<a+©âåGV¶¢ùç·Î]é¿hLîlQæ0ÎÞf:¾ÌÍh[÷f}Ë^Ìz¤SÙAc¸©°v_îRh*s kÊÊÑ3ÆToýáÉL²ÌMï+Ǩp7_Z53fj¸Áa5÷lCphFYi"%棥À|øe½d6&:®¹®qÜ 4ª¡¼Áþ\vL[?æálݶævø¹DwÇ¢dÔ|Èòø¹XÒ|A¦V=8y1:=¾îÏ$»kÆhTÒ-el(æ >
\nÂä)É*ü¸z]Ó¢ÌçOªó¹Ê°£ê^`÷½é å\7¿ÑÑn V¬òöôÚz¿k¿ K/¿Á7`«@}Ý/ÞþìRÙ^¨Ê^÷×
+TvR;`kDEÉz§¯Äµ&ü2c
"Ý÷fÓqä3¡@æ²öh÷öE°ã_tÇ£Èvhó©@c;J1÷÷ÃäêÉVâbòÉò¿Knû+ç<ó Içø®åÒP'¬^"bò:4׸R"§UÙC»ho¶¥¦Æª<[ÓÄQ×ì¼ßiHÒua:AY»Æto5ôe-ú²ÌvÜD±üðÖpeScøEE7PXûs,²ps/K?±
J«QÛÂ#h[ð
+
{sA$«Ó®Ñ|þ¯Ûc/»®®ßÄì´ÔFëå8ÿØN2íQªµ:'0 ÕÛSÍû»%³ å&]_õSM¤èÓa×79WFÕy?HiBp羚YU(Ïô-س}IÓ3ÄNHdX¨üµnÂñí5&3
TЦÕ(XrêAøùMÂNj?¾¬¾Uø«ÂORÚ_ÑüÈʳ^+{ZYnî <$ A + Rß½ÊN=
ìrõÀ+³c(¤47XÓ8eôe5rxÍÖ"r6'öZ7òlÕ<|üíåÔL9ÃÙPt|ïl6Tzl².±X z_úþzKA*A¹/ÐÒ¸sTIkjnXå#ÈdÒÓ#Ð\ÑbFت֯M¼þ¾"8çS¦m\µ\½CÍÏ7#}Ådm¬@^äÀ8l&7q8õ6Óoç0Õ©1Ùfâës ¶Í}ÅElhûa:57G _Iòvì²É©[±È<SÄc®GIÑí¢åÏú
{kó.à¸æ!lûîRO5¥¼ì*çÒßÕ§~ ôùxÎ#+yàêÅ\l¬÷l îÁDô$ÌÚgØä9¤r÷²×ek¶4ûX sÞ\g$By5ªkÙ¹y ±ô"
`yu^H$|)Ð¥éttNÄ g/nz[a§¤GaMP+¹ÉÔèø-'ypªm&ìÍR8uQøÔ¦«î,ãÛnRvKºFÆK[áQP®t²UíµBùETÑýl½4ÌDÔ9ÞÿP)íIÈu#¢·rÓi9e¶Î.ñGJ¼Ó7Ô<·Lc¬$yd!0
¡Gmý5K×½n]\Àî2
·¯±è9Û1¸:õ¯ùö6ÀŸ@~!ÓS~íÃ!J :åjó'"ÄÒÎú7¶Còþo"q)&åï1½3ÖÖ´
"g-bò¸4òðØÊ ÛF¸] OÔüi
+»ñèúô²9Nùt¿´Ð_YèÇÇWy{0l0¾#µòq«ýÎâ PE#mgEÞÐÄ÷«Ð¾Lµ±Ø{N{^ÎC¾ç
?¤L@Þ=±ÒÅ?b=8H
5±üìÿ²$QðIo£¶ûg¯]°ýùåàòÑÎÒtfVOäÞ¡*å i'Ô¯/*§àÊd;{¡M¯û£+ Â~¸ç3©Òk½UÀj³bÕ»OxßnÛ»6[î¡@°"
ÜeÀúõYjÌð3*ä®ÛäN½ÙÛ3×+]¹_>Ì!ºb´73¢µnà±2$Ððmä.®òH áè[× uoT]ñ§ßýF±l};¿å¥?M§ä'nFÃvLBåIpgBÓe®ä'/5ªv.£ò2FcÏ¡æé[´Ü{6ãxÕÙz|%ÏÈ÷p±D<J{^èLð³Ð^¼vácཡÔ]:ÆÆê6qqÈg[s¬u$d·û¶ HPÍÔ: È<+/¶S6hi'Aä»xfï½7Üt,BnddMké¨þWÆlhY%ãÞìGO7dhNv~jÜÛqÐ.Ò¶þÔ÷A¹»4Û²n²©Ù<0cðxÐ{ÉÂðibTÁJI|mµsÖgxºf>C&õñc US-±Â\ Á}I˨>¥mâÝ) ¿@}º}¬T`$NöÅܧ²AÿpÄóÜR°4³¶à¸AÇoî¦r
Û6æ
µûx×2RyÎMOá+?(¾ü®YÚ¶Ê5N?eôy;§Ùþ*u¨6êv7ü9)ª_óJha©ÇáÚö}¼
ËÉ;_ãë=Gaö¢>dgÎUpô6É<©j¹¿<o?L>²óñs>iªá
+YnعàZ)ͳg¸\ö8ã÷IRXÊKíKåýPg#H~ó'
KEZÿÅðq²OÎ\³e¬b"Ìì
¤Â8¡Hr_F<>ëë·nIF¦êðFNéKÇ'Ìv!Øt½9Ø_ñqëÁoü`¥'T_&é«MBú®ô»ë&ÊãÍíÄø|ï)§·²kdBjXD£éúeÜÇ
^°ÉæqWÍE¥AGt9`ú)Ô_Ë`gJ2ç¢ãC/«üèúÎiWEÿôèä©
ã*¶ÕO}SñNØoeâ«V`õb8å?ÉvëèÉm5£>Ïaïèºù_dCðmzÝy0¦¬B!þMÜv;<éÒzõ !»ÄMçÏG;ÿby¿ÆþæÐsÆZy× YCiÙu_d
Í<0^aû
À:R«C$|X³ßÕ`Ë<Oxæz t=/ÚdÀUU'
+EFacyüF\NhÌÉŦ2X-3QÆLMµaÕ5kÔìõÀ)h8|Iú³ÔG;ùþ½§âÅ´;°¾±YÌK±±
+mÞ"thÀ®Ð©¾*Ê$$ÛKÆ1Úɪ¾-Ò6lÌ¥ö~Rðû!b¾Ú1sh(9äs
+²¢Èï7캫¦M5pËXRÏTñ^Þ
rý¯ÈÁÖlO`
¥ÍXÀl¢j#¢±ðeÙÝýû¯gxÍ T%Z|ðÀ¬'¢)½EA£åmB¡ðT#1Ï&ª«R.z°)a§PøoÞyû ;£3{¹ÖK#_
+ &õ®1à¨Ô_°IH³ªo¬È$¨w|ê9%~ÁÁP)
GåëpÆé)Úsâ¢|ÿÄuvw:`÷~ ÜàÆÙG$ĦÎÝÄaâ_·ó%]{ø(&Ä)40·_ îLçi{Gzk:¢
¯ê°qXÖUåá"Gæ3vÞÊvÉTÞK§ÎÁ[#' ÁÒ©O¤MtNÏqë¤ G',í«#¡UQ=&¯å°Ý¤_::/&7¼.ò2Å.¥
+ìÓìw÷r*@js]þ³î5Ôg}õQüÊüSm0z$ñ¬
hÃ
+¡þ̲è×F½Úp¢~vÓN¦1éÙÛÔsY+*ߺn*¯¾§_{úÉקXÊg«ôZr+í0cqÚ
d#ì0^f.þ66môu@Ä&1$s|&8Ê_êN+ûzÒ[%4Ä[v[~Ã
¡ýÙb4¼æo´ª],Ïã¾e146÷¢©2s²6ÒEO4½E`¥2^ÐOcbe~ã )3;ÔA÷¿8Lç=i·m*æÞ÷éOlbiõÇÀ¹åS%òyÔByCª¥a
Y¾¾%/A¸+ÜÑ@eºÛW¸#5ÃÝ
+ä½³Wä߶Æ
qþÑc%N&ܱ%;<µù'»Ño¹¸þÁ«]üM±þ¯ß'®Áìö-¨Vx&÷ýK×æ+×?h\½ 'XøñqG¶F«4e@zCñ*q»hâalpe=Næ4A*tz¶Üâ¯î.Í#áå/F
J¯î>ÎÓíæîb¿õä¢.lL|¼Q'<T"'¡eAÚ·«)¼È{ÏWl¢ä3íP1$4DTbòmm2|þ|vU5,{µ#MýØ
+Ã2oPûî3XJBl
åÒ©$ç ýÙm5âëðíu:|k0 ¢&·N¹íгXhÙèA¸<+g}é$ÕǪ]-uyŲ%{vcèuÍ_Þ&ø.{y5 _9jníÞDVQtçÜýRÍ
{+ì{S2Å\ÆÐÉ&âÿ ©x·Æ&
´å¥ÞQê*#õâVm×XÔóO²ûäÓeÖm%SuÔh-Õ ó]Q=ÐOÛ#¶¸Ùnv¹Oañ© ¯ß7*æ°õ3û<1p)ÕQ¸êÇPM¢<)Ã+í {r?@²¾±dº$ÊëdU0#Sæ¥#ÐöÑUij)ieÊßá
+Ù÷û±£^±3næZºÕ6¯ÁÓíK$:d¬@\ÏWe§ç
+[½O}:êê^¦Ïs?¿V9½á>\;ë[^NàÃd
7íUø¡$ñ2BÉÊj|ù(&Çõn=Ý`©ç äoÙ^dçdÞ$©Y³¼IÌ<Á ÇKüìRD l]þF29/\ÒO?LcÌÞò.Û£~D±Jbßýºq¹&/ü~¿D*
+«¼(ý_jÑaûÙA¢|5òQÿç¡Q©rxl¬ÿ=ÎAºï+í¾àÍèµIøè-}®oæ=d²ôfx(8î·ºõßÕ:=´
ï|ÚöMh½µ<ó·k «Ã:`¸ßOõ.lØHÖñ5¬.U `eBoèò»ø¯ÖÌ4#r¨
>?8j÷6½Õy?,r}{sh]¼±8®^u<GÁu;Î\¯,Ú"Á]JP0OÛ
+^Iy÷°FOó9#aëú
!__ÎQÚ
¬åõ9 S¦ç
S§o÷ëbCÒR±xæ¶Lרz¹cù¡ù.¬ÿ/ÅNÕ{ݳӡuoÕÜïÑ~s¨©2ñìû;¦>dc!,Ëp¦
+:OQ
Éf-Ö©C)öqeçì ½UxÅ~÷¸8©9õ#ÃЧ?ÛÂnS"p@(}\eAK ùtrÓéLÞÔðù.Â|¾ñWoT̽7×~
+øÞ1KÙvÅ À\$¡"
(ÿX6%ZÅÌ
Øs]¬u±2ý0Á_
+z4 ³qÄfmÆaO°«c«â%Å`<&ÅzçVßÉ =Î~4ÂÌ7"PÞáÊRÚã·.¸HI ôågÍ£®H[fÝÇ2¡ï·ËÃS$ÝôºyÎ~+r¨Ð:}»tO=0ÛnZ*CØ)Õ{S9 *ÜA´±&t¸£"É0gj~!Õ²â&Ýç¨
+n~´:Åy+ü5Âz^¦zÕH6 ëB[ÑÂsåâÃÃýî¹¥L.ÆÖ5Ë"HÊMUf¦<ûùI:ÿ N$p2_7)sZ¸äæþ_|dJdüÜb Óà²b&NÄ®sK
AgÙ³î»ÝZÖhPá,áH;tªÚäWF1mQö½ãyº¬Ù@ÑOÖ»\§äOÎËh%Senf)u¤>j2qLlGxKz¡yÁ éx,³<nª4$Ê#(²Ú9LÊû{´õypfR¯é
:dîW0Ø\f(óýAANÆBÜ{PØGèÔÈñÎÝ:³êÃóï=|%¬GÕ5$¼Þ)¨Ö7Û%mmï?éMê|Ù¦=Òý>æ`ÝðýXa`¾Ã§RdTÝ/5{.&bg³:OèÉ°î÷õÔjHd<aÆ}b2Ï°¾7»?O=M´QÊR³5²p¶uü >-pèìkKö¼_RËl|8ªìô?ÓëSÐùÙè]),ÎÊJn
+ÕÇÝcÔ\äöáHåUÈh¨nÃÕñYgÑÓ¸A°K;ñDJW/fSÄÂL!õUl4ûÏ0 VW@£Ó¶ñúØ0·wñ
Bx£êZæåæ'%6
+± QXA
?¤çÄP9¸ki
+áVUý@L}8¸á/+Ì»DþIy
eZ»
[ðÿûbuªWrå:JÂ0o¼[#
wGÆêR}1urÔ\
+æñ>ó#ô\¨ÑðKlo#Øn¿x2ìËýÿ!cÀ\@ȼµÔ¥0YÁ ÚÏ
ßÀò´¡FCÒ ÐS7FQr¢$Ò±&îZaü©z¹èÙí'³Bq¨hl]÷ÈX& ãTñ§~ØÍNhðy¸MJ®lÁêáôÃ÷¬¡ù:1AU¹ë: ]®#TòïnáÎ)|bÆ~5¿yCI.ÁÊ¥0y è
}ÔY÷§¬ÝO¨#ñôcÀåd}÷O½ï`®}LúÎc̾'¼È'èý9þ5Ö¹ø%´÷eÀ',bã%9½4!¬RjËÙÜWSâß)øÄéÉ>ÒÉRݲkFP¸y%½¶µ.W4~×a×ÞÌOÈßÊ¥"°*óNX<¦Ø.²ðئ£)[÷¬#0V»ËÚâÐwy31¡ ×_5®à|ó¤ïßxÑ«2~ý 2->Íó;ìe5 )ª«y _>p2D¡ðç cðÙS p[GDÛ£§éà2Æã^íPãmærÄÕ ;Õ]}aUM«#/ÐZ@Ðí|oo>ú
¶ÊÒfÒ Ìq MÐBÊ< ´yï²ÑÈÄdò(v«82RŲó¢@ª,ÑøM%ï9¼£á#§Áôvàn¼_NòHØsÆrrú/Á!{¡geì@Ño Ü£;|ãn¦gV9¡>nd·Ò$%¦ì7p|,m&ÁT ¨£úàqÈÝTÆ¥H»-ÒÒüZÄÙ
+Éoj1Qv9¬:}¥Càr·ËC}Ìô:(ÿ]Ê©ìtºb¬½ò«'È7Æ2¬¯$åNyém]êó"3=ìÁLĪ:ôºi²ò)öÂ1!«b÷b\bHàx#ûð5-òx5l¶ÆSý *êôkõ?´Ä@æøS
¡Ã yC£g§Mii.éÌ;o-'ëúËÊù82&æ«Esz¾åú±ZVÇ}¯B->M¿n=ébÎé²"74æ_Ç«Ëâ:ìþê·Ù¨/ÒVcÖçþÂC!OþÍ Ç=ÕF>#fÛýè[P=³]KIèF.í8{
w£ÏÀk/Rlö·Qî´ÐMIwaxÊ!·JÙkñ¶n8¯ÖµéôñDj!ÊïZî¢É¾uë7&gö^j:ü¶§aVÄ^Bb¦fñlVWê¥ÌRùßæÁ5
+]´¹ä ýæ/ù>Þ¥ñgãá=ùXq·ZXåæ7ÇÕ°GíÐVR3ñ'Ö\®Pk}rZ6×èvSa8æ5zU/!$úÈvØð<¾Öæ¨É(z1ìò6ù6ûåQ:y¦Ö±Ò§QI«Þo]ßÅÑr5j½´yê=×|µ¶VRÈÇ:[ýªJÕÍô®J§àÅ]eÕTd`ÌööjÕêªÀwÆù##c3 V²`òhp«9 at 1âã¬JK]oÉðOýüÈGë/ËGÙ«'»õ
Þo¿[È·?¡¡ÌØIDºÑ-ï8ÕàÍR9¡*âÐá¸çÛ 4¨>l}>Awh¥ëg[hK4x´z>rÞ8:!{öqç¹Ò>êUÕ<ºÉ´&ÇÁô[¢O at Zä:ÞyÔ7!Û"ÔÛ/SÄÀÕ£# É úÄâïeZ½nJQ_$*K 50éÈM#ðçöÃaP|º±ÕçßBmÆT´»±9´J#LaÝ+×ðê<ЧJ$~ÌÏ=¸ZrRÆûÅÙ¤
+·Úï80zNÈ&|©ØþZ ½ò25Âã|IÁã®!àÿãXGÀÁðÿðóÿ'øÿDCK ¾½£¾½Ìÿ¼¢aendstream
endobj
-103 0 obj <<
+107 0 obj <<
/Type /Font
/Subtype /Type1
-/Encoding 376 0 R
+/Encoding 391 0 R
/FirstChar 11
/LastChar 122
-/Widths 377 0 R
-/BaseFont /EBSCVL+CMR10
-/FontDescriptor 101 0 R
+/Widths 392 0 R
+/BaseFont /ROPNXW+CMR10
+/FontDescriptor 105 0 R
>> endobj
-101 0 obj <<
+105 0 obj <<
/Ascent 694
/CapHeight 683
/Descent -194
-/FontName /EBSCVL+CMR10
+/FontName /ROPNXW+CMR10
/ItalicAngle 0
/StemV 69
/XHeight 431
/FontBBox [-251 -250 1009 969]
/Flags 4
/CharSet (/ff/fi/fl/ffi/quotedblright/quoteright/parenleft/parenright/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/question/A/B/C/D/E/F/G/H/I/J/L/M/N/O/P/R/S/T/U/W/Y/quotedblleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z)
-/FontFile 102 0 R
+/FontFile 106 0 R
>> endobj
-377 0 obj
+392 0 obj
[583 556 556 833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 278 389 389 0 778 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 0 0 0 0 472 0 750 708 722 764 681 653 785 750 361 514 0 625 917 750 778 681 0 736 556 722 750 0 1028 0 750 0 0 500 0 0 0 0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 ]
endobj
-376 0 obj <<
+391 0 obj <<
/Type /Encoding
/Differences [ 0 /.notdef 11/ff/fi/fl/ffi 15/.notdef 34/quotedblright 35/.notdef 39/quoteright/parenleft/parenright 42/.notdef 43/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon 59/.notdef 63/question 64/.notdef 65/A/B/C/D/E/F/G/H/I/J 75/.notdef 76/L/M/N/O/P 81/.notdef 82/R/S/T/U 86/.notdef 87/W 88/.notdef 89/Y 90/.notdef 92/quotedblleft 93/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 123/.notdef]
>> endobj
-99 0 obj <<
-/Length1 1242
-/Length2 6715
+103 0 obj <<
+/Length1 1257
+/Length2 6876
/Length3 532
-/Length 7487
+/Length 7655
/Filter /FlateDecode
>>
stream
-xÚíe\Tk×ðéR<Ô4Ý"ÝÌ ÃHt t´4ÒÒH È;sßçøÞ÷Ç÷ýôüÙóaÿ×µöºþ¿u½9Xõø ;¨:Â
Å IUtÍAB@2C £`7U0
-*
II Õ¡vÌ_ZLTZHÀTA¸£0G'K
ûWPÉÙÝ:`ÔSÃ!ìaPZ ¨
=á 4zBÞP B`ö( Ôæüå¤éæ Jüx¹ÿ{ÉôÄH¹þÔäb$!78: uÝ ÿZÿY\Ý×»þ*ÿg§þkì
-£ÿpu÷BA@tûÏT3è_rÊøm£ÃaöJnp(Pè¯ÌSæ
èÃPöN@0ÜúgêùOLãþ´TR¶T2ãý×þ¹¨¹¡Ñîýý'þaLw0_ ¦½ L"æú÷Íl¦æfÀÜÂbâ@0 F0Ó!1 ?s@}P_±
yiÉc øu ¢B at Aw0ê: ~-ýý+ú×ñý
-Ú#\]ÁGÄ$EàQøwD\(¨ôI Uþ!L¶êß$!Ôü0Ã!øO])L¦Ý?$
Ùåo a!¿!FúbÊ:þg§ß£û
Åο!FÂå7ÄXÀCë?9QA·ß£ø
1-ü
1V¿!Æ
-ùb¬<Cê7ÄXyý+ïßcåó
-c4п!FÃï7Äh`ìùWKþ{n¾þü"ò ýRJ?þ¿2í½Ù@ýùUÀTû7;À0/êµÌN!ìeÂ×E¾TË-ÂçÁVv¬OÒnÿÔB6
/ÐòàY¬2¿,θM¾¿ÉâsÅàÓ`0¤~âôbòç¦÷£Í¿Fóo:è
w¶ó°]¦º¯bØzãߥYäw¿<ìÙÍÕçR5þBø«ÃÊ»¦#3\\Â\=nQÅ)ÂjHùÂã]´hÔeZ
-ÞÂHX sQïü¢Ùê2('õçC¬{ØXÏ;ÑÓ(²¹=
ÐÇK5üRb"ײ¿¼ª{W;¬#XÆоa¹Ì{¥®âëÓxf}wí}
óåêB1ìÇvphÒ\¯éÅdëÏtükéÏ¿A&ZÐ7äiý}ñáUÛ@ü<¡äÃ¥H»J\nò÷£5C&ãk°³-ñ>>^
E
¼qdO ¼M¥±Þàø¸|?7%Z9ðgå C_©ëüº°.:ëRs&7ëX ½9XéhSwXѨëà+,ëáÀ«§¡®Õg*"Á·°Db$±z8Hà¹&÷ÅE-VÈn.éÕ¤SG¡X}ä|°"ª`yí~xô-äÇÝr¯A±¹j]®÷=[üó*@éþ¥âDåöóÜY»Û>BìV OpÙô_fäêZñd×¾zÝYyz¢"¯{Ðk«ðBhÈ6ÑÊéPb)ÇÿgäÕ©©:,àAúW ÅÏöXÕÛê©
¡:£0^6®¡¯)]äª×çx·è̬¾Ý}9÷@zXvÊØ£ëÃûÕ7d3äcg¦º"#snU¡6]ªvÄ`«öÏ:ü«[§d.a×R[£ìVêrÐ#>ξ·ûÜ^ÞÏ:@ª3;¦!Î¥àw
wk#ÒñS¿Ä\)rJ#×YÀ):Îê(s+µE.àE
-õÀºM¡®³2qdnÙ«E5èóË<CtiS{+ç佶ӽeGX_æÚ§°µÑIËåã½U;´ó{jQfåMq7÷ÐVÄr
²f~8é17HZù<Ug|ÊV±Éé Ì%IζͬD¬¢
GĦ¬Yæí3äöT³öËTKd3éÉÌÝ3Äà¬<Uí#n½¶b³¥þQFõã÷r|úø]Þû¨5qä`?bäº÷ãâ³ÂþÊ£4ãÓ±|~ÅÁí©å6Ð9ÄÄÖ;,åãâ]Aj2óXI~\»¶Q¯éX\×WÂìii>°P< p(AI°ÄZGÇwé½7%T±??ű3µïM«+ÌÜZáþrÚ]ÊzÚÑÉèõj
-µôÍ`>ài{öÏ¢R½ìNú";wÔD¨,ö¥$ûùSÒæqÕSË{.ûôímùû¡ö!>¡£D¯øö±G²áÅú9_H'Kaoßµs|>þÜ_cnHëêð
gÌf!r´k·ãK jíG:ºLÜÿöPA(Où¦ûÄ^o¦CÒ°@Õ¸"õ¼?TáBòºî7u\iT3lëpÉn9Îtöèk8¾íë$':Ú®Î'HFjáõÈQÜþø¸VEÇ=ê4²@T"^â{ìWT/¿ ïBM[÷[ßëÞyß x¯áLM)nWÏþe_¹Ô¸c~¢5ÉðÈ·6÷õL:2"¤j`É_}þ¬æg÷ÔHZÙå7Óoé4×MG#ÙU'èʾ£` Te$K0`ÌmË01&j`º¨,&£2à¡üÔ½×BpMk/Jæù°THíuõ%´×Ê©{+mì ®±C¨Þû
·{§ãKYõ¸(|dî6}(½ÎÛ
-ÍËj L2MîSºèbCrQ¤3}"¾Ûr^æ÷êJ»¦i¦ )Ù¨7w"ûÖÕ}$ã7Ã#õ\$®}ÿP³¤Õ$Îw¿v¾Á
-jküé<Ú>¼*¿¡`;ýUmPkÇqUËÍ aJóºÐÝueìùÀüÕ(ÕçûëÍX
þM²£Ûlú
²~r(`*¥¨0Õ<à87¹,QÐHÓ÷®¾|bÖAYqf¿Ïù4z@]!tU÷Âo¡qÌ%[HwüÙ1·}ÌzNK¡n 9$ÒÕ÷÷\õÛ§ÞW¹Çu¦Js¢5uºîñ;⤻à]í;Ûø~(qÊÔj27Öã æï=ü±$È¢Y[}v8;5+mñî|w$mÂO:»\in ù:ò1½W×öÑÔI
KoÞà·Ì«¡ûüÞÔyW/ièßKÆÙÔ¯§&,o«Ïxßïc£v[£,8ßM²-BÆ:Of1Do¾Q+º¨l6y^g
-£ùXAH§£;ÔòÑ¥m½vÉô &öµxê}ÇòD
¶%þØU¸×%\A£RHee$¢l:ô9hk5Ä3ؽÄv¹ä,wѪÎÍÐd$}5Ù/z,yivs´õ}'øïs£~ÃârrÊg #¨ôüÓ»ÅÕ<é%Éó+DìýMéþÝt¬é(d9.ëIG1IÚ0_ìݺH"O_ê«ð8YäÅÀÁ¶f
1ù%ååØDß$qM«×õtNLhuÅ( ¬¨H>8åó@Ï `Y7;â4µÆÑ{]ïçuh2»yÚ7UÑvÍϧbgð¼ZöðÑu1ÜÚøüôÞ"!z
ùF~õÝÊmätæZ"_ò\"u«òôåXÃòMMt¾k/ùá&±âbêÒ?T<8!IMèÆ7ãÒÞî(¹Õ´mìè&6OG&ÆuSÅíT3>§yã_ݧzi4~úRÑÆØ«`%îHZ¬ÆÙãTøòF¤4º*ªïgêô#¨©$¦ÙǺ-Ó°áyÐj%¢íkÝpÜ»F2o
Ý*½Ý;Îç2#w6qâ/ÙÂÖ¹;?83ciì¶Ø©ã
-?.2òù76ßãÓÕ%|¤SPlìoÜbFl>¹iýÞÔCc(}ô£øÞtÌæSv+1qatpa!ým¿@/|"ÇÌtõ sº2c"*m-x2ïx}UõVnÜÒk9lF«&Ö¶ýKCã]îÜ5óû8ÄSDD?ãÏ©ìîîëgBƶ>ë4ǮܶùúÅØF°è)É£d_sÑR.f0Ï'âÆû$)5¥b1J£l-AÍõã/©_sk3·§ßè$?MQÂm!¶Ódrü¹´ü:é2pÊéAÎt ¥aÍñ`1ÉdýÞB¾ÔÉ8hxA15ÔÃþËÊ+CZýÎ;)u%ùÎbiÕÖu¾û¡ü0/ÿìGï)?å½ÎlÝZ,©¦Ý~äv÷qQЦéÕÏøPïá7Åîɸ-*
±tRul|®ïÔjzX¼ÚC³)]v«ÅLýótwÎyÙHУ7ç4~\%ÜsvÔש|KtûAµ7;Ç@¬STie?h=W·µ%¬! !{âw»,ä$ï3¦7ÇÀö8èñ<_S¸½UXòÓ0¤jvS±EþËØÒ,ìÈÑÐAÚFÄãu\ì:SòÏ5.t$L at 2{Û¢£ó)L¬ëÃ¥+ç<í2L´î³Û±D¾tLãÌ]`·¹å¾÷ä¾Îº/øBê]\nÆåvËØbÒÓnù¬±ö˽ªàS|q (èQ~)ÄH{%ä²J°Æ:ÎæÅ73HvÙ۹ɻե÷Öæ1äi>ù¶Ùµ)Ýt?¢ê=nhd¥Ã¦ú½J«ËÚïXhk!"c×
ÙX¶ªWá<áNyñF®Ýô½ãÆ«¶#ãM1îM?[ª2uáêõJ¸ EBPÁ´Ê¥Ø'Æô
VÙ¬yNôó<þËйö¬è®Ðº×ªNPÚø¯ðöú<p4ú»< ÞZã,J¬©Á)
- ä|áDNz,Gzló¶ä&¬Òì<Ç(ÊÞ³/QEl¢bÈI¤¸ÉC£·àbyçåy-wR°×¥Ø÷2=²`e>Çè¸>6ßúõ4Á
fúÛðõ¼,È?|qùâ¡£a.-Ï'MÅþQïñ±Ù7Ð*Ã4mrKfço>»/(Îj7D C;ë:ìîÍñn3u
©õ¬H~ §Z¸Ùd^EÉZ\_ªDÛêD5ØM/x¨.@úcKdÑ4©~£ûòë¡ÌDñ_f<üßdÁ=åD¥,Î_b+(à7;Ï¡ù¢=Alâ9·©õÇìc'7¯²¿¿S¼R Áë%ÈÈh$ì®]3(
·Äxl¨eJ>mB³¶VÍÓ¯ïPf¤® îѧùÊ
-#ÇKÞOÖjÙIVxãß¹Fbp|
y:¼³$êâËîj[="¸ÄÉó$bR¶²¼ ~q6.æáÑ, ÚàV¨K!,Tõ¶ lßà'X/¿|D¡²çÝ-gØYx 1Oð©ØózÑÚj÷x &xÌc_º£6]¨Ðmø¦«c
Óðæ¹eÕÄwé´Ì^¤¥~[|Ñ4¸óç´¸Ôý70¿²ÛO2
ÛD
-t+V×5A[4^A®è+ÚVa{¦ÎÆtí«vÚOÛÃØZ-c׮ũwº´ºd`bôïYàüc+cOV§÷ç6æø,öüÄC>öl hÚ{ð)|&U3\IHòûÊ$)ìW3<¾Ï$ÆúYÛþDTùR+~Ú.|õòB·ÿîQ¡MôkêQɫФí` ³GðÚ¢lEèPVÈ9r..ÝÓY>~¦N¢îò×ùï'óég+-'óq_zêü:^®é§Ä<î|K«lÔ¬P]ÌK>cþÅ?%ê´¦yts=ña¼2-qîoM|<+Oå_r:aÎD.à~Çr!¿foÄ#og$ì`bK?ʺ8ý: ×1Ê}Ö
-«O3($jáxM â(íÈy(¹ò i®_xy¼ÈÐÀ°µ#ó3´\XÙÀgpérÀU_d)çb§+1°²«Ì%âÈ'©.0øÖ﹪&ÞßéáTØÞÖÕ¿4$q¿½BN¥ô\3¸¿4.ΤbøÀXosQ÷ËàùZB:;![XLOºàWÏGàºÇ²b^¢|=¶¼ÄŬÅêµn¡8öÉgê½"éFìR Ã&óÖ×L¼Ø)èì¤u{x)Lº7
-Kè}â;Nòõ8æ¯1%lÆA Ý3K4µÚ$Û6£fG¹×h¹`¥ÎYÖÛKÞ×Îâ×U§®KϦig±¶×$¿vsæû"Ûí<5tɨ/§à
d¸ìè«wlr%I]ûèÄïʶ2ëâZäî1Ù~1¦ð¡IqëF[ò ¡á Q^7ê
GLÛõL@&x@À-÷£?eÜÁ|ßùáCãV¡Ã#~Åz=å:%§`BÓíÅ«Ùü¾ ÉäíçcMÚBݸ¤wò¡ó¶¦qäFøºéxÊzmålêqÞqzzRô2hí=ùxNL4\U' ¸átj§ÅCmi»I_vO':]ýa±³'BFhiì7УË`6EÇ["ÄtX$5u¥!¦Ä
- yJóË&G)KõÍÈï~×î¨P¼Ëòܤ«7¢Sk ±bràû ;Q)»çwÕúu,X ¬nó¿U8Å7"ÛsSÉTs»¿Æp)61græuy"#@ûðQaN iQÒÜ)G%ïQî¯{/£uvõßFî;Km4*
-b?¥,õ¤eW%Ãxnæ.À¿!TzpßX
)åΡ¡Oªmý2 ëxz9êhè©Æu¾ÇÖÚ«?"òÔ÷(î×[*LÇ&7\ih6(HÅÇtËاUØ
Ìwõ}"bg¾1á]©0öPþ²Þ&µëù¬öú;P¼6( &hà!xøÎô<Êå¾ëÆÅ~ûÒû4÷¦³Q(tÌ/ô~«ÓzÏõóçaEgÊL!/ɱf~Ïø4#ùî1þô#JÇ~æ&q¼~Èw¡ºWaTló¸°K|do3Å)¸wn¸`}ÂOÙ5©È;yKqð&%pæýèjÍm²XuQSQù|@¡]ÏãiU¥Ôͳ>¹t£>ï)!&»Ã¸m(l¼É±MάÂàÁ -MìÀ[öáÖ¾¢NÆS»¹h£k[}ò«'MèC/»*Ò ÒE!ÒÆCúèÕpn9Mè÷£ûlOÓífÅ÷ôëÁÍêlïøMº/¤LGã°çtsN-µ+PCLÆUÞê0®år zü<ëXªK"©#ǧãÁ¼,pN¬¼`ÖÑ5}~z¶ºàLáUË«êÀë¾Øö©ø¨Ê¨Ò7Sóy\¥"´Ëâ×ç
-·4Søò¼3
¡xp |Ïð"f*e45CëGYÈÀÊ6uÄU¶¬h@äSýu6gaÉéÓ7<DÑúqBç,Y¥2²ò:³u£jîâQc'ºA.êÔS<Àæv÷j"¹Ìä±nJÍÑK¼¾[¯åü~¡ÈªñÒTK{Æ/³aÐVÅêÛyr¼!}dj÷î ØgBÐø\ØB*M%#U½óòwv¼ÇnÑå½
-\üR.¹;ã5öA]ËZáD$'¨·ç¸ßÉ âu «'
2Ã0Bç-LpH§¬Zù¥4Ô½¬[²×«%Wñ¼Ú|Hé,¶«Ò@Ú#À¨-/òåN²¶5çÁ6~Aãv?)ª|c2l,Éü6¡ÑËG3Êúyj]£wbu/=1i5±:ÖlÕ ÌÇ~m)_´%*ü⧺@9V&º:>Úï¹:%´ÌqærË~5QÚFUÿ(ääVÄ[8¿¦Þu~;ȧ6_ Ò$Ãßi\±ö0ø^ÂPþ-Ô*\P!®þÅ£Ù£'¡ïÚ7Ì-½¦bà1Ùs¾Çy×E¤5ïÒuJ
µ«Lå¬"ÇlÒÄn3¬Ò«ú°P&û'~4rw
-wÚ/¦ßgTq^ªt/¼mA}5ïxr7ÚbÇÝ «Ø\óïXþç«Ún]W*,<¯y¶sF+¦ÙwÙå¯8ýð]=o5\Êä¸ [Hü/ªçhÉQóÊÉOÜEÎwPu°ÆñùnÉü¬<«Îâõ©Â¹û
0¾äéJµ
-Ac=c*¸ë=ï?°ýúsL Æ£ÍsÁNÁA¾ê÷ÀmæÌ=wÅÈ;¢k¹I¢¦=¦Å9Û@ZåéÃûÌ>h{Är[fæ
-Bt¯Jïô$~Û Â¦çV* ÄËæ¤O@¿Ú.²Ù¨Ë¾³)À[è{¼®8ï/}cxÀWLèØÃÈÒ^ÛÞSJvÅëq¡Óé'£5ÿ¢÷kâ¯q}Ab°·Ù{wôv¤ÍçàçrÉ1¶Ö®}rµämXxEöÅñ#MèÕh§6(Ê7Q¬Z®`»êÑãræÖuî&év¶«[#»åXy?t%näZB²^»¾ÃÓÔän6/[*¾BÁWÓ-Ú§»ìs¤Ü]ÞáBìk få;߶®î2ǯñùÛå4^ÓMÌpSVëÑW¼üváÁ#ìÅÒàj¤¨¾[©W¡öF!gm¸<B*v.'©Z/§ÀQ×èÈ®$ÞËÉ¡ ÷ ä'Ýl³§ùE¦O"/s'îZ£ ì>Û9ÓË
&^U¡(ó;Ý7/×ê\FÉö#:U ~2V_¼Ê³)z§0ÿz½Êf?©^õQ´@-ee©L¯
쬪ÌfÙ»g{ã êÞßL-¤¥Ä?ÿPY¾ Ô(ĵ¼üü wø@ô/¼¹¹êÖ«nF&jËÊzÙeÑýì¹S<`@H ^]ª9gÛîÂûòP¢~Þoé§TÙÔi;ñæë
îã£#kîßÇñæªÆÞ÷9b/Ìf
&fFdoÇ&H8n¢[ñÚo¶p±#lÐõd¢GOã]¯?»¹½) Ú¥%ü mIML#nKE<4)ôÿøüoÿìáP0
p#] ÿ|äîendstream
+xÚíeX[ÛÖ¨qw+-Å!w+V ¸;B Å]kñâ§Å¡§hñâRܽnöÞçìÝ{ÎÏ{}Ïës¬1ß5æH4uOm VE¨+ÈËÍ+S5äåðróðÈâ13ËÁ `¸ÔUxEEù +ä
ò+&( Æ#ǺyÃììá 69ö?O] 0k°+@
·¸ kX:PkÜðÔÙ ýÇ mæ ±áÆãåØ8XÃV;W<ÐNÊ®¶Pð_anÿ^òÀ<R ¶?5ÙHI¨«³7ÀbR"w ]þhýgqÅÎÎê`?ÊÿÙ©ÿZ»88{ÿ+êâöÔ 6ë¦@þ
:ÿ×6Êp°³õSW;g篢b£é ·¶Ø= Æ!®6ÿ©lÜ UcYÎé`W¸®·ÛßeÿÈþyÿadw` ²½¼ÈDäõï;³ÿØLÁÕjãàjàa0°7rz$xÉppµ ÒÄí
+
# [â°
Âðþ8P È
¸:Clá,ýåýWô¯ãû;, YC]\ÀGEþ8#Gáß!A èé?$ ÉýCÈlù¿I RþÃú§®(2ÓêEîò7ñò m~C¤,ä7älCä.v¿!òìC¤Ão( 9þH'§ß)åü"\þAä\C¤ô7DZ¹ýH+÷ßiû
V¿!Ò
+þ"^üH+Ïßiåõò!5¼C¤ÏoÔ@Î/Øã¯ü÷ËÊB/üÈùyþP
+ùþ_Ö/`ÈQÿù'¬öo¶u@þv Äov
+j-âÚVâ§?ZÉ*k÷1^½¶c¢?x&Õ¹pà¹;ÇbáMY9Ñ&æ&½×-GTË+¯îñiw>4'jÞnÁ»ÄÍ
ßÎöQ5ÆK
+ºßõìæj²ÉëþÀþÎÒiâY×"$l¨á¬ZÃÂÏ Mæ^!¾àE±0ìçósþÚòì&''éÎåÚ+:ÚãQÄ4pnF:È·q©N(*ø9l-ëGyvCIý°èMÇñ2ç¢Â«ñÂôÉZSÝÍüBÄ`8(~F²Wÿz²ínXµzbó
§
+yOäÜßQ³
Àɧ*ÿp¯R³ªF×ê&j}]÷Uo|ÍábK¨Ë
+ke£WzQ:`Öóʹ]®ºþÉηò 71B6û®ú
¦ÔÞ§Âe~Ï]ÝûíòLn.Û)w4&SKÀÓãMõa/Ùx{/>±¢pg§¹Ô^Èñ¿
Eã¼að±-ä;ÄpIè _¬ØZÒhÐJ'&
+ã3xIÚ{-¡.Õ8äwøÚb<l%&:íÌãÎ
ëUgkêÙÎ?Û õ/%zá¾æí¸lEïÅ·z·íÅÃdÞȨýV/ßOÝèGP@v^Gfõùúa¯¹tÏ.¹´Å¶ÜX4xÂÅ1= ¯/GüJ%}OXfÆcä)Z~\1©(ÈHmÔSêË×½ÂÄ/Dò¿Ú.1HH©[tLNXy\º{T¸w yéQÜü*7C4v¡ÏRÎ?2çZdöEþÆ
+lÒèqOÙz;ðôÐé[ð¯0ÑëQ&EIHÎ1K_ñ;ÉÏ7]Ǽò3;úÊà客'eõ¡éI'x_üs*Bµ×éÁj]*$¹Õªü7?1¸yziºõ!.سâ1F®$Y«Õ¥uÞ7ùÚÞuö
Lm,¬íçûËvFq4ѺúµÑIµ¸åÓýU+o/Ç&J:ÙM!W´@· 6èr¬rAéµEÔâ=ìTGͬÉwT"jºòxGó£ë,¢c\}·Ï:f at DaÖd³ÖËdK3é tÝ3¸Ðº·ùòªÇìíeKåý£O@)öx¯¤Ø;àßmu1Gtal¬??«â\,à÷e «ïuu·ÎÇ
+2C?;*'6¼=rpqMwé+Ç
¾ø+Ì£ØÅû°íg,çQÓÓº¬¯[? úLOÂe[¦6ý¢Ñ¤-g~r6b¥oÝ\5W¹µÂþã¼»ÒÙùøEöeéDkþUJGVä½íÎwÑ^&{Mþg;Tä¿#HïRYD ¨.¯z¢xÎeR²£@Éi¤¬IÙzyãds d9iæü ¬p(^.Öé`Áú~ú½¿ÎPûí=ÇÙBØèaÎÎz?zùú¯îéÞ^8üÀ«ÂtN<Q´ÖéÑ.×-µ
+ÊyÚÅ[å×PìISEQe Þ:Z²ZÑ=ÞÁ4_c¸°ÉI¦¢´jðò"[ÈÛá?9^ÕÉJLèçDüí¿zd¸ÒaÌf^)eØÅ8ëõZÆ{½ºë¡«ËY4¶U½Ty¸´éö45ST¿"ÁL ¡>Rw¡²ëtLMª÷ëÇÁ[7ûCGïc£ür»jÒTmÅå++VÖ(] ð:^Dwä·W4wZ˯möûú}òE>ed<½\OÞ|´_<üd$ÉÄKo£ÈêqFP¿.øÞÄý¨»Ç£9¾<ÓÂXk6N8/ÏZPñM
+¼¯¹ªúVtVH}ʽÍ5RÌ#f)ºN&úUIÃýÏ»vs/ü{Ïðæ9 úéF£ùCéÝÎ~ÒÉ%ÀÆtvÚ-TnTöµ¥&ÏäÒf±`\¶ÿV§8Í¢AæQtÿ|vkåjÂåúÁÉç_×¹©íé˦g©¹©¸nREÝ̵ָ««ÎE7k(§â^öY`»ë}Ëíw4k ý(òÌU¥Ðh7LÎ×!9S±3Ëm},$êÃb¾F×)Zyª¤E÷¢¿¼EB?+K£lJ5m-4&.Ö~TOÝ7×æ-ߨ«\¢yJîeè#Ô¢¼hqÀ[aõ`öæúPbüù\ıÚö¢yi£=j÷¸/ì6
+Þz
MÙØÌÚñýø6&¸ð>ñÐÞF¢/ÁÃX¦Gm(µ¾&@´N'Mq}èhëÞ²AAG0n¯qtL-ÐØbbóNÏÒçûd^ÆnApg"ææF×LQSÜT1aBýhÛé±ÐÈ5ìúDå%[?~¸PY;^ݤ-±ZÆj¥øØ7«!ª×vèci¤=6ß>yO~Q¸w?@ o.¤Ï3]ÆJ¥¥=mÖ¼Ê×:uf×½2UO\·§ü
Ó»ZrLw\å1ÀDýps×Ya#ÉÅð
þõZC¦/Ù+0-yÛÔ§þÕq
+kz³ädâ]æÙ©É
êÁâ
+îø1åvÿ_-GâÁúC_JÚoüNѪµ¨ mÌ;9òÛçÏ^O|M=S:LñyIè`ðr
,¶h¯ý¹$÷×ÅúotÚ;WÏ{È,>~TL$åY}sU,,û&°´Ì
*Ô µ0a§à,8h9Ç53c®å)Ãä^á4úx0ÓéèÉSl³,7ó
+@ ÚtRÉ }úºÄ×îÃN¥88²Ï°Å!Ê:= ]ßngrD¼Ëíõ~y9Tʨ¢Ë/vEIL2Ò×2¸1cÁVðÊÓ51î严Shµ·oÇÀ%Ï´CFÀò£+NË8Ò×
+v|dséÄd7Yo
ØdÀ{õ)ÓÞCN71iî*ÖÃ6Í'ÊÓòa¿Î*Éû(0è°3ÛÕþÚHOÑÿY©Vµ¾ ¹Õ/mírBÄåë¼Áo¦Jäç8ëg,âZ·æÏ8¬$Ì)üt8µÁXWé)BtÖi >|)¿HÿÊ}@ mìúè fe¼.Kæ.£¶Ë=~¨KCáµµ{èóZR¦Ø\$ `KòydµU-sÒ;=1éS§+Q._tB+´Ðî®Ð&Jv«`
ó±!ì&gç?½ùwÄ>C¸IläÑÆV.Ê1XÄ{µ¬=^ [¼¬ÍrWʶk*@2»µn/ñ^.ìh:¿(hdAóñIöÒoQ>¶¢ZtéŲrÓ^H
g·Â?¸Guʾ}üSÅÕ®´~\x¿ÀH.z=û¯té/='¨E^ðV+±¼E}^Î~Iò`F¤IÞCªdGæñ²Qà "æÁ£Àwü¢mÞ«²|ÏX}PDdívfñâdsì_ÙQtËÍuôËÑÄKù2ûô$í]÷^)útpîæ¦ÙÒý/¿µ}ekÆ7Þ0±&ó¦w)ñI
+TB«Eå}ûtôµï×oWsY4M$¾èx@ÅOEз(æº8RÝúþ
Jsæص;Ú7t¥ôfz=Yé<ç ì<
^¹òWêòcÍ mß«|÷{¼ï_éb$f]Õ°TæÎZÑõ}nùj³®Ú
*¾è-E°cwu¨° yiwV1¤óÞkjÓRê;}rxµÈæe,ò
+.5SIo+su@Ûµìü]bíU¬gºÊk`°Å!Êá7¾°}¢MYã¾sÕ4[Ï{g¸k¬Ë óCYlÕ굶;à£êø.¨
Âiqö6«ó3.]BBðÀwÁYÉé|¿æûVña0Û ÕÎØÍR?ª#>áÅ;?¿yJ¤¯H\¦°~sQ)
+?P8aÙï£ ËËöoXÍÌù·k&l5°ª!¿Þ"%óMÞ½+_Ý¢Ñ3ÌÓÍÓërïq³Üu=G~Ì6<S¬OÏf=l²÷]ÊöÏS'%·¾7 ¯¥Êb^/<Õ! ¿0ÊXYR3È¡¶¿
sÙ>JF3¸ñ÷Í òÏòãÖ^ûP_nÄKÌßï -9Q]Ô·q-
ïÆ,eHµ³
+3ëEÒ¿-:¿Whl3©úå(Å@èä¬%4©öö3q×0¹`
+1·@hÆÏYC8Ãà"ïs¥|àðíö«Q-{®G]´ÉB>%;Nk¨¾¬EYÉúØÑ=zóvQj.¨BåAi«éÜ5ziÂsîOdUåd¶¥ä´÷èUrã×bî^ÚCIJ·'/t¾jQê,WUa6=U-ôósæ¾ÞLð.BeG]=}ÈÂ$:\\ê-;]¢Æ3JõwM4";ì%Å/QÛ8Zó´åÍÀ<+×j¿LXO2;qmüNIÓ¸«s®ãçØm¥³RE}ÙD}LfbïóÃ<-¯~gÉYr ZKL¡ïC|·ogµ½$Ú_¯;üó$+6ËÎZ«å6ý²Pû}C0ý
ßë4éÆlò×%=ûRÍ4áö·©{sj³öàò')Á-¬µgË/ë#ñ·ìªçx{?ø_ºÝ«o2N¼oÖ±Ü|ORI{Ã!%çö¸äElÊW Ïeö¸;á6:!¹§ÆÃwéCö;ß
WVDYÕ3î
+xtΨö¹hÍ.][óaÆó¯³j»_¼Ø*ÓýÆÙªµ»wáIàsá<¸ê± ¯Òd"Òè|z²ô÷ü 0 ¤eMM}¹ÛXûc5\ÑÔÅ*»Ê¦È8KÞ±VÌ¢2ªÑWñÒMÈ|²!<D~©êà}Ñ M\©L
+
+rÔ,qÌðý"¸cÂc}]ø±¢"ñ»áuûpæÎ+ù®ZÔ]Ùû0ÈLfO TwZFìqº6e9'ú½QÒb¡nÆQS[»»}b%íî.¬L(
(ÃþôXçe'å°ãѪ*ñT·ùòO§å½} ¯=©[ûÛ-ðÛ¾ún%ÏÃÚB
WFC"Û/#}riR()ûÐÑg4ï8ÓW·U½ÖÕMùZ+IÑÈø«BóÎ%{ÝÍcîý1}'FD>(8Ns,$M<Du9m¿fÖ1£°Ê½¤ò»ãRp`"¡K²¦° {xTH,c²Lq¯2ùvr6ÒÈâîköýMزîå¾,î`Ä(¾í`0@±
öÔ|çuÂJÅZÀ:=,¤G?ÐÂA>´¦1l|öxí¡¥~!¥-Ó¹YrvKà9ËËSõ>Ç2P¥l çGµXÙªü&ÑqtÇúÁ~nÕð§×&®&t ÕÖýdÞ|º©}Dñ?=]+¹òJj®[1jRÜàJ>_ü^Ö÷øl~î1FÑMa0_ËÔ¶<óye¯½;㥡xÏzëéj
+N9Cl'.¯ëÆYtÓÓ=å0^ÄÿÁx«0t?lW{íÂ9ú
:×gÊPzµ5n2ÓUäÝRëý!«³¹°ª³h]UC$*
åîéµ7â;¾ÔøOÚZÇôhÇ>d~Ù¬loxºÍ¨)SÄ>ïmozf#óÞ,Õì±FÇÛ4´cL»K¦*¥t`<h=*¿»B_+Ö¾RÏm~Õø`ö¶Eª%k§2^Agw°Z at aÈô-æ EáãôRà[^kŪ5ãhUû¾JV°c,:ÖjçqUAû¬º5ŽÆiÒrÜ`áCoKfµL14 ¤ëJ4XéR2Øì.íPz>¾÷ÂN´+¡<Ã#*Åà¦Ò¡ùJ±ñyEw/¥¾¡t¼$çÆÌñrI7¹5þó0+Z°Q0i²*U ¿háºiÞB|#íÞÆE*Õ¸®G«Ð®å¾ü|ÛßÂàçàåK"ý£O¤UÇ\]hs`áJEðSLN"|´P¥¯Îxa.ÅFÜlHÑðúaï8°û£8ÓgëÚ6þÅ1/©wo|ÒÃÄÂ8ÂOX¼5}]Ì7vB9-_* å±ÊìáËj_:Kª:µ3ùdÖÍM«\dkµÄøêÖfl12öð÷S´éÉmÉ°\ÕÔ÷â
+?¡Q+÷(wqÉ=¯Gñ+Ç¢8[½L?WNAîn-o*cxf±V¶sw¯gu¿æT¾-»:û¡2 .~$K©zàèÑß¡Ý+ZÏL>Úþ)¿¯ùººÑxRº¾_Ç]¤ Ão¶N0¦'ÇË7TÑÿM¸A·¦V·¤îÙÏyRþåÕ»Ô©Aó^¶¹â~¼Æ)ùV@$Ê+øï¨g×R ¾«$úZsCQoæùuòTª_xñ`]ƺdÓ4o:¦ûú#úVÖ{Ì,AÜÒ2>üÔ2ûÖÖgöÓ´ßåÇ¿ ñls[mÆÎ?ù¤ÞôuL))kN5Ð{½L7¼ùÕ4åda(éu}º/³(æØjJàÄ·7¯\õ?RQ5ýâó³ôÂ_îá¾2l<34ÆêÒ;`ààì=iÃg°T®§Ö)ûrå¤pàh AÃì!.Arø9ß3á`Ô\ÛN:Xl±t>m÷ÞôzHrõÿLÝdbÖmÎƾ\UAù<-lso\ò9Ïy·#4tn7i.ÂýÀm;Î׺3³ª6Kßñl}î3ýòvÓì»'Ø@ûa 0»"±Ñ5÷z¡¥\õ3=ÏR)Q±yð³gÄÅ-G'¾j±à1ã¹÷¡å°oËç}Á^Éi£{ïV{B·\bÓøP<¦é;¶óyú.íª~2/ÁýÉÊÌ®cþû¦¸_E
ínµýg [íÖ]¼VwqþÜ¡ 1Vs½æzáÀ#ïab¢p¢»ÏßHë²ÉWÜò
?äÁüôÀ7å5?áâ¹4¯Ùå;qÃUP6¾à-XÃÍ>Û[ÖØÒi̪HÏRÉ!üz,Q{9ô|$6°½°ÝgÛ¿Eé«xQ}î2ñÚ
+z1"À^
+lcòPæî1UÞdIÿÉOAÁ´g°Q"öýr»O`ÆR2Ⱦ)Ñ$ýM{ªVH¤Þhí5
5Rçá N_Æ_:&£xêLòÖú¤ùÕr»ý\!
J½ÇI?z%±ù ¸©÷!S§á׺òöQºã««UKqÞ
À:ݹ=M¿RâÀYÙ²C÷?zÖR{
+\&Ôs¿lf ûªþXoÌØÀù,ýÍóÆÛÝô׺þe¶Ó
9WmæPFÁÏ,O÷zCYô´w~òξq9;S%
qnLAÖ~0·[Ô»Lÿ`-ZÀÉvòj¹²¸¡á¦®5x$Ä$WïeÖ^÷¶Æ¤[ÄQÏ®ÖóÙT'Q»zv\§#çÄ_µúq~ñ²!>öã:ÝÆFýJ¸áµÂ»¢ÊNTH3ùÞJé;¡öK$Q/]å®åýO7K`Ó¨4LúZ£lf¦QG¬©öÄ2Û!Õ¹\3<Á]x:2
Qu/M±-$¤ÞwÁ%=9²/¾À=÷çÕT;7íöõ#rù0M¢xýsîU06ò"ÔWôåìßyø.|þõÙõy>@²ÿ ÑshÕvR§;ÿÐX½.ÍåÒUÞ]﫾в+/
+|+ª×_cksTa;ÕöÁ8`Ïv^YP¤²> aæ+è¬àbÇàD«üÖÎs°jéå¿Ó8Tæ$çÁÛAønbûªü¨eSo*è8©³ÊQj^^ËZvÚýnGì P Y?G`1õö\¾ÊÂæþXæߧÃçd,Éq:ßÚãW³Ï¨î
+Â|¡ÀxNyÎmÔÃ@ÉÏAÍçÌ¢C÷ô{D
=5ÉVw½êÆÞª¨Þ!Ð1-¨>%'SÙF©\Bë¡ÓamҸжY¹£X>mÔeKdÍâXàD%eÝ}`|ÕRÜv_ÙÏ¿Qä
½A;lÒ¬UÔ³8YÆ
,ÂÏ_ÿ|LÅ×&Y];òj[Y¶3ó$ôÖY§¬f1T®E:öàÙ7ªçÕ(?Íο¼Ä¯(|Ø5ѳa4âsv?-Þ~ɳÙ1*ûÕ îPsæJ£"ÕyÁVÛáó¤.z±R[l]õæ[Áìǹ»'
îVø;«ëöÃJö;¨±4eÇyEFlc'"S\¶¬Wþx©3"Ndïò#)xþ?xÿ[àDkgºaNxÿß>¦endstream
endobj
-100 0 obj <<
+104 0 obj <<
/Type /Font
/Subtype /Type1
-/Encoding 378 0 R
+/Encoding 393 0 R
/FirstChar 40
/LastChar 123
-/Widths 379 0 R
-/BaseFont /ZABZAW+CMBX10
-/FontDescriptor 98 0 R
+/Widths 394 0 R
+/BaseFont /LZSWWB+CMBX10
+/FontDescriptor 102 0 R
>> endobj
-98 0 obj <<
+102 0 obj <<
/Ascent 694
/CapHeight 686
/Descent -194
-/FontName /ZABZAW+CMBX10
+/FontName /LZSWWB+CMBX10
/ItalicAngle 0
/StemV 114
/XHeight 444
/FontBBox [-301 -250 1164 946]
/Flags 4
-/CharSet (/parenleft/parenright/comma/colon/A/C/D/I/a/b/c/d/e/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/y/z/endash)
-/FontFile 99 0 R
+/CharSet (/parenleft/parenright/comma/colon/A/C/D/I/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/y/z/endash)
+/FontFile 103 0 R
>> endobj
-379 0 obj
-[447 447 0 0 319 0 0 0 0 0 0 0 0 0 0 0 0 0 319 0 0 0 0 0 0 869 0 831 882 0 0 0 0 436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 559 639 511 639 527 0 575 639 319 351 607 319 958 639 575 639 607 474 454 447 639 607 831 0 607 511 575 ]
+394 0 obj
+[447 447 0 0 319 0 0 0 0 0 0 0 0 0 0 0 0 0 319 0 0 0 0 0 0 869 0 831 882 0 0 0 0 436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 559 639 511 639 527 351 575 639 319 351 607 319 958 639 575 639 607 474 454 447 639 607 831 0 607 511 575 ]
endobj
-378 0 obj <<
+393 0 obj <<
/Type /Encoding
-/Differences [ 0 /.notdef 40/parenleft/parenright 42/.notdef 44/comma 45/.notdef 58/colon 59/.notdef 65/A 66/.notdef 67/C/D 69/.notdef 73/I 74/.notdef 97/a/b/c/d/e 102/.notdef 103/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w 120/.notdef 121/y/z/endash 124/.notdef]
+/Differences [ 0 /.notdef 40/parenleft/parenright 42/.notdef 44/comma 45/.notdef 58/colon 59/.notdef 65/A 66/.notdef 67/C/D 69/.notdef 73/I 74/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w 120/.notdef 121/y/z/endash 124/.notdef]
>> endobj
-96 0 obj <<
+100 0 obj <<
/Length1 1064
/Length2 4328
/Length3 532
@@ -2227,7 +2313,7 @@
/Filter /FlateDecode
>>
stream
-xÚíe\T{ÇIAÁ8(0¤!Ò)ݥà #0ÃPÒ %¡C´Ht·´;z÷^Ý»/w_ígÏys¾OüÎï<ÿç°³jëñÉZ£¬àJ($O_P×Ðù@ììòh8@! ¸ (..ȺÚBàm aG9y¢¶vKûg ëG#`P$ ÅØÁq0¨ !àO~@ÖÁÐýÙáèÂ]àh7¸5?HP°FÀ0ÜREÚ ±¿ÂÖ®N§Üàh)gÀY´F!<k¸
¬Â½sò¿aêßâJ®PÇò?ôßÒPGç \1p4 ²£ÿ.5ÿåMnpuüwVu@Àd¶p@à¯ÂE á·ÖF``v
ÔÁþ+GZÿÛnn¿,õôLôyÿ:Ï_9m(Ñ÷túGõgñ/üÍ¸é ¿ ®wÿýdñ¯w)"a(k·¢·(
õá6G¢ @ZÃ= ¸Î0ÂàZ ÜL| ôó8En`'Ü ¬Æ
D! rÀîß1 ¬ô°òoÀª¿ ׫ùAp}Ú¿ W©÷Ä °Ñ?[
0ô7ãüC¸Ãÿ@! ló`Äsàð⤣ ÎòÄ)£þ@²Ó(Ñ nT?gÙõ7
+xÚíe\T{ÇIAÁ8(0¤!Ò)ݥà #0ÃPÒ %¡C´Ht·´;z÷^Ý»/w_ígÏys¾OüÎï<ÿç°³jëñÉZ£¬àJ($O_P×Ðù@ììòh8@! ¸ (..ȺÚBàm aG9y¢¶vKûg ëG#`P$ ÅØÁq0¨ !àO~@ÖÁÐýÙáèÂ]àh7¸5?HP°FÀ0ÜREÚ ±¿ÂÖ®N§Üàh)gÀY´F!<k¸
¬Â½sò¿aêßâJ®PÇò?ôßÒPGç \1p4 ²£ÿ.5ÿåMnpuüwVu@Àd¶p@à¯ÂE á·ÖF``v
ÔÁþ+GZÿÛnn¿,Mµµ4´xÿ:Ï_9m(Ñ÷túGõgñ/üÍ¸é ¿ ®wÿýdñ¯w)"a(k·¢·(
õá6G¢ @ZÃ= ¸Î0ÂàZ ÜL| ôó8En`'Ü ¬Æ
D! rÀîß1 ¬ô°òoÀª¿ ׫ùAp}Ú¿ W©÷Ä °Ñ?[
0ô7ãüC¸Ãÿ@! ló`Äsàð⤣ ÎòÄ)£þ@²Ó(Ñ nT?gÙõ7
á¤<áß99°0À'$* b"â>ÿ¥æFÃ_¿n¡þfnýàp846I=L¨xõUÌìË%æÁ³Ö,kü\G8úß!§CÝgºÔø8/rxùºû)ËÓZon¥¯ÎÑCçËnËIÞ³ï&ix.9Ý8\§ª©ÜÛÅ×îÄÆdµ¦l\ÏÐæRÐÿB2É÷ÁÌíÝä ÛbÆJI!Á¥Â¬ºÔÎØP)w긢©Þ@ß!¤U¼;¨ZWÚãLÒôØó$÷Ó3@7S²XJ/2{س¸ËÌ
<´§B\ßQã@vâ¼²ë}_¿#üºbÊädRûåÍÞ fé¢û\ZR0àjÍÙÓÈøø!W<¯ïRYº[wGïæMOñDÅ·Q-MÆÞX¹úã>;Å:IÖ~òý]¹Pà·7ê=2SÞ¬jUÝÜÜÏõXè^RnÎͬ$VuEVGî)©©zcÙò»î)¢"oùÞ{h¶£Éÿ"ñÅa»*Ú°^Iíæ !Î*µ¹Ñ½9Hez rÀ¦Þëº!².Jf at O½ØMÎ:¹ÈÍÒà ¦¬âcÍÕr&®ÏUß ÆM¯UÞ#øú .#¼øÙ_ø¶XR¸Í*¶BYÛF´|3}È#DF¿äé5C²7ǽþÀ§2Pª[ÞàÙ´ãÄ?Mب·>Sæ|#$»VK-L[sWæ¾Ø¥ËÙÒØa(fýõ>lÃëµØ¨.¾@ûÊø¯â>ÏZO]½Û0ͱJ8Òý
#¼SQüÁÿù\ÉÐ0J£ïfÿûm¬å!Oãu P·ÝUhv»üa «F¶±ùÐuPÜÝùë,uÉûÜçyLUÈF¨t¶¶ÇÕ¼0/.`~©£#Êz î·VV {Ë'°H²`$Çe>å|LäwP|$á _lØa¤&+fñdGHïU¥%àùòÇÌõÅÈâ¾öÙÖajcð]ɽÊüFÃbÕWÔÊÑY'5#õɵrKά+¯4»¹[;ãSÃfJÉòÙG`áKåAMíA¼Öí±Á´w`á~ßLKç_Ú*mvØ¥'\Åb'_èq33@ܤ?r°
SØgê7ÛÕksw|Ðx]¬Î ¶VSÍÓÏÏ`Ò}ä¸Ê;EXêM»ÞeÒ4HÝñyͽ×_À8/òȼEg-»ÜRè/±i2ªh¶êê)§Ô
~áøµ`ÔÙÔÝñ2¹íÔ×.Ãy³3¦yäàvÍ ^Sy¼N»Ñîéîªa))vÛ"aجãͨkÑèÞØqHR³í¯6)]Ç·¹}þ=jë>]©S¥{×W÷"S³ñÑE<:M{U<EpEY±m×\Ð(`Ìî¯t¥áY(ÑE-¹Åúñ}É
O,½á¼âù%ón
@@ -2239,151 +2325,158 @@
¯^[XIÈßø¬¢ä{þµ¦q]ZdZ4¨XxÈ»ÝÖ['T~l»Að¶õÌÈm¤(¯ZÞ½jêQÌ!}~ݵ)W¢.XåQÏ"×½/ÃKS
Ï=øòëîkº»d_XàÎÊòO~ù¾«2ÕcÅJôÂÐà7^Ó¦´ØG««ÃJÇr
Ó¹c¹ö¯2µT"0MÏ8ܳúüéOVú½ÐúÆ~®´ófð ¶<^N Ç4FݧòÊ{XË©t>G2D{[©î¦¹!%ÙY×@ë½kj#ÌÎ÷.÷Å1¶9ò÷V-QqÜù$ª4*K½$æ§ïã{ÿui<;©¢Ï§Ú¯ÔïPæk¿ägû" ¾û9ÊRõåЮö¥Üûò̽µ¯XUHÆG¢)b@@9Tß^)ð"ͨìäúî;õ4 MµQû.¬1¶g1¥O¤í6Ê^Éøì²d%(wÙªöÉÀ¨Uú61ãØ0¯mOÀ¯Jä}KK<¾<&¦á.60Úãï [ÄÖ³ì}]qê>àé¤yÃ,Cá"ÒÙܲpË2®xl`£<ëûrÏÓ
ä$3>
H* t°²Õ^<P?°õØñ)úóüUÆÅêĪ
8Â-·:g¬¯ÍØcÄD_utj~ÑV˵Àaõ¾uö@ý¢³ÛDN!©L A°Áè´Áw@î«s£m]Y¯vU¿æW*&²ÜÈzþ#ÝYÚÑÝq^&i
FpÿÞZlBç"¯»Z?¼^Â(Q4Uw6§(Ù}cÍÒpýFzTdiqó!¯¿Ù´Tåu92|·ñç¿ RTaûLw]úQby>/tocp$|×ᥬ3v)
%Ñ 1×âó¸C©-½dàÀªÔîýlÏâ¸Ò«9^y5]Øq4üÚañéÅFGÕ [òÈЦ8òêDucï øëg°i_¸lêYÃÕgÞþR<ó5i>ßñ¸AajJTk5[Ìö#É&ÆN,`@â8Âý%ÕÑw®§]R¯Eί/}¸æåÂ,·>ø{Û8RfäWÉ\iûEëäÔ[ò<=lõµvïòwÛÚÛµ£.¥¡Ã$êéOý6nQæd6©÷öäÓÆ68ßLJ'ø J-q#.G¼ÂÈ-g}3þ¡Ñò¹ðûã÷öúÎ'á*çRùç16>·«ßiHgÏò>ó$¶·¹sêO'ÛÙ§·¥zÇ
¤®¹îÉ]ãPñ¸I¬
Û4´m¬ìà nØÝ©oáÿøå
ðÓ1ÓçÉeIÔdF¢
×ÍSØå9P,tÍmµEi®ué«giüï!5{Az_®¾Ú=UÊ9¼?¾þÜí5~Ëd)çá_Àìñ£ÕE$îxõ
áÞÅnúçºßÓk¶É}¢¾òhú8ò*2T3àÚCF¼È|tÔ)í¨ÿôßæ+{ÜÙaL ¾AKÏ«G¼=k[:Z&ÖÓÓ¤Þ[ILH~Ï6¢±f×C¢p¬²~}(Â;éÿFFÄTÏB<ÚB´Ø
!à{²cwí.|SX©W¿¡2×5ÍËw¬î`Ï:çöeéuq½¤gAØyÎÖW½oËÓçÍÃtElHdݪDÂ$Lé¨èA2Íi
-l<K)XÌ»ÏÈðM&<ñn'Æ0uËKW'f-ôw«"`W¬ó¤.öí<*'öÈÉ}Õ+N[beÞ 6â Î$W*ÈDh\9é>µnLNn=É÷Z1Õ^EÔ»1¢ø]_5` /Ø98ÿÝJù ëY&³dßlL-ä]ûZ¸¿ÊHF¨ ûÓÎÌì÷é
E£ÓòÉ&vÊmò=½ÒVâÇÇØgoeï_ò®ý$´ÛöÁÖ$r"gÕ«óFuªÄåóþáâR@ÍkÇïê2`-ÆÂsÕ¦b;PG¤¾f?ÄÉ«´dd>âÒ1såϸa٢̴çÞw¶Ûî<º½h"rygúäÙ:©¬·òU2;¯/:÷7¤¤ÄãY&L×FÅOÍèB°r¼i&¨Ô»ªÓB*ãºíy×S]L-}¼:¿5£á¯.wâÙh°ex@*¾¥x²!^#àÀR°w¥«eäah%Ù§`¹Ç,4%Ö<qj
Î(ú¶3Ôé¦O÷¥ÇÊënák¦RB>¾IÑN'nq(W¥^Ðï¿+i\,®ÓÛ¨oxM[YLG¡i¨X0~G>
DHqù½e~!RéÒEQ¶µ=Ç6mÏ$cD¤Óó}Þ£},9tÊ\OaÿÈ£VWòä_-÷óvèÕ&Ú³Lgt?t#f"²ºþèÿþOÀàP4åEÛþûû5Ôendstream
+l<K)XÌ»ÏÈðM&<ñn'Æ0uËKW'f-ôw«"`W¬ó¤.öí<*'öÈÉ}Õ+N[beÞ 6â Î$W*ÈDh\9é>µnLNn=É÷Z1Õ^EÔ»1¢ø]_5` /Ø98ÿÝJù ëY&³dßlL-ä]ûZ¸¿ÊHF¨ ûÓÎÌì÷é
E£ÓòÉ&vÊmò=½ÒVâÇÇØgoeï_ò®ý$´ÛöÁÖ$r"gÕ«óFuªÄåóþáâR@ÍkÇïê2`-ÆÂsÕ¦b;PG¤¾f?ÄÉ«´dd>âÒ1såϸa٢̴çÞw¶Ûî<º½h"rygúäÙ:©¬·òU2;¯/:÷7¤¤ÄãY&L×FÅOÍèB°r¼i&¨Ô»ªÓB*ãºíy×S]L-}¼:¿5£á¯.wâÙh°ex@*¾¥x²!^#àÀR°w¥«eäah%Ù§`¹Ç,4%Ö<qj
Î(ú¶3Ôé¦O÷¥ÇÊënák¦RB>¾IÑN'nq(W¥^Ðï¿+i\,®ÓÛ¨oxM[YLG¡i¨X0~G>
DHqù½e~!RéÒEQ¶µ=Ç6mÏ$cD¤Óó}Þ£},9tÊ\OaÿÈ£VWòä_-÷óvèÕ&Ú³Lgt?t#f"²ºþèÿþOÀàP4åEÛþP5äendstream
endobj
-97 0 obj <<
+101 0 obj <<
/Type /Font
/Subtype /Type1
-/Encoding 380 0 R
+/Encoding 395 0 R
/FirstChar 46
/LastChar 121
-/Widths 381 0 R
-/BaseFont /TDSYDT+CMR17
-/FontDescriptor 95 0 R
+/Widths 396 0 R
+/BaseFont /ZPOWMO+CMR17
+/FontDescriptor 99 0 R
>> endobj
-95 0 obj <<
+99 0 obj <<
/Ascent 694
/CapHeight 683
/Descent -195
-/FontName /TDSYDT+CMR17
+/FontName /ZPOWMO+CMR17
/ItalicAngle 0
/StemV 53
/XHeight 430
/FontBBox [-33 -250 945 749]
/Flags 4
/CharSet (/period/colon/F/G/I/N/P/S/W/a/c/e/f/i/l/m/n/o/p/r/t/u/y)
-/FontFile 96 0 R
+/FontFile 100 0 R
>> endobj
-381 0 obj
+396 0 obj
[250 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 0 0 0 0 0 0 602 726 0 328 0 0 0 0 693 0 628 0 0 511 0 0 0 955 0 0 0 0 0 0 0 0 0 459 0 406 0 406 276 0 0 250 0 0 250 772 511 459 511 0 354 0 354 511 0 0 0 485 ]
endobj
-380 0 obj <<
+395 0 obj <<
/Type /Encoding
/Differences [ 0 /.notdef 46/period 47/.notdef 58/colon 59/.notdef 70/F/G 72/.notdef 73/I 74/.notdef 78/N 79/.notdef 80/P 81/.notdef 83/S 84/.notdef 87/W 88/.notdef 97/a 98/.notdef 99/c 100/.notdef 101/e/f 103/.notdef 105/i 106/.notdef 108/l/m/n/o/p 113/.notdef 114/r 115/.notdef 116/t/u 118/.notdef 121/y 122/.notdef]
>> endobj
-127 0 obj <<
+132 0 obj <<
/Type /Pages
/Count 6
-/Parent 382 0 R
-/Kids [90 0 R 148 0 R 178 0 R 189 0 R 204 0 R 217 0 R]
+/Parent 397 0 R
+/Kids [94 0 R 154 0 R 184 0 R 195 0 R 210 0 R 220 0 R]
>> endobj
-262 0 obj <<
+241 0 obj <<
/Type /Pages
/Count 6
-/Parent 382 0 R
-/Kids [229 0 R 264 0 R 284 0 R 303 0 R 316 0 R 329 0 R]
+/Parent 397 0 R
+/Kids [231 0 R 243 0 R 274 0 R 298 0 R 313 0 R 328 0 R]
>> endobj
-365 0 obj <<
+354 0 obj <<
/Type /Pages
-/Count 1
-/Parent 382 0 R
-/Kids [349 0 R]
+/Count 2
+/Parent 397 0 R
+/Kids [342 0 R 356 0 R]
>> endobj
-382 0 obj <<
+397 0 obj <<
/Type /Pages
-/Count 13
-/Kids [127 0 R 262 0 R 365 0 R]
+/Count 14
+/Kids [132 0 R 241 0 R 354 0 R]
>> endobj
-383 0 obj <<
+398 0 obj <<
/Type /Outlines
/First 7 0 R
-/Last 87 0 R
+/Last 91 0 R
/Count 9
>> endobj
+91 0 obj <<
+/Title 92 0 R
+/A 89 0 R
+/Parent 398 0 R
+/Prev 87 0 R
+>> endobj
87 0 obj <<
/Title 88 0 R
/A 85 0 R
-/Parent 383 0 R
-/Prev 83 0 R
+/Parent 398 0 R
+/Prev 71 0 R
+/Next 91 0 R
>> endobj
83 0 obj <<
/Title 84 0 R
/A 81 0 R
-/Parent 383 0 R
-/Prev 67 0 R
-/Next 87 0 R
+/Parent 71 0 R
+/Prev 79 0 R
>> endobj
79 0 obj <<
/Title 80 0 R
/A 77 0 R
-/Parent 67 0 R
+/Parent 71 0 R
/Prev 75 0 R
+/Next 83 0 R
>> endobj
75 0 obj <<
/Title 76 0 R
/A 73 0 R
-/Parent 67 0 R
-/Prev 71 0 R
+/Parent 71 0 R
/Next 79 0 R
>> endobj
71 0 obj <<
/Title 72 0 R
/A 69 0 R
-/Parent 67 0 R
-/Next 75 0 R
+/Parent 398 0 R
+/Prev 59 0 R
+/Next 87 0 R
+/First 75 0 R
+/Last 83 0 R
+/Count -3
>> endobj
67 0 obj <<
/Title 68 0 R
/A 65 0 R
-/Parent 383 0 R
-/Prev 55 0 R
-/Next 83 0 R
-/First 71 0 R
-/Last 79 0 R
-/Count -3
+/Parent 59 0 R
+/Prev 63 0 R
>> endobj
63 0 obj <<
/Title 64 0 R
/A 61 0 R
-/Parent 55 0 R
-/Prev 59 0 R
+/Parent 59 0 R
+/Next 67 0 R
>> endobj
59 0 obj <<
/Title 60 0 R
/A 57 0 R
-/Parent 55 0 R
-/Next 63 0 R
+/Parent 398 0 R
+/Prev 51 0 R
+/Next 71 0 R
+/First 63 0 R
+/Last 67 0 R
+/Count -2
>> endobj
55 0 obj <<
/Title 56 0 R
/A 53 0 R
-/Parent 383 0 R
-/Prev 47 0 R
-/Next 67 0 R
-/First 59 0 R
-/Last 63 0 R
-/Count -2
+/Parent 51 0 R
>> endobj
51 0 obj <<
/Title 52 0 R
/A 49 0 R
-/Parent 47 0 R
+/Parent 398 0 R
+/Prev 19 0 R
+/Next 59 0 R
+/First 55 0 R
+/Last 55 0 R
+/Count -1
>> endobj
47 0 obj <<
/Title 48 0 R
/A 45 0 R
-/Parent 383 0 R
-/Prev 19 0 R
-/Next 55 0 R
-/First 51 0 R
-/Last 51 0 R
-/Count -1
+/Parent 19 0 R
+/Prev 43 0 R
>> endobj
43 0 obj <<
/Title 44 0 R
/A 41 0 R
/Parent 19 0 R
/Prev 39 0 R
+/Next 47 0 R
>> endobj
39 0 obj <<
/Title 40 0 R
@@ -2422,454 +2515,469 @@
19 0 obj <<
/Title 20 0 R
/A 17 0 R
-/Parent 383 0 R
+/Parent 398 0 R
/Prev 15 0 R
-/Next 47 0 R
+/Next 51 0 R
/First 23 0 R
-/Last 43 0 R
-/Count -6
+/Last 47 0 R
+/Count -7
>> endobj
15 0 obj <<
/Title 16 0 R
/A 13 0 R
-/Parent 383 0 R
+/Parent 398 0 R
/Prev 11 0 R
/Next 19 0 R
>> endobj
11 0 obj <<
/Title 12 0 R
/A 9 0 R
-/Parent 383 0 R
+/Parent 398 0 R
/Prev 7 0 R
/Next 15 0 R
>> endobj
7 0 obj <<
/Title 8 0 R
/A 5 0 R
-/Parent 383 0 R
+/Parent 398 0 R
/Next 11 0 R
>> endobj
-384 0 obj <<
-/Names [(Doc-Start) 94 0 R (a-common-example) 142 0 R (a-common-example.1) 70 0 R (a-final-note) 144 0 R (a-final-note.1) 78 0 R (acknowledgements) 146 0 R (acknowledgements.0) 86 0 R (argout-arrays) 132 0 R (argout-arrays.1) 30 0 R (available-typemaps) 129 0 R (available-typemaps.0) 18 0 R (beyond-the-provided-typemaps) 141 0 R (beyond-the-provided-typemaps.0) 66 0 R (contents) 104 0 R (contents.0) 6 0 R (helper-functions) 138 0 R (helper-functions.0) 54 0 R (in-place-arrays) 131 0 R (in-place-arrays.1) 26 0 R (input-arrays) 130 0 R (input-arrays.1) 22 0 R (introduction) 126 0 R (introduction.0) 10 0 R (macros) 139 0 R (macros.1) 58 0 R (numpy-array-scalars-and-swig) 136 0 R (numpy-array-scalars-and-swig.0) 46 0 R (other-common-types-bool) 134 0 R (other-common-types-bool.1) 38 0 R (other-common-types-complex) 135 0 R (other-common-types-complex.1) 42 0 R (other-situations) 143 0 R (other-situations.1) 74 0 R (output-arrays) 133 0 R (output-arrays.1) 34 0 R (page.1) 93 0 R (page.10) 305 0 R (page.11) 318 0 R (page.12) 331 0 R (page.13) 351 0 R (page.2) 150 0 R (page.3) 180 0 R (page.4) 191 0 R (page.5) 206 0 R (page.6) 219 0 R (page.7) 231 0 R (page.8) 266 0 R (page.9) 286 0 R (routines) 140 0 R (routines.1) 62 0 R (section*.1) 105 0 R (section*.10) 236 0 R (section*.11) 247 0 R (section*.12) 271 0 R (section*.13) 281 0 R (section*.14) 282 0 R (section*.15) 287 0 R (section*.16) 322 0 R (section*.17) 324 0 R (section*.18) 336 0 R (section*.19) 344 0 R (section*.2) 154 0 R (section*.20) 346 0 R (section*.21) 354 0 R (section*.3) 194 0 R (section*.4) 201 0 R (section*.5) 210 0 R (section*.6) 213 0 R (section*.7) 220 0 R (section*.8) 227 0 R (section*.9) 232 0 R (summary) 145 0 R (summary.0) 82 0 R (using-numpy-i) 128 0 R (using-numpy-i.0) 14 0 R (why-is-there-a-second-file) 137 0 R (why-is-there-a-second-file.1) 50 0 R]
+399 0 obj <<
+/Names [(Doc-Start) 98 0 R (a-common-example) 148 0 R (a-common-example.1) 74 0 R (a-final-note) 150 0 R (a-final-note.1) 82 0 R (acknowledgements) 152 0 R (acknowledgements.0) 90 0 R (argout-arrays) 137 0 R (argout-arrays.1) 30 0 R (argoutview-arrays) 138 0 R (argoutview-arrays.1) 34 0 R (available-typemaps) 134 0 R (available-typemaps.0) 18 0 R (beyond-the-provided-typemaps) 147 0 R (beyond-the-provided-typemaps.0) 70 0 R (contents) 108 0 R (contents.0) 6 0 R (helper-functions) 144 0 R (helper-functions.0) 58 0 R (in-place-arrays) 136 0 R (in-place-arrays.1) 26 0 R (input-arrays) 135 0 R (input-arrays.1) 22 0 R (introduction) 131 0 R (introduction.0) 10 0 R (macros) 145 0 R (macros.1) 62 0 R (numpy-array-scalars-and-swig) 142 0 R (numpy-array-scalars-and-swig.0) 50 0 R (other-common-types-bool) 140 0 R (other-common-types-bool.1) 42 0 R (other-common-types-complex) 141 0 R (other-common-types-complex.1) 46 0 R (other-situations) 149 0 R (other-situations.1) 78 0 R (output-arrays) 139 0 R (output-arrays.1) 38 0 R (page.1) 97 0 R (page.10) 300 0 R (page.11) 315 0 R (page.12) 330 0 R (page.13) 344 0 R (page.14) 358 0 R (page.2) 156 0 R (page.3) 186 0 R (page.4) 197 0 R (page.5) 212 0 R (page.6) 222 0 R (page.7) 233 0 R (page.8) 245 0 R (page.9) 276 0 R (routines) 146 0 R (routines.1) 66 0 R (section*.1) 109 0 R (section*.10) 246 0 R (section*.11) 250 0 R (section*.12) 261 0 R (section*.13) 284 0 R (section*.14) 294 0 R (section*.15) 296 0 R (section*.16) 301 0 R (section*.17) 337 0 R (section*.18) 339 0 R (section*.19) 351 0 R (section*.2) 160 0 R (section*.20) 364 0 R (section*.21) 366 0 R (section*.22) 370 0 R (section*.3) 200 0 R (section*.4) 207 0 R (section*.5) 216 0 R (section*.6) 223 0 R (section*.7) 226 0 R (section*.8) 237 0 R (section*.9) 240 0 R (summary) 151 0 R (summary.0) 86 0 R (using-numpy-i) 133 0 R (using-numpy-i.0) 14 0 R (why-is-there-a-second-file) 143 0 R (why-is-there-a-second-file.1) 54 0 R]
/Limits [(Doc-Start) (why-is-there-a-second-file.1)]
>> endobj
-385 0 obj <<
-/Kids [384 0 R]
+400 0 obj <<
+/Kids [399 0 R]
>> endobj
-386 0 obj <<
-/Dests 385 0 R
+401 0 obj <<
+/Dests 400 0 R
>> endobj
-387 0 obj <<
+402 0 obj <<
/Type /Catalog
-/Pages 382 0 R
-/Outlines 383 0 R
-/Names 386 0 R
+/Pages 397 0 R
+/Outlines 398 0 R
+/Names 401 0 R
/PageMode /UseOutlines
-/OpenAction 89 0 R
+/OpenAction 93 0 R
>> endobj
-388 0 obj <<
+403 0 obj <<
/Author(Bill Spotz)/Title(numpy.i: a SWIG Interface File for NumPy)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords()
-/CreationDate (D:20071122113500-07'00')
+/CreationDate (D:20071201111732-07'00')
/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.6)
>> endobj
xref
-0 389
+0 404
0000000001 65535 f
0000000002 00000 f
0000000003 00000 f
0000000004 00000 f
0000000000 00000 f
0000000009 00000 n
-0000007186 00000 n
-0000152864 00000 n
+0000007477 00000 n
+0000157982 00000 n
0000000055 00000 n
0000000081 00000 n
-0000007370 00000 n
-0000152778 00000 n
+0000007660 00000 n
+0000157896 00000 n
0000000131 00000 n
0000000162 00000 n
-0000024907 00000 n
-0000152690 00000 n
+0000025219 00000 n
+0000157808 00000 n
0000000214 00000 n
0000000246 00000 n
-0000025095 00000 n
-0000152565 00000 n
+0000025407 00000 n
+0000157683 00000 n
0000000303 00000 n
0000000340 00000 n
-0000028864 00000 n
-0000152491 00000 n
+0000028816 00000 n
+0000157609 00000 n
0000000391 00000 n
0000000422 00000 n
-0000029051 00000 n
-0000152404 00000 n
+0000029004 00000 n
+0000157522 00000 n
0000000476 00000 n
0000000510 00000 n
-0000033840 00000 n
-0000152317 00000 n
+0000032902 00000 n
+0000157435 00000 n
0000000562 00000 n
0000000594 00000 n
-0000034028 00000 n
-0000152230 00000 n
-0000000646 00000 n
-0000000678 00000 n
-0000034216 00000 n
-0000152143 00000 n
-0000000740 00000 n
-0000000783 00000 n
-0000043811 00000 n
-0000152069 00000 n
-0000000848 00000 n
-0000000894 00000 n
-0000043999 00000 n
-0000151944 00000 n
-0000000961 00000 n
-0000001008 00000 n
-0000051012 00000 n
-0000151883 00000 n
-0000001073 00000 n
-0000001119 00000 n
-0000051200 00000 n
-0000151758 00000 n
-0000001174 00000 n
-0000001209 00000 n
-0000051388 00000 n
-0000151684 00000 n
-0000001254 00000 n
-0000001279 00000 n
-0000051576 00000 n
-0000151610 00000 n
-0000001326 00000 n
-0000001353 00000 n
-0000066655 00000 n
-0000151485 00000 n
-0000001420 00000 n
-0000001467 00000 n
-0000066843 00000 n
-0000151411 00000 n
-0000001522 00000 n
-0000001557 00000 n
-0000074167 00000 n
-0000151324 00000 n
-0000001612 00000 n
-0000001647 00000 n
-0000074355 00000 n
-0000151250 00000 n
-0000001698 00000 n
-0000001729 00000 n
-0000074543 00000 n
-0000151162 00000 n
-0000001775 00000 n
-0000001801 00000 n
-0000079315 00000 n
-0000151087 00000 n
-0000001856 00000 n
-0000001891 00000 n
-0000003456 00000 n
-0000007431 00000 n
-0000001941 00000 n
-0000007002 00000 n
-0000007063 00000 n
-0000149802 00000 n
-0000144496 00000 n
-0000149643 00000 n
-0000143657 00000 n
-0000135889 00000 n
-0000143496 00000 n
-0000134543 00000 n
-0000119280 00000 n
-0000134382 00000 n
-0000007124 00000 n
-0000007246 00000 n
-0000003747 00000 n
-0000003905 00000 n
-0000004064 00000 n
-0000004228 00000 n
-0000004387 00000 n
-0000004549 00000 n
-0000004709 00000 n
-0000004869 00000 n
-0000005039 00000 n
-0000005212 00000 n
-0000005386 00000 n
-0000005558 00000 n
-0000005720 00000 n
-0000005873 00000 n
-0000006028 00000 n
-0000006202 00000 n
-0000006365 00000 n
-0000006528 00000 n
-0000006687 00000 n
-0000006840 00000 n
-0000007308 00000 n
-0000150625 00000 n
-0000024844 00000 n
-0000025032 00000 n
-0000028802 00000 n
-0000028988 00000 n
-0000033777 00000 n
-0000033965 00000 n
-0000034153 00000 n
-0000043748 00000 n
-0000043936 00000 n
-0000050949 00000 n
-0000051137 00000 n
-0000051325 00000 n
-0000051513 00000 n
-0000066592 00000 n
-0000066780 00000 n
-0000074104 00000 n
-0000074292 00000 n
-0000074480 00000 n
-0000079252 00000 n
-0000014642 00000 n
-0000011506 00000 n
-0000007526 00000 n
-0000014516 00000 n
-0000118366 00000 n
-0000109829 00000 n
-0000118204 00000 n
-0000014579 00000 n
-0000011768 00000 n
-0000011938 00000 n
-0000012109 00000 n
-0000108328 00000 n
-0000093622 00000 n
-0000108166 00000 n
-0000012280 00000 n
-0000012450 00000 n
-0000012620 00000 n
-0000093138 00000 n
-0000089111 00000 n
-0000092976 00000 n
-0000012793 00000 n
-0000012967 00000 n
-0000013140 00000 n
-0000013314 00000 n
-0000013487 00000 n
-0000013660 00000 n
-0000013834 00000 n
-0000014004 00000 n
-0000014173 00000 n
-0000014345 00000 n
-0000019465 00000 n
-0000018019 00000 n
-0000014752 00000 n
-0000019402 00000 n
-0000018209 00000 n
-0000018379 00000 n
-0000018549 00000 n
-0000018721 00000 n
-0000018894 00000 n
-0000019068 00000 n
-0000019229 00000 n
-0000025220 00000 n
-0000023033 00000 n
-0000019549 00000 n
-0000024781 00000 n
-0000023239 00000 n
-0000023413 00000 n
-0000024969 00000 n
-0000023582 00000 n
-0000023752 00000 n
-0000023922 00000 n
-0000024093 00000 n
-0000024266 00000 n
-0000024437 00000 n
-0000025157 00000 n
-0000024608 00000 n
+0000037303 00000 n
+0000157348 00000 n
+0000000650 00000 n
+0000000686 00000 n
+0000037491 00000 n
+0000157261 00000 n
+0000000738 00000 n
+0000000770 00000 n
+0000046358 00000 n
+0000157174 00000 n
+0000000832 00000 n
+0000000875 00000 n
+0000046546 00000 n
+0000157100 00000 n
+0000000940 00000 n
+0000000986 00000 n
+0000046734 00000 n
+0000156975 00000 n
+0000001053 00000 n
+0000001100 00000 n
+0000054710 00000 n
+0000156914 00000 n
+0000001165 00000 n
+0000001211 00000 n
+0000054898 00000 n
+0000156789 00000 n
+0000001266 00000 n
+0000001301 00000 n
+0000055086 00000 n
+0000156715 00000 n
+0000001346 00000 n
+0000001371 00000 n
+0000060637 00000 n
+0000156641 00000 n
+0000001418 00000 n
+0000001445 00000 n
+0000070466 00000 n
+0000156516 00000 n
+0000001512 00000 n
+0000001559 00000 n
+0000070654 00000 n
+0000156442 00000 n
+0000001614 00000 n
+0000001649 00000 n
+0000076495 00000 n
+0000156355 00000 n
+0000001704 00000 n
+0000001739 00000 n
+0000084164 00000 n
+0000156281 00000 n
+0000001790 00000 n
+0000001821 00000 n
+0000084352 00000 n
+0000156193 00000 n
+0000001867 00000 n
+0000001893 00000 n
+0000084539 00000 n
+0000156118 00000 n
+0000001948 00000 n
+0000001983 00000 n
+0000003576 00000 n
+0000007720 00000 n
+0000002033 00000 n
+0000007293 00000 n
+0000007354 00000 n
+0000154824 00000 n
+0000149516 00000 n
+0000154664 00000 n
+0000148685 00000 n
+0000140747 00000 n
+0000148523 00000 n
+0000139401 00000 n
+0000124138 00000 n
+0000139240 00000 n
+0000007415 00000 n
+0000007537 00000 n
+0000003875 00000 n
+0000004033 00000 n
+0000004192 00000 n
+0000004356 00000 n
+0000004515 00000 n
+0000004677 00000 n
+0000004837 00000 n
+0000005001 00000 n
+0000005161 00000 n
+0000005331 00000 n
+0000005504 00000 n
+0000005677 00000 n
+0000005849 00000 n
+0000006011 00000 n
+0000006164 00000 n
+0000006319 00000 n
+0000006493 00000 n
+0000006656 00000 n
+0000006819 00000 n
+0000006978 00000 n
+0000007131 00000 n
+0000007599 00000 n
+0000155648 00000 n
+0000025156 00000 n
+0000025344 00000 n
+0000028753 00000 n
+0000028941 00000 n
+0000032839 00000 n
+0000037240 00000 n
+0000037428 00000 n
+0000046295 00000 n
+0000046483 00000 n
+0000046671 00000 n
+0000054647 00000 n
+0000054835 00000 n
+0000055023 00000 n
+0000060574 00000 n
+0000070403 00000 n
+0000070591 00000 n
+0000076432 00000 n
+0000084101 00000 n
+0000084289 00000 n
+0000084476 00000 n
+0000014954 00000 n
+0000011819 00000 n
+0000007816 00000 n
+0000014828 00000 n
+0000123224 00000 n
+0000114687 00000 n
+0000123062 00000 n
+0000014891 00000 n
+0000012081 00000 n
+0000012251 00000 n
+0000012422 00000 n
+0000113186 00000 n
+0000098480 00000 n
+0000113024 00000 n
+0000012593 00000 n
+0000012763 00000 n
+0000012934 00000 n
+0000097996 00000 n
+0000093969 00000 n
+0000097834 00000 n
+0000013107 00000 n
+0000013280 00000 n
+0000013452 00000 n
+0000013626 00000 n
+0000013799 00000 n
+0000013972 00000 n
+0000014146 00000 n
+0000014316 00000 n
+0000014485 00000 n
+0000014657 00000 n
+0000019777 00000 n
+0000018331 00000 n
+0000015064 00000 n
+0000019714 00000 n
+0000018521 00000 n
+0000018691 00000 n
+0000018861 00000 n
+0000019033 00000 n
+0000019206 00000 n
+0000019380 00000 n
+0000019541 00000 n
+0000025532 00000 n
+0000023345 00000 n
+0000019861 00000 n
+0000025093 00000 n
+0000023551 00000 n
+0000023725 00000 n
+0000025281 00000 n
+0000023894 00000 n
+0000024064 00000 n
+0000024234 00000 n
+0000024405 00000 n
+0000024578 00000 n
+0000024749 00000 n
+0000025469 00000 n
+0000024920 00000 n
+0000029066 00000 n
+0000028194 00000 n
+0000025629 00000 n
+0000028690 00000 n
+0000093649 00000 n
+0000092259 00000 n
+0000093488 00000 n
+0000028878 00000 n
+0000028344 00000 n
+0000028517 00000 n
+0000033027 00000 n
+0000031674 00000 n
0000029176 00000 n
-0000027885 00000 n
-0000025317 00000 n
-0000028739 00000 n
-0000088791 00000 n
-0000087401 00000 n
-0000088630 00000 n
-0000028925 00000 n
-0000028051 00000 n
-0000028222 00000 n
-0000029113 00000 n
-0000028393 00000 n
-0000028565 00000 n
-0000034278 00000 n
-0000032498 00000 n
-0000029286 00000 n
-0000033714 00000 n
-0000033902 00000 n
-0000032680 00000 n
-0000032853 00000 n
-0000033026 00000 n
-0000033199 00000 n
-0000033371 00000 n
-0000033542 00000 n
-0000034090 00000 n
-0000044124 00000 n
-0000038654 00000 n
-0000034388 00000 n
-0000043622 00000 n
-0000043685 00000 n
-0000039004 00000 n
-0000039168 00000 n
-0000039327 00000 n
-0000043873 00000 n
-0000039488 00000 n
-0000039660 00000 n
-0000039833 00000 n
-0000040005 00000 n
-0000040178 00000 n
-0000040351 00000 n
-0000040523 00000 n
-0000040693 00000 n
-0000040865 00000 n
-0000041037 00000 n
-0000044061 00000 n
-0000041210 00000 n
-0000041379 00000 n
-0000041550 00000 n
-0000041723 00000 n
-0000041896 00000 n
-0000042068 00000 n
-0000042242 00000 n
-0000042415 00000 n
-0000042589 00000 n
-0000042760 00000 n
-0000042931 00000 n
-0000043105 00000 n
-0000043277 00000 n
-0000043449 00000 n
-0000150741 00000 n
-0000051638 00000 n
-0000048423 00000 n
-0000044221 00000 n
-0000050886 00000 n
-0000048661 00000 n
-0000048833 00000 n
-0000049004 00000 n
-0000049177 00000 n
-0000051074 00000 n
-0000049350 00000 n
-0000049519 00000 n
-0000049689 00000 n
-0000049860 00000 n
-0000050031 00000 n
-0000050204 00000 n
-0000050377 00000 n
-0000050547 00000 n
-0000050716 00000 n
-0000051262 00000 n
-0000051450 00000 n
-0000057536 00000 n
-0000054740 00000 n
-0000051748 00000 n
-0000057410 00000 n
-0000057473 00000 n
-0000054986 00000 n
-0000055159 00000 n
-0000055333 00000 n
-0000055506 00000 n
-0000055679 00000 n
-0000055852 00000 n
-0000056026 00000 n
-0000056198 00000 n
-0000056372 00000 n
-0000056545 00000 n
-0000056718 00000 n
-0000056891 00000 n
-0000057064 00000 n
-0000057237 00000 n
-0000062363 00000 n
-0000060535 00000 n
-0000057659 00000 n
-0000062300 00000 n
-0000060741 00000 n
-0000060914 00000 n
-0000061088 00000 n
-0000061262 00000 n
-0000061435 00000 n
-0000061607 00000 n
-0000061780 00000 n
-0000061954 00000 n
-0000062126 00000 n
-0000066968 00000 n
-0000065130 00000 n
-0000062473 00000 n
-0000066529 00000 n
-0000065320 00000 n
-0000065492 00000 n
-0000065666 00000 n
-0000066717 00000 n
-0000065838 00000 n
-0000066905 00000 n
-0000066012 00000 n
-0000066185 00000 n
-0000066356 00000 n
-0000074668 00000 n
-0000071529 00000 n
-0000067091 00000 n
-0000074041 00000 n
-0000071767 00000 n
-0000071940 00000 n
-0000072113 00000 n
-0000072285 00000 n
-0000074229 00000 n
-0000072456 00000 n
-0000072625 00000 n
-0000072798 00000 n
-0000072969 00000 n
-0000073143 00000 n
-0000073328 00000 n
-0000073510 00000 n
-0000074417 00000 n
-0000073697 00000 n
-0000074605 00000 n
-0000073868 00000 n
-0000079440 00000 n
-0000077408 00000 n
-0000074791 00000 n
-0000079189 00000 n
-0000077614 00000 n
-0000077785 00000 n
-0000079377 00000 n
-0000077958 00000 n
-0000078129 00000 n
-0000078303 00000 n
-0000078474 00000 n
-0000078646 00000 n
-0000086520 00000 n
-0000079576 00000 n
-0000086360 00000 n
-0000078813 00000 n
-0000078997 00000 n
-0000150858 00000 n
-0000087056 00000 n
-0000086816 00000 n
-0000089024 00000 n
-0000089000 00000 n
-0000093442 00000 n
-0000093360 00000 n
-0000109240 00000 n
-0000108874 00000 n
-0000118932 00000 n
-0000118670 00000 n
-0000135392 00000 n
-0000135001 00000 n
-0000144203 00000 n
-0000143949 00000 n
-0000150267 00000 n
-0000150049 00000 n
-0000150935 00000 n
-0000151013 00000 n
-0000152936 00000 n
-0000154863 00000 n
-0000154902 00000 n
-0000154940 00000 n
-0000155069 00000 n
+0000032713 00000 n
+0000032776 00000 n
+0000031848 00000 n
+0000032020 00000 n
+0000032964 00000 n
+0000032194 00000 n
+0000032367 00000 n
+0000032540 00000 n
+0000037615 00000 n
+0000036143 00000 n
+0000033137 00000 n
+0000037177 00000 n
+0000036317 00000 n
+0000036489 00000 n
+0000036659 00000 n
+0000037365 00000 n
+0000036831 00000 n
+0000037004 00000 n
+0000037553 00000 n
+0000155764 00000 n
+0000046858 00000 n
+0000041800 00000 n
+0000037725 00000 n
+0000046232 00000 n
+0000046420 00000 n
+0000042126 00000 n
+0000042291 00000 n
+0000042450 00000 n
+0000046608 00000 n
+0000042611 00000 n
+0000042783 00000 n
+0000042956 00000 n
+0000043128 00000 n
+0000043301 00000 n
+0000043474 00000 n
+0000043647 00000 n
+0000043818 00000 n
+0000043991 00000 n
+0000044164 00000 n
+0000046796 00000 n
+0000044338 00000 n
+0000044508 00000 n
+0000044679 00000 n
+0000044852 00000 n
+0000045025 00000 n
+0000045197 00000 n
+0000045371 00000 n
+0000045544 00000 n
+0000045718 00000 n
+0000045889 00000 n
+0000046059 00000 n
+0000055211 00000 n
+0000051395 00000 n
+0000046955 00000 n
+0000054584 00000 n
+0000051665 00000 n
+0000051839 00000 n
+0000052012 00000 n
+0000052185 00000 n
+0000052359 00000 n
+0000052530 00000 n
+0000052703 00000 n
+0000054772 00000 n
+0000052876 00000 n
+0000053045 00000 n
+0000053215 00000 n
+0000053386 00000 n
+0000053557 00000 n
+0000053730 00000 n
+0000053903 00000 n
+0000054073 00000 n
+0000054243 00000 n
+0000054960 00000 n
+0000054414 00000 n
+0000055148 00000 n
+0000060762 00000 n
+0000058563 00000 n
+0000055321 00000 n
+0000060511 00000 n
+0000060699 00000 n
+0000058777 00000 n
+0000058950 00000 n
+0000059124 00000 n
+0000059297 00000 n
+0000059471 00000 n
+0000059645 00000 n
+0000059819 00000 n
+0000059992 00000 n
+0000060166 00000 n
+0000060339 00000 n
+0000066025 00000 n
+0000063835 00000 n
+0000060885 00000 n
+0000065962 00000 n
+0000064057 00000 n
+0000064229 00000 n
+0000064402 00000 n
+0000064575 00000 n
+0000064747 00000 n
+0000064920 00000 n
+0000065094 00000 n
+0000065268 00000 n
+0000065441 00000 n
+0000065615 00000 n
+0000065788 00000 n
+0000070779 00000 n
+0000068758 00000 n
+0000066135 00000 n
+0000070340 00000 n
+0000068956 00000 n
+0000069129 00000 n
+0000069302 00000 n
+0000069474 00000 n
+0000069648 00000 n
+0000069820 00000 n
+0000070528 00000 n
+0000069994 00000 n
+0000070716 00000 n
+0000070168 00000 n
+0000076620 00000 n
+0000074796 00000 n
+0000070902 00000 n
+0000076369 00000 n
+0000074994 00000 n
+0000075165 00000 n
+0000075338 00000 n
+0000075511 00000 n
+0000075683 00000 n
+0000075856 00000 n
+0000076557 00000 n
+0000076027 00000 n
+0000076196 00000 n
+0000155881 00000 n
+0000084664 00000 n
+0000080955 00000 n
+0000076743 00000 n
+0000084038 00000 n
+0000081217 00000 n
+0000081388 00000 n
+0000081562 00000 n
+0000081747 00000 n
+0000081932 00000 n
+0000084226 00000 n
+0000082122 00000 n
+0000084414 00000 n
+0000082292 00000 n
+0000082465 00000 n
+0000082636 00000 n
+0000084601 00000 n
+0000082809 00000 n
+0000082979 00000 n
+0000083152 00000 n
+0000083322 00000 n
+0000083495 00000 n
+0000091404 00000 n
+0000084800 00000 n
+0000091244 00000 n
+0000083662 00000 n
+0000083846 00000 n
+0000091925 00000 n
+0000091689 00000 n
+0000093882 00000 n
+0000093858 00000 n
+0000098300 00000 n
+0000098218 00000 n
+0000114098 00000 n
+0000113732 00000 n
+0000123790 00000 n
+0000123528 00000 n
+0000140250 00000 n
+0000139859 00000 n
+0000149237 00000 n
+0000148981 00000 n
+0000155290 00000 n
+0000155072 00000 n
+0000155966 00000 n
+0000156044 00000 n
+0000158054 00000 n
+0000160078 00000 n
+0000160117 00000 n
+0000160155 00000 n
+0000160284 00000 n
trailer
<<
-/Size 389
-/Root 387 0 R
-/Info 388 0 R
-/ID [<147BAEFB1C45E6DE21D6FDE4D9EBE445> <147BAEFB1C45E6DE21D6FDE4D9EBE445>]
+/Size 404
+/Root 402 0 R
+/Info 403 0 R
+/ID [<7FE8D742EABD717D9C4609C5D01ED7BB> <7FE8D742EABD717D9C4609C5D01ED7BB>]
>>
startxref
-155382
+160597
%%EOF
Modified: branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.txt
===================================================================
--- branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.txt 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/doc/swig/doc/numpy_swig.txt 2007-12-02 11:28:35 UTC (rev 4522)
@@ -4,7 +4,7 @@
:Author: Bill Spotz
:Institution: Sandia National Laboratories
-:Date: 22 November, 2007
+:Date: 1 December, 2007
.. contents::
@@ -25,19 +25,19 @@
Output-only? Input-output? `SWIG`_ cannot determine these details,
and does not attempt to do so.
-Making an educated guess, humans can conclude that this is probably a
-routine that takes an input-only array of length ``n`` of ``double``
-values called ``seq`` and returns the root mean square. The default
-behavior of `SWIG`_, however, will be to create a wrapper function
-that compiles, but is nearly impossible to use from the scripting
-language in the way the C routine was intended.
+If we designed ``rms``, we probably made it a routine that takes an
+input-only array of length ``n`` of ``double`` values called ``seq``
+and returns the root mean square. The default behavior of `SWIG`_,
+however, will be to create a wrapper function that compiles, but is
+nearly impossible to use from the scripting language in the way the C
+routine was intended.
For `python <http://www.python.org>`_, the preferred way of handling
contiguous (or technically, *strided*) blocks of homogeneous data is
with the module `NumPy <http://numpy.scipy.org>`_, which provides full
-object-oriented access to arrays of data. Therefore, the most logical
-`python`_ interface for the ``rms`` function would be (including doc
-string)::
+object-oriented access to multidimensial arrays of data. Therefore,
+the most logical `python`_ interface for the ``rms`` function would be
+(including doc string)::
def rms(seq):
"""
@@ -236,8 +236,13 @@
* ``double``
In the following descriptions, we reference a generic ``DATA_TYPE``, which
-could be any of the C data types listed above.
+could be any of the C data types listed above, and ``DIM_TYPE`` which
+should be one of the many types of integers.
+The typemap signatures are largely differentiated on the name given to
+the buffer pointer. Names with ``FARRAY`` are for FORTRAN-ordered
+arrays, and names with ``ARRAY`` are for C-ordered (or 1D arrays).
+
Input Arrays
------------
@@ -247,15 +252,27 @@
sequence (such as a list) that can be converted to the requested type
of array. The input array signatures are
+1D:
+
* ``( DATA_TYPE IN_ARRAY1[ANY] )``
- * ``( DATA_TYPE* IN_ARRAY1, int DIM1 )``
- * ``( int DIM1, DATA_TYPE* IN_ARRAY1 )``
+ * ``( DATA_TYPE* IN_ARRAY1, int DIM1 )``
+ * ``( int DIM1, DATA_TYPE* IN_ARRAY1 )``
+
+2D:
+
* ``( DATA_TYPE IN_ARRAY2[ANY][ANY] )``
- * ``( DATA_TYPE* IN_ARRAY2, int DIM1, int DIM2 )``
- * ``( int DIM1, int DIM2, DATA_TYPE* IN_ARRAY2 )``
+ * ``( DATA_TYPE* IN_ARRAY2, int DIM1, int DIM2 )``
+ * ``( int DIM1, int DIM2, DATA_TYPE* IN_ARRAY2 )``
+ * ``( DATA_TYPE* IN_FARRAY2, int DIM1, int DIM2 )``
+ * ``( int DIM1, int DIM2, DATA_TYPE* IN_FARRAY2 )``
+
+3D:
+
* ``( DATA_TYPE IN_ARRAY3[ANY][ANY][ANY] )``
- * ``( DATA_TYPE* IN_ARRAY3, int DIM1, int DIM2, int DIM3 )``
- * ``( int DIM1, int DIM2, int DIM3, DATA_TYPE* IN_ARRAY3 )``
+ * ``( DATA_TYPE* IN_ARRAY3, int DIM1, int DIM2, int DIM3 )``
+ * ``( int DIM1, int DIM2, int DIM3, DATA_TYPE* IN_ARRAY3 )``
+ * ``( DATA_TYPE* IN_FARRAY3, int DIM1, int DIM2, int DIM3 )``
+ * ``( int DIM1, int DIM2, int DIM3, DATA_TYPE* IN_FARRAY3 )``
The first signature listed, ``( DATA_TYPE IN_ARRAY[ANY] )`` is for
one-dimensional arrays with hard-coded dimensions. Likewise,
@@ -271,15 +288,27 @@
must therefore be a `NumPy`_ array of the required type. The in-place
signatures are
+1D:
+
* ``( DATA_TYPE INPLACE_ARRAY1[ANY] )``
- * ``( DATA_TYPE* INPLACE_ARRAY1, int DIM1 )``
- * ``( int DIM1, DATA_TYPE* INPLACE_ARRAY1 )``
+ * ``( DATA_TYPE* INPLACE_ARRAY1, int DIM1 )``
+ * ``( int DIM1, DATA_TYPE* INPLACE_ARRAY1 )``
+
+2D:
+
* ``( DATA_TYPE INPLACE_ARRAY2[ANY][ANY] )``
- * ``( DATA_TYPE* INPLACE_ARRAY2, int DIM1, int DIM2 )``
- * ``( int DIM1, int DIM2, DATA_TYPE* INPLACE_ARRAY2 )``
+ * ``( DATA_TYPE* INPLACE_ARRAY2, int DIM1, int DIM2 )``
+ * ``( int DIM1, int DIM2, DATA_TYPE* INPLACE_ARRAY2 )``
+ * ``( DATA_TYPE* INPLACE_FARRAY2, int DIM1, int DIM2 )``
+ * ``( int DIM1, int DIM2, DATA_TYPE* INPLACE_FARRAY2 )``
+
+3D:
+
* ``( DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY] )``
- * ``( DATA_TYPE* INPLACE_ARRAY3, int DIM1, int DIM2, int DIM3 )``
- * ``( int DIM1, int DIM2, int DIM3, DATA_TYPE* INPLACE_ARRAY3 )``
+ * ``( DATA_TYPE* INPLACE_ARRAY3, int DIM1, int DIM2, int DIM3 )``
+ * ``( int DIM1, int DIM2, int DIM3, DATA_TYPE* INPLACE_ARRAY3 )``
+ * ``( DATA_TYPE* INPLACE_FARRAY3, int DIM1, int DIM2, int DIM3 )``
+ * ``( int DIM1, int DIM2, int DIM3, DATA_TYPE* INPLACE_FARRAY3 )``
These typemaps now check to make sure that the ``INPLACE_ARRAY``
arguments use native byte ordering. If not, an exception is raised.
@@ -296,12 +325,22 @@
wrapped function that uses these argout typemaps has more than one
return argument, they are packed into a tuple or list, depending on
the version of `python`_. The `python`_ user does not pass these
-arrays in, they simply get returned. The argout signatures are
+arrays in, they simply get returned. For the case where a dimension
+is specified, the python user must provide that dimension as an
+argument. The argout signatures are
+1D:
+
* ``( DATA_TYPE ARGOUT_ARRAY1[ANY] )``
- * ``( DATA_TYPE* ARGOUT_ARRAY1, int DIM1 )``
- * ``( int DIM1, DATA_TYPE* ARGOUT_ARRAY1 )``
+ * ``( DATA_TYPE* ARGOUT_ARRAY1, int DIM1 )``
+ * ``( int DIM1, DATA_TYPE* ARGOUT_ARRAY1 )``
+
+2D:
+
* ``( DATA_TYPE ARGOUT_ARRAY2[ANY][ANY] )``
+
+3D:
+
* ``( DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY] )``
These are typically used in situations where in C/C++, you would
@@ -310,10 +349,51 @@
returned as new array objects.
Note that we support ``DATA_TYPE*`` argout typemaps in 1D, but not 2D
-or 3D. This because of a quirk with the `SWIG`_ typemap syntax and
+or 3D. This is because of a quirk with the `SWIG`_ typemap syntax and
cannot be avoided. Note that for these types of 1D typemaps, the
`python`_ function will take a single argument representing ``DIM1``.
+Argoutview Arrays
+-----------------
+
+Argoutview arrays are for when your C code provides you with a view of
+its internal data and does not require any memory to be allocated by
+the user. This can be dangerous. There is almost no way to guarantee
+that the internal data from the C code will remain in existence for
+the entire lifetime of the `NumPy`_ array that encapsulates it. If
+the user destroys the object that provides the view of the data before
+destroying the `NumPy`_ array, then using that array my result in bad
+memory references or segmentation faults. Nevertheless, there are
+situations, working with large data sets, where you simply have no
+other choice.
+
+The C code to be wrapped for argoutview arrays are characterized by
+pointers: pointers to the dimensions and double pointers to the data,
+so that these values can be passed back to the user. The argoutview
+typemap signatures are therefore
+
+1D:
+
+ * ``( DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1 )``
+ * ``( DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1 )``
+
+2D:
+
+ * ``( DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2 )``
+ * ``( DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2 )``
+ * ``( DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2 )``
+ * ``( DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2 )``
+
+3D:
+
+ * ``( DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)``
+ * ``( DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)``
+ * ``( DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)``
+ * ``( DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)``
+
+Note that arrays with hard-coded dimensions are not supported. These
+cannot follow the double pointer signatures of these typemaps.
+
Output Arrays
-------------
@@ -402,7 +482,7 @@
array scalar as an integer. (Often, this does in fact work -- it
depends on whether `NumPy`_ recognizes the integer type you are using
as inheriting from the `python`_ integer type on the platform you are
-using. Often, this means that code that works on a 32-bit machine
+using. Sometimes, this means that code that works on a 32-bit machine
will fail on a 64-bit machine.)
If you get a `python`_ error that looks like the following::
@@ -413,7 +493,7 @@
`NumPy`_ array, then you have stumbled upon this problem. The
solution is to modify the `SWIG`_ type conversion system to accept
`Numpy`_ array scalars in addition to the standard integer types.
-Fortunately, this capabilitiy has been provided to you. Simply copy
+Fortunately, this capabilitiy has been provided for you. Simply copy
the file::
pyfragments.swg
@@ -449,8 +529,17 @@
The ``numpy.i`` file containes several macros and routines that it
uses internally to build its typemaps. However, these functions may
-be useful elsewhere in your interface file.
+be useful elsewhere in your interface file. These macros and routines
+are implemented as fragments, which are described briefly in the
+previous section. If you try to use one or more of the following
+macros or functions, but your compiler complains that it does not
+recognize the symbol, then you need to force these fragments to appear
+in your code using::
+ %fragment("NumPy_Fragments");
+
+in your `SWIG`_ interface file.
+
Macros
------
@@ -487,6 +576,9 @@
Evaluates as true if the data buffer of ``a`` uses native byte
order. Equivalent to ``(PyArray_ISNOTSWAPPED(a))``.
+ **array_is_fortran(a)**
+ Evaluates as true if ``a`` is FORTRAN ordered.
+
Routines
--------
@@ -680,6 +772,19 @@
string and return 0.
+ **require_fortran()**
+
+ Return type: ``int``
+
+ Arguments:
+
+ * ``PyArrayObject* ary``, a `NumPy`_ array.
+
+ Require the given ``PyArrayObject`` to to be FORTRAN ordered. If
+ the the ``PyArrayObject`` is already FORTRAN ordered, do nothing.
+ Else, set the FORTRAN ordering flag and recompute the strides.
+
+
Beyond the Provided Typemaps
============================
@@ -806,25 +911,28 @@
``unsigned int``, ``long``, ``unsigned long``, ``long long``,
``unsigned long long``, ``float`` and ``double``.
- * That support 23 different argument signatures for each data type,
+ * That support 41 different argument signatures for each data type,
including:
+ One-dimensional, two-dimensional and three-dimensional arrays.
- + Input-only, in-place, and argout behavior.
+ + Input-only, in-place, argout and argoutview behavior.
+ Hard-coded dimensions, data-buffer-then-dimensions
specification, and dimensions-then-data-buffer specification.
+ + Both C-ordering ("last dimension fastest") or FORTRAN-ordering
+ ("first dimension fastest") support for 2D and 3D arrays.
+
The ``numpy.i`` interface file also provides additional tools for
wrapper developers, including:
* A `SWIG`_ macro (``%numpy_typemaps``) with three arguments for
- implementing the 23 argument signatures for the user's choice of
+ implementing the 41 argument signatures for the user's choice of
(1) C data type, (2) `NumPy`_ data type (assuming they match), and
(3) dimension type.
- * Seven C macros and eleven C functions that can be used to write
+ * Nine C macros and 13 C functions that can be used to write
specialized typemaps, extensions, or inlined functions that handle
cases not covered by the provided typemaps.
@@ -836,7 +944,7 @@
The effort to standardize this work into ``numpy.i`` began at the 2005
`SciPy <http://scipy.org>`_ Conference with a conversation between
Fernando Perez and myself. Fernando collected helper functions and
-typemaps from Michael Hunter, Anna Omelchenko and Michael Sanner.
-Sebastian Hasse has also provided additional error checking and use
-cases. The work of these contributors has made this end result
-possible.
+typemaps from Eric Jones, Michael Hunter, Anna Omelchenko and Michael
+Sanner. Sebastian Hasse and Georg Holzmann have also provided
+additional error checking and use cases. The work of these
+contributors has made this end result possible.
Modified: branches/numpy.scons/numpy/doc/swig/doc/testing.pdf
===================================================================
--- branches/numpy.scons/numpy/doc/swig/doc/testing.pdf 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/doc/swig/doc/testing.pdf 2007-12-02 11:28:35 UTC (rev 4522)
@@ -242,20 +242,23 @@
/ProcSet [ /PDF /Text ]
>> endobj
88 0 obj <<
-/Length 3303
+/Length 3306
/Filter /FlateDecode
>>
stream
-xÚµkoܸñ{~
àÐ5eÅ§È ÷!M4E{8\ÜÅÝ!Pve{Q{×X/wýõ!%Q²\È+QCrÞ/*ü¬ü¬VLUNÕÖ1c4?ÛÜ>©Î®àÝ'`2LiSÃCáíZYcÄÙ:_äÏOþôn¹bRÁËË~/ÃYm\}v±ýquqîäªíÎùê´Û_¯eWïÞ¿
ç7áo÷çÞ·ÇK¸oàÚ´áÝëÝ
Lýùâo°9sÌap§êl-8³å~Á§á.pà:ÂÅàÚ
é6Ó5Rsw Ó¯
°3>yuHçÒ0a+à¢ÄÙ¼üÁWÇ+ù!ãT_ç<§òý§Ë""ï ÷p½}3AÃH¦a1Rz`k[.[ï¼õÌks^(äËOWð|ã¹#ÒÃ]#È ùj¯l÷]»ÃE#©àÃ>L¸=Àoíçݧ¥§ræ5hfÍ£¬ÊrÈWr&
Ð4¯0«·§@Rv¸¡=çÄ'ĨÞ<K~Á?mâÎ.A:#ÃrÇ@RÒPO¦¢È
3§µÈøÌWW%R53sBzO¹
ë®ßæµYZVkØ)Ll/!DºÍPþ£fÕnñ%'<ümOôHéDåÀ°õµ°¬ª~@÷ü:0QÀé²\`¯§4Æ*"×#¹õ¢B
Ùx ^M&WL?02µöt±¨Z©±Qð+ÒhV;ùXÖFðP/ºìT¤0õAöD¨övñ«áæ·×¿CAÛ¬vÜÒ~Cnÿ®ÒøÄȱ%| ûÿÆZz×è¦V²Ê1¥ZdîȤá¾Ã{«ù.Y-9@k°«2L;¼ àÃõ=\¯¦bµÜôN·yKhyÏÒ^ó&k`?%A
-Ü°JÀd#ü:05ÙɲË%AW&Fh4+A=°9øQ+k3Ü|KVRh7ÑW]ª Þ·¨mS¿
-Y².ó«ÈüY¿b"¿·§sQÒQâ±BJðË|.û_E$G~B´
-TÒ·¥<Îérn¬¤6b WÎU"Ô:&+hl"AEE¤U½j"1=â rGZâ#ý/·"ÆBePPåmsGÑÝ¿L{Ö-8 ¿½÷WûÈ¥û¨¤]æÓ
{r(Û0%hMÁG:ÉjkÅbòÒëB9¸TYÄÕêâ8@è$ívÑu¢èkY½eÉ1~Âmäig®Ñ}vÀMHºüýá2üæL
Çmd[ÏõD6]îîõâðáH »0J?ÀQ%àJ~AeÀ§<Äý} º7«qS@ÆX¦yJm¿9ç)=ÜGC
&WOávY 8À"_
9?x²,I)åê® j" ïQLø á/ 7kæ<l2¸Sø3 ®0§ò¼ ÍÿB׬&ûÙgÜ~ß!³¶¿#$WI÷õ:TÐêqVù,ZBâ%Èåjèïi³Óµç<VÕãîîTÈ}FÕòËh/Ç`ÅUÅâ)fUÿé´AtVÌèZKiY;JX0,Ö6©$víHÅ3(òÈu§Ì$®Âö×ú>J7Poe÷¬D T J_BúD:ÖÑÊK:wWÎj¥^eÓFÌÉfÆ,ñ4µ> ,HùÃZSF«©
>uè¤[½ðiX}Ú¥¢É¯Ìý@ÂÜd7L\BF,H%[5U©:3·=-yJ´D¾z0®a»Ðxêk"g¡~#OLA_JçX{êd¿ä«:¹«Rý'}ýç67¾¸H
-~ÛGX>GÀFz®ccfI\±÷¶·z!WNéG (y1{IæßÍßBàù8í@
x®])
-É -g:<£ÄV¾Dh<<2d¼ßÈ!©PD¿AtNÈËóÕO®²°÷åLôKqøy^ÕþUØü54©ðO*Ä÷Ø»®¾ëUð:©<Õù}È~8sGØÖS!£öåþõêæ«!mO6+v~< H{7´q?z¼Ú)Éuz"!ñcï
øúÞª :ðC7÷Âx°|Õ6d'úFW
v:¬¢LÀ{ 2åMxóé)þ Shbò61ò4Ç°tÐ5 0×ð:¤å%+´`ÚèJÏ4ÛÚ0gy\´gÀ)¤ìä½"Î^ýÈ1w¶IÙ~po29eÔؽ%ú±=å[iH©AÃuÞ¿ðYí^ÜL¿÷2J¼!=Á7ìç$WYZlâXC¨«E× hÍ°ÏÜ°yk[OÄ]ÉHÞ0̦ø@×ÃldU¡¼Ðµi7þ\/àúÇL«Oê/Å!FÎ_.6K#u=CiûÏ/¤°qrªòqU4ÃØ3ÑY¥J%V¿ÿ¨ûõ1õ¥«×è±|ÆLÀ§M_mc°a{OÏcç<øúé ¥X'ÌË\y£(S´3Ë;7¥µdK/ÉïVTOÇÀI®KPSÌfºä8Dàf/0·«î:z&y2姶inúZÈëds>z4tìæS0¥`Ä*+ÅÂÁ[N2¡®oÁtá}¦å(,3Da4Y8Ð¥¡BOÚkaM´¸¯WÏugö¤]8Íppd¢ï·Ædé"+´üßÑXáÐ(É'¶7'DzjNØö¸,ùÍN
¯EN3]91¨}¼ýüU¶ü|*·1¼\q´Å$°Ñ¤³ÅÇýÜΤqü\°¨û¬ JËæB_3Î+>bI|<K5|àÊhkrN
³ëWÞ c6¨ûZªiE·
@ÔaLfc#¯0¾ðß=ÓÖÉiþ¦Eß!é=K7ÆÓæ®ÐÝée,ºu*9âÒGRAÒ!RÖL·³}9³¢g³Ù´Ý|oÊlíÊ}æ·
-ElvZHèkíX$mii ÍO%BIýõo¾Ä|ý èóR3kàoKaF'¬ÈÀvLÿ1«gçýì;Ù/âÇý»Y¿ÝûÓ_eâ]l`o£éý¦§¯÷º¼õÖ
wÙõ*ñ)6ª¨aî×ÊÏ}ÊmOÙÎúTÙ¥¨7é(cIsq£, çA»¸íÐ*î[i£Xò#l;²Ô}/+
`Møñ#úÁOÀ´^ýw7>5î8¦i§Cr
-2ÉƪxÈÚeí(UQbÓÍ: Àî/wùóÎ"A-4Ëæ4çͲ¯èµ¥}1:ÜäeÀ3z¥ÝHqð;¬gaö-
'c$ùÐï¿%ïtÌtLÊÓ2úfh'_ÊÜ3ÿiõ4 þÕñéóy¥ênLa¿d¯aºG·
ôp!=ÚÅ`"¦ °U8¤Îbº6|çÇE èûa<}J
-¯Ò'¡ê¦m5üÒòÆJÃÜr&©¿¢wÿ.;j;I'á6ßù¨Z}ºN1¿çEFÚà´ÇçW[T\Ú³4ÖÞi£ú>~LZ1½?Úeçà©#)ªrµáÞûÖÛ[ïÜ9±õªvqJT¼/Äh
-Ø
ß<`¢1æ¾6ýú#-íêÅ> ¸iâú¿í1rUDML2iÑ]ú,$¶Nè£&¢p*Ù׸&ÏÃ>?ë΢ê6}ããÉ@<¿ôxUÔPgbC¶¾ØPM°ë8D"{f±U¡8âLÇåù7þT·=6yÄVÁÀCx´Y ¸èª}.Ü;ºGç+ÃLAÏE?öO´øÓ-)Ê×x.T(Ï&ÖFØ0ÿåf^dÄxMäÅ_è»,ÒSRÜtl æñS¡ô8De àªÈãòxð!a¼©·QqýHDèåíGkâöÇ6Eû,Xz³õ^æâÜj0ÍÓô;É*ÁÝWÌ"Z n¬²Væhu1£ÍerÎ2¡ëâ©ç:¬3 §DR´î.ÇÛ¥ÿQØï©Pendstream
+xÚµkoܸñ{~
àÐ5eŧÈîCæÒíápqw@ÙíEí]cµ¾$ýõ!%Q²\È+QCrÞ/*ü¬ü¬VLUNÕÖ1c4?ÛÜ>©Î®àÝ«'`2LiSÃCáíZYcÄÙ:_äÏOþô=ÜrŤý^³Ú¸úìbûóêâÜÉUÛóÕi·¿:_ËZ¯Þ¼}
ϯÂÞîÏ%¼opßÀµiûïw70õ׿ÁVæÌ1gÁª³µàÌVû=þSZ»Àuëk¦Ûl¶RL×H-ÎÝLw¾VÀÎ úäåE"KÃgó:ð_¯æ§S ~OðÊ÷.¼DÞÂõúÕ
#RvÅHJè
lm¸n½ó"Ö3¯EÎyA /¿T\Áóç2Hw '|æ«-¾"°=ÞwîýDRÁ }p{ßÚÏ»OKOåÌkÐÌGYå<¯äL
+¡i;_+aV¯O¤ìpC{Î$þ#Q½9xüÚÄ] tFå(¤¤[#> LEgNkñ¯®J¤jf8çôs×\æµYZVkØ)Ll/!DºÍP~£fÕnñ%'<ümOôHéDåÀ°õµ°¬ª~@÷ü:0QÀé²\`¯§4Æ*"×#¹õ¢B
Ùx ^M&WL?02µöt±¨Z©±Qð+ÒhV;ùXÖFðP/ºìT¤0õAöD¨övñ«áæ·×¿CAÛ¬vÜÒ~Cnÿ®ÒøwÄȱ%¼#ûÿDc-½ktS+YKåÖÒ-2wdRÈpßá½ÕüO¬ Â5HØÕ@&ÍDED^ ð¿áú®S1ÈZnz§
Û¼&´¼gi ¯y5° nX¥ÁË?`²~OìdÙeÍÎ +#4F Øü¨µn¾%«G)´è«.BUo[Ô¶©_
,AYùUdþ¬_E1_ÅÛÓ¹(IiÇ(ñX!%øe>M}À¯"#¿J¡KZªéÛÀRçt9·LÖ
+RJ±
++ç*jM´ 6 ¢É"Òª^5CÂDq ¹#-ñþ7ÂÛc¡2((KÄò¶¹£èî_¦½FëßÞ{«}äÒ}TÒ.LóéÂ=9m´¦à#dµµb1ù iÁu!ÉÅ\ª, âjuqM töO»è:Q@ôµ¬ËÞ²ÅäÁ?á6ò¿Í4Ä3×è>;à&$]þþp~s¦Âã6²Áçz".w÷Ézqøp$]
¥Và¨Lp%¿ É2àËSJâ~NÅ>PÝUĸ) c,Ó<¥¶ßón£÷QUÏ¡«§p»¬`J¯<ÙD¤rõW µÄ÷(&üÍÄðÇ5ó6Ü)üHWSy^Cæ¡ÊkVAMH}Ìì3n¿ïYÛ_«¤ûz
+K*hHõ8«|-!ñäòJ5ô´ÙéÚs«êÍqww*ä>£jùùe´cÉF°âªbñ³ªÿôÚ :+ft¥´¬%,kT
Æß»v¤âD@yäºSfWáEû1¢¾Ò
ÔÛbEÙ=+Ò>u´òÎÝ3
C©Ç£WÙ4åóc²1K<MÀ§!RþpÅÑjjÃOº$éVÏ}"Vv©èg²Æë s?Ч0wÙ
dÉV
fUªÎÌmOK-¯¥«E&CØ.4¢zÄÅÈB¨ßÈSÐä9Ö:Yàï#ùªNîªTÿI_ÿùÍ/.R
ßöOëð¦ëØÙeÒ"Wì½ím^áSúQ
+d^Æ^ùweó·PÅ%øvÆv <×®
+B
ä3GQbO+_"4G²DÞoäÍT(¢ß
:'äeÊùêJWYØûr&ú¥8ü|[ÕþUØü54©ðO*Ä÷Ø»®¾ëUð:©<Õù}È~8sGØÖS!£öåþõê§æ«!mO6+v~< H{7´qß{¼Ú)Éuz"!ñcï
øúÞª :ðC7÷Âx°|Õ6d'úFW
v:¬¢LÀ{ 2åMxóé)þ Shbò61ò4Ç°tÐ5 0×ð:¤å%+´`ÚèJÏ4ÛÚ0gy\´gÀ)¤ìä½"Î^ýÈ1w¶IÙ~po29eÔؽ%ú±=å[iH©AÃuÞ¿ðYí^ÜL¿÷2J¼!=Á7ìç$WYZlâXC¨«E× hÍ°ÏÜ°yk[OÄ]ÉHÞ0̦ø@×ÃldU¡¼Ðµi7þ\ÏáúÇL«Oê/Å!FÎ ¥ºMÈ!Ë´ýçRØ8¹ UyFÀ¸*aìhɬR¥«ßCÔ}|L}©äê{ô¿X>c&àÓĦ¯¶K 1Ø0=ħç±s|ýûtÐR¬CÃ@æåI®¼ÑH
)ÚåCÍRZ²¥äw+ª
'càÍ$WË%¨)f³]r"ð ³ç[Uw=<rSÛ47}O
+G-äu²9=M:vó©AR0bâ
áà-'P×·`ºð¾ Óò@¢0,OÅèÒP¡'íĵ°&Z
Ü׫çOÀ
º3{RÃ.@fN882Ñ÷[c²tCZþoh¬phd@Û"=5'ìH{\|fB§ÖÂ×"§®TÍ
>CÞ~þ*[~F>
+Û^®8ÚbØhÒÙâcÈ~AHngRθM~.XÔ}Ö %es¡¯ç±¤@>¥>pe@´5L9§ÙõKo1Ô}- Õ´¢Û ê0¦ ³±W_øï¿iëä4Ó¢ïô¥ãéGóWèîô2Ý:qé#) é)k¦ÛÄÙ¾GGÇYÃGѳÙlÚn¾7e¶vÌ
+å>ó["6»
+-¤?ôµv,6´´Ïæ§
+¡¤þú7_b¾þMPHLôy©5ðwË¥0£Öwd`»&ÿÕ³ó~Ë?öì¿ñãþݯ,_ïýé¯2ñ.6°·ÑÏô~Ó¿OÓ×{]ÞÇÎzkÏ»ìzøUÔ0÷kåç>e˶'Ålg}ªìRTt±$˹¸QÀó ]ÜÖvèL÷´Q,y¶Yê¾ÁÀ°&üøýÌà'`Z/ËÌÏÉþ»÷Ó´
Ó!9J
J dcU<ÈKdí²v@ªÇ(G±éf
ÌEI`÷;|yg esóÈfÙWôÚR¾Dn ò2à½Òn$8NøÖ³0û1Íü@hÅ÷ßw:fF:&åi}3´/eLîÿ¿´zÿjÈøÏôù¼Ru7¦°_²×0ÝÌ£ÛBz¸Öíb0ÓLPØ*RçG1]¾óã" ô}Å0>%
WéÃÐNõGÓ¶~iyc¥Ãan9ÂÔ_Ñ»µÊ¤pï| T>\§ßó"#mpÚ
Ïãó«Ç*.íYëAï4Q}¿@&ÊÞí²sðÔUH¹Úpï}ëíwîØzÕN»¸K%*Þb4ìÂo°Ñs_~ývõ| ÜÇ4qýßöO¹*¢&&´è.}Û§HtQQ8lÆk\çaugQu>ññd ßNOú?¼ªj¨3H±![_l¨&Øu"=³XªPq¦ãrü+ªÛ<b«`ࡼVÚ¬ÜVtÕ¾&IÞã{fr3qL±¢¼ÀìnILQ¾Æs¡B|6)°¶4bÀù/7#ô"#Æk"/þBßeúâ¦`5?
+¥Ç!Â,ã é WÕ@Ç ãM-¸ëG² B/o?Z·?¶)ÜgÁÒ÷2çVi¦ØIV î¸`Ñucµ2G«ìµl.s ]O=×f>}Ô Z¤pw9Þ.ýïÂ~ÿ¾Pendstream
endobj
87 0 obj <<
/Type /Page
@@ -336,32 +339,38 @@
/Length1 1213
/Length2 5760
/Length3 532
-/Length 6527
+/Length 6526
/Filter /FlateDecode
>>
stream
-xÚíw<Ûÿ·ÇmJµ65ªöÔ¦ÕÚ{ÔBØ´TQ]{ÚÚ/j¯ÚJÍU{Ï¢T©qóýþîïÛÞïýóÞ¿îã&ÿäyÎù¼Îë}Îûn ¡²=Ò¦tC ÉTµ
À 1aQrnnU#ÝÔ h,@(c Q¬8XVLÎ
PEºû¢àNh ¯*ßEÒ eW
-
¸´!h'+N
-A P8í+PF >á 0yÂP^0{ar11=ØÁánä"úÑts@¤ÿ¶Ç¸ÿ;åCyâLxq&ù 8öH7/Àæ@.¢Äõáüoú§¸Ð¸þ)ÑËB\áßÿÌ#]Ý1h
- ´¡ÜþYj
-û5m=ãúϬ&CÝ0è¿BpO
¸Ì^: OØ_qý?MàÆö
#c#-¿¶ùWJwCùºÿ-úgí_,öq³AÁ} ¢Â¢¢b¸BÜ÷ß¿¬þÑJÝ
´»á®¤ BA|Éq÷G 1 ÜÍæùàü»!ѸG ¸(ò?)! qòuw¹ýÿWH
- â[ÒþWH âC!À ¤ìo ½å%ÅpìýVkä óú¤4@Ä
þ»®@þ*¨þ"\^íoƵ¸÷7ÉD@ÄèáZÿM¸;(ùE8M»_;ôoÅÊþ7Äuý Ãoëÿ
qÂߧìúÅpÊn¿!Nùâì£~Ã?G÷âöþ
qçÁüBÜ¿ÏoSöýÿû
UQAúøB ÜþÄDÅ¥ Ò¢ÿ¥A¡`nè¿^~Ü=ÿ7;ÀqoæOO ¡r¡ÎÉ5aÅAêùÃ%Äüø*µ±:Uï?5S<ÃGô=ôà«4;+M£½±F¼Æá}ÎâÙ ? ñ5Ø#6eürÍËv-ͯÅì0MÛwÕóäéöÍƱ£I|ÝѹþâWæØ®Ìýîí\=^5£uÒ/@¼6K¯wmé¡RÒfiãðgwÄT)Åá³ÞT¯âf9Õ Ì 04gùd9 Nèc¨¡MâKütë;EØpªW½oÒ(Àñg2>ͧY´ao3ýÕmFöÕ#´½¾
-Ö7/¸¥¬æ
-VlÄl°¦^îÇç#Ëk|Ì.>²]|¢«g¶5¦äÛtr_èIÊgJYÒ½'lrýd°ÏùQ[Õq87"$B¾= sg4·?_urÂ4Úô2+Þè%"¿&líÊ&w#½QÜÜbaË6á4LÚ/â?·{ »Pùmü¨eÀ¸ÈiJ¦êþ$Ø¿Þ^ÈÕ¯Dþ |ÃsnVF°x2ê'l¿t÷";QQÛ]5ñ9gÌ2¹{øCpË£³´Ík¯E ôË5¤Û<(6f©ýuüï
&Ô³"g&eJ*4V2ãñ§f Õ¬§jJªdà½!
ê{.&Lìýûr3¦û¾[râºHóîoÍ£Ò/ªgNúãC_3.ÞWM W¯wY¾øÖ¨©(ñµÝ&+¦¦I,µ<SPÁTÇ%ß áÐñO¤8à N `Knóaèµd¹HO½Å"þQÌD_Nwп)ùgOÇå«t¬Ã
-Ù%Õñmj¯é
hïº+FRe!;þaHòï·¾ÕkZ
¾I¥x ö8ºø15ñ8§î0g*ôÇû4ízê|sÂpOÕÿu!»ÛøyuXZ{¨`©[àÓ tµôu²UÞ0¹Oµù,Ð ¢ àÌ'&4ûèv7·/9D)äRqüx§Ö£ÂÞUmØdr\ä
-ÜòÐI¬OÐKToøW½®&V·¼d6ç÷[ã?ïѽ»=<<Ä¿ü8ÉÊCØ./4öv»XÇ£À@ÞÊá
-ºhâ%Å<©bì§ ±0óWÝO¦UîôwÕlaMÚ2¨E×¹ý²ÎoÝE1JÍï·"õ>+Æü±½ÝÃ6v
3Y¯ÓÍ×ïë)ºÜ½µÌj/>àÓêñÖqL¡ÂĪhòàm
-nr-Lüáù!µ¡û¡ÇUjïŶe{æÓÜu«å
ý7Ò9|ýá @eTØÌG*b/)»
#|KséºZátu ºt5ù¤I±r
Îñ
-j»¹ôÆÊ_ÜPYÍvMÖ©ø5Püå^ÑY²÷e¿xÜG-:ºÃÓqÄWÂ"u¤Õ5°íj³¯Ú"ùÉÅ:È¢àb-O©´õÕHg-×}û1ðm£×®*ÞÝ.ñEnÎl{¬-hÐvÅëåP¬}#Í}ç
M¯ÜçB9´6õ¸§HrñÞù<¾+J\2qPºá¯®±ðíã#AæöU*Àg@U'kNÊ\dÉ>Wôª 5ÆèÄ<òôÌÄÈ$Ú|S<_.ê0ü|Þdùà?¨&ênÐ6Ö5O·SºR6xÓ&D÷~Jã1GôÌ>ºK)Ñ
ßíæóñE¶Uìym5ß½=æR Õt|Ïé
öú^B}[Þõ#ù¹ËDxbÁB P¾CÜjæ¦ál@íU¨ÒGe KÙ(Ä®
I¯[:/=/24«)£KQPb¾|rñUÖ?5Í<.¥£)jÊ~çÑãÙ³ØéÇøþÛå$Ml ÚP-̼Ëo«cì(2kVg¯¤á ç¨SͼuºÉ'o¨oJÌWºòw; ¨
-߬,4×Ó[H ÅDr;§û°-`Tãgòfrº$«ÙE©®*¬]Û²¨ÓLæ¹g3HúD¸a1ÞE?xT|¨Ü8»è½c²?¯ò°¦?bá¬Wúà-õ1ÿ3(ðÝJE4¶8«nÿÙ§¢>c]ìv2Ûµs;úü2¦\J-x©®, ôÝ=ÈÝÐQ6%h)ݵ{îiϵ<HßsàSTãÃæG ]v¦!}lÅ(ý2;odÁs¬³ómì¥Ä%37Î×ûãî";ùü_àÈë.YÀI¶Ñàlþø§E 'P
<¾!Î1r»æ*·¾-N¥ÌädÔ/Ü´l0ý$*:Ä¢R}äìÐá0¯ìå»w ¿PìJÓ¼ÖMº´¥¾ã0UbJAñ)Á¥ð)8ôxõ
ívëëä·ÏÓv(©)ÉDW#c3V°kã¢ïYËu¹1PÉ:Q-#lÐuë
ÈZË Ô¶©ür#ûyàµÃ«Ågø±øàTMRFþ~¸¢0ï`ö¥D^¥®Tq¯ ÛZö¾À.(ýª|Bݽ¾jO0Ñ"9îf[´ë® ÏÄè×LÁdVËvZ^fèbV@Ò=ç\$6
T¶ÔÂzà°`à5M¤/¯áIò¢åµ³lSðqxeÃ~|l¶×vØê2pC37eaÊ/ìÙ¼¹ÀueÛnÄõ ý¥«D^1y*õÀÇÓ4²ùyÙË ²s¦ªGSdGjT&D°p£¨ºÎsåðL®DbCÜ¿öNò4}è©`PÑð«µ|´ûâû¨~âg½ÝR§àÝ´qïö¨Ç©+ÁThZ$9Äâ+ñMµÙ_ßR Pl$Ob6Sk3Ã#Õd
Êî$ª94ôÁ±L'ÁÁ·Q«à]¯Ç.c}2ã´D&^È|÷t5ÉÑâ!»/¨æq³÷U¬Í:ZÄy¦K%¡ô.5*§î?ãÑ<fcv*»S½º«-NrFöÅ@SvgîcL÷ÏÂ3àwKA
Â/YÔùÞNEZzO£I¼$Å
Ü 7%tHøÏl©¯ÇåY|ç[RÏFJ*>çâë9äLw´7¡ à_ ±32ôIh7}.Ë[
-Q°&¸B õ±TÛtCÇugJ+M®3é·XCÞ}ÜðâóE:ì
j:¯Q/dÏBÙ»U&
hÝP+%®xéï§s4öá®éÚàÂgRöÍ"«<%ws+~ìK25Üßþ>:_fûh²Ó[ öÖY´3àçå"µÐÓ½åÆTNëðO
)¶déøçÄ$è81ta¾åyLʲ-´÷ÏCúæsÜÒY
-unqm3¦Ö7> ~|j¥<?¸Ú@ô:äEµ»ÃeäÄÜOBÇÑ!âìÔ,La"ù,ôÆn©v÷gÇÒJí¯
Þ+Tà%Yç0µ+_KÓõáñ ¬ô¬/@¹#VÏ
ÞoÕKFï»e¶²HÊy4UuséP^¬üYü+ Ø£GTÃxáªQÜ÷·áV®[}öîLeÅPÌ+ÑRBÝ|h4e¾á³-RÁyÖrSFn¼®nèrsx¶yz~TéHo¼ìtÕ²}ǾTû6Þ´A÷¸÷iþRÂ
-PfäYÉ¡î«´×´nü&F/ï´#N´À%×
vRØONÙFÖù&Õ½ûTóðúmVö¤µ®û¹Ü±=2HI,½`ö®û¸ÅèÜØËI¯?ÿ&ùb|Qt0#Çál7»ypE\Àÿ$`S{3$*DèöäF+ UÊÛòEàxþË(ßþCØ<9!>Äk+Äèy Æ°e½±ÚêÞñ!¯eñSsýW±&Í'prw±È6*<ðÇ3ÉÔZøeî«£ÛJQ/>E·ÃH'Ùêu"ÜÈ2¦íþ¦õKr]¹
ñĺ_°(ÌÕ9a¡¡
IÚfOÞ¼À·¦Â¼XqZ¦¸Úmjï1iÊóqkð'Ö-5oÉ+¯¬®Æ¿Ý:£³\bHx²]=æO½n¶ce)r¹vH;øiÌØ©É*µô©F)»®dÆù¼«Ðó²v7#wøôû·DNG8GHµ§Âwf_Üsåö¡OL0/ú¶[y éroÕ©aX>o¦¹U¿\õEésM'(,Ïßsô¨m¸*¢ÿð˪¯Fï«Õ0,p:î×ÔqtGÔik}»%'I?/DJò>¾)cxÙ~¼µÃ
.ðdL¨/\8ûÅë ¨wRÞCû4Áã@QÏÈK£7^È-Ú}Ò#g]ÎÁç5Å>òö½¶íáW¡eÎAZÝ9ú!.õNødrU8̱9>#-Ùjàmª«ãǬÜhúÁÞÓETUÛ«nÔûÒAWªRIS¶m7ªÌt2]^IçcÈîr×F¥-S5ϬÒÍF³3&Srëø2¼Êß«êâ§tÏ©Dùõ±>½² õ´Yé¸ó«éåçÉíN E¢Ð?JîêÜ,&º#plûàý±¿ÃulæJtäM·ÀV-O@mø¶8È
LÖèÍ*mÿ ~¿wúÜ6k)w`ôóøÞÙ:Î,ðþLîûR¤Æ7"Éq(K'Qº·Ãx:Ûpo
ºh¾Y¬78áºÝt_3,_ÍGD\`Ç'Ûshéübiìvþ¼O$jòY#عW<&Üqvãüµ¾+ÍôãáåÁÕïîH²§¿u½;Ú\!¥ûRæëçG´ãÓíéºÑàöþ|L?¡®¼«d_átØÁMª1/ͶçSA¦OªöÑÈJu/u&
jÔ¤· /ß1lOG%ÔÔ,Ó´I2ÔÆ"vfÒØxKO¸Ï3³í47ȸ¡ð¨>t´géßµ0ÍØ,L #2gïâg<U(ÿzÎ:}ûN ÷þºØîÿÁãµ|'göCÃUÊͬ:y%üÇmþÑ5¢o«`qñÀ&àÊ\¾ùt"þ^Dþ¦¬ã:ÚËs6¬'½Ê Q ånaÖ'ò%´H¶Ü¹?ò²znÏPé²ÿðxÖdS jØQÙ`dzZúã^©ëÎÏOæR [dÖ¼Åþwyêbm/I»_1~ØwÙR?rì[hk-*^Ô! Jöi¡w_WîQLÿ$÷5 Ò=ì`ÏÌ{êpb©9ÝÖF°x8Ñ8ÔÝÙÖ%ý¾1Io^µÐ ?íÊ""éB?h.ª<TÃ"ÙèrÐØçÉ!DÓò|ã0íÖqË6öõ;5ßÇ5Fñ¦ÕÅ,î¡ô¾MY>^ô÷;Üã=½AC]KKt×S{i1!Qéo^V,éä@\SÅae»¦Y%Øë~ê_»Óï÷|y#ªpÓP¨!ÜÀÔ¬ÖanÀÌhs W,ú^øËMòª£ùß5QÛW\úÞ7EïÒg¢:ªm\zŧöÒÑà1MW<êð?¸3l ÞÔx/O,Y±Ïéí=óßýd¨ cN5ùEn ïíÜú.#9î¡<ò©!±R(£
¼µÛÏÓñ¢Ô6#,÷f+O·» u±Pñ#¦8ÿéVù^s¢÷#pdæÊî¶xØdŬÎD´\§×µ6R0uÔ1/Ô×ò¯¨æYVÆoͯÁ¡v°í]ôú{Øv-$½-x¦§zt:ã~[9ÃqÄ?©ïTâ²Stßæõjzò¸mIï¬2Üj_yüÇQË]|OR
--|´»ÞÆ:¾Î!ëaöå&"øühb9F9°Cítbw<>8¹<ANÑÂ2ü`ð×slðEVô@T>)ÍbkÉAöê P£³µlm$6RÁÁÍêa©÷mÕÏQ(!àIݪË,`÷6>¢Èê]Èû¢Î^½dèp[©âCª=òéö4U#h6Q~yî
-MÂÎÜ["HÊÕ'L{¶»~§S=mäl{YKR
-TXÔÊ&t©,W°j³°o3ò
¯ÉöÃâ× æ=½i¬¿qù"v®I°R<É¢6YRÅ$Åæ?Ëq¯=N»^:À§K»úËöæBÑJüM-°±ItVé¥ïçáWéI¬®&ðµü
-Æ/¹Ñ½²b¹snÕ÷ñ:ô¹»úm.}oT¿»¬²JIIÅV©þ>à ½^yøpoÚñgSJ½ëæú×VJ®ªÌ^ÚÕw§w7×s¥*Áz?9y ¬C7YJ¯¾ùÓ
éö\oÒÃÐ¥Í0ضc°Ö3]Òh¦
Ãó¡L/}]òh7öe¶]ÿ E5sâ0;ª}tá^ãppê{H¯Å¦K*ÑM^¿ª>tíf¸ÌÂîÅõj±ãíöé¸Ìwô«ñºÙWæÏ$6ñü?ç5KàOËe.ÌÏ Epzo9«t)¶ò
3¿Òtw>ÑÁw«êä´ðPΰ?¶T·JWdé×þÁþì¸üiÃûWAéë´ÆÙRyê's×R ËÝnª1"ÌWç`{Ò[Ä ¾.¶rrvë[عFøëõ£@êþ·£ßÊ;ªvÝø´Pa¥âÒoÆ¢Ç8ªZ£s±X¹«HiÈZûHO üyÖþc]+CPeûÖRÞÍïSäG¶Fók÷0d~ôdß»1ëQHBTWè7T6*àcÁë-¥ð%áýÓÂ/áº46W\üAëßbZ at 3È$Bâ¤T}±%ÉÒ%ÇÉëu>ȱÆQ±K]ÞåfØ®xîÄø"zM¨\+ä>^Þ8ðíÉ+f¦úGETVu³
µµÀI5¦¬¶ÅÊûÜ 5 °1QjJ÷"WÓ¾_)9XµÐWð
C¼È Ï XëÛâ²h1«ï)³jÎ!´%ýJ_§RæFi3÷аrèÀÓ{Qgl't³eB56=p|M¸ûÁËêm¢ÿÃùÿü"`é
-A¹ÿ÷0endstream
+xÚíg\kÆé ÒAj"½
^¤Qz/RBBB¥÷Þ"=ô&AªTÞ« Í9ï¾G÷ìÇÝOûÛäKþ3ó\sÝ3÷N ¡=ªpC È T´
¤"¤*H(C¸©QP´´@ í D$dD¥eÄ¥I9*w_$ÌÑ àVáù³H ä
+E `76åuÅj@Àp!¢|Jp8ÀàÏ'<PO(Òj/H*"°AP ;¨#ÌTèO?nä¿Âöh÷§¼ HO¬) 7Ö$ kÑá÷ØCH
tØ^P¬ÿ
SÿWGÃá:`×?å±3úoY°+îûy«;E´öP¤Û?KM¡ÿ²¦
µ¡]ÿÕDá0#
+þWæ©óÚëÁP'î ý+u³ÿ§ ìØþ² d¬¥ª«§Ê÷×6ÿJéan(#_÷¿Eÿ¬ýE~1v6HÀRXPXX[ýþûÕ?Z©¹Aö07ìu H°/)ö^`Ià/¹ÙC} P¬_!A7
+û ;@Iúç2ÅÄBN¾îNP·?ãÿ
+I ܱKBØÿ
+Iü Hį4@áýÅ
B(ï_yq,;!¡¿U`yB½~ë#. rý.íAÀ¿J$°%*¿Wý$±-4þ&)Qá/ý"lkã¿ {
À¿«i÷°ÇüM"ÂØSÙÿØÐßrø
±]`¿!Vþb]¡VÙí7Ä*#~C¬}äoøçè~Cì~P¿!ö<è_ýWòù
±Ê¾á¿¡ÊÊQi »?aQ ¤¸pà) H¨ê¯{ÏÿÍ0ì[
ú@!¤3l¨sJmXIZÁH)!/®²c]¬NõûO-dϦãpá
ý<xç«ÌÎËÒ©o®³y_0yF6èª
öM¸Z÷²]O÷k`2;J×ö]sg?}¶s»©vüxWWwl~ $ÑÓuг§Çj´AüÓnéõ®=#TBÒL=nþ¼ê(Ð"Õ£$B,|Î"1`nøYs8I=ßì!¢Mu^@põø6ÒÌ&j°ÌKc°¡°[ §¸]yÝÕ÷V1àh¬~&1è×|Mö6ËQÍfô~H-BÛë+C³ðSÂj¾pÕFÏÆ ópúµðA|¢¢ÖwجñòÓËå'F[cÚ)}@'᥸\%Í{üf×Oì¯èØè8õÉó |ÄÛ³Jª8Çxi~sû³¹
Å1''t±MHÒÑîÁXÒÆ9®,²·2êèEÍ-·mÎÂ$ýÈyój8s®Y&Zæ é*î?@ü»E´KH7=·iæ©¥øKÉ£~BÊö.Óí´=YÓé_°Ç+ÑqºwJNöÂãfzi¾uãÑ~
ºd»yÂ楿¿FhBk¡0bV¡pJª´Róg#N9oZ&PÕj
þ pº¶´Z
+Ö/¬Ù5Ñp1c`8½5=ðÝÕEH=ZÈrÓbÎ=|iT\3{:²äü~éJltÍF·%þËoM
+²;l²c¨EÒ*²øåM%¹Ü
+p
à`ÿ$ÉC6Ê2vº>K¦Ë;L¢e¥h+h¶ÄywÇqt\¾JÆ:\"Y}QßæW^ðønð»B$E6¾ëêø®Þ¦)hç[fUè42Q±Ò'Q?¦'äÖåNþxn¤¾Ó@9[`î©Òéß ·®æ0ä`u¸(¤lIb
å¯3u<g,"¿NµIÂgÁ1(¶ååydrÃæßíáäð%+&\*OïÕy4Ñ:££j1Ñ[kÒ
y|÷\4b´â&5þÕ¯kUã-¯Mã9`Ö¸/zuïïsGë¯<I¶ò´Ë½Û!Òù8°4»êE¸¼î!0wY!_"¤ó)hv<Ì<±çiñò½^ãîiU[h³¶rÉuþ ¼ë[OqbËÑç{m!½Ï
+1ìì´ e1MÝáGÒ7iÌt\îßÙCdwòhõzk:¦R c5¹p6Ïø·8'GÿðüÉÜØóHÑãÁ¥÷RHû½TóYÞÃÏ:
+5ôrÆ[ì@<pP Í
+2löce:ÇW?IäGÜ¿á¿¥ºr]«tº>^Ö`N9mV¨ZGg°%Bl·?RYùª0ªÚ®ËØa²¾~r!ß/>Oñ¾û¨ECst3ÿjIÀµ°ºÁåâ
áµ_oõ×X¤<½\´@Y^®á(µ%Û
+uÕq<°¼Û1zíªìÝã_ìæ̹ÏÜíT¾î4X ÅØ7Q=0üxÖØè¾à8ʦµu¢Ç4½LtóNÄçÉ}a²Ôɸâ]u?\5õÅo²v®Ó >BÌ:Ù{4æBÛöÜÂ×
ñÈqz'ÆÙÔï ç&F6DÑvÒ·Ed£Â/LVßøj£î½aa^÷t{8+aãÀ?cB ñSGq$¢wî¹ÀÝ<r±.Lø^O/¢½rßk»ù|âþÝqïÔBæ
§7Ø(jùöü«ÇróWI°¤ÂÅ@ \§¨Õìm3ùjÒ§P̱52ÜÜ°.,s"]~^lhV[N*¯Èx+åôò«Zºy\jgsÔ´íîã'sç±3ñw+ÕY´!ZèQîLfÇØlDöÎ~iãaîqªyÛLGÎPߧlõ÷NNP.}»ªÈdBOo1c_ÉVZâPáòbv!PáÍÍí¡Fb;¤¸®´vmϦL7YàË$êâtÆxoþhæRö¡p`ï¦õÉù¼Æe8Èñl½A~ú·ÄÇÏ ÀOv«Ñìúçûu1;),ëΨ«
+ M|4üZ
+t¤ïÞaÞ¦z)^cØìlÙÕÂÛOãx!`ÜÞC¢´ \?<È3ñ+zÉ÷lä9ù£$]Ýèoã7ÈÅ®9Yt¶º>pÚ-à½úrC|·ØpÌN±çðÆ?+=
¨ûàð³Úµ¼T¾ómi¦<u67³añ¶e£é÷ ü4áa&åcgN¿%/ßíüCýÅ Dd_Tºæâåmµ]éÊTSL²O .E/¥COÖÞPï$[¹¾¼¹Az÷"}Dx-2f$s³>±¤)ü¹B
¯ÖRæ;ÆÝ´Þ«¶Bl*®6s^[;$.>ÇÅÅNÓ$¦ç)rå\åWéJôñ±¬×jðí2®+&Õܪ÷ù,³in·'CºïpM®}É ÇLe·î¤Gèe
.et*j8ç!0éLÄús½ÄvGx¯©"}¹
OS,oÜ»dMÀªâcs¼NµÃÖVûlÜ©Ó~aÏÌùnRØîrÂoNê/_'qÈQ¨>¡)ÈÏY_0<<T9&9V¥øü(!ÂI |Ø}'{8hr-âþµoë°äCo%²º_5ÿ« ½ßÇô>8ëí9ï¥OxwD=I[
¦@Q#HÁ_ATðo*-þú|E"£ùb³ÔYZ[i&«4V'aÍáá'tå: ¾MZ
ïú<ýóèRègIJpB~àºg¨§
+Û}A¶L½ç¯fnÑÑ"Ì7].
Õ¤u©U>sÿZä2s·SÞ.,ìÓ]ku5Ñ´M*²:ãq&$£[9m¼[þ*ê|õXIçít¤¥÷XÞK\ÔÀKL÷Üòf\¾Åwöùeµx¸<ÑÑ396Þ#öp~{2<ÞE"{#CfXË×2ÜE¡`yk¼k8BC±C3¼tRÞ¥¸Úì:q9äÝÇM? n0Ot¨Ã~¾¦ãÈ:åbæÉ\!x9µ_åxÊÚ1¹Zêñ.|&Wnî¡-]ô\¾Ehë²ô~®cåqÆÓ[áÛ3ßÇÊÃlOuyóÅÞ9rf âÿ<¸R¬zöª¯ÂÂiö©(Õ¶k $÷ð¡M1;&Ìwªb+AI¦úÁE(AsÿB®[SÎ6³ú´¦§!ÁOάÆ× ^¼¬1¢q »ÿ¯þ¤+?DA!L¨ÖØ-ÍîÁÜxzý!"ynÂÙ
6S»r!¹°¤0]/!.ü*ÏB¤»1|íBàývxtðA
+QV¸ÜÇÓÕ·7äD*ÇÏ»0Q<qD6NÅM{iã¸ÓdÿðÞtvÙ"59ÄÍJSê.Ëå9k=/uôÖëÆi§8ç[gÇU´À«.W-Ûw¬ËuoãMûèt?z¿$á-ïe5é&n¦¿^²¤vã51zõ¨~ª%]zS`7õôetg2EÞ«¥_%gÀ&huq_¢Dá¦Ëý¹YÛcÔ¤²KFïúÛôÎýÜTØÚðXÅo2Y/'2#QqLhö³Û×
l¸O¶´·B¢BîNm¶ ÙeÜ_øN¾ñ¼1ÊBéIéâC¼¶C^ Ýð[7jܪ5N
¹,K®IZ9JTÑ`L{»E¤IÉä¡?aLÖêØÇ(s_Ý6²Ñi]z~éí> üÍlcêoo8ǵÛ0W¬û%¼Á|½ÂZ¬möôÍ;>\k
+ÌhÀËUײë½æ>!æ|§¸FBÝrPÓÉɶÒêÚ*,ìÛsëÀeºa°'Ëõ3QA®´{áf»VBWëGÔC¶¤é»4%?Õ
+0äTòÎÎ:_tw z_Õíe°¥q}ö«Õégé¦ôçÌGzÎHcØFü¤hÌ¿íUÂbÜÛtjéV.Z(¤î4¬TQü\nÁ
+Ë÷÷;n©. ë?Jb:UñUOòáN\à gânqLDwFµ5tèX²
p%ÄàJÒw¼ÀY5Rä²øGÊòÒ
}èh@´|'aà=U8|@,>±$£ó¿2zã
ئ¾Ò'>vÖezA_ûØYä#wÿù;IÛ^qZælÄ5]cOà¢ï´ O÷É×ôGBpH[¢iCÐb9âmv Ѧº:~úÀÍFܽ-Q¤EÕýfp/
dµ:8`Çv³ÚÜJ'Ñ%Q² mDr³.*}e evf.>
SÇî@ÁVXu7µg®\9BÀoàùÙµe±§Íòlç½Í¯>OíLv )þQz_çv Áõcûï®ã³×£ozøþ°j}öllílÃû¬ÕAêx<d¸V¯|ØPqç%äè¨Æ-ÈÛìå¼Á±Ïãft¢Ó8ç;iDùä ÷gRßWBµÎÜdÉÃÙ:IbýÕ\ú³¹F
UÊF
~^i½¡I×æ+ÜÚ
øÂB;Þ°8Þ#KçËãÔýBQSÏ»é¥ûDcH'¡·å¾à©ö_kf¬
+®}wì2øCò=í=Ñæ:t©=WR_??¦æðé¨ÊÐî(° Èò³èŹNñÌÞ¦÷Òl1dú, Zþ
%WóRóa¯¡KK~tðêí1}°ÉfÅpTQL@Õ2] ëA],|w.÷±Ôñù¬:3ÚÎpò@ÇûþÓÌíÈ¢i¸bÖÜ}ÜÌgò_/XÒfîÞàã<Øàs¶{Ç{ød½ÀÉõHýhs|+»^N÷I»?ßPtðÛjhe<>°¶¸ú!Ï£!&·^0j.ï<õÑå¨'çK®Ñ©j¹[õ}É-æ§t~&"¯Â1T¼8:3Ùâ«Þ\V5Y§ýÐ(sÝýùÉ\ôcÞ?³4ð. ßRM¤ý%>qO"ý µCûè
¶ÖzÑñJ¨©Âe=¼¢hzÿuÕ>¥qÈÌO9_PAØ£NÖ¬üg§³9ííxKGMÓÉÝ]âïS´æÕ« uÚ³îì¢nÔÃâª#U
&w
yñLF:ìÃØRoXµlg-ݸWû}|H}gFÍZôáð>Rïëù´å%¿£È}î³$A1uÔ÷=µçbuþæåµÒ.6DéåEF¦G!`&YÌÅ°á§>á{~/VæÙ2!ò·
) Ã
LÍêlàæ& ô¬!pÕb 西\ù·÷]¨4rÇòúKÿûf³è=Ú,dgK£èô~Jz\Ó2üNúL<Àã7µD¤+ËV¬FúãûÏý÷¾$#è*¥Ñg¼B·P»w¾KOx(~jLªÈBëE¯Aö4ܨAÕH8ÆBÕYËN7 >"ÚxìÙçÊ&Ù&×gîoAð~ô"¶¬<½V/"Ìá
þ¹ÖôºÖFòÆ ®ÃzÆÅ:ÞU|kêø
5 t¨]tgµñºSÎamíɼ¤ÝQÊtõOî?»¡£j¥$äê·õF4"nG\yôÑûb '³§êW.ã äJ`wÏÓÔ£cGmãä·±C¯sIz}9 ð>?\£R
+ì§b9ÜN©¡Up"³?¿Ãñ|#ù¦U at L@µÔVzó£& Cïì_#ÓjD£sp³zTæ}h[ý3Óa JxZ¿fåòØ{«(¶zkòâ¼ì1×,:ÜU¬¼áP!³êE~º;CÑËWd]¸B1³·eñR²
3®çGßiÔÆÎØÛßdÕѤ!å7µrðù]k«JĬÚ-¬â;âÇMâ}æ`ë2Ðøuyoß#*ëo>ÆcðݧÌdO³)MUÐÉ1ü¹Ã%ÏsÝ+eNÒo
òÞëÖ®ùr¯ã㺹@´bos+t|
+]v¥èû9B01#ÙÕ¶ÞYp8YHFÿ%o(ºOfSäg®Ñþs^a§£Ñ~w÷#¿åïMj÷W×ÈÉ)XªÔÞgÚâÕ¡6ªíÏ8þ`Hmp½×²H»êÚFÎÊQ]ÕG½öîìþÖF^ D´ÞOv.'H ó0Ûm¦²ëoþ4aº½7õpÁT$i@%3t'&³ý$¨õ\8!HÝðb8ÝÇ£§C[rÌ%Çyc70c`Í4Âì[Ôh îE~o©á´ÚtK$¹©ÑêW7®ßZÜ»¼Y#r²Ó1õN|-þPw2çzÄôE£Øÿçü1ÜÙ¬Å
yvïmgå#
6ÆDMwçS\·êÞ
!v{ ÷ ±¹á,ëëH5«
H&©Ñ¬ÏO©+~7¾O¬
+ªÊØ 6ÎÈWK:¿
+Yé1sR Ǽº~ôÛß!¼Lð=Tos±µÛØÆÌ7Á^o2Õ¼ûîtôHÎÑT¥¬»øÖ§ÅJ+e`z|5ÌVÝÁÈ^ßBH×;F{ùX`/:µ íÚàlüÊÃwóo&=¶5ZX×@lúÑ\~ïAoxD!ðÝ¡ß9È
_è¬W·Ã+wξëRÙ\sðm,z~iÍ"ñmOZ
%FDËWl§¯7xÀ'êÇ%z.õùW/¡{¢yÓ\
+¨u
+"t8í~zÀ·§»´ .)¬4ëçëêSªpMm/ä9A!ë@`SÄ´îe?ºc J|¨z±¿ðh·Þ¿ÍaÑj>ßÐ[6oÕ;e+Lü¶^¹ÜÜfþa
ù2Ác¾{¦Qç,§4såµ6½0¨\+U¸ª,ëᶫjíÂÿÃéÿüÀ¡`$
+á
+Fºþk0endstream
endobj
100 0 obj <<
/Type /Font
@@ -370,14 +379,14 @@
/FirstChar 45
/LastChar 121
/Widths 104 0 R
-/BaseFont /FFTUTL+CMR9
+/BaseFont /ULDOPD+CMR9
/FontDescriptor 98 0 R
>> endobj
98 0 obj <<
/Ascent 694
/CapHeight 683
/Descent -194
-/FontName /FFTUTL+CMR9
+/FontName /ULDOPD+CMR9
/ItalicAngle 0
/StemV 74
/XHeight 431
@@ -403,11 +412,11 @@
stream
xÚSUÖuLÉOJuËÏ+Ñ5Ô3´Rpö
44P0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22°25çRUpÎ/¨,ÊLÏ(QÐpÖ)2WpÌM-ÊLNÌSðM,ÉHÍ£ZR©§à£ÒQ¬ZZT¢Çeh¨\¢Ç¥rg^Z¾9D8¥´ &UZTtÐ
@'¦äçåT*¤¤¦qéûåíJºB7Ü4'Ç/1d<80äs3s*¡*òsJKR|óSRòЧBçY.ëYìª kh¢g`l
-È,vˬHM È,IÎPHKÌ)N§æ¥ ;|`èûúykCã,WRYª`P
æ"øÀP*ʬP6Ð300*B+Í2×¼äü̼t#S3
Ä¢¢ÄJ.`
+È,vˬHM È,IÎPHKÌ)N§æ¥ ;|`è{y¸zùiCã,WRYª`P
æ"øÀP*ʬP6Ð300*B+Í2×¼äü̼t#S3
Ä¢¢ÄJ.`
òLª
2óRR+R+.Ö×ËË/jQ MBZ~(ZÉI? ´©% q.L89åWTëY*èZ
644S077EQ\ZTWN+ÀàñÓ2AZÌuóZ~²uKÖômm+ë\_XŪÏùóÄÚ7ÙDì¨Rl:/P1½dÉ«
¶öϾ(ál=U¸hd¯_OÜEÂk¶v-X1¡Át¿Þ`ñÊæ®i¼ÿ´Õ_y.1§õ´Õþ¢Ç³:un~Q®?Á3/å
SÔâ}ßï]ãÒ
¤¥$e~sû]F1ñÊ»Ï/ËÚQ?ý¸mò»³·|<ÄݺÔ/¦Ùq'}Iüö+6ìâEíÀg¯¼xT.òGÀ¿gtÅÙ¥vÕGU|íª®¾~ª]üRÇëÞ
_kü9¹öË:½{ápËñGúý
îûd}dN<6Îø-uBÛoHºÁ=c¦MÏvHÎzºq½aûÿìRKë~,K̳}¬ËªÂå»m¿÷Öêyoù~ÉîÃÜ×v
Û_¹éÜÿs>§ß¶.#ßÒߦíÈè{/þôÉkÜ<nÈeà[»«×?Ñí[ïÁ§÷ºÞâdÚeãHð1Îcê+öÍ_èeÍä7aÕ-<Ì
{fýß_áþZ#MzîáUü.G?=¨=ãûp®Yõ'åǶ/¨Tñå}[}âWè:)ïÓ»ÚÕÎÖ0Ê3íÿ±:oÝ;K©æBÊû.l½ñcc«yEá2ÿ
-óî-ÆצÈWµýþdöä¡_Õ~Ò+ áiïsûs`ª¨C¸¾îuÞI^>öÉ\mü|¢Ðr¢úÿXöÑñßϾØadj|ïÇéÖR/ü,2 p0,HÎIM,*ÉÏM,Êæ \rendstream
+óî-ÆצÈWµýþdöä¡_Õ~Ò+ áiïsûs`ª¨C¸¾îuÞI^>öÉ\mü|¢Ðr¢úÿXöÑñßϾØadj|ïÇéÖR/ü,2 p0,HÎIM,*ÉÏM,Êæ «5rqendstream
endobj
84 0 obj <<
/Type /Font
@@ -416,14 +425,14 @@
/FirstChar 15
/LastChar 15
/Widths 106 0 R
-/BaseFont /MLVPVK+CMSY10
+/BaseFont /JHEJLR+CMSY10
/FontDescriptor 82 0 R
>> endobj
82 0 obj <<
/Ascent 750
/CapHeight 683
/Descent -194
-/FontName /MLVPVK+CMSY10
+/FontName /JHEJLR+CMSY10
/ItalicAngle -14.035
/StemV 85
/XHeight 431
@@ -443,53 +452,53 @@
/Length1 1548
/Length2 8704
/Length3 532
-/Length 9615
+/Length 9616
/Filter /FlateDecode
>>
stream
xÚíeXÛÛ¶î"
âÒR,¸»»Cq/Å5@°@ÚâÅ)îîÅ¥Hq+NñâîE{²ÖÞgµg÷~ºÏMò!¿wÎ9Æ;ÆÈ>¡¡PÓd° eÁPVA²;]F
4
ÀÒ¦P C@ ápò8ع9a4ØѲ²è¥þÚÄ°B@æ¦ eS¨5ÐÃÜÔ 6¡¬ ;;Æ_'@g ÄhÁÆÁ° Cf at +Û_ä,Á ¾É.ÿ½ä
-8ÃLèÿ¶É ´ ;Øy ,hl*`X6 ÌËÿ
[ÿ\ÖÅÎNÅÔþ¯ðwêÚì<þ½lïèB Ê` Äá?·ê ÿeNhr±ÿÏUy¨©È\ÂÁÊ`ÿr¹-Ô@Psk âü[:Xü§XçþvÀ¦¡¦!¡õéßCý{QÍä Õòpü'ê_»ÿfßkäÐgõ¶öþïoÿLÆÁlr°pòðL!S4ØÏF<÷ Ð tfcu CaG °x,Á´¿&ÊÅ
`srCfvüKä°9!æ@è?7;L3
ì¨ÿVÿ5èd.lçâü[¥1ÛÛþVx lÖÖ@ßïßiA`ß̳©³õ?
-ÿ_ìÀ¿ñÂ< \Lûç
ÅøM°R¿I À&óñÁªýM0J¿ vNù7Áòªü&XÕEí7qÂÿ`ÐüM°>hý&OíßËþö7Á2èþC°Í ¦æ¶@èÿè¿ ×?úÿ ,´løgs0ø[Õô{°Ì~,£ù?ÄÁ+Êâü«Ë ¬HË?æÃêiýÂÌþ@ Û?æÂîÙ°ÿ°çÍáÙ ÿ0 ,/äåuþa
þ0. ,¯Ûoäåuÿay=þÆÿý¬KJÝß³pX8¹x |\°ß»×ÿØfî=#пïQØ}ñßl ].@ ;Ðmal.hÔ\â-7QÄ/iõ9F¥®ë[;zÀ|,¼]á¢ãJí»»²T<Ìm¤mr·bçð¶ê£²'~N1É3OÛ®&Û©ÍÄïÎS=¶)o°Z§/yàU§VKtóû2NûrÔ襵vP¾SÀuë»Öw§òò½MµÓ ª¥å¢ÐÀNv* åYvÃN{¶<àmÚÄ´tnsÁ½ËCÍ2»5GðçÌÿ<n#ÊBÄ¿l mu»üÑð5 ®®°Æ,²;¥2bºÅa¡õf±sb]³¥¦Ûnúaã¹ã(ÑÎW%z g#2Yg2˱m+Þ±sÉ\¾LKS=2èå'Ñ×ãxþ"U kÀnz8Ñòÿl ^ûÂ\¾,.Ýr©÷A¡*î' |¤În×eç~,ê/ñ$|åÙCÇÜÞîô94?xhîÉ»¼éGx2®É%m½$öm^.Ói~*@,ÝC]`áÏd¤Ø¥xdúP$ȱæ`Vº=·zÞS:¥À¾à@P@
-A»ÂZ+ìÎ(îBàæ6KÀ)îmD|Ü"¨/¤b·<zTo¨<q²Èô;J^o`q[ :È&Ìm= c|±·<µ¯¥æ¡§Þ?ÝÛ/¦sèZ`ôivïvGZbSðº/ ÏV;ðªÂ¯DÝW½¬{²9pcuxÇÊJ#
-ºÊiè@òíaäe'» T´Í£ úðaJÊL3®Ag
ÅEO|³ni
Ñ<}ô7¯ ?8)¢f¾aܶ°«{°®µuAërE^"¼£ñýZÑoH%/xì4¡A¡QìDMRI(°|
-Ñ8R4òX6qU%0
->ͼËr
:¿BðÐsÓ©ÃVTupw&¸Þ¼ÖÌud*ÒbvB¦pFa§oîÒN,©gâÚY LPàwâ
-øf®pfW=pÁÏÇ´±³/_ÚâRyÜ·¼>ßiýFX×·¬TkÄ/ѵ²Næ>ðýG4cgï
f|\²Ru5á="
vUΣtL~7×¢ÖE'U01èø³®Ú-6)gs8uOZq*~dúÀêBCü ÙÎà)R½îJYÂ±È ôú<¤|ï¼ø¥9:È]ÞLì)³·Bàc¼´cÏ2ãV»àÂYÄÑî
&Ó4ùá³âb~çõbÿNSÈÅFÏ$-:»¯]mDZÚ$ß5jw®pó
-{
{g²W3"ÎÀ."A$Ðý`qÓUÁEßQÒ1ð1öÓiûjÈ$2² Ô2eR!#ñåm at Aÿó9
-ÎO*_¨Ì÷Ö¢BmAùÄåoÀÙäÛrçÞîÖj¦#0õ#ÞÑà8\RöÓ-½Íxá-%®ÚWàv¨ä·ø:)
ø+ú¤!àd¢EûþY"·²¼vg*ø`æNÞ±^'Æú¬£Òí81ü´ùn´û5Y/AÂÃVcbMsÍ{A£q-îkDÜòhy7Gkô³Ùeº©_ÕÉÂu§©Ò²Ý¸ó
¼àÃî½{XrïÐ;é}2#ÆÔõw6Dt}¬BÏ,sô,|¶3:èÛÍ6ud7ѤO´ßì´PüȹáOá¯JÞDÎáðähhíËÐòg/<òæ!¿xRòûh726b>I9ÄÁU¿¦£Ï¸w³
Ó;§éîºf5á+¸/è_¼´ÿ3z çá!{]4ÙùÑïÕÁÅ°Éýjt%c캦ZöpáÕ?[?»Åa
-io~u¥-eR"~ÿlu§_¸Êæ=ÐýÖÙîWÐýL»ótXÄ«Å59¹½
à\p{ù=d!
º0 ¹D¿³>t$3ns%Zà¨òEØÕ¹¿ÍE
È[³q¥$ò 'gbKÚu¤×²øúUÔ[q
-÷§ÇÒ(µ¥»lìOüé s@;ð?Æ):NµªHÃ_²E ¦K]~ÈË9Èmd±Dþ4Ù4ðªïkõ!K½¿X4ÛUå#{xY¨r¶+@á[ͺf#SlüºÍÚ.@Ø/Ë=Ú¬kªÒE
-TíN/Àª¡Æ¿2a2t;ká¿Aê¹Xd:#½M
e$]!ÌsÌþ³é*¢ØË9 ³"-qÓE]Î$×îÓVRsʤ{^×ÑÎv0³ùFú¶-':GäêQ;Ï-A|æ>׬×h®åúS1^rePôð®Z[£ì+ä¬?)0H¼$~{ʽ¸££(TUð¼sXÇ%@{ÜtàÙ8]HjÍ-¹¸_F#ÔKFß¹åªßVýLAvÎ1òhú%(¯I* ½³WS¢P$bp¹}©y3B
û¢¤å¹í x þ˽3÷ÀCLÁùy<ð6Úü(ÎXDä}ã¾þE©àÌrF&ãhÉ®úÐ;}xÜpxÇ T÷.Ù°YßDÝ»éÑ¢ÕøÈ#;éuf¹Pýøð¶öñÂÀR®.õX%É.Ø&í+§ÄÅNà\v2»áü¨&æónUÚÌ3»}c½¬$,¥H"¿_'£brô¢4íNo µrciµø/Yx$|Íwûr¬G\V.Ó·ÝúO«ÎåöºMtÒ¹÷&X{ið^£=|úÆ\§²: ʲb%Ïد:=m®uBëÅÊKõ0ã𣨿ðjà¡ mñWJWv/½Õ¶íO=-ZZÚv®
-hò5ûA¿éÜ"¨tÎ)?ÿÞ¥v·ÞhûÛ`Q<óv¨
-¿ñ°×»)¾ÏdLmï.&iÊ48á$±ÏETZ ´/Ê1ý«#t^®H-ìûnõ#²Lr!°L]7lô¤h²óD
Zë.VÔ"dnSÍSRbÓtN{§µÕIßõıè?¸'ú2ûp3!?Ùn·dg%»÷÷ª_£8"åeoÀc ,_ÃewE59Å'©=2õ<
-î®mÛ¥"GklJÄFY] f iÁ©Ò8ú®É#@¨8br6àR+;I(fß1¦!×<'÷öÿ6\W\
-ÇÅãYRAWØ$k~𢢧.BÈÉ*õÐw]¡A>k'ñBõåûUcoÉüñ_¨YäªÊßôwâfä¢57ßí¢EÕ|%*úÿÈGÇ|¯}à?Û½"
ÂyK7ª¾/<SÄâbòùÝ-#Y¬-LÂ?x8FëÏØFjüÃ
^oJzF§}ªû«÷ {+¼áÕ5¦sbú
-+ÃýC÷uÐL?ÏN!q"Ý6!iõ%Î3íNÒÈôñ¯±Ë¢mñf´CáOg4TÏɶüùqC:ÇþH£ÑäâNÿ´jCjîÜyw«JLϴɬ&"+æEÂ2[Ù~iÝfÄãK¸Þ,ßêÈEä¥RR^þA¥ò1û#ëTÎÙMgkÐnJ¿¥EB,æyæk§þ¢þköpÓµÚoC1ÊN¥Üí.v§>õKÊ\¬³à¬=]ä}´nd]ÅxÆÝx6 >½yöj×bêTwMje®çÝÆ®¶Î´ÙÙÓÆÚô]|*Pc5iÄ|ö&E° XI4Kï,,Û¿¤ÚÌʲb Ö×ZÓ^NãõÓ"©¶Ûµ¼ípË¥ôpI¶©!3ù:R5åoðY×zÕBɳ%V03^rÙ¤Õmkt¬-h(eËìw³õ*º;¶þ¤ÐZÌ)×T¹v¯H;$ÖM¾ÙÛði¿ÚòçTyÿ¯(iÊÅÒ׳P©SC»WÅ?òö+m¸,úÄ
?,«¶ÀºïjÕÉÐê>vy®ßd m{«]%sÏéã
-ͧÖÇ[ª 'ö¨ªz7BäCd_SûmßVFÑã3ÆN$y¾¶ÃÎ"ÎqÄâãzÑ¥Lª¢ù]?lV»ÔÞWÄríÊ
Û+ºÌ
^©n)Ö'ÎØ®È »ÝÝzØ=$_åµúþËi&ÿíÜXJÿ¦8÷è¾ùÓôÀ©ÇÉjÉlIÏqr×eEAVö;ºÂüìMK§çWÉ(¢¤»µu3k#te&ÊúS}b=é]^µ®¸âÓMHêê}Ḹ5üVÂ÷Ùf
LàÊ<:
7þ×rª7à=VáVßOÞ
-!R÷,pjr=ÒïrîìÆ´dá'2#û>F*UÂëu¹úÁ¹vÇ"úU¬Ã3½N¢tDkHÖ«ÆLöwêk7ïnÊU
-d Kwm³G§V]ýߧÜPµÓ©{Õ'ÊR¿ô÷ËËÜ`§¢NƸÞýWÀµË?;±e¾Xa´RsÒP@`UÉúÁÍïf=7±³R?üA¸¥YXú¬'`p]þú
âçoû(ª51C½e¬dèúQµ&÷Þu
-Çv$fñy|Yõ6+M©òrFì_ .Ù*©AÖ\Jzxú\³%DZ@Æîn°âÔQ²¹=)[BV°g}åÀ®õÂѺÕè°^OîççÎÆørg¶dÏîÂmÞç÷G/LT¸ëýG"< "µÍ¤XÛì6ñDf º}[q}=îtFÐ\c=dë$Z_eöó»`<×3r£Ô~4·,LïÐÓí¸À¹BÞ¶>e@kx"¹VYµ¶DN@ì-Ïòøã «m¡ñEZGߦÜ#[Ým#*:
YuS´ÈÇðc¬Çlúdõç¹¹JS¿ÑÅ01[{W½Àûâ©å[ß3Ë'ͱ¨ÍuTE¼>HÙ7zâ*áIÛìa±Í¢~î1«v¨û´$¢&sÆR´CL5#!z)EJ:]Év°àq^ -Hhüª;Zr2?\e_çðnÞ(RPçï.âXíþèPb¹¼ÅÛ?6Ä0`EÅwé òSr|nóÌZr0AÎÞÅpÒþ&ÓÖOK7ì''?Ê?Rjçþ¶cÅ{0Ô~xà0Þæ%kÅ1j.)à?;Ü àªÏ4É ÈF,% d>ù`,ûX¸]èrÚ¾
u23Vá9ã ×ÉVäÉ*ÑOÅf5¯o~aÆR!Vm*Moµ8"%ıh÷wY~ÆdØ£ß0&&¹X¤:*Ò±';±9@Ý/sÄk*-F©Cg±ÜÍâ|!`½e¢ÌÈ\UAÿÑûÛô±ZiR)eWÇÓ¹Û¹
º÷òrB#u+ú,¢¨f{ù3{
-8ÉÁ67?ìnm)6 ·xUÜcÙq6T$®â¦o¢(*d!£ÍÝåÊv
-!ÆB$UɦãB/â'MØ+én½MÇ^+çÅ÷áÅÖÌ0ùÇÐ2ÓôFè±XÄ&©ð±jÛÞéïé6p½
·ëDC m_S 麾|5B|o`Çi# X¸Õ¡°Hûúo'ú>vò©
³:ö|±Î¦ëé¢+'áôÎm¯6wÒ§nGyËAÆJ]Nße2À[»0¦îóÇf:ÛJúêSÚÓl ´!ËÆ,Ij>i,QD×D¿ £y½=PxoFÃgát"<nþ)}ZT1±{æÊ[V¯
-'جEß
H¶q²9æO9íÌ.ìñ®$ÈƸ1qeÀã8åÝð@±'îyùMÑ5¢^bAò(E<ùMGÅ¡gÖrlÝI D³sX½ú"g$r>;ÏîÏÔk
-.K½*Þ¥>ÓÙ^KÎ\ FÊÏyÂ
-£ëyRLæ=
pá`wÓÚWá²Ü=dop¼«ü 2áéÚ±Éö8pjH¼
(Ö¿bbQ¼Èa~81§»6§J³Sî$¦H=.X@K<ÞíÏç"z²J«ý¿àûüËiµ¿ÁÉÔÈ¿äbMYïY
-ÊÌÕGm+mv{BÙ'üõFhÐǨYDØ(¯-¡Cõè¤D(öç úPÌϧW®±ÚqÉ_d¿êÁ-J#:Rß=ä9¡M½Zm
ëðOi¬/£XmÎOJwüº³q¯ý¥ø¸MuiÆ¥¨|÷3{w¹µ8nój!ô«Ú0dÁË »|fª5®îUA¼Î]6ñU~O>ÊsÁá5^FrûÞÉãu"æ+D~LåcY)+xsUÝéøËÑi|Õlè(Hz{w"¼?v§é'rfÙyXWÙýNÙé f{«-SXöevdôÙìâüà}Øi.ÐIk\¢uiSÇ÷ô[ºb»öåüñr»"ÆÇüÕ]#QHdúYÏe³c=عgQé·þ¯ ÃË?Lº·}ùáñüö³_T[EÈ]Ê-~ óä×Ñv´$äL:\33o9ÜqaÆZU¼Êå¾-g at mmö³|{î³_þ{ÝÛø
ܹÝÑyFìºÔfÆöÄøÔa÷u#üc>Å+ÿ7ÓFǶüGåôñ@«Á¼sÞ¯²¯lµe]XrÌ_v>̦ÜMZ¤³ôÜf9ÚQ2Ú¬i4'¥rÔv»&
-ä:ÔÞúShq{ëù-óØÌãiÇ0ÄØfi8¢cHÜÔBâiÅÉÈJ<]°Ì40·¡ÓYOºóì$;%±«~oól¦u5øQ®4ïØÝQ]W¾½üL¢7»T0JÙ[¢0÷Þôfµ|
-±ñ$êzë8¾Ía3÷XSÛOÉz½ôÐ×Ïd1£lq#;´dJëE
-_ÈýËѸv¹4ÝÀNÓGWe"5¢0ÉçÊÎ(Ïѽ?¢ªrAïäY,GãóEjbU¸!
ââU/¼±TFã¶Ø#vâéúæ Ë J×w§
-Ç~F¥Þ"]ݼ«,?»ï·iâ©6äO-NlíÅTÂßäB¶&:¤øP}>ÌV}?KbUìõR_©Aò{!&0îØôϲêøt)|EdSöMÆî6 ×V'×äXNT=©wUd7¯²®¡#Âÿ+Q¸¯
0Ñù/ZzÓïÇqiâãA{SL*uÕpÃïU}Ê5:1ß#
ÔGomXdÍywxÛè\Î#ZÊ2Yxï(#¾ËÞt¢°W%U}/Uq{ïµH×Z»¦Øöêäv*@ý§ÜP\99úk6ÝÓ¨þÏ*×OÏý6÷¹x¢~h£ÌÎTfÐÅpãä÷ÅÓs?Шð\ËäÍoÇÜÕc®8>Sðñ·ä"³KRÆyµÔ0ù}
¤Ç9Ñ^3cgiã0nB¾æ³V7ó/J\»xN£{Ò55yqéT¤FY]T½B[NQm
ßÛ;Sò~UjÝ,lF1 ;pCÃ;aW×Eó±_6`_½ÊÎÐæþÙÃc/$WéÀÆ3`9b}têÓ¦Ðznùä¸Ø[ë|§¢ÛUD:vTNü¼öLµyýýõ/¾ãçY¨ñF^~K¨Z=8ÑMóÑZõg{Ôõû§;ÜB%®¬ $§O¼B~Ú&}8#.év+j<%ÖQϨó¯Ñ.iM§)¯_CUÃöNíC5P¨
- yÊ
-ÔZñ `}¹®-KluèÓ¢JhÌä@ÄÂ(µ¶Ì2g%bâÜ£<ß2&B½¨ÝÑI4`ª~m
¹gîtÊ!¶¡yÚxÿR~kx»BÌvö[&öëÆ"Âz;`Aø2*¦.õeé´ãjm}hýôÚÁP:>O~gº|¡/ç2tÊrÆÇl2 Pp±"ñ!KÒé[÷2"ÖÙ¸µõ»®ÏÈQhÐ÷éÓÜÂñ³ò·¤JÝFôù\ªèzSÊùÌZ/¨Æ]ÊLÄDÖN?u©·ï"T(T!êWU×MYßÎÉës<·ÕZPVÎáJè\`n*c>»<JæR¿Î)åT-M8¯ ZÜÖÇ©¡K>á-^ñD4SûYíÐRQïó.úS¨âÛ*aÿ ¨öºÌ¾Ý]ÐX>½j9]£;
ÂÚ°ø¹"-
-Ø?'KÛ¨ÉüÜÔ«&
ÉñWrV9ä´â·'x9òôÒ
y¶á-¤4XÑàÖ·l°ZL¤Fê<L0Iéf-Úi]ÒNv2ÕZg Þq\¡ñJ!l+ñAÔðc^Xh=êá]W¸´Âð|Ì ü¹Æyµö²é
¥¿Vl´È´¤ë÷vICPlW^íE_(EZ""Ô6øy®Vøøë!êËrÔ¥Çr:.h'T¼Ãa"c/÷ãG|}×·tlåb¨+ÑNCð,KïquÚèûÑ+5@ñ©¥]R<
ÊR
¼úÚ÷áµ_69Ãõo.ørï°iâ;5ü£Öí3Òq ³÷ÞÚÍÝRB*yP¸.ôô¸¬ê7~"åûÌ4¹éA<ßÐoTHïÔoÎ;[($V¾Å¯gã\sû#´j65¸ÌàñÚs4®=1wAjeRnBÐnnÍ5vzB ìZ¦ÜxI*ÃãÅer~ã{Ëvo7)óL§æÔ§×Î7yÞê);X¤úhÌU&vS«Ç¾¥3ÿL \ï0Þú´KpS«¿Å·yå¬ZýþG+W%OýwÛËÄèVyâR³¡ÈÃDnȨÕTVÇdþÅ [ÝUy6Í«_%7;ZW|ã#ß çØÀ½
¹A{îoM¡×¥(LdÕ!|ÁÄ áBò[JiD/üN¦XIj¢ÛÙ¢Ê'é8 9Z
2ß;ÉÀ ÅÇ·\_¯Ðý¾p
=¥~%H+<¬+VJfcv+8Mb{SqäE9Ë÷¯ÅGã÷eó[¶R2ûæ§WP<at¥«y£Æncäª9ºÆ~Bâ Ç-"æåväÏcU^VÉ
-£eª`sú$e¿Ø%\QãÕ¼Î<ÀS¢ÎíElí`Q«ÖAÀE
-bcëgÏë2eÿ¹^ÆYÈ3¼&ZæÒ®ï¼ÿc¼yØõEk¬*òmâ®!9@9 î«!ëÏÉYr?ÎàheßÇòRÖ¿ÇÇËÁa÷ÄWê&Ê_þÁ»búàsû
-Ï2&e5²- ~$äI²j
-É<ZÐõÁ¼NSõãbl
n;Ø{,
ùyÒÃH£û`ð2ã;MrÕ³*d¶Ý~"}´!Aüí9qõÌ*~=ø:ýÛFâÕÕ2Vöù
ùáa$Dð 4gìå/ ú>íjÁÃE¯jUþØÀYÖrâYÄÖùªbË3à¼URǬ[½Èñ*Ã^;û(®/>S穨]h[ÿJþLÀ±ßqºQY§Ä$#RZlD¹;à-E¶>8Ë$«¶[vøNj
×Û¾õ;T!A}Ô^ÑAÝ3¾_;½B¿ÅêÌ^n{ÝË*B&ê¢áH±±xÝo°?ë/i6 zô]¡C»BIH?b
-]øcbNX§ÍåwäJÞxàYÆ:Û¿LÍÙRYî|6üA² O¼ñ
-é(ùp[NÙömÇIêÿÑaϾ:ûÈ?ÀqïÖ0§2I΢?vmnòM/L"`Öz4·¯¤t7ò¯XG?õûT.*ùñ¾6V`(bQI({Oí#µÕy¸F¹¢®Hìéÿ9cDÊDr¼ÒüÛCZ"ä"R8Qµq|¨ßàhÔnô°ªbØ^|<¬ýÝBÍ~Û¶;¾áJ1On
¦îØ Ù\bÅSÈKW³À-ÙCàî8àÇØF|ªÙ1Û9Ûv=L3|Oh¥aß»yéÞüuöK£ØmNWúp½tu7¢* ²øòªfvqÑê\Q=Ó8¹00ÕEH9¢W´6Ér¼¹W}©LsD<ÏÈô5gC^ñKÏ
ßÇëVL0zOèYñLØä{
l)F_JÂõ¡xl÷Lotõì$5º]7/eøÎl:æCQºrb«5éÍ·ÝáP6êwÏ|ó§ñÜÙe`gé¿8ÎÜ{Jb
-ò`MPn«ïV#¸µLïìáöÌKªÏØóíÓ9gkdÝ}ã§ÖäʸÜûõK54}lºp@¢4 at vt¬ó¡ØÞOcw¨éPjr)¡÷ÿç*7v^±-äE{Øl^ÔÒ@½1éz¡bíÁ«GýnVYl1¾ºï¤ö¾õiç(Â~Ä
Qs]õ&ÉÞTóï/%>v-v ç0kü:jeyÊÑÀ ab?(KÉöE¿HÙ?a?Ì*ñ
µÄÇÖ¸Cvù/§§ÛMÊèHX·FtÁ?KçUªK%kðÑtæäñmöbËÔ>þR`½Hϲ֡~5÷uÖ ÁmÔо×v»Ð!ÏóhèÑκKª=FóËÅî)r-þ£×5_¡È!n¦åðÚ¶ ûÿáíÿø"¹ÐÛBlÑþK_9/endstream
+8ÃLèÿ¶É ´ ;Øy ,hl*`X6 ÌËÿ
[ÿ\ÖÅÎNÅÔþ¯ðwêÚì<þ½lïèB Ê` Äá?·ê ÿeNhr±ÿÏUy¨©È\ÂÁÊ`ÿr¹-Ô@Psk âü[:Xü§XçþvÀ¦ §õVOéßCý{QÍä Õòpü'ê_»ÿfßkäÐgõ¶öþïoÿLÆÁlr°pòðL!S4ØÏF<÷ Ð tfcu CaG °x,Á´¿&ÊÅ
`srCfvüKä°9!æ@è?7;L3
ì¨ÿVÿ5èd.lçâü[¥1ÛÛþVx lÖÖ@ßïßiA`ß̳©³õ?
+ÿ_ìÀ¿ñÂ< \Lûç
ÅøM°R¿I À&óñÁªýM0J¿ vNù7Áòªü&XÕEí7qØ4~¬¿ Ößó©ý`Ùßþ&XÝH V£ÄÔÜýýàúGÿ
v
âl Ë°~Ï@ VÙoe4ÿ8ØaEYüuùiùÂ|Xý°2ÿ@Ð3aûÂ\Øý0ö¿öÜ°9ü0à?fÃñå
ü°¼Î ¬ÁÐ?fÃååuû°¼î ,¯Çßø¿uII°û{n 'ö{`÷úÛÌ] °gú÷=
+»/þ-A°Ët£-ÌÍ
mK¼eò&Já%>ǨÔu}kG
·+Rtb\©}wW¹´Mîö@ìÞöA}TöÄÏ)&yæiÛÕd;Õ³øÝyª²Ç#åMÀVkãôå!¼êÔÊpIn~_ÆiÿA½´ÖÊw
+¸n}×úî´@^¾w²©vÚ!Aµ´\ØÉN%¡Ü!ËnØ qÏǼmBPÎÀm.¸wy¨ÙñOÆp·æÈþóÇmDBRYø
¤n?¾ÀÕv²Ñ¥Uv§TFL·8,´Þ,vN¬k¶Ôt{ÀM?l<7c%ÚùªD2!à¬sR&¡ñì@Pæs¹2¶3bEÀ vÎ"Ë biªG@¦ ½ü$ºâzÏ_¤cd
ØA/':@þ-ÃÂk_ËeâÏ¥»U1õ>(ôRÅý$oÔyÂâºìÜEý
3¯<{èÛÛýã>çæÍ=a7ýOÆ5¹¤Ä¾ÍÀes:ÍO¥{¨ë,üY» Lê9ÖÌJ·çVÏ;0pJ§Ø
+H!h÷BØSkåÝ9 Å]ÜÜf 8ŽÏ{Aõ
TìGêíÇ0N~GÉë
,na@Ó¹í³ôc/3ö§öµÔü2ôÃû§¢{ûÅÑt]>ÍîÝîHKl
+^÷àÙª`Ç^Uøè¡û* uO6n¬ïXYiDAW9
} ÈP¾=¼ìd¶yT>LII`Æ2(²³À㬰¸èoÖ30#§¯³5Ñðþæà'åRÔÃÌ7LÛvÕbÖµ¶®õB2h]Î ÈKWsÔ2¾_K1ú
äOà&4h#t2¨IC1éO!GFëÁ&®ªFÁ§wY®AçWÞzn!u вîÎ××¹LEZÌNÈÎ1ìãôóÍýBÚ%õL\;
+üN\ß,ÂÎLòª.øÒòù6vöåK[\*û×ç;ßPÐáú5jø%úr²AÖiÐ\Ѿÿòfìì½ÐK6Pª£®0¼³'C¤ÐβêÒyô@ ÉïæZôÀºè¤Êf"ÖU»Å3ål±®âI+NEòÃïLXàBh$Ð<EªñÂ])K8^@ï²4G¹Ã}3eöV|¶rìYrÜj\8«8Ú=°Ðd&?|V\Ìï¼^làÑi
+¹øÐè¤Eg×ðµ«í8Vä»FíÎÐn^a¯õ¡aïLöjFÄØ%CÄ1º¿ nºª28 è;JA">Æ~:m_
DFZ¦L*d$¾¼
(âs>GáÁùIåµ¢9ãÞZT¨-(¸â
8|[îÜÐÝÚAÍt£~Ä;KÊþñrº¥·/|
²ÄUû
+Üü_'E²0E4L´hß?kAäV×îLÌÜÉÛ ÖP1ÃÁëÄXu4Sºg#_6ßv¿&Kâe1HxØê`ÌS¬i®y/qT#®Å}í@-ïæh~¶2»L÷"õ«:Y8¢î4UºR¶·c¾¡|ؽwKÎ@àcò`'½Ofĺþ®Àh®Uè¹eÏvFr»Ù¦nÌâ&Zôö97Âñ)üõOÉÈ9"
}Zþ¬ã
AÞ=×<ä÷OJ~ßãíFÂQƦQÌ'#8¸ê·Àtô÷n¶pzç4ýÐ]×Ñì¯&3|×ðýöQcFä<<dO¢&;?ú½:¸ö!ù²ÿA®Db]×TË.¼úpëg7°8L!íͯ®£´¥LJÄïm°NâôWÙ¼b±ß:Ûý:³_iw.xµ¸Æ g0±·îo/¿,´!1`ãPf3!èwÖdÆm®D5S¾»:÷·¹¨0ykö01®ôD>!àäãLlI»ôZ¿S¿zk0NáþôXSP¥¡t·mýÿ#B1aHqþgÃX£5EÇ©ViøQ¶ÓÐtsé°Ëy9¹l2È&^ó}"$s©÷f»ª|d/UÎvåà(|«Y×lÄ`_·Y;"ÐÛãe¹GqMUZ²H¡ªÝéXõ!ÔøWæ!Lng-ñ7H=Lg¤÷ð°©°,¤+yÙ_r6]Es9'aV¤%1nº¨kÑäÚ}ÚJê`NtÏð:ÚÙf6ßH߶åãDç\ý!jç²%ÏüÒçúõ͵|@*ÆK®¬1ÓUkkÔ}
õâ'åÄO rO ·wt
ª¢
+wë¸h<§)A¢¹%÷Ëc$zÉè[ ·<BõÛª)ÈÎ93æ@M¿äå5I%¡wöjJôÊD.×°¯R#5o&Q°R¨p_´³<3·/!Ós¹wæxh)ø"?ÞÐfC¥Ñ(¼oÜס(RÎÈd-ÙUz§nÐïx êÞ%6ëh°{7=#Zt yd'½Î,ê ?àÞÖ>^XCâ¡XÊÕ¥Þ «$ÙÛ¤}å¸Ø ËN¦qW#ÕÄ|r>Ó
²JÛyf·o¡E±IäñëÄpTL~QÆ`¢Ýéà
¤VÎ`,?ò%$¯ùn_ÐáRCn°õËÊeú¶[ÿiÕ¹üÓ^·N:÷¾Â¤ k/
ÞkqT OßrãTV4SY6@̲äûU§§ÍµNh½øCc©¦ b~t ò^
Ü1¤
!þJéʮ㥷ڶý³§EKKÛÂÎÕaQM¾f?è7[Î9
Cðçß»Ôî¶Óm,gÞUá7VãzB3
Q#Ó÷©íÝÅ!M'|$ö¹J+öEY1¦cÎË©
}ßbDI.ä©kãf2
Q>Mv¨QkÝźCÌmJ yJJlÎIrï à´¶:áû¢8öý÷D?Rfnq&ä'Ûíì¬d÷þþOõkG¤¼ì
xåk¸ì®¨&§xã$µçOF¢ÇB¡ÓÝâ³m»Â³TähM©Ñ(«Ä,"-8UÓÀÓ@ß5y¤GÌA@ÎüOj
`' Ŭâ;Æ4äçäÞþcÃÆëKá¢8b<Kê1#è
+dÍ/^TãÔE9Y
£ú®« 4Ègí$^¨¾|¿*cì-?þ5+ð\UùþÎPÜ,\´¢ææ»]¢¨¯DEPÿùèòáðïµ<òàg»wB¤²ÐQQx"oéFÕ÷
ÇsøC\¬S>¿»e$µIør`ÐHrcý9ÛH
´aÑ«ãPIÏè´oBuõà>2ao
7¼ºÆtNL_ae¸è¾éçÙ)$P¤Û&$Mã¾Äy¦ÝI>á5ÃbaY4£-Þ,R°c(üé
+Q3ÃAò9Ù??nHGàø3Òi4\Üé¶SmHÍ;ïn5Pé6ÕÃDdżh RXf+Û/Ûx| ×å[¹Üð¢b³TªBÊË?H³±T@>fbd*Ò9»)Ðâl
Ú`ÓMé·´H"Ó<Ï|íÔQÔÍnºÑBûm(FÙ©Û£ÝÅîÔÇ£~éCuµ±k´Ö¬+ó£Ï¸ÏæÔ§7Ï~@àZLó®IÌõ¼ÛØÕÖ6;{ÚX¾O¥âêo¬&ÏÞ¤Và +fIâ
eûTûY9CVDÀúZCkÚËi¼~ZS8Óvû²·n¹´ÂÎ"É65d&³"_Gª¦ü0ë:P¯Q(y¶$Â
+fÆK.;³º-rµ
¥Lcýnö¡^ÅPwǶÑzC9åJ±1×îiĺIxÀ7{¾1íW[þê!ïßâ%M¹XRú:`Ö*u
+rh÷ªøGÞ~¥
E¸ðÇCeÕX×ò]:Z]ÐÇ.Ïõr íppoµ«dî9]q\¡ùÔúxëCô$Ð>UUïF|ìkj¿íÛÀH0z|ÆØ$Ï×6qعQÄ9X¼Ãs\/ºIU4¿ëÍjÚ;ðêX®]¹a{e@Ù ÁË!Õ-ÁúÄÛµQp7¢»[O »ä«¼Vß9Íä¿KéßçÝ0z8õ8Y--©ã9.@(ÑÀÊ~GW½iéôü*Eôt·¶cf`Íc®ÌDYªïcÃR¬'½ñÏ«vÂWr² I]°/·ßªRø>Ûì¡a \G§ðñ¦ÓÿZCõ¼ÒJp#ܪ¢óû)Ò[!DêRM®Gúá]îÓÝ,üDfdÁÇH¥Jx .W?8wÐîXÄR¿*#µpx¦r³÷ÒIHr
ÉzÕÉþN}íæ½ÂM¹Jté®möèÔª«ÿûªv:u¯úDYêWþ~yìTÔÉ×Ñ»_ò
+¸bùg'6±Ì+VbN
+¬*yC?2¸ùݬç&vVÊà?·4¡Qõsó®Ë_¿áAüümEµ&æAs¨·]?ªÂÑäÞ»s@áðØäÓ,>/«Þf¥É1U^ÎhqýÔ%[%5"èÐKi0SoO¿«q¶HÒ¸Ã]Ñ
Vz"J6·'eKhÒ
+ö,²¢Xص^8Z·ÖëÉýóÜÙ_îÌìÙ]¡ÍÀûüþè
+w½_ñH'áO¤¶9àkÝÂ&(ÒT·o+®¯Ç}ÐèÃðq¬lDëP°ÌÞp~çzfRnÚÂæOðÅé]rº8WÈÛÖ§Ìh
O2·Ñ*«Q¢ÖÖ qÈ ½åYqµ-4~°Hë¨ãÛ{dK£»mD%B§À²0«nù~õM¬þ<7Aiê7º&skïªxÿqC<µ<cá{bù¤9vµ¹ªwðÁç)ûæQO\%<i½",¶Y´ÕÏ=fÕuDÔqÎÃXÊv© f$dS/#¥HI§+Ù<"δ _uGKNfã' cëìóëÞÍE
+êüÝE«ÝJ,Ò·xûgÓX ¦³¬¨ø.T~
+QίcÁmYC&ÈÙ»NÚßdÚúiéâ$óäCùGÊQíÜ_Òv¬xÚÆÛ¼dí°8FÍ%üg;\õ&Ù¥Ì'ìe?ë·]NÛ·°NfÆ*<gàbS0y ãÏ!Ye3ú©X0Ѭ&óõÍ/ÌX*Äj³Må£éÍ¢VG¤8íþ.k!ÂÏø{ô;3ÆÄÒ$TG¥S:ö$r'6¨ûe.xÍP³Å(uè,{°Y/¬·L¹+°*Èã?ºb»>vA+M*¥ìês:w;·A÷^^ÎAh¤nEEµ5sÐìp/foAç"9øÀææÝ-%Ð&ô¯²{,;ÎfÄUÂôMEEP¬#d´¡»\¹ÀN!ÄÀX¤*Ùt\èeQü¤ {%Ý·éØÑkqÀ²cå¼ø~#¼øÃ&ÿZfÞ=Ø$Õ±>ÖRmÛ;ý=Ýn±·ðvh(¡ík*!#]Ã/°Fï
¬ñáX#m·:i_?ðíDßÇN>Õ³pVÇ"öÀÙt½ ]´uå$Þ¹ãÕæNútÒí(o3ÈX©Ëé»Lx£bkÆÔ}þØLg[I_}J{m6DqÙÂxÃ
!IÍ'%èèd4¯·JïÍÈApølq¸5NÇÍ?¥O
+3&vÏ\Ùa+ÒêUáµ±èû°É6N2'Ñü)'°ùÐe5~#ÐÙ7Æ2®x±¼[È ÖâÄ=/¿)Ú FÂK, H¥('¿é¨8ôÌAî; hv«÷@_äDΧ`çÁýz
AaòÓe ²WÅ»Ôg1Û«uÉ«ÄHù9OXatc2Oɼ§n"<ÌáÎcZû*\6»ì
wÓ2D!<P;V1Ù^N
7²ÅúWÌS,Jw9Ì'æt×æTivÊÒé±g±QÒ1cÇ»½`ãù\DO¶Òq@Ésuð á|8×p9öw"8ù\¬)ë=KAy¹ú¨műÍn¯Õ²B(ûà¿Þ
ú5åµ %t±EÐ~ñD
+BùùñðôÊ2V!.ùLøW=¸E)qÄQBêá»Ñ²ü '´©W«M aþi!ó3µÑàe«íÒùIé_w6îµÃ²¿·©.͸ï~Fbï.·Çm^-~µR¬2xô`ÏLµÆõý*Ã×¹Ëæ"~³êÃïóÉGy.8¼Æ«SÒ¨Cnß;yü³NÄ|
(Ó©|,+eo®Jòà±;ýb9:¯
)CoïN÷çÏî4ýÄCÎÌ3û!ë*»ß©";ý1Áloµe
+˾Ñ>]¼;Í:iK´.mêø~k at Wl×¾?^nWÄø¿ºk$
+é¬Q?ë¹Lrv¬'{1÷¬"*ýÑÿ5axùI÷¶Ï¢#?<ß~öª`«(¹K¹
Òtü:Ú¼¡É@kfæ-û1Î2¬±ÑX«W9¢Ã·å¨¢Ó~oÏq!röËÿcï¡{¿;×°;Úà"Ï]ÚÌØÞ8:ì¾näalÂÒ§xåÐá¿SÃñfÚèÒÿ¨>h5sÎûUöv£³l£KùËÎÙ»I«´`>Û,G;JF5íæ¢TîÚn×D\ºÕû@
+-no=ÿ ¥u>3Ò Ûy<íÛL#Í Gt,iZH\"38Yg³æÖ"t:ëIwd§#vÕÃïmÍ´®?Êæ»ó²;ªëêÒ·WIôf
+ÁP)ûsKæÞ{Þñ"²O!63DRo½#Ç·#lækj;ñ P#Y¯Þúâ,f-ndÌQi½(CáK¹9×.¡øÐÒiúèªL¤F&ù\Ùyå9¢÷GTU.èÝ<Kããåhb¾ÈAM¬
+7ä±A\¼*ñ
7Êh¼ÃV{äÑN<]ß4r¹TéúîT¡óØϨÔ[䱫wÕåg÷ý6-Q<Õü©Å=¢Jø\ÃÖÂRªÏÙªïgA¬½^j!#ñ+5H~/Ĥ"Bƽ þYV
¯¨lÊ~ ÉÐݦäÚê¤õk ª'Uã®ìæUÖÑ5´cD¸â%
+÷µ&:ÿEKoúý8.M|<hoI¥®nò½ª²O¹F'æq¤úè
¬9ïóoËyDKYF£2óeÄ×q¹ÕNöª¤ªïų*nï½éZk×Û^ÜNŨÿTq3+'G_rmÀ¦»à¯òpÚÕãYåúÉð¹ÿÒæ>OÔmٹʬ ºnü¾xzîkü³ù-â»zÌÇg
+>þv\dvIÊ8¯&_±¯ô8'Úkfì mÆMÈÀ×ÜaÖêf~áEékÏitOº&ÀS`¡&1.Ô(«ªWShË)ª£Ðã{;pgJÞ¯£J
Í(&açnh8B s§ó lâJñºh>£òãÂì«WÙÚÜ?{xì
ä*øÁx& ,G¬N}ÚZÁ-·{kOâtPt»HÇNʿש6¯¿°þÅwü<5ÞÈÁo R«'ºi>Z«þlc²º~ÿt[¨Ä5äôWÈOÛ¤gÄ%"Ãs¥Q§Ä:êuþ5Ú%étSâ 1åõëo£j8ÑÞ©}¨ÊU$OYZa22¬/×µÅq}ZT ¸3C¥VÃYÆã¬DÌR{çû@ÆD¨5¢;:LÕ¯í£!àÌNÙ!Ä6´"Aï_ʲc
oWhYpÀÎ~ËdÃ~ÝXDXo,_FÅÔ¥¾Ìq1v<Sí³
°^;JÇçÉOólòR/ôå¼Q¦QYÎøMôð
+.V$>dP:}Kâ^FÄ"·¶¾qW Òõ9
+
ú>}:[8~VþT©ÛÐ>Kµ]oJ9YëãÕ¸ShÒúÁ駡Ã!õð}C
+
*Dýªê¡)ëÛ9ùr}çV±ZËr£ÃªÂÊ9\ ë¬Ò-PeÌg7G)Ã\ê×¹1¥ª¥ çDÛú85t Ã'¼Ð+fj?«ºQ*ê}ÞE
+µQüa[%ìtÕ^Ù·»Ë§·U-§+st§AX?·CD£Eûç$Ò³qi5ù`rzuÓ¤á!ù!þJÎ*Vüïö/G^Z±0Ï6\¡
+Üú
BÔH &)ݲE;KÚÉN²ú3QëÃ;+4^i2m%>Ú~ÂͳG=¼ë
+Vþ"×8¯¶ÀþRVS ½P£´â×ítðÞ.éaHÍãÊ«ýr¡¡ó¥HKDDúÓ?ÏÕ꿲âñ`=DýaYºôXNÑíDw8Ldìå~üHï£ïú\u%Úieaé=®N}?z¥(>u ´+Cj0§PYª²ðW_û>¼ö«CÃ&g¸þÍ
_î6M|§¿²cÔ°]`F:Î `6ðÞ[»¹²[JH%JÂ
UýÆO¤|¿qá&7=Hç[ú
+éúÍyg
ÄʱøuÂÁâlknV¦|â#>PA{NƵç1Æó.HLÐMÚ͹FÐNO]Ë/Sex¼ ¸PÎ/r|oÙîí&béÔúôóãÚã&Ï[=eT¹ÊäÑnjõرtò Dë=Æ[v îoj5ð·Øò3¯#C«ßÿhåªä©ÿn{Ýj!OAj¶1ôyÈ-еJÓêÌ¿²0a«»*Ϧyõaó«äfG+òo<qä[0ḷÐàC1×1hÏ]£ò)ôº
Ì£:/8!\èqC~K)èà
ßÉ+©SMtc;[Tù$4G«Aæ{ç@#¤xãøëëz³ß®¡§Ô¯d)såçuÅJɬqÌn³Ilo*¼!gùþµøp<ó¾l~ËVJfßüôá
+'®t5oTÃÓm|R5G×ØOH| 4ó¸Eļ|Óüy¬ÊË*Ya´LulN¤ì»K#j¼×ØaJÔ¹½,jÕ:¸HAl¬býìy]¦ì?×ËÒ8y×DË\Ãõ÷l·3S³~ èsUE¾MBÜ5$§('Á}õ1dý19Knà§ÃÍ£ìûXÞ@êÁú÷øx98ìøJÝÄpSù«Õ_ð1xWL|n_áYæϤ¬F¶%Á<IVMá 9Gº>×iª~\0Ðm{¥a2?Oz8itþQfq§I®zVå ̶ÛO¤6$¿='®¾Rů ?C§ÿ`ÃH¼ºz@Ñ*Ò>¿P3?<æì½ü%Aߧ]-x¸èPÊß8ËZN<KØ:_Uly·Jêr«9^eØkg±bÅõÅgê<µµmë_ÉÉ8öÒ!N÷3*ë8dDJ(w¼¥ÈÖgdÕvËßAẲr»Ñ·^pj1$¨±Ú+:¨bÆák§Wè·XÙËa¯cÙAåCÈD]4)öra ¯û-ög=@ã%ÍD¾+thQ# iãGL¡LÌ ë´¹üâ\É<ÒXg[râé£9[*K#Ò¯Õ&3Hô7^!%nË2Û~¡Mà8iQÝbà?3:ñÙWÇbùg!îÝæ´R&ÉYôÇ®ÍM¢é
I$ÌZæöîF>ñëè§~?ðÊE%3Þ×ÆÐ
+E,* eï©}¤¶:×H8WÔ=ýà?gÌâ HñH×QÛCsHK\D
+'ª6Ï õÚ~VUÛµ_С[¨ÙoÛvÇ7\1fãÉM±ÔÐÔ;!K¬xjyéj¸%{Âgü{Áè¯Sõ11f;g{®iï -r³4¢â{7/Ý{¿®Ó~i»ÍéjS®¢®îFT%AÖ_^ÕÌ.q3®2Z½+ªg'ײ&æï°ºI2G4ãÖ&Y7÷
+°ï2ipçù¾ælÈ+`é¹áû8sÝ Fò©c=+ |¯ð-ÅèKIø£>í鮤F·ëæ¥ÿÁÓCÇ|0JWNlµ&½ù¶; ÊfÒAýîo^p1ñó4þ3»,ì,]ñ×çÓ{OàSéBLA¬ ÁÁmõÝj¤·Iã=ÜyIõ{¾ýr:çl¬±»ïâoüÔ\{¿~© íAHÈu>ÛÀûiì5JM.%ôóÿ\åãÆÎ+6 £
¼hïÍZ£2&]/ÒS¢½#xõ¨ßÍ*-2ÆW÷}ÔPà >íEد¸ ±!jN°«Þ2Ù
+±rþBàý¥ÄgÒ®Å3ácâfí_BM²,Oùï0z$Lì
c)Ù¾è)û§3ìY¥ñ"¾0¢øØwqèÒ.ÿåôt{±IPy3 ©ÀëÖ.ñgé¼Ja©d
>.ÂÜ3<¾íÃAlÙÚÇ_
+¬·iãYÖ:Ôï²â¾Î ¸Ú÷Ún:óy
=ÚYwRµÇÒh~¹Ø=E®Åôºæ+1ÄÍ´^Û3áaÿ?|¡ýÿ ÿO0·B `{S-Ú÷|9 at endstream
endobj
63 0 obj <<
/Type /Font
@@ -498,14 +507,14 @@
/FirstChar 34
/LastChar 121
/Widths 108 0 R
-/BaseFont /RPRATX+CMTT10
+/BaseFont /JZTVZJ+CMTT10
/FontDescriptor 61 0 R
>> endobj
61 0 obj <<
/Ascent 611
/CapHeight 611
/Descent -222
-/FontName /RPRATX+CMTT10
+/FontName /JZTVZJ+CMTT10
/ItalicAngle 0
/StemV 69
/XHeight 431
@@ -529,32 +538,19 @@
/Filter /FlateDecode
>>
stream
-xÚíy<mÛÇEö]D.ÙÉ2vBÙÆ.kfÌcF¶,Yìkd_²F4H$KöÊZDÈïÜ÷ý<w½÷óçûþõ~Þëúçúçqþßy\ÇÉÏcd*¦ævi£QX1°8X и©n ÀâTüü@£4¡X VTj8@J Ë)IË(ÉÊPñhO?ÂÅiÿ$¨!aÜb]aHÔ0E;!`X?q@ÍÃ0ùc7`óa|`ÎâT`0àpÂ0JâGz(8ÿ+ìóü÷ãM0L
-ÎhàSI@ÐZ0ÿ
Sÿ×Æyx@ È?äÿìÒ¬C¿e 8,ÜD;Ã0¨¦ÞýeNíñeô°PÊÅHþBxk#|aÎF¬+ zxÃþÃPÎÿ´@hÛ$Mu
uEÿõ?ÿ\4"PX3?Ï¿eÿÈþÁ¿Ð° ï¿¿ìþQLåvF !+@1¨a2$ÊæÀ| %ÄQh,a@hÉ] ÆPýñ;å% í?BÐùERî/$ô~"átAÅè2M aöä[a"$ ¿ éô7% ¢Î¿!Áì7$ÿ.¿!¡¨ëo(H ~C@Âã
P¿!¡ú7$òü
Êß ìýÊØßp>Ü/"(ûýeÿ?ñ?çG]í &+
IÉ BÒ¼¬äÝÿèÃ``(ìW0
ÿf80³0/Ìjjít5Ü-µ!²$H«à})©È9uÆGZüH+uØdÂ9¢^}/ùçGeèVHW¸ïpxǼ4î×Þ
-õz6vºâã°áÿÃr'ã¦ß²çå°uúѽ
ÙsÃóïJ¬
-»²¿½YÏ3Ò4[%å!j·ñ©kÏ·ÔÎð0x. ÍcÂæU-5w!)ñüÜ`X[EèÌ6ú%é¨âÉãS{ç~ýÍ?ÚEë£G}L5!vÅ1¸'7Óâ+Nmf¹³À6;±£»W°¶émÓ£9
ÖdJuîߧEÄ4·òÕ<ªlËéê`
Ùçê+¹êëÕGû_ýú¡n.¾ùFÃ`[§«Êæ;»!1õp<BëgE]p:÷£º57í§UÑp<Ãe#¾±åH1½ùúÉwÉSêa]Tr*®
¼4-¾)/:Pj1ƸãkKµ3@·ðMì
A;r¡û
»åzñZr¸«Ì¿/öùÑJ»è«
-£UI¤8lÍíø,oÅÜ_ú&®×ÕªÓ·¢T|á&-7³ÄSk
˰s̨
-ÜiOòTXvEìålShÓç.LÅÁi©3'ò1é/Á9ðPdy{Rؼr%©O-áßƧowÝfeçi$ß*à
ÖwþÙSÃj»S^qä¡í´&aç¢ü9¦ñ¡ý½Üà|²[ßTïBéF×i%e»ã§dte/Îæxèä¨nf0>1~Ka_èÄ>õYîU<8~Ö2ÛÂT¶e¤àø@DGûZL©évç<¹î]#¹pîôÒ¯|î°ôuò+õ(KUNÒtSr¤+s\OÃ[ %ìÀÝ-ßFSnM&êz(µêd½©|XA¦C½TùÅVÚRfÆg}8öKv]g,·_ÓÏÈ0ÏçͯܣÓjhþÖ)¥^)gU÷¢u6ÞîßÏ!;óÌ×RtlwOc±H1 ýït=ÒH]ðóp<ïW^²ñJ6^&EÁ kì5àÿð*QY¹ÿÑÙÁbTÛÓÉ·øT/f£¢§U\!8¤;à»mËKB,MÆ¿ýвºÚpìhºõÜ¡xÃú:hÌ;qÆäöäA2ÍÛË"íßQ¿OW²_£¶E¼´;>ÿº±Gk®ÁþyÀ«£h%qc¢Ð!ºíç:u
qÛ!Oäº"©é-ûº~¶¿{kqìozós®Ûþ`ÍS¾æÔ?«|õv¨7OÝüã23ÀA̵+¢{ûiº§w'}UúéÛÚΩ)U)|NÙzÙ!ë*ùz27¸E¢¼ãÞ1.Ó
-ÑNéàrùëuâ¯Nj
¡ì¸fwÉdÀߦ6ÿyøë;IZÑ/¥y«8|*F>ú¦Ò1
»dÃ,äupÏÙû\ÈæB ¿VÐR:åñ-Íy¥y¢Í¥×àÜ^YùqòkBÈ·ò{E(¶p!}áòªü¶\ö@Ûj©¯¶F-uDXî[*)ñÀb{¬cEîD²Á³g¯ë
-ýØ!BR×ײÒD|âwIgô/r#JÚ¢>
³ñ@Z){ØãÄâ^t`³öcàd;®÷§ì^g0D(úHÞêð¨â
-d²t·âóÏS¤ÓÝ¥![ú
-¹u[!ý¶*
jå¼Dªí`áè9z³ª.·Í¡QaÆ.áYòãä"õi1«Ø!éÛ
CQ:ÏnEÈCNÛâæcã6e"EÔæ«"1tÌ'EaÄÏìbÆ5ryËâsGzÒlxl
¾£ZW;ÜhÊHËù´Û=X=s\ ²4é7E¿b·Ò$üÎýÕæÓu÷xa´òÚ{mÕX÷õÌâFõøk»¼±&NÅo#ÝÙÏHPx·o¥-ý®nö5;$¿ü,˽xT8óù)ïö^º» q'ðBì¤Ø5õUÊc`4\þóÛ¾ëÑÿt8öÈOMÂÏÆiد|0á.Ô\« ò~7ÿøpܶmÛñ
Îîè¤ZVês|¥<ßè5ÀÖLÓ1Ñ\$6ó¹^,kyÓaÿz»SæÓþr;î®r²¸fúôîz1ÊÃ&¶J at QfÏ¢ñfñr¿deµ] OàòÊà뾶:duEõTPç¶qÖ£ï$Wð·ßð.Ù3Þ¸ -f¶eÆ^¼©VÝÓ÷~UmúÃ+íú&ú3ÿþXáËV
-
-Å'"Lî$ï×[|ñ8Þó&HèõÂÛZÒS@²TzÖnN ë$i,n¹õ
-ÄGÁ:¯ð¤áÖ5p-Fh³?Y¿<ê
¦Z/>ÔÔÍ
-©xÎxOè®ë.*ªS
Ýß8ݦÚøàÞXÏ }`{ÑÈ'õâz ¤üGèÇÐðýîÆ
-3åö|VPñ \÷!ØU±ª>?¢TôU\&[×~a ê(9GÑ:¹)ÒèNëù·¢Ó=Ywܼ|ÜÚICÛ[EºË9o¹|ØS§Ì?{¬°²µ;n£¯è@TLÑzë)¨óǸ®½üolDç-~v
\hN?·7r?u»£õ©Eç¶Û}¶IùÍÄ·¹çÜìñ±Û!.³·ÝÏ"ßvkv+|¶É²Iúè²ÁÑP)\9Á0¯¡ØT rècF²9Ð \iª¶X¯ËS|ä i-uȾ¡96µL}¸øÒ
-oÆë\güÚw0sË8íùfø«³FÁg5ÍYqWqõZ<Y´Ý\©*MÄlò¨gßKéßÏm¼eÄì}Sõ=;yåMÈeñÊÔëí¬¤Y)³MýIãº,
-¼ÚCR@ º
ò7Y¢
ó´S¯«o'ôß9·HÝí+÷áüÕä5˪-ön,_¸¦±ÉB/¬íØÎ$â5Ïp=Üy*:=.Íp
-&Npðñxi½KrðñÛ #ïàÖGº[â9÷¡ëKßW+W3«0å{zV¦uñ)ÙÈ~º6â$Ìðô¹ Ã>ISãäFéèDÁÃ
¤L9×½OVB[¬ßtûrô}¢mb'YË|º3$m`ËÖU¹nû]ºÕÒâ¤ðv7$ÔçghT£_ÛRË\ ßå;
½ ôÐiq££2^].ëknêåÊP=Ú-îãvþ ìjÂðÓ«uä5"^-oË'Þêó,?TámcÏ=ù
-w&20Ó§^¦nñ|p2ã oÊH{¡§Sw·Ù{»ïtOhæô'}¿×VûÞßGCò;ÕD)*û ×½½ôêÔ7[wdïvµDé¤h£PåH¦£îªÈ¤%}:#91ò+Z߶´ØÕ>õN.W0Ä,ËE¬ Â1 ø ýÈËÇ%¿,öo¨üÙ¤#(Áph?{äëBÖºiR4@ÞFå]^nÕO+ô°2½s®Ö:Û«×÷ú¥øùm¢IÇSÈr®g÷
-s£Øc¶wT ¯è|Ð&Ne?Ú_%!ºîÔ
ò¡ÕÍ=Sb9/óE
õÚ5Ê=!
êbä[ͧ4Ôw;tÖv¯søf:¶À7òóyCôÜÆÉÃÈRåÝÚîpè»tý½ßÛÿ\/ÙÉû¨zZ°¶´)DÃ+dLU²<ïìw=ÚÕÊc§-N³;·Ð¨Ûù\6ØÇ̨rR |³s>7¢£9²Á·ÏëTh&¿o¹ºÁ¬ÁtwûT8káEQãÞð¥ÒÙ¹¹8áÄml@
-gXóõ×bÆÀïcþÞl¶¯Lï|Oá9ð6}J©ýõàfO.¶üm¸8IBwÏ^|pÎä÷
:O¹WÓݧG+ã]MÜFÚT¯qÕhÚUo«¤ÑˬyÒJܨ =Ä*EUåÌÁ¶_&${w)æéÈÞoGT©KydMMâä¯Q¥ñäú¥Fð50z]KYyÒÛ Å®ÔMªt-¦òè:IßRôÐý¢{É.åØ/ÞsÈF7©Äó(Î2ø¢Hα
8¹âaî
-ÔþXn´ÈVDRïMº¨:Ïö³&£þ©µ©NÙþh'.¹JÈ1ýºiÒÃWÑy%Ëa!JM#*éÄèú{qDDà ;=pQ]¢hçL±[öjö¥{Õ
-33r»dNkFiCÂ_ÆD$
Ôá""kîRlÌS¬Sû8Mø?ñÜÕo( i2mÞ¬ÿ¹N,ñõ|®ÈÄ"
FùÍÅð þáÀ¼pÀÇgUi¬*]Xækäm);Ö¥Â1ìÊ7ÉØüê¬%¶.=utǯcüðg¥ÂVs?Hå¾i¦¼»Á¹ó~ré7Í9÷¬ÙsvíªC3J°ybÊZûòú3Í?ÉÇ;nÜ.<sb+÷XY0¦uFÈóO=xghL=e£fI;hý8V¤ÒKr1lÑÙ½¶A-ùdXpã8LTZ>CÖòCf¸Ó\`Dý:º ¨¡$;nmÊÆj§Vs?µ¹Yl2ñï:$kè«Èê\ùæ\±-ë]æ»ã&{Ú_ßz$µ×<ÒIóÕNçì{CÈF@NÌ [oÇóªCý_Æ7NÈO[úE´ÙÇ
{\ZVYºBiï
ï«)ÌÛN9ûKº±âAçeXÌìeð<OrzìY2%c'ZùØÓÃôâ"g\¿ü\\½ £ñÜ©ýAôõì¤)¥eKwvE¶¾k×ò`'¬ç¸ú¶ñ£{NýýÀZò
D!ë,E¿ªT=ÇCd¾¾Ú¤Ûî{ÒÔ^[ìWd?yĵ¶]«Ïö~,^å»?°ÒÂiÓbYNºÃYæ(J<ÝcÈê-}Ù)KÛÉ~Î1àÐtEÈ*gåêgÞà+íUaze$aöÍWqë¿ñmðêh2nÛL¾>ï?M®ôL÷¼ÔÐÔIÞF\^"ñÛ+è}yÿÃzçÍzEÌ%²Ï_|ÌéÎpâÏÂÈCüûf9m*Px0"ù¹4hzéøúT`Íj ½ûQqDNslíµVµIúÙÕ=i[Fl}`aDcjgÖܤ±kÈÜGIVi&H²þì}[IxÓÔ©x7èZoÃ{ÖÞhMvz» âŵ
ä$y]@Nõ»«
ègáfF¼¶ GåÔjª\R9è¸.î+KQg
Ò[þ.ÈÅy¦kYÈõx)÷À¡Yi%[ã 9c+ú8¿'ynR'Ï·o#î¤Mëi¿¼d4<:
-eV¹2+³$+5T·ÑTMOßÛ»blö³×ÒONïU ô¹¥*ñ© éóp¥°çCÑ|
à ¿Ã¯cÌè=79»[åX:/¥¤«r<e½¾W `k[wÄ°Qjoð£ûIþÀ'gܤ%ËïÇó®~YѽÇ:ä>uÝ,w5 í3WðªÑ²wþØÛ©[Sâg:oïÒqfø*Ç·|§z|
-k½®\çÀsÏîÖëæ½÷¯g<îo¡F-rH\RH®n±ÊÎú'=*zW¯!|`ùÄ+ÿ9G>¨÷Ún¥|ëéõZQ-ÊUy1Ë/²Q(Û®dBÄIfͽúåE.>.ùW>TKj¤µsÓn{ÅITNë˼RU<]@o²]ÀUnÑÖÌ£Ê.³jçÖµü¯ª$LòéRÆfK
-<R¾+¤ ¦®R³¿Þ=<h%õø£°d4ÐÔ¬oWÃ9ÐϼôÖö1ÇõY ¼GéÈpóóÀË>øbÓùËz¢dÊeEÙV¾ú®"SáõJí'R檷¢Æë¿BÆ.
Iþªÿø?!àäb°h$ãNõ_L2eendstream
+xÚíw<\k·Çè¢
[t¢N½£%º¨3f1£GA½FD'jDHDï$Ñ¢ß9ç¼ïIîyÿ¼÷¯û¹{ÿ³¿ëYÏoýözÖÃËed*¢êrj¡°(XP7P³ K `QqJ^^u4ÔG!50P ,/T±.8 QR¢äÔQþh¸+Pü#IPE@Ñp'$`àq
"ðN)Ê ÅøªÉ;¼¨7íu¥g¸pºÀb8ÒEÂPì_ag¬ç¿| ho¼)@ oRÀ[tF!=üg(RÂ×âüoú§¸ÖÃâøCþÏ.ýǺîáÿ¯Â¢3ügª9ô/sj(ÿ(£qð;©"]< ø_!¸·ÜêlÇ8¹0oèq(ÒùðmûÓæMKsáçFp$æ¿çß²dÿÉà_ïîXñø÷ß_¶ÿ(¦tB9ÃøÐhJüdàIp¤3Ôúá"Qü ß»
¦üã8eÅ1?BÓþEÎ/Ät< fø7ÉáU~>ÓôIb·~, fþ7á'BÌáá5þ&°8^Ôù7Ä{þxs°ß_Óå7Äuý
¥1øo(yüB0¾ò7ÄBýøB¿!^ýâ½C@óâÿû%ðÊþ¿!^9àOüÏùQSCùHK"Ò`¼¤< +-~÷¿%:aÑh(óçÕÄOá¿ÇÏ,êu¢C9]pKo*
Ö,úXF"D¨æÒ©Ã
·Q
O$z¼Óó{nqTufdÓ÷Í;öeq¿ÖVWbÆèÙ²ýrVÀ6,ÿ%Ï«áë´#{ÒCsïKS,»s¿¿Y/0иµB6ÃEÐaíSß!#k¡åq;:ò9$ ]WiTô¬/]Jò
ÙáÁnÑäÍÂÓÛ¨X£"òÇÎìûÍìô¾¥ù_\°:Jì;`¨
µ}»}liPyâh=ööØËáß½±É¬j÷ªÉ+¶:4$¿"U¦}ÿ¦ìExlK[1×mÚÄj¾M³
/]í û}Ec W=íóëêiZ^ÔÜ`>ujlAózÇ"5O+ëC29¼kiVÝ´TÇÀptWxF¢Dtç&6Þ§Nª
wSÊ(¹'ziÑ}W\°§Ð¤uÇÕi>¢àoá¸Ú?)ÆõweÂöw+t4eØ?qVßæÿ±ÐçQ<ÂEOO¥L,ÁfsÛÇÂ<öþVÔ=®RW^ËÿA84Vz¬ÿ}÷©4¦xNÔPÄ@¥NzëC+Û´2oG¤Ò¢;r/o\ý6~ vq*{¼ð:ó%86FÇöÂlT½ ûQoZ0ë¢W¾8ÕìûØÔî;̬<ÃMd[E¼#!Ú²ÎkÙ½µtña6;GZN«â¶.k±MíîåòT¾ Z nZ¿(.ÝÍÿlòHJGñôÙÂLvò·,úÇ·BÞÛ;±æ¬É|²L §!O[·?n¡«:D²Ò°< @J£}MôL6[BO{Wã/Á;½ô¯=,{«øJíRÎB$ÓáÊßÛøÖ$P3pwË/ÞSjÖJLy²Þ¿X1$'Õ©V¦Îøb+c±=í³>KI÷5·¾+S§ùt9*\lÍñÂík÷h4[¾wG«U ÀÕ<PÚo÷ïç{jÊ;6¹g0eèPþM¾Ý&ÕSøFæýÆ/øWn¼K³Czfôy?½¥L`T¬âM<?¸öÙþdâ-.ÝѨäI5G(áøåoßÆ$>&$åÝ~hQSc8z 4KÕFxs0Á°v¹Þ!ö½(}jGjÚ.R;WË#íÞ~ÌT´]¥²¿´=¼ðº©Ws¶Ñîyà«£Q9c°¡:]:ØmºÐÇ2ÝQT´}ݧaï9´:öMð5¿9mÂt<Xõ=³
§ÁΫ^½ìà.P»ýy`#âØÒ¹sÃ4ÓӻϽ.ùämÝA×ø䤲.¯t½üØu
l=ÔÄÜ*VÑyïm ï °w¹º©BT´éÔ¦ÚÆm±~J
+ìùÓâ½ {í¸(4òµ¬`KGËÆ(»7úb GÌö½ C¿Íh/fR?ÞÒxXUPV Ü]vÆéS/ë¹j&x+»W²ÁdkЬ¨.fÉg]²Ùú¬~õz[äÑbg¾Åî
¢Ü94®×*NØé>qh,wFEGà窡:ú|ù¯ T2«^Úýe
{ÀÁ¾âV$þEÏ &g?FºãzÒöuÖ0]¤¼¸y§G5GE»%Çl at a<Î.5éâ&@àÖc(Ùªl¨ñª±
F je¤nU·vÛǺ}¤ï!;N]5+1¹Ô»¼S<©ýÔ<Rrö¬=~..þTêü\HM`ñ*ãpsè©mìzþ!÷ÁByÂBþpo5þdÛJ§u9É1VÓsÛ+çó&ý¦¨W¬dAß397Ù]w÷éF@ëH¯½×MUAñOÍnÆR½¶-mÖÏëòXø>ÜCû4sû^ÖÚïêf÷Y£ËIüëiyÞÈå£âéµK¦6;{î&DyÚLÀ+â"7Ô.U?¨
RsÌmû-¬Ç\ztjìQ&$-Q³^û1h*ÅY¬±Z5:¼ny XMû,§ãíÝEi _Æ*YÏÅ[ôÉÎdÊÄqaè
"9Kßìq¯·»¤¾:í/u`ï*¦jdNí®?Cº±YÓQÇUóÉKí9Ct"ß,\³W¬ä¯ª±-å
+ZZ^æÝËR¨³ª¬îÚv1ÎIüAlx
×yç
÷¢=èÍkÀâYv{¶pÜeÕÞ¾+ª«5^iÅÒ6ÓôÇñ
]õ´{F~2 Ä@áNüq½ÕWUõ
í#wî;XûZr_RïªÁ8ªAÁäÖß Etr©ë·~Ú-Üi}#ÇB¤ëãeÙ«#Þ`Êõga9¡ïÁYpI=õ=%eÕõÊaûgÛÜè³^ËÙÜ¥7òI¿¼D
+©øö9,b¿§©òbG!³zæXp¾û PÜÁÏÎjö8e1+û*¯®kL½ÐWv·M|©÷dôn|KÓÑMv»lÌÊI]oÓ[I²Ã9
+g±tØ[¯È;s,·¼µ;f oOð¼ã °óçøîaÝÂï,ÌN»C/µdî
ߍàÎÜ|5¿´jÕr»¯ß>!{©
è笻.n;ÔeFÿcûyÔáűÐ5ë;©Ï.lEQUãìðÛ5±äßíû,öÔpWêêækC²ä¹ù@ê£ó£Òo¨M-Ò.¼´Äs;×[!6ûÆóÌ3ïiD¼:oâZÛx.M ÔÚrÌ0àÁÿIË}вÊDÄ&E¡òÀyæ£Îíû#MæFÞÊYɪ W©wD«ÒU:IrÒ(f?ÄwyµÃÑIeÃ6(Àd!4Ä
ÕJWQÛHê÷%\ jñùtázêªEõÃV3;7¦¯tNlóèåTñV¶,tçb êóÏìåwO
¢Ê
+"Cì½¼Ç_Zí|~ì6ÌïÈýaCó3¹hÞ}ÎõÅ+Ç+òÙÕè=Ý.KÓú´Ü¶/¤§®MX±[8Úü$Ða(¸©qê<½dL2ÿá|Jc¶½ëÞK-f¶Ú}yz>1ÖqÌå>ÝéR60åëÊwü¯·¶ú§È½Ýã
$ñ9
N¡÷o_l
äÙ³x¯®;!<51nrTÄ©Éälæ§_2¨¤sн¸Å9|ÜÁlS~yµ¸AÀí£)õ½ré$ëÀ[még2¬}|ÿ¹'OñÎxzêÌËÔ-aÆFjHçFiÍ÷v)s¯s·xo÷ÝìÎú¢g%åÿÚr¿È»èÇHX`aª09BLÉl?_ÅÛK·^í[ÛôÝîÐh=¡4
Breñ4Aª%©/çÄ'Fþ%ë°»ÒSf»Zg~Srè%iÈexÄ3t¶JÌD;üòÉqÑ?ǵØ",{>á$Ñ$ÛÍù¹¶}3)K"k§ô®¨°ì¿§zXGÃÚ5[gëõÎOåÈBôÂ6ÁÖã¥IÄFÇÓ{ÅùѬ±Û;rJWdÃ\ð7¬Ò~LRLxÝ©äC10£-0®ÀtAê+_;ó{P3e_"Ä['äÔTw;µWwUØü²[a
Ü¡Fºncdá¤é²îí¾lz.Ý?ã®$¼ë®[¸ädvó¨f¿®¤!T Í-`HQ°¸àì¯ãjã²Õ¥ÞÝ«×Kî®ècäJV:i@½Ù¹ÙÅR ¹à;çϵ+5R?¶^ß`Tg¸»}¦A3ÿ
¼¤ioèJÙLãìl¼`ò&0=¼Eåµ10Íý÷].˧W&C÷KÇ~$˾ðx9©ÐñúÃÍFO¶¼öÂR-¾(qROÏãw¸¼µóõ2¯¦zÎ&ÕǺ×LÜFZWopÔjÛÖl+eÐJz^»YyñT*TW0Ø|·cH>GCVòq;R¨¨º\MÂ#kt¢dò+,x}2+ß?8=§)ÞëFjôÐðò㦸Î$ÅV%̤®B`B©{þC:½h¸¤¹¼ÎW+¶iÇÖ8ÑÞC ®ÄxgËByÇÖàÔÊù?Í*æýq(¡Èw4Ñõ¬çÍF¼i«]ÒýµHá.2¥ÐcÚu#ºMá9aA
+
#JÉä{ñC []pI}²p×ô3·ÜÜ+÷jª,ºä¦§dvIV27G
Ä
áTBB«îQ,YÌC»ØMx¿p
ÞÕk,ã£n6~3h8]'T߼Щ#4¾@V|s9b'w¨3¨ xîáÛø´:ãy\©»
+Ôxs¬=ísçºD8="6UCÑÅ¿ÞJlë
+é÷Ä»\~8mã§år[-ý u¦û¦Ù²îúæѼdo4ZòîY±æí8ÚU7
eb
+D5÷eõª¦[NÉF:oÞ)>wb©ðXסqËòN>xohL5iaqñÕ£8¡*/ñ
ð=xWÏêø{â!þã"RaIÙ$4iëO©¡.tKÕë¢àÆÒdÎø)(£^ÃùÄZ%»øVÆÀ»kª®§$}y¤ö»så¶öÝ{¼J`ôYCÛÄ^Ëpõ¦öùÆÐR¾¼ØiUwÏ«ovöÛ8!;kíKfÒb¤ïuieXaê»x/b_UnÎf"Ü9 at RØà:+ÇС· /C>á¸Â3ãÎSÑLY;)¼TǦ'åÙãûegã3hùgÏì%_¬ç¦dI L[:3ËÒ
Ý»ø» íï¸jîøÍÛ±ëõîeÕmÀgÈû%Ø"êôôTov¦½Øv§Û¤òÚb½&ýÅ$ª¹íZs¾¿øsá:ÏýåVöÛXMæé¥Ìq _öR[IòÙ]λ²]B!Iq£xÁÏ9²ì¯ Xæ-¿R^ã¹ÖQ®[Nn×ÂûyéÞ¿F¯Ný¶õøyñë#ÁIéÔ*ÏLW»ÈÚ*J% þ2{Eï^Þÿ´êyíznTI6c)º|íë Ïms¬¾èÓp²Ð¾vkãÂ,ä¢<a
+´âpå½èúdíJ ûѳÈ$í¸ºmª´'úËÒ+'º6ô âȦnåHöÙ M"×ÐOÃù)&Ò^ÞÜ}jqXóÄhèÆ»ÆE÷¯Ü1 êÜÌ~ø/ɺ¼p«¶×QO#nqÛìÓk(°)·¢:ØM¦®J
·¼ÃËsöµÍ?Wsë îA3ú6RÇÁ2ÆRä
ñþIÜ$Nåoßß;ÉÒÕzyÅ0!ehdƨty«<ÜZ´D4ì6H¨¦£âºzjêÞÞ5ã[?9àa±{ýd´.9EkÕÉOL(ákCU
¡ÚrÔK8DÔWÛÞ{vr~·"DZlWFASí4q>¬²WÄgcSD·Qf ÿǸpàÒÆSNÒ¥¶ôc×פuî1ºOª bZd®f¬q¬½!]~¹¾5Ù%z®þö.
;(5i§jlËo²×Ç©¸Îë
+w%sf·A§àcÀ\(+äQÛ rMì"D|e5ôPfeÚDÄ4 %±ä}·x°ÆÇô
[w:C>¨OðÚn£ýðÖÓëµ¼j´«âBT@®m)ñ¸?Ôsåë`\|8â·l,¨<ÄHsÇÀv{ÙIXFóëBuMà»TÛÀeËüéÄʪî[5ÎIm«
ÊIJúÆ·=å¸$üI¢& u}Fnµ{tÐFâðGcH©Òs¾_·`C=õFÐZÙ-Ä7ä"ÆUá¡çAW}pÏLóæ:-R)䥷Úxv.¹
+M>55)tHÜV6kØ^ù R.þ?|(ÿ_àÿÔA!Ðîÿ%2endstream
endobj
59 0 obj <<
/Type /Font
@@ -563,14 +559,14 @@
/FirstChar 70
/LastChar 122
/Widths 110 0 R
-/BaseFont /OSQHOH+CMBX12
+/BaseFont /ZEJXYW+CMBX12
/FontDescriptor 57 0 R
>> endobj
57 0 obj <<
/Ascent 694
/CapHeight 686
/Descent -194
-/FontName /OSQHOH+CMBX12
+/FontName /ZEJXYW+CMBX12
/ItalicAngle 0
/StemV 109
/XHeight 444
@@ -596,8 +592,7 @@
stream
xÚíeT˶hq
Á4îî»woÜ-8wwàîîw»»Ëí½Ï½;9çþ|ï×fôè¹jUÙ«ê«äÄ
Jôƶ@1['zff°¬"3I\Øhàdnk#bàä0ss³ Ä _v6vr°¹©Jú¯$N 5ÐÁÜÈÀ kàd´ad`P²52:¹1 ¬ Íp(. at cff±¹ÀhjnÀø¤-ó_acg»ÿr:8¤ TkR@ƶ6Vn c £-¨äòCë?s¶²3°þkù¿õ¿
¬ÍÜþ;ÁÖÚÎÙ è µ5:Øügªð_n²@csgëÿt2°27´1µþ2w3w+;L¬Ç6Æÿ)êÜß
-¢2*
-Ââ´ÿÚÓ¿ÇÌmÝìþYõ¯ä¿ù7ºã`î
+"*Bêò2´ÿÚÓ¿ÇÌmÝìþYõ¯ä¿ù7ºã`î
ÐbµzýÏ'ÿ¨%jcdklnc
`aç 88¸!NØÌ sc + è
fd°±uMzâ0±u@økCA{Îhòwì_ÈBó
Àhïlë46´ú×Nþ3Âýß#ÿfc0Ú8 m¬&Dÿ;úɬ °³ãï ¨µµÁï;ÑÌÍÎhó;Ä*kkü;Ä`t:Øþìlmÿ0;HËéËïqvðPiGPËÿaPaG ËuÙ¹þ³²ý#ÂýWµù¿G9 at 3ÈVè7q
h¾è?Ä rûM CñßÚßêäoUùM K¹ßª ÿq*(ü&п ´¦ÒouCù7¬Õþ!Ð
ôÏø·]=Þ¿w$bø@"F¿OÈÄø}Yàø×!üAj¦ ÈÍìµÛüIXþ «?¤aýAÏ$£ÍÒ°ýAv HÃþi8ü?´)N ÈÊùY¹ü «/< +×?dåö¬ÜÿÆÿ}ç ÙºzгN7èé¯6s¸9¸½þ-ÓÈÙô$:ý}¥®®ÿasÐEºçlx,ë½Es'J iÀ
L¢äj:§Ûý¢Á
@@ -647,7 +642,7 @@
2ü { -5*¨"RîeýÂ8ñj/]]5Y]:_·ME=U±+ö§H~ó&,&Å?¦qH÷-Á${tÖàôü¡¨Ó¡F¤8_É@¢PÌäl´6OWÖi³êIEyØænOJùÑ(;ïS¡KköÐ#%¦ÞUO2}V #)Ó
¢Ð{lb©ê3뺴{[l
NmÝ[ìû9o1WÏÉ(¤;ÑÖhNåÑ;41ãöqÍÁõC>Í#´æ/p¥)ü8:u
ÐKéi½8ñ¶2 FIÊ~Ü,ÍIZKtF]³©¶Xü08Q¶§Fæ[E!zÜíöbI
ÖÝ>ܳý©bfgÍùP jp)µO°²kÿ;Ãd
ÙÜ_·¸*Ó[ð÷¨÷ó¢Çúî&ÏÌñ!nÒ¸çúÇcÈ;ó{Ü~1#1HÌÖ>ZFRnÇhBTçÞSa ÍÇÑàt¾&ºÿüðã'ãb&l Î,XXEÍÒ©ÉÕ/¯ú´F®$Ï
È×Y-LY%¾É]=¬Ë·©Q]èùlo·G_{©M$¶Ý¢(J]ïáÜ3âøDd×&çVÒ8®«øïuÑdów¢~Íü)j¾Q®¥H½ÀÌ=¶Yâ&)åA
6°ïvñr-ïàÏ×Î$NyÛï}n¶Ç`zȳsõ«Ô\$¾[¹pì}¤L( 'o*þ@q/Ã>ã$s:£#ݪDqnËoùnA.¯'Tè@óÞ-º0-8;Ór:þ;æÍÇ4þ©S¬sô/ÛÖ]Wù`¹·Æ¦¿2¥Ã[´db¿|.©CXVòÍI
6pyl21Ûë «K2#m úÕÑd¸©Ù§½Þ{"¶"Î$H¿
-5~øñ|ozļ`î¶
ZÆìÆ¥olåÚíZf!oµíÇIño
Kb]ý,ËF«?/eíVfb [ìqÏTC?>ï"¬ª¡ÜÜÌgC®¨hÌPr|Z¬«T¿·¨T3ÞÒSf2[à Æ£º^púH#9ºwwí¹ï×ÌvuÏuØó5¢R!aàzw©¹2"= ^wVÐéù6~ Ã6ÊKf"¢ùBìÄìæT¬Ê]Ï»Oy»¡ÿhk¾JÚð|F:HJ7§ß¼afüÖøRFï7×Ôôcú³Aº4ÞÚ+£8ààf yP'M-2ÇxÔÄZº ÿQDì¤ý´[(ñºìPWsÑ÷
×\fTâ1Èòâ*jB8Æ"²FÔ¢å{¢'cÙòÛ㯷âý¡WÊï ¸ÓÒ5]
>^G#aâtåÛyµ_ÉEsS°ÄÛ8ss6GPMÀM³ôÍ{k껫Sæ=ú㵬6Ò.£hÅñÝs$M«,çÆFÚ¼d`Êv§Ñ5i{ÌWÊÏÕÁ¾EZeP=Dí²B£6Ñû;jLøisØÁ÷fú?üAøÿü?±ÐÀÁÉÖÚÀÁá¿ Eî3endstream
+5~øñ|ozļ`î¶
ZÆìÆ¥olåÚíZf!oµíÇIño
Kb]ý,ËF«?/eíVfb [ìqÏTC?>ï"¬ª¡ÜÜÌgC®¨hÌPr|Z¬«T¿·¨T3ÞÒSf2[à Æ£º^púH#9ºwwí¹ï×ÌvuÏuØó5¢R!aàzw©¹2"= ^wVÐéù6~ Ã6ÊKf"¢ùBìÄìæT¬Ê]Ï»Oy»¡ÿhk¾JÚð|F:HJ7§ß¼afüÖøRFï7×Ôôcú³Aº4ÞÚ+£8ààf yP'M-2ÇxÔÄZº ÿQDì¤ý´[(ñºìPWsÑ÷
×\fTâ1Èòâ*jB8Æ"²FÔ¢å{¢'cÙòÛ㯷âý¡WÊï ¸ÓÒ5]
>^G#aâtåÛyµ_ÉEsS°ÄÛ8ss6GPMÀM³ôÍ{k껫Sæ=ú㵬6Ò.£hÅñÝs$M«,çÆFÚ¼d`Êv§Ñ5i{ÌWÊÏÕÁ¾EZeP=Dí²B£6Ñû;jLøisØÁ÷fú?üAøÿü?±ÐÀÁÉÖÚÀÁá¿ å×îAendstream
endobj
47 0 obj <<
/Type /Font
@@ -656,14 +651,14 @@
/FirstChar 11
/LastChar 122
/Widths 112 0 R
-/BaseFont /ELUPCG+CMR10
+/BaseFont /DUBXOL+CMR10
/FontDescriptor 45 0 R
>> endobj
45 0 obj <<
/Ascent 694
/CapHeight 683
/Descent -194
-/FontName /ELUPCG+CMR10
+/FontName /DUBXOL+CMR10
/ItalicAngle 0
/StemV 69
/XHeight 431
@@ -683,33 +678,30 @@
/Length1 1041
/Length2 4846
/Length3 532
-/Length 5537
+/Length 5536
/Filter /FlateDecode
>>
stream
-xÚíg<ݺÆDÞûè%½}£FDQf£¢¨Q=ºÑ"BôD(Ñè=Âdïý¾9{<çÓùçy>¬ÿ½îukÝ÷z¸Ùï
TìvP
%$*,*P© D
EDT¸¹ÕP[W·EAå ¢²²b
¨fùä$%äD¤¸jw?$ÌÑ àSãÿ$
Pq"a[8 drºa4 ¶® 0¢ü*®® £_+<FPO(Òj/L$*
-°AP ;¨#NüåIî Hÿ#lïåþ¯)o(Òc
-À÷Û&? cÒwõØCúÌnPÿ
[ÿ.®áåêªoëöKþw¥þcÞÖ
æê÷Ï»
-öP$üßSÍ ÿ0§pým´Q¶®0
-ÜÑ
-ùGæ©ó
Úß¡ N [WOèï8nÿï0
ûm ¨gÖP1¸ýÏþ¼g£ýÜÿýýEÿfLu0_¥¦¼¢DÌû¯Õ¿mvAØÃà 1I)-iëG¹=`p{¨/ êq#P% LIH¢_
Ý1=AØÿÿII*4 ¨ö7É ê´8 ¨ýÉ`üa
´ýDED @û?P þb Ã( :ýC°?ãÁõoÄÿ1Ê?£ìþb FÙóÄõbàõ7aý~ã¶[Uá $9¤È/% ¬Ô£ÿ ñB"¡pÔï skþÅ0ÌB}¡¢ID>Ü9µ.²$ènþH) ¶ªã»xý7mæ°]ûu=ækÌ/Ê2¨H×ðÖØ|.<c
5v{ħM\yÛ¬eø70düVÝ9Nþ5ÖmKbÍ,I¶xݹ×ó-÷ºñúÍ/ìXíÞµí/Ã¥¤Í52\M¢"jxÄÙÈÓ<JHDÍù''âÎ
9GÔßþ¼hò¢¼È'ÈIº²Æ:àÇÆz2>BÌ~gR
-}Ô°P+-$+Ù¹µ^]Wòv¬`j[½¿xûRCÍקáäçòûZÖeõ¹¾2&
m¶¡ñÓLÏ'Z®>ÒU-§§Ø4ßD@HûzãÂ3j6xÃù´å ×F:h¤]õ
ÃnÒ÷#ÏkMÆa'R½´ø_W?(Í+å÷!{][Õê+õ*wr¨Æݼª>Âb*uòG»}^óÐ÷{u¡=Ëw(ËÇÕ¢²¿¦?¤îÊ&ÚexÕób g§º½9QBõL<&:ðÝ{Ø¡PXn×-¡÷iÔ|ÂÚÀAa:iä(pÝGÑÉg+b¡ßæ_èËÐLFzØ'IôFï}ÏÐgfµU\ßB¢ásaÕ¶Óæ=3Äv>"\ÏEßhà¸vóI~¾E
@TDv^ÛËêã#µ;ú»*¥|#xháq(¿/ûTè_`8»ßÔT&,P'}[ZyÚsxW+V½J#©(Ô4»
je£íÜ.Lì"UÿÙrKNAß6³<à]?õð@{Üï·ò{Þ§¬±6¨@4M:zbÊS/><¯ µêR¿°#´µl{ìyM×|Ù¯KqLâ2ö3Rö|cËRC³/ÈÓ[¼ÃOîåý¢s_T}zËTû±3Ú¶D»³³ìmD:^Òä KY:Âph
Í6Ô鬡C['~ñ7RX¤Ç©ÛêvsFþ)<k©º´Öïô"ßÈ]ëTÈÕÂ3ÁÛzü}ÑÑâS¬/ëÛØòÈèÙÅâá÷%;?ç÷4¬ªkRpÇî¡-Å*Uí×á·(Îcæ¯tw2¬jNU,¿`ÒÛ³Ç;?Ü;ob'Àg(Ú'4ee®Ù6
$PÎ@)H¦ÓX»§ !µ¯òÕõöù
ZËÌÊûF5ß©·E>Ý1ãßoCï;ã
#ùxtèìÌ÷eU_7G_)ühKªü´êçCHø`«rLª+ø®¼Ìg,Çx¾o3æ£òèÙXÜV¾Aèh;ØÈRñÊQÒl±Äu¼7½©vßöEø1ΰ)äCrÕlÑ˯üëÇÝh&TJ{ÓKf¯ìI$ÖÂáçÀ¶¬è-6/²¸îkn1ÞÐQ[üâKNrÊ#c~öyÉSË{ö%
?v ´éE(\Óñ±gèÈ}lÁìá,×Ê$5ðNpDÉ×û~è|Îc/îÃò'B·4ÕôØJ*NnéÆ×E'FÚg ÿz»@˦é¥ÉkÜ#ÜW¢0o2âQ .ÐêêƱ°ðu¯£fMaieX%e´9ñ¶7<ø8ìGè¿:«áU?»p¿mnc ¦ÙµÓ&T´ù¡ì;*Yñ4]}¤çÛÉíq¥Ü3§8ÍwèCÃQÕ(
-²^¥Ò²º'§ÔÎÚ©fe\l®îQÇ|ß»þFÕdãÚ<PZ¡Pw#?úàÉömdʧ
-^XvÙr%Àßãåà"½][<]ѱG¥§^<>>¡DÏ+ýk·Ã·õ^ÑÒVËÄ$qû%<êÏéÞµÎ^î¤Ä>P~[sdòyüìÃÓ2s@äôKªúRk;Y7¯ ø
üäµ÷'(ú©"Û«k<üg
-±oÊ
-©V[¤8:ÍßûÀ 7Çb÷®|ù°ZB>ÓÔíô£gðüDá¸Ö<éÒÙ{üz +<ûB*/û^sÊÍ.gvï¨á#ígðF
oAvL0<<ä#¤LeuôàWBÅ\IzÆâä1£y^üÔ'û¬;öë ¡;橪Z8*|?ÖâLk7åZö<ÏáP©zPåM©Ó'új,Ù¼R>
¼%üPéÀ#æ0äãr@®6G DéÊ»è7}¡tä±Ã0õ
»(BÑyÏÎx9ÝêÙýEôÏô1ÐqC´YCl¦µO
Z=©TÝð¥c Xgʧ'¶w ÍgyîÇ7(õªý3MÚRìï¸Â` b5§~£¹=îZ¡äª§û=ea21ãð]î¢ã¸¡r>/êB$Þñ¬¼¤Ó2S:Ô=ËP5ØG§º{ïc6ûÝ3`Ç1 ]°ÁÀMÓ\ÝùúIõMIr÷ËPôT,;¸ÙÆÐÂÏ_:Êèç-¯B_ª^o]LKÆËǬØßßtÚ·0HW;Ác=o´ÚOu,ã4É©Xï¾ÃE8êZ£üL¡8#oqï?r.7§J£Y©sQÓÙQ¨äkÛßheÈ©/%Ý)ñ7LØ,Ø´M(VµNϹ'_ú¨î!ù¢IOIàuÅ}Æ&h±?p°gØè¼pÿ÷î¾^ÍWùb¡Ã^u#:OUæ%,~âfda½l8m¤:<BW)kuÁÈ£Î|®[±ÍM}ó>^øæ_ÿ 8´ySS<êq¤7Í.F>±/d]à\JÑ:ÆÉ4lÂfO(2VÇ^=t³2 ×Nð\ýðI¿Ç|{jø°öÖÆ¢hDªGÄ¥
-#}J¨É°L×zxó¤áÐwl*G§
c³MÎë[¬¤¶jS@éôéBÚlÎ*Ñ¡K|2àâ~.å<Ô
-κzgÙ¹v®ò¥º>Àା(AÆ;K´p<ó,æé(öòRHi)[$ë¤p¿'9ê©ÍhÂà)N{ôÀDT;=Ëd3p[{¾¼3]#ªÞÿÄVÞ`$ÿ2üDÓoNÇ0;6 $û"&Ø`-]ãùl
Ì¢ç^\9ÍÈTrËGKú>6Là¹cò92äúPqbºÏíÅYYÕÁeÏ9ÜjÝ{tÌîj3§ÂÝ%¿]ÎZt*%CyÕ´kq.,2Q*ã7¾(jlQ8ÍáùþyMcÙ$PÎlh¥ÇÚÒ8HOÅÊT¾ë|/:xñ®¼qx5¹ÅSå:c]@z
»M/Ü*ÓLõFÃVmy£ 5n¤ rȳ%ñ3ªÊ^éb9=ÏòB7g·¨7IBÂKsnrð6 দ¨Ý
E÷üUQOäÕ0ZZ
-íí+3füb³GZ®ÁÎý{Ø4e}×BÜI3=<ÄóCÕ½ÜÞoªÃÉZ3î×kz4ÞkÎ¥;éÐrÂÆ=×÷ ãÁ.Q]¬æ ³JÒèÐ}Ú¦
-P0ªgx"Wß
Iî2xÀ츩 9ü=×Tì
3lÊ @N!°ÕÈË®©dñ¹_ôõ½¥B§W®i¥óÎUÀ©
-Væî>x¡åË,qëÅÆ+
56áëVg/L¢ý¾NÏ|ò¹Ãµ:UVüR¶ÉmKè©w+ãkb±'Ëb×pÇ#ædÈ@Áÿ¦=ý´ðWÞ³ dñ\øbøÝ:½*¿(¦²Õ¼·Zá¥A¢Cø ð·TæÆ\kZuH¹³=ÇÊUèÞXZ³'©A\j®H}©Ô¿Üy¤\§÷ÔAê±D\B
-"V
§¼}+NþoåANúñº½½¨ÀÔWT|UûÄ)Òz.`CF¹ÓF¨¹¿«¡LÇ#°Sfêá-ñÛÀõàö§ÆC9ofÊ6^b¿qÌö<¤ ¢³)3.±k¥Ð¡3<+]¥N~'.?.:"±Ì"?¬ ßp:qó·ùÛs<wø~0_l¾j³Ì"N¯Ëì1Z)¢Û¯?YÔ´tëþP|&Ð:µZ:¢\¶RMü*Ä3e4[Dã»dlw¤ãCcôJ~¤¼v hy;Ù'F+*`)[°Q£Jèh}bõuÊ$=84ßS ¬[h-Y
-²¿èùe§ôàµV@ÍÃA]CØsÕFý¥yQ]Asy0¯êËUÉg¬Ø/[#û|+upÞå/:ùõôwìì{n>èÛSTÀ-©6ËÕÎ ½yÌ×4êè6REÄÅñ\$s¾P9JÙ)Å
-5RLîóYræNñ²êËì',´xÚ$ÈC2BfkIJifnàms°àt[&)k
|ëÀ'Ú4ãÔ+9gò;ÎÃ5/³ÓC&4'GÑÑ ÃräüøÕJV` N¨¸I*æAõB#øO¯sEú0ÞÚå ÞF©æóú*OóDYÊÈs~çØ>P,gúˤ³LIEóµ'Å÷÷ò0ÜÜQQÃéxOÎ £KÒjÙÔÁõºhW£ï5ES+ÛO6ßF'ìÃ4ã³Ç
-¦-LDd±Z¢õ¡3|Öß#M;g}¼5
ÉRzHôÁ¼SeG¿.Om}xéð=ÑDè<`®SÝãÖc±}¶Ìx êé·¸ÏW¦Xè{Õ=úòX$Nkh¹`Ï:#§5âËUUÌ9I}i]KhpV²rp
#kRÖc?®[MmÂC7B%BÇVfr¨äé>ù=Bå¡)²:tc=ÂZ{
¥SnzïÉý÷È)°ÎÜÝ=J}xlL¾
-¼¡Ð"PÆQ }ÓZsäñ¡#§çàRPu7Á¸¦T|Æ«Çi¼ü½²Åõ,OYåuy²§$iük«RøTïâUï\*´
Í\:äNsuWiq¥òò$ç8×&ÚNÚ"Î$§I®$·»ù5ô8Mj&_䱡Ã>í½ø>#`!E
ûùáãQoºvÓ|R<´62«7»0R
û8}·äT'2©GõG'ê ò¨ÞåVÜvÌ$sçn9TYðµnÏÁ¬ý[u_6Çú½â¼1·ä8zEJ´¬ÔHsR[ÜïmÖÝ ü\)Hûp[·Ñý*d¶µ7ýG{%¨W1(0¹5ÿôþÀ¾ÙÈ×.Ô1
Åh:ÖíOÄÆþø
ݯ¯_뵪'¶Ø0¢w|´¸lÕѬ
-TÏúÀÓ÷ÚtÔ¥ìêRLïDõ"n'Tq®¸Ø¨Mú¸zõ²µ¸0r¨ tZ~í¯·Ü`&xV1%a´ArYõ#êCÌØ(/?bE×}ÉÏÇ7£®Ò/ß±¯ñSc^T³6EZ4î~ù´uKØÝiº
Ïãx§#5"À#yAúX²CÉI.ü´ÔêRº3²pSÊÕ¾¿µ*ÇÀDSLàèÉfö Ûæ7å¿¢4?«Ã{qväÏ,¼¼ö¢»Í#úy_ÌÁ¤[õiêÚLÇu{Ìë-YâðoݵyQaÉy;-ÏýhL ×ÝHjß~ÊjÂ#3g
yãT.:l͹3®Z¦L½¿NÓ»²#ÒèEsÎ$Õ*»ÞLXÊ2âÀku§ò¬ÅRb5xofD[e~ÜmVë×p:k¯¼å/Þ:TPßÚ¥VÈÓ"T
-uÄ´K7`z-ºKµC³¬¬Å%b" mß»$GÞIåêu{M)ífï
!WuoCMvvT`@«Ã«Á4¡ÏÊyU¥öôG/øVÛ»ýÓór?*-Ïx2äØGàÝVѬ§·FwõéÇ^|®$s\P3ÞxÑBh1>kÐÆhÿþ
vAÍmÑO7¥§Åµ0¦µõÒX~2=R·íÀßw¿rç幺a'©ÕÞYðã®i'yçëO"¹yxÊ9óZäøý¿Àÿ +ÔB¸Ù"]þG?
}endstream
+xÚíe\ݺÆi ¥SjèºAibAR@:Dén¤JDNAii%Dº%ÎèÞû}={<çÓùçy>¬ÿ½îukÝ÷z¸Øî
+*Û!l¡ê8JPDHD
+V1 «sq©"¡6(²AAe"22¢ u¨-fùd%Äe
%¹ ª7$ÌÁàUåû$Pv
"a8 lrºb4 6. CEù]\ ¿Vx Päc¨±ÀAl¡081ð'-¸= õ°§Û¿¦CS Þß6ù v¸ÀjOÔC`vb¼üoØúwquO=×_ò¿+õó6®0f \Ý<QP$ °"áÿj
+ý9Ël£
²qAá.Pð?B0u7Ôî>qØÛ¸x@Ç¡p»·)Üo@#m
s5Ðöô÷ä}eäãöì¯ìß,ò7cªy,1åÁ$bÞ,ÿm358a; D%$6H¤1æö`Hà'Áí Þ ¨7Æ1P@a 0%y°G 5T\ tÃôa÷+þ;$) *ÿMR êß$
þ")1 Pë/Æá_i6Ðæ/ íþ@ úö 8 èøbÁþ@¿SX üÄ(#þ@²ÛQFþe?SÔ9çß(QöùÿÙn· æX¢Â¿Ä2âOþ[&ÄÂQ¿&ÌùÛÃ0w
+õBg§¹P§Ôð² µÂÑr|~l7qz¯:>¶ÌÄc»¿×qç_¨3;¯È "]Ã_cõº`ônñ×Rßyê6yµöØz-÷Ñl?ì³êÆ~ò¬¹aâpKûÞø²$ó½Ù»}ßóïóÖo|fÃê´x\ß*)e¦ábVÇ-Æf@æ^)1ïE7?àAØxçÓ¢Åò¼0/ñÊ
+ëBãq;rErkî£bð¦Åz)A®ðåõÊܲ×Ã``cÇê¥;êªÞ^MÇ9ßÖ³/æ*å?tØÇÍ(¼39l»ú@/X³ºo7AØz-"
Hè
Í¨Û àÒVÅ_h£¶µ¸ú½¤oG_Ô/ÿIöÓ|Y}§¸ Xø~ÙçïÒ®ÚXitxR½©{ãªö±ÜÑíúiEÔ]Ï'ë\k&?÷@(³%HyoMoXÉ°'xáÙÈ%ìúêXUìEXÖs±è¨8@
+Ûãûb!Ù<×øþg5òk÷ôÓÉHÃÇPD{l^
+^Xau°Âßb{<V2Ò^
üpâWz¼oû¾ ~bR]È,&x½Ré8iÅí%±ÍÞðæ´xþ<
+·ý~Ú,ã =ó*þÉñÜÌÚ£CÕ»z;ï)¦ '|h㶯| óLp$÷½1M¿vúÒÇÈgè=zbI°9xvÜÎJÛ3´UÐC
+ºl;Á#§ o14µØçY?q÷G»?è³ôy: ¤¾6$O<C:vlÂ]«'62¯¶ìÛÙXt<õ¸¦Ço½x¯CqtËy"ä2\æìÛ(§
º4oO»¿tÜóqJ÷hfÓDë©Ú¦L«»£âuX:~â>±Äs Y:Lx
Õ&Üí¤®M_«+vþ/\H¸Ï
±×êzcVîÙ-s8yÎ×ÚòzóBt½c1g÷$OûÑ%óç1Þ,¯aË£àççK?¾Úúx9½¥gQYã<unC,Õ¨h½½Iqf½p¤»aÅ_w, `ñÞ¥2ÎéÑîY!xÉ [FÇ4B9Y¢\¼5ÏÒ;CªÏ*éîñÝk¯0]¬eR?xT`¢Þþpz×o¯5±go?bäåùÙ¥½Cx<OÒW!X{mdôíhì¥ ÒàÏÄê«>yDD7X«Ç%{Õä¤?a9Äùò~±Q@ÏÊìºò%BGÛÅJ,D`_byÛsïÉ
Õ6)¡G8#¶&wI5s%ß¾ðõ¢QÉ-L¹SH¬Å}ýOþÉ9Q¬öÅeÞq:ÞÓؼ&®ºôÙüÖU*·´ÙMÚcR¦¯Xç2iø°Ë ¥Tw5Í!äO½<Gæ
+lcä¸T'ªÎâ}yàN&à8rö$ä:¨¼Ó¢¡ªËZV½|S'F¬!*!ÜîËØ;EÖ-Ì-&î©ïÕÄë
+¦Âøã-¯p¯<äÅ/ûµokÔåèWÇVSFÉl=G||·ÇñÔ=ç6ât̬kué~L,òý®â+"Iá$4Ú÷õøN´bþ)
î_ã
ú@ÿxL%¬¡M±¼¢¡/òúIËi'Õ´sõá}êè»×ß©Z¬]ZË«äp£öO¬ßGçØ©¼ÚàÀÅeçMB]vNÒ;õ¥3U]»Tø ÒÉÃiJDé¼aÕ²oýVèn-mat"'Oün© 1)ø¼Uîr7%ö¾Òë¼CãO§ïfüÂg2©ËÏme\='áçrß /E¹>BAW&¦î
+¬Y×øßËǼâ¯(¦Z}jnl fï6{#æ5
+w"ÚÙ½òæÅj
+zÍPwÒÂbÛ¤ÊçîóéƯpï±ê+gdpÈÎ-g÷íª ífñÇnBã·Mö2<:ç'¢LeqòwçSDÅ_IxÄà
åìÑUc|ÔÇ~{,Ûvëàá»f©*8ʼ?×âë7dÛvý¾ÈcW®Éô+xL®= 5b(Ѻ\:¼)ôHñÀ-j?ìå¼O®:OÊN¤táYò9W<tßæö
dæ* PpZãµ5ZN·|~wo }>>j*2mÉöõÊ£Vm$l¹p(ChO{õÒöÜÆLóZ§ædZ¤ûùÝWZJ=¦êüLÆDÉïLýoIÈÿ,^´îÄg,¿ï¡%JÖ¯vq²×W"Í1ßá*©:®äõ¤.FâÍÉI8.3 n9ú*¾8Úµ½»rÙÔN]G·èï
Þ0É×Yh[Ý w»FOÇ°¶ZëñúJEà¼æ5åHÕíonËÈô{Ê"íðãq·MhT#<Æ·Ýßnºk§Ed\fµóá c
òå7âv½Æ»oöT*ÀENºÜd8ãðµì*°ú'u -
ò`¡n;CXnPc9ÙÜvaÓ¤õò»
øR
1«ô¼ûq¨ w!|EþUn·@K}C}#YrBe¾?2ݼÝ=òÆ@G<Fµ#ÄÍ/ñrsC°2N:¨ÑU!J]¢°²ÒS¯ëv,âV³ãÛÞ
þÃ~ν+¯ ìZ<ÉGFÉüî8R¦ç£Y÷
³CÎq.$ib¥ÁêÖ!sÇÙÄ«ãY/¦\-ïÑkÅ{¬þðû(Ä×g¶5=JrPóÛHXª{î×*=J¨ñtÏzhëþðl*{ÇÅ#Ó
öîë,%7ëÁéôEéZ¬NÊQÁ_y¥
Kßs* VpÖAU!¦gZùâJW =9À ´$NÂ3G¼x4÷<úÙöò× òr4ÞhÎq3Ñ^_RÄ3ë±ø¡íΨÁÉNzæ©Và×BewºzD+$ôý30ke\eè±Ï0/~nÁÐTÄÐ1iõõ\(ßk#dp½¸rå8g,]Í%~$qàýT?Í· ÚøSxÐõÂäu8Ë£º¦3Ç)6{¤ÝªÿðÍÅz^«Gn«¥äDR,ûªeÇü]\b¬XÁgt^Ò4Õ&ÇýãÓú.²
¿IßR=¬¥9a
±rÇé~T4É6Ih¹ù3¥c:#f@z¼´¤5u?Ü2ÛT7a³¾²Y/Ü9àÞ¿§ª±Sm9_N·8×ÉÛÂ+éO÷Ôú®(º¡!b{nÁµðÕ2¸/üj]5-ÑæÎ)?AP)É=CGóÞöݽË]lkÃA®R q|P§ëÊ
¬=ûðA£{«¨þýÖ|º£X*MGl¼3Ýw2n¡2¥ZvC º[T~òÏe{!ÉQ=÷29lÈkÌ(ýdÆó&}ž 'öÛlæaÓP4Oqz¯AúÐêþ¬b±cKZùS
ðòcѪå¼ÚÃU(ovk?6~e8x(³]j·¼}z!Å8ÊçËÌÄìG/5n¨åYàìÂç
.
+lÝ_J59zFº0%á@^ùµìzé
¦õr¤ KçC?:ÃÕtk|"+V«
+^Ch
úÌ/ âᯩλÕ
¶kråzW*Ó½²°$g6¢qª>¹ºuàÕLú|÷R)¾îOBR{ɧâ±ñÉYVÊÎÍX=úûª<Õûyé£$ëvÎ6ô"üÓ_Pq5'H«ù$ÂoÒLÝÖULïK8*ÙipÜý»¥§ÝË»S\ìÜf45¬/÷j¶ò¡~óvÖ¬Cîã!È#
+*:ëY£2Ûv
+m±q}ÿÓòUê¤7ÒqgrràCòQ+ÿò
}ª È1úS °p7©9ïÎ=x÷'Ó¹ñFVEIzíxÁÂS÷¡Ôja÷zS%-h ×Þw¥ghBÍ˯§K3Ö
+" _¹§
æêhç®´±h´n¹ß¥pòK{ÎÑ×Sri´"ü°E:yYªø®öH+¬/ÓÆ·ÒýH=T*z×$!{K¾Ùß·H÷_:cµùð×=ÒÑ=4#t_mÖûºÀ.¢#`&gÈ£²Ë|Uö +æssó¦ÀèïJgùó vaã$ý]»&»¾;¦àøg~zvUpªJÕÅ3¢Çܦ¥ëñê
tßR
ÅÄð%ò¾R9HÚ*Æð4SÝÚã«°`ç/
ÎæaÑÞ_ló°N($fÛ]æÖ)æÒ
Ï^náo±3ãí÷Z$ÈÖz73hÑøMP¯äÊ.mº3Gê2sÓ&5¦ÆÐQàJäÂÄÕJN£?N°q,*úaíb³!®W¿SEúþgÚåx þ·r5öÍÕýsgì|N1³^àFMЦó¬tYUëµÅ·r0û0þü\U#éøg °ÁiµLêÐzCÁºÛÓ+ö[¯£â÷`q¹ãE3æÆÂ2XmQzPñY^«ïIá&Ýs^5ôÉ.ÝÅ`SeÆ^¼¬Lmtnÿ#ÁµLä4hgØ ²Ë¥Ël5ö*dñÂ?<Ü÷Þüo
B±÷U3üäó£Û$±ÃËEüVyía¿YvQ5ÁAëCsÕCk4(.ÛQÃjjGì4>º*<¾2G5(D÷Ñç ª MÓe¯ãÒfÔ-.vÕ}Kîã°+À@N}xÆïææ^Ïmmü
ÿ
&¸<í«öºC÷]áÜ}û*ëxñFuåb³}¾oÌ_r<dV¤×åÈÝJã[[$ z+Wd¤r÷JD¾#döè¿ß%{¯³J'YP 1ϱ6ÙqÜqvæ8(î¨?sëJâ«ãÐVÏ2ƾ.qÝTJ>1+:äãnÊY~sIjØåýéZ5qhðÚèîÜâh-ìÃZÙC¨vxbÊÏnT$ò°ÑùfìVôS÷NTIàå=¼¾ý9Uú× oVgÆݲÒ:QפØ[`ô¤HÅ{Rbm)-1×9û¶ð3Å(b¢-f·« ¹öþô#n1ì~ÛþIí
'÷LG¿ô h(ÆÒ±î|$á§4ò%(.î}¹ÄtýR{¼]ùÐ4 ¨4ál¬Íú6zÛKÓZ©f§ºè~>`8óÀ( C$y϶!ÙänÄ 8ìN|
dzµêg?k3 W2B»ÍïRto½ÃðyÕ´¸Á·[5?#ÞEoñðÑ*Tõ<0&ütt#âëUúÅí7lk|ÔèÌÑZf#ÀpºÚw×øoÂ-7PàY,ÏL¸zØ¢a÷h@ÌpR¢3-5HRgVæ#^rà¥lýÛ©¹9k©²4¥Ná¬6Øh/?rÙ->¾+J¹¸ÓüÓC_&¡ÀµV®÷¨ÑûSÆ®µ'©k³mìì×Ñ/7eHB¿÷ZÔ´G$l·½Hò¡1!Zw½UÿôcN$>Ùì¸xØ}<§zÉ~sÖÔíöªEÚ½é·×iºW¶Äê½1h®Oy#¤×éa_sØñÛݨ
$=ª1Ä+ÁXÂ72¢¬3ßEí´ª¾×t<ךּé+g¸´¯¢¾¹C-_ ªI¤<uȸC7ègr-V£Ú¦YVÒä6æײëÃ[M%ï¦òMu¸³¦v£ÿÜX³6È;̾.GËO+Â߯ÝáåPàñ'¥ÿr;úÃÞÕÎ^ßôü˳yva8$§w¡5ôéÐ=z1çªÉ¾B¨o㦴OÌÄwÜ6 øDÿÝvQÕuÉG'¹¯Í¥8ºµé¬¼ l& öÜ®Üx¸¯pÍ$´Ò ZÛ«><3uíq·ÞxáùÞØ88Iå})ü?|ÿ_àÿ ÄjD!\mÎÄÿ^~
~endstream
endobj
44 0 obj <<
/Type /Font
@@ -718,14 +710,14 @@
/FirstChar 46
/LastChar 121
/Widths 114 0 R
-/BaseFont /LQSFAO+CMBX10
+/BaseFont /TJGYED+CMBX10
/FontDescriptor 42 0 R
>> endobj
42 0 obj <<
/Ascent 694
/CapHeight 686
/Descent -194
-/FontName /LQSFAO+CMBX10
+/FontName /TJGYED+CMBX10
/ItalicAngle 0
/StemV 114
/XHeight 444
@@ -745,28 +737,24 @@
/Length1 933
/Length2 3180
/Length3 532
-/Length 3819
+/Length 3820
/Filter /FlateDecode
>>
stream
-xÚíy<T}ßÇ-1LB¸£bìË 2ȾdÊ,ÇiÌ0Æ.ÉZ)¢±D"Ód-Y"²"E( ]¶÷Ôõ\×ÕÓýçóüu¿îsþ9ïïöû¼¾ßGZÒÆ^ÑKFH2ª¨SÑZÚ©h*0e¨´ôQ
-¢âɤc(*¨¨Àá*¡PUT4uÔ´uTÕ¡ÒÀQ²wó¤²Gå~i^ A KÕôbÎÀ =©A0ÀHì~tøv /Hñ±0¨
-Åc¨ ÄáIP¥ÌHd@ëÏ0ÖÏû¯?Hñed"å ¦D,D° TÉÌ<d*ùÿõûp¤h
òú1þÇþ-òÂþ§ìåíG)%RH¿:j³±x?¯ß³fT1$á ügïÄX<ã x ¾àÏ8HÂþ.¹·Ì4AþÓÏ9Duòþ{êâ¬ò3·CÁ®Ê0eef!óýëëÔog0d,ļ BAA7I@
-'aÁ@ d
-VÈTfÀÜÉ9ÀLþ°S]PòfzBÆþÿi«JÓ4%Ôߤ¡þjîd¶zþþJ^ÿ 2 DúUJ~Af¯ï/ÈÔIýªüþAU¦ª øïFCÕÔ EU
e ®®h©ÃÏý¯:
¨?ï8ÓÍ¿ØÏôA´ÿ
£EH¡ç¾¼Ç!Ïj«¼jõ ¾§fgd_+1¿ÍÜGþ}ó:ÆÏ;Î1.°)ê÷$Ô¶9wÁçjZïÖ¸¿û8-ø±¨ó"Í2hÌûÀjäÔîê×KÓ¬ÖÝïÛéÉ.w2ç§rld9|J²<uõø4=JSËI#.Q´ãKó¡_T
-àK¾¶c¨+2ËõèðÀùßÞõ\®ìë[g §³s %3½ìwDUKI)¹©Òwä¸á÷nª&èÈ~#·½òÒFLüN_c)áMOç:;0>Óõ~qó²¬õ]e5¼I`#ݸÑ{ÂÏT%äÞ»Y>{úßÉ'Þhâ-r¼~`Blû´4Ï6iï[ß6¸©F~í¼kSyw²ÈºªøàÌrîð9¸ö);AÆ{J3?RUÂqñq³PºÔýGzÉ
-aÉ×+XJZÊj«µ?űyü`LTï¡kMñ_>æ÷.}Ô®L¦tÓ¡DzÖÁä@¶¡¯2RÈè¬Õ:x¨ß(a ¯ô!ªaàNI¡³ÕäraÙG_££PÎ
´F3âc¼â+6|ìõkéÆó}ÏÜyüP¤ùSÚB£±Áøî4êØØí}é¡2+¯"3«ßÆ!P»xBo§Ø>Á~²Wº;r¶»Qú[üÉ<ô½ÕÓZ"yúô7(êôí1Ì´=d´Þ>~ao
-J¨EZ±bCµ77ïpòz¤vX»ã³L|µ¢äixÒÇÒµsªoÈ/¾ZàФ»¯Ê×KøêìaÓVíðÜ@_ÌK
8ºzAÒ2^߸ÎÂ/ùà³*û=k,të\ÒµG±ÓõKml<eı\
-9'ÌT[
Éøù/
-5(ý2ÉÊ£ONFR(¡èÍC;Î[°ÃߦïQ¼~KGk5ÁJ:º± jQéÝÜYÉM(ÉiÃ8Ø|]Í*õ6Ð]z(L[ڻݥåßή¯ì¼_:ewDûÚ®CÌRª8£ÉżÓ1X/ØÒ`®ûÛ
Äe£V.uÄÆr½³icµ$:´Ò_ª7ê¬ÉƧtã4¼AèZÆFÓÜÛÖ·â}IkÑô3ÃÍù´RE7÷-Gò«{½rûàóÍ:¾©Vf²¦kÝuÁQÎ/·?ÇL
aqìIÄõ\Ï´í¸KF4ûbÏÚªæ¿èJ¶G[Éù³÷ì{6Ú-¶<¥9
ånÄèí3í.ó+pwd¼/u§²}Å[ûÕÆ¥´GCêÕç[9t:&©£mâ
ýåñ<8Ú1Ü'ý¼JìÄqHL ñ³¯/òBÞ4nFx-8dÈÜÖeÝ{W~<1µ¥3~q_®«IÙö%M¥ïá>¹¬:$Ö'{ùz&tkgNܵ
(§ÆÚ#ìa:A×IÇ<²Möß ¿ÇÖÃñ®eXé¤\t"áK,!þ»t\¾s]Ff$Äñjîê;D+úÒ
-ãÇOIa'QÈ/Ò'"ê")hÄè>ã*[ËéÇÔ#êÄ+1
O¹ÖÎþ¸³jͧ:r:$pܸÕM¦grCrdk/Âm»LÂÔb½ÜpÜg¬¦YÖ>ë[F%Ï<W?ÌPg ÑK¯ÏSyoíGN£÷À5NZq|þÆà~ckc0ñ11¦æêA.þáÌÁËXÙºjñз|\S9A×s«õ®IÙZ¸âë9 ÿ7§ EɽÉÍ®$ªÂ±!¹§~
-{ï)íÞú")cèü×ðÊÛÅYmëþ Ç'3Ñksgá_LEPÜgÑæ8'{~ÏÌzÑäÈ
-¹Õ±üp'siXÌ£Ãea
-lÞR×e®âèßÍÂqu¾ä¯Þ]û ¨¡ÄÉþÞáÔvr{×ÌȲÜMkéW{ÙÇ³ä ©²n?Rʳz¸¹k÷Z6ý߶¡wAÒÑ»,pz_ ÍÒHËà£I¹j¾Û_áAú0No£"!6~¨`(@zir~ jZWêlþâæâC.¢ý>{rßuÌ
z6Ýd¿Ëß±>Y
-=,2ÉiM3Ù¿.ºx;«ja\ÅzCmnÛzØð³Qß²Sw¥q\SQÖѾ¾|ûQõvµáþZIÅñÔæõuNv¦ Ãóß4EÈDÆ
Ùïóåéø+ïrjê`NAÈ{ÖïõGïúù¦ß1;êIÕòøÜHc°¶ {£O]=O¿O{¨Ib'wÂîj³Ék¬ï¯CAx«¯:;捻¯è<2«"¿Ù¡,/ûäB3 .³îá6í#ßV8¦V´¼¼8"̯áÙ-µe&(Å.CgMQQub¯(äýW}ÖZ<HGºp[Q@Íç9 at y75w ¼axL? kâ b.ïÆ´X³¬j·z0[+9ßeFÆ¿©F§%Wì¼ëïò}¹ýê»N+ÌûE°l7}P}Õ%^0pÄýCôæÕO¹¹ñ[!,öfnªû{¾Æ·vzKjh0µ¿NǬ®L^p˺«9øbF<&ü4¥jA¾böUmoK¢Ü\;tE ºëEM"J©j°iÑÒÝ~zWâÉjÑÊÐZÌËõêø7Gr-| ü©É®²÷±±Cõü¹M|<÷j§¬|¸¬|ú¡ì0È;X >®R~ÝÄ"[ñãÍK齺6dÚF\3®ÎñÊAEA¿í6öE/ö÷ZJK¬ü³Sª1ñ&åVeé=×ÎPîio at BV¤X5^µÁ#LRÔqnÅùÆèÈÏllº=¤åY³UºêÞ`]rrø\ÒtÝéöÚ¸[z«y Þ¾$íL;l¬ ®TWi>b±8ÛÒqíÜÄEcA©i³O¸¾FW
%À¶Fe_¢MçO5Énùò»?ØÙ+Úµ3§Zþ~(ïÃóÓJÖªÉÀéÍÁTu>K;0,»ámfÿPzáP¼{L.MëcöBk×çù9vòRKäu¹mVàÒ¡8²Íw¤=Í'íoÄMõð¬KÌ,/òïWC@îhØÆ_/|ÃÉeãTNNnªy×,mæÙ|§ùÚf",%å½vºÔ¤æåÖP¡H¨çÈÊýfâÛVÜ ÓbwÞ&ùÈÛÁý3Ëò½¦Íµöש&
-¯fC[}øìþîáõgh²ý÷Æ°<¶ðú<]OÂOÕé:^\¾ÉöHA{¾Ð(Ü9[±[ب´Ó#;.$+{°JëNEjÝRÇvn¢D²^4çDml£$îwp'î9è.h÷ú÷Ô¤/ÙI aU^â§!O p7¾è/]h:>pêŹkBµÚÁ5A®Ý¶f;
-
¿2$b[i<iÁ£úY<4G_¯?/AÒ?×r1gð|üòÃûîUF2³´¬ÉQL÷q2ÔuaWEC"GóÅoëHeíé>]{¥%yLÄyHd_¹ÙRcËÔÈ3)ÖP]NÆÈ`?Þæ®Äé©Òæ\)³ç\ý6éÉ*W<¼ÞP_g}RHp¥ìeâZúQdìP±[7âK)¯ÿ£ÚÙÂ'â×a©{^tHO-?nu³¥=
äDh?µuÑË4Sè.ïÜJµaÖÜð'vºâëª{ô_´àáõļåL|³ÚC;wÆÎø 6å²ÝйùAßël¡¢èüÂ#³}-WøçºdK½®ÁîÕòì.Ýn_Ö& çõ`ÎÚøÏdb'oL$zÆÆM>JÓyªØvÙE(!n6¥æb@`þ±íoQþ?>Ðÿø!(
-ì
¢
þWʯÜendstream
+xÚíy<{ßÇ-1LB8Â¥bìË d_²DeËiÌ0Æ.ÉÚ¡H%&k¡È%)BIì²
¸§ÎsÎé9÷Ïó×ýº¯ëëýÝ~×÷óûã´uP4ÄÑ L¢*ªÀTt c+{-@¦6¦(*L:¢:
+®úã Ue at ESGM[GU*
})x5ûQ¤z<E¬PT/Ð9"d¤Ã C"°ÿÑáØ~ % Ä ** ¡h'A~2'y?ÂX?S Å)
+e±d1ÀP%k2ó,©äÿCÔ?#ýDk÷ñ?ôoi7ü?do*H¬ÈXBúg©3ø6+÷÷þgÖ"â1$ÿáýø k§b¼ OÑüIØ`îí§%W+ÆGÿðógÎ
'Q}þú£ø'«üÍÌíPðA2LYY
YÈ|ÿü:ý³LH2Ob^
M E¡ ¡ÌÁ$
TÀ°` 1+ÁHd*³`îä<àI¦@Ø©® (ù0=!cÄ´Õ%Ç¿iê/RaPA5@ ÷2[½~A
@ ÿÂ%ï¿QEP"ýªL%¿ ³×ïdê¤þLUþ£*SUðOüw#ÈA¡jj¢ª2 W× ´ÔáçÿWÆBIÔwéæìgzA :ðÑ&¤UÆÒÃMò^Þãg5ÂU]µ~ÐÐ[»;ª?XÐná+ÿ¾ÜeAãçàÜõf׿è{5½o{"ÀcòXÔef<îsh-jzoMåëå
V÷ô×;ÍY-Ó¹¶²Ç?C$Yº<|©å¤OÆÅ˨IÚó¥ûÒ/©Ç
ò¥\Û5ÜNãzttpüÄÿFWÎõí³39¹PÁÒY>ö¬;¢ªe¤Ô¼®4é;rÜñû·Tud¿Ûßù飦þgÂ/¬³ÖòfdpíþM¿¤eEÖfV©¶Ù"°nÜè;éo&ÊúMïýo¿Á½ïån4Gó»]?4)¶sFgZ´ÿζÍoÝU£¾vݵÊ-ͺ;UlS]rxv%oä<\û´½ iÓ=Fb¹?©:qÙ¤äy]êþc}&äD
pÍÛ¢5,5=uÍÆâT<q86ºïȵÃfø/ú?jW¥PzèP"=ûpÊ SÛÐO)ätÕi>RÏo8KÐWúÝ8x§´ÈÅzêC
°l1Ñ(ÆLZ9ñ1^ñ>öúµtSê
þg<#&Í(IÒÂim!q@\>·¦;ú
6~û@Fåꫨ¬·ñÔ^0¥[évN²êF¦íëéåe}eç²/_+câ H¾>ý
:+}{Ü3ãKk°O\ÜjV¬Ü``,,:¤¼©¥Õîü,PO,}ü±lý¼ê²ÕËïyä5ékò
~:ûØ´U;½6ÑòÓ×.JZ%ÑÖ"Xø%_Ã}×d¿gmO¾ö(næ~Ø3ßCÏË `'ÕNCr~áË"
Ê@¡Lòä³J(fëHä®ìð·b¯ßÒÑZK´¤m.ª:dVy Á7wbWó¦ÇKsÛ1¶ßçֲ˼ct
+ÓV
öïtëcù¦åw²àA«»¯MÛÓ¾¶ç³&áhv5$ïv
+ѱ2ïùv1)´rEÀ¨ËU±9¯ÜàbÖÏX+ «
+êå>gºùédÝ$o¶î¨ñÁѼ-÷¶í¸e¿eòz½óìHK!½LÑÝ£âmåÑ°ìéÙ¨Zæ>ü|«oW§µ¢¹¬ÙzO}H´ËËűÓ#_Xzðçü6òí"¯Ä¡-~Øsvª¹'.¹ÑBÐÖò`ÁÜ=ÞÍËm/iNAa9ÃÂqa"zÌzÊļÄ
+åXîßKÛìm¹/RÀÎai9ýÑ°úT
ç
6Î)êX»xã Cy"!¶CôFÅ<¯û
q)SÊeòìëü°ä7a[Þ2wgôÆX·ÅÞÕGHJkíJX:PªëfZ¾ó»&Ò÷ß<Vëý|½ºµ'²&ïZÓãíC0àë¤Éã9ǧnßãàøB·r¬tr:ð%ð]:¾À¥¾_#+
+ât5ïiÍEÎ]¢ýé
N -gȤðS+(äéõQ4YbìÉ"CõÌcê1uâØÆ'%\ëDM® \æ9µÓ]ι¸NnÜËfCDQó3¹á¨O¹²Åµàv=¦ájqÞî8nɳÖ3¬ëõ¢GæG«å@Fª3¡å×,¨¼·"'É1û৬9>ãô͸±½9ô[{õ0ÿHÖàæÐ Ul}xØ¢{
+®©¨kƹÝv×´|=Bñõ¼DÀ¥ÓbÊÔ~¯LÇ7cõ"áø°\çS
ý÷öÈCo}1tyÂkxåíÒ¶Í@°Ó©SYèõùsp¦2Q(~³xkǽ°ov£hzlÃ×Âúø
~¸¯³
-
4,áÑá²4µl«ëıÌTsGvËïeL㸺^ò×ì{ÜXêìpïhZ¹£{vtY᮵ü«£üã9r Ty?)eY?CÜܳw=~ïVûð»à®Bé=8½Ê¯i¤UqRÕeRä¦ßÎWx°>ÓǨXÈ!*Øg
+Þf_:Öz»ð¯x
ø°«èï¾¼·æóC^Í7Ù&®çñ÷dnL
çLqÚÐL.K®Â.ªZ7±¾0ÛÛvö«üìß_4´îÖ]mÚe ×lmÜß¿]à0¦Þ¡62P['ãûÐ+¹$Ú²±aÙÈÉnZØ<)bxá¦è1¨øpð¾ücqÝnBÍl#I0è!¹
+o³°ï}èÀ ßÌûÏ£æÆÎQT-ÏÏM4vKÂúôÕôû´÷,vjoìþ§vÛð¦z´·ñª«ënjƪÎ#ójò]z)rqO.¶Àâ2î3¾òíUIãjÅ++K£ÂùZ9©ÙÛÑæRìqà
+tVÐ]o©!öB.$8rÓgÃt¤; ·Ô|wÓñ*jæñAÇ
è °Ö("æún\5Û¦¸n»³½{ù-QfpôpÂ{áÙtzJåî»®ßW:®^¹Ûöû
ÿMá檯º¥"êy|Ùºú)O /a[â#ÅÁÂMõdp/tÂøÖoBoAí¢vÀéµÕ©î¹Bw5^ÌÇFܦV0(P̹ªícåY×g®Dw¿È¥ID+U5/YÙ°;ÌìI:5Yã(ZK}¹«AÿæX^¥/D_"-ÅMâ1>+v¤?¯ç^ëÕÏ8ÙEóàÁÇÕÊï¯Zæ(~|±õ»WF®-¶ß«wºrgHQ¢7RЧ}É=Ò#·R¬å'ÿì´êTli¦D
u9Fzßµ³{ÚÐ5#éDgVWíðHÓÔ@u{I¡µ)4&ê3®Ä££Ãiù6lUnº7X×Ü\>×]ãº}VE>j>£·ï ÉÒ¦(+ÕWYZ.-äçµv^;?yÉDPjƼðn¯Ñ]FC 0Çí1Ùh³
ÓͲÛ~üv÷vïοÆ;ëø|Ö¬µz*htfk(Mc¡ÏÒÈn`[Ø?!£_8ìK×ãús,¶ÈFãõ~ÝcA<¢GÔx]oú¤öf*.¡í
+¢hO³&HpÓ½<"³+KüÂÕ;öA ×ÞprÙç:WckFßõ!á%§ÊZx¶ÞÇk¾L KIù¬)3}¹=\ä+æ5ºz¿
ø6wҬķY>êváà¬â|"tk½ãu©Â«¹°¶CB>{¼{xýÚ@ìð½)<ßV§=¢!ßvÏÓõºNVn²=RÐ^(2pÉQì6*àôÌÍΪֺSV¿Ï±$ì¢Ï;SÚeÆ)I
AÉ»'ºk$Æ£¡ô=5ùáËvAeRbxµ·øÈSçÜ
£/:!ËO%>oùeþPvHm°Àï)îÛsEBÂßqNm4ô1ý,«¯7(
éHo½Æ7x>qyÐñ}$÷¥j£(ŹBÚdöÔ&á×4K §²1«yÅr·m4²þô.½ÊÈ<.b<"r Â|¹©uzôÊÙT¨®'cPdÐYp oOóÅÆTáôTÌèónÂÅk¾aôdY+ÑàBh¨·9%$¸Zþ2i=Ã?RâÞxÄRÆ«Àÿ¨n.ðøuWxåâ¾ÒÓ+Ûd¥âÜíhÏe8ѦÚOí\õ²Ìz*º¶Ól@
7üÐI£Ýn8åú>gýxx½0o9Þ¬õÒε÷4)K½¬e?|~¡VÐï:Û%h(º èØ\«äþùnÙ2ïk°À{u<{Ëöf8·ÅA¡ù½s¶³9aØÉÇI^qñSÏÒµäC*ö§_ö`JK½Ô
+l[ÿô¿þ#` B%{£(ç ÿx¯Þendstream
endobj
41 0 obj <<
/Type /Font
@@ -775,14 +763,14 @@
/FirstChar 46
/LastChar 121
/Widths 116 0 R
-/BaseFont /IJZGFK+CMR17
+/BaseFont /YMSJCA+CMR17
/FontDescriptor 39 0 R
>> endobj
39 0 obj <<
/Ascent 694
/CapHeight 683
/Descent -195
-/FontName /IJZGFK+CMR17
+/FontName /YMSJCA+CMR17
/ItalicAngle 0
/StemV 53
/XHeight 430
@@ -876,7 +864,7 @@
>> endobj
122 0 obj <<
/Author(Bill Spotz)/Title(Testing the numpy.i Typemaps)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords()
-/CreationDate (D:20070913152306-06'00')
+/CreationDate (D:20071129122309-07'00')
/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.6)
>> endobj
xref
@@ -888,31 +876,31 @@
0000000000 00000 f
0000000009 00000 n
0000004918 00000 n
-0000068530 00000 n
+0000068533 00000 n
0000000055 00000 n
0000000081 00000 n
0000005100 00000 n
-0000068444 00000 n
+0000068447 00000 n
0000000131 00000 n
0000000162 00000 n
0000005283 00000 n
-0000068356 00000 n
+0000068359 00000 n
0000000221 00000 n
0000000260 00000 n
0000009560 00000 n
-0000068268 00000 n
+0000068271 00000 n
0000000319 00000 n
0000000358 00000 n
0000009743 00000 n
-0000068180 00000 n
+0000068183 00000 n
0000000417 00000 n
0000000456 00000 n
0000009926 00000 n
-0000068092 00000 n
+0000068095 00000 n
0000000523 00000 n
0000000570 00000 n
-0000015242 00000 n
-0000068017 00000 n
+0000015245 00000 n
+0000068020 00000 n
0000000631 00000 n
0000000672 00000 n
0000003039 00000 n
@@ -920,15 +908,15 @@
0000000722 00000 n
0000004735 00000 n
0000004796 00000 n
-0000067208 00000 n
-0000063111 00000 n
-0000067049 00000 n
-0000062361 00000 n
-0000056544 00000 n
-0000062201 00000 n
-0000055258 00000 n
-0000042506 00000 n
-0000055099 00000 n
+0000067211 00000 n
+0000063113 00000 n
+0000067052 00000 n
+0000062363 00000 n
+0000056547 00000 n
+0000062203 00000 n
+0000055261 00000 n
+0000042509 00000 n
+0000055102 00000 n
0000004857 00000 n
0000004978 00000 n
0000003232 00000 n
@@ -938,23 +926,23 @@
0000003884 00000 n
0000004057 00000 n
0000005039 00000 n
-0000041807 00000 n
-0000035964 00000 n
-0000041647 00000 n
+0000041810 00000 n
+0000035967 00000 n
+0000041650 00000 n
0000005161 00000 n
-0000034753 00000 n
-0000024858 00000 n
-0000034593 00000 n
+0000034756 00000 n
+0000024860 00000 n
+0000034596 00000 n
0000004223 00000 n
0000004393 00000 n
0000004563 00000 n
0000005222 00000 n
0000005344 00000 n
-0000067870 00000 n
+0000067873 00000 n
0000009499 00000 n
0000009682 00000 n
0000009865 00000 n
-0000015181 00000 n
+0000015184 00000 n
0000009987 00000 n
0000008777 00000 n
0000005522 00000 n
@@ -963,54 +951,54 @@
0000009096 00000 n
0000009267 00000 n
0000009621 00000 n
-0000024540 00000 n
-0000023153 00000 n
-0000024381 00000 n
+0000024542 00000 n
+0000023155 00000 n
+0000024383 00000 n
0000009804 00000 n
-0000015364 00000 n
-0000013474 00000 n
+0000015367 00000 n
+0000013477 00000 n
0000010092 00000 n
-0000015059 00000 n
-0000015120 00000 n
-0000013662 00000 n
-0000013832 00000 n
-0000014003 00000 n
-0000014173 00000 n
-0000014343 00000 n
-0000014513 00000 n
-0000015303 00000 n
-0000022288 00000 n
-0000015482 00000 n
-0000022129 00000 n
-0000014683 00000 n
-0000014867 00000 n
-0000022814 00000 n
-0000022576 00000 n
-0000024771 00000 n
-0000024747 00000 n
-0000035434 00000 n
-0000035136 00000 n
-0000042237 00000 n
-0000042056 00000 n
-0000056034 00000 n
-0000055669 00000 n
-0000062818 00000 n
-0000062604 00000 n
-0000067633 00000 n
-0000067433 00000 n
-0000067943 00000 n
-0000068602 00000 n
-0000069309 00000 n
-0000069348 00000 n
-0000069386 00000 n
-0000069514 00000 n
+0000015062 00000 n
+0000015123 00000 n
+0000013665 00000 n
+0000013835 00000 n
+0000014006 00000 n
+0000014176 00000 n
+0000014346 00000 n
+0000014516 00000 n
+0000015306 00000 n
+0000022290 00000 n
+0000015485 00000 n
+0000022131 00000 n
+0000014686 00000 n
+0000014870 00000 n
+0000022816 00000 n
+0000022578 00000 n
+0000024773 00000 n
+0000024749 00000 n
+0000035437 00000 n
+0000035139 00000 n
+0000042240 00000 n
+0000042059 00000 n
+0000056037 00000 n
+0000055672 00000 n
+0000062820 00000 n
+0000062606 00000 n
+0000067636 00000 n
+0000067436 00000 n
+0000067946 00000 n
+0000068605 00000 n
+0000069312 00000 n
+0000069351 00000 n
+0000069389 00000 n
+0000069517 00000 n
trailer
<<
/Size 123
/Root 121 0 R
/Info 122 0 R
-/ID [<D7563326663C85C2C6ABCF269EF11E63> <D7563326663C85C2C6ABCF269EF11E63>]
+/ID [<8206BEE2D1E3AFE5631E72495EE1AE17> <8206BEE2D1E3AFE5631E72495EE1AE17>]
>>
startxref
-69815
+69818
%%EOF
Modified: branches/numpy.scons/numpy/doc/swig/numpy.i
===================================================================
--- branches/numpy.scons/numpy/doc/swig/numpy.i 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/doc/swig/numpy.i 2007-12-02 11:28:35 UTC (rev 4522)
@@ -9,14 +9,6 @@
#include <numpy/arrayobject.h>
%}
-/* The following code originally appeared in
- * enthought/kiva/agg/src/numeric.i written by Eric Jones. It was
- * translated from C++ to C by John Hunter. Bill Spotz has modified
- * it slightly to fix some minor bugs, upgrade from Numeric to numpy
- * (all versions), add some comments and functionality, and convert
- * from direct code insertion to SWIG fragments.
- */
-
/**********************************************************************/
%fragment("NumPy_Backward_Compatibility", "header")
@@ -68,11 +60,22 @@
%#define NPY_MAX_ULONGLONG MAX_ULONGLONG
%#define NPY_MAX_INTP MAX_INTP
%#define NPY_MIN_INTP MIN_INTP
+
+%#define NPY_FARRAY FARRAY
+%#define NPY_F_CONTIGUOUS F_CONTIGUOUS
%#endif
}
/**********************************************************************/
+/* The following code originally appeared in
+ * enthought/kiva/agg/src/numeric.i written by Eric Jones. It was
+ * translated from C++ to C by John Hunter. Bill Spotz has modified
+ * it to fix some minor bugs, upgrade from Numeric to numpy (all
+ * versions), add some comments and functionality, and convert from
+ * direct code insertion to SWIG fragments.
+ */
+
%fragment("NumPy_Macros", "header")
{
/* Macros to extract array attributes.
@@ -85,6 +88,7 @@
%#define array_data(a) (((PyArrayObject *)a)->data)
%#define array_is_contiguous(a) (PyArray_ISCONTIGUOUS(a))
%#define array_is_native(a) (PyArray_ISNOTSWAPPED(a))
+%#define array_is_fortran(a) (PyArray_ISFORTRAN(a))
}
/**********************************************************************/
@@ -391,6 +395,25 @@
}
return success;
}
+
+ /* Require the given PyArrayObject to to be FORTRAN ordered. If the
+ * the PyArrayObject is already FORTRAN ordered, do nothing. Else,
+ * set the FORTRAN ordering flag and recompute the strides.
+ */
+ int require_fortran(PyArrayObject* ary)
+ {
+ int success = 1;
+ int nd = array_numdims(ary);
+ int i;
+ if (array_is_fortran(ary)) return success;
+ /* Set the FORTRAN ordered flag */
+ ary->flags = NPY_FARRAY;
+ /* Recompute the strides */
+ ary->strides[0] = ary->strides[nd-1];
+ for (i=1; i < nd; ++i)
+ ary->strides[i] = ary->strides[i-1] * array_size(ary,i-1);
+ return success;
+ }
}
/* Combine all NumPy fragments into one for convenience */
@@ -406,7 +429,7 @@
/* %numpy_typemaps() macro
*
- * This macro defines a family of 23 typemaps that allow C arguments
+ * This macro defines a family of 41 typemaps that allow C arguments
* of the form
*
* (DATA_TYPE IN_ARRAY1[ANY])
@@ -416,10 +439,14 @@
* (DATA_TYPE IN_ARRAY2[ANY][ANY])
* (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
* (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
+ * (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
*
* (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
* (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
* (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
+ * (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
*
* (DATA_TYPE INPLACE_ARRAY1[ANY])
* (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
@@ -428,10 +455,14 @@
* (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
* (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
* (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
+ * (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
*
* (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
* (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
* (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
+ * (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
*
* (DATA_TYPE ARGOUT_ARRAY1[ANY])
* (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
@@ -441,95 +472,60 @@
*
* (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
*
+ * (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
+ * (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
+ *
+ * (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+ * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
+ * (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+ * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
+ *
+ * (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+ * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
+ * (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+ * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
+ *
* where "DATA_TYPE" is any type supported by the NumPy module, and
* "DIM_TYPE" is any int-like type suitable for specifying dimensions.
- * In python, the dimensions will not need to be specified (except for
- * the "DATA_TYPE* ARGOUT_ARRAY1" typemaps). The IN_ARRAYs can be a
- * numpy array or any sequence that can be converted to a numpy array
- * of the specified type. The INPLACE_ARRAYs must be numpy arrays of
- * the appropriate type. The ARGOUT_ARRAYs will be returned as numpy
- * arrays of the appropriate type.
+ * The difference between "ARRAY" typemaps and "FARRAY" typemaps is
+ * that the "FARRAY" typemaps expect FORTRAN ordering of
+ * multidimensional arrays. In python, the dimensions will not need
+ * to be specified (except for the "DATA_TYPE* ARGOUT_ARRAY1"
+ * typemaps). The IN_ARRAYs can be a numpy array or any sequence that
+ * can be converted to a numpy array of the specified type. The
+ * INPLACE_ARRAYs must be numpy arrays of the appropriate type. The
+ * ARGOUT_ARRAYs will be returned as new numpy arrays of the
+ * appropriate type.
*
* These typemaps can be applied to existing functions using the
- * %apply directive:
+ * %apply directive. For example:
*
- * %apply (double IN_ARRAY1[ANY]) {(double vector[ANY])};
- * double length(double vector[3]);
- *
* %apply (double* IN_ARRAY1, int DIM1) {(double* series, int length)};
* double prod(double* series, int length);
*
- * %apply (int DIM1, double* IN_ARRAY1) {(int length, double* series)}
- * double sum(int length, double* series)
+ * %apply (int DIM1, int DIM2, double* INPLACE_ARRAY2)
+ * {(int rows, int cols, double* matrix )};
+ * void floor(int rows, int cols, double* matrix, double f);
*
- * %apply (double IN_ARRAY2[ANY][ANY]) {(double matrix[2][2])};
- * double det(double matrix[2][2]);
+ * %apply (double IN_ARRAY3[ANY][ANY][ANY])
+ * {(double tensor[2][2][2] )};
+ * %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY])
+ * {(double low[2][2][2] )};
+ * %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY])
+ * {(double upp[2][2][2] )};
+ * void luSplit(double tensor[2][2][2],
+ * double low[2][2][2],
+ * double upp[2][2][2] );
*
- * %apply (double* IN_ARRAY2, int DIM1, int DIM2) {(double* matrix, int rows, int cols)};
- * double max(double* matrix, int rows, int cols);
- *
- * %apply (int DIM1, int DIM2, double* IN_ARRAY2) {(int rows, int cols, double* matrix)}
- * double min(int length, double* series)
- *
- * %apply (double INPLACE_ARRAY1[ANY]) {(double vector[3])};
- * void reverse(double vector[3]);
- *
- * %apply (double* INPLACE_ARRAY1, int DIM1) {(double* series, int length)};
- * void ones(double* series, int length);
- *
- * %apply (int DIM1, double* INPLACE_ARRAY1) {(int length, double* series)}
- * double zeros(int length, double* series)
- *
- * %apply (double INPLACE_ARRAY2[ANY][ANY]) {(double matrix[3][3])};
- * void scale(double matrix[3][3]);
- *
- * %apply (double* INPLACE_ARRAY2, int DIM1, int DIM2) {(double* matrix, int rows, int cols)};
- * void floor(double* matrix, int rows, int cols);
- *
- * %apply (int DIM1, int DIM2, double* INPLACE_ARRAY2) {(int rows, int cols, double* matrix)};
- * void ceil(int rows, int cols, double* matrix);
- *
- * %apply (double IN_ARRAY1[ANY] ) {(double vector[ANY])};
- * %apply (double ARGOUT_ARRAY1[ANY]) {(double even[ 3])};
- * %apply (double ARGOUT_ARRAY1[ANY]) {(double odd[ 3])};
- * void eoSplit(double vector[3], double even[3], double odd[3]);
- *
- * %apply (double* ARGOUT_ARRAY1, int DIM1) {(double* twoVec, int size)};
- * void twos(double* twoVec, int size);
- *
- * %apply (int DIM1, double* ARGOUT_ARRAY1) {(int size, double* threeVec)};
- * void threes(int size, double* threeVec);
- *
- * %apply (double IN_ARRAY2[ANY][ANY]) {(double matrix[2][2])};
- * %apply (double ARGOUT_ARRAY2[ANY][ANY]) {(double upper[ 3][3])};
- * %apply (double ARGOUT_ARRAY2[ANY][ANY]) {(double lower[ 3][3])};
- * void luSplit(double matrix[3][3], double upper[3][3], double lower[3][3]);
- *
* or directly with
*
- * double length(double IN_ARRAY1[ANY]);
* double prod(double* IN_ARRAY1, int DIM1);
- * double sum( int DIM1, double* IN_ARRAY1)
*
- * double det(double IN_ARRAY2[ANY][ANY]);
- * double max(double* IN_ARRAY2, int DIM1, int DIM2);
- * double min(int DIM1, int DIM2, double* IN_ARRAY2)
+ * void floor(int DIM1, int DIM2, double* INPLACE_ARRAY2, double f);
*
- * void reverse(double INPLACE_ARRAY1[ANY]);
- * void ones( double* INPLACE_ARRAY1, int DIM1);
- * void zeros(int DIM1, double* INPLACE_ARRAY1)
- *
- * void scale(double INPLACE_ARRAY2[ANY][ANY]);
- * void floor(double* INPLACE_ARRAY2, int DIM1, int DIM2, double floor);
- * void ceil( int DIM1, int DIM2, double* INPLACE_ARRAY2, double ceil );
- *
- * void eoSplit(double IN_ARRAY1[ANY], double ARGOUT_ARRAY1[ANY],
- * double ARGOUT_ARRAY1[ANY]);
- * void twos(double* ARGOUT_ARRAY1, int DIM1)
- * void threes(int DIM1, double* ARGOUT_ARRAY1)
- *
- * void luSplit(double IN_ARRAY2[ANY][ANY], double ARGOUT_ARRAY2[ANY][ANY],
- * double ARGOUT_ARRAY2[ANY][ANY]);
+ * void luSplit(double IN_ARRAY3[ANY][ANY][ANY],
+ * double ARGOUT_ARRAY3[ANY][ANY][ANY],
+ * double ARGOUT_ARRAY3[ANY][ANY][ANY]);
*/
%define %numpy_typemaps(DATA_TYPE, DATA_TYPECODE, DIM_TYPE)
@@ -706,6 +702,64 @@
{ Py_DECREF(array$argnum); }
}
+/* Typemap suite for (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[2] = { -1, -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 2) ||
+ !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+}
+%typemap(freearg)
+ (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[2] = { -1, -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 2) ||
+ !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DATA_TYPE*) array_data(array);
+}
+%typemap(freearg)
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
/* Typemap suite for (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
*/
%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
@@ -795,6 +849,68 @@
{ Py_DECREF(array$argnum); }
}
+/* Typemap suite for (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
+ * DIM_TYPE DIM3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[3] = { -1, -1, -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 3) ||
+ !require_size(array, size, 3) | !require_fortran(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+ $4 = (DIM_TYPE) array_size(array,2);
+}
+%typemap(freearg)
+ (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
+ * DATA_TYPE* IN_FARRAY3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[3] = { -1, -1, -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 3) ||
+ !require_size(array, size, 3) || !require_fortran(array)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DIM_TYPE) array_size(array,2);
+ $4 = (DATA_TYPE*) array_data(array);
+}
+%typemap(freearg)
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
/***************************/
/* In-Place Array Typemaps */
/***************************/
@@ -929,6 +1045,50 @@
$3 = (DATA_TYPE*) array_data(array);
}
+/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,2) || !require_contiguous(array)
+ || !require_native(array) || !require_fortran(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,2) || !require_contiguous(array) ||
+ !require_native(array) || !require_fortran(array)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DATA_TYPE*) array_data(array);
+}
+
/* Typemap suite for (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
*/
%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
@@ -998,6 +1158,54 @@
$4 = (DATA_TYPE*) array_data(array);
}
+/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
+ * DIM_TYPE DIM3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,3) || !require_contiguous(array) ||
+ !require_native(array) || !require_fortran(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+ $4 = (DIM_TYPE) array_size(array,2);
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
+ * DATA_TYPE* INPLACE_FARRAY3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,3) || !require_contiguous(array)
+ || !require_native(array) || !require_fortran(array)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DIM_TYPE) array_size(array,2);
+ $4 = (DATA_TYPE*) array_data(array);
+}
+
/*************************/
/* Argout Array Typemaps */
/*************************/
@@ -1011,6 +1219,7 @@
{
npy_intp dims[1] = { $1_dim0 };
array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
+ if (!array) SWIG_fail;
$1 = ($1_ltype) array_data(array);
}
%typemap(argout)
@@ -1038,6 +1247,7 @@
$2 = (DIM_TYPE) PyInt_AsLong($input);
dims[0] = (npy_intp) $2;
array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
+ if (!array) SWIG_fail;
$1 = (DATA_TYPE*) array_data(array);
}
%typemap(argout)
@@ -1065,6 +1275,7 @@
$1 = (DIM_TYPE) PyInt_AsLong($input);
dims[0] = (npy_intp) $1;
array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
+ if (!array) SWIG_fail;
$2 = (DATA_TYPE*) array_data(array);
}
%typemap(argout)
@@ -1082,6 +1293,7 @@
{
npy_intp dims[2] = { $1_dim0, $1_dim1 };
array = PyArray_SimpleNew(2, dims, DATA_TYPECODE);
+ if (!array) SWIG_fail;
$1 = ($1_ltype) array_data(array);
}
%typemap(argout)
@@ -1099,6 +1311,7 @@
{
npy_intp dims[3] = { $1_dim0, $1_dim1, $1_dim2 };
array = PyArray_SimpleNew(3, dims, DATA_TYPECODE);
+ if (!array) SWIG_fail;
$1 = ($1_ltype) array_data(array);
}
%typemap(argout)
@@ -1107,9 +1320,223 @@
$result = SWIG_Python_AppendOutput($result,array$argnum);
}
+/*****************************/
+/* Argoutview Array Typemaps */
+/*****************************/
+
+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
+ */
+%typemap(in,numinputs=0)
+ (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1 )
+ (DATA_TYPE* data_temp , DIM_TYPE dim_temp)
+{
+ $1 = &data_temp;
+ $2 = &dim_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
+{
+ npy_intp dims[1] = { *$2 };
+ PyObject * array = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$1));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
+ */
+%typemap(in,numinputs=0)
+ (DIM_TYPE* DIM1 , DATA_TYPE** ARGOUTVIEW_ARRAY1)
+ (DIM_TYPE dim_temp, DATA_TYPE* data_temp )
+{
+ $1 = &dim_temp;
+ $2 = &data_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
+{
+ npy_intp dims[1] = { *$1 };
+ PyObject * array = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$2));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+ */
+%typemap(in,numinputs=0)
+ (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1 , DIM_TYPE* DIM2 )
+ (DATA_TYPE* data_temp , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp)
+{
+ $1 = &data_temp;
+ $2 = &dim1_temp;
+ $3 = &dim2_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+{
+ npy_intp dims[2] = { *$2, *$3 };
+ PyObject * array = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
+ */
+%typemap(in,numinputs=0)
+ (DIM_TYPE* DIM1 , DIM_TYPE* DIM2 , DATA_TYPE** ARGOUTVIEW_ARRAY2)
+ (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DATA_TYPE* data_temp )
+{
+ $1 = &dim1_temp;
+ $2 = &dim2_temp;
+ $3 = &data_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
+{
+ npy_intp dims[2] = { *$1, *$2 };
+ PyObject * array = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+ */
+%typemap(in,numinputs=0)
+ (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1 , DIM_TYPE* DIM2 )
+ (DATA_TYPE* data_temp , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp)
+{
+ $1 = &data_temp;
+ $2 = &dim1_temp;
+ $3 = &dim2_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
+ (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+{
+ npy_intp dims[2] = { *$2, *$3 };
+ PyObject * obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
+ PyArrayObject * array = (PyArrayObject*) obj;
+ if (!array || !require_fortran(array)) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,obj);
+}
+
+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
+ */
+%typemap(in,numinputs=0)
+ (DIM_TYPE* DIM1 , DIM_TYPE* DIM2 , DATA_TYPE** ARGOUTVIEW_FARRAY2)
+ (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DATA_TYPE* data_temp )
+{
+ $1 = &dim1_temp;
+ $2 = &dim2_temp;
+ $3 = &data_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
+{
+ npy_intp dims[2] = { *$1, *$2 };
+ PyObject * obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
+ PyArrayObject * array = (PyArrayObject*) obj;
+ if (!array || !require_fortran(array)) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,obj);
+}
+
+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
+ DIM_TYPE* DIM3)
+ */
+%typemap(in,numinputs=0)
+ (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+ (DATA_TYPE* data_temp, DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
+{
+ $1 = &data_temp;
+ $2 = &dim1_temp;
+ $3 = &dim2_temp;
+ $4 = &dim3_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+{
+ npy_intp dims[3] = { *$2, *$3, *$4 };
+ PyObject * array = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
+ DATA_TYPE** ARGOUTVIEW_ARRAY3)
+ */
+%typemap(in,numinputs=0)
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
+ (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp)
+{
+ $1 = &dim1_temp;
+ $2 = &dim2_temp;
+ $3 = &dim3_temp;
+ $4 = &data_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
+{
+ npy_intp dims[3] = { *$1, *$2, *$3 };
+ PyObject * array = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$3));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
+ DIM_TYPE* DIM3)
+ */
+%typemap(in,numinputs=0)
+ (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+ (DATA_TYPE* data_temp, DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
+{
+ $1 = &data_temp;
+ $2 = &dim1_temp;
+ $3 = &dim2_temp;
+ $4 = &dim3_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
+ (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+{
+ npy_intp dims[3] = { *$2, *$3, *$4 };
+ PyObject * obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
+ PyArrayObject * array = (PyArrayObject*) obj;
+ if (!array || require_fortran(array)) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,obj);
+}
+
+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
+ DATA_TYPE** ARGOUTVIEW_FARRAY3)
+ */
+%typemap(in,numinputs=0)
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
+ (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp)
+{
+ $1 = &dim1_temp;
+ $2 = &dim2_temp;
+ $3 = &dim3_temp;
+ $4 = &data_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
+{
+ npy_intp dims[3] = { *$1, *$2, *$3 };
+ PyObject * obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$3));
+ PyArrayObject * array = (PyArrayObject*) obj;
+ if (!array || require_fortran(array)) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,obj);
+}
+
%enddef /* %numpy_typemaps() macro */
+/* *************************************************************** */
-
/* Concrete instances of the %numpy_typemaps() macro: Each invocation
* below applies all of the typemaps above to the specified data type.
*/
@@ -1129,26 +1556,26 @@
/* ***************************************************************
* The follow macro expansion does not work, because C++ bool is 4
* bytes and NPY_BOOL is 1 byte
+ *
+ * %numpy_typemaps(bool, NPY_BOOL, int)
*/
-/*%numpy_typemaps(bool, NPY_BOOL, int)
- */
/* ***************************************************************
* On my Mac, I get the following warning for this macro expansion:
* 'swig/python detected a memory leak of type 'long double *', no destructor found.'
+ *
+ * %numpy_typemaps(long double, NPY_LONGDOUBLE, int)
*/
-/*%numpy_typemaps(long double, NPY_LONGDOUBLE, int)
- */
/* ***************************************************************
- * Swig complains about a syntax error for the following macros
+ * Swig complains about a syntax error for the following macro
* expansions:
+ *
+ * %numpy_typemaps(complex float, NPY_CFLOAT , int)
+ *
+ * %numpy_typemaps(complex double, NPY_CDOUBLE, int)
+ *
+ * %numpy_typemaps(complex long double, NPY_CLONGDOUBLE, int)
*/
-/*%numpy_typemaps(complex float, NPY_CFLOAT , int)
- */
-/*%numpy_typemaps(complex double, NPY_CDOUBLE, int)
- */
-/*%numpy_typemaps(complex long double, NPY_CLONGDOUBLE)
- */
#endif /* SWIGPYTHON */
Modified: branches/numpy.scons/numpy/doc/swig/pyfragments.swg
===================================================================
--- branches/numpy.scons/numpy/doc/swig/pyfragments.swg 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/doc/swig/pyfragments.swg 2007-12-02 11:28:35 UTC (rev 4522)
@@ -1,3 +1,5 @@
+/*-*- C -*-*/
+
/**********************************************************************/
/* For numpy versions prior to 1.0, the names of certain data types
@@ -55,6 +57,9 @@
%#define NPY_MAX_ULONGLONG MAX_ULONGLONG
%#define NPY_MAX_INTP MAX_INTP
%#define NPY_MIN_INTP MIN_INTP
+
+%#define NPY_FARRAY FARRAY
+%#define NPY_F_CONTIGUOUS F_CONTIGUOUS
%#endif
}
@@ -67,11 +72,12 @@
%fragment(SWIG_AsVal_frag(long), "header",
fragment="SWIG_CanCastAsInteger",
- fragment="NumPy_Backward_Compatibility")
+ fragment="NumPy_Backward_Compatibility")
{
SWIGINTERN int
SWIG_AsVal_dec(long)(PyObject * obj, long * val)
{
+ static PyArray_Descr * longDescr = PyArray_DescrNewFromType(NPY_LONG);
if (PyInt_Check(obj)) {
if (val) *val = PyInt_AsLong(obj);
return SWIG_OK;
@@ -104,69 +110,13 @@
}
}
%#endif
- if (!PyArray_CheckScalar(obj)) return SWIG_TypeError;
- int dataType = PyArray_TYPE(obj);
- switch (dataType)
- {
- case NPY_BYTE:
- {
- char data = *((char*)PyArray_DATA(obj));
- if (val) *val = %numeric_cast(data, long);
- break;
- }
- case NPY_UBYTE:
- {
- unsigned char data = *((unsigned char*)PyArray_DATA(obj));
- if (val) *val = %numeric_cast(data, long);
- break;
- }
- case NPY_SHORT:
- {
- short data = *((short*)PyArray_DATA(obj));
- if (val) *val = %numeric_cast(data, long);
- break;
- }
- case NPY_USHORT:
- {
- unsigned short data = *((unsigned short*)PyArray_DATA(obj));
- if (val) *val = %numeric_cast(data, long);
- break;
- }
- case NPY_INT:
- {
- int data = *((int*)PyArray_DATA(obj));
- if (val) *val = %numeric_cast(data, long);
- break;
- }
- case NPY_UINT:
- {
- unsigned int data = *((unsigned int*)PyArray_DATA(obj));
- if (data > NPY_MAX_LONG) return SWIG_OverflowError;
- if (val) *val = %numeric_cast(data, long);
- break;
- }
- case NPY_LONG:
- {
- *val = *((long*)PyArray_DATA(obj));
- break;
- }
- case NPY_ULONG:
- {
- unsigned long data = *((unsigned long*)PyArray_DATA(obj));
- if (data > NPY_MAX_LONG) return SWIG_OverflowError;
- if (val) *val = %numeric_cast(data, long);
- break;
- }
- default:
- return SWIG_TypeError;
- }
+ if (!PyArray_IsScalar(obj,Integer)) return SWIG_TypeError;
+ PyArray_CastScalarToCtype(obj, (void*)val, longDescr);
return SWIG_OK;
}
}
-
-
/* Override the SWIG_AsVal_frag(unsigned long) fragment so that it
* also checks for numpy scalar array types. The code through the
* %#endif is essentially cut-and-paste from pyprimtype.swg
@@ -174,11 +124,12 @@
%fragment(SWIG_AsVal_frag(unsigned long),"header",
fragment="SWIG_CanCastAsInteger",
- fragment="NumPy_Backward_Compatibility")
+ fragment="NumPy_Backward_Compatibility")
{
SWIGINTERN int
SWIG_AsVal_dec(unsigned long)(PyObject *obj, unsigned long *val)
{
+ static PyArray_Descr * ulongDescr = PyArray_DescrNewFromType(NPY_ULONG);
if (PyInt_Check(obj)) {
long v = PyInt_AsLong(obj);
if (v >= 0) {
@@ -216,64 +167,8 @@
}
}
%#endif
- if (!PyArray_CheckScalar(obj)) return SWIG_TypeError;
- int dataType = PyArray_TYPE(obj);
- switch (dataType)
- {
- case NPY_BYTE:
- {
- char data = *((char*)PyArray_DATA(obj));
- if (data < 0) return SWIG_OverflowError;
- if (val) *val = %numeric_cast(data, unsigned long);
- break;
- }
- case NPY_UBYTE:
- {
- unsigned char data = *((unsigned char*)PyArray_DATA(obj));
- if (val) *val = %numeric_cast(data, unsigned long);
- break;
- }
- case NPY_SHORT:
- {
- short data = *((short*)PyArray_DATA(obj));
- if (data < 0) return SWIG_OverflowError;
- if (val) *val = %numeric_cast(data, unsigned long);
- break;
- }
- case NPY_USHORT:
- {
- unsigned short data = *((unsigned short*)PyArray_DATA(obj));
- if (val) *val = %numeric_cast(data, unsigned long);
- break;
- }
- case NPY_INT:
- {
- int data = *((int*)PyArray_DATA(obj));
- if (data < 0) return SWIG_OverflowError;
- if (val) *val = %numeric_cast(data, unsigned long);
- break;
- }
- case NPY_UINT:
- {
- unsigned int data = *((unsigned int*)PyArray_DATA(obj));
- if (val) *val = %numeric_cast(data, unsigned long);
- break;
- }
- case NPY_LONG:
- {
- long data = *((long*)PyArray_DATA(obj));
- if (data < 0) return SWIG_OverflowError;
- if (val) *val = %numeric_cast(data, unsigned long);
- break;
- }
- case NPY_ULONG:
- {
- *val = *((unsigned long*)PyArray_DATA(obj));
- break;
- }
- default:
- return SWIG_TypeError;
- }
+ if (!PyArray_IsScalar(obj,Integer)) return SWIG_TypeError;
+ PyArray_CastScalarToCtype(obj, (void*)val, ulongDescr);
return SWIG_OK;
}
}
Copied: branches/numpy.scons/numpy/doc/swig/test/Array.i (from rev 4518, trunk/numpy/doc/swig/test/Array.i)
Copied: branches/numpy.scons/numpy/doc/swig/test/Array1.cxx (from rev 4518, trunk/numpy/doc/swig/test/Array1.cxx)
Copied: branches/numpy.scons/numpy/doc/swig/test/Array1.h (from rev 4518, trunk/numpy/doc/swig/test/Array1.h)
Copied: branches/numpy.scons/numpy/doc/swig/test/Array2.cxx (from rev 4518, trunk/numpy/doc/swig/test/Array2.cxx)
Copied: branches/numpy.scons/numpy/doc/swig/test/Array2.h (from rev 4518, trunk/numpy/doc/swig/test/Array2.h)
Copied: branches/numpy.scons/numpy/doc/swig/test/Farray.cxx (from rev 4518, trunk/numpy/doc/swig/test/Farray.cxx)
Copied: branches/numpy.scons/numpy/doc/swig/test/Farray.h (from rev 4518, trunk/numpy/doc/swig/test/Farray.h)
Copied: branches/numpy.scons/numpy/doc/swig/test/Farray.i (from rev 4518, trunk/numpy/doc/swig/test/Farray.i)
Modified: branches/numpy.scons/numpy/doc/swig/test/Makefile
===================================================================
--- branches/numpy.scons/numpy/doc/swig/test/Makefile 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/doc/swig/test/Makefile 2007-12-02 11:28:35 UTC (rev 4522)
@@ -1,11 +1,12 @@
# SWIG
-INTERFACES = Vector.i Matrix.i Tensor.i
+INTERFACES = Array.i Farray.i Vector.i Matrix.i Tensor.i
WRAPPERS = $(INTERFACES:.i=_wrap.cxx)
PROXIES = $(INTERFACES:.i=.py )
# Default target: build the tests
.PHONY : all
-all: $(WRAPPERS) Vector.cxx Vector.h Matrix.cxx Matrix.h Tensor.cxx Tensor.h
+all: $(WRAPPERS) Array1.cxx Array1.h Farray.cxx Farray.h Vector.cxx Vector.h \
+ Matrix.cxx Matrix.h Tensor.cxx Tensor.h
./setup.py build
# Test target: run the tests
@@ -14,10 +15,14 @@
python testVector.py
python testMatrix.py
python testTensor.py
+ python testArray.py
+ python testFarray.py
# Rule: %.i -> %_wrap.cxx
%_wrap.cxx: %.i %.h ../numpy.i
swig -c++ -python $<
+%_wrap.cxx: %.i %1.h %2.h ../numpy.i
+ swig -c++ -python $<
# Clean target
.PHONY : clean
Modified: branches/numpy.scons/numpy/doc/swig/test/setup.py
===================================================================
--- branches/numpy.scons/numpy/doc/swig/test/setup.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/doc/swig/test/setup.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -13,6 +13,21 @@
except AttributeError:
numpy_include = numpy.get_numpy_include()
+# Array extension module
+_Array = Extension("_Array",
+ ["Array_wrap.cxx",
+ "Array1.cxx",
+ "Array2.cxx"],
+ include_dirs = [numpy_include],
+ )
+
+# Farray extension module
+_Farray = Extension("_Farray",
+ ["Farray_wrap.cxx",
+ "Farray.cxx"],
+ include_dirs = [numpy_include],
+ )
+
# _Vector extension module
_Vector = Extension("_Vector",
["Vector_wrap.cxx",
@@ -38,6 +53,6 @@
setup(name = "NumpyTypemapTests",
description = "Functions that work on arrays",
author = "Bill Spotz",
- py_modules = ["Vector", "Matrix", "Tensor"],
- ext_modules = [_Vector , _Matrix , _Tensor ]
+ py_modules = ["Array", "Farray", "Vector", "Matrix", "Tensor"],
+ ext_modules = [_Array , _Farray , _Vector , _Matrix , _Tensor ]
)
Copied: branches/numpy.scons/numpy/doc/swig/test/testArray.py (from rev 4518, trunk/numpy/doc/swig/test/testArray.py)
Copied: branches/numpy.scons/numpy/doc/swig/test/testFarray.py (from rev 4518, trunk/numpy/doc/swig/test/testFarray.py)
Modified: branches/numpy.scons/numpy/f2py/auxfuncs.py
===================================================================
--- branches/numpy.scons/numpy/f2py/auxfuncs.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/auxfuncs.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -38,111 +38,200 @@
if options.get('verbose',1):
sys.stdout.write(t)
-def debugcapi(var): return 'capi' in debugoptions
+def debugcapi(var):
+ return 'capi' in debugoptions
+
def _isstring(var):
- return var.has_key('typespec') and var['typespec']=='character' and (not isexternal(var))
+ return 'typespec' in var and var['typespec']=='character' and (not isexternal(var))
+
def isstring(var):
return _isstring(var) and not isarray(var)
+
def ischaracter(var):
- return isstring(var) and not (var.has_key('charselector'))
+ return isstring(var) and 'charselector' not in var
+
def isstringarray(var):
return isarray(var) and _isstring(var)
+
def isarrayofstrings(var):
# leaving out '*' for now so that
# `character*(*) a(m)` and `character a(m,*)`
# are treated differently. Luckily `character**` is illegal.
return isstringarray(var) and var['dimension'][-1]=='(*)'
-def isarray(var): return var.has_key('dimension') and (not isexternal(var))
-def isscalar(var): return not (isarray(var) or isstring(var) or isexternal(var))
+
+def isarray(var):
+ return 'dimension' in var and (not isexternal(var))
+
+def isscalar(var):
+ return not (isarray(var) or isstring(var) or isexternal(var))
+
def iscomplex(var):
return isscalar(var) and var.get('typespec') in ['complex','double complex']
+
def islogical(var):
return isscalar(var) and var.get('typespec')=='logical'
+
def isinteger(var):
return isscalar(var) and var.get('typespec')=='integer'
+
def isreal(var):
return isscalar(var) and var.get('typespec')=='real'
+
def get_kind(var):
- try: return var['kindselector']['*']
+ try:
+ return var['kindselector']['*']
except KeyError:
- try: return var['kindselector']['kind']
- except KeyError: pass
+ try:
+ return var['kindselector']['kind']
+ except KeyError:
+ pass
+
def islong_long(var):
- if not isscalar(var): return 0
- if var.get('typespec') not in ['integer','logical']: return 0
+ if not isscalar(var):
+ return 0
+ if var.get('typespec') not in ['integer','logical']:
+ return 0
return get_kind(var)=='8'
+
def isunsigned_char(var):
- if not isscalar(var): return 0
- if var.get('typespec') != 'integer': return 0
+ if not isscalar(var):
+ return 0
+ if var.get('typespec') != 'integer':
+ return 0
return get_kind(var)=='-1'
+
def isunsigned_short(var):
- if not isscalar(var): return 0
- if var.get('typespec') != 'integer': return 0
+ if not isscalar(var):
+ return 0
+ if var.get('typespec') != 'integer':
+ return 0
return get_kind(var)=='-2'
+
def isunsigned(var):
- if not isscalar(var): return 0
- if var.get('typespec') != 'integer': return 0
+ if not isscalar(var):
+ return 0
+ if var.get('typespec') != 'integer':
+ return 0
return get_kind(var)=='-4'
+
def isunsigned_long_long(var):
- if not isscalar(var): return 0
- if var.get('typespec') != 'integer': return 0
+ if not isscalar(var):
+ return 0
+ if var.get('typespec') != 'integer':
+ return 0
return get_kind(var)=='-8'
+
def isdouble(var):
- if not isscalar(var): return 0
- if not var.get('typespec')=='real': return 0
+ if not isscalar(var):
+ return 0
+ if not var.get('typespec')=='real':
+ return 0
return get_kind(var)=='8'
+
def islong_double(var):
- if not isscalar(var): return 0
- if not var.get('typespec')=='real': return 0
+ if not isscalar(var):
+ return 0
+ if not var.get('typespec')=='real':
+ return 0
return get_kind(var)=='16'
+
def islong_complex(var):
- if not iscomplex(var): return 0
+ if not iscomplex(var):
+ return 0
return get_kind(var)=='32'
-def iscomplexarray(var): return isarray(var) and var.get('typespec') in ['complex','double complex']
-def isint1array(var): return isarray(var) and var.get('typespec')=='integer' \
+def iscomplexarray(var):
+ return isarray(var) and var.get('typespec') in ['complex','double complex']
+
+def isint1array(var):
+ return isarray(var) and var.get('typespec')=='integer' \
and get_kind(var)=='1'
-def isunsigned_chararray(var): return isarray(var) and var.get('typespec')=='integer' and get_kind(var)=='-1'
-def isunsigned_shortarray(var): return isarray(var) and var.get('typespec')=='integer' and get_kind(var)=='-2'
-def isunsignedarray(var): return isarray(var) and var.get('typespec')=='integer' and get_kind(var)=='-4'
-def isunsigned_long_longarray(var): return isarray(var) and var.get('typespec')=='integer' and get_kind(var)=='-8'
+
+def isunsigned_chararray(var):
+ return isarray(var) and var.get('typespec')=='integer' and get_kind(var)=='-1'
+
+def isunsigned_shortarray(var):
+ return isarray(var) and var.get('typespec')=='integer' and get_kind(var)=='-2'
+
+def isunsignedarray(var):
+ return isarray(var) and var.get('typespec')=='integer' and get_kind(var)=='-4'
+
+def isunsigned_long_longarray(var):
+ return isarray(var) and var.get('typespec')=='integer' and get_kind(var)=='-8'
+
def isallocatable(var):
- return var.has_key('attrspec') and 'allocatable' in var['attrspec']
-def ismutable(var): return not (not var.has_key('dimension') or isstring(var))
-def ismoduleroutine(rout): return rout.has_key('modulename')
-def ismodule(rout): return (rout.has_key('block') and 'module'==rout['block'])
-def isfunction(rout): return (rout.has_key('block') and 'function'==rout['block'])
+ return 'attrspec' in var and 'allocatable' in var['attrspec']
+
+def ismutable(var):
+ return not (not 'dimension' in var or isstring(var))
+
+def ismoduleroutine(rout):
+ return 'modulename' in rout
+
+def ismodule(rout):
+ return ('block' in rout and 'module'==rout['block'])
+
+def isfunction(rout):
+ return ('block' in rout and 'function'==rout['block'])
+
#def isfunction_wrap(rout):
# return wrapfuncs and (iscomplexfunction(rout) or isstringfunction(rout)) and (not isexternal(rout))
+
def isfunction_wrap(rout):
- if isintent_c(rout): return 0
+ if isintent_c(rout):
+ return 0
return wrapfuncs and isfunction(rout) and (not isexternal(rout))
-def issubroutine(rout): return (rout.has_key('block') and 'subroutine'==rout['block'])
-def isroutine(rout): return isfunction(rout) or issubroutine(rout)
+
+def issubroutine(rout):
+ return ('block' in rout and 'subroutine'==rout['block'])
+
+def isroutine(rout):
+ return isfunction(rout) or issubroutine(rout)
+
def islogicalfunction(rout):
- if not isfunction(rout): return 0
- if rout.has_key('result'): a=rout['result']
- else: a=rout['name']
- if rout['vars'].has_key(a): return islogical(rout['vars'][a])
+ if not isfunction(rout):
+ return 0
+ if 'result' in rout:
+ a=rout['result']
+ else:
+ a=rout['name']
+ if a in rout['vars']:
+ return islogical(rout['vars'][a])
return 0
+
def islong_longfunction(rout):
- if not isfunction(rout): return 0
- if rout.has_key('result'): a=rout['result']
- else: a=rout['name']
- if rout['vars'].has_key(a): return islong_long(rout['vars'][a])
+ if not isfunction(rout):
+ return 0
+ if 'result' in rout:
+ a=rout['result']
+ else:
+ a=rout['name']
+ if a in rout['vars']:
+ return islong_long(rout['vars'][a])
return 0
+
def islong_doublefunction(rout):
- if not isfunction(rout): return 0
- if rout.has_key('result'): a=rout['result']
- else: a=rout['name']
- if rout['vars'].has_key(a): return islong_double(rout['vars'][a])
+ if not isfunction(rout):
+ return 0
+ if 'result' in rout:
+ a=rout['result']
+ else:
+ a=rout['name']
+ if a in rout['vars']:
+ return islong_double(rout['vars'][a])
return 0
+
def iscomplexfunction(rout):
- if not isfunction(rout): return 0
- if rout.has_key('result'): a=rout['result']
- else: a=rout['name']
- if rout['vars'].has_key(a): return iscomplex(rout['vars'][a])
+ if not isfunction(rout):
+ return 0
+ if 'result' in rout:
+ a=rout['result']
+ else:
+ a=rout['name']
+ if a in rout['vars']:
+ return iscomplex(rout['vars'][a])
return 0
+
def iscomplexfunction_warn(rout):
if iscomplexfunction(rout):
outmess("""\
@@ -155,46 +244,86 @@
**************************************************************\n""")
return 1
return 0
+
def isstringfunction(rout):
- if not isfunction(rout): return 0
- if rout.has_key('result'): a=rout['result']
- else: a=rout['name']
- if rout['vars'].has_key(a): return isstring(rout['vars'][a])
+ if not isfunction(rout):
+ return 0
+ if 'result' in rout:
+ a=rout['result']
+ else:
+ a=rout['name']
+ if a in rout['vars']:
+ return isstring(rout['vars'][a])
return 0
-def hasexternals(rout): return rout.has_key('externals') and rout['externals']
-def isthreadsafe(rout): return rout.has_key('f2pyenhancements') and rout['f2pyenhancements'].has_key('threadsafe')
-def hasvariables(rout): return rout.has_key('vars') and rout['vars']
-def isoptional(var): return (var.has_key('attrspec') and 'optional' in var['attrspec'] and 'required' not in var['attrspec']) and isintent_nothide(var)
-def isexternal(var): return (var.has_key('attrspec') and 'external' in var['attrspec'])
-def isrequired(var): return not isoptional(var) and isintent_nothide(var)
+
+def hasexternals(rout):
+ return 'externals' in rout and rout['externals']
+
+def isthreadsafe(rout):
+ return 'f2pyenhancements' in rout and 'threadsafe' in rout['f2pyenhancements']
+
+def hasvariables(rout):
+ return 'vars' in rout and rout['vars']
+
+def isoptional(var):
+ return ('attrspec' in var and 'optional' in var['attrspec'] and 'required' not in var['attrspec']) and isintent_nothide(var)
+
+def isexternal(var):
+ return ('attrspec' in var and 'external' in var['attrspec'])
+
+def isrequired(var):
+ return not isoptional(var) and isintent_nothide(var)
+
def isintent_in(var):
- if not var.has_key('intent'): return 1
- if 'hide' in var['intent']: return 0
- if 'inplace' in var['intent']: return 0
- if 'in' in var['intent']: return 1
- if 'out' in var['intent']: return 0
- if 'inout' in var['intent']: return 0
- if 'outin' in var['intent']: return 0
+ if 'intent' not in var:
+ return 1
+ if 'hide' in var['intent']:
+ return 0
+ if 'inplace' in var['intent']:
+ return 0
+ if 'in' in var['intent']:
+ return 1
+ if 'out' in var['intent']:
+ return 0
+ if 'inout' in var['intent']:
+ return 0
+ if 'outin' in var['intent']:
+ return 0
return 1
-def isintent_inout(var): return var.has_key('intent') and ('inout' in var['intent'] or 'outin' in var['intent']) and 'in' not in var['intent'] and 'hide' not in var['intent'] and 'inplace' not in var['intent']
+
+def isintent_inout(var):
+ return 'intent' in var and ('inout' in var['intent'] or 'outin' in var['intent']) and 'in' not in var['intent'] and 'hide' not in var['intent'] and 'inplace' not in var['intent']
+
def isintent_out(var):
return 'out' in var.get('intent',[])
-def isintent_hide(var): return (var.has_key('intent') and ('hide' in var['intent'] or ('out' in var['intent'] and 'in' not in var['intent'] and (not l_or(isintent_inout,isintent_inplace)(var)))))
-def isintent_nothide(var): return not isintent_hide(var)
+
+def isintent_hide(var):
+ return ('intent' in var and ('hide' in var['intent'] or ('out' in var['intent'] and 'in' not in var['intent'] and (not l_or(isintent_inout,isintent_inplace)(var)))))
+
+def isintent_nothide(var):
+ return not isintent_hide(var)
+
def isintent_c(var):
return 'c' in var.get('intent',[])
+
# def isintent_f(var):
# return not isintent_c(var)
+
def isintent_cache(var):
return 'cache' in var.get('intent',[])
+
def isintent_copy(var):
return 'copy' in var.get('intent',[])
+
def isintent_overwrite(var):
return 'overwrite' in var.get('intent',[])
+
def isintent_callback(var):
return 'callback' in var.get('intent',[])
+
def isintent_inplace(var):
return 'inplace' in var.get('intent',[])
+
def isintent_aux(var):
return 'aux' in var.get('intent',[])
@@ -206,42 +335,64 @@
}
def isprivate(var):
- return var.has_key('attrspec') and 'private' in var['attrspec']
+ return 'attrspec' in var and 'private' in var['attrspec']
-def hasinitvalue(var): return var.has_key('=')
+def hasinitvalue(var):
+ return '=' in var
+
def hasinitvalueasstring(var):
- if not hasinitvalue(var): return 0
+ if not hasinitvalue(var):
+ return 0
return var['='][0] in ['"',"'"]
+
def hasnote(var):
- return var.has_key('note')
+ return 'note' in var
+
def hasresultnote(rout):
- if not isfunction(rout): return 0
- if rout.has_key('result'): a=rout['result']
- else: a=rout['name']
- if rout['vars'].has_key(a): return hasnote(rout['vars'][a])
+ if not isfunction(rout):
+ return 0
+ if 'result' in rout:
+ a=rout['result']
+ else:
+ a=rout['name']
+ if a in rout['vars']:
+ return hasnote(rout['vars'][a])
return 0
+
def hascommon(rout):
- return rout.has_key('common')
+ return 'common' in rout
+
def containscommon(rout):
- if hascommon(rout): return 1
+ if hascommon(rout):
+ return 1
if hasbody(rout):
for b in rout['body']:
- if containscommon(b): return 1
+ if containscommon(b):
+ return 1
return 0
+
def containsmodule(block):
- if ismodule(block): return 1
- if not hasbody(block): return 0
+ if ismodule(block):
+ return 1
+ if not hasbody(block):
+ return 0
for b in block['body']:
- if containsmodule(b): return 1
+ if containsmodule(b):
+ return 1
return 0
+
def hasbody(rout):
- return rout.has_key('body')
+ return 'body' in rout
+
def hascallstatement(rout):
return getcallstatement(rout) is not None
-def istrue(var): return 1
-def isfalse(var): return 0
+def istrue(var):
+ return 1
+def isfalse(var):
+ return 0
+
class F2PYError(Exception):
pass
@@ -258,12 +409,14 @@
l='%s,f%d=f[%d]'%(l,i,i)
l2.append('f%d(v)'%(i))
return eval('%s:%s'%(l,' and '.join(l2)))
+
def l_or(*f):
l,l2='lambda v',[]
for i in range(len(f)):
l='%s,f%d=f[%d]'%(l,i,i)
l2.append('f%d(v)'%(i))
return eval('%s:%s'%(l,' or '.join(l2)))
+
def l_not(f):
return eval('lambda v,f=f:not f(v)')
@@ -328,7 +481,7 @@
var = rout['vars'][n]
if isintent_callback(var):
continue
- if cb_map.has_key(n):
+ if n in cb_map:
ctype = cb_map[n]+'_typedef'
else:
ctype = getctype(var)
@@ -351,6 +504,7 @@
def getusercode(rout):
return getmultilineblock(rout,'usercode')
+
def getusercode1(rout):
return getmultilineblock(rout,'usercode',counter=1)
@@ -359,9 +513,9 @@
def getargs(rout):
sortargs,args=[],[]
- if rout.has_key('args'):
+ if 'args' in rout:
args=rout['args']
- if rout.has_key('sortvars'):
+ if 'sortvars' in rout:
for a in rout['sortvars']:
if a in args: sortargs.append(a)
for a in args:
@@ -375,7 +529,7 @@
auxvars = [a for a in rout['vars'].keys() if isintent_aux(rout['vars'][a])\
and a not in args]
args = auxvars + args
- if rout.has_key('sortvars'):
+ if 'sortvars' in rout:
for a in rout['sortvars']:
if a in args: sortargs.append(a)
for a in args:
@@ -385,7 +539,7 @@
return args,sortargs
def getrestdoc(rout):
- if not rout.has_key('f2pymultilines'):
+ if 'f2pymultilines' not in rout:
return None
k = None
if rout['block']=='python module':
@@ -395,21 +549,25 @@
def gentitle(name):
l=(80-len(name)-6)/2
return '/*%s %s %s*/'%(l*'*',name,l*'*')
+
def flatlist(l):
if type(l)==types.ListType:
return reduce(lambda x,y,f=flatlist:x+f(y),l,[])
return [l]
+
def stripcomma(s):
if s and s[-1]==',': return s[:-1]
return s
+
def replace(str,dict,defaultsep=''):
if type(dict)==types.ListType:
return map(lambda d,f=replace,sep=defaultsep,s=str:f(s,d,sep),dict)
if type(str)==types.ListType:
return map(lambda s,f=replace,sep=defaultsep,d=dict:f(s,d,sep),str)
for k in 2*dict.keys():
- if k=='separatorsfor': continue
- if dict.has_key('separatorsfor') and dict['separatorsfor'].has_key(k):
+ if k=='separatorsfor':
+ continue
+ if 'separatorsfor' in dict and k in dict['separatorsfor']:
sep=dict['separatorsfor'][k]
else:
sep=defaultsep
@@ -421,22 +579,30 @@
def dictappend(rd,ar):
if type(ar)==types.ListType:
- for a in ar: rd=dictappend(rd,a)
+ for a in ar:
+ rd=dictappend(rd,a)
return rd
for k in ar.keys():
- if k[0]=='_': continue
- if rd.has_key(k):
- if type(rd[k])==types.StringType: rd[k]=[rd[k]]
+ if k[0]=='_':
+ continue
+ if k in rd:
+ if type(rd[k])==types.StringType:
+ rd[k]=[rd[k]]
if type(rd[k])==types.ListType:
- if type(ar[k])==types.ListType: rd[k]=rd[k]+ar[k]
- else: rd[k].append(ar[k])
+ if type(ar[k])==types.ListType:
+ rd[k]=rd[k]+ar[k]
+ else:
+ rd[k].append(ar[k])
elif type(rd[k])==types.DictType:
if type(ar[k])==types.DictType:
if k=='separatorsfor':
for k1 in ar[k].keys():
- if not rd[k].has_key(k1): rd[k][k1]=ar[k][k1]
- else: rd[k]=dictappend(rd[k],ar[k])
- else: rd[k]=ar[k]
+ if k1 not in rd[k]:
+ rd[k][k1]=ar[k][k1]
+ else:
+ rd[k]=dictappend(rd[k],ar[k])
+ else:
+ rd[k]=ar[k]
return rd
def applyrules(rules,dict,var={}):
@@ -445,23 +611,27 @@
for r in rules:
rr=applyrules(r,dict,var)
ret=dictappend(ret,rr)
- if rr.has_key('_break'): break
+ if '_break' in rr:
+ break
return ret
- if rules.has_key('_check') and (not rules['_check'](var)): return ret
- if rules.has_key('need'):
+ if '_check' in rules and (not rules['_check'](var)):
+ return ret
+ if 'need' in rules:
res = applyrules({'needs':rules['need']},dict,var)
- if res.has_key('needs'):
+ if 'needs' in res:
cfuncs.append_needs(res['needs'])
for k in rules.keys():
- if k=='separatorsfor': ret[k]=rules[k]; continue
+ if k=='separatorsfor':
+ ret[k]=rules[k]; continue
if type(rules[k])==types.StringType:
ret[k]=replace(rules[k],dict)
elif type(rules[k])==types.ListType:
ret[k]=[]
for i in rules[k]:
ar=applyrules({k:i},dict,var)
- if ar.has_key(k): ret[k].append(ar[k])
+ if k in ar:
+ ret[k].append(ar[k])
elif k[0]=='_':
continue
elif type(rules[k])==types.DictType:
@@ -472,19 +642,23 @@
for i in rules[k][k1]:
if type(i)==types.DictType:
res=applyrules({'supertext':i},dict,var)
- if res.has_key('supertext'): i=res['supertext']
+ if 'supertext' in res:
+ i=res['supertext']
else: i=''
ret[k].append(replace(i,dict))
else:
i=rules[k][k1]
if type(i)==types.DictType:
res=applyrules({'supertext':i},dict)
- if res.has_key('supertext'): i=res['supertext']
+ if 'supertext' in res:
+ i=res['supertext']
else: i=''
ret[k].append(replace(i,dict))
else:
errmess('applyrules: ignoring rule %s.\n'%`rules[k]`)
if type(ret[k])==types.ListType:
- if len(ret[k])==1: ret[k]=ret[k][0]
- if ret[k]==[]: del ret[k]
+ if len(ret[k])==1:
+ ret[k]=ret[k][0]
+ if ret[k]==[]:
+ del ret[k]
return ret
Modified: branches/numpy.scons/numpy/f2py/capi_maps.py
===================================================================
--- branches/numpy.scons/numpy/f2py/capi_maps.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/capi_maps.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -175,10 +175,11 @@
d1[k1.lower()] = d1[k1]
d[k.lower()] = d[k]
for k in d.keys():
- if not f2cmap_all.has_key(k): f2cmap_all[k]={}
+ if k not in f2cmap_all:
+ f2cmap_all[k]={}
for k1 in d[k].keys():
- if c2py_map.has_key(d[k][k1]):
- if f2cmap_all[k].has_key(k1):
+ if d[k][k1] in c2py_map:
+ if k1 in f2cmap_all[k]:
outmess("\tWarning: redefinition of {'%s':{'%s':'%s'->'%s'}}\n"%(k,k1,f2cmap_all[k][k1],d[k][k1]))
f2cmap_all[k][k1] = d[k][k1]
outmess('\tMapping "%s(kind=%s)" to "%s"\n' % (k,k1,d[k][k1]))
@@ -213,29 +214,33 @@
"""
ctype='void'
if isfunction(var):
- if var.has_key('result'): a=var['result']
- else: a=var['name']
- if var['vars'].has_key(a): return getctype(var['vars'][a])
- else: errmess('getctype: function %s has no return value?!\n'%a)
+ if 'result' in var:
+ a=var['result']
+ else:
+ a=var['name']
+ if a in var['vars']:
+ return getctype(var['vars'][a])
+ else:
+ errmess('getctype: function %s has no return value?!\n'%a)
elif issubroutine(var):
return ctype
- elif var.has_key('typespec') and f2cmap_all.has_key(var['typespec'].lower()):
+ elif 'typespec' in var and var['typespec'].lower() in f2cmap_all:
typespec = var['typespec'].lower()
f2cmap=f2cmap_all[typespec]
ctype=f2cmap[''] # default type
- if var.has_key('kindselector'):
- if var['kindselector'].has_key('*'):
+ if 'kindselector' in var:
+ if '*' in var['kindselector']:
try:
ctype=f2cmap[var['kindselector']['*']]
except KeyError:
errmess('getctype: "%s %s %s" not supported.\n'%(var['typespec'],'*',var['kindselector']['*']))
- elif var['kindselector'].has_key('kind'):
- if f2cmap_all.has_key(typespec+'kind'):
+ elif 'kind' in var['kindselector']:
+ if typespec+'kind' in f2cmap_all:
f2cmap=f2cmap_all[typespec+'kind']
try:
ctype=f2cmap[var['kindselector']['kind']]
except KeyError:
- if f2cmap_all.has_key(typespec):
+ if typespec in f2cmap_all:
f2cmap=f2cmap_all[typespec]
try:
ctype=f2cmap[str(var['kindselector']['kind'])]
@@ -247,25 +252,33 @@
if not isexternal(var):
errmess('getctype: No C-type found in "%s", assuming void.\n'%var)
return ctype
+
def getstrlength(var):
if isstringfunction(var):
- if var.has_key('result'): a=var['result']
- else: a=var['name']
- if var['vars'].has_key(a): return getstrlength(var['vars'][a])
- else: errmess('getstrlength: function %s has no return value?!\n'%a)
+ if 'result' in var:
+ a=var['result']
+ else:
+ a=var['name']
+ if a in var['vars']:
+ return getstrlength(var['vars'][a])
+ else:
+ errmess('getstrlength: function %s has no return value?!\n'%a)
if not isstring(var):
errmess('getstrlength: expected a signature of a string but got: %s\n'%(`var`))
len='1'
- if var.has_key('charselector'):
+ if 'charselector' in var:
a=var['charselector']
- if a.has_key('*'): len=a['*']
- elif a.has_key('len'): len=a['len']
+ if '*' in a:
+ len=a['*']
+ elif 'len' in a:
+ len=a['len']
if re.match(r'\(\s*([*]|[:])\s*\)',len) or re.match(r'([*]|[:])',len):
#if len in ['(*)','*','(:)',':']:
if isintent_hide(var):
errmess('getstrlength:intent(hide): expected a string with defined length but got: %s\n'%(`var`))
len='-1'
return len
+
def getarrdims(a,var,verbose=0):
global depargs
ret={}
@@ -319,13 +332,18 @@
# if not isintent_c(var):
# var['dimension'].reverse()
return ret
+
def getpydocsign(a,var):
global lcb_map
if isfunction(var):
- if var.has_key('result'): af=var['result']
- else: af=var['name']
- if var['vars'].has_key(af): return getpydocsign(af,var['vars'][af])
- else: errmess('getctype: function %s has no return value?!\n'%af)
+ if 'result' in var:
+ af=var['result']
+ else:
+ af=var['name']
+ if af in var['vars']:
+ return getpydocsign(af,var['vars'][af])
+ else:
+ errmess('getctype: function %s has no return value?!\n'%af)
return '',''
sig,sigout=a,a
opt=''
@@ -370,7 +388,7 @@
%(out_a,rank,c2pycode_map[ctype],','.join(dim),a)
elif isexternal(var):
ua=''
- if lcb_map.has_key(a) and lcb2_map.has_key(lcb_map[a]) and lcb2_map[lcb_map[a]].has_key('argname'):
+ if a in lcb_map and lcb_map[a] in lcb2_map and 'argname' in lcb2_map[lcb_map[a]]:
ua=lcb2_map[lcb_map[a]]['argname']
if not ua==a: ua=' => %s'%ua
else: ua=''
@@ -379,6 +397,7 @@
else:
errmess('getpydocsign: Could not resolve docsignature for "%s".\\n'%a)
return sig,sigout
+
def getarrdocsign(a,var):
ctype=getctype(var)
if isstring(var) and (not isarray(var)):
@@ -446,7 +465,7 @@
else:
ret['intent'] = 'F2PY_INTENT_IN'
if isarray(var): ret['varrformat']='N'
- elif c2buildvalue_map.has_key(ret['ctype']):
+ elif ret['ctype'] in c2buildvalue_map:
ret['varrformat']=c2buildvalue_map[ret['ctype']]
else: ret['varrformat']='O'
ret['init'],ret['showinit']=getinit(a,var)
@@ -454,7 +473,7 @@
ret['init.r'],ret['init.i'] = markoutercomma(ret['init'][1:-1]).split('@,@')
if isexternal(var):
ret['cbnamekey']=a
- if lcb_map.has_key(a):
+ if a in lcb_map:
ret['cbname']=lcb_map[a]
ret['maxnofargs']=lcb2_map[lcb_map[a]]['maxnofargs']
ret['nofoptargs']=lcb2_map[lcb_map[a]]['nofoptargs']
@@ -468,7 +487,8 @@
if isarray(var):
ret=dictappend(ret,getarrdims(a,var))
dim=copy.copy(var['dimension'])
- if c2capi_map.has_key(ret['ctype']): ret['atype']=c2capi_map[ret['ctype']]
+ if ret['ctype'] in c2capi_map:
+ ret['atype']=c2capi_map[ret['ctype']]
# Debug info
if debugcapi(var):
il=[isintent_in,'input',isintent_out,'output',
@@ -502,13 +522,13 @@
else:
ret['vardebuginfo']='debug-capi:%s %s=%s:%s'%(ret['ctype'],a,ret['showinit'],','.join(rl))
if isscalar(var):
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
ret['vardebugshowvalue']='debug-capi:%s=%s'%(a,cformat_map[ret['ctype']])
if isstring(var):
ret['vardebugshowvalue']='debug-capi:slen(%s)=%%d %s=\\"%%s\\"'%(a,a)
if isexternal(var):
ret['vardebugshowvalue']='debug-capi:%s=%%p'%(a)
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
ret['varshowvalue']='#name#:%s=%s'%(a,cformat_map[ret['ctype']])
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isstring(var):
@@ -548,36 +568,38 @@
else:
ret['F_WRAPPEDFUNC'] = 'F_WRAPPEDFUNC'
lcb_map={}
- if rout.has_key('use'):
+ if 'use' in rout:
for u in rout['use'].keys():
- if cb_rules.cb_map.has_key(u):
+ if u in cb_rules.cb_map:
for un in cb_rules.cb_map[u]:
ln=un[0]
- if rout['use'][u].has_key('map'):
+ if 'map' in rout['use'][u]:
for k in rout['use'][u]['map'].keys():
if rout['use'][u]['map'][k]==un[0]: ln=k;break
lcb_map[ln]=un[1]
#else:
# errmess('routsign2map: cb_map does not contain module "%s" used in "use" statement.\n'%(u))
- elif rout.has_key('externals') and rout['externals']:
+ elif 'externals' in rout and rout['externals']:
errmess('routsign2map: Confused: function %s has externals %s but no "use" statement.\n'%(ret['name'],`rout['externals']`))
ret['callprotoargument'] = getcallprotoargument(rout,lcb_map) or ''
if isfunction(rout):
- if rout.has_key('result'): a=rout['result']
- else: a=rout['name']
+ if 'result' in rout:
+ a=rout['result']
+ else:
+ a=rout['name']
ret['rname']=a
ret['pydocsign'],ret['pydocsignout']=getpydocsign(a,rout)
ret['ctype']=getctype(rout['vars'][a])
if hasresultnote(rout):
ret['resultnote']=rout['vars'][a]['note']
rout['vars'][a]['note']=['See elsewhere.']
- if c2buildvalue_map.has_key(ret['ctype']):
+ if ret['ctype'] in c2buildvalue_map:
ret['rformat']=c2buildvalue_map[ret['ctype']]
else:
ret['rformat']='O'
errmess('routsign2map: no c2buildvalue key for type %s\n'%(`ret['ctype']`))
if debugcapi(rout):
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
ret['routdebugshowvalue']='debug-capi:%s=%s'%(a,cformat_map[ret['ctype']])
if isstringfunction(rout):
ret['routdebugshowvalue']='debug-capi:slen(%s)=%%d %s=\\"%%s\\"'%(a,a)
@@ -619,9 +641,9 @@
def cb_sign2map(a,var):
ret={'varname':a}
ret['ctype']=getctype(var)
- if c2capi_map.has_key(ret['ctype']):
+ if ret['ctype'] in c2capi_map:
ret['atype']=c2capi_map[ret['ctype']]
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isarray(var):
ret=dictappend(ret,getarrdims(a,var))
@@ -669,13 +691,15 @@
"""
else:
ret['returncptr'] = 'return_value='
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isstringfunction(rout):
ret['strlength']=getstrlength(rout)
if isfunction(rout):
- if rout.has_key('result'): a=rout['result']
- else: a=rout['name']
+ if 'result' in rout:
+ a=rout['result']
+ else:
+ a=rout['name']
if hasnote(rout['vars'][a]):
ret['note']=rout['vars'][a]['note']
rout['vars'][a]['note']=['See elsewhere.']
@@ -695,7 +719,7 @@
rout['note']=['See elsewhere.']
nofargs=0
nofoptargs=0
- if rout.has_key('args') and rout.has_key('vars'):
+ if 'args' in rout and 'vars' in rout:
for a in rout['args']:
var=rout['vars'][a]
if l_or(isintent_in,isintent_inout)(var):
@@ -704,7 +728,7 @@
nofoptargs=nofoptargs+1
ret['maxnofargs']=`nofargs`
ret['nofoptargs']=`nofoptargs`
- if hasnote(rout) and isfunction(rout) and rout.has_key('result'):
+ if hasnote(rout) and isfunction(rout) and 'result' in rout:
ret['routnote']=rout['note']
rout['note']=['See elsewhere.']
return ret
@@ -712,10 +736,11 @@
def common_sign2map(a,var): # obsolute
ret={'varname':a}
ret['ctype']=getctype(var)
- if isstringarray(var): ret['ctype']='char'
- if c2capi_map.has_key(ret['ctype']):
+ if isstringarray(var):
+ ret['ctype']='char'
+ if ret['ctype'] in c2capi_map:
ret['atype']=c2capi_map[ret['ctype']]
- if cformat_map.has_key(ret['ctype']):
+ if ret['ctype'] in cformat_map:
ret['showvalueformat']='%s'%(cformat_map[ret['ctype']])
if isarray(var):
ret=dictappend(ret,getarrdims(a,var))
Modified: branches/numpy.scons/numpy/f2py/cb_rules.py
===================================================================
--- branches/numpy.scons/numpy/f2py/cb_rules.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/cb_rules.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -426,7 +426,7 @@
rd=dictappend({},vrd)
cb_map[um].append([rout['name'],rd['name']])
for r in cb_rout_rules:
- if (r.has_key('_check') and r['_check'](rout)) or (not r.has_key('_check')):
+ if ('_check' in r and r['_check'](rout)) or ('_check' not in r):
ar=applyrules(r,vrd,rout)
rd=dictappend(rd,ar)
savevrd={}
@@ -434,31 +434,40 @@
vrd=capi_maps.cb_sign2map(a,var[a])
savevrd[a]=vrd
for r in cb_arg_rules:
- if r.has_key('_depend'): continue
- if r.has_key('_optional') and isoptional(var[a]): continue
- if (r.has_key('_check') and r['_check'](var[a])) or (not r.has_key('_check')):
+ if '_depend' in r:
+ continue
+ if '_optional' in r and isoptional(var[a]):
+ continue
+ if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
ar=applyrules(r,vrd,var[a])
rd=dictappend(rd,ar)
- if r.has_key('_break'): break
+ if '_break' in r:
+ break
for a in args:
vrd=savevrd[a]
for r in cb_arg_rules:
- if r.has_key('_depend'): continue
- if (not r.has_key('_optional')) or (r.has_key('_optional') and isrequired(var[a])): continue
- if (r.has_key('_check') and r['_check'](var[a])) or (not r.has_key('_check')):
+ if '_depend' in r:
+ continue
+ if ('_optional' not in r) or ('_optional' in r and isrequired(var[a])):
+ continue
+ if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
ar=applyrules(r,vrd,var[a])
rd=dictappend(rd,ar)
- if r.has_key('_break'): break
+ if '_break' in r:
+ break
for a in depargs:
vrd=savevrd[a]
for r in cb_arg_rules:
- if not r.has_key('_depend'): continue
- if r.has_key('_optional'): continue
- if (r.has_key('_check') and r['_check'](var[a])) or (not r.has_key('_check')):
+ if '_depend' not in r:
+ continue
+ if '_optional' in r:
+ continue
+ if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
ar=applyrules(r,vrd,var[a])
rd=dictappend(rd,ar)
- if r.has_key('_break'): break
- if rd.has_key('args') and rd.has_key('optargs'):
+ if '_break' in r:
+ break
+ if 'args' in rd and 'optargs' in rd:
if type(rd['optargs'])==type([]):
rd['optargs']=rd['optargs']+["""
#ifndef F2PY_CB_RETURNCOMPLEX
@@ -492,14 +501,14 @@
rd['docstrsigns']=[]
rd['latexdocstrsigns']=[]
for k in ['docstrreq','docstropt','docstrout','docstrcbs']:
- if rd.has_key(k) and type(rd[k])==types.ListType:
+ if k in rd and type(rd[k])==types.ListType:
rd['docstrsigns']=rd['docstrsigns']+rd[k]
k='latex'+k
- if rd.has_key(k) and type(rd[k])==types.ListType:
+ if k in rd and type(rd[k])==types.ListType:
rd['latexdocstrsigns']=rd['latexdocstrsigns']+rd[k][0:1]+\
['\\begin{description}']+rd[k][1:]+\
['\\end{description}']
- if not rd.has_key('args'):
+ if 'args' not in rd:
rd['args']=''
rd['args_td']=''
rd['args_nm']=''
@@ -511,7 +520,7 @@
if type(ar['need'])==types.StringType:
ar['need']=[ar['need']]
- if rd.has_key('need'):
+ if 'need' in rd:
for t in cfuncs.typedefs.keys():
if t in rd['need']:
ar['need'].append(t)
Modified: branches/numpy.scons/numpy/f2py/cfuncs.py
===================================================================
--- branches/numpy.scons/numpy/f2py/cfuncs.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/cfuncs.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -1067,28 +1067,39 @@
append_needs(n,flag)
elif type(need)==types.StringType:
if not need: return
- if includes0.has_key(need): n = 'includes0'
- elif includes.has_key(need): n = 'includes'
- elif typedefs.has_key(need): n = 'typedefs'
- elif typedefs_generated.has_key(need): n = 'typedefs_generated'
- elif cppmacros.has_key(need): n = 'cppmacros'
- elif cfuncs.has_key(need): n = 'cfuncs'
- elif callbacks.has_key(need): n = 'callbacks'
- elif f90modhooks.has_key(need): n = 'f90modhooks'
- elif commonhooks.has_key(need): n = 'commonhooks'
+ if need in includes0:
+ n = 'includes0'
+ elif need in includes:
+ n = 'includes'
+ elif need in typedefs:
+ n = 'typedefs'
+ elif need in typedefs_generated:
+ n = 'typedefs_generated'
+ elif need in cppmacros:
+ n = 'cppmacros'
+ elif need in cfuncs:
+ n = 'cfuncs'
+ elif need in callbacks:
+ n = 'callbacks'
+ elif need in f90modhooks:
+ n = 'f90modhooks'
+ elif need in commonhooks:
+ n = 'commonhooks'
else:
errmess('append_needs: unknown need %s\n'%(`need`))
return
if need in outneeds[n]: return
if flag:
tmp={}
- if needs.has_key(need):
+ if need in needs:
for nn in needs[need]:
t=append_needs(nn,0)
if type(t)==types.DictType:
for nnn in t.keys():
- if tmp.has_key(nnn): tmp[nnn]=tmp[nnn]+t[nnn]
- else: tmp[nnn]=t[nnn]
+ if nnn in tmp:
+ tmp[nnn]=tmp[nnn]+t[nnn]
+ else:
+ tmp[nnn]=t[nnn]
for nn in tmp.keys():
for nnn in tmp[nn]:
if nnn not in outneeds[nn]:
@@ -1096,14 +1107,17 @@
outneeds[n].append(need)
else:
tmp={}
- if needs.has_key(need):
+ if need in needs:
for nn in needs[need]:
t=append_needs(nn,flag)
if type(t)==types.DictType:
for nnn in t.keys():
- if tmp.has_key(nnn): tmp[nnn]=t[nnn]+tmp[nnn]
- else: tmp[nnn]=t[nnn]
- if not tmp.has_key(n): tmp[n]=[]
+ if nnn in tmp:
+ tmp[nnn]=t[nnn]+tmp[nnn]
+ else:
+ tmp[nnn]=t[nnn]
+ if n not in tmp:
+ tmp[n]=[]
tmp[n].append(need)
return tmp
else:
@@ -1116,7 +1130,7 @@
out=[]
saveout=copy.copy(outneeds[n])
while len(outneeds[n])>0:
- if not needs.has_key(outneeds[n][0]):
+ if outneeds[n][0] not in needs:
out.append(outneeds[n][0])
del outneeds[n][0]
else:
@@ -1136,6 +1150,7 @@
out=out+saveout
break
saveout=copy.copy(outneeds[n])
- if out==[]: out=[n]
+ if out==[]:
+ out=[n]
res[n]=out
return res
Modified: branches/numpy.scons/numpy/f2py/crackfortran.py
===================================================================
--- branches/numpy.scons/numpy/f2py/crackfortran.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/crackfortran.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -214,14 +214,14 @@
badnames[n]=n+'_bn'
invbadnames[n+'_bn']=n
def rmbadname1(name):
- if badnames.has_key(name):
+ if name in badnames:
errmess('rmbadname1: Replacing "%s" with "%s".\n'%(name,badnames[name]))
return badnames[name]
return name
def rmbadname(names): return map(rmbadname1,names)
def undo_rmbadname1(name):
- if invbadnames.has_key(name):
+ if name in invbadnames:
errmess('undo_rmbadname1: Replacing "%s" with "%s".\n'\
%(name,invbadnames[name]))
return invbadnames[name]
@@ -568,11 +568,12 @@
if not m:
re_1 = crackline_re_1
if 0<=skipblocksuntil<=groupcounter:return
- if groupcache[groupcounter].has_key('externals'):
+ if 'externals' in groupcache[groupcounter]:
for name in groupcache[groupcounter]['externals']:
- if invbadnames.has_key(name):
+ if name in invbadnames:
name=invbadnames[name]
- if groupcache[groupcounter].has_key('interfaced') and name in groupcache[groupcounter]['interfaced']: continue
+ if 'interfaced' in groupcache[groupcounter] and name in groupcache[groupcounter]['interfaced']:
+ continue
m1=re.match(r'(?P<before>[^"]*)\b%s\b\s*@\(@(?P<args>[^@]*)@\)@.*\Z'%name,markouterparen(line),re.I)
if m1:
m2 = re_1.match(m1.group('before'))
@@ -665,7 +666,8 @@
if decl is decl2: return decl
for k in decl2.keys():
if k=='typespec':
- if force or not decl.has_key(k): decl[k]=decl2[k]
+ if force or k not in decl:
+ decl[k]=decl2[k]
elif k=='attrspec':
for l in decl2[k]:
decl=setattrspec(decl,l,force)
@@ -674,7 +676,8 @@
elif k=='charselector':
decl=setcharselector(decl,decl2[k],force)
elif k in ['=','typename']:
- if force or not decl.has_key(k): decl[k]=decl2[k]
+ if force or k not in decl:
+ decl[k]=decl2[k]
elif k=='note':
pass
elif k in ['intent','check','dimension','optional','required']:
@@ -754,12 +757,15 @@
if case in ['call','callfun']:
needinterface=1
- if not groupcache[groupcounter].has_key('args'): return
+ if 'args' not in groupcache[groupcounter]:
+ return
if name not in groupcache[groupcounter]['args']:
return
for it in grouplist[groupcounter]:
- if it['name']==name: return
- if name in groupcache[groupcounter]['interfaced']: return
+ if it['name']==name:
+ return
+ if name in groupcache[groupcounter]['interfaced']:
+ return
block={'call':'subroutine','callfun':'function'}[case]
if f77modulename and neededmodule==-1 and groupcounter<=1:
neededmodule=groupcounter+2
@@ -834,7 +840,7 @@
try: groupcache[groupcounter]['vars'][name]=appenddecl(groupcache[groupcounter]['vars'][name],groupcache[groupcounter-2]['vars'][''])
except: pass
if case=='callfun': # return type
- if result and groupcache[groupcounter]['vars'].has_key(result):
+ if result and result in groupcache[groupcounter]['vars']:
if not name==result:
groupcache[groupcounter]['vars'][name]=appenddecl(groupcache[groupcounter]['vars'][name],groupcache[groupcounter]['vars'][result])
#if groupcounter>1: # name is interfaced
@@ -876,7 +882,7 @@
i=markouterparen(ll).find('@)@')-2
ll=ll[:i+1]+'::'+ll[i+1:]
i=ll.find('::')
- if ll[i:]=='::' and groupcache[groupcounter].has_key('args'):
+ if ll[i:]=='::' and 'args' in groupcache[groupcounter]:
outmess('All arguments will have attribute %s%s\n'%(m.group('this'),ll[:i]))
ll = ll + ','.join(groupcache[groupcounter]['args'])
if i<0:i=0;pl=''
@@ -896,8 +902,10 @@
continue
else:
k=rmbadname1(m1.group('name'))
- if not edecl.has_key(k): edecl[k]={}
- if case=='dimension': ap=case+m1.group('after')
+ if k not in edecl:
+ edecl[k]={}
+ if case=='dimension':
+ ap=case+m1.group('after')
if case=='intent':
ap=m.group('this')+pl
if _intentcallbackpattern.match(ap):
@@ -910,9 +918,12 @@
else:
errmess('analyzeline: intent(callback) %s is already'\
' in argument list' % (k))
- if case in ['optional','required','public','external','private','intrisic']: ap=case
- if edecl[k].has_key('attrspec'): edecl[k]['attrspec'].append(ap)
- else: edecl[k]['attrspec']=[ap]
+ if case in ['optional','required','public','external','private','intrisic']:
+ ap=case
+ if 'attrspec' in edecl[k]:
+ edecl[k]['attrspec'].append(ap)
+ else:
+ edecl[k]['attrspec']=[ap]
if case=='external':
if groupcache[groupcounter]['block']=='program':
outmess('analyzeline: ignoring program arguments\n')
@@ -920,7 +931,7 @@
if k not in groupcache[groupcounter]['args']:
#outmess('analyzeline: ignoring external %s (not in arguments list)\n'%(`k`))
continue
- if not groupcache[groupcounter].has_key('externals'):
+ if 'externals' not in groupcache[groupcounter]:
groupcache[groupcounter]['externals']=[]
groupcache[groupcounter]['externals'].append(k)
last_name = k
@@ -938,8 +949,9 @@
outmess('analyzeline: could not extract name,expr in parameter statement "%s" of "%s"\n'%(e,ll));continue
params = get_parameters(edecl)
k=rmbadname1(k)
- if not edecl.has_key(k): edecl[k]={}
- if edecl[k].has_key('=') and (not edecl[k]['=']==initexpr):
+ if k not in edecl:
+ edecl[k]={}
+ if '=' in edecl[k] and (not edecl[k]['=']==initexpr):
outmess('analyzeline: Overwriting the value of parameter "%s" ("%s") with "%s".\n'%(k,edecl[k]['='],initexpr))
t = determineexprtype(initexpr,params)
if t:
@@ -959,7 +971,7 @@
% (initexpr, msg))
continue
edecl[k]['='] = repr(v)
- if edecl[k].has_key('attrspec'):
+ if 'attrspec' in edecl[k]:
edecl[k]['attrspec'].append('parameter')
else: edecl[k]['attrspec']=['parameter']
last_name = k
@@ -970,7 +982,7 @@
if m.group('after').strip().lower()=='none':
groupcache[groupcounter]['implicit']=None
elif m.group('after'):
- if groupcache[groupcounter].has_key('implicit'):
+ if 'implicit' in groupcache[groupcounter]:
impl=groupcache[groupcounter]['implicit']
else: impl={}
if impl is None:
@@ -1026,7 +1038,7 @@
dl = dl[1:].strip()
ll.append([dl,il])
vars={}
- if groupcache[groupcounter].has_key('vars'):
+ if 'vars' in groupcache[groupcounter]:
vars=groupcache[groupcounter]['vars']
last_name = None
for l in ll:
@@ -1051,9 +1063,9 @@
i=i+1
i=i+1
#v,l[1][j:i-1]=name,initvalue
- if not vars.has_key(v):
+ if v not in vars:
vars[v]={}
- if vars[v].has_key('=') and not vars[v]['=']==l[1][j:i-1]:
+ if '=' in vars[v] and not vars[v]['=']==l[1][j:i-1]:
outmess('analyzeline: changing init expression of "%s" ("%s") to "%s"\n'%(v,vars[v]['='],l[1][j:i-1]))
vars[v]['=']=l[1][j:i-1]
j=i
@@ -1079,10 +1091,10 @@
if not bn: bn='_BLNK_'
cl.append([bn,ol])
commonkey={}
- if groupcache[groupcounter].has_key('common'):
+ if 'common' in groupcache[groupcounter]:
commonkey=groupcache[groupcounter]['common']
for c in cl:
- if commonkey.has_key(c[0]):
+ if c[0] in commonkey:
outmess('analyzeline: previously defined common block encountered. Skipping.\n')
continue
commonkey[c[0]]=[]
@@ -1094,12 +1106,14 @@
m1=re.match(r'\A\s*(?P<name>\b[\w]+\b)\s*((,(\s*\bonly\b\s*:|(?P<notonly>))\s*(?P<list>.*))|)\s*\Z',m.group('after'),re.I)
if m1:
mm=m1.groupdict()
- if not groupcache[groupcounter].has_key('use'): groupcache[groupcounter]['use']={}
+ if 'use' not in groupcache[groupcounter]:
+ groupcache[groupcounter]['use']={}
name=m1.group('name')
groupcache[groupcounter]['use'][name]={}
isonly=0
- if mm.has_key('list') and mm['list'] is not None:
- if mm.has_key('notonly') and mm['notonly'] is None:isonly=1
+ if 'list' in mm and mm['list'] is not None:
+ if 'notonly' in mm and mm['notonly'] is None:
+ isonly=1
groupcache[groupcounter]['use'][name]['only']=isonly
ll=[x.strip() for x in mm['list'].split(',')]
rl={}
@@ -1119,10 +1133,10 @@
print m.groupdict()
outmess('analyzeline: Could not crack the use statement.\n')
elif case in ['f2pyenhancements']:
- if not groupcache[groupcounter].has_key ('f2pyenhancements'):
+ if 'f2pyenhancements' not in groupcache[groupcounter]:
groupcache[groupcounter]['f2pyenhancements'] = {}
d = groupcache[groupcounter]['f2pyenhancements']
- if m.group('this')=='usercode' and d.has_key('usercode'):
+ if m.group('this')=='usercode' and 'usercode' in d:
if type(d['usercode']) is type(''):
d['usercode'] = [d['usercode']]
d['usercode'].append(m.group('after'))
@@ -1144,10 +1158,10 @@
outmess('analyzeline: No code implemented for line.\n')
def appendmultiline(group, context_name,ml):
- if not group.has_key('f2pymultilines'):
+ if 'f2pymultilines' not in group:
group['f2pymultilines'] = {}
d = group['f2pymultilines']
- if not d.has_key(context_name):
+ if context_name not in d:
d[context_name] = []
d[context_name].append(ml)
return
@@ -1231,36 +1245,36 @@
continue
ename=rmbadname1(m.group('name'))
edecl={}
- if groupcache[groupcounter]['vars'].has_key(ename):
+ if ename in groupcache[groupcounter]['vars']:
edecl=groupcache[groupcounter]['vars'][ename].copy()
- has_typespec = edecl.has_key('typespec')
- if not has_typespec:
+ not_has_typespec = 'typespec' not in edecl
+ if not_has_typespec:
edecl['typespec']=typespec
elif typespec and (not typespec==edecl['typespec']):
outmess('updatevars: attempt to change the type of "%s" ("%s") to "%s". Ignoring.\n' % (ename,edecl['typespec'],typespec))
- if not edecl.has_key('kindselector'):
+ if 'kindselector' not in edecl:
edecl['kindselector']=copy.copy(kindselect)
elif kindselect:
for k in kindselect.keys():
- if edecl['kindselector'].has_key(k) and (not kindselect[k]==edecl['kindselector'][k]):
+ if k in edecl['kindselector'] and (not kindselect[k]==edecl['kindselector'][k]):
outmess('updatevars: attempt to change the kindselector "%s" of "%s" ("%s") to "%s". Ignoring.\n' % (k,ename,edecl['kindselector'][k],kindselect[k]))
else: edecl['kindselector'][k]=copy.copy(kindselect[k])
- if not edecl.has_key('charselector') and charselect:
- if not has_typespec:
+ if 'charselector' not in edecl and charselect:
+ if not_has_typespec:
edecl['charselector']=charselect
else:
errmess('updatevars:%s: attempt to change empty charselector to %r. Ignoring.\n' \
%(ename,charselect))
elif charselect:
for k in charselect.keys():
- if edecl['charselector'].has_key(k) and (not charselect[k]==edecl['charselector'][k]):
+ if k in edecl['charselector'] and (not charselect[k]==edecl['charselector'][k]):
outmess('updatevars: attempt to change the charselector "%s" of "%s" ("%s") to "%s". Ignoring.\n' % (k,ename,edecl['charselector'][k],charselect[k]))
else: edecl['charselector'][k]=copy.copy(charselect[k])
- if not edecl.has_key('typename'):
+ if 'typename' not in edecl:
edecl['typename']=typename
elif typename and (not edecl['typename']==typename):
outmess('updatevars: attempt to change the typename of "%s" ("%s") to "%s". Ignoring.\n' % (ename,edecl['typename'],typename))
- if not edecl.has_key('attrspec'):
+ if 'attrspec' not in edecl:
edecl['attrspec']=copy.copy(attrspec)
elif attrspec:
for a in attrspec:
@@ -1281,7 +1295,7 @@
for k in d1.keys():
if d1[k] is not None: d1[k]=unmarkouterparen(d1[k])
else: del d1[k]
- if d1.has_key('len') and d1.has_key('array'):
+ if 'len' in d1 and 'array' in d1:
if d1['len']=='':
d1['len']=d1['array']
del d1['array']
@@ -1289,9 +1303,9 @@
d1['array']=d1['array']+','+d1['len']
del d1['len']
errmess('updatevars: "%s %s" is mapped to "%s %s(%s)"\n'%(typespec,e,typespec,ename,d1['array']))
- if d1.has_key('array'):
+ if 'array' in d1:
dm = 'dimension(%s)'%d1['array']
- if not edecl.has_key('attrspec') or (not edecl['attrspec']):
+ if 'attrspec' not in edecl or (not edecl['attrspec']):
edecl['attrspec']=[dm]
else:
edecl['attrspec'].append(dm)
@@ -1302,26 +1316,29 @@
% (ename,dm1,dm))
break
- if d1.has_key('len'):
+ if 'len' in d1:
if typespec in ['complex','integer','logical','real']:
- if (not edecl.has_key('kindselector')) or (not edecl['kindselector']):
+ if ('kindselector' not in edecl) or (not edecl['kindselector']):
edecl['kindselector']={}
edecl['kindselector']['*']=d1['len']
elif typespec == 'character':
- if (not edecl.has_key('charselector')) or (not edecl['charselector']): edecl['charselector']={}
- if edecl['charselector'].has_key('len'): del edecl['charselector']['len']
+ if ('charselector' not in edecl) or (not edecl['charselector']):
+ edecl['charselector']={}
+ if 'len' in edecl['charselector']:
+ del edecl['charselector']['len']
edecl['charselector']['*']=d1['len']
- if d1.has_key('init'):
- if edecl.has_key('=') and (not edecl['=']==d1['init']):
+ if 'init' in d1:
+ if '=' in edecl and (not edecl['=']==d1['init']):
outmess('updatevars: attempt to change the init expression of "%s" ("%s") to "%s". Ignoring.\n' % (ename,edecl['='],d1['init']))
else:
edecl['=']=d1['init']
else:
outmess('updatevars: could not crack entity declaration "%s". Ignoring.\n'%(ename+m.group('after')))
for k in edecl.keys():
- if not edecl[k]: del edecl[k]
+ if not edecl[k]:
+ del edecl[k]
groupcache[groupcounter]['vars'][ename]=edecl
- if groupcache[groupcounter].has_key('varnames'):
+ if 'varnames' in groupcache[groupcounter]:
groupcache[groupcounter]['varnames'].append(ename)
last_name = ename
return last_name
@@ -1373,9 +1390,11 @@
return kindselect,charselect,typename
######
def setattrspec(decl,attr,force=0):
- if not decl: decl={}
- if not attr: return decl
- if not decl.has_key('attrspec'):
+ if not decl:
+ decl={}
+ if not attr:
+ return decl
+ if 'attrspec' not in decl:
decl['attrspec']=[attr]
return decl
if force: decl['attrspec'].append(attr)
@@ -1391,40 +1410,52 @@
else:
decl['attrspec'].append(attr)
return decl
+
def setkindselector(decl,sel,force=0):
- if not decl: decl={}
- if not sel: return decl
- if not decl.has_key('kindselector'):
+ if not decl:
+ decl={}
+ if not sel:
+ return decl
+ if 'kindselector' not in decl:
decl['kindselector']=sel
return decl
for k in sel.keys():
- if force or not decl['kindselector'].has_key(k):
+ if force or k not in decl['kindselector']:
decl['kindselector'][k]=sel[k]
return decl
+
def setcharselector(decl,sel,force=0):
- if not decl: decl={}
- if not sel: return decl
- if not decl.has_key('charselector'):
+ if not decl:
+ decl={}
+ if not sel:
+ return decl
+ if 'charselector' not in decl:
decl['charselector']=sel
return decl
for k in sel.keys():
- if force or not decl['charselector'].has_key(k):
+ if force or k not in decl['charselector']:
decl['charselector'][k]=sel[k]
return decl
+
def getblockname(block,unknown='unknown'):
- if block.has_key('name'): return block['name']
+ if 'name' in block:
+ return block['name']
return unknown
+
###### post processing
+
def setmesstext(block):
global filepositiontext
- try: filepositiontext='In: %s:%s\n'%(block['from'],block['name'])
- except: pass
+ try:
+ filepositiontext='In: %s:%s\n'%(block['from'],block['name'])
+ except:
+ pass
def get_usedict(block):
usedict = {}
- if block.has_key('parent_block'):
+ if 'parent_block' in block:
usedict = get_usedict(block['parent_block'])
- if block.has_key('use'):
+ if 'use' in block:
usedict.update(block['use'])
return usedict
@@ -1437,7 +1468,7 @@
return param_map
for usename,mapping in usedict.items():
usename = usename.lower()
- if not f90modulevars.has_key(usename):
+ if usename not in f90modulevars:
continue
mvars = f90modulevars[usename]
params = get_parameters(mvars)
@@ -1447,7 +1478,7 @@
if mapping:
errmess('get_useparameters: mapping for %s not impl.' % (mapping))
for k,v in params.items():
- if param_map.has_key(k):
+ if k in param_map:
outmess('get_useparameters: overriding parameter %s with'\
' value from module %s' % (`k`,`usename`))
param_map[k] = v
@@ -1469,15 +1500,15 @@
if param_map is None:
param_map = get_useparameters(block)
- if param_map is not None and block.has_key('vars'):
+ if param_map is not None and 'vars' in block:
vars = block['vars']
for n in vars.keys():
var = vars[n]
- if var.has_key('kindselector'):
+ if 'kindselector' in var:
kind = var['kindselector']
- if kind.has_key('kind'):
+ if 'kind' in kind:
val = kind['kind']
- if param_map.has_key(val):
+ if val in param_map:
kind['kind'] = param_map[val]
new_body = []
for b in block['body']:
@@ -1500,44 +1531,48 @@
for g in block:
setmesstext(g)
g=postcrack(g,tab=tab+'\t')
- if g.has_key('name') and '__user__' in g['name']: # sort user routines to appear first
+ if 'name' in g and '__user__' in g['name']: # sort user routines to appear first
uret.append(g)
else:
gret.append(g)
return uret+gret
setmesstext(block)
- if (not type(block)==types.DictType) and not block.has_key('block'):
+ if (not type(block)==types.DictType) and 'block' not in block:
raise 'postcrack: Expected block dictionary instead of ',block
- if block.has_key('name') and not block['name']=='unknown_interface':
+ if 'name' in block and not block['name']=='unknown_interface':
outmess('%sBlock: %s\n'%(tab,block['name']),0)
blocktype=block['block']
block=analyzeargs(block)
block=analyzecommon(block)
block['vars']=analyzevars(block)
block['sortvars']=sortvarnames(block['vars'])
- if block.has_key('args') and block['args']:
+ if 'args' in block and block['args']:
args=block['args']
block['body']=analyzebody(block,args,tab=tab)
userisdefined=[]
## fromuser = []
- if block.has_key('use'):
+ if 'use' in block:
useblock=block['use']
for k in useblock.keys():
if '__user__' in k:
userisdefined.append(k)
-## if useblock[k].has_key('map'):
+## if 'map' in useblock[k]:
## for n in useblock[k]['map'].values():
## if n not in fromuser: fromuser.append(n)
else: useblock={}
name=''
- if block.has_key('name'):name=block['name']
- if block.has_key('externals') and block['externals']:# and not userisdefined: # Build a __user__ module
+ if 'name' in block:
+ name=block['name']
+ if 'externals' in block and block['externals']:# and not userisdefined: # Build a __user__ module
interfaced=[]
- if block.has_key('interfaced'): interfaced=block['interfaced']
+ if 'interfaced' in block:
+ interfaced=block['interfaced']
mvars=copy.copy(block['vars'])
- if name: mname=name+'__user__routines'
- else: mname='unknown__user__routines'
+ if name:
+ mname=name+'__user__routines'
+ else:
+ mname='unknown__user__routines'
if mname in userisdefined:
i=1
while '%s_%i'%(mname,i) in userisdefined: i=i+1
@@ -1556,7 +1591,7 @@
i=-1
for bb in b['body']:
i=i+1
- if bb.has_key('name') and bb['name']==e:
+ if 'name' in bb and bb['name']==e:
edef=copy.copy(bb)
del b['body'][i]
break
@@ -1566,7 +1601,7 @@
break
interface['body'].append(edef)
else:
- if mvars.has_key(e) and not isexternal(mvars[e]):
+ if e in mvars and not isexternal(mvars[e]):
interface['vars'][e]=mvars[e]
if interface['vars'] or interface['body']:
block['interfaced']=interfaced
@@ -1581,7 +1616,7 @@
indep = []
dep = []
for v in vars.keys():
- if vars[v].has_key('depend') and vars[v]['depend']:
+ if 'depend' in vars[v] and vars[v]['depend']:
dep.append(v)
#print '%s depends on %s'%(v,vars[v]['depend'])
else: indep.append(v)
@@ -1623,8 +1658,8 @@
if m.group('dims'):
dims=[x.strip() for x in markoutercomma(m.group('dims')).split('@,@')]
n=m.group('name').strip()
- if block['vars'].has_key(n):
- if block['vars'][n].has_key('attrspec'):
+ if n in block['vars']:
+ if 'attrspec' in block['vars'][n]:
block['vars'][n]['attrspec'].append('dimension(%s)'%(','.join(dims)))
else:
block['vars'][n]['attrspec']=['dimension(%s)'%(','.join(dims))]
@@ -1638,11 +1673,12 @@
errmess('analyzecommon: failed to extract "<name>[(<dims>)]" from "%s" in common /%s/.\n'%(e,k))
comvars.append(n)
block['common'][k]=comvars
- if not block.has_key('commonvars'):
+ if 'commonvars' not in block:
block['commonvars']=commonvars
else:
block['commonvars']=block['commonvars']+commonvars
return block
+
def analyzebody(block,args,tab=''):
global usermodules,skipfuncs,onlyfuncs,f90modulevars
setmesstext(block)
@@ -1661,7 +1697,7 @@
else: as_=args
b=postcrack(b,as_,tab=tab+'\t')
if b['block']=='interface' and not b['body']:
- if not b.has_key('f2pyenhancements'):
+ if 'f2pyenhancements' not in b:
continue
if b['block'].replace(' ','')=='pythonmodule':
usermodules.append(b)
@@ -1670,11 +1706,12 @@
f90modulevars[b['name']] = b['vars']
body.append(b)
return body
+
def buildimplicitrules(block):
setmesstext(block)
implicitrules=defaultimplicitrules
attrrules={}
- if block.has_key('implicit'):
+ if 'implicit' in block:
if block['implicit'] is None:
implicitrules=None
if verbose>1:
@@ -1834,12 +1871,12 @@
word_pattern = re.compile(r'\b[a-z][\w$]*\b',re.I)
def _get_depend_dict(name, vars, deps):
- if vars.has_key(name):
+ if name in vars:
words = vars[name].get('depend',[])
- if vars[name].has_key('=') and not isstring(vars[name]):
+ if '=' in vars[name] and not isstring(vars[name]):
for word in word_pattern.findall(vars[name]['=']):
- if word not in words and vars.has_key(word):
+ if word not in words and word not in vars:
words.append(word)
for word in words[:]:
for w in deps.get(word,[]) \
@@ -1870,13 +1907,13 @@
del depend_dict[name]
while depend_dict:
for name, lst in depend_dict.items():
- new_lst = [n for n in lst if depend_dict.has_key(n)]
+ new_lst = [n for n in lst if n in depend_dict]
if not new_lst:
names.append(name)
del depend_dict[name]
else:
depend_dict[name] = new_lst
- return [name for name in names if vars.has_key(name)]
+ return [name for name in names if name in vars]
def _kind_func(string):
#XXX: return something sensible.
@@ -1904,16 +1941,16 @@
for name,func in [('kind',_kind_func),
('selected_int_kind',_selected_int_kind_func),
]:
- if not g_params.has_key(name):
+ if name not in g_params:
g_params[name] = func
param_names = []
for n in get_sorted_names(vars):
- if vars[n].has_key('attrspec') and 'parameter' in vars[n]['attrspec']:
+ if 'attrspec' in vars[n] and 'parameter' in vars[n]['attrspec']:
param_names.append(n)
kind_re = re.compile(r'\bkind\s*\(\s*(?P<value>.*)\s*\)',re.I)
selected_int_kind_re = re.compile(r'\bselected_int_kind\s*\(\s*(?P<value>.*)\s*\)',re.I)
for n in param_names:
- if vars[n].has_key('='):
+ if '=' in vars[n]:
v = vars[n]['=']
if islogical(vars[n]):
v = v.lower()
@@ -1978,11 +2015,11 @@
setmesstext(block)
implicitrules,attrrules=buildimplicitrules(block)
vars=copy.copy(block['vars'])
- if block['block']=='function' and not vars.has_key(block['name']):
+ if block['block']=='function' and block['name'] not in vars:
vars[block['name']]={}
- if block['vars'].has_key(''):
+ if '' in block['vars']:
del vars['']
- if block['vars'][''].has_key('attrspec'):
+ if 'attrspec' in block['vars']['']:
gen=block['vars']['']['attrspec']
for n in vars.keys():
for k in ['public','private']:
@@ -2014,14 +2051,14 @@
for n in svars:
if n[0] in attrrules.keys():
vars[n]=setattrspec(vars[n],attrrules[n[0]])
- if not vars[n].has_key('typespec'):
- if not(vars[n].has_key('attrspec') and 'external' in vars[n]['attrspec']):
+ if 'typespec' not in vars[n]:
+ if not('attrspec' in vars[n] and 'external' in vars[n]['attrspec']):
if implicitrules:
ln0 = n[0].lower()
for k in implicitrules[ln0].keys():
if k=='typespec' and implicitrules[ln0][k]=='undefined':
continue
- if not vars[n].has_key(k):
+ if k not in vars[n]:
vars[n][k]=implicitrules[ln0][k]
elif k=='attrspec':
for l in implicitrules[ln0][k]:
@@ -2029,8 +2066,8 @@
elif n in block['args']:
outmess('analyzevars: typespec of variable %s is not defined in routine %s.\n'%(`n`,block['name']))
- if vars[n].has_key('charselector'):
- if vars[n]['charselector'].has_key('len'):
+ if 'charselector' in vars[n]:
+ if 'len' in vars[n]['charselector']:
l = vars[n]['charselector']['len']
try:
l = str(eval(l,{},params))
@@ -2038,8 +2075,8 @@
pass
vars[n]['charselector']['len'] = l
- if vars[n].has_key('kindselector'):
- if vars[n]['kindselector'].has_key('kind'):
+ if 'kindselector' in vars[n]:
+ if 'kind' in vars[n]['kindselector']:
l = vars[n]['kindselector']['kind']
try:
l = str(eval(l,{},params))
@@ -2048,7 +2085,7 @@
vars[n]['kindselector']['kind'] = l
savelindims = {}
- if vars[n].has_key('attrspec'):
+ if 'attrspec' in vars[n]:
attr=vars[n]['attrspec']
attr.reverse()
vars[n]['attrspec']=[]
@@ -2061,7 +2098,8 @@
elif a[:4]=='note': note=(a[4:].strip())[1:-1]
else: vars[n]=setattrspec(vars[n],a)
if intent:
- if not vars[n].has_key('intent'): vars[n]['intent']=[]
+ if 'intent' not in vars[n]:
+ vars[n]['intent']=[]
for c in [x.strip() for x in markoutercomma(intent).split('@,@')]:
if not c in vars[n]['intent']:
vars[n]['intent'].append(c)
@@ -2069,27 +2107,32 @@
if note:
note=note.replace('\\n\\n','\n\n')
note=note.replace('\\n ','\n')
- if not vars[n].has_key('note'): vars[n]['note']=[note]
- else: vars[n]['note'].append(note)
+ if 'note' not in vars[n]:
+ vars[n]['note']=[note]
+ else:
+ vars[n]['note'].append(note)
note=None
if depend is not None:
- if not vars[n].has_key('depend'): vars[n]['depend']=[]
+ if 'depend' not in vars[n]:
+ vars[n]['depend']=[]
for c in rmbadname([x.strip() for x in markoutercomma(depend).split('@,@')]):
if c not in vars[n]['depend']:
vars[n]['depend'].append(c)
depend=None
if check is not None:
- if not vars[n].has_key('check'): vars[n]['check']=[]
+ if 'check' not in vars[n]:
+ vars[n]['check']=[]
for c in [x.strip() for x in markoutercomma(check).split('@,@')]:
if not c in vars[n]['check']:
vars[n]['check'].append(c)
check=None
- if dim and not vars[n].has_key('dimension'):
+ if dim and 'dimension' not in vars[n]:
vars[n]['dimension']=[]
for d in rmbadname([x.strip() for x in markoutercomma(dim).split('@,@')]):
star = '*'
- if d==':': star=':'
- if params.has_key(d):
+ if d==':':
+ star=':'
+ if d in params:
d = str(params[d])
for p in params.keys():
m = re.match(r'(?P<before>.*?)\b'+p+r'\b(?P<after>.*)',d,re.I)
@@ -2110,15 +2153,15 @@
if di and di[-4:] == '/(1)': di = di[:-4]
if v: savelindims[d] = v,di
vars[n]['dimension'].append(d)
- if vars[n].has_key('dimension'):
+ if 'dimension' in vars[n]:
if isintent_c(vars[n]):
shape_macro = 'shape'
else:
shape_macro = 'shape'#'fshape'
if isstringarray(vars[n]):
- if vars[n].has_key('charselector'):
+ if 'charselector' in vars[n]:
d = vars[n]['charselector']
- if d.has_key('*'):
+ if '*' in d:
d = d['*']
errmess('analyzevars: character array "character*%s %s(%s)" is considered as "character %s(%s)"; "intent(c)" is forced.\n'\
%(d,n,
@@ -2126,17 +2169,18 @@
n,','.join(vars[n]['dimension']+[d])))
vars[n]['dimension'].append(d)
del vars[n]['charselector']
- if not vars[n].has_key('intent'):
+ if 'intent' not in vars[n]:
vars[n]['intent'] = []
if 'c' not in vars[n]['intent']:
vars[n]['intent'].append('c')
else:
errmess("analyzevars: charselector=%r unhandled." % (d))
- if not vars[n].has_key('check') and block.has_key('args') and n in block['args']:
- flag=not vars[n].has_key('depend')
- if flag: vars[n]['depend']=[]
+ if 'check' not in vars[n] and 'args' in block and n in block['args']:
+ flag = 'depend' not in vars[n]
+ if flag:
+ vars[n]['depend']=[]
vars[n]['check']=[]
- if vars[n].has_key('dimension'):
+ if 'dimension' in vars[n]:
#/----< no check
#vars[n]['check'].append('rank(%s)==%s'%(n,len(vars[n]['dimension'])))
i=-1; ni=len(vars[n]['dimension'])
@@ -2145,40 +2189,42 @@
ad=''
pd=''
#origd = d
- if not vars.has_key(d):
- if savelindims.has_key(d):
+ if d not in vars:
+ if d in savelindims:
pd,ad='(',savelindims[d][1]
d = savelindims[d][0]
else:
for r in block['args']:
#for r in block['vars'].keys():
- if not vars.has_key(r): continue
+ if r not in vars:
+ continue
if re.match(r'.*?\b'+r+r'\b',d,re.I):
ddeps.append(r)
- if vars.has_key(d):
- if vars[d].has_key('attrspec'):
+ if d in vars:
+ if 'attrspec' in vars[d]:
for aa in vars[d]['attrspec']:
if aa[:6]=='depend':
ddeps += aa[6:].strip()[1:-1].split(',')
- if vars[d].has_key('depend'):
+ if 'depend' in vars[d]:
ddeps=ddeps+vars[d]['depend']
i=i+1
- if vars.has_key(d) and (not vars[d].has_key('depend')) \
- and (not vars[d].has_key('=')) and (d not in vars[n]['depend']) \
- and l_or(isintent_in,isintent_inout,isintent_inplace)(vars[n]):
+ if d in vars and ('depend' not in vars[d]) \
+ and ('=' not in vars[d]) and (d not in vars[n]['depend']) \
+ and l_or(isintent_in, isintent_inout, isintent_inplace)(vars[n]):
vars[d]['depend']=[n]
if ni>1:
vars[d]['=']='%s%s(%s,%s)%s'% (pd,shape_macro,n,i,ad)
else:
vars[d]['=']='%slen(%s)%s'% (pd,n,ad)
# /---< no check
- if 1 and not vars[d].has_key('check'):
+ if 1 and 'check' not in vars[d]:
if ni>1:
vars[d]['check']=['%s%s(%s,%i)%s==%s'\
%(pd,shape_macro,n,i,ad,d)]
else:
vars[d]['check']=['%slen(%s)%s>=%s'%(pd,n,ad,d)]
- if not vars[d].has_key('attrspec'): vars[d]['attrspec']=['optional']
+ if 'attrspec' not in vars[d]:
+ vars[d]['attrspec']=['optional']
if ('optional' not in vars[d]['attrspec']) and\
('required' not in vars[d]['attrspec']):
vars[d]['attrspec'].append('optional')
@@ -2187,32 +2233,35 @@
#if ni>1: vars[n]['check'].append('shape(%s,%i)==%s'%(n,i,d))
#else: vars[n]['check'].append('len(%s)>=%s'%(n,d))
if flag:
- if vars.has_key(d):
+ if d in vars:
if n not in ddeps:
vars[n]['depend'].append(d)
else:
vars[n]['depend'] = vars[n]['depend'] + ddeps
elif isstring(vars[n]):
length='1'
- if vars[n].has_key('charselector'):
- if vars[n]['charselector'].has_key('*'):
+ if 'charselector' in vars[n]:
+ if '*' in vars[n]['charselector']:
length = _eval_length(vars[n]['charselector']['*'],
params)
vars[n]['charselector']['*']=length
- elif vars[n]['charselector'].has_key('len'):
+ elif 'len' in vars[n]['charselector']:
length = _eval_length(vars[n]['charselector']['len'],
params)
del vars[n]['charselector']['len']
vars[n]['charselector']['*']=length
- if not vars[n]['check']: del vars[n]['check']
- if flag and not vars[n]['depend']: del vars[n]['depend']
- if vars[n].has_key('='):
- if not vars[n].has_key('attrspec'): vars[n]['attrspec']=[]
+ if not vars[n]['check']:
+ del vars[n]['check']
+ if flag and not vars[n]['depend']:
+ del vars[n]['depend']
+ if '=' in vars[n]:
+ if 'attrspec' not in vars[n]:
+ vars[n]['attrspec']=[]
if ('optional' not in vars[n]['attrspec']) and \
('required' not in vars[n]['attrspec']):
vars[n]['attrspec'].append('optional')
- if not vars[n].has_key('depend'):
+ if 'depend' not in vars[n]:
vars[n]['depend']=[]
for v,m in dep_matches.items():
if m(vars[n]['=']): vars[n]['depend'].append(v)
@@ -2222,12 +2271,12 @@
for n in vars.keys():
if n==block['name']: # n is block name
- if vars[n].has_key('note'):
+ if 'note' in vars[n]:
block['note']=vars[n]['note']
if block['block']=='function':
- if block.has_key('result') and vars.has_key(block['result']):
+ if 'result' in block and block['result'] in vars:
vars[n]=appenddecl(vars[n],vars[block['result']])
- if block.has_key('prefix'):
+ if 'prefix' in block:
pr=block['prefix']; ispure=0; isrec=1
pr1=pr.replace('pure','')
ispure=(not pr==pr1)
@@ -2239,7 +2288,7 @@
kindselect,charselect,typename=cracktypespec(typespec,selector)
vars[n]['typespec']=typespec
if kindselect:
- if kindselect.has_key('kind'):
+ if 'kind' in kindselect:
try:
kindselect['kind'] = eval(kindselect['kind'],{},params)
except:
@@ -2252,27 +2301,27 @@
else:
outmess('analyzevars: prefix (%s) were not used\n'%`block['prefix']`)
if not block['block'] in ['module','pythonmodule','python module','block data']:
- if block.has_key('commonvars'):
+ if 'commonvars' in block:
neededvars=copy.copy(block['args']+block['commonvars'])
else:
neededvars=copy.copy(block['args'])
for n in vars.keys():
if l_or(isintent_callback,isintent_aux)(vars[n]):
neededvars.append(n)
- if block.has_key('entry'):
+ if 'entry' in block:
neededvars.extend(block['entry'].keys())
for k in block['entry'].keys():
for n in block['entry'][k]:
if n not in neededvars:
neededvars.append(n)
if block['block']=='function':
- if block.has_key('result'):
+ if 'result' in block:
neededvars.append(block['result'])
else:
neededvars.append(block['name'])
if block['block'] in ['subroutine','function']:
name = block['name']
- if vars.has_key(name) and vars[name].has_key('intent'):
+ if name in vars and 'intent' in vars[name]:
block['intent'] = vars[name]['intent']
if block['block'] == 'type':
neededvars.extend(vars.keys())
@@ -2280,11 +2329,13 @@
if n not in neededvars:
del vars[n]
return vars
+
analyzeargs_re_1 = re.compile(r'\A[a-z]+[\w$]*\Z',re.I)
def analyzeargs(block):
setmesstext(block)
implicitrules,attrrules=buildimplicitrules(block)
- if not block.has_key('args'): block['args']=[]
+ if 'args' not in block:
+ block['args']=[]
args=[]
re_1 = analyzeargs_re_1
for a in block['args']:
@@ -2297,29 +2348,32 @@
if na[-1]=='_': na=na+'e'
else: na=na+'_e'
a=na
- while block['vars'].has_key(a) or a in block['args']: a=a+'r'
+ while a in block['vars'] or a in block['args']:
+ a=a+'r'
block['vars'][a]=at
args.append(a)
- if not block['vars'].has_key(a):
+ if a not in block['vars']:
block['vars'][a]={}
- if block.has_key('externals') and a in block['externals']+block['interfaced']:
+ if 'externals' in block and a in block['externals']+block['interfaced']:
block['vars'][a]=setattrspec(block['vars'][a],'external')
block['args']=args
- if block.has_key('entry'):
+ if 'entry' in block:
for k,args1 in block['entry'].items():
for a in args1:
- if not block['vars'].has_key(a):
+ if a not in block['vars']:
block['vars'][a]={}
for b in block['body']:
if b['name'] in args:
- if not block.has_key('externals'): block['externals']=[]
+ if 'externals' not in block:
+ block['externals']=[]
if b['name'] not in block['externals']:
block['externals'].append(b['name'])
- if block.has_key('result') and not block['vars'].has_key(block['result']):
+ if 'result' in block and block['result'] not in block['vars']:
block['vars'][block['result']]={}
return block
+
determineexprtype_re_1 = re.compile(r'\A\(.+?[,].+?\)\Z',re.I)
determineexprtype_re_2 = re.compile(r'\A[+-]?\d+(_(P<name>[\w]+)|)\Z',re.I)
determineexprtype_re_3 = re.compile(r'\A[+-]?[\d.]+[\d+-de.]*(_(P<name>[\w]+)|)\Z',re.I)
@@ -2336,24 +2390,24 @@
return r
def determineexprtype(expr,vars,rules={}):
- if vars.has_key(expr):
+ if expr in vars:
return _ensure_exprdict(vars[expr])
expr=expr.strip()
if determineexprtype_re_1.match(expr):
return {'typespec':'complex'}
m=determineexprtype_re_2.match(expr)
if m:
- if m.groupdict().has_key('name') and m.group('name'):
+ if 'name' in m.groupdict() and m.group('name'):
outmess('determineexprtype: selected kind types not supported (%s)\n'%`expr`)
return {'typespec':'integer'}
m = determineexprtype_re_3.match(expr)
if m:
- if m.groupdict().has_key('name') and m.group('name'):
+ if 'name' in m.groupdict() and m.group('name'):
outmess('determineexprtype: selected kind types not supported (%s)\n'%`expr`)
return {'typespec':'real'}
for op in ['+','-','*','/']:
for e in [x.strip() for x in markoutercomma(expr,comma=op).split('@'+op+'@')]:
- if vars.has_key(e):
+ if e in vars:
return _ensure_exprdict(vars[e])
t={}
if determineexprtype_re_4.match(expr): # in parenthesis
@@ -2363,15 +2417,17 @@
if m:
rn=m.group('name')
t=determineexprtype(m.group('name'),vars,rules)
- if t and t.has_key('attrspec'): del t['attrspec']
+ if t and 'attrspec' in t:
+ del t['attrspec']
if not t:
- if rules.has_key(rn[0]):
+ if rn[0] in rules:
return _ensure_exprdict(rules[rn[0]])
if expr[0] in '\'"':
return {'typespec':'character','charselector':{'*':'*'}}
if not t:
outmess('determineexprtype: could not determine expressions (%s) type.\n'%(`expr`))
return t
+
######
def crack2fortrangen(block,tab='\n'):
global skipfuncs, onlyfuncs
@@ -2392,14 +2448,15 @@
blocktype=block['block']
if blocktype=='program': return ''
al=[]
- if block.has_key('name'): name=block['name']
- if block.has_key('args'):
+ if 'name' in block:
+ name=block['name']
+ if 'args' in block:
vars = block['vars']
al = [a for a in block['args'] if not isintent_callback(vars[a])]
if block['block']=='function' or al:
args='(%s)'%','.join(al)
f2pyenhancements = ''
- if block.has_key('f2pyenhancements'):
+ if 'f2pyenhancements' in block:
for k in block['f2pyenhancements'].keys():
f2pyenhancements = '%s%s%s %s'%(f2pyenhancements,tab+tabchar,k,block['f2pyenhancements'][k])
intent_lst = block.get('intent',[])[:]
@@ -2410,24 +2467,25 @@
(f2pyenhancements,tab+tabchar,
','.join(intent_lst),name)
use=''
- if block.has_key('use'):
+ if 'use' in block:
use=use2fortran(block['use'],tab+tabchar)
common=''
- if block.has_key('common'):
+ if 'common' in block:
common=common2fortran(block['common'],tab+tabchar)
if name=='unknown_interface': name=''
result=''
- if block.has_key('result'):
+ if 'result' in block:
result=' result (%s)'%block['result']
if block['result'] not in al:
al.append(block['result'])
- #if block.has_key('prefix'): prefix=block['prefix']+' '
+ #if 'prefix' in block:
+ # prefix=block['prefix']+' '
body=crack2fortrangen(block['body'],tab+tabchar)
vars=vars2fortran(block,block['vars'],al,tab+tabchar)
mess=''
- if block.has_key('from'):
+ if 'from' in block:
mess='! in %s'%block['from']
- if block.has_key('entry'):
+ if 'entry' in block:
entry_stmts = ''
for k,i in block['entry'].items():
entry_stmts = '%s%sentry %s(%s)' \
@@ -2437,6 +2495,7 @@
name = ''
ret='%s%s%s %s%s%s %s%s%s%s%s%s%send %s %s'%(tab,prefix,blocktype,name,args,result,mess,f2pyenhancements,use,vars,common,body,tab,blocktype,name)
return ret
+
def common2fortran(common,tab=''):
ret=''
for k in common.keys():
@@ -2445,6 +2504,7 @@
else:
ret='%s%scommon /%s/ %s'%(ret,tab,k,','.join(common[k]))
return ret
+
def use2fortran(use,tab=''):
ret=''
for m in use.keys():
@@ -2452,9 +2512,9 @@
if use[m]=={}:
if ret and ret[-1]==',': ret=ret[:-1]
continue
- if use[m].has_key('only') and use[m]['only']:
+ if 'only' in use[m] and use[m]['only']:
ret='%s,only:'%(ret)
- if use[m].has_key('map') and use[m]['map']:
+ if 'map' in use[m] and use[m]['map']:
c=' '
for k in use[m]['map'].keys():
if k==use[m]['map'][k]:
@@ -2463,6 +2523,7 @@
ret='%s%s%s=>%s'%(ret,c,k,use[m]['map'][k]); c=','
if ret and ret[-1]==',': ret=ret[:-1]
return ret
+
def true_intent_list(var):
lst = var['intent']
ret = []
@@ -2474,6 +2535,7 @@
if c:
ret.append(intent)
return ret
+
def vars2fortran(block,vars,args,tab=''):
"""
TODO:
@@ -2484,41 +2546,47 @@
ret=''
nout=[]
for a in args:
- if block['vars'].has_key(a): nout.append(a)
- if block.has_key('commonvars'):
+ if a in block['vars']:
+ nout.append(a)
+ if 'commonvars' in block:
for a in block['commonvars']:
- if vars.has_key(a):
- if a not in nout: nout.append(a)
- else: errmess('vars2fortran: Confused?!: "%s" is not defined in vars.\n'%a)
- if block.has_key('varnames'):
+ if a in vars:
+ if a not in nout:
+ nout.append(a)
+ else:
+ errmess('vars2fortran: Confused?!: "%s" is not defined in vars.\n'%a)
+ if 'varnames' in block:
nout.extend(block['varnames'])
for a in vars.keys():
- if a not in nout: nout.append(a)
+ if a not in nout:
+ nout.append(a)
for a in nout:
- if vars[a].has_key('depend'):
+ if 'depend' in vars[a]:
for d in vars[a]['depend']:
- if vars.has_key(d) and vars[d].has_key('depend') and a in vars[d]['depend']:
+ if d in vars and 'depend' in vars[d] and a in vars[d]['depend']:
errmess('vars2fortran: Warning: cross-dependence between variables "%s" and "%s"\n'%(a,d))
- if block.has_key('externals') and a in block['externals']:
+ if 'externals' in block and a in block['externals']:
if isintent_callback(vars[a]):
ret='%s%sintent(callback) %s'%(ret,tab,a)
ret='%s%sexternal %s'%(ret,tab,a)
if isoptional(vars[a]):
ret='%s%soptional %s'%(ret,tab,a)
- if vars.has_key(a) and not vars[a].has_key('typespec'):
+ if a in vars and 'typespec' not in vars[a]:
continue
cont=1
for b in block['body']:
- if a==b['name'] and b['block']=='function': cont=0;break
- if cont: continue
- if not vars.has_key(a):
+ if a==b['name'] and b['block']=='function':
+ cont=0;break
+ if cont:
+ continue
+ if a not in vars:
show(vars)
outmess('vars2fortran: No definition for argument "%s".\n'%a)
continue
if a==block['name'] and not block['block']=='function':
continue
- if not vars[a].has_key('typespec'):
- if vars[a].has_key('attrspec') and 'external' in vars[a]['attrspec']:
+ if 'typespec' not in vars[a]:
+ if 'attrspec' in vars[a] and 'external' in vars[a]['attrspec']:
if a in args:
ret='%s%sexternal %s'%(ret,tab,a)
continue
@@ -2526,27 +2594,29 @@
outmess('vars2fortran: No typespec for argument "%s".\n'%a)
continue
vardef=vars[a]['typespec']
- if vardef=='type' and vars[a].has_key('typename'):
+ if vardef=='type' and 'typename' in vars[a]:
vardef='%s(%s)'%(vardef,vars[a]['typename'])
selector={}
- if vars[a].has_key('kindselector'): selector=vars[a]['kindselector']
- elif vars[a].has_key('charselector'): selector=vars[a]['charselector']
- if selector.has_key('*'):
+ if 'kindselector' in vars[a]:
+ selector=vars[a]['kindselector']
+ elif 'charselector' in vars[a]:
+ selector=vars[a]['charselector']
+ if '*' in selector:
if selector['*'] in ['*',':']:
vardef='%s*(%s)'%(vardef,selector['*'])
else:
vardef='%s*%s'%(vardef,selector['*'])
else:
- if selector.has_key('len'):
+ if 'len' in selector:
vardef='%s(len=%s'%(vardef,selector['len'])
- if selector.has_key('kind'):
+ if 'kind' in selector:
vardef='%s,kind=%s)'%(vardef,selector['kind'])
else:
vardef='%s)'%(vardef)
- elif selector.has_key('kind'):
+ elif 'kind' in selector:
vardef='%s(kind=%s)'%(vardef,selector['kind'])
c=' '
- if vars[a].has_key('attrspec'):
+ if 'attrspec' in vars[a]:
attr=[]
for l in vars[a]['attrspec']:
if l not in ['external']:
@@ -2554,23 +2624,23 @@
if attr:
vardef='%s %s'%(vardef,','.join(attr))
c=','
- if vars[a].has_key('dimension'):
+ if 'dimension' in vars[a]:
# if not isintent_c(vars[a]):
# vars[a]['dimension'].reverse()
vardef='%s%sdimension(%s)'%(vardef,c,','.join(vars[a]['dimension']))
c=','
- if vars[a].has_key('intent'):
+ if 'intent' in vars[a]:
lst = true_intent_list(vars[a])
if lst:
vardef='%s%sintent(%s)'%(vardef,c,','.join(lst))
c=','
- if vars[a].has_key('check'):
+ if 'check' in vars[a]:
vardef='%s%scheck(%s)'%(vardef,c,','.join(vars[a]['check']))
c=','
- if vars[a].has_key('depend'):
+ if 'depend' in vars[a]:
vardef='%s%sdepend(%s)'%(vardef,c,','.join(vars[a]['depend']))
c=','
- if vars[a].has_key('='):
+ if '=' in vars[a]:
v = vars[a]['=']
if vars[a]['typespec'] in ['complex','double complex']:
try:
@@ -2595,6 +2665,7 @@
outmess('Post-processing (stage 2)...\n',0)
postlist=postcrack2(postlist)
return usermodules+postlist
+
def crack2fortran(block):
global f2py_version
pyf=crack2fortrangen(block)+'\n'
Modified: branches/numpy.scons/numpy/f2py/f2py2e.py
===================================================================
--- branches/numpy.scons/numpy/f2py/f2py2e.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/f2py2e.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -245,7 +245,7 @@
os.mkdir(buildpath)
if signsfile:
signsfile = os.path.join(buildpath,signsfile)
- if signsfile and os.path.isfile(signsfile) and not options.has_key('h-overwrite'):
+ if signsfile and os.path.isfile(signsfile) and 'h-overwrite' not in options:
errmess('Signature file "%s" exists!!! Use --overwrite-signature to overwrite.\n'%(signsfile))
sys.exit()
@@ -269,16 +269,16 @@
funcs=[]
crackfortran.debug=options['debug']
crackfortran.verbose=options['verbose']
- if options.has_key('module'):
+ if 'module' in options:
crackfortran.f77modulename=options['module']
- if options.has_key('skipfuncs'):
+ if 'skipfuncs' in options:
crackfortran.skipfuncs=options['skipfuncs']
- if options.has_key('onlyfuncs'):
+ if 'onlyfuncs' in options:
crackfortran.onlyfuncs=options['onlyfuncs']
crackfortran.include_paths[:]=options['include_paths']
crackfortran.dolowercase=options['do-lower']
postlist=crackfortran.crackfortran(files)
- if options.has_key('signsfile'):
+ if 'signsfile' in options:
outmess('Saving signatures to file "%s"\n'%(options['signsfile']))
pyf=crackfortran.crack2fortran(postlist)
if options['signsfile'][-6:]=='stdout':
@@ -297,21 +297,22 @@
if '__user__' in list[i]['name']:
cb_rules.buildcallbacks(list[i])
else:
- if list[i].has_key('use'):
+ if 'use' in list[i]:
for u in list[i]['use'].keys():
- if not isusedby.has_key(u): isusedby[u]=[]
+ if u not in isusedby:
+ isusedby[u]=[]
isusedby[u].append(list[i]['name'])
modules.append(list[i])
mnames.append(list[i]['name'])
ret = {}
for i in range(len(mnames)):
- if isusedby.has_key(mnames[i]):
+ if mnames[i] in isusedby:
outmess('\tSkipping module "%s" which is used by %s.\n'%(mnames[i],','.join(map(lambda s:'"%s"'%s,isusedby[mnames[i]]))))
else:
um=[]
- if modules[i].has_key('use'):
+ if 'use' in modules[i]:
for u in modules[i]['use'].keys():
- if isusedby.has_key(u) and u in mnames:
+ if u in isusedby and u in mnames:
um.append(modules[mnames.index(u)])
else:
outmess('\tModule "%s" uses nonexisting "%s" which will be ignored.\n'%(mnames[i],u))
@@ -321,7 +322,7 @@
def dict_append(d_out,d_in):
for (k,v) in d_in.items():
- if not d_out.has_key(k):
+ if k not in d_out:
d_out[k] = []
if type(v) is types.ListType:
d_out[k] = d_out[k] + v
@@ -341,23 +342,24 @@
postlist=callcrackfortran(files,options)
isusedby={}
for i in range(len(postlist)):
- if postlist[i].has_key('use'):
+ if 'use' in postlist[i]:
for u in postlist[i]['use'].keys():
- if not isusedby.has_key(u): isusedby[u]=[]
+ if u not in isusedby:
+ isusedby[u]=[]
isusedby[u].append(postlist[i]['name'])
for i in range(len(postlist)):
if postlist[i]['block']=='python module' and '__user__' in postlist[i]['name']:
- if isusedby.has_key(postlist[i]['name']):
+ if postlist[i]['name'] in isusedby:
#if not quiet:
outmess('Skipping Makefile build for module "%s" which is used by %s\n'%(postlist[i]['name'],','.join(map(lambda s:'"%s"'%s,isusedby[postlist[i]['name']]))))
- if options.has_key('signsfile'):
+ if 'signsfile' in options:
if options['verbose']>1:
outmess('Stopping. Edit the signature file and then run f2py on the signature file: ')
outmess('%s %s\n'%(os.path.basename(sys.argv[0]),options['signsfile']))
return
for i in range(len(postlist)):
if postlist[i]['block']!='python module':
- if not options.has_key('python module'):
+ if 'python module' not in options:
errmess('Tip: If your original code is Fortran source then you must use -m option.\n')
raise TypeError,'All blocks must be python module blocks but got %s'%(`postlist[i]['block']`)
auxfuncs.debugoptions=options['debug']
Modified: branches/numpy.scons/numpy/f2py/f90mod_rules.py
===================================================================
--- branches/numpy.scons/numpy/f2py/f90mod_rules.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/f90mod_rules.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -136,7 +136,7 @@
if not dms: dms='-1'
use_fgetdims2 = fgetdims2
if isstringarray(var):
- if var.has_key('charselector') and var['charselector'].has_key('len'):
+ if 'charselector' in var and 'len' in var['charselector']:
cadd('\t{"%s",%s,{{%s,%s}},%s},'\
%(undo_rmbadname1(n),dm['rank'],dms,var['charselector']['len'],at))
use_fgetdims2 = fgetdims2_sa
@@ -186,7 +186,7 @@
else:
fargs.append(b['name'])
mfargs.append(fargs[-1])
- #if options.has_key('--external-modroutines') and options['--external-modroutines']:
+ #if '--external-modroutines' in options and options['--external-modroutines']:
# outmess('\t\t\tapplying --external-modroutines for %s\n'%(b['name']))
# efargs.append(fargs[-1])
api['externroutines']=[]
Modified: branches/numpy.scons/numpy/f2py/func2subr.py
===================================================================
--- branches/numpy.scons/numpy/f2py/func2subr.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/func2subr.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -31,26 +31,26 @@
def var2fixfortran(vars,a,fa=None,f90mode=None):
if fa is None:
fa = a
- if not vars.has_key(a):
+ if a not in vars:
show(vars)
outmess('var2fixfortran: No definition for argument "%s".\n'%a)
return ''
- if not vars[a].has_key('typespec'):
+ if 'typespec' not in vars[a]:
show(vars[a])
outmess('var2fixfortran: No typespec for argument "%s".\n'%a)
return ''
vardef=vars[a]['typespec']
- if vardef=='type' and vars[a].has_key('typename'):
+ if vardef=='type' and 'typename' in vars[a]:
vardef='%s(%s)'%(vardef,vars[a]['typename'])
selector={}
lk = ''
- if vars[a].has_key('kindselector'):
+ if 'kindselector' in vars[a]:
selector=vars[a]['kindselector']
lk = 'kind'
- elif vars[a].has_key('charselector'):
+ elif 'charselector' in vars[a]:
selector=vars[a]['charselector']
lk = 'len'
- if selector.has_key('*'):
+ if '*' in selector:
if f90mode:
if selector['*'] in ['*',':','(*)']:
vardef='%s(len=*)'%(vardef)
@@ -62,17 +62,17 @@
else:
vardef='%s*%s'%(vardef,selector['*'])
else:
- if selector.has_key('len'):
+ if 'len' in selector:
vardef='%s(len=%s'%(vardef,selector['len'])
- if selector.has_key('kind'):
+ if 'kind' in selector:
vardef='%s,kind=%s)'%(vardef,selector['kind'])
else:
vardef='%s)'%(vardef)
- elif selector.has_key('kind'):
+ elif 'kind' in selector:
vardef='%s(kind=%s)'%(vardef,selector['kind'])
vardef='%s %s'%(vardef,fa)
- if vars[a].has_key('dimension'):
+ if 'dimension' in vars[a]:
vardef='%s(%s)'%(vardef,','.join(vars[a]['dimension']))
return vardef
@@ -86,7 +86,7 @@
f90mode = ismoduleroutine(rout)
newname = '%sf2pywrap'%(name)
vars = rout['vars']
- if not vars.has_key(newname):
+ if newname not in vars:
vars[newname] = vars[name]
args = [newname]+rout['args'][1:]
else:
@@ -150,12 +150,13 @@
rout = copy.copy(rout)
fname = name
rname = fname
- if rout.has_key('result'):
+ if 'result' in rout:
rname = rout['result']
rout['vars'][fname]=rout['vars'][rname]
fvar = rout['vars'][fname]
if not isintent_out(fvar):
- if not fvar.has_key('intent'): fvar['intent']=[]
+ if 'intent' not in fvar:
+ fvar['intent']=[]
fvar['intent'].append('out')
flag=1
for i in fvar['intent']:
Modified: branches/numpy.scons/numpy/f2py/lib/extgen/base.py
===================================================================
--- branches/numpy.scons/numpy/f2py/lib/extgen/base.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/lib/extgen/base.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -358,7 +358,7 @@
d = Component._registered_components_map
for component in components:
provides = component.provides
- if d.has_key(provides):
+ if provides in d:
Component.warning('component that provides %r is already registered, ignoring.' % (provides))
else:
d[provides] = component
@@ -440,7 +440,7 @@
return bool(self.list)
def has(self, label):
- return self.label_map.has_key(label)
+ return label in self.label_map
def get(self, label):
return self.list[self.label_map[label]]
Modified: branches/numpy.scons/numpy/f2py/lib/extgen/py_support.py
===================================================================
--- branches/numpy.scons/numpy/f2py/lib/extgen/py_support.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/lib/extgen/py_support.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -507,7 +507,7 @@
while dep_map:
dep_map_copy = dep_map.copy()
for name, deps in dep_map.items():
- d = [n for n in deps if dep_map.has_key(n)]
+ d = [n for n in deps if n in dep_map]
if not d:
sorted_arguments.append(comp_map[name])
del dep_map[name]
Modified: branches/numpy.scons/numpy/f2py/lib/parser/Fortran2003.py
===================================================================
--- branches/numpy.scons/numpy/f2py/lib/parser/Fortran2003.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/lib/parser/Fortran2003.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -5825,11 +5825,12 @@
if 1: # Optimize subclass tree:
def _rpl_list(clsname):
- if not Base_classes.has_key(clsname):
+ if clsname not in Base_classes:
print 'Not implemented:',clsname
return [] # remove this code when all classes are implemented
cls = Base_classes[clsname]
- if cls.__dict__.has_key('match'): return [clsname]
+ if 'match' in cls.__dict__:
+ return [clsname]
l = []
for n in getattr(cls,'subclass_names',[]):
l1 = _rpl_list(n)
@@ -5862,7 +5863,7 @@
except KeyError:
Base.subclasses[clsname] = l = []
for n in subclass_names:
- if Base_classes.has_key(n):
+ if n in Base_classes:
l.append(Base_classes[n])
else:
print '%s not implemented needed by %s' % (n,clsname)
@@ -5882,7 +5883,7 @@
if n not in subclasses_names:
print '%s needs to be added to %s subclass_name list' % (n,cls.__name__)
for n in use_names + subclass_names:
- if not Base_classes.has_key(n):
+ if n not in Base_classes:
print '%s not defined used by %s' % (n, cls.__name__)
Modified: branches/numpy.scons/numpy/f2py/lib/parser/block_statements.py
===================================================================
--- branches/numpy.scons/numpy/f2py/lib/parser/block_statements.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/lib/parser/block_statements.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -36,7 +36,7 @@
if implicit_rules is None:
raise AnalyzeError,'Implicit rules mapping is null while getting %r type' % (name)
l = name[0].lower()
- if implicit_rules.has_key(l):
+ if l in implicit_rules:
return implicit_rules[l]
# default rules:
if l in 'ijklmn':
@@ -60,7 +60,7 @@
if c.startswith('default'):
continue
st = t.tostr()
- if items.has_key(st):
+ if st in items:
items[st].append(c)
else:
items[st] = [c]
@@ -116,7 +116,7 @@
def get_variable_by_name(self, name):
variables = self.a.variables
- if variables.has_key(name):
+ if name in variables:
var = variables[name]
else:
var = variables[name] = Variable(self, name)
@@ -316,7 +316,7 @@
#module_provides = self.a.module_provides
#for name, var in self.a.variables.items():
# if var.is_public():
- # if module_provides.has_key(name):
+ # if name in module_provides:
# self.warning('module data object name conflict with %s, overriding.' % (name))
# module_provides[name] = var
@@ -477,12 +477,12 @@
if content:
self.show_message('Not analyzed content: %s' % content)
- if self.parent.a.variables.has_key(self.name):
+ if self.name in self.parent.a.variables:
var = self.parent.a.variables.pop(self.name)
self.update_attributes(var.attributes)
parent_interface = self.parent.get_interface()
- if parent_interface.has_key(self.name):
+ if self.name in parent_interface:
p = parent_interface[self.name]
last = p.content.pop()
assert isinstance(last,EndInterface),`last.__class__`
@@ -576,7 +576,7 @@
variables = self.a.variables
for a in self.args:
- assert not variables.has_key(a)
+ assert a not in variables
assert is_name(a)
variables[a] = Variable(self, a)
@@ -604,7 +604,7 @@
#parent_provides = self.parent.get_provides()
#if parent_provides is not None:
# if self.is_public():
- # if parent_provides.has_key(self.name):
+ # if self.name in parent_provides:
# self.warning('module subprogram name conflict with %s, overriding.' % (self.name))
# parent_provides[self.name] = self
@@ -1081,7 +1081,7 @@
#parent_provides = self.parent.get_provides()
#if parent_provides is not None:
# if self.is_public():
- # if parent_provides.has_key(self.name):
+ # if self.name in parent_provides:
# self.warning('type declaration name conflict with %s, overriding.' % (self.name))
# parent_provides[self.name] = self
Modified: branches/numpy.scons/numpy/f2py/lib/parser/parsefortran.py
===================================================================
--- branches/numpy.scons/numpy/f2py/lib/parser/parsefortran.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/lib/parser/parsefortran.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -31,7 +31,7 @@
Use .parse() method for parsing, parsing result is saved in .block attribute.
"""
self.reader = reader
- if self.cache.has_key(reader.id):
+ if reader.id in self.cache:
parser = self.cache[reader.id]
self.block = parser.block
self.is_analyzed = parser.is_analyzed
Modified: branches/numpy.scons/numpy/f2py/lib/parser/statements.py
===================================================================
--- branches/numpy.scons/numpy/f2py/lib/parser/statements.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/lib/parser/statements.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -875,11 +875,11 @@
def analyze(self):
use = self.parent.a.use
- if use.has_key(self.name):
+ if self.name in use:
return
modules = self.top.a.module
- if not modules.has_key(self.name):
+ if self.name not in modules:
fn = None
for d in self.reader.include_dirs:
fn = get_module_file(self.name, d)
@@ -896,7 +896,7 @@
parser.analyze()
modules.update(parser.block.a.module)
- if not modules.has_key(self.name):
+ if self.name not in modules:
self.warning('no information about the module %r in use statement' % (self.name))
return
Modified: branches/numpy.scons/numpy/f2py/lib/parser/utils.py
===================================================================
--- branches/numpy.scons/numpy/f2py/lib/parser/utils.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/lib/parser/utils.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -113,7 +113,7 @@
def get_module_files(directory, _cache={}):
- if _cache.has_key(directory):
+ if directory in _cache:
return _cache[directory]
module_line = re.compile(r'(\A|^)module\s+(?P<name>\w+)\s*(!.*|)$',re.I | re.M)
d = {}
@@ -121,7 +121,7 @@
f = open(fn,'r')
for name in module_line.findall(f.read()):
name = name[1]
- if d.has_key(name):
+ if name in d:
print d[name],'already defines',name
continue
d[name] = fn
Modified: branches/numpy.scons/numpy/f2py/rules.py
===================================================================
--- branches/numpy.scons/numpy/f2py/rules.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/rules.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -1105,7 +1105,7 @@
errmess('buildmodule: Could not found the body of interfaced routine "%s". Skipping.\n'%(n))
continue
nb_list = [nb]
- if nb.has_key('entry'):
+ if 'entry' in nb:
for k,a in nb['entry'].items():
nb1 = copy.deepcopy(nb)
del nb1['entry']
@@ -1146,22 +1146,32 @@
code[n]=[]
for k in needs[n]:
c=''
- if cfuncs.includes0.has_key(k): c=cfuncs.includes0[k]
- elif cfuncs.includes.has_key(k): c=cfuncs.includes[k]
- elif cfuncs.userincludes.has_key(k): c=cfuncs.userincludes[k]
- elif cfuncs.typedefs.has_key(k): c=cfuncs.typedefs[k]
- elif cfuncs.typedefs_generated.has_key(k):
+ if k in cfuncs.includes0:
+ c=cfuncs.includes0[k]
+ elif k in cfuncs.includes:
+ c=cfuncs.includes[k]
+ elif k in cfuncs.userincludes:
+ c=cfuncs.userincludes[k]
+ elif k in cfuncs.typedefs:
+ c=cfuncs.typedefs[k]
+ elif k in cfuncs.typedefs_generated:
c=cfuncs.typedefs_generated[k]
- elif cfuncs.cppmacros.has_key(k): c=cfuncs.cppmacros[k]
- elif cfuncs.cfuncs.has_key(k): c=cfuncs.cfuncs[k]
- elif cfuncs.callbacks.has_key(k): c=cfuncs.callbacks[k]
- elif cfuncs.f90modhooks.has_key(k): c=cfuncs.f90modhooks[k]
- elif cfuncs.commonhooks.has_key(k): c=cfuncs.commonhooks[k]
- else: errmess('buildmodule: unknown need %s.\n'%(`k`));continue
+ elif k in cfuncs.cppmacros:
+ c=cfuncs.cppmacros[k]
+ elif k in cfuncs.cfuncs:
+ c=cfuncs.cfuncs[k]
+ elif k in cfuncs.callbacks:
+ c=cfuncs.callbacks[k]
+ elif k in cfuncs.f90modhooks:
+ c=cfuncs.f90modhooks[k]
+ elif k in cfuncs.commonhooks:
+ c=cfuncs.commonhooks[k]
+ else:
+ errmess('buildmodule: unknown need %s.\n'%(`k`));continue
code[n].append(c)
mod_rules.append(code)
for r in mod_rules:
- if (r.has_key('_check') and r['_check'](m)) or (not r.has_key('_check')):
+ if ('_check' in r and r['_check'](m)) or ('_check' not in r):
ar=applyrules(r,vrd,m)
rd=dictappend(rd,ar)
ar=applyrules(module_rules,rd)
@@ -1185,10 +1195,10 @@
ret['ltx'] = fn
f=open(fn,'w')
f.write('%% This file is auto-generated with f2py (version:%s)\n'%(f2py_version))
- if not options.has_key('shortlatex'):
+ if 'shortlatex' not in options:
f.write('\\documentclass{article}\n\\usepackage{a4wide}\n\\begin{document}\n\\tableofcontents\n\n')
f.write('\n'.join(ar['latexdoc']))
- if not options.has_key('shortlatex'):
+ if 'shortlatex' not in options:
f.write('\\end{document}')
f.close()
outmess('\tDocumentation is saved to file "%s/%smodule.tex"\n'%(options['buildpath'],vrd['modulename']))
@@ -1252,7 +1262,7 @@
vrd=routsign2map(rout)
rd=dictappend({},vrd)
for r in rout_rules:
- if (r.has_key('_check') and r['_check'](rout)) or (not r.has_key('_check')):
+ if ('_check' in r and r['_check'](rout)) or ('_check' not in r):
ar=applyrules(r,vrd,rout)
rd=dictappend(rd,ar)
@@ -1275,11 +1285,13 @@
else: vrd['nth']='hidden'
savevrd[a]=vrd
for r in _rules:
- if r.has_key('_depend'): continue
- if (r.has_key('_check') and r['_check'](var[a])) or (not r.has_key('_check')):
+ if '_depend' in r:
+ continue
+ if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
ar=applyrules(r,vrd,var[a])
rd=dictappend(rd,ar)
- if r.has_key('_break'): break
+ if '_break' in r:
+ break
for a in depargs:
if isintent_aux(var[a]):
_rules = aux_rules
@@ -1287,12 +1299,14 @@
_rules = arg_rules
vrd=savevrd[a]
for r in _rules:
- if not r.has_key('_depend'): continue
- if (r.has_key('_check') and r['_check'](var[a])) or (not r.has_key('_check')):
+ if '_depend' not in r:
+ continue
+ if ('_check' in r and r['_check'](var[a])) or ('_check' not in r):
ar=applyrules(r,vrd,var[a])
rd=dictappend(rd,ar)
- if r.has_key('_break'): break
- if var[a].has_key('check'):
+ if '_break' in r:
+ break
+ if 'check' in var[a]:
for c in var[a]['check']:
vrd['check']=c
ar=applyrules(check_rules,vrd,var[a])
@@ -1329,10 +1343,10 @@
rd['docstrsigns']=[]
rd['latexdocstrsigns']=[]
for k in ['docstrreq','docstropt','docstrout','docstrcbs']:
- if rd.has_key(k) and type(rd[k])==types.ListType:
+ if k in rd and type(rd[k])==types.ListType:
rd['docstrsigns']=rd['docstrsigns']+rd[k]
k='latex'+k
- if rd.has_key(k) and type(rd[k])==types.ListType:
+ if k in rd and type(rd[k])==types.ListType:
rd['latexdocstrsigns']=rd['latexdocstrsigns']+rd[k][0:1]+\
['\\begin{description}']+rd[k][1:]+\
['\\end{description}']
Modified: branches/numpy.scons/numpy/f2py/use_rules.py
===================================================================
--- branches/numpy.scons/numpy/f2py/use_rules.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/f2py/use_rules.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -61,15 +61,15 @@
outmess('\t\tBuilding use variable hooks for module "%s" (feature only for F90/F95)...\n'%(m['name']))
varsmap={}
revmap={}
- if r.has_key('map'):
+ if 'map' in r:
for k in r['map'].keys():
- if revmap.has_key(r['map'][k]):
+ if r['map'][k] in revmap:
outmess('\t\t\tVariable "%s<=%s" is already mapped by "%s". Skipping.\n'%(r['map'][k],k,revmap[r['map'][k]]))
else:
revmap[r['map'][k]]=k
- if r.has_key('only') and r['only']:
+ if 'only' in r and r['only']:
for v in r['map'].keys():
- if m['vars'].has_key(r['map'][v]):
+ if r['map'][v] in m['vars']:
if revmap[r['map'][v]]==v:
varsmap[v]=r['map'][v]
@@ -79,7 +79,7 @@
outmess('\t\t\tNo definition for variable "%s=>%s". Skipping.\n'%(v,r['map'][v]))
else:
for v in m['vars'].keys():
- if revmap.has_key(v):
+ if v in revmap:
varsmap[v]=revmap[v]
else:
varsmap[v]=v
Modified: branches/numpy.scons/numpy/numarray/numerictypes.py
===================================================================
--- branches/numpy.scons/numpy/numarray/numerictypes.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/numarray/numerictypes.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -80,13 +80,13 @@
def IsType(rep):
"""Determines whether the given object or string, 'rep', represents
a numarray type."""
- return isinstance(rep, NumericType) or typeDict.has_key(rep)
+ return isinstance(rep, NumericType) or rep in typeDict
def _register(name, type, force=0):
"""Register the type object. Raise an exception if it is already registered
unless force is true.
"""
- if typeDict.has_key(name) and not force:
+ if name in typeDict and not force:
raise ValueError("Type %s has already been registered" % name)
typeDict[name] = type
return type
@@ -104,7 +104,7 @@
particular type parameterization, i.e. the second time you try to
create "Int32", you get the original Int32, not a new one.
"""
- if typeDict.has_key(name):
+ if name in typeDict:
self = typeDict[name]
if self.bytes != bytes or self.default != default or \
self.typeno != typeno:
Modified: branches/numpy.scons/numpy/numarray/session.py
===================================================================
--- branches/numpy.scons/numpy/numarray/session.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/numarray/session.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -165,7 +165,7 @@
return False
def _loadmodule(module):
- if not sys.modules.has_key(module):
+ if module not in sys.modules:
modules = module.split(".")
s = ""
for i in range(len(modules)):
Modified: branches/numpy.scons/numpy/testing/numpytest.py
===================================================================
--- branches/numpy.scons/numpy/testing/numpytest.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/testing/numpytest.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -379,7 +379,7 @@
test_dir_module = parent_module_name+'.tests'
test_module_name = test_dir_module+'.'+test_module_name
- if not sys.modules.has_key(test_dir_module):
+ if test_dir_module not in sys.modules:
sys.modules[test_dir_module] = imp.new_module(test_dir_module)
old_sys_path = sys.path[:]
@@ -463,7 +463,8 @@
d = os.path.join(d, 'tests')
if not os.path.isdir(d):
continue
- if test_dirs_names.has_key(d): continue
+ if d in test_dirs_names:
+ continue
test_dir_module = '.'.join(name.split('.')[:-1]+['tests'])
test_dirs_names[d] = test_dir_module
@@ -477,7 +478,7 @@
for test_dir in test_dirs:
test_dir_module = test_dirs_names[test_dir]
- if not sys.modules.has_key(test_dir_module):
+ if test_dir_module not in sys.modules:
sys.modules[test_dir_module] = imp.new_module(test_dir_module)
for fn in os.listdir(test_dir):
Modified: branches/numpy.scons/numpy/testing/utils.py
===================================================================
--- branches/numpy.scons/numpy/testing/utils.py 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/numpy/testing/utils.py 2007-12-02 11:28:35 UTC (rev 4522)
@@ -130,7 +130,7 @@
assert isinstance(actual, dict), repr(type(actual))
assert_equal(len(actual),len(desired),err_msg,verbose)
for k,i in desired.items():
- assert actual.has_key(k), repr(k)
+ assert k in actual, repr(k)
assert_equal(actual[k], desired[k], 'key=%r\n%s' % (k,err_msg), verbose)
return
if isinstance(desired, (list,tuple)) and isinstance(actual, (list,tuple)):
Modified: branches/numpy.scons/site.cfg.example
===================================================================
--- branches/numpy.scons/site.cfg.example 2007-12-02 10:47:00 UTC (rev 4521)
+++ branches/numpy.scons/site.cfg.example 2007-12-02 11:28:35 UTC (rev 4522)
@@ -118,10 +118,12 @@
#[djbfft]
#include_dirs = /usr/local/djbfft/include
#library_dirs = /usr/local/djbfft/lib
-
-# MKL Library (Intel Math Kernel Library, including blas and lapack)
-# ------------------------------------------------------------------
-#[mkl]
-#libraries = mkl, guide
-#include_dirs = /home/david/opt/intel/mkl/9.1.023/include
-#library_dirs = /home/david/opt/intel/mkl/9.1.023/lib/32
+
+
+# MKL
+#----
+# For recent (9.0.21, for example) mkl, you need to change the names of the
+# lapack library. Assuming you installed the mkl in /opt, for a 32 bits cpu:
+# [mkl]
+# library_dirs = /opt/intel/mkl/9.1.023/lib/32/
+# lapack_libs = mkl_lapack
More information about the Numpy-svn
mailing list