§
    ž²ÅjŒ‰  ã                   ó"  — 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mZmZm	Z	m
Z
mZ d dlZd dlmZ d dlmZ d dlZd dlmZmZmZ d dlmZmZmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z# d d	l$m%Z% d d
lm&Z&m'Z'm(Z( d dl)m*Z*m+Z+ ddl,m-Z-m.Z. ddlm/Z/m0Z0m1Z1  ej2        e3¦  «        Z4ej5        j6        Z6ej5        j7        Z7ej5        j8        Z8ej5        j9        Z9ej5        j:        Z: eg e6j;        ‘e6j<        ‘e6j=        ‘e6j>        ‘e6j?        ‘e6j@        ‘e6jA        ‘e6jB        ‘e6jC        ‘e6jD        ‘e6jE        ‘e6jF        ‘e6jG        ‘e6jH        ‘e6jI        ‘e6jJ        ‘e6jK        ‘e6jL        ‘e6jM        ‘e6jN        ‘e6jO        ‘e6jP        ‘e6jQ        ‘e6jR        ‘e6jS        ‘e6jT        ‘e6jU        ‘e6jV        ‘e6jW        ‘e6jX        ‘e6jY        ‘e6jZ        ‘e6j[        ‘e#‘e6j\        ‘e6j]        ‘e6j^        ‘e6j_        j`        ‘e8ja        ‘e9jb        ‘¦  «        Zci  e¦   «         ¥ec¥Zde6je        e6jf        e6jg        e6jh        ji        e6jj        e6jk        e6jl        e6jm        e6jn        e6jo        e6jp        e6jq        jr        e6js        e6jt        e6ju        e6jv        gZw eedew¦  «         deeejx        jy        ejx        jz        f                  dedef         fd„Z{ e{e6j|        j}        g¦  «        dejr        de~ddfd„¦   «         Z e{e6j€        j}        g¦  «        dejr        de~ddfd„¦   «         Z� e{e6j‚        ji        g¦  «        dddœdejƒ        de	ej„        j…                 de	ej„        j…                 ddfd„¦   «         Z‚ e{e6j†        g¦  «        e	 	 d®dejr        de	ej„        j…                 de	ej„        j…                 dejr        fd„¦   «         ¦   «         Z† e{e6j‡        g¦  «        deeeˆejƒ        f                  dej„        j…        d edejr        fd!„¦   «         Z‡ e{e6jm        g¦  «        dd"œdejr        d#eˆd$ejr        dejr        d%ej„        j…        dejr        fd&„¦   «         Zm e{e6j‰        ji        g¦  «        deeeˆejƒ        f                  d'eeˆ         d edejr        fd(„¦   «         Z‰ e{e6jŠ        g¦  «        d)ejr        d*ejr        d+ejr        d,eeˆ         d-eeˆeeˆ         f         d.eeˆeeˆ         f         d/eeˆeeˆ         f         d0e‹d1eeˆ         d2eˆd3ee‹         de
ejr        ejr        ejr        f         fd4„¦   «         ZŠ e{e6jŒ        j�        g¦  «        d¯dejr        d5eˆdejr        fd6„¦   «         ZŽ e{e6j�        g¦  «        ed7ejr        d8ejr        dejr        fd9„¦   «         ¦   «         Z� e{e6j�        g¦  «        e	 	 d°d7ejr        d:ejr        d;ejr        d<ej„        j…        d%ej„        j…        dejr        fd=„¦   «         ¦   «         Z� e{e6j‘        g¦  «        ed7ejr        d>ejr        dejr        fd?„¦   «         ¦   «         Z‘ e{e6j’        ji        g¦  «        	 d¯d@eejr                 d#eˆdejr        fdA„¦   «         Z’ e{e6j“        g¦  «        dejr        dejr        fdB„¦   «         Z“ e{e6j”        g¦  «        dd"œdejr        dCejr        d%e	ej„        j…                 dejr        fdD„¦   «         Z” e{e6j•        g¦  «        d7ejr        dejr        fdE„¦   «         Z• e{e6j–        e6j—        g¦  «        d7ejr        dejr        fdF„¦   «         Z– e{e6j˜        e7j˜        g¦  «        d7ejr        dGejr        dejr        fdH„¦   «         Z˜ e{e6j™        e7j™        g¦  «        d7ejr        dGejr        dejr        fdI„¦   «         Z™ e{e6jš        ¦  «        	 	 d±d7ejr        d#e	eˆ         dKe‹dejr        fdL„¦   «         Zš e{e6j›        ¦  «        	 	 d±d7ejr        d#e	eˆ         dKe‹dejr        fdM„¦   «         Z› e{e6jœ        g¦  «        d7ejr        d#eˆdNeˆdOeˆdejr        f
dP„¦   «         Zœ e{e6j�        ji        g¦  «        d7ejr        deeeˆejƒ        f                  dejr        fdQ„¦   «         Zž e{e6j�        jŸ        g¦  «        d7ejr        dRejŸ        dejr        fdS„¦   «         Z 	 d²dejr        dTe	ej¡                 dej¡        fdU„Z¢ e{e6j£        ¦  «        ddddVœd7ejr        dRe	ejŸ                 dWe	ej¤                 dTe	ej¡                 d edejr        fdX„¦   «         Z£ e{e6j¥        ¦  «        ddddVœd7ejr        dRe	ejŸ                 dWe	ej¤                 dTe	ej¡                 d edejr        fdY„¦   «         Z¥ e{e6j¦        ¦  «        ddddJdJej§        dZœd7ejr        deeˆe¨f         dRe	ejŸ                 d[e	ej©                 dWe	ej¤                 d\e‹d]e‹dTej¡        dejr        fd^„¦   «         Z¦ e{e6jª        ji        ¦  «        ddddVœd7ejr        d_eˆdRe	ejŸ                 dWe	ej¤                 dTe	ej¡                 d edejr        fd`„¦   «         Zª e{e6jª        j«        ¦  «        ddddVœd7ejr        daeˆd_eˆdRe	ejŸ                 dWe	ej¤                 dTe	ej¡                 d edejr        fdb„¦   «         Z¬ e{e6j­        ji        ¦  «        d_eˆdeeeˆejƒ        f                  d edejr        fdc„¦   «         Z­ e{e8ja        ji        ¦  «        d*ejr        d+ejr        ddejr        dejr        fde„¦   «         Za e{e9jb        ji        ¦  «        d*ejr        dfejr        dgejr        d+ejr        dhejr        diejr        ddejr        djejr        dkejr        dleˆdejr        fdm„¦   «         Zb e{ej5        j8        j®        ¦  «        dnejr        dejr        fdo„¦   «         Z¯ e{e6j°        g¦  «        e	 	 	 d³dpejr        dqejr        dreˆdseˆdte‹dejr        fdu„¦   «         ¦   «         Z° e{e6j±        j²        ¦  «        	 d´d7eejr                 dveejr                 dweejr                 dxe¨deejr                 f
dy„¦   «         Z³ e{e6j´        j²        ¦  «        	 d´d7eejr                 dveejr                 dweejr                 dxe¨deejr                 f
dz„¦   «         Zµ e{e6j¶        j²        ¦  «        d{eejr                 d|eejr                 d+ej„        j…        deejr                 fd}„¦   «         Z· e{e6j¶        j¸        ¦  «        d{eejr                 d|eejr                 d~eej„        j…                 deejr                 fd„¦   «         Z¹e6jº        ji         »                    ej¼        j½        j¾        ¦  «         e{e6jº        ¦  «        d*ejr        d+ejr        ddej	        ejr                 d€ej	        ejr                 d�ej	        ejr                 d‚e‹dƒe¨d„e¨de
ejr        ejr        ejr        f         fd…„¦   «         ¦   «         Zº e j¿        d¦  «        deeedef         f         fd†„¦   «         ZÀdeeedef         f         fd‡„ZÁ e{e6jÂ        ¦  «        d7ejr        dˆejr        d‰ejr        dejr        fdŠ„¦   «         ZÂ e{e:jÃ        jÄ        ¦  «        d*ejr        d‹eˆdŒeˆd�e¨dRejŸ        de
ejr        ejr        f         fdŽ„¦   «         ZÅ e{e6jÆ        ¦  «        	 dµd7ejr        d$ejr        d‰ejr        d�e‹dejr        f
d�„¦   «         ZÆ e{e6jÇ        ¦  «        	 dµd7ejr        d$ejr        d‰ejr        d�e‹dejr        f
d‘„¦   «         ZÇ e{e6jj        ji        ¦  «        ed)ejr        d’ejr        d#eˆd“ejŸ        dejr        f
d”„¦   «         ¦   «         Zj e{e6jÈ        ¦  «        d•d–œd7ejr        d#eˆd$ejr        d—ejr        d˜e~d™e‹dejr        fdš„¦   «         ZÈ e{e6jÉ        ¦  «        	 	 	 	 d¶dejr        d›eeˆ         d-e	eeˆeeˆ         f                  d.eeˆeeˆ         f         d/eeˆeeˆ         f         dœe‹de
ejr        ejr        f         fd�„¦   «         ZÉ e{e6jÊ        ¦  «        dejr        džeeˆ         de
ejr        ejr        f         fdŸ„¦   «         ZÊ e{e6jË        j²        ¦  «        dJdJddd œd¡ejr        d7ej„        j…        d¢e‹d£e‹d¤e	e~         d¥e	ejr                 dejr        fd¦„¦   «         ZÌ e{e6jÍ        ¦  «        	 	 	 	 d·d7ejr        d©ejr        dªe¨d«e¨d‚e‹d¬e	ejÎ                 de
ejr        ejr        f         fd­„¦   «         ZÍdS )¸é    N)ÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚUnion)Úcore_aten_decompositionsÚget_decompositionsÚremove_decompositions)Ú_grid_sampler_2dÚ
_index_addÚpw_cast_for_opmath)Úextra_random_decomps)Úcounters)Ú	is_fbcode)Ú	out_dtype)Úpad_listlike)Úelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚtype_to_dtype)Údefinitely_trueÚguard_size_obliviousé   )ÚconfigÚinductor_prims)Úis_gpuÚ,needs_fallback_due_to_atomic_add_limitationsÚuse_scatter_fallbackÚopsÚreturn.c                 ó¬   — t          | ¦  «        r| gn| D ]&}|t          v rt                               d| ¦  «         Œ't	          j        | t          ¦  «        S )Nzduplicate decomp: %s)ÚcallableÚdecompositionsÚlogÚwarningÚdecompÚregister_decomposition)r    Úops     úNC:\Projects\Historical\venv\Lib\site-packages\torch/_inductor/decomposition.pyr(   r(   x   sX   € õ   ‘}”}Ð-ˆsˆeˆe¨#ð 5ð 5ˆØ•ÐÐÝ�KŠKÐ.°Ñ4Ô4Ð4øÝÔ(¨­nÑ=Ô=Ð=ó    ÚtensorÚmsgc                 ó   — d S ©N© ©r,   r-   s     r*   Úassert_async_msg_decompr2   ƒ   ó   € à
€Fr+   c                 ó   — d S r/   r0   r1   s     r*   Ú"functional_assert_async_msg_decompr5   ‰   r3   r+   )ÚminÚmaxÚsymbolr6   r7   c                ó   — d S r/   r0   )r8   r6   r7   s      r*   Úsym_constrain_range_for_sizer:   Ž   s	   € ð €Fr+   Úxc                 ób   — |�|                       |¦  «        } |�|                      |¦  «        } | S r/   )Ú	clamp_minÚ	clamp_max)r;   r6   r7   s      r*   Úclampr?   ˜   s5   € ð €Ø�KŠK˜ÑÔˆØ
€Ø�KŠK˜ÑÔˆØ€Hr+   ÚsizeÚ
fill_valueÚkwargsc                 ó¢   — |                      d¦  «        }|€2t          t          |¦  «        ¦  «        |d<   t          j        | |fi |¤ŽS t
          S )NÚdtype)Úgetr   ÚtypeÚtorchÚfullÚNotImplemented)r@   rA   rB   rD   s       r*   rH   rH   ¦   sS   € ð �JŠJ�wÑÔ€EØ€}Ý'­¨ZÑ(8Ô(8Ñ9Ô9ˆˆw‰ÝŒz˜$ 
Ð5Ð5¨fÐ5Ð5Ð5ÝÐr+   ©ÚalphaÚdimÚindexrK   c                ó€   — t          ¦   «         s| j        t          j        k    rt          S t          | |||d|¬¦  «        S )NF)ÚinplacerK   )r   rD   rG   Úbfloat16rI   r   )r;   rL   rM   r,   rK   s        r*   Ú	index_addrQ   ³   s@   € õ ‰;Œ;ð M˜1œ7¥e¤nÒ4Ð4ÝÐå˜!˜S %¨¸ÀeÐLÑLÔLÐLr+   Úphysical_layoutc                 óÀ   ‡ — dgt          ‰ ¦  «        z  }t          |¦  «        D ]
\  }}|||<   Œt          j        ˆ fd„|D ¦   «         fi |¤Ž                     |¦  «        S )Nr   c                 ó    •— g | ]
}‰|         ‘ŒS r0   r0   )Ú.0Úlr@   s     €r*   ú
<listcomp>z"empty_permuted.<locals>.<listcomp>Ò   s   ø€ Ð9Ð9Ð9 A˜˜QœÐ9Ð9Ð9r+   )ÚlenÚ	enumeraterG   ÚemptyÚpermute)r@   rR   rB   ÚpermÚprV   s   `     r*   Úempty_permutedr^   É   sw   ø€ ð ˆ3•�T‘”‰?€DÝ˜/Ñ*Ô*ð ð ‰ˆˆ1ØˆˆQ‰ˆÝŒ;Ð9Ð9Ð9Ð9¨Ð9Ñ9Ô9ÐDÐD¸VÐDÐD×LÒLÈTÑRÔRÐRr+   Úgrad_outputÚinputÚweightÚ
bias_sizesÚstrideÚpaddingÚdilationÚ
transposedÚoutput_paddingÚgroupsÚoutput_maskc                 ób  — |
d         rt          | j        j        ¦  «        st          S t                               | dgt          t          d|                      ¦   «         ¦  «        ¦  «        z   ¦  «        }t           	                    | |||||||||	|
d         |
d         dg¦  «        \  }}}|||fS )Né   r   r   F)
r   ÚdevicerF   rI   ÚatenÚsumÚlistÚrangerL   Úconvolution_backward)r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   Ú	grad_biasÚgrad_inpÚgrad_weightÚ_s                  r*   rq   rq   Õ   s¼   € ð �qŒ>ð ¥¨Ô(:Ô(?Ñ!@Ô!@ð ÝÐÝ—’˜ q c­Dµ°q¸+¿/º/Ñ:KÔ:KÑ1LÔ1LÑ,MÔ,MÑ&MÑNÔN€IÝ#×8Ò8ØØØØØØØØØØØ	�QŒ˜ Qœ¨Ð/ñ ô  Ñ€Hˆk˜1ð �k 9Ð-Ð-r+   Údecimalsc                 óR   — d|z  }t                                | |z  ¦  «        d|z  z  S )Ng      $@g      ð?)rm   Úround)r;   rv   Úten_pow_decimalss      r*   Ú	round_decrz   ö   s/   € à˜X‘~ÐÝ�:Š:�aÐ*Ñ*Ñ+Ô+¨sÐ5EÑ/EÑFÐFr+   ÚselfÚbatch2c                 óÖ  — t           j        r�| j        j        dk    r}t	          | j        d         dk    ¦  «        st	          |j        d         dk    ¦  «        rA|                      d¦  «        |                     d¦  «        z                       d¬¦  «        }|S | j        j        dk    rºt	          |                      d¦  «        dk    ¦  «        r”t	          |                     d¦  «        dk    ¦  «        rnt          d         dxx         dz  cc<   t          j        |                      d¦  «        |                     d¦  «        z  dd¬	¦  «                             d¦  «        S t          S )
NÚcpur   rk   éÿÿÿÿ©rL   ÚinductorÚdecompose_bmmT©rL   Úkeepdim)r   Úcoordinate_descent_tuningrl   rF   r   ÚshapeÚ	unsqueezern   r@   r   rG   ÚsqueezerI   )r{   r|   Úouts      r*   ÚbmmrŠ   ü   sY  € õ Ô'ð ¨D¬KÔ,<ÀÒ,EÐ,EÝ ¤
¨1¤°Ò 2Ñ3Ô3ð 	Õ7KØŒL˜ŒO˜qÒ ñ8
ô 8
ð 	ð —>’> "Ñ%Ô%¨×(8Ò(8¸Ñ(;Ô(;Ñ;×@Ò@ÀQÐ@ÑGÔGˆCØˆJØ„{Ô˜5Ò Ð Ý §	¢	¨!¡¤°Ò 1Ñ2Ô2ð 	Õ7KØ�KŠK˜‰OŒO˜qÒ ñ8
ô 8
ð 	õ �ZÔ  Ð1Ð1Ô1°QÑ6Ð1Ð1Ñ1Ý”9Ø—’˜Q‘” &§.¢.°Ñ"4Ô"4Ñ4¸!ÀTðñ ô çŠi˜‰lŒlðõ Ðr+   Úmat1Úmat2Úbetac                 ó*  — | j         j        dk    �r|t          |                     d¦  «        dk    ¦  «        rŸt          |                     d¦  «        dk    ¦  «        ryt          d         dxx         dz  cc<   t          j        |                     d¦  «        |                     d¦  «        z  dd¬¦  «                             d¦  «        }||z  || z  z   S t          |                     d¦  «        dk    ¦  «        r‘t          |                     d¦  «        d	k    ¦  «        rkt          |                     d¦  «        d	k    ¦  «        rEt          d         dxx         dz  cc<   |j
        |z                       dd¬¦  «        }||z  || z  z   S t          S )
Nr~   r   r   r   r�   Údecompose_addmmTrƒ   é   )rl   rF   r   r@   r   rG   rn   rˆ   r‡   r   ÚTrI   )r{   r‹   rŒ   r�   rK   r‰   s         r*   Úaddmmr’     s�  € ð „{Ô˜5Ò Ñ Ý §	¢	¨!¡¤°Ò 1Ñ2Ô2ð 	-Õ7KØ�IŠI�b‰MŒM˜QÒñ8
ô 8
ð 	-õ �ZÔ Ð!2Ð3Ð3Ô3°qÑ8Ð3Ð3Ñ3Ý”)Ø—’˜Q‘” $§,¢,¨rÑ"2Ô"2Ñ2¸À4ðñ ô çŠi˜‰lŒlð ð ˜3‘; ¨¡Ñ,Ð,å  §¢¨1¡¤°Ò!2Ñ3Ô3ð	-å §	¢	¨!¡¤°Ò 2Ñ3Ô3ð	-õ   §	¢	¨!¡¤°Ò 2Ñ3Ô3ð	-õ
 �ZÔ Ð!2Ð3Ð3Ô3°qÑ8Ð3Ð3Ñ3Ø”6˜D‘=×%Ò%¨!°TÐ%Ñ:Ô:ˆCØ˜3‘; ¨¡Ñ,Ð,ÝÐr+   Úinput2c                 ó  ‡ ‡— t           j        r‹‰ j        j        dk    r{t	          ‰ j        d         dk    ¦  «        st	          ‰j        d         dk    ¦  «        r?‰                      d¦  «        ‰                     d¦  «        z                       d¬¦  «        S ‰ j        j        dk    �rÒt	          ‰                      d¦  «        dk    ¦  «        ròt	          ‰                      d¦  «        dk    ¦  «        rÌt	          ‰                     d¦  «        dk    ¦  «        r¦‰ j	        ‰j	        k    r–t          t          j        ‰ ¦  «        t          j        ‰¦  «        z   dk    ¦  «        r\t          d         d	xx         dz  cc<   t          j        ˆˆ fd
„t          ‰                      d¦  «        ¦  «        D ¦   «         ¦  «        S t	          ‰                      d¦  «        dk    ¦  «        r”t	          ‰                     d¦  «        dk    ¦  «        rnt          d         d	xx         dz  cc<   t          j        ‰                      d¦  «        ‰                     d¦  «        z  dd¬¦  «                             d¦  «        S t"          S )Nr~   r   r   rk   r€   r   é    r�   Údecompose_mmc                 ó.   •— g | ]}‰|d d …f         ‰z  ‘ŒS r/   r0   )rU   Úir“   r{   s     €€r*   rW   zmm.<locals>.<listcomp>F  s*   ø€ ÐOÐOÐO°a˜d 1 a a a 4œj¨6Ñ1ÐOÐOÐOr+   Trƒ   )r   r…   rl   rF   r   r†   r‡   rn   r@   rD   r   rG   Únumelr   Úcatrp   rˆ   rI   )r{   r“   s   ``r*   Úmmr›   0  sX  øø€ õ Ô'ð H¨D¬KÔ,<ÀÒ,EÐ,EÝ ¤
¨1¤°Ò 2Ñ3Ô3ð 	HÕ7KØŒL˜ŒO˜qÒ ñ8
ô 8
ð 	Hð —N’N 1Ñ%Ô%¨×(8Ò(8¸Ñ(;Ô(;Ñ;×@Ò@ÀQÐ@ÑGÔGÐGØ„{Ô˜5Ò Ñ å  §¢¨2¡¤°!Ò!3Ñ4Ô4ð	Qå$ T§Y¢Y¨q¡\¤\°AÒ%5Ñ6Ô6ð	Qõ % V§[¢[°¡^¤^°qÒ%8Ñ9Ô9ð	Qð ”˜vœ|Ò+Ð+Ý¥¤¨TÑ!2Ô!2µU´[ÀÑ5HÔ5HÑ!HÈRÒ OÑPÔPð ,õ �ZÔ  Ð0Ð0Ô0°AÑ5Ð0Ð0Ñ0Ý”9ÐOÐOÐOÐOÐO½5ÀÇÂÈ1ÁÄÑ;NÔ;NÐOÑOÔOÑPÔPÐPÝ §	¢	¨!¡¤°Ò 1Ñ2Ô2ð 	Õ7KØ�KŠK˜‰OŒO˜qÒ ñ8
ô 8
ð 	õ �ZÔ  Ð0Ð0Ô0°AÑ5Ð0Ð0Ñ0Ý”9Ø—’˜Q‘” &§.¢.°Ñ"4Ô"4Ñ4¸!ÀTðñ ô çŠi˜‰lŒlðõ Ðr+   Útensorsc                 ó"  ‡‡‡— ddl mŠ dt          j        dt          fˆˆfd„}t          t          || ¦  «        ¦  «        Št          ‰¦  «        dk    r‰d                              ¦   «         S dt          ‰¦  «        cxk     rt          | ¦  «        k     r#n n t          j
                             ‰‰¦  «        S t          ‰¦  «        dk    r¿t          ˆfd„‰D ¦   «         ¦  «        r¤‰d         }t          |j        ¦  «        }‰dk     r‰t          |j        ¦  «        z   n‰Š|                     ‰t          ‰¦  «        ¦  «          |                     ‰¦  «        j        |Ž                      ‰‰dz   ¦  «                             ¦   «         S t$          S )Nr   )r   r;   r!   c                 óØ   •— t          | j        ¦  «        dk    r ‰| j        d         dk    ¦  «        rdS ‰t          | j        ¦  «        k     r ‰| j        ‰         dk    ¦  «        rdS dS )Nr   r   FT)rX   r†   )r;   rL   r   s    €€r*   Únon_empty_tensorzcat.<locals>.non_empty_tensor\  sq   ø€ õ" ˆqŒw‰<Œ<˜1ÒÐÐ!5Ð!5°a´g¸a´jÀA²oÑ!FÔ!FÐØ�5à•�Q”W‘”ÒÐÐ"6Ð"6°q´w¸s´|ÀqÒ7HÑ"IÔ"IÐØ�5àˆtr+   r   c              3   ó,   •K  — | ]}|‰d          u V — ŒdS )r   Nr0   )rU   ÚtÚfiltered_tensorss     €r*   ú	<genexpr>zcat.<locals>.<genexpr>~  s?   øè è € ð )ð )Ø%&ˆÐ˜aÔ Ð ð)ð )ð )ð )ð )ð )r+   )Ú%torch.fx.experimental.symbolic_shapesr   rG   ÚTensorÚboolro   ÚfilterrX   Úclonerm   rš   ÚdefaultÚallr†   Úinsertr‡   ÚexpandÚflattenrI   )rœ   rL   rŸ   Úinpr†   r¢   r   s    `   @@r*   rš   rš   U  sÁ  øøø€ ð
 KÐJÐJÐJÐJÐJð�EœLð ­Tð ð ð ð ð ð ð õ2 �FÐ#3°WÑ=Ô=Ñ>Ô>Ðå
ÐÑÔ Ò!Ð!Ø Ô"×(Ò(Ñ*Ô*Ð*Ø	
�SÐ!Ñ"Ô"Ð	1Ð	1Ò	1Ð	1¥S¨¡\¤\Ò	1Ð	1Ð	1Ð	1Ð	1åŒx×ÒÐ 0°#Ñ6Ô6Ð6õ ÐÑÔ˜qÒ Ð ¥Sð )ð )ð )ð )Ø*:ð)ñ )ô )ñ &ô &Ð ð ˜qÔ!ˆÝ�S”Y‘”ˆØ&)¨A¢g gˆc•C˜œ	‘N”NÑ"Ð"°3ˆØ�Š�S�#Ð.Ñ/Ô/Ñ0Ô0Ð0Ø(ˆs�}Š}˜SÑ!Ô!Ô(¨%Ð0×8Ò8¸¸cÀA¹gÑFÔF×LÒLÑNÔNÐNõ Ðr+   c                 óþ  — |                       ¦   «         rWt          j        t          j        | j        ¦  «        t          d¦  «        t          j        | j        | j        ¦  «        ¦  «        S t          | t          j
        ¬¦  «        \  }}t          j        t          j        || j        ¬¦  «        }t          j        | dk     |d¦  «        }t          j        t          j        | ¦  «        t          d¦  «        |¦  «        S )NÚnan)Útype_promotion_kind©rD   rl   r   g        )Ú
is_complexrG   ÚwhereÚisnanÚrealÚfloatÚatan2Úimagr   r   ÚINT_TO_FLOATÚscalar_tensorÚmathÚpirl   )r;   ru   rD   r½   Úrets        r*   Úangler¿   ‹  sÈ   € à‡|‚|�~„~ð 
ÝŒ{ÝŒK˜œÑÔ¥ u¡¤­u¬{¸1¼6À1Ä6Ñ/JÔ/Jñ
ô 
ð 	
õ "Ø	Ý;ÔHðñ ô �H€A€uõ 
Ô	�TœW¨E¸!¼(Ð	CÑ	CÔ	C€BÝ
Œ+�a˜!’e˜R Ñ
%Ô
%€CÝŒ;•u”{ 1‘~”~¥u¨U¡|¤|°SÑ9Ô9Ð9r+   Úyc                ó<  — t          j        | ¦  «        o|                      ¦   «         }t          j        |¦  «        o|                     ¦   «         }|r|st          S |}|�||z  }t          j        | j        |j        ¦  «        }dt           j        dt           j        fd„} ||                      | j        j        ¦  «        ¦  «        } ||                     |j        j        ¦  «        ¦  «        }	t          j	        ||	z   d¬¦  «                             |¦  «        }
|
S )Nr,   r!   c                 óŒ   — | j         �^ }}|dz  dk    rt          d¦  «        ‚g |¢|dz  ‘d‘R }|                      |¦  «        }|S )zNReshape tensor from [*initial_dims, last_dim] to *initial_dims, last_dim/2, 2]rk   r   zQThe size of the last dimension must be even to reshape it to [..., last_dim/2, 2])r†   ÚAssertionErrorÚview)r,   Úinitial_dimsÚlast_dimÚ	new_shapeÚreshaped_tensors        r*   Úreshape_tensor_complexz#add.<locals>.reshape_tensor_complex²  sj   € ð #)¤,Ñˆ�xð �a‰<˜1ÒÐÝ Øcñô ð ð
 6�lÐ5 H°¡MÐ5°1Ð5Ð5ˆ	Ø Ÿ+š+ iÑ0Ô0ˆØÐr+   éþÿÿÿ)Ú	start_dim)
rG   Ú	is_tensorr³   rI   Úpromote_typesrD   r¥   rÄ   r¶   r­   )r;   rÀ   rK   Úx_is_complex_tensorÚy_is_complex_tensorÚzÚcomplex_typerÉ   Ú
x_reshapedÚ
z_reshapedÚresults              r*   ÚaddrÕ   Ÿ  s  € õ  œ/¨!Ñ,Ô,Ð?°·²±´ÐÝœ/¨!Ñ,Ô,Ð?°·²±´ÐØð Ð&9ð ÝÐØ	€AØÐØ�A‰IˆÝÔ& q¤w°´Ñ8Ô8€Lð¥u¤|ð ½¼ð ð ð ð ð" (Ð'¨¯ª¨q¬v¬|Ñ(<Ô(<Ñ=Ô=€JØ'Ð'¨¯ª¨q¬v¬|Ñ(<Ô(<Ñ=Ô=€JÝŒ]˜:¨
Ñ2¸bÐAÑAÔA×FÒFÀ|ÑTÔT€FØ€Mr+   c                 óB   — |                       ¦   «         r
J d¦   «         ‚| S )NzTODO: implement this)r³   ©r{   s    r*   Úconj_physicalrØ   É  s&   € à�ŠÑ Ô Ð8Ð8Ð"8Ñ8Ô8Ð Ø€Kr+   c                 ó   — | S r/   r0   r×   s    r*   ÚliftrÚ   Ï  s   € à€Kr+   Úotherc                 ó`   — t          j        t          j        |¦  «        || k    z  | |¦  «        S r/   ©rG   r´   rµ   ©r{   rÛ   s     r*   Úfminrß   Ô  ó)   € åŒ;•u”{ 5Ñ)Ô)¨U°Tª\Ñ:¸DÀ%ÑHÔHÐHr+   c                 ó`   — t          j        t          j        |¦  «        || k     z  | |¦  «        S r/   rÝ   rÞ   s     r*   Úfmaxrâ   Ù  rà   r+   Fr„   c                 óh   — | j         t          j        k    rt          j        | ||¬¦  «        S t          S ©Nrƒ   )rD   rG   r¦   ÚanyrI   ©r{   rL   r„   s      r*   Úamaxrç   Þ  ó0   € ð „z•U”ZÒÐÝŒy˜ 3°Ð8Ñ8Ô8Ð8ÝÐr+   c                 óh   — | j         t          j        k    rt          j        | ||¬¦  «        S t          S rä   )rD   rG   r¦   rª   rI   ræ   s      r*   Úaminrê   é  rè   r+   ÚstartÚlengthc                 óT   — t          j        | |||¦  «                             ¦   «         S r/   )rG   Únarrowr¨   )r{   rL   rë   rì   s       r*   Únarrow_copyrï   ô  s&   € õ Œ<˜˜c 5¨&Ñ1Ô1×7Ò7Ñ9Ô9Ð9r+   c                 ó\   — t                                | |¦  «                             ¦   «         S r/   )rm   rÄ   r¨   )r{   r@   s     r*   Úview_copy_defaultrñ   þ  s$   € õ
 �9Š9�T˜4Ñ Ô ×&Ò&Ñ(Ô(Ð(r+   rD   c                 óP   — |                       |¦  «                             ¦   «         S r/   )Útor¨   )r{   rD   s     r*   Úview_copy_dtyperô     s    € ð
 �7Š7�5‰>Œ>×ÒÑ!Ô!Ð!r+   Úmemory_formatc                 óN   — |t           j        u s|€t          j        | ¦  «        S |S r/   )rG   Úpreserve_formatÚutilsÚsuggest_memory_format)r,   rõ   s     r*   Úget_like_layoutrú     s.   € ð
 �Ô-Ð-Ð-°Ð1FÝÔ*¨6Ñ2Ô2Ð2àÐr+   )rD   rl   rõ   rl   c                ó´   — t          j        g |                      ¦   «         ¢f|p| j        |p| j        dœ|¤Ž                     t          | |¦  «        ¬¦  «        S ©Nr²   ©rõ   )rG   Úrandr@   rD   rl   ró   rú   ©r{   rD   rl   rõ   rB   s        r*   Ú	rand_liker     sj   € õ Œ:Øˆ$�)Š)‰+Œ+ˆðàÐ!�t”zØÐ$˜œðð ð ð	ð ÷
 	‚b• t¨]Ñ;Ô;€bÑ<Ô<ð=r+   c                ó´   — t          j        g |                      ¦   «         ¢f|p| j        |p| j        dœ|¤Ž                     t          | |¦  «        ¬¦  «        S rü   )rG   Úrandnr@   rD   rl   ró   rú   rÿ   s        r*   Ú
randn_liker  *  sj   € õ Œ;Øˆ$�)Š)‰+Œ+ˆðàÐ!�t”zØÐ$˜œðð ð ð	ð ÷
 	‚b• t¨]Ñ;Ô;€bÑ<Ô<ð=r+   )rD   Úlayoutrl   Ú
pin_memoryÚrequires_gradrõ   r  r  r  c                óÌ   — t          j        g |                      ¦   «         ¢||p| j        |p| j        |p| j        |¬¦  «                             t          | |¦  «        ¬¦  «        S )N)rD   r  rl   r  rý   )rG   rH   r@   rD   r  rl   ró   rú   )r{   rA   rD   r  rl   r  r  rõ   s           r*   Ú	full_liker  ;  sk   € õ Œ:Øˆ$�)Š)‰+Œ+ˆØØÐ!�t”zØÐ$˜œØÐ$˜œØ#ðñ ô ÷ 	‚b• t¨]Ñ;Ô;€bÑ<Ô<ð=r+   Úhighc                óÂ   — t          j        j        d|g |                      ¦   «         ¢f|p| j        |p| j        dœ|¤Ž                     t          | |¦  «        ¬¦  «        S )Nr   r²   rý   ©rm   ÚrandintÚlowr@   rD   rl   ró   rú   )r{   r	  rD   rl   rõ   rB   s         r*   Úrandint_liker  Q  su   € õ Œ<ÔØ	ØØˆ$�)Š)‰+Œ+ˆðð Ð!�t”zØÐ$˜œðð ð ðð ÷ 	‚b• t¨]Ñ;Ô;€bÑ<Ô<ð=r+   r  c                óÂ   — t          j        j        ||g |                      ¦   «         ¢f|p| j        |p| j        dœ|¤Ž                     t          | |¦  «        ¬¦  «        S rü   r  )r{   r  r	  rD   rl   rõ   rB   s          r*   Úrandint_like_lowr  e  su   € õ Œ<ÔØØØˆ$�)Š)‰+Œ+ˆðð Ð!�t”zØÐ$˜œðð ð ðð ÷ 	‚b• t¨]Ñ;Ô;€bÑ<Ô<ð=r+   c                 ó4   — t          j        j        d| |fi |¤ŽS ©Nr   )rm   r  r  )r	  r@   rB   s      r*   r  r  z  s#   € õ Œ<Ô˜A˜t TÐ4Ð4¨VÐ4Ð4Ð4r+   Úbiasc                 óÈ   — t           j        j                             |¦  «        }t           j        j                             | |||                     ¦   «         d         ¦  «        S r  )rG   r    Ú
_quantizedÚ$wrapped_fbgemm_pack_gemm_matrix_fp16Ú!wrapped_fbgemm_linear_fp16_weightr@   )r`   ra   r  Úpacked_weights       r*   Ú#linear_dynamic_fp16_unpacked_weightr  ƒ  sO   € õ ”IÔ(×MÒMÈfÑUÔU€MÝŒ9Ô×AÒAØˆ}˜d F§K¢K¡M¤M°!Ô$4ñô ð r+   Úinput_scaleÚinput_zero_pointÚweight_scaleÚweight_zero_pointÚ	out_scaleÚout_zero_pointÚout_channelc
           	      ó¤   — t           j        j                             ||||¦  «        }
t           j        j                             | |||
|||	¦  «        S r/   )rG   r    r  Ú_wrapped_linear_prepackÚ#_wrapped_quantized_linear_prepacked)r`   r  r  ra   r  r  r  r  r  r   r  s              r*   Úwrapped_quantized_linearr$  �  s\   € õ ”IÔ(×@Ò@Ø�Ð/°ñô €Mõ Œ9Ô×CÒCØØØØØØØñô ð r+   Úpackedc                 óì   — dt           j        dt           j        fd„} || ddd…f         ¦  «        } || ddd …f         ¦  «        }| dd d…f                              t           j        ¦  «        |z  |z   S )NÚu8r!   c                 ó&  ‡ — ˆ fd„dD ¦   «         \  }}}}t           j        dk    r7||dz  z   |dz  z   |dz  z                        t          j        ¦  «        d         S |dz  |dz  z   |dz  z   |z                        t          j        ¦  «        d         S )Nc              3   óf   •K  — | ]+}‰d |f                               t          j        ¦  «        V — Œ,dS ©.N)ró   rG   Úint32)rU   Únr'  s     €r*   r£   zPq_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.<locals>.<genexpr>­  s9   øè è € ÐGÐG°Q�b˜˜a˜”j—m’m¥E¤KÑ0Ô0ÐGÐGÐGÐGÐGÐGr+   )r   r   rk   é   Úlittleé   r�   é   r*  )ÚsysÚ	byteorderrÄ   rG   Úfloat32)r'  r;   rÀ   rÐ   Úws   `    r*   Úbitcast_u8_to_f32z=q_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32¬  sœ   ø€ ØGÐGÐGÐG¸,ÐGÑGÔG‰
ˆˆ1ˆa�ÝŒ=˜HÒ$Ð$Ø˜˜a™‘L A¨¡GÑ,°°R±Ñ8×>Ò>½u¼}ÑMÔMÈiÔXÐXà˜"‘W  b¡Ñ)¨Q°!©VÑ4°qÑ8×>Ò>½u¼}ÑMÔMÈiÔXÐXr+   .iøÿÿÿéüÿÿÿ)rG   r¥   ró   r3  )r%  r5  ÚscalesÚoffsetss       r*   Ú"q_embedding_bag_byte_unpack_decompr9  ª  s—   € ðY�eœlð Y­u¬|ð Yð Yð Yð Yð Ð˜v c¨2¨b¨5 jÔ1Ñ2Ô2€FØÐ  s¨B¨C¨C xÔ 0Ñ1Ô1€GØ�#�s˜�s�(Ô×Ò�uœ}Ñ-Ô-°Ñ6¸Ñ@Ð@r+   ÚaÚgridÚinterpolation_modeÚpadding_modeÚalign_cornersc                 ó¸   — | j         t          j         d¦  «        k    o%|dk    o|                      t          j        ¬¦  «         }t	          | |||||¬¦  «        }|S )Nr~   r   rý   )r;  r<  r=  r>  Ú_expand_grid)rl   rG   Úis_contiguousÚcontiguous_formatÚdecomp_grid_sampler_2d)r:  r;  r<  r=  r>  r@  Úoutputs          r*   Úgrid_sampler_2drE  ¸  sv   € ð 	
Œ•E”L Ñ'Ô'Ò'ð 	CØ !Ò#ð	Cà�OŠO­%Ô*AˆOÑBÔBð€Lõ $Ø	ØØ-Ø!Ø#Ø!ðñ ô €Fð €Mr+   Úleft_tensorsÚright_tensorsÚscalarc                 ó‚   — t           j                             | t           j                             ||¦  «        |¬¦  «        S ©NrJ   )rm   Ú_foreach_addr   Ú_foreach_mul©r{   rF  rG  rH  s       r*   Ú_foreach_addcmul_scalarrN  ×  ó>   € õ Ô×!Ò!Ø�dÔ×$Ò$ \°=ÑAÔAÈð "ñ ô ð r+   c                 ó‚   — t           j                             | t           j                             ||¦  «        |¬¦  «        S rJ  )rm   rK  r   Ú_foreach_divrM  s       r*   Ú_foreach_addcdiv_scalarrR  ã  rO  r+   Ústart_tensorsÚend_tensorsc           	      óº   — t           j                             | t           j                             t           j                             || ¦  «        |¦  «        ¦  «        S r/   )rm   rK  r   rL  ÚScalarÚ_foreach_sub)rS  rT  ra   s      r*   Ú_foreach_lerp_scalarrX  ï  sP   € õ Ô×!Ò!ØÝÔ× Ò ÝÔ×"Ò" ;°Ñ>Ô>Àñ	
ô 	
ñô ð r+   Úscalarsc           	      óº   — t           j                             | t           j                             t           j                             || ¦  «        |¦  «        ¦  «        S r/   )rm   rK  r   rL  Ú
ScalarListrW  )rS  rT  rY  s      r*   Ú_foreach_lerp_scalarlistr\  ý  sP   € õ Ô×!Ò!ØÝÔ×$Ò$ÝÔ×"Ò" ;°Ñ>Ô>Àñ	
ô 	
ñô ð r+   Úrunning_meanÚrunning_varÚtrainingÚexponential_average_factorÚepsilonc           
      ó°   — t                                | |||||||¦  «        \  }}	}
|r||	|
fS ||                     d¦  «        |                     d¦  «        fS )N©r   )rm   Únative_batch_normÚ	new_zeros)r`   ra   r  r]  r^  r_  r`  ra  r:  ÚbÚcs              r*   Úmiopen_batch_normrh    s|   € õ ×$Ò$ØØØØØØØ"Øñ	ô 	�G€A€qˆ!ð ð Ø�1�aˆyÐà	Ø×Ò˜ÑÔØ×Ò˜ÑÔðð r+   c                  ó"   — i t           ¥t          ¥S r/   )r$   r   r0   r+   r*   Úfast_random_decompsrj  +  s   € à5�nÐ5Õ 4Ð5Ð5r+   c                  óD   — t           j        rt          S t          ¦   «         S )z"decomps can change based on config)r   Úfallback_randomr$   rj  r0   r+   r*   Úselect_decomp_tablerm  2  s   € åÔð ÝÐÝÑ Ô Ð r+   ÚmaskÚsourcec                 óž  — ddl m}m}  || j        |j        ¦  «        r©t
                               | |g¦  «        \  } }|                     d¦  «                             d¦  «        dz
  }d„ | ||fD ¦   «         \  }}}t
           	                    |||gd¦  «        }	t          j        ||	|¦  «                             | j        ¦  «        S t          S )Nr   )ÚBackendFeatureÚhas_backend_featurer   r   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r/   )r­   )rU   r;   s     r*   r£   z!masked_scatter.<locals>.<genexpr>F  s*   è è € Ð,WÐ,W¸Q¨Q¯YªY©[¬[Ð,WÐ,WÐ,WÐ,WÐ,WÐ,Wr+   )Úcodegen.commonrq  rr  rl   ÚMASKED_SCATTER_WITH_INDEXrm   Úbroadcast_tensorsÚreshapeÚcumsumÚ_unsafe_masked_indexrG   r´   rÄ   r†   rI   )
r{   rn  ro  rq  rr  Ú
source_idxÚ	self_flatÚ	mask_flatÚsource_flatrÔ   s
             r*   Úmasked_scatterr~  9  sà   € ð DÐCÐCÐCÐCÐCÐCÐCàÐ˜4œ;¨Ô(PÑQÔQð Jõ ×+Ò+¨T°4¨LÑ9Ô9‰
ˆˆdØ—\’\ "Ñ%Ô%×,Ò,¨QÑ/Ô/°!Ñ3ˆ
Ø,WÐ,WÀ4ÈÈvÐBVÐ,WÑ,WÔ,WÑ)ˆ	�9˜kÝ×*Ò*¨;¸	ÀJÀ<ÐQRÑSÔSˆÝŒ{˜9 f¨iÑ8Ô8×=Ò=¸d¼jÑIÔIÐIÝÐr+   Ú	quant_minÚ	quant_maxÚepsc                 óÆ  — t          j        | ¦  «        \  }}||z
  t          ||z
  ¦  «        z  }t          j        |t          j        |g¦  «        ¦  «        }|t          j        ||z  ¦  «                             t           j        ¦  «        z
  }t          j        |||¦  «        }|                     t           j	        ¦  «        |                     t           j
        ¦  «        fS r/   )rG   Úaminmaxr·   r7   r¥   rx   ró   Úintr?   Úfloat64Úint64)	r`   r  r€  r�  rD   Úmin_valÚmax_valÚscaleÚ
zero_points	            r*   Úchoose_qparams_tensorr‹  L  s³   € õ ”} UÑ+Ô+Ñ€GˆWØ�wÑ¥%¨	°IÑ(=Ñ">Ô">Ñ>€EÝŒI�e�Uœ\¨3¨%Ñ0Ô0Ñ1Ô1€EØ�Uœ[¨°5©Ñ9Ô9×<Ò<½U¼YÑGÔGÑG€JÝ”˜Z¨°IÑ>Ô>€JØ�8Š8•E”MÑ"Ô" J§M¢Mµ%´+Ñ$>Ô$>Ð>Ð>r+   Ú
accumulatec                 ó¾   — |                       ¦   «         }t          j        ||g|                     |j        ¦  «        |¦  «        }|                     | j        ¦  «        S r/   )r­   rG   Ú	index_putrw  r†   )r{   rM   ro  rŒ  Ú	flatteneds        r*   Úputr�  \  sS   € ð —’‘”€IÝ”Ø�E�7˜FŸNšN¨5¬;Ñ7Ô7¸ñô €Ið ×Ò˜TœZÑ(Ô(Ð(r+   c                 óh   — t                                | |||¬¦  «        }|                      |¦  «        S )N)rŒ  )rm   r�  Úcopy_)r{   rM   ro  rŒ  r‰   s        r*   Úput_r“  j  s-   € õ �(Š(�4˜ °:ˆ(Ñ
>Ô
>€CØ�:Š:�c‰?Œ?Ðr+   rD  Úinput_dtypec                 óÐ   — | |z  }t          j        ||d¬¦  «        }t          j        | ||¦  «        }| j        |k    r|                     |¦  «        }|                     ¦   «         S )NTrƒ   )rG   rn   r   ÚfmarD   ró   Ú
contiguous)r_   rD  rL   r”  Únew_grad_outputÚsum_new_gradÚ
grad_inputs          r*   Ú_softmax_backward_datar›  u  sm   € ð " FÑ*€OÝ”9˜_°#¸tÐDÑDÔD€LåÔ# V G¨\¸?ÑKÔK€Jð Ô˜KÒ'Ð'Ø—]’] ;Ñ/Ô/ˆ
Ø× Ò Ñ"Ô"Ð"r+   T©Úinclude_selfÚsrcÚreduction_typer�  c                ó²  — |dk    rët          | j        ¦  «        s×| j        j        p| j        j        }t	          j        |¦  «        }|r,| }t	          j        | ¦  «                             |||¦  «        }	nZ|                      ||d¦  «        }t	          j        | ¦  «                             |||¦  «        }	|	 	                    |	dk     d¦  «        }	|                     |||¦  «        }|r||	z  n||	z  S t          t          j        j        || j        |j        |j        j        d¦  «        rt           S | j        |dz   d …                              ¦   «         | j        d |…                              ¦   «         z  }
|                     ¦   «         g| j        |dz   d …         ¢| j        d |…         ¢R }g t'          | j        |z
  | j        ¦  «        ¢d‘t'          d| j        |z
  ¦  «        ¢R }|                     t          j        ¦  «                             |
¦  «                             |¦  «                             |¦  «        }|                      |||||¬¦  «        S )NÚmeanr   r   Trœ  )r   rD   Úis_floating_pointr³   rG   Ú	ones_likerQ   Ú
index_fillÚ
zeros_likeÚmasked_fillr   rm   Úscatter_reduce_Útworl   rF   rI   r†   r™   rp   Úndimró   r†  Úrepeat_interleaverw  r[   Úscatter_reduce)r{   rL   rM   rž  rŸ  r�  Útrue_divisionÚonesr‰   ÚcountsÚrepeatsÚindex_shaper\   Úscatter_indexs                 r*   Úindex_reducer²  ‹  sE  € ð ˜ÒÐÕ(TØŒ
ñ)ô )Ðð œ
Ô4ÐM¸¼
Ô8MˆÝŒ˜sÑ#Ô#ˆØð 	7ØˆCÝ”_ TÑ*Ô*×4Ò4°S¸%ÀÑFÔFˆFˆFà—/’/ # u¨aÑ0Ô0ˆCÝÔ% dÑ+Ô+×5Ò5°c¸5À$ÑGÔGˆFØ×'Ò'¨°ª
°AÑ6Ô6ˆFØ�mŠm˜C ¨Ñ,Ô,ˆØ,Ð?ˆs�V‰|ˆ|°#¸±-Ð?åÝÔÔ ØØŒ
ØŒ	ØŒ
ŒØñô ð õ ÐàŒj˜˜q™˜˜Ô#×)Ò)Ñ+Ô+¨d¬j¸¸#¸Ô.>×.DÒ.DÑ.FÔ.FÑF€GØ—;’;‘=”=ÐL 4¤:¨c°A©g¨i¨iÔ#8ÐL¸4¼:ÀdÀsÀdÔ;KÐLÐL€KØN�U�4”9˜s‘? D¤IÑ.Ô.ÐN°ÐNµE¸!¸T¼YÈ¹_Ñ4MÔ4MÐNÐN€Dà�Š•”ÑÔß	Ò	˜7Ñ	#Ô	#ß	Š�Ñ	Ô	ß	Š�‰Œð	 ð ×ÒØØØØØ!ð ñ ô ð r+   Úkernel_sizeÚ	ceil_modec                 ó4  — |dk    rddg}|dk    rddg}|s|}t          |d¦  «        }t          |d¦  «        }t          |d¦  «        }t          |d¦  «        }|d         |d         z  }t          j        j                             ||¦  «        s'|t          j        t          j        ¦  «        j        k    rt          S t           
                    | |||||¦  «        \  }}t                               ||d         |                      d¦  «        ||¦  «        }	||	fS )Nr   r   rk   r   )r   rG   Ú	_inductorÚloweringÚ'should_fallback_max_pool2d_with_indicesÚiinfoÚint8r7   rI   ÚprimsÚ#_low_memory_max_pool2d_with_offsetsÚ)_low_memory_max_pool2d_offsets_to_indicesr@   )
r;   r³  rc   rd   re   r´  Úwindow_sizeÚvalsr8  Úindicess
             r*   Úmax_pool2d_with_indicesrÁ  À  s4  € ð �1‚}€}Ø�q�6ˆà�!‚|€|Ø�a�&ˆàð Øˆå˜{¨AÑ.Ô.€KÝ˜H aÑ(Ô(€HÝ˜7 AÑ&Ô&€GÝ˜& !Ñ$Ô$€Fà˜a”. ;¨q¤>Ñ1€Kõ 	ŒÔ ×HÒHØ˜ñ	
ô 	
ðð �œ¥U¤ZÑ0Ô0Ô4Ò4Ð4åÐå×=Ò=Ø	ØØØØØñô �M€Dˆ'õ ×=Ò=ØØ�AŒØ	�Šˆr‰
Œ
ØØñô €Gð �ˆ=Ðr+   Úoutput_sizec                 ó2  — | j         �^ }}}|\  }}|dk    s|dk    r>g |¢|‘|‘}|                      |¦  «        |                      |t          j        ¬¦  «        fS ||z  dk    r.||z  dk    r%||z  ||z  g}t                               | |¦  «        S t          S )Nr   )rD   )r†   Ú	new_emptyrG   r†  rm   rÁ  rI   )	r;   rÂ  ÚbatchÚh_inÚw_inÚh_outÚw_outÚo_sizer³  s	            r*   Úadaptive_max_pool2drË  ó  s´   € ð œÑ€UˆD�$Ø�L€Eˆ5à�‚z€z�U˜a’Z�ZØ'�5Ð'˜%Ð' Ð'ˆØ�{Š{˜6Ñ"Ô" A§K¢K°½e¼k KÑ$JÔ$JÐJÐJàˆe�|�qÒÐ˜T E™\¨QÒ.Ð.Ø˜u‘} d¨e¡mÐ4ˆÝ×+Ò+¨A¨{Ñ;Ô;Ð;åÐr+   ©Ú	out_int32ÚrightÚsideÚsorterÚsorted_sequencerÍ  rÎ  rÏ  rÐ  c                ó‚   — t                                | t          j        |g| j        ¬¦  «        ||||¬¦  «        d         S )N)rl   rÌ  r   )rm   ÚsearchsortedrG   r,   rl   )rÑ  r{   rÍ  rÎ  rÏ  rÐ  s         r*   Úsearchsorted_scalarrÔ    sQ   € õ ×ÒØÝŒ�d�V OÔ$:Ð;Ñ;Ô;ØØØØð ñ ô ð ô	ð 	r+   ç      À?çUUUUUUÕ?ÚnoiseÚlowerÚupperÚ	generatorc                 ó   — |rW| dk    }t                                | |||¬¦  «        }t          j        || |z  | ¦  «        }t          j        ||d¦  «        }	||	fS ||z   dz  }
t                                | |
¦  «        t          j        ¦   «         fS )Nr   )rÚ  r   rk   )rm   ÚuniformrG   r´   Ú
leaky_relur¥   )r{   r×  rØ  rÙ  r_  rÚ  Únot_positiveÚrrD  Ú	noise_outÚnegative_slopes              r*   Úrrelu_with_noise_functionalrâ    s‘   € ð ð EØ˜q’yˆÝ�LŠL˜˜u e°yˆLÑAÔAˆÝ”˜\¨4°!©8°TÑ:Ô:ˆÝ”K ¨a°Ñ3Ô3ˆ	Ø�yÐ Ð à %™-¨1Ñ,ˆÝ�Š˜t ^Ñ4Ô4µe´l±n´nÐDÐDr+   )NNrc  )r   r   )NFr/   )r   r   F)r   )F)Nr   r   F)rÕ  rÖ  FN)ÏÚ	functoolsÚloggingr¼   r1  Útypingr   r   r   r   r   r   r	   rG   Útorch._decompÚ_decompr'   Útorch._prims_commonÚ_prims_commonrø   Ú$torch.ao.quantization.fx._decomposedr
   r   r   Útorch._decomp.decompositionsr   rC  r   r   Ú$torch._decomp.decompositions_for_rngr   Útorch._dynamo.utilsr   Útorch._environmentr   Ú!torch._higher_order_ops.out_dtyper   Útorch._inductor.utilsr   r   r   r   r¤   r   r   Ú r   r   r   r   r   Ú	getLoggerÚ__name__r%   r    rm   r»  Ú	quantizedr  Úquantized_decomposedÚ_adaptive_avg_pool2d_backwardÚindex_selectÚaddmvÚarangeÚbitwise_and_Úbitwise_or_Ú
clamp_min_ÚdistÚ
empty_likeÚflipÚgeluÚhardtanhÚlcmrÝ  Úlinalg_vector_normÚ_log_softmaxÚ max_pool2d_with_indices_backwardÚ_native_batch_norm_legitÚ#_native_batch_norm_legit_functionalÚ$_native_batch_norm_legit_no_trainingÚ_batch_norm_with_updateÚ"_batch_norm_with_update_functionalÚ_batch_norm_no_updateÚbatch_norm_backwardrd  Únative_group_normÚnative_layer_normÚnll_loss2d_backwardÚpermute_copyÚrrelu_with_noise_backwardÚ_softmaxÚsin_Úsqrt_Ú_to_copyÚtril_indicesÚtriu_indicesÚupsample_bilinear2dÚvecr  r$  Úinductor_decompositionsr$   Ú_unsafe_indexry  Ú#_unsafe_masked_index_put_accumulateÚ+_scaled_dot_product_flash_attention_for_cpur©   r›  r>   r=   rQ   ÚgluÚselect_scatterÚslice_scatterÚsplitr¥   rˆ   rn   ÚunbindÚbaddbmmÚdecomps_to_excludeÚ_opsÚOperatorBaseÚOpOverloadPacketr(   Ú_assert_asyncr-   Ústrr2   Ú_functional_assert_asyncr5   r:   ÚSymIntÚtypesÚNumberr?   rH   r„  r^   rq   r¦   rx   rv   rz   rŠ   r’   r›   rš   r¿   rÕ   rØ   rÚ   Údetach_rß   râ   rç   rê   rï   Ú	view_copyrñ   rD   rô   rõ   rú   r   rl   r  r  r÷   r·   r  r  Ú	low_dtyper  r  Úembedding_bag_byte_unpackr9  rE  Ú_foreach_addcmulrV  rN  Ú_foreach_addcdivrR  Ú_foreach_lerprX  r[  r\  rh  Úpy_implÚ_CÚDispatchKeyÚAutogradÚ	lru_cacherj  rm  r~  Úchoose_qparamsr,   r‹  r�  r“  r²  rÁ  rË  rÓ  rÔ  râ  Ú	Generatorr0   r+   r*   ú<module>r<     sn  ðà Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dà €€€Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð
 FÐ EÐ EÐ EÐ EÐ EØ (Ð (Ð (Ð (Ð (Ð (Ø (Ð (Ð (Ð (Ð (Ð (Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð
 XÐ WÐ WÐ WÐ WÐ WÐ WÐ Wà $Ð $Ð $Ð $Ð $Ð $Ð $Ð $ðð ð ð ð ð ð ð ð ð ð €gÔ˜Ñ!Ô!€Ø„y„~€ØŒ	Œ€ØŒIÔ€	ØŒYÔ!€
Ø”yÔ5Ð à,Ð,ð)ØÔ*ð)àÔð)ð 	Œ
ð)ð 	Œð	)ð
 	Ôð)ð 	Ôð)ð 	Œð)ð 	Œ	ð)ð 	Œð)ð 	Œ	ð)ð 	Œ	ð)ð 	Œð)ð 	Œð)ð 	Œð)ð 	Ôð)ð  	Ôð!)ð" 	Ô-ð#)ð$ 	Ô%ð%)ð& 	Ô0ð')ð( 	Ô1ð))ð* 	Ô$ð+)ð, 	Ô/ð-)ð. 	Ô"ð/)ð0 	Ô ð1)ð2 	Ôð3)ð4 	Ôð5)ð6 	Ôð7)ð8 	Ô ð9)ð: 	Ôð;)ð< 	Ô&ð=)ð> 	Œð?)ð@ 	Œ	ðA)ðB 	Œ
ðC)ðD 	ðE)ðF 	ŒðG)ðH 	ÔðI)ðJ 	ÔðK)ðL 	Ô Ô$ðM)ðN 	Ô5ðO)ðP 	Ô+ðQ)ñ+ô +Ð ðX KÐ,Ð,Ñ.Ô.ÐJÐ2IÐJ€ð
 	ÔØÔØÔ,ØÔ4Ô<ØÔØ„NØ„NØ„NØ„HØÔØÔØ„JÔØ„LØ„HØ„KØ„Lð!Ð ð& Ð �nÐ&8Ñ 9Ô 9Ð 9ð>Ø	ˆe�E”JÔ+¨U¬ZÔ-HÐHÔIÔ	Jð>àˆc�3ˆhÔð>ð >ð >ð >ð Ð˜Ô+Ô/Ð0Ñ1Ô1ð E¤Lð °sð ¸tð ð ð ñ 2Ô1ðð
 Ð˜Ô6Ô:Ð;Ñ<Ô<ð¨u¬|ð À#ð È$ð ð ð ñ =Ô<ðð Ð˜Ô:ÔBÐCÑDÔDð )-Ø(,ð	ð ð ØŒLðð 
�%”+Ô$Ô	%ðð 
�%”+Ô$Ô	%ð	ð
 
ðð ð ñ EÔDðð Ð˜œ˜Ñ%Ô%Øð )-Ø(,ð	ð 	Ø„|ð	à	�%”+Ô$Ô	%ð	ð 
�%”+Ô$Ô	%ð	ð „\ð		ð 	ð 	ñ Ôñ &Ô%ð	ð Ð˜œ˜Ñ$Ô$ð	Ø
ˆu�S˜%œ,Ð&Ô'Ô
(ð	à”Ô"ð	ð ð	ð „\ð		ð 	ð 	ñ %Ô$ð	ð Ð˜œÐ(Ñ)Ô)ð !"ðMð Mð MØ„|ðMà	ðMð Œ<ðMð ŒLð	Mð Œ;ÔðMð „\ðMð Mð Mñ *Ô)ðMð* Ð˜Ô,Ô4Ð5Ñ6Ô6ðSØ
ˆu�S˜%œ,Ð&Ô'Ô
(ðSà˜#”YðSð ðSð „\ð	Sð Sð Sñ 7Ô6ðSð Ð˜Ô2Ð3Ñ4Ô4ð.Ø”ð.àŒ<ð.ð ŒLð.ð �S”	ð	.ð
 �#�t˜C”y�.Ô!ð.ð �3˜˜Sœ	�>Ô"ð.ð �C˜˜cœ�NÔ#ð.ð ð.ð ˜”Ið.ð ð.ð �d”ð.ð ˆ5Œ<˜œ u¤|Ð3Ô4ð.ð .ð .ñ 5Ô4ð.ð@ Ð˜œÔ,Ð-Ñ.Ô.ðGð G�”ð G¨ð G°U´\ð Gð Gð Gñ /Ô.ðGð
 Ð˜œ˜
Ñ#Ô#ØðØ
Œ,ðàŒLðð „\ðð ð ñ Ôñ $Ô#ðð* Ð˜œ˜Ñ%Ô%Øð
  !Ø !ðð Ø
Œ,ðà
Œ,ðð Œ,ðð Œ+Ô
ð	ð
 Œ;Ôðð „\ðð ð ñ Ôñ &Ô%ðð6 Ð˜œ˜	Ñ"Ô"ØðØ
Œ,ðàŒLðð „\ðð ð ñ Ôñ #Ô"ððF Ð˜œÔ)Ð*Ñ+Ô+ð ð2ð 2Ø�%”,Ôð2à	ð2ð „\ð2ð 2ð 2ñ ,Ô+ð2ðj Ð˜œ˜Ñ%Ô%ð:ˆUŒ\ð :˜eœlð :ð :ð :ñ &Ô%ð:ð& Ð˜œ˜
Ñ#Ô#ð
 +/ð	&ð &ð &Ø„|ð&à„|ð&ð �E”KÔ&Ô'ð	&ð
 „\ð&ð &ð &ñ $Ô#ð&ðR Ð˜Ô+Ð,Ñ-Ô-ð˜œð ¨¬ð ð ð ñ .Ô-ðð
 Ð˜œ D¤LÐ1Ñ2Ô2ðˆuŒ|ð  ¤ð ð ð ñ 3Ô2ðð Ð˜œ E¤JÐ/Ñ0Ô0ðIˆuŒ|ð I E¤Lð I°U´\ð Ið Ið Iñ 1Ô0ðIð Ð˜œ E¤JÐ/Ñ0Ô0ðIˆuŒ|ð I E¤Lð I°U´\ð Ið Ið Iñ 1Ô0ðIð Ð˜œ	Ñ"Ô"ð Øðð Ø
Œ,ðà	�#Œðð ðð „\ð	ð ð ñ #Ô"ðð Ð˜œ	Ñ"Ô"ð Øðð Ø
Œ,ðà	�#Œðð ðð „\ð	ð ð ñ #Ô"ðð Ð˜Ô)Ð*Ñ+Ô+ð:Ø
Œ,ð:à	ð:ð ð:ð ð	:ð
 „\ð:ð :ð :ñ ,Ô+ð:ð Ð˜œÔ/Ð0Ñ1Ô1ð)Ø
Œ,ð)à
ˆu�S˜%œ,Ð&Ô'Ô
(ð)ð „\ð)ð )ð )ñ 2Ô1ð)ð Ð˜œÔ-Ð.Ñ/Ô/ð"Ø
Œ,ð"àŒ;ð"ð „\ð"ð "ð "ñ 0Ô/ð"ð 48ðð ØŒLðà˜EÔ/Ô0ðð Ôðð ð ð ð Ð˜œÑ'Ô'ð $(Ø%)Ø37ð=ð =ð =Ø
Œ,ð=ð �E”KÔ ð=ð �U”\Ô"ð	=ð
 ˜EÔ/Ô0ð=ð ð=ð „\ð=ð =ð =ñ (Ô'ð=ð  Ð˜œÑ(Ô(ð $(Ø%)Ø37ð=ð =ð =Ø
Œ,ð=ð �E”KÔ ð=ð �U”\Ô"ð	=ð
 ˜EÔ/Ô0ð=ð ð=ð „\ð=ð =ð =ñ )Ô(ð=ð  Ð˜œÑ'Ô'ð
 $(Ø%)Ø%)ØØØ).Ô)>ð=ð =ð =Ø
Œ,ð=à�c˜5�jÔ!ð=ð �E”KÔ ð	=ð
 �U”\Ô"ð=ð �U”\Ô"ð=ð ð=ð ð=ð Ô&ð=ð „\ð=ð =ð =ñ (Ô'ð=ð* Ð˜Ô)Ô1Ñ2Ô2ð
 $(Ø%)Ø37ð=ð =ð =Ø
Œ,ð=à
ð=ð �E”KÔ ð	=ð
 �U”\Ô"ð=ð ˜EÔ/Ô0ð=ð ð=ð „\ð=ð =ð =ñ 3Ô2ð=ð& Ð˜Ô)Ô3Ñ4Ô4ð $(Ø%)Ø37ð=ð =ð =Ø
Œ,ð=à	ð=ð ð=ð
 �E”KÔ ð=ð �U”\Ô"ð=ð ˜EÔ/Ô0ð=ð ð=ð „\ð=ð =ð =ñ 5Ô4ð=ð( Ð˜œÔ,Ñ-Ô-ð5Ø
ð5à
ˆu�S˜%œ,Ð&Ô'Ô
(ð5ð ð5ð „\ð	5ð 5ð 5ñ .Ô-ð5ð Ð˜	ÔEÔMÑNÔNðØŒ<ðàŒLðð Œ,ðð „\ð	ð ð ñ OÔNðð Ð˜
Ô;ÔCÑDÔDðØŒ<ðà”ðð ”lðð ŒLð	ð
 ”,ðð ”|ðð Œ,ðð Œ|ðð ”Lðð ðð „\ðð ð ñ EÔDðð4 Ð˜œ	Ô+ÔEÑFÔFð
A¨u¬|ð 
AÀÄð 
Að 
Að 
Añ GÔFð
Að Ð˜Ô-Ð.Ñ/Ô/Øð  ØØðð Ø„|ðà
Œ,ðð ðð ð	ð
 ðð „\ðð ð ñ Ôñ 0Ô/ðð: Ð˜Ô-Ô4Ñ5Ô5ð
 ð	ð Ø
ˆuŒ|Ô
ðà�u”|Ô$ðð ˜œÔ%ðð ð	ð
 
ˆ%Œ,Ôðð ð ñ 6Ô5ðð Ð˜Ô-Ô4Ñ5Ô5ð
 ð	ð Ø
ˆuŒ|Ô
ðà�u”|Ô$ðð ˜œÔ%ðð ð	ð
 
ˆ%Œ,Ôðð ð ñ 6Ô5ðð Ð˜Ô*Ô1Ñ2Ô2ð
Ø˜œÔ%ð
à�e”lÔ#ð
ð ŒKÔð
ð 
ˆ%Œ,Ôð	
ð 
ð 
ñ 3Ô2ð
ð Ð˜Ô*Ô5Ñ6Ô6ð
Ø˜œÔ%ð
à�e”lÔ#ð
ð �%”+Ô$Ô%ð
ð 
ˆ%Œ,Ôð	
ð 
ð 
ñ 7Ô6ð
ð ÔÔ×'Ò'¨¬Ô(<Ô(EÑFÔFØÐ˜Ô.Ñ/Ô/ðØŒ<ðàŒLðð Œ/˜%œ,Ô
'ðð ”/ %¤,Ô/ð	ð
 ” ¤Ô.ðð ðð !&ðð ðð ˆ5Œ<˜œ u¤|Ð3Ô4ðð ð ñ 0Ô/ñ GÔFðð< €Ô�TÑÔð6˜T # x°°S°Ô'9Ð"9Ô:ð 6ð 6ð 6ñ Ôð6ð!˜T # x°°S°Ô'9Ð"9Ô:ð !ð !ð !ð !ð Ð˜Ô+Ñ,Ô,ðØ
Œ,ðà
Œ,ðð ŒLðð „\ð	ð ð ñ -Ô,ðð$ ÐÐ,Ô;ÔBÑCÔCð?ØŒ<ð?àð?ð ð?ð 
ð	?ð
 Œ;ð?ð ˆ5Œ<˜œÐ%Ô&ð?ð ?ð ?ñ DÔCð?ð Ð˜œÑ!Ô!ð
 ð	
)ð 
)Ø
Œ,ð
)àŒ<ð
)ð ŒLð
)ð ð	
)ð
 „\ð
)ð 
)ð 
)ñ "Ô!ð
)ð Ð˜œ	Ñ"Ô"ð
 ð	ð Ø
Œ,ðàŒ<ðð ŒLðð ð	ð
 „\ðð ð ñ #Ô"ðð Ð˜Ô3Ô;Ñ<Ô<Øð#Ø”ð#àŒLð#ð 
ð#ð ”ð	#ð
 „\ð#ð #ð #ñ Ôñ =Ô<ð#ð( Ð˜Ô)Ñ*Ô*ð ð1ð 1ð 1Ø
Œ,ð1à	ð1ð Œ<ð1ð 
Œð	1ð
 ð1ð ð1ð „\ð1ð 1ð 1ñ +Ô*ð1ðh Ð˜Ô4Ñ5Ô5ð /3Ø%&Ø&'Øð/ð /Ø„|ð/à�c”ð/ð �U˜3  S¤	˜>Ô*Ô+ð/ð �3˜˜Sœ	�>Ô"ð	/ð
 �C˜˜cœ�NÔ#ð/ð ð/ð ˆ5Œ<˜œÐ%Ô&ð/ð /ð /ñ 6Ô5ð/ðd Ð˜Ô0Ñ1Ô1ðØ„|ðØ"& s¤)ðà
ˆ5Œ<˜œÐ%Ô&ðð ð ñ 2Ô1ðð" Ð˜Ô)Ô0Ñ1Ô1ð
 ØØØ%)ð	ð 	ð 	Ø”\ð	à
Œ+Ô
ð	ð ð		ð
 ð	ð �3Œ-ð	ð �U”\Ô"ð	ð „\ð	ð 	ð 	ñ 2Ô1ð	ð& Ð˜Ô8Ñ9Ô9ð Ø%ØØ+/ðEð EØ
Œ,ðEàŒ<ðEð ðEð ð	Eð
 ðEð ˜œÔ(ðEð ˆ5Œ<˜œÐ%Ô&ðEð Eð Eñ :Ô9ðEð Eð Er+   