ÿØÿà 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 3gt@sddlmZddlmZddlZddlZddlZddlZddlZddl Z ddl Z ddZ e j j ZGdddZdejjjd fZd Zd ejjjd fZd ejjjd fZdejjeejjeejjefZddZdejjd ejjd fZdZddZdejjd ejjd ejjd ejjdfZgfddZ de jjd e!e jjd e jjd e jjd e jjdfZ"dZ#dZ$dZ%dZ&dZ'dZ(d Z)d!Z*d"Z+d#Z,d$Z-d%ejd ejd ejdejd&ejd'fZ.d(d)Z/d*e/jjd fZ0d+d,Z1d-d.Z2d/e1jjd e1jjd e1jjd&e1jjd e1jjd&fZ3d0e2jjd e2jjd e2jjd&e2jjd e2jjd&fZ4d1d2Z5d3d4Z6d5d6Z7d7d8Z8d9e8jjd e!e8jjd e8jjd&fZ9d:e9e!e8jjd e8jjde!e8jjdfZ:d;e:e!e8jjde8jjdfZ;Gdd?d?e=Z>d@ej?j@d kr._error)tb_next)r r r r r get_tb s rc@s,eZdZddZeddZeddZdS)_CcCs|dk|_dSNrx)selfrr r r __init__sz _C.__init__cCs |dk}dSrr rr r r sm sz_C.smcCs|dk|_dSrr)clsrr r r cm$sz_C.cmN)__name__ __module__ __qualname__r staticmethodr classmethodrr r r r rs  ra>%3d 0 LOAD_FAST 1 (x) 2 LOAD_CONST 1 (1) 4 COMPARE_OP 2 (==) 6 LOAD_FAST 0 (self) 8 STORE_ATTR 0 (x) 10 LOAD_CONST 0 (None) 12 RETURN_VALUE ra 0 LOAD_FAST 1 (1) 2 LOAD_CONST 1 (1) 4 COMPARE_OP 2 (==) 6 LOAD_FAST 0 (0) 8 STORE_ATTR 0 (0) 10 LOAD_CONST 0 (0) 12 RETURN_VALUE a=%3d 0 LOAD_FAST 1 (x) 2 LOAD_CONST 1 (1) 4 COMPARE_OP 2 (==) 6 LOAD_FAST 0 (cls) 8 STORE_ATTR 0 (x) 10 LOAD_CONST 0 (None) 12 RETURN_VALUE a %3d 0 LOAD_FAST 0 (x) 2 LOAD_CONST 1 (1) 4 COMPARE_OP 2 (==) 6 STORE_FAST 0 (x) 8 LOAD_CONST 0 (None) 10 RETURN_VALUE zBDisassembly of %s: %s Disassembly of %s: %s Disassembly of %s: %s cCs t|dSrprint)ar r r _f[sr!z%3d 0 LOAD_GLOBAL 0 (print) 2 LOAD_FAST 0 (a) 4 CALL_FUNCTION 1 6 POP_TOP %3d 8 LOAD_CONST 1 (1) 10 RETURN_VALUE z 0 LOAD_GLOBAL 0 (0) 2 LOAD_FAST 0 (0) 4 CALL_FUNCTION 1 6 POP_TOP 8 LOAD_CONST 1 (1) 10 RETURN_VALUE cCstddD]}q dS)Nr )range)resr r r bug708901usr%a%3d 0 LOAD_GLOBAL 0 (range) 2 LOAD_CONST 1 (1) %3d 4 LOAD_CONST 2 (10) %3d 6 CALL_FUNCTION 2 8 GET_ITER >> 10 FOR_ITER 4 (to 16) 12 STORE_FAST 0 (res) %3d 14 JUMP_ABSOLUTE 10 >> 16 LOAD_CONST 0 (None) 18 RETURN_VALUE cCsdsJdd|DddS)NrcSsg|]}|qSr r ).0sr r r zbug1333982..rr rr r r bug1333982sr+a%3d 0 LOAD_CONST 1 (0) 2 POP_JUMP_IF_TRUE 26 4 LOAD_ASSERTION_ERROR 6 LOAD_CONST 2 ( at 0x..., file "%s", line %d>) 8 LOAD_CONST 3 ('bug1333982..') 10 MAKE_FUNCTION 0 12 LOAD_FAST 0 (x) 14 GET_ITER 16 CALL_FUNCTION 1 %3d 18 LOAD_CONST 4 (1) %3d 20 BINARY_ADD 22 CALL_FUNCTION 1 24 RAISE_VARARGS 1 %3d >> 26 LOAD_CONST 0 (None) 28 RETURN_VALUE z%3d 0 LOAD_GLOBAL 0 (spam) 2 POP_TOP 4 LOAD_CONST 0 (None) 6 RETURN_VALUE z%4d 0 LOAD_GLOBAL 0 (spam) 2 POP_TOP 4 LOAD_CONST 0 (None) 6 RETURN_VALUE zDisassembly of f: 4 0 LOAD_CONST 0 (None) 2 RETURN_VALUE Disassembly of g: 5 0 LOAD_CONST 0 (None) 2 RETURN_VALUE zx + 1z 1 0 LOAD_NAME 0 (x) 2 LOAD_CONST 0 (1) 4 BINARY_ADD 6 RETURN_VALUE x = x + 1z 1 0 LOAD_NAME 0 (x) 2 LOAD_CONST 0 (1) 4 BINARY_ADD 6 STORE_NAME 0 (x) 8 LOAD_CONST 1 (None) 10 RETURN_VALUE z+ x: int = 1 y: fun(1) lst[fun(0)]: int = 1 a 2 0 SETUP_ANNOTATIONS 2 LOAD_CONST 0 (1) 4 STORE_NAME 0 (x) 6 LOAD_NAME 1 (int) 8 LOAD_NAME 2 (__annotations__) 10 LOAD_CONST 1 ('x') 12 STORE_SUBSCR 3 14 LOAD_NAME 3 (fun) 16 LOAD_CONST 0 (1) 18 CALL_FUNCTION 1 20 LOAD_NAME 2 (__annotations__) 22 LOAD_CONST 2 ('y') 24 STORE_SUBSCR 4 26 LOAD_CONST 0 (1) 28 LOAD_NAME 4 (lst) 30 LOAD_NAME 3 (fun) 32 LOAD_CONST 3 (0) 34 CALL_FUNCTION 1 36 STORE_SUBSCR 38 LOAD_NAME 1 (int) 40 POP_TOP 42 LOAD_CONST 4 (None) 44 RETURN_VALUE zx = 0 while 1: x += 1a 1 0 LOAD_CONST 0 (0) 2 STORE_NAME 0 (x) 3 >> 4 LOAD_NAME 0 (x) 6 LOAD_CONST 1 (1) 8 INPLACE_ADD 10 STORE_NAME 0 (x) 12 JUMP_ABSOLUTE 4 14 LOAD_CONST 2 (None) 16 RETURN_VALUE a%3d 0 SETUP_FINALLY 12 (to 14) %3d 2 LOAD_CONST 1 (1) 4 LOAD_CONST 2 (0) --> 6 BINARY_TRUE_DIVIDE 8 POP_TOP 10 POP_BLOCK 12 JUMP_FORWARD 42 (to 56) %3d >> 14 DUP_TOP 16 LOAD_GLOBAL 0 (Exception) 18 JUMP_IF_NOT_EXC_MATCH 54 20 POP_TOP 22 STORE_FAST 0 (e) 24 POP_TOP 26 SETUP_FINALLY 18 (to 46) %3d 28 LOAD_FAST 0 (e) 30 LOAD_ATTR 1 (__traceback__) 32 STORE_FAST 1 (tb) 34 POP_BLOCK 36 POP_EXCEPT 38 LOAD_CONST 0 (None) 40 STORE_FAST 0 (e) 42 DELETE_FAST 0 (e) 44 JUMP_FORWARD 10 (to 56) >> 46 LOAD_CONST 0 (None) 48 STORE_FAST 0 (e) 50 DELETE_FAST 0 (e) 52 RERAISE >> 54 RERAISE %3d >> 56 LOAD_FAST 1 (tb) 58 RETURN_VALUE cCs|d|dd|d|dS)N 4r r bcdr r r _fstring:sr5a%3d 0 LOAD_FAST 0 (a) 2 FORMAT_VALUE 0 4 LOAD_CONST 1 (' ') 6 LOAD_FAST 1 (b) 8 LOAD_CONST 2 ('4') 10 FORMAT_VALUE 4 (with format) 12 LOAD_CONST 1 (' ') 14 LOAD_FAST 2 (c) 16 FORMAT_VALUE 2 (repr) 18 LOAD_CONST 1 (' ') 20 LOAD_FAST 3 (d) 22 LOAD_CONST 2 ('4') 24 FORMAT_VALUE 6 (repr, with format) 26 BUILD_STRING 7 28 RETURN_VALUE cCsz |W|S|0dSNr r r2r r r _tryfinallyOs r8cCsz W|dS|0dSrr )r2r r r _tryfinallyconstUs r9a%3d 0 SETUP_FINALLY 12 (to 14) %3d 2 LOAD_FAST 0 (a) 4 POP_BLOCK %3d 6 LOAD_FAST 1 (b) 8 CALL_FUNCTION 0 10 POP_TOP %3d 12 RETURN_VALUE %3d >> 14 LOAD_FAST 1 (b) 16 CALL_FUNCTION 0 18 POP_TOP 20 RERAISE 22 LOAD_CONST 0 (None) 24 RETURN_VALUE a%3d 0 SETUP_FINALLY 12 (to 14) %3d 2 POP_BLOCK %3d 4 LOAD_FAST 0 (b) 6 CALL_FUNCTION 0 8 POP_TOP %3d 10 LOAD_CONST 1 (1) 12 RETURN_VALUE %3d >> 14 LOAD_FAST 0 (b) 16 CALL_FUNCTION 0 18 POP_TOP 20 RERAISE 22 LOAD_CONST 0 (None) 24 RETURN_VALUE ccs |VdSr6r rr r r _gsr:cCs |VdSr6r rr r r _agsr;cst|2z 3dHW}q6dSr6)r;)ritemr r r _cosr=csfdd}|S)NcsfddDS)Zfuncdoccsg|] }|qSr r )r'zrr r r)r*z#_h..foo..r ryrr foosz_h..foor )r@rAr r?r _hs rBa%3d 0 LOAD_CLOSURE 0 (y) 2 BUILD_TUPLE 1 4 LOAD_CONST 1 () 6 LOAD_CONST 2 ('_h..foo') 8 MAKE_FUNCTION 8 (closure) 10 STORE_FAST 1 (foo) %3d 12 LOAD_FAST 1 (foo) 14 RETURN_VALUE a%s Disassembly of : %3d 0 LOAD_CLOSURE 0 (x) 2 BUILD_TUPLE 1 4 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) 6 LOAD_CONST 2 ('_h..foo..') 8 MAKE_FUNCTION 8 (closure) 10 LOAD_DEREF 1 (y) 12 GET_ITER 14 CALL_FUNCTION 1 16 RETURN_VALUE a%s Disassembly of at 0x..., file "%s", line %d>: %3d 0 BUILD_LIST 0 2 LOAD_FAST 0 (.0) >> 4 FOR_ITER 12 (to 18) 6 STORE_FAST 1 (z) 8 LOAD_DEREF 0 (x) 10 LOAD_FAST 1 (z) 12 BINARY_ADD 14 LIST_APPEND 2 16 JUMP_ABSOLUTE 4 >> 18 RETURN_VALUE c@seZdZdZd>ddZd?ddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zd|tjdd|tjdtj|tjdtjdS)NZNOP LOAD_CONST STORE_NAME)rZrIopmapZassertInZhasconstZhasnamerr r r test_opmapszDisTests.test_opmapcCs|tjtjdddS)N LOAD_FAST)rZrIopnamer`rar r r test_opnameszDisTests.test_opnamecCs,|tjdtj|tjdtjdS)N EXTENDED_ARGr_)rZrIr`rf HAVE_ARGUMENTrar r r test_boundariesszDisTests.test_boundariesc Cs|ttjD]l\}}|dvrq |j|d>tj}|tjkrH|dtj7}|t||Wdq 1sl0Yq dS)N)ZBUILD_MAP_UNPACK_WITH_CALLZBUILD_TUPLE_UNPACK_WITH_CALLJUMP_IF_NOT_EXC_MATCH)rdr) enumeraterIrdsubTestZ _OPNAME_WIDTHrgZ _OPARG_WIDTHZassertLessEquallen)ropcoderdwidthr r r test_widthss zDisTests.test_widthscCs|ttdSr6)r\r!dis_frar r r test_disszDisTests.test_discCs|ttdSr6)r\r% dis_bug708901rar r r test_bug_708901szDisTests.test_bug_708901cCs|ttdSr6)r\r+dis_bug1333982rar r r test_bug_1333982 szDisTests.test_bug_1333982cCsdd}tddD] }t|d}||||qtdddD] }t|d}||||q@tdddD] }t|d}||||qnd d lm}||tdS) NcSs0i}dddg|dg}t|||dS)Nz def foo(): z zspam rAjoinexeccount namespacerMr r r rMs z'DisTests.test_big_linenos..funcri,rr"ir) dis_module)r#_BIG_LINENO_FORMATr\_BIG_LINENO_FORMAT2testr~dis_module_expected_results)rrMir[r~r r r test_big_linenoss    zDisTests.test_big_linenoscCsfdd}dd}tddD]}|||||dq||d|dd||d |d ddS) NcSs.i}dddg|d}t|||dS)Nz def foo(x): ;r,z return xrArwrzr r r rM,s z'DisTests.test_big_offsets..funccsZfddt|D}|dd|d|dfg7}d|ddd|d<d |S) Nc s@g|]8}dd|d|dd|dd|dfqS)z %*d LOAD_FAST 0 (x) %*d LOAD_CONST 1 (1) %*d BINARY_ADD %*d STORE_FAST 0 (x) rr-r )r'rwr r r)3s.z?DisTests.test_big_offsets..expected..zK 3 %*d LOAD_FAST 0 (x) %*d RETURN_VALUE rrz 2rr&rv)r#rx)r{rr(r rr r[2s z+DisTests.test_big_offsets..expectedrr.r-ii)r#r\)rrMr[rr r r test_big_offsets+s zDisTests.test_big_offsetscCs4|tt|tt|tt|ttdSr6) r\expr_str dis_expr_strsimple_stmt_strdis_simple_stmt_strannot_stmt_strdis_annot_stmt_strcompound_stmt_strdis_compound_stmt_strrar r r test_disassemble_strGs   zDisTests.test_disassemble_strcCs|tjjtdSr6)r\r!__code__co_code dis_f_co_coderar r r test_disassemble_bytesMszDisTests.test_disassemble_bytescCs|ttdSr6)r\rdis_crar r r test_disassemble_classPszDisTests.test_disassemble_classcCs|tdjtdSr)r\rrdis_c_instance_methodrar r r test_disassemble_instance_methodSsz)DisTests.test_disassemble_instance_methodcCstdjjj}||tdSr)rrrrr\dis_c_instance_method_bytes)rZmethod_bytecoder r r &test_disassemble_instance_method_bytesVsz/DisTests.test_disassemble_instance_method_bytescCs|tjtdSr6)r\rrdis_c_static_methodrar r r test_disassemble_static_methodZsz'DisTests.test_disassemble_static_methodcCs|tjtdSr6)r\rrdis_c_class_methodrar r r test_disassemble_class_method]sz&DisTests.test_disassemble_class_methodcCs(|t}|td}|||dSr)rRr:rZ)rZgen_func_disasZ gen_disasr r r test_disassemble_generator`s z#DisTests.test_disassemble_generatorcCs(|t}|td}|||dSr)rRr;rZ)rZagen_func_disasZ agen_disasr r r test_disassemble_async_generatores z)DisTests.test_disassemble_async_generatorcCs4|t}td}|||}|||dSr)rRr=closerZ)rZcoro_func_disascoroZ coro_disasr r r test_disassemble_coroutinejs   z#DisTests.test_disassemble_coroutinecCs|ttdSr6)r\r5 dis_fstringrar r r test_disassemble_fstringqsz!DisTests.test_disassemble_fstringcCs|tt|ttdSr6)r\r8dis_tryfinallyr9dis_tryfinallyconstrar r r test_disassemble_try_finallyts z%DisTests.test_disassemble_try_finallycCs0zt`WntyYn0|ttjddSr6)syslast_tracebackAttributeError assertRaises RuntimeErrorrIrar r r test_dis_nonexs  zDisTests.test_dis_nonec Cs|zt`WntyYn0z ddWn0tyX}z|j}|t_WYd}~n d}~00||jj|j}| d|dSr) rrrrrrStb_framef_codetb_lastir\)rrr Ztb_disr r r test_dis_tracebacks  zDisTests.test_dis_tracebackcCs|ttjtdSr6)r TypeErrorrIobjectrar r r test_dis_objectszDisTests.test_dis_objectcsTfdd}|tdd|tdd|tdd|tdd|tdd|tdS)Ncs,jtfi|}|}||dSr6)rRrBrWrZ)r[rPrIrar r checks z2DisTests.test_disassemble_recursive..checkrrXrrr&) dis_nested_0 dis_nested_1 dis_nested_2)rrr rar test_disassemble_recursives      z#DisTests.test_disassemble_recursive)rDT)rD)!rrrmaxDiffrRrSrWr\rbrerhrorqrsrurrrrrrrrrrrrrrrrrrr r r r rCs<  rCc@seZdZdddZdS)DisWithFileTestsrDTcKsDt}|r$tj|fd|i|ntj||fd|i||S)Nfile)rErFrIrJrKrLr r r rRs z DisWithFileTests.get_disassemblyN)rDTrrrrRr r r r rsra7Name: code_info Filename: (.*) Argument count: 1 Positional-only arguments: 0 Kw-only arguments: 0 Number of locals: 1 Stack size: 3 Flags: OPTIMIZED, NEWLOCALS, NOFREE Constants: 0: %r Names: 0: _format_code_info 1: _get_code_object Variable names: 0: x)z1Formatted details of methods, functions, or code.r6T)rc /s:|ffdd |f VdS)Nc st| dSr6r)r3r r2r4rfrr@r>r r rsztricky..fr ) r r2rr@r>r3r4rargskwdsr rr trickysra.Name: tricky Filename: (.*) Argument count: 5 Positional-only arguments: 2 Kw-only arguments: 3 Number of locals: 10 Stack size: 9 Flags: OPTIMIZED, NEWLOCALS, VARARGS, VARKEYWORDS, GENERATOR Constants: 0: None 1: 2: 'tricky..f' Variable names: 0: a 1: b 2: x 3: y 4: z 5: c 6: d 7: e 8: args 9: kwds Cell variables: 0: [abedfxyz] 1: [abedfxyz] 2: [abedfxyz] 3: [abedfxyz] 4: [abedfxyz] 5: [abedfxyz]apFilename: (.*) Argument count: 1 Positional-only arguments: 0 Kw-only arguments: 0 Number of locals: 1 Stack size: 10 Flags: OPTIMIZED, NEWLOCALS, NESTED Constants: 0: None Names: 0: print Variable names: 0: c Free variables: 0: [abedfxyz] 1: [abedfxyz] 2: [abedfxyz] 3: [abedfxyz] 4: [abedfxyz] 5: [abedfxyz]zName: Filename: Argument count: 0 Positional-only arguments: 0 Kw-only arguments: 0 Number of locals: 0 Stack size: 2 Flags: NOFREE Constants: 0: 1 Names: 0: xzName: Filename: Argument count: 0 Positional-only arguments: 0 Kw-only arguments: 0 Number of locals: 0 Stack size: 2 Flags: NOFREE Constants: 0: 1 1: None Names: 0: xzName: Filename: Argument count: 0 Positional-only arguments: 0 Kw-only arguments: 0 Number of locals: 0 Stack size: 2 Flags: NOFREE Constants: 0: 0 1: 1 2: None Names: 0: xc sZdIdHt2z 3dHW}q6t4IdH}WdIdHqV1IdHsL0YdSr)r2r3)r r4r r r async_def+s ra5Name: async_def Filename: (.*) Argument count: 0 Positional-only arguments: 0 Kw-only arguments: 0 Number of locals: 2 Stack size: 9 Flags: OPTIMIZED, NEWLOCALS, NOFREE, COROUTINE Constants: 0: None 1: 1 Names: 0: b 1: c Variable names: 0: a 1: dc@s\eZdZejefeefee fe e fe e feefeefgZddZddZddZddZd S) CodeInfoTestscCs,d|_|jD]\}}|t||q dSNr})r test_pairs assertRegexrI code_info)rrr[r r r test_code_infoNszCodeInfoTests.test_code_infoc Csd|_|jD]r\}}t}t|Wdn1s:0Y|||dt}tj||d|||q dS)Nr} r) rrrrIZ show_coderrKrErF)rrr[rQr r r test_show_codeSs(zCodeInfoTests.test_show_codecCs|ttjtdSr6)rrrIrrrar r r test_code_info_object]sz#CodeInfoTests.test_code_info_objectcCs|tdddS)NrZ0x0)rZrIZ pretty_flagsrar r r test_pretty_flags_no_flags`sz(CodeInfoTests.test_pretty_flags_no_flagsN)rrrrIrcode_info_code_inforcode_info_trickyco_tricky_nested_fcode_info_tricky_nested_frcode_info_expr_strrcode_info_simple_stmt_strrcode_info_compound_stmt_strrcode_info_async_defrrrrrr r r r rCs  rcs(dfdd }tddgid|S) Nr&r-cs&dfdd }t|S)Nr.rcst||dSr6r)rrr1r r innerhsouter..f..inner)r.rr)r3r4rr7)r3r4r rgsouter..frvr Hello world!)r&r-r)r r2rr r7r outerfsrcCstdD]"}t||dkrq|dkrq4qtd|r^t||d8}|dkrRq4|dkr4qfq4tdz`z ddWntytdYn.0|}td Wdn1s0YWtd n td 0dS) Nr"r-rI can haz else clause?r%Who let lolcatz into this test suite?r%Here we go, here we go, here we go...Never reach thisOK, now we're done)r#rZeroDivisionError)rdodgyr r r jumpyos,   (rr^dr)r&r-z(3, 4)F)rdrmargZargvalZargreproffsetZ starts_lineZis_jump_targetZ LOAD_CLOSUREr r2Z BUILD_TUPLEfrvrrz'outer..f'r"Z MAKE_FUNCTIONr]zdefaults, closure Z STORE_FAST}rZ LOAD_GLOBALtrZ LOAD_DEREFz''1Z BUILD_LISTgZ BUILD_MAPirz'Hello world!'Z CALL_FUNCTION ZPOP_TOP"rc|$Z RETURN_VALUES&)r.rz(5, 6)r3r4rz!'outer..f..inner'rrNoner#Z10ZGET_ITERDZFOR_ITER],zto 44rr0Z COMPARE_OPk4(*rz'I can haz else clause?'.02 ^68:<>@ BZINPLACE_SUBTRACTFHJLRNPTVXZ\rz''Who let lolcatz into this test suite?'`bZ SETUP_FINALLYzzto 200vzto 118hj0lZBINARY_TRUE_DIVIDEnpZ POP_BLOCKWZ JUMP_FORWARDzto 144ZDUP_TOPrxriy~rz''Here we go, here we go, here we go...'Z POP_EXCEPTYzto 188ZRERAISEZ SETUP_WITHzto 172rrz'Never reach this'ZWITH_EXCEPT_START1ZPOP_JUMP_IF_TRUEsrz"OK, now we're done"zto 210cCsdSr6r r r r r simpleSr*rncsLeZdZfddZddZddZddZd d Zd d Zd dZ Z S)InstructionTestscstj|d|_dSr6)superrr)rr __class__r r r\s zInstructionTests.__init__cCstt}|t|tdSr6rIget_instructionsrnrZlistexpected_opinfo_simpleractualr r r test_default_first_line`s z(InstructionTests.test_default_first_linecCs"tjtdd}|t|tdSNZ first_linersrwr r r test_first_line_set_to_Nonedsz,InstructionTests.test_first_line_set_to_NonecCs"tjttd}|t|tdSrz)rIrtrexpected_outer_linerZruexpected_opinfo_outerrwr r r test_outerhszInstructionTests.test_outercCsNtt}Wdn1s"0Ytj|td}|t|tdSrz)rrrIrtexpected_f_linerZruexpected_opinfo_f)rrrxr r r test_nestedls$zInstructionTests.test_nestedcCsPtt}Wdn1s$0Ytj|td}|t|tdSrz)rrrIrtexpected_inner_linerZruexpected_opinfo_inner)rrrxr r r test_doubly_nestedrs&z#InstructionTests.test_doubly_nestedcCs"tjttd}|t|tdSrz)rIrtrexpected_jumpy_linerZruexpected_opinfo_jumpyrwr r r test_jumpyxszInstructionTests.test_jumpy) rrrrryr|rrrr __classcell__r r rqr roZs roc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) BytecodeTestsc CsvttdjdtjfD]J}|j|d*t|}||jt j Wdq1sT0Yq| t tjt dSNrza=1)obj)r!rrrrkrIBytecodeZassertIsInstanceZcodeobjtypesCodeTyperrr)rrr2r r r test_instantiations  0z BytecodeTests.test_instantiationc CsrttdjdtjfD]X}|j|d8tt|}tt|}| ||Wdq1sb0YqdSr) r!rrrrkrurIrrtrZ)rrZ via_objectZ via_generatorr r r test_iterations zBytecodeTests.test_iterationcCs"tjttd}|t|tdSrz)rIrrr}rZrur~rwr r r test_explicit_first_linesz&BytecodeTests.test_explicit_first_linecCsltt}|dd}ttjj}|||tjtdd}|dd}||ddS)Nr/ri^r{Z350) rIrrnstrip partitionstrrco_firstlinenorZ)rrxr[r r r test_source_line_in_disassemblys  z-BytecodeTests.test_source_line_in_disassemblycCs4d|_tjD]"\}}t|}|||q dSr)rrrrIrrinfo)rrr[r2r r r test_infos zBytecodeTests.test_infocCstt}||tdSr6)rIrr!rZrprwr r r test_disassembledszBytecodeTests.test_disassembledcCs4t}tj|}|jr |j}q||j|jdSr6)rrIrfrom_tracebackr rZZcurrent_offsetrrr r2r r r test_from_tracebacks z!BytecodeTests.test_from_tracebackcCs&t}tj|}||tdSr6)rrIrrrZ dis_tracebackrr r r test_from_traceback_diss z%BytecodeTests.test_from_traceback_disN) rrrrrrrrrrrr r r r r~s  rcsBeZdZddfdd ZddZddZd d Zd d ZZS) TestDisTracebackN)returncs&zt`WntyYn0tSr6)rrrrpsetUprarqr r rs  zTestDisTraceback.setUpcCsDt}t|t|Wdn1s20Y|Sr6rErFrGrHrIdistbrKrr rQr r r rRs (z TestDisTraceback.get_disassemblycCs6|ttWdn1s(0YdSr6)rrrIrrar r r test_distb_emptys z!TestDisTraceback.test_distb_emptycCs"t}|t_||dtdSr6)rrrrZrRrrr r r r test_distb_last_tracebacksz*TestDisTraceback.test_distb_last_tracebackcCst}|||tdSr6)rrZrRrrr r r test_distb_explicit_argsz(TestDisTraceback.test_distb_explicit_arg) rrrrrRrrrrr r rqr rs rc@seZdZddZdS)TestDisTracebackWithFilecCsHt}t|tj||dWdn1s60Y|S)Nrrrr r r rRs ,z(TestDisTracebackWithFile.get_disassemblyNrr r r r rsr__main__)T)rr)eZ test.supportrZtest.support.bytecode_helperrZunittestrrIrErTrrGrrrZTRACEBACK_CODErrrrrrrrrrrrr!rprr%rrr+__file__rtrrrrrrrrrrrrr5rr8r9rrr:r;r=rBrrrZTestCaserCrflagsoptimizerrrr__func__ co_constsrrrrrrrrrrr}Z _line_offsetZ code_object_frZcode_object_innerrrZ Instructionreprr~rrrrnrvrorrrmainr r r r s                          #)                     M  !#       o $8