bplist00[_WebMainResource_WebSubresources_WebSubframeArchives ^WebResourceURL_WebResourceTextEncodingName_WebResourceMIMEType_WebResourceData_WebResourceFrameName_$http://turntheswitchon.blogspot.com/UUTF-8Ytext/htmlOy --physical computing--

Thursday, September 11, 2008

close-up of fastened button switch

creative switching






the first thought to pop in mind was a snap on a piece of clothing. i went ahead and wired the top snap to my jacket. it was very easy to attach the wire end through the snap, since it was a sew-on kind, rather than the prong/socket/stud kind. when it was snapped together , the led would go off.
i was able to snag some conductive thread and looked down at the next fastener in line and wondered if i could turn that into a switch. i used the thread to whip stitch around the top of the buttonhole, then used another piece to sew through the toggle a few times and wrap around the middle. i then stitched away from the pieces because i wanted to see if i could keep the softness
with the conductive thread, essentially using the thread as the hook-up wire. i made a final stitch perpendicular to the ones i had just made, looped the wire under and twisted.
i plugged it in and when i fastened the button, i thought it worked pretty good. i don't even think i needed to use as much thread as i did to stitch around the button hole. perhaps a couple stitches a the top would do.

blink blink blink



i wanted to try the blinking exercise from class, it was very simple, just 4 lines of code.
i at first thought that i could add the switch in somewhere, but my brain was a little too tired to get in processing mode, so i did not attempt much code editing.

1st arduino program




i completed the "setting up breadboard" lab, then moved on to the arduino board.
identifying the resistors was a challenge, i was able to find very helpful references on the web (i will eventually put them up). never knew there was such a sophisticated system behind those colorful stripes...
after setup, i downloaded and installed software only to find that the computer i was working on was too much of a dinosaur to handle it (mac OS X 10.3.9 powerpc driven). i plugged my arduino in, green light went on, no detection in serial port though. i troubleshooted for awhile, but instead convinced my roommate to let me use his macBook bought just last feb.
downloaded and installed software on his comp. and success! there was my board in the serial port, now for the programming

completed the arduino program. yellow led is on, push button, red led is on.
 
P#(-159=AEIMQV_WebResourceResponse_9http://www.blogger.com/widgets/3319451950-blogarchive.cssObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_9http://www.blogger.com/widgets/3319451950-blogarchive.css./01X$classesZ$classname12UNSURLXNSObject#AGOQ 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Cache-ControlWExpires_Content-Encoding\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Sat, 11 Oct 2008 13:30:14 GMTTgzipXtext/cssWGFE/1.3S570_Thu, 11 Sep 2008 13:30:14 GMT_Wed, 03 Sep 2008 19:03:47 GMT./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd FKT_bhqz|)0PU^fjdXtext/cssO/** * Copyright 2005 Google Inc. * Author: Lexi Baugher * * CSS for collapsible hierarchy of archive links */ #ArchiveList .toggle { cursor: pointer; font-family: Arial, sans-serif; /* this font has support for the dingbats */ } #ArchiveList .toggle-open { /* Work around IE's differently-sized dingbat by resizing up to look like the rest of the characters for this font size. */ _font-size: 1.7em; line-height: 0.6em; } #ArchiveList { text-align: left; } #ArchiveList a.post-count-link, #ArchiveList a.post-count-link:link, #ArchiveList a.post-count-link:visited { text-decoration: none; } #ArchiveList a.toggle, #ArchiveList a.toggle:link, #ArchiveList a.toggle:visited, #ArchiveList a.toggle:hover { color: inherit; /* done in JS for IE */ text-decoration: none; } .BlogArchive #ArchiveList ul li { background: none; list-style: none; list-style-image: none; list-style-position: outside; border-width: 0; padding-left: 15px; text-indent: -15px; margin-left: 0; background-image: none; } .BlogArchive #ArchiveList ul ul li { padding-left: 1.2em; } .BlogArchive #ArchiveList ul { margin: 0; padding: 0; list-style: none; list-style-image: none; border-width: 0; } .BlogArchive #ArchiveList ul ul { margin-top: 5px; } .BlogArchive #ArchiveList ul.posts li { padding-left: 1.3em; } #ArchiveList .collapsed ul { display: none; } _9http://www.blogger.com/v-css/3727950723-blog_controls.cssObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_9http://www.blogger.com/v-css/3727950723-blog_controls.css./01X$classesZ$classname12UNSURLXNSObject#AEY. 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Cache-ControlWExpires_Content-Encoding\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Fri, 16 Oct 2009 13:30:14 GMTTgzipXtext/cssWGFE/1.3S420_Thu, 11 Sep 2008 13:30:14 GMT_Wed, 03 Sep 2008 19:03:47 GMT./\]]^2_NSMutableDictionary\NSDictionaryM./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd FKT_bhqz|)0PU^fjdOM /* ----------------------------------------------- Quick Edit and Delete Comment Icons ----------------------------------------------- */ /* Hide it now, show it later with dynamically-generated CSS */ .item-control { display:none; } .item-control a, .item-action a { text-decoration:none !important; } .widget-item-control { float: right; } .icon-action { border-style: none !important; margin: 0 0 -5px 0.5em !important; } .delete-comment-icon { background: url("/img/icon_delete13.gif") no-repeat left; /* makes a 14x14 box */ padding:7px; } /* Mobile video tags shown on handhelds only. All others get regular video tags. */ @media all { .BLOG_mobile_video_class { display:none; } } @media handheld { .BLOG_mobile_video_class { display:inline; } .BLOG_video_class { display:none; } } _yhttp://www.blogger.com/dyn-css/authorization.css?targetBlogID=1034480884071961438&zx=81c4d676-5aa3-4a3f-96aa-c13f7e21a2baUutf-8Obplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYXZ^_U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_yhttp://www.blogger.com/dyn-css/authorization.css?targetBlogID=1034480884071961438&zx=81c4d676-5aa3-4a3f-96aa-c13f7e21a2ba./01X$classesZ$classname12UNSURLXNSObject#AM 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Cache-ControlVPragma_Content-Encoding\Content-TypeVServerTDate^Content-Length]Last-Modified_max-age=1800 privateXno-cacheTgzip_text/css; charset=UTF-8WGFE/1.3_Thu, 18 Sep 2008 15:10:25 GMTR87./[\\]2_NSMutableDictionary\NSDictionary[./`aab2_NSHTTPURLResponse]NSURLResponse)27:PRd  2?FKZh c+O[ span.following-not-admin { display:inline; } div.following-follow-this { display:block; }  !"_2http://www.blogger.com/widgets/1326023001-blog.cssObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_2http://www.blogger.com/widgets/1326023001-blog.css./01X$classesZ$classname12UNSURLXNSObject#AE4Y 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Cache-ControlWExpires_Content-Encoding\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Sat, 11 Oct 2008 13:30:14 GMTTgzipXtext/cssWGFE/1.3S718_Thu, 11 Sep 2008 13:30:14 GMT_Wed, 03 Sep 2008 19:03:47 GMT./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd ?DMX[ajsu|")INW_cdO/* backlinks controls */ .backlink-toggle-zippy { padding-right: 11px; margin-right: 0.1em; cursor: pointer; cursor: hand; background: url(http://www.blogger.com/img/triangle_ltr.gif) no-repeat left center; } .expanded-backlink .backlink-toggle-zippy { background-image: url("http://www.blogger.com/img/triangle_open.gif") } .collapsed-backlink .collapseable { display: none; } .status-msg-wrap { font-size: 110%; width: 90%; margin: 10px auto; position: relative; } .status-msg-border { border: 1px solid #000000; filter:alpha(opacity=40); -moz-opacity:.40; opacity:.40; width: 100%; position: relative; } .status-msg-bg { background-color: #cccccc; opacity:.80; filter:alpha(opacity=30); -moz-opacity:.80; width: 100%; position: relative; z-index: 1; } .status-msg-body { text-align: center; padding: .3em 0; width: 100%; position: absolute; z-index: 4; } .status-msg-hidden { visibility: hidden; padding: .3em 0; } .status-msg-wrap a { padding-left: .4em; text-decoration: underline; } /* Reactions -----------------------------*/ .reactions-label { margin: 3px 0 0 0; } /* styling for the iframe */ .reactions-iframe { background: transparent; height: 2.3em; width: 100%; border: 0; } /* Comments -----------------------------*/ #comments .blogger-comment-icon, .blogger-comment-icon { line-height:16px; background:url(/img/b16-rounded.gif) left no-repeat; padding-left:20px; } #comments .openid-comment-icon, .openid-comment-icon { line-height:16px; background:url(/img/openid16-rounded.gif) left no-repeat; padding-left:20px; } #comments .anon-comment-icon, .anon-comment-icon { line-height:16px; background:url(/img/anon16-rounded.gif) left no-repeat; padding-left:20px; } /* Paging Controls for comments -----------------------------*/ .paging-control-container { float: right; margin: 0px 6px 0px 0px; font-size: 80%; } .unneeded-paging-control { visibility: hidden; } $%&'_[http://2.bp.blogspot.com/_X6DNROdu8Fw/SMjParllZ4I/AAAAAAAAABk/5Vh_OmU1Zr0/s320/IMG_2638.JPGO&bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_[http://2.bp.blogspot.com/_X6DNROdu8Fw/SMjParllZ4I/AAAAAAAAABk/5Vh_OmU1Zr0/s320/IMG_2638.JPG./01X$classesZ$classname12UNSURLXNSObject#AMy$ 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Fri, 19 Sep 2008 15:10:25 GMT_max-age=86400, no-transform_"attachment;filename="IMG_2638.JPG"Zimage/jpegTfife_Thu, 18 Sep 2008 15:10:25 GMTU17353U"190"./\]]^2_NSMutableDictionary\NSDictionaryC./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd hmv%,1@Ee0d>Zimage/jpegOCJFIFC  !"$"$C@"C !1"AQaq2#BR3b$Cr%&4c.!1"2A#Qaq3r ?˪ܱBMh%l-nGZ[m!*z2o1':c|{*mQ]i~S@7Zpmե@=f֖ڋ,b;{a$ T;Wwʠ>_ eP*&6^ KkaIgީpdl%g0g}l.pmm煐.L ڋrݶ. `ȫh!|k`G]Qme΢avZ v[K|ac׽]M†`g]_酫W[˹u,Żl״Oo0DF.o/n"rL[Bݾ!q[Չ؃)YZ41!o!g?*]mZy̗{fh&sBf:!2C)J? ")rs3ZW eBrJF [e]L5ww-T*N& ޖ^rH1Z Y$݇A3wx-%`) }?cWuD," IV-ЋnDҵR-BTc vԕ!tr ABDt"|9]o[x'j3z 1,k"ţkhOtHeQ[9 XN6EpJG*y(wsP.RdA]Cz/qJ$9qp]@{V v3PɌM<4 1//\5õ:dkr&|QP+#[3=qL2#)mZt<@6;ŊRDopsL-v\?%\UST7T 'Qծ)kܝ -aKz$ m3`y'Zkgl3⎵mDes&.yF3I!C~aZd,!#Xec] :)T\d2݈GUk|é}D,#J ڇw.J#] t zбԫqŒ{f{Po}Vx:(]tr~kuܸ-lCL:Gp(+YlØkZ䞤=GqEf =(G28H9ᅘSh$‘:PCvF,X ܙɩ󙬧Bʨ%Z`GQڤ%ŽpjY}awd>._ӭEԠRu遟΅2Zu8Hd&]Lc+D}\YRhLt"kGm+|t;EK[lT ROո3ҾmZ98~ kvoQF e% p\RBtnv Ge:ޙ?GNU{t6Ɣ`'ls\:mn1~ A,fyH]<$mJk! h[Kڃ}+] @۰K.6-0^F  -*}Yl dY4q,yU0 ˈm\f.+EܴH}鯀 KwV*#4'BIhmZfcgV 6L;E,.0Rq`.)\QӦM[6CH'#=71jz@16+#V$]U-ax{M+[:i12F]e?TfNJu,F۸d26UڳEXhCU}Gzֻl1`l:D|-zkUzM1[1˓e U&~%RV~Tm.C`ɃU/3)V0ѱcW&#*@YEӬϷJ5.m~qjV-F}j6 zڂK[&ɩ6#SΚ]?:] d?U"#gpt&=jSUcK H_ Z3 undu1krK9qv>,;U|]Pu ZpݼR-`Oϵ.`nHV:_ޘf?_\M鲼RApZlóačҩtV[nyYF}zM.[34m@$ #N!mC q͠ {$NwފmaWꮛsSeKzZkJ[n6]gP)skz$riUQ,]\nLȊsěnCZM[O.vK<97H m߬b1Ywүq&cf y/V: %: ?֩ ksv鿭3~ǸGעzGE9MJl>#ijnٰ\$PSKA.rv Wpa(ϚdSTXU ރn5+Bi(lƕf򊲂l6>գq~UiOCSvՒxQ ;`DUq08fWV&L8ikX nݰ!`wYWKB89QVEY-^&iE{*0asY|:~Ŗ 0pՎ\3&H[ɥtP}It}\e,`􎞕C!]KR:W&UpNEP.3,djua&rdBy2bЫmUmX1/{H|}❸PqLQ V$}&-f(ʺ@3VRh~&hJ5^NHX77YU;o^g l /IXRi'z)Zڴ?l׎%XeI9$?uliRCAiڔdKQi`T/*12qE!ݠTw`mޫg뙬[[vc̳`Qn2sT(I?fn5 X{N fFәma&.L@Jq]85i{fatvCj4#GH2&I>t0\E\E:[ljSu&~s^']B=@8ϥ7MY~טdP&J\]Zˎn0jW6QnK[8{jbĔ: J %[[AyJHs9h8.hSQ;/inG2]\U336M~JSlفBAHb'ӥ(޽7q7%Q'OS#*yVJe;\HzɥQo`eOZyG8^vlp9$ 7\7gnxU)Y>R.~"rcix[8 7 mEֹr<Gjю1f<䱎y{! mYРZn*\@2I N+NhUdrerj\n&ګyVH$gI#nK]6t['څ~/xy}6YJpw {>jd^zTٴ(@Dn/HGrHVq~(-Z>ՕpizOPEj'V|ٷ7琯˃Q mÕ뱠9) h1bٶtBp<0 ˟q5ibK=&UE]-w0P%He@.[Hb5)N69-渲\L>ڨ)#iatޘmve5eg23AE@9huUHd#^=J*pQ 2Hhxaܴ{ڦ0KjX}e$ƭTn[RO-z;bD҄Z˞yVYr OjsR]!0D AM/mnm1P3&+"nɸWҪm.)o0-h7Ԩn jm{[ Vǜᅸ~uX^)U(`p` ؜| mu0ɠ͹?#)l=pM(s.I\JԀ l98H2rBzY+bezI0@߭WSܸeJWUsQ,#Cf@!a9Dv9*|'prU]maخ9@7l']gOtǤDp6k؏A^^3N`*sYijqV+tVpAds mGh ] v>;T3xyGAl7xG!m,}ws|0q#%y`i#ŵxukMaA#+(1dm$0b?Xe̓rG=O1? wpx^ bF>\k9Uis0i'O{ Orӛ>yTLz}8R߆p`K;ݕ ]:<3.ؿaL5O-8lC="}#8wo[67dO¸v\̓'z|<,m&=j<ࣉlC[bH` J5, c`J׹ K6yHss>^/޽5$&fi,amBt`Li=.9f7ӉźBϧ|SBZ̈)bhZ巷IJSO0ƽ7Ă=nZ 6T?zGhYfq OHڹmlG#=T3Pm0qZsrkzAh^@@nd/Kh3_fwu&'$yvjœIp(W۱ R*I]x累[n,ޕJ1KbI,qz2ED4/`&<&2,ieuL@_vRw$Ufqm#}Я;$,7]r t+0(lT9ThHeڐQ P.l ;#r  -qUGOSW8}+EԷ-gcqENO]2Rg[e-H91rL#Ԡw-i!jOĸɫtk  (rHuansK(ՠ:zSA܌kulBua~rD/Lid=kJjCBjN|^(Mf;)C~ո@,WJ?$j>MJg@&>%'sJ(]OŶ|z>{@F acyw̃,P=i^%.]H؃Ҙ~im%`Dӥ'#J`;|B1klĘcm:f #wٹ~V^vi/'e+x[l[^S]q`A*:IsZV̲6eETIF>z9=ڒWZsMy)iqm*&pڲfғ $0OziYE1ԝ XY:\me i$Nڸq mT:i]Pb2zq.X n* b;zP, %U_cmզPBڌOXK\%fN&r#m){e~X=޴ȹ'U@>+'98UEF,uQn6Yu6O|lR\s[].Df}lzΦo/&CGV'Ҟ,%]=OWĶ-?ŹQeVS:@+V6Һw*G_jxw.;3+}sZwf#IȯC70tL]}QXE_flX"mRNVr>-EĶ&8#KSk*sk :uRJ6qKD8挶m-%YƨU2gUm{J^^- b>1޳8Բٱ a): Wpu+N9i7F-yc}=<~==W_$chچ ӶeTָ fH־yNYjT11)=1Mkib/﫾g) (3!f2-tmOy a[>٤cPHUVpzڋbLjwƾq7 N [v+"X횾^ QO,ϧ(ݼanՆe=OLKy\Y$sC@9-6(QZaj!Ԁ. ?MrTqKҕU[eD3ڳ̪yXoȒkR۬8u<`^sRox{7}7Zӂ$ 8"{Bsn785[+qWC7-Jʇ:^lmofTn;3!!|}Mܻ_H@ -6YLu[ZrR= Qkwc-K&<0~xQn2"~R:k7-fnGʜMaՑ̓߿ʳLe#8#jŝ $kP蹌)#Tg)z !WY;P+[BHe}~g:(` +m"2ItA> ?:Β#uh4AXH-pY skיQXB6]`KmMknU8 =1Lm>R;)`@a_ iOlLֽ+iGX*6ixPI,9{Q21uQ&1]ǀ$=HJk%7j_ #m, l**W-KVg¾W7:i_Pz`E3ZԹ1R -+/] |f ցBFŒ9sl. 0pwh/?]\ v؁-1vo: gLY,𶘄Vg+G@cWIӻ> bH$> w4I޴qhG#={Z]um²(%S E+q IɉxME0a=s4`BfRH3~tCؓBQ%yJ3Xt2ҥ mRsr5.ԶRřFGcұ(BBް$(z\ܸ4Th#InH՘#5ˢb*rNg %Ket}@+pWEVA2ǝ׿\;Vgq- LN{ VW P&\e\A-l -,[AGQ4:Ў٣^VjLj 8$= $K4,\fKYēwG2\V+Ž?(JeeOO0~M()y3QhEϙ,.j"2Tl?qW%IP[I._m:F&7J`of#(ݰ3ڗ; .2uS~(-K44,{k*^hm4ۚŵQd2(T\!;\PY#Wu uJ[|@#v;,ح˚paZO%J *oe:#qʯB:1@%0iǩM iJ/FuٙtFv&z4"D?pmeU dzTf*ږY'یlRJ`UF#K10ѫ>Ufbڋ4@zI8֍ M4t+ mopXL0ddo}Vj&C[Fx>øHVZF>*}>DW+$z7QF* ?e}>gpPTi3ֶT:Vq=*M;_C@RXyrGqVvLF$Rj#IP2HΓzR%e[DXpE oQR1 OAS9U'*h.\ݰϺ@6J}ǽ݅2q4$IWfy l3A::SRrG˵"T!aNZV,0N^,& 2ʹisri}J-RQ1NԜ$7jl0`rvVf)+ Yl:8 [go c;UM7-&Y;ɬMˢ\X.NHDdq,dYfb1ʍiYJD&#~ƖY7 A'PU0aF&PFIe8 eC PdG/4-i,`ECPpwz62AɌ Q8y]a= Tu(~s5ՎYϕMkeX钹URntyXj?2{|:ML1ǦT%E8QgӧZ8 ވ.Z%U L#yC}@+zcԿ/j :]Ɍcߗgĭ-d9+'^) R >|qknrXȃןp?1xD$ 'V0G)tu %CIKĕu5{5F=օF$@_ьhg"AUpTAǥR`z٘hwzFJtAڔvb#$sLL{wbA^&i70ʡOjp_2 ֲ1bT6`˜ i9;@TVfR5ju`$L ̺@`g#֐p">uR$|+8\%/@-ZlOMmX/5A]UVkrShrX\\@}; 1S&Dk^"S`y,@kDOQH*cV$ޙwUd+җZk&e[Hѷ^aBjpu!2OcUdkj2`."3 (*(si6* 'vu*XgLB3܈=k$+۶DjiRGևw'r³/*W8_W9}?,CI`9ufT5)0mYkqm@A?KfPB i$GzeKj>U`ځ I?~U.X-ǿjѫd}ǥ5 ٗ]ViS0v[6mCp7?Jȵ]{|ɥYe89X>+M.5|*Ź޴P(lzg-=Â8$ YOcJu`]p( GTjR C4k<IP3ץ` *Dq֤@f \*/bԕd_q푅LAxC[Ixsw.7&$[`5Oʾ;v a;'Lϋ#w6C5 s`4̒vBFo nj#oPװޥȘzu)IlFqYu C]&ғ * Y.Ѩ5VuP4ru oVGsU_fr'y?:r@Un*rZe@0OC6I$@_ҎZxye_HP:F@w*u ޿7cQiޛQvtf2#h\u !y,a`5`{K(<qB>d67r=V߄3n^=kTg 3'+7^ aI.$`ٓ(4|~xͩvvn7>s>=(R # ? 26 ߵP`*ndy'ք?DAHvO1\/``ި)H2KS- "!,>|9 _ȹm#)0MQ[씟-#MWomBm8'K%b}68cqLѶK*,23Qm[Sg4uhQlgT)Φ ߰uRq{D._Bx;~!oR_hڼ/.:f*Vv\`d2q :vTkh\˸D$H"i2X;R.[7N%64SGI#*T04O}CP 4^3o֪y0~(N"q֥*l묡wҥN&qH]w!0pNOoj1a1֙D[ Q;m5ֹa6;„C L ;Ry,Uג{PW?բLl 9I;~A{w"{̾woa^B~Klm Q?V 7YY)TR(KH1_U]ƃp![!ܱ?/Ccd~ ͫNV:gҝ".G1RzМC,&ٺr~.|ۼD&H\J0iSj%  B2+X+q2|=_dͲ*Btr1J"ݷS_\G|%K(qFpئ53HmDjZj𕼳ڎ*&OQqb}yA GMPN3T t&,ˉ :C5VXtmҪT#TɎwb :t/HRdE QwFw1R%b% ڹ$ j9Kz cH!P3Af+,B_uIJv$dIVAbs8@ `F;j60}9YS'vf7+GTƼe/?eI:zU h.f`}O5L!Brf#PZGb;\E!%+ V} Q0{Tިf"mPXJ'~¸)cP~|CF *$xLUA#*,8e{d/R* ^Ō1EM:x_orÌ$cH#*|w蟎[bpqY',p;o\1[ՃjյMdeWPSW(FdƗgk~ޢ Fk?Jx \yBrqOBoçż;SpV$©gm"A>(ΆƊ@rGj$dҠ͊d-Q3f{$.ǢR}X6@IZ3>T#JzK q;Q'$ntS3U8aH) |Bqy|&Pփ jLHqWFf -m; 8)aPՅI BjY= q[f ay"@M3YJN'8N$ o 7K"OqO<=O[!B*5AtnF,4[[ 6 px>*[=i8佾|;_ _J7#z8^)W{>SWY<;cz4=AP͉:}+;l莂/F}>;Efg*pjLqV<޸PwсOi.s\J5 @": jS.eG~J-~ЏO-'U֞KoTP[*&MSڪ }F&kG}csMH SJJEvc 6Vqޗ=i5MQտyzV1] [X^;\\L|Rv3՚8t\ mTfڃcgG"?IL1(O7O~0q~̫?ةQ EF\Zo@x '/Zz}+_,kWw An[p,~c=DYp-6OxLN«u3+E8n#pMu 2hqҚԔkyq(=}hl–]d _QS1Fm;%MNb ($z:}d=k;I|'jnF4R&TMTuS6lN pګވJ?)*+,_1http://www.blogger.com/img/icon18_edit_allbkg.gifObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345IJKLMNOPQRSTUVW[\U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_1http://www.blogger.com/img/icon18_edit_allbkg.gif./01X$classesZ$classname12UNSURLXNSObject#Ae 6789AWNS.keysZNS.objects:;<=>?@ BCDEFGH]Cache-ControlWExpires\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Sun, 17 Jan 2038 19:14:07 GMTYimage/gifSgwsS162_Thu, 11 Sep 2008 13:30:15 GMT_Fri, 09 May 2008 15:04:46 GMT./XYYZ2_NSMutableDictionary\NSDictionary./]^^_2_NSHTTPURLResponse]NSURLResponse)27:PRd<AJUX^gpry -7;?_`Yimage/gifOGIF89aǻj4TSP% Џ)I5S(3&1#ǻ!,OI`(1 "N(‡!3 wH@ 1憐 ra R/yL `MJ;./&0_[http://2.bp.blogspot.com/_X6DNROdu8Fw/SMjO5DU_lBI/AAAAAAAAAA8/oLeFhgmmwg0/s320/IMG_2626.JPGO%bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_[http://2.bp.blogspot.com/_X6DNROdu8Fw/SMjO5DU_lBI/AAAAAAAAAA8/oLeFhgmmwg0/s320/IMG_2626.JPG./01X$classesZ$classname12UNSURLXNSObject#AMx] 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Fri, 19 Sep 2008 15:10:25 GMT_max-age=86400, no-transform_"attachment;filename="IMG_2626.JPG"Zimage/jpegTfife_Thu, 18 Sep 2008 15:10:25 GMTU13804T"f0"./\]]^2_NSMutableDictionary\NSDictionary5./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd hmv%,1@Ee/d=O5JFIFC  !"$"$C@" F!1AQa"2q#BbR3r$%4CScT-!1A"2Qaq#3B ?׽ w3xK=<&BzIҼ&z{^ЌDڄ[[`wfShn0/$o!e~?θxXn'[ԧc9l? `8'$OQ:s41IdP;Pۛ[i$LwD'@73Mws%%;ROZArQ=#= z=Z# vy5A1šXN}v S]AQhE7M/,+bFc'ބOsޑ'qk #,OE LD'lf:=(# zkT5(/C^z/Ŗ~{2+ uҬmͻ?>i2 YB$C59(; >UMfi!s#oZ$hCnT.::3y?S:иR,t1-kgg4ۯNe<9䏚G%cX_jw&kٲv\*x-QK<^tq81G=pbq['*Iy.[bج(ilo:KdSırc2dT PSQ,UC)ڞm' /$ 1n.$]fe9S ֥ᑜ;e'qEH87fkW xV+[.c5M@1Z6$=2wm QPtF͋@ۘdhϞ+$ecյs) K`t'N+XhЯikld3so k$n0 *z j̳={%8v,6 4u41SA15v۵P=58Kt=}3%?,e[t6׷P[9 Itl*#}ڔ[\FA=1<{ЖIb"f>usjF.苧ә<0 *hsOb! ~<)YM!LcHš#2Ȥ´KsvҖ8G\6aHrJރ_}),::P>9ዳƼ|VU/09yN Ru!9d3GR]3/.k/tM>VucICtZRë(W;G}S5~ZjVݸ#ɆEy\ް`tbwc<,Aޡe zq{GeÓ*=A^xa~jg&xHts64M?BڴY}޴~3ֹsL-[OI 0e<}e\at@ZlIo6ҩH3ە5?h71G/"\jPR:0*&dt^Ih`ÚQHޅ޾aJ oxVڦ`HOtU{yI&AH}3-߶“,]ld0FZ{8=?8r-Rфsr .Ք0y~иtn#qCTC>ZÞ/QZQ9߭HjeΤ?߶ؗpqxnnkiv`\@kn'A-Z'K[3\Kuj]wh[g}RA'[)]po._䌝mV+Z0!/@T^օЄh#ɣte)viå3E]҉/biNGPmV>Ę4b-;XQ&mGaC,n*^(ߵ5gɧ_h'g-(rTqOyi  4 3x{PhnlGI&+iꙔ5~nv]2T6,vd>jz(ͩ쏨9`GvA(~x4❊H&`YwIHS.v\o&9uSF09Lf6#HgLDq(e|9%7/,mY0}h XP&9cBEN$ޒHav#ڒ cGYYJ4mىf=Lm~])?#ɩi@~MI}c}֭dOO+*)uag?v%?PљH-~/i-˷@nG5mkbl}rGҰyxO_IMH>z홭4aZ@p=پ4?Pxk홮Ynu#{UC(q2ƟGὴטce4(#&e ݛjebh9^Ӻօ\4Ayퟝiy1ژKy,V~Qlgr})"^Ky2дq^4-*}|2I@q4$iY&[x[0ۯZn4mJ<mR⏮;R!ҡhIQV*r=3R_/1JʱѠqE嚏bTٿ޵. H/2>u̹;SUZZ95g^ir ŤQ+ +Lk}*[_ ҅Bڂ{V%.('\,u9-uwnyeO4Q%WPTK]Օȵ}WF[v1սZаʺ0`~;z Xk崻r0<}>͠Uz.#U+_TBZC/}YH 59I3iڛqBh'J i~<Ŷ W!"Y!xؤО÷ԩc҄2i:^dnI±HֆQB8̐rMa9 32 IZ'GLIn[hF'ץM%G2b5hj ݰg[4ghH{̸$V? џ!}h宁o 1O֦;Wg 95=Qy}ȄvD# /,J|LJF/4CSv x*sʋQ8 ;"hZ[)axJOusSM9fr=_ #`U˅8D\HGΨUޥ@#r ɢn.uk$HC֗j6@u:^uL ֻqD) |KP)&p: >jqMj_cIU*s,]1E2+ 2a;m[!̼9p,'bao=*My˞Չct!]E%m>QfC槨48tɩ郤}#(T{-lj5m} k*0 Զu{Y+"?"1BtC%Ƒ JO'J>A#΄icQԭ,A̠5:VS=|Nܖ>&=fėR6Eб\fHPH>UEj㐏x G~t|Q$\ɽ2|xE[BmE`V ǶwP1 $>3Rd}O25̧& ݅ơ;M01pq1GL ܌RFu t)qt7$$qGnG٠0ۯ.75+5=>0jySD䓛*oTCL7銅x42Y ʙlh|/+u=OS1̴rU歼k)[OVb##]c3U){ ipXj b.}zEJwN HBՖd:>޲Pa蚟:=k,!_=!X^J-՛*xweOpZnKsMcL5_)'#s(8M^KY%=u*9~ ~fq0+ȧn#zPDC-M;fE'@z}> -Q lnqP:I7dp{{ T=N';P0rdt y}'=7 ?q (ܾ1OjAvmGd5-8\0f3v.8Em幞8!RHQGrvH% n'n+(MxWAlZo췏'lG÷ȟ]3Oe~3ލXZ\a-i G3#O/)!ŏs5؟#e~<-|;3o(yIC!r@I-?BI_b~Ҽ<7 ʧp'p}w\G2"ȭ屮ߞHaPzd*u$?#rv^_=P*vye lcU'k1lZN:}cg5JZRԡcN$y# *{?|6&JA kbeU{dvҽrn5i,I"=Q4zVO]r `9`rfM[TN#:ix. T%`).& v>yTulA]::+83cՏv>."k8 XMnR/Oqǥ2)iӰn4@oPa@@A+i[zQih݅ ?3n1]%MhuN;dOZ)]>j B`8M]uHe@qkc݆jva8\ iۦf(l[J~[7n嶘-%DѡY^yg| hM5é|(A+g6Cx .;2KEX$YCh?UnõiW<[y\>T)?1 ߿6'>#כͽhc/<6}g ޝˌs/i~~su0yҵ>g 6n'n:_픆-+KBFӖ9Ϡbm#Vws f:}i~+2ݦ?-a#~B-O,R dr2`LS$j?mN]Q}d{yP*%zJvKU ZU2A b[34wR=Z4j[qmémzOEQՏHZ*#>#?FۤJ /tpBB\?i1}0ŝ'bmi161N&*dvM6^Z\[MnVQKf>TQPr9Us9-$%ªPK6ήzYc23J ;nʯZ-К9꨿D^;hz ϼ*K͊9h E!4&> NkqS^HfqT?#M D3\+\EB?4c$|KqŽdynk<ǥxWcN-͵35oY[zMLPk9Q*.7P}t=i>r5z@ f﹣;Pm5O>u|{HRV[x~EPMt'>+oE*s6x#!Yգ{9[^I*%#֩g>6ӥuojz5hU5Ms}=Ě~,gm:i=8;Um /{RInBeFdiM3K[6Kq)|JpcOYb4k#KwT˃AAZVxyL:1g?J(UO3$[z/Ƞd1>!M]${c5j^~XQBKl#5jX9(ּr4=)Kgɗ:9;QV^m_pc+T~t@0d&1PKh?jMf1$^JN]h} qҖv yWȼ,Z\`B?t1[4D'o Ԙ,X%كQFϺ}N6]JWG5UHs-i0e h>Bs {C8mYXAf8|Z%O,`;C:l~q7#tݤz(?.3ik(וTv4unTq^ZA>3tHz#'5 \*eĜ yI[6Jn(?H/ -E9 :Z6 |?ag}v(fYlbqlG' UɿOH]j־ElJ]rsy4<[ 2\4s'V88E1\8 ]8C/ 7 q: r@I{oU7(Ҹ nĊdbʙw6玣T-3Mʟˀ3D?\@%,1s̪ۻt'a#mr[ƠsoZRGKyuR>8YlOIHd$ d=:~.[Glbhy~X.쪼z }Kj iSY9Wr:MN8D:l啝Apr(*cǦh9y8lҔVt>^ͬ[ ď,ij\"c"o{wmjO|ժjDULrtlY{kt^pH{|:dD}j TPQT8;P CFխe)]Rc54G4a h3$7޼^ּjZ={޽PN3 #OB=5@GrMƪ;ޫj8z@u!ϨFlo/+7&A;V27#}3cݥPĮ#ܵ2)9-ͰUhw㑗Ѵ*yh3k$wĺ 9b|Ǧ vU`ֳBf 2s]=ko,%I c<D$o'BKVc.I Xq󨺝ܼWo x,d._'vu~*M{5={OK!oe ʰ\^y}%!@P)M8^RK$jr[37˷hz|ohΖ {j0j;Z++W\ypjEm9bNnL+G!#دBSm88 >9^/kgWx#oqF~-"v?4I49-}N?ߞCEqPg5KVP@Ͻuȳ 8ӣrY|ECscޥH).3k_ـ̜b6zV?]*GǙ$Y9:%0I늧ɺ(h>V$n\ GtJEuEs ^Q[ _ڧʨزܴۑRG!?41q:=["awY:L5 =&Aڄ?->TbnW'zq'qS. 6_Fd~,zԾ]ϝEcRR: ߡkQʹ`bte7o#oAnynRAQSM]*K PsZ B=,HMF'hR3@ھY:hUo02/Tֽ/)/7.w$)#6%[Ȍ 3 gѬ'w£**t-*Q~_WGj@5ÃcIs_Iq7-Nl Wjr*Rv7DW2gRن07y4 ͅc^:OIP(4&l֍q"֩Z/٬[H*HcZGUд͒etRb3N3 uhs);jQz9 9{+WSnO\=%¼b_,GB¯[tɭh\C:/Z%/T+%9gŸi.9V3B%>ֈ߿ ĴyoBl6j}YCΊi:d;tH6튅^kQ4i/$;n=p~JOnƌev h>8Fy.>!lG=(B&]jQ X}$.Ô ր\iveΉmhf}D/YfJF``:r늽kBHѴ$U!hōC/u'q#(N>Qf'}nAaTsv$֕6<5/; }/OT,\ dH1!lc=$kl4nn#u qeY _,AWTdY`mާ ėomT]8p<ڦjI_Z'>@N>y޹;ZFy:5㑽(X9Rq$<& Go*jv5ܜ4G+"oM}>銋8$,w5;7 χ9]ir DÕd]5}[6IhěJ,jcҏ3mPp{RR__Je_ ޟY)z/>b#/!jG72SM ܨgzdi1Rm_yy'`qҢ{g!UcY0kQ?S%T&ڢgԫόXZ\9O_TVPJ]r7^_ujCv4}-sw4}:yIf6PGy3\͇R7/D'=E_EWGZ% ( {|$R6J׎O~$sDwP1 [oc%h;w4ԣ"ھ'4Mtڙ"IDMA"~SD-;z&̋_(.=`:%H2~=(ӱ,6r蚛F_T 9D%!IXu3W8L23&4_[http://4.bp.blogspot.com/_X6DNROdu8Fw/SMjO5horIpI/AAAAAAAAABE/EhKyg4RwHU0/s320/IMG_2627.JPGO&bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_[http://4.bp.blogspot.com/_X6DNROdu8Fw/SMjO5horIpI/AAAAAAAAABE/EhKyg4RwHU0/s320/IMG_2627.JPG./01X$classesZ$classname12UNSURLXNSObject#AMy@ 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Fri, 19 Sep 2008 15:10:25 GMT_max-age=86400, no-transform_"attachment;filename="IMG_2627.JPG"Zimage/jpegTfife_Thu, 18 Sep 2008 15:10:25 GMTU13987U"110"./\]]^2_NSMutableDictionary\NSDictionary6./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd hmv%,1@Ee0d>O6JFIFC  !"$"$C@" D!1A"Qa2qB#Rbr$34%CSETc,!1"AQa#2BqR3 ?&4޾'zMDZ$M6,=;߁e[R>s.yCmHvcė ŖS(Rh&+%4^( $5s*9[J |=3Bz-W~WOb)^WOJݘH:m<ͨg'.aAčǥcsޤmc > ssQPeveBv6-?>-i9$utڅNk;?hA#i pbVm4Y5(63!Z-UI>->NЯY9RgqَGS*XU*ɣZdk Eu!@ҹ[˘%#ȶSu?ڌXr{u4R(?/jebUZ2->9OLtWȡPUOE׮tjp{2E^YKi( \k]6takx ̎ |D`5]~ !qZ7 ̬&%Ms(ZcRd& =? j;Yi7u"wҢsmt.X719k2XpbD ML<A+A j!$J44S^QH5^4AH4I {x3Tט5 34}[JxNGN=OQ]zxé٩IaE7.} z"3yyA'ݾ*sn[Mi/׶|ѯGƦneF@gf]TV7af\[ȖO*h^?cֈկl x9؃J-mUO @6P\lMEih%Q^{Mfž7{ 6I匴a*ӸGE zTB=66mJ*T)\(]]z7cv= 6\>F50P'Ki)CTQ#~y3wnT|W@skU+WZd؉ PMBm}Kߢx(솹䯍!ltHyTS^BlM;ՉT[5=>4Q(g qƎ Nu%l 0ֶw6v_V$$ّ*ѝp'j'Gue!x9nqu &Z-c(1ʹ*zHs]ӟ7鏴dIS8sWڵmo&OoCCQ:m'q>$gܽ-z-)N44c֒kkDRk8hI̾ԞZ`Ċ/%G8VĻ1ֆL(I~]Ꮇr0L|&֩Z43J`R1Nݫ88. ,}B_,*/ :TmÞKaH&_7;2u4sݥ1UjG7ޯev{Vt;u BۢeO֑/x 9FWCy_Pdp~!ai6g|;r͒j}ovh#"Z.,:g"B}ڑqcm(?4k6Ő nCM2>&yq`Q2̈́nsT>:]bn%]#e,՘Y;BɶԯEld9qin3u>NtrWů wKǸy6s2k&yeu$W[~lF{,y=0rڥ?yf,kg"%F`N1MRFGTfzfoNMs4n n糊wHslC8*oN5BO]I5ٲ:"ώ(|XUIwPz}٨ZǪ:"y +{Vfˁ+R{YF J]kҵ `X>{҂Դ̬ܧS>}Rj2H: 3Oo-zlP"VN"'*7T-&HBT~m.r=KFwh FF#_=S;ió%Hܚmx:Q*NYgL"s\a|SVo/UxRK41ܳb~m>-:X6>|y1ՈHa#la<aqɩ[kaʪ7qv:i WDCz[uK_nF7C@D֧uc4ˆu=֟_RvMjMizvШjAj.LjGIYjVfn'\Ϡ\ŨY4v(=WMTϗ-nO}> ot|ڇ(xdZӵ-?PNk.=|9ӇxrstjºUlIMٗ[$֘fzS̶Z,VK3[|AS_U'msoyl,>(5\enVbfo-P|qG)U;AjI3'\n1>Ku8Z+\ :rEs\ZʲE V*/Ɩd]/z\<؎,oxH8W~;k+pi{\nbR=*Vğclm^ַm4GW XhfpόALi>kTQպk"}vSKt{N_G ,CàHمѢ*'@U+{T.96=qOKGC ¢0dQwe>e9/m[Ҡ {]<67"g'!b?A_"ZՖ'gnu\j]I}zїnD);HF+v`tܸ 1҄!!/k ͌0'[24S1ձB/_jq{TsGJԴĞ6ʸȬUXn9֙*̐挟[ǧ;Ô5pkB|zV2~V;QTM.L״]e}jVT)wk_2δ͆f/B9ZzbiZ;i$c$)LEJx݀mu0JG"66S^-CTOduf/!M }JOer 4ŘeW>4Q\[ʳF!T.6ځލuop< }v[u)ԚcRomH3,VҁweT_h^K7G` @_^oDc![A?5.{o'=,\$GS bc}>0ZRpxB"*ՖZ{yll' /X>Ƿ(ÙH9 R~+2nQIVlI9%r**?enanY-G1T#\A'𬗽 D4n Fe?CJ^Y :m%CiB?4P]]sH0LPG2s}ߕ= YF!ɟƊdlri5&DH9EJ<(--3K18ԡ15!Xt$vx}_j]bf\+ 6I$z摝/I+; hW]+œ c5- mJ]yą~=w3D;UPAl6 -xM]^3kr~`TPsbR#LG@pީo{Io2:UJ<;+Z:g3dmֵ~ _'MƋyxӥoҦ!r5Nb#,sWkwVa ?[.?v1`;qOCiV]:tA!~ٱSk%9hdXߠ R# ޠ.p9kI7Ӻ~*ӈ#-ne8Q!rC853~Ir)<ǵ#h0{Hn!h$XdU,UVk *MoCV:Pp< ̎9H&5!uM6KJe11=OE^#ǗdKBsv]u֕&kKjAIBF$yMA'"42Hr [3y!U9I!Eer[_0>^]Zwk[k$B[}+ //]c 24Lĥ*+3u5;mgB}B@O})/ji%r1b}Mz_U~CTc„ *.¢ٹzҎaO.|i\FQ+rqҽy#٣i>ۥ$#\+D~9]NmnK;`AG6u]6RüIq!~ zKP$jZH#Pu9'RGS+qNBA:mPE9B|79u&z 6AE҇@>mlzeXoeY㐫/h\!~1dҲ뼻co?yMa}16~f>>gN(2GiZGr8LE9+E\4=]e~̘S[@7VP˃pEP_fUWl$цRj'.C >Sf\Il6OCާssC1x’8ʬk2U]:92[[Ǒ/s7Xs][HAV^v87P$dgv@M̷Ai[q~SB |R7&K"QI= ekӔ$`(̠4 mܽr[M'T|Yi9P3ASzwÞ7bBK+ FnU9nʠ힕D&DMo!`5rSBMn Ud棠_7:AЯBwd-⫯-0S5+y' SrhrőN[_sM隔5Ă8BP2OJ8& +y!S@Ql+Q1qFFT A!m>L OՅǥC{g-G*a{}N1gu;Miqqy"R~0A 911~7VéRZ*Ԧ(E< }ǵ>ɨChPW_ h-w S[> ;$Ts:޴6$El8qJyq})\He-3)6V埞g~"jʗ4\xS# >T6М‹Jy(Or8>k$lD;;-}ZDDY9 ޛ Dr`c^B6AvƤt VQdeVGº'첷~S*'o3AVM*Z'oC*c=!RSbZ\D peBZNynid?yt+gj4LñbŌ=)Tq^fUO[@vjF3Jo-E{m3ܧрS:e۴K;@L8ģcދ,D<޽Q9?սђON2C4zV {I!]j/Bv<ۚwlcdA(ޓKl曏Q@^erdƪR?v#NҸCd ;.~ yI"1dm{ҿdl^USaR0-ߺKЪ07#aE)漶ḏ ;$`f3wϛwּVk7l>ڼr'f }3WO$rCKzsƿci_|Y$`K`&X{@I=Im̒h>M+O/}B1͍k(;l=)4n?2E[XiASPzi,=좯R]mǓ"pχ/a1o>M\ǁ֟᫦y$5'qlZ%יw@EXs5pyFkoj5^h9hBp45z5]H%vB}* ,{d?Wqu*K9[y*Rp[ii#ƣuJgB67$h)d&GORiHК 0 cޤa9$ wWmZ}3{SŔ| 4,DZжCqʱd3KQ ǿ,}jˎVI*Hq>vTrLB3u< t6dƑ?Zt|W_|GKG 1۲wDi8:4Dje6-ŦZ]I=C"en,mS]-&hDu@%z7;vN"EW/Jmݶ'>:ΡٙF1ns | dTVkq{J?e7vEڳT1n4kS}ᇷOփ>HAiYO1Ic@nXd}Rt ksnTĽ1J5;Rk)8U88L})hi֛=Q/boKyzfoKKTW={^_AEk*XI{T1PHGriV P=9KN`(GhRn;Uyku/g9ڐN +4q@sͷq]j tsS U s`/>릱KXlyRyA_LI!KSнCh&6|hޙob֚bVJ~@1M.@^i6_d.1X Gewȳ\!)$:rfx_ÙOcmK`dn~IWlO O&4%PQ Qo׊+>\c@ \0Vz?JO<Wɞ9ъ*G&ǦONMbǥ$źPkإ!-W*U&ֺ[NFn: g4:$`di6U:K=5VrN;FO=_+_I]\G($T(uTt|Bs6g;ZU ;PBLHbN0 ?}iǞ%~ϠD<'ƒo4t#vk9 +ևfBS$r("Fޣ_|ү?r,O\T}\$Wu6"&zIlN"S+R9[8sQ-H 6?Z׸\*ɗǭssxd ۽ctwvK6RxCVA6A6٩ 8Ǘϛ ?+y@JD'BGgtv߽`[+n\xzV_^X,Mrs(V`qYf6,o/,ta Yԥ@?^!7vTNrZt3'cNMZ5OgW"(ʿ=j4^\zУł7.w?*qbZS{ڇ2`S1B#OK~~z3csJW ^hU%m:oU_IP#ҵ.!֡ѥdo>rsHY #Z7nWRh8g v+uUEF4U daܡIל"E o·'U}fFTdXąGdZط]Eq.=4gzN%C`t"Ix[?NL6cb3F/YUr#J{SdKg"3k8ZapfO%2-QڒDZcѲ:N 9։_ s7S@Ñ)h|/qU/)7O4H_ +S|{e<"NW=k`[p؊NDr9l yk|WZW>w=74J(' gލ3AagyAlZ]qG^Sw JnBu\>.#9M>/Y9@MLvƥkQ˜t'5FhO^7UOu)* ?|OEKUVa|.g[eP|F\+z6M:U.7f*@daoKDyr}34,5+;p7A0Gj9Ӯ5[B иvS~>!}~Ky 3:aDk=G}RkY4s s1îޠSE-f7Kf*Y[b#\?[\C <z֘1X^ilo'Ŷ[M2ve*w#~h:~=:h[ig3'Gl]Dt`2r42(ddgK8H:gOZ++k۔bzdpM nݫ[t މ 6bJ@ /0L2K#9.!ҚByyz2_'=B˒iszi_+N5ѭ[x_Rχ!>u85pELz"_뗠q֧ZUFl`IȺ9tfd)n`G\P2֞)z>*Q҄mǿ{o#cgކC%b䏟C73P<;]R峐7MpAm 1C㍱YW+vJ7;roNAݽ&Vz@31ޛd׮rZTKUb>QS8Z~3h_<Դ_h(e8mzj *{'>_ʬ6͔B0wd8OZx̬m:iwcN"O{3+WV8ޘo[jeFQq7?4w_ ' T 3wZK ,$,}溺 }KLKl2֓qBquæe,[͗9YW霏ң,+Oi2''dy[։5jd-_jMfV_\ڍe]= \E/f64یs_gaF-fB0Fآd "Dc/1Qp?Hsoldkޘ; uH6 xH4z6?:; Z5M]cz -c39zg?#,m]+*ŧ/ܱ5gɉjbӠD8TE~*v<zzfچnip klbwRs)w`cfCˎ^Ԃ%gѻ@n#f=E_x펽PZ3ΨtZn7օTKsҭ3"تOrN;GH/iu1/;C/2֓?45Oq~UY|)p5FHIhW^uj>E =]I)"|sM04˷ ,8 7]w67&8_[http://3.bp.blogspot.com/_X6DNROdu8Fw/SMjO54iNGOI/AAAAAAAAABM/5cQhXEj30mM/s320/IMG_2628.JPGO&bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_[http://3.bp.blogspot.com/_X6DNROdu8Fw/SMjO54iNGOI/AAAAAAAAABM/5cQhXEj30mM/s320/IMG_2628.JPG./01X$classesZ$classname12UNSURLXNSObject#AMyS 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Fri, 19 Sep 2008 15:10:25 GMT_max-age=86400, no-transform_"attachment;filename="IMG_2628.JPG"Zimage/jpegTfife_Thu, 18 Sep 2008 15:10:25 GMTU11825U"130"./\]]^2_NSMutableDictionary\NSDictionary.1./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd hmv%,1@Ee0d>O.1JFIFC  !"$"$C@" <!1A"Qaq2#B3R$bCr+!1"AQa#23Bq ?xZ\ .)8DZz)TS"FW1N0xywS 1P1RAÃ]\it/%G4~ 'ju_/ -wY$vVX޳tFp l}#G_;uH@#{Li-1GمSWl:m=4r>ݻKޭ L^~_Emwczɔ&o;YqwLl.|WϽ[{}vT\6$س}M׈#cu }6h.\GҚ+}=DxG]~L0dH5󞫭|e'cAK&~tZ*<{K}7ݷo&2vesoogyf?YɾA4Ιb p?zzˌspH+Uwd?;B%+C|8{v#R]{՟ ެˏZGFSQ^Ux\kqҺr= Eц"R4M~ߥȷM˥(\E"u6m:i{M  1jd'1Two\f>pa 8j&=#& ..w/Gds-Y޽ tݪvKZMDcP52Ϸ4'UkMH;Z7+5Af&>8(wu [[S ? G6+`ҖI{=mZm67CO1 p+E㮵ojzSʫ@/zZ@zwQ[ʾM#(ʹ٥ x+}s]rݥؙjKTZߩN9SpN=FY.f@ZvI3R5ɬږsPk:9\juL1mrM)]!-cXEWڥlfmQY5A[cpnmw1SIqLY}L>ݩbrF7ni;l$B)yS=wQGh1CZFPVQa [XQ-)2O8G$;/F_O\𮍎?EngVٸp+%\G==y@Qtz5Ҩ4b96f:OԎrxZUvo[2X e7C?Uv[OxY75}SMl0X}ۿtj.1SC_Sp,f94ψt>|䖲9MYLrA܊inaTsnޯ'lix>h:]N9fiSfV i[v܍ݫMӬ _2iy wa׮1:㙺h-/Q6zrMMPIt[zTtd۰F೿j+ܻ_`dѶ={U+\zx}*Xڮ6f?uGPm8 ;uK&Fͦ9sSV0lX]zKA.\v|DJy} to) -/'t Y/h>:&?"OZչ+0'+=ɗvnK75`E7xO֬uVwF޼To>z{9CJRr+nM;X P_j4`ImMձܠ"fkc O6hBciza8M溎KMu \a]gtܼle$ B3* U sYzHER9fK %^ңV=[]YuC^&MkJޫ}KQsUc$ʼngdc3?mFnMA0 Bu3$2?,>->^aeQ@\׶ZZGK0AWmQt XE)Di&kic\GYilӢ:RW 5Mwz㎥Ri5 N)RMqQRi^OCU4Sm{Wh֭¶ CvZ֍m9 me+7]!FӠhNU* `jr(C^թ8ç@_T?ŷcEQ{lmvt+r޹r⠒I^Ҵƒ)-83 '4vkh8UQ[gg=I)JN ݡ#=ˑ;"m#N7REr+Lukkm/PΖ7,A5랫hLx3^9AY]dv}6?KWt.(zXh/-ƽkj,Ԥ6"*ϫ9 EH^SotiƩGt0"*G=(滼WSbkCMRq\M -WeW5 PsgPn OjHжm=m1_}^v5[\qUi㊤p!9 }ɦC\GzD9kdCjEOEl~jz8HSL5= Pf$(̆";=>Y҅b0&&h8&y8-(W>F#ڧޓr#5vv.ym8'rzǧiwPT\lxߔ$VvjfS{w/*3>",,T0xNiҵ,2|EۡbwEi 6dҌBEitdCklb@@=Ac{*3?).+Dw=&&$B/-Y ˏlɵ.0Fmݘ]en)U|*ɀwsK _6e߱*;=G;XH*+AZ ~jEdBo;•9M9Gs]'S2^'Sj ⴾ*0w=+l^#sD0fv%adM aOLj_U۽SkoI3Iz38⃼05r9x"m۷h4w ϽlF3i,Zڪ7{f f]l=[OV ̰w*rJQ8faGz]uDw}? ۷3jK<]]$Dq.FMlx@#ǘ䕑NZ؛6`ƒ;L|J- ⩼NsV64qOw=ܓ qGO+ىzȦ%f0" Xt*5)$mm\DFݶv<5{Ҽ?:m hM;[oq[?+pNXNkoq7}ҿMatM?BugqFƆز2gTyz}9BqNJk㚊gWkgOaK#5\lElb[UB~TV ;qҗ*[J`-@>5fMm폼ޮH)ؾޢݜDNGʅI94.C-r<ZnWcg5S^F5{}0],UuV:niteZ ӫ`jف4GLmgt OE%l=&Fc*/Wp9ybjg"! ruQa[(׼6 =*13F"k`WnCŐˑOIҏ2}vJUIb'8bJ14C~hhɧ:Ci52 [n2D0a;rVIh %#ށ+,6bp`Pks@d]&*_+"Lw 1 =IbPlnEZV̟D*7>^SUPU& Q=O\-˩{okmI,_}CI9`Rnsοh[3d3n\@G: F Kr_$A'b#~1q'*F-,D n*}2psVuN?P0HD LO#LFIw\ G'.brޘىk j 1Xr{קya6ej5iz.@x;e4yXP?*B=ƸVQivF֍KX'4.XzAĜ[ܩst~~*eH(,ah{5qvS"m;m&Q;$?JSlfv¡f#w sumpG9x7$.H$+c^ZA܈>8^=aԾaNTÁVAԃD?]bKcs`&yѨ AYn=`ZL H ndoYpMA`,:xCEz0$M֜戰MԨ:Q]3+qˠXZ4p5yݯ/nvJ1^oR>2.%e1x0 IPտQTLV& cJBntԖ-I@t&%qOzKvX$PJ@?3rdm;YLbM<@ҹl34k)Cps5ςbxBVWiG72 ~ܦ1GpNE .˱Gs?5oqBݼL8SQP.V´lMǽZRe1'5ˀc_` WB6푒T= l\jjsgBi5QcOPj/iQKN*$8WmGEet-M*!#'㚶X,>K"4w'{`6cSseiVL(cƲ4_fU?W#5ycO6U!;k_Ѭ >܊ϓ5#[5 sUn3{MbujWӉփq#B|2p6z{U^ 1 [$ɟdƛ?}ِ[k*D)A9#v `4) 1]!3eO<~" 2yQg1n', $ɁCP V%Hx5uyZF@I+3ZL'w՗ow%jE>}9aگ<K2 ~跧fX~bԺݷݐѹgM'.͈:Eu1q*Wnd~heaڦYceԐh7Sp}Ճv'?4=$1{:O ‹,ޟif0XFx+mOdZ}:ʔ&HeeURfff'Imwa}ꋢ_abMQ*{SV"8'K4kaEy*MU(?޴$|EfY h j'U4m{(C 'ۊRߵe(tbB\tx<<Φ#5>M7pMn5I{@!iBNbE[?nfj˜c?:V/=D#5Vu1mI栵pYTVKcL_~ȎmPv3Pۻ-p9 ;}g;̷nno$5rӏ@NLTbHUVxnpTYxw\/5Gn¨]B]r=A{צu#'["Xib~hM~\/ifͧ edVJ2?5Q^eAx6 -vZ.ʂH$&f$F}jy;'MjK_^OJQP`E?k+A=I{b`>䯂Fip3'i_i?+I;L歴 fg +t!T I5AFVn8++~?nM vVN?ZڟIqn#7 LGMF8v}3𹤹`Zt}M`6+S!^/>?_KhWtE1`;VUrkG"xYCY#|:b]١Zb`U~HөN}!VVH#\gɂk3Dz=?OP\ OQ)̃?j ]n9 A⍎]Q$F=0xj+h]Nmi+  ΙcKM62,bvП¬7WtM;+ڗ?l"h~EM@-\B yku$l.ꕐ?r'>ڧ9UV̲ȸy3>&tڤ8RMk19E נĪ {4dcӚFh5'S>[5ŷnK|;U=MIz\FiI١ GXRt.ڝ8a$-$wd~W.^ GIln@ }iP۹,㱦sB ٹ}+Y-DHHv*TUT#mnʬ,bCivRrc.RvDpEuճ&vw{I_5 D)-PoYi㵀1?[i.t[O^7ݷlOIڧ) 蚋 Xzm46$WUwn^gaDsG]8Z/@ 1C ?]yw9\sB(0 'o*J(vM(-'e p}eأO2sC#IJh-$3K'h?Zk:!F_n DtZX^#>ŵtz"OҢKG#}辠HXޫ$S`<>IvMi-T-Bq߱Cmb b{T p;դTj? R[Y95#1n]+ B\ xpgX* +OvUuf?yp4;oO*nishk`'Lw56FCcueoHO,zӜ2qF-9*{#u*sl rZKLJ91GYϪ\~uhm9?&[ODjH{w!*D…sOqV%_`b{P*}쌉QZ#ng- )fH31ޞ~n {aO[ycڇw6X5g34!\%XA?@Uv@ q N4G9huGM!mO&Y ';@ ZJi[i2jKVzfҼH=ЏhS]W l;>k ֗QȔ~符OoҬ*$UgG w=% ?Y9)9\(ݖV5Q;dYxy~3TGMمwqbG d rj) *V6V%W=̕-{҆E9Đ>{ ),;Z.xm-$+ 7Wqm:M-a cXarm.KAVgsbUH<:m {Sz%x"[ޛ ~9у{%@Mm%H>ԶNѓ11jKezpcQJ1DJ#[iJ3Tw=ͦ@ͻ֮5-7&*thuƛ~Yҧv0>-ӈZ IӬPp&7}ni߁Ԃ.RopK t)95YȖRd[iǾGR#KvX4fPw?;m} SiN9 ߍ 0|IzrxZ`y4`,sCj*c鮀3w0MmZV[56ۖFk:^/Q14ԏa_j,O] F8]r۽ vph^춌0 ?]̜HWo3wބ#s TJ<|ѠpciM-VV}08Vm&3텍"{f 7RN¬鈏j}* &?j6JoEPmlѝqBw~-+u/[ [1r+F']6S?nŢP*U.$#no]VpF$RExHLR0{ RBha:B{s7`-þD~U*2vg)ĻXqjUm.p2*#ҏ&d ˲ֆ35;IPL%Ќ6`8o1ڸ}2 []s2m=ϿQ.J&(tTU2&znoER*.R'R IV3EN鷌{WgotfN۫sZ .\o,13YZƭF}_ gc'Mm,])qeqZ8h-45܅Idwc\6~6U]x֠dxVjr*p;:K(i9֦@X1,C6[bu϶ᙧ?Wsj,ce%*Fs1~WW+{4flfyjV,NcwQHNL["R"{p$[L->GI7l]!!ͻFATFONY؊dRZ?ڼPyAӴްa'ޥD':;&<_[http://2.bp.blogspot.com/_X6DNROdu8Fw/SMjO6T_-URI/AAAAAAAAABU/R_kQZlZK9k4/s320/IMG_2635.JPGO&bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_[http://2.bp.blogspot.com/_X6DNROdu8Fw/SMjO6T_-URI/AAAAAAAAABU/R_kQZlZK9k4/s320/IMG_2635.JPG./01X$classesZ$classname12UNSURLXNSObject#AMy] 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Fri, 19 Sep 2008 15:10:25 GMT_max-age=86400, no-transform_"attachment;filename="IMG_2635.JPG"Zimage/jpegTfife_Thu, 18 Sep 2008 15:10:25 GMTU13063U"150"./\]]^2_NSMutableDictionary\NSDictionary3./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd hmv%,1@Ee0d>O3JFIFC  !"$"$C@" A !1"AQ2aq#B3Rb$%4CrD/!1"AQa#2BqR ?SJJe O^X,NaXpu(*/uel[e?Y o )a =Q?%]U}bgMϺ9λ$Qy:ԙ;u'<ɞ钍[ew8'1KwGtK݀ EfKEQ_7ж'(P@7y tY$ǯFAO Cp*[I& evgJs (7EZ!oeȚ}ЬW1Jl,t$6]"B֛vWMq$m&|[p$*H]k8ZxAЅR,M菸ݫ4 Yu/'4c4=EYKYNʊZ!xdp /P 'sFvY(b/:s;d?H9HaE_U7 "k+[׎ $ $ioA:\JQ2h^9EÂ瘏W>1wWgZ'x bX'WOsJ^7($s6Y2|R5!u [40pTvnVw[QaSK ,0ρA諜*O &)YΧrBҰK_, }V06Cw-54a75AøDdH6H?T+\{cH n} boA[UfJܴes[/[["dm `I.ڀ!16?Di׳͜%T<,l2YLSq mָEu6%A]I#dv,>p"丹r/A!a5> yހ>evM#?鼯-VLn I~\=YKpϼ4?(R/ W0_v\Zђۥ8KSjǷG1 OBr\ѧu0;4ZvW)iNisY@]0WQxʸ@çdxtg+HTC֩/OxP,` Wuj<}M|Z0ˬ5"/a}btL6!i5 u(j@,]9u?%?Kߢĥvf;F4 ˎcbOt4fIzP7$yMKExf)ԆRU-˯}k\n}tS>-PRH. ;c[stZN˥/9^nݤ9?48JS\Ju H\wh:Eo33?^ֺh7&AQ04iak_krԣKlw݂6=:?y^nipe{E:#"O#P61IYާPs檈G@=꺀2>|cNHvW;\#\H9X{]$fF{nIFC *lZͤ$gP}ױxg>)ZVt\eQmb)<@H!9pmm6A.kDrMg n,3h[#n%e61r)LNNWdk :Gcm0ƽ ٤l!pƦ6I#;pJP/OBcRy8*RK(1VgGqo!ੌ slQ8+ d[3;p& BF2;FὉX!w_6,H96eͿuow*F9H=Q%y"C_PS MoB*><h sNyIiۚ>+p-ANuTۋӨAH[}n6D Yi"M.&uuS|C[ucip1G~Rb0,;3C#䮧q;)E=ܠkjIBOA f:vJҝ{,,T' TO{\{paugU ϊ)6Ȳ`qWY3""[[~X\:GKVEqçUjWA>itr57UwpƐJkUH&yc^^u vÝ!=A>3cWz{hi7W;>9us|JL>uMGǪ8~!%t'\jp ՏVqk~XWNIʯ /Q=ESL 1vD.cmfsMv]( L3.Xrƒ3ȮC: p[jYŵΥ?*ws"Hp)#=TCK?;Z4S L]V=Ba 6jOL4XO!^,,842Z|q|lBL6oy7nRtUe+RFg ]:VAR33 rCpO3s{{&55\]kqqE7ٞFN+EU5ɕ'6.Km\[r7 _K<6:G^/D`BVΏKiw.ȧ! 27edD9ObFc1 lO%LhlcS)+ڑӘVA CWRyA-wɨcyUV^:t_#t~&Ϗr94jdžԋHuTӵt8/,2 1 {)pf` Qc  쮩c߭E?D#{=:gp=usEU5ω$nf751&,&}F7џNv^nntmO]ҿ;,iUS l̀Loi!zu|h6u4νSZOfU$)o~'}Xo=9F2w XnOa7m;>ܩ02~y6'8쎦#UdQ=,骲t?$efjU[HߺMIFݔcZ5VH@;oFekFCʰeʵ+F}NNmLjG[nJ v (OIVNB&swQ~goTհk[l9FsckYsʥiX]=Э-H~evN舢~Ϲ:, 8\Ɣ{YïkD@Ks;Rt v8hX#ᡒJdpU_ ZMF:;rPȠ6M1,cͤs3|mhleܥMP.yWH%?c`諘}[^ 簽׷B;KY|׷3"rC{smELd\<2ݵEp oAD2gIgI"jPd벜rF XE 8>pdi咮>mE5/~1%.Km'P/z_U,lnk#.VD٭t>@ruL4T4~ )h)Y BeM/)-N*漸gw-m}/Xki8iqN)1BZYƎpX-u\7 cNq0>_+33oGґqfA\=>4>W yHo_ӯEUIy"]'Yp36[WFyR)E>.^VVw'TAI]G6rbqh'i9Cv üe.k)rΙqꎒ֬QcBZ%MdSPȣa{v$|5M5Tc-7o Y?-Ak;MUã~nЧ  m*ފi րuK-R] t}kV7ENmte0A:*Z9`r7}9ܻKFe;ZEk{**KLb{Àu=fAWB}Wɷ[b_UM\XHem%%xI#@2UofѳE(NF昆anI1WؿI,`ނ318z٫`-'C̯S2?-d!gŸ?3\ƍk7(l1k/<-!kǚ#lhqi$kk䩟F0s=Ak,2V;RAYZ{~ʯN 6*)K7):n|I464&wNk<^:zYD090kƃm}ĨOqWnxs\Nnz'r(?]B_2d*F'(7!7㴜AǷWlo6_@Ƹљ<./Cfi_W}2s!=}lkq9@ =z}Z,>GVzv(<-u(:li7!;'$xn!×OZC0s\MŜ>%R] _P} m<2STFůk Z޻rڈ,*60j\~ o]N4RB8݇!;xfγdT['p cjhoge?sƹN%&e=_XѣSR볏k@:~ٍbՆQKHWt.Aëaf\w+KMJuUV5cјݖsD}JKp7uNEL5|Lz+gĜ/oR:w>ĝ3ܝ-O iLJ5Ы+\@SӺSRնcm%S:K<N ;wZL5!*UC+\, QM_2PK^ݖE3C[y/7IMe|ep.;zYzW))Y.{`u}SdI?Iҙ0,*:3#F/fi܍a|IٝWiaX);_ë5|Os ]+]k`ut b;4/6֦?S'mVQf #I,\om}S*HAՎ$[%pQe곱$ PۺQU; {U= YmuoHGdYf P{@a8^F7jKEX@8t}4fJbIpCP^ⴌ/ot؝Cc7DS-sΜ+p,c/כt [KA"pweaof-Ŏg~ձ/[SSdꫨmAG.Sed#˗ǘMtU:-=I -4 .|Ę}-zz-uovO0*@kj?3Ek&g7/L:J)}d2=]掚*h$0TLjv444t~Vz#3bǍEVbF2.á#ݭv) 3)*m]$sHrRWRlmmVj)|'"wH q ̈́moEpDHΎ^H઩(Hq qbj .sF]M*]d<Voc2NJd76Mp{Wb+I#<6ʊ7}Qde*LNvaҶ_P8{Suܡdt[gӹҐ ֔CO%^ӎ[Do/C:9MS"%tN6]FTKNltsNñ ,ڨ.GUkZ$ĩtb'XƻWKt؟).D\<8'&G)9c/푕n(pfZΙ2j;t&uAΆF^]B"զt x=GTֶv< `Y'%",iJ:X |NL >c{;]JYX*8+NG5;U .&T%tĸ(tj@緱{&Mц)>oI ̻:8^aX{Ϩv#yM2Tԑ:uܿ*bug]ؐu"V%H8:*|uٞCܗau'x?ROSkCdvnò>aXV'\ īa;eFF:c:=Y3 P4RL/N7=nX:O#K$kA;9>:Qі<A q#hw#6`|65$#H]X8D%$nFXm2/U\6O-]O Maۺ:T|0\s?PKuޣD<aS3ӴtǢ_ [#F}:f oN]֤,BFxx}{Ic<3ŋ+jJ}F VA!=ccC !mM4`a,>6T&pn}=TYj#l5M}:CS4v"mf}hšo i =N>l^kmJ rpz8gO5MVu*ʗUJƳ`6U8޶E9*Iev*!?4 b{3odO"_/m@*ij#ůaJauʊ.6Q7w (ZKfhi?+pnPGg3I? edN TX/HZ {)T͊gPA]CT6mSIY9cib Ӯ#} YGT2<zpٰ|VJG'މ3k5B!ě54@;uy-f~KАHF^)΀g]C7'X5M1@:]n.<+E]LpL3T$m[,1ܺ ϓ |LLʪ׆Ӏ]lߒ8VVSZ;/(Cmtnq>_}:X{ `.ܱ;5挫cs88](ܮ?GN_X-pNQ 39T $iynJ͓Z岙܋3Z2fvkö5Z_bܭi͗Bi4JuHEuݘ*uE H .r7Bs_&`f{S$8na0#S窢!"_RrvQػ-*`s(hs>1ڕ1cw\<~B.ͮTh{oi@TKɕ:gd/ea忪i]Mlya~hub*wsDiG`X^+ dDwo_"c[>C%+KՂ.YI3KQlw˜%ؽ>?&@_[http://4.bp.blogspot.com/_X6DNROdu8Fw/SMjO6ra3wxI/AAAAAAAAABc/s8mLl1flgB8/s320/IMG_2640.JPGO&bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_[http://4.bp.blogspot.com/_X6DNROdu8Fw/SMjO6ra3wxI/AAAAAAAAABc/s8mLl1flgB8/s320/IMG_2640.JPG./01X$classesZ$classname12UNSURLXNSObject#AM N 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Fri, 19 Sep 2008 15:10:25 GMT_max-age=86400, no-transform_"attachment;filename="IMG_2640.JPG"Zimage/jpegTfife_Thu, 18 Sep 2008 15:10:25 GMTU13334U"170"./\]]^2_NSMutableDictionary\NSDictionary4./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd hmv%,1@Ee0d>O4JFIFC  !"$"$C@"=!1"AQaq2#B$3RbCcrE4!1AQq"2a$3B4bDRr ? #LS@-"QJoN޲NIڹz]+ NDaNj2? %CDڃE@SJ1{P he)RH=fe**mٔȦA]JҜiq|$ FY$}$ #ֱ2?T@NgAhEEP|RG ۄ!Nh5)'JOʗ Q'$Ldӥ=1B7h)\ Nj QwDp* `| aH+ltfS%"h+g?)?R$CHi)Q[:NG4Qu'43[fNT y9HџlTH>T`65be-\$9N:AyUCOZ$;v\aMnei Du!S<+9P=({ dLYM2}Nu/Qy`vٔ)O*d'5$<컌-mmx@_.*A;԰D'TA196{IW1OJǔ'ԃ(Ӏ? āS*LHޅDP9:Aԍi jרcz`2U)V1-y Մ%#zd8[I8|"HPzR m$%Q0G4T&Sa*A, i)P;vP11L)!H׶76֠ zoFBzr*+mJ͑>ReDƆm d#3REr nYbVJ}EwÉ0m#!S^mz\+%*أe}}t5u'EDFۈ@$tL6DlqE&TSj\Ъ*:%0#}SJy4BЊCppp#Zo\7kiJuD}Zq u7=bfx5!.9k&nDArYpМ幚kzEV^# >ԁQP$$oE@?j6zz0&2 4FJ*L QSsdyE$$ҢJV1TtMA&I4f0ޕ T b*.әPELitI51w=Y BWYi”:h$)&w֯-]BF2iԟgk)Yɓ4)!3R%i]#cB Bj:l# $)+=v9T1eB6j!IQH2X)1:I">FqE(Vui$OHY(.;?ފ)vV ugz2Nuc".lH0&=ETq>#͢GxTJ?_[UOF1T%eئWYsC}*VPZ*T*Oة>* ^NSLU6c.r}:J:s4ۜƙ'HՍ4#Py]YBt(kHY3K{^aҡwʯ%'x[ǘz',#ؔȆNAHJAg5µtLVKnB}>.;S-5v]2=ox2TYW@jnsmgSi+I HP=q6-$v_>[rZMWMM^_i@*V:TӤK r){Km7j4Br'1Dm+(oڊ(q=I#'Ts54S=k)J9(E({Q@0=-@;tDGnѣ1):bb1޳ jI:bAi(gJd 27#je$^5^ A]R@iY智 GzADaVZ{Q?)K| J OFh i)TqDEEA=q2^y,8i* tMrS츷mҿ/0ILJQrBM+SIHA;)~ *ܮJI$N¬O/ g&@dЪY66$9"|OZ"(Ƣ#R|[ O`緬+r5 ~߅k-8oxKS*c j_2O ʵ(E"kd?or¼ 6 $mjN ̟QfeYzUvl,o_a)%` 0jZuEHQ2{cw Fc\坎`lhI gsm}\l;¢Vʦm{a@JR$Wq)քqL܌7Vy_;lcξ5/x=B;κ3 ҀHg'5=08ۏxXP{m>g RZz+|W![nq_"u x̤V`ٱcֻr/Kp4U&d ?xOv+LPD8eӜ?[^)[.b;Yb9q>y;}j"(~m~ea@-=h:Bq>M走dܔ[| nWrε|k=z{VlZeFϩ-.eJd[7g)*[!ơpi4 PwIW) #u_\?<7V6++(jt<^OI»u"ҕ>jm\H\'& gsַ_/þ)JHaT`ZKѦ X qgZ3Y >8?lrEҷ?鯋op+C=E}ޯ'/,jE]j85msUwX!UpmjUcz8V*AEIOz (=;QĄ  $4hmʎTHƣ9Μl1SzJ`,Jˆ3DQb}iSw +T~ bM4yR>Œ BU%fIbޛ`_Xj; R;VXR iWT&LZ|'*_G Δ:t#@15*H3,-,m2TH82[byk:JH)*zSċnݸzr m^[y@)[D!d \~J]n8Ҥ;OoT R{h[]ۀ?ZV̈́ٵj򡰟r:wjҀ ;-%mtVJl„֊U+7)l P >5)2ֈKZ|Yت5xEx5pT$zp_p8crT%b Dj\Z]F ;5y|ciɛauӯm.($ʼGW\q[W ]$mlgDte]',n|i;Vd7и߇kIHU׃&e"{U-pўP^ە)rP9p.V3T!ƒ1D%1)'z;kڴ=z!P.z@Z5!ҜBT@O5(k-o S?wiV8*G-)*A"A3Ը6﯆zTNkCNњ' ᪺,Y=]HR`bڦ'HZU{&'V Ą$nelڴ PI?QU7!3\/ :Zi@x|ԈS` Zo3&6OU[zcG*Iۯ^M;)[q2 LZ*H&$jZcJIJWLF|!Q $ IRf$FGxRL mZBA9}UbJD/ғQ6jeN[ %Ⱥr8A?cTQ:~f"E 2Z>߭e;!X%X[xڈHV;k:ZAGZz*M;>VM\RHw[[UmZ+VI 5~b\W fo_ Ϙek=#|.1ƸظP6K-N繭ѕ/ ĸOORZ[H0zݿXk\):&9aM 6!5hMw)*Y[Iͮ'}L UZߛ[W=54E[e}Q}xA[}P>/8, 8aN< /[\uzU\pHGWV |Dlnҿ:U$jc֜ Z..OU)r cB*YH;rohދTI#Sqr8RޠU| IFj&1ҹsu;Q\/{ ۧl$ PDZĩHq9LC< NHVEgVnT:W2V$|hIGZQ-)ԣf("ȼSJQiL֦/0*1j OŤ#zԕ(LR4jɬjJv 9Fq^"/CJ Nެuħ:Pu2(S3)EMI d N!ϧk_.ǐ%mORH![Od#ɲ2yZiuZUK;LEjJ! 5H7LoZ@?ZuJ$(:':o5 B1z*LF{3ʑ 1Y SLXN&T:S \GN±pv6ZΖQZÄ٢na(y! _!Uw5x׶IVᡲGsZq$sz,Xaߟ"|ٞǏTSr:ZLjT8p’'07lZ F"}[2OΐdE.QcP_BT}Tէ'b2r&#l>ivKi.]$1xa㝲3R[ٺíܺRFYFN5V}5᫤p]岋j'PhW:%$PJJG/Pmjw Y=k`x^I\5-jEJ~5) W\* qaQ9*|u8oSzŢ\6#7dM!)BR6չ'k9.}ߐ,aHL'z Q#I8ӤpDOSl* J)#I{Ơ5%_)(k CkiJРPjZקQ =(RRӲ5R5H>ޕL=IIRBp{cM3zHXTo>AARA2h>Tmd-2)0LN=EŀRd U fܼ[CKmKTƞa1TF슂S4 )i z`-A;I5cƞyrJIozY95QPEu$Ϊ%ˋ$J2iG(ۤzR+R~!VEɴ `M%R# zI'H3z0ԡO\mA”1VS0;z RRtZR0U܊LadʰB鉡%DRsG^I`NF±o*L;żyN`LRgFʒF᱕:KZ4JHі<,MI9W(wSR#`#23˰O:HZS9tNQ%vQߥN\LnYX:--ĵ7Qv8ǚAS^xx%( B`sֵ xllLITjAk4xV\2!8F4Oz%w\g.6ߘW= Eղ $'PILK$8SkczўGq*r尫}<k_[*K7EhR2r$_np>)jJByR:zQotT`o  &.8TR+D4ϊwZ U邔S:щϠ~o}7di5jo\?jeRA[˸f^7ۅr0ObB^I;W s\BY*xœaí3]0}]k̼m&dz:J@dK6Tec = ՔDSVFʉrv()!˜8!D)*#&h u4Fj)ޑRC5J@sQz 3:JDצDLO- $j:YVN3֘2Ti9̏¼WhꓡiTtƕPҮ]ES?; IPlF?Tˠ$h@D)y$i;H6 *z^Z 81'zVZҮ5x6q)*{RLjsq% @ QR4_毕0$`z2tЂ9(jpubt|Jq 2?ZYc51?մFaT#jU# UJ6>6j4K$iKהhDZP+S.}Pv&ē'\;W'SM4Ȋ)4҅v:7MǍEvFgiUnN)%Y &Bu3VfS\ Qx9h|OQQ?7 _%ZbTox"gҐ鵿MݺaHR}Q]3fonY6'~L\DOjҶE8؊npnr~4#P۸e6׭1Zc&Dj7$Ck*5lj^L:x;N~:叝;2JdB"fk>IPmZ6߲2-ԕDL2̕(mV8UxDo˸iV&R1tfGNZg"Aӳ)Zdpo!A)Fƃv|c@p\7eVx˔!N+Sst0CX~jfҒq[ em6W JNƨ~7@pwO ]Öa$&>h3lWz}˸4[ V\PS+#sA9@WIN>>b嫉klRrjL((`l/.l]luą锔3Ó/ (@"~ 7Ss/~a2>Z+j?V|Pu6FB?OJ61Nv|Dnk&f_GM+u82 +xG14+RcR QmȦT$խ 7)5)'ޞsFDvC=OiyXUw r$&Db(Њ[Q=Ę6q;vxeު|c`?99uW{;lLvtۖ R3]>@5xG2+8"(V6׽V/zjʭXCD2wZSY,K/'5]AsF*BlrRdɅo1I޵w̴[NJ ~#/'tMc5KbqOnLOdjö3J\e_ Ӑj+$ͻ[4QmBRX{[V,7x?Vf{Hj&zګw*;JZG~TiG-\-4d9)$h6*#LiiljN`t5X Ɏ6ըq-S-> w۠(qC.UZ5?j*tGܓI<BC&D_[http://2.bp.blogspot.com/_X6DNROdu8Fw/SMjIBbpmViI/AAAAAAAAAAs/xoNGgAVrd5Q/s320/IMG_2619.JPGO%bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_[http://2.bp.blogspot.com/_X6DNROdu8Fw/SMjIBbpmViI/AAAAAAAAAAs/xoNGgAVrd5Q/s320/IMG_2619.JPG./01X$classesZ$classname12UNSURLXNSObject#AMe 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Fri, 19 Sep 2008 15:10:25 GMT_max-age=86400, no-transform_"attachment;filename="IMG_2619.JPG"Zimage/jpegTfife_Thu, 18 Sep 2008 15:10:25 GMTU11477T"b0"./\]]^2_NSMutableDictionary\NSDictionary,./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd hmv%,1@Ee/d=O,JFIFC  !"$"$C@" E!1AQ"a2q#B$3RCbr%&456S/!1A"2q#BQa$3 ?OvPTy7 4 uMpHDw5 IsPP)cVfB @9?+G@nO#UsYJUE,9GfknK 9$GatDgiv.iЭtnTd#.qx82Pcwuo;NEf6f򕭨fsAm̔1;^Qz' 9n^-:JY!1Ҟ͆0ejp=ePPh]NPYRc*ؙTr+T4 y{,C1&")oCJ~IԆW 7cu|lTҦbi+!_.eťi3uLCa՝KsWvV*Q'uQMOQ[ G0i=ٵWMeq"ˀTO%~Ga{T's=Akŏ:J1 }U3D#>nPoEUSS4U[j9jF F4Ҙ Ӻs j[$vZ2ZLrP2F0{'I^ Ll`j])Ú\lb rB`4)aFoxѼ=qӉ[X \׋o8ZȚ@qks+lx%KQyZѕWP}Pc0;*:co7ZEɔMq|>,t$[fn쐸c*Jios3ٍ{&WZ@NQn,%79\1/puSk^z!qؠve\{,CT;|9c7$i&ٻ-gD 5s06|+jU.M5h潄g7MswL`n&|wDxVg +7A,=RO #at+BM (/iPИ'+$mQ!I?X|\IܘfU-Jj9sf`6G.#lM]lM\iv;w ˊ[ۆH@曧!Kl7Z~w^@ є4@7 ȎByd&(L|REPN‘v' qu$\FIi.' /vt 0wX54 HdtۢVɦIFuFkhJʊaB ,W ?4!5a8ewd7 [m1Z H4}Q8lv*93CVSYTvZuGqov:hnor'+m5LR-pn9w€xa=̂6Ѿ4/drwbڎ[k).4/=l=2-sBN7y_lFd-k|\ YV+ Åi\.4ֹ#}B0ʢN\F;,Ϟ)?PW>8 ph{[{SQO4L![5m4Kц{fhQqbnnYl5lV#j"<@n߳h6~3i;XƦƗ+Jy`rtcҽEu\!ScGXn=ѲvD7s|_ﵕjkAS'NTWUGoU6Ib|rxggEwȴY[%KXkO/KAWjbA.h9kif롚/tGFKwhhb[)I3/XZLl} uRss~EB3x݇djiƦ&-?B8d|#r.Fpq%QIhEh^j:j'HziQ8cI ( 6r^`9dJR KFR$!MsShi.v6HE'M#[!P ˜|S{`cKW1Πu}>yK|DJ<#>. }CS/%Sǂ^9a4L4rYn?g3n_Zqbު5ģ*]4! PH],)- I]ڳَg|8.QwZnW!H ͢_v2N ilb]F;O.Q!f7m`R빣@e‰`5oex5Mvh `˒c";pI'@y(U*\vH`iHО(  zH74Y"M)S>heE}ӝ[c.+9|t۰)VBs]gi -u3p\Y mLS4?wg8$ޫl$ѹˇ~ c|% ?< tZRUSR涺K+ox< w%ށڠHL>|Gu%5^Ə76~[S|]qU+&ciQr=^Mdfw4oi1NT ?K$gqoD8E(Tqɩn^\\,˫\28Vw矔-UEAl4N$  8L~0 IB͋TM9xco\)eDno,;k~a?6?4^#(xq<pN~NԨ]5:XK.CvUP{8pX?E[z?&WI=g8[R[k}~I;i_Dco!cy#=;!'[a9ῆ:9=uyt#N,l5Ü:guet =:0`{% 4I%N|F׋4:MWs 04:FgH?ېWD~y_c1S 6osd:7jǾ@OwUbdC]#)k9xrchl4D=hul8e1BThϗcl1xxe ǦK-}KST蕛h>:džxܙh:i)n˟%ZClj{$7{? ܮ6z+{Y+箚61zu[a"[|."X>o HxR}} ڋc=zl2]풵7n$x"X_R2@ݹPB6#] (m; RǾwʣx҈9(ꤿ $9`9G522S"p(3l=WL(n$KOa EiG3U2QOmV L.qqr׈/IU5M10G92'>=v} K,uRQ[St$]s贵CoY$!pΜ ~V9È܅\/+Cs깣844RypWe,֑aT$'l,W g˒'$3rT >_eBV; yI$f6F<}fyj< e>xP6؆].3GOYP#ydhFyZʾ?_w/1;W>8yo#";)PRQQg~žb[%tQ5ygpNGV*Fw;axtQZ[IE Z1hf0}Yg6?16#-f\=:&Tt@m6x)C#05"AMIѴ)j*X1Y鄑FRsE)ު Uۆꍕ$]Hp~"u+8c ^Ts+-O,X[Z[]]u#h 9wJty~k:rtIyg*ƮZwh71ޡBKG( Ѥؠ?G-0n (Bw$$GNk`ة(8ۊ/m5ao#]RJKg5UQvxfkfns 9o nÍÖPyĞ$`"ˏӢxf|W+M-ΐ֣Am^>.29\1i-ᆚMOO8`m7y/Ֆjʃƙ؎v `h!9lQw|?C+}\~%E1Q,OR+E7]c'V:TA稓iA[GG a:6,6]:p`k\>P//c鏼K4{djG&o/l֐= pT+%C%L}{dG$h5'di4Hr#\c П4G8oSy+&J<{P)ЄG-6jحښ x#@ tWSPUW4pIspXj=EY)O1l-kNyo [oos82ŭfAuXyv3ʶ}Li Kf|E;,};wLU㶆׸X{#{`].VWt@:Xۻ:Ym 6igKF0{c$oQ}Ax^>\- f$eZ2W1r<4n{X*cɓ}9-lxT?9HZsS2& 䠴4h}Dϐ;,bl`T0!KN[N;3K_\:;wdk:G. -.>{݊yqWee1W$Qb̎X6jkd.uHN˲G=8 a#-Z3VA$+.QsC!k#17hdΩU*6cN\O^С D>?wi;g DGO(X#R5RUFԯk0Z>Ou*?OJ6&]w tlL$_.X7@54Hsf~>o?"9մk5yc7=;S#qUCUe쨉ŧ$Tݒ$}ۡ<,CqZ2r]!yN!;(5 RR tfMMkU0; tRmQ,9Vq=PLA>5xIg0ݫ=;-}3i$S3 c5]MQ8H5 LtCI[US۟X+׳ U8n@>9F_1oQS#GatgƜ]HfJUDQ[>,v=bm 9.Tzюo XF3#L{Kc&!Vƞ4F|MkVWS P&yk?Bh9F.mSQe nWUeK1=/UW֖hm휕+s k{Lt1;41~jG'FC5[j#QoB/r1vtFR\wC3l#D9s\ 27ؒͼD~)c <9x,l+u&8!.Z}@KQ =ٱsf5P &plVO 8mtӰc>;j# $t;;|E\\!ظʑN MwԣH|_4}%8krHWPG#tWZ,tnkW%7J=s 4I^A;d8:/;cira{&IB| rxNH?z!ORtpkG2J\[i[p_RШol_3 J"K'8夻d ?-)i`.v)`E $ʦ Hߊ3;)$㝐w)DvV3RBS-2DZ\'mv*)a3,9Oj, R, aH cH6 !ɭn7@17l|m'j(nvw^.MҒth ^sdvlV#P풼Gv\zfW;aBW TJ thU>rz.Awz3JĂrUֵ(˝p2Ab!C7  j䉝– $r4sD>f!F`ksc'%9*$3< 0Zߒ(a5퐳iAE&Q@^hzP0vEx'\o)8N~R&/(Rcnv^') e)wR9ۦ\JLc\rT id>Y*&r-3^jeyuq%lګ\`\yaۉ斨g& uAHݝPFɓ]8`ਔu|ueK.(/SLyNz*dSvuOh)Q 2==8v'Qv p(##Sc'C٧ K!9"ע]YC' %> W4왝j*&8Ms)ڻ5"!rB졽 8G;e㪟G$.L'%$8VlW'jWD^׾Ǎ7sOA9FG&H_[http://4.bp.blogspot.com/_X6DNROdu8Fw/SMjICIl123I/AAAAAAAAAA0/ubBQ9vJiH_Q/s320/IMG_2620.JPGO%bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_[http://4.bp.blogspot.com/_X6DNROdu8Fw/SMjICIl123I/AAAAAAAAAA0/ubBQ9vJiH_Q/s320/IMG_2620.JPG./01X$classesZ$classname12UNSURLXNSObject#AMX 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Fri, 19 Sep 2008 15:10:25 GMT_max-age=86400, no-transform_"attachment;filename="IMG_2620.JPG"Zimage/jpegTfife_Thu, 18 Sep 2008 15:10:25 GMTU11998T"d0"./\]]^2_NSMutableDictionary\NSDictionary../abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd hmv%,1@Ee/d=O.JFIFC  !"$"$C@" C!1AQ"2aq#B$3Rb4CrSds.!1A"2Qqa#3BC ?\Pڞy@1qޙ)PP-E#aBx1E !LJ=1"QxCRVFy!r1jk0ET. 56CEǧ/LmvH)~ #;Pc\]^SRă%Y(b h`{ TmRWMϞ*Ѳn@ g8>u(Hx$7n)#8WezCSj&OQ4%0ղ!ΐ:^e}6"Z߆ޟWDvW?ʯSRhDXe#NG<4_J6*XAp#V2զ]}$\ W˓NK0\R蠢6iWB†T)><ю H ;(F> g$WחQ2ivJ?*TiW H#4J2K4#m⤕ ԰ M!n*Q|$^R5x'Q^M_rQmc[A۵5?4g5>FTUĘCЗ:|,c)CdPޱ}SI Rqx<~u{>Qhm Ww* 0\Vycli^WMa&Zt޽o vp A ~g4DgzE"Mڤ2bˊh<^+[rkhs^0[iSӐsEג( 4U4 M>)BY. F8 x_ν@v yC`5)|>B+s44Hxɧ"3zy󮃑%Ӵ[ЦC - Q@+Zȫ8>qi-CRIvqY?Q Z5I 7q iVGR˩Zc{nXcZU%^.5lo)QZIDgj}Q#:FsǕi/!ގ\K9U=GO%~}gPpNIp}1ZWe{iqi4muK[I{R&fC52A}bČ<3F ]ΧI2[D{4.cvы&yrv+6b:W!ݻ ȣufdM͵@8*1@>*~ xh^N^ئ g3iݜ戣 WST D/{T^+DMp(Ed~#S!~*Z!id@3XԮ+TUfc#}M]wpGի }A}Ϋq$**AYkl^sOa:Ŏ)#QV[s-ujQ4{m#v*~fEɩCmkl,b6*>s⻱=Md%5 Fu!0Ȯ[V뚍C%$D)j*^%ěXۚhO-ω 2G` ,`\cA\-n Zm1G*|m frk{HJoqڦp3Wgz}uKkfUw\6|W.KG`70?Zr u꾢1\э *=Iey]D奺^B`#W_fl[!wgˉ!`O (06}TH闁-qWyG{t`kxcۑ*^FXFC!0by'Eݵ'm{h^nYCGuS#U:j {^Q I:G_3ydO0닙R>8^uԵ(,m,+b9g,s8dxI8S+yt7Jhv6o4hs-1}[O8U퓃etf3}CJMHxÃOF\xn;-ߏ5֫^[6C(#I'xc,j*hۺ&{>,muSv GO8[j]A[kRgS:6۲Es%ɆUT8lI&" 0Řy;U=GyQrpx5do qZ,B+mob㼱+!3-n }ɮ:J/"ڼ@84]~`跁o*bcެG?cZXZI?, Rլr5I94ݙyoq]݄=1ެ@^dvBb NJiXjڞڙCA)ULxRSGz@+ԙ5FM!V"ER']bIsZjPÿr)+QbJ_Ci2B|zt芧|kIkVrΨֱw GQF~5#`T;Uk#mXo VlUՍdG?=ɻ>aX. hUnd?\hy˞ ޥ&g2y<~Om y?U/l\ΤC]i]$륹4/=g^֫|X=~GS^Hn(ԚJN7 rfyeN~-nOJu'Akr{:ovņGir UC\ V;i DM M *?Vi/LY,90ҹzNqu7(DU91jU$ɻ͓W{ Y=3oί#ϺqäK˜]Td-fn}^Enwi7Drqk1jzINbO\4bc` ZOF/\p|+g-dPsEn(md΄Ty*Kw7hpz}ϖk-$2$ՒQHkHQ7x5&<4xn1M'psLwœ̪EH7F,Nmso(uݷ6:YUZ6B*<WO *{փ/TUp5RR $*cYl֟s a̾kj ^{ZFtɚm9/bgp\-eC.G#ZS{> GLp6 Y2|-Ckؑ?l% 3^T3Β&ԩv>^j7[ жbQ)8ԓ[~=> .Zƛi70j;^M*E& 1\6,rq[O u#=B8B鷡C;)2yǧjzg֭YGo\goc⾈ӬP;`bQj?q<)Wzo4+kHV4 8XTO$Fw(AV>{٥Wyf0Sd5ճLP\|z 5:/"9P݊% %{/=g[x?tL? w7z#w?z@Q%j[*,KE;N*魦擿zFkTK5<Ӕ|qbj<)8yR> Gh X *%1S_cHGG:Nơ8ZTecoWlG|<Ϛr&W)ف*W?dal^qvBJj kwZDd "c|VsBѨmQh2iW136e /52tS\jr,PHv끃TˏiZ+mc}A?P:qkwi({;>^x>b+oEI{6KYf VLxg rǭp==P\fq%6 y=#5bY+X .C}h75I᥏n#9$yv:::%nXhڤJfܙk&cSR$ԃf09O˾jҝUKY]TK[>ۏ\ޭU2NyT~^^1ƚ8%M׼5dx `1f;_`c ^f3ıEW'ӎk+ݠYyUz=qGL7=ַuɁ E6~#xS\x:G MeS ?ufG\ho w!%%?l\krEQ1%_\(JSR"[Ύ@Nxv4wڑEc\F>US2jo-hʰ֪zΘ=kK%ӏjm(VFԻ;T:~!RgFRj[c7H`m>G2h6dxdC&<}b}jfNqAֿ5P+c]N3Hȡ`lʁG5~V'@HB**䑹3ǝtb>U4Im K`F8֚mƣr{n`ncɨ[V  T;XtovxSσjY=gWCO} ).8J.C}NLQdYiVM̵1X9}IƣhVGvVh x)x5>(ӨGzh{Л3 lh/D4 ƣNA&J'L-(4iԋ?QHNJ<%qF4Tz`~ 5PMp g>$$kʚW*T)eU"h Fg:V],c*|WEcQmX(x٪?LtXF6WNdjɑv 7B?_/OX,&# 7s ib`y.+kIba[?jQM#J?䈯p6lgtĽs C>m8w{+y#ZkquI# 4{GOyV G=*KxCBy%Ϡ0i#4,>H#ι Y#yC T#`г gmrcg5 v8U(/OWg:HKm1g¨UI2Oanκ:^uZ[a}j ֆT1|nL[?g^<-.{.OҮ$b-\-I%1CoH-P@ Jg O)-JR~y*+4}_q^isopxv1 BN;MK_jW!M 8nxߠU*BmwwƶQAHMoAi9J1K Xj3J=fw4L g5oX;X źex&u@_'W$Th>Fzt&GF]}|Rf?ۉ̎HC29ebsNojxvf^jJXhF,Hkv'>uⵇ[%֑{G;KIuL:d۳jrE؆E+pN2|U?hKYRdö;ޮC@%"x-zzyҕٖ4:(SP(Hx>z*wBߵޅcs/Md]żҹwVKue86 PF ֺ!be AМ 9Y ɡ eBYߴպoLc}  sCڌw 9m&a@)O,XJtR hH=N?&i8fcF?$ Ҫ=ej>̒i* ։ ׺;Ƹk|D@>{ ҝ>?zs&}Xp޶+|tE& {%xg bܖϯҺ(w5GyRG{_ {|?E? !yVԢ 'ߏҺ-pcn,Bw#$'j9Y !]^ -m$ر/)E,W6j0PI8#,|9}ɪƝ˗_Mjvivyx$Gz8+xR$^$w9釶+d>ishfny4TQhsLrq{rIQR*aU_h]q~?G>v &Vz:%m/Tn`x?J͵ t !Ioы؉'Nq$"K+3 w'ʳ5ޣ[^ouy#;WS's(y'UˡtڭP;' ܓV>#tJBY-Lnbܒ==+H4j:~Hfy>"08`qVFL>)p۳W!Oo?[quڃvQ'v\bF-wȴ8'T?Y7rOܱ( ǜs|1'? m(QxMFʻz-alE!Nƫ]6vo >g뷣Xl9%*4[bN_HSq="OTYz<Lffڬ #>ux'&ނ\ dav^d֡`jv)DQ@n`4`mz[᳐4gcM'NqV[+&Ѯ>GxvyR T|J,sH[d%ƤC~/=z-0 $ϭ\bގF?hcgB?e\W]Zh ~ ib;$$}_zS]&mLQcp/<}3[%q(,>1udMPA#m>yK9`A{>{Z蓖4 4]>_ J֓I3U<嶇#ʜֱj sqW'VZl@ 'O7<}?ہM#ZK.RgaL_o3n~BGأ>N(+j SRBp܄犙em].<1VXl#^*Zƫ¨RrP+ T%V˟2&+(>„+jha qMf9 @C 'zwr:Sdß*˽EKu-2x_"Ccm}%6qZ&ixV{M5>vⶎ'.H.~!Sbra*\ (5L+3HEN"9Ԕ#8l88Ӭ2D |!@ZLvfKn.>&iUa4EN)\NQB 2 y@x4OB^hSޔfHXW[i$ 0 4PݹT+3P_85Ȫ' ¶]mY_MLo( K=js!{[V`}괾gl#L"{4`|t"do 6bPD?z"ڢqD ޗi,>k÷0+#m6C|Κ0{4=А<aJN6x))w (^45n+ŹQ!Ro z(MϯMH1M:@w֘ƘZZx;sK#h. @/n>UEy{ u;)X^]&DRu91&(; jlj @+prJK&L_[http://4.bp.blogspot.com/_X6DNROdu8Fw/SMjG7l1PKiI/AAAAAAAAAAc/XsnQN-AlwGo/s320/IMG_2610.JPGO%bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_[http://4.bp.blogspot.com/_X6DNROdu8Fw/SMjG7l1PKiI/AAAAAAAAAAc/XsnQN-AlwGo/s320/IMG_2610.JPG./01X$classesZ$classname12UNSURLXNSObject#AMx2 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Fri, 19 Sep 2008 15:10:25 GMT_max-age=86400, no-transform_"attachment;filename="IMG_2610.JPG"Zimage/jpegTfife_Thu, 18 Sep 2008 15:10:25 GMTU12783T"70"./\]]^2_NSMutableDictionary\NSDictionary1./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd hmv%,1@Ee/d=O1JFIFC  !"$"$C@"B!1"AQaq2B#R$b3r%4Ccႃ+!1"AQ2a#q3 ?n :? (: x 蠡ʹO^Z =()zy"mE !6+KJACv׶jp^)PP0PB9N)TPi ((Msړm:m!Z((Zk/4bSJM 9ksȣ҄a_ҤB9\Zj[3g/HW1^i(P?\QiHGx&H1AACDS8SHL(9 S,i؂z`<ށZb*SJh>ڔP-.)ix#iUiyQ@ƺ"9W \qJV4+S‴3ݹWZo'qҨ?!9%'o^j kZ;,{xtnNEWRiɆuνMF|">">JfonAsmoVf4l ۤ@iXZQEn,O?C'};w BjmPIdŷLI=\\6HruKOa?LW$1n=?9Tpȣqä$ݚLf5gi rn! c$p Ef\CfQ .76xwUMY͊kv q ^d`W"TG~柑q֤ AǥhݏU^)GEEEƹ:vӚ ^)h T]XFVcqӶC'7ٕɦRQd^kZ}eo-Q _YKGḬұ¤*\/`SPSw&II?ް66h]IV )ֽ ])uy:GRM:=rM9'!޾N5uƪg̠`3umVR'w*Dq"*۽eVkm$ۗlxO=yHYWz\Lt S۷zda3NX2pqVTm#Ja]ԫ9F[̓VmkʊhpJ=#H dc\ըKtVdD0Zudȭ%>2,Ai֓^l#(ہ,{ TiVȜVDӡGU$op}k?@BL+sÏG)N5->Kdr$S7歫tskFT?pGVXa%8<ַ֍owo 0ʁ#YgiF}1t7/l{hz7S4Fbެo;oO C5)I(F{k}QZk֚LA٩i,LG>ְ+#Tu'pt.#ֻwdR,D~In@٫|f;LNҴpE h*yp8rz}=ire4_\鎨]yiqp rz3]M,ԭn=#?.Ukm<3Y\ہ=6AJu-C[Au;M"I_ڸ#CZEKMгMC,y7%5"'qm4$cw瓚zΡnxM! . WZi 꺗8VF@T=Mh4~no-NBP czu5pz;%+!vRccr ԺFde}bT\g{t/NCj$fY'kZYtj %{\beۓhݒ>39h+ ³o: SwMǦl,P06ao%g~ p1*X;7n)IR&ox8"PFT]ESƩs46PR$dP`YN`lv/o_]?Bɨ7nmeNx?Zn,ѨsN[6a:?BLZ&}iFoi2@WZzHa,T/l}$Wy*~\-ruRG[wuZlZiHAS&Ij-~^)`J[-Q^䚑6H<1v# <~Z&g)pk}J뢬/u[E pi%{˵G yfumRY05ޑf$v1O#TL*GI/Văy ާ>vAlm+'%$,^$K(V8{OMMA S@ nUʌǩ;fMխeB;:@<o8Bo0602#-9-.ΏAh.VM3!<Ƈ%Iq 㳻Q F@ɢxq= UG?-Sj۴ {0~eVH!fGK:[rMioii DJ_L-PŸpa1G ŅB[Ϛmc܊gkU֗ ΰ;`hdH\lF}ԑ:j,8A@z=GtjFm9σl%{1+d .[$6śPVr#Gǧo\2szi~ڗ T8ִAw^#d=Z6312Pq'":XOۧs),I/?ڜ~|7NFxdYmx@Z~wc}o5Ko ` H'U&6$Q&FYMkzIa#f>mZE[r̳J裞96&O jAmx*{y!ao <1he STwVFc2Qǧ3V ٙQù ;}BTJFI"[r/;vrfąZ FHm]Dz/ҡ:3| n݆϶~4X9  }=ފDr,qW8j.e%q2b~h+ ? 1ďI'oz+b8K۹HVG̙ĹJ{C̰;HfMorX00²}Lۭ2/UK; gEvփkǷR SڔF`LT;0PyWz E^՜(70Q~苫xKF,&l[I@icj櫯#XFm~8.p+\)f Y }i, "jl Z.Mf5O\ZV+UQ$83dc8$Nm$RUoہ8/x)J)?iWP6gpN*è^(N6(\Ͻzdr5ӋFӣ=-fVQ9drc#hmzǧ4>^ͧ0ɶ,V>B G:Xخ ;޵Bմsn>[>'br݄U1dnnYpH'@լ[N% {.#HT,@a7W躶OhQF9f.) _Zw?,t+(>UG)֫^FveII_F 5Hc H'O[wHYEd+Iioz[(eb渴ÝΝRj[]fѶL;$fʏ1z7_kKE~X L&Bpr yn&丞Icyd.X&dLڮY5.?<V=׵坅vmgԭtjMۋc Y UBh[%.Tn zv+75ɾ /oeFqoVev\s(V;.+c8>[ݤ`Mgm,cנDhmKr01z/%l?OuhLXvF_i2 L4o(=Qy֞Z1=XQ6 Bʘ_SWo>L*Ṱri1WN՛þo8Ꮷީ/OIk@h;nc~}APz=6XfIJH(NH2{C3D 9%-ȦۨmenzWҵu2A|)Y\ɏ&F{ދlBZɏSAJY`>eߏNw7_>psCaNl?ZmܑZ|o5}Bm>"XwDWv2R&q2ۃtJX@(Ϟ8QېLז{[PHoϋB} {yqJu:5׏4է~ O:CS?s`kSq$~f'U3i/Ԣ4M heӝ?-0O殒ɉQ?4k )>\^=m"i𚋨\zKi0VGڞ9wX6QFWֳ6έ{ kE`6S].QMNMtJ}kMu ]mS4.;kR䑁řG8ʞ1Qt\ǩlB16?VG\Hm/a$VFp# dU;oerdHx]/jf[;E a.%y%fa~ma]OKg(M(o]gZ+RZIn@R=9TԢ)Ŵ#jѠ {Ga~եlcvoޘ4tGVpxSm[ 1gGݳeJ1V\wS2"˵s+M[·Isɷk >jXϧc4ؒ9\=9uuq=S#X1+ _߳уӾ~//:BM2%Oǹnn.$2J#~br_Lp+D'>d,>|Qk\x'Sf>oKe߇6k6:3z޾5z>Pզ瑏Uɯ*Sֵm6Rr Ҿ6ηOj.VI1hx{ilçTz<:lrL:hd\Z;kpH+E'۞{}փsf)[yǚ?.sǧc?M!`.[ǷҒI$w6Aa=?&( B e$~#ljd%Ϛ,gO,B97mbb vT9$֍tlp頑R~/fT[jn#{E_(h+nYO5m%(RaFcN~ X}=hsIT[‹)cpkJF5u22i`1bnqُך-mb " =UaᡵjYzAgBJ]GҤEY!h"c,$ҹILp#լ}HSkVRKB 8ǯN16-Zʐc{@4#sOKV?}p>S7?:܆d'O,@%\Ƈ}ᣳ1Ċbw1\zk)WWWjdh4 hn2v#i<ֶQMx"rn/ֹ-ޭu,."2NTG'Qo&K;_Ql ʲpS~?C x5v14M!!`=>u",,,[>¹=}vÏWW"׋]2o##cvQki}D`䌓ׁjO%ɵwܭǵa$Chm̹۳zUΗyy7=bC[EL ٢|1mdzG 5ck?z6)bw0 .$6w;IBJDvS\>GZ&P--N襌29OE;F$X(Zk4B90[} E].Dz|yZt;$浽.l"ݓS &N $-=G4ޞ; 梅Q}EAFpEAQڄxR R#4+VXʷ EҼb`-;WOXW˚],9It5oMʻKi0EL^S`*ex+?ԿK`VVIqn*feZm{} 1CG)\}>+O(\xQǽhmDṬi\]9CIc7R4|˻wB .jf SN^AX¹nKџ''Ӛ1{Q҄Xej w1N)<&wƚ+٩ƥniް\DEDD N?jP8ShM'zi^Փ@!)M"HȿZW{Ӡ+FHSPVNF K"KF%8"Sj=2B >$3~!DVVHh⣮]X/6nް100Kykx5܎7kI>4^4j‰CL,LPz{}AL룳3F vsWl2iR/ Ůkqsedx8Us=k~e' ҳPtNYC&Hq(p?3q:t e7T+|>,1:ɬu.N!-R-%@ISN=(.9:4 kRǣ'` 1?ڷ>a5-CAby?Xk\+َwPfml3L6Y,$֧\هzmoV.#(Cr EGdZdB*$9IqROIBR;RSzn)y5޼LdмS)-f$3FZ*51hBC ;WjA۽&y=X#gNޜ;+D"4ڐUSO8Oz͂4ſ]|GAY`q=6‘CDQv'E&! QW\ R#m(Wxl`I?zRM1񥦓TFN xk0AE4`h@1_7 BOjm#,i4==Z5\$.Njk|&Zd|+yjԓ|dacd/ZZ$m2>@)"DH`3U7c>,jtջM{#}O<fpvhrMJnwf3@ƒNPA4D=A柚4QD>(ȢgPG<4)Ӆ [ 4u4>Ԙ'mOSޕK)'ފ[МOn'4Թ/SګKִ2ItHЏ5`=) 0j3<o>Ifx.G9CE Fv{#=TӬ5UWc azᎇ1Nf-CDG$}޴LojnI*9OymElLI J>ǓNN{P8/|5T:,]ozk4lo5^-8Ҩ#TMP\EtiڌCdiiE%@( m8{!rv)/j{ =vi(4}܊,N 1OB O֓Pvh?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Fri, 19 Sep 2008 15:10:25 GMT_max-age=86400, no-transform_"attachment;filename="IMG_2613.JPG"Zimage/jpegTfife_Thu, 18 Sep 2008 15:10:25 GMTU15332T"90"./\]]^2_NSMutableDictionary\NSDictionary;./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd hmv%,1@Ee/d=O;JFIFC  !"$"$C@" L !1AQ"aq2B#R$3rSb%46CTUVs/!1AQ"2aq#B ?]Sj? R##Q. Ub!󥢂)uQd>4)j(hF~>;4?Jv:gk#4S& h:Y5ˉrV9P0ߝh0ue`{9iy\3tޤХiZeϵOi7,7p?dY/%YX-4+Nӣ݃V5 ֮u.KkVkFrvRʳKA4T& {ѐtLh[b#$aDxj&3LblmOP>Zb2bCc{ځiW?5mvFJCa>:oVzQ*?:us@phݑbJ#54rCfUGےۗJND2B4kR,ҁ3ޖH(R RC^ W{)SL<_:(.ܿ*:l3LY&TTxqKL'A (H0g7 حۊ[Z`x~kU5GND -ڊa$!4d-Q EMDֲm~ӱѝZۇ ۺ>TEG)3|Qv0ۗ 3ۗLgF4ҙؽ-^O{`mGk-. \W E\}iuhCn$(rjLz[]yoxhLנkSeYJz?7q-1Yb d$W'C{@zM1v:tW]([n6 6c>Ti[OEA%4ώA>jH>ۮZc"G:l-ঠf"6ǃaRQҬKD|M6u2.qZHJ]lHa#j<k<xx'2UՆ %k{u)5+ (~es/phmEmpAr +Tҷ 5;=pyeDIذS j݇<NȒ_C84 +c2[ iҞ{w5"zs'?k#C9NxdHXP~,:Ǫ5[5ݎNf!~p+쳕b\mqh>#\+}uXYg=[@{Z4q_HDx;Ud;E:OMs7,pąsU$GiWj0^:|e)#Mצf5l)<ZsiD2xF~ 9 ?Y~*NEq6O`a)vlx n$F5{=/[G&\721B81$au̠rFY" jZdz4cio+~}k7DvNn唊˥.ȱ{q:uooolm6HYv£īK EP4?lT}0UԮ?_N~tꤳ} w3$:wt|Z9Tޛ&k=N , :v1X$*2d{8I$x]H;Q=g,pQj=}CR0#9ҳ;ڬsv;a)Sڼii&[':Jiwk C)#6!tjo@n*U%qǞV: 6Tcs昱յ0RI w L l/ꁓ5=N,"í#>tG0?Ƥ-&)L mבhvz^ubλl $8[喟o{1{ǝFID]VCg@7[ܴd{і+f_qgwnvZDGp4ӯ׬'Tt7- ՚R?y@ pX3*H# UQh$ÏVQRX`(}ïjr YI(6U8Rxd]E]3\< ¬T-i16i3zVpfNds?w|{7e{Wlv?Qc")6⍂®O;9 bVLJQQ,GO,.wn>"9)VVђV e#tV8W`>BhB }?JX_E#E#SW򥝤y(9<ĶIcʩ)RKn>p=4K{;WU=fUJ>Ϛ?*q65)ӭPWH8SG~tvvʣ3W@@#,XNI>t|Gq*_rsދ;y@n4M?eTk31bNI~ufRTœIh}&2\|սzuۍ "jR(s} |Ax]+I~6=Mb244KI9'j%U8w#+-K?qo swJSyvA@"NX IぃV"!xROieoSeziHYn?AN'Ͽ{Gg[K {g#c} j'W\(MN){#+,SE+?EN/j(HЃG֋K`*ca2e|Io/] z rr;}qZq)?KHǍ 6#G4,#gGa6DOaPnd綅ޭwJ vd[ѷI|D{›]=nAkYbP9۱{?S`|q0Y}\,PUÐyIAIߎ슠rF~$,l A^Uf׺ 7Iy H'ruOl97hJKKW{*N#vOt.IYdmqb1vJI`$זj|9ɞIJv-ǎܬ}jC=󏻕zTVfȰ79#Oz;p dz3^5>I/zmpw^ $_W yW+77I$68YTs:X\TvnQχ^2@]RiQ J5cXn,S՞5E!EQA36׋5֡{+E(UbS="-VKeW`ΩO~;U#Zb!$pr=3[$(šyR\I͏Qj:k* ,F5~Y ^Z1'ʷWj^%Czm[\"_o% t|xqαy-SOe&wY>TZՉuZf,c&<C ?*MoC?!~9z{uM;or. w7Đ|iwÏnxPVr#RQDX}Eu}=B&cGq\P[\&xt`GVVEqhM/\;%{0~ yem,Џx}j.ÝV_*lZ*ٝ]Yc#;u#栧[sl)!{}?ZUo3o1vxMCGkt3x.dQw֨ \cqQ:JgִM11L3H4<~$h~:jyFcs>ch )+,A6{7ĩQWbhV#25<6n,FݑAjV$*dև. ѫ3+y:=ֵCS~-=Swy6I,_ pǨ>TOO[xU ؟3Vٴ;ᐈ$M7b 1Hv $-Vi=MD~\yRim{u<2\W6(SsΙ.7u5ǛF tS# KHĺO@+_j \Rtj:+WK- q)ĺ3 r܁!QPvɑ֮}l2t{k:mԔ9SO :ħ+JH|kQޠ 1R-rhvP0>մ;=Boq*"(UYEūa7ÚNyLӭ;_M#Xe[ZBvt+mf+Ag>ZLL̿ջ5$Abܿ jSU(dbVVG@Њ׵-,|@r?SHlZu>R'LJ= -.V>KySƹQvH氤(sEiz"?8ەҮ1M㓫tiq*ܞ"1?zӣH$k8\|;x[2&AttL+Ӵ,?!ѯ^{Fl3g$zSBF-68?Jfj1ϧ֗c{%Js[ (dw Q;T.y']]8`dBBEv.Yd`6<@zTGSZEyy Q0c ~Яo~T^ZʹVe\H#r[}Qv\e,+LZE xt,c֥@ɵYh༪cQhh=IoM}? @մۋ@ np7Guҙ"SxbGN7Zej )Dqn]./HNrx1ڝ^wr7h[N-Ut,LMhC=ͣeC sSJ^>B#: }PF =MGʓ*ar*4'"EE湬lQ*u%CAqC#TOе,T+.A .pSXek5՛F[5ZS>u7O V T{ѮiHLHC[(]HVwd/U<n#<"8)fN~`etPw?2[ywqL&Hw]srX=ےV$|=TRfANV'7HrrxkyS@ƒ5n? Uꞅ3^Μcؤ^2few</wwErx7GWa#FᔜФOph^%e90eu= l^5w{I 1XOͶP7ҵ~;GW6$ΔR\YkZ]O_Ǿ cЊι{ztTJHϺM(;v{z.$K]@x21ڒO5l4-i`g^ѡh~U}lr0}jѐ Vi2UfAE*}EoH|)â2m+PF`lU& . mR~5㫟 _CMiKch?Q'Im8XT}*F *5p}[dҼ񤭸^1Uv7<v^;(m42;RmGg# ={Њdl?K^u=>)~βx 1#B#0!CYSO@wtu#FGЃ )!vh3uj}--#R#G&9 >7՟طATjo-& (\c47/BEJhƴ{.#kqL,c<'wO(YZ F3{%1IgCvqC.I9Qrxens7?]sىjƾk2W%\})$ɞT̓ʒǹ77KMq5k͞oa0cb85>u%mߊd'Wuk=&ڧκSnc?rrc?wɪ]izljʐj_kǮx? ‘+|hG8{^]*JtX|-ɩZNaXs23;3ZtmFrnV;dX(]=Of5MȮ辍h})h)9ZT#J; J! @2+;q/=ɂ,$yQ΋CHFh(6aƫI:6tV>{j޻<)Ϣ2GMTF:_4*9@ˏ{>5fc,^HN(cǝc^kZΥyp@|U []Kr$.p {:O֦X,F",Oz+dn]vݯ%Q֥ow)=7u~fZb~fE&X9F2s!4T'=ʖht}Z5a+pC Lh0P0gVΈE:`i=´J2' $J{RMNٌDjʬCbqOTx%=5{FI22cf8Y"}qޏ@LW'Z޴} o&Xm\bAlIެu-V ayqneGrooiZխ{+H=.]h06 ε!%6Y%6GҒ#PrUކw"Zu=lI|nyVVN-ː7&uɢ9`c{PwCPIL K6G 0MH?ȩϾ5{N6xKh/BDIxL#COh!owvcSeՕpCv5/%͵ŞQ{b53GqOVəIg҉y3WѬrLl' zR-&m𬝮r[.UWFxq.-qW-YIr; }.ns! N~T/) JCkD4D}J([:XĒ8-sbqZb$3{݊d&F{iI-gڣ<\p=1VtZ#0ʤM7ˎAxNRtg д62\M7M#d;CzFqM=#Wxt{@=pkzŴFyj\_eڤhm?QJmHSdtֱWL2=.0@8'b^8Q${T5tR%-q=.epPQ&1NH8kCR+|23FzqT2]se%IP;,pH=76$+#@ۻދ-ZK+_\3FG$~h]yӚEZ-:E*2Y'upɣSb0MZxDRLpV3Vmt}u ĕ .z>~uNպZi/*HIʵ{O;=R&[ZS,dljU )G7g٭-OſSZlySB$},B ^1S}ZG$SjLV~˜=kf7>Ng5,̴MoJȊv 5'hWvVyy#\ V/ æY#(ݍW+͹E/o"]ɔ=k0+$ֺrDfd\uŴs)W pLr{ivgK!Us+T]|ij-Zj],!*8(F}6hjE=` )\*Pb/U“՘K6W5ػeUF('N=>4m!3a{T'GyUdj!w, 6}j噉\'5ϊ,x>ІԚG2jQ6W953Ek׳цd՗ v*w&Gg"hFnL G.'<_A3s_M8g"ߥ1`y9jȧGIjW,#TmXQ(ٟAhg],2xR8( EMg_=5Iaxl6Ϯjб{9պ?q}JvBEf*f=;ÍEƝq#fha[rWַ(K)nd3Kr#˝9P~}{{3G-,1LRi*h;Htj-}6g5XElޫ7vzj;FҴgM)iqXhiÍFIjj=/X-6 &n)߂p#&r}hM?Rc O?Zusպ&g ,wCI&pp;dΈݦ{kh.%\,lXNsbK]GI55֑oK3)v'̌W -# -{x&+oh//4Ui,n$r2ĜVkyujVu45p"Y dqIOj\I(>8ʬ I~zf dSjFUrGy‰uI$ytX ­UCZ ,) 9QzoIُInr?_ }n,#FRE%y4.k$|҅}Qj)TѰUSN(J\V"fZ1,{6*;`0F Lc[^n>iWIz'c@Mo `nj;JŤg4+ [, D;pIΟy]J'oi7<ش_(]ܞI?1ZBGxί+k{WHRn<%W BvƇݜ V>Uml,ced *|V\bIs:jqpMnALӺY|gɇш и*w>|jPZq*1Wm[r1">g?›f^+[pd?_ꭦ QKd1;|TEN܈Wy/0QGs5 nXBZLUݶ(^n2I+|ƴ5%TANnRt>Q[8a kS[մ;KDڤ2>?¬)nF%!>,8>Vt44ү ikNŒr^4m=`[Ю,z q/UDž`xoV+Vl0vnT l;6G)|cb tKn"I? ix d.p̶P3\ L &F@αjtŔЛwL,! "L{K^U}#VKtPz&PhNi&"JH[-DR628#w`XEξoQ 'M{<|a_ |-o3A ػ 3tE-qw79,o*{I86runUL[.6fk=7cc/DY#>]+B6')6>)%TrHEW U]Z|irox/5Oԣʚ5]EQ5ۻ=m}</tmum<CU:}cSteg#Os*ym4iUAySX{Oyo'A)c:{I 9,{2Kf+0_0Gǽ/~O'ϒ;t GMV"RX’'[^D[L2@8p>&.i\[)8~`aB3pvy6OSҦfK '\;~;o"&sx?P?ZErMkc3R ֲ "Hܧ/ ]O#=I FSl8el=OhC1HG>>V~bt-|TR5l߽_ўGc^9R@+CNlT⥴hL:4ɫnKY ׯ?+Wlc#1vOY w8:ֹն@'1NwI?jz]p@B8aTXW=APC" rB'-^A!kR-e>g|j-.ֿ[ȎsXWͨjXiogSy9 uWlL{;cAA];.?1H/=3] c]M1,,K?oSVgf$#j[4?M\]T+pMRۄm2[LNxRı[~u]Wwdb3(?C34XpL.q!K|Hpי oyH^;}i׶yqܦ08qޘ$gw*;,hVRw=B]=ܮ^lֳ(LrH{T4s'TRT.%CGڻ]@mwDwF˒ss*&wo]?ƞѕebn J+YnOSG6]~՟O[`ND9Qt8_~ .G~?qRDE>!-]v"vG%&CY6>V\Ȣ|d-LFy7KUUyU+yAyc柊-b#;rzV" W8-u f?GUE,\o,jItS/WwCp#VB<1&j1 qޝS3i*^wgnٮ#0=?#ZI I cc8Hj$OnqF3/y T:֥㷎X@7#ނ6#32гgc&';vs<}i ՗RZV{MLK5!;]؜яi]N\\62CŷgKY@ʪ}&H>:ǩ!`W$df㫮Ol yf4I$(-sq3M M<9LC`3|sy@klc: #j_ 3Y=Um֣5Vo1ZLtkH(e;/"y)RqmuԓeLyˍrF?Yaq's7$,.dĺǫΆV E #ݫ7}USǭ$5ʤ#'*-=ƨodJ[v?Zm J,O:dnV%[;{|J1Kn-jt)!,K՞+Vc9"ds.}3:p@rs0"lP ilXe*(Gƣ4ll1KhZS:?⚦d}M(615ɵ{Ci2:`flCM)w [>6A㹆hv'fPΉAڪPw5[q_J7! }bTV'5xԠt85Kd5f9Vv: ]TGbEE~~UuDmFq9"}y Ѳ>\b>UwZ Hh>*pojO<@H4¤TBe~uz_'xPYy8 P '1_j?RSTU_5http://img1.blogblog.com/img/icon18_wrench_allbkg.pngObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345IJKLMNOPQRSTUVW[\U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_5http://img1.blogblog.com/img/icon18_wrench_allbkg.png./01X$classesZ$classname12UNSURLXNSObject#A2 6789AWNS.keysZNS.objects:;<=>?@ BCDEFGH]Cache-ControlWExpires\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Sun, 17 Jan 2038 19:14:07 GMTYimage/pngSgwsS475_Thu, 11 Sep 2008 13:30:16 GMT_Fri, 09 May 2008 15:04:46 GMT./XYYZ2_NSMutableDictionary\NSDictionary./]^^_2_NSHTTPURLResponse]NSURLResponse)27:PRd@ENY\bktv} 1;?Cc`Yimage/pngOۉPNG  IHDRa~ePLTE J4eulec{韟Y}T|`v`w̰[qEq__^bYtRNS@fIDATx^MU1 @؁A(33CfqRϣز"@*v&g X="6Xz$/"3;R\Mb((JRpKOY0Qӆqr3rvbΆj+hr<_l}lY݀o%bd,l/ ȂN igKIENDB`WXYZ_3http://www.blogger.com/widgets/517042800-widgets.jsObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_3http://www.blogger.com/widgets/517042800-widgets.js./01X$classesZ$classname12UNSURLXNSObject#AB 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Last-Modified]Cache-ControlWExpires_Content-Encoding\Content-TypeVServerTDate_Transfer-Encoding_Wed, 03 Sep 2008 19:03:47 GMTVpublic_Sat, 11 Oct 2008 13:30:18 GMTTgzip_text/javascriptWGFE/1.3_Thu, 11 Sep 2008 13:30:18 GMTXIdentity./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd @ENY\bktv}(HOotd_text/javascriptOvar w_a=false;function w_b(a){try{throw a;}catch(b){w_c(b)}}function w_c(a,b){var c="Javascript exception: "+(b?b:"")+" "+a;if(w_d())c+=" "+a.name+": "+a.message+" ("+a.number+")";var d="";if(typeof a=="string")d=a+"\n";else for(var e in a)try{d+=e+": "+a[e]+"\n"}catch(f){}d+=w_e(w_c.caller);w_aa(c+"\n"+d,1)}var w_ba=/function (\w+)/;function w_ca(a){var b=w_ba.exec(String(a));if(b)return b[1];return""}function w_e(a){try{if(!w_d()&&!(w_f("safari")||w_f("konqueror"))&&w_f("mozilla"))return Error().stack; if(!a)return"";var b="- "+w_ca(a)+"(";for(var c=0;c0)b+=", ";var d=String(a.arguments[c]);if(d.length>40)d=d.substr(0,40)+"...";b+=d}b+=")\n";b+=w_e(a.caller);return b}catch(e){return"[Cannot get stack trace]: "+e+"\n"}}var w_da,w_g=null,w_h=false;function w_ea(){if((w_g==null||w_g.closed)&&!w_h)try{w_h=true;w_g=window.open("","debug","width=700,height=500,toolbar=no,resizable=yes,scrollbars=yes,left=16,top=16,screenx=16,screeny=16");w_g.blur();w_g.document.open();w_h= false;var a="To turn off this debugging window,hit 'D' inside the main caribou window, then close this window.
";w_i(a)}catch(b){}}function w_aa(a,b){if(!w_a){typeof w_j!="undefined"&&w_j(w_k(a));return}try{var c=(new Date).getTime()-w_da,d="["+c+"] "+w_k(a).replace(/\n/g,"
")+"
";if(b==1){d="Error: "+d+"";w_g.focus()}}catch(e){}w_i(d)}function w_i(a){if(!w_a)return;try{w_ea();w_g.document.write(a);w_g.scrollTo(0,1000000)}catch(b){}} ;function w_f(a){if(a in w_l)return w_l[a];return w_l[a]=navigator.userAgent.toLowerCase().indexOf(a)!=-1}var w_l={};function w_d(){return w_f("msie")&&!window.opera}function w_fa(a){if(typeof Error!="undefined")throw new Error(a||"Assertion Failed");else throw a;}function w_ga(a){a=a||"Assertion failed";typeof w_b!="undefined"&&w_b(a+"\n");w_fa(a)}function w_m(a,b){if(!a){b=b||"Assertion failed";w_ga(b)}}function w_ha(a,b){a.style.display=b?"":"none"}function w_ia(a,b){a.style.display=b?"block":"none"} function w_n(a,b){a.style.display=b?"inline":"none"}function w_o(a,b){if(a==null||a.className==null)return false;if(a.className==b)return true;var c=a.className.split(" ");for(var d=0;d/g;function w_k(a){if(!a)return"";return a.replace(w_ka,"&").replace(w_la,"<").replace(w_ma,">").replace(w_na,""")}var w_na=/\"/g;function w_oa(a){return document.getElementById(a)}function w_pa(a){return document.all[a]}var w_qa=document.getElementById?w_oa: w_pa;function w_j(a){try{if(window.parent!=window&&window.parent.log){window.parent.log(window.name+"::"+a);return}}catch(b){}var c=w_qa("log");if(c){var d="

"+new Date+""+a+"

";c.innerHTML=d+c.innerHTML}else window.status=a};function w_s(){}w_s.raise=function(a){if(typeof Error!="undefined")throw new Error(a||"Assertion Failed");else throw a;};w_s.fail=function(a){a=a||"Assertion failed";typeof w_b=="undefined"||w_b(a+"\n");w_s.raise(a)};w_s.isTrue=function(a,b){if(!a){if(b===undefined)b="Assertion failed";w_s.fail(b)}};w_s.equals=function(a,b,c){if(a!=b){if(c===undefined)c="AS_Assert.equals failed: <"+a+"> != <"+b+">";w_s.fail(c)}};w_s.typeOf=function(a,b,c){if(typeof a==b)return;if(a||a=="")try{if(b==w_s.TYPE_MAP[typeof a]|| a instanceof b)return}catch(d){}if(c===undefined){if(typeof b=="function"){var e=b.toString().match(/^\s*function\s+([^\s\{]+)/);if(e)b=e[1]}c="AS_Assert.typeOf failed: <"+a+"> not typeof "+b}w_s.fail(c)};w_s.TYPE_MAP={string:String,number:Number,"boolean":Boolean};w_s.numArgs=function(a,b){var c=w_s.numArgs.caller;if(c&&c.arguments.length!=a){if(b===undefined)b=c.name+" expected "+a+" arguments but received "+c.arguments.length;w_s.fail(b)}};var w_t;function w_ra(){var a=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];if(typeof XMLHttpRequest=="undefined"&&typeof ActiveXObject!="undefined"){for(var b=0;b"+c.stack);throw c;}};var w_ua=0,w_u=0;if("undefined"==typeof w_j)w_j=function(){};function w_va(a){var b=-1;try{b=a.status}catch(c){}return b}function w_wa(a){var b=null;try{b=a.statusText}catch(c){}return b}function w_xa(a,b,c,d){if(a.readyState==4)try{var e=true;if(d)try{e=!(false===d(a))}catch(f){w_j("Message ("+b+") handling failed: "+f);throw f;}var g=w_va(a);if(200===g){w_j("Message ("+b+") received after "+((new Date).getTime()-c)+" ms");try{var h=(new Date).getTime();e&&a.responseText.length&&eval(a.responseText); w_j("Message ("+b+") processing took "+((new Date).getTime()-h)+" ms")}catch(f){w_j("Message ("+b+") processing failed: "+f);alert(f+"\n"+f.stack+"\n\n"+a.responseText);throw f;}}else 204==g?w_j("Message ("+b+") received after "+((new Date).getTime()-c)+" ms"):w_j("Message ("+b+") failed with response "+g+" "+w_wa(a)+" after "+((new Date).getTime()-c)+" ms.")}finally{--w_u}}function w_ya(a,b,c){var d="";if(b){var e="";for(var f=0;f=0;)m=m.substring(0,n)+"&"+m.substring(n+1);w_j("Message ("+i+") sent: POST "+m+".");++w_u;w_sa(j,a,d,l)};var w_za=this;if(!Function.prototype.apply)Function.prototype.apply=function(a,b){var c=[],d,e;a||(a=w_za);var f=b||[];for(var g=0;g=0;b--)this[b+a]=this[b];for(var c=0;c"+a.template+"\n",c=this.Eb(b);a.parsedTemplate=this.P(c);return a};w_x.ConfigureWidget=function(a,b){b||(b="config");var c=document.forms[b].widgetId.value,d=document.forms[b].widgetType.value,e=w_A.ProcessForm(document.forms[b],a);e.success&&w_.SaveWidget(e.values,c,d)};function w_(){}w_.Init=function(a,b,c){w_.M={};w_.cc=a;w_.Ka= b;w_.Uc=c;w_.hc=null;if(!w_.cb)w_.cb={}};w_.TrapClicks=function(a){var b=w_.CreateTransparentClickTrappingDiv(a.document);document.body.appendChild(b)};w_._SetupPreview=function(){w_.TrapClicks(window)};w_.NEW_WIDGET_WINDOW_NAME="chooseWidget";w_.CHOOSE_WIDGET_ACTION="chooseWidget";w_.EDIT_WIDGET_ACTION="editWidget";w_.GetCallbackUrl=function(){return w_.Ka};w_.SetPageActionUrl=function(a,b){w_.Wa=a;w_.Mc=b};w_.GetPageActionUrl=function(){return w_.Wa};w_.SetWidgetRefreshUrl=function(a){w_.Rc=a}; w_.GetWidgetRefreshUrl=function(){return w_.Rc};w_._SetDataContext=function(a){w_.hc=a};w_._SetSystemMarkup=function(a){w_.cb=a};w_._RegisterWidget=function(a,b,c){var d=new w_x(b);c||(c=window[a]);var e=new c(d);d.Qb(e);w_.M[b.instanceId]=e;w_.DisplayWidget(e);return e};w_._RegisterNewWidget=function(a,b,c){var d=w_._RegisterWidget(a,b,c),e=d.b();e.Pb(true);return d};w_.DisplayWidget=function(a,b){var c=a.b();if(c.O()==w_w.DISPLAY_MODE_NONE)return;if(b||a.g&&a.g())c.jb();c.O()==w_w.DISPLAY_MODE_FULL&& a.h&&a.h();a.b().Hc=false};w_.GetWidget=function(a){if(w_.M)return w_.M[a];return null};w_._PopupPaneFromParams=function(a,b,c,d,e){var f="";if(d)f="&widgetId="+d;var g=w_.cc+"&action="+a+"§ionId="+b+"&widgetType="+c+f;if(window.name==e){window.location.replace(g);window.focus();return window}var h=window.open(g,e,"width=570,height=600,left=75,top=20,resizable=yes,scrollbars=yes");h.focus();return h};w_._PopupConfig=function(a){var b=a.getAttribute("id"),c=w_.GetWidget(b);if(c){var d=c.b().configWin; if(d!=null&&!d.closed){d.focus();return false}}var e="config"+b,f=w_._PopupPaneFromParams(w_.EDIT_WIDGET_ACTION,a.parentNode.getAttribute("id"),a.getAttribute("widgetType"),b,e);if(c)c.b().configWin=f;return false};w_._PopupToolbox=function(a){w_._PopupPaneFromParams(w_.CHOOSE_WIDGET_ACTION,a.parentNode.getAttribute("id"),a.getAttribute("widgetType"),a.getAttribute("id"),w_.NEW_WIDGET_WINDOW_NAME);return false};w_.DeleteWidgetFromPage=function(a,b){w_.q(b,b.LayoutsMessages.DELETING,w_.STATUS_MESSAGE_PENDING_CLASS); w_.RunPageAction("delete",{},a,b)};w_x.prototype.Ob=function(a,b){w_.q(b,b.LayoutsMessages.SAVING,w_.STATUS_MESSAGE_PENDING_CLASS);this.z("configure",a)};w_.SaveNewWidget=function(a,b,c){var d=document.getElementById("sectionId").value;a.sectionid=d;w_.q(c,c.LayoutsMessages.SAVING,w_.STATUS_MESSAGE_PENDING_CLASS);w_.RunPageAction("addnew",a,"",b)};w_.SaveWidget=function(a,b,c){w_m(c!=null,"no type");var d=_WidgetManager._GetWidget(b);w_m(d!=null,"no widget for "+b);d.b().Bb()?w_.SaveNewWidget(a,c, window):d.a.Ob(a,window)};w_._RunInitialAction=function(a){var b=w_._GetWidget(a);b&&b.b().z("initial")};w_.z=function(a,b,c,d,e){w_.RunAction(w_.Ka,a,b,c,d,e)};w_.RunPageAction=function(a,b,c,d,e){if(!w_.Wa){w_j("RunPageAction error: pageActionUrl_ is undefined. widgetid: "+c+" action: "+a);return}b.pageToken=w_.Mc;w_.RunAction(w_.Wa,a,b,c,d,e)};w_.RunAction=function(a,b,c,d,e,f){var g=["action",b,"widgetId",d,"widgetType",e,"responseType","js"];for(var h in c)if(typeof c[h]=="object")for(var i= 0;i0&&a.substring(0,4)!="http")a="http://"+a;return a};w_.GetFirstElementInElementWithClass=function(a,b){if(w_o(a,b))return a;if(a){var c=a.childNodes.length;for(var d=0;db)return LayoutsMessages.NUMBER_TOO_LARGE+" "+b;return undefined}};function w_z(){this.r=[];for(var a in w_.hc)this.r[this.r.length]=a}w_z.DEFAULT_DICTIONARY_KEY="";w_z.MAX_DICTIONARY_DEPTH=50;w_z.SEPARATOR_CHAR=".";w_z.prototype.N=function(a,b){this.r.length>=w_z.MAX_DICTIONARY_DEPTH&&w_s.raise("Cannot add another dictionary: "+ a);a.indexOf(w_z.SEPARATOR_CHAR)>-1&&w_s.raise("Cannot add dictionary name containing '.': "+a);var c={};c.name=a;c.data=b;this.r[this.r.length]=c};w_z.prototype.za=function(a){var b=this.r[this.r.length-1];b.name!=a&&w_s.raise("Dictionary "+a+" is not the last one, and can't be deleted: "+b.name);this.r.splice(this.r.length-1,1)};w_z.prototype.X=function(a){if(a==null)a=w_z.DEFAULT_DICTIONARY_KEY;for(var b=this.r.length-1;b>=0;--b)if(this.r[b].name==a)return this.r[b].data;return null};w_z.prototype.na= function(){return this.X(w_z.DEFAULT_DICTIONARY_KEY)};w_z.prototype.fb=function(a){this.N(w_z.DEFAULT_DICTIONARY_KEY,a)};w_z.prototype.k=function(a){var b=this.X(a);if(b)return b;var c=a.split(w_z.SEPARATOR_CHAR);if(c.length==1){b=this.na();return b[a]}b=this.X(c[0]);var d=0;if(b)d=1;else b=this.na();for(var e=d;e=500){if(b.responseText.length)document.body.innerHTML=b.responseText;else alert(LayoutsMessages.SERVER_ERROR);return false}return a?a(b):true}};function w_C(a){this.a=a}w_C.WIDGET_TYPE_NAME="AdSense";w_C.prototype.d=function(){return w_C.WIDGET_TYPE_NAME};w_C.prototype.b=function(){return this.a};w_C.prototype.c=function(a,b){this.a.i(b)};var _AdSenseView=w_C;function w_D(a){this.a=a;this.e=a.l()}w_D.WIDGET_TYPE_NAME="BlogArchive";w_D.POST_LIST_CLASS="posts";w_D.INTERVAL_EXPANDED_VALUE="expanded";w_D.INTERVAL_COLLAPSED_VALUE="collapsed";w_D.LOADING_MSG="loading...";w_D.POST_COUNT_CLASS="post-count";w_D.POST_COUNT_LINK_CLASS="post-count-link";w_D.MENU_ROOT_ID="ArchiveMenu";w_D.TOGGLE_OPEN_CLASS="toggle-open";w_D.Gc="▼ ";w_D.dc="► ";w_D.prototype.d=function(){return w_D.WIDGET_TYPE_NAME};w_D.prototype.b=function(){return this.a};w_D.prototype.g= function(){return false};w_D.prototype.c=function(a,b){if(a=="configure")this.a.i(b);else if(a=="getTitles")this.Vb(b);else{this.widgetInfo.data=b;w_.DisplayWidget(this)}};w_D.prototype.h=function(){var a={};a.select=function(i){return i&&w_o(i,"toggle")};var b=this.a.t("ArchiveList");if(!b)return;var c=w_r(this.e.rootElement,a),d;if(c.length>0&&c[0].currentStyle)d=c[0].parentNode.currentStyle.color;for(var e=0;e"+e.title+"";c.appendChild(f)}};w_D.prototype.rb=function(a){var b=this.e.rootElement.getElementsByTagName("A");for(var c in b){var d=b[c];if(d.href==a)return d.parentNode}};w_D.prototype.Cb=function(a){var b=a.getElementsByTagName("UL");if(b.length>0&&!w_o(b[0],"posts"))return;var c=this.tb(a),d=a.getElementsByTagName("LI"),e=d.length;return e-1};w_E.prototype.ta=function(a){a=a||window.event;var b=a.target||a.srcElement;this.a.z("nextposts",{path:b.href}); return false};w_E.prototype.hb=function(a){var b="";if(document.selection)b=document.selection.createRange().text;else if(window.getSelection)b=window.getSelection();else if(document.getSelection)b=document.getSelection();window.open(a+"?t="+encodeURIComponent(b)+"&u="+encodeURIComponent(window.location.href)+"&n="+encodeURIComponent(document.title),"bloggerForm","scrollbars=no,width=475,height=300,top=175,left=75,status=yes,resizable=yes");return false};var _BlogView=w_E;w_F.Id={BLOGS:"blogs",CONTAINER:"container",SHOW_ALL:"show-all",SHOW_N:"show-n"};function w_F(a){this.a=a;this.e=a.l()}w_F.WIDGET_TYPE_NAME="BlogList";w_F.prototype.ia=null;w_F.prototype.T=null;w_F.prototype.d=function(){return w_F.WIDGET_TYPE_NAME};w_F.prototype.b=function(){return this.a};w_F.prototype.g=function(){return false};w_F.prototype.c=function(a,b){a=="configure"&&this.a.i(b)};w_F.prototype.h=function(){var a=this.a.k();this.ia=a.totalItems;this.T=a.numItemsToShow;if(this.T!=0&&this.ia> this.T){var b=this.a.p(w_F.Id.SHOW_ALL);b.onclick=this.db.bind(this);var c=this.a.p(w_F.Id.SHOW_N);c.onclick=this.db.bind(this)}var d=this.ec.bind(this),e=window;if(e.addEventListener)e.addEventListener("load",d,false);else if(e.attachEvent)e.attachEvent("onload",d);else e.onload=d};w_F.prototype.db=function(){var a=this.a.p(w_F.Id.BLOGS),b=a.getElementsByTagName("li");for(var c=this.T;cc){a.height=Math.round(c/a.width*a.height);a.width=c}a.style.visibility="visible"};w_L.prototype.c=function(a,b){a=="configure"&&this.a.i(b)};var _ImageView=w_L;function w_M(a,b,c,d,e,f,g,h){this.o=a;this.$b=b!="null"?b:null;this.mc=c;this.kc=d;this.lc=e;this.xc=f;this.nc=g;this.Nc=h;this.w=-1;this.C=-1;this.D=null;this.s=document.getElementById(this.o+"_picImg");this.ba=document.getElementById(this.o+"_changeImageLink");this.fa=document.getElementById(this.o+"_imageChoiceTable");this.ic=document.getElementById(this.o+"_imgSrcFromPCRadio");this.jc=document.getElementById(this.o+"_imgSrcFromWebRadio");this.j=document.getElementById(this.o+"_imgFileNameInput"); this.S=document.getElementById(this.o+"_imgUrlTextInput");this.Yb=window.frames[this.o+"_asynchronousFileUploadIframe"];this.Pa=0;this.m=new Image;this.m.onload=this.hitch(this,this.uc);this.m.onerror=this.hitch(this,this.tc);this.fc=false;this.Ta=null;this.n=null;this.I=null;this.Xa=false}w_M.prototype.Sa=function(){return this.ic.checked};w_M.prototype.uc=function(){this.Pa=0;w_A.ClearError(this.o+"_imgUrlTextError");w_A.ClearError(this.o+"_imgFileNameError");if(!this.Sa()||this.w==0){this.w=this.m.width; this.C=this.m.height;this.D=this.m.src}var a=1,b=1;if(this.m.width>300)a=300/this.m.width;if(this.m.height>300)b=300/this.m.height;var c=Math.min(a,b);this.s.style.width=Math.round(this.m.width*c)+"px";this.s.style.height=Math.round(this.m.height*c)+"px";this.s.src=this.m.src;this.s.style.display="";this.fa.style.display="none";this.ba.style.display="";this.j.disabled=true;this.mc&&this.mc.call({},this.s.src,this.D,this.w,this.C)};w_M.prototype.K=function(a,b,c,d){if(a){w_A.SetError(this.o+"_imgFileNameError", b);w_A.ClearError(this.o+"_imgUrlTextError")}else{w_A.SetError(this.o+"_imgUrlTextError",b);w_A.ClearError(this.o+"_imgFileNameError")}this.s.style.display="none";this.fa.style.display="";this.ba.style.display="none";this.j.disabled=false;this.kc&&this.kc.call({},c,d)};w_M.prototype.tc=function(){if(this.Pa<2){this.Pa++;var a=this.m.src;this.m.src="";this.F(a)}else this.K(this.Sa(),WidgetMessages.SIV_INVALID_URL,this.s.src)};w_M.prototype.hitch=function(a,b){return function(){b.apply(a,arguments)}}; w_M.prototype.F=function(a){this.ab();this.m.src=a};w_M.prototype.La=function(a){var b=a||window.event;if(window.event){b.returnValue=false;b.cancelBubble=true}else{b.preventDefault();b.stopPropagation()}this.s.style.display="none";this.ba.style.display="none";this.fa.style.display="";this.j.disabled=false;this.S.value="";this.Ya();this.Xa=true;this.lc&&this.lc.call({})};w_M.prototype.Qa=function(){this.ic.checked="true";this.S.value="";this.ab();this.pc();this.fc=true;try{this.n.submit()}catch(a){this.K(true, WidgetMessages.SIV_INVALID_URL,this.n.value)}this.oc()};w_M.prototype.H=function(){var a=this.Yb.document.result;a||this.K(true,WidgetMessages.SIV_INVALID_URL,this.j.value);if(a.hasErrors)a.errors.length>0?this.K(true,a.errors[0].message,this.j.value,a.Ic):this.K(true,WidgetMessages.SIV_INVALID_URL,this.j.value,a.Ic);else{var b=Math.max(a.origWidth,a.origHeight),c=this.Oa();if(this.w!=0&&c!=-1&&b>c){var d=c/b;this.w=Math.round(a.origWidth*d);this.C=Math.round(a.origHeight*d)}else{this.w=a.origWidth; this.C=a.origHeight}this.D=a.mainSrc;this.F(a.thumbSrc)}};w_M.prototype.Ra=function(a){var b=a||window.event;if(b.keyCode==9)return;this.jc.checked="true";this.Ta!=null&&window.clearTimeout(this.Ta);var c=this.hitch(this,function(){if(this.Xa||this.m.src!=this.S.value.toLowerCase()){this.Ya();this.F(this.S.value.toLowerCase())}this.Xa=false});this.Ta=window.setTimeout(c,1000)};w_M.prototype.Ua=function(a){this.jc.checked=true;this.S.value=a;this.F(a)};w_M.prototype.ab=function(){this.s.src="img/icon_inprogress.gif"; this.s.style.width="200px";this.s.style.height="200px";this.s.style.display="";this.fa.style.display="none";this.ba.style.display="none"};w_M.prototype.pc=function(){if(!this.n){this.n=document.createElement("form");this.n.action="imageUpload.do";this.n.method="POST";this.n.target=this.Yb.name;this.n.encoding="multipart/form-data";this.n.style.display="none";if(this.$b){var a=document.createElement("input");a.type="hidden";a.name="blogID";a.value=this.$b;this.n.appendChild(a)}var b=document.createElement("input"); b.type="hidden";b.name="sectionWidth";b.id="sectionWidth";this.n.appendChild(b);var c=document.createElement("input");c.type="hidden";c.name="photoUploadSecurityToken";c.value=this.Nc;this.n.appendChild(c);document.body.appendChild(this.n)}var d=this.Oa();if(d==-1)d=1600;document.getElementById("sectionWidth").value=d;this.I={parent:this.j.parentNode,nextSibling:this.j.nextSibling};this.j.parentNode.removeChild(this.j);this.n.appendChild(this.j)};w_M.prototype.oc=function(){this.n.removeChild(this.j); this.I&&this.I.nextSibling?this.I.parent.insertBefore(this.j,this.I.nextSibling):this.I.parent.appendChild(this.j)};w_M.prototype.Ya=function(){var a=document.createElement("input");a.type="file";a.name=this.j.name;a.id=this.j.id;a.onchange=this.j.onchange;var b=this.j.nextSibling;b==null?this.j.parentNode.appendChild(a):this.j.parentNode.insertBefore(a,b);this.j.parentNode.removeChild(this.j);this.j=a};w_M.prototype.Oa=function(){return this.xc==-1&&this.nc?this.nc():this.xc};function w_N(){this.usiContainers= []}var w_Ga=new w_N;w_N.prototype.Ma=function(a,b,c,d,e,f,g,h){this.usiContainers[a]=new w_M(a,b,eval(c),eval(d),eval(e),f,eval(g),h);return this.usiContainers[a]};w_N.prototype.ea=function(a){return this.usiContainers[a]};w_N.prototype.H=function(a){var b=this.ea(a);b&&b.fc&&b.H()};var _UploadSimpleImage=w_Ga;w_N.prototype._createUsiContainer=w_N.prototype.Ma;w_N.prototype._getUsiContainer=w_N.prototype.ea;w_N.prototype._channelResultArrived=w_N.prototype.H;w_M.prototype._changeImage=w_M.prototype.La; w_M.prototype._imgUrlFileOnChange=w_M.prototype.Qa;w_M.prototype._imgUrlTextOnKeyUp=w_M.prototype.Ra;w_M.prototype._loadInitialUrl=w_M.prototype.Ua;w_M.prototype._loadImageFromUrl=w_M.prototype.F;function _singleImageConfig_successfulUploadCallback(a,b,c,d){window.singleImageConfig_thumbImageUrl=a;window.singleImageConfig_imageUrl=b;window.singleImageConfig_imageWidth=c;window.singleImageConfig_imageHeight=d;var e=document.getElementById("shrinkToFitRow");if(e)e.style.visibility="hidden"}function _singleImageConfig_resetCallback(){window.singleImageConfig_imageUrl=null;var a=document.getElementById("shrinkToFitRow");if(a)a.style.visibility="visible"}function _SIV_getScaledContainerWidth(){return document.getElementById("checkShrink").checked? _SIV_getContainerWidth():-1}function _SIV_getContainerWidth(){var a=document.getElementById("sectionId").value,b=150;if(w_.IsOpenerReachable(window)&&window.opener.document.getElementById(a)&&window.opener.document.getElementById(a).clientWidth>0)b=window.opener.document.getElementById(a).clientWidth;return b}function _SIV_setConfigurationOptions(){if(window.singleImageConfig_imageUrl==null){w_.q(window,WidgetMessages.SIV_NO_IMAGE,w_.STATUS_MESSAGE_BAD_CLASS);return}var a=document.forms.config.widgetId.value, b=_SIV_getContainerWidth(),c=document.getElementById("checkShrink").checked,d=window.singleImageConfig_imageWidth,e=window.singleImageConfig_imageHeight;if(c){var f=1;if(d>b){f=b/d;d=b;e=Math.round(e*f)}}var g={originalUrl:window.singleImageConfig_imageUrl,originalWidth:window.singleImageConfig_imageWidth,originalHeight:window.singleImageConfig_imageHeight,displayUrl:window.singleImageConfig_thumbImageUrl,displayWidth:d,displayHeight:e,sectionWidth:b,shrinkToFit:c,title:document.getElementById("title").value, caption:document.getElementById("imageCaption").value,link:document.getElementById("link").value,securityToken:document.forms.config.securityToken.value};w_.SaveWidget(g,a,w_L.WIDGET_TYPE_NAME)};function w_O(a){this.a=a;this.e=a.l()}w_O.successfulUploadCallback=function(a,b,c,d){w_O.Oc=a;w_O.D=b;w_O.w=c;w_O.C=d;var e=document.getElementById("shrinkToFitRow");if(e)e.style.visibility="hidden";e=document.getElementById("shrinkToFitMessageRow");if(e)e.style.visibility="hidden"};w_O.resetCallback=function(){w_O.D=null;var a=document.getElementById("shrinkToFitRow");if(a)a.style.visibility="visible";a=document.getElementById("shrinkToFitMessageRow");if(a)a.style.visibility="visible"};w_O.getScaledContainerWidth= function(){return document.getElementById("checkShrink").checked?w_O.getContainerWidth():-1};w_O.getContainerWidth=function(){var a=document.getElementById("sectionId").value,b=600;if(w_.IsOpenerReachable(window)&&window.opener.document.getElementById(a))b=window.opener.document.getElementById(a).clientWidth;return b};w_O.WIDGET_TYPE_NAME="Header";w_O.prototype.d=function(){return w_O.WIDGET_TYPE_NAME};w_O.prototype.g=function(){return false};w_O.prototype.b=function(){return this.a};w_O.prototype.c= function(a,b){this.a.i(b)};w_O.FilterMap={title:w_A.GetRequiredStringFilter(),description:null,imagePlacement:null,useImage:null,securityToken:null};w_O.ConfigureWidget=function(){var a=document.forms.config.widgetId.value,b=document.forms.config.widgetType.value,c=w_A.ProcessForm(document.forms.config,w_O.FilterMap),d=w_O.getContainerWidth();if(c.success){if(w_O.D){var e=w_O.w,f=w_O.C,g=document.getElementById("checkShrink").checked;if(g){var h=1;if(e>d){h=d/e;e=d;f=Math.round(f*h)}}c.values.originalUrl= w_O.D;c.values.originalWidth=w_O.w;c.values.originalHeight=w_O.C;c.values.displayUrl=w_O.Oc;c.values.displayWidth=e;c.values.displayHeight=f;c.values.sectionWidth=d;c.values.shrinkToFit=g}c.values.securityToken=document.forms.config.securityToken.value;w_.SaveWidget(c.values,a,b);return true}else return false};w_O.hideImageOptions=function(){document.getElementById("imageOptions").style.display="none";return false};w_O.showImageOptions=function(){document.getElementById("imageOptions").style.display= "";return false};var _HeaderView=w_O;_HeaderView.prototype=w_O.prototype;_HeaderView._ConfigureWidget=_HeaderView.ConfigureWidget;_HeaderView._hideImageOptions=_HeaderView.hideImageOptions;_HeaderView._showImageOptions=_HeaderView.showImageOptions;_HeaderView._successfulUploadCallback=_HeaderView.successfulUploadCallback;_HeaderView._resetCallback=_HeaderView.resetCallback;_HeaderView._getScaledContainerWidth=_HeaderView.getScaledContainerWidth;_HeaderView._getContainerWidth=_HeaderView.getContainerWidth;function w_P(a,b){this.a=a;this.e=a.l();this.Qc=b}w_P.prototype.b=function(){return this.a};w_P.prototype.d=function(){return this.Qc};w_P.prototype.c=function(a,b){a=="configure"&&this.a.i(b)};w_P.ConfigureWidget=function(a){setFormAndSubmit();var b=document.forms.stuffform.widgetId.value,c=document.forms.stuffform.securityToken.value,d=document.getElementById("textarea"),e=document.getElementById("title"),f=d.value;if(a=="Text")f=f.replace(/\n/g,"
");var g={content:f,title:e.value,securityToken:c}; w_.SaveWidget(g,b,a)};function w_Q(a){w_P.call(this,a,"Text")}w_Q.inherits(w_P);w_Q.ConfigureWidget=function(){w_P.ConfigureWidget("Text")};function w_R(a){w_P.call(this,a,"HTML")}w_R.inherits(w_P);w_R.ConfigureWidget=function(){w_P.ConfigureWidget("HTML")};var _TextView=w_Q;_TextView.prototype=w_Q.prototype;_TextView._ConfigureWidget=_TextView.ConfigureWidget;var _HTMLView=w_R;_HTMLView.prototype=w_R.prototype;_HTMLView._ConfigureWidget=_HTMLView.ConfigureWidget;function w_H(a){document.write('
Notify Blogger about objectionable content on this page.
You flagged this blog as having objectionable content.
]navbar-iframebfjosw{cde_9http://www.blogger.com/v-css/navbar/3328360018-navbar.cssObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_9http://www.blogger.com/v-css/navbar/3328360018-navbar.css./01X$classesZ$classname12UNSURLXNSObject#A+ 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Cache-ControlWExpires_Content-Encoding\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Fri, 16 Oct 2009 13:30:15 GMTTgzipXtext/cssWGFE/1.3S897_Thu, 11 Sep 2008 13:30:15 GMT_Wed, 03 Sep 2008 19:03:47 GMT./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd FKT_bhqz|)0PU^fjdO/* Copyright 2008 Google, Inc. All rights reserved. */ body { padding:0; margin:0; font-family:"Trebuchet MS",Verdana,Arial,Sans-serif; font-size:100%; white-space:nowrap; } a { text-decoration:none; } #b-navbar { height:29px; border-bottom:1px solid #024; font-size:.85em; line-height:.85em; } #b-navbar #b-logo { position:absolute; top:.15em; left:5px; } #b-navbar #b-logo #navbar-logo { width:24px; height:24px; } /* Hide visually, leave in for screenreaders */ #b-navbar #b-logo span { display:block; position:absolute; left:-9000px; } #b-search { margin:0 0 0 34px; padding:4px 1em 3px .5em; } #b-search td { vertical-align:middle; } #b-query { margin:0 .5em 0 0; } .btn { border-top:1px solid; border-bottom:1px solid; margin:0 .5em 0 1px; padding:0; font-size:.80em; line-height:.85em; text-transform:uppercase; white-space:nowrap; cursor:pointer; cursor:hand; } .btn div { border-left:1px solid; border-right:1px solid; margin:0 -1px; padding:.21em .3em; height:.85em; position:relative; } .btn div img { /* can't leave it in the flow because IE will screw up the line-height */ position:absolute; top:.2em; left:.3em; } #bt-flag-body, #bt-unflag-body { padding-left:1em; } #bt-unflag-body { display:none; } .flagged #bt-flag-body { display:none; } .flagged #bt-unflag-body { display:block; } /* drop down for the flag as objectionable button */ #flagi, #unflagi { display:none; top:3px; color:#000; background-color:#ff9; border:1px solid #333; z-index:300; padding:4px; font-size:.7em; line-height:.8em; } #flagi a, #unflagi a { color:#3366cc; text-decoration:underline; } .b-mobile { display:none; } #b-sms { margin:0 0 0 100px; padding:4px 7px; line-height:1em; font-size:100%; text-align:left; } #b-sms a { margin-right:.5em; line-height:1em; } #b-sms a:hover { text-decoration:underline; } @media handheld { body .b-mobile { display:block; } body #b-search, body #flagi, body #unflagi { display:none; } /* Some phones can't handle the positioning hack, so hide this */ body #b-navbar #b-logo span { display:none; } }ghi_4http://www.blogger.com/v-css/navbar/1297325411-1.cssObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_4http://www.blogger.com/v-css/navbar/1297325411-1.css./01X$classesZ$classname12UNSURLXNSObject#AMyq 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Encoding\Content-TypeVServerTDate^Content-Length]Last-Modified_Fri, 23 Oct 2009 15:10:25 GMTVpublicTgzipXtext/cssWGFE/1.3_Thu, 18 Sep 2008 15:10:25 GMTS282_Wed, 03 Sep 2008 19:03:47 GMT./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd AFOZ]cluw~$DKPYadO/* Copyright 2008 Google, Inc. All rights reserved. */ body { color:#fff; } a, .btn div { color:#9cf; } a:hover { color:#fff; } #navbar-logo { background-image:url("../../img/navbar/1/logobar.png"); } #b-navbar { background-color:#036; border-bottom:1px solid #024; } #b-search { background:#147 url("../../img/navbar/1/corner.gif") no-repeat left bottom; } #b-query { border:1px solid #47a; } .btn, .btn div { border-color: #47a; } .btn div:hover { background-color: #47a; }klmn_8http://www.blogger.com/v-js/3625575137-cookies.common.jsObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_8http://www.blogger.com/v-js/3625575137-cookies.common.js./01X$classesZ$classname12UNSURLXNSObject#Au 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Cache-ControlWExpires_Content-Encoding\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Fri, 16 Oct 2009 13:30:15 GMTTgzip_application/x-javascriptWGFE/1.3S685_Thu, 11 Sep 2008 13:30:15 GMT_Wed, 03 Sep 2008 19:03:47 GMT./\]]^2_NSMutableDictionary\NSDictionary:./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd EJS^agpy{(/OTow{d_application/x-javascriptO:// Copyright 2005, Google Inc. // // Operations on cookies that are common across our pages. // // Original Author: Pal Takacsi-Nagy (pal@google.com) /** * Sets a Cookie with the given name and value. * * name Name of the cookie * value Value of the cookie * [expires] Expiration date of the cookie (default: end of current session) * [path] Path where the cookie is valid (default: path of calling document) * [domain] Domain where the cookie is valid * (default: domain of calling document) * [secure] Boolean value indicating if the cookie transmission requires a * secure transmission */ function setCookie(name, value, domain, expires, path, secure) { document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } /** * Gets the value of the specified cookie. * * name Name of the desired cookie. * * Returns a string containing value of specified cookie, * or null if cookie does not exist. */ function getCookie(name) { var dc = document.cookie; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else { begin += 2; } var end = document.cookie.indexOf(";", begin); if (end == -1) { end = dc.length; } return unescape(dc.substring(begin + prefix.length, end)); } pqmr_9http://www.blogger.com/v-app/scripts/1019856700-common.jsObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_9http://www.blogger.com/v-app/scripts/1019856700-common.js./01X$classesZ$classname12UNSURLXNSObject#Ag 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Last-Modified]Cache-ControlWExpires_Content-Encoding\Content-TypeVServerTDate_Transfer-Encoding_Wed, 03 Sep 2008 19:03:47 GMTVpublic_Fri, 16 Oct 2009 13:30:15 GMTTgzip_application/x-javascriptWGFE/1.3_Thu, 11 Sep 2008 13:30:15 GMTXIdentity./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd FKT_bhqz|.NUuzd O// Copied from .../google3/javascript/common.js //------------------------------------------------------------------------ // This file contains common utilities and basic javascript infrastructure. // // Notes: // * Press 'D' to toggle debug mode. // // Functions: // // - Assertions // DEPRECATED: Use assert.js // AssertTrue(): assert an expression. Throws an exception if false. // Fail(): Throws an exception. (Mark block of code that should be unreachable) // AssertEquals(): assert that two values are equal. // AssertNumArgs(): assert number of arguments for the function // AssertType(): assert that a value has a particular type // // - Cookies // SetCookie(): Sets a cookie. // ExpireCookie(): Expires a cookie. // GetCookie(): Gets a cookie value. // // - Dynamic HTML/DOM utilities // MaybeGetElement(): get an element by its id // GetElement(): get an element by its id // GetParentNode(): Get the parent of an element // GetAttribute(): Get attribute value of a DOM node // SetInnerHTML(): set the inner HTML of a node // GetInnerHTML(): get the inner HTML of a node // ClearInnerHTML(): clear the inner HTML of a node // SetCssStyle(): Sets a CSS property of a node. // GetStyleProperty(): Get CSS property from a style attribute string // ShowElement(): Show/hide element by setting the "display" css property. // ShowBlockElement(): Show/hide block element // SetButtonText(): Set the text of a button element. // AppendNewElement(): Create and append a html element to a parent node. // CreateDIV(): Create a DIV element and append to the document. // CreateIFRAME(): Create an IFRAME and append to the document. // HasClass(): check if element has a given class // AddClass(): add a class to an element // RemoveClass(): remove a class from an element // // - Window/Screen utiltiies // GetPageOffsetLeft(): get the X page offset of an element // GetPageOffsetTop(): get the Y page offset of an element // GetPageOffset(): get the X and Y page offsets of an element // GetPageOffsetRight() : get X page offset of the right side of an element // GetPageOffsetRight() : get Y page offset of the bottom of an element // GetScrollTop(): get the vertical scrolling pos of a window. // GetScrollLeft(): get the horizontal scrolling pos of a window // IsScrollAtEnd(): check if window scrollbar has reached its maximum offset // ScrollTo(): scroll window to a position // ScrollIntoView(): scroll window so that an element is in view. // GetWindowWidth(): get width of a window. // GetWindowHeight(): get height of a window // GetAvailScreenWidth(): get available screen width // GetAvailScreenHeight(): get available screen height // GetNiceWindowHeight(): get a nice height for a new browser window. // Open{External/Internal}Window(): open a separate window // CloseWindow(): close a window // // - DOM walking utilities // AnnotateTerms(): find terms in a node and decorate them with some tag // AnnotateText(): find terms in a text node and decorate them with some tag // // - String utilties // HtmlEscape(): html escapes a string // HtmlUnescape(): remove html-escaping. // QuoteEscape(): escape " quotes. // CollapseWhitespace(): collapse multiple whitespace into one whitespace. // Trim(): trim whitespace on ends of string // IsEmpty(): check if CollapseWhiteSpace(String) == "" // IsLetterOrDigit(): check if a character is a letter or a digit // ConvertEOLToLF(): normalize the new-lines of a string. // HtmlEscapeInsertWbrs(): HtmlEscapes and inserts s (word break tags) // after every n non-space chars and/or after or before certain special chars // // - TextArea utilities // GetCursorPos(): finds the cursor position of a textfield // SetCursorPos(): sets the cursor position in a textfield // // - Array utilities // FindInArray(): do a linear search to find an element value. // DeleteArrayElement(): return a new array with a specific value removed. // CloneObject(): clone an object, copying its values recursively. // CloneEvent(): clone an event; cannot use CloneObject because it // suffers from infinite recursion // // - Formatting utilities // PrintArray(): used to print/generate HTML by combining static text // and dynamic strings. // ImageHtml(): create html for an img tag // FormatJSLink(): formats a link that invokes js code when clicked. // MakeId3(): formats an id that has two id numbers, eg, foo_3_7 // // - Miscellaneous // IsDefined(): returns true if argument is not undefined //------------------------------------------------------------------------ // browser detection var agent = navigator.userAgent.toLowerCase(); var is_ie = (agent.indexOf('msie') != -1); //var is_ie5 = (agent.indexOf('msie 5') != -1 && document.all); var is_konqueror = (agent.indexOf('konqueror') != -1); var is_safari = (agent.indexOf('safari') != -1) || is_konqueror; var is_nav = !is_ie && !is_safari && (agent.indexOf('mozilla') != -1); var is_win = (agent.indexOf('win') != -1); delete agent; var BACKSPACE_KEYCODE = 8; var COMMA_KEYCODE = 188; // ',' key var DEBUG_KEYCODE = 68; // 'D' key var DELETE_KEYCODE = 46; var DOWN_KEYCODE = 40; // DOWN arrow key var ENTER_KEYCODE = 13; // ENTER key var ESC_KEYCODE = 27; // ESC key var LEFT_KEYCODE = 37; // LEFT arrow key var RIGHT_KEYCODE = 39; // RIGHT arrow key var SPACE_KEYCODE = 32; // space bar var TAB_KEYCODE = 9; // TAB key var UP_KEYCODE = 38; // UP arrow key var SHIFT_KEYCODE = 16; // This is a "constant" but has different values depending on the browser var semicolon_keycode = (is_ie ? 186 : 59); var MAX_EMAIL_ADDRESS_LENGTH = 320; // 64 + '@' + 255 var MAX_SIGNATURE_LENGTH = 1000; // 1000 chars of maximum signature //------------------------------------------------------------------------ // Assertions // DEPRECATED: Use assert.js //------------------------------------------------------------------------ /** * DEPRECATED: Use assert.js */ function raise(msg) { if (typeof Error != 'undefined') { throw new Error(msg || 'Assertion Failed'); } else { throw (msg); } } /** * DEPRECATED: Use assert.js * * Fail() is useful for marking logic paths that should * not be reached. For example, if you have a class that uses * ints for enums: * * MyClass.ENUM_FOO = 1; * MyClass.ENUM_BAR = 2; * MyClass.ENUM_BAZ = 3; * * And a switch statement elsewhere in your code that * has cases for each of these enums, then you can * "protect" your code as follows: * * switch(type) { * case MyClass.ENUM_FOO: doFooThing(); break; * case MyClass.ENUM_BAR: doBarThing(); break; * case MyClass.ENUM_BAZ: doBazThing(); break; * default: * Fail("No enum in MyClass with value: " + type); * } * * This way, if someone introduces a new value for this enum * without noticing this switch statement, then the code will * fail if the logic allows it to reach the switch with the * new value, alerting the developer that he should add a * case to the switch to handle the new value he has introduced. * * @param {string} opt_msg to display for failure * DEFAULT: "Assertion failed" */ function Fail(opt_msg) { if (opt_msg === undefined) opt_msg = 'Assertion failed'; if (IsDefined(DumpError)) DumpError(opt_msg + '\n'); raise(opt_msg); } /** * DEPRECATED: Use assert.js * * Asserts that an expression is true (non-zero and non-null). * * Note that it is critical not to pass logic * with side-effects as the expression for AssertTrue * because if the assertions are removed by the * JSCompiler, then the expression will be removed * as well, in which case the side-effects will * be lost. So instead of this: * * AssertTrue( criticalComputation() ); * * Do this: * * var result = criticalComputation(); * AssertTrue(result); * * @param {anything} expression to evaluate * @param {string} opt_msg to display if the assertion fails * */ function AssertTrue(expression, opt_msg) { if (!expression) { if (opt_msg === undefined) opt_msg = 'Assertion failed'; Fail(opt_msg); } } /** * DEPRECATED: Use assert.js * * Asserts that two values are the same. * * @param {anything} val1 * @param {anything} val2 * @param {string} opt_msg to display if the assertion fails */ function AssertEquals(val1, val2, opt_msg) { if (val1 != val2) { if (opt_msg === undefined) { opt_msg = "AssertEquals failed: <" + val1 + "> != <" + val2 + ">"; } Fail(opt_msg); } } /** * DEPRECATED: Use assert.js * * Asserts that a value is of the provided type. * * AssertType(6, Number); * AssertType("ijk", String); * AssertType([], Array); * AssertType({}, Object); * AssertType(ICAL_Date.now(), ICAL_Date); * * @param {anything} value * @param {constructor function} type * @param {string} opt_msg to display if the assertion fails */ function AssertType(value, type, opt_msg) { // for backwards compatability only if (typeof value == type) return; if (value || value == "") { try { if (type == AssertTypeMap[typeof value] || value instanceof type) return; } catch (e) { /* failure, type was an illegal argument to instanceof */ } } if (opt_msg === undefined) { if (typeof type == 'function') { var match = type.toString().match(/^\s*function\s+([^\s\{]+)/); if (match) type = match[1]; } opt_msg = "AssertType failed: <" + value + "> not typeof "+ type; } Fail(opt_msg); } var AssertTypeMap = { 'string' : String, 'number' : Number, 'boolean' : Boolean }; /** * DEPRECATED: Use assert.js * * Asserts that the number of arguments to a * function is num. For example: * * function myFunc(one, two, three) [ * AssertNumArgs(3); * ... * } * * myFunc(1, 2); // assertion fails! * * Note that AssertNumArgs does not take the function * as an argument; it is simply used in the context * of the function. * * @param {int} number of arguments expected * @param {string} opt_msg to display if the assertion fails */ function AssertNumArgs(num, opt_msg) { var caller = AssertNumArgs.caller; // This is not supported in safari 1.0 if (caller && caller.arguments.length != num) { if (opt_msg === undefined) { opt_msg = caller.name + ' expected ' + num + ' arguments ' + ' but received ' + caller.arguments.length; } Fail(opt_msg); } } //------------------------------------------------------------------------ // Cookies //------------------------------------------------------------------------ var ILLEGAL_COOKIE_CHARS_RE = /[\s;]/ /** * Sets a cookie. * The max_age can be -1 to set a session cookie. To expire cookies, use * ExpireCookie() instead. * * @param name The cookie name. * @param value The cookie value. * @param opt_max_age The max age in seconds (from now). Use -1 to set a * session cookie. If not provided, the default is -1 (i.e. set a session * cookie). * @param opt_path The path of the cookie, or null to not specify a path * attribute (browser will use the full request path). If not provided, the * default is '/' (i.e. path=/). * @param opt_domain The domain of the cookie, or null to not specify a domain * attribute (brower will use the full request host name). If not provided, * the default is null (i.e. let browser use full request host name). * @return Void. */ function SetCookie(name, value, opt_max_age, opt_path, opt_domain) { value = '' + value; AssertTrue((typeof name == 'string' && typeof value == 'string' && !name.match(ILLEGAL_COOKIE_CHARS_RE) && !value.match(ILLEGAL_COOKIE_CHARS_RE)), 'trying to set an invalid cookie'); if (!IsDefined(opt_max_age)) opt_max_age = -1; if (!IsDefined(opt_path)) opt_path = '/'; if (!IsDefined(opt_domain)) opt_domain = null; var domain_str = (opt_domain == null) ? '' : ';domain=' + opt_domain; var path_str = (opt_path == null) ? '' : ';path=' + opt_path; var expires_str; // Case 1: Set a session cookie. if (opt_max_age < 0) { expires_str = ''; // Case 2: Expire the cookie. // Note: We don't tell people about this option in the function doc because // we prefer people to use ExpireCookie() to expire cookies. } else if (opt_max_age == 0) { // Note: Don't use Jan 1, 1970 for date because NS 4.76 will try to convert // it to local time, and if the local time is before Jan 1, 1970, then the // browser will ignore the Expires attribute altogether. var pastDate = new Date(1970, 1 /*Feb*/, 1); // Feb 1, 1970 expires_str = ';expires=' + pastDate.toUTCString(); // Case 3: Set a persistent cookie. } else { var futureDate = new Date(Now() + opt_max_age * 1000); expires_str = ';expires=' + futureDate.toUTCString(); } document.cookie = name + '=' + value + domain_str + path_str + expires_str; } var EXPIRED_COOKIE_VALUE = 'EXPIRED'; /** * Expires a cookie. * * @param name The cookie name. * @param opt_path The path of the cookie, or null to expire a cookie set at * the full request path. If not provided, the default is '/' (i.e. path=/). * @param opt_domain The domain of the cookie, or null to expire a cookie set * at the full request host name. If not provided, the default is null (i.e. * cookie at full request host name). * @return Void. */ function ExpireCookie(name, opt_path, opt_domain) { SetCookie(name, EXPIRED_COOKIE_VALUE, 0, opt_path, opt_domain); } /** Returns the value for the first cookie with the given name * @param name : string * @return a string or the empty string if no cookie found. */ function GetCookie(name) { var nameeq = name + "="; var cookie = String(document.cookie); for (var pos = -1; (pos = cookie.indexOf(nameeq, pos + 1)) >= 0;) { var i = pos; // walk back along string skipping whitespace and looking for a ; before // the name to make sure that we don't match cookies whose name contains // the given name as a suffix. while (--i >= 0) { var ch = cookie.charAt(i); if (ch == ';') { i = -1; // indicate success break; } else if (' \t'.indexOf(ch) < 0) { break; } } if (-1 === i) { // first cookie in the string or we found a ; var end = cookie.indexOf(';', pos); if (end < 0) { end = cookie.length; } return cookie.substring(pos + nameeq.length, end); } } return ""; } //------------------------------------------------------------------------ // Time //------------------------------------------------------------------------ function Now() { return (new Date()).getTime(); } //------------------------------------------------------------------------ // Dynamic HTML/DOM utilities //------------------------------------------------------------------------ // Gets a element by its id, may return null function MaybeGetElement(win, id) { return win.document.getElementById(id); } // Same as MaybeGetElement except that it throws an exception if it's null function GetElement(win, id) { var el = win.document.getElementById(id); if (!el) { DumpError("Element " + id + " not found."); } return el; } // Gets elements by its id/name // IE treats getElementsByName as searching over ids, while Moz use names. // so tags must have both id and name as the same string function GetElements(win, id) { return win.document.getElementsByName(id); } // Gets the parent of a html element. function GetParentNode(n) { try { return n.parentNode; } catch (e) { // n.parentNode may throw a permission-denied exception on mozilla // (e.g. on text element), ignore this exception. return n; } } function IsDescendant(parent, child) { do { if (parent === child) return true; child = GetParentNode(child); } while (child && child !== document.body); return false; } // Get attribute value of a DOM node function GetAttribute(node, attribute) { if (!node.getAttribute) { return null; } var attr = node.getAttribute(attribute); if (is_ie && attribute == "style") { return attr.value; } else { return attr; } } // Sets inner html of a html element function SetInnerHTML(win, id, html) { try { GetElement(win, id).innerHTML = html; } catch (ex) { DumpException(ex); } } // Gets inner-html of a html element function GetInnerHTML(win, id) { try { return GetElement(win, id).innerHTML; } catch (ex) { DumpException(ex); return ""; } } // Clears inner html of a html element function ClearInnerHTML(win, id) { try { GetElement(win, id).innerHTML = ""; } catch (ex) { DumpException(ex); } } // Sets a CSS style of an element function SetCssStyle(win, id, name, value) { try { var elem = GetElement(win, id); elem.style[name] = value; } catch (ex) { DumpException(ex); } } // Get CSS property from a style attribute string function GetStyleProperty(style, name) { var i = style.indexOf(name); if (i != -1) { var j = style.indexOf(";", i); if (j == -1) { j = style.length; } // the +1 below is for the colon following the attribute name return CollapseWhitespace(style.substring(i + name.length + 1, j)); } return null; } // Show/hide an element. function ShowElement(el, show) { el.style.display = show ? "" : "none"; } // Show/hide a block element. // ShowElement() doesn't work if object has an initial class with display:none function ShowBlockElement(el, show) { el.style.display = show ? "block" : "none"; } // Show/hide an inline element. // ShowElement() doesn't work when an element starts off display:none. function ShowInlineElement(el, show) { el.style.display = show ? "inline" : "none"; } // Set the text of a button. This is to get around a bug in mozilla, // where we can't set the text of a button by setting innerHTML. function SetButtonText(button, text) { button.childNodes[0].nodeValue = text; } // Append a new HTML element to a HTML node. function AppendNewElement(win, parent, tag) { var e = win.document.createElement(tag); parent.appendChild(e); return e; } // Finds the child with the given ID, or null if there is node. // This does not search the children's children. function FindChildWithID(parent, id) { var el; for (el = parent.firstChild; el && el.id != id; el = el.nextSibling) { // skip } return el; } // Adds a disabled option to the given menu function AddMenuDisabledOption(win, menu, html) { var op = AppendNewElement(win, menu, 'OPTION'); op.disabled = true; op.innerHTML = html; return op; } // Adds a option to the given menu function AddMenuOption(win, menu, value, html) { var op = AppendNewElement(win, menu, 'OPTION'); op.value = value; op.innerHTML = html; return op; } // Create a new DIV (append it to the end of the document) function CreateDIV(win, id) { var div = MaybeGetElement(win, id); if (!div) { div = AppendNewElement(win, win.document.body, "div"); div.id = id; } return div; } // Create a new IFRAME (append it to the end of the document) function CreateIFRAME(win, id, url) { var iframe = MaybeGetElement(win, id); if (!iframe) { // We cannot create an IFRAME directly (IE doesn't allow it), so we // create a DIV and then insert an IFRAME. // We also give the IFRAME a name (same as id) var div = AppendNewElement(win, win.document.body, "div"); div.innerHTML = ""; iframe = GetElement(win, id); } return iframe; } // Create a new TR containing the given td's function Tr(win, tds) { var tr = win.document.createElement("TR"); for (var i = 0; i < tds.length; i++) { tr.appendChild(tds[i]); } return tr; } // Create a new TD, with an optional colspan function Td(win, opt_colspan) { var td = win.document.createElement("TD"); if (opt_colspan) { td.colSpan = opt_colspan; } return td; } // Check if an element has a given class function HasClass(el, cl) { if (el == null || el.className == null) return false; var classes = el.className.split(" "); for (var i = 0; i < classes.length; i++) { if (classes[i] == cl) { return true; } } return false; } // Add a class to element function AddClass(el, cl) { if (HasClass(el, cl)) return; el.className += " " + cl; } // Remove a class from an element function RemoveClass(el, cl) { if (el.className == null) return; var classes = el.className.split(" "); var result = []; var changed = false; for (var i = 0; i < classes.length; i++) { if (classes[i] != cl) { if (classes[i]) { result.push(classes[i]); } } else { changed = true; } } if (changed) { el.className = result.join(" "); } } // Performs an in-order traversal of the tree rooted at the given node // (excluding the root node) and returns an array of nodes that match the // given selector. The selector must implement the method: // // boolean select(node); // // This method is a generalization of the DOM method "getElementsByTagName" // function GetElementsBySelector(root, selector) { var nodes = []; for (var child = root.firstChild; child; child = child.nextSibling) { AddElementBySelector_(child, selector, nodes); } return nodes; } // Recursive helper for GetElemnetsBySelector() function AddElementBySelector_(root, selector, nodes) { // First test the parent if (selector.select(root)) { nodes.push(root); } // Then recurse through the children for (var child = root.firstChild; child; child = child.nextSibling) { AddElementBySelector_(child, selector, nodes); } } //------------------------------------------------------------------------ // Window/screen utilities // TODO: these should be renamed (e.g. GetWindowWidth to GetWindowInnerWidth // and moved to geom.js) //------------------------------------------------------------------------ // Get page offset of an element function GetPageOffsetLeft(el) { var x = el.offsetLeft; if (el.offsetParent != null) x += GetPageOffsetLeft(el.offsetParent); return x; } // Get page offset of an element function GetPageOffsetTop(el) { var y = el.offsetTop; if (el.offsetParent != null) y += GetPageOffsetTop(el.offsetParent); return y; } // Get page offset of an element function GetPageOffset(el) { var x = el.offsetLeft; var y = el.offsetTop; if (el.offsetParent != null) { var pos = GetPageOffset(el.offsetParent); x += pos.x; y += pos.y; } return {x: x, y: y}; } function GetPageOffsetRight(el) { return GetPageOffsetLeft(el) + el.offsetWidth; } function GetPageOffsetBottom(el) { return GetPageOffsetTop(el) + el.offsetHeight; } // Get the y position scroll offset. function GetScrollTop(win) { // all except Explorer if ("pageYOffset" in win) { return win.pageYOffset; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "scrollTop" in win.document.documentElement) { return win.document.documentElement.scrollTop; } // other Explorers else if ("scrollTop" in win.document.body) { return win.document.body.scrollTop; } return 0; } // Get the x position scroll offset. function GetScrollLeft(win) { // all except Explorer if ("pageXOffset" in win) { return win.pageXOffset; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "scrollLeft" in win.document.documentElement) { return win.document.documentElement.scrollLeft; } // other Explorers else if ("scrollLeft" in win.document.body) { return win.document.body.scrollLeft; } return 0; } /** * Checks if window scrollbar has reached its maximum offset * * @param win a window object * @param opt_isHoriz true if horizontal bar, false if vertical */ function IsScrollAtEnd(win, opt_isHoriz) { var total = (opt_isHoriz) ? document.body.offsetWidth : document.body.offsetHeight; var inner = (opt_isHoriz) ? GetWindowWidth(win) : GetWindowHeight(win); var offset = (opt_isHoriz) ? GetScrollLeft(win) : GetScrollTop(win); return (inner + offset >= total || total < inner); } // Scroll window to pos // position: 0 = top, 0.5 = middle, 1 = bottom function ScrollTo(win, el, position) { var y = GetPageOffsetTop(el); y -= GetWindowHeight(win) * position; win.scrollTo(0, y); } // Scroll so that as far as possible the entire element is in view. var ALIGN_BOTTOM = 'b'; var ALIGN_MIDDLE = 'm'; var ALIGN_TOP = 't'; function ScrollIntoView(win, el, alignment) { var el_top = GetPageOffsetTop(el); var el_bottom = el_top + el.offsetHeight; var win_top = GetScrollTop(win); var win_height = GetWindowHeight(win); var win_bottom = win_top + win_height; // Out of view? if (el_top < win_top || el_bottom > win_bottom) { var scrollto_y; if (alignment == ALIGN_BOTTOM) { scrollto_y = el_bottom - win_height + 5; } else if (alignment == ALIGN_MIDDLE) { scrollto_y = (el_top + el_bottom) / 2 - win_height/2; } else { scrollto_y = el_top - 5; // ALIGN_TOP } Debug("Scrolling to " + scrollto_y); win.scrollTo(0, scrollto_y); } } function IsElementVisible(win, id) { var el = MaybeGetElement(win, id); if (el == null) { return false; } var el_top = GetPageOffsetTop(el); var el_bottom = el_top + el.offsetHeight; var win_top = GetScrollTop(win); var win_bottom = win_top + GetWindowHeight(win); if (el_top >= win_top && el_bottom <= win_bottom) { return true; } return false; } function GetWindowWidth(win) { // all except Explorer if ("innerWidth" in win) { return win.innerWidth; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "clientWidth" in win.document.documentElement) { return win.document.documentElement.clientWidth; } // other Explorers else if ("clientWidth" in win.document.body) { return win.document.body.clientWidth; } return 0; } function GetWindowHeight(win) { // all except Explorer if ("innerHeight" in win) { return win.innerHeight; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "clientHeight" in win.document.documentElement) { return win.document.documentElement.clientHeight; } // other Explorers else if ("clientHeight" in win.document.body) { return win.document.body.clientHeight; } return 0; } function GetAvailScreenWidth(win) { return win.screen.availWidth; } function GetAvailScreenHeight(win) { return win.screen.availHeight; } // Returns a "nice" window height. // Use the screen height. (Or should we use the height of the current window?) function GetNiceWindowHeight(win) { return Math.floor(0.8 * GetAvailScreenHeight(win)); } // Used for horizontally centering a new window of the given width in the // available screen. Set the new window's distance from the left of the screen // equal to this function's return value. // Params: width: the width of the new window // Returns: the distance from the left edge of the screen for the new window to // be horizontally centered function GetCenteringLeft(win, width) { return (win.screen.availWidth - width) >> 1; } // Used for vertically centering a new window of the given height in the // available screen. Set the new window's distance from the top of the screen // equal to this function's return value. // Params: height: the height of the new window // Returns: the distance from the top edge of the screen for the new window to // be vertically aligned. function GetCenteringTop(win, height) { return (win.screen.availHeight - height) >> 1; } /* * Opens a child popup window that has no browser toolbar/decorations. * (Copied from caribou's common.js library with small modifications.) * * @param url the URL for the new window (Note: this will be unique-ified) * @param opt_name the name of the new window * @param opt_width the width of the new window * @param opt_height the height of the new window * @param opt_center if true, the new window is centered in the available screen * @param opt_hide_scrollbars if true, the window hides the scrollbars * @param opt_noresize if true, makes window unresizable * @param opt_blocked_msg message warning that the popup has been blocked * @return a reference to the new child window */ function Popup(url, opt_name, opt_width, opt_height, opt_center, opt_hide_scrollbars, opt_noresize, opt_blocked_msg) { if (!opt_height) { opt_height = Math.floor(GetWindowHeight(window.top) * 0.8); } if (!opt_width) { opt_width = Math.min(GetAvailScreenWidth(window), opt_height); } var features = "resizable=" + (opt_noresize ? "no" : "yes") + "," + "scrollbars=" + (opt_hide_scrollbars ? "no" : "yes") + "," + "width=" + opt_width + ",height=" + opt_height; if (opt_center) { features += ",left=" + GetCenteringLeft(window, opt_width) + "," + "top=" + GetCenteringTop(window, opt_height); } return OpenWindow(window, url, opt_name, features, opt_blocked_msg); } /* * Opens a new window. Returns the new window handle. Tries to open the new * window using top.open() first. If that doesn't work, then tries win.open(). * If that still doesn't work, prints an alert. * (Copied from caribou's common.js library with small modifications.) * * @param win the parent window from which to open the new child window * @param url the URL for the new window (Note: this will be unique-ified) * @param opt_name the name of the new window * @param opt_features the properties of the new window * @param opt_blocked_msg message warning that the popup has been blocked * @return a reference to the new child window */ function OpenWindow(win, url, opt_name, opt_features, opt_blocked_msg) { var newwin = OpenWindowHelper(top, url, opt_name, opt_features); if (!newwin || newwin.closed || !newwin.focus) { newwin = OpenWindowHelper(win, url, opt_name, opt_features); } if (!newwin || newwin.closed || !newwin.focus) { if (opt_blocked_msg) alert(opt_blocked_msg); } else { // Make sure that the window has the focus newwin.focus(); } return newwin; } /* * Helper for OpenWindow(). * (Copied from caribou's common.js library with small modifications.) */ function OpenWindowHelper(win, url, name, features) { var newwin; if (features) { newwin = win.open(url, name, features); } else if (name) { newwin = win.open(url, name); } else { newwin = win.open(url); } return newwin; } //------------------------------------------------------------------------ // DOM walking utilities //------------------------------------------------------------------------ function MaybeEscape(str, escape) { return escape ? HtmlEscape(str) : str; } //------------------------------------------------------------------------ // Window data //------------------------------------------------------------------------ // Gets an array, which can store data for the window. This data // is deleted when the window is unloaded. var windata = []; function GetWindowData(win) { var data = windata[win.name]; if (!data) { windata[win.name] = data = []; } return data; } // Clear js data for a window. function ClearWindowData(win_name) { if (windata[win_name]) { windata[win_name] = null; } } //------------------------------------------------------------------------ // String utilities //------------------------------------------------------------------------ // Do html escaping var amp_re_ = /&/g; var lt_re_ = //g; // Convert text to HTML format. For efficiency, we just convert '&', '<', '>' // characters. // Note: Javascript >= 1.3 supports lambda expression in the replacement // argument. But it's slower on IE. // Note: we can also implement HtmlEscape by setting the value // of a textnode and then reading the 'innerHTML' value, but that // that turns out to be slower. // Params: str: String to be escaped. // Returns: The escaped string. function HtmlEscape(str) { if (!str) return ""; return str.replace(amp_re_, "&").replace(lt_re_, "<"). replace(gt_re_, ">").replace(quote_re_, """); } /** converts html entities to plain text. It covers the most common named * entities and numeric entities. * It does not cover all named entities -- it covers &{lt,gt,amp,quot,nbsp}; but * does not handle some of the more obscure ones like &{ndash,eacute};. */ function HtmlUnescape(str) { if (!str) return ""; return str. replace(/&#(\d+);/g, function (_, n) { return String.fromCharCode(parseInt(n, 10)); }). replace(/&#x([a-f0-9]+);/gi, function (_, n) { return String.fromCharCode(parseInt(n, 16)); }). replace(/&(\w+);/g, function (_, entity) { entity = entity.toLowerCase(); return entity in HtmlUnescape.unesc ? HtmlUnescape.unesc[entity] : '?'; }); } HtmlUnescape.unesc = { lt: '<', gt: '>', quot: '"', nbsp: ' ', amp: '&' }; // Replace multiple spaces with   to retain whitespace formatting // in addition to escaping '&', '<', and '>'. var dbsp_re_ = / /g; var ret_re_ = /\r/g; var nl_re_ = /\n/g; function HtmlWhitespaceEscape(str) { str = HtmlEscape(str); str = str.replace(dbsp_re_, "  "); str = str.replace(ret_re_, ""); str = str.replace(nl_re_, "
"); return str; } // Escape double quote '"' characters in addition to '&', '<', '>' so that a // string can be included in an HTML tag attribute value within double quotes. // Params: str: String to be escaped. // Returns: The escaped string. var quote_re_ = /\"/g; function QuoteEscape(str) { return HtmlEscape(str).replace(quote_re_, """); } var JS_SPECIAL_RE_ = /[\'\\\r\n\b\"<>&]/g; function JSEscOne_(s) { if (!JSEscOne_.js_escs_) { var escapes = {}; escapes['\\'] = '\\\\'; escapes['\''] = '\\047'; escapes['\n'] = '\\n'; escapes['\r'] = '\\r'; escapes['\b'] = '\\b'; escapes['\"'] = '\\042'; escapes['<'] = '\\074'; escapes['>'] = '\\076'; escapes['&'] = '\\046'; JSEscOne_.js_escs_ = escapes; } return JSEscOne_.js_escs_[s]; } /** convert a string to a javascript string literal. This function has the * property that the return value is also already html escaped, so the output * can be embedded in an html handler attribute. */ function ToJSString(s) { return "'" + s.toString().replace(JS_SPECIAL_RE_, JSEscOne_) + "'"; } // converts multiple ws chars to a single space, and strips // leading and trailing ws var spc_re_ = /\s+/g; var beg_spc_re_ = /^ /; var end_spc_re_ = / $/; function CollapseWhitespace(str) { if (!str) return ""; return str.replace(spc_re_, " ").replace(beg_spc_re_, ""). replace(end_spc_re_, ""); } var newline_re_ = /\r?\n/g; var spctab_re_ = /[ \t]+/g; var nbsp_re_ = /\xa0/g; function StripNewlines(str) { if (!str) return ""; return str.replace(newline_re_, " "); } function CanonicalizeNewlines(str) { if (!str) return ""; return str.replace(newline_re_, '\n'); } function HtmlifyNewlines(str) { if (!str) return ""; return str.replace(newline_re_, "
"); } function NormalizeSpaces(str) { if (!str) return ""; return str.replace(spctab_re_, " ").replace(nbsp_re_, " "); } // URL encodes the string. function UrlEncode(str) { return encodeURIComponent(str); } function Trim(str) { if (!str) return ""; return str.replace(/^\s+/, "").replace(/\s+$/, ""); } function EndsWith(str, suffix) { if (!str) return !suffix; return (str.lastIndexOf(suffix) == (str.length - suffix.length)); } // Check if a string is empty function IsEmpty(str) { return CollapseWhitespace(str) == ""; } // Check if a character is a letter function IsLetterOrDigit(ch) { return ((ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z") || (ch >= '0' && ch <= '9')); } // Check if a character is a space character function IsSpace(ch) { return (" \t\r\n".indexOf(ch) >= 0); } // Converts any instances of "\r" or "\r\n" style EOLs into "\n" (Line Feed), // and also trim the extra newlines and whitespaces at the end. var eol_re_ = /\r\n?/g; var trailingspc_re_ = /[\n\t ]+$/; function NormalizeText(str) { return str.replace(eol_re_, "\n").replace(trailingspc_re_, ""); } // Inserts s (word break tag) after every n non-space chars and/or // after or before certain special chars. The input string should be plain // text that has not yet been HTML-escaped. // Params: // str: The string to insert s into. // n: The maximum number of consecutive non-space characters to allow before // adding a . To turn off this rule (i.e. if you only want to add // breaks based on special characters), pass in the value -1. // chars_to_break_after: The list of special characters (concatenated into a // string) after which a should be added, if there is no natural // break at that point. To turn off this rule, pass in the empty string. // chars_to_break_before: The list of special characters (concatenated into a // string) before which a should be added, if there is no natural // break at that point. To turn off this rule, pass in the empty string. // Returns: The string str htmlescaped, and with s inserted according to // the rules specified by the other arguments. function HtmlEscapeInsertWbrs(str, n, chars_to_break_after, chars_to_break_before) { AssertNumArgs(4); var out = ''; var strpos = 0; var spc = 0; for (var i = 1; i < str.length; ++i) { var prev_char = str.charAt(i - 1); var next_char = str.charAt(i); if (IsSpace(next_char)) { spc = i; } else if (i - spc == n || chars_to_break_after.indexOf(prev_char) != -1 || chars_to_break_before.indexOf(next_char) != -1) { out += HtmlEscape(str.substring(strpos, i)) + ''; strpos = i; spc = i; } } out += HtmlEscape(str.substr(strpos)); return out; } // Converts a string to its canonicalized label form. var illegal_chars_re_ = /[ \/(){}&|\\\"\000]/g; function CanonicalizeLabel(str, lowercase) { var uppercase = str.replace(illegal_chars_re_, '-'); return lowercase ? uppercase.toLowerCase() : uppercase; } // Case-insensitive string comparator function CompareStringsIgnoreCase(s1, s2) { s1 = s1.toLowerCase(); s2 = s2.toLowerCase(); if (s1 < s2) { return -1; } else if (s1 == s2) { return 0; } else { return 1; } } //------------------------------------------------------------------------ // TextArea utilities //------------------------------------------------------------------------ // Gets the cursor pos in a text area. Returns -1 if the cursor pos cannot // be determined or if the cursor out of the textfield. function GetCursorPos(win, textfield) { try { if (IsDefined(textfield.selectionEnd)) { // Mozilla directly supports this return textfield.selectionEnd; } else if (win.document.selection && win.document.selection.createRange) { // IE doesn't export an accessor for the endpoints of a selection. // Instead, it uses the TextRange object, which has an extremely obtuse // API. Here's what seems to work: // (1) Obtain a textfield from the current selection (cursor) var tr = win.document.selection.createRange(); // Check if the current selection is in the textfield if (tr.parentElement() != textfield) { return -1; } // (2) Make a text range encompassing the textfield var tr2 = tr.duplicate(); tr2.moveToElementText(textfield); // (3) Move the end of the copy to the beginning of the selection tr2.setEndPoint("EndToStart", tr); // (4) The span of the textrange copy is equivalent to the cursor pos var cursor = tr2.text.length; // Finally, perform a sanity check to make sure the cursor is in the // textfield. IE sometimes screws this up when the window is activated if (cursor > textfield.value.length) { return -1; } return cursor; } else { Debug("Unable to get cursor position for: " + navigator.userAgent); // Just return the size of the textfield // TODO: Investigate how to get cursor pos in Safari! return textfield.value.length; } } catch (e) { DumpException(e, "Cannot get cursor pos"); } return -1; } function SetCursorPos(win, textfield, pos) { if (IsDefined(textfield.selectionEnd) && IsDefined(textfield.selectionStart)) { // Mozilla directly supports this textfield.selectionStart = pos; textfield.selectionEnd = pos; } else if (win.document.selection && textfield.createTextRange) { // IE has textranges. A textfield's textrange encompasses the // entire textfield's text by default var sel = textfield.createTextRange(); sel.collapse(true); sel.move("character", pos); sel.select(); } } //------------------------------------------------------------------------ // Array utilities //------------------------------------------------------------------------ // Find an item in an array, returns the key, or -1 if not found function FindInArray(array, x) { for (var i = 0; i < array.length; i++) { if (array[i] == x) { return i; } } return -1; } // Inserts an item into an array, if it's not already in the array function InsertArray(array, x) { if (FindInArray(array, x) == -1) { array[array.length] = x; } } // Delete an element from an array function DeleteArrayElement(array, x) { var i = 0; while (i < array.length && array[i] != x) i++; array.splice(i, 1); } // Copies a flat array function CopyArray(array) { var copy = []; for (var i = 0; i < array.length; i++) { copy[i] = array[i]; } return copy; } // Clone an object (recursively) function CloneObject(x) { if ((typeof x) == "object") { var y = []; for (var i in x) { y[i] = CloneObject(x[i]); } return y; } return x; } /** * Clone an event; cannot use CloneObject(event) * because it suffers from infinite recursion. * Thus, only a subset of the event properties are * cloned -- if you need others, just add them * to this function (just don't remove any!) */ function CloneEvent(ev) { var clone = {}; clone.clientX = ev.clientX; clone.clientY = ev.clientY; clone.pageX = ev.pageX; clone.pageY = ev.pageY; clone.type = ev.type; clone.srcElement = ev.srcElement; clone.target = ev.target; clone.cancelBubble = ev.cancelBubble; clone.explicitOriginalTarget = ev.explicitOriginalTarget; // add more properties here return clone; } function GetEventTarget(/*Event*/ ev) { // Event is not a type in IE; IE uses Object for events // AssertType(ev, Event, 'arg passed to GetEventTarget not an Event'); return ev.srcElement || ev.target; } /** cancels the event */ // from http://www.quirksmode.org/js/events_order.html function CancelEvent(/*Event*/ ev) { if (is_ie) { ev.cancelBubble = true; } else if (ev.stopPropagation) { ev.stopPropagation(); } } //------------------------------------------------------------------------ // Formatting utilities //------------------------------------------------------------------------ // A simple printf type function that takes in a template array, and a data // array. e.g. PrintArray(["a",,"b",,"c"], ["x", "y"]) => axbyc function PrintArray(array, data) { // Check that the argument count is correct. AssertEquals(array.length, data.length * 2 + 1); for (var i = 0, idx = 1; i < data.length; i++, idx += 2) { array[idx] = data[i]; } return array.join(""); } function ImageHtml(url, attributes) { return ""; } // Formats an object id that has two id numbers, eg, foo_3_7 function MakeId3(idprefix, m, n) { return idprefix + m + "_" + n; } //------------------------------------------------------------------------ // Email address parsing //------------------------------------------------------------------------ // Parse an email address of the form "name"
into [name, address] function ParseAddress(addr) { var name = ""; var address = ""; for (var i = 0; i < addr.length;) { var token = GetEmailToken(addr, i); if (token.charAt(0) == '<') { var end = token.indexOf(">"); address = token.substring(1, (end != -1) ? end : token.length); } else if (address == "") { name += token; } i += token.length; } // Check if it's a simple email address of the form "jlim@google.com" if (address == "" && name.indexOf("@") != -1) { address = name; name = ""; } name = CollapseWhitespace(name); name = StripQuotes(name, "'"); name = StripQuotes(name, "\""); address = CollapseWhitespace(address); return [name, address]; } // Given an email address, get the address part function GetAddress(address) { return ParseAddress(address)[1]; } // Get the username part of an email address function GetAddressUsername(address) { address = GetAddress(address); var at = address.indexOf("@"); return (at == -1) ? address : address.substr(0, at); } // Given an email address, get the personal part function GetPersonal(address) { return ParseAddress(address)[0]; } // Given an address, get a short name function GetPersonalElseUsername(address) { var personal = GetPersonal(address); if (personal != "") { return personal; } else { return GetAddressUsername(address); } } // Strip ' or " chars around a string function StripQuotes(str, quotechar) { var len = str.length; if (str.charAt(0) == quotechar && str.charAt(len - 1) == quotechar) { return str.substring(1, len - 1); } return str; } // Convert a string containing list of email addresses into an array // of strings function EmailsToArray(str) { var result = []; var email = ""; var token; for (var i = 0; i < str.length; ) { token = GetEmailToken(str, i); if (token == ",") { AddEmailAddress(result, email); email = ""; i++; continue; } email += token; i += token.length; } // Add last if (email !="" || token == ",") { AddEmailAddress(result, email); } return result; } // Get the next token from a position in an address string var openers_ = "\"<(["; var closers_ = "\">)]"; function GetEmailToken(str, pos) { var ch = str.charAt(pos); var p = openers_.indexOf(ch); if (p == -1) return ch; var end_pos = str.indexOf(closers_.charAt(p), pos + 1); var token = (end_pos >= 0) ? str.substring(pos, end_pos + 1) : str.substr(pos); return token; } // Add an email address to the result array. function AddEmailAddress(result, email) { email = CleanEmailAddress(email); result[result.length] = email; } // Clean up email address: // - remove extra spaces // - Surround name with quotes if it contains special characters // to check if we need " quotes // Note: do not use /g in the regular expression, otherwise the // regular expression cannot be reusable. var specialchars_re_ = /[()<>@,;:\\\".\[\]]/; function CleanEmailAddress(str) { var name_address = ParseAddress(str); var name = name_address[0]; var address = name_address[1]; if (name.indexOf("\"") == -1) { // If there's no " var quote_needed = specialchars_re_.test(name); if (quote_needed) { name = "\"" + name + "\""; } } if (name == "") return address; else if (address == "") return name; else return name + " <" + address + ">"; } //------------------------------------------------------------------------ // Misc //------------------------------------------------------------------------ // Compare long hex strings function CompareID(a, b) { if (a.length != b.length) { return (a.length - b.length); } else { return (a < b) ? -1 : (a > b) ? 1 : 0; } } // Check if a value is defined function IsDefined(value) { return (typeof value) != 'undefined'; } function GetKeyCode(event) { var code; if (event.keyCode) { code = event.keyCode; } else if (event.which) { code = event.which; } return code; } // define a forid function to fetch a DOM node by id. function forid_1(id) { return document.getElementById(id); } function forid_2(id) { return document.all[id]; } /** * Fetch an HtmlElement by id. * DEPRECATED: use $ in dom.js */ var forid = document.getElementById ? forid_1 : forid_2; function log(msg) { /* a top level window is its own parent. Use != or else fails on IE with * infinite loop. */ try { if (window.parent != window && window.parent.log) { window.parent.log(window.name + '::' + msg); return; } } catch (e) { // Error: uncaught exception: Permission denied to get property Window.log } var logPane = forid('log'); if (logPane) { var logText = '

' + new Date() + '' + msg + '

'; logPane.innerHTML = logText + logPane.innerHTML; } else { window.status = msg; } } tumv_?@A CDEFGHIJ]Cache-ControlWExpires_Content-Encoding\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Fri, 16 Oct 2009 13:30:15 GMTTgzip_application/x-javascriptWGFE/1.3T2066_Thu, 11 Sep 2008 13:30:15 GMT_Wed, 03 Sep 2008 19:03:47 GMT./\]]^2_NSMutableDictionary\NSDictionaryV./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd INWbekt} ,3SXs{ dOV // Commonly-used functions, reduced. function d(s) {return document.getElementById(s);} function dE(o,s) {return o.getElementsByTagName(s);} /** * toggleDisplay() * * Will toggle the display property of the style object for any * DOM element or object that supports style as a property. * * Warning: This'll wreak havoc if applied to elements. Those * babies got different types "table-row" | "block" dependant on * what browser's being used. * * Warning: Written in Texas. Yeehaw. * * Typical usage: * toggleDisplay(document.getElementById("foo")); */ function toggleDisplay(o) { var display = getStyle(o, "display"); if (o.style) o.style.display = (display != "none") ? "none" : getDisplayStyleByTagName(o); } function getDisplayStyleByTagName(o) { var n = o.nodeName.toLowerCase(); return ( n == "span" || n == "img" || n == "a" ) ? "inline" : "block"; } /** * hideElement() * * Hides an element from view. * * Typical usage: * hideElement(getElement("the-id-of-the-element")); */ function hideElement(o) { if (o && o.style) o.style.display = "none"; } /** * showElement() * * Shows an element that was hidden from view. * * Typical usage: * showElement(getElement("the-id-of-the-element")); */ function showElement(o) { if (o && o.style) o.style.display = getDisplayStyleByTagName(o); } /** * getElement() * * Returns an element by its ID or shows an alert if it can't be found. * * Typical usage: * getElement("the-id-of-the-element"); */ function getElement(id) { var e = d(id); if (!e) { alert("Cannot get element: " + id); } return e; } /** * setInnerHTML() * * Sets the innerHTML of an element or shows an alert if can't be set. * * Typical usage: * setInnerHTML("the-id-of-the-element"); */ function setInnerHTML(id, html) { try { getElement(id).innerHTML = html; } catch (ex) { alert("Cannot set inner HTML: " + id); } } /** * setCssStyle() * * Sets the style of an element by its id or shows an alert if can't be set. * * Typical usage: * setCssStyle("the-id-of-the-element", "display", "block"); */ function setCssStyle(id, name, value) { try { getElement(id).style[name] = value; } catch (ex) { alert("Cannot set style: " + id); } } /** * getStyle() * * Gets the computed style of any object. * * WARNING: Produces unexpected results in Safari. To achieve best * results, explicitly set the style property for that browser when the * element is rendered. * * Typical usage: * getStyle(object, "display"); */ function getStyle(el, style) { if (!document.getElementById || !el) return; if (document.defaultView && document.defaultView.getComputedStyle) { return document.defaultView. getComputedStyle(el, "").getPropertyValue(style); } else if (el.currentStyle) { return el.currentStyle[style]; } else { return el.style.display; } } /** * getStyleAttribute() * * Returns the style attribute of the specified node. */ function getStyleAttribute(node) { if (Detect.IE()) { return node.getAttribute('style').value; }else { return node.getAttribute('style'); } } /* * showProps() * * Displays all the properties for a given element */ function showProps(o) { var s=""; for (var p in o) { s+=p+": "+o[p]+"\n
"; } document.write(s); } function setIFrameEvent(iframe, eventName, func) { if (document.all) { eval('getIFrameDocument(iframe).on' + eventName + ' = func;'); } else { iframe.contentWindow.addEventListener(eventName, func, true); } } function setIFrameBody(iframe, strStyle, innerHtml) { if (!innerHtml) innerHtml = ''; if (innerHtml == '' && Detect.IE()) { innerHtml = '
'; } var doc = getIFrameDocument(iframe); doc.open(); doc.write('' + innerHtml + ''); doc.close(); } function getIFrameDocument(iframe) { if (Detect.IE()) { return iframe.document; } else { return iframe.contentDocument; } } function getIFrame(strId) { if (Detect.IE()) { return document.frames[strId]; } else { return document.getElementById(strId); } } function createElementandAppend(nodeName, strId, appendTo) { var el = document.createElement(nodeName); el.setAttribute("id", strId); if (appendTo) { appendTo.appendChild(el); } else { document.body.appendChild(el); } return el; } function createElementandInsertBefore(nodeName, strId, appendTo, sibling) { var el = document.createElement(nodeName); el.setAttribute("id", strId); if (appendTo) { appendTo.insertBefore(el, sibling); } else { document.body.insertBefore(el, sibling); } return el; } /** * getXY() * * Returns the position of any element as an object. * * Typical usage: * var pos = getXY(object); * alert(pos.x + " " +pos.y); */ function getXY(el) { var x = el.offsetLeft; var y = el.offsetTop; if (el.offsetParent != null) { var pos = getXY(el.offsetParent); x += pos.x; y += pos.y; } return {x: x, y: y} } // The following 3 functions are taken from common.js function hasClass(el, cl) { if (el == null || el.className == null) return false; var classes = el.className.split(" "); for (var i = 0; i < classes.length; i++) { if (classes[i] == cl) { return true; } } return false; } // Add a class to element function addClass(el, cl) { if (hasClass(el, cl)) return; el.className += " " + cl; } // Remove a class from an element function removeClass(el, cl) { if (el.className == null) return; var classes = el.className.split(" "); var result = []; var changed = false; for (var i = 0; i < classes.length; i++) { if (classes[i] != cl) { if (classes[i]) { result.push(classes[i]); } } else { changed = true; } } if (changed) { el.className = result.join(" "); } } function toggleClass(el, cl) { if (hasClass(el, cl)) { removeClass(el, cl); } else { addClass(el, cl); } } /* Constants for node types, since IE doesn't support Node.TEXT_NODE */ var TEXT_NODE = 3; var ELEMENT_NODE = 1; xy+z_,http://www.blogger.com/img/navbar/1/flag.gifObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345IJKLMNOPQRSTUVW[\U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_,http://www.blogger.com/img/navbar/1/flag.gif./01X$classesZ$classname12UNSURLXNSObject#AMxv 6789AWNS.keysZNS.objects:;<=>?@ BCDEFGHWExpires]Cache-Control\Content-TypeVServerTDate^Content-Length]Last-Modified_Sun, 17 Jan 2038 19:14:07 GMTVpublicYimage/gifSgws_Thu, 18 Sep 2008 15:10:25 GMTR52_Fri, 09 May 2008 15:04:46 GMT./XYYZ2_NSMutableDictionary\NSDictionary4./]^^_2_NSHTTPURLResponse]NSURLResponse)27:PRd7<EPSYbkmt|!(26VYy~`O4GIF89a!, ˭g ;|}Y~_*https://ssl.google-analytics.com/urchin.jsObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-3%45IJKLMNOPQRSTUVW[\U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_*https://ssl.google-analytics.com/urchin.js./01X$classesZ$classname12UNSURLXNSObject#AMH 6789AWNS.keysZNS.objects:;<=>?@ BCDEFGH]Cache-Control_Content-Encoding\Content-TypeVServerTDate^Content-Length]Last-Modified_max-age=604800, publicTgzip_text/javascriptTucfe_Thu, 18 Sep 2008 15:10:25 GMTT6846_Tue, 17 Jun 2008 17:20:41 GMT./XYYZ2_NSMutableDictionary\NSDictionaryXu./]^^_2_NSHTTPURLResponse]NSURLResponse)27:PRd5:CNQW`ikrz #(:?_d`OXu//-- Google Analytics Urchin Module //-- Copyright 2007 Google, All Rights Reserved. //-- Urchin On Demand Settings ONLY var _uacct=""; // set up the Urchin Account var _userv=1; // service mode (0=local,1=remote,2=both) //-- UTM User Settings var _ufsc=1; // set client info flag (1=on|0=off) var _udn="auto"; // (auto|none|domain) set the domain name for cookies var _uhash="on"; // (on|off) unique domain hash for cookies var _utimeout="1800"; // set the inactive session timeout in seconds var _ugifpath="/__utm.gif"; // set the web path to the __utm.gif file var _utsp="|"; // transaction field separator var _uflash=1; // set flash version detect option (1=on|0=off) var _utitle=1; // set the document title detect option (1=on|0=off) var _ulink=0; // enable linker functionality (1=on|0=off) var _uanchor=0; // enable use of anchors for campaign (1=on|0=off) var _utcp="/"; // the cookie path for tracking var _usample=100; // The sampling % of visitors to track (1-100). //-- UTM Campaign Tracking Settings var _uctm=1; // set campaign tracking module (1=on|0=off) var _ucto="15768000"; // set timeout in seconds (6 month default) var _uccn="utm_campaign"; // name var _ucmd="utm_medium"; // medium (cpc|cpm|link|email|organic) var _ucsr="utm_source"; // source var _uctr="utm_term"; // term/keyword var _ucct="utm_content"; // content var _ucid="utm_id"; // id number var _ucno="utm_nooverride"; // don't override //-- Auto/Organic Sources and Keywords var _uOsr=new Array(); var _uOkw=new Array(); _uOsr[0]="google"; _uOkw[0]="q"; _uOsr[1]="yahoo"; _uOkw[1]="p"; _uOsr[2]="msn"; _uOkw[2]="q"; _uOsr[3]="aol"; _uOkw[3]="query"; _uOsr[4]="aol"; _uOkw[4]="encquery"; _uOsr[5]="lycos"; _uOkw[5]="query"; _uOsr[6]="ask"; _uOkw[6]="q"; _uOsr[7]="altavista"; _uOkw[7]="q"; _uOsr[8]="netscape"; _uOkw[8]="query"; _uOsr[9]="cnn"; _uOkw[9]="query"; _uOsr[10]="looksmart"; _uOkw[10]="qt"; _uOsr[11]="about"; _uOkw[11]="terms"; _uOsr[12]="mamma"; _uOkw[12]="query"; _uOsr[13]="alltheweb"; _uOkw[13]="q"; _uOsr[14]="gigablast"; _uOkw[14]="q"; _uOsr[15]="voila"; _uOkw[15]="rdata"; _uOsr[16]="virgilio"; _uOkw[16]="qs"; _uOsr[17]="live"; _uOkw[17]="q"; _uOsr[18]="baidu"; _uOkw[18]="wd"; _uOsr[19]="alice"; _uOkw[19]="qs"; _uOsr[20]="yandex"; _uOkw[20]="text"; _uOsr[21]="najdi"; _uOkw[21]="q"; _uOsr[22]="aol"; _uOkw[22]="q"; _uOsr[23]="club-internet"; _uOkw[23]="query"; _uOsr[24]="mama"; _uOkw[24]="query"; _uOsr[25]="seznam"; _uOkw[25]="q"; _uOsr[26]="search"; _uOkw[26]="q"; _uOsr[27]="wp"; _uOkw[27]="szukaj"; _uOsr[28]="onet"; _uOkw[28]="qt"; _uOsr[29]="netsprint"; _uOkw[29]="q"; _uOsr[30]="google.interia"; _uOkw[30]="q"; _uOsr[31]="szukacz"; _uOkw[31]="q"; _uOsr[32]="yam"; _uOkw[32]="k"; _uOsr[33]="pchome"; _uOkw[33]="q"; _uOsr[34]="kvasir"; _uOkw[34]="searchExpr"; _uOsr[35]="sesam"; _uOkw[35]="q"; _uOsr[36]="ozu"; _uOkw[36]="q"; _uOsr[37]="terra"; _uOkw[37]="query"; _uOsr[38]="nostrum"; _uOkw[38]="query"; _uOsr[39]="mynet"; _uOkw[39]="q"; _uOsr[40]="ekolay"; _uOkw[40]="q"; _uOsr[41]="search.ilse"; _uOkw[41]="search_for"; //-- Auto/Organic Keywords to Ignore var _uOno=new Array(); //_uOno[0]="urchin"; //_uOno[1]="urchin.com"; //_uOno[2]="www.urchin.com"; //-- Referral domains to Ignore var _uRno=new Array(); //_uRno[0]=".urchin.com"; //-- **** Don't modify below this point *** var _uff,_udh,_udt,_ubl=0,_udo="",_uu,_ufns=0,_uns=0,_ur="-",_ufno=0,_ust=0,_ubd=document,_udl=_ubd.location,_udlh="",_uwv="1.3"; var _ugifpath2="http://www.google-analytics.com/__utm.gif"; if (_udl.hash) _udlh=_udl.href.substring(_udl.href.indexOf('#')); if (_udl.protocol=="https:") _ugifpath2="https://ssl.google-analytics.com/__utm.gif"; if (!_utcp || _utcp=="") _utcp="/"; function urchinTracker(page) { if (_udl.protocol=="file:") return; if (_uff && (!page || page=="")) return; var a,b,c,xx,v,z,k,x="",s="",f=0,nv=0; var nx=" expires="+_uNx()+";"; var dc=_ubd.cookie; _udh=_uDomain(); if (!_uVG()) return; _uu=Math.round(Math.random()*2147483647); _udt=new Date(); _ust=Math.round(_udt.getTime()/1000); a=dc.indexOf("__utma="+_udh+"."); b=dc.indexOf("__utmb="+_udh); c=dc.indexOf("__utmc="+_udh); if (_udn && _udn!="") { _udo=" domain="+_udn+";"; } if (_utimeout && _utimeout!="") { x=new Date(_udt.getTime()+(_utimeout*1000)); x=" expires="+x.toGMTString()+";"; } if (_ulink) { if (_uanchor && _udlh && _udlh!="") s=_udlh+"&"; s+=_udl.search; if(s && s!="" && s.indexOf("__utma=")>=0) { if (!(_uIN(a=_uGC(s,"__utma=","&")))) a="-"; if (!(_uIN(b=_uGC(s,"__utmb=","&")))) b="-"; if (!(_uIN(c=_uGC(s,"__utmc=","&")))) c="-"; v=_uGC(s,"__utmv=","&"); z=_uGC(s,"__utmz=","&"); k=_uGC(s,"__utmk=","&"); xx=_uGC(s,"__utmx=","&"); if ((k*1) != ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) {_ubl=1;a="-";b="-";c="-";xx="-";z="-";v="-";} if (a!="-" && b!="-" && c!="-") f=1; else if(a!="-") f=2; } } if(f==1) { _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+b+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+c+"; path="+_utcp+";"+_udo; } else if (f==2) { a=_uFixA(s,"&",_ust); _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo; _ufns=1; } else if (a>=0 && b>=0 && c>=0) { b = _uGC(dc,"__utmb="+_udh,";"); b = ("-" == b) ? _udh : b; _ubd.cookie="__utmb="+b+"; path="+_utcp+";"+x+_udo; } else { if (a>=0) a=_uFixA(_ubd.cookie,";",_ust); else { a=_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1"; nv=1; } _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo; _ufns=1; } if (_ulink && xx && xx!="" && xx!="-") { xx=_uUES(xx); if (xx.indexOf(";")==-1) _ubd.cookie="__utmx="+xx+"; path="+_utcp+";"+nx+_udo; } if (_ulink && v && v!="" && v!="-") { v=_uUES(v); if (v.indexOf(";")==-1) _ubd.cookie="__utmv="+v+"; path="+_utcp+";"+nx+_udo; } var wc=window; var c=_ubd.cookie; if(wc && wc.gaGlobal && wc.gaGlobal.dh==_udh){ var g=wc.gaGlobal; var ua=c.split("__utma="+_udh+".")[1].split(";")[0].split("."); if(g.sid)ua[3]=g.sid; if(nv>0){ ua[2]=ua[3]; if(g.vid){ var v=g.vid.split("."); ua[0]=v[0]; ua[1]=v[1]; } } _ubd.cookie="__utma="+_udh+"."+ua.join(".")+"; path="+_utcp+";"+nx+_udo; } _uInfo(page); _ufns=0; _ufno=0; if (!page || page=="") _uff=1; } function _uGH() { var hid; var wc=window; if (wc && wc.gaGlobal && wc.gaGlobal.hid) { hid=wc.gaGlobal.hid; } else { hid=Math.round(Math.random()*0x7fffffff); if (!wc.gaGlobal) wc.gaGlobal={}; wc.gaGlobal.hid=hid; } return hid; } function _uInfo(page) { var p,s="",dm="",pg=_udl.pathname+_udl.search; if (page && page!="") pg=_uES(page,1); _ur=_ubd.referrer; if (!_ur || _ur=="") { _ur="-"; } else { dm=_ubd.domain; if(_utcp && _utcp!="/") dm+=_utcp; p=_ur.indexOf(dm); if ((p>=0) && (p<=8)) { _ur="0"; } if (_ur.indexOf("[")==0 && _ur.lastIndexOf("]")==(_ur.length-1)) { _ur="-"; } } s+="&utmn="+_uu; if (_ufsc) s+=_uBInfo(); if (_uctm) s+=_uCInfo(); if (_utitle && _ubd.title && _ubd.title!="") s+="&utmdt="+_uES(_ubd.title); if (_udl.hostname && _udl.hostname!="") s+="&utmhn="+_uES(_udl.hostname); if (_usample && _usample != 100) s+="&utmsp="+_uES(_usample); s+="&utmhid="+_uGH(); s+="&utmr="+_ur; s+="&utmp="+pg; if ((_userv==0 || _userv==2) && _uSP()) { var i=new Image(1,1); i.src=_ugifpath+"?"+"utmwv="+_uwv+s; i.onload=function() { _uVoid(); } } if ((_userv==1 || _userv==2) && _uSP()) { var i2=new Image(1,1); i2.src=_ugifpath2+"?"+"utmwv="+_uwv+s+"&utmac="+_uacct+"&utmcc="+_uGCS(); i2.onload=function() { _uVoid(); } } return; } function _uVoid() { return; } function _uCInfo() { if (!_ucto || _ucto=="") { _ucto="15768000"; } if (!_uVG()) return; var c="",t="-",t2="-",t3="-",o=0,cs=0,cn=0,i=0,z="-",s=""; if (_uanchor && _udlh && _udlh!="") s=_udlh+"&"; s+=_udl.search; var x=new Date(_udt.getTime()+(_ucto*1000)); var dc=_ubd.cookie; x=" expires="+x.toGMTString()+";"; if (_ulink && !_ubl) { z=_uUES(_uGC(s,"__utmz=","&")); if (z!="-" && z.indexOf(";")==-1) { _ubd.cookie="__utmz="+z+"; path="+_utcp+";"+x+_udo; return ""; } } z=dc.indexOf("__utmz="+_udh+"."); if (z>-1) { z=_uGC(dc,"__utmz="+_udh+".",";"); } else { z="-"; } t=_uGC(s,_ucid+"=","&"); t2=_uGC(s,_ucsr+"=","&"); t3=_uGC(s,"gclid=","&"); if ((t!="-" && t!="") || (t2!="-" && t2!="") || (t3!="-" && t3!="")) { if (t!="-" && t!="") c+="utmcid="+_uEC(t); if (t2!="-" && t2!="") { if (c != "") c+="|"; c+="utmcsr="+_uEC(t2); } if (t3!="-" && t3!="") { if (c != "") c+="|"; c+="utmgclid="+_uEC(t3); } t=_uGC(s,_uccn+"=","&"); if (t!="-" && t!="") c+="|utmccn="+_uEC(t); else c+="|utmccn=(not+set)"; t=_uGC(s,_ucmd+"=","&"); if (t!="-" && t!="") c+="|utmcmd="+_uEC(t); else c+="|utmcmd=(not+set)"; t=_uGC(s,_uctr+"=","&"); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); else { t=_uOrg(1); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); } t=_uGC(s,_ucct+"=","&"); if (t!="-" && t!="") c+="|utmcct="+_uEC(t); t=_uGC(s,_ucno+"=","&"); if (t=="1") o=1; if (z!="-" && o==1) return ""; } if (c=="-" || c=="") { c=_uOrg(); if (z!="-" && _ufno==1) return ""; } if (c=="-" || c=="") { if (_ufns==1) c=_uRef(); if (z!="-" && _ufno==1) return ""; } if (c=="-" || c=="") { if (z=="-" && _ufns==1) { c="utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)"; } if (c=="-" || c=="") return ""; } if (z!="-") { i=z.indexOf("."); if (i>-1) i=z.indexOf(".",i+1); if (i>-1) i=z.indexOf(".",i+1); if (i>-1) i=z.indexOf(".",i+1); t=z.substring(i+1,z.length); if (t.toLowerCase()==c.toLowerCase()) cs=1; t=z.substring(0,i); if ((i=t.lastIndexOf(".")) > -1) { t=t.substring(i+1,t.length); cn=(t*1); } } if (cs==0 || _ufns==1) { t=_uGC(dc,"__utma="+_udh+".",";"); if ((i=t.lastIndexOf(".")) > 9) { _uns=t.substring(i+1,t.length); _uns=(_uns*1); } cn++; if (_uns==0) _uns=1; _ubd.cookie="__utmz="+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; path="+_utcp+"; "+x+_udo; } if (cs==0 || _ufns==1) return "&utmcn=1"; else return "&utmcr=1"; } function _uRef() { if (_ur=="0" || _ur=="" || _ur=="-") return ""; var i=0,h,k,n; if ((i=_ur.indexOf("://"))<0 || _uGCse()) return ""; h=_ur.substring(i+3,_ur.length); if (h.indexOf("/") > -1) { k=h.substring(h.indexOf("/"),h.length); if (k.indexOf("?") > -1) k=k.substring(0,k.indexOf("?")); h=h.substring(0,h.indexOf("/")); } h=h.toLowerCase(); n=h; if ((i=n.indexOf(":")) > -1) n=n.substring(0,i); for (var ii=0;ii<_uRno.length;ii++) { if ((i=n.indexOf(_uRno[ii].toLowerCase())) > -1 && n.length==(i+_uRno[ii].length)) { _ufno=1; break; } } if (h.indexOf("www.")==0) h=h.substring(4,h.length); return "utmccn=(referral)|utmcsr="+_uEC(h)+"|"+"utmcct="+_uEC(k)+"|utmcmd=referral"; } function _uOrg(t) { if (_ur=="0" || _ur=="" || _ur=="-") return ""; var i=0,h,k; if ((i=_ur.indexOf("://"))<0 || _uGCse()) return ""; h=_ur.substring(i+3,_ur.length); if (h.indexOf("/") > -1) { h=h.substring(0,h.indexOf("/")); } for (var ii=0;ii<_uOsr.length;ii++) { if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) { if ((i=_ur.indexOf("?"+_uOkw[ii]+"=")) > -1 || (i=_ur.indexOf("&"+_uOkw[ii]+"=")) > -1) { k=_ur.substring(i+_uOkw[ii].length+2,_ur.length); if ((i=k.indexOf("&")) > -1) k=k.substring(0,i); for (var yy=0;yy<_uOno.length;yy++) { if (_uOno[yy].toLowerCase()==k.toLowerCase()) { _ufno=1; break; } } if (t) return _uEC(k); else return "utmccn=(organic)|utmcsr="+_uEC(_uOsr[ii])+"|"+"utmctr="+_uEC(k)+"|utmcmd=organic"; } } } return ""; } function _uGCse() { var h,p; h=p=_ur.split("://")[1]; if(h.indexOf("/")>-1) { h=h.split("/")[0]; p=p.substring(p.indexOf("/")+1,p.length); } if(p.indexOf("?")>-1) { p=p.split("?")[0]; } if(h.toLowerCase().indexOf("google")>-1) { if(_ur.indexOf("?q=")>-1 || _ur.indexOf("&q=")>-1) { if (p.toLowerCase().indexOf("cse")>-1) { return true; } } } } function _uBInfo() { var sr="-",sc="-",ul="-",fl="-",cs="-",je=1; var n=navigator; if (self.screen) { sr=screen.width+"x"+screen.height; sc=screen.colorDepth+"-bit"; } else if (self.java) { var j=java.awt.Toolkit.getDefaultToolkit(); var s=j.getScreenSize(); sr=s.width+"x"+s.height; } if (n.language) { ul=n.language.toLowerCase(); } else if (n.browserLanguage) { ul=n.browserLanguage.toLowerCase(); } je=n.javaEnabled()?1:0; if (_uflash) fl=_uFlash(); if (_ubd.characterSet) cs=_uES(_ubd.characterSet); else if (_ubd.charset) cs=_uES(_ubd.charset); return "&utmcs="+cs+"&utmsr="+sr+"&utmsc="+sc+"&utmul="+ul+"&utmje="+je+"&utmfl="+fl; } function __utmSetTrans() { var e; if (_ubd.getElementById) e=_ubd.getElementById("utmtrans"); else if (_ubd.utmform && _ubd.utmform.utmtrans) e=_ubd.utmform.utmtrans; if (!e) return; var l=e.value.split("UTM:"); var i,i2,c; if (_userv==0 || _userv==2) i=new Array(); if (_userv==1 || _userv==2) { i2=new Array(); c=_uGCS(); } for (var ii=0;ii -1) { i2=l.indexOf(s,i); if (i2 < 0) { i2=l.length; } c=l.substring((i+i3),i2); } return c; } function _uDomain() { if (!_udn || _udn=="" || _udn=="none") { _udn=""; return 1; } if (_udn=="auto") { var d=_ubd.domain; if (d.substring(0,4)=="www.") { d=d.substring(4,d.length); } _udn=d; } _udn = _udn.toLowerCase(); if (_uhash=="off") return 1; return _uHash(_udn); } function _uHash(d) { if (!d || d=="") return 1; var h=0,g=0; for (var i=d.length-1;i>=0;i--) { var c=parseInt(d.charCodeAt(i)); h=((h << 6) & 0xfffffff) + c + (c << 14); if ((g=h & 0xfe00000)!=0) h=(h ^ (g >> 21)); } return h; } function _uFixA(c,s,t) { if (!c || c=="" || !s || s=="" || !t || t=="") return "-"; var a=_uGC(c,"__utma="+_udh+".",s); var lt=0,i=0; if ((i=a.lastIndexOf(".")) > 9) { _uns=a.substring(i+1,a.length); _uns=(_uns*1)+1; a=a.substring(0,i); if ((i=a.lastIndexOf(".")) > 7) { lt=a.substring(i+1,a.length); a=a.substring(0,i); } if ((i=a.lastIndexOf(".")) > 5) { a=a.substring(0,i); } a+="."+lt+"."+t+"."+_uns; } return a; } function _uTrim(s) { if (!s || s=="") return ""; while ((s.charAt(0)==' ') || (s.charAt(0)=='\n') || (s.charAt(0,1)=='\r')) s=s.substring(1,s.length); while ((s.charAt(s.length-1)==' ') || (s.charAt(s.length-1)=='\n') || (s.charAt(s.length-1)=='\r')) s=s.substring(0,s.length-1); return s; } function _uEC(s) { var n=""; if (!s || s=="") return ""; for (var i=0;i0) r=a.substring(i+1,i2); else return ""; if ((i=a.indexOf(".",i2+1))>0) t=a.substring(i2+1,i); else return ""; if (f) { return r; } else { var c=new Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9'); return c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r&7)<<2)+(t>>30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5&m]+c[t&m]; } } function _uIN(n) { if (!n) return false; for (var i=0;i"9") && (c!=".")) return false; } return true; } function _uES(s,u) { if (typeof(encodeURIComponent) == 'function') { if (u) return encodeURI(s); else return encodeURIComponent(s); } else { return escape(s); } } function _uUES(s) { if (typeof(decodeURIComponent) == 'function') { return decodeURIComponent(s); } else { return unescape(s); } } function _uVG() { if((_udn.indexOf("www.google.") == 0 || _udn.indexOf(".google.") == 0 || _udn.indexOf("google.") == 0) && _utcp=='/' && _udn.indexOf("google.org")==-1) { return false; } return true; } function _uSP() { var s=100; if (_usample) s=_usample; if(s>=100 || s<=0) return true; return ((__utmVisitorCode(1)%10000)<(s*100)); } function urchinPathCopy(p){ var d=document,nx,tx,sx,i,c,cs,t,h,o; cs=new Array("a","b","c","v","x","z"); h=_uDomain(); if (_udn && _udn!="") o=" domain="+_udn+";"; nx=_uNx()+";"; tx=new Date(); tx.setTime(tx.getTime()+(_utimeout*1000)); tx=tx.toGMTString()+";"; sx=new Date(); sx.setTime(sx.getTime()+(_ucto*1000)); sx=sx.toGMTString()+";"; for (i=0;i<6;i++){ t=" expires="; if (i==1) t+=tx; else if (i==2) t=""; else if (i==5) t+=sx; else t+=nx; c=_uGC(d.cookie,"__utm"+cs[i]+"="+h,";"); if (c!="-") d.cookie="__utm"+cs[i]+"="+c+"; path="+p+";"+t+o; } } function _uCO() { if (!_utk || _utk=="" || _utk.length<10) return; var d='www.google.com'; if (_utk.charAt(0)=='!') d='analytics.corp.google.com'; _ubd.cookie="GASO="+_utk+"; path="+_utcp+";"+_udo; var sc=document.createElement('script'); sc.type='text/javascript'; sc.id="_gasojs"; sc.src='https://'+d+'/analytics/reporting/overlay_js?gaso='+_utk+'&'+Math.random(); document.getElementsByTagName('head')[0].appendChild(sc); } function _uGT() { var h=location.hash, a; if (h && h!="" && h.indexOf("#gaso=")==0) { a=_uGC(h,"gaso=","&"); } else { a=_uGC(_ubd.cookie,"GASO=",";"); } return a; } var _utk=_uGT(); if (_utk && _utk!="" && _utk.length>10 && _utk.indexOf("=")==-1) { if (window.addEventListener) { window.addEventListener('load', _uCO, false); } else if (window.attachEvent) { window.attachEvent('onload', _uCO); } } function _uNx() { return (new Date((new Date()).getTime()+63072000000)).toGMTString(); } !3ITctuhqu{,UW`PZf===Bxxy}H}"+ TM-M6MQ/"+6K6Y6a6j6:CXCaCGIIIMMT#T,ThXtR[56629::(:U>