§
    J�’jÙS ã                  óf  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZ d dlZd dlmc m Z! d dlm"Z"m#Z#m$Z$m%Z% d d	l&m'Z'm(Z( d d
l)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z; d dl<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC d dlDmEZEmFZF d dlGmHZH d dlImJZJmKZKmLZL d dlMmNZNmOZOmPZPmQZQmRZRmSZS d dlTmUZU d dlVmWZW ddlXmYZYmZZZm[Z[ er(d dl\m]Z]m^Z^m_Z_m`Z`maZa d dlmbZb d dlcmdZd d d lemfZf d d!lgmhZhmiZi  ejj        ek¦  «        Zlejm         n                    ekd"¦  «        Zo	 ejm         n                    ekd#¦  «        Zpn5# eq$ r-Zrd$ eser¦  «        v r ejj        ekd%z   ¦  «        Zpner‚Y dZr[rndZr[rww xY wetZuej         jv        Zw ed&¦  «        Zxejy        jz        j{        Z{dZ|d a} G d'„ d(ed)¬*¦  «        Z~ ee~j€        ¦  «        Z�ej‚        d®d/„¦   «         Zƒ G d0„ d1¦  «        Z„e G d2„ d3e…¦  «        ¦   «         Z† G d4„ d5e…¦  «        Z‡e G d6„ d7e…¦  «        ¦   «         Zˆe G d8„ d9e…¦  «        ¦   «         Z‰e G d:„ d;e…¦  «        ¦   «         ZŠe G d<„ d=e…¦  «        ¦   «         Z‹e G d>„ d?e…¦  «        ¦   «         ZŒ G d@„ dAe	j�        ¦  «        ZŽ eŽ¦   «         Z�d¯dD„Z�ej‘        d°dF„¦   «         Z’ej‘        d±dJ„¦   «         Z“d²dO„Z”d³dS„Z•d´dV„Z–ej‚        dµdZ„¦   «         Z—ej‚        d¶d[„¦   «         Z˜d·da„Z™d¸db„Zš G dc„ dd¦  «        Z›ej‚        d¹dh„¦   «         Zœej‘        d±di„¦   «         Z�d¶dj„Zž G dk„ dl¦  «        ZŸ G dm„ dn¦  «        Z  G do„ dpe%¦  «        Z¡eeEdqdrf         Z¢ eds¬t¦  «         G du„ dv¦  «        ¦   «         Z£dºdx„Z¤ eds¬t¦  «         G dy„ dz¦  «        ¦   «         Z¥ G d{„ d|¦  «        Z¦ edsds¬}¦  «         G d~„ d¦  «        ¦   «         Z§ edsds¬}¦  «         G d€„ d�¦  «        ¦   «         Z¨ edsds¬}¦  «         G d‚„ dƒ¦  «        ¦   «         Z©ere¨e©z  Zª edsds¬}¦  «         G d„„ d…e«¦  «        ¦   «         Z¬ edsds¬}¦  «         G d†„ d‡¦  «        ¦   «         Z­ G dˆ„ dHeK¦  «        Z®e¯Z°d»dŒ„Z±d¼d’„Z²d½d˜„Z³d½d™„Z´ G dš„ d›eC¦  «        Zµd¾d�„Z¶d¿dž„Z·dÀdŸ„Z¸ejz        j¹        jº        j»        e¶ejz        j{        j¼        j»        d „ ejz        j{        j½        j»        d¡„ ejz        j{        j¾        j»        d¢„ iZ¿ e�ejz        j{        jÀ        j»        ejz        j{        jÁ        j»        ejz        j{        jÂ        j»        ejz        jÃ        jÄ        jÅ        ¦  «        ZÆd d£lÇmÈZÈmÉZÉmÊZÊmËZËmÌZÌmÍZÍmÎZÎmÏZÏ dÁd¤„ZÐejÑ        dÂd¥„¦   «         ZÒdÃd«„ZÓdÄd­„ZÔdS )Åé    )ÚannotationsN)Údefaultdict)Ú	dataclass)ÚAnyÚcastÚLiteralÚTYPE_CHECKINGÚ	TypeGuardÚTypeVarÚUnion)ÚSelfÚ	TypedDictÚUnpack)ÚReferenceType)ÚSymBoolÚSymFloatÚSymIntÚTensor)Úis_functorch_wrapped_tensorÚis_legacy_batchedtensor)ÚFakeScriptObject)ÚMissingOpProfile)Údtrace_structured)Ú
OpaqueBase)Úsuggest_memory_format)Ú	assert_eqÚassert_metadata_eqÚis_sparse_anyÚis_sparse_compressedÚMetaConverter)Ú!_is_privateuse1_backend_availableÚrender_call)Úimmutable_dict)Únormalize_function)ÚStorageWeakRef)ÚTorchFunctionMode)ÚIntLikeTypeÚpy_sym_types)Úno_dispatch)Úis_traceable_wrapper_subclassÚTorchDispatchModeÚTraceableWrapperSubclass)ÚKeyPathÚkeystrÚPyTreeÚtree_mapÚ	tree_map_ÚTreeSpec)Úcount)ÚCapturedTracebacké   )Ú_CacheKeyStateÚ_PySymInputStubÚ_SymIntOutputStub)ÚCallableÚ	GeneratorÚIterableÚMappingÚSequence)ÚTracebackType)ÚSource)Ú
OpOverload)ÚShapeEnvÚSymbolicContextÚhierarchical_compileÚnot_implementedz 'not_implemented' not registeredz.not_implementedÚTc                  ó°   — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   dS )Ú"_FakeTensorConstructorIgnoredStateÚobjectÚ_nonzero_memoÚ_nonzero_memo_vcÚ_nonzero_memo_epochÚ
_item_memoÚ_item_memo_vcÚ_item_memo_epochÚ_unique_memoÚ_unique_memo_vcÚ_unique_memo_epochÚ_unique_consecutive_memoÚ_unique_consecutive_memo_vcÚ_unique_consecutive_memo_epochÚ_nested_int_memoÚ_nested_int_memo_vcÚ_nested_int_memo_epochÚ_debug_traceN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úKC:\Projects\DSCons\.venv\Lib\site-packages\torch\_subclasses\fake_tensor.pyrG   rG   Z   sÔ   € € € € € € ð ÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ$Ð$Ð$Ñ$Ø'Ð'Ð'Ñ'Ø*Ð*Ð*Ñ*ØÐÐÑØÐÐÑØ"Ð"Ð"Ñ"ØÐÐÑÐÐr_   rG   F)ÚtotalÚdevice_typeÚstrÚreturnÚboolc                óN   — | dddddt           j                             ¦   «         fv S )NÚcudaÚhpuÚxpuÚmpsÚmtia)ÚtorchÚ_CÚ_get_privateuse1_backend_name)rb   s    r`   Ú_is_indexed_device_typero   u   s4   € àØØØØØÝŒ×.Ò.Ñ0Ô0ðð ð r_   c                  ó   — e Zd Zdd„Zdd„ZdS )ÚIncrementRecursionCountrd   ÚNonec                ó   — t           dz  a d S ©Nr5   ©ÚRECURSION_COUNT©Úselfs    r`   Ú__init__z IncrementRecursionCount.__init__†   ó   € å˜1Ñˆˆˆr_   c                ó   — t           dz  a d S rt   ru   rw   s    r`   Ú__del__zIncrementRecursionCount.__del__Š   rz   r_   N©rd   rr   )rZ   r[   r\   ry   r|   r^   r_   r`   rq   rq   …   s<   € € € € € ðð ð ð ðð ð ð ð ð r_   rq   c                  ó   — e Zd ZU ded<   dS )ÚUnsupportedFakeTensorExceptionrc   ÚreasonNrY   r^   r_   r`   r   r   �   ó   € € € € € € à€K€K�K€K€Kr_   r   c                  ó    ‡ — e Zd Zd	ˆ fd„Zˆ xZS )
ÚFakeTensorDeviceMismatchErrorÚfuncr@   Úcommon_deviceútorch.deviceÚdevicerd   rr   c                ó‚   •— || _         || _        || _        t          ¦   «                              d|› d|› d�¦  «         d S )NzOExpected all tensors to be on the same device, but found at least two devices, z and ú!)r„   r…   r‡   Úsuperry   )rx   r„   r…   r‡   Ú	__class__s       €r`   ry   z&FakeTensorDeviceMismatchError.__init__•   sk   ø€ ð ˆŒ	Ø*ˆÔØˆŒÝ‰Œ×ÒðCØ%2ðCð CØ9?ðCð Cð Cñ	
ô 	
ð 	
ð 	
ð 	
r_   )r„   r@   r…   r†   r‡   r†   rd   rr   )rZ   r[   r\   ry   Ú__classcell__©r‹   s   @r`   rƒ   rƒ   ”   s=   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r_   rƒ   c                  ó   — e Zd ZU ded<   dS )ÚDynamicOutputShapeExceptionr@   r„   NrY   r^   r_   r`   r�   r�   ¤   ó   € € € € € € àÐÐÑÐÐr_   r�   c                  ó   — e Zd ZU ded<   dS )ÚDataDependentOutputExceptionr@   r„   NrY   r^   r_   r`   r’   r’   ©   r�   r_   r’   c                  ó   — e Zd ZU ded<   dS )ÚUnsupportedOperatorExceptionr@   r„   NrY   r^   r_   r`   r”   r”   ®   r�   r_   r”   c                  ó   — e Zd ZU ded<   dS )Ú$UnsupportedMutationAliasingExceptionrc   r€   NrY   r^   r_   r`   r–   r–   ³   r�   r_   r–   c                  ó   — e Zd ZU ded<   dS )ÚMetadataMismatchErrorrc   r€   NrY   r^   r_   r`   r˜   r˜   ¸   r�   r_   r˜   c                  ó,   — e Zd ZU ded<   ded<   d	d„ZdS )
ÚFakeTensorTLSúbool | NoneÚallow_non_fake_inputs_overridezweakref.WeakSet[FakeTensor]Ú%non_strict_export_fake_tensor_trackerrd   rr   c                óD   — d | _         t          j        ¦   «         | _        d S ©N)rœ   ÚweakrefÚWeakSetr�   rw   s    r`   ry   zFakeTensorTLS.__init__Ã   s    € Ø.2ˆÔ+Ý5<´_Ñ5FÔ5FˆÔ2Ð2Ð2r_   Nr}   )rZ   r[   r\   r]   ry   r^   r_   r`   rš   rš   ½   sJ   € € € € € € ð 0Ð/Ð/Ñ/ØFÐFÐFÑFðGð Gð Gð Gð Gð Gr_   rš   Úitemsúdict[T, Literal[True]]c                 ó8   — t                                | d¦  «        S ©NT)ÚdictÚfromkeys)r¢   s    r`   Úordered_setr¨   Ë   s   € Ý�=Š=˜ Ñ%Ô%Ð%r_   ú/Generator[TorchDispatchMode | None, None, None]c               #  ó  K  — t           j                             t           j        j        j        ¦  «        } 	 | V — | �!t           j                             | ¦  «         d S d S # | � t           j                             | ¦  «         w w xY wrŸ   )rl   rm   Ú_unset_dispatch_modeÚ_TorchDispatchModeKeyÚFAKEÚ_set_dispatch_mode)Úolds    r`   Úunset_fake_temporarilyr°   Ï   s   è è € å
Œ(×
'Ò
'­¬Ô(FÔ(KÑ
LÔ
L€Cð-Øˆ	ˆ	ˆ	àˆ?ÝŒH×'Ò'¨Ñ,Ô,Ð,Ð,Ð,ð ˆ?øˆ3ˆ?ÝŒH×'Ò'¨Ñ,Ô,Ð,Ð,ð øøøs   ·A  Á $BÚ	fake_modeÚFakeTensorModeúGenerator[None, None, None]c              #  óV   K  — | j         }	 d| _         d V — || _         d S # || _         w xY w)NF)Úcache_enabled)r±   Ú	old_values     r`   Údisable_fake_tensor_cacher·   Ù   sF   è è € àÔ-€Ið,Ø"'ˆ	ÔØˆˆˆà"+ˆ	ÔÐÐø )ˆ	ÔÐ+Ð+Ð+Ð+s   ‹ Ÿ	(Úsubclassú!Tensor | TraceableWrapperSubclassÚoutú(list[Tensor | int | SymInt | OpaqueBase]c               ó  ‡— | g}|r€|                      ¦   «         Št          ‰¦  «        s|                     ‰¦  «         Œ;‰                     ¦   «         \  }}|                     ˆfd„t          |¦  «        D ¦   «         ¦  «         |°€|S )Nc              3  ó8   •K  — | ]}t          ‰|¦  «        V — Œd S rŸ   )Úgetattr)Ú.0ÚkeyÚcurrs     €r`   ú	<genexpr>z$get_plain_tensors.<locals>.<genexpr>ñ   s-   øè è € ÐGÐG¨3•G˜D #Ñ&Ô&ÐGÐGÐGÐGÐGÐGr_   )Úpopr*   ÚappendÚ__tensor_flatten__ÚextendÚreversed)r¸   rº   ÚtodoÚ
inner_keysÚ_rÁ   s        @r`   Úget_plain_tensorsrË   ã   s�   ø€ ð ˆ:€DØ
ð HØ�xŠx‰zŒzˆÝ,¨TÑ2Ô2ð 	Ø�JŠJ�tÑÔÐØà×/Ò/Ñ1Ô1‰ˆ
�AØ�ŠÐGÐGÐGÐGµ(¸:Ñ2FÔ2FÐGÑGÔGÑGÔGÐGð ð Hð €Jr_   ÚxrH   úTypeGuard[Tensor]c                óž  — ddl m} t          | t          ¦  «        rdS t	          | ¦  «        rªt          | ¦  «                             | ¦  «        \  }}d }|D ]|}t          | |¦  «        xxt          d˜ x�.\   } t          |¦  «        }|€|}Œ5||k    rt          d¦  «        ‚ŒK  xt          d˜ x�\    Œ\ }t          dt          |¦  «        › �¦  «        ‚|pdS t          | |¦  «        rt          | j        ¦  «        S t          | t          ¦  «        rft          j        | ¦  «        rRt          j                             ¦   «         }	t          j        j                             | |	¦  «        }
t          |
¦  «        S t          | t          ¦  «        rBt'          | ¦  «        r3t          j        j                             | ¦  «        }
t          |
¦  «        S dS )Nr   ©ÚFunctionalTensorTr^   z got mixed fake and real tensors!ú#expected Tensor or OpaqueBase, got F)Ú#torch._subclasses.functional_tensorrÐ   Ú
isinstanceÚ
FakeTensorr*   ÚtyperÅ   r¾   r   Úis_fakeÚAssertionErrorr   Úelemrl   Ú_is_functional_tensorrm   Ú$_functionalization_reapply_views_tlsÚ
_functorchÚ_unwrap_functional_tensorr   Úget_unwrapped)rÌ   rÐ   ÚattrsrÊ   Úgot_fakeÚattrÚvÚfakeÚ
unexpectedÚreapply_viewsÚ	unwrappeds              r`   rÖ   rÖ   ö   sé  € ØDÐDÐDÐDÐDÐDå�!•ZÑ Ô ð ØˆtÝ$ QÑ'Ô'ð "Ý˜‘7”7×-Ò-¨aÑ0Ô0‰ˆˆqØ $ˆØð 	ð 	ˆDÝ˜!˜TÑ"Ô"Ø"�]•V�X�X�X�X‘X�X�XÝ" 1™:œ:�DØÐ'Ø#'˜˜Ø! TÒ)Ð)Ý,Ð-OÑPÔPÐPð *ð	 #�]ð "•Z�\�\�\�\‘\�\Øð "àÝ(ØP½dÀ:Ñ>NÔ>NÐPÐPñô ð ð Ð ˜5Ð Ý	�AÐ'Ñ	(Ô	(ð "Ý�q”v‰ŒÐÝ	�A•vÑ	Ô	ð "¥5Ô#>¸qÑ#AÔ#Að "Ýœ×EÒEÑGÔGˆÝ”HÔ'×AÒAÀ!À]ÑSÔSˆ	Ý�yÑ!Ô!Ð!Ý	�A•vÑ	Ô	ð "Õ#>¸qÑ#AÔ#Að "Ý”HÔ'×5Ò5°aÑ8Ô8ˆ	Ý�yÑ!Ô!Ð!Øˆ5r_   ÚtúFakeTensorMode | Nonec                ó„  — ddl m} t          | t          ¦  «        r| j        S t          | ¦  «        r˜|                      ¦   «         \  }}d }|D ]z}t          | |¦  «        xxt          d˜ x�,\   } t          |¦  «        }|€|}Œ5||urt          d¦  «        ‚ŒI  xt          d˜ x�\    ŒZ }t          dt          |¦  «        › �¦  «        ‚|S t          | |¦  «        rt          | j        ¦  «        S t          | t          ¦  «        rft          j        | ¦  «        rRt          j                             ¦   «         }	t          j        j                             | |	¦  «        }
t          |
¦  «        S t          | t          ¦  «        rBt)          | ¦  «        r3t          j        j                             | ¦  «        }
t          |
¦  «        S d S )Nr   rÏ   r^   z&All fake tensor modes must be the samerÑ   )rÒ   rÐ   rÓ   rÔ   r±   r*   rÅ   r¾   r   Úmaybe_get_fake_moder×   r   rÕ   rØ   rl   rÙ   rm   rÚ   rÛ   rÜ   r   rÝ   )ræ   rÐ   Úinner_tensor_namesrÊ   ÚmodeÚt_namerá   Úmrã   rä   rå   s              r`   ré   ré     sá  € ØDÐDÐDÐDÐDÐDå�!•ZÑ Ô ð ØŒ{ÐÝ$ QÑ'Ô'ð .Ø !× 4Ò 4Ñ 6Ô 6ÑÐ˜AØ&*ˆØ(ð 	ð 	ˆFÝ˜!˜VÑ$Ô$Ø"�]•V�X�X�X�X‘X�X�XÝ+¨AÑ.Ô.�AØ�|Ø ˜˜Ø Q˜˜Ý,Ð-UÑVÔVÐVð 'ð	 #�]ð "•Z�\�\�\�\‘\�\Øð "àÝ(ØP½dÀ:Ñ>NÔ>NÐPÐPñô ð ð ˆÝ	�AÐ'Ñ	(Ô	(ð .Ý" 1¤6Ñ*Ô*Ð*Ý	�A•vÑ	Ô	ð .¥5Ô#>¸qÑ#AÔ#Að .Ýœ×EÒEÑGÔGˆÝ”HÔ'×AÒAÀ!À]ÑSÔSˆ	Ý" 9Ñ-Ô-Ð-Ý	�A•vÑ	Ô	ð .Õ#>¸qÑ#AÔ#Að .Ý”HÔ'×5Ò5°aÑ8Ô8ˆ	Ý" 9Ñ-Ô-Ð-Øˆ4r_   r„   r@   útorch._C._SchemaInfoc                óJ   — t           j                             | j        ¦  «        S rŸ   )rl   rm   Ú_SchemaInfoÚ_schema©r„   s    r`   Úget_schema_inforó   <  s   € åŒ8×Ò ¤Ñ-Ô-Ð-r_   c                ó¨   — ddl m} t          j        j        }||          j                             d¦  «        o||          j        t          |¦  «        v S )Nr   ©Údecomposition_tableztorch._decomp)	Útorch._decomprö   rl   Ú_decompÚdecompositionsr[   Ú
startswithrZ   Údir)r„   rö   rù   s      r`   Útorch_decomp_decompositionsrü   F  sb   € à1Ð1Ð1Ð1Ð1Ð1å”]Ô1€Nð ˜tÔ$Ô/×:Ò:Øñô ð Dà
˜dÔ
#Ô
,µ°NÑ0CÔ0CÐ
CðDr_   Útyútype[T]Útreer/   úlist[T]c                óT   ‡ — t                                |¦  «        }ˆ fd„|D ¦   «         S )Nc                ó4   •— g | ]}t          |‰¦  «        ¯|‘ŒS r^   )rÓ   )r¿   rØ   rý   s     €r`   ú
<listcomp>z%tree_flatten_only.<locals>.<listcomp>U  s(   ø€ Ð?Ð?Ð?�T­*°T¸2Ñ*>Ô*>Ð?ˆDÐ?Ð?Ð?r_   )ÚpytreeÚtree_leaves)rý   rÿ   Ú	flat_valss   `  r`   Útree_flatten_onlyr  S  s0   ø€ Ý×"Ò" 4Ñ(Ô(€IØ?Ð?Ð?Ð?˜YÐ?Ñ?Ô?Ð?r_   c                óÚ   — t          | ¦  «        t          u oU| j        t          j        k    o@| j        p8| j        p1t          | ¦  «        p"t          | ¦  «        pt          j	        | ¦  «         S rŸ   )
rÕ   r   Úlayoutrl   ÚstridedÚ	is_sparseÚ	is_nestedr   r   rÙ   )ræ   s    r`   Ú_is_plain_tensorr  X  sx   € åˆQ‰Œ•6Ðð 	
ØŒH�œÒ%ð	
ð ŒKð .ØŒ{ð.å*¨1Ñ-Ô-ð.õ ' qÑ)Ô)ð.õ Ô*¨1Ñ-Ô-ð
ð
r_   c                  ó¤   — e Zd ZU ed0d„¦   «         Zded<   ded<   ded	<   d
d
dœd1d„Zd2d„Zd3d„Zd4d„Z	d5d„Z
d6d„Z	 	 d7ddddœd8d(„Z	 	 d9d:d/„ZdS );ÚFakeTensorConverterrd   úRweakref.WeakValueDictionary[torch._subclasses.meta_utils.MetaTensorId, FakeTensor]c                ó   — | j         j        S rŸ   )Úmeta_converterÚtensor_memorw   s    r`   r  zFakeTensorConverter.tensor_memok  s   € ð Ô"Ô.Ð.r_   zMetaConverter[FakeTensor]r  z5dict[StorageWeakRef, list[ReferenceType[FakeTensor]]]Úconstant_storage_mappingre   ÚexportF©Ú	copy_datar  r  rr   c               óL   — t          |¬¦  «        | _        || _        i | _        d S )N)r  )r    r  r  r  )rx   r  r  s      r`   ry   zFakeTensorConverter.__init__w  s,   € Ý+°iÐ@Ñ@Ô@ˆÔØˆŒð )+ˆÔ%Ð%Ð%r_   Úfake_tensorrÔ   c                ó2  — t          |t          ¦  «        r|j        €t          d¦  «        ‚t	          |j                             ¦   «         ¦  «        }|| j        vr
g | j        |<   | j        |                              t          j	        |¦  «        ¦  «         d S )Nz0fake_tensor must be a FakeTensor with a constant)
rÓ   rÔ   Úconstantr×   r%   Ú_typed_storager  rÄ   r    Úref)rx   r  Úweak_sts      r`   Úadd_constant_storage_mappingz0FakeTensorConverter.add_constant_storage_mapping~  s“   € õ ˜+¥zÑ2Ô2ð 	U°kÔ6JÐ6RÝ Ð!SÑTÔTÐTÝ  Ô!5×!DÒ!DÑ!FÔ!FÑGÔGˆð
 ˜$Ô7Ð7Ð7Ø57ˆDÔ)¨'Ñ2ØÔ% gÔ.×5Ò5µg´kÀ+Ñ6NÔ6NÑOÔOÐOÐOÐOr_   Útensorr   c                ó$  — t          |t          ¦  «        rt          d¦  «        ‚t          |                     ¦   «         ¦  «        }|| j        vrd S | j        |         D ])} |¦   «         }|�|                     ¦   «          d |_        Œ*| j        |= d S )Nz(Expected a real tensor, not a FakeTensor)rÓ   rÔ   r×   r%   r  r  Ú_fix_weakrefr  )rx   r   r  Úweak_tensor_refÚtens        r`   Úinvalidate_constant_aliasesz/FakeTensorConverter.invalidate_constant_aliases�  s¤   € Ý�f�jÑ)Ô)ð 	MÝ Ð!KÑLÔLÐLå  ×!6Ò!6Ñ!8Ô!8Ñ9Ô9ˆØ˜$Ô7Ð7Ð7ØˆFà#Ô<¸WÔEð 	$ð 	$ˆOØ!�/Ñ#Ô#ˆCØˆà× Ò Ñ"Ô"Ð"Ø#�”øàÔ)¨'Ð2Ð2Ð2r_   c                óJ  — t          | j                             ¦   «         ¦  «        D ]{\  }}g }d}|D ]4} |¦   «         }|�|j        €Œ|                     |¦  «         |€|j        }Œ5|€	| j        |= ŒK|j        j        dk    r|| j        |<   Œf|                      |¦  «         Œ|dS )zFClear non-CPU constants while keeping cheap CPU constants for folding.NÚcpu)Úlistr  r¢   r  rÄ   r‡   rÕ   r%  )rx   r  Úweak_tensor_refsÚlive_tensor_refsr  r#  r$  s          r`   Úclear_non_cpu_constantsz+FakeTensorConverter.clear_non_cpu_constantsž  sÛ   € å)-¨dÔ.K×.QÒ.QÑ.SÔ.SÑ)TÔ)Tð 	;ð 	;Ñ%ˆGÐ%Ø@BÐØ&*ˆHØ#3ð ,ð ,�Ø%�oÑ'Ô'�Ø�; #¤,Ð"6Øà ×'Ò'¨Ñ8Ô8Ð8ØÐ#Ø"œ|�HøàÐØÔ1°'Ð:Ð:Ø”Ô%¨Ò.Ð.Ø9I�Ô-¨gÑ6Ð6à×0Ò0°Ñ:Ô:Ð:Ð:ð#	;ð 	;r_   ræ   úFakeTensor | Nonec                ó†   — | j         j        j                             |¦  «        }|€d S | j                             |¦  «        S rŸ   )r  Ú	describerÚlookup_tensorÚgetr  )rx   ræ   Útids      r`   Ú	_get_memozFakeTensorConverter._get_memo³  s?   € ØÔ!Ô+Ô9×=Ò=¸aÑ@Ô@ˆØˆ;Ø�4ØÔ×#Ò# CÑ(Ô(Ð(r_   rá   c                ób   — | j         j                             |¦  «        }|| j         j        |<   d S rŸ   )r  r.  Úget_tensor_idr  )rx   ræ   rá   r1  s       r`   Úset_tensor_memoz#FakeTensorConverter.set_tensor_memo¹  s1   € ØÔ!Ô+×9Ò9¸!Ñ<Ô<ˆØ/0ˆÔÔ'¨Ñ,Ð,Ð,r_   NT)ÚsourceÚsymbolic_contextÚtracer±   r²   Úmake_constantÚ	shape_envúShapeEnv | Noner6  úSource | Noner7  úSymbolicContext | Noner8  c               óÂ  ‡‡— |s{|sy|rwt           j        j                             ¦   «         x}rR||j        v rI|j        |         }ddlm}	 t          ||	¦  «        st          dt          |¦  «        › �¦  «        ‚|j
        }|                      |¦  «        }
|
�|
S |j        rt          d¦  «        ‚t          |¦  «        t           j        j        u r|rt          d¦  «        ‚|r|nd Šdˆˆfd„}|                      ||||||¬¦  «        }|t"          u rt          d¦  «        ‚t          |t           j        j        j        ¦  «        rt          j        |j        ¦  «        n|}|j        r*|j        r#|j        |j        k    r|j        r|j        |_        ddlm} d }| j        �s¨t=          |¦  «        �r˜|                     ¦   «         dk    �r|j         j	        dk    �rn|j        t           j!        t           j"        t           j#        t           j$        t           j%        fv �r-|��*t          ||¦  «        �s|��ddlm&}m'} ddlm(} tS          ¦   «         5  | *                    ¦   «         }d d d ¦  «         n# 1 swxY w Y   tW          j,        |¦  «        sºtW          j-        |¦  «        s¦t          ||¦  «        r|j.        }n ||¦  «        }| /                    |||j0        |¬¦  «        }|j        t           j!        k    r| 1                    |||¬¦  «        |_2        n2|j        t           j%        k    r| 3                    |||¬¦  «        |_2        |r|  4                    |¦  «         |S )Nr   )ÚStatefulSymbolicContextz&Expected StatefulSymbolicContext, got zquantized nyi in meta tensorsz,make_constant must be False for nn.ParameterÚmake_meta_túCallable[[], object]r‡   útorch.device | strrd   rÔ   c                óŠ   •— t          ¦   «         5  t          ‰ | ¦   «         |‰¬¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )N©r  )r)   rÔ   )r@  r‡   r  r±   s     €€r`   Úmk_fake_tensorz<FakeTensorConverter.from_real_tensor.<locals>.mk_fake_tensorì  s™   ø€ õ ‘”ð 
ð 
Ý!Øà�K‘M”Màð &ð	ñ 	ô 	ð
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   �8¸<¿<)r:  Úcallbackr6  r7  r8  zmeta converter nyi)ÚRandomValueSourcer'  )ÚCallMethodItemSourceÚFloatTensorSource)Ú
DimDynamic)r6  Údynamic_dimr7  )Úhintr6  )r@  rA  r‡   rB  rd   rÔ   )5rl   Ú_guardsÚTracingContextÚtry_getÚtensor_to_contextÚ%torch.fx.experimental.symbolic_shapesr?  rÓ   r×   rÕ   Útensor_sourcer2  Úis_quantizedr   ÚnnÚ	Parameterr  ÚNotImplementedÚ_subclassesÚfunctional_tensorrÐ   Ú_from_functional_tensorrØ   Úrequires_gradÚis_leafÚ
grad_dtypeÚdtypeÚtorch._dynamo.sourcerG  r  r  Údimr‡   Úint64Úint32Úint16Úint8Úfloat64rH  rI  rJ  r)   ÚitemÚmathÚisnanÚisinfÚbaseÚcreate_unspecified_symbolÚDYNAMICÚcreate_symintnodeÚ	item_memoÚcreate_symfloatnoder  )rx   r±   ræ   r9  r:  r6  r7  r8  Útracing_contextr?  Ú
maybe_memorE  rº   Úinner_trG  ÚvaluerH  rI  rJ  Úitem_sourceÚsymbolr  s    `                   @r`   Úfrom_real_tensorz$FakeTensorConverter.from_real_tensorÃ  sT  øø€ ð  ð 	<¨ð 	<°9ð 	<Ý"'¤-Ô">×"FÒ"FÑ"HÔ"HÐHˆð <Ø˜Ô9Ð9Ð9Ø'6Ô'HÈÔ'KÐ$ðð ð ð ð ð õ &Ð&6Ð8OÑPÔPð Ý,Ø]ÅTÐJZÑE[ÔE[Ð]Ð]ñô ð ð .Ô;�Fà—^’^ AÑ&Ô&ˆ
ØÐ!ØÐàŒ>ð 	RÝ0Ð1PÑQÔQÐQÝ�‰7Œ7•e”hÔ(Ð(Ð(Øð UÝ$Ð%SÑTÔTÐTà%Ð/�1�1¨4ˆð
	ð 	ð 	ð 	ð 	ð 	ð 	ð, ×!Ò!ØØØ#ØØ-Øð "ñ 
ô 
ˆð •.Ð Ð Ý0Ð1EÑFÔFÐFõ ˜!�UÔ.Ô@ÔQÑRÔRð�EÔ)¨!¬&Ñ1Ô1Ð1àð 	ð Ô!ð	0à”ð	0ð Ô" g¤mÒ3Ð3Ø”ð 4ð %Ô/ˆCŒNà:Ð:Ð:Ð:Ð:Ð:àˆà”ñB	å  Ñ#Ô#ñB	ð —’‘”˜1’‘Ø”” Ò&Ñ&ð ”Ý”�Uœ[­%¬+µu´zÅ5Ä=ÐQðRñ RàÑ"õ$ ˜vÐ'8Ñ9Ô9ñ% #ð, Ñ%àTÐTÐTÐTÐTÐTÐTÐTØHÐHÐHÐHÐHÐHå‘”ð !ð !ØŸš™œ�ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !å”:˜eÑ$Ô$ð ­T¬Z¸Ñ->Ô->ð å˜fÐ&7Ñ8Ô8ð ?Ø"(¤+�K�Kà"6Ð"6°vÑ">Ô">�KØ"×<Ò<ØØ&Ø *Ô 2Ø%5ð	 =ñ ô �ð ”7�eœkÒ)Ð)Ø$-×$?Ò$?ØØ"Ø*ð %@ñ %ô %�C”M�Mð
 ”W¥¤Ò-Ð-Ø$-×$AÒ$AØØ"Ø*ð %Bñ %ô %�C”Mð
 ð 	3Ø×-Ò-¨cÑ2Ô2Ð2àˆ
s   ÉI/É/I3É6I3r‡   r†   Úpytypeútype[torch.Tensor] | NoneÚdispatch_keysútorch.DispatchKeySet | Nonec                óæ   — |j         j        dk    rt          d|j         j        › d�¦  «        ‚|                      |¦  «        }|�|S t	          |||||¬¦  «        }|                      ||¦  «         |S )NÚmetaz$tensor's device must be `meta`, got z instead)rv  rx  )r‡   rÕ   r×   r2  rÔ   r5  )rx   r±   ræ   r‡   rv  rx  rp  rº   s           r`   Úfrom_meta_and_devicez(FakeTensorConverter.from_meta_and_devicel  s’   € ð Œ8Œ=˜FÒ"Ð"Ý ØN°q´x´}ÐNÐNÐNñô ð ð
 —^’^ AÑ&Ô&ˆ
ØÐ!ØÐÝØ�q˜&¨¸}ð
ñ 
ô 
ˆð 	×Ò˜Q Ñ$Ô$Ð$Øˆ
r_   )rd   r  )r  re   r  re   rd   rr   )r  rÔ   rd   rr   )r   r   rd   rr   r}   )ræ   r   rd   r,  )ræ   r   rá   rÔ   rd   rr   )FN)r±   r²   ræ   r   r9  re   r:  r;  r6  r<  r7  r=  r8  re   rd   rÔ   )NN)r±   r²   ræ   r   r‡   r†   rv  rw  rx  ry  rd   rÔ   )rZ   r[   r\   Úpropertyr  r]   ry   r  r%  r+  r2  r5  ru  r|  r^   r_   r`   r  r  j  sA  € € € € € € Øð/ð /ð /ñ „Xð/ð .Ð-Ð-Ñ-ØSÐSÐSÑSØ€L€L�Là,1À%ð +ð +ð +ð +ð +ð +ðPð Pð Pð Pð3ð 3ð 3ð 3ð";ð ;ð ;ð ;ð*)ð )ð )ð )ð1ð 1ð 1ð 1ð $Ø%)ðfð !%Ø37Øðfð fð fð fð fð fð\ -1Ø59ðð ð ð ð ð ð r_   r  r‡   r†   rr   c                óÔ   — t           j                             d¦  «        | j        k    r?t           j        j        €t          j        d| ¬¦  «        nt          j        d| ¬¦  «         d S d S )NTr5   ©r‡   )rl   ÚacceleratorÚcurrent_acceleratorrÕ   ÚversionÚhipÚemptyÚzerosr  s    r`   Úinit_gpu_contextr†  „  sf   € õ Ô×,Ò,¨TÑ2Ô2°f´kÒAÐAõ Œ}Ô Ð(õ ŒK˜ &Ð)Ñ)Ô)Ð)å”˜Q vÐ.Ñ.Ô.øè è ð	 BÐAr_   c              #  óâ  K  — | j         }t          j                             ¦   «         }||k    rt	          |› d|› �¦  «        ‚t          j                             ¦   «         5  d| _         t          j                             ¦   «         5  t          j                             d¦  «         	 d V — || _         n# || _         w xY w	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nú, T)Úin_kernel_invocationrl   rm   Ú_meta_in_tls_dispatch_includer×   Ú_DisableTorchDispatchÚ_PreserveDispatchKeyGuardÚ!_set_meta_in_tls_dispatch_include)r±   Úprev_in_kernelÚmeta_in_tlss      r`   Úin_kernel_invocation_managerr�  �  s¡  è è € ð
 Ô3€NÝ”(×8Ò8Ñ:Ô:€KØ�nÒ$Ð$Ý Ð?Ð?¨~Ð?Ð?Ñ@Ô@Ð@å	Œ×	'Ò	'Ñ	)Ô	)ð 	@ð 	@Ø)-ˆ	Ô&õ ŒX×/Ò/Ñ1Ô1ð 	@ð 	@ÝŒH×6Ò6°tÑ<Ô<Ð<ð@Ø���à1?�	Ô.Ð.ø°�	Ô.Ð?Ð?Ð?Ð?Ð.ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð		@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@sN   Á &C$Â CÂ'B3Â+CÂ3	B<Â<CÃ C$ÃC	ÃC$ÃC	ÃC$Ã$C(Ã+C(c                óÈ   — t           j                             |                      ¦   «                              d¦  «        d                              d¦  «        d         ¦  «        S )Nz::éÿÿÿÿú.r   )rl   rm   Ú _should_allow_numbers_as_tensorsÚnameÚsplitrò   s    r`   Úshould_allow_numbers_as_tensorsr—  §  sM   € ÝŒ8×4Ò4Ø�	Š	‰Œ×Ò˜$ÑÔ Ô#×)Ò)¨#Ñ.Ô.¨qÔ1ñô ð r_   c                  óL   — e Zd Zej                             dd¦  «        dk    ZdS )ÚFakeTensorConfigÚTORCH_FAKE_TENSOR_DEBUGÚ0Ú1N)rZ   r[   r\   ÚosÚenvironr0  Údebugr^   r_   r`   r™  r™  ­  s)   € € € € € ØŒJ�NŠNÐ4°cÑ:Ô:¸cÒA€E€E€Er_   r™  c                  óf   — e Zd ZU ded<   ded<   ddœdd
„Zdd„Zdd„Zdd„Zdd„Z	 ddd„Z	d d„Z
dS )!ÚSymNumberMemoDescriptorrc   Ú_namere   Ú_is_nested_intF©Úis_nested_intr¥  rd   rr   c               ó   — || _         d S rŸ   )r£  )rx   r¥  s     r`   ry   z SymNumberMemoDescriptor.__init__Æ  s   € Ø+ˆÔÐÐr_   Úownerr•  c                ó   — || _         d S rŸ   ©r¢  )rx   r§  r•  s      r`   Ú__set_name__z$SymNumberMemoDescriptor.__set_name__É  s   € ØˆŒ
ˆ
ˆ
r_   ÚobjrÔ   c                ó   — d| j         › �S )NrÊ   r©  ©rx   r«  s     r`   Ú_memozSymNumberMemoDescriptor._memoÌ  s   € Ø�4”:ÐÐÐr_   c                ó   — d| j         › d�S )NrÊ   Ú_vcr©  r­  s     r`   Ú_memo_vcz SymNumberMemoDescriptor._memo_vcÏ  s   € Ø"�4”:Ð"Ð"Ð"Ð"r_   c                ó   — d| j         › d�S )NrÊ   Ú_epochr©  r­  s     r`   Ú_memo_epochz#SymNumberMemoDescriptor._memo_epochÖ  s   € Ø%�4”:Ð%Ð%Ð%Ð%r_   NÚobjtypeútype[FakeTensor] | Noneú$torch.SymInt | torch.SymFloat | Nonec                óÆ  — t          ||                      |¦  «        ¦  «        x}€d S t          |t          j        ¦  «        r|j        j        �|S | j        s,t          ||                      |¦  «        ¦  «        |j	        k    s8| j        sWt          ||  
                    |¦  «        ¦  «        |j        j        k    r&t          ||                      |¦  «        d ¦  «         d S |S rŸ   )r¾   r®  rÓ   rl   r   ÚnoderL  r£  r±  Ú_versionr´  r±   ÚepochÚsetattr)rx   r«  rµ  Úrs       r`   Ú__get__zSymNumberMemoDescriptor.__get__Ù  sØ   € õ ˜˜dŸjšj¨™oœoÑ.Ô.Ð.ˆAÐ7Ø�4õ �a�œÑ(Ô(ð 	¨Q¬V¬[Ð-DØˆHð
 Ô#ð	Ý(/°°T·]²]À3Ñ5GÔ5GÑ(HÔ(HÈCÌLÒ(XÐ(XàÔ#ð )Yõ ˜˜T×-Ò-¨cÑ2Ô2Ñ3Ô3°s´}Ô7JÒJÐJå�C˜Ÿš C™œ¨$Ñ/Ô/Ð/Ø�4Øˆr_   rr  úBtorch.SymInt | torch.SymFloat | torch.SymBool | int | float | Nonec                ó$  — |€nt          ||                      |¦  «        d ¦  «         t          ||                      |¦  «        d ¦  «         t          ||                      |¦  «        d ¦  «         d S |                     ¦   «         r| j        r„t          ||                      |¦  «        |¦  «         | j        s)t          ||                      |¦  «        |j        ¦  «         t          ||                      |¦  «        |j        j        ¦  «         d S d S rŸ   )	r¼  r®  r±  r´  Úis_inferencer£  rº  r±   r»  )rx   r«  rr  s      r`   Ú__set__zSymNumberMemoDescriptor.__set__ï  s  € ð
 ˆ=Ý�C˜Ÿš C™œ¨$Ñ/Ô/Ð/Ý�C˜Ÿš sÑ+Ô+¨TÑ2Ô2Ð2Ý�C˜×)Ò)¨#Ñ.Ô.°Ñ5Ô5Ð5Ð5Ð5Ø×!Ò!Ñ#Ô#ð 	E tÔ':ð 	EÝ�C˜Ÿš C™œ¨%Ñ0Ô0Ð0ØÔ&ð ?Ý˜˜TŸ]š]¨3Ñ/Ô/°´Ñ>Ô>Ð>Ý�C˜×)Ò)¨#Ñ.Ô.°´Ô0CÑDÔDÐDÐDÐDð		Eð 	Er_   )r¥  re   rd   rr   )r§  rc   r•  rc   rd   rr   )r«  rÔ   rd   rc   rŸ   )r«  rÔ   rµ  r¶  rd   r·  )r«  rÔ   rr  r¿  rd   rr   )rZ   r[   r\   r]   ry   rª  r®  r±  r´  r¾  rÂ  r^   r_   r`   r¡  r¡  ¼  sØ   € € € € € € Ø€J€J�Jð ÐÐÑà05ð ,ð ,ð ,ð ,ð ,ð ,ðð ð ð ð ð  ð  ð  ð#ð #ð #ð #ð&ð &ð &ð &ð CGðð ð ð ð ð,Eð Eð Eð Eð Eð Er_   r¡  c                  óP  ‡ — e Zd ZU dZded<   ded<   ded<   ded<    e¦   «         Zd	ed
<    e¦   «         Z e¦   «         Zd	ed<    e¦   «         Z	d	ed<    ed¬¦  «        Z
ded<   ded<   ej        j        j        ZedGd„¦   «         Zej        dHd„¦   «         ZedGd„¦   «         Zej        dId„¦   «         ZedJd„¦   «         Ze	 	 	 	 	 	 	 dKddddddœdLd,„¦   «         ZdMˆ fd0„ZedNd3„¦   «         Zeed4 e¦   «         fdOd;„¦   «         ¦   «         ZedPd>„¦   «         Zd?d@œdQdD„ZdRdF„Zˆ xZ S )SrÔ   al  
    Meta tensors give you the ability to run PyTorch code without having to
    actually do computation through tensors allocated on a `meta` device.
    Because the device is `meta`, meta tensors do not model device propagation.
    FakeTensor extends MetaTensors to also carry an additional `fake_device`
    which tracks devices that would have been used.
    r†   Ú_fake_devicer²   r±   úTensor | Noner  Úreal_tensorz$SymNumberMemoDescriptor | int | NoneÚnonzero_memoÚunique_memoÚunique_consecutive_memoTr¤  útype[Tensor] | Nonerv  ry  rx  rd   c                óP   — | j         j        rt          j        d¦  «        S | j        S ©Nr{  )r±   r‰  rl   r‡   Úfake_devicerw   s    r`   r‡   zFakeTensor.device&  s*   € ð Œ>Ô.ð 	$Ý”< Ñ'Ô'Ð'àÔ#Ð#r_   rÊ   rr   c                ó   — t           ‚rŸ   )ÚNotImplementedError)rx   rÊ   s     r`   r‡   zFakeTensor.device.  s   € å!Ð!r_   c                ó   — | j         S rŸ   )rÄ  rw   s    r`   rÍ  zFakeTensor.fake_device2  s   € àÔ Ð r_   r‡   c                ó:   — |                       |¦  «        | _        d S rŸ   )Ú_normalize_fake_devicerÄ  )rx   r‡   s     r`   rÍ  zFakeTensor.fake_device6  s   € à ×7Ò7¸Ñ?Ô?ˆÔÐÐr_   c                ó¤  — | j         dv rt          | ¦  «         t          | j         ¦  «        r£| j        €œ| j         dk    rut	          t
          | j         ¦  «                             ¦   «         rIt          j        | j         › dt	          t
          | j         ¦  «                             ¦   «         › �¦  «        } nt          j        | j         › d�¦  «        } | S )zFNormalize device by initializing GPU context and setting device index.)rg   ri   Nrj   ú:z:0)	rÕ   r†  ro   Úindexr¾   rl   Úis_initializedr‡   Úcurrent_devicer  s    r`   rÒ  z!FakeTensor._normalize_fake_deviceI  sÁ   € ð Œ;˜/Ð)Ð)Ý˜VÑ$Ô$Ð$å" 6¤;Ñ/Ô/ð 	:°F´LÐ4HØŒ{˜eÒ#Ð#­µ°v´{Ñ(CÔ(C×(RÒ(RÑ(TÔ(TÐ#ÝœØ”{ÐSÐS¥W­U°F´KÑ%@Ô%@×%OÒ%OÑ%QÔ%QÐSÐSñô ��õ œ¨¬Ð&8Ð&8Ð&8Ñ9Ô9�Øˆr_   NF)r±   rÍ  rÄ  rZ  Ú	_is_paramÚfake_mode_or_elemúFakeTensorMode | Tensor | NonerØ   útorch.device | str | Nonerç   rÍ  rZ  r›   rØ  re   Ústateú*Unpack[_FakeTensorConstructorIgnoredState]r   c               ó”  — t          t          t          t          f         |¦  «        }t          D ]}|                     |d ¦  «         Œ|r.t          t          |¦  «        ¦  «        }t          d|›�¦  «        ‚t          |t          ¦  «        r|�||urt          d¦  «        ‚|}nZ|�Gt          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|�t          d¦  «        ‚|}|€t          d¦  «        ‚|€t          d¦  «        ‚d„ d|fd	|	fd
|
ffD ¦   «         }|r?|d         \  }}|dd …         D ]&\  }}||k    rt          d|› d|› d|› d|› �¦  «        ‚Œ'|}nt          d¦  «        ‚t          j        | ||€|j        n|d|¬¦  «        }|j        s t"          j                             |¦  «         nt"          j                             |¦  «         |j        j        dk    rt-          d|j        j        › �¦  «        ‚|j        s|j        dk    rt-          d¦  «        ‚||_        ||_        ||_        ||_        ||_        t          |t:          ¦  «        rt-          d¦  «        ‚||_        d |_        d |_         d |_!        d |_"        d |_#        |r||_$        tJ          j&        rtO          j(        ¦   «         |_)        |S )Nz8FakeTensor.__new__() got an unexpected keyword argument z5FakeTensor.__new__() got conflicting fake_mode valueszTFakeTensor.__new__() expected a FakeTensorMode or Tensor as the first argument, got zYFakeTensor.__new__() expected either (fake_mode, elem, ...) or (elem, fake_mode=..., ...)z;FakeTensor.__new__() missing required argument: 'fake_mode'z6FakeTensor.__new__() missing required argument: 'elem'c                ót   — g | ]5\  }}|®|t                                t          j        |¦  «        ¦  «        f‘Œ6S rŸ   )rÔ   rÒ  rl   r‡   )r¿   r•  rr  s      r`   r  z&FakeTensor.__new__.<locals>.<listcomp>�  sM   € ð 
ð 
ð 
á��eð
 Ð ð •:×4Ò4µU´\À%Ñ5HÔ5HÑIÔIÐJð !Ð Ð r_   r‡   rÍ  rÄ  r   r5   z4FakeTensor.__new__() got conflicting device values: ú=rˆ  zKFakeTensor.__new__() missing required argument: 'device' (or 'fake_device')T)Údispatch_deviceÚdevice_for_backend_keysr{  z%elem.device.type must be 'meta', got z7device.type must not be 'meta' when allow_meta is Falsez$real_tensor must not be a FakeTensor)*r   r¦   rc   rH   Ú,_FAKE_TENSOR_CONSTRUCTOR_IGNORED_STATE_ATTRSrÃ   ÚnextÚiterÚ	TypeErrorrÓ   r²   r   rÕ   Ú
ValueErrorÚ_make_subclassrZ  Ú_allow_unsafe_data_ptr_accessrl   rm   Ú_set_throw_on_mutable_data_ptrÚ(_set_warn_deprecated_on_mutable_data_ptrr‡   r×   Ú
allow_metarÍ  r±   r  rv  rx  rÔ   rÆ  rÇ  rm  rÈ  rÉ  Únested_int_memorØ  r™  rŸ  r4   ÚextractrX   )ÚclsrÙ  rØ   r‡   r  rÆ  rv  rx  r±   rÍ  rÄ  rZ  rØ  rÜ  Ú
state_dictÚ	attr_namerã   Úspecified_devicesÚ
first_nameÚresolved_devicer•  Úcandidate_devicerx   s                          r`   Ú__new__zFakeTensor.__new__X  sÔ  € õ$ �$�s¥F˜{Ô+¨UÑ3Ô3ˆ
ÝEð 	,ð 	,ˆIØ�NŠN˜9 dÑ+Ô+Ð+Ð+Øð 	Ý�d :Ñ.Ô.Ñ/Ô/ˆJÝð"Øð"ð "ñô ð õ
 Ð'­Ñ8Ô8ð 	ØÐ$¨Ð:KÐ)KÐ)KÝÐ WÑXÔXÐXØ)ˆIˆIð !Ð,Ý!Ð"3µVÑ<Ô<ð Ý#ðPÝ6:Ð;LÑ6MÔ6MðPð Pñô ð ð Ð#Ý#ðOñô ð ð )�ØÐ ÝØQñô ð ð ˆ<ÝÐTÑUÔUÐUð
ð 
ð ˜6Ð"Ø Ð,Ø Ð.ð ð
ñ 
ô 
Ðð ð 	Ø*;¸AÔ*>Ñ'ˆJ˜Ø*;¸A¸B¸BÔ*?ð ð Ñ&�Ð&Ø"Ð&6Ò6Ð6Ý$ðUØ%ðUð UØ(7ðUð UØ;?ðUð UØBRðUð Uñô ð ð 7ð
 %ˆFˆFåð.ñô ð õ
 Ô$ØØØ"/Ð"7ˆDÔÐ¸]Ø Ø$*ð
ñ 
ô 
ˆð Ô6ð 	DÝŒH×3Ò3°DÑ9Ô9Ð9Ð9åŒH×=Ò=¸dÑCÔCÐCàŒ;Ô˜vÒ%Ð%Ý ØJ¸¼Ô8HÐJÐJñô ð ð Ô#ð 	ØŒ{˜fÒ$Ð$Ý$ØMñô ð ð "ˆÔØ"ˆŒØ ˆŒØˆŒØ*ˆÔÝ�k¥:Ñ.Ô.ð 	IÝ Ð!GÑHÔHÐHØ&ˆÔØ ˆÔØˆŒØˆÔØ'+ˆÔ$Ø#ˆÔàð 	'Ø&ˆDŒNåÔ!ð 	<Ý 1Ô 9Ñ ;Ô ;ˆDÔØˆr_   ÚargsrH   Úkwargsc                óö   •— t          ¦   «                              ¦   «          t          j                             ¦   «         r7t          j        j        j        r#t          j	         
                    | ¦  «         d S d S d S rŸ   )rŠ   ry   rl   ÚcompilerÚis_exportingÚ_exportÚconfigÚ#detect_non_strict_fake_tensor_leaksÚfake_tensor_tlsr�   Úadd)rx   r÷  rø  r‹   s      €r`   ry   zFakeTensor.__init__ê  sx   ø€ Ý‰Œ×ÒÑÔÐåŒN×'Ò'Ñ)Ô)ð	Lå”Ô$ÔHð	Lõ ÔA×EÒEÀdÑKÔKÐKÐKÐKð		Lð 	Lð 	Lð 	Lr_   ræ   r   c                ó,   — |                      | ¦  «        S rŸ   )Úfrom_tensor)ræ   r±   s     r`   r  zFakeTensor.from_tensorò  s   € à×$Ò$ QÑ'Ô'Ð'r_   r^   r„   r@   ÚtypesúSequence[type]úSequence[object]úMapping[str, object]c                óx  — |t           j        j        j        j        u rpt          |¦  «        dk    st          |d         t          ¦  «        st          d¦  «        ‚|d         j	        j
        rt          j        d¦  «        S |d         j        S t                               |¦  «        x}r ||¦  «        S d„ |D ¦   «         }|r"t                               d|¦  «         t           S d }t#          j        |i |¤ŽD ] }t          |t          ¦  «        r	|j	        } nŒ!|€t          d¦  «        ‚t           j                             t           j        j        j        ¦  «        }	|	r#t                               d||	¦  «         t           S |j
        rt          d	¦  «        ‚|5   ||i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S )
Nr5   r   z@Expected exactly one FakeTensor argument for prim.device.defaultr{  c                óN   — g | ]"}t          |t          ¦  «        s|t          u¯ |‘Œ#S r^   )Ú
issubclassrÔ   r   ©r¿   ræ   s     r`   r  z1FakeTensor.__torch_dispatch__.<locals>.<listcomp>  s6   € ð 
ð 
ð 
Ø¥J¨qµ*Ñ$=Ô$=ð
ØBCÍ6À/À/ˆAÀ/À/À/r_   z(FakeTensor unrecognized subclass(es): %sz,Could not find a FakeTensor in the argumentsz(FakeTensor mode already active: %s in %sz,fake_mode.in_kernel_invocation must be False)rl   ÚopsÚprimr‡   ÚdefaultÚlenrÓ   rÔ   r×   r±   r‰  rÍ  Ú_DISPATCH_META_HANDLERSr0  Únot_implemented_logrŸ  rV  r  Úarg_tree_leavesrm   Ú_get_dispatch_moder¬   r­   )
rï  r„   r  r÷  rø  ÚhandlerÚunrecognized_typesr±   ÚargÚmaybe_cur_fake_modes
             r`   Ú__torch_dispatch__zFakeTensor.__torch_dispatch__ö  sG  € ð •5”9”>Ô(Ô0Ð0Ð0Ý�4‰yŒy˜AŠ~ˆ~¥Z°°Q´½Ñ%DÔ%Dˆ~Ý$ØVñô ð ð �AŒwÔ Ô5ð +Ý”| FÑ+Ô+Ð+à˜A”wÔ*Ð*õ .×1Ò1°$Ñ7Ô7Ð7ˆ7ð 	!Ø�7˜4‘=”=Ð ð
ð 
Øð
ñ 
ô 
Ðð ð 	"Ý×%Ò%Ø:Ð<Nñô ð õ "Ð!àˆ	ÝÔ)¨4Ð:°6Ð:Ð:ð 	ð 	ˆCÝ˜#�zÑ*Ô*ð ØœM�	Ø�ðð ÐÝ Ð!OÑPÔPÐPõ $œh×9Ò9ÝŒHÔ*Ô/ñ
ô 
Ðð ð 	"Ý×%Ò%Ø:ØØ#ñô ð õ
 "Ð!àÔ)ð 	QÝ Ð!OÑPÔPÐPàð 	)ð 	)Ø�4˜Ð( Ð(Ð(ð	)ð 	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   ÆF/Æ/F3Æ6F3Ú	flat_argsútuple[torch.device, bool]c           
     óª  ‡ ‡‡‡‡‡	‡
‡‡— d Šd}d Št          t          j        j        ¦  «        Št          t          j        j        ¦  «        Št          t          j        j        ¦  «        Šdd„Š	dd„Š
dˆ	fd
„Šdˆˆˆˆ ˆˆ	ˆ
ˆˆf	d„}|D ]} ||¦  «         Œt          ‰ ¦  «        r‰€d}t          j	        d¦  «        Š‰€t          d‰ › �¦  «        ‚‰|fS )NFr‡   r†   rd   re   c                ó   — | j         dk    S )Nr'  ©rÕ   r  s    r`   Úis_device_cpuz5FakeTensor._find_common_device.<locals>.is_device_cpuc  s   € Ø”; %Ò'Ð'r_   c                ó   — | j         dk    S rÌ  r  r  s    r`   Úis_device_metaz6FakeTensor._find_common_device.<locals>.is_device_metaf  s   € Ø”; &Ò(Ð(r_   ræ   r   c                óT   •—  ‰| j         ¦  «        o|                      ¦   «         dk    S ©Nr   )r‡   r_  )ræ   r  s    €r`   Úcpu_zero_dimz4FakeTensor._find_common_device.<locals>.cpu_zero_dimi  s&   ø€ Ø �= ¤Ñ*Ô*Ð;¨q¯uªu©w¬w¸!ª|Ð;r_   rH   rr   c                ó$  •	— t          | t          ¦  «        sd S ‰€| j        Š ‰| ¦  «        Š
d S  ‰| ¦  «        }| j        ‰k    r‰
r|Š
d S ‰	‰v }|r|sd S ‰
r|s| j        Š|Š
d S ‰	‰v r&t          t	          ‰‰| j        f¦  «        ¦  «        rd S ‰	‰v r&t          t	          ‰‰| j        f¦  «        ¦  «        rd S t
          j        j        j        }|�,|‰j	        v }|| j        j	        v }|s|r| j        Š|Š
d S |r|sd S t          ‰	‰| j        ¦  «        ‚rŸ   )rÓ   rÔ   r‡   ÚanyÚmaprl   rÛ   rý  Úfake_tensor_prefer_device_typerÕ   rƒ   )ræ   Út_is_cpu_zero_dimÚ&is_bypass_zero_dim_cpu_tensor_check_opÚprefer_device_typeÚcommon_has_preferredÚt_has_preferredÚ$bypass_zero_dim_cpu_tensor_check_opsr…   r"  r„   Úis_cpu_zero_dimr  r  Úmeta_rhs_mixed_device_fnsÚmixed_device_fnss         €€€€€€€€€r`   Úmerge_devicesz5FakeTensor._find_common_device.<locals>.merge_devicesl  s•  ø€ õ ˜a¥Ñ,Ô,ð Ø�àÐ$Ø !¤�Ø". ,¨q¡/¤/�Ø�à , ¨Q¡¤ÐØŒx˜=Ò(Ð(Ø"ð 8Ø&7�OØ�ð Ð<Ð<ð 3ð !ð Ð)Oð Ø�ð ð Ð'Mð Ø !¤�Ø"3�Ø�ð Ð'Ð'Ð'Ý•s˜=¨=¸!¼(Ð*CÑDÔDÑEÔEð Ø�FàÐ0Ð0Ð0Ý•s˜>¨M¸1¼8Ð+DÑEÔEÑFÔFð Ø�Fõ "'Ô!1Ô!8Ô!WÐØ!Ð-Ø'9¸]Ô=OÐ'OÐ$Ø"4¸¼¼Ð"E�à+ð °ð à$%¤H�MØ&7�OØ�FØ)ð °/ð à�Fõ 0°°mÀQÄXÑNÔNÐNr_   Tr'  z!Could not find common device for )r‡   r†   rd   re   ©ræ   r   rd   re   )ræ   rH   rd   rr   )r¨   ÚatenÚ_foreach_copyr  Úadd_r   Ú	nextafterr—  rl   r‡   r×   )r„   r  Úhas_scalar_only_inputsr0  r  r,  r…   r"  r-  r  r  r.  r/  s   `    @@@@@@@@r`   Ú_find_common_devicezFakeTensor._find_common_deviceF  s€  øøøøøøøøø€ ð ˆØ!&ÐØˆõ 'ÝÔÔ&ñ
ô 
Ðõ %0ÝŒIÔñ%
ô %
Ð!õ
 0;ÝŒNÔ"ñ0
ô 0
Ð,ð	(ð 	(ð 	(ð 	(ð	)ð 	)ð 	)ð 	)ð	<ð 	<ð 	<ð 	<ð 	<ð 	<ð=	Oð =	Oð =	Oð =	Oð =	Oð =	Oð =	Oð =	Oð =	Oð =	Oð =	Oð =	Oð =	Oð =	Oð~ ð 	ð 	ˆCØˆM˜#ÑÔÐÐõ
 +¨4Ñ0Ô0ð 	0°]Ð5Jà%)Ð"Ý!œL¨Ñ/Ô/ˆMàÐ Ý Ð!KÀTÐ!KÐ!KÑLÔLÐLàÐ4Ð4Ð4r_   r5   )Úcoeffr8  úint | torch.SymIntútorch.SymIntc               óê   — | j         € | j                             d ¬¦  «        | _         t          | j         t          j        ¦  «        s$t          dt          | j         ¦  «        › �¦  «        ‚| j         |z  S )N©Únt_tensor_idz1Expected nested_int_memo to be torch.SymInt, got )rí  r±   Úcreate_symbolic_nested_intrÓ   rl   r   r×   rÕ   )rx   r8  s     r`   Úget_nested_intzFakeTensor.get_nested_int»  s�   € ð
 ÔÐ'Ø#'¤>×#LÒ#LØ!ð $Mñ $ô $ˆDÔ õ ˜$Ô.µ´Ñ=Ô=ð 	Ý Ø`ÅDÈÔI]ÑD^ÔD^Ð`Ð`ñô ð ð Ô# eÑ+Ð+r_   r   c                óº   — |                       ¦   «         dk    r|                      ¦   «         S |                       ¦   «         dk    rd„ | D ¦   «         S d„ | D ¦   «         S )Nr   r5   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r^   )re  ©r¿   rØ   s     r`   r  z%FakeTensor.tolist.<locals>.<listcomp>Ï  s    € Ð1Ð1Ð1 D�D—I’I‘K”KÐ1Ð1Ð1r_   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r^   )ÚtolistrB  s     r`   r  z%FakeTensor.tolist.<locals>.<listcomp>Ñ  s    € Ð3Ð3Ð3 d�D—K’K‘M”MÐ3Ð3Ð3r_   )r_  re  rw   s    r`   rD  zFakeTensor.tolistË  sZ   € Ø�8Š8‰:Œ:˜Š?ˆ?Ø—9’9‘;”;ÐØ�XŠX‰ZŒZ˜1Š_ˆ_Ø1Ð1¨DÐ1Ñ1Ô1Ð1à3Ð3¨dÐ3Ñ3Ô3Ð3r_   )rd   r†   )rÊ   r†   rd   rr   ©r‡   r†   rd   rr   )r‡   r†   rd   r†   )NNNNNNN)rÙ  rÚ  rØ   rÅ  r‡   rÛ  r  rÅ  rÆ  rÅ  rv  rÊ  rx  ry  r±   rç   rÍ  rÛ  rÄ  rÛ  rZ  r›   rØ  re   rÜ  rÝ  rd   r   )r÷  rH   rø  rH   rd   rr   )ræ   r   r±   r²   rd   rÔ   ©
r„   r@   r  r  r÷  r  rø  r  rd   rH   )r„   r@   r  r  rd   r  )r8  r9  rd   r:  )rd   r   )!rZ   r[   r\   Ú__doc__r]   r¡  rÇ  rm  rÈ  rÉ  rí  rl   rm   r¬   r­   Ú	_mode_keyr}  r‡   ÚsetterrÍ  ÚstaticmethodrÒ  rö  ry   r  Úclassmethodr3   r#   r  r7  r?  rD  rŒ   r�   s   @r`   rÔ   rÔ   ÿ  sò  ø€ € € € € € ðð ð ÐÐÑØÐÐÑØÐÐÑØÐÐÑð
 :QÐ9PÑ9RÔ9R€LÐRÐRÐRÑRØ'Ð'Ñ)Ô)€IØ8OÐ8OÑ8QÔ8Q€KÐQÐQÐQÑQàÐÑ!Ô!ð ð ð ð ñ ð .Ð-¸DÐAÑAÔA€Oð
  ÐÐÑØ.Ð.Ð.Ñ.ð ”Ô.Ô3€Iàð$ð $ð $ñ „Xð$ð „]ð"ð "ð "ñ „]ð"ð ð!ð !ð !ñ „Xð!ð Ôð@ð @ð @ñ Ôð@ð$ ðð ð ñ „\ðð ð =AØ"Ø,0Ø"&Ø%)Ø&*Ø59ð}ð ,0Ø15Ø26Ø%)Øð}ð }ð }ð }ð }ñ „\ð}ðbLð Lð Lð Lð Lð Lð ð(ð (ð (ñ „\ð(ð Ø
ð
 "$Ø'5 ~Ñ'7Ô'7ðL)ð L)ð L)ð L)ñ „Uñ „[ðL)ð\ ðr5ð r5ð r5ñ „\ðr5ðn %&ð,ð ,ð ,ð ,ð ,ð ,ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4r_   rÔ   r7   r8   T)Úslotsc                  óÆ   — e Zd ZU dZded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d'd%„Zd&S )(ÚTensorMetadatazK
    The Tensor metadata relevant to hashing FakeTensors when caching.
    ztorch.dtyper]  ztuple[_MetadataIntLike, ...]ÚshapeÚstrider†   r‡   ztorch.layoutr	  ztorch.memory_format | NoneÚmemory_formatÚ_MetadataIntLikeÚstorage_offsetz_MetadataIntLike | NoneÚstorage_bytesre   rZ  rS  Úis_conjÚis_negrÁ  r  r›   Úis_coalescedú
int | NoneÚ	dense_dimÚ
sparse_dimÚresultúlist[object]rë   r²   rÜ  r6   rd   rr   c                óŒ  — t          j        | ¦  «        D ]®}t          | |j        ¦  «        }t	          |t
          t          t          j        f¦  «        r/g }| 	                    ||||¦  «         | 
                    ¦   «          Œmt	          |t          ¦  «        r|                     ||¦  «         Œ™|                     |¦  «         Œ¯d S rŸ   )ÚdataclassesÚfieldsr¾   r•  rÓ   Útupler(  rl   ÚSizeÚ_prep_args_for_hashÚclearr   Úconvert_sym_intrÄ   )rx   r[  rë   rÜ  Úfieldrr  Úid_hashed_objectss          r`   Ú_flatten_intozTensorMetadata._flatten_intoï  sÌ   € õ !Ô'¨Ñ-Ô-ð 	%ð 	%ˆEÝ˜D %¤*Ñ-Ô-ˆEÝ˜%¥%­­u¬zÐ!:Ñ;Ô;ð 	%ð 35Ð!Ø×(Ò(¨°¸Ð?PÑQÔQÐQØ!×'Ò'Ñ)Ô)Ð)Ð)Ý˜E¥6Ñ*Ô*ð %Ø×%Ò% f¨eÑ4Ô4Ð4Ð4à—’˜eÑ$Ô$Ð$Ð$ð	%ð 	%r_   N)r[  r\  rë   r²   rÜ  r6   rd   rr   )rZ   r[   r\   rG  r]   rg  r^   r_   r`   rN  rN  ×  sù   € € € € € € ðð ð ÐÐÑØ'Ð'Ð'Ñ'Ø(Ð(Ð(Ñ(ØÐÐÑØÐÐÑØ-Ð-Ð-Ñ-Ø$Ð$Ð$Ñ$Ø*Ð*Ð*Ñ*ØÐÐÑØÐÐÑØ€M€M�MØ€L€L�LØÐÐÑØ€O€O�OØÐÐÑØÐÐÑØÐÐÑð%ð %ð %ð %ð %ð %r_   rN  r   c                ó  — t          | ¦  «        }| j        s%t          | ¦  «        s|                      |¬¦  «        sd}|                      ¦   «         }t          | j        | j        | j        t          j
        k    r|                      ¦   «         nd| j        | j        ||t          | ¦  «        s&|                      ¦   «                              ¦   «         nd| j        | j        |                      ¦   «         |                      ¦   «         |                      ¦   «         | j        | j        r|                      ¦   «         ndt          | ¦  «        r|                      ¦   «         ndt          | ¦  «        r|                      ¦   «         nd¦  «        S )z1
    Extract the TensorMetadata of a tensor.
    )rQ  Nr^   )r   Ú_has_symbolic_sizes_stridesr   Úis_contiguousrS  rN  r]  rO  r	  rl   r
  rP  r‡   Úuntyped_storageÚnbytesrZ  rS  rU  rV  rÁ  r  rW  rY  rZ  )ræ   rQ  rS  s      r`   Úextract_tensor_metadatarm    sW  € õ *¨!Ñ,Ô,€Mð 	
Ô%ðå˜ÑÔðð �Š¨]ˆÑ;Ô;ðð
 ˆà×%Ò%Ñ'Ô'€NåØ	ŒØ	ŒØ”h¥%¤-Ò/Ð/ˆ�Š‰
Œ
ˆ
°RØ	ŒØ	ŒØØå,9¸!Ñ,<Ô,<ÐFˆ×ÒÑÔ×"Ò"Ñ$Ô$Ð$À$Ø	ŒØ	ŒØ	�	Š	‰ŒØ	�Š‰
Œ
Ø	�ŠÑÔØ	ŒØœKÐ1ˆ�ŠÑÔÐ¨TÝ& qÑ)Ô)Ð3ˆ�Š‰Œˆ¨tÝ'¨Ñ*Ô*Ð4ˆ�Š‰Œˆ°ñ%ô ð r_   c                  óH   — e Zd ZU dZded<   ded<   dd	„Zdd„Zdd„Zdd„ZdS )Ú_DispatchCacheKeyz0
    Key for the FakeTensor dispatch cache.
    útuple[object, ...]rÀ   ÚintÚ	hashvalueÚtuprd   rr   c                ó<   — || _         t          |¦  «        | _        d S rŸ   )rÀ   Úhashrr  )rx   rs  s     r`   ry   z_DispatchCacheKey.__init__4  s   € ØˆŒÝ˜c™œˆŒˆˆr_   ÚotherrH   re   c                óL   — t          |t          ¦  «        o| j        |j        k    S rŸ   )rÓ   ro  rÀ   )rx   rv  s     r`   Ú__eq__z_DispatchCacheKey.__eq__8  s!   € Ý˜%Õ!2Ñ3Ô3ÐM¸¼ÀEÄIÒ8MÐMr_   c                ó   — | j         S rŸ   )rr  rw   s    r`   Ú__hash__z_DispatchCacheKey.__hash__;  s
   € ØŒ~Ðr_   c                ól   — | j         D ]+}t          |t          ¦  «        r|                     ¦   «          Œ,d S rŸ   )rÀ   rÓ   r7   Ústrip_shape_env)rx   rá   s     r`   r|  z!_DispatchCacheKey.strip_shape_env>  sD   € ð ”ð 	$ð 	$ˆAÝ˜!�_Ñ-Ô-ð $Ø×!Ò!Ñ#Ô#Ð#øð	$ð 	$r_   N)rs  rp  rd   rr   )rv  rH   rd   re   )rd   rq  r}   )	rZ   r[   r\   rG  r]   ry   rx  rz  r|  r^   r_   r`   ro  ro  +  s‹   € € € € € € ðð ð ÐÐÑØ€N€N�Nð#ð #ð #ð #ðNð Nð Nð Nðð ð ð ð$ð $ð $ð $ð $ð $r_   ro  c                  ó   — e Zd ZdS )ÚSingletonConstantN)rZ   r[   r\   r^   r_   r`   r~  r~  H  s   € € € € € Ø€Dr_   r~  )ÚfrozenrL  c                  ó@   — e Zd ZU dZded<   ded<   ded<   eZded<   d	S )
Ú_DispatchCacheEntryOutputInfoa½  
    Entry type for the FakeTensor dispatch cache for an output. Accounts for three
    possibilities:
    1) The op is inplace, and a hit means we need to alias the argument at a
       given index.
    2) We need to synthesize a new FakeTensor given tensor metadata. For view
       ops, we further capture the index of the arg to alias.
    3) if the tensor related fields are None, then it is a constant value (e.g.
    None or integer)
    rX  Úinplace_idxzTensorMetadata | NoneÚmetadataÚview_idxz
Any | NoneÚconstant_valueN)rZ   r[   r\   rG  r]   r~  r…  r^   r_   r`   r�  r�  L  sS   € € € € € € ð	ð 	ð ÐÐÑØ#Ð#Ð#Ñ#ØÐÐÑØ!2€NÐ2Ð2Ð2Ñ2Ð2Ð2r_   r�  c                  ó,   — e Zd ZU dZded<   dZded<   dS )Ú_DispatchCacheValidEntryzÁ
    Entry type for the FakeTensor dispatch cache. It supports two types of outputs
    1) tensor
    2) tuple of tensors

    is_output_tuple flag helps in differentiating the return type
    z$tuple[_DispatchCacheEntryOutputInfo]Úoutput_infosFre   Úis_output_tupleN)rZ   r[   r\   rG  r]   r‰  r^   r_   r`   r‡  r‡  _  s;   € € € € € € ðð ð 7Ð6Ð6Ñ6Ø!€OÐ!Ð!Ð!Ñ!Ð!Ð!r_   r‡  c                  ó   — e Zd ZU dZded<   dS )Ú_DispatchCacheBypassEntryz0
    Entry type for a negative cache entry.
    rc   r€   N©rZ   r[   r\   rG  r]   r^   r_   r`   r‹  r‹  m  ó%   € € € € € € ðð ð €K€K�K€K€Kr_   r‹  c                  ó   — e Zd ZU dZded<   dS )Ú_BypassDispatchCachez<
    Signals cases that should skip FakeTensor caching.
    rc   r€   NrŒ  r^   r_   r`   r�  r�  z  r�  r_   r�  c                  ó<   — e Zd ZU dZded<   ded<   ded<   ded<   dS )	ÚDispatchCacheInfozG
    Information about the state of the FakeTensor dispatch cache.
    rq  ÚhitsÚmissesúdict[str, int]ÚbypassesÚsizeNrŒ  r^   r_   r`   r‘  r‘  ƒ  sC   € € € € € € ðð ð €I€I�IØ€K€K�KØÐÐÑØ€I€I�I€I€Ir_   r‘  c                  ó@  ‡ — e Zd ZU i Zded<   dZded<   dZded<    ee¦  «        Z	ded<   dZ
ded	<   d
Zded<   ded<   ded<   ded<   ded<   dZded<   dZded<   dd
ddd
dœdŽˆ fd„Zd�d „Zd�d$„Zed‘d%„¦   «         Zed’d'„¦   «         Zed( e¦   «         fd“d1„¦   «         Zd”ˆ fd3„Zd•ˆ fd:„Zed‘d;„¦   «         Zed–d=„¦   «         Zed�d>„¦   «         Zd“d?„Zd—dC„Zd˜dD„Zd™dI„Z dšdM„Z!d›dP„Z"dœdR„Z#d�dT„Z$dždV„Z%dŸdW„Z&d( e¦   «         fd“dX„Z'd d^„Z(d¡dd„Z)d¢de„Z* e+dfdgdhdidjdkdldm¦  «        Z,d£dn„Z-d¤du„Z.d¥dz„Z/dd{œd¦d„Z0 e+e1j2        j3        e1j4        j5        e1j6        j5        e1j7        j5        e1j8        j5        e1j9        j5        e1j:        j5        e1j;        j5        e1j<        j5        e1j=        j>        e1j?        j5        ¦  «        Z@ e+e1jA        j5        e1jB        j5        e1jC        jD        ¦  «        ZEd£d€„ZF e+e1jG        j5        e1jH        j5        ¦  «        ZId§d‚„ZJd¨d…„ZKddddd†œd©d�„ZLˆ xZMS )ªr²   ú,dict[_DispatchCacheKey, _DispatchCacheEntry]Úcacher   rq  Ú
cache_hitsÚcache_missesr”  Úcache_bypassesr»  Fre   r‰  Ústatic_shapesr;  r:  z
str | NoneÚ_stackrì  r’  Únt_tensor_id_counterÚnt_tensor_id_initial_countTN)Úallow_fallback_kernelsÚallow_non_fake_inputsr:  r�  r  r¡  r¢  r›   r  rd   rr   c               ó  •— t                                dt          | ¦  «        ¦  «         t          ¦   «                              ¦   «          || _        dd l}dd l}|j        j	        j
        | _        t          | j        |¬¦  «        | _        |�|| _        n	|d u | _        d| _        |j        j	        j        | _        |j        j	        j        | _        |j        j	        j        o| j         | _        |j        j	        j        | _        || _        d| _        g | _        || _        t;          j        ¦   «         | _        d | _         |j!        j"        j#        | _$        dd l%}|j&        j'        j(        j)        | _*        | j*        | _+        d S )Nzcreate_mode 0x%xr   r  F),ÚlogrŸ  ÚidrŠ   ry   r¡  Útorch._dynamo.configÚtorch._functorch.configrÛ   rý  Ú"fake_tensor_propagate_real_tensorsÚpropagate_real_tensorsr  Úfake_tensor_converterr�  Úallow_scalar_outputsÚ(fake_tensor_allow_unsafe_data_ptr_accessré  Úfake_tensor_allow_metarì  Ú_dynamoÚfake_tensor_cache_enabledrµ   Ú$fake_tensor_cache_crosscheck_enabledÚcache_crosscheck_enabledr¢  r‰  Úenter_stackr:  Ú	tracebackÚextract_stackÚ_stack_tracerž  rm   r¬   r­   rH  Ú$torch.nested._internal.nested_tensorÚnestedÚ	_internalÚnested_tensorÚ_tensor_id_counterr   rŸ  )rx   r¡  r¢  r:  r�  r  rl   r‹   s          €r`   ry   zFakeTensorMode.__init__°  s�  ø€ õ$ 	�	Š	Ð$¥b¨¡h¤hÑ/Ô/Ð/Ý‰Œ×ÒÑÔÐØ&<ˆÔ#à#Ð#Ð#Ð#Ø&Ð&Ð&Ð&ð ÔÔ#ÔFð 	Ô#õ &9ØÔ1Øð&
ñ &
ô &
ˆÔ"ð
 Ð$Ø!.ˆDÔÐà!*¨dÐ!2ˆDÔð %*ˆÔ!ð ÔÔ#ÔLð 	Ô*ð  Ô*Ô1ÔHˆŒàŒMÔ Ô:ð 0ØÔ/Ð/ð 	Ôð
 ŒMÔ ÔEð 	Ô%ð &;ˆÔ"ð %*ˆÔ!ð VXˆÔà"ˆŒå%Ô3Ñ5Ô5ˆÔØˆŒð œÔ7Ô<ˆŒà3Ð3Ð3Ð3ð ŒLÔ"Ô0ÔCð 	Ô'ð %)Ô$CˆÔ!Ð!Ð!r_   c                ó   — | j         | _        d S rŸ   )r   rŸ  rw   s    r`   Úreset_nt_tensor_id_counterz)FakeTensorMode.reset_nt_tensor_id_counter  s   € Ø$(Ô$CˆÔ!Ð!Ð!r_   ræ   rH   úTypeGuard[FakeTensor]c                ó>   — t          |t          ¦  «        o|j        | u S rŸ   )rÓ   rÔ   r±   ©rx   ræ   s     r`   Úis_our_fakezFakeTensorMode.is_our_fake  s   € Ý˜!�ZÑ(Ô(Ð@¨Q¬[¸DÐ-@Ð@r_   c                ó–  — t           j                             ¦   «         rLt           j                             ¦   «         rt	          d¦  «        ‚t           j                             ¦   «          S t           j                             ¦   «         p@t          t           d¦  «        ot           j                             ¦   «         pt          ¦   «          S )Nz&Cannot have both xpu and cuda compiledrh   )	rl   ri   Ú_is_compiledrg   r×   Úis_availableÚhasattrrh   r!   rw   s    r`   Úavoid_device_initz FakeTensorMode.avoid_device_init$  s¥   € åŒ9×!Ò!Ñ#Ô#ð 	0ÝŒz×&Ò&Ñ(Ô(ð OÝ$Ð%MÑNÔNÐNÝ”y×-Ò-Ñ/Ô/Ð/Ð/õ ŒJ×#Ò#Ñ%Ô%ð 3Ý�˜uÑ%Ô%ÐB­%¬)×*@Ò*@Ñ*BÔ*Bð3å0Ñ2Ô2ð
ð 	
r_   rc   c                ó€   — | j         €1d                     t          j        | j        ¦  «        ¦  «        | _         | j         S )NÚ )rž  Újoinr³  Úformat_listrµ  rw   s    r`   ÚstackzFakeTensorMode.stack1  s3   € àŒ;ÐØŸ'š'¥)Ô"7¸Ô8IÑ"JÔ"JÑKÔKˆDŒKØŒ{Ðr_   r^   r„   r@   r  r  r÷  r  rø  r  c                ó  — t           j                             t           j        j        j        ¦  «        �t          d|› �¦  «        ‚	 |                      ||||¦  «        S # t          $ r t           	                    d¦  «         ‚ w xY w)Nz2FakeTensorMode should not be set when dispatching zfake tensor raised TypeError)
rl   rm   r  r¬   r­   r×   Údispatchræ  r¤  Ú	exception)rx   r„   r  r÷  rø  s        r`   r  z!FakeTensorMode.__torch_dispatch__7  s�   € õ Œ8×&Ò&¥u¤xÔ'EÔ'JÑKÔKÐWÝ ØKÀTÐKÐKñô ð ð	Ø—=’=  u¨d°FÑ;Ô;Ð;øÝð 	ð 	ð 	Ý�MŠMÐ8Ñ9Ô9Ð9Øð	øøøs   ÁA Á&Br   c                óè  •— dd l }d }| j        rL|j                             ¦   «         }|j                             d¦  «         |j                             ¦   «          |j                             | j        ¦  «        }| |ur=| j         	                    d||f¦  «         t          ¦   «                              ¦   «         S |j                             | ¦  «         | j         	                    dd |f¦  «         | S )Nr   TF)r¶  rÅ  rm   Ú_only_lift_cpu_tensorsÚ_set_only_lift_cpu_tensorsÚ_ensureCUDADeviceGuardSetr«   rH  r²  rÄ   rŠ   Ú	__enter__r®   )rx   rl   Úprev_only_lift_cpu_tensorsÚmaybe_prev_fake_moder‹   s       €r`   rÒ  zFakeTensorMode.__enter__L  sÿ   ø€ Ø3Ð3Ð3Ð3à%)Ð"ØÔ!ð 	1à).¬×)HÒ)HÑ)JÔ)JÐ&ØŒH×/Ò/°Ñ5Ô5Ð5ð
 ŒH×.Ò.Ñ0Ô0Ð0à$œx×<Ò<¸T¼^ÑLÔLÐØÐ+Ð+Ð+ØÔ×#Ò#ØÐ+Ð-GÐHñô ð õ ‘7”7×$Ò$Ñ&Ô&Ð&ð ŒH×'Ò'¨Ñ-Ô-Ð-ØÔ×#Ò# U¨DÐ2LÐ$MÑNÔNÐNàˆr_   Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | Nonec                ó  •— | j                              ¦   «         \  }}}|rgt          ¦   «                              |||¦  «         |�t          j                             |¦  «         |�#t          j                             |¦  «         d S d S d S rŸ   )r²  rÃ   rŠ   Ú__exit__rl   rm   r®   rÐ  )rx   rÕ  r×  rÙ  ÚliverÔ  Ú maybe_prev_only_lift_cpu_tensorsr‹   s          €r`   rÜ  zFakeTensorMode.__exit__g  s¢   ø€ ð Ô× Ò Ñ"Ô"ñ 	GˆÐ#Ð%Eð ð 	VÝ‰GŒG×Ò˜X w°Ñ7Ô7Ð7ð $Ð/Ý”×+Ò+Ð,@ÑAÔAÐAØ/Ð;Ý”×3Ò3Ð4TÑUÔUÐUÐUÐUð	Vð 	Vð <Ð;r_   c                ó   — dS r¥   r^   ©rï  s    r`   Úis_infra_modezFakeTensorMode.is_infra_modey  s   € àˆtr_   r‘  c                óª   — t          t          j        t          j        t	          t          j        ¦  «        t          t          j        ¦  «        ¦  «        S )z8
        Query the state of the dispatch cache.
        )r‘  r²   rš  r›  r¦   rœ  r  r™  rà  s    r`   Ú
cache_infozFakeTensorMode.cache_info}  s>   € õ
 !ÝÔ%ÝÔ'Ý•Ô.Ñ/Ô/Ý•Ô$Ñ%Ô%ñ	
ô 
ð 	
r_   c                ó†   — d| _         d| _        | j                             ¦   «          | j                             ¦   «          dS )z+
        Clear the dispatch cache.
        r   N)rš  r›  rœ  rc  r™  rà  s    r`   Úcache_clearzFakeTensorMode.cache_clear‰  s@   € ð
 ˆŒØˆÔØÔ× Ò Ñ"Ô"Ð"ØŒ	�ŠÑÔÐÐÐr_   c                óV  — d}d}	 t          | j        ¦  «        }|                      ||||¦  «        }n”# t          $ r‡}t	          |t
          j        j        ¦  «        r?|                     ¦   «         dk    r't           
                    d|d         |j        ¦  «         t          j        |j        xx         dz  cc<   Y d}~nd}~ww xY w|€|                      ||||¦  «        S |€t          d¦  «        ‚|                     ¦   «         r*|j        €t          d¦  «        ‚|j        j        }t$          }	nt          j        }t(          }	|                     |d¦  «        }
|
�Ãt	          |
t,          ¦  «        r7t          j        |
j        xx         dz  cc<   |                      ||||¦  «        S |                      ||
|||¦  «        }t          xj        dz  c_        | j        r@t5          | ¦  «        5  |                      |||||¦  «         ddd¦  «         n# 1 swxY w Y   |S |                      ||||¦  «        }	 |                      ||||||¦  «        }
nµ# t          $ r¨}t	          |t
          j        j        ¦  «        r?|                     ¦   «         dk    r't           
                    d|d         |j        ¦  «         t          j        |j        xx         dz  cc<    |	||t-          |j        ¦  «        ¦  «         |cY d}~S d}~ww xY w |	|||
¦  «         t          xj        dz  c_        |S )zž
        Lookup a cache entry for the given arguments. If none exists, dispatch
        and cache the result (if the result is eligible for caching).
        NÚinvoke_subgraphz6Fake tensor cache failed: identifier = %s, reason = %sr5   z1state must not be None after cache key generationz:state.shape_env must not be None when caching on shape_env)r6   r:  Ú
_cache_keyr�  rÓ   rl   Ú_opsÚHigherOrderOperatorr•  Úhc_logrŸ  r€   r²   rœ  Ú_dispatch_implr×   Úcache_on_shape_envÚfake_tensor_cacheÚ_set_cache_key_for_shape_envr™  Ú_set_cache_keyr0  r‹  Ú_output_from_cache_entryrš  r±  r·   Ú_crosscheck_cache_outputÚ_make_cache_entryr›  )rx   r„   r  r÷  rø  rÜ  rÀ   Úer™  Úset_cache_keyÚentryÚoutputs               r`   Ú_cached_dispatch_implz$FakeTensorMode._cached_dispatch_impl“  sÔ  € ð ˆØˆð	9Ý" 4¤>Ñ2Ô2ˆEØ—/’/ %¨¨t°VÑ<Ô<ˆCˆCøÝ#ð 	9ð 	9ð 	9õ ˜4¥¤Ô!?Ñ@Ô@ðà—I’I‘K”KÐ#4Ò4Ð4å—’ØLØ˜”GØ”Hñô ð õ
 Ô)¨!¬(Ð3Ð3Ô3°qÑ8Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3øøøøð	9øøøð ˆ;ð
 ×&Ò& t¨U°D¸&ÑAÔAÐAàˆ=Ý Ð!TÑUÔUÐUØ×#Ò#Ñ%Ô%ð 		+ØŒÐ&Ý$ØPñô ð ð ”OÔ5ˆEÝ8ˆMˆMå"Ô(ˆEÝ*ˆMØ—	’	˜#˜tÑ$Ô$ˆàÐÝ˜%Õ!:Ñ;Ô;ð Fõ Ô-¨e¬lÐ;Ð;Ô;¸qÑ@Ð;Ð;Ñ;à×*Ò*¨4°¸¸fÑEÔEÐEð ×2Ò2°5¸%ÀÀdÈDÑQÔQˆFÝÐ%Ô%¨Ñ*Ð%Ô%ØÔ,ð Uõ /¨tÑ4Ô4ð Uð UØ×1Ò1°&¸$ÀÀtÈVÑTÔTÐTðUð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð UàˆMð ×$Ò$ T¨5°$¸Ñ?Ô?ˆð	Ø×*Ò*¨5°#°t¸TÀ6È6ÑRÔRˆEˆEøÝ#ð 	ð 	ð 	õ
 ˜4¥¤Ô!?Ñ@Ô@ðà—I’I‘K”KÐ#4Ò4Ð4å—’ØLØ˜”GØ”Hñô ð õ
 Ô)¨!¬(Ð3Ð3Ô3°qÑ8Ð3Ð3Ñ3ØˆM˜% Õ&?ÀÄÑ&IÔ&IÑJÔJÐJØˆMˆMˆMˆMˆMˆMøøøøð	øøøð" 	ˆ�e˜S %Ñ(Ô(Ð(ÝÐ#Ô# qÑ(Ð#Ô#ØˆsF   †,3 ³
C½A=B?Â?CÇ+HÈHÈHÈ7I É
LÉBK?Ë9LË?LrÜ  r6   ro  c                ó€  — t           j        j        j                             ¦   «         du}|t          j        ¦   «         t           j                             ¦   «         t          j        ¦   «         | j	        r| j	        j
        nd|g}|j        r|                     | j        ¦  «         g }|r|                      ||||¦  «         |r|                      ||||¦  «         t          t!          |¦  «        ¦  «        }|D ]0}	t#          j        |	t'          j        t*          |¬¦  «        ¦  «         Œ1|                     ¦   «          |S )z‹
        Create a cache key given the dispatch args. Raises _BypassDispatchCache
        for any situation that precludes caching.
        N©rÀ   )rl   ÚfxÚexperimentalÚproxy_tensorÚget_proxy_modeÚget_default_dtyperm   Ú_get_default_deviceÚis_inference_mode_enabledr:  ÚsettingsÚknown_symbolsrÄ   r»  rb  ro  r`  r    ÚfinalizeÚ	functoolsÚpartialÚevict_fake_tensor_cache_keyrc  )
rx   rÜ  r„   r÷  rø  Ú
is_tracingÚ
key_valuesrf  rÀ   Úid_hashed_objs
             r`   rè  zFakeTensorMode._cache_keyó  sX  € õ ”XÔ*Ô7×FÒFÑHÔHÐPTÐTˆ
àõ Ô#Ñ%Ô%õ ŒH×(Ò(Ñ*Ô*õ Ô+Ñ-Ô-ð (,¤~Ð?ˆDŒNÔ#Ð#¸4ð ð%
ˆ
ð( Ôð 	*ð ×Ò˜dœjÑ)Ô)Ð)à*,Ðàð 	Qà×$Ò$ Z°°uÐ>OÑPÔPÐPØð 	Sà×$Ò$ Z°¸Ð@QÑRÔRÐRÝ¥ jÑ 1Ô 1Ñ2Ô2ˆà.ð 	ð 	ˆMÝÔØ�yÔ0Õ1LÐRUÐVÑVÔVñô ð ð ð 	×ÒÑ!Ô!Ð!Øˆ
r_   c                ó&  — ddl m} t          |t          j        j        ¦  «        r||v rdS t          j        j        |j        v rt          d¦  «        ‚t          j        j
        |j        v r�|t          j        j        u rkt          |||d¬¦  «        \  }}|d         D ]J}t          |t          j        ¦  «        r.|j        t          j        t          j        fv rt          d¦  «        ‚ŒKdS t          d¦  «        ‚t          j        j        |j        v rt          d	¦  «        ‚|t          j        j        u rt          d
¦  «        ‚|| j        v rt          d¦  «        ‚|                     ¦   «         dk    rt          d¦  «        ‚t          j        j                             |¦  «        st          d¦  «        ‚|j        rUt          j                             |                     ¦   «         t          j        j        j        ¦  «        rt          d¦  «        ‚dS dS )za
        Validate that the cache key generated by _cache_key will be
        reasonable.
        r   ©Úregistered_hop_fake_fnsNzdata dependent outputT©r÷  rø  Únormalize_to_only_use_kwargsÚindiceszdynamic output shapezinplace viewzunsafe viewÚliftzinductor::resize_storage_bytes_znon-builtinÚCompositeImplicitAutograd)Útorch._higher_order_ops.utilsr  rÓ   rl   ré  rê  ÚTagÚdata_dependent_outputÚtagsr�  Údynamic_output_shaper2  rÕ  r   r$   r]  re   rc  Úinplace_viewÚ_unsafe_viewr  Úlift_fnsr•  Ú_libraryÚutilsÚ
is_builtinÚis_viewrm   Ú%_dispatch_has_kernel_for_dispatch_keyÚDispatchKeyr  )rx   r„   r÷  rø  r  rÊ   Ú
new_kwargsrÕ  s           r`   Ú_validate_cache_keyz"FakeTensorMode._validate_cache_key*  s(  € ð 	JÐIÐIÐIÐIÐIõ
 �t�UœZÔ;Ñ<Ô<ð	àÐ/Ð/Ð/àˆFõ
 Œ9Ô*¨d¬iÐ7Ð7Ý&Ð'>Ñ?Ô?Ð?åŒ9Ô)¨T¬YÐ6Ð6Ø•t”zÔ(Ð(Ð(Ý 2ØØØ!Ø15ð	!ñ !ô !‘��:ð (¨	Ô2ð Kð K�Eõ " %­¬Ñ6Ô6ð K¸5¼;Ýœ
Ýœ
ðKð <ð <õ 3Ð3IÑJÔJÐJøØ�å&Ð'=Ñ>Ô>Ð>åŒ9Ô! T¤YÐ.Ð.Ý& ~Ñ6Ô6Ð6à•4Ô$Ô,Ð,Ð,Ý& }Ñ5Ô5Ð5à�4”=Ð Ð Ý& vÑ.Ô.Ð.à�9Š9‰;Œ;Ð;Ò;Ð;Ý&Ð'HÑIÔIÐIåŒ~Ô#×.Ò.¨tÑ4Ô4ð 	6Ý& }Ñ5Ô5Ð5ð
 Œ<ð 	D�EœH×JÒJØ�IŠI‰KŒK�œÔ-ÔGñ
ô 
ð 	Dõ 'Ð'BÑCÔCÐCð	Dð 	Dð 	Dð 	Dr_   r[  r\  ú:Mapping[str, object] | Sequence[object] | Iterable[object]rf  c                óª  — ddl m} ddlm} t	          |t
          t          t          f¦  «        rG|                     t          |¦  «        ¦  «         |                     dt          |¦  «        › �¦  «         t	          |t          ¦  «        rV|                      ||                     ¦   «         ||¦  «         |                      ||                     ¦   «         ||¦  «         dS |D �]î}t	          |t          ¦  «        r‡|                      |¦  «        st!          d¦  «        ‚|j        �t!          d¦  «        ‚t%          |¦  «        rt!          |j        › d�¦  «        ‚t)          |¦  «        }|                     || |¦  «         ŒŸt	          |t,          ¦  «        rt!          d	¦  «        ‚t	          |t.          ¦  «        r|                     ||¦  «         Œït	          |t2          t4          f¦  «        rt!          d
¦  «        ‚t	          |t
          t          t          f¦  «        r|                      ||||¦  «         �ŒVt	          |t6          j        ¦  «        rt!          d¦  «        ‚t	          |t:          j        j        ¦  «        r[|                     t          |¦  «        ¦  «         |                     tA          |¦  «        ¦  «         |                     |¦  «         �Œùt	          ||¦  «        r>|                     tC          |¦  «        ¦  «         |                     |j"        ¦  «         �ŒGt	          ||¦  «        r`|                     t          |¦  «        ¦  «         |                     tC          |¦  «        ¦  «         |                     |j#        ¦  «         �Œ·|                     t          |¦  «        ¦  «         |                     |¦  «         �ŒðdS )a7  
        Translate the provided args into a form suitable for caching at FakeTensor
        dispatch, i.e., convert unhashable types like lists & dicts into tuples and
        convert FakeTensors into metadata. Raises _BypassDispatchCache to signal
        unsupported cases that should bypass caching.
        r   )ÚFunctionalCallableWithEpilogue)ÚSubgraphCallableWrapperÚlength_Nznot our fakeúconstant attributez tensorznon-fake tensorzsymbolic shapezfunction argument)$Ú*torch._higher_order_ops.auto_functionalizer%  r  r&  rÓ   r(  r`  r¦   rÄ   rÕ   r  rb  ÚkeysÚvaluesrÔ   rÀ  r�  r  r   r	  rm  rg  r   r   rd  r   r   r  ÚFunctionTyperl   rû  ÚGraphModuler¥  ru  ÚsubgraphÚorig_callable)	rx   r[  r÷  rÜ  rf  r%  r&  r  rƒ  s	            r`   rb  z"FakeTensorMode._prep_args_for_hashp  sš  € ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	JÐIÐIÐIÐIÐIå�d�T¥5­$Ð/Ñ0Ô0ð 	1Ø�MŠM�$˜t™*œ*Ñ%Ô%Ð%Ø�MŠMÐ/¥C¨¡I¤IÐ/Ð/Ñ0Ô0Ð0å�d�DÑ!Ô!ð 	Ø×$Ò$ V¨T¯YªY©[¬[¸%ÐARÑSÔSÐSØ×$Ò$ V¨T¯[ª[©]¬]¸EÐCTÑUÔUÐUØˆFàð &	#ñ &	#ˆCÝ˜#�zÑ*Ô*ð %#Ø×'Ò'¨Ñ,Ô,ð ?Ý.¨~Ñ>Ô>Ð>Ø”<Ð+Ý.Ð/CÑDÔDÐDÝ  Ñ%Ô%ð GÝ.°#´*Ð/EÐ/EÐ/EÑFÔFÐFÝ2°3Ñ7Ô7�Ø×&Ò& v¨t°UÑ;Ô;Ð;Ð;Ý˜C¥Ñ(Ô(ð #Ý*Ð+<Ñ=Ô=Ð=Ý˜C¥Ñ(Ô(ð #Ø×%Ò% f¨cÑ2Ô2Ð2Ð2Ý˜C¥'­8Ð!4Ñ5Ô5ð #Ý*Ð+;Ñ<Ô<Ð<Ý˜C¥$­­tÐ!4Ñ5Ô5ð #Ø×(Ò(¨°°eÐ=NÑOÔOÐOÑOÝ˜C¥Ô!3Ñ4Ô4ð #Ý*Ð+>Ñ?Ô?Ð?Ý˜C¥¤Ô!5Ñ6Ô6ð #ð —’�d 3™iœiÑ(Ô(Ð(Ø—’�b ™gœgÑ&Ô&Ð&Ø!×(Ò(¨Ñ-Ô-Ð-Ñ-Ý˜CÐ!8Ñ9Ô9ð #Ø—’�d 3™iœiÑ(Ô(Ð(Ø!×(Ò(¨¬Ñ6Ô6Ð6Ñ6Ý˜CÐ!?Ñ@Ô@ð 	#Ø—’�d 3™iœiÑ(Ô(Ð(Ø—’�d 3™iœiÑ(Ô(Ð(Ø!×(Ò(¨Ô):Ñ;Ô;Ð;Ñ;ð
 —’�d 3™iœiÑ(Ô(Ð(Ø—’˜cÑ"Ô"Ð"Ñ"ðM&	#ð &	#r_   rÀ   r÷  r,  c                óÚ  — t          |t          t          d ¦  «        f¦  «        rd S t          ||¦  «         t          |t          ¦  «        st          d¦  «        ‚|j        �t          d¦  «        ‚|j        rt          d¦  «        ‚t          |¦  «        rt          d¦  «        ‚| 	                    ¦   «         D ]1}t          |¦  «        t          |¦  «        k    rt          d¦  «        ‚Œ2d S )Nznon-FakeTensor outputr(  zsparse outputzsparse compressed outputzkwarg aliases output)rÓ   rq  rÕ   Ú%_validate_symbolic_output_for_cachingrÔ   r�  r  r  r   r+  r¥  )rx   rÜ  rÀ   r„   r÷  rø  r÷  Úkvals           r`   Ú _validate_output_for_cache_entryz/FakeTensorMode._validate_output_for_cache_entry³  s  € õ �f�s¥D¨¡J¤JÐ/Ñ0Ô0ð 	ØˆFõ 	.¨e°VÑ<Ô<Ð<õ ˜&¥*Ñ-Ô-ð 	@Ý&Ð'>Ñ?Ô?Ð?ð Œ?Ð&Ý&Ð';Ñ<Ô<Ð<ð Ôð 	8Ý& Ñ7Ô7Ð7å Ñ'Ô'ð 	CÝ&Ð'AÑBÔBÐBð —M’M‘O”Oð 	Cð 	CˆDÝ�$‰xŒx�2˜f™:œ:Ò%Ð%Ý*Ð+AÑBÔBÐBð &ð	Cð 	Cr_   rÔ   r�  c                óÖ  ‡— t          |t          t          j        t	          d ¦  «        f¦  «        rt          d d d |¬¦  «        S t          t          |¦  «        ¦  «        D ]<}t          ||         ¦  «        t          |¦  «        k    rt          |d d ¬¦  «        c S Œ=d }t          |t          j	        j
        ¦  «        rZ|j        rSd„ t          |¦  «        D ¦   «         }	t          |	¦  «        dk    rt          dt          |	¦  «        › �¦  «        ‚|	d         }t          |¦  «        }
t          ˆfd„|
j        D ¦   «         ¦  «        |
_        t          ˆfd„|
j        D ¦   «         ¦  «        |
_        ‰                     |
j        ¦  «        |
_        |
j        €d n‰                     |
j        ¦  «        |
_        t          d |
|¬¦  «        }t+          |fd	¬
¦  «        }ddlm} 	 |                      ‰||||¦  «        }n# |$ r t3          d¦  «        d ‚w xY wt          j                             |¦  «        }t          j                             |¦  «        }||k    rt3          d¦  «        ‚|S )N©r‚  rƒ  r„  r…  )r‚  rƒ  r„  c                óB   — g | ]\  }}t          |t          ¦  «        ¯|‘ŒS r^   ©rÓ   r   )r¿   Úiræ   s      r`   r  zCFakeTensorMode._get_output_info_for_cache_entry.<locals>.<listcomp>õ  s+   € ÐKÐKÐK™$˜!˜QµZÀÅ6Ñ5JÔ5JÐK�AÐKÐKÐKr_   r5   z1Expected exactly one tensor arg for view op, got r   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rŸ   ©Úconvert_output©r¿   rá   rÜ  s     €r`   rÂ   zBFakeTensorMode._get_output_info_for_cache_entry.<locals>.<genexpr>ý  s1   øè è € ÐOÐO¸1˜u×3Ò3°AÑ6Ô6ÐOÐOÐOÐOÐOÐOr_   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rŸ   r:  r<  s     €r`   rÂ   zBFakeTensorMode._get_output_info_for_cache_entry.<locals>.<genexpr>þ  s1   øè è € ÐQÐQ¸A × 4Ò 4°QÑ 7Ô 7ÐQÐQÐQÐQÐQÐQr_   F©rˆ  r‰  )ÚGuardOnDataDependentSymNodezdata dependent symnodezdispatch_key_set mismatch)rÓ   rq  rl   r   rÕ   r�  Úranger  r¥  ré  r@   r  Ú	enumerater×   rm  r`  rO  rP  r;  rS  rT  r‡  rQ  r?  rñ  r�  rm   Ú_dispatch_key_set)rx   rÜ  rÀ   r„   r÷  rø  r÷  Úidxr„  Úidxsrƒ  rö  Úentry_for_synth_outputr?  Úsynth_outputÚsynth_key_setÚkey_sets    `               r`   Ú _get_output_info_for_cache_entryz/FakeTensorMode._get_output_info_for_cache_entryÝ  sÄ  ø€ õ �f�s¥E¤Lµ$°t±*´*Ð=Ñ>Ô>ð 	Ý0Ø ¨4¸$Èvðñ ô ð õ
 �˜T™œÑ#Ô#ð 	ð 	ˆCÝ�$�s”)‰}Œ}¥ 6¡
¤
Ò*Ð*Ý4Ø #¨d¸Tðñ ô ð ð ð ð +ð ˆÝ�d�EœJÔ1Ñ2Ô2ð 	°t´|ð 	ØKÐK¥)¨D¡/¤/ÐKÑKÔKˆDÝ�4‰yŒy˜AŠ~ˆ~Ý$ØSÍÈDÉ	Ì	ÐSÐSñô ð ð ˜A”wˆHå*¨6Ñ2Ô2ˆÝÐOÐOÐOÐOÀÄÐOÑOÔOÑOÔOˆŒÝÐQÐQÐQÐQÀÄÐQÑQÔQÑQÔQˆŒØ"'×"6Ò"6°xÔ7NÑ"OÔ"OˆÔð Ô%Ð-ð ˆDà×%Ò% hÔ&<Ñ=Ô=ð 	Ôõ .ØØØð
ñ 
ô 
ˆõ ":Ø˜°5ð"
ñ "
ô "
Ðð 	VÐUÐUÐUÐUÐUð		KØ×8Ò8ØÐ-¨s°D¸$ñô ˆLˆLøð +ð 	Kð 	Kð 	Kõ
 'Ð'?Ñ@Ô@ÀdÐJð	Køøøõ œ×2Ò2°<Ñ@Ô@ˆÝ”(×,Ò,¨VÑ4Ô4ˆØ˜GÒ#Ð#Ý&Ð'BÑCÔCÐCàˆs   Ç#G= Ç=Hr‡  c           	     ól  ‡ ‡‡‡‡‡‡— ddl m}m} ddlmŠ ‰                      ‰‰‰¦  «         t          ‰t          j        j	        ¦  «        rU‰|v rQt          |t          ¦  «        r|n|f}	t          ˆfd„|	D ¦   «         ¦  «        p‰|v }
|
rt          d‰› d‰› d�¦  «        ‚t          |t          t          j        t          d¦  «        f¦  «        r%t!          ddd|¬	¦  «        }t#          |fd
¬¦  «        S t          |t          ¦  «        r |D ]}‰                      ‰‰‰‰‰|¦  «         Œn‰                      ‰‰‰‰‰|¦  «         t          |t          ¦  «        r1ˆˆˆˆˆ ˆfd„|D ¦   «         }t#          t          |¦  «        d¬¦  «        S ‰                      ‰‰‰‰‰|¦  «        }t#          |fd
¬¦  «        S )z¸
        Make a cache entry object for the given 'output' Tensor. Raises
        _BypassDispatchCache if the output tensor has characteristics that
        prevent caching it.
        r   )Úhops_that_skip_faketensor_cacher  )Úhas_free_unbacked_symbolsc              3  óz   •K  — | ]5}t          |t          j        t          j        f¦  «        o
 ‰|¦  «        V — Œ6d S rŸ   )rÓ   rl   r   r   )r¿   ÚorL  s     €r`   rÂ   z3FakeTensorMode._make_cache_entry.<locals>.<genexpr>M  s_   øè è € ð ð ð õ ˜q¥5¤<µ´Ð">Ñ?Ô?ð 5Ø1Ð1°!Ñ4Ô4ðð ð ð ð ð r_   zunbacked symbol in HOP z output                     or z# in hops_that_skip_faketensor_cacheNr5  Fr>  c           
     óD   •— g | ]}‰                      ‰‰‰‰‰|¦  «        ‘ŒS r^   )rI  )r¿   Úout_elemr÷  r„   rÀ   rø  rx   rÜ  s     €€€€€€r`   r  z4FakeTensorMode._make_cache_entry.<locals>.<listcomp>w  sM   ø€ ð 
ð 
ð 
ð ð ×5Ò5ØØØØØØñô ð
ð 
ð 
r_   T)r  rK  r  rQ  rL  r"  rÓ   rl   ré  rê  r`  r$  r�  rq  r   rÕ   r�  r‡  r3  rI  )rx   rÜ  rÀ   r„   r÷  rø  r÷  rK  r  ÚoutsÚnon_cacheableÚoutput_infoÚout_elementrˆ  rL  s   ``````        @r`   ró  z FakeTensorMode._make_cache_entry*  sÖ  øøøøøøø€ ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	TÐSÐSÐSÐSÐSà× Ò   t¨VÑ4Ô4Ð4õ �t�UœZÔ;Ñ<Ô<ð	àÐ/Ð/Ð/å'¨µÑ6Ô6ÐE�6�6¸V¸IˆDåð ð ð ð ð "ðñ ô ñ ô ð ;ð
 Ð:Ð:ð ð ð Ý*ðB¨dð Bð BØðBð Bð Bñô ð õ
 �f�s¥E¤Lµ$°t±*´*Ð=Ñ>Ô>ð 	Ý7Ø ¨4¸$Èvðñ ô ˆKõ ,Ø)˜^¸Uðñ ô ð õ �f�eÑ$Ô$ð 	Ø%ð ð �Ø×5Ò5ØØØØØØñô ð ð ðð ×1Ò1ØØØØØØñô ð õ �f�eÑ$Ô$ð 	ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð !'ð
ñ 
ô 
ˆLõ ,å" <Ñ0Ô0Ø $ðñ ô ð ð ×?Ò?ØØØØØØñô ˆKõ ,Ø)˜^¸Uðñ ô ð r_   rö  c           
     óÊ  ‡‡‡— |j         €2|j        €+|j        €$|j        t          u rt          d¦  «        ‚|j        S |j         �3||j                  }t          |t          ¦  «        st          d¦  «        ‚|S |j        }|€d S t          |¦  «        rt          d¦  «        ‚dˆfd
„Št          ˆˆfd„|j
        D ¦   «         ¦  «        }t          ˆˆfd„|j        D ¦   «         ¦  «        }	 ‰|j        ‰¦  «        }
|j        � ‰|j        ‰¦  «         t          j        }| j        �| j        j        }t%          | ¦  «        5   |¦   «         5  t'          j        ||	|j        |j        d|j        ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |j        r t&          j                             |d¦  «         |j        r t&          j                             |d¦  «         t          |t&          j        j        ¦  «        rÀ|j        r¹|tA          tB          |j        ¦  «                 }t          |t          ¦  «        st          d¦  «        ‚| "                    ¦   «         }t%          | ¦  «        5   |¦   «         5  | #                    ||
||	¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          | ||j$        ¦  «        S )Nz2entry.constant_value must not be SingletonConstantz inplace_arg must be a FakeTensorz)Sparse tensors are not supported in cacherr  rR  rÜ  r6   rd   r'   c                óÜ   •— t          | t          ¦  «        r1|j        €t          d¦  «        ‚|                      ‰|j        ¦  «        S t          | t
          ¦  «        rt          d¦  «        ‚| S )Nz6state.shape_env must not be None for _SymIntOutputStubz Unexpected _PySymInputStub value)rÓ   r8   r:  r×   rî  r7   )rr  rÜ  rÀ   s     €r`   Úcheck_valuezGFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.check_value¶  sr   ø€ Ý˜%Õ!2Ñ3Ô3ð 	Ø”?Ð*Ý(ØPñô ð ð —}’} S¨%¬/Ñ:Ô:Ð:å˜e¥_Ñ5Ô5ð MÝ(Ð)KÑLÔLÐLØ�r_   c              3  ó0   •K  — | ]} ‰|‰¦  «        V — Œd S rŸ   r^   ©r¿   rá   rW  rÜ  s     €€r`   rÂ   zEFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.<genexpr>Â  s/   øè è € ÐDÐD°�k�k ! UÑ+Ô+ÐDÐDÐDÐDÐDÐDr_   c              3  ó0   •K  — | ]} ‰|‰¦  «        V — Œd S rŸ   r^   rY  s     €€r`   rÂ   zEFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.<genexpr>Ã  s/   øè è € ÐFÐF°�{�{ 1 eÑ,Ô,ÐFÐFÐFÐFÐFÐFr_   r{  )r]  r	  r‡   rZ  Tzview_arg must be a FakeTensor)rr  rR  rÜ  r6   rd   r'   )%r‚  rƒ  r„  r…  r~  r×   rÓ   rÔ   r   r`  rO  rP  rS  rT  Ú
contextlibÚnullcontextr:  Úsuppress_guardsr�  rl   Úempty_stridedr]  r	  rZ  rU  rm   Ú	_set_conjrV  Ú_set_negré  r@   r  r   rq  rk  Úset_r‡   )rx   rÜ  rö  rÀ   r„   r÷  Úinplace_argrƒ  rO  rP  rS  Úmaybe_suppressr„  Úview_argÚstoragerW  s    ` `           @r`   Ú#_get_output_tensor_from_cache_entryz2FakeTensorMode._get_output_tensor_from_cache_entry•  s>  øøø€ ð ÔÐ%Ø”Ð&Ø”Ð&àÔ#Õ'8Ð8Ð8Ý$ØHñô ð ð Ô'Ð'ØÔÐ(à˜uÔ0Ô1ˆKÝ˜k­:Ñ6Ô6ð IÝ$Ð%GÑHÔHÐHØÐð ”>ˆØÐØ�4å˜Ñ"Ô"ð 	NÝ Ð!LÑMÔMÐMð
	ð 
	ð 
	ð 
	ð 
	ð 
	õ ÐDÐDÐDÐDÐD°X´^ÐDÑDÔDÑDÔDˆÝÐFÐFÐFÐFÐF°h´oÐFÑFÔFÑFÔFˆØ$˜ XÔ%<¸eÑDÔDˆØÔ!Ð-ØˆK˜Ô.°Ñ6Ô6Ð6õ Ô"ð 	ð Œ>Ð%Ø!œ^Ô;ˆNå)¨$Ñ/Ô/ð 	ð 	°°Ñ1AÔ1Að 	ð 	ÝÔ'ØØØ”nØ”ØØ&Ô4ðñ ô ˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð Ôð 	,ÝŒH×Ò˜u dÑ+Ô+Ð+ØŒ?ð 	+ÝŒH×Ò˜e TÑ*Ô*Ð*å�d�EœJÔ1Ñ2Ô2ð 	C°t´|ð 	Cà�D¥ e¤nÑ5Ô5Ô6ˆHÝ˜h­
Ñ3Ô3ð FÝ$Ð%DÑEÔEÐEØ×.Ò.Ñ0Ô0ˆGÝ-¨dÑ3Ô3ð Cð C°^°^Ñ5EÔ5Eð Cð CØ—
’
˜7 N°E¸6ÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð Cð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cõ ˜$  x¤Ñ7Ô7Ð7sl   Ä?FÅ
*F Å4FÆ F	ÆFÆF	ÆFÆFÆFÉ=KÊJ-Ê!KÊ-J1	Ê1KÊ4J1	Ê5KËKËKú1FakeTensor | None | tuple[FakeTensor | None, ...]c                ó®   ‡ ‡‡‡‡— |j         r&ˆˆˆˆ ˆfd„|j        D ¦   «         }t          |¦  «        S ‰                      ‰|j        d         ‰‰‰¦  «        S )z?
        Create a new FakeTensor from the cache entry.
        c           	     óB   •— g | ]}‰                      ‰|‰‰‰¦  «        ‘ŒS r^   )rf  )r¿   rS  r÷  r„   rÀ   rx   rÜ  s     €€€€€r`   r  z;FakeTensorMode._output_from_cache_entry.<locals>.<listcomp>õ  sF   ø€ ð ð ð ð  ð ×8Ò8Ø˜;¨¨T°4ñô ðð ð r_   r   )r‰  rˆ  r`  rf  )rx   rÜ  rö  rÀ   r„   r÷  Úoutputss   `` ``` r`   rñ  z'FakeTensorMode._output_from_cache_entryè  sŽ   øøøøø€ ð Ô ð 	ðð ð ð ð ð ð ð ð $)Ô#5ð	ñ ô ˆGõ ˜‘>”>Ð!à×;Ò;Ø�uÔ)¨!Ô,¨c°4¸ñô ð r_   c                ó  ‡— dˆfd„Š	 |                       ||||¦  «        }n.# t          $ r!}t          d|› d|› d	|› d
|› �¦  «        |‚d}~ww xY w	  ‰||¦  «         dS # t          $ r}t          d|› d|› d	|› �¦  «        |‚d}~ww xY w)z†
        Helper to validate that the output synthesized from the cache matches
        the output created by normal dispatch.
        Úar   Úbrd   rr   c                óþ  •— t          | t          ¦  «        r§t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚t	          | ¦  «        t	          |¦  «        k    r/t          dt	          | ¦  «        › dt	          |¦  «        › �¦  «        ‚t          | |¦  «        D ]\  }} ‰||¦  «         Œd S t          | t          ¦  «        r2t          |t          ¦  «        r| |k    rt          d| › d|› �¦  «        ‚d S | €|�t          d|› �¦  «        ‚d S t          | t          ¦  «        rCt          | ¦  «        t          |¦  «        us| j        |j        urt          d| › d|› �¦  «        ‚d S t          | t          j
        ¦  «        rQt          |t          j
        ¦  «        st          dt          |¦  «        › �¦  «        ‚t          t          | |¦  «         d S t          dt          | ¦  «        › �¦  «        ‚)	NzExpected tuple, got zTuple length mismatch: z != zInt mismatch: zExpected None, got zSymType mismatch: úExpected Tensor, got zUnsupported type )rÓ   r`  r×   rÕ   r  Úziprq  r(   r¹  rl   r   r   r   ÚRuntimeError)rl  rm  Úlr½  Úassert_helpers       €r`   rs  z>FakeTensorMode._crosscheck_cache_output.<locals>.assert_helper	  s  ø€ Ý˜!�UÑ#Ô#ð BÝ! !¥UÑ+Ô+ð KÝ(Ð)IÅÀQÁÄÐ)IÐ)IÑJÔJÐJÝ�q‘6”6�S ™VœVÒ#Ð#Ý(Ð)WÅ3ÀqÁ6Ä6Ð)WÐ)WÍsÐSTÉvÌvÐ)WÐ)WÑXÔXÐXÝ  1™IœIð (ð (‘D�A�qØ!�M ! QÑ'Ô'Ð'Ð'ð(ð (å˜A�sÑ#Ô#ð BÝ! !¥SÑ)Ô)ð F¨Q°!ªV¨VÝ(Ð)D¸!Ð)DÐ)DÀÐ)DÐ)DÑEÔEÐEð .4¨Và�Ø�=Ý(Ð)B¸qÐ)BÐ)BÑCÔCÐCð !�=å˜A�|Ñ,Ô,ð BÝ˜‘7”7¥$ q¡'¤'Ð)Ð)¨Q¬V¸1¼6Ð-AÐ-AÝ(Ð)H¸aÐ)HÐ)HÀQÐ)HÐ)HÑIÔIÐIð .BÐ-Aå˜A�uœ|Ñ,Ô,ð BÝ! !¥U¤\Ñ2Ô2ð LÝ(Ð)JÅÀaÁÄÐ)JÐ)JÑKÔKÐKÝ"¥9¨a°Ñ3Ô3Ð3Ð3Ð3å"Ð#@µt¸A±w´wÐ#@Ð#@ÑAÔAÐAr_   z*FakeTensor cache crosscheck failure: func=z, args=z	, kwargs=z: Dispatch raised=N)rl  r   rm  r   rd   rr   )rì  Ú	Exceptionrq  )	rx   r÷  r„   r  r÷  rø  Útrue_outputrô  rs  s	           @r`   rò  z'FakeTensorMode._crosscheck_cache_output	  s<  ø€ ð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð0	Ø×-Ò-¨d°E¸4ÀÑHÔHˆKˆKøÝð 	ð 	ð 	ÝðE¸Tð Eð EØðEð EØ'-ðEð EØABðEð Eñô ð ðøøøøð	øøøð
	ØˆM˜+ vÑ.Ô.Ð.Ð.Ð.øÝð 	ð 	ð 	Ýð0¸Tð 0ð 0Øð0ð 0Ø'-ð0ð 0ñô ð ðøøøøð	øøøs,   ‰" ¢
A¬AÁAÁA Á
BÁ)BÂBc                ó\  — |pi }t          ¦   «         5  t                               d|||¦  «         d d d ¦  «         n# 1 swxY w Y   |t          v rt          |         |¦  «        S t                               ¦   «         t
          j        k    r2t                               ddt          z  |¦  «         t          ¦   «         }|t          v r/t          | ¦  «        5   ||i |¤Žcd d d ¦  «         S # 1 swxY w Y   | j        r|                      ||||¦  «        S |                      ||||¦  «        S )Nz%s %s %sz'%sFakeTensorMode.__torch_dispatch__: %sú )r)   r¤  rŸ  r  ÚgetEffectiveLevelÚloggingÚDEBUGrv   rq   Ú_DISPATCH_HANDLE_DIRECTLYr�  rµ   rø  rì  )rx   r„   r  r÷  rø  Úincrs         r`   rÌ  zFakeTensorMode.dispatch5	  s¸  € ð �˜2ˆÝ‰]Œ]ð 	6ð 	6Ý�IŠI�j $¨¨fÑ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð Õ*Ð*Ð*Ý*¨4Ô0°Ñ6Ô6Ð6å× Ò Ñ"Ô"¥g¤mÒ3Ð3Ý�IŠIØ9¸3ÅÑ;PÐRVñô ð õ +Ñ,Ô,ˆDð Õ,Ð,Ð,å-¨dÑ3Ô3ð -ð -Ø�t˜TÐ, VÐ,Ð,ð-ð -ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð Ôð 	BØ×-Ò-¨d°E¸4ÀÑHÔHÐHà×&Ò& t¨U°D¸&ÑAÔAÐAs!   “=½AÁAÃC,Ã,C0Ã3C0Úpathr-   râ   Úrealútuple[object | None, bool]c                ó°  ‡ ‡‡‡‡
‡— ddl Šddlm} dˆ ˆfd	„}t          ‰t          j        ¦  «        �rm	  |‰‰d
dddd¬¦  «         n~# t          $ rqŠ
t          j        j        j	        r-t          dˆ
ˆfd„¬¦  «         t          ‰ ‰‰¦  «        dfcY dŠ
‹
S t          d‰› d‰› dt          |¦  «        › d‰› �¦  «        ‰
‚dŠ
‹
ww xY wt          t          ‰                     ¦   «         ‰                     ¦   «         ¦  «        ¦  «        D ]˜\  }\  }}		  |||	¦  «         Œ# t          $ rvŠ
t          j        j        j	        r/t          dˆ
ˆfd„¬¦  «         t          ‰ ‰‰¦  «        dfcY dŠ
‹
c S t          d|› d|	› dt          |¦  «        › d|› d‰› �
¦  «        ‰
‚dŠ
‹
ww xY wn´‰€i‰�gt          j        j        j	        r)t          dˆˆˆfd„¬¦  «         t          ‰ ‰‰¦  «        dfS t          d‰› d‰› dt          |¦  «        › d‰› �¦  «        ‚	  |‰‰¦  «         n;# t          $ r.Š
t          d‰› d‰› dt          |¦  «        › d‰› �¦  «        ‰
‚dŠ
‹
ww xY w‰dfS )zÎ
        Helper to cross-check fake/real output properties & values,
        and create new fake vals if mismatched.
        Returns tuple of object & boolean, for whether or not it was overwrriten
        r   N)Ú_check_fake_real_tensorsrâ   r   r~  rd   rr   c                óJ  •— t          | t          t          f¦  «        rÅ‰j        €t	          d¦  «        ‚| j        j        j        ‰j        j         	                    ¦   «         z
  ‰j        j
         	                    ¦   «         z
  s\‰j                             ‰                     | j        j        |¦  «        d¬¦  «        ‰j        j        urt          d| › d|› d�¦  «        ‚d S d S t          | t           t"          t$          f¦  «        r| |k    rt          d| › d|› d�¦  «        ‚d S d S )Nz3self.shape_env must not be None for symbolic valuesT)Úcompute_hintúmismatch between fake value ú and real value rw  )rÓ   r   r   r:  r×   r¹  ÚexprÚfree_symbolsÚbacked_var_to_valr*  Úreal_tensor_prop_unbacked_valsÚ_maybe_evaluate_staticÚEqÚSÚtruer˜   rq  Úfloatre   )râ   r~  rx   Úsympys     €€r`   Ú_check_fake_real_valsz?FakeTensorMode._maybe_infer_fake.<locals>._check_fake_real_valsb	  sd  ø€ å˜$¥­Ð 2Ñ3Ô3ð à”>Ð)Ý(ØMñô ð ð œ	œÔ3Ø”nÔ6×;Ò;Ñ=Ô=ñ>à”nÔC×HÒHÑJÔJñKðð œ×=Ò=Ø!ŸHšH T¤Y¤^°TÑ:Ô:Èð >ñ ô ð  %œwœ|ð,ð ,õ
 4ØX¸4ÐXÐXÐQUÐXÐXÐXñô ð ðð ð,ð ,õ Ø•s�E¥4Ð(ñô ð ð ˜4’<�<Ý/ØT°tÐTÐTÈTÐTÐTÐTñô ð ð	ð ð  �<r_   úReal tensor propagation foundFT)ÚcontextÚsizesÚstridesrS  rZ  Úmismatched_fake_kernelc                 ó2   •— t          ‰¦  «        ‰ j        dœS ©N©Úopr€   ©rc   r€   ©Úexcr„   s   €€r`   ú<lambda>z2FakeTensorMode._maybe_infer_fake.<locals>.<lambda>�	  s   ø€ Ý"% d¡)¤)Ø&)¤jð-ð -€ r_   ©Úmetadata_fnzFReal tensor propagation found a metadata mismatch between fake tensor z and real tensor z,  at outputz, for func: c                 ó2   •— t          ‰¦  «        ‰ j        dœS r—  rš  r›  s   €€r`   r�  z2FakeTensorMode._maybe_infer_fake.<locals>.<lambda>¢	  s   ø€ Ý&)¨$¡i¤iØ*-¬*ð1ð 1€ r_   zIReal tensor propagation found an output size mismatch between fake shape z and real shape z, at outputz.size(z), for func: c                 ó4   •— t          ‰¦  «        d‰ › d‰› �dœS )Nr„  r…  r˜  ©rc   )râ   r„   r~  s   €€€r`   r�  z2FakeTensorMode._maybe_infer_fake.<locals>.<lambda>±	  s,   ø€ Ý! $™iœiØ"]ÀÐ"]Ð"]ÐW[Ð"]Ð"]ð)ð )€ r_   zQReal tensor propagation found an output value mismatch between fake output value z and real output value )râ   r   r~  r   rd   rr   )r�  Útorch._subclasses.fake_utilsr�  rÓ   rl   r   r˜   rÛ   rý  Ú*generate_fake_kernels_from_real_mismatchesr   Ú_infer_fake_from_real_tensorr.   rA  rp  r–  )rx   r„   r}  râ   r~  r�  r�  ÚjÚs_fakeÚs_realrœ  r�  s   `` ``     @@r`   Ú_maybe_infer_fakez FakeTensorMode._maybe_infer_fakeV	  sG  øøøøøø€ ð 	ˆˆˆàIÐIÐIÐIÐIÐIð	ð 	ð 	ð 	ð 	ð 	ð 	õ< �d�EœLÑ)Ô)ñ D	ðØ(Ð(ØØØ;ØØ!Ø#'Ø"'ðñ ô ð ð øõ )ð ð ð ÝÔ#Ô*ÔUð PÝ%Ø0ð%ð %ð %ð %ð %ðñ ô ð õ 8¸¸dÀDÑIÔIÈ4ÐOÐOÐOÐOÐOÐOÐOÝ+ðBØ#'ðBð BØ:>ðBð Bå!'¨¡¤ðBð Bà;?ðBð Bñô ð ð	øøøøðøøøõ  (1µ°T·Y²Y±[´[À$Ç)Â)Á+Ä+Ñ1NÔ1NÑ'OÔ'Oð ð Ñ#�Ñ#�F˜FðØ)Ð)¨&°&Ñ9Ô9Ð9Ð9øÝ,ð ð ð ÝÔ'Ô.ÔYð TÝ)Ø4ð)ð )ð )ð )ð )ðñ ô ð õ  <¸DÀ$ÈÑMÔMÈtÐSÐSÐSÐSÐSÐSÐSÐSÐSÝ/ðOØ&,ðOð OØ>DðOð Oå$*¨4¡L¤LðOð Oà89ðOð OàHLðOð Oñô ð ð	øøøøðøøøðð$ ˆ\˜dÐ.ÝÔÔ&ÔQð LÝ!Ø,ð!ð !ð !ð !ð !ð !ðñ ô ð õ 4°D¸$ÀÑEÔEÀtÐKÐKÝ'ð>Ø#ð>ð >Ø6:ð>ð >å# D™\œ\ð>ð >à7;ð>ð >ñô ð ðØ%Ð% d¨DÑ1Ô1Ð1Ð1øÝ(ð ð ð Ý+ðAØ)-ðAð AØFJðAð Aå & t¡¤ðAð Aà:>ðAð Añô ð ð	øøøøðøøøð �Uˆ{Ðs_   ´A Á
CÁ=B=ÂCÂ)B=Â=CÄDÄ
FÄ&=FÅ#FÅ+,FÆFÈH È
IÈ#)IÉIÚfake_inÚreal_inÚfake_outÚreal_outúobject | Nonec           	     óª  ‡ ‡‡‡— ddl m} dŠ‰ j        rt          ‰ j        j        ¦  «        Šdˆˆ fd„}t
                               |¦  «        \  }}	t
                               |¦  «        \  }
}	  |d||||¦  «         ny# t          $ rlŠt          j
        j        j        r8t          dˆˆfd	„¬
¦  «          |¦   «          t          ˆˆ fd„|¦  «        cY dŠ‹S t          d|› d|› d‰› �¦  «        ‰‚dŠ‹ww xY wt          ˆˆ fd„t          ||
¦  «        D ¦   «         Ž \  }}t!          |¦  «        r‰r
 |¦   «          t
                               ||	¦  «        S )zÓ
        Helper to cross-check fake/real output properties & values,
        and create new fake vals if mismatched, but at the kernel level.
        Means this handles pytree outputs & checks aliasing.
        r   )Ú_check_alias_infoNrd   rr   c                 óŽ   •— t          t          ‰j        j        ¦  «                             ‰ ¦  «        ¦  «        ‰j        _        d S rŸ   )r(  Úsetr:  Úpending_fresh_unbacked_symbolsÚ
difference)Úpending_unbackedrx   s   €€r`   Ú_clear_pending_unbackedzXFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>._clear_pending_unbackedÛ	  s@   ø€ Ý<@Ý�D”NÔAÑBÔB×MÒMØ$ñô ñ=ô =ˆDŒNÔ9Ð9Ð9r_   r‘  r•  c                 ó8   •— t          ‰¦  «        d‰ j        › �dœS )Nz>Mismatched aliasing spec between fake kernel and real kernel: r˜  rš  r›  s   €€r`   r�  zIFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>.<lambda>î	  s'   ø€ Ý! $™iœiàiÐ]`Ô]gÐiÐið)ð )€ r_   rž  c                ó&   •— t          ‰‰| ¦  «        S rŸ   ©r¥  )rÌ   r„   rx   s    €€r`   r�  zIFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>.<lambda>ú	  s   ø€ Õ:¸4ÀÀqÑIÔI€ r_   zGReal tensor propagation found an aliasing mismatch between fake output z and real output z,  for func: c                óL   •— g | ] \  \  }}}‰                      ‰|||¦  «        ‘Œ!S r^   )r©  )r¿   Ú
_fake_pathÚ	_fake_outÚ	_real_outr„   rx   s       €€r`   r  zKFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>.<listcomp>
  sF   ø€ ð ð ð á6Ñ+�Z ¨Yð ×&Ò& t¨Z¸ÀIÑNÔNðð ð r_   r}   )r£  r°  r:  r(  r³  r  Útree_flatten_with_pathÚtree_flattenr˜   rl   rÛ   rý  r¤  r   r0   rp  r$  Útree_unflatten)rx   r„   rª  r«  r¬  r­  r°  r¶  Úfake_paths_leavesÚ	fake_specÚreal_leavesrÊ   Úfake_leavesÚ	overridesrœ  rµ  s   ``            @@r`   Ú(_maybe_infer_fake_kernel_from_pytree_outz7FakeTensorMode._maybe_infer_fake_kernel_from_pytree_outÇ	  sA  øøøø€ ð 	CÐBÐBÐBÐBÐBð  ÐØŒ>ð 	SÝ# D¤NÔ$QÑRÔRÐð	ð 	ð 	ð 	ð 	ð 	ð 	õ (.×'DÒ'DÀXÑ'NÔ'NÑ$Ð˜9Ý×,Ò,¨XÑ6Ô6‰ˆ�Qð	àÐØ/°¸7ÀHÈgñô ð ð øõ %ð 	ð 	ð 	åÔÔ&ÔQð Ý!Ø,ð!ð !ð !ð !ð !ðñ ô ð ð (Ð'Ñ)Ô)Ð)ÝØIÐIÐIÐIÐIÈ8ñô ð ð ð ð ð ð õ ,ð)Ø#+ð)ð )Ø>Fð)ð )à"&ð)ð )ñô ð ð	øøøøð)	øøøõ8 "%ðð ð ð ð å:=Ø% {ñ;ô ;ðñ ô ð"
Ñˆ�Yõ �	‰NŒNð	&Ø/ð	&ð $Ð#Ñ%Ô%Ð%Ý×$Ò$ [°)Ñ<Ô<Ð<s%   Á/A? Á?
C5Â	AC0ÃC5ÃC0Ã0C5c                ó¦  ‡ ‡‡‡‡(‡)‡*‡+‡,‡-‡.‡/‡0‡1‡2‡3‡4— ddl m} t                               ‰‰f¦  «        \  Š,Š(t	          ‰,¦  «        }|r.d„ ‰,D ¦   «         }t
                               d|¦  «         t          S ˆ fd„‰,D ¦   «         }t          d„ |D ¦   «         ¦  «        pt          d„ ‰,D ¦   «         ¦  «        Š.‰ j	        Š*‰‰ j
        v }	d}
‰ j        rS‰t          j        j        j        j        u rd	‰v r‰d	         j        d
k    rd}
‰t          j        j        j        j        u rd}
‰t          j        j        j        j        u o5t)          ‰d         t          j        ¦  «        o‰d         j        j        dk    p|
}|	r|rt/          ‰¦  «        râ‰.sà|sÞ|sÜt1          d„ |D ¦   «         ¦  «        st3          ‰› d�¦  «        ‚ˆ fd„‰,D ¦   «         }t                               |‰(¦  «        \  }} ‰|i |¤Ž}t#          |¦  «        t*          u rg‰                      |¦  «        rRt9          ¦   «         5  |                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   ‰*                     ‰ |d¬¦  «        S |	rst?          ‰¦  «        dk    st?          ‰¦  «        dk    rt3          d‰› d‰› �¦  «        ‚t#          ‰d         ¦  «        t*          u r‰*                     ‰ ‰d         ¦  «        S ‰                       ‰‰*‰,‰(¦  «        \  Š,}‹‹t1          d„ |D ¦   «         ¦  «        }t)          ‰t          j!        j"        ¦  «        �rNt          j#        j$        ‰j%        v�r5t          j#        j&        ‰j%        vs‰t          j'        j        u �r	|�rt?          |¦  «        dk    ró‰.sñ|
sï‰t          j(        j        urÜˆ fd„‰,D ¦   «         }t                               |‰(¦  «        \  }}t9          ¦   «         5   ‰|i |¤Ž}d d d ¦  «         n# 1 swxY w Y   t           )                    |¦  «        }d„ |D ¦   «         }t1          ˆ fd„|D ¦   «         ¦  «        }|r%t           *                    t*          ˆ*ˆ fd„|¦  «        S |D ]}‰* +                    |¦  «         Œt                               ‰,‰(¦  «        \  ŠŠt)          ‰t          j!        j,        ¦  «        ry‰|v ru‰ j-        €t\          j/        n‰ j-        j0        }‰ 5   |¦   «         5   |‰         ‰i ‰¤Žcd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   ‰  1                    ‰|‰‰¦  «         d7ˆ fd„Š/ddl2m3Š)m4Š- tk          ¦   «         Š0‰0Š3‰ j6        �rt1          d„ |D ¦   «         ¦  «        rÿt          ˆ-ˆ ˆ4fd „‰,D ¦   «         ¦  «        sâtn                               d!‰¦  «         ˆ/fd"„‰,D ¦   «         }t                               |‰(¦  «        \  Š1Š2tq          j9        ‰¦  «        }|stq          j:        ‰|‰(¦  «        }	  ‰‰1i ‰2¤ŽŠ3n3# tv          $ r&}tn                               d#‰|¦  «         Y d }~nd }~ww xY w|s/| <                    ¦   «          tq          j=        ‰j>        ‰,‰3¦  «         n8‰ j6        r1tn                               d$‰|‰,‰ j-        r‰ j-        j?        nd ¦  «         d8ˆˆ)ˆ-ˆˆˆ0ˆ1ˆ2ˆ3ˆ f
d&„}‰.r8t�          ¦   «          A                    ‰¦  «        }|� | |‰ g‰¢R i ‰¤Ž¦  «        S dd'lBmC} ‰|vrÍ‰  D                    ‰¦  «        s¸‰.r	‰‰ jE        v s­dd(lBmF} ‰|v r[‰.s(t�          ‰¦  «        rJt1          d)„ |D ¦   «         ¦  «        r1‰ 5   | |‰         ‰i ‰¤Ž¦  «        cd d d ¦  «         S # 1 swxY w Y   ‰ 5   ‰jH        ‰i ‰¤Ž}|t          ur ||¦  «        cd d d ¦  «         S 	 d d d ¦  «         n# 1 swxY w Y   d*‰jI        jJ        v rOt—          ‰d+¦  «        r?t™          ‰¦  «        s0‰ 5   | ‰jM        ‰i ‰¤Ž¦  «        cd d d ¦  «         S # 1 swxY w Y   t          jN        jO        jP        }|�‰|jQ        v r |jR        ‰‰ g‰¢R i ‰¤ŽS ‰ j6        rc‰3‰0ur_tq          j9        ‰¦  «        sK‰ j-        �Dtq          jS        ‰¦  «        s0t©          ‰ ‰‰3¦  «        }t«          d,ˆfd-„¬.¦  «          ||¦  «        S t          jV        jW        jX         Y                    ‰ J                    ¦   «         ¦  «        jZ        j[        } | �r	 t          jV        jZ         \                    ‰ ‰¦  «        Š+t          jV        jZ         ]                    ˆ+fd/„¦  «        5  ‰ 5   | ‰i ‰¤Ž} ||¦  «        cd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   no# t¼          $ rb}!‰ j6        rT‰3‰0urPtq          j9        ‰¦  «        s<‰ j-        �5t©          ‰ ‰‰3¦  «        }t«          d,ˆfd0„¬.¦  «          ||¦  «        cY d }!~!S |!‚d }!~!ww xY wt¾          D ]3\  }"}# |"‰¦  «        r# |#‰ ‰g‰¢R i ‰¤Ž}$|$t          ur ||$¦  «        c S Œ4	 d9d:ˆˆ(ˆ,ˆˆ.ˆˆ fd4„}%tÁ          ‰¦  «        s |%¦   «         }& ||&¦  «        S 	 tÃ          ‰ ¦  «        5   ‰‰i ‰¤Ž}d d d ¦  «         n# 1 swxY w Y   nG# tÄ          $ r}' |%|'¦  «        cY d }'~'S d }'~'wtÆ          $ r tn           d                    d5‰¦  «         ‚ w xY w |‰  e                    |‰‰,‰ A                    d	¦  «        ¬6¦  «        ¦  «        S );Nr   r  c                óJ   — g | ] }t          |¦  «        ¯t          |¦  «        ‘Œ!S r^   )Ú_check_for_subclass_argrÕ   ©r¿   rÌ   s     r`   r  z1FakeTensorMode._dispatch_impl.<locals>.<listcomp>(
  s<   € ð "ð "ð "ØÕ.EÀaÑ.HÔ.Hð"Ý�Q‘”ð"ð "ð "r_   z,FakeTensorMode unrecognized subclass(es): %sc                ó>   •— g | ]}‰                      |¦  «        ¯|‘ŒS r^   )rÀ  ©r¿   ræ   rx   s     €r`   r  z1FakeTensorMode._dispatch_impl.<locals>.<listcomp>0
  s,   ø€ Ð MÐ MÐ M q¸×9IÒ9IÈ!Ñ9LÔ9LÐ M Ð MÐ MÐ Mr_   c              3  ó$   K  — | ]}|j         V — Œd S rŸ   )ri  )r¿   r8  s     r`   rÂ   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>1
  s6   è è € ð !
ð !
Ø./ˆAÔ)ð!
ð !
ð !
ð !
ð !
ð !
r_   c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S rŸ   )rÓ   r   )r¿   rl  s     r`   rÂ   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>3
  s,   è è € Ð:Ð:¨1•˜A�vÑ&Ô&Ð:Ð:Ð:Ð:Ð:Ð:r_   Fr‡   r'  Tr{  c              3  ó(   K  — | ]}|j         d uV — Œd S rŸ   rD  r
  s     r`   rÂ   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>]
  s)   è è € ÐMÐM°!�q”z¨Ð-ÐMÐMÐMÐMÐMÐMr_   z. should not have fake inputs without constantsc                óL   •— g | ] }‰                      |¦  «        r|j        n|‘Œ!S r^   ©rÀ  r  ©r¿   rl  rx   s     €r`   r  z1FakeTensorMode._dispatch_impl.<locals>.<listcomp>a
  ó?   ø€ ð ð ð Ø=>˜d×.Ò.¨qÑ1Ô1Ð8�”
�
°qðð ð r_   ©r9  r5   z1Expected exactly one arg for lift func, got args=z kwargs=c              3  ó(   K  — | ]}|j         d uV — Œd S rŸ   rD  ©r¿   rô  s     r`   rÂ   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>�
  ó)   è è € ÐQÐQ°a˜1œ:¨TÐ1ÐQÐQÐQÐQÐQÐQr_   c                óL   •— g | ] }‰                      |¦  «        r|j        n|‘Œ!S r^   rÑ  rÒ  s     €r`   r  z1FakeTensorMode._dispatch_impl.<locals>.<listcomp>¡
  rÓ  r_   c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS r^   r7  r
  s     r`   r  z1FakeTensorMode._dispatch_impl.<locals>.<listcomp>¬
  s'   € ÐMÐMÐM aµzÀ!ÅVÑ7LÔ7LÐM ÐMÐMÐMr_   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rŸ   )Úmay_turn_constrÌ  s     €r`   rÂ   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>­
  s1   øè è € ÐPÐP¸!˜t×2Ò2°1Ñ5Ô5ÐPÐPÐPÐPÐPÐPr_   c                ó4   •— ‰                      ‰| d¬¦  «        S )NTrÔ  )ru  )ræ   Ú	converterrx   s    €€r`   r�  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>²
  s   ø€ ˜i×8Ò8¸¸qÐPTÐ8ÑUÔU€ r_   ræ   rE   rd   ú)T | Tensor | torch._C.ScriptObject | Nonec                óŠ  •— t          | t          ¦  «        r| j        S t          | t          ¦  «        rt‰j        €t          d¦  «        ‚| j                             | j        j         	                    ‰j        j
        ¦  «         	                    ‰j        j        ¦  «        ¦  «        S t          | t          ¦  «        r| j        S | S )Nz2self.shape_env must not be None for symbolic types)rÓ   rÔ   rÆ  r(   r:  r×   r¹  rv  r†  Úxreplacerˆ  r‰  r   Úreal_obj)ræ   rx   s    €r`   Úmaybe_to_real_tensorz;FakeTensorMode._dispatch_impl.<locals>.maybe_to_real_tensorÏ
  s¼   ø€ õ ˜!�ZÑ(Ô(ð Ø”}Ð$Ý˜A�|Ñ,Ô,ð Ø”>Ð)Ý(ØLñô ð ð ”v—}’}Ø”F”K×(Ò(¨¬Ô)IÑJÔJ×SÒSØœÔEñô ñô ð õ
 ˜AÕ/Ñ0Ô0ð Ø”zÐ!à�r_   )Úcompute_unbacked_bindingsÚfree_unbacked_symbolsc              3  ó(   K  — | ]}|j         d uV — Œd S rŸ   )rÆ  rÖ  s     r`   rÂ   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>í
  s)   è è € ÐMÐM°!�A”M¨Ð-ÐMÐMÐMÐMÐMÐMr_   c              3  ó¤   •K  — | ]J}t          |t          ¦  «        o0 ‰|¦  «        xŠo#‰j        d uot          ˆfd„‰D ¦   «         ¦  «        V — ŒKd S )Nc              3  ó4   •K  — | ]}|‰j         j        vV — Œd S rŸ   )r:  r‰  )r¿   Úsrx   s     €r`   rÂ   z:FakeTensorMode._dispatch_impl.<locals>.<genexpr>.<genexpr>ó
  sA   øè è € ð ð àð  ¤Ô!NÐNðð ð ð ð ð r_   )rÓ   r(   r:  r$  )r¿   rl  rä  rx   Úsymss     €€€r`   rÂ   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>î
  s¤   øè è € ð ð ð õ ˜q¥,Ñ/Ô/ð Ø!6Ð!6°qÑ!9Ô!9Ð9˜ðàœ¨dÐ2ðõ ð ð ð ð à!%ðñ ô ñ ô ðð ð ð ð ð r_   zpropagate_real_tensors %sc                ó&   •— g | ]} ‰|¦  «        ‘ŒS r^   r^   )r¿   rl  râ  s     €r`   r  z1FakeTensorMode._dispatch_impl.<locals>.<listcomp>ü
  s%   ø€ ÐIÐIÐI¸!Ð2Ð2°1Ñ5Ô5ÐIÐIÐIr_   z9real-tensor fallback failed for %s: %s; silently ignoringz,SKIPPED propagate_real_tensors %s(%s, %s) %sr¬  c           	     ó˜  •
‡‡— dd l Št                               d‰¦  «         dˆˆˆˆfd	„Š‰‰u�rt          j        j        j        s‰                     ‰‰‰f‰	‰
f| ‰¦  «         n‰                     ‰‰‰f‰	‰
f| ‰¦  «        } t          | t          ¦  «        s�t          ‰t          ¦  «        szt          | ¦  «        t          ‰¦  «        ur\t          ‰t          t                               | ¦  «        ¦  «        t          t                               ‰¦  «        ¦  «        ¦  «         nt          ‰| ‰¦  «          ‰‰j        | d
¬¦  «         | S )Nr   zmaybe_propagate_real_tensors %sræ   rH   Úreal_tr   rd   rr   c                ó"  •— t          | t          ¦  «        rût                               dt	          | ¦  «        t	          |¦  «        ¦  «         || _        t          |                      ¦   «         |                     ¦   «         ¦  «        D ]\  }} ‰||¦  «         Œt          |                      ¦   «         |                     ¦   «         ¦  «        D ]\  }} ‰||¦  «         Œ ‰|  	                    ¦   «         | 	                    ¦   «         ¦  «         d S t          | t          ¦  «        rà ‰| ¦  «        r×t          | j        j        ‰j        ¦  «        r=‰j        €t          d¦  «        ‚‰j                             | j        j        |¦  «         d S t          | j        j        x}‰j        ¦  «        r\t          |j        ‰j        ¦  «        rD|j        dk    r;‰j        €t          d¦  «        ‚‰j                             ||¦  «         d S d S d S d S d S d S )Nz%maybe_propagate_real_tensors %s -> %sz3self.shape_env must not be None for symbolic Symbolr5   z/self.shape_env must not be None for symbolic Eq)rÓ   rÔ   r¤  rŸ  r¥  rÆ  rp  r–  rP  rS  r(   r¹  r†  ÚSymbolr:  r×   Ú"set_real_tensor_prop_unbacked_valsr‹  ÚlhsÚrhs)ræ   rì  rè  Úreal_srä  Úgorx   r�  s       €€€€r`   ró  zOFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensors.<locals>.go+  s8  ø€ Ý˜a¥Ñ,Ô,ð Uå—I’IØ?ÅÀAÁÄÍÈ6É
Ì
ñô ð ð %+�A”MÝ%(¨¯ª©¬°6·;²;±=´=Ñ%AÔ%Að &ð &™	˜˜6Ø˜˜1˜f™œ˜˜Ý%(¨¯ª©¬°V·]²]±_´_Ñ%EÔ%Eð &ð &™	˜˜6Ø˜˜1˜f™œ˜˜Ø�B�q×'Ò'Ñ)Ô)¨6×+@Ò+@Ñ+BÔ+BÑCÔCÐCÐCÐCÝ ¥<Ñ0Ô0ð UÐ5JÐ5JÈ1Ñ5MÔ5Mð UÝ! !¤&¤+¨u¬|Ñ<Ô<ð UØœ>Ð1Ý"0Ø Uñ#ô #ð ð œ×IÒIØœFœK¨ñô ð ð ð õ #¨¬¬Ð#3 1°U´XÑ>Ô>ð
Uå& q¤u¨e¬lÑ;Ô;ð
Uð œE QšJ˜Jàœ>Ð1Ý"0Ø Qñ#ô #ð ð œ×IÒIÈ!ÈVÑTÔTÐTÐTÐTð'Uð Uð Uð Uð
Uð 
Uð 
Uð 
Uð '˜Jr_   T)Úpeek)ræ   rH   rì  r   rd   rr   )r�  r¤  rŸ  rl   rÛ   rý  r¤  rÆ  rÓ   r   rÕ   r1   r`  r  r¿  r:  )r¬  ró  r�  r÷  rã  rä  r„   rø  ÚnilÚ	real_argsÚreal_kwargsr­  rx   s    @@€€€€€€€€€€r`   Úmaybe_propagate_real_tensorszCFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensors&  sž  øøø€ ØˆLˆLˆLå�IŠIÐ7¸Ñ>Ô>Ð>ðUð Uð Uð Uð Uð Uð Uð Uð UðB ˜sÐ"Ñ"åÔ'Ô.ÔYð Ø×AÒAØØ˜v˜Ø" KÐ0Ø Ø ñô ð ð ð  $×LÒLØØ˜v˜Ø" KÐ0Ø Ø ñ ô  �Hõ # 8­VÑ4Ô4ð6å& xµÑ8Ô8ð6õ ˜X™œ­d°8©n¬nÐ<Ð<õ ØÝ�f×1Ò1°(Ñ;Ô;Ñ<Ô<Ý�f×1Ò1°(Ñ;Ô;Ñ<Ô<ñô ð ð õ ˜b (¨HÑ5Ô5Ð5ð
 *Ð)¨$¬.¸(ÈÐNÑNÔNÐNàˆOr_   )Ú
meta_tablerõ   c              3  ó6   K  — | ]}t          |¦  «         V — Œd S rŸ   )r   rÖ  s     r`   rÂ   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>�  s-   è è € ÐPÐP°Q¥¨aÑ 0Ô 0Ð0ÐPÐPÐPÐPÐPÐPr_   zprims::Úprim_meta_implÚmissing_fake_kernelc                 ó&   •— dt          ‰ ¦  «        iS ©Nr™  r¢  rò   s   €r`   r�  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>¿  s   ø€ Ø�c $™iœið)€ r_   rž  c                 ó   •— ‰ S rŸ   r^   )Úctxs   €r`   r�  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>Í  s   ø€ ÀS€ r_   c                 ó&   •— dt          ‰ ¦  «        iS rþ  r¢  rò   s   €r`   r�  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>Þ  s   ø€ Ø ¥# d¡)¤)ð-€ r_   ÚerrorúRuntimeError | Noner,  c                ó  •— t           j        j                             ‰¦  «        rt          j        j        j        ‰g‰¢R i ‰¤ŽS ‰s‰                     ‰¦  «        st          ‰¦  «        ‚| €t          ‰¦  «        } t          ‰‰‰‰| ¦  «        S rŸ   )rl   r  r  Úcan_generate_trivial_fake_implÚgenerate_trivial_fake_implÚcan_run_unsafe_fallbackr”   Úrun_fallback_kernel)r  r÷  Ú	args_specr  r„   Úhas_symbolic_sizesrø  rx   s    €€€€€€€r`   Úmaybe_run_unsafe_fallbackz@FakeTensorMode._dispatch_impl.<locals>.maybe_run_unsafe_fallbackñ  s¬   ø€ õ Œ~Ô#×BÒBÀ4ÑHÔHð Ý”~Ô+ÔFØðØðð ð Ø#)ðð ð ð "ð 9¨×)EÒ)EÀdÑ)KÔ)Kð 9Ý2°4Ñ8Ô8Ð8Øˆ}Ý4°TÑ:Ô:�Ý& t¨T°9¸iÈÑOÔOÐOr_   z*failed while attempting to run meta for %sr  )ræ   rE   rd   rÞ  )r¬  rE   rd   rE   rŸ   )r  r  rd   r,  )fr  r  r  r¿  Ú_check_for_subclassr  rŸ  rV  r$  rª  r  rÅ  rl   r  r2  Ú_to_copyr  rÕ   ÚprimsÚ
device_putrÓ   r   r‡   r—  Úallr×   rÀ  rÛ  r)   Úcloneru  r  Ú%validate_and_convert_non_fake_tensorsré  r@   r  Únondeterministic_seededr  r  Údetach_Ú_nested_tensor_from_tensor_listr  Útree_map_onlyr%  rê  r:  r[  r\  Úignore_fresh_unbacked_symbolsÚinvalidate_written_to_constantsrQ  rã  rä  rH   r©  r¤  Úlibrary_utilsr  ÚMutationCheckerÚZeroDivisionErrorÚcheckÚcheck_aliasing_constraintr¢  r‰  Úget_fast_op_implsr0  r÷   rù  Úcpp_meta_supports_symintÚ#_unbacked_special_fake_handling_opsrö   rü   Ú	decomposerñ   r•  rÄ  Ústride_incorrect_oprû  r®  rý  Ú_custom_ops_profileÚdataÚgeneric_fake_kernelÚhas_fake_kernelÚ"inferred_fake_kernel_from_real_outr   r  Úsimple_registryÚ	singletonÚfindÚ	fake_implÚkernelÚFakeImplCtxÚset_ctx_getterr   Úop_implementations_checksÚhas_metar�  rÏ  rt  rÍ  Ú+wrap_meta_outputs_with_default_device_logic)5rx   r„   r  r÷  rø  r  Úhas_unrecognized_typesr  Úflat_arg_fake_tensorsÚis_lift_funcÚavoiding_device_initÚ!device_conversion_skip_const_propÚconst_flat_argsÚ
const_argsÚconst_kwargsrº   Úall_constantÚflat_outÚflat_out_tensorsr$  Ú#maybe_ignore_fresh_unbacked_symbolsÚreal_flat_argsr  Úmutation_checkerrœ  rø  Ú	fast_implrù  rö   r½  Úprofilesr[  Úmaybe_fake_implrô  Úrun_impl_checkÚop_implÚop_impl_outr  ÚfallbackÚnot_implemented_errorr	  rã  rÝ  r   r  rä  r
  râ  rõ  rö  r÷  r­  ré  s5   `` ``                                   @@@@@@@@@@@@@r`   rì  zFakeTensorMode._dispatch_impl
  s³  øøøøøøøøøøøøøøøøø€ ð 	JÐIÐIÐIÐIÐIå%×2Ò2°D¸&°>ÑBÔBÑˆ	�9õ "5°YÑ!?Ô!?ÐØ!ð 	"ð"ð "Ø!*ð"ñ "ô "Ðõ  ×%Ò%Ø>Ð@Rñô ð õ "Ð!à MÐ MÐ MÐ M¨IÐ MÑ MÔ MÐÝ ð !
ð !
Ø3Hð!
ñ !
ô !
ñ 
ô 
ð ;åÐ:Ð:°	Ð:Ñ:Ô:Ñ:Ô:ð 	ð Ô.ˆ	à˜tœ}Ð,ˆð  %ÐØÔ!ð 	,à�œ	œÔ/Ô7Ð7Ð7Ø Ð&Ð&Ø˜8Ô$Ô)¨UÒ2Ð2à'+Ð$Ø•u”y”Ô1Ô9Ð9Ð9Ø'+Ð$ð •E”I”NÔ+Ô3Ð3ð .Ý˜4 œ7¥E¤LÑ1Ô1ð.à�Q””Ô# vÒ-ð-"ð "ð	 	*ð ð 	QÐ!6ð 	QÝ+¨DÑ1Ô1ð	Qà&ð	Qð *ð	Qð 6ð		Qõ ÐMÐMÐ7LÐMÑMÔMÑMÔMð Ý$ØÐKÐKÐKñô ð ðð ð ð ØBKðñ ô ˆOõ (.×'<Ò'<¸_ÈiÑ'XÔ'XÑ$ˆJ˜Ø�$˜
Ð3 lÐ3Ð3ˆCÝ�C‰yŒy�FÐ"Ð" t×':Ò':¸3Ñ'?Ô'?Ð"õ !‘]”]ð &ð &ØŸ)š)™+œ+�Cð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &à ×1Ò1°$¸È4Ð1ÑPÔPÐPð ð 	AÝ�6‰{Œ{˜aÒÐ¥3 t¡9¤9°¢> >Ý$Ø^ÈÐ^Ð^ÐV\Ð^Ð^ñô ð õ �D˜”G‰}Œ}¥Ð&Ð&Ø ×1Ò1°$¸¸Q¼Ñ@Ô@Ð@ð .2×-WÒ-WØ�)˜Y¨	ñ.
ô .
Ñ*ˆÐ)ð �&õ ÐQÐQÐ;PÐQÑQÔQÑQÔQˆå�t�UœZÔ2Ñ3Ô3ñ)	;å”	Ô1¸¼ÐBÑBõ ”	Ô&¨d¬iÐ7Ð7¸4Å4Ä<ÔCWÐ;WÑ;Wàñ <Xõ Ð)Ñ*Ô*¨aÒ/Ð/Ø&ð 0à(ð 0ð �DÔ@ÔHÐHÐHðð ð ð ØBKðñ ô ˆOõ (.×'<Ò'<¸_ÈiÑ'XÔ'XÑ$ˆJ˜õ ‘”ð 8ð 8Ø�d˜JÐ7¨,Ð7Ð7�ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8õ ×)Ò)¨#Ñ.Ô.ˆHØMÐM¨8ÐMÑMÔMÐÝÐPÐPÐPÐPÐ?OÐPÑPÔPÑPÔPˆLàð Ý×+Ò+ÝØUÐUÐUÐUÐUØñô ð ð (ð ;ð ;�Ø×5Ò5°cÑ:Ô:Ð:Ð:õ ×,Ò,¨Y¸	ÑBÔB‰ˆˆfõ �t�UœZÔ;Ñ<Ô<ð	FàÐ/Ð/Ð/ð
 ”>Ð)õ Ô&Ð&à”^ÔAð 0ð ð Fð FÐ:Ð:Ñ<Ô<ð Fð FØ4Ð.¨tÔ4°dÐE¸fÐEÐEðFð Fð Fð Fñ Fô Fð Fð Fð Fð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð Fð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð 	×,Ò,¨TÐ3HÈ$ÐPVÑWÔWÐWð	ð 	ð 	ð 	ð 	ð 	ð(	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ
 ‰hŒhˆàˆàÔ'ñ9	åÐMÐMÐ7LÐMÑMÔMÑMÔMð9	õ ð ð ð ð ð ð ð #ðñ ô ñ ô ð9	õ  �IŠIÐ1°4Ñ8Ô8Ð8ØIÐIÐIÐI¸yÐIÑIÔIˆNÝ%+×%:Ò%:¸>È9Ñ%UÔ%UÑ"ˆI�{å&Ô1°$Ñ7Ô7ˆJØð Ý#0Ô#@Ø˜.¨)ñ$ô $Ð ð
Ø˜4 Ð:¨kÐ:Ð:��øÝ$ð ð ð õ —	’	ØOØØñô ð ð ð ð ð ð øøøøð	øøøð ð YØ ×&Ò&Ñ(Ô(Ð(ÝÔ7¸¼
ÀIÈxÑXÔXÐXøàÔ(ð 	õ �IŠIØ>ØØ%Øà”>ð�”Ô=Ð=àñô ð ðO	ð O	ð O	ð O	ð O	ð O	ð O	ð O	ð O	ð O	ð O	ð O	ð O	ð O	ð O	ðd ð 	VÝ)Ñ+Ô+×/Ò/°Ñ5Ô5ˆIØÐ$Ø3Ð3°I°I¸dÐ4TÀTÐ4TÐ4TÐ4TÈVÐ4TÐ4TÑUÔUÐUð 	-Ð,Ð,Ð,Ð,Ð,ð ˜
Ð"Ð"Ø×1Ò1°$Ñ7Ô7ð #ð #ð #ð (,¨tÔ/WÐ'WÐ'Wð :Ð9Ð9Ð9Ð9Ð9ð Ð*Ð*Ð*Ø"ð +õ
 0°Ñ5Ô5ð +õ ÐPÐPÐ:OÐPÑPÔPÑPÔPð +ð ð ð Ø7Ð7Ø1Ð+¨DÔ1°4ÐB¸6ÐBÐBñô ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 ð ;ð ;à"�D”N DÐ3¨FÐ3Ð3�Ø�NÐ*Ð*Ø7Ð7¸Ñ:Ô:ð	;ð ;ð ;ð ;ñ ;ô ;ð ;ð ;ð +ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ˜œÔ*Ð*Ð*Ý˜Ð.Ñ/Ô/ð +å'¨Ñ-Ô-ð +ð ð ð Ø3Ð3Ø'�DÔ'¨Ð8°Ð8Ð8ñô ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ
 ”=Ô'Ô;ˆØÐØ�x”}Ð$Ð$Ø3�xÔ3°D¸$ÐPÀÐPÐPÐPÈÐPÐPÐPð Ô'ð	<à Ð#Ð#Ý!Ô,¨TÑ2Ô2ð $à”Ð*õ !Ô0°Ñ6Ô6ð 	<Ý;¸DÀ$ÈÑQÔQ�å!Ø)ð!ð !ð !ð !ðñ ô ð ð 4Ð3°FÑ;Ô;Ð;õ  œ.Ô8ÔB×GÒGØ�IŠI‰KŒKñ
ô 
ä
”Fð 	ð ñ 	ðÝ”nÔ.×:Ò:¸4ÀÑFÔF�Ý”^Ô-×<Ò<¸[¸[¸[¸[ÑIÔIð @ð @È4ð @ð @Ø,˜_¨dÐ=°fÐ=Ð=�FØ7Ð7¸Ñ?Ô?ð@ð @ð @ð @ñ @ô @ð @ð @ð @ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @øøõ $ð ð ð ð Ô/ðà ¨Ð+Ð+Ý)Ô4°TÑ:Ô:ð ,àœÐ2å?ÀÀdÈHÑUÔU�Få%Ø-ð%ð %ð %ð %ðñ ô ð ð 8Ð7¸Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?à�Gøøøøð'øøøõ0 (Að 	Eð 	EÑ#ˆN˜GØˆ~˜dÑ#Ô#ð Eà%˜g d¨DÐB°4ÐBÐBÐB¸6ÐBÐB�Ø¥nÐ4Ð4à7Ð7¸ÑDÔDÐDÐDÐDøð *.ð	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Põ( ˜‰~Œ~ð 	:Ø0Ð0Ñ2Ô2ˆHØ/Ð/°Ñ9Ô9Ð9ð
	Ý-¨dÑ3Ô3ð *ð *Ø�D˜$Ð) &Ð)Ð)�ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *øøå"ð 	Dð 	Dð 	DØ,Ð,Ð-BÑCÔCÐCÐCÐCÐCÐCÐCøøøøÝð 	ð 	ð 	Ý�MŠMÐFÈÑMÔMÐMØð	øøøð ,Ð+Ø×<Ò<Ø�4˜¨6¯:ª:°hÑ+?Ô+?ð =ñ ô ñ
ô 
ð 	
s^  È(I	É	IÉIÏ#	O8Ï8O<Ï?O<Ó'T0Ó2TÔ T0ÔT	ÔT0Ô T	Ô!T0Ô0T4Ô7T4Ø#X, Ø,
YØ6YÙYÝ2^Þ^Þ^Þ#!_ß_"ß%_"à`;à;`?á`?ä,Ag
 å8f>å;f'æf>æg
 æ'f+	æ+f>æ.f+	æ/f>æ2g
 æ>gçg
 çgçg
 ç

h6çAh1è)h6è/h1è1h6ê'k ê6	kê?k ëkëk ëkëk ë
lë!
k1ë+lë1*lÚ
debugprimsr  r2  ÚxlaÚvisionÚ	torchtextÚ
torchaudioÚ	quantizedc                ó`   — | j         sdS |j        | j        v p|                     ¦   «         dk    S )NFzfbgemm::gmm)r¡  Ú	namespaceÚ+_can_run_unsafe_fallback_allowed_namespacesr•  ©rx   r„   s     r`   r  z&FakeTensorMode.can_run_unsafe_fallback+  s;   € ØÔ*ð 	Ø�5ð
 ŒN˜dÔNÐNð ,Ø�yŠy‰{Œ{˜mÒ+ð	
r_   rÝ  r  r  r	  r2   ú%tuple[list[object], list[FakeTensor]]c                óN   ‡ ‡‡‡‡‡‡— g Šdˆˆˆˆˆˆ fd„Šˆfd„‰D ¦   «         }|‰fS )zß
        Checks if the list of tensors are fake tensors.
        If not, try to convert them to fake tensors.
        Returns the original args, kwargs, and a flattened list of (args, kwargs) that are fake tensors.
        rÌ   rE   rd   úT | FakeTensorc                ó¼  •— t          | t          ¦  «        s| S ‰
                     | ¦  «        �st          ‰	d¦  «        rWt          j        j        ‰	j        v r?t           	                    ‰‰¦  «        \  }}t          dt          ‰	||¦  «        › �¦  «        ‚t          j        €‰
j        nt          j        }|swt          | t          ¦  «        r#| j        ‰
urt          d| j        › d‰
› �¦  «        ‚t           	                    ‰‰¦  «        \  }}t          dt          ‰	||¦  «        › �¦  «        ‚‰                     ‰
| ¦  «        }n| }‰                     |¦  «         |S )Nr  zECan't call metadata mutating ops on non-Fake Tensor inputs. Found in z"Mixing fake modes NYI x.fake_mode=z	 vs self=zuPlease convert all Tensors to FakeTensors first or instantiate FakeTensorMode with 'allow_non_fake_inputs'. Found in )rÓ   r   rÀ  rÄ  rl   r  r  r  r  rÀ  r×   r"   rÿ  rœ   r¢  rÔ   r±   ru  rÄ   )rÌ   r÷  rø  r¢  rº   r	  rÝ  r3  r  r„   rx   s        €€€€€€r`   ÚvalidatezFFakeTensorMode.validate_and_convert_non_fake_tensors.<locals>.validateD  sœ  ø€ Ý˜a¥Ñ(Ô(ð Ø�ð ×#Ò# AÑ&Ô&ñ Ý˜4 Ñ(Ô(ð ­U¬YÔ-CÀtÄyÐ-PÐ-PÝ#)×#8Ò#8¸ÀIÑ#NÔ#N‘L�D˜&Ý(ð BÕ`kÐlpÐrvÐx~Ñ`Ô`ð  Bð  Bñô ð õ
 'ÔEÐMð Ô.Ð.å(ÔGð &ð
 -ð 	Ý! !¥ZÑ0Ô0ð °Q´[ÈÐ5LÐ5LÝ,Ø]ÀÄÐ]Ð]ÐW[Ð]Ð]ñô ð õ $*×#8Ò#8¸ÀIÑ#NÔ#N‘L�D˜&Ý(ðdÝBMÈdÐTXÐZ`ÑBaÔBaðdð dñô ð ð
  ×0Ò0°°qÑ9Ô9��à�à!×(Ò(¨Ñ-Ô-Ð-ØˆJr_   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r^   r^   )r¿   rl  rV  s     €r`   r  zHFakeTensorMode.validate_and_convert_non_fake_tensors.<locals>.<listcomp>f  s!   ø€ Ð9Ð9Ð9¨!˜(˜( 1™+œ+Ð9Ð9Ð9r_   )rÌ   rE   rd   rT  r^   )rx   r„   rÝ  r  r	  Úvalidated_argsr3  rV  s   ````` @@r`   r  z4FakeTensorMode.validate_and_convert_non_fake_tensors6  sp   øøøøøøø€ ð 35Ðð 	ð  	ð  	ð  	ð  	ð  	ð  	ð  	ð  	ð  	ð  	ðD :Ð9Ð9Ð9¨yÐ9Ñ9Ô9ˆØÐ4Ð4Ð4r_   r½  r‡   r†   r/   c                ó^   ‡ ‡‡‡‡‡‡— ‰ j         Šd ŠdŠdˆˆˆˆˆˆˆ fd„}t          ||¦  «        S )NFrô  rE   rd   rT  c                óz  •‡ — t          ‰ t          ¦  «        s‰ S ‰€t                               ‰‰¦  «        \  ŠŠ‰                     ‰ ¦  «        }|r7t          j        ‰ j        ‰k    ˆˆ fd„¦  «         t          t          ‰ ¦  «        S ‰�1‰r‰ 
                    ‰‰ ¦  «        S ‰                     ‰‰ ‰p‰¦  «        S ‰ S )Nc                 ó   •— d‰j         › d‰ › �S )Nz-FakeTensor is wrapped to wrong device, found z, expected r  )r…   rô  s   €€r`   r�  zZFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrap.<locals>.<lambda>‡  s   ø€ ÐpÈAÌHÐpÐpÐanÐpÐp€ r_   )rÓ   r   rÔ   r7  rÀ  rl   Ú_checkr‡   r   rE   ru  r|  )	rô  rÀ  r…   rÝ  r‡   r  r„   r6  rx   s	   ` €€€€€€€r`   ÚwrapzHFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrapv  sî   øø€ õ ˜a¥Ñ(Ô(ð Ø�àÐ$õ ×2Ò2°4¸ÑCÔCñØ!Ø*ð ×*Ò*¨1Ñ-Ô-ˆKØð Ý”Ø”H Ò-ØpÐpÐpÐpÐpñô ð õ �A˜q‘z”zÐ!ØÐ&Ø)ð ð %×5Ò5°d¸AÑ>Ô>Ð>à$×9Ò9Ø˜a Ð!8¨=ñô ð ð
 �r_   ©rô  rE   rd   rT  )rª  r0   )	rx   r½  r„   r  r‡   r]  r…   rÝ  r6  s	   ` ``` @@@r`   r1  z:FakeTensorMode.wrap_meta_outputs_with_default_device_logici  so   øøøøøøø€ ð Ô.ˆ	ð ˆØ!&Ðð 	ð  	ð  	ð  	ð  	ð  	ð  	ð  	ð  	ð  	ð  	ð  	õD ˜˜aÑ Ô Ð r_   r<  r=  rX  r'   c               ó„  — dd l }ddlm} |€-| j        }| j        st          d¦  «        ‚| xj        dz  c_         |j         ||d¦  «        ¦  «        }|j        j         	                    d¦  «        }| j
        €t          d¦  «        ‚| j
                             | j
                             ||¬¦  «        ||¬¦  «        }|S )	Nr   )ÚNestedIntNodez4should only be called while FakeTensorMode is activer5   Úintermediate_offsets_or_lengthszself.shape_env must not be None)Úvalr6  )ÚsymrL  r6  )r¶  Ú!torch.nested._internal.nested_intr`  rŸ  r²  r×   r   r®  r6  ÚEphemeralSourcer:  rl  Úcreate_symbol)rx   r=  rl   r`  rL  ÚsrcÚrets          r`   r>  z)FakeTensorMode.create_symbolic_nested_intš  sþ   € ð
 	4Ð3Ð3Ð3ØCÐCÐCÐCÐCÐCàÐØÔ4ˆLØÔ#ð Ý$ØJñô ð ð Ð%Ô%¨Ñ*Ð%Ô%ØˆuŒ|˜M˜M¨,¸Ñ:Ô:Ñ;Ô;ˆàŒmÔ"×2Ò2Ð3TÑUÔUˆØŒ>Ð!Ý Ð!BÑCÔCÐCØŒn×.Ò.Ø”×,Ò,ØØð -ñ ô ð Øð /ñ 
ô 
ˆð ˆ
r_   c                óH   — t           j        j        |j        v rdS || j        v S r¥   )rl   r  Ú	view_copyr  Ú_cpp_meta_supports_symintrQ  s     r`   r  z'FakeTensorMode.cpp_meta_supports_symintÌ  s'   € ÝŒ9Ô $¤)Ð+Ð+Ø�4Ø�tÔ5Ð5Ð5r_   r   c                ó¨   — |                      ¦   «         t          k    o5t          |¦  «         o%|                      |¦  «         o|j        j        dk    S rÌ  )ÚnumelÚCONSTANT_NUMEL_LIMITr   rÀ  r‡   rÕ   r¿  s     r`   rÛ  zFakeTensorMode.may_turn_constÓ  sW   € à�GŠG‰IŒIÕ-Ò-ð (Ý! !Ñ$Ô$Ð$ð(à×$Ò$ QÑ'Ô'Ð'ð(ð ”” Ò'ð		
r_   r3  úSequence[FakeTensor]c                óÈ  — t          d„ |D ¦   «         ¦  «        }t          |¦  «        }|r³|                     ¦   «         r¡t          |||d¬¦  «        \  }}|                     ¦   «         D ]x\  }	}
|	dk    s|                     |	¦  «        r|	nd}	|                      |
¦  «        r;|                     |	¦  «        r&|
j        �| j         	                    |
j        ¦  «         Œud S d S d S )Nc              3  ó(   K  — | ]}|j         d uV — Œd S rŸ   rD  rÖ  s     r`   rÂ   zAFakeTensorMode.invalidate_written_to_constants.<locals>.<genexpr>â  r×  r_   Tr  Úinputrx   )
r$  ró   Ú
is_mutabler$   r¢   Úhas_argumentrÀ  r  rª  r%  )rx   r„   r3  r÷  rø  Úany_constantÚschema_inforÊ   r!  Úkrá   s              r`   r  z.FakeTensorMode.invalidate_written_to_constantsÛ  s+  € õ ÐQÐQÐ;PÐQÑQÔQÑQÔQˆÝ% dÑ+Ô+ˆØð 	W˜K×2Ò2Ñ4Ô4ð 	WÝ.ØØØØ-1ð	ñ ô ‰MˆAˆzð #×(Ò(Ñ*Ô*ð Wð W‘��1Ø˜wš,˜,¨+×*BÒ*BÀ1Ñ*EÔ*E˜,�A�AÈF�à×$Ò$ QÑ'Ô'ðWà#×.Ò.¨qÑ1Ô1ðWð œ
Ð.àÔ.×JÒJÈ1Ì:ÑVÔVÐVøð	Wð 	Wð 	Wð 	WðWð Wr_   )r�  r6  r7  r8  r   r6  r<  r7  r=  r8  c               óŒ   — | j         }|€| j        }|r|�t          d¦  «        ‚d }| j                             | |||||¬¦  «        S )Nz2cannot set both static_shapes and symbolic_context)r:  r6  r7  r8  )r:  r�  r×   rª  ru  )rx   r   r�  r6  r7  r8  r:  s          r`   r  zFakeTensorMode.from_tensorô  su   € ð &*¤^ˆ	ØÐ Ø Ô.ˆMØð 	ØÐ+Ý$ØHñô ð ð ˆIØÔ)×:Ò:ØØØØØ-Øð ;ñ 
ô 
ð 	
r_   )r¡  re   r¢  re   r:  r;  r�  r›   r  re   rd   rr   r}   )ræ   rH   rd   r½  )rd   re   )rd   rc   rF  )rd   r   )rÕ  rÖ  r×  rØ  rÙ  rÚ  rd   rr   )rd   r‘  )
rÜ  r6   r„   r@   r÷  r  rø  r  rd   ro  )r„   r@   r÷  r  rø  r  rd   rr   )
r[  r\  r÷  r#  rÜ  r6   rf  r\  rd   rr   )rÜ  r6   rÀ   ro  r„   r@   r÷  r  rø  r  r÷  r,  rd   rr   )rÜ  r6   rÀ   ro  r„   r@   r÷  r  rø  r  r÷  rÔ   rd   r�  )rÜ  r6   rÀ   ro  r„   r@   r÷  r  rø  r  r÷  r,  rd   r‡  )rÜ  r6   rö  r�  rÀ   ro  r„   r@   r÷  r  rd   r,  )rÜ  r6   rö  r‡  rÀ   ro  r„   r@   r÷  r  rd   rg  )r÷  rg  r„   r@   r  r  r÷  r  rø  r  rd   rr   )
r„   r@   r}  r-   râ   rH   r~  rH   rd   r  )r„   r@   rª  rH   r«  rH   r¬  rH   r­  rH   rd   r®  )
r„   r@   r  r  r÷  r  rø  r  rd   r,  ©r„   r@   rd   re   )
r„   r@   rÝ  r  r  r  r	  r2   rd   rR  )
r½  rH   r„   r@   r  r  r‡   r†   rd   r/   )r=  rX  rd   r'   r1  )
r„   r@   r3  ro  r÷  r  rø  r  rd   rr   )r   r   r�  r›   r6  r<  r7  r=  r8  re   rd   rÔ   )NrZ   r[   r\   r™  r]   rš  r›  r   rq  rœ  r»  r‰  rŸ  r   ry   r¼  rÀ  r}  rÅ  rÊ  r3   r#   r  rÒ  rÜ  rK  rá  rã  rå  rø  rè  r"  rb  r3  rI  ró  rf  rñ  rò  rÌ  r©  rÆ  rì  r¨   rP  r  r  r1  r>  r2  r„  rQ  r^  r  Úas_strided_scatterÚ
as_stridedÚas_strided_r…  ÚdetachÚview_as_realÚview_as_complexra  Úsource_Storage_storage_offsetÚ(_sparse_coo_tensor_with_dims_and_tensorsrk  Úviewr  Úslicer   r   r  Ú
lift_freshÚlift_fresh_copyr  rÛ  r  r  rŒ   r�   s   @r`   r²   r²   ˜  sš  ø€ € € € € € Ø:<€EÐ<Ð<Ð<Ñ<Ø€JÐÐÐÑØ€LÐÐÐÑØ%0 [°Ñ%5Ô%5€NÐ5Ð5Ð5Ñ5ð €E€N€N€N�NØ!&ÐÐ&Ð&Ð&Ñ&ØÐÐÑØÐÐÑØÐÐÑØÐÐÑð !#ÐÐ"Ð"Ð"Ñ"Ø&(ÐÐ(Ð(Ð(Ñ(ð
 (,Ø&+Ø%)Ø%)ð ð![Dð [Dð [Dð [Dð [Dð [Dð [Dð [DðzDð Dð Dð DðAð Að Að Að ð

ð 

ð 

ñ „Xð

ð ðð ð ñ „Xðð
 ð "$Ø'5 ~Ñ'7Ô'7ðð ð ð ñ „Uðð&ð ð ð ð ð ð6Vð Vð Vð Vð Vð Vð$ ðð ð ñ „[ðð ð	
ð 	
ð 	
ñ „[ð	
ð ðð ð ñ „[ðð^ð ^ð ^ð ^ð@5ð 5ð 5ð 5ðnDDð DDð DDð DDðLA#ð A#ð A#ð A#ðF(Cð (Cð (Cð (CðTKð Kð Kð KðZið ið ið iðVQ8ð Q8ð Q8ð Q8ðfð ð ð ð22ð 2ð 2ð 2ðp "$Ø'5 ~Ñ'7Ô'7ðBð Bð Bð Bð BðBoð oð oð oðbJ=ð J=ð J=ð J=ðXF
ð F
ð F
ð F
ðZ 3>°+ØØØØØØØØñ	3ô 	3Ð/ð	
ð 	
ð 	
ð 	
ð15ð 15ð 15ð 15ðf/!ð /!ð /!ð /!ðd -1ðð ð ð ð ð ð< !, ØŒ
Ô ØÔÔ"ØÔÔ'ØŒÔØÔÔ ØŒ
ÔØŒÔØÔÔ!ØÔÔ$ØŒ	Ô/ØÔ5Ô=ñ!ô !Ðð +6¨+ØŒ	ÔØÔÔ!ØŒ
Ôñ+ô +Ð'ð6ð 6ð 6ð 6ð
 ˆ{˜4œ?Ô2°DÔ4HÔ4PÑQÔQ€Hð
ð 
ð 
ð 
ðWð Wð Wð Wð: &*Ø $Ø37Øð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r_   rÜ  r6   r÷  c                ó
  — ddl m}m} t          j        j        j                             ¦   «         du}|r ||¦  «        D ]}t          d¦  «        ‚dS  ||¦  «        D ]$}|j	        D ]}|| j
        vrt          d¦  «        ‚ŒŒ%dS )a  
    Validate symbolic content in output and raise _BypassDispatchCache if
    caching should be bypassed.

    Args:
        state: Cache key state containing known symbols
        output: Output to validate
        proxy_mode_active: Whether PROXY dispatch mode is currently active

    Raises: _BypassDispatchCache: If output contains symbolic content that
        prevents caching

    Details:

    If our output contains any symbols that didn't appear in the input then we
    need to bypass. Usually this will be unbacked symbols which can't be
    properly reconstructed but there could be "weird" cases where backed symbols
    spontaneously appear (from non-input state)?

    If we're proxy (symbol) tracing and the output contains ANY symbols then we
    need to bypass. The problem is that ProxyTorchDispatchMode relies on SymNode
    object identity and being able to see the construction of SymNodes.

    We could improve the proxy tracing case in a few ways:

    1. If the output SymNodes are directly copied from inputs then this is
       actually fine - they're already tracked. This would probably be the
       biggest bang/buck.

    2. If the output (tensors) are all direct copies of the inputs then this is
       also fine - since they're inputs they must be tracked. We already compute
       this we just don't plumb it around enough.

    3. If the output SymNodes are already tracked by the proxy then this is also
       actually fine - they're properly tracked. This probably wouldn't be
       common since for most outputs we use torch.empty_strided() and recompute
       strides.

    4. We could use the proxy to track "how" the SymNodes were computed and when
       using the cache we could "replay" them properly to teach the proxy how to
       build them.
    r   )Ú_iterate_exprsÚ_iterate_nodesNzProxy mode with SymNode outputzunrepresented symbol in output)rQ  r‡  rˆ  rl   rû  rü  rý  rþ  r�  r‡  r  )rÜ  r÷  r‡  rˆ  r  rÊ   rè  rt  s           r`   r1  r1    sá   € ðZ UÐTÐTÐTÐTÐTÐTÐTå”Ô&Ô3×BÒBÑDÔDÈDÐP€JØð 
Qð  � Ñ'Ô'ð 	Ið 	IˆAÝ&Ð'GÑHÔHÐHð	Ið 	Ið  � Ñ'Ô'ð 	Qð 	QˆAØœ.ð Qð Q�Ø Ô!4Ð4Ð4Ý.Ð/OÑPÔPÐPð 5ðQð	Qð 	Qr_   r  r  r	  Úorig_not_implemented_exceptionrq  c                ó  ‡ ‡‡
‡‡— t           j        j        |j        v r‰‚i Š
t	          ¦   «         5  d	ˆ ˆ
fd„Šˆfd„|D ¦   «         }t
                               ||¦  «        \  }} ||i |¤Ž}d d d ¦  «         n# 1 swxY w Y   t          ¦   «         Š|D ]R}t          |t          ¦  «        r;t          |¦  «        s,‰                     |                     ¦   «         j        ¦  «         ŒSd
ˆ ˆ
ˆˆfd„}	t
                               |	|¦  «        S )Nrô  rE   rd   ú
T | Tensorc                óì   •— ‰                      | ¦  «        r]t          j        | | j        ¬¦  «        }| j        r'|                     |                      ¦   «         ¦  «         | ‰t          |¦  «        <   |S | S )Nr  )rÀ  rl   Ú
zeros_likerÍ  r  Ú_coalesced_rW  r¥  )rô  rº   r±   Ú	inp_implss     €€r`   Úto_real_tensorz+run_fallback_kernel.<locals>.to_real_tensore  sp   ø€ Ø×$Ò$ QÑ'Ô'ð ÝÔ& q°´Ð?Ñ?Ô?�Ø”;ð 6Ø—O’O A§N¢NÑ$4Ô$4Ñ5Ô5Ð5Ø%&�	�"˜S™'œ'Ñ"Ø�
ØˆHr_   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r^   r^   )r¿   rl  r�  s     €r`   r  z'run_fallback_kernel.<locals>.<listcomp>n  s#   ø€ Ð:Ð:Ð:¨1�^�^ AÑ&Ô&Ð:Ð:Ð:r_   rT  c                óX  •— t          | ¦  «        ‰vrAt          | t          ¦  «        r,t          | ¦  «        s|                      ¦   «         j        ‰v r‰‚t          | t          ¦  «        rAt          | ¦  «        ‰v r‰t          | ¦  «                 S ‰j                             ‰| ¦  «        S | S rŸ   )r¥  rÓ   r   r   r  Ú_cdatarª  ru  )rô  r±   r�  r‰  Ústoragess    €€€€r`   Úmap_outz$run_fallback_kernel.<locals>.map_out  s«   ø€ Ýˆa‰5Œ5˜	Ð!Ð!Ý�q�&Ñ!Ô!ð "å! !Ñ$Ô$ð "ð × Ò Ñ"Ô"Ô)¨XÐ5Ð5à0Ð0å�a�Ñ Ô ð 	Ý�!‰uŒu˜	Ð!Ð!Ø ¥ A¡¤Ô'Ð'à Ô6×GÒGÈ	ÐSTÑUÔUÐUàˆHr_   )rô  rE   rd   r‹  r^  )rl   r  r  r  r)   r  rÀ  r²  rÓ   r   r   r   r  r“  r0   )r±   r„   r  r	  r‰  r÷  rø  r½  rô  r•  r�  r”  r�  s   `   `     @@@r`   r  r  Q  s•  øøøøø€ õ „yÔ ¤Ð*Ð*Ø,Ð,ð €Iõ 
‰Œð "ð "ð	ð 	ð 	ð 	ð 	ð 	ð 	ð ;Ð:Ð:Ð:°	Ð:Ñ:Ô:ˆ	Ý×,Ò,¨Y¸	ÑBÔB‰ˆˆfàˆD�$Ð!˜&Ð!Ð!ˆð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "õ  &)¡U¤U€Hàð 8ð 8ˆÝ�a�Ñ Ô ð 	8Ý  Ñ#Ô#ð 8Ø—’˜Q×-Ò-Ñ/Ô/Ô6Ñ7Ô7Ð7øðð ð ð ð ð ð ð ð õ  �?Š?˜7 AÑ&Ô&Ð&s   °<A8Á8A<Á?A<r™  r˜  rÀ   rö  Ú_DispatchCacheEntryc                ó8   — |                      ¦   «          || |<   d S rŸ   )r|  ©r™  rÀ   rö  s      r`   rï  rï  ’  s#   € ð
 ×ÒÑÔÐØ€Eˆ#�J€J€Jr_   c                ó   — || |<   d S rŸ   r^   r˜  s      r`   rð  rð  ›  s   € ð
 €Eˆ#�J€J€Jr_   c                  ó$   — e Zd Zdd„Z	 	 ddd„ZdS )ÚFakeCopyModer±   r²   rd   rr   c                ó   — || _         d S rŸ   )r±   )rx   r±   s     r`   ry   zFakeCopyMode.__init__¦  s   € Ø"ˆŒˆˆr_   r^   Nr„   r@   r  r  r÷  r  rø  úMapping[str, object] | NonerÔ   c                ó”  — |r|ni }|t           j        j        j        u rit	          |d         t
          ¦  «        s%t          dt          |d         ¦  «        › �¦  «        ‚ || j         	                    |d         d¬¦  «        fi |¤ŽS |t
          j
        u rôt          |¦  «        dk    st          |¦  «        dk    r0t          dt          |¦  «        › dt          |¦  «        › d�¦  «        ‚t          t
          |d         ¦  «        }t          t          t          t          f         |d	         ¦  «        }t!          |¦  «        |v r|t!          |¦  «                 S | j         	                    |d¬¦  «        }||t!          |¦  «        <   |S t           j                             ¦   «         5   ||i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S )
Nr   ro  T)r�  é   z3Expected 2 args and 0 kwargs for __deepcopy__, got z
 args and z kwargsr5   )rl   rm   Ú
TensorBaser  rÓ   r   r×   rÕ   r±   r  Ú__deepcopy__r  r   r¦   rq  rÔ   r¥  ÚDisableTorchFunctionSubclass)rx   r„   r  r÷  rø  r   Úmemorº   s           r`   Ú__torch_function__zFakeCopyMode.__torch_function__©  s  € ð "Ð)�� rˆð •5”8Ô&Ô,Ð,Ð,Ý˜d 1œg¥vÑ.Ô.ð NÝ$Ð%L½TÀ$ÀqÄ'¹]¼]Ð%LÐ%LÑMÔMÐMØ�4Ø”×*Ò*¨4°¬7À$Ð*ÑGÔGðð ØKQðð ð ð •VÔ(Ð(Ð(Ý�4‰yŒy˜AŠ~ˆ~¥ V¡¤°Ò!1Ð!1Ý$ØsÍ#ÈdÉ)Ì)ÐsÐsÕ_bÐciÑ_jÔ_jÐsÐsÐsñô ð õ �& $ q¤'Ñ*Ô*ˆFÝ��S¥*˜_Ô-¨t°A¬wÑ7Ô7ˆDå�&‰zŒz˜TÐ!Ð!Ø�B˜v™JœJÔ'Ð'à”.×,Ò,¨VÀ4Ð,ÑHÔHˆCØ"ˆD•�F‘”ÑØˆJå”×6Ò6Ñ8Ô8ð -ð -Ø�t˜TÐ, VÐ,Ð,ð-ð -ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   Æ(F=Æ=GÇG)r±   r²   rd   rr   )r^   N)
r„   r@   r  r  r÷  r  rø  r�  rd   rÔ   )rZ   r[   r\   ry   r¤  r^   r_   r`   r›  r›  ¥  sI   € € € € € ð#ð #ð #ð #ð "$Ø.2ð -ð  -ð  -ð  -ð  -ð  -ð  -r_   r›  r÷  c                óâ   — t          | ¦  «        dk    st          | d         t          ¦  «        st          d¦  «        ‚| d         j        j        rt          j        d¦  «        S | d         j        S )Nr5   r   z<Expected exactly one FakeTensor argument for _device_handlerr{  )	r  rÓ   rÔ   r×   r±   r‰  rl   r‡   rÍ  ©r÷  s    r`   Ú_device_handlerr§  Ì  sk   € õ ˆ4�y„y�A‚~€~�Z¨¨Q¬µÑ<Ô<€~ÝØJñ
ô 
ð 	
ð ˆA„wÔÔ-ð #ÝŒ|˜FÑ#Ô#Ð#à�AŒwÔ"Ð"r_   c                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S rŸ   )rÉ  rÊ  s     r`   rÂ   z&_check_for_subclass.<locals>.<genexpr>è  s+   è è € Ð=Ð=¨aÕ& qÑ)Ô)Ð=Ð=Ð=Ð=Ð=Ð=r_   )r$  )r  s    r`   r  r  ç  s   € ÝÐ=Ð=°9Ð=Ñ=Ô=Ñ=Ô=Ð=r_   c                ó  — t          | t          ¦  «        rdS t          | t          ¦  «        sdS t          | ¦  «        }|t          u rdS t	          |t
          j        j        ¦  «        o|j        t          j        u }|rdS dS )NFT)	rÓ   rÔ   r   rÕ   r	  rl   rT  rU  r  )rÌ   Úx_typeÚ#is_metadata_only_parameter_subclasss      r`   rÉ  rÉ  ë  sŒ   € Ý�!•ZÑ Ô ð ØˆuÝ�a�Ñ Ô ð Øˆuå�!‰WŒW€FØ•ÐÐØˆuõ 	�6�5œ8Ô-Ñ.Ô.ð 	CØÔ%­Ô)BÐBð (ð +ð Øˆuàˆ4r_   c                óŠ   — t          d„ t          t          | d         ¦  «                             ¦   «         D ¦   «         ¦  «        S )Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S rŸ   ©rq  ©r¿   rè  s     r`   rÂ   z<lambda>.<locals>.<genexpr>  s9   è è € ð 4ð 4Ø�ˆA‰Œð4ð 4ð 4ð 4ð 4ð 4r_   r   )r`  r   r   r–  r¦  s    r`   r�  r�    sF   € ­eð 4ð 4Ý�V T¨!¤WÑ-Ô-×2Ò2Ñ4Ô4ð4ñ 4ô 4ñ /ô /€ r_   c                óŠ   — t          d„ t          t          | d         ¦  «                             ¦   «         D ¦   «         ¦  «        S )Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S rŸ   r¯  r°  s     r`   rÂ   z<lambda>.<locals>.<genexpr>  s9   è è € ð 6ð 6Ø�ˆA‰Œð6ð 6ð 6ð 6ð 6ð 6r_   r   )r`  r   r   rP  r¦  s    r`   r�  r�    sF   € µð 6ð 6Ý�V T¨!¤WÑ-Ô-×4Ò4Ñ6Ô6ð6ñ 6ô 6ñ 1ô 1€ r_   c                óv   — t          t          t          | d         ¦  «                             ¦   «         ¦  «        S r!  )rq  r   r   rS  r¦  s    r`   r�  r�    s-   € ½Ý�V�T˜!”WÑÔ×,Ò,Ñ.Ô.ñ9ô 9€ r_   )Ú_device_not_kwarg_opsÚ_is_tensor_constructorÚ_like_tensor_constructorsÚcontains_tensor_typesr  r0  r/  r"  c                ód   — | t           j        v r!t           j                             | ¦  «         d S d S rŸ   )r²   r™  rÃ   rú  s    r`   r  r  %  s5   € Ø
�nÔ"Ð"Ð"ÝÔ× Ò  Ñ%Ô%Ð%Ð%Ð%ð #Ð"r_   c                 óî  — t                                d¦  «         t                                dt          j        ¦  «         t                                dt          j        ¦  «         t          j        } | r€t                                d¦  «         t          d„ | D ¦   «         ¦  «        }t          |                      ¦   «         d„ ¬¦  «        D ]*\  }}t                                d|d	z   |› d
�|¦  «         Œ)d S d S )NzFakeTensor cache stats:z  cache_hits: %sz  cache_misses: %sz  cache_bypasses:c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rŸ   )r  )r¿   rw  s     r`   rÂ   z#dump_cache_stats.<locals>.<genexpr>2  s(   è è € Ð-Ð-˜q•C˜‘F”FÐ-Ð-Ð-Ð-Ð-Ð-r_   c                ó   — | d          S rt   r^   )r8  s    r`   r�  z"dump_cache_stats.<locals>.<lambda>3  s   € ¸A¸a¼D¸5€ r_   rú  z    %-*s %sr5   rÔ  )	r¤  Úinfor²   rš  r›  rœ  ÚmaxÚsortedr¢   )r•  Úwidthrw  rá   s       r`   Údump_cache_statsrÀ  *  sé   € å‡H‚HÐ&Ñ'Ô'Ð'Ý‡H‚HÐ¥Ô!:Ñ;Ô;Ð;Ý‡H‚HÐ!¥>Ô#>Ñ?Ô?Ð?ÝÔ,€HØð ;Ý�ŠÐ$Ñ%Ô%Ð%ÝÐ-Ð- HÐ-Ñ-Ô-Ñ-Ô-ˆÝ˜8Ÿ>š>Ñ+Ô+°°ÐAÑAÔAð 	;ð 	;‰DˆAˆqÝ�HŠH�] E¨A¡I°!¨w¨w¨w¸Ñ:Ô:Ð:Ð:ð	;ð ;ð	;ð 	;r_   rë   r™  útorch._ops.OpOverloadr­  útorch.Tensorc                óÎ  ‡ ‡— dˆfd„}|                      ¦   «         dk    r  |d|                      ¦   «         › �¦  «         ˆ fd„t          |                     ¦   «         ¦  «        D ¦   «         }d	g|                     ¦   «         z  }d
„ t          |                     ¦   «         ¦  «        D ¦   «         }|                     d„ ¬¦  «         d}|}|D ]T\  }	}
|	|k    r) |d|j        › d|                     ¦   «         › d�¦  «         |||
<   ||j        |
         z  }|||
         z  }ŒU‰ 5  t          j        |||j	        |j
        |j        ¬¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr€   rc   rd   rr   c                ó:   •— t          d‰j        › d| › d�¦  «        ‚)NzQpropagate_real_tensors: we cannot infer a Fake kernel (meta kernel) for operator z	 because z>. Please use torch.library.register_fake to add a Fake kernel.)rq  r¢  )r€   r™  s    €r`   Úunsupportedz1_infer_fake_from_real_tensor.<locals>.unsupported:  sA   ø€ ÝðLØ*,¬(ðLð LØ=CðLð Lð Lñ
ô 
ð 	
r_   r   z'a return has a non-zero storage offset c                ób   •— g | ]+}t           j        j                             ‰j        ¦  «        ‘Œ,S r^   )rl   r  r+  Úallocate_sizer:  )r¿   rÊ   rë   s     €r`   r  z0_infer_fake_from_real_tensor.<locals>.<listcomp>O  s>   ø€ ð ð ð àõ 	ŒÔ ×.Ò.¨t¬~Ñ>Ô>ðð ð r_   r’  c                ó   — g | ]	\  }}||f‘Œ
S r^   r^   )r¿   rC  rè  s      r`   r  z0_infer_fake_from_real_tensor.<locals>.<listcomp>\  s    € ÐCÐCÐC™F˜C ��3ˆxÐCÐCÐCr_   c                ó$   — | d         | d          fS )Nr   r5   r^   )rÌ   s    r`   r�  z._infer_fake_from_real_tensor.<locals>.<lambda>]  s   €   !¤ q¨¤t e˜}€ r_   rú  r5   z(a return was not dense in memory (sizes z	 strides ú))r‡   r]  r	  )r€   rc   rd   rr   )rS  r@  r_  rA  rP  ÚsortrO  rl   r^  r‡   r]  r	  )rë   r™  r­  rÅ  Ú
fake_shapeÚfake_stridesr”  ÚexpectedÚfake_striderè  rC  s   ``         r`   r¥  r¥  7  s  øø€ ð
ð 
ð 
ð 
ð 
ð 
ð ×ÒÑ Ô  AÒ%Ð%ØˆØQ°h×6MÒ6MÑ6OÔ6OÐQÐQñ	
ô 	
ð 	
ðð ð ð å�x—|’|‘~”~Ñ&Ô&ðñ ô €Jð �4˜(Ÿ,š,™.œ.Ñ(€LØCÐC¥i°·²Ñ0AÔ0AÑ&BÔ&BÐCÑCÔC€GØ‡L‚LÐ,Ð,€LÑ-Ô-Ð-Ø€HØ€KØð 4ð 4‰ˆˆ3Ø�Š=ˆ=ØˆKØh¸8¼>ÐhÐhÐT\×TcÒTcÑTeÔTeÐhÐhÐhñô ð ð (ˆ�SÑØ˜hœn¨SÔ1Ñ1ˆØ! J¨s¤OÑ3ˆˆà	ð 
ð 
ÝÔ"ØØØ”?Ø”.Ø”?ð
ñ 
ô 
ð
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   Ä%(EÅEÅ!Er   c                ó   ‡ ‡— ‰ j         €t          d¦  «        ‚t                               |¦  «        \  }}t	          d„ |D ¦   «         ¦  «        st          d‰j        › �¦  «        ‚ˆ ˆfd„|D ¦   «         }t                               ||¦  «        S )Nzmode.shape_env must not be Nonec              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rŸ   )rÓ   rl   r   r
  s     r`   rÂ   z5inferred_fake_kernel_from_real_out.<locals>.<genexpr>}  s.   è è € ÐBÐB¨q�z˜!�Uœ\Ñ*Ô*ÐBÐBÐBÐBÐBÐBr_   zPpropagate_real_tensors: we don't support operators that return non-Tensors. Got c                ó2   •— g | ]}t          ‰‰|¦  «        ‘ŒS r^   r¹  )r¿   ræ   rë   r™  s     €€r`   r  z6inferred_fake_kernel_from_real_out.<locals>.<listcomp>ƒ  s&   ø€ ÐVÐVÐVÀ1Õ1°$¸¸AÑ>Ô>ÐVÐVÐVr_   )r:  r×   r  r¿  r  rq  rñ   rÀ  )rë   r™  r­  Úreal_flat_outÚspecÚfake_flat_outs   ``    r`   r'  r'  s  s±   øø€ ð „~ÐÝÐ>Ñ?Ô?Ð?õ
 !×-Ò-¨hÑ7Ô7Ñ€M�4ÝÐBÐB°MÐBÑBÔBÑBÔBð 
Ýð-Ø "¤
ð-ð -ñ
ô 
ð 	
ð
 WÐVÐVÐVÐVÈÐVÑVÔV€MÝ× Ò  °Ñ5Ô5Ð5r_   )rb   rc   rd   re   )r¢   rE   rd   r£   )rd   r©   )r±   r²   rd   r³   )r¸   r¹   rº   r»   rd   r»   )rÌ   rH   rd   rÍ   )ræ   rH   rd   rç   )r„   r@   rd   rî   ry  )rý   rþ   rÿ   r/   rd   r   )ræ   rH   rd   re   rE  )ræ   r   rd   rN  )rÜ  r6   r÷  rÔ   rd   rr   )r±   r²   r„   r@   r  r  r	  r/   r‰  rq  rd   rÔ   )r™  r˜  rÀ   ro  rö  r–  rd   rr   )r÷  r  rd   r†   )r  r  rd   re   )rÌ   rH   rd   re   )rÀ   ro  rd   rr   r}   )rë   r²   r™  rÁ  r­  rÂ  rd   rÂ  )rë   r²   r™  rÁ  r­  r   rd   r   )ÕÚ
__future__r   Úatexitr[  r^  r  ry  rf  r�  Ú	threadingr³  r  Útypingr    Úcollectionsr   r   r   r   r   r	   r
   r   r   Útyping_extensionsr   r   r   r   rl   Útorch._library.utilsr  r  r  r   r   r   r   Útorch._C._functorchr   r   Ú"torch._library.fake_class_registryr   Útorch._library.fake_profiler   Útorch._loggingr   Útorch._opaque_baser   Útorch._prims_commonr   Útorch._subclasses.meta_utilsr   r   r   r   r    Útorch._utilsr!   r"   Útorch.fx.immutable_collectionsr#   Útorch.fx.operator_schemasr$   Ú torch.multiprocessing.reductionsr%   Útorch.overridesr&   Útorch.typesr'   r(   Útorch.utils._mode_utilsr)   Útorch.utils._python_dispatchr*   r+   r,   Útorch.utils._pytreer-   r.   r/   r0   r1   r2   Útorch.utils._statsr3   Útorch.utils._tracebackr4   Ú_fake_tensor_utilsr6   r7   r8   Úcollections.abcr9   r:   r;   r<   r=   r>   Útorch._guardsr?   Ú
torch._opsr@   rQ  rA   rB   Ú	getLoggerrZ   r¤  Ú_loggingÚgetArtifactLoggerrë  r  rç  rô  rc   r(  ÚDimListÚ_pytreer  rE   ré  r  r2  rn  rv   rG   Ú	frozensetr]   rã  r™  ro   rq   rq  r   rƒ   r�   r’   r”   r–   r˜   Úlocalrš   rÿ  r¨   Úcontextmanagerr°   r·   rË   rÖ   ré   ró   rü   r  r  r  r†  r�  r—  r™  r¡  rÔ   rR  rN  rm  ro  r~  r�  r‡  r‹  r–  rt  r�  r‘  r²   rH   Ú_StoragePointerr1  r  rï  rð  r›  r§  r  rÉ  r  r‡   r  r–  rP  rS  r  rW  rY  rZ  ÚprofilerÚ_record_function_exitÚ_RecordFunctionr{  Útorch._subclasses.fake_implsr´  rµ  r¶  r·  r  r0  r/  r"  r  ÚregisterrÀ  r¥  r'  r^   r_   r`   ú<module>r     sì  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø !Ð !Ð !Ð !Ð !Ð !Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð ð ð HÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø -Ð -Ð -Ð -Ð -Ð -Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð
 WÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ $Ð $Ð $Ð $Ð $Ð $Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rð ð PØPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPØ#Ð#Ð#Ð#Ð#Ð#à$Ð$Ð$Ð$Ð$Ð$Ø%Ð%Ð%Ð%Ð%Ð%ØOÐOÐOÐOÐOÐOÐOÐOà€gÔ˜Ñ!Ô!€Ø	Œ×	)Ò	)¨(Ð4JÑ	KÔ	K€ðØœ.×:Ò:¸8ÐEVÑWÔWÐÐøØð ð ð Ø)¨S¨S°©V¬VÐ3Ð3Ø/˜gÔ/°Ð;MÑ0MÑNÔNÐÐàˆð 	ÐÐÐÐøøøøðøøøð €à	ŒÔ	€Ø€GˆC�L„L€à„z„~Ô€àÐ à€ðð ð ð ð ¨¸%ð ñ ô ð ð* 09¨yØ&Ô6ñ0ô 0Ð ,ð „ðð ð ñ „ððð ð ð ð ñ ô ð ð ðð ð ð ð  \ñ ô ñ „ðð
ð 
ð 
ð 
ð 
 Lñ 
ô 
ð 
ð  ðð ð ð ð  ,ñ ô ñ „ðð ðð ð ð ð  <ñ ô ñ „ðð ðð ð ð ð  <ñ ô ñ „ðð ðð ð ð ð ¨<ñ ô ñ „ðð ðð ð ð ð ˜Lñ ô ñ „ððGð Gð Gð Gð G�I”Oñ Gô Gð Gð  �-‘/”/€ð&ð &ð &ð &ð Ôð-ð -ð -ñ Ôð-ð Ôð,ð ,ð ,ñ Ôð,ðð ð ð ð& ð  ð  ð  ðF ð  ð  ð  ðF „ð.ð .ð .ñ „ð.ð „ð	Dð 	Dð 	Dñ „ð	Dð@ð @ð @ð @ð
ð ð ð ð$Wð Wð Wð Wð Wñ Wô Wð Wðt „ð
ð 
ð 
ñ „ð
ð Ôð@ð @ð @ñ Ôð@ð.ð ð ð ðBð Bð Bð Bð Bñ Bô Bð Bð@Eð @Eð @Eð @Eð @Eñ @Eô @Eð @EðFR4ð R4ð R4ð R4ð R4�ñ R4ô R4ð R4ðj ˜Ð&7Ð9LÐLÔMÐ ð €�ÐÑÔð*%ð *%ð *%ð *%ð *%ñ *%ô *%ñ Ôð*%ðZ#ð #ð #ð #ðL €�ÐÑÔð$ð $ð $ð $ð $ñ $ô $ñ Ôð$ð8	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð €�$˜dÐ#Ñ#Ô#ð3ð 3ð 3ð 3ð 3ñ 3ô 3ñ $Ô#ð3ð$ €�$˜dÐ#Ñ#Ô#ð
"ð 
"ð 
"ð 
"ð 
"ñ 
"ô 
"ñ $Ô#ð
"ð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð ð OØ2Ð5NÑNÐð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ˜9ñ ô ñ $Ô#ðð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð(u
ð u
ð u
ð u
ð u
Ð&ñ u
ô u
ð u
ðp; €ð:Qð :Qð :Qð :Qð|>'ð >'ð >'ð >'ðBð ð ð ðð ð ð ð$-ð $-ð $-ð $-ð $-Ð$ñ $-ô $-ð $-ðN#ð #ð #ð #ð6>ð >ð >ð >ðð ð ð ð2 
„I„NÔÔ! ?Ø	„I„NÔÔð "ð "ð 
„I„NÔÔ!ð $ð $ð 
„I„NÔ!Ô)ð ,ð ,ðÐ ð (˜KØ	„I„NÔÔ'Ø	„I„NÔÔ$Ø	„I„NÔÔ%ð 
„IÔÔ,Ô<ñô Ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð&ð &ð &ð &ð
 „ð	;ð 	;ð 	;ñ „ð	;ð9
ð 9
ð 9
ð 9
ðx6ð 6ð 6ð 6ð 6ð 6s   Å&F ÆF4Æ#F/Æ/F4