You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(13) |
Aug
(151) |
Sep
(21) |
Oct
(6) |
Nov
(70) |
Dec
(8) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
(47) |
Feb
(66) |
Mar
(23) |
Apr
(115) |
May
(24) |
Jun
(53) |
Jul
(10) |
Aug
(279) |
Sep
(84) |
Oct
(149) |
Nov
(138) |
Dec
(52) |
| 2003 |
Jan
(22) |
Feb
(20) |
Mar
(29) |
Apr
(106) |
May
(170) |
Jun
(122) |
Jul
(70) |
Aug
(64) |
Sep
(27) |
Oct
(71) |
Nov
(49) |
Dec
(9) |
| 2004 |
Jan
(7) |
Feb
(38) |
Mar
(3) |
Apr
(9) |
May
(22) |
Jun
(4) |
Jul
(1) |
Aug
(2) |
Sep
(2) |
Oct
|
Nov
(15) |
Dec
(2) |
| 2005 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
(1) |
May
(28) |
Jun
(3) |
Jul
(11) |
Aug
(5) |
Sep
(1) |
Oct
(5) |
Nov
(2) |
Dec
(3) |
| 2006 |
Jan
(8) |
Feb
(3) |
Mar
(8) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Steve F. <sm...@us...> - 2002-10-20 23:23:47
|
Update of /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv28263/source/com/b13media/mock
Modified Files:
ExpectedCall.java
Log Message:
Made ExpectedCall public so it can be referenced from
outside the package.
Index: ExpectedCall.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/ExpectedCall.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ExpectedCall.java 16 Oct 2002 13:56:41 -0000 1.4
+++ ExpectedCall.java 20 Oct 2002 23:23:44 -0000 1.5
@@ -7,7 +7,7 @@
/** An expected call to a method of a mock object
*/
-abstract class ExpectedCall
+public abstract class ExpectedCall
extends junit.framework.Assert
{
/** A constant that indicates that an <code>ExpectedCall</code> accepts
|
|
From: Steve F. <sm...@us...> - 2002-10-20 23:22:10
|
Update of /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock In directory usw-pr-cvs1:/tmp/cvs-serv27623/source/com/b13media/mock Modified Files: Mock.java Log Message: Removed unused imports Fixed javadoc tag Index: Mock.java =================================================================== RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/Mock.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- Mock.java 16 Oct 2002 13:56:42 -0000 1.7 +++ Mock.java 20 Oct 2002 23:22:08 -0000 1.8 @@ -4,9 +4,10 @@ */ package com.b13media.mock; +import junit.framework.AssertionFailedError; + import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; -import java.lang.reflect.Modifier; import java.lang.reflect.Proxy; import java.util.ArrayList; import java.util.HashSet; @@ -16,8 +17,6 @@ import java.util.HashMap; import java.util.Set; -import junit.framework.AssertionFailedError; - /** A convenient class for creating simple * <a href="http://www.mockobjects.com">mock objects</a>. @@ -306,7 +305,7 @@ /** Fails if not all the expected calls have been made to this mock object. * - * @throw junit.framework.AssertionFailedError + * @throws junit.framework.AssertionFailedError * Not all expected calls were made to this mock object. */ public void verify() { |
|
From: Steve F. <sm...@us...> - 2002-10-20 23:20:38
|
Update of /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv27037/source/com/b13media/mock
Modified Files:
P.java
Log Message:
fixed not -> IsNot (caused infinite loop)
Added helpers for creating arrays of Predicates,
perhaps these should be overloaded on Mock.
Index: P.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/P.java,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- P.java 22 May 2002 10:02:58 -0000 1.1.1.1
+++ P.java 20 Oct 2002 23:20:35 -0000 1.2
@@ -69,7 +69,7 @@
}
public static Predicate not( Predicate p ) {
- return not(p);
+ return new IsNot(p);
}
public static Predicate and( Predicate p1, Predicate p2 ) {
@@ -82,5 +82,20 @@
public static Predicate isA( Class c ) {
return new IsInstanceOf(c);
+ }
+
+ /**
+ * Helper methods for succinctly constructing Predicate arrays
+ */
+ public static Predicate[] arg(Predicate p) {
+ return new Predicate[] {p};
+ }
+
+ public static Predicate[] args(Predicate p1, Predicate p2) {
+ return new Predicate[] {p1, p2};
+ }
+
+ public static Predicate[] args(Predicate p1, Predicate p2, Predicate p3) {
+ return new Predicate[] {p1, p2, p3};
}
}
|
|
From: Steve F. <st...@m3...> - 2002-10-20 15:45:56
|
Back again... It struck me that we're not really converging on this topic, partly because we don't have enough time but mainly because we're not really working against the same problems. How about the following as a process? You post a (made-up) example of a case that you want to unit-test and that you think needs a change. We'll respond and see if we can find a meaningful way around it. If not, then you win the point. I figure that this will be a reasonably lightweight mechanism for understanding each other and for pushing the dialogue along. One case at a time... Steve From: "Simon Levitt" <simon.levitt@> > I might be able to get permission to release a simple example, but even > that is going to be muddied by the use of our own Connection Pooling and > Query management/wrapper classes. > > I could knock up a simple example, but would that defeat the point? |
|
From: Steve F. <sm...@us...> - 2002-10-20 14:57:17
|
Update of /cvsroot/mockobjects/nat/jmock
In directory usw-pr-cvs1:/tmp/cvs-serv19167
Modified Files:
build.xml
Log Message:
added clean, jar, zip, and all targets
Index: build.xml
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/build.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- build.xml 17 Oct 2002 00:34:48 -0000 1.1
+++ build.xml 20 Oct 2002 14:57:14 -0000 1.2
@@ -1,43 +1,78 @@
<?xml version="1.0"?>
-<project name="mockobjects" default="jar" basedir=".">
+<project name="jmock" default="all" basedir=".">
<target name="project.properties">
<tstamp/>
- <property name="build.number" value="0001"/>
+ <property name="build.number" value="0001" />
<property name="jar.name" value="jmock-${build.number}.jar"/>
- <property name="src.jar.name" value="jmock-src-${build.number}.jar"/>
- <property name="build.dir" value="build"/>
- <property name="junit.lib" value="lib/junit.jar"/>
- <property name="compile.dir" value="classes"/>
+ <property name="zip.name" value="jmock-src-${DSTAMP}.zip"/>
+ <property name="dist" value="dist"/>
+ <property name="classes" value="classes"/>
+ <property name="junit" value="lib/junit.jar"/>
<property name="debug" value="true"/>
</target>
+ <target name="clean"
+ depends="project.properties">
+ <delete quiet="true">
+ <fileset dir="." includes="TEST-*.txt"/>
+ <fileset dir="${classes}" />
+ </delete>
+ </target>
+
<target name="compile"
- depends="project.properties">
- <mkdir dir="${compile.dir}"/>
+ depends="project.properties">
+ <mkdir dir="${classes}"/>
- <javac
- destdir="${compile.dir}"
- debug="${debug}"
- srcdir="source:test"
- classpath="${junit.lib}"/>
+ <javac destdir="${classes}"
+ debug="${debug}"
+ classpath="${junit}">
+ <src path="source"/>
+ <src path="test"/>
+ </javac>
</target>
<target name="junit"
- depends="compile">
- <junit printsummary="yes" haltonfailure="yes">
+ depends="project.properties, compile">
+ <junit printsummary="yes"
+ haltonfailure="yes">
<classpath>
- <pathelement path="${compile.dir}" />
+ <pathelement location="${junit}"/>
+ <pathelement location="${classes}" />
</classpath>
<formatter type="plain"/>
<batchtest>
- <fileset dir="${compile.dir}">
- <include name="**/Test_*.class"/>
+ <fileset dir="test">
+ <include name="**/Test_*.java"/>
</fileset>
</batchtest>
</junit>
+ </target>
+
+ <target name="jar"
+ description="Create a dated jar with all the classes"
+ depends="project.properties, compile, junit">
+ <mkdir dir="${classes}"/>
+ <jar destfile="${dist}/${jar.name}"
+ basedir="${classes}"/>
+ </target>
+ <target name="zip"
+ description="Archive all the sources for the project"
+ depends="project.properties">
+ <mkdir dir="${dist}"/>
+ <zip destfile="${dist}/${zip.name}">
+ <fileset dir=".">
+ <include name="build.xml" />
+ <include name="lib/**" />
+ <include name="source/**" />
+ <include name="test/**" />
+ </fileset>
+ </zip>
</target>
+ <target name="all"
+ description="Clean, compile and test all the code, generate jar and zip files"
+ depends="clean, compile, junit, jar, zip" />
</project>
|
|
From: Steve F. <sm...@us...> - 2002-10-20 14:56:27
|
Update of /cvsroot/mockobjects/nat/jmock/lib In directory usw-pr-cvs1:/tmp/cvs-serv18440/lib Modified Files: junit.jar Log Message: changed from junit 3.8 back to junit 3.7 for compatibility Index: junit.jar =================================================================== RCS file: /cvsroot/mockobjects/nat/jmock/lib/junit.jar,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 Binary files /tmp/cvsIGcBXd and /tmp/cvs6j997n differ |
|
From: Steve F. <sm...@us...> - 2002-10-17 00:34:51
|
Update of /cvsroot/mockobjects/nat/jmock/lib
In directory usw-pr-cvs1:/tmp/cvs-serv21088/lib
Added Files:
junit.jar
Log Message:
Started ant build file
--- NEW FILE: junit.jar ---
PK
èòrñr
/á÷m4¾v%4m9ÊP{]_«(ì«DËPÆ^^ês´:< ¿`Â!?øês©ÏCŰOÆöBÆÎëEcIÈnï]°R@¯\8XÊ#¡ØW¡ü^dü]Æû/¡©çÍ1HX_4¬µÏÂþìTÆ?¢øB ìî©ÏÜ,þ{ 9X#8c\FtñÖX®c@ì¢ñ¡0ÒØ_q\zäî¡ÜÞDÈ^@¼J¾e³yá[À2×.g¹¶öÛ»¿°zm1e2/«SáÌåhº¯QåH¨áÍ\å3G]jß`õ7ÿkTÙAÍjÔf¸¹ÉxgÙó5ÓÊPKØÞä
ÂC
Å
dLIgj2¡ñýB|¿qãJ÷ºhâ1ç°å·ºõ¸séÖÇïδ%-
öææ~÷»ÿÿþö߯wÑ|'°v¢b[nÒv+VòpÆ©¸G,£èäÖ ã!uÉya³@èEC+ã©ýÑ1it A!
¨²é5ËÖ
#S4©_ì@ÃcRX³äXÉÊ
ù1C
ZãÒ66
h.Ø9¶kX¶YR°R ̾ÀºX¾ì¤ay³4 cÆ
«°vq¬É)Ç6mæÔƵnj0>2"}Öa½'ÐAÇ*ÍÎY®<Òê¹EÃÎ'GÝeç½\Ob<ãæF"+®ëØ
¶0ØPÑ)*¶ÉÒr+ºôÜGg¯íëjy©
ÝØ!Ðnär³®åØ)«ì$J`S3æ57¹ØÂ±½Ê.3fQÁb>~ÙUìÓ°WÂ]q¿ÉßS¬GÅ
#Æà9Xf&v,ÇÍìÕaçbÃ%+[3&'
£¬!×ñÝ#8/3
ÔÖxÁ)'ï(x^CZÿº¥Â.(»%ö[VðKÒ*§òºà%\SzeN:AÆdÙ4R2måÜB¦/Ф´`ZùAÁ[;[pJ\õEE6'KL «áÒi Ó 3ëߥ
G6ßTcCؼ¢g}*ì·ùêp5Qa^ËÓ³ SK\Hö4®K,3h]
^ÑpS¶Äý,;çL+xÍïÿë£úd±
w7ð¦×ñã¦øªLfÌÒ9ÿ¦¬Q3Jü>'¸çÐÚÀ<ìQ2e'´-}Y©Ëx/Ç""üÇD*²C{9zM» c?ÄàÚ³÷+)5«#õr[Î9¢
2ÕhÈ|i£N¥5Z¶vÈ#²oF¹lCßQùê£
«4ÝâªQXLl¯!h®bE¢Öt
Ñ*O´ãí¸]ÅD4VEg[ÓÑx
Ýut§5$«Ø]ÇÞtt
}§zêèOG4·uÖðtCRSÇp:z¬gÁ©*ÎFÏq©âÍûz`Þ¡eÞ!ÍÔûu\âæÅþ
ÍÂÐCͳÈé¡À,òÞ:¡Ú´YL&zôP/Ï+ºæJ@Ë}ÞÛOèo®t¥Á^ÕUÏ^®9oÍëªg¯zöºZG9ݦ6ó·k³¸èÖÕ
?¯bïݸ_Ìù¾W>Eܬ¤8Ûø'Ûð>æÿCfú»
6ÌÍéY{Rå`&!kfÆÏ)P¨3'
3óù¶tÏëÚ«`Sq¥ÛÙ¾¤LrSýØeÛϾ¦Ã&qQPM(¨M:CÃ=h¡M
ê,bëÍ3us§åè®hë1ß5íl"¶¡fl aZ4¬Çz>mU°¥b5ldL}ÜÕÓ
WŽ
Z£K.Îܼc¶M¦Hm¸ôLDsteÄ!±Ý±íTZÔMÐqZû%6t)hX¾KÅ.ºÍ~ÍÎ*·¦ÍNO{»`¸Ø(b!ìF\:Ilù¡b
4ô×û4Ô×P^}¬gøcæ&´>:dp
:Jñ°õ}| -éÃê6VYWñ1I_ö©áSixà3^/¹R7ü¢8õ%aÍ%ûNTH(_ãò-µ<ASzW½ô©^N¦àoÜ$|Z'7ë±Núx>ÀNkÿ|û÷n
Çtü6ÅãáÍ´ÞĶ;hâL{ª;~Ûj
ØÑ]ÀΫ¨÷?Ñ1^@÷Mô÷ÞDÿU4ÆeRþûe©¿þýÌlü»ñ0¡%ô Pj ¥MhÅ&Zl¦E3oVôa+í¶áï¦3`í<®Ûq»Zè°ñplex1"k)¹Psè6¯ãäÔ_LOÝÆ©_pPï`ôü
ÎÝ¿3Á#{z
0þ@¶×Fk¡ÓVÌÑÏ~ËÈ[H5°³]a'Wv1h,^YB&O6"ª¥Fæñ=ÄèÕ
Gt
|äKhuMrêÊ¥"ÏEþkÊ4å&j+0ÂA¨=Ó¹X;HÙ9x¯ä,TÂã.±t_Ç[¼×Í(|t¯
øn)RC ~BÜÇb쯩DT¢|ìûá?PK(ä
¥ÐqÓ\7e/3eÖÍJ
Ëg§ì(¨k2¹\vÍ"'Y
Øò¶
xh_å©ã6¼¦I/*hSå¼¥£
zÚu´bG-èÔÅN±ºuÄ|«GGÜ·
Ýu<åÕµrÉ*¹Qô+D+»`ß³ZÓÙìð¢gcÃ]²æª«7,ç²y£È3Ý3åY\4[æÁ¢ælÂÞ5ó?|L(´¯0kºÕÊT¹(t§gqMNý{%ýLÛ±ò
Íu¼cxig «¤ÃðWF¸²fÚ%W!®ß;çk;W;¼fîÖS®ò:2©1
6oÏG«ãý Ë´¢x?
pqánŵVôãd7W.¹NENÎ<íó8c1¼
ºéúï(N(ìd
Öéf¤`'q*×p*"ÍOEro`xÞʹfi¥h1àÎH}Ï6j"ÜâéÛ°ónAGVÔs¨Âe¯\3þÒ,a-ÛÅ¢ÜcT¯¸$PÞàvÞtn1»:üº\EÇÜQéXôO¾)Ñ
¶Ë%ÿ_bª=O¿ÏI9Þ'@çqY³Öű¼ìïų£âË·¤Y¥<?Ô¥EØmdki
ÞF¾Ââê°qSüÜÒùè=)¬ÒC
¯@Îg·u[$ÆÌ¬é¢¸MÝ®w7ÕQ*WÖÍbWcíRé¸ãC%Ue¬I÷Éo«»ümðWD¤´à3n¸~Ñ*ZúìßGܯÙM*Õ\q¹ÊCñ
rÕÉYÓ¶ ïlx££öò𧤱ÐRÒV¼o,øÆ½o-6!ÏpcKTüî5¶ÐaD~A zeè3:{:j|ÌC-â8DÇ ab´Ûé6A«÷p¶ÛÛõr¾×»ÇâOó+{Ætýè&mâÀ£Ð};]tÜMw;%õÜãÉÊ©áe=nrÕGBú!eWIÿxàJ¬Ã8âaÊNÿbfróöÈ&×0iÔ0=;x×ù«a;W¸,jùH
W9ÙÉ&ÞÁ¶ÿ©ïëÐ
È ³bkßíÑ9ÊqtNÐ%ìÇߤµÇ¦u;HK
·ñ½*iA÷ÇFXö÷ów_DX>Ép¶`ÎhZ_+ñÍ×ñu{jK³ôÃDh¼c!±
êø~ ï<¯ßÿPKä;lx
Üàíª±MHåYäi)ΩËÛ[ñdsa¸`©]aæÙ&·Æ>«$Ø7åË /¤cMåâ-nN1&Fíý±}
;$Ô,:6Ô®ÄÛ¼4£)VH5¥$´z¶ÔjÞkÂ
DÐg0e/FyßÕjë©EúK«e¸+Õð£¡eOgYNð»yð&?Ç·Ð:8´
¶ka{dÊô
sYÖùÍæèÀa~ó¯b(:ÉAUë7
2máuº¿ÊÈÄÒ¿Úná¡ÓJ>³sÛxjR}¨xÜÂ35¨ËxîÎOY^ØÆ¥Ï1ÊÆ¹¾yªN)¿ÂÜbzþ&^RBG]¯!Òÿ+cvs¹^-ëèÖ·±¹Wm-\Éw8Dߣ~@~Äiú ô3_½_°H¿BÒo°èw?ð1ýOé/|Fãú×èߥÁ¨×+,M`ïà]æÉâíøpøf¿Ï§:üAÿ*>ø¦¨EܶÿPKM
¼31
ý78jwdh<d®Ë@ö¤6ÁNhT¤*1© _ÌJ*5Öoþ`o^js&
¿©µE[þ°Ò"dw£SIÈ,¯´|ðµ,¾ùðËc£bCiy·e|"Ú]ÆQ(º-+[÷Yk0ûÉ_:Û+
7Ö±ÿDñ¹<%,²·AïÙÜù+Öó0MÈÅ©n¦ÊH³ÖùæÄfæÿ§J(4£4å¾²Æï¢¿,àØb·+D&¨ñ²à}ò-Ù½pÌÃ!¾pís¶ÎµëTP¬®ÞaìÆaJe_þ9qÎ|¶;I<$¦ú*Û-6W½ÅØ=æ?j\±k§Q~Ãõ5l¶ï½è8?ðÓ±ÞôÒ+PK±NÓâ
Îdb¾¦Z˸Ññ@ÒXLE0ú[ðy8¡ñ!l».S9ÚïC£"ÝSLõð°j.TÒh³~où|ÿJiTÈø#ŨcBmï!Bs@Èv£$dö<+ ç><äòXAPì)-OÓË¡ÏÄpÂØr/
Åd beëE3kíªüÕè°½¢pc}ñy_Ê¡ÎÞMþÁæÎ_e¹MB.Nu?UFú¨Zç¯P#ÙzLPèGiÊÊ/Þ¾³,ÿÉÝH ÍkÈ÷É·l÷Â1{Vøðk³®]§õÅÖþ
Ö~8LÙ¡ìËÌé¬sæs´ÝxÉÄÆBå£ÅæZ×Xûÿ5þ°[§Qã6ÛÆkÇ®;ÎÞ8Ö\(ßPKqø·
;@®-¯¥çËàÊ;«·©¡$æm)]S ½M41ÑÁ Àn©¨°Íêÿå÷ÒÕÛ@·H«ã÷£Xy½¡XH»MH¬k.2É QRi '¨NãNÂY÷¯tÒ¯ÉPº×L{s}þ*창⡪Zj*·x|j
,²¹¿ÌÚú_ÎÁ;»ÊCªÏ[¤¦9ãó¬~Òj7t¬ùìòá¸'¦(û2(Â6¯" Þ)ß¼Ù
Ç4ÌàÁ0×.g»\ÛNé ÙÒÆÆî,&oQæåÍêsær4Ý LräI1ÝS9äh°©Ò=Ʊð[ã|X©o\OÃdX²ìeËYÁªe}ëù/PKD´Ü
¿¡µI\ü°T#dw¢3IÈ,.Õ|äÑG}><tçÐ~B¡ª´<H¯ê2>õ&cÕ(Í[ͬµGøã¯R
íëHÆçQ|%ϳìÝä»6wþFÚëy#tÆ2Nµ k{b'SÿIò'QrOY×
ÅUË"øû¶Øi$ ÖxYð2ùíR8æ`Oß<z¸ö9«pí:å'Ê˸s¢CÙ7§3ÈÏÑv0Ì'ÄhKe£Åvï1ð©ßïìàÃi|ãZ6ÆcÏ:Îæë[(~PKREI
lE+.ÚÍ¥ÖRíbkmµÖZß÷Ü÷fK&öÿçÜ÷î=÷ܳ/÷Í3ÿd?9h¦úiì9}¡@¬ÆßëÔ¬4£±}¡q3M´Ö"z¦f±?jf8òºEü=&SqÓ9þ~ÁR£gê
ºnê0{cp(ÊTbôÅÁÕfG,ѵÌ0î.u
:èu׬Ü1ý¡>ÝöcL,âºä¸þpäÜô*½]+#þ³{JÓÔ47ÅdRãkëÄÌe3ØÉT
£gäF§W÷ÅbáJºGÂÝ3mu:ü੼)SIÅþ4»}³)Ei2
®àÃ@ÎTYÙ4èº9æ e>ù(ç¶½þé ±b¡b]ºIäáÁ¹n®öòL]ÞõhY
´ê dUÆ)PYªhÚ@Ò{E\,z>:i
ënF%Z1dßP5³Çzy×
5ëSEIæA@nÙHMùìkã*TðÓFvÅÌþ¯0{ÆÍ
^^"4*BÏ5vHYi¹=u/ãE'AsΨW²bXÄw2ìܧµp¤Ó4ù7ÃÝÜ"i`¹[H¾. 6ëB|bVñ$sÍþðZzYÁmßJ·,Õ¶9ªÝ:Á«¥{A:Mç
ÐpG_Ôà¯I¨láJOÚ@±!¨pø
Þ*Y,Aè}=!ì¿a£üÍe~/óò6"pw´¯ðòï á'aJÈ\×~¯¯ÉTÕ »ù:¤
+m^~QúrV´3rMJùµÄßdZBòZÍÍ/zù%Ä
*¤"¡ý·7®÷ÃÃ~'ö¿*ÿ}S
©ÿ0h%Ö·Gë±nþß%]N¹só{^~_HOåçÃÌØeäIQÿÇËèè.±,y
¦¡?5÷"ü
D´NEçÄå¬KWuµêè,Y<4íÉg äÚ7°^½Uw»ÀÓµ^¤côVÔ6þdjCtéÞ^tõÚ£ÜÖzT¡KV³èÿ÷rIcã°n®ÕhEä-zaʾSߺd*lÅò;"4?íyj¼ô
íÝüjîÕD}5]TÎ+ÝÁQ3UR«
)JË{½ª/
õ]m«i7÷äÆP§¹ÉPÓu¯Ì,ÑVÃÁs1·)a˳˪ÉθZÊ
C,;û:Ш«RE·]3ÎΰÕ;ê×êduheŶc_7ܪ%«ÃÍX@©é%m¡d¸% õEàL
Ù²k3¼pÏý9Ä /å&] l]2âé¹nXåJ.k¢rk¨uêt1qTN¤RcXùìQV9ÌäzÈ
êÄèÕ:ÅÓZ/zSWÄÔóM«k®
»±Kéôu.úfò:GâVGã[©ïÁÊ+s_I8éUç +
ïÙ°
ð,·-ØY
Ç*"VéâQýY÷'nµÙ«¶È=°h%V+RmýylHÅæ.P_Eí¢¾FÌ[Ä'õ~.§üºúÎP[Ŷ¿©[]bQ;¤³µ÷7Õ¥êuWmT`¢<Pônu9<1Ý!2Õ
?!§£çR¡®TWyÕêÛLSs«Ín1EyëÕ5*¬®E«è÷G+¢©;jº¨bôãUè{bú$<oëc¡nÒ×òj;\ɬ°SGݬõ¡iBNbÄ.äZ&¬3ôDY¬)¯ÓÚ°úhwu¥
Bä;Õ¯!Ä@h#$Ô©§_Ð-¦zÑ
Ëý¯ÆVfUÊö
1x|YýVÀ_ê4WÇsê÷° U¹6Zq䦣-Y
Ã<ÑåKС۪AÜL½Í°è8:^Ã,J!0É¡a¤úvßÔ eMUÎ85UæjüÓ
y]F>VS=Hç@s!yÅQú ±2û ^D«5kè4ûÈf%Pc|´¶½äY§õqêJP`(Çñ¨Çبåé:W£¦Po7ò¬ð¯7N´Å×ÞüÞ.°f¾§KªßEyÕ?²;K¡°éCØ«Èbå80³
XA/E/EÃ7éR{ÁhËÄ»4LV¥:1´y bEÈûè8}ÇWrSõÌݲ&a~§µv[ríûz--)0x¢Å0×% k)°Â? Om¦ÓgQ¢³
îÐF)OwÒ4--´~i9¥×µhçràçé¤Ýí º§Ö[î<@÷{Ç8è~®cÈ Ë½ãÝô0ÞòèÑ1yÎïQþ¼¼[)¿Ü[4@{éö1Îävï"§cròÁíNÐSôóªêro~fm>¼¼¢>·ÓßY ;[fVé50ÚÓ ôvÍj§Xí¡_Óo4«=ô½¨Yí¡À¾C?½'§~ú-\úi?òôÓ+4¨ÅÛ#:AG>uÒïèUmÛiâ7KvÅ«öÑaÂ%
Ã[þ
;n§Ô:Ëij&ÈÛ
Cõ½ðóh{ZûD7#mA,8±àpz>ì+lþ"ÍY
EÍY-â
ÇÒQ<çJÊ[qÅx^½Uéü8×s.
Ú/ËðwoJf^^ÈÇçE6>Á/RôRÜæ)OÏ+#{lLNI·Ö~W
ðDA^bIui3¤ØØ2ó yªa"·Öv#Á§ÆyUõ^>=ÎgU×:1ío/w&x}7ò¨uùÊ]q>·Zþ
ÒuÀØàójó|m¯:Hî*¾RîKðÆÞÛç¯ZÃ×eØKâ|±<WÆùRyäm¢×oÅùrëõJy½*Î×éõ8á; ¾q·cq;lõy§
$dÄy°ÖcÁ=,2ÊǦÛ= ~dÞÇäÂÄcq>ÅéS û)Ó§ùú8ägÛùùvÓsà_I
º;v#þߨÝH¥÷cõºãýÈè!z¦gG^Àø2ýÑô6¤÷éIúaù1ÊXz+èyöÑ/ùXú7Я¹^à3èE~ËéUÞJø*ú_K¯ñߥ7ønú+ßOã½É`|þÅ/Ò»ü½ÇoÑûü}ÀÒ>V£éUNÿU_¡ÏÔú\M_¨
±[Ì^µ
àBµ
Ôå\¬náÑê.Qû¹LJõ*Soóxõ9;y¢ãpä8§8ã©zp ál²ÑÑ N&ÊÀ§¨Ø1O9¡y¶£TåaÎIËÔg:ºèLõÐ:³©<*ܼU^änoåª
°.Y]Ñ1j
jQÕd¨jp§V«565©¦ùÕ>¤\ã-9æ|¹,·7×Ú¢2Iµ'Ô¾¸:kHÉ_Ø/ÌÀc¨³_ãY¯:tÁ£Ó¡vÐtµ5UíSêp+|ýâG4åÓè]5øQuD
[¯bº}Vï ä6ßväÀØúËUÔÆhj¥*Ut£¯ÎO÷úÜ\õ¨ÚØÞ/ÄÂEªm¤mWßÚ§®nÞESj#î¶ëmÂåÎÕu`Hç׺Êèð·ÓT½¯Üeµ^¥êÔÆ]T/0W ½
t£
¤vì²ÉN¯ÝZÛ£¯w¨!e-r%ÄW#]]K|=Î7Ð|#Í<x;-E2_Ç7ÓHèݼý×ÔÇ·!ÔÞÐú}ºï@ý
]Zæ+ôuÖË©¨ó²4£#«ïjI{ õÐ
º'¸¬týKá9·ªÛðÔMç©ÛAÔGêûHÏ.rÊ·m%w`EsµÜlsÈ-¤¡äCH? 櫤Ë]±§A0¶{ê®ú$ã
Tpè-âêî´mù¤Aç»uï¦Þtuds/ùøÇ4þ~<ï¡Sx/RÒ.³:éËjwêvgݹñUAR±¢ «ûx@µ§,àJÉÅûú¤2þIî$-¦ÃäÓ>â
Û9
à¬?>FXüàÿf05=§¤Â¢¡/RîSël¦&gwx{îìðͨ%É/Pú&¡ÄN3<9ÅðdÛêÃów>éô%bee¹%ùð{ %ßåþ¹ü%ä¢÷¢²+Cõ> u{Nrxô©|ضºÂ®æúófüÝjûèÑôþÆi
¼ÈEtõA2à=xÜéópZ2OP*Åùe4M¥J5fªñ4%XZgsSô̵hUëFG}ZTiÊH߯«ÿ¤³nvjRWòÖå¾G}¬>±7N·¥¿Ï¼Õ¶|íóa;ÿsg¦æôNå²S©Oõÿ©ÏuÎðò$=_Àýö¸Í¯´ÇöxÀ±ÇwQ=mÿPKk1nv
QC£"n((Z%åChÌ`X3ÇñÊkªª´Êðe|õï`تäbæ¤9çûÏÖóã××ïcr+
ÏUEù^I/pë^P®(÷k¸JZC¯eßy-ßÕýWÅMÿ\nݪÎÔ%¶k.C§âùÄL}IÚ°ÐB)tÙõ䣯ëEéÏ;5)-×+NmÁñ]ý;:L¨ª÷ÊwR ;_^qÞ:Åã½,ÎÔ YÐÙ%ЮªÒtmqe9ãçïz/#ÀA
èa6¡3Ýâ'pr«úN¸>;ÂÖø
O` _Þ®ÍOdШ)D[b°qý:v¼s\õÔSnmªrÉÆqÝÝÙ}ßDÝ-`1} 0±}»çÆÉì5ás
Ïò{ð2Ðý<Â(Æ2Í~ÏW}é,Y(
$åøÊÆ9ݳ8¯Êܳ½÷Wý;ã6ùÀãÅYQ.§Gaãªæ_Ý:4?º\ÿëÒs»!ÐßD<%}¿ñFÉ¥;ï+òbS,LS;+ïîHNïïðyWw RWWîòéZÍÆÝ0Í{©¹zïÈYW_´îaÑòvÉó¤oÖYäv%
ëcÐË
n0+JL[£ÍKaG)¦ñ/Èé<
k8ÑÄgM»ûë
~Uô_öPKøôU
³XÜmzndËHz¡ë{¡½zPÇ
F+N(u¡¶_5pöä¾¼·Ï¬)ÎêêACV"¹-Ð[Þu>8vÝñjöJÝ Ã«.£¦óç¬ëQàzµ
aS@[ñ·¥Àà%þ
M:2&®àj':pM »ìzòUsoKÎVÑ}e¿âÔ7ÀU÷ãZ´ãSåÿ3'rÍ#a)¬åI4ã0T^á7N±VÿYðÆNàï+ :Mdq]Ñè9sy½µËVêH×d÷9ò
D£LÜDÎÀ8&ÈþQÇ-fuÃå0tkª¸ø{ùd¿ß¸iSÈ^dú²YÊ@G NÆ;¥K£hÀBSv
éQ¥ó5Út
¶óÄla|#¿mS8ô½{Ê÷¾ÂyAd*öí!§VuܺÇJ%ðä Fg(ÈÊXi3ÖýfPk®M6¡9
O øR\;xÖæÚÉÛÞSÜ3Vñ¦Uú®ÃØ©kWlaà(¡·\Û½èâS?âô²*GÝpâ7q¡ëà>oaô3IY_ÐUla²
ü'hÅ_?`½í+aVYZ¸ÓÂoxzçÖù,£çiÒaµ<ëYF 6
e¶]ëeû3,1ÀóÝ¿PKÞj
Â=`¡¯¬üÛ¬pkSèTm¼lVU}Kµ4û!gG³FË::'if:_1gù.ƼÚÅîjsÂæò%Y\~Rl¹1ïÝ:·]]8H/pñy7${ÇtõÚc¶<×2nc\Â-Üqc.ï&®¿ÒëkQÇìØÊ0ËwMúÏî-»õ:§v1
¢à¼ÇÐ6+YȪ»|Î0~ú!×*»¼J»éd<Ä# ðXÂâ$9gù¯B®¶Zܨ1L×][Z vñ¨\iÃt*©8ýðSÌ.ÑLF«#ÒØCQ¾Ë ÍéÂDræzÛ÷·øUÈ|Cò0Dã
´¨5¡öÚ7)ª^±L
ÝGªÏ76îcGvm4д¨Ï=ò§±ð)y·7¹]gîS'ͬ¾È½Ì¸Gcxdã!ö-<ÆsÊãt$Û°~(Öiûê$ÿ;g=²S
H«/T,Mð/ÏP;-ŲÓ*ÍbrÆp¤-ýÁ¬ºi£H_[¸127FæF£Yϵts
î×/%/¥ÌK}w´¾(õ«âý%q1TÕÓPK9!éº
¡ys?«¹LêãGÄó
ÿEìË0UB§ÊÁSÂÂ@dQx'µöl±<<Ãs-¼`Bí§çÎxÏ<zi®Bù622,N¶Û2Þ»$j/Y&3l³¦%ðo4*¹Ù/Ã|5#ù$*ðñpãEö^q\d[ñà¿~º¿qÆ7[xoת¶õ=%SûxÀEd¿eöMÅCÛô3¦ªéGý
OáÓ¸B{Yö¯1vá:ßKܵñÏæõ6ì½-»Ù÷PK^?úVé
t-PqÃMÑn6
Blqée2²¤r¶×â$x
qìDíi%"Ù>>þüócÿþóãÊx>aó,=ZFIGÉðH&úPêtâÂõéÇJèX¹(*OÖì6zãLþAsy«ÏV=Ú=&8ûñ©¬b +ã ¯Òó©ÄI( qìðX¨ÀÌó¤£? ¡=otdT<!´Ï'U¶ý½If.ÛóOé>vÑ z,æß¿î¡ÓÂ)]¬ªìøµµôµ<%<SÚ²ùS<{â6=¬ã&_²ôY-]hBØZÈ%,%R¿e]¹gªæ=»ôåDZgâ"ú8¦]t ËZ
u_ðExqª|ù<07\ïÙÊ¿þ"¤ÚEÈ;(ñ12ï{g{/ñXé¾ãÊWJð¸÷lö+k¸ÊQ+S¡Ê9بfVQÏYï]æ±þÍ÷×z9è?øö[³U׸_·è[Ù¦)º-té1tWñÜæñNnÿ®=nÀLá+6ѱØj¶cÜûD·
L:ôh]Í3³RP9ªÇv¨ê8FA~ëÀ^ø[Ó㨠9Á;ê5At\Z®Ä[¯]Ag7×kõÑ®ãlj½uÙ#{±ÆÒªðÙ壸è«
ZK÷°HTf_Íìë±<5ïÃaZØÎbMûèF,Úxº+9Ä;×xCg`ÝdPµ+Ãvf
±!,¨bJä63³ËGì+³?\ú
ººº±(á^2h%2&æ£AB0éF&ݬ'D"L:gêA$aØÆdýbÛfP>¥mnWô1Á§AáÈR#oåÈT¥ÜÝÍó²Ú<wý¬ÚÂ4@(@n%
ÝÝJÔdѸ^´Onø«¦ì¶°Ì¤,¸Ð J²X_ÛÃbwèÅ::<£La ;á>²´,ÚÑ¡DÓ,z^4bÑySöÐ.3
½cá
Ý.ÖíêRº±îNuá\éÉ&¼'qÞAu
íwt §Yû¬6[ZÝ»#èzþ¬káÀíoü+@ßTçÏó:¾½ªÞðóÊý[êøvÎ*÷ï
"?ãÒCÝâ}wÊ>3µ6 Z©ËzfÂú>½ÂظA/óM jüô>`÷îµ8~[t÷ØBÚz
^G.[=4¿AùMú!ûþ>yÜ×$íLMðÓÛ¸ìÔ×À×
¯ß觸IæÁý¾©i«Ùo¦9+ýi·ùéH[EÔýÿÞºDߥ÷x
õ1ýäèÏf
ïÃ!fgSV$Î-Élus_ÃT
bâ¿zhoÓ_×aÄÒ ¦ *;/³ÈÀ'$
×
,¹Ð¼>®T,ÊÑ"/T50çAJVªv¡"ðdߦê1ò¡âbÒr$SGUáRU¸TÕzª%^FP5i©Ð²¹µ.ÏÊ.в^Ô»öMW¤T>hÍ,LNV£|yÓê¬n@×JUat,Îk6âòL,i¾DþKT|¾ù"[Æ©~?[rÔ4%·ñ6bÊnL(6!Pôv)_£ÄÜb-¡fjdKз@
_ãßoò¦æ]륾ÁnÉ#ùme±Õn&%2xíL®çL.ÐÚ^d3Aªì¼Bt²éÔf0omk^&µn&µÔ"xÐÉd6
ÞLv Û=ÝLN&±SðÛ§>GcTSßx|Ö7] ¶Þú êä±#&æÕÕ7çèÖ
%O<CU:ïÜîÇâ@·<H×EahMòèt3îdTfÜ È¨¬G'ªEÕ·ÇÁ½¬\&V6,Ä^ÚâÍ>äµL
«ÎÂjM²p±ÞêD F
×åh;êP·âèC±Þº êåqFYåu+rô«©2Ìðða"ìG £Ø\wRîÊ+CØ-C´;e Ý)ià Ý\ö³m7Þãìü,9ú¼·
÷Áë`^üRä·UN¿ÔUKËttyíð2
"Þe4Äc-FÍy
Vf®.íüQeSÿ?ÛL¡ÿ½Í<×* '£ÀwMpàÄ2ËDXþ¢ÜyZè¥)~ôWÊ
Qá5ö3§2ÿâêðtÉHõñ×òÙåê2M´Ð殳%1î0ne0e¦á6Ægìþthãp¸eU¦ÛC¿ß/5_PKG
)JDH©=¶ì]´^'½Uø*µçT¡*UJ¤Æ Tê±zë¹·ª=öÜ[éõXm3óÞoÞ×¼÷_þyõÂÃ6¶åeJ®Yãw33çÔ¶Lת;öiU.WÁNÍÖëÜõ¬/λ®ãª3tæ?Ýâ"KæC3S5írfÕs-»|A-ͼYeP¦-
cJ6|$¹Æ Í9EÎm"¹¦£g4HÐuÈP:Bµ%õ0t/Y6¿×¨s÷¾¹^å¢d§`VרB@É«Xu+KÿÛ,ñ¾¯×Í2¹uð£N(fðf̽åC¾D²]z±û×y$P1¨#sÄúÛÏCÅÊUrÜé1,þw[WÖ7¨º6H¢t\Âe
q
¡ç䫵Êí²Wa'yo!¡aI®cóeÓ«¨!e3È|^Ø!a
R¨î,.%òÉ9ocBD¹F´ª7Öë~6z¼ðkWã;æ7DNÜÞiJ:EÉÓétniÈBÙÚâ6h´NA8+Û"»4fÏiÝé¸#űà¡YmðÃpâ5;<QýûT¡_ËÓ²hmÐÚ$ê¬:
·À,AÉþSÔK4¦Ñ´ã}I
N*´k¤»ÔÈÞH¾Dwjì%ξð-#´Güû^ÒGQt£4 Õò#4
øR?Åg¾ô&I!_ )L(Q¶14J~*ÀSß¡ûGhtý ½©=P÷1ô\ÈM¤JÇ>ƧÃ3»0l4q]àâü
Ê.Îl1øôàÏÀI*æ?©8)íâ¢ÀãWT:tëÛ¶ÃQÉx¸±sðm }áUCVÞÅ~Þ¸ôI7[¨Zl~1ã ß#ûQdz31¥Ù&ÞË*Ç@rü¨ÈÄÄ}LÙÇ]2LzE¥£òmä6²èWLøÐó£YÙ¤ýºèÇec¸Jbwé/~@ò*x@Ó«`ôÝ>£÷ä/Èò ®á®ã[LânàgÜįÂDæ¿1Ã$äØ9Üf â{X.xð1q¦ð`îóX¤YO°Ê·H=À_X")L9Ç2I¾!MpC¦éEÌQ(÷çÄpÏÝÊ¿PKÞ×Qd¶
=à"fßoÌØÃðPKdî?/
ÐV.£b3¶(̲I 9z?жHÝíäÎòBÙvÿ@Ëc:d¸ÊhZBæ fåð|B±Ófù¯[fk8eséÚy´YÝ>1£¢SW
zÁ«Òffô#é,W¡%"^_B\"ôÔ´D2¦I²ÇÃ8*É7]e¶h´ÆÇp\±þZÚPqBÆÄ«dÂI6¤ÎO'ÓºUqÂYù¥f^gS:;3Ò ºöµVñ*^Sð
46uK$2sÆxdLÌ8ZaP±*5§X{ÊÊ2µS*R¡#)C$kiÃèËÙZbjØÒÞ´¿ÐiƤL tfÖǸìaÍ"#~ã0Ít()«0%^3l÷e¼s(H¹ô`Xe¥>ÃÐ'4ã@"¡g³ZÕì¼¥BnX½DsÝcêí(²j²Ôo?(ή£¤ ü·88&ï d=pqEÇ»ÕÂ%jÎjFN?h-73Êø;¸¢à2ÞeòÑ0ÞJxÑÆUâe]ÏzCfÎJè½iyÔ.ÍÈ0¸!Á:ä/ ¯%
æN#±øm¾«
~ËØ±L½\dè»dïRF¸yo¥Z(pÓÑ
8mQÈÞ]°oÎÓ
ý¬×LÓ ¯T:°£jæùº.ÞEwÃýOyO^@ôàhåÏfúy¥;èk2<4èJ$ÏÑH#ôMB{iI>û Fèt§$vÃ\
« µÐz
£Ê§å]Ì:arÅ+LõSâNsÉ©eÇ+ïCÿÿxnîÞ¡
!¢ÐA×~zö4zÏ-ÜPK©bÔ
V¶GúT¬GDÒª r<Iëä¯hYÿ|¨T¦A{¤tÐÝÖNÙÚgdûÒ¹)ÝвÉL6b0ñ
A¸øÐ© "Ï:hÓ
pU¼Ø×Ȱ
óØ} ìKh®@7¶3v ÍÊzs\ÅNìÚzDØx[AÈ=L7A kHxư×,à»;vÑniêÐ ®êv®XÑÚý©
Ö-í%yb4¹C°RÌrÄfÒúTæ¬7°ÌÞX<ïHþFERaM[y§â¶7ØôtlÔHí .ãàâM¬_{39a±e£ðÉÔy
'
NÝBýEÛáâþ¸ÓJ\ZA»É^Í´°ÜÌjFVl©Hà(
äùh|óFκ
)" CF&K*ô-KÍ
yG¶Lëï,ÆÍ,eÓlXT#© .ÉÊs]¦@ÒóÑ´½¡â*+ð.Þ(×¼Üôáò|G/*]íѵlÂ+
ª]êÍj+¾$ªÍLdr©ýF¬p£Ãë¢Ó /çÙ1U|ø|J´Yð¢eç4s$7>®f<RIåÁ×*Þ¶W7iy$3Æõþ¤xçß. 2äûÒ¬ÞFL4ñà3äOW^ñY³_Î|8{ÄÄ9E¼lóÁÇXá¼!2"P=6Ê/WåáHÉÔ¡ñ¾¥ñE´h§W!Z¬åA:PÕ<UmD»sh¨Òþr 3òV=º±Ö¶9´Ì¢x6Ìbó𪣱MÁt·¶=Ä~<<Änwÿû;"D5 ò*ª®£òVÎùt ãÛ4.V½ØcêDú©aa`/©hmÑZh)ÐÖFhQBk'´(¡mX´¡"hÃ8(¡õðÄùÐÂ7°:ü--è(Ç!¼N5M8ì¨Û-Õ¤º£Çõuñ^w¾£/ õ¹Ô×ÉY8Q!ôÍbì ªuYG=yQ!)¢KiJpndÍ ØæýoyÐ&¹þ'6hñ9@{LýÕ¶.t³äÙÏv=<aJÛ$|¿ÈÉY¾Wý`v¿ÓãÖ=û}?âz?æj?äbÿë}ÝÕ~Èžærß8&äýÙ|
#Ì
ÉGHµÎ!=im
!öÌâìà`OÂ
>%µ.`=ì°&ëYÚ¨¤íÎZ¬s¼î¨Kº¾Øå\äR']øjÉË¿Ð}#â¢ÔGZ£³xË£íî[Êùÿ5Wãª5ð´¶
·Qº Ä
JMú$Æïè°ªðJüÿPKäÊ×O|
P¼´ôk¬ÑmÝ?KPþ
Ýo´c£tÿPhßëøZƪG?R;&¬oüþ>ÙìrÍèÑslväáC`ãd0I(µçÉàB¸ÓÆ¢»Â(æâke +û÷kBGú~%vàD»{Bvõ7?Z|b4±6¸*°èZ¬`PlGéÉSåì'lvÝdàLki¡`ÅÏÀÍ»Ñ8zp+Ã_Îü×ä<Ëѯo?c¢¾õÒC*â½èÄ4ÆåiÎçÓb3)ÊÇ,Íß}8³¨?¢ôê(ÍGù|é¾i,§û
VS-¥^@ùPK¯$x
EòP(nÒ+f8R¿ëbñ
ήHOjØV3nà¤+ &Sg*Ê^*Òº=jvf8Åí©HB¡¿jµci¬ÝðbFzà@qJý,%\(¡¿±jµyP1^¸à+h
GäæõF|Up}Dë#«ñ°ü¶fg¬l=ª<Ý?àÏ-j´ôóy¨Õ$8as¥þ|^LÁT¦à&KZFõýÀ]¨"äd¿j ¦Õ¨ñ Z/À#ìÔ..Ef<)*ÌΣ}ÖHÜèúú¬5D
Ù¢ï
eý÷>7ÙÑaÐPgѼÎçÆ\a'³9ìê2¢í
5ùÈ0dáqÏX(|Á/óu%×GÂ!_(£O/0üÖjpXå˨rãá9fIx±D¨sÉêÖ`<Ê1
@~Ýò¸5[åÂÆ
ÛÛeéÏ/-Ö>"iµ;ÂF<¡Ã Ñ&4éZ*Ú!%íÂJ"X©)°b Õ±Ja¸/,6In¬h)¶¼`ÁíÍÙkçÎãýU屺5Ï#¶aètÂ0ûÖÂbÿàë&¼òa\.|\ApêÖì2â!+Fç8·µÂ Ö2!/Â+¾m¤rZ]í:ÑÑ
ÒÕ[¡2í4Âc£àoRlééeFÇX2Ú¾<t´:fdVuÆc[%ŸSðqD"¸Ií*q².Ä=J'$á
Q^mÎFhÑ$¶2[iâDøj"m÷(ÅÕ´dKÌgJ¾öuJ¾p±vÂÄl[¡NËË·
.3º°CÁ×o³i,#u"mNÇdéIÕìÄå ãÛµ9å^§p.næ¿FеGÍFÔì*â¥åÓ¸QdqieùÁe{ªNè,A"nk8v0m\ø·²¶ÂͬbÃÑÄ ªÐ4ÇDÛiT fGÆøSD,ïÆqû;©i8YèŬ/3ȰϢñ
çù´ô]d,7¦a¥ÿWÁ,Ý{eÓûh
:cÅ©ì5þåÁ
ØÐ÷We¥x{¸CInIEÛ×ñ _Ã^
¡Qck#qÑí5ÃYÚyñ
<,ûÄ®y'Yß
;ai0*i1¬72äO/D1¡õBÏïFOa¤\|]-ª²YN|ÂEÅàQáô(9eÕy´¦cF5«nÉÆ+Td¶1º
Ö!'«Yñù¤]ÒsÇÆädÍ^|ßöà)|õɦ!
1Eå2p<';4¦"xÖîÏæJE"Æ`dËzf
e÷OÓ\ä¶¶&7N#
ÕæÁ¿þ y°@*Èc¶Y×ÄMèä/yð²ÓÑ©é5S³?ÚÕ²Fí®ðU^ÁOØ×uÉV3Ú´*Y¦ý?òñÙׯL&,=uzÌ£?å¶Ú¥yweb=0S$yÝ´.å)ÿÒ}y4¹Ùkéaoâ÷âò l^ÞÒ¾ÍLgúÜ6ÕoãOCqöâwh"ü±ñkÅ
{Õ21þïì»ÔQ+ÍDCæÌ´q^·Ûw:Q¡Î"ÊÿzLN»|`;}¿üN²ÓnpÐ å~5EêN<öZ}Ð%G%wzUt<·*»s.u¦.å
lãfbMØìä±Î«¼jG
UÃy°ÌüêX¸Ý¥FR·Um+{U19Q£ÔhºqU2IxU©T:*ã6]©¬ÎSxâiix¹gbþ¾÷#úºT1ø¼KtÆöV3ÖåUðGWÙLÞªsg
ÒZzc¯¤&Ó5Õ+®GÆjWU¨J:ÁâúKt_ß8H eaXn¹D·/ù¼ZU+ö¥
3m7¶¥úËkÝ6)%Tªô=«VîÃûÊAï«Sg¹Ô7IÙhúüÎêl«æëFM·©$¿5a¹&OÃ×
͸Tñæbæ1"Æ«F`s|-é°
À}ôÿíÁÂÇÀ3ìo©}»Ñ]ûòô`wSm
Õ2Ýó°×"¢¡ø0rðoÊch[î\¹^<=¨è3§¤VEû´7ºùßNL£'®Åsú}-)ïñ]û2\CÉkÉÐÎîB-ÃeCeÙ<Á±a±÷éëp#goâêÚ»ñNìÑÅôG.5ãÐ_;Éÿ÷ð}ù{%¯TÖ×®p,äÅÄø¿.å?ëë%®±¾Ö1ïÂ:0«øïE~=¤Ç~È/Ülß4(-i¹ò(^fâûQÓQ¼"^ÿÓfɯ«_î릷ó¸wpq7OVf¯Äëø&n4~ßè
<ø-ÞÐÝ¥½åõº þÂ
t?ÒÊjà/
¤¾¥²öþ¦påB½§°çä{ÓûWèpÝKäûPûéÆ÷ò`=Z
k»vÇÿAòYxY´vá)±c¾ïYÍQRJãNÛ
vfZzd ð
5ví!㩯E´sÆWµr×3)q®fÇéÏ0@¥ÏQ¯çYÍ£¡ñ´5j®unûÊ8òiù¦6Ëâ!îê#Ê_þ¥áîýbVT¸Ó;¸íjÃ/½£BU©»Ø¶±WÊXe¯ªÓ(ײ¯dYÖÆõªzíåJÍLÇØl]Õ¸Ývô÷ײ;wº¹ã2ïzuFMÞÈ»~ ù´Ö/µ×bPù4aøÚèSge¬ñ-Òur
Í
Ò½ºÂUW®©ªÉO³¨Ì³òa½5Öß©GÛµÎ.ti¡Z4(ïöfÎ
%æÑ¹é
?Yb,f_¦(kþnEraѨ)[L%ÍÕ(
{Í%+Óʪñø©jDZ¦<XmBWïfAߪ~ª§+EÝ«DTÅ~ZfîL
§
KÐL²~$X18{ÓÌSc|LÉ´ï¡>º®`ò¬¸ðÒ*>£×0'±6iF)NòÐ:Ì@ê-wÚÁJÆñ;Uã·ü´6úh=]zT¥^BàæGuÛ¡¶H0¸¨gv@OÑÙ·áP>`Hcò#õM[ÛÚË %ô1âÃoºÖï¡ÅTC
rxÌ6n§ëEÄNaeê¸iÝà£6êðS5
Ü&òÒMÖf$
ÕI,§£i/Ý"ÞÑßÈÍ.±C!³z"P·´y"µ¤¶©Iº0CÐfb(L$Ó<1^&'ï£ý¢Aòî×A*ûUæ<z¸ÛÊÏ\É
án½ÛO·ZÙEfjÝÝ¢Ñu$°]{_4rP"S ï5Øfª¯lú¡ûé
xuÕ"¦í®1É»HØOi¨d®¸<Pj.©MTm
ÒA=tjmÈî¨ÿ¨Õ¤#>º>ÿw
tMÚCò}ÚJ¾Ï ÞHhµ.¤¿
Hl)0ÄÁQº[HÜ3 ©öôÐ}°(4³º{?CM§¿6ÖÓ#Mö!ä "_å=X¸»|>'i0:N@Am`
ðizÆGt}#Ë<tVÛxªT}ÅGÏÑWÇ
c.:!DÄt{(Ð~º !rGåÉfÃy(?Á.tʦªÝ~¡}4L/¡+ñ*«Êû£òþawêåBðÒ×à¹`ø@d?rëfÏe¶ôHûui~ä¡?ù,re¹a ×ॿ@Á¯fÀº4IÍv-
ó8úÌ7N¶Ï4=eºHÖ?}^õÑ%z©<ÍMs£µü_¥¤ãà;)èM¡Þ«
Öt¡¨ïÊÔHÞVÂ.¿v2Ä?`æ¥ïQu(í¶ÛR¦ó<OqËÒc©6ÃáFoL/³î
ýÖ2ÒÙ±\B²þ~+½àw@Å,¸3¸+wKõxÞê÷(NßþÉUþHDµ.ÓnUa
÷éáðajë:V¿q/ËÄÝãÏ6àM>~Îbw.»÷°é-AÃ
FÆ©Ë]ÓD³SsÈT) 2!Wr à˺:hW%
«OJ¸éýÊ+«RozÖfAJ=Kæ«wòÌ^Jøy ÝÇWóRÜþc¾C·ó"
C
EpÁr¾F4`ÖIa0WøXݨæ§À£»µh÷8ðU>^-·ÜY*ây´ÎðÎ5a1?¯·¸o] k´®/"¡{UÆ&t?7ñ*áwÞ<Ü,ù#bÔ
$î|^nþôqãbäH'bS8y=â6·Ëf-Å,ÏHÿ%²rñ
rßLd G&^»|óNæ${oKnôS3IÙOÞç
.t-tý°©÷5AÐ; E
¨`ú¹àuÖèdw¬uw÷Leÿ±Ï1³»"ýuÁÎþºØþ:3 uëõÎXo[l` 5½ÜØGJKÎø9"Sî Àèpõí5¤ª*3
ì0¾À0͸_ $É
¿@©ÒZø~R¥6¥5Àê¹ê8ÕÅiQO@REdhÕbºdTG°É-ÆSXe.ÐòtRei¶ClºFÙP}0³ hJz¢Úó´üUҵôÄð^´ºhm6íåfk9B-xJ0*
éDÁ«® 4*h^0d.µÂ.Úµ¸w»b|+ëêQjë¡]ô{ËÝ(º9NÛò4åÕ¼ò4å¯9'ý>ä<_*ûjìÖb·Ìëa¬XûªÞyì¡^åÑ>
Úz7Ûì}àY]§þ]éÖ»/QTÊ-È#|V±)«V.@
Lèa#ðr \ó'=<LÙä6ÃfÂÞpÓ©@¢\ëÓ æµ©Éê6úóvúè8ºÙé®Ý5A÷cär³|sY¾)ªç:¨þqúÅÏU~â¬w`»uâôYâ±Ò½-´©µ6N6¸KÜ(§ºÁ¥ãEÓçKÜqz´èqüÓ©8=ÉCÖáiéKn)ÊËzãôlë øÒs5Ã44èFhô$å^¶Üµl!|ãëôçÿõ%î¡AZÙmñùK";N¯§òJ?v WAÊåÓü¾ëè
ÚKýø½AÇè~ÔóUúkÛöGGDÛ`ûíÜH×v`îî.Thu ÈwÃ{àAñ&ZO7ãm/Vþvz7²ýíø»hÝCûé>ÃÉ)ëixê Î"Ò.!Ö^
¿^§Cô3:LoëmÄø~
«±,ól÷-q7TÔ×êÏÏï³¥ ¥|
Õãy~¦B¨ÝÚuªHwayæH®²°ó®FÒsr[éÏCøh
Ï;Ú_=×¹Ýò9Yõ¢£t·£/}[ °Ê6X^ Ϊ_äe.J¸o8´ÉKhg§[¾àÛÚT«"ÿÎ¥øC.¶I°\¯mÄ&{à)£¾Ì+Fy5kÒÕýbê
øþ»²Óm²n¹TÛd7ÙdgáuÒÒ×E#¼ñ$ùÏSÅ ÊvÍ:&ì÷TgÛT}ò?çiêVgÅżi·lå@1oæíIAû>ýAü¼C|Ó- £=l·æEJíj6àë·Èd^=Ì»FX0ÌTÐø¦rÕÞAr·S¾ßv$Öøm·¹W¨AòxûJÃ?ÔOõsÌ*oòÞN8ÖEWò-¬ám$};Õ(:+¦lCz-IºÒCäɼj\
_fãßg6%ø¡eæÊK]v¶fûP²Üeg0 SyMx6ÌEôk ý«ß"Þ~wó|ýG(±bÅû)_±bO**⪹ò¹Ã§Å#ó9<·î¤-YgÝgí!ÇàrÌïcçCÊÃá$v9-ªðУlؤï+Ñtá(ǺGùPGõ0¤%PçWÇùÒùOIçáO¥K^öQ!çÑ4öÓLÆ|ÍË«-²j´#Ïá»øÓ`ZÈÏðgAe&Âë(ß
0 ò=ª5åÊ]Ùsp"6máûù¡q"ò±À0?Ø:ÊÇ;jù÷ dðÉ[®Ï_ÀxÂw4d_úð¨ÿ
9!ètj<jÔ[¦[*³7O
$Ó Ó*àø§WÚTÃsPÊiÏ¥k±ÞÊØª¸+®7ªðmç/*¿Ðz~BéZBü¤ÒuÒå)>
j¨¿Ä_®õ4-É;m
]@XLøju -楴0Ëy9{
]Ç
Ôõ^ámÛId2Å_Smµf¨f,ç
#_ü#PKõr@Ü
UÛ6Ë^Õ@ÓÐ}Ö8oäm£2?6}û´kعÆ}WXÃÖO?ùLq´ôÈ䣴q
ѲmÑëödêP¡:cjè(Kø(ô5ÑNzU ¶Yõæß¸nl£ DchÃmºVÅ,Õæ§MgÒ¶ (VË}Êp,¹6;F;#~²ðæ,WÃâûÈȰ½ìßÈ>Ýú©¢â\ó,;?Z©ÍáYÕ
M»ä/n`PQìY«ðy×3ç#Ø«aˬéwª¦ã=¯á®dq}S·tìÃþ8>TгlÓ¯s
©ÍqÝG
wÎÄên$ãLeJCO2, iófÅsuöÐî8²Ð+¯fJR¾!SînÍö4ô¶¬¡Ó]°-¯pæÈWΧüZè8û
ó!r^+ÿDµ*ÅYÕßìµþpX°ØÉñÔ)éøàjÉ@"øPz]=²ªy ÁQªlÙ
<Ì"WÌÞ¨C
·%KêÏyá-g¦·U±Çâ(àq
bBzY3%]ÃWÀix#FËð1|;g¸UÇȺjòÒqBî
aÇOqbc9í´ížÿËÐWù´¨ü(ÈrÅNÇÇ1)[ÏP²åª¹Ù$Qdk`Zô5lSMZ2æÍ1§:ï£2;m8Cm5ïVâ˱q§eÍæ`I«eïØ+L=Ýj^m̾õOÖÎ1ÙY"ç
»f;³nZ0h
RåF(À<´}ÛX£¶Ü.W+ß°=-
ÀDX2¸<õ;å@h¤)oð,¿Õ±¾ÃdõY±^²|SÃÝ-²°Yï~+ø6ÉÉÈ+ß©ñ=
qcf¦qô¶ª1AqI¸þâiT8<|(spo¾!×Þ*[¶¸©a9Ç+3îiËÓñS.üMgUfÌÒtrþñ-û\G¿äÌZ¿ÞdÒí±ý0ªM»AÉûãã-þ{,ùUFuÌÛ(b\hÑ4~ã?²xQ,3{®g8^ àm_À;Âm³`?ÓmÑæádµæMi'æªõ«~@ B{yBÀáÿùÜ
fÕõ>®âN/cçz·ãö(7Ý7ÂíØ¥
O)î|úì´(óá-T2Ùe|l(ÔªãÙEìJÌÌ"zd
çúÃýá:ξ*Õ!ÞýÚu\F2YÁsSÙë¨-ãü5¼PÇgúýu¼TÇrõrÖÛѾñæÍ÷nµÁ sêØB=È}úr¼Êóê^òd&ïÃêyë9RjO¨&µjm|_R-dãËôkSW¢»Ø¾Â§!"ÇðU>
sÿ0¾Wx5ÌÚ½J´³û-Ò:Ì5¿¦ñõÄkl¾Ò
.NerËøÎPè2ô¬¤áûu¼.ë.ÝüwS¹v«¤&ðÛsý!ÕYÊ;¢DôC4Dä6²1Y¼6zîŹ×Nÿ>¼¨Vâ+? Y¦HÝÁüù"¶gº÷×ñ«×ÑIü¦ß½pèJû>²À<<Ìeè©Utú|¨=*<å+"øRÐË©L;{¸çzgê¸6eÅ»ê¨rëu¬,"cNn,åÖ
~ç©l:KMÍjN¡;¹óUÎåwU&4üUaþí¿PKLÑÍL
7Å&ë|ȳ'-<W¸PËÙBKgbô§°"÷Ø¢Sv³VpƺÝkc·È1*ð
¹DùJµüZøÅo³üQÛ÷Ñ:üí«ûèøÉtS|·Òè`ÌÚÄiÎÀgÐÉ1Ì©«ï[zýÐHâÜú¶Ñ?<²ËÑ?ÝÃÕmïvwÍì íj¢ùéq
ùåߥÒ$ǰÄåÊq\T´yúg0{+3ü3$vë;ÏÐî¼R¯ªù'´Iæ
UÀ9¨Á÷Tá{*ð-OòKàyaWtùÖ²2' ÷´?bjõ/_I<8ÀÜêOÚAÛk<Z[ßÃÂ>>úKÛèäð龨&=~ý6A ^æÐÐåaÞ£,ï5Ü 'ýǯÛ\êg*UêsZ/)éÝ*a«¢Rr$
ý=äWvÐÂ
wµi+»A£[\¹Mù'¨Ó:U d¨~OñLÓX¯B®sûøÈ¾jòñÀîse9O³Su`ñ*X¼vBù|+uY_üPK®2Hį
.)ټv
¶lZí§úXdEuÛ©f1±}]P>^vÔ©ÀeÝô,A'¾8äåoÿíe4vi
(KÖí\²ìJï·>ÓG
&
ålÀ¢Õ,XE,½stHµV¢ÖæþY£7ÅýCmGX-ÅÚ(T%K~=Æ*aO*Ô%ÕRÔ)ìe`klÍÀôè\Ï©ìõ9idDó+6¯np¸Hê̵۵ûL©~PK
È"í
+¤-û(&ÊXÁ
Â@Ĭù
`¡
î,! XÒ¯aÝÞÍÂx(q-}żfæõ~<áb aQvua¸êêZ*6ÊHµJï¢m¥b ´7Á+Q_ùùRÊÜ0¸O[a¾>
rggVlÔ>I6!LNåòXT}sw½'}סZKMýYÀØo¿ýGÁ·ÌpÀþdyØ>PK'ï\}®
ÊLý²ãÏ9jì, q
p1Gy _*QOnB_ðf(J~Ôâá%×ÒλYs#cmÿ?IRưUñ¿|7êú°úmé$äqLòüéCKÜ):do¿³(QAOãb÷©\Ì0¸W®ó[êpÅ<f1Ï0[gmÙ<Ñ=iѱ¼Yð÷ãO3âoí4¢D·Ä´WWþãölÖáÐC OÁìËÐ8B3"£8´óÑ'JhÌ¥9ÑXè0 ôIP$UrN19VU{ÁÂcf4ÅÌv]ͱ^Æò
9SÁYYµTÁ5;ÞÉ#D}]DT×Ë(|(Qgs]qy1ZaØ*3µÐÒ¿NaråU8e øQ1La¡-K
À¡~8PAoZ"1³-ݳÒL, ¯¼#]NDä¿=éJ0[>¹é¢|¤.>4*mÜ#dVtÔu%Â=æyñDwG0kÖ\2c/NÅÄ[ÓANUðÂWDç«|ÉpL` Ö¨NatÂwfAXîè¯2¦WMtîeÂpA .iöaÇc³^çÑÉf ²ÙÊÜ ~iÜð$G`ß+Ì%ñn3Y/d=QᨠüécÐjPeA1[ç°ÂMQ³Ç¥ö|ÁÊ5@ëSÄñSÒÕádk<ajõIÍÎeæa¾¨k¡í\:Iª¬h9hÓ-.2ñt¢DxpÆÌTýiZ¤8¹Å¢yv£ÅX$¬YÂLÇHXÞYIª2Ã=
U××7ÇzÓ)KTp9ÀLVv!æ1{ä¾-X0ÌÎpì³ÓÊô,ëæª³màl%×+©M#JvâË~LSÉÓo6°
«E:¢ äÛLQÖ.ªÂU¿,ߪc´~Faö¦¬V7a¿õ¶xjn<ëÌÉxÑËâïÄ:uÝfù9=Æ2f ¤¤/eàL ÊsmmV¾µµ{×h<ÞîÕós©°By!KË
|_
çûqôalälQ¶
à_ÞØÜ\ÈÇp¡Xÿ þÑs³JFW -²ü%
^[h ª-pW§Ä±¼ÑìïUcº«Kêÿ
7â(¯=»`-_
«
×Pø\9`tí|¶m¾×Ëæü¸R:ºÇ:[|ØÄq¸·××5_èì°¦Êïáû¢íF¶ØTÜZ3p³4+q;N¸ÕÂþ6¢$å
måëxöðCQÑGDÅÜHÔ¶Yw
*²M»MwW¯îݾ.
Û3ukÂlÞýd¸v¹ýÈ*·ûdy}¤×T#[b©9id»õb§»¤õz̵dì¸R$º%-ù[@vãañ÷Z¿x´R8$ÿ^§òâÇ$Øþ:õqð¤O`¸ìZãº9+¯[Nå)xÚg0À¤hÛ[©:Ãó²öÝs"\®ó"^å?åLG4d~YNÈ'ðÈ¿BHSñ59þt?Çë²üÛs®ç.Èk*o±\È]OÒn×Í|8ãiöÐÃZ>36Ê)öQ(*²B}Óúe^½ßúñ¾dÊG¨l|?óùûµ49ÿ;|(:~-æd¼ø3%Û¼çøòãøxs%/@
úÊ+|`øþ*.ü-?»ù<ùGY
à¿üø'þ-;^1ó®·òA²hÛ¦aÙANKo8ѱ:"MÏÛ0ÅܦÝ1é³Ë*sÈÐê`^å³0²[qieÎüj_)þ,ç-zÕp§óìV#ÔHvò}>,ÌÝýªÄ¯JåìpIK¡«Cfy¨2UNYuoEöE~tz¨ÌçJS,ÝcòN$90T@*»Ò1OīƱ~ä
»
½Äeo
ê05a¯{Eö§ÿÇÈ;é1Ôdi¼oÃ*èSU,¯¨[ŧªåê0IÕÈ¥-½2©9.ÇÌÐ1{R¨:U/âSWûhû4Ô1/Lø=^Ê[
¥wúPrågÐwä±¾mYLSà-¡NöãpöKÀ¯CnÓ9ärÏçÁæPÏó;\¯s¯üÅ'p^ñéîD`
Σ´µ¼ºd{÷oQ]á@³/oµ/È£vyÎ~9lû¼ïÚz{ìNÄ.]ö´mBQ°v
&/+¸Þ^Ã⻬¼ýü:ö©ë¹c#Y»IGrªîhsrÌÁ/è5Ï;J¿_Róhöwñ+FRÁ¦ükÍÖñ\ º Ý({äw
+NõÿK%mSmJºKýMÈ`Pm[õâýv!ãl¹ÞGõ×2¼?<ÏYx2øó¥
ÞZü=ä*ó25>gCQ*Èb_YQÀ·»¬¨3ÿ4øËÊüg7ñáݲ÷=¦ç¿_¨x+âþ¯ÃBÆVãáðô¡<4,àzÅÚÿõÁ¾mé"tùy¬¼y^DÈp?Ù$'Øùï&y3ü
´ØÂÝ·q÷í¨dèÃÑØÊö°i¼îb¢ïfÅÜÃ/+¦Md;Óv/kê>ÖÒý´¸Ö2´¶¯»¨íjºÒ@màáÌæÚ£Ü6r|ËçØK Üôã%d6+E@ÝôË¡ÊIúµÊ¥¤±Ìª\E/¼ôlª®Oý¢<+¢^
~8{ÓÆìõ@=FýBçòÏÒÎ}(sßcxnPªBþìÞ²÷Ã`FgÔ¨ê=pmT¥íjtkMuFéÃȶ(ÙrZn!Wµg«&£Æ0kw©
º\¥Ê:NjQGj©Jyª î%·S&k]u´%P{"ÝJ6Sß±
÷Þ±ÙkdçG¼yf-`|+Øì»rø¯áa
.·Þâ%keÃ`$é<]&Ï~/b2KY+.Õ0
¡Éfsfc°ða2]ÝíÔ©óÏé»e9'4çVjUOþZÛ¥vjcbÔ ákÆxúrðmDªÉx)&ô>U|4B
!ªª
D Ä~ýlx¥Ö£â»]±èüPK¼ÔðÄ
-EÑ
¡
JÞ'1NXgewÖàÏü>øüQ¥w&ADªÃýsÎ=sþþyDÛøLXégZ (ÝËT°ß3s¨D÷ê»Pî+DB÷£N_ÆCPu]10¼Úû¡Q±n©ÔH-ã s®ÒzG´ÞñP8¹Öæ\2åbàwÂÚÆ;Í6!w%!·±ÙöQÄTyLûð0YÀÊRKiù;»èÈäTt"ÆVZq(¢¶HGͼ5Éßy{\}Mûß±LÎâäBv 5vø¿ü°¹³Xz~
yX$x]^Æ©ô±lM/a
@ìcõ=5Bñ$ÎPþTÖsù
»K#ø¿4¯ý i*S4yyð:ùVìN8`Ïß">písö
k×i< ÔØºÃÌÃTʾTÎ,g>GÛÃGy,Tö8Zìdã3÷X}QcëNc~iج5Ç®9Î:>9ÖP¨üPKìW
ú.úý¨èÌ(Q.,çcÎûwæãóíIlb°r{*r¾ò®båÔ;~)áúWD(Þ{á~äÈ{éEÎ¥òz~¿Þw,$ ãѵ
+ÛÌjýÛ#¤Ï¼èZFªË}ÅÒúMµMH5ü$$׫mÌ ÛÆÆÓH`k)OÅ·\˳
ßn[J×ÃfJ$¬þ¿®²Ã&³}s½ë<@(³¿¿î¬sc0÷}>ÀX'X=Þù¡´±¨-/`@ì¢8FÈûqÐM¥çxÛÒ2}êy2h¸"em~
F½j4%jÀ
_PKïy
-¡á9ó¬>¥@§ÔF
[Ø6Ü~Ûr
˽C·(±£¥uÅÜÑMËpzBØ+¤£YÞ?ê©>=Ðç»j[|PWj I ¼Öfæ¸|5¦ªÈüµ!ÝÒÓô*m]¨«ðÕ¶¦gl\ËlÓÖ¨yàëZ¥ÎuØ«a®çW3*ÅÆLW¦áª²º3îùjC»ÌKGu2OVÊS§m'u×´#Ë÷¬1f/×n54Ï`º5ìÃ
W®¦ÒsG¬tm&ä&*IÃñ½
°_*Þ×^J²¾¼ëÚ?kçe¾»¤QÓe»§KÁ!«õr"=~íú4ô¢_B®òÜ;s=éV
c!ÅWKx.âõ0(°ô±í2÷"eî-G[Ù"ýnGBÒoUXWDÁqè°1¥ç³e».é+Ýñh¸£ef-$ôI#«àN¦øØLÆev7¯t -Éw
òR§âM+<¨¦OH§4Ü
»ËͳìªÈºOdiªÝ.)I¬rÓ& sT
©!#Ao÷ëíä-æ?>n89S0+Pc¦ä\i]:¶iÌÐ >3cXl_¯kÖ,ùPhÁAN"`4ÍÑÉùèí2Úg$ïêV*zÄ1èQ}zZW1Ëætm_=3ÒsóZÒ1t×HØi{e0.ýÜ·i¨ÁÛ%ù/L9µ¦åæ¼SÃ}r$Õ¥¹yF@ð
¢ÿéÁéV¡Ó'5<Oѯéí/4+*ÌÌgðYås
nhxT6¼lh
çeÕæÄÄìYGæÂUk>j¨¤»®êP$ûKwú}ÞÙ§çyÈx?U|¯Bª«çIª)Ûfº®û?íí__Bø~¨áûøÏêÔzÛ¾vÞªÔû'åãËË8ö,¯e#îËñ ág²ç4¼ G*sÙ6§T¼Â¾öèô£RðKFE;Iy çì¼d û[Ö ¾\drJí×ø_á·Ë7Uû~çý^^âcØvýÐÏ$×±$+̤<
Âk1£àS¾¡ÚRWA¤gÜÈ!Ê*
8KñH ¢°ÅW Éw¨+á>¢ºÿ@}¤¾~ïÔ×.âÁH}`ç½çB¤¾A[Äeú>^ÑP"JÔPRC~÷¾"ʲF$QªTÔê©ÈçÞó|DõTTO%¢ððDZËÿE|zFÚ#j`$èÙz@Ð g#¸â¶.¤J¬Ge¿PÀcO²:¼váëõUVíqÞ5-¬c6¡å0®Å6Jí ÔNtc¯M8ݼ5cï%Æx=Åû
ë±<C;íuàt²}âx
£øUZ¸ð/Üã&ü7×Ém¸E\ÍÛczD7øUã6qwÃ$z
>1˳à~^ðÀ8Ç÷Côü5¢!R2_Ç7$ñøõM|uãÛìm='ùuJìÃSxH-à;ü
ç?±È¯:J_DEFßKüRì^|_*±ìg,Er: wÙ°i«ïøSxvâEì>~n ?xÏ^ÀÖ^8yw?/âåçÿXÂïmE¼ú×ùçËÊ©×<3ÃØã^X;|³å°öÒíñjÕà¯^{ý
ç;̯^¯áÂ<,½÷ÿ
²
{4\Íh%
&
Ïu'{îNI?¶¸.5r6)É;H4ñÅ
O¹lÞóVCkN)Øqz:Öò§á*\âJ\£!
i¨uô9nºmçíé¼ãOAX¤c=gkèµ*÷îÖàE@Ù£ÁçÌöið;³×¬¨>!"ë:^ü¸þ½XÄqÊ!Á¨/¹.ÉvÎøBþ9GUÁëôDb4+â@Á2÷e§¦³#c÷=ýýHt¤^ô[õ×}eÛÂÍ»w;Oq"¦Wª`êZ¸6ƤMKé@!Þ%jf'+Fõ´!² ×ÓcºeoWXmO¶Öèú©ÛãÆþZù0ÂÙãÇ£ÀÆ×)ËH2
ªK
w{#ÒÇýÊóôV©ã²Ç½IÁörl2ìð\ÆÝTK´i»¾Ý&0ò¸ ÂÆærÞ¬0¬A=ng9æJé705mÏ9«
ÚB+³oBÊÝͼÉññVÞg/íÚºÌ&aÓ]x» üÌÀ3aOrLºù¾ºö±bØnfD¾Ý«â>QF½).Îjx7Jîw%sÞãHÞKD¢kx¿#}e]H'
35ikxÈ~¢YÆk¿ã#BþÑÀsdgý×3ñɬ¥áÎöOê¤Nkø´#øuLÎ$uMkø>/Ô¾àÖ%·40àLY¿Ä΢ £bé®n
Ñ/ã+*Åc´%NU*íeÄù¤{£¡Ú^ÖÁäY5Çôt¡ÕZ¯&Ë,yOö´M0R
gÙ»á6QïE+°Ù´º¦õæIÁÇsdqy-ÂÂâEbÚYGUÁæ¥>±¢*jøWñM|{EKuV}ø.,mN*تÀl%Èïã*¾Ä¡¡¬º?Rq /2ºýxYÌô´¡K»*íX#rnΣ~
õÁuô~!ô~I·Ö¡á×Bá7NÅîÒð[a¥W÷Ê㺢^T%§]¸oZxé3"¦(0ÊÛÀnq*~0@
G¶dΪDC£ßùc;2F8 wÿ7
#/ét»Å¥jÂ-+ÐT)½g%B£U"¦óÒd%¬³¤Bhµqi¼eßYÀçñRãø9Å
"~UÄ+EünõQç$zÙQí¥£ÚKGý¾tT/ùZªä±ýÌj¼0ÊðÔZÂûCe¼ýð&g^¯Jôhï$¿D:[ÉA
ë¦Se(ÁðG²«ÈÙ¼9»_ûPK«É×2
ô\ãVÒûÃ0s5ÓVÓ|GÔ¤Þüß¶`MÇRʺëÒ A)ÿm
L¬S]Ã{D<Ðô3B64ÒÊ$¶Î0þ9þlÑmÄÆu\£Ûî;¼Néi?ßÉÒê7L¥ÆSó§Èl¥Ï$2É3ÜØ4K9ãùø¾3?gÈ"ð070M, ûØ3îöQµ¶¥¸îa9n¡DÞú/hH'k+tÇ*ý1BÄ5iRÌÃ8÷#<&iÚà)Æ~PKXÀ`a
Ò²qÜaè=k¹Y>à&UEbð
#!ÜcH\RÌÅm·ÛÂÆCÒÓä'ÂÁcèL$/ú+xéLtýZ©tN4¯êä¶y,HÂO"{½V¶¸k; ûE<8blSûsWE©ÂåUä+º°«fiRBÐìdM[C³mù:ÆÿmxA½diV|Ô<Êç@;ù£D'-´[¢[FkTázÈV{g
í_ýD§>Ä迾 ]
®MPÉlÖ8-c
Ì,DCV÷Ù¯døM Ó¾ÓÑ"ÕcÖwÅØZ2ÞH7Ç}HÕêY¼Ë"e3CN`¥¥4]Ä×]
®d×gl¾5îI¿#eêY3mF(':VxTw"ýC^õê<dòJMË[Lw°ÎâýcRߏÐ'l
qçÿ²íqôèD^Û|5lt®ù¾C
±Ï»JWÏ'oÇ1óÍñÉbk³C®m§ñÆÞ¬þ²¼E?ÇV§ÀËÑtßãG5|©q4ØÅÆo¬Þ£øVã'8³kSÜLÃdQ²ì-Ë)£bYS= ÿPK8§
&TyI×HÇ&o²S3 ´#jVTW=6¾¾eKÀÁöa7§¬,¯ªNI`Ãÿ55ì
\}ÅÄ(FÀo1áN×nþs¸Ëq\ãéCé.üª^ä·?T½N7C4Æ%Hú;ßr´Bmu7¦äÀÐÆ~Åxtx#<Lv}æ£0vÂõPÓµPó(r-æ[
8HOÏ$z½ÎöÍüÙ¬Ôx³»ÙÚ½'ãÇûÙgÉØÞ?ÄÒÀÃòÉøV¹6ðQ¤¹ñé_0~´ZØüÜMãLRNÆø2ü}?µàg
ºä+joqKÞßQÙ Ulæq
ÅìOêDzFUýÉ[·y[
7_ÅOÆü¼O!ÿxëóâz-4>·ñío3Ó½H÷Á;vßÇéîß½VUì¾v¾¶ßÇÞéèmæÐ#*r8äm^ÅÑNÈ·Px«ÓD=ÃÐoôÀ9>ûèè'»ò9
Ý8C¼NbÃ81Zã<'Ú9\åÀ=Oë&!÷SqÌàqFÂ'µõãxKEshüÊ_`·½×'G{Úîâé
Ì¡Î'tTªºsHâ«X.tZÁk/Ø>ÀM®J×÷±(óÑit¬bi/DÓàæØÁèK½=ÑWrx³à ª]!»«mûɲGg^ÄNJö6]EÐwð.O·25ïá}ǸåÓä¤\ã'üã±ÌR¹uyªÉ»¨¡,(>Åg>ÜþWÈH0ÕJèð6ó+ùí|É_ý7ù?Á*åíå
(p NÖ>5þæ.¾`c´mÖe®ÎGàõü?©$ø«.©ÍòýPK¥½;É
)ÅBH#ì+ü
S¸"©«"5Á
aHxµ©ÃîG:$
Hð@2 Yа'" ᤢN¢¤E\ÖxQ&J æ¦êª¡M2®ÈºifK³È\Ý5\³ÉJl³PÐlB,ÕS#5ô(+(<e¦¨°Ì@Aê$JZ$Qö Öáp"0aÊ0T¢ÂÍÂ,
+2ånáÍTÈ¥YäaÍfÊJló´HËf<ê4ØCÛi2-S@SÐ^2SÔ:<5Ì(iÕ¹ ¬ñ^£\*©
áí¤h!%ãLExþ=Úß=CòÀ³ËöÈöƸôçØR}믾åÑF·ôïÂöûýëOFËýçß·~øÓÓç¯=þx»^½r¶öèÕ§g×·~»Óo??~êáÝ/Þ|{yõÁ»£nã?PK0ôv%
FÁ¿?,X°¤¡¡þ3üSÿÁ, PüÉÂÈÀðA@y#á/§Ì~¦f6nL\B-$¹t²0&¤p<8ØÔûOÂÀC¢èÉÑF6A+ÏI;þÅÍñ¸t¶K´IæÆÇÇnUÏéT(^h(¯5e§5
EnW¡Þ5Á(XS ¦¼-e¨K¶»dvø*ò)hM|ðø¡gv7¢>ìÙsùÛüúýã'XùÃÀµeÛ?±ÝA`·?
o ¸ï¿±DaöÐ:¶N#sûÝ5É0q°%'Ø.]^ÚDzÅ4Z=Ô¦·Ïud0©!MGY$ 3\îHKþ¦ç¨ð²ÑêªDmëD¶CÝùªcElzÃ#Ïå®Ì Ì÷¹Üö/p÷*ÆMR«§c3*¨2»¶Ë?Ã=.>Y{§ä]¯o9=KØê+Sò³í3ÔºÿÏõ1):5/8UQú»,fq
4!¸«ãN¤¹KbrÉ0I²g9*Àè¨ÂWÑTã3ÈÇ |Þ[§ö0ê¸ïëXQsN`¥'-vÒ!/ù©Î®ÚIú8k~ÐïSùi;^ ú|ÛV}®u¸®z@¨)
4#´nV9GýÍ#O2ê×°+¬fݦÈý5³6Â9BûâFDkïRHªFÞ1IàaØé#<ù¨ÈÅl©öÏ0]?CÉLýs¶UÊ
'7Ø'l+¢°äÿ
|riæKÜî¡/R0FéãÄNómÌb±,/ÑTÀ¸âãKÜ äëXÅ
²Ï²j
ëDØ@)ÒSåYiÌPKFi9ÑÁvR*=ît0°ii]^$ólÀ
k»\â}Gd.ÃOCî¨ÛC<<bP{4Ù`⤹DEÒ\&Í>ª\*GàêçîÆnÍq
ô/
]C×sÖ9|ª
ùªd×þPK@¨Þ±
V¹AÇÑ(¶iÒ¹²¯¬¼&öÕ2±Ü
æ?lD2I(Áo/þ¾e»N¶Ø3Á·ûìqì2õ_(Õ÷1ûÃõ],99ö|¶6;¶\ËX¾±µ½Sõ}ÂÚÿ`Åq,f}/Ö[ÇCo:Ìg|q¨(ÿPK¬»º
£¡R¡RÂõ¼QB8 £D¨ O«¶PBm´u@´è˽a4 "Nm°óßuÞ¹WÆ -~±äÛöºAla+¶K¨, Ñ,¡AI$ÄËbÆ4CÐ,[ÕE.:¢«VçUÝùÚ:T÷ag;°K¦MWÏ¥g'TsTH1øªcRI)¦&Þ½ÅÔ,ý_b¡Ù f#§¨21¡&D.lPû¾b£ÚßNgÒw!&2¼ûÑX2KÛ5M òøÖC±!Îêe¤ÍIÆt(ZÀ³baÄ6Ó»º
§§È7iÌÝë¶!¡.z©ÐkQIhÂzÆ»yI-p[U¾qÜ7ìf
º~YRì¤9ÑÓÈsìPV¶ØÄ¾H¢Å®ã¥´Hâ¼²Yåº:¦Y»QîúM&h*[8uþÖåôôj.!8ëÖÓVƶ\N´s\®*Ì 7_uQwn°«öÑl2vdõÞFkµ8ëhÃû¤Li{Ô±þO]±¦Sî
[Ic!kobH\Ý·$l^û wöõåéÓìO¿jä¼÷CxP.KaÎÓÁãlXÏMri½_VReê¬1¯f±ÃøÌ¾-JÜwì/9Èøò'=Áɶª#}¡2|
o$FùЯ¹ñp]"3/.38TͤQñ/ÄWÄ?~ðYÂõ2ùÜÈ7v¦¥í.*ÚÚï ªm 5ãwQ{õm¿ >Æ%lçvS»¦iZøÜFX Çk\ËgQÏi^Ýürr·Î
F+ÚZÐNXWä÷"ÐÐÁÞª}¿âþÁöªÞA]u4Ëå]ɳÃahrÏæÐ¢õCèçIIÌ
-M"Vû%
½4±fß°.)ÇÁ8úé¹¼ð-ËÏ_á,Ü: Û
TÚå\ødyïý÷YDª°Ë,f=#´7˼P ýÿFST¡*üTªê@¹hÐòíPK¥ÞA·
F
~êÝdÆo&üþ(ãiC+R¢MfæÞ¹wî=÷ìIþúþ1Ì È0¶¹vlw7²sÛ27#×~:o1ôïCs»{³³/«¡C²u«²Å#
t3ÂI¡£z·>¸áí*Ã¥pÏÒsԳܩé"C*Ò
ÃP3¯æyäùïu&åtëÁrÇöï) ¿´dÓ»eR¦s«ÒùÕÏ-0ÄÞ;ÉËd+ý0Ç5{Ñ
!=ÊáàèSÖÇ$bHmW¾v¤¿je¯*ðmå7/ã$TGÜé<
ó#a¤SÛD¤¨Ve _¸ìPÁÜPúo
+E;2ÆÝV½ü¿ÕûÖMDNHõ²°T½éSåg`´$}ßó5Íz#9³Èÿ%ÛvÐî3ô2\Wï+ÂúlñÈÄ<nM3ϰqÁ4ÿ¥'xª¦£/ÄkÂv"_jdÏÈI BVlÄ46ç
P/hä-/ò«²h+%$Z0fU?ªYRNÁA ̮⠱ÓTâ#»êT¢lóHmIòÔë¢Õ«ä'ÉÚ ¿Î1ëé:T£ÖLãÖh¼/úÍ$í¦~»¬\'ÓI/q7éd¸
fÕOôW£b5ë+F?ë¶:§ÑDÕ¡Øð 2ãÞ1æ± Zã´&N°ôSg³V±z&«
p8Â*qUÀ
ÖÈ*¢xÕºÖDÝEYj_úi|ÄÙoPKx{ò±
Þ²%¬âÝò¥ä;×(ߢñ7£Ú±úT7gX¯N½æ4ëØpª'PùPKRW
*|FrÄVpgµ~VÐôÐèGEwF!û±ç{îýúþøD[(rÐWÚúÊ¿w-}ú¾ìw÷aª%zÂkÿÞ»¨·dC;ÖL÷q@ódOúÚ«4#«*ÐéF cº©â![s@H^=ùº)µj0ãP1î°²M)ÕñJçNb¥&RcÒ
D#"¤«ÊçáC]v¯E½ÍØLµÓíè*SqcÇENã;°G7ÐBËÁw»8ÀÉÅÅ(IìOs]S²?u5[,!G 6ÿg!uÕ »
yªÌé_ùmCdËg¦¨´EÈ
àc^CWàÕ
êµ¢<á_ãßT¯éîDïYnѾÃÖ¿<uÔ¼¿xÄÇÃóbÝÆN¥B&K¿PKRÀµ
ç±ótÛ»[ÆpxU7°Í²ïî
%ÝÕp*.:Ç{Üã½óÞoñuâe>ÁÖlw°×h.DÓq\W±¡ãë
lä
ºàäQnë{ëeѳP9Ú;
7QTqÒêªc2ÌFÍ£Vp·ejQ§7\Çq|BïKGÆ.£"=?¥)¡re8ݰ3ásÉÜ>©£ùã/
~Ðz+ßwþ¾H_QÛÈ2o: ®ÿÛ¼=:6e£üܰÖú
q8¶$©l,LʱÙ!Xáë^8X¬HwzØÒbDjKRËnà|Íkø0VVbÐnJeÅÖ
àó´{¹å~A~rG¾Ðúª$]#éFÛ'{áÌÙ'ÉÌ>Áèo¡åXhKEtIôûjÀNÒ_M&[¨l¬e´GÇ÷£MbòÍ&Þibî<MäÇm¹+¿PÒòjË¿bg¦øÅ>yø+w«O±&ñ¾J
|\§G|»m@¿N~Û)eÖDµÝÃÒ1Dâ.c ÅEZ¹óeÅǪ ¨ìÃQ ®Ôñò*ßãgåLHÝ£6ø6jDÁ*5Ø!©EZ°.I}q/{^H*i¤æü
PKyë,Ù
ÔGS«(ÑÆü#4£ÂÚA*Ðh3êd(~Ø)ÇëÕηÔjkbª¨H'$Ú©vlF$?Ø0dpK hÝ)w³Ò¨ì¾h·µÒ¨ù¨`BÂÃÃ*Ô%|sõT Ö6©þX|tÖåìc«¤§2ÃýÕ°bM.0ß¾gad×Í
J>{ÓévÛLÅvhØÃkÛÕ'vÔº+Ä<^øxZigPd±Þ3ì¢6úßæ È}nvç:Ç[ÊTmSr\ª«à§Î¯;^GÔ?¦jzîZðÁ«3< VÏÐøUÑé3Áù^JOTÁpLcnÊKõPjüM§¤rÆo,þ¯óãÎÏ:òJÇÁRy¾Är¥M²~ PK=Áã
ëØ!±ïFµðÄõû±[ëÈ0zû¾T¥ "Ìı¨yÂï×^ôÒL¤¹QTÃEÏ&&SÇÂ+ELB(´Ô¯8'zsÉÌÁ[?:ë&£C7,m®¶Ç áÉ]Ïêåñ°ËUºt3x% ©r¥kÃFÖB³6,Lg` gÃĶæ Ù¶ëËçñQOª¾ß´8Âë
åjÿ<Ö² KcÕp÷XwJÅ>aþ"a&'ýH»MÊ0ز±ëÓ¸
qü&V¸ÙÂqdêí4¦ò×Ѿ
úóöÚ±q%7q°8fâ.a"⹦Ë-ÝÇ
ªÊXÉà)6þCFSß]ª}áKu¬cCë¨ñ*ÇØâz¡:A$<u-âHGÔ"XA¬ùÌÕ£Ê$lè¥%Ø-í4=rϱÉOwL¯Þ¶3ÐONoÈÏàׯ%ögØzÂ~ÿÙêG\®®b®ºvü»X௥³úJJ,ò/ÉöJ0R¯Tß#ÿË]¶æ>áNñÖæ&Fä9¦
ñ
ñyãIÂè¼Å±Øæ2Iî#<Nâàç7PKwI,
ób$&$DY%Þê+véi%þ,Eã
^ø£ï)¸.Q69=çýzçíyûýǯHb¡ke9´Ý~h
®+ü|Ucð·¼ìp·_~Ú+ÐdÈÅ^Í{Ð0Ãp&8²e¾B°íi¸utçÀ¶¨¢aS Y-L/)©¦÷J0$EÓÎÐ0FóÙ¶í'áqOøJ©l{wLîÛÊ8SJ"ÃÊT¶|$&ýÐeX£áÃ,·,!e~¡ö7ñСÏÅÐó_BNP7°e¸ãUþ
ïW¨é
n ü}î
ðV±¦ð®\íx5\#>ê1*¾jËÀ
äu\ÇÍߦâ4
ÛsR(9&wBõI-u)Et°wraç?:Ù÷½¾Ou{ܧF6°©)3d\vÂò0t"µ][¨*µÄ±4FÃ6ÉxÃ0ShuÌÔtÜǽã
¾%Ûj.²±°M5ÝFKMK)$*4e)ÐÀÒÊ©±£=
õ$hé#Û SìÈSúliý#ÞG9¹(KEÌçÚ÷<.ÐÎp ¤ÿSÅvK°ð+ß°=>]8F¸5±Q}'§{#<sD <'ªXC
¼<%`w" zônGÉb\ªþ PK·æ@)
&#ÀÕÓ:ÕpÙÂ5ay¼Ó±äyºå×cxÒ¶s®ã&a¸eiBÔ¯¼õ0t;g&¥"÷k©¤$ÅÙ¦êÛÅU·¸Ó-áú¦jC^égHOz=âVÄa!ÙÚÑ5
"¶AÅp7mG¬ ç¹»XTï]0ÒæH9Z'·Ö¥Î3"Û¶ïÅTv55g ?Q5Óp]á"Ïæ¿eWå[÷@ýwÏfü×ÑËóK<zÀó¿céoèOg09Âðç 1ÎÏHPð6@¥¤Ò11~óÌãê
ªþÁïú[ÅOÌcðÙÍ7sǸî>þûÓlG'?ø[¼g·bÖS
üIë(¦±en>~ֱ¬¤xlÍó üPK!R
wøå:âlkßiÝ¡ÖZý©{{¹ô:E]w
o9¦13PùÂÑa+[LÜcþ+vpí5¦_p
-àg7<g=ëE¨?PK8Å
£mßksSèøs{QÃY«óu§â¡27ñYÀ
P!¬û®º·1ß±±ñAbujº:·,Ô
¬EX%Gg9.É\à¡Fp1ÕCk!ÕXíÊgg#²èZoÒ:j¶¨Ö¦l3
öüà½
´[^Ó7,Ow*áí,7Må¸ÁD6}6ª/\¨ÿ7\¼ùGtÃXSt¾ÿÜ
½ÊP^6YK6Ýøº-;LAÄ K¸7Ön¶cípÁøWAÝÿÁÓ]í_èm&þo×k¶¶J½9H´}ààþnþ!hÁþnð]]Dïô}¼¤
©:'Ý©)öhC%µãÿê¡Múá6h;Æ;GgøÊÃGdzès$0z¿üÛcs×Dí
þØý®²¼ÿÙÌ|eÒô5öϱenOmôü[]×ÿ_¾ ýÐ\Ü#Pf)HÎ+)$!@ùhvXägøí-þ¶Xbc Âïíì70E¡)
5Ô.ô"Ss8ãiced£è{j
?0ÙPlnúfK#O©#C=ë>¤ñb¸hA)ÀzzÂ!
¸-`ô"ÏÚM¨G̶h±NT
Z
ïj÷
Â1ͽÏYáK.ñÍñõFA¯Ýö×¾mô
/cÒ丶·¥és¡ÑÎðöFT¯ÐÝUAWx« Ù9·/g æù¦8@,dÓUÏ 9X[dÅl´¥Iu;Ú.À]A9IÚ¶Dqº+°§Å¶PÛ
f
zÄ·ÄõR¯¨1Å!ÂÆCÈ?B\¦åµÌé*QÇÊ¿:3Yc(9xÄ¡\5츫««½â0SÔ3°ÁMrG4¢Mòòlzèò|èq¶u Wa§dÍûhFr-H·|u;1WYÅ,ö#MÑÊdÝZ|¥9
§ºó²q ý}>dçØ§ÝËÉrÂnÎìQØb6Ù°®°¿]Õ·qsbDyï¨ïªÿè@º ¯Eî7r1Ó[,Ö³ÁQy&
Úð ÓlnÿʧÏÐ<!Î4Åéâ,n>Ù{dµK2%Xcï¥Ý£ÊÚJ»KeÑ|ZÀ~ê¼DYm{µêôÖ¡W\ÀnÏ5র¶j¸Õéíu
qQ[pSY@ÅbbOeKQæKÄe¦¸5ÆÇ®ÞìðBb[íÍGîpê½$»1+OðÇ
÷ã¼±.-8<E¶[b3{³¸Å©¯SëDÛ9{ÄÏ*Öwµ{ZóZâvT½â6ñA¾æÂ1[êI¿ËµLóh¥ñãÚ5Û{ÔÎã3Ý
8¢É®múmAæ2YÓsÈ,!.$bÎ1¾Ý¢4¹D^[²5³{(ÒmLÑ"¸T§aU³äîv.°Z/*÷à6è%ÑâBzYò!Ë6]¬¤hsfl
rj9nð¯y)kØUx0XïÙ!r'·ÄñÂÏÆ
g/-µÄÝâþy¨íyAÖa\´ÉÃAÒ½úB±Ì+-ñOñ!¯[kWÄïùí&êÖl,p}8ìdØYN/ñi¹%7ÈgSfÜMLñÈV»ëTø0¶<gÀbõ9JmÊÍòK¼.Þ`Ò³ÄâA~ó[4Êȶ¬`Êá®GLÙÁ§o£h4Ïî´èCú!`ÑxÀc]Üø\jɲ?-ú>ã·,1QLâ·¨EÓh:OîÍt ÍmpWÍáv»)ôØr'<¶¨'»éWFtjy)wÈS-ñxñnÑÊøÎ´Äö¾|Ç¢Éö¾cïïñØw-*£q<v^â 'Ñ[éßêT7òS^Èzæ)ó'Aó2nwjrX_¿Ëï3ÊK23Z·õÈËLy¹Vh[ãаfMïé
:
ñc>>ª¼qÑÒºÒWÈ«ìÌ9ú&ßDñÇ_-ÊyöBm'Zò:®¶O×Û¦ÂG¯),y#~ûåMéÒÎ-i ÍÈÜéLwý4¢"| Çîy£,}8¶!·8×ÍÜS}9#æbQ¼ÃwêÞøï¶¼òNy3²Ó÷Ø#}|êíÁöX§%ûíѽgBma¸{í¡hÉv ¿«,y¿|Çä«
Á®.KþÒø°;Xµ'=ZøÖ [Ðø)äîk~P¸GìÉ9pOɧÀ3\:ÌG¡-öD6DmÁ¤ Õ0/¹Àæ'6!å¶ê|ë*Aä/Û'Ò?Xò>=¸D¾j{¸äõLzóÃ9¾ÚÐÓîçNüô\ApU¸£JÝ6[eõ!ìX"8É?ëS(ä6O/@rð?¡@d¶ê»v=d'Üû©É)LÓ¾CÒï0ïæLéí`Éüº'ElÇ¡ ÛÖù)ßÿ ѺîVPÚ`ìcAÇ4
í¿ÖoD(f«M]¡RòÇìr)ênÅ^´ûf¥!åF}ÑÞ0fûP
óí_O?Òª»Ú+ÿª}v_Ô#?ã®ÎðvK~ÉËÏå¿íVhmø
Å:üÚ¢sõ©³ü/w4R0çúx8sf.©&Ó\p<ÊÈÕ5NÕ0viôª|n¤Bov÷t2pxMUÀ£¨-íÎ aÑnWÛQVF×ý%î+xT8fCâKS«ámFw7¥Üt<SÈÒíKöõ.l=jT¢`Á·ÕÁ®@b|LbËb1
Ù³Tãa/åéß´rª¦«&%øj£p¾ûL5ZM±Ã¤Ö5OIÏWÓÁ0_YãÊÐR3¡,8Ë®p#³¡ZA+·¸î<CÁäyµÑ¥KT.í#ÕáîW~¿fg{Ôj¾í¤ÖôÀýì´ÔB1ÙTX+MZ}¬ÖJ
Å×FÔel1½¡Äý<¾¤Û×êGܾ.P?¶¨JP¨+ÙuöËF4î±ÔÕkß0"»k©k¹*ÕuvÔ¹Rj©¸+f¨ùÛÅ@²±¹©·ÕÍ|oIuæÙÒ¨È]NçV«ÛÍíýÈø`³=¼>ávÛa¨FNÆRwhð|ð:>6Q¯ê·ë»rpªÜõnNg©ö©{åÀ^q±GÝÏWfÝ¡9ö
k¯BÖ^÷¾2Ûþ¥©P[r
üÓô(¢e²)4%·Õ¥6Ôãê Þù'ùvæSiӦۣỪ©¿VÏræßpûYÙæTNìùì!1þ[Sý.#êÛ¶~oªÔ`]úþ¥^æPMêPýí¶crh.ÜÕ«ê5^þ'ì}(°ÝÎÞ`Ê_Poò:%Ø+%php.÷87ÒØä%õ7&÷^Sý]½Ã]o§Ò¢ÝÎó:é\H;Ç·Ôû¶Ä?°ääëüöaF¼.¦>¶¨:·E¦þEWªOÔ§P~ûÊm«T_ð6%QÚ}ÛÁï®i]øR}ÅåkÛ^ùú/ÝÆXöÃkt¸5ÙA+2OGßÄ!Ñâ=jD}jiùì©Þ3<пH½tMdk¯s7lVÎëÔ9<¾Q`ðF¡%k%_a6b¿xÎR?Ñ
Q2ä¦.õ#L£oZ
1ë@1Ê4FsÚ>̾A\jßäÆ,c¬¾)li5tC:ò´£=t§Ãh©çlz&RáÞäahä:°ä×
¦SÔcJIßfÅ|l>VS>»ò%®K3R:î)@<RcOt
,c6mÜì`«è:d¯ÆTRöúÜCþlÊçñ&^æt$ÝCâ©öKç±¹Ö7§
Æ"ÖÁ;B¬e,µyDj\¶É±ï7·¹ÉNå¦z
?ÕÇí^ãàdM
p,ª§Ã4éÁÓ|<w¸q?5µ*iin¨ÜK3 [åeàh{mÃ8Oø¿#©Õ}6ÕÀ³xj_5§ÝKíWÊñÞ¨WØKù- uß6QF[L[©SË3H'dð1
²íjê§Ê8Åâ´½NÎÌ:¨Ë)|rÑ¢oë-tzPIgëN 3[ñ<;èü¹²Ø
«ö¿Ä>
ú:t6éÜKéR0Ó¡À/ù:½¡½©Þ¤?Rë<³ôo¬OÒ26¿µþ®\zÞʤç<Ðs> _
=.=ôCÏBw]zêË6@ïµ²ôÿÃÉ\
§w ´àªæ¢æ 2øPÙ;ßq°Þúö_»]ùzü§)Õë@2øÄÙY¹Ö¢Úú¢u¾lUÊë§ÿôj¨²µTý"¯Ox*îÃø9 á^DI\¬äßq1nSeõT
ÿ|Ur»lööó?Æ@Ãâ4I(&-á Î#xAü(ÓHñ;°ÆL½(~ïqãËl?åϨÅK¬'/³kI"ÖYT(
ÉÀÒ1"
ß2W/Äiæ÷UjRÒ¥5TðfÀ÷ãûS:>ͨ
|c¨D³ìMÆÒ19ç$g)rUçëâ
g§Ógãü³ÆY*þÊ3 Þf¬Ë
u°N§b4ÏI¢*«ÏÅ:JüÝÁúx×ÁºÈÉàÄ{ÃÅ)ýâ H
À7³?sãà:îô#-©!É#Y½xøRÐøøO\*3éÙEFcå,À 4ã²HÛÆL8¢jYâ $W,¢ab18\
îò,
]IÕ¢æÕkh)ËÅÚ®võÒ" ub®ù
CòÝÿ£Zóûåè9ißÈñ¿*.'TUÆ¥o@NåÑiM<:£s0:ÏäáYqY²:wÍT 6Øðh²h¥r±DEÄ1´¾q5¢=ÅÀkÝRh¬¬yr¬är/çÊxä<7ÜàxVq\ãò@ä*
ûäA2RÑ 0ÀrØÀòÈáIYF+ä·²RYÓÚ/WfªEw®Tözù|y/UÄåêÆ±@Ö4U@õUø£A;Lٹ̨Àu}ô=~®ï-Ø#ÁUK\ãåñ-}²½b@v
Zû9H1%^¤|¤W¦ø² ý3^A|T¿þ¿)UQLIþÛnÁîd-þß©»Ôý!U̬x+ãjÄnëæø,ä¯H0ÞBývÊ/vè«â£8¡ü7IH*nÖØðMÕ gÖú¦5ºu@qv¡&ô«Éýjj£Z±¬Ê2#®fDU\·.3ØÿáÄk¨S·î¢Âeù·Uÿà-Ï¿ò0«òÖ¼=À7
ð¸º`§Iï"ùûxø
Ûä¤I¥´\U©9º1q ªÖ6>
7
8úbçMò6gwR×ÒR5o¯ZÜ0 ¶VªeýêहÙól6µî(uTZá´Ív¸-¿dDÂ]UÝ
0ÇÜ]µÊËÙ`×h°æ
9ÞnÔ®Bòê$Ìaß:-W~§éÒ¹¢ª_ÑciùÉq4Q§©rBJ©5ÍÍø;_jî@K¾[æD+ V*©¯¢ ºý\ª6èþ³:ÒiA«£öÀ<¤*âê8|hÛ§eƸ:a¯êiÜEÝ
¶ÚÉ,UeÆ>Õ+ J~ä²<6WÒd½®,o¯:+KÕiîÂ]TÃsÎ4®ËôĤsw9d'¿}ÏýÆf4iwë¤ $'#öÑd9
|rd7fÉY´XSMu²t¬C[÷")?UΧ+åºA.¤äbú\¢e¾^wÜ|ov/r*ÅÕyZæ³hZ«ÎÇÞ,¢^
¸Ðëãê&hÛÏ*JÕ.h^om¨Vý
bSu'[Å] <ÌÖCëe4À2iºl¢Ùr-Íëh<Êõt°Üb-+:gÃ1Úâ\øwk¹^u(^áä#÷g¯¢bN÷ãªïJÊ3nW·SZº!LðHþt¸üDßw«#àÉÜ0×¶Ç»2÷ò°w,Ø;FI?XÜBd Eä]OvºÂo¹gùzÖÒ
½£jo¿º¯b@=
¸&®yaåÝ))p¸ÆÙóf\npÿaLܹÎÙaϰ+*ªâFQ¨â$Å9?¸QOháÜ_7'1ê<\ÞOù¨ÇåðúÁK<0÷ÂÜ£°ÓÇST¬Ê¥¤Ê9GF®Ý ³´:ÇAQʹ12?
íûtø
Ar)G¥øßJtËA[rÅÆèÖ~cÌ^ct¶aêPöDà¶CÍáÿ^¦a(ù%]lâÈ]ã]ÐÝ)FNªè7|»hXÃ]ÆôRcfܨT{jFäõEn?Òv´¢w0ú.Dø8÷a(ä0blàë®<ù¯U¥på¹²
cÕ5)æ7ægî#ìÓÇÐúOr¹_?s@/vîæÄöÿ<GË®ÿAÆ?Ïúµ¤±ê z±LgoÆAÎÝRc
s¢aTݪ¸µªß¨Éh½Ë/¡e_)¿fýavfÍ7VêûüV«u<ªUFïßGr
e×uÃCu¥ÜoÞP²8CD(`-ePÊKÙá{¢ðjï
xF£ ßôdG@vgNÓ`¤ö'ü×Xk¬Ë^Hoe.µðc½³pcº
øy£eOÆÒog-Ý`lÌAl0§/ká&ãÈÄ®È\Xµ°ÎÊZØoAªµðèÍX¨dÖÂãT³p¦cù²PîÉZy|îçf®ìËZé§÷s¬4Ú2W>µ²='ÎÔ{8vGiÖÊ@ÎÆÖLY+;`-hÉÜÌéYO0NÌ¥yê¾L?ÈZÚetgSÞÛH'd¬FHÿ6zð¼
yÐQz|é<ß³¢Øy69ÏVçyó|Éy¾æ<ßv_ÛOYà<gÚOuó\ã<p·F©óm?ÿPKmÛ+
61WîÉy?!plI/Þ¹«õÛu/0¥ÌÈxÁv/°ÔÜ2UÉÊj§n㣽ק<O(¸r&WåãÐ4|pbÊù3)|Jkk:6¤]»"ª;nluX7×VERÉæsY\[q$+×rýçknû*þ5F£?þXà>à8Átà)fçX\âlàª'\»G8ÿPKòµâ
¿¸Çŧ¼8äáÔãÿ®ðÖçÁcýÏüVY>p
µ=Ê-Çxè]?À#q8ÓÕjZ/)¿ÓÞtão{Ï<¿7rúÝLYË[r
ä¢òþ*«ð_I^
·¤%{.uèt.Pïl|GãkÀ4ÊON΢d±Dß½» K¸7Sy%Ñcç:ßÐ8Çò¿gâàKÐXâf>ka%°Wç1ÖTh^PK¡eÀì
U¥é´}Ó äB6"ƪq(£ºL»É¬mS`ázå-n³ Ýç\ÆÉ
5;=~µ
#ë»gzkzÈÇ¿:15}ÌØ¦1+ È-·63kq; éXÙ
7,OÀ?ÑüLSJ±É+É÷Ë·dwÄ6{úøæ1ıÏÞ6Ç.SùBeí Å¿Sr(ûòàtÆØóÙÚì³ÀdWeÅVQ|ÆÜgßÜÁ§1ÑÁu5¬7Ç^t%,;VG(½PK²®¦z
±ÿ¤`[èC?J¼3¦P
]îÇs~#l*£TÉÄo¤ºL¥{!â¤+á'aT?¶@¥7öÜÀSîyÄ7²]ÝýüÌsÅX¨ÄíÈ?\*]%"/sÉPÆõ#Ö>î-!ßý¢¡H¤Ïw§ÚÞ,R£Gȵ d÷=6
6rXp`a>©ÄYzÝÑ
×[ê¾ô¼HêzÒÌiêyõc¶é½ !¯D
68{mÝ2VËÓ¥-¬
þPøWm¥
rPÆ×xC 6¸óv7L#_|úYÅ¿§j~ÂGÅ?§xq,bñràó)é½qÌC>6^rípvµé4b±¹ÿÅoS2(}skt9s8êî
^q$¬bm¢ò~¢oÞ£¸ÿEîØÀW#²úèlUÉ f8Ø2,28 ôPK¶e2N
ÕÓr_PKÕ½d|
ãv)wI80¯"Ü»6+Û*w«"¹%G&´û¾®`0vÎÚ5Ó"Ñv³cXt1%ÂR,Üôê9çUcÈ
Ö$;Ö(`+-²?*cÇäÿ¼&'²q3óŪév`CLw
c /,®v©¬`ÎPKq3Þµ
òÆÕôªòãªâ1=>°PòY#÷Y"ªìÙíq<è
ÎÇyCyѬ ¤êýÐkÉ×¶ògü²ËªªêsÙv,ßWM&¯·.UNbÈ?ÌqB(jd\³j<»
õSç:îp?F´Ã}1]þñråwËÇÈEy®cÑõ7R|'þ îòI÷Q(Ód£)§0}F|ĺÆÍÊôGÌ¿Ð*Fâ
JA#\(@.ºJ(¤þÿ.$TÎ
Y¾øÉõÆñÿ`'XÃ_lD²¶NËÚÄÊ2PDo¢L'ÏsT°H¯æ)z(Áûå¨FåXüOûPKãK
-Ú&Æ1)ÐÍ-
Ä
e"d
1´tÌ×u#Ä:zöc.Ȳ\ÕÜ'Uå¸Ù:ïJÍ,¯3³ñÜáhLB:
Nt£-ôHm·â©ö´ #|ÝË×ÓNY=¬o,«Ú¼\vγbKwQÖýmÆü5ÇþRS³Ì¡YØBe£Z)«²/0=Å6?kqi)L7/ùù]&ü*úµ¶¯ tîyÍù5¢¸@ÅW¯êÊp«IÉp3RòÀLQ 77]Wgæ%c½=_Ö|ï㯱xG¡-Âp
¡ÓËÊ5gm½Úöd2·hâM\NáÆBÛyµéÃGÛ«xKÛ¾Í2¹TP ëYâO¥[W;|@a&¶Áfu,Ѧ(rÃñÂʪn, 6xOzw*v lr
S ÝàÏh¶+xw´Rw2Í.·ê¥> %éÕ½¨=t<ª`÷1P¯ MMrü¹irÁÚùC}X)åæxûGúXà©Õ*[W`ø?5O7Aá#
õ¹eÇý±æý]æWvz´;{¤ígø\Ã=¡6¥ôÊ
Ö2éoUUTµÔôí5åÝW[ó0H!·tL±6Jºã@½&k7ý°HÖu_°¯ö<´lVhÅõ+T©VÙö« B_²WØ/-6O(ðç0Ô¹J½f«;-§öOQMÁf+ËÓ*:9~ìø§¿yö ¹Ä
¶.²PÓ
Üí*iS©¤-TZìRúÅåJYqkÐNZqAÕÛ¾cy³Ë°3¸\°ÄHñðF=ÑU±eºï»Ù%%ÍìÃe\;ÑÔçOhÆUª«¸Õ43k"I{
®Ui÷ªø~-Erò½¨-Vì3PåËÉõzrU¿ñTOvz>xþ³ºCPö`¾À;¢Ht[ɸ²¨ü.hÄgw(¸R ¶Fæ^JàÛ^àFº×Y¢7
éfôc
êùéÅO!ÜÆõ³KÞ¤éAG`bnåÂknð@¬÷\ç[u»Æf:½«Ca*
qTPvð@B>hRa è´2cn^¨1AêiKjÆ
¤4ß´`¢Ûq\=)SXÎ
Âåèkz é% aÒ·tο|ÞEs¬*ÿ-¸3;pãÖ¡sÒɸުV-ÃÛ¸`ƽôjÑÕÓîõÞ.ØTØ.§'î´Üa'ÞJipÞGè `WftÀJõúé§Z³J¢ÏLÙú¸Ã6õpnÇÙýOîbfáç§N¦·4PƧ@È´¶c éIHx¡^½0ÄòIx}iä¶Ú£V2Íø¢©þ¤Yùiu÷:NbÄv5×ÐçfIý'øS¥þ75?ãù!³T¶þ\ÑÄC¥÷D{æí0aÇÝaµÝÀ_à#Ëñ>J[öÐ0ûþÔ z_Iª7ðqÿ2ù7Æòwä¼lϬ=F_óÏ¿v±Ó«§¥1H+pJ°%²éýó0ÃãÌ
ôÆ=^Ëû¤à¼nSȦ¹DÓp3K´#'ÂUNÛ ku2tÝÉ3 á³aѱÓɤ¢[H8Àð)|Nuÿ·%8°&ý÷"ß¿ãiå»|¹\äºe×eç3xVy~qi¥\ÂÂx^ylÌ%Â]RäÖ07Ëø¥õXÿ=^дÿ¥YïáÂx1oy¿ªXÊòs)<N_ÇKzbµ8,O¹l;'~uÅ´uoáÛj¿CÂúu);¾×ò3dß
ã{zëU/áû~áÓ2UÈéÏuIs('àðÏaüþ%RKRï;é¦Cøa¯(Çàø±Fñ+øInfÒÀÏü»ÎxIÀÀ/üÙ_j2âl> üÚþ7&»A;Á«ìßýß0QðúvRþÃúO&½ oÛ1¦VÿÿÑùÿ-ÌùëÞ×KJµö$µI Y°ú%k¥ÂR.Aò±½u·cÞfCBR¡xËYhÐômV%yüàÀQzªTVAÊJFcBo÷=rÿâjfúZ¹ÎÎÈïªW_Ì¥
[±ÿ?x îñÐ6îÏ~QXh<Xó«vCÖËFl\ôÿC£<Ô\à>3±Jî Rr®Ô*§Íù;¨¤IUXÍ:GØâvzÌI[\ µ@\È9;Ý6:æNzræA¾Zf&V4*´·D¦Û$ªLëçU44ò.
+d»°¨Ég?ïJ×ÚLëØUá¢Ô-æ^C¹Èvz?ÚãT=h[©×L¹þ¾Ã\.We§¼
enKX¼ÆÜ=®×í*êJÙ¥âPÓ+\çÆ±1+Õb¦-¯Å«e·â]CC.}"ͤ«faãñß#{Y>KKisCÚ¼â\öÑj¼\3)ËoO÷ÙinfÈõ>A;]²ØWäJCh]ñ °¶XÖ!]j°å Ë×VäõÍ´á,F"Í?*zu©zÝñ\W*ôÇç½ú
I¿¶þ§®¤âWYmĘ́òê*û¹u
Ûò^YR
Ä+îåv1y´F,[6èD<çQ0C2HÃ%cyS2,µ+dHOfÉMÏëHKRË$¿R!aNúg.ÖÃ.2Ä1µù©Óa3Ý餬״AEGT
]â^<D§=¦z`HÆ.YF¥WcaIR£õ8)/~Þ¢"ß}Ñi¬4ííl¾ '§´»äî°Ü)oåÅ+ÖéËT7ÜpóÓíÆZîËm
÷8TÌÚgkïPUzÆí
C÷jW)¼ì`QâÊù½+ϺHýF¬µí3OѨcï
Ô¡& 5Åð¯Õ<ÀÙ`â5ât/ýø0sÈ#XÏV¾¡ç~Mø.g¿'p
Nâöî·á°èg=m^v7½ë8}ì~¢ý#Âg¸2Å_3/b/à4['ðs|¿Á)ò
OÉ:|N"lF/g|"K®ÈYz½ÔÉj©¤-|UªøVFÔ{¤oåĹVÖð,kä{ö!®qܨÊRÍJMÙÃN I¥xæ°G÷6¦Ïx¼×ûû
Q½ïs*²©7m¤Q_\õ¡·<%[§äühV.*¯òBñ9_â¦çK\xM\äbÛ¼ZYxbÃi¹Dð
ev\
§"CT`´
ç© Q«I/P~ú r$;l])g)
ÓÇx/àEã]ÚômIöA!W
é8C@§&hdꫦ½R9ѹWó>"X.YÐqYò%6À3?m5îñó<ãÕÍÛÛw8l³V£p¯)ô@Lío·4Èø¬>£$7üºjf§ppÕtå¥É×I&9¤§ÅÇÎTK¸¬r¡<T²hx¾ÚË;-m_ÇJ¿i¼Å¬ È×M¼§.tÿm\Uü
ýùÈ
{ò|<õ51©ÞAQMŬÀÐm
×½ëX* ìTLÏ.ÁÉn( ÞÅBó( ·6éTé@_¹ÉÛ¼ø¬%ÔÂ
wèõÛìß.¡ÕØ5ZÙ
èÊ,ï[WLUÀðÿÕT<Q°méæ-Ãó¤Çëá»ÁïjT=´ þ¢êyhÅGdoÕÃß!r}ÖLÀ¤v1JïàHêÌ¥Nì öK~ÿ#Á©/hÇiéüòFq_Ê¡D
÷ñ£dQÅ"ØK(á>¤vË|
>¢/L.Ó×GärÕMÎ"P=ûPK-¸.¹
-¤´P¤I
å"
j°´µ¢¢ÓvB§fâLB+^ïx¿!Vß|Ñ'.%°Ô%ðâ?Êåwæ´1Y¬åËÌ9{ï³/ßþÎ>ÿóÛ¨Çn|'°w¶µò oÁÊ^(XqÓˬ¼9bdM»[nÇ]Óì7m{ÔÌN®é!ôY㢱¨%ò´H43FÁ®a]/Îr]ÇMM9YÁg¥¬O Sj-3`XvÁ5Õ¶ñÅü
ÔëÑ @¿3mjhB8
ó"ñ /a#eÁðx§4L+SùáÝ>$I*Ò*CUÒlþB&#¯çcËÖ#æ%[Ï/vÁÎhÈ¡W2ì¥rQwtB5/dI£Ë;ñZ¦U"»yÒâüðª¬&ãc[9×+2Â,^Õ8ý{å°|]´oHíY\Tgç9ÂjpU Á/÷$ÃD
òjL@µøLó«b*'J´î¬1²WÚ
bØVT2ð?@,ù¬¯ø½2
ûþL5y¢ãADß°¼Z/ºr
êÐîª!h3ܰ5Óð r
ç-W)XÕ+J3³¦Á
âíbh¶¹3jñ4·,iW(Ê¢
мk¬Á:E:zð¢õøà·5ØÈà%pW°µÁYò/&À7!(
¶b;%fñ)Q9VA¦Â,VPƽ/ßMR~]3x̹¬s/^¡J2¦tòª¢e6ëDt<G-s[ÎeM®ÚºJÐ'&§yÒ\¼#ö`¯PÝP
õ`¨ôúJ#mDDÁ~𡸢C^N¹åÅâ£j²{R
«©CoEÜÊ¡F1¢à&Q9äV\Ôé2Q3©ê§TKkw³ÎÉh6]T
¶Z¤ B9hY¦ÅÐVêûââË2¨åð¤©;h^NÓ¨-`âPÀÊ-Y\ìG2ÄÆI£ÕUü&ã9Wÿ
-mR_V6f`tØ^1
8¤jzÖ"ÙöUÕ lwȶ©Ü¨
+ÏK(³áùl¦zÏÁÃT\& bËbáÃ
<õzõåäM¦¸ã:wVf¬wKÁHGU'cËÞ=SytêÝ·`¹@¦«ªyeh#ô¨j;b£¨»ÛÜáPRÄ>Ìá m«oÓ¨ÍÇØµT$ç¿-íeèéÈgg̹§e(UJù!ÃÀRý°á©GëúÝ
·DÇ^WpC|HhÐWÂÅV²*>ÂÇBÓ[TªiHÝKÆ1àÁ§»KwïÑÏÜÁçe³=&~O:®9·=ø¾ÕqѼÀ£ª#ê(TF¡Ù¿Æ7
¾Â·4áø¥YÕ ædb~$ܶ7leØóp{ño]6w´äì
NïiI±"ï²Á(
¬
Õ¦w]Èqu»\^Z¿w%×{xßå
Ë5P/¸î
|µ¨ê¥ðA!×4*ÀD"4k1.¨nÕ>Æ
ªå9ܾ_ð5B¾q³(à8=øDS#>æ.g"7ã;¾P×<¾xïÊïí6û-j»ßJÃ_ÀõJÃïñyzñ#~¢§`ØX$Éx¹$ÍPù³òâüZÁqþ2ÇMüþ»RÒ¡àyøPK=¯ÛP#
ÖȺ¶OêÆñ¼ÕlgÔÒ´Ãæ´AQ°ê:§¦³ªq<}tò6åÄRP/fO¹ÛÒ7¤vED2æé(¨tñ3ÓNÖSÒÂn¹xP·ÍÐ,[AÕ ´wôlzvLËâ~UÏæ-jTíGÌj\ËôY) âá¼!p}H§á=
R-ÁZÇ{HBA¨¥u,JT%ÆEÄP@-Ö$G"2¬U°&Mõ ¬ë*ëîIb
;º7îè¾$b(£fÆaP7´#ùܤf
sJÍ©.޽ɰ3£Ó©{IC¶dÔ«Õéiz1Ä
ZZÓ¦Íi¾mLùi8ªn°»»%°»õX[Ð!bÒ© As}Y-G¸ËÝØ&oW dl¼+&
ê,-gÎiάp¿xvxÐ¥³Ü3º1-"£`_ܽUöt^ÍÚI<$,ñ°
ÝFòºÃܤ<´ 7ìNâìM0ýû(ÎËbè¡m¯û!â`H¢õ¡?^H¢».IW2uåxѵ,DbaPî0ÕcëϺÕ0ÄQéÇéãÓ3£g§{Ì|ÉsÇF
õ¯ÚªÅMD4d}
gUgMÁv¶nàP:ÿÓ
û#̤vJtÝÒ«gFµi÷Þ¬e¿
ÑðK¶Ô÷&Y#$8¨Úè1s³¦!å[ÝÒz»wILCK`
ªk1
64hût
Ñ}xåѼ¿ÁEW #LÒÖ\)ØBKEJï3ò9ÍRÝ4HôiX"ë¢ìħü
íãÞIh³Ô|5ó쯾H§íçsã²½IFFzô<^¨ÀsxQíæµØl)\ö¥ñMÁç´ÔYÉñØ ¶ô)q°Mr©ÈÜZÁTJRRSÐtg¾Ô0Õ^W"Ø,YÕXUAâ¢öeÉ%ñcQ½x4)¿QG3˨0¨@I] ²ýL$¹?§Ú
17¹vÊEÑ{Gu{PSY
î&j@3lzbË]½ÚIÏÄYù¶»ÍmÁk[J6®_âW Ç;Tç¤jkîú5sj6¯õ,ÌEyl]®Ü´ÓÅeä/Ão©3ïøW ÝLYºáOÍѼÇïð{~.;u7¦Ó¨çf]íiÓåøãâàfÐþÄh̬qKïä
:#eýg\Là\b(íä°è«ÞõÄgñwì ´¸\¡ q^+k»31Ã'U/Ë\lìϼÛ~O
Õ¿z³=£qÝöÝJòjG
iv>+J81bæ)_7¡®7l£a+"ñðÉ[|òÖ%+¼çJù\ÃõXÅ¿«ùvWß2>»Ú® ºíjǯ n)×q¸~
KÃÆ¥aS[û6\¸ù·ÖµdS)Ñë¾U¼è¤ð
]òW)6È,E¸òÑ\úiYPÙ¥tDåä¬4txæ¼Åßýîæ½^kHJßÿH¸8¾.Æ\QcHú,%2Éxhy/eÍí¡÷,ÊÛ¯£÷"ÇçÏb5Ççx÷°ìꩱx{ /ÒËxX¼Ìwº(;áfÏð:î{OV³_ã7
C
øøCÕ|ÞÚê^áWã>pÜ/8þ"
V
]!û¾ØøoÞð£@À¦`À·!.[Ë^ÃÇ> +J XÀõúx¯°Ò¬ô?óõ
ä /dÛíLÎ1íJhVMÇdÖÈKN)§K54¸RiÛ4§-ûä°wú3yÇÌ\
Êô!;C
uý
"c%îcÆäÙÑee9
Z¯e;3DÜ¥áªxàþ¶B]Ö©ai¼í *¬ :#²KP££ay[ae&gî/Lö°1¥T´ßJÙoo2ägòt§ñ(ÐÒeÓ+S2§!ï
+·£OlR[o51ÅûÄælо«KËݶmÙÔßxY<¡I$5T+É#-Øf^ÇkÜkJ=E[u¼ÖÓ|[á̹¨
±¹áÌ$âõ1
ía ¬É)/?f:¥¤®·¦IG×Þ×iX°¡×SÎætl$nÁ6
µ;»îßs¬XÊÊ9\ÁãFòÇ#â Q2¹c*$[±]dixýüõÎB:-<¼ÎGÛcaìÊPb:h5¦òæ,vä]!ÑÔ×¶P.ìºfLM¹1
Z0åÚA[p«h&ÏÃURWÔvúeï>¿6ÒUZczüY[B*8l²;W4mÃÉX9ÂÝÁnÇÚÞeÂ,¢^pPÚj1
ºJÏ^3Íj'ø¦ø"ؽÁyy=Þ Ñº¾¦}ÞíZqèÞ¤²CǨkAJú»7m36mä:Æj}¼÷²áÍHÈ&È\nÏò±=6*E0¦4,ÉsAzR G``ªrlÝYsÒ0]#·RáqLW¡4,(G^uV⥪t£©¡)¸Ò=½À7áÍÀûXãF~e9y¶#:À¢þ-Ú¨euZWÖ,%¦6å¦<äÌL©F¸ mXFCM¥nãÒñ¨kËc<ÊVm#e.ÚKÎ/Oà"ÿ$ÉêZªaÃe
.9q\ó*ñn:zÜÈÌ´Ti
ºGqZÙïZÔÆH+`!ñür+bí"ºu9ó`;î>msÿ ÝCVÁN$ª4KîHÅS4±ÐC
>!w1ÞÎ8Öp¾
:Çj~
pìY¸U¥çM´GíYN-AÇ(ÕkPçL½+5¸J¯ÄZªa'b®÷ÀS¼Út]"VDc¢½ZehSQ
ë96ÐÂ
º!à«©Cí·¼7i«°ß²V(âº"nGô¦"vÎ)[¡
7zÁj±Úf6Û*BÖ»Þl3edìCrO¸>4rS
-
c(ѵwÈÎHrê kX{NÒ«Ò(3c<âLlGÌ+ÍÖF"=¨¡übµn¥®±ðº=91cMè¨psÃ:ë¤Òª»èDïA¯Æ9x¼+Áâ×°¸òátíÅ>Aùó0³m+íô&RVw"fÙÄÇqO]â^N%<ÔjÅ@ÄSñJMÓå(1Õ²iCÒ²ÉÌe¥¹4ì
CHJÌ)Nè,W{%ÿ=]Nêô¬«Ê}[Ù¬tÜ}ò1ÝÑlMR*hI
;AHg ãBU"]ÚS;Óùz?ú
¹|x9ku;øà!|º`¯¨ýHÌv´Ò>eÇÚ}³pGaeE©+ùq|N|·ÒíÉÅbV6;Kjz{8§$A&ëm4tÊ<ÏKR<G;Ëfß}Þ½J¾8)bAùð%-B7ÑÍAKzpãµ\8|_)Q¯ä>òáÅB7O²3¾í¼S$eÚÌ×¹âç³5¹Ôs=P| üx6KVùñÆä{U#úp©fÝ3ٲΰýÀA+Æt§noál
Y¶NsNdÃÎ7Îèq¯gÔ~ü"ÇD°W_¡ÊUºFø5~#âÿVai[&Ó'ì6sÕôÂú*\OÝ_¦]!/¦Òî¢Á¼+EØ3iÙ÷¦½pÕùR
ê d-§øèÉäìÕ¯ÙÚ-oXÌê6øâhð¯DÕÃÇ,'´¼N"Àç%ÏA>Ï,y
Ç|âç
YË9 üó?Îi«ü>,!úR,ä(èÚanÖo¸|ô0Ú5`fdáþèaI9P
ÖàNÒr³äÄjÎ¦ÇÆÝåaïàþR¨%Ès°ÉCö£M#+|§â"¯*ð86yËÏ=ß_ñt;±ÕÛß©³sçÊ6î×#îbQy
»uºÉH®Ò£.tkõ·a»»F£U½·$²RØ["Ûùþ±)!yźV>³»\DEqÖS¡Õ;6_$ZÍã*ß*!â+ñiaºËz´RL¥þmÍhÌcÿ%ëhóeTAÆ5µ5µµÎ/Ë͵þ<Fænð»L×ù}ì
6s7ËjwØrô|e6eF߯ym!é
>Wø+ð
¾ª£Á«=é°¯R³*î
¯áëºcóÅߣºý·ÚÏ%ò³¡×»«7T¯5FÎ3V
ÞÌãÜqø
£Ø®'¾©'Bè£âscÝ£X.ë¥ÛÙ8ÆûCßûðý<~zyüÁÂ/¶Ýzwôêéÿl
½®÷±>Öúå~õnÊün½©7I&¯7dIcþõìF&Xê
d¡V°rBùgÃoýOùk¿s
Ï;-µYrpuêÀ!æö,Ai`qZË
ܶÑR먹dZx<jߤõâýfuÞò¹6TEvÙ)Z9¨rЬo¢+tάv\}ZÐ
#r
eäT`-οcIìow(®Y+¨ûwÎðÜ{´åÁÍ6,þ1ç<õ&î s¡Ê» åW_Z'`Ï¡/ä:£$¡úWp$é¹lþÜsÇc¶ÜG¨-@(T¸dïZ?BÉmmýó£pàåý+þÐ6ÊU*°òxr£Z8øÕðGUL|
Ìþ>ýÆê¤°d¦|<M,QÎ;~mìÉeÎAÆyúä.òÝlÈNamÊASý(Ñ À_îüöïùæ¤_0¹¸Ðã¨çÒïÒ4p4x;;Ø;÷Ú{ö
õ,vÞVð"îúbm%×µ'µó¶Þ^]Ù¿Ó]üOÝ¿PK¯Ê@óî
²
d
...
[truncated message content] |
|
From: Steve F. <sm...@us...> - 2002-10-17 00:34:51
|
Update of /cvsroot/mockobjects/nat/jmock
In directory usw-pr-cvs1:/tmp/cvs-serv21088
Added Files:
build.xml
Log Message:
Started ant build file
--- NEW FILE: build.xml ---
<?xml version="1.0"?>
<project name="mockobjects" default="jar" basedir=".">
<target name="project.properties">
<tstamp/>
<property name="build.number" value="0001"/>
<property name="jar.name" value="jmock-${build.number}.jar"/>
<property name="src.jar.name" value="jmock-src-${build.number}.jar"/>
<property name="build.dir" value="build"/>
<property name="junit.lib" value="lib/junit.jar"/>
<property name="compile.dir" value="classes"/>
<property name="debug" value="true"/>
</target>
<target name="compile"
depends="project.properties">
<mkdir dir="${compile.dir}"/>
<javac
destdir="${compile.dir}"
debug="${debug}"
srcdir="source:test"
classpath="${junit.lib}"/>
</target>
<target name="junit"
depends="compile">
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<pathelement path="${compile.dir}" />
</classpath>
<formatter type="plain"/>
<batchtest>
<fileset dir="${compile.dir}">
<include name="**/Test_*.class"/>
</fileset>
</batchtest>
</junit>
</target>
</project>
|
|
From: Steve F. <sm...@us...> - 2002-10-17 00:34:19
|
Update of /cvsroot/mockobjects/nat/jmock/test/com/b13media/mock In directory usw-pr-cvs1:/tmp/cvs-serv20958/test/com/b13media/mock Modified Files: Test_Predicates.java Log Message: Removed unused import Index: Test_Predicates.java =================================================================== RCS file: /cvsroot/mockobjects/nat/jmock/test/com/b13media/mock/Test_Predicates.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Test_Predicates.java 15 Oct 2002 17:25:14 -0000 1.4 +++ Test_Predicates.java 17 Oct 2002 00:34:16 -0000 1.5 @@ -6,8 +6,6 @@ import java.util.EventObject; -import javax.swing.AbstractAction; - public class Test_Predicates |
|
From: Steve F. <sm...@us...> - 2002-10-17 00:32:50
|
Update of /cvsroot/mockobjects/nat/jmock/lib In directory usw-pr-cvs1:/tmp/cvs-serv20578/lib Log Message: Directory /cvsroot/mockobjects/nat/jmock/lib added to the repository |
|
From: Vincent M. <vm...@oc...> - 2002-10-16 14:37:39
|
Hi Henrik, That's sounds just great! We welcome all contributions. All our discussions go through the Mock Objects mailing lists. Here is what I suggest: - you subscribe to the lists (user and dev) - from your own experience, you can suggest things you wish to work on, improve, add, etc - send patches to the mailing-list. One of the project committer will apply them. - once we get fed up applying all the patches you send and we know about the quality of your work, we can then vote you in as a committer and give you full write access. How's that? Thanks! -Vincent Note@ I'm ccing the MO developer mailing list > -----Original Message----- > From: Henrik Kaipe [mailto:ka...@us... ] > Sent: 16 October 2002 15:17 > To: vm...@oc... > Subject: Mock Objects - developer openings? > > Is there a chance that I can contribute to the Mock Objects > > project as a developer? > > > > I have been a certified JAVA programmer since April 2000 > > and I started to use the utilities from the Mock Objects > > project six month ago. > > Four weeks ago I got a new placement at Karolinska > > Institutet ( a famous medical university), which means that I > > now work under academic incitaments. In my previous > > employments I have been working as an on-site programmer > > consultant. > > > > My new placement has given me more freedom when it > > comes to plan my working hours and, since I use mock > > objects in the ongoing project, contributing with programming > > efforts to the project does not necessarily slow down the > > progress in our project since our testing in some parts rely > > on Mock Objects. I would probably also contribute in a way > > that favourizes our project by correcting bugs that we run > > over. (I reported one of those bugs earlier today.) > > > > So, what do you say? |
|
From: Nat P. <np...@us...> - 2002-10-16 13:56:45
|
Update of /cvsroot/mockobjects/nat/jmock/test/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv13215/test/com/b13media/mock
Modified Files:
Test_Mock.java
Log Message:
Added facility to setup behaviour of methods with side effect.
Setup methods do not have to be called.
Expected methods clear the method-called flag.
Index: Test_Mock.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/test/com/b13media/mock/Test_Mock.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Test_Mock.java 16 Oct 2002 13:12:59 -0000 1.5
+++ Test_Mock.java 16 Oct 2002 13:56:42 -0000 1.6
@@ -151,7 +151,7 @@
_mock.verify();
}
- public void testCallWithSideEffects() {
+ public void testExpectCallWithSideEffects() {
final StringBuffer buf = new StringBuffer();
_mock.expect(
new ExpectedCall( "sideEffect",
@@ -169,7 +169,22 @@
}
public void testNotAllMethodsCalled() {
- _mock.expectVoid( "noArg", Mock.NO_ARGS );
+ _mock.expectVoid( "noArgs", Mock.NO_ARGS );
+
+ try {
+ _mock.verify();
+ }
+ catch( AssertionFailedError ex ) {
+ return;
+ }
+
+ fail( "verify did not fail when all expected methods were not called" );
+ }
+
+ public void testCalledExpectationClearedBySubsequentExpecation() {
+ _mock.expectVoid( "noArgs", Mock.NO_ARGS );
+ _interface.noArgs();
+ _mock.expectVoid( "noArgs", Mock.NO_ARGS );
try {
_mock.verify();
@@ -178,7 +193,7 @@
return;
}
- fail( "verify did not fail when all methods were not called" );
+ fail( "verify did not fail when all expected methods were not called" );
}
public void testUnexpectedMethodThrowsWhenStrict() {
@@ -328,6 +343,8 @@
assertEquals( RESULT, _interface.objectTypes(null) );
assertEquals( RESULT, _interface.objectTypes(new Integer(0)) );
+
+ _mock.verify();
}
public void testSetupThrow() {
@@ -348,6 +365,42 @@
catch( IllegalArgumentException ex ) {
// expected
}
+
+ _mock.verify();
+ }
+
+ public void testSetupCallWithSideEffect() {
+ final StringBuffer buf = new StringBuffer();
+ _mock.setup( new ExpectedCall("sideEffect") {
+ public Object eval( Object[] args ) throws Throwable {
+ buf.append("hello");
+ return null;
+ }
+ } );
+
+ _interface.sideEffect( buf );
+ assertEquals( "hello", buf.toString() );
+ _mock.verify();
+ }
+
+ public void testSetupResultDoesNotRequireCall() {
+ _mock.setupResult( "objectTypes", "result" );
+ _mock.verify();
+ }
+
+ public void testSetupThrowDoesNotRequireCall() {
+ _mock.setupThrow( "objectTypes", new RuntimeException() );
+ _mock.verify();
+ }
+
+ public void testSetupCallWithSideEffectDoesNotRequireCall() {
+ _mock.setup( new ExpectedCall("sideEffect") {
+ public Object eval( Object[] args ) throws Throwable {
+ throw new RuntimeException("should not be called");
+ }
+ } );
+
+ _mock.verify();
}
public void testNoErrorWhenOrderedMethodsCalledInCorrectOrder() {
|
|
From: Nat P. <np...@us...> - 2002-10-16 13:56:45
|
Update of /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv13215/source/com/b13media/mock
Modified Files:
ExpectedCall.java ExpectedReturn.java Mock.java
ExpectedThrow.java
Log Message:
Added facility to setup behaviour of methods with side effect.
Setup methods do not have to be called.
Expected methods clear the method-called flag.
Index: ExpectedCall.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/ExpectedCall.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ExpectedCall.java 16 Oct 2002 12:56:21 -0000 1.3
+++ ExpectedCall.java 16 Oct 2002 13:56:41 -0000 1.4
@@ -10,12 +10,34 @@
abstract class ExpectedCall
extends junit.framework.Assert
{
+ /** A constant that indicates that an <code>ExpectedCall</code> accepts
+ * any arguments, that is, that the call does not check the arguments
+ * passed to it.
+ */
+ public static final Predicate[] ANY_ARGS = null;
+
+
private String _name;
private Predicate[] _expected_args;
- public ExpectedCall( String name,
- Predicate[] expected_args )
- {
+
+ /** Constructs an <code>ExpectedCall</code> that accepts any arguments.
+ *
+ * @param name
+ * The name of the expected method.
+ */
+ public ExpectedCall( String name ) {
+ this( name, ANY_ARGS );
+ }
+
+ /** Constructs an <code>ExpectedCall</code> that checks its arguments.
+ *
+ * @param name
+ * The name of the expected method.
+ * @param expected_args
+ * Predicates that define the valid arguments of the method.
+ */
+ public ExpectedCall( String name, Predicate[] expected_args ) {
_name = name;
_expected_args = expected_args;
}
Index: ExpectedReturn.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/ExpectedReturn.java,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- ExpectedReturn.java 22 May 2002 10:02:49 -0000 1.1.1.1
+++ ExpectedReturn.java 16 Oct 2002 13:56:42 -0000 1.2
@@ -11,6 +11,9 @@
{
private Object _result;
+ public ExpectedReturn( String name, Object result ) {
+ this( name, ANY_ARGS, result );
+ }
public ExpectedReturn( String name,
Predicate[] expected_args,
Index: Mock.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/Mock.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Mock.java 16 Oct 2002 13:12:56 -0000 1.6
+++ Mock.java 16 Oct 2002 13:56:42 -0000 1.7
@@ -33,13 +33,14 @@
private String _name;
private Map _expectations = new HashMap();
- private Set _expectations_not_called = new HashSet();
+ private Set _not_called_expectations = new HashSet();
private Map _order_constraints = new HashMap();
private Set _called_methods = new HashSet();
private boolean _strict = false;
private Map _default_results = new HashMap();
+
/** Creates a named Mock object, The name will be included in the messages
* of exceptions thrown to indicate violated expectations.
*/
@@ -86,32 +87,45 @@
_strict = strict;
}
+ /** Mock the behaviour of a method without requiring that the method
+ * actually be called. Note: the ExpectedCall may check the arguments
+ * of the call but should usually not do so.
+ *
+ * @param call
+ * The call to be mocked.
+ */
+ public void setup( ExpectedCall call ) {
+ _expectations.put( call.getMethodName(), call );
+ _not_called_expectations.remove( call.getMethodName() );
+ _called_methods.add( call.getMethodName() );
+ }
+
/** Set up calls to <var>method</var> to return <var>result</var>,
* but do not define any expectations upon arguments to those calls.
* Arguments of calls to <var>method</var> will be ignored.
*
- * @param method
+ * @param method_name
* The name of the method that will be called.
* @param result
* The result that will be returned from this call. Primitive types
* must be wrapped in the equivalent Java object, and will be unwrapped
* before being returned to the caller of the method.
*/
- public void setupResult( String method, Object result ) {
- expectReturn( method, null, result );
+ public void setupResult( String method_name, Object result ) {
+ setup( new ExpectedReturn( method_name, null, result ) );
}
/** Set up calls to <var>method</var> to throw <var>exception</var>,
* but do not define any expectations upon arguments to those calls.
* Arguments of calls to <var>method</var> will be ignored.
*
- * @param method
+ * @param method_name
* The name of the method that will be called.
* @param exception
* The exception or error that will be thrown as a result of this call.
*/
- public void setupThrow( String method, Throwable exception ) {
- expectThrow( method, null, exception );
+ public void setupThrow( String method_name, Throwable exception ) {
+ setup( new ExpectedThrow( method_name, null, exception ) );
}
/** Set up the value returned by methods that have the given result
@@ -136,7 +150,8 @@
*/
public void expect( ExpectedCall call ) {
_expectations.put( call.getMethodName(), call );
- _expectations_not_called.remove( call.getMethodName() );
+ _not_called_expectations.remove( call.getMethodName() );
+ _called_methods.remove( call.getMethodName() );
}
/** Expect a method call and return a result when it is called.
@@ -194,7 +209,7 @@
* The name of the method that will not be called.
*/
public void expectNotCalled( String method ) {
- _expectations_not_called.add(method);
+ _not_called_expectations.add(method);
}
/** Define an order between two calls. The method named
@@ -311,7 +326,7 @@
}
private void assertCanBeCalled( String method_name ) {
- if( _expectations_not_called.contains(method_name) ) {
+ if( _not_called_expectations.contains(method_name) ) {
fail(_name + ": unexpected call to method " + method_name );
}
}
Index: ExpectedThrow.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/ExpectedThrow.java,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- ExpectedThrow.java 22 May 2002 10:02:49 -0000 1.1.1.1
+++ ExpectedThrow.java 16 Oct 2002 13:56:42 -0000 1.2
@@ -12,6 +12,10 @@
private Throwable _exception;
+ public ExpectedThrow( String name, Throwable exception ) {
+ this( name, ANY_ARGS, exception );
+ }
+
public ExpectedThrow( String name,
Predicate[] expected_args,
Throwable exception )
|
|
From: Nat P. <np...@us...> - 2002-10-16 13:13:04
|
Update of /cvsroot/mockobjects/nat/jmock/test/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv28414/test/com/b13media/mock
Modified Files:
Test_Mock.java
Log Message:
Renamed addDefaultResult to setupDefaultResult to match setupResult and setupThrow methods.
Added explicit test for setupDefaultResult; it was implicitly tested before.
Index: Test_Mock.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/test/com/b13media/mock/Test_Mock.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Test_Mock.java 16 Oct 2002 12:56:21 -0000 1.4
+++ Test_Mock.java 16 Oct 2002 13:12:59 -0000 1.5
@@ -214,6 +214,28 @@
assertEquals( 0.0d, _interface.doubleResult(), 0.0d );
assertEquals( "", _interface.stringResult() );
}
+
+ public void testSetupDefaultResult() {
+ _mock.setupDefaultResult( boolean.class, new Boolean(true) );
+ _mock.setupDefaultResult( byte.class, new Byte((byte)1) );
+ _mock.setupDefaultResult( char.class, new Character( '2' ) );
+ _mock.setupDefaultResult( short.class, new Short( (short)3 ) );
+ _mock.setupDefaultResult( int.class, new Integer(4) );
+ _mock.setupDefaultResult( long.class, new Long(5L) );
+ _mock.setupDefaultResult( float.class, new Float(6.0f) );
+ _mock.setupDefaultResult( double.class, new Double(7.0d) );
+ _mock.setupDefaultResult( String.class, "8" );
+
+ assertEquals( true, _interface.booleanResult() );
+ assertEquals( (byte)1, _interface.byteResult() );
+ assertEquals( '2', _interface.charResult() );
+ assertEquals( 3, _interface.shortResult() );
+ assertEquals( 4, _interface.intResult() );
+ assertEquals( 5L, _interface.longResult() );
+ assertEquals( 6.0f, _interface.floatResult(), 0.0f );
+ assertEquals( 7.0d, _interface.doubleResult(), 0.0d );
+ assertEquals( "8", _interface.stringResult() );
+ }
public void testWrongNumberOfArguments() {
Predicate p = new IsEqual( new Integer(2) );
@@ -327,7 +349,6 @@
// expected
}
}
-
public void testNoErrorWhenOrderedMethodsCalledInCorrectOrder() {
_mock.expectVoid( "first", Mock.NO_ARGS );
|
|
From: Nat P. <np...@us...> - 2002-10-16 13:13:03
|
Update of /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv28414/source/com/b13media/mock
Modified Files:
Mock.java
Log Message:
Renamed addDefaultResult to setupDefaultResult to match setupResult and setupThrow methods.
Added explicit test for setupDefaultResult; it was implicitly tested before.
Index: Mock.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/Mock.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Mock.java 16 Oct 2002 12:56:21 -0000 1.5
+++ Mock.java 16 Oct 2002 13:12:56 -0000 1.6
@@ -45,15 +45,15 @@
*/
public Mock( String name ) {
_name = name;
- addDefaultResult( byte.class, new Byte((byte)0) );
- addDefaultResult( short.class, new Short((short)0) );
- addDefaultResult( int.class, new Integer(0) );
- addDefaultResult( long.class, new Long(0L) );
- addDefaultResult( float.class, new Float(0.0f) );
- addDefaultResult( double.class, new Double(0.0d) );
- addDefaultResult( boolean.class, Boolean.FALSE );
- addDefaultResult( char.class, new Character('\0') );
- addDefaultResult( String.class, "" );
+ setupDefaultResult( byte.class, new Byte((byte)0) );
+ setupDefaultResult( short.class, new Short((short)0) );
+ setupDefaultResult( int.class, new Integer(0) );
+ setupDefaultResult( long.class, new Long(0L) );
+ setupDefaultResult( float.class, new Float(0.0f) );
+ setupDefaultResult( double.class, new Double(0.0d) );
+ setupDefaultResult( boolean.class, Boolean.FALSE );
+ setupDefaultResult( char.class, new Character('\0') );
+ setupDefaultResult( String.class, "" );
}
/** Creates a Mock object and automatically assigns a name to it. The assigned
@@ -86,7 +86,46 @@
_strict = strict;
}
- public void addDefaultResult( Class result_type, Object result_value ) {
+ /** Set up calls to <var>method</var> to return <var>result</var>,
+ * but do not define any expectations upon arguments to those calls.
+ * Arguments of calls to <var>method</var> will be ignored.
+ *
+ * @param method
+ * The name of the method that will be called.
+ * @param result
+ * The result that will be returned from this call. Primitive types
+ * must be wrapped in the equivalent Java object, and will be unwrapped
+ * before being returned to the caller of the method.
+ */
+ public void setupResult( String method, Object result ) {
+ expectReturn( method, null, result );
+ }
+
+ /** Set up calls to <var>method</var> to throw <var>exception</var>,
+ * but do not define any expectations upon arguments to those calls.
+ * Arguments of calls to <var>method</var> will be ignored.
+ *
+ * @param method
+ * The name of the method that will be called.
+ * @param exception
+ * The exception or error that will be thrown as a result of this call.
+ */
+ public void setupThrow( String method, Throwable exception ) {
+ expectThrow( method, null, exception );
+ }
+
+ /** Set up the value returned by methods that have the given result
+ * type, if no result or exception has been explicitly defined for
+ * the called method by {@link #setupResult}, {@link #setupThrow},
+ * {@link #expectReturn} or {@link #expectThrow}.
+ *
+ * @param result_type
+ * The result type of methods to be mocked.
+ * @param result_value
+ * The default value returned by mocked methods that return values
+ * of type <var>result_type</var>.
+ */
+ public void setupDefaultResult( Class result_type, Object result_value ) {
_default_results.put( result_type, result_value );
}
@@ -156,34 +195,6 @@
*/
public void expectNotCalled( String method ) {
_expectations_not_called.add(method);
- }
-
- /** Set up calls to <var>method</var> to return <var>result</var>,
- * but do not define any expectations upon arguments to those calls.
- * Arguments of calls to <var>method</var> will be ignored.
- *
- * @param method
- * The name of the method that will be called.
- * @param result
- * The result that will be returned from this call. Primitive types
- * must be wrapped in the equivalent Java object, and will be unwrapped
- * before being returned to the caller of the method.
- */
- public void setupResult( String method, Object result ) {
- expectReturn( method, null, result );
- }
-
- /** Set up calls to <var>method</var> to throw <var>exception</var>,
- * but do not define any expectations upon arguments to those calls.
- * Arguments of calls to <var>method</var> will be ignored.
- *
- * @param method
- * The name of the method that will be called.
- * @param exception
- * The exception or error that will be thrown as a result of this call.
- */
- public void setupThrow( String method, Throwable exception ) {
- expectThrow( method, null, exception );
}
/** Define an order between two calls. The method named
|
|
From: Nat P. <np...@us...> - 2002-10-16 12:56:24
|
Update of /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv21854/source/com/b13media/mock
Modified Files:
ExpectedCall.java Mock.java
Log Message:
Added setupResult and setupThrow methods that set up the behaviour of a method without defining expectations -- arguments are ignored.
Index: ExpectedCall.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/ExpectedCall.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ExpectedCall.java 11 Oct 2002 14:57:36 -0000 1.2
+++ ExpectedCall.java 16 Oct 2002 12:56:21 -0000 1.3
@@ -24,16 +24,28 @@
return _name;
}
+ public boolean isTestingArguments() {
+ return _expected_args != null;
+ }
+
+ /* Pre: isTestingArguments()
+ */
public int getArgumentCount() {
return _expected_args.length;
}
+ /* Pre: isTestingArguments()
+ */
public boolean testArgument( int n, Object arg ) {
return _expected_args[n].eval(arg);
}
public String describeArgument( int n ) {
- return _expected_args[n].toString();
+ if( _expected_args == null ) {
+ return "anything";
+ } else {
+ return _expected_args[n].toString();
+ }
}
public abstract Object eval( Object[] args ) throws Throwable;
Index: Mock.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/Mock.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Mock.java 16 Oct 2002 12:24:23 -0000 1.4
+++ Mock.java 16 Oct 2002 12:56:21 -0000 1.5
@@ -158,6 +158,34 @@
_expectations_not_called.add(method);
}
+ /** Set up calls to <var>method</var> to return <var>result</var>,
+ * but do not define any expectations upon arguments to those calls.
+ * Arguments of calls to <var>method</var> will be ignored.
+ *
+ * @param method
+ * The name of the method that will be called.
+ * @param result
+ * The result that will be returned from this call. Primitive types
+ * must be wrapped in the equivalent Java object, and will be unwrapped
+ * before being returned to the caller of the method.
+ */
+ public void setupResult( String method, Object result ) {
+ expectReturn( method, null, result );
+ }
+
+ /** Set up calls to <var>method</var> to throw <var>exception</var>,
+ * but do not define any expectations upon arguments to those calls.
+ * Arguments of calls to <var>method</var> will be ignored.
+ *
+ * @param method
+ * The name of the method that will be called.
+ * @param exception
+ * The exception or error that will be thrown as a result of this call.
+ */
+ public void setupThrow( String method, Throwable exception ) {
+ expectThrow( method, null, exception );
+ }
+
/** Define an order between two calls. The method named
* <var>subsequent_method</var> <em>must</em> be called after
* the method namd <var>preceding_method</var>, otherwise an
@@ -205,7 +233,9 @@
(ExpectedCall)_expectations.get(method_name);
checkCallOrder( method_name );
- checkArguments( expected, args );
+ if( expected.isTestingArguments() ) {
+ checkArguments( expected, args );
+ }
return expected.eval( args );
} else if( _strict ) {
|
|
From: Nat P. <np...@us...> - 2002-10-16 12:56:24
|
Update of /cvsroot/mockobjects/nat/jmock/test/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv21854/test/com/b13media/mock
Modified Files:
Test_Mock.java
Log Message:
Added setupResult and setupThrow methods that set up the behaviour of a method without defining expectations -- arguments are ignored.
Index: Test_Mock.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/test/com/b13media/mock/Test_Mock.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Test_Mock.java 14 Oct 2002 14:42:47 -0000 1.3
+++ Test_Mock.java 16 Oct 2002 12:56:21 -0000 1.4
@@ -299,6 +299,36 @@
_mock.verify();
}
+ public void testSetupResult() {
+ final String RESULT = "result";
+
+ _mock.setupResult( "objectTypes", RESULT );
+
+ assertEquals( RESULT, _interface.objectTypes(null) );
+ assertEquals( RESULT, _interface.objectTypes(new Integer(0)) );
+ }
+
+ public void testSetupThrow() {
+ _mock.setupThrow( "objectTypes", new IllegalArgumentException() );
+
+ try {
+ _interface.objectTypes(null);
+ fail("expected IllegalArgumentException");
+ }
+ catch( IllegalArgumentException ex ) {
+ // expected
+ }
+
+ try {
+ _interface.objectTypes(new Integer(0));
+ fail("expected IllegalArgumentException");
+ }
+ catch( IllegalArgumentException ex ) {
+ // expected
+ }
+ }
+
+
public void testNoErrorWhenOrderedMethodsCalledInCorrectOrder() {
_mock.expectVoid( "first", Mock.NO_ARGS );
_mock.expectVoid( "second", Mock.NO_ARGS );
|
|
From: Nat P. <np...@us...> - 2002-10-16 12:24:27
|
Update of /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv10064/source/com/b13media/mock
Modified Files:
Mock.java
Log Message:
Removed erroneous javadoc comments
Index: Mock.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock/Mock.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Mock.java 14 Oct 2002 14:42:47 -0000 1.3
+++ Mock.java 16 Oct 2002 12:24:23 -0000 1.4
@@ -94,8 +94,6 @@
*
* @param call
* An object describing the expected call and mocking its behaviour.
- * @return
- * The state of the mock object after the call as occurred.
*/
public void expect( ExpectedCall call ) {
_expectations.put( call.getMethodName(), call );
@@ -114,8 +112,6 @@
* The result that will be returned from this call. Primitive types
* must be wrapped in the equivalent Java object, and will be unwrapped
* before being returned to the caller of the method.
- * @return
- * The state of the mock object after the call as occurred.
*/
public void expectReturn( String method, Predicate[] args, Object result ) {
expect( new ExpectedReturn( method, args, result ) );
@@ -129,8 +125,6 @@
* An array of {@link com.b13media.mock.Predicate}s that specify the
* epxected arguments of the method call. The length of the array defines
* the expected arity of the method call.
- * @return
- * The state of the mock object after the call as occurred.
*/
public void expectVoid( String method, Predicate[] args ) {
expect( new ExpectedReturn( method, args, null ) );
@@ -146,8 +140,6 @@
* the expected arity of the method call.
* @param exception
* The exception or error that will be thrown as a result of this call.
- * @return
- * The state of the mock object after the call as occurred.
*/
public void expectThrow( String method, Predicate[] args,
Throwable exception )
|
|
From: Joe W. <joe...@us...> - 2002-10-15 19:15:28
|
Update of /cvsroot/mockobjects/nmock/src/NMock
In directory usw-pr-cvs1:/tmp/cvs-serv21999/src/NMock
Modified Files:
Predicates.cs
Log Message:
Added IsCloseTo predicate, useful for testing real values within error range. Very original.
Index: Predicates.cs
===================================================================
RCS file: /cvsroot/mockobjects/nmock/src/NMock/Predicates.cs,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- Predicates.cs 6 Oct 2002 20:49:08 -0000 1.1.1.1
+++ Predicates.cs 15 Oct 2002 19:15:23 -0000 1.2
@@ -243,6 +243,32 @@
}
}
+ public class IsCloseTo : IPredicate
+ {
+
+ private double expected;
+ private double error;
+
+ public IsCloseTo(double expected, double error)
+ {
+ this.expected = expected;
+ this.error = error;
+ }
+
+ public bool eval(object val)
+ {
+ try
+ {
+ double actual = Convert.ToDouble(val);
+ return Math.Abs(actual - expected) <= error;
+ }
+ catch (FormatException)
+ {
+ return false;
+ }
+ }
+ }
+
public class Predicate : IPredicate
{
|
|
From: Joe W. <joe...@us...> - 2002-10-15 19:15:27
|
Update of /cvsroot/mockobjects/nmock/test/NMock
In directory usw-pr-cvs1:/tmp/cvs-serv21999/test/NMock
Modified Files:
PredicatesTest.cs
Log Message:
Added IsCloseTo predicate, useful for testing real values within error range. Very original.
Index: PredicatesTest.cs
===================================================================
RCS file: /cvsroot/mockobjects/nmock/test/NMock/PredicatesTest.cs,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- PredicatesTest.cs 6 Oct 2002 20:49:09 -0000 1.1.1.1
+++ PredicatesTest.cs 15 Oct 2002 19:15:23 -0000 1.2
@@ -208,6 +208,32 @@
}
[Test]
+ public void IsCloseTo()
+ {
+ p = new IsCloseTo(1.0, 0.5);
+
+ Assertion.Assert(p.eval(1.0));
+ Assertion.Assert(p.eval(0.5));
+ Assertion.Assert(p.eval(1.5));
+
+ Assertion.Assert(p.eval(1));
+ Assertion.Assert(p.eval(0.5f));
+ Assertion.Assert(p.eval(new decimal(1.5)));
+
+ Assertion.Assert(!p.eval(0.49));
+ Assertion.Assert(!p.eval(1.51));
+ Assertion.Assert(!p.eval(-1.0));
+
+ Assertion.Assert(p.eval("1.2"));
+ Assertion.Assert(!p.eval("0.2"));
+ Assertion.Assert(!p.eval("hello"));
+
+ Assertion.Assert(!p.eval(null));
+ Assertion.Assert(!p.eval(0));
+ Assertion.Assert(!p.eval(0.0));
+ }
+
+ [Test]
public void Delegate()
{
p = new Predicate(new Predicate.Method(myEval));
|
|
From: Nat P. <np...@us...> - 2002-10-15 17:25:17
|
Update of /cvsroot/mockobjects/nat/jmock/source/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv22343/source/com/b13media/mock
Added Files:
IsCloseTo.java
Log Message:
Added IsCloseTo predicate, useful for testing real values within error range
--- NEW FILE: IsCloseTo.java ---
/* Copyright (c) 2002 Nat Pryce. All rights reserved.
*
* Created on February 10, 2002, 11:35 PM
*/
package com.b13media.mock;
/** Is the argument a number equal to a value within some range of acceptable
* error?
*/
public class IsCloseTo implements Predicate
{
private double _error;
private double _value;
public IsCloseTo( double value, double error ) {
_error = error;
_value = value;
}
public boolean eval( Object arg ) {
double arg_value = ((Number)arg).doubleValue();
return Math.abs( (arg_value - _value) ) <= _error;
}
public String toString() {
return "a numeric value within " + _error + " of " + _value;
}
}
|
|
From: Nat P. <np...@us...> - 2002-10-15 17:25:17
|
Update of /cvsroot/mockobjects/nat/jmock/test/com/b13media/mock
In directory usw-pr-cvs1:/tmp/cvs-serv22343/test/com/b13media/mock
Modified Files:
Test_Predicates.java
Log Message:
Added IsCloseTo predicate, useful for testing real values within error range
Index: Test_Predicates.java
===================================================================
RCS file: /cvsroot/mockobjects/nat/jmock/test/com/b13media/mock/Test_Predicates.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Test_Predicates.java 14 Oct 2002 18:01:16 -0000 1.3
+++ Test_Predicates.java 15 Oct 2002 17:25:14 -0000 1.4
@@ -153,4 +153,26 @@
assertTrue( !p.eval("hello, world") );
assertTrue( !p.eval("goodbye, world.") );
}
+
+ public void testIsCloseTo() {
+ Predicate p = new IsCloseTo( 1.0, 0.5 );
+
+ assertTrue( p.eval( new Double(1.0) ) );
+ assertTrue( p.eval( new Double(0.5) ) );
+ assertTrue( p.eval( new Double(1.5) ) );
+
+ assertTrue( p.eval( new Float(1.0) ) );
+ assertTrue( p.eval( new Integer(1) ) );
+
+ assertTrue( "number too large", !p.eval( new Double(2.0) ) );
+ assertTrue( "number too small", !p.eval( new Double(0.0) ) );
+
+ try {
+ p.eval("wrong type");
+ fail("ClassCastException expected for wrong type of argument");
+ }
+ catch( ClassCastException ex ) {
+ // expected
+ }
+ }
}
|
|
From: Jeff M. <cus...@us...> - 2002-10-15 13:53:14
|
Update of /cvsroot/mockobjects/mockobjects-java
In directory usw-pr-cvs1:/tmp/cvs-serv11423
Modified Files:
make_mocks.py env.txt build.xml
Log Message:
Allow overiding of j2ee.jar location
Index: make_mocks.py
===================================================================
RCS file: /cvsroot/mockobjects/mockobjects-java/make_mocks.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- make_mocks.py 15 Oct 2002 13:05:42 -0000 1.1
+++ make_mocks.py 15 Oct 2002 13:53:11 -0000 1.2
@@ -11,27 +11,27 @@
else:
anthome='/opt/ant'
-def ant(target, javahome):
+def ante(target, javahome, options):
ENV={
'PATH': javahome + '/bin:' + anthome + '/bin:' + os.environ['PATH'],
'JAVA_HOME': javahome
}
- target = antcmd+' ' + target
+ target = antcmd+options+' ' + target
print '###############################################'
print ENV
print '###############################################'
os.spawnvpe(os.P_WAIT, antcmd, target.split(), ENV)
print '###############################################'
+def ant(target):
+ ante(target, os.environ['JAVA_HOME'], '')
+
def build(env):
args = env.strip().split(':')
- if os.path.isdir(args[2]):
- print 'copying %s to lib' % args[2]
- shutil.copyfile(args[2], libdir)
- ant(args[0], args[1])
+ ante(args[0], args[1], args[2])
-ant('clean', os.environ['JAVA_HOME'])
+ant('clean')
for env in file('env.txt').readlines():
build(env)
Index: env.txt
===================================================================
RCS file: /cvsroot/mockobjects/mockobjects-java/env.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- env.txt 15 Oct 2002 13:05:43 -0000 1.1
+++ env.txt 15 Oct 2002 13:53:11 -0000 1.2
@@ -1,4 +1,4 @@
clean-compiled jar:/usr/java/j2sdk1.3.1:
clean-compiled jar:/usr/java/j2sdk1.4.1:
-clean-compiled jar:/usr/java/jdk1.3.1_01:
-clean-compiled jar:/usr/java/jdk1.3.1_03:
+clean-compiled jar:/usr/java/jdk1.3.1_01:-Dj2ee.lib=lib/j2ee.jar
+clean-compiled jar:/usr/java/jdk1.3.1_03:-Dj2ee.lib=lib/j2ee.jar
Index: build.xml
===================================================================
RCS file: /cvsroot/mockobjects/mockobjects-java/build.xml,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- build.xml 14 Oct 2002 23:00:17 -0000 1.25
+++ build.xml 15 Oct 2002 13:53:11 -0000 1.26
@@ -38,6 +38,7 @@
<property name="xdoc.dir" value="${doc.dir}/xdocs" />
<property name="skin.dir" value="${doc.dir}/skins" />
<property name="lib.dir" value="lib" />
+ <property name="j2ee.lib" value="lib/j2ee.jar" />
</target>
<target name="deliverable-names" depends="project-properties">
@@ -60,7 +61,9 @@
<path id="lib.classpath">
<fileset dir="${lib.dir}">
<include name="*.jar" />
+ <exclude name="j2ee.jar" />
</fileset>
+ <pathelement location="${j2ee.lib}"/>
</path>
<available property="jdk.version" value="1.2" classname="java.lang.ThreadLocal" />
|
|
From: Jeff M. <je...@mk...> - 2002-10-15 13:07:49
|
I've just added a python version of this script. It's not finished to really tested, but it might be easier to maintain than the whole cygwin/unix thing. On Tue, 2002-10-15 at 00:10, Steve Freeman wrote: > Update of /cvsroot/mockobjects/mockobjects-java > In directory usw-pr-cvs1:/tmp/cvs-serv14200 > > Added Files: > make_mocks.sh > Log Message: > added helper build script > > --- NEW FILE: make_mocks.sh --- > #!/usr/bin/bash > # helper script for building all the combinations > # copy it somewhere it won't be overwritten and set the paths > # to those on your machine > # This version setup for cygwin on my machine > # - smgf > > > export ANT_HOME="D:\java\ant" > > cd mockobjects-java > > rm -f lib/junit.jar > cp /cygdrive/d/java/junit/3.7/junit.jar lib > > export PATH=$ANT_HOME/bin:$PATH > ant.bat clean > > ( > export JAVA_HOME="D:\java\jdk\1.3.1_05" > export PATH=$JAVA_HOME/bin:$PATH > > echo "+++++++++ JAVA 1.3 +++++++++++++" > > echo " +++++ JDK 1.2 +++++" > rm -f lib/j2ee.jar > cp /cygdrive/d/java/j2sdkee1.2.1//lib/j2ee.jar lib > ant.bat clean-compiled jar > > echo " +++++ JDK 1.3 +++++" > rm -f lib/j2ee.jar > cp /cygdrive/d/java/j2sdkee1.3.1/lib/j2ee.jar lib > ant.bat clean-compiled jar > ) > > ( > export JAVA_HOME="D:\java\jdk\1.4.1" > export PATH=$JAVA_HOME/bin:$PATH > > echo "+++++++++ JAVA 1.4 +++++++++++++" > > echo " +++++ JDK 1.2 +++++" > rm -f lib/j2ee.jar > cp /cygdrive/d/java/j2sdkee1.2.1//lib/j2ee.jar lib > ant.bat clean-compiled jar > > echo " +++++ JDK 1.3 +++++" > rm -f lib/j2ee.jar > cp /cygdrive/d/java/j2sdkee1.3.1/lib/j2ee.jar lib > ant.bat clean-compiled jar > ) > > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Mockobjects-java-dev mailing list > Moc...@li... > https://lists.sourceforge.net/lists/listinfo/mockobjects-java-dev -- Jeff Martin <je...@mk...> mkodo |
|
From: Jeff M. <cus...@us...> - 2002-10-15 13:05:49
|
Update of /cvsroot/mockobjects/mockobjects-java
In directory usw-pr-cvs1:/tmp/cvs-serv25482
Added Files:
make_mocks.py env.txt
Log Message:
Added python script for testing multiple build enviroments
--- NEW FILE: make_mocks.py ---
#!/usr/bin/python2
import os, shutil
libdir = 'lib'
junitlib = libdir+'/junit.jar'
antcmd = 'ant'
if os.environ.has_key('ANT_HOME'):
anthome=os.environ('ANT_HOME')
else:
anthome='/opt/ant'
def ant(target, javahome):
ENV={
'PATH': javahome + '/bin:' + anthome + '/bin:' + os.environ['PATH'],
'JAVA_HOME': javahome
}
target = antcmd+' ' + target
print '###############################################'
print ENV
print '###############################################'
os.spawnvpe(os.P_WAIT, antcmd, target.split(), ENV)
print '###############################################'
def build(env):
args = env.strip().split(':')
if os.path.isdir(args[2]):
print 'copying %s to lib' % args[2]
shutil.copyfile(args[2], libdir)
ant(args[0], args[1])
ant('clean', os.environ['JAVA_HOME'])
for env in file('env.txt').readlines():
build(env)
--- NEW FILE: env.txt ---
clean-compiled jar:/usr/java/j2sdk1.3.1:
clean-compiled jar:/usr/java/j2sdk1.4.1:
clean-compiled jar:/usr/java/jdk1.3.1_01:
clean-compiled jar:/usr/java/jdk1.3.1_03:
|