½»øÿUÞ^ð*#9ËÈæB(ÒõÓúâstBVº\têIO¿Ôì>Û»$îR3\u000b\"rrI\u0005ië¯Ç¼æ\u000b©Èà\u000b\u000erb§¬¾ÿ4Qµ1ÐÂt{DqÎ\u0016
²\u0014Ã\n¨ä\"ce>4Sµ83¤\u0015\u000bÊÍ ¢\u0006õI\"+Ëz*é¢\u001c©\t3£>ZȳªàTª\u001daE\\}úø\\=nÈ»ë7\u0013ùf)\u0019¾5Eæt|\u001bYU\u0002#+µ´þ4«âãÅ%¬´¤Î\u001a®\\¨O\u0004åuÝÖ¿7»Ç=¹jëÛæ°&3C¹\u001aå%Vj¢\u0017!³ã?º\u00156l
\u0010¶úd¿\u001e íIáP÷çf½nÛWäÝòñÐÔí41\nzF2\u0005Z\u001aVðÊ\bG+ld½\u0018'¢Fþ2Ëò¼*f: ç\u001cÉú$pdFrÄe\u0011f²iÑsÇIE±TÔq¢Fr\u0017ÆáC9le3Ü|¬ï\u0019×\u0016½÷Y!¾É?n«xþ±-<7Ǥ O~´¬¢\u0002rªü(¯%ðU\u0004K}j1O\u0018~¨fD*³ÌÌU3.U]w\u001d$3yArQ8^Ë\u0013ÃÏ´±LdWTUo/²ÄÚ\u000bPmh\u0006(q»\u0019ùºÝâò¥g2f0Òd\u0004\u000b¡ëërØd>ÔÛmóµnÉûå¦Y\u001fv*O|_/·d÷U*mÛ¬\u001e×a\u0019£èTÑ-H!a:~½ýÿsõ°¿]<\u0006²=wQ.\u0004#
\u0012Áà\u001f÷Ó\u001fö\u000fÍv·_ö><ÞÖÛPÁc[EH\u0015f\u000b\u0016ðØ}\r»'bÑ|QP¥r¾\u0010
««Tùu\\.77ms{WOÍVÿ±ÜÞËC³½{¹¨J%ôj!E·;;Þý/\u000f\u000f»öð¸m\u000eß\b!ß7¿×íÞ>R¨W¹D¨ÒR\u0015\u0001
\n!ÃD|¬í¶ÙÞ«Ýfci¹¹/e¥yÐÛ¬ÈÛv·¼}Z~¹j ª<ìS_ß©´3GU`\u0015a¯ÊiqÉEuç
»\u001df»\u0007Ý\u001f\u000e\u000fß½~½j×ûE\"\u001fR;ªk(ñ|Xn\u001f²WV½\",£ÛίSÎõ\u0002ý<\u0015]Zr½lud1\u001e÷N-s«*óý«3+äU¶Åñ\noëõî¨\u0015È·ÝcKV÷Íúößöä®]ÞÖ{òu×Ã}M¾6íþ@öõ¦Þ\u001fêö\u0015yºoV÷¤ÞÞÖ·d·%|UÆ(»nwwm½ß«\f¬½²_e[ÿq ä7õQµ\byR=\u0004¹Qâ÷e³^Þ¬k½ÒÏËV-\\©e®×õr_ã¢T\\Ðc.ZEÙæ¦ÖÛ,\u000f¤QÿÝf£w_n\u000fä°Óû4[²Úm\u000fËÕAm}¸?æ÷P/W÷*hæ«þ\u000br¿ü]°oZÅr³ÛîbBÍ_Õív¿8GV-<&ëbÚ\n,×û\u001dÙßïöÇ\u001b¯ÖK%©åá ¹T««Ï¯ví\u0013âc³lÿ¡£ÊCÝ6»ÛN2FtOZqçú\u0012y£©¾Ù×j!CðA[zT¼kfìfZðç\u0018ȳ
ª!Oäº\\\u001fÌtB³Ë]£Ä©:çÇþ÷Z¯ÆX`EÊ)Á@o[ë@éBO1¸ÅëݺY}S<Ý5[\u0013CÕê\u000fKFX¥³g7\u0005Òè9òe\u0006mOþ{å\u00127»Ý?^\u001d\u001bY·ÚS}£ÒD½\bÕ{Ãu¾®\nFûúK\u000fbõÔÒ¿ÑϹjù\n\tÂ;YÜ\fvrÐY¤Òë¶fn//dý¦â©òk«D§&©6T(æÉëfsïwä¯Ç¹Ð}DÉÚLþr{qé\u001eÎð\u0004ò¢üÅpÁB\u0003ÐãOßÿËdÏÊÐõÙq\u00199®Ï6s\u0010Ø,7KÛ\nÛ\fh5\tèRä1^\u0015\u0012¥L«2('ð\u0014òËrSÏA¹¸ðÀ\u0016ÈDϽ~îoå0\u001a¤¤\rrÒí¥\u0007\u0013$T)2~^ÔE\u0016A`UG£ål\u0001ÅÉòXPË4ק\u001b\f4a¡¦^`S0X°oÕ8G¬U¤á²i¾Óùb:Äd\u0018 ¦¸Ez`\u0019ÌÁ¼`¡\u0013ëÁ\u0004Órïf¨<\u001fêTá¾\u0010Uĺv*Á~¼ùUõ0ûY@¿nÜ;ðÔ¥¸\u0001\u0013\u000e·Ï¸5ì6\u001a\f)=àÚb\u0015\b\u000bí\u0010 K:ùY\u0004HHÕÈ\u0016A\u0004HÌÀXΰN\t4{\u0002Æá?°Å2,¾¦>é£MHíaËaóçrV\u0011©Tr.øqgØ'¾~¼Y7û{Õ?\\í\u001e¾\u0011úU¯ýÆgèKîa\u001c%ú{¢/¢ÁbfܳP3êyç÷\\z<³ l¡8\u0014\u0016~\u0012ûÚØß©>|ò»\u0007+´î¥'Bh
/´b\u0000ÙÇ\u00167Ïù§´\b3ÿÉvTWª·ëÜG¦£|[ª{\\?n* ]/Ý{K>AÊ*Z\u0007^í\u001e·{ÕäO{Gç²ÆÈæ\u0003\bï=\u000bW\u0007ºÝL¶v»Å³µín¶Ë\u000b³ñÆ>)\u0019a)ÎË Å\u001a/P\u001c\u0000\u0015CÚÉ8Plð\u0014»\\cü«\fK9¥¨\u0002~m°7\u000eìù×Y'\u001a\\\u0002-<ÇCD8àÃK X\u0002usÌ\u0000/7V¦Ïÿà4èyêmæ,S? W\u001f*Òô\u0016ç±\"îKtZ\u0003AmìÓHâ\u000bJ.Ùó\n\u0015rAsº(\u0006\n»Ï\u0000\u0012\u0013ú\f¤Ë¥\u0006\u0018¥¤Ïpìãzfâ©\u001c Ýh\tiÀf(½9\u0002qøõ\u0006l\u0006bt|\u001d0\u00179ZÂìTÂç/)aGºwH\t[\u0001Þ¸M4íÂ\u001e0L7Qâ\\pµY^J±(ò\u0001\u0011«d¿|\u000bÕ\nUù©\fxò\u0012e: áhí+pLÔ-ü¨;*WBåjjï3²¡ú\u0005g$ïì\u001eÛý\u001cDѲë\no[ý\u001cO1Pk{
wT@ÇgßD\u0015(\u0004§uÓݶáÀ´ÇHLTä^K«\u0007ìÁ\u0010§`Ï¡>ËÈé`-ªª¢Bc£ôy6P{±À[Û~QáFÅ©µrg\u0004Épý\u0012²PbìE3½°Ø)ã\u0000ôj\u0015Ô\u0006ùÿ9%¹ÎìÖlÄ!2£}ªãJÆæq®ßô\fsN\u0003/Ðß]}ººÌ¦\u0016/vë\u0013Ád\u001e\u0010ôK\bq\teÖ\u000b\u0011aäú¸À\u0005\\ýäzz½c\u001cCÕx&\"|ÃTÎ9ô ê\u001dGÈ\u0014{\u0011F*çá®\b3b\u000bqé\u0015aQFFÖ9 ¼À\u0012d\u0013\u0010¤\u0007)\tÊ\\\u0011\u0015'ȶ¤Ò+¢\u0012\u0012äL\u0007(ê¤#eÏÓjÊA) +;é\u0013®l|ÜÖ\ràãYü\b-h\u0004t¡ÐR¼!Èùj §HPiZìÌóU\u0004A °Ä\u0004åNBÎWã\u00049³\u0001\u0003Â\u0010tt,5Sæ\u000fö?_kè»É ¥<æe\u0011v~d,YT\u000b)}Ê¿mD\u0013È\u0007È*±¹\u000f\u0018ð^}1ÔûÈ~N92_\u001aÅP9¨ÿþòýLÍ0çÅLèF©3ª¤Ã/N§}ëΩù¯\u0011j±\u001c{ª¤ÊíFý×\u0014×S1ÿÌ4«å\\ßÛ7«9ß¼· ¸Ö*\u0002\u0011·Ôwp°ó@Q!h\u0000\u0014\u0015¾\u001c\u001c¬·¶<0ü¡jk\u0006ÚôÓ,Îä\u0002\u000b6Ìùßßg\"\u0007ë½7N\u0006³^)\u0007\u00079\u0007Ã|¬
\u0003æ1òªô¬\\\u000f¢f>\u000eó±\u0004\u0001æ HÃ2\u001dAf X¼Ç|0\u0004ÙhÑã³I\tÊ\u0000óA\u0010¤+Ù \u0001Te9c:ÍHÙKæ´reP\n¨'áÊNº ç+\u001b_åç«<þ>\u001b4\u0002ºa£#\u0015ϽC0\b\"A¥i\t2KòÌóU\u0004A °Ä\u0004åNBÎWã\u00049³\u0001\u0003Â\u0010t\u0002ÿ\b9ÜSÌÅgá@ƺ°3\u0006Ôó({þLE~褣\u000b2Ì@¢~NÉ{§QIÿÅðY\u001bt¼\tÆÈÌh:£ÊĪ\u001e QåØS¥À4;n7áu;N\u000e1#èv3\u000b \u001aS;Ð÷˽\u0014>\u000b½XÆ\u0010Eø\u0018å0ß`PM\u00131÷\u000eú\"\u0002 ôÕ:\"C%Ôczê{å\u0019$¬¼z\u0001\bÂxoÑ\u001b¡\u0019¤.`lþ\u0001â^! åëç ò¥Ûcbdª\u0003¤4í\u0012#¥Ð*Y\\\fa9Ôo\u0004¨×\bD°´¾½Ò1iÆ\"¥¡D\f)µVK½ú9Æd¥1\t\u0007ÒPÐLZ§Ç5 Â\"lA\u000e\u0016(È{\u0003Æäc Z-\u0006\"Nû®\u0002íÜ¢ëíAYcR}h}øF,séɲ=4ûC³\"wíîépOÔ®vÛýª©·\u0007s!§¾½æ~ÙÞ^>ílØÃ\u0005\u0006¼Yê¾Ofÿ æ47ÍZ_®ôT÷÷\u0005¸,\u0001¥%\u001e¥\u0007ê\u0001\"kÚÌS¿ÓT\bNC¿\u0001\u0018\u0001£zÿ\u000bù°üç?Éßx÷÷»\u0019ø«
£µ °hKv¿òr\u001e\nÉó*BrY\u0005°»ÝSÝNF_õÆ\u0003¿ªÔj_û¤~Åw
ø.\u0002\u0007ÖÊ\u0003¾ê7N\u0004³â¢^)\f¾\u0006\u0019Ñàk *â¢U.Ã~òæ?&Ƶ~\u0001H\u0010Æ5ªÒó\r=:ÇÉiÜ\u0017á¤r\u001e\u000e\u0010\u0012\u0013òtAq\u0010\u0012\u0010dS\u001a \u001bz¸7)A¹\u0010@H\bt9Þ\u0011$À\u0017R¢~à¥ú)ê¦#e_º¯>&]\u0019\u0002êI¸².È9ºòit\bå9ÑÁ\u001c\u0010\u001dd<*A©rä%Ï::¼\u0004'Ëj.:Ä9q¦\u0003Fád¤
Z : \b\u0002\u0003ÛKLPî$ä¢C g¨`²#uñ+^\u000e·bs\u0001f8~±.ÐA%=Ê¡Óz\u001c\u0000±Fȼ$e\u0006%\nøêç#S´QL1üMÞÙ\u0000³\rsH^Ì\u0004cdf¸èTÙóòLÓ.}pª,=<\u0012£\u0016˱§Ê\u001cÓƹÝr¿Ëq}\\é]Yàí·<{9\u0019ºÌ!úç\u0007=Ò\u0012\u001f\u0000öÌ\rÕ59\u0005Iï¾\u0013Dø¾RÇϬxB\u001aJ¾\u001eÅÜ«[Í aè\u0015F@\u0010&h\u0014½íAêJͦ= (î\u0002é~\u000e\"½Zº=&F\bàÚÁ$\u0018×fÒ¢\bË¡~ÇC½'|ö\r¨\u001eÉn\u0016×\u000eå·d¸¶µZê5\n1®Ê̱4ªþ·¸v(V'ÀµÉÓãÒ\u0013a\u0011¶\u0000@4\u0010À=È\u0001cò1üF\u0016Ƶ-ÇÜ\u0013À¦¡ËüAYcqm}AOò\u0013ÀL\u0005\u0012\u0003§1£D&>#ê\u0001\"#ÚÌS¿ÓdüVAè9\u000bµ×äǶޮîç`δÓc\u001cx·ôö3æ\u0007ò\u0002¼3ý{\u0001Ø++\u0003?ðý¾YN¶ª\u0000K)%ÞRÖµ»è§Y*Wb\u000b°]\u0005NÇÌ)\u00059gðzF`^ÈR+
!ç #!çØ\u0010§R¼%\b|\u0015AS$¨4-Avɼ÷U\fA °Ä\u0004åNBà«\bÙ\u0001a\b:E{èp\u00071\u001b¥\u001d¨B'`x!uHtôéÌK\u0019f»Ø¶SbòÞbXU½ \u001cx^ô\u0004kdzB\u0005=\u0003$µ(±Qj\u001c\"¶Äw )Þ\u001c\u0011Ú(\u0016ÒÀ\u0005Ks/FÐ[[\u001e(æ·©@VÆ\nûÐy7\u0004kÉ\u00058g³ñÉr\u000ePª÷Þ8\u0019ÌaúGIÂ@iÿ' ÔZ¸\u0003_\u0010F^ë\u0001â®t4As9\u0007¾Ä\t2ø#È\f\u0012\u0012\u0004{à\u000b \u001b-z 4)A¹\u0003_â\u0004BÖ\u0011$À2ªçÎ\u0018¢N3RöF9Ì7\u0018TSàDL½\u0011\u0001PújI\u001d¡\u0012ò =DõĽrÎ\f\u0012VO^½\u0000\u0004a¼·èÐ\fR\u00170Ì»d\u0017á\u0015\u0002Z¾~\u000e\"ÏYº=&F¦:\u0000JÙ.1P\n\u0012ÀbqË¡~#@½F \u0006¥uí\u001eI3\u0000\u0006\u0012M2 ÔZ-õêç\u0018W\u000e¡\u001c2Õ§ttàÞÕ(.\u001dÄ*Ü\u0005Æ^ÖÁGà¤rYÍE8'ÎtÀ0´Pî]!\b,\u000el/1A¹\u000eq¡ÉԵƨ¨\u001cþ\u0015¹ ²u\u001aHrn\fòèQö&UbÓ-0Ð#.\u0004ÇøÜûá«Q)Ú(F\f_\u00049\u001bD¶a\u000eÉ Üu¼£â¢S¥\u0018¾(yÖ\u000fÙ\u0001\u001f JZ,Ç*Å\u001f×\u0002!Àn\u0002×ÉIïeo7¼\u001dðáË/gÈÐgf\fÑg<¿üÀ#-ñå\u0007¹¡º&§ î]k\bÒWêøð\u0015/Ò\u0012@É×£¬2{u«\u0019$,\u0013½Â\b\bÂ\u0004¢·}3H]©\tïa3\nh¦û9ôjéö\u0018i\"]\u0007lbì\u001aIT\",ú\u001d\u000fõ:\bºÙ7 z0&»Yì:ßa×Öj©×(ĸ\u001dK£ê]bu\u0002ìÚ<=.=\u0011\u0016Á½ë00\r\u0004p\u000frÀ|\f¿\u0011ÿ\u001cd±ë`Ë1÷ò\u0003@ÓÐeþ ¬C±Kÿ£\u0015¾9¨ìxIÙ3nUF[è÷ª\u0012áì¤8\u0001«\u001eoÖÍþ¾ÖhëÃ7B_³ê5Ëh
¯þ\u000fM\u0005;à\nendstream\nendobj\n1 0 obj\n<>/XObject<>>>/Parent 6 0 R/MediaBox[0 0 612 792]>>\nendobj\n8 0 obj\n<>stream\nxµ]Ýs㶵÷_ÉC'Æ\n@ ÙN\u001f¼®³inÜøÆnïd>p%®F\u0012]îîþ÷\u0017À9\u0010aÙ$\u000e)¸&ä.\u0001ï@ð?gïîÎRÅòL±»ÕÙÕÝÙÿ%ì\u0007ó§qýùw^&ìn{öíw\t}õñìëßßýÛ<Û?ÂÙr«oÍ?ûû³4MX.\u000bfì\\H¶¯Ï>ú3¦R.2§ÅB)8a¥Û\u0007ô\u0004_óÔ,ÁÙý+ËðE±Oú/À\u0001?¿?ûç¿ôWÜ.¼
«T²ÍÙûKÃ× Åª\u0018¥¸àAå,%Ob{E§X\u001aiªE°óô%É2+\u0016;_¤É\u0000ͪmÙŶÞ-ëý]îëÕºkçqf¢°4mϲ¢XÔÞ\u0018~FY>ÌÓ[¸A\u0019É`\u001d\u0018coèrKJÔ´|]Ó\u0007ô̳Lt-\\M W\t 7Þ$\u000fûE±\u0013Ô\u0016®&RlüI°ó$y
âl!LÄ)\u0017¹£¸xNñm½Û®Þ³\u0003åÁ*[¤®r¡R3º\u001ft]í[ïîÙM½_7«y6ìH·Z\"\u001a0(HycôM`µ\u0001gÀ`\u001aÖy¨Ñ\n\u000fI8,áäXÂiªÞRÂt\u001bï\u0012\u0006\u0001)oLXÂ6\u001eÂ\r²S$Ãmx-¸\nnü-ÏE®\u0006DüÝzWm¥+y±R\u0013júÇßï«U=?
HÓ\u001cus?êNÊ´+$ÚJ^Hr\u0013FóNó´oç1¤}I\u0014ÙGeϹ\u000e§\u0018=·7DQB¶\u001fã\n¦>$c\u0001Ìc]\u0013Î9p \u0014wÖ\u001c\u0014Ò\u0001êÍ\r%»Ú
2;ýF?¢MØñÑZÒ\têü%^f\u0003½&sPR\u00177ì²Ù>Vûª[ÿ·fïÿÖûݶÞu¬ÚN± Ô(VØ*1¥Oöæ£cîIòÐrÈËAqp1,\u001f«ílÛ\u0011\u0002m§,ɶ\u0003v LÑW'1
6´Hþ>ãêÏ,¼pé\u0013Ál\u001e¬\u0010ôLJ¾Ê6ð
\f0r³bcÍXìTÁXÛÖU\u0004ó¶õ³os\u00134ðedzåQ (S¯<H\u0010N\u000e=\" \u0013H¹Ir\u0012råM h\u0016S¯¼2ð\u0019s\u0015t²·3Û«3£RP=\u0011gvÒE9GÙú*dtôU±!Ý@$×W^(¦xKóÕ0AN ÒÈ\u0004ÙÉ ôU\u0002A¨°Ø\u0004)'!ç«aÙ\u0001\bò[\rɵùÉÁNîúÆ\u00008\tÙ(<\u0019O\u000eaDV,ó)\u0013ÇñY4eºü9Ôg\u000eF\n\u0007Dd\u0000!!Þ§P¡{\u0018SPòÞ±bD:¨_îþr¢flÐ!òb\u0007X#³\u0003Qê\u0015Uö¼DV%ðª$¨\u00058öT)(Í[MxÝCÈ\b\u000e«Ù\t\b\rϱ\u001dðdÐ\u000e\u0010S=Á\u000e \u0017ã\t¡\u0006¢Ä3\u0018ZOàDìCb\u0000Ì|µÄÈX\tyè\u0007¡zJ½rÎÞD¬¼z\u0001\t¢xoÞ\u001b¡½]À@þAÂ^!±ãëÇ\u0010ò\u001cÐÝ315Õ÷Ä77RÓä\u0014äºfbøÌ|¥N\u000f<\u0000\u000b¾\u001e®¥\u0014©WµÚE¢W\u0016!A÷¦oob×i·Ià\u0012[é~\f!»\u0002Ý\u001e\u0013\u0013-\u0004AðÑ\u001c\u001b\u0019\u0004ÇV\u0012 Oå\b¿ß\u0011^¿\u0013IûöÓÜLIn\u0000¥·h 8XðÚ\u0010WÐ\u000b«IÕ?àc¡:\u0002\b\u000e&/W\u0004ö\u0001-Ð> ÷(\u0007ÉÀ\u001b\u000b2à£\r\u0007àó^|\u0010\u0007·\u0017ä*PÖT\u0010@\u0010\u0002>\u0004\f&s ÈÞD$\b'ï\u0001\u001f\nA\u00100z48*AÊI\b\u0001\u001f\u0002A¦=\u0010$Ñ2£ªLåÎ\u0018N3Qö*wZ93*\u0005Õ\u0013qf']sįB:G_Å \u001bÒ\rrsÕÇòh·\u00049_\r\u0013ä\u0014*K\u0010Ly¾J \bõ\u0010 å$ä|5L3\u001b4 \nAGØO¦\u001bSÁYÜÀCØèyÅÝ`:y³\u0004÷R½Q$ا\u001fSPòÞ±b²âíÀY\b:D^ì\u0000kdv@0J½¢ÊȪT\u001e\u001aGQ\u000bpì©2£t:nµÌou2Z«sXÍN@èví@æo\u0007Îb#Æ\u0013B\u0011>E9o0¤¦ÀØuÄ\u0000ùj\u001d±\u0012ê\u0001=Jõzå½X=yõ\u0002\u0012DñÞ¼7B{\u0013»ü\u0004
½BbË×!ä9 ÛcbbªCt4ÛEI±U\u0002P`9Âo\u0004×\b\u0004´¾½27SÒ\fÀ¤c&\u001aL\nV+¼ú9ÄÊ\u001dKS\u0012\u000e¤cA3\u0002L\n&/×\u0004\u001c-P#÷(\u0007É@L\u0005`ÒQ¬èÔ½ÂùëíAYSaR©Fv>¿o´/íFÕ¾[/×vs0ì\u0005n\u001ek°ñ!¨\u00058öTYPº,·Zá·Y\u0005Í:¬f' tZÇvgo\u0006c\u0013È\u0013Báÿl«n±©OÚ\u000bµf§ìÔõ¬ÔÅ8ý¸\u0018=3_§Ó£'ÏߤªÅúËCK\t5[ê\u0015æ&fÍæU)@\u0010)fä½éÛØe\u0013d=$(ì\u0012Û~\f!»\u0002Ý\u001e\u0013\u0013M\u00041èÑ\u001c\u001b\u001bæÊC\u001cÃ#üöCxíG\b¥íÖÝ\u0017v]×ÝlL\u0014\u0010Îä\u0010ß\u0012Êi¾ú©\u001e\f\u0016§æ+ùØi¾i9ò
·U÷Oì]]íþ4\u001b\u001aåx¸oZÐ\u000f÷\u0005S0>d®N\u0018;ÜWò3q/¯9\u0017çRðl6ï\u0002÷5B8-áã}SÝêsr³bQPá1¯¹\r\n8¼à&eáù¹\t:Ê1(ü\u0006ÎÙ\u001dÎ\u0014fÄBAwp8SâãL\u0004 NypLÃÂ\u0004Ùê9ñN\u0013I3\u001d4¢ N½p§\tG\u0019ê8³.Ê9âÌÆDZ\u0000\u001fwA=¤\u001bîN\u0013örG,Å\u0003Aè«\u0004\"A¥\t²SÞÙ.\u0014Pÿ`\t±\tRNBè«\u0004Ù\u0001\b:ÄÛ&\fÇB;ÉôÓ=Ê^\"N'\u0001\u000f\u001d
\u0003\"2à\u0001tp?¦/bø\u001b&\fAÈ\u001dÀÝá°á(õLéÿùðaÂb^¯çT)¼Ó)j\u0001=Uò\t§\t£\u0010p5Nê°úÕì\u0004ÓO\u0013NË7?nª\u001d¼@ñ?õ?2qÎ.úùÝþýÝ\u000fWw·ìýÍÅÝ=Ôì²Ù×ìöéÿëe×?fkxcb½ëêý®Ú°Ë¼e«u»|j[3á§u÷à\u000e`oY³Û|±/\bèaíz»ÞT{Ö5¬ÓSª×÷\u000f]½2³¾ü\u00180Kt$;þLí²Ú,6øÞÆS«Ç~ø¶Õî\u000b[6M}_·Øõn¹ÑT¬X¥Y¸ÚÝoÖíÃ7ìûuÛ5û/ß°ÿkö\u0015û±ÚÝ?Uzà7ìºÒÛw\u0019Ì»#ËzÁþÚ\u0019²÷õc³7tjæ>4æ\u0019¦Mµýú5ñ\u001a\u0007æ\u0003ÎGßÝ6mw ö×ßÛõ0\u0004çç\u0016*Ì«×ÞÁK)ÛfUo4ÙÍ®ÙÃI÷\u00177ð&LmH[Öæµj¥;G-\u0014\u000eª)}?T-\u0010mæ¿Ö\u0003ªå&¶Ó¢¹íªÎè\u0016Èð¿·é¯4ùâ9ùßéåöùi¯ùx4©§\u0011ÛÙ5'ѧ®5/æè¹\u0019-ØOÆ\\\f½Öª.¶vBóuP\u0018}\u0018©m¨Wyrþ\u001aùÎÙÑg-\u0006ÆþÌîÖ[÷ùî-¾\u0001dß0úõkcàƪöuÕ6;¦5jãy[±`Ýè\u0019©Á²WF²ûîú+S\u001d¶À/³kî^cBJóÉægLTª½5ëÎJJôF~µV1=g?}4¯@i{ð~xÑ©Æ7¢4¥_H»ê·zg\u0018|VI8ëZ0ynõøÕqãð\u0015Û¬wµ\u0019lÝÛzf}½[ý×øH%~3øÕvä\u001fë\u0006½Z\u001bþG½à?¾bÕã£\u0016i\u000b¢¯Ù1\roì_ÝÛ{àN\u000b\u0005øPµìC9ÓÒ}ZB¤\u0010Y\u001f3³¬4ÙVpµ¢ZëE¨µÅ©¿ôpßo/{Q~ßlë}£à\u0002\u0017½³@àaN^~\bÿ4l3\f\tH$®µWLtT¹ÛºÑTîù@¯-ì\u0013ÃG\u0000\u001euó3w \u0019}ù\u001a®áí\u00188ý\u000eÇ\u0010N\u000e4
¥«áí\rå×#IÓÀ\rËLJ-,1*3ûrô\u0015/ÃND\u0015\u0013×öð(2;\u0006\u000fl-\"ÓOzm¹¡Ìÿl¹!Lp¯\u0019àHà\u0016p8$º\u0005áÔK_ÉÏt\u001c^\nN\u0013Ä¥ÂÒ±~çÖ²7\u0013\u000f\u000e¶\u001e\\\f\u0007¤c°l¦µX1à×M¼¾5,\u000f\u0017]M2 p tÈ\u0013M\u001eu4_B±n,\u0016us5±X\u0017¹îÈÍ\u0004ÃgèèZ^òSºv×\u0013%\fQ«pñk\"\u0006È\"ÈP¶PY>óuÑ\u001eRÀÆÀi×!ÛÂG5\u0019Û{»>Hí¸áÛ\u0001\u0019\u0011åØ>»VHmñ\u0014åt²Êe®\b*çI¡æç!ç`T(ͦÂ9%
¡£\u001c|(\u0007'\"X·Ìür\u0012ÑÛ;!;õ\u000ec\buñCJ³\u000e3½n±¦7,³T÷Ód6rPfÈ\u0003ðò(3;Æy\u0000QfÖWúÍÓY2³ñcÄÎb¢Ìæ½åÈèÃ\u0018ÁÎÌ\u0018\u0017Æ2³\u0001ÏÉ\fâàbOzIÅÊB\u000b+yù3\u0000OtazF!°ò£íO\u001f\f\u0014¤[ÂËæQ7
ß&å·\t\u0017%©ëûN\u000e\nw\nendstream\nendobj\n7 0 obj\n<>>>/Parent 6 0 R/MediaBox[0 0 612 792]>>\nendobj\n9 0 obj\n[1 0 R/XYZ 0 804 0]\nendobj\n10 0 obj\n[7 0 R/XYZ 0 804 0]\nendobj\n2 0 obj\n<>\nendobj\n3 0 obj\n<>\nendobj\n6 0 obj\n<>\nendobj\n11 0 obj\n<>\nendobj\n12 0 obj\n<>\nendobj\n13 0 obj\n<>\nendobj\n14 0 obj\n<>\nendobj\nxref\n0 15\n0000000000 65535 f \n0000016922 00000 n \n0000022608 00000 n \n0000022696 00000 n \n0000000015 00000 n \n0000010715 00000 n \n0000022789 00000 n \n0000022371 00000 n \n0000017111 00000 n \n0000022537 00000 n \n0000022572 00000 n \n0000022846 00000 n \n0000022928 00000 n \n0000022962 00000 n \n0000023021 00000 n \ntrailer\n<]/Root 13 0 R/Size 15>>\nstartxref\n23189\n%%EOF\n"},{"title":"Progress Report 12/21/2018","content":"%PDF-1.4\n%âãÏÓ\n5 0 obj\n<>stream\nxÍ]s£8\u0016ïó+t·³µ\u001d7 \tä¹Útúk{»{²lMMmí\u0005ÁÍ\rYÀÉüúÕ\u0011`N\u001c[\u001c ®ê\u0000¯Î£cûàÀÿÎÞÜñE2d7³w7gÿ:\u000bØ'øÏ<ó\u001fü?\u0007ìfsöú½Ï|óêîì¿Þü\nÛvx,Ùà¸ÏB>\u000b\u001d\u0003æ{°£gÿ\\,Ï~¸\\ÇeÉÎÙ.6p4-\u000f\u001cÑ\u0005=?~jvýöáì?ÿ5?\u0017g)ÅBî±ÍYà3ÛÆúìÚ¹×\u001c¶7ðZÎ%\u001c¥o'+%ça'\u0005¾½ü\u0010i\u0006\u0012k71»\u001dg\u0018øª\u0007â.Æñóe\u0007\u000b\nÐ\u0011U¿ZÍ°Q#04[vjÐ\u0018ÌpÎ\"Ág&\u001d[j/\u000fãÍm.}K3ø\u0011g\u000bö9®Ò]'«<_\u001fKê4\u001d\bÄL]\u0007§\u001døéþ>/ªmV\u0013¥üPB n¹·éw]ÓÅ\u0002éÍxÐ#öM÷:©&J\t¥à=\u0010qµ{+øÏÞ\nÂ~Säñâ!~d×U¡õtYf24\nBì.}^±/\u0017Ì\u000b|>0æ\u001d\u001f\t\u0016ùÜ!\u001búÑ9\u0017óó0ÄT=OÌ|¤ïÐ[UÕý¯_'ź%÷åb¶-²GÞ×\u001e\u000b£À¼§¥\nÌ+þ=+\u0011>é,KïtÁ>Æt]åÙ+öVÇ\u0019ËïØå¶(Òd»Þî¾qðQ£pæÙLîõëª9Æß\u0005}4¥L.Íý\u0000®·¥éî»ò>Íò2îz]m\u0017:«Êý¾y0ãÑÁþº9Ê\u000bõßW
2p|#]\u0015ù²Ðæý5v\u0017?N\u0014åþSÑçÄþ®×il\u0006úC¼R×÷!1ÅÀ$(?æ\u001b]äùfrhÿDéÀÇïÉÉ_\u000b^O8ù6+õú\u0005ªOé³,Íì2ßlìwÞTÉ ðz\u0010¾O3H\r\u0017K=5>aûع\u0017°ý\u0006¶]·\rÍd4bçÆý\u0017ÚõtéYªèè§{÷\u0001óEë\n>rÎÙû_&,A\u000f^\u0017¶Ýï £\u0001KÐ\u0011HKÐ\u00164¢áKÐ\b¦¿\u000fóK9co4L½¿\u00143ö5].ô:Íëí+öSY¦ñ«ý/Q{À(zö%\n\u0007j<¦,g\u000f]`v\u0011\"¨EX<ê)Wæ_ñ\u0018<-\u001cÝ3È\u0000I\u0006ÁÃí´l£\u0013\u001bíádàôp\u001fõp\u001f¿²Oñ\u001f°óâ·rO>K[ãh-T?º÷\u001dy><ÇR¼_\n\fÍN\u000b\u001a@~ßu,¯Ø\u00153ãz\u001ft1i½®&ØÚ(\u0002AGX\u00045Õú!ZCÔªÙÆ@°^çx1e½®a§¨Ùç Ʊ\u001aB#e\u001bCÙ)w\u0002N:7[³kÝ\u0017#\u001a\u001aÇjýì¬!jÕlc ;ëõ\u001cì¦y½¢²sECPãXÀNa55:\t;
ØIrÞ¹¢!¨q¬ÖÏNâ#òN$ï$Î;IÎ;W4\u00045Õ\bìðHÉ\u0011y\u0007\u001d\f£»^å\u000f%*-«4aË\"¨V¯Ø»ßWémZLgÕj[¦q9åæ7mÐ\u0001ÕeAƧW\u001e\b\u001f]^\b\rä\u0001²>á¢Ç\u001e+é;>w¼èãâ½/t¬&¯øù¨\u0002À¡îö\u000e9\u001fp¿!ëJ8¡Ó2\r>â~C\b⳶\u0015\u001dì£Ê%(ð\u001c\u0011õ«q\\\nBàg=V«\u0006\r\u0012¿á>ÐGå\u0012\u0004\b®nõ«q\\\nB \u0010rh\fM\"ë\u0003\u001dI4mÍÏGå\u0012\u0014vhúÕ8.\u0005!°³f©UÆPvÖ\u0007¾8»Öù¨\\ÀÎ\u0015M¿\u001aÇ¥ \u0014v\n«©\u0011ìÔIØ)ÄNóÎ\u0015M¿\u001aÇ¥ \u0004v\u0012\u001cwò$y'qÞIrÞ¹¢éWã¸\u0014Â\u000e¤æÝP×Ðö* ~S@®!¢×\u0007p
.\u0007\u0006Á¨ñ®:%Àbc\u001aÈ:\u001a\u0017g\\½c¿äËØ¥
»¸%û\u0012gñRÛs·çì¾ËÝ=sðAÃçwf¨oà7uÙ°&Úú°~¢5nð\u0006TÖp\\GÂiÅ\u000f\u00164(5{\u000f\rÇÁ\u000bý\f¸3Ã\u0014ãW#l\u0018\u0001¡#.\u001a.!!P´¦J¡*¡\u0014aÝÐEñbRQG\u0003OQóÏ\u0015\u000eA\rPà)4T¶1\u0014r§à¸·nká\u0014*³ °sDCPÃ%$\u0004vÖU)T\u00061\u001d\u0018F\u0017»I±a§¨ì\\Ñ\u0010Ôp\t\t
Âjj\u0004;u\u0012v\n±ä¼sECPÃ%$\u0004v\u0012\u001cwò$y'qÞIrÞ¹¢!¨á\u0012\u0012\n;\u0018PL\u0014($\u0015P|W´L# \u0014\u0013í¹P\u0004óàåèn
¬¨JK(\u0018\u001d±õ«Õ$\u001b5\u0002Ik×Å\u0001ý\bOÿIÌþ5È\u00123\u0010m¼\u000fézmº¬Íô¦îÿ®\u001e´ÎX?À\u0011\u000eôÍ«Y´w\u0001¡½²øÑ\u001c-Ò»;m¡[\u0004æï¥nDgì\u001f\u0015jºîÄf*]\f¹¤¾eybO\u0004ÎU+\u0014A=+3;!_\u0019rUýLÈg\t.cO»Xè%d AføUi¶µôÚtz2lFÄøLF\u0007G¤á\u001a¯Ëörè'ØëL+3\u0015]ÄY\u0002Û'9Ì@ëÜ5\u0001=\u001dË\u0019cWk\u001d\u001b^\u0006Jl&«Úle&³ú÷Äô4ýþì¢\u0010è]èÁ£'ô.nH\u0003¼*\b]Û0ãì±é\u001d|\u0013ýv]Ù?÷þù}nÞiæmbÇÀü\u001eÞAvä\u000e®ìw¸éo¡áqtf4Í.:)ÔL\u0004O;yùíó5»èØÜçë4\fZ¦öb\fÈéûx©aÿæÝlwi\u0011\u0007+ìÛ<ÿÍ$ß÷8]Ç·k\r»ì¶{зeZé#ÊOÜûÐ\"=XâÿÎ\u0013\u0005\nendstream\nendobj\n1 0 obj\n<>>>/Parent 6 0 R/MediaBox[0 0 612 792]>>\nendobj\n7 0 obj\n[1 0 R/XYZ 0 804 0]\nendobj\n2 0 obj\n<>\nendobj\n3 0 obj\n<>\nendobj\n4 0 obj\n<>\nendobj\n6 0 obj\n<>\nendobj\n8 0 obj\n<>\nendobj\n9 0 obj\n<>\nendobj\n10 0 obj\n<>\nendobj\n11 0 obj\n<>\nendobj\nxref\n0 12\n0000000000 65535 f \n0000004223 00000 n \n0000004433 00000 n \n0000004521 00000 n \n0000004614 00000 n \n0000000015 00000 n \n0000004714 00000 n \n0000004398 00000 n \n0000004765 00000 n \n0000004819 00000 n \n0000004851 00000 n \n0000004909 00000 n \ntrailer\n<<87e7f6ca0752dc220eab556ce12b7517>]/Root 10 0 R/Size 12>>\nstartxref\n5100\n%%EOF\n"},{"title":"Report Card 11/19/2018","content":"%PDF-1.4\n%âãÏÓ\n4 0 obj\n<>stream\nÿØÿà\u0000\u0010JFIF\u0000\u0001\u0001\u0001\u0000`\u0000`\u0000\u0000ÿÛ\u0000C\u0000\u0002\u0001\u0001\u0002\u0001\u0001\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0003\u0005\u0003\u0003\u0003\u0003\u0003\u0006\u0004\u0004\u0003\u0005\u0007\u0006\u0007\u0007\u0007\u0006\u0007\u0007\b\t\u000b\t\b\b\n\b\u0007\u0007\n\r\n\n\u000b\f\f\f\f\u0007\t\u000e\u000f\r\f\u000e\u000b\f\f\fÿÛ\u0000C\u0001\u0002\u0002\u0002\u0003\u0003\u0003\u0006\u0003\u0003\u0006\f\b\u0007\b\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\fÿÀ\u0000\u0011\b\u0000{\u0000Ø\u0003\u0001\"\u0000\u0002\u0011\u0001\u0003\u0011\u0001ÿÄ\u0000\u001f\u0000\u0000\u0001\u0005\u0001\u0001\u0001\u0001\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000bÿÄ\u0000µ\u0010\u0000\u0002\u0001\u0003\u0003\u0002\u0004\u0003\u0005\u0005\u0004\u0004\u0000\u0000\u0001}\u0001\u0002\u0003\u0000\u0004\u0011\u0005\u0012!1A\u0006\u0013Qa\u0007\"q\u00142¡\b#B±Á\u0015RÑð$3br\t\n\u0016\u0017\u0018\u0019\u001a%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ\u0000\u001f\u0001\u0000\u0003\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000bÿÄ\u0000µ\u0011\u0000\u0002\u0001\u0002\u0004\u0004\u0003\u0004\u0007\u0005\u0004\u0004\u0000\u0001\u0002w\u0000\u0001\u0002\u0003\u0011\u0004\u0005!1\u0006\u0012AQ\u0007aq\u0013\"2\b\u0014B¡±Á\t#3Rð\u0015brÑ\n\u0016$4á%ñ\u0017\u0018\u0019\u001a&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ\u0000\f\u0003\u0001\u0000\u0002\u0011\u0003\u0011\u0000?\u0000ýü¢(\u0000¢ ÔõKm\u0013M¸¼¼¸ÒÎÒ&yæG\u001c1¨,ÎÌxU\u0000\u0012Ià\u0001_ßðT_ø;ÿ\u0000áÿ\u0000ìù©ê^\u000fýt\u000f~&¶-\u0004&½ÓÃ\u000eð\"KÜ\u001c«G\u0019à¬(\u0003ö¼Ïâí§ðsàuäÖþ5ø³ðÏÁ÷\u0016çl±k~(±ÓÞ#¸a,ªG$\u000e{_ÇGíqÿ\u0000\u0005ý¥ÿ\u0000mýBá¾ ü^ñuæqtm6ëû/IU<\u0005û-¶È\u0000cs«7\\±$ó5\u0000oðö/Ùgþ[à\u0007þ\u001c=#ÿ\u0000+Ó>\u0017þÒ\u001f\u000eþ7¨>\u000bñïü^\bÜ\u000eÛj\u0019\u0018ÎtíØ\u001fÊ¿zÒî[\u000b¨çI!\u0017\u0012G$lU£`r\b#Aï@\u001fßÅ\u0015üUþËÿ\u0000ð[_Ú§öAºþ\u0010ß~5û\u0004\u0007åÒõ¿í\u0017üFÓ>0|3ðïtI%FñNm«Ø<±Ýíî\"Yc,§%\u001dr\u000fJç?k/ù5ö*júI-\u0000t\u001fð¶|-ÿ\u0000C/ÿ\u0000ðc\u000fÿ\u0000\u0015Gü-\u000bÐËáÿ\u0000ü\u0018Ãÿ\u0000ÅWðGE\u0000{ð¶|-ÿ\u0000C/ÿ\u0000ðc\u000fÿ\u0000\u0015ZZ\u001fôß\u0013Äï¦ê\u0016:Dv»[N²>©8¯àF¤´»Âê9àHf
ÄÉ\u001b\u0015hØ\u001c\bä\u0010{Ð\u0007÷ñE\u0014\u001f²ü\u0016cöý5+gð7ÆO\u001aC§[\u0011\u001fT¾m[JaÜ}çÌr8%\u0015[§#\u0003\u001fÐ?ü\u0011/þ\u000esðwü\u0014kÄZoÃ?\u001avðóâýÚ¬\u001a\tHÑ|Q(\u001c¥¹r^\tÏ8Ù·q²Fc°\u0000~¬QEWÕµk]\u0003J¹¾¾¹·²²²ç¸¸A\u001cPF ³;±ÀU\u0000\u0012I8\u0000P\u0005å>)üwð?À½1o|mã/\nx:ÍÁ+>¹«[éñ0\u001dpÓ:þ|ÿ\u0000à³ðv|uã=cá×컨\u000f\føJÆVµºñÐ6¥\u0011Ã\u001b%qx\u000f8©þVS\u0017Cø©ñ\u0003âG¾,ø®ë^ñV½x\\½;®u\u001dVö[Û»êòÈÌíø\u0000þØ¿áì_²Ïý\u001c·À\u000fü8zGÿ\u0000$W®|6øÉá\u000fÚK_ø?Å^\u001bñ]\u001dq£êpßD§Ð´LÃõ¯à¶¾\u001füHñ\u0017Âo\u0015ÚëÞ\u0015×µ¯\fëGu¶£¥^Ëewn}RXÙ]\u0003@\u001fß\u0015\u0015üÐÿ\u0000Á\u0019ÿ\u0000àé~\u0015øãào
?\u0017ü¿~\u0019ñn³e [j×l-õí%îgHRC8\u001bnKåeó\u000fi@\u001bOô½@\u0005\u0014Q@\u0005gø³Ågü/¨ëzÖ¡g¤èúE´·×·r¬PZA\u001aI\u001d\nª IÀ\u0002´+ð\u000bþ\u000f\u0007ÿ\u0000³ÞXj\u0016²·5\u0017'\r_Ç×\u0016òá¤\u000f-4Ó@Ú\u0012âAüAà\u001fÞ\u0004\u0003äßø/çü\u001cIâ/ø(ç5\u001f¿\u000bu\rKÿ\u0002tÙL/·u½×$Vÿ\u0000Ã-¶Fcã<<vÔòÊþàÜßø6«HÔ¼# |~ý¢´\u0005Ô¥Ô5\u000f\tø'Q
ZÕ``¯\u0015ýôg>aprî6
Ã8bÁP\u0003óþ\tÇÿ\u0000\u0006îþÒ?ðR\u001b\u000b-EðÜ\u001e\u0006ð\u0005à\u000f\u001f\u000eëXB´÷\u0000ítO(Akõà?ü\u0019+ðÃ1?Äß\u0010¼Yz\u0000fM\u0002ÒÓD¶' \"Uºv^£!¼t¯Û\bb[x\u0011U\u0011\u0000UU\u0018\n\u0007@\u0005:?-?â\u000f¯Ø÷û\u001bì¿føçìÛöÏøI}ïcÊòóÿ\u0000\u0000ǵy'Æ?ø2cà¬g>\u0003øµñ;²\u0002c:Ä6ZÕ´G'þYÇ\u001d³\u001cpdÏ\u001dkö\u0000þUÿ\u0000l\u001fø47öýí.µ?\u0003·>1èÐ\u0002Á4Keª\u001dKZ\\m\f}\u0016)ecé_ÿ\u0000\u0011¾\u0019øà÷¯|;âÝ\u0003ZðÇ4×òîôÝZÊK;»fÆpñH\u0015×y\u0015ýðWþÚßðN_ßðPß\u0004aü[ð\u0016â¥3\u001d è`ÔôÌó{¸ÊÍ\u001f<\r±\u001b\u0014\u0001{þ\tëÿ\u0000&\tð;þÉþÿ\u0000¦ëzè?k/ù5ö*júI-nü\u001eøa§ü\u0012øIáo\u0006i2]Í¥xGH´Ñl¤ºuyÞ\u001bhR\u0018̪ª\\ª\f \u0013\u0001Ò°¿k/ù5ö*júI-\u0000\buúÇÿ\u0000\u0006ÖÁ\u0015>\u000fÁY¼\u0013ñkPø£uã;yü\u0013}¦[éÃCÔ¢´V[îZO0<2n9qcµù9_Ðïü\u0018éÿ\u0000$·öÿ\u0000°®
ÿ\u0000¢o¨\u0003è\u000føköHÿ\u0000 Æ\u000fü(m¿ù\u0012¸ïðeOìíâ-&çþ\u0011\u001fß\u0017<1©ºâ\u0007½¹±Õ,á8êb\u0016ÑHÜò|?\ný¢?ø+Çü\u0010Câçü\u0012>êÏXÖ®,¼qðßVì¶^+ÒÞ(áªÁw\u000bdÛJÀ\u0012£s£\u0000v¹!|A¦jw:&¥oygq=¥å¤«4\u0013Ã!HdR\nº°åX\u0010\b#Et?·\u000fìפ~Ø_²\u000fÄZÝwÖ>2Ð.´õFPÆ+
æ\\ñ¾)Ö)\u0010öhÔö¯á^?±¯ø7Ëþ\nSuÿ\u0000\u00055ÿ\u0000uè>%ñ\rÊÜ|@ð}ÃxcÅO¦îê\u0014Fï\u001fôÞ\u0007Ø\u0017Ì2ª-|¯ÿ\u0000\u0007ÁB5?ÙÓö?ðÏÁ\fÞËe«üeàë3Ã!Y#Ñí|¿6\u001e9\u0002âYcSÎ\u001a8¦R\bjù§þ\f|økñgã÷
7³iºF«\u0014-ÄsC5ÄY\u0003ý¥÷\u0017®\u0006<¯þ\u000f[Õî&ÿ\u0000|:°i\t´¶øagq\u001cx\u0018WUÕUÎzò\"Oûçë@\u001fZ\u000e{ârËLÓm.u\rGQ-m-mã2Ms+°T\u0014d³3\u0010\u0000\u001cEB\u001fðMoø3_Ã\u0011x\u000bMñ7í3â-j÷Ä7±¬íá\u000f\u000f]µ¦\u000f>UÍØ\fó>1¸BcUlò\u000ekòwþ\b/«øsCÿ\u0000Ä~Ï\u001e*û/öPñd1Æn1±o\u001d\u001d,Û0EÓ@AìÀWö@\u001f×_ðk\u0017ì3q¤ý~\r]A6À¿jO\u0018ë\\e°×
2{ü¸ç+ãÛkþ\f«ð^¿ Ýê³ÿ\u0000Ä}kÃÚÚ$z'\u0019otëí\u001a]C\u001aÍ\u0000÷tçÓ<~èÑ@\u001fÅ¿ÃØâì\u0017ÿ\u0000\u0005Yø3àÞ\u0011Ôü'¯Aãý\tá\u0017\n\u001eÛPûJ\u0000&¶s\u001cñ\u001e\u0004\u0010pÀý¤W~Ó_±ïÃÏÚûHðõ¯¼9i¬Éá\u001dj×Ä:\u001dáù.ôëiRXæQó&Y\u00142ý×\\«\u00028¯M \u0002( \f\u000fß\u0012tÏ\u000b¼IâýjC\u000eá]*ëX¿uÞÞ\u0016CÏ\u001c\"5\u000b_´¿ÇÍsö§ý¡%ÿ\u0000Ø©ªé$´\u0001ü!×ô;ÿ\u0000\u0006:É-ý¢ì+¡èêþx«õ\u000bþ\råÿ\u0000çü=ÿ\u0000>x;âã\bøËÄÒøêóN¹´m\f[\u0015·[d¸W\u0012yÒ§'Î\\c=\r\u0000WTWã\u0007üFÑð\u000fþGÅÿ\u0000ûãNÿ\u0000äæ¾'Áï?\fôí\tÁ¿\u00042L0ßxáV³pßðx¶8?w*ku·®u\u0007\u000b \u001bÊ\u0013£Ø\u0010H ä\u0011Ú?¿º+ùSÿ\u0000Tÿ\u0000ÁÔ¿\u0019¿aæøSâ½øÉðÒÜ,\b÷X×´\u0003ì÷m2¨é\u0014ùáB¬\nþ¿`¯ø)Áø)GÃaâ?þ0³Ö\u0011«ê:Dÿ\u0000èú¶ÍÆËf;ÓãtlAØì9 \u000fz¢(\u0000¢(\u0003à\u001fø:*Ò[Ïø!oÇ\u0011\u0017Å\u0006
#*.w(×´âsÁ8\u0003æ$cîúf¿\u001aþÞÿ\u0000à«?³ìÿ\u0000µGü\u0013oão¬ÅÞ§¯øBüi°\u0015ÝæÞÅ\u0011ÕqÖxãä\f£_Ä%\u0000U_ðg-µÏø$\u0017Ù ÙæèÞ7Õ¬î6°'Ì1ÛN2\u0007C²dàó\u001eWê?ÿ\u0000ðdíikmÿ\u0000\u000bàuýÜq]\\IoãM\u0016Ü\u0019ð«i|G¸\u000ba9ÆãÑkú\u0000 \u0002( \u0002( \u0002( \u0002¼ÿ\u0000ö²ÿ\u0000Xøÿ\u0000b¦©ÿ\u0000¤× WþÖ_òk\u001f\u0012ÿ\u0000ìTÕ?ôZ\u0000þ\u0010ëGCðâuéºf¡¨\bH\u0012\u001bkgfzgh8è*ίèwþ\ftÿ\u0000[ûDÿ\u0000ØWBÿ\u0000Ñ7Ô\u0001ø\u0005ÿ\u0000\n£Å?ô-kÿ\u0000ø.ÿ\u0000®³Á±wÆ/\u0013Ã\u001f~\u0013|Kפ¹\nЦá{ë¦1\u0001Jç$1×\"¿»\n(\u0003øüýÿ\u0000àÙ¯Û\u0017öÔíü*ëúLÎ\u0016]SÆI¤¥¶OV·;®Ïsò@Ý=Æyÿ\u0000à_ðn/Ã\u000fø%Ý¿u»ÄøñÊe]zæÛɳÐéWK\u0018\tmA*frda¾Z³!ý\u001c¢\n(¢0>(ü+ðßÆß\u0000j¾\u0015ñ~
¥xÃzÜ\rm¦jVËqmw\u0019ê®\b>£¸ \u0011ȯÀÿ\u0000ø+'ü\u0019íw£KÆß²µÛßZå¦À\u001aµßïá\u001dÅ
äûÁé\u0015Ã\u0006àâV$-AôP\u0007ð=ñ\u001bá·~\u000føÛQð×ô=_Ã^!Ñæ6÷Úf©i%¥ÝªI\u0013Ê}o¿´\u0017¿eߺWþ\u001eøWðôI|Û=KNÅ,~ªßÂñ°á£pQÔ`A\"¿²ø)ü\u0012\u0007à·ü\u0015?áãi¿\u0011<>þ$´Ç¤x¯LUXÒO8\u000b.\b,e\f$\u001fÉçü\u0015/þ\tiñ\u001bþ\tEûFMà\u001cB/ô«ñ%Ï\u0011}Ú§
/D³Z4
\"ÔíX\u0014¸µ\u001fÁ,LËìHaÊþÒ?bïÛ#À¿··ìåáßß\u000eõXõ?\u000fø\u0000Æ2Ëö6à\u0001æÚÜ 'Ë2pËB\tVRß\u001dø\u0013Yø_ã]WÃ\"Òï´M{C»ÇPÓï!0ÜYÏ\u001b\u0015xÝ\u000f*ÊÀ\u000f¥}1ÿ\u0000\u0004¡ÿ\u0000À|Qÿ\u0000I|c^ðT±k>\u0017Ö5ñ\u0017
oåe±ÖcSÃ\u00022a¸PNÉ\u0012¹Ã+©(@?´ê+âßø'Gü\u0017¿ösÿ\u0000è}¿|cgá/\u001cÝ Yü!âI£±Ô^ë\u0001cåÝ\u000e¤\u0018Yn\u000b*\u001c¨ûJ\n(¢\n+ç¯Û\u0017þ\n³û=~ÁZtïñCâ
´\rF\u0015$hÑ\\}·Wàà-\u0001æÁ#\u001b\u0005\u0007«\nüJÿ\u0000Áä>.ø¡c{áoÙ³Ã\u001e\u0003Òæ\u000f\f,×£}bU9\u0019·¶\u0005á·ÿ\u0000}ÚVä`FFh\u0003ú:¯?ý¬¿äÖ>%ÿ\u0000Ø©ªé$µó¯ü\u001bíãÍsâü\u0011ëà¯|K¬j ×µ{\u001bûíKRº{«»É[S»ËÉ+ÎÇÔkè¯ÚËþMcâ_ý§þK@\u001fÂ\u001dC¿ðc§üßÚ'þº\u0017þ¾¯ç¿¡ßø1ÓþIoí\u0013ÿ\u0000a]\u000bÿ\u0000DßP\u0007îý\u0014Q@\u0005\u0014Q@\u0005sIñÂïñ~_\u0000mØ/âÒ#×Î϶åì\u001ei \u0017\b§ï 6V+¦ìoMÝ-<ðv\u0017íMã¯ØÃþ\nßð+â7Ãzëþ+ðï[kRU:àxeCòÉ\u0013®UѲ\u0018\u0012\r\u0000CWç?ü\u0011çþ\u000e7øIÿ\u0000\u00051Ð4¯\fx÷LøqñbÃ׳ùvÌ \f¾3H\u0018ä\u0019¼åçU2\u001fÑ\u0000+á\u000fø9\u000fö8Ñ?k¿ø$ÇÅ\t¯!mwá7´KÒËg%m5Â×lË2\u0011|ÊpJû¾¿,?àéø*ÿ\u0000dßØ_Äÿ\u0000\u00074ÍZÎ÷âÅÍ<é\u000b¥ÂâIt*oêîáGÜW|1Í)e\u0004Fø\u0000þT«úÕÿ\u0000M|m{âïø\"×ío$i\u0013ÃÚÞ±¦Û\u0016l\u0017Û\u001ep?\u0006ö\u0002¿ªþÅ¿àÛÏÙê÷öoÿ\u00005ü\u001bÓu[fµÕ|Ceqâ{d\nÛoîe¹·$c9û3ÛçvOÐ\u0000\u0000\u0007ÜÔQE\u0000\u0014QE\u0000~jÿ\u0000ÁtàÝï\u0007ÿ\u0000ÁT4¹|uàë\u000f\u0004ün°¶\u0011G©¼x°ñ$h¸H/ÁÀ\u0001RáAe\\++¨@Ëçígû\u0019üNý~,]x+⧵\u0007ëöåGw\u001ea½\u001cy¶ó.c\"z\u0002ø¿öbÿ\u0000Pü\u001að74K\rø³BÒî\u0006¡¦Ü:4¶[Û_c0\råÈås\u0001\u0004\u000fqý¬¿äÖ>%ÿ\u0000Ø©ªé$µè\u0015ÏüYð/ü-\u001f
~%ðÏÚ¾Ãÿ\u0000\t\u0016u¦}§Êó~ÏçÂñïÙ»nìã#8ê(\u0003ø#¯èwþ\ftÿ\u0000[ûDÿ\u0000ØWBÿ\u0000Ñ7Õÿ\u0000\u00101ÿ\u0000ÕÑæ7ÿ\u0000ï¥~ÿ\u0000Á\u000e¿à¿ðæO\u000b|EÓáfÂÈÿ\u0000úîÆëÌÿ\u0000wû\u001fì\u001ffI×n>Õ?»ÎëÆÞùà\u0003îú(¢\n(¢\nþ{àô\u000fØïâ_þ1ø\u0003ã\u0006á\u001d[Xøwáß\ncjú½~zi7\u0002òâPn\u0015rñFVTĬ\u0002n;wd¡*îÒ+ûY (æd1É\u001c\u0019dR0A\u0007\bí@\u001fÀ=}mû6ÿ\u0000Áv¿kÙ?G·Ó|\u001fñÃÅÿ\u0000Ù6ª±Ãa\u0018uËh#^Æ©7ã\u0011íÇlWôAûwÁ¬?²÷íª^ëº&¨ü ñ]Ùi\u001eóÂ&8tùä?Å-©\u001dsäù$Æ¿8~/Á\u0016ôBQà/\u001f\u000e|AkÝ\u001d~Æ÷G¼![¡ÓwCØzð\u0001ò\u001fÄÏø9ëöÙøáçÓ%øÄú-´ÊË+èÚ\u0006cpàã¤é\u0007s§¦>\u0016ñuÞ*¿×|C«jzî·ªÌ×\u0017º£t÷WW·Þy%r]Ø÷,I¯×]#þ\f¤ý¦æÔc[ÿ\u0000¿\u0002m\t>d¶ú®«<1Æ\u0010éè\u000f8þ!ý+ìØþ\f¾øWð³[²Ö~6øûXø¡5¹\u00126
¥[¶¥;rYCµÄ«î\u0001ü\u0007 \u001fð@ø\"?à©ß´u±¯éwÖ\u001f\u0004\tøâF¥ð§Âv\u0010øUâY¼'ãí¾(KßµÃw\u001d¬ÒéÉöp¯\n\u0019c|ÊÊ͹\u000f{e[xÛâï?à©\u001fµ=ÇÂ?\u0006øOÆ7+¥xJçPZÖ¤ÓþHôéÌp[÷Ë.çÃ;\"/É;\u0000?Cè¯o?à¨úïÄhþ\u0000ÇðÓÀ\u0016úÆ¡ñãIÖîííµPØ\r\u0016çNH÷¤Î¨ùdiw]ÅbùWs\u0000,è¿´t\u0004ýª.5¯¾\n±ð§<9ðZïÄýæâ\tïílíõW\u000fo\u001cGd/¸F&\u0012\u0015ó\u0017¸I\u0000úÛT׬t7µ[ÛË[3}:ÚÛ\tæXÍÄÌ\t\u0011¦HÜä+\u0010£úUºüçøñÇâïí\rãOÙcÅþ-ð_|%ðûÅ\u001f\u0012´Ý[ÃñZëSÞk²é·ï\u0000»Â°®øX¹Øä©Ú¤\u001c;\u0007ÿ\u0000¥üFñg|#á¯\u001e\fá÷¼y/´CVñL©½Ä3M\u0013Ë-¤6îbV0>Ñ+g*¸\u0000}ÑPê\u001a\u001aM÷WSEmkm\u001bK4Ò¸HâE\u0019ff<\u0000\u0000$Ó\u0015ð\u000fÅø.\u0015§> ø¶÷MáÞ\u0002ð\u000e¹&
©Új>3×ÅÚ¹Q\u0015ÍÕ°\u0018±Ev\r*ÄJãpÇÙ?\u001fõ\u0018uÙÆ×vÒ\t®¼1}4R/GF´©\u001fPE\u0000Yð\u0017í\u0017ðû⮬lã¿\u0006øùWq·Òõ«kÉ@Á9Û\u001b±Æ\u0001íØ×e_?³7À+Ú\u0007ömýl>\u0018þÏ:]nÎ\r^\u001d=îíRþâ7+fDÒ¢\u00193 ²ä¸z×çvñ\u0017ã\u001fÃø(Ïí}ð£À\u0016ñ¬vW>\u001a¾ÕaÕµ©,'cÑP¥µ¢¤N\u001ei\u0001r¨»\u0000ä°®ßÁß\u001et¯Úöíýþ éV×6Úg~\u0013ëú[NØß|ö;âf^êÁ#®2(\u0003îJ+àÿ\u0000_¶Í÷ÿ\u0000dïÙóÂ\u001f\u0007¾\u001dXOã_:EÖ¡¥hÚ¯.\u001fLÐ,µÍÅÍäçwH\u0002 \u0005r\u0006\u0002\u0005?_|\u0006×¼qâ/0Oñ\u0013Ãú7¼RK\u0015Å®©\u001bû9\u0015\\9\u0019\u0011°ëµ\u0011ÐÐ\u0005Ï\u0014|iðw!Kû_\u000bd··>\u0010Hâ
,oN<û[xTG4-Ôí_¡4ø3Â\u001aþ\u0017èþ\t´øs&áýSCñ\u001föÄP_,Fagv¦(Ê3¢¾Ù\u0013r\\p\u000eà\u0001ôƯXøMKÍ:ò×P´R{iXØ«\u0014`\u0019I\u0004R\u000f¡\u0004v«uù©ð'öÏ׿d\u001fø'÷ÂäÐô\f3xÓÇ^(Òå×¼S¨Í§ø@+¬ê2!»(¤eóHòÐà(nX+ô\u0017àß5Ï\u001aü.Ðõ_\u0012i6\u001a&¹}j²ÝÙXê\u000b¨ZÄç<Å:$\u0019N\u0007\f3Í\u0000tÔQE\u0000Sñ\u0006eâ½\u0006÷KÔa½Óµ+y-n¦MÑÜDêUÑꬤ=\r|àÏø'·Æ/ÙÓKÿ\u0000[àÿ\u0000í\r7>\u001d¤®tý\u001fÄ^\u0012^¹ðümòí®ZXËÆ\u0018áca\u0007sÎ~â>Añü\u0013CÆ>0Ô¼#©_ügĺÎáíWÃúß<5\u001e¦·_o¹3½í¬I<)gu\u0018Ä(ãx\u0011\".0¼è~ÍðMOà~\bk\u001a¬õ¹~\rxWPðºCm¡5¢êQÜù{\u001c±¸¡GÁÞNp+êê(\u0003ä\u0015ÿ\u0000Á.\u001bÄÿ\u0000±ïÇ\u000f
?ð\b[ã/õ\u000f\u0017\rOû\u001fpÒ>Õy\u0005È·ò¼ñçmò6ïÞߣ\u00182üHý>&GûKøïâ\u0007ÃOÖ\u0003OÖze»m?
\u0013R¸·K\u001bg9-fiÔ+ìyN\u000bg'h\u0007ë*(\u0003æ¯\u0002Á74_
_\u0010gÝGúõÍ®ð\u001bJÖtجnm¼ùõ¶Ôa\u001eg:ÜH¯#a\u00181\u0014\nì|sû\u001eiß\u0011ÿ\u0000icÇÆ¢.ô{áìß\u000f¯´#jWÎk¦I¼ñ&FU{\u0002wÎîÕìP\u0007ƺ?ü\u0013â7u?\u0016ºÆoøJ¾\u001f|\u0016ÕàÖ¼?¡Má(Vmmf·ÞKå¹Uv\u0011LSyg\nHÍ|}û<|}°ð\u001fí\u0001\u001fÆX´^/ñÿ\u0000Ä\u001a7àÑö©~\"xao.\u0004\u0012C\u0018\b#\r\u0004D\u0016&Þ< \u0019X[ö.©Åáû\b55\u0014²´MBdò¤ºXTM\"qòÆâ>QÆ{\u000fJ\u0000ùu?à\u0010~\u0019xóÅ|)øÔ\u0003ðgõõû½\u000eçÁÖº¼ºmÝÁÝrÖw\u0012H¢$¾`\u001bª\u0012p\u000eH¯¤þ#ø;þ\u0016\u0007Ã{Ãÿ\u0000i6¿ÛzmÆö\u001fäù±4{öänÆìã#8ê+n\u0000óÏÙ7àAýf¯\u0004ü=: ÖÏô4³~-¾Íö¿-q¿ËÜûsé¸ýkæÿ\u0000ÿ\u0000ðJÿ\u0000\u0019xÓÃ?\u0012ü\u0013£übBøiñ\u001fÄx¶m._\nÇ{k{=ÜwsB.Lè\r¹0À\u0004W\u001b±¿\u0000ïûN\u0000ù\u0017âgü\u0013ãâmÇí\u0015ñCÆ_\u000eþ4Úx\u0017KøÄ,\u0013_³Âi¨^Z[!h\u001aÚá§P¬Wq\u0004ÇòÏÍ´\ní~\u001bÿ\u0000Á>4_ß\u0013þ\u0015êÞ\u001bÕæ´Ð¾\u0016x2ûÁöºlöþt׫röïöx\u0001³\u000b\u0016P&C b¾
¢>=Ó¿àz§¾\f|\u0019³ðgÄÉ|9ñ+às¦i&þÃKMNÚçý}½ÅÊrÁ\u0012îB\t\u001c>ø\tá\u000f\u001aø'áòYøÿ\u0000Æ69ñ\u0013NòÉ©Zèɤ¨ØÛ\u0012®ü.\u000fÌXqÒ»Z(\u0003äÚ\u0007þ\tõñ?ã¼¾-ð¤ÿ\u0000\u001eoâøEãÙnµ-\u0006ëÃ]jpË(K;[âãd\u0005²\u0017tlcS´g^ñWì\u0003ã_\u0000üjñ\u0007¾\b|Uá¤\u001e6Î?\u0010húã×m$Ú\u0011\u0004w6ûå¢Dª¥IesÉ澨¢Þ\u001b³ñ#è©ue¬Y:¯osdò}ÆtFR²nB\tËt¯¨ \u000f-ÿ\u0000à\u0016¾<ð\u0007ÄøY~:Ôücñ\u0007âsXI{âK\b´Ã£¶Áì\u0016ÆÝK¬K\fqË1¸óZ\u000fÿ\u0000ao\u001exã'|[ñâÚ|JO7\u0012ÞxkM±ðÜZ$\tvñùBöè¤f!mª6¢³\u00123WÓôP\u0007Ê0Á?>stream\nxµ][Û6~ï_ªÚuË\u0004\bÞ²/ë´\u001d{²N¦ÇvÕÔÖÖ>°Õ´ÅD\u0012;$Û\u001dϯ_\\\u000eHH-\u0002$\\I\b[\u0000Îýò\u0011þ¸úñÓU,Iɧû«7®þ~ÅÈÏòO)Ä?òßYÁȧÃÕË(¡âéóÕ_þýÓoò³ãG\"²=ØxÄ6EAR\u001amÒÔL.äÜH}¢ýrõ\u0017N£D.\u0014/\u0017\u00166,!Oâ/)\u001fÞ^ýïÿÿÞ_ÅEDR\u0016Ã\u0015\u0017¤Ë§ýÕGï(7\u0013Ä\u0000)Ù}¶wNÌÿ\u0005¥jzÌ\tOÉ5央>òn\u0012AF¼ANìÕw\u001f3*6\u0006ºÅn¨8f$çÓ\n(øGQ´4R±8S¤e\u001b\u001a«G\râ$)4;â)§|¦&XÊúh\\TEL\u0013±C6\u000fï?Ç\u0003y{ûj!ßl0%Å·±&Ïo%«cd%\u0006q\u0015ñ|qq--!©lÄ'òºm«¯uóضº¯ûnÌ\u0014åZj4αRã£\u0000\u0014\u0003ÿÞ´°a+°Å'ǽä\u0000%lK,wºÿ®÷ûº<¾ oËǾ®Úebä\u0010õd2´4´à
\u0011Î0WØH\u0019{6O\u0014Yáüy\u0014¥itÀ8\u001cO\u0002Gêi&Gq¹Ù¡lYtcÃIA±\u0014Ôp\"frfÊá]9ñh³4%,ò=åÚ|tó1+ø·RùÇlåÏ?Ú³¹åæ\u0014dÉ\n=ùêbñѸ\u0000ÀU\u0011\u001cE=aØ¡\u000fIi\u0012Ej®q-ʺóä0\u0016<ÙdÕüÌî#ÉìBvyQæäXs\u0001ªµ\u000eÕ\u0000e0f7%_³_¾InY\u001aÌ´\u0018\u001e'\u001b.Ëë|Úb~®ÇúsÕwå¡Þ÷H\u0013¯«òHÏ¢RiÛzû¸×m×?Äâ½ R3ùÝv×4{òMÐð<íêíTÇûê4G20Tl\b¹m/mÕuÂ\u0019¥ËvÕ¶\u0011DuDSAîDèøZÖûòn_]â!\u0017<ÐS\u001eÄ~¯«ÞQ¹á¾*»JT\u0000\u0007ýý®ìI-þ×ú I(=é\u001b¹W}$¾Üöbû~w*
¾*·;\u0011JHýYþ\u0005Ù_e`û&(®º¾n\u001d\u0011ùÛª=vKäfÑ'§ä~ÚIÒ$\u0019¤Üw\révÍSwºñv_\nq}/\u0004ZÕÅç·M{o$'ø8íï2ÖGÊY£Ûç¹Hj¹\u000bK7\u0018¼BãO£À\u0000³`ߢ¼\fcÎIbh.Ó|+óÅrÜI;1àN~´\u00104yëB-'\u0005¦e^ØÐär¨\u0013åü\u0017\u001eëjDÿøx÷èlºUè¿lç\u0007DÕ¤\u0011¿\u0001\u0013\u0006ÌO`6ì6\u001b\"É-4[#\u0018\b\u000b\u001dp!M:éE\\'¢½Í¸\u0010_\n°\u001ca\u0012h¶\u0004C
`7\nEXÔM|ÒÆ ÀÛ\u0005ÃNò\u0018\f;~.gQI¦\"BdñÅÆ°Ï\u0004}ûx·¯»è!no\"£½¤ÅK»\u001fZ$û<¶1²\u0018%û<¶dyCÒbËDaά7J|êMàsñÅQ¡°îmò©¸ð\u000bÔØ·ªÆþDtñ\u001b\t-´áU(Bh-´l\u0000¸ÚGW7Ïù§4s3¯Kr#5h\u001eÛµoMõöûM\u0005¤kåÛ¹2ïÎ'SH^x\u000bÁæñØÞÙ;6fv\u001f@øèY¸BÐì¦ÒµÙÍ®u{caݨt}\"ÇD¾\u001dq¾*ûIt¦/ÈÛªi¿,+^Ì\u000fs\u0003ó\u001ataÖNl!âÞµ\rI4¯N\u0012Ñ\u0010NSà\\tª\t\u001f%õÌâ¢xYqfjã~\u00122ÂRæN%ä¡Ø5º´\u0013Å@±zÂSlròëøRiËÔðÂá×\nÌyeÐ]uÎÁ$ÐÌr¬\u0004\n2ð%P3G\rðrc\u0005húò©F\u001e=/}ÝÍeʧ\u0019ôÊ£FÞì2Øù}iab\u0007A\u001dôÓL
â3J®Ùó\u0012eÉ\n5§tMTv\u001f«CÕI>CéÒD\"IBÁÛ§õ̳:@ºÒ\u0012ÒÕ\u001c[s8âH\u0006\u001b\rX\røìø:-á§h\t³s\tÇqú=%lHWñ\u000e)a- Üã°¦CXY\u0012é*J\\\n®:Ë'\tßdéE²/ä\\t¦\\T~\"\u0003½[Yh\u0018ZÇ\n\u001c\u0013u3;êÎÊP¹ªÚûl¨|ïéÉ;ÍcÛ\u00145»¦ðFø(\u001f¹Ïþ\u0014\u0003µ¶Ux{\u0005tz\"\u0017Bpé\t8Ùn+\u000e¸`\u001d\u000bòÔjiå\u0000]#8*bïäì9Äg\u00199ÿ/X¨ª(à(}\rÄ^Ìñ2÷¯¿p#âÔûJ¸ÇÂÚdbù\u0016ª²0ÁØ(g\u0006{a¾³Ç\u001e\u0001È7;Å$ÿ\"¨Mòÿ\u000fuvò°0é5\u000fÑ£eJûTÆã\\¾êæ:Þ«¿½ùps\u001d--^ôÖ\u0007#Å<(!È·\u0010ü\"\u0013¬7ÜÃÈí½\u0013[Á\u00054qûÉíòzG9¨ñT,Eøª\u0006sÈ×;f\u0016 SLù\tÒ\u0005ub\u0015S\u0001\tÅuG%H\u0007\u0019 H\u000eB\u0012\u001a\tbÈOn-\u0013«\u0018\n2íkòÉël3eϸÑjÈA) +\u001bé\u0003®¬|UçðÕÈB\u00164\u0002ºP'dg)^\u0011d|ÕOQ$¨4,AzIfù* Ð?XB`R#!ã«~Ù\u0001a\b:9u\u001a\tóK'û¾_n%ÜóÃbðQG\u001eõÖ'~v\u0010d¬$+6IbSöìµÙ2X\u0005ä\u0003dåØ\u001c\u0006\fXï°\u0018êÅâ8'Çä½sÅÐdR1ÿóéõJÍ0çEM\u0018÷F©\u000bª¤Óo@a·FÌ~ßPæØR%Å´Ff7j¿î£¸ÞÙGâ)¢=:·OÚ\u0001 °+ì bF\u0010ÞÚ}rm0¨^Â8²¿uà\u000fÐ\u0011\u0019*!\u000b+ATO±UΩAÀêɪ\u0017 ÷f£\u0011ªAè\u0002Ƭô\n\u000eâ8\u0007ç4Ý\u0016\u00133S\u001dïwSw¶;\u0001,Ér¦éfX\u001a!-Ú\u0000µ\u001a\u0001g\u0017Yí\u001cÌI34\u0017òw&\u001aëÄì\u001ayúZõ³+Ý$ȧ9\tEÅ&¦Î ùæÏò°QG¨àf,B\u0017ä`\u0011\u001c¸\u00079`LÞ\u0007NÈ×¹\u0013à(Ëåé0\u0017¾ô©j\u000fäã2
\u000enOÑõö¤¬Ñ¸*u|½å£:\u001d_¶}Ýõõ|i§~Gä·|ªCsìú¶ì+ù}
ªìÉC#\u001c¡¯Ë½ú.ÄSÓþÞ¾y*åÉùr»««¯2tÔ½ýæÏ]}'²2\u0011\u0013v]]vo¤¹Q)\u001eÃwã\"BãqòøàBå\u0000BõF\u001dEp%jì@pyâ°°w¿ËþüCJx×<¬Àp5-\r\u0007\u0001ck²\u0007\f'ëLΩ\u0003Éä1u`sÍSÕ.FpåÆ\u0003?\bµ/\u001dT>â[ÈÍÁ7g\u000eì>bÉ\u001a\u0004Wn}0\"X\u0015$åJn\u0004×ÉDp\u001dý)\u001aÁuúÉ«ÿX\fáj¿\u0000X\bã\u001aEnù\u001cxc\u001e,¤\t\u0002X\bADn\u0006Ô A°ø\b\u000ba\bÒ1fp\u0012\u001a\t\u0001, HØ\u0003A\u001cL:¨Ê\u0012fÁëm3e0£Õ+R@=\u0001W6Ò\u00059{W>wrW*Xãäqd9yìç\rª\u0004¥2ÄqÆ\u0016\u0013[\u0007e\u0010\u0004\u0019\u000b\u0000[\bKZ2,'G\u0010\u0004\u0003&\u0014 ÔHÈ8¹ co`y\u0018Î %LwIk±_8G\u0010±!^Í\u0001\f-Ê_¥±\u00060}¼!²r\u001a$(Ljc\u0012æ¹bDñÝ°_\u001d¼¨\tÊÈÔ9áͨrä%°*\u0013\u000b*ĨEsl©c*³\u001b·º*#\u0007\u0011\f»©\u0005\u0010Õ¹\u001dÈé¾\u0017ö\u000b=_Ä\u0010Uÿ\u001cå0Û`P]\u0011ql\u001d\u0006F\u0004ÀÄVKè\f%ÔRbʮت\u0003Õ `Ùe\u0015\u001a@\u0010Æ{³Ñ\bÕ tå£ó\u000f\u0010ä÷\n\u000e=æ8\u0007ç4Ý\u0016\u00133S\u001d`¿Îl\u0017\u0018û
\u001eK#}\bË¡v\u0007A\u000eÂ\u000e}\u001cÌI3\u001aûu%`د¶Zj\u0015Þ>®\u0012fXUOkì×\u00154\u0003`¿Úäéi\r°\b]E \nrà\u001eä1y\u001f¬!Vsc¿Îfd-ö\u000b \u0013ºÞ5\u0016û\u0007Û©\u001c\u0010Yã\u0011YZX¬\u0018 \u0012ÞH=;-
å$\nì@dãÜÕÞÚê¸Ýb5$-õÀ£5½\u0003\u0014\u001bçë É8-\u001cd\u0014Ó¬ÿëêr±¥¤\u00050àï\u001fÕZî\"V±G.¶3Çyó÷)ekX¹õÁ`UÈ+¹X'#ØyX¶nÀZ0\u0006^ä
Ë×Äça- ÀZ\u0010\u0004I8d H\r\u0002\u0012\u0004X\u000b \u001d)F@5(A©\u0010`-\bdÝ:\u0010ÄÁ2ª,7ßó;ÍLÙçæ{AW\u0006¥z\u0002®l¤\u000br\u000e¸²òU¿ÁW\u0013X\u0006n\u0012Ô×Âf)>±¾\f È(\u0012T\u001a ½dnù* Ð?XB`R#!ã«~Ù\u0001a\b:]â|ºXÂÛù\rag\u000efQö\fL[v\f`/³\u000f\rDVÊP\u001c
×srLÞ;WL6ý%ÕÕ¸¨\u000e:H^Ô\u0004edj7J]PåÈK`Uæ\u0016QæØReimÌn©ÝÛ¤¸Þ&·¾oí·4ú~¸(t^\u0011CÔàsÃlAõ\u0004FÄu\u0019\u0007\"\u0000&¶ZBGd¨F\u0004\u000fS=ÅV9§\u0006\u0001«'«^\u00000ÞF¨\u0006¡\u000b\u0018 ¿WpèøÆ9<§é¶ê\u0000\u0017uf»À¸(´J\u001a\u0005CX\u000eµ\u001b\u0001j5\u0002\u001eäll¯ä`NѸ¨+Ñ\u0004ÃEµÕR«~öqG¥9\t\u0007pQWÐ\fj§§5 Â\"tA\u000e\u0016(È{\u0003Æä} XÍ:A\".ûB\u0012\u001dÜ¢ëíIYcqQy\tÌô7ÈÕÉÖ§j¿'õñ¾z×n\u001fû½¼ïÜ>ê\u000b¶û\u001dùÒhP}\u0003ñ\u00177ͱÛÖò|¬üù#y@vW¶÷×ò¬\f\u001eÝé\u001dÊsá$&b\u0018OÑ@\u001aãÙ3å\u00003õFêiÜi1þF\u000b'ä\u001a9LêÕ-y#äö¾î0oÃs°\u001a}VÆâ5å#øùý7\u0014¼\u000f\u0012
d¹ãç\u0000~,Çæø2õTu»\u0018\u0014hëÉ\u0013¼õ(KÞ)V\u0010 C\u0000
ãxúÓU0l\u0004¯*¤\bÖEH±\u001bu2\"aXÇ·üpq+MÜ>óãò³rÚA\f&ð\"·D\u000e¼^2\u0013\u0013¢
\tù\tR°!H\r\u0002\u0012\u0004[\u0010 \u001dl,ü6$A©Áü\u0004©úÚ\u0010ÄÁ¤ª,\u0002\\\u0011ám3e\u000f?àÆ®\fJÑê\t¹²®³å3'wæW×\u001cª\bíä&ª{\n¹C>É#ÅhÀÉ\u0011\u0004\u0019\u000b\u0000[\bK^2\u001d\u001cC\u0010\u0018\u000eP`R#!pr\u0004AÆÞÀò0\u0004ãJtºEZ\rüÒ\u0001ü¡\u000bÐBÇOü¬º\faöÙÈÊ5j»\u001dvc\u0012æbXQ|Gà7Êñ¼È\tÚÈäYá\rTiñ\u0012Xö¥½\u0018µhGU²\u0002Ó`Án \u0004è°\nT\u0015ÛWí[»áí@l÷Ý_èÿ\"¨úç(Ù\u0006êBMC\fÐ\u0011\u0019J(\u000b¢D]±U\u0007ªAÀ²Ë*4 ÷f£\u0011ÊAèÊ\u0007ò&\bá\u0015\u001czÌq\u000e\"Ïiº-&f¦:\u0003üº²]hà\u0016\u0016Ìç·\u001cjw\u0010Ôê |ÐàÐÉÁ4£_W¢\t\u0007üF\u0000ùa,Ä0¢YWOkà×\u00154\u0003\u0000¿Úäéi\rè·\b(ȵE`\nrà\u001eä1y\u000f¬!Ws\u0003¿ÎfdíX\u0000Ðõö¤¬ÑÀoäøÖòb|ÂÅ4ãh|Mþ\u0012ÉØhæ¿KÚ\u000b
«ì\u0016ãÅüÆ\u0013IÙr ºî¢])4\u0007ÓÌq|ü]\u0012¥×ÑÂÛýaë\u0011Áº &ÚÃͺ\u0018YÍÎD_xf¡/\bó.r˾å\u0000qã8 Â8A_ü\u0004)Ä\u0010¤\u0006\u0001\tÅ-ô\u0005A\u0013#Ä\u001a ÔHÈ /~T%k\bâ`AU\u0016§Æ\u0018¼N3Söqj´\u001areP\n¨'àÊFº ç++_¥ÜòUê¿\f4\u0002º¡¨\u001fÐ¥xÊ-_õ\u0013d\u0014\t*\rK^[¾ \bô\u000f\u0010 ÔHÈøª c6`@\u0018Îxº§X»û\rag\u0016¼6R\u0016ö\\åì#\u00052Ô\u0000÷[Eã\u001c÷Î\u0015òïê äEM`æ\u0006`º ÊÀªm`\r¡\u0016ͱ¥JivÌnÌêv\u001c|F0ì¦\u0016@4<çv@§oº\\Rs}°¿\u0006£\u001cf\u001b\fª'0\"¦Ö=À\u0000Øj\t\u001d¡\u0012²0=Dõ\u0014[å\u001a\u0004¬¬z\u0001\bÂxo6\u001a¡\u001a.`u±.Â+8t|ã\u001cDÓt[LÌLu:³]`¤\u0014Z%ÀÅüCíFZ\u000fK\u001bÚ+9f\u0000)u$`H©¶ZjÕÏ>®âÔ°4'á\u0018¤Ô\u00114C ¥Ìüª\u0010.¸\u0019 ܲ\bDA\u000eÜ\u001c0&ï\u0003\u0019Äj\u001e¤Ô\u0005\u0011=\"\u000b\u000fºÞ5\u0016)¥ÔqÒìº\u0010¶ìûZk}y_uu[¾!ûªl\u0004ÎÃÖ]¯\u000fÎncßÖwò.Yñ¡<4]Cõy\u0019:ªã׺m48÷öÙg¿y(¨òMÌO0ξ£v)hEc¸[´Àÿ8TaÝÑT nÎһȧbÝ}Çba´\u000e&ЯnÉíî[wC~©¶»òXo\u0017Þɪ\u0001ïÔ\\-üØ®øÔíÒdÅ/RÉùÜu'«ôßi³¿ä¼Ø^8ÜÈJcüíÅZýÒëåÓ*¾\u0013×ï¨Iptúfè$_ÁwåÞ\u0007#U¡W®äÆwH|×ñ[ø&\u001eWY|*Oû\u0005`M\u0018×(rË7äÀë\u001có°&M\u0010`M\b$\u001c4\u0010¤\u0006\u0001\tÅG¬\tC1#.\u001c ÔH\b°&\u0004A²n\u001f\bâ`ÑAU\fÆàu¶²O\u0006\\\u0019\u0002ê\t¸².ÈÙ»ò¹»RÁóõP7ǨûQ wȧ1y\u0004³Øº\u001f\u0005A±\u0000°
°\u0004é%ûQ0\u0004á\t\u0005&(5\u00122Nî'ÈØ\u001bX\u001e 3¼&Ó¿B²\u0016PÖ!KJ&^ÍA!-ÊÂ^`\ndåØä\u0007\f(¤¤¾:µ~Ê\u001f}Ï\u0015ç¯M\\\r(ëh
äEMàæòÚYáͨ§k
\u000fP%B-cK|Æd\u0010`7k«\u0012ëBbk7¼\u001dÄÓWE®\u0006¡é\u0018¢ê£\u001cf\u001b\fª\u000b1\"ûP\u0010\u00010±Õ\u0012:\"C\t5B²+¶ê@5\bXvY
\u0006\u0010ñÞl4B5\b]ùpër\\Wpè1Ç9<§é¶ê\u0000Pvf»À2ôX\u001a>DX\u000eµ;\bju\u0010\u001eÈqìËä`NѲ+Ñ\u0004\u0003µÕR«ðöq\f,ͪ§5 ì\n\u0001\u0000emòô´\u0006DXDlÝÂ)È{\u0003Æä}¨\u0006þ\u001d\r(;µGo\u0001dB×Û²vÅ.ù \u0017òÂ\n\"ÚkÊqËá \u001b;ÉÎ Ç»}Ýí*y\u0011ÀÃ7BéKZ¼d\u0011ÍQ°Îÿ\u0003mÊ+z\nendstream\nendobj\n1 0 obj\n<>/XObject<>>>/Parent 6 0 R/MediaBox[0 0 612 792]>>\nendobj\n8 0 obj\n<>stream\nxµ\\[sã¶\u0015~÷¯À䡳®¹\u0000AðL\u001f¼®³i\u001awݵÎNÓ\u0007Z¢mf%Ò\u0015©nüï\u000b\u001c\u0000\",Ä!Eg'»-ß¹óIâOÞßð$\"&7Ëä'õSF¨ü£þN²Ü¬OÞýÀ\bWw'o¾½ù]½¶{\t%µ\\ª?û\u0013ÎCD)á²l;÷D\u001eE \tO8Ö\u0007$SçRx<à\råê\u0016Ü\u001f¸\r\rBA¾Ê_þd6|úpòïÿÈR\u0004n¼ÖW<\"«kûK%W/â8\u001dDR/âh\u0012âr\u0018®ð#e5ò#\u0006¡:;\txØù|7\r9»mjQ4äOä|S,˶&\t\u0017A\u0002¦õHÓqX(y\u0006·\u001cêÕk½0:\u0018Ø#ô}ô\u001eXàõ\u0016fÆÒÑaK3ê±s8Í3MH¬õÕ\b¼1ÓxxÃÄ\u001fKl\u0012b«¨µ¾\u001aXÅ\u0013#§ax\u0000±\bÊ8YXÄésÄןhÚbCvÈwc\u0011p
+\u000bb®vw.óͲº'WŦ¬Ó|ØB\u0007+!\u001dX\u001b(vöÈ
g\u000føu`í\u001a\u0010<Øl¥·÷iG1ZÃá¾9_SÃ\u0016:ä;¤µbg_ÃMwi\u0005ì\u0018\rí%\u000e%WFU¼%\"\f¸GÅ?U¾Ú×nDÓ $P¦{ùM¾,¦\u0010R ³nâfÝQµ2à\u000e¡ôCºaa¢2Ò`Ý©·f°!ïL\u0018£c4ê¤U×þ\u0012#Ïv¶Äíæ¸ÄiÙ¾\u0002¦.Sª%cj½Ù«¬X&¨]EV\u000bLu
\u001b\tØMýq#_\"_\u001bý·pNXÄeýb/«¼Ù«©³+rõðÔU±xwß\u001fã5\\\u0019AgÈ1.Ãyç22Ï\u001e¥\u0003){õª²~\u0015ü£¼_\u0016«²¾_m'û\rcÆo²\fí7Ú\u0007Ê.òê(á¥ò\u0006ga¿ð×ò÷§tj\u000f£ï½¶:,\u0004hA\u0014G\u0007¥Þ\u001dD\u001eI®dhF\u0018J¼£Ú\u0017prÙ²AjDø94wÖÑÕÂëé#{HÎÞÈ\u000fH÷ÇÜéf\u0004d\u000e×\u0003\"\u0016N\u0018\u0006ZÌ\t(¶\u001a²½\u001f\u0014¹ÓÛÌm2\u001d3êÊ\u001b4#u\u000f'ÃÕ'\u001b£\u0018óÌx²Õ®Ñó'C¬êrnbÕ$Ymt*WN.Íð\u0000Èƪ\u001f5¤6éÌàp\rÈÄ*\u0002±¿ö¹\u0001ÅVC6Vý¬Ûh\u0007B\u0001rçJ÷zǸË+ÅÞ|7¯Mæ\u00114Ü¥\u001d\u0014,d\u0010.2¶NÂ$d\u001f´kÔ,äOF\u0000Ã\u0007Ñ®døºÜÝ\u0014S÷ö\rÃx¯a>ßüõHË@ÒAÊ\u0002\u001bÀÉ`7K\u001d0e'Ë̦Ôr\u0018S\"Ì¢%vLÉ0½\u001bsF\u001d«\u0007\u0013ìî\u0006\u0007 ¦}? a¯\u001f\u0018Bõ\b?Ð\u0018\r\u0011Mø\u0018ãÃà\u0002«b;\u0019\"\u0013 pÍ2wF6C} º'î´s°±{rú\u0005\u0003\b\u0013½Iç°»ÑõÇ\u0000òGEdF¾n\u000f¢ÎiÜ\u0010cK\u001dK «Ý3þLgÌX\u001cwe&)Òs;\b0g\u0010\u0018ló¨3^©Å2ÃR©ÿÁBsÖ¶EµÌ«Eq>lÿÌþÙ'\u001e\u0012ÔÕ\u0013Ò,àl0i^ü¯\u0006\\=ï\u0001\u0011\u001e¡\u001brã\u0011ÜH¯õry\u001fÉ Oë#\u0019d[\u001eeÃ\\ÑM±YëioQ±]Ø3t¿Ý«k4MÊâ~i>Ô2Ì\u0017ð&åc¾iËEù·e]\u0011ùßeþ¥hÈö¬Ë¦)äk½ù2#ÃTsDª¬aé1f]!T\u000bD!Ô7\u0012°;=VUTî\u0000\u001a\u0001?¹º ëûäÕ\\·Bjø2¯òûb]Tí\u0011\u0014«æÁ\u0017üD³aG±Æâ81æÙ\u0000Ë\u0018Y¿:¤ì¬,ýgF0ÁÓòà\u000b*èÔÕQ\u000b:$xDüR.Î!XÕÝ×V\u000bGå>uRoîË,óȲ$gS\bVW_±\u0018\u000e³?O~cYÇa{0á¥N|¨
7@Ʊ=\u001aa{\u0010ã±`1# sxÇö`\u0000é<Ó1³³\u0002\fÛ\u0000\u0004\u001c\u0005\u0014\u0019ÕdZgðFÛHÝ\u000bj:çÉÆ(Æ<3lµkô<ãÉ\u0010«aêÄjèOéÆ\"Æ6]\u0019Íð¡ó©\u0014\u0004 kHcÒy\u0001é#S'V\u0011ý'Ì\f(¶\u001a²±ê\u0007dÝÆ8\u0010\u0006Ð\u001eñ\u0013þ\u0019æXfÖ¼iOÃ]Ú\u0019Cç9È^ÐyÓ\n½aF:%\u0003\u0016\u0002Å\u0018u{RLÝÛ7LÄ^ÕI\u0007)\u000bl\u0000'\rÞ,uÀ,3R8D\u001eÆ,ZbÇ\u001c3,Ù»qgZ²zð9Áînp\u0000b`Ú÷\u0003N_5³\u001c\r\u0011ýû\u0018ã®Ã æ\t«âÐùä-\"\u0001\n×,sgdÓ\tu\u001c\"¦{âN;\u0007\u0019»'§_00ÑtN\b¹\u001b\u0018]\f TDfZìö êÆí\b1²Ô\u0019fv°ÚÍÌÌQIóp\bÏaî ÀAÀÃÝuãZ)3\u001d*4³1³ÚkÓ?û¤\u0012Ô4¦à\u0018fv(iÎÀÌjgÏ{@GèÜx\u0004¢!7Ò\u001b=`\\ÞÇNðÌÃÌ\u000eRLV±Ù.ì\u0019ºßîÕ5\u0015|àcSÉ\"\u0011\tôRgZiì0ÔûÙoàWáFpE\u0011\u001fü\u001e&ØD\u000e1\"\u001eø¨ïy½^o«²}\"EÑN&\u0019µ\"\u0012ã\u0003pågWå«v쪻Ò\u0007HF\u0011\rÐøÎ\u0007X¿'ï¼ú~²ûØH\u0013Ex÷\u0001WP1¤®Òz·£_\u0007\"\u0019pKJÙiĨ,»¼ùÚ*á¨L¦N\u001aàYÅ°$WKr>\u0007Í:\u00185WYV\u001d#¹ÁI:q¢\u0016Þ@\u0019ÇÜh@¹A\u0000RäÊ\u000e\u0010,f\u0004d\u000eï\u001b\f o:uV@±Õan\u0010T\u0017¼\u0003\u0014\u0019Õd:ÔÔ7ÖFê\u001eN«9O6F1æñd«]£ç\u0019OXÕÝU}¶Ñ%@]u5`6Ã\u0003 \u001b«~@ÖƤó\u0002ÒG\n'V\u0011ý'Ì\f(¶\u001a²±ê\u0007dÝÆ8\u0010\u0006Ð\u001e#âþ¯1\u001e˲êÌ£\u0016vÆPs\u000e²\u0017ÔÜ´o\u001b&ÇÀJ±5Ì\bÐQs6!úäÄù\u000eµ?î\u001bF¤¯Ç²ê¤\u00056Á\u0006o:`ÊN\u0017¦Ö±YSj9)\u0011fÑ\u0012;¦\u0014AÉÞM¸ÀMJ»»Á\u0001aiß\u000f¢äõXV3ÇÑ\u0010Ѽ1Nè:\fj°*¶%2\u0001\n×,sgdÓ\tu| ¦{âN;\u0007\u0019»'§_00ÑtN\b¹\u001b\u0018]\f TDfTìö êÆí\b1²Ô\u0019u°ÚÍ̲QIsj\bÏaî ÀAÀÃÃuãZ)3e\u001d*4³±¬ÚkÓ?û¤ÒCº\u001aSp\fË:4g`YµË³ç= Â#tCn<\u0002Ñ\u001bé\u001e0.ïã&äiý,ë0Ï\u0004\u0014ë\u000f'S¬(B7Û½\u001eØÿ%dAS\u0012e\u0011J!!±àÒñ\u0005djÃÉág)ÜÔm÷\u001d¾¹ªL ²Zx Ü0gOøM¢¶M\\$ã¾dÃÒ(äâ\u000f5\u0004tÚ×X(ñ\bx\u0002Dµðy=\u0012àJ{cZ\u000e¾>ièTi4\u001e&eXiRf¥IÙhi¸¬¯&MJ4\\$Hiä+4p5RñWËL¡¥ô÷A\u0010ÒÈW\u001aiàj¤4ª©z¸D 2'\u0011ø¥Ñ±Ïl\u0016\u0018\u001d7rÚè\u001f¸/þx\\åþzÀߧï\b;%ç\u001f?]ë_Þÿtq~sM>\\\u0005äæ¡ çõ¦ ×ÛÛßEÛ¨\u001f²!wõU[lª|EÎ?ý|Me³Ø6:ðkÙ>¦Ý.JÕ\u0013|r^nkÊu¹Ê7¤I+þZ÷\u000fm±T§¾|v\u0015ø˧*-òÕb»\u0002à\rÙª¯2Ü>u^=E½Z\u0015÷E\u0013t`Ëj±($\"\\T÷«²yxK~,¶Þ<½%ÿª7«%ù9¯î·¹Üø\\æ\u00128|ÈQª¼\u0005äo½)\u001eëÂ)
»ÕkH\u0014PÒH0\u0005ùíqHPÎË{.Z×M»\u0003ûÛ·p?¥\fFééc-ªÏ÷®äÏåÝ×õ²XIØuUo\u001axùÙþG¡ -ò\u0005ÉrrJæÐZUïmÞhÐêüK¹!_MrêÛ¦\u0015yÖWyßâÕ
)²\u0012±Ð¶±p
©D{;ôªsOzf\u0015\u0011¨W¤\u0002;ÍOüdѵ¯þ\u001e\u001eö¤ÜÙú\u0012¤\u001aKÛÃÃ\"\rGë,Ñ2 ³(¢´ÉÎàz&V\n;U\fíØC3¤Ê`OÊ=~ÉW:cZ`Tæ>eO\u0001cÔ\u0019G\u0004\u000e\u000b\u0010Ó
_ÌÐ5ò3\u001bûo\u0005Ú±·òk\u0007âÎÞ\u000b\u0016\u0018íì%¤÷'¤}²l¢·\u001a¬>º¹Õ¯\u000f]C²VÁN\u0019\ty¤Ëëfݸ/¢YW\u001e«uu5²Yg,Ô\u0001ýOÆè1S»À\u001aÖYk¿æÕ°C\tÁ\u001b\u0001HÛ\u001a\u0010àó\u0002R³³`b\u0006@z\u0015\u0010¿vE\u0002¡7åvü\u001dI\u001bEIü>\bAe\u0003\u0004K
A\u0019Ø\u0015\u0004@{5Ô\u0014â¾\u001a\u001a²pdß1íY\u0001\u0016FçïêÒ\u0005 Ùè;TdìJ\u0012\u0004Ìø¾\u0003\\¯_g<FêlÚû\u0016F\u0017\u0001~Á\u001e\u001b\u0001HA¬Xé\u0010\u001a¯3È\u001f\u0003~¦#u6íþ\u0016FÆ\u0010~¦öØ4Ô\u0019$<«3\u0007Ç4kQF¥\u001b,Êzù<îHÀ)`\"«¬dïóÛ[EåÈî¼~C\u001d{Dzw!e)jlû?\u0004\u0013÷\nendstream\nendobj\n7 0 obj\n<>>>/Parent 6 0 R/MediaBox[0 0 612 792]>>\nendobj\n9 0 obj\n[1 0 R/XYZ 0 804 0]\nendobj\n10 0 obj\n[7 0 R/XYZ 0 804 0]\nendobj\n2 0 obj\n<>\nendobj\n3 0 obj\n<>\nendobj\n6 0 obj\n<>\nendobj\n11 0 obj\n<>\nendobj\n12 0 obj\n<>\nendobj\n13 0 obj\n<>\nendobj\n14 0 obj\n<>\nendobj\nxref\n0 15\n0000000000 65535 f \n0000017022 00000 n \n0000021335 00000 n \n0000021423 00000 n \n0000000015 00000 n \n0000010715 00000 n \n0000021516 00000 n \n0000021098 00000 n \n0000017211 00000 n \n0000021264 00000 n \n0000021299 00000 n \n0000021573 00000 n \n0000021655 00000 n \n0000021689 00000 n \n0000021748 00000 n \ntrailer\n<]/Root 13 0 R/Size 15>>\nstartxref\n21916\n%%EOF\n"}],"username":"8006697"}
\ No newline at end of file
diff --git a/scrape.js b/scrape.js
index 84771803..dece12fc 100755
--- a/scrape.js
+++ b/scrape.js
@@ -1,7 +1,14 @@
#!/usr/bin/node
+
// --------------- Parameters ----------------
-const THREADS = 10;
+// Multi-Threads
+const CLASS_THREADS = 10;
+const PDF_THREADS = 5;
+
+// Solo-Threads
+const SCHEDULE_THREAD = CLASS_THREADS + PDF_THREADS + 1;
+const RECENT_THREAD = SCHEDULE_THREAD + 1;
// -------------------------------------------
@@ -11,6 +18,12 @@ const fetch = require('node-fetch');
const cheerio = require('cheerio');
const express = require('express');
const util = require('util');
+const concat = require('concat-stream');
+const fs = require('fs');
+const streams = require('memory-streams');
+
+// Initialize with the string
+
// -------------------------------------------
@@ -25,26 +38,140 @@ module.exports = {
// --------------- Scraping ------------------
// Returns object of classes
async function scrape_student(username, password) {
- let scrapers = [];
+
+ //Spawn class scrapers
+ let class_scrapers = [];
+ for(let i = 0; i < CLASS_THREADS; i++) {
+ class_scrapers[i] = scrape_class(username, password, i);
+ }
+
+ // Spawn pdf scrapers
+ let pdf_scrapers = [];
+ for (let i = 0; i < PDF_THREADS; i++) {
+ pdf_scrapers[i] = scrape_pdf(username, password, i);
+ }
// Spawn schedule scraper
- scrapers[THREADS] = scrape_schedule(username, password, THREADS);
+ let schedule_scraper = scrape_schedule(username, password, "SCHEDULE_THREAD");
// Spawn recent activity scraper
- scrapers[THREADS + 1] = scrape_recent(username, password, THREADS + 1);
+ let recent_scraper = scrape_recent(username, password, "RECENT_THREAD");
- //Spawn class scrapers
- for(let i = 0; i < THREADS; i++) {
- scrapers[i] = scrape_class(username, password, i);
+ // Await on all class scrapers
+ return {
+ classes: (await Promise.all(class_scrapers)).filter(Boolean),
+ schedule: await schedule_scraper,
+ recent: await recent_scraper,
+ pdf_files: (await Promise.all(pdf_scrapers)).filter(Boolean),
+ username: (await Promise.all(pdf_scrapers)).filter(Boolean)
+ }
+ //return (await Promise.all(pdf_scrapers)).filter(Boolean)[0].content
- }
+}
- // Await on all class scrapers
- return {
- classes: (await Promise.all(scrapers.slice(0, -2))).filter(Boolean),
- schedule: await scrapers[THREADS],
- recent: await scrapers[THREADS + 1]
- }
+async function scrape_pdf(username, password, i) {
+ return new Promise(async function(resolve, reject) {
+ let session = await scrape_login();
+ let page = await submit_login(username, password, session.apache_token, session.session_id);
+
+ log(i, "session", session);
+
+ let $ = cheerio.load(await fetch_body("https://aspen.cpsd.us/aspen/publishedReportsWidget.do?groupPageWidgetOid=GPW0000006UKen&widgetId=publishedReports_11&groupPageWidgetOid=GPW0000006UKen&1554939833156",
+ {"credentials":"include",
+ "headers":{
+ "Cookie": "deploymentId=x2sis; JSESSIONID=" + session.session_id + "; _ga=GA1.3.481904573.1547755534; _ga=GA1.2.1668470472.1547906676; _gid=GA1.3.1139820126.1554600427",
+ "DNT": "1",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Accept-Language": "en-US,en",
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.2 Chrome/69.0.3497.128 Safari/537.36",
+ "Accept": "*/*",
+ "Referer": "https://aspen.cpsd.us/aspen/home.do",
+ "X-Requested-With": "XMLHttpRequest",
+ "Connection": "keep-alive"
+ },
+ "referrer":"https://aspen.cpsd.us/aspen/home.do",
+ "referrerPolicy":"strict-origin-when-cross-origin",
+ "body":null,
+ "method":"GET",
+ "mode":"cors"}));
+
+
+ let oids = [];
+ let deliveryRecipients = [];
+ let filenames = [];
+ let titles = [];
+ $('.portletListCell').each(function(i, elem) {
+ if ($(this).attr('id')) {
+ let raw = ($(this).children().first().children().first().html());
+
+ oids.push(raw.substr(raw.indexOf("oid") + 4, 14));
+
+ deliveryRecipients.push(raw.substr(raw.indexOf("Recipient") + 10, 14));
+
+
+ let raw_filename = raw.substr(raw.indexOf('class=\"fileIcon\"') + 17, raw.indexOf("<", raw.indexOf('class=\"fileIcon\"')) - raw.indexOf('class=\"fileIcon\"') - 17);
+ filenames.push((raw_filename).replace(/ /g, "_") + ".pdf");
+
+ let datetime = $(this).next().text().trim();
+ let date = datetime.substr(0, datetime.indexOf(" "));
+
+ let pretty_filename = raw_filename.split(' ').slice(0,2).join(' ');
+
+ titles.push(pretty_filename + " " + date);
+ }
+ });
+
+ let oid = oids[i];
+ let deliveryRecipient = deliveryRecipients[i];
+ let filename = filenames[i];
+ let title = titles[i];
+
+ (await fetch_body("https://aspen.cpsd.us/aspen/fileDownload.do?propertyAsString=filFile&oid=" + oid + "&reportDeliveryRecipient=" + deliveryRecipient + "&deploymentId=x2sis",
+ {"credentials":"include",
+ "headers":{
+ "Connection": "keep-alive",
+ "Pragma": "no-cache",
+ "Cache-Control": "no-cache",
+ "Upgrade-Insecure-Requests": "1",
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.2 Chrome/69.0.3497.128 Safari/537.36",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
+ "Accept-Language": "en-US,en",
+ "DNT": "1",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Cookie": "deploymentId=x2sis; JSESSIONID=" + session.session_id + "; _ga=GA1.3.481904573.1547755534; _ga=GA1.2.1668470472.1547906676; _gid=GA1.3.1139820126.1554600427"
+ },
+ "referrerPolicy":"strict-origin-when-cross-origin",
+ "body":null,
+ "method":"GET",
+ "mode":"cors"}));
+
+ fileReturn = (await fetch_file("https://aspen.cpsd.us/aspen/toolResult.do?&fileName=" + filename + "&downLoad=true",
+ {"credentials":"include",
+ "headers":{
+ "Connection": "keep-alive",
+ "Pragma": "no-cache",
+ "Cache-Control": "no-cache",
+ "Upgrade-Insecure-Requests": "1",
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.2 Chrome/69.0.3497.128 Safari/537.36",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
+ "Accept-Language": "en-US,en",
+ "DNT": "1",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Cookie": "deploymentId=x2sis; JSESSIONID=" + session.session_id + "; _ga=GA1.3.481904573.1547755534; _ga=GA1.2.1668470472.1547906676; _gid=GA1.3.1139820126.1554600427"
+ },
+ "referrerPolicy":"strict-origin-when-cross-origin",
+ "body":null,
+ "method":"GET",
+ "mode":"cors"}));
+
+ log(i, "closing");
+
+ resolve({
+ "title": title,
+ "content": fileReturn
+ });
+
+ });
}
async function scrape_assignmentDetails(session_id, apache_token, assignment_id) {
@@ -69,7 +196,7 @@ async function scrape_assignmentDetails(session_id, apache_token, assignment_id)
},
"referrer":"https://aspen.cpsd.us/aspen/portalAssignmentList.do?navkey=academics.classes.list.gcd",
"referrerPolicy":"strict-origin-when-cross-origin",
- "body":"org.apache.struts.taglib.html.TOKEN=" + apache_token + "&userEvent=2100&userParam=" + assignment_id + "&operationId=&deploymentId=x2sis&scrollX=0&scrollY=0&formFocusField=&formContents=&formContentsDirty=&maximized=false&menuBarFindInputBox=&categoryOid=&gradeTermOid=GTM0000000C1sA&jumpToSearch=&initialSearch=&allowMultipleSelection=true&scrollDirection=&fieldSetName=Default+Fields&fieldSetOid=fsnX2ClsGcd&filterDefinitionId=%23%23%23all&basedOnFilterDefinitionId=&filterDefinitionName=filter.allRecords&sortDefinitionId=default&sortDefinitionName=Date+due&editColumn=&editEnabled=false&runningSelection=",
+ "body":"org.apache.struts.taglib.html.TOKEN=" + apache_token + "&userEvent=2100&userParam=" + assignment_id + "&operationId=&deploymentId=x2sis&scrollX=0&scrollY=0&formFocusField=&formContents=&formContentsDirty=&maximized=false&menuBarFindInputBox=&categoryOid=&gradeTermOid=GTM0000000C1sB&jumpToSearch=&initialSearch=&allowMultipleSelection=true&scrollDirection=&fieldSetName=Default+Fields&fieldSetOid=fsnX2ClsGcd&filterDefinitionId=%23%23%23all&basedOnFilterDefinitionId=&filterDefinitionName=filter.allRecords&sortDefinitionId=default&sortDefinitionName=Date+due&editColumn=&editEnabled=false&runningSelection=",
"method":"POST",
"mode":"cors"}));
@@ -112,6 +239,10 @@ async function scrape_recent(username, password, i) {
return new Promise(async function(resolve, reject) {
let session = await scrape_login();
let page = await submit_login(username, password, session.apache_token, session.session_id);
+ if (page) {
+ resolve({"login_fail": true});
+ }
+
log(i, "session", session);
@@ -186,8 +317,12 @@ function scrape_class(username, password, i) {
return new Promise(async function(resolve, reject) {
// Login
let session = await scrape_login();
- await submit_login(username, password,
+ let page = await submit_login(username, password,
session.apache_token, session.session_id);
+ if (page) {
+ resolve({"login_fail": true});
+
+ }
log(i, "session", session);
// Academics Page
@@ -260,7 +395,7 @@ async function submit_login(username, password, apache_token, session_id) {
"body":"org.apache.struts.taglib.html.TOKEN=" + apache_token + "&userEvent=930&userParam=&operationId=&deploymentId=x2sis&scrollX=0&scrollY=0&formFocusField=username&mobile=false&SSOLoginDone=&username=" + username + "&password=" + password,
"method":"POST",
"mode":"cors"});
- return page;
+ return page.includes("Invalid login.");
}
// Returns object with classes (name, grade, id),
@@ -286,11 +421,15 @@ async function scrape_academics(session_id) {
"mode":"cors"}));
let data = {"classes": []};
$("#dataGrid a").each(function(i, elem) {
- data.classes[i] = {};
- data.classes[i].name = $(this).text();
- data.classes[i].grade = $(this).parent()
- .nextAll().eq(5).text().trim();
- data.classes[i].id = $(this).parent().attr("id");
+ if ($(this).parent().nextAll().eq(0).text().trim() == "FY" || $(this).parent().nextAll().eq(0).text().trim() == "S1") {
+ data.classes[i] = {};
+ // data.classes[i].name = $(this).text();
+ data.classes[i].name = $(this).parent()
+ .nextAll().eq(3).text().trim();
+ data.classes[i].grade = $(this).parent()
+ .nextAll().eq(5).text().trim();
+ data.classes[i].id = $(this).parent().attr("id");
+ }
});
data.oid = $("input[name=selectedStudentOid]").attr("value");
data.apache_token = $("input[name='org.apache.struts.taglib.html.TOKEN']").attr("value");
@@ -299,115 +438,127 @@ async function scrape_academics(session_id) {
// Returns object with categories (name, weight) as a dictionary
async function scrape_details(session_id, apache_token, class_id, oid) {
- let $ = cheerio.load(await fetch_body("https://aspen.cpsd.us/aspen/portalClassList.do",
- {"credentials":"include",
- "headers":{"Connection": "keep-alive",
- "Cache-Control": "max-age=0",
- "Origin": "https://aspen.cpsd.us",
- "Upgrade-Insecure-Requests": "1",
- "Content-Type": "application/x-www-form-urlencoded",
- "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.0 Chrome/69.0.3497.128 Safari/537.36",
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
- "X-Do-Not-Track": "1",
- "Accept-Language": "en-US,en",
- "DNT": "1",
- "Referer": "https://aspen.cpsd.us/aspen/portalClassList.do?navkey=academics.classes.list&maximized=false",
- "Accept-Encoding": "gzip, deflate, br",
- "Cookie": "deploymentId=x2sis; JSESSIONID=" + session_id },
- "referrer":"https://aspen.cpsd.us/aspen/portalClassList.do?navkey=academics.classes.list&maximized=false",
- "referrerPolicy":"strict-origin-when-cross-origin",
- "body":"org.apache.struts.taglib.html.TOKEN=" + apache_token + "&userEvent=2100&userParam=" + class_id + "&operationId=&deploymentId=x2sis&scrollX=0&scrollY=87&formFocusField=&formContents=&formContentsDirty=&maximized=false&menuBarFindInputBox=&selectedStudentOid=" + oid + "&jumpToSearch=&initialSearch=&yearFilter=current&termFilter=current&allowMultipleSelection=true&scrollDirection=&fieldSetName=Default+Fields&fieldSetOid=fsnX2Cls&filterDefinitionId=%23%23%23all&basedOnFilterDefinitionId=&filterDefinitionName=filter.allRecords&sortDefinitionId=default&sortDefinitionName=Schedule+term&editColumn=&editEnabled=false&runningSelection=",
- "method":"POST",
- "mode":"cors"}));
- let data = {};
- $("tr[class=listCell]", "#dataGrid").slice(3).each(function(i, elem) {
- if(i % 2 === 0) {
- let category = $(this).children().first().text();
- let weight = $(this).children().eq(2).text();
- data[category] = "" + parseFloat(weight.substr(0, weight.length - 1)) / 100;
- }
- });
- return data;
+ let $ = cheerio.load(await fetch_body("https://aspen.cpsd.us/aspen/portalClassList.do",
+ {"credentials":"include",
+ "headers":{"Connection": "keep-alive",
+ "Cache-Control": "max-age=0",
+ "Origin": "https://aspen.cpsd.us",
+ "Upgrade-Insecure-Requests": "1",
+ "Content-Type": "application/x-www-form-urlencoded",
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.0 Chrome/69.0.3497.128 Safari/537.36",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
+ "X-Do-Not-Track": "1",
+ "Accept-Language": "en-US,en",
+ "DNT": "1",
+ "Referer": "https://aspen.cpsd.us/aspen/portalClassList.do?navkey=academics.classes.list&maximized=false",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Cookie": "deploymentId=x2sis; JSESSIONID=" + session_id },
+ "referrer":"https://aspen.cpsd.us/aspen/portalClassList.do?navkey=academics.classes.list&maximized=false",
+ "referrerPolicy":"strict-origin-when-cross-origin",
+ "body":"org.apache.struts.taglib.html.TOKEN=" + apache_token + "&userEvent=2100&userParam=" + class_id + "&operationId=&deploymentId=x2sis&scrollX=0&scrollY=87&formFocusField=&formContents=&formContentsDirty=&maximized=false&menuBarFindInputBox=&selectedStudentOid=" + oid + "&jumpToSearch=&initialSearch=&yearFilter=current&termFilter=current&allowMultipleSelection=true&scrollDirection=&fieldSetName=Default+Fields&fieldSetOid=fsnX2Cls&filterDefinitionId=%23%23%23all&basedOnFilterDefinitionId=&filterDefinitionName=filter.allRecords&sortDefinitionId=default&sortDefinitionName=Schedule+term&editColumn=&editEnabled=false&runningSelection=",
+ "method":"POST",
+ "mode":"cors"}));
+ let data = {};
+ $("tr[class=listCell]", "#dataGrid").slice(3).each(function(i, elem) {
+ if(i % 2 === 0) {
+ let category = $(this).children().first().text();
+ let weight = $(this).children().eq(2).text();
+ data[category] = "" + parseFloat(weight.substr(0, weight.length - 1)) / 100;
+ }
+ });
+ return data;
}
// Returns list of assignments (name, category, score, max_score)
async function scrape_assignments(session_id, apache_token) {
- let $ = cheerio.load(await fetch_body("https://aspen.cpsd.us/aspen/portalAssignmentList.do?navkey=academics.classes.list.gcd",
- {"credentials":"include",
- "headers":{"Connection": "keep-alive",
- "Upgrade-Insecure-Requests": "1",
- "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.0 Chrome/69.0.3497.128 Safari/537.36",
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
- "X-Do-Not-Track": "1",
- "Accept-Language": "en-US,en",
- "DNT": "1",
- "Referer": "https://aspen.cpsd.us/aspen/portalClassDetail.do?navkey=academics.classes.list.detail",
- "Accept-Encoding": "gzip, deflate, br",
- "Cookie": "deploymentId=x2sis; JSESSIONID=" + session_id},
- "referrer":"https://aspen.cpsd.us/aspen/portalClassDetail.do?navkey=academics.classes.list.detail",
- "referrerPolicy":"strict-origin-when-cross-origin",
- "body":null,
- "method":"GET",
- "mode":"cors"}));
-
- let data = [];
- let page = 1;
- let n_assignments = parseInt($("#totalRecordsCount").text());
-
- while(true) {
- $("tr.listCell.listRowHeight").each(function(i, elem) {
- let row = {};
- row["name"] = $(this).find("a").first().text();
- row["category"] = $(this).children().eq(2).text().trim();
- //let scores = $(this).find("div[class=percentFieldContainer]");
- row["assignment_id"] = $(this).find("input").attr("id");
- let scores = $(this).find("tr")
- .children().slice(0, 2);
- //console.log(scores.text());
- row["special"] = scores.text();
- if (!isNaN(parseFloat(scores.eq(1).text()))) { // No score
- scores = scores.eq(1).text().split("/");
- row["score"] = Number(scores[0]);
- row["max_score"] = Number(scores[1]);
- }
- data.push(row);
- });
-
- if(page * 25 > n_assignments) {
- return data;
- }
- page++;
-
- $ = cheerio.load((await fetch_body("https://aspen.cpsd.us/aspen/portalAssignmentList.do",
- {"credentials":"include",
- "headers":{
- "Connection": "keep-alive",
- "Cache-Control": "max-age=0",
- "Origin": "https://aspen.cpsd.us",
- "Upgrade-Insecure-Requests": "1",
- "Content-Type": "application/x-www-form-urlencoded",
- "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.0 Chrome/69.0.3497.128 Safari/537.36",
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
- "Accept-Language": "en-US,en",
- "X-Do-Not-Track": "1",
- "DNT": "1",
- "Referer": "https://aspen.cpsd.us/aspen/portalAssignmentList.do",
- "Accept-Encoding": "gzip, deflate, br",
- "Cookie": "deploymentId=x2sis; JSESSIONID=" + session_id},
- "referrer":"https://aspen.cpsd.us/aspen/portalAssignmentList.do",
- "referrerPolicy":"strict-origin-when-cross-origin",
- "body":"org.apache.struts.taglib.html.TOKEN=" + apache_token + "&userEvent=10&userParam=&operationId=&deploymentId=x2sis&scrollX=0&scrollY=0&formFocusField=&formContents=&formContentsDirty=&maximized=false&menuBarFindInputBox=&categoryOid=&gradeTermOid=GTM0000000C1sA&jumpToSearch=&initialSearch=&topPageSelected=1&allowMultipleSelection=true&scrollDirection=&fieldSetName=Default+Fields&fieldSetOid=fsnX2ClsGcd&filterDefinitionId=%23%23%23all&basedOnFilterDefinitionId=&filterDefinitionName=filter.allRecords&sortDefinitionId=default&sortDefinitionName=Date+due&editColumn=&editEnabled=false&runningSelection=",
- "method":"POST",
- "mode":"cors"})));
+ let $ = cheerio.load(await fetch_body("https://aspen.cpsd.us/aspen/portalAssignmentList.do?navkey=academics.classes.list.gcd",
+ {"credentials":"include",
+ "headers":{"Connection": "keep-alive",
+ "Upgrade-Insecure-Requests": "1",
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.0 Chrome/69.0.3497.128 Safari/537.36",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
+ "X-Do-Not-Track": "1",
+ "Accept-Language": "en-US,en",
+ "DNT": "1",
+ "Referer": "https://aspen.cpsd.us/aspen/portalClassDetail.do?navkey=academics.classes.list.detail",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Cookie": "deploymentId=x2sis; JSESSIONID=" + session_id},
+ "referrer":"https://aspen.cpsd.us/aspen/portalClassDetail.do?navkey=academics.classes.list.detail",
+ "referrerPolicy":"strict-origin-when-cross-origin",
+ "body":null,
+ "method":"GET",
+ "mode":"cors"}));
+
+ let data = [];
+ let page = 1;
+ let n_assignments = parseInt($("#totalRecordsCount").text());
+
+ while(true) {
+ $("tr.listCell.listRowHeight").each(function(i, elem) {
+ let row = {};
+ //row["name"] = $(this).find("a").first().text();
+ //row["category"] = $(this).children().eq(2).text().trim();
+ row["name"] = $(this).children().eq(2).text().trim();
+ row["category"] = $(this).find("a").first().text();
+ row["date_assigned"] = $(this).children().eq(3).text().trim();
+ row["date_due"] = $(this).children().eq(4).text().trim();
+ row["feedback"] = $(this).children().eq(6).text().trim();
+ //let scores = $(this).find("div[class=percentFieldContainer]");
+ row["assignment_id"] = $(this).find("input").attr("id");
+ let scores = $(this).find("tr")
+ .children().slice(0, 2);
+
+ row["special"] = scores.text();
+
+ if (!isNaN(parseFloat(scores.eq(1).text()))) { // No score
+ scores = scores.eq(1).text().split("/");
+ row["score"] = Number(scores[0]);
+ row["max_score"] = Number(scores[1]);
+
+ }
+ data.push(row);
+ });
+
+ if(page * 25 > n_assignments) {
+ return data;
}
+ page++;
+
+ $ = cheerio.load((await fetch_body("https://aspen.cpsd.us/aspen/portalAssignmentList.do",
+ {"credentials":"include",
+ "headers":{
+ "Connection": "keep-alive",
+ "Cache-Control": "max-age=0",
+ "Origin": "https://aspen.cpsd.us",
+ "Upgrade-Insecure-Requests": "1",
+ "Content-Type": "application/x-www-form-urlencoded",
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.0 Chrome/69.0.3497.128 Safari/537.36",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
+ "Accept-Language": "en-US,en",
+ "X-Do-Not-Track": "1",
+ "DNT": "1",
+ "Referer": "https://aspen.cpsd.us/aspen/portalAssignmentList.do",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Cookie": "deploymentId=x2sis; JSESSIONID=" + session_id},
+ "referrer":"https://aspen.cpsd.us/aspen/portalAssignmentList.do",
+ "referrerPolicy":"strict-origin-when-cross-origin",
+ "body":"org.apache.struts.taglib.html.TOKEN=" + apache_token + "&userEvent=10&userParam=&operationId=&deploymentId=x2sis&scrollX=0&scrollY=0&formFocusField=&formContents=&formContentsDirty=&maximized=false&menuBarFindInputBox=&categoryOid=&gradeTermOid=GTM0000000C1sB&jumpToSearch=&initialSearch=&topPageSelected=1&allowMultipleSelection=true&scrollDirection=&fieldSetName=Default+Fields&fieldSetOid=fsnX2ClsGcd&filterDefinitionId=%23%23%23all&basedOnFilterDefinitionId=&filterDefinitionName=filter.allRecords&sortDefinitionId=default&sortDefinitionName=Date+due&editColumn=&editEnabled=false&runningSelection=",
+ "method":"POST",
+ "mode":"cors"})));
+ }
}
// Returns list of black/silver day pairs of class names and room numbers
async function scrape_schedule(username, password, i) {
return new Promise(async function(resolve, reject) {
let session = await scrape_login();
- await submit_login(username, password, session.apache_token, session.session_id);
- let $ = cheerio.load(await fetch_body("https://aspen.cpsd.us/aspen/studentScheduleContextList.do?navkey=myInfo.sch.list",
+ let page = await submit_login(username, password, session.apache_token, session.session_id);
+ if (page) {
+ resolve({"login_fail": true});
+ }
+
+
+ let schedule_page = (await fetch_body("https://aspen.cpsd.us/aspen/studentScheduleContextList.do?navkey=myInfo.sch.list",
{"credentials":"include",
"headers":{"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1",
@@ -424,17 +575,47 @@ async function scrape_schedule(username, password, i) {
"body":null,
"method":"GET",
"mode":"cors"}));
+
+
+
+ if (schedule_page.includes("Matrix view")) {
+
+ schedule_page = (await fetch_body("https://aspen.cpsd.us/aspen/studentScheduleMatrix.do?navkey=myInfo.sch.matrix&termOid=&schoolOid=null&k8Mode=null&viewDate=&userEvent=0",
+ {"credentials":"include",
+ "headers":{
+ "Connection": "keep-alive",
+ "Pragma": "no-cache",
+ "Cache-Control": "no-cache",
+ "Upgrade-Insecure-Requests": "1",
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.2 Chrome/69.0.3497.128 Safari/537.36",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
+ "Accept-Language": "en-US,en",
+ "DNT": "1",
+ "Referer": "https://aspen.cpsd.us/aspen/studentScheduleContextList.do?navkey=myInfo.sch.list&forceRedirect=false",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Cookie": "deploymentId=x2sis; JSESSIONID=" + session.session_id + "; _ga=GA1.3.481904573.1547755534; _ga=GA1.2.1668470472.1547906676; _gid=GA1.3.1711451972.1556283231"
+ },
+ "referrer":"https://aspen.cpsd.us/aspen/studentScheduleContextList.do?navkey=myInfo.sch.list&forceRedirect=false",
+ "referrerPolicy":"strict-origin-when-cross-origin",
+ "body":null,
+ "method":"GET",
+ "mode":"cors"}));
+ }
+
+ let $ = cheerio.load(schedule_page);
let data = {black:[], silver:[]};
- $('td[style="width: 125px"]').each(function(i, elem) {
- const parts = $(this).html().trim().split('
').slice(0, 4);
- const period = $(this).parentsUntil('td').prev().find('th').html().trim();
- const block = {id: parts[0], name: parts[1], teacher: parts[2], room: parts[3], aspenPeriod: period};
- if(i % 2 == 0) {
- data.black[i/2] = block;
- } else {
- data.silver[Math.floor(i/2)] = block;
- }
- });
+
+ $('td[style="width: 125px"]').each(function(i, elem) {
+ const parts = $(this).html().trim().split('
').slice(0, 4);
+ const period = $(this).parentsUntil('td').prev().find('th').html().trim();
+ const block = {id: parts[0], name: parts[1], teacher: parts[2], room: parts[3], aspenPeriod: period};
+ if(i % 2 == 0) {
+ data.black[i/2] = block;
+ } else {
+ data.silver[Math.floor(i/2)] = block;
+ }
+ });
+
log(i, "schedule", data);
resolve(data);
});
@@ -445,15 +626,41 @@ async function fetch_body(url, options) {
return (await fetch(url, options)).text();
}
+async function fetch_pdf(url, options) {
+ return (await fetch(url, options)).buffer();
+}
+
+
// Logger can easily be turned off or on and modified
function log(thread, name, obj) {
if(obj) {
- //console.log(`Thread ${thread}:\n\t${name}:\n${util.inspect(obj, false, null, true)}\n`);
+ //console.log(`${thread}:\n\t${name}:\n${util.inspect(obj, false, null, true)}\n`);
} else {
- //console.log(`Thread ${thread}: ${name}\n`);
+ //console.log(`${thread}: ${name}\n`);
}
}
+async function fetch_file(url, options) {
+
+ let res = (await fetch(url, options));
+ let readable = res.body;
+
+ return new Promise((resolve, reject) => {
+ let chunks = [];
+
+ readable.on("data", function (chunk) {
+ chunks.push(chunk);
+ });
+
+ readable.on("end", function() {
+ process.stdout.setDefaultEncoding('binary');
+ pdf_out = (Buffer.concat(chunks).toString('binary'));
+ resolve(pdf_out);
+ });
+ });
+
+}
+
// --------------Compute Functions------------
@@ -477,13 +684,16 @@ if(require.main === module) {
prompt.start();
prompt.get(schema, async function(err, result) {
- //console.log(JSON.stringify(await scrape_student(result.username, result.password)));
- console.log((await scrape_student(result.username, result.password)));
- //let session = await scrape_login();
- //await submit_login(result.username, result.password, session.apache_token, session.session_id);
- //console.log(session);
- //console.log(JSON.stringify(await scrape_schedule(session.session_id)));
+ // Send Stringified scrape_student() to samplejson.json
+ //fs.writeFile('samplejson.json', JSON.stringify(await scrape_student(result.username, result.password)), (err) => {
+ // if (err) throw err;
+ //});
+
+ // Print Stringified scrape_student() - good for checking json return
+ console.log(JSON.stringify(await scrape_student(result.username, result.password)));
+
+ // Print scrape_student() - good for checking fetch html return
+ //console.log((await scrape_student(result.username, result.password)));
+
});
}
-
-// -------------------------------------------
diff --git a/serve.js b/serve.js
index 3d3dd75e..eda3d430 100755
--- a/serve.js
+++ b/serve.js
@@ -35,9 +35,12 @@ client.on("error", function (err) {
if(!args._.includes("insecure")) {
// Certificate
- const privateKey = fs.readFileSync('/etc/letsencrypt/live/aspine.us/privkey.pem', 'utf8');
- const certificate = fs.readFileSync('/etc/letsencrypt/live/aspine.us/cert.pem', 'utf8');
- const ca = fs.readFileSync('/etc/letsencrypt/live/aspine.us/chain.pem', 'utf8');
+ // const privateKey = fs.readFileSync('/etc/letsencrypt/live/aspine.us/privkey.pem', 'utf8');
+ // const certificate = fs.readFileSync('/etc/letsencrypt/live/aspine.us/cert.pem', 'utf8');
+ // const ca = fs.readFileSync('/etc/letsencrypt/live/aspine.us/chain.pem', 'utf8');
+ const privateKey = fs.readFileSync('/etc/letsencrypt/live/aspine.us-0003/privkey.pem', 'utf8');
+ const certificate = fs.readFileSync('/etc/letsencrypt/live/aspine.us-0003/cert.pem', 'utf8');
+ const ca = fs.readFileSync('/etc/letsencrypt/live/aspine.us-0003/chain.pem', 'utf8');
const credentials = {
key: privateKey,
@@ -47,9 +50,9 @@ if(!args._.includes("insecure")) {
app.all('*', ensureSecure); // at top of routing calls
- http.createServer(app).listen(80)
- https.createServer(credentials, app).listen(443, () => {
- console.log('HTTPS Server running on port 443');
+ http.createServer(app).listen(8090)
+ https.createServer(credentials, app).listen(4430, () => { //443
+ console.log('HTTPS Server running on port 4430'); //443
});
function ensureSecure(req, res, next){
@@ -100,11 +103,46 @@ app.post('/data', async (req, res) => {
console.log(`\n\nNEW LOGIN: ${req.session.username}\n------------------`);
if(!args._.includes("fake")) {
+ //res.send(await scraper.scrape_student(req.session.username, req.session.password));
+ //
// USE REAL DATA:
- res.send(await scraper.scrape_student(req.session.username, req.session.password));
+ response = await scraper.scrape_student(req.session.username, req.session.password);
+ res.send(response)
+ //if (response.classes.length == 0) {
+ // res.sendFile('invalid.json', {root:"public"});
+
+ //} else {
+
+ // res.send(response);
+ //}
+
+ //if(tableData.classes.length == 0) {
+ // tableData.classes.push({
+ // "name": "You Have No Classes/Assignments This Marking Period",
+ // "grade": "You Have No Grades This Marking Period",
+ // "categories": {"Nothing": "1.0"},
+ // "assignments": [{
+ // "name": "No assignments",
+ // "category": "Nothing",
+ // "assignment_id": "GCD000000Fx62l",
+ // "special": "Nothing Special",
+ // "score": 10,
+ // "max_score": 10,
+ // "percentage": 100,
+ // "color": "#ff9900"
+ // }],
+ // "tokens":{"session_id":"263A6A78DE0F001DDDFC8A525D31A8F0","apache_token":"572aa56a8c407a6d9a25b0a50843fc32"},
+ // "edited":false,
+ // "categoryGrades":{},
+ // "decimals":2,
+ // "type":"categoryPercent",
+ // "calculated_grade":"100 A+",
+ // "color":"#1E8541"
+ // });
+
} else {
//USE FAKE DATA:
- res.sendFile('sample.json', {root:"public"});
+ res.sendFile('sample2.json', {root:"public"});
}
});
@@ -119,7 +157,7 @@ app.get('/', async (req, res) => {
app.post('/login', async (req, res) => {
req.session.username = req.body.username;
req.session.password = req.body.password;
- res.redirect('/home.html');
+ res.redirect('/home.html');
});
app.get('/logout', async (req, res) => {
diff --git a/test b/test
index 90fa1d30..80cd4fd4 100755
--- a/test
+++ b/test
@@ -1,3 +1,4 @@
#/bin/bash
+terminal -e "redis-server redis.conf"
./serve.js insecure fake