Formula/0000755000175400001440000000000013272537770012067 5ustar zeileisusersFormula/inst/0000755000175400001440000000000013272442207013032 5ustar zeileisusersFormula/inst/CITATION0000644000175400001440000000135013131004171014152 0ustar zeileisusersbibentry(bibtype = "Article", title = "Extended Model Formulas in {R}: Multiple Parts and Multiple Responses", author = c(person("Achim", "Zeileis", email = "Achim.Zeileis@R-project.org"), person("Yves", "Croissant")), journal = "Journal of Statistical Software", year = "2010", volume = "34", number = "1", pages = "1--13", doi = "10.18637/jss.v034.i01", header = "To cite Formula in publications use:", textVersion = paste("Achim Zeileis, Yves Croissant (2010).", "Extended Model Formulas in R: Multiple Parts and Multiple Responses.", "Journal of Statistical Software 34(1), 1-13.", "doi:10.18637/jss.v034.i01") ) Formula/inst/doc/0000755000175400001440000000000013272442207013577 5ustar zeileisusersFormula/inst/doc/Formula.pdf0000644000175400001440000035106313272537770015721 0ustar zeileisusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 4169 /Filter /FlateDecode /N 76 /First 621 >> stream x[[w~?BoԺ_f3kg@`<vy8|%u f9KW`9 3R0ˬ1oG ȤTpi 8&5SB0-S;uDyϴt ɈڌGhT$3.3( >4f1˜xsy悈y"*2]dZsD2@G!18@2H0 Av,A̱`eBI!/#YhQ,Qi â`ڲQEb( &BD4/ d\8%kpg!Se>e< ւZAt9PN@YqYM2P3 aP6Ds&@E:^Rp=([ :yPvR׿XqTփѠccV<[jR΁t|poN*Yq9D`Q_Lgdj\Vثwp6f堮d -pS|28-_U}.PlV-8B麟ќ:.M|^M`Q9fge\YvO|6-%x {p1ᬺYJfp}ZcP.'rĎR3csVMh1+{>s6Vt2/[NTx\P@D>|BØA)]K\Gs'9Lk0chβ9欛iiN'H7G<D0H"}et1CW2b2}pRSgI^ܟdDXtAx~>T~A[)U l^c[Ћ^Tq(8thTWV4@ѤN@"&7rSku33 t#M#|IVsD(ъ7o6W1,#@qճEٖ^~2ѽyxK2?&F`}MV[J5eZ7Q!Wk5/R)mԾϧ~6)^ZG cG#2S9xܔ$3]P |Cr̨MΐB=qx&9r{Sܜ Kχ30X_=,]B(UŽ~8*IxU.śbX //Ũ(*;yqQTb\\bZL'eqU`?i]ތY/ŬuQ_ʲOEx_|(DbFf`d<8'#\w魔j}=Ѓ#80`r UkH@LS/:TPәW Tp 2222~Gb#h,{h¡<萁ATrCMpHA$)H w1@o| (ԶDf<|CIilbY |F*7ؼ:J&}F ЙD[9BevǙ,-5xj?u>d릯m}!GKA# +:S}˃"VI~Eix=nuʥ؋Y6zt,]Q (6OHr^:-*tZ Nf/#4[[V4jK1w36c(DW{zjb{᥽>r,t&(naH#hSXm2Vհ #$sroA f0+÷e:GBg1SW89r֏Q|{Bo5j#0)甉]+;'ap:+?l'Vo- ꊎқw; >'d1r'C/m+iJre(f=ME Å{mUNQٝՙ-t " ΁Ttb2Ld*&S1TL"E3'DfND6s"MTJӜmsv͹#I*H.CQk1To/RxNn(C^DMtƙBQH˔r1rkM)%#'?aɔfy󍘂2%kå?ϵlc SCޮyB%t7`comc'dWVtɓ5xw0} r KHi n}xrSzS0\! T D[R2e]4%Acѽݳ[&lw6YE [ dW6=x3 dkeG??ylf}7,m^3yȵUV\d;jGD&W[~N]i3#k}ޒ- dY-2}|h?/PKd;'ШPeEi><$ zѲ@Zqݺ)?s5}>~>7rv;=ˬӦ*eY/C#: !xNMVOϫzi, lhp<r!bjڴv (7J$CE .bikn5|ݓjj%Rɶ+7>gqF|EWTnV('"HHlB:m \NV`ɯ7,}bu! E]zˡX{LkOhM7Xusi[smHGkÚ)/\;Lw:f8U-=l}|myhu^D!#( ܂紲5x|+[I'(b kKxQ]C_ dKPk ۰-eq}|[k`)5p?ɘVIq)c CCvl3)Y4X 9Muv9$˗j\OLy+b/UFզ@[7,W©7{$A}/`ueE L)ǵJ+:pZxb|ߋIάi:gE5 *dr+:w:;+Җ31]Wl=zI 7vꝵ&i^ڣϚ/y+U9x.Y,~UV`}{mY3endstream endobj 78 0 obj << /Subtype /XML /Type /Metadata /Length 1701 >> stream GPL Ghostscript 9.22 formula processing, model frame, model matrix, R 2018-05-03T01:06:47+02:00 2018-05-03T01:06:47+02:00 LaTeX with hyperref package Extended Model Formulas in R: Multiple Parts and Multiple ResponsesAchim Zeileis, Yves Croissant endstream endobj 79 0 obj << /Type /ObjStm /Length 2611 /Filter /FlateDecode /N 75 /First 647 >> stream xZms۸_oLx:כI/θ5(2mN}8}%m/D ųvA &e^2:өa^3cYcFD3!$Cʄ) q&˂da4iväˤ1y&,&R$Iɠ0mT1%%)R0ee=thI3R*R B0葐Lk,Nbz!4ӎ$ Ab-3) PHE<3Q Ue ,!"(jpåfVXC뒖9:P,@20dA  BA>^zHtJBCYf 6ӎ:èVP *d!4l a &it&Ck$j[tńx< =l. fDh7GYͪ9yrav+Q &b^~QL׽ټXlhW?QEbDQY sO .^f4yۥn }&i_ TBb2!y~)n!IZz ]}f>ɫIƞUyTs]lQ:e [L-Qw$zT9&gZKhE~<+b2V|-ogK{bE ]UGq 8ap }A&. pe9jYhv*+2 GWp DEiZfvVol:|LW&} @0o1VxT.M8ݺ|7egho{7')zR/s?ɫ5g٘v䥟H oNjtT~]M_0Eox#ꛥ\b[KDk"cOH4ڀHR8az/>U9ۛuCL9.F%Ҡ/U*]uZBJFZݥ2_ǑH@`t2/[JFbO<( ",Nfnq dm]k[z-r $A^=̑Σ̤h9Zj\P!Fjơx0A(To=KgbwD(ۥn;͍p!jeT;XM[ic5:5Nb"7tthU"b& )Qa5-7^r:n4r( P5-]nHq E0`{+^J`.& ??g?7>S>||_"*$;꫒ˬ̋ScQTI}J>|+d TzjzazWEqw "LrvetKIwlYyi{۶V{HsC}xj!k[𫶧y8P 䎷[޷ԾuZ ,_yJٔ# ݢ }> ?hNƟ7,o_6tN hE[J[ոLQ@ll )%_tW>Q9$K՜M kEA*(z0F%\a7v[8Z>Gڑ݁cWLtYҴ7-gWI5'%nk^YWkV]2g7M)9 =lΣf͞}MҷKԲ명5mbݑ3QPu zM@+Ӑv;]nv;߶&o`Y<^8<_}~c)\^_endstream endobj 155 0 obj << /Filter /FlateDecode /Length 7425 >> stream x]IGv?P) `c_t6hޥ-au%Y%C%Q{K$ܨ(oqsx6W'?hMqgw7'SIfrЛhN%yswS9gNL p: RlXxC&\9!Oޜ: G>74ΐl9?]ߔ1 (8_ ɤ1֗:[ xU#Nr>gRk_$ɀn-}pOy o﷨BŜ~*i-SrVӧ= L̦T7F n|F봇Zkv)韊Dd NM>M?-Q6lgO[;.70ߓ0尭pF9?GM&5Y%&&TS!|S FfS G7E W&Ef9`й ymam`of\Yj[eFnnt# #9~'&|ǓnN1'߭6y 㘘aM8Y=0k 0eSـ'K$6bvc00-sވc tRMdZ*rPLÀjCln<Ț%~3+ ݼ_FA7>}>_f1""_jcvD02@@: 8n TΙ8^0uu4x)H Ƀ2>D$oa_ *W@P‚/w;ovc]顫S7 54ޡj3U(uh` 38ډ?m1h-aS!+p*)E10I |.m-' siX2መ`|Ɵm*+ZueKAaTKZƆr^Ȼ`}58 Pu՘Tؗz]"{ɋ%D ].v cu &eoS8DӞ_UZ^N5G)eQ#Nr>6!*.`87CH^wiiUĶo}nvPz+ºvi .hPpM<`%ytbǕUz!րYdM'9ֆ!gbvH2h"ʮĥw%d}qU" b<7qc(d /9P]זMi(O˽P+"(ꡪ;&-N^.KɁ "@*:;97V::r@Y%Ȋ.ssTѮU"R/ UgɬtO.N8]!a "V|d =Ѩqg)Zr1DDIa?3Kd"#On0f+hrd,#LU4(EʱE]`̈{* G[ӊ|RЅۿHЬ"X'8?Qp'&jHw2娗|͏3?Y$Π qm\܀t#qʐ-*QU#QrjsqL {9!bB3J1q5KW|56QHѿL^]s`WIB'5lVf`pzcHUZpulK Gd-d[vjc ްuUY Qx 9,Xmky g;oGtQǰI<hwbK\`!ZL~4-$(Z3=.Q ĮC>`Od5¡&SEq>Tv ;+aH'@ V 8"ZxM Qv}3@ô7}~]Xd8^n3cÐ2DYB^ %}q|Y>Z Q:I:Ktmٍqq,2o 6Җ~(=*ΐn~( 3F"gEv)%V,-.Lq Z| ~MR'(Ar]ft8M[v!`^]fL  ԿU(aښ@b-PcȻl%0G[+cc®b>`6a03R Kt°icl1z MS9acknyJn ,'q.A5w˙Fe7 ,VkǙpcoK̏l]^O]{zjOiT_v,ed 2?|vJfeh$!ng;!s::V$*tL]{zjOEtSQz>vM@LNZ:/Pt$qxJ0$mǒ1|0 -gi͡j%XF{1̒v(hY+CM QX*W r~t0ejrO!XƁB_0mvÈ0kKwg=B;s%hIm{#)]IUV\+5˜%mQdvU: )GޅSnн@R-q,&L7i{7ʘs [ABur=@̼ ]LZ9P>{-87&, d 2yH9^r+YiWʛ#kw}I1c4,ڗ>=j4'˰iu5b1, c({t.>2ak3}Ft| &K{_,CFbsO[ano}":h{ڲUutA/5D#[:emoY@ 2b5Blֹ/^[h^(i񚏁'Ok nbE\<2ˋw#34ԕ6Ac,|`N0Ck9`h;5R*{mԚ0V+nr{ ~tAVr{]")06xjGڟӄ%WRr!De)"(E^(]%τ"T SAe \Ley.EuS60`)7]ԤحGXv-Fm1g)cl} `WM3䯕1ct%xub|ImAK# AET:R Nv6!Į:0ֶ2r\<xE A-fYDG*Un/ulpE[;C|Bg[F,dGbuBKCW%yNzCeG"b0pd6j'$f(嫜B$_WBh"8ک!FJB<=3J:ewYٝUҊnW%-WB\Fj/D:5@VhGZ>o}._ H+~1oiU ~X02 C `@&Ɓu8 `[M~H߅]5g{Pǻo~qQObDbFyR8>P͙!MN%Sͷƨb~Rh[k0<nEX ۛ<Ơ4[tCIeÙKI*-b:A*:J:ON&e--U2C׽Y}m;CѤY,%2 Z|ő)i͋Ģ3Y9D@%1 k:жuw-R? z8VhŢӧ  -ع<# u$CHkXMgԖ=4;cq8=ϠT:"\hiH3lQ|&}-]P?ܰun|lq [N&̠ś3.9gO \hxȮGTU~Do Y[ʫk,O?tK٨g-ć+Nx]~ 'Ɓ=!3.4 UѾҌ 5g$B"O F|ᚗ jJ,B#*v/RE0HkJ9UK*0ƣv(;79 θܻƔMɰ9dS&{!"I|pIx'.*9!'*A̗ kd%`?z= Ȗoa ڝYzBXi&O]nL"I aq.gaK䪝՜.(^N`>mKΖĊ89͑'%(Zi,V?x{ynEHxHO_Kpdhe xJĔVT3R\0`E.QK8({+z," .rٚ#xA}eRp%{^e8>R{{ ɫqoR(O<_3>a8M? ;Eu؜$wB/CQ=)'8%Ca֥K]))"$Ӟ1y`izJr;W<Ѽ 1۴G~aR_M1mԑE7(VX6z')"Ph]Z%:|{ĘooGf/lBAy-6=$8NQMJ)fDk3gYݼ P6>kS]O[Qlg5|#5|k!]oh#>P3 *'&{㞟\;mG diU-wY/S P_XJwn-˜RMs18sڽ<9??"endstream endobj 156 0 obj << /Filter /FlateDecode /Length 6169 >> stream x\[s\7r~gm70~HĚc/8UZNJq\2yQ$-мXݭF IYrR!Nї/8?I /óda`FTEGf?'c%f6h{&]:AHΤsL4^"&3 bNM05d3M0t^3A,< ;O6mQ L?d ]^f9wszWiڞl1\O;`$ʘsRM%|LD;;6;FEqF#۞w52.6L7AFcT?/? HWU ؠ꧵FDh6`'OL ehdȄp G畿\iFqM< ;xI?}LUH!ր5'[>`ZBc+ G:Hdp !d,$bw s=/y+R"{@ $BYH8Fv G.1;lKTgW':8tX.Bch [j̲+wƷdvce>7 I>^1\A~c t@^1{&}`U2hl-S:W\ R93R E03"KAtfő6z0< Lf!e6 PA76ᚶKz_V\ 5xbܓ*Cw'-IvWCo9ʥK*aF#&8*0` ~7C'EG4ɂƺy2O+gÛ:<c 4 VQ3Y&U>8hrϪ]-J6|Z P@ r&2y1E#`ݘ(HzUAU_~1Cl3l-5wvL A ]5-.袮C4mR, Mgq%,a ")MFNic0kk$q ji5xcd]fRCLgz*z|ӛuC\'rܕ9cg'TNcFl*kBG5̷x+U'SLC'v|Z_vm 1eggyF={{ӺKL9._O1Xyh@_;Asn^JzÚ~o G/Jqoe/{&Ŗ;^U]AwS8.v;\7%bpTޫXVƪJK,N0*n^ͻ:C^![o׵PC5`M゙0;}H&2/f-C1Tc6w;rQ:|^gն!,?8^p5&gCÃӭr8Yg<9-==q fbYl-#1+*a ˅ |z 8vwdWЮCSʨm"9Z)ږK /g$b~K Q T^>DЦea.99mDKсxabN+Yr{<"j2ԏo2IF[a|:q@Kl4SN|uWX/KBy,_(xIC1i@oWWD D"k{⚢!F?'>11&xP˃޳9ɂ6Š e9C *q#ڢzuxjNVFጼ:m+D$yǼ u#`v dHH/5Y"@PQb 8j6әq:V9IѨE }"NzK0FϻPpO[K*u|lS;}nLfuOo֬jW1DdϨ?0% G wإy>.»^UEݯ:c%nG>9ՉPc.ɴ$KvkS+ھMyr%%olmT" TO*9KL"箾UQ$e J}͐!վfJ"~l5P>Xp3R6'EU"(XTyZ+y>;8}÷ /]>A+F0IKt&BI(GfCb@ DvN-pW_ߡ̀i|yMٙs~vH(P8/av9!h|"#TݽJ!K4l9`,qq<G>6#8bךO:٫6-f{7&8in.\L ME|2mcl2!s]g%3'h']&cٗ\ i{ƗrF5%|: zNvSԟ$RiI-KBR&lx`%-g)" b,{y{ v1ר4)B ySf:rvW۱4,oFдUC/ =SdޔKQL#ɮSfF]Bzll @~7GĪT}hO{SR˜U&FK^+5btg`n^Z@{FhuLPoRi HZtˏ痷-'u2?x0IJ|)5nxch urա#L?"-2noS#0P]2cyb8]֪9$nK { xO}%xZcB-]HRwT唏BxKgsI!gooH ~tvcjF/|d% G!B1`K]Qe} yԤP-5NI틺eTzk/ɏSte@3Q{ |鋥q&[ٗIŃ2; Idz,yMrDq^fp=? ,v?p(r,UxBa֎sKQ^J}2s2O[fu$jk2-|n[0}6}3j׽j u%e5̲t-LaX|Y%80 ܛƀvMkuuo{n'oĆ,b-WoR9tD d|LQd@3[㾩S_@,( ^S7#-ɾUX+{6-e7RpJkD*0}euv8%\8Q;yD^[Ll к{ |+Fx%(Ǖ*iLmHݨe҃+$FQ8gk;񯕓 Ѵ;L5Hn}›VtsTD5õrKCe5v}ۥ6Jc]ůGKSH.$^ΟVWbAWoKP=؇J,MR6dmKJ:|^O:s#-k_'Y :d]Wvql!FvΆ}Rm.Lw|v@B ̟eD>a˹^h.ӲfjW!~aVtpz%:-t _PbsGbP[z`y]]_Vjoʊ' E큛Z+$Cg";̇{\D% ,>4˹V(^oqw1Jn1vxu1 :Me(5z!ugL\dd]&H@?\^丘9k%$IR'5wN2l ͂,&°^SߔQ@Х^i"J&Wy@JƀټoِOK}Oաe/1|B{{b],-:endstream endobj 157 0 obj << /Filter /FlateDecode /Length 4946 >> stream x\Ms7{ u : #;<2=k-(l )J(bKUHTW(n B#e"_^.W<<{L՞X}O]?8Gx/T.\x|jyc;غ>Xr)z#Pu!-z^M:@V :Vo1@6˕X%fvR3Ceнw4yTwNuoRhU;lu I40nijyp+㕊,V6YRF8۽J{?ٔ٠?0m&DtE N]`|#<1FFtI:͖U`Vqپ!Fg}6DE$M3d0Jj>K!?/OsuYT/~ (܃uLu -q8zEx e +]XG$5Y4d~q`'Ph #EYҦVb:OK7F0aI$mChޝ.!8cC҅Ad9c[ZSu9gPY0-%Tdz75|]W g{MmO&蹙<ǵ6Umٱ)vw`G(XP iBK'ADA@1"E6ȡpH)Q343ѶCGKMSêI΃y@ZLRj:9~G"QҝM8 F0h/\Ìuxy GA&XXif^en>xոlіvq6 R? )3`r>d܎;ǎzE)+O#ϒy8ōL4 Q(. kuar"NOM% Oۀs$ 'm^yb6eR t!fe蚲R_1WGH,}1Zym; \i+/ &t5Y>uk~i8h@QQKaVJcE,)L")Q.BbIl.s>]l&$@J5`dJ M*sϳbpUGG̘3͍л;bx"_6r+Ц/FYOm95@Dx;!qI:  6eƅ(Zo?\QPLw`q,g6gY|?;aЈ6 )%>~b%2#6ĸm("qх1 F熐a.|<"GmiٝH)<&\~+/MTiQ~<~cnyKu)`;S Ke0f_V(ZNI bC{aY& zc]nҝ JS?@8k&--`CG3r25uHU%tV0<WLkbcS)lPasԃ 4ps&f| ]>y6E K`)2ZSRdL٘۬uWK|uLy>S)?Md^~kgojٹkxqs'6Umٱɒf6%օH]viLv fg_* m=$ h r `{H7'q!Wy0Z25Dn92z=CHx ЈMvIczWW˴A6> ?c$Uat6Zʆ6HLY31./YYpתqNBw}~#_,[K<bMlqYgwrJ黐ꕩ\80߆H"]N äpDI4ks^ϴo,L$gU[;%x?3Ĵ1˼9B< ؛ I^|`,#b^*6P$ m4& w=%6W>IҺuUZh/ULh( M봰:?:[G|g\O "iP}iE3g(1L!4ݓc cp cvrcyvfdn# ?[c]#G 2qMDxJ0H T`IrAJ]I ZRE $Bn}Hᕤ+j]IM|9kLMR)XxU7fҥU?8t[miٕ JH2Onϵʝnp$4S%8j 1ϰ*O:4&$,a:N(^W7=~HJ}^n3NQO3NfGbwJyȃóm i4co#CxۈSO}:]'?'Q GRȇC@{Bjkv!|Rgoj׵y5zedzc{nPc6Ofwjώ=MQGa@mU!&$ rL6ӏVFHBy'kBh^VHm,뤭Ga hq0s a/ԿZFz@ﰗC1s^ʋ\; qTʻ\Vg4m\g_mig\wRA~P2sg6i_w[Q48i*͔pp}޻f;Z?e UB23I&~ݐr&I/7_lmVȿ^ʼ :ո&RgG"~nema;)>v9sa qE#{P|N:;Tn5әH{W<3А93 ȨMxUmymwn ~_ϪC\ͺui s?GG?ٹ mE?Wz%}5E4)\׳ǬnpŗЧU|o?5OSФz:nW\uirN1b3| ׃0|gdt5K$lcB$}]KRYpgVz9Ql% tK.OF¸xbBbW'LKT{:M kd(kx䇁j̶:D9e=~ x$Hv^Zܢ!XGkv5s/7e=!+yc'NH0%_ a c_#@L#y/A?6^ Ux?Ua/jsӃyš]zYþf4q;L1_b/ݻendstream endobj 158 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4762 >> stream xX TSgھ1$Uh]qV)bQ\K lYÒ VW%QL;uVFZ^_z|Ɂ$nW c$ f%JId$odfԚ'{WZRp;;ibX$c( H%X{ᄨ,vs[>e가p/ULP@*~u82Š/ZP0"*9]c\DD]<#c\6\Op{Dؘ(pa~5(8U_/ށA[}l ۹xe3=:2TUƛyla^`f2>,fev25nƝyyYx0Zf1Y,e60˘&9Ƌ̬`2 L`g`&Ɍ`(3vL*P!97lŰVtn] 2쑼ud1\1G)#r tfQ*G8ΘIc;q\Wt8pj7TK}nR{,@I zˏNDFDdC,p J [1i0BDw'8aq-P[ 4LK1GtQ ̢IR>Hœxrar2Cdo惿|d I,2zLM*4;Q&>cTl],&˗M# p1.lw/*˭^P5K''Ǎ,n0w1Ѓ(8 ',Π! pfEE&#SlhAV+.:\M1jP~fM"껤i:ȍ^v~58 !sPȢ#Wd UH' s1l>C /\}"j& :0+h30$i4x=q!;-př(,Gr@q%Ny;3ĉpߵQJtYmh1j3@-Xr$M%/) 1P+U ldx,ؿfЃ5 ۰ q)4)%#⫙&ѥY&'G*OBzʉ(?h .2a*mR4f2## TK޵7BȬaxДZ8Qu.uk8/F*~ۋ6Z A JQA\`-ȭS8if\U-.)3xn&G%=;;9ia܍WU;aᡯ»u]eG/fiwm^rv5\ ,蟗jziBLC')ȣY*fAKlꃶXp?F1Ct ngfZàXс.+MA")5dѕl2+F[V>}~e(%TJy]ʹ{<}Ƅ/S4b+l vUU՗w\K( >'>Oq̗?}Jem4q胊P=i!^MҠ2J wa$_gf͝.[ 2|p޹$L$g*"7W[th3tִU5ÏPH9G|h-bOì-7Sn*6F!)- 'jʺ;^q% 3V+?!O!һU"&/񅯾_7e>Mj i0,>#֮d(*%do+.ypOIZbt'bu(ٵ?p9-HT^WaɢJ9SƟ8QZUSЪRԂ_.'aKE~]# A{uk3b`+:܄~o[JW槴S+Зp_?%x ׉/;Px-(S<ֲ7R{kY?7k=ڌgLfkG;N8.I<_Qf^/"9!m iB ;w@kJmds0>w9J]]-pߕ/Miuݡw3p2j>!D5Oc.uަ[F^P8۴^tk5J1z@wj h w8r@kHGGkk@|Z(:hKyis|r!]8[]\[dݡ-7>>O@c+)*.|J88t*̦$J62Qog㵕8:gPqiqpTPwe(AvM8HM-CYm$N=/*hZD^Z_Ig++X6s:,cX2mbOܳ7qEU@&]oYl^XVpbj CFOVj8?|Ab7sڐD!eaRr{Z|~֙ؕ 8N^30,y"/_i0Xen*R_CYՁ6;]A^l%kP7֑w!yCaYI2OjYCc!jGr|c9UNnQmV*i7hr<2)>`&-7!FJ~;sZP]tȾ@WPx/%qT4` s老 JHxH?]ڻ|HW6w椺]5yBy5=~}w?tZ G-S:΢cO6ɧ8 TV=ti` asO*̅e-;ÛTE}q}KQߐEx>" b'NWK;'_|ϰTFGj)8]6341UpR> ?[jy./*A I)鵼*S"'CGO!31'C Lߢޔ9֩iXΟhZo-UWQ~ JRtZJ&C˷xOƐc.Ҏ(H7"@()mFȨJV\=Qx0Pže-F_|3Bt\M!}ˤ&~kWٗшKAw]`Cʲ'^S+Pr;t)Ƌ~BU|g;"rM!FOM7+,!+L)<:c9q^ovt-mOxBRFԦɕѡ )rl2ӊ}QGq5 il>e:Y~mߛ3i&#h7|lQ wBFGJ@Zɤe G=~༼ֆӥqTsVfN^ؔ]Puo:KUaix:޻s/ڄF!,=IMLuA|U*uL) quQg(!-v~%u# Jendstream endobj 159 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7869 >> stream xztga XLlPI zŸ7ܛ\d+ɽYXn)Bm yy+&`Y3{Ͻك+:N4ϑ"z`ݯ$w>}wk+= bïGn(@4?8$:loh13gN0ięsvx9p t ?8 0zoDDG~9-0|Bp'c9DuXaapPJ@/9'X^H#V{zQrnм-C.,la%;F-r_bJUޫ}|XCM'M2u3f~$~1 }3>5ZEVSQ#5{Z}j5ZO6PcXjGPVj5F}F}H-&R(Gj1L-P˨rjNfP)JL X*({j05hvPT2H(k*O VQ=)`Pa/aM=`uV4CVїFѽp}o[feMW0e@>Y/#>=(y=6m'ж\/6琊!wsd8 kk8#Gڎ\;I`B[L}޾MWe@ (qأ[L[_&hSժa+tVrZ!5  tWa/ChzelsXdo[aȚoo"5ؠW[A`q,FcJ 28(A韮x!wZn0P0h W_5x#3ɬhY)[%IV.PI/潲("5]lыimI+{G@V#(?dpP/f< |EN: @-/4sĚWʌD>/zcO^#1C .e!9h&8Q~Pk>86H].A[T]`/ܙZ`LtCF! "ex\g2N-ۗr&G9< kܴ Jː%+ E[;_ԠFנAi.K2I6RSx׼}V$hvD+19/yK#fb0+=DjCCzN`@W&At1d HHn|?ǫT<t&4۷m\AEm/Ч|_Gq-S"M*ᘪpEg1-{"ؗDb6DJ.dQ8]}H1`pϦ7H@zƚGIpȯ0 C\LH\z KLdUs suw!~W:qDX5Yu{ȋ_ t7VCf!FZ<99<N +c Ξ  Vl Y}/+cz=Q]~9/9OIiVU>c;xC*p `0q!N[Ѩ7jxaY#@CFQg8oZP.IQ1JRdEHE4r(EI}VC",a`$8wk~H桭}͢4qddIӪ} ,IU6H"ԂZ)Ց JyծX'r".wqQt-I&Cz SU)I W;ĒY{-^[\)׆VGc(Ŀgїi}mű ltG.0ِU(A覴/y׫,g[XoGLjl;SG< $<cW{Ɍh +h0A\~$F4 }/܄z ~O,-Dm>EVfQ;#FZϒ3z DQoS-7]ơ~s$x,=&q8$>XvB$5ǯ˽U#EY]Uwt])eP73ҳ3&A)'䧠l4SF۵:;e:7 IPYv'j++PN! JH2⴩ii99Riԓi4hC!f?ܲn|j*q.sz7s%,= n. .*/Γx=y %GM氤$,)63!,UjDm7*fPz fU8BPwTPʉOfFMũv>5,<(`Ƨ󊣐G68]9ڌPݏ1Mf~>tQ LP!M˭m+׉q<~ɦyTSvd:zM\8!'ZɧѳiK6`f.tZUQUKۮT%>)IoZfg偟.G/.p!оV&`Gp^hfbo GY:~D* |`-ާΈ$ILLNp@4b^2!>ГXb-v9rzL <`ne!ڇؚ{W [ͰUCI7j;aQʊ'sBLb||l?$ma=f-Wb`'8iB:|4U/1k7ٶfj'ZEU|(Cuݹ?9.KCbBj4'b5Dk#L0 nKl\?]qAxn5VF|$eˍ!fmK,"<\bY+b; -j:yV9r wZpoժ ^~|A 9VD=<ש_2eD}_@p3z|ՙD>ʉ䖞IJ%"r3O/]pSZHi|s ͧNsj5Noӳ8y\ꅂX4^ jz])x&$B_\syN'x8xkQߜDP K'GS%ֿC_~Wc$z%N#-cmn9Z+%|FHO'x]VZ.Rt\uQw2 *x(@;ڑ dyR{lvYduاǞci#ALHk;%@q>1쫈M½w`[1-ѱ%4[<{:b`ȾkT,*ٮmRW3+6+Osب=[}̴Xs.rMCUB>MSkȃ> ^]ޭԨ!(Ju.;A2K%Z_j};AB$sNy2''] 'Jg3И=C<%8i'jEp$(!X20XDҜdmjJ|G:B"lp H%Ҋ]^ ۽3p/Nl<-DKh2r<T?B#l\ߝ- @=/={$D,bo>+B.AaLDQdeuѻng60=+G3M$2ѝc t<=F(]alꋨ ~WneEYs|,BaV' Dl\`h충jݬos9m+EЧxRS[hd# $'D{ 1,b}SpWji -iӐ^b^=N-S ٕPS83EƹչLXq$>6|q;^U]r=F:v>*ncXIR4i;M@h2_a_xt3'Lݰ`IBKA_Ue./=ϭ#Rf!C=R#9"Ѱ m5yz*{ ?£%m;,zGqO֦_d {} Rhj\^{U/D7: B_E_Z˴K3~%~-'BfNS愶Q}w(қ$lmXYp4$4j2Ւ&5O9Yz]$:c ӊBps<9A5^-ENH|V7O"pa3ϻ"UK?LI. ! ,2zМ#5' dPvN7S@7^_}zHՒ{$%I/dYK/m8s^ne=4uYjrid*ёNySW'/  *./&ԛd}f(h0((l>@(^M-C@ eL2`&v@p#@Ԭق z81wG\R 7(+S-KNsB[o. ߼%JѮj}}߈a- >j"|JsF[F6=G7[hn}ݷ#53% FXrjNSde ZG&|2$plǫTd9 .Uy)(<gvX1Oejq:獜:tI| LG3t;QGFa h yWtREn 慺O_:>Oz8_Jm`|dgp)D)s3Hۥ9`,'_$[;nmyͫ$h4 P !jmĖ6[l2VmLG! 37GīG]ŸvT6B?ib߼FwG"ǯ5uGAW\\]᛬ʼn<̏ZBc?_ۋiQGuj`KblJU]#ݨ6-漶c G?*O_%7Y5Um:A,g:r)ϥ 5.m;adu*)jHd2Y&sDC~Z|WRj2^!D2$@OȑGýGu& 6n$íHLv7vu8ޥ]+(~}FLҼg;v#JR,ߣd{m&4~΢>3_ajk6zy]J-iV>PULD&m\ =ө,Y"f!9Fѐ\eqE'BgEyk=a #ppO턕k:# X^盲}ꕱD b~%e;Q۰76upb+?dφt -idh4h!N2 IB9IIWw,tl[qCwr [; \8jκ!d z,x\'rE9rr<+/n]I!XaJa3Q`.UIgB>fwme V5Lή+ʾqI==DYX sC#t>tph\y։d )TLb>qU8jl:^̹/Z]iZm|9C,#mpy6Q͝unqrÌ=^4u~\3/ ^-\TYLβ}(7]+~iukg=͏43 [!8~56hpMҘ$'ܿF,C?>2`[]9w7zr_As  !Bt#^5Vݛ_OOݎb<尝cdߠ7oh=oׅo'F V ;Z)e3r!). ㋣#bBEA#:[%l_Yal:}iTVUrbަw/SSJ΋\7 O%)ա V]?-c~$nX!~ʽ/>La.>d:P3̲̃}gajGSC9׏YSa ] ̌'i8f6`dя_ẉQtʌw޹B$ŨWT7FViHs*y00~w՜Y2w 8,-?E Ě Nhq˂W8Irr*fyw mHY!Ѿ$?:7Gn%F/p'dc4 CzI/Ȯ*.I[,'C Q5ZŞ%khRZe :RڢUBuyӉ_ĦQ&eJoRte'ȅ_u'@F<}#!-&m"5eD{=Vx)Ru!&LA õU^G@é]H(ׄU&Y1 L]C܅c2h{**a^O=yGl4Qx܋?N%] zLy}jp%J HŔ2R?fD=6҇so/Cv߾W}Q)endstream endobj 160 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1933 >> stream xET PTWm(B! !aH4(n %jAhYo/ $ݲQdFL4ŊVt23ԫzK{syWF̠d2qMS\ ?&5{j-7(V6 WXc9dI q1zkgf?!:5.R٨F'a&4)2.Zoи?Y<##C摔2MF>VYl%Dkv HJHޯNlLNM(jj^'kŇޣBmT RRHKͣH)*z(3n|ƏG6m&`X]q}w\LOHCEbǻB?`ӵty*+hH`J\^g6/[?2b3x0!M:$V n.67tT `>PO Zz5DuZb(. XFoD d2dA"3rXv^5;Ra :~C[k.7ZYg~GBЇ-f6g:͇kT-^'γЋ[,]iG W4^,R6-NiLc%uTeb?' ̅ Յš a cT3tK_6p .i!kMn;u]wÙ,$J^/XYi:^mQ2BԪat~kr݅G:ahE~ ?SXS,_z( K@TTWjKX-K]w4ImPuT ?PPPזo-4y{,.6 괻4.6 fo?➠)q|*w߰yW.8|?W/9 ~g #< bK]{V[߿giZ&a&ҳ6>ͶT"}l,endstream endobj 161 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 464 >> stream x:CMSS10/u`B@PϘd  5kfbouCopyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMSS10.CMSS10Computer ModernRS34O7ҋ#J2PG$PDDKP ue.TTB4)(`aa^}vrzj`ITI0b17|:T}ʋlu\j/Q{mo߻jluPWb  7 Ȏ ٖ ƄAendstream endobj 162 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2304 >> stream xVkPgqqHb:jԞ`\yA0A !03c#kf (Q#($dU̚h&)5dnTv?]U=sN+(w7JP0A~Y i45~uXbJVolm:D3bӵ:N>Y&AOtE=F6MYqxmbҖ%5DSgAm j' QSz* t!;ORWsvN{ ܿ0x|1vv-{ <=gJx8K"Rv3gf,:Kiq]k|- ZQ^@Hfya߀ 8-_`ɨM=HQ dh)/׌:hG&`!yh؋"C4qG|y!e\IZJE=sn ﻌ$XB}}鳎QM'Y yd_Ka^GAa6Z{lu o>ﵿ:zlh1 $J&G^cp}~xD\wל#޻tL_z]h8B{:UKXHǽx'ɾf!}+ 2MT(4p9¼/_3G7QxI'n4btLK^#Ȅ|ϩpBV[BLϝDHԦmDΉFdi)X+'fTreMG`lAe@dt tȄ펔,.[e\/{>2( j/9rzc[^AF.K#|w=`u5/,6 kBa~m_Pa $AZy<`3En7X-o)u؃J]ZZ:h$$~oq:>=SsC.YKa#WGʑ] M*%NwH]'h%mqO z^S^ xodrr;O&.#f9BN4T˂, MW|#N@p|^fG2 kTj**lk)rzs{{}c[k~_\~%E+B/#ʮ*-ޒ([Ý=%o` sU FǮR2'TgG`}sH ;h/zY~iˉ]rgc:.>-_ƿ^ϋ" kYnN }gt77~ viNh6Ba#UfuBP;5ˊTe19?(ZrVM/Kpnk¿]_28 ֭ `2G[<Go.R4HO'JN޵/Ԡ@6 YO]wrI#V礗J>UWʧe>%;尵*rM׸ݯL؞!x<`Gn{l{a,«0!Q8 SW4yy*jRRԿT- ;endstream endobj 163 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4167 >> stream xX tS>!4+D9 L($Ct :if:9;s阎4miK P& Z w]}O9}k?m].do1~&ٰŋB.|V ņ=@6zd>Lth0AS>'ѮH 2)QsE-^|-Z:=)S!.;%)=.H*I'eD}&%;[ƥg-d&?;o~T8;%굤ܤĨ%QғF]8F.Nʌ IL b eϋ{Ղ IS[XHMfbxJkH1XX1:8h43Mpr6/T51:S_b"f|[U)!_ 8mLk^ Ȣg~" ZLZ$~J@j{ LKk?1sL$y3ŐKmL>u+gsi@cHJ\ZL}g)_Ai{M yٲf0jؼ&FUW2T2& Wqg:VH,;*Tx9=~Ўo6_~ Cs.lMAB4=LqvJ/zo>Kh: doͱ9sR7v2|hoN`hA?tjhd5JYڨU1[vRN-DhCOԠiA;Wsh:G~UU h{T`Pnʈ@G nzgnPaY#tG#4C+AãNzk݆rşgmSݱ Zɼ@BgOZj ̌]-NbvC+0VvsH)4-%`"J`0-{H.\2˨1 C&ղE F0v\aD?ȣ\B~ WlqZpSKAjT0Y4gCZjVR\ ' Pp@UhYhXYC` L& .WU˟0&u Mn$A#TSTL*IEI~}E/&ʑQ3I79:TP}.? ?\*)dQRjMe T LLÕc& O{1giVzj G,Ǚ%K< Ղ鵂ÃU'Wnhϡ|8=6KxLݭd99[ld)3YfK c6%@=_/"ؓG﫭ЮNtSԤ^X[^9enbTmxQ;4'ƚ%$ט]ǀii `B%6Fy*7h 嬗f,F$q*]M Q_-zS{=> "{ԭYhWKnpnqlevF$o!]G_KPl  g7>M΢0b=!j}0B29rxߌUR2fZWe6ó&\_zZ8RqS3B9J[c-|=[Q3Qi4wq)jt3x6ph!!Ɛ:0>':5 wɺj#Չ{ D gtϬ2#1yoн=?~TXRGSRgr|.n>ВӑWXug/y9{- +hdM8B ~.::\ C |J^E j*z.r\&('ʅL&R "S@ѥGHzf|>p6;@T]nYK'A< oI (dBĠÝNb9BO y[Ybw6*Chф[\x¤& *AaK;4aypDVb:٤t(X7' >5;*0Иq; {dĮ񈵗_A3ducÀƭ1ZC^}g?A]:yFOߞ6 ;ߞ GYEX!M3~#dy#K {[1FF@L'fGkRү حeHla g.D^9!5|׼m^׼5c4Z|oTC *fYQ*E*0k NEQ@3Y\X|Zzs-6o$ 5l%se@>0]GOc4H&lw-'*?iK {~e6C'|Wh~Q; x᨟W^ Ђ?VyylQ+LP#K=gL蕥YGT+ō {9ċ<\L}^Du.W+A VZ U%K9~ k -f8*՛`ߣ/s*wr%bQž<RwS[\y M^p+\/rnse&@E~sP.mɍ&psYKr)8P0[Iݸv&48]wX7.Y%nU/X#^1"UIQemftqtc.i3+^x߱1FaG};fg#:zP{2{4rSCN_DϹ*Eo&[ G$LG$O2`oGTla]S+͓dViJ+b񺼨^D{Cwrcֳ,61[}_;|^EN-w@2hÏZv`qS`61(b) $0xldv9)m~4(}(⠶@3PZ7JfϮuZC~@k :finr o7`ۦLUxIEfKjBLVZE!#N yXquu3?VybB&8X@ jUkqJ 6p95aUPD dff@b[ZL!ͷAbOσ"ю}':Tҋ(ׁk$ IÇ~zxq^0{> stream xX XS׶>89*PCj:XPj@Dd Cfgd@RG*Am㭭^bjW_>>l^{P}(@ \2e)ݰ>wMvaN]bwW^)Mi0Nda }e"/ )xyڍnʬY:y,;O{{g{(y[*3;4tId{@ I|BV{x=- [igt ab;@;mXsb񒐥aw2+5ZB DR2`Ϡ>}MhLg^3[oL鯄ywf~6~0s݀@G~ tRnU}2w<9Nd;~h=:DluC>后 8~}]@]%n huw(Q'СD(!9:!!E1{AU=Wn3f^Pti-/LSf aHPƦҗ НBEcT .Zk7`{m@Z.&բ"ns3>4G,EGtQЧlvۭ_7:C97 W!g'hj&:/grN-3XqOgo=k/9M<߁ _lRwU5rZ!F#Omu%S/FQ a >o=ANbXTF• &:6[jd1\.%Uo%W2 ?a00 Aѱ(0>db&Oc/b_ħGӈT{a&iJWiHi=ϝx܂-vZA]O`06:W)xa&0, 0niގH_L4r=BV5kE$䰡tqf`tm?ӹԈ=] ̹ܐY^^FgG&?q37N:%c%\Btbf,q5aS#S*1aӰ# }aҢN }ͪ*RQi"?1("B_-ᒔ$aPd]*P1s(RW:ywetA4,H*.IEy]Vg{Btt FpF $a *GM@/ǍxQͱG5⒤|gkc|4>z-qUt sg˵O@^_BcQ=+w{cEUH-rF9nՋt=J=]g. Vuz9pnuk صN=|ԗ_l^m=?śMOڂ7EyUAuFajΪ<ĔVUIޘⳅ{oĀEgl--"LEc "q-E+xeM梲+ f1P\*R*PH+c?ȎpYnCC_Sn t[Gw}N5̓~ND?#p-$F b|-8jݵrL:M]WM~TAywq?/.ў7'_Zt6!2!wJ}X2;%BGO_D9U.T߃;Ϭh a tx/6zaf^@x4`H-{^xv CpgwqI--D)TlH9_X/$ۼmկ4x0ٳ.7ىĞGӭ_lrg8]>q+  G^<,Zڛ5WE8q8R(n[o,K=5`[ N/1;~( 2$陉Ohe caH}x 2g0)8` zh< 5Լ f=R׀-MP*9룥dĈ˛:' ad}g^$WI!^e P7Vr*wc#j,é[P5"TcMic'u֣w ~gء.UU  cAoL[q o.pSAϢ/ Blxߚ fE yIܞ= /0/X야z@F'?YbsDji84L7*n?~‰k;KSe{lD#'ˍ**|N$(ÐK2zumI#U,߇v#uIUiEq]%*2J[! VF%a|sp)^d@6>!>LJ CPbJ̭ Kf3ɭtթuZH!Iu7rj7\I\(C ey9s=E~,LhN6h]hI" v{,}&s!arS"-D'`{?}D@RR&(or,!xvD/q .s>Hpƀnf&9+%+9A(%\NHN.%v?aꅝatMaYҪaD|KKLh @s,- 1 qtBL?0)6]MiI)CH>ijgwqllG7|̉~l!cLKz-*n6n`g:j5.K܁cQQd/(%6ON M"=\jPfYj[ efAv};DwPAsƌC+5$#338jYEXW"Zv<65Ԓ~8H鞞BJ43 ~7\k~H*)k} >#)9%% 9e\֮KdCGf4:S)S ̄>a͞=>o F [Z_/זlF^Z&FT/%ĊkZ+&9JKedgo8aÎM+Oh:p>||wAAN77N%uFUXse[eeܤAJ}ZU: An_r6?03UylRJl$b؄8$EQ9yp{Ŧ+)/*'f 81ݫ:3TMdnRj,bReAWt|gʒ"}g^q 帖E<E`PAĊ@\ ֐I6"SSϦ|B}rb3~ojʠ;yY\Xļ8xh*`yY? ط[|N%gĺ#N)3xx:qw`KD &.KRS[I3'[hdlRZi:6l p@axƟ0ۂݣ{gA(&" ~>X`8|o#1+e{G|q*{{[| -O.kVWt6XdWwPb* ˊKɩt"dff:ZVE{}}ol`cZ0(Jd i~B!`%V*v <)(6݋֥|\٪#Y|zkT%G*L^&qzsGsn, i֣}8{< WF}_ #p(Ŗ*+6]KVc:p,WI%VG6hp NMuH3r\F JW m8\5'^MS\%=g (4c@GE\.Ugdfp^(MCYȶ:!46CMNd@8 n]PN'+X$^P820[ i,jisLeA}5Zendstream endobj 165 0 obj << /Filter /FlateDecode /Length 9422 >> stream x=ێuﴑoi6ЎU8vd`@KyrՅP,Ku9].zPԩs`vWOtiw}h]?񑡿cx[s(S1O.] P\=~ho/l0?9xգɚ!\ 5Ӕ>P+.x]p9 _[Jq0xǕXWƙR/w.=i2 - +Vxw!Lh&^/#)f+l Ey'~d @?yMGrtT8A1\9m?H-yk^>u6wKb +\kYo{YX$,aKDJHD { vte9Xgw ASkywH@K޶Sܿ=UR(6u^ғwVl9[@5@X.pN/;` 7{PW<¡S5^'g֩H;>$ eYhxx7#Os!:\\f_ !FKU<U=:NBA KNB]~Q|ANF|d}ۻ.fn_ (ez'qۄO#d$t<诇&oIJ}'MRUĦ+pL93/\ˁdT &42 ng$)w^]"+9Ioipi '!,WZ!!}*ܙ0O~_ARf  @6O Q!$`hq?uA` ?;bW%ĹWчA7q^O_t;_X ɂ D(i5X7`oJ{\ b Z>N| ѕP*nDŽ h3p]N [,ҵ;Z߄?t@nj~Dfv iUf+SWo [%H*/pjoZ,,(XOtpBݮrص.>N}]`ɥMZT5+p(x`>MU>xsV_Q1NIT` lbFoXkzD3"1]JyW%=/moQ1NOSK׆/? Yw.v[wvxVLx0YI굮LgI8'>O}!'E=ulsܒh "s#q%&Ilz RTFaxlwͳ)TRdЎS$r6Bnf^9&\QĢJJXvꋌD 82n-mX`).]! /֔l"ƃ7:I8b9 ڟF%Y|_ސN AW R~W.n,  &6 0ov)RT $ӣ5gtԛQS獣J`8]9l2bɫe Qs1Նx+Q\K|{_ߖI`hC^-g6% ,T *^+9?(oȕ@{Z/Uf¡ 8]~$J4QD%4DlJ)E"5P/eGcn 85I>y3o&$t(X @ņ#a}vqrawGkvD\vpa晦N|`(o>ǿu +o!fxZZ?f&!^G D"K CPM-ZNjv\oyƔ*o<`=h?J욒Ti v-v(p7bº p)2, N0&[;_> Z8 "t-q-RóGZڊ1NН*)` "ʠb)zf:P#g?8pȕnGKxV:H~bK}tfDspd<ӟ"eLvVB|PR ؉D[B)c2LeYr i#W76JwfYt*&US"RVl9+\WZ3$ABwuĽEK@:Sq6 9P"]^m@i?Lcx;O:4{9Zgb`\PE_pV q1%`>~d0sÚՈ& cѡfZ4' WC᜘ dYa%E洆@Q6!AU)ycqS2(S.Z쳮/fH:dgPV.VBPmgiv:-Q Z2OE٭M`hl s*GpTmpaϢ)QPFT\ B5nй7D1A)KMR>x1$we(·k\2DV#NRQ b5Q CE>L3P#'y[|R5A{=%X>e\\:o /z7pq-'*GQˍR}ST© i-)ү8E)]FL!?yG wf[ JT:':B Ђ;ЋᨢR֫ZgjTH\.(dhެe\uƒ>ұEBK߉@j7xVy.2{nZJ&tc5+O(%SdUrwkX3!zjQT3a({|``ZZ֗ OB2{_]Ocq`oL^P5Qx_/h1UÖ($a9 <X{52c* 6M]1Qxz>L,lU$?ˀΏL+N|IfEtUJWUz.u5QdsIEeMd/NqRMf37YVkNw9e"cojA~Zv-?,1&{F#"hɹi6!Wꤣ'dtF?2LoއQTPJDDФj'2J:hcC`p}dCfib?֠j"rQy ~`U^-Z!. 7_ h~6 ^DD[KFCTNuRz@h*;HcU(Z|Sf8~22M.O_o~yܪqE d@s#Ed߫3Cy'5m=\gE,Bjj&$tS(eq4tVJ ZI0'LRSU(:eaHBv彇ǚZY^oWO, ?p] /e .Jqڛ_<Ǹot=JQe RҜx-pU#U]wS!ez=ǁ Qe4mzVgX\&?^ )-ws*?ٹU\շ6j4WujEGgs\mɥ- :>dMġ:I< E,+y*'C*Թt bKoMSDYY%`/:IVjlrP(Z'fZ.G% :}kY7vϤY5vTNU30TΨ'djE}5KL&.ZS)M:*l!c+}B-) f򎱝;hR!FAW]=m?i~~e۟>&Dnr0nv VDspFG{}#@زТ-((,*+ԸV+J6yC'>ASѣZ,_e#T;~KqXCߦEPwܥ*uɲ#_~Ϸ!{r\|ScGY Ɯ Ő34WX^PFoe0a^sO9A (`n.0 Z$C*R Aҹ9GiɳgK[ZKѯ.Z~MZE>C-ZsV(=$PU_"ѬT7Tת`9 s61yj 8j !bvPl=76˾+.q~UL .`B' l- xormD{2vcW{mT4 ߍC:HJȹ5g;Gp< k*˹jHǒtP!%_x-nrciՑ(G:9amTNJu.ZH6Cn 1K1 Ze {gg?2*ߩH7imV ^T M ӵ6i @TEIMPU|CĪ了*/!fD/pgຑl #~!%D#༚"Ү`O466PajUΡXƹxKp~v!iUͅ5q{5OZMjĐÜ=: 'p4UOjMb8Jr.[bZڢ[-ÄYo( _Ɠt+R}X,qHs=MwN:*Q[B rz_:3;N)yM721ŵPLw͵NcSO:ԥpݕ?pG`9QIu]>ԆY 06Ͳ;{UHw}e9+I% z[Egp Guٽr+/Sڰ:·?.2 kArmƍh\Pe)C0Ȓf o/2B@栰z;䏘}ϼ]Fٜ,p )F"l휳=y'k)e[@j3ڷBݔQ`0G=4R zee# qnQO=)X`n/+Wݲ&^ ^:8׼=ң>TP@I癤V(F95eql*$qS@ĉhgNbxrmŖ3UT63ؔ@~ ӆB:GZٳ%c&,QIN-Vj] mtBZTRjK*痚/(zr'֙Ցϰ{Xu@ ۈ,( J7o/Zݧ_%~'O~/˧֫ W7$`8W!~sȑKĜFx+4b-靬W䡰m!ff./ڛƼI~MbNEM!6}B4/tfXCA5Rr:Ү#Lj,N$fzed0Lg^LxKC"(94UqwRNdML7`l1@`:F#~te2Z v)H0⠋]P)U25@DB$C+f-B\~;>p`~wj s?5Y>#Bn:~F#hJP&n F^S!h1b.D}ZUϰE{L?}.ƲS4s(B3q(0Q صѳU L$S@:FJSfڿ-2Wъ-/=;lmfi?|4_>p,BUUqqDlsYsM4=U񜋠 ENWPȕK@AY<\6B&Z>(Yx#_1Q̛%z#ґpǁ?4z-f754&sK`wQ_P ,)DX;yjPaQ,ʡyiLpJu]'{6Gj9枌VnW8>]w />t-X弼7cd#{{qz2)OB4ޱ ]z ՖKֱV#=G(˭Bu@X*YLnjC7jPo|C8xnvRƵ?-\~ܤZuN@W]ѱ4Ԓ6Q@gE( fm9y&TXVX'C_[msXOe`*TSӟqd[vq ~K~RkqD\q[T)RvqQ B(S19eYQ% wx@g~N09 Lyi.qiݪXD0<Kؽ鉯̽_HkgR\W9/d^7d/ $v-{ ܈5.dJ8+<Ѭ&maMv~ݽBT匨c)*7X7D\4ռwԪ-ŭN#s\pNh胾+MOo7~\iC~ȖMxOh0 z_ª|]tv6 3zŧ4ֆ`LGp`},F<=I[^_LHNQjlBre(-g:ZHkG+[P;ޮkfDhTɈ*C 7 t,U Gp>C3X{t܌Ca *5$f`س$t6Z=1}ev!{,!{c&3(3MU̔BSFρP8K“–L> stream xV pea2M aPv"QŃC]hp"@  dr&$!! )rz^+%zXZU55=5~FP b䂴UKfLΐ'(Gӿ36&RcϝՆjHTBbBFkPuz,ʺR*}(gk1Sg̚5{O E,Lt}Z[|&q? kqA@S$^n[ EZo^xH gZOd* 90xל侮V'!*aU?kējzFgu+;8ܑ# v2O#rwASEUk {Z'Ev7fk*ƺJH(=M܎+.4oZ45}^aV-5ѷr4H7c50;Pb%[8:>˝xKU8hTv*_>Avb% X/6+܅ɒ佷lnaG@bC!M<\;rXtl4b+ySö8}zA( -JݬmB4E_MҤT±4A^ "$ D%Ϭl] ބ3q.Nj޺=ɥ/Ab쒓U*-\쉕8 Jm4St-w} JhPI[f%$:B(ڽG;24Ej4rQD' &>="rn=ns\ybo|6uR]ǔKpc/z59xS`đr(e: ނkWgkձd˱(:%Eh>_3 k^Z8 !vF;7T e?~J7ҟcPU.b}&N-kk-NU4>K*JplՄ89M n18f=b} K7]ތ8b`ˍ$ IRkklr-IGMdegy3)׭]g >BiyW k'$=DOZHM.ߢAaB$:+^}47%}H]|9I-r,ݳS3nh)Յ*cLe-/`E*QY^p?*vG_•q-c67Wo3_oI-;ك2qe1KZI>sIXIXnrCQ&U|$[]ԇ;W3ϩm).ήfcnA TUGL*S0ڢq:blzH6n.P?_T!A MM'%ԕB/Hg(bycIߢN<vVP `+s'/ 6PBIewenۖdmB;zR}-S( ?ԟBx+tݟu*.\BWxM&ogwˁDRD'J?gјڠ١m+YQh_7{8wY+ױ4vQ* ?ƭ~^b9movX^J'ܻ! / '*^Z)}"$]PxnKhj}AML$w c6h` TB/="G|лig8.Ԕ' ݄C *~f4~+ε4,(<W/>pHX/De]`R;Cs}#.5wymh~X{(@e.to ҷO*'?4ED7{&,NRj#O=ڃ/qNof/\)&* ėCهh<;I51KjEWo7uiwnu\qX&E-ǔ> stream xcd`ab`ddp 44H3a!]3g,l|<<,+ }=U9(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMUSJ;)槤1000303zGO>0w|%]qӥ78_-,_/ևl_dnE'luGXoEߪl|?^,w߳1S_4dm,n9~fʛ2[~}cW*/_<\v lwuK~];]6L2X4{Ne7ο>2v_s/wt\Xpa`ݱendstream endobj 168 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5620 >> stream xX XSWھ1zQګuu׺ou׺ZEAD@H!,@֓ HIX6תݫDkmiǶvs}}$At<{oy{!z 8NIJ[m:uTvރ}o!-]̦+{H.P?x?p2et8%)Y\ؘsΞ3mʔ1K┄xaxIr ^ߤl%$J1OHM3)^9I$NZ8vBLN$9fsbf8;q_JP!^IY&gI1EB /3VWfJVg]'M۷!qR-[ OMO/1s# s؉'M&Fb"Ml![mK8eb;A,#&ˉ b2xXE&kLb@ vXbxC`bE Pb#!ODD$K,"%.DOBqpXw =e^%zuZ@EDEdD>4D&F>|ݯmكAA'N?2hgQEDuD:1CSZu(6߯>;{uD@< Q,5 6g<8,&e U 5e4>')c* Ԩ@(MW|vU.G*bp"nGd9y.=f,7w|=٢ 0J,t܎.^ 4-R^rXS>@, j>E7}`.k6\x}""QGԧ`_bҫn>xu GMAb jU.\z / >#a{.1eslFn8鏚?titȭVVjA#09.uz|@]<2DL6+̋}8vvmv#PVY^QSN,zE8'/8JGcw_S2Z%/R/PTCQUe.9Tü`0/:9~jȺöRuM yۘ&32jI LÖ3Lً$X69’4N:? C@/1ySBFCJ]ή"z%ѥ_}x՟BX/j8*&s%HPĿH6e]jSYZ˷6YMQ8ͽH=gvc7nr(D4{P!0⅕#h=k#]BࣈUבh6h+w0AM/y}S\ @t Va6uu !eW9hN<r2@òI:d+h-^tx1U4o>\ Y͟]~RNFޢd@T2OM:E7)7k&x4;T-Hr`/9q#_+'L^0}=n*~Xp;8<18~zqyY "a$w P^R.{ƨU Sr@6ǩ w !ӵ$ꃊun!hV6nJw~}ZjuRR{Eo]& > 粹C;UNqVb$qY5ogծ pd-@g FPy ؕI`'Z=Mܵ8o0!T@U)EZuAځ.<Q]EaQȍά.$lփSDY pE@_G:2!WqTǼfWoD(ߜ=i=7h :Hd~eh~qُ!߾QBV#(ɗ]cE`ҌH 9V[|HfN/#$Cɔ% yFGت8 KI`=M ;>Ν-.W8|Brzcx_·<8o:M^!?cx@_xG~E']u~s2@o(~xr6"HhԔ7u| qm(W;K@= %edjT(dkXR`C@CH;wcW |tE&J{*Mf[";|y^]7jFSSXh,v3<)T@=;c$wIϕ.XRE}a?4a/zĮq@qqvkbݳ ~&ꏑ/,?m'oG`yk ;Mr x1h#Gtsc.Z#6 P^:zv=fb 5ڝWbKli[ꭍ$QF/XNm{ͫ>-޺eǰZQD$d{4Fòq.1F0AYF [=}}v7iX LЙVht 0\cmV&r&ߔU^~EmH6l\6=E]&+(eJdEV%FӀ..k,̉iDKn/7ZF5ZJզ4Gf8B]|&gAv[C:zZNRlfOb=drQ0*P-a{’NΒ?Q|l{j)+; }3Y4qc$wE9_M uCÊ+l$Al;\'+L$[[qy.hkiHRt⑃GߨQz7Yv J8Z.bR.6fԠcuPs`5ӛ٧iHgpţGVA.%z__`̗׏̜MBG-/c;iK]i7Q^c+lI2~:V@#u*!MTop9R dV &H%7rȨfIFp:LNyO'thR+ڳZKmoB& G|>g,uL`TLAhAS'C*|{hs% M7![N9`{1>u[2wߨR]Ahۓ[ꫛR`du]%Kx=uo ?çﭹ9*}6kgp#\LZ|-}7\ FU $%mVqp9zƿ hU^wpG[!jLA":MЖ,Uv/Vw&m=uj=qP_-?jHy#iqZݘi)hZbϪT[,n3w W‰pV鲘MfKwsd[ !|T(N:?)н?#p1Dzof'!+U['$hWC+z8THڛdg47z6-,ܱރ<.hdæ* qxA<=Hom0J`ܟ܋'F^^L1`- ;gulVV?y(+Ck8N.8jŵx' ߙ ެGz j 7h ֮ؾ(`Ct19%E(M?rَ.*uNNIeXp}CݒU(W%45^յh;cm6W/uyZFPGr=惍VC"wGͰN\(d69+,N\no;l{|b4"ԡZjlFRck`_.vR[b35^>}rf6o[.݃@"O]/.`#,Vb U ϡ(W %UU鬩*,-?m/w}rY.o~Q# [CS4v+i+T+G/./-NPU`ט9%+sTÇv܈7ѺBH *lfkSM¤h?Y>\p[;XO1ßdd=iU])hxxC*Eh>NfxgW}tSW Ñ\xH6Ն\5ȡ9WaOuHJMf1KVi$6Ua[9epd|TϹ.\or쏴ZU5:JVj3[J,&}.TY Vq5:*l~Ε~[e{؏ZJq+Sny5 EK]y5e{ WY.EJ7|az"#kk2endstream endobj 169 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1372 >> stream x]LSgϡ(b v8\ .@cDʼn +-Ji9-QZ-R Q$"鐩0Y673\%&ۢ3mc.\ޛ>}?q0ܟqΤa'7ћ8L+ᛰ6evŁ(Fl=XAe0WP*J-+jD %D;wm,JKԲB)H%rE9DCH5Uʎ:.Q,LTKn.4RQRJΈҕ X.r@)WUi$jQD0,BTk$gKer ;ea9X.cGLRc\"7^&s,8nSx>_!A:.9sX1 EL U,4[Y(s|"yΡEӂ?n1Ln&v˝#(xRzgzғ;3>&8ԧ3 W'T)O=h,Q砯Aw޷p̓5EZիvk/&K O&%ނ7P!thGO8G= xnw ޭ46>]AfLtI|2k8>u DAAGaC8h)˨LeRYgb(vf{Ax33v¦njmLp+9b {1~Wun Onarx5FQ4=fQ5S,f-46ZG ]4;MU T%( `Tpl.T8S0xW>;<)D|km]^w&]q'FunyTU" ?+u 8".nxa` zK`$3w~`biي\WAT{ʥߡ ?(C`f"Ѝ)N_LO|^Ţ8{<84W=$?+IUZt 0E25ϽVai>@N/On.`6hW궀F[TImn<-\>\I[:n\gfb:A @}ly~\ :He"t*f4Qd@4lWY|+^>}i\TݱXl/=zove2$в'2wY6$ivbۚPH2K)/DEG1endstream endobj 170 0 obj << /Filter /FlateDecode /Length 3979 >> stream xnGBfcð 8A 'p!$ QrHæ ߞٞ]?ܬ鮮j?^ o7?jx~s >Ho#*X飈AT*-z+]=Y);}v%z#{B]Z^KcB"tg_ɈȰcl+pCZ=Ǎ?#݌'NQ]!mN]4 1h'2pgX-b\2T 8utzOp(MSBõC̗}M Nɮ_M,#lKIMTX!yd"z!+[N:x_xo!*1 rɎ|A[*lDRs Y+ϮՏVAA 7^QvD @E"w!0k1]Ko\7U(RtȈW}KKC@BqɈ] i-'F-nAGks&}h#BF2]kf҅޸De*hx7P*%e+zɸ8el-g/{ 6(kP>ph&yAH?q8}Qv&@èۨ 5НB*e1l qIMg./q8<=V9L0۶/A'ܠea 8@1S:Jz}[Bb$By2y^uEAl%+;w Q(d6\M X?4^2AI ƀFB+ ),]f#;Wsa Z+0l:F#{s&UO y俰R01+ yB夿f8]IuE7€&VKbոIx ى'i7g1l?fIE;% 68 m׾b&Fkgpj3 E&) )D]7W@>ȴ1p I5L\{0%mݫWd䭚;Kّ. lS^VM_g+ }9JVʗ2RdFs4Bg4^D;@T0J&O.7H 1|t/`$[?² F /=G^7pG}]Veuhިo^chdh~M\&g95ۡMWn i ӇݢM{ U@0V~>Mdϛ-7eɧ([9x%Z=)ঀE}{QhKIM/ xCk^blL/>ӏiD?GIbtdِdٔ3,q#r%,&q[SEA*W 62m 2y߯꺬iv<p|gP  /1芶fޔ|W5`L:b7Յ{1ا U?6%eYPzsYoZR}r dRܵ^Bx[_}s f٫\kՌ僉ɐRY- 3Xp*xo . 2}U:ÝX$&_xQ$d+q5jߧq5jrGjz՘sWF,>ZKrfe$DOyA-1Pf˥sLwwA_jM×ڹRM{*pCʙ50%6Ym6rR6-SȪL7(jT|ȫ,q6?:U}Azt2߰ džU-ϥ.Gx6Lvci=eYL 6M6zعH5D5 u(oӻ8Qw5F6U{_$2 /ŰXa٩cAl/+0$F^XjЩr<*nT%, w"^R[6~ F7/!#ZQWyd`-x󅕴y&aSjvlR$&!FZOV)5vAyEpLJ7%TUm~Xj.ܦD e:5$ÀO6̊`z!$x#cûlfJNk`6OԬq_ܾl[ ^gzE-K, UU$f`MWJ:x'鄉=zwb7'q[ P3T74f{rs/YX7a> rr#T*NlfyĶȼ6w@ogFjjwݶ&5lg6vQT }*KX~|:Ʀ0s~2V&lB6L\J5! .=m'^ZKZ6S NKv5&{1lQ5É[/D=YX2Ҕ|0RzQ:O;'dD`Μ&Z)AJs/c? \ lz/2NlH`òw^.A&S%f T|WDuBh bרl:ׅBS^E4W$;4䅖w8ð: $JCm6k6nf 'x:wAQHCl #q|ژv$S:IaNgvw1En,TDŽiA`j5OWtU۞I9MX3-dgT{ѶUW;F ۜK"oo&V)&]ܙa zl?Jӯ*Zc2OuDX6͕iғz0M'4%C8n !/vwդC@OUbVΚ!yF-Do~g ShE  &|z-f+渦}0G\=_mai2G4|ldx _T-6=ɺ:ʧ_00#FdB+qG8bӊ:3r; cOyXV[.c<,tlh5Ku߲ŨI\Q~HXC+g]PK=j魓> stream xZ[o\~W"Og)wmC}S`-ɲIX@ޙ!]hBpǕa?:÷&#oWo8jJ:~{**0&VWG]sS;hǧG/j`zƐbr=RA IRz >aL "qG7hㇿR~ح7: pS8{0pׅG [fa^}B,׎V8< uXHפ Q0Yy2(goPцƸ1z? [7NՆhP*ggXܻJt^R$uքkL,["E> 7t33:ȓ7Ukc%J.+n B٦wЕn.i7&JJPXI]Tm|stWG.zᄽ9zgtg2}Cِ#JЏ8p'ѰU%[?xdr#fo1j@`?ba*AƤKZ#77cz/Op"XHvwY Ncb\Xue|׈@7La-*]Ec." h tD{XYbp*E/mT@U/ @e, ^`e0Ǘ:i%*yYɱöE%WĻL~1?(1*,IUe창 cl N:f'HjX6bE`vx$[JÜGmMb8(̰=E + zh.i%ZtΥŤQ$<*M>7QNB=VG:Zڰ#akKIX"zpsYt[Ju0Ք+#uAF) )7ybܧŠlɡ[_P@9NOAmTXg?\Jmq)`vq4ఢݡd̕R%8 }0qelX ^.aN^Zn&[OG=&4 +qC ldN[,=r(1w;IBl3ZQEWv-I+ |tOlѸUNƦL}C˂ $rDIm15 !A6oLz-n#N38 ,pgﲸ\}Ƹ qM#=~a8Z4a fL[ElUYU,wPz4-\ ! anm2G23R:&b 3iжfpR!*ۓ HtO\6 >8=$iPYEAq~1{l |CS6+&XB'~F18ntֺ`2>YR;Wsdݲ riZ%.&,{=TR@d0vut _Ulp^CX.|J#&^*ЀY b ?La;"dž.OQ]Z> MxCɌpAȔfb*wGuPۣ/2#`{[}H3ʺ)V&k3h 6P}omX,IlMXWFBeY*bN H ՠ~{JL0\%b|M )( :B# 4zg.I vY*0ۤA<6]pybiD:({.PT4~PFJes¡ÈnQy:j4 ybjReZssK%]GL7R=&m|WVIϾ԰w;YXZܗwfo оhpZD, jo&~i=kK\y-L \՝᯵#0BOz|`_8ݲ5ffej)e>eE+s¯yà6sgڰ#AZqvs y3 F/bu>M$%EyKqt<2]`~ >(<]mOutSG\D lDGyL?Ŧ%޷R N2ݻ.'d |݁NOwDd Z|Q5t؍{)⽜@u~s }xqm>?Eo4wϡf-ln- r!˯߮u9/v*|ˬ3{K3):1e=8M}GU=IeSj R0ojK3i@߿endstream endobj 172 0 obj << /Filter /FlateDecode /Length 5600 >> stream x\[~͏PuWx/. g`WJ֌4R2Ld%=*Y-hsa\\7gNׇ3u~}3M=\9HzƤ>xyƟsc?4&/ޜ=\nLjFix M qxZkG-lDIt=pC )Mk×8iw 0yi{aU6{ܧN!9 )ZhqqПS ~JIzt.9}~!`LR Q)o9o: 'v(y>}1';!QM>eq`^N@萂Rnla6 {$'FКRSpG5nYr6n|psnˡŞ3 r zajǂIo)%2NyO ⤼gVkfDfJԛ.i3͟^U[htt6y7ɯG/ޖ^P%eh]#h\ ;XiĢ \rb[k;j;zKgt ItLzA&oVS%f;9=?FN|Nm م<}9&Rv$@[hLR#rv0&X,>>7^ l">?d'u>T݃eembۅ:? ڿ ㎛)U՗7L[~)hN%Nf;P=h/ UbUQ[V*91S:&wtpE)3/O@BvEdaN"9ǡ]YzSb rn[ &-i|MS,$o;Wtk56;|[)X `[yL)BK"O [] ~g)nC 6a,1A6N?"g0f^7?-ΞEA;;cF<`H[HlU^GJȶଏsΆ;ap. zc!22I;R4_Miy{(ͻݱbLRj],M#4obWA=*oewsaM kFs&b:n'|"{P =.W27T{R6x'J]̠@yE6)QHbr+ ܳJxa9ݢm*]5H!ZynWFcPqΣp xS,tԮADI?kޛF@-̎wJ&3AR6dzĮWak2;lR-{A+Əhku}$zNP*3q?J0~$ A-L$+  AJa?F%!F\1Web;^_!M*O {7|DGzv#gAF{!p\ N3qQl6UH#Qa=gQk૘t֌ h8"Hʇ5a C(4֒_M5̵'XI.8B-Qbч`+'C^$c~(Ga- WO`MK^[ F{vw}Lax{mn -lF+ι$YX"莱6ۙ5[s X(XK1zPA!t FAsCN!l}0]un5 +c rDU,u LvI 0FD.dC+0L\3xB 9V({isգ}ouOiX9/E.3i؀r18_ C><["oWƭpBoRc6@௘ja<~r;yY YNdjNld]6kn%k?+dxĥYx5I^5?a0I)xξ~}q3N9;̮ؑgV|6{akj3yO"q)D `֕(f+=(l[ﮄ0"%kI\_Ӷ&P"i^mp[ٕ+z]"-y9^[s 8v' jD@U"*wicҌ]sX>7giv#(Kah&K, &G ċw7b\ `4vc5Zs JԒ(v-e^,s58@W}f_Uvn E1Ü<hOPc\NTIu@͂a^éxzUkVvmk,j, L&Ve.s}_bqڭ/}DWd 1{0:}JKV g"mG:=' Q-(=-YfhIF? ɼ|mJ-11I)] 2nbjA3%G3a% otBlp".Ը5I JT L"޶G'JXըkY"T>>J]B&,D:p$/.eU 4ƳDx?EyvtSΝO>*IXXP^HXRrBtC\#LѢ9 1I8166{q&ix !Eٽ@Y&TrS!+}tNd<4.kK8:oFNdՁ~ h?oCyg1Ao1#0H{|U'8 86c$Dkgg-S5BP'*b䘢Eaά@%%и8W$ )5N ]zog2Gxg[29oGi5#5}xA2 t|`)W|-^cmyCIYQ6aQ9"{I@@".y"ë $^B:*$!FMaJo]N'Ҟ+ 'B[w΁6%8pP`3솵U<$¸)jr؞:H pY|uhɂ%,3F&]m@?'EwƑywJiU԰tl n#6DI`(@k2r*KOg!i6 t/&>ѓxgR7Mt4j&E2O!i]׵,Z )>8k]86?pG!U0f[Wy lkGs6@t1& {wUBD[zKj|y?f/xmdVA7z2ϞAK79I?G2)Re eNP}YRp*ϿR"74p✐מa ?Ǟ׾ ,&*$\ލqQ +uW*|T}B=~N" /*xckj/'lé(S=p3ge UgN'FRGUׯp ,ڴ7j}$oa;E 8;q1wto 6I2ݯ·k3݆@?NI$\x=lœH~YsEϻϋg4ū~6\_qЬ%_neRwv=h&7hti,J# _sc7Xw,S'TN%&,9CBnܕ'J8O'3e^ ~P nbA$bWA8tvcIi5hNpۚ%x͇3TcȱwyG晽k 3r麔[5'AoWLlw+f 0$43CvV~.DSC؋ud:qnl]q|{|a_yY%&gc\Sh;ﯶݒT"r~58]8D2E-u`֔NM3 MImfQ,R-My]nQ3oÜy }þ<SOtjwSXH?'[=h^k j @GkGđ\fat^7 8Լ/8V-FO<,ZY&~%ZKAMtAmH봿9GD,~Fp6bmz Sd%扜Z.ڎKD?}dLzaMcWukR'үR|ǬUw&156S5KMiJ3Tn?JMς"CS@YYXm 9+(!nS8W|Q ;o(2L8[J3||A>y!H<2+Q=ϋƨgmHGĹ}`}ĻOvހJ:o+狐驂(arwu2C>n~ "VOڥ]N'f;ijTb8bHgޠb5Пx G)Q9\K^^Bj&oX cJ4);I~.j?Uꈗyo=4z,^n$5,g4\S鬭D8""_fEV n<./fW%O-t*endstream endobj 173 0 obj << /Filter /FlateDecode /Length 5790 >> stream x\o\7v!L׺|E@Zl]d toq %YNV8;`=^;0Pwx8nvX?"-lC ه.-a) gM{~%JٸyC &jmϭnK&Om[ aszovb\Q8-u3men~:20/Ǹ{E$ֵXҁ3NZVxSIқ 1(rbum_ʛ`%=PymAش=a?AZ'1`>yNR 3KцebDŤa{+RmaelU S0MYۗ:oFP^sہ`ы5^vllL8+yl Η+39 6"'ېGH<+grSe5g<۬r' s| gt\ c7/2v2l^2@w\cΠ(dvGή$;HnU)){,$'G:'g}'80F t;:YG벆}'S>iRHh(d(.zcDaJ%F6.aa%bWy0,PQzO<8[\7SYb^gqvacan:eVFy,0OEXvKIFDDqYbzMi|esvMdQI 'O| =,Xhg ::B{Nh4 򒀄GÐ"ORlW՞47i|˹Xb:qHe`SQ(>cg=C/($@o'cH)]ꝵ4)`Ș RR^dj55],0ͻڼZ?Wp<y%omNjj/FbHQ 11+1c7P+c?i\H\U%}k?/'g<s6j0 >]]ۡ9[HQ[=ThClKn_WmmNC *jpa_1B9;lcVʛeߐl/͎P(:9fM߱>Glrlz J&=)8IAq!,Bi"'l K(+0yE,pu(BxeBIAlVZ\|m-1:Gg?RZh϶X` Շ>2%'PG6&` s4F5btΑ!P .l$!{3",ǡbmm~tU-Rc4Xkm䍪O[OA.4gTN-65;*%%ojS*?Ԧ=|dgpMQ _ f\v {-xe.yvãQTWh@=<ʚF:OyX4|/POiyB(T@oG dOj}G3p>'44,nT-d|3cwXnm9iv.պimVLZ+De\r׊D9;ĐaD]2P`!iŵ# a9(u,#oU7~]~7`G/֗ײ:ĹbbAu;I#DDgRyky?8=WLŊta/wᎢ`U-A7^cN>BErքqw (2X3tpFtvFwsPqtqq\kXdr$\O\,t((>KIxsx™9'8Bp,GAE&j@!ĦbDQa.Hab HKZ0孕!tMC˨$vv֐XiVs~๥Lɀ_G\E vU%o+uYW#R1Nű$DkF;M&kSTW~*-{+߉zRC\rXdL_Un|V=}XzaWyS[JXzd9,&l0SEwtEkJ'mB.88pjt8],8"V)ӧG i5њۧ"v^ >vyAIa`ZGΫqao+70rQ? ?)[P`C / d >>jPpҢ4vF:qXL Vy+UxiadE/_i'F`xoՈ0!2B4^!өn:|×aQ* 7'Vۡպ'Mq4L vר' f UY0$_O@;UVMNCqEhy<]hΉcO\3- ЏG+TW4+kʅsۣZ|p^]vE5Y V uj[Ņ º́Wu AU|TaEe ksL[AQR ftZB |K#wf:2QеtMSYX?`RG,n1삊1q~26V#e2Ե!ŇgVmXtPCAjڛ|Rn$4<֭,Wz0C\P[ K*4@}7Q6Xkr508<%@R3LӴ%:QTJȸ+kԻ}5jP7yB:_ezC˫Cf4+ :}kik_H>v6 oUfY_Iߦ3G[mRjX]0cu oO*VLWJ8>hآ쿀NZ8+}ruY7 /?a=eFMaymyW?N8&{OG}3IųBlendstream endobj 174 0 obj << /Filter /FlateDecode /Length 4791 >> stream x\[oq~W91l/`ae$1pDRlG`.=szxHraOwuu]5/ƓzR~=3 < ~UFIq֟}Ƅ1h5:lHZ;ZlJ%̀t8pM M9h[zjO).ly'$^ ۲sJ?9똆0êlH!; s>&A9ҰypF9g \r L֣K8uvb?:O֏)|A а2s+ڈR:aw=3yE?o649֌;|\@{jm` ?㹒qr^~ RZmLq4؉Bx؊+w{+‚ b{+#BilA~P}/:=tf4,âa&$rM{y_&hS a҂2+16HBX*1ĆYNǞ.YYmÂTPؕrj}]c%4م = Ȱ{AXrFsc iVAN ڐGo@qSD\\02]4MNs?GP[T(OE'NH-ڋI͆?aEQZ'ɮw0Y4 ;Iޝ{$IՆ%[>d?2A&"!P@9UN:'m .gN BrNl)el5eȿ& ɺ4<+;  ޠo[VoY F 81Zcu{Bq܋r 2[-8}ވ97WJ0D3btL>PWr&E y+Ok:( Ħ~zEOc"n.|X%ځ'_%a /7`8ph 06K0[F5J(We5+&=i FM:} IHS /JE,VoGMRFZ윆d'curϫ]ϑuqg '$H ,R:|[ux]MORBB.'(|r)^>@mv2 ̷9jPlNwzCk1h-mˀq&2 R3|wu V;9OU(DE4J-Ծ `!uّ9`8Y{cVrAo&ɥ:|[ux]:qMWr Pi{*>Qix[DIQ UPD iB6-Bzݚn:P ˚Gp@шpKڜU9++*M*wQ&!6ÐQŒ 9>A8FWXFF0ջr68S^!vYkU(|5"%qmޡ]!W!詃00/K vEn`3 uB)iD~%%puP^ Ag 8s Lpe-o y%MQ&s..o% |Nu qՏ5oSu%'uKZࡌM&?u(}^SɕPY2~k \C!\7>i/v۪ά ha lL^&`M4SSRoyCI6o;4:*7\׬׃v0*矨_s7p;hdQg̺Pb]OuFeDz'| xAS7 羅b3RaD^^ A:w%R5˜j V;016KLLn W0e p]Ǥ06N: B3du~i6i#Dyڭ/*ө{iqy/moz*Qn$K*z$cp˂ˤ&o|\*a 6acjMυnY3Cx1MV͜r {X mPWLrζIIɽ`U;tIRC5;~ wn.;D7•w;f)dQ \vi=𕎮Ws m4R:48ùANT+|u v_Eeq9ae`n[9'HBEEKaDJM>R JDlWSo :LIEǴyGpOmU.@$$aVw 2>2Ш:ҪiKG8) ?qOf!ߢd`;I1T} Ю+LM}:O5RZ3mҖ?Ty/uhݧuTO>xu }t?1Wܦ+x'+M3OmK9 :~[۵^1끈uxU*Aj:c闓,`}==^`^ bgv!BMK51ʊoPO?r>펖D/el2ͱ؍\JFP%-yjjٜxjWVl⁒rP˰%2!%E ˎB i^Hq-|Qa^4P dɂ1V/-R(|kҦ6H>_ DBM[ʃɖE*E$7͙A/(eW0' Rm+V,|e-O ?A6 Kdusv좯wzϛHE( 9*2( ;*:fD~`2(q*yhIDyb-TsOT1kMxK`z! tSy51^VEud_+Xi"-r ˴;*,$ IHXi_tAU% (WW (60JbE,@ BtsK9vYB,JW>}_!* ?xf;( X=5!wLZDb4t+'ZrLv.LV4P .jl^UMQbg:AZqU%cquE`XsBNd!2}8YN\9k4mXrK6bmmE[nQ[2캊5Q{/xNa*jx N}fZVv>E4aVH?j<[ v& _3s{:ޱ gx!'CZk%A_w@ʫC帷\K"x$JŌec[?U?ա@Mo^֡!݊QZo{H ІxjEK?=UkO d]Mu-vV_wʇ>7g/ )sendstream endobj 175 0 obj << /Filter /FlateDecode /Length 3266 >> stream x[Ko fcA1@9DfdCrAr).ſ=U3S.)Q:جGw}5w3ʙG{߾~jݞL|FHE1D\è‹,1z dcQdX u0Zk *\/o5줖16gyaT*xʵ.Sg.4%hؙl0-La Z`W2- UZg m\֊7 TBW"|!A5 s&Fr2Q܆ԭ5/:٬lM6j_p¨%ػc Sc.v&GWz]%řO|B5K"s"["ψ< cc05H|an>U X35 ^u aP=k"WDN'"5dP>E>) ފB/K3_kA*?,DJ1'ɘ0̥~Kw`Aͩu5we팸Wȁt@}޼%Q*O㪺MuC몡6U 9_kx^j<\yu0hkK"/<.n7ω =sZedvr0 ,o&$1P+K!H MږZ;=xtXG j'Ҧ/ƽacIB es`(w8q>7=swq!@٤U:2])abxAPE0bf᧔E׊.bB$ӏXfp=X_ rO?5okT ǜ*a!7]814d <\ɃՊH)YfVWP0σabg%@j{97+6~E@$jߦۡOw x GC[4vMp!TE*ǃhQC6Ao%'XgT@_pL68%rC4z T>S;s~'hREݺl޽dNQ8  ?D$ƟIwS!d-: bScu42u*br_(JQ)T5H^ (@sZ+' ?H8&&dcԊ` B0*P eHih'Wi?j % ce/[{(aIW&8/ F,TJg$s6q& EfB`oƎ"q>݀@V2`=^t3&*~G@-%}ǖ+5j7C}ϽeQŋy6 :P8PCBG[U1y >6ғ6Rp5Vkp*ڴ73GIZ Z?MAWΙ!hܒq`);GEx4pϮH c;fdpI`{HhkƒJe)C".A 9q-PxVZXܐr"`n9$]Ѿq8~vi0C0la4gZ%4tOnU8ڨNy5C\VӢ%X]5ǘ0^}e>`/DEln6=8Eka:VvPFöuR`amZQC8|%o;B@V(b]"rw:cޘL1` mW Kat696`sXn\R2f/D9=*\oPZpScd\K nѯk{laW$SIֽm~AwAXuQ0f:˦/>b~YbPF6i/W}t@`v|fT>S=#gH䬳-iT#>kr&D;yxFtֺ,+Ή >P+.SjՎ^ڿ:vN_ށ@&F4ʦ1_"P}[] ׿`e%ka0R5jzH$cXraك<}VDڪhj2.|K${r092r%Vދ z¥f*-.Mǥ_=RS|W~?N{K/\QSo۪FhS(Q&H#/xLԎ#_%o$rq -wۇ?H屪J* mYkGR Wb;UwBz7/_TU'wxPpUa202 Ȼ=XloXբr~ 2lPcK)&2ׂ:w):|lK }C0Iy֤b7f*~{pU*LDve{ϴa BԠ(yF/&ַGǔaReؿ|=+}#= j2>ʿu rAW,y+{[w ߮oe!WbZخ?DaX[dղN5y# ɨO+D0Az -8"ٛVU NܗhgXd^m{ M[d7yo=^uxL?mɁyN4י#B!p Cxm7 ]5UYf!N>|"%}<0f"N8Ǹc~(u);;Y ,MX"9m'5Q+fĄ{"eF#9Q|)_N=?;7~/endstream endobj 176 0 obj << /Filter /FlateDecode /Length 3571 >> stream x[[o\~#y:zOyhhFCkZeV ggydvҗQѳዓ c6jt: V6j֎V 0TTi88cNsFNQ| 0n) s1 aU)4OCv8s>&A9Ұƕa<w8#|/ %Hd=ARǧGC^SJr9X?pڳk t.]o#dQ<0'&-O ZΧߎ~n~Oxɤe }ͣkxܖooژ47Iqٕy_(BVZ(m Kl`7|{BҎȤ:ڟv3>~ztgVo_ww LӾ~떷뒯}g]=+.Vi- O:dUe$ w 9h wvB%<4a,x6Ewn]X:No"YƔp䜂-P\ɒ*ob`PE˿FMop)zCzC|;z8B>N.xl:7pT)\ (Z)a.<,tHH? W%g_pK\))G# tz]a&V8̡ 0T#=jg#(p[NTN..\yPރOYWϪ6+(|X'˵u (0 -z@+RWªP`-Er29ža H{Ɣؑ?&_&-PI9ۨ8sl`8#*o0@MlNv'C#~/ .h|-,@'QJ9^9Oޯ #28WZ1*nfNqG:j-(e{ T,FAzc\hn~q6) &taJ6cqƁ'gdpu8D,rf;P %CfQ߀ZzO!n^tK>YY F~`*PkW(o٠7NJ'yJJ?y^R/w]k`1L{o|*.(@ UpTipUlѐQR.̓Y t`0e-O ,kd[ !XS Xw nmeoH".;BpVd8pOgT0A!I'f&*2G4tASrI$pR:_InE~vIe׆$q uć C TVƚf zIXMt@%\` NӇ[NſҀMT$1f)XR(\MV'$oI3xCV-TQgG \A<ߵ4#ѵCAA+aqO$ʲcy&CG8J_;N1P]drdRЯoJ|[%Jp*GxX7K'v1?mDJ>4/=^Xiּ|81j:uwPuW|}BMQ}C\cr%VS(z*٬r8Y>]|Obn&wߧkIGK /Ga:@a*6ESm(ܖ Pcj);X8JJJhp'LYY&MISJtN{睲KWk˰ ght^C.9V(ڶt+;n֐b!L6ݾgx&ĵ\Bx'Kn1NMP/e)9^ $oj(hv6YbϮtm .`.#QW4BԂ}=5>:Ͼuc3%p]h=GS>&&-7L xݝ+Vx`B N jҴDhtFEWgB)7h"*s״)cmӾ^+zňTV΃,v?i.A.dk S0茞`ˮQSutڒ:U3 13{2/f> stream x]o]#@ߖKmHCNZSt#m~{g\rIyȘ7=C?<_o@| ?Q0A*<m.:)GP#[{;ݗ ib)!`B wAukDH =",:]ju,j腄5N 줖!t8Oju50/.[ڮSRh67Bvo0wGANFeN|{2Km{8 03&tX,=pv pUeW ( |\u}?+G'}t}AxXDJVG_I$1cSSo yY*]F*_.ޕê2gƍl,?8].].6"*!Thf!iB23o*զ, S狦sΜq!C02h SqD@/*a;hpmr Z^j< rR>x۽|T {> "M xY^pdnHX8-l'h ݸ4_5Nz`6i ۲K/+߽j\ꂐ݄& -骐u]m{SD.@=ՙQeBJuEv04]ٝaVQ/0کjrg8!c}gKDw#QRT3T^6GFp/ԃEq:mYR^ȇ <\hJaP(@q]࿆n/uԻ\v$HYFX $5׃EGe8#)9PJjZR-_Dt\CHt=do&xV>Cw. _[ߔVq#2s YrUt=*P, Abjtt8ɯȧ `Tn_yQTBhP r~P87k$mzgs6MBM$(,@+A1M^{& FTot #,CF&=ʆ=ƻrF:M+xWxDɂe*'$PÉQ$F8dt_Q*e'y| uK ꊆ"9yX_,KʲP2Bt$;HrAq[ M)Ӿ "#F1^߲mɕ9ȩ`a~:6qtipI,alIݖ-՘FZA0"V[XSi H`pP,&^xW٨0Hi1bX+< BdDΙ &^a9 Zb)BXn#q)tK*͍!r?j"lIKgôx,oVdžHЋ(` c_rbwy4enT)UUU26]MkQvvb.2OMQDsnt.Ae9UY8xcTt$Zn( <7DIPa )wv9Jrb`|׬KN+Mi~PZٻ7+ ̅?M赒y͙ꔱmywn;\ 馁0]̋0BE\wZo%fׅXոo>eN[]K.G1s!5o=`Gvg$_2%?cYw;Z/kyO~(QpV""s=&){#%((&3bXqWI Wtm|vE$atc ճwTSxkW4<dsQT uDv#@`<5z AK7W!Ac$ Tgmu{_g#Fzr͚5pBU iPpO'vBUc톈}9fٛuGL]Zh”lpD~%˪CWuEUjkJm/S'jUb:1(E /z6 A+gd@j^lWLٚ$=SiWhs|%joߕee]B\7x@zg75' 'M}Ӷ^p"n7G4n%(]*UrrĨmR VRU~d^&^]bϕ..`D`. 0&&,jJq)@ۙ,_~[/wHNC?q{m£mYS5Eײp{߻/U `I,dygޗd::~|6r= vTךXثt=پyìyM~=|ҺvHf3Sd̐N$Uu̖K0&c?ew{ic+OڧdG{\EJ,cthMȏgbG-ghhAqcw2#a s@J3`mVlD dΚi3҉V38>H'{uOj'/q !?ޗDIWlx6{I MӠ D9Oc%zp G9?K'aP֏0[% %OLslu|{3'IA_3m:T߃.v/rޜ7?T7gNfHǟoeuyՃoY endstream endobj 178 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 374 >> stream xcd`ab`ddt v04q~H3a!S,li|=<<<,k?^(={3#caes~AeQfzFFcnjQfrbobIFjnb ZRaQRR`_^^[_nPYZZTWsᜟ[PZZZ`ȒgP./}"zj֫8G펓–^ߐ&{ r6NN-~oY<{a1sW1U{w1 b=jC.7{BI_r}b1]foZqgendstream endobj 179 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 335 >> stream xcd`ab`dddu 1~H3a!#.,lszxyyX~)=U{xfFʢdMCKKs#KԢ<Ē 'G!8?93RA&J_\/1X/(NSG<$C!(8,5E-?D/17UN=ᜟ[PZZZh 5?V>{-~ .)KJ+b_}2?S:u2ض=tQ^1}<_قγOw45\׹Xp.s}6/tHendstream endobj 180 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 335 >> stream xcd`ab`dddu 21~H3a!.,lzxyyX~)=U{xfFʢdMCKKs#KԢ<Ē 'G!8?93RA&J_\/1X/(NSG<$C!(8,5E-?D/17UN=ᜟ[PZZZh M?o>҇]ޝ+ڝ͑¾lzٳTR> 7Qޔ=c<_قγOw4M\Xpso/ u2endstream endobj 181 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4066 >> stream xX XSWھ1{E ފmnuTb]Z .F!@[/aY (0HQ.]h.23'SgN}.}{{a%}yX?-O`Pqb٤k\Yggk=A X<&IA')x44,"d#~gO8AKB -&P j8{aSyEQ3bC> JȯTej4,XҺ~?1}'Z`mtsLaI-q0@5k0h  f6o#Dv`d?=`>S}vuprr','`;3莞3b3gt c! r(vK"ϑ#b|^le{igAP2TBhE60n Vf%"j5 pVQAQY==yc%wY8>^%uC.:wV"]2u"b'z]mƳB1E/H3]xqO/%Vz[ØaPOY5C ơغ yzJkû;u1,M<1Y=D _17cNT*c:Bx#/2Lґdza8a T99ӱÅߩj@Gn5]B'rR I0kY/<?콙 آRhTݟ)W 4Z~~'4.&A] i4LE:E*رATp9D&Y!{brB~rQ:qDGʓU$6]!U'"g' L lԾIs| plEZ :Hdr/A/Į310yxgm): H 7öHs>غ|5Ds'C.ȥ~}av:]GL[=;`Eiۭ;7+ x?d0 /wxFAڜb.=j[dTUۤ79/ɮ~g<~bǂ^eZgсY!Vd.`zzܖZ.>vB&#Uab}yeqmu58:Hԅ/bVNBDe%) 98v2+C돽 5r-ъH0D$ZH*+ʘ;9Bb2+j, ܄YJ%Z Kf[4h'TsCJP TfvȕoNQ\m3Fɔzhl1#C"j%I#oOItts5P5CNJzNw_rC^%⢢qM#K 'ǭV+*¡eCϴ(Ǔ-G5hF(V H.EDǑГf7 `,P$EMt9[7;bC;ׅ*ZCmз__ܻoKvW~Jz {[KK[ >^[2Y% Qߐ;ku!!S.i32M\.NajJ[}ܻcC_ =V.ҦflLMR"UB pg">$9uf5UiW'ր.3^y̹;-^-]cUvVN݉j2D 1 |SIxbLLLuLKYY^Q g0z` ^aGO9?Fv'&Ybn[2Oc SDG1ƜT#'&E}@rȈYis/g#GpJ6C6{Oն5-;*/<4ofV23Q(9(>ht84ƙѿtFDKxjjZE.2:-tq L~Vaf ˰:bGjW#}Ij5YEN!h @F,z*/`OR 6s;fM<| vz(0?PKfFR<FmEu䪕d4s[( 6Sb< ?k ť7"i7ƻɼlÛЗ@[;glbxtd)h9_ =-IK,+B~J0_++I0t1vj>@{g9wVUǥd#0RE8!Cf'羿B {gn:[ YZl+‚}CL?r*p;z}R.Sk҉&ԧk@ i G}蒂:SJ[pNjG +RԿendstream endobj 182 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1539 >> stream xyPgwIYkƣ!S[NA[B6$"BKUPP9& xTbآU#::-u:Vˡ>{% A$`AhS==B!] u2x>$uƂ^cЬR ?8ЩILAL)R*3E b>ԨjAЇM`6R2AaUY#TF![R1 LfP=ԛAǯTtA`JYRf "Db>H"hb!!1IqD<1HxC r7BV/<H*9!)͑}"kHj]_DN ո$n 2'w,ò@?}#)v=F>,V`&:ƃ_z!nĄhN'r8I4%A%gjۃA*\|OT XӺByzHϰA5w[^9:k3>g7.V4@G: %;~aABi5pȢz7SY7lwݜY 跷D#'yڅLbptp +H]}NÎ}.(xzُ|J^Qd`Zjh+ 8<`77+h/^]˫=bBZ($c v.=UMCbп?c,wR/tA+ [j82Wث"r B7=nh] %|^&#&Z}ﵘrF~sQݗĽaI'[ SٍWOc^*k{r^e94]~q,Ε>ͅ=ĿC XWZPKE,<:g}kK#_7m)-JbC^:w|69$wLYUNt&VZ[ѧF&ٟ]p. hTW|M9Y ٱeʈEKA]Pmi{ZOP-FC%sHkHk3MlMJwVYIեr@ v4ty&6qyendstream endobj 183 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1199 >> stream xS}Lg~SKUKf' dQƊV^)Wڪ2 *H!QeDݢ8\įD^r.aђ%or/~HPg 榎lS'M#k}RϸihҒٵ!A:89pdDڕ;NKYgqs32's))܇6Rls`6ٌRX5|$xEfAp,3v덶r=,`V2f.TnrV6sټ]Vm&.Sd6K099#&re4Xm5h&*@k'h F9ȀV"1RQ&3 K^rXROĿRZ TF2JI f? N`"92zr t xP$^qVnܯoz}@w4 36.ͷY;32ۏa-y03VZ1*JT]$Epb| 'Rf􄡣R@-1r"cp[ف( UP+ '^Tb~'WD 7.`!ȗZ8@]M!ף {vyzݝP@Xƣ7+݇@+ܺ 3M7 @c`EtV{7ձu=ҦE)[ NiQ/~ )5o-[U֮B}'DprX176*#ǵau8ySG!8Ĵmo%dnߕ߅lG`COY? ~{]{^=w奐Ctu lۖS@BQ2w]CnTl򘷭j6|Ǐ]SuL{+s)oϔr$̜XCM9W/tȽm9t?=mo!* %"F cP|?u:ٚ%=2aGڤ[`O@R\8'I9ES_#@;#ꋗ1=H_fU̖%:Uj6\^mQɃ꭮Q(V^u~:VRo{/Rd>8!2F#/ oendstream endobj 184 0 obj << /Type /XRef /Length 153 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 185 /ID [<39916fe2298ada499036cb936e04ee52>] >> stream xcb&F~0 $8Ja?@6wP9CϠĴ ȖţD2"Hy D2iHh)D HUFw`5:`qɶD_`q b`ӄA$/X-pL`R,"YP endstream endobj startxref 118919 %%EOF Formula/inst/doc/Formula.Rnw0000644000175400001440000006136511710474652015713 0ustar zeileisusers\documentclass[nojss]{jss} \usepackage{thumbpdf} %% need no \usepackage{Sweave} %% additional commands \newcommand{\squote}[1]{`{#1}'} \newcommand{\dquote}[1]{``{#1}''} \newcommand{\fct}[1]{{\texttt{#1()}}} \newcommand{\class}[1]{\dquote{\texttt{#1}}} %% for internal use \newcommand{\fixme}[1]{\emph{\marginpar{FIXME} (#1)}} \newcommand{\readme}[1]{\emph{\marginpar{README} (#1)}} \author{Achim Zeileis\\Universit\"at Innsbruck \And Yves Croissant\\Universit{\'e} de la R{\'e}union} \Plainauthor{Achim Zeileis, Yves Croissant} \title{Extended Model Formulas in \proglang{R}: Multiple Parts and Multiple Responses} \Plaintitle{Extended Model Formulas in R: Multiple Parts and Multiple Responses} \Shorttitle{Extended Model Formulas in \proglang{R}} \Keywords{formula processing, model frame, model matrix, \proglang{R}} \Plainkeywords{formula processing, model frame, model matrix, R} \Abstract{ This introduction to the \proglang{R} package \pkg{Formula} is a (slightly) modified version of \cite{Formula:Zeileis+Croissant:2010}, published in the \emph{Journal of Statistical Software}. Model formulas are the standard approach for specifying the variables in statistical models in the \proglang{S} language. Although being eminently useful in an extremely wide class of applications, they have certain limitations including being confined to single responses and not providing convenient support for processing formulas with multiple parts. The latter is relevant for models with two or more sets of variables, e.g., different equations for different model parameters (such as mean and dispersion), regressors and instruments in instrumental variable regressions, two-part models such as hurdle models, or alternative-specific and individual-specific variables in choice models among many others. The \proglang{R}~package \pkg{Formula} addresses these two problems by providing a new class \class{Formula} (inheriting from \class{formula}) that accepts an additional formula operator \code{|} separating multiple parts and by allowing all formula operators (including the new \code{|}) on the left-hand side to support multiple responses. } \Address{ Achim Zeileis\\ Department of Statistics\\ Universit\"at Innsbruck\\ Universit\"atsstr. 15\\ 6020 Innsbruck, Austria\\ E-mail: \email{Achim.Zeileis@R-project.org}\\ URL: \url{http://statmath.wu.ac.at/~zeileis/}\\ Yves Croissant\\ Universit{\'e} de la R{\'e}union\\ Facult{\'e} de Droit et d'Economie\\ 15, avenue Ren{\'e} Cassin\\ BP7151\\ 97715 Saint-Denis Messag Cedex 9, France\\ E-mail: \email{Yves.Croissant@univ-reunion.fr}\\ } \begin{document} \SweaveOpts{engine = R, eps = FALSE, keep.source = TRUE} %\VignetteIndexEntry{Extended Model Formulas in R: Multiple Parts and Multiple Responses} %\VignetteDepends{stats} %\VignetteKeywords{formula processing, model frame, model matrix, R} %\VignettePackage{Formula} <>= options(width = 70, prompt = "R> ", continue = "+ ") library("Formula") @ \section{Introduction} \label{sec:intro} Since publication of the seminal ``white book'' \citep{Formula:Chambers+Hastie:1992} the standard approach for fitting statistical models in the \proglang{S} language is to apply some model-fitting function (such as \fct{lm} or \fct{glm}) to a \class{formula} description of the variables involved in the model and typically stored in a \class{data.frame}. The semantics of formula processing are based on the ideas of the \cite{Formula:Wilkinson+Rogers:1973} notation which in turn was targeted at specification of analysis of variance models. Despite this emphasis on specification of terms in models with linear predictors, formula notation has always been used much more generally in \proglang{S}, e.g., for specifying variables in classification and regression trees, margins in contingency tables, or variables in graphical displays. In such applications, the precise meaning of a particular formula depends on the function that processes it. Typically, the standard formula processing approach would encompass extraction of the specified terms using \fct{terms}, preparation of a preprocessed data frame using \fct{model.frame}, and computation of a ``design'' or ``regressor'' matrix using \fct{model.matrix}. However, there are certain limitations to these standard formula processing tools in \proglang{S} that can be rather inconvenient in certain applications: \begin{enumerate} \item The formula notation can just be used on the right-hand side (RHS) of a formula (to the right of the \code{~}) while it has its original arithmetic meaning on the left-hand side (LHS). This makes it difficult to specify multiple responses, especially if these are not numeric (e.g., factors). This feature would be useful for specifying multivariate outcomes of mixed types in independence tests \citep[e.g., in the \pkg{coin} package,][]{Formula:Hothorn+Hornik+VanDeWiel:2006,Formula:Hothorn+Hornik+VanDeWiel:2008} or in models with multivariate responses \citep[e.g., supported in the \pkg{party} package][]{Formula:Zeileis+Hothorn+Hornik:2008}. \item There is no simple construct in standard formula notation that allows one to separate several groups of variables from which separate model matrices can be derived. This task occurs in many types of models, e.g., when processing separate sets of variables for mean and dispersion \citep[e.g., in the \pkg{betareg} package,][]{Formula:Cribari-Neto+Zeileis:2010}, separate equations for location, scatter, and shape \citep[e.g., in the \pkg{gamlss} package,][]{Formula:Stasinopoulos+Rigby:2007}, regressors and instruments in instrumental variable regressions (e.g., in the \pkg{plm} package, \citealp{Formula:Croissant+Millo:2008}, or the \pkg{AER} package, \citealp{Formula:Kleiber+Zeileis:2008}), variables in two-part models such as hurdle models or zero-inflated regressions \citep[e.g., in the \pkg{pscl} package,][]{Formula:Zeileis+Kleiber+Jackman:2008}, alternative-specific and individual-specific variables in choice models \citep[e.g., in the \pkg{mlogit} package,][]{Formula:Croissant:2010}, efficiency level variables in stochastic frontier analysis \citep[e.g., in the \pkg{frontier} package,][]{Formula:Coelli+Henningsen:2010}, or modeling variables and partitioning variables in model-based recursive partitioning techniques \citep[e.g., in the \pkg{party} package,][]{Formula:Zeileis+Hothorn+Hornik:2008}. \end{enumerate} In many of the aformentioned packages, standard \class{formula} objects are employed but their processing is generalized, e.g., by using multiple formulas, multiple terms, by adding new formula operators or even more elaborate solutions. However, in many situations it is not easy to reuse these generalizations outside the package/function they were designed for. Therefore, as we repeatedly needed such generalizations in our own packages and addressed this in the past by various different solutions, it seemed natural to provide a more general unified approach by means of our new \pkg{Formula} package. This has already been reused in some of our own packages (including \pkg{AER}, \pkg{betareg}, \pkg{mlogit}, and \pkg{plm}) but can also be easily employed by other package developers (e.g., as in the \pkg{frontier} package). More applications in our own and other packages will hopefully follow. In the remainder of this paper we discuss how multiple responses and multiple parts (both on the LHS and RHS) are enabled in the \pkg{Formula} package written in the \proglang{R} system for statistical computing \citep{Formula:R:2009} and available from the Comprehensive \proglang{R} Archive Network (CRAN) at \url{http://CRAN.R-project.org/package=Formula}. Built on top of basic \class{formula} objects, the \class{Formula} class just adds a thin additional layer which is based on a single additional operator, namely \code{|}, that can be used to separate different parts (or groups) of variables. \pkg{Formula} essentially just handles the different formula parts and leverages the existing methods for \class{formula} objects for all remaining operations.\footnote{Throughout the paper, no terminological distinction is made between classic \class{formula} objects as such and the way they are interpreted by standard processing tools (e.g., \fct{terms}, \fct{model.frame}, \fct{model.matrix}). The reasons for this are twofold: First, it reflects their use as described in \cite{Formula:Chambers+Hastie:1992} and, second, generalizations generally require extra effort from the user.} In Section~\ref{sec:motivation} we show two small motivating examples that convey the main ideas implemented in the package and how easily they can be employed. The details of the \class{Formula} class and its associated methods are discussed in Section~\ref{sec:implementation} and Section~\ref{sec:usage} illustrates the usage of \pkg{Formula} in developing new model-fitting functions. A short summary in Section~\ref{sec:summary} concludes the paper. \section{Motivating examples} \label{sec:motivation} To illustrate the basic ideas of the \pkg{Formula} package, we first generate a small artificial data set (with both numeric and categorical variables) and subsequently illustrate its usage with a multi-part and a multi-response \class{Formula}, respectively. <>= set.seed(1090) dat <- as.data.frame(matrix(round(runif(21), digits = 2), ncol = 7)) colnames(dat) <- c("y1", "y2", "y3", "x1", "x2", "x3", "x4") for(i in c(2, 6:7)) dat[[i]] <- factor(dat[[i]] < 0.5, labels = c("a", "b")) dat$y2[1] <- NA dat @ \subsection{Multiple parts} We start out with a simple formula \verb/log(y1) ~ x1 + x2 | I(x1^2)/ which has a single response \code{log(y1)} on the LHS and two parts on the RHS, separated by \code{|}. The first part contains \code{x1} and \code{x2}, the second contains \verb/I(x1^2)/, i.e., the squared values of \code{x1}. The initial \class{formula} can be transformed to a \class{Formula} using the constructor function \fct{Formula}: % <>= F1 <- Formula(log(y1) ~ x1 + x2 | I(x1^2)) length(F1) @ % The \fct{length} method indicates that there is one part on the LHS and two parts on the RHS. The first step of processing data using a formula is typically the construction of a so-called model frame containing only the variables required by the formula. As usual, this can be obtained with the \fct{model.frame} method. % <>= mf1 <- model.frame(F1, data = dat) mf1 @ % As this model just has a single response (as in base \class{formula} objects), the extractor function \fct{model.response} can be employed: % <>= model.response(mf1) @ % For constructing separate model matrices for the two parts on the RHS, the \fct{model.matrix} can be employed and additionally specifying the argument \code{rhs}: % <>= model.matrix(F1, data = mf1, rhs = 1) model.matrix(F1, data = mf1, rhs = 2) @ \subsection{Multiple responses} To accommodate multiple responses, all formula operators can be employed on the LHS in \class{Formula} objects (whereas they would have their original arithmetic meaning in \class{formula} objects). This also includes the new \code{|} operator for separating different parts. Thus, one could specify a two-part response via \code{y1 | y2 ~ x3} or a single part with two variables via \code{y1 + y2 ~ x3}. We do the latter in the following illustration. % <>= F2 <- Formula(y1 + y2 ~ x3) length(F2) @ % As usual, the model frame can be derived by % <>= mf2 <- model.frame(F2, data = dat) mf2 @ % However, there is an important difference to the model frame \code{mf1} derived in the previous example. As the (non-generic) \fct{model.response} function would only be able to extract a single response column from a model frame, multi-response model frames in \pkg{Formula} are implemented to have no response at all in the \fct{model.response} sense: % <>= model.response(mf2) @ % As \fct{model.response} cannot be extended (without overloading the base \proglang{R} function), \pkg{Formula} provides a new generic function \fct{model.part} which can be used to extract all variables from a model frame pertaining to specific parts. This can also be used to extract multiple responses. Its syntax is modeled after \fct{model.matrix} taking a \class{Formula} as the first argument. For further details see Section~\ref{sec:implementation}. Its application is straightforward and all LHS variables (in the first and only part of the LHS) can be extracted via % <>= model.part(F2, data = mf2, lhs = 1) @ % The same method also works for single response models as in the previous example: % <>= model.part(F1, data = mf1, lhs = 1, drop = TRUE) @ \section{Implementation} \label{sec:implementation} Below we discuss the ideas for the design of the \class{Formula} class and methods. As all tools are built on top of the \class{formula} class and its associated methods whose most important feature are briefly outlined as well. \subsection[Working with classic ``formula'' objects]{Working with classic \class{formula} objects} Classic \class{formula} objects \citep{Formula:Chambers+Hastie:1992} are constructed by using \code{~} to separate LHS and RHS, typically (but not necessarily) interpreted as ``dependent'' and ``explanatory'' variables. For describing relationships between variables on the RHS, several operators can be used: \code{+}, \code{-}, \code{*}, \code{/}, \code{:}, \verb+%in%+, \verb+^+. Thus, these do not have their original meaning in the top-level RHS while they keep their original arithmetic meaning on higher levels of the RHS (thus, within function calls such as \verb+I(x1^2)+) and on the LHS in general. A first step in using \class{formula} objects is often to compute the associated \class{terms} using the function \fct{terms}. Based on the formula or the associated terms and a suitable set of variables (typically either in a data frame or in the global environment) \fct{model.frame} can build a so-called model frame that contains all variables in the formula/terms. This might include processing of missing values (\code{NA}s), carrying out variable transformations (such as logs, squares, or other functions of one or more variables) and providing further variables like weights, offset, etc. A model frame is simply a \class{data.frame} with additional attributes (including \class{terms}) but without a specific class. From this preprocessed model frame several components can be extracted using \fct{model.extract} or \fct{model.response}, \fct{model.weights}, and \fct{model.offset}, all of which are non-generic. Last not least, \fct{model.matrix} (which is generic) can compute ``design'' or ``regressor'' matrices based on the formula/terms and the associated model frame. \subsection[Constructing ``Formula'' objects]{Constructing \class{Formula} objects} To accomplish the main objectives of the \class{Formula} class, the following design principles have been used: reuse of \class{formula} objects, introduction of a single new operator \code{|}, and support of all formula operators on the LHS. Thus, \code{|} loses its original meaning (logical ``or'') on the first level of formulas but can still be used with its original meaning on higher levels, e.g., \code{factor(x1 > 0.5 | x3 == "a")} still works as before. For assigning a new class to formulas containing \code{|}, the constructor function \fct{Formula} is used: % <>= F3 <- Formula(y1 + y2 | log(y3) ~ x1 + I(x2^2) | 0 + log(x1) | x3 / x4) F3 length(F3) @ % In this example, \code{F3} is an artificially complex formula with two parts on the LHS and three parts on the RHS, both containing multiple terms, transformations or other formula operators. Apart from assigning the new class \class{Formula} (in addition to the old \class{formula} class), \fct{Formula} also splits up the formula into LHS and RHS parts which are stored as list attributes \code{"lhs"} and \code{"rhs"}, respectively, e.g., % <>= attr(F3, "lhs") @ and analogously \code{attr(F3, "rhs")}. The user never has to compute on these attributes directly, but many methods for \class{Formula} objects take \code{lhs} and/or \code{rhs} arguments. These always refer to index vectors for the two respective lists. It would have been conceivable to generalize not only the notion of formulas but also of terms or model frames. However, there are few generics with methods for \class{terms} objects and there is no particular class for model frames at all. Hence, computing with generalized versions of these concepts would have required much more overhead for users of \pkg{Formula}. Hence, it was decided not to do so and keep the package interface as simple as possible. \subsection[Extracting ``formula'' and ``terms'' objects]{Extracting \class{formula} and \class{terms} objects} As subsequent computations typically require a \class{formula} or a \class{terms} object, \pkg{Formula} provides suitable \fct{formula} and \fct{terms} extractors for \class{Formula} objects. For the former, the idea is to be able to switch back and forth between the \class{Formula} and \class{formula} representation, e.g., \code{formula(Formula(...))} should recover the original input formula. For the latter, the objective is somewhat different: \fct{terms} should always return a \class{terms} object that can be processed by \fct{model.frame} and similar functions. Thus, the terms must not contain multiple responses and/or the new \code{|} operator. The \fct{formula} method is straightforward. When no additional arguments are supplied it recovers the original \class{formula}. Furthermore, there are two optional additional arguments \code{lhs} and \code{rhs}. With these arguments subsets of formulas can be chosen, indexing the LHS and RHS parts. The default value for both is \code{NULL}, meaning that all parts are employed. % <>= formula(F3) formula(F3, lhs = 2, rhs = -2) formula(F3, lhs = c(TRUE, FALSE), rhs = 0) @ Similarly, \fct{terms} computes a \class{terms} object, by default using all parts in the formula, but \code{lhs} and \code{rhs} can be used as above. To remove the \code{|} operator, all parts are collapsed using the \code{+} operator. Furthermore, the LHS variables can only be kept on the LHS if they contain a single term. Otherwise, to stop subsequent computations from interpreting the formula operators as arithmetic operators, all LHS components are added on the RHS as well. Thus, for \code{F3} we obtain % <>= terms(F3) @ % Instead of using all parts, subsets can again be selected. We illustrate this below but only show the associated \class{formula} to save output space: <>= formula(terms(F3)) formula(terms(F3, lhs = 2, rhs = -2)) formula(terms(F3, lhs = c(TRUE, FALSE), rhs = 0)) @ \subsection{Computing model frames, matrices, and responses} Given that suitable \class{terms} can be extracted from \class{Formula} objects, it is straightforward to set up the corresponding model frame. The \fct{model.frame} method simply first calls the \fct{terms} method and then applies the default \fct{model.frame}. Hence, all further arguments are processed as usual, e.g., % <>= mf3 <- model.frame(F3, data = dat, subset = y1 < 0.75, weights = x1) mf3 @ % All subsequent computations are then based on this preprocessed model frame (and possibly the original \class{Formula}). Thus, the model matrices for each RHS part can be easily computed, again setting the \code{rhs} argument: % <>= model.matrix(F3, data = mf3, rhs = 2) @ % Typically, just a single RHS will be selected and hence \code{rhs = 1} and not \code{rhs = NULL} is the default in this method. However, multiple RHS parts are also supported. Also, there is a \code{lhs} argument available (defaulting to \code{NULL}) which might seem unnecessary at first sight but it is important in case the selected RHS part(s) contain(s) a ``\code{.}'' that needs to be resolved (see \code{?model.matrix.Formula} for an example). The LHS parts can be extracted using the method for the new \fct{model.part} generic, employing a syntax similar to \fct{model.matrix}: % <>= model.part(F3, data = mf3, lhs = 1) model.part(F3, data = mf3, lhs = 2) @ % As argued above, introduction of a new generic is necessary for supporting multi-response formulas because \fct{model.response} is non-generic. For model frames derived from single-response formulas, \fct{model.response} can be used as usual. The remaining extractors work as usual: % <>= model.weights(mf3) @ \subsection{Further methods} To conclude the suite of methods available for the new \class{Formula} class, \pkg{Formula} provides an \fct{update} method and a new \fct{as.Formula} generic with suitable methods. The former updates the formula part by part, adding new parts if necessary: % <>= update(F1, . ~ . - x1 | . + x1) update(F1, . + y2 | y3 ~ .) @ % The \fct{as.Formula} method coerces to \class{Formula}, possibly also processing multiple arguments: % <>= as.Formula(y1 ~ x1, y2 ~ x2, ~ x3) @ \section{Usage in model fitting functions} \label{sec:usage} A typical application of \pkg{Formula} is to provide the workhorse for formula processing in model-fitting functions that require specification of multiple parts or multiple responses. To provide a very brief and simple example, we show how such a function can be set up. For illustration, we compute the coefficients in an instrumental variables regression using two-stage least squares. The \fct{ivcoef} function below takes the usual arguments \code{formula}, \code{data}, \code{subset}, and\linebreak \code{na.action} (and further arguments \code{weights} and \code{offset} could be included in the same way). The \code{formula} should be a two-part formula like \code{y ~ x1 + x2 | z1 + z2 + z3}. There is a single response on the LHS, one RHS part with the regressors and a second RHS part with the instruments. The function \fct{ivcoef} uses the typical workflow of model-fitting functions and processes its arguments in the following four steps: (1)~process the call, (2)~set up the model frame (using the \class{Formula} method), (3)~extract response and regressors from the model frame, (4)~estimate the model (by calling \fct{lm.fit} twice to compute the two-stage least squares coefficients). % <>= ivcoef <- function(formula, data, subset, na.action, ...) { mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action"), names(mf), 0) mf <- mf[c(1, m)] f <- Formula(formula) mf[[1]] <- as.name("model.frame") mf$formula <- f mf <- eval(mf, parent.frame()) y <- model.response(mf) x <- model.matrix(f, data = mf, rhs = 1) z <- model.matrix(f, data = mf, rhs = 2) xz <- as.matrix(lm.fit(z, x)$fitted.values) lm.fit(xz, y)$coefficients } @ % The resulting function can then be applied easily (albeit not very meaningfully) to the \code{dat} data frame: % <>= ivcoef(log(y1) ~ x1 | x2, data = dat) @ % The same coefficients can be derived along with all the usual inference using the \fct{ivreg} function from the \pkg{AER} package \citep{Formula:Kleiber+Zeileis:2008}, which also uses the \pkg{Formula} tools in its latest release. Apart from providing inference and many other details, \fct{ivreg} also supports \code{weights}, \code{offsets} etc. Finally, for backward compatibility, the function also allows separate formulas for regressors and instruments (i.e., \code{formula = y ~ x1 + x2} and \code{instruments = ~ z1 + z2 + z3}) which can be easily incorporated using the \pkg{Formula} tools, e.g., replacing \code{f <- Formula(formula)} by % \begin{Sinput} + f <- if(!is.null(instruments)) as.Formula(formula, instruments) + else as.Formula(formula) + stopifnot(isTRUE(all.equal(length(f), c(1, 2)))) \end{Sinput} % In summary, the usage of \pkg{Formula} should reduce the overhead for the developers of model-fitting functions in \proglang{R} with multiple responses and/or multiple parts and make the resulting programs more intelligible. Further \proglang{R} packages employing the \class{Formula} approach can be obtained from CRAN, including \pkg{betareg}, \pkg{frontier}, \pkg{mlogit}, and \pkg{plm}. \section{Summary} \label{sec:summary} The \pkg{Formula} package provides tools for processing multi-response and multi-part formulas in the \proglang{R} system for statistical computing. The new class \class{Formula} inherits from the existing \class{formula} class, only adds a single new formula operator \code{|}, and enables the usage of formula operators on the left-hand side of formulas. The methods provided for \class{Formula} objects are as similar as possible to the classic methods, facilitating their usage in model-fitting functions that require support for multiple responses and/or multiple parts of variables. \bibliography{Formula} \end{document} Formula/inst/doc/Formula.R0000644000175400001440000001241213272442207015327 0ustar zeileisusers### R code from vignette source 'Formula.Rnw' ################################################### ### code chunk number 1: preliminaries ################################################### options(width = 70, prompt = "R> ", continue = "+ ") library("Formula") ################################################### ### code chunk number 2: example-data ################################################### set.seed(1090) dat <- as.data.frame(matrix(round(runif(21), digits = 2), ncol = 7)) colnames(dat) <- c("y1", "y2", "y3", "x1", "x2", "x3", "x4") for(i in c(2, 6:7)) dat[[i]] <- factor(dat[[i]] < 0.5, labels = c("a", "b")) dat$y2[1] <- NA dat ################################################### ### code chunk number 3: multi-part1 ################################################### F1 <- Formula(log(y1) ~ x1 + x2 | I(x1^2)) length(F1) ################################################### ### code chunk number 4: multi-part2 ################################################### mf1 <- model.frame(F1, data = dat) mf1 ################################################### ### code chunk number 5: multi-part3 ################################################### model.response(mf1) ################################################### ### code chunk number 6: multi-part4 ################################################### model.matrix(F1, data = mf1, rhs = 1) model.matrix(F1, data = mf1, rhs = 2) ################################################### ### code chunk number 7: multi-response1 ################################################### F2 <- Formula(y1 + y2 ~ x3) length(F2) ################################################### ### code chunk number 8: multi-response2 ################################################### mf2 <- model.frame(F2, data = dat) mf2 ################################################### ### code chunk number 9: multi-response3 ################################################### model.response(mf2) ################################################### ### code chunk number 10: multi-response4 ################################################### model.part(F2, data = mf2, lhs = 1) ################################################### ### code chunk number 11: single-response ################################################### model.part(F1, data = mf1, lhs = 1, drop = TRUE) ################################################### ### code chunk number 12: details1 ################################################### F3 <- Formula(y1 + y2 | log(y3) ~ x1 + I(x2^2) | 0 + log(x1) | x3 / x4) F3 length(F3) ################################################### ### code chunk number 13: details2 ################################################### attr(F3, "lhs") ################################################### ### code chunk number 14: formula-method ################################################### formula(F3) formula(F3, lhs = 2, rhs = -2) formula(F3, lhs = c(TRUE, FALSE), rhs = 0) ################################################### ### code chunk number 15: terms-method1 ################################################### terms(F3) ################################################### ### code chunk number 16: terms-method ################################################### formula(terms(F3)) formula(terms(F3, lhs = 2, rhs = -2)) formula(terms(F3, lhs = c(TRUE, FALSE), rhs = 0)) ################################################### ### code chunk number 17: model.frame-method ################################################### mf3 <- model.frame(F3, data = dat, subset = y1 < 0.75, weights = x1) mf3 ################################################### ### code chunk number 18: model.matrix-method ################################################### model.matrix(F3, data = mf3, rhs = 2) ################################################### ### code chunk number 19: model.response-substitute ################################################### model.part(F3, data = mf3, lhs = 1) model.part(F3, data = mf3, lhs = 2) ################################################### ### code chunk number 20: model.foo-methods ################################################### model.weights(mf3) ################################################### ### code chunk number 21: update-method ################################################### update(F1, . ~ . - x1 | . + x1) update(F1, . + y2 | y3 ~ .) ################################################### ### code chunk number 22: as.Formula-method ################################################### as.Formula(y1 ~ x1, y2 ~ x2, ~ x3) ################################################### ### code chunk number 23: ivcoef ################################################### ivcoef <- function(formula, data, subset, na.action, ...) { mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action"), names(mf), 0) mf <- mf[c(1, m)] f <- Formula(formula) mf[[1]] <- as.name("model.frame") mf$formula <- f mf <- eval(mf, parent.frame()) y <- model.response(mf) x <- model.matrix(f, data = mf, rhs = 1) z <- model.matrix(f, data = mf, rhs = 2) xz <- as.matrix(lm.fit(z, x)$fitted.values) lm.fit(xz, y)$coefficients } ################################################### ### code chunk number 24: ivcoef-example ################################################### ivcoef(log(y1) ~ x1 | x2, data = dat) Formula/tests/0000755000175400001440000000000012213624611013212 5ustar zeileisusersFormula/tests/Examples/0000755000175400001440000000000012213624611014770 5ustar zeileisusersFormula/tests/Examples/Formula-Ex.Rout.save0000644000175400001440000002163113272442200020560 0ustar zeileisusers R version 3.4.4 (2018-03-15) -- "Someone to Lean On" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > pkgname <- "Formula" > source(file.path(R.home("share"), "R", "examples-header.R")) > options(warn = 1) > library('Formula') > > base::assign(".oldSearch", base::search(), pos = 'CheckExEnv') > cleanEx() > nameEx("Formula") > ### * Formula > > flush(stderr()); flush(stdout()) > > ### Name: Formula > ### Title: Extended Formulas: Multiple Responses and Multiple Regressor > ### Parts > ### Aliases: Formula formula.Formula as.Formula as.Formula.default > ### as.Formula.formula as.Formula.Formula is.Formula print.Formula > ### update.Formula length.Formula all.equal.Formula str.Formula > ### Keywords: classes > > ### ** Examples > > ## create a simple Formula with one response and two regressor parts > f1 <- y ~ x1 + x2 | z1 + z2 + z3 > F1 <- Formula(f1) > class(F1) [1] "Formula" "formula" > length(F1) [1] 1 2 > > ## switch back to original formula > formula(F1) y ~ x1 + x2 | z1 + z2 + z3 > > ## create formula with various transformations > formula(F1, rhs = 1) y ~ x1 + x2 > formula(F1, collapse = TRUE) y ~ x1 + x2 + (z1 + z2 + z3) > formula(F1, lhs = 0, rhs = 2) ~z1 + z2 + z3 > > ## put it together from its parts > as.Formula(y ~ x1 + x2, ~ z1 + z2 + z3) y ~ x1 + x2 | z1 + z2 + z3 > > ## update the formula > update(F1, . ~ . + I(x1^2) | . - z2 - z3) y ~ x1 + x2 + I(x1^2) | z1 > update(F1, . | y2 + y3 ~ .) y | y2 + y3 ~ x1 + x2 | z1 + z2 + z3 > > # create a multi-response multi-part formula > f2 <- y1 | y2 + y3 ~ x1 + I(x2^2) | 0 + log(x1) | x3 / x4 > F2 <- Formula(f2) > length(F2) [1] 2 3 > > ## obtain various subsets using standard indexing > ## no lhs, first/seconde rhs > formula(F2, lhs = 0, rhs = 1:2) ~x1 + I(x2^2) | 0 + log(x1) > formula(F2, lhs = 0, rhs = -3) ~x1 + I(x2^2) | 0 + log(x1) > formula(F2, lhs = 0, rhs = c(TRUE, TRUE, FALSE)) ~x1 + I(x2^2) | 0 + log(x1) > ## first lhs, third rhs > formula(F2, lhs = c(TRUE, FALSE), rhs = 3) y1 ~ x3/x4 > > > > cleanEx() > nameEx("model.frame.Formula") > ### * model.frame.Formula > > flush(stderr()); flush(stdout()) > > ### Name: model.frame.Formula > ### Title: Model Frame/Matrix/Response Construction for Extended Formulas > ### Aliases: terms.Formula model.matrix.Formula model.frame.Formula > ### model.part model.part.formula model.part.Formula > ### Keywords: models > > ### ** Examples > > ## artificial example data > set.seed(1090) > dat <- as.data.frame(matrix(round(runif(21), digits = 2), ncol = 7)) > colnames(dat) <- c("y1", "y2", "y3", "x1", "x2", "x3", "x4") > for(i in c(2, 6:7)) dat[[i]] <- factor(dat[[i]] > 0.5, labels = c("a", "b")) > dat$y2[1] <- NA > dat y1 y2 y3 x1 x2 x3 x4 1 0.82 0.27 0.09 0.22 b a 2 0.70 b 0.17 0.26 0.46 a a 3 0.65 a 0.28 0.03 0.37 b b > > ###################################### > ## single response and two-part RHS ## > ###################################### > > ## single response with two-part RHS > F1 <- Formula(log(y1) ~ x1 + x2 | I(x1^2)) > length(F1) [1] 1 2 > > ## set up model frame > mf1 <- model.frame(F1, data = dat) > mf1 log(y1) x1 x2 I(x1^2) 1 -0.1984509 0.09 0.22 0.0081 2 -0.3566749 0.26 0.46 0.0676 3 -0.4307829 0.03 0.37 9e-04 > > ## extract single response > model.part(F1, data = mf1, lhs = 1, drop = TRUE) 1 2 3 -0.1984509 -0.3566749 -0.4307829 > model.response(mf1) 1 2 3 -0.1984509 -0.3566749 -0.4307829 > ## model.response() works as usual > > ## extract model matrices > model.matrix(F1, data = mf1, rhs = 1) (Intercept) x1 x2 1 1 0.09 0.22 2 1 0.26 0.46 3 1 0.03 0.37 attr(,"assign") [1] 0 1 2 > model.matrix(F1, data = mf1, rhs = 2) (Intercept) I(x1^2) 1 1 0.0081 2 1 0.0676 3 1 0.0009 attr(,"assign") [1] 0 1 > > ######################################### > ## multiple responses and multiple RHS ## > ######################################### > > ## set up Formula > F2 <- Formula(y1 + y2 | log(y3) ~ x1 + I(x2^2) | 0 + log(x1) | x3 / x4) > length(F2) [1] 2 3 > > ## set up full model frame > mf2 <- model.frame(F2, data = dat) > mf2 y1 y2 log(y3) x1 I(x2^2) log(x1) x3 x4 2 0.70 b -1.771957 0.26 0.2116 -1.347074 a a 3 0.65 a -1.272966 0.03 0.1369 -3.506558 b b > > ## extract responses > model.part(F2, data = mf2, lhs = 1) y1 y2 2 0.70 b 3 0.65 a > model.part(F2, data = mf2, lhs = 2) log(y3) 2 -1.771957 3 -1.272966 > ## model.response(mf2) does not give correct results! > > ## extract model matrices > model.matrix(F2, data = mf2, rhs = 1) (Intercept) x1 I(x2^2) 2 1 0.26 0.2116 3 1 0.03 0.1369 attr(,"assign") [1] 0 1 2 > model.matrix(F2, data = mf2, rhs = 2) log(x1) 2 -1.347074 3 -3.506558 attr(,"assign") [1] 1 > model.matrix(F2, data = mf2, rhs = 3) (Intercept) x3b x3a:x4b x3b:x4b 2 1 0 0 0 3 1 1 0 1 attr(,"assign") [1] 0 1 2 2 attr(,"contrasts") attr(,"contrasts")$x3 [1] "contr.treatment" attr(,"contrasts")$x4 [1] "contr.treatment" > > ####################### > ## Formulas with '.' ## > ####################### > > ## set up Formula with a single '.' > F3 <- Formula(y1 | y2 ~ .) > mf3 <- model.frame(F3, data = dat) > ## without y1 or y2 > model.matrix(F3, data = mf3) (Intercept) y3 x1 x2 x3b x4b 2 1 0.17 0.26 0.46 0 0 3 1 0.28 0.03 0.37 1 1 attr(,"assign") [1] 0 1 2 3 4 5 attr(,"contrasts") attr(,"contrasts")$x3 [1] "contr.treatment" attr(,"contrasts")$x4 [1] "contr.treatment" > ## without y1 but with y2 > model.matrix(F3, data = mf3, lhs = 1) (Intercept) y2b y3 x1 x2 x3b x4b 2 1 1 0.17 0.26 0.46 0 0 3 1 0 0.28 0.03 0.37 1 1 attr(,"assign") [1] 0 1 2 3 4 5 6 attr(,"contrasts") attr(,"contrasts")$y2 [1] "contr.treatment" attr(,"contrasts")$x3 [1] "contr.treatment" attr(,"contrasts")$x4 [1] "contr.treatment" > ## without y2 but with y1 > model.matrix(F3, data = mf3, lhs = 2) (Intercept) y1 y3 x1 x2 x3b x4b 2 1 0.70 0.17 0.26 0.46 0 0 3 1 0.65 0.28 0.03 0.37 1 1 attr(,"assign") [1] 0 1 2 3 4 5 6 attr(,"contrasts") attr(,"contrasts")$x3 [1] "contr.treatment" attr(,"contrasts")$x4 [1] "contr.treatment" > > ## set up Formula with multiple '.' > F3 <- Formula(y1 | y2 | log(y3) ~ . - x3 - x4 | .) > ## process both '.' separately (default) > mf3 <- model.frame(F3, data = dat, dot = "separate") > ## only x1-x2 > model.part(F3, data = mf3, rhs = 1) x1 x2 2 0.26 0.46 3 0.03 0.37 > ## all x1-x4 > model.part(F3, data = mf3, rhs = 2) x1 x2 x3 x4 2 0.26 0.46 a a 3 0.03 0.37 b b > > ## process the '.' sequentially, i.e., the second RHS conditional on the first > mf3 <- model.frame(F3, data = dat, dot = "sequential") > ## only x1-x2 > model.part(F3, data = mf3, rhs = 1) x1 x2 2 0.26 0.46 3 0.03 0.37 > ## only x3-x4 > model.part(F3, data = mf3, rhs = 2) x3 x4 2 a a 3 b b > > ## process the second '.' using the previous RHS element > mf3 <- model.frame(F3, data = dat, dot = "previous") > ## only x1-x2 > model.part(F3, data = mf3, rhs = 1) x1 x2 2 0.26 0.46 3 0.03 0.37 > ## x1-x2 again > model.part(F3, data = mf3, rhs = 2) x1 x2 2 0.26 0.46 3 0.03 0.37 > > ############################## > ## Process multiple offsets ## > ############################## > > ## set up Formula > F4 <- Formula(y1 ~ x3 + offset(x1) | x4 + offset(log(x2))) > mf4 <- model.frame(F4, data = dat) > ## model.part can be applied as above and includes offset! > model.part(F4, data = mf4, rhs = 1) x3 offset(x1) 1 b 0.09 2 a 0.26 3 b 0.03 > ## additionally, the corresponding corresponding terms can be included > model.part(F4, data = mf4, rhs = 1, terms = TRUE) x3 offset(x1) 1 b 0.09 2 a 0.26 3 b 0.03 > ## hence model.offset() can be applied to extract offsets > model.offset(model.part(F4, data = mf4, rhs = 1, terms = TRUE)) [1] 0.09 0.26 0.03 > model.offset(model.part(F4, data = mf4, rhs = 2, terms = TRUE)) [1] -1.5141277 -0.7765288 -0.9942523 > > > > ### *