ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3gl@svddlZddlZddlZddlZddlZddlZddlmZej dvrTddl m Z ndZ ddl Z ddl mZmZmZmZhdZeedreejeejdZeZeed pejjZeZd5d dZddZz e jZWne yeZYn0GdddZ!GdddZ"z e j#Z#Wn&e yBGddde$e%Z#Yn0Gdddej&dZ'e j'(e'Gddde'Z)e j)(e)ddl*m+Z+e)(e+Gddde'Z,e j,(e,Gdd d e,Z-Gd!d"d"e,Z.Gd#d$d$e-Z/Gd%d&d&e-Z0Gd'd(d(e,Z1Gd)d*d*e0e/Z2Gd+d,d,e)Z+Gd-d.d.e'Z3e j3(e3Gd/d0d0ej4Z5Gd1d2d2e3Z6Gd3d4d4e6Z7dS)6N) allocate_lock>cygwinwin32)setmode)__all__SEEK_SETSEEK_CURSEEK_END>r SEEK_HOLEi ZgettotalrefcountrTc Cst|tst|}t|tttfs0td|t|tsFtd|t|ts\td||durzt|tsztd||durt|tstd|t|}|tdst|t|krt d|d|v} d|v} d |v} d |v} d |v} d |v}d |v}d|vrD| s"| s"| s"| r*t dddl }| dt dd} |rX|rXt d| | | | dkrvt d| s| s| s| st d|r|durt d|r|durt d|r|durt d|r|dkrddl }| dt dt|| rdpd| r"dp$d| r2d p4d| rBd pDd| rRd pTd||d}|}z"d}|dks|dkr|rd}d}|dkrt}zt|j}WnttfyYn0|dkr|}|dkrt d |dkr |r|WSt d!| rt||}n<| s0| s0| rd}|sdS|ddp&t|}dkr:t|}|S)Nr  r)rfindr"min)Z readaheadnrMsizerErF nreadaheads  z#IOBase.readline..nreadaheadcSsdSNr rErErErErFr!sr is not an integerrr) hasattr __index__r/r bytearrayr"readendswithr)rMrr size_indexresrrErrFreadline s&      zIOBase.readlinecCs ||SrUrjrerErErF__iter__6szIOBase.__iter__cCs|}|st|SrU)r StopIterationrMlinerErErF__next__:szIOBase.__next__cCsP|dus|dkrt|Sd}g}|D]&}|||t|7}||kr$qLq$|SNr)listappendr")rMhintrlinesrrErErF readlines@s  zIOBase.readlinescCs ||D]}||q dSrU)rkwrite)rMrrrErErF writelinesRszIOBase.writelines)r)N)N)N)N)N)r)N)rQrRrSr^r_rfrhrlrmr5rprrrurvrwrxrypropertyrnrkr}r~r,r)rrrrrrErErErFr[;s4"         * r[) metaclassc@s.eZdZd ddZddZddZdd Zd S) RawIOBasercCsP|dur d}|dkr|St|}||}|dur>dS||d=t|S)Nrr)readallrrreadintor)rMrrrrErErFrms   zRawIOBase.readcCs4t}|t}|sq ||7}q|r,t|S|SdSrU)rrr*r)rMrdatarErErFr~s  zRawIOBase.readallcCs|ddS)Nrr`rMrrErErFrszRawIOBase.readintocCs|ddSNrr`rrErErFrszRawIOBase.writeN)r)rQrRrSrrrrrErErErFr_s r)r(c@sHeZdZdddZdddZddZdd Zd d Zd d ZddZ dS)BufferedIOBasercCs|ddSNrr`rrErErFrszBufferedIOBase.readcCs|ddS)Nread1r`rrErErFrszBufferedIOBase.read1cCs|j|ddS)NFr _readintorrErErFrs zBufferedIOBase.readintocCs|j|ddS)NTrrrrErErF readinto1s zBufferedIOBase.readinto1cCsVt|tst|}|d}|r0|t|}n|t|}t|}||d|<|SNB)r memoryviewcastrr"r)rMrrrrrErErFrs   zBufferedIOBase._readintocCs|ddSrr`rrErErFrs zBufferedIOBase.writecCs|ddSNdetachr`rerErErFrszBufferedIOBase.detachN)r)r) rQrRrSrrrrrrrrErErErFrs    rc@seZdZddZd#ddZddZd$d d Zd d Zd dZddZ ddZ e ddZ e ddZ e ddZe ddZddZddZdd Zd!d"ZdS)%_BufferedIOMixincCs ||_dSrU_rawrMr@rErErF__init__sz_BufferedIOMixin.__init__rcCs"|j||}|dkrtd|S)Nrz#seek() returned an invalid position)r@r_r.)rMrbrcZ new_positionrErErFr_sz_BufferedIOMixin.seekcCs|j}|dkrtd|S)Nrz#tell() returned an invalid position)r@rfr.rirErErFrfs z_BufferedIOMixin.tellNcCs4||||dur(|}|j|SrU)rkryrlrfr@rhrirErErFrh%s z_BufferedIOMixin.truncatecCs|jrtd|jdS)Nflush on closed file)rnr#r@rlrerErErFrl6sz_BufferedIOMixin.flushcCs8|jdur4|js4z|W|jn |j0dSrU)r@rnrlr5rerErErFr5;s z_BufferedIOMixin.closecCs*|jdurtd||j}d|_|S)Nzraw stream already detached)r@r#rlrrrErErFrCs  z_BufferedIOMixin.detachcCs |jSrU)r@rrrerErErFrrMsz_BufferedIOMixin.seekablecCs|jSrUrrerErErFr@Psz_BufferedIOMixin.rawcCs|jjSrU)r@rnrerErErFrnTsz_BufferedIOMixin.closedcCs|jjSrU)r@r]rerErErFr]Xsz_BufferedIOMixin.namecCs|jjSrU)r@r4rerErErFr4\sz_BufferedIOMixin.modecCstd|jjddSNzcannot pickle z objectr r\rQrerErErF __getstate__`sz_BufferedIOMixin.__getstate__cCsL|jj}|jj}z |j}Wnty8d||YS0d|||SdS)Nz<{}.{}>z<{}.{} name={!r}>)r\rRrSr]r/format)rMmodnameZclsnamer]rErErF__repr__cs  z_BufferedIOMixin.__repr__cCs |jSrU)r@r,rerErErFr,osz_BufferedIOMixin.filenocCs |jSrU)r@r)rerErErFr)rsz_BufferedIOMixin.isatty)r)N)rQrRrSrr_rfrhrlr5rrrrr@rnr]r4rrr,r)rErErErFr s(         rcseZdZdZd ddZddZddZdd Zfd d Zd!d dZ d"ddZ ddZ d#ddZ ddZ d$ddZddZddZddZZS)%BytesIONcCs&t}|dur||7}||_d|_dSr)r_buffer_pos)rMZ initial_bytesbufrErErFr~s zBytesIO.__init__cCs|jrtd|jS)Nz__getstate__ on closed file)rnr#__dict__copyrerErErFrszBytesIO.__getstate__cCs|jrtdt|jS)Nzgetvalue on closed file)rnr#rrrerErErFgetvalueszBytesIO.getvaluecCs|jrtdt|jS)Nzgetbuffer on closed file)rnr#rrrerErErF getbufferszBytesIO.getbuffercs"|jdur|jtdSrU)rclearsuperr5rer\rErFr5s  z BytesIO.closercCs|jrtd|durd}n2z |j}Wn tyFt|dYn0|}|dkr`t|j}t|j|jkrtdStt|j|j|}|j|j|}||_t |S)Nread from closed filerrr) rnr#rr/r r"rrrr)rMrrZnewposrrErErFrs"   z BytesIO.readcCs ||SrU)rrrErErFrsz BytesIO.read1cCs|jrtdt|tr tdt|}|j}Wdn1sD0Y|dkrZdS|j}|t|j krd|t|j }|j |7_ ||j |||<|j|7_|S)Nwrite to closed file can't write str to binary streamr) rnr#rrr rnbytesrr"r)rMrviewrrbZpaddingrErErFrs  $z BytesIO.writercCs|jrtdz |j}Wn ty8t|dYn0|}|dkrf|dkr^td|f||_nD|dkrtd|j||_n(|dkrtdt|j||_ntd|jS)Nzseek on closed filerrnegative seek position %rr r zunsupported whence value) rnr#rr/r rmaxr"r)rMrbrc pos_indexrErErFr_s"  z BytesIO.seekcCs|jrtd|jS)Ntell on closed file)rnr#rrerErErFrfsz BytesIO.tellcCsv|jrtd|dur|j}nHz |j}Wn tyHt|dYn0|}|dkrftd|f|j|d=|S)Nztruncate on closed filerrznegative truncate position %r)rnr#rrr/r r)rMrbrrErErFrhs   zBytesIO.truncatecCs|jrtddSNr{Tr|rerErErFrvszBytesIO.readablecCs|jrtddSrr|rerErErFrxszBytesIO.writablecCs|jrtddSrr|rerErErFrrszBytesIO.seekable)N)r)r)r)N)rQrRrSrrrrrr5rrrr_rfrhrvrxrr __classcell__rErErrFrvs      rc@steZdZefddZddZddZddd Zdd d Zdd dZ dddZ dddZ ddZ ddZ dddZdS) r2cCsF|stdt|||dkr,td||_|t|_dS)Nz "raw" argument must be readable.rinvalid buffer size) rvr.rrr# buffer_size_reset_read_bufLock _read_lockrMr@rrErErFrs zBufferedReader.__init__cCs |jSrU)r@rvrerErErFrvszBufferedReader.readablecCsd|_d|_dS)Nrr) _read_buf _read_posrerErErFr szBufferedReader._reset_read_bufNcCsL|dur|dkrtd|j||WdS1s>0YdS)Nrzinvalid number of bytes to read)r#r_read_unlockedrrErErFr$szBufferedReader.readc Csd}d}|j}|j}|dus$|dkr|t|jdrj|j}|durZ||dpXdS||d|S||dg}d}|j}||vr|}q|t|7}||q|d |p|St||} || kr|j|7_||||S||dg}t |j |} | |krH|j| }||vr.|}qH| t|7} ||qt || }d |} | |d|_d|_| r| d|S|S)Nr)rNrrr) rrrrr@rrr"rjoinrrr) rMrZ nodata_valZ empty_valuesrrbchunkchunksZ current_sizeavailZwantedoutrErErFr1sL             zBufferedReader._read_unlockedrcCs4|j||WdS1s&0YdSrU)r_peek_unlockedrrErErFreszBufferedReader.peekcCsrt||j}t|j|j}||ks,|dkrb|j|}|j|}|rb|j|jd||_d|_|j|jdSr)rrr"rrr@r)rMrZwantZhaveZto_readcurrentrErErFros   zBufferedReader._peek_unlockedrcCsj|dkr|j}|dkrdS|j6|d|t|t|j|jWdS1s\0YdS)Nrrr )rrrrrr"rrrrErErFrzs zBufferedReader.read1cCs t|tst|}|jdkr dS|d}d}|j|t|krtt|j|jt|}|r|j|j|j|||||<|j|7_||7}|t|krqt|||j kr|j ||d}|sq||7}n|r|s| dsq|r6|r6qq6Wdn1s0Y|S)Nrrr ) rrrrrr"rrrrr@rr)rMrrwrittenrrrErErFrs6       $zBufferedReader._readintocCst|t|j|jSrU)rrfr"rrrerErErFrfszBufferedReader.tellcCsp|tvrtd|jF|dkr4|t|j|j8}t|||}||WdS1sb0YdS)Ninvalid whence valuer ) valid_seek_flagsr#rr"rrrr_rrarErErFr_szBufferedReader.seek)N)N)r)r)r)r)rQrRrSr*rrvrrrrrrrrfr_rErErErFr2s  4 .r2c@s\eZdZefddZddZddZddd Zd d Zd d Z ddZ dddZ ddZ dS)r1cCsF|stdt|||dkr,td||_t|_t|_ dS)Nz "raw" argument must be writable.rr) rxr.rrr#rr _write_bufr _write_lockrrErErFrs zBufferedWriter.__init__cCs |jSrU)r@rxrerErErFrxszBufferedWriter.writablec Cst|trtd|j|jr(tdt|j|jkr@| t|j}|j |t|j|}t|j|jkrz | Wnnt y}zVt|j|jkrt|j|j}||8}|jd|j|_t |j |j |WYd}~n d}~00|WdS1s 0YdS)Nrr)rrr rrnr#r"rr_flush_unlockedextendBlockingIOErrorerrnostrerror)rMrbeforereZoveragerErErFrs(    &zBufferedWriter.writeNcCsP|j6||dur"|j}|j|WdS1sB0YdSrU)rrr@rfrhrirErErFrhs  zBufferedWriter.truncatecCs2|j|Wdn1s$0YdSrU)rrrerErErFrlszBufferedWriter.flushcCs|jrtd|jrz|j|j}Wnty@tdYn0|durXttjdd|t |jksn|dkrvt d|jd|=qdS)NrzHself.raw should implement RawIOBase: it should not raise BlockingIOErrorz)write could not complete without blockingrz*write() returned incorrect number of bytes) rnr#rr@rr RuntimeErrorrEAGAINr"r.rMrrErErFrs zBufferedWriter._flush_unlockedcCst|t|jSrU)rrfr"rrerErErFrfszBufferedWriter.tellrcCsP|tvrtd|j&|t|||WdS1sB0YdS)Nr)rr#rrrr_rarErErFr_s zBufferedWriter.seekcCs|j0|jdus|jr(WddSWdn1s<0Yz<|W|j|jWdq1sx0Yn2|j|jWdn1s0Y0dSrU)rr@rnrlr5rerErErFr5 s. *zBufferedWriter.close)N)r) rQrRrSr*rrxrrhrlrrfr_r5rErErErFr1s   r1c@seZdZefddZdddZddZdd Zdd d Zd d dZ ddZ ddZ ddZ ddZ ddZddZeddZdS)!BufferedRWPaircCs<|std|s tdt|||_t|||_dS)Nz#"reader" argument must be readable.z#"writer" argument must be writable.)rvr.rxr2readerr1writer)rMrrrrErErFr@s  zBufferedRWPair.__init__rcCs|dur d}|j|SNr)rrrrErErFrNszBufferedRWPair.readcCs |j|SrU)rrrrErErFrSszBufferedRWPair.readintocCs |j|SrU)rrrrErErFrVszBufferedRWPair.writercCs |j|SrU)rrrrErErFrYszBufferedRWPair.peekcCs |j|SrU)rrrrErErFr\szBufferedRWPair.read1cCs |j|SrU)rrrrErErFr_szBufferedRWPair.readinto1cCs |jSrU)rrvrerErErFrvbszBufferedRWPair.readablecCs |jSrU)rrxrerErErFrxeszBufferedRWPair.writablecCs |jSrU)rrlrerErErFrlhszBufferedRWPair.flushcCs*z|jW|jn |j0dSrU)rr5rrerErErFr5ks zBufferedRWPair.closecCs|jp|jSrU)rr)rrerErErFr)qszBufferedRWPair.isattycCs|jjSrU)rrnrerErErFrntszBufferedRWPair.closedN)r)r)r)rQrRrSr*rrrrrrrrvrxrlr5r)rrnrErErErFr0s    rc@sjeZdZefddZdddZddZdd d Zdd d Zd dZ dddZ dddZ ddZ ddZ dS)r0cCs(|t|||t|||dSrU)rur2rr1rrErErFrszBufferedRandom.__init__rcCs|tvrtd||jr^|j*|j|jt|jdWdn1sT0Y|j||}|j| Wdn1s0Y|dkrt d|S)Nrr rz seek() returned invalid position) rr#rlrrr@r_rr"rr.rarErErFr_s8&zBufferedRandom.seekcCs|jrt|St|SdSrU)rr1rfr2rerErErFrfs zBufferedRandom.tellNcCs|dur|}t||SrU)rfr1rhrirErErFrhszBufferedRandom.truncatecCs |dur d}|t||Sr)rlr2rrrErErFrszBufferedRandom.readcCs|t||SrU)rlr2rrrErErFrszBufferedRandom.readintocCs|t||SrU)rlr2rrrErErFrszBufferedRandom.peekrcCs|t||SrU)rlr2rrrErErFrszBufferedRandom.read1cCs|t||SrU)rlr2rrrErErFrszBufferedRandom.readinto1cCsZ|jrN|j2|j|jt|jd|Wdn1sD0Yt||Sr) rrr@r_rr"rr1rrrErErFrs &zBufferedRandom.write)r)N)N)r)r)rQrRrSr*rr_rfrhrrrrrrrErErErFr0ys      r0cseZdZdZdZdZdZdZdZdZ d0ddZ dd Z d d Z d d Z ddZd1ddZd2ddZddZddZddZefddZddZd3ddZfd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zed,d-Zed.d/Z Z!S)4r(rFNTr c CsH|jdkr0z|jrt|jWd|_nd|_0t|trBtdt|trb|}|dkrftdnd}t|t s~td|ft |t dkstd|ft dd|Dd ks| d d krtd d |vrd |_ d |_tjtjB}nTd|vrd |_d}n@d|vrd |_tjtjB}n"d|vr>d |_d |_tjtjB}d |vrTd |_d |_|jrp|jrp|tjO}n|jr|tjO}n |tjO}|ttddO}ttddpttdd}||O}d}zT|dkr@|std|durt||d}n0|||}t|tstd|dkr*td|}|s@t|d||_t|} z(t| jrvt t!j"t#t!j"|Wnt$yYn0t| dd|_%|j%d krt&|_%t'rt'|tj(||_)|jrzt*|dt+Wn6ty} z| j!t!j,krWYd} ~ n d} ~ 00Wn"|dur6t|Yn0||_dS)Nrrz$integer argument expected, got floatznegative file descriptorzinvalid mode: %szxrwab+css|]}|dvVqdS)ZrwaxNrE).0crErErF rz"FileIO.__init__..r rzKMust have exactly one of create/read/write/append mode and at most one plusrTr rrO_BINARYZ O_NOINHERIT O_CLOEXECz'Cannot use closefd=False with file nameizexpected integer from openerzNegative file descriptorFr-)-_fd_closefdrr5rfloatr rr#rr!sumcount_created _writableO_EXCLO_CREAT _readableO_TRUNC _appendingO_APPENDO_RDWRO_RDONLYO_WRONLYgetattrrGr.set_inheritabler+statS_ISDIRst_modeIsADirectoryErrorrZEISDIRrr/_blksizer*_setmoderr]lseekr ZESPIPE) rMr6r4r;rfdflagsZnoinherit_flagZowned_fdZfdfstatrrErErFrs     $                    zFileIO.__init__cCsB|jdkr>|jr>|js>ddl}|jd|ftd|d|dS)Nrzunclosed file %rr ) stacklevelsource)rrrnr$r%ResourceWarningr5)rMr$rErErFrpEs zFileIO.__del__cCstd|jjddSrrrerErErFrLszFileIO.__getstate__cCsnd|jj|jjf}|jr"d|Sz |j}Wn(tyTd||j|j|jfYS0d|||j|jfSdS)Nz%s.%sz <%s [closed]>z<%s fd=%d mode=%r closefd=%r>z<%s name=%r mode=%r closefd=%r>) r\rRrSrnr]r/rr4r)rM class_namer]rErErFrOs   zFileIO.__repr__cCs|jstddS)NzFile not open for reading)rrZrerErErFrw]szFileIO._checkReadablecCs|jstddS)NzFile not open for writing)rrZrsrErErFryaszFileIO._checkWritablecCsR|||dus |dkr(|Szt|j|WStyLYdS0dSr)rkrwrrrrrrrErErFres z FileIO.readcCs||t}z6t|jdt}t|jj}||krH||d}Wnt y\Yn0t }t ||krt |}|t |t7}|t |}zt |j|}Wnty|rYqYdS0|sq||7}qdt|Srd)rkrwr*rrrrr+st_sizer.rr"rrrr)rMbufsizerbendrArrrErErFrus2     zFileIO.readallcCs4t|d}|t|}t|}||d|<|Sr)rrrr")rMrmrrrErErFrs  zFileIO.readintocCs:||zt|j|WSty4YdS0dSrU)rkryrrrrrrErErFrs  z FileIO.writecCs*t|trtd|t|j||S)Nzan integer is required)rrr rkrrrrarErErFr_s z FileIO.seekcCs|t|jdtSr)rkrrrrrerErErFrfsz FileIO.tellcCs2|||dur |}t|j||SrU)rkryrfr ftruncaterrrErErFrhs zFileIO.truncatecs8|js4z |jrt|jWtn t0dSrU)rnrrr5rrrerrErFr5s z FileIO.closecCsD||jdur>z |Wnty6d|_Yn0d|_|jS)NFT)rk _seekablerfr.rerErErFrrs    zFileIO.seekablecCs||jSrU)rkrrerErErFrvszFileIO.readablecCs||jSrU)rkrrerErErFrxszFileIO.writablecCs||jSrU)rkrrerErErFr,sz FileIO.filenocCs|t|jSrU)rkrr)rrerErErFr)sz FileIO.isattycCs|jSrU)rrerErErFr;szFileIO.closefdcCsJ|jr|jrdSdSn0|jr,|jr&dSdSn|jrB|jrs z"IncrementalNewlineDecoder.getstatecCs8|\}}t|d@|_|jdur4|j||d?fdSr)boolr1r/setstate)rMstaterr?rErErFrAs z"IncrementalNewlineDecoder.setstatecCs$d|_d|_|jdur |jdS)NrF)r0r1r/resetrerErErFrCs zIncrementalNewlineDecoder.resetr r cCs d|jS)N)Nr6r4)r4r6r5)r6r5)r4r5)r4r6r5)r0rerErErFr)sz"IncrementalNewlineDecoder.newlinesN)r+)F) rQrRrSrr7r>rArCr8r9r:rr)rErErErFr*]s   r*c@sreZdZdZdZdNddZddZdOdd Zd d Ze d d Z e ddZ e ddZ e ddZ e ddZddedddddZddZddZddZdd Zd!d"Ze d#d$Ze d%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2ZdPd3d4Zd5d6Zd7d8Z dQd:d;Z!dd?Z#dRd@dAZ$dBdCZ%dSdDdEZ&dTdFdGZ'dHdIZ(dUdJdKZ)e dLdMZ*dS)Vr3iNFc Cs$|||durrzt|}Wnttfy:Yn0|durrz ddl}Wntyfd}Yn 0|d}t |t st d|t |jsd}t|||durd}n$t |t st d|trt |||_d|_d|_d|_|j|_|_t|jd |_||||||dS) NrasciiFrzG%r is not a text encoding; use codecs.open() to handle arbitrary codecsr+rrr)_check_newlinerdevice_encodingr,r/rZlocale ImportErrorgetpreferredencodingrrr#r,lookup_is_text_encoding LookupError _CHECK_ERRORS lookup_errorr_decoded_chars_decoded_chars_used _snapshotrDrrr#_tellingr _has_read1 _configure) rMrDr8r9r:rB write_throughrHrtrErErFrs@             zTextIOWrapper.__init__cCs>|dur$t|ts$tdt|f|dvr:td|fdS)Nzillegal newline type: %r)Nrr6r4r5zillegal newline value: %r)rrr typer#)rMr:rErErFrFszTextIOWrapper._check_newlinecCs||_||_d|_d|_d|_| |_|du|_||_|dk|_|pHt j |_ ||_ ||_ |jr|r|j}|dkrz|dWntyYn0dS)Nrr) _encoding_errors_encoder_decoder _b2cratio_readuniversal_readtranslate_readnl_writetranslaterlinesep_writenl_line_buffering_write_throughr#rxrDrf _get_encoderrArM)rMr8r9r:rBrVpositionrErErFrUs&     zTextIOWrapper._configurecCs|d|jj|jj}z |j}Wnty0Yn0|d|7}z |j}Wnty\Yn0|d|7}|d|jS)Nz<{}.{}z name={0!r}z mode={0!r}z encoding={0!r}>)rr\rRrSr]r/r4r8)rMrAr]r4rErErFr's     zTextIOWrapper.__repr__cCs|jSrU)rYrerErErFr88szTextIOWrapper.encodingcCs|jSrU)rZrerErErFr9<szTextIOWrapper.errorscCs|jSrU)rdrerErErFrB@szTextIOWrapper.line_bufferingcCs|jSrU)rererErErFrVDszTextIOWrapper.write_throughcCs|jSrU)rrerErErFrDHszTextIOWrapper.buffer)r8r9r:rBrVcCs|jdur*|dus"|dus"|tur*td|durH|durB|j}q^d}nt|ts^td||durn|j}nt|tstd||tur|j}| ||dur|j }|dur|j }| | |||||dS)NzPIt is not possible to set the encoding or newline of stream after the first readr+rr)r\EllipsisrZrZrrr rYr`rFrBrVrlrU)rMr8r9r:rBrVrErErF reconfigureLs>       zTextIOWrapper.reconfigurecCs|jrtd|jSrz)rnr#r#rerErErFrruszTextIOWrapper.seekablecCs |jSrU)rDrvrerErErFrvzszTextIOWrapper.readablecCs |jSrU)rDrxrerErErFrx}szTextIOWrapper.writablecCs|j|j|_dSrU)rDrlr#rSrerErErFrls zTextIOWrapper.flushcCs8|jdur4|js4z|W|jn |j0dSrU)rDrnrlr5rerErErFr5s zTextIOWrapper.closecCs|jjSrU)rDrnrerErErFrnszTextIOWrapper.closedcCs|jjSrU)rDr]rerErErFr]szTextIOWrapper.namecCs |jSrU)rDr,rerErErFr,szTextIOWrapper.filenocCs |jSrU)rDr)rerErErFr)szTextIOWrapper.isattycCs|jrtdt|ts(td|jjt|}|js<|j oBd|v}|rf|jrf|j dkrf| d|j }|j pr| }||}|j||j r|sd|vr||dd|_|jr|j|S)Nrzcan't write %s to text streamr6r4r)rnr#rrr r\rQr"rardrcr;r[rfencoderDrrl_set_decoded_charsrRr\rC)rMr(lengthZhaslfencoderrrErErFrs(     zTextIOWrapper.writecCst|j}||j|_|jSrU)r,getincrementalencoderrYrZr[)rMZ make_encoderrErErFrfs  zTextIOWrapper._get_encodercCs2t|j}||j}|jr(t||j}||_|SrU)r,getincrementaldecoderrYrZr^r*r_r\)rMZ make_decoderr/rErErF _get_decoders    zTextIOWrapper._get_decodercCs||_d|_dSr)rPrQ)rMcharsrErErFrksz TextIOWrapper._set_decoded_charscCsF|j}|dur|j|d}n|j|||}|jt|7_|SrU)rQrPr")rMroffsetrqrErErF_get_decoded_charss z TextIOWrapper._get_decoded_charscCs$|j|krtd|j|8_dS)Nz"rewind decoded_chars out of bounds)rQAssertionErrorrrErErF_rewind_decoded_charss z#TextIOWrapper._rewind_decoded_charscCs|jdurtd|jr&|j\}}|jr<|j|j}n|j|j}| }|j ||}| ||rt |t |j |_ nd|_ |jr|||f|_| S)Nz no decoderrX)r\r#rSr>rTrDr _CHUNK_SIZErr7rkr"rPr]rR)rM dec_buffer dec_flags input_chunkeofZ decoded_charsrErErF _read_chunks  zTextIOWrapper._read_chunkrcCs(||d>B|d>B|d>Bt|d>BS)N@)r@)rMrgrx bytes_to_feedneed_eof chars_to_skiprErErF _pack_cookies  zTextIOWrapper._pack_cookiecCsJt|d\}}t|d\}}t|d\}}t|d\}}|||t||fS)Nl)divmodr@)rMZbigintrestrgrxrrrrErErF_unpack_cookie s zTextIOWrapper._unpack_cookiec CsP|jstd|jstd||j}|j}|dusF|jdurX|j rTt d|S|j\}}|t |8}|j }|dkr| ||S|}zt|j|}d}|dkr"|d|ft ||d|} | |kr|\} } | s| }|| 8}q4|t | 8}d}q||8}|d}qd}|d|f||} |} |dkrb| | | W||Sd}d}d}t|t |D]x}|d7}|t ||||d7}|\}}|s||kr| |7} ||8}|dd} }}||kr|q"q||t |jdd d 7}d }||kr"td | | | |||W||S||0dS) N!underlying stream is not seekablez(telling position disabled by next() callzpending decoded textrr rr FTr2z'can't reconstruct logical file position)r#rZrSr.rlrDrfr\rRrPrtr"rQrr>rr]rAr7range)rMrgr/rxZ next_inputr saved_stateZ skip_bytesZ skip_backrrd start_posZ start_flagsZ bytes_fedrZ chars_decodedirwrErErFrf s                 zTextIOWrapper.tellcCs$||dur|}|j|SrU)rlrfrDrhrirErErFrhs szTextIOWrapper.truncatecCs*|jdurtd||j}d|_|S)Nzbuffer is already detached)rDr#rlr)rMrDrErErFry s  zTextIOWrapper.detachc sfdd}jrtdjs(td|tkrN|dkr@tdd}}nZ|tkr|dkrftdj d|} dd_ j rj |||S|dkrtd |f|dkrtd |f|\}}}}} j | dd_ |dkr*j r*j n@j s>|s>| rjj pL_ j d |f|d f_ | rj|} j | ||| f_ tj| krtd | _|||S) NcsFzjp}Wnty$Yn0|dkr:|dn|dSr)r[rfrMrArC)rgrmrerErF_reset_encoder s  z*TextIOWrapper.seek.._reset_encoderrrrz#can't do nonzero cur-relative seeksz#can't do nonzero end-relative seeksrzunsupported whence (%r)rrz#can't restore logical file position)rnr#r#rZrrfr rlrDr_rkrRr\rCrrprArr7r"rPr.rQ) rMZcookiercrrgrrxrrrryrErerFr_ s`            zTextIOWrapper.seekcCs||durd}n2z |j}Wn ty@t|dYn0|}|jpT|}|dkr||j|j dd}| dd|_ |Sd}||}t ||kr|s| }|||t |7}q|SdS)NrrrTr2rF)rwrr/r r\rprsr7rDrrkrRr"r{)rMrrr/rArzrErErFr s,     zTextIOWrapper.readcCs(d|_|}|s$d|_|j|_t|Srq)rSrrRr#rrrErErFr szTextIOWrapper.__next__c Cs|jrtd|durd}n2z |j}Wn tyFt|dYn0|}|}d}|jsh|d}}|jr| d|}|dkr|d}qnt |}n|j rD| d|}| d|}|dkr|dkrt |}n |d}qnX|dkr|d}qn@||kr|d}qn(||dkr6|d}qn |d}qn(| |j }|dkrl|t |j }q|dkrt ||kr|}q| r|jrqq|jr||7}qp|d d|_|Sqp|dkr||kr|}|t |||d|S) Nrrrrr6r r4r r)rnr#rr/r rsr\rpr_rr"r^r`r{rPrkrRru) rMrrrstartrbendposZnlposZcrposrErErFr st             zTextIOWrapper.readlinecCs|jr|jjSdSrU)r\r)rerErErFr)N szTextIOWrapper.newlines)NNNFF)NNNFF)N)rrFr)N)r)N)N)+rQrRrSrvrrrFrUrrr8r9rBrVrDrhrirrrvrxrlr5rnr]r,r)rrfrprkrsrur{rrrfrhrr_rrrr)rErErErFr3sl * $      )    * c  K  ]r3csNeZdZdfdd ZddZddZed d Zed d Zd dZ Z S)StringIOrr6csftt|jtdd|d|dur(d|_|durbt|tsNtdt |j | || ddS)Nzutf-8 surrogatepass)r8r9r:Fz*initial_value must be str or None, not {0}r) rrrrrarrr rrWrQrr_)rMZ initial_valuer:rrErFrZ s  zStringIO.__init__c CsX||jp|}|}|z |j|jddW||S||0dS)NTr2) rlr\rpr>rCr7rDrrA)rMr/Z old_staterErErFrj s zStringIO.getvaluecCs t|SrU)objectrrerErErFrt szStringIO.__repr__cCsdSrUrErerErErFr9y szStringIO.errorscCsdSrUrErerErErFr8} szStringIO.encodingcCs|ddSrr`rerErErFr szStringIO.detach)rr6) rQrRrSrrrrr9r8rrrErErrFrS s   r)r rNNNTN)8rabcr,rrsys_threadrrplatformmsvcrtrriorrrr rraddr SEEK_DATAr*rrdev_moderorNrGrJ open_coder/rKrTrZr.r#ABCMetar[registerr_ior(rrrr2r1rr0r'r-r*r3rrErErErFs      [    # =   g kCiIJY@ U&