Ë
    M²j" ã                  óò  — U d dl m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mZ d dlZd dlmc mZ d dlmZmZmZmZmZmZmZmZ d dlmZ erd dlmZ d dlm Z  d dl!Z!d d	l"m#Z#  ejH                  e%«      Z&ej$                  jO                  e%d
«      Z( e)«       Z*de+d<   e,e-z  e.z  dz  Z/g d¢Z0d dl1m2Z3 ed}d„«       Z4ed~d„«       Z4edd„«       Z4ed€d„«       Z4d€d„Z4 G d„ d«      Z5 G d„ d«      Z6 G d„ de6e.«      Z7i dejp                  “dejr                  “dejt                  “dejv                  “dejv                  “dejx                  “d ejz                  “d!ej|                  “d"ej~                  “d#ej€                  “d$ej‚                  “d%ej„                  “d&d'„ “d(ej†                  “d)ejˆ                  “d*ejŠ                  “d+ejŒ                  “i d,ejŽ                  “d-ej�                  “d.ej’                  “d/ej”                  “d0ej”                  “d1ej–                  “d2ej˜                  “d3ej˜                  “d4ejš                  “d5ejœ                  “d6ejž                  “d7e“d8e“d9e“d:e“d;e“d<ej                   “¥d=ej                   i¥ZQh d>£ZRd�d?„ZSd@ZTeTD ]J  ZUdAeU› �ZVdBeV› �ZW eXe5eV eSeU«      «        eYeeW«      eQeV<   eRju                  eV«       e0jµ                  eV«       ŒL d&hZ[eRe[z  Z\h dC£Z]h dD£Z^d hZ_e]e_z  Z`h dE£Zadd/hZbdd/dFdGœZch dH£ZdeTD ]  ZUdAeU› �ZVedju                  eV«       Œ h dI£Zeh dJ£Zfd‚dK„Zgd‚dL„Zhd‚dM„Zid‚dN„Zjd‚dO„Zkd‚dP„Zld‚dQ„Zmd‚dR„Znd‚dS„Zod‚dT„Zp	 	 	 	 	 	 dƒdU„Zq	 	 d„	 	 	 	 	 	 	 	 	 d…dV„Zrd‚dW„Zsd‚dX„Ztd‚dY„Zui dejt                  “d6ejž                  “d,ejŽ                  “d+ej“d3ek“d2el“dem“des“d/en“d0et“d1eu“d<eg“d=eh“d#ei“d)eo“d5ep“Zvd†dZ„Zwd‡d[„Zxd‡d\„Zyd‡d]„Zzd‚d^„Z{d‚d_„Z|d‚d`„Z}d‚da„Z~d‚db„Zd‚dc„Z€d‚dd„Z�d‚de„Z‚dˆdf„Zƒe	�j                  e%   Z…d‰dg„Z†eTD ]'  ZUdheU› �Z‡ e†eU«      Zˆe‡xeˆ_‰        eˆ_%         eXe…e‡eˆ«       Œ) [ˆ[U[‡d‡di„ZŠ	 dŠ	 	 	 	 	 d‹dj„Z‹d‡dk„ZŒd‡dl„Z�i ev¥i d;e�j                  “dejp                  “d e{“d-e|“d%e}“d*e~“d(e“d$e€“d!ex“d"ey“d7eŒ“dez“d.ej’                  “d:e�“d9e‚“d8eƒ“deŠ“¥e‹e�dmœ¥Z�eTD ]  ZUdAeU› �ZV eYe…dheU› �«      e�eV<   Œ [U[V[T[…	 	 	 	 	 	 dŒdn„Z�	 	 	 	 	 	 	 	 d�do„Z‘	 	 	 	 	 	 dŒdp„Z’	 	 	 	 	 	 dŒdq„Z“	 	 	 	 	 	 	 	 d�dr„Z”	 	 	 	 	 	 dŒds„Z•	 	 	 	 	 	 dŒdt„Z–	 	 	 	 	 	 dŒdu„Z—e�e’e“e•e–e—dvœZ˜dŽdw„Z™d�dx„Zšd�dy„Z›d‘dz„Zœd‘d{„Z�e��j=                  «       D ]  \  ZŸZ  eœeŸe «       Œ e˜�j=                  «       D ]  \  ZŸZ  e�eŸe «       Œ d’d|„Z¡e�D ]F  ZŸeŸe]v r
 e¡eŸe«       ŒeŸeav r
 e¡eŸe«       ŒeŸe_v seŸe^v r	 e¡eŸe«        e¡eŸe«       eŸecvsŒ> e¡eŸe«       ŒH [Ÿ[ y)“é    )ÚannotationsN)Ú	lru_cacheÚupdate_wrapper)ÚAnyÚoverloadÚTYPE_CHECKING)Ú	sym_floatÚsym_iteÚsym_maxÚsym_minÚsym_notÚSymBoolÚSymFloatÚSymInt)Údtrace_structured)ÚCallable)ÚSelf)ÚShapeEnvÚsym_nodeÚobjectÚ_NO_HINT)ÚSymNodeÚmethod_to_operatorÚmagic_methodsÚ
DynamicInt)Úpy_sym_typesc                 ó   — y ©N© ©Úts    ú]/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/fx/experimental/sym_node.pyÚ_to_symtyper#   D   s   € Ø14ó    c                 ó   — y r   r   r    s    r"   r#   r#   F   s   € Ø/2r$   c                 ó   — y r   r   r    s    r"   r#   r#   H   s   € Ø36r$   c                 ó   — y r   r   r    s    r"   r#   r#   J   s   € Ø"%r$   c                óZ   — | t         u rt        S | t        u rt        S | t        u rt
        S | S r   )Úboolr   Úintr   Úfloatr   r    s    r"   r#   r#   L   s+   € ØŒD�yÜˆØŒC�xÜˆØŒE�zÜˆØ€Hr$   c                  óN  — e Zd ZU dZdZded<   	 	 	 d[	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d\d„Zd]d„Zd^d„Zd_d	„Z	e
d`d
„«       Ze
dad„«       Zdbd„Zdcd„Zddd„Zded„Zdbd„Zdbd„Zdbd„Zdbd„Zdfd„Zdgd„Zdhd„Zdid„Zdjd„Zdjd„Zdjd„Zdjd„Zdid„Zdid„Zdkdld„Zdid„Z dmd „Z!dmd!„Z"dmd"„Z#dmd#„Z$dmd$„Z%dmd%„Z&dmd&„Z'dmd'„Z(dmd(„Z)dmd)„Z*dmd*„Z+dmd+„Z,dmd,„Z-did-„Z.dmd.„Z/dmd/„Z0dmd0„Z1dmd1„Z2dmd2„Z3dmd3„Z4did4„Z5did5„Z6did6„Z7did7„Z8did8„Z9did9„Z:dmd:„Z;dmd;„Z<dnd<„Z=dod=„Z>	 	 	 	 	 	 dod>„Z?	 	 	 	 	 	 dod?„Z@	 	 	 	 	 	 dod@„ZA	 	 	 	 	 	 dodA„ZB	 	 	 	 	 	 dodB„ZCdmdC„ZDdmdD„ZEdmdE„ZFdmdF„ZGdmdG„ZHdmdH„ZIdmdI„ZJdmdJ„ZK	 	 	 	 	 	 dodK„ZLd_dL„ZMdpdM„ZNdqdrdN„ZOdsdO„ZPdtdP„ZQdudQ„ZRdudR„ZSdudS„ZTdudT„ZUdudU„ZVdudV„ZWdbdW„ZXdbdX„ZYdvdY„ZZdbdZ„Z[y)wr   z¤
    This is a type erased SymInt/SymFloat which we use to do actual operations.
    End users don't touch this.  Magic methods are NOT defined on this object.
    Fr)   Ú_optimized_summationNc                ó  ‡ — |‰ _         |‰ _        |‰ _        |‰ _        d‰ _        d ‰ _        dˆ fd„}|t        u rd }n’|�‰t        |«      |u s0t        |«      t        |«      u st        d|› dt        |«      › �«      ‚‰ j                  rG‰ j                  j                  r1 |«       }	||	k7  r%t        |› d|	› d‰ j                  › d�«      ‚ |«       }|‰ _        |‰ _        ‰ j                  xr ‰ j                  j                  }
|
xr |‰ _        y )	Néÿÿÿÿc                 ó   •— ddl m}   | ‰j                  «      ry ‰j                  €t	        d«      ‚‰j                  j                  ‰j                  d¬«      }|�#t        |t        «      s‰j                  |«      n|}|S )Nr   )Úhas_free_unbacked_symbolsz%shape_env is required to compute hintT)Úcompute_hint)	Ú%torch.fx.experimental.symbolic_shapesr1   ÚexprÚ	shape_envÚRuntimeErrorÚ_maybe_evaluate_staticÚ
isinstanceÚSymTypesÚpytype)r1   ÚhintÚselfs     €r"   r2   z&SymNode.__init__.<locals>.compute_hint”   sp   ø€ ÝWñ )¨¯©Ô3ØØ�~‰~Ð%Ü"Ð#JÓKÐKØ—>‘>×8Ñ8¸¿¹ÐQUÐ8ÓVˆDØÐÜ0:¸4ÄÔ0J�t—{‘{ 4Ô(ÐPT�ØˆKr$   zCannot create SymNode of type z  with incompatible hint of type z != z (for ú)©Úreturnz&HintType | SymInt | SymFloat | SymBool)Ú_exprr5   r:   r-   Ú	_expr_verÚ_expr_cacher   Útyper#   ÚAssertionErrorÚ_translation_validation_enabledr4   Ú_hintÚconstantÚfx_node)r<   r4   r5   r:   r;   rG   rH   Úoptimized_summationr2   Úcomputed_hintÚtx_validation_ens   `          r"   Ú__init__zSymNode.__init__h   s  ø€ ð ˆŒ
Ø"ˆŒØˆŒØ$7ˆÔ!ØˆŒØˆÔõ:	ð" ”8Ñà‰DØÐÜ˜“J &Ñ(¬D°«J¼+ÀfÓ:MÑ,MÜ$Ø4Ø�hÐ>¼tÀD»z¸lðLóð ð �~Š~ $§.¡.×"PÒ"Pñ !-£�Ø˜=Ò(Ü(¨D¨6°°m°_ÀFÈ4Ï9É9È+ÐUVÐ)WÓXÐXá“>ˆDØˆŒ
Ø3;ˆŒð �N‰NÒM˜tŸ~™~×MÑMð 	ð (Ò3¨Gˆ�r$   c                ó†   — t        | j                  || j                  | j                  | j                  | j
                  «      S r   )r   r@   r:   rF   rG   rH   )r<   r5   s     r"   Úwith_shape_envzSymNode.with_shape_envÁ   s0   € ÜØ�J‰J˜	 4§;¡;°·
±
¸D¿M¹MÈ4Ï<É<ó
ð 	
r$   c                ó  — | j                   |j                   k(  xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )r@   r:   rF   rG   rH   ©r<   Úothers     r"   Ú	_value_eqzSymNode._value_eqÆ   sq   € ð �J‰J˜%Ÿ+™+Ñ%ò .Ø—‘˜uŸ|™|Ñ+ò.à—
‘
˜eŸk™kÑ)ò.ð —‘ §¡Ñ/ò.ð —‘ §¡Ñ-ð	
r$   c                ó†   — t        | j                  | j                  | j                  | j                  | j
                  f«      S r   )Úhashr@   r:   rF   rG   rH   ©r<   s    r"   Ú_value_hashzSymNode._value_hashÐ   s,   € ä�T—Z‘Z §¡¨d¯j©j¸$¿-¹-ÈÏÉÐVÓWÐWr$   c                ó®  — t        | j                  t        «      s| j                  j                  r| j                  S | j                  €t        d«      ‚| j                  j                  }|dk(  r| j                  S | j                  �|| j                  k(  r| j                  S | j                  j                  | j                  «      }|| _        || _        |S )Nz$shape_env is required to access exprr   )
r8   r@   r*   Ú	is_numberr5   rD   Ú_replacements_version_counterrB   rA   Úreplace)r<   ÚverÚresults      r"   r4   zSymNode.exprÔ   s®   € ô �t—z‘z¤3Ô'Ø�z‰z×#Ò#à—:‘:ÐØ�>‰>Ð!Ü Ð!GÓHÐHØ�n‰n×:Ñ:ˆØ�!Š8Ø—:‘:ÐØ×ÑÐ'¨C°4·>±>Ò,AØ×#Ñ#Ð#Ø—‘×'Ñ'¨¯
©
Ó3ˆØˆŒØ!ˆÔØˆr$   c                ó   — | j                   S r   ©rF   rU   s    r"   r;   zSymNode.hintç   s   € à�z‰zÐr$   c                ó   — | j                   d uS r   r^   rU   s    r"   Úhas_hintzSymNode.has_hintë   s   € Ø�z‰z Ð%Ð%r$   c                óZ   — | j                   j                  rt        | j                   «      S y r   )r4   rX   r*   rU   s    r"   Úmaybe_as_intzSymNode.maybe_as_intî   s    € Ø�9‰9×ÒÜ�t—y‘y“>Ð!àr$   c                óv   — dd l }t        | j                  |j                  «      rt	        | j                  «      S y ©Nr   )Úsympyr8   r4   ÚFloatr+   ©r<   re   s     r"   Úmaybe_as_floatzSymNode.maybe_as_floatõ   s)   € Ûä�d—i‘i §¡Ô-Ü˜Ÿ™Ó#Ð#àr$   c                óp   — dd l }| j                  |j                  u ry| j                  |j                  u ryy )Nr   TF)re   r4   ÚtrueÚfalserg   s     r"   Úmaybe_as_boolzSymNode.maybe_as_boolý   s.   € Ûà�9‰9˜Ÿ
™
Ñ"ØØ�Y‰Y˜%Ÿ+™+Ñ%Øàr$   c                ó&   — | j                   t        u S r   )r:   r*   rU   s    r"   Úis_intzSymNode.is_int  s   € Ø�{‰{œcÐ!Ð!r$   c                ó&   — | j                   t        u S r   )r:   r+   rU   s    r"   Úis_floatzSymNode.is_float
  s   € Ø�{‰{œeÐ#Ð#r$   c                ó&   — | j                   t        u S r   )r:   r)   rU   s    r"   Úis_boolzSymNode.is_bool  s   € Ø�{‰{œdÐ"Ð"r$   c                ó¢   — | j                   d uxr@ t        | j                   t        «      xr$ | j                   j                  j	                  «       S r   )rF   r8   r   ÚnodeÚis_nested_intrU   s    r"   ru   zSymNode.is_nested_int  sA   € ð �J‰J˜dÐ"ò 0Ü˜4Ÿ:™:¤vÓ.ò0à—
‘
—‘×-Ñ-Ó/ð	
r$   c                ó¸   — t        |«      t        urt        dt        |«      › �«      ‚dd l}t	         |j
                  |«      | j                  t        |||¬«      S )NúExpected int, got r   ©rG   rH   )rC   r*   rD   re   r   ÚIntegerr5   ©r<   Únumre   s      r"   Úwrap_intzSymNode.wrap_int  sR   € Ü�‹9œCÑÜ Ð#5´d¸3³i°[Ð!AÓBÐBÛäØˆE�M‰M˜#Ó §¡´°SÀ3ÐPSô
ð 	
r$   c                ó¸   — t        |«      t        urt        dt        |«      › �«      ‚dd l}t	         |j
                  |«      | j                  t        |||¬«      S )NzExpected float, got r   rx   )rC   r+   rD   re   r   rf   r5   rz   s      r"   Ú
wrap_floatzSymNode.wrap_float!  sR   € Ü�‹9œEÑ!Ü Ð#7¼¸S»	°{Ð!CÓDÐDÛäØˆE�K‰K˜Ó˜dŸn™n¬e°SÀ3ÐPSô
ð 	
r$   c                óÈ   — t        |«      t        urt        dt        |«      › �«      ‚dd l}t	        |r|j
                  n|j                  | j                  t        |||¬«      S )NzExpected bool, got r   rx   )rC   r)   rD   re   r   rj   rk   r5   rz   s      r"   Ú	wrap_boolzSymNode.wrap_bool*  sW   € Ü�‹9œDÑ Ü Ð#6´t¸C³y°kÐ!BÓCÐCÛäÙˆE�JŠJ 5§;¡;Ø�N‰NÜØØØô
ð 	
r$   c                ó   — | S r   r   rU   s    r"   ÚclonezSymNode.clone8  s   € Øˆr$   c                ó   — | j                   › S r   )r4   rU   s    r"   ÚstrzSymNode.str;  s   € Ø—)‘)�Ðr$   c                ó"   — | j                  «       S r   ©r„   rU   s    r"   Ú__str__zSymNode.__str__>  s   € Ø�x‰x‹zÐr$   c                óz  — d| j                   › d| j                  › d| j                  › �g}| j                  �|j	                  d| j                  › �«       | j
                  �|j	                  d| j
                  › �«       | j                  �|j	                  d| j                  › �«       dj                  |«      dz   S )	NzSymNode(z, shape_env=z	, pytype=zhint=z	constant=zfx_node=z, r=   )r@   r5   r:   rF   ÚappendrG   rH   Újoin)r<   Úreps     r"   Ú__repr__zSymNode.__repr__A  s¤   € à�t—z‘z�l ,¨t¯~©~Ð.>¸iÈÏÉÀ}ÐUð
ˆð �:‰:Ð!Ø�J‰J˜˜tŸz™z˜lÐ+Ô,Ø�=‰=Ð$Ø�J‰J˜ 4§=¡= /Ð2Ô3Ø�<‰<Ð#Ø�J‰J˜ $§,¡, Ð0Ô1Ø�y‰y˜‹~ Ñ#Ð#r$   c                ó"   — | j                  «       S r   r†   rU   s    r"   Ú_graph_reprzSymNode._graph_reprM  s   € à�x‰x‹zÐr$   c                ó"   — | j                  «       S r   )Ú_absrU   s    r"   ÚabszSymNode.absS  ó   € Ø�y‰y‹{Ðr$   c                ó"   — | j                  «       S r   )Ú_posrU   s    r"   ÚposzSymNode.posV  r’   r$   c                ó$   — | j                  |«      S r   )Ú_round)r<   Úndigitss     r"   ÚroundzSymNode.roundY  s   € Ø�{‰{˜7Ó#Ð#r$   c                ó"   — | j                  «       S r   )Ú_truncrU   s    r"   ÚtrunczSymNode.trunc\  ó   € Ø�{‰{‹}Ðr$   c                ó$   — | j                  |«      S r   )Ú_addrP   s     r"   ÚaddzSymNode.add_  ó   € Ø�y‰y˜ÓÐr$   c                ó$   — | j                  |«      S r   )Ú_subrP   s     r"   ÚsubzSymNode.subb  r¡   r$   c                ó$   — | j                  |«      S r   )Ú_mulrP   s     r"   ÚmulzSymNode.mule  r¡   r$   c                ó$   — | j                  |«      S r   )Ú_modrP   s     r"   ÚmodzSymNode.modh  r¡   r$   c                ó$   — | j                  |«      S r   )Ú
_float_powrP   s     r"   Ú	float_powzSymNode.float_powk  s   € Ø�‰˜uÓ%Ð%r$   c                ó$   — | j                  |«      S r   )Ú_pow_by_naturalrP   s     r"   Úpow_by_naturalzSymNode.pow_by_naturaln  s   € Ø×#Ñ# EÓ*Ð*r$   c                ó$   — | j                  |«      S r   )Ú_and_rP   s     r"   Úand_zSymNode.and_q  s   € Ø�z‰z˜%Ó Ð r$   c                ó$   — | j                  |«      S r   )Ú_or_rP   s     r"   Úor_zSymNode.or_t  r¡   r$   c                ó$   — | j                  |«      S r   )Ú_float_truedivrP   s     r"   Úfloat_truedivzSymNode.float_truedivw  s   € Ø×"Ñ" 5Ó)Ð)r$   c                ó$   — | j                  |«      S r   )Ú_int_truedivrP   s     r"   Úint_truedivzSymNode.int_truedivz  ó   € Ø× Ñ  Ó'Ð'r$   c                ó$   — | j                  |«      S r   )Ú_int_floordivrP   s     r"   Úint_floordivzSymNode.int_floordiv}  ó   € Ø×!Ñ! %Ó(Ð(r$   c                ó$   — | j                  |«      S r   )Ú_lshiftrP   s     r"   ÚlshiftzSymNode.lshift€  ó   € Ø�|‰|˜EÓ"Ð"r$   c                ó$   — | j                  |«      S r   )Ú_rshiftrP   s     r"   ÚrshiftzSymNode.rshiftƒ  rÅ   r$   c                ó"   — | j                  «       S r   )Ú_sym_notrU   s    r"   r   zSymNode.sym_not†  ó   € Ø�}‰}‹Ðr$   c                ó$   — | j                  |«      S r   )Ú_eqrP   s     r"   Úeqz
SymNode.eq‰  ó   € Ø�x‰x˜‹Ðr$   c                ó$   — | j                  |«      S r   )Ú_nerP   s     r"   Únez
SymNode.neŒ  rÏ   r$   c                ó$   — | j                  |«      S r   )Ú_gtrP   s     r"   Úgtz
SymNode.gt�  rÏ   r$   c                ó$   — | j                  |«      S r   )Ú_ltrP   s     r"   Últz
SymNode.lt’  rÏ   r$   c                ó$   — | j                  |«      S r   )Ú_lerP   s     r"   Úlez
SymNode.le•  rÏ   r$   c                ó$   — | j                  |«      S r   )Ú_gerP   s     r"   Úgez
SymNode.ge˜  rÏ   r$   c                ó"   — | j                  «       S r   )Ú_floorrU   s    r"   ÚfloorzSymNode.floor›  r�   r$   c                ó"   — | j                  «       S r   )Ú_is_integerrU   s    r"   Ú
is_integerzSymNode.is_integerž  s   € Ø×ÑÓ!Ð!r$   c                ó"   — | j                  «       S r   )Ú
_sym_floatrU   s    r"   r	   zSymNode.sym_float¡  s   € Ø�‰Ó Ð r$   c                ó"   — | j                  «       S r   )Ú_sym_intrU   s    r"   Úsym_intzSymNode.sym_int¤  rË   r$   c                ó"   — | j                  «       S r   )Ú_ceilrU   s    r"   ÚceilzSymNode.ceil§  s   € Ø�z‰z‹|Ðr$   c                ó"   — | j                  «       S r   )Ú_negrU   s    r"   ÚnegzSymNode.negª  r’   r$   c                ó$   — | j                  |«      S r   )Ú_sym_minrP   s     r"   r   zSymNode.sym_min­  ó   € Ø�}‰}˜UÓ#Ð#r$   c                ó$   — | j                  |«      S r   )Ú_sym_maxrP   s     r"   r   zSymNode.sym_max°  rò   r$   c                ó&   — | j                  ||«      S r   )Ú_sym_ite)r<   Úthen_valÚelse_vals      r"   r
   zSymNode.sym_ite³  s   € Ø�}‰}˜X xÓ0Ð0r$   c                ó&   — | j                  ||«      S r   )Ú_is_contiguous©r<   ÚsizesÚstridess      r"   Úis_contiguouszSymNode.is_contiguous¶  s   € Ø×"Ñ" 5¨'Ó2Ð2r$   c                ó&   — | j                  ||«      S r   )Ú_is_channels_last_contiguous_2drû   s      r"   Úis_channels_last_contiguous_2dz&SymNode.is_channels_last_contiguous_2d¹  ó   € ð ×3Ñ3°E¸7ÓCÐCr$   c                ó&   — | j                  ||«      S r   )Ú_is_channels_last_contiguous_3drû   s      r"   Úis_channels_last_contiguous_3dz&SymNode.is_channels_last_contiguous_3d¾  r  r$   c                ó&   — | j                  ||«      S r   )Ú_is_channels_last_strides_2drû   s      r"   Úis_channels_last_strides_2dz#SymNode.is_channels_last_strides_2dÃ  ó   € ð ×0Ñ0°¸Ó@Ð@r$   c                ó&   — | j                  ||«      S r   )Ú_is_channels_last_strides_3drû   s      r"   Úis_channels_last_strides_3dz#SymNode.is_channels_last_strides_3dÈ  r	  r$   c                ó&   — | j                  ||«      S r   )Ú'_is_non_overlapping_and_dense_indicatorrû   s      r"   Ú&is_non_overlapping_and_dense_indicatorz.SymNode.is_non_overlapping_and_dense_indicatorÍ  s   € ð ×;Ñ;¸EÀ7ÓKÐKr$   c                ó$   — | j                  |«      S r   )r¶   rP   s     r"   Úsym_orzSymNode.sym_orÓ  rÏ   r$   c                ó$   — | j                  |«      S r   )r³   rP   s     r"   Úsym_andzSymNode.sym_andÖ  r¡   r$   c                ó$   — | j                  |«      S r   )Ú_bitwise_andrP   s     r"   Úbitwise_andzSymNode.bitwise_andÚ  r½   r$   c                ó$   — | j                  |«      S r   )Ú_bitwise_orrP   s     r"   Ú
bitwise_orzSymNode.bitwise_orÝ  s   € Ø×Ñ Ó&Ð&r$   c                ó$   — | j                  |«      S r   )Ú_bitwise_xorrP   s     r"   Úbitwise_xorzSymNode.bitwise_xorà  r½   r$   c                ó$   — | j                  |«      S r   )r¹   rP   s     r"   ÚtruedivzSymNode.truedivä  rÁ   r$   c                ó$   — | j                  |«      S r   )rÀ   rP   s     r"   ÚfloordivzSymNode.floordivç  r½   r$   c                ó$   — | j                  |«      S r   )r­   rP   s     r"   ÚpowzSymNode.powë  s   € Ø�~‰~˜eÓ$Ð$r$   c                óX   — | j                  ||«      j                  t        | d«      «      S )Né   )r  rÎ   Úto_noderû   s      r"   Úis_non_overlapping_and_densez$SymNode.is_non_overlapping_and_denseî  s.   € ð ×:Ñ:¸5À'ÓJ×MÑMÜ�D˜!Óó
ð 	
r$   c                ó&   — | j                  dd«      S ©NÚ r   )Ú	guard_intrU   s    r"   Úint_zSymNode.int_õ  s   € Ø�~‰~˜b !Ó$Ð$r$   c           
     óT  — dd l }ddlm}m}  |«       r3t	        |  |t
        j                  t        d„ |D «       «      fi «      «      S |D �cg c]  }|j                  ‘Œ }} |j                  |Ž }g }t        }	|D ]+  }|j                  € n(|j                  |j                  «       Œ- t        |«      }	| j                  €t        d«      ‚| j                  j!                  t
        j                  t        d„ |D «       «      f«      \  }
}t#        || j                  t$        |	|
¬«      S c c}w )Nr   ©Úget_proxy_modeÚhandle_sym_dispatchc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr   )Ú	wrap_node©Ú.0Úas     r"   ú	<genexpr>z"SymNode.sym_sum.<locals>.<genexpr>
  s   è ø€ Ò6¨Aœ9 QŸ<Ñ6ùs   ‚z!shape_env is required for sym_sumc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr   ©rH   r2  s     r"   r5  z"SymNode.sym_sum.<locals>.<genexpr>  s   è ø€ Ò!:° !§)¥)Ñ!:ùs   ‚r7  )re   Ú"torch.fx.experimental.proxy_tensorr.  r/  r%  ÚtorchÚsym_sumÚtupler4   ÚAddr   r;   r‰   Úsumr5   r6   Ú_create_fx_call_functionr   r*   )r<   Úargsre   r.  r/  r4  ÚexprsÚoutÚ
size_hintsÚout_hintrH   Ú_s               r"   r:  zSymNode.sym_sumü  s  € Û÷	
ñ
 ÔÜØÙ#Ü—M‘MÜÑ6°Ô6Ó6Ð8Øóóð ð "&Ö&˜A�—“Ð&ˆÐ&Øˆe�i‰i˜Ðˆàˆ
Ü#ˆØò 	'ˆAØ�v‰vˆ~ÙØ×Ñ˜aŸf™fÕ%ð	'ô
 ˜:“ˆHà�>‰>Ð!ÜÐBÓCÐCØ—^‘^×<Ñ<Ü�M‰MœEÑ!:°TÔ!:Ó:Ð<ó
‰
ˆ�ô
 �s˜DŸN™N¬C°À7ÔKÐKùò' 's   ÁD%c                óh   — | j                   €t        d«      ‚| j                   j                  | |«      S )Nz!shape_env is required to evaluate)r5   r6   Úevaluate_sym_node)r<   Úsize_obliviouss     r"   ÚevaluatezSymNode.evaluate#  s/   € Ø�>‰>Ð!ÜÐBÓCÐCØ�~‰~×/Ñ/°°nÓEÐEr$   c                ó‚   — | j                  «       }	 t        |«      S # t        $ r t        j	                  d|«       ‚ w xY w)NzFailed to convert to int: %s)rH  r*   Ú	ExceptionÚlogÚwarning©r<   ÚfileÚlineÚrs       r"   r*  zSymNode.guard_int)  s>   € ð �M‰M‹Oˆð	Ü�q“6ˆMøÜò 	Ü�K‰KÐ6¸Ô:Øð	úó   ’
 �!>c                ó‚   — | j                  «       }	 t        |«      S # t        $ r t        j	                  d|«       ‚ w xY w)NzFailed to convert to float: %s)rH  r+   rJ  rK  rL  rM  s       r"   Úguard_floatzSymNode.guard_float3  s>   € ð �M‰M‹Oˆð	Ü˜“8ˆOøÜò 	Ü�K‰KÐ8¸!Ô<Øð	úrQ  c                ó‚   — | j                  «       }	 t        |«      S # t        $ r t        j	                  d|«       ‚ w xY w)NúFailed to convert to bool: %s©rH  r)   rJ  rK  rL  rM  s       r"   Ú
guard_boolzSymNode.guard_bool=  s>   € ð �M‰M‹Oˆð	Ü˜“7ˆNøÜò 	Ü�K‰KÐ7¸Ô;Øð	úrQ  c                ó>  — ddl m} | j                  €t        d«      ‚| j	                  «       r: || j
                  «      s(| j                  j                  s| j                  ||«      S | j                  j                  | j
                  |› d|› �| j                  ¬«      S )Nr   )Úfree_unbacked_symbolsz%shape_env is required for expect_trueú:r7  )
r3   rY  r5   r6   r`   r4   Ú+prefer_deferred_runtime_asserts_over_guardsrW  Úguard_or_defer_runtime_assertrH   )r<   rN  rO  rY  s       r"   Úexpect_truezSymNode.expect_trueG  sˆ   € ÝOà�>‰>Ð!ÜÐFÓGÐGà�M‰MŒOÙ)¨$¯)©)Ô4Ø—N‘N×NÒNð —?‘? 4¨Ó.Ð.ð
 �~‰~×;Ñ;Ø�I‰I˜$˜˜q  Ð'°·±ð <ó 
ð 	
r$   c                óf   — ddl m} | j                  «       st        d«      ‚ |t	        | «      «      S )Nr   )Ústatically_known_trueúExpected bool type)r3   r_  rr   rD   r   )r<   rN  rO  r_  s       r"   r_  zSymNode.statically_known_true[  s)   € ÝOà�|‰|Œ~Ü Ð!5Ó6Ð6Ù$¤W¨T£]Ó3Ð3r$   c                ó†   — | j                  d¬«      }	 t        |«      S # t        $ r t        j	                  d|«       ‚ w xY w)aN  
        Like guard_bool, but if we encounter unbacked symbols, if those symbols
        are size-like, we will treat them as >= 2 for the purposes of the analysis.

        This CHANGES the runtime semantics, but all size-oblivious sites have been
        audited to ensure that the runtime semantics don't change in a material way.
        Acceptable runtime semantic changes are, e.g., squeeze() no longer dropping
        an unbacked one size, or a tensor reporting as non-contiguous even if it's
        contiguous if it would have been reported contiguous due to being empty.
        T)rG  rU  rV  rM  s       r"   Úguard_size_obliviouszSymNode.guard_size_obliviousb  sC   € ð �M‰M¨ˆMÓ.ˆð	Ü˜“7ˆNøÜò 	Ü�K‰KÐ7¸Ô;Øð	ús	   ”
 Ÿ!A c                óf   — ddl m} | j                  «       st        d«      ‚ |t	        | «      «      S )Nr   )Úguard_or_falser`  )r3   rd  rr   rD   r   )r<   rN  rO  rd  s       r"   rd  zSymNode.guard_or_falsev  s)   € ÝHà�|‰|Œ~Ü Ð!5Ó6Ð6Ùœg d›mÓ,Ð,r$   c                óf   — ddl m} | j                  «       st        d«      ‚ |t	        | «      «      S )Nr   )Úguard_or_truer`  )r3   rf  rr   rD   r   )r<   rN  rO  rf  s       r"   rf  zSymNode.guard_or_true}  s)   € ÝGà�|‰|Œ~Ü Ð!5Ó6Ð6ÙœW T›]Ó+Ð+r$   c                ó&   — | j                  dd«      S r(  )rW  rU   s    r"   Úbool_zSymNode.bool_„  s   € Ø�‰˜r 1Ó%Ð%r$   c                 ó   — y)NTr   rU   s    r"   Úis_symboliczSymNode.is_symbolic‡  ó   € Ør$   c                 ó   — y r   r   rU   s    r"   Ú
nested_intzSymNode.nested_intŠ  rk  r$   c                 ó   — y)NFr   rU   s    r"   Úis_constantzSymNode.is_constant�  s   € Ør$   )NNF)r4   r   r5   zShapeEnv | Noner:   rC   r;   zHintType | objectrG   zint | float | bool | NonerH   r   rI   r)   r?   ÚNone)r5   r   r?   r   )rQ   r   r?   r)   )r?   r*   )r?   úsympy.Basicr>   )r?   r)   )r?   ú
int | None)r?   zfloat | None)r?   zbool | None)r{   r*   r?   r   )r{   r+   r?   r   )r{   r)   r?   r   )r?   r   )r?   úbuiltins.strr   )r˜   rr  r?   r   )rQ   r   r?   r   )r÷   r   rø   r   r?   r   )rü   úlist[SymNode]rý   rt  r?   r   )r?  rt  r?   r   )F)rG  r)   r?   zbool | int | float)rN  rs  rO  r*   r?   r*   )rN  rs  rO  r*   r?   r+   )rN  rs  rO  r*   r?   r)   )r?   rp  )\Ú__name__Ú
__module__Ú__qualname__Ú__doc__r-   Ú__annotations__rL   rN   rR   rV   Úpropertyr4   r;   r`   rb   rh   rl   rn   rp   rr   ru   r|   r~   r€   r‚   r„   r‡   rŒ   rŽ   r‘   r•   r™   rœ   r    r¤   r§   rª   r­   r°   r³   r¶   r¹   r¼   rÀ   rÄ   rÈ   r   rÎ   rÒ   rÕ   rØ   rÛ   rÞ   rá   rä   r	   ré   rì   rï   r   r   r
   rþ   r  r  r  r  r  r  r  r  r  r  r  r   r"  r&  r+  r:  rH  r*  rS  rW  r]  r_  rb  rd  rf  rh  rj  rm  ro  r   r$   r"   r   r   Y   sæ  … ñð "'Ð˜$Ó&ð /3ØØ$)ðW4àðW4ð #ðW4ð ð	W4ð
  ðW4ð ,ðW4ð ðW4ð "ðW4ð 
óW4ór
ó

óXð òó ðð$ òó ðó&óóóó"ó$ó#ó
ó
ó
ó
óóóó
$óóóô$óó ó ó ó ó&ó+ó!ó ó*ó(ó)ó#ó#óóóóóóóóó"ó!óóóó$ó$ó1ó3ðDØ"ðDØ-:ðDà	óDð
DØ"ðDØ-:ðDà	óDð
AØ"ðAØ-:ðAà	óAð
AØ"ðAØ-:ðAà	óAð
LØ"ðLØ-:ðLà	óLóó ó(ó'ó(ó)ó(ó%ð
Ø"ð
Ø-:ð
à	ó
ó%ó%LôNFóóóó
ó(4óó(-ó,ó&óóôr$   r   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )Ú_DynamicScalarc                óJ   •— | t         u rt        d«      ‚t        ‰| �  | g|¢­Ž S )Nz9_DynamicScalar is an abstract base class, use DynamicInt.)r|  Ú	TypeErrorÚsuperÚ__new__)Úclsr?  Ú	__class__s     €r"   r€  z_DynamicScalar.__new__’  s+   ø€ Ø”.Ñ ÜÐWÓXÐXÜ‰w‰˜sÐ* TÒ*Ð*r$   )r?  r   r?   r   )ru  rv  rw  r€  Ú__classcell__©r‚  s   @r"   r|  r|  ‘  s   ø„ ÷+ñ +r$   r|  c                  óT   ‡ — e Zd ZdZdˆ fd„Zd	d„Z	 	 	 	 d
d„Zd
d„Zdd„Zdd„Z	ˆ xZ
S )r   a  
    User API for marking dynamic integers in `torch.compile`.
    Intended to be compatible with both compile and eager mode.

    Example usage::

        fn = torch.compile(f)
        x = DynamicInt(4)
        fn(x)  # compiles x as a dynamic integer input; returns f(4)
    c                óˆ   •— t        |t        «      st        dt        |«      › �«      ‚t        ‰| �  | t        |«      «      }|S )Nrw   )r8   r*   rD   rC   r  r€  )r�  ÚvalÚobjr‚  s      €r"   r€  zDynamicInt.__new__¤  s=   ø€ Ü˜#œsÔ#Ü Ð#5´d¸3³i°[Ð!AÓBÐBÜ‰g‰o˜c¤3 s£8Ó,ˆØˆ
r$   c                ó"   — d| j                   › d�S )NzDynamicInt(r=   )ÚrealrU   s    r"   rŒ   zDynamicInt.__repr__ª  s   € Ø˜TŸY™Y˜K qÐ)Ð)r$   c                ó2   — t        | j                  |z  «      S r   ©r   rŠ  rP   s     r"   Ú__floordiv__zDynamicInt.__floordiv__­  s   € ô ˜$Ÿ)™) uÑ,Ó-Ð-r$   c                ó2   — t        || j                  z  «      S r   rŒ  rP   s     r"   Ú__rfloordiv__zDynamicInt.__rfloordiv__²  s   € Ü˜% 4§9¡9Ñ,Ó-Ð-r$   c                óŽ   — |�t        | j                  ||«      }n| j                  |z  }t        |t        «      rt	        |«      S |S r   ©r"  rŠ  r8   r*   r   ©r<   rQ   Úmodulor\   s       r"   Ú__pow__zDynamicInt.__pow__µ  sD   € ØÐÜ˜Ÿ™ E¨6Ó2‰Fà—Y‘Y Ñ%ˆFô �fœcÔ"Ü˜fÓ%Ð%Øˆr$   c                óŽ   — |�t        || j                  |«      }n|| j                  z  }t        |t        «      rt	        |«      S |S r   r‘  r’  s       r"   Ú__rpow__zDynamicInt.__rpow__À  sB   € ØÐÜ˜ §	¡	¨6Ó2‰Fà˜DŸI™IÑ%ˆFä�fœcÔ"Ü˜fÓ%Ð%Øˆr$   )r‡  r*   r?   r   )r?   r„   )rQ   r*   r?   r   r   )ru  rv  rw  rx  r€  rŒ   r�  r�  r”  r–  rƒ  r„  s   @r"   r   r   ˜  s6   ø„ ñ	õó*ð.Øð.à	ó.ó
.ó	÷r$   r   r•   r‘   r    Úandr  rì   rÎ   rá   rœ   rÀ   rÞ   rÕ   rä   c                ó"   — | j                  «       S r   )rä   ©Úxs    r"   ú<lambda>r›  Ù  s   € ˜AŸL™L›N€ r$   rÛ   rÄ   rØ   rª   r§   rÒ   rï   Úorr  r  r­   r°   r™   rÈ   r¤   r	   r
   r   r   r   r¹   r¼   >	   r‘   rï   r•   rì   rá   rœ   ré   r   r	   c                ó   ‡ — dˆ fd„}|S )Nc                ó,   •—  t        | d‰› �«      «       S )NÚ_sym_)Úgetattr)r<   Únames    €r"   Úfnz_get_sym_node_fn.<locals>.fn  s   ø€ Ø,Œw�t˜u T F˜^Ó,Ó.Ð.r$   ©r<   r   r?   r   r   ©r¡  r¢  s   ` r"   Ú_get_sym_node_fnr¥     s   ø€ õ/ð €Ir$   )ÚsqrtÚcosÚcoshÚsinÚsinhÚtanÚtanhÚasinÚacosÚatanÚlog2Úsym_rD  >   rœ  r—  r
   r   >   r    r§   r¤   >   r™   ré   Úsym_log2rä   Úxor)r  r  r  >   r­   r	   r¼   r¹   >   rì   rá   rœ   r°   >   rÎ   rÞ   rÕ   rÛ   rØ   rÒ   rœ  r—  r   rä   r&  c                ó    — ddl m}  || |«      S )Nr   )ÚFloatTrueDiv)Útorch.utils._sympy.functionsrµ  )r4  Úbrµ  s      r"   Ú_sympy_float_truedivr¸  P  ó   € Ý9á˜˜1ÓÐr$   c                ó    — ddl m}  || |«      S )Nr   )Ú
IntTrueDiv)r¶  r»  )r4  r·  r»  s      r"   Ú_sympy_int_truedivr¼  V  s   € Ý7á�a˜ÓÐr$   c                ó    — ddl m}  || |«      S )Nr   )ÚFloorDiv)r¶  r¾  )r4  r·  r¾  s      r"   Ú_sympy_floordivr¿  \  ó   € Ý5á�A�q‹>Ðr$   c                óf   — ddl m}m} | j                  r|j                  r	 || |«      S  || |«      S )Nr   ©ÚModÚ	PythonMod)r¶  rÃ  rÄ  Úis_nonnegative)r4  r·  rÃ  rÄ  s       r"   Ú
_sympy_modrÆ  b  s.   € ß;à×Ò˜A×,Ò,Ù�1�a‹yÐá˜˜A‹Ðr$   c                ó    — ddl m}  || |«      S )Nr   )ÚPowByNatural)r¶  rÈ  )r4  r·  rÈ  s      r"   Ú_sympy_pow_by_naturalrÉ  k  r¹  r$   c                ó    — ddl m}  || |«      S )Nr   )ÚFloatPow)r¶  rË  )r4  r·  rË  s      r"   Ú_sympy_float_powrÌ  q  rÀ  r$   c                ó0   — dd l } |j                  | |«      S rd   )re   ÚAnd©r4  r·  re   s      r"   Ú
_sympy_andrÐ  w  s   € Ûàˆ5�9‰9�Q˜‹?Ðr$   c                ó0   — dd l } |j                  | |«      S rd   )re   ÚOrrÏ  s      r"   Ú	_sympy_orrÓ  }  ó   € Ûàˆ5�8‰8�A�q‹>Ðr$   c                ó    — ddl m}  || |«      S )Nr   )ÚLShift)r¶  rÖ  )r4  r·  rÖ  s      r"   Ú_sympy_lshiftr×  ƒ  ó   € Ý3á�!�Q‹<Ðr$   c                ó    — ddl m}  || |«      S )Nr   )ÚRShift)r¶  rÚ  )r4  r·  rÚ  s      r"   Ú_sympy_rshiftrÛ  ‰  rØ  r$   c                ó`  — t        | «      dk(  r|gS ddlm}m}  || d   «       ||«      k  r| |gz   S  || d   «       ||«      kD  r|g| z   S dt        | «      dz
  }}||k  r9||z   dz  }|j	                  | |   |«      }|dk(  ry|dk  r|dz   }n|dz
  }||k  rŒ9| j                  ||«       | S )zs
    If new_arg is found in ordered_args None is returned, else the new
    ordered_args with new_arg inserted
    r   )Ú_args_sortkeyÚBasicr/   r$  é   N)ÚlenÚsympy.core.basicrÝ  rÞ  ÚcompareÚinsert)Úordered_argsÚnew_argÚsort_keyrÞ  ÚlowÚhighÚmidÚcompare_results           r"   Ú_binary_search_insert_argrë  �  sê   € ô ˆ<Ó˜AÒØˆyÐçAñ �˜RÑ Ó!¡H¨WÓ$5Ò5Ø˜w˜iÑ'Ð'ñ �˜Q‘Ó ¡8¨GÓ#4Ò4Øˆy˜<Ñ'Ð'à”3�|Ó$ qÑ(ˆ€Cà
�Š+Ø�T‰z˜aÑˆØŸ™ |°CÑ'8¸'ÓBˆØ˜QÒØØ˜aÒØ˜‘'‰Cà˜‘7ˆDð �‹+ð ×Ñ˜˜WÔ%ØÐr$   c                ó†  ‡
— ddl Š
ddlm} dˆ
fd„}ddlm} | || «      z  }| ||«      z  }|�r|�r || j
                  d   «       ||j
                  d   «      k  r || j
                  |j
                  z   «      S  || j
                  d   «       ||j
                  d   «      kD  r ||j
                  | j
                  z   «      S t        | j
                  «      dk  rXt        |j
                  «      dk  r@t        | j
                  «      }|j
                  D ]  }t        ||«      }|�Œ n |� ||«      S |r5|j                  r)t        t        | j
                  «      |«      }|� ||«      S |r5| j                  r)t        t        |j
                  «      | «      }|� ||«      S  ‰
j                  | |«      }	 ||	«      |	fS )	a÷  
    Custom optimization for Add used to optimize incremental binary summations of certain properties. The idea
    is when we know the expression is a summation of unique symbols all we need to know is the correct order of symbols,
    and no other optimizations are needed. We pass evaluate=false, with the correct order of args and save the following.
    1. Avoid running other optimizations when the Add is constructed.
    2. Manually figure out the order of the args for the new expression in log(n) comparisons instead of nLog(n)
    (comparing terms is expensive and shows in the profiles).
    The function returns a tuple of (1) a boolean that indicates whether the output is a summation of unique symbols,
    (2) the result sympy expression.
    r   N)rÝ  c                ó`   •— | €t        d«      ‚‰j                  j                  | d¬«      }d|fS )Nzordered_args is NoneT)Úis_commutative)rD   r<  Ú
_from_args)rä  r\   re   s     €r"   Úmake_optimizedz&_optimized_add.<locals>.make_optimizedÆ  s:   ø€ ØÐÜ Ð!7Ó8Ð8ð
 —‘×%Ñ% lÀ4Ð%ÓHˆØ�fˆ~Ðr$   )Ú_is_symbols_binary_summationr/   rß  )rä  úlist[sympy.Basic]r?   útuple[bool, sympy.Basic])re   rá  rÝ  r¶  rñ  Ú_argsrà  Úlistrë  Ú	is_symbolr<  )ÚlhsÚrhsÚlhs_is_optimized_summationÚrhs_is_optimized_summationÚsortkeyrð  rñ  Únew_argsr4  r\   re   s             @r"   Ú_optimized_addrý  ³  s�  ø€ ó  Ý9õõ JàÑ">¸sÓ"CÑCÐØÑ">¸sÓ"CÑCÐâ!Ò&@á�3—9‘9˜R‘=Ó!¡G¨C¯I©I°a©LÓ$9Ò9Ù! #§)¡)¨c¯i©iÑ"7Ó8Ð8á�3—9‘9˜Q‘<Ó ¡7¨3¯9©9°R©=Ó#9Ò9Ù! #§)¡)¨c¯i©iÑ"7Ó8Ð8ô ˆs�y‰y‹>˜QÒ¤3 s§y¡y£>°QÒ#6Ü˜CŸI™I“ˆHØ—Y‘Yò �Ü4°X¸qÓA�ØÑ#Ùðð
 Ð#Ù% hÓ/Ð/ñ " c§m¢mÜ,¬T°#·)±)«_¸cÓBˆàÐÙ! (Ó+Ð+ñ " c§m¢mÜ,¬T°#·)±)«_¸cÓBˆàÐÙ! (Ó+Ð+àˆU�Y‰Y�s˜CÓ €FÙ(¨Ó0°&Ð9Ð9r$   c                ó    — ddl m}  || |«      S )Nr   )ÚBitwiseFn_bitwise_and)r¶  rÿ  )r4  r·  rÿ  s      r"   r  r  ú  ó   € ÝBá   AÓ&Ð&r$   c                ó    — ddl m}  || |«      S )Nr   )ÚBitwiseFn_bitwise_or)r¶  r  )r4  r·  r  s      r"   r  r     s   € ÝAá  1Ó%Ð%r$   c                ó    — ddl m}  || |«      S )Nr   )ÚBitwiseFn_bitwise_xor)r¶  r  )r4  r·  r  s      r"   r  r    r   r$   c                óº  — dd l }t        | |j                  «      rg| j                  }t	        |«      dk(  rMt        |d   |j
                  «      r4|d   j                  r% |j                  |d   «      }|d   |k(  r||d   z  S t        | |j
                  «      r|  |j                  | «      k(  st        | |j                  «      r |j                  | «      S  || «      S )Nr   rß  r$  )re   r8   ÚMulr?  rà  rf   rä   ry   )r4  r¢  re   ÚaaÚcoefs        r"   Ú_floor_ceil_helperr	     sº   € Ûä�!�U—Y‘YÔØ�V‰VˆÜˆr‹7�aŠ<œJ r¨!¡u¨e¯k©kÔ:¸rÀ!¹u×?OÒ?OØ �5—=‘=  A¡Ó'ˆDØ�!‰u˜Š}Ø˜b ™e‘|Ð#ä�1�e—k‘kÔ"Ø��—‘˜qÓ!Ò!Ü�a˜Ÿ™Ô'àˆu�}‰}˜QÓÐÙˆa‹5€Lr$   c                ó   — ddl m}  || «      S )Nr   )Ú
FloorToInt)r¶  r  )r4  r  s     r"   Ú_sympy_floorr  2  ó   € Ý7á�a‹=Ðr$   c                ó   — ddl m}  || «      S )Nr   )Ú
TruncToInt)r¶  r  )r4  r  s     r"   Ú_sympy_truncr  :  r  r$   c                ó   — ddl m}  || «      S )Nr   )Ú	CeilToInt)r¶  r  )r4  r  s     r"   Ú_sympy_ceilr  @  s   € Ý6á�Q‹<Ðr$   c                ó0   — dd l } |j                  | |«      S rd   )re   ÚEqrÏ  s      r"   Ú	_sympy_eqr  F  rÔ  r$   c                ó0   — dd l } |j                  | |«      S rd   )re   ÚNerÏ  s      r"   Ú	_sympy_ner  L  rÔ  r$   c                ó0   — dd l } |j                  | |«      S rd   )re   ÚGtrÏ  s      r"   Ú	_sympy_gtr  R  rÔ  r$   c                ó0   — dd l } |j                  | |«      S rd   )re   ÚLtrÏ  s      r"   Ú	_sympy_ltr  X  rÔ  r$   c                ó0   — dd l } |j                  | |«      S rd   )re   ÚLerÏ  s      r"   Ú	_sympy_ler"  ^  rÔ  r$   c                ó0   — dd l } |j                  | |«      S rd   )re   ÚGerÏ  s      r"   Ú	_sympy_ger%  d  rÔ  r$   c                ó    — ddl m}  || |«      S )Nr   )ÚMin)r¶  r'  )r4  r·  r'  s      r"   Ú
_sympy_minr(  j  ó   € Ý0áˆq�!‹9Ðr$   c                ó    — ddl m}  || |«      S )Nr   ©ÚMax)r¶  r,  )r4  r·  r,  s      r"   Ú
_sympy_maxr-  p  r)  r$   c                ó8   — dd l } |j                  || f|df«      S )Nr   T)re   Ú	Piecewise)r4  r!   Úfre   s       r"   Ú
_sympy_iter1  v  s    € Ûàˆ5�?‰?˜A˜q˜6 A t 9Ó-Ð-r$   c                ó   ‡ — dˆ fd„}|S )Nc                ór   •— dd l } t        |j                  j                  j                  d‰› �«      | «      S )Nr   ÚOpaqueUnaryFn_)r¶  r   ÚutilsÚ_sympyÚ	functions)r4  r9  r¡  s     €r"   r¢  z_get_sym_math_fn.<locals>.fn€  s1   ø€ Û+àMŒw�u—{‘{×)Ñ)×3Ñ3°~ÀdÀVÐ5LÓMÈaÓPÐPr$   ©r4  rq  r?   rq  r   r¤  s   ` r"   Ú_get_sym_math_fnr9    s   ø€ õQð
 €Ir$   Ú_sympy_c                ó.   — dd l } |j                  | «      S rd   )re   ÚAbs)r4  re   s     r"   Ú
_sympy_absr=  ‘  s   € Ûàˆ5�9‰9�Q‹<Ðr$   c                ó8   — ddl m}m} |€ || «      S  || |«      S )Nr   )ÚRoundDecimalÚ
RoundToInt)r¶  r?  r@  )Únumberr˜   r?  r@  s       r"   Ú_sympy_roundrB  —  s%   € ÷ Fà€Ù˜&Ó!Ð!á˜F GÓ,Ð,r$   c                ó   — ddl m}  || «      S ©Nr   )ÚToFloat)r¶  rE  )r4  rE  s     r"   Ú_sympy_sym_floatrF  ¢  s   € Ý4ñ �1‹:Ðr$   c                óh   — dd l }ddlm}  |j                   | |j                  | «      «      | «      S rD  )re   r¶  rE  r  rá   )r4  re   rE  s      r"   Ú_sympy_is_integerrH  ª  s*   € Ûå4àˆ5�8‰8‘G˜K˜EŸK™K¨›NÓ+¨QÓ/Ð/r$   )r™   rä   c                ó`   — t        | «      }t        | |t        t        |dz
  dd«      «      «      S )Nr$  r/   )rà  Úsympy_is_contiguous_genericrõ  Úrange)rü   rý   Údims      r"   Úsympy_is_contiguousrM  Ñ  s.   € ô ˆe‹*€CÜ& u¨g´t¼EÀ#ÈÁ'È2ÈrÓ<RÓ7SÓTÐTr$   c                ó¼  — dd l }t        | «      }t        |«      |k7  r|j                  S |j                  }|j                  j
                  }|D ]N  }| |j                  | |   |j                  j
                  «       |j                  ||   |«      z  z  }|| |   z  }ŒP t        |«      D ]/  }| |j                  | |   |j                  j                  «      z  }Œ1 |S rd   )	re   rà  rk   rj   ÚSÚOner  rK  ÚZero)rü   rý   Ú	dim_orderre   rL  rþ   ÚzÚds           r"   rJ  rJ  Ø  sÐ   € ó ä
ˆe‹*€Cä
ˆ9ƒ~˜ÒØ�{‰{Ðà—J‘J€MØ�‰�‰€Aàò ˆØ˜˜Ÿ™ %¨¡(¨E¯G©G¯K©KÓ8¸8¸5¿8¹8ÀGÈAÁJÐPQÓ;RÑRÑRˆØ	ˆU�1‰X‰‰ðô �3‹Zò :ˆØ˜˜Ÿ™ %¨¡(¨E¯G©G¯L©LÓ9Ñ9‰ð:àÐr$   c                ó    — t        | |g d¢«      S ©N)r$  é   rß  r   ©rJ  ©rü   rý   s     r"   Ú$sympy_is_channels_last_contiguous_2drZ  ò  s   € ô ' u¨g²|ÓDÐDr$   c                ó    — t        | |g d¢«      S ©N)r$  é   rW  rß  r   rX  rY  s     r"   Ú$sympy_is_channels_last_contiguous_3dr^  ø  s   € ô ' u¨g²ÓGÐGr$   c                óŒ  — dd l }ddlm} t        | «      }|t        |«      k7  r|j                  S |j
                  j                  }|j                  }| |j                  |d   d«      z  }|D ]T  }| |j                  | |   d«      ||   |k\  z  z  }|dk(  r| |j                  ||d   «      z  }||    || |   d«      z  }ŒV |S )Nr   r+  r$  )	re   r¶  r,  rà  rk   rO  rQ  rj   r  )	rü   rý   rR  re   r,  rL  ÚmrP  rT  s	            r"   Ú&sympy_is_channels_last_strides_genericra  þ  sÙ   € ó å0ä
ˆe‹*€Cà
Œc�)‹nÒØ�{‰{Ðà�‰�‰€AØ�
‰
€Að ˆˆ�‰�'˜!‘*˜aÓ	 Ñ €Aàò *ˆØ	ˆXˆU�X‰X�e˜A‘h Ó" g¨a¡j°A¡oÑ6Ñ6ˆð �Š6Ø��—‘˜!˜W Q™ZÓ(Ñ(ˆAð �A‰J™˜U 1™X qÓ)Ñ)‰ð'*ð* €Hr$   c                ó    — t        | |g d¢«      S rV  ©ra  rY  s     r"   Ú!sympy_is_channels_last_strides_2drd  (  s   € ô 2°%¸Â,ÓOÐOr$   c                ó    — t        | |g d¢«      S r\  rc  rY  s     r"   Ú!sympy_is_channels_last_strides_3drf  .  s   € ô 2°%¸Â/ÓRÐRr$   c                ó"   — ddl m}  |g | ¢|¢­Ž S )Nr   )Ú!IsNonOverlappingAndDenseIndicator)r¶  rh  )rü   rý   rh  s      r"   Ú-_sympy_is_non_overlapping_and_dense_indicatorri  4  s   € õ Oá,Ð>¨eÐ>°gÒ>Ð>r$   )rþ   r  r  r  r  r  c                ó  — t        |t        «      r|j                  S t        |«      t        u r| j                  |«      S t        |«      t        u r| j                  |«      S t        |«      t        u r| j                  |«      S t        S r   )r8   r9   rt   rC   r)   r€   r*   r|   r+   r~   ÚNotImplemented)r<   r{   s     r"   r%  r%  H  sn   € Ü�#”xÔ Ø�x‰xˆÜ	ˆc‹”dÑ	Ø�~‰~˜cÓ"Ð"Ü	ˆc‹”cÑ	Ø�}‰}˜SÓ!Ð!Ü	ˆc‹”eÑ	Ø�‰˜sÓ#Ð#ô Ðr$   c                ó  — t        | t        «      r| j                  �| j                  S | j                  «       rt	        | «      S | j                  «       rt        | «      S | j                  «       rt        | «      S t        d| › �«      ‚)Nzunrecognized return type )
r8   r   rG   rn   r   rp   r   rr   r   rD   r™  s    r"   r1  r1  W  sk   € ä�!”WÔ !§*¡*Ð"8Ø�z‰zÐØ‡x�x„zÜ�a‹yÐØ	
�‰ŒÜ˜‹{ÐØ	
�‰ŒÜ�q‹zÐäÐ8¸¸Ð<Ó=Ð=r$   c                ó   — t         |    S r   )ÚMETHOD_TO_OPERATOR)Úmethods    r"   r   r   e  s   € Ü˜fÑ%Ð%r$   c                ó†  ‡ ‡—  t        d«      ‰«      Š‰ t        v r‰ › d�}n‰ }dd„}dˆ fd„}|dˆˆ fd„«       }|dˆˆ fd„«       }‰ t        v rt        t        d|› �|«       y ‰ dk(  r$	 	 	 	 	 	 	 	 dˆˆ fd„}t        t        d|› �|«       y ‰ d	k(  rddˆˆ fd
„}t        t        d|› �|«       y t        t        d|› �|«       y )Né   rD  c                 óL  — dd l } | j                  j                  | j                  j                  | j                  j
                  j                  | g}dd l} |D �ch c]  }t        j                  |«      ’Œ c}| j                  j                  j                  «       z  dhz  S c c}w )Nr   z<string>)r9  Ú_dynamoÚ
eval_framer5  ÚfxÚexperimentalr   Útorch._dynamo.guardsÚinspectÚgetfileÚguardsÚuninteresting_files)r9  Úmodsr`  s      r"   r{  z-_make_node_magic.<locals>.uninteresting_filesq  s‰   € Ûð �M‰M×$Ñ$Ø�M‰M×ÑØ�H‰H×!Ñ!×*Ñ*Øð	
ˆó 	$ð *.Ö. AŒW�_‰_˜QÕÒ.Ø�m‰m×"Ñ"×6Ñ6Ó8ñ9àˆlñð	
ùÚ.s   ÁB!c                óJ   •‡ — t        j                  ‰ «      ddˆ ˆfd„«       }|S )Nc                óÄ   •‡‡‡— |€	 ‰| «      Šn	 ‰| |«      Št         j                  j                  j                  r#|�| |gŠn| gŠdˆfd„Št	        dˆˆˆˆfd„¬«       ‰S )Nc                ó  •— dd l }| j                  �y t        | «      t        ‰«      k(  ry t        | j                  |j
                  |j                  f«      ry | j                  |j                  |j                  fv ry t        | «      S rd   )	re   rG   Úidr8   r4   ry   rf   rj   rk   )r   re   r\   s     €r"   Úget_idzM_make_node_magic.<locals>.capture_provenance.<locals>.wrapper.<locals>.get_id�  sl   ø€ ã à×(Ñ(Ð4Ø#Ü˜H›¬¨F«Ò3Ø#Ü# H§M¡M°E·M±MÀ5Ç;Á;Ð3OÔPØ#Ø!Ÿ™¨5¯:©:°u·{±{Ð*CÑCØ#Ü˜h›<Ð'r$   Úexpression_createdc            
     ó  •— ‰t        ‰«      t        ‰«      ‰D � cg c]  } t        | «      ‘Œ c} ‰D �cg c]  } ‰|«      €Œ ‰|«      ‘Œ c}t        j                  d«      t        j                  d«      dœS c c} w c c}w )NrW  )ro  r\   Ú	result_idÚ	argumentsÚargument_idsÚ
user_stackÚstack)r„   r€  Ú
structuredÚget_user_stackÚget_framework_stack)r4  Úir…  r�  ro  r\   s     €€€€r"   r›  zO_make_node_magic.<locals>.capture_provenance.<locals>.wrapper.<locals>.<lambda>Ÿ  sv   ø€ Ø"(Ü"% f£+Ü%'¨£ZØ6?Ö%@°¤c¨!¥fÒ%@à/8ö)Ø*+¹FÀ1»IÑ<Q™F 1�Iò)ô '1×&?Ñ&?ÀÓ&BÜ!+×!?Ñ!?ÀÓ!Bñ
)€ ùò &Aùò)s   ›A8
³A=Á
A=)Úmetadata_fn)r   r   r?   rr  )r9  Ú_loggingÚ	_internalÚGET_DTRACE_STRUCTUREDr   )r<   rQ   r…  r�  r\   r¢  ro  s     @@@€€r"   Úwrapperz=_make_node_magic.<locals>.capture_provenance.<locals>.wrapperƒ  sc   û€ àˆ}Ù˜D›‘á˜D %›�Ü�~‰~×'Ñ'×=Ò=ØÐ$Ø!% u ‘Ià!% �Iõ(ô "Ø(ö
!õð ˆMr$   r   )r<   r   rQ   zSymNode | Noner?   r   )Ú	functoolsÚwraps)r¢  r‘  ro  s   ` €r"   Úcapture_provenancez,_make_node_magic.<locals>.capture_provenance‚  s&   ù€ Ü	�‰˜Ó	ö(	ó 
ð(	ðT ˆr$   c           
     óÀ  •— ddl m}m} t        ‰«      }t        }| j
                  �)|j
                  � || j
                  |j
                  «      } |«       r(t        |  ||t        | «      t        |«      fi «      «      S t        |t        «      st        dt        |«      › �«      ‚d}	 ‰dk(  rÛddlm}m} | j                  }	|	€t        d«      ‚| j                   j"                  s(|	j%                  | j                   «      j&                  dk\  r]|j                   j"                  s(|	j%                  |j                   «      j&                  dk\  r || j                   |j                   «      }
�n­ || j                   |j                   «      }
�nŽ‰dk(  r;t)        | j                   |j                   | j*                  |j*                  «      \  }}
�nN‰d	v �r,dd l}dd
lm}m} | j                   j4                  xr  || j                   |j6                  «      }|j                   j4                  xr  ||j                   |j6                  «      }|r|j                   j8                  s|r~| j                   j8                  rh|j:                  |j<                  |j>                  |j@                  |jB                  |jD                  d	œ‰   } || j                   |j                   d¬«      }
n; ‰| j                   |j                   «      }
n ‰| j                   |j                   «      }
tL        jO                  d‰| j                   |j                   |
«       ‰tP        v rtR        }nF‰tT        v rtV        }n7| jX                  tR        u s|jX                  tR        u rtR        }n| jX                  }|�"|t        ur|�t        |tZ        «      s ||«      }| j                  €t]        d«      ‚| j                  j_                  || j`                  |j`                  f«      \  }}t        |
| j                  ||||¬«      }|S # tF        $ r. tH        jK                  d‰| j                   |j                   «       ‚ w xY w)Nr   r-  zExpected SymNode, got Frª   rÂ  zshape_env is required for modr    )rÎ   rÒ   rÞ   rÕ   rÛ   rØ   )Úsymbol_is_typeÚSymT)rH  úfailed to eval %s(%s, %s)z%s %s %s -> %sz#shape_env is required for binary op)rH   rI   )1r8  r.  r/  r   r   r;   r%  r1  r8   r   rD   rC   r¶  rÃ  rÄ  r5   r4   rÅ  Úbound_sympyÚlowerrý  r-   re   Útorch.utils._sympy.symbolr–  r—  rö  ÚUNBACKED_INTrX   r  r  r$  r  r!  r  rJ  rK  rL  Úsym_node_logÚdebugÚalways_float_magic_methodsr+   Úalways_bool_magic_methodsr)   r:   r9   r6   r>  rH   )r<   rQ   r.  r/  ÚoprC  rI   rÃ  rÄ  r5   rA  re   r–  r—  Úlhs_is_unbackedÚrhs_is_unbackedÚ	rel_classr:   rH   rD  r\   Úfuncro  s                        €€r"   Úbinary_magic_implz+_make_node_magic.<locals>.binary_magic_impl°  sª  ø€ ÷	
ô
   Ó'ˆä#ˆØ�9‰9Ð  U§Z¡ZÐ%;Ù˜$Ÿ)™) U§Z¡ZÓ0ˆHáÔÜØÑ)¨"¬y¸«Ä	È%Ó@PÐ.QÐSUÓVóð ô ˜%¤Ô)Ü Ð#9¼$¸u»+¸Ð!GÓHÐHØ#Ðð?	Ø˜ŠßGð !ŸN™N�	ØÐ$Ü(Ð)HÓIÐIà—I‘I×,Ò,Ø ×,Ñ,¨T¯Y©YÓ7×=Ñ=ÀÒBà—J‘J×-Ò-Ø ×,Ñ,¨U¯Z©ZÓ8×>Ñ>À!ÒCá˜dŸi™i¨¯©Ó4’Cá# D§I¡I¨u¯z©zÓ:’CØ˜5’ä-;Ø—I‘IØ—J‘JØ×-Ñ-Ø×.Ñ.ó	.Ñ*Ð$¢cð Ð?Ò?ÛçJð #'§)¡)×"5Ñ"5ò #¹.Ø—I‘I˜t×0Ñ0ó;�ð #(§*¡*×"6Ñ"6ò #¹>Ø—J‘J × 1Ñ 1ó<�ñ $¨¯
©
×(<Ò(<Ù#¨¯	©	×(;Ò(;ð $Ÿh™hØ#Ÿh™hØ#Ÿh™hØ#Ÿh™hØ#Ÿh™hØ#Ÿh™hñ!ð ñ!�Iñ $ D§I¡I¨u¯z©zÀEÔJ‘Cá˜tŸy™y¨%¯*©*Ó5‘Cñ ˜4Ÿ9™9 e§j¡jÓ1�ô 	×ÑÐ+¨V°T·Y±YÀÇ
Á
ÈCÔPð Ô/Ñ/Ü‰FØÔ0Ñ0Ü‰FØ�[‰[œEÑ! U§\¡\´UÑ%:Ü‰Fà—[‘[ˆFð ÐØ¤Ñ(ØÐ$Ü˜x¬Ô2á˜hÓ'ˆHð �>‰>Ð!ÜÐDÓEÐEØ—^‘^×<Ñ<Ø�—‘˜uŸ}™}Ð-ó
‰
ˆ�ô ØØ�N‰NØØØØ 3ô
ˆð ˆøô[ ò 	Ü�K‰KÐ3°V¸T¿Y¹YÈÏ
É
ÔSØð	ús   Â)I.P& Ð&7Qc           	     óÒ  •— ddl m}m} t        ‰«      } |«       rt	        |  ||t        | «      fi «      «      S | j                  }| j                  €t        d«      ‚‰dk(  s‰dk(  r| j                  j                  |«      }	  ‰
|«      }t        j                  d‰
||«       t        }| j                   � || j                   «      }‰t"        v rt$        }n*‰t&        v rt(        }n‰t*        v rt,        }n| j.                  }| j                  j1                  || j2                  f«      \  }}	t5        || j                  |||¬«      S # t        $ r t        j                  d‰|«       ‚ w xY w)	Nr   r-  z"shape_env is required for unary oprá   Úceilingzfailed to eval %s(%s)z%s %s -> %sr7  )r8  r.  r/  r   r%  r1  r4   r5   r6   Ú_simplify_floor_divrJ  rK  rL  r�  rž  r   r;   Úalways_int_magic_methodsr*   r   r)   rŸ  r+   r:   r>  rH   r   )r<   r.  r/  r¡  r4   rA  rC  r:   rH   rD  r¥  ro  s             €€r"   Úunary_magic_implz*_make_node_magic.<locals>.unary_magic_impl0  sI  ø€ ÷	
ô
   Ó'ˆÙÔÜ˜4Ñ!4°R¼)ÀD»/Ð9KÈRÓ!PÓQÐQà�y‰yˆØ�>‰>Ð!ÜÐCÓDÐDØ�WÒ ¨)Ò 3Ø—>‘>×5Ñ5°dÓ;ˆDð	Ù�t“*ˆCô 	×Ñ˜=¨$°°cÔ:Ü#ˆØ�9‰9Ð Ù˜$Ÿ)™)“}ˆHàÔ-Ñ-Ü‰FØÔ0Ñ0Ü‰FØÔ1Ñ1Ü‰Fà—[‘[ˆFà—^‘^×<Ñ<¸RÀ$Ç,Á,ÀÓQ‰
ˆ�Ü�s˜DŸN™N¨F°HÀgÔNÐNøô% ò 	Ü�K‰KÐ/°¸Ô>Øð	ús   ÂE Å"E&r
   c                óÐ  •— ddl m}m} | j                  €d }n%| j                  r|j                  }n|j                  } |«       r6t	        |  |t
        t        | «      t        |«      t        |«      fi «      «      S 	  ‰	| j                  |j                  |j                  «      }| j                  €t        d«      ‚| j                  j                  t
        | j                  |j                  |j                  f«      \  }}t        || j                  |j                   ||¬«      S # t        $ r9 t        j                  d‰
| j                  |j                  |j                  «       ‚ w xY w)Nr   r-  zfailed to eval %s(%s, %s, %s)z!shape_env is required for sym_iter7  )r8  r.  r/  r;   r%  r
   r1  r4   rJ  rK  rL  r5   r6   r>  rH   r   r:   )Ú	pred_nodeÚ	then_nodeÚ	else_noder.  r/  rC  rA  rH   rD  r¥  ro  s            €€r"   Úsym_ite_implz&_make_node_magic.<locals>.sym_ite_impl[  sI  ø€ ÷ð
 �~‰~Ð%Ø‘Ø—’Ø$Ÿ>™>‘à$Ÿ>™>�ÙÔÜØÙ'Üä% iÓ0Ü% iÓ0Ü% iÓ0ðð
 óóð ð
Ù˜9Ÿ>™>¨9¯>©>¸9¿>¹>ÓJ�ð ×"Ñ"Ð*Ü"Ð#FÓGÐGØ"×,Ñ,×EÑEÜ˜)×+Ñ+¨Y×->Ñ->À	×@QÑ@QÐRó‰JˆG�Qô Ø�Y×(Ñ(¨)×*:Ñ*:¸HÈgôð øô ò Ü—‘Ø3ØØ—N‘NØ—N‘NØ—N‘Nôð ðús   Á<(D# Ä#AE%r™   c           	     óV  •— ddl m}m} t        j                  } |«       rt        |  ||t        | «      |fi «      «      S | j                  }	  ‰||«      }|€t        }n| j                  }d }| j                  � || j                  |«      }| j                  g}	|�|	j                  |«       | j                   €t#        d«      ‚| j                   j%                  |t'        |	«      «      \  }
}t)        || j                   |||
¬«      S # t        $ r t        j                  d‰||«       ‚ w xY w)Nr   r-  z!failed to eval %s(%s, ndigits=%s)zshape_env is required for roundr7  )r8  r.  r/  Úbuiltinsr™   r%  r1  r4   rJ  rK  rL  r*   r:   r;   rH   r‰   r5   r6   r>  r;  r   )r<   r˜   r.  r/  r¡  r4   rA  r:   rC  r?  rH   rD  r¥  ro  s               €€r"   Ú
round_implz$_make_node_magic.<locals>.round_impl�  s"  ø€ ÷ô
 —‘ˆBÙÔÜØÑ-¨b´9¸T³?ÀGÐ2LÈbÓQóð ð —9‘9ˆDðÙ˜4 Ó)�ð
 ˆÜ‘àŸ™�àˆHØ�y‰yÐ$ÙØ—I‘I˜wó�ð —L‘L�>ˆDØÐ"Ø—‘˜GÔ$Ø�~‰~Ð%Ü"Ð#DÓEÐEØŸ™×@Ñ@ÀÄUÈ4Ã[ÓQ‰JˆG�QÜ˜3 §¡°¸È'ÔRÐRøô9 ò Ü—‘Ð?ÀÈÈwÔWØðús   Á	D Ä#D()r?   zset[str])r¢  úCallable[..., SymNode]r?   r´  )r<   r   rQ   r   r?   r   r£  )r­  r   r®  r   r¯  r   r?   r   r   )r<   r   r˜   rr  r?   r   )r   Ú2magic_methods_on_operator_with_trailing_underscoreÚunary_methodsÚsetattrr   )	ro  r¥  Úmethod_attrr{  r”  r¦  r«  r°  r³  s	   ``       r"   Ú_make_node_magicr¹  i  sþ   ù€ ØŒ9�S‹>˜$Ó€DàÔCÑCØ˜ �l‰àˆó
õ",ð\ õ}ó ð}ð~ õ$Oó ð$OðL ”ÑÜ”˜1˜[˜MÐ*Ð,<Õ=Ø	�9Ò	ð/	Øð/	Ø+2ð/	Ø?Fð/	àö/	ôb 	”˜1˜[˜MÐ*¨LÕ9Ø	�7Ò	÷+	SôZ 	”˜1˜[˜MÐ*¨JÕ7ä”˜1˜[˜MÐ*Ð,=Õ>r$   c                óð   ‡ ‡— 	 	 	 	 	 	 	 	 dˆˆ fd„}t        t        d‰ › �|«       	 	 	 	 	 	 dˆˆ fd„}t        t        j                  t
           ‰ «      s#t        t        j                  t
           ‰ |«       y y )Nc                ó"  •— ddl m}m} t        t        j
                  t           ‰«      } |«       rDt        |  |||D �cg c]  }t        |«      ‘Œ c}|D �cg c]  }t        |«      ‘Œ c}fi «      «      S |D �cg c]  }|j                  ‘Œ }}|D �cg c]  }|j                  ‘Œ }}	  ‰||«      }	g }
d }|D ]+  }|j                  € nX|
j                  |j                  «       Œ- g }|D ]+  }|j                  € n&|j                  |j                  «       Œ-  ||
|«      }‰j                  d«      rt         }nt"        }t%        |	| j&                  ||«      S c c}w c c}w c c}w c c}w # t        $ r t        j                  d‰||«       ‚ w xY w)Nr   r-  r˜  Ú
_indicator)r8  r.  r/  r   ÚsysÚmodulesru  r%  r1  r4   rJ  rK  rL  r;   r‰   Úendswithr*   r)   r   r5   )r<   rü   rý   r.  r/  r¡  ÚsÚ
size_exprsÚstride_exprsrA  rB  rC  Ústride_hintsr:   r¥  ro  s                 €€r"   Úsizes_strides_implz4_make_node_sizes_strides.<locals>.sizes_strides_implÄ  sŠ  ø€ ÷	
ô
 ”S—[‘[¤Ñ*¨FÓ3ˆÙÔÜØÙ#ØØ,1Ö2 q”i •lÒ2È7Ö4SÀa´Y¸qµ\Ò4SÐTØóóð ð ',Ö, �a—f“fÐ,ˆ
Ð,Ø(/Ö0 1˜Ÿ›Ð0ˆÐ0ð	Ù�z <Ó0ˆCð ˆ
ØˆØò 	8ˆAØ�v‰vˆ~ÙØ×Ñ˜aŸf™fÕ%ð	8ð
 ˆLØò 8�Ø—6‘6�>ÙØ×#Ñ# A§F¡FÕ+ð8ñ
 ˜j¨,Ó7�ð �?‰?˜<Ô(Ü‰FäˆFÜ�s˜DŸN™N¨F°HÓ=Ð=ùòE 3ùÒ4Sùò -ùÚ0øô ò 	Ü�K‰KÐ3°V¸ZÈÔVØð	ús#   ¿EÁEÁ:E!ÂE&Â)	E+ Å+#FrD  c                ó&  •— dd l }ddlm} t        j                  | |«      D ]~  }t        |t        «      sŒt         t        |j                  ‰«      | D �cg c]  }t        |j                  |«      ‘Œ c}|D �cg c]  }t        |j                  |«      ‘Œ c}«      «      c S  ‰dk(  r	 || |«      S t         ‰| D �cg c]  } |j                  |«      ‘Œ c}|D �cg c]  } |j                  |«      ‘Œ c}«      «      S c c}w c c}w c c}w c c}w )Nr   )Ú!eval_is_non_overlapping_and_denser  )re   r3   rÆ  Ú	itertoolsÚchainr8   r   r1  r   rt   r%  r)   Úsympify)rü   rý   re   rÆ  r4  r·  r¥  ro  s         €€r"   Úsizes_strides_userz4_make_node_sizes_strides.<locals>.sizes_strides_userû  sþ   ø€ ó 	õ	
ô —‘ ¨Ó0ò 	ˆAÜ˜!œVÕ$Ü Ø+”G˜AŸF™F FÓ+Ø5:Ö;°œ §¡¨Õ+Ò;Ø5<Ö=°œ §¡¨Õ+Ò=óóò ð	ð Ð=Ò=Ù4ØØóð ô ÙØ/4Ö5¨!�]�U—]‘] 1Õ%Ò5Ø/6Ö7¨!�]�U—]‘] 1Õ%Ò7óóð ùò <ùÚ=ùò 6ùÚ7s   ÁC?Á8DÂ<D	ÃD)r<   r   rü   rt  rý   rt  r?   r   )rü   úlist[object]rý   rË  r?   ú0SymInt | SymFloat | SymBool | int | float | bool)r·  r   Úhasattrr½  r¾  ru  )ro  r¥  rÄ  rÊ  s   ``  r"   Ú_make_node_sizes_stridesrÎ  Á  sŒ   ù€ ð0>Øð0>Ø+ð0>Ø6Cð0>à	ö0>ôd ŒG�q˜˜�\Ð#5Ô6ð
ØðØ&2ðà	9öô@ ”3—;‘;œxÑ(¨&Ô1Ü”—‘œHÑ% vÐ/AÕBð 2r$   c                ó.  ‡ ‡
‡‡‡‡— ‰ t         v rd‰ › �Šn‰ Š	 	 	 	 dd„Š
dd„Š‰ t        v rdd„Šndd„Šdˆ fd„Šdˆ
ˆˆ ˆˆfd„}dˆ
ˆˆ ˆˆˆfd„}dˆ
ˆˆ ˆˆˆfd	„}dd
„}‰ t        v r ||d‰ › d�|«       y ‰ t        v r!t	        |‰ «      } ||‰ t        ||«      «       y ‰ dk(  r	 	 	 	 	 	 	 	 dˆ
ˆfd„} ||d‰ › d�|«       y ‰ dk(  rddˆ
ˆˆ fd„} ||d‰ › d�|«       y ‰ }	‰ t        v r	t        ‰    }	 ||d|	› d�|«       ‰ t        v r ||d|	› d�|«       y y )Nr±  c                ó  — t        | t        t        t        f«      r| S t        | t        «      r| j
                  j                  dd«      S t        | t        «      r| j
                  j                  dd«      S t        d«      ‚)Nr)  r   z*expect to be called with constant SymBools)
r8   r*   r+   r)   r   rt   r*  r   rW  rD   r™  s    r"   Úget_constantz&_make_user_magic.<locals>.get_constant.  sh   € ô �aœ#œu¤dÐ+Ô,ØˆHÜ�aœÔ Ø—6‘6×#Ñ# B¨Ó*Ð*Ü�aœÔ!Ø—6‘6×$Ñ$ R¨Ó+Ð+ÜÐIÓJÐJr$   c                ó¦   — t        | t        t        t        f«      ryt        | t        t
        t        f«      r| j                  j                  «       S y)NTF)	r8   r*   r+   r)   r   r   r   rt   ro  r™  s    r"   ro  z%_make_user_magic.<locals>.is_constant9  s=   € Ü�aœ#œu¤dÐ+Ô,ØÜ�aœ&¤(¬GÐ4Ô5Ø—6‘6×%Ñ%Ó'Ð'Ør$   c                ó€   — t        | t        «      r-t        | j                  j	                  t        | «      «      «      S | S )z;Implements True+True=2, which works in python but not sympy)r8   r   r   rt   r|   r*   r™  s    r"   Úpromotez!_make_user_magic.<locals>.promote\  s-   € ä˜!œWÔ%Ü˜aŸf™fŸo™o¬c°!«fÓ5Ó6Ð6ØˆHr$   c                ó   — | S r   r   r™  s    r"   rÔ  z!_make_user_magic.<locals>.promoted  s   € ØˆHr$   c                ó   •— ‰dvr| |fS t        | t        t        j                  f«      }t        |t        t        j                  f«      }|s|r.|st        j                  | «      } |st        j                  |«      }| |fS )N)r    r¤   r§   rª   r­   r¹   rÀ   r   r   rÎ   rÒ   rÕ   rØ   rÛ   rÞ   )r8   r+   r9  r   r	   )r<   rQ   Úf_selfÚf_otherro  s       €r"   Úpromote2z"_make_user_magic.<locals>.promote2g  sy   ø€ ð ð 
ñ 
ð$ ˜�;ÐÜ˜D¤5¬%¯.©.Ð"9Ó:ˆÜ˜U¤U¬E¯N©NÐ$;Ó<ˆÙ‘WÙÜ—‘ tÓ,�ÙÜŸ™¨Ó.�Ø�Uˆ{Ðr$   c                óš   •—  ‰| «      }  ‰| «      r t        ‰«       ‰| «      «      S t         t        | j                  ‰«      «       «      S r   )r   r1  r   rt   )r<   rÑ  ro  ro  r¸  rÔ  s    €€€€€r"   r«  z*_make_user_magic.<locals>.unary_magic_impl‘  sH   ø€ Ù�t‹}ˆÙ�tÔØ.Ô& vÓ.±¸TÓ0BÓCÐCÜÐ8œ §¡¨KÓ8Ó:Ó;Ð;r$   c           	     óâ  •— t        |t        t        t        t        t
        t        f«      st        S t        j                  d‰| |«        ‰| «      }  ‰|«      } ‰	| |«      \  } } ‰| «      r t        ‰«       ‰| «      |«      S  ‰|«      r ‰|«      }t        | j                  |«      }|t        u rt        S t         t        | j                  ‰«      |«      «      } ‰|«      r ‰|«      S |S )NzMAGIC %s %s %s)r8   r*   r+   r)   r   r   r   rk  r�  rž  r   r%  rt   r1  r   ©
r<   rQ   Ú
other_nodeÚretrÑ  ro  ro  r¸  rÔ  rÙ  s
       €€€€€€r"   r¦  z+_make_user_magic.<locals>.binary_magic_impl—  sÝ   ø€ Ü˜%¤#¤u¬d´F¼HÄgÐ!NÔOÜ!Ð!Ü×ÑÐ+¨V°T¸5ÔAÙ�t‹}ˆÙ˜“ˆÙ˜t UÓ+‰ˆˆeÙ�tÔØ.Ô& vÓ.±¸TÓ0BÀEÓJÐJÙ�uÔÙ  Ó'ˆEÜ˜TŸY™Y¨Ó.ˆ
ØœÑ'Ü!Ð!ÜÐ7œ §	¡	¨;Ó7¸
ÓCÓDˆÙ$/°Ô$4‰|˜CÓ Ð=¸#Ð=r$   c           	     ó²  •— t        |t        t        t        t        t
        t        f«      st        S  ‰| «      }  ‰|«      } ‰	| |«      \  } } ‰| «      r t        ‰«      | ‰| «      «      S  ‰|«      r ‰|«      }t        | j                  |«      }|t        u rt        S t         t        |‰«      | j                  «      «      } ‰|«      r ‰|«      S |S r   )r8   r*   r+   r)   r   r   r   rk  r   r%  rt   r1  r   rÜ  s
       €€€€€€r"   Úrbinary_magic_implz,_make_user_magic.<locals>.rbinary_magic_impl¨  sÈ   ø€ Ü˜%¤#¤u¬d´F¼HÄgÐ!NÔOÜ!Ð!Ù�t‹}ˆÙ˜“ˆÙ˜t UÓ+‰ˆˆeÙ�tÔØ.Ô& vÓ.°±|ÀDÓ7IÓJÐJÙ�uÔÙ  Ó'ˆEÜ˜TŸY™Y¨Ó.ˆ
ØœÑ'Ü!Ð!ÜÐ8œ 
¨KÓ8¸¿¹ÓCÓDˆÙ$/°Ô$4‰|˜CÓ Ð=¸#Ð=r$   c                ó`   ‡— t        | ‰|«       dˆfd„}| t        u rt        t        ‰|«       yy)z™
        Registers the SymNode magic method on SymInt/Float/Bool,
        and optionally registers a corresponding wrapped method on DynamicInt.
        c                 óä   •— | D �cg c]   }t        |t        «      r|j                  n|‘Œ" } } t        t        ‰«      | Ž }t        |t        «      rt        |t
        «      st        |«      S |S c c}w r   )r8   r   rŠ  r   r*   r)   )r?  rš  rA  Úattrs      €r"   Údynamic_int_implz<_make_user_magic.<locals>.setattrs.<locals>.dynamic_int_implÂ  sk   ø€ àDHöØ?@œ* Q¬
Ô3�—’¸Ñ:ðˆDð ð %”'œ#˜tÓ$ dÐ+ˆCÜ˜#œsÔ#¬J°s¼DÔ,AÜ! #“Ð&ØˆJùòs   †%A-N)r?  r   r?   r   )r·  r   r   )Ú	user_typerã  Úsymnode_implrä  s    `  r"   Úsetattrsz"_make_user_magic.<locals>.setattrs¸  s2   ø€ ô 	�	˜4 Ô.õ	ð œÑÜ”J Ð&6Õ7ð r$   Ú__r
   c                ó”  •— | j                   }t        ||«      }t        ||«      }|t        u s|t        u rt        S t        |t        «      r)t        |t        «      r|j
                  |j
                  k(  st        d«      ‚t         t        | j                   ‰«      ||«      «      }|j                   j                  «       r ‰|«      S |S )Nz9then_node and else_node must be SymNodes with same pytype)
rt   r%  rk  r8   r   r:   rD   r1  r   ro  )	Úpredr÷   rø   r­  r®  r¯  rÞ  rÑ  r¸  s	          €€r"   Úsym_ite_magic_implz,_make_user_magic.<locals>.sym_ite_magic_implÕ  s¿   ø€ ð Ÿ	™	ˆIÜ 	¨8Ó4ˆIÜ 	¨8Ó4ˆIØœNÑ*¨i¼>Ñ.IÜ%Ð%ä˜9¤gÔ.Ü˜y¬'Ô2Ø×$Ñ$¨	×(8Ñ(8Ò8ä$ØOóð ô Ð;œG D§I¡I¨{Ó;¸IÀyÓQÓRˆCð —8‘8×'Ñ'Ô)ñ ˜SÓ!ðð ð	r$   r™   c                ó–   •—  ‰| «      rt        j                   ‰| «      |«      S t         t        | j                  ‰«      |«      «      S r   )r²  r™   r1  r   rt   )r<   r˜   rÑ  ro  ro  s     €€€r"   Úround_magic_implz*_make_user_magic.<locals>.round_magic_implð  s?   ø€ Ù˜4Ô Ü—~‘~¡l°4Ó&8¸'ÓBÐBäÐ7œW T§Y¡Y°Ó7¸Ó@ÓAÐAr$   Ú__r)rš  ú0SymInt | int | SymFloat | float | SymBool | boolr?   zint | float | bool)rš  rï  r?   r)   )rš  r   r?   r   )r<   r   rQ   r   r?   ztuple[Any, Any])r<   r   r?   r   )r<   r   rQ   r   r?   r   )rå  rC   rã  r„   ræ  r   r?   rp  )rê  r   r÷   r   rø   r   r?   r   r   )r<   r   r˜   rr  r?   r   )rµ  Úbool_becomes_int_magic_methodsÚunary_magic_methodsÚunary_nonmagic_methodsr   r   Úbitwise_opsÚreflectable_magic_methods)ro  rå  r«  r¦  rà  rç  Úorigrë  rí  Úmethod_namerÑ  ro  r¸  rÔ  rÙ  s   `         @@@@@r"   Ú_make_user_magicr÷  &  sƒ  ý€ ð ÔCÑCØ˜V˜H�o‰àˆð	KØ;ð	Kà	ó	KóðB Ô/Ñ/ô	ó	õ!÷T<ñ <÷>ò >÷">ò >ó 8ð, Ô$Ñ$Ù�˜b  ¨˜OÐ-=Õ>Ø	Ô)Ñ	)Ü�y &Ó)ˆÙ�˜F¤NÐ3CÀTÓ$JÕKØ	�9Ò	ð	Øð	Ø%+ð	Ø7=ð	àö	ñ0 	�˜b  ¨˜OÐ-?Õ@Ø	�7Ò	÷	Bð 	Bñ 	�˜b  ¨˜OÐ-=Õ>àˆØ”[Ñ Ü% fÑ-ˆKÙ�˜b  ¨RÐ0Ð2CÔDØÔ.Ñ.Ù�Y # k ]°"Ð 5Ð7IÕJð /r$   )r!   z
type[bool]r?   ztype[SymBool])r!   z	type[int]r?   ztype[SymInt])r!   ztype[float]r?   ztype[SymFloat])r!   rC   r?   rC   )r¡  r„   r?   zCallable[[SymNode], SymNode])r4  rq  r·  rq  r?   rq  )rä  rò  rå  rq  r?   zlist[sympy.Basic] | None)FF)
r÷  rq  rø  rq  rù  r)   rú  r)   r?   ró  )r4  rq  r¢  úCallable[..., sympy.Basic]r?   rq  r8  )r4  rq  r!   rq  r0  rq  r?   rq  )r¡  r„   r?   z$Callable[[sympy.Basic], sympy.Basic]r   )rA  rq  r˜   zsympy.Basic | Noner?   rq  )rü   rò  rý   rò  r?   rq  )rü   rò  rý   rò  rR  z	list[int]r?   rq  )r<   r   r{   r   r?   r   )rš  r   r?   rÌ  )ro  r„   r?   zCallable[..., object])ro  r„   r¥  rø  r?   rp  )ro  r„   rå  rC   r?   rp  )¢Ú
__future__r   r²  r’  rx  rÇ  ÚloggingÚmathÚoperatorr½  r   r   Útypingr   r   r   r9  Útorch._logging.structuredrŽ  r‰  r	   r
   r   r   r   r   r   r   Útorch._loggingr   Úcollections.abcr   r   re   r3   r   Ú	getLoggerru  rK  ÚgetArtifactLoggerr�  r   r   ry  r)   r+   r*   ÚHintTypeÚ__all__Útorch.typesr   r9   r#   r   r|  r   r•   r‘   r    r³   rì   rÎ   rá   rœ   r   rÞ   rÕ   rÛ   rÄ   rØ   rª   r§   rÒ   rï   r¶   r³  r"  r™   rÈ   r¤   r  rn  rñ  r¥  Úmath_op_namesr¡  Úsym_nameÚpriv_sym_namer·  r   r‰   rò  r¶  Úonly_bool_magic_methodsrð  Úalso_bool_magic_methodsÚbool_magic_methodsÚonly_float_magic_methodsrµ  ró  rŸ  rª  r   r¸  r¼  r¿  rÆ  rÉ  rÌ  rÐ  rÓ  r×  rÛ  rë  rý  r  r  r  rô  r	  r  r  r  r  r  r  r  r"  r%  r(  r-  r1  r¾  Úcurrent_moduler9  Úpriv_sympy_namer¢  rw  r=  rB  rF  rH  Úinvertr   rM  rJ  rZ  r^  ra  rd  rf  ri  Úsizes_strides_methodsr%  r1  r   r¹  rÎ  Úitemsro  r¥  r÷  r   r$   r"   ú<module>r     sò	  ðÞ "ðó Û Û Û Û Û Û Û 
ß /ß /Ñ /ã ß .Ð .÷	÷ 	ó 	õ -ñ Ý(Ýãå>à€g×Ñ˜Ó!€Ø�~‰~×/Ñ/°¸*ÓE€ñ
 “8€ˆ&Ó à�%‰<˜#Ñ Ñ$€ò K€õ 1ð 
Ú 4ó 
Ø 4Ø	Ú 2ó 
Ø 2Ø	Ú 6ó 
Ø 6Ø	Ú %ó 
Ø %ó÷uñ u÷p+ñ +ô0� ô 0ðh$Ø	ˆ8�<‰<ð$à	ˆ8�<‰<ð$ð 
ˆ8�<‰<ð$ð 
ˆ8�=‰=ð	$ð
 �8—=‘=ð$ð ˆD�I‰Ið$ð 	ˆ(�+‰+ð$ð ˆT�Z‰Zð$ð ˆT�Z‰Zð$ð �H×%Ñ%ð$ð 	ˆ(�+‰+ð$ð 	ˆ(�+‰+ð$ð Ñ*ð$ð 	ˆ(�+‰+ð$ð ˆh�o‰oð$ð  	ˆ(�+‰+ð!$ð" 
ˆ8�<‰<ñ#$ð$ 
ˆ8�<‰<ð%$ð& 	ˆ(�+‰+ð'$ð( 
ˆ8�<‰<ð)$ð* 	ˆ(�,‰,ð+$ð, �(—,‘,ð-$ð. �8—<‘<ð/$ð0 �—‘ð1$ð2 �h—l‘lð3$ð4 ˆX�^‰^ð5$ð6 ˆh�o‰oð7$ð8 
ˆ8�<‰<ð9$ð: �ð;$ð< ˆwð=$ð> ˆwð?$ð@ ˆwðA$ðB ˆwðC$ðD �X×%Ñ%ñE$ðF �8×#Ñ#ñG$Ð òL
Ð óð€ð ò €DØ�d�Vˆ}€HØ˜�z�N€MÙˆG�XÑ/°Ó5Ô6Ù#*¨5°-Ó#@Ð�xÑ Ø×Ñ˜HÔ%à‡N�N�8Õðð ðÐ ð $Ð&<Ñ<€ò >Ð â!6Ð à˜&Ð Ø,Ð/FÑFÐ ò JÐ ð 7<¸T°]Ð 2à#°4ÈÑN€ò XÐ àò -€DØ�d�Vˆ}€HØ×"Ñ" 8Õ,ð-ò
 HÐ òÐ ó"óóóóóóóóóð!Ø#ð!Ø.9ð!àó!ðN (-Ø',ð	D:Ø	ðD:à	ðD:ð !%ðD:ð !%ð	D:ð
 óD:óN'ó&ó'ðØ	ˆ8�<‰<ðà	ˆ8�<‰<ðð 
ˆ8�<‰<ðð 
ˆ:ð	ð
 Ð+ðð Ð!ðð 
ˆ:ðð �<ðð 	ˆ)ðð �+ðð �<ðð Ð)ðð Ð%ðð �Oðð ˆmðð  ˆmð!Ð ó(ó$óóóóóóóóóóó.ð —’˜XÑ&€óð ò 1€DØ ˜vÐ&€OÙ	˜$Ó	€BØ$3Ð3€B„O�b”kÙˆN˜O¨RÕ0ð	1ð ˆˆoóð 8<ð-Øð-Ø"4ð-àó-óó0ðØñàˆx�Šðð 
ˆ8�<‰<ðð 	ˆ)ð	ð
 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð ˆ\ðð ˆ\ðð Ð!ðð ˆKðð 
ˆ8�<‰<ðð ˆzðð  ˆzð!ð" ˆzð#ð$ 
ˆ:ñ%ð& Ø#ò)€ð0 ò H€DØ�d�Vˆ}€HÙ% n¸À¸vÐ6FÓG€M�(ÒðHð 	ˆ(�M >ðUØðUØ'8ðUàóUðØðØ'8ðØENðàóð4EØðEØ'8ðEàóEðHØðHØ'8ðHàóHð'Øð'Ø'8ð'ØENð'àó'ðTPØðPØ'8ðPàóPðSØðSØ'8ðSàóSð?Øð?Ø'8ð?àó?ð )Ø&JØ&JØ#DØ#DØ.[ñ	Ð óó>ó&óU?óp
[Cð| "×'Ò'Ó)ò #�L€FˆDÙ�V˜TÕ"ð#ð *×/Ò/Ó1ò +�L€FˆDÙ˜V TÕ*ð+óWKðt ò +€FØÐ(Ñ(Ù˜ Ô)ØØÐ)Ñ)Ù˜ Ô*ØØÐ(Ñ(¨FÐ6TÑ,TÙ˜ Ô)Ù�V˜VÔ$Ø�[Ò Ù˜ Õ*ð+ð Ùr$   