§
    ŠŠtjè¶  ã                  ór  — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	m
Z
 ddlmZmZmZ erddlmZmZ ddlmZ d	d
lmZmZmZ  eed¦  «        Z G d„ d¦  «        Z e¦   «         ZddlmZ e	 G d„ d¦  «        ¦   «         Ze	 G d„ d¦  «        ¦   «         Z G d„ d¦  «        Z edd„¦   «         Z!dd„Z"dS )aæ  
Bytecode debugger for Dynamo-optimized code.

This module provides a pdb-like debugger for stepping through Python bytecode
one instruction at a time, with the ability to inspect the value stack,
locals, and globals.

Usage:
    >>> # xdoctest: +SKIP
    >>> import torch
    >>>
    >>> @torch.compile
    >>> def my_fn(x):
    ...     return x + 1
    >>>
    >>> with torch._dynamo.bytecode_debugger.debug():
    ...     my_fn(torch.randn(3))  # Debugger activates on Dynamo-generated code

Programmatic breakpoints (for Dynamo developers):
    In PyCodegen, use create_breakpoint() to insert a debugger stop:

        from torch._dynamo.bytecode_transformation import create_breakpoint
        codegen.extend_output(create_breakpoint())
é    )ÚannotationsN)Úcontextmanager)Ú	dataclassÚfield)ÚAnyÚcastÚTYPE_CHECKING)ÚCallableÚ	Generator)ÚSelfé   )Úconvert_instructionÚInstructionÚinstruction_sizeÚ
monitoringc                  ó6   — e Zd ZU dZdZdZded<   dd„Zdd
„ZdS )Ú_BreakpointMarkerzÒSentinel constant that signals the debugger to break.

    Usage in PyCodegen:
        from torch._dynamo.bytecode_transformation import create_breakpoint
        codegen.extend_output(create_breakpoint())
    © Nz_BreakpointMarker | NoneÚ	_instanceÚreturnr   c                óx   — | j         €-t          dt                               | ¦  «        ¦  «        | _         | j         S )Nr   )r   r   ÚobjectÚ__new__)Úclss    ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/bytecode_debugger.pyr   z_BreakpointMarker.__new__<   s0   € ØŒ=Ð Ý Ð!4µf·n²nÀSÑ6IÔ6IÑJÔJˆCŒMØŒ}Ðó    Ústrc                ó   — dS )Nz<BREAKPOINT>r   ©Úselfs    r   Ú__repr__z_BreakpointMarker.__repr__A   s   € Øˆ~r   ©r   r   )r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   Ú__annotations__r   r!   r   r   r   r   r   1   s`   € € € € € € ðð ð €IØ*.€IÐ.Ð.Ð.Ñ.ðð ð ð ð
ð ð ð ð ð r   r   )ÚNULL_STACK_VALUEc                  ór   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   d
ed<    ee¬¦  «        Zded<   dS )ÚCodeInfozFPer-code-object data shared across all frames executing the same code.útypes.CodeTypeÚcodeúlist[Instruction]Úinstructionsúdict[int, Instruction]Úoffset_to_instúdict[int, int]Úoffset_to_indexÚintÚindex_widthÚoffset_width©Údefault_factoryúset[int]ÚbreakpointsN)r#   r$   r%   r&   r(   r   Úsetr:   r   r   r   r+   r+   M   s~   € € € € € € àPÐPàÐÐÑØ#Ð#Ð#Ñ#Ø*Ð*Ð*Ñ*Ø#Ð#Ð#Ñ#ØÐÐÑØÐÐÑØ!˜E°#Ð6Ñ6Ô6€KÐ6Ð6Ð6Ñ6Ð6Ð6r   r+   c                  óT  — e Zd ZU dZded<   ded<   dZded<   d	Zded
<   dZded<   dZded<   d	Z	ded<    e
e¬¦  «        Zded<   dZded<   dZded<   ed'd„¦   «         Zed(d„¦   «         Zed)d „¦   «         Zed*d"„¦   «         Zed+d#„¦   «         Zed+d$„¦   «         Zed,d&„¦   «         ZdS )-ÚDebuggerStatezPer-frame debugging state.r+   Ú	code_infoútypes.FrameTypeÚframeéÿÿÿÿr4   Úcurrent_offsetr   Úcurrent_stack_depthFÚboolÚfirst_instruction_seenTÚ	step_modeÚ
step_countr7   údict[str, Any]Úuser_localsÚsr   Úlast_commandNz
int | NoneÚ
list_indexr   r,   c                ó   — | j         j        S ©N)r>   r-   r   s    r   r-   zDebuggerState.codem   s   € àŒ~Ô"Ð"r   r.   c                ó   — | j         j        S rN   )r>   r/   r   s    r   r/   zDebuggerState.instructionsq   ó   € àŒ~Ô*Ð*r   r0   c                ó   — | j         j        S rN   )r>   r1   r   s    r   r1   zDebuggerState.offset_to_instu   s   € àŒ~Ô,Ð,r   r2   c                ó   — | j         j        S rN   )r>   r3   r   s    r   r3   zDebuggerState.offset_to_indexy   s   € àŒ~Ô-Ð-r   c                ó   — | j         j        S rN   )r>   r5   r   s    r   r5   zDebuggerState.index_width}   ó   € àŒ~Ô)Ð)r   c                ó   — | j         j        S rN   )r>   r6   r   s    r   r6   zDebuggerState.offset_width�   rP   r   r9   c                ó   — | j         j        S rN   )r>   r:   r   s    r   r:   zDebuggerState.breakpoints…   rT   r   )r   r,   )r   r.   )r   r0   )r   r2   )r   r4   )r   r9   )r#   r$   r%   r&   r(   rB   rC   rE   rF   rG   r   ÚdictrI   rK   rL   Úpropertyr-   r/   r1   r3   r5   r6   r:   r   r   r   r=   r=   Z   sÇ  € € € € € € à$Ð$àÐÐÑØÐÐÑØ€NÐÐÐÑØ ÐÐ Ð Ð Ñ Ø#(ÐÐ(Ð(Ð(Ñ(Ø€IÐÐÐÑØ€JÐÐÐÑØ"' %Øð#ñ #ô #€Kð ð ð ñ ð €LÐÐÐÑàð ð ð ð ñ ð ð#ð #ð #ñ „Xð#ð ð+ð +ð +ñ „Xð+ð ð-ð -ð -ñ „Xð-ð ð.ð .ð .ñ „Xð.ð ð*ð *ð *ñ „Xð*ð ð+ð +ð +ñ „Xð+ð ð*ð *ð *ñ „Xð*ð *ð *r   r=   c                  ó0  — e Zd ZdZdOd„ZdPdQd	„ZdRd„ZedSd„¦   «         ZdTd„Z	dUd„Z
dVd„ZdWd„Z	 dXdYd!„ZdZd"„Z	 d[d\d&„Zd]d(„ZdXd^d)„Zd_d*„ZdPd`d-„Zd_d.„ZdOd/„Z	 dXdad1„Z	 dXdbd3„Zd_d4„Z	 dPdcd5„Z	 dPddd8„Zded;„Zdfd<„Zdgd>„Zdhd?„Zdid@„ZdjdE„Z dkdG„Z!dldN„Z"dS )mÚ_DebugContextz:Internal debug context that manages the debugging session.r   ÚNonec                ó  — i | _         i | _        d| _        t          ¦   «         | _        d | _        d | _        d | _        d| _        d | _	        d| _
        d| _        d| _        d| _        t          rt          j        j        | _        d S d S )NFr   T)Ú
_code_infoÚ_frame_statesÚ_activer;   Ú_tracked_codesÚ
_old_traceÚ_prev_callbackÚ_return_from_frameÚ_stop_after_returnÚ_next_in_frameÚ_next_countÚ_verboseÚ_stop_at_new_codeÚ	_quittingÚ_HAS_SYS_MONITORINGÚsysr   ÚDEBUGGER_IDÚ_tool_idr   s    r   Ú__init__z_DebugContext.__init__�   s‹   € Ø:<ˆŒØCEˆÔØˆŒÝ36±5´5ˆÔØ59ˆŒØ9=ˆÔØ:>ˆÔØ(-ˆÔØ6:ˆÔØ !ˆÔØ#ˆŒØ'+ˆÔØ$ˆŒÝð 	7ÝœNÔ6ˆDŒMˆMˆMð	7ð 	7r   Nr-   útypes.CodeType | Noner.   c                óÊ   — | j         sg S |€4t          t          | j                              ¦   «         ¦  «        ¦  «        }n| j                              |¦  «        }|€g S |j        S )aD  Get the list of instructions for a tracked code object.

        Args:
            code: The code object to get instructions for. If None, returns
                  instructions from the most recently tracked code object.

        Returns:
            List of instructions, or empty list if the code is not tracked.
        )r]   ÚnextÚreversedÚvaluesÚgetr/   )r    r-   Úinfos      r   Úget_instructionsz_DebugContext.get_instructionsž   se   € ð Œð 	ØˆIØˆ<Ý� ¤×!7Ò!7Ñ!9Ô!9Ñ:Ô:Ñ;Ô;ˆDˆDà”?×&Ò& tÑ,Ô,ˆDØˆ|Ø�	ØÔ Ð r   úlist[types.CodeType]c                óN   — t          | j                             ¦   «         ¦  «        S )z<Get all code objects that have been tracked by the debugger.)Úlistr]   Úkeysr   s    r   Úget_tracked_codesz_DebugContext.get_tracked_codes²   s   € å�D”O×(Ò(Ñ*Ô*Ñ+Ô+Ð+r   Úinstr   rD   c                ó4   — | j         dk    o| j        t          u S )NÚ
LOAD_CONST)ÚopnameÚargvalÚBREAKPOINT_MARKER)r|   s    r   Úis_programmatic_breakpointz(_DebugContext.is_programmatic_breakpoint¶   s   € àŒ{˜lÒ*ÐO¨t¬{Õ>OÐ/OÐOr   r,   r+   c                ó–  ‡ — |‰ j         v�r2d„ t          j        |¦  «        D ¦   «         }i }i }t          |¦  «        D ]F\  }}|j        �:t          |¦  «        }t          |j        |j        |z   d¦  «        D ]}|||<   |||<   ŒŒG|rt          |¦  «        dz
  nd}	t          d„ |D ¦   «         d¬¦  «        }
ˆ fd„t          |¦  «        D ¦   «         }t          ||||t          dt          t          |	¦  «        ¦  «        ¦  «        t          dt          t          |
¦  «        ¦  «        ¦  «        |¬	¦  «        ‰ j         |<   ‰ j         |         S )
z)Get or create CodeInfo for a code object.c                ó,   — g | ]}t          |¦  «        ‘ŒS r   )r   )Ú.0Úis     r   ú
<listcomp>z:_DebugContext._get_or_create_code_info.<locals>.<listcomp>À   s!   € ÐWÐWÐW°qÕ/°Ñ2Ô2ÐWÐWÐWr   Né   r   r   c              3  ó2   K  — | ]}|j         ®	|j         V — Œd S rN   )Úoffset)r…   r|   s     r   ú	<genexpr>z9_DebugContext._get_or_create_code_info.<locals>.<genexpr>Ò   s+   è è € ÐQÐQ ¸¼Ð9P�”Ð9PÐ9PÐ9PÐ9PÐQÐQr   )Údefaultc                óD   •— h | ]\  }}‰                      |¦  «        ¯|’ŒS r   )r‚   )r…   r†   r|   r    s      €r   ú	<setcomp>z9_DebugContext._get_or_create_code_info.<locals>.<setcomp>×   sA   ø€ ð 2ð 2ð 2á�A�tØ×2Ò2°4Ñ8Ô8ð2Øð2ð 2ð 2r   )r-   r/   r1   r3   r5   r6   r:   )r]   Údisrv   Ú	enumeraterŠ   r   ÚrangeÚlenÚmaxr+   r   )r    r-   r/   r1   r3   r†   r|   Ú	inst_sizeÚoffÚ	max_indexÚ
max_offsetÚprogrammatic_breakpointss   `           r   Ú_get_or_create_code_infoz&_DebugContext._get_or_create_code_infoº   s�  ø€ à�t”Ð&Ñ&ð XÐW½CÔ<PÐQUÑ<VÔ<VÐWÑWÔWˆLð 68ˆNØ.0ˆOÝ$ \Ñ2Ô2ð 1ð 1‘��4Ø”;Ð*Ý 0°Ñ 6Ô 6�IÝ$ T¤[°$´+À	Ñ2IÈ1ÑMÔMð 1ð 1˜Ø.2˜ sÑ+Ø/0˜¨Ñ,Ð,øà1=ÐD�˜LÑ)Ô)¨AÑ-Ð-À1ˆIÝØQÐQ¨ÐQÑQÔQØðñ ô ˆJð2ð 2ð 2ð 2å(¨Ñ6Ô6ð2ñ 2ô 2Ð$õ %-ØØ)Ø-Ø /Ý ¥3¥s¨9¡~¤~Ñ#6Ô#6Ñ7Ô7Ý  ¥C­¨J©¬Ñ$8Ô$8Ñ9Ô9Ø4ð%ñ %ô %ˆDŒO˜DÑ!ð Œ˜tÔ$Ð$r   r@   r?   r=   c                óŠ   — || j         vr.|                      |¦  «        }t          ||¬¦  «        | j         |<   | j         |         S )z&Get or create per-frame DebuggerState.)r>   r@   )r^   r™   r=   )r    r-   r@   r>   s       r   Ú_get_or_create_frame_statez(_DebugContext._get_or_create_frame_stateè   sN   € ð ˜Ô*Ð*Ð*Ø×5Ò5°dÑ;Ô;ˆIÝ(5À	ÐQVÐ(WÑ(WÔ(WˆDÔ˜uÑ%ØÔ! %Ô(Ð(r   útypes.FrameType | Nonec                óX   — t          j        ¦   «         }|�|j        |u r|S |j        }|­dS )z:Walk the stack to find the frame executing the given code.N)rk   Ú	_getframeÚf_codeÚf_back)r    r-   Úfs      r   Ú_find_frame_for_codez"_DebugContext._find_frame_for_codeñ   s9   € å$'¤M¡O¤OˆØˆmØŒx˜4ÐÐØ�Ø”ˆAð ˆmð ˆtr   Ústateúlist[DebuggerState]c                óì   — g }|j         j        }|�:| j                             |¦  «        }|�|                     |¦  «         |j        }|­:|                     ¦   «          |                     |¦  «         |S )a!  Build list of tracked ancestor frames, outermost-first.

        Walks f_back from the current execution frame to find all ancestor
        frames whose code is tracked by the debugger. Returns the corresponding
        DebuggerState objects with the execution state (state) last.
        )r@   r    r^   rt   ÚappendÚreverse)r    r£   Ú	ancestorsr¡   Úancestor_states        r   Ú_build_tracked_frame_stackz(_DebugContext._build_tracked_frame_stackú   s„   € ð *,ˆ	Ø$)¤KÔ$6ˆØˆmØ!Ô/×3Ò3°AÑ6Ô6ˆNØÐ)Ø× Ò  Ñ0Ô0Ð0Ø”ˆAð	 ˆmð
 	×ÒÑÔÐØ×Ò˜ÑÔÐØÐr   TrŠ   r4   Úmark_currentr   c           	     óp  — |j                              |¦  «        }|j        |j        }}|€
d||› d�›d�S |j                             |d¦  «        }|r||j        k    rdnd}|j                             |d¦  «        |j        v rdnd	}	|j        �
d	|j        › �nd
}
|› |	› d	||› d�›d||› d�›d|j	        › |
› �	S )z"Format an instruction for display.Nz    [Údz]: <unknown>rA   z>>>z   Ú*ú Ú ú [z]: )
r1   rt   r5   r6   r3   rB   r:   Úargr€   r   )r    r£   rŠ   r«   r|   ÚiwÚowÚindexÚmarkerÚ	bp_markerÚarg_strs              r   Ú_format_instructionz!_DebugContext._format_instruction  s  € ð Ô#×'Ò'¨Ñ/Ô/ˆØÔ" EÔ$6ˆBˆØˆ<Ø5˜6 2Ð5Ð5Ð5Ð5Ð5Ð5Ð5àÔ%×)Ò)¨&°"Ñ5Ô5ˆØ&ÐT¨6°UÔ5IÒ+IÐ+I��ÈuˆàÔ(×,Ò,¨V°RÑ8Ô8¸EÔ<MÐMÐMˆCˆCÐSVð 	ð (,¤xÐ';Ð#�d”kÐ#Ð#Ð#ÀˆØÐ\˜)Ð\Ð\ e¨RÐ\Ð\Ð\Ð\Ð\°V¸RÐ\Ð\Ð\Ð\Ð\ÀdÄkÐ\ÐSZÐ\Ð\Ð\r   c                ó@   — |j         |j        }}ddd|› �›ddd|› �›d�S )z0Format the header line for instruction listings.z     ú#ú>r±   rŠ   ú])r5   r6   )r    r£   r³   r´   s       r   Ú_format_headerz_DebugContext._format_header  s@   € àÔ" EÔ$6ˆBˆØ5�sÐ5˜RÐ5Ð5Ð5Ð5 HÐ5¨rÐ5Ð5Ð5Ð5Ð5Ð5r   é   ÚbeforeÚafterc                óð  — |j                              |j        d¦  «        }t          d||z
  ¦  «        }t	          t          |j        ¦  «        ||z   dz   ¦  «        }t          d|› d|j        › d�¦  «         t          |                      |¦  «        ¦  «         t          ||¦  «        D ]>}|j        |         }|j
        �(t          |                      ||j
        ¦  «        ¦  «         Œ?t          ¦   «          dS )z/Print instructions around the current position.r   r   z
Instruction ú at offset ú:N)r3   rt   rB   r“   Úminr’   r/   Úprintr¾   r‘   rŠ   r¹   )	r    r£   rÀ   rÁ   Úcurrent_idxÚstartÚendr†   r|   s	            r   Ú_print_contextz_DebugContext._print_context"  sö   € ð Ô+×/Ò/°Ô0DÀaÑHÔHˆÝ�A�{ VÑ+Ñ,Ô,ˆÝ•#�eÔ(Ñ)Ô)¨;¸Ñ+>ÀÑ+BÑCÔCˆåÐN˜{ÐNÐN°uÔ7KÐNÐNÐNÑOÔOÐOÝˆd×!Ò! %Ñ(Ô(Ñ)Ô)Ð)Ý�u˜cÑ"Ô"ð 	Dð 	DˆAØÔ% aÔ(ˆDØŒ{Ð&Ý�d×.Ò.¨u°d´kÑBÔBÑCÔCÐCøÝ‰Œˆˆˆr   Úis_current_framec                ó  — |j         }|s}|j        dk    rr|j                             |j        ¦  «        }|�Q	 t	          j        |j        |j        ¦  «        }|dk     rt          d||z   ¦  «        }n# t          t          f$ r Y nw xY w|S )aq  Compute a safe stack depth for reading frame values.

        For parent frames suspended at a CALL instruction, CPython has already
        popped (and DECREF'd) the call arguments.  The tracked depth still
        includes those consumed entries, so reading them would dereference
        dangling pointers.  Adjust by the current instruction's stack_effect.
        r   )rC   rB   r1   rt   r�   Ústack_effectÚopcoder²   r“   Ú
ValueErrorÚ	TypeError)r    r£   rË   Údepthr|   Úeffects         r   Ú_safe_stack_depthz_DebugContext._safe_stack_depth2  s¢   € ð Ô)ˆØð 	 EÔ$8¸AÒ$=Ð$=ØÔ'×+Ò+¨EÔ,@ÑAÔAˆDØÐðÝ Ô-¨d¬k¸4¼8ÑDÔD�FØ ’z�zÝ # A u¨v¡~Ñ 6Ô 6˜øøÝ"¥IÐ.ð ð ð Ø�Dðøøøàˆs   ·8A0 Á0BÂBc           	     ó°  — ddl m} |                      ||¦  «        }	  ||j        |¦  «        }n+# t          $ r}t          d|› d�¦  «         Y d}~dS d}~ww xY wt          d¦  «         |st          d¦  «         nLt          |¦  «        D ]<\  }}|t          u rd}	nd	t          |¦  «        d
›�}	t          d|› d|	› d|›�¦  «         Œ=t          ¦   «          dS )zPrint the current value stack.r   ©Ú!_get_frame_value_stack_with_depthz
Stack: (error reading stack: ú)Nz
Stack (TOS at end):z	  (empty)Ú0x0Ú0xÚxz  [ú] r¯   )	Útorch._C._dynamo.eval_framerÖ   rÓ   r@   Ú	ExceptionrÆ   r�   r)   Úid)
r    r£   rË   rÖ   rÑ   ÚstackÚer†   ÚvalueÚaddrs
             r   Ú_print_stackz_DebugContext._print_stackF  s0  € àQÐQÐQÐQÐQÐQà×&Ò& uÐ.>Ñ?Ô?ˆð	Ø5Ð5°e´kÀ5ÑIÔIˆEˆEøÝð 	ð 	ð 	ÝÐ8°AÐ8Ð8Ð8Ñ9Ô9Ð9ØˆFˆFˆFˆFˆFøøøøð	øøøõ 	Ð%Ñ&Ô&Ð&Øð 	3Ý�+ÑÔÐÐå% eÑ,Ô,ð 3ð 3‘��5ØÕ,Ð,Ð,Ø �D�Dà-¥ 5¡	¤	Ð-Ð-Ð-�DÝÐ1˜AÐ1Ð1 Ð1Ð1¨Ð1Ð1Ñ2Ô2Ð2Ð2Ý‰Œˆˆˆs   ž0 °
AºAÁAc                óÚ   — t          d¦  «         |j        j        }|st          d¦  «         n/|                     ¦   «         D ]\  }}t          d|› d|›�¦  «         Œt          ¦   «          dS )zPrint local variables.z
Locals:ú  (none)ú  ú = N)rÆ   r@   Úf_localsÚitems)r    r£   Úlocals_dictÚnamerá   s        r   Ú_print_localsz_DebugContext._print_locals\  s�   € åˆkÑÔÐØ”kÔ*ˆØð 	/Ý�*ÑÔÐÐà*×0Ò0Ñ2Ô2ð /ð /‘��eÝÐ-˜4Ð-Ð- EÐ-Ð-Ñ.Ô.Ð.Ð.Ý‰Œˆˆˆr   Úpatternú
str | Nonec                óL  — t          d¦  «         |j        j                             ¦   «         D ]g\  }}|r||vrŒ|                     d¦  «        r|                     d¦  «        rŒ7t          |t          j        ¦  «        rŒRt          d|› d|›�¦  «         Œht          ¦   «          dS )zPrint global variables.z	
Globals:Ú__ræ   rç   N)	rÆ   r@   Ú	f_globalsré   Ú
startswithÚendswithÚ
isinstanceÚtypesÚ
ModuleType)r    r£   rí   rë   rá   s        r   Ú_print_globalsz_DebugContext._print_globalsg  sº   € åˆlÑÔÐØ œ;Ô0×6Ò6Ñ8Ô8ð 	+ð 	+‰KˆD�%Øð ˜7¨$Ð.Ð.ØØ�Š˜tÑ$Ô$ð ¨¯ª°tÑ)<Ô)<ð ØÝ˜%¥Ô!1Ñ2Ô2ð ØÝÐ)�tÐ)Ð) Ð)Ð)Ñ*Ô*Ð*Ð*Ý‰Œˆˆˆr   c                ó&  — t          dt          |j        ¦  «        › d�¦  «         t          |                      |¦  «        ¦  «         |j        D ]3}|j        �*t          |                      ||j        d¬¦  «        ¦  «         Œ4t          ¦   «          dS )zPrint the full disassembly.z
Disassembly (z instructions):NF©r«   )rÆ   r’   r/   r¾   rŠ   r¹   )r    r£   r|   s      r   Ú_disassemblez_DebugContext._disassemblet  s“   € åÐH¥ EÔ$6Ñ 7Ô 7ÐHÐHÐHÑIÔIÐIÝˆd×!Ò! %Ñ(Ô(Ñ)Ô)Ð)ØÔ&ð 	Xð 	XˆDØŒ{Ð&Ý�d×.Ò.¨u°d´kÐPUÐ.ÑVÔVÑWÔWÐWøÝ‰Œˆˆˆr   c                ó  — t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d	¦  «         t          d
¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         t          ¦   «          t          d¦  «         t          d¦  «         t          ¦   «          dS )zPrint help message.z

Commands:zD  s [n]       - Step n instructions (default 1), stepping into callszD  n [n]       - Step n instructions (default 1), stepping over callsz6  c, cont     - Continue until breakpoint or exceptionzD  r           - Continue until current function's return instructionzM  v, verbose  - Toggle verbose mode (print each instruction before executing)zG                Use with 'c' to find segfaults - last printed = culpritzE  u [count]   - Move up the call stack (toward caller) for inspectionz8  d [count]   - Move down the call stack (toward callee)z-  bt, w       - Print tracked frame backtracez   p <expr>    - Print expressionz3  l [first[, last]]  - List instructions (like pdb)z/  l .         - List around current instructionz(  ll          - Disassemble all bytecodez!  stack       - Print value stackz%  locals      - Print local variablesz&  globals     - Print global variablesz>  b <n>       - Set breakpoint at instruction n (see # column)z   b           - List breakpointsz1  cl <n>      - Clear breakpoint at instruction nz  q, quit     - Exit debuggerz5  <expr>      - Evaluate Python expression (like pdb)z?Special variables: __stack__ (list of stack values, TOS at end)zENote: Debugger stops on exceptions and shows the failing instruction.N)rÆ   r   s    r   Ú_print_helpz_DebugContext._print_help}  s‡  € åˆmÑÔÐÝÐTÑUÔUÐUÝÐTÑUÔUÐUÝÐFÑGÔGÐGÝÐTÑUÔUÐUÝØ[ñ	
ô 	
ð 	
õ 	ÐWÑXÔXÐXÝÐUÑVÔVÐVÝÐHÑIÔIÐIÝÐ=Ñ>Ô>Ð>ÝÐ0Ñ1Ô1Ð1ÝÐCÑDÔDÐDÝÐ?Ñ@Ô@Ð@ÝÐ8Ñ9Ô9Ð9ÝÐ1Ñ2Ô2Ð2ÝÐ5Ñ6Ô6Ð6ÝÐ6Ñ7Ô7Ð7ÝÐNÑOÔOÐOÝÐ0Ñ1Ô1Ð1ÝÐAÑBÔBÐBÝÐ-Ñ.Ô.Ð.ÝÐEÑFÔFÐFÝ‰ŒˆÝÐOÑPÔPÐPÝÐUÑVÔVÐVÝ‰Œˆˆˆr   ú	list[Any]c                ó‚   — ddl m} |                      ||¦  «        }	  ||j        |¦  «        S # t          $ r g cY S w xY w)z7Get the current stack for use in expression evaluation.r   rÕ   )rÜ   rÖ   rÓ   r@   rÝ   )r    r£   rË   rÖ   rÑ   s        r   Ú_get_stack_for_evalz!_DebugContext._get_stack_for_evalœ  sk   € ð 	RÐQÐQÐQÐQÐQà×&Ò& uÐ.>Ñ?Ô?ˆð	Ø4Ð4°U´[À%ÑHÔHÐHøÝð 	ð 	ð 	ØˆIˆIˆIð	øøøs   ž/ ¯>½>rH   c                óž   — t          |j        j        ¦  «        }|                     |j        ¦  «         |                      ||¦  «        |d<   |S )zNBuild locals dict for expression evaluation, including user-defined variables.Ú	__stack__)rW   r@   rè   ÚupdaterI   rÿ   )r    r£   rË   Úeval_localss       r   Ú_build_eval_localsz _DebugContext._build_eval_locals¨  sN   € õ ˜5œ;Ô/Ñ0Ô0ˆØ×Ò˜5Ô,Ñ-Ô-Ð-Ø#'×#;Ò#;¸EÐCSÑ#TÔ#Tˆ�KÑ ØÐr   c                ó8  — |                       |¦  «        }t          |¦  «        dz
  }||         }|                      |¦  «         	 	 t          d¦  «                             ¦   «         }n3# t
          t          f$ r t          d¦  «         d| _        t          d‚w xY w|s|j	        }n||_	        | 
                    d¬¦  «        }|d                              ¦   «         }t          |¦  «        dk    r|d         nd}|d	v rWd|_        d| _        |r>	 t          |¦  «        }	|	dz
  |_        n*# t           $ r t          d
|› �¦  «         Y �Œw xY wd|_        dS |dv rc|j        | _        |r>	 t          |¦  «        }	|	dz
  | _        n*# t           $ r t          d
|› �¦  «         Y �Œ\w xY wd| _        d|_        d| _        dS |dv rd|_        d| _        d| _        dS |dv r|j        | _        d|_        d| _        dS |dv r‘d}	|r4	 t          |¦  «        }	n## t           $ r t          d
|› �¦  «         Y �Œêw xY w||	z
  }
|
dk     rd}
t          d¦  «         |
}||         }t          d|j        j        › �¦  «         |                      |¦  «         �nŽ|dv r£d}	|r4	 t          |¦  «        }	n## t           $ r t          d
|› �¦  «         Y �Œw xY wt          |¦  «        dz
  }||	z   }
|
|k    r|}
t          d¦  «         |
}||         }t          d|j        j        › �¦  «         |                      |¦  «         �nç|dv r”t1          |¦  «        D ]‚\  }}||k    rdnd}|j                             |j        d¦  «        }|j                             |j        ¦  «        }|r|j        nd}t          d|› d|› d|j        j        › d|› d|› d�¦  «         Œƒ�nO|dv r-| j         | _        | j        rd nd!}t          d"|› d#�¦  «         �n|d$v �r!d%}d}d}|d#k    rd|_        nÝ|rÛd&|v rž| 
                    d&d¦  «        }	 t          |d                              ¦   «         ¦  «        }t          |d                              ¦   «         ¦  «        }||k     r|}||z   }n|}|dz   }n\# t           $ r t          d'|› �¦  «         Y �Œpw xY w	 t          |¦  «        }||z   }n## t           $ r t          d(|› �¦  «         Y �Œ©w xY w|€J|j        €7|j                             |j        d¦  «        }tA          d||d)z  z
  ¦  «        }n|j        }||z   }|€tC          d*¦  «        ‚tE          t          |j#        ¦  «        |¦  «        }|t          |j#        ¦  «        k    rt          d+¦  «         �n€t          |  $                    |¦  «        ¦  «         tK          ||¦  «        D ]>}|j#        |         }|j&        �(t          |  '                    ||j&        ¦  «        ¦  «         Œ?t          ¦   «          ||_        �nø|d,k    r|  (                    |¦  «         �nÛ|d-k    r|  )                    |¦  «         �n¾|d.k    r|  *                    ||r|nd¦  «         �nœ|d/k    r#||d         u }|  +                    ||¬0¦  «         �ns|d1k    �rC|r›	 t          |¦  «        }t          |j#        ¦  «        }|dk     s||k    rt          d2|› d3|dz
  › d�¦  «         n,|j,         -                    |¦  «         t          d4|› �¦  «         �nò# t           $ r t          d2|› �¦  «         Y �nÓw xY wt          d5¦  «         |j,        st          d6¦  «         npt]          |j,        ¦  «        D ][}|t          |j#        ¦  «        k     rA|j#        |         }|j&        �-t          d|  '                    ||j&        d¬7¦  «        › �¦  «         Œ\t          ¦   «          �n)|d8k    r»|r·	 t          |¦  «        }t          |j#        ¦  «        }|dk     s||k    rt          d2|› d3|dz
  › d�¦  «         nH||j,        v r-|j,         /                    |¦  «         t          d9|› �¦  «         nt          d:|› �¦  «         �n�# t           $ r t          d2|› �¦  «         Y �nnw xY w�nh|d;k    r•|r‚	 ||d         u }|j        j0        }|  1                    ||¬0¦  «        }te          |||¦  «        }t          |› d<|›�¦  «         �n# tf          $ r } t          d=|› d>| › �¦  «         Y d} ~ �næd} ~ ww xY wt          d?¦  «         �nÍ|d@v r|  4                    ¦   «          �n³|dAv rt          dB¦  «         d| _        t          ‚||d         u }|j        j0        }|  1                    ||¬0¦  «        }	 te          |||¦  «        }|�t          tk          |¦  «        ¦  «         �n3# tl          $ rí 	 to          | 8                    ¦   «         ¦  «        }!dC„ | 9                    ¦   «         D ¦   «         }"tu          |||¦  «         |D ]W}#|#|!v}$|#|j;        v }%ty          ||#         ¦  «        |"                     |#¦  «        k    }&|$s|%s|&r|#dDk    r||#         |j;        |#<   ŒXn># tf          $ r1} t          dEt{          | ¦  «        j>        › dF| › �¦  «         Y d} ~ nd} ~ ww xY wY n=tf          $ r1} t          dEt{          | ¦  «        j>        › dF| › �¦  «         Y d} ~ nd} ~ ww xY w�
ŒÖ)Gz$Interactive prompt during debugging.r   Tz(bdb) z
Exiting debugger.N)Úmaxsplitr   r°   )rJ   ÚstepzInvalid count: )Únrq   F)ÚcÚcontÚcontinue)Úrr   )ÚuÚupzOldest tracked framez> )r­   ÚdownzNewest tracked frame)ÚbtÚwÚwherer¼   r¯   rA   ú	<unknown>ræ   r±   rÛ   z instruction z (r×   )ÚvÚverboseÚenabledÚdisabledzVerbose mode ú.)Úlry   é   ú,zInvalid range: zInvalid argument: rˆ   z+end must be set before listing instructionsz(End of bytecode)ÚllÚlocalsÚglobalsrß   )rË   ÚbzInvalid instruction number: z (must be 0-zBreakpoint set at instruction z
Breakpoints:rå   rù   Úclz"Breakpoint cleared at instruction zNo breakpoint at instruction Úprç   zError evaluating 'z': zUsage: p <expression>)ÚhÚhelpú?)ÚqÚquitÚexitzExiting debugger.c                ó4   — i | ]\  }}|t          |¦  «        “ŒS r   )rÞ   )r…   Úkr  s      r   ú
<dictcomp>z5_DebugContext._interactive_prompt.<locals>.<dictcomp>Ì  s$   € Ð%OÐ%OÐ%O±4°1°a a­¨A©¬Ð%OÐ%OÐ%Or   r  z*** ú: )?rª   r’   rÊ   ÚinputÚstripÚEOFErrorÚKeyboardInterruptrÆ   ri   rK   ÚsplitÚlowerrF   rh   r4   rG   rÏ   r@   re   rf   rd   rc   r-   Úco_namer�   r3   rt   rB   r1   r   rg   rL   r“   ÚAssertionErrorrÅ   r/   r¾   r‘   rŠ   r¹   rú   rì   r÷   rã   r:   ÚaddÚsortedÚdiscardrñ   r  ÚevalrÝ   rü   ÚreprÚSyntaxErrorr;   rz   ré   ÚexecrI   rÞ   Útyper#   )'r    r£   Úframe_stackÚ
view_indexÚ
view_stateÚcmdÚpartsÚactionr²   ÚcountÚ	new_indexr–   r†   Úfsr¶   Úidxr|   Úinst_strÚstatusÚ	num_linesrÈ   rÉ   ÚfirstÚsecondrÇ   Ú
is_currentrµ   Únum_instructionsÚbp_indexÚframe_globalsr  Úresultrà   Úkeys_beforeÚ
ids_beforeÚkeyÚis_newÚis_user_varÚis_modifieds'                                          r   Ú_interactive_promptz!_DebugContext._interactive_prompt±  sc  € à×5Ò5°eÑ<Ô<ˆÝ˜Ñ%Ô%¨Ñ)ˆ
Ø  Ô,ˆ
à×Ò˜JÑ'Ô'Ð'ða	:ð2Ý˜H‘o”o×+Ò+Ñ-Ô-��øÝÕ/Ð0ð 2ð 2ð 2ÝÐ+Ñ,Ô,Ð,Ø!%�”Ý'¨TÐ1ð2øøøð
 ð )ØÔ(��à%(�Ô"à—I’I q�IÑ)Ô)ˆEØ˜1”X—^’^Ñ%Ô%ˆFÝ! %™jœj¨1šn˜n�%˜”(�(°"ˆCà˜Ð&Ð&Ø"&�”Ø)-�Ô&àð 
)ð!Ý # C¡¤˜à! A™Ið Ô(Ð(øõ &ð !ð !ð !ÝÐ5°Ð5Ð5Ñ6Ô6Ð6Ø ™ð!øøøð ()�EÔ$Ø�à˜=Ð(Ð(Ø&0Ô&6�Ô#Øð )ð!Ý # C¡¤˜Ø+0°1©9˜Ô(Ð(øÝ%ð !ð !ð !ÝÐ5°Ð5Ð5Ñ6Ô6Ð6Ø ™ð!øøøð ()�DÔ$Ø"'�”Ø).�Ô&Ø�àÐ4Ð4Ð4Ø"'�”Ø).�Ô&Ø*/�Ô'Ø�à˜?Ð*Ð*Ø*/¬+�Ô'Ø"'�”Ø).�Ô&Ø�à˜;Ð&Ð&Ø�Øð !ð!Ý # C¡¤˜˜øÝ%ð !ð !ð !ÝÐ5°Ð5Ð5Ñ6Ô6Ð6Ø ™ð!øøøð '¨Ñ.�	Ø˜q’=�=Ø !�IÝÐ0Ñ1Ô1Ð1Ø&�
Ø(¨Ô4�
ÝÐ4˜:œ?Ô2Ð4Ð4Ñ5Ô5Ð5Ø×#Ò# JÑ/Ô/Ð/Ñ/à˜=Ð(Ð(Ø�Øð !ð!Ý # C¡¤˜˜øÝ%ð !ð !ð !ÝÐ5°Ð5Ð5Ñ6Ô6Ð6Ø ™ð!øøøõ   Ñ,Ô,¨qÑ0�	Ø&¨Ñ.�	Ø˜yÒ(Ð(Ø )�IÝÐ0Ñ1Ô1Ð1Ø&�
Ø(¨Ô4�
ÝÐ4˜:œ?Ô2Ð4Ð4Ñ5Ô5Ð5Ø×#Ò# JÑ/Ô/Ð/Ñ/àÐ/Ð/Ð/Ý& {Ñ3Ô3ð ð ‘E�A�rØ$%¨¢O O˜S˜S¸�FØÔ,×0Ò0°Ô1BÀBÑGÔG�CØÔ,×0Ò0°Ô1BÑCÔC�DØ.2ÐC˜tœ{˜{¸�HÝØ\˜VÐ\Ð\ qÐ\Ð\¨B¬G¬OÐ\Ð\È#Ð\Ð\ÐQYÐ\Ð\Ð\ñô ð ð ñð Ð+Ð+Ð+Ø$(¤MÐ 1�”Ø&*¤mÐC˜˜¸�ÝÐ/ fÐ/Ð/Ð/Ñ0Ô0Ð0Ñ0à˜=Ð(Ñ(ð �	Ø$(�Ø"&�à˜#’:�:à,0�JÔ)Ð)Øð %à˜c�z�zØ #§	¢	¨#¨qÑ 1Ô 1˜ð%Ý$'¨¨a¬¯ªÑ(8Ô(8Ñ$9Ô$9˜EÝ%(¨¨q¬¯ªÑ)9Ô)9Ñ%:Ô%:˜FØ%¨š~˜~à(- Ø&+¨f¡n  à(- Ø&,¨q¡j øøÝ)ð %ð %ð %Ý!Ð"9°CÐ"9Ð"9Ñ:Ô:Ð:Ø$™Hð%øøøð
%Ý$'¨¡H¤H˜EØ"'¨)Ñ"3˜C˜CøÝ)ð %ð %ð %Ý!Ð"<°sÐ"<Ð"<Ñ=Ô=Ð=Ø$™Hð%øøøð �=Ø!Ô,Ð4à&0Ô&@×&DÒ&DØ&Ô5°qñ'ô '˜õ !$ A {°YÀ!±^Ñ'CÑ DÔ D˜˜à *Ô 5˜Ø )Ñ+�Cà�;Ý(Ð)VÑWÔWÐWÝ�#˜jÔ5Ñ6Ô6¸Ñ<Ô<�Ø�C 
Ô 7Ñ8Ô8Ò8Ð8ÝÐ-Ñ.Ô.Ð.Ñ.å˜$×-Ò-¨jÑ9Ô9Ñ:Ô:Ð:Ý" 5¨#Ñ.Ô.ð Uð U˜Ø)Ô6°qÔ9˜Øœ;Ð2Ý! $×":Ò":¸:ÀtÄ{Ñ"SÔ"SÑTÔTÐTøÝ‘G”G�GØ,/�JÔ)Ñ)à˜4’�Ø×!Ò! *Ñ-Ô-Ð-Ñ-à˜8Ò#Ð#Ø×"Ò" :Ñ.Ô.Ð.Ñ.à˜9Ò$Ð$Ø×#Ò# J°sÐ0D°°ÀÑEÔEÐEÑEà˜7Ò"Ð"Ø'¨;°r¬?Ð:�
Ø×!Ò! *¸zÐ!ÑJÔJÐJÑJà˜3’‘Øð ðDÝ # C¡¤˜Ý+.¨zÔ/FÑ+GÔ+GÐ(Ø  1š9˜9¨Ð1AÒ(AÐ(AÝ!ð!F¸uð !Fð !FØ.>ÀÑ.Bð!Fð !Fð !Fñô ð ð ð
 'Ô2×6Ò6°uÑ=Ô=Ð=Ý!Ð"JÀ5Ð"JÐ"JÑKÔKÐKùøÝ%ð Dð Dð DÝÐB¸SÐBÐBÑCÔCÐCÐCÑCðDøøøõ Ð*Ñ+Ô+Ð+Ø%Ô1ð 	&Ý˜jÑ)Ô)Ð)Ð)å(.¨zÔ/EÑ(FÔ(Fð &ð &˜HØ'­#¨jÔ.EÑ*FÔ*FÒFÐFØ'1Ô'>¸xÔ'H Ø#'¤;Ð#:Ý$)Ø(t¨T×-EÒ-EÀjÐRVÔR]ÐlqÐ-EÑ-rÔ-rÐ(tÐ(tñ%&ô %&ð %&øõ ‘G”G�G‘Gà˜4’�Øð DðDÝ # C¡¤˜Ý+.¨zÔ/FÑ+GÔ+GÐ(Ø  1š9˜9¨Ð1AÒ(AÐ(AÝ!ð!F¸uð !Fð !FØ.>ÀÑ.Bð!Fð !Fð !Fñô ð ð ð # jÔ&<Ð<Ð<Ø&Ô2×:Ò:¸5ÑAÔAÐAÝ!Ð"NÀuÐ"NÐ"NÑOÔOÐOÐOå!Ð"IÀ%Ð"IÐ"IÑJÔJÐJùøÝ%ð Dð Dð DÝÐB¸SÐBÐBÑCÔCÐCÐCÑCðDøøøñDð" ˜3’�Øð 3ð	@Ø%/°;¸r´?Ð%B˜
Ø(2Ô(8Ô(B˜Ø&*×&=Ò&=Ø&¸ð '>ñ 'ô '˜õ "& c¨=¸+Ñ!FÔ!F˜Ý Ð3Ð3¨Ð3Ð3Ñ4Ô4Ð4Ñ4øÝ$ð @ð @ð @ÝÐ>°3Ð>Ð>¸1Ð>Ð>Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ñ?øøøøð@øøøõ Ð1Ñ2Ô2Ð2Ñ2àÐ-Ð-Ð-Ø× Ò Ñ"Ô"Ð"Ñ"àÐ0Ð0Ð0ÝÐ)Ñ*Ô*Ð*Ø!%�”Ý'Ð'ð (¨;°r¬?Ð:�
Ø *Ô 0Ô :�Ø"×5Ò5Ø°ð 6ñ ô �ð:å! # }°kÑBÔB�FØÐ)Ý�d 6™lœlÑ+Ô+Ð+ùøÝ"ð >ð >ð >ð>Ý&)¨+×*:Ò*:Ñ*<Ô*<Ñ&=Ô&=˜Ø%OÐ%O¸;×;LÒ;LÑ;NÔ;NÐ%OÑ%OÔ%O˜
Ý˜S -°Ñ=Ô=Ð=à#.ð Oð O˜CØ%(°Ð%;˜FØ*-°Ô1GÐ*G˜KÝ*,¨[¸Ô-=Ñ*>Ô*>À*Ç.Â.ÐQTÑBUÔBUÒ*U˜Kà &ðOØ*5ðOØ9DðOà"%¨Ò"4Ð"4Ø>IÈ#Ô>N 
Ô 6°sÑ ;øðOøõ %ð >ð >ð >ÝÐ<¥T¨!¡W¤WÔ%5Ð<Ð<¸Ð<Ð<Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð>øøøøøå ð :ð :ð :ÝÐ8¥ a¡¤Ô!1Ð8Ð8°QÐ8Ð8Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9øøøøð:øøøñA	a	:s  Á!A) Á)0BÄD) Ä)E	ÅE	Å(F ÆF"Æ!F"È H ÈH0È/H0ÊJ% Ê%KËKÐ2A#R ÒR6Ò5R6Ò:S ÓS/Ó.S/Ú1A5\( Ü(]Ý]ß:Bb âb-â,b-â;Ad ä
d9äd4ä4d9æ6/g' ç'
lç2B*jêlê
kê''këlëkëlë	lë&'lìlc                óf  — |€.|                       |¦  «        }|€t          d|j        › �¦  «        ‚|                      ||¦  «        }|j        }|dk    rÔ|j                             |¦  «        }|�¸|j                             |d¦  «        }|dz   }|j                             |d¦  «        }	|	|k    }
	 t          j	        |j
        |j        |
¬¦  «        }|xj        |z  c_        |j        dk     r"t          d|j        › d|› d	|j        › �¦  «        ‚n# t          t           f$ r Y nw xY w||_        d|_        | j        rd
| _        d|_        d|_        d| _        | j        �f|| j        u r]| j        dk    r| xj        dz  c_        nd| _        d|_        d|_        d| _        t0          rt2          j                             ¦   «          |j        shd|_        | j        sd
|_        |j        r-t;          d|j        › d�¦  «         |                      ¦   «          n| j        rt;          d|j        › d�¦  «         | j        rh|j                             |¦  «        }|rL|j                             |d¦  «        }|j        �
d|j         › �nd}t;          d|› d|j        › |› �d¬¦  «         |j                             |¦  «        }|j                             |d¦  «        }	|	|j!        v }d
}| j"        �$|| j"        u r|�|j        dv rd| _"        d| _        d}|j        dk    r|xj        dz  c_        |s|rd|_        ndS |j        p|p|}|rl|r:|�%|  #                    |¦  «        rt;          d¦  «         n,t;          d|	› �¦  «         n|rt;          d|j        › �¦  «         |  $                    |¦  «         dS dS )z<Common instruction handling logic for both tracing backends.Nz%Could not find frame for code object r   rA   r   )Újumpz Stack depth went negative after rÃ   z: depth=FTz%
=== Entering Dynamo-generated code: ú ===r¯   r°   z	Running [rÛ   )Úflush)ÚRETURN_VALUEÚRETURN_CONSTzBreakpoint hit (programmatic)zBreakpoint hit at instruction zAbout to return from )%r¢   r3  r2  r›   rB   r1   rt   r3   r�   rÍ   rÎ   r²   rC   ÚRuntimeErrorr   rÏ   rÐ   rL   rd   rF   rG   rh   re   rf   rj   rk   r   Úrestart_eventsrE   rÆ   rü   rg   r€   r:   rc   r‚   rV  )r    r-   rŠ   r@   r£   Úprevious_offsetÚ	prev_instÚ
prev_indexÚexpected_next_indexÚcurrent_indexÚdid_jumprÒ   r|   rE  r¸   Úhit_breakpointÚhit_return_targetÚshould_stops                     r   Ú_handle_instructionz!_DebugContext._handle_instructionÜ  sÏ  € ð ˆ=Ø×-Ò-¨dÑ3Ô3ˆEØˆ}Ý$ØJ¸D¼LÐJÐJñô ð ð ×/Ò/°°eÑ<Ô<ˆð
  Ô.ˆØ˜aÒÐØÔ,×0Ò0°ÑAÔAˆIØÐ$à"Ô2×6Ò6°ÈÑKÔK�
Ø&0°1¡nÐ#Ø %Ô 5× 9Ò 9¸&À"Ñ EÔ E�Ø(Ð,?Ò?�ðÝ Ô-Ø!Ô(¨)¬-¸hðñ ô �Fð Ð-Ô-°Ñ7Ð-Ô-ØÔ0°1Ò4Ð4Ý*ð^¸yÔ?Oð ^ð ^Ø)8ð^ð ^ØBGÔB[ð^ð ^ñô ð ð 5øõ
 #¥IÐ.ð ð ð Ø�Dðøøøð  &ˆÔØˆÔð Ô"ð 	*Ø&+ˆDÔ#Ø"ˆEŒOØ ˆEÔØ%)ˆDÔ"ð ÔÐ*¨u¸Ô8KÐ/KÐ/KØÔ !Ò#Ð#àÐ Ô  AÑ%Ð Ô Ð à&*�Ô#Ø"&�”Ø#$�Ô Ø)-�Ô&Ý"ð 0Ý”×-Ò-Ñ/Ô/Ð/ð Ô+ð 	SØ+/ˆEÔ(ØÔ)ð (Ø"'�”ØŒð SÝÐQ¸t¼|ÐQÐQÐQÑRÔRÐRØ× Ò Ñ"Ô"Ð"Ð"Ø”ð SÝÐQ¸t¼|ÐQÐQÐQÑRÔRÐRð Œ=ð 	MØÔ'×+Ò+¨FÑ3Ô3ˆDØð MØÔ+×/Ò/°¸Ñ;Ô;�Ø/3¬xÐ/CÐ+˜dœkÐ+Ð+Ð+È�ÝÐ? #Ð?Ð?¨¬Ð?°gÐ?Ð?ÀtÐLÑLÔLÐLàÔ#×'Ò'¨Ñ/Ô/ˆð Ô-×1Ò1°&¸"Ñ=Ô=ˆØ&¨%Ô*;Ð;ˆð "ÐØÔ"Ð.°5¸DÔ<SÐ3SÐ3SØÐ D¤KÐ3SÐ$SÐ$SØ*.�Ô'à*.�Ô'Ø$(Ð!ð Ô˜aÒÐØÐÔ Ñ!ÐÔàð Ð!2ð Ø#$�Ô Ð à�à”oÐL¨ÐLÐ;LˆØð 	,Øð >ØÐ#¨×(GÒ(GÈÑ(MÔ(MÐ#ÝÐ9Ñ:Ô:Ð:Ð:åÐJ¸=ÐJÐJÑKÔKÐKÐKØ"ð >ÝÐ<¨d¬lÐ<Ð<Ñ=Ô=Ð=Ø×$Ò$ UÑ+Ô+Ð+Ð+Ð+ð	,ð 	,s   Â2AD ÄD%Ä$D%Úretvalr   c                ó~  — | j         rdS t          d|j        › d|›d�¦  «         | j        �L|| j        u s|€A|| j        j        u r3d| _        d| _        t          rt          j         	                    ¦   «          | j
        �L|| j
        u s|€A|| j
        j        u r3d| _
        d| _        t          rt          j         	                    ¦   «          |�| j                             |d¦  «         dS t          | j                             ¦   «         ¦  «        D ],\  }}|j        |u r| j                             |d¦  «          dS Œ-dS )zCommon return handling logic.Nz
=== z returned: rY  T)ri   rÆ   r2  rc   rŸ   rd   rj   rk   r   r^  re   r^   Úpopry   ré   r-   )r    r-   ri  r@   r¡   rJ   s         r   Ú_handle_returnz_DebugContext._handle_returnQ  sv  € ð Œ>ð 	ØˆFÝÐ>�t”|Ð>Ð>°Ð>Ð>Ð>Ñ?Ô?Ð?ð
 Ô"Ð.Ø�TÔ,Ð,Ð,Ø� $¨$Ô*AÔ*HÐ"HÐ"Hà&*ˆDÔ#Ø&*ˆDÔ#Ý"ð 0Ý”×-Ò-Ñ/Ô/Ð/ØÔÐ*Ø�TÔ(Ð(Ð(Ø� $¨$Ô*=Ô*DÐ"DÐ"Dà"&ˆDÔØ&*ˆDÔ#Ý"ð 0Ý”×-Ò-Ñ/Ô/Ð/ð ÐØÔ×"Ò" 5¨$Ñ/Ô/Ð/Ð/Ð/õ ˜TÔ/×5Ò5Ñ7Ô7Ñ8Ô8ð ð ‘��1Ø”6˜T�>�>ØÔ&×*Ò*¨1¨dÑ3Ô3Ð3Ø�E�Eð "ðð r   Ú	exceptionÚBaseExceptionc                ó\  — | j         rdS |                      |¦  «        }|€dS | j                             |¦  «        }|€dS | j        �|| j        u s|| j        j        u rd| _        | j        �%|| j        u s|| j        j        u rd| _        d| _        ||_        |j	                             |¦  «        }|r|j
        nd}|j                             |d¦  «        }t          d|› d|› d�¦  «         t          dt          |¦  «        j        › d|› d�¦  «         |                      |¦  «         dS )	z Common exception handling logic.NTr  rA   z%
=== Exception raised at instruction r+  rY  z=== )ri   r¢   r^   rt   rc   rŸ   re   rh   rB   r1   r   r3   rÆ   r;  r#   rV  )	r    r-   rŠ   rm  r@   r£   r|   rF  rc  s	            r   Ú_handle_exceptionz_DebugContext._handle_exceptionw  sg  € ð Œ>ð 	ØˆFØ×)Ò)¨$Ñ/Ô/ˆØˆ=ØˆFØÔ"×&Ò& uÑ-Ô-ˆØˆ=ØˆFð Ô"Ð.Ø�TÔ,Ð,Ð,°¸Ô8OÔ8VÐ0VÐ0Và&*ˆDÔ#ð ÔÐ*Ø�TÔ(Ð(Ð(¨D°DÔ4GÔ4NÐ,NÐ,Nà"&ˆDÔØ%)ˆDÔ"à%ˆÔàÔ#×'Ò'¨Ñ/Ô/ˆØ"&Ð7�4”;�;¨KˆØÔ-×1Ò1°&¸"Ñ=Ô=ˆåÐV°}ÐVÐVÈÐVÐVÐVÑWÔWÐWÝÐ@•T˜)‘_”_Ô-Ð@Ð@°Ð@Ð@Ð@ÑAÔAÐAØ× Ò  Ñ'Ô'Ð'Ð'Ð'r   c                ó*  — || j         v rdS | j                              |¦  «         t          rQt          j                             | j        |t          j        j        j        t          j        j        j	        z  ¦  «         |  
                    |¦  «         dS )z5Called by C++ before executing Dynamo-generated code.N)r`   r4  rj   rk   r   Úset_local_eventsrm   ÚeventsÚINSTRUCTIONÚ	PY_RETURNr™   )r    r-   s     r   Ú_dynamo_code_callbackz#_DebugContext._dynamo_code_callbackŸ  sŒ   € à�4Ô&Ð&Ð&ØˆFØÔ×Ò Ñ%Ô%Ð%åð 	õ ŒN×+Ò+Ø”ØÝ”Ô%Ô1µC´NÔ4IÔ4SÑSñô ð ð 	×%Ò% dÑ+Ô+Ð+Ð+Ð+r   Úinstruction_offsetc                ó2   — |                       ||¦  «         dS )z/Callback for PY_RETURN events (sys.monitoring).N)rl  )r    r-   rw  ri  s       r   Ú_monitoring_return_callbackz)_DebugContext._monitoring_return_callback²  s    € ð 	×Ò˜D &Ñ)Ô)Ð)Ð)Ð)r   c                óP   — |                       ||¦  «         t          j        j        S )z1Callback for INSTRUCTION events (sys.monitoring).)rh  rk   r   ÚDISABLE)r    r-   rŠ   s      r   Ú _monitoring_instruction_callbackz._DebugContext._monitoring_instruction_callback¸  s%   € ð 	× Ò   vÑ.Ô.Ð.ÝŒ~Ô%Ð%r   c                óJ   — || j         vrdS |                      |||¦  «         dS )z+Callback for RAISE events (sys.monitoring).N)r`   rp  )r    r-   rŠ   rm  s       r   Ú_monitoring_raise_callbackz(_DebugContext._monitoring_raise_callback¿  s4   € ð
 �tÔ*Ð*Ð*Ø�4Ø×Ò˜t V¨YÑ7Ô7Ð7àˆtr   Úeventr²   r   úCallable[..., Any] | Nonec                óf  — |j         }|| j        vr| j        S |dk    rd|_        | j        S |dk    r%|j        }|                      |||¦  «         | j        S |dk    r|                      |||¦  «         | j        S |dk    r+|j        }|\  }}}|                      |||¦  «         | j        S | j        S )z Trace function for sys.settrace.ÚcallTrÎ   r   rm  )rŸ   r`   Ú_settrace_callbackÚf_trace_opcodesÚf_lastirh  rl  rp  )	r    r@   r  r²   r-   rŠ   Úexc_typeÚ	exc_valueÚexc_tbs	            r   rƒ  z _DebugContext._settrace_callbackÎ  så   € ð Œ|ˆð �tÔ*Ð*Ð*ØÔ*Ð*à�FŠ?ˆ?à$(ˆEÔ!ØÔ*Ð*à�hÒÐà”]ˆFØ×$Ò$ T¨6°5Ñ9Ô9Ð9ØÔ*Ð*à�hÒÐØ×Ò  c¨5Ñ1Ô1Ð1ØÔ*Ð*à�kÒ!Ð!à”]ˆFØ*-Ñ'ˆH�i Ø×"Ò" 4¨°Ñ;Ô;Ð;ØÔ*Ð*àÔ&Ð&r   r   c                óÆ  — ddl m}m} d| _         |¦   «         | _        | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          t          �r.	 t          j                             | j        d¦  «         n# t          $ r Y nw xY wt          j                             | j        t          j        j        j        | j        ¦  «         t          j                             | j        t          j        j        j        | j        ¦  «         t          j                             | j        t          j        j        j        | j        ¦  «         t          j                             | j        t          j        j        j        ¦  «         n1t          j        ¦   «         | _        t          j        | j        ¦  «          || j        ¦  «         | S )zStart the debug context.r   )Úget_bytecode_debugger_callbackÚset_bytecode_debugger_callbackTÚbytecode_debugger)rÜ   rŠ  r‹  r_   rb   r]   Úclearr^   r`   rj   rk   r   Úuse_tool_idrm   rÏ   Úregister_callbackrs  rt  r|  ru  ry  ÚRAISEr~  Ú
set_eventsÚgettracera   Úsettracerƒ  rv  )r    rŠ  r‹  s      r   Ú	__enter__z_DebugContext.__enter__ô  sÇ  € ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
 ˆŒØ<Ð<Ñ>Ô>ˆÔØŒ×ÒÑÔÐØÔ× Ò Ñ"Ô"Ð"ØÔ×!Ò!Ñ#Ô#Ð#åñ 	2ðÝ”×*Ò*¨4¬=Ð:MÑNÔNÐNÐNøÝð ð ð Ø�ðøøøõ ŒN×,Ò,Ø”Ý”Ô%Ô1ØÔ5ñô ð õ
 ŒN×,Ò,Ø”Ý”Ô%Ô/ØÔ0ñô ð õ
 ŒN×,Ò,Ø”Ý”Ô%Ô+ØÔ/ñô ð õ ŒN×%Ò% d¤mµS´^Ô5JÔ5PÑQÔQÐQÐQõ "œl™nœnˆDŒOÝŒL˜Ô0Ñ1Ô1Ð1ð 	'Ð& tÔ'AÑBÔBÐBØˆs   Á3%B Â
B&Â%B&r†  útype[BaseException] | NoneÚexc_valúBaseException | Nonerˆ  útypes.TracebackType | Nonec                ó–  — | j         sdS ddlm} d| _         | j        } ||¦  «         t          �rÿ|€]t
          j                             | j        d¦  «         	 t
          j         	                    | j        ¦  «         �nÊ# t          $ r Y �n½w xY wt          |t          j        ¦  «        st          dt          |¦  «        › �¦  «        ‚t!          d|j        ¦  «        }t
          j                             | j        t
          j        j        j        |j        ¦  «         t
          j                             | j        t
          j        j        j        |j        ¦  «         t
          j                             | j        t
          j        j        j        |j        ¦  «         t
          j                             | j        t
          j        j        j        ¦  «         |j        D ]S}t
          j                             | j        |t
          j        j        j        t
          j        j        j        z  ¦  «         ŒTnt          j        | j        ¦  «         dS )zEnd the debug context.Fr   )r‹  Nz/Expected prev callback to be a MethodType, got rZ   )r_   rÜ   r‹  rb   rj   rk   r   r‘  rm   Úfree_tool_idrÏ   rô   rõ   Ú
MethodTyper3  r;  r   Ú__self__r�  rs  rt  r|  ru  ry  r�  r~  r`   rr  r“  ra   )r    r†  r–  rˆ  r‹  ÚprevÚouterr-   s           r   Ú__exit__z_DebugContext.__exit__#  s#  € ð Œ|ð 	Ø�5ØNÐNÐNÐNÐNÐNàˆŒØÔ"ˆØ&Ð& tÑ,Ô,Ð,åñ '	*Øˆ|Ý”×)Ò)¨$¬-¸Ñ;Ô;Ð;ðÝ”N×/Ò/°´Ñ>Ô>Ð>Ñ>øÝ!ð ð ð Ø‘Dðøøøõ " $­Ô(8Ñ9Ô9ð Ý(ØVÍ$ÈtÉ*Ì*ÐVÐVñô ð õ ˜_¨d¬mÑ<Ô<�Ý”×0Ò0Ø”MÝ”NÔ)Ô5ØÔ:ñô ð õ
 ”×0Ò0Ø”MÝ”NÔ)Ô3ØÔ5ñô ð õ
 ”×0Ò0Ø”MÝ”NÔ)Ô/ØÔ4ñô ð õ
 ”×)Ò)¨$¬-½¼Ô9NÔ9TÑUÔUÐUØ!Ô0ð ð �DÝ”N×3Ò3ØœØÝœÔ-Ô9Ýœ.Ô/Ô9ñ:ñô ð ð ðõ ŒL˜œÑ)Ô)Ð)àˆus   Á$A? Á?
BÂB©r   r[   rN   )r-   ro   r   r.   )r   rw   )r|   r   r   rD   )r-   r,   r   r+   )r-   r,   r@   r?   r   r=   )r-   r,   r   rœ   )r£   r=   r   r¤   )T)r£   r=   rŠ   r4   r«   rD   r   r   )r£   r=   r   r   )r¿   r¿   )r£   r=   rÀ   r4   rÁ   r4   r   r[   )r£   r=   rË   rD   r   r4   )r£   r=   rË   rD   r   r[   )r£   r=   r   r[   )r£   r=   rí   rî   r   r[   )r£   r=   rË   rD   r   rý   )r£   r=   rË   rD   r   rH   )r-   r,   rŠ   r4   r@   rœ   r   r[   )r-   r,   ri  r   r@   rœ   r   r[   )r-   r,   rŠ   r4   rm  rn  r   r[   )r-   r,   r   r[   )r-   r,   rw  r4   ri  r   r   r[   )r-   r,   rŠ   r4   r   r   )r-   r,   rŠ   r4   rm  rn  r   r   )r@   r?   r  r   r²   r   r   r€  r"   )r†  r•  r–  r—  rˆ  r˜  r   rD   )#r#   r$   r%   r&   rn   rv   r{   Ústaticmethodr‚   r™   r›   r¢   rª   r¹   r¾   rÊ   rÓ   rã   rì   r÷   rú   rü   rÿ   r  rV  rh  rl  rp  rv  ry  r|  r~  rƒ  r”  rŸ  r   r   r   rZ   rZ   Š   sí  € € € € € ØDÐDð7ð 7ð 7ð 7ð"!ð !ð !ð !ð !ð(,ð ,ð ,ð ,ð ðPð Pð Pñ „\ðPð,%ð ,%ð ,%ð ,%ð\)ð )ð )ð )ðð ð ð ðð ð ð ð& GKð]ð ]ð ]ð ]ð ]ð"6ð 6ð 6ð 6ð CDðð ð ð ð ð ð ð ð ð(ð ð ð ð ð,	ð 	ð 	ð 	ðð ð ð ð ðð ð ð ðð ð ð ð@ >Bð
ð 
ð 
ð 
ð 
ð >Bðð ð ð ð ði:ð i:ð i:ð i:ðX	 RVðs,ð s,ð s,ð s,ð s,ðl UYð$ð $ð $ð $ð $ðL"(ð "(ð "(ð "(ðP,ð ,ð ,ð ,ð&*ð *ð *ð *ð&ð &ð &ð &ð	ð 	ð 	ð 	ð 'ð  'ð  'ð  'ðL-ð -ð -ð -ð^8ð 8ð 8ð 8ð 8ð 8r   rZ   r   ú$Generator[_DebugContext, None, None]c               #  ó¦   K  — t          ¦   «         } 	 | 5  | V — ddd¦  «         dS # 1 swxY w Y   dS # t          $ r t          d¦  «         Y dS w xY w)aÁ  
    Context manager for debugging Dynamo-generated bytecode.

    Any Dynamo-generated code executed within this context will trigger
    the interactive bytecode debugger.

    Example:
        >>> # xdoctest: +SKIP
        >>> import torch
        >>>
        >>> @torch.compile
        >>> def my_fn(x):
        ...     return x + 1
        >>>
        >>> with torch._dynamo.bytecode_debugger.debug():
        ...     my_fn(torch.randn(3))
    Nz
=== Debug session ended ===)rZ   r/  rÆ   )Úctxs    r   Údebugr¥  ^  s¼   è è € õ& ‰/Œ/€Cð/Øð 	ð 	ØˆIˆIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	øåð /ð /ð /ÝÐ-Ñ.Ô.Ð.Ð.Ð.Ð.ð/øøøs'   ’3 ”&™3 ¦*ª3 ­*®3 ³AÁAr[   c                 ó   — dS )zõProgrammatic breakpoint for user code.

    Place this in code compiled by Dynamo. During tracing, Dynamo inserts a
    BREAKPOINT_MARKER into the compiled bytecode. When the bytecode debugger
    is active, execution pauses at this marker.
    Nr   r   r   r   Ú
breakpointr§  y  s   € € € r   )r   r¢  r   )#r&   Ú
__future__r   r�   rk   rõ   Ú
contextlibr   Údataclassesr   r   Útypingr   r   r	   Úcollections.abcr
   r   Útyping_extensionsr   Úbytecode_transformationr   r   r   Úhasattrrj   r   r�   rÜ   r)   r+   r=   rZ   r¥  r§  r   r   r   ú<module>r°     s  ððð ð2 #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø 
€
€
€
Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ð ð 'Ø3Ð3Ð3Ð3Ð3Ð3Ð3Ð3à&Ð&Ð&Ð&Ð&Ð&à WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ Wð �g˜c <Ñ0Ô0Ð ðð ð ð ð ñ ô ð ð( &Ð%Ñ'Ô'Ð ð
 9Ð 8Ð 8Ð 8Ð 8Ð 8ð ð	7ð 	7ð 	7ð 	7ð 	7ñ 	7ô 	7ñ „ð	7ð ð,*ð ,*ð ,*ð ,*ð ,*ñ ,*ô ,*ñ „ð,*ð^Qð Qð Qð Qð Qñ Qô Qð Qðh ð/ð /ð /ñ „ð/ð4ð ð ð ð ð r   