Ë
    P/æjWq ã                  óÀ	  — 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mZ d dlmZ d dl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dl m!Z!m"Z" d dlm#Z# d dl$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/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZFmGZG d dlHmIZImJZJmKZKmLZL d dlMmNZN d dlOmPZP ddlQmRZRmSZSmTZT erd dlUmVZV d dlWmXZX d dlYmZZZ d dl[m\Z\m]Z]  ej¼                  e_«      Z`	 e$jÂ                  jÅ                  e_d«      Zc G d „ d!«      Zg eg«       ZheZie$jÔ                  jÖ                  Zl ed"«      Zme$jÜ                  jÞ                  jà                  ZpdZqd ar G d#„ d$«      Zse G d%„ d&et«      «       Zue G d'„ d(et«      «       Zve G d)„ d*et«      «       Zwe G d+„ d,et«      «       Zxd]d-„Zyejô                  d^d.„«       Z{d_d/„Z|d`d0„Z}dad1„Z~ ejþ                  d«      dbd2„«       Z€ ejþ                  d«      dcd3„«       Z�ddd4„Z‚ded5„Zƒ G d6„ d7«      Z„ ejþ                  d«      dfd8„«       Z…ejô                  	 	 	 	 dgd:„«       Z†dcd;„Z‡ G d<„ d=«      Zˆ G d>„ d?«      Z‰ G d@„ dAe(«      ZŠee?dBdCf   Z‹eBe G dD„ dE«      «       «       ZŒdhdF„Z�eBe G dG„ dH«      «       «       ZŽeB edI¬J«       G dK„ dL«      «       «       Z�eB edI¬J«       G dM„ dNe�«      «       «       Z‘eB edI¬J«       G dO„ dP«      «       «       Z’ G dQ„ d9eG«      Z“e”Z•	 	 	 	 	 	 	 	 	 	 	 	 didR„Z– G dS„ dTe=«      Z—djdU„Z˜dkdV„Z™dldW„Zše$jÞ                  �j6                  �j8                  �j:                  e˜e$jÞ                  jà                  �j<                  �j:                  dX„ e$jÞ                  jà                  �j>                  �j:                  dY„ e$jÞ                  jà                  �j@                  �j:                  dZ„ iZ¡ eye$jÞ                  jà                  �jD                  �j:                  e$jÞ                  jà                  �jF                  �j:                  e$jÞ                  jà                  �jH                  �j:                  «      Z¥d d[l¦m§Z§m¨Z¨m©Z©mªZªm«Z«m¬Z¬m­Z­m®Z® e�j^                  dfd\„«       Z°y# ed$ rZed efee«      v rd dlZcnee‚Y dZe[e�Œ–dZe[eww xY w)mé    )ÚannotationsN)Údefaultdict)Ú	dataclass)ÚAnyÚCallableÚcastÚDictÚ	GeneratorÚIterableÚListÚLiteralÚMappingÚOptionalÚSequenceÚSetÚTupleÚTypeÚTYPE_CHECKINGÚTypeVarÚUnion)ÚSelfÚ	TypeGuard)ÚReferenceType)ÚSymBoolÚSymFloatÚSymIntÚTensor)Úis_functorch_wrapped_tensorÚis_legacy_batchedtensor)Úsuggest_memory_format)Ú	assert_eqÚassert_metadata_eqÚis_sparse_anyÚis_sparse_compressedÚMetaConverter)Úrender_call)Úimmutable_dict)Únormalize_function)ÚStorageWeakRef)ÚTorchFunctionMode)ÚIntLikeTypeÚpy_sym_types)Údataclass_slots)Úno_dispatch)Úis_traceable_wrapper_subclassÚTorchDispatchMode)ÚPyTreeÚtree_mapÚ	tree_map_ÚTreeSpec)Úcount)ÚCapturedTracebacké   )Ú_CacheKeyStateÚ_PySymInputStubÚ_SymIntOutputStub)ÚTracebackType)ÚSource)Ú
OpOverload)ÚShapeEnvÚSymbolicContextÚnot_implementedz 'not_implemented' not registeredc                  ó   — e Zd Zy)Ú_UnassignedN)Ú__name__Ú
__module__Ú__qualname__© ó    ú`/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_subclasses/fake_tensor.pyrB   rB   X   s   „ ØrG   rB   ÚTc                  ó   — e Zd Zdd„Zdd„Zy)ÚIncrementRecursionCountc                ó   — t         dz  a y ©Nr7   ©ÚRECURSION_COUNT©Úselfs    rH   Ú__init__z IncrementRecursionCount.__init__o   ó   € ä˜1Ñ‰rG   c                ó   — t         dz  a y rM   rN   rP   s    rH   Ú__del__zIncrementRecursionCount.__del__s   rS   rG   N©ÚreturnÚNone)rC   rD   rE   rR   rU   rF   rG   rH   rK   rK   n   s   „ óôrG   rK   c                  ó   — e Zd ZU ded<   y)ÚUnsupportedFakeTensorExceptionÚstrÚreasonN©rC   rD   rE   Ú__annotations__rF   rG   rH   rZ   rZ   x   s   … à„KrG   rZ   c                  ó   — e Zd ZU ded<   y)ÚDynamicOutputShapeExceptionr=   ÚfuncNr]   rF   rG   rH   r`   r`   }   ó   … à
ÔrG   r`   c                  ó   — e Zd ZU ded<   y)ÚDataDependentOutputExceptionr=   ra   Nr]   rF   rG   rH   rd   rd   ‚   rb   rG   rd   c                  ó   — e Zd ZU ded<   y)ÚUnsupportedOperatorExceptionr=   ra   Nr]   rF   rG   rH   rf   rf   ‡   rb   rG   rf   c                 ó.   — t         j                  | d«      S ©NT)ÚdictÚfromkeys)Úitemss    rH   Úordered_setrl   Œ   s   € Ü�=‰=˜ Ó%Ð%rG   c               #  ó*  K  — t         j                  j                  t         j                  j                  j                  «      } 	 | –— | � t         j                  j                  | «       y y # | � t         j                  j                  | «       w w xY w­w©N)ÚtorchÚ_CÚ_unset_dispatch_modeÚ_TorchDispatchModeKeyÚFAKEÚ_set_dispatch_mode)Úolds    rH   Úunset_fake_temporarilyrv   �   sl   è ø€ ä
�(‰(×
'Ñ
'¬¯©×(FÑ(F×(KÑ(KÓ
L€Cð-ØŠ	àˆ?Ü�H‰H×'Ñ'¨Õ,ð øˆ3ˆ?Ü�H‰H×'Ñ'¨Õ,ð üs   ‚ABÁA, Á	#BÁ,$BÂBc                ó.  — t        | «      sJ ‚g }| g}|r€|j                  «       }t        |«      s$t        |t        «      sJ ‚|j	                  |«       ŒA|j                  «       \  }}t        |«      D ]  }|j	                  t        ||«      «       Œ |rŒ€|S rn   )r/   ÚpopÚ
isinstancer   ÚappendÚ__tensor_flatten__ÚreversedÚgetattr)ÚsubclassÚplain_tensorsÚtodoÚcurrÚ
inner_keysÚ_Úkeys          rH   Úget_plain_tensorsr…   š   s™   € Ü(¨Ô2Ð2Ð2Ø"$€MØˆ:€DÙ
Ø�x‰x‹zˆÜ,¨TÔ2Ü˜d¤FÔ+Ð+Ð+Ø× Ñ  Ô&Øà×/Ñ/Ó1‰ˆ
�AÜ˜JÓ'ò 	,ˆCØ�K‰Kœ  cÓ*Õ+ð	,ò ð ÐrG   c                ó¤  — t        | t        «      ryt        | «      rht        | «      j	                  | «      \  }}|D �cg c]  }t        | |«      ‘Œ }}t        d„ |D «       «      }t        d„ |D «       «      }||k(  sJ d«       ‚|S t        | t        «      rht        j                  | «      rSt        j                  j                  «       }t        j                  j                  j                  | |«      }t        |«      S t        | t        «      r?t!        | «      r4t        j                  j                  j#                  | «      }t        |«      S yc c}w )NTc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   ©Úis_fake©Ú.0Úxs     rH   ú	<genexpr>zis_fake.<locals>.<genexpr>²   ó   è ø€ Ò= a”w˜q—zÑ=ùó   ‚c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   rˆ   rŠ   s     rH   r�   zis_fake.<locals>.<genexpr>³   rŽ   r�   z got mixed fake and real tensors!F)ry   Ú
FakeTensorr/   Útyper{   r}   ÚallÚanyr   ro   Ú_is_functional_tensorrp   Ú$_functionalization_reapply_views_tlsÚ
_functorchÚ_unwrap_functional_tensorr‰   r   Úget_unwrapped)	rŒ   Úattrsrƒ   ÚattrÚflattened_tensorsÚall_fakeÚany_fakeÚreapply_viewsÚ	unwrappeds	            rH   r‰   r‰   ¬   s  € Ü�!”ZÔ ØÜ$ QÔ'Ü˜“7×-Ñ-¨aÓ0‰ˆˆqØ:?Ö@°$œW Q¨Õ-Ð@ÐÐ@ÜÑ=Ð+<Ô=Ó=ˆÜÑ=Ð+<Ô=Ó=ˆØ˜8Ò#ÐGÐ%GÓGÐ#ØˆÜ	�A”vÔ	¤5×#>Ñ#>¸qÔ#AÜŸ™×EÑEÓGˆÜ—H‘H×'Ñ'×AÑAÀ!À]ÓSˆ	Ü�yÓ!Ð!Ü	�A”vÔ	Ô#>¸qÔ#AÜ—H‘H×'Ñ'×5Ñ5°aÓ8ˆ	Ü�yÓ!Ð!Øùò As   ¾Ec           	     ó�  ‡— t        | t        «      r| j                  S t        | «      rR| j	                  «       \  }}|D �cg c]  }t        t        | |«      «      ‘Œ }}|d   Št        ˆfd„|D «       «      sJ ‚‰S t        | t        «      rht        j                  | «      rSt        j                  j                  «       }t        j                  j                  j                  | |«      }t        |«      S t        | t        «      r?t        | «      r4t        j                  j                  j!                  | «      }t        |«      S y c c}w )Nr   c              3  ó&   •K  — | ]  }‰|u –— Œ
 y ­wrn   rF   )r‹   rŒ   Úms     €rH   r�   z&maybe_get_fake_mode.<locals>.<genexpr>É   s   øè ø€ Ò)˜a�1˜”6Ñ)ùs   ƒ)ry   r‘   Ú	fake_moder/   r{   Úmaybe_get_fake_moder}   r“   r   ro   r•   rp   r–   r—   r˜   r   r™   )ÚtÚinner_tensor_namesrƒ   Út_nameÚmodesrŸ   r    r£   s          @rH   r¥   r¥   À   s  ø€ Ü�!”ZÔ Ø�{‰{ÐÜ$ QÔ'Ø !× 4Ñ 4Ó 6ÑÐ˜AàBTö
Ø8>Ô¤¨¨6Ó 2Õ3ð
ˆð 
ð �!‰HˆÜÓ) 5Ô)Ô)Ð)Ð)ØˆÜ	�A”vÔ	¤5×#>Ñ#>¸qÔ#AÜŸ™×EÑEÓGˆÜ—H‘H×'Ñ'×AÑAÀ!À]ÓSˆ	Ü" 9Ó-Ð-Ü	�A”vÔ	Ô#>¸qÔ#AÜ—H‘H×'Ñ'×5Ñ5°aÓ8ˆ	Ü" 9Ó-Ð-Øùò
s   Á Ec                óT   — t         j                  j                  | j                  «      S rn   )ro   rp   Ú_SchemaInfoÚ_schema©ra   s    rH   Úget_schema_infor®   Õ   s   € ä�8‰8×Ñ §¡Ó-Ð-rG   c                ó¶   — ddl m} t        j                  j                  }||    j
                  j                  d«      xr ||    j                  t        |«      v S )Nr   ©Údecomposition_tableztorch._decomp)	Útorch._decompr±   ro   Ú_decompÚdecompositionsrD   Ú
startswithrC   Údir)ra   r±   r´   s      rH   Útorch_decomp_decompositionsr·   ß   sV   € å1ä—]‘]×1Ñ1€Nð ˜tÑ$×/Ñ/×:Ñ:Øóò Dà
˜dÑ
#×
,Ñ
,´°NÓ0CÐ
CðDrG   c                óp   — t         j                  |«      }|D �cg c]  }t        || «      sŒ|‘Œ c}S c c}w rn   )ÚpytreeÚtree_leavesry   )ÚtyÚtreeÚ	flat_valsÚelems       rH   Útree_flatten_onlyr¿   ì   s/   € Ü×"Ñ" 4Ó(€IØ&Ö?�T¬*°T¸2Õ*>ŠDÒ?Ð?ùÒ?s   š3¬3c                óþ   — t        | «      t        u xrk | j                  t        j                  k(  xrL | j
                  xs= | j                  xs/ t        | «      xs" t        | «      xs t        j                  | «       S rn   )
r’   r   Úlayoutro   ÚstridedÚ	is_sparseÚ	is_nestedr   r   r•   ©r¦   s    rH   Ú_is_plain_tensorrÆ   ñ   sx   € äˆQ‹”6Ðò 	
Ø�H‰HœŸ™Ñ%ò	
ð �K‰Kò .Ø�{‰{ò.ä*¨1Ó-ò.ô ' qÓ)ò.ô ×*Ñ*¨1Ó-ð
ð
rG   c                  óÀ   — e Zd ZU e	 	 dd„«       Zded<   ded<   ded<   ddd	œdd
„Zdd„Zdd„Zdd„Z	dd„Z
	 	 dddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zy)ÚFakeTensorConverterc                ó.   — | j                   j                  S rn   )Úmeta_converterÚtensor_memorP   s    rH   rË   zFakeTensorConverter.tensor_memo  s   € ð ×"Ñ"×.Ñ.Ð.rG   r%   rÊ   z)Dict[StorageWeakRef, List[ReferenceType]]Úconstant_storage_mappingÚboolÚexportF©Ú	copy_datarÎ   c               óB   — t        |¬«      | _        || _        i | _        y )N)rÐ   )r%   rÊ   rÎ   rÌ   )rQ   rÐ   rÎ   s      rH   rR   zFakeTensorConverter.__init__  s    € Ü+°iÔ@ˆÔØˆŒð )+ˆÕ%rG   c                ó"  — t        |t        «      r|j                  €J ‚t        |j                  j	                  «       «      }|| j
                  vrg | j
                  |<   | j
                  |   j                  t        j                  |«      «       y rn   )	ry   r‘   Úconstantr)   Ú_typed_storagerÌ   rz   ÚweakrefÚref)rQ   Úfake_tensorÚweak_sts      rH   Úadd_constant_storage_mappingz0FakeTensorConverter.add_constant_storage_mapping  sz   € ô ˜+¤zÔ2°{×7KÑ7KÐ7WÐWÐWÜ  ×!5Ñ!5×!DÑ!DÓ!FÓGˆð
 ˜$×7Ñ7Ñ7Ø57ˆD×)Ñ)¨'Ñ2Ø×%Ñ% gÑ.×5Ñ5´g·k±kÀ+Ó6NÕOrG   c                óü   — t        |t        «      rJ ‚t        |j                  «       «      }|| j                  vry | j                  |   D ]#  } |«       }|€Œ|j                  «        d |_        Œ% | j                  |= y rn   )ry   r‘   r)   rÔ   rÌ   Ú_fix_weakrefrÓ   )rQ   ÚtensorrØ   Úweak_tensor_refÚtens        rH   Úinvalidate_constant_aliasesz/FakeTensorConverter.invalidate_constant_aliases%  s€   € Ü˜f¤jÔ1Ð1Ð1ä  ×!6Ñ!6Ó!8Ó9ˆØ˜$×7Ñ7Ñ7Øà#×<Ñ<¸WÑEò 	$ˆOÙ!Ó#ˆCØ‰Ø× Ñ Ô"Ø#�•ð		$ð ×)Ñ)¨'Ñ2rG   c                óœ   — | j                   j                  j                  j                  |«      }|€y | j                  j                  |«      S rn   )rÊ   Ú	describerÚlookup_tensorÚgetrË   )rQ   r¦   Útids      rH   Ú	_get_memozFakeTensorConverter._get_memo4  sC   € Ø×!Ñ!×+Ñ+×9Ñ9×=Ñ=¸aÓ@ˆØˆ;ØØ×Ñ×#Ñ# CÓ(Ð(rG   c                ó€   — | j                   j                  j                  |«      }|| j                   j                  |<   y rn   )rÊ   rá   Úget_tensor_idrË   )rQ   r¦   Úvrä   s       rH   Úset_tensor_memoz#FakeTensorConverter.set_tensor_memo:  s4   € Ø×!Ñ!×+Ñ+×9Ñ9¸!Ó<ˆØ/0ˆ×Ñ×'Ñ'¨Ò,rG   NT)ÚsourceÚsymbolic_contextÚtracec               ó¦  ‡‡‡‡— |sk|si|rgt         j                  j                  j                  «       x}r=‰|j                  v r/|j                  ‰   }ddlm}	 t        ||	«      sJ ‚|j                  }| j                  ‰«      }
|
�|
S ‰j                  Š‰j                  rt        d«      ‚t        ‰«      t         j                  j                  u r‰rJ ‚dˆˆˆˆfd„}| j!                  ‰|||||¬«      }|t"        u rt        d«      ‚ddlm} d }| j(                  �s—t+        ‰«      �r‹‰j-                  «       dk(  �rw‰j                  j                  dk(  �r]‰j.                  t         j0                  t         j2                  t         j4                  t         j6                  t         j8                  fv �r|�� t        ||«      sô|�òdd	lm}m} dd
lm} tA        «       5  ‰jC                  «       }d d d «       tE        jF                  |«      s¬t        ||«      r|jH                  }n ||«      }|jK                  |||jL                  ¬«      }‰j.                  t         j0                  k(  r|jO                  |||¬«      |_(        n6‰j.                  t         j8                  k(  r|jS                  |||¬«      |_(        ‰r| jU                  |«       |S # 1 sw Y   ŒßxY w)Nr   )ÚStatefulSymbolicContextzquantized nyi in meta tensorsc                ót   •— t        «       5  t        ‰ | «       ‰‰r‰nd ¬«      cd d d «       S # 1 sw Y   y xY w)N©rÓ   )r.   r‘   )Úmake_meta_tÚexisting_devicer¤   Úmake_constantr¦   s    €€€€rH   Úmk_fake_tensorz<FakeTensorConverter.from_real_tensor.<locals>.mk_fake_tensore  s;   ø€ ô “ñ Ü!ØÙ“MØ#ñ #0™Q°Tô÷÷ ò ús   Œ.®7)Ú	shape_envÚcallbackrê   rë   rì   zmeta converter nyi)ÚRandomValueSourceÚcpu)ÚCallMethodItemSourceÚFloatTensorSource)Ú
DimDynamic)rê   Údynamic_dim)Úhintrê   )rñ   zCallable[[], object]rW   r‘   )+ro   Ú_guardsÚTracingContextÚtry_getÚtensor_to_contextÚ%torch.fx.experimental.symbolic_shapesrî   ry   Útensor_sourcerå   ÚdeviceÚis_quantizedrZ   r’   ÚnnÚ	ParameterrÊ   ÚNotImplementedÚtorch._dynamo.sourcer÷   rÎ   rÆ   ÚdimÚdtypeÚint64Úint32Úint16Úint8Úfloat64rù   rú   rû   r.   ÚitemÚmathÚisnanÚbaseÚcreate_unspecified_symbolÚDYNAMICÚcreate_symintnodeÚ	item_memoÚcreate_symfloatnoderÙ   )rQ   r¤   r¦   ró   rõ   rê   rë   rì   Útracing_contextrî   Ú
maybe_memorô   Úoutr÷   Úvaluerù   rú   rû   Úitem_sourceÚsymbolrò   s    ```                @rH   Úfrom_real_tensorz$FakeTensorConverter.from_real_tensorD  s‚  û€ ñ  ©±9Ü"'§-¡-×">Ñ">×"FÑ"FÓ"HÐHˆÐHØ˜×9Ñ9Ñ9Ø'6×'HÑ'HÈÑ'KÐ$õô &Ð&6Ð8OÔPÐPÐPØ-×;Ñ;�Fà—^‘^ AÓ&ˆ
ØÐ!ØÐØŸ(™(ˆà�>Š>Ü0Ð1PÓQÐQÜ�‹7”e—h‘h×(Ñ(Ñ(Ù$Ð$Ð$÷	ð 	ð$ ×!Ñ!ØØØ#ØØ-Øð "ó 
ˆð ”.Ñ Ü0Ð1EÓFÐFå:àˆà—“Ü  Õ#Ø—‘“˜1“Ø—‘—‘ Ó&ð —‘Ü—‘œUŸ[™[¬%¯+©+´u·z±zÄ5Ç=Á=ÐQòRàÑ"ô$ ˜vÐ'8Ô9ð Ð%çTÝHä“ñ !ØŸ™›�÷!ä—:‘:˜eÔ$ä˜fÐ&7Ô8Ø"(§+¡+‘Ká"6°vÓ">�KØ"×<Ñ<ØØ&Ø *× 2Ñ 2ð =ó �ð —7‘7œeŸk™kÒ)Ø$-×$?Ñ$?ØØ"Ø*ð %@ó %�C•Mð
 —W‘W¤§¡Ò-Ø$-×$AÑ$AØØ"Ø*ð %Bó %�C”Mñ
 Ø×-Ñ-¨cÔ2àˆ
÷=!ð !ús   ÇKËKc                óÞ   — |j                   j                  dk(  sJ d|j                   j                  › d�«       ‚| j                  |«      }|�|S t        |||«      }| j	                  ||«       |S )NÚmetaz$tensor's device must be `meta`, got z instead)r  r’   rå   r‘   ré   )rQ   r¤   r¦   r  r  r  s         rH   Úfrom_meta_and_devicez(FakeTensorConverter.from_meta_and_deviceÍ  sv   € ð �H‰H�M‰M˜VÒ#ð	Jà1°!·(±(·-±-°ÀÐIó	JØ#ð —^‘^ AÓ&ˆ
ØÐ!ØÐÜ˜ A vÓ.ˆØ×Ñ˜Q Ô$Øˆ
rG   )rW   zweakref.WeakValueDictionary)rÐ   rÍ   rÎ   rÍ   rW   rX   )r×   r‘   rW   rX   )rÜ   r   rW   rX   )r¦   r   rW   úOptional[FakeTensor])r¦   r   rè   r‘   rW   rX   )FN)r¤   ÚFakeTensorModer¦   r   ró   rÍ   rõ   úOptional[ShapeEnv]rê   úOptional[Source]rë   úOptional[SymbolicContext]rì   rÍ   rW   r‘   )r¤   r%  r¦   r   r  útorch.devicerW   r‘   )rC   rD   rE   ÚpropertyrË   r^   rR   rÙ   rß   rå   ré   r   r#  rF   rG   rH   rÈ   rÈ     sé   … Øð/à	$ò/ó ð/ð "Ó!ØGÓGØƒLà,1À%õ +óPó3ó)ó1ð $Ø(,ðFð $(Ø6:ØñFà!ðFð ðFð ð	Fð
 &ðFð !ðFð 4ðFð ðFð 
óFðRØ'ðØ,2ðØ<Hðà	ôrG   rÈ   c                 ó<  — t         j                  j                  «       rHt         j                  j                  €t        j
                  dd¬«      nt        j                  dd¬«       t         j                  j                  «       rt        j
                  dd¬«       y y )Nr7   Úcuda©r  Úxpu)ro   r,  Úis_availableÚversionÚhipÚemptyÚzerosr.  rF   rG   rH   Úinit_gpu_contextr4  Ý  sj   € ô ‡z�z×ÑÔ ô �}‰}× Ñ Ð(ô �K‰K˜ &Õ)ä—‘˜Q vÔ.øô ‡y�y×ÑÔÜ	�‰�Q˜uÖ	%ð  rG   r%  c              #  óÌ  K  — | j                   }t        j                  j                  «       }||k(  sJ |› d|› �«       ‚t        j                  j	                  «       5  d| _         t        j                  j                  «       5  t        j                  j                  d«       	 d –— || _         	 d d d «       d d d «       y # || _         w xY w# 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Nú, T)Úin_kernel_invocationro   rp   Ú_meta_in_tls_dispatch_includeÚ_DisableTorchDispatchÚ_PreserveDispatchKeyGuardÚ!_set_meta_in_tls_dispatch_include)r¤   Úprev_in_kernelÚmeta_in_tlss      rH   Úin_kernel_invocation_managerr>  ë  sÕ   è ø€ ð
 ×3Ñ3€NÜ—(‘(×8Ñ8Ó:€KØ˜.Ò(ÐL¨[¨M¸¸NÐ;KÐ*LÓLÐ(ä	�‰×	'Ñ	'Ó	)ñ 	@Ø)-ˆ	Ô&ô �X‰X×/Ñ/Ó1ñ 	@Ü�H‰H×6Ñ6°tÔ<ð@Ûà1?�	Õ.÷	@÷		@ð 	@øð 2@�	Õ.ú÷	@ð 	@ú÷		@ð 	@üsN   ‚AC$Á&CÂ CÂ#C Â'CÂ/CÂ7	C$Ã 	C	Ã	CÃC	ÃCÃC!ÃC$c                ó¤   — t         j                  j                  | j                  «       j	                  d«      d   j	                  d«      d   «      S )Nz::éÿÿÿÿú.r   )ro   rp   Ú _should_allow_numbers_as_tensorsÚnameÚsplitr­   s    rH   Úshould_allow_numbers_as_tensorsrE    sB   € Ü�8‰8×4Ñ4Ø�	‰	‹×Ñ˜$Ó Ñ#×)Ñ)¨#Ó.¨qÑ1óð rG   c                  óJ   — e Zd Zej                  j                  dd«      dk(  Zy)ÚFakeTensorConfigÚTORCH_FAKE_TENSOR_DEBUGÚ0Ú1N)rC   rD   rE   ÚosÚenvironrã   ÚdebugrF   rG   rH   rG  rG    s   „ Ø�J‰J�N‰NÐ4°cÓ:¸cÑA�ErG   rG  c                  ón   — 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
y)ÚSymIntMemoDescriptorr[   Ú_namerÍ   Ú_is_nested_intF©Úis_nested_intc               ó   — || _         y rn   )rQ  )rQ   rS  s     rH   rR   zSymIntMemoDescriptor.__init__!  s
   € Ø+ˆÕrG   c                ó   — || _         y rn   ©rP  )rQ   ÚownerrC  s      rH   Ú__set_name__z!SymIntMemoDescriptor.__set_name__$  s	   € Øˆ�
rG   c                ó    — d| j                   › �S )Nrƒ   rV  ©rQ   Úobjs     rH   Ú_memozSymIntMemoDescriptor._memo'  s   € Ø�4—:‘:�,ÐÐrG   c                ó"   — d| j                   › d�S )Nrƒ   Ú_vcrV  rZ  s     rH   Ú_memo_vczSymIntMemoDescriptor._memo_vc*  s   € Ø�4—:‘:�,˜cÐ"Ð"rG   c                ó"   — d| j                   › d�S )Nrƒ   Ú_epochrV  rZ  s     rH   Ú_memo_epochz SymIntMemoDescriptor._memo_epoch1  s   € Ø�4—:‘:�,˜fÐ%Ð%rG   Nc                ó`  — t        || j                  |«      «      x}€y | j                  s(t        || j                  |«      «      |j                  k7  s>| j                  sOt        || j                  |«      «      |j                  j                  k7  rt        || j                  |«      d «       y |S rn   )	r}   r\  rQ  r_  Ú_versionrb  r¤   ÚepochÚsetattr)rQ   r[  ÚobjtypeÚrs       rH   Ú__get__zSymIntMemoDescriptor.__get__4  s�   € ô ˜˜dŸj™j¨›oÓ.Ð.ˆAÐ7Øð ×#Ò#¬°°T·]±]À3Ó5GÓ(HÈCÏLÉLÒ(Xà×#Ò#Ü˜˜T×-Ñ-¨cÓ2Ó3°s·}±}×7JÑ7JÒJä�C˜Ÿ™ C›¨$Ô/ØØˆrG   c                óè  — |€Ut        || j                  |«      d «       t        || j                  |«      d «       t        || j                  |«      d «       y |j	                  «       r| j
                  rt        || j                  |«      |«       | j
                  s&t        || j                  |«      |j                  «       t        || j                  |«      |j                  j                  «       y y rn   )	rf  r\  r_  rb  Úis_inferencerQ  rd  r¤   re  )rQ   r[  r  s      rH   Ú__set__zSymIntMemoDescriptor.__set__E  s·   € Øˆ=Ü�C˜Ÿ™ C›¨$Ô/Ü�C˜Ÿ™ sÓ+¨TÔ2Ü�C˜×)Ñ)¨#Ó.°Õ5Ø×!Ñ!Ô# t×':Ò':Ü�C˜Ÿ™ C›¨%Ô0Ø×&Ò&Ü˜˜TŸ]™]¨3Ó/°·±Ô>Ü�C˜×)Ñ)¨#Ó.°·±×0CÑ0CÕDð	 (;rG   )rS  rÍ   rW   rX   )rW  r[   rC  r[   rW   rX   )r[  r‘   rW   r[   rn   )r[  r‘   rg  zOptional[Type[FakeTensor]]rW   úOptional[torch.SymInt])r[  r‘   r  rm  rW   rX   )rC   rD   rE   r^   rR   rX  r\  r_  rb  ri  rl  rF   rG   rH   rO  rO    sU   … ØƒJð Óà05õ ,óó ó#ó&ð FJðØðØ(Bðà	óô"	ErG   rO  c                  óò  ‡ — e Zd ZU dZded<   ded<   ded<   ded<    e«       Z e«       Z e«       Z ed	¬
«      Z	e
j                  j                  j                  Zedd„«       Zej"                  dd„«       Zedd„«       Zej"                  dd„«       Ze	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„«       Zdˆ fd„Zed d„«       Zeed e«       f	 	 	 	 	 	 	 	 	 d!d„«       «       Ze	 	 	 	 	 	 d"d„«       Zddœ	 	 	 d#d„Zd$d„Zˆ xZS )%r‘   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¤   úOptional[Tensor]rÓ   Úreal_tensorTrR  c                óp   — | j                   j                  rt        j                  d«      S | j                  S ©Nr"  )r¤   r7  ro   r  ro  rP   s    rH   r  zFakeTensor.deviceo  s*   € à�>‰>×.Ò.Ü—<‘< Ó'Ð'à×#Ñ#Ð#rG   c                ó   — t         ‚rn   ©ÚNotImplementedError©rQ   rƒ   s     rH   r  zFakeTensor.devicev  ó   € ä!Ð!rG   c                ó   — t        d«      ‚)Nz+torch.compile doesn't support named tensors)rZ   rP   s    rH   ÚnameszFakeTensor.namesŠ  s   € ä,Ø9ó
ð 	
rG   c                ó   — t         ‚rn   ru  rw  s     rH   rz  zFakeTensor.names�  rx  rG   c                óœ  — t        j                  | ||j                  d|¬«      }|j                  s t        j
                  j                  |«       nt        j
                  j                  |«       |j                  j                  dk(  sJ |j                  j                  «       ‚t        |t        j                  «      r|nt	        j                  |«      }|j                  s|j                  dk7  sJ ‚|j                  dv r
t        «        |j                  dddt        j
                  j                  «       fv r¡|j                  €•t        t        |j                  «      j!                  «       rKt	        j                  |j                  › dt        t        |j                  «      j#                  «       › �«      }n"t	        j                  |j                  › d	�«      }||_        ||_        ||_        t        |t*        «      rJ ‚||_        d |_        d |_        d |_        d |_        t6        j8                  rt;        j<                  «       |_        |S )
NT)Údispatch_deviceÚdevice_for_backend_keysr"  )r,  r.  r,  Úhpur.  ú:z:0) r   Ú_make_subclassÚrequires_gradÚ_allow_unsafe_data_ptr_accessro   rp   Ú_set_throw_on_mutable_data_ptrÚ(_set_warn_deprecated_on_mutable_data_ptrr  r’   ry   Ú
allow_metar4  Ú_get_privateuse1_backend_nameÚindexr}   Úis_initializedÚcurrent_devicero  r¤   rÓ   r‘   rq  Únonzero_memor  Úunique_memoÚnested_int_memorG  rM  r6   ÚextractÚ_debug_trace)Úclsr¤   r¾   r  rÓ   rq  rQ   s          rH   Ú__new__zFakeTensor.__new__”  sÐ  € ô ×$Ñ$ØØØ×ÑØ Ø$*ô
ˆð ×6Ò6Ü�H‰H×3Ñ3°DÕ9ä�H‰H×=Ñ=¸dÔCà�{‰{×Ñ 6Ò)Ð;¨4¯;©;×+;Ñ+;Ó;Ð)Ü% f¬e¯l©lÔ;‘ÄÇÁÈfÓAUˆð ×#Ò#Ø—;‘; &Ò(Ð(Ð(à�;‰;˜/Ñ)ÜÔð �K‰KØ˜˜u¤e§h¡h×&LÑ&LÓ&NÐOñPà—‘Ð$ä”u˜fŸk™kÓ*×9Ñ9Ô;ÜŸ™Ø—{‘{�m 1¤W¬U°F·K±KÓ%@×%OÑ%OÓ%QÐ$RÐSó‘ô Ÿ™¨¯©¨°RÐ&8Ó9�Ø!ˆÔØ"ˆŒØ ˆŒÜ˜k¬:Ô6Ð6Ð6Ø&ˆÔØ ˆÔØˆŒØˆÔØ#ˆÔä×!Ò!Ü 1× 9Ñ 9Ó ;ˆDÔØˆrG   c                ó"   •— t         ‰| �  «        y rn   )ÚsuperrR   )rQ   ÚargsÚkwargsÚ	__class__s      €rH   rR   zFakeTensor.__init__ã  s   ø€ Ü‰ÑÕrG   c                ó$   — |j                  | «      S rn   )Úfrom_tensor)r¦   r¤   s     rH   r˜  zFakeTensor.from_tensoræ  s   € à×$Ñ$ QÓ'Ð'rG   rF   c                ó’  — |t         j                  j                  j                  j                  k(  r`t        |«      dk(  rt        |d   t        «      sJ ‚|d   j                  j                  rt        j                  d«      S |d   j                  S t        j                  |«      x}r ||«      S |D �cg c]  }t        |t        «      rŒ|t        usŒ|‘Œ  }}|rt        j                   d|«       t"        S d }t%        j&                  |i |¤ŽD ]   }	t        |	t        «      sŒ|	j                  } n |€J ‚t         j(                  j+                  t         j(                  j,                  j.                  «      }
|
rt        j                   d||
«       t"        S |j                  rJ ‚|5   ||i |¤Žcd d d «       S c c}w # 1 sw Y   y xY w)Nr7   r   r"  z(FakeTensor unrecognized subclass(es): %sz(FakeTensor mode already active: %s in %s)ro   ÚopsÚprimr  ÚdefaultÚlenry   r‘   r¤   r7  ro  Ú_DISPATCH_META_HANDLERSrã   Ú
issubclassr   Únot_implemented_logrM  r  r¹   Úarg_tree_leavesrp   Ú_get_dispatch_moderr   rs   )r�  ra   Útypesr”  r•  Úhandlerr¦   Úunrecognized_typesr¤   ÚargÚmaybe_cur_fake_modes              rH   Ú__torch_dispatch__zFakeTensor.__torch_dispatch__ê  sµ  € ð ”5—9‘9—>‘>×(Ñ(×0Ñ0Ò0Ü�t“9 ’>¤j°°a±¼*Ô&EÐEÐEØ�A‰w× Ñ ×5Ò5Ü—|‘| FÓ+Ð+à˜A‘w×*Ñ*Ð*ô .×1Ñ1°$Ó7Ð7ˆ7Ð7Ù˜4“=Ð ð ö
Ø¤J¨q´*Õ$=À!Ì6Â/ŠAð
Ðð 
ñ Ü×%Ñ%Ø:Ð<Nôô "Ð!àˆ	Ü×)Ñ)¨4Ð:°6Ñ:ò 	ˆCÜ˜#œzÕ*ØŸM™M�	Ùð	ð
 Ð$Ð$Ð$ô $Ÿh™h×9Ñ9Ü�H‰H×*Ñ*×/Ñ/ó
Ðñ Ü×%Ñ%Ø:ØØ#ôô
 "Ð!à×1Ò1Ð1Ð1àñ 	)Ù˜Ð( Ñ(÷	)ñ 	)ùòK
÷J	)ð 	)ús   Â5F8ÃF8ÃF8Æ&F=Æ=Gc                ó¶   ‡ ‡‡‡— d Šd}d Šdd„Šdˆˆˆ ˆfd„}|D ]
  } ||«       Œ t        ‰ «      r‰€d}t        j                  d«      Š‰€
J d‰ › �«       ‚‰|fS )	NFc                ó^   — | j                   j                  dk(  xr | j                  «       dk(  S )Nrø   r   )r  r’   r
  rÅ   s    rH   Úcpu_zero_dimz4FakeTensor._find_common_device.<locals>.cpu_zero_dimB  s$   € Ø—8‘8—=‘= EÑ)Ò:¨a¯e©e«g¸©lÐ:rG   c                óð   •— t        | t        «      sy ‰€| j                  Š ‰| «      Šy  ‰| «      }| j                  ‰k(  r‰r|Šy |ry ‰r| j                  Š|Šy t        d‰› d‰› d| j                  › �«      ‚)Nz,Unhandled FakeTensor Device Propagation for z, found two different devices r6  )ry   r‘   r  ÚRuntimeError)r¦   Út_is_cpu_zero_dimÚcommon_devicer«  ra   Úis_cpu_zero_dims     €€€€rH   Úmerge_devicesz5FakeTensor._find_common_device.<locals>.merge_devicesE  s�   ø€ ô ˜a¤Ô,ØàÐ$Ø !§¡�Ù".¨q£/�Øá ,¨Q£ÐØ�x‰x˜=Ò(Ù"Ø&7�OØñ !Øñ Ø !§¡�Ø"3�Øô Ø>¸t¸fÐDbÐcpÐbqÐqsÐtu×t|Ñt|Ðs}Ð~óð rG   Trø   z!Could not find common device for ©r¦   r   rW   rÍ   )r¦   ÚobjectrW   rX   )rE  ro   r  )ra   Ú	flat_argsÚhas_scalar_only_inputsr±  r¦  r¯  r«  r°  s   `    @@@rH   Ú_find_common_devicezFakeTensor._find_common_device5  s†   û€ ð ˆØ!&ÐØˆó	;÷ 	ð  	ðD ò 	ˆCÙ˜#Õð	ô +¨4Ô0°]Ð5Jà%)Ð"Ü!ŸL™L¨Ó/ˆMàÐ(ÐTÐ,MÈdÈVÐ*TÓTÐ(àÐ4Ð4Ð4rG   r7   )Úcoeffc               óz   — | j                   €!| j                  j                  d ¬«      | _         | j                   |z  S )N©Únt_tensor_id)r�  r¤   Úcreate_symbolic_nested_int)rQ   r·  s     rH   Úget_nested_intzFakeTensor.get_nested_intv  sC   € ð
 ×ÑÐ'Ø#'§>¡>×#LÑ#LØ!ð $Mó $ˆDÔ ð ×#Ñ# eÑ+Ð+rG   c                óú   — | j                  «       dk(  r| j                  «       S | j                  «       dk(  r| D �cg c]  }|j                  «       ‘Œ c}S | D �cg c]  }|j                  «       ‘Œ c}S c c}w c c}w )Nr   r7   )r
  r  Útolist)rQ   r¾   s     rH   r¾  zFakeTensor.tolist‚  s^   € Ø�8‰8‹:˜Š?Ø—9‘9“;ÐØ�X‰X‹Z˜1Š_Ø,0Ö1 D�D—I‘I•KÒ1Ð1à.2Ö3 d�D—K‘K•MÒ3Ð3ùò 2ùâ3s   »A3ÁA8)rW   r)  )rƒ   r)  rW   rX   )rW   ú	List[str])rƒ   r¿  rW   rX   )NN)r¤   r%  r¾   r   r  r)  rÓ   rp  rq  rp  rW   r   )r”  r³  r•  r³  rW   rX   )r¦   r   r¤   r%  rW   r‘   ©
ra   r=   r£  úSequence[Type]r”  úSequence[object]r•  úMapping[str, object]rW   r³  )ra   r=   r´  rÂ  rW   zTuple[torch.device, bool])r·  zUnion[int, torch.SymInt]rW   útorch.SymInt)rW   r   )rC   rD   rE   Ú__doc__r^   rO  r‹  r  rŒ  r�  ro   rp   rr   rs   Ú	_mode_keyr*  r  Úsetterrz  Ústaticmethodr‘  rR   r˜  Úclassmethodr5   r'   r¨  r¶  r¼  r¾  Ú__classcell__©r–  s   @rH   r‘   r‘   Q  sÔ  ø… ñð ÓØÓØÓØ!Ó!ñ
 (Ó)€LÙ$Ó&€IÙ&Ó(€Kñ
 +¸Ô>€Oð —‘×.Ñ.×3Ñ3€Iàò$ó ð$ð ‡]�]ò"ó ð"ð& ò
ó ð
ð
 ‡\�\ò"ó ð"ð ð &*Ø(,ð:à!ð:ð ð:ð ð	:ð
 #ð:ð &ð:ð 
ò:ó ð:õ\ð ò(ó ð(ð Ø
ð
 "$Ù'5Ó'7ðG)àðG)ð ðG)ð ð	G)ð
 %ðG)ð 
òG)ó ó ðG)ðR ð>5Øð>5Ø%5ð>5à	"ò>5ó ð>5ðF +,ñ	,ð (ð	,ð 
ó		,÷4rG   r‘   r9   r:   c                  óÔ   — 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y) ÚTensorMetadatazK
    The Tensor metadata relevant to hashing FakeTensors when caching.
    ztorch.dtyper  zTuple[_MetadataIntLike, ...]ÚshapeÚstrider)  r  ztorch.layoutrÁ   zOptional[torch.memory_format]Úmemory_formatÚ_MetadataIntLikeÚstorage_offsetzOptional[_MetadataIntLike]Ústorage_bytesrÍ   r‚  r  Úis_conjÚis_negrk  rÃ   úOptional[bool]Úis_coalescedúOptional[int]Ú	dense_dimÚ
sparse_dimc                ó>  — t        j                  | «      D ]…  }t        | |j                  «      }t	        |t
        t        t        j                  f«      r|j                  |||«       ŒRt	        |t        «      r|j                  ||«       Œu|j                  |«       Œ‡ y rn   )ÚdataclassesÚfieldsr}   rC  ry   ÚtupleÚlistro   ÚSizeÚ_prep_args_for_hashr   Úconvert_sym_intrz   )rQ   ÚresultÚmodeÚstateÚfieldr  s         rH   Ú_flatten_intozTensorMetadata._flatten_into§  s}   € ô !×'Ñ'¨Ó-ò 		%ˆEÜ˜D %§*¡*Ó-ˆEÜ˜%¤%¬¬u¯z©zÐ!:Ô;ð ×(Ñ(¨°¸Õ>Ü˜E¤6Ô*Ø×%Ñ% f¨eÕ4à—‘˜eÕ$ñ		%rG   N)rã  úList[object]rä  r%  rå  r8   rW   rX   )rC   rD   rE   rÅ  r^   rç  rF   rG   rH   rÍ  rÍ  Ž  s—   … ñð ÓØ'Ó'Ø(Ó(ØÓØÓØ0Ó0Ø$Ó$Ø-Ó-ØÓØÓØƒMØƒLØÓØƒOØ Ó ØÓØÓð%àð%ð ð%ð ð	%ð
 
ô%rG   rÍ  c                óü  — t        | «      }| j                  st        | «      s| j                  |¬«      sd}| j	                  «       }t        | j                  | j                  | j                  t        j                  k(  r| j                  «       nd| j                  | j                  ||t        | «      s| j                  «       j                  «       nd| j                  | j                   | j#                  «       | j%                  «       | j'                  «       | j(                  | j(                  r| j+                  «       ndt        | «      r| j-                  «       ndt        | «      r| j/                  «       «      S d«      S )z1
    Extract the TensorMetadata of a tensor.
    )rÐ  NrF   )r    Ú_has_symbolic_sizes_stridesr#   Úis_contiguousrÒ  rÍ  r  rÎ  rÁ   ro   rÂ   rÏ  r  Úuntyped_storageÚnbytesr‚  r  rÔ  rÕ  rk  rÃ   r×  rÙ  rÚ  )r¦   rÐ  rÒ  s      rH   Úextract_tensor_metadatarî  »  s  € ô 4IÈÓ3K€Mð 	
×%Ò%Ü˜ÔØ�‰¨]ˆÔ;àˆà×%Ñ%Ó'€NäØ	�‰Ø	�‰Ø—h‘h¤%§-¡-Ò/ˆ�‰Œ
°RØ	�‰Ø	�‰ØØä,9¸!Ô,<ˆ×ÑÓ×"Ñ"Ô$À$Ø	�‰Ø	�‰Ø	�	‰	‹Ø	�‰‹
Ø	�‰ÓØ	�‰ØŸKšKˆ�‰Ô¨TÜ& qÔ)ˆ�‰Œ¨tÜ'¨Ô*ˆ�‰‹ó%ð ð$ 15ó%ð rG   c                  óF   — 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y
)Ú_DispatchCacheKeyz0
    Key for the FakeTensor dispatch cache.
    úTuple[object, ...]r„   ÚintÚ	hashvaluec                ó2   — || _         t        |«      | _        y rn   )r„   Úhashró  )rQ   Útups     rH   rR   z_DispatchCacheKey.__init__ë  s   € ØˆŒÜ˜c›ˆ�rG   c                óX   — t        |t        «      xr | j                  |j                  k(  S rn   )ry   rð  r„   )rQ   Úothers     rH   Ú__eq__z_DispatchCacheKey.__eq__ï  s"   € Ü˜%Ô!2Ó3ÒM¸¿¹ÀEÇIÁIÑ8MÐMrG   c                ó   — | j                   S rn   )ró  rP   s    rH   Ú__hash__z_DispatchCacheKey.__hash__ò  s   € Ø�~‰~ÐrG   c                óh   — | j                   D ]#  }t        |t        «      sŒ|j                  «        Œ% y rn   )r„   ry   r9   Ústrip_shape_env)rQ   rè   s     rH   rý  z!_DispatchCacheKey.strip_shape_envõ  s-   € ð —‘ò 	$ˆAÜ˜!œ_Õ-Ø×!Ñ!Õ#ñ	$rG   N)rö  rñ  rW   rX   )rø  r³  rW   rÍ   )rW   rò  rV   )	rC   rD   rE   rÅ  r^   rR   rù  rû  rý  rF   rG   rH   rð  rð  á  s)   … ñð 
ÓØƒNó#óNóô$rG   rð  T)Úfrozenc                  ó0   — e Zd ZU dZded<   ded<   ded<   y)Ú_DispatchCacheEntryaD  
    Entry type for the FakeTensor dispatch cache. Accounts for two 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.
    rØ  Úinplace_idxzOptional[TensorMetadata]ÚmetadataÚview_idxN©rC   rD   rE   rÅ  r^   rF   rG   rH   r   r   ý  s   … ñð ÓØ&Ó&ØÔrG   r   c                  ó   — e Zd ZU dZded<   y)Ú_BypassDispatchCachez<
    Signals cases that should skip FakeTensor caching.
    r[   r\   Nr  rF   rG   rH   r  r    s   … ñð „KrG   r  c                  ó:   — e Zd ZU dZded<   ded<   ded<   ded<   y)	ÚDispatchCacheInfozG
    Information about the state of the FakeTensor dispatch cache.
    rò  ÚhitsÚmissesúDict[str, int]ÚbypassesÚsizeNr  rF   rG   rH   r  r    s   … ñð ƒIØƒKØÓØ
„IrG   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dAd„ZdBd„ZedCd„«       ZedDd„«       Zed e«       f	 	 	 	 	 	 	 	 	 dEd„«       ZdFˆ fd „Z	 	 	 	 	 	 	 	 dGˆ fd!„ZedCd"„«       ZedHd#„«       ZedAd$„«       Z	 	 	 	 	 	 	 	 	 	 dEd%„Z	 	 	 	 	 	 	 	 	 	 dId&„Z	 	 	 	 	 	 	 	 dJd'„Z	 	 	 	 	 	 	 	 dKd(„Z 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dLd)„Z!	 	 	 	 	 	 	 	 	 	 	 	 dMd*„Z"	 	 	 	 	 	 	 	 	 	 	 	 dNd+„Z#d e«       f	 	 	 	 	 	 	 	 	 dEd,„Z$	 	 	 	 	 	 	 	 	 	 dOd-„Z% e&d.d/d0d1d2d3d4d5«      Z'dPd6„Z(	 	 	 	 	 	 	 	 	 	 dQd7„Z)	 	 	 	 	 	 	 	 	 	 dRd8„Z*dd9œ	 	 	 dSd:„Z+ e&e,jZ                  j\                  e,j^                  j`                  e,jb                  j`                  e,jd                  j`                  e,jf                  j`                  e,jh                  j`                  e,jj                  j`                  e,jl                  j`                  e,jn                  j`                  e,jp                  jr                  e,jt                  j`                  «      Z;dPd;„Z< e&e,jz                  j`                  e,j|                  j`                  «      Z?dTd<„Z@	 	 	 	 	 	 	 	 	 	 dUd=„ZAddddd>œ	 	 	 	 	 	 	 	 	 	 	 dVd?„ZBˆ xZCS )Wr%  z,Dict[_DispatchCacheKey, _DispatchCacheEntry]Úcacher   rò  Ú
cache_hitsÚcache_missesr  Úcache_bypassesre  FrÍ   r7  Ústatic_shapesr&  rõ   zOptional[str]Ú_stackr†  r@  Únt_tensor_id_counterÚnt_tensor_id_initial_countTN)Úallow_fallback_kernelsÚallow_non_fake_inputsrõ   r  rÎ   c               óÄ  •— t         j                  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*                  xr | j                   | _        |j(                  j                  j.                  | _        || _        d| _        g | _        || _        t;        j<                  «       | _        d | _         |jB                  jD                  jF                  | _$        dd l%}|jL                  jN                  jP                  jR                  | _*        | jT                  | _+        y )Nzcreate_mode 0x%xr   rÏ   F),ÚlogrM  Úidr“  rR   r  Útorch._dynamo.configÚtorch._functorch.configr—   ÚconfigÚ"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_enabledÚcache_enabledÚ$fake_tensor_cache_crosscheck_enabledÚcache_crosscheck_enabledr  r7  Úenter_stackrõ   Ú	tracebackÚextract_stackÚ_stack_tracer  rp   rr   rs   rÆ  Ú$torch.nested._internal.nested_tensorÚnestedÚ	_internalÚnested_tensorÚ_tensor_id_counterr  r  )rQ   r  r  rõ   r  rÎ   ro   r–  s          €rH   rR   zFakeTensorMode.__init__E  s¦  ø€ ô$ 	�	‰	Ð$¤b¨£hÔ/Ü‰ÑÔØ&<ˆÔ#ã#Û&ð ×Ñ×#Ñ#×FÑFð 	Ô#ô &9Ø×1Ñ1Øô&
ˆÔ"ð
 Ð$Ø!.ˆDÕà!*¨dÐ!2ˆDÔð %*ˆÔ!ð ×Ñ×#Ñ#×LÑLð 	Ô*ð  ×*Ñ*×1Ñ1×HÑHˆŒà�M‰M× Ñ ×:Ñ:ò 0Ø×/Ñ/Ð/ð 	Ôð
 �M‰M× Ñ ×EÑEð 	Ô%ð &;ˆÔ"ð %*ˆÔ!ð ð 	Ôð #ˆŒä%×3Ñ3Ó5ˆÔØˆŒð Ÿ™×7Ñ7×<Ñ<ˆŒã3ð �L‰L×"Ñ"×0Ñ0×CÑCð 	Ô'ð %)×$CÑ$CˆÕ!rG   c                ó&   — | j                   | _        y rn   )r  r  rP   s    rH   Úreset_nt_tensor_id_counterz)FakeTensorMode.reset_nt_tensor_id_counter¤  s   € Ø$(×$CÑ$CˆÕ!rG   c                óB   — t        |t        «      xr |j                  | u S rn   )ry   r‘   r¤   ©rQ   r¦   s     rH   Úis_our_fakezFakeTensorMode.is_our_fake³  s   € Ü˜!œZÓ(Ò@¨Q¯[©[¸DÐ-@Ð@rG   c                óú   — t         j                  j                  «       r?t         j                  j                  «       rJ ‚t         j                  j	                  «        S t         j                  j	                  «        S rn   )ro   r.  Ú_is_compiledr,  r/  rP   s    rH   Úavoid_device_initz FakeTensorMode.avoid_device_init»  sT   € ä�9‰9×!Ñ!Ô#Ü—z‘z×.Ñ.Ô0Ð0Ð0Ü—y‘y×-Ñ-Ó/Ð/Ð/ä—:‘:×*Ñ*Ó,Ð,Ð,rG   c                ó˜   — | j                   €3dj                  t        j                  | j                  «      «      | _         | j                   S )NÚ )r  Újoinr+  Úformat_listr-  rP   s    rH   ÚstackzFakeTensorMode.stackÃ  s7   € à�;‰;ÐØŸ'™'¤)×"7Ñ"7¸×8IÑ8IÓ"JÓKˆDŒKØ�{‰{ÐrG   rF   c                ó  — t         j                  j                  t         j                  j                  j                  «      �J |«       ‚	 | j                  ||||«      S # t        $ r t        j                  d«       ‚ w xY w)Nzfake tensor raised TypeError)	ro   rp   r¢  rr   rs   ÚdispatchÚ	TypeErrorr  Ú	exception)rQ   ra   r£  r”  r•  s        rH   r¨  z!FakeTensorMode.__torch_dispatch__É  sr   € ô �H‰H×'Ñ'¬¯©×(FÑ(F×(KÑ(KÓLÐTð	àó	ØTð	Ø—=‘=  u¨d°FÓ;Ð;øÜò 	Ü�M‰MÐ8Ô9Øð	ús   Á
A Á A>c                ó²  •— dd l }d }| j                  r5|j                  j                  «       }|j                  j	                  d«       |j                  j                  | j                  «      }| |ur,| j                  j                  d||f«       t        ‰| �)  «       S |j                  j                  | «       | j                  j                  dd |f«       | S )Nr   TF)r.  r:  rp   Ú_only_lift_cpu_tensorsÚ_set_only_lift_cpu_tensorsrq   rÆ  r*  rz   r“  Ú	__enter__rt   )rQ   ro   Úprev_only_lift_cpu_tensorsÚmaybe_prev_fake_moder–  s       €rH   rG  zFakeTensorMode.__enter__Ü  sÁ   ø€ Û3à%)Ð"Ø×!Ò!à).¯©×)HÑ)HÓ)JÐ&Ø�H‰H×/Ñ/°Ô5Ø$Ÿx™x×<Ñ<¸T¿^¹^ÓLÐØÐ+Ñ+Ø×Ñ×#Ñ#ØÐ+Ð-GÐHôô ‘7Ñ$Ó&Ð&ð �H‰H×'Ñ'¨Ô-Ø×Ñ×#Ñ# U¨DÐ2LÐ$MÔNØˆrG   c                óð   •— | j                   j                  «       \  }}}|rUt        ‰| �  |||«      }|�t        j
                  j                  |«       |� t        j
                  j                  |«       y y y rn   )r*  rx   r“  Ú__exit__ro   rp   rt   rF  )	rQ   ÚaÚbÚcÚliverI  Ú maybe_prev_only_lift_cpu_tensorsr  r–  s	           €rH   rK  zFakeTensorMode.__exit__ð  sw   ø€ ð ×Ñ× Ñ Ó"ñ		
ØØ Ø,áÜ‘'Ñ" 1 a¨Ó+ˆCà#Ð/Ü—‘×+Ñ+Ð,@ÔAØ/Ð;Ü—‘×3Ñ3Ð4TÕUð <ð rG   c                 ó   — yrh   rF   ©r�  s    rH   Úis_infra_modezFakeTensorMode.is_infra_mode  s   € àrG   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  ri   r  r�  r  rR  s    rH   Ú
cache_infozFakeTensorMode.cache_info  s?   € ô
 !Ü×%Ñ%Ü×'Ñ'Ü”×.Ñ.Ó/Ü”×$Ñ$Ó%ó	
ð 	
rG   c                óˆ   — d| _         d| _        | j                  j                  «        | j                  j                  «        y)z+
        Clear the dispatch cache.
        r   N)r  r  r  Úclearr  rR  s    rH   Úcache_clearzFakeTensorMode.cache_clear  s3   € ð
 ˆŒØˆÔØ×Ñ× Ñ Ô"Ø�	‰	�‰ÕrG   c                ó<  — t         }	 t        | j                  «      }| j                  ||||«      }|j	                  «       r%|j                  €J ‚|j                  j
                  }nt        j                  }|j                  |d«      }	|	�P| j                  ||	|||«      }t        xj                  dz  c_
        | j                  r�| j                  |||||«       nk| j                  |||«       | j                  ||||«      }| j                  ||||||«      }	|j!                  «        |	||<   t        xj"                  dz  c_        |t         u r| j                  ||||«      }|S # t$        $ r/}
t        j&                  |
j(                  xx   dz  cc<   Y d}
~
ŒQd}
~
ww xY w)zž
        Lookup a cache entry for the given arguments. If none exists, dispatch
        and cache the result (if the result is eligible for caching).
        Nr7   )Ú_UNASSIGNEDr8   rõ   Ú
_cache_keyÚcache_on_shape_envÚfake_tensor_cacher%  r  rã   Ú_output_from_cache_entryr  r)  Ú_crosscheck_cache_outputÚ_validate_cache_keyÚ_dispatch_implÚ_make_cache_entryrý  r  r  r  r\   )rQ   ra   r£  r”  r•  Úoutputrå  r„   r  ÚentryÚes              rH   Ú_cached_dispatch_implz$FakeTensorMode._cached_dispatch_impl  sƒ  € ô %ˆð	9Ü" 4§>¡>Ó2ˆEØ—/‘/ %¨¨t°VÓ<ˆCØ×'Ñ'Ô)Ø—‘Ð2Ð2Ð2ØŸ™×9Ñ9‘ä&×,Ñ,�Ø—I‘I˜c 4Ó(ˆEØÐ Ø×6Ñ6°u¸eÀSÈ$ÐPTÓU�Ü×)Ò)¨QÑ.Õ)Ø×0Ò0ð ×1Ñ1°&¸$ÀÀtÈVÕTà×(Ñ(¨¨t°VÔ<Ø×,Ñ,¨T°5¸$ÀÓG�Ø×.Ñ.¨u°c¸4ÀÀvÈvÓV�Ø×#Ñ#Ô%Ø"��c‘
Ü×+Ò+¨qÑ0Õ+ð ”[Ñ Ø×(Ñ(¨¨u°d¸FÓCˆFàˆøô $ò 	9Ü×)Ñ)¨!¯(©(Ó3°qÑ8×3Ð3ûð	9ús   ˆD=E# Å#	FÅ,%FÆFc                óP  — |t        j                  «       t         j                  j                  «       t        j                  «       | j
                  r| j
                  j                  ndg}|r| j                  |||«       |r| j                  |||«       t        t        |«      «      S )z‹
        Create a cache key given the dispatch args. Raises _BypassDispatchCache
        for any situation that precludes caching.
        N)
ro   Úget_default_dtyperp   Ú_get_default_deviceÚis_inference_mode_enabledrõ   Úsettingsrá  rð  rÞ  )rQ   rå  ra   r”  r•  Ú
key_valuess         rH   r[  zFakeTensorMode._cache_keyH  s�   € ð ô ×#Ñ#Ó%ô �H‰H×(Ñ(Ó*ô ×+Ñ+Ó-ð (,§~¢~ˆD�N‰N×#Ò#¸4ð
ˆ
ñ" Ø×$Ñ$ Z°°uÔ=ÙØ×$Ñ$ Z°¸Ô?Ü ¤ zÓ!2Ó3Ð3rG   c                ó   — t         j                  j                  |j                  v rt	        d«      ‚t         j                  j
                  |j                  v rt	        d«      ‚t         j                  j                  |j                  v rt	        d«      ‚|t        j                  j                  k(  rt	        d«      ‚|| j                  v rt	        d«      ‚|j                  «       dk(  rt	        d«      ‚t         j                  j                  j                  |«      st	        d«      ‚|j                  r\t         j                   j#                  |j                  «       t         j                   j$                  j&                  «      rt	        d«      ‚y	y	)
za
        Validate that the cache key generated by _cache_key will be
        reasonable.
        zdata dependent outputzdynamic output shapezinplace viewzunsafe viewÚliftzinductor::resize_storage_bytes_znon-builtinÚCompositeImplicitAutogradN)ro   ÚTagÚdata_dependent_outputÚtagsr  Údynamic_output_shapeÚinplace_viewÚatenÚ_unsafe_viewrœ  Úlift_fnsrC  Ú_libraryÚutilsÚ
is_builtinÚis_viewrp   Ú%_dispatch_has_kernel_for_dispatch_keyÚDispatchKeyro  )rQ   ra   r”  r•  s       rH   r`  z"FakeTensorMode._validate_cache_keyj  s'  € ô �9‰9×*Ñ*¨d¯i©iÑ7Ü&Ð'>Ó?Ð?ä�9‰9×)Ñ)¨T¯Y©YÑ6Ü&Ð'=Ó>Ð>ä�9‰9×!Ñ! T§Y¡YÑ.Ü& ~Ó6Ð6à”4×$Ñ$×,Ñ,Ò,Ü& }Ó5Ð5à�4—=‘=Ñ Ü& vÓ.Ð.à�9‰9‹;Ð;Ò;Ü&Ð'HÓIÐIä�~‰~×#Ñ#×.Ñ.¨tÔ4Ü& }Ó5Ð5ð
 �<Š<œEŸH™H×JÑJØ�I‰I‹KœŸ™×-Ñ-×GÑGô
ô 'Ð'BÓCÐCð
ˆ<rG   c                ó¨  — t        |t        «      rC| j                  ||j                  «       |«       | j                  ||j	                  «       |«       y|D �]y  }t        |t
        «      r¬| j                  |«      st        d«      ‚|j                  �t        d«      ‚t        |«      rt        |j                  › d�«      ‚t        |j                  «       j                  «       t        «      rt        d«      ‚t        |«      }|j                  || |«       ŒÀt        |t         «      rt        d«      ‚t        |t        «      r|j#                  ||«       Œþt        |t$        t&        f«      rt        d«      ‚t        |t(        t*        t        f«      r| j                  |||«       �ŒO|j-                  t/        |«      «       |j-                  |«       �Œ| y)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.
        Nznot our fakeúconstant attributez tensorzsymbolic nbytesznon-fake tensorzsymbolic shape)ry   ri   rá  ÚkeysÚvaluesr‘   r7  r  rÓ   r#   rÁ   rì  rí  r   rî  rç  r   râ  r   r   rß  rÞ  rz   r’   )rQ   rã  r”  rå  r¦  r  s         rH   rá  z"FakeTensorMode._prep_args_for_hash”  sy  € ô �dœDÔ!Ø×$Ñ$ V¨T¯Y©Y«[¸%Ô@Ø×$Ñ$ V¨T¯[©[«]¸EÔBØàó 	#ˆCÜ˜#œzÔ*Ø×'Ñ'¨Ô,Ü.¨~Ó>Ð>Ø—<‘<Ð+Ü.Ð/CÓDÐDÜ  Ô%Ü.°#·*±*°¸WÐ/EÓFÐFô ˜c×1Ñ1Ó3×:Ñ:Ó<¼fÔEÜ.Ð/@ÓAÐAÜ2°3Ó7�Ø×&Ñ& v¨t°UÕ;Ü˜C¤Ô(Ü*Ð+<Ó=Ð=Ü˜C¤Ô(Ø×%Ñ% f¨cÕ2Ü˜C¤'¬8Ð!4Ô5Ü*Ð+;Ó<Ð<Ü˜C¤$¬¬tÐ!4Ô5Ø×(Ñ(¨°°eÖ<ð
 —‘œd 3›iÔ(Ø—‘˜cÖ"ñ7	#rG   c                ó¨  ‡— |€t        ddd¬«      S t        |t        «      st        d«      ‚|j                  �t        d«      ‚|j
                  rt        d«      ‚t        |«      rt        d«      ‚|j                  «       D ]$  }t        |«      t        |«      k(  sŒt        d«      ‚ t        t        |«      «      D ],  }t        ||   «      t        |«      k(  sŒt        |dd¬«      c S  d}	|j                  rCt        |«      D �
�cg c]  \  }
}t        |t        «      sŒ|
‘Œ }}
}t        |«      dk(  sJ ‚|d	   }	t        |«      }t        ˆfd
„|j                   D «       «      |_        t        ˆfd„|j"                  D «       «      |_        ‰j%                  |j&                  «      |_        |j(                  €dn‰j%                  |j(                  «      |_        t        d||	¬«      }| j+                  ‰||||«      }t,        j.                  j1                  |«      }t,        j.                  j1                  |«      }||k7  rt        d«      ‚|S c c}}
w )z¸
        Make a cache entry object for the given 'output' Tensor. Raises
        _BypassDispatchCache if the output tensor has characteristics that
        prevent caching it.
        N)r  r  r  znon-FakeTensor outputr  zsparse outputzsparse compressed outputzkwarg aliases outputr7   r   c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrn   ©Úconvert_output©r‹   rè   rå  s     €rH   r�   z3FakeTensorMode._make_cache_entry.<locals>.<genexpr>ù  s   øè ø€ ÒO¸1˜u×3Ñ3°A×6ÑOùó   ƒc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrn   r„  r†  s     €rH   r�   z3FakeTensorMode._make_cache_entry.<locals>.<genexpr>ú  s   øè ø€ ÒQ¸A × 4Ñ 4°Q× 7ÑQùr‡  zdispatch_key_set mismatch)r   ry   r‘   r  rÓ   rÃ   r$   r�  r  Úranger�  r{  Ú	enumerater   rî  rÞ  rÎ  rÏ  r…  rÒ  rÓ  r^  ro   rp   Ú_dispatch_key_set)rQ   rå  r„   ra   r”  r•  rc  ÚkvalÚidxr  Úir¦   Úidxsr  rd  Úsynth_outputÚsynth_key_setÚkey_sets    `                rH   rb  z FakeTensorMode._make_cache_entryÂ  s-  ø€ ð ˆ>Ü&°4À$ÐQUÔVÐVô ˜&¤*Ô-Ü&Ð'>Ó?Ð?ð �?‰?Ð&Ü&Ð';Ó<Ð<ð ×ÒÜ& Ó7Ð7ä Ô'Ü&Ð'AÓBÐBð —M‘M“Oò 	CˆDÜ�$‹xœ2˜f›:Ó%Ü*Ð+AÓBÐBð	Cô
 œ˜T›Ó#ò 	ˆCÜ�$�s‘)‹}¤ 6£
Ó*Ü*Ø #¨d¸Tôò ð	ð ˆØ�<Š<Ü"+¨D£/×K™$˜!˜Q´ZÀÄ6Õ5J’AÐKˆDÑKÜ�t“9 ’>Ð!�>Ø˜A‘wˆHä*¨6Ó2ˆÜÓOÀÇÁÔOÓOˆŒÜÓQÀÇÁÔQÓQˆŒØ"'×"6Ñ"6°x×7NÑ7NÓ"OˆÔð ×%Ñ%Ð-ñ à×%Ñ% h×&<Ñ&<Ó=ð 	Ôô $ØØØô
ˆð ×4Ñ4°U¸EÀ3ÈÈdÓSˆô Ÿ™×2Ñ2°<Ó@ˆÜ—(‘(×,Ñ,¨VÓ4ˆØ˜GÒ#Ü&Ð'BÓCÐCàˆùóE Ls   ÄIÄ Ic           
     ó   ‡‡‡— |j                   �#||j                      }t        |t        «      sJ ‚|S |j                  }|€yt	        |«      rJ ‚	 	 	 	 	 	 dˆfd„Št        ˆˆfd„|j                  D «       «      }t        ˆˆfd„|j                  D «       «      }	 ‰|j                  ‰«      }
|j                  €dn ‰|j                  ‰«      }t        j                  }| j                  �| j                  j                  }t        | «      5   |«       5  t        j                   ||	|j"                  |j$                  d|j&                  ¬«      }ddd«       ddd«       |j(                  r t        j*                  j-                  d«       |j.                  r t        j*                  j1                  d«       |j2                  rw|t5        t6        |j8                  «         }t        |t        «      sJ ‚|j;                  «       }t        | «      5   |«       5  j=                  ||
||	«       ddd«       ddd«       t        | |j>                  «      S # 1 sw Y   �ŒxY w# 1 sw Y   �Œ	xY w# 1 sw Y   ŒBxY w# 1 sw Y   ŒFxY w)	z?
        Create a new FakeTensor from the cache entry.
        Nc                ó    •— t        | t        «      r*|j                  €J ‚| j                  ‰|j                  «      S t        | t        «      rJ ‚| S rn   )ry   r:   rõ   rŽ  r9   )r  rå  r„   s     €rH   Úcheck_valuez<FakeTensorMode._output_from_cache_entry.<locals>.check_value0  sJ   ø€ ô ˜%Ô!2Ô3Ø—‘Ð2Ð2Ð2Ø—}‘} S¨%¯/©/Ó:Ð:ä% e¬_Ô=Ð=Ð=Ø�rG   c              3  ó0   •K  — | ]  } ‰|‰«      –— Œ y ­wrn   rF   ©r‹   rè   r•  rå  s     €€rH   r�   z:FakeTensorMode._output_from_cache_entry.<locals>.<genexpr>:  s   øè ø€ ÒD°‘k ! U×+ÑDùó   ƒc              3  ó0   •K  — | ]  } ‰|‰«      –— Œ y ­wrn   rF   r—  s     €€rH   r�   z:FakeTensorMode._output_from_cache_entry.<locals>.<genexpr>;  s   øè ø€ ÒF°‘{ 1 e×,ÑFùr˜  r"  )r  rÁ   r  r‚  T)r  rÑ  rå  r8   rW   zUnion[IntLikeType]) r  ry   r‘   r  r#   rÞ  rÎ  rÏ  rÒ  rÓ  Ú
contextlibÚnullcontextrõ   Úsuppress_guardsr>  ro   Úempty_stridedr  rÁ   r‚  rÔ  rp   Ú	_set_conjrÕ  Ú_set_negr{  r   rò  r  rì  Úset_r  )rQ   rå  rd  r„   ra   r”  Úinplace_argr  rÎ  rÏ  rÒ  rÓ  Úmaybe_suppressr2  Úview_argÚstorager•  s    ` `            @rH   r^  z'FakeTensorMode._output_from_cache_entry  sB  ú€ ð ×ÑÐ(à˜u×0Ñ0Ñ1ˆKÜ˜k¬:Ô6Ð6Ð6ØÐð —>‘>ˆØÐØä  Ô*Ð*Ð*ð	Ø#ð	Ø,:ð	àõ	ô ÔD°X·^±^ÔDÓDˆÜÔF°h·o±oÔFÓFˆÙ$ X×%<Ñ%<¸eÓDˆð ×%Ñ%Ð-ñ á˜X×3Ñ3°UÓ;ð 	ô ?I×>TÑ>TˆØ�>‰>Ð%Ø!Ÿ^™^×;Ñ;ˆNä)¨$Ó/ñ 	±Ó1Añ 	Ü×'Ñ'ØØØ—n‘nØ—‘ØØ&×4Ñ4ôˆE÷	÷ 	ð ×ÒÜ�H‰H×Ñ˜u dÔ+Ø�?Š?Ü�H‰H×Ñ˜e TÔ*à�<Š<àœD¤ e§n¡nÓ5Ñ6ˆHÜ˜h¬
Ô3Ð3Ð3Ø×.Ñ.Ó0ˆGÜ-¨dÓ3ñ C±^Ó5Eñ CØ—
‘
˜7 N°E¸6ÔB÷C÷ Cô ˜$  x§¡Ó7Ð7÷/	ñ 	ú÷ 	ñ 	ú÷(Cð Cú÷ Cð CúsH   Ä
IÄ:IÅIÈ
I4ÈI(È'I4ÉI	ÉIÉI%É(I1	É-I4É4I=c                ó
  — 	 | j                  ||||«      }	 |�|�t        t        ||«       y|�J ‚|�J ‚y# t        $ r}t        d|› d|› d|› d|› �«      |‚d}~ww xY w# 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.
        z*FakeTensor cache crosscheck failure: func=z, args=z	, kwargs=z: Dispatch raised=N)ra  Ú	Exceptionr­  r"   r!   )rQ   rc  ra   r£  r”  r•  Útrue_outputre  s           rH   r_  z'FakeTensorMode._crosscheck_cache_output`  sØ   € ð	Ø×-Ñ-¨d°E¸4ÀÓHˆKð
	ØÐ'¨fÐ.@Ü"¤9¨k¸6ÕBà"Ð*Ð*Ð*Ø�~Ð%‘~øô ò 	ÜØ<¸T¸Fð CØ�v˜Y v hÐ.@ÀÀðEóð ðûð	ûô ò 	ÜØ<¸T¸Fð CØ�v˜Y v hð0óð ðûð	ús0   ‚6 —A ­A ¶	A¿AÁAÁ	BÁ(A=Á=Bc                ó  — |xs i }t        «       5  t        j                  d|||«       d d d «       |t        v rt        |   |«      S t        j	                  «       t
        j                  k  r(t        j                  ddt        z  |«       t        «       }|t        v rt        | «      5   ||i |¤Žcd d d «       S | j                  r| j                  ||||«      S | j                  ||||«      S # 1 sw Y   ŒÅxY w# 1 sw Y   ŒIxY w)Nz%s %s %sz'%sFakeTensorMode.__torch_dispatch__: %sú )r.   r  rM  rž  ÚgetEffectiveLevelÚloggingÚDEBUGrO   rK   Ú_DISPATCH_HANDLE_DIRECTLYr>  r'  rf  ra  )rQ   ra   r£  r”  r•  Úincrs         rH   rA  zFakeTensorMode.dispatch  sÿ   € ð ’˜2ˆÜ‹]ñ 	6Ü�I‰I�j $¨¨fÔ5÷	6ð Ô*Ñ*Ü*¨4Ñ0°Ó6Ð6ä× Ñ Ó"¤g§m¡mÒ3Ü�I‰IØ9¸3ÄÑ;PÐRVôô +Ó,ˆDð Ô,Ñ,ä-¨dÓ3ñ -Ù˜TÐ, VÑ,÷-ñ -ð ×ÒØ×-Ñ-¨d°E¸4ÀÓHÐHà×&Ñ& t¨U°D¸&ÓAÐA÷/	6ð 	6ú÷"-ð -ús   ‘C.Â(C:Ã.C7Ã:Dc           
     ó€  ‡ ‡‡&‡'‡(‡)‡*‡+‡,‡-‡.‡/— t         j                  ||f«      \  Š*Š&t        ‰*«      }|r@‰*D �cg c]  }t        |«      sŒt	        |«      ‘Œ }}t        j                  d|«       t        S ‰*D �cg c]  }‰ j                  |«      sŒ|‘Œ }	}t        d„ |	D «       «      xs t        d„ ‰*D «       «      Š,‰ j                  Š(‰‰ j                  v }
|
r|	rt        ‰«      rÆ‰,sÄ|	sÂt        d„ |	D «       «      s
J ‰› d�«       ‚‰*D �cg c]!  }‰ j                  |«      r|j                  n|‘Œ# }}t         j                  |‰&«      \  }} ‰|i |¤Ž}t	        |«      t         u rH‰ j#                  |«      r7t%        «       5  |j'                  «       }d d d «       ‰(j)                  ‰ |d¬«      S |
rQt+        |«      dk(  rt+        |«      d	k(  sJ |› d
|› �«       ‚t	        |d   «      t         u r‰(j)                  ‰ |d   «      S d}‰ j,                  rr‰t.        j0                  j2                  j4                  j6                  k(  rd|v r
|d   dk7  rd}‰t.        j0                  j8                  j:                  j6                  k(  rd}‰ j=                  ‰‰(‰*‰&«      \  Š*}	~~t        d„ |	D «       «      }t.        j>                  j@                  ‰jB                  v�rt.        j>                  jD                  ‰jB                  vrö|rôt+        |	«      dk7  ræ‰,sä|sâ‰*D �cg c]!  }‰ j                  |«      r|j                  n|‘Œ# }}t         j                  |‰&«      \  }}t%        «       5   ‰|i |¤Ž}d d d «       t         jG                  «      }|D �cg c]  }tI        |t         «      sŒ|‘Œ }}t        ˆ fd„|D «       «      }|rt         jK                  t         ˆ(ˆ fd„|«      S |D ]  }‰(jM                  |«       Œ t         j                  ‰*‰&«      \  }}‰ jO                  ‰|	||«       d ˆ fd„}ddl(m)Š'm*Š+ tW        «       Š-‰-Š.‰ jX                  r_t        d„ |	D «       «      rMt        ˆ+ˆ ˆ/fd„‰*D «       «      s7‰*D �cg c]
  } ||«      ‘Œ }}t         j                  |‰&«      \  }} ‰|i |¤ŽŠ.nG‰ jX                  r;tZ        j                  d‰|	‰*‰ j\                  r‰ j\                  j^                  nd «       d!ˆ'ˆ+ˆ-ˆ.ˆ fd„}‰,r-ta        «       jc                  ‰«      }|� | |‰ g|¢­i |¤Ž«      S ddl2m3} ‰|vr‚‰ ji                  ‰«      sqddl2m5} ‰|v r6‰,stm        ‰«      r)t        d„ |	D «       «      r‰ 5   |‰   |i |¤Žcd d d «       S ‰ 5   ‰jn                  |i |¤Ž}|t        ur|cd d d «       S 	 d d d «       d‰jp                  jr                  v r;tu        ‰d«      r/tw        ‰«      s$‰ 5   | ‰jx                  |i |¤Ž«      cd d d «       S t.        jz                  j|                  j~                  j�                  ‰js                  «       «      j‚                  j„                  }|r|t.        jz                  j‚                  j‡                  ‰ ‰«      Š)t.        jz                  j‚                  j‰                  ˆ)fd„«      5  ‰ 5   ||i |¤Ž} ||«      cd d d «       cd d d «       S tŠ        D ]-  \  } }! | ‰«      sŒ |!‰ ‰g|¢­i |¤Ž}"|"t        usŒ% ||"«      c S  	 d"	 	 	 d#ˆ&ˆ*ˆˆ,ˆ fd„}#t�        ‰«      s |#«       }$ ||$«      S 	 t�        ‰ «      5   ‰|i |¤Ž}d d d «        |‰ j—                  ‰‰*|jc                  d«      ¬«      «      S c c}w c c}w c c}w # 1 sw Y   �ŒøxY wc c}w # 1 sw Y   �Œ7xY wc c}w c c}w # 1 sw Y   �Œ?xY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒÕxY w# 1 sw Y   nxY wd d d «       �Œ# 1 sw Y   �Œ%xY w# 1 sw Y   ŒµxY w# t�        $ r}% |#|%«      cY d }%~%S d }%~%wt’        $ r tZ        j•                  d‰«       ‚ w xY w)$Nz,FakeTensorMode unrecognized subclass(es): %sc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrn   )rê  )r‹   rŽ  s     rH   r�   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>¼  s   è ø€ ò !
Ø./ˆA×)Õ)ñ!
ùó   ‚c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrn   )ry   r   )r‹   rL  s     rH   r�   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>¾  s   è ø€ Ò:¨1”˜Aœv×&Ñ:ùs   ‚c              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrn   rð   )r‹   r¦   s     rH   r�   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>Ñ  s   è ø€ ò Ø+,�—
‘
 $Ô&ñùó   ‚z. should not have fake inputs without constantsT©ró   r   r7   r©  Fr  rø   c              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrn   rð   ©r‹   re  s     rH   r�   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>  ó   è ø€ ÒQ°a˜1Ÿ:™:¨TÔ1ÑQùr´  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrn   )Úmay_turn_const)r‹   r¦   rQ   s     €rH   r�   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>"  s   øè ø€ ÒP¸!˜t×2Ñ2°1×5ÑPùr‡  c                ó,   •— ‰j                  ‰| d¬«      S )NTrµ  )r   )r¦   Ú	converterrQ   s    €€rH   ú<lambda>z/FakeTensorMode._dispatch_impl.<locals>.<lambda>'  s   ø€ ˜i×8Ñ8¸¸qÐPTÐ8ÓU€ rG   c                óf  •— t        | t        «      r| j                  S t        | t        «      rƒ‰j                  €J ‚| j
                  j                  | j
                  j                  j                  ‰j                  j                  «      j                  ‰j                  j                  «      «      S | S rn   )ry   r‘   rq  r,   rõ   ÚnodeÚpytypeÚexprÚxreplaceÚ
var_to_valÚunbacked_var_to_val)r¦   rQ   s    €rH   Úmaybe_to_real_tensorz;FakeTensorMode._dispatch_impl.<locals>.maybe_to_real_tensor5  s…   ø€ Ü˜!œZÔ(Ø—}‘}Ð$Ü˜Aœ|Ô,Ø—~‘~Ð1Ð1Ð1Ø—v‘v—}‘}Ø—F‘F—K‘K×(Ñ(¨¯©×)BÑ)BÓC×LÑLØŸ™×:Ñ:óóð ð �rG   )Úcompute_unbacked_bindingsÚfree_unbacked_symbolsc              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrn   )rq  r·  s     rH   r�   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>L  s   è ø€ ÒM°!�A—M‘M¨Ô-ÑMùr´  c              3  ó¢   •K  — | ]F  }t        |t        «      xr0  ‰|«      xŠxr$ ‰j                  d uxr t        ˆfd„‰D «       «      –— ŒH y ­w)Nc              3  óN   •K  — | ]  }|‰j                   j                  v–— Œ y ­wrn   )rõ   rÄ  )r‹   ÚsrQ   s     €rH   r�   z:FakeTensorMode._dispatch_impl.<locals>.<genexpr>.<genexpr>S  s    øè ø€ ÒVÈA˜A T§^¡^×%GÑ%GÔGÑVùs   ƒ"%)ry   r   rõ   r”   )r‹   rL  rÇ  rQ   Úsymss     €€€rH   r�   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>N  sd   øè ø€ ò ð ô ˜q¤&Ó)ò WÙ!6°qÓ!9Ð9˜òWàŸ™¨dÐ2òWô ÓVÐQUÔVÓVóWñùs   ƒAAz,propagate_real_tensors skipped %s(%s, %s) %sc                ón   •‡— dd l Šdˆˆˆfd„}‰‰ur"t        || ‰«        ‰‰j                  | d¬«       | S )Nr   c                ó<  •— t        | t        «      r|| _        y t        | t        «      rs ‰| «      rjt        | j                  j
                  ‰j                  «      r?‰j                  €J ‚‰j                  j                  | j                  j
                  |«       y y y y rn   )	ry   r‘   rq  r,   r¿  rÁ  ÚSymbolrõ   Úset_unbacked_var_to_val)r¦   Úreal_trÇ  rQ   Úsympys     €€€rH   ÚgozOFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensors.<locals>.gom  sv   ø€ Ü˜a¤Ô,à$*�A•MÜ ¤<Ô0Ñ5JÈ1Ô5MÜ! !§&¡&§+¡+¨u¯|©|Ô<Ø#Ÿ~™~Ð9Ð9Ð9ØŸ™×>Ñ>¸q¿v¹v¿{¹{ÈFÕSð =ð 6NÐ0rG   T)Úpeek)r¦   r³  rÑ  r   rW   rX   )rÒ  r3   rõ   )Úfake_outrÓ  rÒ  rÆ  rÇ  ÚnilÚreal_outrQ   s     @€€€€€rH   Úmaybe_propagate_real_tensorszCFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensorsj  s9   ù€ Û÷Tð ˜sÑ"Ü˜"˜h¨Ô1ñ
 *¨$¯.©.¸(ÈÕNàˆOrG   )Ú
meta_tabler°   c              3  ó4   K  — | ]  }t        |«       –— Œ y ­wrn   )r#   r·  s     rH   r�   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>“  s   è ø€ ÒP°Q¤¨aÓ 0Ô0ÑPùr±  zprims::Úprim_meta_implc                 ó   •— ‰ S rn   rF   )Úctxs   €rH   r½  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>¶  s   ø€ À€ rG   c                óÌ   •— t         j                  j                  j                  ‰«      ry ‰s‰j	                  ‰«      st        ‰«      ‚| €t        ‰«      } t        ‰‰‰‰| «      S rn   )ro   rx  ry  Úcan_generate_trivial_fake_implÚcan_run_unsafe_fallbackrf   Úrun_fallback_kernel)ÚerrorÚ	args_specr´  ra   Úhas_symbolic_sizesrQ   s    €€€€€rH   Úmaybe_run_unsafe_fallbackz@FakeTensorMode._dispatch_impl.<locals>.maybe_run_unsafe_fallbackÃ  s]   ø€ ô �~‰~×#Ñ#×BÑBÀ4ÔHØá!¨×)EÑ)EÀdÔ)KÜ2°4Ó8Ð8Øˆ}Ü4°TÓ:�Ü& t¨T°9¸iÈÓOÐOrG   z*failed while attempting to run meta for %sr-  )r¦   rI   rW   zOptional[Union[T, Tensor]])rÕ  rI   rW   rI   rn   )râ  zOptional[RuntimeError]rW   r$  )Lr¹   Útree_flattenÚ_check_for_subclassÚ_check_for_subclass_argr’   r   rM  r  r7  r”   r!  rw  rE  r“   rÓ   Útree_unflattenr   rº  r.   Úcloner   r�  r:  ro   rš  ru  Ú_to_copyrœ  ÚprimsÚ
device_putÚ%validate_and_convert_non_fake_tensorsrp  Únondeterministic_seededrr  rt  rº   ry   Útree_map_onlyrß   Úinvalidate_written_to_constantsr  rÆ  rÇ  r³  r   r  rõ   rÄ  Úget_fast_op_implsrã   r²   rÙ  Úcpp_meta_supports_symintr±   r·   Ú	decomposer¬   rC  ÚhasattrÚstride_incorrect_oprÛ  rx  Úsimple_registryÚ	singletonÚfindÚ	fake_implÚkernelÚFakeImplCtxÚset_ctx_getterÚop_implementations_checksÚhas_metar>  rv  r¦  rC  Ú+wrap_meta_outputs_with_default_device_logic)0rQ   ra   r£  r”  r•  Úhas_unrecognized_typesrŒ   r¥  r¦   Úflat_arg_fake_tensorsÚis_lift_funcrL  Úconst_flat_argsÚ
const_argsÚconst_kwargsr  Úavoiding_device_initÚall_constantÚflat_outÚflat_out_tensorsrÞ   rÅ  Úreal_flat_argsÚ	real_argsÚreal_kwargsrØ  Ú	fast_implrÙ  r±   rh  Úmaybe_fake_implrã  Úrun_impl_checkÚop_implÚop_impl_outrå  ÚfallbackÚnot_implemented_errorrã  rÆ  r¼  rÝ  r´  rÇ  rä  rÖ  r×  rÌ  s0   ``                                    @@@@@@@@@@rH   ra  zFakeTensorMode._dispatch_impl   sl  ÿû€ ô  &×2Ñ2°D¸&°>ÓBÑˆ	�9ô "5°YÓ!?ÐÙ!à!*ö"ØÔ.EÀaÕ.H”�Q•ð"Ðð "ô  ×%Ñ%Ø>Ð@Rôô "Ð!à,5Ö M q¸×9IÑ9IÈ!Õ9L¢Ð MÐÐ MÜ ñ !
Ø3Hô!
ó 
ò ;äÑ:°	Ô:Ó:ð 	ð ×.Ñ.ˆ	à˜tŸ}™}Ð,ˆñ Ñ!6Ü+¨DÔ1Ù&Ù)äñ Ø0Eôô ð Gà�ÐEÐFóGð ð CLöØ=>˜d×.Ñ.¨qÔ1�—
’
°qÑ8ðˆOð ô (.×'<Ñ'<¸_ÈiÓ'XÑ$ˆJ˜Ù˜
Ð3 lÑ3ˆCÜ�C‹yœFÑ" t×':Ñ':¸3Ô'?ô !“]ñ &ØŸ)™)›+�C÷&à ×1Ñ1°$¸È4Ð1ÓPÐPñ Ü�v“; !Ò#¬¨D«	°QªÐJ¸4¸&ÀÀ&ÀÐ8JÓJÐ6ä�D˜‘G‹}¤Ñ&Ø ×1Ñ1°$¸¸Q¹Ó@Ð@ð  %ÐØ×!Ò!àœŸ	™	Ÿ™×/Ñ/×7Ñ7Ò7Ø Ñ&Ø˜8Ñ$¨Ò-à'+Ð$Ø”u—y‘y—‘×1Ñ1×9Ñ9Ò9Ø'+Ð$ð .2×-WÑ-WØ�)˜Y¨	ó.
Ñ*ˆÐ)ð �&ô ÑQÐ;PÔQÓQˆä�I‰I×-Ñ-°T·Y±YÒ>Ü—	‘	×&Ñ&¨d¯i©iÑ7ÙÜÐ)Ó*¨aÒ/Ù&Ù(ð CLöØ=>˜d×.Ñ.¨qÔ1�—
’
°qÑ8ðˆOð ô (.×'<Ñ'<¸_ÈiÓ'XÑ$ˆJ˜ô “ñ 8Ù˜JÐ7¨,Ñ7�÷8ô ×)Ñ)¨#Ó.ˆHØ+3ÖM a´zÀ!ÄVÕ7L¢ÐMÐÐMÜÓPÐ?OÔPÓPˆLáÜ×+Ñ+ÜÜUØóð ð (ò ;�Ø×5Ñ5°cÕ:ð;ô
 ×,Ñ,¨Y¸	ÓB‰ˆˆfØ×,Ñ,¨TÐ3HÈ$ÐPVÔWõ	÷	
ô
 ‹hˆàˆà×'Ò'ÜÑMÐ7LÔMÔMäõ ð #ôô ð @IÖI¸!Ñ2°1Õ5ÐIˆNÐIÜ%+×%:Ñ%:¸>È9Ó%UÑ"ˆI�{Ù˜YÐ6¨+Ñ6‰HØ×(Ò(ô �I‰IØ>ØØ%ØØ6:·n²n�—‘×2Ò2È$ô÷	ñ 	ñ. Ü)Ó+×/Ñ/°Ó5ˆIØÐ$Ù3±I¸dÐ4TÀTÒ4TÈVÑ4TÓUÐUõ 	;à�zÑ!¨$×*GÑ*GÈÔ*MÝ9ð Ð*Ñ*Ù"ô 0°Ô5ÜÑPÐ:OÔPÔPð ñ FØ4Ð.¨tÑ4°dÐE¸fÑE÷Fñ Fð ñ à"�D—N‘N DÐ3¨FÑ3�ØœNÑ*Ø÷	ñ ð +÷ð ˜Ÿ™×*Ñ*Ñ*Ü˜Ð.Ô/Ü'¨Ô-àñ Ù3Ø'�D×'Ñ'¨Ð8°Ñ8ó÷ñ ô  Ÿ.™.×8Ñ8×BÑB×GÑGØ�I‰I‹Kó
ç
‰)—F‘Fð 	ñ Ü—.‘.×*Ñ*×6Ñ6°t¸TÓBˆCÜ—‘×)Ñ)×8Ñ8»ÓEñ <Àtñ <Ù(¨$Ð9°&Ñ9�Ù3°FÓ;÷<÷ <ò <ô (Aò 	EÑ#ˆN˜GÙ˜dÕ#Ù% d¨DÐB°4ÒB¸6ÑB�Ø¤nÒ4Ù7¸ÓDÒDð		Eð -1ð	PØ)ð	Pà!÷	Pñ 	Pô" ˜Œ~Ù0Ó2ˆHÙ/°Ó9Ð9ð
	Ü-¨dÓ3ñ *Ù˜$Ð) &Ñ)�÷*ñ ,Ø×<Ñ<Ø�4˜¨6¯:©:°hÓ+?ð =ó ó
ð 	
ùòc	"ùò !Nùò2÷&ñ &üòn÷8ñ 8üò  Nùòn J÷|Fñ Fú÷ñ ú÷"ñ ú÷<ð <ú÷ <÷ <ó <ú÷L*ð *ûä"ò 	DÙ,Ð-BÓCÕCûÜò 	Ü�M‰MÐFÈÔMØð	úsË   ¸]5Á	]5Á8]:Â]:Ä&]?Å=^Ì&^Í	^Î^#Î^#Ñ*^(Õ#^-Õ:^:×_Ú)_*Ú,_Ú<	_*Ü/` Ü:	_7Ý` Þ^Þ^ Þ-^7Þ:_ß_ß_	ß_*ß*_4ß7` ß<` à	`=à`à`=à$`=Ú
debugprimsrì  ru  ÚxlaÚvisionÚ	torchtextÚ
torchaudioÚ	quantizedc                óv   — | j                   sy|j                  | j                  v xs |j                  «       dk(  S )NFzfbgemm::gmm)r  Ú	namespaceÚ+_can_run_unsafe_fallback_allowed_namespacesrC  ©rQ   ra   s     rH   rà  z&FakeTensorMode.can_run_unsafe_fallbackú  s:   € Ø×*Ò*Øð
 �N‰N˜d×NÑNÐNò ,Ø�y‰y‹{˜mÑ+ð	
rG   c                ód   ‡ ‡‡‡‡‡— g Šdˆˆˆˆˆˆ fd„}‰D �cg c]
  } ||«      ‘Œ }}|‰fS c c}w )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.
        c                ó  •— t        | t        «      s| S ‰	j                  | «      sÒt        j                  j
                  ‰j                  v r2t        j                  ‰‰«      \  }}t        dt        ‰||«      › �«      ‚‰	j                  s[t        | t        «      r| j                  ‰	urt        d«      ‚t        j                  ‰‰«      \  }}t        dt        ‰||«      › �«      ‚‰j                  ‰	| «      }n| }‰j                  |«       |S )NzECan't call metadata mutating ops on non-Fake Tensor inputs. Found in zMixing fake modes NYIzuPlease convert all Tensors to FakeTensors first or instantiate FakeTensorMode with 'allow_non_fake_inputs'. Found in )ry   r   r7  ro   rp  rt  rr  r¹   ré  ÚAssertionErrorr&   r  r‘   r¤   r   rz   )
rŒ   r”  r•  r  rã  r¼  r  r´  ra   rQ   s
       €€€€€€rH   ÚvalidatezFFakeTensorMode.validate_and_convert_non_fake_tensors.<locals>.validate  s  ø€ Ü˜a¤Ô(Ø�ð ×#Ñ# AÔ&Ü—9‘9×)Ñ)¨T¯Y©YÑ6Ü#)×#8Ñ#8¸ÀIÓ#N‘L�D˜&Ü(Ø_Ô`kÐlpÐrvÐx~Ó`ð  `Að  Bóð ð ×1Ò1Ü! !¤ZÔ0°Q·[±[ÈÑ5LÜ,Ð-DÓEÐEÜ#)×#8Ñ#8¸ÀIÓ#N‘L�D˜&Ü(ðBÜBMÈdÐTXÐZ`ÓBaÐAbðdóð ð
  ×0Ñ0°°qÓ9‘à�à!×(Ñ(¨Ô-ØˆJrG   )rŒ   rI   rW   úUnion[T, FakeTensor]rF   )	rQ   ra   r¼  r´  rã  r"  rL  Úvalidated_argsr  s	   `````   @rH   rî  z4FakeTensorMode.validate_and_convert_non_fake_tensors  s?   ý€ ð 35Ð÷	ò 	ð6 09Ö9¨!™( 1�+Ð9ˆÐ9ØÐ4Ð4Ð4ùò :s   ˜-c                ó`   ‡ ‡‡‡‡‡‡— ‰ j                   Šd ŠdŠdˆˆˆˆˆˆˆ fd„}t        ||«      S )NFc                óR  •‡ — t        ‰ t        «      s‰ S ‰€t        j                  ‰‰«      \  ŠŠ‰j	                  ‰ «      }|r7t        j                  ‰ j                  ‰k(  ˆˆ fd„«       t        t        ‰ «      S ‰�+‰r‰j                  ‰‰ «      S ‰j                  ‰‰ ‰xs ‰«      S ‰ S )Nc                 ó(   •— d‰j                   › d‰ › �S )Nz-FakeTensor is wrapped to wrong device, found z, expected r-  )r¯  re  s   €€rH   r½  zZFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrap.<locals>.<lambda>O  s   ø€ ÐKÈAÏHÉHÈ:ÐU`ÐanÐ`oÐp€ rG   )ry   r   r‘   r¶  r7  ro   Ú_checkr  r   rI   r   r#  )	re  r7  r¯  r¼  r  r´  ra   rµ  rQ   s	   ` €€€€€€€rH   ÚwrapzHFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrap>  s¹   ù€ ô ˜a¤Ô(Ø�àÐ$ô ×2Ñ2°4¸ÓCñØ!Ø*ð ×*Ñ*¨1Ó-ˆKÙÜ—‘Ø—H‘H Ñ-Üpôô œA˜q“zÐ!ØÐ&Ù)ð %×5Ñ5°d¸AÓ>Ð>à$×9Ñ9Ø˜a Ò!8¨=óð ð �rG   ©re  rI   rW   r#  )r!  r2   )	rQ   rh  ra   r´  r  r)  r¯  r¼  rµ  s	   ` ``` @@@rH   r   z:FakeTensorMode.wrap_meta_outputs_with_default_device_logic1  s7   þ€ ð ×.Ñ.ˆ	ð ˆØ!&Ð÷	ó 	ôB ˜˜aÓ Ð rG   r¹  c               óŠ  — dd l }|€4| j                  }| j                  sJ d«       ‚| xj                  dz  c_        |j                  j	                  |d«      }|j
                  j                  j                  d«      }| j                  €J ‚| j                  j                  | j                  j                  ||¬«      ||¬«      }|S )Nr   z1should only called while FakeTensorMode is activer7   Úintermediate_offsets_or_lengths)Úvalrê   )Úsymrý   rê   )r.  r  r*  rp   Ú_get_nested_intr%  rê   ÚEphemeralSourcerõ   r  Úcreate_symbol)rQ   rº  ro   rý   ÚsrcÚrets         rH   r»  z)FakeTensorMode.create_symbolic_nested_inta  sÄ   € ó
 	4àÐØ×4Ñ4ˆLØ×#Ò#ÐXÐ%XÓXÐ#Ø×%Ò%¨Ñ*Õ%Ø�x‰x×'Ñ'¨°aÓ8ˆà�m‰m×"Ñ"×2Ñ2Ð3TÓUˆØ�~‰~Ð)Ð)Ð)Ø�n‰n×.Ñ.Ø—‘×,Ñ,ØØð -ó ð Øð /ó 
ˆð ˆ
rG   c                ól   — t         j                  j                  |j                  v ry|| j                  v S rh   )ro   rp  Ú	view_copyrr  Ú_cpp_meta_supports_symintr  s     rH   ró  z'FakeTensorMode.cpp_meta_supports_symintˆ  s,   € Ü�9‰9×Ñ $§)¡)Ñ+ØØ�t×5Ñ5Ð5Ð5rG   c                ó¬   — |j                  «       t        k  xr< t        |«       xr. | j                  |«       xr |j                  j
                  dk(   S rs  )ÚnumelÚCONSTANT_NUMEL_LIMITr#   r7  r  r’   r6  s     rH   rº  zFakeTensorMode.may_turn_const�  sV   € à�G‰G‹IÔ-Ñ-ò ,Ü! !Ó$Ð$ò,à×$Ñ$ QÓ'Ð'ò,ð —H‘H—M‘M VÑ+Ð+ð		
rG   c                óš  — t        d„ |D «       «      }t        |«      }|r¬|j                  «       r›t        |||d¬«      \  }}|j	                  «       D ]u  \  }	}
|	dk7  s|j                  |	«      r|	nd}	| j                  |
«      sŒ2|j                  |	«      sŒD|
j                  €ŒQ| j                  j                  |
j                  «       Œw y y y )Nc              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrn   rð   r·  s     rH   r�   zAFakeTensorMode.invalidate_written_to_constants.<locals>.<genexpr>ž  r¸  r´  T)r”  r•  Únormalize_to_only_use_kwargsÚinputrQ   )
r”   r®   Ú
is_mutabler(   rk   Úhas_argumentr7  rÓ   r!  rß   )rQ   ra   r  r”  r•  Úany_constantÚschema_inforƒ   Ú
new_kwargsÚkrè   s              rH   rñ  z.FakeTensorMode.invalidate_written_to_constants—  sÃ   € ô ÑQÐ;PÔQÓQˆÜ% dÓ+ˆÙ˜K×2Ñ2Ô4Ü.Ø˜4¨ÈTô‰MˆAˆzð #×(Ñ(Ó*ò W‘��1Ø˜wš,¨+×*BÑ*BÀ1Ô*E‘AÈF�à×$Ñ$ QÕ'Ø#×.Ñ.¨qÕ1ØŸ
™
Ñ.à×.Ñ.×JÑJÈ1Ï:É:ÕVñWð	 5ˆ<rG   )r  rê   rë   rì   c               ó’   — | j                   }|€| j                  }|r|�J d«       ‚d }| j                  j                  | |||||¬«      S )Nz2cannot set both static_shapes and symbolic_context)rõ   rê   rë   rì   )rõ   r  r!  r   )rQ   rÜ   r  rê   rë   rì   rõ   s          rH   r˜  zFakeTensorMode.from_tensor­  sn   € ð )-¯©ˆ	ØÐ Ø ×.Ñ.ˆMÙà Ð(ðDàCóDØ(àˆIØ×)Ñ)×:Ñ:ØØØØØ-Øð ;ó 
ð 	
rG   )r  rÍ   r  rÍ   rõ   r&  r  rÖ  rÎ   rÍ   rW   rX   rV   )r¦   r³  rW   zTypeGuard[FakeTensor])rW   rÍ   )rW   r[   rÀ  )rW   r   )rL  zOptional[Type[BaseException]]rM  zOptional[BaseException]rN  zOptional[TracebackType]rW   rX   )rW   r  )
rå  r8   ra   r=   r”  rÂ  r•  rÃ  rW   rð  )ra   r=   r”  rÂ  r•  rÃ  rW   rX   )rã  rè  r”  z?Union[Mapping[str, object], Sequence[object], Iterable[object]]rå  r8   rW   rX   )rå  r8   r„   rð  ra   r=   r”  rÂ  r•  rÃ  rc  r$  rW   r   )rå  r8   rd  r   r„   rð  ra   r=   r”  rÂ  rW   r$  )rc  r$  ra   r=   r£  rÁ  r”  rÂ  r•  rÃ  rW   rX   )
ra   r=   r£  rÁ  r”  rÂ  r•  rÃ  rW   r$  ©ra   r=   rW   rÍ   )
ra   r=   r¼  rÈ   r´  rÂ  rã  r4   rW   z%Tuple[List[object], List[FakeTensor]])
rh  r³  ra   r=   r´  rÂ  r  r)  rW   r1   )rº  rØ  rW   rÄ  r²  )
ra   r=   r  zSequence[FakeTensor]r”  rÂ  r•  rÃ  rW   rX   )rÜ   r   r  rÖ  rê   r'  rë   r(  rì   rÍ   rW   r‘   )DrC   rD   rE   r  r^   r  r  r   rò  r  re  r7  r  r  rR   r4  r7  r*  r:  r?  r5   r'   r¨  rG  rK  rÉ  rS  rU  rX  rf  r[  r`  rá  rb  r^  r_  rA  ra  rl   r  rà  rî  r   r»  ru  r2  rÐ  r�  rœ  Úas_strided_scatterÚ
as_stridedÚas_strided_r3  ÚdetachÚview_as_realÚview_as_complexr   Úsource_Storage_storage_offsetÚ(_sparse_coo_tensor_with_dims_and_tensorsr6  ró  Ú
lift_freshÚlift_fresh_copyrw  rº  rñ  r˜  rÊ  rË  s   @rH   r%  r%  -  s  ø… Ø:<€EÐ7Ó<Ø€J�ÓØ€L�#ÓÙ%0°Ó%5€N�NÓ5ð €Eˆ3ƒNØ!&Ð˜$Ó&ØÓØ!Ó!ØÓØÓð !#Ð˜#Ó"Ø&(Ð Ó(ð
 (,Ø&+Ø(,Ø(,ð ñ!]Dð !%ð]Dð  $ð	]Dð
 &ð]Dð &ð]Dð  ð!]Dð" 
õ#]Dó~DóAð ò-ó ð-ð òó ðð
 ð
 "$Ù'5Ó'7ðàðð ðð ð	ð
 %ðð 
òó ðõ$ð(Và(ðVð #ðVð #ð	Vð
 
õVð& òó ðð ò	
ó ð	
ð òó ðð)àð)ð ð)ð ð	)ð
 %ð)ð 
ó)ðV 4àð 4ð ð 4ð ð	 4ð
 %ð 4ð 
ó 4ðD(Dàð(Dð ð(Dð %ð	(Dð
 
ó(DðT,#àð,#ð Nð,#ð ð	,#ð
 
ó,#ð\TàðTð ðTð ð	Tð
 ðTð %ðTð %ðTð 
óTðlF8àðF8ð #ðF8ð ð	F8ð
 ðF8ð ðF8ð 
óF8ðPà$ðð ðð ð	ð
 ðð %ðð 
óðF "$Ù'5Ó'7ðBàðBð ðBð ð	Bð
 %ðBð 
óBðBH
àðH
ð ðH
ð ð	H
ð
 %ðH
ð 
óH
ñ^
 3>ØØØØØØØØó	3Ð/ó	
ð*5àð*5ð 'ð*5ð $ð	*5ð
 ð*5ð 
/ó*5ðX.!àð.!ð ð.!ð $ð	.!ð
 ð.!ð 
ó.!ðb 04ñØ,ðà	óñ2 !,Ø�
‰
× Ñ Ø×Ñ×"Ñ"Ø×Ñ×'Ñ'Ø�‰×ÑØ×Ñ× Ñ Ø�
‰
×ÑØ�‰×ÑØ×Ñ×!Ñ!Ø×Ñ×$Ñ$Ø�	‰	×/Ñ/Ø×5Ñ5×=Ñ=ó!Ðó6ñ
 ˜4Ÿ?™?×2Ñ2°D×4HÑ4H×4PÑ4PÓQ€Hó
ðWàðWð  4ðWð ð	Wð
 %ðWð 
óWð4 )-Ø#'Ø6:Øñ
àð
ð &ð	
ð
 !ð
ð 4ð
ð ð
ð 
÷
rG   c                ó  ‡ ‡‡‡— t         j                  j                  |j                  v r‰‚i Št	        «       5  dˆ ˆfd„}|D �cg c]
  } ||«      ‘Œ }}t
        j                  ||«      \  }} ||i |¤Ž}	d d d «       t        «       Š|D ]H  }
t        |
t        «      sŒt        |
«      rŒ ‰j                  |
j                  «       j                  «       ŒJ dˆ ˆˆˆfd„}t
        j                  |	«      S c c}w # 1 sw Y   Œ„xY w)Nc                óâ   •— ‰j                  | «      r\t        j                  | | j                  ¬«      }| j                  r|j                  | j                  «       «       | ‰t        |«      <   |S | S )Nr-  )r7  ro   Ú
zeros_likero  rÃ   Ú_coalesced_r×  r  )re  r  r¤   Ú	inp_implss     €€rH   Úto_real_tensorz+run_fallback_kernel.<locals>.to_real_tensorß  sY   ø€ Ø×$Ñ$ QÔ'Ü×&Ñ& q°·±Ô?�Ø—;’;Ø—O‘O A§N¡NÓ$4Ô5Ø%&�	œ"˜S›'Ñ"Ø�
ØˆHrG   c                ó"  •— t        | «      ‰vr9t        | t        «      r)t        | «      s| j	                  «       j
                  ‰v r‰‚t        | t        «      r7t        | «      ‰v r‰t        | «         S ‰j                  j                  ‰| «      S | S rn   )r  ry   r   r#   rÔ   Ú_cdatar!  r   )re  r¤   rT  Úorig_not_implemented_exceptionÚstoragess    €€€€rH   Úmap_outz$run_fallback_kernel.<locals>.map_outù  s‚   ø€ Üˆa‹5˜	Ñ!Ü�qœ&Ô!Ü! !Ô$Ø× Ñ Ó"×)Ñ)¨XÑ5à0Ð0ä�aœÔ Ü�!‹u˜	Ñ!Ø ¤ A£Ñ'Ð'à ×6Ñ6×GÑGÈ	ÐSTÓUÐUàˆHrG   )re  rI   rW   zUnion[T, Tensor]r*  )ro   rp  rt  rr  r.   r¹   ré  Úsetry   r   r#   ÚaddrÔ   rW  r2   )r¤   ra   r´  rã  rX  rU  rL  r”  r•  rh  re  rZ  rT  rY  s   `   `       @@rH   rá  rá  Ì  sî   û€ ô ‡y�y×Ñ §¡Ñ*Ø,Ð,à€Iô 
‹ñ "ö	ð 1:Ö:¨1‘^ AÕ&Ð:ˆ	Ð:Ü×,Ñ,¨Y¸	ÓB‰ˆˆfá�$Ð!˜&Ñ!ˆ÷"ô  &)£U€Hàò 8ˆÜ�aœÕ Ü  Õ#Ø—‘˜Q×-Ñ-Ó/×6Ñ6Õ7ð8÷ð ô  �?‰?˜7 AÓ&Ð&ùòC ;÷"ð "ús   ¹C:ÁC5Á#C:Ã5C:Ã:Dc                  ó4   — e Zd Zdd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zy)ÚFakeCopyModec                ó   — || _         y rn   )r¤   )rQ   r¤   s     rH   rR   zFakeCopyMode.__init__	  s	   € Ø"ˆ�rG   Nc                ó¤  — |r|ni }|t         j                  j                  j                  k(  r<t	        |d   t
        «      sJ ‚ || j                  j                  |d   d¬«      fi |¤ŽS |t
        j                  k(  r™t        |«      dk(  rt        |«      dk(  sJ ‚t        t
        |d   «      }t        t        t        t        f   |d   «      }t        |«      |v r|t        |«         S | j                  j                  |d¬«      }||t        |«      <   |S t         j                  j                  «       5   ||i |¤Žcd d d «       S # 1 sw Y   y xY w)Nr   T)r  é   r7   )ro   rp   Ú
TensorBaserê  ry   r   r¤   r˜  Ú__deepcopy__r�  r   r	   rò  r‘   r  ÚDisableTorchFunctionSubclass)rQ   ra   r£  r”  r•  rÜ   Úmemor  s           rH   Ú__torch_function__zFakeCopyMode.__torch_function__	  s9  € ñ "‘ rˆð ”5—8‘8×&Ñ&×,Ñ,Ò,Ü˜d 1™g¤vÔ.Ð.Ð.ÙØ—‘×*Ñ*¨4°©7À$Ð*ÓGñØKQñð ð ”V×(Ñ(Ò(Ü�t“9 ’>¤c¨&£k°QÒ&6Ð6Ð6Üœ& $ q¡'Ó*ˆFÜœœS¤*˜_Ñ-¨t°A©wÓ7ˆDä�&‹z˜TÑ!ØœB˜v›JÑ'Ð'à—.‘.×,Ñ,¨VÀ4Ð,ÓHˆCØ"ˆD”�F“ÑØˆJä—‘×6Ñ6Ó8ñ -Ù˜TÐ, VÑ,÷-÷ -ò -ús   Ä4EÅE)r¤   r%  rW   rX   )rF   N)
ra   r=   r£  rÁ  r”  rÂ  r•  zOptional[Mapping[str, object]]rW   r‘   )rC   rD   rE   rR   rf  rF   rG   rH   r^  r^  	  sD   „ ó#ð "$Ø15ð-àð-ð ð-ð ð	-ð
 /ð-ð 
ô-rG   r^  c                óÂ   — t        | «      dk(  rt        | d   t        «      sJ ‚| d   j                  j                  rt        j                  d«      S | d   j                  S )Nr7   r   r"  )r�  ry   r‘   r¤   r7  ro   r  ro  ©r”  s    rH   Ú_device_handlerri  1	  sT   € ô ˆt‹9˜Š>œj¨¨a©´*Ô=Ð=Ð=ØˆA�w×Ñ×-Ò-Ü�|‰|˜FÓ#Ð#à�A‰w×"Ñ"Ð"rG   c                ó&   — t        d„ | D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   )rè  rŠ   s     rH   r�   z&_check_for_subclass.<locals>.<genexpr>J	  s   è ø€ Ò=¨aÔ& q×)Ñ=ùr�   )r”   )r´  s    rH   rç  rç  I	  s   € ÜÑ=°9Ô=Ó=Ð=rG   c                ó¼   — t        | t        «       xrJ t        | t        «      xr8 t        | «      t        uxr% t        | «      t        j
                  j                  uS rn   )ry   r‘   r   r’   ro   r  r  )rŒ   s    rH   rè  rè  M	  sQ   € ä�qœ*Ó%Ð%ò 	.Ü�qœ&Ó!ò	.ä�‹Gœ6Ð!ò	.ô �‹Gœ5Ÿ8™8×-Ñ-Ð-ð	rG   c                ód   — t        d„ t        t        | d   «      j                  «       D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   ©rò  ©r‹   rË  s     rH   r�   z<lambda>.<locals>.<genexpr>X	  s   è ø€ ò 4ØŒˆA�ñ4ùr�   r   )rÞ  r   r   r  rh  s    rH   r½  r½  X	  s,   € ¬eñ 4ÜœV T¨!¡WÓ-×2Ñ2Ó4ô4ó /€ rG   c                ód   — t        d„ t        t        | d   «      j                  «       D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   ro  rp  s     rH   r�   z<lambda>.<locals>.<genexpr>[	  s   è ø€ ò 6ØŒˆA�ñ6ùr�   r   )rÞ  r   r   rÏ  rh  s    rH   r½  r½  [	  s,   € ´ñ 6ÜœV T¨!¡WÓ-×4Ñ4Ó6ô6ó 1€ rG   c                óV   — t        t        t        | d   «      j                  «       «      S )Nr   )rò  r   r   rÒ  rh  s    rH   r½  r½  ^	  s"   € ¼ÜŒV�T˜!‘WÓ×,Ñ,Ó.ó9€ rG   )Ú_device_not_kwarg_opsÚ_is_tensor_constructorÚ_like_tensor_constructorsÚcontains_tensor_typesrò  rÿ  rþ  rö  c                 ó¶  — t         j                  d«       t         j                  dt        j                  «       t         j                  dt        j                  «       t        j
                  } | rjt         j                  d«       t        d„ | D «       «      }t        | j                  «       d„ ¬«      D ]#  \  }}t         j                  d|d	z   |› d
�|«       Œ% y y )NzFakeTensor cache stats:z  cache_hits: %sz  cache_misses: %sz  cache_bypasses:c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   )r�  )r‹   rC  s     rH   r�   z#dump_cache_stats.<locals>.<genexpr>}	  s   è ø€ Ò-˜q”C˜—FÑ-ùr�   c                ó   — | d    S rM   rF   )rŽ  s    rH   r½  z"dump_cache_stats.<locals>.<lambda>~	  s   € ¸A¸a¹D¸5€ rG   )r„   z    %-*s %sr7   r€  )	r  Úinfor%  r  r  r  ÚmaxÚsortedrk   )r  ÚwidthrC  rè   s       rH   Údump_cache_statsr  u	  s¦   € ä‡H�HÐ&Ô'Ü‡H�HÐ¤×!:Ñ!:Ô;Ü‡H�HÐ!¤>×#>Ñ#>Ô?Ü×,Ñ,€HÙÜ�‰Ð$Ô%ÜÑ- HÔ-Ó-ˆÜ˜8Ÿ>™>Ó+±ÔAò 	;‰DˆAˆqÜ�H‰H�] E¨A¡I°!°°A¨w¸Õ:ñ	;ð rG   )rk   rI   rW   zDict[T, Literal[True]])rW   z2Generator[Optional[TorchDispatchMode], None, None])r~   r   rW   zList[Tensor])rŒ   r³  rW   zTypeGuard[Tensor])r¦   r³  rW   zOptional[FakeTensorMode])ra   r=   rW   ztorch._C._SchemaInforE  )r»   zType[T]r¼   r1   rW   zList[T])r¦   r³  rW   rÍ   rV   )r¤   r%  rW   zGenerator[None, None, None])r¦   r   rW   rÍ  )r¤   r%  ra   r=   r´  rÂ  rã  r1   rX  r­  rW   r‘   )r”  rÂ  rW   r)  )r´  rÂ  rW   rÍ   )rŒ   r³  rW   rÍ   )±Ú
__future__r   Úatexitrš  rÜ  Ú	functoolsr«  r  rK  r+  ÚtypingrÕ   Úcollectionsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Útyping_extensionsr   r   r   ro   r   r   r   r   Útorch._C._functorchr   r   Útorch._prims_commonr    Útorch._subclasses.meta_utilsr!   r"   r#   r$   r%   Útorch._utilsr&   Útorch.fx.immutable_collectionsr'   Útorch.fx.operator_schemasr(   Ú torch.multiprocessing.reductionsr)   Útorch.overridesr*   Útorch.typesr+   r,   Útorch.utils._backport_slotsr-   Útorch.utils._mode_utilsr.   Útorch.utils._python_dispatchr/   r0   Útorch.utils._pytreer1   r2   r3   r4   Útorch.utils._statsr5   Útorch.utils._tracebackr6   Ú_fake_tensor_utilsr8   r9   r:   r£  r;   Útorch._guardsr<   Ú
torch._opsr=   r  r>   r?   Ú	getLoggerrC   r  Ú_loggingÚgetArtifactLoggerr   Ú
ValueErrorre  r[   rB   rZ  ÚDimListry  Ú_pytreer¹   rI   Ú_opsrš  ru  r9  rO   rK   r­  rZ   r`   rd   rf   rl   Úcontextmanagerrv   r…   r‰   r¥   Ú	lru_cacher®   r·   r¿   rÆ   rÈ   r4  r>  rE  rG  rO  r‘   rÑ  rÍ  rî  rð  r   r¦  r  r  r%  r³  Ú_StoragePointerrá  r^  ri  rç  rè  r›  r  rœ  r  rÏ  rÒ  rž  r×  rÙ  rÚ  r­  Útorch._subclasses.fake_implsrt  ru  rv  rw  rò  rÿ  rþ  rö  Úregisterr  rF   rG   rH   ú<module>r¤     s
  ðå "ã Û Û Û Û Û Û 	Û Û Û Ý #Ý !÷÷ ÷ ÷ õ ÷& .Ý !ã ß 3Ó 3ß TÝ 5÷õ õ %Ý 9Ý 8Ý ;Ý -ß 1Ý 7Ý /÷÷ FÓ EÝ $Ý 4ç RÑ Rñ Ý#å$Ý%ßOà€g×Ñ˜Ó!€ðØŸ.™.×:Ñ:¸8ÐEVÓWÐ÷	ñ 	ñ ‹m€à
€à	�‰×	Ñ	€ÙˆCƒL€à‡z�z‡~�~×Ñ€àÐ à€÷ñ ð ô \ó ó ðð ô ,ó ó ðð ô <ó ó ðð ô <ó ó ðó&ð ×Ñò-ó ð-óó$ó(ð* €×Ñ�TÓò.ó ð.ð €×Ñ�TÓò	Dó ð	Dó@ó
÷$Wñ Wðt €×Ñ�TÓò
'ó ð
'ð ×Ñð@Øð@à ò@ó ð@ó,÷Bñ B÷7Eñ 7Eôtw4�ô w4ðt	 ˜Ð&7Ð9LÐLÑMÐ ð Ø
÷(%ð (%ó ó ð(%óV#ðL Ø
÷$ð $ó ó ð$ð4 Ù
�$Ô÷ð ó ó ðð Ù
�$Ôô˜9ó ó ó ðð Ù
�$Ô÷ð ó ó ðô(X
Ð&ô X
ðv$ €ð='Øð='à
ð='ð  ð='ð ð	='ð
 %1ð='ð ó='ôD -Ð$ô  -óF#ó0>óð 
‡I�I‡N‚N×Ò×!Ò! ?Ø	‡I�I‡N�N×Ò×Òñ "ð 
‡I�I‡N�N×Ò×!Ò!ñ $ð 
‡I�I‡N�N×!Ò!×)Ò)ñ ,ðÐ ñ (Ø	‡I�I‡N�N×Ò×'Ò'Ø	‡I�I‡N�N×Ò×$Ò$Ø	‡I�I‡N�N×Ò×%Ò%óÐ ÷	÷ 	ó 	ð ‡‚ò	;ó ñ	;øðKI ò Ø)©S°«VÑ3Ü-àˆõ 	.ûðús   Ä&R< Ò<SÓSÓS