§
    ŠŠtjÚ”  ã                  ór  — d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	m
Z
mZ ddlmZ ddlZddlm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 ddlmZmZ erddl m!Z! ddl"m#Z#  G d„ de¦  «        Z$ e$d¦  «        Z% e$d¦  «        Z& e$d¦  «        Z' G d„ dej(        ¦  «        Z) G d„ de¦  «        Z*dS )zû
Constant variable tracking in Dynamo.

This module is fundamental to Dynamo's ability to track and propagate constant
values during compilation, ensuring proper handling of Python literals and
maintaining type safety through the compilation process.
é    )ÚannotationsN)ÚIterable)ÚAnyÚLiteralÚoverloadÚTYPE_CHECKING)Úoverride)ÚGetItemSourceé   )Úgraph_break_hintsÚ	variables)Úraise_observed_exceptionÚunimplemented)Úcommon_constant_typesÚistypeÚnpÚraise_args_mismatchÚunpack_iterableé   )ÚValueMutationNewÚVariableTracker)ÚInstructionTranslatorBase)ÚUserFunctionVariablec            
      ó  ‡ — e Zd ZdZeeeee e	d¦  «        e
 e	d¦  «        fZeedcd„¦   «         ¦   «         Zeeddd	„¦   «         ¦   «         Zeeded„¦   «         ¦   «         Zeded„¦   «         Zdfˆ fd„Zdgd„Zdhd„Zdgd„Zdid„Zdjd„Zdkd„Zdld„Zdkd„Zedmd„¦   «         Zdnd „Zdod"„Zdpˆ fd%„Zedqd(„¦   «         Zedrdsd+„¦   «         Zdtd-„Zdud/„Z dvd2„Z!djd3„Z"djd4„Z#djd5„Z$djd6„Z%dwd8„Z&dxˆ fd:„Z'djˆ fd;„Z(dyˆ fd>„Z)dzˆ fdD„Z*dhdE„Z+e,d{dF„¦   «         Z-d|dG„Z.d}ˆ fdI„Z/d~dJ„Z0dˆ fdK„Z1ddL„Z2ddM„Z3d€dP„Z4	 d�d‚dR„Z5	 d�d‚dS„Z6	 d�d‚dT„Z7	 d�d‚dU„Z8	 d�d‚dV„Z9	 d�d‚dW„Z:	 d�d‚dX„Z;	 d�d‚dY„Z<	 d�dƒdZ„Z=d„d\„Z>	 d�d‚d]„Z?	 d�d‚d^„Z@dd_„ZAdd`„ZB	 d�d‚da„ZCddb„ZDˆ xZES )…ÚConstantVariablea  
    Variable tracker for Python literals and basic immutable types, with automatic
    routing support for collection types (lists, tuples, sets, etc.).

    The create() method intelligently constructs appropriate variable types for
    nested collections.
    N.ÚvalueÚNoneÚreturnc                ó   — d S ©N© ©r   s    ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/variables/constant.pyÚcreatezConstantVariable.create8   ó   € à14°ó    Úboolc                ó   — d S r    r!   r"   s    r#   r$   zConstantVariable.create<   r%   r&   r   Úkwargsr   c                ó   — d S r    r!   )r   r)   s     r#   r$   zConstantVariable.create@   s   € à>A¸cr&   c                ó6  — |s!| x€ t           S xdu r t          S du rt          S |                     d¦  «        }t	          | t
          ¦  «        rd„ | D ¦   «         }t          j        |fi |¤ŽS t	          | t          ¦  «        rd„ | D ¦   «         }t          j	        |fi |¤ŽS t	          | t          ¦  «        r2| j        | j        | j        f}d„ |D ¦   «         }t          j        |fi |¤ŽS t	          | t          t           f¦  «        rŒg }t#          | ¦  «        D ]H\  }}|rt%          ||¦  «        nd}|                     t(                               ||¬¦  «        ¦  «         ŒIt          j                             t1          | ¦  «        ¦  «        |fi |¤ŽS t)          | fi |¤ŽS )	aV  
        Create a `ConstantVariable` based on the given value, and supports
        automatic routing for collection types like `tuple` (in which case we'd
        create `ConstantVariable` for the leaf items).

        NOTE: the caller must install the proper guards if needed; most often
        the guard will be `CONSTANT_MATCH`.
        NTFÚsourcec                óB   — g | ]}t                                |¦  «        ‘ŒS r!   ©r   r$   ©Ú.0Úxs     r#   ú
<listcomp>z+ConstantVariable.create.<locals>.<listcomp>]   ó'   € Ð?Ð?Ð?°AÕ%×,Ò,¨QÑ/Ô/Ð?Ð?Ð?r&   c                óB   — g | ]}t                                |¦  «        ‘ŒS r!   r.   r/   s     r#   r2   z+ConstantVariable.create.<locals>.<listcomp>`   r3   r&   c                óB   — g | ]}t                                |¦  «        ‘ŒS r!   r.   )r0   Úargs     r#   r2   z+ConstantVariable.create.<locals>.<listcomp>d   s4   € ð 6ð 6ð 6Ø14Õ ×'Ò'¨Ñ,Ô,ð6ð 6ð 6r&   )r,   )ÚCONSTANT_VARIABLE_NONEÚCONSTANT_VARIABLE_TRUEÚCONSTANT_VARIABLE_FALSEÚgetÚ
isinstanceÚsetr   ÚSetVariableÚ	frozensetÚFrozensetVariableÚsliceÚstartÚstopÚstepÚSliceVariableÚlistÚtupleÚ	enumerater
   Úappendr   r$   ÚBaseListVariableÚcls_forÚtype)	r   r)   r,   ÚitemsÚ
slice_argsÚslice_args_varsÚir1   Úitem_sources	            r#   r$   zConstantVariable.createD   s÷  € ð ð 	3ØØ�T�TÝ1Ð1Ø�T�T�T�TÝ1Ð1Ø�U�UÝ2Ð2à—’˜HÑ%Ô%ˆõ �e�SÑ!Ô!ð 	TØ?Ð?¸Ð?Ñ?Ô?ˆEÝÔ(¨Ð9Ð9°&Ð9Ð9Ð9Ý˜�yÑ)Ô)ð 	TØ?Ð?¸Ð?Ñ?Ô?ˆEÝÔ.¨uÐ?Ð?¸Ð?Ð?Ð?Ý˜�uÑ%Ô%ð 	TØœ+ u¤z°5´:Ð>ˆJð6ð 6Ø8Bð6ñ 6ô 6ˆOõ Ô*¨?ÐEÐE¸fÐEÐEÐEÝ˜¥¥e˜}Ñ-Ô-ð 
	TØˆEÝ! %Ñ(Ô(ð ð ‘��1Ø:@ÐJ�m¨F°AÑ6Ô6Ð6Àd�Ø—’Ý$×+Ò+ØØ*ð ,ñ ô ñô ð ð õ Ô-×5Ò5µd¸5±k´kÑBÔBÀ5ÐSÐSÈFÐSÐSÐSå Ð0Ð0¨Ð0Ð0Ð0r&   c                ó4  •—  t          ¦   «         j        di |¤Ž t                               |¦  «        s t	          dt          |¦  «        › d�¦  «        ‚t          �5t          |t          j        ¦  «        r| 	                    ¦   «         | _
        d S || _
        d S )Nz6Cannot construct `ConstantVariable` for value of type a_  .

This failure likely due to PyTorch-internal use of `ConstantVariable` on
non-literal python values, please try using `VariableTracker.build` instead. If
you believe it's a necessary and legitimate use case (the value is immutable and
can't easily be represented with another `VariableTracker` class), please add
its type to `common_constant_types`.r!   )ÚsuperÚ__init__r   Úis_base_literalÚAssertionErrorrK   r   r;   ÚnumberÚitemr   )Úselfr   r)   Ú	__class__s      €r#   rS   zConstantVariable.__init__v   s™   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý×/Ò/°Ñ6Ô6ð 		Ý ð7ÍÈeÉÌð 7ð 7ð 7ñô ð õ ˆ>�j¨µ´	Ñ:Ô:ˆ>ØŸš™œˆDŒJˆJˆJàˆDŒJˆJˆJr&   c                ó   — | j         S r    r"   ©rX   s    r#   Úas_proxyzConstantVariable.as_proxy‡   ó
   € ØŒzÐr&   Ústrc                óf   — dt          | j        ¦  «        j        › dt          | j        ¦  «        › d�S )NzConstantVariable(z: ú))rK   r   Ú__name__Úreprr[   s    r#   Ú__repr__zConstantVariable.__repr__Š   s2   € ØS¥4¨¬
Ñ#3Ô#3Ô#<ÐSÐSÅÀTÄZÑ@PÔ@PÐSÐSÐSÐSr&   c                ó   — | j         S r    r"   r[   s    r#   Úas_python_constantz#ConstantVariable.as_python_constant�   r]   r&   úLiteral[True]c                ó   — dS ©NTr!   r[   s    r#   Úis_python_constantz#ConstantVariable.is_python_constant�   s   € Øˆtr&   Útxr   c                óZ   — t                                t          | j        ¦  «        ¦  «        S r    )r   r$   rb   r   ©rX   rj   s     r#   Ú	repr_implzConstantVariable.repr_impl“   s    € Ý×&Ò&¥t¨D¬JÑ'7Ô'7Ñ8Ô8Ð8r&   c                óD   — t          | j        t          t          f¦  «        S r    )r;   r   Úintr'   r[   s    r#   Úis_symnode_likez ConstantVariable.is_symnode_like–   s   € Ý˜$œ*¥s­D kÑ2Ô2Ð2r&   Úvaluesc                ó   — | j         |v S r    r"   )rX   rq   s     r#   Úis_constant_matchz"ConstantVariable.is_constant_match™   s   € ØŒz˜VÐ#Ð#r&   c                ó   — | j         d u S r    r"   r[   s    r#   Úis_constant_nonez!ConstantVariable.is_constant_noneœ   s   € ØŒz˜TÐ!Ð!r&   úlist[VariableTracker]c                óZ   — 	 d„ | j         D ¦   «         S # t          $ r}t          |‚d}~ww xY w)zz
        Need this when adding a BaseListVariable and a ConstantVariable together.
        Happens in detectron2.
        c                óB   — g | ]}t                                |¦  «        ‘ŒS r!   r.   r/   s     r#   r2   z*ConstantVariable.items.<locals>.<listcomp>¦   s'   € ÐCÐCÐC°1Õ$×+Ò+¨AÑ.Ô.ÐCÐCÐCr&   N)r   Ú	TypeErrorÚNotImplementedError)rX   Úes     r#   rL   zConstantVariable.itemsŸ   sD   € ð	-ØCÐC¸¼
ÐCÑCÔCÐCøÝð 	-ð 	-ð 	-Ý%¨1Ð,øøøøð	-øøøs   ‚ “
*�%¥*r6   c                ó  — t          | j        t          t          f¦  «        r1ddlm} t          | j        t          ¦  «        rdnd} ||||¦  «        }t                               | j        |                     ¦   «                  ¦  «        S )Nr   )Úvalidate_sequence_indexÚstringÚbytes)	r;   r   r^   r   Úobject_protocolr}   r   r$   re   )rX   rj   r6   r}   Úcontainer_names        r#   Úgetitem_constzConstantVariable.getitem_constª   s‹   € õ �d”j¥3­ ,Ñ/Ô/ð 	CØ@Ð@Ð@Ð@Ð@Ð@å)3°D´JÅÑ)DÔ)DÐQ˜X˜XÈ'ˆNØ)Ð)¨"¨c°>ÑBÔBˆCÝ×&Ò&ØŒJ�s×-Ò-Ñ/Ô/Ô0ñ
ô 
ð 	
r&   Úkeyc                óø   — |                      ¦   «         }	 t                               | j        |         ¦  «        S # t          $ r4}t          t          |t          |j        ¦  «        ¬¦  «         Y d }~d S d }~ww xY w©N©Úargs)re   r   r$   r   Ú
IndexErrorr   rE   r‡   )rX   rj   rƒ   Úindexr{   s        r#   Úsq_item_implzConstantVariable.sq_item_impl¶   sˆ   € ð ×&Ò&Ñ(Ô(ˆð	HÝ#×*Ò*¨4¬:°eÔ+<Ñ=Ô=Ð=øÝð 	Hð 	Hð 	HÝ$¥Z°½$¸q¼v¹,¼,ÐGÑGÔGÐGÐGÐGÐGÐGÐGÐGøøøøð	Høøøs   –$; »
A9Á)A4Á4A9r‰   ú'tuple[VariableTracker, VariableTracker]c                óØ  •— t          | j        t          t          t          t
          f¦  «        s"t          ¦   «                              ||¦  «        S |                     ¦   «         }|dk     rt          d|› �¦  «        ‚|t          | j        ¦  «        k    rt          t          |¦  «         t                               | j        |         ¦  «        t                               |dz   ¦  «        fS )Nr   zInvalid index r   )r;   r   r^   r   rE   rF   rR   Útp_iteritem_implre   rU   Úlenr   rˆ   r   r$   )rX   rj   r‰   rO   rY   s       €r#   r�   z!ConstantVariable.tp_iteritem_implÃ   sÃ   ø€ õ
 ˜$œ*¥s­Eµ4½Ð&?Ñ@Ô@ð 	7Ý‘7”7×+Ò+¨B°Ñ6Ô6Ð6Ø×$Ò$Ñ&Ô&ˆØˆqŠ5ˆ5Ý Ð!5°!Ð!5Ð!5Ñ6Ô6Ð6Ø•�D”J‘”ÒÐÝ$¥Z°Ñ4Ô4Ð4Ý×&Ò& t¤z°!¤}Ñ5Ô5Õ7G×7NÒ7NÈqÐSTÉuÑ7UÔ7UÐUÐUr&   ÚobjÚobjectc                ó.   — t          | ¦  «        t          v S r    )rK   r   )r�   s    r#   rT   z ConstantVariable.is_base_literalÑ   s   € å�C‰yŒyÕ1Ð1Ð1r&   Úcacheúdict[int, object] | Nonec                ó(  ‡— ‰€i Št          | ¦  «        ‰v rdS t          | ¦  «        t          t          t          t
          t          j        fv r-| ‰t          | ¦  «        <   t          ˆfd„| D ¦   «         ¦  «        S t           
                    | ¦  «        S )NTc              3  óN   •K  — | ]}t                                |‰¦  «        V — Œ d S r    )r   Ú
is_literal)r0   r1   r’   s     €r#   ú	<genexpr>z.ConstantVariable.is_literal.<locals>.<genexpr>Þ   s4   øè è € ÐJÐJÀÕ'×2Ò2°1°eÑ<Ô<ÐJÐJÐJÐJÐJÐJr&   )ÚidrK   rE   rF   r<   r>   ÚtorchÚSizeÚallr   rT   )r�   r’   s    `r#   r–   zConstantVariable.is_literalÕ   s‡   ø€ àˆ=ØˆEÝˆc‰7Œ7�eÐÐà�4Ý�‰9Œ9��u¥c­9µe´jÐAÐAÐAØ ˆE•"�S‘'”'‰NÝÐJÐJÐJÐJÀcÐJÑJÔJÑJÔJÐJÝ×/Ò/°Ñ4Ô4Ð4r&   ú InstructionTranslatorBase | Nonec                ót   — 	 d„ |                       ¦   «         D ¦   «         S # t          $ r}t          |‚d }~ww xY w)Nc                óB   — g | ]}t                                |¦  «        ‘ŒS r!   r.   r/   s     r#   r2   z8ConstantVariable.unpack_var_sequence.<locals>.<listcomp>å   s'   € ÐRÐRÐR°1Õ$×+Ò+¨AÑ.Ô.ÐRÐRÐRr&   )re   ry   rz   ©rX   rj   r{   s      r#   Úunpack_var_sequencez$ConstantVariable.unpack_var_sequenceá   sN   € ð	-ØRÐR¸×8OÒ8OÑ8QÔ8QÐRÑRÔRÐRøÝð 	-ð 	-ð 	-Ý%¨1Ð,øøøøð	-øøøs   ‚   
7ª2²7útuple[int, bool]c                ó.   — t          | j        ¦  «        dfS )zADynamo tracing rule for long_hash, float_hash, unicode_hash, etc.F©Úhashr   rl   s     r#   Ú	hash_implzConstantVariable.hash_implé   s   € å�D”JÑÔ Ð&Ð&r&   ÚotherÚopc                ó*   — ddl m}  || |||¦  «        S )Nr   )Ú python_constant_richcompare_impl)r€   r©   )rX   rj   r¦   r§   r©   s        r#   Úrichcompare_implz!ConstantVariable.richcompare_implí   s.   € ð 	FÐEÐEÐEÐEÐEà/Ð/°°b¸%ÀÑDÔDÐDr&   c                óZ   — t                                t          | j        ¦  «        ¦  «        S r    )r   r$   r^   r   rl   s     r#   Ústr_implzConstantVariable.str_implô   s   € Ý×&Ò&¥s¨4¬:¡¤Ñ7Ô7Ð7r&   c                óî   — 	 t                                t          | j        ¦  «        ¦  «        S # t          $ r<}t          t          |¦  «        |t          |j        ¦  «        ¬¦  «         Y d}~dS d}~ww xY w)z9Generic len for any constant value (sequence or mapping).r†   N)	r   r$   rŽ   r   ry   r   rK   rE   r‡   rŸ   s      r#   Úlen_implzConstantVariable.len_impl÷   s|   € ð	EÝ#×*Ò*­3¨t¬z©?¬?Ñ;Ô;Ð;øÝð 	Eð 	Eð 	EÝ$¥T¨!¡W¤W¨bµt¸A¼F±|´|ÐDÑDÔDÐDÐDÐDÐDÐDÐDÐDøøøøð	Eøøøs   ‚+. ®
A4¸1A/Á/A4c                ó,   — |                       |¦  «        S )z6Sequence length - delegates to len_impl for constants.©r®   rl   s     r#   Ú	sq_lengthzConstantVariable.sq_lengthþ   ó   € à�}Š}˜RÑ Ô Ð r&   c                ó,   — |                       |¦  «        S )z5Mapping length - delegates to len_impl for constants.r°   rl   s     r#   Ú	mp_lengthzConstantVariable.mp_length  r²   r&   Únamec                ó¶   — t          | j        |¦  «        st          t          ||g¬¦  «         t	          | j        |¦  «        }t          |¦  «        rt          ‚|S r…   )Úhasattrr   r   ÚAttributeErrorÚgetattrÚcallablerz   )rX   rj   rµ   Úmembers       r#   Úconst_getattrzConstantVariable.const_getattr  s\   € õ �t”z 4Ñ(Ô(ð 	FÝ$¥^°R¸t¸fÐEÑEÔEÐEÝ˜œ TÑ*Ô*ˆÝ�FÑÔð 	&Ý%Ð%Øˆr&   rW   c                óp  •— |                      ¦   «         r€|                     ¦   «         }	 || j        v }t                               |¦  «        S # t
          $ r;}t          t          |¦  «        |t          |j	        ¦  «        ¬¦  «         Y d}~nd}~ww xY wt          ¦   «                              ||¦  «        S )z Sequence contains for constants.r†   N)ri   re   r   r   r$   ry   r   rK   rE   r‡   rR   Úsq_contains)rX   rj   rW   ÚsearchÚresultr{   rY   s         €r#   r¾   zConstantVariable.sq_contains  sÏ   ø€ à×"Ò"Ñ$Ô$ð 
	Ø×,Ò,Ñ.Ô.ˆFðØ 4¤:Ð-�Ý'×.Ò.¨vÑ6Ô6Ð6øÝð ð ð Ý(Ý˜‘G”GØÝ˜aœf™œðñ ô ð ð ð ð ð ð øøøøðøøøõ ‰wŒw×"Ò" 2 tÑ,Ô,Ð,s   «"A Á
BÁ1BÂBc                óø   •— ddl m} t          | j        t          ¦  «        r9	  |d„ | j        D ¦   «         t          ¦   «         ¬¦  «        S # t          $ r Y nw xY wt          ¦   «                              |¦  «        S )Nr   )ÚListIteratorVariablec                óB   — g | ]}t                                |¦  «        ‘ŒS r!   r.   )r0   Úcs     r#   r2   z1ConstantVariable.tp_iter_impl.<locals>.<listcomp>%  s'   € ÐDÐDÐD°AÕ%×,Ò,¨QÑ/Ô/ÐDÐDÐDr&   )Úmutation_type)	ÚlistsrÂ   r;   r   r   r   rz   rR   Útp_iter_impl)rX   rj   rÂ   rY   s      €r#   rÇ   zConstantVariable.tp_iter_impl  sž   ø€ Ø/Ð/Ð/Ð/Ð/Ð/å�d”j¥(Ñ+Ô+ð 	ðØ+Ð+ØDÐD¸¼ÐDÑDÔDÝ"2Ñ"4Ô"4ðñ ô ð øõ 'ð ð ð Ø�ðøøøå‰wŒw×#Ò# BÑ'Ô'Ð's   £'A Á
AÁAr‡   údict[str, VariableTracker]c           
     ó(  •‡— ddl mŠ |dk    rPt          | j        t          ¦  «        r6t          j        t          j        ¦  «                             || g|¢|¦  «        S |dk    rêt          | j        t          ¦  «        rÐ|st          |¦  «        dk    r2t          ||dt          |¦  «        › dt          |¦  «        › d�¦  «         t          ||d         ¦  «        }	 d	„ |D ¦   «         }t                               | j                             |¦  «        ¦  «        S # t          $ r' t!          ¦   «                              ||||¦  «        cY S w xY wt%          ˆfd
„|D ¦   «         ¦  «        rNt
          j                             ||                      ¦   «         | j        ¦  «                             ||||¦  «        S 	 d„ |D ¦   «         }d„ |                     ¦   «         D ¦   «         }n4# t          $ r' t!          ¦   «                              ||||¦  «        cY S w xY w|dk    r|                      |¦  «        S t-          | j        t          ¦  «        ry|t          j        v rkt1          | j        |¦  «        }		 t                                |	|i |¤Ž¦  «        S # t2          $ r(}
t5          t7          |
¦  «        |¦  «         Y d }
~
�nñd }
~
ww xY wt-          | j        t8          t:          f¦  «        �rßt=          | j        |¦  «        �rÉ|s‡|s…	 t                                t1          | j        |¦  «        ¦   «         ¦  «        S # t>          t@          f$ r;}t5          t7          |¦  «        |tC          |j"        ¦  «        ¬¦  «         Y d }~nd }~ww xY wt=          tF          |¦  «        �r)t          |¦  «        dk    �r|d          $                    ¦   «         rû|d         }t1          tF          |¦  «        }t-          |tJ          j&        tJ          j'        tJ          j(        f¦  «        r;|j)         *                    d|| j        |fi ¦  «        }‰                     |||¦  «        S 	 t                                || j        |¦  «        ¦  «        S # t2          $ r;}
t5          t7          |
¦  «        |tC          |
j"        ¦  «        ¬¦  «         Y d }
~
nñd }
~
ww xY wnèt-          | j        tV          ¦  «        r;|dk    r5t1          | j        |¦  «        }	t                                |	|i |¤Ž¦  «        S t7          | j        ¦  «        tX          u rx|tX          j        v rjt1          | j        |¦  «        }		 t                                |	|i |¤Ž¦  «        S # t2          $ r'}
t5          t7          |
¦  «        |¦  «         Y d }
~
nd }
~
ww xY w|dk    r»t          |¦  «        dk    r¨|d          $                    ¦   «         rŽ	 t                               t[          | j        |d          .                    ¦   «         ¦  «        ¦  «        S # t2          $ r;}
t5          t7          |
¦  «        |tC          |
j"        ¦  «        ¬¦  «         Y d }
~
nd }
~
ww xY wt!          ¦   «                              ||||¦  «        S )Nr   ©ÚSymNodeVariableÚformatÚjoinz1 args and 0 kwargsz
 args and z kwargsr   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r!   ©re   r/   s     r#   r2   z0ConstantVariable.call_method.<locals>.<listcomp>E  s$   € ÐJÐJÐJ¸˜Q×1Ò1Ñ3Ô3ÐJÐJÐJr&   c              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S r    )r;   )r0   r1   rË   s     €r#   r—   z/ConstantVariable.call_method.<locals>.<genexpr>J  s-   øè è € Ð<Ð<°!�z˜!˜_Ñ-Ô-Ð<Ð<Ð<Ð<Ð<Ð<r&   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r!   rÏ   )r0   Úas     r#   r2   z0ConstantVariable.call_method.<locals>.<listcomp>Q  s$   € Ð?Ð?Ð?°Q˜!×.Ò.Ñ0Ô0Ð?Ð?Ð?r&   c                ó>   — i | ]\  }}||                      ¦   «         “ŒS r!   rÏ   )r0   ÚkÚvs      r#   ú
<dictcomp>z0ConstantVariable.call_method.<locals>.<dictcomp>R  s*   € ÐQÐQÐQ¹$¸!¸Q˜A˜q×3Ò3Ñ5Ô5ÐQÐQÐQr&   Ú__iter__r†   Úcall_functionÚdecodeÚ	__round__)/ÚtensorrË   r   r   r^   r   ÚBuiltinVariablerÌ   rØ   rŽ   r   r   r   r$   rÍ   rz   rR   Úcall_methodÚanyr\   rL   rÇ   r;   Ú__dict__r¹   Ú	Exceptionr   rK   Úfloatro   r·   ÚOverflowErrorÚ
ValueErrorrE   r‡   Úoperatorri   r™   ÚSymBoolÚSymFloatÚSymIntÚoutputÚcreate_proxyr   ÚcomplexÚroundre   )rX   rj   rµ   r‡   r)   Úarg_unpackedÚ	arg_constÚ
const_argsÚconst_kwargsÚmethodr{   ÚexcÚ
add_targetr§   ÚproxyrË   rY   s                  @€r#   rÝ   zConstantVariable.call_method,  sà  øø€ ð 	,Ð+Ð+Ð+Ð+Ð+à�8ÒÐ¥ t¤zµ3Ñ 7Ô 7ÐÝÔ,­S¬ZÑ8Ô8×FÒFØØ�˜�Øñô ð ð
 �VŠ^ˆ^¥ t¤zµ3Ñ 7Ô 7ˆ^Øð �˜T™œ aš˜Ý#ØØØ)Ý˜4‘y”yÐ@Ð@­C°©K¬KÐ@Ð@Ð@ñ	ô ð õ +¨2¨t°A¬wÑ7Ô7ˆLðCØJÐJ¸\ÐJÑJÔJ�	Ý'×.Ò.¨t¬z¯ª¸yÑ/IÔ/IÑJÔJÐJøÝ&ð Cð Cð CÝ‘w”w×*Ò*¨2¨t°T¸6ÑBÔBÐBÐBÐBðCøøøõ Ð<Ð<Ð<Ð<°tÐ<Ñ<Ô<Ñ<Ô<ð 	2åÔ,×3Ò3Ø�D—M’M‘O”O T¤Zñô çŠk˜"˜d D¨&Ñ1Ô1ð2ð	?Ø?Ð?¸$Ð?Ñ?Ô?ˆJØQÐQÀ&Ç,Â,Á.Ä.ÐQÑQÔQˆLˆLøÝ"ð 	?ð 	?ð 	?Ý‘7”7×&Ò& r¨4°°vÑ>Ô>Ð>Ð>Ð>ð	?øøøð �:ÒÐØ×$Ò$ RÑ(Ô(Ð(å�d”j¥#Ñ&Ô&ð ,	6¨4µ3´<Ð+?Ð+?Ý˜TœZ¨Ñ.Ô.ˆFð6Ý'×.Ò.¨v¨v°zÐ/RÀ\Ð/RÐ/RÑSÔSÐSøÝð 6ð 6ð 6Ý(­¨a©¬°"Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ñ5øøøøð6øøøå˜œ
¥U­C LÑ1Ô1ñ &	6µg¸d¼jÈ$Ñ6OÔ6Oñ &	6Øð ˜Fð ðÝ+×2Ò2Ð3Lµ7¸4¼:ÀtÑ3LÔ3LÑ3NÔ3NÑOÔOÐOøÝ%¥zÐ2ð ð ð Ý,Ý˜S™	œ	ØÝ! #¤(™^œ^ðñ ô ð ð ð ð ð ð øøøøðøøøõ � $Ñ'Ô'ñQå˜‘I”I ’N‘NØ˜”G×.Ò.Ñ0Ô0ð #ð (¨œ]�
Ý�X tÑ,Ô,�ÝØ¥¤µ´ÅÄÐ Mñô ð Qð œI×2Ò2Ø'¨¨d¬j¸*Ð-EÀrñô �Eð +×1Ò1°"°e¸ZÑHÔHÐHðQÝ/×6Ò6°r°r¸$¼*ÀjÑ7QÔ7QÑRÔRÐRøÝ$ð Qð Qð QÝ0µ°a±´¸"Å4ÈÌÁ<Ä<ÐPÑPÔPÐPÐPÐPÐPÐPÐPøøøøðQøøøøå˜œ
¥EÑ*Ô*ð 	6¨t°xÒ/?Ð/?Ý˜TœZ¨Ñ.Ô.ˆFÝ#×*Ò*¨6¨6°:Ð+NÀÐ+NÐ+NÑOÔOÐOÝ�$”*ÑÔ¥Ð(Ð(¨TµWÔ5EÐ-EÐ-EÝ˜TœZ¨Ñ.Ô.ˆFð6Ý'×.Ò.¨v¨v°zÐ/RÀ\Ð/RÐ/RÑSÔSÐSøÝð 6ð 6ð 6Ý(­¨a©¬°"Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5øøøøð6øøøð �;ÒÐ¥3 t¡9¤9°¢> >°d¸1´g×6PÒ6PÑ6RÔ6R >ðIÝ'×.Ò.Ý˜$œ* d¨1¤g×&@Ò&@Ñ&BÔ&BÑCÔCñô ð øõ ð Ið Ið IÝ(­¨a©¬°"½4ÀÄ¹<¼<ÐHÑHÔHÐHÐHÐHÐHÐHÐHøøøøðIøøøå‰wŒw×"Ò" 2 t¨T°6Ñ:Ô:Ð:s�   Ã=D Ä.EÅEÆ9*G$ Ç$.HÈHÉ1J Ê
KÊJ>Ê>KÌ4L8 Ì8NÍ	1M?Í?NÑ(Q> Ñ>
SÒ1R>Ò>SÕU; Õ;
V,ÖV'Ö'V,×#AX( Ø(
Y-Ø21Y(Ù(Y-Útree_map_fnr   Úmap_fnÚrestÚtree_map_kwargsc           
     ó  •— | j         €ý|                     d¦  «        }|�L	 t          |                     ¦   «         ¦  «        }n_# t          $ r |                      |||||¦  «        cY S w xY wt          t          |dd ¦  «        dd¦  «        }|                     d¦  «         }|r|                     || g|¢i ¦  «        S |D ]1}	|	 	                    ¦   «         s|                      |||||¦  «        c S Œ2|  
                    ¦   «         S t          | j         t          t          t          t          t          t           t"          j        f¦  «        r|                     || g|¢i ¦  «        S t'          ¦   «                              |||||¦  «        S )NÚnone_is_leafÚfnÚ
__module__Ú Úoptree)r   r:   r'   re   rz   Ú_tree_map_fallbackr¹   Ú
startswithrØ   ru   Úcloner;   ro   rá   rê   r^   r   r™   ÚdtyperR   Úcall_tree_map)rX   rj   rô   rõ   rö   r÷   Únone_is_leaf_varrù   Útree_map_moduler¦   rY   s             €r#   r  zConstantVariable.call_tree_map�  sÍ  ø€ ð Œ:ÐØ.×2Ò2°>ÑBÔBÐØÐ+ð	Ý#'Ð(8×(KÒ(KÑ(MÔ(MÑ#NÔ#N�L�LøÝ*ð ð ð Ø×2Ò2ØØ#ØØØ'ñô ð ð ð ðøøøõ #*Ý˜K¨¨tÑ4Ô4°lÀBñ#ô #�ð $3×#=Ò#=¸hÑ#GÔ#GÐG�Øð $Ø×+Ò+¨B°°¸°¸rÑBÔBÐBà!ð ð �EØ ×1Ò1Ñ3Ô3ð Ø#×6Ò6ØØ'Ø"Ø Ø+ñ ô  ð ð ð ðð —z’z‘|”|Ð#Ý�d”j¥3­­tµW½cÅ5Í%Ì+Ð"VÑWÔWð 	?Ø×'Ò'¨¨T¨M°D¨M¸2Ñ>Ô>Ð>Ý‰wŒw×$Ò$ØØØØØñ
ô 
ð 	
s   ¡!A Á#A)Á(A)c                ó*   — t          | j        ¦  «        S r    )rb   r   ©rX   Úcodegens     r#   Úreconstruct_pycodez#ConstantVariable.reconstruct_pycodeÄ  s   € Ý�D”JÑÔÐr&   c                ój   — t          | j        |¦  «        }t          j                             |¦  «        S r    )r·   r   r   r   r$   )rX   rj   rµ   rÀ   s       r#   Úcall_obj_hasattrz!ConstantVariable.call_obj_hasattrÇ  s,   € õ ˜œ TÑ*Ô*ˆÝÔ)×0Ò0°Ñ8Ô8Ð8r&   c                ó   — ddl m} t          ||¦  «        r*|                      ¦   «         |                     ¦   «         k    S t          |t
          ¦  «        o)|                      ¦   «         |                     ¦   «         k    S )Nr   rÊ   )rÛ   rË   r;   re   Úevaluate_exprr   )rX   r¦   rË   s      r#   Úis_python_equalz ConstantVariable.is_python_equalÎ  s‚   € Ø+Ð+Ð+Ð+Ð+Ð+å�e˜_Ñ-Ô-ð 	FØ×*Ò*Ñ,Ô,°×0CÒ0CÑ0EÔ0EÒEÐEå�u�oÑ.Ô.ð HØ×'Ò'Ñ)Ô)¨U×-EÒ-EÑ-GÔ-GÒGð	
r&   ú
int | Nonec                ó    •— | j         �| j         du s	| j         du rt          | j         ¦  «        S t          ¦   «                              |¦  «        S )NTF)r   r˜   rR   Úget_id)rX   rj   rY   s     €r#   r  zConstantVariable.get_idØ  sI   ø€ àŒ:Ð ¤¨tÐ!3Ð!3°t´zÀUÐ7JÐ7JÝ�d”j‘>”>Ð!õ
 ‰wŒw�~Š~˜bÑ!Ô!Ð!r&   c                ó   — | j         S r    r"   r[   s    r#   Úget_real_python_backed_valuez-ConstantVariable.get_real_python_backed_valueâ  r]   r&   c                óî   •— ddl m}  |t          | j        ¦  «        ¦  «        r1t                               t          j        | j        ¦  «        ¦  «        S t          ¦   «          	                    |¦  «        S )Nr   )Útype_implements_nb_index)
r€   r  rK   r   r   r$   rä   r‰   rR   Únb_index_impl)rX   rj   r  rY   s      €r#   r  zConstantVariable.nb_index_implå  sm   ø€ ð 	>Ð=Ð=Ð=Ð=Ð=à#Ð#¥D¨¬Ñ$4Ô$4Ñ5Ô5ð 	GÝ#×*Ò*­8¬>¸$¼*Ñ+EÔ+EÑFÔFÐFÝ‰wŒw×$Ò$ RÑ(Ô(Ð(r&   c                óZ   — t                                t          | j        ¦  «        ¦  «        S r    )r   r$   ro   r   rl   s     r#   Únb_int_implzConstantVariable.nb_int_implñ  s    € õ  ×&Ò&¥s¨4¬:¡¤Ñ7Ô7Ð7r&   c                óZ   — t                                t          | j        ¦  «        ¦  «        S r    )r   r$   rá   r   rl   s     r#   Únb_float_implzConstantVariable.nb_float_implú  s"   € õ  ×&Ò&¥u¨T¬ZÑ'8Ô'8Ñ9Ô9Ð9r&   Ú
type_checkÚreversec                óŠ  —  |t          | j        ¦  «        ¦  «        st                               t          ¦  «        S |                     ¦   «         st                               t          ¦  «        S |r|| fn| |f\  }}|                     ¦   «         |                     ¦   «         }	}	  |||	¦  «        }
nU# t          t          t          f$ r;}t          t          |¦  «        |t          |j        ¦  «        ¬¦  «         Y d }~nd }~ww xY w|
t          u rt                               t          ¦  «        S t          j        ||
¦  «        S r…   )rK   r   r   r$   ÚNotImplementedri   re   ry   rã   râ   r   rE   r‡   r   Úbuild)rX   rj   r¦   r§   r  r  Úself_Úother_rÕ   ÚwrÀ   r{   s               r#   Ú_nb_binary_implz ConstantVariable._nb_binary_impl  s<  € ð ˆz�$˜tœzÑ*Ô*Ñ+Ô+ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø×'Ò'Ñ)Ô)ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø)0ÐC˜ ˜˜°t¸U°m‰ˆˆvØ×'Ò'Ñ)Ô)¨6×+DÒ+DÑ+FÔ+Fˆ1ˆð	EØ�R˜˜1‘X”XˆFˆFøÝ�:¥}Ð5ð 	Eð 	Eð 	EÝ$¥T¨!¡W¤W¨bµt¸A¼F±|´|ÐDÑDÔDÐDÐDÐDÐDÐDÐDøøøøð	Eøøøà•^Ð#Ð#Ý#×*Ò*­>Ñ:Ô:Ð:ÝÔ$ R¨Ñ0Ô0Ð0s   Â&B3 Â3DÃ
1D Ä DFc                óT   — ddl m} |                      ||t          j        ||¦  «        S )Nr   )Útype_implements_nb_lshift)r€   r$  r"  rä   Úlshift)rX   rj   r¦   r  r$  s        r#   Únb_lshift_implzConstantVariable.nb_lshift_impl  ó<   € ð 	?Ð>Ð>Ð>Ð>Ð>à×#Ò#Ø�•x”Ð(AÀ7ñ
ô 
ð 	
r&   c                óT   — ddl m} |                      ||t          j        ||¦  «        S )Nr   )Útype_implements_nb_rshift)r€   r)  r"  rä   Úrshift)rX   rj   r¦   r  r)  s        r#   Únb_rshift_implzConstantVariable.nb_rshift_impl+  r'  r&   c                ó<  — t          | j        t          t          f¦  «        st                               t          ¦  «        S |                     ¦   «         st                               t          ¦  «        S |r|| fn| |f\  }}|                     ¦   «         |                     ¦   «         }}	 t          j
        |||z  ¦  «        S # t          t          t          t          f$ r<}t          t!          |¦  «        |t#          |j        ¦  «        ¬¦  «         Y d }~d S d }~ww xY wr…   )r;   r   ro   rá   r   r$   r  ri   re   r   r  ry   rã   ÚZeroDivisionErrorrâ   r   rK   rE   r‡   ©	rX   rj   r¦   r  r  r   rÕ   r!  r{   s	            r#   Únb_floor_divide_implz%ConstantVariable.nb_floor_divide_impl9  s  € õ ˜$œ*¥s­E lÑ3Ô3ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø×'Ò'Ñ)Ô)ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø)0ÐC˜ ˜˜°t¸U°m‰ˆˆvØ×'Ò'Ñ)Ô)¨6×+DÒ+DÑ+FÔ+Fˆ1ˆð	EÝ"Ô(¨¨Q°!©VÑ4Ô4Ð4øÝ�:Õ'8½-ÐHð 	Eð 	Eð 	EÝ$¥T¨!¡W¤W¨bµt¸A¼F±|´|ÐDÑDÔDÐDÐDÐDÐDÐDÐDÐDøøøøð	Eøøøs   Â*C ÃDÃ1DÄDc                óH  — t          | j        t          t          t          f¦  «        st
                               t          ¦  «        S |                     ¦   «         st
                               t          ¦  «        S |r|| fn| |f\  }}| 	                    ¦   «         | 	                    ¦   «         }}	 t          j        |||z  ¦  «        S # t          t          t          t          f$ r<}t!          t#          |¦  «        |t%          |j        ¦  «        ¬¦  «         Y d }~d S d }~ww xY wr…   )r;   r   ro   rá   rê   r   r$   r  ri   re   r   r  ry   rã   r-  râ   r   rK   rE   r‡   r.  s	            r#   Únb_true_divide_implz$ConstantVariable.nb_true_divide_implN  s  € õ ˜$œ*¥s­Eµ7Ð&;Ñ<Ô<ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø×'Ò'Ñ)Ô)ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø)0ÐC˜ ˜˜°t¸U°m‰ˆˆvØ×'Ò'Ñ)Ô)¨6×+DÒ+DÑ+FÔ+Fˆ1ˆð	EÝ"Ô(¨¨Q°©UÑ3Ô3Ð3øÝ�:Õ'8½-ÐHð 	Eð 	Eð 	EÝ$¥T¨!¡W¤W¨bµt¸A¼F±|´|ÐDÑDÔDÐDÐDÐDÐDÐDÐDÐDøøøøð	Eøøøs   Â0C ÃD!Ã%1DÄD!c                ó`  — t          | j        t          t          t          t
          t          f¦  «        st                               t          ¦  «        S | 
                    ¦   «         st                               t          ¦  «        S |r|| fn| |f\  }}|                     ¦   «         |                     ¦   «         }}	 t          j        |||z  ¦  «        S # t          t          t           t"          f$ r<}t%          t'          |¦  «        |t)          |j        ¦  «        ¬¦  «         Y d }~d S d }~ww xY wr…   )r;   r   ro   rá   r^   r   Ú	bytearrayr   r$   r  ri   re   r   r  ry   rã   r-  râ   r   rK   rE   r‡   r.  s	            r#   Únb_remainder_implz"ConstantVariable.nb_remainder_implc  s  € õ ˜$œ*¥s­Eµ3½½yÐ&IÑJÔJð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø×'Ò'Ñ)Ô)ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø)0ÐC˜ ˜˜°t¸U°m‰ˆˆvØ×'Ò'Ñ)Ô)¨6×+DÒ+DÑ+FÔ+Fˆ1ˆð	EÝ"Ô(¨¨Q°©UÑ3Ô3Ð3øÝ�:Õ'8½-ÐHð 	Eð 	Eð 	EÝ$¥T¨!¡W¤W¨bµt¸A¼F±|´|ÐDÑDÔDÐDÐDÐDÐDÐDÐDÐDøøøøð	Eøøøs   Â<C ÃD-Ã11D(Ä(D-c                óR  — t          | j        t          t          f¦  «        st                               t          ¦  «        S |                     ¦   «         st                               t          ¦  «        S |r|| fn| |f\  }}|                     ¦   «         |                     ¦   «         }}	 t          j
        |t          ||¦  «        ¦  «        S # t          t          t          t          f$ r<}t!          t#          |¦  «        |t%          |j        ¦  «        ¬¦  «         Y d }~d S d }~ww xY wr…   )r;   r   ro   rá   r   r$   r  ri   re   r   r  Údivmodry   rã   r-  râ   r   rK   rE   r‡   r.  s	            r#   Únb_divmod_implzConstantVariable.nb_divmod_imply  s  € õ ˜$œ*¥s­E lÑ3Ô3ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø×'Ò'Ñ)Ô)ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø)0ÐC˜ ˜˜°t¸U°m‰ˆˆvØ×'Ò'Ñ)Ô)¨6×+DÒ+DÑ+FÔ+Fˆ1ˆð	EÝ"Ô(¨­V°A°q©\¬\Ñ:Ô:Ð:øÝ�:Õ'8½-ÐHð 	Eð 	Eð 	EÝ$¥T¨!¡W¤W¨bµt¸A¼F±|´|ÐDÑDÔDÐDÐDÐDÐDÐDÐDÐDøøøøð	Eøøøs   Â*"C ÃD&Ã*1D!Ä!D&c                óT   — ddl m} |                      ||t          j        ||¦  «        S )Nr   )Útype_implements_nb_or)r€   r9  r"  rä   Úor_)rX   rj   r¦   r  r9  s        r#   Ú
nb_or_implzConstantVariable.nb_or_implŽ  s<   € ð 	;Ð:Ð:Ð:Ð:Ð:à×#Ò#Ø�•x”|Ð%:¸Gñ
ô 
ð 	
r&   c                óT   — ddl m} |                      ||t          j        ||¦  «        S )Nr   )Útype_implements_nb_subtract)r€   r=  r"  rä   Úsub)rX   rj   r¦   r  r=  s        r#   Únb_subtract_implz!ConstantVariable.nb_subtract_implŸ  s=   € ð 	AÐ@Ð@Ð@Ð@Ð@à×#Ò#Ø�•x”|Ð%@À'ñ
ô 
ð 	
r&   c                ód  — ddl m} |                     ¦   «         st                               t
          ¦  «        S |                     ¦   «         }t          |t          t          t          f¦  «        st                               t
          ¦  «        S |                      ||t          j        ||¦  «        S )Nr   )Útype_implements_nb_multiply)r€   rA  ri   r   r$   r  re   r;   ro   rá   rê   r"  rä   Úmul)rX   rj   r¦   r  rA  Ú	other_vals         r#   Únb_multiply_implz!ConstantVariable.nb_multiply_impl¯  s¥   € ð 	AÐ@Ð@Ð@Ð@Ð@à×'Ò'Ñ)Ô)ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø×,Ò,Ñ.Ô.ˆ	õ ˜)¥c­5µ'Ð%:Ñ;Ô;ð 	;Ý#×*Ò*­>Ñ:Ô:Ð:Ø×#Ò#Ø�•x”|Ð%@À'ñ
ô 
ð 	
r&   Úcountc                óp  — t          | j        t          t          f¦  «        st	          d¦  «        ‚|                     ¦   «         }	 t                               | j        |z  ¦  «        S # t          t          f$ r<}t          t          |¦  «        |t          |j        ¦  «        ¬¦  «         Y d }~d S d }~ww xY w)Nz'Expected str or bytes in sq_repeat_implr†   )r;   r   r^   r   rU   re   r   r$   ÚMemoryErrorrâ   r   rK   rE   r‡   )rX   rj   rE  Únr{   s        r#   Úsq_repeat_implzConstantVariable.sq_repeat_implË  sº   € õ ˜$œ*¥s­E lÑ3Ô3ð 	LÝ Ð!JÑKÔKÐKØ×$Ò$Ñ&Ô&ˆð	EÝ#×*Ò*¨4¬:¸©>Ñ:Ô:Ð:øÝ�]Ð+ð 	Eð 	Eð 	EÝ$¥T¨!¡W¤W¨bµt¸A¼F±|´|ÐDÑDÔDÐDÐDÐDÐDÐDÐDÐDøøøøð	Eøøøs   Á!A( Á(B5Á91B0Â0B5c                óT   — ddl m} |                      ||t          j        ||¦  «        S )Nr   )Útype_implements_nb_and)r€   rK  r"  rä   Úand_)rX   rj   r¦   r  rK  s        r#   Únb_and_implzConstantVariable.nb_and_implÝ  s<   € ð 	<Ð;Ð;Ð;Ð;Ð;à×#Ò#Ø�•x”}Ð&<¸gñ
ô 
ð 	
r&   c                óT   — ddl m} |                      ||t          j        ||¦  «        S )Nr   )Útype_implements_nb_xor)r€   rO  r"  rä   Úxor)rX   rj   r¦   r  rO  s        r#   Únb_xor_implzConstantVariable.nb_xor_implí  ó<   € ð 	<Ð;Ð;Ð;Ð;Ð;à×#Ò#Ø�•x”|Ð%;¸Wñ
ô 
ð 	
r&   c                óB   — t                                | j         ¦  «        S r    ©r   r$   r   rl   s     r#   Únb_negative_implz!ConstantVariable.nb_negative_implý  ó   € õ  ×&Ò&¨¬
 {Ñ3Ô3Ð3r&   c                óB   — t                                | j        
 ¦  «        S r    rT  rl   s     r#   Únb_positive_implz!ConstantVariable.nb_positive_impl  rV  r&   c                óT   — ddl m} |                      ||t          j        ||¦  «        S )Nr   )Útype_implements_nb_add)r€   rZ  r"  rä   Úadd)rX   rj   r¦   r  rZ  s        r#   Únb_add_implzConstantVariable.nb_add_impl  rR  r&   c                óÞ   — 	 t                                t          | j        ¦  «        ¦  «        S # t          $ r4}t          t          |t          |j        ¦  «        ¬¦  «         Y d }~d S d }~ww xY wr…   )r   r$   Úabsr   râ   r   rE   r‡   rŸ   s      r#   Únb_absolute_implz!ConstantVariable.nb_absolute_impl!  sv   € ð	KÝ#×*Ò*­3¨t¬z©?¬?Ñ;Ô;Ð;øÝð 	Kð 	Kð 	KÝ$¥]°B½TÀ!Ä&¹\¼\ÐJÑJÔJÐJÐJÐJÐJÐJÐJÐJøøøøð	Køøøs   ‚+. ®
A,¸)A'Á'A,)r   r   r   r   )r   r'   r   r   )r   r   r)   r   r   r   )r   r   r)   r   r   r   )r   r   )r   r^   )r   rf   )rj   r   r   r   ©r   r'   )rq   r   r   r'   )r   rv   )rj   r   r6   r   r   r   )rj   r   rƒ   r   r   r   )rj   r   r‰   r   r   r‹   )r�   r�   r   r'   r    )r�   r�   r’   r“   r   r'   )rj   rœ   r   rv   )rj   r   r   r¡   )rj   r   r¦   r   r§   r^   r   r   )rj   r   rµ   r^   r   r   )rj   r   rW   r   )
rj   r   rµ   r^   r‡   rv   r)   rÈ   r   r   )rj   r   rô   r   rõ   r   rö   rv   r÷   rÈ   r   r   )rj   r   rµ   r^   r   r   ©r¦   r�   r   r'   )rj   r   r   r  )r   r�   )rj   r   r   r   )rj   r   r¦   r   r§   r   r  r   r  r'   r   r   )F)rj   r   r¦   r   r  r'   r   r   )rj   r   r¦   r   r  r'   r   r   )rj   r   rE  r   r   r   )Fra   rû   Ú__qualname__Ú__doc__ro   rá   r^   r   r'   rK   rê   Ú_cpython_typer   Ústaticmethodr$   rS   r\   rc   re   ri   rm   rp   rs   ru   ÚpropertyrL   r‚   rŠ   r�   rT   r–   r    r¥   rª   r¬   r®   r±   r´   r¼   r¾   rÇ   rÝ   r  r  r	   r
  r  r  r  r  r  r  r"  r&  r+  r/  r1  r4  r7  r;  r?  rD  rI  rM  rQ  rU  rX  r\  r_  Ú__classcell__©rY   s   @r#   r   r   &   s  ø€ € € € € ðð ð ˜%  e¨T°4°4¸±:´:¸wÈÈÈSÉ	Ì	ÐR€MàØØ4Ð4Ð4ñ „\ñ „Xà4àØØ4Ð4Ð4ñ „\ñ „Xà4àØØAÐAÐAñ „\ñ „XàAàð/1ð /1ð /1ñ „\ð/1ðbð ð ð ð ð ð"ð ð ð ðTð Tð Tð Tðð ð ð ðð ð ð ð9ð 9ð 9ð 9ð3ð 3ð 3ð 3ð$ð $ð $ð $ð"ð "ð "ð "ð ð-ð -ð -ñ „Xð-ð

ð 

ð 

ð 

ðHð Hð Hð HðVð Vð Vð Vð Vð Vð ð2ð 2ð 2ñ „\ð2ð ð	5ð 	5ð 	5ð 	5ñ „\ð	5ð-ð -ð -ð -ð'ð 'ð 'ð 'ðEð Eð Eð Eð8ð 8ð 8ð 8ðEð Eð Eð Eð!ð !ð !ð !ð!ð !ð !ð !ðð ð ð ð-ð -ð -ð -ð -ð -ð(ð (ð (ð (ð (ð (ðb;ð b;ð b;ð b;ð b;ð b;ðH2
ð 2
ð 2
ð 2
ð 2
ð 2
ðh ð  ð  ð  ð ð9ð 9ð 9ñ „Xð9ð
ð 
ð 
ð 
ð"ð "ð "ð "ð "ð "ðð ð ð ð
)ð 
)ð 
)ð 
)ð 
)ð 
)ð8ð 8ð 8ð 8ð:ð :ð :ð :ð1ð 1ð 1ð 1ð< ð	
ð 
ð 
ð 
ð 
ð$ ð	
ð 
ð 
ð 
ð 
ð$ ð	Eð Eð Eð Eð Eð2 ð	Eð Eð Eð Eð Eð2 ð	Eð Eð Eð Eð Eð4 ð	Eð Eð Eð Eð Eð2 ð	
ð 
ð 
ð 
ð 
ð* ð	
ð 
ð 
ð 
ð 
ð( ð	
ð 
ð 
ð 
ð 
ð8Eð Eð Eð Eð, ð	
ð 
ð 
ð 
ð 
ð( ð	
ð 
ð 
ð 
ð 
ð 4ð 4ð 4ð 4ð4ð 4ð 4ð 4ð ð	
ð 
ð 
ð 
ð 
ð Kð Kð Kð Kð Kð Kð Kð Kr&   r   TFc                  ó   — e Zd ZdZdZdS )ÚFakeValueKindr˜   r¤   N)ra   rû   rb  ÚIDÚHASHr!   r&   r#   rj  rj  6  s   € € € € € Ø	€BØ€D€D€Dr&   rj  c                  ó„   ‡ — e Zd ZdZeZdhej        £Zej	        dœdˆ fd„Z
dd„Zdd„Zd d„Zd!d„Zd"d„Zd#d„Zd$d„Zˆ xZS )%ÚFakeIdVariablea×  A compile-time-only id or hash value that can be used as a dict key but
    cannot be reconstructed across graph breaks.

    When dynamo evaluates ``id(x)`` or ``hash(x)`` on a variable tracker that
    has no corresponding runtime object, we mint a fake integer.  The ``kind``
    field tracks which builtin produced the value so that same-kind comparisons
    (e.g. ``id(a) != id(b)``) can be resolved at compile time while cross-kind
    comparisons graph-break.
    Úkind)ro  r   ro   rj  r)   r   r   r   c               óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S )Nr!   )rR   rS   r   ro  )rX   r   ro  r)   rY   s       €r#   rS   zFakeIdVariable.__init__N  s4   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
ØˆŒ	ˆ	ˆ	r&   c                ó   — | j         S r    r"   r[   s    r#   re   z!FakeIdVariable.as_python_constantU  r]   r&   r'   c                ó   — dS ©NFr!   r[   s    r#   ri   z!FakeIdVariable.is_python_constantX  s   € Øˆur&   rK   c                ó   — t           S r    )ro   r[   s    r#   Úpython_typezFakeIdVariable.python_type[  s   € Ýˆ
r&   rj   r¡   c                ó.   — t          | j        ¦  «        dfS rh   r£   rl   s     r#   r¥   zFakeIdVariable.hash_impl^  s   € Ý�D”JÑÔ Ð%Ð%r&   r¦   r   r§   r^   c                óX  — t          |t          ¦  «        rT| j        |j        k    rD|dv r@|dk    r| j        |j        k    n| j        |j        k    }t                               |¦  «        S t          dd| j        › d|› dt          |¦  «        j        › �ddgt          j
        ¢¬	¦  «         d S )
N)Ú__eq__Ú__ne__rx  z0Comparison on compile-time-only id or hash valuezFakeIdVariable(z) ú zYCannot compare a compile-time-only id() or hash() value. The comparison will run eagerly.zbAvoid comparing id() or hash() of objects created inside the compiled region against other values.©Úgb_typeÚcontextÚexplanationÚhints)r;   rn  ro  r   r   r$   r   rK   ra   r   ÚSUPPORTABLE)rX   rj   r¦   r§   rÀ   s        r#   rª   zFakeIdVariable.richcompare_impla  sÚ   € õ �u�nÑ-Ô-ð
	3à”	˜UœZÒ'Ð'ØÐ*Ð*Ð*ð ˜’>�>ð ”˜uœ{Ò*Ð*à”j E¤KÒ/ð õ
 $×*Ò*¨6Ñ2Ô2Ð2ÝØFØO d¤jÐOÐO°BÐOÐO½¸e¹¼Ô9MÐOÐOð6ð<ðõ #Ô.ðð
	
ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
r&   r�   c                óx   — t          |t          t          f¦  «        r| j        |                     ¦   «         k    S dS rs  )r;   rn  r   r   re   )rX   r¦   s     r#   r  zFakeIdVariable.is_python_equal{  s8   € Ý�e�nÕ.>Ð?Ñ@Ô@ð 	<Ø”: ×!9Ò!9Ñ!;Ô!;Ò;Ð;Øˆur&   r  c                óR   — t          dt          | j        ¦  «        ddg¬¦  «         d S )Nz Reconstruction of FakeIdVariablezdA fake id produced by id() on a compile-time container cannot be reconstructed across a graph break.z<Avoid using id() on containers in code that may graph-break.r{  )r   r^   r   r  s     r#   ÚreconstructzFakeIdVariable.reconstruct€  sB   € ÝØ6Ý˜œ
‘O”Oð@ð Oðð
	
ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
r&   )r   ro   ro  rj  r)   r   r   r   )r   ro   r`  )r   rK   )rj   r   r   r¡   )rj   r   r¦   r   r§   r^   r   r   ra  )r  r   r   r   )ra   rû   rb  rc  ro   rd  r   Ú_nonvar_fieldsrj  rk  rS   re   ri   ru  r¥   rª   r  rƒ  rg  rh  s   @r#   rn  rn  ;  s  ø€ € € € € ðð ð €Mð 	ðà	Ô	'ð€Nð 4AÔ3Cðð ð ð ð ð ð ð ðð ð ð ðð ð ð ðð ð ð ð&ð &ð &ð &ð
ð 
ð 
ð 
ð4ð ð ð ð

ð 
ð 
ð 
ð 
ð 
ð 
ð 
r&   rn  )+rc  Ú
__future__r   Úenumrä   Úcollections.abcr   Útypingr   r   r   r   Útyping_extensionsr	   r™   Útorch._dynamo.sourcer
   rü   r   r   rñ   r   r   Úutilsr   r   r   r   r   Úbaser   r   Útorch._dynamo.symbolic_convertr   Ú	functionsr   r   r7   r8   r9   ÚEnumrj  rn  r!   r&   r#   ú<module>r�     s0  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø &Ð &Ð &Ð &Ð &Ð &à €€€Ø .Ð .Ð .Ð .Ð .Ð .à +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3ð ð 0ØHÐHÐHÐHÐHÐHà/Ð/Ð/Ð/Ð/Ð/ðHKð HKð HKð HKð HK�ñ HKô HKð HKðV *Ð)¨$Ñ/Ô/Ð Ø)Ð)¨$Ñ/Ô/Ð Ø*Ð*¨5Ñ1Ô1Ð ðð ð ð ð �D”Iñ ô ð ð
P
ð P
ð P
ð P
ð P
�_ñ P
ô P
ð P
ð P
ð P
r&   