+
    –°³j°†  ã                   óà  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t	H
t
 ^ RIHtHtHt ^ RIt^ RIHt ^ RIHt ^RIHtHtHt ^RIHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t& ^R	I'H(t( ^R
I)H*t*H+t+H,t,H-t- ^RIH.t.H/t/ ^RI0H1t1H2t2 ^RI3H4t4H5t5 ^RI6H7t7 ^RI8H9t9 ^RI:H;t; ^RI<H=t=H>t>H?t?H@t@ ^RIAHBtB ]'       d   ^ RICHDtD ^RIEHFtF ]PŽ                   ! R R4      4       tH ! R R4      tIR# )aû  
This module provides utilities for generating Python bytecode in PyTorch's Dynamo system.
It includes functionality for:
- Constructing bytecode sequences for Python operations
- Managing stack operations and variable tracking
- Handling graph outputs and their conversions
- Supporting different Python versions (3.11+, 3.12+, 3.13+)
- Converting high-level operations to low-level bytecode instructions
- Managing constant loading and attribute access
- Supporting function creation and closure handling
N)ÚCounterÚdeque)ÚCallableÚIterable)ÚAnyÚTYPE_CHECKINGÚUnion)Úis_opaque_constant_type)Ú
OrderedSet)ÚconfigÚgraph_break_hintsÚutils)Úadd_push_nullÚadd_push_null_call_function_exÚcreate_binary_subscrÚcreate_build_tupleÚcreate_call_functionÚcreate_call_function_exÚcreate_call_methodÚcreate_dup_topÚcreate_instructionÚcreate_load_constÚcreate_load_methodÚcreate_rot_nÚInstruction)Úunimplemented)Ú
AttrSourceÚChainedSourceÚDictGetItemSourceÚSource)Úis_safe_constantÚrot_n_helper)ÚValueMutationExistingÚVariableTracker)Ú4ContextlibContextManagerLocalGeneratorObjectVariableÚLocalGeneratorObjectVariable)ÚComputedLazyConstantVariable)ÚNNModuleVariable)ÚCustomClassObjectVariable)ÚNumpyNdarrayVariableÚSymNodeVariableÚTensorVariableÚUnspecializedPythonVariable)ÚTensorWithTFOverrideVariable)ÚGraphArg)ÚInstructionTranslatorBasec                   ó,   a € ] tR t^Dt o V 3R ltRtV tR# )ÚGraphOutputEntryc                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   # )é   ÚindexÚvariable)Úintr#   )ÚformatÚ__classdict__s   "€ÚV/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_dynamo/codegen.pyÚ__annotate__ÚGraphOutputEntry.__annotate__D   s   ø‡ ‚ á�Jñ ñ Ñò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r8   s   @r9   r1   r1   D   s   ø‡ ‡ „ r<   r1   c                   óÄ  a € ] tR t^Jt o RtRjV 3R lR lltV 3R lR ltRR/V 3R	 lR
 lltV 3R lR ltV 3R lR lt	RkV 3R lR llt
RlV 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR  ltV 3R! lR" ltV 3R# lR$ ltV 3R% lR& ltV 3R' lR( ltV 3R) lR* ltV 3R+ lR, ltV 3R- lR. ltV 3R/ lR0 ltV 3R1 lR2 ltRkV 3R3 lR4 lltV 3R5 lR6 ltV 3R7 lR8 ltV 3R9 lR: ltV 3R; lR< lt V 3R= lR> lt!V 3R? lR@ lt"V 3RA lRB lt#V 3RC lRD lt$V 3RE lRF lt%V 3RG lRH lt&RmV 3RI lRJ llt'V 3RK lRL lt(V 3RM lRN lt)V 3RO lRP lt*V 3RQ lRR lt+V 3RS lRT lt,V 3RU lRV lt-V 3RW lRX lt.V 3RY lRZ lt/V 3R[ lR\ lt0V 3R] lR^ lt1V 3R_ lR` lt2V 3Ra lRb lt3V 3Rc lRd lt4V 3Re lRf lt5V 3Rg lRh lt6Rit7V t8R# )nÚ	PyCodegenz4
Helper class uses for constructing Python bytecode
Nc                óÖ   <€ V ^8„  d   QhRRRS[ P                  P                  R,          RS[R,          RS[S[S[,          S[3,          R,          RS[S[S[3,          R,          RR/# )	r3   Útxr/   ÚrootNÚgraph_output_varÚtempvarsÚoverridden_sourcesÚreturn)ÚtorchÚnnÚModuleÚstrÚdictr#   r   r   )r7   r8   s   "€r9   r:   ÚPyCodegen.__annotate__O   sz   ø€ ÷ ñ à'ðñ �h‰h�o‰o Õ$ðñ  �*ð	ñ
 ‘©Õ/±Ð4Õ5¸Õ<ðñ !¡© Õ0°4Õ7ðð 
ñr<   c                ó²  € W n         R V n        \        P                  ! 4       V n        / V n        . V n        T;'       g    / V n        Wn        W0n	        V P                  P                  P                  V n        V P                  P                  V n        V P                  P                  P                  V n        RV n        T;'       g    / V n        . V n        R # )NT)rJ   Útop_of_stackÚcollectionsr   ÚusesÚgraph_outputsÚ_outputrL   rI   rK   ÚoutputÚcode_optionsÚcell_and_freevarsÚnew_varÚvalue_from_sourcerM   Úpycodes)ÚselfrI   rJ   rK   rL   rM   s   &&&&&&r9   Ú__init__ÚPyCodegen.__init__O   sª   € ð Œ	Ø=AˆÔÜ7B×7JÒ7JÓ7LˆŒ	Ø:<ˆÔØ*,ˆŒð
 >F¿^¸^ÈˆŒØŒØ 0ÔØ ŸG™GŸN™N×7Ñ7ˆÔØ!%§¡×!:Ñ!:ˆÔØ—w‘w—~‘~×-Ñ-ˆŒØ'+ˆÔð 9K×8PÐ8PÈbˆÔØˆŽr<   c                ó    <€ V ^8„  d   QhRS[ /# )r3   Úpycode©rR   )r7   r8   s   "€r9   r:   rT   m   s   ø€ ÷ Xñ X¡ñ Xr<   c           
     ó0  € \         P                  '       g   R # V F+  p\        V\        4      '       g   K  VP	                  4        K-  	  V P
                  P                  VP                  ! V Uu. uF  q3P                  V 4      NK  	  up!  4       R # u upi ©N)	r   Úgenerate_pycodeÚ
isinstancer#   Úrealizer`   Úappendr7   Úreconstruct_pycode)ra   re   ÚargsÚas   &&* r9   Ú
add_pycodeÚPyCodegen.add_pycodem   sl   € Ü×%×%Ð%ÙÛˆAÜ˜!œ_×-Ô-Ø—	‘	–ñ ð 	�‰×Ñ˜FŸMšMÑPTÓ+UÑPTÈ1×,@Ñ,@ÀÖ,FÑPTÑ+UÑVÖWùÒ+Us   Á/Br_   Tc                ó:   <€ V ^8„  d   QhRS[ S[,          RS[RR/# )r3   Ústack_valuesr_   rN   N)Úlistr   Úbool)r7   r8   s   "€r9   r:   rT   u   s)   ø€ ÷ *ñ *Ù ¡�Ið*Ù=Að*à	ñ*r<   c               ó:  € V P                   pV ;P                   V,          un          V P                  V4       V P                  P                  R 4       V F1  pV P	                  V P                  P                  R 4       R2V4       K3  	  W0n         R#   Y0n         i ; i)Ústackú = {}N)r_   ÚforeachrI   Úreset_pycode_varname_counterrp   Únew_pycode_varname)ra   rs   r_   ÚprevÚvs   &&$  r9   Úrestore_stackÚPyCodegen.restore_stacku   s…   € ð ×%Ñ%ˆØ×ÒÐ"3Õ3Õð		*Ø�L‰L˜Ô&ð �G‰G×0Ñ0°Ô9Û!�Ø—‘ 4§7¡7×#=Ñ#=¸gÓ#FÐ"GÀwÐ OÐQRÖSñ "ð &*Ö"ø TÕ"ús   §A#B ÂBc                ó0   <€ V ^8„  d   QhRS[ S[,          /# ©r3   rN   )rt   r#   )r7   r8   s   "€r9   r:   rT   …   s   ø€ ÷ Añ A¡4©Õ#8ñ Ar<   c                ór   € V P                   P                  4        Uu. uF  qP                  NK  	  up# u upi rh   )rY   Úvaluesr5   )ra   Úxs   & r9   Úgraph_output_varsÚPyCodegen.graph_output_vars…   s-   € Ø$(×$6Ñ$6×$=Ñ$=Ô$?Ó@Ñ$?˜q—
”
Ñ$?Ñ@Ð@ùÒ@s   �4c                ó<   <€ V ^8„  d   QhRS[ S[S[R3,          RR/# )r3   Úvaluer.   rN   N)r   r#   r   )r7   r8   s   "€r9   r:   rT   ˆ   s)   ø€ ÷ ?ñ ?Ù™?©F°JÐ>Õ?ð?à	ñ?r<   c                óL   € VP                  V 4      pVe   \        RV 24      hR # )Nzreconstruct!=None )ÚreconstructÚAssertionError)ra   rˆ   Úress   && r9   Úcall_reconstructÚPyCodegen.call_reconstructˆ   s1   € ð ×Ñ Ó%ˆØŠ?Ü Ð#5°e°WÐ!=Ó>Ð>ñ r<   c                ó<   <€ V ^8„  d   QhRS[ . R3,          RS[RR/# )r3   Úgen_fnNÚcall_function_exrN   )r   ru   )r7   r8   s   "€r9   r:   rT   �   s.   ø€ ÷ ñ Ù˜r 4˜xÕ(ðÙ<@ðà	ñr<   c                ó´  € \        V P                  4      p\        P                  R8  d   V P	                  4        V! 4        V P                  VR pV P                  VR1 V'       d&   V P                  P                  \        V4      4       M$V P                  P                  \        V4      4       \        P                  R8¼  d   V P	                  4        R# R# )a`  
`gen_fn` generates instructions via PyCodegen methods
that push a single callable to the stack.

`add_push_null` pushes a NULL to the stack before or after the
instructions generated by `gen_fn`, depending on Python version.

Will attempt to use the NULL push bit for instructions
with such bits (LOAD_GLOBAL 3.11+, LOAD_ATTR 3.12+, LOAD_SUPER_ATTR).
N©é   é   )ÚlenrZ   ÚsysÚversion_infoÚ	clear_tosÚextendr   r   )ra   r�   r‘   Úold_lenÚadded_instss   &&&  r9   r   ÚPyCodegen.add_push_null�   sž   € ô �d—l‘lÓ#ˆÜ×Ñ˜gÔ%ð �N‰NÔÙŒà—l‘l 7 8Ð,ˆØ�L‰L˜™Ð"ßØ�L‰L×ÑÔ >¸{Ó KÕLà�L‰L×Ñ¤¨kÓ :Ô;Ü×Ñ˜wÔ&à�N‰NÖñ 'r<   c                óH   <€ V ^8„  d   QhRS[ S[,          R,          RS[RR/# )r3   rˆ   NÚallow_cacherN   )r#   r   ru   )r7   r8   s   "€r9   r:   rT   ®   s4   ø€ ÷ D"ñ D"Ù$¡vÕ-°Õ4ðD"ÙCGðD"à	ñD"r<   c           
     ó&  a a	a
a€ Vf   \        R4      h\        V\        4      '       EdB   S P                  P	                  W4      pVRJd   \        R4      hS P
                  VJ d&   S P                  P                  \        4       4       R# S P                  P	                  V4      eE   S P                  P                  S P                  S P                  V,          4      4       VS n        R# S P                  V;;,          ^,          uu&    S P                  V4       VS P                  9   d5   S P                  P                  \        4       4       S P'                  V4       VS n        R# \        V\(        4      '       g   \        R
\!        V4       24      hS P                  oS P*                  o	V'       dƒ   S P
                  VJ d   SP                  \        4       4       R# S P                  P	                  V4      e;   SP                  S P                  S P                  V,          4      4       VS n        R# VP-                  4       '       d9   \        V\.        4      '       d#   \        RRV 2R. \"        P0                  OR	7       VP2                  ey   V'       dq   VP-                  4       '       d   \        V\4        4      '       gE   \        VP6                  \8        4      '       g   S P:                  '       d   S ! VP2                  4      # \        V\<        4      '       d–   VP-                  4       '       g€   S P                  V;;,          ^,          uu&   S P                  V4       V'       dF   VS P                  9   d5   S P                  P                  \        4       4       S P'                  V4       EM*VP?                  4       '       dP   \A        VPC                  4       4      '       d1   SP                  S PE                  VPC                  4       4      4       EMÅ\        V\F        4      '       d¡   S PI                  V4      o
S PK                  V 3R l4       S PM                  S	S
,          PN                  4       SP                  S PQ                  VPS                  S PT                  4      RR7      4       SPW                  \Y        ^R4      4       EM\        V\Z        4      '       d¨   VP]                  4       \^        J d�   S PT                  P`                  '       gt   S PI                  VPc                  S PT                  \d        Pf                  4      4      o
R V	V
VV 3R llpS PK                  V4       SPW                  \Y        ^ R4      4       EMR\        V\h        \Z        \j        \l        \n        34      '       Ed»   S PI                  V4      o
\        V\l        4      '       dU   S PK                  V 3R l4       S PM                  S	S
,          PN                  4       SPW                  \Y        ^R4      4       EM«\        V\j        4      '       dM   VPp                  '       d;   R V	V
VV 3R llpS PK                  V4       SPW                  \Y        ^ R4      4       EMI\        V\n        4      '       d¤    VPC                  4       p\s        \!        V4      4      '       dU   S PK                  V 3R l4       S PM                  S	S
,          PN                  4       SPW                  \Y        ^R4      4       EM´S PM                  S	S
,          PN                  4       EM�S PM                  S	S
,          PN                  4       EMl\        V\t        4      '       dÙ   VPv                  Py                  R4      pV^ ,          S Pz                  R,          9   d2   SP                  S P                  V^ ,          4      4       VR,          pMCS P|                  f   \        R4      hSP                  S P                  S P|                  4      4       V F#  pSP                  S P�                  V4      4       K%  	  M~S P                  V;;,          ^,          uu&    S P                  V4       V'       dF   VS P                  9   d5   S P                  P                  \        4       4       S P'                  V4       VS n        R#   \         d=    \        R\        T4      R\!        T4       RT R2. \"        P$                  OR	7        ELi ; i  \         d    Rp EL…i ; i  \         d;   p\        R\        T4      RT R2R.\"        P‚                  ORNTR7        Rp?LôRp?ii ; i)aí  
Generate code such that top-of-stack (TOS) is set to value.

`allow_cache` controls the behavior in the following manner. `value` can
either be a VariableTracker or a Source.

If `value` is a `Source`, `allow_cache` must be True (invariant asserted
below). If the source was reconstructed earlier, we will reuse the
generated code by loading from top of stack or tempvars.

If `value` is a `VariableTracker`, we have the following cases:

1) `allow_cache=True`
    a) If the value.source is not None, we will emit the code based on
    `value.source` to handle aliasing.
    b) If value.source is None (example reconstructing a local list
    returned by the compiled function), we will reconstruct the variable
    tracker (w/o any source) to emit bytecode that generates a new
    python object.

    In both cases of value.source being None or not, if the value was
    reconstructed earlier, we will reuse the generated code by loading from
    top of stack or tempvars.

2) `allow_cache=False` - This is a special case (allow_cache defaults to
True).
    a) If the value.source is not None, we reconstruct the variable
    tracker and emit a new python object. You might wonder what about
    aliasing? The place where we use this config also has the followup
    code where the original python object is assigned to this new python
    value to handle aliasing (check side_effects.py and search for
    allow_cache=False).

    b) If value.source is None, this is not allowed

Notable effects:
1. `self.top_of_stack` will be set to `value`, if we don't codegen
   `value` based on source.
2. `self.uses[value]` will increment, unless (a). we codegen via
    `top_of_stack` or cached `tempvars`, or (b). `value` has special VT
    types like `NNModuleVariable`, etc.
Nzvalue must not be NoneTz#allow_cache must be True for Sourcez:Reconstruction failure: source.reconstruct not implementedz6Dynamo has no bytecode reconstruction implemented for z
 variable Ú.)Úgb_typeÚcontextÚexplanationÚhintszexpected VariableTracker, got z%reconstructing @contextmanager objectzobject: zMReturning a @contextmanager object from a compiled function is not supported.c                  óD   <€ S P                  \        P                  R 4      # )Úto_subclass©Úload_import_fromr   r>   ©ra   s   €r9   Ú<lambda>Ú$PyCodegen.__call__.<locals>.<lambda>D  s   ø€ ˜×-Ñ-¬e¯n©n¸mÔLr<   ©ÚaddFc                ó   € V ^8„  d   QhRR/# ©r3   rN   Nr=   )r7   s   "r9   r:   Ú(PyCodegen.__call__.<locals>.__annotate__^  s   € ÷ =ñ =˜Dñ =r<   c                  óŒ   <€ SP                  S S,          P                  4       SP                  SP                  R 4      4       R# ©ÚitemN©Úload_graph_outputr4   rl   Úcreate_load_attr©rY   Úgraph_outputs_keyr[   ra   s   €€€€r9   r�   Ú"PyCodegen.__call__.<locals>.gen_fn^  s4   ø€ Ø×&Ñ& }Ð5FÕ'G×'MÑ'MÔNØ—‘˜d×3Ñ3°FÓ;Ö<r<   c                  óD   <€ S P                  \        P                  R 4      # )Úto_numpy_helperr¨   rª   s   €r9   r«   r¬   r  s   ø€ ˜D×1Ñ1´%·.±.ÐBSÔTr<   c                ó   € V ^8„  d   QhRR/# r°   r=   )r7   s   "r9   r:   r±   x  s   € ÷ Añ A ñ Ar<   c                  óŒ   <€ SP                  S S,          P                  4       SP                  SP                  R 4      4       R# r³   rµ   r¸   s   €€€€r9   r�   rº   x  s4   ø€ Ø×*Ñ*¨=Ð9JÕ+K×+QÑ+QÔRØ—M‘M $×"7Ñ"7¸Ó"?Ö@r<   c                  ó(   <€ S P                  R R4      # )z"torch._library.fake_class_registryÚmaybe_unwrap_fake_script_object)r©   rª   s   €r9   r«   r¬   †  s   ø€  × 5Ñ 5Ø@Ø=ô!r<   Úco_varnames:é   NNzself.root must not be NonezReconstruction failurezJDynamo has no bytecode reconstruction implemented for sourceless variable z®If Dynamo is attempting to trace a return statement and your code is attempting to return a variable that Dynamo cannot reconstruct, then remove it from the return statement.zžReport an issue to PyTorch if you need reconstrtuction support. Note that objects that don't have reconstruction rules may be fundamentally unreconstructable.)r¢   r£   r¤   r¥   Úfrom_exc)Br‹   rj   r   rM   ÚgetrV   rZ   rl   r   rL   Úcreate_loadrX   r�   ÚNotImplementedErrorr   rR   Útyper   Ú
DYNAMO_BUGÚ	add_cacher#   rY   Úis_realizedr$   ÚSUPPORTABLEÚsourcer%   Úmutation_typer"   r_   r&   Úis_python_constantr    Úas_python_constantr   r-   Úadd_graph_outputr   r¶   r4   Úcreate_load_globalÚglobal_mangled_class_namerI   rš   r   r*   Úpython_typeÚfloatÚexportÚ	as_tensorrO   Úfloat64r+   r,   r)   r(   Úneed_unwrapr	   r'   Ú
module_keyÚsplitr\   rJ   Úcreate_load_const_uncheckedr·   ÚCAUSED_BY_EARLIER_GRAPH_BREAK)ra   rˆ   rŸ   rÌ   r�   Úpy_valueÚpartsÚpartÚerY   r¹   r[   s   f&&      @@@r9   Ú__call__ÚPyCodegen.__call__®   s‰  û€ ðZ Š=Ü Ð!9Ó:Ð:Ü�eœV×$Ó$à×,Ñ,×0Ñ0°Ó>ˆFØ $Ó&Ü$Ð%JÓKÐKØ× Ñ  EÓ)Ø—‘×#Ñ#¤NÓ$4Ô5Ùà�}‰}× Ñ  Ó(Ò4Ø—‘×#Ñ# D×$4Ñ$4°T·]±]À6Õ5JÓ$KÔLØ$*�Ô!Ùà�I‰I�f× Õ"ÓðØ×%Ñ% fÔ-ð ˜Ÿ™Ô&Ø—‘×#Ñ#¤NÓ$4Ô5Ø—‘˜vÔ&Ø &ˆDÔáä˜%¤×1Ò1Ü Ð#AÄ$ÀuÃ+ÀÐ!OÓPÐPØ—‘ˆØ×*Ñ*ˆçØ× Ñ  EÓ)Ø—‘œnÓ.Ô/Ùà�}‰}× Ñ  Ó'Ò3Ø—‘˜d×.Ñ.¨t¯}©}¸UÕ/CÓDÔEØ$)�Ô!Ùà×Ñ×Ò¤:ØÔG÷$
ò $
ô Ø?Ø" 5 'Ð*ØkðÜ&×2Ñ2ðõ	ð �L‰LÒ$ßà×!Ñ!×#Ò#¬
°5Ô:V×(WÒ(Wô( ˜5×.Ñ.Ô0E×FÒFØ×)×)Ð)á˜EŸL™LÓ)Ð)ä�eÔ9×:Ò:À5×CTÑCT×CVÒCVà�I‰I�e× Õ!ÓØ×!Ñ! %Ô(ß˜u¨¯©Ô5Ø—‘×#Ñ#¤NÓ$4Ô5Ø—‘˜uÔ%ùØ×%Ñ%×'Ò'Ô,<Ø×$Ñ$Ó&÷-
ò -
ð �M‰M˜$×0Ñ0°×1IÑ1IÓ1KÓLÖMÜ˜Ô;×<Ò<Ø $× 5Ñ 5°eÓ <Ðà×ÑÜLôð ×"Ñ" =Ð1BÕ#C×#IÑ#IÔJØ�M‰MØ×'Ñ'Ø×3Ñ3°D·G±GÓ<Øð (ó ôð �M‰MÔ.¨q°%Ó8Ö9ä�uœo×.Ò.Ø×!Ñ!Ó#¤uÓ,Ø—G‘G—N—N�Nð !%× 5Ñ 5Ø—‘ §¡¬¯©Ó7ó!Ð÷=ó =ð ×Ñ˜vÔ&Ø�M‰MÔ.¨q°%Ó8Ö9ÜØäÜÜ+Ü$Ü)ð÷	
ó 	
ð !%× 5Ñ 5°eÓ <Ðä˜%Ô!5×6Ò6Ø×"Ñ"ÜTôð ×&Ñ& }Ð5FÕ'G×'MÑ'MÔNØ—‘Ô2°1°eÓ<Ö=Ü˜EÔ#>×?Ò?ÀE×DU×DUÐDU÷Aó Að ×"Ñ" 6Ô*Ø—‘Ô2°1°eÓ<Ö=Ü˜EÔ#<×=Ò=ð$Ø$×7Ñ7Ó9�Hô +¬4°«>×:Ò:Ø×&Ñ&ôôð ×*Ñ*¨=Ð9JÕ+K×+QÑ+QÔRØ—M‘MÔ"6°q¸%Ó"@ÖAà×*Ñ*¨=Ð9JÕ+K×+QÑ+QÖRà×&Ñ& }Ð5FÕ'G×'MÑ'MÖNÜ˜Ô/×0Ò0Ø×$Ñ$×*Ñ*¨3Ó/ˆEØ�Q�x˜4×,Ñ,¨]Õ;Ô;Ø—‘˜d×.Ñ.¨u°Q­xÓ8Ô9Ø˜b�	‘à—9‘9Ò$Ü(Ð)EÓFÐFØ—‘˜d×>Ñ>¸t¿y¹yÓIÔJÛ�Ø—‘˜d×3Ñ3°DÓ9Ö:ò ð �I‰I�e× Õ!ÓðØ×%Ñ% eÔ,÷ ˜u¨¯©Ô5Ø—‘×#Ñ#¤NÓ$4Ô5Ø—‘˜uÔ%à!ˆÖøôI 'ô ÜØXÜ ›KØ"XÔY]Ð^dÓYeÐXfÐfpÐqwÐpxÐxyÐ zØ9Ô-×8Ñ8Ð9÷	ð ðûôf +ô $Ø#“Hð$ûô> 'ô ÜØ4Ü ›JØ"lÐmrÐlsÐstÐ uðdðô +×HÑHððWð	ð ÷ò ûðús=   Äc- Ú2d7 âe ã-Ad4ä3d4ä7eåeåfå0fæfc                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r3   rˆ   rN   )r#   r6   )r7   r8   s   "€r9   r:   rT   ´  s   ø€ ÷ !ñ !¡oð !¹#ñ !r<   c                ó°   € \        VP                  4       4      pW P                  9  d-   \        \	        V P                  4      V4      V P                  V&   V# rh   )ÚidÚas_proxyrY   r1   r–   )ra   rˆ   r¹   s   && r9   rÐ   ÚPyCodegen.add_graph_output´  sN   € Ü˜uŸ~™~Ó/Ó0ÐØ×$6Ñ$6Ô6Ü4DÜ�D×&Ñ&Ó'¨ó5ˆD×ÑÐ0Ñ1ð !Ð r<   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r3   r4   rN   N©r6   )r7   r8   s   "€r9   r:   rT   ¼  s   ø€ ÷ 3ñ 3¡sð 3¨tñ 3r<   c                ó"  € V P                   pV P                  f   \        R4      hVP                  V P	                  V P                  4      4       VP                  V P                  V4      4       VP                  V P                  4       4       R # )Nz!graph_output_var must not be None)rZ   rK   r‹   rl   rÅ   r   r   )ra   r4   r[   s   && r9   r¶   ÚPyCodegen.load_graph_output¼  sl   € Ø—‘ˆØ× Ñ Ò(Ü Ð!DÓEÐEØ�‰�d×&Ñ& t×'<Ñ'<Ó=Ô>Ø�‰�d×,Ñ,¨UÓ3Ô4Ø�‰�d×/Ñ/Ó1Ö2r<   c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r3   rˆ   rN   N)r#   r   )r7   r8   s   "€r9   r:   rT   Ä  s    ø€ ÷ 4ñ 4™±Õ7ð 4¸Dñ 4r<   c                ó–   € V P                  4       pW P                  V&   V P                  P                  V P	                  V4      4       R # rh   )r^   rL   rZ   rl   Úcreate_store)ra   rˆ   Úvars   && r9   rÉ   ÚPyCodegen.add_cacheÄ  s6   € Ø�l‰l‹nˆØ"�‰�eÑØ�‰×Ñ˜D×-Ñ-¨cÓ2Ö3r<   c                óD   <€ V ^8„  d   QhRS[ S[S[,          ,          RR/# )r3   ÚitemsrN   N)r   r#   r   )r7   r8   s   "€r9   r:   rT   É  s%   ø€ ÷ ñ ™X¡o¹Õ&>Õ?ð ÀDñ r<   c                ó(   € V F  pV ! V4       K  	  R # rh   r=   )ra   ró   Úis   && r9   ry   ÚPyCodegen.foreachÉ  s   € ÛˆAÙ�ŽGó r<   c                ó    <€ V ^8„  d   QhRS[ /# r�   ©r   )r7   r8   s   "€r9   r:   rT   Í  s   ø€ ÷ &ñ &¡kñ &r<   c                ó   € \        4       # rh   )r   rª   s   &r9   r   ÚPyCodegen.create_binary_subscrÍ  s   € Ü#Ó%Ð%r<   c                ó<   <€ V ^8„  d   QhRS[ RS[RS[S[,          /# )r3   Únamerˆ   rN   )rR   r   rt   r   )r7   r8   s   "€r9   r:   rT   Ð  s'   ø€ ÷ 9ñ 9©#ð 9±cð 9¹dÁ;Õ>Oñ 9r<   c                óú   € \         P                  ! RRV4      pV P                  P                  pW9   d1   \	        W1,          4      \	        V4      8w  d   \        RV: R24      hMW#V&   V P                  VRR7      .# )zStore value in a new globalz[^a-zA-Z0-9_]+Ú_z
f_globals[z*] already exists with a different identityTr­   )ÚreÚsubrI   Ú	f_globalsræ   r‹   rÑ   )ra   rü   rˆ   r  s   &&& r9   Úsetup_globally_cachedÚPyCodegen.setup_globally_cachedÐ  s~   € ä�vŠvÐ'¨¨dÓ3ˆØ—G‘G×%Ñ%ˆ	ØÔÜ�)•/Ó"¤b¨£iÔ/Ü$Ø  ¡Ð(RÐSóð ð 0ð
 $�d‰OØ×'Ñ'¨°$Ð'Ó7Ð8Ð8r<   c                ó   <€ V ^8„  d   QhRR/# r°   r=   )r7   r8   s   "€r9   r:   rT   Ý  s   ø€ ÷ !ñ !˜4ñ !r<   c                ó   € R V n         R # rh   )rV   rª   s   &r9   r™   ÚPyCodegen.clear_tosÝ  s
   € Ø ˆÖr<   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r3   ÚinstrN   Nrø   )r7   r8   s   "€r9   r:   rT   à  s   ø€ ÷ ñ ¡+ð °$ñ r<   c                ó¶   € \        V\        4      '       g   \        R \        V4       24      hV P                  P                  V4       V P                  4        R# )zexpected Instruction, got N)rj   r   r‹   rÇ   rZ   rl   r™   )ra   r  s   &&r9   Úappend_outputÚPyCodegen.append_outputà  sB   € Ü˜$¤×,Ò,Ü Ð#=¼dÀ4»j¸\Ð!JÓKÐKØ�‰×Ñ˜DÔ!Ø�‰Ör<   c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r3   ÚinstsrN   N©rt   r   )r7   r8   s   "€r9   r:   rT   æ  s    ø€ ÷ ñ ¡4©Õ#4ð ¸ñ r<   c                óæ   € \         ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       g   \        R4      hV P                  P                  V4       V P	                  4        R# )c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5irh   )rj   r   )Ú.0r„   s   & r9   Ú	<genexpr>Ú*PyCodegen.extend_output.<locals>.<genexpr>ç  s   é € Ð=±u°!”:˜a¤×-Ð-³uùs   ‚FTz3all elements of insts must be Instruction instancesN)Úallr‹   rZ   rš   r™   )ra   r  s   &&r9   Úextend_outputÚPyCodegen.extend_outputæ  sK   € ß‹sÑ=±uÓ=�s�sŠsÑ=±uÓ=×=Ò=Ü Ð!VÓWÐWØ�‰×Ñ˜EÔ"Ø�‰Ör<   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r�   r  )r7   r8   s   "€r9   r:   rT   ì  s   ø€ ÷ ñ ¡$¡{Õ"3ñ r<   c                ó   € V P                   # rh   )rZ   rª   s   &r9   Úget_instructionsÚPyCodegen.get_instructionsì  s   € Ø�|‰|Ðr<   c                ó>   <€ V ^8„  d   QhRS[ S[,          R,          /# r°   )rt   rR   )r7   r8   s   "€r9   r:   rT   ï  s   ø€ ÷ ñ ™D¡�I¨Õ,ñ r<   c                óJ   € \         P                  '       g   R # V P                  # rh   )r   ri   r`   rª   s   &r9   Ú
get_pycodeÚPyCodegen.get_pycodeï  s   € Ü×%×%Ð%ÙØ�|‰|Ðr<   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r3   rü   rN   ©rR   r   )r7   r8   s   "€r9   r:   rT   ô  s   ø€ ÷ <ñ <¡ð <©ñ <r<   c                óf   € WP                   R ,          9  d   \        V R24      h\        RVR7      # )rÁ   ú missingÚ	LOAD_FAST©Úargval©r\   r‹   r   ©ra   rü   s   &&r9   rÅ   ÚPyCodegen.create_loadô  s2   € Ø×(Ñ(¨Õ7Ô7Ü  D 6¨Ð!2Ó3Ð3Ü! +°dÔ;Ð;r<   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r   r!  )r7   r8   s   "€r9   r:   rT   ù  s   ø€ ÷ :ñ :©ð :±ñ :r<   c                ó’   € WP                  4       9  d   \        V: R 24      h\        P                  R8¼  d   RMRp\	        W!R7      # )ú not in cell_and_freevarsr$  ÚLOAD_CLOSUREr%  r“   )r]   r‹   r—   r˜   r   )ra   rü   Ú	inst_names   && r9   Úcreate_load_closureÚPyCodegen.create_load_closureù  sC   € Ø×-Ñ-Ó/Ô/Ü  D¡8Ð+DÐ!EÓFÐFÜ#&×#3Ñ#3°wÔ#>‘KÀNˆ	Ü! )Ô9Ð9r<   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r   r!  )r7   r8   s   "€r9   r:   rT   ÿ  ó   ø€ ÷ =ñ =¡cð =©kñ =r<   c                ób   € WP                  4       9  d   \        V: R 24      h\        RVR7      # )r,  Ú
LOAD_DEREFr%  ©r]   r‹   r   r(  s   &&r9   Úcreate_load_derefÚPyCodegen.create_load_derefÿ  s1   € Ø×-Ñ-Ó/Ô/Ü  D¡8Ð+DÐ!EÓFÐFÜ! ,°tÔ<Ð<r<   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r   r!  )r7   r8   s   "€r9   r:   rT     s   ø€ ÷ =ñ =¡ð =©ñ =r<   c                óf   € WP                   R ,          9  d   \        V R24      h\        RVR7      # )rÁ   r#  Ú
STORE_FASTr%  r'  r(  s   &&r9   rï   ÚPyCodegen.create_store  s2   € Ø×(Ñ(¨Õ7Ô7Ü  D 6¨Ð!2Ó3Ð3Ü! ,°tÔ<Ð<r<   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r   r!  )r7   r8   s   "€r9   r:   rT   	  s   ø€ ÷ >ñ >¡sð >©{ñ >r<   c                ób   € WP                  4       9  d   \        V: R 24      h\        RVR7      # )r,  ÚSTORE_DEREFr%  r5  r(  s   &&r9   Úcreate_store_derefÚPyCodegen.create_store_deref	  s1   € Ø×-Ñ-Ó/Ô/Ü  D¡8Ð+DÐ!EÓFÐFÜ! -¸Ô=Ð=r<   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r3   rü   r®   rN   )rR   ru   r   )r7   r8   s   "€r9   r:   rT     s"   ø€ ÷ >ñ >¡sð >±ð >Á+ñ >r<   c                óÀ   € V'       d&   V P                   P                  P                  V4       WP                  R ,          9  d   \	        V R24      h\        RVR7      # )Úco_namesz not in co_namesÚLOAD_GLOBALr%  )rI   r[   Úupdate_co_namesr\   r‹   r   )ra   rü   r®   s   &&&r9   rÑ   ÚPyCodegen.create_load_global  sL   € ßØ�G‰G�N‰N×*Ñ*¨4Ô0Ø×(Ñ(¨Õ4Ô4Ü  D 6Ð)9Ð!:Ó;Ð;Ü! -¸Ô=Ð=r<   c                ó&   <€ V ^8„  d   QhRS[ RS[/# rä   ©r   r   )r7   r8   s   "€r9   r:   rT     s   ø€ ÷ (ñ (¡sð (©{ñ (r<   c                ó   € \        V4      # rh   ©r   ©ra   rˆ   s   &&r9   r   ÚPyCodegen.create_load_const  s   € Ü  Ó'Ð'r<   c                ó&   <€ V ^8„  d   QhRS[ RS[/# rä   rH  )r7   r8   s   "€r9   r:   rT     s   ø€ ÷ 7ñ 7±ð 7¹ñ 7r<   c                ó   € \        VR R7      # )F)ÚcheckedrJ  rK  s   &&r9   rÛ   Ú%PyCodegen.create_load_const_unchecked  s   € Ü  °Ô6Ð6r<   c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r3   rü   rN   Nrf   )r7   r8   s   "€r9   r:   rT     s   ø€ ÷ 5ñ 5¡ð 5¨ñ 5r<   c                ó„   € V P                   P                  P                  V4       V P                  \	        V4      4       R # rh   )rI   r[   rE  r
  r   r(  s   &&r9   Úload_methodÚPyCodegen.load_method  s,   € Ø�‰�‰×&Ñ& tÔ,Ø×ÑÔ-¨dÓ3Ö4r<   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r3   ÚnargsrN   Nrê   )r7   r8   s   "€r9   r:   rT     s   ø€ ÷ 6ñ 6¡ð 6¨ñ 6r<   c                ó:   € V P                  \        V4      4       R # rh   )r  r   )ra   rW  s   &&r9   Úcall_methodÚPyCodegen.call_method  s   € Ø×ÑÔ-¨eÓ4Ö5r<   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r�   r  )r7   r8   s   "€r9   r:   rT   "  s   ø€ ÷ 
ñ 
¡D©Õ$5ñ 
r<   c                ó6   € \        R ^R7      \        R^R7      .# )Ú
BUILD_LIST©ÚargÚLIST_EXTEND©r   rª   s   &r9   Úcreate_list_appendÚPyCodegen.create_list_append"  s"   € ô ˜|°Ô3Ü˜}°!Ô4ð
ð 	
r<   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r   r!  )r7   r8   s   "€r9   r:   rT   /  s   ø€ ÷ <ñ <¡Sð <©[ñ <r<   c                óŠ   € WP                   R ,          9  d!   V P                   R ;;,          V3,          uu&   \        RVR7      # )rC  Ú	LOAD_ATTRr%  ©r\   r   r(  s   &&r9   r·   ÚPyCodegen.create_load_attr/  s8   € Ø×(Ñ(¨Õ4Ô4Ø×Ñ˜j×)¨d¨WÕ4Ó)Ü! +°dÔ;Ð;r<   c                ó$   <€ V ^8„  d   QhRS[ RR/# rR  rf   )r7   r8   s   "€r9   r:   rT   4  s   ø€ ÷ 8ñ 8™cð 8 dñ 8r<   c                óF   € V P                  V P                  V4      4       R # rh   )r
  r·   r(  s   &&r9   Ú	load_attrÚPyCodegen.load_attr4  s   € Ø×Ñ˜4×0Ñ0°Ó6Ö7r<   c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# )r3   ÚnamesrN   )rR   rt   r   )r7   r8   s   "€r9   r:   rT   7  s$   ø€ ÷ Jñ J¡sð J©t±KÕ/@ñ Jr<   c                ój   € VP                  R 4       Uu. uF  q P                  V4      NK  	  up# u upi )r¡   )rÚ   r·   )ra   rn  rü   s   && r9   Úcreate_load_attrsÚPyCodegen.create_load_attrs7  s.   € Ø8=¿¹ÀCÔ8HÓIÑ8H°×%Ñ% dÖ+Ñ8HÑIÐIùÒIs   ”0c                ó&   <€ V ^8„  d   QhRS[ RS[/# r   r!  )r7   r8   s   "€r9   r:   rT   :  r2  r<   c                óŠ   € WP                   R ,          9  d!   V P                   R ;;,          V3,          uu&   \        RVR7      # )rC  Ú
STORE_ATTRr%  rg  r(  s   &&r9   Úcreate_store_attrÚPyCodegen.create_store_attr:  s8   € Ø×(Ñ(¨Õ4Ô4Ø×Ñ˜j×)¨d¨WÕ4Ó)Ü! ,°tÔ<Ð<r<   c                ó$   <€ V ^8„  d   QhRS[ RR/# rR  rf   )r7   r8   s   "€r9   r:   rT   ?  s   ø€ ÷ 9ñ 9™sð 9 tñ 9r<   c                óF   € V P                  V P                  V4      4       R # rh   )r
  ru  r(  s   &&r9   Ú
store_attrÚPyCodegen.store_attr?  s   € Ø×Ñ˜4×1Ñ1°$Ó7Ö8r<   c          	      óB   <€ V ^8„  d   QhRS[ RS[RS[RS[S[,          /# )r3   Úfn_nameÚ	push_nullÚnum_on_stackrN   )rR   ru   r6   rt   r   )r7   r8   s   "€r9   r:   rT   B  s2   ø€ ÷ ñ ÙðÙ'+ðÙ;>ðá	‰kÕ	ñr<   c           	     ó¤  € . pV'       d‹   \         P                  R8¼  dv   VP                  \        V P	                  VRR7      4      4       V^ 8”  dB   VP                  . V P                  V^,           4      OV P                  V^,           4      O4       V# VP                  V P	                  VRR7      .V P                  V^,           4      O4       V# )z6Load the global fn_name on the stack num_on_stack downTr­   ©r”   é   )r—   r˜   rš   r   rÑ   Úrot_n)ra   r|  r}  r~  r[   s   &&&& r9   Úload_function_nameÚPyCodegen.load_function_nameB  sÉ   € ð ˆßœ×)Ñ)¨WÔ4Ø�M‰Mœ-¨×(?Ñ(?ÀÈTÐ(?Ó(RÓSÔTØ˜aÔØ—‘ðØŸ™ L°1Õ$4Ó5ðàŸ™ L°1Õ$4Ó5ðôð ˆð �M‰Mà×+Ñ+¨G¸Ð+Ó>ðà—Z‘Z ¨qÕ 0Ó1ðôð ˆr<   c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# )r3   ÚnrN   )r6   rt   r   )r7   r8   s   "€r9   r:   rT   Y  s    ø€ ÷ ñ ‘sð ™t¡KÕ0ñ r<   c                óÎ   €  \        V4      #   \         dM    \        T4      T P                  \	        T4      4      .\        ^4      O\        RR4      O\        RTR7      Nu # i ; i)r3   FÚUNPACK_SEQUENCEr^  )r   ÚAttributeErrorr   rÛ   r!   r   r   )ra   r†  s   &&r9   r‚  ÚPyCodegen.rot_nY  sw   € ð
	Ü “?Ð"øÜô 	ô # 1Ó%Ø×0Ñ0´¸a³ÓAðô ˜a“ðô )¨°Ó6ð	ô
 #Ð#4¸!Ô<ðò ð	ús   ‚
 �AA$Á#A$c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r�   r  )r7   r8   s   "€r9   r:   rT   f  s   ø€ ÷ 
ñ 
™$™{Õ+ñ 
r<   c                óà   € \         P                  R8  d   \        R4      hV P                  R 4      .\         P                  R8¼  d   \	        R^R7      3MR	O\        ^ R4      O\	        R4      N# )
r”   zpop_null requires Python 3.11+c                  ó   € R # rh   r=   r=   r<   r9   r«   Ú$PyCodegen.pop_null.<locals>.<lambda>l  s   € ±Tr<   ÚSWAPr^  FÚPOP_TOPr€  r“   r=   )r—   r˜   r‹   rÛ   r   r   rª   s   &r9   Úpop_nullÚPyCodegen.pop_nullf  s}   € ô ×Ñ˜gÔ%Ü Ð!AÓBÐBà×,Ñ,©\Ó:ð

ô
 ×#Ñ# wÔ.ô $ F°Ô2Ñ4àð

ô " ! UÓ+ð

ô ˜yÓ)ð

ð 
	
r<   c                ó   <€ V ^8„  d   QhRR/# r°   r=   )r7   r8   s   "€r9   r:   rT   w  s   ø€ ÷ :ñ :˜ñ :r<   c                ó:   € V P                  \        R 4      4       R# )r�  N)r
  r   rª   s   &r9   Úpop_topÚPyCodegen.pop_topw  s   € Ø×ÑÔ-¨iÓ8Ö9r<   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r3   rW  r}  rN   N)r6   ru   )r7   r8   s   "€r9   r:   rT   z  s'   ø€ ÷ Mñ M¡3ð M±4ð M¸Dñ Mr<   c                ó<   € V P                  \        WR 7      4       R# ))r}  N)r  r   )ra   rW  r}  s   &&&r9   Úcall_functionÚPyCodegen.call_functionz  s   € Ø×ÑÔ/°ÔKÖLr<   c                ó   <€ V ^8„  d   QhRR/# r°   r=   )r7   r8   s   "€r9   r:   rT   }  s   ø€ ÷ -ñ -˜ñ -r<   c                ó8   € V P                  \        4       4       R # rh   )r
  r   rª   s   &r9   Údup_topÚPyCodegen.dup_top}  s   € Ø×Ñœ>Ó+Ö,r<   c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r3   ÚvarnamerN   Nrf   )r7   r8   s   "€r9   r:   rT   €  s   ø€ ÷ 7ñ 7™Sð 7 Tñ 7r<   c                óF   € V P                  V P                  V4      4       R # rh   )r
  rï   ©ra   r¡  s   &&r9   ÚstoreÚPyCodegen.store€  s   € Ø×Ñ˜4×,Ñ,¨WÓ5Ö6r<   c                ó$   <€ V ^8„  d   QhRS[ RR/# r   rf   )r7   r8   s   "€r9   r:   rT   ƒ  s   ø€ ÷ <ñ <¡#ð <¨$ñ <r<   c                óF   € V P                  V P                  V4      4       R # rh   )r
  r6  r£  s   &&r9   Ú
load_derefÚPyCodegen.load_derefƒ  s   € Ø×Ñ˜4×1Ñ1°'Ó:Ö;r<   c                ó>   <€ V ^8„  d   QhRS[ RS[P                  RR/# )r3   r|  ÚcoderN   N)rR   ÚtypesÚCodeType)r7   r8   s   "€r9   r:   rT   †  s-   ø€ ÷ ñ áðñ �n‰nðð 
ñ	r<   c                óš  € V P                   pVP                  V P                  V4      4       \        P                  R8  d!   VP                  V P                  V4      4       \        P                  R8¼  d)   VP                  \        R4      \        R^R7      .4       MVP                  \        R^R7      4       V P                  4        R# )a#  Creates a closure with code object `code`.

Expects the TOS to be the tuple of cells to use for this closure.
TOS will be popped to create the closure.
Args:
    - fn_name: name of the function
    - code: code object of the function
        (does not include the tuple of cells on the TOS)
ÚMAKE_FUNCTIONÚSET_FUNCTION_ATTRIBUTEr^  Nr€  r“   )rZ   rl   r   r—   r˜   rš   r   r™   )ra   r|  r«  r[   s   &&& r9   Úmake_function_with_closureÚ$PyCodegen.make_function_with_closure†  s›   € ð —‘ˆà�‰�d×,Ñ,¨TÓ2Ô3Ü×Ñ˜gÔ%Ø�M‰M˜$×0Ñ0°Ó9Ô:Ü×Ñ˜wÔ&Ø�M‰Mä& Ó7Ü&Ð'?ÀTÔJðõð �M‰MÔ,¨_À$ÔGÔHà�‰Ör<   c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# )r3   ÚmodrN   )r¬  Ú
ModuleTyper   )r7   r8   s   "€r9   r:   rT   ¥  s!   ø€ ÷ >ñ >©U×-=Ñ-=ð >Á+ñ >r<   c                óV  € V P                   P                  pVP                  p\        P                  ! RRVP
                  4      pVP                  VR4      VJ d   V P                  VRR7      # RV 2pV P                   P                  P                  WQ4      pV P                  VRR7      # )zD
Generate a LOAD_GLOBAL instruction to fetch a given python module.
z^.*[.]Ú NTr­   Ú
___module_)	rI   r[   Úglobal_scoperÿ   r   r>   rÄ   rÑ   Úinstall_global_by_id)ra   r´  r[   r¹  rü   ÚprefixÚglobal_names   &&     r9   Úcreate_load_python_moduleÚ#PyCodegen.create_load_python_module¥  s—   € ð —‘—‘ˆØ×*Ñ*ˆÜ�vŠv�i  S§\¡\Ó2ˆØ×Ñ˜D $Ó'¨3Ó.Ø×*Ñ*¨4°TÐ*Ó:Ð:Ø˜d˜VÐ$ˆØ—g‘g—n‘n×9Ñ9¸&ÓFˆØ×&Ñ& {¸Ð&Ó=Ð=r<   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r3   rÌ   rN   N)r   )r7   r8   s   "€r9   r:   rT   ²  s   ø€ ÷ )ñ )¡vð )°$ñ )r<   c                óH   € WP                   9  d   RV P                   V&   R# R# )z=
Mark a source as a temp variable, so that it can be reused.
N)rL   )ra   rÌ   s   &&r9   Úmark_source_tempÚPyCodegen.mark_source_temp²  s!   € ð Ÿ™Ô&Ø$(ˆD�M‰M˜&Ó!ñ 'r<   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r3   r|  rN   Nrf   )r7   r8   s   "€r9   r:   rT   ¹  s   ø€ ÷ T
ñ T
±ð T
¸ñ T
r<   c                óB  a a	€ S P                  S P                  VR4      4       S P                  P                  P                  pR R lo	R V	3R llpT! \        V Uu. uF  qDP                  f   K  VP                  NK   	  up4      S 4       Rp\        P                  '       dR   S P                  V 3R l4       S P                  \        ^ R4      4       S P                  4       pS P                  V4       . p\        V4       FÁ  w  rtS P                  P                  R	4      pVP                  V4       VP                   '       dY   S P                  V 3R
 l4       S P#                  V4       S P                  \        ^R4      4       S P%                  V R2V4       K›  S P#                  V4       S P%                  V R2V4       KÃ  	  \        P                  '       dq   S P                  V 3R l4       Vf   \'        R4      hS P                  S P)                  V4      .4       S P                  \        ^R4      4       S P+                  4        S P                  \        \-        V4      R4      4       S P%                  RV RRP/                  V4       R24       R# u upi )z2Call the generated code function stored in fn_nameTc                óF   € V ^8„  d   QhR\         R\        \         ,          /# )r3   rÌ   rN   )r   rt   )r7   s   "r9   r:   Ú8PyCodegen.make_call_generated_code.<locals>.__annotate__¿  s   € ÷ 	"ñ 	"¬6ð 	"´d¼6µlñ 	"r<   c                 ó  € . p\        V \        4      '       d   VP                  V P                  4       \        V \        4      '       d<   \        V P
                  \        4      '       d   VP                  V P
                  4       V# rh   )rj   r   rl   Úbaser   r4   r   )rÌ   Únested_sourcess   & r9   Úextract_nested_sourcesÚBPyCodegen.make_call_generated_code.<locals>.extract_nested_sources¿  sc   € Ø+-ˆNÜ˜&¤-×0Ò0Ø×%Ñ% f§k¡kÔ2Ü˜&Ô"3×4Ò4¼Ø—‘œf÷:ò :ð ×%Ñ% f§l¡lÔ3Ø!Ð!r<   c                óJ   € V ^8„  d   QhR\         \        ,          R\        RR/# )r3   ÚsourcesÚcodegenrN   N)r   r   rG   )r7   s   "r9   r:   rÆ  É  s+   € ÷ 	Gñ 	G¬%´­-ð 	GÄ)ð 	GÐPTñ 	Gr<   c                 óÒ   <€ \        4       pV '       dT   V P                  4       pW29   d   VP                  V4       K1  VP                  V4       V P	                  S! V4      4       K[  R # rh   )r
   ÚpopleftrÁ  r®   rš   )rÍ  rÎ  Úseen_sourcesÚcurrent_sourcerÊ  s   &&  €r9   Úcollect_temp_sourcesÚ@PyCodegen.make_call_generated_code.<locals>.collect_temp_sourcesÉ  sW   ø€ Ü/9«|ˆLßØ!(§¡Ó!2�Ø!Ô1à×,Ñ,¨^Ô<ñ Ø× Ñ  Ô0Ø—‘Ñ5°nÓEÖFñ r<   Nc                  óD   <€ S P                  \        P                  R 4      # )Úrecord_pregraph_bytecode_enterr¨   rª   s   €r9   r«   Ú4PyCodegen.make_call_generated_code.<locals>.<lambda>á  s   ø€ ˜×-Ñ-Ü—N‘NÐ$Dôr<   Fr_  c                  ón   <€ S P                  S P                  \        4      S P                  R 4      .4      # )Ú_as_tensor_fullprec)r  r½  rO   r·   rª   s   €r9   r«   r×  ï  s2   ø€ ˜D×.Ñ.à ×:Ñ:¼5ÓAØ ×1Ñ1Ð2GÓHðôr<   z  = torch._as_tensor_fullprec({})rx   c                  óD   <€ S P                  \        P                  R 4      # )Úrecord_pregraph_bytecode_exitr¨   rª   s   €r9   r«   r×     s   ø€ ˜×-Ñ-Ü—N‘NÐ$Côr<   zcm_var must not be Nonez__graph_out = Ú(z, Ú))r  rƒ  rI   r[   Ú	graphargsr   rÌ   r   Úrecord_runtime_overheadr   r   r^   r¤  Ú	enumerater{   rl   Úpass_arg_as_tensorr�   rp   r‹   rÅ   r•  r–   Újoin)
ra   r|  rÞ  rÓ  r_  Úcm_varÚarg_varnamesrõ   Úarg_varnamerÊ  s
   f&       @r9   Úmake_call_generated_codeÚ"PyCodegen.make_call_generated_code¹  s4  ù€ à×Ñ˜4×2Ñ2°7¸DÓAÔBà—G‘G—N‘N×,Ñ,ˆ	õ	"÷	Gð 	Gñ  	Ü©ÓM© #·j±j”:�3—:”:©ÑMÓNÐPTô	
ð ˆÜ×)×)Ð)à×Ñôôð
 ×ÑÔ3°A°uÓ=Ô>Ø—\‘\“^ˆFØ�J‰J�vÔàˆÜ 	Ö*‰FˆAØŸ'™'×4Ñ4°UÓ;ˆKØ×Ñ Ô,Ø×%×%Ð%Ø×"Ñ"ôôð ×%Ñ% cÔ*Ø×"Ñ"Ô#7¸¸5Ó#AÔBØ—‘ ; -Ð/QÐ RÐTWÖXà×%Ñ% cÔ*Ø—‘ ; -¨wÐ 7¸Ö=ñ# +ô& ×)×)Ð)à×Ñôôð
 Š~Ü$Ð%>Ó?Ð?Ø×Ñ × 0Ñ 0°Ó 8Ð9Ô:Ø×ÑÔ3°A°uÓ=Ô>Ø�L‰LŒNà×ÑÔ/´°I³ÀÓFÔGØ�‰Ø˜W˜I Q t§y¡y°Ó'>Ð&?¸qÐAö	
ùòc Ns   ÁJÁ2Jc                ó&   <€ V ^8„  d   QhRS[ RS[/# )r3   Úmodule_namerN   r!  )r7   r8   s   "€r9   r:   rT     s   ø€ ÷ Eñ E©cð E±kñ Er<   c                ó   € \        R VR7      # )ÚIMPORT_NAMEr%  ra  )ra   ré  s   &&r9   Úcreate_import_nameÚPyCodegen.create_import_name  s   € Ü! -¸ÔDÐDr<   c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r3   ré  Úobject_namerN   Nrf   )r7   r8   s   "€r9   r:   rT     s"   ø€ ÷ ñ ©Cð ¹cð Àdñ r<   c                ó‚   € \        V P                  P                  V4      V4      pV P                  V4       V ! V4       R # rh   )r   rI   Úimport_sourcerÁ  )ra   ré  rï  rÌ   s   &&& r9   r©   ÚPyCodegen.load_import_from  s4   € Ü˜DŸG™G×1Ñ1°+Ó>ÀÓLˆð
 	×Ñ˜fÔ%ÙˆVŽr<   c          	      óR   <€ V ^8„  d   QhRS[ RS[S[,          RS[RS[S[,          /# )r3   rW  Úkw_namesr}  rN   )r6   r   rR   ru   rt   r   )r7   r8   s   "€r9   r:   rT     s6   ø€ ÷ 
ñ 
Ùð
Ù$,©S¥Mð
Ù>Bð
á	‰kÕ	ñ
r<   c           	     ó„  € \         P                  R8¼  dv   \        W4      pVR,          P                  R8w  d    \	        RVR,          P                   24      hVP                  RV P                  V4      4       \        RVR7      VR&   V# \         P                  R8¼  d…   \        W4      p\         P                  R8¼  d   RpRpMRpRpWE,          P                  V8w  d%   \	        RV RV RWE,          P                   24      h\        R	VR
7      pVP                  WW4       V# V P                  V4      \        RVR7      .# )r”   ÚCALLz*expected last instruction to be CALL, got ÚCALL_KWr^  ÚPRECALLzexpected instruction at index z to be z, got ÚKW_NAMESr%  ÚCALL_FUNCTION_KWr“   éÿÿÿÿr€  )r”   é   éþÿÿÿ)r—   r˜   r   Úopnamer‹   Úinsertr   r   )ra   rW  rô  r}  r[   ÚidxÚexpected_instÚkw_names_insts   &&&&    r9   Úcreate_call_function_kwÚ!PyCodegen.create_call_function_kw  s?  € ô ×Ñ˜wÔ&Ü)¨%Ó;ˆFØ�b�z× Ñ  FÔ*Ü$Ø@ÀÈÅ×ARÑARÐ@SÐTóð ð �M‰M˜"˜d×4Ñ4°XÓ>Ô?Ü+¨I¸5ÔAˆF�2‰JØˆMÜ×Ñ Ô(Ü)¨%Ó;ˆFÜ×Ñ 7Ô*Ø�Ø &‘à�Ø )�Ø�{×!Ñ! ]Ô2Ü$Ø4°S°E¸ÀÀð PØ!�;×-Ñ-Ð.ð0óð ô /¨zÀ(ÔKˆMØ�M‰M˜#Ô-ØˆMà×"Ñ" 8Ó,ÜÐ1°uÔ=ð
ð 	
r<   c                ó&   <€ V ^8„  d   QhRS[ RS[/# rä   )Úobjectr   )r7   r8   s   "€r9   r:   rT   <  s   ø€ ÷ ?ñ ?¡6ð ?©kñ ?r<   c                ó   € \        R VR7      # )ÚDELETE_FASTr%  ra  rK  s   &&r9   Úcreate_deleteÚPyCodegen.create_delete<  s   € Ü! -¸Ô>Ð>r<   )rZ   r]   r\   rK   rY   r^   rM   r`   rJ   rL   rV   rI   rX   r_   )NNNN)F)T)é    )9r>   r?   r@   rA   Ú__doc__rb   rp   r~   r…   r�   r   rá   rÐ   r¶   rÉ   ry   r   r  r™   r
  r  r  r  rÅ   r/  r6  rï   r?  rÑ   r   rÛ   rT  rY  rb  r·   rk  rp  ru  ry  rƒ  r‚  r‘  r•  r™  r�  r¤  r¨  r±  r½  rÁ  ræ  rì  r©   r  r	  rC   rD   rE   s   @r9   rG   rG   J   s  ø‡ € ñ÷ò ÷<Xð Xð*ØDH÷*ò *÷ Að A÷?ð ?÷ò ÷>D"ò D"÷L!ð !÷3ð 3÷4ð 4÷
ð ÷&ð &÷9ð 9÷!ð !÷ð ÷ð ÷ð ÷ð ÷
<ð <÷
:ð :÷=ð =÷
=ð =÷
>ð >÷
>ò >÷(ð (÷7ð 7÷5ð 5÷6ð 6÷
ð 
÷<ð <÷
8ð 8÷Jð J÷=ð =÷
9ð 9÷ò ÷.ð ÷
ð 
÷":ð :÷Mð M÷-ð -÷7ð 7÷<ð <÷ð ÷>>ð >÷)ð )÷T
ð T
÷lEð E÷ð ÷
ð 
÷B?ö ?r<   rG   )Jr  rW   Údataclassesrÿ   r—   r¬  r   r   Úcollections.abcr   r   Útypingr   r   r   Útorch.nnrO   Útorch._library.opaque_objectr	   Útorch.utils._ordered_setr
   r·  r   r   r   Úbytecode_transformationr   r   r   r   r   r   r   r   r   r   r   r   r   Úexcr   rÌ   r   r   r   r   r    r!   Úvariables.baser"   r#   Úvariables.functionsr$   r%   Úvariables.lazyr&   Úvariables.nn_moduler'   Úvariables.script_objectr(   Úvariables.tensorr)   r*   r+   r,   Úvariables.torch_functionr-   Útorch._dynamo.variables.builderr.   Úsymbolic_convertr/   Ú	dataclassr1   rG   r=   r<   r9   Ú<module>r     s±   ðñ
ó Û Û 	Û 
Û ß &ß .ß ,Ñ ,ã Ý @Ý /ç .Ñ .÷÷ ÷ õ õ ß HÓ Hß 1ß B÷õ 9Ý 1Ý >÷ó õ C÷ Ý8å;ð ×Ñ÷ð ó ð÷
s?ó s?r<   