grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B cGDF+d@Mã @sðddlZddlZddlZddlZddlTddlmZdddddd d d d d dg eZ[ejejej e e e fZ edZdd„ZdOdddœdd„ZdPddœdd„Zddddddddddd œ Zd!d"„Zd#d$„Zd%d„Zd&d'„Zddœd(d „Ze d)d*¡Zd+ej_d,ej_d-ej_d.ej_d/ej_d0ej _d1ej!_d2ej"_d3Z#d4Z$Gd5d „d eƒZ%dd6œd7d „Z&d8d9„Z'd:d;„Z(dQd            )rcCs\|dkrDy tj}Wntk r0tdƒd‚YnXx|jrB|j}q4Wt|jj|j|d�dS)Nz no last traceback to disassemble)r) ÚsysÚlast_tracebackÚAttributeErrorÚ RuntimeErrorÚtb_nextrÚtb_frameÚf_codeÚtb_lasti)ÚtbrrrrrOs  Z OPTIMIZEDZ NEWLOCALSZVARARGSZ VARKEYWORDSZNESTEDZ GENERATORZNOFREEZ COROUTINEZITERABLE_COROUTINEZASYNC_GENERATOR) éééééé é@é€éicCsbg}xRtdƒD]8}d|>}||@r| t |t|ƒ¡¡||N}|sPqW| t|ƒ¡d |¡S)NrBr=z, )ÚrangeÚappendÚCOMPILER_FLAG_NAMESÚgetÚhexÚjoin)ÚflagsÚnamesÚiÚflagrrrÚ pretty_flagsisrPcCsŽt|dƒr|j}t|dƒr"|j}n4t|dƒr4|j}n"t|dƒrF|j}nt|dƒrV|j}t|tƒrjt|dƒ}t|dƒrx|St dt |ƒj ƒ‚dS) Nrrrrr z r"z(don't know how to disassemble %s objects) r#rrrrr r&r.rr)r0r1)r2rrrÚ_get_code_objectws         rQcCs tt|ƒƒS)N)Ú_format_code_inforQ)r2rrrrŽscCs†g}| d|j¡| d|j¡| d|j¡| d|j¡| d|j¡| d|j¡| dt|jƒ¡|j rª| d¡x t |j ƒD]}| d |¡q”W|j rÜ| d ¡x t |j ƒD]}| d |¡qÆW|j �r| d ¡x t |j ƒD]}| d |¡qúW|j �rF| d ¡x"t |j ƒD]}| d |¡�q.W|j�r|| d¡x"t |jƒD]}| d |¡�qdWd |¡S)NzName: %szFilename: %szArgument count: %szKw-only arguments: %szNumber of locals: %szStack size: %szFlags: %sz Constants:z%4d: %rzNames:z%4d: %szVariable names:zFree variables:zCell variables:Ú )rGÚco_nameÚ co_filenameÚ co_argcountÚco_kwonlyargcountÚ co_nlocalsÚ co_stacksizerPÚco_flagsÚ co_constsÚ enumerateÚco_namesÚ co_varnamesÚ co_freevarsÚ co_cellvarsrK)ÚcoÚlinesZi_cZi_nrrrrR’s:     rRcCstt|ƒ|d�dS)N)r)r(r)rarrrrr ±sÚ _InstructionzBopname opcode arg argval argrepr offset starts_line is_jump_targetz!Human readable name for operationzNumeric code for operationz6Numeric argument to operation (if any), otherwise Nonez4Resolved arg value (if known), otherwise same as argz0Human readable description of operation argumentz1Start index of operation within bytecode sequencez4Line started by this opcode (if any), otherwise Nonez1True if other code jumps to here, otherwise Falseééc@seZdZddd„ZdS)r éFr?cCsàg}|r:|jdk r,d|}| ||j¡n| d|¡|rJ| d¡n | d¡|jrf| d¡n | d¡| t|jƒ |¡¡| |j t¡¡|j dk rÒ| t|j ƒ t ¡¡|j rÒ| d|j d¡d  |¡  ¡S) Nz%%%ddú z-->z z>>z ú(ú))Ú starts_linerGÚis_jump_targetÚreprÚoffsetÚrjustÚopnameÚljustÚ _OPNAME_WIDTHÚargÚ _OPARG_WIDTHÚargreprrKÚrstrip)ÚselfÚ lineno_widthZmark_as_currentÚ offset_widthZfieldsZ lineno_fmtrrrÚ _disassembleÕs&      zInstruction._disassembleN)rfFr?)r1Ú __module__Ú __qualname__ryrrrrr Çs)Ú first_linecCsTt|ƒ}|j|j}tt|ƒƒ}|dk r4||j}nd}t|j|j|j |j |||ƒS)Nr) rQr`r_Údictr Úco_firstlinenoÚ_get_instructions_bytesr"r^r]r[)r2r|raÚ cell_namesÚ linestartsÚ line_offsetrrrr ûs    cCs |}|dk r||}|t|ƒfS)N)rl)Z const_indexZ const_listÚargvalrrrÚ_get_const_infosr„cCs*|}|dk r||}|}nt|ƒ}||fS)N)rl)Z name_indexZ name_listrƒrtrrrÚ_get_name_infos r…c csxt|ƒ}d}�xdt|ƒD�]V\} } } |dk rH| | d¡}|dk rH||7}| |k} d} d}| dk �rT| } | tkr~t| |ƒ\} }nÖ| tkr–t| |ƒ\} }n¾| tkr¸| d| } dt| ƒ}nœ| t krÐt| |ƒ\} }n„| t kræt | } | }nn| t krþt| |ƒ\} }nV| t k�rTdtttf| d@t| d@ƒf} d| d@}| d�rT|�rL|d7}|d 7}tt| | | | || || ƒVqWdS) NÚr>zto rfr?)r†r.rlÚasciir=z, z with format)r Ú_unpack_opargsrIZhasconstr„Zhasnamer…ÚhasjrelrlZhaslocalZ hascompareZcmp_opZhasfreerr.r‡Úboolr ro)ÚcodeÚvarnamesrMÚ constantsÚcellsr�r‚ÚlabelsrjrmÚoprrrkrƒrtrrrr-sH         réÿÿÿÿc Cs<|j|j}tt|ƒƒ}t|j||j|j|j|||d�dS)N)r) r`r_r}r r-r"r^r]r[)raÚlastirr€r�rrrr`s  cCstt||d�|dks|dkrp|dk r,|d}xB|jD]8}t|dƒr4t|d�td|f|d�t|||d�q4WdS)N)rrr=r"zDisassembly of %r:)rr)rr[r#r(r*)rarrr2rrrr*gs    r*)rr‚c CsÌ|dk } | r8t| ¡ƒ|} | dkr2tt| ƒƒ} qi'r?)r‚)r) ÚmaxÚvaluesÚlenr.rrjrmr(ry)r‹r’rŒrMr�rŽr�rr‚Z show_linenoZ maxlinenorwZ maxoffsetrxZinstrZnew_source_lineZis_current_instrrrrr-rs,       r-cKstt|dƒf|ŽdS)Nz)r*r)rÚkwargsrrrr/�sr/ccshd}x^tdt|ƒdƒD]J}||}|tkrP||d|B}|tkrJ|d>nd}nd}|||fVqWdS)Nrr>r=r@)rFr•Z HAVE_ARGUMENTZ EXTENDED_ARG)r‹Z extended_argrNr�rrrrrrˆ–srˆcCs`g}xVt|ƒD]J\}}}|dk r|tkr6|d|}n|tkr|}nq||kr| |¡qW|S)Nr>)rˆr‰ZhasjabsrG)r‹r�rmr�rrZlabelrrrr ¡sccs–|jddd…}|jddd…}d}|j}d}xPt||ƒD]B\}}|rd||kr\||fV|}||7}|dkrt|d8}||7}q:W||kr’||fVdS)Nrr>r=rDrE)Ú co_lnotabr~Úzip)r‹Zbyte_incrementsZline_incrementsZ lastlinenoÚlinenoZaddrZ byte_incrZ line_incrrrrr ´s   c@sHeZdZdddœdd„Zdd„Zdd„Zed d „ƒZd d „Zd d„Z dS)rN)r|Úcurrent_offsetcCsdt|ƒ|_}|dkr&|j|_d|_n||_||j|_|j|j|_tt |ƒƒ|_ ||_ ||_ dS)Nr) rQÚcodeobjr~r|Ú _line_offsetr`r_Ú _cell_namesr}r Ú _linestartsÚ_original_objectrš)rvr2r|ršrarrrÚ__init__Õs zBytecode.__init__c Cs*|j}t|j|j|j|j|j|j|jd�S)N)r‚) r›rr"r^r]r[r�ržrœ)rvrarrrÚ__iter__âs zBytecode.__iter__cCsd |jj|j¡S)Nz{}({!r}))ÚformatÚ __class__r1rŸ)rvrrrÚ__repr__és zBytecode.__repr__cCs$x|jr|j}qW||jj|jd�S)N)rš)r8r9r:r;)Úclsr<rrrÚfrom_tracebackís zBytecode.from_tracebackcCs t|jƒS)N)rRr›)rvrrrÚinfoôsz Bytecode.infoc Cs`|j}|jdk r|j}nd}t ¡�2}t|j|j|j|j|j |j |j ||d� |  ¡SQRXdS)Nr‘)rŒrMr�rŽr�r‚rr’) r›ršÚioÚStringIOr-r"r^r]r[r�ržrœÚgetvalue)rvrarmÚoutputrrrrøs   z Bytecode.dis) r1rzr{r r¡r¤Ú classmethodr¦r§rrrrrrÍs   c Csdddl}| ¡}|jd| ¡ddd�| ¡}|j�}| ¡}WdQRXt||jjdƒ}t |ƒdS)NrÚinfileú?ú-)r0ÚnargsÚdefaultr) ÚargparseÚArgumentParserÚ add_argumentÚFileTypeÚ parse_argsr­Úreadrrr)r²ÚparserÚargsr­rr‹rrrÚ_test srºÚ__main__)N)N)NNNNNr)r‘)r‘NNNNN)5r4ÚtypesÚ collectionsr¨ZopcoderZ _opcodes_allÚ MethodTypeÚ FunctionTypeÚCodeTyper¬Ú staticmethodr0r'ZopmaprrrrrHrPrQrrRr Ú namedtuplercroÚ__doc__rrrƒrtrmrjrkrqrsr r r„r…rrr*r-r/rrˆr r rrºr1rrrrÚs|     -4  2  =