Ë
    g^(hYì ã                  ó   — U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZ ddlmZ ddl
mZ ddlmZmZmZmZmZ ddlmZ ddlZddlZddl Zdd	l!m"Z" dd
l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZFmGZGmHZH ddlImJZJ ddlKmLZLmMZM ddlNmOZO ddlPmQZQmRZRmSZSmTZT ddlUmVZV ddlWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZw ddlmxZxmyZymzZzm{Z{m|Z|m}Z} ddl~mZm€Z€m�Z�m‚Z‚mƒZƒm„Z„m…Z…m†Z†m‡Z‡mˆZˆm‰Z‰mŠZŠm‹Z‹mŒZŒm�Z�mŽZŽm�Z� dZ�de‘d<   	 ddl’Z“erddl•m–Z–  e�j.                  e˜«      Z™e�j4                  �j7                  e˜d«      Zœe�j4                  �j7                  e˜d«      Z�e�j4                  �j7                  e˜d«      Zže�j4                  �j7                  e˜d «      ZŸ G d!„ d"«      Z d#„ Z¡ e�jD                  d«      d$„ «       Z£da¤d%e‘d&<   d'„ Z¥dRd(„Z¦e�jN                  �jP                  �jR                  Z©dSd)„Zª	 	 	 	 	 	 dTd*„Z«d+„ Z¬d,„ Z­d-„ Z®d.„ Z¯ e�j`                  d/¬0«       G d1„ d2«      «       Z±d3„ Z²d4„ Z³e�j`                   G d5„ d6«      «       Z´ G d7„ d8e�jj                  «      Z¶ e�jD                  d«      dUd9„«       Z· G d:„ d;e<«      Z¸ G d<„ d=«      Z¹d>„ Zº G d?„ d@e «      Z» G dA„ dB«      Z¼dVdC„Z½dD„ Z¾dE„ Z¿dF„ ZÀdG„ ZÁdWdH„ZÂ	 	 	 	 	 	 	 	 dXdI„ZÃ	 	 	 	 	 	 	 	 	 	 dYdJ„ZÄ	 	 	 	 dZdK„ZÅdL„ ZÆ	 	 	 	 	 	 	 	 	 	 d[dM„ZÇ eVeÇ«       dN„ ZÈdO„ ZÉddPœdQ„ZÊy# e”$ r dZ“Y �Œw xY w)\aî  
Core guard system for Dynamo that detects when compiled code needs to be recompiled due to
changes in program state. Guards are conditions that must remain true for previously-compiled
code to be valid for reuse.

This module provides the infrastructure for creating, managing and checking guards, including:
- Guard creation and composition
- Guard state management and invalidation
- Guard checking and failure handling
- Utilities for guard optimization and debugging
- Integration with Dynamo's compilation caching

The guard system is critical for Dynamo's ability to efficiently reuse compiled code while
maintaining correctness by detecting when recompilation is necessary due to changes in
program state, tensor properties, or control flow.
é    )ÚannotationsN)Úcontextmanager)Údeepcopy)Úcurrentframe)ÚAnyÚCallableÚOptionalÚTYPE_CHECKINGÚUnion)ÚReferenceType)Úcode_framelocals_names)
Úcheck_obj_idÚcheck_type_idÚdict_versionÚDictGuardManagerÚ install_no_tensor_aliasing_guardÚinstall_object_aliasing_guardÚ!install_storage_overlapping_guardÚinstall_symbolic_shape_guardÚprofile_guard_managerÚRootGuardManager)ÚIndexedSourceÚ$is_from_flatten_script_object_sourceÚis_from_local_sourceÚis_from_optimizer_sourceÚTensorPropertyÚTensorPropertySource)ÚCompileEventLogger)	ÚCompileContextÚ	CompileIdÚDuplicateInputsÚGuardÚGuardBuilderBaseÚGuardEnvExprÚGuardSourceÚSourceÚStorageOverlap)Ú
structured)Újustknobs_check)ÚEqualityConstraintÚis_symbolicÚSYMPY_INTERP)Ú
OrderedSet)Úformat_frameÚreport_compile_source_on_error)ÚTensorWeakRefé   )ÚconfigÚconvert_frameÚexcÚmutation_guard)Úset_guard_error_hook) ÚAttrProxySourceÚ
AttrSourceÚCallFunctionNoArgsSourceÚCallMethodItemSourceÚChainedSourceÚConstantSourceÚConstDictKeySourceÚDefaultsSourceÚDictGetItemSourceÚFlattenScriptObjectSourceÚFloatTensorSourceÚFSDPNNModuleSourceÚGetItemSourceÚGlobalSourceÚGlobalStateSourceÚGlobalWeakRefSourceÚ
GradSourceÚListGetItemSourceÚLocalSourceÚNNModuleSourceÚNumpyTensorSourceÚOptimizerSourceÚScriptObjectQualifiedNameSourceÚShapeEnvSourceÚSubclassAttrListSourceÚTorchFunctionModeStackSourceÚTupleIteratorGetItemSourceÚ
TypeSourceÚ"UnspecializedBuiltinNNModuleSourceÚUnspecializedNNModuleSourceÚUnspecializedParamBufferSourceÚWeakRefCallSource)Ú
CacheEntryÚDynamoFrameTypeÚ
ExtraStateÚGuardedCodeÚ	GuardFailÚGuardFn)Úbuiltin_dict_keysÚcommon_constant_typesÚ	dict_keysÚget_custom_getattrÚget_torch_function_mode_stackÚ get_torch_function_mode_stack_atÚguard_failuresÚistypeÚ	key_is_idÚ	key_to_idÚnormalize_range_iterÚorig_code_mapÚtensor_always_has_static_shapeÚtuple_iterator_getitemÚtuple_iterator_lenÚunpatched_nn_module_getattrÚverify_guard_fn_signaturez#Optional[Callable[[Any, Any], Any]]Úguard_manager_testing_hook_fn)ÚSymbolÚguardsÚ
recompilesÚrecompiles_verboseÚverbose_guardsc                  ór   — e Zd ZdZdd„Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zdd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚGuardManagerWrappera  
    A helper class that contains the root guard manager. An instance of this
    class is stored in the Dynamo cache entry, so that the cache entry can
    access the RootGuardManager stored in the "root" attribute and directly call
    the check_nopybind from C++.
    Nc                óü   — |€t        «       | _        n|| _        d | _        d | _        d | _        g | _        d | _        d | _        d | _        d | _	        d | _
        i | _        g | _        d| _        t        «       | _        y ©NT)r   ÚrootÚdiff_guard_rootÚclosure_varsÚargsÚ
code_partsÚverbose_code_partsÚglobal_scopeÚguard_fail_fnÚcache_entryÚextra_stateÚid_matched_objsÚno_tensor_aliasing_sourcesÚprint_no_tensor_aliasing_guardr-   Údiff_guard_sources)Úselfrx   s     úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/guards.pyÚ__init__zGuardManagerWrapper.__init__¸   s€   € Øˆ<Ü(Ó*ˆD�IàˆDŒIà#ˆÔØ ˆÔØˆŒ	ØˆŒØ"&ˆÔØ ˆÔØ!ˆÔØˆÔØˆÔØ!ˆÔØ*,ˆÔ'à.2ˆÔ+ä3=³<ˆÕó    c              #  óJ   K  — d| _         	 d –— d| _         y # d| _         w xY w­wrw   )r„   ©r†   s    r‡   Ú'_preserve_print_no_tensor_aliasing_flagz;GuardManagerWrapper._preserve_print_no_tensor_aliasing_flagÎ   s&   è ø€ à.2ˆÔ+ð	7Ûà26ˆDÕ/ø°$ˆDÕ/üs   ‚#‹ �#—	  #c                ój   ‡ ‡‡‡— ˆ ˆfd„Šˆ ˆfd„Šˆˆfd„Š ‰‰ j                   «       ‰ j                  S )Nc                óL  •— | j                  «       ‰j                  v xs | j                  «       dkD  }t        | j	                  «       j                  «       «      D ]  \  }\  }}| ‰|«       ‰|«      z  z  }Œ |r)‰j                  j                  | j                  «       «       |S ©Nr   )Ú
get_sourcer…   Ú
fail_countÚsortedÚget_key_value_managersÚitemsÚadd)ÚnodeÚis_diff_guard_nodeÚidxÚkey_mgrÚval_mgrr†   Úvisits        €€r‡   Úvisit_dict_managerzJGuardManagerWrapper.collect_diff_guard_sources.<locals>.visit_dict_managerà   s¦   ø€ à—‘Ó! T×%<Ñ%<Ð<ÒUÀÇÁÓ@QÐTUÑ@Uð ô ,2Ø×+Ñ+Ó-×3Ñ3Ó5ó,ò FÑ'�Ñ'�g˜wð #¡e¨G£n±u¸W³~Ñ&EÑEÑ"ðFñ
 "Ø×'Ñ'×+Ñ+¨D¯O©OÓ,=Ô>à%Ð%r‰   c                ó$  •— t        | t        «      rJ ‚| j                  «       ‰j                  v xs | j	                  «       dkD  }| j                  «       D ]  }| ‰|«      z  }Œ |r)‰j                  j                  | j                  «       «       |S r�   )Ú
isinstancer   r�   r…   r‘   Úget_child_managersr•   )r–   r—   Ú	child_mgrr†   r›   s      €€r‡   Úvisit_managerzEGuardManagerWrapper.collect_diff_guard_sources.<locals>.visit_managerî   s’   ø€ Ü! $Ô(8Ô9Ð9Ð9ð —‘Ó! T×%<Ñ%<Ð<ÒUÀÇÁÓ@QÐTUÑ@Uð ð "×4Ñ4Ó6ò 7�	Ø"¡e¨IÓ&6Ñ6Ñ"ð7ñ "Ø×'Ñ'×+Ñ+¨D¯O©OÓ,=Ô>à%Ð%r‰   c                óJ   •— | €yt        | t        «      r ‰| «      S  ‰| «      S )NF)rž   r   )r–   rœ   r¡   s    €€r‡   r›   z=GuardManagerWrapper.collect_diff_guard_sources.<locals>.visitü   s,   ø€ Øˆ|ØÜ˜$Ô 0Ô1Ù)¨$Ó/Ð/Ù  Ó&Ð&r‰   )rx   r…   )r†   r›   rœ   r¡   s   `@@@r‡   Úcollect_diff_guard_sourcesz.GuardManagerWrapper.collect_diff_guard_sourcesÖ   s,   û€ õ	&õ	&õ	'ñ 	ˆd�i‰iÔà×&Ñ&Ð&r‰   c                óD   — | j                  «        | j                  «        y ©N)r£   Úpopulate_diff_guard_managerr‹   s    r‡   ÚfinalizezGuardManagerWrapper.finalize  s   € Ø×'Ñ'Ô)Ø×(Ñ(Õ*r‰   c                ó’   — | j                  | j                  «      | _        | j                  r| j                  j	                  «        y y r¥   )Úclone_with_chosen_sourcesr…   ry   r€   Úupdate_diff_guard_root_managerr‹   s    r‡   r¦   z/GuardManagerWrapper.populate_diff_guard_manager  s=   € Ø#×=Ñ=¸d×>UÑ>UÓVˆÔð ×ÒØ×Ñ×;Ñ;Õ=ð r‰   c                óD   ‡— ˆfd„}| j                   j                  |«      S )Nc                ó(   •— | j                  «       ‰v S r¥   )r�   )Únode_mgrÚchosen_sourcess    €r‡   Ú	filter_fnz@GuardManagerWrapper.clone_with_chosen_sources.<locals>.filter_fn  s   ø€ Ø×&Ñ&Ó(¨NÐ:Ð:r‰   )rx   Úclone_manager)r†   r®   r¯   s    ` r‡   r©   z-GuardManagerWrapper.clone_with_chosen_sources  s   ø€ ô	;ð �y‰y×&Ñ& yÓ1Ð1r‰   c                ó†   — |j                   j                  }|j                  «       }|D �cg c]
  }|dz   |z   ‘Œ }}|S c c}w )Nú: )Ú	__class__Ú__name__r}   )r†   ÚguardÚ
guard_nameÚpartsÚparts        r‡   Úget_guard_linesz#GuardManagerWrapper.get_guard_lines  sF   € Ø—_‘_×-Ñ-ˆ
Ø×(Ñ(Ó*ˆØ6;Ö<¨d�˜dÑ" TÓ)Ð<ˆÐ<Øˆùò =s   «>c                óv   — |j                  «       }|j                  j                  }|dz   |z   }|r|d|z   z  }|S )Nz	: source=ú, )r�   r³   r´   )r†   Úguard_managerÚaccessor_strÚsourceÚtÚss         r‡   Úget_manager_linez$GuardManagerWrapper.get_manager_line$  sF   € Ø×)Ñ)Ó+ˆØ×#Ñ#×,Ñ,ˆØ�‰O˜fÑ$ˆÙØ�˜Ñ$Ñ$ˆAØˆr‰   c                ó¶  — t        |j                  «       j                  «       «      D ]£  \  }\  }}|j                  d|› �«       |j	                  «       5  |r5|j                  d| j                  |«      › �«       | j                  ||«       |r5|j                  d| j                  |«      › �«       | j                  ||«       d d d «       Œ¥ y # 1 sw Y   Œ°xY w)NzKeyValueManager pair at index=zKeyManager: zValueManager: )r’   r“   r”   Ú	writelineÚindentrÁ   Úconstruct_manager_string)r†   ÚmgrÚbodyr˜   r™   rš   s         r‡   Úconstruct_dict_manager_stringz1GuardManagerWrapper.construct_dict_manager_string,  sÔ   € Ü'-¨c×.HÑ.HÓ.J×.PÑ.PÓ.RÓ'Sò 		AÑ#ˆCÑ#�'˜7Ø�N‰NÐ;¸C¸5ÐAÔBØ—‘“ñ AÙØ—N‘N \°$×2GÑ2GÈÓ2PÐ1QÐ#RÔSØ×1Ñ1°'¸4Ô@áØ—N‘N ^°D×4IÑ4IÈ'Ó4RÐ3SÐ#TÔUØ×1Ñ1°'¸4Ô@÷Að Añ		A÷Að Aús   ÁA/CÃC	c           
     ó  — |j                  «       5  |j                  «       D ]µ  }t        |t        j                  j
                  j                  j                  «      r[| j                  r(d| _        |j                  | j                  |«      «       Œo|j                  |j                  j                  g«       Œ–|j                  | j                  |«      «       Œ· t        |t        «      r| j                  ||«       t        |j!                  «       |j#                  «       «      D ]I  \  }}|j%                  | j'                  |d|j)                  «       › �«      «       | j+                  ||«       ŒK 	 d d d «       y # 1 sw Y   y xY w)NFzaccessed_by=)rÄ   Úget_leaf_guardsrž   ÚtorchÚ_CÚ_dynamorp   ÚNO_TENSOR_ALIASINGr„   Ú
writelinesr¹   r³   r´   r   rÈ   ÚzipÚget_accessorsrŸ   rÃ   rÁ   ÚreprrÅ   )r†   rÆ   rÇ   rµ   Úaccessorr    s         r‡   rÅ   z,GuardManagerWrapper.construct_manager_string8  sF  € Ø�[‰[‹]ñ 	?Ø×,Ñ,Ó.ò A�Ü˜e¤U§X¡X×%5Ñ%5×%<Ñ%<×%OÑ%OÔPØ×:Ò:Ø>C˜Ô;ØŸ™¨×(<Ñ(<¸UÓ(CÕDàŸ™à %§¡× 8Ñ 8ðõð —O‘O D×$8Ñ$8¸Ó$?Õ@ðAô ˜#Ô/Ô0Ø×2Ñ2°3¸Ô=ô (+Ø×!Ñ!Ó# S×%;Ñ%;Ó%=ó(ò ?Ñ#�˜)ð —‘Ø×)Ñ)¨)°|ÀHÇMÁMÃOÐCTÐ5UÓVôð ×-Ñ-¨i¸Õ>ñ?÷)	?÷ 	?ñ 	?ús   ‘EE:Å:Fc                óü  — ddl m}  G d„ d|«      }| j                  «       5   |«       }d|_        |j	                  dd¬«       |j	                  d	d¬«       |j	                  d
«       | j                  | j                  |«       t        | j                  d«      r?| j                  j                  «       D ]"  }|j                  | j                  |«      «       Œ$ |j                  «       cd d d «       S # 1 sw Y   y xY w)Nr   ©ÚIndentedBufferc                  ó&   ‡ — e Zd Zd„ Zdˆ fd„	Zˆ xZS )ú=GuardManagerWrapper.__str__.<locals>.IndentedBufferWithPrefixc                ó:   — d| j                   | j                  z  z  S )Nz| )Ú_indentÚtabwidthr‹   s    r‡   ÚprefixzDGuardManagerWrapper.__str__.<locals>.IndentedBufferWithPrefix.prefixY  s   € Ø˜tŸ|™|¨d¯m©mÑ;Ñ<Ð<r‰   c                óN   •— |rt         ‰| �  |«       y t         ‰| �  d|z   «       y )Nz+- )ÚsuperrÃ   )r†   ÚlineÚskip_prefixr³   s      €r‡   rÃ   zGGuardManagerWrapper.__str__.<locals>.IndentedBufferWithPrefix.writeline\  s$   ø€ ÙÜ‘GÑ% dÕ+ä‘GÑ% e¨d¡lÕ3r‰   ©F)r´   Ú
__module__Ú__qualname__rÜ   rÃ   Ú__classcell__©r³   s   @r‡   ÚIndentedBufferWithPrefixrØ   X  s   ø„ ò=÷4ñ 4r‰   ræ   r1   Ú T)rà   zTREE_GUARD_MANAGER:r   Úget_epilogue_lambda_guards)Útorch._inductor.utilsrÖ   rŒ   rÛ   rÃ   rÅ   rx   Úhasattrrè   rÏ   r¹   Úgetvalue)r†   rÖ   ræ   rÇ   rµ   s        r‡   Ú__str__zGuardManagerWrapper.__str__U  sÒ   € Ý8ô	4 ~ô 	4ð ×9Ñ9Ó;ñ 
	#Ù+Ó-ˆDØˆDŒMØ�N‰N˜2¨4ˆNÔ0Ø�N‰NÐ0¸dˆNÔCØ�N‰NÐ-Ô.Ø×)Ñ)¨$¯)©)°TÔ:Ü�t—y‘yÐ">Ô?Ø!ŸY™Y×AÑAÓCò A�EØ—O‘O D×$8Ñ$8¸Ó$?Õ@ðAà—=‘=“?÷
	#÷ 
	#ò 
	#ús   ¢CC2Ã2C;c                ó8   — | j                   j                  |«      S r¥   )rx   Úcheck©r†   Úxs     r‡   rî   zGuardManagerWrapper.checkn  s   € à�y‰y�‰˜qÓ!Ð!r‰   c                ó8   — | j                   j                  |«      S r¥   )rx   Úcheck_verboserï   s     r‡   rò   z!GuardManagerWrapper.check_verboser  s   € à�y‰y×&Ñ& qÓ)Ð)r‰   c                óJ   ‡ ‡‡‡— dŠd„ Šˆˆ ˆˆfd„Š ‰‰ j                   «       y )NFc                óš   — g }| j                  «       D ]5  }|j                  d«      d   j                  «       }|j                  |«       Œ7 |S )Nú#r   )r}   ÚsplitÚrstripÚappend)Ú
leaf_guardr|   Úverbose_code_partÚ	code_parts       r‡   Úget_code_partszMGuardManagerWrapper.populate_code_parts_for_debugging.<locals>.get_code_partsz  sT   € ØˆJØ%/×%BÑ%BÓ%Dò -Ð!Ø-×3Ñ3°CÓ8¸Ñ;×BÑBÓD�	Ø×!Ñ! )Õ,ð-ð Ðr‰   c                ój  •— | j                  «       D ]‚  }t        |t        j                  j                  j
                  j                  «      r'‰rŒ>‰j                  j                   ‰|«      «       dŠŒb‰j                  j                   ‰|«      «       Œ„ | j                  «       D ]
  } ‰|«       Œ y rw   )
rÊ   rž   rË   rÌ   rÍ   rp   rÎ   r|   ÚextendrŸ   )rÆ   rµ   r    rü   r†   Útensor_aliasing_guard_seenr›   s      €€€€r‡   r›   zDGuardManagerWrapper.populate_code_parts_for_debugging.<locals>.visit�  s–   ø€ à×,Ñ,Ó.ò B�Ü˜e¤U§X¡X×%5Ñ%5×%<Ñ%<×%OÑ%OÔPÚ5ØŸ™×.Ñ.©~¸eÓ/DÔEØ59Ñ2à—O‘O×*Ñ*©>¸%Ó+@ÕAðBð !×3Ñ3Ó5ò !�	Ù�iÕ ñ!r‰   )rx   )r†   rü   rÿ   r›   s   `@@@r‡   Ú!populate_code_parts_for_debuggingz5GuardManagerWrapper.populate_code_parts_for_debuggingv  s!   û€ à%*Ð"ò	÷	!ñ 	ˆd�i‰iÕr‰   r¥   )r´   râ   rã   Ú__doc__rˆ   r   rŒ   r£   r§   r¦   r©   r¹   rÁ   rÈ   rÅ   rì   rî   rò   r   © r‰   r‡   ru   ru   °   s_   „ ñó@ð, ñ7ó ð7ò/'òb+ò>ò2òóò
Aò?ò:#ò2"ò*ór‰   ru   c                óì   — t         j                  j                  «       5  t        | t        j
                  t        j                  f«      rt        j                  | «      n| cd d d «       S # 1 sw Y   y xY wr¥   )rË   Ú	overridesÚ_enable_torch_functionrž   ÚnpÚgenericÚndarrayÚ	as_tensor)Úas    r‡   Ú
from_numpyr  ‘  sR   € ô 
�‰×	/Ñ	/Ó	1ñ TÜ%/°´B·J±JÄÇ
Á
Ð3KÔ%LŒu�‰˜qÔ!ÐRS÷T÷ Tò Tús   ŸAA*Á*A3c                 óè   — dd l } dd l} | j                  j                  | j                  j                  g}ddlm} |j                  |«       |D �ch c]  }t        j                  |«      ’Œ c}S c c}w )Nr   )ÚPOLYFILLED_MODULES)
Útorch._dynamo.external_utilsÚtorch._dynamo.polyfillsrÍ   Úexternal_utilsÚ	polyfillsÚtorch._dynamo.polyfills.loaderr  rþ   ÚinspectÚgetfile)rË   Úmodsr  Úms       r‡   Úuninteresting_filesr  š  sS   € ã'Û"à�M‰M×(Ñ(¨%¯-©-×*AÑ*AÐB€DåAà‡K�KÐ"Ô#à(,Ö- 1ŒG�O‰O˜AÕÒ-Ð-ùÒ-s   ÁA/zOptional[dict[str, object]]Ú_CLOSURE_VARSc                 óø  — t         €ïi dt        “dt        “dt        j                  j
                  “dt        “dt        “dd„ “dt        “d	t        “d
t        “dt        “dt        j                  “dt        €d nt        j                  “dt        d«      “dt         j"                  “dt$        j&                  j(                  “dt$        j*                  “dt,        “t$        j.                  t$        t0        dœ¥a t         S )NÚ___check_type_idÚ___check_obj_idÚ___odict_getitemÚ___key_to_idÚ___dict_versionÚ___dict_containsc                ó.   — t         j                  || «      S r¥   )ÚdictÚ__contains__)r
  Úbs     r‡   ú<lambda>z#_get_closure_vars.<locals>.<lambda>´  s   € ¬T×->Ñ->¸qÀ!Ó-D€ r‰   Ú___tuple_iterator_lenÚ___normalize_range_iterÚ___tuple_iterator_getitemÚ#___get_torch_function_mode_stack_atÚ__math_isnanÚ__numpy_isnanÚinfÚ__load_moduleÚutils_deviceÚdeviceÚ___from_numpy)Ú___as_tensorrË   r  )r  r   r   ÚcollectionsÚOrderedDictÚ__getitem__rf   r   rk   rg   rj   rb   ÚmathÚisnanr  ÚfloatÚ	importlibÚimport_modulerË   ÚutilsÚ_devicer.  r  Ú_as_tensor_fullprecr  r  r‰   r‡   Ú_get_closure_varsr<  «  s,  € äÐð
Ø¤ð
àœ|ð
ð ¤× 7Ñ 7× CÑ Cð
ð œIð	
ð
 œ|ð
ð Ñ Dð
ð $Ô%7ð
ð &Ô';ð
ð (Ô)?ð
ð 2Ô3Sð
ð œDŸJ™Jð
ð ¤R Z™T´R·X±Xð
ð ”5˜“<ð
ð œY×4Ñ4ð
ð œEŸK™K×/Ñ/ð
ð  ”e—l‘lð!
ð" œZð#
ô$ "×5Ñ5ÜÜò)
ˆô, Ðr‰   c                óL   — t        j                  | «      j                  dd«      S )Nú
rç   )ÚastÚunparseÚreplace)r–   s    r‡   Ú_ast_unparserB  Ç  s   € Ü�;‰;�tÓ×$Ñ$ T¨2Ó.Ð.r‰   c                ó   — d}|�„|j                   rCt        |j                   «      D ]*  }|j                  t        «       vsŒdt	        |d¬«      › �} n7 n5|j
                  r)dt	        |j
                  j                  «       d   «      › �}| d›|› �S )Nrç   z  # T)rß   éÿÿÿÿz<60)Ú
user_stackÚreversedÚfilenamer  r.   ÚstackÚsummary)rû   rµ   ÚextraÚfss       r‡   Úget_verbose_code_partrL  Î  s•   € Ø€EØÐØ×ÒÜ˜u×/Ñ/Ó0ò �Ø—;‘;Ô&9Ó&;Ò;Ø"¤<°¸Ô#>Ð"?Ð@�EÙñð �[Š[Øœ<¨¯©×(;Ñ(;Ó(=¸bÑ(AÓBÐCÐDˆEØ˜ˆ_˜U˜GÐ$Ð$r‰   c                óf   — t        | t        «      s| g} | D �cg c]  }t        ||«      ‘Œ c}S c c}w r¥   )rž   ÚlistrL  )r|   rµ   rû   s      r‡   Úget_verbose_code_partsrO  Û  s1   € ô �j¤$Ô'Ø �\ˆ
ØEOÖP¸	Ô! )¨UÕ3ÒPÐPùÒPs   ˜.c                óÜ   — g }| D ]d  }t        |«      s|j                  |«       Œ t        |t        j                  «      sJ ‚|j                  |j
                  j                  «       «       Œf |S r¥   )r+   rø   rž   rË   ÚSymIntr–   Úmaybe_as_int)Úsize_or_strideÚ	convertedÚdims      r‡   Úconvert_to_concrete_valuesrV  ã  sc   € Ø%'€IØò 6ˆÜ˜3ÔØ×Ñ˜SÕ!ä˜c¤5§<¡<Ô0Ð0Ð0Ø×Ñ˜SŸX™X×2Ñ2Ó4Õ5ð6ð Ðr‰   c                ó|  — t        | «      }t        j                  j                  | «      t        j                  j	                  «       z  t        j                  j                  «       z
  }| j                  }| j                  j                  }| j                  }d|› d|j                  › d|› d|› d|› d|› d|› d|› d�}	|	S )Nzcheck_tensor(r»   z	, device=z, requires_grad=z, size=z	, stride=ú))ÚtyperË   rÌ   Ú_dispatch_keysÚ_dispatch_tls_local_include_setÚ_dispatch_tls_local_exclude_setÚdtyper.  ÚindexÚrequires_gradrã   )
ÚvalueÚnameÚsizesÚstridesÚpytypeÚdispatch_keyr]  Údevice_indexr_  Ú	guard_strs
             r‡   Úget_tensor_guard_code_partrh  î  sÁ   € Ü�%‹[€Fä�‰×Ñ Ó&¬¯©×)QÑ)QÓ)SÑSÜ�‰×0Ñ0Ó2ñ3€Lð �K‰K€EØ—<‘<×%Ñ%€LØ×'Ñ'€Mà
˜�v˜R × 3Ñ 3Ð4°B°|°nÀBÀuÀgð NØ�Ð/°¨¸gÀeÀWÈIÐV]ÐU^Ð^_ð	að ð Ðr‰   c                óH   — t        t        | «      «      j                  |«      S r¥   )rN  r]   r^  )ÚdctÚkeys     r‡   Úget_key_indexrl  ý  s    € ô
 Ô! #Ó&Ó'×-Ñ-¨cÓ2Ð2r‰   c                ó   — d| › d|› d�S )Núlist(dict.keys(ú))[ú]r  )r¾   r^  s     r‡   Úget_key_index_sourcerq    s   € Ø˜V˜H C¨ w¨aÐ0Ð0r‰   T)Úfrozenc                  ó8   — e Zd ZU dZded<   dZded<   dZded<   y)ÚNNModuleAttrAccessorInfoFÚboolÚpresent_in_generic_dictNzOptional[str]Úl1_keyÚl2_key)r´   râ   rã   rv  Ú__annotations__rw  rx  r  r‰   r‡   rt  rt  	  s'   … ð %*Ð˜TÓ)ð !€FˆMÓ ð !€FˆMÔ r‰   rt  c                ót  — | j                   j                  «       }t        | j                  t        «      r| j                  j                  }n(t        |t
        «      sJ ‚t        || j                  «      }t        ||«      }t        t        |«      «      |   }t        |t        t        f«      r	|› d|›d�}	n|› d|› d�}	t        | j                  t        «      sM|j                  ||| j                  t        j                  ¬«      j                  | j                  |› d|›�g«       |j!                  ||	||¬«      S )Nú[rp  ©r^  r¾   Úexample_valueÚguard_manager_enumú == )Úbasera  rž   r^  r=   r!  rl  rq  rN  r]   ÚintÚstrÚget_key_managerÚGuardManagerTypeÚGUARD_MANAGERÚadd_equals_match_guardÚget_value_manager)
r¾   Úbase_guard_managerÚbase_example_valuer}  r~  Úbase_source_namer^  Ú
key_sourceÚkey_example_valueÚvalue_sources
             r‡   Úgetitem_on_dict_managerrŽ    s:  € ð —{‘{×'Ñ'Ó)ÐÜ�&—,‘,Ô 2Ô3Ø—‘×"Ñ"‰äÐ,¬dÔ3Ð3Ð3ÜÐ0°&·,±,Ó?ˆä%Ð&6¸Ó>€Jô Ô.Ð/AÓBÓCÀEÑJÐÜÐ#¤c¬3 ZÔ0Ø*Ð+¨1Ð->Ð,AÀÐC‰à*Ð+¨1¨Z¨L¸Ð:ˆÜ�f—l‘lÔ$6Ô7ð 	×*Ñ*ØØØ Ÿ,™,Ü/×=Ñ=ð	 	+ó 	
÷
 !Ñ
 Ø�L‰L˜j˜\¨Ð.?Ð-BÐCÐDô
ð ×/Ñ/ØØØ#Ø-ð	 0ó ð r‰   c                ó¤   — | j                   }t        |t        «      ry| j                  «       ry|j	                  «       xr t        |t
        «       S ©NFT)Úoriginating_sourcerž   rK   Úis_specialized_nn_moduleÚis_dict_keyrG   )rµ   r¾   s     r‡   Úmatch_on_id_for_tensorr”  A  sJ   € Ø×%Ñ%€Fô �&Ô+Ô,Øà×%Ñ%Ô'Øà×ÑÓÒF¬
°6¼:Ó(FÐ$FÐFr‰   c                  ó"   — e Zd ZU ded<   ded<   y)ÚGuardCodeListú	list[str]Ú	code_listr"   rµ   N©r´   râ   rã   ry  r  r‰   r‡   r–  r–  P  s   … àÓØ„Lr‰   r–  c                  ó   — e Zd ZdZdZy)r„  r1   é   N)r´   râ   rã   r…  ÚDICT_GUARD_MANAGERr  r‰   r‡   r„  r„  V  s   „ Ø€MØÑr‰   r„  c                ó<   — t        t        t        | «      «      «      S r¥   )rN  rF  r   )Úcodes    r‡   Ú&code_framelocals_names_reversed_cachedrŸ  [  s   € ä”Ô/°Ó5Ó6Ó7Ð7r‰   c                  óÀ  — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d6d„Zd„ Zd„ Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd7d„Z	 	 d8d„Zd9d:d„Zd;d„Zd<d„Zd7d„Zd9d=d„Zd=d„Zd7d„Zd>d„Zd7d„Zd9d7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Z d7d„Z!d7d „Z"d7d!„Z#d7d"„Z$d7d#„Z%d7d$„Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.d7d-„Z/d7d.„Z0d7d/„Z1d7d0„Z2d7d1„Z3d7d2„Z4d7d3„Z5d9d7d4„Z6d9d5„Z7y)?ÚGuardBuilderc	                ó*  — || _         || _        || _        || _        ||dœ| _        t
        j                  j                  «       | j                  d<   t        j                  j                  j                  j                  «       D ]X  \  }	}
|	j                  dd«      j                  dd«      j                  dd«      }	|
| j                  d   |	<   |
| j                  |	<   ŒZ || _        g | _        g | _        g | _        g | _        g | _        || _        t+        «       | _        | j(                  j.                  j0                  D ]5  }| j,                  j3                  t5        | j7                  |«      «      «       Œ7 i | _        i | _        t+        «       | _        y )N©ÚLÚGÚ__builtins__ú>Ú_ú<ú.Ú_dot_)Úf_codeÚid_refÚ
source_refÚlookup_weakrefsÚscopeÚbuiltinsÚ__dict__ÚcopyrË   ÚpackageÚpackage_importerÚ_package_imported_modulesr”   rA  r¼   Úargnamesrž  Úshape_env_codeÚno_tensor_aliasing_namesÚ!no_tensor_aliasing_guard_managersÚcheck_fn_managerÚsetÚkey_order_guarded_dict_idsÚoutput_graphÚguard_on_key_orderr•   ÚidÚgetr‚   Ú_cached_guard_managersÚ_cached_duplicate_input_guards)r†   r¬  r­  r®  r¯  Úlocal_scoper~   r¼   r»  ra  Úpackage_moduleÚsource_names               r‡   rˆ   zGuardBuilder.__init__a  s|  € ð ˆŒØˆŒØ$ˆŒØ.ˆÔØ9DÈ<Ñ3XˆŒ
Ü%-×%6Ñ%6×%;Ñ%;Ó%=ˆ�
‰
�>Ñ"ô �]‰]×+Ñ+×EÑE×KÑKÓMò	.ñ 
ØØà—<‘<  SÓ)×1Ñ1°#°sÓ;×CÑCÀCÈÓQˆDà/=ˆD�J‰J�~Ñ& tÑ,à-ˆD�J‰J�tÒð	.ð +ˆÔà#%ˆŒà)+ˆŒ	ð
 46ˆÔð 46ˆÔ%ØLNˆÔ.à6FˆÔô +.«%ˆÔ'Ø×0Ñ0×=Ñ=×PÑPò 	KˆKØ×+Ñ+×/Ñ/´°4·8±8¸KÓ3HÓ0IÕJð	Kð BDˆÔð
 ð 	Ô#ô EHÃEˆÕ+r‰   c                ó\  — | j                  |«      }t        |t        «      rt        d|j                  › �«      ‚|j
                  j	                  «       }t        |«      D ]K  }||   }t        |j
                  |¬«      }| j                  ||«      }|j                  ||› d|›d�||¬«       ŒM y )NzsNot expecting a DictGuardManager. Seems like Dynamo incorrectly added the dict to tx.output.guard_on_key_order for )r^  r{  rp  ©rk  r¾   r}  r~  )
Úget_guard_managerrž   r   ÚNotImplementedErrorra  r‘  r]   r?   Úget_guard_manager_typeÚdict_getitem_manager)	r†   r}  rµ   Údict_mgrÚdict_sourcerk  r`  r�  r~  s	            r‡   Ú#guard_on_dict_keys_and_ignore_orderz0GuardBuilder.guard_on_dict_keys_and_ignore_order   sË   € Ø×)Ñ)¨%Ó0ˆÜ�hÔ 0Ô1Ü%ðFØFKÇjÁjÀ\ðSóð ð ×.Ñ.×3Ñ3Ó5ˆô % ]Ó3ò 	ˆCØ! #Ñ&ˆEÜ,¨U×-EÑ-EÈSÔQˆLØ!%×!<Ñ!<Ø˜mó"Ðð ×)Ñ)ØØ%˜ a¨ w¨aÐ0Ø#Ø#5ð	 *õ ñ	r‰   c                ó  — | j                  |«      }t        |t        «      st        d|j                  › �«      ‚t        |t        «      sJ ‚t        t        |«      «      D ]   \  }}t        |j                  |«      }|j                  |||t        j                  ¬«      }t        |«      r6| j                  ||«      }|j                  |t        d|› d|› d�|«      «       Œ€|j                  |t        |› d|›�|«      «       Œ¢ y )Nz_Expecting a DictGuardManager. Seems like Dynamo forgot to set the right guard manager enum for r|  z__check_obj_id(r»   rX  r  )rÉ  rž   r   rÊ  ra  Ú	enumerater]   rq  rƒ  r„  r…  re   r­  Úadd_id_match_guardrO  r†  )	r†   r`  rµ   rÍ  r˜   rk  r‹  Úkey_managerÚid_vals	            r‡   Úguard_on_dict_keys_and_orderz)GuardBuilder.guard_on_dict_keys_and_order¼  s  € ð ×)Ñ)¨%Ó0ˆÜ˜(Ô$4Ô5Ü%ð;Ø;@¿:¹:¸,ðHóð ô ˜(Ô$4Ô5Ð5Ð5ô "Ô"3°EÓ":Ó;ò 	‰HˆC�Ü-¨e¯j©j¸#Ó>ˆJØ"×2Ñ2ØØ!Ø!Ü#3×#AÑ#Að	 3ó ˆKô ˜Œ~àŸ™ S¨*Ó5�Ø×.Ñ.ØÜ*Ø)¨*¨°R¸°x¸qÐAÀ5óõð ×2Ñ2ØÔ/°:°,¸dÀ3À'Ð0JÈEÓRõñ'	r‰   c                ó¨   — t         j                  rAt        j                  dk\  r.t        j                  dk  rt	        j
                  dt        «       y | S )N)é   é   )r×  rØ  r1   zMGuards may run slower on Python 3.13.0. Consider upgrading to Python 3.13.1+.)r2   Úissue_3_13_0_warningÚsysÚversion_infoÚwarningsÚwarnÚRuntimeWarning)r}  s    r‡   Ú'_get_generic_dict_manager_example_valuez4GuardBuilder._get_generic_dict_manager_example_valueâ  sF   € ô ×'Ò'Ü× Ñ  GÒ+Ü× Ñ  :Ò-ä�M‰MØ_Üôð ØÐr‰   c                óþ  — d„ }|j                   }	|j                  }
t        «       }t        j                  |j
                  «      D ]+  }|j                  |j                  j                  «       «       Œ- t        ddd«      }|	|
v rt        d|	d«      }nNd|
v r|	|
d   v rt        dd|	«      }n5d|
v r|	|
d   v rt        dd|	«      }n|	|vrd|
v r|	|
d   v rt        dd|	«      }|j                  s|j                  |j                   |||¬«      S |j                  sJ ‚|j                  }|j                  }|› d	�}dx}}dx}}dx}}|rTt        |j                  |«      }|j                  «       }|
|   }| j!                  ||«      }|}|}| j!                  ||«      }n|}|}| j!                  ||«      }|j#                  || j%                  |
«      t&        j(                  ¬
«      } |||||
||¬«      }|r |||||||¬«      S |S )a(  
        This tries to avoid calling the expensive nn module custom getattr method by
        checking if the attribute is accessible via __dict__. For attributes that
        are not accessible via __dict__ (like descriptors), we fallback to
        PyObject_GetAttr.

        There are two cases that we optimize for
        1) attributes present directly in __dict__, e.g training.
        2) parameters/buffers/modules - they can be accessed via _parameters,
        _buffers, _modules keys in __dict__. For example, mod.linear can be
        accessed as mod.__dict__["_parameters"]["linear"]

        The most common and expensive case for nn module guards is of type
        mod.submod1.submod2.submod3.training. We avoid the python getattr of nn
        modules by going through the __dict__.
        c                ó  — t        | t        «      rct        ||«      }d|› d|›d�}| j                  |||t        j
                  ¬«      j                  ||› d|›�g«       | j                  ||||¬«      S | j                  ||||¬«      S )Nrn  ro  rp  r|  r  rÈ  )	rž   r   rl  rƒ  r„  r…  r†  r‡  rÌ  )rÆ   rk  rÆ  r‰  r}  r~  r^  r‹  s           r‡   Úgetitem_on_dict_mgrz>GuardBuilder.getattr_on_nn_module.<locals>.getitem_on_dict_mgr  sÂ   € ô ˜#Ô/Ô0ô &Ð&8¸#Ó>�ð  /¨{¨m¸3¸u¸iÀqÐI�
Ø×#Ñ#ØØ%Ø"%Ü'7×'EÑ'Eð	 $ó ÷
 )Ñ(¨°*°¸TÀ#ÀÐ/IÐ.JÔKð ×,Ñ,ØØ&Ø"/Ø'9ð	 -ó ð ð ×/Ñ/ØØ&Ø"/Ø'9ð	 0ó ð r‰   FNTÚ_parametersÚ_buffersÚ_modules©Úattrr¾   r}  r~  ú	.__dict__©r¾   r}  r~  )rÆ   rk  rÆ  r‰  r}  r~  )Úmemberr²  r¼  r  Úgetmror³   ÚupdateÚkeysrt  rv  Úgetattr_managerrw  rx  r8   r€  ra  rË  Úget_generic_dict_managerrß  r„  r…  )r†   r¾   rˆ  r‰  r}  rŠ  rÆ  r~  râ  Ú	attr_nameÚmod_dictÚall_class_attribute_namesrð   Úaccessor_inforw  rx  Úmod_dict_sourceÚl1_source_nameÚl2_source_nameÚl1_valueÚl2_valueÚl1_guard_manager_enumÚl2_guard_manager_enumÚ	l1_sourceÚmod_generic_dict_managerÚl1_mgrs                             r‡   Úgetattr_on_nn_modulez!GuardBuilder.getattr_on_nn_moduleô  s}  € ò6	ð@ —M‘Mˆ	Ø%×.Ñ.ˆä.1«eÐ!Ü—‘Ð 2× <Ñ <Ó=ò 	@ˆAØ%×,Ñ,¨Q¯Z©Z¯_©_Ó->Õ?ð	@ô 1°¸¸dÓCˆà˜Ñ Ü4°T¸9ÀdÓK‰MØ˜hÑ&¨9¸ÀÑ8OÑ+OÜ4°T¸=È)ÓT‰MØ˜8Ñ#¨	°X¸jÑ5IÑ(IÜ4°T¸:ÀyÓQ‰MàÐ6Ñ6Ø˜hÑ&Ø˜X jÑ1Ñ1ô 5°T¸:ÀyÓQˆMà×4Ò4ð &×5Ñ5Ø—]‘]Ø"Ø+Ø#5ð	 6ó ð ð !×'Ò'Ð'Ð'Ø"×)Ñ)ˆFØ"×)Ñ)ˆFð "2Ð 2°)Ð<ˆOØ.2Ð2ˆN˜^Ø"&Ð&ˆH�xØ<@Ð@Ð!Ð$9ÙÜ& v§{¡{°FÓ;�	Ø!*§¡Ó!1�Ø# FÑ+�ð )-×(CÑ(CÀIÈxÓ(XÐ%à!,�Ø(�Ø(,×(CÑ(CØ˜Mó)Ñ%ð "-�Ø(�Ø(,×(CÑ(CØ˜Mó)Ð%ð (:×'RÑ'RØ&Ø"×JÑJÈ8ÓTÜ#3×#AÑ#Að (Só (Ð$ñ )Ø,ØØ*Ø#+Ø&Ø#8ôˆFñ Ù*ØØØ .Ø'/Ø"*Ø'<ôð ð ˆMr‰   c                ó~   — |j                  «       }|dk(  ryt        | j                  |«      «      }|| j                  v S )Nrç   F)ra  rÀ  rÁ  r½  )r†   r¾   rÆ  Úobj_ids       r‡   Úrequires_key_order_guardingz(GuardBuilder.requires_key_order_guarding‰  s<   € Ø—k‘k“mˆØ˜"ÒØÜ�D—H‘H˜[Ó)Ó*ˆØ˜×8Ñ8Ð8Ð8r‰   c                óÐ   — t         j                  }| j                  |«      rDt        |t        «      rt         j
                  }|S t        |t        «      sJ ‚t         j
                  }|S r¥   )r„  r…  r  rž   r_   rœ  r!  )r†   r¾   r}  r~  s       r‡   rË  z#GuardBuilder.get_guard_manager_type�  s^   € Ü-×;Ñ;ÐØ×+Ñ+¨FÔ3ä˜-¬Ô3Ü%5×%HÑ%HÐ"ð "Ð!ô " -´Ô6Ð6Ð6Ü%5×%HÑ%HÐ"Ø!Ð!r‰   c                ó(   — |t         j                  k(  S r¥   )r„  rœ  )r†   Úmgr_enums     r‡   Úmanager_guards_on_keysz#GuardBuilder.manager_guards_on_keys›  s   € ØÔ+×>Ñ>Ñ>Ð>r‰   c                ó¤   — | j                   j                  j                  | j                  d   d| j                  d   t        j
                  ¬«      S )Nr¥  )Ú	f_globalsr¾   r}  r~  )r¼   rx   Úglobals_dict_managerr°  r„  r…  r‹   s    r‡   Úget_global_guard_managerz%GuardBuilder.get_global_guard_managerž  sH   € Ø×!Ñ!×&Ñ&×;Ñ;Ø—j‘j ‘oØØŸ*™* S™/Ü/×=Ñ=ð	 <ó 
ð 	
r‰   c           	     ó  ‡— | j                   j                  }d }‰j                  «       }|dk7  r|| j                  v r| j                  |   S |dk7  r| j	                  |«      }| j                  ‰|«      }d }d }d }t        j                  }	t        ‰t        «      rb‰j                  j                  «       }| j	                  |«      }| j                  ‰j                  «      }| j                  ‰j                  |«      }	t        ‰t        «      r“t        j                  rbt!        | j"                  «      }
t%        |
«      |
j'                  ‰j(                  «      z
  dz
  }|j+                  ‰j(                  |f|||¬«      }�ne|j-                  ‰j(                  |||¬«      }�nDt        ‰t.        «      r/| j1                  «       j-                  ‰j2                  |||¬«      }�nt        ‰t4        «      r/| j1                  «       j7                  ‰j2                  |||¬«      }�nÆt        ‰t8        «      r|S t        ‰t:        «      r|S t        ‰t<        «      r|sJ ‚|j?                  |||¬«      }�nxt        ‰t@        tB        tD        tF        tH        f«      r|sJ ‚|}�nKt        ‰tJ        «      r|jM                  ˆfd„|||¬«      }�n!t        ‰tN        «      r|sJ ‚|jQ                  |||¬«      }�n÷t        ‰tR        tT        f«      rs|sJ ‚t        |tV        jX                  jZ                  «      r*t]        |«      t^        u r| ja                  ‰||||||«      }�n�|jc                  ‰jd                  |||¬«      }�nnt        ‰tf        «      r |sJ ‚t        |th        tj        jl                  f«      sJ ‚t        |tn        «      r$| jq                  |	«      sJ ‚ts        ‰||||«      }�nt        ‰j&                  tt        «      rtw        d	«      ‚|j-                  ‰j&                  |||¬«      }�n¾t        ‰tx        «      rH t{        |d
‰j|                  j                  j                  «       › d�«      ‰j€                  |||¬«      }�nft        ‰t‚        «      r%|sJ ‚|j…                  ‰j€                  |||¬«      }�n1t        ‰t†        «      r%|sJ ‚|j‰                  ‰j&                  |||¬«      }�nüt        ‰tŠ        «      rä|sJ ‚t        |th        tj        jl                  f«      rJ d«       ‚t        |tŒ        «      r-‰jŽ                  s!|j‰                  ‰j&                  |||¬«      }�n„t        |t�        «      r-‰jŽ                  s!|j“                  ‰j&                  |||¬«      }�nG‰j&                  }‰jŽ                  r‰j•                  «       }|j—                  ||||¬«      }�nt        ‰t˜        «      rÒ|sJ ‚t›        |«      sJ ‚‰jœ                  sK|jŸ                  ||j                   t        j                  ¬«      j—                  ‰j¢                  |||¬«      }�n�|j¤                  }|€J ‚|dz   }|j§                  ||t        j                  ¬«      }t        |tn        «      rJ ‚|j-                  ‰j¢                  |||¬«      }�n&t        ‰t¨        «      r|sJ ‚|jM                  tª        |||¬«      }�n÷t        ‰t¬        «      r|sJ ‚|jM                  d„ |||¬«      }�nËt        ‰t®        «      r|sJ ‚|jM                  d„ |||¬«      }�nŸt        ‰t°        «      r|sJ ‚|jM                  d„ |||¬«      }�nst        ‰t²        «      r|sJ ‚|jM                  d„ |||¬«      }�nGt        ‰t´        «      r|sJ ‚|jM                  d„ |||¬«      }�nt        ‰t¶        «      r|sJ ‚|jM                  d„ |||¬«      }nðt        ‰t¸        «      r$|sJ ‚|j»                  ‰j&                  |||¬«      }n¼t        ‰tt        «      r;t        |tn        «      st½        d«      ‚|j¿                  ‰j&                  |||¬«      }nqt        ‰tÀ        «      r|sJ ‚|jÃ                  |||¬«      }nHt        ‰tÄ        «      r|sJ ‚|jÇ                  |||¬«      }nt½        d‰› d‰j                  «       › �«      ‚|| j                  ‰j                  «       <   |S )Nrç   r1   rÈ  )Úglobal_namer¾   r}  r~  ré  c                ó6   •— t        ‰j                  «       «      S r¥   )rb   Ú
_get_index)r¨  r¾   s    €r‡   r$  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>  s   ø€ Ô(HØ×%Ñ%Ó'ó)€ r‰   )Úpython_lambdar¾   r}  r~  ræ  zUExpecting clean index here. Likely Dynamo forgot to mark a dict as guard_on_key_orderÚtensor_property_Ú_manager)r˜   r¾   r}  r~  zUse DictGetItemSourcez.__kwdefaults__c                ó(   — | j                  «       d   S r�   ©Ú__tensor_flatten__©rð   s    r‡   r$  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>®  s   € ¨×(<Ñ(<Ó(>¸qÑ(A€ r‰   c                ó"   — | j                  «       S r¥   )Ú__obj_flatten__r  s    r‡   r$  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>¶  s   € ¨×(9Ñ(9Ó(;€ r‰   c                ó>   — | j                  «       j                  «       S r¥   )Ú_typeÚqualified_namer  s    r‡   r$  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>¾  s   € ¨¯©«	×(@Ñ(@Ó(B€ r‰   c                ó"   — | j                  «       S r¥   )Úget_baser  s    r‡   r$  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Æ  s   € ¨¯
©
«€ r‰   c                ó"   — | j                  «       S r¥   )Úitemr  s    r‡   r$  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Î  s   € ¨¯©«€ r‰   c                ó,   — t        j                  | «      S r¥   )rË   r;  r  s    r‡   r$  z<GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Ö  s   € ¬×(AÑ(AÀ!Ó(D€ r‰   r|  z4ConstDictKeySource can only work on DictGuardManagerzmissing guard manager builder z - )dr¼   rx   ra  rÂ  rÁ  rË  r„  r…  rž   r;   r€  Úget_guard_manager_from_sourcerd   rI   r2   Ú!enable_cpp_framelocals_guard_evalrŸ  r¬  Úlenr^  Ú
local_nameÚframelocals_managerrÌ  rD   r	  r  rF   Úglobal_weakref_managerrE   rN   rR   Útype_managerrL   rJ   rT   rS   rB   rP   Úlambda_managerrG   Úgrad_managerr8   rU   rË   ÚnnÚModuler`   rl   rþ  rî  rê  r?   r!  r1  r2  r   r  rŽ  r=   ÚRuntimeErrorr   ÚgetattrÚpropÚlowerr˜   r   Úindexed_managerrH   Úlist_getitem_managerrC   rN  Úindex_is_sliceÚtupleÚtuple_getitem_managerÚunpack_sliceÚgetitem_managerr>   ÚcallableÚis_kwÚfunc_defaults_managerÚ__defaults__Úidx_keyÚ__kwdefaults__Úfunc_kwdefaults_managerrK   r  rO   r@   rM   r7   r:   rA   rQ   Útuple_iterator_getitem_managerÚAssertionErrorrƒ  rV   Úweakref_call_managerr9   Úcall_function_no_args_manager)r†   r¾   Úroot_guard_managerr}  rÆ  r~  rŠ  r‰  rˆ  Úbase_guard_manager_enumÚframelocals_names_reversedÚframelocals_idxÚoutr^  Ú
kwdefaultsÚ	kw_sourcerÍ  s    `               r‡   r  z*GuardBuilder.get_guard_manager_from_source¦  sÂ	  ø€ Ø!×/Ñ/×4Ñ4ÐàˆØ—k‘k“mˆà˜"Ò °×0KÑ0KÑ!KØ×.Ñ.¨{Ñ;Ð;à˜"ÒØ ŸH™H [Ó1ˆMà!×8Ñ8¸ÀÓOÐð  ÐØ!ÐØ!ÐÜ"2×"@Ñ"@ÐÜ�fœmÔ,Ø%Ÿ{™{×/Ñ/Ó1ÐØ!%§¡Ð*:Ó!;ÐØ!%×!CÑ!CÀFÇKÁKÓ!PÐØ&*×&AÑ&AØ—‘Ð/ó'Ð#ô
 �&œ+Ô&ô ×7Ò7Ü-SØ—K‘Kó.Ð*ô Ð2Ó3Ø0×6Ñ6°v×7HÑ7HÓIñJàñð  ð
 )×<Ñ<Ø×*Ñ*¨OÐ<Ø&Ø"/Ø'9ð	 =ó ’ð )×=Ñ=Ø×)Ñ)Ø&Ø"/Ø'9ð	 >ó ’ô �FœLÔ)ð ×/Ñ/Ó1×FÑFØ×&Ñ&Ø"Ø+Ø#5ð	 Gó ŠCô �FÔ/Ô0Ø×/Ñ/Ó1×HÑHØ"×.Ñ.Ø"Ø+Ø#5ð	 Ió ŠCô �FÔ-Ô.ð &Ð%Ü�FœNÔ+Ø%Ð%Ü�FœJÔ'Ù%Ð%Ð%Ø$×1Ñ1Ø"Ø+Ø#5ð 2ó ŠCô
 ØäÜÜ+Ü2Ü"ðô	
ñ &Ð%Ð%Ø$ŠCÜ�FÔ8Ô9Ø$×3Ñ3óð #Ø+Ø#5ð 4ó ŠCô �FœJÔ'Ù%Ð%Ð%Ø$×1Ñ1Ø"Ø+Ø#5ð 2ó ŠCô
 �FœZÔ)GÐHÔIÙ%Ð%Ð%ô Ð-¬u¯x©x¯©Ô?Ü&Ð'9Ó:Ü.ñ/ð ×/Ñ/ØØ&Ø&Ø!Ø$ØØ&ó’ð )×8Ñ8ØŸ™Ø&Ø"/Ø'9ð	 9ó ’ô �FÔ-Ô.Ù%Ð%Ð%ÜÐ0´4¼×9PÑ9PÐ2QÔRÐRÐRÜÐ,Ô.>Ô?Ø×2Ñ2Ð3JÔKÐKÐKÜ-ØØ&Ø&Ø!Ø&ó’ô ˜fŸl™lÔ,>Ô?Ü&ð8óð ð )×=Ñ=ØŸ™Ø&Ø"/Ø'9ð	 >ó ’ô �FÔ0Ô1ð”'Ø"Ø" 6§;¡;×#3Ñ#3×#9Ñ#9Ó#;Ð"<¸HÐEóð —J‘JØ"Ø+Ø#5ôŠCô �FœMÔ*Ù%Ð%Ð%à$×4Ñ4Ø—J‘JØ"Ø+Ø#5ð	 5ó ŠCô �FÔ-Ô.Ù%Ð%Ð%Ø$×9Ñ9Ø—L‘LØ"Ø+Ø#5ð	 :ó ŠCô �FœMÔ*Ù%Ð%Ð%Ü!Ø"¤T¬;×+BÑ+BÐ$Côð 'à&ó'ð ô Ð,¬dÔ3¸F×<QÒ<QØ(×=Ñ=ØŸ™Ø&Ø"/Ø'9ð	 >ó ’ô Ð.´Ô6¸v×?TÒ?TØ(×>Ñ>ØŸ™Ø&Ø"/Ø'9ð	 ?ó ’ð Ÿ™�Ø×(Ò(Ø"×/Ñ/Ó1�EØ(×8Ñ8ØØ&Ø"/Ø'9ð	 9ó ’ô �FœNÔ+Ù%Ð%Ð%ÜÐ.Ô/Ð/Ð/Ø—<’<Ø(×>Ñ>Ø+Ø"4×"AÑ"AÜ'7×'EÑ'Eð ?ó ÷ "‘/ØŸ™Ø&Ø"/Ø'9ð	 "ó ò	 ð 0×>Ñ>�
Ø'Ð3Ð3Ð3Ø,Ð/@Ñ@�	ð .×EÑEØ$Ø",Ü'7×'EÑ'Eð Fó �ô
 & hÔ0@ÔAÐAÐAà×3Ñ3ØŸ™Ø&Ø"/Ø'9ð	 4ó ’ô �FÔ-Ô.Ù%Ð%Ð%Ø$×3Ñ3Ü(Ø"Ø+Ø#5ð	 4ó ŠCô �FÔ2Ô3Ù%Ð%Ð%Ø$×3Ñ3ÙAØ"Ø+Ø#5ð	 4ó ŠCô �FÔ5Ô6Ù%Ð%Ð%Ø$×3Ñ3Ù;Ø"Ø+Ø#5ð	 4ó ŠCô �FÔ;Ô<Ù%Ð%Ð%Ø$×3Ñ3ÙBØ"Ø+Ø#5ð	 4ó ŠCô �FœOÔ,Ù%Ð%Ð%Ø$×3Ñ3Ù4Ø"Ø+Ø#5ð	 4ó ŠCô �FÔ0Ô1Ù%Ð%Ð%Ø$×3Ñ3Ù0Ø"Ø+Ø#5ð	 4ó ŠCô �FÔ-Ô.Ù%Ð%Ð%Ø$×3Ñ3ÙDØ"Ø+Ø#5ð	 4ó ‰Cô �FÔ6Ô7Ù%Ð%Ð%Ø$×CÑCØ—l‘lØ"Ø+Ø#5ð	 Dó ‰Cô ˜Ô 2Ô3ÜÐ0Ô2BÔCÜ$ØJóð ð %×4Ñ4Ø—l‘lØ"Ø+Ø#5ð	 5ó ‰Cô �FÔ-Ô.Ù%Ð%Ð%Ø$×9Ñ9Ø"Ø+Ø#5ð :ó ‰Cô
 �FÔ4Ô5Ù%Ð%Ð%Ø$×BÑBØ"Ø+Ø#5ð Có ‰Cô !Ø0°°¸¸F¿K¹K»M¸?ÐKóð ð 69ˆ×#Ñ# F§K¡K£MÑ2Øˆ
r‰   c                ó8   — | j                  |j                  «      S r¥   )r  r‘  ©r†   rµ   s     r‡   rÉ  zGuardBuilder.get_guard_manager  s   € Ø×1Ñ1°%×2JÑ2JÓKÐKr‰   Nc                ó®  — |€
t        «       }dj                  |j                  «       «      }t        ||«      \  }}i }d| j                  d   i}	t
        j                  d|«       t        ||	|«        |d   |j                  «       Ž }
|r'| j                  j                  j                  |
|«       y | j                  j                  j                  |
|«       y )Nr»   r¥  zPython shape guard function:
%sÚ___make_guard_fn)r<  Újoinrí  Úbuild_guard_functionr°  Ú
guards_logÚdebugÚexecÚvaluesr¼   rx   Úadd_epilogue_lambda_guardÚadd_lambda_guard)r†   r|   r}   rz   Úis_epilogueÚmake_guard_fn_argsÚ_guard_bodyÚpycoderD  Úglobals_for_guard_fnÚguard_fns              r‡   Ú$add_python_lambda_leaf_guard_to_rootz1GuardBuilder.add_python_lambda_leaf_guard_to_root  sÓ   € ð ÐÜ,Ó.ˆLð "ŸY™Y |×'8Ñ'8Ó':Ó;ÐÜ2°:Ð?QÓRÑˆ�VØ ˆØ # T§Z¡Z°¡_Ð5ÐÜ×ÑÐ;¸VÔDÜˆVÐ)¨3Ô/Ø*�3Ð)Ñ*¨L×,?Ñ,?Ó,AÐBˆÙð ×Ñ×#Ñ#×=Ñ=ØÐ,õð ×Ñ×#Ñ#×4Ñ4°XÐ?QÕRr‰   c                óH   — |€
t        «       }t        || j                  |«      S r¥   )r<  Úevalr°  )r†   ra  rz   s      r‡   rÁ  zGuardBuilder.get*  s#   € ØÐÜ,Ó.ˆLÜ�D˜$Ÿ*™* lÓ3Ð3r‰   c                ó8  — t        |t        «      r|}n|j                  }t        |«      }|| j                  vrat
        j                  j                  j                  |«      }|r6|dk(  rt        j                  d|«       | j                  j                  |«       |S )Nr›  zinvalid var name: %s)rž   r‚  ra  Ústrip_function_callr·  rË   rÌ   rÍ   Úis_valid_var_nameÚlogÚwarningrø   )r†   rµ   ra  r€  Úis_valids        r‡   Úarg_refzGuardBuilder.arg_ref4  sz   € ä�eœSÔ!Ø‰Dà—:‘:ˆDÜ" 4Ó(ˆØ�t—}‘}Ñ$Ü—x‘x×'Ñ'×9Ñ9¸$Ó?ˆHÙØ˜q’=Ü—K‘KÐ 6¸Ô>Ø—‘×$Ñ$ TÔ*àˆr‰   c                ó˜   — t        |j                  |«      }t        |||j                  |j                  ¬«      }|j                  | «       y )N)rH  rE  )r8   r‘  r"   rH  rE  Úcreate)r†   rµ   rð  rX  Úattr_sourceÚ	new_guards         r‡   Ú_guard_on_attributez GuardBuilder._guard_on_attributeD  sA   € Ü  ×!9Ñ!9¸9ÓEˆäØ˜¨¯©À×AQÑAQô
ˆ	ð 	×Ñ˜Õr‰   c           	     ó�  — |j                   }t        |t        «      r|j                  }t        |t        «      sJ d|j
                  › �«       ‚|j                  }|j                  «       }|j                  }| j                  |«      }t        | j                  |«      |«      }d }|r
d|› d|›d�}n	d|› d|›d�}| j                  ||g| j                  |«      ¬«       | j                  |«      }	|r¼| j                  |j                  «       «      }
| j                  |«      }| j                  ||
«      }t        |t        j                  j                  «      r6t!        |«      t"        u r%| j%                  ||	||
||j                  «       |«      S |	j'                  ||j
                  |
|¬«       y |	j)                  |t+        ||«      «       y )Nzinvalid source úhasattr(r»   rX  znot hasattr()Úprovided_guarded_objectræ  )r‘  rž   rJ   r€  r8   ra  rê  rb  rê   rÁ  Ú_set_guard_export_infor  rË  rË   r(  r)  r`   rl   rþ  rî  Úadd_no_hasattr_guardrO  )r†   rµ   r¾   Úbase_sourcer€  rç  ÚrefÚvalrž  Úbase_managerr}  r‰  r~  s                r‡   ÚHASATTRzGuardBuilder.HASATTRM  s¸  € Ø×)Ñ)ˆÜ�fœnÔ-Ø—[‘[ˆFÜ˜&¤*Ô-ÐM°ÀÇÁÀÐ/MÓMÐ-Ø—k‘kˆØ×ÑÓ!ˆØ�}‰}ˆà�l‰l˜4Ó ˆÜ�d—h‘h˜t“n dÓ+ˆØˆÙØ˜c˜U " T H¨AÐ.‰Dà! #  b¨¨°Ð2ˆDØ×#Ñ#Ø�D�6°4·8±8¸D³>ð 	$ô 	
ð ×9Ñ9¸+ÓFˆÙð !ŸH™H V§[¡[£]Ó3ˆMØ!%§¡¨$£ÐØ!%×!<Ñ!<¸VÀ]Ó!SÐô
 Ð-¬u¯x©x¯©Ô?Ü&Ð'9Ó:Ü.ñ/ð ×0Ñ0ØØ Ø&Ø!ØØ—K‘K“MØ&óð ð ×,Ñ,ØØ Ÿ:™:Ø"/Ø'9ð	 -õ ð ×-Ñ-¨dÔ4JÈ4ÐQVÓ4WÕXr‰   c                ó²  — |€J ‚| j                  |«      }| j                  |j                  «      }t        |t        j
                  j                  «      sJ ‚| j                  |«      }|j                  › d�}|j                  || j                  |j                  «      t        j                  ¬«      }d|›d|› d�}|j                  d|t        ||«      «       y )Nrè  ré  znot ___dict_contains(r»   z
.__dict__)F)rb  rÁ  ra  rž   rË   r(  r)  rÉ  rï  rß  r²  r„  r…  Úadd_dict_contains_guardrO  )	r†   rµ   rç  rn  ro  rp  rô  rü  rž  s	            r‡   ÚNOT_PRESENT_IN_GENERIC_DICTz(GuardBuilder.NOT_PRESENT_IN_GENERIC_DICTƒ  sÎ   € ØÐÐÐØ�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜#œuŸx™xŸ™Ô/Ð/Ð/à×-Ñ-¨eÓ4ˆà"ŸZ™Z˜L¨	Ð2ˆØ#/×#HÑ#HØ"Ø×FÑFÀsÇ|Á|ÓTÜ/×=Ñ=ð $Ió $
Ð ð ' t h¨b°°°ZÐ@ˆØ ×8Ñ8Ø�4Ô/°°eÓ<õ	
r‰   c                ó8  — t        | j                  |j                  «      «      }| j                  |d|j                  › d�«      }d| j	                  |«      › d|› d�}| j                  ||g«       | j                  |«      j                  |t        ||«      «       y )Nútype(rX  z___check_type_id(r»   )	rY  rÁ  ra  r­  rb  rk  rÉ  Úadd_type_match_guardrO  )r†   rµ   r¿   r   rž  s        r‡   Ú
TYPE_MATCHzGuardBuilder.TYPE_MATCH—  sŒ   € ä�—‘˜%Ÿ*™*Ó%Ó&ˆØ—‘˜Q %¨¯
©
 |°1Ð 5Ó6ˆØ" 4§<¡<°Ó#6Ð"7°r¸&¸ÀÐCˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×:Ñ:ØÔ*¨4°Ó7õ	
r‰   c                ó0  — | j                  |«      }| j                  |j                  «      }t        | j                  |j                  «      «      }d|› d|› �}| j	                  ||g«       | j                  |«      j                  |t        ||«      «       y )Nz___dict_version(ú) == )rb  rÁ  ra  r   rk  rÉ  Úadd_dict_version_guardrO  )r†   rµ   rn  ro  Úversionrž  s         r‡   ÚDICT_VERSIONzGuardBuilder.DICT_VERSION¢  s…   € à�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜tŸx™x¨¯
©
Ó3Ó4ˆØ! #  e¨G¨9Ð5ˆØ×#Ñ# E¨D¨6Ô2ð 	×Ñ˜uÓ%×<Ñ<ØÔ'¨¨eÓ4õ	
r‰   c                óÈ   — | j                  |«      }|rdnd}|› d|›d|› d�}| j                  ||g«       | j                  |«      j                  | |t	        ||«      «       y )Núnot rç   z___dict_contains(r»   rX  )rb  rk  rÉ  rs  rO  )r†   rµ   rk  ÚinvertÚdict_refÚ	maybe_notrž  s          r‡   ÚDICT_CONTAINSzGuardBuilder.DICT_CONTAINS°  sn   € Ø—<‘< Ó&ˆá$‘F¨"ˆ	Ø�Ð-¨c¨W°B°x°jÀÐBˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×=Ñ=ØˆJ˜Ô3°D¸%Ó@õ	
r‰   c                óÂ  — t        |j                  t        «      r=| j                  t	        |j                  j
                  t        j                  «      «      S | j                  |«      }| j                  |j                  «      }| j                  ||j                  «      }d|› d|› d�}| j                  ||g«       | j                  |«      j                  |t        ||«      «       t        |j                  t        «      r_t        |t         j"                  j$                  «      r:|j                  j&                  }| j)                  |«      }|�|| j*                  |<   y y y y )Nz___check_obj_id(r»   rX  )rž   r‘  rR   rx  r"   r€  r¡  rb  rÁ  ra  r­  rk  rÉ  rÒ  rO  rI   rË   r(  r)  r"  r¯  r‚   )r†   rµ   rn  ro  rÔ  rž  r"  Úweak_ids           r‡   ÚID_MATCHzGuardBuilder.ID_MATCH»  s-  € ä�e×.Ñ.´
Ô;à—?‘?Ü�e×.Ñ.×3Ñ3´\×5LÑ5LÓMóð ð �l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆØ—‘˜S %§*¡*Ó-ˆØ! #  b¨¨°Ð2ˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×8Ñ8ØÔ*¨4°Ó7ô	
ô �e×.Ñ.´Ô<ô ˜#œuŸx™xŸ™Ô/Ø"×5Ñ5×@Ñ@�
Ø×.Ñ.¨sÓ3�ØÐ&Ø7>�D×(Ñ(¨Ò4ð 'ð 0ð	 =r‰   c                ó  — | j                  |«      }| j                  |j                  «      }t        |t        j
                  «      sJ ‚|› d�}| j                  ||g«       | j                  |«      j                  t        ||«      «       y ©Nz is not None)
rb  rÁ  ra  rž   rË   ÚTensorrk  rÉ  Úadd_not_none_guardrO  )r†   rµ   r`  rn  ro  rž  s         r‡   ÚNOT_NONE_MATCHzGuardBuilder.NOT_NONE_MATCHÙ  sw   € Ø�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜#œuŸ|™|Ô,Ð,Ð,Ø��lÐ#ˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×8Ñ8Ü" 4¨Ó/õ	
r‰   c                ó  — | j                  |«      }| j                  |j                  «      }t        |t        j
                  j                  «      sJ ‚|› d|›d�}| j                  |«      j                  |t        ||«      «       y )Nz.raw_repr() == z.raw_repr())
rb  rÁ  ra  rž   rË   rÌ   ÚDispatchKeySetrÉ  Úadd_dispatch_key_set_guardrO  )r†   rµ   rn  ro  r|   s        r‡   ÚDISPATCH_KEY_SET_MATCHz#GuardBuilder.DISPATCH_KEY_SET_MATCHä  st   € Ø�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÜ˜#œuŸx™x×6Ñ6Ô7Ð7Ð7Ø�u˜O¨C¨7°+Ð>ˆ
à×Ñ˜uÓ%×@Ñ@ØÔ'¨
°EÓ:õ	
r‰   c                óF   — | j                  |dt        j                  «       y )Nr´   )rg  r¡  ÚEQUALS_MATCHrH  s     r‡   Ú
NAME_MATCHzGuardBuilder.NAME_MATCHî  s   € Ø× Ñ  ¨
´L×4MÑ4MÕNr‰   c                óþ   — | j                  |j                  «      }| j                  |«      › d|j                  «       › �}| j	                  ||g«       | j                  |«      j                  |t        ||«      «       y )Nz.data_ptr() == )rÁ  ra  rb  Údata_ptrrk  rÉ  Úadd_data_ptr_guardrO  )r†   rµ   Úobjrž  s       r‡   ÚDATA_PTR_MATCHzGuardBuilder.DATA_PTR_MATCHñ  sm   € à�h‰h�u—z‘zÓ"ˆØ—,‘,˜uÓ%Ð& o°c·l±l³nÐ5EÐFˆØ×#Ñ# E¨D¨6Ô2à×Ñ˜uÓ%×8Ñ8ØÔ'¨¨eÓ4õ	
r‰   c                ó"  ‡‡— t         j                  j                  j                  Šd‰› �g}| j	                  ||g«       t         j                  j                  Šˆˆfd„}| j
                  j                  j                  |t        ||«      «       y )Nz,torch.autograd.forward_ad._current_level == c                ó"   •— ‰j                   ‰k(  S r¥   )Ú_current_level)rð   Ú
dual_levelÚ
forward_ads    €€r‡   Úfnz#GuardBuilder.DUAL_LEVEL.<locals>.fn  s   ø€ Ø×,Ñ,°
Ñ:Ð:r‰   )	rË   Úautogradrœ  rš  rk  r¼   rx   rR  rO  )r†   rµ   rž  r�  r›  rœ  s       @@r‡   Ú
DUAL_LEVELzGuardBuilder.DUAL_LEVELû  sx   ù€ ô —^‘^×.Ñ.×=Ñ=ˆ
Ø>¸z¸lÐKÐLˆØ×#Ñ# E¨D¨6Ô2ä—^‘^×.Ñ.ˆ
õ	;ð 	×Ñ×Ñ×0Ñ0ØÔ& t¨UÓ3õ	
r‰   c                ó„  ‡‡— t         j                  j                  j                  «       }|D �cg c]  }|j	                  «       ‘Œ c}Šd‰› d�g}| j                  ||«       t         j                  j                  j                  Šˆˆfd„}| j                  j                  j                  |t        ||«      «       y c c}w )Nz5torch._functorch.pyfunctorch.compare_functorch_state(rX  c                ó   •—  ‰‰«      S r¥   r  )rð   Ú
compare_fnÚstatess    €€r‡   r�  z.GuardBuilder.FUNCTORCH_STACK_MATCH.<locals>.fn  s   ø€ Ù˜fÓ%Ð%r‰   )rË   Ú
_functorchÚpyfunctorchÚ#retrieve_all_functorch_interpretersÚ	get_staterk  Úcompare_functorch_stater¼   rx   rR  rO  )r†   rµ   ÚcisÚcirž  r�  r¢  r£  s         @@r‡   ÚFUNCTORCH_STACK_MATCHz"GuardBuilder.FUNCTORCH_STACK_MATCH  s¢   ù€ ô ×Ñ×*Ñ*×NÑNÓPˆØ+.Ö/ R�"—,‘,•.Ò/ˆØGÈÀxÈqÐQÐRˆØ×#Ñ# E¨4Ô0ô ×%Ñ%×1Ñ1×IÑIˆ
õ	&ð 	×Ñ×Ñ×0Ñ0ØÔ& t¨UÓ3õ	
ùò 0s   ¯B=c                óŠ  ‡‡— | j                  |j                  «      Št        | j                  |j                  «      j                  «       d   «      Št	        ‰d«      rt        ‰«       ˆˆfd„}nˆfd„}dt        |«      › dt        j                  «       › �}| j                  |«      j                  |t        ||«      «       y )Nr1   Ú__metadata_guard__c                óJ   •— ‰j                  ‰| j                  «       d   «      S ©Nr1   )r­  r  )rð   Úoriginal_metadatar`  s    €€r‡   Úmetadata_checkerzEGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.metadata_checker#  s)   ø€ Ø×/Ñ/Ø% q×';Ñ';Ó'=¸aÑ'@óð r‰   c                ó0   •— | j                  «       d   ‰k(  S r¯  r  )rð   r°  s    €r‡   r±  zEGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.metadata_checker*  s   ø€ Ø×+Ñ+Ó-¨aÑ0Ð4EÑEÐEr‰   Ú___check_metadata_Ú_c)rÁ  ra  r   r  rê   rm   rÀ  r   Úcurrent_compile_idrÉ  rR  rO  )r†   rµ   r±  r  r°  r`  s       @@r‡   ÚTENSOR_SUBCLASS_METADATA_MATCHz+GuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH  s¤   ù€ Ø—‘˜Ÿ™Ó$ˆÜ$ T§X¡X¨e¯j©jÓ%9×%LÑ%LÓ%NÈqÑ%QÓRÐÜ�5Ð.Ô/Ü% eÔ,öôFð +¬2Ð.>Ó+?Ð*@ÀÄ>×CdÑCdÓCfÐBgÐhˆØ×Ñ˜uÓ%×6Ñ6ØÔ4°[À%ÓHõ	
r‰   c                ó\  — | j                  |«      }| j                  |j                  «      }t        r¨t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  f}nd}t        t         f}t#        t$        t&        t"        t(        t*        t,        t.        t0        j2                  h|£|£z  «      }t0        j4                  j7                  «       rddlm} ddlm}m }	m!}
 ||
|	||fz   }dd l"m#c m$} tK        ||«      s-|jM                  t'        |«      «      sJ dt'        |«      › �«       ‚tK        |tN        «      r†tQ        jR                  |«      rq| jU                  |«       g }|jW                  d|› d�«       | jY                  ||«       | j[                  |«      j]                  t_        «       d   ta        ||«      «       y tK        |tb        «      r†t        jR                  |«      rq| jU                  |«       g }|jW                  d	|› d�«       | jY                  ||«       | j[                  |«      j]                  t_        «       d
   ta        ||«      «       y |› d|›�g}tK        ||«      rte        |«      }| j[                  |«      jg                  |ta        ||«      «       | jY                  ||«       y )Nr  r   )Ú
DeviceMesh)ÚPartialÚ	ReplicateÚShardzUnexpected type z__math_isnan(rX  r)  z__numpy_isnan(r*  r  )4rb  rÁ  ra  r  Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64rN  r¼  r1  r^   rY  Ú	frozensetÚsliceÚranger_   rË   ÚSizeÚdistributedÚis_availableÚtorch.distributed.device_meshr¸  Ú(torch.distributed.tensor.placement_typesr¹  rº  r»  Útorch.utils._pytreer9  Ú_pytreerd   Úis_constant_classr6  r4  r5  rx  rø   rk  rÉ  rR  r<  rO  Úcomplexr   r†  )r†   rµ   rn  ro  Únp_typesÚok_mutable_typesÚok_typesr¸  r¹  rº  r»  Úpytreerž  s                r‡   r‘  zGuardBuilder.EQUALS_MATCH2  s®  € Ø�l‰l˜5Ó!ˆØ�h‰h�u—z‘zÓ"ˆÝä—‘Ü—‘Ü—‘Ü—‘Ü—‘Ü—	‘	Ü—	‘	Ü—	‘	Ü—
‘
Ü—
‘
Ü—
‘
ð/‰Hð ˆHä ¤#˜;ÐäÜ!äÜÜÜÜÜÜ—
‘
ð
ð ð
ð "ð
ñó
ˆô ×Ñ×)Ñ)Ô+Ý@÷ñ ð  ØØØØð	#ñ ˆH÷ 	-Ð,ä�c˜8Ô$¨×(@Ñ(@ÄÀcÃÔ(Kð 	
Øœt C›y˜kÐ*ó	
ÐKô
 �#”uÔ¤$§*¡*¨S¤/Ø�O‰O˜EÔ"ØˆDØ�K‰K˜-¨ u¨AÐ.Ô/Ø×'Ñ'¨¨tÔ4à×"Ñ" 5Ó)×:Ñ:Ü!Ó# NÑ3Ü& t¨UÓ3ôð ô �#”wÔ¤B§H¡H¨S¤MØ�O‰O˜EÔ"ØˆDØ�K‰K˜.¨¨¨QÐ/Ô0Ø×'Ñ'¨¨tÔ4à×"Ñ" 5Ó)×:Ñ:Ü!Ó# OÑ4Ü& t¨UÓ3ôð ð �%�t˜C˜7Ð#Ð$ˆÜ�#Ð'Ô(ô ˜3“-ˆCØ×Ñ˜uÓ%×<Ñ<ØÔ'¨¨eÓ4ô	
ð 	×#Ñ# E¨4Ô0Ør‰   c                óÔ   — | j                  |j                  «      }t        |t        t	        d «      t
        j                  f«      r| j                  |«       y | j                  |«       y r¥   )	rÁ  ra  rd   ru  rY  ÚtypesÚCodeTyper†  r‘  ©r†   rµ   ro  s      r‡   ÚCONSTANT_MATCHzGuardBuilder.CONSTANT_MATCH“  sG   € Ø�h‰h�u—z‘zÓ"ˆÜ�#œœd 4›j¬%¯.©.Ð9Ô:Ø�M‰M˜%Õ à×Ñ˜eÕ$r‰   c                ó>  — | j                  |«       | j                  |j                  «      }t        |d«      r>t	        |j
                  t        «      sJ ‚| j                  |dt        j                  «       y t        j                  dddt        |«      › d�dg¬«       y )NÚtrainingz-Attempted to guard on uninitialized nn.Modulerç   zKAttempted to setup an NN_MODULE guard on uninitialized nn.Module subclass `z`.zIEnsure the `nn.Module` subclass instance has called `super().__init__()`.)Úgb_typeÚcontextÚexplanationÚhints)r†  rÁ  ra  rê   rd   rÝ  ru  rg  r¡  rÛ  r4   Úunimplemented_v2rY  rÚ  s      r‡   Ú	NN_MODULEzGuardBuilder.NN_MODULEš  sŠ   € Ø�‰�eÔØ�h‰h�u—z‘zÓ"ˆÜ�3˜
Ô#Ü˜#Ÿ,™,¬Ô-Ð-Ð-Ø×$Ñ$ U¨J¼×8SÑ8SÕTä× Ñ ØGØð'Ü'+¨C£y k°ð5ð `ðör‰   c                ó$   — | j                  |«      S )z0things like torch.add and user defined functions)r†  rH  s     r‡   ÚFUNCTION_MATCHzGuardBuilder.FUNCTION_MATCH«  s   € à�}‰}˜UÓ#Ð#r‰   c                ó2  — | j                  |j                  «      }t        |«      t        j                  k(  rOt        |d«      rC| j                  |dt        j                  «       | j                  |dt        j                  «       y| j                  |«       y)z!matches a closure by __code__ id.Ú__code__N)
rÁ  ra  rY  rØ  ÚFunctionTyperê   rg  r¡  rq  rå  rÚ  s      r‡   ÚCLOSURE_MATCHzGuardBuilder.CLOSURE_MATCH¯  sm   € à�h‰h�u—z‘zÓ"ˆä�‹9œ×*Ñ*Ò*¬w°s¸JÔ/GØ×$Ñ$ U¨J¼×8LÑ8LÔMØ×$Ñ$ U¨J¼×8SÑ8SÕTà×Ñ Õ&r‰   c                ó$   — | j                  |«      S r¥   ©rå  rH  s     r‡   ÚBUILTIN_MATCHzGuardBuilder.BUILTIN_MATCH¹  ó   € Ø×"Ñ" 5Ó)Ð)r‰   c                ó$   — | j                  |«      S r¥   rë  rH  s     r‡   ÚPYMODULE_MATCHzGuardBuilder.PYMODULE_MATCH¼  rí  r‰   c                ó>  — | j                  |«      }| j                  |j                  «      }t        |t        «      s| j                  |«       g }t        |«      dk(  r|j                  d|› �«       n |j                  d|› dt        |«      › �«       | j                  ||«       t        |t        «      r5| j                  |«      j                  t        |«      t        ||«      «       y | j                  |«      j                  t        |«      t        ||«      «       y )Nr   r  zlen(rz  )rb  rÁ  ra  rž   r!  rx  r!  rø   rk  rÉ  Úadd_dict_length_check_guardrO  Úadd_length_check_guard©r†   rµ   rn  r`  rž  s        r‡   ÚSEQUENCE_LENGTHzGuardBuilder.SEQUENCE_LENGTH¿  sé   € ð �l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆä˜%¤Ô&à�O‰O˜EÔ"àˆÜˆu‹:˜Š?Ø�K‰K˜$˜s˜e˜Õ%à�K‰K˜$˜s˜e 5¬¨U«¨Ð5Ô6à×#Ñ# E¨4Ô0Ü�eœTÔ"Ø×"Ñ" 5Ó)×EÑEÜ�E“
Ô2°4¸Ó?õð ×"Ñ" 5Ó)×@Ñ@Ü�E“
Ô2°4¸Ó?õr‰   c                óš  — | j                  |«      }| j                  |j                  «      }t        |«      }g }|j	                  d|› dt        |«      › �«       | j                  ||«       t        |«      }| j                  |d|j                  › d�«      }| j                  |«      j                  t        |«      |t        ||«      «       y )Nz___tuple_iterator_len(rz  rv  rX  )rb  rÁ  ra  rY  rø   rk   rk  r­  rÉ  Úadd_tuple_iterator_length_guardrO  )r†   rµ   rn  r`  r¿   rž  r   s          r‡   ÚTUPLE_ITERATOR_LENzGuardBuilder.TUPLE_ITERATOR_LENÙ  s´   € Ø�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆÜ�‹KˆàˆØ�‰Ð,¨S¨E°Ô7IÈ%Ó7PÐ6QÐRÔSØ×#Ñ# E¨4Ô0ä�‹KˆØ—‘˜Q %¨¯
©
 |°1Ð 5Ó6ˆà×Ñ˜uÓ%×EÑEÜ˜uÓ% vÔ/EÀdÈEÓ/Rõ	
r‰   c           
     óœ  — | j                  |«      }| j                  |j                  «      }t        |«      }g }t	        |«      }|j                  d|› d|› �«       | j                  ||«       t        |«      }| j                  |d|j                  › d�«      }|\  }}	}
| j                  |«      j                  ||	|
|t        ||«      «       y )Nz___normalize_range_iter(rz  rv  rX  )rb  rÁ  ra  rY  rg   rø   rk  r­  rÉ  Úadd_range_iterator_match_guardrO  )r†   rµ   rn  r`  r¿   rž  Únormalized_range_iterr   ÚstartÚstopÚsteps              r‡   ÚRANGE_ITERATOR_MATCHz!GuardBuilder.RANGE_ITERATOR_MATCHé  sÅ   € Ø�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆÜ�‹KˆàˆÜ 4°UÓ ;ÐØ�‰Ð.¨s¨e°5Ð9NÐ8OÐPÔQØ×#Ñ# E¨4Ô0ä�‹KˆØ—‘˜Q %¨¯
©
 |°1Ð 5Ó6ˆà1Ñˆˆt�TØ×Ñ˜uÓ%×DÑDØ�4˜˜vÔ'=¸dÀEÓ'Jõ	
r‰   c                óÞ  — | j                  |«      }| j                  |j                  «       «      }t        |j                  «      st        |«      ry ||f}|| j                  v ry | j                  j                  ||f«       | j                  j                  ||f«       |› d|› �g}| j                  ||«       t        | j                  |«      | j                  |«      t        ||«      «       y )Nú is )rb  ra  r   r‘  rÃ  r•   rk  r   rÉ  r  rO  )r†   rµ   Úsource_bÚref_aÚref_brk  rž  s          r‡   ÚDUPLICATE_INPUTzGuardBuilder.DUPLICATE_INPUTü  sÝ   € Ø—‘˜UÓ#ˆØ—‘˜XŸ]™]›_Ó-ˆä#Ø×$Ñ$ô
ä% hÔ/Øð �eˆnˆØ�$×5Ñ5Ñ5Øà×+Ñ+×/Ñ/°¸°Ô?Ø×+Ñ+×/Ñ/°¸°Ô?à�'˜˜e˜WÐ%Ð&ˆØ×#Ñ# E¨4Ô0ä%Ø×"Ñ" 5Ó)Ø×.Ñ.¨xÓ8Ü" 4¨Ó/õ	
r‰   c                ó¦   — | j                  |«      › d�g}| j                  ||«       | j                  |«      j                  t	        ||«      «       y rˆ  )rb  rk  rÉ  rŠ  rO  )r†   rµ   rž  s      r‡   ÚWEAKREF_ALIVEzGuardBuilder.WEAKREF_ALIVE  sN   € Ø—<‘< Ó&Ð' |Ð4Ð5ˆà×#Ñ# E¨4Ô0Ø×Ñ˜uÓ%×8Ñ8Ü" 4¨Ó/õ	
r‰   c           	     ó"  — | j                  |«      }| j                  |j                  «      }g }|j                  d|› dt	        |j                  «       «      › �«       | j                  ||«       | j                  |«      j                  ||«       y)z7Guard on the key order of types.MappingProxyType objectzlist(z.keys()) == N)	rb  rÁ  ra  rø   rN  rí  rk  rÉ  Úadd_mapping_keys_guardró  s        r‡   ÚMAPPING_KEYS_CHECKzGuardBuilder.MAPPING_KEYS_CHECK  sw   € à�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆàˆØ�‰�e˜C˜5 ¬T°%·*±*³,Ó-?Ð,@ÐAÔBØ×#Ñ# E¨4Ô0Ø×Ñ˜uÓ%×<Ñ<¸UÀDÕIr‰   c           
     óè  — | j                  |«      }| j                  |j                  «      }|t        j                  j
                  j                  u r| j                  |«       y| j                  |«       g }|j                  d|› dt        t        |«      «      ›�«       | j                  ||«       | j                  |j                  «      r| j                  ||«       y| j!                  ||«       y)z6Insert guard to check that the keys of a dict are sameNrn  z)) == )rb  rÁ  ra  rË   r9  rÐ  ÚSUPPORTED_NODESr}  rô  rø   rN  r]   rk  r  r‘  rÕ  rÏ  ró  s        r‡   ÚDICT_KEYS_MATCHzGuardBuilder.DICT_KEYS_MATCH(  sÉ   € à�l‰l˜5Ó!ˆØ—‘˜Ÿ™Ó$ˆà”E—K‘K×'Ñ'×7Ñ7Ñ7à×Ñ˜eÔ$Øà×Ñ˜UÔ#àˆð
 	�‰�o c U¨&´Ô6GÈÓ6NÓ1OÐ0RÐSÔTØ×#Ñ# E¨4Ô0à×+Ñ+¨E×,DÑ,DÔEØ×-Ñ-¨e°UÕ;à×4Ñ4°U¸EÕBr‰   c                óH   — t         j                  ry| j                  |«       y)z\Special guard to skip guards on empty hooks. This is controlled by skip_nnmodule_hook_guardsN)r2   Úskip_nnmodule_hook_guardsrô  rH  s     r‡   ÚEMPTY_NN_MODULE_HOOKS_DICTz'GuardBuilder.EMPTY_NN_MODULE_HOOKS_DICTA  s   € ä×+Ò+àØ×Ñ˜UÕ#r‰   c                óv   — t        j                  | j                  |j                  «      | j                  «       y r¥   )r5   ÚwatchrÁ  ra  r»  rH  s     r‡   ÚOBJECT_MUTATIONzGuardBuilder.OBJECT_MUTATIONH  s%   € Ü×Ñ˜TŸX™X e§j¡jÓ1°4×3HÑ3HÕIr‰   c                 ó   — y r¥   r  rH  s     r‡   Ú	GRAD_MODEzGuardBuilder.GRAD_MODEK  ó   € Ør‰   c                 ó   — y r¥   r  rH  s     r‡   ÚDETERMINISTIC_ALGORITHMSz%GuardBuilder.DETERMINISTIC_ALGORITHMSN  r  r‰   c                 ó   — y r¥   r  rH  s     r‡   ÚTORCH_FUNCTION_STATEz!GuardBuilder.TORCH_FUNCTION_STATEQ  r  r‰   c                 ó   — y r¥   r  rH  s     r‡   ÚFSDP_TRAINING_STATEz GuardBuilder.FSDP_TRAINING_STATET  r  r‰   c                óê   — |j                   t        j                  u sJ ‚ddlmc m} d|j                  ›�g}| j                  ||«       | j                  |«      j                  t        ||«      «       y)z/Guard on CURRENT_DEVICE per torch.utils._devicer   Nzutils_device.CURRENT_DEVICE == )r¾   r%   ÚGLOBALÚtorch.utils._devicer9  r:  ÚCURRENT_DEVICErk  rÉ  Úadd_default_device_guardrO  )r†   rµ   r  rž  s       r‡   ÚDEFAULT_DEVICEzGuardBuilder.DEFAULT_DEVICEW  si   € à�|‰|œ{×1Ñ1Ñ1Ð1Ð1ß'Ð'à1°!×2BÑ2BÐ1EÐFÐGˆØ×#Ñ# E¨4Ô0à×Ñ˜uÓ%×>Ñ>Ü" 4¨Ó/õ	
r‰   c                óF	  ‡ ‡!‡"‡#‡$— |j                   dk(  sJ ‚‰ j                  j                  Š$‰$j                  Š"‰"D �cg c]  }|j                  ‘Œ c}Š#ˆ$fd„}‰$j
                  r³i }g }g }i }t        «       }‰$j
                  D ]j  }	|	j                  ‰$j                  v r;t        j                  j                  j                  |	|‰$j                  |||||«       ŒVt        j                  d«       Œl t!        ||t#        |j%                  «       «      |d¬«      Š!nd Š!ˆ!ˆ"ˆ#ˆ$ˆ fd„}
t&        j(                  r |
d«      \  }}}n |
d«      \  }}‰ j                  j                  j                  s‰$j                  j+                  «        |j,                  D ]  }‰ j/                  ||g«       Œ t1        j2                  «       x}r%|j4                  j7                  |j,                  «       t&        j(                  �r1d	d l}d	d
lm} sJ ‚|j,                  |j>                  }}|sy g }g }d}|jA                  «       D ]“  \  }}tC        |tD        «      rd}Œ‰ jG                  |j                  «       i tH        ¥tK        «       ¥¬«      }tC        |tL        «      r|jO                  ||f«       ŒntC        |tP        «      r|jO                  ||f«       Œ’d}Œ• |�sYtS        ||z   «      }	 tU        |«      D ��cg c]   \  }}‰ jW                  tY        ||«      «      ‘Œ" }}}dj[                  d„ tU        |«      D «       «      }dj[                  d„ tU        |«      D «       «      }|rd|› d�}|rd|› d�}t]        j^                  d|› d|› ddj[                  |«      › d�«      }t`        jc                  d||j,                  «       |je                  |«      }|jg                  |jh                  |jj                  «      jl                  } | sJ ‚	 to        |tq        |«      tq        |«      | ||j,                  «       y |j,                  r9‰ jy                  |j,                  |j,                  i tH        ¥tK        «       ¥¬«       y y c c}w c c}}w # t        jr                  jt                  jv                  $ r Y Œzw xY w)Nrç   c                óz   •— ‰j                   |    D �cg c]  }t        |t        j                  |«      ‘Œ c}S c c}w r¥   )Útracked_fakes_id_to_sourcer   r   ÚSIZE)Út_idrU  r¾   r¾  s      €r‡   Úget_sourcesz+GuardBuilder.SHAPE_ENV.<locals>.get_sourcesm  s?   ø€ ð
 +×EÑEÀdÑKöàô % V¬^×-@Ñ-@À#ÕFòð ùò s   “"8z+Untracked tensor used in export constraintsF)Úsource_pairsÚderived_equalitiesÚphantom_symbolsÚrelaxed_sourcesÚ	warn_onlyc           	     ó  •— ‰j                   j                  ‰D �cg c]  }|j                  ‘Œ c}‰D �cg c]  }|j                  ‘Œ c}‰‰‰j                  ‰j
                  j                  j                   | ¬«      S c c}w c c}w )N)Úinput_contextsÚequalities_inputsr®  Úignore_staticÚlangs)Ú	shape_envÚproduce_guards_verboseÚfaker¾   r®  r»  r¾  Úexport)r1  r
  r/  rK  r.  r¾  r†   s     €€€€€r‡   Ú_get_code_partsz/GuardBuilder.SHAPE_ENV.<locals>._get_code_parts•  st   ø€ Ø×)Ñ)×@Ñ@Ø!#Ö$˜A�—“Ò$Ø#%Ö&˜a�—“Ò&Ø-Ø"3ØŸ?™?à#'×#8Ñ#8×#EÑ#E×#LÑ#LÐLØð Aó 	ð 	ùÚ$ùÚ&s
   ›A=´B
)ÚpythonÚverbose_pythonÚcpp)r7  r8  r   )ÚCppCodeCacheT)rz   r»   c              3  ó8   K  — | ]  \  }\  }}|› d |› d�–— Œ y­w)z = int_values[rp  Nr  ©Ú.0Úir¨  Úsymbols       r‡   ú	<genexpr>z)GuardBuilder.SHAPE_ENV.<locals>.<genexpr>á  s-   è ø€ ò 0á*˜A™{  6ð "˜( .°°°1Ô5ñ0ùó   ‚c              3  ó8   K  — | ]  \  }\  }}|› d |› d�–— Œ y­w)z = float_values[rp  Nr  r<  s       r‡   r@  z)GuardBuilder.SHAPE_ENV.<locals>.<genexpr>å  s.   è ø€ ò 2á*˜A™{  6ð "˜(Ð"2°1°#°QÔ7ñ2ùrA  zint64_t ú;zdouble zô
                    #include <cstdint>
                    #include <cmath>
                    #include <c10/util/generic_math.h>

                    extern "C" int8_t guard(int64_t *int_values, double *float_values) {
                      z
                      z
                      return (z) && (z-);
                    }
                    zC++ shape guard function: %s %s)=ra  r»  r¾  Útracked_fakesÚsymbolic_contextÚexport_constraintsr¼  r&  r$  rË   r5  Údynamic_shapesÚ_process_equalitiesr2  r_  r`  r*   rN  rP  r2   Ú enable_cpp_symbolic_shape_guardsÚfreezeÚexprsrk  r   Útry_getÚshape_env_guardsrþ   ÚctypesÚtorch._inductor.codecacher:  Úsource_to_symbolr”   rž   r<   rÁ  r,   r<  r�  rø   r6  r!  rÑ  r  r   rK  ÚtextwrapÚdedentrM  rN  ÚloadÚcastrµ   Úc_void_pr`  r   r!  Ú	_inductorr4   ÚInvalidCxxCompilerrY  )%r†   rµ   r
  r'  Únamesr(  r)  r*  r+  Ú
constraintr6  Úpython_code_partsr}   Úcpp_code_partsrž  Úcompile_contextrN  r:  r|   rP  Úint_source_to_symbolÚfloat_source_to_symbolÚpython_fallbackr¾   r?  r}  r>  Úguard_managersÚint_symbols_strÚfloat_symbols_strÚfunc_strÚclibÚcguardr/  rK  r.  r¾  s%   `                                @@@@r‡   Ú	SHAPE_ENVzGuardBuilder.SHAPE_ENVc  sÎ  ü€ ð �z‰z˜RÒÐÐØ×,Ñ,×9Ñ9ˆà×'Ñ'ˆØ68Ö9°˜!×,Ó,Ò9ˆô	ð ×*Ò*Ø02ˆEØ8:ˆLð ð ð 24ˆOÜ+.«5ˆOØ*×=Ñ=ò O�
Ø—?‘? l×&MÑ&MÑMÜ—L‘L×/Ñ/×CÑCØ"Ø#Ø$×.Ñ.ØØ$Ø*Ø'Ø'õ	ô —K‘KÐ MÕNðOô !3Ø)Ø#5Ü $ _×%;Ñ%;Ó%=Ó >Ø /Øô!Ñð !%Ð÷
	ð 
	ô ×2Ò2áDSØ3óEÑAÐÐ1±>ñ 5DØ,ó5Ñ1ÐÐ1ð ×$Ñ$×1Ñ1×8Ò8Ø×"Ñ"×)Ñ)Ô+Ø%×+Ñ+ò 	7ˆDØ×'Ñ'¨°¨vÕ6ð	7ô -×4Ñ4Ó6Ð6ˆ?Ð6Ø×,Ñ,×3Ñ3Ð4F×4LÑ4LÔMä×2Ó2Ûå>á!Ð!�>à×$Ñ$Ø×/Ñ/ð )ˆJñ
 Øà#%Ð Ø%'Ð"à#ˆOØ"2×"8Ñ"8Ó":ò /‘�˜Ü˜f¤nÔ5Ø&*‘Oà$(§H¡HØŸ™›Ø%L¬Ð%LÔ8IÓ8KÐ%Lð %-ó %�Mô " -´Ô5Ø,×3Ñ3°V¸VÐ4DÕEÜ# M´5Ô9Ø.×5Ñ5°v¸vÐ6FÕGð +/™ð/ò" #Ü#'Ð(<Ð?UÑ(UÓ#VÐ ð5ô *3Ð3CÓ)D÷&á%˜A˜vð ×:Ñ:¼=ÈÐQRÓ;SÕTð&�Nñ &ð
 '+§i¡iñ 0ä.7Ð8LÓ.Mô0ó '�Oð )-¯	©	ñ 2ä.7Ð8NÓ.Oô2ó )Ð%ñ
 'Ø,4°_Ð4EÀQÐ*G˜Ù(Ø.5Ð6GÐ5HÈÐ,JÐ)ä'Ÿ™ðð 'Ð'ð (Ø(Ð)ð *Ø'Ÿ}™}¨ZÓ8Ð9ð :ð
ó �Hô ×$Ñ$Ø9Ø Ø*×0Ñ0ôð
 (×,Ñ,¨XÓ6�DØ#Ÿ[™[¨¯©°V·_±_ÓE×KÑK�FÙ!�M™6ô
 1Ø&ÜÐ0Ó1ÜÐ2Ó3ØØØ*×0Ñ0ôð ð
 ×"Ò"Ø×5Ñ5Ø!×'Ñ'Ø"×(Ñ(ØD¤ÐDÔ0AÓ0CÐDð 6õ ð #ùòU :ùób&øôP —‘×*Ñ*×=Ñ=ò áðús*   ½Q+ËQ6 Ë)%Q0ÌC)Q6 Ñ0Q6 Ñ6'R ÒR c                ót  — t         j                  r|j                  «       ry t        |«      r| j	                  |«       y t        |t        «      r |«       }|�|n| j                  |j                  «      }t        |t        j                  «      sJ ‚| j                  |«      }g }| j                  j                  j                  rœ| j                  |«       g d¢}|D ]€  }| j                  |dz   |z   «      }t!        |t        j"                  t        j$                  f«      r$|j'                  d|› d|› dt)        |«      ›�«       Œh|j'                  |› d|› d|› �«       Œ‚ �nj| j+                  |«      }t         j,                  r$t!        |t        j.                  j0                  «      sPt        |j2                  t4        «      s6| j6                  j'                  |«       | j8                  j'                  |«       | j                  j                  }	|	j:                  |j2                     }
t=        |
d   «      }t=        |
d   «      }t?        tA        ||||«      |«      }|jC                  |||||«       t        |t        j.                  j0                  «      s9| j                  jD                  jF                  jI                  |j                  «       |jJ                  €J ‚tM        |d|j2                  ¬	«      \  }}|s£tO        |d
«      rU|jP                  }d|› d|› d|› d�}|j'                  |«       | j+                  |«      jS                  |t?        ||«      «       nBd|› d�}|j'                  |«       | j+                  |«      jU                  d
t?        ||«      «       tW        |«      dkD  r| jY                  ||«       y y )N)r]  r.  r_  zndimension()rª  zstr(rz  r  ÚsizeÚstrideT)Ú	is_tensorÚtensor_sourceÚ_dynamo_dynamic_indicesz((z"._dynamo_dynamic_indices.issubset(z)) if hasattr(z', '_dynamo_dynamic_indices') else True)ri  z%, '_dynamo_dynamic_indices') == Falser   )-r2   Ú_unsafe_skip_fsdp_module_guardsÚis_fsdp_moduler”  r†  rž   r0   rÁ  ra  rË   r‰  rb  r»  r¾  r5  rx  rd   r.  r]  rø   r‚  rÉ  Ú,skip_no_tensor_aliasing_guards_on_parametersr(  Ú	Parameterr‘  rK   r¹  rº  Úinput_source_to_sizes_stridesrV  rO  rh  Úadd_tensor_match_guardr¼   r…   r•   r¾   ri   rê   rl  Úadd_dynamic_indices_guardrl  r!  rk  )r†   rµ   r`  Útensor_namerž  ÚtermsÚtermÚ
real_valuer¼   r¾  Úmetadatarh  ri  r}   ÚstaticÚ_reasonÚdynamic_indicesrû   s                     r‡   ÚTENSOR_MATCHzGuardBuilder.TENSOR_MATCH  sh  € Ü×1Ò1°e×6JÑ6JÔ6LØô " %Ô(Ø�M‰M˜%Õ ä˜%¤Ô/Ù›�à"Ð.‘E°D·H±H¸U¿Z¹ZÓ4HˆEÜ˜e¤U§\¡\Ô2Ð2Ð2àŸ,™, uÓ-ˆKð, !ˆDØ×$Ñ$×1Ñ1×8Ò8Ø—‘ Ô&ò�ð "ò M�DØ!%§¡¨+¸Ñ*;¸dÑ*BÓ!C�JÜ˜j¬5¯<©<¼¿¹Ð*EÔFàŸ™ d¨;¨-°q¸¸¸eÄCÈ
ÃOÐCVÐ$WÕXàŸ™ { m°1°T°F¸$¸z¸lÐ$KÕLòMð !%× 6Ñ 6°uÓ =�ô ×GÒGÜ˜u¤e§h¡h×&8Ñ&8Ô9Ü$ U×%=Ñ%=Ô?PÔQð ×1Ñ1×8Ñ8¸ÔEØ×:Ñ:×AÑAÀ-ÔPà#×4Ñ4×AÑA�Ø'×EÑEØ×,Ñ,ñ�ô 2°(¸6Ñ2BÓC�Ü3°H¸XÑ4FÓG�ä%;Ü.¨u°kÀ4ÈÓPØó&Ð"ð ×4Ñ4ØØØØØ&ôô " %¬¯©×);Ñ);Ô<Ø×)Ñ)×7Ñ7×JÑJ×NÑNØŸ
™
ôð@ —<‘<Ð+Ð+Ð+Ü<Ø °U×5MÑ5Mô‰OˆF�Gñ Ü˜5Ð";Ô<Ø&+×&CÑ&C�OØ"$ [ MÐ1SÐTcÐSdÐdrÐs~Ðrð  @gð  !h�IØ—K‘K 	Ô*Ø×*Ñ*¨5Ó1×KÑKØ'Ô)?À	È5Ó)Qõð # ; -Ð/TÐUð ð —K‘K 	Ô*Ø×*Ñ*¨5Ó1×FÑFØ1Ü.¨y¸%Ó@ôô �4‹y˜1Š}Ø×+Ñ+¨E°4Õ8ð r‰   c                ó  — t        «       }|€J ‚|j                  }~|€J ‚|j                  j                  }~|| j                  j
                  v s
J d|› �«       ‚|€"|j                  }|sd n| j                  |«      }n|}|�t        j                  t        |«      «      nd }	d }
t        |j                  dd«      dk7  }|r5t        |t        j                  t        f«      st        j                  |«      }
|j!                  ||	||
«       y )NzH_produce_guard_code must be called from inside GuardedCode. Called from Ú__weakrefoffset__r   )r   Úf_backr¬  Úco_namer³   r²  ra  rÁ  Úweakrefrn  rY  r+  rž   ÚenumÚEnumr1  Úset_export_info)r†   rµ   r˜  rj  Ú	cur_frameÚcallerÚ	func_namera  Úguarded_objectÚguarded_object_typeÚobj_refÚsupports_weakrefs               r‡   rk  z#GuardBuilder._set_guard_export_info¹  s  € ô !“Nˆ	ØÐ$Ð$Ð$Ø×!Ñ!ˆØØÐ!Ð!Ð!Ø—M‘M×)Ñ)ˆ	Øà˜DŸN™N×3Ñ3Ñ3ð 	
ØVÐW`ÐVaÐbó	
Ð3ð
 #Ð*Ø—:‘:ˆDÙ)-™T°4·8±8¸D³>‰Nà4ˆNð 2@Ð1KŒG�K‰Kœ˜^Ó,Ô-ÐQUð 	ð ˆô �N×,Ñ,Ð.AÀ1ÓEÈÑJð 	ñ ¤J¨~ÄÇ	Á	Ì5Ð?QÔ$RÜ—k‘k .Ó1ˆGà×ÑØØØØõ		
r‰   )r¬  útypes.CodeTyper­  zCallable[[Any, str], str]r®  zCallable[[Source], str]r¯  z)Callable[[object], ReferenceType[object]]rÄ  údict[str, object]r~   r�  r¼   ru   r»  ÚCheckFunctionManager)rµ   r"   rw   r¥   )ra  r‚  rz   zOptional[dict[str, Any]]Úreturnr   )rµ   zUnion[str, Guard]r�  r‚  )rµ   r"   rð  r‚  )rµ   r"   r�  ÚNone)rµ   r"   rk  r‚  r€  ru  )8r´   râ   rã   rˆ   rÏ  rÕ  Ústaticmethodrß  rþ  r  rË  r  r	  r  rÉ  rY  rÁ  rb  rg  rq  rt  rx  r}  rƒ  r†  r‹  r�  r’  r—  rŸ  r«  r¶  r‘  rÛ  rã  rå  ré  rì  rï  rô  r÷  rþ  r  r  r	  r  r  r  r  r  r  r  r!  rf  r|  rk  r  r‰   r‡   r¡  r¡  `  sŠ  „ ð=Jàð=Jð *ð=Jð ,ð	=Jð
 Cð=Jð 'ð=Jð (ð=Jð +ð=Jð /ó=Jò~ò8$ðL ñó ðò"Sòj9ò	"ò?ò
ò\ó|
Lð ØóSôF4óó ó4Yôl
ó(	
ó
ó	
ó?ô<	
ó
óOó
ó
ó 
ó$
ó*_óB%óó"$ó'ó*ó*òò4
ò 
ò&
ò4
òJòCò2$óJóóóóó

ówôrZ9ôz)
r‰   r¡  c                  óþ   — e Zd ZdZej
                  ej                  ej                  fZe	j                   G d„ d«      «       Z G d„ dej                  «      Z G d„ dej                  «      Zdd„Zddd	„Zdd
„Zdd„Zy)ÚPyExprCSEPassr1   c                  ó"   — e Zd ZU ded<   ded<   y)úPyExprCSEPass.Configzdict[str, int]Ú
expr_countzdict[str, str]Úexpr_to_nameNr™  r  r‰   r‡   ÚConfigr•  þ  s   … à"Ó"Ø$Ô$r‰   r˜  c                  ó(   ‡ — e Zd Zdd„Zdˆ fd„Zˆ xZS )úPyExprCSEPass.ExprCounterc                ó   — || _         y r¥   )Ú_config)r†   r2   s     r‡   rˆ   z"PyExprCSEPass.ExprCounter.__init__	  s	   € Ø!ˆD�Lr‰   c                ó¬   •— t        |t        j                  «      r*| j                  j                  t        |«      xx   dz  cc<   t        ‰| �  |«       y r¯  )rž   r“  ÚALLOWED_NODE_TYPESrœ  r–  rB  rÞ   r›   )r†   r–   r³   s     €r‡   r›   zPyExprCSEPass.ExprCounter.visit	  s>   ø€ Ü˜$¤× @Ñ @ÔAØ—‘×'Ñ'¬°TÓ(:Ó;¸qÑ@Ó;Ü‰G‰M˜$Õr‰   )r2   r•  r�  r�  ©r–   úast.ASTr�  r   ©r´   râ   rã   rˆ   r›   rä   rå   s   @r‡   ÚExprCounterrš  	  s   ø„ ó	"÷	 ñ 	 r‰   r¢  c                  ó8   ‡ — e Zd Z	 	 	 	 	 	 dˆ fd„Zdˆ fd„Zˆ xZS )úPyExprCSEPass.Replacerc                óL   •— t         ‰| �  «        || _        || _        g | _        y r¥   )rÞ   rˆ   rœ  Ú	_gen_nameÚpreface)r†   r2   Úgen_namer³   s      €r‡   rˆ   zPyExprCSEPass.Replacer.__init__	  s%   ø€ ô
 ‰GÑÔØ!ˆDŒLØ%ˆDŒNØ&(ˆD�Lr‰   c                ó:  •— t        |t        j                  «      ròt        |«      }| j                  j
                  |   t        j                  kD  r½|| j                  j                  vrdt        ‰| �%  |«      }t        |«      }| j                  «       }| j                  j                  |› d|› �«       || j                  j                  |<   n| j                  j                  |   }t        j                  |t        j                  «       «      S t        ‰| �%  |«      S )Nz = )rž   r“  rž  rB  rœ  r–  ÚUSE_THRESHOLDr—  rÞ   r›   r¦  r§  rø   r?  ÚNameÚLoad)r†   r–   ÚexprÚnode_Úexpr_Úvar_namer³   s         €r‡   r›   zPyExprCSEPass.Replacer.visit	  sß   ø€ Ü˜$¤× @Ñ @ÔAÜ# DÓ)�ð —<‘<×*Ñ*¨4Ñ0´=×3NÑ3NÒNØ 4§<¡<×#<Ñ#<Ñ<ô !&¡¡¨dÓ 3˜Ü ,¨UÓ 3˜Ø#'§>¡>Ó#3˜ØŸ™×+Ñ+¨x¨j¸¸E¸7Ð,CÔDØ:B˜Ÿ™×1Ñ1°$Ò7à#'§<¡<×#<Ñ#<¸TÑ#B˜ÜŸ8™8 H¬c¯h©h«jÓ9Ð9ä‘7‘= Ó&Ð&r‰   )r2   r•  r¨  zCallable[[], str]r�  r�  rŸ  r¡  rå   s   @r‡   ÚReplacerr¤  	  s.   ø„ ð	)à(ð	)ð (ð	)ð õ		)÷	'ñ 	'r‰   r±  c                ój   — d| _         | j                  t        j                  d„ «      i ¬«      | _        y )Nr   c                  ó   — yr�   r  r  r‰   r‡   r$  z(PyExprCSEPass.__init__.<locals>.<lambda>4	  s   � r‰   )r–  r—  )Ú_counterr˜  r1  Údefaultdictrœ  r‹   s    r‡   rˆ   zPyExprCSEPass.__init__1	  s.   € ØˆŒØ—{‘{Ü"×.Ñ.©yÓ9Èð #ó 
ˆ�r‰   c                óP   — |› | j                   › �}| xj                   dz  c_         |S r¯  )r´  )r†   rÜ   ra  s      r‡   Ú_new_varzPyExprCSEPass._new_var7	  s'   € Ø�˜$Ÿ-™-˜Ð)ˆØ�Š˜Ñ�Øˆr‰   c                óø   — | j                  | j                  «      }|D ]'  }	 |j                  t        j                  |«      «       Œ) y # t
        $ r'}t        j                  d|j                  |«       ‚ d }~ww xY w)Nz#Failed to visit expr at line %s.
%s)	r¢  rœ  r›   r?  ÚparseÚSyntaxErrorr_  Ú	exceptionÚlineno)r†   rK  ÚcounterÚeÚexs        r‡   ÚcountzPyExprCSEPass.count<	  si   € Ø×"Ñ" 4§<¡<Ó0ˆØò 	ˆAðØ—‘œcŸi™i¨›lÕ+ñ	øô ò Ü—‘ÐDÀbÇiÁiÐQRÔSØûðús   ¢$A	Á		A9Á"A4Á4A9c                óÄ   — | j                  | j                  | j                  «      }|j                  t	        j
                  |«      «      }|j                  t        |«      fS r¥   )r±  rœ  r·  r›   r?  r¹  r§  rB  )r†   r­  ÚreplacerÚnew_nodes       r‡   rA  zPyExprCSEPass.replaceE	  sF   € Ø—=‘= §¡¨t¯}©}Ó=ˆØ—>‘>¤#§)¡)¨D£/Ó2ˆØ×Ñ¤¨hÓ!7Ð7Ð7r‰   N)r�  r�  )Ú_var)rÜ   r‚  r�  r‚  )rK  r—  r�  r�  ©r­  r‚  r�  ztuple[list[str], str])r´   râ   rã   rª  r?  Ú	AttributeÚCallÚ	Subscriptrž  ÚdataclassesÚ	dataclassr˜  ÚNodeVisitorr¢  ÚNodeTransformerr±  rˆ   r·  rÀ  rA  r  r‰   r‡   r“  r“  ö  sx   „ ð €Mð Ÿ-™-¨¯©°3·=±=ÐAÐà×Ñ÷%ð %ó ð%ô �c—o‘oô  ô#'�3×&Ñ&ô #'óJ
ôó
ô8r‰   r“  c                ó–   — t        | j                  t        «      xs. t        j                  xr | j
                  t        j                  u S r¥   )rž   r‘  r>   r2   Ú guard_nn_modules_using_dict_tagsÚ	create_fnr¡  rã  )rµ   s    r‡   Úmust_add_nn_module_guardsrÐ  K	  s@   € ô
 	�5×+Ñ+¬^Ó<ò 	
ô ×3Ñ3ò :Ø—‘¤<×#9Ñ#9Ð9ðr‰   c                  ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚDeletedGuardManagerWrapperc                ó0   •— t         ‰| �  «        || _        y r¥   )rÞ   rˆ   Úinvalidation_reason)r†   Úreasonr³   s     €r‡   rˆ   z#DeletedGuardManagerWrapper.__init__Z	  s   ø€ Ü‰ÑÔØ#)ˆÕ r‰   c                ó   — d | _         y r¥   )ry   r‹   s    r‡   r¦   z6DeletedGuardManagerWrapper.populate_diff_guard_manager^	  s
   € Ø#ˆÕr‰   )r´   râ   rã   rˆ   r¦   rä   rå   s   @r‡   rÒ  rÒ  Y	  s   ø„ ô*ö$r‰   rÒ  c                  ó6   — e Zd Z	 	 	 d	 dd„Zd„ Zd„ Zd„ Zd„ Zy)	rŽ  Nc           
     ób  ‡ ‡‡— |r|j                   nd }i ‰ _        t        |«      }t        «       ‰ _        |‰ j                  _        |‰ _        d Š|r|j                  nd ‰ _        ˆfd„}t        |‰ j                  |‰ j                  |j                  |j                  ‰ j                  ‰ «      }d„ }	t        j                  ||	«      Št        j                   xr t#        d«      }
t#        d«      st$        j'                  d«       t)        |xs dt*        j,                  ¬«      D ]`  }|
sK|j/                  «       r;d|j0                  vr-d|j0                  vrt        j2                  sd	|j0                  vrŒP|j5                  |«       Œb ‰ j7                  |||«       |j8                  ‰ j                  _        t:        j=                  d
‰ j                  «       |j8                  ‰ j                  _        dŠ|j>                  sî‰ j                  jA                  |j                  «      sAtC        ‰ j                  |j                  tE        jF                  «       «      }tI        d|› �«      ‚tJ        � tK        ‰ j                  |j                  «       tM        ‰ j                  jN                  |j                  d«      Št:        j=                  d‰d›«       tQ        jR                  dtU        ‰«      «       tV        jX                  j[                  dˆˆ fd„¬«       ‰ j                  j]                  «        d ‰ _        y )Nc                óÄ   •— | j                  «       }|t        j                  u r| j                  «       S ‰sJ ‚ ‰«       }|€J ‚|j	                  | j                  «       «      S r¥   )Úguard_sourcer%   ÚCONSTANTra  rb  )r¾   rÚ  Ú	r_builderÚ	w_builders      €r‡   r®  z1CheckFunctionManager.__init__.<locals>.source_ref€	  s]   ø€ Ø!×.Ñ.Ó0ˆLØœ{×3Ñ3Ñ3à—{‘{“}Ð$ÙÐ�9Ù!›ˆIØÐ(Ð(Ð(Ø×$Ñ$ V§[¡[£]Ó3Ð3r‰   c                ó&   —  | «       }|rd |_         y y r¥   )r°  )Úweak_br#  s     r‡   Úcleanup_builderz6CheckFunctionManager.__init__.<locals>.cleanup_builder–	  s   € Ù“ˆAÙØ�•ð r‰   z!pytorch/compiler:guard_nn_modulesz9guard_nn_modules is turned off using justknobs killswitchr  )rk  r8  r:  Úhooksú%sg        zGuard check failed: é2   zGuard eval latency = %s usú.2fÚguard_latency_usÚdynamo_cpp_guards_strc                 ó*   •— ‰j                   › d‰ d›d�S )Nz
Guard latency = rä  z us)r¼   )Úlatencyr†   s   €€r‡   r$  z/CheckFunctionManager.__init__.<locals>.<lambda>ë	  s    ø€  $×"4Ñ"4Ð!5Ð5GÈÐPSÀ}ÐTWÐX€ r‰   ©Ú
payload_fn)/rp   Ú	_weakrefsÚ5update_diff_guard_managers_for_existing_cache_entriesru   r¼   r…   r¾  Útorch_function_mode_stackr¡  r­  r¯  rÄ  r~   r�  rn  r2   Úguard_nn_modulesr)   r_  r`  r’   r"   Úsort_keyr’  ra  r  rd  Úcompile_check_fnr‚   rM  rN  r5  rî   Úget_guard_fail_reason_helperr   rµ  r=  rn   r   rx   r   Úincrement_toplevelr�  rË   Ú_loggingÚtrace_structuredÚclear)r†   r¬  r¾  r€   r   rp   Úexisting_diff_guard_sourcesr®  Úbuilderrà  Úguard_on_nn_modulesrµ   Úreasonsrè  rÝ  s   `            @@r‡   rˆ   zCheckFunctionManager.__init__h	  sÊ  ú€ ñ )5�×$Ò$¸$ˆØ;=ˆŒô BÀ+ÓNð 	$ô 1Ó2ˆÔØ0Kˆ×ÑÔ-Ø(ˆÔØˆ	ñ
 7CˆL×2Ò2Èð 	Ô&ô	4ô ØØ�K‰KØØ× Ñ Ø×$Ñ$Ø×%Ñ%Ø×ÑØó	
ˆò	ô —K‘K ¨Ó9ˆ	ä$×5Ñ5ò 
¼/Ø/ó;
Ðô ÐBÔCÜ�K‰KÐSÔTä˜FšL b¬e¯n©nÔ=ò 	"ˆEá'Ø×2Ñ2Ô4ð #¨%¯*©*Ñ4Ø$¨E¯J©JÑ6Ü×5Ò5¸ÈÏ
É
Ñ9Ràà�L‰L˜Õ!ð	"ð 	×Ñ˜g v¨}Ô=ð .5×-DÑ-Dˆ×ÑÔ*ä×Ñ˜˜t×1Ñ1Ô2Ø-4×-DÑ-Dˆ×ÑÔ*ð ˆØ×"Ò"Ø×%Ñ%×+Ñ+¨L×,DÑ,DÔEÜ6Ø×&Ñ&Ø ×,Ñ,Ü"×5Ñ5Ó7ó�ô
 %Ð';¸G¸9Ð%EÓFÐFä,Ð8Ü-Ø×&Ñ&¨×(@Ñ(@ôô ,Ø×"Ñ"×'Ñ'¨×)AÑ)AÀ2óˆGô ×ÑÐ9¸gÀc¸]ÔLô ×1Ñ1Ð2DÄcÈ'ÃlÔSô 	�‰×'Ñ'Ø#ÜXð 	(ô 	
ð 	�‰×ÑÔØ ˆÕr‰   c                óÔ  ‡‡‡— |j                   }|dgz  }t        j                  d«       g Šg Šg Št        | j                  «      }| j
                  j                  j                  dg«       | j
                  j                  j                  | j                  dg«       d | _        dˆˆˆfd„	}t        «       }|j                  D ]=  }|j                  D ],  }	|	|vsŒ ||	|j                  d«       |j                  |	«       Œ. Œ? |j                  }
d }d }t        |
«      dkD  r-t!        |j"                  |
dd	j%                  |
«      z   d
z   g«       | j&                  r*| j&                  j(                  j*                  j,                  ng }|D �]T  }t/        |t0        «      rr|j2                  }|j4                  }|j7                  «       › d|j7                  «       › �}t9        |j;                  |«      |j;                  |«      |g«        ||d d«       Œ†t/        |t<        «      r³|j>                  D �cg c]  }|j;                  |«      ‘Œ }}|j@                  D �cg c]  }|j;                  |«      ‘Œ }}dd	j%                  d„ |j>                  D «       «      › dd	j%                  d„ |j@                  D «       «      › d�}tC        |||g«        ||d d«       �ŒItE        d|› �«      ‚ |jF                  D ]'  }|j                  D ]  }	 ||	|j                  d«       Œ Œ) ‰r$tH        jJ                  jM                  dˆfd„¬«       tN        jP                  }|€tO        jR                  «       }|||jT                  |dœtV        ¥tY        «       ¥}| j
                  j[                  «        d|j\                  d   i}t        ‰«      dk(  sJ ‚|| j
                  _/        || j
                  _0        | j
                  jc                  «        ‰| j
                  _2        || j
                  _3        || j
                  _4        d | j
                  _5        d | j
                  _6        |
| j
                  _7        y c c}w c c}w )Nz**___kwargs_ignoredzGUARDS:z___check_global_state()z$___check_torch_function_mode_stack()c                ó$  •‡ ‡— t        ‰ ‰«      }t        j                  d|«       ‰j                  ˆ ˆfd„«       t        j                  t        j                  «      rŽd}d}‰�p‰j                  r,ddj                  ‰j                  j                  «       «      › �}‰j                  r,ddj                  ‰j                  j                  «       «      › �}t        j                  d‰ ||«       |s#‰j                  ‰ «       ‰j                  |«       y y )Nrâ  c                 óä   •— ‰ ‰r9‰j                   r-t        j                  ‰j                   j                  «       «      nd ‰r-‰j                  r!t        j                  ‰j                  «      dœS d dœS )N)rž  rH  rE  )rH  r(   Úfrom_tracebackrI  rE  )rû   rµ   s   €€r‡   r$  zNCheckFunctionManager.compile_check_fn.<locals>.add_code_part.<locals>.<lambda>
  sg   ø€ Ø%ñ ! U§[¢[ô #×1Ñ1°%·+±+×2EÑ2EÓ2GÔHà!ñ ! U×%5Ò%5ô #×1Ñ1°%×2BÑ2BÓCñ€ ð "ñ€ r‰   rç   z
Stack:
z
User stack:
zGuard: %s%s%s)rL  rM  rN  rø   Úverbose_guards_logÚisEnabledForÚloggingÚDEBUGrH  rK  ÚformatrE  )	rû   rµ   Úlog_onlyrú   Úmaybe_stackÚmaybe_user_stackr|   Ústructured_guard_fnsr}   s	   ``    €€€r‡   Úadd_code_partz<CheckFunctionManager.compile_check_fn.<locals>.add_code_part
  s÷   ú€ Ü 5°iÀÓ GÐÜ×Ñ˜TÐ#4Ô5à ×'Ñ'ôôô  "×.Ñ.¬w¯}©}Ô=Ø �Ø#%Ð ØÐ$Ø—{’{Ø(2°2·7±7¸5¿;¹;×;MÑ;MÓ;OÓ3PÐ2QÐ&R˜Ø×'Ò'à-¨b¯g©g°e×6FÑ6F×6MÑ6MÓ6OÓ.PÐ-QÐRð )ô #×(Ñ(Ø#ØØØ$ô	ñ Ø×!Ñ! )Ô,Ø"×)Ñ)Ð*;Õ<ð r‰   Tr1   zcheck_no_aliasing(r»   rX  r   zcheck_overlapping(overlapping=[c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr¥   ©ra  ©r=  rÀ   s     r‡   r@  z8CheckFunctionManager.compile_check_fn.<locals>.<genexpr>o
  s   è ø€ Ò/\¸Q°·±·Ñ/\ùó   ‚z], non_overlapping=[c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr¥   r	  r
  s     r‡   r@  z8CheckFunctionManager.compile_check_fn.<locals>.<genexpr>p
  s   è ø€ Ò3dÀ°A·F±F·HÑ3dùr  z])zUnknown GuardEnvExpr: Údynamo_guardsc                 ó8   •— ‰D � cg c]	  }  | «       ‘Œ c} S c c} w r¥   r  )Úfr  s    €r‡   r$  z7CheckFunctionManager.compile_check_fn.<locals>.<lambda>†
  s   ø€ ÐBVÖ4W¸Q±QµSÒ4W€ ùÒ4Ws   †ré  )Ú___check_tensorsÚ___check_tensors_verboseÚ___check_global_stateÚ"___check_torch_function_mode_stackr¥  r   rá   )8r·  rM  rN  Ú$make_torch_function_mode_stack_guardrí  r¼   rx   Úadd_global_state_guardÚ#add_torch_function_mode_stack_guardr¼  rž  r˜  rµ   r•   r¹  r!  r   rº  rK  r¾  Útracing_contextÚguards_contextÚaotautograd_guardsrž   r!   Úinput_source_aÚinput_source_bra  r   r  r'   Úoverlapping_sourcesÚnon_overlapping_sourcesr   r*  r¸  rË   ró  rô  r3   Úinitial_global_stateÚGlobalStateGuardrî   r,   r<  r§   r°  rz   r{   r   r}   r~   r   r€   r�   rƒ   )r†   r÷  Ú
guards_outr   ÚlargsÚ"torch_function_mode_stack_check_fnr  ÚseenÚgclrž  r¹  Úcheck_tensors_fnÚcheck_tensors_verbose_fnr  rµ   Úsource_ar  rû   rÀ   Úoverlapping_guard_managersÚnon_overlapping_guard_managersÚglobal_staterz   rW  r|   r  r}   s                           @@@r‡   rð  z%CheckFunctionManager.compile_check_fnø	  sy  ú€ à× Ñ ˆØÐ'Ð(Ñ(ˆä×Ñ˜Ô#àˆ
ØÐØCEÐä-QØ×*Ñ*ó.
Ð*ð
 	×Ñ×Ñ×6Ñ6Ð8QÐ7RÔSà×Ñ×Ñ×CÑCØ×*Ñ*Ø3Ð4ô	
ð
 *.ˆÔ&÷'	=ôR ‹uˆØ—<‘<ò 	#ˆCØŸ™ò #�Ø˜tÒ#ñ " $¨¯	©	°4Ô8Ø—H‘H˜T•Nñ#ð	#ð $+×#CÑ#CÐ ØÐØ#'Ð äÐ'Ó(¨1Ò,ô -Ø×9Ñ9Ø(Ø%¨¯	©	Ð2JÓ(KÑKÈcÑQÐRôð × Ò ð ×Ñ×-Ñ-×<Ñ<×OÒOàð 	ð (ó  	EˆEÜ˜%¤Ô1Ø ×/Ñ/�Ø ×/Ñ/�Ø'Ÿ}™}›Ð/¨t°H·M±M³OÐ3DÐE�	Ü-Ø×9Ñ9¸(ÓCØ×9Ñ9¸(ÓCØ�Kôñ
 ˜i¨¨tÕ4Ü˜E¤>Ô2ð #×6Ñ6ö.àð ×9Ñ9¸!Õ<ð.Ð*ð .ð #×:Ñ:ö2àð ×9Ñ9¸!Õ<ð2Ð.ð 2ð
&Ø&*§i¡iÑ/\À%×B[ÑB[Ô/\Ó&\Ð%]ð ^*Ø*.¯)©)Ñ3dÀe×FcÑFcÔ3dÓ*dÐ)eÐegðkð ô
 2Ø.Ø2Ø�Kôñ
 ˜i¨¨tÖ4ä"Ð%;¸E¸7Ð#CÓDÐDðA 	EðH ×)Ñ)ò 	5ˆCØŸ™ò 5�ñ ˜d C§I¡I¨tÕ4ñ5ð	5ñ  Ü�N‰N×+Ñ+ØÓ,Wð ,ô ô %×9Ñ9ˆØÐä(×9Ñ9Ó;ˆLà 0Ø(@Ø%1×%7Ñ%7Ø2Tñ	
ô
 ð
ô  Ó!ð
ˆð 	×Ñ×#Ñ#Ô%à # W§]¡]°3Ñ%7Ð8Ðô �:‹ !Ò#Ð#Ð#à*6ˆ×ÑÔ'Ø"'ˆ×ÑÔØ×Ñ×<Ñ<Ô>Ø0Bˆ×ÑÔ-à*>ˆ×ÑÔ'Ø+8ˆ×ÑÔ(ð *.ˆ×ÑÔ&Ø)-ˆ×ÑÔ&Ø8Pˆ×ÑÕ5ùòG.ùò2s   È+Q ÉQ%c                óT  — t        | d«      rœt        | j                  t        «      s�| j                  j                  x}�h| j                  j
                  x}�Ot        |t        «      sJ ‚t        |t        «      sJ ‚d|› d�}t        |«      }|j                  ||«       || _        y y y y y )Nr¼   zCache line invalidated because z got deallocated)	rê   rž   r¼   rÒ  r€   r�   rW   rY   Ú
invalidate)r†   Úobj_strr€   r�   rÕ  Údeleted_guard_managers         r‡   r,  zCheckFunctionManager.invalidateª
  s·   € ô
 �D˜/Ô*Ü˜t×1Ñ1Ô3MÔNØ $× 2Ñ 2× >Ñ >Ð>�ÐKØ $× 2Ñ 2× >Ñ >Ð>�ÐKä˜k¬:Ô6Ð6Ð6Ü˜k¬:Ô6Ð6Ð6Ø6°w°iÐ?OÐPˆFÜ$>¸vÓ$FÐ!Ø×"Ñ" ;Ð0EÔFØ!6ˆDÕð Lð Lð Oð +r‰   c                ó:  — 	 t        |«      | j                  vr`t        j                  |«      | j                  t        |«      <   t        j                  |t        j                  | j                  |¬«      «       t        |«      S # t        $ r Y t        |«      S w xY w)zadd a weakref, return the id)r-  )	rÀ  rë  r�  rn  r§   Ú	functoolsÚpartialr,  Ú	TypeError)r†   r–  r-  s      r‡   r­  zCheckFunctionManager.id_ref»
  s€   € ð
	Ü�#‹w˜dŸn™nÑ,ô +2¯+©+°cÓ*:�—‘œr #›wÑ'Ü× Ñ Øœ×*Ñ*¨4¯?©?ÀGÔLôô
 �#‹wˆøô ò 	ØÜ�#‹wˆð	ús   ‚A7B Â	BÂBc                ób   — t        |«      | j                  v r| j                  t        |«         S y)zFLookup the _weakrefs created in id_ref function for ID_MATCH'd objectsN)rÀ  rë  )r†   r–  s     r‡   r¯  z$CheckFunctionManager.lookup_weakrefsÊ
  s(   € äˆc‹7�d—n‘nÑ$Ø—>‘>¤" S£'Ñ*Ð*Ør‰   )NNN)r   z%Optional[Callable[[GuardFail], None]])r´   râ   rã   rˆ   rð  r,  r­  r¯  r  r‰   r‡   rŽ  rŽ  g	  s6   „ ð ØØ?CðN!ð
 =óN!ò`pQòd7ò"ór‰   rŽ  c                ó  ‡	— ddl m} t        «       Š	‰	j                  | «       dˆ	fd„} |«       }| D ]]  } ||«      \  }}|j	                  |«       |j                  d|› d�«       |j                  «       5  |j                  d«       d d d «       Œ_  |«       }|j                  d«       |j                  «       5  |j                  |«       |j                  d«       d d d «        |«       }|j                  d	|› d�«       |j                  «       5  |j                  |«       |j                  d
«       d d d «       |j                  «       |j                  «       fS # 1 sw Y   �Œ4xY w# 1 sw Y   Œ�xY w# 1 sw Y   ŒBxY w)Nr   rÕ   c                ó&   •— ‰j                  | «      S r¥   )rA  )r­  Úcsepasss    €r‡   rA  z%build_guard_function.<locals>.replace×
  s   ø€ Ø�‰˜tÓ$Ð$r‰   zif not (z):zreturn Falsezdef guard(L):zreturn Truezdef ___make_guard_fn(zreturn guardrÅ  )	ré   rÖ   r“  rÀ  rÏ   rÃ   rÄ   Úsplicerë   )
r|   Úclosure_argsrÖ   rA  Ú
guard_bodyr­  r§  rµ   Úmake_guard_fnr6  s
            @r‡   rL  rL  Ñ
  sg  ø€ Ý4ä‹o€GØ‡M�M�*Ôõ%ñ
  Ó!€JØò 1ˆÙ ›‰ˆ�Ø×Ñ˜gÔ&Ø×Ñ˜x¨ v¨RÐ0Ô1Ø×ÑÓ ñ 	1Ø× Ñ  Ô0÷	1ð 	1ð	1ñ Ó€EØ	‡O�O�OÔ$Ø	�‰‹ñ 'Ø�‰�ZÔ Ø�‰˜Ô&÷'ñ #Ó$€MØ×ÑÐ3°L°>ÀÐDÔEØ	×	Ñ	Ó	ñ 0Ø×Ñ˜UÔ#Ø×Ñ Ô/÷0ð ×ÑÓ  -×"8Ñ"8Ó":Ð:Ð:÷%	1ñ 	1ú÷'ð 'ú÷0ð 0ús$   Á6EÂ:#E)Ä#E5ÅE&	Å)E2Å5E>c                 óh   — t         j                  j                  j                  j	                  d«      S )Nrq   ©rË   ró  Ú	_internalÚ	log_stateÚis_artifact_enabledr  r‰   r‡   Úis_recompiles_enabledr@  ö
  s#   € Ü�>‰>×#Ñ#×-Ñ-×AÑAÀ,ÓOÐOr‰   c                 óh   — t         j                  j                  j                  j	                  d«      S )Nrr   r<  r  r‰   r‡   Úis_recompiles_verbose_enabledrB  ú
  s$   € Ü�>‰>×#Ñ#×-Ñ-×AÑAÐBVÓWÐWr‰   c                óN   ‡— | D �cg c]  }t        |«      ‘Œ c}Šˆfd„}|S c c}w )Nc                 ó’   •— t        «       } t        | «      t        ‰«      k7  ryt        ‰| «      D ]  \  }}|t        |«      k7  sŒ y yr�  )ra   r!  rÐ   rY  )Ú	cur_stackÚtyÚmoderØ  s      €r‡   Úcheck_torch_function_mode_stackzMmake_torch_function_mode_stack_guard.<locals>.check_torch_function_mode_stack  sL   ø€ Ü1Ó3ˆ	äˆy‹>œS ›ZÒ'Øä˜E 9Ó-ò 	‰HˆB�Ø”T˜$“ZÓÙð	ð r‰   )rY  )Úintial_stackrð   rH  rØ  s      @r‡   r  r  ÿ
  s)   ø€ Ø*Ö+˜ŒT�!�WÒ+€Eô
ð +Ð*ùò ,s   †"c                ó`  — t        | j                  «      }t        j                  t        «      }| j
                  D ]1  }||d<   t        t        |||«      «      }||   j                  |«       Œ3 |D �cg c]  }t        ||   «      dkD  sŒ||   › ‘Œ }}dj                  |«      }d|› �gS c c}w )NÚ__compile_source__r1   r»   zDuplicate tensors found: )r!  r~   r1  rµ  rN  rƒ   rÀ  r[  rø   r!  rK  )	r¼   r°  r~   Úids_to_sourcerk  Ú	tensor_idrk  Úduplicate_tensorsrÕ  s	            r‡   Ú1recompilation_reason_for_no_tensor_aliasing_guardrO    sÈ   € Ü˜×2Ñ2Ó3€LÜ×+Ñ+¬DÓ1€MØ&×AÑAò 7ˆØ-:ˆÐ)Ñ*Ü”t˜M¨<¸Ó?Ó@ˆ	Ø�iÑ ×'Ñ'¨Õ6ð7ð ,9öØ$'¼CÀÈcÑ@RÓ<SÐVWÓ<Wˆ=˜ÑÐ
ÑðÐð ð �Y‰YÐ(Ó)€FØ'¨ xÐ0Ð1Ð1ùòs   Á3B+Â
B+c                ó4   — ddl }d}|j                  |d| «      S )z®
    Replace occurrences of L[...] with just the inner content.
    Handles both single and double quotes.

    This is to generate user friendly recompilation messages.
    r   NzL\[\s*['\"](.*?)['\"]\s*\]z\1)ÚreÚsub)rÀ   rQ  Úpatterns      r‡   Ústrip_local_scoperT  !  s   € ó à+€GØ�6‰6�'˜5 !Ó$Ð$r‰   c                óº  — || j                   d   dœ}|j                  | j                  «       g }d}g }| j                  |«      }|j                  s(|j
                  }t        |«      dk(  rd|d   v rd}n|}g }|rt        | |«      }n…|D ]€  }t        | j                   «      }	||	d<   t        «       5  	 t        ||	|«      }
	 d	d	d	«       t        
t        «      r|
s|}
t        |
t        «      sŒd|j!                  |
«       t        «       rŒ€ n |› d
�dj#                  |«      z   }t%        |«      S # t        $ r t        «       r
Y d	d	d	«       ŒÂ‚ w xY w# 1 sw Y   Œ‘xY w)z­
    Return the reason why `guard_manager` failed.
    Updates `guard_failures` with the generated reason.
    Only the first failed check of guard_manager is reported.
    r¥  r£  Fr1   zDuplicate tensor foundr   TrK  Nr²   z; )r~   rì  rz   rò   Úresultr}   r!  rO  r!  r/   r[  Ú	ExceptionrB  rž   ru  r‚  rø   rK  rT  )r¼   Úf_localsÚ
compile_idr°  rù  Úno_tensor_aliasing_check_failedr}   Úguard_debug_infor¸   r~   Úfail_reasonÚ
reason_strs               r‡   rñ  rñ  .  s�  € ð  ×!;Ñ!;¸CÑ!@ÑA€EØ	‡L�L�×+Ñ+Ô,Ø€Gà&+Ð#à$&ÐØ$×2Ñ2°8Ó<Ðð ×"Ò"Ø-×@Ñ@Ðô Ð!Ó" aÒ'Ø'Ð+=¸aÑ+@Ñ@Ø26Ñ/à,�Ø%'Ð"á&ÜCØ˜5ó
‰ð 'ò 	ˆDÜ × :Ñ :Ó;ˆLØ15ˆLÐ-Ñ.Ü/Ó1ñ ðÜ"& t¨\¸5Ó"A‘K÷ô ˜+¤tÔ,±[Ø"�Ü˜+¤sÕ+Ø—‘˜{Ô+Ü4Õ6Ùð'	ð* �<˜rÐ" T§Y¡Y¨wÓ%7Ñ7€JÜ˜ZÓ(Ð(øô! !ò Ü4Ô6Ø ÷ð ð ð	ú÷ð ús*   Â1EÂ3D/Ä/EÅEÅEÅEÅE	c                óP  — t        | t        «      r|› d| j                  › �S t        | ||«      }t        t
        |      j                  |«       	 | j                  �&| j                  t        |xs dt
        |   «      «       |S # t        $ r t        j                  d«       Y |S w xY w)Nr²   zunknown reasonzVFailure in guard_fail_fn callback - raising here will cause a NULL Error on guard eval)rž   rÒ  rÔ  rñ  rc   rh   rø   r   r[   rW  r_  r»  )r¼   rž  rX  rY  r]  s        r‡   Úget_guard_fail_reasonr_  q  s±   € ô �-Ô!;Ô<Ø�˜R × AÑ AÐBÐCÐCÜ-¨m¸XÀzÓR€JÜ”= Ñ&Ñ'×.Ñ.¨zÔ:ð
Ø×&Ñ&Ð2Ø×'Ñ'Ü˜*Ò8Ð(8¼-ÈÑ:MÓNôð Ðøô ò 
Ü�‰Ødõ	
ð Ðð
ús   Á2B ÂB%Â$B%c                óX  ‡— g Š| �Xt        | j                  | j                  |j                  | j                  «      }|r‰j                  |«       | j                  } | �ŒX|j                  }t        «       xs
 t        «       }|st        j                  ròt        «       r"dj                  d„ t        ‰«      D «       «      }n%t        j                  dj                  ‰«      d«      }d|› �}d|j                   › d|j"                  › d|j$                  › dt        j                  |d	«      › �}|r5t        «       rt&        j)                  |«       nt*        j)                  |«       t        j                  rt-        j.                  |«      ‚t0        j2                  j5                  d
d„ ˆfd„¬«       ‰S )zÒ
    Return the list of guard failure reasons using cache_entry.
    Logs the recompilation reason if `recompiles` logging is enabled.
    Raises a RecompileError if `config.error_on_recompile` is enabled.
    z

c              3  ó\   K  — | ]$  \  }}d |› d�t        j                  |d«      z   –— Œ& y­w)zguard z failures:
ú- N)rQ  rÄ   )r=  r>  rÕ  s      r‡   r@  z:get_and_maybe_log_recompilation_reasons.<locals>.<genexpr>¤  s5   è ø€ ò #á�A�vð ˜˜˜<Ð(¬8¯?©?¸6À4Ó+HÕHñ#ùs   ‚*,r>  rb  z-triggered by the following guard failure(s):
zRecompiling function z in ú:z    Úartifactc                 ó   — dddœS )NÚrecompile_reasonsÚjson)ra  Úencodingr  r  r‰   r‡   r$  z9get_and_maybe_log_recompilation_reasons.<locals>.<lambda>»  s   € Ø'Øñ
€ r‰   c                 ó   •— ‰ S r¥   r  )rù  s   €r‡   r$  z9get_and_maybe_log_recompilation_reasons.<locals>.<lambda>¿  s   ø€ ˜7€ r‰   )Úmetadata_fnrê  )r_  r¼   rž  rX  rY  rø   Únextr¬  r@  rB  r2   Úerror_on_recompilerK  rÑ  rQ  rÄ   r€  Úco_filenameÚco_firstlinenoÚrecompiles_verbose_logrN  Úrecompiles_logr4   ÚRecompileErrorrË   ró  rô  )	r€   ÚframerÕ  rž  Údo_recompiles_logÚfailuresÚguard_failure_detailsÚmessagerù  s	           @r‡   Ú'get_and_maybe_log_recompilation_reasonsrw  ‰  s�  ø€ ð €GØ
Ð
!Ü&Ø×%Ñ%Ø×ÑØ�N‰NØ×"Ñ"ó	
ˆñ Ø�N‰N˜6Ô"Ø!×&Ñ&ˆð Ñ
!ð �<‰<€Dô .Ó/ÒRÔ3PÓ3RÐáœF×5Ò5Ü(Ô*Ø—{‘{ñ #ä!*¨7Ó!3ô#ó ‰Hô
  —‘ t§y¡y°Ó'9¸4Ó@ˆHà<¸X¸JÐGð 	ð $ D§L¡L >°°d×6FÑ6FÐ5GÀqÈ×I\ÑI\ÐH]Ð]_Ü�‰Ð4°fÓ=Ð>ð@ð 	ñ Ü,Ô.Ü&×,Ñ,¨WÕ5ä×$Ñ$ WÔ-Ü×$Ò$Ü×$Ñ$ WÓ-Ð-ä	‡N�N×#Ñ#Øñ
ó #ð $ô ð €Nr‰   c                ó  — | }t        «       }| �8|j                  | j                  j                  «       «       | j                  } | �Œ8|} | �:|| j                  _        | j                  j                  «        | j                  } | �Œ:|S r¥   )r¼  rì  r¼   r£   rk  r…   r¦   )r€   Úfirst_cache_entryÚacc_diff_guard_sourcess      r‡   rì  rì  Å  s•   € Ø#Ðô
 !›UÐØ
Ð
!Ø×%Ñ%Ø×%Ñ%×@Ñ@ÓBô	
ð "×&Ñ&ˆð	 Ñ
!ð $€KØ
Ð
!Ø7Mˆ×!Ñ!Ô4Ø×!Ñ!×=Ñ=Ô?Ø!×&Ñ&ˆð Ñ
!ð "Ð!r‰   c                ó¸  — t        d|j                  › d|j                  › d|j                  › �«       t        ddj	                  | j
                  «      z   dz   «       t        ddj	                  | j                  «      «       t        | «       d|i| j                  ¥}| j                  D ]  }	 t        || j                  |«       Œ y #  t        d|› �«       Y Œ0xY w)	NzERROR RUNNING GUARDS ú rc  zlambda r»   z and
  r¤  zMalformed guard:
)
Úprintr€  rm  rn  rK  r{   r|   rz   r[  r~   )r¼   rž  rX  r^  ÚlastrÄ  rµ   s          r‡   Úguard_error_hookr  Þ  sÐ   € ô 
Ø
 §¡˜~¨Q¨t×/?Ñ/?Ð.@ÀÀ$×BUÑBUÐAVÐWôô 
ˆ)�d—i‘i × 2Ñ 2Ó3Ñ
3°cÑ
9Ô:Ü	ˆ#ˆz�‰˜}×7Ñ7Ó8Ô9ä	ˆ-Ôà˜Ð? M×$>Ñ$>Ð?€KØ×)Ñ)ò 0ˆð	0Ü�˜×2Ñ2°KÕ@ñ0øð	0ÜÐ& u gÐ.Ö/ús   Â-CÃCc              #  ób   K  — t        «       }| D ]  }||vsŒ|–— |j                  |«       Œ y ­wr¥   )r¼  r•   )Úseqr#  rð   s      r‡   Úuniquer‚  ø  s3   è ø€ Ü‹5€DØò ˆØ�DŠ=ØŠGØ�H‰H�Q�Kñùs   ‚/—/c                ó,  — |r’|| k7  r�t        |«      }t        | «      }t        |«      st        | «      r7t        j                  | j	                  «       › d|j	                  «       › d�«      ‚||k(  r%t        j                  t        j                  |¬«      S y )Nz is alising zC. This is not supported. Please do a clone for corresponding input.)r  )	r   r   r4   ÚUnsafeScriptObjectErrorra  r0  r1  r¡  r  )Ú
obj_sourceÚdupe_sourceÚser_source_is_localÚsource_is_locals       r‡   Úmake_dupe_guardr‰     s™   € ñ �{ jÒ0Ü2°;Ó?ÐÜ.¨zÓ:ˆÜ/Øô
ä1°*Ô=Ü×-Ñ-Ø—?‘?Ó$Ð% \°+×2BÑ2BÓ2DÐ1Eð F>ð ?óð ð  /Ò1ô ×$Ñ$¤\×%AÑ%AÈKÔXÐXØr‰   )Úskipc                óJ  — ddl m} t        j                  t        j
                  «      xs# t        j                  t        j
                  «      }|j                  «       j                  j                  j                  }|D ]"  }t        |t        «      sJ ‚ |||| dz   ¬«       Œ$ y)z«
    Add dynamo guards to the current tracing context.

    Args:
        guards: guard(s) to add
        skip: number of stack frames to ignore for debug stack trace
    r   )ÚTracingContextr1   )Úcollect_debug_stackrŠ  N)Útorch._guardsrŒ  rM  rÿ  r   r  rþ  rÁ  r  r  r•   rž   r"   )rŠ  rp   rŒ  r�  r•   rµ   s         r‡   Úinstall_guardr�  "  sŒ   € õ -ä$×1Ñ1Ü�‰óò 8ä	×	(Ñ	(¬¯©Ó	7ð ð ×
Ñ
Ó
×
-Ñ
-×
;Ñ
;×
?Ñ
?€CØò KˆÜ˜%¤Ô'Ð'Ð'ÙˆEÐ':ÀÈÁÖJñKr‰   )r–   r   r�  r‚  )rû   r‚  rµ   r"   r�  r‚  )r|   zUnion[str | list[str]]rµ   r"   r�  r—  )rž  rŒ  )r�  ztuple[str, str])rÀ   r‚  r�  r‚  )r¼   r\   rX  r�  rY  r    r�  r‚  )
r¼   r\   rž  rŒ  rX  r�  rY  r    r�  r‚  )rr  rX   r�  r—  )
r¼   r\   rž  rŒ  rX  r�  r^  r�  r~  ru  )Ër  Ú
__future__r   r?  r±  r1  rÉ  r‚  r0  r7  r  r   r4  rÚ  rQ  rØ  rÜ  r�  Ú
contextlibr   r³  r   r   Útypingr   r   r	   r
   r   r   rË   Útorch.overridesr  Útorch._C._dynamo.eval_framer   Útorch._C._dynamo.guardsr   r   r   r   r   r   r   r   r   r   Útorch._dynamo.sourcer   r   r   r   r   r   Útorch._dynamo.utilsr   rŽ  r   r    r!   r"   r#   r$   r%   r&   r'   Útorch._loggingr(   Útorch._utils_internalr)   Ú%torch.fx.experimental.symbolic_shapesr*   r+   r,   Útorch.utils._ordered_setr-   Útorch.utils._tracebackr.   r/   Útorch.utils.weakr0   rç   r2   r3   r4   r5   Ú
eval_framer6   r¾   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r9  r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ry  Únumpyr  ÚModuleNotFoundErrorÚsympyro   Ú	getLoggerr´   r_  ró  ÚgetArtifactLoggerrM  rp  ro  rþ  ru   r  Ú	lru_cacher  r  r<  rB  rÌ   rÍ   r]  rL  rO  rV  rh  rl  rq  rÊ  rt  rŽ  r”  r–  rƒ  r„  rŸ  r¡  r“  rÐ  rÒ  rŽ  rL  r@  rB  r  rO  rT  rñ  r_  rw  rì  r  r‚  r‰  r�  r  r‰   r‡   ú<module>r¥     sø  ðòõ" #ã 
Û Û Û Û Û Û Û Û Û Û 
Û Û Û Û Ý %Ý Ý  ß @Õ @Ý !ã Û Û Ý >÷÷ ÷ ÷÷ õ 3÷
÷ 
õ 
õ &Ý 1÷ñ õ
 0ß OÝ *ç 8Ó 8Ý ,÷!÷ !÷ !÷ !÷ !÷ !÷ !÷ !ó !÷D÷ ÷÷ ÷ ÷ õ ð* FJÐ ÐBÓ IðÛñ
 Ýð €g×Ò˜Ó!€Ø�^Š^×-Ò-¨h¸ÓA€
Ø—’×1Ò1°(¸LÓI€ØŸš×9Ò9ØÐ"óÐ ð —^’^×5Ò5°hÐ@PÓQÐ ÷^ñ ^òBTð €×Ò�TÓñ
.ó ð
.ð .2€Ð*Ó 1òó8/ð —h’h×&Ò&×:Ò:Ð ó
%ðQØ&ðQØ/4ðQàóQòòò3ò1ð €×Ò˜dÔ#÷!ð !ó $ð!ò&òR
Gð ×Ò÷ð ó ðô
�t—y’yô ð
 €×Ò�TÓò8ó ð8ôB
Ð#ô B
÷l4R8ñ R8òjô$Ð!4ô $÷gñ góT";òJPòXò
+ò$2ó 
%ð@)Øð@)àð@)ð ð@)ð 	ó	@)ðFØðà
ðð  ðð ð	ð
 	óð09Ø'ð9àó9òx"ð20Øð0à
ð0ð  ð0ð ð	0ð
 ó0ñ. Ð%Ô &òòðD !"õ KøðG\ ò Ø	ƒBðús   Æ N ÎNÎN