ó
    CC˜jÆ` ã            	       óÂ  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
JrJrJr  SSKJr  SSKJrJr  SSKrSSKrSSKJr  SSKJr  SSKJr  SS	KJr  S
SKJrJrJ r J!r!  S
SK"J#r#J$r$J%r%J&r&J'r'  S
SK(J)r)  S
SK*J+r+J,r,J-r-  S
SK.J/r/J0r0J1r1J2r2J3r3  S
SK J4r4J5r5J6r6J7r7J8r8  S
SK9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArA  S
SKBJCrC  \(       a  SSKDJErE  SSKFJGrG  SSKHJIrI  \R”                  R—                  \LS5      rM\Rœ                  " SS9 " S S5      5       rO\\O/\P4   rQ\\O/S4   rR\\R/\R4   rS\Rœ                  " SS9 " S S5      5       rT " S S5      rU\U" 5       rVS\TS \4S! jrWSS".S#\XS$\QS%\YS \S4S& jjrZS'\[\\4   S(\[\\4   S)\YS S4S* jr\S+\]\   S,\]\   S S4S- jr^S.\S/\S S4S0 jr_ " S1 S25      r`\Z" S3S4 S5S69S7\OS S4S8 j5       ra\Z" S9S: S;S69S7\OS S4S< j5       rb\Z" S=S> S?S69S7\OS S4S@ j5       rc\Z" SASB SCS69S7\OS S4SD j5       rd\Z" SESF SGS69S7\OS S4SH j5       reS7\OS S4SI jrfS7\OS S4SJ jrgS7\OS S4SK jrhSL\AS \P4SM jri\Z" SNSO SPS69S7\OS S4SQ j5       rj\Z" SRSS STS69S7\OS S4SU j5       rk\Z" SVSW SXS69S7\OS S4SY j5       rl\Z" SZS[ S\S69S7\OS S4S] j5       rm\RÜ                  S^S_S \S`   4Sa j5       ro\RÜ                  S^S_S \S`   4Sb j5       rp\RÜ                  S^S_S \S`   4Sc j5       rqg)daÛ  
Side effect tracking and management for TorchDynamo's compilation system.

This module provides infrastructure for tracking and managing side effects that occur
during symbolic execution, including:

- Tracking mutations to objects, attributes, and variables
- Managing context changes (cell variables, global namespace modifications)
- Handling aliasing and object identity preservation
- Managing stack frame state and local variable changes
- Tracking function calls with side effects

Key classes:
- SideEffects: Main container for tracking all side effects during execution
- MutableSideEffects: Specialization for mutable object tracking
- AttributeMutation/ValueMutation: Track specific types of mutations
- Various specialized side effect classes for different scenarios

The side effect system ensures that mutations performed during symbolic execution
are properly replayed during runtime, maintaining the correctness of compiled code
while enabling optimizations where safe.
é    N)ÚCallableÚ	GeneratorÚMutableMapping)ÚCellType)ÚAnyÚTYPE_CHECKING©ÚAutogradFunctionContextVariable)ÚRegistrationHandle)Ú
OrderedSet)Úis_structseq_classé   )ÚconfigÚgraph_break_hintsÚutilsÚ	variables)Úbytecode_from_templateÚcreate_call_functionÚcreate_call_methodÚcreate_instructionÚInstruction)Ú	PyCodegen)Úcollapse_resume_framesÚget_stack_above_dynamoÚunimplemented)Ú
AttrSourceÚGlobalSourceÚLocalCellSourceÚSourceÚTempLocalSource)Úis_frozen_dataclassÚis_namedtuple_clsÚis_pybind11_enum_memberÚnn_module_newÚ
object_new)ÚAttributeMutationÚAttributeMutationExistingÚAttributeMutationNewÚAttrMutationKindÚis_side_effect_safeÚValueMutationExistingÚValueMutationNewÚVariableTracker)ÚFrozenDataClassVariable)ÚOutputGraph)ÚInstructionTranslatorBase)ÚListVariableÚside_effectsT)Úfrozenc                   ó`   • \ rS rSr% S\S'   \\S'   \\S'   \\\      \S'   \	\/S4   \S'   S	r
g)
ÚSideEffectReplayContextéT   ÚSideEffectsr2   ÚcodegenÚvarÚsuffixesNÚlog© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r   r-   Úlistr   r   Ú__static_attributes__r<   ó    Ú¨C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\torch/_dynamo/side_effects.pyr5   r5   T   s7   ‡ àÓØÓØ	ÓØ�4˜Ñ$Ñ%Ó%Ø	�?Ð# TÐ)Ñ	*Ö*rD   r5   c                   óB   • \ rS rSr% \\S'   \\S'   \\S'   Sr\	\S'   Sr
g)	ÚSideEffectReplayHandleréd   ÚnameÚmatcherr8   r   Úpriorityr<   N)r=   r>   r?   r@   ÚstrrA   ÚSideEffectReplayMatcherÚSideEffectReplayCodegenrK   ÚintrC   r<   rD   rE   rG   rG   d   s   ‡ à
ƒIØ$Ó$Ø$Ó$Ø€HˆcÖrD   rG   c                   óH   • \ rS rSrS
S jrS\S\4S jrS\S\S-  4S jr	S	r
g)Ú_SideEffectReplayRegistryél   ÚreturnNc                 ó   • / U l         g ©N©Úhandlers©Úselfs    rE   Ú__init__Ú"_SideEffectReplayRegistry.__init__m   s	   € Ø79ˆ�rD   Úhandlerc                 ód   ^ ^• T R                   R                  T5        SUU 4S jjn[        U5      $ )Nc                  ó<   >• TR                   R                  T 5        g rU   )rW   Úremove)r\   rY   s   €€rE   Ú
deregisterÚ>_SideEffectReplayRegistry.register_handler.<locals>.deregisters   s   ø€ Ø�M‰M× Ñ  Õ)rD   ©rS   N)rW   Úappendr   )rY   r\   r`   s   `` rE   Úregister_handlerÚ*_SideEffectReplayRegistry.register_handlerp   s,   ù€ Ø�‰×Ñ˜WÔ%÷	*ð 	*ô " *Ó-Ð-rD   Úctxc                 óÞ  • U R                    Vs/ s H  o"R                  U5      (       d  M  UPM     nnU(       d  g UR                  S SS9  US   n[        U5      S:”  a‚  US   R                  UR                  :X  ae  U Vs/ s H*  o"R                  UR                  :X  d  M  UR
                  PM,     nn[        S[        UR                  5      R                   SU 35      eU$ s  snf s  snf )Nc                 ó   • U R                   $ rU   ©rK   ©r\   s    rE   Ú<lambda>Ú:_SideEffectReplayRegistry.lookup_handler.<locals>.<lambda>~   s
   € ¨×)9Ò)9rD   T)ÚkeyÚreverser   r   z)Ambiguous side effect replay handler for z: )
rW   rJ   ÚsortÚlenrK   rI   ÚRuntimeErrorÚtyper9   r=   )rY   rf   r\   ÚmatchesÚtopÚnamess         rE   Úlookup_handlerÚ(_SideEffectReplayRegistry.lookup_handlerx   sÚ   € ð +/¯-ª-ÓPª-˜w¿?¹?È3×;O—7©-ˆÐPÞØØ�‰Ñ9À4ˆÑHØ�a‰jˆÜˆw‹<˜!Ó ¨¡
× 3Ñ 3°s·|±|Ó Cá,3óÚ,3 ×7GÑ7GÈ3Ï<É<Ñ7W“�—”©Gð ð ô Ø;Ü˜Ÿ™“=×)Ñ)Ð*¨"¨U¨Gð5óð ð ˆ
ùò Qùòs   �C%¬C%ÂC*Â#C*rV   rb   )r=   r>   r?   r@   rZ   rG   r   rd   r5   rv   rC   r<   rD   rE   rQ   rQ   l   s6   † ô:ð.Ð(?ð .ÐDVô .ðØ*ðà	  4Ñ	'÷rD   rQ   r\   rS   c                 ó,   • [         R                  U 5      $ rU   )Ú_side_effect_replay_registryrd   rj   s    rE   Ú$_register_side_effect_replay_handlerrz   Ž   s   € ô (×8Ñ8¸ÓAÐArD   ri   rI   rJ   rK   c                 ó8   ^ ^^• S[         S[         4UU U4S jjnU$ )Nr8   rS   c           	      ó2   >• [        [        TTU TS95        U $ )N)rI   rJ   r8   rK   )rz   rG   )r8   rJ   rI   rK   s    €€€rE   Ú	decoratorÚ6register_side_effect_replay_handler.<locals>.decoratorš   s(   ø€ ô 	-Ü#ØØØØ!ñ	ô	
ð ˆrD   )rN   )rI   rJ   rK   r}   s   ``` rE   Ú#register_side_effect_replay_handlerr   ”   s%   ú€ ðÜ(ðä	 ÷ñ ð ÐrD   Ú	dict_fromÚdict_toÚ	mro_indexc                 ó¬   • [        U5      R                  U   nUR                  U5        U R                  5        H  u  pEUR	                  XU5        M     g rU   )rr   Ú__mro__ÚclearÚitemsÚ__setitem__)r€   r�   r‚   Ú
dict_classÚkÚvs         rE   Ú_manual_dict_setitemr‹   ª   sI   € ô �g“×&Ñ& yÑ1€JØ×Ñ�WÔØ—‘Ö!‰ˆØ×Ñ˜w¨1Ö-ò "rD   Ú	list_fromÚlist_toc                 óX   • [         R                  U5        [         R                  X5        g rU   )rB   r…   Úextend)rŒ   r�   s     rE   Ú_manual_list_updater�   ·   s   € Ü‡J�JˆwÔÜ‡K�K�Õ#rD   Ú
deque_fromÚdeque_toc                 ó€   • [         R                  R                  U5        [         R                  R                  X5        g rU   )ÚcollectionsÚdequer…   r�   )r‘   r’   s     rE   Ú_manual_deque_updater–   ¼   s,   € ô ×Ñ×Ñ˜HÔ%Ü×Ñ×Ñ˜XÕ2rD   c                   ó¤  ^ • \ rS rSr% Sr\\\4   \S'   \\\\	\4   4   \S'   \\\\	\
4   4   \S'   \\   \S'   \\\\R                     4   \S'          SrS	S
S\\\4   S-  S\\\\	\4   4   S-  S\\\\	\
4   4   S-  S\\\\R                     4   S-  S\\   S-  S\\\\\   4      S-  S\\\S\S\	4   4   S-  SS4U 4S jjjrS\SS4S jrS\SS4S jr\R*                  S\S   4S j5       rS\S\	S\S\4S jrSsS jrS\SS4S jrS\S\4S jrSS S\	S-  4S jrStS  jrS\S\4S! jrS\S\4S" jr S\4S# jr!S\4S$ jr"S\4S% jr#S\SS4S& jr$S\S\4S' jr%\
RL                  S4S\S\	S\S(\
S)\'S-  SS4S* jjr(S\S\	S\SS4S+ jr)S\S\	S\
4S, jr*  SuS\S\	S-\S.\S\4
S/ jjr+S0\S\SS4S1 jr,S0\S\4S2 jr-S3\S\	S\4S4 jr.S3\S\	S\SS4S5 jr/\0S6\1S\4S7 j5       r2S\S\4S8 jr3S\S\4S9 jr4 SvS\S\	S:\
\\
S;4   -  S-  S\4S< jjr5S\S\4S= jr6\74S\S>\S?\1S\4S@ jjr8\8r9S\S>\S\4SA jr:S>\SS4SB jr;SC\'S-  SD\<SE\<SF\\	\<4   S\4
SG jr=SD\1S\14SH jr>SI\SJ\SK\\   S\<4SL jr?SSM.SI\SJ\SK\\   SNSOS\4
SP jjr@S\4SQ jrASR\'S-  SS\BST\S\4SU jrCSR\'S\S\4SV jrDSW\SX\\   SS4SY jrE    SwSZ jrFSxS[ jrGS\SS4S\ jrHS\4S] jrIS\\   4S^ jrJS_\KSS4S` jrLSaSSb\ScSS\	SS4
Sd jrMSe\SS4Sf jrNS_\KSS4Sg jrOSySh jrPS\S\	4Si jrQSj\\	   SS4Sk jrR SzS_\KSl\SS4Sm jjrSSsSn jrTS\4So jrUSsSp jrVSqrWU =rX$ ){r7   éÃ   a0  
Maintain records of mutations and provide methods to apply them during code generation.

Handles tracking and applying side effects during PyTorch Dynamo compilation,
maintaining Python semantics by managing mutations, attribute modifications,
and other side effects that occur during program execution.

Key responsibilities:
- Tracks mutations to Python objects, lists, and dictionaries that need to be
applied after an FX graph is run.
- Manages attribute modifications and deletions
- Handles tensor hooks and backward pass state
- Tracks cell variable mutations and global variable changes
- Ensures correct ordering and application of side effects after graph execution

This ensures that optimized code behaves identically to the original Python code with
respect to object mutations and other side effects.
Úid_to_variableÚstore_attr_mutationsÚattr_mutation_kindsÚ	keepaliveÚmutation_user_stacksNÚoutput_graphr/   Úsave_for_backwardÚtensor_hookszvariables.TensorVariablez!variables.RemovableHandleVariablerS   c	                 óž  >• [         T	U ]  5         [        R                  " U5      U l        U=(       d    0 U l        U=(       d    0 U l        U=(       d    0 U l        U=(       d    0 U l        U=(       d    / U l	        U=(       d    / U l
        U=(       d    0 U l        SU l        S U l        [        5       U l        [!        5       U l        0 U l        g )NF)ÚsuperrZ   ÚweakrefÚrefÚoutput_graph_weakrefr™   rš   r›   r�   rœ   rŸ   r    Ú_has_existing_dict_mutationÚca_final_callbacks_varÚsetÚ"ignore_mutation_on_these_variablesr   Úmutated_sourcesÚdeferred_attr_mutations)
rY   rž   r™   rš   r›   r�   rœ   rŸ   r    Ú	__class__s
            €rE   rZ   ÚSideEffects.__init__Þ   sµ   ø€ ô4 	‰ÑÔÜ$+§K¢K°Ó$=ˆÔ!Ø,×2°ˆÔØ$8×$>¸BˆÔ!Ø#6×#<¸"ˆÔ Ø$8×$>¸BˆÔ!Ø"Ÿ bˆŒØ!2×!8°bˆÔØ(×.¨BˆÔð ,1ˆÔ(ð <@ˆÔ#ô ILËˆÔ/ô 4>³<ˆÔð
 VXˆÕ$rD   r9   c                 ó:   • U R                   R                  U5        g)z|Mutations to this variable will be executed but not tracked,
typically used for temporary mutations that are later restored.N)r©   Úadd©rY   r9   s     rE   Úignore_mutations_onÚSideEffects.ignore_mutations_on  s   € ð 	×/Ñ/×3Ñ3°CÕ8rD   c                 óZ   • XR                   ;   a  U R                   R                  U5        gg)zQRemove a variable from the skip mutation set, restoring normal mutation tracking.N)r©   r_   r°   s     rE   Ústop_ignoring_mutations_onÚ&SideEffects.stop_ignoring_mutations_on  s'   € à×9Ñ9Ó9Ø×3Ñ3×:Ñ:¸3Õ?ð :rD   ©NNNc              #   ó~   #   • U R                   n0 U l          Sv •  U R                  5         Xl         g! Xl         f = f7f)u  Defer outer-scope attribute mutation checks until tracing completes.

Context managers that flip-flop a flag (set on enter, restore on exit)
produce no net side effect. Instead of failing immediately, we track
original and current values, then validate they match after tracing.

Note: this context only validates that mutations were nullified â€” it
does NOT roll back store_attr_mutations. Callers must restore
side_effects separately (e.g., via prev_side_effects pattern) to
discard the mutations after the HOP.
N)r«   Ú validate_deferred_attr_mutations)rY   Úsaveds     rE   Údefer_side_effect_checksÚ$SideEffects.defer_side_effect_checks#  s:   é € ð ×,Ñ,ˆØ')ˆÔ$ð	1ÛØ×1Ñ1Ô3à+0Õ(ø¨5Õ(üs   ‚=—2 «=²:º=ÚitemrI   Úvaluec                 óÆ  • [        U5      U4nUR                  5       (       d  [        S5      eUR                  5       nX@R                  ;   a  U R                  U   S   nObU R                  5       nUc  [        S5      eUR                  n UR                  X‚5      n	U	R                  5       (       d  gU	R                  5       nXe4U R                  U'   g! [         a     gf = f)u  Record an attribute mutation for deferred validation.

Returns True if successfully deferred, False if we cannot read the
original value (tp_getattro_impl raises NotImplementedError) or the
original is not a python constant â€” caller should fall back to
check_allowed_side_effect.
zAvalue must be a python constant (guaranteed by caller store_attr)r   zoutput_graph weakref is deadFT)	ÚidÚis_python_constantÚAssertionErrorÚas_python_constantr«   r¥   Ú
current_txÚtp_getattro_implÚNotImplementedError)
rY   r¼   rI   r½   rm   ÚcurrentÚoriginalrž   ÚtxÚoriginal_vts
             rE   Úsnapshot_attr_mutationÚ"SideEffects.snapshot_attr_mutation8  sî   € ô �$‹x˜ÐˆØ×'Ñ'×)Ñ)Ü ØSóð ð ×*Ñ*Ó,ˆØ×.Ñ.Ó.Ø×3Ñ3°CÑ8¸Ñ;‰Hà×4Ñ4Ó6ˆLØÑ#Ü$Ð%CÓDÐDØ×(Ñ(ˆBðØ"×3Ñ3°BÓ=�ð ×1Ñ1×3Ñ3ØØ"×5Ñ5Ó7ˆHØ-5Ð,?ˆ×$Ñ$ SÑ)Øøô 'ó Ùðús   ÂC Ã
C ÃC c                 óº   • U R                   R                  5        H=  u  u  pu  p4X4:w  d  M  [        SSU S3SU SU< SU< S3/ [        R                  QS9  M?     g)	z;Check that all deferred attribute mutations were nullified.zHOP: Non-nullified side effectzAttribute 'z(' was not restored to its original valuez,' on an outer-scope object was changed from z to zý inside a higher-order op subgraph. Dynamo only supports mutations that are undone before the subgraph exits (e.g., context managers that save/restore a flag). If you intentionally want this side effect, move the mutation outside of the higher-order op.©Úgb_typeÚcontextÚexplanationÚhintsN)r«   r†   r   r   ÚFUNDAMENTAL)rY   Ú_rI   rÇ   rÆ   s        rE   r¸   Ú,SideEffects.validate_deferred_attr_mutationsY  sv   € à.2×.JÑ.J×.PÑ.PÖ.RÑ*‰IˆQÑ*˜ØÕ"ÜØ<Ø)¨$¨Ð/WÐXØ"-¨d¨Vð 4$Ø$,¡<¨t°G±;ð ?'ð!'ð ;Ô-×9Ñ9Ð:ôò /SrD   rm   c                 óò   • [         R                  S:X  a  gXR                  ;  a  / U R                  U'   U R                  U   R                  [        R
                  R                  R                  5       5        g)z?Capture the current user stack from the instruction translator.ÚsilentN)r   Úside_effect_replay_policyr�   rc   ÚtorchÚ_guardsÚTracingContextÚextract_stack)rY   rm   s     rE   Ú_capture_user_stackÚSideEffects._capture_user_stackj  s^   € ä×+Ñ+¨xÓ7ØØ×/Ñ/Ó/Ø-/ˆD×%Ñ% cÑ*Ø×!Ñ! #Ñ&×-Ñ-Ü�M‰M×(Ñ(×6Ñ6Ó8õ	
rD   Úotherc                 óŒ  • [        U[        5      (       d  [        S[        U5       35      eU R                  UR                  :H  =(       ay    U R
                  UR
                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ )NzExpected SideEffects, got )	Ú
isinstancer7   rÁ   rr   r™   rš   r›   rŸ   r    )rY   rÞ   s     rE   Ú__eq__ÚSideEffects.__eq__t  s©   € Ü˜%¤×-Ñ-Ü Ð#=¼dÀ5»k¸]Ð!KÓLÐLð ×Ñ 5×#7Ñ#7Ñ7÷ 8Ø×)Ñ)¨U×-GÑ-GÑG÷8à×(Ñ(¨E×,EÑ,EÑE÷8ð ×&Ñ&¨%×*AÑ*AÑA÷8ð ×!Ñ! U×%7Ñ%7Ñ7ð	
rD   c                 ó  • U R                   UR                   :w  aB  U R                   R                  5       nUR                   R                  5       nX#:w  a  SU SU 3$ gU R                  UR                  :w  aB  U R                  R                  5       nUR                  R                  5       nXE:w  a  SU SU 3$ gU R                  UR                  :w  a  gU R                  UR                  :w  a  gU R
                  UR
                  :w  a  gg )	Nzid_to_variable keys: z != zid_to_variable: unknown diffzstore_attr_mutations keys: z"store_attr_mutations: unknown diffz!attr_mutation_kinds: unknown diffrŸ   r    )r™   Úkeysrš   r›   rŸ   r    )rY   rÞ   Úsk_itvÚok_itvÚsk_samÚok_sams         rE   ÚdiffÚSideEffects.diff€  sü   € Ø×Ñ %×"6Ñ"6Ó6Ø×(Ñ(×-Ñ-Ó/ˆFØ×)Ñ)×.Ñ.Ó0ˆFØÓØ.¨v¨h°d¸6¸(ÐCÐCð 2Ø×&Ñ&¨%×*DÑ*DÓDØ×.Ñ.×3Ñ3Ó5ˆFØ×/Ñ/×4Ñ4Ó6ˆFØÓØ4°V°H¸DÀÀÐIÐIØ7Ø×%Ñ%¨×)BÑ)BÓBØ6Ø×#Ñ# u×'>Ñ'>Ó>Ø&Ø×Ñ %×"4Ñ"4Ó4Ø!àrD   c                 óæ  • U R                  5       nUc  [        S5      eU R                  U[        U R                  5      U R
                  R                  5        VVs0 s H  u  p#U[        U5      _M     snnU R                  R                  5        VVs0 s H  u  p#U[        U5      _M     snnU R                  [        U R                  5      U R                  U R                  S9$ s  snnf s  snnf )zCreate a shallow copyz)output_graph weakref is dead during clone)rž   r™   rš   r›   r�   rœ   rŸ   r    )r¥   rÁ   r¬   Údictr™   rš   r†   r›   r�   rB   rœ   rŸ   r    )rY   r¤   r‰   rŠ   s       rE   ÚcloneÚSideEffects.clone˜  sß   € à×'Ñ'Ó)ˆØ‰;Ü Ð!LÓMÐMØ�~‰~ØÜ × 3Ñ 3Ó4à'+×'@Ñ'@×'FÑ'FÔ'Hô"Ú'H™t˜q�”4˜“7’
Ñ'Hò"ð (,×'?Ñ'?×'EÑ'EÔ'Gô!Ú'G™t˜q�”4˜“7’
Ñ'Gò!ð "&×!:Ñ!:Ü˜4Ÿ>™>Ó*Ø"×4Ñ4Ø×*Ñ*ð ð 
ð 	
ùó"ùó!s   ÁC'ÂC-c                 ó2   • [        U5      U R                  ;   $ rU   )r¿   r™   ©rY   r¼   s     rE   Ú__contains__ÚSideEffects.__contains__¬  s   € Ü�$‹x˜4×.Ñ.Ñ.Ð.rD   c                 ó2   • U R                   [        U5         $ rU   )r™   r¿   rð   s     rE   Ú__getitem__ÚSideEffects.__getitem__¯  s   € Ø×"Ñ"¤2 d£8Ñ,Ð,rD   c                 óš   • U R                  5       n[        U=(       a*    UR                  R                  R                  R
                  5      $ rU   )r¥   ÚboolrÃ   ÚoutputÚcurrent_tracerÚ,unsafe_allow_externally_visible_side_effects©rY   rž   s     rE   Ú9should_allow_externally_visible_side_effects_in_subtracerÚESideEffects.should_allow_externally_visible_side_effects_in_subtracer²  sA   € Ø×0Ñ0Ó2ˆÜØ÷ kØ×'Ñ'×.Ñ.×=Ñ=×jÑjó
ð 	
rD   c                 óš   • U R                  5       n[        U=(       a*    UR                  R                  R                  R
                  5      $ rU   )r¥   r÷   rÃ   rø   rù   Úallow_side_effects_in_hoprû   s     rE   Ú should_allow_side_effects_in_hopÚ,SideEffects.should_allow_side_effects_in_hop¹  sA   € Ø×0Ñ0Ó2ˆÜØ÷ XØ×'Ñ'×.Ñ.×=Ñ=×WÑWó
ð 	
rD   c                 óš   • U R                  5       n[        U=(       a*    UR                  R                  R                  R
                  5      $ rU   )r¥   r÷   rÃ   rø   rù   Úis_reconstructing_generatorrû   s     rE   r  Ú'SideEffects.is_reconstructing_generatorÀ  sA   € Ø×0Ñ0Ó2ˆäØ÷ ZØ×'Ñ'×.Ñ.×=Ñ=×YÑYó
ð 	
rD   c                 ó<  • UR                   b�  [        UR                   5      (       dt  U R                  5       nU(       a\  UR                  R                  R
                  nUR                  c.  [        R                  R                  R                  5       Ul        ggggg)zFRecord the first externally-visible side effect on the current tracer.N)Úmutation_typer*   r¥   rÃ   rø   rù   Úside_effect_stackrØ   rÙ   rÚ   rÛ   )rY   r¼   rž   Útracers       rE   Ú_maybe_record_side_effectÚ%SideEffects._maybe_record_side_effectÈ  sŠ   € à×ÑÑ)Ô2EØ×Ñ÷3
ñ 3
ð  ×4Ñ4Ó6ˆLÞØ%×0Ñ0×7Ñ7×FÑF�Ø×+Ñ+Ñ3äŸ™×4Ñ4×BÑBÓDð Õ,ð 4ð ð	3
Ð)rD   c                 óÄ  • SSK Jn  [        X5      (       a  gU R                  5       (       a  U R	                  U5        gU R                  5       (       a  U R	                  U5        gU R                  5       (       a   [        SSU 3SS/[        R                  QS9  UR                  c  [        S	U S
35      e[        UR                  5      (       d  [        SSU 3SS/S9  g)Nr   r	   Tz'Generator reconstruction with mutationszmutating object: z—Cannot reconstruct a generator with variable mutations. Dynamo needs to fully exhaust the generator, which may cause unintended variable modifications.z$Remove mutations from the generator.rÍ   úmutation_type is None for z in check_allowed_side_effectzHOP: Unsafe side effectzAttempted to mutate zHMutating a variable from outside the scope of this HOP is not supported.aw  If the HOP is activation checkpointing (torch.utils.checkpoint.checkpoint), this points to a side effect in forward method. Eager activation checkpointing replays that side-effect while recomputing the forward in the backward. If you are ok with side-effect not replayed in the backward, try setting `torch._dynamo.config.skip_fwd_side_effects_in_bwd_under_checkpoint = True`F)Útorch._dynamo.variables.miscr
   rà   rü   r	  r   r  r   r   rÒ   r  rÁ   r*   )rY   r¼   r
   s      rE   Úcheck_allowed_side_effectÚ%SideEffects.check_allowed_side_effectÕ  sû   € ÝPô �d×<Ñ<ØØ×IÑI×KÑKØ×*Ñ*¨4Ô0ØØ×0Ñ0×2Ñ2Ø×*Ñ*¨4Ô0ØØ×+Ñ+×-Ñ-ô ØAØ+¨D¨6Ð2ð5ð ;ðä&×2Ñ2ðò
ð ×ÑÑ%Ü Ø,¨T¨FÐ2OÐPóð ô # 4×#5Ñ#5×6Ñ6ÜØ1Ø.¨t¨fÐ5Øfðxðò	
ð rD   Úmutation_kindÚmutated_sourcec                 óF  • U R                  U5      (       d  [        SU S35      eSn[        UR                  [        5      (       a€  [        UR                  5      (       df  [        U[        5      (       dQ  U R                  5       (       d<  U R                  5       (       d'  UR                  5       (       a  U R                  XU5      nU(       d  U R                  U5        XR                  ;  a  0 U R                  U'   XR                  ;  a  0 U R                  U'   X0R                  U   U'   X@R                  U   U'   U R                  U5        Ub  U R                  R!                  U5        g [#        USS 5      nUb%  U R                  R!                  [%        Xr5      5        g g )Nú Expected attribute mutation for z in store_attrFÚsource)Úis_attribute_mutationrÁ   rà   r  r'   r*   r
   r   rü   rÀ   rÊ   r  rš   r›   rÜ   rª   r¯   Úgetattrr   )rY   r¼   rI   r½   r  r  ÚdeferredÚitem_sources           rE   Ú
store_attrÚSideEffects.store_attr  sp  € ð ×)Ñ)¨$×/Ñ/Ü Ø2°4°&¸ÐGóð ð ˆä�t×)Ñ)Ô+D×EÑEÜ'¨×(:Ñ(:×;Ñ;Ü˜tÔ%D×EÑEØ×9Ñ9×;Ñ;Ø×RÑR×TÑTØ×(Ñ(×*Ñ*à×2Ñ2°4¸uÓEˆHÞØ×*Ñ*¨4Ô0Ø×0Ñ0Ó0Ø.0ˆD×%Ñ% dÑ+Ø×/Ñ/Ó/Ø-/ˆD×$Ñ$ TÑ*Ø05×!Ñ! $Ñ'¨Ñ-Ø/<× Ñ  Ñ& tÑ,à× Ñ  Ô&ØÑ%Ø× Ñ ×$Ñ$ ^Õ4ä! $¨°$Ó7ˆKØÑ&Ø×$Ñ$×(Ñ(¬°KÓ)FÕGð 'rD   c                 óX  • [        U[        R                  5      (       dj  U R                  R	                  U0 5      R	                  U5      n[        U[        R                  5      (       a   U R                  U   U	 U R
                  U   U	 U R                  XU[        R                  5        g rU   )	rà   r   ÚDeletedVariablerš   Úgetr›   r  r)   ÚINSTANCE_DICT)rY   r¼   rI   r½   Úexistings        rE   Ústore_instance_dict_attrÚ$SideEffects.store_instance_dict_attr,  sŒ   € ô ˜%¤×!:Ñ!:×;Ñ;Ø×0Ñ0×4Ñ4°T¸2Ó>×BÑBÀ4ÓHˆHÜ˜(¤I×$=Ñ$=×>Ñ>ð ×-Ñ-¨dÑ3°DÐ9Ø×,Ñ,¨TÑ2°4Ð8Ø�‰˜ EÔ+;×+IÑ+IÕJrD   c                 óä   • X R                   R                  US5      ;  a  [        R                  $ X R                  R                  US5      ;  a  [        SU SU 35      eU R                  U   U   $ )Nr<   z$Missing attribute mutation kind for Ú.)rš   r  r)   ÚGENERIC_SETATTRr›   rÁ   )rY   r¼   rI   s      rE   Úget_attr_mutation_kindÚ"SideEffects.get_attr_mutation_kind?  sq   € ð ×0Ñ0×4Ñ4°T¸2Ó>Ó>Ü#×3Ñ3Ð3Ø×/Ñ/×3Ñ3°D¸"Ó=Ó=Ü Ð#GÈÀvÈQÈtÈfÐ!UÓVÐVØ×'Ñ'¨Ñ-¨dÑ3Ð3rD   Ú
deleted_okÚcheckc                 ó  • U(       a%  U R                  U5      (       d  [        SU S35      eU R                  U   U   nU(       dA  [        U[        R
                  5      (       a"  [        SSU SU 3S/ [        R                  QS9  U$ )Nr  z in load_attrz$Attempted to read a deleted variablezitem: z, name: Ú rÍ   )	r  rÁ   rš   rà   r   r  r   r   Ú
USER_ERROR)rY   r¼   rI   r'  r(  Úresults         rE   Ú	load_attrÚSideEffects.load_attrH  s‘   € ö Ø×-Ñ-¨d×3Ñ3Ü$Ø6°t°f¸MÐJóð ð ×*Ñ*¨4Ñ0°Ñ6ˆÞœj¨´×1JÑ1J×KÑKÜØ>Ø    h¨t¨fÐ5ØØ5Ô)×4Ñ4Ð5ò	ð ˆrD   Úcellvarc                 ót  • UR                  5       (       a"  [        SSU SU 3S/ [        R                  QS9  [	        U[
        R                  5      (       d  [        S[        U5       S35      e[	        U[
        R                  5      (       d  [        S[        U5       S35      eU R                  US	U5        g )
NzWrite to immutable cellz	cellvar: z	, value: zFDynamo doesn't support writing to immutable/sourceless cell variables.rÍ   úExpected CellVariable, got z in store_cellúExpected VariableTracker, got Úcell_contents)Úis_immutabler   r   Ú	DIFFICULTrà   r   ÚCellVariablerÁ   rr   r-   r  )rY   r/  r½   s      rE   Ú
store_cellÚSideEffects.store_cell^  s´   € Ø×Ñ×!Ñ!ÜØ1Ø# G 9¨I°e°WÐ=ØdØ4Ô)×3Ñ3Ð4ò	ô ˜'¤9×#9Ñ#9×:Ñ:Ü Ø-¬d°7«m¨_¸NÐKóð ô ˜%¤×!:Ñ!:×;Ñ;Ü Ø0´°e³°¸^ÐLóð ð 	�‰˜ °%Õ8rD   c                 ó  • [        U[        R                  5      (       d  [        S[	        U5       S35      eU R                  5       nU(       aS  [        USS 5      nUbC  UR                  R                  R                  R                  R                  [        US5      5        U R                  US5      (       a  U R                  USSS9$ UR                  (       a  UR                  $ [!        S[#        U5      S/ [$        R&                  QS	9  g )
Nr1  z in load_cellr  r3  F)r(  zRead uninitialized cellzBAttempted to read a cell variable that has not been populated yet.rÍ   )rà   r   r6  rÁ   rr   r¥   r  rÃ   rø   rù   Útraced_sourcesr¯   r   Úhas_pending_mutation_of_attrr-  Úpre_existing_contentsr   rL   r   r+  )rY   r/  rž   Úcell_sources       rE   Ú	load_cellÚSideEffects.load_cellp  sì   € Ü˜'¤9×#9Ñ#9×:Ñ:Ü Ø-¬d°7«m¨_¸MÐJóð ð ×0Ñ0Ó2ˆÞÜ! '¨8°TÓ:ˆKØÑ&Ø×'Ñ'×.Ñ.×=Ñ=×LÑL×PÑPÜ˜{¨OÓ<ôð ×,Ñ,¨W°o×FÑFØ—>‘> '¨?À%�>ÐHÐHØ×(×(Ø×0Ñ0Ð0ÜØ-Ü˜“LØ\Ø1Ô%×0Ñ0Ð1ó		
rD   Úgvarc                 óD  • [        U[        R                  5      (       d  [        S[	        U5       S35      eU R                  5       nU(       aB  UR                  R                  R                  R                  R                  [        U5      5        U R                  X5      $ )Nr2  z in load_global)rà   r   r-   rÁ   rr   r¥   rÃ   rø   rù   r:  r¯   r   r-  )rY   r@  rI   rž   s       rE   Úload_globalÚSideEffects.load_globalŠ  s„   € Ü˜$¤	× 9Ñ 9×:Ñ:Ü Ø0´°d³°¸OÐLóð ð ×0Ñ0Ó2ˆÞØ×#Ñ#×*Ñ*×9Ñ9×HÑH×LÑLÜ˜TÓ"ôð �~‰~˜dÓ)Ð)rD   c                 ó  • [        U[        R                  5      (       d  [        S[	        U5       S35      e[        U[        R                  5      (       d  [        S[	        U5       S35      eU R                  XU[        U5      S9  g )Nz'Expected VariableTracker for gvar, got z in store_globalz(Expected VariableTracker for value, got )r  )rà   r   r-   rÁ   rr   r  r   )rY   r@  rI   r½   s       rE   Ústore_globalÚSideEffects.store_globalš  s�   € ô ˜$¤	× 9Ñ 9×:Ñ:Ü Ø9¼$¸t»*¸ÐEUÐVóð ô ˜%¤×!:Ñ!:×;Ñ;Ü Ø:¼4À»;¸-ÐGWÐXóð ð 	�‰˜ E¼,ÀtÓ:LˆÒMrD   Úclsc                 óx  • [         R                  " U SS 5      [        R                  [        R                  [
        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  R                  [        R                  4
;   $ )NÚ__getattribute__)ÚinspectÚgetattr_staticÚobjectrI  rì   r¨   Ú	frozensetrO   rL   rB   Útupler”   r•   ÚBaseException)rG  s    rE   Ú"cls_supports_mutation_side_effectsÚ.SideEffects.cls_supports_mutation_side_effects«  s…   € ä×%Ò% cÐ+=¸tÓDÜ×#Ñ#Ü×!Ñ!Ü× Ñ Ü×&Ñ&Ü× Ñ Ü× Ñ Ü×!Ñ!Ü×"Ñ"Ü×Ñ×.Ñ.Ü×*Ñ*ðI
ñ 
ð 	
rD   c                 ó6   • [        UR                  [        5      $ rU   )rà   r  r&   rð   s     rE   r  Ú!SideEffects.is_attribute_mutationº  s   € Ü˜$×,Ñ,Ô.?Ó@Ð@rD   c                 óz   • U R                  U5      =(       a$    [        U R                  R                  U5      5      $ rU   )r  r÷   rš   r  rð   s     rE   Úhas_pending_mutationÚ SideEffects.has_pending_mutation½  s5   € Ø×)Ñ)¨$Ó/÷ 
´DØ×%Ñ%×)Ñ)¨$Ó/ó5
ð 	
rD   Úmutation_kinds.c                 óÐ   • U R                  U5      (       a  X R                  R                  US5      ;   d  gUc  gU R                  X5      n[	        U[
        5      (       a  XCL $ XC;   $ )Nr<   FT)r  rš   r  r%  rà   r)   )rY   r¼   rI   rW  r  s        rE   r;  Ú(SideEffects.has_pending_mutation_of_attrÂ  sj   € ð ×&Ñ& t×,Ñ,Ø×1Ñ1×5Ñ5°d¸BÓ?Ó?àØÑ!ØØ×3Ñ3°DÓ?ˆÜ�nÔ&6×7Ñ7Ø Ð2Ð2ØÑ.Ð.rD   c                 ó°  • UR                  5       (       a  g[        UR                  [        [        45      (       a  g[        U[
        R                  5      (       a&  XR                  ;   =(       d    UR                  U 5      $ U R                  U5      (       a  XR                  ;   $ UR                  c  [        SU S35      eUR                  R                  $ )NFTr  z in is_modified)r4  rà   r  r(   r,   r   ÚUserDefinedObjectVariablerš   Úis_base_vt_modifiedr  rÁ   Úis_modifiedrð   s     rE   r]  ÚSideEffects.is_modifiedÔ  s·   € Ø×Ñ×ÑØÜ�d×(Ñ(Ô+?ÔAQÐ*R×SÑSØä�dœI×?Ñ?×@Ñ@à×4Ñ4Ñ4×V¸×8PÑ8PÐQUÓ8VÐVà×%Ñ% d×+Ñ+Ø×4Ñ4Ñ4Ð4Ø×ÑÑ%Ü Ð#=¸d¸VÀ?Ð!SÓTÐTØ×!Ñ!×-Ñ-Ð-rD   ÚvariableÚmutation_type_clsc           
      ó0  • [        U5      U R                  ;   a>  [        U SUR                   SU R                  [        U5         R                   S35      eU" 5       Ul        X R                  [        U5      '   U R
                  R                  U5        U$ )z7Start tracking an existing or new variable for mutationz“ is already tracked for mutation. This could be because you are not using VariableBuilder to construct the variable tracker. Source of new object: z'. Source of previously tracked object: r#  )r¿   r™   rÁ   r  r  rœ   rc   )rY   r¼   r_  r`  s       rE   Ú
_track_objÚSideEffects._track_objä  s˜   € ô ˆd‹8�t×*Ñ*Ó*Ü Ø�*ð )ð *2¯©Ð(9ð :8Ø8<×8KÑ8KÌBÈtËHÑ8U×8\Ñ8\Ð7]Ð]^ð	`óð ñ "3Ó!4ˆÔØ(0×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#ØˆrD   c                 ó,   • U R                  UU[        S9$ )N)r`  )rb  r'   )rY   r¼   r_  s      rE   Útrack_object_existingÚ!SideEffects.track_object_existingû  s#   € ð �‰ØØÜ7ð ð 
ð 	
rD   c                 óº   • [        U5      U R                  ;   a  g[        5       Ul        XR                  [        U5      '   U R                  R                  U5        g)zÀRegister a sourceless VT (e.g. a synthetic exception) as a new
attribute-mutation object so its attribute mutations are codegen'd.
Keyed by the VT's id since there is no backing Python object.N)r¿   r™   r(   r  rœ   rc   )rY   r_  s     rE   Útrack_attribute_mutation_newÚ(SideEffects.track_attribute_mutation_new  sH   € ô ˆh‹<˜4×.Ñ.Ó.ØÜ!5Ó!7ˆÔØ,4×ÑœB˜x›LÑ)Ø�‰×Ñ˜hÕ'rD   Ú
cls_sourceÚuser_clsÚvariable_clsÚoptionsc                 ó¨   • [        U5      nU" U4S[        U5      0UD6nX`R                  [        U5      '   U R                  R                  U5        U$ )Nr  )r%   r(   r™   r¿   rœ   rc   )rY   rj  rk  rl  rm  Úobjr_  s          rE   Útrack_object_newÚSideEffects.track_object_new  s]   € ô ˜Ó"ˆÙØñ
ä.¨zÓ:ð
ð ñ
ˆð
 (0×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"ØˆrD   c                 ó¦  • SSK Jn  SSKJn  SSKJn  SSKJn  [        R                  n[        X5      (       a  UR                  U5      (       a  UnGOQU" U5      (       a  UnGO@[        U[        R                  R                  5      (       a  [        R                  nGO[        U[         R"                  5      (       a  [        R$                  nGOÔ[        U[&        5      (       a  [        R(                  nGO­[        U[*        [,        45      (       a  [        R.                  nGO€[        U[0        5      (       aC  [3        U5      (       a!  [        R4                  R7                  U5      nGO:[        R4                  nGO([        U[8        5      (       a  [        R:                  nGO[        U[         R<                  5      (       a  [        R>                  nOÑ[        U[@        5      (       a  [        RB                  nO«[E        U5      (       a  [F        nO”[        U[H        5      (       a  [        RJ                  nOn[        U[        RL                  RN                  5      (       a  [        RP                  nO4[        RR                  RU                  U5      (       a  [        RR                  n[        U[        R                  5      (       d  [W        SU 35      eU$ )Nr   )ÚTorchFunctionModer   )ÚGenericContextWrappingVariable)ÚTorchFunctionModeVariable)Úis_generic_ctx_manager_clsz4Expected subclass of UserDefinedObjectVariable, got ),Útorch.overridesrs  Úvariables.ctx_managerrt  Úvariables.torch_functionru  Úvariables.user_definedrv  r   r[  Ú
issubclassÚ is_supported_torch_function_moderØ   ÚnnÚModuleÚUnspecializedNNModuleVariabler”   ÚdefaultdictÚDefaultDictVariablerì   ÚUserDefinedDictVariabler¨   rM  ÚUserDefinedSetVariablerN  r"   ÚUserDefinedTupleVariableÚ
get_vt_clsrB   ÚUserDefinedListVariabler•   ÚUserDefinedDequeVariabler   ÚMutableMappingVariabler!   r.   rO  Ú"UserDefinedExceptionObjectVariableÚuser_definedÚ_CONSTANT_BASE_TYPESÚUserDefinedConstantVariableÚInspectVariableÚis_matching_classrÁ   )rY   rk  rs  rt  ru  rv  rl  s          rE   Úget_variable_clsÚSideEffects.get_variable_cls#  sú  € Ý5åIÝGÝFô ×/Ñ/ð 	ô Ø÷
ñ 
à'×HÑHÈ×RÑRØ4ŠLÙ'¨×1Ñ1Ø9ŠLÜ˜¤%§(¡(§/¡/×2Ñ2Ü$×BÑBŠLÜ˜¤+×"9Ñ"9×:Ñ:Ü$×8Ñ8ŠLÜ˜¤$×'Ñ'ô %×<Ñ<ŠLÜ˜¤3¬	Ð"2×3Ñ3Ü$×;Ñ;ŠLÜ˜¤%×(Ñ(Ü  ×*Ñ*Ü(×AÑA×LÑLÈXÓV’ä(×AÑA’Ü˜¤$×'Ñ'Ü$×<Ñ<ŠLÜ˜¤+×"3Ñ"3×4Ñ4Ü$×=Ñ=‰LÜ˜¤.×1Ñ1Ü$×;Ñ;‰LÜ  ×*Ñ*Ü2‰LÜ˜¤-×0Ñ0Ü$×GÑG‰LÜØÜ×"Ñ"×7Ñ7÷
ñ 
ô %×@Ñ@‰LÜ×&Ñ&×8Ñ8¸×BÑBÜ$×4Ñ4ˆLÜ˜,¬	×(KÑ(K×LÑLÜ ØFÀ|ÀnÐUóð ð ÐrD   Úbase_cls_vtÚcls_vtÚ	init_argsc           
      ól  • UR                   n[        U[        R                  R                  5      (       a  [        U5      nU$ [        U[        R                  5      (       a  UR                  nO†[        U[        R                  5      (       a  [        nO`[        U[        R                  5      (       a  [        nO:[        U[        R                  5      (       a  UR                   nO[        SU 35      e[        R                  R!                  UR"                  5      (       d  [%        SU 35      e['        U5      (       a  U" S /UR(                  -  5      nU$ U(       a^  [        U[        R*                  R,                  5      (       a5  U Vs/ s H  owR/                  5       PM     nn UR"                  " U/UQ76 nU$  UR#                  U5      nU$ s  snf ! [0         a    UR#                  U5      n U$ f = f! [2         a0  n	[5        SSU SU SU	 3S/ [6        R8                  QS9   S n	A	W$ S n	A	ff = f)	NzUnexpected base_cls_vt zUnsupported __new__ method for zHUnsupported user-defined object construction during side-effect trackingzclass=z, base=z, error=zcDynamo could not construct an example object for side-effect replay using the class __new__ method.rÍ   )r½   r{  rØ   r}  r~  r$   rà   r   ÚBuiltinVariableÚfnÚDictBuiltinVariablerì   ÚListBuiltinVariablerB   ÚUserDefinedClassVariablerq   Úis_supported_new_methodÚ__new__rÁ   r   Ún_fieldsrŠ  r‹  rÂ   Ú	ExceptionÚ	TypeErrorr   r   ÚSUPPORTABLE)
rY   r‘  r’  r“  rk  ro  Úbase_clsÚargÚexample_argsÚexcs
             rE   Úget_example_valueÚSideEffects.get_example_valueY  s!  € ð —<‘<ˆÜ�h¤§¡§¡×0Ñ0ä Ó)ˆCðh ˆ
ôe ˜+¤y×'@Ñ'@×AÑAØ&Ÿ>™>‘Ü˜K¬×)FÑ)F×GÑGÜ‘Ü˜K¬×)FÑ)F×GÑGÜ‘Ü˜K¬×)KÑ)K×LÑLØ&×,Ñ,‘ä"Ð%<¸[¸MÐ#JÓKÐKä×5Ñ5×MÑMØ× Ñ ÷ñ ô %Ð'FÀxÀjÐ%QÓRÐRÜ! (×+Ñ+ñ  ˜v¨×(9Ñ(9Ñ9Ó:�ð@ ˆ
ö? œzØÜ×&Ñ&×;Ñ;÷ ñ  ñ ENÓNÂI¸S× 6Ñ 6Ö 8ÁI�ÐNð
Ø"×*Ò*Ø ðØ#/ò�Cð2 ˆ
ðØ"×*Ñ*¨8Ó4�Cð ˆ
ùò7  Oøô
 !ó ð #×*Ñ*Ø ó‘Cð$ ˆ
ð-ûô !ó ô "Ø jØ"(¨¨
°'¸(¸À8ÈCÈ5Ð QðQð ?Ô 1× =Ñ =Ð>öð ˆ
ûðús0   ÆGÆ)G Æ?G9 ÇG6Ç5G6Ç9
H3È%H.È.H3)rÈ   rÈ   z InstructionTranslatorBase | Nonec          	      ó4  • UR                   nUR                  nU R                  U5      nU R                  XU5      n0 n	Ub  XIS'   U" U4UR                   UU[	        U5      S.U	D6n
X R
                  [        U5      '   U R                  R                  U5        U
$ )a  
Creates a UserDefinedObjectVariable (or its subclass) variable tracker
and mark it for attribute mutation tracking.

Also records the variable trackers to call __new__ method on
reconstruction. Roughly, the reconstruction looks like this
    base_cls_vt.__new__(user_cls, *init_args)
rÈ   )rj  r‘  r“  r  )	r  r½   r�  r¤  r(   r™   r¿   rœ   rc   )rY   r‘  r’  r“  rÈ   rj  rk  rl  ro  Úkwargsr_  s              rE   Útrack_new_user_defined_objectÚ)SideEffects.track_new_user_defined_object˜  s¥   € ð  —]‘]ˆ
Ø—<‘<ˆØ×,Ñ,¨XÓ6ˆØ×$Ñ$ [¸)ÓDˆà!#ˆØ‰>Ø�4‰LÙØð
à—}‘}Ø#ØÜ.¨zÓ:ñ
ð ñ
ˆð (0×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"ØˆrD   c                 ó¶   • [        5       n[        R                  " [        5       S9nX R                  [        U5      '   U R                  R                  U5        U$ )N©r  )rL  r   r6  r(   r™   r¿   rœ   rc   )rY   ro  r_  s      rE   Útrack_cell_newÚSideEffects.track_cell_new¼  sL   € ô ‹hˆÜ×)Ò)Ü.Ó0ñ
ˆð (0×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"ØˆrD   r  ÚcellÚcontentsc                 ó°   • [         R                  " Uc  S O	[        5       UUS9nX@R                  [	        U5      '   U R
                  R                  U5        U$ )N)r  r<  r  )r   r6  r'   r™   r¿   rœ   rc   )rY   r  r®  r¯  r_  s        rE   Útrack_cell_existingÚSideEffects.track_cell_existingÇ  sT   € ô ×)Ò)ð #)¡.™$Ô6OÓ6QØ"*Øñ
ˆð )1×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#ØˆrD   c                 ó¤   • [         R                  " [        5       US9nX0R                  [	        U5      '   U R
                  R                  U5        U$ )N)r  r  )r   ÚNewGlobalVariabler'   r™   r¿   rœ   rc   )rY   r  r¼   r_  s       rE   Útrack_global_existingÚ!SideEffects.track_global_existingÕ  sF   € Ü×.Ò.Ü3Ó5Øñ
ˆð )1×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#ØˆrD   rf   Úargsc                 ó¨   • [        U[        R                  5      (       d  [        S[	        U5       35      eU R
                  R                  X45        g )Nz.Expected AutogradFunctionContextVariable, got )rà   r   r
   rÁ   rr   rŸ   rc   )rY   rf   r·  s      rE   Útrack_save_for_backwardÚ#SideEffects.track_save_for_backwardÞ  sJ   € ô ˜#œy×HÑH×IÑIÜ Ø@ÄÀcÃÀÐLóð ð 	×Ñ×%Ñ% s kÕ2rD   c                 ó  • UR                    Hp  n[        U5      nUR                  U   nX0R                  ;  d  M.  [        U[        R
                  [        R                  45      (       d  M_  U R                  X$5        Mr     g rU   )rœ   r¿   r™   rà   r   ÚTensorVariableÚSymNodeVariablere  )rY   rÞ   Ú
other_itemÚother_idÚother_variables        rE   Ú-track_runahead_tensor_and_symvar_side_effectsÚ9SideEffects.track_runahead_tensor_and_symvar_side_effectsç  si   € ð  Ÿ/œ/ˆJÜ˜*“~ˆHØ"×1Ñ1°(Ñ;ˆNØ×2Ñ2Õ2´zØ¤×!9Ñ!9¼9×;TÑ;TÐ U÷8ó 8ð ×*Ñ*¨:ÖFò *rD   c                 óP  ^ ^^^^• [        5       m[        5       mS[        SS 4UU UU4S jjmS[        S[        4U4S jjnT R                  R	                  5        Vs/ s H&  n[        UR                  [        5      (       a  M$  UPM(     nn/ nUnUbx  UR                  UR                  UR                  /5        UR                  b3  UR                  c  [        S5      eUR                  UR                  5        UR                  nUb  Mx  [        5       mS[        SS 4U4S jjn0 nUR                  R                    H>  n	U	R"                  n
[        R$                  " UU
R                  U
R                  /UT 5        M@     [        R$                  " TUUUR                  R&                  T R(                  /-   5        @T R                  R+                  5        VVs0 s H  u  p¼U" U5      (       d  M  X¼_M     snnT l        T R,                  R+                  5        VVs0 s H  u  p¼U" U5      (       d  UT;   d  M  X¼_M     snnT l        T R.                  R+                  5        VVs0 s H  u  p¼U" U5      (       d  UT;   d  M  X¼_M     snnT l        g s  snf s  snnf s  snnf s  snnf )Nr9   rS   c                 ó   >• U T;   a  g TR                  U 5        [        U R                  [        5      (       a  TR                  U 5        U TR                  ;   a%  [
        R                  " TTR                  U    5        g g rU   )r¯   rà   r  r(   rš   r-   Úvisit)r9   Úlive_new_objectsrY   rÅ  Úvisiteds    €€€€rE   rÅ  Ú0SideEffects.prune_dead_object_new.<locals>.visitú  so   ø€ Ø�g‹~ØØ�K‰K˜Ôä˜#×+Ñ+Ô-A×BÑBØ ×$Ñ$ SÔ)ð �d×/Ñ/Ó/Ü×%Ò%ØØ×-Ñ-¨cÑ2õð 0rD   c                 óN   >• [        U R                  [        5      (       a  U T;   $ g©NT)rà   r  r(   )r9   rÆ  s    €rE   Úis_liveÚ2SideEffects.prune_dead_object_new.<locals>.is_live
  s&   ø€ Ü˜#×+Ñ+Ô-A×BÑBØÐ.Ñ.Ð.ØrD   z4post_prune_cell_and_freevars is None for non-root txc                 óh   >• [        U R                  [        5      (       a  TR                  U 5        g g rU   )rà   r  r(   r¯   )r9   Úgen_reachable_news    €rE   Ú	visit_genÚ4SideEffects.prune_dead_object_new.<locals>.visit_gen,  s+   ø€ Ü˜#×+Ñ+Ô-A×BÑBØ!×%Ñ% cÕ*ð CrD   )r¨   r-   r÷   r™   Úvaluesrà   r  r(   r�   ÚstackÚsymbolic_localsÚparentÚpost_prune_cell_and_freevarsrÁ   rc   rø   Úlocal_generatorsÚinline_tracerrÅ  Úbackward_stater    r†   rš   r›   )rY   rÈ   rË  r9   Úpre_existing_varsÚinit_live_varsÚcur_txrÏ  Úgen_visit_cacheÚgenÚ
gen_tracerr‰   rŠ   rÎ  rÆ  rÅ  rÇ  s   `            @@@@rE   Úprune_dead_object_newÚ!SideEffects.prune_dead_object_newõ  s‰  ü€ ä(+«ˆÜ14³Ðð	”ð 	¨4÷ 	ò 	ð 	œð 	¬T÷ 	ð ×*Ñ*×1Ñ1Ô3ó
â3�Ü˜c×/Ñ/Ô1E×F÷ Ù3ð 	ð 
ð ˆà35ˆØÑ Ø×!Ñ! 6§<¡<°×1GÑ1GÐ"HÔIØ�}‰}Ñ(ð ×6Ñ6Ñ>Ü(ØNóð ð ×%Ñ% f×&IÑ&IÔJØ—]‘]ˆFð Ó ô 36³%Ðð	+œ?ð 	+¨t÷ 	+ð +-ˆØ—9‘9×-Ô-ˆCØ×*Ñ*ˆJÜ×!Ò!ØØ×!Ñ! :×#=Ñ#=Ð>ØØö	ñ .ô 	×ÒØàà!Ø—	‘	×(Ñ(Ø×!Ñ!ðñô		
ð ð "×0Ñ0×6Ñ6Ô8ô
Ú8‘T�Q¹GÀA¿J‹DˆAŠDÑ8ò
ˆÔð
 ×1Ñ1×7Ñ7Ô9ô%
â9‘�Ù�q�z‰z˜QÐ"3Ñ3ó ˆAŠDÙ9ò%
ˆÔ!ð ×0Ñ0×6Ñ6Ô8ô$
â8‘�Ù�q�z‰z˜QÐ"3Ñ3ó ˆAŠDÙ8ò$
ˆÕ ùòU
ùóD
ùó%
ùó
$
s0   Á#JÂJÇJÇ/JÈJÈ8JÉ$J"ÊJ"c                 óž  • XR                   ;   a  g U R                  U5        U R                  U5        [        UR                  [
        5      (       a  SUR                  l        UR                  b%  U R                  R                  UR                  5        UR                  (       a(  [        U[        R                  5      (       a  SU l        g g g rÊ  )r©   r  rÜ   rà   r  r+   r]  r  rª   r¯   r   ÚConstDictVariabler¦   r°   s     rE   ÚmutationÚSideEffects.mutation_  sš   € Ø×9Ñ9Ó9Øà×&Ñ& sÔ+à× Ñ  Ô%ä�c×'Ñ'Ô)>×?Ñ?Ø,0ˆC×ÑÔ)Ø�:‰:Ñ!Ø× Ñ ×$Ñ$ S§Z¡ZÔ0Ø�:�:œ* S¬)×*EÑ*E×FÑFØ/3ˆDÕ,ð Gˆ:rD   c                 ó   • U R                   $ rU   )r¦   rX   s    rE   Úhas_existing_dict_mutationÚ&SideEffects.has_existing_dict_mutationn  s   € Ø×/Ñ/Ð/rD   c                 ó�   • U R                   R                  5        Vs/ s H  oR                  U5      (       d  M  UPM     sn$ s  snf rU   )r™   rÑ  r]  r°   s     rE   Ú_get_modified_varsÚSideEffects._get_modified_varsq  s7   € Ø#×2Ñ2×9Ñ9Ô;ÓUÒ;˜×?OÑ?OÐPS×?T—Ñ;ÑUÐUùÒUs
   �AºAÚcgc           	      óÄ  ^^• U R                  5        GHP  m[        TR                  [        5      (       d  TR                  c  [        ST S35      eMA  [        T[        R                  [        R                  45      (       a  U R                  T5      (       d  Mˆ  TR                  5       (       a·  [        TR                  [        5      (       a˜  [        T[        R                  5      (       ay  [        TR                  [        R                  [        R                   [        R"                  R$                  R&                  45      (       d  [)        TR                  5      (       a  GMT  [        T[        R*                  5      (       a›  TR,                  ca  TR/                  U4S j5        TR1                  [3        SS5      5        TR5                  T5        [7        TR8                  T   5      Tl        GMá  TR                  c  [;        TR,                  5      Tl        GM  GM  TR=                  5       (       at  [        T[        R>                  R@                  5      (       aH  T" TSS9  TR5                  T5        TRC                  5         [7        TR8                  T   5      Tl        GM”  GM—  [        T[        RD                  5      (       a  [G        SSS	/ S
9  GMÅ  [        T[        RH                  5      (       aB  TRK                  T5        TR5                  T5        [7        TR8                  T   5      Tl        GM&  [        T[        R                  5      (       a  SUU4S jjnTR/                  U5        OTR/                  U4S j5        TR                  RL                  cS  [G        SSTRO                  5       RP                   3STRO                  5       RP                   S3/ [R        RT                  QS
9  T" TR                  RL                  5        TRV                   H  nT" U5        M     TR1                  [3        S[Y        TRV                  5      -   S5      5        TR5                  T5        [7        TR8                  T   5      Tl        [        T[        RZ                  5      (       d  GM—  TU R\                  ;   d  GMª  U R\                  T   R_                  5        H…  u  pETRa                  SS5        TRc                  S5        T" TR                  5        T" [        Rd                  " U5      5        T" U5        TR1                  / [g        S5      Q[i        S5      P5        M‡     GMS     U Rj                   Hi  u  pgT" UR                  5        TRc                  S5        U H  nT" U5        M     TR1                  / [g        [Y        U5      5      Q[i        S5      P5        Mk     g )Nz!Expected source for modified var z with non-new mutation typec                  óD   >• T R                  [        R                  S5      $ )NÚ	make_cell©Úload_import_fromr   r=   ©rë  s   €rE   rk   Ú3SideEffects.codegen_save_tempvars.<locals>.<lambda>­  s   ø€  × 3Ñ 3´E·N±NÀKÔ PrD   r   F©Úallow_cachez<AutogradFunctionContextVariable escaped Dynamo-traced regionr*  zAWe cannot reconstruct a torch.autograd.Function's context object.rÍ   c                  óœ   >• TR                   c  [        S5      eT " TR                   5        T R                  T R                  S5      /5        g )Nz&base_cls_vt is None in load_new_methodr›  )r‘  rÁ   Úextend_outputÚcreate_load_attr©rë  r9   s   €€rE   Úload_new_methodÚ:SideEffects.codegen_save_tempvars.<locals>.load_new_methodÞ  sG   ø€ àŸ?™?Ñ2Ü"0Ø Hó#ð ñ ˜3Ÿ?™?Ô+Ø×(Ñ(¨"×*=Ñ*=¸iÓ*HÐ)IÕJrD   c                  óD   >• T R                  [        R                  S5      $ )Nr%   rï  rñ  s   €rE   rk   rò  ê  s   ø€  × 3Ñ 3´E·N±NÀLÔ QrD   z/Reconstruct user defined class without a sourcezClass: z"Cannot reconstruct an instance of a=   that escapes the compiled region. This happens when the class is defined dynamically (e.g., inside the compiled function) and the class object itself has no source that can be reconstructed. To fix this, move the class definition outside the compiled function or prevent the object from escaping the compiled region.r   ÚbuiltinsrL  Ú__setattr__é   ÚPOP_TOPrŸ   rb   )6ré  rà   r  r(   r  rÁ   r   ÚNamedTupleVariableÚStructSequenceVariablerU  rÀ   r[  r½   ÚenumÚEnumrØ   ÚDispatchKeyÚ_CÚ
_functorchÚTransformTyper#   r6  Ú
local_nameÚadd_push_nullrö  r   Ú	add_cacher    Útempvarsr   Ú	is_tensorÚtorch_functionÚTensorWithTFOverrideVariableÚ	clear_tosr
   r   ÚExceptionVariableÚreconstructrj  Úpython_typer=   r   rŸ  r“  rp   r.   rš   r†   rð  Úload_methodÚConstantVariabler   r   rŸ   )	rY   rë  rù  r¡  rI   r½   rf   r·  r9   s	    `      @rE   Úcodegen_save_tempvarsÚ!SideEffects.codegen_save_tempvarst  s¹  ù€ ð ×*Ñ*×,ˆCÜ˜c×/Ñ/Ô1E×FÑFØ—:‘:Ñ%Ü(Ø;¸C¸5ð A5ð 5óð ñ ô ØÜ×-Ñ-¬y×/OÑ/OÐP÷ñ ð ×/Ñ/°×4Ñ4Ùð ×&Ñ&×(Ñ(Ü˜s×0Ñ0Ô2F×GÑGÜ˜s¤I×$GÑ$G×HÑHäØŸ	™	ä ŸI™IÜ!×-Ñ-Ü!ŸH™H×/Ñ/×=Ñ=ð÷ñ ô /¨s¯y©y×9Ñ9ò ä˜#œy×5Ñ5×6Ñ6ð
 —>‘>Ñ)Ø×$Ñ$ÜPôð ×$Ñ$Ô%9¸!¸UÓ%CÔDØ—L‘L Ô%Ü!0°·±¸SÑ1AÓ!B�C—JØ—Z‘ZÑ'Ü!0°·±Ó!@�C—Jò (à—‘—‘ô Øœ×1Ñ1×NÑN÷ñ ñ �s¨Ò.Ø—L‘L Ô%ð —L‘L”NÜ!0°·±¸SÑ1AÓ!B�C—Jòô ˜C¤×!JÑ!J×KÑKÜØZØØ cØõ	ô ˜C¤×!<Ñ!<×=Ñ=ð
 —‘ Ô#Ø—‘˜SÔ!Ü,¨R¯[©[¸Ñ-=Ó>�—
ô ˜c¤9×#FÑ#F×GÑG÷Kð Kð ×$Ñ$ _Õ5à×$Ñ$ÜQôð ×$Ñ$×/Ñ/Ñ7Ü!Ø QØ")¨#¯/©/Ó*;×*DÑ*DÐ)EÐ Fà@ÀÇÁÓAR×A[ÑA[Ð@\ð ]Wð Wð ?Ô 1× =Ñ =Ð>òñ �3×$Ñ$×/Ñ/Ô0ð Ÿ=œ=�CÙ�s–Gñ )ð × Ñ Ô!5°a¼#¸c¿m¹mÓ:LÑ6LÈeÓ!TÔUà—‘˜SÔ!Ü,¨R¯[©[¸Ñ-=Ó>�”
ô ˜s¤I×$EÑ$E×FÔFØ˜t×8Ñ8Ö8à'+×'@Ñ'@ÀÑ'E×'KÑ'KÖ'M™˜Ø×+Ñ+¨J¸ÔAØŸ™ }Ô5Ù˜3Ÿ:™:œÙœ9×5Ò5°dÓ;Ô<Ù˜5œ	Ø×(Ñ(ØSÔ0°Ó3ÐSÔ5GÈ	Ó5RÐSöô (Nñk -ð~ ×/Ô/‰IˆCÙˆs�z‰zŒNØ�N‰NÐ.Ô/Û�Ù�3–ñ à×ÑðÜ'¬¨D«	Ó2ðä& yÓ1ðöò 0rD   ÚtensorÚhookÚhandlec                 óâ  • UR                  5       (       d  [        S[        U5       S35      e[        U[        R
                  5      (       d  [        S[        U5       35      e[        U[        R                  5      (       d  [        S[        U5       35      eUR                  5       (       d  [        S5      e[        [        R                  U5      (       d  [        SU S35      e[        U R                  R                  5       5      nXPR                  ;   a  US-  nXPR                  ;   a  M  XX44U R                  U'   UR                  (       a  [        S	UR                   35      eXSl        g )
NzExpected tensor variable, got z in register_hookz'Expected VariableTracker for hook, got z&Expected RemovableHandleVariable, got z'handle must be mutable in register_hookztorch.Tensor has no attribute 'Ú'r   z handle.idx should be falsy, got )r  rÁ   rr   rà   r   r-   ÚRemovableHandleVariableÚ
is_mutableÚhasattrrØ   ÚTensorrp   r    rä   Úidx)rY   r  r  r  rI   r   s         rE   Úregister_hookÚSideEffects.register_hook&  sC  € ð ×Ñ×!Ñ!Ü Ø0´°f³°Ð>OÐPóð ô ˜$¤	× 9Ñ 9×:Ñ:Ü Ð#JÌ4ÐPTË:È,Ð!WÓXÐXÜ˜&¤)×"CÑ"C×DÑDÜ Ø8¼¸f»¸ÐGóð ð × Ñ ×"Ñ"Ü Ð!JÓKÐKÜ”u—|‘| T×*Ñ*Ü Ð#BÀ4À&ÈÐ!JÓKÐKÜ�$×#Ñ#×(Ñ(Ó*Ó+ˆà×&Ñ&Ó&Ø�1‰HˆCð ×&Ñ&Õ&à"(°Ð!=ˆ×Ñ˜#ÑØ�:�:Ü Ð#CÀFÇJÁJÀ<Ð!PÓQÐQØ�
rD   r   c                 ó   • U R                   U	 g rU   )r    )rY   r   s     rE   Úremove_hookÚSideEffects.remove_hookD  s   € Ø×Ñ˜cÑ"rD   c                 ó,  ^^^• U R                   R                  5        Hs  u  mnnmTR                  (       d  [        S5      eSUUU4S jjnTR	                  U5        T" U5        TR                  [        SS5      5        TR                  U5        Mu     g )Nz4Hooks on non input tensors NYI - should not get herec                  óX   >• T " T5        T R                  T R                  T5      /5        g rU   )rö  r÷  )rë  rI   r  s   €€€rE   Úgen_fnÚ)SideEffects.codegen_hooks.<locals>.gen_fnt  s&   ø€ Ù�6”
Ø× Ñ  "×"5Ñ"5°dÓ";Ð!<Õ=rD   r   Frb   )r    rÑ  r  rÁ   r	  rö  r   r
  )rY   rë  r  r  r(  rI   r  s    `   @@rE   Úcodegen_hooksÚSideEffects.codegen_hooksG  s�   ú€ ð ×Ñ×%Ñ%Ö'ñ
ØØØØðF —=—=Ü$ØJóð ÷>ñ >ð ×Ñ˜VÔ$ÙˆtŒHØ×ÑÔ1°!°UÓ;Ô<ð �L‰L˜Ö òc (rD   c                 ó~   • SSK Jn  U R                  c  [        R                  " / U" 5       S9U l        U R                  $ )Nr   )r,   r«  )Úvariables.baser,   r§   r   r1   )rY   r,   s     rE   Úget_ca_final_callbacks_varÚ&SideEffects.get_ca_final_callbacks_var€  s;   € Ý4à×&Ñ&Ñ.Ü*3×*@Ò*@ØÑ"2Ó"4ñ+ˆDÔ'ð ×*Ñ*Ð*rD   c                 ó®  • [         R                  S:X  a  [        S5      eU R                  R	                  U/ 5      nSUR                  5        3nSnUR                  b¥  [        UR                  [        5      (       a  SnOƒ[        U[        R                  5      (       a  UR                  b  SUR                   S3nOF[        U[        R                  R                  5      (       a  SnOS	UR                  R                   S3nU(       aÄ  [        5       n/ n[!        [#        5       5      nU Hn  n[%        S
 U 5       5      n	X•;  d  M  UR'                  U	5        [!        Xx-   5      n
UR)                  SR+                  [,        R.                  " U
5      5      5        Mp     SR+                  U5      nU U S[0        R2                  " US5       3nU$ U U S3nU$ )z1Format a side effect log message with user stack.rÖ   z[_format_side_effect_message should not be called when side_effect_replay_policy is 'silent'zMutating object of type z (no source)z* (source: created in torch.compile region)z
 (source: Ú)z- (source: torch function mode stack mutation)z (source name: c              3   óÆ   #   • U  HW  nUR                   UR                  UR                  UR                  [	        US S5      [	        USS5      [	        USS5      4v •  MY     g7f)ÚcolnoNÚ
end_linenoÚ	end_colno)ÚfilenameÚlinenorI   Úliner  )Ú.0Úfs     rE   Ú	<genexpr>Ú:SideEffects._format_side_effect_message.<locals>.<genexpr>ª  s]   é € ð $ò #˜ð Ÿ
™
ØŸ™ØŸ™ØŸ™Ü  7¨DÓ1Ü  <°Ó6Ü  ;°Ó5õò #ùs   ‚AA!r*  z
********

z

z    z+ (unable to find user stacks for mutations))r   r×   rÁ   r�   r  Úpython_type_namer  rà   r    r   r6  r  r  ÚTorchFunctionModeStackVariablerI   r¨   r   r   rN  r¯   rc   ÚjoinÚ	tracebackÚformat_listÚtextwrapÚindent)rY   r9   Ú	locationsÚdescriptionÚsource_infoÚseenÚunique_formatted_stacksÚstack_above_dynamorÒ  Ústack_tupleÚstack_augmentedÚformatted_linesÚlog_strs                rE   Ú_format_side_effect_messageÚ'SideEffects._format_side_effect_messageŠ  sÈ  € ä×+Ñ+¨xÓ7Ü ð=óð ð ×-Ñ-×1Ñ1°#°rÓ:ˆ	Ø0°×1EÑ1EÓ1GÐ0HÐIˆØ$ˆØ�:‰:Ñ!Ü˜#Ÿ*™*¤o×6Ñ6ØJ‘Ü˜C¤×!7Ñ!7×8Ñ8¸S¿^¹^Ñ=WØ *¨3¯>©>Ð*:¸!Ð<‘ÜØ”Y×-Ñ-×LÑL÷ñ ð N‘ð !0°·
±
·±Ð/@ÀÐB�æä“5ˆDØ13Ð#Ü!7Ô8NÓ8PÓ!QÐÛ"�ô $ñ $ñ #ó$ó �ð Õ*Ø—H‘H˜[Ô)Ü&<Ð=OÑ=WÓ&X�OØ+×2Ñ2ØŸ™¤	× 5Ò 5°oÓ FÓGöñ' #ð, $4×#8Ñ#8Ð9PÓ#QˆOØ$˜ k ]°$´x·²ÀÐX^Ó7_Ð6`ÐaˆGð ˆð �- ˜}Ð,WÐXð ð ˆrD   Úside_effect_messagesc                 óš   ^• T(       d  g T H  n[         R                  U5        M     [        R                  R	                  SS U4S jS9  g )NÚartifactc                  ó   • SSS.$ )NÚdynamo_side_effectsÚstring)rI   Úencodingr<   r<   rD   rE   rk   Ú8SideEffects._emit_side_effect_messages.<locals>.<lambda>Î  s   € Ø-Ø$ò!rD   c                  ó&   >• SR                  T 5      $ )Nz,

========================================

)r?  )rP  s   €rE   rk   rW  Ò  s   ø€ ÐQ×VÑVØ$ô rD   )Úmetadata_fnÚ
payload_fn)Úside_effects_logÚdebugrØ   Ú_loggingÚtrace_structured)rY   rP  Úmsgs    ` rE   Ú_emit_side_effect_messagesÚ&SideEffects._emit_side_effect_messagesÅ  sG   ø€ Þ#Øã'ˆCÜ×"Ñ" 3Ö'ñ (ô 	�‰×'Ñ'Øñôð 	(ò 		
rD   Úlog_side_effectsc           	      óì  ^ ^^	• / m	S[         SS 4UU U	4S jjn/ nT R                  5        Hƒ  n[        R                  (       d!  [	        UR
                  [        5      (       d  M9  [        T UUUUS9n[        R                  U5      nUc  [        [        U5      5      eUR                  U5        M…     [        U5       H  nUR                  U5        M     T(       a  T	(       a  T R                  T	5        g g g )Nr9   rS   c                 ó„   >• [         R                  S:w  a+  T(       a#  TR                  U 5      nTR                  U5        g g g ©NrÖ   )r   r×   rN  rc   )r9   r_  rb  rY   rP  s     €€€rE   Ú_maybe_log_side_effectÚBSideEffects.codegen_update_mutated.<locals>._maybe_log_side_effectÝ  s<   ø€ Ü×/Ñ/°8Ó;Ö@PØ×6Ñ6°sÓ;�Ø$×+Ñ+¨CÕ0ð AQÐ;rD   )r2   r8   r9   r:   r;   )r-   ré  r   Úreplay_side_effectsrà   r  r    r5   ry   rv   rÁ   rr   r8   Úreversedrö  r`  )
rY   rë  rb  rf  r:   r9   rf   r\   ÚsuffixrP  s
   ` `      @rE   Úcodegen_update_mutatedÚ"SideEffects.codegen_update_mutated×  sé   ú€ ð +-Ðð	1¬ð 	1¸D÷ 	1ñ 	1ð
 -/ˆØ×*Ñ*Ö,ˆCä×-×-´jØ—
‘
œO÷7ñ 7ñ ä)Ø!ØØØ!Ø*ñˆCô 3×AÑAÀ#ÓFˆGØ‰Ü$¤T¨#£YÓ/Ð/Ø�O‰O˜CÖ ñ# -ô( ˜xÖ(ˆFØ×Ñ˜VÖ$ñ )ö Ö 4Ø×+Ñ+Ð,@ÕAð !5ÐrD   c                 óú   • [         R                  S:X  a  g [        R                  [        R
                  5      (       d  g U R                  5        H)  nU R                  U5      n[        R                  U5        M+     g re  )	r   r×   r[  ÚisEnabledForÚloggingÚDEBUGré  rN  r\  )rY   r9   r_  s      rE   Úlog_side_effects_summaryÚ$SideEffects.log_side_effects_summaryþ  s\   € Ü×+Ñ+¨xÓ7ØÜ×,Ñ,¬W¯]©]×;Ñ;ØØ×*Ñ*Ö,ˆCØ×2Ñ2°3Ó7ˆCÜ×"Ñ" 3Ö'ò -rD   c                 óì   • [        [        U R                  U R                  R	                  5       5      5      =(       d2    U R
                  =(       d    U R                  =(       d    U R
                  (       + $ rU   )ÚanyÚmapr]  r™   rÑ  r    rŸ   rX   s    rE   Úis_emptyÚSideEffects.is_empty  s\   € ä”�D×$Ñ$ d×&9Ñ&9×&@Ñ&@Ó&BÓCÓD÷ !Ø× Ñ ÷!à×%Ñ%÷!ð × Ñ ô	
ð 	
rD   c                 ól   • U R                   R                  5         U R                  R                  5         g rU   )rœ   r…   r™   rX   s    rE   r…   ÚSideEffects.clear  s$   € Ø�‰×ÑÔØ×Ñ×!Ñ!Õ#rD   )r¦   r›   r§   r«   r™   r©   rœ   rª   r�   r¥   rŸ   rš   r    )NNNNNNNrb   )rS   r7   )FFrU   )rÞ   r7   rS   N)rÈ   r0   rS   N)rS   zvariables.ListVariable)F)Yr=   r>   r?   r@   Ú__doc__rì   rO   r-   rA   rL   r)   rB   rL  r@  ÚStackSummaryrN  r
   rZ   r±   r´   Ú
contextlibÚcontextmanagerr   rº   r÷   rÊ   r¸   rÜ   rá   ré   rí   rñ   rô   rü   r   r  r	  r  r$  r   r  r   r%  r-  r7  r>  rB  rE  Ústaticmethodrr   rP  r  rU  r;  r]  r+   rb  Útrack_mutablere  rh  r   rp  r�  r¤  r¨  r¬  r   r±  rµ  r¹  rÁ  rß  rã  ræ  ré  r   r  r!  r$  r*  r.  rN  r`  rk  rq  rv  r…   rC   Ú__classcell__)r¬   s   @rE   r7   r7   Ã   s¸  ø‡ ñð& ˜˜oÐ-Ñ.Ó.Ø˜°°S¸/Ð5IÑ0JÐJÑKÓKØ˜o¨t°CÐ9IÐ4IÑ/JÐJÑKÓKØ�F‰|Óà˜°°Y×5KÑ5KÑ0LÐLÑMÓMð
 =AàààØ)-ð ð ñ19Xà#ð9Xð ˜S /Ð1Ñ2°TÑ9ð9Xð # ?°D¸¸oÐ9MÑ4NÐ#NÑOØ
ñð	9Xð " /°4¸Ð=MÐ8MÑ3NÐ"NÑOØ
ñð9Xð # ?°D¸×9OÑ9OÑ4PÐ#PÑQØ
ñð9Xð ˜‘< $Ñ&ð9Xð  ØÐ1°4¸Ñ3HÐHÑIñ
ð ñð9Xð ØØØ*ØØ3Øðñðñ
ð ñ	ð9Xð2 
÷39Xð 9Xðv9 ð 9¸4ô 9ð
@¨oð @À$ô @ð
 ×Ñð1¨)Ð4DÑ*Eó 1ó ð1ð(Ø#ðØ+.ðØ7Fðà	ôôBð"
 ð 
¸4ô 
ð

˜Fð 

 tô 

ð˜-ð ¨C°$©Jô ô0
ð(/ ð /¨Dô /ð- ð -¨?ô -ð
È4ô 
ð
°$ô 
ð
¨Tô 
ð¨oð À$ô ð+¨oð +À$ô +ðd +;×*JÑ*JØ(,ñ(Hàð(Hð ð(Hð ð	(Hð
 (ð(Hð  ™ð(Hð 
õ(HðTKØ#ðKØ+.ðKØ7FðKà	ôKð&4Ø#ð4Ø+.ð4à	ô4ð !Øñàðð ðð ð	ð
 ðð 
õð,9 /ð 9¸/ð 9Èdô 9ð$
 ð 
°_ô 
ð4* ð *°sð *¸ô *ð NØ#ðNØ+.ðNØ7FðNà	ôNð" ð
°ð 
¸ó 
ó ð
ðA¨/ð A¸dô Að
¨ð 
¸Tô 
ð RVñ	/àð/ð ð/ð )¨5Ð1AÀ3Ð1FÑ+GÑGÈ$ÑNð	/ð
 
õ/ð$. ð .°Dô .ð( #8ñ	àðð "ðð  ð	ð
 
õð* €Mð
àð
ð "ð
ð 
ô	
ð(°_ð (Èô (ðà˜T‘Mðð ðð ð	ð
 �c˜3�h‘ðð 
ôð"4¨ð 4°$ô 4ðl=à$ð=ð  ð=ð ˜Ñ(ð	=ð
 
ô=ðJ 26ò"à$ð"ð  ð"ð ˜Ñ(ð	"ð /ð"ð 
õ"ðH	à	ô	ðØ˜t‘mðØ+3ðØ?Nðà	ôð¨Fð ¸&ð À_ô ð3Ø"ð3Ø*.¨Ñ*?ð3à	ô3ðGØ"ðGà	ôGôh
ðT4˜Oð 4°ô 4ð0¨Dô 0ðV D¨Ñ$9ô Vðp¨	ð p°dô pðdà*ðð ðð 4ð	ð
 ðð 
ôð<#˜sð # tô #ð7! 	ð 7!¨dô 7!ôr+ð9¨ð 9À3ô 9ðv
¸tÀC¹yð 
ÈTô 
ð& 7<ñ%BØð%BØ/3ð%Bà	õ%BôN(ð
˜$ô 
÷$ò $rD   r7   Úlist_mutationc                 óJ   • [        U R                  [        R                  5      $ rU   )rà   r9   r   r1   ©rf   s    rE   rk   rk     s   € œ
 3§7¡7¬I×,BÑ,BÔCrD   éZ   )rI   rJ   rK   rf   c           	      ó¬  • U R                   nU R                  n[        U[        R                  5      (       d  [        [        U5      5      eU" USS9  U" UR                  5        UR                  UR                  S 5      UR                  S 5      [        SSS9/5        U R                  R                  [        S5      /5        U R                  U5        g )NFró  ÚBUILD_SLICEé   ©r¡  ÚSTORE_SUBSCR)r8   r9   rà   r   r1   rÁ   rr   r  rö  Úcreate_load_constr   r:   rc   r;   ©rf   rë  r9   s      rE   Ú_codegen_list_mutationrŒ    s®   € ð 
�‰€BØ
�'‰'€CÜ�cœ9×1Ñ1×2Ñ2ÜœT #›YÓ'Ð'á€s˜ÒÙ€s‡z�z„NØ×Ñà× Ñ  Ó&Ø× Ñ  Ó&Ü˜}°!Ñ4ð	
ôð ‡L�L×ÑÔ+¨NÓ;Ð<Ô=Ø‡G�GˆC…LrD   Údeque_mutationc                 ó^   • [        U R                  [        R                  R                  5      $ rU   )rà   r9   r   ÚlistsÚDequeVariablerƒ  s    rE   rk   rk   .  s   € œ
 3§7¡7¬I¯O©O×,IÑ,IÔJrD   éP   c                 ó†  • U R                   nU R                  n[        U[        R                  R
                  5      (       d  [        [        U5      5      eUR                  R                  5       (       d  [        SSSS/S9  U" UR                  5        UR                  S5        U" USS9  U R                  R                  / [        S	5      Q[!        S
5      P5        U" UR                  5        UR                  S5        U R                  R                  / [        S5      Q[!        S
5      P5        U R#                  U5        g )Nz1Side effect on existing deque with limited maxlenr*  zThis is not supported.z*Don't use a deque with `maxlen` specified.rÍ   r�   Fró  r   rÿ  r…   r   )r8   r9   rà   r   r�  r�  rÁ   rr   ÚmaxlenÚis_constant_noner   r  r  r:   rc   r   r   r;   r‹  s      rE   Ú_codegen_deque_mutationr•  ,  s  € ð 
�‰€BØ
�'‰'€CÜ�cœ9Ÿ?™?×8Ñ8×9Ñ9ÜœT #›YÓ'Ð'ð �:‰:×&Ñ&×(Ñ(ÜØGØØ0à<ðò		
ñ €s‡z�z„NØ‡N�N�8ÔÙ€s˜ÒØ‡L�L×Ñð	
Ü Ó"ð	
ä˜yÓ)ð	
ôñ €s‡z�z„NØ‡N�N�7ÔØ‡L�L×Ñð	
Ü Ó"ð	
ä˜yÓ)ð	
ôð ‡G�GˆC…LrD   Úconst_dict_or_set_mutationc                 ój   • [        U R                  [        R                  [        R                  45      $ rU   )rà   r9   r   râ  ÚSetVariablerƒ  s    rE   rk   rk   [  s#   € œ
Ø�‰”)×-Ñ-¬y×/DÑ/DÐEôrD   éF   c                 óª  • U R                   nU R                  n[        U[        R                  [        R
                  45      (       d  [        [        U5      5      eUR                  5       (       aã  U" UR                  5        UR                  S5        U" USS9  UR                  (       a#  U" UR                  5        UR                  S5        U R                  R                  / [        S5      Q[        S5      P5        UR                  (       a1  U R                  R                  / [        S5      Q[        S5      P5        U R!                  U5        g g )NÚupdateFró  r…   r   rÿ  r   )r8   r9   rà   r   râ  r˜  rÁ   rr   Úhas_new_itemsr  r  Úshould_reconstruct_allr:   rc   r   r   r;   r‹  s      rE   Ú#_codegen_const_dict_or_set_mutationrž  Y  s  € ð 
�‰€BØ
�'‰'€CÜ�cœI×7Ñ7¼×9NÑ9NÐO×PÑPÜœT #›YÓ'Ð'ð ×Ñ×ÑÙ
ˆ3�:‰:ŒØ
�‰�xÔ Ù
ˆ3˜EÒ"à×%×%Ùˆs�z‰zŒNØ�N‰N˜7Ô#à�‰×ÑðÜ# AÓ&ðä" 9Ó-ðô	
ð ×%×%ð �L‰L×ÑðÜ'¨Ó*ðä& yÓ1ðôð 	�‰��ð3 rD   Ú"torch_function_mode_stack_mutationc                 ó^   • [        U R                  [        R                  R                  5      $ rU   )rà   r9   r   r  r>  rƒ  s    rE   rk   rk   Š  s   € œ
Ø�‰”×)Ñ)×HÑHôrD   é<   c                 óâ  ^• U R                   mU R                  n[        U[        R                  R
                  5      (       d  [        [        U5      5      eTR                  U4S j5        TR                  UR                  5        TR                  [        S[        UR                  5      S95        TR                  SS5        TR                  [        S5      5        U R                  U5        g )Nc                  óD   >• T R                  [        R                  S5      $ )NÚset_torch_function_mode_stackrï  rñ  s   €rE   rk   Ú=_codegen_torch_function_mode_stack_mutation.<locals>.<lambda>—  s   ø€ �×#Ñ#¤E§N¡NÐ4SÔTrD   Ú
BUILD_LISTrˆ  r   Frÿ  )r8   r9   rà   r   r  r>  rÁ   rr   r	  ÚforeachÚsymbolic_stackÚappend_outputr   rp   Úcall_functionr;   )rf   r9   rë  s     @rE   Ú+_codegen_torch_function_mode_stack_mutationr«  ˆ  s´   ø€ ð 
�‰€BØ
�'‰'€CÜ�cœ9×3Ñ3×RÑR×SÑSÜœT #›YÓ'Ð'Ø×ÑÜTôð ‡J�Jˆs×!Ñ!Ô"Ø×ÑÔ'¨¼#¸c×>PÑ>PÓ:QÑRÔSØ×Ñ�Q˜ÔØ×ÑÔ'¨	Ó2Ô3Ø‡G�GˆC…LrD   Úcell_mutationc                 óˆ   • [        U R                  [        R                  5      =(       a    U R                  R                  S L$ rU   )rà   r9   r   r6  r  rƒ  s    rE   rk   rk   £  s1   € œ
 3§7¡7¬I×,BÑ,BÓC÷ 'Ø�‰×Ñ $Ð&ð'rD   é2   c                 óÐ  • U R                   nU R                  n[        U[        R                  5      (       d  [        [        U5      5      eUR                  c  [        S5      eX R                  R                  ;   aj  U R                  R                  U5      nU" U5        U R                  R                  UR                  UR                  5      /5        U R                  U5        g g )Nz$cell mutation local name must be set)r8   r9   rà   r   r6  rÁ   rr   r  r2   rš   r>  r:   rc   Úcreate_store_derefr;   )rf   rë  r9   Úcontents_vars       rE   Ú_codegen_cell_mutationr²  ¡  s´   € ð 
�‰€BØ
�'‰'€CÜ�cœ9×1Ñ1×2Ñ2ÜœT #›YÓ'Ð'Ø
‡~�~ÑÜÐCÓDÐDð ×Ñ×3Ñ3Ó3Ø×'Ñ'×1Ñ1°#Ó6ˆÙ
ˆ<ÔØ�‰×Ñ˜R×2Ñ2°3·>±>ÓBÐCÔDØ�‰��ð	 4rD   c                 óö  • U R                   nU R                  n[        U[        R                  5      (       d  [        [        U5      5      e0 n[        R                  R                   H)  nUR                  R                  R                  5       X4'   M+      [        UR                  5      R                  R                  [         R"                  5      nUR)                  [+        SUS9[+        SUS   S9/5        U" UR,                  5        UR)                  [+        SUS   S9/5        SUR.                  l        U" UR.                  SS9  UR)                  [+        SUS	   S9/5        [3        [        US
9nU R4                  R7                  / UQ[+        S5      P5        U R9                  UR.                  5        g ! [$         a6    [        UR                  5      R                  R                  [&        5      n GN%f = f)NÚ
LOAD_CONST©ÚargvalÚ
STORE_FASTr‚   r�   TFró  r€   ©Úvarname_maprÿ  )r8   r9   rà   r   r‚  rÁ   rr   r‹   Ú__code__Úco_varnamesrÈ   rø   Únew_varr½   r„   Úindexr”   ÚOrderedDictÚ
ValueErrorrì   rö  r   r  Ú_base_vtr�  r   r:   rc   r;   )rf   rë  r9   r¹  rI   r‚   Údict_update_instss          rE   Ú#_codegen_user_defined_dict_mutationrÂ  ·  sµ  € Ø	�‰€BØ
�'‰'€CÜ�cœ9×<Ñ<×=Ñ=ÜœT #›YÓ'Ð'ð €KÜ$×-Ñ-×9Ô9ˆØŸE™EŸL™L×0Ñ0Ó2ˆÓñ :ð8Ü˜Ÿ™“O×+Ñ+×1Ñ1´+×2IÑ2IÓJˆ	ð ×Ñä˜|°IÑ>Ü˜|°KÀÑ4LÑMð	
ôñ €s‡z�z„NØ×Ñä˜|°KÀ	Ñ4JÑKð	
ôð +/€C‡L�LÔ'Ù€s‡|�| Ò'Ø×Ñä˜|°KÀÑ4LÑMð	
ôô /Ü¨+ñÐð ‡L�L×Ñð	
Øð	
ä˜yÓ)ð	
ôð ‡G�GØ�‰õøôK ó 8Ü˜Ÿ™“O×+Ñ+×1Ñ1´$Ó7‹	ð8ús   Â<F8 Æ8<G8Ç7G8c                 óˆ  • U R                   nU R                  n[        U[        R                  5      (       d  [        [        U5      5      e0 n[        R                  R                   H)  nUR                  R                  R                  5       X4'   M+     U" UR                  5        UR                  [        SUS   S9/5        U" UR                   SS9  UR                  [        SUS   S9/5        [#        [        US9nU R$                  R'                  / UQ[        S5      P5        U R)                  UR                   5        g )	Nr·  r�   rµ  Fró  rŒ   r¸  rÿ  )r8   r9   rà   r   r†  rÁ   rr   r�   rº  r»  rÈ   rø   r¼  r  rö  r   rÀ  r   r:   rc   r;   )rf   rë  r9   r¹  rI   Úlist_update_instss         rE   Ú#_codegen_user_defined_list_mutationrÅ  î  s"  € Ø	�‰€BØ
�'‰'€CÜ�cœ9×<Ñ<×=Ñ=ÜœT #›YÓ'Ð'ð €KÜ#×,Ñ,×8Ô8ˆØŸE™EŸL™L×0Ñ0Ó2ˆÓñ 9ñ €s‡z�z„NØ×Ñä˜|°KÀ	Ñ4JÑKð	
ôñ €s‡|�| Ò'Ø×Ñä˜|°KÀÑ4LÑMð	
ôô /Ü¨ñÐð ‡L�L×Ñð	
Øð	
ä˜yÓ)ð	
ôð ‡G�GØ�‰õrD   c                 óˆ  • U R                   nU R                  n[        U[        R                  5      (       d  [        [        U5      5      e0 n[        R                  R                   H)  nUR                  R                  R                  5       X4'   M+     U" UR                  5        UR                  [        SUS   S9/5        U" UR                   SS9  UR                  [        SUS   S9/5        [#        [        US9nU R$                  R'                  / UQ[        S5      P5        U R)                  UR                   5        g )	Nr·  r’   rµ  Fró  r‘   r¸  rÿ  )r8   r9   rà   r   r‡  rÁ   rr   r–   rº  r»  rÈ   rø   r¼  r  rö  r   rÀ  r   r:   rc   r;   )rf   rë  r9   r¹  rI   Údeque_update_instss         rE   Ú$_codegen_user_defined_deque_mutationrÈ    s"  € Ø	�‰€BØ
�'‰'€CÜ�cœ9×=Ñ=×>Ñ>ÜœT #›YÓ'Ð'ð €KÜ$×-Ñ-×9Ô9ˆØŸE™EŸL™L×0Ñ0Ó2ˆÓñ :ñ €s‡z�z„NØ×Ñä˜|°KÀ
Ñ4KÑLð	
ôñ €s‡|�| Ò'Ø×Ñä˜|°KÀÑ4MÑNð	
ôô 0Ü¨+ñÐð ‡L�L×Ñð	
Øð	
ä˜yÓ)ð	
ôð ‡G�GØ�‰õrD   r9   c                 ó  • [        U R                  [        5      (       a   [        U [        R                  5      (       a  gU R                  5       =(       aµ    [        U R                  [        5      =(       a”    [        U [        R                  5      =(       as    [        U R                  [        R                  [        R                  [        R                  R                  R                  45      =(       d    [        U R                  5      $ rÊ  )rà   r  r(   r   r.   rÀ   r[  r½   r  r  rØ   r  r  r  r  r#   )r9   s    rE   Ú_skip_attribute_mutation_replayrÊ  >  sÅ   € ô �#×#Ñ#Ô%9×:Ñ:¼zØŒY×.Ñ.÷@ñ @ð ð
 	×ÑÓ ÷ 	
Ü�s×(Ñ(Ô*>Ó?÷	
ä�sœI×?Ñ?Ó@÷	
ô Ø—	‘	ä—I‘IÜ×%Ñ%Ü—H‘H×'Ñ'×5Ñ5ðó÷ 2ô ' s§y¡yÓ1ðrD   Úattribute_mutationc                 óL   • U R                   R                  U R                  5      $ rU   )r2   r  r9   rƒ  s    rE   rk   rk   \  s   € ˜×(Ñ(×>Ñ>¸s¿w¹wÔGrD   é(   c                 óh  ^• U R                   mU R                  nU R                  n[        U5      (       a  g [	        U[
        R                  5      (       aK  UR                  UR                  5      (       a+  UR                  R                  5       (       a  [        U 5        O•[	        U[
        R                  5      (       a,  UR                  UR                  5      (       a  [        U 5        OJ[	        U[
        R                  5      (       a+  UR                  UR                  5      (       a  [        U 5        Sn[        UR                   R#                  U0 5      R%                  5       5       GH*  u  pEUR'                  X5      n[	        U[
        R(                  5      (       a•  TR*                  R,                  R/                  U5        T" U5        [	        UR0                  [2        5      (       d!  [5        S[7        UR0                  5       35      eU R8                  R;                  [=        SUS9/5        SnMË  [	        U[
        R>                  5      (       Gam  [	        U[
        R@                  5      (       a­  U[B        RD                  L aš  [G        [G        USS 5      S0 5      nXG;   az  TRI                  U4S j5        T" UR0                  5        T" [
        RJ                  " U5      5        U R8                  R;                  / [M        S	S5      Q[=        S
5      P5        SnGM´  GM·  [	        URN                  [P        5      (       a  [S        [G        USS 5      U5      (       a`  TR*                  R,                  R/                  U5        T" UR0                  5        U R8                  R;                  [=        SUS9/5        SnGMR  GMU  GMX  [	        U[
        R@                  5      (       a•  U[B        RD                  L a‚  TRI                  U4S j5        T" UR0                  5        T" [
        RJ                  " U5      5        T" U5        U R8                  R;                  / [M        SS5      Q[=        S
5      P5        SnGM  [	        U[
        R@                  5      (       a¤  URU                  5       (       a�  TRW                  SS5        TRY                  S5        T" UR0                  5        T" [
        RJ                  " U5      5        T" U5        U R8                  R;                  / [[        S5      Q[=        S
5      P5        SnGMÏ  TR*                  R,                  R/                  U5        T" U5        T" U5        U R8                  R;                  [=        SUS9/5        SnGM-     U(       a  U R]                  U5        g g )NFz1Expected GlobalSource for NewGlobalVariable, got ÚSTORE_GLOBALrµ  Tr½   Ú__dict__c                  óD   >• T R                  [        R                  S5      $ )NÚ object_delattr_ignore_descriptorrï  rñ  s   €rE   rk   Ú-_codegen_attribute_mutation.<locals>.<lambda>Ÿ  s   ø€  × 3Ñ 3Ü!ŸN™NØ>ô!rD   r‡  rÿ  ÚDELETE_ATTRc                  óD   >• T R                  [        R                  S5      $ )NÚ object_setattr_ignore_descriptorrï  rñ  s   €rE   rk   rÓ  ¼  s   ø€ ˜×+Ñ+Ü—N‘NÐ$FôrD   rþ  rü  rL  rý  Ú
STORE_ATTR)/r8   r9   r2   rÊ  rà   r   r‚  r]  rÀ  rœ  rÂ  r†  rÅ  r‡  rÈ  ri  rš   r  r†   r%  r´  rÈ   rø   Úupdate_co_namesr  r   rÁ   rr   r:   rc   r   r  r[  r)   r  r  r	  r  r   r  r'   r  Úneeds_slow_setattrrð  r  r   r;   )	rf   r9   r2   Úside_effect_occurredrI   r½   r  Úoriginal_dictrë  s	           @rE   Ú_codegen_attribute_mutationrÜ  Z  sš  ø€ ð 
�‰€BØ
�'‰'€CØ×#Ñ#€LÜ& s×+Ñ+Øô 	�3œ	×9Ñ9×:Ñ:Ø×$Ñ$Ø�L‰L÷
ñ 
ð �L‰L×&Ñ&×(Ñ(ä+¨CÕ0Ü	ØŒY×.Ñ.÷
ñ 
à
×
"Ñ
"Ø�‰÷ñ ô 	,¨CÕ0Ü	ØŒY×/Ñ/÷
ñ 
à
×
"Ñ
"Ø�‰÷ñ ô 	-¨SÔ1ð !ÐÜ × AÑ A× EÑ EÀcÈ2Ó N× TÑ TÓ V×W‰ˆØ$×;Ñ;¸CÓFˆÜ�cœ9×6Ñ6×7Ñ7Ø�E‰E�L‰L×(Ñ(¨Ô.ÙˆuŒIÜ˜cŸj™j¬,×7Ñ7Ü$ðÜ §
¡
Ó+Ð,ð.óð ð �L‰L×ÑÔ!3°NÈ4Ñ!PÐ QÔRØ#'Ò Ü˜œy×8Ñ8×9Ò9ä˜3¤	× CÑ C×DÑDØ!Ô%5×%CÑ%CÒCä '¬°°W¸dÓ(CÀZÐQSÓ T�ð Ó(Ø×$Ñ$ôôñ �s—z‘z”NÙ”y×1Ò1°$Ó7Ô8Ø—L‘L×'Ñ'ðÜ1°!°UÓ;ðä.¨yÓ9ðôð ,0Ó(ò )ô& ˜C×-Ñ-Ô/H×IÑIÌgÜ˜˜W dÓ+¨T÷Oñ Oð —‘—‘×,Ñ,¨TÔ2Ù�3—:‘:”Ø—‘×#Ñ#Ô%7¸ÈdÑ%SÐ$TÔUØ'+Ó$òOÒIô �sœI×?Ñ?×@Ñ@ØÔ!1×!?Ñ!?Ò?à×Ñôôñ
 ˆs�z‰zŒNÙŒy×)Ò)¨$Ó/Ô0ÙˆuŒIØ�L‰L×ÑðÜ)¨!¨UÓ3ðä& yÓ1ðôð $(Ó ä�sœI×?Ñ?×@Ñ@Ø×&Ñ&×(Ñ(ð ×Ñ 
¨HÔ5Ø�N‰N˜=Ô)Ùˆs�z‰zŒNÙŒy×)Ò)¨$Ó/Ô0ÙˆuŒIØ�L‰L×ÑÐ WÔ"4°QÓ"7Ð WÔ9KÈIÓ9VÐ WÔXØ#'Ó à�E‰E�L‰L×(Ñ(¨Ô.ÙˆuŒIÙˆsŒGØ�L‰L×ÑÔ!3°LÈÑ!NÐ OÔPØ#'Ó ñg Xöj Ø�‰��ð rD   Úlist_iterator_mutationc                 óJ   • [        U R                  [        R                  5      $ rU   )rà   r9   r   ÚListIteratorVariablerƒ  s    rE   rk   rk   ä  s   € œ
 3§7¡7¬I×,JÑ,JÔKrD   é   c                 óˆ  ^• U R                   mU R                  n[        U[        R                  5      (       d  [        [        U5      5      e[        UR                  5       HL  nTR                  U4S j5        T" UR                  5        TR                  SS5        TR                  5         MN     U R                  U5        g )Nc                  óD   >• T R                  [        R                  S5      $ ©NÚ	iter_nextrï  rñ  s   €rE   rk   Ú1_codegen_list_iterator_mutation.<locals>.<lambda>í  ó   ø€  ×!4Ñ!4´U·^±^À[Ô!QrD   r   F)r8   r9   rà   r   rß  rÁ   rr   Úranger½  r	  r  rª  Úpop_topr;   ©rf   r9   rÓ   rë  s      @rE   Ú_codegen_list_iterator_mutationrê  â  sŒ   ø€ ð 
�‰€BØ
�'‰'€CÜ�cœ9×9Ñ9×:Ñ:ÜœT #›YÓ'Ð'Ü�3—9‘9ÖˆØ
×ÑÔQÔRÙ
ˆ3�:‰:ŒØ
×Ñ˜˜EÔ"Ø
�
‰
Žñ	 ð
 ‡G�GˆC…LrD   Úcount_iterator_mutationc                 óJ   • [        U R                  [        R                  5      $ rU   )rà   r9   r   ÚCountIteratorVariablerƒ  s    rE   rk   rk   ö  s   € œ
 3§7¡7¬I×,KÑ,KÔLrD   é   c                 óˆ  ^• U R                   mU R                  n[        U[        R                  5      (       d  [        [        U5      5      e[        UR                  5       HL  nTR                  U4S j5        T" UR                  5        TR                  SS5        TR                  5         MN     U R                  U5        g )Nc                  óD   >• T R                  [        R                  S5      $ rã  rï  rñ  s   €rE   rk   Ú2_codegen_count_iterator_mutation.<locals>.<lambda>ÿ  ræ  rD   r   F)r8   r9   rà   r   rí  rÁ   rr   rç  Úadvance_countr	  r  rª  rè  r;   ré  s      @rE   Ú _codegen_count_iterator_mutationró  ô  sŽ   ø€ ð 
�‰€BØ
�'‰'€CÜ�cœ9×:Ñ:×;Ñ;ÜœT #›YÓ'Ð'Ü�3×$Ñ$Ö%ˆØ
×ÑÔQÔRÙ
ˆ3�:‰:ŒØ
×Ñ˜˜EÔ"Ø
�
‰
Žñ	 &ð
 ‡G�GˆC…LrD   Úrandom_mutationc                 óJ   • [        U R                  [        R                  5      $ rU   )rà   r9   r   ÚRandomVariablerƒ  s    rE   rk   rk     s   € œ
 3§7¡7¬I×,DÑ,DÔErD   é
   c                 ó¶  ^^• U R                   mU R                  m[        T[        R                  5      (       d  [        [        T5      5      eSUU4S jjnTR                  U5        T" TR                  TR                  R                  5       5      5        U R                  R                  / [        SS5      Q[        S5      P5        U R                  T5        g )Nc                  óL   >• T " TR                   5        T R                  S5        g )NÚsetstate)r  r-  rø  s   €€rE   r(  Ú(_codegen_random_mutation.<locals>.gen_fn  s   ø€ Ù
ˆ3�:‰:ŒØ
�‰�ZÕ rD   r   Frÿ  rb   )r8   r9   rà   r   rö  rÁ   rr   r	  Ú
wrap_stateÚrandomÚgetstater:   rc   r   r   r;   )rf   r(  rë  r9   s     @@rE   Ú_codegen_random_mutationrÿ    s±   ù€ ð 
�‰€BØ
�'‰'€CÜ�cœ9×3Ñ3×4Ñ4ÜœT #›YÓ'Ð'÷!ð !ð ×Ñ�VÔÙ€s‡~�~�c—j‘j×)Ñ)Ó+Ó,Ô-à‡L�L×Ñð	
Ü! ! UÓ+ð	
ä˜yÓ)ð	
ôð ‡G�GˆC…LrD   rÈ   r0   r¶   c              #   óþ   #   • U R                   R                  R                  n SU R                   R                  l        Sv •  XR                   R                  l        g! XR                   R                  l        f = f7f)zÐContext manager to temporarily allow side effects with extra outputs.

This is used for special cases (like FSDP functions) that need to perform
side effects even when the general policy is to disallow them.
TN)rø   rù   rÿ   ©rÈ   Úorig_vals     rE   rÿ   rÿ   !  sW   é € ð �y‰y×'Ñ'×AÑA€HðFØ=Aˆ�	‰	× Ñ Ô:Ûà=E�	‰	× Ñ Õ:ø¸X�	‰	× Ñ Õ:üó   ‚!A=¤A ÁA=ÁA:Á:A=c              #   ó4  #   • U R                   R                  R                  n SU R                   R                  l        SU R                   R                  l        S v •  XR                   R                  l        g ! XR                   R                  l        f = f7frÊ  )rø   rù   rú   Ú+traced_with_externally_visible_side_effectsr  s     rE   Ú2allow_externally_visible_side_effects_in_subtracerr  2  sj   é € ð �y‰y×'Ñ'×TÑT€HðYØPTˆ�	‰	× Ñ ÔMØOSˆ�	‰	× Ñ ÔLÛàPX�	‰	× Ñ ÕMøÐPX�	‰	× Ñ ÕMüs   ‚!B¤:A9 ÁBÁ9BÂBc              #   óþ   #   • U R                   R                  R                  n SU R                   R                  l        S v •  XR                   R                  l        g ! XR                   R                  l        f = f7frÊ  )rø   rù   r  r  s     rE   Ú"disallow_side_effects_in_generatorr  ?  sW   é € ð �y‰y×'Ñ'×CÑC€HðHØ?Cˆ�	‰	× Ñ Ô<Ûà?G�	‰	× Ñ Õ<ø¸x�	‰	× Ñ Õ<ür  )rrz  r”   r|  Údataclassesr  rJ  ro  rB  r@  r£   Úcollections.abcr   r   r   Útypesr   Útypingr   r   rØ   Útorch.nnr  r
   Útorch._library.utilsr   Útorch.utils._ordered_setr   Útorch.utils._pytreer   r*  r   r   r   r   Úbytecode_transformationr   r   r   r   r   r8   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-   rz  r.   Útorch._dynamo.output_graphr/   Útorch._dynamo.symbolic_convertr0   Útorch._dynamo.variables.listsr1   r]  ÚgetArtifactLoggerr=   r[  Ú	dataclassr5   r÷   rM   rN   Ú SideEffectReplayHandlerDecoratorrG   rQ   ry   rz   rL   rO   r   rì   r‹   rB   r�   r–   r7   rŒ  r•  rž  r«  r²  rÂ  rÅ  rÈ  rÊ  rÜ  rê  ró  rÿ  r}  rÿ   r  r  r<   rD   rE   Ú<module>r     sÈ  ðñó. Û Û Û Û Û Û Û Û ß ?Ñ ?Ý ß %ã Û Ý HÝ 3Ý /Ý 2ç 9Ó 9÷õ õ ß NÑ Nß VÕ V÷õ ÷	÷ 	ó 	õ <ö Ý6ÝHÝ:ð —>‘>×3Ñ3°H¸nÓMÐ ð ×Ò˜dÑ#÷+ð +ó $ð+ð #Ð$;Ð#<¸dÐ#BÑCÐ Ø"Ð$;Ð#<¸dÐ#BÑCÐ Ø#+ØÐÐ6Ð6ñ$Ð  ð
 ×Ò˜dÑ#÷ð ó $ð÷ñ ñ>  9Ó:Ð ðBØ$ðBàôBð ò	à
ðð %ðð ð	ð
 &õð,
.Ø�C˜�H‰~ð
.Ø(,¨S°#¨X©ð
.ØCFð
.à	ô
.ð$ 4¨¡9ð $°t¸C±yð $ÀTô $ð
3 Sð 3°Cð 3¸Dô 3÷N$ñ N$ñb* %Ø	ÙCØñð
Ð 7ð ¸Dó óð
ñ& %Ø	ÙJØñð
%Ð!8ð %¸Tó %óð
%ñP %Ø	%ñð ñð%Ð-Dð %Èó %óð%ñP %Ø	-ñð ñðØ	 ðà	óóðñ$ %Ø	ñ'àñ	ðÐ 7ð ¸Dó óðð 4Ð-Dð 4Èô 4ðn%Ð-Dð %Èô %ðP%Ð.Eð %È$ô %ðP¨ð ¸Tô ñ8 %Ø	ÙGØñð
@Ð%<ð @Àó @óð
@ñF %Ø	!ÙKØñð

Ð)@ð 
ÀTó 
óð

ñ %Ø	"ÙLØñð

Ð*Að 
Àdó 
óð

ñ %Ø	ÙEØñð
Ð"9ð ¸dó óð
ð, ×ÑðFØ#ðFàÐÑ óFó ðFð  ×Ñð	YØ#ð	YàÐÑ ó	Yó ð	Yð ×ÑðHØ#ðHàÐÑ óHó ñHrD   