§
    ŠŠtj¤ú  ã                   ó´  — U 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 d dlmZmZmZmZmZmZ d dlmZmZ d dlZd dlmc mZ d dlmZ d dlmZmZ d dl m!Z!m"Z" d d	l#m$Z$ 	 d d
lm%Z% n# e&$ r  e'e(¦  «        Z%Y nw xY werd dl)m*Z*  ede¬¦  «        Z+ edd¬¦  «        Z, e-ed¦  «        o e-ed¦  «        Z.ej/        d„ ¦   «         Z0 G d„ d¦  «        Z1de1defd„Z2i Z3e4e5df         e6d<   ej7        ej8        ej9        ej:        ej;        ej<        ej=        gZ> G d„ de1e j?        ¦  «        Z@d„ ZAd„ ZBd„ ZCd„ ZD G d„ d ¦  «        ZE eE¦   «         aFdDd"„ZGd#„ ZHd$„ ZId%„ ZJd&„ ZKd'„ ZLd(„ ZM eN¦   «         aOeNd)         e6d*<   d+„ ZPd,„ ZQd-„ ZR G d.„ d)e1ee,e+f         ¦  «        ZS G d/„ d0eSe,e+f         ¦  «        ZTd1eUfd2„ZVd1eUfd3„ZWd4ejX        d1eUfd5„ZY G d6„ d7ee,e+f         ¦  «        ZZdeZe,e+f         d8e,j[        d9e,j\        d1e+fd:„Z] G d;„ d<ej^        ¦  «        Z_d=„ Z`d>„ Za G d?„ d@ej^        ¦  «        Zb G dA„ dBej^        ¦  «        Zc ec¦   «         Zdece6dC<   dS )Eé    N)ÚCallableÚIterator)Úcached_property)ÚAnyÚClassVarÚConcatenateÚfinalÚGenericÚTYPE_CHECKING)Ú	ParamSpecÚTypeVar)Ú_utils_internal)Ú_dispatch_is_included_in_aliasÚDispatchKey)Údispatch_functorchÚTransformType)ÚTorchDispatchMode)ÚNotImplementedType)ÚBaseFunctionalizeAPIÚ_T©ÚdefaultÚ_P.ÚgetdlopenflagsÚsetdlopenflagsc               #   óð   K  — t           sdV — dS t          j        ¦   «         } t          j        | t          j        z  ¦  «         	 dV — t          j        | ¦  «         dS # t          j        | ¦  «         w xY w)z�
    Context manager to set the RTLD_GLOBAL dynamic linker flag while we open a
    shared library to load custom operators.
    N)Ú_SET_GLOBAL_FLAGSÚsysr   r   ÚctypesÚRTLD_GLOBAL)Ú	old_flagss    úH/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_ops.pyÚdl_open_guardr#   (   s�   è è € õ ð ØˆˆˆØˆÝÔ"Ñ$Ô$€IÝÔ�y¥6Ô#5Ñ5Ñ6Ô6Ð6ð&ØˆˆˆåÔ˜9Ñ%Ô%Ð%Ð%Ð%ø�Ô˜9Ñ%Ô%Ð%Ð%øøøs   ÁA ÁA5c                   óö   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zdee	         ee
j                 z  ez  ez  deeeef         geeef         f         fd„Zd	eed
ef         ef         deed
ef         ef         fd„Zd„ ZdS )ÚOperatorBasez·
    Base class for OpOverload (which represents C++ ATen operators) and HigherOrderOperator
    (which represents Python-only operators that are unrepresentable in TorchScript).
    c                 ó>   — i | _         i | _        i | _        i | _        d S ©N)Ú_dispatch_cacheÚ
py_kernelsÚpython_key_tableÚfunctorch_table©Úselfs    r"   Ú__init__zOperatorBase.__init__?   s6   € ð  UWˆÔð BDˆŒð ð 	Ôð  "ˆÔÐÐó    c                 ó   — t           ‚r'   ©ÚNotImplementedError©r-   ÚargsÚkwargss      r"   Ú__call__zOperatorBase.__call__i   ó   € Ý!Ð!r/   c                 ó   — || j         v S r'   )r)   )r-   Úks     r"   Úhas_kernel_for_dispatch_keyz(OperatorBase.has_kernel_for_dispatch_keyl   s   € Ø�D”OÐ#Ð#r/   c                 óˆ   — | j         D ]9}t          j                             |¦  «        s|                     |¦  «        r dS Œ:dS )NTF)r)   ÚtorchÚ_CÚ_dispatch_is_alias_keyÚhas)r-   Úksr9   s      r"   Úhas_kernel_for_any_dispatch_keyz,OperatorBase.has_kernel_for_any_dispatch_keyo   sI   € Ø”ð 	ð 	ˆAÝ”8×2Ò2°1Ñ5Ô5ð ¸"¿&º&À¹)¼)ð Ø�t�tøØˆur/   r9   Úreturnc                 ó|   ‡ ‡— dt           t          t          f         dt           t          t          f         fˆˆ fd„}|S )NÚfnrB   c                 óÒ  •— t          j        ‰¦  «        rot          ‰t          ¦  «        st          ‰t          j        ¦  «        r@‰‰j        v rt          ‰› d�¦  «        ‚| ‰j        ‰<   ‰j         	                    ¦   «          | S t          ‰t          ¦  «        r'‰‰j        v rt          ‰› d�¦  «        ‚| ‰j        ‰<   | S t          ‰t          ¦  «        st          dt          ‰¦  «        › �¦  «        ‚‰t          j        k    rt          d¦  «        ‚‰‰j        v r't#          d‰› d‰                     ¦   «         › �¦  «        ‚| ‰j        ‰<   ‰j         	                    ¦   «          | S )Nz' already registered in python_key_tablez& already registered in functorch_tablezexpected DispatchKey, got z>Please register a mode for the DispatchKey.Python key instead.z%Trying to override a python impl for z on operator )ÚinspectÚisclassÚ
issubclassr   r<   ÚTensorr*   ÚAssertionErrorr(   ÚclearÚ
isinstancer   r+   r   ÚtypeÚPythonr)   ÚRuntimeErrorÚname)rD   r9   r-   s    €€r"   Úinnerz#OperatorBase.py_impl.<locals>.innery   sŠ  ø€ ÝŒ˜qÑ!Ô!ð Ý˜1Õ/Ñ0Ô0ðÝ4>¸qÅ%Ä,Ñ4OÔ4Oðð ˜Ô-Ð-Ð-Ý(¨AÐ)VÐ)VÐ)VÑWÔWÐWà+-�Ô% aÑ(ØÔ$×*Ò*Ñ,Ô,Ð,Ø�	å˜!�]Ñ+Ô+ð Ø˜Ô,Ð,Ð,Ý(¨AÐ)UÐ)UÐ)UÑVÔVÐVØ*,�Ô$ QÑ'Ø�	å˜a¥Ñ-Ô-ð MÝ$Ð%KÅ$ÀqÁ'Ä'Ð%KÐ%KÑLÔLÐLØ•KÔ&Ò&Ð&Ý$ØTñô ð ð �D”OÐ#Ð#Ý"ØY¸AÐYÐYÈDÏIÊIÉKÌKÐYÐYñô ð ð "$ˆDŒO˜AÑØÔ ×&Ò&Ñ(Ô(Ð(ØˆIr/   )r   r   r   )r-   r9   rQ   s   `` r"   Úpy_implzOperatorBase.py_implu   sO   øø€ ð	•h�r¥2˜vÔ&ð 	­8µB½°FÔ+;ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð@ ˆr/   rD   r   c           	      ó   ‡‡‡‡— ddl mŠm}mŠmŠ dt
          j        dt
          j        dt          fˆˆfd„}d|d z  dt
          j        dt
          j        dt          t          z  fˆˆfd„}dt
          j        dt
          j        dt          fˆˆfd	„} |  
                    t          j        ¦  «        |¦  «          |  
                    |¦  «        |¦  «          |  
                    t          j        ¦  «        |¦  «         ‰S )
Nr   )ÚCppFunctionalizeAPIÚFunctionalTensorModeÚFunctorchFunctionalizeAPIÚPythonFunctionalizeAPIr4   r5   rB   c                  ó,   •—  ‰ ‰¦   «         g| ¢R i |¤ŽS r'   © )r4   r5   rT   rD   s     €€r"   Úfunctionalize_dk_fnz?OperatorBase.py_functionalize_impl.<locals>.functionalize_dk_fn²   s-   ø€ Ø�2Ð)Ð)Ñ+Ô+Ð=¨dÐ=Ð=Ð=°fÐ=Ð=Ð=r/   Úmodec                 ó‚   •— ddl m} ddlm} ddlm}  |||f||f¬¦  «        rt          S  ‰ ‰| ¦  «        g|¢R i |¤ŽS )Nr   )Úhas_user_subclass)Ú
FakeTensor)ÚFunctionalTensor)Úallowed_subclasses)Útorch._higher_order_ops.utilsr]   Útorch._subclassesr^   Ú#torch._subclasses.functional_tensorr_   ÚNotImplemented)r[   r4   r5   r]   r^   r_   rW   rD   s         €€r"   Úfunctionalize_dispatch_mode_fnzJOperatorBase.py_functionalize_impl.<locals>.functionalize_dispatch_mode_fnµ   sš   ø€ ð HÐGÐGÐGÐGÐGØ4Ð4Ð4Ð4Ð4Ð4ØLÐLÐLÐLÐLÐLà Ð Ø�v�Ø$.Ð0@Ð#Aðñ ô ð &õ &Ð%Ø�2Ð,Ð,¨TÑ2Ô2ÐD°TÐDÐDÐD¸VÐDÐDÐDr/   c                 ó.   •—  ‰ ‰| ¦  «        g|¢R i |¤ŽS r'   rY   )Úinterpreterr4   r5   rV   rD   s      €€r"   Úfunctionalize_functorch_fnzFOperatorBase.py_functionalize_impl.<locals>.functionalize_functorch_fnÃ   s1   ø€ ð �2Ð/Ð/°Ñ<Ô<ÐN¸tÐNÐNÐNÀvÐNÐNÐNr/   )rc   rT   rU   rV   rW   r   r4   r5   r   r   rR   r   ÚFunctionalizer   )	r-   rD   rU   rZ   re   rh   rT   rV   rW   s	    `    @@@r"   Úpy_functionalize_implz"OperatorBase.py_functionalize_impl¦   s‰  øøøø€ ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð	>¥r¤wð 	>½"¼)ð 	>Íð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð	EØ&¨Ñ-ð	EÝ68´gð	EÝIKÌð	EåÕ$Ñ$ð	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð	OÝ "¤ð	OÝ35´9ð	Oåð	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð
 	0ˆ�Š•[Ô.Ñ/Ô/Ð0CÑDÔDÐDØ*ˆ�ŠÐ)Ñ*Ô*Ð+IÑJÔJÐJØ1ˆ�Š•]Ô0Ñ1Ô1Ð2LÑMÔMÐMàˆ	r/   c                 ó   — t           ‚r'   r1   r,   s    r"   rP   zOperatorBase.nameÎ   r7   r/   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r.   r6   r:   rA   rM   r   r<   rI   r   r   r   r   r   rR   r   rj   rP   rY   r/   r"   r%   r%   9   s  € € € € € ðð ð
("ð ("ð ("ðT"ð "ð "ð$ð $ð $ðð ð ð$àÐ!Ô" T¨%¬,Ô%7Ñ7¸-ÑGÈ+ÑUð$ð 
�8˜B ˜FÔ#Ð$ h¨r°2¨vÔ&6Ð6Ô	7ð$ð $ð $ð $ðb&Ø˜;Ð'=¸rÐ'AÔBÀBÐFÔGð&à	�+Ð4°bÐ8Ô9¸2Ð=Ô	>ð&ð &ð &ð &ðP"ð "ð "ð "ð "r/   r%   Úopr9   c                 ó°  — |                       |¦  «        r|S t          j        }|t          j        k    st	          ||¦  «        r|                       |¦  «        r|S t          j        }|t          j        k    st	          ||¦  «        r|                       |¦  «        r|S |                      t          j         	                    |¦  «        ¦  «        p|                       t          j        ¦  «        }t          j
        }|t          j        k    r)t	          ||¦  «        r|                       |¦  «        r|s|S t          j        }|t          j        k    st	          ||¦  «        r\|                       |¦  «        rG|t          j        k    r3|                      t          j        j        ¦  «        rt          d¦  «        ‚|s|S t          j        }t	          ||¦  «        r|                       |¦  «        r|S t          j        }t	          ||¦  «        r|                       |¦  «        r|S t          j                             |¦  «        r|S t%          d| › d|› �¦  «        ‚)Nzambiguous autogradother kernelzcould not find kernel for ú at dispatch key )r:   r   Ú&CompositeExplicitAutogradNonFunctionalÚ	UndefinedÚis_included_in_aliasÚCompositeExplicitAutogradrA   r<   r=   Ú*_dispatch_get_backend_keyset_from_autogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeImplicitAutogradÚAutogradOtherÚ _dispatch_autogradother_backendsrO   ÚAutogradÚFuncTorchBatchedDecompositionÚ_dispatch_has_backend_fallbackr2   )rp   r9   ÚcandÚhas_backend_kernels       r"   Úresolve_keyr�   Ó   s]  € à	×%Ò% aÑ(Ô(ð ØˆåÔ=€Dà	�[Ô"Ò"Ð"Õ&:¸1¸dÑ&CÔ&CÐ"Ø
×
(Ò
(¨Ñ
.Ô
.ð 	#àˆåÔ0€Dà	�[Ô"Ò"Ð"Õ&:¸1¸dÑ&CÔ&CÐ"Ø
×
(Ò
(¨Ñ
.Ô
.ð 	#àˆØ×;Ò;ÝŒ×;Ò;¸AÑ>Ô>ñô ð Oà	×	'Ò	'­Ô(MÑ	NÔ	Nð õ Ô<€Dà	
�kÔ#Ò	#Ð	#Õ(<¸QÀÑ(EÔ(EÐ	#Ø×*Ò*¨4Ñ0Ô0ð 
$à"ð 
$ð ˆÝÔ0€Dà	�[Ô"Ò"Ð"Õ&:¸1¸dÑ&CÔ&CÐ"Ø
×
(Ò
(¨Ñ
.Ô
.ð 	#à•Ô)Ò)Ð)¨b×.PÒ.PÝŒHÔ5ñ/
ô /
Ð)õ Ð?Ñ@Ô@Ð@Ø#ð 	ØˆKåÔ€DÝ˜A˜tÑ$Ô$ð ¨×)GÒ)GÈÑ)MÔ)Mð ØˆåÔ4€DÝ˜A˜tÑ$Ô$ð ¨×)GÒ)GÈÑ)MÔ)Mð Øˆå„x×.Ò.¨qÑ1Ô1ð ð ˆÝ
ÐS¸2ÐSÐSÐPQÐSÐSÑ
TÔ
TÐTr/   ÚHigherOrderOperatorÚ_higher_order_opsc                   ó–  ‡ — e Zd Zdddœˆ fd„
Zdee         eej                 z  ez  e	z  de
e
eef         ge
eef         f         fˆ fd„Zde
eef         de
eef         fd„Zed	„ ¦   «         Zedefd
„¦   «         Zd„ Zdeedf         deeef         deej        df         fd„Zd„ Zej        d„ ¦   «         Zd„ Zd„ Zd„ Z dd„Z!ˆ xZ"S )r‚   F)Ú	cacheableÚ supports_training_input_mutationc                ó~  •— t          ¦   «                              ¦   «          t          | ¦  «        t          u rt	          d¦  «        ‚|| _        || _        | t          |<   d| _        d| _	        || _
        || _        t          j                             ¦   «         | _        t           D ]}|                      |¦  «         Œd S )NzODirect instantiation of HigherOrderOperator is not allowed. Please subclass it.Úhigher_orderútorch.ops.higher_order)Úsuperr.   rM   r‚   rO   Ú_namerl   rƒ   Ú_nsrm   Ú
_cacheableÚ!_supports_training_input_mutationr<   r=   Ú_dispatch_keyset_fullÚnon_fallthrough_keysÚ2_HIGHER_ORDER_OP_DEFAULT_FALLTHROUGH_DISPATCH_KEYSÚfallthrough)r-   rP   r…   r†   Údispatch_keyÚ	__class__s        €r"   r.   zHigherOrderOperator.__init__  sÅ   ø€ õ 	‰Œ×ÒÑÔÐÝ�‰:Œ:Õ,Ð,Ð,ÝØañô ð ð ˆŒ
ð ˆŒØ"&Õ˜$ÑØ!ˆŒØ2ˆŒØ#ˆŒð 2RˆÔ.å$)¤H×$BÒ$BÑ$DÔ$DˆÔ!åNð 	+ð 	+ˆLØ×Ò˜\Ñ*Ô*Ð*Ð*ð	+ð 	+r/   r9   rB   c                 óâ   •— t          |t          ¦  «        r9| j                             |¦  «        s| j                             |¦  «        | _        t          ¦   «                              |¦  «        S r'   )rL   r   r�   r?   ÚaddrŠ   rR   ©r-   r9   r”   s     €r"   rR   zHigherOrderOperator.py_impl=  s`   ø€ õ �a�Ñ%Ô%ð 	I¨dÔ.G×.KÒ.KÈAÑ.NÔ.Nð 	IØ(,Ô(A×(EÒ(EÀaÑ(HÔ(HˆDÔ%Ý‰wŒw�Š˜qÑ!Ô!Ð!r/   rD   c                 ó¦   ‡ ‡— dt           j        dt           j        dt          fˆˆ fd„} ‰                      t
          j        ¦  «        |¦  «         ‰S )Nr4   r5   rB   c                  óÒ  •— t          j        ¦   «         r&t          j        t           j        d„ g | ¢|‘R ¦  «        r>t           j                             ¦   «         5   ‰| i |¤Žcd d d ¦  «         S # 1 swxY w Y   ddlm} ‰j	        s[ |‰¦  «        rP ‰j
        | i |¤Ž}t          d„ |j        D ¦   «         ¦  «        r%t          d‰                     ¦   «         › d�¦  «        ‚ ‰| i |¤ŽS )Nc                 ó   — | j          S r'   )Úrequires_grad)Úts    r"   ú<lambda>zRHigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autograd.<locals>.<lambda>L  s   € ˜aœoÐ-€ r/   r   )Ú_has_gen_schemac              3   ó$   K  — | ]}|j         V — Œd S r'   )Úis_write©Ú.0Úargs     r"   ú	<genexpr>zSHigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autograd.<locals>.<genexpr>V  s$   è è € Ð@Ð@¨�s”|Ð@Ð@Ð@Ð@Ð@Ð@r/   zThe zå HigherOrderOperator does not currently support training with in-place input or buffer mutations If you require this feature, please submit an issue to PyTorch. Alternatively, consider creating your own custom autograd.Function. )r<   Úis_grad_enabledÚpytreeÚtree_all_onlyrI   r=   Ú_AutoDispatchBelowAutogradra   rž   rŽ   Ú
gen_schemaÚanyÚ	argumentsrO   rP   )r4   r5   rž   ÚschemarD   r-   s       €€r"   Úmaybe_run_autogradz@HigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autogradI  sv  ø€ ÝÔ(Ñ*Ô*ð 1­fÔ.BÝ”Ø-Ð-Ø�$�˜��ñ/ô /ð 1õ
 ”X×8Ò8Ñ:Ô:ð 1ð 1Ø˜4 Ð0¨Ð0Ð0ð1ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð FÐEÐEÐEÐEÐEàÔ9ð ¸o¸oÈdÑ>SÔ>Sð Ø(˜œ¨$Ð9°&Ð9Ð9�ÝÐ@Ð@¨vÔ/?Ð@Ñ@Ô@Ñ@Ô@ð Ý&ð_˜tŸyšy™{œ{ð _ð _ð _ñô ð ð �2�tÐ&˜vÐ&Ð&Ð&s   ÁA.Á.A2Á5A2)r   r4   r5   r   rR   r   r|   )r-   rD   r­   s   `` r"   Úpy_autograd_implz$HigherOrderOperator.py_autograd_implE  sg   øø€ ð	'¥b¤gð 	'½¼ð 	'Årð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð. 	+ˆ�Š•[Ô)Ñ*Ô*Ð+=Ñ>Ô>Ð>àˆ	r/   c                 ó   — | j         S r'   )rŒ   r,   s    r"   Ú	namespacezHigherOrderOperator.namespaced  ó	   € àŒxˆr/   c                 ó¶   — ddl m} | j        pL| j        › d| j        › �t
          j        j        j        v p%t          | |¦  «        ot
          j
        j        j        S )Nr   )ÚAutogradFunctionApplyú.)Ú"torch._functorch.autograd_functionr³   r�   rm   rl   r<   Ú	_inductorÚconfigÚ!unsafe_marked_cacheable_functionsrL   Ú
_functorchÚ.autograd_cache_allow_custom_autograd_functions)r-   r³   s     r"   r…   zHigherOrderOperator.cacheableh  sr   € àLÐLÐLÐLÐLÐLð ŒOð Ø”/Ð3Ð3 D¤MÐ3Ð3ÝŒÔ%ÔGðHðõ ˜4Ð!6Ñ7Ô7ð [ÝÔ$Ô+ÔZð	
r/   c                 óD   — | j                              |¦  «        | _         d S r'   )r�   Úremove)r-   r“   s     r"   r’   zHigherOrderOperator.fallthroughv  s!   € Ø$(Ô$=×$DÒ$DÀ\Ñ$RÔ$RˆÔ!Ð!Ð!r/   r4   .r5   c                 óà   ‡‡— g Šd„ Šˆˆfd„}g |¢|                      ¦   «         ¢R D ]9} ||¦  «         t          |t          t          f¦  «        r|D ]} ||¦  «         ŒŒ:t          ‰¦  «        S )Nc                 óf   — t           j                             | ¦  «                             d¦  «        S )NrN   )r<   r=   Ú_dispatch_keysr?   )Útensors    r"   Úhas_python_keyz@HigherOrderOperator._get_overloaded_args.<locals>.has_python_key€  s&   € Ý”8×*Ò*¨6Ñ2Ô2×6Ò6°xÑ@Ô@Ð@r/   c                 ó„   •— t          | t          j        ¦  «        r" ‰| ¦  «        r‰                     | ¦  «         d S d S d S r'   )rL   r<   rI   Úappend)r£   rÁ   Úoverloaded_argss    €€r"   Úcheck_overloadedzBHigherOrderOperator._get_overloaded_args.<locals>.check_overloadedƒ  sV   ø€ Ý˜#�uœ|Ñ,Ô,ð ,°°ÀÑ1DÔ1Dð ,Ø×&Ò& sÑ+Ô+Ð+Ð+Ð+ð,ð ,ð ,ð ,r/   )ÚvaluesrL   ÚlistÚtuple)r-   r4   r5   rÅ   r£   ÚarÁ   rÄ   s         @@r"   Ú_get_overloaded_argsz(HigherOrderOperator._get_overloaded_argsy  sº   øø€ ð
 /1ˆð	Að 	Að 	Að	,ð 	,ð 	,ð 	,ð 	,ð 	,ð -�TÐ,˜FŸMšM™OœOÐ,Ð,ð 	(ð 	(ˆCØÐ˜SÑ!Ô!Ð!Ý˜#¥¥e˜}Ñ-Ô-ð (Øð (ð (�AØ$Ð$ QÑ'Ô'Ð'Ð'øå�_Ñ%Ô%Ð%r/   c                ó  — ddl m} || j        v r<| j        |         }t          |t          ¦  «        rt          d|› �¦  «        ‚ ||i |¤ŽS |t          j        k    rt          | ||¦  «        S |t          j        k    �r÷|  	                    ||¦  «        }ddl m
}  |¦   «         }|�Øt          |¦  «        | j        v rI| j        t          |¦  «                 }	 |¦   «         5 }
 |	|
g|¢R i |¤Ž}d d d ¦  «         n# 1 swxY w Y   nn|j        r; |¦   «         5 }
|                     | g ||¦  «        cd d d ¦  «         S # 1 swxY w Y   n,t          d| j        › d|› d|› d|› d	| j        › d
|› d�¦  «        ‚|t"          ur|S |D ]Á}t          |¦  «        }|j        t$          j        j        u rŒ*|t$          j        j        j        u r8t$          j        j        j        }| j        |         }	 |	|j        g|¢R i |¤Ž}|c S || j        v r| j        |         }	 |	|i |¤Ž}nt          d| j        › d|› d�¦  «        ‚|t"          ur|c S ŒÂt5          d| j        › d|› dd„ |D ¦   «         › d| j        › d|› d�¦  «        ‚t$          j                             |¦  «        }|t          j        k    rÒddl m
} t;          ¦   «         dk    rºt$          j                             t          j        ¦  «        s‘t?          ¦   «         }|€t          d¦  «        ‚t          |¦  «        | j        vrt          d|› d�¦  «        ‚| j        t          |¦  «                 }	 ||¦  «        5 }
 |	|
g|¢R i |¤Žcd d d ¦  «         S # 1 swxY w Y   tA          | |¦  «        }|| j!        vrt          d| j        › d|› d|› d�¦  «        ‚|t          j        k    r| j!        |         | j        |<   | j!        |         }t          |t          ¦  «        rt          d|› �¦  «        ‚ ||i |¤ŽS )Nr   ©Ú_get_current_dispatch_modez!unexpected DispatchKey in cache: )Ú_pop_mode_temporarilyz5There was no rule registered for HigherOrderOperator z
 and mode z.Hint: set zc's supports_higher_order_operators to True. This causes all higher order operators to pass through zk's __torch_dispatch__, so handle them accordingly by adding support for HigerOrderOperators (in this case, z) in zC.__torch_dispatch__ or returning NotImplemented when not supported.z%There was no rule registered for HOP z and subclass z. We recommend filing an issue.zHigherOrderOperator 'z¹' is not supported for the given input types. This typically happens when using custom tensor types or dispatch modes that don't have implementations for this operation.

Current mode: z
Input types: c                 ó6   — g | ]}t          |¦  «        j        ‘ŒS rY   )rM   rl   )r¢   rÉ   s     r"   ú
<listcomp>z0HigherOrderOperator.dispatch.<locals>.<listcomp>ã  s!   € Ð KÐ KÐ K°a¥ a¡¤Ô!1Ð KÐ KÐ Kr/   z$

To fix this, can add support for 'z' in z's __torch_dispatch__
zIIllegal invocation of dispatch on DispatchKey.PreDispatch without a mode.zCurrent active mode z not registeredz.could not find kernel for HigherOrderOperator rr   z (resolved from ú)z&unexpected DispatchKey in py_kernels: )"Útorch.utils._python_dispatchrÍ   r(   rL   r   rJ   ÚFuncTorchDynamicLayerFrontModer   rN   rÊ   rÎ   rM   r*   Úsupports_higher_order_operatorsÚ__torch_dispatch__r2   r‹   rd   r<   r=   Ú_disabled_torch_dispatch_implÚ_subclassesÚfake_tensorr^   ÚFakeTensorModeÚ	fake_modeÚ	TypeErrorÚ_to_functionality_keyÚPreDispatchÚ&_len_torch_dispatch_stack_pre_dispatchÚ&_dispatch_tls_is_dispatch_key_excludedÚ'_get_current_dispatch_mode_pre_dispatchr�   r)   )r-   r“   r4   r5   rÍ   ÚkernelrÄ   rÎ   Ú	curr_modeÚhandlerr[   Úresultr£   Úsubclass_typeÚfunctionality_keyÚ	final_keys                   r"   ÚdispatchzHigherOrderOperator.dispatch‘  s°  € ØKÐKÐKÐKÐKÐKà˜4Ô/Ð/Ð/ØÔ)¨,Ô7ˆFÝ˜&¥+Ñ.Ô.ð SÝ$Ð%QÈÐ%QÐ%QÑRÔRÐRØ�6˜4Ð* 6Ð*Ð*Ð*à�;ÔEÒEÐEÝ% d¨D°&Ñ9Ô9Ð9à�;Ô-Ò-Ñ-Ø"×7Ò7¸¸fÑEÔEˆOð KÐJÐJÐJÐJÐJà2Ð2Ñ4Ô4ˆIØÐ$Ý˜	‘?”? dÔ&;Ð;Ð;Ø"Ô3µD¸±O´OÔD�GØ.Ð.Ñ0Ô0ð @°Dð ") ¨Ð!?°Ð!?Ð!?Ð!?¸Ð!?Ð!?˜ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @øð
 !Ô@ð Ø2Ð2Ñ4Ô4ð X¸Ø#,×#?Ò#?ÀÀbÈ$ÐPVÑ#WÔ#WðXð Xð Xð Xñ Xô Xð Xð Xð Xð Xð Xð Xøøøð Xð Xð Xð Xð Xõ 2ðMÐTXÔT^ð Mð MÐjsð Mð MØ)2ðMð MàW`ðMð Mð W[ÔV`ð	Mð Mð
 !*ðMð Mð Mñô ð ð ¥Ð/Ð/Ø!�Mð 'ð "ð "�Ý $ S¡	¤	�à!Ô4Ý”xÔ=ð>ð >ð ð !¥EÔ$5Ô$AÔ$LÐLÐLÝ$)Ô$5Ô$AÔ$P�MØ"Ô3°MÔB�GØ$˜W S¤]ÐD°TÐDÐDÐD¸VÐDÐD�FØ!�M�M�Mà  DÔ$9Ð9Ð9Ø"Ô3°MÔB�Gð %˜W dÐ5¨fÐ5Ð5�F�Få-ð9ÀÄ
ð 9ð 9ÐZgð 9ð 9ð 9ñô ð ð ¥Ð/Ð/Ø!�M�M�Mð 0õ ði¨¬
ð ið ið "+ðið ið !LÐ K¸?Ð KÑ KÔ Kð	ið ið
 6:´Zðið ið
 GPðið ið iñô ð õ "œH×:Ò:¸<ÑHÔHÐØ¥Ô 7Ò7Ð7ØJÐJÐJÐJÐJÐJõ
 7Ñ8Ô8¸1Ò<Ð<Ý”h×EÒEÝÔ"ñô ð =õ DÑEÔE�	ØÐ$Ý(Øcñô ð õ ˜	‘?”?¨$Ô*?Ð?Ð?Ý(ØI¨yÐIÐIÐIñô ð ð Ô/µ°Y±´Ô@�Ø*Ð*Ð+<Ñ=Ô=ð :ÀØ"˜7 4Ð9¨$Ð9Ð9Ð9°&Ð9Ð9ð:ð :ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :õ    lÑ3Ô3ˆ	ð ˜DœOÐ+Ð+Ý%ðNÀÄð Nð NØ#,ðNð NØ>JðNð Nð Nñô ð ð �;Ô2Ò2Ð2Ø15´ÀÔ1KˆDÔ  Ñ.Ø” Ô+ˆõ �f�kÑ*Ô*ð 	TÝ Ð!RÈ&Ð!RÐ!RÑSÔSÐSØˆv�tÐ&˜vÐ&Ð&Ð&s6   Ã C9Ã9C=Ä C=ÄD;Ä;D?ÅD?ÍM+Í+M/Í2M/c                ó  — t          ||¦  «        }t          j                             |¦  «        rt          j        j        | |g|¢R i |¤ŽS t          ||| j        ¦  «        } | j        |                     ¦   «         g|¢R i |¤ŽS r'   )	Ú_to_flat_tupler<   Ú	overridesÚhas_torch_functionÚhandle_torch_functionÚ_compute_keysetr�   rè   ÚhighestPriorityTypeId)r-   r4   r5   Ú	flat_argsÚdispatch_key_sets        r"   r6   zHigherOrderOperator.__call__  s¦   € å" 4¨Ñ0Ô0ˆ	ÝŒ?×-Ò-¨iÑ8Ô8ð 	Ý”?Ô8Ø�iðØ"&ðð ð Ø*0ðð ð õ +¨4°¸Ô9RÑSÔSÐØˆtŒ}Ð-×CÒCÑEÔEÐWÈÐWÐWÐWÐPVÐWÐWÐWr/   c                 ó2   — t          d| j        › d�¦  «        ‚)NzHigherOrderOperator z¼ does not implement a gen_schema. This is OK as long as the hop is functional. e.g. it should not mutate its inputs and there are no input, output aliasing via views or direct referencing.)r2   r‹   r3   s      r"   r©   zHigherOrderOperator.gen_schema-  s,   € Ý!ð0 4¤:ð 0ð 0ð 0ñ
ô 
ð 	
r/   c                 ó,   — |                       ¦   «         › S r'   )rP   r,   s    r"   Ú__str__zHigherOrderOperator.__str__5  s   € Ø—)’)‘+”+ÐÐr/   c                 ó   — | j         S r'   ©r‹   r,   s    r"   rP   zHigherOrderOperator.name8  ó
   € ØŒzÐr/   Nc                 ó   — | S r'   rY   ©r-   Úmemos     r"   Ú__deepcopy__z HigherOrderOperator.__deepcopy__<  ó   € Øˆr/   r'   )#rl   rm   rn   r.   rM   r   r<   rI   r   r   r   r   r   rR   r®   Úpropertyr°   r	   Úboolr…   r’   rÈ   r   ÚdictÚstrrÊ   rè   ÚabcÚabstractmethodr6   r©   rô   rP   rû   Ú__classcell__©r”   s   @r"   r‚   r‚     sÿ  ø€ € € € € ð "'Èð+ð +ð +ð +ð +ð +ð +ðD"àÐ!Ô" T¨%¬,Ô%7Ñ7¸-ÑGÈ+ÑUð"ð 
�8˜B ˜FÔ#Ð$ h¨r°2¨vÔ&6Ð6Ô	7ð"ð "ð "ð "ð "ð "ðà�R˜�VÔðð 
�"�b�&Ô	ðð ð ð ð> ðð ñ „Xðð ð
˜4ð 
ð 
ð 
ñ „Uð
ðSð Sð Sð&Ø˜#˜s˜(”Oð&Ø-1°#°s°(¬^ð&à	ˆuŒ|˜SÐ Ô	!ð&ð &ð &ð &ð0C'ð C'ð C'ðJ 	ÔðXð Xñ ÔðXð,
ð 
ð 
ð ð  ð  ðð ð ðð ð ð ð ð ð ð r/   c                 ó$   — t          j        | i |¤ŽS r'   )r¦   Úarg_tree_leaves©r4   r5   s     r"   rê   rê   @  s   € ÝÔ! 4Ð2¨6Ð2Ð2Ð2r/   c                 óB   — t          | |¦  «        }t          ||¦  «        S r'   )Ú_get_tensorsÚkey_extractor)r4   r5   r�   Útensorss       r"   rî   rî   D  s"   € Ý˜4 Ñ(Ô(€GÝ˜Ð"6Ñ7Ô7Ð7r/   c                 óX   — t          | |¦  «        }d„ |D ¦   «         }t          |¦  «        S )Nc                 óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS rY   )rL   r<   rI   )r¢   rœ   s     r"   rÐ   z _get_tensors.<locals>.<listcomp>K  s)   € ÐFÐFÐF˜­*°Q½¼Ñ*EÔ*EÐF�1ÐFÐFÐFr/   )rê   rÈ   )r4   r5   Úflat_allÚtensor_argss       r"   r	  r	  I  s2   € Ý˜d FÑ+Ô+€HØFÐF˜hÐFÑFÔF€KÝ�ÑÔÐr/   c                 óÜ   — t           j                             ¦   «         }| D ]$}|t           j                             |¦  «        z  }Œ%|t           j                             ¦   «         z
  }||z  }|S r'   )r<   r=   Ú_dispatch_tls_local_include_setr¿   Ú_dispatch_tls_local_exclude_set)r  Úkey_maskÚkey_setrÀ   s       r"   r
  r
  Q  sg   € ÝŒh×6Ò6Ñ8Ô8€GØð <ð <ˆØ�EœH×3Ò3°FÑ;Ô;Ñ;ˆˆØ�œ×@Ò@ÑBÔBÑB€GØ˜Ñ €GØ€Nr/   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )Ú_ModeStackStateForPreDispatchc                 ó&   — d d g| _         d | _        d S r'   )Ú*_ModeStackStateForPreDispatch__infra_modesÚ_schema_check_moder,   s    r"   r.   z&_ModeStackStateForPreDispatch.__init__h  s   € Ø" D˜\ˆÔØ"&ˆÔÐÐr/   c                 ó˜   — |t          | j        ¦  «        k    r't          d|› dt          | j        ¦  «        › �¦  «        ‚|| j        |<   d S ©Nzindex z& out of bounds for infra_modes length ©Úlenr  rJ   )r-   Úindexr[   s      r"   Úsetz!_ModeStackStateForPreDispatch.setl  s]   € Ø•C˜Ô*Ñ+Ô+Ò+Ð+Ý Ø_˜Ð_Ð_ÅcÈ$ÔJ\ÑF]ÔF]Ð_Ð_ñô ð ð %)ˆÔ˜5Ñ!Ð!Ð!r/   c                 óš   — |t          | j        ¦  «        k    r't          d|› dt          | j        ¦  «        › �¦  «        ‚| j        |         S r  r  )r-   r  s     r"   Úgetz!_ModeStackStateForPreDispatch.gets  sX   € Ø•C˜Ô*Ñ+Ô+Ò+Ð+Ý Ø_˜Ð_Ð_ÅcÈ$ÔJ\ÑF]ÔF]Ð_Ð_ñô ð ð Ô! %Ô(Ð(r/   c                 ól   — t          d„ | j        D ¦   «         ¦  «        t          | j        d u¦  «        z   S )Nc                 ó   — g | ]}|®|‘ŒS r'   rY   )r¢   Úis     r"   rÐ   z7_ModeStackStateForPreDispatch.count.<locals>.<listcomp>{  s   € ÐCÐCÐC˜!°Q°]�A°]°]°]r/   )r  r  Úintr  r,   s    r"   Úcountz#_ModeStackStateForPreDispatch.countz  sB   € ÝÐCÐC˜tÔ1ÐCÑCÔCÑDÔDÅsØÔ#¨4Ð/ñH
ô H
ñ 
ð 	
r/   N)rl   rm   rn   r.   r  r!  r&  rY   r/   r"   r  r  g  sP   € € € € € ð'ð 'ð 'ð)ð )ð )ð)ð )ð )ð
ð 
ð 
ð 
ð 
r/   r  Fc                 óv  ‡ ‡— t          ¦   «         Št          j        j        j        t          j        j        j        f}‰ �‰ |vrt          d|› d‰ › �¦  «        ‚|r‰ �t          d¦  «        ‚ˆˆ fd„} |¦   «         }t          ¦   «         }|dk    r*t          j                             t          j
        d¦  «         |S )Nz mode_key must be None or one of z, got z/mode_key must be None when schema_check is Truec                  ó˜  •— ‰t           j        j        j        u r9‰                     d¦  «        } t          ¦   «                              dd ¦  «         | S ‰t           j        j        j        u r9‰                     d¦  «        } t          ¦   «                              dd ¦  «         | S t          ¦   «         j        } d t          ¦   «         _        | S )Nr   é   )	r<   r=   Ú_TorchDispatchModeKeyÚPROXYr!  Ú!mode_stack_state_for_pre_dispatchr  Ú
FUNCTIONALr  )Úcurrent_modeÚcurrent_mode_stack_pre_dispatchÚmode_keys    €€r"   Ú_unset_modez,unset_mode_pre_dispatch.<locals>._unset_mode‘  s¸   ø€ ð •u”xÔ5Ô;Ð;Ð;Ø:×>Ò>¸qÑAÔAˆLÝ-Ñ/Ô/×3Ò3°A°tÑ<Ô<Ð<ØÐØ�œÔ7ÔBÐBÐBØ:×>Ò>¸qÑAÔAˆLÝ-Ñ/Ô/×3Ò3°A°tÑ<Ô<Ð<ØÐå<Ñ>Ô>ÔQˆLØEIÕ-Ñ/Ô/ÔBØÐr/   r   F)r,  r<   r=   r*  r+  r-  rJ   rÞ   Ú'_dispatch_tls_set_dispatch_key_includedr   rÝ   )r0  Úschema_checkÚ
valid_keysr1  r.  Únew_pre_dispatch_lenr/  s   `     @r"   Úunset_mode_pre_dispatchr6  ƒ  sê   øø€ Ý&GÑ&IÔ&IÐ#åŒÔ&Ô,ÝŒÔ&Ô1ð€Jð Ð °
Ð :Ð :ÝØK¨zÐKÐKÀÐKÐKñ
ô 
ð 	
ð ð TØÐÝ Ð!RÑSÔSÐSð ð  ð  ð  ð  ð  ð  �;‘=”=€LåAÑCÔCÐð
 ˜qÒ Ð ÝŒ×8Ò8½Ô9PÐRWÑXÔXÐXàÐr/   c                 ó$  — ddl m} ddlm} ddlm} t          | |||f¦  «        st          dt          | ¦  «        › �¦  «        ‚t          ¦   «         }t          | |¦  «        r<t          ¦   «         j        }|dk    rt          d¦  «        ‚| t          ¦   «         _        n¿t          | |¦  «        rXt          ¦   «                              d¦  «        }|�t          d|› �¦  «        ‚t          ¦   «                              d| ¦  «         nWt          ¦   «                              d¦  «        }|�t          d	|› �¦  «        ‚t          ¦   «                              d| ¦  «         |dk    r,t          j                             t"          j        d
¦  «         d S d S )Nr   )rU   )ÚSchemaCheckMode)ÚProxyTorchDispatchModezSmode must be FunctionalTensorMode, ProxyTorchDispatchMode, or SchemaCheckMode, got zYSchemaCheckMode for pre-dispatch must be used exclusively, found other modes on the stackr)  z.FunctionalTensorMode slot already occupied by z0ProxyTorchDispatchMode slot already occupied by T)rc   rU   Ú#torch._subclasses.schema_check_moder8  Ú"torch.fx.experimental.proxy_tensorr9  rL   rJ   rM   rÞ   r,  r  r!  r  r<   r=   r2  r   rÝ   )r[   rU   r8  r9  Úprevious_mode_stack_lenr.  s         r"   Ú_set_mode_pre_dispatchr=  ®  sê  € ØHÐHÐHÐHÐHÐHØCÐCÐCÐCÐCÐCØIÐIÐIÐIÐIÐIåØà Ø"Øð	
ñô ð 

õ ØnÕbfÐgkÑblÔblÐnÐnñ
ô 
ð 	
õ EÑFÔFÐÝ�$˜Ñ(Ô(ð 9Ý8Ñ:Ô:ÔMˆØ" QÒ&Ð&Ý Økñô ð ð BFÕ)Ñ+Ô+Ô>Ð>Ý	�DÐ.Ñ	/Ô	/ð 9Ý8Ñ:Ô:×>Ò>¸qÑAÔAˆØÐ#Ý ØOÀÐOÐOñô ð õ 	*Ñ+Ô+×/Ò/°°4Ñ8Ô8Ð8Ð8å8Ñ:Ô:×>Ò>¸qÑAÔAˆØÐ#Ý ØQÀ<ÐQÐQñô ð õ 	*Ñ+Ô+×/Ò/°°4Ñ8Ô8Ð8ð  !Ò#Ð#ÝŒ×8Ò8½Ô9PÐRVÑWÔWÐWÐWÐWð $Ð#r/   c                  óx  — t          ¦   «         } t          ¦   «         }|dk    rt          d¦  «        ‚| j        �t	          d d¬¦  «        S |                      d¦  «        �#t	          t          j        j        j	        ¦  «        S |                      d¦  «        �#t	          t          j        j        j
        ¦  «        S d S )Nr   zTrying to pop empty mode stackT)r3  r)  )r,  rÞ   rJ   r  r6  r!  r<   r=   r*  r-  r+  )Ú
mode_stackÚpre_dispatch_lens     r"   Ú_pop_mode_from_pre_dispatchrA  Þ  s§   € Ý2Ñ4Ô4€JÝ=Ñ?Ô?Ðà˜1ÒÐÝÐ=Ñ>Ô>Ð>àÔ$Ð0Ý& t¸$Ð?Ñ?Ô?Ð?Ø‡~‚~�aÑÔÐ$Ý&¥u¤xÔ'EÔ'PÑQÔQÐQØ‡~‚~�aÑÔÐ$Ý&¥u¤xÔ'EÔ'KÑLÔLÐLð %Ð$r/   c                  óB   — t          ¦   «                              ¦   «         S r'   )r,  r&  rY   r/   r"   rÞ   rÞ   í  s   € Ý,Ñ.Ô.×4Ò4Ñ6Ô6Ð6r/   c                 ó
  — | t           j        j        j        u r!t	          ¦   «                              d¦  «        S | t           j        j        j        urt          d| › �¦  «        ‚t	          ¦   «                              d¦  «        S )Nr   z*mode_key must be PROXY or FUNCTIONAL, got r)  )r<   r=   r*  r+  r,  r!  r-  rJ   )r0  s    r"   Ú_get_dispatch_mode_pre_dispatchrD  ñ  s{   € à•5”8Ô1Ô7Ð7Ð7Ý0Ñ2Ô2×6Ò6°qÑ9Ô9Ð9à�5œ8Ô9ÔDÐDÐDÝ ØG¸XÐGÐGñô ð õ 1Ñ2Ô2×6Ò6°qÑ9Ô9Ð9r/   c                  ó²  — t          ¦   «         j        �t          ¦   «         j        S t          ¦   «                              ¦   «         } | dk    r!t          ¦   «                              d¦  «        S | dk    rct          ¦   «                              d¦  «        �!t          ¦   «                              d¦  «        n t          ¦   «                              d¦  «        S d S )Né   r)  r   )r,  r  r&  r!  )Ú	stack_lens    r"   rà   rà   ý  s¾   € Ý(Ñ*Ô*Ô=ÐIÝ0Ñ2Ô2ÔEÐEå5Ñ7Ô7×=Ò=Ñ?Ô?ˆ	Ø˜Š>ˆ>Ý4Ñ6Ô6×:Ò:¸1Ñ=Ô=Ð=Ø˜Š>ˆ>õ 5Ñ6Ô6×:Ò:¸1Ñ=Ô=ÐIõ 2Ñ3Ô3×7Ò7¸Ñ:Ô:Ð:å6Ñ8Ô8×<Ò<¸QÑ?Ô?ðð
 ˆ4r/   c                  ó   — t           S r'   )Ú"_mode_stack_state_for_pre_dispatchrY   r/   r"   r,  r,    s   € å-Ð-r/   Ú
OpOverloadÚ
cached_opsc                 ó:   — t                                | ¦  «         d S r'   )rK  r–   )Úop_overloads    r"   Úadd_cached_oprN    s   € å‡N‚N�;ÑÔÐÐÐr/   c                  ó8   — t                                ¦   «          d S r'   )rK  rK   rY   r/   r"   Úreset_cached_opsrP    s   € å×ÒÑÔÐÐÐr/   c                  ó   — t           S r'   )rK  rY   r/   r"   Úget_cached_opsrR    s   € åÐr/   c                   ó|  ‡ — e Zd Zdddeeef         deeeef         ef         dej	        j
        dee         ddfˆ fd	„Zedefd
„¦   «         Zedefd„¦   «         Zedej	        j        fd„¦   «         Zd$d„Zd„ Zdej        dej        defd„Zdej	        j        dej        dej        defd„Zd„ Zd„ Zdedefˆ fd„Zdej	        j        defˆ fd„Ze defd„¦   «         Z!defd„Z"dej        dej        defd„Z#deddfd„Z$dedeeeef         z  fd„Z%d „ Z&e d!„ ¦   «         Z'e d"„ ¦   «         Z(e d#„ ¦   «         Z)ˆ xZ*S )%rJ  ÚoverloadpacketÚOpOverloadPacketrp   Úop_dkr¬   ÚtagsrB   Nc                 óÐ  •— t          ¦   «                              ¦   «          || _        || _        || _        || _        || _        |j        dk    rdn|j        | _        |rt          j
        j        |v | _        | j        j        | _        |j        r| xj        d|j        z   z  c_        | j        j                             d¦  «        d         › d| j        › �| _        |j        | _        |j        |_        | j        | _        i | _        | j        t          j        j        v | _        d }| j        j        D ]'}|j        €Œ
|€|j        j        }Œ|j        j        p|}Œ(|d uo| | _        d S )NÚ r   r´   ú::r)  )rŠ   r.   Ú_opÚ_op_dkÚ_schemaÚ_overloadpacketÚ_tagsÚoverload_nameÚ_overloadnamer<   ÚTagÚnondeterministic_seededÚ_nondeterministic_seededrP   r‹   Úsplitrl   rm   rn   Ú__annotations__ÚlibraryÚ_defsÚ_defined_in_pythonr«   Ú
alias_infor    Úis_view)	r-   rT  rp   rV  r¬   rW  r    rÉ   r”   s	           €r"   r.   zOpOverload.__init__'  sz  ø€ õ 	‰Œ×ÒÑÔÐØˆŒØˆŒØˆŒØ-ˆÔØˆŒ
àÔ-°Ò3Ð3ˆIˆI¸Ô9Mð 	Ôð ð 	VÝ,1¬IÔ,MÐQUÐ,UˆDÔ)Ø”\Ô&ˆŒ
ØÔð 	5ØˆJŒJ˜# Ô 4Ñ4Ñ4ˆJŒJØœ<Ô,×2Ò2°4Ñ8Ô8¸Ô;ÐRÐR¸dÔ>PÐRÐRˆŒØ(Ô3ˆŒØ&Ô1ˆŒØ œJˆÔØ!ˆÔð #'Ô"3µu´}Ô7JÐ"JˆÔð ˆØ”Ô'ð 	=ð 	=ˆAØŒ|Ð#ØØÐØœ<Ô0��ð œ<Ô0Ð<°H��Ø tÐ+Ð<°H°ˆŒˆˆr/   c                 óP   — | j         j                             dd¬¦  «        d         S )NrZ  r)  ©Úmaxsplitr   ©r]  rP   re  r,   s    r"   Ú
_namespacezOpOverload._namespaceS  ó%   € àŒ|Ô ×&Ò& t°aÐ&Ñ8Ô8¸Ô;Ð;r/   c                 óP   — | j         j                             dd¬¦  «        d         S )NrZ  r)  rm  ro  r,   s    r"   Ú_opnamezOpOverload._opnameW  rq  r/   c                 ój   — t           j                             | j        j        | j        j        ¦  «        S r'   )r<   r=   Ú_dispatch_find_schema_or_throwr]  rP   r`  r,   s    r"   Ú_handlezOpOverload._handle[  s+   € åŒx×6Ò6ØŒLÔ˜tœ|Ô9ñ
ô 
ð 	
r/   c                 ó   — | S r'   rY   rù   s     r"   rû   zOpOverload.__deepcopy__b  rü   r/   c                 ó8   — d| j         › d| j        › d| j        › d�S )Nz<OpOverload(op='r´   z', overload='z')>)rp  rs  ra  r,   s    r"   Ú__repr__zOpOverload.__repr__e  s*   € Øf $¤/ÐfÐf°D´LÐfÐfÈtÔOaÐfÐfÐfÐfr/   r4   r5   c                ó   —  | j         |i |¤ŽS r'   ©r[  r3   s      r"   r6   zOpOverload.__call__j  s   € ØˆtŒx˜Ð( Ð(Ð(Ð(r/   Úkeysetc                ó.   —  | j         j        |g|¢R i |¤ŽS r'   )rv  Úredispatch_boxed)r-   r|  r4   r5   s       r"   Ú
redispatchzOpOverload.redispatcho  s)   € ð -ˆtŒ|Ô,¨VÐE°dÐEÐEÐE¸fÐEÐEÐEr/   c                 ó*   — t          | j        ¦  «        S r'   ©Úhashr[  r,   s    r"   Ú__hash__zOpOverload.__hash__t  ó   € Ý�D”H‰~Œ~Ðr/   c                 ód   —  dj         g | j        j                             d¦  «        ¢| j        ‘R Ž S )Nz{}.{}.{}rZ  )Úformatr]  rP   re  ra  r,   s    r"   rô   zOpOverload.__str__x  s6   € Ø ˆzÔ ÐT $¤,Ô"3×"9Ò"9¸$Ñ"?Ô"?ÐTÀÔASÐTÐTÐTÐTr/   r9   c                 óª   •— t          ¦   «                              |¦  «        p1t          j                             |                      ¦   «         |¦  «        S r'   )rŠ   r:   r<   r=   Ú%_dispatch_has_kernel_for_dispatch_keyrP   r—   s     €r"   r:   z&OpOverload.has_kernel_for_dispatch_key{  sF   ø€ Ý‰wŒw×2Ò2Øñ
ô 
ð LåŒX×;Ò;¸D¿IºI¹K¼KÈÑKÔKð	Lr/   r@   c                 óª   •— t           j                             |                      ¦   «         |¦  «        p t	          ¦   «                              |¦  «        S r'   )r<   r=   Ú)_dispatch_has_kernel_for_any_dispatch_keyrP   rŠ   rA   )r-   r@   r”   s     €r"   rA   z*OpOverload.has_kernel_for_any_dispatch_key€  sD   ø€ ÝŒx×AÒAØ�IŠI‰KŒK˜ñ
ô 
ð 9å‰WŒW×4Ò4°RÑ8Ô8ð	9r/   c                 ó   — | j         S r'   )rp  r,   s    r"   r°   zOpOverload.namespace…  s
   € àŒÐr/   c                 ó�   — t           j        }|| j        v p1t          j                             |                      ¦   «         |¦  «        S r'   )r   ry   r)   r<   r=   rˆ  rP   )r-   Údks     r"   Ú_can_decomposezOpOverload._can_decompose‰  s?   € ÝÔ2ˆØ�T”_Ð$ð 
­¬×(VÒ(VØ�IŠI‰KŒK˜ñ)
ô )
ð 	
r/   c                 óæ   — t           j        }|| j        v r | j        |         |i |¤ŽS t          j                             |                      ¦   «         |¦  «        r | j        |g|¢R i |¤ŽS t          S r'   )	r   ry   r)   r<   r=   rˆ  rP   r\  rd   )r-   r4   r5   r�  s       r"   Ú	decomposezOpOverload.decompose�  s   € ÝÔ2ˆØ�”Ð Ð ð
 '�4”? 2Ô&¨Ð7°Ð7Ð7Ð7ÝŒX×;Ò;¸D¿IºI¹K¼KÈÑLÔLð 	"Ø�4”;˜rÐ3 DÐ3Ð3Ð3¨FÐ3Ð3Ð3å!Ð!r/   Úkeyc                 ó<   — | j                              |d ¦  «         d S r'   )r(   Úpop)r-   r‘  s     r"   Ú_uncache_dispatchzOpOverload._uncache_dispatch¤  s!   € ØÔ× Ò   dÑ+Ô+Ð+Ð+Ð+r/   c                 óÎ  ‡ ‡— ‰‰ j         v rt          ‰ › d‰› d�¦  «        ‚‰t          j        k    rxt	          ‰ t
          ¦  «        s"‰ j        s‰‰ j         ‰<   t          ‰ ¦  «         ‰S dt          j	        dt          j
        dt          fˆˆ fd„}|‰ j         ‰<   t          ‰ ¦  «         |S t          j                             ‰¦  «        }|t          j        k    rdt!          ¦   «         }|dk    rPt          j                             t          j        ¦  «        s'dt          j	        dt          j
        dt          fˆ fd„}|S t%          ‰ ‰¦  «        }‰t          j        k    }‰t          j        k    rCdd lmc m} |j        r3|                     ‰ |¦  «        }|r|‰ j         ‰<   t          ‰ ¦  «         |S ‰ j                             ||¦  «        }|r|‰ j         ‰<   t          ‰ ¦  «         |S )	Nú z already in dispatch cacher4   r5   rB   c                  ó  •— ddl m} t           |¦   «         ¦  «        }|€t          d¦  «        ‚|‰j        vr‚t          ‰t          ¦  «        r\t          j        j	         
                    ¦   «         5 }t          j        j        j        |‰g| ¢R i |¤Žcd d d ¦  «         S # 1 swxY w Y   n ‰j        ‰g| ¢R i |¤ŽS t          j        j	         
                    ¦   «         5 } ‰j        |         |g| ¢R i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S )Nr   rÌ   zDIllegal invocation of dispatch on DispatchKey.Python without a mode.)rÒ   rÍ   rM   rJ   r*   rL   ÚTorchBindOpOverloadr<   ÚutilsÚ_python_dispatchrÎ   Ú_libraryÚhandle_dispatch_moder\  )r4   r5   rÍ   râ   r[   r‘  r-   s        €€r"   rã   z)OpOverload._get_dispatch.<locals>.handler³  sé  ø€ ØSÐSÐSÐSÐSÐSõ !Ð!;Ð!;Ñ!=Ô!=Ñ>Ô>�	ØÐ$Ý(Ø^ñô ð ð  DÔ$9Ð9Ð9Ý! $Õ(;Ñ<Ô<ð Aå!œKÔ8×NÒNÑPÔPðØTXå#(¤>Ô#7Ô#LØ $ dð$Ø-1ð$ð $ð $Ø5;ð$ð $ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð  +˜tœ{¨3Ð@°Ð@Ð@Ð@¸Ð@Ð@Ð@å”[Ô1×GÒGÑIÔIð SÈTØ;˜4Ô0°Ô;¸DÐRÀ4ÐRÐRÐRÈ6ÐRÐRðSð Sð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Sð Sð Ss$   Á1 BÂB"Â%B"ÃDÄDÄ	Dr   c                  ó¶   •— t           j        d„ ¦   «         } |¦   «         5 }t          j        j        j        |‰g| ¢R i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S )Nc               3   óv   K  — t          ¦   «         } 	 | V — t          | ¦  «         d S # t          | ¦  «         w xY wr'   )rA  r=  )Útop_modes    r"   Ú(_temporarily_pop_modes_from_pre_dispatchz[OpOverload._get_dispatch.<locals>.handler.<locals>._temporarily_pop_modes_from_pre_dispatchÝ  sH   è è € å#>Ñ#@Ô#@˜ð=Ø"*˜N˜N˜Nå2°8Ñ<Ô<Ð<Ð<Ð<øÕ2°8Ñ<Ô<Ð<Ð<øøøs   ’' §8)Ú
contextlibÚcontextmanagerr<   r›  r™  rœ  )r4   r5   r   râ   r-   s       €r"   rã   z)OpOverload._get_dispatch.<locals>.handlerÜ  sÇ   ø€ ÝÔ.ð=ð =ñ /Ô.ð=ð BÐAÑCÔCð ÀyÝ$œ~Ô3ÔHØ% tð Ø.2ð ð  ð  Ø6<ð ð  ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ¡ AÁAÁA)r(   rJ   r   rN   rL   r˜  r*   rN  r   r4   r5   r   r<   r=   rÜ   rÝ   rÞ   rß   r�   ri   Útorch._dispatch.pythonÚ	_dispatchÚpythonÚCROSSREF_FUNCTIONALIZEÚmake_crossref_functionalizer)   r!  )	r-   r‘  rã   ræ   Úcurr_stack_lenrç   Úcache_resultÚ
pydispatchÚrs	   ``       r"   Ú_get_dispatchzOpOverload._get_dispatch¨  sN  øø€ à�$Ô&Ð&Ð&Ý  DÐ!JÐ!J¨3Ð!JÐ!JÐ!JÑKÔKÐKà•+Ô$Ò$Ð$Ý˜dÕ$7Ñ8Ô8ð ÀÔAVð Ø,/�Ô$ SÑ)Ý˜dÑ#Ô#Ð#Ø�
ðS�rœwð Sµ"´)ð SÅð Sð Sð Sð Sð Sð Sð Sð2 )0ˆDÔ  Ñ%Ý˜$ÑÔÐØˆNå!œH×:Ò:¸3Ñ?Ô?ÐØ¥Ô 7Ò7Ð7ÝCÑEÔEˆNð  Ò"Ð"Ýœ×GÒGÝÔ&ñô ð #ð¥2¤7ð µb´ið ÅBð ð ð ð ð ð ð& �å  cÑ*Ô*ˆ	ð �kÔ5Ò5ˆð
 •+Ô+Ò+Ð+Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7àÔ0ð Ø$×@Ò@ÀÀyÑQÔQ�Øð (Ø07�DÔ(¨Ñ-Ý! $Ñ'Ô'Ð'Ø�àŒO×Ò 	¨9Ñ5Ô5ˆØð 	 Ø()ˆDÔ  Ñ%Ý˜$ÑÔÐØˆr/   c                 ó   — | j         S r'   rö   r,   s    r"   rP   zOpOverload.name	  r÷   r/   c                 ó   — | j         S r'   )r^  r,   s    r"   rT  zOpOverload.overloadpacket  s   € àÔ#Ð#r/   c                 ó   — | j         S r'   r{  r,   s    r"   rp   zOpOverload.op  r±   r/   c                 ó   — | j         S r'   )r_  r,   s    r"   rW  zOpOverload.tags  s
   € àŒzÐr/   r'   )+rl   rm   rn   r   r   r   r   r   r<   r=   ÚFunctionSchemarÇ   r   r.   r   r   rp  rs  Ú_DispatchOperatorHandlerv  rû   ry  r4   r5   r6   ÚDispatchKeySetr  rƒ  rô   rþ   r:   rA   rý   r°   rŽ  r�  r”  r¬  rP   rT  rp   rW  r  r  s   @r"   rJ  rJ  &  s]  ø€ € € € € ð*=à*ð*=ð �R˜�VÔð*=ð ˜ K° OÔ4°bÐ8Ô9ð	*=ð
 ”Ô'ð*=ð �3Œið*=ð 
ð*=ð *=ð *=ð *=ð *=ð *=ðX ð<˜Cð <ð <ð <ñ „_ð<ð ð<˜ð <ð <ð <ñ „_ð<ð ð
˜œÔ9ð 
ð 
ð 
ñ „_ð
ðð ð ð ðgð gð gð
) ¤ð )°B´Ið )À"ð )ð )ð )ð )ð
FØœÔ0ðFØ9;¼ðFØLNÌIðFà	ðFð Fð Fð Fð
ð ð ðUð Uð UðL¨[ð L¸Tð Lð Lð Lð Lð Lð Lð
9°%´(Ô2Ið 9Èdð 9ð 9ð 9ð 9ð 9ð 9ð
 ð˜3ð ð ð ñ „Xðð
 ð 
ð 
ð 
ð 
ð"˜rœwð "°"´)ð "Àð "ð "ð "ð "ð*, [ð ,°Tð ,ð ,ð ,ð ,ð_ ð _°¸xÈÈBÈÔ?OÑ1Oð _ð _ð _ð _ðBð ð ð ð$ð $ñ „Xð$ð ðð ñ „Xðð ðð ñ „Xðð ð ð ð r/   c                   ó†   — e Zd Zdee         fd„Zdej        dej        de	fd„Z
dee         dej        dej        de	fd„ZdS )	r˜  rB   c                 óð   ‡ ‡— t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        g}dt           fˆ fd„Šˆfd„|D ¦   «         S )Nr‘  c                 ó  •— t           j                             ‰                     ¦   «         | ¦  «        r2t           j                             ‰                     ¦   «         | ¦  «        S | ‰j        vp‰j        |          t           j        j        u S r'   )r<   r=   rˆ  rP   Ú0_dispatch_kernel_for_dispatch_key_is_fallthroughr)   rg  Úfallthrough_kernel)r‘  r-   s    €r"   Ú(_may_use_fallthrough_instead_of_fallbackzWTorchBindOpOverload._fallthrough_keys.<locals>._may_use_fallthrough_instead_of_fallback.  sw   ø€ ÝŒx×=Ò=¸d¿iºi¹k¼kÈ3ÑOÔOð Ý”x×PÒPØ—I’I‘K”K ñô ð ð
 ˜4œ?Ð*ð LØ”? 3Ô'­5¬=Ô+KÐKðr/   c                 ó*   •— g | ]} ‰|¦  «        ¯|‘ŒS rY   rY   )r¢   r‘  r¹  s     €r"   rÐ   z9TorchBindOpOverload._fallthrough_keys.<locals>.<listcomp>9  s:   ø€ ð 
ð 
ð 
àØ7Ð7¸Ñ<Ô<ð
Øð
ð 
ð 
r/   )	r   r|   ÚAutogradCPUÚAutogradCUDAÚADInplaceOrViewÚBackendSelectÚPythonTLSSnapshotÚPythonDispatcherri   )r-   Ú_DEFAULT_FALLTHROUGH_KEYSr¹  s   ` @r"   Ú_fallthrough_keysz%TorchBindOpOverload._fallthrough_keys   sŽ   øø€ õ Ô ÝÔ#ÝÔ$ÝÔ'ÝÔ%ÝÔ)ÝÔ(ÝÔ%ð	%
Ð!ð		½+ð 		ð 		ð 		ð 		ð 		ð 		ð
ð 
ð 
ð 
à0ð
ñ 
ô 
ð 	
r/   r4   r5   c                ó‚   — t          ||¦  «        r# | j        |                      ¦   «         g|¢R i |¤ŽS  | j        |i |¤ŽS r'   )Ú_must_dispatch_in_pythonÚ_dispatch_in_pythonrÂ  r[  r3   s      r"   r6   zTorchBindOpOverload.__call__A  s]   € Ý# D¨&Ñ1Ô1ð 	Wð ,�4Ô+¨D×,BÒ,BÑ,DÔ,DÐVÀtÐVÐVÐVÈvÐVÐVÐVØˆtŒx˜Ð( Ð(Ð(Ð(r/   Úfallthrough_keysc           	      ót  — t           j                             ¦   «         }|D ]}|                     |¦  «        }Œt	          |||¦  «        }|                     ¦   «         }|| j        vr|                      |¦  «        n| j        |         }t          |t          ¦  «        r`t           j         
                    |                      ¦   «         |¦  «        r | j        ||gz   g|¢R i |¤ŽS t          d| › d|› d|› d�¦  «        ‚t          |t          ¦  «        st          dt!          |¦  «        › �¦  «        ‚ ||i |¤ŽS )NzTorchbind op z4 received a FakeScriptObject input when dispatching zÖ. but no python implementation is found. Please file an issue on this when you encounter this error. This error can happen when you export or compile the model. It can still happen even if a C++ implementation for zz.  has been registered. That's because FakeScriptObject purely lives in python and cannot work  with a C++ implementation.zhandler must be callable, got )r<   r=   r�   r¼   rî   rï   r(   r¬  rL   r   r·  rP   rÅ  rO   r   rJ   rM   )	r-   rÆ  r4   r5   r�   r‘  rñ   r“   rã   s	            r"   rÅ  z'TorchBindOpOverload._dispatch_in_pythonI  s¥  € õ  %œx×=Ò=Ñ?Ô?ÐØ#ð 	Dð 	DˆCØ#7×#>Ò#>¸sÑ#CÔ#CÐ Ð å*¨4°Ð9MÑNÔNÐØ'×=Ò=Ñ?Ô?ˆð  4Ô#7Ð7Ð7ð ×Ò˜|Ñ,Ô,Ð,àÔ% lÔ3ð 	õ �g�{Ñ+Ô+ð 	õ Œx×HÒHØ—	’	‘”˜\ñô ð ð 0�tÔ/Ø$¨ ~Ñ5ðàðð ð ð ðð ð õ ð/ ð /ð /ÐZað /ð /ð JVð	/ð /ð /ñô ð õ ˜'¥8Ñ,Ô,ð 	SÝ Ð!QÅ$ÀwÁ-Ä-Ð!QÐ!QÑRÔRÐRØˆw˜Ð' Ð'Ð'Ð'r/   N)rl   rm   rn   rÇ   r   rÂ  r   r4   r5   r   r6   rÅ  rY   r/   r"   r˜  r˜    sŸ   € € € € € ð
 4¨Ô#4ð 
ð 
ð 
ð 
ðB) ¤ð )°B´Ið )À"ð )ð )ð )ð )ð((Ø $ [Ô 1ð((Ø:<¼'ð((ØMOÌYð((à	ð((ð ((ð ((ð ((ð ((ð ((r/   r˜  rB   c                 ó<  — t          | t          j        j        j        ¦  «        rdS t          | t
          t          f¦  «        rt          d„ | D ¦   «         ¦  «        S t          | t          ¦  «        r+t          d„ |  	                    ¦   «         D ¦   «         ¦  «        S dS )z•Check if obj is or contains a FakeScriptObject.
    This is load-bearing for TorchBindOpOverloads so we avoid pytree
    since it's much slower.
    Tc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r'   ©Ú_contains_fake_script_object)r¢   Úitems     r"   r¤   z/_contains_fake_script_object.<locals>.<genexpr>|  s+   è è € ÐFÐF¸$Õ/°Ñ5Ô5ÐFÐFÐFÐFÐFÐFr/   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r'   rÊ  ©r¢   Úvs     r"   r¤   z/_contains_fake_script_object.<locals>.<genexpr>~  s+   è è € ÐIÐI°qÕ/°Ñ2Ô2ÐIÐIÐIÐIÐIÐIr/   F)
rL   r<   r›  Úfake_class_registryÚFakeScriptObjectrÇ   rÈ   rª   rÿ   rÆ   )Úobjs    r"   rË  rË  t  s•   € õ
 �#•u”~Ô9ÔJÑKÔKð JØˆtÝ	�C�$¥˜Ñ	'Ô	'ð JÝÐFÐFÀ#ÐFÑFÔFÑFÔFÐFÝ	�C�Ñ	Ô	ð JÝÐIÐI¸C¿JºJ¹L¼LÐIÑIÔIÑIÔIÐIØˆ5r/   c                 ó¨   — t          d„ | D ¦   «         ¦  «        p9t          |¦  «        o*t          d„ |                     ¦   «         D ¦   «         ¦  «        S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r'   rÊ  r¡   s     r"   r¤   z+_must_dispatch_in_python.<locals>.<genexpr>ƒ  s+   è è € ÐAÐA°SÕ+¨CÑ0Ô0ÐAÐAÐAÐAÐAÐAr/   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r'   rÊ  rÎ  s     r"   r¤   z+_must_dispatch_in_python.<locals>.<genexpr>„  s+   è è € ÐVÐVÀÕ9¸!Ñ<Ô<ÐVÐVÐVÐVÐVÐVr/   )rª   rþ   rÆ   r  s     r"   rÄ  rÄ  ‚  sS   € ÝÐAÐA¸DÐAÑAÔAÑAÔAð ÝˆV‰ŒÐV�ÐVÐVÀfÇmÂmÁoÄoÐVÑVÔVÑVÔVðr/   r¬   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   óT   K  — | ]#}t          |j        t          j        ¦  «        V — Œ$d S r'   )rL   rM   r<   Ú	ClassTyper¡   s     r"   r¤   z)_has_script_object_arg.<locals>.<genexpr>‰  s0   è è € ÐQÐQ¸�z˜#œ(¥E¤OÑ4Ô4ÐQÐQÐQÐQÐQÐQr/   )rª   r«   )r¬   s    r"   Ú_has_script_object_argrÙ  ˆ  s"   € ÝÐQÐQÀÔ@PÐQÑQÔQÑQÔQÐQr/   c            
       ó  — e Zd ZU dZee         ed<   dededeee	f         de
e         ddf
d	„Zdd
„Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zdedeee	f         fd„Zdee         fd„Zdej        dej        de	fd„Zd„ Zd„ ZdS )rU  ú	torch.opsÚ__file__Úqualified_op_nameÚop_namerp   Úoverload_namesrB   Nc                 ó¶   — || _         || _        || _        || _        g | _        t          d„ | j                             ¦   «         D ¦   «         ¦  «        | _        d S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r'   )rÙ  )r¢   r¬   s     r"   r¤   z,OpOverloadPacket.__init__.<locals>.<genexpr>Ÿ  s<   è è € ð .
ð .
Ø/5Õ" 6Ñ*Ô*ð.
ð .
ð .
ð .
ð .
ð .
r/   )	Ú_qualified_op_namerl   r[  Ú_overload_namesÚ_dirrª   Ú_schemasrÆ   Ú_has_torchbind_op_overload)r-   rÝ  rÞ  rp   rß  s        r"   r.   zOpOverloadPacket.__init__‘  sk   € ð #4ˆÔØˆŒØˆŒØ-ˆÔØ!ˆŒ	Ý*-ð .
ð .
Ø9=¼×9MÒ9MÑ9OÔ9Oð.
ñ .
ô .
ñ +
ô +
ˆÔ'Ð'Ð'r/   c                 ó   — | S r'   rY   rù   s     r"   rû   zOpOverloadPacket.__deepcopy__¤  rü   r/   c                 óF   —  dj         | j                             d¦  «        Ž S )Nz<OpOverloadPacket(op='{}.{}')>rZ  ©r†  râ  re  r,   s    r"   ry  zOpOverloadPacket.__repr__§  s)   € Ø6Ð/Ô6ØÔ$×*Ò*¨4Ñ0Ô0ð
ð 	
r/   c                 ó*   — t          | j        ¦  «        S r'   r�  r,   s    r"   rƒ  zOpOverloadPacket.__hash__¬  r„  r/   c                 óF   —  dj         | j                             d¦  «        Ž S )Nz{}.{}rZ  ré  r,   s    r"   rô   zOpOverloadPacket.__str__¯  s"   € ØˆwŒ~˜tÔ6×<Ò<¸TÑBÔBÐCÐCr/   c                 ó   — | j         S r'   r{  r,   s    r"   rp   zOpOverloadPacket.op²  r±   r/   c                 ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc                 ó\   •— i | ](}|t           j                             ‰j        |¦  «        “Œ)S rY   )r<   r=   Ú_get_schemarâ  )r¢   r`  r-   s     €r"   ú
<dictcomp>z-OpOverloadPacket._schemas.<locals>.<dictcomp>¸  s@   ø€ ð 
ð 
ð 
àð �5œ8×/Ò/°Ô0GÈÑWÔWð
ð 
ð 
r/   ©rã  r,   s   `r"   rå  zOpOverloadPacket._schemas¶  s1   ø€ ð
ð 
ð 
ð 
à!%Ô!5ð
ñ 
ô 
ð 	
r/   r‘  c           
      ó  — 	 |                      d¦  «        rt          | j        |¦  «        S nG# t          $ r: t          dt	          | ¦  «        › dt	          | j        ¦  «        › d|› d�¦  «        d ‚w xY w	 |dk    rdn|}t
          j                             | j        |¦  «        }|€#t          dt	          | ¦  «        › d	|› d�¦  «        ‚|\  }}}t
          j         	                    | j        |¦  «        }t          |¦  «        st          | ||||¦  «        nt          | ||||¦  «        }t          | ||¦  «         | j                             |¦  «         |S # t           $ r% t          dt	          | ¦  «        › d	|› d�¦  «        d ‚w xY w)
NÚ__ú'zH' can't have an overload name beginning with '__' and the underlying op z has no attribute z either.r   rY  zThe underlying op of 'z' has no overload name ')Ú
startswithÚgetattrr[  ÚAttributeErrorr   r<   r=   Ú_get_operation_overloadrâ  rï  rÙ  rJ  r˜  Úsetattrrä  rÃ   rO   )	r-   r‘  Úuse_keyÚ
op_dk_tagsÚop_Úop_dk_rW  r¬   Úoverloads	            r"   Ú__getattr__zOpOverloadPacket.__getattr__½  sý  € ð	Ø�~Š~˜dÑ#Ô#ð .Ý˜tœx¨Ñ-Ô-Ð-ð.øåð 	ð 	ð 	õ
 !ðP•C˜‘I”Ið Pð PÝ!$ T¤X¡¤ðPð PØBEðPð Pð Pñô ð ðð	øøøð	à 9Ò,Ð,�b�b°#ˆGåœ×9Ò9ØÔ'¨ñô ˆJð Ð!Ý$ØV­S°©Y¬YÐVÐVÐPSÐVÐVÐVñô ð ð !+ÑˆC�˜Ý”X×)Ò)¨$Ô*AÀ7ÑKÔKˆFõ .¨fÑ5Ô5ðJ•
˜4  f¨f°dÑ;Ô;Ð;å(¨¨s°F¸FÀDÑIÔIð õ �D˜#˜xÑ(Ô(Ð(ØŒI×Ò˜SÑ!Ô!Ð!ØˆOøÝð 	ð 	ð 	Ý ØR­¨T©¬ÐRÐRÈCÐRÐRÐRñô àðð	øøøs   ‚)- ­AA1Á5C E Å/Fc                 ó*   — t          | j        ¦  «        S r'   ©Úiterrä  r,   s    r"   Ú__iter__zOpOverloadPacket.__iter__î  ó   € Ý�D”I‰ŒÐr/   r4   r5   c                ój   — | j         r t          ||¦  «        rt          | g|¢R i |¤ŽS  | j        |i |¤ŽS r'   )ræ  rÄ  Ú!_call_overload_packet_from_pythonr[  r3   s      r"   r6   zOpOverloadPacket.__call__ó  sX   € ð Ô*ð 	LÕ/GÈÈfÑ/UÔ/Uð 	Lå4°TÐK¸DÐKÐKÐKÀFÐKÐKÐKØˆtŒx˜Ð( Ð(Ð(Ð(r/   c                 ó$   — d„ | j         D ¦   «         S )Nc                 ó   — g | ]}|r|nd ‘Œ	S r   rY   )r¢   Úns     r"   rÐ   z.OpOverloadPacket.overloads.<locals>.<listcomp>  s!   € ÐDÐDÐD¨!�QÐ%��˜IÐDÐDÐDr/   rñ  r,   s    r"   Ú	overloadszOpOverloadPacket.overloads  s   € ØDÐD¨tÔ/CÐDÑDÔDÐDr/   c                 óD   ‡ — ˆ fd„‰                       ¦   «         D ¦   «         S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS rY   )rö  )r¢   r	  r-   s     €r"   rÐ   z1OpOverloadPacket.op_overloads.<locals>.<listcomp>  s#   ø€ Ð;Ð;Ð; Q•˜˜aÑ Ô Ð;Ð;Ð;r/   )r
  r,   s   `r"   Úop_overloadszOpOverloadPacket.op_overloads  s'   ø€ Ø;Ð;Ð;Ð;¨$¯.ª.Ñ*:Ô*:Ð;Ñ;Ô;Ð;r/   r'   )rl   rm   rn   rÜ  r   r   rf  r   r   r   rÇ   r.   rû   ry  rƒ  rô   rý   rp   rå  rJ  rÿ  r   r  r4   r5   r6   r
  r  rY   r/   r"   rU  rU  Ž  sŽ  € € € € € € Ø)€Hˆh�sŒmÐ)Ð)Ñ)ð
àð
ð ð
ð �R˜�VÔð	
ð
 ˜Sœ	ð
ð 
ð
ð 
ð 
ð 
ð&ð ð ð ð
ð 
ð 
ð
ð ð ðDð Dð Dð ðð ñ „Xðð ð
ð 
ñ „Xð
ð/˜sð / z°"°b°&Ô'9ð /ð /ð /ð /ðb˜( 3œ-ð ð ð ð ð
) ¤ð )°B´Ið )À"ð )ð )ð )ð )ðEð Eð Eð<ð <ð <ð <ð <r/   rU  r4   r5   c                 ó¢  — t          j        j        | g|¢R i |¤Ž\  }}|r|S i }d }|                      ¦   «         D ]Q}t	          | |¦  «        }	 t          j        j        |j        g|¢R i |¤Ž}	|} n# t          $ r}
|
||<   Y d }
~
ŒJd }
~
ww xY w|r ||i |¤ŽS d| › d�}|                     ¦   «         D ]\  }}|d|› d|› d�z  }Œt          |¦  «        ‚)Nz'Fail to match any TorchBindOverload of z with following exceptions:
zOverload name z:
 ú
)	r<   r=   Ú(_maybe_call_torch_function_for_op_packetr
  rö  Ú&_check_schema_allow_fake_script_objectr]  rO   Úitems)rp   r4   r5   Útorch_function_calledÚretÚ
exceptionsÚfound_opr`  rM  Ú_ÚeÚerr_msgr‘  Úmsgs                 r"   r  r    s}  € õ "'¤Ô!RØ
ð"Øð"ð "ð "Øð"ð "ÑÐ˜3ð ð Øˆ
ð €JØ€HØŸš™œð 	*ð 	*ˆÝ˜b -Ñ0Ô0ˆð	*Ý”Ô?ØÔ#ðØ&*ðð ð Ø.4ðð ˆAð #ˆHØˆEøÝð 	*ð 	*ð 	*Ø()ˆJ�}Ñ%Ð%Ð%Ð%Ð%Ð%øøøøð	*øøøð ð )Øˆx˜Ð( Ð(Ð(Ð(ð 	T°"ÐSÐSÐSð ð ×$Ò$Ñ&Ô&ð 5ð 5‰ˆˆSØÐ4 CÐ4Ð4¨SÐ4Ð4Ð4Ñ4ˆˆÝ
�wÑ
Ô
Ðs   Á!A0Á0
B	Á:BÂB	c                   óX   ‡ — e Zd ZdZdZdeddfˆ fd„Zdee         fd„Zdede	fd	„Z
ˆ xZS )
Ú_OpNamespacea0  
    An op namespace to dynamically bind Operators into Python.

    Say a user has created a custom Operator called "my_namespace::my_op". To
    call this op, the user will write torch.ops.my_namespace.my_op(...).
    At startup, this operation will not yet be bound into Python. Instead, the
    following sequence of magic tricks will occur:
    1. `torch.ops.my_namespace` will invoke the `__getattr__` magic method
       on the `torch.ops` object, which will create a new `_OpNamespace`
       object called `my_namespace` and set it as an attribute on the `ops`
       object.
    2. `torch.ops.my_namespace.my_op` will then invoke `__getattr__` on
       the `my_namespace` object, which will retrieve the operation via
       `torch.get_operation`, a function bound from C++, and then in a similar
       fashion bind this new object onto the `my_namespace` object.
    3. `torch.ops.my_namespace.my_op(...)` then calls this new operation
        and subsequent accesses will incur no further lookup (the namespace and
        operation will already exist).
    rÛ  rP   rB   Nc                 ól   •— t          ¦   «                              d|z   ¦  «         || _        g | _        d S )Nz
torch.ops.)rŠ   r.   rP   rä  )r-   rP   r”   s     €r"   r.   z_OpNamespace.__init__Y  s2   ø€ Ý‰Œ×Ò˜¨Ñ,Ñ-Ô-Ð-ØˆŒ	Ø!ˆŒ	ˆ	ˆ	r/   c                 ó*   — t          | j        ¦  «        S r'   r  r,   s    r"   r  z_OpNamespace.__iter__^  r  r/   rÞ  c                 óæ  — |dv rt          d|› d| j        › d�¦  «        ‚| j        }|› d|› �}| j        dz   |z   }	 t          ||¦  «        \  }}|€t          d| j        › d|› d�¦  «        ‚n.# t          $ r!}t          d| j        › d|› d�¦  «        |‚d }~ww xY w||_        t          ||||¦  «        }| j        dz   |z   |_        t          | ||¦  «         | j                             |¦  «         |S )	N)Ú
__origin__Ú__self__zInvalid attribute 'z' for '_OpNamespace' 'rô  rZ  r´   z'_OpNamespace' 'z' object has no attribute ')	r÷  rP   rm   Ú_get_packetrO   rU  rù  rä  rÃ   )	r-   rÞ  Únamespace_namerÝ  Úmodule_namerp   rß  r  Úopoverloadpackets	            r"   rÿ  z_OpNamespace.__getattr__a  sn  € ØÐ0Ð0Ð0Ý ØQ gÐQÐQÀTÄYÐQÐQÐQñô ð ð œˆØ-Ð:Ð:°Ð:Ð:ÐØ”o¨Ñ+¨nÑ<ˆð	Ý!,Ð->ÀÑ!LÔ!LÑˆB�ØˆzÝ$ØW t¤yÐWÐWÈWÐWÐWÐWñô ð ð øõ ð 	ð 	ð 	õ !ØS 4¤9ÐSÐSÈÐSÐSÐSñô àðøøøøð	øøøð $ˆŒÝ+Ø˜w¨¨Nñ
ô 
Ðð '+¤o¸Ñ&;¸nÑ&LÐÔ#õ 	��gÐ/Ñ0Ô0Ð0ØŒ	×Ò˜Ñ!Ô!Ð!ØÐs   ¼0A- Á-
BÁ7BÂB)rl   rm   rn   ro   rÜ  r   r.   r   r  rU  rÿ  r  r  s   @r"   r  r  B  sž   ø€ € € € € ðð ð( €Hð"˜Sð " Tð "ð "ð "ð "ð "ð "ð
˜( 3œ-ð ð ð ð ð"  3ð " Ð+;ð " ð " ð " ð " ð " ð " ð " ð " r/   r  c                 óª   — t           j                             | ¦  «        \  }}|�,t           j        j                             || ¦  «         ||_        ||fS r'   )r<   r=   Ú_jit_get_operationÚjitÚ	_builtinsÚ_register_builtinrm   )ÚqualnameÚ	op_modulerp   rß  s       r"   r"  r"  †  sP   € Ýœ×4Ò4°XÑ>Ô>Ñ€BˆØ	€~õ 	Œ	Ô×-Ò-¨b°(Ñ;Ô;Ð;Ø!ˆŒØˆ~ÐÐr/   c                 ó˜   — t          | j        | j        j        ¦  «        \  }}|€t	          d| j        › �¦  «        ‚|| _        || _        d S )Nzfailed to get packet for )r"  râ  r[  rm   rJ   rã  )Úpacketrp   rß  s      r"   Ú_refresh_packetr/  �  sR   € Ý$ VÔ%>ÀÄ
Ô@UÑVÔVÑ€BˆØ	€zÝÐT¸Ô9RÐTÐTÑUÔUÐUØ€F„JØ+€FÔÐÐr/   c                   óL   ‡ — e Zd ZdZdˆ fd„Zdee         fd„Zdedefd„Z	ˆ xZ
S )	Ú_HigherOrderNamespacerÛ  rB   Nc                 óX   •— t          ¦   «                              d¦  «         g | _        d S )Nr‰   )rŠ   r.   rä  ©r-   r”   s    €r"   r.   z_HigherOrderNamespace.__init__›  s'   ø€ Ý‰Œ×ÒÐ1Ñ2Ô2Ð2Ø!ˆŒ	ˆ	ˆ	r/   c                 ó*   — t          | j        ¦  «        S r'   r  r,   s    r"   r  z_HigherOrderNamespace.__iter__Ÿ  r  r/   rP   c                 óº   — t                                |¦  «        }|€t          d|› d�¦  «        ‚t          | ||¦  «         | j                             |¦  «         |S )NzJ'_HigherOrderNamespace' 'torch.ops.higher_order' object has no attribute 'rô  )rƒ   r!  r÷  rù  rä  rÃ   )r-   rP   rp   s      r"   rÿ  z!_HigherOrderNamespace.__getattr__¢  sj   € å×"Ò" 4Ñ(Ô(ˆØˆ:Ý ØdÐ]aÐdÐdÐdñô ð õ 	��d˜BÑÔÐØŒ	×Ò˜ÑÔÐØˆ	r/   )rB   N)rl   rm   rn   rÜ  r.   r   r   r  r‚   rÿ  r  r  s   @r"   r1  r1  ˜  s„   ø€ € € € € Ø€Hð"ð "ð "ð "ð "ð "ð˜( 3œ-ð ð ð ð ð	 ð 	Ð(;ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r/   r1  c                   óV   ‡ — e Zd ZdZˆ fd„Zdedefd„Zdee         fd„Z	d„ Z
d„ Zˆ xZS )	Ú_Opsz_ops.pyc                 ó¤   •— t          ¦   «                              d¦  «         t          ¦   «         | _        t	          ¦   «         | _        g | _        d S )NrÛ  )rŠ   r.   r  Úloaded_librariesr1  rˆ   rä  r3  s    €r"   r.   z_Ops.__init__±  s@   ø€ Ý‰Œ×Ò˜Ñ%Ô%Ð%Ý #¡¤ˆÔÝ1Ñ3Ô3ˆÔØˆŒ	ˆ	ˆ	r/   rP   rB   c                 óz   — t          |¦  «        }t          | ||¦  «         | j                             |¦  «         |S r'   )r  rù  rä  rÃ   )r-   rP   r°   s      r"   rÿ  z_Ops.__getattr__·  s=   € å  Ñ&Ô&ˆ	Ý��d˜IÑ&Ô&Ð&ØŒ	×Ò˜ÑÔÐØÐr/   c                 ó*   — t          | j        ¦  «        S r'   r  r,   s    r"   r  z_Ops.__iter__¾  r  r/   c                 ó.   — t          j        |¦  «         dS )a{  
        Imports a Python module that has torch.library registrations.

        Generally, to extend PyTorch with custom operators, a user will
        create a Python module whose import triggers registration of
        the custom operators via a torch.ops.load_library call or a call
        to one or more torch.library.* APIs.

        It is unexpected for Python modules to have side effects, so some
        linters and formatters will complain. Use this API to import Python
        modules that contain these torch.library side effects.

        Args:
            module (str): The name of the Python module to import

        N)Ú	importlibÚimport_module)r-   Úmodules     r"   r>  z_Ops.import_moduleÁ  s   € õ" 	Ô Ñ'Ô'Ð'Ð'Ð'r/   c                 ó&  — t          j        |¦  «        }t          ¦   «         5  	 t          j        |¦  «         n%# t
          $ r}t          d|› �¦  «        |‚d}~ww xY w	 ddd¦  «         n# 1 swxY w Y   | j                             |¦  «         dS )a  
        Loads a shared library from the given path into the current process.

        The library being loaded may run global initialization code to register
        custom operators with the PyTorch JIT runtime. This allows dynamically
        loading custom operators. For this, you should compile your operator
        and the static registration code into a shared library object, and then
        call ``torch.ops.load_library('path/to/libcustom.so')`` to load the
        shared object.

        After the library is loaded, it is added to the
        ``torch.ops.loaded_libraries`` attribute, a set that may be inspected
        for the paths of all libraries loaded using this function.

        Args:
            path (str): A path to a shared library to load.
        zCould not load this library: N)	r   Úresolve_library_pathr#   r   ÚCDLLÚ	ExceptionÚOSErrorr9  r–   )r-   Úpathr  s      r"   Úload_libraryz_Ops.load_libraryÔ  sý   € õ$ Ô3°DÑ9Ô9ˆÝ‰_Œ_ð 	Mð 	MðMÝ”˜DÑ!Ô!Ð!Ð!øÝð Mð Mð MÝÐD¸dÐDÐDÑEÔEÈ1ÐLøøøøðMøøøð "ð	Mð 	Mð 	Mñ 	Mô 	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Møøøð 	Mð 	Mð 	Mð 	Mð 	Ô×!Ò! $Ñ'Ô'Ð'Ð'Ð's1   £A,¥:¹A,º
AÁAÁAÁA,Á,A0Á3A0)rl   rm   rn   rÜ  r.   r   r  rÿ  r   r  r>  rF  r  r  s   @r"   r7  r7  ®  sœ   ø€ € € € € Ø€Hðð ð ð ð ð ð ¨ð ð ð ð ð˜( 3œ-ð ð ð ð ð(ð (ð (ð&(ð (ð (ð (ð (ð (ð (r/   r7  Úops)F)er  r¡  r   r=  rF   r   ÚtypesÚcollections.abcr   r   Ú	functoolsr   Útypingr   r   r   r	   r
   r   Útyping_extensionsr   r   r<   Útorch.utils._pytreer™  Ú_pytreer¦   r   Útorch._Cr   ru   r   Útorch._functorch.pyfunctorchr   r   rÒ   r   r   ÚImportErrorrM   rd   rc   r   r   r   Úhasattrr   r¢  r#   r%   r�   rƒ   rÿ   r   rf  rÀ  r¿  r½  r¾  ÚAutocastCPUÚAutocastCUDAÚAutocastXPUr‘   ÚABCr‚   rê   rî   r	  r
  r  rI  r6  r=  rA  rÞ   rD  rà   r,  r  rK  rN  rP  rR  rJ  r˜  rþ   rË  rÄ  r±  rÙ  rU  r4   r5   r  Ú
ModuleTyper  r"  r/  r1  r7  rG  rY   r/   r"   ú<module>rX     sS  ðà 
€
€
€
€
Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 
€
€
€
Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø %Ð %Ð %Ð %Ð %Ð %Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ :Ð :Ð :Ð :Ð :Ð :ð.Ø(Ð(Ð(Ð(Ð(Ð(Ð(øØð .ð .ð .Ø˜˜nÑ-Ô-ÐÐÐð.øøøð ð IØHÐHÐHÐHÐHÐHð €WˆT˜3ÐÑÔ€Ø€Yˆt˜SÐ!Ñ!Ô!€ð �G˜CÐ!1Ñ2Ô2ÐU°w°w¸sÐDTÑ7UÔ7UÐ ð Ôð&ð &ñ Ôð&ð V"ð V"ð V"ð V"ð V"ñ V"ô V"ð V"ðt2U�Lð 2U [ð 2Uð 2Uð 2Uð 2Uðj 79Ð �4˜Ð2Ð2Ô3Ð 8Ð 8Ñ 8ð Ô ØÔ!ØÔØÔØÔØÔØÔð6Ð 2ðhð hð hð hð h˜,¨¬ñ hô hð hðV	3ð 3ð 3ð8ð 8ð 8ð
ð ð ðð ð ð,
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð2 &CÐ%BÑ%DÔ%DÐ "ð(ð (ð (ð (ðV-Xð -Xð -Xð`Mð Mð Mð7ð 7ð 7ð	:ð 	:ð 	:ðð ð ð .ð .ð .ð
 !$ ¡¤€
ˆC�ÔÐ %Ð %Ñ %ð ð  ð  ð
ð ð ð
ð ð ðpð pð pð pð p�˜w r¨2 vœñ pô pð pðrR(ð R(ð R(ð R(ð R(˜* R¨ VÔ,ñ R(ô R(ð R(ðj¨ð ð ð ð ð¨dð ð ð ð ðR 5Ô#7ð R¸Dð Rð Rð Rð Rðx<ð x<ð x<ð x<ð x<�w˜r 2˜v”ñ x<ô x<ð x<ðz% Ø˜˜R˜Ô ð% Ø)+¬ð% Ø<>¼Ið% àð% ð % ð % ð % ðnA ð A ð A ð A ð A �5Ô#ñ A ô A ð A ðHð ð ð,ð ,ð ,ðð ð ð ð ˜EÔ,ñ ô ð ð,A(ð A(ð A(ð A(ð A(ˆ5Ôñ A(ô A(ð A(ðJ ˆD‰FŒF€€TÐ Ð Ñ Ð Ð s   Á.A5 Á5BÂB