Ë
    g^(hjÅ ã                  óÄ
  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dl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 d dlmZmZ d dlmZ d dlZd dlmc mZ  d dlm!Z!m"Z"m#Z#m$Z$ d d	l%m&Z&m'Z' d d
l(m)Z) d dl*m+Z+ d dl,m-Z- d dl.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lHmIZImJZJmKZKmLZLmMZMmNZN d dlOmPZP d dlQmRZR ddlSmTZTmUZUmVZV er&d dlWmXZXmYZYmZZZm[Z[ d dl\m]Z] d dl^m_Z_ d dl`maZa d d lbmcZcmdZd  ejÊ                  ef«      Zg	 ejÐ                  jÓ                  efd!«      Zj G d#„ d$«      Zn en«       ZoepZqej>                  jä                  Zs ed%«      Ztejê                  jì                  jî                  ZwdZxd ay G d&„ d'«      Zze G d(„ d)e{«      «       Z|e G d*„ d+e{«      «       Z}e G d,„ d-e{«      «       Z~e G d.„ d/e{«      «       Ze G d0„ d1e{«      «       Z€ G d2„ d3e	�j                  «      Z‚ e‚«       Zƒdhd4„Z„e�j
                  did5„«       Z†	 	 	 	 	 	 djd6„Z‡dkd7„Zˆdld8„Z‰ e�j                  d«      dmd9„«       Z‹ e�j                  d«      dnd:„«       ZŒdod;„Z�dpd<„ZŽ G d=„ d>«      Z� e�j                  d«      dqd?„«       Z�e�j
                  	 	 	 	 drdA„«       Z‘dndB„Z’ G dC„ dD«      Z“ G dE„ dF«      Z” G dG„ dHe$«      Z•ee?dIdJf   Z–eBe G dK„ dL«      «       «       Z—dsdM„Z˜eBe G dN„ dO«      «       «       Z™eB edP¬Q«       G dR„ dS«      «       «       ZšeB edP¬Q«       G dT„ dU«      «       «       Z›eB edP¬Q«       G dV„ dWeœ«      «       «       Z�eB edP¬Q«       G dX„ dY«      «       «       Zž G dZ„ d@eG«      ZŸe Z¡	 	 	 	 	 	 	 	 	 	 	 	 dtd[„Z¢ G d\„ d]e=«      Z£dud^„Z¤dvd_„Z¥dwd`„Z¦ejì                  �jN                  �jP                  �jR                  e¤ejì                  jî                  �jT                  �jR                  da„ ejì                  jî                  �jV                  �jR                  db„ ejì                  jî                  �jX                  �jR                  dc„ iZ­ e„ejì                  jî                  �j\                  �jR                  ejì                  jî                  �j^                  �jR                  ejì                  jî                  �j`                  �jR                  «      Z±d ddl²m³Z³m´Z´mµZµm¶Z¶m·Z·m¸Z¸m¹Z¹mºZº e�jv                  dxde„«       Z¼	 	 	 	 	 	 	 	 dydf„Z½	 	 	 	 	 	 	 	 dzdg„Z¾y# ek$ rZld" emel«      v rd dlZjnel‚Y dZl[l�ŒdZl[lww xY w){é    )ÚannotationsN)Údefaultdict)Ú	dataclass)ÚAnyÚCallableÚcastÚLiteralÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnion)ÚSelfÚ	TypeGuard)ÚReferenceType)ÚSymBoolÚSymFloatÚSymIntÚTensor)Úis_functorch_wrapped_tensorÚis_legacy_batchedtensor)ÚFakeScriptObject)Údtrace_structured)Ú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)ÚKeyPathÚkeystrÚPyTreeÚtree_mapÚ	tree_map_ÚTreeSpec)Úcount)ÚCapturedTracebacké   )Ú_CacheKeyStateÚ_PySymInputStubÚ_SymIntOutputStub)Ú	GeneratorÚIterableÚMappingÚSequence)ÚTracebackType)ÚSource)Ú
OpOverload)ÚShapeEnvÚSymbolicContextÚnot_implementedz 'not_implemented' not registeredc                  ó   — e Zd Zy)Ú_UnassignedN)Ú__name__Ú
__module__Ú__qualname__© ó    ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_subclasses/fake_tensor.pyrA   rA   K   s   „ ØrF   rA   ÚTc                  ó   — e Zd Zdd„Zdd„Zy)ÚIncrementRecursionCountc                ó   — t         dz  a y ©Nr2   ©ÚRECURSION_COUNT©Úselfs    rG   Ú__init__z IncrementRecursionCount.__init__b   ó   € ä˜1Ñ‰rF   c                ó   — t         dz  a y rL   rM   rO   s    rG   Ú__del__zIncrementRecursionCount.__del__f   rR   rF   N©ÚreturnÚNone)rB   rC   rD   rQ   rT   rE   rF   rG   rJ   rJ   a   s   „ óôrF   rJ   c                  ó   — e Zd ZU ded<   y)ÚUnsupportedFakeTensorExceptionÚstrÚreasonN©rB   rC   rD   Ú__annotations__rE   rF   rG   rY   rY   k   ó   … à„KrF   rY   c                  ó   — e Zd ZU ded<   y)ÚDynamicOutputShapeExceptionr<   ÚfuncNr\   rE   rF   rG   r`   r`   p   ó   … à
ÔrF   r`   c                  ó   — e Zd ZU ded<   y)ÚDataDependentOutputExceptionr<   ra   Nr\   rE   rF   rG   rd   rd   u   rb   rF   rd   c                  ó   — e Zd ZU ded<   y)ÚUnsupportedOperatorExceptionr<   ra   Nr\   rE   rF   rG   rf   rf   z   rb   rF   rf   c                  ó   — e Zd ZU ded<   y)ÚMetadataMismatchErrorrZ   r[   Nr\   rE   rF   rG   rh   rh      r^   rF   rh   c                  ó    — e Zd ZU ded<   dd„Zy)ÚFakeTensorTLSúOptional[bool]Úallow_non_fake_inputs_overridec                ó   — d | _         y ©N)rl   rO   s    rG   rQ   zFakeTensorTLS.__init__‰   s
   € Ø.2ˆÕ+rF   NrU   )rB   rC   rD   r]   rQ   rE   rF   rG   rj   rj   „   s   … ð %3Ó2ô3rF   rj   c                 ó.   — t         j                  | d«      S ©NT)ÚdictÚfromkeys)Úitemss    rG   Úordered_setrt   �   s   € Ü�=‰=˜ Ó%Ð%rF   c               #  ó*  K  — t         j                  j                  t         j                  j                  j                  «      } 	 | –— | � t         j                  j                  | «       y y # | � t         j                  j                  | «       w w xY w­wrn   )ÚtorchÚ_CÚ_unset_dispatch_modeÚ_TorchDispatchModeKeyÚFAKEÚ_set_dispatch_mode)Úolds    rG   Úunset_fake_temporarilyr}   ”   sl   è ø€ ä
�(‰(×
'Ñ
'¬¯©×(FÑ(F×(KÑ(KÓ
L€Cð-ØŠ	àˆ?Ü�H‰H×'Ñ'¨Õ,ð øˆ3ˆ?Ü�H‰H×'Ñ'¨Õ,ð üs   ‚ABÁA, Á	#BÁ,$BÂBc               óÞ   ‡— | g}|rf|j                  «       Št        ‰«      s|j                  ‰«       Œ/‰j                  «       \  }}|j	                  ˆfd„t        |«      D «       «       |rŒf|S )Nc              3  ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wrn   )Úgetattr)Ú.0ÚkeyÚcurrs     €rG   ú	<genexpr>z$get_plain_tensors.<locals>.<genexpr>ª   s   øè ø€ ÒG¨3”G˜D #×&ÑGùs   ƒ)Úpopr(   ÚappendÚ__tensor_flatten__ÚextendÚreversed)ÚsubclassÚoutÚtodoÚ
inner_keysÚ_rƒ   s        @rG   Úget_plain_tensorsr�   ž   sf   ø€ ð ˆ:€DÙ
Ø�x‰x‹zˆÜ,¨TÔ2Ø�J‰J�tÔØà×/Ñ/Ó1‰ˆ
�AØ�‰ÓG´(¸:Ó2FÔGÔGò ð €JrF   c                óò  — ddl m} t        | t        «      ryt	        | «      rht        | «      j                  | «      \  }}|D �cg c]  }t        | |«      ‘Œ }}t        d„ |D «       «      }t        d„ |D «       «      }||k(  sJ d«       ‚|S t        | |«      rt        | 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   ©ÚFunctionalTensorTc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   ©Úis_fake©r�   Úxs     rG   r„   zis_fake.<locals>.<genexpr>·   ó   è ø€ Ò= a”w˜q—zÑ=ùó   ‚c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   r”   r–   s     rG   r„   zis_fake.<locals>.<genexpr>¸   r˜   r™   z got mixed fake and real tensors!F)Ú#torch._subclasses.functional_tensorr’   Ú
isinstanceÚ
FakeTensorr(   Útyper‡   r€   ÚallÚanyr•   Úelemr   rv   Ú_is_functional_tensorrw   Ú$_functionalization_reapply_views_tlsÚ
_functorchÚ_unwrap_functional_tensorr   Úget_unwrapped)
r—   r’   ÚattrsrŽ   ÚattrÚflattened_tensorsÚall_fakeÚany_fakeÚreapply_viewsÚ	unwrappeds
             rG   r•   r•   ¯   s1  € ÝDä�!”ZÔ ØÜ$ QÔ'Ü˜“7×-Ñ-¨aÓ0‰ˆˆqØ:?Ö@°$œW Q¨Õ-Ð@ÐÐ@ÜÑ=Ð+<Ô=Ó=ˆÜÑ=Ð+<Ô=Ó=ˆØ˜8Ò#ÐGÐ%GÓGÐ#ØˆÜ	�AÐ'Ô	(Ü�q—v‘v‹ÐÜ	�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   ÁE4c           	     óÞ  ‡— ddl m} t        | t        «      r| j                  S t        | «      rR| j                  «       \  }}|D �cg c]  }t        t        | |«      «      ‘Œ }}|d   Št        ˆfd„|D «       «      sJ ‚‰S t        | |«      rt        | 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   r‘   c              3  ó&   •K  — | ]  }‰|u –— Œ
 y ­wrn   rE   )r�   r—   Úms     €rG   r„   z&maybe_get_fake_mode.<locals>.<genexpr>Ò   s   øè ø€ Ò)˜a�1˜”6Ñ)ùs   ƒ)r›   r’   rœ   r�   Ú	fake_moder(   r‡   Úmaybe_get_fake_moder€   rŸ   r¡   r   rv   r¢   rw   r£   r¤   r¥   r   r¦   )	Útr’   Úinner_tensor_namesrŽ   Út_nameÚmodesr¬   r­   r°   s	           @rG   r²   r²   Ç   s*  ø€ ÝDä�!”ZÔ Ø�{‰{ÐÜ$ QÔ'Ø !× 4Ñ 4Ó 6ÑÐ˜AàBTö
Ø8>Ô¤¨¨6Ó 2Õ3ð
ˆð 
ð �!‰HˆÜÓ) 5Ô)Ô)Ð)Ð)ØˆÜ	�AÐ'Ô	(Ü" 1§6¡6Ó*Ð*Ü	�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   )rv   rw   Ú_SchemaInfoÚ_schema©ra   s    rG   Úget_schema_infor»   à   s   € ä�8‰8×Ñ §¡Ó-Ð-rF   c                ó¶   — ddl m} t        j                  j                  }||    j
                  j                  d«      xr ||    j                  t        |«      v S )Nr   ©Údecomposition_tableztorch._decomp)	Útorch._decompr¾   rv   Ú_decompÚdecompositionsrC   Ú
startswithrB   Údir)ra   r¾   rÁ   s      rG   Útorch_decomp_decompositionsrÄ   ê   sV   € å1ä—]‘]×1Ñ1€Nð ˜tÑ$×/Ñ/×:Ñ:Øóò Dà
˜dÑ
#×
,Ñ
,´°NÓ0CÐ
CðDrF   c                óp   — t         j                  |«      }|D �cg c]  }t        || «      sŒ|‘Œ c}S c c}w rn   )ÚpytreeÚtree_leavesrœ   )ÚtyÚtreeÚ	flat_valsr¡   s       rG   Ú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   Úlayoutrv   ÚstridedÚ	is_sparseÚ	is_nestedr   r   r¢   ©r³   s    rG   Ú_is_plain_tensorrÒ   ü   sx   € äˆQ‹”6Ðò 	
Ø�H‰HœŸ™Ñ%ò	
ð �K‰Kò .Ø�{‰{ò.ä*¨1Ó-ò.ô ' qÓ)ò.ô ×*Ñ*¨1Ó-ð
ð
rF   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_memorO   s    rG   r×   zFakeTensorConverter.tensor_memo  s   € ð ×"Ñ"×.Ñ.Ð.rF   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Ø   )rP   rÜ   rÚ   s      rG   rQ   zFakeTensorConverter.__init__  s    € Ü+°iÔ@ˆÔØˆŒð )+ˆÕ%rF   c                ó"  — t        |t        «      r|j                  €J ‚t        |j                  j	                  «       «      }|| j
                  vrg | j
                  |<   | j
                  |   j                  t        j                  |«      «       y rn   )	rœ   r�   Úconstantr"   Ú_typed_storagerØ   r†   ÚweakrefÚref)rP   Úfake_tensorÚweak_sts      rG   Ú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ÕOrF   c                óü   — t        |t        «      rJ ‚t        |j                  «       «      }|| j                  vry | j                  |   D ]#  } |«       }|€Œ|j                  «        d |_        Œ% | j                  |= y rn   )rœ   r�   r"   rà   rØ   Ú_fix_weakrefrß   )rP   Útensorrä   Úweak_tensor_refÚtens        rG   Úinvalidate_constant_aliasesz/FakeTensorConverter.invalidate_constant_aliases0  s€   € Ü˜f¤jÔ1Ð1Ð1ä  ×!6Ñ!6Ó!8Ó9ˆØ˜$×7Ñ7Ñ7Øà#×<Ñ<¸WÑEò 	$ˆOÙ!Ó#ˆCØ‰Ø× Ñ Ô"Ø#�•ð		$ð ×)Ñ)¨'Ñ2rF   c                óœ   — | j                   j                  j                  j                  |«      }|€y | j                  j                  |«      S rn   )rÖ   Ú	describerÚlookup_tensorÚgetr×   )rP   r³   Útids      rG   Ú	_get_memozFakeTensorConverter._get_memo?  sC   € Ø×!Ñ!×+Ñ+×9Ñ9×=Ñ=¸aÓ@ˆØˆ;ØØ×Ñ×#Ñ# CÓ(Ð(rF   c                ó€   — | j                   j                  j                  |«      }|| j                   j                  |<   y rn   )rÖ   rí   Úget_tensor_idr×   )rP   r³   Úvrð   s       rG   Úset_tensor_memoz#FakeTensorConverter.set_tensor_memoE  s4   € Ø×!Ñ!×+Ñ+×9Ñ9¸!Ó<ˆØ/0ˆ×Ñ×'Ñ'¨Ò,rF   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                  rt        d«      ‚t        |«      t         j                  j                  u r|rJ ‚|r|nd Š	 	 	 	 	 	 dˆˆfd„}| j                  ||||||¬«      }|t         u rt        d«      ‚ddlm} d }| j&                  �s¯t)        |«      �r£|j+                  «       dk(  �r�|j,                  j                  dk(  �ru|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ÂtE        jH                  |«      s­t        ||«      r|jJ                  }n ||«      }|jM                  |||jN                  |¬«      }|j.                  t         j0                  k(  r|jQ                  |||¬«      |_)        n6|j.                  t         j8                  k(  r|jU                  |||¬«      |_)        |r| jW                  |«       |S # 1 sw Y   ŒõxY w)Nr   )ÚStatefulSymbolicContextzquantized nyi in meta tensorsc                ól   •— t        «       5  t        ‰ | «       |‰¬«      cd d d «       S # 1 sw Y   y xY w)N©rß   )r'   r�   )Úmake_meta_tÚdevicerß   r±   s     €€rG   Úmk_fake_tensorz<FakeTensorConverter.from_real_tensor.<locals>.mk_fake_tensort  s7   ø€ ô “ñ Ü!ØÙ“MØð &ô÷÷ ò ús   Œ*ª3)Ú	shape_envÚcallbackrö   r÷   rø   zmeta converter nyi)ÚRandomValueSourceÚcpu)ÚCallMethodItemSourceÚFloatTensorSource)Ú
DimDynamic)rö   Údynamic_dimr÷   )Úhintrö   )rý   zCallable[[], object]rþ   zUnion[torch.device, str]rV   r�   ),rv   Ú_guardsÚTracingContextÚtry_getÚtensor_to_contextÚ%torch.fx.experimental.symbolic_shapesrú   rœ   Útensor_sourcerñ   Úis_quantizedrY   rž   ÚnnÚ	ParameterrÖ   ÚNotImplementedÚtorch._dynamo.sourcer  rÚ   rÒ   Údimrþ   ÚdtypeÚint64Úint32Úint16Úint8Úfloat64r  r  r  r'   ÚitemÚmathÚisnanÚisinfÚbaseÚcreate_unspecified_symbolÚDYNAMICÚcreate_symintnodeÚ	item_memoÚcreate_symfloatnoderå   )rP   r±   r³   Úmake_constantr   rö   r÷   rø   Útracing_contextrú   Ú
maybe_memorÿ   r‹   r  Úvaluer  r  r  Úitem_sourceÚsymbolrß   s    `                  @rG   Úfrom_real_tensorz$FakeTensorConverter.from_real_tensorO  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×(Ñ(Ñ(Ù$Ð$Ð$á%‘1¨4ˆð
	Ø-ð	Ø7Oð	àö	ð( ×!Ñ!ØØØ#ØØ-Øð "ó 
ˆð ”.Ñ Ü0Ð1EÓFÐFå:àˆà—“Ü  Õ#Ø—‘“˜1“Ø—‘—‘ Ó&ð —‘Ü—‘œUŸ[™[¬%¯+©+´u·z±zÄ5Ç=Á=ÐQòRàÑ"ô$ ˜vÐ'8Õ9ð Ñ%çTÝHä“ñ !ØŸ™›�÷!ä—:‘:˜eÔ$¬T¯Z©Z¸Ô->ä˜fÐ&7Ô8Ø"(§+¡+‘Ká"6°vÓ">�KØ"×<Ñ<ØØ&Ø *× 2Ñ 2Ø%5ð	 =ó �ð —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õ   )rP   r±   r³   rþ   r'  r‹   s         rG   Úfrom_meta_and_devicez(FakeTensorConverter.from_meta_and_deviceß  sv   € ð �H‰H�M‰M˜VÒ#ð	Jà1°!·(±(·-±-°ÀÐIó	JØ#ð —^‘^ AÓ&ˆ
ØÐ!ØÐÜ˜ A vÓ.ˆØ×Ñ˜Q Ô$Øˆ
rF   )rV   zweakref.WeakValueDictionary)rÜ   rÙ   rÚ   rÙ   rV   rW   )rã   r�   rV   rW   )rè   r   rV   rW   )r³   r   rV   úOptional[FakeTensor])r³   r   rô   r�   rV   rW   )FN)r±   ÚFakeTensorModer³   r   r%  rÙ   r   úOptional[ShapeEnv]rö   úOptional[Source]r÷   úOptional[SymbolicContext]rø   rÙ   rV   r�   )r±   r0  r³   r   rþ   útorch.devicerV   r�   )rB   rC   rD   Úpropertyr×   r]   rQ   rå   rë   rñ   rõ   r+  r.  rE   rF   rG   rÔ   rÔ     sé   … Øð/à	$ò/ó ð/ð "Ó!ØGÓGØƒLà,1À%õ +óPó3ó)ó1ð $Ø(,ðMð $(Ø6:ØñMà!ðMð ðMð ð	Mð
 &ðMð !ðMð 4ðMð ðMð 
óMð`Ø'ðØ,2ðØ<Hðà	ôrF   rÔ   c                ó  — t         j                  j                  «       st         j                  j                  «       rIt         j                  j
                  €t        j                  d| ¬«      nt        j                  d| ¬«       y y )Nr2   ©rþ   )rv   ÚcudaÚis_availableÚxpuÚversionÚhipÚemptyÚzerosr7  s    rG   Úinit_gpu_contextr?  ï  sY   € ô ‡z�z×ÑÔ ¤E§I¡I×$:Ñ$:Ô$<ô �}‰}× Ñ Ð(ô �K‰K˜ &Õ)ä—‘˜Q vÔ.ùð	 %=rF   r0  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_invocationrv   rw   Ú_meta_in_tls_dispatch_includeÚ_DisableTorchDispatchÚ_PreserveDispatchKeyGuardÚ!_set_meta_in_tls_dispatch_include)r±   Úprev_in_kernelÚmeta_in_tlss      rG   Úin_kernel_invocation_managerrI  ú  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   )rv   rw   Ú _should_allow_numbers_as_tensorsÚnameÚsplitrº   s    rG   Úshould_allow_numbers_as_tensorsrP    sB   € Ü�8‰8×4Ñ4Ø�	‰	‹×Ñ˜$Ó Ñ#×)Ñ)¨#Ó.¨qÑ1óð rF   c                  óJ   — e Zd Zej                  j                  dd«      dk(  Zy)ÚFakeTensorConfigÚTORCH_FAKE_TENSOR_DEBUGÚ0Ú1N)rB   rC   rD   ÚosÚenvironrï   ÚdebugrE   rF   rG   rR  rR    s   „ Ø�J‰J�N‰NÐ4°cÓ:¸cÑA�ErF   rR  c                  óz   — 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)ÚSymNumberMemoDescriptorrZ   Ú_namerÙ   Ú_is_nested_intF©Úis_nested_intc               ó   — || _         y rn   )r\  )rP   r^  s     rG   rQ   z SymNumberMemoDescriptor.__init__0  s
   € Ø+ˆÕrF   c                ó   — || _         y rn   ©r[  )rP   ÚownerrN  s      rG   Ú__set_name__z$SymNumberMemoDescriptor.__set_name__3  s	   € Øˆ�
rF   c                ó    — d| j                   › �S )NrŽ   ra  ©rP   Úobjs     rG   Ú_memozSymNumberMemoDescriptor._memo6  s   € Ø�4—:‘:�,ÐÐrF   c                ó"   — d| j                   › d�S )NrŽ   Ú_vcra  re  s     rG   Ú_memo_vcz SymNumberMemoDescriptor._memo_vc9  s   € Ø�4—:‘:�,˜cÐ"Ð"rF   c                ó"   — d| j                   › d�S )NrŽ   Ú_epochra  re  s     rG   Ú_memo_epochz#SymNumberMemoDescriptor._memo_epoch@  s   € Ø�4—:‘:�,˜fÐ%Ð%rF   Nc                óÄ  — t        || j                  |«      «      x}€y t        |t        j                  «      r|j
                  j                  �|S | j                  s(t        || j                  |«      «      |j                  k7  s>| j                  sOt        || j                  |«      «      |j                  j                  k7  rt        || j                  |«      d «       y |S rn   )r€   rg  rœ   rv   r   Únoder  r\  rj  Ú_versionrm  r±   ÚepochÚsetattr)rP   rf  ÚobjtypeÚrs       rG   Ú__get__zSymNumberMemoDescriptor.__get__C  s²   € ô ˜˜dŸj™j¨›oÓ.Ð.ˆAÐ7Øô �aœŸ™Ô(¨Q¯V©V¯[©[Ð-DØˆHð
 ×#Ò#¬°°T·]±]À3Ó5GÓ(HÈCÏLÉLÒ(Xà×#Ò#Ü˜˜T×-Ñ-¨cÓ2Ó3°s·}±}×7JÑ7JÒJä�C˜Ÿ™ C›¨$Ô/ØØˆrF   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   )	rr  rg  rj  rm  Úis_inferencer\  rp  r±   rq  )rP   rf  r(  s      rG   Ú__set__zSymNumberMemoDescriptor.__set__Y  s¹   € ð ˆ=Ü�C˜Ÿ™ C›¨$Ô/Ü�C˜Ÿ™ sÓ+¨TÔ2Ü�C˜×)Ñ)¨#Ó.°Õ5Ø×!Ñ!Ô# t×':Ò':Ü�C˜Ÿ™ C›¨%Ô0Ø×&Ò&Ü˜˜TŸ]™]¨3Ó/°·±Ô>Ü�C˜×)Ñ)¨#Ó.°·±×0CÑ0CÕDð	 (;rF   )r^  rÙ   rV   rW   )rb  rZ   rN  rZ   rV   rW   )rf  r�   rV   rZ   rn   )rf  r�   rs  zOptional[type[FakeTensor]]rV   ú-Optional[Union[torch.SymInt, torch.SymFloat]])rf  r�   r(  ry  rV   rW   )rB   rC   rD   r]   rQ   rc  rg  rj  rm  ru  rx  rE   rF   rG   rZ  rZ  &  sp   … ØƒJð Óà05õ ,óó ó#ó&ð FJðØðØ(Bðà	6óð,EØðEØ&SðEà	ôErF   rZ  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«       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.
    r4  Úfake_devicer0  r±   úOptional[Tensor]rß   Úreal_tensorTr]  c                óp   — | j                   j                  rt        j                  d«      S | j                  S ©Nr-  )r±   rB  rv   rþ   r{  rO   s    rG   rþ   zFakeTensor.device†  s*   € à�>‰>×.Ò.Ü—<‘< Ó'Ð'à×#Ñ#Ð#rF   c                ó   — t         ‚rn   ©ÚNotImplementedError©rP   rŽ   s     rG   rþ   zFakeTensor.device�  ó   € ä!Ð!rF   c                ó   — t        d«      ‚)Nz+torch.compile doesn't support named tensors)rY   rO   s    rG   ÚnameszFakeTensor.names¡  s   € ä,Ø9ó
ð 	
rF   c                ó   — t         ‚rn   r�  rƒ  s     rG   r†  zFakeTensor.names§  r„  rF   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dt        j
                  j                  «       fv r°|j                  €¤|j                  dk7  rst        t        |j                  «      j!                  «       rKt	        j                  |j                  › d	t        t        |j                  «      j#                  «       › �«      }n"t	        j                  |j                  › d
�«      }||_        ||_        ||_        t        |t*        «      rJ ‚||_        d |_        d |_        d |_        d |_        d |_        t8        j:                  rt=        j>                  «       |_         |S )NT)Údispatch_deviceÚdevice_for_backend_keysr-  )r8  r:  r8  Úhpur:  Úmpsú:z:0)!r   Ú_make_subclassÚrequires_gradÚ_allow_unsafe_data_ptr_accessrv   rw   Ú_set_throw_on_mutable_data_ptrÚ(_set_warn_deprecated_on_mutable_data_ptrrþ   rž   rœ   Ú
allow_metar?  Ú_get_privateuse1_backend_nameÚindexr€   Úis_initializedÚcurrent_devicer{  r±   rß   r�   r}  Únonzero_memor#  Úunique_memoÚunique_consecutive_memoÚnested_int_memorR  rX  r1   ÚextractÚ_debug_trace)Úclsr±   r¡   rþ   rß   r}  rP   s          rG   Ú__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ˆð ×#Ò#Ø—;‘; &Ò(Ð(Ð(à�;‰;˜/Ñ)Ü˜VÔ$ð �K‰KØ˜˜u e¬U¯X©X×-SÑ-SÓ-UÐVñWà—‘Ð$à�{‰{˜eÒ#¬´°v·{±{Ó(C×(RÑ(RÔ(TÜŸ™Ø—{‘{�m 1¤W¬U°F·K±KÓ%@×%OÑ%OÓ%QÐ$RÐSó‘ô Ÿ™¨¯©¨°RÐ&8Ó9�Ø!ˆÔØ"ˆŒØ ˆŒÜ˜k¬:Ô6Ð6Ð6Ø&ˆÔØ ˆÔØˆŒØˆÔØ'+ˆÔ$Ø#ˆÔä×!Ò!Ü 1× 9Ñ 9Ó ;ˆDÔØˆrF   c                ó"   •— t         ‰| �  «        y rn   )ÚsuperrQ   )rP   ÚargsÚkwargsÚ	__class__s      €rG   rQ   zFakeTensor.__init__û  s   ø€ Ü‰ÑÕrF   c                ó$   — |j                  | «      S rn   )Úfrom_tensor)r³   r±   s     rG   r¦  zFakeTensor.from_tensorþ  s   € à×$Ñ$ QÓ'Ð'rF   rE   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)Nr2   r   r-  z(FakeTensor unrecognized subclass(es): %sz(FakeTensor mode already active: %s in %s)rv   ÚopsÚprimrþ   ÚdefaultÚlenrœ   r�   r±   rB  r{  Ú_DISPATCH_META_HANDLERSrï   Ú
issubclassr   Únot_implemented_logrX  r  rÆ   Úarg_tree_leavesrw   Ú_get_dispatch_modery   rz   )rž  ra   Útypesr¢  r£  Úhandlerr³   Úunrecognized_typesr±   ÚargÚmaybe_cur_fake_modes              rG   Ú__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    rG   Úcpu_zero_dimz4FakeTensor._find_common_device.<locals>.cpu_zero_dimZ  s$   € Ø—8‘8—=‘= EÑ)Ò:¨a¯e©e«g¸©lÐ:rF   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 rA  )rœ   r�   rþ   ÚRuntimeError)r³   Út_is_cpu_zero_dimÚcommon_devicer¹  ra   Úis_cpu_zero_dims     €€€€rG   Úmerge_devicesz5FakeTensor._find_common_device.<locals>.merge_devices]  s�   ø€ ô ˜a¤Ô,ØàÐ$Ø !§¡�Ù".¨q£/�Øá ,¨Q£ÐØ�x‰x˜=Ò(Ù"Ø&7�OØñ !Øñ Ø !§¡�Ø"3�Øô Ø>¸t¸fÐDbÐcpÐbqÐqsÐtu×t|Ñt|Ðs}Ð~óð rF   Tr  z!Could not find common device for ©r³   r   rV   rÙ   )r³   ÚobjectrV   rW   )rP  rv   rþ   )ra   Ú	flat_argsÚhas_scalar_only_inputsr¿  r´  r½  r¹  r¾  s   `    @@@rG   Ú_find_common_devicezFakeTensor._find_common_deviceM  s†   û€ ð ˆØ!&ÐØˆó	;÷ 	ð  	ðD ò 	ˆCÙ˜#Õð	ô +¨4Ô0°]Ð5Jà%)Ð"Ü!ŸL™L¨Ó/ˆMàÐ(ÐTÐ,MÈdÈVÐ*TÓTÐ(àÐ4Ð4Ð4rF   r2   )Úcoeffc               óÆ   — | j                   €!| j                  j                  d ¬«      | _         t        | j                   t        j
                  «      sJ ‚| j                   |z  S )N©Únt_tensor_id)r›  r±   Úcreate_symbolic_nested_intrœ   rv   r   )rP   rÅ  s     rG   Úget_nested_intzFakeTensor.get_nested_intŽ  s]   € ð
 ×ÑÐ'Ø#'§>¡>×#LÑ#LØ!ð $Mó $ˆDÔ ô ˜$×.Ñ.´·±Ô=Ð=Ð=Ø×#Ñ# eÑ+Ð+rF   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   r2   )r  r  Útolist)rP   r¡   s     rG   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)rV   r4  )rŽ   r4  rV   rW   )rV   ú	list[str])rŽ   rÎ  rV   rW   )NN)r±   r0  r¡   r   rþ   r4  rß   r|  r}  r|  rV   r   )r¢  rÁ  r£  rÁ  rV   rW   )r³   r   r±   r0  rV   r�   ©
ra   r<   r±  úSequence[type]r¢  úSequence[object]r£  úMapping[str, object]rV   rÁ  )ra   r<   rÂ  rÑ  rV   ztuple[torch.device, bool])rÅ  zUnion[int, torch.SymInt]rV   útorch.SymInt)rV   r   ) rB   rC   rD   Ú__doc__r]   rZ  r˜  r#  r™  rš  r›  rv   rw   ry   rz   Ú	_mode_keyr5  rþ   Úsetterr†  ÚstaticmethodrŸ  rQ   r¦  Úclassmethodr0   r    r¶  rÄ  rÊ  rÍ  Ú__classcell__©r¤  s   @rG   r�   r�   g  sÝ  ø… ñð ÓØÓØÓØ!Ó!ñ
 +Ó,€LÙ'Ó)€IÙ)Ó+€KÙ5Ó7Ðñ
 .¸DÔA€Oð —‘×.Ñ.×3Ñ3€Iàò$ó ð$ð ‡]�]ò"ó ð"ð& ò
ó ð
ð
 ‡\�\ò"ó ð"ð ð &*Ø(,ð;à!ð;ð ð;ð ð	;ð
 #ð;ð &ð;ð 
ò;ó ð;õ^ð ò(ó ð(ð Ø
ð
 "$Ù'5Ó'7ðG)àðG)ð ðG)ð ð	G)ð
 %ðG)ð 
òG)ó ó ðG)ðR ð>5Øð>5Ø%5ð>5à	"ò>5ó ð>5ðF +,ñ
,ð (ð
,ð 
ó	
,÷4rF   r�   r4   r5   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Ústrider4  rþ   ztorch.layoutrÍ   zOptional[torch.memory_format]Úmemory_formatÚ_MetadataIntLikeÚstorage_offsetzOptional[_MetadataIntLike]Ústorage_bytesrÙ   r�  r  Úis_conjÚis_negrw  rÏ   rk   Ú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€   rN  rœ   ÚtupleÚlistrv   ÚSizeÚ_prep_args_for_hashr   Úconvert_sym_intr†   )rP   ÚresultÚmodeÚstateÚfieldr(  s         rG   Ú_flatten_intozTensorMetadata._flatten_intoÀ  s}   € ô !×'Ñ'¨Ó-ò 		%ˆEÜ˜D %§*¡*Ó-ˆEÜ˜%¤%¬¬u¯z©zÐ!:Ô;ð ×(Ñ(¨°¸Õ>Ü˜E¤6Ô*Ø×%Ñ% f¨eÕ4à—‘˜eÕ$ñ		%rF   N)rñ  úlist[object]rò  r0  ró  r3   rV   rW   )rB   rC   rD   rÔ  r]   rõ  rE   rF   rG   rÜ  rÜ  §  s—   … ñð ÓØ'Ó'Ø(Ó(ØÓØÓØ0Ó0Ø$Ó$Ø-Ó-ØÓØÓØƒMØƒLØÓØƒOØ Ó ØÓØÓð%àð%ð ð%ð ð	%ð
 
ô%rF   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ß  NrE   )r   Ú_has_symbolic_sizes_stridesr   Úis_contiguousrá  rÜ  r  rÝ  rÍ   rv   rÎ   rÞ  rþ   Úuntyped_storageÚnbytesr�  r  rã  rä  rw  rÏ   rå  rç  rè  )r³   rß  rá  s      rG   Úextract_tensor_metadatarü  Ô  s  € ô 4IÈÓ3K€Mð 	
×%Ò%Ü˜ÔØ�‰¨]ˆÔ;àˆà×%Ñ%Ó'€NäØ	�‰Ø	�‰Ø—h‘h¤%§-¡-Ò/ˆ�‰Œ
°RØ	�‰Ø	�‰ØØä,9¸!Ô,<ˆ×ÑÓ×"Ñ"Ô$À$Ø	�‰Ø	�‰Ø	�	‰	‹Ø	�‰‹
Ø	�‰ÓØ	�‰ØŸKšKˆ�‰Ô¨TÜ& qÔ)ˆ�‰Œ¨tÜ'¨Ô*ˆ�‰‹ó%ð ð$ 15ó%ð rF   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  )rP   Útups     rG   rQ   z_DispatchCacheKey.__init__  s   € ØˆŒÜ˜c›ˆ�rF   c                óX   — t        |t        «      xr | j                  |j                  k(  S rn   )rœ   rþ  r‚   )rP   Úothers     rG   Ú__eq__z_DispatchCacheKey.__eq__  s"   € Ü˜%Ô!2Ó3ÒM¸¿¹ÀEÇIÁIÑ8MÐMrF   c                ó   — | j                   S rn   )r  rO   s    rG   Ú__hash__z_DispatchCacheKey.__hash__  s   € Ø�~‰~ÐrF   c                óh   — | j                   D ]#  }t        |t        «      sŒ|j                  «        Œ% y rn   )r‚   rœ   r4   Ústrip_shape_env)rP   rô   s     rG   r  z!_DispatchCacheKey.strip_shape_env  s-   € ð —‘ò 	$ˆAÜ˜!œ_Õ-Ø×!Ñ!Õ#ñ	$rF   N)r  rÿ  rV   rW   )r  rÁ  rV   rÙ   )rV   r   rU   )	rB   rC   rD   rÔ  r]   rQ   r  r	  r  rE   rF   rG   rþ  rþ  ú  s)   … ñð 
ÓØƒNó#óNóô$rF   rþ  T)Úfrozenc                  ó0   — e Zd ZU dZded<   ded<   ded<   y)Ú_DispatchCacheEntryOutputInfoaV  
    Entry type for the FakeTensor dispatch cache for an output. 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©rB   rC   rD   rÔ  r]   rE   rF   rG   r  r    s   … ñð ÓØ&Ó&ØÔrF   r  c                  ó*   — e Zd ZU dZded<   dZded<   y)Ú_DispatchCacheEntryzÁ
    Entry type for the FakeTensor dispatch cache. It supports two types of outputs
    1) tensor
    2) tuple of tensors

    is_output_tuple flag helps in differentiating the return type
    z$tuple[_DispatchCacheEntryOutputInfo]Úoutput_infosFrÙ   Úis_output_tupleN)rB   rC   rD   rÔ  r]   r  rE   rF   rG   r  r  '  s   … ñð 7Ó6Ø!€O�TÔ!rF   r  c                  ó   — e Zd ZU dZded<   y)Ú_BypassDispatchCachez<
    Signals cases that should skip FakeTensor caching.
    rZ   r[   Nr  rE   rF   rG   r  r  6  s   … ñð „KrF   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  rE   rF   rG   r  r  @  s   … ñð ƒIØƒKØÓØ
„IrF   r  c                  ól  ‡ — 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œ	 	 	 	 	 	 	 	 	 	 	 dEˆ fd„ZdFd„ZdGd„ZedHd„«       ZedId„«       Zed e«       f	 	 	 	 	 	 	 	 	 dJd„«       ZdKˆ fd „Z	 	 	 	 	 	 	 	 dLˆ fd!„ZedHd"„«       ZedMd#„«       ZedFd$„«       Z	 	 	 	 	 	 	 	 	 	 dJd%„Z	 	 	 	 	 	 	 	 	 	 dNd&„Z	 	 	 	 	 	 	 	 dOd'„Z	 	 	 	 	 	 	 	 dPd(„Z 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dQd)„Z!	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd*„Z"	 	 	 	 	 	 	 	 	 	 	 	 	 	 dSd+„Z#	 	 	 	 	 	 	 	 	 	 	 	 dTd,„Z$	 	 	 	 	 	 	 	 	 	 	 	 dUd-„Z%	 	 	 	 	 	 	 	 	 	 	 	 dVd.„Z&d e«       f	 	 	 	 	 	 	 	 	 dJd/„Z'	 	 	 	 	 	 	 	 	 	 dWd0„Z(	 	 	 	 	 	 	 	 	 	 	 	 dXd1„Z)	 	 	 	 	 	 	 	 	 	 dYd2„Z* e+d3d4d5d6d7d8d9d:«      Z,dZd;„Z-	 	 	 	 	 	 	 	 	 	 d[d<„Z.	 	 	 	 	 	 	 	 	 	 d\d=„Z/dd>œ	 	 	 d]d?„Z0 e+e1jd                  jf                  e1jh                  jj                  e1jl                  jj                  e1jn                  jj                  e1jp                  jj                  e1jr                  jj                  e1jt                  jj                  e1jv                  jj                  e1jx                  jj                  e1jz                  j|                  e1j~                  jj                  «      Z@dZd@„ZA e+e1j„                  jj                  e1j†                  jj                  «      ZDd^dA„ZE	 	 	 	 	 	 	 	 	 	 d_dB„ZFdddddCœ	 	 	 	 	 	 	 	 	 	 	 d`dD„ZGˆ xZHS )ar0  z,dict[_DispatchCacheKey, _DispatchCacheEntry]Úcacher   r   Ú
cache_hitsÚcache_missesr  Úcache_bypassesrq  FrÙ   rB  Ústatic_shapesr1  r   zOptional[str]Ú_stackr“  rK  Ú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),ÚlogrX  Úidr¡  rQ   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*  rB  Úenter_stackr   Ú	tracebackÚextract_stackÚ_stack_tracer&  rw   ry   rz   rÕ  Ú$torch.nested._internal.nested_tensorÚnestedÚ	_internalÚnested_tensorÚ_tensor_id_counterr(  r'  )rP   r)  r*  r   r%  rÚ   rv   r¤  s          €rG   rQ   zFakeTensorMode.__init__n  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ˆÕ!rF   c                ó&   — | j                   | _        y rn   )r(  r'  rO   s    rG   Úreset_nt_tensor_id_counterz)FakeTensorMode.reset_nt_tensor_id_counterÍ  s   € Ø$(×$CÑ$CˆÕ!rF   c                óB   — t        |t        «      xr |j                  | u S rn   )rœ   r�   r±   ©rP   r³   s     rG   Úis_our_fakezFakeTensorMode.is_our_fakeÜ  s   € Ü˜!œZÓ(Ò@¨Q¯[©[¸DÐ-@Ð@rF   c                ó^  — t         j                  j                  «       r?t         j                  j                  «       rJ ‚t         j                  j	                  «        S t         j                  j	                  «       xs0 t        t         d«      xr t         j                  j	                  «        S )Nr‹  )rv   r:  Ú_is_compiledr8  r9  Úhasattrr‹  rO   s    rG   Úavoid_device_initz FakeTensorMode.avoid_device_initä  s|   € ä�9‰9×!Ñ!Ô#Ü—z‘z×.Ñ.Ô0Ð0Ð0Ü—y‘y×-Ñ-Ó/Ð/Ð/ô �J‰J×#Ñ#Ó%ò DÜœ˜uÓ%ÒB¬%¯)©)×*@Ñ*@Ó*Bð
ð 	
rF   c                ó˜   — | j                   €3dj                  t        j                  | j                  «      «      | _         | j                   S )NÚ )r&  Újoinr=  Úformat_listr?  rO   s    rG   ÚstackzFakeTensorMode.stackï  s7   € à�;‰;ÐØŸ'™'¤)×"7Ñ"7¸×8IÑ8IÓ"JÓKˆDŒKØ�{‰{ÐrF   rE   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)	rv   rw   r°  ry   rz   ÚdispatchÚ	TypeErrorr,  Ú	exception)rP   ra   r±  r¢  r£  s        rG   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@  rM  rw   Ú_only_lift_cpu_tensorsÚ_set_only_lift_cpu_tensorsrx   rÕ  r<  r†   r¡  Ú	__enter__r{   )rP   rv   Úprev_only_lift_cpu_tensorsÚmaybe_prev_fake_moder¤  s       €rG   rZ  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ØˆrF   c                óð   •— | j                   j                  «       \  }}}|rUt        ‰| �  |||«       |�t        j
                  j                  |«       |� t        j
                  j                  |«       y y y rn   )r<  r…   r¡  Ú__exit__rv   rw   r{   rY  )rP   ÚaÚbÚcÚliver\  Ú maybe_prev_only_lift_cpu_tensorsr¤  s          €rG   r^  zFakeTensorMode.__exit__  sw   ø€ ð ×Ñ× Ñ Ó"ñ		
ØØ Ø,áÜ‰GÑ˜Q  1Ô%ð $Ð/Ü—‘×+Ñ+Ð,@ÔAØ/Ð;Ü—‘×3Ñ3Ð4TÕUð <ð rF   c                 ó   — yrp   rE   ©rž  s    rG   Úis_infra_modezFakeTensorMode.is_infra_mode0  s   € àrF   c                ó²   — t        t        j                  t        j                  t	        t        j
                  «      t        t        j                  «      «      S )z8
        Query the state of the dispatch cache.
        )r  r0  r"  r#  rq   r$  r«  r!  re  s    rG   Ú
cache_infozFakeTensorMode.cache_info4  s?   € ô
 !Ü×%Ñ%Ü×'Ñ'Ü”×.Ñ.Ó/Ü”×$Ñ$Ó%ó	
ð 	
rF   c                óˆ   — d| _         d| _        | j                  j                  «        | j                  j                  «        y)z+
        Clear the dispatch cache.
        r   N)r"  r#  r$  Úclearr!  re  s    rG   Úcache_clearzFakeTensorMode.cache_clear@  s3   € ð
 ˆŒØˆÔØ×Ñ× Ñ Ô"Ø�	‰	�‰ÕrF   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).
        Nr2   )Ú_UNASSIGNEDr3   r   Ú
_cache_keyÚcache_on_shape_envÚfake_tensor_cacher0  r!  rï   Ú_output_from_cache_entryr"  r;  Ú_crosscheck_cache_outputÚ_validate_cache_keyÚ_dispatch_implÚ_make_cache_entryr  r#  r  r$  r[   )rP   ra   r±  r¢  r£  Úoutputró  r‚   r!  ÚentryÚes              rG   Ú_cached_dispatch_implz$FakeTensorMode._cached_dispatch_implJ  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)
rv   Úget_default_dtyperw   Ú_get_default_deviceÚis_inference_mode_enabledr   Úsettingsrï  rþ  rì  )rP   ró  ra   r¢  r£  Ú
key_valuess         rG   rn  zFakeTensorMode._cache_keyu  s�   € ð ô ×#Ñ#Ó%ô �H‰H×(Ñ(Ó*ô ×+Ñ+Ó-ð (,§~¢~ˆD�N‰N×#Ò#¸4ð
ˆ
ñ" Ø×$Ñ$ Z°°uÔ=ÙØ×$Ñ$ Z°¸Ô?Ü ¤ zÓ!2Ó3Ð3rF   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)rv   ÚTagÚdata_dependent_outputÚtagsr  Údynamic_output_shapeÚinplace_viewÚatenÚ_unsafe_viewrª  Úlift_fnsrN  Ú_libraryÚutilsÚ
is_builtinÚis_viewrw   Ú%_dispatch_has_kernel_for_dispatch_keyÚDispatchKeyr‚  )rP   ra   r¢  r£  s       rG   rs  z"FakeTensorMode._validate_cache_key—  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ð
ˆ<rF   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)rœ   rq   rï  ÚkeysÚvaluesr�   rI  r  rß   r   rÍ   rú  rû  r   rü  rõ  r   rð  r   r   rí  rì  r†   rž   )rP   rñ  r¢  ró  r´  r  s         rG   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	#rF   c                ó0  — t        |t        «      st        d«      ‚|j                  �t        d«      ‚|j                  rt        d«      ‚t        |«      rt        d«      ‚|j                  «       D ]$  }t        |«      t        |«      k(  sŒt        d«      ‚ y )Nznon-FakeTensor outputr’  zsparse outputzsparse compressed outputzkwarg aliases output)rœ   r�   r  rß   rÏ   r   r”  r-  )rP   ró  r‚   ra   r¢  r£  rv  Úkvals           rG   Ú _validate_output_for_cache_entryz/FakeTensorMode._validate_output_for_cache_entryï  s‘   € ô ˜&¤*Ô-Ü&Ð'>Ó?Ð?ð �?‰?Ð&Ü&Ð';Ó<Ð<ð ×ÒÜ& Ó7Ð7ä Ô'Ü&Ð'AÓBÐBð —M‘M“Oò 	CˆDÜ�$‹xœ2˜f›:Ó%Ü*Ð+AÓBÐBñ	CrF   c                óx  ‡— 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 ||¬«      }t        |fd¬«      }| j!                  ‰||||«      }t"        j$                  j'                  |«      }t"        j$                  j'                  |«      }||k7  rt)        d«      ‚|S c c}
}	w )	N©r  r  r  r2   r   c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrn   ©Úconvert_output©r�   rô   ró  s     €rG   r„   zBFakeTensorMode._get_output_info_for_cache_entry.<locals>.<genexpr>'  s   øè ø€ ÒO¸1˜u×3Ñ3°A×6ÑOùó   ƒc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrn   r›  r�  s     €rG   r„   zBFakeTensorMode._get_output_info_for_cache_entry.<locals>.<genexpr>(  s   øè ø€ ÒQ¸A × 4Ñ 4°Q× 7ÑQùrž  F©r  r  zdispatch_key_set mismatch)Úranger«  r-  r  rŽ  Ú	enumeraterœ   r   rü  rì  rÝ  rÞ  rœ  rá  râ  r  rq  rv   rw   Ú_dispatch_key_setr  )rP   ró  r‚   ra   r¢  r£  rv  Úidxr  Úir³   Úidxsr  rw  Úentry_for_synth_outputÚsynth_outputÚsynth_key_setÚkey_sets    `                rG   Ú _get_output_info_for_cache_entryz/FakeTensorMode._get_output_info_for_cache_entry  sŸ  ø€ ô œ˜T›Ó#ò 	ˆCÜ�$�s‘)‹}¤ 6£
Ó*Ü4Ø #¨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×&<Ñ&<Ó=ð 	Ôô .ØØØô
ˆô "5Ø˜°5ô"
Ðð ×4Ñ4ØÐ)¨3°°dó
ˆô Ÿ™×2Ñ2°<Ó@ˆÜ—(‘(×,Ñ,¨VÓ4ˆØ˜GÒ#Ü&Ð'BÓCÐCàˆùóO Ls   Á!F6Á:F6c                óª  — |€t        ddd¬«      }t        |fd¬«      S t        |t        «      r|D ]  }| j	                  ||||||«       Œ n| j	                  ||||||«       t        |t        «      r9|D �	cg c]  }	| j                  ||||||	«      ‘Œ }
}	t        t        |
«      d¬«      S | j                  ||||||«      }t        |f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.
        Nr™  Fr   T)r  r  rœ   rì  r—  r«  )rP   ró  r‚   ra   r¢  r£  rv  Úoutput_infoÚout_elementÚout_elemr  s              rG   ru  z FakeTensorMode._make_cache_entryK  s  € ð ˆ>Ü7Ø ¨4¸$ôˆKô 'Ø)˜^¸Uôð ô �fœeÔ$Ø%ò �Ø×5Ñ5Ø˜3  d¨F°Kõñð
 ×1Ñ1Ø�s˜D $¨°ôô �fœeÔ$ð
 !'ö	ð ð ×5Ñ5Ø˜3  d¨F°HõðˆLð ô 'Ü" <Ó0À$ôð ð
 ×?Ñ?Ø�s˜D $¨°óˆKô 'Ø)˜^¸Uôð ùòs   Á7C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                  � ‰|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)Nc                ó    •— t        | t        «      r*|j                  €J ‚| j                  ‰|j                  «      S t        | t        «      rJ ‚| S rn   )rœ   r5   r   rœ  r4   )r(  ró  r‚   s     €rG   Úcheck_valuezGFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.check_value“  sJ   ø€ ô ˜%Ô!2Ô3Ø—‘Ð2Ð2Ð2Ø—}‘} S¨%¯/©/Ó:Ð:ä% e¬_Ô=Ð=Ð=Ø�rF   c              3  ó0   •K  — | ]  } ‰|‰«      –— Œ y ­wrn   rE   ©r�   rô   r²  ró  s     €€rG   r„   zEFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.<genexpr>�  s   øè ø€ ÒD°‘k ! U×+ÑDùó   ƒc              3  ó0   •K  — | ]  } ‰|‰«      –— Œ y ­wrn   rE   r´  s     €€rG   r„   zEFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.<genexpr>ž  s   øè ø€ ÒF°‘{ 1 e×,ÑFùrµ  r-  )r  rÍ   rþ   r�  T)r(  rà  ró  r3   rV   zUnion[IntLikeType]) r  rœ   r�   r  r   rì  rÝ  rÞ  rá  râ  Ú
contextlibÚnullcontextr   Úsuppress_guardsrI  rv   Úempty_stridedr  rÍ   r�  rã  rw   Ú	_set_conjrä  Ú_set_negrŽ  r   r   r  rú  Úset_rþ   )rP   ró  rw  r‚   ra   r¢  Úinplace_argr  rÝ  rÞ  rá  Úmaybe_suppressr=  Úview_argÚstorager²  s    ` `           @rG   Ú#_get_output_tensor_from_cache_entryz2FakeTensorMode._get_output_tensor_from_cache_entry~  s3  ú€ ð ×ÑÐ(à˜u×0Ñ0Ñ1ˆKÜ˜k¬:Ô6Ð6Ð6ØÐð —>‘>ˆØÐØä  Ô*Ð*Ð*ð	Ø#ð	Ø,:ð	àõ	ô ÔD°X·^±^ÔDÓDˆÜÔF°h·o±oÔFÓFˆÙ$ X×%<Ñ%<¸eÓDˆØ×!Ñ!Ð-Ù˜×.Ñ.°Ô6ä>H×>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ÈI2ÈI&È%I2ÉI	ÉIÉI#É&I/	É+I2É2I;c           
     óÖ   — |j                   r7|j                  D �cg c]  }| j                  |||||«      ‘Œ }}t        |«      S | j                  ||j                  d   |||«      S c c}w )z?
        Create a new FakeTensor from the cache entry.
        r   )r  r  rÂ  rì  )rP   ró  rw  r‚   ra   r¢  r­  Úoutputss           rG   rq  z'FakeTensorMode._output_from_cache_entryÀ  sˆ   € ð × Ò ð $)×#5Ñ#5ö	ð  ð ×8Ñ8ØØØØØõð	ˆGð 	ô ˜“>Ð!à×;Ñ;Ø�u×)Ñ)¨!Ñ,¨c°4¸óð ùò	s   ›A&c                óÌ  — 	 | j                  ||||«      }	 |�u|�st        |t        «      r?t        |«      t        |«      k(  sJ ‚t        ||«      D ]  \  }}	t        t        ||	«       Œ yt        |t        «      r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)	rt  Ú	Exceptionr»  rœ   rì  r«  Úzipr   r   )
rP   rv  ra   r±  r¢  r£  Útrue_outputrx  r_  r`  s
             rG   rr  z'FakeTensorMode._crosscheck_cache_outputÝ  s1  € ð	Ø×-Ñ-¨d°E¸4ÀÓHˆKð	ØÐ'¨fÐ.@Ü˜k¬5Ô1Ü˜{Ó+¬s°6«{Ò:Ð:Ð:Ü # K°Ó 8ò <™˜˜1Ü*¬9°a¸Õ;ñ<ô  *¨&´%Ô8Ð8Ð8Ü&¤y°+¸vÕFà"Ð*Ð*Ð*Ø�~Ð%‘~øô! ò 	ÜØ<¸T¸Fð CØ�v˜Y v hÐ.@ÀÀðEóð ðûð	ûô" ò 	ÜØ<¸T¸Fð CØ�v˜Y v hð0óð ðûð	ús;   ‚B —AC  Á*#C  ÂC  Â	B=Â B8Â8B=Ã 	C#Ã	CÃC#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,  rX  r¬  ÚgetEffectiveLevelÚloggingÚDEBUGrN   rJ   Ú_DISPATCH_HANDLE_DIRECTLYrI  r9  ry  rt  )rP   ra   r±  r¢  r£  Úincrs         rG   rT  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                óŠ  ‡ ‡‡
‡— ddl Šddlm} dˆ ˆfd„}t        |t        j
                  «      rZ	  |||ddddd¬«       t        t        |j                  «       |j                  «       «      «      D ]  \  }\  }}		  |||	«       Œ |dfS 	  |||«       |dfS # t        $ roŠ
t        j                  j                  j                  r%t        d	ˆ
ˆfd
„¬«       t        ‰ ‰|«      dfcY dŠ
‹
S t        d|› d|› dt        |«      › d‰› �«      ‰
‚dŠ
‹
ww xY w# t        $ rtŠ
t        j                  j                  j                  r't        d	ˆ
ˆfd„¬«       t        ‰ ‰|«      dfcY dŠ
‹
c S t        d|› d|	› dt        |«      › d|› d‰› �
«      ‰
‚dŠ
‹
ww xY w# t        $ r&Š
t        d|› d|› dt        |«      › d‰› �«      ‰
‚dŠ
‹
ww xY w)zÎ
        Helper to cross-check fake/real output properties & values,
        and create new fake vals if mismatched.
        Returns tuple of object & boolean, for whether or not it was overwrriten
        r   N)Ú_check_fake_real_tensorsc                ó^  •— t        | t        t        f«      rã‰j                  €J ‚| j                  j
                  j                  ‰j                  j                  j                  «       z
  ‰j                  j                  j                  «       z
  sj‰j                  j                  ‰j                  | j                  j
                  |«      d¬«      ‰j                  j                  urt        d| › d|› d�«      ‚y y t        | t        t         t"        f«      r| |k7  rt        d| › d|› d�«      ‚y y )NT)Úcompute_hintzmismatch between fake value z and real value rÊ  )rœ   r   r   r   ro  ÚexprÚfree_symbolsÚ
var_to_valr“  Úunbacked_var_to_valÚ_maybe_evaluate_staticÚEqÚSÚtruerh   r   ÚfloatrÙ   )ÚfakeÚrealrP   Úsympys     €€rG   Ú_check_fake_real_valsz?FakeTensorMode._maybe_infer_fake.<locals>._check_fake_real_vals/  s'  ø€ ä˜$¤¬Ð 2Ô3à—~‘~Ð1Ð1Ð1àŸ	™	Ÿ™×3Ñ3Ø—n‘n×/Ñ/×4Ñ4Ó6ñ7à—n‘n×8Ñ8×=Ñ=Ó?ò@ð
 Ÿ™×=Ñ=Ø!ŸH™H T§Y¡Y§^¡^°TÓ:Èð >ó ð  %Ÿw™wŸ|™|ñ,ô
 4Ø:¸4¸&Ð@PÐQUÐPVÐVWÐXóð ð,ð@ô Ø”sœE¤4Ð(ôð ˜4’<Ü/Ø6°t°fÐ<LÈTÈFÐRSÐTóð ð  ðrF   úReal tensor propagation foundFT)ÚcontextÚsizesÚstridesrá  r�  Úmismatched_fake_kernelc                 ó4   •— t        ‰«      ‰ j                  dœS ©N©Úopr[   ©rZ   r[   ©Úexcra   s   €€rG   ú<lambda>z2FakeTensorMode._maybe_infer_fake.<locals>.<lambda>Y  s   ø€ Ü"% d£)Ø&)§j¡jñ-€ rF   ©Úmetadata_fnzFReal tensor propagation found a metadata mismatch between fake tensor z and real tensor z,  at outputz, for func: c                 ó4   •— t        ‰«      ‰ j                  dœS rç  rê  rë  s   €€rG   rí  z2FakeTensorMode._maybe_infer_fake.<locals>.<lambda>n  s   ø€ Ü&)¨$£iØ*-¯*©*ñ1€ rF   zIReal tensor propagation found an output size mismatch between fake shape z and real shape z, at outputz.size(z), for func: zQReal tensor propagation found an output value mismatch between fake output value z and real output value )rÝ  r   rÞ  r   rV   rW   )rß  Útorch._subclasses.fake_utilsrÑ  rœ   rv   r   rh   r¤   r0  Ú*generate_fake_kernels_from_real_mismatchesr   Ú_infer_fake_from_real_tensorr+   r¢  rÇ  r  )rP   ra   ÚpathrÝ  rÞ  rÑ  rà  ÚjÚs_fakeÚs_realrì  rß  s   ``        @@rG   Ú_maybe_infer_fakez FakeTensorMode._maybe_infer_fake#  s  û€ ó 	åIö	ô6 �dœEŸL™LÔ)ðÙ(ØØØ;ØØ!Ø#'Ø"'õô2 (1´°T·Y±Y³[À$Ç)Á)Ã+Ó1NÓ'Oò Ñ#�Ñ#�F˜FðÙ)¨&°&Õ9ðð: �Uˆ{ÐðÙ% d¨DÔ1ð �Uˆ{Ðøô[ )ò Ü×#Ñ#×*Ñ*×UÒUÜ%Ø0ô%õô 8¸¸dÀDÓIÈ4ÐOÕOÜ+ð#Ø#' &Ð(9¸$¸ð @!Ü!'¨£ ¨l¸4¸&ðBóð ð	ûðûô& -ò ä×(Ñ(×/Ñ/×ZÒZä)Ø4ô)õô  <¸DÀ$ÈÓMÈtÐS×SÜ/ð&Ø&, XÐ-=¸f¸Xð F$Ü$*¨4£L >°¸°s¸-ÈÀvðOóð ð	ûðûô( )ò Ü+ð)Ø)-¨Ð.EÀdÀVð L Ü & t£˜~¨\¸$¸ðAóð ð	ûðúsa   ±B Á;	DÂ	F Â	DÂ!ADÃ$DÃ*!DÄDÄ	FÄAFÅFÅ'$FÆFÆ	GÆ!F=Æ=Gc                óÆ  ‡ ‡‡‡— ddl m} dŠ‰ j                  rt        ‰ j                  j                  «      Šdˆˆ fd„}t
        j                  |«      \  }}	t
        j                  |«      \  }
}	  |d||||«       t        t        ||
«      D ���cg c]  \  \  }}}‰ j!                  ‰|||«      ‘Œ c}}}Ž \  }}t#        |«      r	‰r |«        t
        j%                  ||	«      S # t        $ rkŠt        j                  j                  j                  r-t        dˆˆfd„¬«        |«        t        ˆˆ fd	„|«      cY dŠ‹S t        d
|› d|› d‰› �«      ‰‚dŠ‹ww xY wc c}}}w )zÓ
        Helper to cross-check fake/real output properties & values,
        and create new fake vals if mismatched, but at the kernel level.
        Means this handles pytree outputs & checks aliasing.
        r   )Ú_check_alias_infoNc                 ó’   •— t        t        ‰j                  j                  «      j	                  ‰ «      «      ‰j                  _        y rn   )rí  Úsetr   Úpending_fresh_unbacked_symbolsÚ
difference)Úpending_unbackedrP   s   €€rG   Ú_clear_pending_unbackedzXFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>._clear_pending_unbacked˜  s4   ø€ Ü<@Ü�D—N‘N×AÑAÓB×MÑMØ$óó=ˆD�N‰NÕ9rF   rá  rå  c                 ó:   •— t        ‰«      d‰ j                  › �dœS )Nz>Mismatched aliasing spec between fake kernel and real kernel: rè  rê  rë  s   €€rG   rí  zIFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>.<lambda>«  s#   ø€ Ü! $›ià\Ð]`×]gÑ]gÐ\hÐiñ)€ rF   rî  c                ó   •— t        ‰‰| «      S rn   )ró  )r—   ra   rP   s    €€rG   rí  zIFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>.<lambda>·  s   ø€ Ô:¸4ÀÀqÓI€ rF   zGReal tensor propagation found an aliasing mismatch between fake output z and real output z,  for func: rU   )rñ  rú  r   rí  rý  rÆ   Útree_flatten_with_pathÚtree_flattenrh   rv   r¤   r0  rò  r   r-   rÇ  rø  r    Útree_unflatten)rP   ra   Úfake_inÚreal_inÚfake_outÚreal_outrú  r   Úfake_paths_leavesÚ	fake_specÚreal_leavesrŽ   Ú
_fake_pathÚ	_fake_outÚ	_real_outÚfake_leavesÚ	overridesrì  rÿ  s   ``               @@rG   Ú(_maybe_infer_fake_kernel_from_pytree_outz7FakeTensorMode._maybe_infer_fake_kernel_from_pytree_out„  sx  û€ õ 	Cð  ÐØ�>Š>Ü# D§N¡N×$QÑ$QÓRÐö	ô (.×'DÑ'DÀXÓ'NÑ$Ð˜9Ü×,Ñ,¨XÓ6‰ˆ�Qð	áØ/°¸7ÀHÈgôô> "%ô ;>Ø% {ó;÷ð á6Ñ+�Z ¨Yð ×&Ñ& t¨Z¸ÀIÕNôð"
Ñˆ�Yô �	ŒNÑ/á#Ô%Ü×$Ñ$ [°)Ó<Ð<øôQ %ò 	ä×Ñ×&Ñ&×QÒQÜ!Ø,ô!õñ (Ô)ÜÜIÈ8óõ ô ,ð#Ø#+ *Ð,=¸h¸Zð H"Ø"& ð)óð ð	ûð)	üô:s+   Á0C% Â!EÃ%	EÃ.AEÄ9EÄ?EÅEc                óH  ‡ ‡‡‡‡)‡*‡+‡,‡-‡.‡/‡0‡1‡2‡3‡4— 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 }
‰t        j                  j                  j                  j                   u xr; t#        ‰d   t        j$                  «      xr ‰d   j&                  j                  dk(  }|
r|	rt)        ‰«      rÈ‰/sÆ|	sÄ|sÂt+        d„ |	D «       «      s
J ‰› d�«       ‚‰-D �cg c]!  }‰ j                  |«      r|j,                  n|‘Œ# }}t         j/                  |‰)«      \  }} ‰|i |¤Ž}t	        |«      t$        u rH‰ j1                  |«      r7t3        «       5  |j5                  «       }d d d «       ‰+j7                  ‰ |d¬	«      S |
rQt9        ‰«      dk(  rt9        ‰«      d
k(  sJ ‰› d‰› �«       ‚t	        ‰d   «      t$        u r‰+j7                  ‰ ‰d   «      S d}‰ j:                  rr‰t        j                  j                  j                  j                   k(  rd‰v r
‰d   dk7  rd}‰t        j                  j<                  j>                  j                   k(  rd}‰ jA                  ‰‰+‰-‰)«      \  Š-}	‹‹t+        d„ |	D «       «      }t        jB                  jD                  ‰jF                  v�rt        jB                  jH                  ‰jF                  vrö|rôt9        |	«      dk7  ræ‰/sä|sâ‰-D �cg c]!  }‰ j                  |«      r|j,                  n|‘Œ# }}t         j/                  |‰)«      \  }}t3        «       5   ‰|i |¤Ž}d d d «       t         jK                  «      }|D �cg c]  }t#        |t$        «      sŒ|‘Œ }}t+        ˆ fd„|D «       «      }|rt         jM                  t$        ˆ+ˆ fd„|«      S |D ]  }‰+jO                  |«       Œ t         j/                  ‰-‰)«      \  ŠŠ‰ jQ                  ‰|	‰‰«       	 	 	 	 d&ˆ fd„}ddl)m*Š*m+Š. tY        «       Š0‰0Š3‰ jZ                  r×t+        d„ |	D «       «      rÅt        ˆ.ˆ ˆ4fd„‰-D «       «      s¯t\        j                  d‰«       ‰-D �cg c]
  } ||«      ‘Œ }}t         j/                  |‰)«      \  Š1Š2t_        j`                  ‰«      }|st_        jb                  ‰|‰)«      }	  ‰‰1i ‰2¤ŽŠ3|syjg                  «        t_        jh                  ‰jj                  ‰-‰3«       nG‰ jZ                  r;t\        j                  d‰|	‰-‰ jl                  r‰ jl                  jn                  nd «       d'ˆˆ*ˆ.ˆˆˆ0ˆ1ˆ2ˆ3ˆ f
d„}‰/r-tq        «       js                  ‰«      }|� | |‰ g‰¢­i ‰¤Ž«      S ddl:m;} ‰|vrŽ‰ jy                  ‰«      s}ddl:m=} ‰|v r<‰/st}        ‰«      r/t+        d„ |	D «       «      r‰ 5   | |‰   ‰i ‰¤Ž«      cd d d «       S ‰ 5   ‰j~                  ‰i ‰¤Ž}|t        ur ||«      cd d d «       S 	 d d d «       d‰j€                  j‚                  v r;t…        ‰d«      r/t‡        ‰«      s$‰ 5   | ‰jˆ                  ‰i ‰¤Ž«      cd d d «       S t        jŠ                  jŒ                  jŽ                  } | �%‰| j�                  v r | j’                  ‰‰ g‰¢­i ‰¤ŽS ‰ jZ                  r_‰3‰0ur[t_        j`                  ‰«      sF‰ jl                  �:t_        j”                  ‰«      s%t—        ‰ ‰‰3«      }!t™        dˆfd „¬!«        ||!«      S t        jš                  jœ                  jž                  j¡                  ‰jƒ                  «       «      j¢                  j¤                  }"|"r|t        jš                  j¢                  j§                  ‰ ‰«      Š,t        jš                  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·                  ‰‰-‰js                  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   �ŒzxY wc c}w c c}w # td        $ r"}t\        j                  d‰|«       Y d }~�Œ1d }~ww xY 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 «       �ŒI# 1 sw Y   �ŒSxY w# 1 sw Y   ŒãxY w# t°        $ r}( |&|(«      cY d }(~(S d }(~(wt²        $ r t\        jµ                  d$‰«       ‚ w xY w)*Nz,FakeTensorMode unrecognized subclass(es): %sc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrn   )rø  )r�   r¥  s     rG   r„   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>ì  s   è ø€ ò !
Ø./ˆA×)Õ)ñ!
ùó   ‚c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrn   )rœ   r   )r�   r_  s     rG   r„   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>î  s   è ø€ Ò:¨1”˜Aœv×&Ñ:ùs   ‚r   r-  c              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrn   rü   ©r�   r³   s     rG   r„   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>  s   è ø€ ò Ø+,�—
‘
 $Ô&ñùó   ‚z. should not have fake inputs without constantsT©r%  r2   rÊ  Frþ   r  c              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrn   rü   ©r�   rx  s     rG   r„   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>C  ó   è ø€ ÒQ°a˜1Ÿ:™:¨TÔ1ÑQùr  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrn   )Úmay_turn_const)r�   r³   rP   s     €rG   r„   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>X  s   øè ø€ ÒP¸!˜t×2Ñ2°1×5ÑPùrž  c                ó,   •— ‰j                  ‰| d¬«      S )NTr  )r+  )r³   Ú	converterrP   s    €€rG   rí  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>]  s   ø€ ˜i×8Ñ8¸¸qÐPTÐ8ÓU€ rF   c                óž  •— t        | t        «      r| j                  S t        | t        «      rƒ‰j                  €J ‚| j
                  j                  | j
                  j                  j                  ‰j                  j                  «      j                  ‰j                  j                  «      «      S t        | t        «      r| j                  S | S rn   )rœ   r�   r}  r%   r   ro  ÚpytyperÔ  ÚxreplacerÖ  r×  r   Úreal_obj)r³   rP   s    €rG   Úmaybe_to_real_tensorz;FakeTensorMode._dispatch_impl.<locals>.maybe_to_real_tensork  sœ   ø€ ô ˜!œZÔ(Ø—}‘}Ð$Ü˜Aœ|Ô,Ø—~‘~Ð1Ð1Ð1Ø—v‘v—}‘}Ø—F‘F—K‘K×(Ñ(¨¯©×)BÑ)BÓC×LÑLØŸ™×:Ñ:óóð ô
 ˜AÔ/Ô0Ø—z‘zÐ!à�rF   )Úcompute_unbacked_bindingsÚfree_unbacked_symbolsc              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrn   )r}  r  s     rG   r„   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>†  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�   ÚsrP   s     €rG   r„   z:FakeTensorMode._dispatch_impl.<locals>.<genexpr>.<genexpr>�  s    øè ø€ ÒVÈA˜A T§^¡^×%GÑ%GÔGÑVùs   ƒ"%)rœ   r   r   r    )r�   r_  r(  rP   Úsymss     €€€rG   r„   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>ˆ  sd   øè ø€ ò ð ô ˜q¤&Ó)ò WÙ!6°qÓ!9Ð9˜òWàŸ™¨dÐ2òWô ÓVÐQUÔVÓVóWñùs   ƒAAzpropagate_real_tensors %sz9real-tensor fallback failed for %s: %s; silently ignoringz,SKIPPED propagate_real_tensors %s(%s, %s) %sc           	     óF  •
‡‡— dd l Št        j                  d‰«       dˆˆˆˆfd„Š‰‰uröt        j                  j
                  j                  s‰j                  ‰‰‰f‰	‰
f| ‰«       n‰j                  ‰‰‰f‰	‰
f| ‰«      } t        | t        «      smt        ‰t        «      s]t        | «      t        ‰«      k7  rFt        ‰t        t        j                  | «      «      t        t        j                  ‰«      «      «       nt        ‰| ‰«        ‰‰j                  | d¬«       | S )Nr   zmaybe_propagate_real_tensors %sc                óà  •— t        | t        «      rÈt        j                  dt	        | «      t	        |«      «       || _        t        | j                  «       |j                  «       «      D ]  \  }} ‰||«       Œ t        | j                  «       |j                  «       «      D ]  \  }} ‰||«       Œ  ‰| j                  «       |j                  «       «       y t        | t        «      �r ‰| «      rût        | j                  j                  ‰j                  «      r?‰j                  €J ‚‰j                  j                  | j                  j                  |«       y t        | j                  j                  x}‰j                   «      ret        |j"                  ‰j                  «      rD|j$                  dk(  r4‰j                  €J ‚‰j                  j                  |t'        |«      «       y y y y y y )Nz%maybe_propagate_real_tensors %s -> %sr2   )rœ   r�   r,  rX  r-  r}  rÇ  r  rÞ  rá  r%   ro  rÔ  ÚSymbolr   Úset_unbacked_var_to_valrÙ  ÚlhsÚrhsr   )r³   Úreal_tr,  Úreal_sr(  ÚgorP   rß  s       €€€€rG   r6  zOFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensors.<locals>.goÀ  sw  ø€ Ü˜a¤Ô,ä—I‘IØ?ÄÀAÃÌÈ6Ë
ôð %+�A”MÜ%(¨¯©«°6·;±;³=Ó%Aò &™	˜˜6Ù˜1˜f�ð&ä%(¨¯©«°V·]±]³_Ó%Eò &™	˜˜6Ù˜1˜f�ð&á�q×'Ñ'Ó)¨6×+@Ñ+@Ó+BÕCÜ ¤<Õ0Ñ5JÈ1Ô5MÜ! !§&¡&§+¡+¨u¯|©|Ô<Ø#Ÿ~™~Ð9Ð9Ð9ØŸ™×>Ñ>¸q¿v¹v¿{¹{ÈFÕSä"¨¯©¯©Ð#3 1°U·X±XÔ>Ü& q§u¡u¨e¯l©lÔ;ØŸE™E QšJà#Ÿ~™~Ð9Ð9Ð9ØŸ™×>Ñ>¸qÄ#ÀfÃ+ÕNð 'ð <ð ?ð 6NÐ0rF   T)Úpeek)r³   rÁ  r4  r   rV   rW   )rß  r,  rX  rv   r¤   r0  rò  r  rœ   r   rž   r.   rì  rÆ   r  r   )r  r6  rß  r¢  r'  r(  ra   r£  ÚnilÚ	real_argsÚreal_kwargsr	  rP   s    @@€€€€€€€€€€rG   Úmaybe_propagate_real_tensorszCFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensors»  s  ú€ Ûä�I‰IÐ7¸Ô>÷Oð Oð0 ˜sÑ"ô ×(Ñ(×/Ñ/×ZÒZà×AÑAØØ˜v˜Ø" KÐ0Ø Ø õð  $×LÑLØØ˜v˜Ø" KÐ0Ø Ø ó �Hô # 8¬VÔ4Ü& x´Ô8Ü˜X›¬$¨x«.Ò8ô ØÜœf×1Ñ1°(Ó;Ó<Üœf×1Ñ1°(Ó;Ó<õô ˜b (¨HÔ5ñ
 *¨$¯.©.¸(ÈÕNàˆOrF   )Ú
meta_tabler½   c              3  ó4   K  — | ]  }t        |«       –— Œ y ­wrn   )r   r  s     rG   r„   z0FakeTensorMode._dispatch_impl.<locals>.<genexpr>	  s   è ø€ ÒP°Q¤¨aÓ 0Ô0ÑPùr  zprims::Úprim_meta_implÚmissing_fake_kernelc                 ó   •— dt        ‰ «      iS )Nré  )rZ   rº   s   €rG   rí  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>G	  s   ø€ Øœc $›ið)€ rF   rî  c                 ó   •— ‰ S rn   rE   )Úctxs   €rG   rí  z/FakeTensorMode._dispatch_impl.<locals>.<lambda>T	  s   ø€ À€ rF   c                óÌ   •— t         j                  j                  j                  ‰«      ry ‰s‰j	                  ‰«      st        ‰«      ‚| €t        ‰«      } t        ‰‰‰‰| «      S rn   )rv   r‹  rŒ  Úcan_generate_trivial_fake_implÚcan_run_unsafe_fallbackrf   Úrun_fallback_kernel)ÚerrorÚ	args_specrÂ  ra   Úhas_symbolic_sizesrP   s    €€€€€rG   Úmaybe_run_unsafe_fallbackz@FakeTensorMode._dispatch_impl.<locals>.maybe_run_unsafe_fallbacka	  s]   ø€ ô �~‰~×#Ñ#×BÑBÀ4ÔHØá!¨×)EÑ)EÀdÔ)KÜ2°4Ó8Ð8Øˆ}Ü4°TÓ:�Ü& t¨T°9¸iÈÓOÐOrF   z*failed while attempting to run meta for %sr7  )r³   rH   rV   z1Optional[Union[T, Tensor, torch._C.ScriptObject]])r  rH   rV   rH   rn   )rG  zOptional[RuntimeError]rV   r/  )\rÆ   r  Ú_check_for_subclassÚ_check_for_subclass_argrž   r®  rX  r  rI  r    r3  rŠ  rv   r¨  rˆ  Ú_to_copyrª  rœ   r   rþ   rP  rŸ   rß   r  r  r'   Úcloner+  r«  rM  ÚprimsÚ
device_putÚ%validate_and_convert_non_fake_tensorsrƒ  Únondeterministic_seededr…  r‡  rÇ   Útree_map_onlyrë   Úinvalidate_written_to_constantsr  r'  r(  rÁ  r2  r,  Úlibrary_utilsr�  ÚMutationCheckerÚZeroDivisionErrorÚcheckÚcheck_aliasing_constraintr[  r   r×  Úget_fast_op_implsrï   r¿   r<  Úcpp_meta_supports_symintr¾   rÄ   Ú	decomposer¹   rN  rL  Ústride_incorrect_opr>  r7  r0  Ú_custom_ops_profileÚdataÚgeneric_fake_kernelÚhas_fake_kernelÚ"inferred_fake_kernel_from_real_outr   r‹  Úsimple_registryÚ	singletonÚfindÚ	fake_implÚkernelÚFakeImplCtxÚset_ctx_getterÚop_implementations_checksÚhas_metarI  r‚  rÆ  rV  Ú+wrap_meta_outputs_with_default_device_logic)5rP   ra   r±  r¢  r£  Úhas_unrecognized_typesr—   r³  r³   Úflat_arg_fake_tensorsÚis_lift_funcÚ!device_conversion_skip_const_propr_  Úconst_flat_argsÚ
const_argsÚconst_kwargsr‹   Úavoiding_device_initÚall_constantÚflat_outÚflat_out_tensorsrê   r&  Úreal_flat_argsr�  Úmutation_checkerrì  r;  Ú	fast_implr<  r¾   rt  Úprofilesrñ  Úmaybe_fake_implÚrun_impl_checkÚop_implÚop_impl_outrJ  ÚfallbackÚnot_implemented_errorrH  r'  r!  rB  rÂ  r(  rI  r8  r9  r:  r	  r-  s5   `` ``                                    @@@@@@@@@@@@rG   rt  zFakeTensorMode._dispatch_implÐ  s
  ÿÿ€ ô  &×2Ñ2°D¸&°>ÓBÑˆ	�9ô "5°YÓ!?ÐÙ!à!*ö"ØÔ.EÀaÕ.H”�Q•ð"Ðð "ô  ×%Ñ%Ø>Ð@Rôô "Ð!à,5Ö M q¸×9IÑ9IÈ!Õ9L¢Ð MÐÐ MÜ ñ !
Ø3Hô!
ó 
ò ;äÑ:°	Ô:Ó:ð 	ð ×.Ñ.ˆ	à˜tŸ}™}Ð,ˆà”E—I‘I—N‘N×+Ñ+×3Ñ3Ð3ò .Ü˜4 ™7¤E§L¡LÓ1ò.à�Q‘—‘×#Ñ# vÑ-ð 	*ñ Ñ!6Ü+¨DÔ1Ù&Ù)Ù5äñ Ø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Ð1°4Ô8Ø?HÖI¸!Ñ2°1Õ5ÐIˆNÐIÜ%+×%:Ñ%:¸>È9Ó%UÑ"ˆI�{ä&×1Ñ1°$Ó7ˆJÙÜ#0×#@Ñ#@Ø˜.¨)ó$Ð ð
Ù Ð:¨kÑ:�ñ Ø ×&Ñ&Ô(Ü×7Ñ7¸¿
¹
ÀIÈxÕXà×(Ò(ô �I‰IØ>ØØ%ØØ6:·n²n�—‘×2Ò2È$ô÷H	ö H	ñV Ü)Ó+×/Ñ/°Ó5ˆIØÐ$Ù3±I¸dÐ4TÀTÒ4TÈVÑ4TÓUÐUõ 	;à�zÑ!¨$×*GÑ*GÈÔ*MÝ9ð Ð*Ñ*Ù"ô 0°Ô5ÜÑPÐ:OÔPÔPð ñ Ù7Ø1Ð+¨DÑ1°4ÐB¸6ÑBó÷ñ ð
 ñ ;à"�D—N‘N DÐ3¨FÑ3�ØœNÑ*Ù7¸Ó:÷	;ñ ;ð +÷;ð ˜Ÿ™×*Ñ*Ñ*Ü˜Ð.Ô/Ü'¨Ô-àñ Ù3Ø'�D×'Ñ'¨Ð8°Ñ8ó÷ñ ô
 —=‘=×'Ñ'×;Ñ;ˆØÐØ�x—}‘}Ñ$Ø3�x×3Ñ3°D¸$ÐPÀÒPÈÑPÐPð ×'Ò'Ø Ñ#Ü!×,Ñ,¨TÔ2Ø—‘Ð*ô !×0Ñ0°Ô6Ü;¸DÀ$ÈÓQ�ä!Ø)ó!õñ 4°FÓ;Ð;ô  Ÿ.™.×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Ó+?ð =ó ó
ð 	
ùò"ùò !Nùò>÷&ñ &üòn÷8ñ 8üò  Nùòx Jøô %ò ô —	‘	ØOØØ÷ò ûð	ú÷zñ ú÷
;ñ ;ú÷"ñ ú÷F<ð <ú÷ <÷ <ó <ú÷L*ð *ûä"ò 	DÙ,Ð-BÓCÕCûÜò 	Ü�M‰MÐFÈÔMØð	úsã   ¼d+Ád+Á<d0Âd0Å;&d5Ç0d:Î &eÏ	eÏ5eÐeÓ7eÕe# ÙfÙ4"fÛf+ágá"f8á2	gã%g' ã0	gã9g' ä:eåeå#	få,f	æ	fæfæf(æ+f5æ8g	æ=gçgçg$ç g' ç'	h!ç0g=ç7h!ç=$h!Ú
debugprimsrO  rˆ  Ú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_namespacesrN  ©rP   ra   s     rG   rE  z&FakeTensorMode.can_run_unsafe_fallback˜	  s:   € Ø×*Ò*Øð
 �N‰N˜d×NÑNÐNò ,Ø�y‰y‹{˜mÑ+ð	
rF   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        ‰	||«      › �«      ‚t        j                  €‰
j                  n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 )rœ   r   rI  rv   rƒ  r‡  r…  rÆ   r  ÚAssertionErrorr   Úfake_tensor_tlsrl   r*  r�   r±   r+  r†   )r—   r¢  r£  r*  r‹   rH  r!  rn  rÂ  ra   rP   s        €€€€€€rG   ÚvalidatezFFakeTensorMode.validate_and_convert_non_fake_tensors.<locals>.validate±	  s3  ø€ Ü˜a¤Ô(Ø�ð ×#Ñ# AÔ&Ü—9‘9×)Ñ)¨T¯Y©YÑ6Ü#)×#8Ñ#8¸ÀIÓ#N‘L�D˜&Ü(Ø_Ô`kÐlpÐrvÐx~Ó`ð  `Að  Bóð ô
 '×EÑEÐMð ×.Ò.ä(×GÑGð &ñ
 -Ü! !¤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‘à�à!×(Ñ(¨Ô-ØˆJrF   )r—   rH   rV   úUnion[T, FakeTensor]rE   )	rP   ra   r!  rÂ  rH  r�  r_  Úvalidated_argsrn  s	   `````   @rG   rQ  z4FakeTensorMode.validate_and_convert_non_fake_tensors£	  s@   ý€ ð 35Ð÷	ò 	ð@ 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 r7  )r½  rx  s   €€rG   rí  zZFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrap.<locals>.<lambda>ò	  s   ø€ ÐKÈAÏHÉHÈ:ÐU`ÐanÐ`oÐp€ rF   )rœ   r   r�   rÄ  rI  rv   Ú_checkrþ   r   rH   r+  r.  )	rx  rI  r½  r!  rþ   rÂ  ra   rÃ  rP   s	   ` €€€€€€€rG   Ú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¨=óð ð �rF   ©rx  rH   rV   r‘  )r3  r-   )	rP   rt  ra   rÂ  rþ   r—  r½  r!  rÃ  s	   ` ``` @@@rG   rl  z:FakeTensorMode.wrap_meta_outputs_with_default_device_logicÔ	  s7   þ€ ð ×.Ñ.ˆ	ð ˆØ!&Ð÷	ó 	ôB ˜˜aÓ Ð rF   rÇ  c               ó�  — dd l }ddlm} |€4| j                  }| j                  sJ d«       ‚| xj                  dz  c_         |j
                   ||d«      «      }|j                  j                  j                  d«      }| j                  €J ‚| j                  j                  | j                  j                  ||¬«      ||¬«      }|S )Nr   )ÚNestedIntNodez1should only called while FakeTensorMode is activer2   Úintermediate_offsets_or_lengths)Úvalrö   )Úsymr  rö   )r@  Ú!torch.nested._internal.nested_intrš  r'  r<  r   r7  rö   ÚEphemeralSourcer   r"  Úcreate_symbol)rP   rÈ  rv   rš  r  ÚsrcÚrets          rG   rÉ  z)FakeTensorMode.create_symbolic_nested_int
  sÈ   € ó
 	4ÝCàÐØ×4Ñ4ˆLØ×#Ò#ÐXÐ%XÓXÐ#Ø×%Ò%¨Ñ*Õ%Øˆu�|‰|™M¨,¸Ó:Ó;ˆà�m‰m×"Ñ"×2Ñ2Ð3TÓUˆØ�~‰~Ð)Ð)Ð)Ø�n‰n×.Ñ.Ø—‘×,Ñ,ØØð -ó ð Øð /ó 
ˆð ˆ
rF   c                ól   — t         j                  j                  |j                  v ry|| j                  v S rp   )rv   rƒ  Ú	view_copyr…  Ú_cpp_meta_supports_symintr‹  s     rG   r[  z'FakeTensorMode.cpp_meta_supports_symint,
  s,   € Ü�9‰9×Ñ $§)¡)Ñ+ØØ�t×5Ñ5Ð5Ð5rF   c                ó¬   — |j                  «       t        k  xr< t        |«       xr. | j                  |«       xr |j                  j
                  dk(   S r  )ÚnumelÚCONSTANT_NUMEL_LIMITr   rI  rþ   rž   rH  s     rG   r  zFakeTensorMode.may_turn_const3
  sV   € à�G‰G‹IÔ-Ñ-ò ,Ü! !Ó$Ð$ò,à×$Ñ$ QÓ'Ð'ò,ð —H‘H—M‘M VÑ+Ð+ð		
rF   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     rG   r„   zAFakeTensorMode.invalidate_written_to_constants.<locals>.<genexpr>B
  r  r  T)r¢  r£  Únormalize_to_only_use_kwargsÚinputrP   )
r    r»   Ú
is_mutabler!   rs   Úhas_argumentrI  rß   r3  rë   )rP   ra   rn  r¢  r£  Úany_constantÚschema_inforŽ   Ú
new_kwargsÚkrô   s              rG   rT  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ˆ<rF   )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%  r3  r+  )rP   rè   r%  rö   r÷   rø   r   s          rG   r¦  zFakeTensorMode.from_tensorQ
  sn   € ð )-¯©ˆ	ØÐ Ø ×.Ñ.ˆMÙà Ð(ðDàCóDØ(àˆIØ×)Ñ)×:Ñ:ØØØØØ-Øð ;ó 
ð 	
rF   )r)  rÙ   r*  rÙ   r   r1  r%  rk   rÚ   rÙ   rV   rW   rU   )r³   rÁ  rV   zTypeGuard[FakeTensor])rV   rÙ   )rV   rZ   rÏ  )rV   r   )r_  zOptional[type[BaseException]]r`  zOptional[BaseException]ra  zOptional[TracebackType]rV   rW   )rV   r  )
ró  r3   ra   r<   r¢  rÑ  r£  rÒ  rV   rþ  )ra   r<   r¢  rÑ  r£  rÒ  rV   rW   )rñ  rö  r¢  z?Union[Mapping[str, object], Sequence[object], Iterable[object]]ró  r3   rV   rW   )ró  r3   r‚   rþ  ra   r<   r¢  rÑ  r£  rÒ  rv  r/  rV   rW   )ró  r3   r‚   rþ  ra   r<   r¢  rÑ  r£  rÒ  rv  r�   rV   r  )ró  r3   r‚   rþ  ra   r<   r¢  rÑ  r£  rÒ  rv  r/  rV   r  )ró  r3   rw  r  r‚   rþ  ra   r<   r¢  rÑ  rV   r/  )ró  r3   rw  r  r‚   rþ  ra   r<   r¢  rÑ  rV   ú=Union[Optional[FakeTensor], tuple[Optional[FakeTensor], ...]])rv  r´  ra   r<   r±  rÐ  r¢  rÑ  r£  rÒ  rV   rW   )
ra   r<   rô  r*   rÝ  rÁ  rÞ  rÁ  rV   ztuple[Optional[object], bool])ra   r<   r  rÁ  r  rÁ  r  rÁ  r	  rÁ  rV   zOptional[object])
ra   r<   r±  rÐ  r¢  rÑ  r£  rÒ  rV   r/  ©ra   r<   rV   rÙ   )
ra   r<   r!  rÔ   rÂ  rÑ  rH  r/   rV   z%tuple[list[object], list[FakeTensor]])
rt  rÁ  ra   r<   rÂ  rÑ  rþ   r4  rV   r,   )rÈ  ræ  rV   rÓ  rÀ  )
ra   r<   rn  zSequence[FakeTensor]r¢  rÑ  r£  rÒ  rV   rW   )rè   r   r%  rk   rö   r2  r÷   r3  rø   rÙ   rV   r�   )IrB   rC   rD   r!  r]   r"  r#  r   r   r$  rq  rB  r'  r(  rQ   rF  rI  r5  rM  rR  r0   r    r¶  rZ  r^  rØ  rf  rh  rk  ry  rn  rs  rï  r—  r«  ru  rÂ  rq  rr  rT  rø  r  rt  rt   rŠ  rE  rQ  rl  rÉ  rˆ  r=  rß  rº  rª  Úas_strided_scatterÚ
as_stridedÚas_strided_r>  ÚdetachÚview_as_realÚview_as_complexr½  Úsource_Storage_storage_offsetÚ(_sparse_coo_tensor_with_dims_and_tensorsr¥  r[  Ú
lift_freshÚlift_fresh_copyrŠ  r  rT  r¦  rÙ  rÚ  s   @rG   r0  r0  V  sQ  ø… Ø:<€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ð,#ð ð	,#ð
 
ó,#ð\CàðCð ðCð ð	Cð
 ðCð %ðCð %ðCð 
óCð@:àð:ð ð:ð ð	:ð
 ð:ð %ð:ð ð:ð 
'ó:ðx1àð1ð ð1ð ð	1ð
 ð1ð %ð1ð %ð1ð 
ó1ðf@8àð@8ð -ð@8ð ð	@8ð
 ð@8ð ð@8ð 
ó@8ðDàðð #ðð ð	ð
 ðð ðð 
Góð:#àMð#ð ð#ð ð	#ð
 ð#ð %ð#ð 
ó#ðR "$Ù'5Ó'7ðBàðBð ðBð ð	Bð
 %ðBð 
óBðB_Øð_Ø&-ð_Ø5;ð_ØCIð_à	&ó_ðBJ=àðJ=ð ðJ=ð ð	J=ð
 ðJ=ð ðJ=ð 
óJ=ðXv
àðv
ð ðv
ð ð	v
ð
 %ðv
ð 
óv
ñz 3>ØØØØØØØØó	3Ð/ó	
ð/5àð/5ð 'ð/5ð $ð	/5ð
 ð/5ð 
/ó/5ðb.!àð.!ð ð.!ð $ð	.!ð
 ð.!ð 
ó.!ðb 04ñØ,ðà	óñ4 !,Ø�
‰
× Ñ Ø×Ñ×"Ñ"Ø×Ñ×'Ñ'Ø�‰×ÑØ×Ñ× Ñ Ø�
‰
×ÑØ�‰×ÑØ×Ñ×!Ñ!Ø×Ñ×$Ñ$Ø�	‰	×/Ñ/Ø×5Ñ5×=Ñ=ó!Ðó6ñ
 ˜4Ÿ?™?×2Ñ2°D×4HÑ4H×4PÑ4PÓQ€Hó
ðWàðWð  4ðWð ð	Wð
 %ðWð 
óWð4 )-Ø#'Ø6:Øñ
àð
ð &ð	
ð
 !ð
ð 4ð
ð ð
ð 
÷
rF   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 )Nr7  )rI  rv   Ú
zeros_liker{  rÏ   Ú_coalesced_rå  r-  )rx  r‹   r±   Ú	inp_implss     €€rG   Úto_real_tensorz+run_fallback_kernel.<locals>.to_real_tensorƒ
  sY   ø€ Ø×$Ñ$ QÔ'Ü×&Ñ& q°·±Ô?�Ø—;’;Ø—O‘O A§N¡NÓ$4Ô5Ø%&�	œ"˜S›'Ñ"Ø�
ØˆHrF   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-  rœ   r   r   rà   Ú_cdatar3  r+  )rx  r±   rÄ  Úorig_not_implemented_exceptionÚstoragess    €€€€rG   Ú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àˆHrF   )rx  rH   rV   zUnion[T, Tensor]r˜  )rv   rƒ  r‡  r…  r'   rÆ   r  rü  rœ   r   r   Úaddrà   rÇ  r-   )r±   ra   rÂ  rH  rÈ  rÅ  r_  r¢  r£  rt  rx  rÊ  rÄ  rÉ  s   `   `       @@rG   rF  rF  p
  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±   )rP   r±   s     rG   rQ   zFakeCopyMode.__init__³
  s	   € Ø"ˆ�rF   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%  é   r2   )rv   rw   Ú
TensorBaserN  rœ   r   r±   r¦  Ú__deepcopy__r«  r   rq   r   r�   r-  ÚDisableTorchFunctionSubclass)rP   ra   r±  r¢  r£  rè   Úmemor‹   s           rG   Ú__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±   r0  rV   rW   )rE   N)
ra   r<   r±  rÐ  r¢  rÑ  r£  zOptional[Mapping[str, object]]rV   r�   )rB   rC   rD   rQ   rÕ  rE   rF   rG   rÍ  rÍ  ²
  sD   „ ó#ð "$Ø15ð-àð-ð ð-ð ð	-ð
 /ð-ð 
ô-rF   rÍ  c                óÂ   — t        | «      dk(  rt        | d   t        «      sJ ‚| d   j                  j                  rt        j                  d«      S | d   j                  S )Nr2   r   r-  )r«  rœ   r�   r±   rB  rv   rþ   r{  ©r¢  s    rG   Ú_device_handlerrØ  Õ
  sT   € ô ˆt‹9˜Š>œj¨¨a©´*Ô=Ð=Ð=ØˆA�w×Ñ×-Ò-Ü�|‰|˜FÓ#Ð#à�A‰w×"Ñ"Ð"rF   c                ó&   — t        d„ | D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   )rL  r–   s     rG   r„   z&_check_for_subclass.<locals>.<genexpr>î
  s   è ø€ Ò=¨aÔ& q×)Ñ=ùr™   )r    )rÂ  s    rG   rK  rK  í
  s   € ÜÑ=°9Ô=Ó=Ð=rF   c                ó¼   — t        | t        «       xrJ t        | t        «      xr8 t        | «      t        uxr% t        | «      t        j
                  j                  uS rn   )rœ   r�   r   rž   rv   r  r  ©r—   s    rG   rL  rL  ñ
  sQ   € ä�qœ*Ó%Ð%ò 	.Ü�qœ&Ó!ò	.ä�‹Gœ6Ð!ò	.ô �‹Gœ5Ÿ8™8×-Ñ-Ð-ð	rF   c                ód   — t        d„ t        t        | d   «      j                  «       D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   ©r   ©r�   r,  s     rG   r„   z<lambda>.<locals>.<genexpr>ü
  s   è ø€ ò 4ØŒˆA�ñ4ùr™   r   )rì  r   r   r  r×  s    rG   rí  rí  ü
  s,   € ¬eñ 4ÜœV T¨!¡WÓ-×2Ñ2Ó4ô4ó /€ rF   c                ód   — t        d„ t        t        | d   «      j                  «       D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   rß  rà  s     rG   r„   z<lambda>.<locals>.<genexpr>ÿ
  s   è ø€ ò 6ØŒˆA�ñ6ùr™   r   )rì  r   r   rÞ  r×  s    rG   rí  rí  ÿ
  s,   € ´ñ 6ÜœV T¨!¡WÓ-×4Ñ4Ó6ô6ó 1€ rF   c                óV   — t        t        t        | d   «      j                  «       «      S )Nr   )r   r   r   rá  r×  s    rG   rí  rí    s"   € ¼ÜŒV�T˜!‘WÓ×,Ñ,Ó.ó9€ rF   )Ú_device_not_kwarg_opsÚ_is_tensor_constructorÚ_like_tensor_constructorsÚcontains_tensor_typesrZ  rk  rj  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�   r²  s     rG   r„   z#dump_cache_stats.<locals>.<genexpr>!  s   è ø€ Ò-˜q”C˜—FÑ-ùr™   c                ó   — | d    S rL   rE   )r¥  s    rG   rí  z"dump_cache_stats.<locals>.<lambda>"  s   € ¸A¸a¹D¸5€ rF   ©r‚   z    %-*s %sr2   r�  )	r,  Úinfor0  r"  r#  r$  ÚmaxÚsortedrs   )r  Úwidthr²  rô   s       rG   Údump_cache_statsrð    s¦   € ä‡H�HÐ&Ô'Ü‡H�HÐ¤×!:Ñ!:Ô;Ü‡H�HÐ!¤>×#>Ñ#>Ô?Ü×,Ñ,€HÙÜ�‰Ð$Ô%ÜÑ- HÔ-Ó-ˆÜ˜8Ÿ>™>Ó+±ÔAò 	;‰DˆAˆqÜ�H‰H�] E¨A¡I°!°°A¨w¸Õ:ñ	;ð rF   c                ó&  ‡— dˆfd„}|j                  «       dk7  r |d|j                  «       › �«       t        |j                  «       «      D �cg c]5  }t        j                  j
                  j                  | j                  «      ‘Œ7 }}dg|j                  «       z  }t        |j                  «       «      D ��cg c]	  \  }}||f‘Œ }	}}|	j                  d„ ¬«       d}
|
}|	D ]P  \  }}||
k7  r' |d|j                  › d	|j                  «       › d
�«       |||<   |
|j                  |   z  }
|||   z  }ŒR | 5  t        j                  |||j                  |j                  |j                  ¬«      cd d d «       S c c}w c c}}w # 1 sw Y   y xY w)Nc                ó<   •— t        d‰j                  › d| › d�«      ‚)NzQpropagate_real_tensors: we cannot infer a Fake kernel (meta kernel) for operator z	 because z>. Please use torch.library.register_fake to add a Fake kernel.)r»  r[  )r[   ré  s    €rG   Úunsupportedz1_infer_fake_from_real_tensor.<locals>.unsupported)  s1   ø€ Üð*Ø*,¯(©(¨°9¸V¸Hð EKðLó
ð 	
rF   r   z'a return has a non-zero storage offset rK  c                ó   — | d   | d    fS rÌ  rE   rÜ  s    rG   rí  z._infer_fake_from_real_tensor.<locals>.<lambda>L  s   €   !¡ q¨¡t e˜}€ rF   rë  r2   z(a return was not dense in memory (sizes z	 strides ú))rþ   r  rÍ   )r[   rZ   rV   rW   )rá  r¡  r  rv   r‹  rf  Úallocate_sizer   r¢  rÞ  ÚsortrÝ  rº  rþ   r  rÍ   )rò  ré  r	  ró  rŽ   Ú
fake_shapeÚfake_stridesr¤  r,  rä  ÚexpectedÚfake_strides    `          rG   ró  ró  &  s“  ø€ õ
ð ×ÑÓ  AÒ%ÙØ5°h×6MÑ6MÓ6OÐ5PÐQô	
ô �x—|‘|“~Ó&öàô 	�‰× Ñ ×.Ñ.¨t¯~©~Õ>ð€Jð ð �4˜(Ÿ,™,›.Ñ(€LÜ&/°·±Ó0AÓ&B×C™F˜C ��3ŠxÐC€GÑCØ‡L�LÑ,€LÔ-Ø€HØ€KØò 4‰ˆˆ3Ø�Š=ÙØ:¸8¿>¹>Ð:JÈ)ÐT\×TcÑTcÓTeÐSfÐfgÐhôð (ˆ�SÑØ˜hŸn™n¨SÑ1Ñ1ˆØ! J¨s¡OÑ3‰ð4ð 
ñ 
Ü×"Ñ"ØØØ—?‘?Ø—.‘.Ø—?‘?ô
÷
ñ 
ùò5ùó D÷
ð 
ús   Á:E<Â;FÄ:8FÆFc                ó  — | j                   €J ‚t        j                  |«      \  }}t        d„ |D «       «      st	        d|j
                  › �«      ‚|D �cg c]  }t        | ||«      ‘Œ }}t        j                  ||«      S c c}w )Nc              3  óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrn   )rœ   rv   r   r  s     rG   r„   z5inferred_fake_kernel_from_real_out.<locals>.<genexpr>k  s   è ø€ ÒB¨qŒz˜!œUŸ\™\×*ÑBùs   ‚$&zPpropagate_real_tensors: we don't support operators that return non-Tensors. Got )r   rÆ   r  rŸ   r»  r¹   ró  r  )rò  ré  r	  Úreal_flat_outÚspecr³   Úfake_flat_outs          rG   rb  rb  b  s“   € ð �>‰>Ð%Ð%Ð%ô
 !×-Ñ-¨hÓ7Ñ€M�4ÜÑB°MÔBÔBÜð Ø "§
¡
˜|ð-ó
ð 	
ð
 IVÖVÀ1Ô1°$¸¸AÕ>ÐV€MÐVÜ× Ñ  °Ó5Ð5ùò Ws   ÁB)rs   rH   rV   zdict[T, Literal[True]])rV   z2Generator[Optional[TorchDispatchMode], None, None])rŠ   r   r‹   ú list[Union[Tensor, int, SymInt]]rV   r  )r—   rÁ  rV   zTypeGuard[Tensor])r³   rÁ  rV   zOptional[FakeTensorMode])ra   r<   rV   ztorch._C._SchemaInforµ  )rÈ   ztype[T]rÉ   r,   rV   zlist[T])r³   rÁ  rV   rÙ   )rþ   r4  rV   rW   )r±   r0  rV   zGenerator[None, None, None])r³   r   rV   rÜ  )r±   r0  ra   r<   rÂ  rÑ  rH  r,   rÈ  r»  rV   r�   )r¢  rÑ  rV   r4  )rÂ  rÑ  rV   rÙ   )r—   rÁ  rV   rÙ   rU   )rò  r0  ré  útorch._ops.OpOverloadr	  útorch.TensorrV   r  )rò  r0  ré  r  r	  r   rV   r   )¿Ú
__future__r   Úatexitr·  rê  Ú	functoolsrÌ  r  rV  Ú	threadingr=  Útypingrá   Úcollectionsr   r   r   r   r   r	   r
   r   r   r   Útyping_extensionsr   r   r   rv   Útorch._library.utilsr‹  rŒ  rU  r   r   r   r   Útorch._C._functorchr   r   Ú"torch._library.fake_class_registryr   Útorch._loggingr   Ú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(   r)   Útorch.utils._pytreer*   r+   r,   r-   r.   r/   Útorch.utils._statsr0   Útorch.utils._tracebackr1   Ú_fake_tensor_utilsr3   r4   r5   Úcollections.abcr6   r7   r8   r9   r±  r:   Útorch._guardsr;   Ú
torch._opsr<   r  r=   r>   Ú	getLoggerrB   r,  Ú_loggingÚgetArtifactLoggerr®  Ú
ValueErrorrx  rZ   rA   rm  rí  ÚDimListÚ_pytreerÆ   rH   Ú_opsr¨  rˆ  r¨  rN   rJ   r»  rY   r`   rd   rf   rh   Úlocalrj   r�  rt   Úcontextmanagerr}   r�   r•   r²   Ú	lru_cacher»   rÄ   rË   rÒ   rÔ   r?  rI  rP  rR  rZ  r�   rà  rÜ  rü  rþ  r  r  rÆ  r  r  r0  rÁ  Ú_StoragePointerrF  rÍ  rØ  rK  rL  r©  rþ   rª  r  rÞ  rá  r¬  rå  rç  rè  rÎ  Útorch._subclasses.fake_implsrä  rå  ræ  rç  rZ  rk  rj  r]  Úregisterrð  ró  rb  rE   rF   rG   ú<module>r.     sÊ  ðå "ã Û Û Û Û Û Û 	Û Û Û Û Ý #Ý !ß X× XÓ Xß -Ý !ã ß ,Ð ,ß 3Ó 3ß TÝ ?Ý ,Ý 5÷õ õ %Ý 9Ý 8Ý ;Ý -ß 1Ý 7Ý /÷÷ W× VÝ $Ý 4ç RÑ Rñ ßFÓFÝ#å$Ý%ßOà€g×Ñ˜Ó!€ðØŸ.™.×:Ñ:¸8ÐEVÓWÐ÷	ñ 	ñ ‹m€à
€à	�‰×	Ñ	€ÙˆCƒL€à‡z�z‡~�~×Ñ€àÐ à€÷ñ ð ô \ó ó ðð ô ,ó ó ðð ô <ó ó ðð ô <ó ó ðð ô˜Ló ó ðô3�I—O’Oô 3ñ  “/€ó&ð ×Òò-ó ð-ðØðØ>ðà%óó"ó0ð2 €×Ò�TÓò.ó ð.ð €×Ò�TÓò	Dó ð	Dó@ó
÷$^ñ ^ðB €×Ò�TÓò
ó ð
ð ×Òð@Øð@à ò@ó ð@ó,÷Bñ B÷>Eñ >EôBz4�ô z4ðz	 ˜Ð&7Ð9LÐLÑMÐ ð Ø
÷(%ð (%ó ó ð(%óV#ðL Ø
÷$ð $ó ó ð$ð4 Ù
�$Ô÷ð ó ó ðð Ù
�$Ô÷
"ð 
"ó ó ð
"ð Ù
�$Ôô˜9ó ó ó ðð Ù
�$Ô÷ð ó ó ðô(S
Ð&ô S
ðl0 €ð='Øð='à
ð='ð  ð='ð ð	='ð
 %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×Ò×%Ò%óÐ ÷	÷ 	ó 	ð ‡‚ò	;ó ð	;ð9
Ø
ð9
Ø3ð9
Ø?Kð9
àó9
ðx6Ø
ð6Ø3ð6Ø?Bð6àô6øð}X ò Ø)©S°«VÑ3Ü-àˆõ 	.ûðús   Ä=T> Ô>UÕUÕU