§
    ƒÛgíê  ã                   ód  — d Z ddlZddlmZ ddlZddlmZmZmZ ddl	m
Z
 ddlmZmZmZ ddlmZmZ ddlmZ dd	lmZ  ej        e¦  «        Zd
ZeZ eh d£¦  «        Ze
 G d„ de¦  «        ¦   «         Z G d„ de¦  «        Z G d„ de¦  «        Z d„ Z! G d„ de¦  «        Z"e
 G d„ de¦  «        ¦   «         Z# G d„ de#¦  «        Z$edk    re$Z%nedk     re#Z%n e&e¦  «        ‚ edg d¢¦  «        Z' G d„ de¦  «        Z( edg d¢¦  «        Z)d „ Z*d!„ Z+ G d"„ d#e¦  «        Z, G d$„ d%e¦  «        Z-dS )&z)
Implement python 3.8+ bytecode analysis
é    N)Úpformat)Ú
namedtupleÚdefaultdictÚdeque)Útotal_ordering)Ú
UniqueDictÚ	PYVERSIONÚALL_BINOPS_TO_OPERATORS)ÚNEW_BLOCKERSÚCFGraph)ÚLoc)ÚUnsupportedErroré   >   ÚNOPÚPRECALLÚ
LOAD_CONSTÚ
LOAD_DEREFc                   óJ   — e Zd ZdZ eh d£¦  «        Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dS )	Ú	BlockKindz?Kinds of block to make related code safer than just `str`.
    >   ÚTRYÚLOOPÚWITHÚEXCEPTÚFINALLYÚWITH_FINALLYc                 ó*   — || j         v sJ ‚|| _        d S ©N)Ú_membersÚ_value)ÚselfÚvalues     úI/granary/edev/quantum/lib/python3.11/site-packages/numba/core/byteflow.pyÚ__init__zBlockKind.__init__&   s    € Ø˜œÐ%Ð%Ð%Ð%ØˆŒˆˆó    c                 óH   — t          t          | ¦  «        | j        f¦  «        S r   )ÚhashÚtyper   ©r    s    r"   Ú__hash__zBlockKind.__hash__*   s   € Ý•T˜$‘Z”Z ¤Ð-Ñ.Ô.Ð.r$   c                 óª   — t          |t          ¦  «        r| j        |j        k     S t          d                     t          |¦  «        ¦  «        ¦  «        ‚©Nzcannot compare to {!r}©Ú
isinstancer   r   Ú	TypeErrorÚformatr'   ©r    Úothers     r"   Ú__lt__zBlockKind.__lt__-   sG   € Ý�e�YÑ'Ô'ð 	JØ”; ¤Ò-Ð-åÐ4×;Ò;½DÀ¹K¼KÑHÔHÑIÔIÐIr$   c                 óª   — t          |t          ¦  «        r| j        |j        k    S t          d                     t          |¦  «        ¦  «        ¦  «        ‚r+   r,   r0   s     r"   Ú__eq__zBlockKind.__eq__3   sG   € Ý�e�YÑ'Ô'ð 	JØ”; %¤,Ò.Ð.åÐ4×;Ò;½DÀ¹K¼KÑHÔHÑIÔIÐIr$   c                 ó6   — d                      | j        ¦  «        S )NzBlockKind({}))r/   r   r(   s    r"   Ú__repr__zBlockKind.__repr__9   s   € Ø×%Ò% d¤kÑ2Ô2Ð2r$   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	frozensetr   r#   r)   r2   r4   r6   © r$   r"   r   r      s�   € € € € € ðð àˆyð ð ð ñ ô €Hðð ð ð/ð /ð /ðJð Jð JðJð Jð Jð3ð 3ð 3ð 3ð 3r$   r   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú_lazy_pformatc                 ó"   — || _         || _        d S r   )ÚargsÚkwargs)r    r@   rA   s      r"   r#   z_lazy_pformat.__init__>   s   € ØˆŒ	ØˆŒˆˆr$   c                 ó.   — t          | j        i | j        ¤ŽS r   )r   r@   rA   r(   s    r"   Ú__str__z_lazy_pformat.__str__B   s   € Ý˜œ	Ð1 T¤[Ð1Ð1Ð1r$   N)r7   r8   r9   r#   rC   r<   r$   r"   r>   r>   =   s2   € € € € € ðð ð ð2ð 2ð 2ð 2ð 2r$   r>   c                   ót   — e Zd ZdZd„ Zd„ Zedk    rd„ Znedk     rd„ Zn ee¦  «        ‚d„ Z	d„ Z
d	„ Zd
„ ZdS )ÚFlowziData+Control Flow analysis.

    Simulate execution to recover dataflow and controlflow information.
    c                 ó”   — t                                d|                     ¦   «         ¦  «         || _        t	          ¦   «         | _        d S )Nzbytecode dump:
%s)Ú_loggerÚdebugÚdumpÚ	_bytecoder   Úblock_infos)r    Úbytecodes     r"   r#   zFlow.__init__K   s8   € Ý�ŠÐ*¨H¯MªM©O¬OÑ<Ô<Ð<Ø!ˆŒÝ%™<œ<ˆÔÐÐr$   c                 óÎ  — t          | j        ddd¬¦  «        }t          | j        j        j        ¬¦  «        }|j                             |¦  «         t          ¦   «         }|j        �rzt           	                    d|j        ¦  «         |j         
                    ¦   «         }||j        v�r/t           	                    d|j        ¦  «         t           	                    d|¦  «         |||j        <   	 |                     |¦  «         |                     ¦   «         rnW|                      ||¦  «        rn@|                      |¦  «        r*|                      |¦  «         |                     ¦   «          nŒ�t           	                    d	|j        ¦  «         |j                             |¦  «         |                     ¦   «         }|j                             |¦  «         |j        �°z|                      |j        ¦  «         |                      |¦  «         t5          |j        d
„ ¬¦  «        D ]<}t7          |¦  «        x| j        |j        <   }t           	                    d||¦  «         Œ=dS )aì  Run a trace over the bytecode over all reachable path.

        The trace starts at bytecode offset 0 and gathers stack and control-
        flow information by partially interpreting each bytecode.
        Each ``State`` instance in the trace corresponds to a basic-block.
        The State instances forks when a jump instruction is encountered.
        A newly forked state is then added to the list of pending states.
        The trace ends when there are no more pending states.
        r   r<   )rL   ÚpcÚnstackÚ
blockstack)Údebug_filenamezpending: %sz	stack: %szstate.pc_initial: %sTzend state. edges=%sc                 ó   — | j         S r   )Ú
pc_initial)Úxs    r"   ú<lambda>zFlow.run.<locals>.<lambda>†   s   € ¸1¼<€ r$   )Úkeyzblock_infos %s:
%sN)ÚStaterJ   ÚTraceRunnerÚfunc_idÚfilenameÚpendingÚappendr   rG   rH   ÚpopleftÚfinishedÚ_stackrS   ÚdispatchÚhas_terminatedÚ_run_handle_exceptionÚ_is_implicit_new_blockÚ_guard_with_asÚsplit_new_blockÚoutgoing_edgesÚaddÚget_outgoing_statesÚextendÚ
_build_cfgÚ_prune_phisÚsortedÚadapt_state_infosrK   )r    Ú
firststateÚrunnerÚfirst_encounterÚstateÚ
out_statesÚsis          r"   ÚrunzFlow.runP   sS  € õ  D¤N°qÀØ&(ð*ñ *ô *ˆ
å¨D¬NÔ,BÔ,KÐLÑLÔLˆØŒ×Ò˜jÑ)Ô)Ð)õ
 %™,œ,ˆð Œnñ 	2Ý�MŠM˜-¨¬Ñ8Ô8Ð8Ø”N×*Ò*Ñ,Ô,ˆEØ˜FœOÐ+Ñ+Ý—’˜k¨5¬<Ñ8Ô8Ð8Ý—’Ð4°eÑ<Ô<Ð<Ø49� Ô 0Ñ1ð"Ø—O’O EÑ*Ô*Ð*à×+Ò+Ñ-Ô-ð "Øà×5Ò5°f¸eÑDÔDð "Ø!à×6Ò6°uÑ=Ô=ð "à ×/Ò/°Ñ6Ô6Ð6à!×1Ò1Ñ3Ô3Ð3Ø!ð"õ —’Ð3°UÔ5IÑJÔJÐJØ”×#Ò# EÑ*Ô*Ð*Ø"×6Ò6Ñ8Ô8�
Ø”×%Ò% jÑ1Ô1Ð1ð5 Œnñ 	2ð: 	�Š˜œÑ(Ô(Ð(à×Ò˜Ñ Ô Ð å˜FœOÐ1GÐ1GÐHÑHÔHð 	<ð 	<ˆEÝ6GÈÑ6NÔ6NÐNˆDÔ˜UÔ-Ñ.°Ý�MŠMÐ/°¸Ñ;Ô;Ð;Ð;ð	<ð 	<r$   ©é   é   c                 ó0  — |                      ¦   «         sx|                     ¦   «         rd|                     ¦   «         j        t          vrD|                     |                     ¦   «         j        ¬¦  «         |                     |¦  «         dS |                     ¦   «          |                      ¦   «         sß| 	                    ¦   «         rÍt                               d|                     ¦   «         |j        ¦  «         |                     ¦   «         }|                     d¦  «        }|r|d         |j        k    rd }d S |                     d|j        ¬¦  «        }|j        |d<   |j        |d<   |j        |d	<   |                     |j        |¬
¦  «         dS d S d S )N©rN   Tz3.11 exception %s PC=%sr   Úend©rz   Ú
end_offsetÚstack_depthÚ
push_lasti©rN   Úextra_block)Úin_withÚhas_active_tryÚget_instÚopnameÚ_NO_RAISE_OPSÚforkÚnextÚ_adjust_except_stackÚ
advance_pcÚis_in_exceptionrG   rH   Úget_exceptionÚ_pcÚget_top_blockÚtargetÚ
make_blockrz   ÚdepthÚlasti)r    ro   rq   ÚehÚeh_topÚeh_blocks         r"   rb   zFlow._run_handle_exception‹   s’  € Ø—=’=‘?”?ð $Ø×(Ò(Ñ*Ô*ð$à—N’NÑ$Ô$Ô+µ=Ð@Ð@à—
’
˜eŸnšnÑ.Ô.Ô3�
Ñ4Ô4Ð4Ø×+Ò+¨EÑ2Ô2Ð2Ø�tà× Ò Ñ"Ô"Ð"ð —}’}‘”ð $¨5×+@Ò+@Ñ+BÔ+Bð $Ý—M’MÐ";Ø"'×"5Ò"5Ñ"7Ô"7¸¼ñDô Dð Dà×,Ò,Ñ.Ô.�BØ"×0Ò0°Ñ7Ô7�FØð 	$ &¨¤-°2´9Ò"<Ð"<à#'˜˜˜à#(×#3Ò#3°E¸r¼yÐ#3Ñ#IÔ#I˜Ø13´˜ Ñ.Ø24´(˜ Ñ/Ø13´˜ Ñ.ØŸ
š
 e¤i¸X˜
ÑFÔFÐFØ#˜tð$ð $ð $ð $r$   c                 óD  — |                      ¦   «         r÷|                     ¦   «         j        t          vr×|                     |                     ¦   «         j        ¬¦  «         |                     d¦  «        }|                     |¦  «         |j        }i }||d         k    r||d         z
  |d<   |d         }t          d¦  «        t          t          d¦  «        t          i|d                  |d	<   ||d
<    |j        dd|d         i|¤Ž dS |                     ¦   «          d S )Nry   r   Úentry_stackÚnpopÚhandlerr   r   ÚkindÚnpushr€   rN   rz   Tr<   )r‚   rƒ   r„   r…   r†   r‡   r�   Úpop_block_and_abover}   r   Ú_EXCEPT_STACK_OFFSETÚ_FINALLY_POPr‰   )r    ro   rq   ÚtryblkrO   rA   r˜   s          r"   rb   zFlow._run_handle_exception§   s.  € Ø×$Ò$Ñ&Ô&ð #Ø—N’NÑ$Ô$Ô+µ=Ð@Ð@à—
’
˜eŸnšnÑ.Ô.Ô3�
Ñ4Ô4Ð4Ø×,Ò,¨UÑ3Ô3�Ø×)Ò)¨&Ñ1Ô1Ð1ØÔ*�Ø�Ø˜F =Ô1Ò1Ð1Ø%+¨f°]Ô.CÑ%C�F˜6‘NØ  Ô+�å˜hÑ'Ô'Õ)=Ý˜iÑ(Ô(­,ð#ð ˜&”/ô##��w‘ð )0��}Ñ%Ø�”
Ð6Ð6˜f UœmÐ6¨vÐ6Ð6Ð6Ø�tà× Ò Ñ"Ô"Ð"Ð"Ð"r$   c                 ó$  — t          ¦   «         }|D ]}|j        }|                     |¦  «         Œ|D ]-}|j        D ]#}|                     |j        |j        d¦  «         Œ$Œ.|                     d¦  «         |                     ¦   «          || _        d S )Nr   )	r   rS   Úadd_noderf   Úadd_edgerN   Úset_entry_pointÚprocessÚcfgraph)r    Ú
all_statesÚgraphrq   ÚbÚedges         r"   rj   zFlow._build_cfg¿   s§   € Ý‘	”	ˆØð 	ð 	ˆEØÔ ˆAØ�NŠN˜1ÑÔÐÐØð 	=ð 	=ˆEØÔ,ð =ð =�Ø—’˜uÔ/°´¸!Ñ<Ô<Ð<Ð<ð=à×Ò˜aÑ Ô Ð Ø�Š‰ŒˆØˆŒˆˆr$   c                 óž  ‡‡	— t                                d                     dd¦  «        ¦  «         ˆfd„}ˆ	ˆfd„}ˆ	fd„}ˆfd„} |¦   «         \  }Š	t                                dt          |¦  «        ¦  «          |¦   «         \  }} ||¦  «          |||¦  «         t                                d	                     dd¦  «        ¦  «         d S )
Nz
Prune PHIsé<   ú-c                  óä   •— t          t          ¦  «        } t          ¦   «         }‰j        D ]B}t          |j        ¦  «        }t          |j        ¦  «        }| |xx         ||z  z  cc<   ||z  }ŒC| |fS r   )r   Úsetr^   Ú
_used_regsÚ_phis)Ú	used_phisÚphi_setrq   ÚusedÚphisro   s        €r"   Úget_used_phis_per_statez1Flow._prune_phis.<locals>.get_used_phis_per_stateÓ   s   ø€ Ý#¥CÑ(Ô(ˆIÝ‘e”eˆGØœð  ð  �Ý˜5Ô+Ñ,Ô,�Ý˜5œ;Ñ'Ô'�Ø˜%Ð Ð Ô  D¨4¡KÑ/Ð Ð Ñ Ø˜4‘��Ø˜gÐ%Ð%r$   c                  óv  •— i } t          t          ¦  «        }‰j        D ]G}|j                             ¦   «         D ]+\  }}|‰vr|| |<   ||                              ||f¦  «         Œ,ŒHt                               dt          | ¦  «        ¦  «         t                               dt          |¦  «        ¦  «         | |fS )Nz
defmap: %szphismap: %s)	r   r­   r^   Ú_outgoing_phisÚitemsrg   rG   rH   r>   )ÚdefmapÚphismaprq   ÚphiÚrhsr±   ro   s        €€r"   Úfind_use_defsz'Flow._prune_phis.<locals>.find_use_defsÞ   sÄ   ø€ ØˆFÝ!¥#Ñ&Ô&ˆGØœð 3ð 3�Ø %Ô 4× :Ò :Ñ <Ô <ð 3ð 3‘H�C˜Ø 'Ð)Ð)à&+˜˜s™Ø˜C”L×$Ò$ c¨5 \Ñ2Ô2Ð2Ð2ð	3õ
 �MŠM˜,­°fÑ(=Ô(=Ñ>Ô>Ð>Ý�MŠM˜-­°wÑ)?Ô)?Ñ@Ô@Ð@Ø˜7�?Ð"r$   c                 ó¸  •— t          t          ¦  «        }	 d}t          t          |                      ¦   «         ¦  «        ¦  «        D ]g\  }}t          t          |¦  «        ¦  «        D ]1\  }}|‰v r(|| |         z  }||                              ||f¦  «         Œ2||         }||z  r||z  }d}Œht                               dt          | ¦  «        ¦  «         |sdS ŒÅ)znAn iterative dataflow algorithm to find the definition
            (the source) of each PHI node.
            TFzchanging phismap: %sN)	r   r­   rl   Úlistr·   rg   rG   rH   r>   )	r¹   Ú	blacklistÚchangingrº   Údefsitesr»   rq   Ú	to_remover±   s	           €r"   Úpropagate_phi_mapz+Flow._prune_phis.<locals>.propagate_phi_mapë   sñ   ø€ õ $¥CÑ(Ô(ˆIðØ �Ý%+­D°·²±´Ñ,AÔ,AÑ%BÔ%Bð (ð (‘M�C˜Ý&,­T°(©^¬^Ñ&<Ô&<ð =ð =™
˜˜UØ '˜>˜>Ø$¨°¬Ñ4˜HØ% cœN×.Ò.°°U¨|Ñ<Ô<Ð<øØ )¨#¤�IØ  8Ñ+ð (Ø  IÑ-˜Ø#'˜øå—’Ð4µmÀGÑ6LÔ6LÑMÔMÐMØð Ø�Eðr$   c                 óê  •— i }|                       ¦   «         D ]\  }}|D ]}||         ||<   ŒŒt                               dt          |¦  «        ¦  «         t	          t
          ¦  «        }|D ]}||         D ]\  }}|||         |<   ŒŒt                               dt          |¦  «        ¦  «         ‰j        D ];}|j                             ¦   «          |j         	                    ||         ¦  «         Œ<d S )Nzkeep phismap: %sznew_out: %s)
r·   rG   rH   r>   r   Údictr^   r¶   ÚclearÚupdate)	r°   r¹   Úkeeprq   Úused_setrº   Únew_outr»   ro   s	           €r"   Úapply_changesz'Flow._prune_phis.<locals>.apply_changes  s  ø€ ØˆDØ#,§?¢?Ñ#4Ô#4ð -ð -‘��xØ#ð -ð -�CØ '¨¤�D˜‘I�Ið-å�MŠMÐ,­m¸DÑ.AÔ.AÑBÔBÐBÝ!¥$Ñ'Ô'ˆGØð .ð .�Ø"& s¤)ð .ð .‘J�C˜Ø*-�G˜E”N 3Ñ'Ð'ð.õ �MŠM˜-­°wÑ)?Ô)?Ñ@Ô@Ð@Øœð <ð <�ØÔ$×*Ò*Ñ,Ô,Ð,ØÔ$×+Ò+¨G°E¬NÑ;Ô;Ð;Ð;ð<ð <r$   zUsed_phis: %szDONE Prune PHIs)rG   rH   Úcenterr>   )
r    ro   r´   r¼   rÃ   rË   r°   r¸   r¹   r±   s
    `       @r"   rk   zFlow._prune_phisË   s  øø€ å�Š�l×)Ò)¨"¨cÑ2Ô2Ñ3Ô3Ð3ð	&ð 	&ð 	&ð 	&ð 	&ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð	ð 	ð 	ð 	ð 	ð,	<ð 	<ð 	<ð 	<ð 	<ð  5Ð4Ñ6Ô6Ñˆ	�7Ý�Š�o¥}°YÑ'?Ô'?Ñ@Ô@Ð@Ø'˜-™/œ/‰ˆ�ØÐ˜'Ñ"Ô"Ð"Øˆ�i Ñ)Ô)Ð)Ý�ŠÐ'×.Ò.¨r°3Ñ7Ô7Ñ8Ô8Ð8Ð8Ð8r$   c                 óx   — |                      ¦   «         }|j        | j        j        v rdS |j        t
          v rdS dS )NTF)rƒ   ÚoffsetrJ   Úlabelsr„   r   ©r    rq   Úinsts      r"   rc   zFlow._is_implicit_new_block  s?   € Ø�~Š~ÑÔˆàŒ;˜$œ.Ô/Ð/Ð/Ø�4ØŒ[�LÐ(Ð(Ø�4à�5r$   c                 ó    — |                      ¦   «         }|j        dv r.| j        |j                 j        }|dk    rd}t	          |¦  «        ‚dS dS )zÞChecks if the next instruction after a SETUP_WITH is something other
        than a POP_TOP, if it is something else it'll be some sort of store
        which is not supported (this corresponds to `with CTXMGR as VAR(S)`).>   Ú
SETUP_WITHÚBEFORE_WITHÚPOP_TOPzGThe 'with (context manager) as (variable):' construct is not supported.N)rƒ   r„   rJ   r‡   r   )r    rq   Úcurrent_instÚnext_opÚmsgs        r"   rd   zFlow._guard_with_as"  se   € ð —~’~Ñ'Ô'ˆØÔÐ"?Ð?Ð?Ø”n \Ô%6Ô7Ô>ˆGØ˜)Ò#Ð#ð$�õ ' sÑ+Ô+Ð+ð @Ð?à#Ð#r$   N)r7   r8   r9   r:   r#   rt   r	   rb   ÚNotImplementedErrorrj   rk   rc   rd   r<   r$   r"   rE   rE   F   sÒ   € € € € € ðð ð(ð (ð (ð
8<ð 8<ð 8<ðt �GÒÐð	$ð 	$ð 	$ð 	$ð6 
�WÒ	Ð	ð	#ð 	#ð 	#ð 	#ð, "Ð! )Ñ,Ô,Ð,ð
ð 
ð 
ðK9ð K9ð K9ðZð ð ð,ð ,ð ,ð ,ð ,r$   rE   c                 ó,   — |                       d¦  «        S )Nz$null$)Ú
startswith)Úregs    r"   Ú_is_null_temp_regrÝ   0  s   € Ø�>Š>˜(Ñ#Ô#Ð#r$   c                   ón  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zedk    rd„ Znedk     rd„ Zn ee¦  «        ‚d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+e+Z,e+Z-d*„ Z.e.Z/e.Z0d+„ Z1d,„ Z2d-„ Z3d.„ Z4d/„ Z5d0„ Z6d1„ Z7d2„ Z8d3„ Z9d4„ Z:d5„ Z;d6„ Z<d7„ Z=d8„ Z>edk    rd9„ Z?nedk     rd:„ Z?ne‚d;„ Z@d<„ ZAd=„ ZBd>„ ZCd?„ ZDd@„ ZEdA„ ZFdB„ ZGdC„ ZHdD„ ZIdE„ ZJdF„ ZKdG„ ZLedk    rdH„ ZMnedk     rdI„ ZMn ee¦  «        ‚dJ„ ZNdK„ ZOdL„ ZPdM„ ZQdN„ ZRdO„ ZSdP„ ZTdQ„ ZUdR„ ZVdS„ ZWdT„ ZXdU„ ZYdV„ ZZdW„ Z[dX„ Z\dY„ Z]dZ„ Z^d[„ Z_d\„ Z`d]„ Zad^„ Zbd_„ Zcd`„ Zdda„ Zedb„ Zfdc„ Zgdd„ Zhde„ Zidf„ Zjdg„ Zkdh„ Zldi„ Zmdj„ Zndk„ Zodl„ Zpdm„ Zqdn„ Zrdo„ ZsesZtesZuesZvesZwdp„ ZxexZyexZzexZ{exZ|exZ}exZ~exZexZ€exZ�exZ‚exZƒexZ„exZ…exZ†exZ‡exZˆexZ‰exZŠexZ‹exZŒexZ�exZŽexZ�exZ�exZ‘exZ’exZ“exZ”exZ•exZ–exZ—d~dr„Z˜ds„ Z™dt„ Zšdu„ Z›dv„ Zœdw„ Z�edk    rdx„ Zžnedk     rdy„ Zžn ee¦  «        ‚edk    rdz„ ZŸnedk     rd{„ ZŸn ee¦  «        ‚d|„ Z d}S )rX   zLTrace runner contains the states for the trace and the opcode dispatch.
    c                 ó`   — || _         t          ¦   «         | _        t          ¦   «         | _        d S r   )rQ   r   r[   r­   r^   )r    rQ   s     r"   r#   zTraceRunner.__init__7  s$   € Ø,ˆÔÝ‘w”wˆŒÝ™œˆŒˆˆr$   c                 ó,   — t          | j        |¦  «        S r   )r   rQ   )r    Úlinenos     r"   Úget_debug_loczTraceRunner.get_debug_loc<  s   € Ý�4Ô&¨Ñ/Ô/Ð/r$   c                 ó’  — t           dk    rt          t           ¦  «        ‚t           dk    rR|j        rK|j        rD|j        d         }|d         }|�%||j        k    r|j                             ¦   «          nn|j        °D|                     ¦   «         }|j        dk    rAt                               d|j	        |¦  «         t                               d|j
        ¦  «         t          | d                     |j        ¦  «        d ¦  «        }|� |||¦  «         d S d|j        z  }t          ||                      |j        ¦  «        ¬	¦  «        ‚)
Nru   éÿÿÿÿrz   ÚCACHEzdispatch pc=%s, inst=%szstack %szop_{}z$Use of unsupported opcode (%s) found©Úloc)r	   rÙ   Ú_blockstackrS   Úpoprƒ   r„   rG   rH   rŒ   r_   Úgetattrr/   r   râ   rá   )r    rq   ÚtopblkÚblk_endrÑ   ÚfnrØ   s          r"   r`   zTraceRunner.dispatch?  s=  € Ý�wÒÐÝ%¥iÑ0Ô0Ð0Ý˜'Ò!Ð! eÔ&7Ð!àÔ#ð ØÔ*¨2Ô.�Ø  œ-�ØÐ&¨7°eÔ6FÒ+FÐ+FØÔ%×)Ò)Ñ+Ô+Ð+Ð+àð Ô#ð ð �~Š~ÑÔˆØŒ;˜'Ò!Ð!Ý�MŠMÐ3°U´YÀÑEÔEÐEÝ�MŠM˜* e¤lÑ3Ô3Ð3Ý�T˜7Ÿ>š>¨$¬+Ñ6Ô6¸Ñ=Ô=ˆØˆ>ØˆBˆu�d‰OŒOˆOˆOˆOà8¸4¼;ÑFˆCÝ" 3¨D×,>Ò,>¸t¼{Ñ,KÔ,KÐLÑLÔLÐLr$   c                 óê   — |                      d¦  «        }|                     |¦  «         |j        }i }|d         }||k    r||z
  |d<   d}|d         r|dz  }||d<    |j        d
d|d         i|¤Ž d	S )zo
        Adjust stack when entering an exception handler to match expectation
        by the bytecode.
        r   r}   r—   é   r~   rš   rN   rz   Nr<   )r�   r›   r}   r†   )r    rq   rž   rO   rA   Úexpected_depthÚextra_stacks          r"   rˆ   z TraceRunner._adjust_except_stackV  s§   € ð
 ×$Ò$ UÑ+Ô+ˆØ×!Ò! &Ñ)Ô)Ð)ØÔ"ˆØˆØ Ô.ˆØ�NÒ"Ð"à# nÑ4ˆF�6‰NàˆØ�,Ôð 	Ø˜1ÑˆKØ%ˆˆw‰ØˆŒ
Ð.Ð.�f˜U”mÐ. vÐ.Ð.Ð.Ð.Ð.r$   c                 ó0   — |                      |¦  «         d S r   ©r\   rÐ   s      r"   Úop_NOPzTraceRunner.op_NOPj  ó   € Ø�Š�TÑÔÐÐÐr$   c                 ó0   — |                      |¦  «         d S r   ró   rÐ   s      r"   Ú	op_RESUMEzTraceRunner.op_RESUMEm  rõ   r$   c                 ó0   — |                      |¦  «         d S r   ró   rÐ   s      r"   Úop_CACHEzTraceRunner.op_CACHEp  rõ   r$   c                 ó0   — |                      |¦  «         d S r   ró   rÐ   s      r"   Ú
op_PRECALLzTraceRunner.op_PRECALLs  rõ   r$   c                 ó~   — |                      |                     ¦   «         ¦  «         |                     |¦  «         d S r   )ÚpushÚ	make_nullr\   rÐ   s      r"   Úop_PUSH_NULLzTraceRunner.op_PUSH_NULLv  s6   € Ø�
Š
�5—?’?Ñ$Ô$Ñ%Ô%Ð%Ø�Š�TÑÔÐÐÐr$   c                 ó~   — |                      |                     ¦   «         ¦  «         |                     |¦  «         d S r   )rý   Ú	make_tempr\   rÐ   s      r"   Úop_RETURN_GENERATORzTraceRunner.op_RETURN_GENERATORz  s8   € ð 	�
Š
�5—?’?Ñ$Ô$Ñ%Ô%Ð%Ø�Š�TÑÔÐÐÐr$   c                 óF  — |j         dk    r+d}t          ||                      |j        ¦  «        ¬¦  «        ‚|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ||||¬¦  «         |                     |¦  «         dS )aF  
        FORMAT_VALUE(flags): flags argument specifies format spec which is
        not supported yet. Currently, we just call str() on the value.
        Pops a value from stack and pushes results back.
        Required for supporting f-strings.
        https://docs.python.org/3/library/dis.html#opcode-FORMAT_VALUE
        r   z*format spec in f-strings not supported yetræ   )r!   ÚresÚstrvarN)Úargr   râ   rá   ré   r  r\   rý   )r    rq   rÑ   rØ   r!   r  r  s          r"   Úop_FORMAT_VALUEzTraceRunner.op_FORMAT_VALUE‡  s�   € ð Œ8�qŠ=ˆ=Ø>ˆCÝ" 3¨D×,>Ò,>¸t¼{Ñ,KÔ,KÐLÑLÔLÐLØ—	’	‘”ˆØ—’Ñ"Ô"ˆØ�oŠoÑÔˆØ�Š�T ¨C¸ˆÑ?Ô?Ð?Ø�
Š
�3‰Œˆˆˆr$   c                 óZ  ‡— |j         }t          t          ˆfd„t          |¦  «        D ¦   «         ¦  «        ¦  «        }|dk    r‰                     ¦   «         g}nˆfd„t          |dz
  ¦  «        D ¦   «         }‰                     |||¬¦  «         ‰                     |d         ¦  «         dS )zú
        BUILD_STRING(count): Concatenates count strings from the stack and
        pushes the resulting string onto the stack.
        Required for supporting f-strings.
        https://docs.python.org/3/library/dis.html#opcode-BUILD_STRING
        c                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   ©ré   ©Ú.0Ú_rq   s     €r"   ú
<listcomp>z/TraceRunner.op_BUILD_STRING.<locals>.<listcomp>   s!   ø€ Ð CÐ CÐ C° §¢¡¤Ð CÐ CÐ Cr$   r   c                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   ©r  r  s     €r"   r  z/TraceRunner.op_BUILD_STRING.<locals>.<listcomp>¥  s#   ø€ Ð@Ð@Ð@¨!�E—O’OÑ%Ô%Ð@Ð@Ð@r$   rï   )ÚstringsÚtmpsrä   N©r  r¾   ÚreversedÚranger  r\   rý   )r    rq   rÑ   Úcountr  r  s    `    r"   Úop_BUILD_STRINGzTraceRunner.op_BUILD_STRING˜  s²   ø€ ð ”ˆÝ•xÐ CÐ CÐ CÐ Cµe¸E±l´lÐ CÑ CÔ CÑDÔDÑEÔEˆà�AŠ:ˆ:Ø—O’OÑ%Ô%Ð&ˆDˆDà@Ð@Ð@Ð@­u°U¸Q±YÑ/?Ô/?Ð@Ñ@Ô@ˆDØ�Š�T 7°ˆÑ6Ô6Ð6Ø�
Š
�4˜”8ÑÔÐÐÐr$   c                 ó.   — |                      ¦   «          d S r   r
  rÐ   s      r"   Ú
op_POP_TOPzTraceRunner.op_POP_TOP©  s   € Ø�	Š	‰Œˆˆˆr$   ru   c                 óþ   — |                      ¦   «         }|j        dz	  }|                     |||¬¦  «         |j        dz  r'|                     |                     ¦   «         ¦  «         |                     |¦  «         d S )Nrï   )Úidxr  )r  r  r\   rý   rþ   )r    rq   rÑ   r  r  s        r"   Úop_LOAD_GLOBALzTraceRunner.op_LOAD_GLOBAL­  sq   € Ø—/’/Ñ#Ô#ˆCØ”(˜a‘-ˆCØ�LŠL˜ 3¨CˆLÑ0Ô0Ð0àŒx˜!‰|ð .Ø—
’
˜5Ÿ?š?Ñ,Ô,Ñ-Ô-Ð-Ø�JŠJ�s‰OŒOˆOˆOˆOr$   c                 ó†   — |                      ¦   «         }|                     ||¬¦  «         |                     |¦  «         d S ©N©r  ©r  r\   rý   ©r    rq   rÑ   r  s       r"   r  zTraceRunner.op_LOAD_GLOBAL¶  s:   € Ø—/’/Ñ#Ô#ˆCØ�LŠL˜ 3ˆLÑ'Ô'Ð'Ø�JŠJ�s‰OŒOˆOˆOˆOr$   c                 ó0   — |                      |¦  «         d S r   ró   rÐ   s      r"   Úop_COPY_FREE_VARSzTraceRunner.op_COPY_FREE_VARS½  rõ   r$   c                 ó0   — |                      |¦  «         d S r   ró   rÐ   s      r"   Úop_MAKE_CELLzTraceRunner.op_MAKE_CELLÀ  rõ   r$   c                 ó†   — |                      ¦   «         }|                     ||¬¦  «         |                     |¦  «         d S r  r   r!  s       r"   Úop_LOAD_DEREFzTraceRunner.op_LOAD_DEREFÃ  ó:   € Ø�oŠoÑÔˆØ�Š�T˜sˆÑ#Ô#Ð#Ø�
Š
�3‰Œˆˆˆr$   c                 óˆ   — |                      d¦  «        }|                     |¦  «         |                     ||¬¦  «         d S )NÚconstr  )r  rý   r\   r!  s       r"   Úop_LOAD_CONSTzTraceRunner.op_LOAD_CONSTÈ  s>   € Ø�oŠo˜gÑ&Ô&ˆØ�
Š
�3‰ŒˆØ�Š�T˜sˆÑ#Ô#Ð#Ð#Ð#r$   c                 ó°   — |                      ¦   «         }|                     ¦   «         }|                     |||¬¦  «         |                     |¦  «         d S ©N)Úitemr  ©ré   r  r\   rý   )r    rq   rÑ   r.  r  s        r"   Úop_LOAD_ATTRzTraceRunner.op_LOAD_ATTRÍ  sI   € Ø�yŠy‰{Œ{ˆØ�oŠoÑÔˆØ�Š�T ¨#ˆÑ.Ô.Ð.Ø�
Š
�3‰Œˆˆˆr$   c                 ó²   — |                      |¦  «        }|                     |¦  «        }|                     ||¬¦  «         |                     |¦  «         d S r  )Úget_varnamer  r\   rý   )r    rq   rÑ   Únamer  s        r"   Úop_LOAD_FASTzTraceRunner.op_LOAD_FASTÓ  sO   € Ø× Ò  Ñ&Ô&ˆØ�oŠo˜dÑ#Ô#ˆØ�Š�T˜sˆÑ#Ô#Ð#Ø�
Š
�3‰Œˆˆˆr$   c                 ó0   — |                      |¦  «         d S r   ró   rÐ   s      r"   Úop_DELETE_FASTzTraceRunner.op_DELETE_FASTÙ  rõ   r$   c                 ó\   — |                      ¦   «         }|                     ||¬¦  «         d S )N)rŽ   ©ré   r\   )r    rq   rÑ   rŽ   s       r"   Úop_DELETE_ATTRzTraceRunner.op_DELETE_ATTRÜ  s+   € Ø—’‘”ˆØ�Š�T &ˆÑ)Ô)Ð)Ð)Ð)r$   c                 ó†   — |                      ¦   «         }|                      ¦   «         }|                     |||¬¦  «         d S )N)rŽ   r!   r8  )r    rq   rÑ   rŽ   r!   s        r"   Úop_STORE_ATTRzTraceRunner.op_STORE_ATTRà  s:   € Ø—’‘”ˆØ—	’	‘”ˆØ�Š�T &°ˆÑ6Ô6Ð6Ð6Ð6r$   c                 ó\   — |                      ¦   «         }|                     ||¬¦  «         d S ©N)r!   r8  ©r    rq   rÑ   r!   s       r"   Úop_STORE_DEREFzTraceRunner.op_STORE_DEREFå  ó+   € Ø—	’	‘”ˆØ�Š�T ˆÑ'Ô'Ð'Ð'Ð'r$   c                 ó\   — |                      ¦   «         }|                     ||¬¦  «         d S r=  r8  r>  s       r"   Úop_STORE_FASTzTraceRunner.op_STORE_FASTé  r@  r$   c           	      óX  — |                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     |||||||¬¦  «         |                     |¦  «         dS )z"
        TOS = TOS1[TOS:]
        )ÚbaseÚstartr  ÚslicevarÚindexvarÚnonevarNr/  ©	r    rq   rÑ   ÚtosÚtos1r  rF  rG  rH  s	            r"   Ú
op_SLICE_1zTraceRunner.op_SLICE_1í  sŸ   € ð �iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ�oŠoÑÔˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ—/’/Ñ#Ô#ˆØ�ŠØØØØØØØð 	ñ 	
ô 	
ð 	
ð 	�
Š
�3‰Œˆˆˆr$   c           	      óX  — |                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     |||||||¬¦  «         |                     |¦  «         dS )z"
        TOS = TOS1[:TOS]
        )rD  Ústopr  rF  rG  rH  Nr/  rI  s	            r"   Ú
op_SLICE_2zTraceRunner.op_SLICE_2  sŸ   € ð �iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ�oŠoÑÔˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ—/’/Ñ#Ô#ˆØ�ŠØØØØØØØð 	ñ 	
ô 	
ð 	
ð 	�
Š
�3‰Œˆˆˆr$   c           	      óX  — |                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     |||||||¬¦  «         |                     |¦  «         dS )z&
        TOS = TOS2[TOS1:TOS]
        )rD  rE  rN  r  rF  rG  Nr/  )	r    rq   rÑ   rJ  rK  Útos2r  rF  rG  s	            r"   Ú
op_SLICE_3zTraceRunner.op_SLICE_3  s�   € ð �iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ�yŠy‰{Œ{ˆØ�oŠoÑÔˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ�ŠØØØØØØØð 	ñ 	
ô 	
ð 	
ð 	�
Š
�3‰Œˆˆˆr$   c                 ó  — |                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ||||||¬¦  «         dS )z
        TOS[:] = TOS1
        )rD  r!   rF  rG  rH  N©ré   r  r\   )r    rq   rÑ   rJ  r!   rF  rG  rH  s           r"   Úop_STORE_SLICE_0zTraceRunner.op_STORE_SLICE_0,  s‚   € ð �iŠi‰kŒkˆØ—	’	‘”ˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ—/’/Ñ#Ô#ˆØ�ŠØØØØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   c           	      ó.  — |                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     |||||||¬¦  «         dS )z#
        TOS1[TOS:] = TOS2
        )rD  rE  rF  r!   rG  rH  NrT  ©	r    rq   rÑ   rJ  rK  r!   rF  rG  rH  s	            r"   Úop_STORE_SLICE_1zTraceRunner.op_STORE_SLICE_1>  s’   € ð �iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ—	’	‘”ˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ—/’/Ñ#Ô#ˆØ�ŠØØØØØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   c           	      ó.  — |                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     |||||||¬¦  «         dS )z#
        TOS1[:TOS] = TOS2
        )rD  rN  r!   rF  rG  rH  NrT  rW  s	            r"   Úop_STORE_SLICE_2zTraceRunner.op_STORE_SLICE_2R  s’   € ð �iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ—	’	‘”ˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ—/’/Ñ#Ô#ˆØ�ŠØØØØØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   c           	      ó.  — |                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     |||||||¬¦  «         dS )z'
        TOS2[TOS1:TOS] = TOS3
        )rD  rE  rN  r!   rF  rG  NrT  )	r    rq   rÑ   rJ  rK  rQ  r!   rF  rG  s	            r"   Úop_STORE_SLICE_3zTraceRunner.op_STORE_SLICE_3f  s�   € ð �iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ�yŠy‰{Œ{ˆØ—	’	‘”ˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ�ŠØØØØØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   c                 óÚ   — |                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     |||||¬¦  «         dS )z
        del TOS[:]
        )rD  rF  rG  rH  NrT  )r    rq   rÑ   rJ  rF  rG  rH  s          r"   Úop_DELETE_SLICE_0zTraceRunner.op_DELETE_SLICE_0z  so   € ð �iŠi‰kŒkˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ—/’/Ñ#Ô#ˆØ�ŠØ�s X¸Øð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   c                 ó  — |                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ||||||¬¦  «         dS )z 
        del TOS1[TOS:]
        )rD  rE  rF  rG  rH  NrT  ©r    rq   rÑ   rJ  rK  rF  rG  rH  s           r"   Úop_DELETE_SLICE_1zTraceRunner.op_DELETE_SLICE_1‡  s‚   € ð �iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ—/’/Ñ#Ô#ˆØ�ŠØØØØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   c                 ó  — |                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ||||||¬¦  «         dS )z 
        del TOS1[:TOS]
        )rD  rN  rF  rG  rH  NrT  r`  s           r"   Úop_DELETE_SLICE_2zTraceRunner.op_DELETE_SLICE_2™  s‚   € ð �iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ—/’/Ñ#Ô#ˆØ�ŠØØØØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   c                 ó  — |                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ||||||¬¦  «         dS )z$
        del TOS2[TOS1:TOS]
        )rD  rE  rN  rF  rG  NrT  )r    rq   rÑ   rJ  rK  rQ  rF  rG  s           r"   Úop_DELETE_SLICE_3zTraceRunner.op_DELETE_SLICE_3«  s|   € ð �iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ�yŠy‰{Œ{ˆØ—?’?Ñ$Ô$ˆØ—?’?Ñ$Ô$ˆØ�ŠØ�t 4¨c¸HØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   c                 óÞ  — |j         }|dk    r/|                     ¦   «         }|                     ¦   «         }|}|}d}nX|dk    rC|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }	|	}|}|}nt          d¦  «        ‚|                     ¦   «         }
|                     ¦   «         }|                     ||||||
¬¦  «         |                     |¦  «         dS )z<
        slice(TOS1, TOS) or slice(TOS2, TOS1, TOS)
        é   Nrv   Úunreachable)rE  rN  Ústepr  rF  )r  ré   Ú	Exceptionr  r\   rý   )r    rq   rÑ   ÚargcrJ  rK  rE  rN  ri  rQ  rF  r  s               r"   Úop_BUILD_SLICEzTraceRunner.op_BUILD_SLICE¹  sé   € ð ŒxˆØ�1Š9ˆ9Ø—)’)‘+”+ˆCØ—9’9‘;”;ˆDØˆEØˆDØˆDˆDØ�QŠYˆYØ—)’)‘+”+ˆCØ—9’9‘;”;ˆDØ—9’9‘;”;ˆDØˆEØˆDØˆDˆDå˜MÑ*Ô*Ð*Ø—?’?Ñ$Ô$ˆØ�oŠoÑÔˆØ�ŠØ˜ D¨t¸Àxð 	ñ 	
ô 	
ð 	
ð 	�
Š
�3‰Œˆˆˆr$   c                 óú   — |                      ¦   «         }|                     ||¬¦  «         |                     ¦   «         }|j        }|                     |¬¦  «         ||k    r|                     |¬¦  «         d S d S )N©Úpredry   )ré   r\   Úget_jump_targetr‡   r†   )r    rq   rÑ   ro  Útarget_instÚ	next_insts         r"   Ú_op_POP_JUMP_IFzTraceRunner._op_POP_JUMP_IFÔ  s€   € Ø�yŠy‰{Œ{ˆØ�Š�T ˆÑ%Ô%Ð%à×*Ò*Ñ,Ô,ˆØ”Iˆ	ð 	�
Š
�iˆ
Ñ Ô Ð Ø˜)Ò#Ð#Ø�JŠJ˜+ˆJÑ&Ô&Ð&Ð&Ð&ð $Ð#r$   c                 óä   — |                      ¦   «         }|                     ||¬¦  «         |                     |j        d¬¦  «         |                     |                     ¦   «         ¬¦  «         d S )Nrn  rï   ©rN   r—   ry   )Úget_tosr\   r†   r‡   rp  )r    rq   rÑ   ro  s       r"   Ú_op_JUMP_IF_OR_POPzTraceRunner._op_JUMP_IF_OR_POPã  sc   € Ø�}Š}‰ŒˆØ�Š�T ˆÑ%Ô%Ð%Ø�
Š
�d”i aˆ
Ñ(Ô(Ð(Ø�
Š
�d×*Ò*Ñ,Ô,ˆ
Ñ-Ô-Ð-Ð-Ð-r$   c                 ó2   — |                       ||¦  «         d S r   ©rs  rÐ   s      r"   Úop_POP_JUMP_FORWARD_IF_NONEz'TraceRunner.op_POP_JUMP_FORWARD_IF_NONEì  ó   € Ø×Ò˜U DÑ)Ô)Ð)Ð)Ð)r$   c                 ó2   — |                       ||¦  «         d S r   ry  rÐ   s      r"   Úop_POP_JUMP_FORWARD_IF_NOT_NONEz+TraceRunner.op_POP_JUMP_FORWARD_IF_NOT_NONEï  r{  r$   c                 ó2   — |                       ||¦  «         d S r   ry  rÐ   s      r"   Úop_POP_JUMP_BACKWARD_IF_NONEz(TraceRunner.op_POP_JUMP_BACKWARD_IF_NONEò  r{  r$   c                 ó2   — |                       ||¦  «         d S r   ry  rÐ   s      r"   Ú op_POP_JUMP_BACKWARD_IF_NOT_NONEz,TraceRunner.op_POP_JUMP_BACKWARD_IF_NOT_NONEõ  r{  r$   c                 ó2   — |                       ||¦  «         d S r   ry  rÐ   s      r"   Úop_POP_JUMP_FORWARD_IF_FALSEz(TraceRunner.op_POP_JUMP_FORWARD_IF_FALSEø  r{  r$   c                 ó2   — |                       ||¦  «         d S r   ry  rÐ   s      r"   Úop_POP_JUMP_FORWARD_IF_TRUEz'TraceRunner.op_POP_JUMP_FORWARD_IF_TRUEû  r{  r$   c                 ó2   — |                       ||¦  «         d S r   ry  rÐ   s      r"   Úop_POP_JUMP_BACKWARD_IF_FALSEz)TraceRunner.op_POP_JUMP_BACKWARD_IF_FALSEþ  r{  r$   c                 ó2   — |                       ||¦  «         d S r   ry  rÐ   s      r"   Úop_POP_JUMP_BACKWARD_IF_TRUEz(TraceRunner.op_POP_JUMP_BACKWARD_IF_TRUE  r{  r$   c                 ó€   — |                      |¦  «         |                     |                     ¦   «         ¬¦  «         d S ©Nry   ©r\   r†   rp  rÐ   s      r"   Úop_JUMP_FORWARDzTraceRunner.op_JUMP_FORWARD  ó:   € Ø�Š�TÑÔÐØ�
Š
�d×*Ò*Ñ,Ô,ˆ
Ñ-Ô-Ð-Ð-Ð-r$   c                 ó€   — |                      |¦  «         |                     |                     ¦   «         ¬¦  «         d S r‹  rŒ  rÐ   s      r"   Úop_JUMP_BACKWARDzTraceRunner.op_JUMP_BACKWARD  rŽ  r$   c                 ó€   — |                      |¦  «         |                     |                     ¦   «         ¬¦  «         d S r‹  rŒ  rÐ   s      r"   Úop_JUMP_ABSOLUTEzTraceRunner.op_JUMP_ABSOLUTE  rŽ  r$   c                 ó¾   — |                      d¦  «        d         }|                     ||¬¦  «         |                     ¦   «          |                     |¬¦  «         d S )Nr   rz   r{   ry   )r�   r\   Ú	pop_blockr†   )r    rq   rÑ   rz   s       r"   Úop_BREAK_LOOPzTraceRunner.op_BREAK_LOOP  sZ   € à×!Ò! &Ñ)Ô)¨%Ô0ˆØ�Š�T˜sˆÑ#Ô#Ð#Ø�ŠÑÔÐØ�
Š
�cˆ
ÑÔÐÐÐr$   c                 ó¦   — |                      ||                     ¦   «         |                     ¦   «         ¬¦  «         |                     ¦   «          d S )N)ÚretvalÚcastval)r\   ré   r  Ú	terminaterÐ   s      r"   Úop_RETURN_VALUEzTraceRunner.op_RETURN_VALUE  sB   € Ø�Š�T %§)¢)¡+¤+°u·²Ñ7HÔ7HˆÑIÔIÐIØ�ŠÑÔÐÐÐr$   c                 ó°   — |                      ¦   «         }|                     ¦   «         }|                     |||¬¦  «         |                     |¦  «         d S ©N)r!   r  r/  ©r    rq   rÑ   Úvalr  s        r"   Úop_YIELD_VALUEzTraceRunner.op_YIELD_VALUE  óI   € Ø�iŠi‰kŒkˆØ�oŠoÑÔˆØ�Š�T ¨#ˆÑ.Ô.Ð.Ø�
Š
�3‰Œˆˆˆr$   c                 ó¦  — |j         dk    r@d }|                     ¦   «         r)t          d|                      |j        ¦  «        ¬¦  «        ‚n/|j         dk    r|                     ¦   «         }nt          d¦  «        ‚|                     ||¬¦  «         |                     ¦   «         r|                      |¦  «         d S | 	                    ¦   «          d S )Nr   ú4The re-raising of an exception is not yet supported.ræ   rï   ú)Multiple argument raise is not supported.©Úexc)
r  r‚   r   râ   rá   ré   Ú
ValueErrorr\   rˆ   r™  ©r    rq   rÑ   r¥  s       r"   Úop_RAISE_VARARGSzTraceRunner.op_RAISE_VARARGS"  sß   € ØŒx˜1Š}ˆ}Ø�ð ×'Ò'Ñ)Ô)ð Ý*ØNØ ×.Ò.¨t¬{Ñ;Ô;ðñ ô ð ðð
 ”˜Q’�Ø—i’i‘k”k��å Ð!LÑMÔMÐMØ�LŠL˜ 3ˆLÑ'Ô'Ð'à×#Ò#Ñ%Ô%ð "Ø×)Ò)¨%Ñ0Ô0Ð0Ð0Ð0à—’Ñ!Ô!Ð!Ð!Ð!r$   c                 ó¢  — t          |                     d¦  «        d u|                     d¦  «        d ug¦  «        }|j        dk    r.d }|r)t          d|                      |j        ¦  «        ¬¦  «        ‚n/|j        dk    r|                     ¦   «         }nt          d¦  «        ‚|                     ||¬¦  «         | 	                    ¦   «          d S )	Nr   r   r   r¢  ræ   rï   r£  r¤  )
Úanyr�   r  r   râ   rá   ré   r¦  r\   r™  )r    rq   rÑ   Úin_exc_blockr¥  s        r"   r¨  zTraceRunner.op_RAISE_VARARGS8  så   € ÝØ×#Ò# HÑ-Ô-°TÐ9Ø×#Ò# IÑ.Ô.°dÐ:ð ñ ô ˆLð Œx˜1Š}ˆ}Ø�Øð Ý*ØNØ ×.Ò.¨t¬{Ñ;Ô;ðñ ô ð ðð
 ”˜Q’�Ø—i’i‘k”k��å Ð!LÑMÔMÐMØ�LŠL˜ 3ˆLÑ'Ô'Ð'Ø�OŠOÑÔÐÐÐr$   c                 óâ   — g }t          t          ¦  «        D ]@}|                     ¦   «         }|                     |¦  «         |                     |¦  «         ŒA|                     ||¬¦  «         d S )N)Útemps)r  rœ   r  r\   rý   )r    rq   rÑ   r­  ÚiÚtmps         r"   Úop_BEGIN_FINALLYzTraceRunner.op_BEGIN_FINALLYM  sm   € ØˆÝÕ+Ñ,Ô,ð 	ð 	ˆAØ—/’/Ñ#Ô#ˆCØ�LŠL˜ÑÔÐØ�JŠJ�s‰OŒOˆOˆOØ�Š�T ˆÑ'Ô'Ð'Ð'Ð'r$   c                 ód   — |                      ¦   «         }|                     |d         ¦  «         d S )Nr–   )r”  Úreset_stack©r    rq   rÑ   Úblks       r"   Úop_END_FINALLYzTraceRunner.op_END_FINALLYU  s0   € Ø�oŠoÑÔˆØ×Ò˜#˜mÔ,Ñ-Ô-Ð-Ð-Ð-r$   c                 ór   — |j         dk    r+d}t          ||                      |j        ¦  «        ¬¦  «        ‚d S )Nr   zGUnsupported use of a bytecode related to try..finally or a with-contextræ   )r  r   râ   rá   )r    rq   rÑ   rØ   s       r"   Úop_POP_FINALLYzTraceRunner.op_POP_FINALLYY  s>   € àŒ8�qŠ=ˆ=ð(ˆCå" 3¨D×,>Ò,>¸t¼{Ñ,KÔ,KÐLÑLÔLÐLð ˆ=r$   c                 ó   — d S r   r<   rÐ   s      r"   Úop_CALL_FINALLYzTraceRunner.op_CALL_FINALLY`  s   € Øˆr$   c                 ó.   — |                      ¦   «          d S r   )r™  rÐ   s      r"   Úop_WITH_EXCEPT_STARTz TraceRunner.op_WITH_EXCEPT_STARTc  s   € Ø�ŠÑÔÐÐÐr$   c                 ó0   — |                      |¦  «         d S r   ró   rÐ   s      r"   Úop_WITH_CLEANUP_STARTz!TraceRunner.op_WITH_CLEANUP_STARTf  ó   € à�Š�TÑÔÐÐÐr$   c                 ó0   — |                      |¦  «         d S r   ró   rÐ   s      r"   Úop_WITH_CLEANUP_FINISHz"TraceRunner.op_WITH_CLEANUP_FINISHj  r¾  r$   c                 ó~   — |                      |                     d|                     ¦   «         ¬¦  «        ¦  «         d S )Nr   ©r™   rz   )Ú
push_blockr�   rp  rÐ   s      r"   Úop_SETUP_LOOPzTraceRunner.op_SETUP_LOOPn  sN   € à×ÒØ×ÒØØ×(Ò(Ñ*Ô*ð ñ ô ñ	
ô 	
ð 	
ð 	
ð 	
r$   c                 ój  — |                      ¦   «         }|                     ¦   «         }|                     d¬¦  «        }|                     |¦  «         |                     |¦  «         |j        }|                     |j        ¦  «        }|g}|j        D ]'}	|	j        |j        k    r|                     |	¦  «         Œ(t          d„ |D ¦   «         ¦  «        }
|                     ||||
¬¦  «         | 
                    |                     d|
¬¦  «        ¦  «         |                     |j        ¬¦  «         d S )NÚsetup_with_exitfn©Úprefixc              3   ó$   K  — | ]}|j         V — Œd S r   r{   )r  r’   s     r"   ú	<genexpr>z-TraceRunner.op_BEFORE_WITH.<locals>.<genexpr>‰  s$   è è € Ð-Ð-˜R�"”&Ð-Ð-Ð-Ð-Ð-Ð-r$   )ÚcontextmanagerÚexitfnrz   r   rÂ  ry   )ré   r  rý   rJ   Úfind_exception_entryr‡   Úexception_entriesrŽ   r\   ÚmaxrÃ  r�   r†   )r    rq   rÑ   ÚcmÚyieldedrÌ  ÚbcÚehheadÚ	ehrelatedr’   rz   s              r"   Úop_BEFORE_WITHzTraceRunner.op_BEFORE_WITHw  s;  € à�YŠY‰[Œ[ˆà—/’/Ñ#Ô#ˆØ—’Ð(;�Ñ<Ô<ˆà�
Š
�6ÑÔÐØ�
Š
�7ÑÔÐð Œ_ˆØ×(Ò(¨¬Ñ3Ô3ˆØ�Hˆ	ØÔ&ð 	%ð 	%ˆBØŒy˜FœMÒ)Ð)Ø× Ò  Ñ$Ô$Ð$øÝÐ-Ð- 9Ð-Ñ-Ô-Ñ-Ô-ˆØ�Š�T¨"°VÀˆÑEÔEÐEà×ÒØ×ÒØØð ñ ô ñ	
ô 	
ð 	
ð 	�
Š
�d”iˆ
Ñ Ô Ð Ð Ð r$   c                 óB  — |                      ¦   «         }|                     ¦   «         }|                     d¬¦  «        }|                     |||¬¦  «         t          dk     r<|                     |                     d|                     ¦   «         ¬¦  «        ¦  «         |                     |¦  «         |                     |¦  «         |                     |                     d|                     ¦   «         ¬¦  «        ¦  «         |                     |j	        ¬¦  «         d S )	NrÆ  rÇ  )rË  rÌ  )rv   é	   r   rÂ  r   ry   )
ré   r  r\   r	   rÃ  r�   rp  rý   r†   r‡   )r    rq   rÑ   rÐ  rÑ  rÌ  s         r"   Úop_SETUP_WITHzTraceRunner.op_SETUP_WITH•  s  € Ø�YŠY‰[Œ[ˆà—/’/Ñ#Ô#ˆØ—’Ð(;�Ñ<Ô<ˆØ�Š�T¨"°VˆÑ<Ô<Ð<õ �vÒÐØ×ÒØ× Ò Ø'Ø×,Ò,Ñ.Ô.ð !ñ ô ñô ð ð 	�
Š
�6ÑÔÐØ�
Š
�7ÑÔÐà×ÒØ×ÒØØ×(Ò(Ñ*Ô*ð ñ ô ñ	
ô 	
ð 	
ð 	�
Š
�d”iˆ
Ñ Ô Ð Ð Ð r$   c           	      ó’   — |                      |d d¬¦  «        }|                     ||                      d|d|¬¦  «        ¬¦  «         d S )NF)r™   rz   r²  r   )r™   rz   r²  r˜   r   )r�   r†   )r    r™   rq   r‡   rz   Úhandler_blocks         r"   Ú
_setup_tryzTraceRunner._setup_try±  su   € ð ×(Ò(ØØØð )ñ 
ô 
ˆð 	�
Š
ØØ×(Ò(ØØØ!Ø%ð	 )ñ ô ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   c                 ó¨   — |                      ¦   «         }|                     |                     d¦  «        ¦  «         |                     |¦  «         d S )NÚ	exception)ré   rý   r  )r    rq   rÑ   rJ  s       r"   Úop_PUSH_EXC_INFOzTraceRunner.op_PUSH_EXC_INFOÅ  s@   € Ø�iŠi‰kŒkˆØ�
Š
�5—?’? ;Ñ/Ô/Ñ0Ô0Ð0Ø�
Š
�3‰Œˆˆˆr$   c                 ó�   — |                      |¦  «         |                      d||j        |                     ¦   «         ¬¦  «         d S )Nr   )r‡   rz   )r\   rÛ  r‡   rp  rÐ   s      r"   Úop_SETUP_FINALLYzTraceRunner.op_SETUP_FINALLYÊ  sP   € Ø�Š�TÑÔÐØ�ŠØ�u 4¤9°$×2FÒ2FÑ2HÔ2Hð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   c                 ó.   — |                      ¦   «          d S r   r
  rÐ   s      r"   Úop_POP_EXCEPTzTraceRunner.op_POP_EXCEPTÑ  s   € Ø�IŠI‰KŒKˆKˆKˆKr$   c                 óŒ  — |                      ¦   «         }|d         t          d¦  «        t          d¦  «        hvr2t          d|d         › �|                      |j        ¦  «        ¬¦  «        ‚|                     ¦   «          |                     ¦   «          |                     ¦   «          |                     |j        ¬¦  «         d S )Nr™   r   r   z$POP_EXCEPT got an unexpected block: ræ   ry   )r”  r   r   râ   rá   ré   r†   r‡   r³  s       r"   râ  zTraceRunner.op_POP_EXCEPTÕ  s³   € Ø—/’/Ñ#Ô#ˆCØ�6Œ{¥9¨XÑ#6Ô#6½	À)Ñ8LÔ8LÐ"MÐMÐMÝ&ØH¸3¸v¼;ÐHÐHØ×*Ò*¨4¬;Ñ7Ô7ðñ ô ð ð �IŠI‰KŒKˆKØ�IŠI‰KŒKˆKØ�IŠI‰KŒKˆKà�JŠJ˜$œ)ˆJÑ$Ô$Ð$Ð$Ð$r$   c                 ó&  — |                      ¦   «         }|d         t          d¦  «        k    r|                     |d¬¦  «         n0|d         t          d¦  «        k    r|                     |d¬¦  «         |                     |j        ¬¦  «         d S )Nr™   r   Útry)r™   r   Úwithry   )r”  r   r\   r†   r‡   r³  s       r"   Úop_POP_BLOCKzTraceRunner.op_POP_BLOCKä  sŠ   € Ø�oŠoÑÔˆØˆvŒ;�) EÑ*Ô*Ò*Ð*Ø�LŠL˜ EˆLÑ*Ô*Ð*Ð*Ø�Œ[�I fÑ-Ô-Ò-Ð-Ø�LŠL˜ FˆLÑ+Ô+Ð+Ø�
Š
�d”iˆ
Ñ Ô Ð Ð Ð r$   c                 óÚ   — |                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ||||¬¦  «         |                     |¦  «         d S )N)ÚindexrŽ   r  r/  )r    rq   rÑ   ré  rŽ   r  s         r"   Úop_BINARY_SUBSCRzTraceRunner.op_BINARY_SUBSCRì  sX   € Ø—	’	‘”ˆØ—’‘”ˆØ�oŠoÑÔˆØ�Š�T ¨v¸3ˆÑ?Ô?Ð?Ø�
Š
�3‰Œˆˆˆr$   c                 ó°   — |                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                     ||||¬¦  «         d S )N)rŽ   ré  r!   r8  )r    rq   rÑ   ré  rŽ   r!   s         r"   Úop_STORE_SUBSCRzTraceRunner.op_STORE_SUBSCRó  sI   € Ø—	’	‘”ˆØ—’‘”ˆØ—	’	‘”ˆØ�Š�T &°¸UˆÑCÔCÐCÐCÐCr$   c                 ó†   — |                      ¦   «         }|                      ¦   «         }|                     |||¬¦  «         d S )N)rŽ   ré  r8  )r    rq   rÑ   ré  rŽ   s        r"   Úop_DELETE_SUBSCRzTraceRunner.op_DELETE_SUBSCRù  s:   € Ø—	’	‘”ˆØ—’‘”ˆØ�Š�T &°ˆÑ6Ô6Ð6Ð6Ð6r$   c                 ó°  ‡— |j         }t          t          ˆfd„t          |¦  «        D ¦   «         ¦  «        ¦  «        }‰                     ¦   «         }‰                     ¦   «         }t          |¦  «        r|}n|}|g|¢}‰                     ¦   «         }‰                     ¦   «         }	‰                     ||||	|¬¦  «         ‰ 	                    |¦  «         d S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r
  r  s     €r"   r  z'TraceRunner.op_CALL.<locals>.<listcomp>   ó!   ø€ Ð?Ð?Ð?¨a˜eŸiši™kœkÐ?Ð?Ð?r$   )Úfuncr@   Úkw_namesr  )
r  r¾   r  r  ré   rÝ   r  Úpop_kw_namesr\   rý   )
r    rq   rÑ   Únargr@   Úcallable_or_firstargÚnull_or_callableÚcallabler  ró  s
    `        r"   Úop_CALLzTraceRunner.op_CALLþ  sÏ   ø€ ØŒxˆÝ•HÐ?Ð?Ð?Ð?µ5¸±;´;Ð?Ñ?Ô?Ñ@Ô@ÑAÔAˆØ$Ÿyšy™{œ{ÐØ Ÿ9š9™;œ;ÐÝÐ-Ñ.Ô.ð 	1Ø+ˆHˆHà'ˆHØ(Ð0¨4Ð0ˆDØ�oŠoÑÔˆà×%Ò%Ñ'Ô'ˆØ�Š�T ¨t¸hÈCˆÑPÔPÐPØ�
Š
�3‰Œˆˆˆr$   c                 ó:   — |                      |j        ¦  «         d S r   )Úset_kw_namesr  rÐ   s      r"   Úop_KW_NAMESzTraceRunner.op_KW_NAMES  s   € Ø×Ò˜4œ8Ñ$Ô$Ð$Ð$Ð$r$   c                 ó,  ‡— |j         }t          t          ˆfd„t          |¦  «        D ¦   «         ¦  «        ¦  «        }‰                     ¦   «         }‰                     ¦   «         }‰                     ||||¬¦  «         ‰                     |¦  «         d S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r
  r  s     €r"   r  z0TraceRunner.op_CALL_FUNCTION.<locals>.<listcomp>  rñ  r$   )rò  r@   r  )r  r¾   r  r  ré   r  r\   rý   )r    rq   rÑ   rõ  r@   rò  r  s    `     r"   Úop_CALL_FUNCTIONzTraceRunner.op_CALL_FUNCTION  sƒ   ø€ ØŒxˆÝ•HÐ?Ð?Ð?Ð?µ5¸±;´;Ð?Ñ?Ô?Ñ@Ô@ÑAÔAˆØ�yŠy‰{Œ{ˆà�oŠoÑÔˆØ�Š�T ¨4°SˆÑ9Ô9Ð9Ø�
Š
�3‰Œˆˆˆr$   c                 óV  ‡— |j         }‰                     ¦   «         }t          t          ˆfd„t	          |¦  «        D ¦   «         ¦  «        ¦  «        }‰                     ¦   «         }‰                     ¦   «         }‰                     |||||¬¦  «         ‰                     |¦  «         d S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r
  r  s     €r"   r  z3TraceRunner.op_CALL_FUNCTION_KW.<locals>.<listcomp>  rñ  r$   )rò  r@   Únamesr  )r  ré   r¾   r  r  r  r\   rý   )r    rq   rÑ   rõ  r  r@   rò  r  s    `      r"   Úop_CALL_FUNCTION_KWzTraceRunner.op_CALL_FUNCTION_KW  s’   ø€ ØŒxˆØ—	’	‘”ˆÝ•HÐ?Ð?Ð?Ð?µ5¸±;´;Ð?Ñ?Ô?Ñ@Ô@ÑAÔAˆØ�yŠy‰{Œ{ˆà�oŠoÑÔˆØ�Š�T ¨4°uÀ#ˆÑFÔFÐFØ�
Š
�3‰Œˆˆˆr$   c                 óì  — |j         dz  rt          dk     rd}t          |¦  «        ‚|j         dz  r|                     ¦   «         }nd }|                     ¦   «         }|                     ¦   «         }t          dk    r6t	          |                     d¦  «        ¦  «        r|                     ¦   «          |                     ¦   «         }|                     |||||¬¦  «         |                     |¦  «         d S )Nrï   )rv   é
   z,CALL_FUNCTION_EX with **kwargs not supportedru   )rò  ÚvarargÚvarkwargr  )	r  r	   r   ré   rÝ   Úpeekr  r\   rý   )r    rq   rÑ   Úerrmsgr  r  rò  r  s           r"   Úop_CALL_FUNCTION_EXzTraceRunner.op_CALL_FUNCTION_EX$  sÙ   € ØŒ8�a‰<ð 	+�I¨Ò/Ð/ØCˆFÝ" 6Ñ*Ô*Ð*ØŒ8�a‰<ð 	Ø—y’y‘{”{ˆHˆHàˆHØ—’‘”ˆØ�yŠy‰{Œ{ˆå˜ÒÐÝ  §¢¨A¡¤Ñ/Ô/ð Ø—	’	‘”�à�oŠoÑÔˆØ�Š�T ¨V¸hÈCˆÑPÔPÐPØ�
Š
�3‰Œˆˆˆr$   c                 ó4  ‡— ˆfd„t          |¦  «        D ¦   «         }|                     ¦   «          ˆfd„t          |¦  «        D ¦   «         }‰                     |||¬¦  «         |D ]}‰                     |¦  «         Œ|D ]}‰                     |¦  «         Œd S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r
  r  s     €r"   r  z)TraceRunner._dup_topx.<locals>.<listcomp>8  s!   ø€ Ð2Ð2Ð2 �—	’	‘”Ð2Ð2Ð2r$   c                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r  r  s     €r"   r  z)TraceRunner._dup_topx.<locals>.<listcomp><  s#   ø€ Ð9Ð9Ð9 q�—’Ñ"Ô"Ð9Ð9Ð9r$   )ÚorigÚduped)r  Úreverser\   rý   )r    rq   rÑ   r  r  r  rž  s    `     r"   Ú	_dup_topxzTraceRunner._dup_topx7  s²   ø€ Ø2Ð2Ð2Ð2¥U¨5¡\¤\Ð2Ñ2Ô2ˆØ�Š‰Œˆð :Ð9Ð9Ð9­E°%©L¬LÐ9Ñ9Ô9ˆØ�Š�T ¨EˆÑ2Ô2Ð2Øð 	ð 	ˆCØ�JŠJ�s‰OŒOˆOˆOØð 	ð 	ˆCØ�JŠJ�s‰OŒOˆOˆOð	ð 	r$   c                 ót   — |j         }d|cxk    rdk    sn J d¦   «         ‚|                      |||¦  «         d S )Nrï   é   zInvalid DUP_TOPX count)r  r  )r    rq   rÑ   r  s       r"   Úop_DUP_TOPXzTraceRunner.op_DUP_TOPXC  sG   € Ø”ˆØ�EˆˆŠˆ˜QŠˆˆˆˆÐ 8‰ŒˆØ�Š�u˜d EÑ*Ô*Ð*Ð*Ð*r$   c                 ó6   — |                       ||d¬¦  «         d S )Nrï   ©r  ©r  rÐ   s      r"   Ú
op_DUP_TOPzTraceRunner.op_DUP_TOPH  ó    € Ø�Š�u˜d¨!ˆÑ,Ô,Ð,Ð,Ð,r$   c                 ó6   — |                       ||d¬¦  «         d S )Nrg  r  r  rÐ   s      r"   Úop_DUP_TOP_TWOzTraceRunner.op_DUP_TOP_TWOK  r  r$   c                 ó`   — |                      |                     |j        ¦  «        ¦  «         d S r   )rý   r  r  rÐ   s      r"   Úop_COPYzTraceRunner.op_COPYN  s(   € Ø�
Š
�5—:’:˜dœhÑ'Ô'Ñ(Ô(Ð(Ð(Ð(r$   c                 ó:   — |                      |j        ¦  «         d S r   )Úswapr  rÐ   s      r"   Úop_SWAPzTraceRunner.op_SWAPQ  s   € Ø�
Š
�4”8ÑÔÐÐÐr$   c                 óª   — |                      ¦   «         }|                      ¦   «         }|                     |¦  «         |                     |¦  «         d S r   ©ré   rý   )r    rq   rÑ   ÚfirstÚseconds        r"   Ú
op_ROT_TWOzTraceRunner.op_ROT_TWOT  sF   € Ø—	’	‘”ˆØ—’‘”ˆØ�
Š
�5ÑÔÐØ�
Š
�6ÑÔÐÐÐr$   c                 óü   — |                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                     |¦  «         |                     |¦  «         |                     |¦  «         d S r   r"  )r    rq   rÑ   r#  r$  Úthirds         r"   Úop_ROT_THREEzTraceRunner.op_ROT_THREEZ  se   € Ø—	’	‘”ˆØ—’‘”ˆØ—	’	‘”ˆØ�
Š
�5ÑÔÐØ�
Š
�5ÑÔÐØ�
Š
�6ÑÔÐÐÐr$   c                 óN  — |                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         d S r   r"  )r    rq   rÑ   r#  r$  r'  Úforths          r"   Úop_ROT_FOURzTraceRunner.op_ROT_FOURb  s„   € Ø—	’	‘”ˆØ—’‘”ˆØ—	’	‘”ˆØ—	’	‘”ˆØ�
Š
�5ÑÔÐØ�
Š
�5ÑÔÐØ�
Š
�5ÑÔÐØ�
Š
�6ÑÔÐÐÐr$   c                 ó  ‡— |j         }‰                     ¦   «         }ˆfd„t          |¦  «        D ¦   «         }‰                     ¦   «         }‰                     ||||¬¦  «         t          |¦  «        D ]}‰                     |¦  «         Œd S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r  r  s     €r"   r  z2TraceRunner.op_UNPACK_SEQUENCE.<locals>.<listcomp>o  s#   ø€ Ð:Ð:Ð:¨�%—/’/Ñ#Ô#Ð:Ð:Ð:r$   )ÚiterableÚstoresÚtupleobj)r  ré   r  r  r\   r  rý   )r    rq   rÑ   r  r.  r/  r0  Ústs    `      r"   Úop_UNPACK_SEQUENCEzTraceRunner.op_UNPACK_SEQUENCEl  s‘   ø€ Ø”ˆØ—9’9‘;”;ˆØ:Ð:Ð:Ð:­U°5©\¬\Ð:Ñ:Ô:ˆØ—?’?Ñ$Ô$ˆØ�Š�T H°VÀhˆÑOÔOÐOÝ˜6Ñ"Ô"ð 	ð 	ˆBØ�JŠJ�r‰NŒNˆNˆNð	ð 	r$   c                 ó  ‡— |j         }t          t          ˆfd„t          |¦  «        D ¦   «         ¦  «        ¦  «        }‰                     ¦   «         }‰                     |||¬¦  «         ‰                     |¦  «         d S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r
  r  s     €r"   r  z.TraceRunner.op_BUILD_TUPLE.<locals>.<listcomp>w  ó!   ø€ ÐAÐAÐA¨q˜uŸyšy™{œ{ÐAÐAÐAr$   ©r·   r  r  )r    rq   rÑ   r  r·   Útups    `    r"   Úop_BUILD_TUPLEzTraceRunner.op_BUILD_TUPLEu  ót   ø€ Ø”ˆÝ•XÐAÐAÐAÐAµE¸%±L´LÐAÑAÔAÑBÔBÑCÔCˆØ�oŠoÑÔˆØ�Š�T ¨CˆÑ0Ô0Ð0Ø�
Š
�3‰Œˆˆˆr$   c                 óŽ  ‡— t          t          ˆfd„t          |j        ¦  «        D ¦   «         ¦  «        ¦  «        }ˆfd„t          t	          |¦  «        dz
  ¦  «        D ¦   «         }t	          |¦  «        dk    }|r‰                     ¦   «         g}‰                     ||||¬¦  «         ‰                     |d         ¦  «         d S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r
  r  s     €r"   r  z3TraceRunner._build_tuple_unpack.<locals>.<listcomp>~  s!   ø€ ÐEÐEÐE° §	¢	¡¤ÐEÐEÐEr$   c                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r  r  s     €r"   r  z3TraceRunner._build_tuple_unpack.<locals>.<listcomp>  s#   ø€ ÐCÐCÐC q�—’Ñ"Ô"ÐCÐCÐCr$   rï   )Útuplesr­  Ú	is_assignrä   )r¾   r  r  r  Úlenr  r\   rý   )r    rq   rÑ   r=  r­  r>  s    `    r"   Ú_build_tuple_unpackzTraceRunner._build_tuple_unpack|  sÂ   ø€ å•hÐEÐEÐEÐEµU¸4¼8±_´_ÐEÑEÔEÑFÔFÑGÔGˆØCÐCÐCÐC­Eµ#°f±+´+À±/Ñ,BÔ,BÐCÑCÔCˆõ ˜‘K”K 1Ò$ˆ	Øð 	)Ø—_’_Ñ&Ô&Ð(ˆEà�Š�T &°ÀˆÑKÔKÐKà�
Š
�5˜”9ÑÔÐÐÐr$   c                 ó2   — |                       ||¦  «         d S r   ©r@  rÐ   s      r"   Úop_BUILD_TUPLE_UNPACK_WITH_CALLz+TraceRunner.op_BUILD_TUPLE_UNPACK_WITH_CALL‹  s   € à× Ò  ¨Ñ-Ô-Ð-Ð-Ð-r$   c                 ó2   — |                       ||¦  «         d S r   rB  rÐ   s      r"   Úop_BUILD_TUPLE_UNPACKz!TraceRunner.op_BUILD_TUPLE_UNPACK�  s   € Ø× Ò  ¨Ñ-Ô-Ð-Ð-Ð-r$   c                 ó°   — |                      ¦   «         }|                     ¦   «         }|                     |||¬¦  «         |                     |¦  «         d S )N)Ú
const_listr  r/  )r    rq   rÑ   rJ  r  s        r"   Úop_LIST_TO_TUPLEzTraceRunner.op_LIST_TO_TUPLE’  sK   € ð �iŠi‰kŒkˆØ�oŠoÑÔˆØ�Š�T c¨sˆÑ3Ô3Ð3Ø�
Š
�3‰Œˆˆˆr$   c                 ój  ‡— ‰                      ¦   «         }t          t          ˆfd„t          |j        ¦  «        D ¦   «         ¦  «        ¦  «        }ˆfd„t          |j        ¦  «        D ¦   «         }‰                     ¦   «         }‰                     |||||¬¦  «         ‰                     |¦  «         d S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r
  r  s     €r"   r  z6TraceRunner.op_BUILD_CONST_KEY_MAP.<locals>.<listcomp>œ  s!   ø€ ÐCÐCÐC¨a˜eŸiši™kœkÐCÐCÐCr$   c                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r  r  s     €r"   r  z6TraceRunner.op_BUILD_CONST_KEY_MAP.<locals>.<listcomp>�  s#   ø€ Ð>Ð>Ð>¨�5—?’?Ñ$Ô$Ð>Ð>Ð>r$   )ÚkeysÚkeytmpsÚvaluesr  )ré   r¾   r  r  r  r  r\   rý   )r    rq   rÑ   rL  ÚvalsrM  r  s    `     r"   Úop_BUILD_CONST_KEY_MAPz"TraceRunner.op_BUILD_CONST_KEY_MAPš  s¡   ø€ Ø�yŠy‰{Œ{ˆÝ•HÐCÐCÐCÐCµ5¸¼±?´?ÐCÑCÔCÑDÔDÑEÔEˆØ>Ð>Ð>Ð>­e°D´H©o¬oÐ>Ñ>Ô>ˆØ�oŠoÑÔˆØ�Š�T ¨g¸dÈˆÑLÔLÐLØ�
Š
�3‰Œˆˆˆr$   c                 ó  ‡— |j         }t          t          ˆfd„t          |¦  «        D ¦   «         ¦  «        ¦  «        }‰                     ¦   «         }‰                     |||¬¦  «         ‰                     |¦  «         d S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r
  r  s     €r"   r  z-TraceRunner.op_BUILD_LIST.<locals>.<listcomp>¤  r5  r$   r6  r  )r    rq   rÑ   r  r·   Úlsts    `    r"   Úop_BUILD_LISTzTraceRunner.op_BUILD_LIST¢  r9  r$   c                 óê   — |                      ¦   «         }|j        }|                     |¦  «        }|                     ¦   «         }|                     ¦   «         }|                     |||||¬¦  «         d S )N)rŽ   r!   Ú	appendvarr  ©ré   r  r  r  r\   )r    rq   rÑ   r!   ré  rŽ   rV  r  s           r"   Úop_LIST_APPENDzTraceRunner.op_LIST_APPEND©  óu   € Ø—	’	‘”ˆØ”ˆØ—’˜EÑ"Ô"ˆØ—O’OÑ%Ô%ˆ	Ø�oŠoÑÔˆØ�Š�T &°ÀØð 	ñ 	ô 	ð 	ð 	ð 	r$   c                 óê   — |                      ¦   «         }|j        }|                     |¦  «        }|                     ¦   «         }|                     ¦   «         }|                     |||||¬¦  «         d S )N)rŽ   r!   Ú	extendvarr  rW  )r    rq   rÑ   r!   ré  rŽ   r[  r  s           r"   Úop_LIST_EXTENDzTraceRunner.op_LIST_EXTEND²  rY  r$   c                 óP  — |                      ¦   «         }|j        }g }t          |¦  «        D ]A}|                     ¦   «         |                     ¦   «         }}|                     ||f¦  «         ŒB|                     ||d d d…         ||¬¦  «         |                     |¦  «         d S )Nrä   )r·   Úsizer  )r  r  r  ré   r\   rý   )	r    rq   rÑ   Údctr  r·   r®  ÚvÚks	            r"   Úop_BUILD_MAPzTraceRunner.op_BUILD_MAP»  s›   € Ø�oŠoÑÔˆØ”ˆØˆå�u‘”ð 	!ð 	!ˆAØ—9’9‘;”; §	¢	¡¤ˆqˆAØ�LŠL˜!˜Q˜Ñ Ô Ð Ð Ø�Š�T  t t¨ t¤°5¸cˆÑBÔBÐBØ�
Š
�3‰Œˆˆˆr$   c                 ó  — |                      ¦   «         }|                      ¦   «         }||}}|j        }|                     |¦  «        }|                     ¦   «         }	|                     ¦   «         }
|                     |||||	|
¬¦  «         d S )N)rŽ   rV   r!   Ú
setitemvarr  rW  )r    rq   rÑ   ÚTOSÚTOS1rV   r!   ré  rŽ   rd  r  s              r"   Ú
op_MAP_ADDzTraceRunner.op_MAP_ADDÆ  s�   € Ø�iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ˜CˆUˆØ”ˆØ—’˜EÑ"Ô"ˆØ—_’_Ñ&Ô&ˆ
Ø�oŠoÑÔˆØ�Š�T &¨c¸Ø *°ð 	ñ 	5ô 	5ð 	5ð 	5ð 	5r$   c                 ó  ‡— |j         }t          t          ˆfd„t          |¦  «        D ¦   «         ¦  «        ¦  «        }‰                     ¦   «         }‰                     |||¬¦  «         ‰                     |¦  «         d S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r<   r
  r  s     €r"   r  z,TraceRunner.op_BUILD_SET.<locals>.<listcomp>Ô  r5  r$   r6  r  )r    rq   rÑ   r  r·   r  s    `    r"   Úop_BUILD_SETzTraceRunner.op_BUILD_SETÑ  st   ø€ Ø”ˆå•XÐAÐAÐAÐAµE¸%±L´LÐAÑAÔAÑBÔBÑCÔCˆØ�oŠoÑÔˆØ�Š�T ¨CˆÑ0Ô0Ð0Ø�
Š
�3‰Œˆˆˆr$   c                 óê   — |                      ¦   «         }|j        }|                     |¦  «        }|                     ¦   «         }|                     ¦   «         }|                     |||||¬¦  «         d S ©N)rŽ   r!   Ú	updatevarr  rW  ©r    rq   rÑ   r!   ré  rŽ   rm  r  s           r"   Úop_SET_UPDATEzTraceRunner.op_SET_UPDATEÙ  rY  r$   c                 óê   — |                      ¦   «         }|j        }|                     |¦  «        }|                     ¦   «         }|                     ¦   «         }|                     |||||¬¦  «         d S rl  rW  rn  s           r"   Úop_DICT_UPDATEzTraceRunner.op_DICT_UPDATEâ  rY  r$   c                 ó°   — |                      ¦   «         }|                     ¦   «         }|                     |||¬¦  «         |                     |¦  «         d S rœ  r/  )r    rq   rÑ   r!   r  s        r"   Úop_GET_ITERzTraceRunner.op_GET_ITERë  sI   € Ø—	’	‘”ˆØ�oŠoÑÔˆØ�Š�T ¨CˆÑ0Ô0Ð0Ø�
Š
�3‰Œˆˆˆr$   c                 ó�  — |                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     |||||¬¦  «         |                     |¦  «         |                     ¦   «         }|                     |d¬¦  «         |                     |j        ¬¦  «         d S )N)ÚiteratorÚpairÚindvalro  rg  ru  ry   )rv  r  r\   rý   rp  r†   r‡   )r    rq   rÑ   ru  rv  rw  ro  rz   s           r"   Úop_FOR_ITERzTraceRunner.op_FOR_ITERñ  s·   € Ø—=’=‘?”?ˆØ�ŠÑ Ô ˆØ—’Ñ"Ô"ˆØ�ŠÑ Ô ˆØ�Š�T H°4ÀØð 	ñ 	 ô 	 ð 	 à�
Š
�6ÑÔÐØ×"Ò"Ñ$Ô$ˆØ�
Š
�c ˆ
Ñ"Ô"Ð"Ø�
Š
�d”iˆ
Ñ Ô Ð Ð Ð r$   c                 ó   — dS )a(  Pops TOS. If TOS was not None, raises an exception. The kind
        operand corresponds to the type of generator or coroutine and
        determines the error message. The legal kinds are 0 for generator,
        1 for coroutine, and 2 for async generator.

        New in version 3.10.
        Nr<   rÐ   s      r"   Úop_GEN_STARTzTraceRunner.op_GEN_STARTý  s	   € ð 	ˆr$   c                 óD  — t           j        |j                 d         }|                     ¦   «         }|                     ¦   «         }t          |         j        }|                     d|› �¬¦  «        }|                     |||||¬¦  «         |                     |¦  «         d S )Nrï   Úbinop_rÇ  )ÚopÚlhsr»   r  )	ÚdisÚ_nb_opsr  ré   r
   r7   r  r\   rý   )r    rq   rÑ   r}  r»   r~  Úop_namer  s           r"   Úop_BINARY_OPzTraceRunner.op_BINARY_OP  s‡   € ÝŒ[˜œÔ" 1Ô%ˆØ�iŠi‰kŒkˆØ�iŠi‰kŒkˆÝ)¨"Ô-Ô6ˆØ�oŠoÐ%7¨gÐ%7Ð%7ˆoÑ8Ô8ˆØ�Š�T˜b c¨s¸ˆÑ<Ô<Ð<Ø�
Š
�3‰Œˆˆˆr$   c                 ó°   — |                      ¦   «         }|                     ¦   «         }|                     |||¬¦  «         |                     |¦  «         d S rœ  r/  r�  s        r"   Ú_unaryopzTraceRunner._unaryop  r   r$   c                 óÚ   — |                      ¦   «         }|                      ¦   «         }|                     ¦   «         }|                     ||||¬¦  «         |                     |¦  «         d S )N)r~  r»   r  r/  )r    rq   rÑ   r»   r~  r  s         r"   Ú	_binaryopzTraceRunner._binaryop  sX   € Ø�iŠi‰kŒkˆØ�iŠi‰kŒkˆØ�oŠoÑÔˆØ�Š�T˜s¨°ˆÑ5Ô5Ð5Ø�
Š
�3‰Œˆˆˆr$   Fc           
      ó>  — t           dk    rd }n4t           dk     r|                     ¦   «         }nt          t           ¦  «        ‚|                     ¦   «         }d x}x}x}}	|j        dz  r|                     ¦   «         }|j        dz  r|                     ¦   «         }|j        dz  r|                     ¦   «         }|j        dz  r|                     ¦   «         }	|                     ¦   «         }
|                     |||||||	|
¬¦  «         |                     |
¦  «         d S )Nru   é   é   rg  rï   )r3  ÚcodeÚclosureÚannotationsÚ
kwdefaultsÚdefaultsr  )r	   ré   rÙ   r  r  r\   rý   )r    rq   rÑ   ÚMAKE_CLOSUREr3  rŠ  r‹  rŒ  r�  rŽ  r  s              r"   Úop_MAKE_FUNCTIONzTraceRunner.op_MAKE_FUNCTIONG  s"  € Ý˜ÒÐð ˆDˆDÝ˜Ò Ð Ø—9’9‘;”;ˆDˆDå%¥iÑ0Ô0Ð0Ø�yŠy‰{Œ{ˆØ8<Ð<ˆÐ<�+Ð< 
¨XØŒ8�c‰>ð 	"Ø—i’i‘k”kˆGØŒ8�c‰>ð 	&ØŸ)š)™+œ+ˆKØŒ8�c‰>ð 	%ØŸš™œˆJØŒ8�c‰>ð 	#Ø—y’y‘{”{ˆHØ�oŠoÑÔˆØ�ŠØØØØØ#Ø!ØØð 	ñ 		
ô 		
ð 		
ð 	�
Š
�3‰Œˆˆˆr$   c                 ó6   — |                       ||d¬¦  «         d S )NT)r�  )r�  rÐ   s      r"   Úop_MAKE_CLOSUREzTraceRunner.op_MAKE_CLOSUREg  s#   € Ø×Ò˜e T¸ÐÑ=Ô=Ð=Ð=Ð=r$   c                 ó†   — |                      ¦   «         }|                     ||¬¦  «         |                     |¦  «         d S r  r   r!  s       r"   Úop_LOAD_CLOSUREzTraceRunner.op_LOAD_CLOSUREj  r(  r$   c                 óˆ   — |                      d¦  «        }|                     ||¬¦  «         |                     |¦  «         d S )NÚassertion_errorr  r   r!  s       r"   Úop_LOAD_ASSERTION_ERRORz#TraceRunner.op_LOAD_ASSERTION_ERRORo  s=   € Ø�oŠoÐ/Ñ0Ô0ˆØ�Š�T˜sˆÑ#Ô#Ð#Ø�
Š
�3‰Œˆˆˆr$   c                 óÜ   — |                      d¦  «        }|                     ¦   «         }|                     ¦   «         }|                     ||||¬¦  «         |                     |¦  «         d S )NÚ	predicate©ro  rJ  rK  )r  ré   rv  r\   rý   ©r    rq   rÑ   ro  rJ  rK  s         r"   Úop_CHECK_EXC_MATCHzTraceRunner.op_CHECK_EXC_MATCHt  s_   € Ø�Š˜{Ñ+Ô+ˆØ�iŠi‰kŒkˆØ�}Š}‰ŒˆØ�Š�T ¨#°DˆÑ9Ô9Ð9Ø�
Š
�4ÑÔÐÐÐr$   c                 ó8  — |                      d¦  «        }|                     ¦   «         }|                     ¦   «         }|                     ||||¬¦  «         |                     |j        ¬¦  «         |                     |                     ¦   «         ¬¦  «         d S )Nr™  rš  ry   )r  ré   r\   r†   r‡   rp  r›  s         r"   Úop_JUMP_IF_NOT_EXC_MATCHz$TraceRunner.op_JUMP_IF_NOT_EXC_MATCH{  s…   € ð �Š˜{Ñ+Ô+ˆØ�iŠi‰kŒkˆØ�yŠy‰{Œ{ˆØ�Š�T ¨#°DˆÑ9Ô9Ð9Ø�
Š
�d”iˆ
Ñ Ô Ð Ø�
Š
�d×*Ò*Ñ,Ô,ˆ
Ñ-Ô-Ð-Ð-Ð-r$   c                 ó  — |                      ¦   «         }|j        dk    r|                      ¦   «          |                     ||¬¦  «         |                     ¦   «         r|                      |¦  «         d S |                     ¦   «          d S )Nr   r¤  )ré   r  r\   r‚   rˆ   r™  r§  s       r"   Ú
op_RERAISEzTraceRunner.op_RERAISE†  s�   € à—)’)‘+”+ˆCØŒx˜1Š}ˆ}Ø—	’	‘”�Ø�LŠL˜ 3ˆLÑ'Ô'Ð'à×#Ò#Ñ%Ô%ð "Ø×)Ò)¨%Ñ0Ô0Ð0Ð0Ð0à—’Ñ!Ô!Ð!Ð!Ð!r$   c                 ó„   — |                      ¦   «         }|                     ||¬¦  «         |                     ¦   «          d S )Nr¤  )ré   r\   r™  r§  s       r"   r   zTraceRunner.op_RERAISE’  s;   € à—)’)‘+”+ˆCØ�LŠL˜ 3ˆLÑ'Ô'Ð'Ø�OŠOÑÔÐÐÐr$   c                 ó  — |                      ¦   «         }|                     ¦   «         }|                     |¦  «         |                     ¦   «         }|                     |||¬¦  «         |                     |¦  «         d S r-  )ré   rþ   rý   r  r\   )r    rq   rÑ   r.  Úextrar  s         r"   Úop_LOAD_METHODzTraceRunner.op_LOAD_METHODž  sj   € Ø—9’9‘;”;ˆDØ—O’OÑ%Ô%ˆEØ�JŠJ�uÑÔÐØ—/’/Ñ#Ô#ˆCØ�LŠL˜ D¨cˆLÑ2Ô2Ð2Ø�JŠJ�s‰OŒOˆOˆOˆOr$   c                 ó2   — |                       ||¦  «         d S r   )r0  rÐ   s      r"   r¤  zTraceRunner.op_LOAD_METHOD¦  s   € Ø×Ò˜e TÑ*Ô*Ð*Ð*Ð*r$   c                 ó2   — |                       ||¦  «         d S r   )rÿ  rÐ   s      r"   Úop_CALL_METHODzTraceRunner.op_CALL_METHOD«  s   € Ø×Ò˜e TÑ*Ô*Ð*Ð*Ð*r$   N)F)¡r7   r8   r9   r:   r#   râ   r`   rˆ   rô   r÷   rù   rû   rÿ   r  r  r  r  r	   r  rÙ   r#  r%  r'  r+  r0  r4  r6  r9  r;  r?  rB  rL  rO  rR  rU  rX  rZ  r\  r^  ra  rc  re  rl  rs  Úop_POP_JUMP_IF_TRUEÚop_POP_JUMP_IF_FALSErw  Úop_JUMP_IF_FALSE_OR_POPÚop_JUMP_IF_TRUE_OR_POPrz  r}  r  r�  rƒ  r…  r‡  r‰  r�  r�  r’  r•  rš  rŸ  r¨  r°  rµ  r·  r¹  r»  r½  rÀ  rÄ  rÕ  rØ  rÛ  rÞ  rà  râ  rç  rê  rì  rî  rù  rü  rÿ  r  r
  r  r  r  r  r  r   r%  r(  r+  r2  r8  r@  rC  rE  rH  rP  rT  rX  r\  rb  rg  rj  ro  rq  rs  rx  rz  r‚  r„  Úop_UNARY_NEGATIVEÚop_UNARY_POSITIVEÚop_UNARY_NOTÚop_UNARY_INVERTr†  Úop_COMPARE_OPÚop_IS_OPÚop_CONTAINS_OPÚop_INPLACE_ADDÚop_INPLACE_SUBTRACTÚop_INPLACE_MULTIPLYÚop_INPLACE_DIVIDEÚop_INPLACE_TRUE_DIVIDEÚop_INPLACE_FLOOR_DIVIDEÚop_INPLACE_MODULOÚop_INPLACE_POWERÚop_INPLACE_MATRIX_MULTIPLYÚop_INPLACE_LSHIFTÚop_INPLACE_RSHIFTÚop_INPLACE_ANDÚop_INPLACE_ORÚop_INPLACE_XORÚop_BINARY_ADDÚop_BINARY_SUBTRACTÚop_BINARY_MULTIPLYÚop_BINARY_DIVIDEÚop_BINARY_TRUE_DIVIDEÚop_BINARY_FLOOR_DIVIDEÚop_BINARY_MODULOÚop_BINARY_POWERÚop_BINARY_MATRIX_MULTIPLYÚop_BINARY_LSHIFTÚop_BINARY_RSHIFTÚop_BINARY_ANDÚop_BINARY_ORÚop_BINARY_XORr�  r’  r”  r—  rœ  rž  r   r¤  r§  r<   r$   r"   rX   rX   4  s0	  € € € € € ðð ðð ð ð
0ð 0ð 0ðMð Mð Mð./ð /ð /ð(ð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð"ð ð ð"ð ð ð �GÒÐð	ð 	ð 	ð 	ð 
�WÒ	Ð	ð	ð 	ð 	ð 	ð
 "Ð! )Ñ,Ô,Ð,ðð ð ðð ð ðð ð ð
$ð $ð $ð
ð ð ðð ð ðð ð ð*ð *ð *ð7ð 7ð 7ð
(ð (ð (ð(ð (ð (ðð ð ð*ð ð ð*ð ð ð*
ð 
ð 
ð$
ð 
ð 
ð(
ð 
ð 
ð(
ð 
ð 
ð(
ð 
ð 
ð
ð 
ð 
ð$
ð 
ð 
ð$
ð 
ð 
ðð ð ð6
'ð 
'ð 
'ð *ÐØ*Ðð.ð .ð .ð 1ÐØ/Ðð*ð *ð *ð*ð *ð *ð*ð *ð *ð*ð *ð *ð*ð *ð *ð*ð *ð *ð*ð *ð *ð*ð *ð *ð.ð .ð .ð.ð .ð .ð.ð .ð .ðð ð ðð ð ðð ð ð �GÒÐð	"ð 	"ð 	"ð 	"ð* 
�WÒ	Ð	ð	ð 	ð 	ð 	ð& "Ð!ð(ð (ð (ð.ð .ð .ðMð Mð Mðð ð ðð ð ðð ð ðð ð ð
ð 
ð 
ð!ð !ð !ð<!ð !ð !ð8
ð 
ð 
ð(ð ð ð

ð 
ð 
ð �GÒÐð	ð 	ð 	ð 	ð 
�WÒ	Ð	ð	%ð 	%ð 	%ð 	%ð "Ð! )Ñ,Ô,Ð,ð!ð !ð !ðð ð ðDð Dð Dð7ð 7ð 7ð
ð ð ð %ð %ð %ðð ð ðð ð ðð ð ð&
ð 
ð 
ð+ð +ð +ð
-ð -ð -ð-ð -ð -ð)ð )ð )ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð.ð .ð .ð.ð .ð .ðð ð ðð ð ðð ð ðð ð ðð ð ð	ð 	ð 	ð	5ð 	5ð 	5ðð ð ðð ð ðð ð ðð ð ð
!ð 
!ð 
!ð	ð 	ð 	ðð ð ðð ð ð !ÐØ ÐØ€LØ€Oðð ð ð €MØ€HØ€Nà€NØ#ÐØ#ÐØ!ÐØ&ÐØ'ÐØ!ÐØ ÐØ!*Ðà!ÐØ!ÐØ€NØ€MØ€Nà€MØ"ÐØ"ÐØ ÐØ%ÐØ&ÐØ ÐØ€OØ )Ðà ÐØ ÐØ€MØ€LØ€Mðð ð ð ð@>ð >ð >ðð ð ð
ð ð ð
ð ð ð.ð .ð .ð �GÒÐð
	"ð 
	"ð 
	"ð 
	"ð 
�WÒ	Ð	ð	ð 	ð 	ð 	ð "Ð! )Ñ,Ô,Ð,ð
 �GÒÐð	ð 	ð 	ð 	ð 
�WÒ	Ð	ð	+ð 	+ð 	+ð 	+ð "Ð! )Ñ,Ô,Ð,ð+ð +ð +ð +ð +r$   rX   c                   óX  — e Zd ZdZd,d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
d	„ ¦   «         Ze
d
„ ¦   «         Ze
d„ ¦   «         Ze
d„ ¦   «         Ze
d„ ¦   «         Ze
d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd-d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd.d„Zd „ Zd!„ Z d"„ Z!d#„ Z"d$„ Z#d%„ Z$d&„ Z%d/d(„Z&d)„ Z'd*„ Z(d+„ Z)dS )0Ú_StatezState of the trace
    r<   c                 óî  — || _         || _        || _        || _        g | _        t          |¦  «        | _        t          |¦  «        | _        g | _	        g | _
        g | _        d| _        i | _        t          ¦   «         | _        t!          ¦   «         | _        t%          |¦  «        D ]P}||v r|                      d¦  «        }n|                      d¦  «        }|| j        |<   |                      |¦  «         ŒQdS )aG  
        Parameters
        ----------
        bytecode : numba.bytecode.ByteCode
            function bytecode
        pc : int
            program counter
        nstack : int
            stackdepth at entry
        blockstack : Sequence[Dict]
            A sequence of dictionary denoting entries on the blockstack.
        Fúnull$rº   N)rJ   Ú_pc_initialrŒ   Ú_nstack_initialr_   ÚtupleÚ_blockstack_initialr¾   rè   Ú_temp_registersÚ_instsÚ	_outedgesÚ_terminatedr¯   r   r¶   r­   r®   r  r  rý   )r    rL   rN   rO   rP   Únullvalsr®  rº   s           r"   r#   z_State.__init__³  sí   € ð "ˆŒØˆÔØˆŒØ%ˆÔØˆŒÝ#(¨Ñ#4Ô#4ˆÔ Ý 
Ñ+Ô+ˆÔØ!ˆÔØˆŒØˆŒØ ˆÔØˆŒ
Ý(™lœlˆÔÝ™%œ%ˆŒÝ�v‘”ð 	ð 	ˆAØ�Hˆ}ˆ}Ø—n’n WÑ-Ô-��à—n’n UÑ+Ô+�ØˆDŒJ�s‰OØ�IŠI�c‰NŒNˆNˆNð	ð 	r$   c                 óB   — d                      | j        | j        ¦  «        S )Nz&State(pc_initial={} nstack_initial={}))r/   rÓ  rÔ  r(   s    r"   r6   z_State.__repr__Ö  s%   € Ø7×>Ò>ØÔ˜dÔ2ñ
ô 
ð 	
r$   c                 ó   — | j         | j        fS r   )rÓ  rÔ  r(   s    r"   Úget_identityz_State.get_identityÛ  s   € ØÔ  $Ô"6Ð7Ð7r$   c                 óD   — t          |                      ¦   «         ¦  «        S r   )r&   rÞ  r(   s    r"   r)   z_State.__hash__Þ  s   € Ý�D×%Ò%Ñ'Ô'Ñ(Ô(Ð(r$   c                 óV   — |                       ¦   «         |                      ¦   «         k     S r   ©rÞ  r0   s     r"   r2   z_State.__lt__á  s%   € Ø× Ò Ñ"Ô" U×%7Ò%7Ñ%9Ô%9Ò9Ð9r$   c                 óV   — |                       ¦   «         |                      ¦   «         k    S r   rá  r0   s     r"   r4   z_State.__eq__ä  s%   € Ø× Ò Ñ"Ô" e×&8Ò&8Ñ&:Ô&:Ò:Ð:r$   c                 ó   — | j         S )z]The starting bytecode offset of this State.
        The PC given to the constructor.
        )rÓ  r(   s    r"   rS   z_State.pc_initialç  s   € ð
 ÔÐr$   c                 ó   — | j         S )ziThe list of instructions information as a 2-tuple of
        ``(pc : int, register_map : Dict)``
        )rØ  r(   s    r"   Úinstructionsz_State.instructionsî  s   € ð
 Œ{Ðr$   c                 ó   — | j         S )zaThe list of outgoing edges.

        Returns
        -------
        edges : List[State]
        ©rÙ  r(   s    r"   rf   z_State.outgoing_edgesõ  s   € ð Œ~Ðr$   c                 ó   — | j         S )z‹The dictionary of outgoing phi nodes.

        The keys are the name of the PHI nodes.
        The values are the outgoing states.
        )r¶   r(   s    r"   Úoutgoing_phisz_State.outgoing_phisÿ  s   € ð Ô"Ð"r$   c                 ó   — | j         S )z6A copy of the initial state of the blockstack
        )rÖ  r(   s    r"   Úblockstack_initialz_State.blockstack_initial  s   € ð Ô'Ð'r$   c                 ó*   — t          | j        ¦  «        S )zYThe current size of the stack

        Returns
        -------
        res : int
        )r?  r_   r(   s    r"   r}   z_State.stack_depth  s   € õ �4”;ÑÔÐr$   c                 ón   — t          | j        ¦  «        D ]}|d         t          d¦  «        k    r|c S Œ dS )z&Find the initial *try* block.
        r™   r   N)r  rÖ  r   )r    r´  s     r"   Úfind_initial_try_blockz_State.find_initial_try_block  sM   € õ ˜DÔ4Ñ5Ô5ð 	ð 	ˆCØ�6Œ{�i¨Ñ.Ô.Ò.Ð.Ø�
�
�
ð /ð	ð 	r$   c                 ó   — | j         S r   ©rÚ  r(   s    r"   ra   z_State.has_terminated  s   € ØÔÐr$   c                 ó&   — | j         | j                 S r   )rJ   rŒ   r(   s    r"   rƒ   z_State.get_inst"  s   € ØŒ~˜dœhÔ'Ð'r$   c                 óF   — |                       ¦   «         }|j        | _        d S r   )rƒ   r‡   rŒ   ©r    rÑ   s     r"   r‰   z_State.advance_pc%  s   € Ø�}Š}‰ŒˆØ”9ˆŒˆˆr$   Ú c                 óP  — |sZd                      || j        |                      ¦   «         j                             ¦   «         t          | j        ¦  «        ¬¦  «        }n/d                      || j        t          | j        ¦  «        ¬¦  «        }| j                             |¦  «         |S )Nz"${prefix}{offset}{opname}.{tempct})rÈ  rÎ   r„   Útempctz${prefix}{offset}.{tempct})rÈ  rÎ   rö  )r/   rŒ   rƒ   r„   Úlowerr?  r×  r\   )r    rÈ  r3  s      r"   r  z_State.make_temp)  s¦   € Øð 	Ø7×>Ò>ØØ”xØ—}’}‘”Ô-×3Ò3Ñ5Ô5Ý˜4Ô/Ñ0Ô0ð	 ?ñ ô ˆDˆDð 0×6Ò6ØØ”xÝ˜4Ô/Ñ0Ô0ð 7ñ ô ˆDð 	Ô×#Ò# DÑ)Ô)Ð)Øˆr$   c                 óÀ   — | j                              |j        |f¦  «         | xj        t	          t          |                     ¦   «         ¦  «        ¦  «        z  c_        dS )zAppend new instN)rØ  r\   rÎ   r®   r­   Ú_flatten_inst_regsrN  )r    rÑ   rA   s      r"   r\   z_State.append;  sL   € àŒ×Ò˜DœK¨Ð0Ñ1Ô1Ð1ØˆŒ�3Õ1°&·-²-±/´/ÑBÔBÑCÔCÑCˆŒˆˆr$   c                 ó,   — |                       d¦  «        S )Nrï   )r  r(   s    r"   rv  z_State.get_tos@  s   € Ø�yŠy˜‰|Œ|Ðr$   c                 ó   — | j         |          S )z-Return the k'th element on the stack
        ©r_   )r    ra  s     r"   r  z_State.peekC  s   € ð Œ{˜A˜2ŒÐr$   c                 ó:   — | j                              |¦  «         dS )zPush to stackN)r_   r\   )r    r.  s     r"   rý   z_State.pushH  s   € àŒ×Ò˜4Ñ Ô Ð Ð Ð r$   c                 ó4   — | j                              ¦   «         S )zPop the stack)r_   ré   r(   s    r"   ré   z
_State.popL  s   € àŒ{�ŠÑ Ô Ð r$   c                 óF   — | j         }||          |d         c|d<   || <   dS )zSwap stack[idx] with the tosrä   Nrü  )r    r  Úss      r"   r  z_State.swapP  s,   € àŒKˆØ˜C˜4œ ! B¤%ˆˆˆ"‰ˆq�#�‰wˆwˆwr$   c                 óF   — d|v sJ ‚| j                              |¦  «         dS )z#Push a block to blockstack
        r}   N)rè   r\   )r    Úsynblks     r"   rÃ  z_State.push_blockU  s2   € ð  Ð&Ð&Ð&Ð&ØÔ×Ò Ñ'Ô'Ð'Ð'Ð'r$   c                 óN   — | j         d|…         | j         |d…         c| _         }|S )zVReset the stack to the given stack depth.
        Returning the popped items.
        Nrü  )r    r�   Úpoppeds      r"   r²  z_State.reset_stack[  s-   € ð #œk¨&¨5¨&Ô1°4´;¸u¸v¸vÔ3FÐˆŒ�VØˆr$   TNc                 ó˜   — t          |¦  «        |t          | j        ¦  «        dœ}|rt          | j        ¦  «        |d<   nd|d<   ||d<   |S )zMake a new block
        )r™   rz   r–   r}   Nr˜   )r   r?  r_   )r    r™   rz   r²  r˜   Úds         r"   r�   z_State.make_blockb  sb   € õ ˜d‘O”OØÝ˜tœ{Ñ+Ô+ð
ð 
ˆð
 ð 	$Ý" 4¤;Ñ/Ô/ˆAˆmÑÐà#ˆAˆmÑØˆˆ)‰Øˆr$   c                 ón   — | j                              ¦   «         }|                      |d         ¦  «         |S )z)Pop a block and unwind the stack
        r}   )rè   ré   r²  ©r    r§   s     r"   r”  z_State.pop_blockq  s6   € ð Ô× Ò Ñ"Ô"ˆØ×Ò˜˜=Ô)Ñ*Ô*Ð*Øˆr$   c                 ó¨   — | j                              |¦  «        }d|cxk    rt          | j         ¦  «        k     sn J ‚| j         d|…         | _         dS )zcFind *blk* in the blockstack and remove it and all blocks above it
        from the stack.
        r   N)rè   ré  r?  )r    r´  r  s      r"   r›   z_State.pop_block_and_abovex  sd   € ð Ô×$Ò$ SÑ)Ô)ˆØ�CÐ/Ð/Ò/Ð/�#˜dÔ.Ñ/Ô/Ò/Ð/Ð/Ð/Ð/Ð/ØÔ+¨D¨S¨DÔ1ˆÔÐÐr$   c                 ór   — t          |¦  «        }t          | j        ¦  «        D ]}|d         |k    r|c S ŒdS )ú1Find the first block that matches *kind*
        r™   N)r   r  rè   )r    r™   Úbss      r"   r�   z_State.get_top_block€  sP   € õ ˜‰ŒˆÝ˜4Ô+Ñ,Ô,ð 	ð 	ˆBØ�&Œz˜TÒ!Ð!Ø�	�	�	ð "ð	ð 	r$   c                 óh   — d„ |D ¦   «         }t          | j        ¦  «        D ]}|d         |v r|c S ŒdS )r  c                 ó,   — h | ]}t          |¦  «        ’ŒS r<   )r   )r  r™   s     r"   ú	<setcomp>z._State.get_top_block_either.<locals>.<setcomp>‹  s   € Ð3Ð3Ð3 T•˜4‘”Ð3Ð3Ð3r$   r™   N)r  rè   )r    Úkindsr  s      r"   Úget_top_block_eitherz_State.get_top_block_eitherˆ  sX   € ð 4Ð3¨UÐ3Ñ3Ô3ˆÝ˜4Ô+Ñ,Ô,ð 	ð 	ˆBØ�&Œz˜UÐ"Ð"Ø�	�	�	ð #ð	ð 	r$   c                 ó0   — |                       d¦  «        duS )zGReturns a boolean indicating if the top-block is a *try* block
        r   N)r�   r(   s    r"   r‚   z_State.has_active_try�  s   € ð ×!Ò! %Ñ(Ô(°Ð4Ð4r$   c                 ó0   — | j         j        |j                 S )z4Get referenced variable name from the oparg
        )rJ   Úco_varnamesr  ró  s     r"   r2  z_State.get_varname•  s   € ð Œ~Ô)¨$¬(Ô3Ð3r$   c                 ó   — d| _         dS )z!Mark block as terminated
        TNrð  r(   s    r"   r™  z_State.terminateš  s   € ð  ˆÔÐÐr$   r   c           
      ó*  — t          | j        ¦  «        }|rDd|cxk    rt          | j        ¦  «        k    sn J ‚t          | j        ¦  «        |z
  }|d|…         }|rAd|k    sJ ‚t          |¦  «        D ])}|                     |                      ¦   «         ¦  «         Œ*t          | j        ¦  «        }t          dk    rF|rC|d         }	|	                     d¦  «        p|	d         }
||
k    r| 	                    ¦   «          nn|°Cn t          dk     rnt          t          ¦  «        ‚|r|                     |¦  «         | j                             t          |t          |¦  «        |t          |¦  «        ¬¦  «        ¦  «         |                      ¦   «          dS )zFork the state
        r   Nru   rä   r|   rz   )rN   Ústackrš   rP   )r¾   r_   r?  r  r\   r  rè   r	   Úgetré   rÙ   rÙ  ÚEdgerÕ  r™  )r    rN   r—   rš   r€   r  rO   r®  rP   Útoprz   s              r"   r†   z_State.forkŸ  s¹  € õ �T”[Ñ!Ô!ˆØð 	#Ø˜Ð0Ð0Ò0Ð0¥ D¤KÑ 0Ô 0Ò0Ð0Ð0Ð0Ð0Ð0Ý˜œÑ%Ô%¨Ñ,ˆFØ˜'˜6˜'”NˆEØð 	/Ø˜’:�:�:�:Ý˜5‘\”\ð /ð /�Ø—’˜TŸ^š^Ñ-Ô-Ñ.Ô.Ð.Ð.å˜$Ô*Ñ+Ô+ˆ
Ý˜ÒÐàð Ø  ”n�Ø—g’g˜lÑ+Ô+Ð9¨s°5¬z�Ø˜’9�9Ø—N’NÑ$Ô$Ð$Ð$àð ð øõ ˜Ò Ð Øå%¥iÑ0Ô0Ð0àð 	+Ø×Ò˜kÑ*Ô*Ð*ØŒ×Ò�dØ�˜u™œ¨UÝ˜ZÑ(Ô(ð
ñ 
ô 
ñ 	ô 	ð 	ð 	�ŠÑÔÐÐÐr$   c                 ó<   — |                       | j        ¬¦  «         dS )zSplit the state
        ry   N)r†   rŒ   r(   s    r"   re   z_State.split_new_blockÄ  s    € ð 	�	Š	�T”Xˆ	ÑÔÐÐÐr$   c                 ód  — | j         rJ ‚g }| j        D ]œ}t          | j        |j        t          |j        ¦  «        |j        d„ t          |j        ¦  «        D ¦   «         ¬¦  «        }| 	                    |¦  «         |j
                             ¦   «         D ]\  }}|j        |         | j         |<   ŒŒ�|S )z+Get states for each outgoing edges
        c                 ó6   — g | ]\  }}t          |¦  «        ¯|‘ŒS r<   )rÝ   )r  r®  r`  s      r"   r  z._State.get_outgoing_states.<locals>.<listcomp>Ò  s8   € ð $=ð $=ð $=©$¨!¨QÝ'8¸Ñ';Ô';ð$= Að $=ð $=ð $=r$   )rL   rN   rO   rP   rÛ  )r¶   rÙ  rW   rJ   rN   r?  r  rP   Ú	enumerater\   r¯   r·   )r    Úretr¨   rq   rº   r®  s         r"   rh   z_State.get_outgoing_statesÉ  sÎ   € ð Ô&Ð&Ð&Ð&ØˆØ”Nð 	9ð 	9ˆDÝ 4¤>°d´gÝ!$ T¤Z¡¤¸T¼_ð$=ð $=µ)¸D¼JÑ2GÔ2Gð $=ñ $=ô $=ð>ñ >ô >ˆEð �JŠJ�uÑÔÐàœ+×+Ò+Ñ-Ô-ð 9ð 9‘��QØ+/¬:°a¬=�Ô# CÑ(Ð(ð9àˆ
r$   c                 ó$   — d„ | j         D ¦   «         S )z–
        Returns
        -------
        Dict[int, int]
            where keys are the PC
            values are the edge-pushed stack values
        c                 ó^   — i | ]*}|j         t          |j        |j         d …         ¦  «        “Œ+S r   )rN   rÕ  r  rš   )r  r¨   s     r"   ú
<dictcomp>z2_State.get_outgoing_edgepushed.<locals>.<dictcomp>ã  sC   € ð ,ð ,ð ,Øð ”�˜tœz¨4¬:¨+¨,¨,Ô7Ñ8Ô8ð ,ð ,ð ,r$   rç  r(   s    r"   Úget_outgoing_edgepushedz_State.get_outgoing_edgepushedÚ  s%   € ð,ð ,Ø œNð,ñ ,ô ,ð 	,r$   )r<   )rô  )TN)r   r   N)*r7   r8   r9   r:   r#   r6   rÞ  r)   r2   r4   ÚpropertyrS   rå  rf   ré  rë  r}   rî  ra   rƒ   r‰   r  r\   rv  r  rý   ré   r  rÃ  r²  r�   r”  r›   r�   r  r‚   r2  r™  r†   re   rh   r#  r<   r$   r"   rÐ  rÐ  ¯  sª  € € € € € ðð ð!ð !ð !ð !ðF
ð 
ð 
ð
8ð 8ð 8ð)ð )ð )ð:ð :ð :ð;ð ;ð ;ð ð ð  ñ „Xð ð ðð ñ „Xðð ðð ñ „Xðð ð#ð #ñ „Xð#ð ð(ð (ñ „Xð(ð
 ð ð  ñ „Xð ðð ð ð ð  ð  ð(ð (ð (ðð ð ðð ð ð ð$Dð Dð Dð
ð ð ðð ð ð
!ð !ð !ð!ð !ð !ð(ð (ð (ð
(ð (ð (ðð ð ðð ð ð ðð ð ð2ð 2ð 2ðð ð ðð ð ð5ð 5ð 5ð
4ð 4ð 4ð
 ð  ð  ð
#ð #ð #ð #ðJð ð ð
ð ð ð"
,ð 
,ð 
,ð 
,ð 
,r$   rÐ  c                   óB   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	ˆ xZ
S )Ú
StatePy311c                 óH   •—  t          ¦   «         j        |i |¤Ž d | _        d S r   )Úsuperr#   Ú	_kw_names)r    r@   rA   Ú	__class__s      €r"   r#   zStatePy311.__init__è  s*   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)ØˆŒˆˆr$   c                 ó"   — | j         }d | _         |S r   ©r)  )r    Úouts     r"   rô  zStatePy311.pop_kw_namesì  s   € ØŒnˆØˆŒØˆ
r$   c                 ó&   — | j         �J ‚|| _         d S r   r,  )r    rž  s     r"   rû  zStatePy311.set_kw_namesñ  s   € ØŒ~Ð%Ð%Ð%ØˆŒˆˆr$   c                 óH   — | j         }|                     | j        ¦  «        d uS r   ©rJ   rÍ  rŒ   ©r    rÒ  s     r"   rŠ   zStatePy311.is_in_exceptionõ  s$   € ØŒ^ˆØ×&Ò& t¤xÑ0Ô0¸Ð<Ð<r$   c                 óD   — | j         }|                     | j        ¦  «        S r   r0  r1  s     r"   r‹   zStatePy311.get_exceptionù  s   € ØŒ^ˆØ×&Ò& t¤xÑ0Ô0Ð0r$   c                 óR   — | j         D ]}|d         t          d¦  «        k    r dS Œd S )Nr™   r   T)rÖ  r   )r    Úents     r"   r�   zStatePy311.in_withý  sA   € ØÔ+ð 	ð 	ˆCØ�6Œ{�i¨Ñ/Ô/Ò/Ð/Ø�t�tð 0ð	ð 	r$   c                 ó.   — |                       d¬¦  «        S )NrÒ  rÇ  r  r(   s    r"   rþ   zStatePy311.make_null  s   € Ø�~Š~ Wˆ~Ñ-Ô-Ð-r$   )r7   r8   r9   r#   rô  rû  rŠ   r‹   r�   rþ   Ú__classcell__)r*  s   @r"   r&  r&  ç  s’   ø€ € € € € ðð ð ð ð ðð ð ð
ð ð ð=ð =ð =ð1ð 1ð 1ðð ð ð
.ð .ð .ð .ð .ð .ð .r$   r&  ru   r  )rN   r  rP   rš   c                   ó.   — e Zd ZdZd„ Zed„ ¦   «         ZdS )ÚAdaptDFAz<Adapt Flow to the old DFA class expected by Interpreter
    c                 ó   — || _         d S r   )Ú_flow)r    Úflows     r"   r#   zAdaptDFA.__init__  s   € ØˆŒ
ˆ
ˆ
r$   c                 ó   — | j         j        S r   )r:  rK   r(   s    r"   ÚinfoszAdaptDFA.infos  s   € àŒzÔ%Ð%r$   N)r7   r8   r9   r:   r#   r$  r=  r<   r$   r"   r8  r8    sH   € € € € € ðð ðð ð ð ð&ð &ñ „Xð&ð &ð &r$   r8  ÚAdaptBlockInfo©Úinstsré  rP   Úactive_try_blockÚoutgoing_edgepushedc                 óª   — t          t          | j        ¦  «        | j        | j        |                      ¦   «         |                      ¦   «         ¬¦  «        S )Nr?  )r>  rÕ  rå  ré  rë  rî  r#  )rq   s    r"   rm   rm   #  sQ   € ÝÝ�EÔ&Ñ'Ô'ØÔ)ØÔ+Ø×5Ò5Ñ7Ô7Ø!×9Ò9Ñ;Ô;ðñ ô ð r$   c              #   ó¬   K  — | D ]N}t          |t          ¦  «        r|V — Œt          |t          t          f¦  «        rt	          |¦  «        D ]}|V — ŒŒOdS )z<Flatten an iterable of registers used in an instruction
    N)r-   ÚstrrÕ  r¾   rù  )r.  r.  rT   s      r"   rù  rù  -  sw   è è € ð ð ð ˆÝ�d�CÑ Ô ð 	ØˆJˆJˆJˆJÝ˜�u¥d˜mÑ,Ô,ð 	Ý'¨Ñ-Ô-ð ð �Ø����øðð r$   c                   óf   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	d„ Z
dS )	ÚAdaptCFAz<Adapt Flow to the old CFA class expected by Interpreter
    c                 ó¾  — || _         i | _        |j                             ¦   «         D ]\  }}t	          ||¦  «        | j        |<   Œ| j         j                             ¦   «         }|j        }|                     ¦   «         }t          ¦   «         }| j         	                    ¦   «         D ],}| 
                    |¦  «        r|                     |¦  «         Œ-||z
  | _        d S r   )r:  Ú_blocksrK   r·   ÚAdaptCFBlockr¤   Úbackboner­   ÚblocksrL  Úin_loopsrg   Ú	_backbone)r    r;  rÎ   Ú	blockinforK  r¦   Úinloopblocksr§   s           r"   r#   zAdaptCFA.__init__;  sÛ   € ØˆŒ
ØˆŒØ!%Ô!1×!7Ò!7Ñ!9Ô!9ð 	Cð 	CÑˆF�IÝ#/°	¸6Ñ#BÔ#BˆDŒL˜Ñ Ð Ø”:Ô%×.Ò.Ñ0Ô0ˆà”ˆà—>’>Ñ#Ô#ˆõ ‘u”uˆØ”×!Ò!Ñ#Ô#ð 	$ð 	$ˆAØ�~Š~˜aÑ Ô ð $Ø× Ò  Ñ#Ô#Ð#øØ! LÑ0ˆŒˆˆr$   c                 ó   — | j         j        S r   )r:  r¤   r(   s    r"   r¦   zAdaptCFA.graphN  s   € àŒzÔ!Ð!r$   c                 ó   — | j         S r   )rN  r(   s    r"   rK  zAdaptCFA.backboneR  s
   € àŒ~Ðr$   c                 ó   — | j         S r   )rI  r(   s    r"   rL  zAdaptCFA.blocksV  s
   € àŒ|Ðr$   c              #   óV   K  — t          | j        ¦  «        D ]}| j        |         V — Œd S r   )rl   rL  r  s     r"   ÚiterliveblockszAdaptCFA.iterliveblocksZ  s>   è è € Ý˜œÑ$Ô$ð 	!ð 	!ˆAØ”+˜a”.Ð Ð Ð Ð ð	!ð 	!r$   c                 óB   — | j         j                             ¦   «          d S r   )r:  r¤   rI   r(   s    r"   rI   zAdaptCFA.dump^  s   € ØŒ
Ô×ÒÑ!Ô!Ð!Ð!Ð!r$   N)r7   r8   r9   r:   r#   r$  r¦   rK  rL  rU  rI   r<   r$   r"   rG  rG  8  sœ   € € € € € ðð ð1ð 1ð 1ð& ð"ð "ñ „Xð"ð ðð ñ „Xðð ðð ñ „Xðð!ð !ð !ð"ð "ð "ð "ð "r$   rG  c                   ó   — e Zd Zd„ ZdS )rJ  c                 óZ   — || _         t          d„ |j        D ¦   «         ¦  «        | _        d S )Nc              3   ó    K  — | ]	\  }}|V — Œ
d S r   r<   )r  r®  r  s      r"   rÊ  z(AdaptCFBlock.__init__.<locals>.<genexpr>e  s&   è è € Ð8Ð8¡  1˜!Ð8Ð8Ð8Ð8Ð8Ð8r$   )rÎ   rÕ  r@  Úbody)r    rO  rÎ   s      r"   r#   zAdaptCFBlock.__init__c  s-   € ØˆŒÝÐ8Ð8¨	¬Ð8Ñ8Ô8Ñ8Ô8ˆŒ	ˆ	ˆ	r$   N)r7   r8   r9   r#   r<   r$   r"   rJ  rJ  b  s#   € € € € € ð9ð 9ð 9ð 9ð 9r$   rJ  ).r:   r  Úpprintr   ÚloggingÚcollectionsr   r   r   Ú	functoolsr   Únumba.core.utilsr   r	   r
   Únumba.core.controlflowr   r   Únumba.core.irr   Únumba.core.errorsr   Ú	getLoggerr7   rG   rœ   r�   r;   r…   Úobjectr   r>   rE   rÝ   rX   rÐ  r&  rW   rÙ   r  r8  r>  rm   rù  rG  rJ  r<   r$   r"   ú<module>re     sZ  ððð ð €
€
€
Ø Ð Ð Ð Ð Ð Ø €€€Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø $Ð $Ð $Ð $Ð $Ð $à KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .ð ˆ'Ô
˜HÑ
%Ô
%€àÐ Ø#€Ø�	ð ð ð ñ ô €ð ð3ð 3ð 3ð 3ð 3�ñ 3ô 3ñ „ð3ð@2ð 2ð 2ð 2ð 2�Fñ 2ô 2ð 2ðg,ð g,ð g,ð g,ð g,ˆ6ñ g,ô g,ð g,ðT$ð $ð $ðx+ð x+ð x+ð x+ð x+�&ñ x+ô x+ð x+ðv# ðt,ð t,ð t,ð t,ð t,ˆVñ t,ô t,ñ „ðt,ðn	.ð .ð .ð .ð .�ñ .ô .ð .ð> �ÒÐØ€E€EØ�ÒÐØ€E€Eà
Ð
˜iÑ
(Ô
(Ð(ð €z�&Ð@Ð@Ð@ÑAÔA€ð&ð &ð &ð &ð &ˆvñ &ô &ð &ð �Øðð ð ñô €ðð ð ðð ð ð'"ð '"ð '"ð '"ð '"ˆvñ '"ô '"ð '"ðT9ð 9ð 9ð 9ð 9�6ñ 9ô 9ð 9ð 9ð 9r$   