§
    ŠŠtjq³ ã                   ó8  — U d Z ddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlmZmZ ddlmZmZ ddlmZmZmZmZmZmZ ddlmZ ddlmZ ddl Z ddl!m"Z" dd	l#m$Z$ dd
l%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI ddlJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZU ddlVmWZWmXZXmYZYmZZZ ddl[m\Z\ ddl]m^Z^ 	 ddl_m`Z` n# ea$ r dZ`Y nw xY wer2ddlbmcZc ddldmeZemfZfmgZg ddlhmiZi ddljmkZkmlZl ddlmmnZn ddlompZpmqZq ddlrmsZs  ededef         ¬ ¦  «        Ztd!Zud"Zv ewh d#£¦  «        Zx ewd$h¦  «        Zyd%Zz e¦   «         Z{eeef         e|d&<    G d'„ d(e}¦  «        Z~ej        d)e@fd*„¦   «         Z€ G d+„ d,¦  «        Z�d-ed)e�fd.„Z‚d-ed/d0d1e$dz  d2ee         d3eƒe„ef         d)eƒe„eZf         fd4„Z…	 d£d/d0d5ed6e$dz  d)eZfd7„Z†d/d0d8eƒe„ef         d)dfd9„Z‡d:d0d8eƒe„eZf         d;ejˆ        d)dfd<„Z‰d;ejˆ        d=eƒe„ef         d>e„d?eŠe‹df         dz  d@eŠe         dz  dAeƒe„ef         dz  dBeƒe„ef         dz  d)ej        fdC„ZŒh dD£Z�d/d0dEe‹d6e$dz  d>e„d)eZf
dF„ZŽ G dG„ dHeZ¦  «        Z� G dI„ dJe�¦  «        Z� G dK„ dLe�¦  «        Z‘ G dM„ dNe�¦  «        Z’ G dO„ dPeZ¦  «        Z“ G dQ„ dRe“¦  «        Z” G dS„ dTe�¦  «        Z• G dU„ dVe•¦  «        Z– G dW„ dXe�¦  «        Z— G dY„ dZe—¦  «        Z˜ G d[„ d\e�¦  «        Z™d/d0dEedef         d>e„d2ešeZ         d3eƒe„eZf         d)eZfd]„Z› G d^„ d_e�¦  «        Zœ G d`„ daeœ¦  «        Z�ejž        ejŸ        ej         ej¡        ej¢        ej£        ej¤        ej¥        ej¦        h	Z§ G db„ dceZ¦  «        Z¨ G dd„ dee¨¦  «        Z© G df„ dge�¦  «        Zª G dh„ dieª¦  «        Z«d)eƒeef         fdj„Z¬d/d0dEedef         d)e@fdk„Z­ G dl„ dme�¦  «        Z® G dn„ doe�¦  «        Z¯ G dp„ dqeZ¦  «        Z° G dr„ dseZ¦  «        Z± G dt„ dueZ¦  «        Z²ddvljm³Z³m´Z´mµZµm¶Z¶  G dw„ dxe¶¦  «        Z· e·¦   «         Z¸ G dy„ dzeZ¦  «        Z¹ G d{„ d|eZ¦  «        Zº G d}„ d~eZ¦  «        Z» G d„ d€eZ¦  «        Z¼ G d�„ d‚eZ¦  «        Z½ G dƒ„ d„e�¦  «        Z¾ G d…„ d†e�¦  «        Z¿ G d‡„ dˆe¨¦  «        ZÀd/d0d‰eg df         d>e„d)dfdŠ„ZÁ G d‹„ dŒeZ¦  «        ZÂ G d�„ dŽeZ¦  «        ZÃ G d�„ d�eZ¦  «        ZÄ G d‘„ d’eZ¦  «        ZÅ G d“„ d”eZ¦  «        ZÆ G d•„ d–eZ¦  «        ZÇ G d—„ d˜eZ¦  «        ZÈ G d™„ dšeZ¦  «        ZÉ G d›„ dœeZ¦  «        ZÊ G d�„ džeZ¦  «        ZË G dŸ„ d eZ¦  «        ZÌ G d¡„ d¢eZ¦  «        ZÍdS )¤aŽ  
Function-related variable tracking classes for Dynamo's symbolic execution.

This module contains classes that track different types of functions during graph
compilation, including:
- User-defined functions and methods
- Built-in functions and methods
- Wrapped functions (e.g. from decorators)
- Special function types (e.g. functools.partial)
- Triton kernels and related function types

These classes are responsible for:
- Tracking function calls and their arguments
- Managing function closures and cell variables
- Handling function attributes and special methods
- Maintaining guards for function identity and closure contents
- Supporting function inlining and specialization
- Enabling proper symbolic execution of different function types

The variable trackers here work together with the rest of Dynamo to enable
accurate graph capture while handling Python's various function-related behaviors.
é    N)ÚCallableÚSequence)ÚCellTypeÚFunctionType)ÚAnyÚcastÚLiteralÚOptionalÚTYPE_CHECKINGÚTypeVar)ÚNever)ÚWeakKeyDictionary)Úget_stack_above_dynamo)ÚSource)Úis_namedtuple_classé   )ÚconfigÚgraph_break_hintsÚ	polyfillsÚ	variables)Úcreate_call_functionÚcreate_rot_nÚis_generator)Úformat_frame_infoÚget_dynamo_observed_exceptionÚInfiniteGeneratorErrorÚObservedExceptionÚObservedGeneratorExitÚObservedUserStopIterationÚraise_observed_exceptionÚraise_type_errorÚStepUnsupportedÚunimplementedÚUnsupported)ÚGuardBuilderÚinstall_guard)
Ú
AttrSourceÚCellContentsSourceÚClosureSourceÚConstantSourceÚDefaultsSourceÚGetItemSourceÚImportSourceÚSkipGuardSourceÚTypeMROSourceÚ
TypeSource)Úcheck_constant_argsÚcheck_unspec_or_constant_argsÚcmp_name_to_op_mappingÚidentityÚis_functionÚ2is_lru_cache_wrapper_trace_without_warning_allowedÚis_tensor_base_attr_getterÚis_wrapper_or_member_descriptorÚistypeÚ	make_cellÚunpack_iterableé   )Ú#AsPythonConstantNotImplementedErrorÚAttributeMutationNewÚValueMutationNewÚVariableTracker©ÚConstantVariable)ÚUserDefinedObjectVariable)Ú_fsdp_param_group)Ú	PyCodegen)Ú&InliningGeneratorInstructionTranslatorÚInliningInstructionTranslatorÚInstructionTranslatorBase)ÚContextWrappingVariable)ÚTritonGridTypeÚTritonKernelType)ÚDunderDictVariable)ÚBaseListVariableÚListVariable)ÚTensorVariableÚ_F.)Úboundé   é   >   Úis_leafÚ	namespaceÚnone_is_leafrT   zihttps://github.com/pytorch/pytorch/issues/new?&labels=oncall%3A+pt2&projects=&template=pt2-bug-report.ymlÚ_spec_cachec                   ó   — e Zd ZdS )ÚClosureConversionErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/variables/functions.pyrY   rY   Š   s   € € € € € Ø€Dr^   rY   Úreturnc            	      ót   — t          t          t          t          d¦  «        d¦  «        d¦  «        d¦  «        S )NÚtorchÚutilsÚ_pytreeÚSUPPORTED_NODES)r'   r-   r]   r^   r_   Ú!get_pytree_SUPPORTED_NODES_sourcerf   Ž   s6   € åÝ•:�l¨7Ñ3Ô3°WÑ=Ô=¸yÑIÔIØñô ð r^   c                   ó.   — e Zd Zdeddfd„Zdeddfd„ZdS )ÚFunctionSpecÚfuncr`   Nc                 óà  — |j         }|j        }|j        | _        |j        | _        |j        | _        |d | j        …         | _        || j        | j        …         | _	        | j        | j	        z   | _
        || j        | j        | j        z   …         | _        | j        | j        z   }|j        t          z  r||         nd | _        || j        rdndz  }|j        t          z  r||         nd | _        d S ©Nr<   r   )Ú__code__Úco_varnamesÚco_posonlyargcountÚposonly_countÚco_argcountÚ	arg_countÚco_kwonlyargcountÚkwonly_countÚposonly_namesÚpos_or_kw_namesÚall_pos_namesÚkwonly_namesÚco_flagsÚ
CO_VARARGSÚvarargs_nameÚCO_VARKEYWORDSÚ
varkw_name)Úselfri   ÚcodeÚvnÚoffs        r_   Ú__init__zFunctionSpec.__init__—   sï   € ØŒ}ˆØÔˆà!Ô4ˆÔØÔ)ˆŒØ Ô2ˆÔàÐ 4 $Ô"4Ð 4Ô5ˆÔØ! $Ô"4°t´~Ð"EÔFˆÔØ!Ô/°$Ô2FÑFˆÔØ˜tœ~°´ÀÔARÑ0RÐRÔSˆÔàŒn˜tÔ0Ñ0ˆØ'+¤}µzÑ'AÐK˜B˜sœG˜GÀtˆÔØ�DÔ%Ð,ˆqˆq¨1Ñ,ˆØ%)¤]µ^Ñ%CÐM˜"˜Sœ'˜'ÈˆŒˆˆr^   c           
      ó   — |j         pd| _        |j        pi | _        t	          t          | j        t          | j        ¦  «         d …         t          t          | j        ¦  «        ¦  «        ¦  «        ¦  «        | _	        d S ©Nr]   )
Ú__defaults__ÚdefaultsÚ__kwdefaults__Ú
kwdefaultsÚdictÚziprv   ÚlenÚrangeÚpos_default_map)r}   ri   s     r_   Úupdate_defaultszFunctionSpec.update_defaults©   sv   € ð Ô)Ð/¨RˆŒØÔ-Ð3°ˆŒõ  $Ý�Ô"¥C¨¬Ñ$6Ô$6Ð#6Ð#8Ð#8Ô9½5ÅÀTÄ]ÑASÔASÑ;TÔ;TÑUÔUñ 
ô  
ˆÔÐÐr^   )rZ   r[   r\   r   r�   r�   r]   r^   r_   rh   rh   –   s^   € € € € € ðN˜\ð N¨dð Nð Nð Nð Nð$	
 Lð 	
°Tð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r^   rh   ri   c                 óp   — t                                | ¦  «        }|€t          | ¦  «        }|t           | <   |S ©N)rW   Úgetrh   )ri   Úspecs     r_   Ú	_get_specr’   µ   s4   € Ý�?Š?˜4Ñ Ô €DØ€|Ý˜DÑ!Ô!ˆØ ��DÑØ€Kr^   ÚtxrH   Ú	fn_sourceÚargsÚkwargsc                 ó6  ‡‡— t          | ¦  «        }t          ‰¦  «        |j        k    r?| j        s8|s6|j        s/|j        s(|j        s!ˆˆfd„t          |j        ¦  «        D ¦   «         S | 	                    | ¦  «         i }t          |¦  «        }d}t          |j        ¦  «        D �]-\  }	}
|	t          ‰¦  «        k     rt          ‰‰|	         ¦  «        ||
<   Œ3|
|v r0|
|j        vr't          ‰|                     |
¦  «        ¦  «        ||
<   Œg|
|j        v r­|j        |
         }|r>|s<t          t!          |d¦  «                             t$          j        ¦  «        ¦  «         d}d }|r;t)          j        |j        |         ¦  «        rt.          j        st3          ||¦  «        }t          ‰|j        |         |¦  «        ||
<   �Œt5          d|
› �¦  «        ‚‰t          |j        ¦  «        d …         }|j        r&t          ‰t7          |¦  «        ¦  «        ||j        <   n6|r4t5          dt          ‰¦  «        › dt          |j        ¦  «        › �¦  «        ‚|j        D ]}}
|
|v r't          ‰|                     |
¦  «        ¦  «        ||
<   Œ-|
|j        v r6d }|rt3          ||
d¬¦  «        }t          ‰|j        |
         |¦  «        ||
<   Œlt5          d	|
› �¦  «        ‚|j        rt          ‰|¦  «        ||j        <   n!|rt5          d
t;          |¦  «        › �¦  «        ‚|S )Nc                 óD   •— i | ]\  }}|t          ‰‰|         ¦  «        “ŒS r]   )Úwrap_bound_arg)Ú.0ÚiÚnamer•   r“   s      €€r_   ú
<dictcomp>z$bind_args_cached.<locals>.<dictcomp>Ð   s=   ø€ ð 
ð 
ð 
á��4ð •.  T¨!¤WÑ-Ô-ð
ð 
ð 
r^   Fr„   Tz&missing required positional argument: z#Too many positional arguments: got z, expected )Úis_kwz(Missing required keyword-only argument: zUnexpected keyword arguments: )r’   rŠ   rq   r„   rz   r|   rw   Ú	enumeraterv   r�   rˆ   r™   rt   ÚpoprŒ   r&   r'   Ú
make_guardr%   ÚSEQUENCE_LENGTHrB   Ú
is_literalr…   r   Ú%skip_guards_on_constant_func_defaultsr+   Ú	TypeErrorÚtupler‡   Úlist)ri   r“   r”   r•   r–   r‘   ÚbaÚrem_kwÚguarded_pos_defaults_lenr›   rœ   ÚidxÚdefault_sourceÚextraÚkwdefault_sources    ` `           r_   Úbind_args_cachedr¯   ½   s­  øø€ õ �T‰?Œ?€Dõ
 	ˆD‰	Œ	�T”^Ò#Ð#ØÔ!ð 	$àð 	$ð Ô!ð 	$ð ”ð	 	$ð
 Ô!ð 	$ð
ð 
ð 
ð 
ð 
å$ TÔ%7Ñ8Ô8ð
ñ 
ô 
ð 	
ð 	×Ò˜ÑÔÐØ	€BÝ�&‰\Œ\€FØ$Ðõ ˜TÔ/Ñ0Ô0ð  Mñ  M‰ˆˆ4Ø�s�4‰yŒyŠ=ˆ=Ý% b¨$¨q¬'Ñ2Ô2ˆBˆt‰HˆHØ�Vˆ^ˆ^ð ˜Ô*Ð*Ð*å% b¨&¯*ª*°TÑ*:Ô*:Ñ;Ô;ˆBˆt‰HˆHØ�TÔ)Ð)Ð)ØÔ& tÔ,ˆCØð 0Ð!9ð 0õ Ý˜y¨.Ñ9Ô9×DÒDÝ$Ô4ñô ñô ð ð
 ,0Ð(Ø!ˆNØð @Ý Ô+¨D¬M¸#Ô,>Ñ?Ô?ð@åÔ@ð@õ "0°	¸3Ñ!?Ô!?�Ý% b¨$¬-¸Ô*<¸nÑMÔMˆBˆt‰H‰HåÐKÀTÐKÐKÑLÔLÐLð •�TÔ'Ñ(Ô(Ð*Ð*Ô+€EØÔð 
Ý .¨rµ5¸±<´<Ñ @Ô @ˆˆ4ÔÑÐØ	ð 
ÝØaµ#°d±)´)ÐaÐaÍÈDÔL^ÑH_ÔH_ÐaÐañ
ô 
ð 	
ð
 Ô!ð 	Oð 	OˆØ�6ˆ>ˆ>Ý% b¨&¯*ª*°TÑ*:Ô*:Ñ;Ô;ˆBˆt‰HˆHØ�T”_Ð$Ð$Ø#ÐØð OÝ#1°)¸TÈÐ#NÑ#NÔ#NÐ Ý% b¨$¬/¸$Ô*?ÐAQÑRÔRˆBˆt‰HˆHåÐMÀtÐMÐMÑNÔNÐNð „ð IÝ,¨R°Ñ8Ô8ˆˆ4Œ?ÑÐØ	ð IÝÐG½¸f¹¼ÐGÐGÑHÔHÐHà€Ir^   ÚvalÚsourcec                 ó¢   — t          |t          ¦  «        r|S |st          j        | |¦  «        S t          j                             ||| ¬¦  «        S )N©r“   )Ú
isinstancer@   Úbuildr   ÚLazyVariableTrackerÚcreate)r“   r°   r±   s      r_   r™   r™     sX   € õ �#•Ñ'Ô'ð HØˆ
Øð HÝÔ$ R¨Ñ-Ô-Ð-õ Ô,×3Ò3°C¸ÀBÐ3ÑGÔGÐGr^   Úresultc                 ó²   — t          |                     ¦   «         ¦  «        D ]4\  }}t          |t          t          f¦  «        rt          | |¦  «        ||<   Œ5d S r�   )r§   Úitemsr´   r¦   rˆ   r™   )r“   r¸   ÚkÚvs       r_   Úwrap_args_kwargsr½   *  sY   € Ý�V—\’\‘^”^Ñ$Ô$ð .ð .‰ˆˆ1Ý�a�%¥˜Ñ'Ô'ð 	.å& r¨1Ñ-Ô-ˆF�1‰Iøð.ð .r^   Úparentr~   c                 ó¾   — | j         j        }|j        D ]H}|                     ¦   «         }||v r)|                     ||                     |¦  «        ¦  «         |||<   ŒIdS )zÃ
    Update `result` to add mapping from local name to new cells created
    directly by `code`, or update SideEffects in `parent` if a local cell is
    already in `result` (cell argument).
    N)ÚoutputÚside_effectsÚco_cellvarsÚtrack_cell_newÚ
store_cellr    )r¾   r¸   r~   rÁ   rœ   Únew_cells         r_   Úinit_cellvarsrÆ   1  ss   € ð ”=Ô-€LàÔ ð  ð  ˆØ×.Ò.Ñ0Ô0ˆØ�6ˆ>ˆ>ð ×#Ò# H¨f¯jªj¸Ñ.>Ô.>Ñ?Ô?Ð?Øˆˆt‰ˆð ð  r^   Ú	f_globalsrœ   r…   Úclosurer‡   Úannotationsc                 ó  — ddl m}  || ||||¦  «        }||_        t          |t          ¦  «        rddlm}	 t           |	|¦  «        ¦  «        }|�4t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚||_
        |S )Nr   ©r   ©Úpairwisez(annotations must be None or a dict, got )Útypesr   r†   r´   r¦   Ú	itertoolsrÍ   rˆ   ÚAssertionErrorÚtypeÚ__annotations__)
r~   rÇ   rœ   r…   rÈ   r‡   rÉ   r   ri   rÍ   s
             r_   Ú_create_nested_fnrÓ   F  s»   € ð #Ð"Ð"Ð"Ð"Ð"àˆ<˜˜i¨¨x¸ÑAÔA€DØ$€DÔå�+�uÑ%Ô%ð 2Ø&Ð&Ð&Ð&Ð&Ð&å˜8˜8 KÑ0Ô0Ñ1Ô1ˆð Ð¥:¨k½4Ñ#@Ô#@ÐÝØJµt¸KÑ7HÔ7HÐJÐJñ
ô 
ð 	
ð '€DÔà€Kr^   >
   Ú__doc__rl   rZ   r[   Ú__closure__Ú__globals__Ú__builtins__r„   r†   rÒ   Úfnc                 ót  — |ot          ||¦  «        }|r|dk    rt          |¦  «        }d }	 t          j        ||¦  «        }n%# t          $ r t          t          | ¦  «         Y nw xY w|t          v rt          ||¦  «        }|r"t          j	         
                    ||| ¬¦  «        S t          j        | |¦  «        S )NrÒ   r³   )r'   r.   ÚinspectÚgetattr_staticÚAttributeErrorr    Úfn_known_dunder_attrsÚgetattrr   r¶   r·   r@   rµ   )r“   rØ   r±   rœ   Úsubobjs        r_   Úfn_var_getattrrà   q  sâ   € ð Ð0�
 6¨4Ñ0Ô0€Fàð )�$Ð+Ò+Ð+õ ! Ñ(Ô(ˆà€Fð5ÝÔ'¨¨DÑ1Ô1ˆˆøÝð 5ð 5ð 5õ 	!¥°Ñ4Ô4Ð4Ð4Ð4ð5øøøð Õ$Ð$Ð$Ý˜˜TÑ"Ô"ˆØð KÝÔ,×3Ò3°F¸FÀrÐ3ÑJÔJÐJÝÔ   VÑ,Ô,Ð,s   ­A ÁA%Á$A%c            
       óÎ  ‡ — e Zd Z	 d!dddeddfˆ fd„Zd„ Zdee         fd„Zde	dz  fd	„Z
d"d„Zd
eddfd„Zd
ddedee         deeef         def
ˆ fd„Zdefd„Zdefd„Zdefd„Zdedz  fd„Zdeeef         fd„Zdej        fd„Zdefd„Zdej        fd„Zdefd„Zd
ddefd„Zd
ddee         deeef         defd„Zd
ddedefd„Z d
ddeeef         fd„Z!defd „Z"ˆ xZ#S )#ÚBaseUserFunctionVariableNÚdict_vtzDunderDictVariable | Noner–   r`   c                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S rƒ   )Úsuperr�   rã   )r}   rã   r–   Ú	__class__s      €r_   r�   z!BaseUserFunctionVariable.__init__�  s-   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø29ˆŒˆˆr^   c                 ó*   — ddl m}  || |||¦  «        S ©Nr<   )Úobject_richcompare©Úobject_protocolré   ©r}   r“   ÚotherÚopré   s        r_   Úrichcompare_implz)BaseUserFunctionVariable.richcompare_impl•  ó+   € Ø7Ð7Ð7Ð7Ð7Ð7à!Ð! $¨¨E°2Ñ6Ô6Ð6r^   c                 ó   — g S r�   r]   ©r}   s    r_   Ú	self_argsz"BaseUserFunctionVariable.self_argsš  ó   € Øˆ	r^   c                 ó   — | j         S r�   ©r±   rò   s    r_   Ú
get_sourcez#BaseUserFunctionVariable.get_source�  ó
   € ØŒ{Ðr^   r“   rH   rL   c                 óh   — | j         €%t          j                             || ¦  «        | _         | j         S r�   )rã   r   rL   r·   ©r}   r“   s     r_   Úget_dict_vtz$BaseUserFunctionVariable.get_dict_vt   s,   € ØŒ<ÐÝ$Ô7×>Ò>¸rÀ4ÑHÔHˆDŒLØŒ|Ðr^   r@   c                 ój   — t          j        |t          |                      ¦   «         ¦  «        ¦  «        S r�   )r@   rµ   ÚreprÚas_python_constantrú   s     r_   Ú	repr_implz"BaseUserFunctionVariable.repr_impl¥  s)   € åÔ$ R­¨d×.EÒ.EÑ.GÔ.GÑ)HÔ)HÑIÔIÐIr^   rœ   r•   c                 ó^  •— |dk    r8|                       |¦  «                             |dt          |¦  «        |¦  «        S |dk    r8|                       |¦  «                             |dt          |¦  «        i ¦  «        S t          ¦   «                              ||t          |¦  «        |¦  «        S )NÚ__setattr__Ú__setitem__Ú__delattr__Ú__delitem__)rû   Úcall_methodr§   rå   ©r}   r“   rœ   r•   r–   ræ   s        €r_   r  z$BaseUserFunctionVariable.call_method©  s¥   ø€ ð �=Ò Ð Ø×#Ò# BÑ'Ô'×3Ò3Ø�M¥4¨¡:¤:¨vñô ð ð �]Ò"Ð"Ø×#Ò# BÑ'Ô'×3Ò3°B¸ÅtÈDÁzÄzÐSUÑVÔVÐVÝ‰wŒw×"Ò" 2 t­T°$©Z¬Z¸Ñ@Ô@Ð@r^   c                 ó4   — |                       ¦   «         j        S r�   ©Úget_codeÚco_filenamerò   s    r_   Úget_filenamez%BaseUserFunctionVariable.get_filename¸  ó   € Ø�}Š}‰ŒÔ*Ð*r^   c                 ó4   — |                       ¦   «         j        S r�   ©r	  Úco_namerò   s    r_   Úget_namez!BaseUserFunctionVariable.get_name»  ó   € Ø�}Š}‰ŒÔ&Ð&r^   c                 ó|   — t           j        dk    r|                      ¦   «         j        S |                      ¦   «         S )N©é   é   )ÚsysÚversion_infor	  Úco_qualnamer  rò   s    r_   Úget_qualnamez%BaseUserFunctionVariable.get_qualname¾  s/   € ÝÔ˜wÒ&Ð&Ø—=’=‘?”?Ô.Ð.à—=’=‘?”?Ð"r^   c                 ó@   — |                       ¦   «         j        d         S )Nr   )r	  Ú	co_constsrò   s    r_   Úget_docz BaseUserFunctionVariable.get_docÄ  s   € à�}Š}‰ŒÔ(¨Ô+Ð+r^   c                 ó   — t           ‚r�   ©ÚNotImplementedErrorrò   s    r_   Úget_globalsz$BaseUserFunctionVariable.get_globalsÈ  ó   € Ý!Ð!r^   c                 ó   — t           ‚r�   r  rò   s    r_   r	  z!BaseUserFunctionVariable.get_codeË  r!  r^   c                 ó   — t           ‚r�   r  rò   s    r_   Úhas_selfz!BaseUserFunctionVariable.has_selfÎ  r!  r^   c                 ó   — t           ‚r�   r  rò   s    r_   Úget_functionz%BaseUserFunctionVariable.get_functionÑ  r!  r^   c                 ó6   — |                       ¦   «         d         S )NrZ   )r   rò   s    r_   Ú
get_modulez#BaseUserFunctionVariable.get_moduleÔ  s   € Ø×ÒÑ!Ô! *Ô-Ð-r^   c                 ó4  — |                       |¦  «        }|dv r} t          | d|dd…         › �¦  «        ¦   «         }|                     |¦  «        r|                     |¦  «        S t	          j        || j        ot          | j        |¦  «        ¬¦  «        S |dk    r|S |dk    r|                     |d„ ¦  «        S |d	k    r|                     |d
„ ¦  «        S |                     |¦  «        r|                     |¦  «        S t          t          |¦  «         d S )N)rZ   r\   rÔ   r[   rl   Úget_r   éþÿÿÿrö   Ú__dict__rÒ   c                  óF   — t          j        i t          ¦   «         ¬¦  «        S ©N©Úmutation_type)r   ÚConstDictVariabler?   r]   r^   r_   ú<lambda>z6BaseUserFunctionVariable.var_getattr.<locals>.<lambda>ç  s$   € �	Ô3ØÝ"2Ñ"4Ô"4ðñ ô € r^   Ú__type_params__c                  óF   — t          j        g t          ¦   «         ¬¦  «        S r.  )r   ÚTupleVariabler?   r]   r^   r_   r2  z6BaseUserFunctionVariable.var_getattr.<locals>.<lambda>ï  s$   € �	Ô/ØÝ"2Ñ"4Ô"4ðñ ô € r^   )rû   rÞ   ÚcontainsÚgetitemrB   r·   r±   r'   Úgetitem_or_defaultr    rÜ   )r}   r“   rœ   Úfn_dictr°   s        r_   Úvar_getattrz$BaseUserFunctionVariable.var_getattr×  s[  € Ø×"Ò" 2Ñ&Ô&ˆð ÐTÐTÐTØ4•'˜$Ð 3 t¨A¨b¨D¤zÐ 3Ð 3Ñ4Ô4Ñ6Ô6ˆCØ×Ò Ñ%Ô%ð -Ø—’ tÑ,Ô,Ð,Ý#Ô*Ø˜DœKÐI­J°t´{ÀDÑ,IÔ,Iðñ ô ð ð �ZÒÐØˆNØÐ&Ò&Ð&Ø×-Ò-Øðð ñô ð ð Ð&Ò&Ð&Ø×-Ò-Øðð ñô ð ð ×Ò Ñ%Ô%ð =Ø—’ tÑ,Ô,Ð,å(­¸Ñ<Ô<Ð<Ð<Ð<r^   c                 ó  — |                       ¦   «         dk    r;|                      ¦   «                              d¦  «        rt          j        d ¦  «        S |                     | g |                      ¦   «         ¢|¢|d¬¦  «        S )NÚpatch_track_step_calledztorch/optim/lr_scheduler.pyT)Úallow_nested_graph_breaks)r  r  ÚendswithrB   r·   Úinline_user_function_returnró   ©r}   r“   r•   r–   s       r_   Úcall_functionz&BaseUserFunctionVariable.call_functionú  s‹   € ð �MŠM‰OŒOÐ8Ò8Ð8Ø×!Ò!Ñ#Ô#×,Ò,Ð-JÑKÔKð 9õ $Ô*¨4Ñ0Ô0Ð0Ø×-Ò-ØØ&ˆd�nŠnÑÔÐ& Ð&ØØ&*ð	 .ñ 
ô 
ð 	
r^   c                 óÀ   — d}|t           v s|dk    rd}n6	 t          |                      ¦   «         |¦  «        }n# t          $ r d}Y nw xY wt	          j        ||¦  «        S )NFr,  T)rÝ   Úhasattrr&  r  r@   rµ   ©r}   r“   rœ   r¸   s       r_   Úcall_obj_hasattrz)BaseUserFunctionVariable.call_obj_hasattr  s   € ð ˆàÕ(Ð(Ð(¨D°JÒ,>Ð,>ØˆFˆFðÝ  ×!2Ò!2Ñ!4Ô!4°dÑ;Ô;��øÝ&ð ð ð Ø���ðøøøåÔ$ R¨Ñ0Ô0Ð0s   –"9 ¹AÁAc                 ó   — i S r�   r]   rú   s     r_   Úclosure_varsz%BaseUserFunctionVariable.closure_vars  ó	   € ð ˆ	r^   c                 ó   — dS ©NTr]   rò   s    r_   Ú should_allow_nested_graph_breaksz9BaseUserFunctionVariable.should_allow_nested_graph_breaks$  ó   € Øˆtr^   r�   )r“   rH   r`   rL   )$rZ   r[   r\   r   r�   rï   r§   r@   ró   r   r÷   rû   rÿ   Ústrrˆ   r  r  r  r  r  r   rÎ   ÚCodeTyper	  Úboolr$  r   r&  r(  r:  rA  rB   rE  rG  rK  Ú__classcell__©ræ   s   @r_   râ   râ   Ž  s6  ø€ € € € € à59ð:ð :Ø2ð:ØEHð:à	ð:ð :ð :ð :ð :ð :ð7ð 7ð 7ð
˜4 Ô0ð ð ð ð ð˜F T™Mð ð ð ð ðð ð ð ð
J˜Cð JÐ$5ð Jð Jð Jð JðAà'ðAð ðAð �?Ô#ð	Að
 �S˜/Ð)Ô*ðAð 
ðAð Að Að Að Að Að+˜cð +ð +ð +ð +ð'˜#ð 'ð 'ð 'ð 'ð#˜cð #ð #ð #ð #ð,˜˜t™ð ,ð ,ð ,ð ,ð"˜T # s (œ^ð "ð "ð "ð "ð"˜%œ.ð "ð "ð "ð "ð"˜$ð "ð "ð "ð "ð"˜eÔ0ð "ð "ð "ð "ð.˜Cð .ð .ð .ð .ð!=Ð9ð !=Àð !=ð !=ð !=ð !=ðF
à'ð
ð �?Ô#ð
ð �S˜/Ð)Ô*ð	
ð
 
ð
ð 
ð 
ð 
ð(1Ø-ð1Ø58ð1à	ð1ð 1ð 1ð 1ðØ-ðà	ˆc�?Ð"Ô	#ðð ð ð ð°$ð ð ð ð ð ð ð ð r^   râ   c                   ón  ‡ — e Zd ZdZej        Zddhej        £Z e	h d£¦  «        Z
edededd fd„¦   «         Z	 d0dej        ej        j        z  ded
eddfˆ fd„Zdefˆ fd„Zd„ Zdefˆ fd„Zdee         fd„Zdej        fd„Zdej        fd„Zdefd„Zdefd„Zdee ef         fd„Z!defd„Z"de#fd„Z$dddee         d
ee ef         dee ef         fd„Z%ddde defˆ fd„Z&ddde de'fd„Z(ddd ed!edefd"„Z)dddee         d
ee ef         defˆ fd#„Z*dddee         d
ee ef         dedz  fd$„Z+defd%„Z,defd&„Z-defd'„Z.dddee         d
ee ef         de/d ee         ee ef         f         dz  fd(„Z0dej        dz  fd)„Z1d*ede/ed+f         dz  fd,„Z2dedee         dz  fd-„Z3d.e4defd/„Z5ˆ xZ6S )1ÚUserFunctionVariablez-Some unsupported user-defined global functionrØ   Úis_constant>   ú
optree.opsútorch.utils._pytreeútorch.utils._cxx_pytreeÚoptreeÚvaluer±   r`   c                 ót   — t          |                     t          j        ¦  «        ¦  «          | ||¬¦  «        S ©Nrö   ©r&   r¡   r%   ÚCLOSURE_MATCH©ÚclsrY  r±   s      r_   Úcreate_with_sourcez'UserFunctionVariable.create_with_source=  s6   € å�f×'Ò'­Ô(BÑCÔCÑDÔDÐDØˆs�5 Ð(Ñ(Ô(Ð(r^   Fr–   Nc                 óL  •—  t          ¦   «         j        d	i |¤Ž t          |dd¦  «        rd| _        nd| _        t	          |t
          j        t          j        j	        f¦  «        s!t          d|› ddgt          j        ¢¬¦  «         t          j        |d|¦  «        }|| _        d S )
NÚ_dynamo_marked_constantFTz1can't handle functions not implemented in python z2Dynamo can only handle functions defined in pythonz9Move usage of this function out of `torch.compile` region©Úgb_typeÚcontextÚexplanationÚhintsÚ_torchdynamo_inliner]   )rå   r�   rÞ   rT  r´   rÎ   r   rb   ÚjitÚScriptFunctionr#   r   ÚINFERENCE_MODErÚ   rÛ   rØ   )r}   rØ   rT  r–   ræ   s       €r_   r�   zUserFunctionVariable.__init__B  sÂ   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý�2Ð0°%Ñ8Ô8ð 	%à#ˆDÔÐà$ˆDÔõ ˜"�uÔ1µ5´9Ô3KÐLÑMÔMð 		ÝØKØ˜ØPàOðå&Ô5ðð	ñ ô ð õ Ô# BÐ(=¸rÑBÔBˆØˆŒˆˆr^   c                 ó|   •— t          | t          ¦  «        r| j        S t          ¦   «                              ¦   «         S r�   )r9   rS  rØ   rå   rþ   ©r}   ræ   s    €r_   rþ   z'UserFunctionVariable.as_python_constanta  s3   ø€ Ý�$Õ,Ñ-Ô-ð 	Ø”7ˆNå‰wŒw×)Ò)Ñ+Ô+Ð+r^   c                 ób   — | j         r| j                              |¦  «        S t          d¦  «        ‚)NzBPython codegen not implemented for sourceless UserFunctionVariable©r±   Úreconstruct_pycoder  ©r}   Úcodegens     r_   rp  z'UserFunctionVariable.reconstruct_pycodeg  ó7   € ØŒ;ð 	;Ø”;×1Ò1°'Ñ:Ô:Ð:Ý!ØPñ
ô 
ð 	
r^   c                 ó|   •— t          | t          ¦  «        r| j        S t          ¦   «                              ¦   «         S r�   )r9   rS  rØ   rå   Úget_real_python_backed_valuerm  s    €r_   ru  z1UserFunctionVariable.get_real_python_backed_valuen  s3   ø€ Ý�$Õ,Ñ-Ô-ð 	Ø”7ˆNÝ‰wŒw×3Ò3Ñ5Ô5Ð5r^   c                 ó   — g S r�   r]   rò   s    r_   ró   zUserFunctionVariable.self_argss  rô   r^   c                 ó   — | j         S r�   ©rØ   rò   s    r_   r&  z!UserFunctionVariable.get_functionv  ó	   € ØŒwˆr^   c                 ó   — | j         j        S r�   )rØ   rl   rò   s    r_   r	  zUserFunctionVariable.get_codey  s   € ØŒwÔÐr^   c                 ó   — t           j        S r�   ©rÎ   r   rò   s    r_   Úpython_typez UserFunctionVariable.python_type|  ó   € ÝÔ!Ð!r^   c                 ó2   — t          | j        dd ¦  «        d uS )NÚ__self__)rÞ   rØ   rò   s    r_   r$  zUserFunctionVariable.has_self  s   € Ý�t”w 
¨DÑ1Ô1¸Ð=Ð=r^   c                 ó   — | j         j        S r�   )rØ   rÖ   rò   s    r_   r   z UserFunctionVariable.get_globals‚  s   € ØŒwÔ"Ð"r^   c                 óv   ‡— ddl m} |                      ¦   «         Št          ˆfd„|D ¦   «         ¦  «        rdS dS )Nr   )ÚBUILTIN_INLINE_WHEN_CALLEDc              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r�   )Ú
startswith)rš   ÚdÚfilenames     €r_   ú	<genexpr>zHUserFunctionVariable.should_allow_nested_graph_breaks.<locals>.<genexpr>‰  s1   øè è € ÐJÐJ¨!ˆx×"Ò" 1Ñ%Ô%ÐJÐJÐJÐJÐJÐJr^   FT)Útorch._dynamo.trace_rulesrƒ  r  Úany)r}   rƒ  r‡  s     @r_   rK  z5UserFunctionVariable.should_allow_nested_graph_breaks…  sV   ø€ ØHÐHÐHÐHÐHÐHà×$Ò$Ñ&Ô&ˆÝÐJÐJÐJÐJÐ/IÐJÑJÔJÑJÔJð 	Ø�5Øˆtr^   c                 óZ   — | j         }|r!t          | t          j        ¦  «        r| j        }|S r�   )r±   r´   r   ÚUserMethodVariableÚ	source_fn)r}   r±   s     r_   r÷   zUserFunctionVariable.get_source�  s1   € Ø”ˆàð 	$•j ¥yÔ'CÑDÔDð 	$Ø”^ˆFØˆr^   r¾   rH   r•   c                 ó~  — | j         rt          d¦  «        ‚| j        }t          |t          ¦  «        st          d¦  «        ‚|j        j        }|                      ¦   «         }t          |||||¦  «        }t          |||j        ¦  «         | j        j        pd}t          |¦  «        t          | j        j        j        ¦  «        k    r>t          dt          |¦  «        › dt          | j        j        j        ¦  «        › �¦  «        ‚t          t!          j        ¦   «         | j        j        j        |¦  «        D �]\  }	}
}|j        j        }||v r	||         }nß|r‡t'          t)          |¦  «        |	¦  «        }t+          |d|
¬¦  «        }	 t-          j        ||j        |¦  «        }n## t2          $ r t5          j        ¦   «         }Y nw xY w|                     |||¦  «        }nV	 t-          j        ||j        ¦  «        }n## t2          $ r t5          j        ¦   «         }Y nw xY w|                     d||¦  «        }|||
<   �Œ|S )	z—
        Assume `args` and `kwargs` are VariableTracker arguments for a call to
        this function, create new bindings for initial locals.
        z5bind_args should not be called on a constant functionz'Only supports regular Python functions.r]   zclosure length z# does not match co_freevars length Úcell_contents)Úfreevar_nameN)rT  rÐ   rØ   r´   r   r¥   rÀ   Úroot_txr÷   r¯   rÆ   rl   rÕ   rŠ   Úco_freevarsr‰   rÏ   ÚcountrÁ   r,   r)   r(   r@   rµ   r�  Ú
ValueErrorr   ÚDeletedVariableÚtrack_cell_existing)r}   r¾   r•   r–   rØ   r‘  r±   r¸   rÈ   r«   rœ   ÚcellrÁ   Úcell_varÚclosure_cellÚclosure_cell_contentsÚcontents_vars                    r_   Ú	bind_argszUserFunctionVariable.bind_args”  sˆ  € ð Ôð 	Ý ØGñô ð ð "&¤ˆå˜"�lÑ+Ô+ð 	GÝÐEÑFÔFÐFØ”-Ô'ˆà—’Ñ"Ô"ˆÝ! " g¨v°t¸VÑDÔDˆå�f˜f b¤kÑ2Ô2Ð2Ø”'Ô%Ð+¨ˆÝˆw‰<Œ<�3˜tœwÔ/Ô;Ñ<Ô<Ò<Ð<Ý ðJ¥# g¡,¤,ð Jð JÝ&)¨$¬'Ô*:Ô*FÑ&GÔ&GðJð Jñô ð õ  #ÝŒOÑÔ˜tœwÔ/Ô;¸Wñ 
ô  
ð "	$ñ "	$‰OˆC��tð "œ=Ô5ˆLØ�|Ð#Ð#Ø'¨Ô-��àð VÝ,­]¸6Ñ-BÔ-BÀCÑHÔH�Ý(:Ø  /Àð)ñ )ô )Ð%ð?Ý#2Ô#8Ø Ô 2Ð4Iñ$ô $�L�Løõ "ð ?ð ?ð ?å#,Ô#<Ñ#>Ô#>�L�L�Lð?øøøð (×;Ò;Ø  $¨ñô ��ð?Ý#2Ô#8¸ÀÔASÑ#TÔ#T�L�LøÝ!ð ?ð ?ð ?å#,Ô#<Ñ#>Ô#>�L�L�Lð?øøøð (×;Ò;¸DÀ$ÈÑUÔU�à#ˆF�4‰L‰Làˆs$   Æ	F%Æ%GÇGÇ!G<Ç<HÈHr“   rœ   c           
      óÂ  •— |dk    r"t          ¦   «                              ||¦  «        S |dk    rF|                      ¦   «         }|ot          |d¦  «        }t	          j        || j        j        |¦  «        S |t          v r7t          j
        | |t          t          | j        |¦  «        ¦  «        ¬¦  «        S |                      ¦   «         }t          || j        ||¦  «        S )Nr,  Ú__get__©Úpy_type)rå   r:  r÷   r'   r@   rµ   rØ   rž  r3   r   ÚGetAttrVariablerÑ   rÞ   rà   ©r}   r“   rœ   r±   ræ   s       €r_   r:  z UserFunctionVariable.var_getattrÙ  sÙ   ø€ ð �:ÒÐÝ‘7”7×&Ò& r¨4Ñ0Ô0Ð0Ø�YÒÐØ—_’_Ñ&Ô&ˆFØÐ=¥
¨6°9Ñ =Ô =ˆFÝ"Ô(¨¨T¬W¬_¸fÑEÔEÐEØÕ+Ð+Ð+ÝÔ,Ø�d¥D­°´¸$Ñ)?Ô)?Ñ$@Ô$@ðñ ô ð ð —’Ñ"Ô"ˆÝ˜b $¤'¨6°4Ñ8Ô8Ð8r^   c                 óV   — t          | j        |¦  «        }t          j        ||¦  «        S r�   )rC  rØ   r@   rµ   rD  s       r_   rE  z%UserFunctionVariable.call_obj_hasattré  s(   € õ ˜œ $Ñ'Ô'ˆÝÔ$ R¨Ñ0Ô0Ð0r^   ÚobjÚownerc                 óˆ   — |j         ot          |j         | j        j        ¦  «        }t	          | j        || j         |¬¦  «        S )N©r�  r±   )r±   r'   rØ   rZ   rŒ  )r}   r“   r¤  r¥  r±   s        r_   Útp_descr_get_implz&UserFunctionVariable.tp_descr_get_implï  s<   € ð ”ÐH¥
¨3¬:°t´wÔ7GÑ HÔ HˆÝ! $¤'¨3¸$¼+ÈfÐUÑUÔUÐUr^   c           
      ó  •— | j         t          j        j        u r‚	 d„ |D ¦   «         }d„ |                     ¦   «         D ¦   «         }t          j        j        |i |¤Žj        }t          j        |¦  «        S # t          $ r}t          d|› d|› �¦  «        |‚d }~ww xY w| j         t          j        j
        u r´	  t          j        | j         ¦  «        j        |i |¤Ž}|j        d                              ¦   «         }	t!          |	t"          ¦  «        st%          dt'          |	¦  «        › �¦  «        ‚t          j        |	¦  «        S # t*          $ r}t          d|› d|› �¦  «        |‚d }~ww xY w| j         t          j        j        u râ	  t          j        | j         ¦  «        j        |i |¤Ž}|                     ¦   «          |j        d         }
|j        d	         }t!          |
t0          ¦  «        r|
                     ¦   «         }
t!          |t0          ¦  «        r|                     ¦   «         }t          j        |
|¦  «        S # t*          $ r}t          d
|› d|› �¦  «        |‚d }~ww xY w| j         t          j        j        j        u r+d|j        _        t          j                             d ¦  «        S | j         t          j        j         u �r t          j        | j         ¦  «        j        |i |¤Ž}|j!        d         }t!          |tD          ¦  «        sM| #                    ¦   «         }d|j$        › d�}tK          dd| j&        › d|› d|› d�|g tN          j(        ¢¬¦  «         t!          |tR          ¦  «        s4| *                    ¦   «         }d|› d�}tK          d| › |d|› d�dg¬¦  «         |j         }t          j+        |t          j        j,        j-        ¬¦  «        S | j.        r*t_          || j         |  *                    ¦   «         ||¦  «        S |j        j0        j1        s|| j         t          j        j2        j3        u r_t          j        j4         5                    |¦  «        5  tm          ¦   «          7                    |||¦  «        cd d d ¦  «         S # 1 swxY w Y   tq          |j        j0        dd ¦  «        dk    r¡|j        j0        j9        s�	 ddl:m;} n# t*          $ r d }Y nw xY w|�t| j         |j<        |j=        fv r_t          j        j4         9                    |¦  «        5  tm          ¦   «          7                    |||¦  «        cd d d ¦  «         S # 1 swxY w Y   |  >                    |||¦  «        }|�|S tm          ¦   «          7                    |||¦  «        S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r]   ©rþ   ©rš   Úargs     r_   ú
<listcomp>z6UserFunctionVariable.call_function.<locals>.<listcomp>  s$   € ÐGÐGÐG¸3˜c×4Ò4Ñ6Ô6ÐGÐGÐGr^   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r]   r«  )rš   Úkeyr°   s      r_   r�   z6UserFunctionVariable.call_function.<locals>.<dictcomp>  s7   € ð  ð  ð  Ù6>°c¸3�C˜×/Ò/Ñ1Ô1ð ð  ð  r^   zˆCannot convert patch_dynamo_config args/kwargs to constants. Please fix your call to patch_dynamo_config by using simpler inputs. args: ú
, kwargs: Úerror_on_graph_breakz)error_on_graph_break must be a bool, got z\Improper error_on_graph_break() call. Please fix your call to error_on_graph_break(). args: ÚfwdÚbwdzZImproper override_cudagraphs() call. Please fix your call to override_cudagraphs(). args: Tr   z=`nonstrict_trace` expects a callable, but got value of type <ú>zTypeError from user codezcall_function(ú, ú)rc  z(Applying `nonstrict_trace` to function <zk>; however, `nonstrict_trace` currently requires the function to be defined outside `torch.compile` region.zLimitation of `nonstrict_tracezmake sure definition of z is outside z`torch.compile` region©ÚkindÚdescriptionz!torch.utils.checkpoint.checkpoint)Ú	FSDPState)?rØ   rb   Ú_dynamoÚpatch_dynamo_configrº   Úchangesr   ÚDynamoConfigPatchVariabler=   ÚRuntimeErrorr²  rÚ   Ú	signatureÚbindÚ	argumentsrþ   r´   rO  rÐ   rÑ   ÚErrorOnGraphBreakVariableÚ	ExceptionÚoverride_cudagraphsÚapply_defaultsr@   ÚCudagraphOverrideVariableÚbytecode_debuggerÚ
breakpointrÀ   Ú_emit_debugger_breakpointrB   r·   Únonstrict_tracer•   râ   r}  rZ   r#   rY  r   Ú
USER_ERRORrS  r  ÚTorchInGraphFunctionVariableÚAllowInGraphKindÚNONSTRICT_TRACErT  Úinvoke_and_store_as_constantÚcurrent_tracerÚ,unsafe_allow_externally_visible_side_effectsrc   Ú8_disable_side_effect_safety_checks_for_current_subtracerrÁ   Ú2allow_externally_visible_side_effects_in_subtracerrå   rA  rÞ   Úallow_side_effects_in_hopÚ/torch.distributed.fsdp._fully_shard._fsdp_stater»  Ú_pre_forwardÚ_post_forwardÚ_maybe_call_tree_map_fastpath)r}   r“   r•   r–   Ú
args_constÚkwargs_constr¾  ÚerQ   r²  r³  r´  Úfn_varÚtypÚmsgÚfn_namerØ   r»  Útree_map_resultræ   s                      €r_   rA  z"UserFunctionVariable.call_functionû  s  ø€ ð Œ7•e”mÔ7Ð7Ð7ðØGÐGÀ$ÐGÑGÔG�
ð ð  ØBHÇ,Â,Á.Ä.ð ñ  ô  �õ  œ-Ô;ØðØ#/ðð äð õ !Ô:¸7ÑCÔCÐCøÝ6ð ð ð Ý"ð6à!ð6ð 6à-3ð6ð 6ñô ð ð	øøøøðøøøð ŒW�œÔ:Ð:Ð:ðØ7�Ô)¨$¬'Ñ2Ô2Ô7¸ÐHÀÐHÐH�Ø',¤Ø*ô(ç$Ò$Ñ&Ô&ð %õ "Ð"6½Ñ=Ô=ð Ý(Ø`ÅDÐI]ÑD^ÔD^Ð`Ð`ñô ð õ !Ô:Ð;OÑPÔPÐPøÝð ð ð Ý"ð6Ø!ð6ð 6Ø-3ð6ð 6ñô ð ðøøøøðøøøð
 ŒW�œÔ9Ð9Ð9ðØ7�Ô)¨$¬'Ñ2Ô2Ô7¸ÐHÀÐHÐH�Ø×$Ò$Ñ&Ô&Ð&Ø”o eÔ,�Ø”o eÔ,�Ý˜c¥?Ñ3Ô3ð 3Ø×0Ò0Ñ2Ô2�CÝ˜c¥?Ñ3Ô3ð 3Ø×0Ò0Ñ2Ô2�CÝ Ô:¸3ÀÑDÔDÐDøÝð ð ð Ý"ð6Ø!ð6ð 6Ø-3ð6ð 6ñô ð ðøøøøðøøøð
 ŒW�œÔ7ÔBÐBÐBØ26ˆBŒIÔ/ÝÔ-×4Ò4°TÑ:Ô:Ð:àŒW�œÔ5Ð5Ñ5Ø3•GÔ% d¤gÑ.Ô.Ô3°TÐD¸VÐDÐDˆEØ”Z ”]ˆFÝ˜fÕ&>Ñ?Ô?ð 
Ø×(Ò(Ñ*Ô*�ØeÐVYÔVbÐeÐeÐe�ÝØ6ØL¨T¬ZÐLÐL¸4ÐLÐLÀ6ÐLÐLÐLØ #ðÝ*Ô5ðð	ñ ô ð õ ˜fÕ&:Ñ;Ô;ð Ø Ÿ/š/Ñ+Ô+�ð vÀð  vð  vð  v�ÝØ<Ø#˜IØ #àH°7ÐHÐHÐHØ0ðð	ñ ô ð ð ”ˆBÝÔ9Ø�œÔ9ÔIðñ ô ð ð Ôð 	Ý/Ø�D”G˜TŸ]š]™_œ_¨d°Fñô ð ð
 ”	Ô(ÔUð	?à”ÝŒ}Ô"Ô[ð\ð \õ ”Ô+×^Ò^Øñô ð ?ð ?õ ‘w”w×,Ò,¨R°°vÑ>Ô>ð?ð ?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?õ �B”IÔ,¨m¸TÑBÔBØ2ò3ð 3à”IÔ,ÔFð3ð!ØUÐUÐUÐUÐUÐUÐUøÝð !ð !ð !Ø �	�	�	ð!øøøàÐ$¨¬ØÔ&ØÔ'ð5ð *ð *õ ”]Ô/×IÒIÈ"ÑMÔMð Cð CÝ ™7œ7×0Ò0°°T¸6ÑBÔBðCð Cð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð ×<Ò<¸RÀÀvÑNÔNˆØÐ&Ø"Ð"å‰wŒw×$Ò$ R¨¨vÑ6Ô6Ð6s€   ›AA4 Á4
BÁ>BÂBÂ5B
E  Å 
E%Å
E Å E%ÆB8H: È:
IÉIÉIÑ#RÒRÒ
RÒ?S ÓSÓSÔ#UÕUÕ
Uc                 óä  — |                       |||¦  «        }|�|\  }}}n| }|}|}t          |t          ¦  «        o|                     ¦   «         }t          |t          ¦  «        o|                     ¦   «         }	|s|	sd S h |£t
          z
  rd S t          |¦  «        dk     rd S |d         }
|d         }|dd …         }|	r|                     |||
||d¬¦  «        S |                     |||
||¦  «        S )Nr   r   r<   r]   )Úkeypath)	Ú_rewrite_tree_map_only_callr´   rS  Ú_is_tree_map_functionÚ_is_tree_map_with_path_functionÚ_SUPPORTED_TREE_MAP_KWARGSrŠ   Úcall_tree_map_with_pathÚcall_tree_map)r}   r“   r•   r–   ÚrewriteÚtree_map_fnÚtree_map_argsÚtree_map_kwargsÚis_tree_mapÚis_tree_map_with_pathÚmap_fnÚ
first_treeÚrests                r_   rÚ  z2UserFunctionVariable._maybe_call_tree_map_fastpath|  sY  € ð ×2Ò2°2°t¸VÑDÔDˆØÐØ:AÑ7ˆK˜¨¨àˆKØ ˆMØ$ˆOõ �{Õ$8Ñ9Ô9ð 4Ø×1Ò1Ñ3Ô3ð 	õ
 �{Õ$8Ñ9Ô9ð >Ø×;Ò;Ñ=Ô=ð 	ð
 ð 	Ð4ð 	Ø�4Øˆ_ÐÕ :Ñ:ð 	Ø�4Ýˆ}ÑÔ Ò!Ð!Ø�4à˜qÔ!ˆØ" 1Ô%ˆ
Ø˜Q˜R˜RÔ ˆà ð 	Ø×5Ò5ØØØØØØð 6ñ ô ð ð ×+Ò+ØØØØØñô ð r^   c                 óp   — t          | j        dd ¦  «        dk    ot          | j        dd ¦  «        | j        v S )NrZ   Útree_mapr[   ©rÞ   rØ   Ú_TREE_MAP_MODULESrò   s    r_   ræ  z*UserFunctionVariable._is_tree_map_function°  s<   € å�D”G˜Z¨Ñ.Ô.°*Ò<ð OÝ˜œ ¨tÑ4Ô4¸Ô8NÐNð	
r^   c                 óp   — t          | j        dd ¦  «        dk    ot          | j        dd ¦  «        | j        v S )NrZ   Útree_map_with_pathr[   rö  rò   s    r_   rç  z4UserFunctionVariable._is_tree_map_with_path_function¶  s=   € å�D”G˜Z¨Ñ.Ô.Ð2FÒFð OÝ˜œ ¨tÑ4Ô4¸Ô8NÐNð	
r^   c                 óp   — t          | j        dd ¦  «        dk    ot          | j        dd ¦  «        | j        v S )NrZ   Útree_map_onlyr[   rö  rò   s    r_   Ú_is_tree_map_only_functionz/UserFunctionVariable._is_tree_map_only_function¼  s<   € å�D”G˜Z¨Ñ.Ô.°/ÒAð OÝ˜œ ¨tÑ4Ô4¸Ô8NÐNð	
r^   c           	      óv  — |                       ¦   «         sd S t          |¦  «        dk    rd S h |£t          z
  rd S |\  }}}|                      |¦  «        }|€d S |                      ¦   «         }|€d S t          ||t          |dd ¦  «        ¬¦  «        }	t          j        ||¦  «        }
|
|	|gt          |¦  «        fS )Nr  r±   rö   )
rü  rŠ   Ú_TREE_MAP_ONLY_SUPPORTED_KWARGSÚ_extract_tree_map_only_typesÚ_lookup_tree_map_functionÚTreeMapOnlyFunctionVariablerÞ   r@   rµ   rˆ   )r}   r“   r•   r–   Útype_selectorrñ  Útree_argÚallowed_typesÚtree_map_callableÚwrapped_map_fnÚtree_map_variables              r_   rå  z0UserFunctionVariable._rewrite_tree_map_only_callÂ  sæ   € ð ×.Ò.Ñ0Ô0ð 	Ø�4åˆt‰9Œ9˜Š>ˆ>Ø�4ØˆVˆ9Õ6Ñ6ð 	Ø�4à*.Ñ'ˆ�v˜xØ×9Ò9¸-ÑHÔHˆØÐ Ø�4à ×:Ò:Ñ<Ô<ÐØÐ$Ø�4å4ØØÝ˜6 8¨TÑ2Ô2ð
ñ 
ô 
ˆõ
 ,Ô1°"Ð6GÑHÔHÐØ  >°8Ð"<½dÀ6¹l¼lÐJÐJr^   c                 óÚ   — t          | j        dd ¦  «        }|sd S t          j                             |¦  «        }|€d S t          |dd ¦  «        }t          |t          j        ¦  «        r|S d S )Nr[   rõ  )rÞ   rØ   r  Úmodulesr�   r´   rÎ   r   )r}   Úmodule_nameÚmodulerõ  s       r_   r   z.UserFunctionVariable._lookup_tree_map_functionè  so   € Ý˜dœg |°TÑ:Ô:ˆØð 	Ø�4Ý”—’ Ñ-Ô-ˆØˆ>Ø�4Ý˜6 :¨tÑ4Ô4ˆÝ�h¥Ô 2Ñ3Ô3ð 	ØˆOØˆtr^   Úselector.c                 ó2  — |                      ¦   «         sd S 	 |                     ¦   «         }n# t          $ r Y d S w xY w|                      |¦  «        }|sd S t	          d„ |D ¦   «         ¦  «        sd S t          t                               |¦  «        ¦  «        S )Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r�   )r´   rÑ   )rš   rß  s     r_   rˆ  zDUserFunctionVariable._extract_tree_map_only_types.<locals>.<genexpr>  s,   è è € Ð>Ð>¨S•:˜c¥4Ñ(Ô(Ð>Ð>Ð>Ð>Ð>Ð>r^   )Úis_python_constantrþ   r  Ú_flatten_type_specÚallr¦   rˆ   Úfromkeys)r}   r  Ú	raw_valueÚ	flatteneds       r_   rÿ  z1UserFunctionVariable._extract_tree_map_only_typesô  s·   € ð ×*Ò*Ñ,Ô,ð 	Ø�4ð	Ø ×3Ò3Ñ5Ô5ˆIˆIøÝ"ð 	ð 	ð 	Ø�4�4ð	øøøð ×+Ò+¨IÑ6Ô6ˆ	Øð 	Ø�4ÝÐ>Ð>°IÐ>Ñ>Ô>Ñ>Ô>ð 	Ø�4Ý•T—]’] 9Ñ-Ô-Ñ.Ô.Ð.s   ˜- ­
;º;c                 ó´  — t          |t          ¦  «        r|gS t          |t          ¦  «        r8g }|D ]1}|                      |¦  «        }|€ d S |                     |¦  «         Œ2|S t          t          dd ¦  «        }|�Zt          ||¦  «        rJg }t          j        |¦  «        D ]1}|                      |¦  «        }|€ d S |                     |¦  «         Œ2|S d S )NÚ	UnionType)	r´   rÑ   r¦   r  ÚextendrÞ   rÎ   ÚtypingÚget_args)r}   rY  Ú	collectedÚentryÚflatÚ
union_types         r_   r  z'UserFunctionVariable._flatten_type_spec  s  € Ý�e�TÑ"Ô"ð 	Ø�7ˆNÝ�e�UÑ#Ô#ð 	Ø$&ˆIØð 'ð '�Ø×.Ò.¨uÑ5Ô5�Ø�<Ø˜4˜4Ø× Ò  Ñ&Ô&Ð&Ð&ØÐÝ�U K°Ñ6Ô6ˆ
ØÐ!¥j°¸
Ñ&CÔ&CÐ!ØˆIÝœ¨Ñ/Ô/ð 'ð '�Ø×.Ò.¨uÑ5Ô5�Ø�<Ø˜4˜4Ø× Ò  Ñ&Ô&Ð&Ð&ØÐØˆtr^   rí   c                 óR   — t          |t          j        ¦  «        o| j        |j        u S r�   )r´   r   rS  rØ   ©r}   rí   s     r_   Úis_python_equalz$UserFunctionVariable.is_python_equal  s%   € Ý˜%¥Ô!?Ñ@Ô@ÐXÀTÄWÐPUÔPXÐEXÐXr^   )F)7rZ   r[   r\   rÔ   rÎ   r   Ú_cpython_typerâ   Ú_nonvar_fieldsÚ	frozensetr÷  Úclassmethodr   r`  rb   ri  rj  rO  r�   rþ   rp  ru  r§   r@   ró   r&  rN  r	  rÑ   r}  r$  rˆ   rM  r   rK  r   r÷   rœ  r:  rB   rE  r¨  rA  rÚ  ræ  rç  rü  r¦   rå  r   rÿ  r  Úobjectr   rP  rQ  s   @r_   rS  rS  (  sj  ø€ € € € € Ø7Ð7ð Ô&€Mð 	Øðð 
"Ô	0ð€Nð "˜	ð	
ð 	
ð 	
ñô Ðð ð) sð )°Cð )Ð<Rð )ð )ð )ñ „[ð)ð "ðð àÔ ¤Ô!9Ñ9ðð ðð ð	ð
 
ðð ð ð ð ð ð>, Cð ,ð ,ð ,ð ,ð ,ð ,ð
ð 
ð 
ð6¨cð 6ð 6ð 6ð 6ð 6ð 6ð
˜4 Ô0ð ð ð ð ð˜eÔ0ð ð ð ð ð ˜%œ.ð  ð  ð  ð  ð"˜Tð "ð "ð "ð "ð>˜$ð >ð >ð >ð >ð#˜T # s (œ^ð #ð #ð #ð #ð°$ð ð ð ð ð˜Fð ð ð ð ðCà+ðCð �?Ô#ðCð �S˜/Ð)Ô*ð	Cð
 
ˆc�?Ð"Ô	#ðCð Cð Cð CðJ9Ø-ð9Ø58ð9à	ð9ð 9ð 9ð 9ð 9ð 9ð 1Ø-ð1Ø58ð1à	ð1ð 1ð 1ð 1ð
Và'ð
Vð ð
Vð ð	
Vð
 
ð
Vð 
Vð 
Vð 
Vð7à'ð7ð �?Ô#ð7ð �S˜/Ð)Ô*ð	7ð
 
ð7ð 7ð 7ð 7ð 7ð 7ðB2à'ð2ð �?Ô#ð2ð �S˜/Ð)Ô*ð	2ð
 
˜4Ñ	ð2ð 2ð 2ð 2ðh
 tð 
ð 
ð 
ð 
ð
°ð 
ð 
ð 
ð 
ð
¨Dð 
ð 
ð 
ð 
ð$Kà'ð$Kð �?Ô#ð$Kð �S˜/Ð)Ô*ð	$Kð 	Ø"Ø�Ô!Ø��oÐ%Ô&ð(ô	
ð
 ñ	ð$Kð $Kð $Kð $KðL
¨5Ô+=ÀÑ+Dð 
ð 
ð 
ð 
ð/Ø'ð/à	ˆt�SˆyÔ	˜DÑ	 ð/ð /ð /ð /ð"¨ð °°T´
¸TÑ0Að ð ð ð ð,Y Vð Y°ð Yð Yð Yð Yð Yð Yð Yð Yr^   rS  c                   óP   ‡ — e Zd ZdZdddee         deeef         defˆ fd„Zˆ xZ	S )ÚInspectSignatureVariablea¿  
    Variable tracker for inspect.signature with caching support.

    inspect.Signature is expensive to trace. When inspect.signature is called
    repeatedly on the same function during tracing, we cache the result to avoid
    retracing the signature construction each time. Although this is different
    from CPython behavior, it is safe to do so because inspect.signature does
    not change across different calls to the same function.
    r“   rH   r•   r–   r`   c                 ó”  •— t          |¦  «        dk    r’|s�|d         }d }t          |t          t          f¦  «        r|                     ¦   «         }|�T||j        j        v r|j        j        |         S t          ¦   «                              |||¦  «        }||j        j        |<   |S t          ¦   «                              |||¦  «        S rk   )	rŠ   r´   rS  rŒ  r&  rÀ   Úsignature_cacherå   rA  )r}   r“   r•   r–   Ú
target_argÚ	cache_keyr¸   ræ   s          €r_   rA  z&InspectSignatureVariable.call_function*  sÁ   ø€ õ ˆt‰9Œ9˜Š>ˆ> &ˆ>Ø˜aœˆJØˆIå˜*Õ';Õ=OÐ&PÑQÔQð 6Ø&×3Ò3Ñ5Ô5�	àÐ$Ø ¤	Ô 9Ð9Ð9Øœ9Ô4°YÔ?Ð?å™œ×.Ò.¨r°4¸Ñ@Ô@�Ø7=�”	Ô)¨)Ñ4Ø�å‰wŒw×$Ò$ R¨¨vÑ6Ô6Ð6r^   ©
rZ   r[   r\   rÔ   r§   r@   rˆ   rM  rA  rP  rQ  s   @r_   r'  r'    s|   ø€ € € € € ðð ð7à'ð7ð �?Ô#ð7ð �S˜/Ð)Ô*ð	7ð
 
ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7r^   r'  c                   ó¤   ‡ — e Zd Zdhej        £Zdeedf         dededdfˆ fd„Z	defd„Z
d	edefd
„Zdddee         deeef         defd„Zˆ xZS )r  r  .rñ  r–   r`   Nc                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S rƒ   )rå   r�   r  rñ  )r}   r  rñ  r–   ræ   s       €r_   r�   z$TreeMapOnlyFunctionVariable.__init__I  s5   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø*ˆÔØˆŒˆˆr^   c                 ó   — t           S r�   rË   rò   s    r_   r}  z'TreeMapOnlyFunctionVariable.python_typeS  ó   € ÝÐr^   Únodec                 ó’   ‡— 	 |                      ¦   «         Šn# t          $ r Y dS w xY wt          ˆfd„| j        D ¦   «         ¦  «        S )NFc              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r�   )Ú
issubclass)rš   ÚallowedÚ	node_types     €r_   rˆ  zDTreeMapOnlyFunctionVariable._matches_allowed_type.<locals>.<genexpr>[  s-   øè è € ÐTÐT°g•:˜i¨Ñ1Ô1ÐTÐTÐTÐTÐTÐTr^   )r}  r  rŠ  r  )r}   r1  r6  s     @r_   Ú_matches_allowed_typez1TreeMapOnlyFunctionVariable._matches_allowed_typeV  sc   ø€ ð	Ø×(Ò(Ñ*Ô*ˆIˆIøÝ"ð 	ð 	ð 	Ø�5�5ð	øøøåÐTÐTÐTÐTÀÔASÐTÑTÔTÑTÔTÐTs   ƒ ˜
&¥&r“   rH   r•   c                 ó  — |s| j                              |||¦  «        S |d         }|                      |¦  «        r| j                              |||¦  «        S t          |¦  «        dk    s|r| j                              |||¦  «        S |S )Nr   r<   )rñ  rA  r7  rŠ   )r}   r“   r•   r–   Úleafs        r_   rA  z)TreeMapOnlyFunctionVariable.call_function]  s“   € ð ð 	?Ø”;×,Ò,¨R°°vÑ>Ô>Ð>Ø�AŒwˆØ×%Ò% dÑ+Ô+ð 	?Ø”;×,Ò,¨R°°vÑ>Ô>Ð>Ýˆt‰9Œ9˜Š>ˆ>˜Vˆ>ð ”;×,Ò,¨R°°vÑ>Ô>Ð>Øˆr^   )rZ   r[   r\   râ   r"  r¦   rÑ   r@   r   r�   r}  rO  r7  r§   rˆ   rM  rA  rP  rQ  s   @r_   r  r  C  s  ø€ € € € € àðà	!Ô	0ð€Nð
à˜T 3˜YÔ'ðð  ðð ð	ð
 
ðð ð ð ð ð ð˜Tð ð ð ð ðU¨/ð U¸dð Uð Uð Uð Uðà'ðð �?Ô#ðð �S˜/Ð)Ô*ð	ð
 
ðð ð ð ð ð ð ð r^   r  c            
       ó¶  ‡ — e Zd Zej        Zdej        deee	f         ddde	ddf
ˆ fd„Z
dej        fd	„Zdefd
„Zdefd„Zdefd„Zdefd„Zdefd„Z defd„ZeZd%d„Zdeee	f         fd„Zdefd„Zdddedefd„Zdddefd„Zdddedefd„Zdddefd„Zded         fd„Zdddeddfd „Z defd!„Z!defd"„Z"ddded#e#e         deeef         def
ˆ fd$„Z$ˆ xZ%S )&ÚLocalGeneratorObjectVariabler~   rÇ   Úinline_tracerrF   r–   r`   Nc                 ód   •—  t          ¦   «         j        di |¤Ž || _        || _        || _        d S rƒ   )rå   r�   r~   rÇ   r<  )r}   r~   rÇ   r<  r–   ræ   s        €r_   r�   z%LocalGeneratorObjectVariable.__init__s  s>   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ	Ø"ˆŒØ*ˆÔÐÐr^   c                 ó   — | j         S r�   )r~   rò   s    r_   r	  z%LocalGeneratorObjectVariable.get_code  s
   € ØŒyÐr^   c                 ó4   — |                       ¦   «         j        S r�   r  rò   s    r_   r  z)LocalGeneratorObjectVariable.get_filename‚  r  r^   c                 ó4   — |                       ¦   «         j        S r�   r  rò   s    r_   r  z%LocalGeneratorObjectVariable.get_name…  r  r^   c                 ó    — t          d¦  «        ‚)Nr&  r  rò   s    r_   r&  z)LocalGeneratorObjectVariable.get_functionˆ  s   € Ý! .Ñ1Ô1Ð1r^   c                 ó   — dS ©NFr]   rò   s    r_   r$  z%LocalGeneratorObjectVariable.has_self‹  ó   € Øˆur^   c                 ó*   — |                       ¦   «         S r�   )r  rò   s    r_   rZ   z%LocalGeneratorObjectVariable.__name__Ž  s   € Ø�}Š}‰ŒÐr^   c                 óJ   — | j         j        › d|                      ¦   «         › d�S )Nú(r·  )ræ   rZ   r  rò   s    r_   Ú__str__z$LocalGeneratorObjectVariable.__str__‘  s&   € Ø”.Ô)Ð>Ð>¨D¯MªM©O¬OÐ>Ð>Ð>Ð>r^   rr  rE   c                 ó®  — ddl m} ddlm}m} |j        } ||¦  «        } ||¦  «        } ||¦  «        }|5  |5  |5  | j        }	|	j        st          || ¦  «        | _	        t          j        | j	        ¦  «                             |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )Ú"disallow_side_effects_in_generator)Ú save_and_restart_speculation_logÚ(temporarely_allow_writes_to_output_graph)Útorch._dynamo.side_effectsrJ  Útorch._dynamo.symbolic_convertrK  rL  r“   r<  Úgenerator_exhaustedr;   Úremaining_itemsr   ÚListIteratorVariableÚreconstruct)
r}   rr  rJ  rK  rL  r“   ÚsaveÚdisallowÚtempÚtracers
             r_   rR  z(LocalGeneratorObjectVariable.reconstruct–  s  € ØQÐQÐQÐQÐQÐQð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
 ŒZˆØ/Ð/°Ñ3Ô3ˆØ5Ð5°bÑ9Ô9ˆØ7Ð7¸Ñ;Ô;ˆàð 	Vð 	V�8ð 	Vð 	V˜Tð 	Vð 	VØÔ'ˆFØÔ-ð AÝ'6°r¸4Ñ'@Ô'@�Ô$ÝÔ*¨4Ô+?Ñ@Ô@×LÒLÈWÑUÔUÐUð		Vð 	Vð 	Vñ 	Vô 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vøøøð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vñ 	Vô 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vøøøð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vñ 	Vô 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vøøøð 	Vð 	Vð 	Vð 	Vð 	Vð 	VsX   ¹C
¼B2¿ABÂB2ÂBÂB2Â"BÂ#B2Â&C
Â2B6	Â6C
Â9B6	Â:C
Ã
CÃCc                 ó   — | j         S r�   ©rÇ   rò   s    r_   r   z(LocalGeneratorObjectVariable.get_globals¨  ó
   € ØŒ~Ðr^   c                 ó   — t           j        S r�   )rÎ   ÚGeneratorTyperò   s    r_   r}  z(LocalGeneratorObjectVariable.python_type«  s   € ÝÔ"Ð"r^   r“   rH   r­  c           	      ó(  — | j         }|                      ¦   «         rt          t          |¦  «         	 |                     |¦  «         |                     ¦   «         S # t          $ r}d|_        |‚d }~wt          $ r- t          ddddt          › d�gt          j        ¢¬¦  «         Y d S t          $ ra}t          j        j                             |                      ¦   «         ¦  «         d|_        |j        s|j        s|xj        dz  c_        ‚ d }~ww xY w)	NTzinfinite generator detectedÚ z}Dynamo traced the YIELD_VALUE bytecode too many times. This could mean that we have attempted to trace an infinite generator.zLIf you are sure that your generator is not infinite, please report a bug at ú.rc  zA

Skipping frame due to graph break in a generator's next() call.)r<  Ú_is_generator_exhaustedr    ÚStopIterationÚpushÚinline_call_r   rO  r   r#   ÚPT2_ISSUE_TRACKER_URLr   rÍ  r$   rb   r¼  Ú
eval_frameÚ	skip_coder	  Ú
skip_frameÚ	one_graphr²  rà  )r}   r“   r­  rV  rÝ  s        r_   Úgen_send_ex2z)LocalGeneratorObjectVariable.gen_send_ex2®  sW  € ð Ô#ˆà×'Ò'Ñ)Ô)ð 	8Ý$¥]°BÑ7Ô7Ð7ð	ð �KŠK˜ÑÔÐØ×&Ò&Ñ(Ô(Ð(øÝ ð 	ð 	ð 	Ø)-ˆFÔ&ØˆGøøøøÝ%ð 	ð 	ð 	åØ5ØðIð |ÕcxÐ{Ð{Ð{ðå&Ô1ðð	ñ 	ô 	ð 	ð 	ð 	ð 	õ ð 	ð 	ð 	ÝŒMÔ$×.Ò.¨t¯}ª}©¬Ñ?Ô?Ð?ØˆAŒLØ”<ð _¨Ô(?ð _Ø�”Ð^Ñ^�”Øøøøøð	øøøs*   ²(A Á
DÁ%	A.Á.6DÂ'	DÂ0ADÄDc                 óR   — |                       |t          j        d ¦  «        ¦  «        S r�   )rh  rB   r·   rú   s     r_   Útp_iternext_implz-LocalGeneratorObjectVariable.tp_iternext_implÓ  s$   € à× Ò  Õ%5Ô%<¸TÑ%BÔ%BÑCÔCÐCr^   rœ   c                 óˆ   — ||                       ¦   «         j        v rt          j        d¦  «        S t          j        d¦  «        S ©NTF)r}  r,  rB   r·   ©r}   r“   rœ   s      r_   rE  z-LocalGeneratorObjectVariable.call_obj_hasattr×  s@   € ð �4×#Ò#Ñ%Ô%Ô.Ð.Ð.Ý#Ô*¨4Ñ0Ô0Ð0ÝÔ& uÑ-Ô-Ð-r^   c                 ó   — | S r�   r]   rú   s     r_   Útp_iter_implz)LocalGeneratorObjectVariable.tp_iter_implÞ  s   € àˆr^   Fc                 ó   — dS rC  r]   rò   s    r_   rK  z=LocalGeneratorObjectVariable.should_allow_nested_graph_breaksã  rD  r^   Úexcc                 óž   — | j         }	 |                     |d¬¦  «         d S # t          $ r }|                     |¦  «         Y d }~d S d }~ww xY w)NT)Úset_context)r<  Ú_raise_exception_variabler   Úexception_handler)r}   r“   rq  rV  rÝ  s        r_   Ú_setup_exceptionz-LocalGeneratorObjectVariable._setup_exceptionæ  sw   € ð Ô#ˆð	(Ø×,Ò,¨S¸dÐ,ÑCÔCÐCÐCÐCøÝ ð 	(ð 	(ð 	(ð ×$Ò$ QÑ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'øøøøð	(øøøs   ‰" ¢
A¬AÁAc                 ó^   — t           j        dk     rd}nd}| j        d u p| j        j        |k    S )Nr  r   r<   )r  r  r<  Úinstruction_pointer)r}   Ú
first_insts     r_   Ú_is_generator_just_startedz7LocalGeneratorObjectVariable._is_generator_just_startedñ  s@   € ÝÔ˜gÒ%Ð%ØˆJˆJàˆJàÔ $Ð&ð DØÔ!Ô5¸ÒCð	
r^   c                 ó.   — t          | j        dd¦  «        S )NrO  F)rÞ   r<  rò   s    r_   r_  z4LocalGeneratorObjectVariable._is_generator_exhaustedû  s   € Ý�tÔ)Ð+@À%ÑHÔHÐHr^   r•   c                 ó4  •— |dk    rm|                       ¦   «         r=t          |¦  «        r.t          d„ |D ¦   «         ¦  «        st          t          |¦  «         |                      ||d         ¦  «        S |dk    �rŒ| j        }|                       ¦   «         s|                      ¦   «         r&d|_        t          j
                             d ¦  «        S 	 |                      |t          j        t          g ¦  «        ¦  «         t          j        dk    r6|j        j        dk    r&d|_        t          j
                             d ¦  «        S n6# t&          $ r) d|_        t          j
                             d ¦  «        cY S w xY w	 |                     ¦   «         rt          t*          |¦  «         �nM# t&          $ r) d|_        t          j
                             d ¦  «        cY S t,          $ r! |j        €t1          d¦  «        d ‚|j        cY S w xY w|d	k    rè| j        }	 |                      |t          |¦  «        d
k    r|d         n|d         ¦  «         n# t2          $ r ‚ w xY w|                     ¦   «         }t5          dt6          fi ¦  «        }	 |                      |t          j        |g ¦  «        ¦  «         |                     ¦   «          t          t*          |¦  «         n# t9          |¦  «        $ r Y nw xY w|S t;          ¦   «                              ||||¦  «        S )NÚsendc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r�   )Úis_constant_noner¬  s     r_   rˆ  z;LocalGeneratorObjectVariable.call_method.<locals>.<genexpr>  s.   è è € ÐBÐB°c˜3×/Ò/Ñ1Ô1ÐBÐBÐBÐBÐBÐBr^   r   ÚcloseT)r  é   ÚCALL_INTRINSIC_1z6expected symbolic_result to be set after StopIterationÚthrowr  r<   Ú__InternalThrowException)rz  rŠ   r  r    r¥   rh  r<  r_  rO  r   rB   r·   rv  ÚExceptionVariableÚGeneratorExitr  r  Únext_instructionÚopnamer   rb  rÀ  r   Úsymbolic_resultrÐ   r   rÑ   rÅ  r   rå   r  )	r}   r“   rœ   r•   r–   rV  ÚretvalÚexc_typeræ   s	           €r_   r  z(LocalGeneratorObjectVariable.call_methodþ  sn  ø€ ð �6Š>ˆ>ð ×.Ò.Ñ0Ô0ð <µS¸±Y´Yð <õ ÐBÐB¸TÐBÑBÔBÑBÔBð <Ý,­Y¸Ñ;Ô;Ð;Ø×$Ò$ R¨¨a¬Ñ1Ô1Ð1Ø�WŠ_‰_ð Ô'ˆFØ×.Ò.Ñ0Ô0ð ?°D×4PÒ4PÑ4RÔ4Rð ?Ø-1�Ô*Ý Ô1×8Ò8¸Ñ>Ô>Ð>ð?Ø×%Ò%Ø�	Ô3µMÀ2ÑFÔFñô ð õ( Ô$¨Ò/Ð/ØÔ/Ô6Ð:LÒLÐLà15�FÔ.Ý$Ô5×<Ò<¸TÑBÔBÐBøøÝ(ð ?ð ?ð ?à-1�Ô*Ý Ô1×8Ò8¸Ñ>Ô>Ð>Ð>Ð>ð?øøøð
.ð ×&Ò&Ñ(Ô(ð ?Ý,­\¸2Ñ>Ô>Ð>ùøÝ(ð ?ð ?ð ?Ø-1�Ô*Ý Ô1×8Ò8¸Ñ>Ô>Ð>Ð>Ð>Ý,ð 	.ð 	.ð 	.ð
 Ô)Ð1Ý(ØPñô àð ð Ô-Ð-Ð-Ð-ð	.øøøð �WŠ_ˆ_ð Ô'ˆFðð
 ×%Ò% bµS¸±Y´YÀ!²^°^¨$¨q¬'¨'ÈÈaÌÑQÔQÐQÐQøÝ$ð ð ð àðøøøð ×(Ò(Ñ*Ô*ˆFõ| Ð6½¸ÀbÑIÔIˆHð?Ø×%Ò% b­)Ô*EÀhÐPRÑ*SÔ*SÑTÔTÐTØ×#Ò#Ñ%Ô%Ð%õ
 )­°vÑ>Ô>Ð>Ð>øõ	 1°Ñ:Ô:ð ð ð à�ðøøøð
 ˆMå‰wŒw×"Ò" 2 t¨T°6Ñ:Ô:Ð:sI   ÃA3E Å0E:Å9E:Å>)F) Æ)0HÇ'HÈHÈ7I ÉIÊ	=K ËK1Ë0K1©rr  rE   r`   N)&rZ   r[   r\   rÎ   r[  r!  rN  rˆ   rM  r   r�   r	  r  r  r   r&  rO  r$  rH  Ú__repr__rR  r   rÑ   r}  r@   rh  rj  rB   rE  ro  r	   rK  rv  rz  r_  r§   r  rP  rQ  s   @r_   r;  r;  o  s3  ø€ € € € € àÔ'€Mð
+àŒnð
+ð ˜˜S˜”>ð
+ð @ð	
+ð
 ð
+ð 
ð
+ð 
+ð 
+ð 
+ð 
+ð 
+ð˜%œ.ð ð ð ð ð+˜cð +ð +ð +ð +ð'˜#ð 'ð 'ð 'ð 'ð2˜eð 2ð 2ð 2ð 2ð˜$ð ð ð ð ð˜#ð ð ð ð ð?˜ð ?ð ?ð ?ð ?ð €HðVð Vð Vð Vð$˜T # s (œ^ð ð ð ð ð#˜Tð #ð #ð #ð #ð#Ø-ð#Ø4Cð#à	ð#ð #ð #ð #ðJDÐ#>ð DÀ?ð Dð Dð Dð Dð.Ø-ð.Ø58ð.à	ð.ð .ð .ð .ðÐ:ð ¸ð ð ð ð ð
°'¸%´.ð ð ð ð ð	(Ø-ð	(Ø4Cð	(à	ð	(ð 	(ð 	(ð 	(ð
¨Dð 
ð 
ð 
ð 
ðI¨ð Ið Ið Ið Iðt;à'ðt;ð ðt;ð �?Ô#ð	t;ð
 �S˜/Ð)Ô*ðt;ð 
ðt;ð t;ð t;ð t;ð t;ð t;ð t;ð t;ð t;ð t;r^   r;  c                   ó   — e Zd ZdZdS )Ú4ContextlibContextManagerLocalGeneratorObjectVariablezö
    .. note::

        This is only used when the function is annotated with @contextlib.contextmanager

        It is a special case of a generator function as we do not allow return a context manager
        from a torch.compile function.
    N)rZ   r[   r\   rÔ   r]   r^   r_   r�  r�  µ  s   € € € € € ðð ð ð r^   r�  c            	       ó  ‡ — e Zd ZdZdefd„Zedœdedededdfˆ fd	„Z	d
e
defd„Zdej        fd„Zdee
ef         fd„Zdefd„Zdddee         dee
ef         ddfd„Zdddee         dee
ef         defd„Zdefd„Zˆ xZS )ÚLocalGeneratorFunctionVariablezxfunctions that behaves like iterators

    .. note::

        This is a wrapper around (Nested)UserFunctionVariable
    r`   c                 ó   — t           j        S r�   r|  rò   s    r_   r}  z*LocalGeneratorFunctionVariable.python_typeÊ  r~  r^   )Úgenerator_clsÚvtr“  r–   Nc                óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S rƒ   )rå   r�   r”  r“  )r}   r”  r“  r–   ræ   s       €r_   r�   z'LocalGeneratorFunctionVariable.__init__Í  s7   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒØ*ˆÔÐÐr^   rœ   c                 óh   — || j         j        v rt          | |¦  «        S t          | j        |¦  «        S r�   )ræ   r,  rÞ   r”  )r}   rœ   s     r_   Ú__getattr__z*LocalGeneratorFunctionVariable.__getattr__Ø  s4   € Ø�4”>Ô*Ð*Ð*Ý˜4 Ñ&Ô&Ð&Ý�t”w Ñ%Ô%Ð%r^   c                 ó4   — | j                              ¦   «         S r�   )r”  r	  rò   s    r_   r	  z'LocalGeneratorFunctionVariable.get_codeÞ  ó   € ØŒw×ÒÑ!Ô!Ð!r^   c                 ó4   — | j                              ¦   «         S r�   )r”  r   rò   s    r_   r   z*LocalGeneratorFunctionVariable.get_globalsá  s   € ØŒw×"Ò"Ñ$Ô$Ð$r^   c                 ó4   — | j                              ¦   «         S r�   )r”  r$  rò   s    r_   r$  z'LocalGeneratorFunctionVariable.has_selfä  r™  r^   r“   rH   r•   rG   c                 ó4   — ddl m}  |j        || ||¦  «        S )Nr   )rG   )rN  rG   Úbuild_inline_tracer)r}   r“   r•   r–   rG   s        r_   Ú_build_inline_tracerz3LocalGeneratorFunctionVariable._build_inline_tracerç  s;   € ð 	QÐPÐPÐPÐPÐPà@Ð,Ô@ØØØØñ	
ô 
ð 	
r^   c                 óð  — t          | j                             ¦   «         ¦  «        s9t          dt	          | j                             ¦   «         ¦  «        dddg¬¦  «         |                      |t          |¦  «        |¦  «        }| j                             ¦   «         }| j                             ¦   «         }t          j	        dk    r| 
                    ¦   «          |                      |||| j        ¬¦  «        S )Nz'non-generator contextlib.contextmanagerzvCannot compile function decorated with `@contextlib.contextmanager` that is not a generator, i.e. does not use `yield`z5Use `yield` in the function body instead of `return`.z2Remove the `@contextlib.contextmanager` decorator.rc  r  rö   )r   r”  r	  r#   rM  rž  r§   r   r  r  rb  r“  r±   )r}   r“   r•   r–   r<  r~   rÇ   s          r_   rA  z,LocalGeneratorFunctionVariable.call_functionö  sø   € õ ˜DœG×,Ò,Ñ.Ô.Ñ/Ô/ð 
	ÝØAÝ˜DœG×,Ò,Ñ.Ô.Ñ/Ô/ð.ð LØHðð	ñ 	ô 	ð 	ð ×1Ò1°"µd¸4±j´jÀ&ÑIÔIˆØŒw×ÒÑ!Ô!ˆØ”G×'Ò'Ñ)Ô)ˆ	åÔ˜wÒ&Ð&Ø×&Ò&Ñ(Ô(Ð(à×!Ò!ØØØØ”;ð	 "ñ 
ô 
ð 	
r^   c                 ó4   — | j                              ¦   «         S r�   )r”  ru  rò   s    r_   ru  z;LocalGeneratorFunctionVariable.get_real_python_backed_value  s   € ØŒw×3Ò3Ñ5Ô5Ð5r^   )rZ   r[   r\   rÔ   rÑ   r}  r;  râ   r   r�   rM  r—  rÎ   rN  r	  rˆ   r   rO  r$  r§   r@   rž  rA  r%  ru  rP  rQ  s   @r_   r‘  r‘  Â  sÂ  ø€ € € € € ðð ð"˜Tð "ð "ð "ð "ð ;ð		+ð 	+ð 	+à$ð	+ð ð		+ð
 ð	+ð 
ð	+ð 	+ð 	+ð 	+ð 	+ð 	+ð& ð &¨ð &ð &ð &ð &ð"˜%œ.ð "ð "ð "ð "ð%˜T # s (œ^ð %ð %ð %ð %ð"˜$ð "ð "ð "ð "ð
à'ð
ð �?Ô#ð
ð �S˜/Ð)Ô*ð	
ð
 
)ð
ð 
ð 
ð 
ð
à'ð
ð �?Ô#ð
ð �S˜/Ð)Ô*ð	
ð
 
ð
ð 
ð 
ð 
ð@6¨fð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6r^   r‘  c                   óh   ‡ — e Zd ZdZdededdfˆ fd„Zddd	ee         de	e
ef         dd
fˆ fd„Zˆ xZS )Ú3FunctionDecoratedByContextlibContextManagerVariablezm
    .. note::

        This is only used when the function is annotated with @contextlib.contextmanager
    r”  r–   r`   Nc                 óJ   •—  t          ¦   «         j        |fdt          i|¤Ž d S )Nr“  )rå   r�   r�  )r}   r”  r–   ræ   s      €r_   r�   z<FunctionDecoratedByContextlibContextManagerVariable.__init__#  sB   ø€ Ø�‰ŒÔØð	
ð 	
åNð	
ð ð	
ð 	
ð 	
ð 	
ð 	
r^   r“   rH   r•   rF   c                 óâ   •— t          ¦   «                              |||¦  «        }t          |t          j        j        j        ¦  «        st          dt          |¦  «        › �¦  «        ‚d|_	        |S )Nz5expected InliningGeneratorInstructionTranslator, got T)
rå   rž  r´   rb   r¼  Úsymbolic_convertrF   rÐ   rÑ   Úis_generator_from_ctx_manager)r}   r“   r•   r–   rV  ræ   s        €r_   rž  zHFunctionDecoratedByContextlibContextManagerVariable._build_inline_tracer*  st   ø€ õ ‘”×-Ò-¨b°$¸Ñ?Ô?ˆÝØÝŒMÔ*ÔQñ
ô 
ð 	õ !ØVÍÈVÉÌÐVÐVñô ð ð 04ˆÔ,Øˆr^   )rZ   r[   r\   rÔ   râ   r   r�   r§   r@   rˆ   rM  rž  rP  rQ  s   @r_   r¢  r¢    s°   ø€ € € € € ðð ð
Ð3ð 
¸sð 
Àtð 
ð 
ð 
ð 
ð 
ð 
ðà'ðð �?Ô#ðð �S˜/Ð)Ô*ð	ð
 
2ðð ð ð ð ð ð ð ð ð r^   r¢  c                   ó"  ‡ — e Zd ZdZej        Z	 ddedef         de	de
dz  deddf
ˆ fd	„Zdefd
„Zdedeeef         fd„Zdee	         fd„Zdeej                 fd„Zdddee	         deee	f         de	fˆ fd„Zdddede	fˆ fd„Zdefd„Zˆ xZS )rŒ  z$Some unsupported user-defined methodNrØ   .r¤  r�  r–   r`   c                 óà   •—  t          ¦   «         j        dd|i|¤Ž || _        || _        |€?|                     d¦  «        �,t          |                     d¦  «        d¦  «        | _        d S d S d S )NrØ   r±   Ú__func__r]   )rå   r�   r¤  r�  r�   r'   )r}   rØ   r¤  r�  r–   ræ   s        €r_   r�   zUserMethodVariable.__init__F  s}   ø€ ð 	�‰ŒÔÐ)Ð)˜BÐ) &Ð)Ð)Ð)ØˆŒØ"ˆŒð Ð §¢¨HÑ!5Ô!5Ð!AÝ'¨¯
ª
°8Ñ(<Ô(<¸jÑIÔIˆDŒNˆNˆNð ÐÐ!AÐ!Ar^   c                 ó@   — | j         j        › d| j        › d| j        › d�S )NrG  r¶  r·  )ræ   rZ   rØ   r¤  rò   s    r_   r�  zUserMethodVariable.__repr___  s*   € Ø”.Ô)ÐBÐB¨D¬GÐBÐB°t´xÐBÐBÐBÐBr^   r“   c                 óî   — | j         r0|j                             | j         ¦  «        }t          |¦  «        dfS ddlm}  ||| j        ¦  «        \  }}t          | j        ¦  «        }||z  }|dk    rd}||fS )NFr<   )Úgeneric_hash_impléÿÿÿÿr+  )r±   rÀ   Úresolve_source_valueÚhashrë   r¬  r¤  rØ   )r}   r“   Úreal_valr¬  Ú	self_hashÚ	self_fakeÚ	func_hashÚhs           r_   Ú	hash_implzUserMethodVariable.hash_implb  s�   € ð Œ;ð 	)Ø”y×5Ò5°d´kÑBÔBˆHÝ˜‘>”> 5Ð(Ð(à6Ð6Ð6Ð6Ð6Ð6à0Ð0°°T´XÑ>Ô>Ñˆ	�9Ý˜œ‘M”Mˆ	Ø˜	Ñ!ˆØ�Š7ˆ7ØˆAØ�)ˆ|Ðr^   c                 ó   — | j         gS r�   ©r¤  rò   s    r_   ró   zUserMethodVariable.self_argsr  ó   € Ø”ˆzÐr^   c                 ó   — t           j        S r�   ©rÎ   Ú
MethodTyperò   s    r_   r}  zUserMethodVariable.python_typeu  ó   € ÝÔÐr^   rH   r•   c                 ó¸  •— ddl m}m}  || j        ¦  «        r^g |                      ¦   «         ¢|¢}t          j        | j        t
          j        j        j	        ¬¦  «        }| 
                    |||¦  «        S  || j        ¦  «        r^g |                      ¦   «         ¢|¢}t          j        | j        t
          j        j        j        ¬¦  «        }| 
                    |||¦  «        S |j                             ¦   «         r•t          | j        t
          j        ¦  «        rvt#          | j        dd¦  «        }|�|                     d¦  «        r|dk    s| j        r;| j                             || j        j        t-          |¦  «        || j        ¬¦  «        S nUt.          �N| j        t.          j        j        u r6t          j        | j        ¦  «         
                    || j        g|¢|¦  «        S | j        rIt#          | j        j        | j        j        ¦  «        }	t9          ||	|                      ¦   «         ||¦  «        S t=          ¦   «          
                    |||¦  «        S )	Nr   )Úis_leaf_functionÚis_nonstrict_trace_callabler¸  r[   r]  z	torch.nn.ztorch.nn.utils.parametrize)Úconstant)Útrace_rulesr¾  r¿  rØ   ró   r   rÎ  rb   rÏ  rÐ  rA  ÚLEAF_FUNCTIONrÀ   Úis_root_tracerr´   r¤  ÚNNModuleVariablerÞ   r…  rT  r  rZ   r§   rD   ÚFSDPParamGroupÚuse_training_stateÚTorchCtxManagerClassVariablerY  rÑ  r  rå   )r}   r“   r•   r–   r¾  r¿  Ú	call_argsÚvarÚmodule_attrrØ   ræ   s             €r_   rA  z UserMethodVariable.call_functionx  sj  ø€ ð 	PÐOÐOÐOÐOÐOÐOÐOà&Ð& t¤wÑ/Ô/ð 	<Ø2˜$Ÿ.š.Ñ*Ô*Ð2¨TÐ2ˆIÝÔ8Ø”�iœoÔ>ÔNðñ ô ˆCð ×$Ò$ R¨°FÑ;Ô;Ð;àÐ˜DœGÑ$Ô$ð 	<Ø2˜$Ÿ.š.Ñ*Ô*Ð2¨TÐ2ˆIÝÔ8Ø”�iœoÔ>ÔLðñ ô ˆCð ×$Ò$ R¨°FÑ;Ô;Ð;ð Œ9×#Ò#Ñ%Ô%ð 	­*ØŒH•iÔ0ñ+
ô +
ð 	õ " $¤'¨<¸Ñ<Ô<ˆKð Ð'Ø×*Ò*¨;Ñ7Ô7ð (àÐ#?Ò?Ð?ØÔ#ð @ð ”x×+Ò+Ø˜œÔ(­$¨t©*¬*°fÀtÔGWð ,ñ ô ð ð @õ Ð)Ø”Õ,Ô;ÔNÐNÐNåÔ9¸$¼'ÑBÔB×PÒPØ�T”XÐ% Ð% vñô ð ð Ôð 	WÝ˜œœ¨¬Ô)9Ñ:Ô:ˆBÝ/°°B¸¿º¹¼ÈÈvÑVÔVÐVÝ‰wŒw×$Ò$ R¨¨vÑ6Ô6Ð6r^   rœ   c                 ó®   •— |dk    r| j         S |dk    r t          j        || j        | j        ¦  «        S t          ¦   «                              ||¦  «        S )Nr€  r©  )r¤  r@   rµ   rØ   r�  rå   r:  ©r}   r“   rœ   ræ   s      €r_   r:  zUserMethodVariable.var_getattr¼  sW   ø€ ð �:ÒÐØ”8ˆOØ�:ÒÐõ #Ô(¨¨T¬W°d´nÑEÔEÐEÝ‰wŒw×"Ò" 2 tÑ,Ô,Ð,r^   c                 ó   — | j         S r�   rx  rò   s    r_   ru  z/UserMethodVariable.get_real_python_backed_valueÈ  ry  r^   r�   )rZ   r[   r\   rÔ   rÎ   r»  r!  r   r   r@   r   r�   rM  r�  r¦   ÚintrO  rµ  r§   ró   rÑ   r}  rˆ   rA  r:  ru  rP  rQ  s   @r_   rŒ  rŒ  @  sÝ  ø€ € € € € Ø.Ð.ð Ô$€Mð $(ð	Jð Jà�S˜#�XÔðJð ðJð ˜D‘=ð	Jð
 ðJð 
ðJð Jð Jð Jð Jð Jð2C˜#ð Cð Cð Cð Cð˜Cð  E¨#¨t¨)Ô$4ð ð ð ð ð ˜4 Ô0ð ð ð ð ð ˜T %Ô"2Ô3ð  ð  ð  ð  ðB7à'ðB7ð �?Ô#ðB7ð �S˜/Ð)Ô*ð	B7ð
 
ðB7ð B7ð B7ð B7ð B7ð B7ðH
-Ø-ð
-Ø58ð
-à	ð
-ð 
-ð 
-ð 
-ð 
-ð 
-ð¨cð ð ð ð ð ð ð ð r^   rŒ  c                   óp   ‡ — e Zd Zdedddeddfˆ fd„Zdd	d
ee         dee	ef         defˆ fd„Z
dd„Zˆ xZS )ÚWrappedUserMethodVariableÚwrappedre  rI   r–   r`   Nc                 óÆ   •— |                      dd ¦  «         |                      dd ¦  «          t          ¦   «         j        |j        |j        fi |¤Ž || _        || _        d S )NrØ   r¤  )r    rå   r�   rØ   r¤  rÑ  re  ©r}   rÑ  re  r–   ræ   s       €r_   r�   z"WrappedUserMethodVariable.__init__Í  sd   ø€ ð 	�
Š
�4˜ÑÔÐØ�
Š
�5˜$ÑÔÐØ�‰ŒÔ˜œ W¤[Ð;Ð;°FÐ;Ð;Ð;ØˆŒØˆŒˆˆr^   r“   rH   r•   c                 óf  •— t           j        rLt          t          j        ¦  «        }|                     || j        | j        gt          |¦  «        z   |¦  «        S | j         	                    |¦  «         t          ¦   «                              |||¦  «        }| j                             |¦  «         |S r�   ©r   Únested_graph_breaksrS  r   Ú_fn_with_ctxrA  re  rÑ  r§   Úenterrå   Úexit©r}   r“   r•   r–   Ú
wrapper_fnr¸   ræ   s         €r_   rA  z'WrappedUserMethodVariable.call_functionÙ  ó¡   ø€ õ Ô%ð 	Ý-­iÔ.DÑEÔEˆJØ×+Ò+Ø�T”\ 4¤<Ð0µ4¸±:´:Ñ=¸vñô ð ð 	Œ×Ò˜2ÑÔÐÝ‘”×&Ò& r¨4°Ñ8Ô8ˆØŒ×Ò˜"ÑÔÐØˆr^   rr  rE   c                 ó¢   ‡ ‡— ‰                      ˆˆ fd„¦  «          ‰‰ j        ¦  «         ‰                     t          dd¦  «        ¦  «         d S )Nc                  ó$   •—  ‰ ‰j         ¦  «        S r�   ©re  ©rr  r}   s   €€r_   r2  z7WrappedUserMethodVariable.reconstruct.<locals>.<lambda>ê  ó   ø€  g g¨d¬lÑ&;Ô&;€ r^   r<   F©Úadd_push_nullrÑ  Úextend_outputr   rq  s   ``r_   rR  z%WrappedUserMethodVariable.reconstructé  ó\   øø€ Ø×ÒÐ;Ð;Ð;Ð;Ð;Ñ<Ô<Ð<Øˆ�”ÑÔÐØ×ÒÕ2°1°eÑ<Ô<Ñ=Ô=Ð=Ð=Ð=r^   rŒ  )rZ   r[   r\   rŒ  r   r�   r§   r@   rˆ   rM  rA  rR  rP  rQ  s   @r_   rÐ  rÐ  Ì  sÊ   ø€ € € € € ð
à#ð
ð +ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ðà'ðð �?Ô#ðð �S˜/Ð)Ô*ð	ð
 
ðð ð ð ð ð ð >ð >ð >ð >ð >ð >ð >ð >r^   rÐ  c                   óp   ‡ — e Zd Zdedddeddfˆ fd„Zdd	d
ee         dee	ef         defˆ fd„Z
dd„Zˆ xZS )ÚWrappedUserFunctionVariablerÑ  re  rI   r–   r`   Nc                 óŽ   •— |                      dd ¦  «          t          ¦   «         j        |j        fi |¤Ž || _        || _        d S )NrØ   )r    rå   r�   rØ   rÑ  re  rÓ  s       €r_   r�   z$WrappedUserFunctionVariable.__init__ð  sL   ø€ ð 	�
Š
�4˜ÑÔÐØ�‰ŒÔ˜œÐ.Ð. vÐ.Ð.Ð.ØˆŒØˆŒˆˆr^   r“   rH   r•   c                 óf  •— t           j        rLt          t          j        ¦  «        }|                     || j        | j        gt          |¦  «        z   |¦  «        S | j         	                    |¦  «         t          ¦   «                              |||¦  «        }| j                             |¦  «         |S r�   rÕ  rÚ  s         €r_   rA  z)WrappedUserFunctionVariable.call_functionû  rÜ  r^   rr  rE   c                 ó¢   ‡ ‡— ‰                      ˆˆ fd„¦  «          ‰‰ j        ¦  «         ‰                     t          dd¦  «        ¦  «         d S )Nc                  ó$   •—  ‰ ‰j         ¦  «        S r�   rß  rà  s   €€r_   r2  z9WrappedUserFunctionVariable.reconstruct.<locals>.<lambda>  rá  r^   r<   Frâ  rq  s   ``r_   rR  z'WrappedUserFunctionVariable.reconstruct  rå  r^   rŒ  )rZ   r[   r\   rS  r   r�   r§   r@   rˆ   rM  rA  rR  rP  rQ  s   @r_   rç  rç  ï  sÊ   ø€ € € € € ð	à%ð	ð +ð	ð ð		ð
 
ð	ð 	ð 	ð 	ð 	ð 	ðà'ðð �?Ô#ðð �S˜/Ð)Ô*ð	ð
 
ðð ð ð ð ð ð >ð >ð >ð >ð >ð >ð >ð >r^   rç  c                 óî   ‡‡— dt           dt          fˆfd„Šˆfd„|D ¦   «         }ˆfd„|                     ¦   «         D ¦   «         } ||i |¤Ž}| j                             |‰t          ‰¦  «        ¬¦  «        S )NÚxr`   c           
      óæ  •— |                       ¦   «         r"t          d| ¦  «                             ¦   «         S t          | t          ¦  «        r:| j        �,t          |                      t          j	        ¦  «        ¦  «         | j
        S 	 |                      ¦   «         S # t          $ rJ t          dd‰› dt          | ¦  «        j        › �dt          | ¦  «        j        › d‰› d�dd	g¬
¦  «         Y d S w xY w)NrO   z1assume_constant_result argument conversion failedz	function z, variable type z Cannot convert argument of type z# to a Python constant for function zm marked with torch._dynamo.assume_constant_result. The variable tracker does not support constant conversion.z>Remove torch._dynamo.assume_constant_result from this functionzIEnsure all arguments passed to the function can be converted to constantsrc  )Ú	is_tensorr   Úget_real_valuer´   rC   r±   r&   r¡   r%   ÚID_MATCHrY  rþ   r=   r#   rÑ   rZ   )rí  rœ   s    €r_   Úconvertz-invoke_and_store_as_constant.<locals>.convert  s&  ø€ Ø�;Š;‰=Œ=ð 	>ÝÐ(¨!Ñ,Ô,×;Ò;Ñ=Ô=Ð=Ý�aÕ2Ñ3Ô3ð 	ØŒxÐ#Ý˜aŸlšl­<Ô+@ÑAÔAÑBÔBÐBØ”7ˆNð	Ø×'Ò'Ñ)Ô)Ð)øÝ2ð 	ð 	ð 	ÝØKØL DÐLÐL½$¸q¹'¼'Ô:JÐLÐLðN½tÀA¹w¼wÔ?Oð Nð NØ $ðNð Nð Nð UØ_ðð
ñ 
ô 
ð 
ð 
ð 
ð 
ð	øøøs   ÂB ÂAC0Ã/C0c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r]   r]   )rš   rí  rò  s     €r_   r®  z0invoke_and_store_as_constant.<locals>.<listcomp>.  s!   ø€ Ð%Ð%Ð%˜1ˆGˆG�A‰JŒJÐ%Ð%Ð%r^   c                 ó.   •— i | ]\  }}| ‰|¦  «        “ŒS r]   r]   )rš   r»   r¼   rò  s      €r_   r�   z0invoke_and_store_as_constant.<locals>.<dictcomp>/  s'   ø€ Ð7Ð7Ð7¡  1ˆa��˜‘”Ð7Ð7Ð7r^   rö   )r@   r   rº   rÀ   Úregister_attr_or_moduler*   )r“   rØ   rœ   r•   r–   Úresrò  s     `   @r_   rÑ  rÑ    s°   øø€ ð•?ð ¥sð ð ð ð ð ð ð, &Ð%Ð%Ð% Ð%Ñ%Ô%€DØ7Ð7Ð7Ð7¨¯ª©¬Ð7Ñ7Ô7€FØ
ˆ"ˆdÐ
�fÐ
Ð
€CØŒ9×,Ò,ØØÝ˜dÑ#Ô#ð -ñ ô ð r^   c                   ó&  ‡ — e Zd Zdhej        £Z	 d%dededeeef         dedz  dedz  dedz  dedz  d	ed
dfˆ fd„Z	d
e
e         fd„Zd
ej        fd„Zded
dfˆ fd„Zd
ej        fd„Zd
eej                 fd„Zd%dee         dz  d
ej        fd„Zd
efd„Zdee         d
ej        fd„Zddded
efˆ fd„Zd
efd„Zddded
efˆ fd„Zddded
efˆ fd„Zd
efd„Zd
eeef         fd„Z ddd e
e         d	eeef         d
eeef         fd!„Z!d&d$„Z"ˆ xZ#S )'ÚNestedUserFunctionVariablerÇ   Nrá  r~   r…   r‡   rÈ   Ú
wrapped_fnr–   r`   c                 óÜ  •— |                      d¦  «        €"|                     t          ¦   «         ¬¦  «          t          ¦   «         j        di |¤Ž t          |                     ¦   «         t          ¦  «        s1t          dt          |                     ¦   «         ¦  «        › �¦  «        ‚t          |                     ¦   «         t          j        ¦  «        s1t          dt          |                     ¦   «         ¦  «        › �¦  «        ‚t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|| _        || _        || _        || _        || _        || _        || _        d S )Nr0  r/  zfn_name must be a str, got zcode must be a CodeType, got zf_globals must be a dict, got r]   )r�   Úupdater>   rå   r�   r´   rþ   rM  rÐ   rÑ   rÎ   rN  rˆ   rá  r~   rÇ   r…   r‡   rÈ   rù  )
r}   rá  r~   rÇ   r…   r‡   rÈ   rù  r–   ræ   s
            €r_   r�   z#NestedUserFunctionVariable.__init__>  sX  ø€ ð �:Š:�oÑ&Ô&Ð.Ø�MŠMÕ(<Ñ(>Ô(>ˆMÑ?Ô?Ð?Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý˜'×4Ò4Ñ6Ô6½Ñ<Ô<ð 	Ý ØR­d°7×3MÒ3MÑ3OÔ3OÑ.PÔ.PÐRÐRñô ð õ ˜$×1Ò1Ñ3Ô3µU´^ÑDÔDð 	Ý ØQµ°T×5LÒ5LÑ5NÔ5NÑ0OÔ0OÐQÐQñô ð õ ˜)¥TÑ*Ô*ð 	UÝ Ð!SÅ$ÀyÁ/Ä/Ð!SÐ!SÑTÔTÐTØˆŒØˆŒ	Ø"ˆŒØ ˆŒØ$ˆŒØˆŒØ2<ˆŒˆˆr^   c                 ó   — g S r�   r]   rò   s    r_   ró   z$NestedUserFunctionVariable.self_args`  rô   r^   c                 ó*   — |                       ¦   «         S r�   )r&  rò   s    r_   rþ   z-NestedUserFunctionVariable.as_python_constantc  s   € Ø× Ò Ñ"Ô"Ð"r^   r“   r@   c                 óð   •— 	 t          ¦   «                              |¦  «        S # t          $ rG}t          dd| j                             ¦   «         › d|› �dg t          j        ¢¬¦  «         Y d }~d S d }~ww xY w)Nz8repr() on nested function with non-constructible closurezrepr() on nested function z: z‚Dynamo could not safely evaluate repr() for this nested function because it could not reconstruct its closure as Python constants.rc  )rå   rÿ   rY   r#   rá  rþ   r   ÚSUPPORTABLE)r}   r“   rÝ  ræ   s      €r_   rÿ   z$NestedUserFunctionVariable.repr_implf  s¬   ø€ ð
	Ý‘7”7×$Ò$ RÑ(Ô(Ð(øÝ%ð 	ð 	ð 	ÝØRØ]°T´\×5TÒ5TÑ5VÔ5VÐ]Ð]ÐZ[Ð]Ð]ð'ð 7Õ)Ô5Ð6ðñ ô ð ð ð ð ð ð ð øøøøð	øøøs   ƒ $ ¤
A5®<A0Á0A5c                 ó4   — | j                              ¦   «         S r�   )r~   rþ   rò   s    r_   r	  z#NestedUserFunctionVariable.get_codes  s   € ØŒy×+Ò+Ñ-Ô-Ð-r^   c                 ó   — t           j        S r�   r|  rò   s    r_   r}  z&NestedUserFunctionVariable.python_typev  r~  r^   Ú_convertingc                 ó`  — ddl m} t          | ¦  «        }|€t          ¦   «         }||v rt	          d¦  «        ‚|                     |¦  «         	 |                      |¦  «        |                     |¦  «         S # |$ r}t	          d¦  «        |‚d }~ww xY w# |                     |¦  «         w xY w)Nr<   )r=   z-cycle detected in mutually recursive closuresz1failed to convert closure cell to Python constant)Úbaser=   ÚidÚsetrY   ÚaddÚ_get_function_implÚdiscard)r}   r  r=   Úself_idrÝ  s        r_   r&  z'NestedUserFunctionVariable.get_functiony  sé   € ð 	>Ð=Ð=Ð=Ð=Ð=å�T‘(”(ˆØÐÝ™%œ%ˆKØ�kÐ!Ð!Ý(Ø?ñô ð ð 	�Š˜Ñ Ô Ð ð	)Ø×*Ò*¨;Ñ7Ô7ð ×Ò Ñ(Ô(Ð(Ð(øð 3ð 	ð 	ð 	Ý(ØCñô àðøøøøð	øøøøð
 ×Ò Ñ(Ô(Ð(Ð(øøøs$   ÁA9 Á9BÁ>BÂBÂB ÂB-c                 ó`   — 	 |                       ¦   «          dS # t          t          f$ r Y dS w xY wrl  )rþ   r  r$   rò   s    r_   r  z-NestedUserFunctionVariable.is_python_constant�  sE   € ð	Ø×#Ò#Ñ%Ô%Ð%Ø�4øÝ#¥[Ð1ð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ ˜-¬-c                 óT  — d }| j         rÍddlm} |                     ¦   «         }g }| j         j        D ]•}|j        j                             |¦  «        }|| u rt          d¦  «        ‚t          |t          ¦  «        r|                     |¦  «        }n|                     ¦   «         }|                     t          |¦  «        ¦  «         Œ–t          |¦  «        }t!          j        | j                             ¦   «         | j        | j                             ¦   «         d |¬¦  «        }	| j        r| j                             ¦   «         |	_        | j        r| j                             ¦   «         |	_        | j        r´| j                             d¦  «        rš| j                             d¦  «                             ¦   «         }
t          |
t          ¦  «        rddlm} t=           ||
¦  «        ¦  «        }
t          |
t<          ¦  «        st?          dtA          |
¦  «        › �¦  «        ‚|
|	_!        |	S )Nr   )ÚInstructionTranslatorz self-referential nested function)ÚargdefsrÈ   rÒ   rÌ   z annotations must be a dict, got )"rÈ   rN  r  Ú
current_txrº   rÀ   rÁ   Ú	load_cellrY   r´   rø  r&  rþ   Úappendr:   r¦   rÎ   r   r~   rÇ   rá  r…   r„   r‡   r†   rã   r6  r7  rÏ   rÍ   rˆ   rÐ   rÑ   rÒ   )r}   r  Úclosure_cellsr  r“   Úcellsr˜  r�  rY  ri   rÉ   rÍ   s               r_   r  z-NestedUserFunctionVariable._get_function_impl–  s5  € ØˆØŒ<ð 	)ØLÐLÐLÐLÐLÐLà&×1Ò1Ñ3Ô3ˆBØˆEà œLÔ.ð /ð /�ð !#¤	Ô 6× @Ò @ÀÑ JÔ J�ð ! DÐ(Ð(Ý0Ð1SÑTÔTÐTõ ˜mÕ-GÑHÔHð ?Ø)×6Ò6°{ÑCÔC�E�Eà)×<Ò<Ñ>Ô>�EØ—’�Y uÑ-Ô-Ñ.Ô.Ð.Ð.Ý! %™LœLˆMåÔ!ØŒI×(Ò(Ñ*Ô*ØŒNØŒL×+Ò+Ñ-Ô-ØØ!ð
ñ 
ô 
ˆð Œ=ð 	CØ $¤× @Ò @Ñ BÔ BˆDÔØŒ?ð 	GØ"&¤/×"DÒ"DÑ"FÔ"FˆDÔØŒ<ð 	/˜DœL×1Ò1Ð2CÑDÔDð 	/Øœ,×.Ò.Ð/@ÑAÔA×TÒTÑVÔVˆKÝ˜+¥uÑ-Ô-ð :Ø.Ð.Ð.Ð.Ð.Ð.å" 8 8¨KÑ#8Ô#8Ñ9Ô9�õ ˜k­4Ñ0Ô0ð Ý$ØJµt¸KÑ7HÔ7HÐJÐJñô ð ð $/ˆDÔ Øˆr^   rH   rœ   c           
      ó   •— |dv r"t          ¦   «                              ||¦  «        S |dk    r;t          | dd ¦  «        }|r|                     ¦   «         nt	          j        d ¦  «        S |t          v r<t          j        | |t          t          t          j        |¦  «        ¦  «        ¬¦  «        S t          ¦   «                              ||¦  «        S )N)rÒ   r,  rÔ   rl   r[   rZ   r\   r3  r„   r…   rŸ  )rå   r:  rÞ   rþ   rB   r·   r3   r   r¡  rÑ   rÎ   r   ©r}   r“   rœ   r†  ræ   s       €r_   r:  z&NestedUserFunctionVariable.var_getattrÑ  sÕ   ø€ ð ð 	
ð 	
ð 	
õ ‘7”7×&Ò& r¨4Ñ0Ô0Ð0Ø�>Ò!Ð!Ý˜˜j¨$Ñ/Ô/ˆAØ-.ÐQ�1×'Ò'Ñ)Ô)Ð)Õ4DÔ4KÈDÑ4QÔ4QÐQØÕ+Ð+Ð+ÝÔ,Ø�d¥D­µÔ1CÀTÑ)JÔ)JÑ$KÔ$Kðñ ô ð õ ‘7”7×&Ò& r¨4Ñ0Ô0Ð0r^   c                 ó   — | j         d uS r�   )rÈ   rò   s    r_   Úhas_closurez&NestedUserFunctionVariable.has_closureé  s   € ØŒ| 4Ð'Ð'r^   c                 ó  •— |dk    r|                       ¦   «         S |dk    r|                      ¦   «         S |dk    r)t          | dd ¦  «        }|r|                     ¦   «         nd S t	          ¦   «                              ||¦  «        S )NrZ   rl   r„   r…   )r  r	  rÞ   rþ   rå   Úconst_getattrr  s       €r_   r  z(NestedUserFunctionVariable.const_getattrì  s‡   ø€ Ø�:ÒÐØ—=’=‘?”?Ð"Ø�:ÒÐØ—=’=‘?”?Ð"Ø�>Ò!Ð!Ý˜˜j¨$Ñ/Ô/ˆAØ-.Ð8�1×'Ò'Ñ)Ô)Ð)°DÐ8Ý‰wŒw×$Ò$ R¨Ñ.Ô.Ð.r^   c                 ój  •— |dk    r#t          j        |t          | d¦  «        ¦  «        S |dk    r#t          j        |t          | d¦  «        ¦  «        S t          j        |¦  «        }||                      |¦  «        v rt          j        d¦  «        S t          ¦   «                              ||¦  «        S )Nrl   r~   r„   r…   T)r@   rµ   rC  rB   r·   rû   rå   rE  )r}   r“   rœ   r”  ræ   s       €r_   rE  z+NestedUserFunctionVariable.call_obj_hasattrö  s©   ø€ ð �:ÒÐÝ"Ô(¨­W°T¸6Ñ-BÔ-BÑCÔCÐCØ�>Ò!Ð!Ý"Ô(¨­W°T¸:Ñ-FÔ-FÑGÔGÐGÝÔ$ TÑ*Ô*ˆØ�×!Ò! "Ñ%Ô%Ð%Ð%Ý#Ô*¨4Ñ0Ô0Ð0Ý‰wŒw×'Ò'¨¨DÑ1Ô1Ð1r^   c                 ó   — dS rC  r]   rò   s    r_   r$  z#NestedUserFunctionVariable.has_self  rD  r^   c                 ó   — | j         S r�   rX  rò   s    r_   r   z&NestedUserFunctionVariable.get_globals  rY  r^   r¾   r•   c                 óH  — |                       ¦   «         }t          j        || j        | j                             ¦   «         | j        rt          | j        j        ¦  «        nd t          d„ t          t          |                       ¦   «         j        ¦  «        ¦  «        D ¦   «         ¦  «        ¦  «        }| j        r| j                             ¦   «         |_         t          j        |¦  «        j        |i |¤Ž}|                     ¦   «          t'          |j                             ¦   «         ¦  «        }t+          |j        j        |¦  «         t1          |||¦  «         t3          |j        ¦  «        D ]3\  }}	|	|v rt5          d|	›d�¦  «        ‚| j        j        |         }
|
||	<   Œ4|S )Nc              3   ó4   K  — | ]}t          d ¦  «        V — Œd S r�   )r:   )rš   Ú_s     r_   rˆ  z7NestedUserFunctionVariable.bind_args.<locals>.<genexpr>  s(   è è € ÐSÐS a•)˜D‘/”/ÐSÐSÐSÐSÐSÐSr^   zfree variable z already in result)r	  rÎ   r   rÇ   rá  rþ   r…   r¦   rº   r‹   rŠ   r’  r‡   Úkeys_as_python_constantr†   rÚ   rÁ  rÂ  rÇ  rˆ   rÃ  r½   rÀ   r‘  rÆ   rŸ   rÐ   rÈ   )r}   r¾   r•   r–   r~   ri   rQ   r¸   r«   rœ   r—  s              r_   rœ  z$NestedUserFunctionVariable.bind_args  s†  € ð �}Š}‰ŒˆÝÔ!ØØŒNØŒL×+Ò+Ñ-Ô-Ø*.¬-ÐA�E�$”-Ô%Ñ&Ô&Ð&¸TÝÐSÐS­5µ°T·]²]±_´_Ô5PÑ1QÔ1QÑ+RÔ+RÐSÑSÔSÑSÔSñ
ô 
ˆð Œ?ð 	LØ"&¤/×"IÒ"IÑ"KÔ"KˆDÔØ,•Ô! $Ñ'Ô'Ô,¨dÐ=°fÐ=Ð=ˆØ×ÒÑÔÐÝ�e”o×+Ò+Ñ-Ô-Ñ.Ô.ˆÝ˜œÔ.°Ñ7Ô7Ð7Ý�f˜f dÑ+Ô+Ð+å" 4Ô#3Ñ4Ô4ð 	 ð 	 ‰IˆC�Ø�vˆ~ˆ~Ý$Ð%P°dÐ%PÐ%PÐ%PÑQÔQÐQØ”<Ô% cÔ*ˆDØˆF�4‰LˆLàˆr^   rr  rE   c                 óÜ  ‡— ‰                      ˆfd„¦  «          ‰| j        ¦  «         ‰                     ‰                     | j        ¦  «        g¦  «          ‰t          j        | j        j        j        ¦  «        ¦  «         | j	        r ‰| j	        ¦  «         n)‰                     ‰ 
                    d ¦  «        g¦  «         | j        r ‰| j        ¦  «         n)‰                     ‰ 
                    d ¦  «        g¦  «         | j        r ‰| j        ¦  «         n)‰                     ‰ 
                    d ¦  «        g¦  «         | j        rŽ| j                             d¦  «        rt| j                             d¦  «        }	 |                     ¦   «         }‰                     ‰                     |¦  «        g¦  «         nD# t"          $ r  ‰|¦  «         Y n-w xY w‰                     ‰ 
                    d ¦  «        g¦  «         ‰                     t%          dd¦  «        ¦  «         | j        r�‰                      ˆfd„¦  «          ‰| j        ¦  «         ‰                     t%          dd¦  «        ¦  «         ‰                     t)          d¦  «        ¦  «         ‰                     t%          dd¦  «        ¦  «         ‰j        }|j        j                             | ¦  «        r…|j        j        j        |                               ¦   «         D ]]\  }}‰                     ¦   «           ‰|¦  «         ‰                     t)          d¦  «        ¦  «         ‰                     |¦  «         Œ\d S d S )	Nc                  ó:   •— ‰                       t          d¦  «        S )NrÓ   )Úload_import_fromrZ   ©rr  s   €r_   r2  z8NestedUserFunctionVariable.reconstruct.<locals>.<lambda>(  s   ø€ �G×,Ò,­XÐ7JÑKÔK€ r^   rÒ   é   Fc                  ó0   •— ‰                       dd¦  «        S )NÚ	functoolsÚwraps©r#  r$  s   €r_   r2  z8NestedUserFunctionVariable.reconstruct.<locals>.<lambda>M  s   ø€ ˜×0Ò0°¸gÑFÔF€ r^   r<   r   T)rã  r~   rä  Úcreate_load_const_uncheckedrÇ   rB   r·   rY  r  r…   Úcreate_load_constrÈ   r‡   rã   r6  r7  rþ   r  r   rù  r   r“   rÀ   rÁ   Úhas_pending_mutationÚstore_attr_mutationsrº   Údup_topÚ
store_attr)r}   rr  rÉ   r“   rœ   rY  s    `    r_   rR  z&NestedUserFunctionVariable.reconstruct&  s�  ø€ Ø×ÒØKÐKÐKÐKñ	
ô 	
ð 	
ð 	ˆ�”	ÑÔÐØ×Ò˜w×BÒBÀ4Ä>ÑRÔRÐSÑTÔTÐTØˆÕ Ô'¨¬	¬Ô(?Ñ@Ô@ÑAÔAÐAàŒ=ð 	EØˆG�D”MÑ"Ô"Ð"Ð"à×!Ò! 7×#<Ò#<¸TÑ#BÔ#BÐ"CÑDÔDÐDàŒ<ð 	EØˆG�D”LÑ!Ô!Ð!Ð!à×!Ò! 7×#<Ò#<¸TÑ#BÔ#BÐ"CÑDÔDÐDàŒ?ð 	EØˆG�D”OÑ$Ô$Ð$Ð$à×!Ò! 7×#<Ò#<¸TÑ#BÔ#BÐ"CÑDÔDÐDàŒ<ð 
	E˜DœL×1Ò1Ð2CÑDÔDð 
	EØœ,×.Ò.Ð/@ÑAÔAˆKð%Ø)×<Ò<Ñ>Ô>�Ø×%Ò%Ø×8Ò8¸ÑEÔEÐFñô ð ð øõ 'ð %ð %ð %Ø�˜Ñ$Ô$Ð$Ð$Ð$ð%øøøð ×!Ò! 7×#<Ò#<¸TÑ#BÔ#BÐ"CÑDÔDÐDà×ÒÕ2°1°eÑ<Ô<Ñ=Ô=Ð=àŒ?ð 	AØ×!Ò!ØFÐFÐFÐFñô ð ð ˆG�D”OÑ$Ô$Ð$Ø×!Ò!Õ"6°q¸%Ñ"@Ô"@ÑAÔAÐAØ×!Ò!¥,¨q¡/¤/Ñ2Ô2Ð2Ø×!Ò!Õ"6°q¸$Ñ"?Ô"?Ñ@Ô@Ð@ð ŒZˆØŒ9Ô!×6Ò6°tÑ<Ô<ð 	)Ø!œyÔ5ÔJØô çŠe‰gŒgð)ð )‘��eð —’Ñ!Ô!Ð!Ø�˜‘”�Ø×%Ò%¥l°1¡o¤oÑ6Ô6Ð6Ø×"Ò" 4Ñ(Ô(Ð(Ð(ð	)ð 	)ð)ð )s   Æ=G ÇGÇGr�   rŒ  )$rZ   r[   r\   râ   r"  r@   rˆ   rM  r   r�   r§   ró   rÎ   r   rþ   rÿ   rN  r	  rÑ   r}  r  rÎ  r&  rO  r  r  r:  r  r  rB   rE  r$  r   rœ  rR  rP  rQ  s   @r_   rø  rø  8  sS  ø€ € € € € àðà	!Ô	0ð€Nð .2ð =ð  =à ð =ð ð =ð ˜˜S˜”>ð	 =ð
 " DÑ(ð =ð $ dÑ*ð =ð ! 4Ñ'ð =ð $ dÑ*ð =ð ð =ð 
ð =ð  =ð  =ð  =ð  =ð  =ðD˜4 Ô0ð ð ð ð ð# EÔ$6ð #ð #ð #ð #ð˜Cð Ð$5ð ð ð ð ð ð ð.˜%œ.ð .ð .ð .ð .ð"˜T %Ô"4Ô5ð "ð "ð "ð "ð)ð )¨¨C¬°4©ð )À5ÔCUð )ð )ð )ð )ð, Dð ð ð ð ð9¨c°#¬hð 9¸5Ô;Mð 9ð 9ð 9ð 9ðv1Ø-ð1Ø58ð1à	ð1ð 1ð 1ð 1ð 1ð 1ð0(˜Tð (ð (ð (ð (ð/Ð ;ð /À3ð /È3ð /ð /ð /ð /ð /ð /ð
2Ø-ð
2Ø58ð
2à	ð
2ð 
2ð 
2ð 
2ð 
2ð 
2ð˜$ð ð ð ð ð˜T # s (œ^ð ð ð ð ðà+ðð �?Ô#ðð �S˜/Ð)Ô*ð	ð
 
ˆc�?Ð"Ô	#ðð ð ð ð<7)ð 7)ð 7)ð 7)ð 7)ð 7)ð 7)ð 7)r^   rø  c                   óp   ‡ — e Zd Zdedddeddfˆ fd„Zdd	d
ee         dee	ef         defˆ fd„Z
dd„Zˆ xZS )Ú!WrappedNestedUserFunctionVariablerÑ  re  rI   r–   r`   Nc           	      ó  •— |                      dd ¦  «         |                      dd ¦  «         |                      dd ¦  «         |                      dd ¦  «         |                      dd ¦  «         |                      dd ¦  «         |                      dd ¦  «         |                      dd ¦  «         t          ¦   «                              |j        |j        |j        |j        |j        |j        |j	        ¦  «         || _
        || _        d S )	Nrá  r~   rÇ   r…   r‡   rÉ   rÈ   rù  )r    rå   r�   rá  r~   rÇ   r…   r‡   rÈ   rù  rÑ  re  rÓ  s       €r_   r�   z*WrappedNestedUserFunctionVariable.__init__a  sü   ø€ ð 	�
Š
�9˜dÑ#Ô#Ð#Ø�
Š
�6˜4Ñ Ô Ð Ø�
Š
�; Ñ%Ô%Ð%Ø�
Š
�:˜tÑ$Ô$Ð$Ø�
Š
�< Ñ&Ô&Ð&Ø�
Š
�= $Ñ'Ô'Ð'Ø�
Š
�9˜dÑ#Ô#Ð#Ø�
Š
�< Ñ&Ô&Ð&Ý‰Œ×ÒØŒOØŒLØÔØÔØÔØŒOØÔñ	
ô 	
ð 	
ð ˆŒØˆŒˆˆr^   r“   rH   r•   c                 óf  •— t           j        rLt          t          j        ¦  «        }|                     || j        | j        gt          |¦  «        z   |¦  «        S | j         	                    |¦  «         t          ¦   «                              |||¦  «        }| j                             |¦  «         |S r�   rÕ  rÚ  s         €r_   rA  z/WrappedNestedUserFunctionVariable.call_function{  rÜ  r^   rr  rE   c                 ó¢   ‡ ‡— ‰                      ˆˆ fd„¦  «          ‰‰ j        ¦  «         ‰                     t          dd¦  «        ¦  «         d S )Nc                  ó$   •—  ‰ ‰j         ¦  «        S r�   rß  rà  s   €€r_   r2  z?WrappedNestedUserFunctionVariable.reconstruct.<locals>.<lambda>Œ  rá  r^   r<   Frâ  rq  s   ``r_   rR  z-WrappedNestedUserFunctionVariable.reconstruct‹  rå  r^   rŒ  )rZ   r[   r\   rø  r   r�   r§   r@   rˆ   rM  rA  rR  rP  rQ  s   @r_   r1  r1  `  sÊ   ø€ € € € € ðà+ðð +ðð ð	ð
 
ðð ð ð ð ð ð4à'ðð �?Ô#ðð �S˜/Ð)Ô*ð	ð
 
ðð ð ð ð ð ð >ð >ð >ð >ð >ð >ð >ð >r^   r1  c            	       ó  ‡ — e Zd Zddhej        £Zddededz  deddfˆ fd„Zd„ Zdefd„Z	defd	„Z
eded
edd fd„¦   «         Zdddee         deeef         defd„Zd„ Zdddedefd„Zdddedefd„Zdedefd„Zˆ xZS )ÚSkipFunctionVariablerY  ÚreasonNr–   r`   c                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S rƒ   )rå   r�   rY  r8  )r}   rY  r8  r–   ræ   s       €r_   r�   zSkipFunctionVariable.__init__¥  s2   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
ØˆŒˆˆr^   c                 ó*   — ddl m}  || |||¦  «        S rè   rê   rì   s        r_   rï   z%SkipFunctionVariable.richcompare_implª  rð   r^   c                 ó   — | j         S r�   ©rY  rò   s    r_   rþ   z'SkipFunctionVariable.as_python_constant¯  ó
   € ØŒzÐr^   c                 ó   — | j         S r�   r<  rò   s    r_   ru  z1SkipFunctionVariable.get_real_python_backed_value²  r=  r^   r±   c                 óX  — t          j        |dd¦  «        r]|}|}t          |dd¦  «        r(|j        }t	          |d¦  «        }t          |dd¦  «        °(|                     t          j        ¦  «         n«t          j        |¦  «        r\t          |d¦  «        rt          |j        t          j        ¦  «        r,t          |                     t          j        ¦  «        ¦  «         n;t!          |¦  «        s,t          |                     t          j        ¦  «        ¦  «          | ||¬¦  «        S )NÚ_torchdynamo_disableFÚ_torchdynamo_orig_callabler€  rö   )rÚ   rÛ   rÞ   rA  r'   r¡   r%   r]  Ú	isbuiltinrC  r´   r€  rÎ   Ú
ModuleTyper&   ÚBUILTIN_MATCHr8   )r_  rY  r±   Úguard_on_sourceÚguard_on_values        r_   r`  z'SkipFunctionVariable.create_with_sourceµ  s<  € õ Ô! %Ð)?ÀÑGÔGð 	Ið %ˆOØ"ˆNå˜.Ð*FÈÑNÔNð Ø!/Ô!J�Ý",Ø#Ð%Añ#ô #�õ ˜.Ð*FÈÑNÔNð ð ×&Ò&¥|Ô'AÑBÔBÐBÐBÝÔ˜uÑ%Ô%ð 	Iõ
 ˜5 *Ñ-Ô-ð MµØ”¥Ô 0ñ2ô 2ð Mõ ˜f×/Ò/µÔ0JÑKÔKÑLÔLÐLøÝ0°Ñ7Ô7ð 	Iõ ˜&×+Ò+­LÔ,FÑGÔGÑHÔHÐHØˆs�5 Ð(Ñ(Ô(Ð(r^   r“   rH   r•   c                 óT
  — | j         t          j        j        t          j        j        fv r@t          d„ |D ¦   «         ¦  «        r't          j        | | j         d„ |D ¦   «         Ž ¦  «        S | j         t          v rŒt          d„ |D ¦   «         ¦  «        rst          d„ | 
                    ¦   «         D ¦   «         ¦  «        rH | j         d„ |D ¦   «         i d„ |                     ¦   «         D ¦   «         ¤Ž}t          j        ||¦  «        S t          j        | j         dd¦  «        rOt          j        | j         d	d ¦  «        }t          d
t          | j         ¦  «        d| j         › d|› d�dg¬¦  «         d S | j         t           j        j        u rK|                     d¦  «        }|r|                     ¦   «         }t          dd|› d|› d�d|› �dg¬¦  «         d S | j         t           j        j        u rd|                     d¦  «        }|r|                     ¦   «         }nd}t          dd|› d|› dt-          |j        ¦  «        › d�d|› �dgd¬¦  «         d S | j         t           j        j        u r>	 t          d dd!d"g¬¦  «         d S # t2          $ r}t5          |j        ¦  «        d ‚d }~ww xY w| j         t8          j        j        u r~t?          |¦  «        d#v rC|sA|d$         }	|d%         }
tA          |	tB          ¦  «        rtE          |	j#        |
|	j$        ¬&¦  «        S t          d'd(| › d)|› d*|› �d+g tJ          j&        ¢¬¦  «         d S tN          j(        rMd%d,l)m*} | +                    || j         ¦  «        }tA          |tX          ¦  «        s| -                    |||¦  «        S t]          | j         d-d.¦  «        }t]          | j         d/d ¦  «        }|€d0nt          |¦  «        }	 t          j/        | j         ¦  «        }d1|› d2|› d3�}d4|› d5�g}d6|vr|d7|› d8�d9gz  }nÑ# t`          $ rÄ d:d;h}||v rd<|› d|› d5�}d=d>g}n«|�_| 1                    d?¦  «        rJd@|› d|› d�}dAg}t           j        j2         3                    |dBz   dB 4                    |¦  «        z   ¦  «         nJdC|› d|› dD�}dEdFg}t           j        j2         3                    |dBz   dB 4                    |¦  «        z   ¦  «         Y nw xY w|dGk    rdH}dIg}| j5        r| j5        }ndJdKl6m7}  || j         ¦  «        }t          dLdM|› dN|› dO|› �||¬¦  «         d S )PNc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r�   ©r  ©rš   Úas     r_   rˆ  z5SkipFunctionVariable.call_function.<locals>.<genexpr>à  sG   è è € ð X
ð X
Ø'(ˆA× Ò Ñ"Ô"ðX
ð X
ð X
ð X
ð X
ð X
r^   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r�   r«  rJ  s     r_   rˆ  z5SkipFunctionVariable.call_function.<locals>.<genexpr>ä  s.   è è € Ð FÐ F¸A ×!5Ò!5Ñ!7Ô!7Ð FÐ FÐ FÐ FÐ FÐ Fr^   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r�   rI  rJ  s     r_   rˆ  z5SkipFunctionVariable.call_function.<locals>.<genexpr>é  s.   è è € Ð9Ð9¨q�A×(Ò(Ñ*Ô*Ð9Ð9Ð9Ð9Ð9Ð9r^   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r�   rI  ©rš   r¼   s     r_   rˆ  z5SkipFunctionVariable.call_function.<locals>.<genexpr>ê  s.   è è € ÐDÐD¨q�A×(Ò(Ñ*Ô*ÐDÐDÐDÐDÐDÐDr^   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r�   r«  rJ  s     r_   rˆ  z5SkipFunctionVariable.call_function.<locals>.<genexpr>í  s.   è è € Ð7Ð7¨Q�!×&Ò&Ñ(Ô(Ð7Ð7Ð7Ð7Ð7Ð7r^   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r]   r«  ©rš   r»   r¼   s      r_   r�   z6SkipFunctionVariable.call_function.<locals>.<dictcomp>î  s*   € ÐHÐHÐH±°°A�1�a×*Ò*Ñ,Ô,ÐHÐHÐHr^   r@  FÚ_torchdynamo_disable_msgz1Skip calling `torch.compiler.disable()`d functionzSkip calling function `z>` since it was wrapped with `torch.compiler.disable` (reason: r·  z(Remove the `torch.compiler.disable` callrc  rà  z%Call to `torch._dynamo.graph_break()`z0Called `torch._dynamo.graph_break()` with args `z`, kwargs `ú`z$User-inserted graph break. Message: z.Remove the `torch._dynamo.graph_break()` call.r]  z$Call to `torch._dynamo.skip_frame()`z/Called `torch._dynamo.skip_frame()` with args `z`. Skipping frame r^  z#User-inserted skip frame. Message: z-Remove the `torch._dynamo.skip_frame()` call.T)rd  re  rf  rg  rf  z*Call to `torch._dynamo.step_unsupported()`zUser-inserted step_unsupported.z3Remove the `torch._dynamo.step_unsupported()` call.)r   r  r   r<   )r�  z!unsupported function.__get__ callzcall_function z, args: r±  z^Dynamo only supports function.__get__(func, obj[, cls]) where func is a user-defined function.©ÚSourcelessBuilderr\   z<unknown qualname>r[   z<unknown module>z?Dynamo developers have intentionally marked that the function `z` in file `z` should not be traced.zAvoid calling the function `z`.r¼  z:Apply `@torch._dynamo.dont_skip_tracing` to the function `zw` to force tracing into the function. More graph breaks may occur as a result of attempting to trace into the function.z Please file an issue to PyTorch.Ú_abcÚ	_warningsz6Dynamo does not know how to trace the Python builtin `z˜If you are attempting to call a logging function (e.g. `_warnings.warn`), you can try adding it to `torch._dynamo.config.reorderable_logging_functions`.zKPlease file an issue on GitHub so the PyTorch team can add support for it. rX  z*Dynamo cannot trace optree C/C++ function zi Consider using torch.utils._pytree - https://github.com/pytorch/pytorch/blob/main/torch/utils/_pytree.pyú
z/Dynamo does not know how to trace the builtin `zˆ.` This function is either a Python builtin (e.g. _warnings.warn) or a third-party C/C++ Python extension (perhaps created with pybind).zŒIf it is a Python builtin, please file an issue on GitHub so the PyTorch team can add support for it and see the next case for a workaround.a  If it is a third-party C/C++ Python extension, please either wrap it into a PyTorch-understood custom operator (see https://pytorch.org/tutorials/advanced/custom_ops_landing_page.html for more details) or, if it is traceable, use `torch.compiler.allow_in_graph`.Úallow_in_graphz°torch.compiler.allow_in_graph (or torch._dynamo.allow_in_graph) was called inside a compiled region. Dynamically annotating functions inside a compiled region is not supported.ziApply @torch.compiler.allow_in_graph as a decorator before compilation, not inside the compiled function.r   )Úget_skip_reasonz,Attempted to call function marked as skippedzmodule: z, qualname: z, skip reason: )8rY  Ú	importlibÚutilÚ	find_specÚmetadataÚversionr  r@   rµ   ÚRE_CONSTANT_FOLD_FNSÚvaluesrº   rÚ   rÛ   r#   rM  rb   r¼  Úgraph_breakr�   rþ   rf  r   Úf_codeÚstep_unsupportedr$   r"   rà  rÎ   r   rž  rŠ   r´   rS  rŒ  rØ   r±   r   rÿ  r   Údont_skip_tracingÚbuilderrV  r·   r7  rA  rÞ   Úgetfiler¥   r…  rc   Ú	warn_onceÚjoinr8  rÁ  r[  )r}   r“   r•   r–   r¸   rà  Úgraph_break_msgÚskip_frame_msgrÝ  Úfunc_varÚobj_varrV  Ú
rebuilt_fnÚqualnameÚ	module_orr
  Úpathrf  rg  Úknown_python_builtin_modulesr8  r[  s                         r_   rA  z"SkipFunctionVariable.call_function×  sœ  € ð Œ:�)œ.Ô2µIÔ4FÔ4NÐOÐOÐOÕTWð X
ð X
Ø,0ðX
ñ X
ô X
ñ U
ô U
ÐOõ #Ô(Ø�J�D”JÐ FÐ FÀÐ FÑ FÔ FÐGñô ð ð
 ŒJÕ.Ð.Ð.ÝÐ9Ð9°DÐ9Ñ9Ô9Ñ9Ô9ð /åÐDÐD°F·M²M±O´OÐDÑDÔDÑDÔDð /ð  �T”ZØ7Ð7°$Ð7Ñ7Ô7ðàHÐH¸¿º¹¼ÐHÑHÔHðð ˆFõ #Ô(¨¨VÑ4Ô4Ð4åÔ! $¤*Ð.DÀeÑLÔLð c	ÝÔ(¨¬Ð5OÐQUÑVÔVˆCÝØKÝ˜DœJ™œðA°d´jð Að AØ:=ðAð Að Að ?ððñ ô ð ð ð ð ŒZ�5œ=Ô4Ð4Ð4Ø$Ÿjšj¨Ñ/Ô/ˆOØð GØ"1×"DÒ"DÑ"FÔ"F�ÝØ?ØeÈ4ÐeÐeÐ\bÐeÐeÐeØTÀ?ÐTÐTàDðð	ñ ô ð ð ð ð ŒZ�5œ=Ô3Ð3Ð3Ø#ŸZšZ¨Ñ.Ô.ˆNØð $Ø!/×!BÒ!BÑ!DÔ!D��à!#�ÝØ>ðBÈ$ð Bð BÐ[að Bð BÝ"3°B´IÑ">Ô">ðBð Bð BàRÀ.ÐRÐRàCðð  ð	ñ 	ô 	ð 	ð 	ð 	ð ŒZ�5œ=Ô9Ð9Ð9ð
7ÝØHØØ AàMðð	ñ ô ð ð ð øõ ð 7ð 7ð 7Ý% a¤eÑ,Ô,°$Ð6øøøøð7øøøàŒZ�5Ô-Ô5Ð5Ð5õ �4‰yŒy˜FÐ"Ð"¨6Ð"Ø œ7�Ø˜qœ'�Ý˜hÕ(<Ñ=Ô=ð Ý-Ø œ W¸¼ðñ ô ð õ Ø;ØO¨ÐOÐO°tÐOÐOÀvÐOÐOð9à6Õ)Ô5Ð6ðñ ô ð ð ð õ Ô'ð FØ6Ð6Ð6Ð6Ð6Ð6ð /×5Ò5°b¸$¼*ÑEÔE�
å! *Õ.BÑCÔCð FØ%×3Ò3°B¸¸fÑEÔEÐEÝ˜tœz¨>Ð;OÑPÔPˆHÝ ¤
¨L¸$Ñ?Ô?ˆIØ09Ð0AÐ,Ð,ÅsÈ9Á~Ä~ˆKð8YÝ” t¤zÑ2Ô2�ð>ÐV^ð >ð >Ø $ð>ð >ð >ð ð
 @°8Ð?Ð?Ð?ð�ð  DÐ(Ð(ØðlÐU]ð lð lð lð ;ð	ñ �Eøøõ ð %Yð %Yð %YØ06¸Ð/DÐ,ØÐ <Ð<Ð<ð7Ø'ð7ð 7Ø*2ð7ð 7ð 7ð  ð
iðGð�E�Eð Ð*¨y×/CÒ/CÀHÑ/MÔ/MÐ*Ø"hÈ{Ð"hÐ"hÐ]eÐ"hÐ"hÐ"h�Kð^ð�Eõ
 ”MÔ'×1Ò1°+ÀÑ2DÀtÇyÂyÐQVÑGWÔGWÑ2WÑXÔXÐXÐXðbÈ+ð bð bÐX`ð bð bð bð  ðmð;ð�Eõ ”MÔ'×1Ò1°+ÀÑ2DÀtÇyÂyÐQVÑGWÔGWÑ2WÑXÔXÐXøøðK%YøøøðL Ð+Ò+Ð+ðAð ð8ð�ð Œ{ð 5Øœ��à9Ð9Ð9Ð9Ð9Ð9à(˜¨¬Ñ4Ô4�ÝØFØ] ;Ð]Ð]¸HÐ]Ð]ÐU[Ð]Ð]Ø'Øð	ñ ô ð ð ð s+   É&I< É<
J ÊJÊJ Ï8P ÐCSÓSc                 ób   — | j         r| j                              |¦  «        S t          d¦  «        ‚)NzBPython codegen not implemented for sourceless SkipFunctionVariablero  rq  s     r_   rp  z'SkipFunctionVariable.reconstruct_pycode—	  rs  r^   rœ   c                 óR   — t          j        |t          | j        |¦  «        ¦  «        S r�   )r@   rµ   rC  rY  rm  s      r_   rE  z%SkipFunctionVariable.call_obj_hasattrž	  s#   € õ Ô$ R­°´¸TÑ)BÔ)BÑCÔCÐCr^   c           
      óº   — |t           v r7t          j        | |t          t	          | j        |¦  «        ¦  «        ¬¦  «        S t          || j        | j        |¦  «        S )NrŸ  )r3   r   r¡  rÑ   rÞ   rY  rà   r±   rm  s      r_   r:  z SkipFunctionVariable.var_getattr£	  s_   € ð Õ)Ð)Ð)ÝÔ,Ø�d¥D­°´¸TÑ)BÔ)BÑ$CÔ$Cðñ ô ð õ ˜b $¤*¨d¬k¸4Ñ@Ô@Ð@r^   rí   c                 ó€   — t          |t          ¦  «        o)|                      ¦   «         |                     ¦   «         k    S r�   )r´   r@   rþ   r  s     r_   r   z$SkipFunctionVariable.is_python_equal­	  s:   € å�u�oÑ.Ô.ð HØ×'Ò'Ñ)Ô)¨U×-EÒ-EÑ-GÔ-GÒGð	
r^   r�   )rZ   r[   r\   r@   r"  r   rM  r�   rï   rþ   ru  r$  r   r`  r§   rˆ   rA  rp  rB   rE  r:  r%  rO  r   rP  rQ  s   @r_   r7  r7  ž  sâ  ø€ € € € € àØðð 
Ô	'ð€Nðð ˜cð ¨3°©:ð Èð ÐPTð ð ð ð ð ð ð
7ð 7ð 7ð
 Cð ð ð ð ð¨cð ð ð ð ð ð) sð )°Fð )Ð?Uð )ð )ð )ñ „[ð)ðB~à'ð~ð �?Ô#ð~ð �S˜/Ð)Ô*ð	~ð
 
ð~ð ~ð ~ð ~ð@
ð 
ð 
ðDØ-ðDØ58ðDà	ðDð Dð Dð Dð
AØ-ðAØ58ðAà	ðAð Að Að Að
 Vð 
°ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r^   r7  c                   óp   ‡ — e Zd Zdedddeddfˆ fd„Zdd	d
ee         dee	ef         defˆ fd„Z
dd„Zˆ xZS )ÚWrappedSkipFunctionVariablerÑ  re  rI   r–   r`   Nc                 óÈ   •— |                      dd ¦  «         |                      dd ¦  «          t          ¦   «         j        |j        fd|j        i|¤Ž || _        || _        d S )NrY  r8  )r    rå   r�   rY  r8  rÑ  re  rÓ  s       €r_   r�   z$WrappedSkipFunctionVariable.__init__µ	  sg   ø€ ð 	�
Š
�7˜DÑ!Ô!Ð!Ø�
Š
�8˜TÑ"Ô"Ð"Ø�‰ŒÔ˜œÐHÐH¨w¬~ÐHÀÐHÐHÐHØˆŒØˆŒˆˆr^   r“   rH   r•   c                 óf  •— t           j        rLt          t          j        ¦  «        }|                     || j        | j        gt          |¦  «        z   |¦  «        S | j         	                    |¦  «         t          ¦   «                              |||¦  «        }| j                             |¦  «         |S r�   rÕ  rÚ  s         €r_   rA  z)WrappedSkipFunctionVariable.call_functionÁ	  rÜ  r^   rr  rE   c                 ó¢   ‡ ‡— ‰                      ˆˆ fd„¦  «          ‰‰ j        ¦  «         ‰                     t          dd¦  «        ¦  «         d S )Nc                  ó$   •—  ‰ ‰j         ¦  «        S r�   rß  rà  s   €€r_   r2  z9WrappedSkipFunctionVariable.reconstruct.<locals>.<lambda>Ò	  rá  r^   r<   Frâ  rq  s   ``r_   rR  z'WrappedSkipFunctionVariable.reconstructÑ	  rå  r^   rŒ  )rZ   r[   r\   r7  r   r�   r§   r@   rˆ   rM  rA  rR  rP  rQ  s   @r_   ry  ry  ´	  sÊ   ø€ € € € € ð
à%ð
ð +ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ðà'ðð �?Ô#ðð �S˜/Ð)Ô*ð	ð
 
ðð ð ð ð ð ð >ð >ð >ð >ð >ð >ð >ð >r^   ry  c                   óä   ‡ — e Zd ZdZdefd„Zdedededdfˆ fd„Zdefd	„Z	defd
„Z
dej        fd„Zdddedefˆ fd„Zd„ Zdee         fd„Zdddee         deeef         defd„Zdefd„Zˆ xZS )ÚWrapperUserFunctionVariablea3  
    Used to represent a wrapper object that contains the actual callable as an
    attribute. For example, torch.jit.script/trace have the original function at
    their _torchdynamo_inline attribute. Similarly, functions with
    __script_if_tracing_wrapper have the original attr at "__original_fn".
    r`   c                 ó   — t           j        S r�   r|  rò   s    r_   r}  z'WrapperUserFunctionVariable.python_typeß	  r~  r^   Úwrapper_objÚattr_to_tracer–   Nc                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S rƒ   )rå   r�   r�  r‚  )r}   r�  r‚  r–   ræ   s       €r_   r�   z$WrapperUserFunctionVariable.__init__â	  s6   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø&ˆÔØ*ˆÔÐÐr^   c                 ó   — | j         j        S r�   )r�  r[   rò   s    r_   r(  z&WrapperUserFunctionVariable.get_moduleç	  s   € ØÔÔ*Ð*r^   c                 ó   — | j         j        S r�   )r�  rZ   rò   s    r_   r  z$WrapperUserFunctionVariable.get_nameê	  s   € ØÔÔ(Ð(r^   c                 ó4   — |                       ¦   «         j        S r�   )r&  rl   rò   s    r_   r	  z$WrapperUserFunctionVariable.get_codeí	  s   € Ø× Ò Ñ"Ô"Ô+Ð+r^   r“   rH   rœ   c                 óö   •— || j         k    rLt          | j        | j         ¦  «        }| j        ot	          | j        |¦  «        }t          j        |||¦  «        S t          ¦   «                              ||¦  «        S r�   )	r‚  rÞ   r�  r±   r'   r@   rµ   rå   r:  )r}   r“   rœ   r°   r±   ræ   s        €r_   r:  z'WrapperUserFunctionVariable.var_getattrð	  so   ø€ ð �4Ô%Ò%Ð%Ý˜$Ô*¨DÔ,>Ñ?Ô?ˆCØ”[ÐB¥Z°´¸TÑ%BÔ%BˆFÝ"Ô(¨¨S°&Ñ9Ô9Ð9Ý‰wŒw×"Ò" 2 tÑ,Ô,Ð,r^   c                 ó6   — t          | j        | j        ¦  «        S r�   ©rÞ   r�  r‚  rò   s    r_   r&  z(WrapperUserFunctionVariable.get_functionù	  ó   € Ý�tÔ'¨Ô);Ñ<Ô<Ð<r^   c                 ó   — g S r�   r]   rò   s    r_   ró   z%WrapperUserFunctionVariable.self_argsü	  rô   r^   r•   c           
      óÌ  — t          | j        d¦  «        �rôt          | j        | j        d ¦  «        }t          |dd¦  «        pd}t	          | j        ¦  «        }|                     dd¬¦  «        d         dk    �r�|�s�|                     ¦   «         }t          j         	                    |j
        ¦  «        }|j        }	d	|› d
|	› dd                     t          j        |g¦  «        ¦  «        › �}
t          j        j                             |
¦  «         t          j        j        j                             d¦  «        }|                     t&          j        ¦  «        r±t          j        j                             ¦   «         }t5          ¦   «         |z   }|d         j
        |d         j        f}d                     t          j        |¦  «        ¦  «        }d|d         › d
|d         › d�}|t7          |¦  «        z  }|                     |¦  «         |                      ¦   «         t=          |¦  «        z   }| j        dk    oKt          | j        dd¦  «        o5t          t          | j        dd ¦  «        dd ¦  «        |j        j         j!        u}|rtD          j#        ntD          j$        }tK          j&        ||¦  «         '                    || tK          j&        || j        ¦  «        g|¢|¦  «        S )NÚ
cache_infor[   r]  r^  r<   )Úmaxsplitr   rb   zGDynamo detected a call to a `functools.lru_cache`-wrapped function at 'ú:zî'. Dynamo ignores the cache wrapper and directly traces the wrapped function. Silent incorrectness is only a *potential* risk, not something we have observed. Enable TORCH_LOGS=+dynamo for a DEBUG stack trace.

This call originates from:
ztorch._dynamor­  z)call to a lru_cache wrapped function at: rY  rh  Ú_is_torch_compileFrA  rl   )(rC  r�  rÞ   r‚  r6   ÚsplitÚframe_summaryÚosrr  Úbasenamer‡  Úlinenorj  Ú	tracebackÚformat_listrb   r¼  rc   ri  ÚloggingÚ	getLoggerÚisEnabledForÚDEBUGÚ_guardsÚTracingContextÚextract_stackr   rM  Údebugró   r§   rÀ   r‘  rd  r   Ú(getattr_and_trace_no_nested_graph_breaksÚgetattr_and_tracer@   rµ   rA  )r}   r“   r•   r–   Ú	target_fnr
  Úis_allowed_lru_cache_wrapperr’  r‡  r•  rà  Údynamo_loggerÚ
user_stackÚ	frame_locÚuser_stack_formattedÚuser_stack_traceÚall_argsÚis_inner_torch_compileÚpolyfills                      r_   rA  z)WrapperUserFunctionVariable.call_functionÿ	  sö  € õ �4Ô# \Ñ2Ô2ñ #	:Ý Ô 0°$Ô2DÀdÑKÔKˆIÝ! )¨\¸2Ñ>Ô>ÐDÀ"ˆKåBÀ4ÔCSÑTÔTð )ð
 ×!Ò! #°Ð!Ñ2Ô2°1Ô5¸Ò@Ñ@Ø4ñ Að !#× 0Ò 0Ñ 2Ô 2�Ýœ7×+Ò+¨MÔ,BÑCÔC�Ø&Ô-�ðIØ$,ðIð IØ/5ðIð Ið —w’w�yÔ4°m°_ÑEÔEÑFÔFðIð Ið õ ”Ô#×-Ò-¨cÑ2Ô2Ð2å %¤Ô 3Ô ;× EÒ EÀoÑ VÔ V�Ø ×-Ò-­g¬mÑ<Ô<ð :Ý!&¤Ô!=×!KÒ!KÑ!MÔ!M�JÝ!7Ñ!9Ô!9¸JÑ!F�JØ!+¨B¤Ô!8¸*ÀR¼.Ô:OÐ P�IØ+-¯7ª7µ9Ô3HÈÑ3TÔ3TÑ+UÔ+UÐ(Ø'rÐS\Ð]^ÔS_Ð'rÐ'rÐbkÐlmÔbnÐ'rÐ'rÐ'rÐ$Ø$­Ð,@Ñ(AÔ(AÑAÐ$Ø!×'Ò'Ð(8Ñ9Ô9Ð9à—>’>Ñ#Ô#¥d¨4¡j¤jÑ0ˆð ÔÐ"7Ò7ð ,Ý˜Ô(Ð*=¸uÑEÔEð,åÝ˜Ô(Ð*FÈÑMÔMØØñô ð
 ”9Ô$Ô+ð,ð 	ð &ð-�IÔ>Ð>åÔ,ð 	õ
 Ô$ØØñ
ô 
÷ Š-ØØ•?Ô(¨¨TÔ-?Ñ@Ô@ÐLÀ8ÐLØñ
ô 
ð	
r^   c                 ó6   — t          | j        | j        ¦  «        S r�   r‰  rò   s    r_   ru  z8WrapperUserFunctionVariable.get_real_python_backed_valueI
  rŠ  r^   )rZ   r[   r\   rÔ   rÑ   r}  r   rM  r�   r(  r  rÎ   rN  r	  r@   r:  r&  r§   ró   rˆ   rA  r%  ru  rP  rQ  s   @r_   r  r  ×	  s£  ø€ € € € € ðð ð"˜Tð "ð "ð "ð "ð+ Cð +¸ð +Àsð +Ètð +ð +ð +ð +ð +ð +ð
+˜Cð +ð +ð +ð +ð)˜#ð )ð )ð )ð )ð,˜%œ.ð ,ð ,ð ,ð ,ð-Ø-ð-Ø58ð-à	ð-ð -ð -ð -ð -ð -ð=ð =ð =ð˜4 Ô0ð ð ð ð ðH
à'ðH
ð �?Ô#ðH
ð �S˜/Ð)Ô*ð	H
ð
 
ðH
ð H
ð H
ð H
ðT=¨fð =ð =ð =ð =ð =ð =ð =ð =r^   r  c            
       ó\   ‡ — e Zd ZdZdefd„Zdededededdf
ˆ fd	„Z	de
e         fd
„Zˆ xZS )ÚWrapperUserMethodVariablez×
    Similar to WrapperUserFunctionVariable, but for methods. The only delta is
    saving the vt for `self` object of the method which is then used by
    WrapperUserFunctionVariable in `call_function` method.
    r`   c                 ó   — t           j        S r�   rº  rò   s    r_   r}  z%WrapperUserMethodVariable.python_typeT
  r¼  r^   r�  r‚  Úself_objr–   Nc                 óL   •—  t          ¦   «         j        ||fi |¤Ž || _        d S r�   )rå   r�   r¤  )r}   r�  r‚  r°  r–   ræ   s        €r_   r�   z"WrapperUserMethodVariable.__init__W
  s1   ø€ ð 	�‰ŒÔ˜ mÐ>Ð>°vÐ>Ð>Ð>ØˆŒˆˆr^   c                 ó   — | j         gS r�   r·  rò   s    r_   ró   z#WrapperUserMethodVariable.self_argsa
  r¸  r^   )rZ   r[   r\   rÔ   rÑ   r}  r   rM  r@   r�   r§   ró   rP  rQ  s   @r_   r®  r®  M
  s²   ø€ € € € € ðð ð ˜Tð  ð  ð  ð  ðàðð ðð "ð	ð
 ðð 
ðð ð ð ð ð ð˜4 Ô0ð ð ð ð ð ð ð ð r^   r®  c                  óR   — t           j                             ¦   «         rddlm}  | S i S )Nr   ©Útraceable_collective_remaps)rb   ÚdistributedÚis_availableÚ)torch.distributed._functional_collectivesrµ  r´  s    r_   Ú_traceable_collective_remapsr¹  e
  sD   € åÔ×%Ò%Ñ'Ô'ð +ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð +Ð*Ø€Ir^   c                 ó  — t           j                             ¦   «         st          d¦  «        ‚|t	          ¦   «                              ¦   «         vrt          |› d�¦  «        ‚|j        }|                      d¦  «        }t          ||¦  «        S )NzIllegal invocation.z$ is not a traceable collective remapz)torch.distributed._functional_collectives)	rb   r¶  r·  rÐ   r¹  rb  rZ   Úimport_sourcer'   )r“   rØ   Ú
inner_nameÚpath_sources       r_   Ú_traceable_collectives_sourcer¾  p
  sŠ   € õ Ô×)Ò)Ñ+Ô+ð 4ÝÐ2Ñ3Ô3Ð3Ø	Õ-Ñ/Ô/×6Ò6Ñ8Ô8Ð8Ð8Ý ÐHÐHÐHÑIÔIÐIà”€JØ×"Ò"Ð#NÑOÔO€KÝ�k :Ñ.Ô.Ð.r^   c                   ó  ‡ — e Zd ZdZdedef         dededdfˆ fd„Zed	d
dedef         de	dedd f
d„¦   «         Z
ededefd„¦   «         Zed	d
dedef         deeef         fd„¦   «         Zd	d
dee         deeef         defd„Zˆ xZS )Ú!CollectiveFunctionRewriteVariablea÷  
    Some of the torch.distributed.* collective APIs are possible to rewrite to 'traceable' collectives.

    This class provides both a way to check if a function is remappable, and perform the remapping.

    In the case that a function is 'remappable' but only for some combinations of call-time arguments,
    we check the args at `call_function` time and fall back to graph-breaking if needed.  This is no worse
    than status-quo as we currently graph-break on all distributed.* collectives.
    rØ   .Úreplacement_varr–   r`   Nc                ó²   •—  t          ¦   «         j        |fi |¤Ž t          |t          ¦  «        st	          dt          |¦  «        › �¦  «        ‚|| _        d S )Nz4replacement_var must be a UserFunctionVariable, got )rå   r�   r´   rS  rÐ   rÑ   rÁ  )r}   rØ   rÁ  r–   ræ   s       €r_   r�   z*CollectiveFunctionRewriteVariable.__init__ˆ
  sl   ø€ ð 	�‰ŒÔ˜Ð&Ð&˜vÐ&Ð&Ð&Ý˜/Õ+?Ñ@Ô@ð 	Ý Ø^ÅtÈOÑG\ÔG\Ð^Ð^ñô ð ð  /ˆÔÐÐr^   r“   rH   Úold_fnr±   Úoptionsc                 óx   — t                                | |¦  «        \  }}t          |ft          |fd|i|¤Ž|dœ|¤ŽS )Nr±   )rÁ  r±   )rÀ  rë  rS  )r“   rÃ  r±   rÄ  Únew_fnÚ
new_sources         r_   r·   z(CollectiveFunctionRewriteVariable.create–
  sb   € õ ?×FÒFÀrÈ6ÑRÔRÑˆ�
Ý0Øð
å0°ÐVÐVÀ
ÐVÈgÐVÐVØð
ð 
ð ð	
ð 
ð 	
r^   Úvariablec                 óJ   — t          j        | ¦  «        o| t          ¦   «         v S r�   )rÚ   Ú
isfunctionr¹  )rÈ  s    r_   Úcan_rewritez-CollectiveFunctionRewriteVariable.can_rewrite¥
  s(   € õ Ô˜xÑ(Ô(ÐW¨XÕ9UÑ9WÔ9WÐ-Wð	
r^   c                 óN   — t          ¦   «         |         }|t          | |¦  «        fS r�   )r¹  r¾  )r“   rØ   rÆ  s      r_   rë  z)CollectiveFunctionRewriteVariable.rewrite«
  s*   € õ .Ñ/Ô/°Ô3ˆØÕ4°R¸Ñ@Ô@Ð@Ð@r^   r•   c                 óz	  — dd l m} ddlm} t	          j        | j        ¦  «        }t           |j        |i |¤Žj	        ¦  «        }g }d|v rN|d          
                    ¦   «         r4t          d| j        › d|›d|›�d| j        › �g t          j        ¢¬¦  «         | j        |j        k    �rt          j        st          d	| j        › d
dg¬¦  «         |d         }t#          |t$          j        ¦  «        s$t(          j        j                             d¦  «        ‚t1          ¦   «         }t1          ¦   «         }	t1          ¦   «         }
t1          ¦   «         }d }|j        D �]í}|                     ¦   «         |j        ur$t(          j        j                             d¦  «        ‚|                     |d¦  «        }|                     ¦   «         rp| 
                    ¦   «         }||j        |j        fvr't(          j        j                             d|› �¦  «        ‚t$          j          !                    |j"        ¦  «        }nitG          |d¦  «        r2t$          j          !                    | $                    ¦   «         ¦  «        }n't(          j        j                             d|› �¦  «        ‚| %                    |¦  «         | %                    |                     |d¦  «        ¦  «         |	 %                    |                     |d¦  «        ¦  «         |
 %                    |                     |d¦  «        ¦  «         |€|                     |d¦  «        }�Œï|€tM          d¦  «        ‚g }t%          j        |¦  «        t%          j        |	¦  «        t%          j        |
¦  «        t%          j        |¦  «        |dœ}| j'         (                    |||¦  «        S | j        |j        |j        fv rBt          j        st          d| j        › d
dg¬¦  «         | j'         (                    |||¦  «        S | j        |j)        |j*        |j+        |j,        fv rd| -                    d¦  «        }|�|j.        n|j/        d         j0        }||vrtc          d|› �¦  «        ‚te          j3        |||         ¦  «        |d<   | j'         (                    |||¦  «        S )Nr   )ÚREDUCE_OP_TO_STRÚasync_opz)async_op=True for distributed collectivesz, args=ú	, kwargs=z3`torch.compile` doesn't support `async_op=True for rc  z.P2P compilation disabled for batch_isend_irecvzP2P compilation is disabled.z3Set TORCHDYNAMO_ENABLE_P2P_COMPILATION=1 to enable.Úp2p_op_listz`P2POp` used incorrectlyrî   zunexpected P2POp op r  zunexpected P2POp op variable ÚtensorÚpeerÚtagÚgroupz&group_var must be set from P2POp items)Úop_listÚ	peer_listÚtag_listÚtensorsÚ
group_namez(P2P compilation disabled for isend/irecvzUnsupported all_reduce op: )4Útorch.distributedr¶  r¸  rÎ  rÚ   rÁ  rØ   rˆ   rÂ  rÃ  rþ   r#   r   rÿ  Úbatch_isend_irecvr   Úenable_p2p_compilationr´   r   rN   rb   r¼  rq  ÚInternalTorchDynamoErrorr§   rº   r}  ÚP2POpr:  r  ÚisendÚirecvrB   r·   rZ   rC  r  r  rÐ   rÁ  rA  Ú
all_reduceÚreduce_scatter_singleÚreduce_scatter_tensorÚ_reduce_scatter_baser�   rY  Ú
parametersÚdefaultr”  r@   rµ   )r}   r“   r•   r–   ÚdistrÎ  rÁ  Úp2p_opsÚopsÚpeersÚtagsrÙ  Ú	group_varÚitemÚop_varrî   Únew_argsÚ
new_kwargsÚreduce_op_varÚ	reduce_ops                       r_   rA  z/CollectiveFunctionRewriteVariable.call_function²
  s  € ð 	)Ð(Ð(Ð(Ð(Ð(ØNÐNÐNÐNÐNÐNõ Ô% d¤gÑ.Ô.ˆ	Ý�n�i”n dÐ5¨fÐ5Ð5Ô?Ñ@Ô@ˆØˆà˜ÐÐ F¨:Ô$6×$IÒ$IÑ$KÔ$KÐÝØCØœ7Ð8Ð8 dÐ8Ð8¨vÐ8Ð8Ø[ÐRVÔRYÐ[Ð[ðÝ&Ô2ðð	ñ ô ð ð Œ7�dÔ,Ò,Ñ,ÝÔ0ð ÝØLØ#œw˜LØ >àMðð	ñ ô ð ð ˜]Ô+ˆGÝ˜g¥yÔ'=Ñ>Ô>ð Ý”mÔ'×@Ò@Ø.ñô ð õ *.©¬ˆCÝ‘F”FˆEÝ‘6”6ˆDÝ‘f”fˆGØ04ˆIàœð >ñ >�Ø×#Ò#Ñ%Ô%¨T¬ZÐ7Ð7Ýœ-Ô+×DÒDØ2ñô ð ð ×)Ò)¨"¨dÑ3Ô3�Ø×,Ò,Ñ.Ô.ð Ø×2Ò2Ñ4Ô4�BØ $¤*¨d¬jÐ!9Ð9Ð9Ý#œmÔ/×HÒHØ7°2Ð7Ð7ñô ð õ 'Ô7×>Ò>¸r¼{ÑKÔK�F�FÝ˜V ZÑ0Ô0ð Ý&Ô7×>Ò>¸v¿ºÑ?PÔ?PÑQÔQ�F�Fåœ-Ô+×DÒDØ@¸Ð@Ð@ñô ð ð —
’
˜6Ñ"Ô"Ð"Ø—’˜t×/Ò/°°HÑ=Ô=Ñ>Ô>Ð>Ø—’˜T×-Ò-¨b°&Ñ9Ô9Ñ:Ô:Ð:Ø—’˜D×,Ò,¨R°Ñ7Ô7Ñ8Ô8Ð8ØÐ$Ø $× 0Ò 0°°WÑ =Ô =�IùàÐ Ý$Ð%MÑNÔNÐNØ.0ˆHå$Ô1°#Ñ6Ô6Ý&Ô3°EÑ:Ô:Ý%Ô2°4Ñ8Ô8Ý$Ô1°'Ñ:Ô:Ø'ð6ð 6ˆJð Ô'×5Ò5°b¸(ÀJÑOÔOÐOàŒ7�t”z 4¤:Ð.Ð.Ð.ÝÔ0ð ÝØFØ#œw˜LØ >àMðð	ñ ô ð ð Ô'×5Ò5°b¸$ÀÑGÔGÐGàŒ7ØŒOØÔ&àÔ&àÔ%ð
ð 
ð 
ð #ŸJšJ tÑ,Ô,ˆMð !Ð,ð Ô#Ð#àÔ)¨$Ô/Ô7ð ð
 Ð 0Ð0Ð0Ý Ð!J¸yÐ!JÐ!JÑKÔKÐKÝ*Ô0°Ð5EÀiÔ5PÑQÔQˆF�4‰LØÔ#×1Ò1°"°d¸FÑCÔCÐCr^   )rZ   r[   r\   rÔ   r   r   rS  r�   Ústaticmethodr   r·   rO  rË  r¦   r'   rë  r§   r@   rˆ   rM  rA  rP  rQ  s   @r_   rÀ  rÀ  }
  s­  ø€ € € € € ðð ð/à�S˜#�XÔð/ð .ð	/ð
 ð/ð 
ð/ð /ð /ð /ð /ð /ð ð
Ø'ð
à˜˜c˜Ô"ð
ð ð
ð ð	
ð
 
-ð
ð 
ð 
ñ „\ð
ð ð
˜cð 
 dð 
ð 
ð 
ñ „\ð
ð
 ðAØ'ðAØ-5°c¸3°hÔ-?ðAà	ˆs�JˆÔ	ðAð Að Añ „\ðAðyDà'ðyDð �?Ô#ðyDð �S˜/Ð)Ô*ð	yDð
 
ðyDð yDð yDð yDð yDð yDð yDð yDr^   rÀ  c                   óN   — e Zd Zdefd„Zdddee         deeef         defd„Z	dS )	ÚCollectionsNamedTupleFunctionr`   c                 ó   — | j         S r�   rx  rò   s    r_   rþ   z0CollectionsNamedTupleFunction.as_python_constant/  ry  r^   r“   rH   r•   r–   c                 ó²  — t          ||¦  «        }|rŸ	  | j        d„ |D ¦   «         i d„ |                     ¦   «         D ¦   «         ¤Ž}nH# t          $ r;}t	          t          |¦  «        |t          |j        ¦  «        ¬¦  «         Y d }~nd }~ww xY wt          j	        |t          ¦   «         ¬¦  «        S t          dd|›d|›�dg t          j        ¢¬	¦  «         d S )
Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r]   r«  ©rš   rí  s     r_   r®  z?CollectionsNamedTupleFunction.call_function.<locals>.<listcomp><  ó$   € Ð;Ð;Ð;°�a×*Ò*Ñ,Ô,Ð;Ð;Ð;r^   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r]   r«  rR  s      r_   r�   z?CollectionsNamedTupleFunction.call_function.<locals>.<dictcomp>=  ó*   € ÐLÐLÐL±T°Q¸�q˜!×.Ò.Ñ0Ô0ÐLÐLÐLr^   ©r•   r/  znamedtuple constructionzargs=rÐ  z?`torch.compile` only support certain input types for namedtuplerc  )r1   rØ   rº   r¥   r    rÑ   r§   r•   r   ÚUserDefinedClassVariabler?   r#   r   rÿ  )r}   r“   r•   r–   Úconstant_argsrY  rq  s          r_   rA  z+CollectionsNamedTupleFunction.call_function2  s@  € õ ,¨D°&Ñ9Ô9ˆØð 	ð
Ø˜œØ;Ð;°dÐ;Ñ;Ô;ðàLÐL¸V¿\º\¹^¼^ÐLÑLÔLðð ��øõ ð ð ð Ý(Ý˜‘I”IØÝ˜cœh™œðñ ô ð ð ð ð ð ð øøøøðøøøõ Ô5ØÝ.Ñ0Ô0ðñ ô ð õ 	Ø-Ø)�tÐ)Ð) Ð)Ð)ØYðÝ"Ô.ðð		
ñ 	
ô 	
ð 	
ð 	
ð 	
s   ”3A Á
BÁ1BÂBN)
rZ   r[   r\   r   rþ   r§   r@   rˆ   rM  rA  r]   r^   r_   rö  rö  .  sx   € € € € € ð Cð ð ð ð ð
à'ð
ð �?Ô#ð
ð �S˜/Ð)Ô*ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
r^   rö  c                   ó$  ‡ — e Zd Zej        Zdhej        £Z	 ddedee         de	e
ef         dededdfˆ fd„Zd	„ Zdefd
„Zdd„Zdefd„Zdddee         de	e
ef         defd„Zddde
defd„Zddde
defd„Zdefd„Zdefd„Zdedefd„Zˆ xZS )ÚFunctoolsPartialVariableÚoriginal_cache_hashNri   r•   Úkeywordsr–   r`   c                 óB  •—  t          ¦   «         j        di |¤Ž || _        t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|| _        t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|| _	        || _
        d S )Nzargs must be a list, got zkeywords must be a dict, got r]   )rå   r�   ri   r´   r§   rÐ   rÑ   r•   rˆ   r  r  )r}   ri   r•   r  r  r–   ræ   s         €r_   r�   z!FunctoolsPartialVariable.__init__\  s¥   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ	Ý˜$¥Ñ%Ô%ð 	KÝ Ð!I½TÀ$¹Z¼ZÐ!IÐ!IÑJÔJÐJØˆŒ	Ý˜(¥DÑ)Ô)ð 	SÝ Ð!QÅÀhÁÄÐ!QÐ!QÑRÔRÐRØ ˆŒà#6ˆÔ Ð Ð r^   c                 ó*   — ddl m}  || |||¦  «        S rè   rê   rì   s        r_   rï   z)FunctoolsPartialVariable.richcompare_implo  rð   r^   c                 ó   — t           j        S r�   )r'  Úpartialrò   s    r_   r}  z$FunctoolsPartialVariable.python_typet  s   € ÝÔ Ð r^   rr  rE   c                 ó^  ‡— ‰                      ˆfd„¦  «          ‰| j        ¦  «         | j        r‰                     | j        ¦  «         | j        s:‰                     t          t          | j        ¦  «        dz   d¦  «        ¦  «         d S ‰                     | j                             ¦   «         ¦  «         t          | j         
                    ¦   «         ¦  «        }‰                     ‰                     t          |¦  «        t          | j        ¦  «        z   dz   |d¦  «        ¦  «         d S )Nc                  ó0   •— ‰                       dd¦  «        S )Nr'  r  r)  r$  s   €r_   r2  z6FunctoolsPartialVariable.reconstruct.<locals>.<lambda>x  s   ø€  g×&>Ò&>¸{ÈIÑ&VÔ&V€ r^   r<   F)rã  ri   r•   Úforeachr  rä  r   rŠ   rb  r¦   ÚkeysÚcreate_call_function_kw)r}   rr  r  s    ` r_   rR  z$FunctoolsPartialVariable.reconstructw  s  ø€ Ø×ÒÐVÐVÐVÐVÑWÔWÐWØˆ�”	ÑÔÐØŒ9ð 	'Ø�OŠO˜DœIÑ&Ô&Ð&ØŒ}ð 	Ø×!Ò!Õ"6µs¸4¼9±~´~ÈÑ7IÈ5Ñ"QÔ"QÑRÔRÐRØˆFà�Š˜œ×,Ò,Ñ.Ô.Ñ/Ô/Ð/Ý�T”]×'Ò'Ñ)Ô)Ñ*Ô*ˆØ×ÒØ×+Ò+­C°©I¬I½¸D¼I¹¼Ñ,FÈÑ,JÈDÐRWÑXÔXñ	
ô 	
ð 	
ð 	
ð 	
r^   c                 ó*   — |                       ¦   «         S r�   r«  rò   s    r_   r&  z%FunctoolsPartialVariable.get_function†  ó   € Ø×&Ò&Ñ(Ô(Ð(r^   r“   rH   c                 ód   — | j         |z   }i | j        ¥|¥}| j                             |||¦  «        S r�   )r•   r  ri   rA  )r}   r“   r•   r–   Úmerged_argsÚmerged_kwargss         r_   rA  z&FunctoolsPartialVariable.call_function‰  s;   € ð ”i $Ñ&ˆØ3˜4œ=Ð3¨FÐ3ˆØŒy×&Ò& r¨;¸ÑFÔFÐFr^   rœ   c                 óv   — t          j        |t          t          j        t
          ¦  «        |¦  «        ¦  «        S r�   )r@   rµ   rC  r'  r  r4   rm  s      r_   rE  z)FunctoolsPartialVariable.call_obj_hasattr“  s,   € õ Ô$ R­µÔ1BÅ8Ñ1LÔ1LÈdÑ)SÔ)SÑTÔTÐTr^   c           
      óÒ  ‡— | j         ot          | j         |¦  «        }|dk    r| j        S |dk    rt          j        | j        |¬¦  «        S |dk    r;ˆfd„| j                             ¦   «         D ¦   «         }t          j        ||¬¦  «        S |t          v r<t          j
        | |t          t          t          j        |¦  «        ¦  «        ¬¦  «        S t          t           ‰¦  «         d S )Nri   r•   rö   r  c                 óB   •— i | ]\  }}t          j        ‰|¦  «        |“ŒS r]   ©r@   rµ   ©rš   r»   r¼   r“   s      €r_   r�   z8FunctoolsPartialVariable.var_getattr.<locals>.<dictcomp>£  s,   ø€ ÐWÐWÐW¹¸¸A•_Ô*¨2¨qÑ1Ô1°1ÐWÐWÐWr^   rŸ  )r±   r'   ri   r   r5  r•   r  rº   r1  r3   r¡  rÑ   rÞ   r'  r  r    rÜ   )r}   r“   rœ   r±   rº   s    `   r_   r:  z$FunctoolsPartialVariable.var_getattr™  sñ   ø€ ð ”Ð>¥¨D¬K¸Ñ!>Ô!>ˆà�6Š>ˆ>Ø”9ÐØ�6Š>ˆ>ÝÔ*¨4¬9¸VÐDÑDÔDÐDØ�:ÒÐØWÐWÐWÐWÀÄ×ATÒATÑAVÔAVÐWÑWÔWˆEÝÔ.¨u¸VÐDÑDÔDÐDØÕ)Ð)Ð)ÝÔ,Ø�d¥D­µÔ1BÀDÑ)IÔ)IÑ$JÔ$Jðñ ô ð õ 	!¥°Ñ4Ô4Ð4Ð4Ð4r^   c                 óº   — t          j        | j                             ¦   «         gd„ | j        D ¦   «         ¢R i d„ | j                             ¦   «         D ¦   «         ¤ŽS )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r]   r«  r¬  s     r_   r®  z?FunctoolsPartialVariable.as_python_constant.<locals>.<listcomp>®  s$   € Ð<Ð<Ð<¨3ˆc×$Ò$Ñ&Ô&Ð<Ð<Ð<r^   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r]   r«  rR  s      r_   r�   z?FunctoolsPartialVariable.as_python_constant.<locals>.<dictcomp>¯  s*   € ÐKÐKÐK©T¨Q°ˆq�!×&Ò&Ñ(Ô(ÐKÐKÐKr^   )r'  r  ri   rþ   r•   r  rº   rò   s    r_   rþ   z+FunctoolsPartialVariable.as_python_constant«  sq   € ÝÔ ØŒI×(Ò(Ñ*Ô*ð
à<Ð<°$´)Ð<Ñ<Ô<ð
ð 
ð 
ð LÐK°T´]×5HÒ5HÑ5JÔ5JÐKÑKÔKð
ð 
ð 	
r^   c                 óä   — t          j        | j                             ¦   «         gd„ | j        D ¦   «         ¢R i d„ | j                             ¦   «         D ¦   «         ¤Ž}| j        �| j        |_        |S )zcSimilar to as_python_constant(), but add ID_MATCH guards to try to force things to become constantsc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r]   ©Úguard_as_python_constantrO  s     r_   r®  zEFunctoolsPartialVariable.guard_as_python_constant.<locals>.<listcomp>¶  s$   € Ð>Ð>Ð>¨qˆa×(Ò(Ñ*Ô*Ð>Ð>Ð>r^   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r]   r  rR  s      r_   r�   zEFunctoolsPartialVariable.guard_as_python_constant.<locals>.<dictcomp>·  s*   € ÐQÐQÐQ±4°1°aˆq�!×,Ò,Ñ.Ô.ÐQÐQÐQr^   )	r'  r  ri   r  r•   r  rº   r  Ú
cache_hash©r}   r¸   s     r_   r  z1FunctoolsPartialVariable.guard_as_python_constant²  s‰   € åÔ"ØŒI×.Ò.Ñ0Ô0ð
à>Ð>°D´IÐ>Ñ>Ô>ð
ð 
ð 
ð RÐQ¸4¼=×;NÒ;NÑ;PÔ;PÐQÑQÔQð
ð 
ˆð Ô#Ð/Ø $Ô 8ˆFÔØˆr^   rí   c                 óv  — t          |t          ¦  «        o¤| j                             |j        ¦  «        o…t	          d„ t          | j        |j        ¦  «        D ¦   «         ¦  «        oTt	          d„ t          | j                             ¦   «         |j                             ¦   «         ¦  «        D ¦   «         ¦  «        S )Nc              3   óF   K  — | ]\  }}|                      |¦  «        V — Œd S r�   ©r   )rš   Úarg_aÚarg_bs      r_   rˆ  z;FunctoolsPartialVariable.is_python_equal.<locals>.<genexpr>Â  sH   è è € ð ð á"�U˜Eð ×%Ò% eÑ,Ô,ðð ð ð ð ð r^   c              3   óF   K  — | ]\  }}|                      |¦  «        V — Œd S r�   r$  )rš   Úvalue_aÚvalue_bs      r_   rˆ  z;FunctoolsPartialVariable.is_python_equal.<locals>.<genexpr>Æ  sH   è è € ð ð á&�W˜gð ×'Ò'¨Ñ0Ô0ðð ð ð ð ð r^   )	r´   r  ri   r   r  r‰   r•   r  rb  r  s     r_   r   z(FunctoolsPartialVariable.is_python_equal¾  sÆ   € å�uÕ6Ñ7Ô7ð Ø”	×)Ò)¨%¬*Ñ5Ô5ðåð ð å&)¨$¬)°U´ZÑ&@Ô&@ðñ ô ñ ô ðõ ð ð å*-Ø”M×(Ò(Ñ*Ô*¨E¬N×,AÒ,AÑ,CÔ,Cñ+ô +ðñ ô ñ ô ð	
r^   r�   rŒ  )rZ   r[   r\   r'  r  r!  r@   r"  r§   rˆ   rM  r   r�   rï   rÑ   r}  rR  r&  rA  rB   rE  r:  rþ   r  r%  rO  r   rP  rQ  s   @r_   r  r  S  s  ø€ € € € € àÔ%€Mð 	ðà	Ô	'ð€Nð $(ð7ð 7àð7ð �?Ô#ð7ð �s˜OÐ+Ô,ð	7ð
 !ð7ð ð7ð 
ð7ð 7ð 7ð 7ð 7ð 7ð&7ð 7ð 7ð
!˜Tð !ð !ð !ð !ð
ð 
ð 
ð 
ð)˜cð )ð )ð )ð )ðGà'ðGð �?Ô#ðGð �S˜/Ð)Ô*ð	Gð
 
ðGð Gð Gð GðUØ-ðUØ58ðUà	ðUð Uð Uð Uð5Ø-ð5Ø58ð5à	ð5ð 5ð 5ð 5ð$
 Cð 
ð 
ð 
ð 
ð
¨#ð 
ð 
ð 
ð 
ð
 Vð 
°ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r^   r  c            
       ó„  ‡ — e Zd Zdddhej        £Zeej        dee	de
f         ej        f         fd„¦   «         ¦   «         Zede
dedd fd	„¦   «         Zded
e
ddfˆ fd„Zede	de
f         fd„¦   «         Zdefd„Zde
fd„Zdddee         d
eeef         defd„Zdddedee         d
eeef         def
d„Zde
fd„Zˆ xZS )ÚPolyfilledFunctionVariablerØ   rù  Útraceable_fnr`   .c                 ó   — i S r�   r]   )r_  s    r_   Ú_get_polyfill_handlersz1PolyfilledFunctionVariable._get_polyfill_handlers×  rH  r^   rY  r±   c                 ót   — t          |                     t          j        ¦  «        ¦  «          | ||¬¦  «        S r[  r\  r^  s      r_   r`  z-PolyfilledFunctionVariable.create_with_sourceÜ  s8   € õ 	�f×'Ò'­Ô(BÑCÔCÑDÔDÐDàˆs�5 Ð(Ñ(Ô(Ð(r^   r–   Nc                 ó¢  •—  t          ¦   «         j        di |¤Ž || _        |                      ¦   «                              ||¦  «        }d }t          |¦  «        st          d|› d|› �¦  «        ‚dD ];}t          ||d ¦  «        }|r&t          |¦  «        st          d|› d�¦  «        ‚|} nŒ<t          d|› d�¦  «        ‚|| _	        || _
        d S )NzPolyfill handler z is not callable for )Ú__torch_dynamo_polyfill__Ú__python_implementation__zPolyfill candidate z is not callablez# does not have a traceable functionr]   )rå   r�   rØ   r.  r�   ÚcallablerÐ   rÞ   rÀ  rù  r,  )r}   rØ   r–   Úhandlerr,  Úcandidate_attrÚ	candidateræ   s          €r_   r�   z#PolyfilledFunctionVariable.__init__ä  s$  ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"àˆŒà×-Ò-Ñ/Ô/×3Ò3°B¸Ñ;Ô;ˆØˆÝ˜Ñ Ô ð 	YÝ Ð!W°WÐ!WÐ!WÐSUÐ!WÐ!WÑXÔXÐXð
ð 	ð 	ˆNõ   ¨¸Ñ>Ô>ˆIØð Ý 	Ñ*Ô*ð Ý(ØI¨iÐIÐIÐIñô ð ð  )�Ø�ðõ ØP GÐPÐPÐPñô ð ð "ˆŒà ,ˆÔÐÐr^   c                 ó   — | j         S r�   )r,  rò   s    r_   Úpolyfill_fnz&PolyfilledFunctionVariable.polyfill_fn  s   € àÔ Ð r^   c                 ó.   — t          | j        dd¦  «        S )NÚ*__torch_dynamo_can_constant_fold_through__F)rÞ   rù  rò   s    r_   Úcan_constant_fold_throughz4PolyfilledFunctionVariable.can_constant_fold_through  s   € ÝØŒOÐIÈ5ñ
ô 
ð 	
r^   c                 ó*   — |                       ¦   «         S r�   r«  rò   s    r_   r&  z'PolyfilledFunctionVariable.get_function  r  r^   r“   rH   r•   c                 ó‚  — |                       ¦   «         rXt          ||¦  «        rH | j        d„ |D ¦   «         i d„ |                     ¦   «         D ¦   «         ¤Ž}t	          j        ||¦  «        S | j        t          j        u röt          |¦  «        dk    rã|sát          |d         t          j        t          j        f¦  «        rµt          d„ |d         j        D ¦   «         ¦  «        r‘t          j                             ||j                             dt$          j        t)          d„ |d         j        D ¦   «         ¦  «        fi ¦  «        t%          j        d„ |d         j        D ¦   «         ¦  «        ¬	¦  «        S t	          j        || j        ¦  «        }|                     |t/          |¦  «        t1          |¦  «        ¦  «        S )
Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r]   r«  rú  s     r_   r®  z<PolyfilledFunctionVariable.call_function.<locals>.<listcomp>  rû  r^   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r]   r«  rR  s      r_   r�   z<PolyfilledFunctionVariable.call_function.<locals>.<dictcomp>  rý  r^   r<   r   c              3   óö   K  — | ]t}|                      ¦   «         r't          |                     ¦   «         t          ¦  «        p4t          |t          j        ¦  «        o|                     ¦   «         t          u V — Œud S r�   )r  r´   rþ   rÎ  r   ÚSymNodeVariabler}  rú  s     r_   rˆ  z;PolyfilledFunctionVariable.call_function.<locals>.<genexpr>%  sˆ   è è € ð ð ð ð ×%Ò%Ñ'Ô'ÐS­J°q×7KÒ7KÑ7MÔ7MÍsÑ,SÔ,Sð YÝ˜q¥)Ô";Ñ<Ô<ÐWÀÇÂÁÄÕTWÐAWðð ð ð ð ð r^   rA  c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r�   ©Úas_proxyrJ  s     r_   rˆ  z;PolyfilledFunctionVariable.call_function.<locals>.<genexpr>0  s*   è è € Ð?Ð?¨A˜1Ÿ:š:™<œ<Ð?Ð?Ð?Ð?Ð?Ð?r^   c                 ól   — g | ]1}|                      ¦   «         r|                     ¦   «         n|j        ‘Œ2S r]   )r  rþ   Úsym_numrú  s     r_   r®  z<PolyfilledFunctionVariable.call_function.<locals>.<listcomp>4  sQ   € ð ð ð ð ð  !×3Ò3Ñ5Ô5ð+˜A×0Ò0Ñ2Ô2Ð2à!"¤ð	ð ð r^   )rF  )r;  r2   rØ   rº   r@   rµ   ÚbuiltinsÚsumrŠ   r´   r   rN   r5  r  rA  r·   rÀ   Úcreate_proxyrb   Úsym_sumr¦   r,  r?  r§   rˆ   )r}   r“   r•   r–   r¸   Útraceable_function_variables         r_   rA  z(PolyfilledFunctionVariable.call_function  sî  € ð ×)Ò)Ñ+Ô+ð 		5Õ0MØ�&ñ1
ô 1
ð 		5ð �”Ø;Ð;°dÐ;Ñ;Ô;ðàLÐL¸V¿\º\¹^¼^ÐLÑLÔLðð ð õ #Ô(¨¨VÑ4Ô4Ð4ð ŒG•x”|Ð#Ð#Ý�D‘	”	˜Q’�Øð å˜4 œ7¥YÔ%;½YÔ=TÐ$UÑVÔVð õ ð ð ð ˜aœœðñ ô ñ ô ð õ Ô,×3Ò3ØØ”	×&Ò&Ø#Ý”MÝÐ?Ð?°°a´´Ð?Ñ?Ô?Ñ?Ô?ÐAØñ	ô õ œðð ð "& a¤¤ðñ ô ñ	ô 	ð 4ñ ô ð õ( '6Ô&;¸BÀÔ@QÑ&RÔ&RÐ#Ø×-Ò-Ø'Ý�‰JŒJÝ�‰LŒLñ
ô 
ð 	
r^   rœ   c                 óJ  — |dk    r|                       |||¦  «        S t          | j        |d ¦  «        }|s*t          |¦  «        st	          |d|› d| j        › �¦  «         i }| j        rt          | j        |¦  «        |d<   t          |fi |¤Ž}|                      |||¦  «        S )NÚ__call__zCannot find callable z in r±   )rA  rÞ   rØ   r5   r!   r±   r'   r+  )r}   r“   rœ   r•   r–   ÚmethodrÄ  Úpolyfilled_method_variables           r_   r  z&PolyfilledFunctionVariable.call_methodF  sÉ   € ð �:ÒÐØ×%Ò% b¨$°Ñ7Ô7Ð7å˜œ $¨Ñ-Ô-ˆØð 	N�+ fÑ-Ô-ð 	NÝ˜RÐ!L¸Ð!LÐ!LÀ4Ä7Ð!LÐ!LÑMÔMÐMØˆØŒ;ð 	>Ý *¨4¬;¸Ñ =Ô =ˆG�HÑÝ%?ÀÐ%RÐ%RÈ'Ð%RÐ%RÐ"Ø)×7Ò7¸¸DÀ&ÑIÔIÐIr^   c                 ó   — | j         S r�   rx  rò   s    r_   rþ   z-PolyfilledFunctionVariable.as_python_constantY  ry  r^   )rZ   r[   r\   r@   r"  r$  r'  Úcacherˆ   r   r   rÎ   r   r.  r   r`  rP   r�   Úpropertyr8  rO  r;  r&  r§   rM  rA  r  rþ   rP  rQ  s   @r_   r+  r+  Ï  s  ø€ € € € € àØØðð 
Ô	'ð	€Nð Ø„_ð t¨H°S¸#°XÔ,>ÀÔ@RÐ,RÔ'Sð ð ð ñ „_ñ „[ðð ð)Øð)Ø!'ð)à	%ð)ð )ð )ñ „[ð)ð-˜2ð -¨ð -°ð -ð -ð -ð -ð -ð -ð< ð!˜X c¨3 hÔ/ð !ð !ð !ñ „Xð!ð
¨4ð 
ð 
ð 
ð 
ð
)˜cð )ð )ð )ð )ð6
à'ð6
ð �?Ô#ð6
ð �S˜/Ð)Ô*ð	6
ð
 
ð6
ð 6
ð 6
ð 6
ðpJà'ðJð ðJð �?Ô#ð	Jð
 �S˜/Ð)Ô*ðJð 
ðJð Jð Jð Jð& Cð ð ð ð ð ð ð ð r^   r+  c                   ó„   ‡ — e Zd Zdededdfˆ fd„Zdefd„Zdd
„Zdddefd„Z	ddde
e         deeef         defd„Zˆ xZS )ÚSysFunctionVariablerY  r–   r`   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S rƒ   ©rå   r�   rY  ©r}   rY  r–   ræ   s      €r_   r�   zSysFunctionVariable.__init__^  ó+   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
ˆ
ˆ
r^   c                 ó   — t           j        S r�   )rÎ   ÚBuiltinFunctionTyperò   s    r_   r}  zSysFunctionVariable.python_typeb  s   € ÝÔ(Ð(r^   r“   rH   úvariables.TupleVariablec                 óN  — t          |j        ¦  «        rC|j        d         }|j        }|                     |d¦  «        }t	          j        ||¦  «        ||g}n;t          j        d ¦  «        t          j        d ¦  «        t          j        d ¦  «        g}t          j	        |¦  «        S )Nr­  Ú__traceback__)
rŠ   Úexn_vt_stackr‹  r:  r@   rµ   rB   r·   r   r5  )r}   r“   Úexnrß  Útbrº   s         r_   Úexc_infozSysFunctionVariable.exc_infoe  s›   € ÝˆrŒÑÔð 
	Ø”/ "Ô%ˆCØ”,ˆCØ—’  _Ñ5Ô5ˆBÝ$Ô*¨2¨sÑ3Ô3°S¸"Ð=ˆEˆEõ !Ô'¨Ñ-Ô-Ý Ô'¨Ñ-Ô-Ý Ô'¨Ñ-Ô-ðˆEõ
 Ô& uÑ-Ô-Ð-r^   c                 óB   — |                       |¦  «        j        d         S )Nr<   )ra  rº   rú   s     r_   Ú	exceptionzSysFunctionVariable.exceptions  s   € Ø�}Š}˜RÑ Ô Ô& qÔ)Ð)r^   r•   c                 óÐ   — | j         t          j        u r|                      |¦  «        S | j         t          j        urt	          d| j         › �¦  «        ‚|                      |¦  «        S )Nzexpected sys.exception, got )rY  r  ra  rc  rÐ   r@  s       r_   rA  z!SysFunctionVariable.call_functionv  s_   € ð Œ:�œÐ%Ð%Ø—=’= Ñ$Ô$Ð$àŒ:�Sœ]Ð*Ð*Ý Ð!LÀÄ
Ð!LÐ!LÑMÔMÐMØ�~Š~˜bÑ!Ô!Ð!r^   )r“   rH   r`   r[  )rZ   r[   r\   r   r�   rÑ   r}  ra  r@   rc  r§   rˆ   rM  rA  rP  rQ  s   @r_   rT  rT  ]  sí   ø€ € € € € ð˜cð ¨Sð °Tð ð ð ð ð ð ð)˜Tð )ð )ð )ð )ð.ð .ð .ð .ð*Ð7ð *¸Oð *ð *ð *ð *ð"à'ð"ð �?Ô#ð"ð �S˜/Ð)Ô*ð	"ð
 
ð"ð "ð "ð "ð "ð "ð "ð "r^   rT  )Ú create_tma_experimental_metadataÚcreate_tma_stable_metadataÚTMADescriptorMetadataÚTritonHOPifierc                   ó¬  — e Zd Zdedefd„Zdedefd„Zdede	fd„Z
dd	deej        j        j        d
f         fd„Zde	deee	f         ddde	fd„Zded
e	f         dee         deeef         ded         de	defd„Zde	ded         de	dedef
d„Zde	ded         dee	         fd„Zdede	fd„Zdddee	         ddfd„Zddde	deee	f         dddd f
d!„Zd"S )#ÚDynamoTritonHOPifierrà  r`   c                 ó2   — t          ddd|› �g ¬¦  «         d S )Nz!triton kernel unsupported featurer]  z/Encountered triton kernel unsupported feature: rc  )r#   )r}   rà  s     r_   Úraise_unsupportedz&DynamoTritonHOPifier.raise_unsupported�  s7   € ÝØ7ØØOÈ#ÐOÐOØð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r^   Úmaybe_callablec                 ó:   — t          |t          t          f¦  «        S r�   )r´   rø  rS  )r}   rm  s     r_   Úis_callablez DynamoTritonHOPifier.is_callable•  s    € ÝØÕ7Õ9MÐNñ
ô 
ð 	
r^   r°   c                 ó   — |j         S r�   r<  )r}   r°   s     r_   Ú	get_valuezDynamoTritonHOPifier.get_valueš  s
   € ØŒyÐr^   ÚgridrM   .c                 ó¸   — ddl m} t          ||¦  «        r|                     ¦   «         S t	          ddt          |¦  «        › �dg t          j        ¢¬¦  «         d S )Nr<   )rM   z/unsupported grid type for triton hop check_gridzgrid type = z;`torch.compile` only supports list-like grid for check_gridrc  )ÚlistsrM   r´   rD  r#   rÑ   r   rÿ  )r}   rr  rM   s      r_   Ú
check_gridzDynamoTritonHOPifier.check_grid�  s}   € Ø+Ð+Ð+Ð+Ð+Ð+å�dÐ,Ñ-Ô-ð 
	Ø—=’=‘?”?Ð"åØIØ3¥t¨D¡z¤zÐ3Ð3ØYðÝ&Ô2ðð	ñ ô ð ð ð r^   Úmetar“   rH   c                 óx   ‡— ˆfd„|                      ¦   «         D ¦   «         }|                     ‰|gi ¦  «        }|S )Nc                 óB   •— i | ]\  }}t          j        ‰|¦  «        |“ŒS r]   r  r  s      €r_   r�   z2DynamoTritonHOPifier.call_grid.<locals>.<dictcomp>¯  s,   ø€ ÐMÐMÐM¹¸¸1•OÔ)¨"¨aÑ0Ô0°!ÐMÐMÐMr^   )rº   rA  )r}   rr  rv  r“   Úmeta_vars      ` r_   Ú	call_gridzDynamoTritonHOPifier.call_grid¬  sE   ø€ ð NÐMÐMÐMÀÇ
Â
ÁÄÐMÑMÔMˆØ×!Ò! " x j°"Ñ5Ô5ˆØˆr^   Úuser_fnr•   r–   rÈ  c                 ól   — ddl m} |                     ||¦  «        }|                     |||¦  «        }|S )Nr<   rU  )rg  rV  r·   rA  )	r}   r{  r•   r–   r“   rÈ  rV  Úwrapped_user_functionr¸   s	            r_   Úcall_user_defined_fnz)DynamoTritonHOPifier.call_user_defined_fn´  sH   € ð 	/Ð.Ð.Ð.Ð.Ð.à 1× 8Ò 8¸¸WÑ EÔ EÐØ&×4Ò4°R¸¸vÑFÔFˆØˆr^   Úuser_objrœ   c                 ó†   — ddl m} |€t          d¦  «        ‚  ||t          |j        |› ¦  «        ¦  «        |¦  «        }|S )Nr<   )ÚVariableBuilderútx must not be None)rg  r�  rÐ   r'   Úkernel_source)r}   r  r“   rÈ  rœ   r�  Úwrapped_user_objs          r_   Úwrap_user_defined_objz*DynamoTritonHOPifier.wrap_user_defined_objÂ  si   € ð 	-Ð,Ð,Ð,Ð,Ð,àˆ:Ý Ð!6Ñ7Ô7Ð7ð
˜?˜?Ø•
˜8Ô1°d°9Ñ=Ô=ñ
ô 
à
ñô Ðð  Ðr^   Úconfigsc                 ó`   — |€t          d¦  «        ‚t          ||¦  «        }d„ |D ¦   «         }|S )Nr‚  c                 ó,   — g | ]} |j         ¦   «         ‘ŒS r]   r  )rš   r   s     r_   r®  z=DynamoTritonHOPifier.maybe_unpack_configs.<locals>.<listcomp>Þ  s$   € ÐKÐKÐK¸Ð2�6Ô2Ñ4Ô4ÐKÐKÐKr^   )rÐ   r;   )r}   r†  r“   s      r_   Úmaybe_unpack_configsz)DynamoTritonHOPifier.maybe_unpack_configsÕ  sB   € ð ˆ:Ý Ð!6Ñ7Ô7Ð7Ý! " gÑ.Ô.ˆð LÐKÀ7ÐKÑKÔKˆàˆr^   r¸   c                 ó|   — |                      ¦   «         s|                      d¦  «         |                     ¦   «         S )Nz`@triton.heuristics must return constant values because configs can only contain constant values.)r  rl  r  r!  s     r_   Úmaybe_unpack_heuristic_resultz2DynamoTritonHOPifier.maybe_unpack_heuristic_resultâ  sE   € Ø×(Ò(Ñ*Ô*ð 	Ø×"Ò"Ørñô ð ð ×.Ò.Ñ0Ô0Ð0r^   ÚTritonKernelVariablec                 óÂ   — |j         €t          |¦  «        dk    r|                      d¦  «          t          |¦  «        |j        |j        |d         |j        ¬¦  «        S )Nr<   z7Triton kernels should be called with only a single gridr   )ÚkernelÚ
kernel_idxrr  rƒ  )rr  rŠ   rl  rÑ   rŽ  r�  rƒ  )r}   rÈ  r•   s      r_   Úcall_getitemz!DynamoTritonHOPifier.call_getitemì  sn   € ð Œ=Ð$­¨D©	¬	°Qª¨Ø×"Ò"ØIñô ð ð �t�H‰~Œ~Ø”?ØÔ*Ø�a”Ø"Ô0ð	
ñ 
ô 
ð 	
r^   ÚgridsÚcombined_argszvariables.ConstantVariablec                 ó¤  ‡— ddl m} i }t          |                     ¦   «         ¦  «        D ]T}||         }t	          |t
          t          f¦  «        r.|                     ¦   «         ||<   |                     ¦   «         ||<   ŒUˆfd„| 	                    ¦   «         D ¦   «         }	ddl
m}
m} d„ | 	                    ¦   «         D ¦   «         }d„ |	 	                    ¦   «         D ¦   «         }|                     ¦   «         D ]d}|                     ¦   «         }|                     ¦   «         s:|                     ¦   «         s&|                      dt%          |¦  «        › d	�¦  «         Œe|
                     |¦  «        } ||t(          ¦  «        }‰j                             d
|d|j        ||||                     ¦   «         dœ¦  «         t3          j        ‰d ¦  «        S )Nr<   )r1  c                 óB   •— i | ]\  }}t          j        ‰|¦  «        |“ŒS r]   r  r  s      €r_   r�   z1DynamoTritonHOPifier.call_HOP.<locals>.<dictcomp>  s9   ø€ ð 
ð 
ð 
Ù04°°1�OÔ! " aÑ(Ô(¨!ð
ð 
ð 
r^   r   )Úkernel_side_tableÚtriton_kernel_wrapper_mutationc                 ó�   — i | ]C\  }}t          |t          ¦  «        ¯|                     ¦   «         ¯.||                     ¦   «         “ŒDS r]   )r´   r@   r  rþ   rR  s      r_   r�   z1DynamoTritonHOPifier.call_HOP.<locals>.<dictcomp>"  s`   € ð 
ð 
ð 
á��1Ý˜!�_Ñ-Ô-ð
ð 34×2FÒ2FÑ2HÔ2Hð
Øˆq×#Ò#Ñ%Ô%ð
ð 
ð 
r^   c                 ól   — i | ]1\  }}t          |t          ¦  «        r|                     ¦   «         °.||“Œ2S r]   )r´   r@   r  rR  s      r_   r�   z1DynamoTritonHOPifier.call_HOP.<locals>.<dictcomp>'  sT   € ð 
ð 
ð 
á��1Ý˜q¥/Ñ2Ô2ð
ð 89×7KÒ7KÑ7MÔ7Mð
Øˆqð
ð 
ð 
r^   z.Unexpected argument type for a Triton kernel: r^  rA  r]   )r�  Úconstant_args_idxrr  Útma_descriptor_metadatar–   )Údictsr1  r§   r  r´   Ú!TMADescriptorExperimentalVariableÚTMADescriptorStableVariableÚto_metadataÚ
get_tensorrº   Ú*torch._higher_order_ops.triton_kernel_wrapr•  r–  rb  Úrealizerï  Úis_symnode_likerl  rý   Úadd_constant_argsrˆ   rÀ   rI  r�  rD  r@   rµ   )r}   rÈ  r‘  r’  r“   r1  rš  r»   r¼   Úcombined_args_vtr•  r–  r   Únon_constant_argsr™  rv  s       `           r_   Úcall_HOPzDynamoTritonHOPifier.call_HOPþ  sK  ø€ ð 	-Ð,Ð,Ð,Ð,Ð,ð :<ÐÝ�m×(Ò(Ñ*Ô*Ñ+Ô+ð 	2ð 	2ˆAØ˜aÔ ˆAÝØÕ5Õ7RÐSñô ð 2ð ./¯]ª]©_¬_Ð'¨Ñ*Ø#$§<¢<¡>¤>�˜aÑ øð
ð 
ð 
ð 
Ø8E×8KÒ8KÑ8MÔ8Mð
ñ 
ô 
Ðð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
ð 
à%×+Ò+Ñ-Ô-ð
ñ 
ô 
ˆð

ð 
à(×.Ò.Ñ0Ô0ð
ñ 
ô 
Ðð #×)Ò)Ñ+Ô+ð 	ð 	ˆAØ—	’	‘”ˆAØ—K’K‘M”Mð  Q×%6Ò%6Ñ%8Ô%8ð Ø×&Ò&ØOÅTÈ!ÁWÄWÐOÐOÐOñô ð øð .×?Ò?ÀÑNÔNÐØ Ð Ð!2µDÑ9Ô9ˆØ
Œ	×ÒØØ*Øà&Ô1Ø%6ØØ+BØŸ-š-™/œ/ðð ñ		
ô 	
ð 	
õ Ô$ØØñ
ô 
ð 	
r^   N)rZ   r[   r\   rM  r   rl  r@   rO  ro  r   rq  r¦   rb   ÚfxÚproxyÚProxyru  rˆ   rz  r   r§   r
   r~  r…  r‰  r‹  r   r�  r¦  r]   r^   r_   rj  rj  Œ  s„  € € € € € ð
 Sð 
¨Uð 
ð 
ð 
ð 
ð
¨/ð 
¸dð 
ð 
ð 
ð 
ð
˜_ð °ð ð ð ð ðÐ1ð °e¸E¼H¼NÔ<PÐRUÐ<UÔ6Vð ð ð ð ðØðØ# C¨ Hœ~ðØ3Nðà	ðð ð ð ðà˜#˜s˜(Ô#ðð �?Ô#ðð �S˜/Ð)Ô*ð	ð
 Ð0Ô1ðð ðð 
ðð ð ð ð àð ð Ð0Ô1ð ð ð	 ð
 ð ð 
ð ð  ð  ð  ð&ØðØ (Ð)DÔ Eðà	ˆcŒðð ð ð ð1°Oð 1Èð 1ð 1ð 1ð 1ð
à(ð
ð �sŒmð
ð 
 ð	
ð 
ð 
ð 
ð$H
à(ðH
ð ðH
ð ˜C ˜H”~ð	H
ð
 (ðH
ð 
&ðH
ð H
ð H
ð H
ð H
ð H
r^   rj  c            
       ó  ‡ — e Zd ZU ded<   ded<   edz  ed<   edz  ed<   dededz  deded	df
ˆ fd
„Zd	efd„Z	ddde
e         deeef         d	efd„Zddded	efd„Zdddede
e         deeef         d	ef
ˆ fd„Zded	efd„Zˆ xZS )rŒ  rJ   rr  rK   rŽ  Nr�  rƒ  r–   r`   c                 óÐ   •— |                      d|                     d¦  «        ¦  «        | _         t          ¦   «         j        di |¤Ž t
                               | |||¦  «         d S )Nrƒ  r±   r]   )r    r�   rƒ  rå   r�   Ú dynamo_triton_hopifier_singletonÚinit_variable)r}   rŽ  r�  rr  r–   ræ   s        €r_   r�   zTritonKernelVariable.__init__R  se   ø€ ð $ŸZšZ¨¸¿ºÀHÑ9MÔ9MÑNÔNˆÔØ�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý(×6Ò6°t¸VÀZÐQUÑVÔVÐVÐVÐVr^   c                 ó*   — t          | j        ¦  «        S r�   )rÑ   rŽ  rò   s    r_   r}  z TritonKernelVariable.python_typeY  s   € Ý�D”KÑ Ô Ð r^   r“   rH   r•   c                 ó<   — t                                | |||¦  «        S r�   )r¬  Úcall_triton_kernelr@  s       r_   rA  z"TritonKernelVariable.call_function\  s%   € õ 0×BÒBØ�$˜ ñ
ô 
ð 	
r^   r°  c                 ó:   — t                                | |g¦  «        S r�   )r¬  r�  )r}   r“   r°  s      r_   Úmp_subscript_implz&TritonKernelVariable.mp_subscript_implf  s   € õ 0×<Ò<¸TÀCÀ5ÑIÔIÐIr^   rœ   c                 ó’   •— |dk    rt                                | |||¦  «        S t          ¦   «                              ||||¦  «        S )NÚrun)r¬  Úcall_runrå   r  r  s        €r_   r  z TritonKernelVariable.call_methodn  sI   ø€ ð �5Š=ˆ=Ý3×<Ò<¸TÀ4ÈÐQSÑTÔTÐTõ ‰wŒw×"Ò" 2 t¨T°6Ñ:Ô:Ð:r^   r­  c                 ó‚   — ddl m} ddlm} t	          ||¦  «        r" |j        |                     ¦   «         ¦  «        S |S )Nr<   rA   )rA  )rÀ  rB   rÒ  rA  r´   r·   Úevaluate_expr)r}   r­  rB   rA  s       r_   Úspecialize_symbolicz(TritonKernelVariable.specialize_symbolic{  s`   € Ø.Ð.Ð.Ð.Ð.Ð.Ø+Ð+Ð+Ð+Ð+Ð+õ �c˜?Ñ+Ô+ð 	@Ø*Ð#Ô*¨3×+<Ò+<Ñ+>Ô+>Ñ?Ô?Ð?Øˆ
r^   )rZ   r[   r\   rÒ   rÎ  r   r   r�   rÑ   r}  r§   r@   rˆ   rM  rA  r²  r  r¸  rP  rQ  s   @r_   rŒ  rŒ  L  sÈ  ø€ € € € € € Ø
ÐÐÑØÐÐÑØ�d‘
ÐÐÑØ˜D‘=Ð Ð Ñ ðWØðWØ'*¨T¡zðWØ9<ðWØHKðWà	ðWð Wð Wð Wð Wð Wð!˜Tð !ð !ð !ð !ð
à'ð
ð �?Ô#ð
ð �S˜/Ð)Ô*ð	
ð
 
ð
ð 
ð 
ð 
ðJà'ðJð ðJð 
ð	Jð Jð Jð Jð;à'ð;ð ð;ð �?Ô#ð	;ð
 �S˜/Ð)Ô*ð;ð 
ð;ð ;ð ;ð ;ð ;ð ;ð sð ¨sð ð ð ð ð ð ð ð r^   rŒ  c                   óp   ‡ — e Zd Zdddee         dee         dededdfˆ fd	„Zdefd
„Zdd„Zdefd„Z	ˆ xZ
S )rœ  Údata_ptrzvariables.DataPtrVariableÚdimsÚ
block_dimsÚelement_sizer–   r`   Nc                 óä   •— t          |t          j        ¦  «        st          dt	          |¦  «        › �¦  «        ‚ t          ¦   «         j        di |¤Ž || _        || _        || _	        || _
        d S )Nz(data_ptr must be a DataPtrVariable, got r]   )r´   r   ÚDataPtrVariablerÐ   rÑ   rå   r�   rº  r»  r¼  r½  )r}   rº  r»  r¼  r½  r–   ræ   s         €r_   r�   z*TMADescriptorExperimentalVariable.__init__†  s   ø€ õ ˜(¥IÔ$=Ñ>Ô>ð 	Ý ØK½4À¹>¼>ÐKÐKñô ð ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø ˆŒØˆŒ	Ø$ˆŒØ(ˆÔÐÐr^   c                 óŽ   — t          d„ | j        D ¦   «         d„ | j        D ¦   «         | j                             ¦   «         ¦  «        S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r]   rC  ©rš   Údims     r_   r®  zATMADescriptorExperimentalVariable.to_metadata.<locals>.<listcomp>š  s    € Ð1Ð1Ð1 ˆS�\Š\‰^Œ^Ð1Ð1Ð1r^   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r]   rC  rÂ  s     r_   r®  zATMADescriptorExperimentalVariable.to_metadata.<locals>.<listcomp>›  s    € Ð7Ð7Ð7 ˆS�\Š\‰^Œ^Ð7Ð7Ð7r^   )re  r»  r¼  r½  rD  rò   s    r_   rž  z-TMADescriptorExperimentalVariable.to_metadata˜  sL   € Ý/Ø1Ð1 t¤yÐ1Ñ1Ô1Ø7Ð7 t¤Ð7Ñ7Ô7ØÔ×&Ò&Ñ(Ô(ñ
ô 
ð 	
r^   rr  rE   c                 ó  ‡ ‡— ‰                      ˆˆ fd„¦  «         ‰ j                             ‰¦  «         g ‰ j        ¢‰ j        ¢‰ j        ‘}‰                     |¦  «         ‰                     t          |¦  «        dz   d¦  «         d S )Nc                  ó\   •— ‰                       ddt          ‰j        ¦  «        › d�¦  «        S )Nz$triton.tools.experimental_descriptorÚcreate_Úd_tma_descriptor)r#  rŠ   r»  rà  s   €€r_   r2  z?TMADescriptorExperimentalVariable.reconstruct.<locals>.<lambda>¡  s0   ø€ �G×,Ò,Ø6Ø:�#˜dœi™.œ.Ð:Ð:Ð:ñô € r^   r<   F)	rã  rº  rR  r»  r¼  r½  r  rA  rŠ   )r}   rr  r•   s   `` r_   rR  z-TMADescriptorExperimentalVariable.reconstructŸ  s    øø€ Ø×Òðð ð ð ð ñ	
ô 	
ð 	
ð 	Œ×!Ò! 'Ñ*Ô*Ð*Ø@�”Ð@˜Tœ_Ð@¨dÔ.?Ð@ˆØ�Š˜ÑÔÐØ×Ò�c $™iœi¨!™m¨UÑ3Ô3Ð3Ð3Ð3r^   c                 ó   — | j         j        S r�   )rº  Úfrom_tensorrò   s    r_   rŸ  z,TMADescriptorExperimentalVariable.get_tensor«  s   € ØŒ}Ô(Ð(r^   rŒ  )rZ   r[   r\   r§   r@   r   r�   rž  rR  rŸ  rP  rQ  s   @r_   rœ  rœ  …  sË   ø€ € € € € ð)à-ð)ð �?Ô#ð)ð ˜Ô)ð	)ð
 &ð)ð ð)ð 
ð)ð )ð )ð )ð )ð )ð$
˜Sð 
ð 
ð 
ð 
ð
4ð 
4ð 
4ð 
4ð)˜Oð )ð )ð )ð )ð )ð )ð )ð )r^   rœ  c                   óP   ‡ — e Zd Zdddddeddfˆ fd„Zdefd	„Zdd„Zdefd„Zˆ xZS )r�  rÒ  rO   Úblock_shaperN   r–   r`   Nc                 óœ   •— |                      ¦   «         st          d¦  «        ‚ t          ¦   «         j        di |¤Ž || _        || _        d S )Nz tensor argument must be a tensorr]   )rï  rÐ   rå   r�   rÒ  rÌ  )r}   rÒ  rÌ  r–   ræ   s       €r_   r�   z$TMADescriptorStableVariable.__init__°  s[   ø€ ð ×ÒÑ!Ô!ð 	EÝ Ð!CÑDÔDÐDØ�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒØ&ˆÔÐÐr^   c                 óN   — t          | j                             ¦   «         ¦  «        S r�   )rf  rÌ  rD  rò   s    r_   rž  z'TMADescriptorStableVariable.to_metadata¼  s&   € Ý)ØÔ×%Ò%Ñ'Ô'ñ
ô 
ð 	
r^   rr  rE   c                 óà   ‡— ‰                      ˆfd„¦  «         ‰                     d¦  «         | j                             ‰¦  «          ‰| j        ¦  «         ‰                     d¦  «         d S )Nc                  ó0   •— ‰                       dd¦  «        S )Nztriton.tools.tensor_descriptorÚTensorDescriptorr)  r$  s   €r_   r2  z9TMADescriptorStableVariable.reconstruct.<locals>.<lambda>Ã  s   ø€ �G×,Ò,Ø0Ø"ñô € r^   rÊ  r   )rã  Úload_methodrÒ  rR  rÌ  r  rq  s    `r_   rR  z'TMADescriptorStableVariable.reconstructÁ  sˆ   ø€ Ø×Òðð ð ð ñ	
ô 	
ð 	
ð 	×Ò˜MÑ*Ô*Ð*ØŒ×Ò Ñ(Ô(Ð(Øˆ�Ô Ñ!Ô!Ð!Ø×Ò˜AÑÔÐÐÐr^   c                 ó   — | j         S r�   )rÒ  rò   s    r_   rŸ  z&TMADescriptorStableVariable.get_tensorÍ  rø   r^   rŒ  )	rZ   r[   r\   r   r�   rž  rR  rŸ  rP  rQ  s   @r_   r�  r�  ¯  s­   ø€ € € € € ð
'à ð
'ð $ð
'ð ð	
'ð
 
ð
'ð 
'ð 
'ð 
'ð 
'ð 
'ð
˜Sð 
ð 
ð 
ð 
ð

ð 
ð 
ð 
ð˜Cð ð ð ð ð ð ð ð r^   r�  c                   ól   ‡ — e Zd Zdededdfˆ fd„Zdefd„Zddd	ee	         de
ee	f         de	fd
„Zˆ xZS )Ú'CreateTMADescriptorExperimentalVariableÚrankr–   r`   Nc                 ót   •— |dvrt          d|› �¦  «        ‚ t          ¦   «         j        di |¤Ž || _        d S )N)r<   r   zrank must be 1 or 2, got r]   )rÐ   rå   r�   rÖ  )r}   rÖ  r–   ræ   s      €r_   r�   z0CreateTMADescriptorExperimentalVariable.__init__Ò  sO   ø€ ð
 �vÐÐÝ Ð!C¸TÐ!CÐ!CÑDÔDÐDØ�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ	ˆ	ˆ	r^   c                 ó   — t           j        S r�   r|  rò   s    r_   r}  z3CreateTMADescriptorExperimentalVariable.python_typeÜ  r~  r^   r“   rH   r•   c                 óÎ  — d|v r|d         n|d         }t          |t          j        ¦  «        s,t          dd|› d|› �d| j        › d�d| j        › d	�g¬
¦  «         | j        dk    r~t          |¦  «        t          |¦  «        z   dk    r0t          |dt          |¦  «        t          |¦  «        z   › �¦  «         d|v r|d         n|d         g}d|v r|d         n|d         g}n£t          |¦  «        t          |¦  «        z   dk    r0t          |dt          |¦  «        t          |¦  «        z   › �¦  «         d|v r|d         n|d         d|v r|d         n|d         g}d|v r|d         n|d         d|v r|d         n|d         g}d|v r|d         n|d         }t          |t          j        ¦  «        st          dt          |¦  «        › �¦  «        ‚t          ||||¬¦  «        S )NÚptrr   z.invalid ptr argument for create_tma_descriptorzargs = z, kwargs = z#Expected `ptr` argument of `create_z]d_tma_descriptor`to be from a `.data_ptr()` call, represented internally by `DataPtrVariable`z `torch.compile` may fail to internally represent result of `.data_ptr()` with `DataPtrVariable` due to a graph break between the `.data_ptr()` call and `create_zTd_tma_descriptor`. Please ensure there were no graph breaks between these two calls.rc  r<   rR   z6TMA metadata rank=1 requires exactly 4 arguments, got rÃ  Ú	block_dimr   é   z6TMA metadata rank=2 requires exactly 6 arguments, got Údim1Údim0Ú
block_dim1r  Ú
block_dim0r½  r­  z#ptr must be a DataPtrVariable, got )rº  r»  r¼  r½  )
r´   r   r¿  r#   rÖ  rŠ   r!   rÐ   rÑ   rœ  )r}   r“   r•   r–   rÚ  r»  r¼  r½  s           r_   rA  z5CreateTMADescriptorExperimentalVariable.call_functionß  s…  € ð  %¨˜˜ˆf�UŒmˆm°D¸´Gˆå˜#�yÔ8Ñ9Ô9ð 	ÝØHØ; $Ð;Ð;°6Ð;Ð;ð_À$Ä)ð _ð _ð _ð/à#œyð/ð /ð /ððñ ô ð ð Œ9˜Š>ˆ>Ý�4‰yŒy�3˜v™;œ;Ñ&¨!Ò+Ð+Ý ØØfÍSÐQUÉYÌYÕY\Ð]cÑYdÔYdÑMdÐfÐfñô ð ð
 "'¨&  ��u”�°d¸1´gðˆDð (3°fÐ'<Ð'<��{Ô#Ð#À$ÀqÄ'ðˆJˆJõ �4‰yŒy�3˜v™;œ;Ñ&¨!Ò+Ð+Ý ØØfÍSÐQUÉYÌYÕY\Ð]cÑYdÔYdÑMdÐfÐfñô ð ð
 #)¨FÐ"2Ð"2��v”�¸¸Q¼Ø"(¨FÐ"2Ð"2��v”�¸¸Q¼ðˆDð
 )5¸Ð(>Ð(>��|Ô$Ð$ÀDÈÄGØ(4¸Ð(>Ð(>��|Ô$Ð$ÀDÈÄGðˆJð 2@À6Ð1IÐ1I�v˜nÔ-Ð-ÈtÐTVÌxˆõ ˜#�yÔ8Ñ9Ô9ð 	TÝ Ð!RÅtÈCÁyÄyÐ!RÐ!RÑSÔSÐSå0ØØØ!Ø%ð	
ñ 
ô 
ð 	
r^   )rZ   r[   r\   rÎ  r   r�   rÑ   r}  r§   r@   rˆ   rM  rA  rP  rQ  s   @r_   rÕ  rÕ  Ñ  s½   ø€ € € € € ðàðð ðð 
ð	ð ð ð ð ð ð"˜Tð "ð "ð "ð "ð;
à'ð;
ð �?Ô#ð;
ð �S˜/Ð)Ô*ð	;
ð
 
ð;
ð ;
ð ;
ð ;
ð ;
ð ;
ð ;
ð ;
r^   rÕ  c                   óN   — e Zd Zdefd„Zdddee         deeef         defd„Z	dS )	Ú!CreateTMADescriptorStableVariabler`   c                 ó   — t           j        S r�   r|  rò   s    r_   r}  z-CreateTMADescriptorStableVariable.python_type  r~  r^   r“   rH   r•   r–   c                 ót   — d|v r|d         n|d         }d|v r|d         n|d         }t          ||¬¦  «        S )NrÒ  r   rÌ  r<   )rÒ  rÌ  )r�  )r}   r“   r•   r–   rÒ  rÌ  s         r_   rA  z/CreateTMADescriptorStableVariable.call_function!  s\   € ð &.°Ð%7Ð%7�˜Ô!Ð!¸TÀ!¼WˆØ/<ÀÐ/FÐ/F�f˜]Ô+Ð+ÈDÐQRÌGˆå*ØØ#ð
ñ 
ô 
ð 	
r^   N)
rZ   r[   r\   rÑ   r}  r§   r@   rˆ   rM  rA  r]   r^   r_   râ  râ    sx   € € € € € ð"˜Tð "ð "ð "ð "ð
à'ð
ð �?Ô#ð
ð �S˜/Ð)Ô*ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
r^   râ  c                   óF   — e Zd ZdZdddee         deeef         defd„ZdS )	Ú!PyTreeGetNodeTypeFunctionVariableaW  
    `torch.utils._pytree._get_node_type` function is very hot function. We want to special case it to reduce Dynamo tracing time.

    def _get_node_type(tree: Any) -> Any:
        node_type = type(tree)
        # All namedtuple types are implicitly registered as pytree nodes.
        # XXX: Other parts of the codebase expect namedtuple types always return
        #      `namedtuple` instead of the actual namedtuple type. Even if the type
        #      is explicitly registered.
        if is_namedtuple_class(node_type):
            return collections.namedtuple
        return node_type
    r“   rH   r•   r–   r`   c                 ó>  — t          |¦  «        dk    r t          |dt          |¦  «        › �¦  «         d }|d         j        rQt          |d         j                             t
          j        ¦  «        ¦  «         t          |d         j        ¦  «        }|d                              ¦   «         }t          |¦  «        rKt          t          d¦  «        d¦  «        }t          j        |t          t          ¦  «        d         |¦  «        S t          j        |||¬¦  «        S )Nr<   z6pytree_get_node_type requires exactly 1 argument, got r   ÚcollectionsÚ
namedtuplerö   )rŠ   r!   r±   r&   r¡   r%   Ú
TYPE_MATCHr0   r}  r   r'   r-   r@   rµ   Úvarsrè  )r}   r“   r•   r–   Útype_sourcer}  s         r_   rA  z/PyTreeGetNodeTypeFunctionVariable.call_function?  s  € õ ˆt‰9Œ9˜Š>ˆ>ÝØÐXÍSÐQUÉYÌYÐXÐXñô ð ð ˆØ�Œ7Œ>ð 	5Ý˜$˜qœ'œ.×3Ò3µLÔ4KÑLÔLÑMÔMÐMÝ$ T¨!¤W¤^Ñ4Ô4ˆKØ˜1”g×)Ò)Ñ+Ô+ˆÝ˜{Ñ+Ô+ð 	Ý$¥\°-Ñ%@Ô%@À,ÑOÔOˆKÝ"Ô(Ø•D�Ñ%Ô% lÔ3°[ñô ð õ Ô$ R¨¸[ÐIÑIÔIÐIr^   N)	rZ   r[   r\   rÔ   r§   r@   rˆ   rM  rA  r]   r^   r_   ræ  ræ  0  sq   € € € € € ðð ðJà'ðJð �?Ô#ðJð �S˜/Ð)Ô*ð	Jð
 
ðJð Jð Jð Jð Jð Jr^   ræ  c                   óP   ‡ — e Zd ZdZdddee         deeef         defˆ fd„Zˆ xZ	S )Ú PyTreeTreeIsLeafFunctionVariablea@  
    `torch.utils._pytree.tree_is_leaf` function is a hot function. We want to special case it to reduce Dynamo tracing time.

    def tree_is_leaf(
        tree: PyTree,
        is_leaf: Callable[[PyTree], bool] | None = None,
    ) -> bool:
        if is_leaf is not None and is_leaf(tree):
            return True
        return _get_node_type(tree) not in SUPPORTED_NODES

    When is_leaf is None (the common case), we can optimize by not tracing into the function.
    When is_leaf is not None, we fall back to regular tracing since it requires executing user code.
    r“   rH   r•   r–   r`   c                 óÜ  •— t          |¦  «        dk     st          |¦  «        dk    r t          |dt          |¦  «        › �¦  «         |                     dt          j        d ¦  «        ¦  «        }t          |¦  «        dk    r|d         }|                     ¦   «         s#t          ¦   «                              |||¦  «        S |d         }t          t          j
        j        j        ¦  «                             ||gi ¦  «        }t          j        |t          j
        j        j        t!          ¦   «         ¬¦  «        }|                     |d|gi ¦  «        }t          j        ||j         ¦  «        S )Nr<   r   z,tree_is_leaf requires 1 or 2 arguments, got rT   r   rö   Ú__contains__)rŠ   r!   r�   rB   r·   r  rå   rA  ræ  rb   rc   rd   Ú_get_node_typer@   rµ   re   rf   r  rY  )
r}   r“   r•   r–   rT   ÚtreeÚnode_type_varÚsupported_nodes_varÚoutræ   s
            €r_   rA  z.PyTreeTreeIsLeafFunctionVariable.call_functionf  sR  ø€ õ ˆt‰9Œ9�qŠ=ˆ=�C ™IœI¨šM˜MÝØÐNÅ3ÀtÁ9Ä9ÐNÐNñô ð ð
 —*’*˜YÕ(8Ô(?ÀÑ(EÔ(EÑFÔFˆÝˆt‰9Œ9˜Š>ˆ>Ø˜1”gˆGà×'Ò'Ñ)Ô)ð 	;Ý‘7”7×(Ò(¨¨T°6Ñ:Ô:Ð:ð �AŒwˆÝ9ÝŒKÔÔ.ñ
ô 
ç
Š-˜˜T˜F BÑ
'Ô
'ð 	õ .Ô3ØÝŒKÔÔ/Ý4Ñ6Ô6ð
ñ 
ô 
Ðð
 "×-Ò-¨b°.À=À/ÐSUÑVÔVˆÝÔ$ R¨S¬Y¨Ñ7Ô7Ð7r^   r,  rQ  s   @r_   rî  rî  V  s|   ø€ € € € € ðð ð#8à'ð#8ð �?Ô#ð#8ð �S˜/Ð)Ô*ð	#8ð
 
ð#8ð #8ð #8ð #8ð #8ð #8ð #8ð #8ð #8ð #8r^   rî  c                   ód   ‡ — e Zd ZdZdededdfˆ fd„Zddd	ee         dee	ef         defd
„Z
ˆ xZS )Ú SparseTensorCreationSkipVariablezk
    Skip variable for sparse tensor factory functions with clear messaging regarding lack of support.
    rY  r–   r`   Nc                 óD   •— d} t          ¦   «         j        |fd|i|¤Ž d S )Nz8sparse tensor creation is not supported in torch.compiler8  )rå   r�   )r}   rY  r–   r8  ræ   s       €r_   r�   z)SparseTensorCreationSkipVariable.__init__‘  s2   ø€ ØKˆØ�‰ŒÔ˜Ð8Ð8 vÐ8°Ð8Ð8Ð8Ð8Ð8r^   r“   rH   r•   c                 ó¤   — ddl m} t          | j        dt	          | j        ¦  «        ¦  «        }t          dd|› �d|› d�g |j        ¢¬¦  «         d S )	Nr   )r   rZ   z$Sparse tensor creation not supportedz
function: zEtorch.compile does not support sparse tensor creation functions like zZ. Sparse tensors require specialized handling that is not yet implemented in the compiler.rc  )r]  r   rÞ   rY  rM  r#   ÚSPARSE_TENSOR)r}   r“   r•   r–   r   rá  s         r_   rA  z.SparseTensorCreationSkipVariable.call_function•  s‰   € ð 	)Ð(Ð(Ð(Ð(Ð(å˜$œ* jµ#°d´j±/´/ÑBÔBˆÝØ:Ø* Ð*Ð*ðkÐX_ð kð kð kð 5Ð%Ô3Ð4ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r^   )rZ   r[   r\   rÔ   r   r�   r§   r@   rˆ   rM  rA  rP  rQ  s   @r_   r÷  r÷  Œ  s¥   ø€ € € € € ðð ð9˜cð 9¨Sð 9°Tð 9ð 9ð 9ð 9ð 9ð 9ð
à'ð
ð �?Ô#ð
ð �S˜/Ð)Ô*ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r^   r÷  Ú	real_implc                 óŠ  ‡ — ddl mc m} ddlm}m}m} d„ }dg} ||||¦  «        \  }	}
 ||	¦  «        } ||
¦  «        }|                     di f¦  «        d         }dt          dt          d	t          fˆ fd
„} ||› d�|¦  «         ||› d�|¦  «         ||› d�|¦  «        df}‰ j
                             d||i ¦  «         dS )aI  Emit an invoke_leaf_function node for a side-effectful function with no
    tensor inputs or outputs.

    The function is captured as a closure inside _LeafCallable objects and
    registered as a static attribute on the graph module.  Because
    invoke_leaf_function is registered as EffectType.ORDERED, effect tokens
    prevent DCE and maintain execution ordering relative to other ops.

    Use this when Dynamo needs to preserve a pure-side-effect call (like
    setting global runtime state) in the compiled graph so that it replays
    at the correct position at runtime.
    r   N)Ú_LeafCallableÚinvoke_leaf_functionÚmake_leaf_function_wrappersc                  ó   — d S r�   r]   r]   r^   r_   Ú	fake_implz5emit_noargs_leaf_function_to_graph.<locals>.fake_implÁ  rL  r^   r]   r<   Ú	attr_namer°   r`   c                 óp   •— ‰j                              | |¦  «        }t          |¦  «        |j        _        |S r�   )rÀ   Ú%register_static_attr_and_return_proxyrÑ   r1  )r  r°   r¨  r“   s      €r_   Ú
make_proxyz6emit_noargs_leaf_function_to_graph.<locals>.make_proxyÍ  s.   ø€ Ø”	×?Ò?À	È3ÑOÔOˆÝ˜s™)œ)ˆŒ
ŒØˆr^   Ú_real_fnÚ_fake_fnÚ_input_specr]  rA  )Útorch.utils._pytreerc   rd   Ú,torch._higher_order_ops.invoke_leaf_functionrý  rþ  rÿ  Útree_flattenrM  r   rÀ   rI  )r“   rû  rœ   Úpytreerý  rþ  rÿ  r  Úcaptured_out_specÚwrapped_realÚwrapped_fakeÚreal_callableÚfake_callableÚ
input_specr  Úinvoke_argss   `               r_   Ú"emit_noargs_leaf_function_to_graphr  ©  sr  ø€ ð" )Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ðð ð ð ð ð ð ð ð ð ðð ð ð 8<°fÐØ!<Ð!<Ø�9Ð/ñ"ô "Ñ€L�,ð "�M ,Ñ/Ô/€MØ!�M ,Ñ/Ô/€MØ×$Ò$ b¨" XÑ.Ô.¨qÔ1€Jð�cð ­ð µð ð ð ð ð ð ð 	ˆ
�dÐ$Ð$Ð$ mÑ4Ô4Øˆ
�dÐ$Ð$Ð$ mÑ4Ô4Øˆ
�dÐ'Ð'Ð'¨Ñ4Ô4Ø
ð	€Kð „I×Ò˜?Ð,@À+ÈrÑRÔRÐRÐRÐRr^   c                   óp   ‡ — e Zd ZdZdededdfˆ fd„Zdefd„Zdd	d
ee	         de
ee	f         de	fd„Zˆ xZS )ÚTritonSetAllocatorVariablezœTrace triton.set_allocator as an invoke_leaf_function node in the
    graph so that it executes at the right point at runtime, ordered by
    effect tokens.rY  r–   r`   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S rƒ   rV  rW  s      €r_   r�   z#TritonSetAllocatorVariable.__init__à  rX  r^   c                 ó*   — t          | j        ¦  «        S r�   )rÑ   rY  rò   s    r_   r}  z&TritonSetAllocatorVariable.python_typeä  s   € Ý�D”JÑÔÐr^   r“   rH   r•   c                 ó$  ‡‡— t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|rt          d¦  «        ‚|d                              ¦   «         Š| j        Šˆˆfd„}t	          ||d¦  «         t          j        d ¦  «        S )Nr<   zexpected exactly 1 arg, got zunexpected kwargsr   c                  ó   •—  ‰‰ ¦  «         d S r�   r]   )Úalloc_fnÚset_allocators   €€r_   rû  z;TritonSetAllocatorVariable.call_function.<locals>.real_implö  s   ø€ ØˆM˜(Ñ#Ô#Ð#Ø�4r^   Ú	set_alloc)rŠ   rÐ   rþ   rY  r  rB   r·   )r}   r“   r•   r–   rû  r  r  s        @@r_   rA  z(TritonSetAllocatorVariable.call_functionç  sª   øø€ õ ˆt‰9Œ9˜Š>ˆ>Ý Ð!KÅÀDÁ	Ä	Ð!KÐ!KÑLÔLÐLØð 	6Ý Ð!4Ñ5Ô5Ð5Ø˜”7×-Ò-Ñ/Ô/ˆð œ
ˆð	ð 	ð 	ð 	ð 	ð 	õ 	+¨2¨y¸+ÑFÔFÐFåÔ& tÑ,Ô,Ð,r^   )rZ   r[   r\   rÔ   r   r�   rÑ   r}  r§   r@   rˆ   rM  rA  rP  rQ  s   @r_   r  r  Û  sÀ   ø€ € € € € ðð ð˜cð ¨Sð °Tð ð ð ð ð ð ð ˜Tð  ð  ð  ð  ð-à'ð-ð �?Ô#ð-ð �S˜/Ð)Ô*ð	-ð
 
ð-ð -ð -ð -ð -ð -ð -ð -r^   r  c                   óú   ‡ — e Zd ZdZdhej        £Zdej        dededdfˆ fd„Z	de
fd„Zdefd	„Zdej        fd
„Zdej        fd„Zddde
defˆ fd„Zdddee         dee
ef         defd„Zdddededdfd„Zˆ xZS )ÚWrapperDescriptorVariablea)  Unbound C slot wrapper (wrapper_descriptor on a type).

    CPython types define behavior through C-level slots on PyTypeObject
    (tp_richcompare, sq_length, nb_add, etc.).  When these slots are
    accessed from Python (e.g. list.__add__), CPython exposes them as
    wrapper_descriptor objects (PyWrapperDescr_Type).  A wrapper_descriptor
    is an unbound descriptor living on the type -- it is not tied to any
    instance.
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L867

    When a wrapper_descriptor is accessed on an instance (e.g. [1,2].__add__),
    its tp_descr_get slot (wrapperdescr_get) is invoked, which calls
    PyWrapper_New to produce a bound method-wrapper (_PyMethodWrapper_Type).
    The tp_descr_get_impl method on this class mirrors that binding step.
    Ú
descriptorr¥  r–   r`   Nc                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S rƒ   ©rå   r�   r   r¥  ©r}   r   r¥  r–   ræ   s       €r_   r�   z"WrapperDescriptorVariable.__init__  ó4   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø$ˆŒØˆŒ
ˆ
ˆ
r^   c                 óJ   — | j         j        j        }d|› d| j         j        › d�S )NzWrapperDescriptorVariable(r^  r·  ©r   Ú__objclass__rZ   ©r}   Úcls_names     r_   r�  z"WrapperDescriptorVariable.__repr__(  s-   € Ø”?Ô/Ô8ˆØR¨HÐRÐR°t´Ô7OÐRÐRÐRÐRr^   c                 ó   — t           j        S r�   )rÎ   ÚWrapperDescriptorTyperò   s    r_   r}  z%WrapperDescriptorVariable.python_type,  s   € ÝÔ*Ð*r^   c                 ó   — | j         S r�   ©r   rò   s    r_   rþ   z,WrapperDescriptorVariable.as_python_constant/  ó
   € ØŒÐr^   c                 ó   — | j         S r�   r-  rò   s    r_   ru  z6WrapperDescriptorVariable.get_real_python_backed_value2  r.  r^   r“   rH   rœ   c                 óð   •— |dk    rt          j        || j        j        ¦  «        S |dk    r)t          j                             | j        j        ¦  «        S t          ¦   «          	                    ||¦  «        S ©Nr'  rZ   ©
r@   rµ   r   r'  r   rB   r·   rZ   rå   r:  rÌ  s      €r_   r:  z%WrapperDescriptorVariable.var_getattr5  ói   ø€ ð �>Ò!Ð!Ý"Ô(¨¨T¬_Ô-IÑJÔJÐJØ�:ÒÐÝÔ-×4Ò4°T´_Ô5MÑNÔNÐNÝ‰wŒw×"Ò" 2 tÑ,Ô,Ð,r^   r•   c                 óÂ   — |s0t          |d| j        j        › d| j        j        j        › d�¦  «         |^}}| j                             || j        j        |g|¢|¦  «        S )Núdescriptor 'ú' of 'ú' object needs an argument)r!   r   rZ   r'  r¥  r  )r}   r“   r•   r–   r¤  ró  s         r_   rA  z'WrapperDescriptorVariable.call_function>  s’   € ð ð 	ÝØðV˜tœÔ7ð Vð VØ”OÔ0Ô9ðVð Vð Vñô ð ð
 ˆ
ˆˆdð
 Œz×%Ò%Ø�”Ô(¨3¨,°¨,¸ñ
ô 
ð 	
r^   r¤  ÚMethodWrapperVariablec                 ó:   — t          | j        || j        ¬¦  «        S r[  )r8  r   r±   ©r}   r“   r¤  r¥  s       r_   r¨  z+WrapperDescriptorVariable.tp_descr_get_implV  s   € õ % T¤_°cÀ$Ä+ÐNÑNÔNÐNr^   )rZ   r[   r\   rÔ   r@   r"  rÎ   r+  r   r�   rM  r�  rÑ   r}  rþ   ru  r:  r§   rˆ   rA  r¨  rP  rQ  s   @r_   r  r    sÃ  ø€ € € € € ðð ð" 	ðà	Ô	'ð€Nð
àÔ/ðð ðð ð	ð
 
ðð ð ð ð ð ðS˜#ð Sð Sð Sð Sð+˜Tð +ð +ð +ð +ð EÔ$?ð ð ð ð ð¨eÔ.Ið ð ð ð ð-Ø-ð-Ø58ð-à	ð-ð -ð -ð -ð -ð -ð
à'ð
ð �?Ô#ð
ð �S˜/Ð)Ô*ð	
ð
 
ð
ð 
ð 
ð 
ð0
Oà'ð
Oð ð
Oð ð	
Oð
 
!ð
Oð 
Oð 
Oð 
Oð 
Oð 
Oð 
Oð 
Or^   r  c                   ó*  ‡ — e Zd ZdZdhej        £Zdej        dededdfˆ fd„Z	de
fd„Zdefd	„Zdej        fd
„Zdefd„Zdej        fd„Zdddee         dee
ef         defd„Zdd„Zdedeeef         fˆ fd„Zddddde
ddfd„Zdedefd„Zˆ xZS )r8  a'  Bound method-wrapper (wrapper_descriptor bound to an instance).

    Produced by WrapperDescriptorVariable.tp_descr_get_impl, mirroring
    PyWrapper_New which stores a reference to the descriptor and the instance.
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L1450
    r   r¤  r–   r`   Nc                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S rƒ   ©rå   r�   r   r¤  ©r}   r   r¤  r–   ræ   s       €r_   r�   zMethodWrapperVariable.__init__p  s4   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø$ˆŒØˆŒˆˆr^   c                 óZ   — | j         j        j        }d|› d| j         j        › d| j        › d�S )NzMethodWrapperVariable(r^  r¶  r·  )r   r'  rZ   r¤  r(  s     r_   r�  zMethodWrapperVariable.__repr__z  s9   € Ø”?Ô/Ô8ˆàW XÐWÐW°´Ô0HÐWÐWÈDÌHÐWÐWÐWð	
r^   c                 ó   — t           j        S r�   )rÎ   ÚMethodWrapperTyperò   s    r_   r}  z!MethodWrapperVariable.python_type€  ó   € ÝÔ&Ð&r^   c                 ó*   — |                       ¦   «         S r�   r«  rò   s    r_   ru  z2MethodWrapperVariable.get_real_python_backed_valueƒ  r  r^   c                 ó4   — | j                              ¦   «         S r�   )r¤  r  rò   s    r_   r  z(MethodWrapperVariable.is_python_constant†  s   € ØŒx×*Ò*Ñ,Ô,Ð,r^   c                 ód   — | j                              | j                             ¦   «         ¦  «        S r�   )r   rž  r¤  rþ   rò   s    r_   rþ   z(MethodWrapperVariable.as_python_constant‰  s&   € ØŒ×&Ò& t¤x×'BÒ'BÑ'DÔ'DÑEÔEÐEr^   r“   rH   r•   c                 ó  — 	 |                       ¦   «         }n# t          $ r d }Y nw xY w|�¢t          |¦  «        r“|r‘t          |d         t          j        ¦  «        rqt          |¦  «        dk    rt          |¦  «        dk    st          |d¦  «         t          t          |j
        ¦  «        }|d                              ||j        ¦  «        S | j                             || j        j        t!          |¦  «        |¦  «        S )Nr   r<   z2tensor attribute getter takes exactly one argument)rþ   r  r7   r´   r   rO   rŠ   r!   r   r   r€  r:  rZ   r¤  r  r   r§   )r}   r“   r•   r–   Úmethod_wrapperr   s         r_   rA  z#MethodWrapperVariable.call_functionŒ  s
  € ð	"Ø!×4Ò4Ñ6Ô6ˆNˆNøÝ"ð 	"ð 	"ð 	"Ø!ˆNˆNˆNð	"øøøð Ð&Ý*¨>Ñ:Ô:ð 'àð 'õ ˜4 œ7¥IÔ$<Ñ=Ô=ð 'õ
 ˜‘I”I ’N�N¥s¨6¡{¤{°aÒ'7Ð'7Ý ØÐLñô ð õ
 �c >Ô#:Ñ;Ô;ˆJØ˜”7×&Ò& r¨:Ô+>Ñ?Ô?Ð?àŒx×#Ò# B¨¬Ô(@Å$ÀtÁ*Ä*ÈfÑUÔUÐUs   ‚ —&¥&rr  rE   c                 óŠ   —  || j         ¦  «         |                     |                     | j        j        ¦  «        ¦  «         d S r�   ©r¤  rä  Úcreate_load_attrsr   rZ   rq  s     r_   rR  z!MethodWrapperVariable.reconstruct§  óA   € Øˆ�”ÑÔÐØ×Ò˜g×7Ò7¸¼Ô8PÑQÔQÑRÔRÐRÐRÐRr^   c                 ó®   •— 	 t          |                      ¦   «         ¦  «        dfS # t          $ r$ t          ¦   «                              |¦  «        cY S w xY wrC  )r¯  rþ   r  rå   rµ  )r}   r“   ræ   s     €r_   rµ  zMethodWrapperVariable.hash_impl«  sb   ø€ ð	)õ ˜×/Ò/Ñ1Ô1Ñ2Ô2°EÐ9Ð9øÝ"ð 	)ð 	)ð 	)Ý‘7”7×$Ò$ RÑ(Ô(Ð(Ð(Ð(ð	)øøøs   ƒ"& ¦+AÁArí   r@   rî   c                 ó*   — ddl m}  || |||¦  «        S ©Nr<   )Ú python_constant_richcompare_impl©rë   rO  ©r}   r“   rí   rî   rO  s        r_   rï   z&MethodWrapperVariable.richcompare_impl³  ó.   € ð 	FÐEÐEÐEÐEÐEà/Ð/°°b¸%ÀÑDÔDÐDr^   c                 ó¨   — t          |t          ¦  «        sdS 	 |                      ¦   «         |                     ¦   «         k    S # t          $ r Y dS w xY wrC  )r´   r@   rþ   r  r  s     r_   r   z%MethodWrapperVariable.is_python_equalº  sc   € Ý˜%¥Ñ1Ô1ð 	Ø�5ð	Ø×*Ò*Ñ,Ô,°×0HÒ0HÑ0JÔ0JÒJÐJøÝ"ð 	ð 	ð 	Ø�5�5ð	øøøs   ™)A Á
AÁArŒ  )rZ   r[   r\   rÔ   r@   r"  rÎ   r+  r   r�   rM  r�  rÑ   r}  rA  ru  rO  r  rþ   r§   rˆ   rA  rR  r¦   rÎ  rµ  rï   r%  r   rP  rQ  s   @r_   r8  r8  c  s  ø€ € € € € ðð ð 	ðà	Ô	'ð€Nð
àÔ/ðð ðð ð	ð
 
ðð ð ð ð ð ð
˜#ð 
ð 
ð 
ð 
ð'˜Tð 'ð 'ð 'ð 'ð)¨eÔ.Eð )ð )ð )ð )ð- Dð -ð -ð -ð -ðF EÔ$;ð Fð Fð Fð FðVà'ðVð �?Ô#ðVð �S˜/Ð)Ô*ð	Vð
 
ðVð Vð Vð Vð6Sð Sð Sð Sð)˜Cð ) E¨#¨t¨)Ô$4ð )ð )ð )ð )ð )ð )ðEØ-ðEØ6GðEØMPðEà	ðEð Eð Eð Eð Vð °ð ð ð ð ð ð ð ð r^   r8  c                   óú   ‡ — e Zd ZdZdhej        £Zdej        dededdfˆ fd„Z	de
fd„Zdefd	„Zdej        fd
„Zdej        fd„Zddde
defˆ fd„Zdddee         dee
ef         defd„Zdddededdfd„Zˆ xZS )ÚMethodDescriptorVariablea  Unbound C method descriptor (method_descriptor on a type).

    CPython types expose their PyMethodDef-based C methods as
    method_descriptor objects (PyMethodDescr_Type) in the type's tp_dict.
    For example, list.append and dict.get are method_descriptors.  Like
    wrapper_descriptors, these are unbound descriptors living on the type.
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L716

    When a method_descriptor is accessed on an instance (e.g. [].append),
    its tp_descr_get slot (method_get) is invoked, which calls
    PyCFunction_NewEx to produce a bound builtin_function_or_method
    (PyCFunction_Type).  The tp_descr_get_impl method mirrors that step.
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L137-L159
    r   r¥  r–   r`   Nc                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S rƒ   r"  r#  s       €r_   r�   z!MethodDescriptorVariable.__init__Ø  r$  r^   c                 óJ   — | j         j        j        }d|› d| j         j        › d�S )NzMethodDescriptorVariable(r^  r·  r&  r(  s     r_   r�  z!MethodDescriptorVariable.__repr__â  ó-   € Ø”?Ô/Ô8ˆØQ¨8ÐQÐQ°d´oÔ6NÐQÐQÐQÐQr^   c                 ó   — t           j        S r�   )rÎ   ÚMethodDescriptorTyperò   s    r_   r}  z$MethodDescriptorVariable.python_typeæ  ó   € ÝÔ)Ð)r^   c                 ó   — | j         S r�   r-  rò   s    r_   rþ   z+MethodDescriptorVariable.as_python_constanté  r.  r^   c                 ó   — | j         S r�   r-  rò   s    r_   ru  z5MethodDescriptorVariable.get_real_python_backed_valueì  r.  r^   r“   rH   rœ   c                 óð   •— |dk    rt          j        || j        j        ¦  «        S |dk    r)t          j                             | j        j        ¦  «        S t          ¦   «          	                    ||¦  «        S r1  r2  rÌ  s      €r_   r:  z$MethodDescriptorVariable.var_getattrï  r3  r^   r•   c           
      ó¢  — |s0t          |d| j        j        › d| j        j        j        › d�¦  «         |^}}| j        j        }	 |                     ¦   «         }t          || j        j        ¦  «        s.t          |d|› d| j        j        j        › d|j        › d�¦  «         n# t          $ r Y nw xY w| j                             |||g|¢|¦  «        S )Nr5  r6  r7  z' for 'z' objects doesn't apply to a 'z' object)	r!   r   rZ   r'  r}  r4  r  r¥  r  )r}   r“   r•   r–   r¤  ró  rœ   Úobj_types           r_   rA  z&MethodDescriptorVariable.call_functionø  s6  € ð ð 	ÝØðV˜tœÔ7ð Vð VØ”OÔ0Ô9ðVð Vð Vñô ð ð
 ˆ
ˆˆdØŒÔ'ˆð
	Ø—’Ñ(Ô(ˆHÝ˜h¨¬Ô(DÑEÔEð Ý ØðG 4ð Gð GØœÔ4Ô=ðGð Gà+3Ô+<ðGð Gð Gñô ð øøõ #ð 	ð 	ð 	ØˆDð	øøøð
 Œz×%Ò% b¨$°°°t°¸fÑEÔEÐEs   ÁAB! Â!
B.Â-B.r¤  ÚBoundBuiltinMethodVariablec                 ó:   — t          | j        || j        ¬¦  «        S r[  ©ra  r   r±   r:  s       r_   r¨  z*MethodDescriptorVariable.tp_descr_get_impl  s   € õ *¨$¬/¸3ÀtÄ{ÐSÑSÔSÐSr^   )rZ   r[   r\   rÔ   r@   r"  rÎ   rZ  r   r�   rM  r�  rÑ   r}  rþ   ru  r:  r§   rˆ   rA  r¨  rP  rQ  s   @r_   rU  rU  Ã  sÌ  ø€ € € € € ðð ð  	ðà	Ô	'ð€Nð
àÔ.ðð ðð ð	ð
 
ðð ð ð ð ð ðR˜#ð Rð Rð Rð Rð*˜Tð *ð *ð *ð *ð EÔ$>ð ð ð ð ð¨eÔ.Hð ð ð ð ð-Ø-ð-Ø58ð-à	ð-ð -ð -ð -ð -ð -ðFà'ðFð �?Ô#ðFð �S˜/Ð)Ô*ð	Fð
 
ðFð Fð Fð Fð@
Tà'ð
Tð ð
Tð ð	
Tð
 
&ð
Tð 
Tð 
Tð 
Tð 
Tð 
Tð 
Tð 
Tr^   rU  c                   óÒ   ‡ — e Zd ZdZdhej        £Zdej        ej        z  ej	        z  dede
ddfˆ fd„Zdefd„Zdefd	„Zde
fd
„Zdddee         deeef         defd„Zdd„Zˆ xZS )ra  aè  Bound builtin_function_or_method (PyCFunction_Type).

    Produced by MethodDescriptorVariable.tp_descr_get_impl (binding a
    method_descriptor to an instance, e.g. [].append) or created by the
    builder for bound C methods (e.g. frozenset().__contains__,
    tuple.__new__).  The backing descriptor can be a MethodDescriptorType
    or a BuiltinFunctionType (for methods stored directly in type dicts).
    https://github.com/python/cpython/blob/3.13/Objects/methodobject.c#L331
    r   r¤  r–   r`   Nc                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S rƒ   r=  r>  s       €r_   r�   z#BoundBuiltinMethodVariable.__init__5  s4   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø$ˆŒØˆŒˆˆr^   c                 ó‚   — t          t          | j        dd ¦  «        dd¦  «        }d|› d| j        j        › d| j        › d�S )Nr'  rZ   ú?zBoundBuiltinMethodVariable(r^  r¶  r·  )rÞ   r   rZ   r¤  r(  s     r_   r�  z#BoundBuiltinMethodVariable.__repr__A  sS   € ÝÝ�D”O ^°TÑ:Ô:¸JÈñ
ô 
ˆð `¨XÐ_Ð_¸¼Ô8PÐ_Ð_ÐTXÔT\Ð_Ð_Ð_Ð_r^   c                 ó   — t           j        S r�   )rÎ   ÚBuiltinMethodTyperò   s    r_   r}  z&BoundBuiltinMethodVariable.python_typeG  rB  r^   c                 ó:  — | j                              ¦   «         }t          | j        t          j        ¦  «        r| j                             d |¦  «        S t          | j        d¦  «        r| j                             |¦  «        S t          || j        j	        ¦  «        S )Nrž  )
r¤  rþ   r´   r   rÎ   ÚClassMethodDescriptorTyperž  rC  rÞ   rZ   )r}   r¤  s     r_   rþ   z-BoundBuiltinMethodVariable.as_python_constantJ  sƒ   € ØŒh×)Ò)Ñ+Ô+ˆÝ�d”o¥uÔ'FÑGÔGð 	6Ø”?×*Ò*¨4°Ñ5Ô5Ð5Ý�4”? IÑ.Ô.ð 	0Ø”?×*Ò*¨3Ñ/Ô/Ð/Ý�s˜DœOÔ4Ñ5Ô5Ð5r^   r“   rH   r•   c                 ój   — | j                              || j        j        t	          |¦  «        |¦  «        S r�   )r¤  r  r   rZ   r§   r@  s       r_   rA  z(BoundBuiltinMethodVariable.call_functionR  s+   € ð Œx×#Ò# B¨¬Ô(@Å$ÀtÁ*Ä*ÈfÑUÔUÐUr^   rr  rE   c                 óŠ   —  || j         ¦  «         |                     |                     | j        j        ¦  «        ¦  «         d S r�   rI  rq  s     r_   rR  z&BoundBuiltinMethodVariable.reconstructZ  rK  r^   rŒ  )rZ   r[   r\   rÔ   r@   r"  rÎ   rZ  rZ  rk  r   r�   rM  r�  rÑ   r}  rþ   r§   rˆ   rA  rR  rP  rQ  s   @r_   ra  ra  %  s`  ø€ € € € € ðð ð 	ðà	Ô	'ð€Nð

àÔ.Ø
Ô
#ñ$à
Ô
)ñ*ð
ð
 ð
ð ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð`˜#ð `ð `ð `ð `ð'˜Tð 'ð 'ð 'ð 'ð6 Cð 6ð 6ð 6ð 6ðVà'ðVð �?Ô#ðVð �S˜/Ð)Ô*ð	Vð
 
ðVð Vð Vð VðSð Sð Sð Sð Sð Sð Sð Sr^   ra  c                   óÂ   ‡ — e Zd ZdZdhej        £Zdej        deddfˆ fd„Z	de
fd„Zdefd„Zdej        fd	„Zdej        fd
„Zddde
defˆ fd„Zdddededefd„Zˆ xZS )ÚClassMethodDescriptorVariableay  C-level classmethod descriptor (classmethod_descriptor on a type).

    CPython exposes C classmethods defined via PyMethodDef with METH_CLASS
    as classmethod_descriptor objects (PyClassMethodDescr_Type).  For
    example, dict.fromkeys is a classmethod_descriptor.  Like
    method_descriptor, these live on the type and are unbound.
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L756

    classmethod_get binds the C method to the class (ignoring obj) via
    PyCMethod_New, producing a bound builtin_function_or_method.
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L94-L134
    r   r–   r`   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S rƒ   ©rå   r�   r   ©r}   r   r–   ræ   s      €r_   r�   z&ClassMethodDescriptorVariable.__init__r  ó-   ø€ ð
 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø$ˆŒˆˆr^   c                 óJ   — | j         j        j        }d|› d| j         j        › d�S )NzClassMethodDescriptorVariable(r^  r·  r&  r(  s     r_   r�  z&ClassMethodDescriptorVariable.__repr__z  s-   € Ø”?Ô/Ô8ˆØV°ÐVÐV¸4¼?Ô;SÐVÐVÐVÐVr^   c                 ó   — t           j        S r�   )rÎ   rk  rò   s    r_   r}  z)ClassMethodDescriptorVariable.python_type~  s   € ÝÔ.Ð.r^   c                 ó   — | j         S r�   r-  rò   s    r_   rþ   z0ClassMethodDescriptorVariable.as_python_constant�  r.  r^   c                 ó   — | j         S r�   r-  rò   s    r_   ru  z:ClassMethodDescriptorVariable.get_real_python_backed_value„  r.  r^   r“   rH   rœ   c                 óð   •— |dk    rt          j        || j        j        ¦  «        S |dk    r)t          j                             | j        j        ¦  «        S t          ¦   «          	                    ||¦  «        S r1  r2  rÌ  s      €r_   r:  z)ClassMethodDescriptorVariable.var_getattr‡  ói   ø€ ð �>Ò!Ð!Ý"Ô(¨¨T¬_Ô-IÑJÔJÐJØ�:ÒÐÝÔ-×4Ò4°T´_Ô5MÑNÔNÐNÝ‰wŒw×"Ò" 2 tÑ,Ô,Ð,r^   r¤  r¥  c                 ó:   — t          | j        || j        ¬¦  «        S r[  rc  r:  s       r_   r¨  z/ClassMethodDescriptorVariable.tp_descr_get_impl“  s   € õ *¨$¬/¸5ÈÌÐUÑUÔUÐUr^   )rZ   r[   r\   rÔ   r@   r"  rÎ   rk  r   r�   rM  r�  rÑ   r}  rþ   ru  r:  ra  r¨  rP  rQ  s   @r_   ro  ro  _  sp  ø€ € € € € ðð ð 	ðà	Ô	'ð€Nð
%àÔ3ð%ð ð%ð 
ð	%ð %ð %ð %ð %ð %ðW˜#ð Wð Wð Wð Wð/˜Tð /ð /ð /ð /ð EÔ$Cð ð ð ð ð¨eÔ.Mð ð ð ð ð
-Ø-ð
-Ø58ð
-à	ð
-ð 
-ð 
-ð 
-ð 
-ð 
-ð	Và'ð	Vð ð	Vð ð		Vð
 
$ð	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vr^   ro  c                   ó†   ‡ — e Zd ZdZdhej        £Zdededdfˆ fd„Zde	fd„Z
defd„Zdefd	„Zd
ddedz  dedefd„Zˆ xZS )ÚStaticMethodVariableaƒ  staticmethod descriptor wrapping a callable.

    CPython's staticmethod (PyStaticMethod_Type) is a non-data descriptor
    whose tp_descr_get (sm_descr_get) simply returns the wrapped callable,
    ignoring both obj and type.
    https://github.com/python/cpython/blob/3.13/Objects/funcobject.c#L1520
    https://github.com/python/cpython/blob/3.13/Objects/funcobject.c#L1418-L1428
    r   r–   r`   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S rƒ   rq  rr  s      €r_   r�   zStaticMethodVariable.__init__®  rs  r^   c                 óD   — t          | j        j        dd¦  «        }d|› d�S )NrZ   rg  zStaticMethodVariable(r·  ©rÞ   r   r©  ©r}   Ú	func_names     r_   r�  zStaticMethodVariable.__repr__¶  s)   € Ý˜DœOÔ4°jÀ#ÑFÔFˆ	Ø3 yÐ3Ð3Ð3Ð3r^   c                 ó   — t           S r�   )rô  rò   s    r_   r}  z StaticMethodVariable.python_typeº  r0  r^   c                 ó   — | j         S r�   r-  rò   s    r_   rþ   z'StaticMethodVariable.as_python_constant½  r.  r^   r“   rH   r¤  r¥  c                 ó~   — | j         rt          | j         d¦  «        nd }t          j        || j        j        |¦  «        S )Nr©  )r±   r'   r@   rµ   r   r©  )r}   r“   r¤  r¥  Úfunc_sources        r_   r¨  z&StaticMethodVariable.tp_descr_get_implÀ  s<   € ð >B¼[ÐR•j ¤¨jÑ9Ô9Ð9ÈdˆÝÔ$ R¨¬Ô)AÀ;ÑOÔOÐOr^   )rZ   r[   r\   rÔ   r@   r"  rô  r   r�   rM  r�  rÑ   r}  rþ   r¨  rP  rQ  s   @r_   r|  r|  Ÿ  s  ø€ € € € € ðð ð 	ðà	Ô	'ð€Nð
%à ð%ð ð%ð 
ð	%ð %ð %ð %ð %ð %ð4˜#ð 4ð 4ð 4ð 4ð˜Tð ð ð ð ð Lð ð ð ð ð	Pà'ð	Pð ˜tÑ#ð	Pð ð		Pð
 
ð	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pr^   r|  c                   ó€   ‡ — e Zd ZdZdhej        £Zdededdfˆ fd„Zde	fd„Z
defd„Zdefd	„Zd
ddededefd„Zˆ xZS )ÚClassMethodVariablea•  classmethod descriptor wrapping a callable.

    CPython's classmethod (PyClassMethod_Type) is a non-data descriptor
    whose tp_descr_get (cm_descr_get) creates a bound method of the
    wrapped callable bound to the class (via PyMethod_New).
    https://github.com/python/cpython/blob/3.13/Objects/funcobject.c#L1314
    https://github.com/python/cpython/blob/3.13/Objects/funcobject.c#L1215-L1227
    r   r–   r`   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S rƒ   rq  rr  s      €r_   r�   zClassMethodVariable.__init__Û  rs  r^   c                 óD   — t          | j        j        dd¦  «        }d|› d�S )NrZ   rg  zClassMethodVariable(r·  r  r€  s     r_   r�  zClassMethodVariable.__repr__ã  s)   € Ý˜DœOÔ4°jÀ#ÑFÔFˆ	Ø2 iÐ2Ð2Ð2Ð2r^   c                 ó   — t           S r�   )r$  rò   s    r_   r}  zClassMethodVariable.python_typeç  s   € ÝÐr^   c                 ó   — | j         S r�   r-  rò   s    r_   rþ   z&ClassMethodVariable.as_python_constantê  r.  r^   r“   rH   r¤  r¥  c                 óÒ   — | j         rt          | j         d¦  «        nd }|j         r$t          |j         | j        j        j        ¦  «        nd }t          | j        j        |||¬¦  «        S )Nr©  r§  )r±   r'   r   r©  rZ   rŒ  )r}   r“   r¤  r¥  r…  Úbound_sources         r_   r¨  z%ClassMethodVariable.tp_descr_get_implí  sy   € ð >B¼[ÐR•j ¤¨jÑ9Ô9Ð9Èdˆð Œ|ð�J�u”| T¤_Ô%=Ô%FÑGÔGÐGàð 	õ
 "ØŒOÔ$ØØ!Øð	
ñ 
ô 
ð 	
r^   )rZ   r[   r\   rÔ   r@   r"  r$  r   r�   rM  r�  rÑ   r}  rþ   r¨  rP  rQ  s   @r_   r‡  r‡  Ì  s  ø€ € € € € ðð ð 	ðà	Ô	'ð€Nð
%àð%ð ð%ð 
ð	%ð %ð %ð %ð %ð %ð3˜#ð 3ð 3ð 3ð 3ð˜Tð ð ð ð ð Kð ð ð ð ð
à'ð
ð ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r^   r‡  c                   ó¬   ‡ — e Zd ZdZdhej        £Zdej        deddfˆ fd„Z	de
fd„Zdefd„Zdej        fd	„Zd
dde
defˆ fd„Zd
ddededefd„Zˆ xZS )ÚMemberDescriptorVariableaù  C struct field descriptor (member_descriptor on a type).

    CPython exposes C struct fields defined via PyMemberDef as
    member_descriptor objects (PyMemberDescr_Type).  These are data
    descriptors used by __slots__ and C extension types to provide
    direct access to struct members.
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L793

    member_get reads the field via PyMember_GetOne.
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L162-L180
    r   r–   r`   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S rƒ   rq  rr  s      €r_   r�   z!MemberDescriptorVariable.__init__  rs  r^   c                 óJ   — | j         j        j        }d|› d| j         j        › d�S )NzMemberDescriptorVariable(r^  r·  r&  r(  s     r_   r�  z!MemberDescriptorVariable.__repr__  rX  r^   c                 ó   — t           j        S r�   )rÎ   ÚMemberDescriptorTyperò   s    r_   r}  z$MemberDescriptorVariable.python_type!  r[  r^   c                 ó   — | j         S r�   r-  rò   s    r_   rþ   z+MemberDescriptorVariable.as_python_constant$  r.  r^   r“   rH   rœ   c                 óð   •— |dk    rt          j        || j        j        ¦  «        S |dk    r)t          j                             | j        j        ¦  «        S t          ¦   «          	                    ||¦  «        S r1  r2  rÌ  s      €r_   r:  z$MemberDescriptorVariable.var_getattr'  ry  r^   r¤  r¥  c           
      óÖ  — | j         j        }t          |dd ¦  «        }|€<	 |                     ¦   «         }n&# t          $ r |                     ||¦  «        cY S w xY w	 | j                              |¦  «        }nA# t          $ r4 t          t          |dt          |¦  «        j        › d|› d�g¬¦  «         Y nw xY w|j
        ot          |j
        |¦  «        }t          j        |||¦  «        S )NrY  ú'ú' object has no attribute 'rþ  )r   rZ   rÞ   rþ   r  r:  rž  rÜ   r    rÑ   r±   r'   r@   rµ   )r}   r“   r¤  r¥  r  Ú	obj_valueÚresolvedÚresult_sources           r_   r¨  z*MemberDescriptorVariable.tp_descr_get_impl3  s#  € ð ”OÔ,ˆ	Ý˜C ¨$Ñ/Ô/ˆ	ØÐð6Ø×2Ò2Ñ4Ô4�	�	øÝ&ð 6ð 6ð 6Ø—’ r¨9Ñ5Ô5Ð5Ð5Ð5ð6øøøð		Ø”×.Ò.¨yÑ9Ô9ˆHˆHøÝð 	ð 	ð 	Ý$ÝØàY�˜Y™œÔ0ÐYÐYÈYÐYÐYÐYððñ ô ð ð ð ð	øøøð œ
ÐH¥z°#´*¸iÑ'HÔ'HˆÝÔ$ R¨°=ÑAÔAÐAó!   ¡6 ¶ AÁAÁA8 Á8;B6Â5B6)rZ   r[   r\   rÔ   r@   r"  rÎ   r“  r   r�   rM  r�  rÑ   r}  rþ   r:  r¨  rP  rQ  s   @r_   r�  r�    sR  ø€ € € € € ð
ð 
ð 	ðà	Ô	'ð€Nð
%àÔ.ð%ð ð%ð 
ð	%ð %ð %ð %ð %ð %ðR˜#ð Rð Rð Rð Rð*˜Tð *ð *ð *ð *ð EÔ$>ð ð ð ð ð
-Ø-ð
-Ø58ð
-à	ð
-ð 
-ð 
-ð 
-ð 
-ð 
-ðBà'ðBð ðBð ð	Bð
 
ðBð Bð Bð Bð Bð Bð Bð Br^   r�  c                   óÚ   ‡ — e Zd ZdZdhej        £Zdej        deddfˆ fd„Z	de
fd„Zdej        fd„Zd	d
de
defˆ fd„Zdefd„Zdej        fd„Zd	d
ddde
ddfd„Zd	d
dededefd„Zˆ xZS )ÚGetSetDescriptorVariableaÿ  C getter/setter descriptor (getset_descriptor on a type).

    CPython exposes C getter/setter pairs defined via PyGetSetDef as
    getset_descriptor objects (PyGetSetDescr_Type).  These are data
    descriptors used for computed attributes backed by C functions
    (e.g. object.__class__, type.__dict__).
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L830

    getset_get calls the C getter function.
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L183-L197
    r   r–   r`   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S rƒ   rq  rr  s      €r_   r�   z!GetSetDescriptorVariable.__init__c  s+   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø$ˆŒˆˆr^   c                 óJ   — | j         j        j        }d|› d| j         j        › d�S )NzGetSetDescriptorVariable(r^  r·  r&  r(  s     r_   r�  z!GetSetDescriptorVariable.__repr__g  rX  r^   c                 ó   — | j         S r�   r-  rò   s    r_   ru  z5GetSetDescriptorVariable.get_real_python_backed_valuek  r.  r^   r“   rH   rœ   c                 ó^  •— |dk    r<| j         r5t          | j         d¦  «        }t          j        || j        j        |¦  «        S |dv rE| j         ot          | j         |¦  «        }t          j        |t          | j        |¦  «        |¦  «        S t          ¦   «                              ||¦  «        S )Nrž  )r'  rZ   )	r±   r'   r@   rµ   r   rž  rÞ   rå   r:  r¢  s       €r_   r:  z$GetSetDescriptorVariable.var_getattrn  s¡   ø€ ð �9ÒÐ ¤ÐÝ ¤¨YÑ7Ô7ˆFÝ"Ô(¨¨T¬_Ô-DÀfÑMÔMÐMØÐ1Ð1Ð1Ø”[ÐB¥Z°´¸TÑ%BÔ%BˆFÝ"Ô(¨­W°T´_ÀdÑ-KÔ-KÈVÑTÔTÐTå‘7”7×&Ò& r¨4Ñ0Ô0Ð0r^   c                 ó   — dS rJ  r]   rò   s    r_   r  z+GetSetDescriptorVariable.is_python_constantz  rL  r^   c                 ó   — | j         S r�   r-  rò   s    r_   rþ   z+GetSetDescriptorVariable.as_python_constant}  r.  r^   rí   r@   rî   c                 ó*   — ddl m}  || |||¦  «        S rN  rP  rQ  s        r_   rï   z)GetSetDescriptorVariable.richcompare_impl€  rR  r^   r¤  r¥  c           
      ó¤  — | j         j        }t          |dd ¦  «        }|€<	 |                     ¦   «         }n&# t          $ r |                     ||¦  «        cY S w xY w	 | j                              |¦  «        }nA# t          $ r4 t          t          |dt          |¦  «        j        › d|› d�g¬¦  «         Y nw xY w|j
        ot          |j
        |¦  «        }|j
        r`| j         j        t          u rM|dv rIt          j        t          |¦  «        |d ¦  «        }|| j         urd }n|dk    rt          |j
        ¦  «        }t!          j        |||¦  «        S )NrY  r—  r˜  rþ  )rÒ   r,  Ú__mro__r§  )r   rZ   rÞ   rþ   r  r:  rž  rÜ   r    rÑ   r±   r'   r'  rÚ   rÛ   r/   r@   rµ   )	r}   r“   r¤  r¥  r  r™  rš  r›  Ústatic_descs	            r_   r¨  z*GetSetDescriptorVariable.tp_descr_get_impl‡  s•  € ð ”OÔ,ˆ	õ
 ˜C ¨$Ñ/Ô/ˆ	ØÐð6Ø×2Ò2Ñ4Ô4�	�	øÝ&ð 6ð 6ð 6Ø—’ r¨9Ñ5Ô5Ð5Ð5Ð5ð6øøøð		Ø”×.Ò.¨yÑ9Ô9ˆHˆHøÝð 	ð 	ð 	Ý$ÝØàY�˜Y™œÔ0ÐYÐYÈYÐYÐYÐYððñ ô ð ð ð ð	øøøð œ
ÐH¥z°#´*¸iÑ'HÔ'HˆàŒJð	:à”Ô,µÐ4Ð4ØÐGÐGÐGõ
 "Ô0µ°i±´À)ÈTÑRÔRˆKØ $¤/Ð1Ð1Ø $��Ø˜iÒ'Ð'Ý -¨c¬jÑ 9Ô 9�ÝÔ$ R¨°=ÑAÔAÐArœ  )rZ   r[   r\   rÔ   r@   r"  rÎ   ÚGetSetDescriptorTyper   r�   rM  r�  ru  r:  rO  r  rþ   rï   r¨  rP  rQ  s   @r_   rž  rž  Q  s¦  ø€ € € € € ð
ð 
ð 	ðà	Ô	'ð€Nð
% 5Ô#=ð %Èð %ÐQUð %ð %ð %ð %ð %ð %ðR˜#ð Rð Rð Rð Rð¨eÔ.Hð ð ð ð ð
1Ø-ð
1Ø58ð
1à	ð
1ð 
1ð 
1ð 
1ð 
1ð 
1ð Dð ð ð ð ð EÔ$>ð ð ð ð ðEØ-ðEØ6GðEØMPðEà	ðEð Eð Eð Eð+Bà'ð+Bð ð+Bð ð	+Bð
 
ð+Bð +Bð +Bð +Bð +Bð +Bð +Bð +Br^   rž  c                   ó†   ‡ — e Zd ZdZdhej        £Zdededdfˆ fd„Zde	fd„Z
defd„Zdefd	„Zd
ddedz  dedefd„Zˆ xZS )ÚPropertyVariableaA  Python property descriptor.

    The property type is a data descriptor with tp_descr_get =
    property_descr_get which calls fget(obj) to compute the value.
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L2073
    https://github.com/python/cpython/blob/3.13/Objects/descrobject.c#L1660-L1693
    r   r–   r`   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S rƒ   rq  rr  s      €r_   r�   zPropertyVariable.__init__Ã  rs  r^   c                 óD   — t          | j        j        dd¦  «        }d|› d�S )NrZ   rg  zPropertyVariable(r·  )rÞ   r   Úfget)r}   Ú	fget_names     r_   r�  zPropertyVariable.__repr__Ë  s)   € Ý˜DœOÔ0°*¸cÑBÔBˆ	Ø/ 9Ð/Ð/Ð/Ð/r^   c                 ó   — t           S r�   )rR  rò   s    r_   r}  zPropertyVariable.python_typeÏ  s   € Ýˆr^   c                 ó   — | j         S r�   r-  rò   s    r_   rþ   z#PropertyVariable.as_python_constantÒ  r.  r^   r“   rH   r¤  r¥  c                 óº   — |€| S | j         rt          | j         d¦  «        nd }t          j        || j        j        |d¬¦  «        }|                     ||gi ¦  «        S )Nr®  T)r±   r¡  )r±   r'   r@   rµ   r   r®  rA  )r}   r“   r¤  r¥  Úfget_sourceÚfget_vts         r_   r¨  z"PropertyVariable.tp_descr_get_implÕ  sl   € ð ˆ;ØˆKØ9=¼ÐN•j ¤¨fÑ5Ô5Ð5È$ˆÝ!Ô'Ø�”Ô$¨[À$ð
ñ 
ô 
ˆð ×$Ò$ R¨#¨°Ñ3Ô3Ð3r^   )rZ   r[   r\   rÔ   r@   r"  rR  r   r�   rM  r�  rÑ   r}  rþ   r¨  rP  rQ  s   @r_   r«  r«  µ  s
  ø€ € € € € ðð ð 	ðà	Ô	'ð€Nð
%àð%ð ð%ð 
ð	%ð %ð %ð %ð %ð %ð0˜#ð 0ð 0ð 0ð 0ð˜Tð ð ð ð ð Hð ð ð ð ð4à'ð4ð ˜tÑ#ð4ð ð	4ð
 
ð4ð 4ð 4ð 4ð 4ð 4ð 4ð 4r^   r«  c                   óš   ‡ — e Zd ZdZdhej        £Zdddeddfˆ fd„Zdefd„Z	de
fd	„Zdd
„Zdddedefˆ fd„Zdddedz  dedefd„Zˆ xZS )ÚTupleGetterVariablea¨  _tuplegetter descriptor used by namedtuple for field access.

    _tuplegetter is a C data descriptor that stores an index and returns
    self[index] on instance access. When accessed on the class (obj=None),
    it returns the descriptor itself.
    https://github.com/python/cpython/blob/3.13/Modules/_collectionsmodule.c#L2735
    https://github.com/python/cpython/blob/3.13/Modules/_collectionsmodule.c#L2636-L2663
    r   ú_collections._tuplegetterr–   r`   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S rƒ   rq  rr  s      €r_   r�   zTupleGetterVariable.__init__õ  rs  r^   c                 óR   — | j                              ¦   «         \  }\  }}d|› d|›d�S )NzTupleGetterVariable(index=z, doc=r·  )r   Ú
__reduce__)r}   r  r«   Údocs       r_   r�  zTupleGetterVariable.__repr__ý  s6   € Øœ×2Ò2Ñ4Ô4‰ˆ‰:ˆC�Ø?¨CÐ?Ð?°sÐ?Ð?Ð?Ð?r^   c                 ó   — t           j        S r�   )Ú_collectionsÚ_tuplegetterrò   s    r_   r}  zTupleGetterVariable.python_type  s   € ÝÔ(Ð(r^   c                 ó   — | j         S r�   r-  rò   s    r_   rþ   z&TupleGetterVariable.as_python_constant  r.  r^   r“   rH   rœ   c                 ó’   •— |dk    rt          j        || j        j        ¦  «        S t	          ¦   «                              ||¦  «        S )NrÔ   )r@   rµ   r   rÔ   rå   r:  rÌ  s      €r_   r:  zTupleGetterVariable.var_getattr  sB   ø€ ð �9ÒÐÝ"Ô(¨¨T¬_Ô-DÑEÔEÐEÝ‰wŒw×"Ò" 2 tÑ,Ô,Ð,r^   r¤  r¥  c                 ó´   — |€| S | j                              ¦   «         \  }\  }}|                     |dt          j                             |¦  «        gi ¦  «        S )NÚ__getitem__)r   rº  r  r   rB   r·   )r}   r“   r¤  r¥  r  r«   s         r_   r¨  z%TupleGetterVariable.tp_descr_get_impl  s\   € ð ˆ;ØˆKØ”o×0Ò0Ñ2Ô2‰ˆ‰8ˆC�Ø�ŠØ�¥	Ô :× AÒ AÀ#Ñ FÔ FÐGÈñ
ô 
ð 	
r^   )r`   r·  )rZ   r[   r\   rÔ   r@   r"  r   r�   rM  r�  rÑ   r}  rþ   r:  r¨  rP  rQ  s   @r_   r¶  r¶  æ  s>  ø€ € € € € ðð ð 	ðà	Ô	'ð€Nð
%à/ð%ð ð%ð 
ð	%ð %ð %ð %ð %ð %ð@˜#ð @ð @ð @ð @ð)˜Tð )ð )ð )ð )ðð ð ð ð-Ø-ð-Ø58ð-à	ð-ð -ð -ð -ð -ð -ð
à'ð
ð ˜tÑ#ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r^   r¶  r�   )ÎrÔ   r½  rG  rè  r'  Úimportlib.metadatar\  Úimportlib.utilrÚ   rÏ   r˜  r“  Úrer  r–  rÎ   r  Úcollections.abcr   r   r   r   r   r   r	   r
   r   r   Útyping_extensionsr   Úweakrefr   rb   Útorch._dynamo.excr   Útorch._guardsr   r	  r   r]  r   r   r   r   Úbytecode_transformationr   r   r   rq  r   r   r   r   r   r   r    r!   r"   r#   r$   Úguardsr%   r&   r±   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   rc   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r  r=   r>   r?   r@   rÀ  rB   Úuser_definedrC   Ú#torch.distributed.fsdp._fully_shardrD   ÚModuleNotFoundErrorÚtorch._dynamo.codegenrE   rN  rF   rG   rH   Ú#torch._dynamo.variables.ctx_managerrI   r   rJ   rK   r›  rL   rt  rM   rN   rÒ  rO   rP   ry   r{   r#  rè  rþ  rc  rW   rÒ   r  rY   Ú	lru_cacherf   rh   r’   rˆ   rM  r¯   r™   r½   rN  rÆ   r¦   r%  rÓ   rÝ   rà   râ   rS  r'  r  r;  r�  r‘  r¢  rŒ  rÐ  rç  r§   rÑ  rø  r1  ÚsearchÚmatchÚ	fullmatchÚcompileÚsubÚsubnr‘  ÚfindallÚescapera  r7  ry  r  r®  r¹  r¾  rÀ  rö  r  r+  rT  re  rf  rg  rh  rj  r¬  rŒ  rœ  r�  rÕ  râ  ræ  rî  r÷  r  r  r  r8  rU  ra  ro  r|  r‡  r�  rž  r«  r¶  r]   r^   r_   ú<module>rÛ     sº  ððð ð ð. Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ #Ð #Ð #Ð #Ð #Ð #Ø %Ð %Ð %Ð %Ð %Ð %à €€€Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø  Ð  Ð  Ð  Ð  Ð  Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3à >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ Vðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 1Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 'Ð &Ð &Ð &Ð &Ð &Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðØEÐEÐEÐEÐEÐEÐEøØð ð ð ØÐÐÐðøøøð ð 'Ø/Ð/Ð/Ð/Ð/Ð/ðð ð ð ð ð ð ð ð ð ð
 LÐKÐKÐKÐKÐKðð ð ð ð ð ð ð ð
 *Ð)Ð)Ð)Ð)Ð)Ø5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø&Ð&Ð&Ð&Ð&Ð&ð €WˆT˜ # s (Ô+Ð,Ñ,Ô,€Ø€
Ø€Ø&˜YÐ'OÐ'OÐ'OÑPÔPÐ Ø"+ )¨Y¨KÑ"8Ô"8Ð ð DÐ ð ,=Ð+<Ñ+>Ô+>€Ð˜s C˜xÔ(Ð >Ð >Ñ >ð	ð 	ð 	ð 	ð 	Ð0ñ 	ô 	ð 	ð Ôð¨:ð ð ð ñ Ôðð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð>�Lð  \ð ð ð ð ð\Ø
ð\à#ð\ð ˜‰}ð\ð �3Œ-ð	\ð
 ��c�ŒNð\ð 
ˆ#ˆÐ
Ôð\ð \ð \ð \ð@ HLðHð HØ#ðHØ*-ðHØ7=À±}ðHàðHð Hð Hð Hð.Ð4ð .¸dÀ3ÈÀ8¼nð .ÐQUð .ð .ð .ð .ð Ø'ð à��oÐ%Ô&ð ð Œ.ð ð 
ð	 ð  ð  ð  ð*Ø
Œ.ðà�C˜�HŒ~ðð ðð �F˜C�KÔ  4Ñ'ð	ð
 �8Œ_˜tÑ#ðð �S˜#�X” Ñ%ðð �c˜3�h” $Ñ&ðð Ôðð ð ð ð:ð ð Ð ð-Ø#ð-Ø)/ð-Ø9?À$¹ð-ØNQð-àð-ð -ð -ð -ð:Wð Wð Wð Wð W˜ñ Wô Wð WðttYð tYð tYð tYð tYÐ3ñ tYô tYð tYðn!7ð !7ð !7ð !7ð !7Ð3ñ !7ô !7ð !7ðH)ð )ð )ð )ð )Ð":ñ )ô )ð )ðXC;ð C;ð C;ð C;ð C; ?ñ C;ô C;ð C;ðL

ð 
ð 
ð 
ð 
Ø ñ
ô 
ð 
ðU6ð U6ð U6ð U6ð U6Ð%=ñ U6ô U6ð U6ðp#ð #ð #ð #ð #Ø"ñ#ô #ð #ðLIð Ið Ið Ið IÐ-ñ Iô Ið IðX >ð  >ð  >ð  >ð  >Ð 2ñ  >ô  >ð  >ðF>ð >ð >ð >ð >Ð"6ñ >ô >ð >ðD$Ø#ð$à��c�Ôð$ð ð$ð ˆÔ
ð	$ð
 ��oÐ%Ô&ð$ð ð$ð $ð $ð $ðNe)ð e)ð e)ð e)ð e)Ð!9ñ e)ô e)ð e)ðP	.>ð .>ð .>ð .>ð .>Ð(Bñ .>ô .>ð .>ðd „IØ„HØ„LØ„JØ„FØ„GØ„HØ„JØ„Ið
Ð ðS
ð S
ð S
ð S
ð S
˜?ñ S
ô S
ð S
ðl >ð  >ð  >ð  >ð  >Ð"6ñ  >ô  >ð  >ðFs=ð s=ð s=ð s=ð s=Ð":ñ s=ô s=ð s=ðlð ð ð ð Ð ;ñ ô ð ð0 d¨3°¨8¤nð ð ð ð ð
/Ø#ð
/Ø)1°#°s°(Ô);ð
/àð
/ð 
/ð 
/ð 
/ðnDð nDð nDð nDð nDÐ(<ñ nDô nDð nDðb"
ð "
ð "
ð "
ð "
Ð$8ñ "
ô "
ð "
ðJy
ð y
ð y
ð y
ð y
˜ñ y
ô y
ð y
ðxKð Kð Kð Kð K ñ Kô Kð Kð\$"ð $"ð $"ð $"ð $"˜/ñ $"ô $"ð $"ðNð ð ð ð ð ð ð ð ð ð ð ðz
ð z
ð z
ð z
ð z
˜>ñ z
ô z
ð z
ðz $8Ð#7Ñ#9Ô#9Ð  ð6ð 6ð 6ð 6ð 6˜?ñ 6ô 6ð 6ðr')ð ')ð ')ð ')ð ')¨ñ ')ô ')ð ')ðTð ð ð ð  /ñ ô ð ðDI
ð I
ð I
ð I
ð I
¨oñ I
ô I
ð I
ðX
ð 
ð 
ð 
ð 
¨ñ 
ô 
ð 
ð&#Jð #Jð #Jð #Jð #JÐ(<ñ #Jô #Jð #JðL38ð 38ð 38ð 38ð 38Ð';ñ 38ô 38ð 38ðl
ð 
ð 
ð 
ð 
Ð';ñ 
ô 
ð 
ð:/SØ#ð/Sà˜˜D˜Ô!ð/Sð ð/Sð 
ð	/Sð /Sð /Sð /Sðd!-ð !-ð !-ð !-ð !- ñ !-ô !-ð !-ðZXOð XOð XOð XOð XO ñ XOô XOð XOðv]ð ]ð ]ð ]ð ]˜Oñ ]ô ]ð ]ð@_Tð _Tð _Tð _Tð _T˜ñ _Tô _Tð _TðD7Sð 7Sð 7Sð 7Sð 7S ñ 7Sô 7Sð 7Sðt=Vð =Vð =Vð =Vð =V Oñ =Vô =Vð =Vð@*Pð *Pð *Pð *Pð *P˜?ñ *Pô *Pð *PðZ4
ð 4
ð 4
ð 4
ð 4
˜/ñ 4
ô 4
ð 4
ðnKBð KBð KBð KBð KB˜ñ KBô KBð KBð\aBð aBð aBð aBð aB˜ñ aBô aBð aBðH.4ð .4ð .4ð .4ð .4�ñ .4ô .4ð .4ðb4
ð 4
ð 4
ð 4
ð 4
˜/ñ 4
ô 4
ð 4
ð 4
ð 4
s   ÄD ÄDÄD