+
    –°³jûA ã                   óà	  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHtHt ^ RIHtHt ^ RIHt ^ RIHtHtHtHtHtHtH t H!t! ^ RI"H#t#H$t$H%t% ^ RI&t&^ RI't(^ RI)t(^ RI*H+t, ^ RI-t(^ RI.H/u H0t1 ^ RI(H2t2H3t3 ^ RI4H5t5 ^ R	I6H7t7H8t8 ^ R
I'H9t9H:t:H;t;H<t<H=t=H>t> ^ RI?H@t@ ^ RIAHBtB ^ RICHDtD ^ RIEHFtF ^ RIGHHtH ^ RIIHJtJ ^ RIKHLtL ^ RIMHNtNHOtOHPtPHQtQHRtRHStS ^ RITHUtU ^ RIVHWtW ^ RIXHYtY ^ RIZH[t[ ^RI\H]t]H^t^Ht_H`t` ^RIaHbtbHctc ^RIdHeteHftfHgtgHhthHitiHjtjHktkHltlHmtmHntnHotoHptp ^RIqHqtq ^RIrHsts ^RItHutu ^RIvHwtw ^RI^HxtxHytyHztzH{t{H|t| ^RI}H~t~Ht ^R I€H�t� ^R!I‚HƒtƒH„t„ ^R"I…H†t† ^R#I5H‡t‡Hˆtˆ ^R$I‰HŠtŠ ^R%I‹HŒtŒH�t�HŽtŽ ^R&I�H�t�H‘t‘H’t’H“t“H”t”H•t•H–t–H—t—H˜t˜H™t™HštšH›t›HœtœH�t�HžtžHŸtŸ ^R'I/H t H¡t¡H¢t¢H£t£H¤t¤H¥t¥H¦t¦H§t§H¨t¨H©t©HªtªH«t«H¬t¬H­t­H®t®H¯t¯H°t°H±t±H²t²H³t³H´t´Hµtµ ^R(I¶H·t·H¸t¸H¹t¹Hºtº ^R)I»H¼t¼ ^R*I½H¾t¾H¿t¿ ^R+IÀHÁtÁ ^R,IÂHÃtÃ ^R-IÄHÅtÅ ^R.IÆHÇtÇHÈtÈHÉtÉ ^R/IÊHËtË ^R0IÌHÍtÍ ]'       d%   ^ R1IÎHÏtÏ ^ R2IÐHÑtÑ ^ R3IÒHÓtÓ ^ R4IÔHÕtÕ ^ R5IÖH×t× ^ R6IØHÙtÙ ]EP´                  ! ]Û4      tÜ](EPº                  EP½                  ]ÛR74      tß](EPº                  EP½                  ]ÛR84      tà](EPº                  EP½                  ]ÛR94      tá](EPº                  EP½                  ]ÛR:4      tâ]5EPÆ                  tã]ä](EPÊ                  ,          R,          tæ]]æ,          tç]Rr,          tè ! R; R<] 4      té ! R= R>] 4      tê ! R? R@]4      të](EPØ                  EPÚ                  EPÜ                  tï](EPØ                  EPÚ                  EPà                  tñRA RB ltò]! RCRD7       ! RE RF4      4       tó]! RCRD7       ! RG RH4      4       tôRsRI RJ lltõ]EPì                  RK RL l4       t÷] ! RM RN4      4       tøRO RP ltù ! RQ RR](EPØ                  EPÚ                  4      tú ! RS RT4      tû]ü]ý]þ3,          tÿ] ! RU RV4      4       Et ] ! RW RX4      4       Et] ! RY RZ4      4       Et] ! R[ R\4      4       EtR] R^ lEtR_ R` lEtRa Rb lEt ! Rc RdE]4      Et ! Re RfE]4      Et ! Rg Rh4      Et	RiEt
Rj Rk lEt]EP                  ! 4       Et]$! Rl4      Et]%! Rm4      Et ! Rn Ro4      Et ! Rp Rq]2EP"                  4      EtR# )ta¶  
Core graph building functionality for PyTorch's Dynamo system. This module contains
the essential components for constructing and managing FX graphs during compilation:

- OutputGraph: Manages the overall graph construction and compilation process. It owns
  a SubgraphTracer and handles graph compilation, execution, and state management.
  OutputGraph also manages features like graph deduplication, symbolic shape handling,
  and tracking of side effects.

- SubgraphTracer: Handles the actual FX graph construction by tracing Python code.
  It supports advanced features like higher-order operators through nested tracers,
  lifting of free variables, and handling of symbolic shapes.

The module supports key Dynamo features including:
- Higher-order operators through nested SubgraphTracers
- Graph deduplication for optimization
- Symbolic shape handling and propagation
- Side effect tracking and management
- Guard insertion and management
N)ÚCallableÚ	GeneratorÚSequence)Ú	dataclassÚfield)ÚCodeType)ÚAnyÚcastÚLiteralÚ
NamedTupleÚOptionalÚTYPE_CHECKINGÚ	TypedDictÚUnion)ÚNotRequiredÚ	ParamSpecÚTypeVar)ÚfxÚTensor)Úguards)ÚShortenTracebackÚTensorifyScalarRestartAnalysis)ÚCompileContextÚ	CompileIdÚGlobalContextCheckpointStateÚSourceÚtracingÚTracingContext)ÚFakeScriptObject)Úis_custom_class)Ú
FakeTensor)Úsignpost_event)Ú_ConstraintTarget)Ú_make_graph_module)ÚBackwardState)Úfree_symbolsÚguard_scalarÚis_symbolicÚShapeEnvÚSpecializationÚuninteresting_files)ÚTarget)Úinsert_deferred_runtime_asserts)Ú
OrderedSet)Úis_traceable_wrapper_subclass)ÚconfigÚexcÚloggingÚ	variables)Ú
CompiledFnÚ
CompilerFn)Úcreate_binary_sliceÚcreate_binary_subscrÚcreate_build_tupleÚcreate_call_functionÚcreate_dup_topÚcreate_instructionÚcreate_load_constÚcreate_rot_nÚcreate_swapÚInstructionÚmake_compiled_fn_nameÚ	unique_id)Úcode_context©Ú	PyCodegen)Úenter_new_scope)Úget_interface_for_device)ÚBackendCompilerFailedÚ!exceptions_allowed_to_be_fallbackÚ	SkipFrameÚunimplementedÚunimplemented_with_warning)Úhas_user_objectsÚindex_to_bytecode_constructor)Úapply_graph_deduplication)Ú#get_backend_override_for_compile_idÚ+get_inductor_config_override_for_compile_id)ÚGraphRegionTracker)ÚGuardBuilderÚinstall_guard)Úis_dynamic_nn_module)ÚAttributeMutationExistingÚSideEffectsÚValueMutationExisting)Ú_get_source_debug_nameÚ
AttrSourceÚBackwardStateSourceÚConstantSourceÚDictGetItemSourceÚGetItemSourceÚGlobalStateSourceÚis_constant_sourceÚis_from_local_sourceÚLocalSourceÚNumpyTensorSourceÚParamBufferSourceÚShapeEnvSourceÚSyntheticLocalSourceÚTensorPropertyÚTensorPropertySource)Ú_extract_tensor_dictÚ_get_cudagraph_overrideÚcheckpoint_paramsÚCleanupHookÚclone_inputsÚcompilation_time_metricsÚcount_callsÚcountersÚdynamo_timedÚget_chromium_event_loggerÚget_instruction_source_311Úget_locals_to_stealÚget_static_address_typeÚget_unique_name_wrtÚgraph_break_reasonsÚincrement_op_countÚistypeÚlazy_format_graph_codeÚ
LazyStringÚnn_module_proxyÚsameÚset_example_value)ÚBackwardStateGraphArgÚGraphArgÚTrackedFakeÚwrap_fx_proxy)ÚContextWrappingVariable)ÚClosureConversionErrorÚVariableTracker)ÚBaseListVariable)ÚNullVariable)ÚNNModuleVariable)ÚNumpyNdarrayVariableÚSymNodeVariableÚUnspecializedPythonVariable)ÚTensorWithTFOverrideVariable)ÚUserDefinedDictVariable©ÚDynamoProfilerState)ÚCompilePackage)ÚInstructionTranslatorBase)ÚLocalGeneratorObjectVariable©Ú_CudagraphAnnotation)ÚStorageWeakRefÚgraphÚ
graph_codeÚgraph_sizesÚ
trace_callc                   ó,   a € ] tR t^Ót o V 3R ltRtV tR# )ÚSizesStridesInfoc                ój   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   # )é   ÚsizeÚstrideÚvalues_sizeÚvalues_stride)ÚTensorMetadataSequencer   )ÚformatÚ__classdict__s   "€Ú[/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_dynamo/output_graph.pyÚ__annotate__ÚSizesStridesInfo.__annotate__Ó   sA   ø‡ ‚ Ù
 Ñ ñ á"Ñ"ñ ñ Ñ3Õ4Ñ4ñ ñ Ñ5Õ6Ñ6ò	 ó    © N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r¢   s   @r£   r™   r™   Ó   ó   ø‡ ‡ „ r¦   r™   c                   ó,   a € ] tR t^Út o V 3R ltRtV tR# )ÚCodeOptionsc                óv  <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[;R&   S[S[R3,          ;R	&   S[S[R3,          ;R
&   S[S[R3,          ;R&   S[;R&   S[;R&   S[S[,          ;R&   S[ ;R&   S[;R&   S[S[,          ;R&   S[S[R3,          ;R&   S[S[R3,          ;R&   # )r›   Úco_argcountÚco_posonlyargcountÚco_kwonlyargcountÚ
co_nlocalsÚco_stacksizeÚco_flagsÚco_code.Ú	co_constsÚco_namesÚco_varnamesÚco_filenameÚco_nameÚco_qualnameÚco_firstlinenoÚco_linetableÚco_exceptiontableÚco_freevarsÚco_cellvars)ÚintÚbytesÚtupleÚobjectÚstrr   )r¡   r¢   s   "€r£   r¤   ÚCodeOptions.__annotate__Ú   s  ø‡ ‚ ÙÑñ áÑñ ñ Ññ ñ �Oñ	 ñ
 Ññ ñ �Mñ ñ �Nñ ñ ‘V˜S�[Õ!Ñ!ñ ñ ‘C˜�H�oÑñ ñ ‘s˜C�x•Ñ ñ ñ Ññ ñ �Lñ ñ ™SÕ!Ñ!ñ ñ Ññ ñ Ññ ñ  #¡5Õ)Ñ)ñ! ñ" ‘s˜C�x•Ñ ñ# ñ$ ‘s˜C�x•Ñ ò% r¦   r§   Nr¨   r°   s   @r£   r³   r³   Ú   r±   r¦   r³   c                   ó,   a € ] tR t^ït o V 3R ltRtV tR# )ÚOutputReturnInfoc                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   # )r›   ÚkindÚvalue)ÚOutputReturnKindrÊ   )r¡   r¢   s   "€r£   r¤   ÚOutputReturnInfo.__annotate__ï   s   ø‡ ‚ Ù
Ññ á�Mò r¦   r§   Nr¨   r°   s   @r£   rÎ   rÎ   ï   r±   r¦   rÎ   c                óx   € V ^8„  d   QhR\         R\        \        \         3,          R\        R\         3,          /# )r›   Úcompiler_fnÚconfig_patchesÚreturn.)r   ÚdictrË   r   )r¡   s   "r£   r¤   r¤   û   s5   € ÷ ñ ÜðÜ&*¬3´¨8¥nðäˆc”3ˆhÕñr¦   c                óP   a a€ R V V3R llp\        S RR4      Vn        S Vn        V# )zÚ
Wrap a compiler function to apply inductor config patches during compilation.

Passes config_patches as a keyword argument so that compile_fx can
propagate them to backward compilation via its inner_compile wrapping.
c                ó<   € V ^8„  d   QhR\         R\         R\         /# ©r›   ÚgmÚexample_inputsr×   ©r   )r¡   s   "r£   r¤   Ú0_wrap_with_inductor_config.<locals>.__annotate__  s&   € ÷ Nñ N”Cð N¬ð N´ñ Nr¦   c                 ó   <€ S! WSR 7      # ))rÖ   r§   )rÜ   rÝ   rÕ   rÖ   s   &&€€r£   ÚwrappedÚ+_wrap_with_inductor_config.<locals>.wrapped  s   ø€ Ù˜2¸nÔMÐMr¦   r©   z	<wrapped>)Úgetattrr©   Ú__wrapped__)rÕ   rÖ   rá   s   ff r£   Ú_wrap_with_inductor_configrå   û   s/   ù€ ÷Nñ Nô ˜{¨J¸ÓD€GÔØ%€GÔØ€Nr¦   T)Úfrozenc                   ó,   a € ] tR tRt o V 3R ltRtV tR# )ÚAliasingInfoi  c                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   # )r›   Úhas_aliasingÚmsg)ÚboolrË   )r¡   r¢   s   "€r£   r¤   ÚAliasingInfo.__annotate__  s   ø‡ ‚ áÑñ ñ 
�Hò r¦   r§   Nr¨   r°   s   @r£   rè   rè     r±   r¦   rè   c                   ó0   a € ] tR tRt o RtV 3R ltRtV tR# )ÚMutationInfoi  c                óR   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[S[R3,          ;R&   # )r›   Úhas_mutationrë   .Úmutated_input_indices)rì   rË   rÉ   rÇ   )r¡   r¢   s   "€r£   r¤   ÚMutationInfo.__annotate__  s1   ø‡ ‚ áÑñ ñ 
�Hñ ñ !¡ c �?Ñ/ò	 r¦   r§   N)r©   rª   r«   r¬   rò   r­   r®   r¯   r°   s   @r£   rï   rï     s   ø‡ € ð .0Ð÷	 ƒ r¦   rï   c                óH  € V ^8„  d   QhR\         \        \        P                  \        R,          3,          ,          R\
        \        P                  P                  P                  ,          R,          R\
        \        P                  P                  P                  ,          /# )r›   Útensors_with_sourcesNÚstop_atr×   )	ÚlistrÉ   Útorchr   rË   ÚsetÚautogradr”   ÚNode)r¡   s   "r£   r¤   r¤     sl   € ÷ )ñ )Üœu¤U§\¡\´3¸µ:Ð%=Õ>Õ?ð)ä”—‘×%Ñ%×*Ñ*Õ+¨dÕ2ð)ô 	Œ�‰×	Ñ	×	"Ñ	"Õ#ñ)r¦   c                ó¨  € Vf   \        4       p\        4       p. pV  FJ  w  rE\        V\        P                  4      '       g   K'  VP                  pVf   K9  VP                  V4       KL  	  V'       d`   VP                  4       pWr9   d   K   Wq9   d   K(  VP                  V4       VP                   F  w  r…Vf   K  VP                  V4       K  	  Kg  V# )a¸  Collect all grad_fns reachable from tensors' autograd graphs.

Performs a DFS traversal and collects all visited grad_fns.
Optionally stops traversal nodes in stop_at set. This signals the
autograd.grad boundary.

Args:
    tensors_with_sources: List of (tensor, source_name) tuples to start search from.
    stop_at: Optional set of grad_fns where traversal should stop (excluded from result).

Returns:
    Set of all reachable grad_fns.
)	rù   Ú
isinstancerø   r   Úgrad_fnÚappendÚpopÚaddÚnext_functions)	rõ   rö   ÚvisitedÚstackÚtensorÚ_rþ   ÚnodeÚnext_fns	   &&       r£   Úcollect_reachable_grad_fnsr	    s­   € ð" ‚Ü“%ˆä.1«e€GØ-/€Eã)‰	ˆÜ�fœeŸl™l×+Ô+Ø—n‘nˆGØÔ"Ø—‘˜WÖ%ñ	 *÷ Ø�y‰y‹{ˆØŒ?Ùð Œ?ÙØ�‰�DÔØ×-Ô-‰JˆGØÔ"Ø—‘˜WÖ%ó .ð €Nr¦   c                ó$   € V ^8„  d   QhR\         /# ©r›   r×   rÞ   )r¡   s   "r£   r¤   r¤   H  s   € ÷ 4ñ 4”cñ 4r¦   c                  ó6   € \         P                  ! \        4      # ©N)Útorchdynamo_loggingÚget_step_loggerÚlogr§   r¦   r£   Ú_step_loggerr  G  s   € ä×.Ò.¬sÓ3Ð3r¦   c                   óF   a € ] tR tRt o RtRtV 3R lR ltV 3R ltRtV t	R# )	ÚGraphCompileReasoniL  zOStores why a given output graph was compiled; i.e. what caused the graph break.Tc                ó   <€ V ^8„  d   QhRR/# ©r›   r×   Nr§   )r¡   r¢   s   "€r£   r¤   ÚGraphCompileReason.__annotate__V  s   ø€ ÷ -ñ -˜tñ -r¦   c                óZ   € V P                   '       d   \        P                  ! V 4       R # R # r  )Úgraph_breakru   rÿ   ©Úselfs   &r£   Ú__post_init__Ú GraphCompileReason.__post_init__V  s!   € Ø××ÐÜ×&Ò& tÖ,ñ r¦   c                ób   <€ V ^8„  d   Qh/ S[ ;R&   S[S[P                  ,          ;R&   S[;R&   # )r›   ÚreasonÚ
user_stackr  )rË   r÷   Ú	tracebackÚFrameSummaryrì   )r¡   r¢   s   "€r£   r¤   r  L  s6   ø‡ ‚ ñ �Kñ	 ñ
 ‘Y×+Ñ+Õ,Ñ,ñ ñ Ñò r¦   r§   N)
r©   rª   r«   r¬   Ú__doc__r  r  r­   r®   r¯   r°   s   @r£   r  r  L  s    ø‡ € áYð €K÷-ð -÷ ƒ r¦   r  c                ó`   € V ^8„  d   QhR\         R\        . \        \         ,          3,          /# )r›   Úrandom_callsr×   )r   r   r÷   )r¡   s   "r£   r¤   r¤   [  s'   € ÷ ñ ¬#ð ´(¸2¼tÄC½y¸=Õ2Iñ r¦   c                 ó   a € R  V 3R llpV# )c                ó:   € V ^8„  d   QhR\         \        ,          /# r  )r÷   r   )r¡   s   "r£   r¤   Ú-_get_gen_rand_values_fn.<locals>.__annotate__\  s   € ÷ Jñ Jœd¤3�iñ Jr¦   c            
      óN   <€ S U UUu. uF  w  rq ! V/ VB NK  	  uppp # u uppp i r  r§   )ÚfnÚargsÚkwargsr$  s      €r£   Ú_gen_rand_valuesÚ1_get_gen_rand_values_fn.<locals>._gen_rand_values\  s*   ø€ Ù<HÕI¹LÑ(8¨°&��DÐ#˜FÔ#¹LÓIÐIùÔIs   ˆ r§   )r$  r,  s   f r£   Ú_get_gen_rand_values_fnr.  [  s   ø€ ÷Jð Jð Ðr¦   c                   óf   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltV3R lR ltR	tVt	V ;t
# )
ÚFakeRootModuleib  z'Trick the constructor of fx.GraphModulec                ób   <€ V ^8„  d   QhRS[ S[S[P                  P                  3,          RR/# ©r›   Ú
nn_modulesr×   N©rØ   rË   rø   ÚnnÚModule)r¡   r¢   s   "€r£   r¤   ÚFakeRootModule.__annotate__e  s-   ø€ ÷  ñ  ¡4©©U¯X©X¯_©_Ð(<Õ#=ð  À$ñ  r¦   c                ón   <€ \         SV `  4        VP                  4        F  w  r#\        WV4       K  	  R # r  )ÚsuperÚ__init__ÚitemsÚsetattr)r  r3  ÚkÚvÚ	__class__s   &&  €r£   r:  ÚFakeRootModule.__init__e  s-   ø€ Ü‰ÑÔØ×$Ñ$Ö&‰DˆAÜ�D˜QÖó 'r¦   c                ó    <€ V ^8„  d   QhRS[ /# r  ©rË   )r¡   r¢   s   "€r£   r¤   r7  j  s   ø€ ÷ %ñ %™#ñ %r¦   c                ó   € R # )zFakeRootModule(...)r§   r  s   &r£   Ú__repr__ÚFakeRootModule.__repr__j  s   € Ù$r¦   c                ób   <€ V ^8„  d   QhRS[ S[S[P                  P                  3,          RR/# r2  r4  )r¡   r¢   s   "€r£   r¤   r7  m  s-   ø€ ÷  ñ  ©©c±5·8±8·?±?Ð.BÕ)Cð  Èñ  r¦   c                óP   € VP                  4        F  w  r#\        WV4       K  	  R # r  )r;  r<  )r  r3  r=  r>  s   &&  r£   Úadd_nn_modulesÚFakeRootModule.add_nn_modulesm  s!   € Ø×$Ñ$Ö&‰DˆAÜ�D˜QÖó 'r¦   r§   )r©   rª   r«   r¬   r"  r:  rD  rH  r®   r¯   Ú__classcell__©r?  r¢   s   @@r£   r0  r0  b  s+   ù‡ € Ù1÷ ó  ÷
%ð %÷ ÷  ð  r¦   r0  c                   óD   a € ] tR tRt o V 3R lR ltV 3R lR ltRtV tR# )ÚWrapperBackendir  c                ó$   <€ V ^8„  d   QhRS[ RR/# )r›   Úbackendr×   N)r4   )r¡   r¢   s   "€r£   r¤   ÚWrapperBackend.__annotate__s  s   ø€ ÷ +ñ +¡
ð +¨tñ +r¦   c                ó   € Wn         R # r  )rO  )r  rO  s   &&r£   r:  ÚWrapperBackend.__init__s  s   € Ø#*Žr¦   c                óx   <€ V ^8„  d   QhRS[ P                  P                  RS[S[ P                  ,          RS[/# rÛ   )rø   r   ÚGraphModuler÷   r   r3   )r¡   r¢   s   "€r£   r¤   rP  v  s8   ø€ ÷ ñ Ù—(‘(×&Ñ&ðÙ8<¹U¿\¹\Õ8Jðá	ñr¦   c                óÒ  € \        V4      V n        Wn        \        P                  ! V P                  4      pV P                  W24      V n        V P                  e%   V P                  V P                  P                  J d   V P                  P                  # \        P                  '       g   V P                  #  V P                  P                  ! \        V4      !  pV P                  ! \        V4      !  p\        WE4      '       d   V P                  V P                  4        # \        RV  24      h  \         d    \        P                  R4       h i ; i  T P                  4        i ; i)Nzincorrect results of backend zerror in verify_correctness)ri   ÚrestorerÜ   ÚcopyÚdeepcopyrO  Ú	candidateÚforwardr/   Úverify_correctnessrk   r{   ÚRuntimeErrorÚ	Exceptionr  Ú	exception)r  rÜ   rÝ   Úcopy_gmÚcorrectÚresults   &&&   r£   Ú__call__ÚWrapperBackend.__call__v  s  € ô )¨Ó,ˆŒØŒÜ—-’- §¡Ó(ˆØŸ™ gÓ>ˆŒà�>‰>Ò! T§^¡^°t·w±w·±Ó%FØ—7‘7—?‘?Ð"ä×(×(Ð(Ø—>‘>Ð!ð	Ø—g‘g—o’o¤|°NÓ'CÑDˆGØ—^’^¤\°.Ó%AÑBˆFô �G×$Ò$Ø—~‘~ð �L‰L�Nô Ð!>¸t¸fÐEÓFÐFøäô 	Ü�M‰MÐ7Ô8Øð	ûð �L‰L�Nús   Â8AD/ Ä!D/ Ä/"EÅE ÅE&)rO  rY  rÜ   rV  N©r©   rª   r«   r¬   r:  rb  r®   r¯   r°   s   @r£   rM  rM  r  s   ø‡ € ÷+ð +÷ö r¦   rM  c                   óR   a € ] tR tRt o Rt^ t^ t^ t^ tV 3R lR lt	V 3R lt
RtV tR# )ÚBytecodeTracingTimingsi™  aH  Accumulated wall-clock time (ns) for major components during Dynamo
bytecode tracing that are not related to variable trackers.  Each field
is an int accumulator that gets bumped via ``time.time_ns()`` in the
corresponding hot-path wrapper.  To add a new timer, add a field here
and wire up the wrapper in the relevant function.c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   Ú#BytecodeTracingTimings.__annotate__¦  s   ø€ ÷ Nñ N $ñ Nr¦   c                ó¤  € \        4       p/ p\        P                  ! V 4       F�  p\        WP                  4      pV^ 8”  g   K!  VP                  P                  R4      pVR,          W% R2&   \        P                  ! V. 4      P                  VR,          4       \        WP                  ^ 4       K�  	  V'       d   VP                  ! R/ VB  R# R# )zzFlush accumulated timings to the bytecode_tracing chromium event
and to compilation_time_metrics, then reset all counters.Ú_nsg    eÍÍAÚ_time_sN)Úbytecode_tracing)rp   ÚdataclassesÚfieldsrã   ÚnameÚremovesuffixrl   Ú
setdefaultrÿ   r<  Útry_add_event_data)r  Úchromium_logÚ
event_dataÚfÚns_valÚkeys   &     r£   Úreport_and_resetÚ'BytecodeTracingTimings.report_and_reset¦  s©   € ô 1Ó2ˆàˆ
Ü×#Ò# DÖ)ˆAÜ˜T§6¡6Ó*ˆFØ˜ŽzØ—f‘f×)Ñ)¨%Ó0�Ø.4°s­l�
˜U '˜?Ñ+Ü(×3Ò3°C¸Ó<×CÑCÀFÈSÅLÔQÜ˜Ÿf™f aÖ(ñ *÷ Ø×+Ò+ÑMÀ*ÔMñ r¦   c                óJ   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   # )r›   Úget_fake_value_nsÚcreate_proxy_nsÚ!wrap_to_fake_tensor_and_record_nsÚvariable_builder_call_ns©rÇ   )r¡   r¢   s   "€r£   r¤   rh  ™  s9   ø‡ ‚ ñ Ññ ñ Ññ ñ (+Ñ.ñ ñ "Ñ%ò r¦   r§   N)r©   rª   r«   r¬   r"  r{  r|  r}  r~  rx  r­   r®   r¯   r°   s   @r£   rf  rf  ™  s6   ø‡ € ñ9ð ÐØ€OØ-.Ð%Ø$%Ð÷Nð N÷ ƒ r¦   rf  c                   ó¦   a € ] tR tRt o RtRtRtRtRt]	V 3R lR l4       t
]	V 3R lR l4       t]	V 3R	 lR
 l4       tV 3R lR ltV 3R ltRtV tR# )ÚOutputGraphGuardsStatei·  aZ  
A base class containing fields that are considered "persistent" when we
want to save all the important state for reconstrucing guards in a different
process. Normally we don't need to add states here, but we may have to when
the information is needed to serialize the guards, so the fields here are
supposed to be serializable as a requirement.
FNc                ó    <€ V ^8„  d   QhRS[ /# r  ©r(   )r¡   r¢   s   "€r£   r¤   Ú#OutputGraphGuardsState.__annotate__×  s   ø€ ÷ Sñ S™8ñ Sr¦   c                ó0   € \        R \        V 4       24      h)z%shape_env shouldn't be accessed from )ÚAssertionErrorÚtyper  s   &r£   Ú	shape_envÚ OutputGraphGuardsState.shape_envÖ  s   € äÐDÄTÈ$ÃZÀLÐQÓRÐRr¦   c                óH   <€ V ^8„  d   QhRS[ P                  P                  /# r  ©rø   Ú_guardsÚ	GuardsSet)r¡   r¢   s   "€r£   r¤   r„  Û  s   ø€ ÷ ñ ™Ÿ™×/Ñ/ñ r¦   c                ó   € V P                   # r  )rŒ  r  s   &r£   r   ÚOutputGraphGuardsState.guardsÚ  s   € à�|‰|Ðr¦   c                óX   <€ V ^8„  d   QhRS[ S[P                  P                  ,          /# r  ©r÷   rø   rŒ  ÚGuardEnvExpr)r¡   r¢   s   "€r£   r¤   r„  ß  s#   ø€ ÷ (ñ (¡D©¯©×)CÑ)CÕ$Dñ (r¦   c                ó   € V P                   # r  )Ú_aotautograd_guardsr  s   &r£   Úaotautograd_guardsÚ)OutputGraphGuardsState.aotautograd_guardsÞ  s   € à×'Ñ'Ð'r¦   c                ó   <€ V ^8„  d   QhRR/# )r›   r×   r�  r§   )r¡   r¢   s   "€r£   r¤   r„  â  s   ø€ ÷ 
ñ 
Ð#;ñ 
r¦   c                ób  € \        V P                  V P                  V P                  V P                  V P
                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  R 7      # ))Úlocal_scopeÚglobal_scopeÚtorch_function_mode_stackÚguard_on_key_orderÚinput_source_to_sizes_stridesÚ
dual_levelÚfunctorch_layersÚcurrent_deviceÚglobal_state_guardÚ%name_of_builtins_dict_key_in_fglobalsÚexportÚexport_constraintsrŒ  r”  Úskip_guards_check)r�  r™  rš  r›  rœ  r�  rž  rŸ  r   r¡  r¢  r£  r¤  r   r•  r¥  r  s   &r£   Údump_guards_stateÚ(OutputGraphGuardsState.dump_guards_stateâ  s�   € ä%Ø×(Ñ(Ø×*Ñ*Ø&*×&DÑ&DØ#×6Ñ6Ø*.×*LÑ*LØ—‘Ø!×2Ñ2Ø×.Ñ.Ø#×6Ñ6Ø26×2\Ñ2\Ø—;‘;Ø#×6Ñ6Ø—K‘KØ $× 7Ñ 7Ø"×4Ñ4ô
ð 	
r¦   c                óX  <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[S[P                  P                  ,          ;R&   S[S[,          ;R&   S[S[S[3,          ;R&   S[	;R&   S[S[P                  P                  P                  ,          ;R&   S[P                  R,          ;R	&   S[P                  P                  P                   P"                  ;R
&   S[P$                  P&                  ;R&   S[S[P$                  P(                  ,          ;R&   S[;R&   S[;R&   S[;R&   S[R,          ;R&   # )r›   r™  rš  r›  rœ  r�  rž  rŸ  Nr   r¡  rŒ  r”  r£  r¥  r¤  r¢  )ÚScoper÷   rø   Ú	overridesÚTorchFunctionModerù   r   rØ   r™   rÇ   Ú
_functorchÚpyfunctorchÚFuncTorchInterpreterÚdeviceÚ_CÚ_dynamor   ÚGlobalStateGuardrŒ  r�  r’  rì   rË   )r¡   r¢   s   "€r£   r¤   r„  ·  s8  ø‡ ‚ ñ Ññ ñ Ññ ñ  $¡E§O¡O×$EÑ$EÕFÑFñ ñ ™F�Ñ#ñ ñ  $(©Ñ0@Ð(@Õ#AÑAñ! ñ" �Oñ# ñ$ ™5×+Ñ+×7Ñ7×LÑLÕMÑMñ% ñ& —L‘L 4Õ'Ñ'ñ' ñ( Ÿ™×(Ñ(×/Ñ/×@Ñ@Ñ@ñ) ñ* �]‰]×$Ñ$Ñ$ñ+ ñ, ™eŸm™m×8Ñ8Õ9Ñ9ñ- ñ4 Ññ5 ñ6 Ñ#ñ7 ñ8 Ñ$ñ9 ñ: ,/°­:Ñ<ò; r¦   r§   )r©   rª   r«   r¬   r"  r£  r¥  r¤  r¢  Úpropertyrˆ  r   r•  r¦  r­   r®   r¯   r°   s   @r£   r�  r�  ·  sq   ø‡ € ñð0 €FØ#ÐØ$ÐØ8<Ð)à÷Só ðSð ÷ó ðð ÷(ó ð(÷
ð 
÷W ƒ r¦   r�  c                   ó    a € ] tR tRt o Rt^ t]! ]R7      t]! ]	R7      t
]! ]	R7      t]! ]	R7      t]! ]	R7      t]! ]	R7      tV 3R ltRtV tR# )ÚStackLocalsMetadatai÷  z^
Stores metadata for a frame's stack and locals for the purposes of building resume functions
©Údefault_factoryc                ó(  <€ V ^8„  d   Qh/ S[ ;R&   S[S[S[ 3,          ;R&   S[S[ ,          ;R&   S[S[,          ;R&   S[S[S[ S[S[R3,          3,          ,          ;R&   S[S[ ,          ;R&   S[S[S[S[S[R3,          3,          ,          ;R&   # )	r›   Ú	num_stackÚlocals_namesÚstack_null_idxesÚlocals_null_keys.Ústack_ctx_argsÚstack_ctx_idxes_origÚlocals_ctx_args)rÇ   rØ   rË   r÷   rÉ   rÊ   )r¡   r¢   s   "€r£   r¤   Ú StackLocalsMetadata.__annotate__÷  sª   ø‡ ‚ ñ Ññ ñ ‘s™C�x•.ñ ñ ñ ™3•iÑ@ñ ñ ™3•iÑ@ñ ñ ™™s¡E©&°#¨+Õ$6Ð6Õ7Õ8ñ ñ ñ ™s�)ÑDñ ñ  ™%¡¡U©6°3¨;Õ%7Ð 7Õ8Õ9ñ ò! r¦   r§   N)r©   rª   r«   r¬   r"  r¹  Údc_fieldrØ   rº  r÷   r»  r¼  r½  r¾  r¿  r­   r®   r¯   r°   s   @r£   rµ  rµ  ÷  sd   ø‡ € ñð €IÙ#+Øô$€Lñ #+¸4Ô"@ÐÙ"*¸4Ô"@ÐÙ;CØô<€Nñ '/¸tÔ&DÐÙ<DØô=€O÷! ƒ r¦   rµ  c                   ó¢   a € ] tR tRt o ]! ]R7      t]! ]R7      t]P                  P                  P                  t]! ]R7      tV 3R ltRtV tR# )ÚExportMetaDatai  r¶  c                óÀ  <€ V ^8„  d   Qh/ S[ S[S[R,          3,          ;R&   S[ S[S[3,          ;R&   S[P
                  P                  P                  S[P
                  P                  P                  ,          ;R&   S[ S[	S[ S[	S[P
                  P                  P                  S[P
                  P                  P                  ,          3,          3,          ;R&   # )r›   NÚgraph_input_idx_to_local_sourceÚoutput_return_typeÚout_specÚmodule_call_spec)
rØ   rÇ   r   rÎ   rø   ÚutilsÚ_pytreeÚTreeSpecÚLeafSpecrË   )r¡   r¢   s   "€r£   r¤   ÚExportMetaData.__annotate__  s½   ø‡ ‚ ñ
 &*©#©v¸­}Ð*<Õ%=ñ ñ ñ ™SÑ"2Ð2Õ3ÑTñ ñ �k‰k×!Ñ!×*Ñ*©U¯[©[×-@Ñ-@×-IÑ-IÕIñ ñ ñ" ÙÙ‰S‘%—+‘+×%Ñ%×.Ñ.±·±×1DÑ1D×1MÑ1MÕMÐMÕNð	Põñ 'ò# r¦   r§   N)r©   rª   r«   r¬   rÁ  rØ   rÅ  rÆ  rø   rÉ  rÊ  Ú
_LEAF_SPECrÇ  rÈ  r­   r®   r¯   r°   s   @r£   rÃ  rÃ    sU   ø‡ € ñ
 AIØôAÐ#ñ 7?ÈtÔ6TÐð 	�‰×Ñ×&Ñ&ð ñ 	 Ô&ð ÷# ƒ r¦   rÃ  c                ó†   € V ^8„  d   QhR\         P                  R\        \         P                  \        3,          R\        /# )r›   r  Úcanonical_idxr×   )r   rû   rØ   rÇ   rÊ   )r¡   s   "r£   r¤   r¤   $  s2   € ÷ 4ñ 4œŸ™ð 4´´b·g±g¼s°lÕ1Cð 4Ìñ 4r¦   c                óÚ   € V P                   R8X  dN   V P                  P                  R4      pVe)   VP                  e   VP                  P                  p^ V3# Rp^ V3# ^ RIHp V! W4      # )z¢Canonical heap key for Dynamo output graph nodes.

Placeholders are sorted by grapharg source name; all other ops delegate
to the shared ``_canonical_node_key``.
ÚplaceholderÚgraphargÚ )Ú_canonical_node_key)ÚopÚmetaÚgetÚsourcero  Útorch.fx.passes.canonicalizerÕ  )r  rÐ  rÓ  Úsource_namerÕ  s   &&   r£   Ú_canonical_keyrÜ  $  sm   € ð ‡w�w�-ÔØ—9‘9—=‘= Ó,ˆØÒ H§O¡OÒ$?Ø"Ÿ/™/×.Ñ.ˆKð �;ÐÐð ˆKØ�;ÐÐÝ@á˜tÓ3Ð3r¦   c                ó<   € V ^8„  d   QhR\         P                  RR/# )r›   r”   r×   N)r   ÚGraph)r¡   s   "r£   r¤   r¤   6  s"   € ÷ Cñ CœrŸx™xð C¨Dñ Cr¦   c                ó2   € ^ RI HpHp V! V \        V4       R# )z¸Canonicalize a Dynamo output graph's node order and names.

Delegates to ``torch.fx.passes.canonicalize.canonicalize_graph`` with
Dynamo-specific key generation and barrier detection.
)Ú_is_safe_to_reorderÚcanonicalize_graphN)rÚ  rà  rá  rÜ  )r”   rà  rá  s   &  r£   Ú_canonicalize_graphrâ  6  s   € ÷ Uá�uœnÐ.AÖBr¦   c                óR   € V ^8„  d   QhR\         R\        \        \        3,          /# )r›   rš  r×   )r©  rØ   rË   r   )r¡   s   "r£   r¤   r¤   A  s"   € ÷ ñ ¤Eð ¬d´3¼°8­nñ r¦   c                 ó\   € V R ,          p\        V\        4      '       g   VP                  pV# )Ú__builtins__)rý   rØ   Ú__dict__)rš  Ú
f_builtinss   & r£   Úget_builtins_dictrè  A  s,   € ð ˜nÕ-€JÜ�j¤$×'Ò'Ø×(Ñ(ˆ
ØÐr¦   c                   óx   a a€ ] tR tRt oRtR
V3R lV 3R lllt]V3R lR l4       tRV3R lR lltR	t	Vt
V ;t# )ÚOutputGraphCommoniU  a¡  
A minimal interface for full graph capture. It is intended to be
the target of any tracer that feeds into backends.

Currently dynamo's OutputGraph is the only known implementation
of this interface, used by (aot) precompile and (strict) export.
Importantly, that implementation also contains many other fields
that are using during tracing but not included in this interface
because they are not used once tracing is complete.

It should be safe to assume that (caching) precompile also uses
this interface.

In the future, we want make_fx, used by (non-strict) export, to
also implement this interface.

The serializable part of this interface is OutputGraphGuardsState.
We do not need to serialize other parts; however it will pay to
be disciplined about what those other parts are, especially since
we want other tracers to be able to meaningfully implement them,
and we should generally try to cut them down when possible.
c                óò   <€ V ^8„  d   QhRS[ RS[S[S[3,          R,          RS[R,          RS[R,          RS[S[S[S[,          3,          R,          RS[S[S[,          R,          ,          R,          RR/# )	r›   Úoutput_graph_guards_stateÚimport_sourcesNrˆ  Úexport_metadataÚtracked_fakes_id_to_sourceÚoutput_pycoder×   )r�  rØ   rË   r(   rÃ  rÇ   r÷   r   )r¡   r¢   s   "€r£   r¤   ÚOutputGraphCommon.__annotate__m  s�   ø€ ÷ &1ñ &1á#9ð&1ñ ™S¡#˜X�¨Õ-ð&1ñ ˜d•?ð	&1ñ
 (¨$Õ.ð&1ñ %)©©d±6­lÐ):Õ$;¸dÕ$Bð&1ñ ™D¡�I¨Õ,Õ-°Õ4ð&1ð 
ñ&1r¦   c                ó8  <€ \         SV `  VP                  VP                  VP                  VP
                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                   4       T;'       g    / V n        T;'       g    \%        4       V n        T;'       g    \)        4       V n        T;'       g    / V n        T;'       g    . V n        R # r  )r9  r:  r™  rš  r›  rœ  r�  rž  rŸ  r   r¡  rŒ  r”  r£  r¥  r¤  r¢  rí  r(   Ú
_shape_envrÃ  rî  rï  rð  )r  rì  rí  rˆ  rî  rï  rð  r?  s   &&&&&&&€r£   r:  ÚOutputGraphCommon.__init__m  sö   ø€ ô 	‰ÑØ%×1Ñ1Ø%×2Ñ2Ø%×?Ñ?Ø%×8Ñ8Ø%×CÑCØ%×0Ñ0Ø%×6Ñ6Ø%×4Ñ4Ø%×8Ñ8Ø%×-Ñ-Ø%×9Ñ9Ø%×,Ñ,Ø%×7Ñ7Ø%×8Ñ8Ø%×KÑKô	
ð$ -×2Ð2°ˆÔð $×1Ð1¤x£zˆŒØ.×BÐB´.Ó2BˆÔà&×,Ð,¨"ð 	Ô'ð +×0Ð0¨bˆÖr¦   c                ó    <€ V ^8„  d   QhRS[ /# r  rƒ  )r¡   r¢   s   "€r£   r¤   rñ  –  s   ø€ ÷ ñ ™8ñ r¦   c                ó   € V P                   # r  )ró  r  s   &r£   rˆ  ÚOutputGraphCommon.shape_env•  s   € à�‰Ðr¦   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# ©r›   r  r+  r×   N©rË   r   )r¡   r¢   s   "€r£   r¤   rñ  ™  s"   ø€ ÷ "ñ "¡Sð "¹ð "Àñ "r¦   c                ó   € \         hr  )ÚNotImplementedError©r  r  r+  s   &&,r£   Úbypass_packageÚ OutputGraphCommon.bypass_package™  s
   € ô "Ð!r¦   )ró  rî  rí  rð  rï  )NNNNN©rÔ  )r©   rª   r«   r¬   r"  r:  r³  rˆ  rþ  r®   r¯   rJ  rK  s   @@r£   rê  rê  U  s8   ù‡ € ñ÷.&1õ &1ðP ÷ó ð÷"÷ "ò "r¦   rê  c                   ó0  a € ] tR tRt o RtR¯V 3R lR lltV 3R lR ltV 3R lR	 ltR
R/V 3R lR lltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltR°V 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltR±V 3R  lR! lltV 3R" lR# ltV 3R$ lR% lt]V 3R& lR' l4       t]V 3R( lR) l4       tV 3R* lR+ ltV 3R, lR- ltR.tV 3R/ lR0 lt]V 3R1 lR2 l4       t]P:                  V 3R3 lR4 l4       t]V 3R5 lR6 l4       t]V 3R7 lR8 l4       t]V 3R9 lR: l4       t V 3R; lR< lt!V 3R= lR> lt"V 3R? lR@ lt#]$PJ                  R±V 3RA lRB ll4       t&]V 3RC lRD l4       t']V 3RE lRF l4       t(]V 3RG lRH l4       t)]V 3RI lRJ l4       t*]V 3RK lRL l4       t+]V 3RM lRN l4       t,R±V 3RO lRP llt-V 3RQ lRR lt.V 3RS lRT lt/]V 3RU lRV l4       t0V 3RW lRX lt1V 3RY lRZ lt2V 3R[ lR\ lt3V 3R] lR^ lt4V 3R_ lR` lt5R²V 3Ra lRb llt6V 3Rc lRd lt7]8V 3Re lRf l4       t9V 3Rg lRh lt:V 3Ri lRj lt;V 3Rk lRl lt<V 3Rm lRn lt=R³V 3Ro lRp llt>V 3Rq lRr lt?V 3Rs lRt lt@V 3Ru lRv ltAR´V 3Rw lRx lltBV 3Ry lRz ltCV 3R{ lR| ltD]$PJ                  V 3R} lR~ l4       tEV 3R lR€ ltFV 3R� lR‚ ltGV 3Rƒ lR„ ltHV 3R… lR† ltI]V 3R‡ lRˆ l4       tJ]V 3R‰ lRŠ l4       tKV 3R‹ lRŒ ltLV 3R� lRŽ ltMV 3R� lR� ltNV 3R‘ lR’ ltOV 3R“ lR” ltPV 3R• lR– ltQV 3R— lR˜ ltRV 3R™ lRš ltSR±V 3R› lRœ lltTV 3R� lRž ltUV 3RŸ lR  ltVV 3R¡ lR¢ ltWV 3R£ lR¤ ltXV 3R¥ lR¦ ltYV 3R§ lR¨ ltZV 3R© lRª lt[V 3R« lR¬ lt\V 3R­ lt]R®t^V t_R# )µÚOutputGraphi   ac  
Wrapper class to hold outputs of InstructionTranslator.  Mainly the
generated fx.Graph.

OutputGraph is 1:1 with a frame being processed. Each frame is associated
with some root InstructionTranslator. When user code calls a function,
we construct a InliningInstructionTranslator that continues to write into
the root InstructionTranslator's OutputGraph.
Fc                óÈ   <€ V ^8„  d   QhRS[ RS[R,          RRRS[RS[S[,          RS[R	S[R
S[RS[RS[S[	P                  P                  ,          RS[R,          RS[RR/# )r›   Úcode_optionsrÕ   NÚroot_txr�   r£  r¤  Úframe_stater™  rš  Úf_coder›  ÚpackagerŽ   Ú	one_graphr×   )r³   r4   rì   r   r"   r   r©  r   r÷   rø   rª  r«  r   )r¡   r¢   s   "€r£   r¤   ÚOutputGraph.__annotate__­  sË   ø€ ÷ mUñ mUá!ðmUñ   $Õ&ðmUð -ð	mUñ
 ðmUñ %Ñ%6Õ7ðmUñ ðmUñ ðmUñ ðmUñ ðmUñ $(©¯©×(IÑ(IÕ#JðmUñ Ð*Õ+ðmUñ ðmUð 
ñmUr¦   c                óž  € \         P                  T TTT
\        4       / \        P                  P
                  P                  \        P                  P                  P                  4       \        P                  P                  P                  \        P                  P                  P                  ;'       g3    \        P                   P                  P"                  P%                  4       \        P&                  P)                  4       . R 7       \+        WR7      .V n        / V n        . V n        W@n        WPn        W`n        . V n        \;        \<        4      V n        \        4       V n         RV	PB                  RV	PD                  RV	PF                  /V n$        RV n%        \M        4       ;pe$   ^ RI'H(p V! V^ ,          V^,          R7      V n%        \S        4       V n*        RV n+        / V n,        . V n-        \]        V PZ                  T;'       g    \^        P`                  T;'       g    \^        Pb                  \^        Pd                  V PH                  R	7      p^ RI3Hu H/p VPi                  RR
7      ;_uu_ 4        \        Pj                  Pm                  V\o        V P2                  4      V P2                  R7      pRRR4       \q        X4      V n9        V Pr                  Pt                  Pw                  V	4       V PJ                  V Pr                  n%        V Pr                  Pt                  V n:        \x        Pz                  ! 4       V n>        V P                  4        \^        P€                  e(   ^ RIAHBp V! V P†                  \^        P€                  4       \ˆ        PŠ                  ! \Œ        4      V nG        / V nH        \“        V 4      V nJ        . V nK        / V nL        / V nM        \        4       V nN        / V nO        \         P¢                  ! 4       V nR        \§        \¨        \«        V4      4      V nV        . V nW        . V nX        ^ V nY        / V nZ        RV n[        . V n\        W n]        W0n^        RV n_        W°n`        / V na        . V nb        . V nc        RV nd        / V ne        \        P                   PÍ                  4       V ng        RV nh        RV ni        \        4       V nj        \        / 4      V nk        \        / 4      V nl        V PÛ                  4        / V nn        . V no        RV np        . V nq        / V nr        / V ns        RV nt        RV nu        V Pí                  4       V nw        \ð        Pò                  ! 4       V nz        \÷        4       V n|        V Pû                  4       V n~        / V n        E\        4       V n�        E\        4       V nƒ        / V n„        RV n…        R#   + '       g   i     EL; i))rœ  r�  rž  rŸ  r   r¡  rŒ  r”  )Ú	is_exportrÀ   r¿   rÂ   Nr‘   )ÚfwdÚbwdF)Útracked_fakesÚallow_scalar_outputsÚallow_dynamic_output_shape_opsÚ+prefer_deferred_runtime_asserts_over_guardsÚ	co_fields©Ú(fake_tensor_allow_unsafe_data_ptr_access)rˆ  Úallow_non_fake_inputsr£  )Ú_wire_spec_assumptions)†r�  r:  rù   rø   rú   Ú
forward_adÚ_current_levelr¬  r­  Ú#retrieve_all_functorch_interpretersrÉ  Ú_deviceÚCURRENT_DEVICEr±  Úconvert_frameÚinitial_global_stater°  r   r²  rŒ  r�  ÚSubgraphTracerÚtracersÚinput_source_to_varÚleaf_var_creation_orderr£  r¤  r  Úcleanup_hooksÚnextÚ_compile_id_counterÚ
compile_idÚinstalled_globalsrÀ   r¿   rÂ   r  Úcudagraph_annotationrh   Útorch._inductorr’   rP   Úregion_trackerÚ_emit_debugger_breakpointÚ#_shallow_copy_placeholder_snapshotsr  r(   r/   Úcapture_scalar_outputsÚ capture_dynamic_output_shape_opsr  Útorch._functorch.configÚpatchÚ_subclassesÚFakeTensorModerì   r   Útracing_contextÚtraced_coderÿ   r   Úcurrent_compile_idÚdynamo_compile_idÚinit_ambient_guardsÚ_dynamic_shapes_specÚ%torch.fx.experimental.symbolic_shapesr  rˆ  ÚcollectionsÚdefaultdictr÷   rï  Úparam_name_to_sourcerU   Úside_effectsÚlocal_generatorsÚvariable_tracker_cacheÚmro_source_cacheÚguarded_mro_absent_keysÚsignature_cacheÚ	itertoolsÚcountÚunique_var_idr	   r³   rØ   r  Úoutput_instructionsrð  Ú	timestampÚ_input_mutation_streamsÚ_last_checked_input_versionsÚregister_finalizer_fnsrÕ   r  Úprofiler_stater  Úsource_to_user_stacksÚ_current_txÚcleanupsÚshould_exitÚunspec_variable_mapÚ_is_torch_function_mode_enabledÚtorch_function_mode_enabledÚtorch_function_subclass_inlinedÚ!has_user_defined_allowed_in_graphÚautograd_grad_consumed_grad_fnsÚnon_compliant_opsÚcompliant_custom_opsÚsave_global_stateÚ dynamo_flat_name_to_original_fqnr$  Úrandom_values_varÚpregraph_bytecodeÚsynthetic_source_ctor_infoÚbackward_stateÚbackward_state_proxyÚbackward_state_varÚ!install_builtins_dict_in_fglobalsr¢  Ú
contextlibÚ	ExitStackÚcompiler_trace_stackrf  Úbytecode_tracing_timingsÚ+maybe_install_saved_tensors_hooks_subgraphsÚ"saved_tensors_hooks_subgraph_namesrí  rÃ  rî  r-   Ú"used_inlined_inbuilt_modules_namesÚattr_source_cacheÚ(_cached_replayed_side_effect_source_refs)r  r  rÕ   r  r£  r¤  r  r™  rš  r  r›  r  r	  Ú	_overrideÚ_CGArˆ  Ú_configÚ	fake_moder  s   &&&&&&&&&&&&&      r£   r:  ÚOutputGraph.__init__­  s  € ô 	×'Ñ'ØØØØ%Ü"›uØ*,Ü—~‘~×0Ñ0×?Ñ?Ü"×-Ñ-×9Ñ9×]Ñ]Ó_Ü Ÿ;™;×.Ñ.×=Ñ=ä$Ÿ}™}×:Ñ:×OÑO÷  :ð  :Ü�x‰x×Ñ×&Ñ&×7Ñ7Ó9ä—M‘M×+Ñ+Ó-Ø "ð 	(ô 	
ô" ' tÔ>Ð?ˆŒð CEˆÔ ð ?AˆÔ$ØŒØ"4ÔØ&ÔØ68ˆÔä#Ô$7Ó8ˆŒä+.«5ˆÔð
 �v—~‘~Ø˜6×-Ñ-Ø˜f×3Ñ3ð
ˆŒð  BFˆÔ!Ü0Ó2Ð2ˆIÒ?ÝDá(,°¸1µÀ9ÈQÅ<Ô(PˆDÔ%ä0Ó2ˆÔØ/4ˆÔ&ØVXˆÔ0ð 13ˆÔäð ×,Ñ,à!*×!KÐ!K¬f×.KÑ.KØ+4÷ ,7ð ,7Ü×6Ñ6Ü8>×8jÑ8jØ—n‘nô
ˆ	÷& 	2Ð1à�]‰]ÀEˆ]×JÕJÜ×)Ñ)×8Ñ8Ø#ä&*¨4¯;©;Ó&7Ø—{‘{ð	 9ó ˆI÷ Kô 0>¸iÓ/HˆÔØ×Ñ×(Ñ(×/Ñ/°Ô7Ø48×4MÑ4Mˆ×ÑÔ1Ø×/Ñ/×;Ñ;ˆÔÜ3A×3TÒ3TÓ3VˆÔØ× Ñ Ô"ô ×&Ñ&Ò2ÝTá" 4§>¡>´6×3NÑ3NÔOô ×#Ò#¤DÓ)ð 	Ô'ð ?AˆÔ!Ü'¨Ó-ˆÔð
 EGˆÔð FHˆÔ#ð KMˆÔô
 >A»UˆÔ$à;=ˆÔÜ&Ÿ_š_Ó.ˆÔÜ)-¬k¼4ÀÓ;MÓ)NˆÔØ68ˆÔ Ø57ˆÔð ˆŒð KMˆÔ$ØCGˆÔ)ð OQˆÔ#ð /:ÔØŒð ;?ˆÔàŒð RTˆÔ"à<>ˆÔØ+-ˆŒØ ˆÔØKMˆÔ ô ,1¯8©8×+SÑ+SÓ+UˆÔ(ð 05ˆÔ,ð 27ˆÔ.ô PSËuˆÔ,ô >AÀ»WˆÔô ADÀBÃˆÔ!ð 	×ÑÔ ð ACˆÔ-ð ð 	Ôð '+ˆÔð 57ˆÔð ð 	Ô'ð ;=ˆÔØ;?ˆÔ!Ø.2ˆÔð ×2Ñ2Ó4ð 	Ô2ô %/×$8Ò$8Ó$:ˆÔ!ä(>Ó(@ˆÔ%ð ×<Ñ<Ó>ð 	Ô/ð
 /1ˆÔå-Ó/ˆÔõ DNÃ<ˆÔ/àGIˆÔØPTˆÖ5÷I K×JÐJús   É4A V;Ö;W	c                ó"   <€ V ^8„  d   QhRRRR/# )r›   Úgenr�   r×   Nr§   )r¡   r¢   s   "€r£   r¤   r
  Ü  s   ø€ ÷ *ñ *Ð#Að *Àdñ *r¦   c                ó<   € V P                   P                  V4       R # r  )r>  rÿ   )r  rp  s   &&r£   Útrack_generatorÚOutputGraph.track_generatorÜ  s   € Ø×Ñ×$Ñ$ SÖ)r¦   c                ó"   <€ V ^8„  d   QhRRRR/# ©r›   Útxr�   r×   Nr§   )r¡   r¢   s   "€r£   r¤   r
  ß  s   ø€ ÷ 5ñ 5Ð)Dð 5Èñ 5r¦   c           	     óÌ   € ^RI Hp V! V4      ;_uu_ 4        \        V P                  4       F  pVP	                  VR. / 4       K  	  RRR4       R#   + '       g   i     R# ; i)é   )Ú(temporarely_allow_writes_to_output_graphÚcloseN)Úsymbolic_convertry  r÷   r>  Úcall_method)r  rv  ry  rp  s   &&  r£   Úclose_local_generatorsÚ"OutputGraph.close_local_generatorsß  sF   € ÝNá5°b×9Õ9Ü˜D×1Ñ1Ö2�Ø—‘  G¨R°Ö4ñ 3÷ :×9×9Ò9ús   —1AÁA#	Úpopulate_export_metadatac                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# )r›   r  r×   )rì   r÷   rË   )r¡   r¢   s   "€r£   r¤   r
  æ  s%   ø€ ÷ 9Vñ 9VÙ+/ð9Vá	‰c�ñ9Vr¦   c          	     óÔ  € V'       g@   V P                   P                  '       g$   V P                  e   \        V P                  4      # ^ RIHp . pV P                   P                  4        EFÑ  p\        VR4      '       g   K  VP                  p\        V\        \        34      '       g   KB  \        V\        4      '       Ed3   \        VP                  V4      '       Ed   V'       Ed   VP                  f   \        R4      hVP                  P                   P!                  4        FË  w  pp/ pVP                   P!                  4        F/  w  ršV
P#                  4       W‰P$                  P#                  4       &   K1  	  RR.\        VP'                  4       4      8w  d&   \        R\        VP'                  4       4       24      hVV P(                  P*                  VP$                  P#                  4       &   KÍ  	  \        V\        4      '       d    \        VP                  V4      '       d   EKÀ  VP-                  V4       EKÔ  	  V Uu. uF  p\/        VP0                  4      NK  	  up# u upi )zKReturn Python-side effect sources that Dynamo replays outside the FX graph.)Ú_ExportModuleSpecTrackerDictÚmutation_typezvar._base_vt must not be NoneÚin_specrÇ  z7Expected specs keys to be ['in_spec', 'out_spec'], got )r=  Úid_to_variableri  r÷   Útorch.export._tracer‚  Ú_get_modified_varsÚhasattrrƒ  rý   rT   rV   r‹   rÑ   Ú_base_vtr†  r;  Úas_python_constantÚvtÚkeysrî  rÈ  rÿ   rW   rÙ  )r  r  r‚  Úpotential_side_effectsÚvarÚmut_typer=  r>  ÚspecsÚk_specÚvals   &$         r£   Ú$get_replayed_side_effect_source_refsÚ0OutputGraph.get_replayed_side_effect_source_refsæ  sþ  € ÷
 )Ø×%Ñ%×4×4Ð4Ø×=Ñ=ÒIä˜×EÑEÓFÐFåDà!#ÐØ×$Ñ$×7Ñ7×9ˆCÜ�s˜O×,Ô,Ø×,Ñ,�ô ØÔ8Ô:OÐP÷ô ô " #Ô'>×?Ó?ÄJØŸ	™	Ð#?÷Eó E÷ 4Ð3Ø"Ÿ|™|Ò3Ü&4Ð5TÓ&UÐ Uð
 !$§¡× 2Ñ 2× 8Ñ 8Ö :ñ	!Ø !Ø !ð
 )+ à34·7±7·=±=¶?¡K Fà(+×(>Ñ(>Ó(@ð %*¯)©)×*FÑ*FÓ*HÓ$Iñ 4Cð %.¨zÐ#:¼dÀ5Ç:Á:Ã<Ó>PÔ#PÜ*8Ø*aÔbfÐgl×gqÑgqÓgsÓbtÐauÐ(vó+&ð %&ð %*ð !%× 4Ñ 4× EÑ Eà$%§D¡D×$;Ñ$;Ó$=ó!"ñ !;ô( # 3Ô(?×@Ò@Ü& s§y¡yÐ2N×OÕOà.×5Ñ5°c×:ñS :ñV ?UÓUÑ>T°sÔ& s§z¡zÖ2Ñ>TÑUÐUùÒUs   ÉI%c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r›   ÚbaseÚpathr×   )r   rË   rX   )r¡   r¢   s   "€r£   r¤   r
  !  s"   ø€ ÷ ñ ©Fð ¹#ð Á*ñ r¦   c                ó\  € VP                  R 4      pW^ ,          3pW@P                  9  d    \        W^ ,          4      V P                  V&   V P                  V,          pVR,           FA  pWV3pW@P                  9  d   \        WV4      V P                  V&   V P                  V,          pKC  	  V# )Ú.:rx  NN)Úsplitrh  rX   )r  r–  r—  Úpartsrw  ra  Úparts   &&&    r£   Úget_chained_attr_sourceÚ#OutputGraph.get_chained_attr_source!  sŸ   € Ø—
‘
˜3“ˆØ˜1•XÐˆØ×,Ñ,Ô,Ü*4°TÀ½8Ó*DˆD×"Ñ" 3Ñ'Ø×'Ñ'¨Õ,ˆØ˜"—I�IˆDØ�.ˆCØ×0Ñ0Ô0Ü.8¸Ó.F�×&Ñ& sÑ+Ø×+Ñ+¨CÕ0ŠFñ	 ð
 ˆr¦   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r›   r–  r—  r×   rb   )r   rË   )r¡   r¢   s   "€r£   r¤   r
  .  s%   ø€ ÷ >ñ >Ùð>Ù"%ð>à	ñ>r¦   c                ó°   € VP                  R ^4      p\        V4      ^8X  d   \        W4      # V P                  W^ ,          4      p\        WC^,          4      # )r™  )ÚrsplitÚlenrb   r�  )r  r–  r—  r›  Úintermediate_bases   &&&  r£   Úget_chained_param_buffer_sourceÚ+OutputGraph.get_chained_param_buffer_source.  sO   € ð —‘˜C Ó#ˆÜˆu‹:˜Œ?Ü$ TÓ0Ð0Ø ×8Ñ8¸ÀQ½xÓHÐÜ Ð!2¸!µHÓ=Ð=r¦   c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   r
  7  s   ø€ ÷ ñ ¨Tñ r¦   c                óŒ  € V P                   P                  \        R RR7      4       \        P                  '       dˆ   ^ RIHp V P                  f   V! 4       V n        V P                  P                  pV P                  P                  VP                  VP                  VP                  \        P                  ! 4       4       R# R# )rl  T©Úlog_pt2_compile_eventrŒ   N)rc  Úenter_contextro   r/   Údynamo_profilerÚtorch._dynamo.dynamo_profilerr�   rK  r  r  ÚpushrÀ   r¿   rÂ   ÚtimeÚtime_ns)r  r�   Úcodes   &  r£   Úmark_bytecode_tracing_startÚ'OutputGraph.mark_bytecode_tracing_start7  s–   € Ø×!Ñ!×/Ñ/ÜØ"Ø&*ôô	
ô ×!×!Ð!ÝIà×"Ñ"Ò*Ù&9Ó&;�Ô#Ø—<‘<×&Ñ&ˆDØ×Ñ×$Ñ$Ø—‘Ø× Ñ Ø×#Ñ#Ü—’“ö	ñ "r¦   c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   r
  L  s   ø€ ÷  8ñ  8¨Dñ  8r¦   c                ó  € V P                   P                  4        V P                  P                  4        \        P
                  '       Ed@   V P                  Ee/   ^ RIHp V P                  P                  4       p\        P                  ! 4       pVe£   W2P                  ,
          pWBP                  ,
          pV! VP                  VP                  VP                   VV\#        V P$                  P&                  P(                  4      ^ R R R VP*                  RR7      pV P                  P-                  V4       R p\/        \        P
                  \0        4      '       d   \        P
                  pV P                  P3                  V4       R # R # R # )N)ÚFunctionTraceTiming)Ú	func_nameÚfilenameÚfirstlinenoÚ
cumtime_nsÚ
tottime_nsÚbytecode_countÚinline_depthÚcaller_func_nameÚcaller_filenameÚcaller_firstlinenoÚis_primitive_callÚ
call_stackr§   )rd  rx  rc  rz  r/   r«  rK  r¬  rµ  r   r®  r¯  Ústart_time_nsÚchild_time_nsr¶  r·  r¸  r¢  r  r  r»   rÀ  Úrecord_timingrý   rË   Ú
dump_stats)r  rµ  Ústack_entryÚtrace_end_nsr¹  rº  ÚtimingÚoutput_files   &       r£   Úmark_bytecode_tracing_stopÚ&OutputGraph.mark_bytecode_tracing_stopL  s4  € Ø×%Ñ%×6Ñ6Ô8Ø×!Ñ!×'Ñ'Ô)ä×!×!Ñ! d×&9Ñ&9Ó&EÝIà×-Ñ-×1Ñ1Ó3ˆKÜŸ<š<›>ˆLØÒ&Ø)×,EÑ,EÕE�
Ø'×*CÑ*CÕC�
Ù,Ø)×3Ñ3Ø(×1Ñ1Ø +× 7Ñ 7Ø)Ø)Ü#& t§|¡|×':Ñ':×'BÑ'BÓ#CØ!"Ø%)Ø$(Ø'+Ø&1×&CÑ&CØ!ô�ð ×#Ñ#×1Ñ1°&Ô9ð ˆKÜœ&×0Ñ0´#×6Ò6Ü$×4Ñ4�Ø×Ñ×*Ñ*¨;Ö7ñ9 'FÑ!r¦   c                ó    <€ V ^8„  d   QhRS[ /# r  rB  )r¡   r¢   s   "€r£   r¤   r
  n  s   ø€ ÷ Dñ D±3ñ Dr¦   c                óP   € \        V P                  4      pV P                  R V4      # )Ú__builtins_dict__)rè  rš  Úinstall_global)r  rç  s   & r£   r`  Ú-OutputGraph.install_builtins_dict_in_fglobalsn  s&   € Ü& t×'8Ñ'8Ó9ˆ
Ø×"Ñ"Ð#6¸
ÓCÐCr¦   c                ój   <€ V ^8„  d   QhRS[ RS[RS[S[S[P                  P
                  3,          /# )r›   ÚhookÚprefixr×   )rƒ   rË   rÉ   rø   r   ÚProxy)r¡   r¢   s   "€r£   r¤   r
  r  s7   ø€ ÷ 	5ñ 	5Ù#ð	5Ù-0ð	5á	‰s‘E—H‘H—N‘NÐ"Õ	#ñ	5r¦   c                ó°   € V \        V P                  4       2pW0P                  9   d   \        R V R24      hWP                  V&   W0P                  4       3# )zbackward_state hook name 'z' already registered)r¢  r]  r†  Úget_backward_state_proxy)r  rÒ  rÓ  ro  s   &&& r£   Úadd_backward_state_hookÚ#OutputGraph.add_backward_state_hookr  sf   € ð �œ#˜d×1Ñ1Ó2Ð3Ð4ˆØ×&Ñ&Ô&Ü Ø,¨T¨FÐ2FÐGóð ð %)×Ñ˜DÑ!Ø×2Ñ2Ó4Ð4Ð4r¦   c                óH   <€ V ^8„  d   QhRS[ P                  P                  /# r  )rø   r   rÔ  )r¡   r¢   s   "€r£   r¤   r
  }  s   ø€ ÷ )ñ )©%¯(©(¯.©.ñ )r¦   c                óv  € V P                   f¡   V P                  '       d   \        RRR. R7       \        4       pV P                  P                  R\        V4      V\        4       R7      V n         \        4       V P                   P                  P                  R&   V P                  4       V n        V P                   # )Nz&backward_state does not support exportrÔ  z3Compiled autograd doesn't work with `torch.export`.©Úgb_typeÚcontextÚexplanationÚhintsÚdynamo_backward_state©rÙ  rÓ  )r^  r£  rI   r$   Úroot_tracerÚcreate_graph_inputr‡  rY   r}   r  r×  Únew_varr_  )r  Úexample_values   & r£   rÖ  Ú$OutputGraph.get_backward_state_proxy}  s£   € Ø×$Ñ$Ò,Ø�{�{ˆ{ÜØDØØ UØõ	ô *›OˆMØ(,×(8Ñ(8×(KÑ(KØ'Ü�]Ó#ØÜ*Ó,ð	 )Ló )ˆDÔ%ô ?TÓ>UˆD×%Ñ%×*Ñ*×/Ñ/°
Ñ;Ø&*§l¡l£nˆDÔ#Ø×(Ñ(Ð(r¦   c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   r
  ’  s   ø€ ÷ ñ  Tñ r¦   c                ó¶  € V P                   P                  \        4       P                  \        P
                  4      4       V P                   P                  \        4       P                  \        P                  4      4       V P                   P                  \        4       P                  \        P                  4      4       V P                   P                  \        4       P                  \        P                  4      4       V P                   P                  \        4       P                  \        P                  4      4       V P                   P                  \        4       P                  \        P                  4      4       \        P                  P                  P                  4       pVeA   V P                   P                  \        4       P                  \        P                   4      4       \        P"                  P$                  P&                  '       gC   V P                   P                  \        4       P                  \        P(                  4      4       R # R # r  )r   r  rc   Ú
make_guardrQ   Ú	SHAPE_ENVr]   ÚDETERMINISTIC_ALGORITHMSÚ	GRAD_MODEÚDEFAULT_DEVICEÚGLOBAL_STATEÚTORCH_FUNCTION_STATErø   r°  r¬  Úpeek_interpreter_stackÚFUNCTORCH_STACK_MATCHr±  Úcompiled_autogradÚin_compiled_autograd_regionÚAUTOGRAD_SAVED_TENSORS_HOOKS)r  Úcis   & r£   r7  ÚOutputGraph.init_ambient_guards’  su  € ð 	�‰�‰œÓ(×3Ñ3´L×4JÑ4JÓKÔLà�‰�‰ÜÓ×*Ñ*¬<×+PÑ+PÓQô	
ð 	�‰�‰Ô)Ó+×6Ñ6´|×7MÑ7MÓNÔOà�‰�‰Ô)Ó+×6Ñ6´|×7RÑ7RÓSÔTà�‰�‰Ô)Ó+×6Ñ6´|×7PÑ7PÓQÔRØ�‰�‰ÜÓ×*Ñ*¬<×+LÑ+LÓMô	
ô �X‰X× Ñ ×7Ñ7Ó9ˆØŠ>Ø�K‰K�O‰OÜ!Ó#×.Ñ.¬|×/QÑ/QÓRôô �}‰}×.Ñ.×J×JÐJØ�K‰K�O‰OÜ!Ó#×.Ñ.Ü ×=Ñ=óöñ Kr¦   c                ó>   <€ V ^8„  d   QhRS[ S[,          R,          /# r  )r÷   rË   )r¡   r¢   s   "€r£   r¤   r
  °  s   ø€ ÷ !:ñ !:¹TÁ#½YÈÕ=Mñ !:r¦   c                ó¶  € \         P                  P                  P                  '       d   R # \         P                  P
                  P                  P                  p\         P                  P
                  P                  P                  pV! 4       pV! V4      '       g   R # Vw  rEV P                  R\         P                  P                  V P                  VP                  4      4      pV P                  R\         P                  P                  V P                  VP                  4      4      pVR8w  d   \        RV R24      hVR8w  d   \        RV R24      hWg.# )NÚsaved_tensors_hooks_packÚsaved_tensors_hooks_unpackÚsaved_tensors_hooks_pack_0zEExpected pack_subgraph_name to be 'saved_tensors_hooks_pack_0', got 'Ú'Úsaved_tensors_hooks_unpack_0zIExpected unpack_subgraph_name to be 'saved_tensors_hooks_unpack_0', got ')rø   r±  rò  ró  r¬  Ú_aot_autogradrÉ  Útop_saved_tensors_hooksÚ"saved_tensors_hooks_are_inlineableÚinstall_subgraphr   rT  r3  r”   r†  )r  Ú	get_hooksÚare_inline_hooksÚhooksÚpack_gmÚ	unpack_gmÚpack_subgraph_nameÚunpack_subgraph_names   &       r£   re  Ú7OutputGraph.maybe_install_saved_tensors_hooks_subgraphs°  s4  € Ü�=‰=×*Ñ*×F×FÐFÙä×$Ñ$×2Ñ2×8Ñ8×PÑPˆ	ä×Ñ×*Ñ*×0Ñ0×SÑSð 	ñ “ˆÙ ×&Ò&Ùð #ÑˆØ!×2Ñ2Ø&Ü�H‰H× Ñ  §¡°'·-±-Ó@ó
Ðð  $×4Ñ4Ø(Ü�H‰H× Ñ  §¡°)·/±/ÓBó 
Ðð Ð!=Ô=Ü ØWÐXjÐWkÐklÐmóð ð  Ð#AÔAÜ Ø[Ð\pÐ[qÐqrÐsóð ð #Ð9Ð9r¦   Nc                óŠ   <€ V ^8„  d   QhRS[ RS[3,          RS[S[R3,          RS[S[R,          R3,          R,          RS[/# )r›   r)  .r*  Úctor_arg_sourcesNr×   )r   r   rÉ   r   rƒ   )r¡   r¢   s   "€r£   r¤   r
  Ó  sW   ø€ ÷ $ñ $á�S™#�XÕð$ñ ‘C˜�H�oð$ñ  ¡¨¥¨sÐ 2Õ3°dÕ:ð	$ñ
 
ñ$r¦   c                óú  aa€ S! V!  pV P                  4       p\        V P                  4      oSP                  VV3R l4       V'       d#   SP	                  R \        W#4       4       4       M3SP	                  \        \        P                  P                  V4      4       SP                  \        V4      R4       SP                  V4       V P                  P                  SP                  4       4       \!        V4      pSW#3V P"                  V&   \$        P&                  ! V P                  WF4      pVP)                  4       p\*        P,                  ! 4       P.                  P0                  P3                  V4       V# )zM
call fn(*args) before the graph runs and turn the result into a fake input.
c                  óP   <€ S P                  SP                  SP                  4      # r  )Úload_import_fromrª   r©   )Úcgr)  s   €€r£   Ú<lambda>Ú3OutputGraph.synthetic_graph_input.<locals>.<lambda>à  s   ø€ �B×'Ñ'Ø—‘Ø—‘ôr¦   c              3   óp   "  € T F,  w  rVe   TM\         P                  P                  V4      x € K.  	  R # 5ir  )r2   ÚConstantVariableÚcreate)Ú.0r’  Úsrcs   &  r£   Ú	<genexpr>Ú4OutputGraph.synthetic_graph_input.<locals>.<genexpr>æ  s3   é € ð á ;‘H�Cð ’‘¬I×,FÑ,F×,MÑ,MÈcÓ,RÔRÛ ;ùs   ‚46F)rä  rC   r  Úadd_push_nullÚforeachÚzipÚmapr2   r  r  Úcall_functionr¢  Ústorer[  ÚextendÚget_instructionsrd   r\  rƒ   ÚbuildÚrealizer   rØ  Úguards_contextÚdynamo_guardsÚremove_guards_with_source)	r  r)  r*  r  rå  ÚvarnamerÙ  ra  r  s	   &f&&    @r£   Úsynthetic_graph_inputÚ!OutputGraph.synthetic_graph_inputÓ  s)  ù€ ñ ˜D™	ˆØ—,‘,“.ˆÜ�t—|‘|Ó$ˆØ
×Ñõô	
÷ Ø�J‰Jñ ä # DÔ ;óõ ð
 �J‰J”sœ9×5Ñ5×<Ñ<¸dÓCÔDØ
×Ñœ˜T› EÔ*Ø
�‰�ÔØ×Ñ×%Ñ% b×&9Ñ&9Ó&;Ô<Ü% gÓ.ˆØ35°tÐ2Nˆ×'Ñ'¨Ñ/Ü ×&Ò& t§|¡|°]ÓKˆà—‘Ó!ˆÜ×ÒÓ×+Ñ+×9Ñ9×SÑSØô	
ð ˆr¦   c                ó8   <€ V ^8„  d   QhRS[ . S[3,          RR/# )r›   r)  r×   N)r   r   )r¡   r¢   s   "€r£   r¤   r
  ù  s$   ø€ ÷ &ñ &¡8¨B±¨GÕ#4ð &¸ñ &r¦   c                ó<   € V P                   P                  V4       R # r  )r#  rÿ   )r  r)  s   &&r£   Úadd_cleanup_hookÚOutputGraph.add_cleanup_hookù  s   € Ø×Ñ×!Ñ! "Ö%r¦   c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   r
  ü  s   ø€ ÷ #ñ # Dñ #r¦   c                ó€   € \        V P                  4       F
  pV! 4        K  	  V P                  P                  4        R # r  )Úreversedr#  Úclear)r  rÒ  s   & r£   Úcall_cleanup_hooksÚOutputGraph.call_cleanup_hooksü  s.   € Ü˜T×/Ñ/Ö0ˆDÙŽFñ 1à×Ñ× Ñ Ö"r¦   c                ó   <€ V ^8„  d   QhRR/# ©r›   r×   r  r§   )r¡   r¢   s   "€r£   r¤   r
    s   ø€ ÷ ñ Ð-ñ r¦   c                ó(   € V P                   ^ ,          # ©é    ©r   r  s   &r£   râ  ÚOutputGraph.root_tracer  s   € à�|‰|˜A�Ðr¦   c                ó   <€ V ^8„  d   QhRR/# r4  r§   )r¡   r¢   s   "€r£   r¤   r
    s   ø€ ÷  ñ  Ð 0ñ  r¦   c                ó(   € V P                   R,          # ©rx  éÿÿÿÿr8  r  s   &r£   Úcurrent_tracerÚOutputGraph.current_tracer  s   € à�|‰|˜BÕÐr¦   c                ó    <€ V ^8„  d   QhRS[ /# r  ©rì   )r¡   r¢   s   "€r£   r¤   r
  	  s   ø€ ÷ &ñ &¡ñ &r¦   c                ó2   € \        V P                  4      ^8H  # )rx  )r¢  r   r  s   &r£   Úis_root_tracerÚOutputGraph.is_root_tracer	  s   € ä�4—<‘<Ó  AÑ%Ð%r¦   c                ó"   <€ V ^8„  d   QhRRRR/# ru  r§   )r¡   r¢   s   "€r£   r¤   r
    s   ø€ ÷  ñ  Ø-ð à	ñ r¦   c                óô  € \        VR4      '       g   R# VP                  P                  4       '       g   R# V P                  pV P                  f$   \        \        VP                  4      4      V n        VP                  P                  4       p^ pVP                  P                   FÎ  pVP                  R8w  d    R# VP                  P                  R4      p\        V\        P                   4      '       g   KT  V P                  P                  V4      pVP"                  pVeG   W‡8”  dA   W0P$                  9  d#   \&        P(                  ! 4       V P$                  V&   W€P                  V&   V^,          pKÐ  	  R# )z‰Record which stream index has input mutations by comparing current
tensor versions against the versions captured at graph input creation.Úsymbolic_stream_stateNrÒ  rå  )rˆ  rG  Úin_stream_contextrâ  rI  rØ   Ú	enumerateÚ_input_versions_at_beginningÚcur_stream_idr”   ÚnodesrÖ  r×  rØ  rý   rø   r   Ú_versionrH  r   Úextract_stack)	r  rv  ÚtracerÚcur_stream_indexÚ	input_idxr  rå  Úprev_versionÚcur_versions	   &&       r£   Ú&check_input_mutation_on_current_streamÚ2OutputGraph.check_input_mutation_on_current_stream  s4  € ô
 �rÐ2×3Ò3ÙØ×'Ñ'×9Ñ9×;Ò;Ùà×!Ñ!ˆØ×,Ñ,Ò4Ü04Ü˜&×=Ñ=Ó>ó1ˆDÔ-ð ×3Ñ3×AÑAÓCÐØˆ	Ø—L‘L×&Ô&ˆDØ�w‰w˜-Ô'ÚØ ŸI™IŸM™M¨/Ó:ˆMÜ˜m¬U¯\©\×:Ò:ÙØ×<Ñ<×@Ñ@ÀÓKˆLØ'×0Ñ0ˆKØÒ'¨KÔ,FØ#×+GÑ+GÔGä&×4Ò4Ó6ð ×0Ñ0Ð1AÑBð @K×1Ñ1°)Ñ<Ø˜�NŠIó 'r¦   a~  To fix this, either:
  1. Move the input mutation after the event.record() call.
  2. Record the event outside the compiled region:
       compiled_fn(x)
       event.record(stream)  # after torch.compile returns
  3. Insert a graph break before recording:
       torch._dynamo.graph_break()
       event.record(stream)
  4. Record the event on a stream that has no input mutations.c                ó$   <€ V ^8„  d   QhRS[ RR/# )r›   Ústream_indexr×   Nr  )r¡   r¢   s   "€r£   r¤   r
  ;  s   ø€ ÷  ñ  ÁCð  ÈDñ  r¦   c                ó4  € WP                   9  d   R# V P                   V,          p\        P                  ! 4       pRRP                  VP	                  4       4       RRP                  VP	                  4       4       R2V P
                  ,           p\        V4      h)u½   Error if an event is being recorded on a stream that already has
an input mutation. Called at record time so ordering is naturally
respected â€” records before mutations won't trigger this.Na  An event was recorded on a stream where a graph input was previously mutated. The input mutation is applied via copy_() in the runtime epilogue after the graph executes, so the event would not capture the mutation, leading to incorrect synchronization.

Input mutation occurred here:
rÔ  z
Event record occurred here:
Ú
)rH  r   rN  Újoinr¡   Ú_EVENT_INPUT_MUTATION_FIXr\  )r  rW  Úmutation_stackÚrecord_stackrë   s   &&   r£   Ú'check_event_record_after_input_mutationÚ3OutputGraph.check_event_record_after_input_mutation;  s—   € ð ×;Ñ;Ô;Ùà×5Ñ5°lÕCˆÜ%×3Ò3Ó5ˆð.ð �w‰w�~×,Ñ,Ó.Ó/Ð0ð 1,à�w‰w�|×*Ñ*Ó,Ó-Ð.¨bð2ð 59×4RÑ4RõSð 	ô ˜3ÓÐr¦   c                óH   <€ V ^8„  d   QhRS[ P                  P                  /# r  ©rø   r   rÞ  )r¡   r¢   s   "€r£   r¤   r
  S  s   ø€ ÷ )ñ )‘u—x‘x—~‘~ñ )r¦   c                ó.   € V P                   P                  # r  ©r>  r”   r  s   &r£   r”   ÚOutputGraph.graphR  s   € à×"Ñ"×(Ñ(Ð(r¦   c                óL   <€ V ^8„  d   QhRS[ P                  P                  RR/# )r›   rÑ   r×   Nra  )r¡   r¢   s   "€r£   r¤   r
  X  s#   ø€ ÷ *ñ *™5Ÿ8™8Ÿ>™>ð *¨dñ *r¦   c                ó&   € WP                   n        R # r  rc  )r  rÑ   s   &&r£   r”   rd  W  s   € à$)×ÑÖ!r¦   c                óJ   <€ V ^8„  d   QhRS[ S[S[P                  3,          /# r  )rØ   rË   r   rÔ  )r¡   r¢   s   "€r£   r¤   r
  \  s!   ø€ ÷ 7ñ 7¡T©#©r¯x©x¨-Õ%8ñ 7r¦   c                ó.   € V P                   P                  # r  )r>  Úinput_name_to_proxyr  s   &r£   ri  ÚOutputGraph.input_name_to_proxy[  s   € à×"Ñ"×6Ñ6Ð6r¦   c                ó^   <€ V ^8„  d   QhRS[ S[P                  S[P                  3,          /# r  )rØ   r   rû   rø   r   )r¡   r¢   s   "€r£   r¤   r
  `  s&   ø€ ÷ 4ñ 4¡$¡r§w¡w±·±Ð'<Õ"=ñ 4r¦   c                ó.   € V P                   P                  # r  )r>  Úreal_value_cacher  s   &r£   rm  ÚOutputGraph.real_value_cache_  s   € à×"Ñ"×3Ñ3Ð3r¦   c                ó†   <€ V ^8„  d   QhRS[ S[P                  S[S[P
                  P                  R3,          3,          /# )r›   r×   Ú	LazyProxy)rØ   ÚsympyÚSymbolr   rø   r   rÔ  )r¡   r¢   s   "€r£   r¤   r
  d  s4   ø€ ÷ 1ñ 1™t¡E§L¡L±%¹¿¹¿¹ÈÐ8SÕ2TÐ$TÕUñ 1r¦   c                ó.   € V P                   P                  # r  )r>  Úbound_symbolsr  s   &r£   rt  ÚOutputGraph.bound_symbolsc  s   € à×"Ñ"×0Ñ0Ð0r¦   c                óT   <€ V ^8„  d   QhRS[ RS[ RS[P                  P                  /# ©r›   r*  r+  r×   )r   rø   r   rÔ  )r¡   r¢   s   "€r£   r¤   r
  m  s/   ø€ ÷ Añ A¡#ð A±ð A¹¿¹¿¹ñ Ar¦   c                ó:   € V P                   P                  ! V/ VB # r  )r>  Úcreate_proxy©r  r*  r+  s   &*,r£   ry  ÚOutputGraph.create_proxym  s   € Ø×"Ñ"×/Ò/°Ð@¸Ñ@Ð@r¦   c                óT   <€ V ^8„  d   QhRS[ RS[ RS[P                  P                  /# rw  )r   rø   r   rû   )r¡   r¢   s   "€r£   r¤   r
  p  s/   ø€ ÷ @ñ @¡ð @±ð @¹¿¹¿¹ñ @r¦   c                ó:   € V P                   P                  ! V/ VB # r  )r>  Úcreate_noderz  s   &*,r£   r~  ÚOutputGraph.create_nodep  ó   € Ø×"Ñ"×.Ò.°Ð?¸Ñ?Ð?r¦   c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r›   r*  r+  r×   NrÞ   )r¡   r¢   s   "€r£   r¤   r
  s  s'   ø€ ÷ @ñ @¡ð @±ð @¸ñ @r¦   c                ó:   € V P                   P                  ! V/ VB # r  )r>  Úremove_noderz  s   &*,r£   rƒ  ÚOutputGraph.remove_nodes  r€  r¦   c          	      ój   <€ V ^8„  d   QhRS[ R,          RS[R,          RS[R,          RS[R,          /# )r›   Úsource_targetNÚprior_tracerr  Údescriptionr×   )r  NN)r+   r   rË   r   )r¡   r¢   s   "€r£   r¤   r
  w  sG   ø€ ÷ ñ á •}ðñ Ð/Õ0ðñ ˜4•Zð	ñ
 
Ð/Õ	0ñr¦   c              #  ó
  "  € \        4       p V'       d&   VP                  V P                  Jd   \        R 4      hVP	                  4        V'       d   TM-\        V V P                  VV P                  P                  VR7      pV P                  P                  V4       Vx € VP                  RRR4       V P                  P                  4        R#   TP                  RRR4       T P                  P                  4        i ; i5i)zBprior_tracer.parent must be the current tracer to preserve lineage)Úparentr†  r  rˆ  N)rD   rŠ  r>  r†  Ú	__enter__r  r  r   rÿ   Ú__exit__r   )r  r†  r‡  rˆ  Únew_scope_ctxrO  s   &&&&  r£   Ú	subtracerÚOutputGraph.subtracerv  sá   é € ô (Ó)ˆð	ßà×&Ñ&¨d×.AÑ.AÓAÜ(Ø\óð ð ×#Ñ#Ô%÷  ñ ä#ØØ×.Ñ.Ø"/Ø"×1Ñ1×;Ñ;Ø +ôð ð �L‰L×Ñ Ô'ØŠLà×"Ñ" 4¨¨tÔ4Ø�L‰L×ÑÖøð ×"Ñ" 4¨¨tÔ4Ø�L‰L×ÑÕüs$   ‚DŽAC ÁAC Â"/DÃ/D Ä Dc                ó   <€ V ^8„  d   QhRR/# )r›   r×   r  r§   )r¡   r¢   s   "€r£   r¤   r
  ˜  s   ø€ ÷ ñ ˜ñ r¦   c                ó   € V # r  r§   r  s   &r£   ÚoutputÚOutputGraph.output—  s   € àˆr¦   c                óH   <€ V ^8„  d   QhRS[ P                  P                  /# r  )rø   r1  r2  )r¡   r¢   s   "€r£   r¤   r
  œ  s    ø€ ÷ .ñ .™5×,Ñ,×;Ñ;ñ .r¦   c                ót   € V P                   P                  f   \        R4      hV P                   P                  # )Nú*tracing_context.fake_mode must not be None)r3  rm  r†  r  s   &r£   rm  ÚOutputGraph.fake_mode›  s2   € à×Ñ×)Ñ)Ò1Ü Ð!MÓNÐNØ×#Ñ#×-Ñ-Ð-r¦   c                ó    <€ V ^8„  d   QhRS[ /# r  rƒ  )r¡   r¢   s   "€r£   r¤   r
  ¢  s   ø€ ÷ 8ñ 8™8ñ 8r¦   c                óâ   € V P                   P                  f   \        R4      hV P                   P                  P                  f   \        R4      hV P                   P                  P                  # )Nr–  z4tracing_context.fake_mode.shape_env must not be None)r3  rm  r†  rˆ  r  s   &r£   rˆ  ÚOutputGraph.shape_env¡  s\   € à×Ñ×)Ñ)Ò1Ü Ð!MÓNÐNØ×Ñ×)Ñ)×3Ñ3Ò;Ü Ð!WÓXÐXØ×#Ñ#×-Ñ-×7Ñ7Ð7r¦   c                óH   <€ V ^8„  d   QhRS[ P                  P                  /# r  r‹  )r¡   r¢   s   "€r£   r¤   r
  ª  s!   ø€ ÷ Añ A™Ÿ™×/Ñ/ñ Ar¦   c                óB   € V P                   P                  P                  # r  )r3  r#  r$  r  s   &r£   r   ÚOutputGraph.guards©  s   € à×#Ñ#×2Ñ2×@Ñ@Ð@r¦   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# r  )rØ   rË   r   )r¡   r¢   s   "€r£   r¤   r
  ®  s   ø€ ÷ >ñ >™D¡¡c �Nñ >r¦   c                óB   € V P                   P                  P                  # r  )r3  Úmodule_contextr3  r  s   &r£   r3  ÚOutputGraph.nn_modules­  s   € à×#Ñ#×2Ñ2×=Ñ=Ð=r¦   c                óX   <€ V ^8„  d   QhRS[ S[P                  P                  ,          /# r  r‘  )r¡   r¢   s   "€r£   r¤   r
  ²  s&   ø€ ÷ Fñ F¡D©¯©×)CÑ)CÕ$Dñ Fr¦   c                óB   € V P                   P                  P                  # r  )r3  r#  r•  r  s   &r£   r•  ÚOutputGraph.aotautograd_guards±  s   € à×#Ñ#×2Ñ2×EÑEÐEr¦   c                ór   <€ V ^8„  d   QhRS[ S[S[S[RS[3,          S[3,          3,          R,          RR/# )r›   Úout.Nr×   )rØ   rË   rÉ   r   r   rì   )r¡   r¢   s   "€r£   r¤   r
  µ  s?   ø€ ÷ '
ñ '
Ù™™U¡8¨C±¨HÕ#5±tÐ#;Õ<Ð<Õ=ÀÕDð'
à	ñ'
r¦   c                óÄ  € \        \        \        \        \        R\
        3,          \        3,          3,          Ve   TMV P                  P                  P                  4      p\        P                  \        P                  ! 4       3VR&   \        P                  P                  4       ;p'       d   VP                  MRp\         P"                  ! \        P$                  V4      \        P&                  ! V4      3VR&   \         P"                  ! \        P$                  R4      \        P&                  ! R4      3VR&   \         P"                  ! \        P(                  V4      \        P*                  ! V4      3VR&   \         P"                  ! \        P(                  R4      \        P*                  ! R4      3VR	&   \        P,                  \        P.                  ! 4       3VR
&   R# )zS
Saves to out if it is provided. Else saves to the tracing context's global_state.
.NÚgrad_enabledÚcudaÚautocast_enabledÚcpuÚautocast_cpu_enabledÚautocast_gpu_dtypeÚautocast_cpu_dtypeÚautocast_cache_enabled)r	   rØ   rË   rÉ   r   r   rì   r3  Úglobal_contextÚglobal_staterø   Úset_grad_enabledÚis_grad_enabledÚacceleratorÚcurrent_acceleratorr‡  Ú	functoolsÚpartialÚset_autocast_enabledÚis_autocast_enabledÚset_autocast_dtypeÚget_autocast_dtypeÚset_autocast_cache_enabledÚis_autocast_cache_enabled)r  r¦  r±  ÚaccÚgpu_types   &&   r£   rX  ÚOutputGraph.save_global_stateµ  sˆ  € ô Ü””eœH S¬# XÕ.´Ð4Õ5Ð5Õ6ð ’?ñ à×)Ñ)×8Ñ8×EÑEó
ˆô ).×(>Ñ(>Ä×@UÒ@UÓ@WÐ'Xˆ�^Ñ$ô !&× 1Ñ 1× EÑ EÓ GÐG˜ÖGˆC�HŠHÈfð 	ô ×Òœe×8Ñ8¸(ÓCÜ×%Ò% hÓ/ð,
ˆÐ'Ñ(ô
 ×Òœe×8Ñ8¸%Ó@Ü×%Ò% eÓ,ð0
ˆÐ+Ñ,ô
 ×Òœe×6Ñ6¸ÓAÜ×$Ò$ XÓ.ð.
ˆÐ)Ñ*ô
 ×Òœe×6Ñ6¸Ó>Ü×$Ò$ UÓ+ð.
ˆÐ)Ñ*ô
 ×,Ñ,Ü×+Ò+Ó-ð2
ˆÐ-Ó.r¦   c                ó"   <€ V ^8„  d   QhRRRR/# ru  r§   )r¡   r¢   s   "€r£   r¤   r
  Þ  s   ø€ ÷ $ñ $Ð5ð $¸$ñ $r¦   c                ó<   € V P                   P                  V4       R # r  )rM  rÿ   )r  rv  s   &&r£   Úpush_txÚOutputGraph.push_txÞ  s   € Ø×Ñ×Ñ Ö#r¦   c                ó   <€ V ^8„  d   QhRR/# ©r›   r×   r�   r§   )r¡   r¢   s   "€r£   r¤   r
  á  s   ø€ ÷ &ñ &Ð3ñ &r¦   c                ó6   € V P                   P                  4       # r  )rM  r   r  s   &r£   Úpop_txÚOutputGraph.pop_txá  s   € Ø×Ñ×#Ñ#Ó%Ð%r¦   c                ó   <€ V ^8„  d   QhRR/# rÆ  r§   )r¡   r¢   s   "€r£   r¤   r
  å  s   ø€ ÷ Nñ NÐ7ñ Nr¦   c                ód   € V P                   '       g   V P                  # V P                   R,          # r<  )rM  r  r  s   &r£   Ú
current_txÚOutputGraph.current_txä  s'   € à#'×#3×#3Ð#3ˆt�|‰|ÐM¸×9IÑ9IÈ"Õ9MÐMr¦   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r›   rÙ  r×   )r   r   )r¡   r¢   s   "€r£   r¤   r
  è  s   ø€ ÷ 
ñ 
©6ð 
±cñ 
r¦   c                ó€   € VP                  RV P                  P                  RV P                  P                  // / 4      # )zÎ
Resolve the runtime value a Source points to using root_tx's frame.

Useful to inspect the python object associated with the source during
debugging. Will also be used by invoke subgraph caching later on.
ÚGÚL)Ú	get_valuer  Ú	f_globalsÚf_locals)r  rÙ  s   &&r£   Úresolve_source_valueÚ OutputGraph.resolve_source_valueè  s=   € ð ×ÑØ�$—,‘,×(Ñ(¨#¨t¯|©|×/DÑ/DÐEØØó
ð 	
r¦   c                ó    <€ V ^8„  d   QhRS[ /# r  r  )r¡   r¢   s   "€r£   r¤   r
  õ  s   ø€ ÷ 'ñ '™Sñ 'r¦   c                ó,   € \        V P                  4      # r  )rm   r”   r  s   &r£   rm   ÚOutputGraph.count_callsõ  s   € Ü˜4Ÿ:™:Ó&Ð&r¦   c                ó    <€ V ^8„  d   QhRS[ /# r  rA  )r¡   r¢   s   "€r£   r¤   r
  ø  s   ø€ ÷ 0ñ 0¡ñ 0r¦   c                óX   € \        \        V P                  P                  4      4      ^ 8H  # r6  )r¢  r÷   r”   rL  r  s   &r£   Úis_empty_graphÚOutputGraph.is_empty_graphø  s!   € Ü”4˜Ÿ
™
×(Ñ(Ó)Ó*¨aÑ/Ð/r¦   c                ó    <€ V ^8„  d   QhRS[ /# r  rA  )r¡   r¢   s   "€r£   r¤   r
  û  s   ø€ ÷ Jñ J™Tñ Jr¦   c                ó”   € \        V P                  P                   Uu. uF  qP                  R 8X  g   K  VNK  	  up4      ^ 8„  # u upi )r’  )r¢  r”   rL  rÖ  )r  Úxs   & r£   Úhas_outputsÚOutputGraph.has_outputsû  s;   € Ü˜tŸz™z×/Ò/ÓDÑ/˜!·4±4¸8Ñ3C—A�AÑ/ÑDÓEÈÑIÐIùÒDs
   žAµAc                ó^   <€ V ^8„  d   QhRS[ RS[P                  P                  S[,          /# )r›   rŒ  r×   )rË   rø   r5  r6  r   )r¡   r¢   s   "€r£   r¤   r
  þ  s(   ø€ ÷ 	ñ 	¡#ð 	©%¯(©(¯/©/¹CÕ*?ñ 	r¦   c                óÊ   € V'       g   \        R 4      hV P                  pVP                  R4       F.  p\        V\        4      '       d   W#,          pK#  \        W#4      pK0  	  V# )zkeys must be a non-empty stringr™  )r†  r3  rš  rý   rØ   rã   )r  rŒ  Úobjr=  s   &&  r£   Úget_submoduleÚOutputGraph.get_submoduleþ  sP   € ßÜ Ð!BÓCÐCØ<@¿O¹OˆØ—‘˜C–ˆAÜ˜#œt×$Ò$Ø•f’ä˜c“o’ñ	 !ð
 ˆ
r¦   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ©r›   ro  r×   rB  )r¡   r¢   s   "€r£   r¤   r
  	  s   ø€ ÷ ñ ™Cð ©Cñ r¦   c                óÄ   € \        V P                  R ,          4      p V R\        V P                  4       2pW29  g   K#  V P                  R ;;,          V3,          uu&   V# )r¾   r  )rù   r  r$  rE  )r  ro  ÚexistingrŽ  s   &&  r£   rä  ÚOutputGraph.new_var	  sY   € Ü�t×(Ñ(¨Õ7Ó8ˆàØ�F˜!œD ×!3Ñ!3Ó4Ð5Ð6ˆCØÖ"Ø×!Ñ! -×0°S°FÕ:Ó0Ø�
r¦   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r›   ro  r×   NrB  )r¡   r¢   s   "€r£   r¤   r
    s   ø€ ÷ 5ñ 5¡Cð 5¨Dñ 5r¦   c                óx   € WP                   R,          9  d#   V P                   R;;,          V3,          uu&   R# R# )z/Ensure self.code_options.co_names contains namer½   N)r  )r  ro  s   &&r£   Úupdate_co_namesÚOutputGraph.update_co_names  s0   € à×(Ñ(¨Õ4Ô4Ø×Ñ˜j×)¨d¨WÕ4Õ)ñ 5r¦   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r›   Únamesr×   )r   rË   )r¡   r¢   s   "€r£   r¤   r
    s   ø€ ÷ ñ ¡ð ©ñ r¦   c                 ó�  € R P                  \        \        V 4      4      p\        P                  ! RRV4      p\        P                  ! RRV4      p\        P                  ! RRV4      p\        P                  ! RRV4      p\        P                  ! R	R V4      pV'       d   V^ ,          P                  4       '       g
   R
V,           pV# )r  z9\._(?:modules|parameters|buffers)\[(['\"])([^'\"\]]+)\1\]z.\2z2getattr\(\s*([^,]+?)\s*,\s*(['\"])([^'\"]+)\2\s*\)z\1.\3z^[GL]\['?(.*?)'?\]$z\1z	\[(\d+)\]z_\g<1>z[^a-zA-Z0-9]Úsub)rZ  r  rË   Úrerô  Úisalpha)rò  ro  s   * r£   Úmodule_key_nameÚOutputGraph.module_key_name  sŸ   € ð �x‰xœœC ›Ó(ˆä�vŠvØHÈ&ÐRVó
ˆô �vŠvØAÀ8ÈTó
ˆô �vŠvÐ,¨e°TÓ:ˆä�vŠv�l I¨tÓ4ˆä�vŠv�o s¨DÓ1ˆç˜4 �7Ÿ?™?×,Ò,Ø˜4•<ˆDàˆr¦   c                ó@   <€ V ^8„  d   QhRS[ RS[RS[P                  /# )r›   Úattr_prefixÚ
attr_valuer×   )rË   r   r   rÔ  )r¡   r¢   s   "€r£   r¤   r
  /  s)   ø€ ÷ ñ ÙðÙ,/ðá	�‰ñr¦   c                ót  € \        V\        P                  P                  4      '       dA   V P                  P                  4        F"  w  r4WBJ g   K  V P                  R VR/ 4      pVu # 	  \        WP                  4      pW P                  V&   V P                  R VR/ 4      p\        VP                  V4       V# )Úget_attrr§   )
rý   rø   r5  r6  r3  r;  ry  rt   r|   r  )r  rú  rû  ro  ÚmodÚproxyÚ	attr_names   &&&    r£   Ú%register_static_attr_and_return_proxyÚ1OutputGraph.register_static_attr_and_return_proxy/  sš   € ô
 �j¤%§(¡(§/¡/×2Ò2Ø!Ÿ_™_×2Ñ2Ö4‘	�ØÕ$Ø ×-Ñ-¨j¸$ÀÀBÓG�EØ ’Lñ 5ô
 (¨·_±_ÓEˆ	ð &0�‰˜	Ñ"Ø×!Ñ! *¨i¸¸RÓ@ˆÜ˜%Ÿ*™* jÔ1Øˆr¦   c                óŽ   <€ V ^8„  d   QhRS[ P                  P                  S[ P                  ,          S[,          RS[RS[RS[/# )r›   Útargetrò  Úoptionsr×   )rø   r5  r6  r   r   rƒ   )r¡   r¢   s   "€r£   r¤   r
  B  sO   ø€ ÷ pñ pá—‘—‘¡%§,¡,Õ.±Õ4ðpñ ðpñ ð	pñ
 
ñpr¦   c                ó¤  a aaa
aa€ \        SS P                  4      '       d#   \        P                  ! S P                  S3/ SB # \        S4      oR S9  d   \        R4      hSR ,          o\        S\        4      '       d   \        RS 24      h\        S\        P                  4      '       d>   S P                  oS P                  4       '       g   S P                  oR VV VVV3R llpEML\        S\        P                  P                  4      '       dˆ   \        S\        P                  P                  4      '       g   \        R\!        S4       24      hS'       d4   \#        SP%                  \&        P(                  4      4       R VV3R llpM¦R VV3R	 llpM›\        S\        P*                  \        P,                  34      '       d   R
 VV V3R llpM_\/        \!        S4      4      '       d<   S P                  oS P                  4       '       g   S P                  oR VV VV3R llpM
R V V3R llpS P0                  P3                  4        F  w  rVVSJ g   K  V! V4      u # 	  \4        P6                  ! V!  o
\9        S
S P0                  S P:                  4      o
SS P0                  S
&   \        S\        P                  P                  4      '       dr   R V
V V3R llp\=        SR4      '       d"   SP?                  4        F  w  r‰V! V4       K  	  \=        SR4      '       d"   SPA                  4        F  w  r‰V! V4       K  	  V! S
4      # )rÙ  z$'source' must be provided in optionsz,source must not be a ParamBufferSource, got c                ó0   € V ^8„  d   QhR\         R\        /# ©r›   Ú
module_keyr×   ©rË   rƒ   )r¡   s   "r£   r¤   Ú9OutputGraph.register_attr_or_module.<locals>.__annotate__f  s   € ÷ %ñ %¤cð %¬oñ %r¦   c           	      ó°  <€ SP                   f   \        R4      hSSP                   V &   SP                  f   \        R4      hSSP                  P                  P                  9   d(   SP                  P                  P                  S,          # \        S4      R8X  d@   \        S\        4      '       g*   \        SP                  \        P                  4      4       M9\        S4      '       g)   \        SP                  \        P                  4      4       \        SP                  SP                  RV R/ 4      3RS/SB pSP                  P                  P                  P!                  SV4      pRVP#                  4       P$                  P&                  9   d   \        R4      h\)        S4      VP#                  4       P$                  P&                  R&   V# )	Nú%param_name_to_source must not be Noneúroot_tx must not be NoneÚguardedrý  rå  Útensor_dictz/'tensor_dict' already exists in proxy node metar§   )r<  r†  r  r’  r=  rs   rý   ra   rR   ré  rQ   ÚID_MATCHr^   ÚTENSOR_MATCHr€   ry  Útrack_object_existingÚas_proxyr  r×  rg   )r	  r‹  r  r  rÙ  r  rO  s   & €€€€€r£   Ú	wrap_nameÚ6OutputGraph.register_attr_or_module.<locals>.wrap_namef  s‡  ø€ Ø×,Ñ,Ò4Ü(Ð)PÓQÐQØ8>�×)Ñ)¨*Ñ5ð —<‘<Ò'Ü(Ð)CÓDÐDØ˜TŸ\™\×0Ñ0×=Ñ=Ô=ØŸ<™<×.Ñ.×;Ñ;¸FÕCÐCä*¨6Ó2°iÔ?Ì
ØÔ-÷Iò Iô " &×"3Ñ"3´L×4IÑ4IÓ"JÕKÜ+¨F×3Ò3Ü! &×"3Ñ"3´L×4MÑ4MÓ"NÔOä"Ø—L‘LØ×'Ñ'¨
°JÀÀBÓGñð #)ðð ñ	�ð —\‘\×(Ñ(×5Ñ5×KÑKÈFÐTVÓW�à  B§K¡K£M×$6Ñ$6×$;Ñ$;Ô;Ü(ØIóð ô :NÈfÓ9U�—‘“×"Ñ"×'Ñ'¨Ñ6à�	r¦   z&target must be a torch.nn.Module, got c                ó0   € V ^8„  d   QhR\         R\        /# r  r
  )r¡   s   "r£   r¤   r  –  s   € ÷ Yñ Y¬#ð Y´/ñ Yr¦   c                 ó2   <€ \        \        S4      V S3/ SB # r  )r†   r‡  ©r	  r  r  s   &€€r£   r  r  –  s   ø€ ä+¬D°«L¸*ÀfÑXÐPWÑXÐXr¦   c                ó0   € V ^8„  d   QhR\         R\        /# r  r
  )r¡   s   "r£   r¤   r  Ÿ  s   € ÷ Vñ V¬#ð V´/ñ Vr¦   c                 ó2   <€ \         P                  ! S3/ SB # r  )r2   ÚUnspecializedNNModuleVariabler  s   &€€r£   r  r  Ÿ  s   ø€ ä$×BÒBÀ6ÑUÈWÑUÐUr¦   c                ó0   € V ^8„  d   QhR\         R\        /# r  r
  )r¡   s   "r£   r¤   r  «  s   € ÷ ñ ¤cð ¬oñ r¦   c           	      óp   <€ \         P                  ! SP                  SP                  R V R/ 4      3RS/SB # )rý  Úsym_numr§   )rˆ   r  r  ry  )r	  r  r  r  s   &€€€r£   r  r  «  sE   ø€ Ü&×-Ò-Ø—L‘LØ×%Ñ% j°*¸bÀ"ÓEñð #ðð ñ	ð r¦   c                ó0   € V ^8„  d   QhR\         R\        /# r  r
  )r¡   s   "r£   r¤   r  ½  s   € ÷ ñ ¤cð ¬oñ r¦   c                 óV  <€ \         P                  P                  P                  SP                  S4      pSP                  R V R/ 4      p\        VP                  V4       \         P                  P                  P                  P                  P                  ! W!3RSP                  /SB # )rý  rv  r§   )rø   Ú_libraryÚfake_class_registryÚmaybe_to_fake_objrm  ry  r|   r  r±  r2   Úscript_objectÚCustomClassObjectVariabler  r  )r	  Úfake_script_objrÿ  r  r  r  rO  s   &  €€€€r£   r  r  ½  sŒ   ø€ Ü"'§.¡.×"DÑ"D×"VÑ"VØ—N‘N Fó#�ð ×+Ñ+¨J¸
ÀBÈÓK�Ü! %§*¡*¨oÔ>Ü—}‘}×.Ñ.×<Ñ<×VÑV×]Ò]ØñØ/3¯|©|ðØ?Fñð r¦   c                ó0   € V ^8„  d   QhR\         R\        /# r  r
  )r¡   s   "r£   r¤   r  Ë  s   € ÷ ñ ¤cð ¬oñ r¦   c                 óœ   <€ SP                   P                  V 4       SSP                  V &   \        P                  ! SS\        V R 7      4      # ))rÛ  )r’  rï  rš  rƒ   r!  rZ   )r	  r  r  s   &€€r£   r  r  Ë  sF   ø€ Ø—‘×+Ñ+¨JÔ7Ø06�×!Ñ! *Ñ-Ü&×,Ò,ØØÜ"¨zÔ:óð r¦   c                ó(   € V ^8„  d   QhR\         RR/# ©r›   Ú	leaf_namer×   NrB  )r¡   s   "r£   r¤   r  Þ  s   € ÷ 	"ñ 	"¬cð 	"°dñ 	"r¦   c                 ó  <€ SP                   f   \        R4      hSP                  SV 4      pS RV  2pVSP                   V&   \        S\        4      '       d/   V SP
                  \        P                  VP                  4      &   R # R # ©Nr  r™  ©	r<  r†  r¤  rý   r`   rY  r  r÷  ro  ©r,  Ú
new_sourceÚnew_namero  r  rÙ  s   &  €€€r£   Úregister_leaf_nameÚ?OutputGraph.register_attr_or_module.<locals>.register_leaf_nameÞ  s†   ø€ Ø×,Ñ,Ò4Ü(Ð)PÓQÐQØ!×AÑAÀ&È)ÓT�
Ø"˜V 1 Y KÐ0�Ø6@�×)Ñ)¨(Ñ3Ü˜f¤k×2Ò2ð "ð ×9Ñ9Ü#×3Ñ3°J·O±OÓDóñ 3r¦   Ú_parametersÚ_buffers)!rS   r£  rƒ   r!  rÌ  rØ   r†  rý   rb   rø   r   r>  rC  râ  r5  r6  r‡  rR   ré  rQ   Ú	NN_MODULEÚSymIntÚSymFloatr   r3  r;  r  r÷  rt   rš  rˆ  Únamed_parametersÚnamed_buffers)r  r  rò  r  r  r=  r>  r3  r,  r  ro  rÙ  rO  s   ff*l      @@@r£   Úregister_attr_or_moduleÚ#OutputGraph.register_attr_or_moduleB  s™  ý€ ô   ¨¯©×4Ò4ô #×(Ò(¨¯©¸&ÑLÀGÑLÐLä�w“-ˆØ˜7Ô"Ü Ð!GÓHÐHØ˜Õ"ˆÜ�fÔ/×0Ò0Ü Ø>¸v¸hÐGóð ô �fœeŸl™l×+Ò+Ø×(Ñ(ˆFØ×&Ñ&×(Ò(ð ×)Ñ)�÷%ö %ôN ˜¤§¡§¡×0Ò0Ü˜f¤e§h¡h§o¡o×6Ò6Ü$Ø<¼TÀ&»\¸NÐKóð ÷ Ü˜f×/Ñ/´×0FÑ0FÓGÔH÷Yò Y÷Vò Vô ˜¤§¡¬u¯~©~Ð >×?Ò?÷ó ô œT &›\×*Ò*ð
 ×(Ñ(ˆFØ×&Ñ&×(Ò(Ø×)Ñ)�÷ô ÷ñ ð —O‘O×)Ñ)Ö+‰DˆAØ�F�{á  “|Ò#ñ ,ô
 ×*Ò*¨EÑ2ˆÜ" 4¨¯©¸$×:KÑ:KÓLˆØ &ˆ�‰˜ÑÜ�fœeŸh™hŸo™o×.Ò.÷	"ò 	"ô �v˜}×-Ò-Ø$*×$;Ñ$;Ö$=‘L�IÙ& yÖ1ñ %>ä�v˜z×*Ò*Ø$*×$8Ñ$8Ö$:‘L�IÙ& yÖ1ñ %;ñ ˜‹Ðr¦   c                ó`   <€ V ^8„  d   QhRRRS[ S[S[,          S[S[S[3,          3,          /# )r›   rv  r�   r×   )rÉ   r÷   r>   rØ   r   )r¡   r¢   s   "€r£   r¤   r
  ô  s9   ø€ ÷ ]/ñ ]/Ø-ð]/á	‰t‘KÕ ¡$¡v©v ~Õ"6Ð6Õ	7ñ]/r¦   c                ó  € V P                   P                  R 4      p\        V4      pV'       g   . / 3# . p/ p. VP                  OVP                  P                  4       OV P                  P                  P                  4       OpV'       Edl   VP                  4       p\        V\        4      '       dV   \        VP                  \        4      '       g"   \        R\        VP                  4       24      hWgP                  ,          pK„  WpP                  P                  9  g!   \        VP                   \"        4      '       dp   \        VP$                  \&        4      '       dP   \        VP$                  P(                  \*        4      '       d&   VP$                  P(                  P,                  V9   g   EK0  VP$                  P(                  P,                  pW…9  d   . WX&   WX,          P/                  V4       EKt  / p	/ p
V P0                   EF€  p\        VP2                  \        4      '       d<   \        VP$                  \*        4      '       d   VP$                  P,                  V9   g   Ka  VP$                  P,                  pWÀP4                  R,          9  d   \        RV R24      hW\,           F×  pVP$                  V
9   d   K  VP$                  f   \        R4      hVP$                  P6                  pWÙ9  dU   V P9                  V R24      pWéV&   VP;                  \=        RVR7      \?        V4      \A        4       \=        R	VR7      .4       VP$                  f   \        R4      hVP$                  p\+        W�,          4      W¯&   KÙ  	  EKƒ  	  WJ3# )
r  zx.items must be a list, got r¾   rü  z' not found in co_varnameszx.source must not be NoneÚ_refÚ	LOAD_FAST©ÚargvalÚ
STORE_FAST)!r™  rØ  rr   r  Úsymbolic_localsÚvaluesr=  Ústore_attr_mutationsrŒ  r   rý   r„   r;  r÷   r†  r‡  rƒ  rT   rÙ  r\   r–  r`   Ú
local_namerÿ   Ú	graphargsÚ_exampler  Úindexrä  r  r:   r;   r6   )r  rv  Úmaybe_gmÚstolen_list_namesÚalias_instsÚneeds_aliasÚqueuerà  Ústolen_namer  Úoverridden_sourcesÚargÚ	list_nameÚlist_idxÚ
alias_nameÚ
old_sources   &&              r£   Úhandle_aliases_for_stolen_listsÚ+OutputGraph.handle_aliases_for_stolen_listsô  sà  € ð ×#Ñ#×'Ñ'¨Ó/ˆÜ/°Ó9Ðß Ø�r�6ˆMàˆØ8:ˆð
Ø�X‰Xð
à×Ñ×&Ñ&Ó(ð
ð ×Ñ×3Ñ3×8Ñ8Ó:ð
ˆ÷ ˆeØ—	‘	“ˆAÜ˜!Ô-×.Ò.Ü! !§'¡'¬4×0Ò0Ü(Ð+GÌÈQÏWÉWËÀÐ)WÓXÐXØŸ™Õ �Ùð ×.Ñ.×CÑCÔCÜ! !§/¡/Ô3L×MÒMä˜qŸx™x¬×7Ò7Ü˜qŸx™xŸ}™}¬k×:Ò:Ø—H‘H—M‘M×,Ñ,Ð0AÔAâàŸ(™(Ÿ-™-×2Ñ2ˆKØÔ-Ø+-�Ñ(ØÕ$×+Ñ+¨A×.ð ˆØ35ÐØ—>•>ˆCä˜3Ÿ<™<¬×.Ò.Ü˜sŸz™z¬;×7Ò7Ø—J‘J×)Ñ)¨[Ô8áð Ÿ
™
×-Ñ-ˆIØ× 1Ñ 1°-Õ @Ô@Ü$ q¨¨Ð3MÐ%NÓOÐOØ ×+Ð+�à—8‘8Ð1Ô1Ùð —8‘8Ò#Ü(Ð)DÓEÐEØŸ8™8Ÿ>™>�ØÔ*Ø!%§¡Ø$˜+ TÐ*ó"�Jð )3˜HÑ%à×&Ñ&ä.¨{À9ÔMÜ-¨hÓ7Ü0Ó2Ü.¨|ÀJÔOð	ôð —8‘8Ò#Ü(Ð)DÓEÐEØŸX™X�
Ü1<¸WÕ=NÓ1OÐ"Ó.ô= ,ñ "ð` Ð.Ð.r¦   c                óP   <€ V ^8„  d   QhRRRS[ RS[S[S[,          S[3,          /# )r›   rv  r�   Ú
stack_popsr×   )rÇ   rÉ   r÷   rƒ   rµ  )r¡   r¢   s   "€r£   r¤   r
  S  s:   ø€ ÷ s"ñ s"Ø-ðs"Ù;>ðs"á	‰t‘OÕ$Ñ&9Ð9Õ	:ñs"r¦   c                óæ  € VP                  4        . p\        4       pR R lp\        VP                  4       EF^  w  rg\	        VP                  4      V,
          V8*  p\
        P                  P                  WxR7       \        V\
        P                  4      '       g   \        P                  ! WW4       V'       d   VP                  V4       K–  \        V\        4      '       d   VP                  P                  V4       MVP                  V4       \        V\        4      '       g   Kñ  VP                   f   RM\#        VP                   4      p	VP$                  P                  \	        V4      ^,
          V	34       VP&                  P                  V4       EKa  	  \	        V4      Vn        \+        VP-                  4       VP/                  4       ,           4      p
VP0                  P3                  4        EFx  w  r¼\        P                  ! W\4       \        VP4                  \6        4      '       d-   VP4                  P8                  V8X  d   WP:                  J d   Kh  Wº9   d   Kp  \<        P>                  R8¼  d?   \@        PC                  \        V4      '       d   VPD                  P                  V4       KÂ  M+\@        PC                  \        V4      '       d   \G        R4      h\	        VPH                  4      VPH                  V&   \        V\        4      '       dB   VP                   f   RM\#        VP                   4      p	VPJ                  P                  W¹34       VP                  V4       EK{  	  W43# )a[  
Gets the stack + locals values belonging to tx that need to be restored.

Also prunes dead tx locals and realizes all VTs in the tx's stack.

NullVariables in stack/locals will NOT be restored, unless they are the top `stack_pops`
elements of the stack - it is expected that the next instruction to run will pop the top
`stack_pops` elements of the stack, so we should codegen NULLs.

Returns:
    - stack_values: stack and locals values that need to be restored
    - meta: locations of NULLs and ContextWrappingVariables in the stack/locals
        (ignores the top `stack_pops` values on the stack)
c                ó(   € V ^8„  d   QhR\         RR/# )r›   rŽ  r×   N©rƒ   )r¡   s   "r£   r¤   Ú>OutputGraph._get_stack_values_to_restore.<locals>.__annotate__i  s   € ÷ 	ñ 	¤ð 	°Dñ 	r¦   c                 óp   € \         P                  \        P                  V 4      '       d   \	        R 4      hR# )zCAttempted to reconstruct WithExitFunctionVariable outside the stackN)r‡  Ú__instancecheck__r2   ÚWithExitFunctionVariabler†  )rŽ  s   &r£   Úctx_exit_checkÚ@OutputGraph._get_stack_values_to_restore.<locals>.ctx_exit_checki  s1   € Ü×%Ñ%¤i×&HÑ&HÈ#×NÒNÜ$ØYóð ñ Or¦   )Úallow_lazy_constantz.variable should never be NULL in Python < 3.12r§   )é   é   )&Úprune_dead_localsrµ  rI  r  r¢  r2   ÚLazyVariableTrackerÚrealize_allrý   rb  rƒ   Úvisitrÿ   r…   r»  r�   Útarget_valuesrÉ   r½  r¾  r¹  rù   ÚcellvarsÚfreevarsrE  r;  rÙ  r`   rH  r  ÚsysÚversion_infor‡  ra  r¼  r†  rº  r¿  )r  rv  r[  Ústack_valuesr×  rc  ÚirÑ   re  rl  Úcell_and_freevarsr=  r>  s   &&&          r£   Ú_get_stack_values_to_restoreÚ(OutputGraph._get_stack_values_to_restoreS  s­  € ð" 	×ÑÔàˆÜ"Ó$ˆõ	ô " "§(¡(×+‰HˆAä"% b§h¡h£-°!Õ"3°zÑ"AÐÜ×)Ñ)×5Ñ5Øð 6ô ô ˜e¤Y×%GÑ%G×HÒHÜ×%Ò% nÔ<ç"Ø×#Ñ# EÔ*ÙÜ˜%¤×.Ò.Ø×%Ñ%×,Ñ,¨QÕ/à×#Ñ# EÔ*Ü˜%Ô!8×9Ô9à×-Ñ-Ò5‘B¼5À×ATÑATÓ;Uð ð ×#Ñ#×*Ñ*¬C°Ó,=ÀÕ,AÀ=Ð+QÔRØ×)Ñ)×0Ñ0°×3ñ/ ,ô2 ˜\Ó*ˆŒô   §¡£°·±³Õ =Ó>Ðð ×&Ñ&×,Ñ,×.‰DˆAä×!Ò! .Ô4ô ˜1Ÿ8™8¤[×1Ò1Ø—H‘H×'Ñ'¨1Ô,ØŸ,™,Ó&áð Ô%Ùä×Ñ 7Ô*ô ×)Ñ)¬,¸×:Ò:Ø×)Ñ)×0Ñ0°Ô3Ùð ;ô
 ×)Ñ)¬,¸×:Ò:Ü(ØHóð ô $' t×'8Ñ'8Ó#9ˆD×Ñ˜aÑ Ü˜!Ô4×5Ò5àŸ/™/Ò1‘B´u¸Q¿_¹_Ó7Mð ð ×$Ñ$×+Ñ+¨QÐ,>Ô?Ø×Ñ ×"ñQ /ðT Ð!Ð!r¦   c          	      ó@   <€ V ^8„  d   QhRRRS[ RS[RS[S[,          /# )r›   rv  r�   r  r[  r×   )r  rÇ   r÷   rµ  )r¡   r¢   s   "€r£   r¤   r
  È  s?   ø€ ÷ V&ñ V&à'ðV&ñ #ðV&ñ ð	V&ñ
 
Ñ!Õ	"ñV&r¦   c           
     óÐ  € V P                   f   \        R4      h\        P                  e   ^ RIHp V! V P                  4       \        P                  '       g   V P                   VJd   \        R4      hV P                  4        W n	        RV n
        \        P                  RV4       . p\        P                  R28¼  dŸ   V P                   P                   F„  pVP                   R8X  dC   VP#                  \%        R\'        V P                   P(                  R,          4      R	7      4       KV  \*        P*                  ! V4      pRVn        VP#                  V4       K†  	  . p. p	Tp
V
eÝ   \.        ;QJ d&    R
 V
P0                   4       F  '       d   K   RM	  RM! R
 V
P0                   4       4      '       g   \        R4      hT P3                  YªVJ d   TM^ 4      w  r¼VP#                  V4       V	P#                  V4       \5        V
P0                  4       F  pVP7                  W¢P8                  R7       K!  	  V
P:                  p
Kà  V P<                  P?                  V4       V PA                  V4       V PB                  '       d$   ^RI"H#p V PA                  V! 4       4       RV n!        V PH                  '       d   V PJ                  '       d   \        R4      hV PA                  V PH                  4       V PM                  V P                   4      w  ppV PA                  V4       V PO                  4        V PP                  PS                  4        UUu/ uF  w  ppV\U        V4      bK  	  ppp\W        V4      p^RI,H-p \'        V P\                  4      ^ 8”  d×   . pV P_                  R4      V n0        V! \c        V P\                  4      RR7      pV Pe                  RV4      p\g        V P                   VVR7      pVPi                  VPk                  VR4      4       VPi                  \m        ^ R4      4       VP#                  VPo                  V P`                  4      4       V PA                  V4       V UUu. uF  pV F  pVNK  	  K  	  pppRpRpV P                   VJ ;'       Ed8    T;'       Ed-    \.        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      ;'       dñ    \.        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      ;'       dµ    \'        \q        V4      4      \'        V4      8H  ;'       d�    V P<                  Ps                  4       ;'       dk    VPt                  '       * ;'       dR    V Pv                  '       * ;'       d9    V	R3,          Px                  '       * ;'       d    V	R3,          Pz                  '       * pV'       d>   V P|                  '       d,   V P                  V4       V P<                  Ps                  4       pV'       d˜   \g        V P                   4      p V P�                  VV 4       V Pƒ                  V\…        \5        V4      4      V4      w  p!p"V PA                  . V!OV P‡                  4       O\‰        ^4      O\%        R\'        V4      R	7      NV"R7       EM�V P_                  R4      p\g        V P                   VVVR7      p#V P‹                  VVV#R4       V P                  V4       / p$V#PŒ                  PS                  4        F2  w  pp%V%^8”  g   K  \�        V\�        \’        34      '       d   K-  RV$V&   K4  	  \g        V P                   VVV$VR7      p&V P‹                  VVV&R4       \”        P–                  P                  P˜                  '       Ed�   V'       Ed„   \'        V4      ^8X  Eds   V^ ,          p'\›        V'\”        P–                  Pœ                  Pž                  4      '       Ed5   V'P                   \”        P–                  P¢                  P¤                  J Ed   V'PR                  ^ ,          p(V'PR                  ^,          p)\›        V(\”        P–                  Pœ                  P¦                  4      '       g   \        R4      h/ p*V&P¨                  P«                  4        Fi  p+\›        V+\”        P–                  P¬                  P®                  4      '       g   \        R\±        V+4       24      hV+P²                  p,V+P´                  V*V,&   Kk  	  V P¶                  P¸                  p-\»        V(PR                  4       FÄ  w  p.p'V'V*9   d   \½        RV*V',          4      V-V.&   K%  V'P¾                  eN   \Á        V'P¾                  RR4      ;p/'       d/   \Á        V/RR4      '       d   \½        R V'P¾                  4      V-V.&   K€  V'PÃ                  4       '       d    \½        R!V'PÅ                  4       4      V-V.&   Kµ  \        R"V' R#V. 24      h	   V)PÅ                  4       V P¶                  nc        . p1Rp2\Í        V PÎ                  4      ^ 8w  g   \'        V&P¨                  4      ^ 8w  dŽ   V Pƒ                  VV&PÑ                  4       V4      w  p!p2V1Pi                  V!4       \'        V&P¨                  4      ^ 8w  d$   V1P#                  V&Po                  V4      4       RpM+V1P#                  \%        R*4      4       MV PÓ                  4        V PA                  V1V2R7       V PA                  V&P‡                  4       V&PÕ                  4       R7       V PA                  \%        R+\'        V4      V	^ ,          PÖ                  ,
          R	7      .4       ^ p3^ p4\»        V	4       EFð  w  p5p\'        VPØ                  4      p6V5^ 8w  d   V6VPÖ                  ,          p6V6^ 8X  d*   V PA                  \%        R+^ R	7      .\‰        ^4      O4       MCV4V6,          p4V PA                  \Û        4       .\Ý        V3V44      O\‰        ^4      O4       V3V6,          p3V5\'        V	4      ^,
          8X  g   KÂ  \g        V P                   4      p7/ p8V P                   PÞ                  PS                  4        F�  w  p9p:\›        V:P¾                  \’        4      '       g   K(  V:P¾                  Pà                  V98X  g   KE  V7Pã                  V7På                  V94      4       \'        VPØ                  4      \'        V84      ,           V8V9&   K�  	  V PA                  V7P‡                  4       \%        R+\'        V84      R	7      \%        R,^R	7      .,           4       VPØ                  Pç                  V84       EKó  	  V PA                  \%        R*4      \%        R+\'        V	4      R	7      .\é        V	^ ,          PÖ                  ^,           4      O4       V'       d&   V'       d   V PA                  \%        R-VR.7      .4       \”        P–                  P                  Pê                  R49   dm   V Pí                  RR07      p;V;'       dS   \”        P–                  P                  Pê                  R/8X  d   \î        Pð                  ! R1V; 24       V	# \ó        R1V; 24      hV	# u uppi u uppi   \È         d!   p0\Ë        R$R%T) 2R&R'R(.T0R)7        Rp0?0EL¢Rp0?0ii ; i)5au  
Compiles the current subgraph, with inputs w.r.t. self.root_tx, and codegens:
    - Call the compiled subgraph
    - Apply side effects
    - Codegen stack and locals
    - Store the locals

Python does not allow NULL to be an arg to a function, so we do not codegen NULLs on the stack,
unless the value is one of the top `stack_pops` values on the stack (these values are expected to be
popped immediately after this generated code. The prologue of the resume function is expected to restore
any dropped NULLs.

Returns stack indices and locals keys where we dropped NULLs, and where we found inactive context manager objects.
Nr  )Ú_finalize_spec_wiringz7root_tx must be tx when nested_graph_breaks is disabledTzCOMPILING GRAPH due to %sÚCOPY_FREE_VARSrÅ   ©rS  c              3   ó@   "  € T F  qP                  4       x € K  	  R # 5ir  )Úcan_restore)r  Úblocks   & r£   r  Ú/OutputGraph.compile_subgraph.<locals>.<genexpr>  s   é € ÐKÑ8J¨u×(Ñ(×*Ð*Ó8Jùó   ‚Fz3all blocks in cur_tx.block_stack must be restorable)Úis_graph_break)Úcreate_breakpointz)export does not support pregraph_bytecode©ÚdisableÚrandom_valuesz.do not trace into Dynamo rng recovery function©r  Ú__gen_rand_values)rR  c              3   óØ   "  € T F`  p\        V\        \        \        34      '       * ;'       d4    \        V\        4      ;'       d    VP                  4       \        J '       * x € Kb  	  R # 5ir  )rý   r‰   r‡   rŠ   rˆ   Úpython_typeÚfloat)r  r>  s   & r£   r  r~  t  sj   é € ð ñ +�Aô Øä3Ü,Ü4ðóô ÷ Vð Vô $ A¤Ó7×TÐT¸A¿M¹M»OÌuÐ<TÔUôVó +ùs   ‚+A*®A*Á$A*c              3   ó@   "  € T F  qP                  4       x € K  	  R # 5ir  )Ú	is_tensor©r  rà  s   & r£   r  r~  €  s   é € Ð=Ñ+< a—K‘K—M�MÓ+<ùr  ÚUNPACK_SEQUENCE)ÚpycodeÚ	graph_out)ÚtempvarsrR  z#flat_returns must be a ListVariablez3graph output value must be a GraphOutputEntry, got r–  Úis_inputÚinputÚconstantzEncountered unrecognized type z at output z8nested function with non-constructible closure in outputz as_python_constant for out_spec z£Cannot return a nested function with closure from a compiled function. Dynamo failed to construct the function defined in the compiled region with closure objects.zGDefine the function at module scope instead of inside another function z0Ensure that all closure variables are constants.)rÜ  rÝ  rÞ  rß  Úfrom_excÚPOP_TOPÚ
BUILD_LISTÚLIST_EXTENDÚDELETE_FASTrB  Úwarn)r  z‹While compiling, we found certain side effects happened in the model.forward. Here are the list of potential sources you can double check: ©rf  é   r=  )r™  Úerror)zr  r†  r/   r8  r9  rx  rˆ  Únested_graph_breaksrÊ  Úcompile_subgraph_reasonrO  r  Údebugro  rp  Úprefix_instsÚopnamerÿ   r:   r¢  r  rW  Úexn_tab_entryÚallÚblock_stackrt  r/  Úexitr  rŠ  r=  Úprune_dead_object_newÚadd_output_instructionsr+  Úbytecode_transformationr�  r[  r£  rX  Úcleanup_graphr3  r;  rz   r0  Ú
decoratorsrƒ  r$  rä  rZ  r.  rÏ  rC   r  Úload_function_namer8   Úcreate_storerù   Úis_emptyÚdebug_localsr]  r»  r¼  r>  r}  Úcodegen_cellsÚcompile_and_call_fx_graphr÷   r   r=   Úcodegen_suffixÚusesrw   rd   r`   rø   r±  Úlog_graph_in_out_metadatarý   r2   ÚNamedTupleVariableÚ	tuple_clsÚfunctional_exportÚExportTracerOutputÚListVariableÚgraph_outputsrF  ÚcodegenÚGraphOutputEntryr‡  ÚvariablerK  rî  rÆ  rI  rÎ   rÙ  rã   Úis_python_constantrŠ  rÇ  r‚   rI   rm   r”   Úgraph_output_varsÚrun_compiler_collectiveÚ
get_pycoder¹  rº  r9   r5   rE  rH  Úappend_outputÚcreate_loadÚupdater<   Úside_effect_replay_policyr“  Úwarningsr™  r\  )<r  rv  r  r[  rx  r   ÚinstÚ	inst_copyÚall_stack_valuesÚall_stack_locals_metasÚcur_txrq  r×  r}  r�  rN  rR  ro  rþ  Únn_modules_proxiesÚrootrƒ  Úrandom_calls_instructionsÚrand_fnÚrand_fn_namerº  Úvalsr’  Ústack_values_flatÚstored_graph_output_varÚgraph_output_varÚcan_use_fast_pathÚcell_cgÚinstructionsrŽ  Úpass1r�  rD  Úpass2r‹  Úflat_returnsrÇ  Úvt_to_graph_out_idxrÑ   r¼  rÆ  ÚidxrÙ  Úer’  Úsubgraph_pycodeÚ	start_idxÚend_idxrr  Ún_valsÚroot_cgÚunmodified_locals_namesr=  r>  Úside_effect_refss<   &&&&                                                        r£   Úcompile_subgraphÚOutputGraph.compile_subgraphÈ  s|  € ð* �<‰<ÒÜ Ð!;Ó<Ð<ô
 ×&Ñ&Ò2ÝSá! $§.¡.Ô1ä×)×)Ð)à�|‰| 2Ó%Ü$ØMóð ð
 	×'Ñ'Ô)à'-Ô$ØˆÔä�	‰	Ð-¨vÔ6ð +-ˆÜ×Ñ˜wÔ&ØŸ™×1Ô1�Ø—;‘;Ð"2Ô2Ø ×'Ñ'Ü*Ø,Ü # D§L¡L×$=Ñ$=¸mÕ$LÓ Môöô !%§	¢	¨$£�Ið /3�IÔ+Ø ×'Ñ'¨	Ö2ñ 2ð$ Ðà!#ÐØ35ˆØÒ ç“3ÑK¸×8JÒ8JÓK—3—3’3ÑK¸×8JÒ8JÓK×KÒKÜ$ØIóð ð "&×!BÑ!BØ°£l™
¸ó"ÑˆLð ×#Ñ# LÔ1Ø"×)Ñ)¨$Ô/ô " &×"4Ñ"4Ö5�Ø—
‘
˜6×2DÑ2D�
ÖEñ 6ð —]‘]ŠFð 	×Ñ×/Ñ/°Ô3à×$Ñ$ \Ô2à×)×)Ð)ÝBà×(Ñ(Ñ):Ó)<Ô=Ø-2ˆDÔ*à×!×!Ð! d§k§k kÜ Ð!LÓMÐMØ×$Ñ$ T×%;Ñ%;Ô<à*.×*NÑ*NØ�L‰Ló+
Ñ'ˆÐ'ð 	×$Ñ$ [Ô1à×ÑÔð 9=¿¹×8MÑ8MÔ8Oô
Ù8O©9¨4°ˆD”/ #Ó&Ò&Ñ8Oð 	ñ 
ô Ð0Ó1ˆå'ô ˆt× Ñ Ó! AÔ%Ø(*Ð%Ø%)§\¡\°/Ó%BˆDÔ"ÙÜ'¨×(9Ñ(9Ó:ØGôˆGð  ×.Ñ.Ð/BÀGÓLˆLÜØ—‘˜dÐ7IôˆGð &×,Ñ,Ø×*Ñ*¨<¸Ó>ôð &×,Ñ,Ô-AÀ!ÀUÓ-KÔLØ%×,Ñ,Ø×$Ñ$ T×%;Ñ%;Ó<ôð ×(Ñ(Ð)BÔCñ& .>ÔNÑ-= TËÀ#›SÉ™SÑ-=ÐÑNØ"'ÐØÐð �L‰L˜BÐ÷ @ñ @Ø!÷@ñ @ç“ñ ñ +ó——’ñ ñ +óó ÷@ð @÷ “Ñ=Ñ+<Ó=——’Ñ=Ñ+<Ó=Ó=÷@ð @ô ”CÐ)Ó*Ó+¬sÐ3DÓ/EÑE÷@ð @ð  ×!Ñ!×*Ñ*Ó,÷!@ð @ð" —O‘OÔ#÷#@ð @ð$ ×'Ñ'Ô'÷%@ð @ð& +¨2Õ.×?Ñ?Ô?÷'@ð @ð( +¨2Õ.×?Ñ?Ô?ð+ 	÷4  ×!6×!6Ð!6Ø×'Ñ'¨Ô+Ø $× 1Ñ 1× :Ñ :Ó <Ðçô
   §¡Ó-ˆGØ×Ñ˜r 7Ô+Ø#'×#AÑ#AØ”DœÐ"3Ó4Ó5°tó$Ñ ˆL˜&ð ×(Ñ(ðà!ðð ×-Ñ-Ó/ðô ! “^ð	ô
 'Ð'8¼cÐBSÓ>TÔUðð ð )ö 	ð  $Ÿ|™|¨KÓ8Ðô Ø—‘ØØ Ø#5ô	ˆEð ×Ñ Ð$5°u¸eÔDð
 ×'Ñ'¨Ô+ð ˆHØ#Ÿj™j×.Ñ.Ö0‘
��Uà˜1–9¤V¨CÔ2FÌÐ1T×%UÔ%UØ$(�H˜S“Mñ 1ô Ø—‘ØØ Ø!Ø#5ôˆEð ×Ñ Ð$5°u¸dÔCô —‘×$Ñ$×>×>Ñ>ß%Ð%ÜÐ)Ó*¨aÕ/à& qÕ)�ä˜r¤5§=¡=×#:Ñ#:×#MÑ#M×NÓNØŸ™Ü—}‘}×6Ñ6×IÑIôJð $&§8¡8¨A¥;�LØ!Ÿx™x¨�{�HÜ%Ø$¤e§m¡m×&=Ñ&=×&JÑ&J÷ò ô -Ð-RÓSÐSàFHÐ'Ø!&×!4Ñ!4×!;Ñ!;Ö!=˜Ü)Ø!¤5§=¡=×#8Ñ#8×#IÑ#I÷ ò  ô #1Ø"UÔVZÐ[`ÓVaÐUbÐ có#ð ð 5:·N±N˜Ø8=¿¹Ð+¨HÓ5ñ ">ð *.×)=Ñ)=×)PÑ)PÐ&Ü#,¨\×-?Ñ-?Ö#@™˜˜RØÐ!4Ô4Ü6FØ +Ð-@ÀÕ-Dó7Ð.¨sÓ3ð ŸI™IÒ1Ü+2°2·9±9¸fÀdÓ+KÐ!K Ö!KÜ '¨°
¸E× BÒ Bä6FØ '¨¯©ó7Ð.¨sÓ3ð  ×2Ñ2×4Ò4Ü6FØ *¨B×,AÑ,AÓ,Có7Ð.¨sÓ3ô #1Ø"@ÀÀÀKÐPSÈuÐ Uó#ð ñ% $Að*Ø8@×8SÑ8SÓ8U˜×,Ñ,Ô5ð  ˆFØ"ˆOÜ˜4Ÿ:™:Ó&¨!Ô+¬s°5×3FÑ3FÓ/GÈ1Ô/LØ04×0NÑ0NØ˜×/Ñ/Ó1°4ó1Ñ-�˜oð —‘˜lÔ+ä�u×*Ñ*Ó+¨qÔ0Ø—M‘M %×"4Ñ"4Ð5EÓ"FÔGØ.2Ñ+à—M‘MÔ"4°YÓ"?Õ@ð ×,Ñ,Ô.Ø×(Ñ(¨¸Ð(ÔHØ×(Ñ(Ø×&Ñ&Ó(°×1AÑ1AÓ1Cð )ô ð 	×$Ñ$ä"Ø ÜÐ-Ó.Ð1GÈÕ1J×1TÑ1TÕTôðô	
ð& ˆ	ØˆÜ Ð!7×8‰GˆAˆtä˜×*Ñ*Ó+ˆFØ�AŒvØ˜$Ÿ.™.Õ(�Ø˜Œ{Ø×,Ñ,ä*¨<¸QÔ?ðä$ Q›ðõð ˜6Õ!�Ø×,Ñ,ä&Ó(ðä,¨Y¸Ó@ðô % Q›ðôð ˜VÕ#�	ð ”CÐ.Ó/°!Õ3Ö3Ü# D§L¡LÓ1�Ø:<Ð'Ø ŸL™L×8Ñ8×>Ñ>Ö@‘D�A�qÜ! !§(¡(¬K×8Ô8¸Q¿X¹X×=PÑ=PÐTUÖ=UØ×-Ñ-¨g×.AÑ.AÀ!Ó.DÔEÜ58¸×9JÑ9JÓ5KÌcØ3óOõ 6Ð/°Ó2ñ Að ×,Ñ,Ø×,Ñ,Ó.ä*Ø(¬cÐ2IÓ.Jôô +¨=¸aÔ@ðõô	ð ×!Ñ!×(Ñ(Ð)@×Añ[ 9ðv 	×$Ñ$ä" 9Ó-Ü" <´SÐ9OÓ5PÔQðô Ð4°QÕ7×AÑAÀAÕEÓFðô	
÷" × 7Ø×(Ñ(Ü# MÐ:JÔKÐLôô �=‰=×Ñ×9Ñ9Ð=NÔNØ#×HÑHØ)-ð  Ió  Ð÷  Ü—=‘=×'Ñ'×AÑAÀVÔKÜ—M’MðXØXhÐWiðkôð &Ð%ô 'ðXØXhÐWiðkóð ð
 &Ð%ùó

ùóZ Oøô` 2ô Ü%Ø$^Ø&FÀxÀjÐ$Qð!ð !jØ Rð#ð &'÷ó ûðús$   Í
z.Ñ+z4èz: ú:{%û{ û {%c                ó(   <€ V ^8„  d   QhRRRS[ RR/# )r›   rv  r�   r  r×   NrB   )r¡   r¢   s   "€r£   r¤   r
   	  s(   ø€ ÷ Fñ FÐ ;ð FÁð FÈtñ Fr¦   c                ó¢  € V P                   P                  '       Ed   ^ pTpVeð   \        \        VP	                  4       4      4      pV F�  pW@P
                  J d#   VP                  VP                  V4      4       K4  VP                  '       g   \        R4      hVP                  V,          p\        V\        4      '       d   \        R4      hV! V4       K�  	  VP                  \        \        V4      4      4       VP                  pV^,          pKó  VP                  \        RVR7      4       R# VP                  \        R^ R7      4       R# )r7  NzAcur_tx.post_prune_cell_and_freevars must be set for nested frameszCan't codegen null cellr–  rz  )rž  r  rÉ   Úsortedrs  r  rÁ  Úcreate_load_closureÚpost_prune_cell_and_freevarsr†  rý   r…   r7   r¢  rŠ  r:   )r  rv  r  Útx_cntrÊ  rn  ÚcellrŽ  s   &&&     r£   r¯  ÚOutputGraph.codegen_cells 	  s  € à×'Ñ'×3×3Ñ3ØˆFØ79ˆFØÒ$ô !¤¨×(@Ñ(@Ó(BÓ!CÓD�Û$�DØ§¡Ó-Ø×(Ñ(¨×)?Ñ)?ÀÓ)EÖFà%×B×BÐBÜ"0Ø có#ð ð %×AÑAÀ$ÕG˜Ü% c¬<×8Ò8Ü"0Ð1JÓ"KÐKÙ˜3žñ %ð × Ñ Ô!3´C¸³MÓ!BÔCØŸ™�Ø˜!•’Ø×ÑÔ/°À&ÔIÖJà×ÑÔ/°À!ÔDÖEr¦   c          
      óD   <€ V ^8„  d   QhRRRS[ S[,          RS[RS[RR/# )r›   rv  r�   rq  r  Úlog_side_effectsr×   N)r÷   rƒ   rC   rì   )r¡   r¢   s   "€r£   r¤   r
  ¿	  sI   ø€ ÷ &Gñ &Gà'ð&Gñ ™?Õ+ð&Gñ ð	&Gñ
 ð&Gð 
ñ&Gr¦   c                ó”  aa	€ V P                   P                  S4       V P                  '       d�   V P                  '       d   \	        R 4      hV P                  P                  4        Fa  w  rVS! V4       V P                  f   \	        R4      hSP                  SP                  V P                  4      4       SP                  V4       Kc  	  \        P                  '       d   V P                   P                  S4       VP                   Fl  w  o	pSP                  VV	3R l4       V F  pS! V4       K  	  SP                  \!        \#        V4      R4      4       SP                  \%        R4      .4       Kn  	  V P'                  VS4       SP)                  W!P                  '       * R7       V P                   P+                  SV4       R# )z.backward_state is not supported in export modeNz>backward_state_var must not be None when backward_state is setc                  ó   <€ S ! S4      # r  r§   )r  Ú	debug_vars   €€r£   r  Ú,OutputGraph.codegen_suffix.<locals>.<lambda>Û	  s	   ø€ ¡R¨	¤]r¦   Fr•  )Úvalue_from_source)r=  Úcodegen_save_tempvarsr]  r£  r†  r;  r_  rÁ  rÂ  Ú
store_attrr/   Úreplay_side_effectsÚcodegen_hooksr®  r  Úextend_outputr8   r¢  r:   r¯  Úrestore_stackÚcodegen_update_mutated)
r  rv  rq  r  rï  ro  r’  r*  rS  rò  s
   &&&f&    @r£   r±  ÚOutputGraph.codegen_suffix¿	  sj  ù€ ð 	×Ñ×/Ñ/°Ô3Ø××ÐØ�{�{ˆ{Ü$Ð%UÓVÐVØ!×0Ñ0×6Ñ6Ö8‘	�Ù�3”Ø×*Ñ*Ò2Ü(ØXóð ð × Ñ  §¡°×0GÑ0GÓ!HÔIØ—‘˜dÖ#ñ 9ô ×%×%Ð%Ø×Ñ×+Ñ+¨BÔ/ð  "Ÿœ‰OˆI�tØ×ÑÕ2Ô3Û�Ù�3–ñ à×ÑÔ1´#°d³)¸UÓCÔDØ×ÑÔ0°Ó;Ð<Ö=ñ  /ð 	×Ñ˜2˜rÔ"à
×Ñ˜¿Y¹Y¼ÐÔGØ×Ñ×0Ñ0°Ð5EÖFr¦   c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   r
  ç	  s   ø€ ÷ 1ñ 1˜tñ 1r¦   c                ól  € V P                   '       g   \        R4      h\        V P                  P                  4      pV F  pVP
                  P                  RR4       K!  	  \        P                  ! 4       p\        P                  ! V4       EF"  w  rEVP                  \        P                  P                  J g   K0  \        VP                  4      V'       * 38X  g   KR  VP                   '       d   Kf  VP                  ^ ,          pVP                  \        P                  P                  J g   K£  \        VP                  4      V'       * 38X  g   KÅ  VP                   '       d   KÙ  VP                  ^ ,          pV P                  P#                  V4       V P                  P#                  V4       EK%  	  R# )zœ
Remove "creation_timestamp" from node meta

Remove this pattern from the graph:
    torch._C._set_grad_enabled(False)
    torch._C._set_grad_enabled(True)
z-should_exit must be True before cleanup_graphÚcreation_timestampN)rO  r†  r÷   r”   rL  r×  r   rø   r³  rC  Úpairwiser  r°  Ú_set_grad_enabledrÉ   r*  Ú_erasedÚ
erase_node)r  rL  r  r¨  Únode1Únode2s   &     r£   r©  ÚOutputGraph.cleanup_graphç	  s  € ð ××ÐÜ Ð!PÓQÐQÜ�T—Z‘Z×%Ñ%Ó&ˆÛˆDØ�I‰I�M‰MÐ.°Ö5ñ ô ×,Ò,Ó.ˆÜ%×.Ò.¨u×5‰LˆEà—‘¤§¡× :Ñ :Õ:Ü˜%Ÿ*™*Ó%¨lÔ*:Ð)<Ö<ØŸŸšà$Ÿz™z¨!�}�à—L‘L¤E§H¡H×$>Ñ$>Õ>Ü˜eŸj™jÓ)°,Ô.>Ð-@Ö@Ø!ŸMŸMšMà#(§:¡:¨a¥=�LØ—J‘J×)Ñ)¨%Ô0Ø—J‘J×)Ñ)¨%×0ó 6r¦   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# rù  rú  )r¡   r¢   s   "€r£   r¤   r
  
  s"   ø€ ÷ ñ ¡Sð ¹ð Àñ r¦   c                ó˜  aa€ V P                   '       g   R# \        P                  P                  P                  '       d+   \        P                  P
                  P                  RS4      h\        P                  RS4       \        P                  P                  RR VV3R lR7       V P                   P                  4        RV n         R# )z5
Do not save this output graph to the CompilePackage
NzDetected a package bypass: %sÚartifactc                  ó   € R RRR/# )ro  Úprecompile_cache_bypassÚencodingÚjsonr§   r§   r¦   r£   r  Ú,OutputGraph.bypass_package.<locals>.<lambda>
  s   € ØÐ1Ø˜Fñ!r¦   c                  ó   <€ R S/S C# )Ú_reasonr§   )r+  r  s   €€r£   r  r  
  s   ø€ à˜6ð ð ñ r¦   ©Úmetadata_fnÚ
payload_fn)r  rø   r±  r/   Ústrict_precompiler0   ÚPackageErrorr  ÚwarningÚ_loggingÚtrace_structuredÚbypass_current_entryrý  s   &flr£   rþ  ÚOutputGraph.bypass_package
  s—   ù€ ð �|�|ˆ|ÙÜ�=‰=×Ñ×1×1Ð1Ü—-‘-×#Ñ#×0Ñ0Ø/°óð ô 	�‰Ð3°VÔ<Ü�‰×'Ñ'Øñõð 	(ô 	
ð 	�‰×)Ñ)Ô+ØˆŽr¦   c                óV   <€ V ^8„  d   QhRS[ S[S[S[S[,          ,          3,          /# r  )rØ   rË   r÷   rÇ   )r¡   r¢   s   "€r£   r¤   r
   
  s&   ø€ ÷ ñ ©D±±d¹3Á½9µoÐ1EÕ,Fñ r¦   c                ó~  € / pV P                   P                   F›  pVP                  P                  R R4      p\        P
                  P                  P                  V4      '       g   KP  VP                  pV Uu. uF&  p\        V\        4      '       d   TM
\        V4      NK(  	  upWP                  &   K�  	  V# u upi )rå  N)r”   rL  r×  rØ  rø   r1  Úfake_tensorÚis_fake_tensorÚshaperý   rÇ   Úreprro  )r  Úretr  rå  rœ   Úss   &     r£   Úget_graph_sizes_structuredÚ&OutputGraph.get_graph_sizes_structured 
  s•   € Ø*,ˆØ—J‘J×$Ô$ˆDØ ŸI™IŸM™M¨/¸4Ó@ˆMÜ× Ñ ×,Ñ,×;Ñ;¸M×JÔJØ$×*Ñ*�ÙPTÓ!UÑPTÈ1¤z°!´S×'9Ò'9¡!¼tÀA»wÒ"FÑPTÑ!U�—I‘I“ñ	 %ð
 ˆ
ùò "Vs   Á9,B:c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ré  rB  )r¡   r¢   s   "€r£   r¤   r
  )
  s   ø€ ÷ ñ ¡Cð ©Cñ r¦   c                ó°  € R pVRV R2,          pV P                   P                   EF+  pVP                  P                  RR4      p\        P
                  P                  P                  V4      '       g   KQ  VP                  pW#P                   R\        V4       R2,          p. pRpV Fv  p\        V\        4      '       d   VP                  V4       K,  \        V\        P                  4      '       d*   RpVP                  VP                  P                   4       Ku   Kü  	  V'       g   EK	  VVP                   R	\        V4       R2,          pEK.  	  V# )
zTRACED GRAPH TENSOR SIZES
z===== z =====
rå  Nz: rY  FTz (concrete): )r”   rL  r×  rØ  rø   r1  r  r  r  ro  rÉ   rý   rÇ   rÿ   r8  r  Úhint)	r  ro  Úgraph_sizes_strr  rå  rœ   Úconcrete_sizeÚ
has_symintÚszs	   &&       r£   Úget_graph_sizesÚOutputGraph.get_graph_sizes)
  s  € Ø7ˆØ˜V D 6¨Ð2Õ2ˆØ—J‘J×$Õ$ˆDØ ŸI™IŸM™M¨/¸4Ó@ˆMÜ× Ñ ×,Ñ,×;Ñ;¸M×JÔJØ$×*Ñ*�Ø§i¡i [°´5¸³;°-¸rÐ#BÕB�Ø "�Ø"�
Û�BÜ! "¤c×*Ò*Ø%×,Ñ,¨RÖ0Ü# B¬¯©×5Ò5Ø%)˜
Ø%×,Ñ,¨R¯W©W¯\©\Ö:âñ ÷ "’zØ'Ø#Ÿy™y˜k¨´u¸]Ó7KÐ6LÈBÐOõ›ñ# %ð( Ðr¦   c                ó    <€ V ^8„  d   QhRS[ /# r  rÞ   )r¡   r¢   s   "€r£   r¤   r
  C
  s   ø€ ÷ ñ ¡cñ r¦   c              #  ó”  "  € V P                   P                  P                  4       p/ pV P                  VR7        V P                   P                  P	                  V4       Rx € V P                   P                  P	                  \        V4      4       R#   T P                   P                  P	                  \        T4      4       i ; i5i)zZ
Momentarily restores the global state to what it was prior to tracing the current output
)r¦  N)r3  r°  Úcopy_graphstaterX  Úrestore_graphstater   )r  Úprior_global_stateÚcurrent_global_states   &  r£   Úrestore_global_stateÚ OutputGraph.restore_global_stateB
  s¥   é € ð
 "×1Ñ1×@Ñ@×PÑPÓRÐØ<>ÐØ×ÑÐ#7ÐÔ8ð	à× Ñ ×/Ñ/×BÑBÐCUÔVÛð × Ñ ×/Ñ/×BÑBÜ,Ð-AÓBöøˆD× Ñ ×/Ñ/×BÑBÜ,Ð-AÓBõüs   ‚9C¼)B Á%0CÂ0CÃCc                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   r
  T
  s   ø€ ÷ %7ñ %7¨ñ %7r¦   c           
     óæ  a€ V P                   pVf   \        R4      hVP                  ;oEež   SP                  Ef�   SP                  p\
        P                  RSP                  4       \        P                  P                  RR V3R lR7       VP                  p\        V4      ^8w  d*   \        RP                  RP                  V4      4      4      h\        VP!                  4       4      P#                  VP%                  4       \        P&                  P)                  4       ,          4      ;_uu_ 4        \+        R	R
R7      ;_uu_ 4        R .VP-                  4       ,          p\.        P0                  ! VSP                  VR7       VSn        R R R 4       R R R 4       VP2                  P5                  4        \6        P8                  hR # R #   + '       g   i     LF; i  + '       g   i     LQ; i)Nr  zcompiler_collective %sr	  c                  ó   € R RRR/# )ro  Úcompiler_collectiver  Ústringr§   r§   r¦   r£   r  Ú5OutputGraph.run_compiler_collective.<locals>.<lambda>^
  s   € ØÐ1Ø ñ%r¦   c                  ó8   <€ S P                   P                  4       # r  )Úlocal_stateÚrender)Údss   €r£   r  r;  b
  s   ø€  2§>¡>×#8Ñ#8Ô#:r¦   r  z&Expect only one device type but got {}Ú+r9  Tr¨  )Úgroup)r  r†  Údistributed_stateÚ
all_statesÚ
compile_pgr  Úinfor=  rø   r  r  Ú_device_typesr¢  r¡   rZ  rE   r   r¯  Úrankr´  Údevice_countro   rœ   ÚdistÚall_gather_objectÚspeculation_logr0  r0   Ú CompileCollectiveRestartAnalysis)r  rv  rD  Údevice_typesrC  r?  s   &    @r£   r¿  Ú#OutputGraph.run_compiler_collectiveT
  sƒ  ø€ Ø�\‰\ˆØŠ:Ü Ð!;Ó<Ð<Ø×&Ñ&Ð&ˆBÓ3¸¿¹Ó8MØŸ™ˆJä�H‰HÐ-¨r¯~©~Ô>Ü�N‰N×+Ñ+Øñô ;ð ,ô ð &×3Ñ3ˆLÜ�<Ó  AÔ%Ü$Ø<×CÑCØŸ™ Ó.óóð ô )¨×)9Ñ)9Ó);Ó<×CÑCØ—O‘OÓ%¬×(9Ñ(9×(FÑ(FÓ(HÕH÷õ ô Ð2È$×OÖOà)-¨°·±Ó1BÕ(B�
ä×&Ò& z°2·>±>ÈÕTà *�”÷ P÷ð ×Ñ×$Ñ$Ô&Ü×6Ñ6Ð6ñC 9NÑ3÷. P×Oú÷÷ ús%   Ä6G ÅAG	ÆG ÇGÇG Ç G0	c                ó6   <€ V ^8„  d   QhRS[ R,          RRRR/# ©r›   Úrvrƒ   rv  r�   r×   N©r÷   )r¡   r¢   s   "€r£   r¤   r
  {
  s+   ø€ ÷ *ñ *ÙÐ(Õ)ð*Ø/Jð*à	ñ*r¦   c                ó\  € V P                   '       g   R# ^RIHp V EFF  p\        WC4      '       d   VP                  '       g   K)  VP                  4       P                  P                  P                  R4      p\        P                  P                  P                  V4      '       g   \        R\        V4       24      hVP                  f   K²  \!        VR3.4      pW`P                   ,          '       g   KÚ  VP"                  '       d   \%        VP"                  4      MVP&                  P                  P(                  pVP*                  P,                  P/                  V4       EKI  	  VP*                  P,                  '       d)   RVP*                  n        \2        P4                  ! RR7      hR# )a:  
Validate that if torch.autograd.grad is used in the graph and outputs
require grad, we trigger AutogradGradRestartAnalysis only if the output is connected
to the autograd.grad computation.

rv here refers to list of variables that are being returned from dynamo graph.

See Note [Tracing autograd.grad in dynamo]
N©ÚTensorVariablerå  z/expected example_value to be a FakeTensor, got Tz3autograd.grad consumed grad_fns of returned tensors©Úrestart_reason)rU  Úvariables.tensorrU  rý   Úrequires_gradr  r  r×  rØ  rø   r1  r  r  r†  r‡  rþ   r	  rÙ  rË   rÿ  ro  rK  Úautograd_grad_leaked_tensorsrÿ   Úgraph_break_on_autograd_gradr0   ÚAutogradGradRestartAnalysis)r  rQ  rv  rU  rŽ  r  Úreachable_grad_fnsÚtensor_names   &&&     r£   Ú)_validate_outputs_safe_for_autograd_nodesÚ5OutputGraph._validate_outputs_safe_for_autograd_nodes{
  sF  € ð ×3×3Ð3Ùå4äˆCÜ˜c×2Ò2¸#×:K×:KÐ:KÙàŸ,™,›.×-Ñ-×2Ñ2×6Ñ6°ÓGˆKÜ×$Ñ$×0Ñ0×?Ñ?À×LÒLÜ$ØEÄdÈ;ÓFWÐEXÐYóð ð ×"Ñ"Ò*Ùô "<¸kÈ4Ð=PÐ<QÓ!RÐØ!×$HÑ$H×HÖHà14··°œc #§*¡*œoÀÇÁÇÁ×ATÑAT�Ø×"Ñ"×?Ñ?×FÑFÀ{×Sñ% ð( ×Ñ×:×:Ð:à>BˆB×ÑÔ;Ü×1Ò1ØTôð ñ ;r¦   c                ó6   <€ V ^8„  d   QhRS[ R,          RRRR/# rP  rR  )r¡   r¢   s   "€r£   r¤   r
  §
  s+   ø€ ÷ >ñ >ÙÐ(Õ)ð>Ø/Jð>à	ñ>r¦   c                óX  a€ ^RI Hp \        4       oV P                   FS  p\	        WC4      '       g   K  VP
                  '       d   K*  SP                  VP                  4       P                  4       KU  	  S'       g   R# V P                  P                   Fs  pVS9   d   K  \        ;QJ d)    V3R lVP                   4       F  '       g   K   RM	  RM! V3R lVP                   4       4      '       g   Kb  SP                  V4       Ku  	  V F˜  p\	        Wc4      '       g   K  VP                  '       g   K*  VP                  4       P                  S9   g   KK  RpVP                  '       d   \        RRVR	R
.R7       Kr  RVP                   n        \$        P&                  ! RR7      h	  R# )ao  Skip frame if a source-less requires_grad_() intermediate leaks as output.

AOTAutograd's functionalization drops requires_grad_() on intermediates,
so returning them (or tensors derived from them) produces wrong results.
We detect this via FX graph reachability: find the requires_grad_() nodes
for source-less intermediates, then check if any output is downstream.
rT  Nc              3   ó,   <"  € T F	  qS9   x € K  	  R # 5ir  r§   )r  ÚinpÚtainted_nodess   & €r£   r  ÚHOutputGraph._check_requires_grad_intermediate_outputs.<locals>.<genexpr>À
  s   øé € ÐHÑ3G¨C˜-Ö'Ó3Gùs   ƒTFaK  An intermediate tensor that had requires_grad_() called on it (or a tensor derived from it) is being returned from the compiled region. AOTAutograd's functionalization drops the requires_grad_() effect on graph outputs, producing wrong results. If you only need the tensor values without gradients, call .detach() before returning.z,returning intermediate with requires_grad_()z4graph output depends on source-less requires_grad_()zVIf you only need the tensor values without gradients, call .detach() before returning.z‚Consume the gradient inside the compiled function (call backward() and use .grad), or move requires_grad_() outside torch.compile.rÛ  z:source-less requires_grad_() intermediate leaked as outputrV  )rX  rU  rù   r"  rý   rÙ  r  r  r  r”   rL  ÚanyÚall_input_nodesrY  r	  rI   rK  Úgraph_break_on_requires_grad_r0   ÚRequiresGradRestartAnalysis)	r  rQ  rv  rU  r>  r  rŽ  rë   re  s	   &&&     @r£   Ú)_check_requires_grad_intermediate_outputsÚ5OutputGraph._check_requires_grad_intermediate_outputs§
  sH  ø€ õ 	5ô -0«EˆØ×-Ô-ˆAÜ˜!×,Ô,°Q·X·X²XØ×!Ñ! !§*¡*£,×"3Ñ"3Ö4ñ .÷ Ùð —J‘J×$Ô$ˆDØ�}Ô$Ùß‹sÔH°4×3GÒ3GÓH�s�sŠsÔH°4×3GÒ3GÓH×HÔHØ×!Ñ! $Ö'ñ	 %ó ˆCä˜3×/Ô/Ø×%×%Ò%Ø—L‘L“N×'Ñ'¨=Ö8ðQð ð —<—<�<Ü!Ø NØ VØ$'ð?ðNð÷	ð HL�B×&Ñ&ÔDÜ×9Ò9Ø'côð ó; r¦   c                ó„   <€ V ^8„  d   QhRRRS[ S[,          RS[RS[S[ S[,          S[ S[,          R,          3,          /# )r›   rv  r�   rQ  rÌ  r×   N)r÷   rƒ   r0  rÉ   r>   rË   )r¡   r¢   s   "€r£   r¤   r
  ç
  sV   ø€ ÷ f:ñ f:à'ðf:ñ ‘Õ!ðf:ñ ð	f:ñ
 
‰t‘KÕ ¡$¡s¥)¨dÕ"2Ð2Õ	3ñf:r¦   c                ó   a a)a*a+a,a-a.€ \         P                  P                  P                  4       ;_uu_ 4        ^RIHp S P                  '       g   \        R4      hS P                  4        \        S P                  4      ^ 8X  d   \        V4      ^ 8X  d   . R3uuRRR4       # \        4       p\        V\        4      '       g   \        R\        V4       24      h\        V\         4      '       g   \        R\        V4       24      hS P#                  W!4       S P%                  W!4       S P'                  RRS P(                  P+                  \,        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      4      3/ 4      pS P/                  4       pVP1                  V4       S P(                  P3                  W4       \4        P6                  '       gÑ   \9        R4      ;_uu_ 4        \;        V4       FS  p\=        W84      p	\        V	\>        P@                  4      '       g   K0  \C        V	S PD                  VS PF                  R	7       KU  	  S PI                  4        \C        \>        P@                  ! VS P                  4      S PD                  VS PF                  R	7       RRR4       S PK                  4        \        S P                  4      p
\L        R
,          R;;,          V
,          uu&   S PO                  4        S PP                  PS                  4        \4        PT                  '       dv   S PF                  '       gd   \         PV                  PY                  4       '       g@   \         PZ                  P\                  P^                  '       g   \a        S P                  4       \c        VS P                  4      o+^RI2H3p V! S+4       S Ph                  '       d*   S Ph                   F  p\k        S+V\=        W<4      4       K  	  S Pl                   F  pV! S+4       K  	  \o        S+Pq                  4       R4      e&   S Ps                  RS+Pu                  RRRR7      R7       S Pv                  e   VS+n<        S Pz                  S+n=        S P|                  P                  4       S+P€                  R&   S P‚                  S+P€                  R&   VS+P€                  R&   S P„                  e   S P„                  S+P€                  R&   \†        P‰                  R\‹        VS+RRRR7      4       \         PŒ                  P�                  RV 3R lV+3R lR7       S P‘                  4        S P’                  P”                  pVf   \        R4      hVS nK        S PF                  '       gh   ^ RILHMu Hp VP�                  RR7      ;_uu_ 4        \         Pž                  P¡                  VPD                  R7      pRRR4       XS P’                  nJ        S P£                  4       pS P¤                  '       d‘   S+P                  P§                  RR 7      p\©        V4       UUu/ uF	  w  ppVVbK  	  pppS P¤                  P«                  4        F6  w  ppVVP€                  R!&   VV,          pVP¬                  VV,          nV        K8  	  S+P                  P¯                  4        S P±                  4       ;_uu_ 4        S P³                  S+V4      o*RRR4       ^ R"IZH[p \        S*V4      '       g/   \        \=        S*R#R4      V4      '       da   S*P¸                  R$8X  dP   \        S*V4      '       d   S*MS*Pº                  pVP½                  V4       \        S*V4      '       g   VP¾                  o*S PF                  '       g   VPÀ                  PÃ                  4        S Pv                  e   S Pv                  PÅ                  VS*4       S PÆ                  '       d   S*o,V,3R% lpVo*V! S*R&R'7      o*\L        R
,          R(;;,          ^,          uu&   VPD                  f   \        R)4      hVPD                  PÈ                  ;p'       Ed/   . o./ o-S PÊ                   Uu. uF  pVPÌ                  NK  	  ppV F¼  pVPÏ                  VPÌ                  4      p \Ð        PÒ                  ! VPÔ                  4      P×                  4       p!\Ù        4       p"\Ú        PÜ                  ! V"VPÔ                  V!.R4      p#\Þ        P‰                  R*V!4       S.Pá                  \â        Pä                  ! V#3R+ lV 4      V34       K¾  	  \         PZ                  P                  R&R'7      R, V*V+V V-V.3R- ll4       p$S Pç                  VV$4       MS Pç                  VS*4       S Pè                  f   \        R.4      h\ë        S Pè                  4      o)\í        4       '       dÆ   S)Pï                  V)3R/ l4       . p%\ð        Pò                  ! 4        F=  p&V&! S)4       S Põ                  4       p'S)P÷                  V'4       V%Pá                  V'4       K?  	  V% F#  p'S)Pù                  S)Pû                  V'4      4       K%  	  S)Pý                  \        \ð        4      R4       S)Pÿ                  4        \©        S PÊ                  4       F+  w  pp(V(PÌ                  S EP                   EP                  V&   K-  	  S)EP                  V4       S)EP                  4       S)EP	                  4       3uuRRR4       #   + '       g   i     EL’; i  + '       g   i     ELc; iu uppi   + '       g   i     ELm; iu upi   + '       g   i     R# ; i)0a^  
Generate code from self.graph and return the Instruction()s to
call that generated code.

Code is generated w.r.t. self.root_tx.
tx is only used for preserving GraphModule metadata

Returns a tuple of (instructions, pycode) where pycode is a string
representation of the generated Python code if generate_pycode_prologue
is enabled, otherwise None.
r‚  z2should_exit must be True before call_user_compilerNzrv must be a list, got z#root must be a FakeRootModule, got r’  c              3   ó@   "  € T F  qP                  4       x € K  	  R # 5ir  )r  rŒ  s   & r£   r  Ú8OutputGraph.compile_and_call_fx_graph.<locals>.<genexpr>  s   é € Ð5OÉBÀq·j±j·l°lËBùr  r,   )r£  ÚstatsÚcalls_captured)Údce_hop_extra_outputsz8Graph contains named parameters due to static addresses.FT©Úprint_outputÚinclude_strideÚinclude_device©rÜ   rY  r6  Ú
backend_idr(  ú%s)rv  rw  ÚcoloredÚdynamo_output_graphc                  ó(   <€ R S P                  4       /# )Úsizes)r#  r  s   €r£   r  Ú7OutputGraph.compile_and_call_fx_graph.<locals>.<lambda>€  s   ø€ ˜ $×"AÑ"AÓ"CÑDr¦   c                  ó,   <€ S P                  R RRR7      # )FTrt  )Úprint_readablerx  s   €r£   r  r  �  s   ø€  2×#4Ñ#4Ø!&°tÈDð $5ô $r¦   )r  zold_fake_mode must not be Noner  )rˆ  rÒ  ©rÖ  rå  )Ú_LazyGraphModuleÚ__self__Ú_lazy_forwardc                  óž   <€ \         P                  P                  4       ;_uu_ 4        S! V / VB uuR R R 4       #   + '       g   i     R # ; ir  )rø   r°  ÚDisableTorchFunctionSubclass)r*  r+  Úreal_compiled_fns   *,€r£   Ú_tf_disabled_wrapperÚCOutputGraph.compile_and_call_fx_graph.<locals>._tf_disabled_wrapperÜ  s3   ø€ ÜŸ™×>Ñ>×@Õ@Ù/°Ð@¸Ñ@÷ A×@×@Ó@ús	   ¨;»A	z"do not trace Dynamo-compiled graphr…  Úunique_graphsz(old_fake_mode.shape_env must not be Nonez:Compiling backend specialized graph with specialization=%sc                 ó   € V! W,          4      # r  r§   )rÛ  r*  Úcheck_fns   &&&r£   r  r    s   € ÁXØ$(¥IôF"r¦   c                ó<   € V ^8„  d   QhR\         R\         R\         /# rw  rÞ   )r¡   s   "r£   r¤   Ú;OutputGraph.compile_and_call_fx_graph.<locals>.__annotate__  s!   € ÷ 8ñ 8´ð 8¼sð 8Äsñ 8r¦   c            
      ó  <€ S	 FÒ  w  r#V! V 4      '       g   K  VS9   d   SV,          ! V / VB u # SP                   P                  VP                  VP                  4      ;_uu_ 4        VSP                  R &   \        V 4      p\        SP                  4      ;_uu_ 4        SP                  SV4      SV&   RRR4       RRR4       SV,          ! V / VB u # 	  S! V / VB #   + '       g   i     L3; i  + '       g   i     L>; i)ÚspecializationN)	rˆ  Úpatch_source_specializationrÙ  r�  r×  r÷   r   r3  Úcall_user_compiler)
r*  r+  r�  r‘  rÝ   Úcompiled_fnrÜ   r  Úspecialization_cacheÚspecialization_guardss
   *,   €€€€€r£   Úspecialized_dispatchÚCOutputGraph.compile_and_call_fx_graph.<locals>.specialized_dispatch
  sú   ø€ ã4IÑ0˜Ù# DŸ>œ>Ø-Ð1EÔEØ';¸NÖ'KØ%)ð("Ø-3ñ("ò !"ð "&§¡×!KÑ!KØ .× 5Ñ 5°~×7NÑ7N÷"õ "ð =K §¡Ð(8Ñ 9Ü?CÀD»z Ü%,¨T×-AÑ-A×%BÕ%Bà(,×(?Ñ(?ÀÀNÓ(Sð %9¸Ñ$H÷ &C÷"ð $8¸Ö#GÈÐ#XÐQWÑ#XÒXñ% 5Jñ& '¨Ð7°Ñ7Ð7÷ &C×%Bú÷"÷ "ús$   Á)8C5Â!C"Â7C5Ã"C2Ã-C5Ã5Dr  c                  ól   <€ S P                  \        P                  P                  P                  R 4      # )Ústore_user_object_weakrefs)r  rø   r±  Úgraph_bytecode_inputsr©   )r  s   €r£   r  r  2  s&   ø€ ˜B×/Ñ/ÜŸ™×;Ñ;×DÑDØ4ôr¦   )…rø   rŒ  r   Úclear_framerª  rƒ  rO  r†  r¿  rm   r”   r¢  r?   rý   r÷   r‡  r0  rk  r_  r~  r>  Ú
create_argrÉ   Ú
dedup_passrH  Ú_maybe_preserve_original_metar/   Údo_not_emit_runtime_assertsro   Údirrã   r   rT  r,   rˆ  r£  Úremove_unused_get_attr_nodesÚremove_unused_graphargsrn   Ú&remove_tensorify_specialized_graphargsrm  r0  Ú$canonicalize_output_graph_node_orderÚcompilerÚis_exportingr±  rò  ró  râ  r#   Údce_extra_outputsrs  rf  r<  rJ  r$  Ú
parametersrþ  r�  r  Ú_backend_idrž  rY  rW  r×  r6  r(  Úgraph_code_logrŸ  rx   r  r  r1  r3  rm  Ú_old_fake_moder/  r¬  r0  r1  r2  rÝ   r,  Ú
find_nodesrI  r;  Úfake_deviceÚlintr4  r“  Útorch.fx._lazy_graph_modulerƒ  r©   r„  Úforce_recompilerZ  Úfake_tensor_converterÚclear_non_cpu_constantsÚadd_backend_idrS  ÚspecializationsrI  rÙ  rK  ÚinspectÚ	getsourcer�  ÚstripÚRootGuardManagerr   ÚLAMBDA_GUARDr  rÿ   r¶  r·  Úinstall_global_unsafer  rC   rK   r  rL   rF  rä  r  rÁ  rÂ  r  Úpop_toprî  rÅ  Úmake_call_generated_coder   rÀ  )/r  rv  rQ  rÌ  rƒ  ro  Úoutput_nodeÚsub_gmsÚattrÚsubgraphÚncallsrs  Úsubgraph_nameÚregister_finalizerÚold_fake_moderl  Úbackend_fake_moderÝ   Úplaceholdersrr  ÚnÚplaceholder_to_idxr  ÚsnapshotrÛ  rƒ  Úlazy_gmr‰  rµ  ÚaÚsourcesr‘  Úsource_indexÚcheck_fn_sourceÚunused_root_guard_managerr�  r—  Útmp_varsÚconstructorÚvar_namerS  r  r”  rÜ   rˆ  r•  r–  s/   f&&&                                     @@@@@@r£   r°  Ú%OutputGraph.compile_and_call_fx_graphç
  sa	  þ€ ô" �]‰]×)Ñ)×5Ñ5×7Õ7Ý+à×#×#Ð#Ü$ØHóð ð ×(Ñ(Ô*Ü˜4Ÿ:™:Ó&¨!Ô+´°B³¸1´Ø˜4�x÷ 8Ò7ô )Ó*ˆDä˜b¤$×'Ò'Ü$Ð'>¼tÀB»x¸jÐ%IÓJÐJÜ˜d¤N×3Ò3Ü$Ð'JÌ4ÐPTË:È,Ð%WÓXÐXð
 ×:Ñ:¸2ÔBð ×:Ñ:¸2ÔBà×*Ñ*ØØØ×$Ñ$×/Ñ/·´Ñ5OÉBÓ5O·±Ñ5OÉBÓ5OÓ0OÓPÐRØó	ˆKð —o‘oÓ'ˆGØ×Ñ Ô(à×Ñ×=Ñ=¸bÔNÜ×5×5Ð5ô "Ð"C×DÕDÜ # D¦	˜Ü#*¨4Ó#6˜Ü% h´·±×?Ô?Ü;Ø (Ø $§¡Ø $Ø'+§{¡{÷	ñ !*ð ×5Ñ5Ô7Ü3ÜŸš t¨T¯Z©ZÓ8ØŸ™ØØ#Ÿ{™{õ	÷ Eð& ×(Ñ(Ô*Ü  §¡Ó,ˆFÜ�WÕÐ.×/°6Õ9Ó/à×7Ñ7Ô9ð ×!Ñ!×'Ñ'Ô)ô ×;×;Ð;ØŸŸ˜ÜŸ™×3Ñ3×5Ò5ÜŸ™×7Ñ7×S×SÐSä# D§J¡JÔ/ä# D¨$¯*©*Ó5ˆBå@á! "Ô%ð
 ×6×6Ð6Ø%)×%LÔ%L�MÜ˜B ¬w°tÓ/KÖLñ &Mð '+×&AÔ&AÐ"Ù" 2Ö&ñ 'Bô �B—M‘M“O TÓ*Ò6ð ×#Ñ#ØNØ×(Ñ(Ø%*¸4ÐPTð )ó ð $ô ð �|‰|Ò'Ø!%�”ð *.×)EÑ)EˆBÔ&ð ×5Ñ5×:Ñ:Ó<ð �G‰GÐ6Ñ7ð ,0×+AÑ+AˆB�G‰GÐ'Ñ(Ø$(ˆB�G‰G�LÑ!à×(Ñ(Ò4Ø26×2KÑ2K�—‘Ð.Ñ/ä× Ñ ØÜ&Ø˜"¨TÀ$ÐPTôôô �N‰N×+Ñ+Ø%ÜDôð ,ô ð ×#Ñ#Ô%Ø ×0Ñ0×:Ñ:ˆMØÒ$Ü$Ð%EÓFÐFà"/ˆDÔØ—;—;�;ß9Ð9à—]‘]ÈE�]×RÕRô ).×(9Ñ(9×(HÑ(HØ"/×"9Ñ"9ð )Ió )Ð%÷ Sð& 2C�×$Ñ$Ô.à!×0Ñ0Ó2ˆNð ×7×7Ð7Ø!Ÿx™x×2Ñ2°mÐ2ÓD�Ü7@ÀÔ7NÔ%OÑ7N©t¨q°! a¨¢dÑ7NÐ"Ñ%OØ&*×&NÑ&N×&TÑ&TÖ&V‘N�D˜(Ø19�D—I‘I˜oÑ.Ø,¨TÕ2�CØ6>×6JÑ6J�N 3Õ'Ö3ñ 'Wð
 �H‰H�M‰MŒOØ×*Ñ*×,Õ,Ø"×5Ñ5°b¸.ÓI�÷ -õ Eä˜+Ð'7×8Ò8Üœ7 ;°
¸DÓAÐCS×TÒTØ×(Ñ(¨OÔ;ô " +Ð/?×@Ò@ñ  à$×-Ñ-ð ð !×0Ñ0°Ô9ä! +Ð/?×@Ò@à")§/¡/�Kà—;—;�;ð
 ×3Ñ3×KÑKÔMà�|‰|Ò'Ø—‘×+Ñ+¨D°+Ô>ð ×3×3Ð3Ø#.Ð õAð 3�á!ØÐ$HôˆKô �WÕ˜o×.°!Õ3Ó.Ø×&Ñ&Ò.Ü$Ð%OÓPÐPØ"/×"9Ñ"9×"IÑ"IÐIˆ×IØ(*Ð%ØSUÐ$Ø-1¯^ª^Ó<©^¨˜1Ÿ8œ8©^�Ð<Û&5�NØ#*§=¡=°×1FÑ1FÓ#G�LÜ&-×&7Ò&7¸×8OÑ8OÓ&P×&VÑ&VÓ&X�Oä0@Ó0BÐ-Ü%×2Ò2Ø1Ø&×/Ñ/Ø(Ð)Øó	 �Hô —I‘IØTØ'ôð
 *×0Ñ0ä%×-Ò-Ø;Có !"ð !-ó	ð +ðö
ñ# '6ô: —‘×&Ñ&Ð.RÐ&ÓS÷8ó 8ó Tð8ð. ×*Ñ*¨4Ð1EÕFð ×*Ñ*¨4°Ô=à�|‰|Ò#Ü$Ð%?Ó@Ð@Ü˜4Ÿ<™<Ó(ˆBä×!Ò!ð × Ñ ôôð �Ü#@×#GÒ#GÖ#I�KÙ ”OàŸ™›ð ð —H‘H˜XÔ&Ø—O‘O HÖ-ñ $Jó !)�HØ×$Ñ$ R§^¡^°HÓ%=Ö>ñ !)ð × Ñ ¤Ô%BÓ!CÀUÔKØ—
‘
”ä% d§n¡nÖ5‘��SØLOÏJÉJ�×$Ò$×DÒDÀSÓIñ 6ð ×'Ò'¨Ô-à×&Ò&Ó(¨"¯-ª-«/Ð9÷k
 8Ò7÷Z E×DÐDú÷R S×RÐRüó6 &P÷ -×,Ð,üòx =÷i 8×7Ð7ús±   ¸A!m,Â$Em,Ç'7l%	È#A9l%	ÊBm,Ì;#m,Í)m,Î	Hm,Ö#m,Ö4+l9	×:m,Ø*m,Ùm
ÙB	m,Ûm	Û/B.m,ÞAm,ß4A+m,á m,á2m'âJm,ì%l6ì0	m,ì9m
ím,ím$ím,í,m=	c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r  )r÷   r   rû   )r¡   r¢   s   "€r£   r¤   r
  P  s   ø€ ÷ 7ñ 7™d¡2§7¡7�mñ 7r¦   c                ó:   € V P                   P                  R R7      # )rÒ  r‚  )r”   r­  r  s   &r£   rÇ  ÚOutputGraph.placeholdersO  s   € à�z‰z×$Ñ$¨Ð$Ó6Ð6r¦   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r  )r÷   r~   )r¡   r¢   s   "€r£   r¤   r
  T  s   ø€ ÷ Eñ E™4¡�>ñ Er¦   c                ód   € V P                    Uu. uF  qP                  R ,          NK  	  up# u upi )rÓ  )rÇ  r×  ©r  r  s   & r£   rI  ÚOutputGraph.graphargsS  s,   € à26×2CÒ2CÓDÑ2C¨$—	‘	˜*×%Ð%Ñ2CÑDÐDùÒDs   �-c                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# rÛ   ©r   rT  r÷   r   r3   )r¡   r¢   s   "€r£   r¤   r
  W  s2   ø€ ÷ @ñ @Ù—.‘.ð@Ù26±vµ,ð@á	ñ@r¦   c           	     ó”   € \        R RRRRRR7      ;_uu_ 4        V P                  W4      uuRRR4       #   + '       g   i     R# ; i)úOutputGraph.call_user_compilerÚbackend_compileTÚcompile_aot_autogradÚ'aot_autograd_cumulative_compile_time_us)Ú
phase_namer©  Úlog_waitcounterÚwaitcounter_name_overrideÚdynamo_compile_column_usN)ro   Ú_call_user_compiler)r  rÜ   rÝ   s   &&&r£   r“  ÚOutputGraph.call_user_compilerW  sH   € ô Ø,Ø(Ø"&Ø Ø&<Ø%N÷
ö 
ð ×+Ñ+¨BÓ?÷
÷ 
÷ 
ó 
ús	   š6¶A	c                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# rÛ   rÝ  )r¡   r¢   s   "€r£   r¤   r
  d  s2   ø€ ÷ hñ hÙ—.‘.ðhÙ26±vµ,ðhá	ñhr¦   c                ó¢  € V P                   f   \        R4      h^ p. pVP                  P                   FA  pVP                  R9   d
   V^,          pVP                  R8X  g   K0  VP                  V4       KC  	  \        V4       V F;  p\        VR4      '       d   K  VP                  R,          pVP                  Vn
        K=  	  V P                  Vn        V P                  Vn        \        V P                   \"        P$                  4      ;'       g    V P                   p\'        V P                   \"        P(                  4      p	V	'       d   \+        W‰4      p\        VR4      '       d   VP,                  MRp
^ RIHpHp \"        P0                  '       d
   V! V4      pM\"        P2                  '       d	   V! V4      p \5        4       ! \6        P8                  RV
 24       \"        P:                  '       d   \=        V4      pV! W4      p\5        4       ! \6        P8                  R	V
 24       \?        V4      '       g   \        R
4      h \c        RR/ T Pd                  CRTR\g        TP                  P                  4      R\g        T4      /C4       X#   \@        \B        \D        3 d    h \F         dÂ   pT PH                  '       dE   \K        T P                   T\L        PN                  ! 4       4      PQ                  TPR                  4      R h\U        TT PV                  PX                  RRT
 R\[        T4       RT PV                  P]                  4        2RT
 R\[        T4       R2R.R7        R p?EL&R p?i\^         d    h \`         dJ   p\K        T P                   T\L        PN                  ! 4       4      PQ                  TPR                  4      R hR p?ii ; i)Nzcompiler_fn must not be NonerÒ  Ú_dynamo_sourcerÓ  r©   z<unknown compiler_fn>)Úinline_invoke_subgraphÚ!inline_single_use_invoke_subgraphzcalling compiler function zdone compiler function z#compiler_fn did not return callablezBackend compiler exceptionz	Backend: z
Exception:z
Traceback:
zBackend compiler `z` failed with z. Adding a graph break.z-Report an issue to the backend compiler repo.rÛ  Údynamorß  Úop_countÚ
node_countÚinput_count©r  r|  Úcall_module)4rÕ   r†  r”   rL  rÖ  rÿ   rv   rˆ  r×  rÙ  rë  r<  Ú_param_name_to_sourcerL  Ú_source_to_user_stacksrN   r6  r/   Údebug_backend_overriderO   Údebug_inductor_config_overriderå   r©   Ú5torch._higher_order_ops.passes.inline_invoke_subgraphrì  rí  r  r1   ÚINFOr[  rM  Úcallabler   r   Ú
IndexErrorrG   rT  rF   r¶  ÚcurrentframeÚwith_tracebackÚ__traceback__rJ   r  r  rË   Úformat_frame_summaryrH   r]  r!   r  r¢  )r  rÜ   rÝ   ÚtotrÇ  r  ÚplrS  rÕ   Úinductor_config_overridero  rì  rí  r”  rÜ  s   &&&            r£   rç  ÚOutputGraph._call_user_compilerd  sZ  € ð ×ÑÒ#Ü Ð!?Ó@Ð@ØˆØˆØ—H‘H—N”NˆDØ�w‰wÐIÔIØ�q•�Ø�w‰w˜-Ö'Ø×#Ñ# DÖ)ñ	 #ô
 	˜3ÔÛˆBÜ˜2Ð/×0Ô0Ø—g‘g˜jÕ)�ð %(§J¡J�Ö!ñ ð $(×#<Ñ#<ˆÔ Ø$(×$>Ñ$>ˆÔ!ô 0Ø×&Ñ&¬×(EÑ(Eó÷  ð  ð ×Ñð	 	ô $OØ×"Ñ"¤F×$IÑ$Ió$
Ð ÷ $Ü4ØóˆKô �{ J×/Ò/ð × Ò à(ð 	÷
	
ô
 ×(×(Ð(Ù'¨Ó+‰BÜ×5×5Ð5Ù2°2Ó6ˆBð"	8ÜŒNœ7Ÿ<™<Ð+EÀdÀVÐ)LÔMÜ×(×(Ð(Ü,¨[Ó9�Ù% bÓ9ˆKÜŒNœ7Ÿ<™<Ð+BÀ4À&Ð)IÔJÜ˜K×(Ò(Ü$Ð%JÓKÐKð )ô< 	ØØ,ðØ—.‘.ðà˜CØœc "§(¡(§.¡.Ó1Øœs <Ó0ñ	ô		
ð ÐøôQ /Ô0@Ä*ÐMô 	ð Ü0ô 	Ø×5×5Ð5Ü+Ø×$Ñ$ a¬×)=Ò)=Ó)?óç ‘. §¡Ó1°tð<ô 'ØØ—‘×#Ñ#Ø4Ø# D 6¨´c¸!³f°X¸^ÈDÏLÉL×LmÑLmÓLoÐKpÐqØ0°°°nÄSÈÃVÀHÐLcÐdàCð÷	ó 	ûô ô 	ð Üô 	8Ü'Ø× Ñ  !¤W×%9Ò%9Ó%;óç‰n˜QŸ_™_Ó-°4ð8ûð	8ús9   Æ<B	J ÊOÊ/OÊ0B6M,Í,OÍ9
OÎOÎAO	Ï	Oc                ó^   <€ V ^8„  d   QhRS[ S[S[P                  P                  3,          /# r  )rØ   rË   rø   r   rT  )r¡   r¢   s   "€r£   r¤   r
  Î  s(   ø€ ÷ ñ ™D¡¡e§h¡h×&:Ñ&:Ð!:Õ;ñ r¦   c                óp   € \         P                  P                  P                  '       d   \	        V 4      # / # r  )rø   r±  r/   Úuse_graph_deduplicationrM   r  s   &r£   rž  ÚOutputGraph.dedup_passÎ  s(   € Ü�=‰=×Ñ×7×7Ð7Ü,¨TÓ2Ð2àˆIr¦   c                óT   <€ V ^8„  d   QhRS[ RS[P                  P                  RS[ /# )r›   ro  Úsub_gmr×   )rË   rø   r   rT  )r¡   r¢   s   "€r£   r¤   r
  Ô  s,   ø€ ÷ ñ ¡Sð ±%·(±(×2FÑ2Fð É3ñ r¦   c                ót   € \        WP                  R R7      pW2n        RVn        V P	                  W#RR7       V# )T)Úrequires_suffixFNrá  )rt   r3  r©   Útorchdynamo_force_dynamicr<  )r  ro  r	  Ú	next_names   &&& r£   r  ÚOutputGraph.install_subgraphÔ  s:   € Ü'¨¯o©oÈtÔTˆ	Ø#ŒØ+0ˆÔ(ð 	×$Ñ$ V¸tÐ$ÔDØÐr¦   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r  )r÷   rø   r   )r¡   r¢   s   "€r£   r¤   r
  Ý  s   ø€ ÷ ñ ¡¡U§\¡\Õ 2ñ r¦   c                óX   € V P                    Uu. uF  qP                  NK  	  ppV# u upi r  )rI  Úexample)r  rS  ra  s   &  r£   rÝ   ÚOutputGraph.example_inputsÝ  s&   € Ø)-¯ªÓ8© #—+”+©ˆÐ8àˆùò 9s   �'c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   r
  â  s   ø€ ÷ 'ñ '¨dñ 'r¦   c                óÎ   € \        V P                  P                  R R7      RR7       F9  p\        \	        VP
                  4      4      ^ 8X  g   K(  V P                  V4       K;  	  R# )rý  r‚  T)ÚreverseN)rè  r”   r­  r¢  r÷   Úusersrƒ  rÚ  s   & r£   r¢  Ú(OutputGraph.remove_unused_get_attr_nodesâ  sJ   € Ü˜4Ÿ:™:×0Ñ0°JÐ0Ó?È×NˆDÜ”4˜Ÿ
™
Ó#Ó$¨Ö)Ø× Ñ  Ö&ó Or¦   c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   r
  ç  s   ø€ ÷ Y0ñ Y0¨ñ Y0r¦   c                óÎ  a aaa€ S P                   '       g   \        R 4      hR R lpR R loR V3R llp^ RIHp \	        \        S P                  P                  4      4       Få  p\        \        VP                  4      4      ^ 8X  g   K(  VP                  R8X  gœ   VP                  R	8X  d   VP                  \        P                  J gm   VP                  R	8X  d>   VP                  \        P                  J d    V! VP                   ^ ,          4      '       g   V! V4      '       g   V! V4      '       g   KÔ  S P#                  V4       Kç  	  R
 R lpR V 3R llp\%        4       oR R lo. pS P&                   EF,  pV! V4      RJpV'       d(   VP                  '       g   VP)                  V4       K;  K=  VP                  '       g2   \+        VP,                  R,          \.        4      '       g   V! V4       K€  VP,                  R,          p	\+        V	\.        4      '       d   K«  \+        VP,                  R,          P0                  \        P2                  4      '       dà   VP,                  R,          P0                  p
VP,                  R,          P4                  p\        P6                  P8                  P;                  V
4      '       gt   \=        V
P?                  4       4      pV FT  p\A        VPB                  V4      p\D        PF                  ! \        PH                  \        PJ                  3VV3R lV4       KV  	  EKÅ  \M        \O        VP,                  R,          P0                  4      4      '       d   EKý  V	PP                  e   V	PP                  MV	P0                  pS! SV4       EK/  	  V F3  pV! V4      pVf   K  VS9  d   V! V4       K"  SPS                  V4       K5  	  R# )z(should_exit must be True before finalizec                óX   € V ^8„  d   QhR\         P                  P                  R\        /# )r›   Úb_noder×   ©r   r  ÚArgumentrì   )r¡   s   "r£   r¤   Ú9OutputGraph.remove_unused_graphargs.<locals>.__annotate__ö  s$   € ÷ 	ñ 	¤2§7¡7×#3Ñ#3ð 	¼ñ 	r¦   c                 ó,  € V R J d   R # \        V \        P                  4      '       g   R# V P                  P	                  R4      pVf   R# VR J d   R # \        V\
        P                  4      '       d!   VP                  P                  4       ;pe   V# R# )TFrå  )	rý   r   rû   r×  rØ  rø   ÚSymBoolr  Úmaybe_as_bool)r  ÚbÚrs   &  r£   Úis_static_trueÚ;OutputGraph.remove_unused_graphargs.<locals>.is_static_trueö  sw   € Ø˜‹~ÙÜ˜f¤b§g¡g×.Ò.ÙØ—‘—‘ Ó0ˆAØŠyÙØ�D‹yÙä˜1œeŸm™m×,Ò,ØŸ&™&×.Ñ.Ó0Ð0�QÒ=à�ñ r¦   c                óX   € V ^8„  d   QhR\         P                  P                  R\        /# )r›   rÌ  r×   r  )r¡   s   "r£   r¤   r  	  s$   € ÷ 	ñ 	œbŸg™g×.Ñ.ð 	´4ñ 	r¦   c                 óâ   € ^ RI Hp \        V \        \        \
        34      '       d   R# \        V \        P                  4      '       d&   \        V P                  P                  R4      V4      # R# )r7  ©ÚSymTypesTrå  F)
Útorch.fx.experimental.sym_noder)  rý   rÇ   r‰  rì   r   rû   r×  rØ  )rÌ  r)  s   & r£   Úis_symnode_argÚ;OutputGraph.remove_unused_graphargs.<locals>.is_symnode_arg	  sJ   € Ý?ä˜!œc¤5¬$Ð/×0Ò0ÙÜ˜!œRŸW™W×%Ò%Ü! !§&¡&§*¡*¨_Ó"=¸xÓHÐHÙr¦   c                óD   € V ^8„  d   QhR\         P                  R\        /# ©r›   r  r×   )r   rû   rì   )r¡   s   "r£   r¤   r    s   € ÷ 	ñ 	¬"¯'©'ð 	´dñ 	r¦   c                 ó$  <€ ^ RI Hp V P                  R8w  d   R# \        V P                  P                  R4      V4      '       g   R# \        ;QJ d)    V3R lV P                   4       F  '       d   K   RM	  RM! V3R lV P                   4       4      '       g   R# \        ;QJ d7    V3R lV P                  P                  4        4       F  '       d   K   RM,	  RM(! V3R lV P                  P                  4        4       4      '       g   R# R# )r7  r(  r  Frå  c              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5ir  r§   ©r  rÌ  r+  s   & €r£   r  ÚWOutputGraph.remove_unused_graphargs.<locals>.is_symnode_compute_node.<locals>.<genexpr>   s   øé € Ð<±)¨Q‘~ a×(Ð(³)ùó   ƒTc              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5ir  r§   r1  s   & €r£   r  r2  "  s   øé € ÐGÑ2F¨Q‘~ a×(Ð(Ó2Fùr3  )
r*  r)  rÖ  rý   r×  rØ  r£  r*  r+  rF  )r  r)  r+  s   & €r£   Úis_symnode_compute_nodeÚDOutputGraph.remove_unused_graphargs.<locals>.is_symnode_compute_node  s¡   ø€ Ý?à�w‰w˜/Ô)Ùä˜dŸi™iŸm™m¨OÓ<¸h×GÒGÙ÷ “3Ô<°$·)²)Ó<—3—3’3Ô<°$·)²)Ó<×<Ò<Ùß“3ÔG°$·+±+×2DÑ2DÔ2FÓG—3—3’3ÔG°$·+±+×2DÑ2DÔ2FÓG×GÒGÙÙr¦   )Úis_accessor_noderý  r  c                óf   € V ^8„  d   QhR\         P                  R\        P                  R,          /# ©r›   r  r×   N)r   rû   rq  rr  )r¡   s   "r£   r¤   r  7  s'   € ÷ 	ñ 	¬2¯7©7ð 	´u·|±|ÀdÕ7Jñ 	r¦   c                 ó  € V P                   R ,          pVP                  p\        V\        P                  4      '       dK   \        VP
                  P                  \        P                  4      '       d   VP
                  P                  # R# )rÓ  N)	r×  r  rý   rø   r8  r  Úexprrq  rr  )r  rS  r  s   &  r£   Úplaceholder_binds_symbolÚEOutputGraph.remove_unused_graphargs.<locals>.placeholder_binds_symbol7  s^   € Ø—)‘)˜JÕ'ˆCØ—k‘kˆGÜ˜'¤5§<¡<×0Ò0´ZØ—‘×!Ñ!¤5§<¡<÷6ò 6ð —|‘|×(Ñ(Ð(Ùr¦   c                ó<   € V ^8„  d   QhR\         P                  RR/# r9  ©r   rû   )r¡   s   "r£   r¤   r  @  s   € ÷ 	2ñ 	2¤§¡ð 	2¨Dñ 	2r¦   c                 óò   <€ \         P                  R V P                  R,          P                  P                  4       V P                  R SP                  V 4       SP                  P                  V R4       R# )zREMOVE UNUSED GRAPHARG %srÓ  N)r  rŸ  r×  rÙ  ro  rƒ  rm  r   )r  r  s   &€r£   Úremove_unusedÚ:OutputGraph.remove_unused_graphargs.<locals>.remove_unused@  sY   ø€ Ü�I‰IÐ1°4·9±9¸ZÕ3H×3OÑ3O×3TÑ3TÔUð —	‘	˜*Ð%Ø×Ñ˜TÔ"Ø×!Ñ!×%Ñ% d¨DÖ1r¦   c                óœ   € V ^8„  d   QhR\         \        P                  ,          R\        P                  \        P
                  ,          RR/# )r›   Úused_symbolsÚfaker×   N)rù   rq  rr  rø   r8  r   )r¡   s   "r£   r¤   r  J  s:   € ÷ 	/ñ 	/ÜœeŸl™lÕ+ð	/Ü38·<±<Ä%Ç,Á,Õ3Nð	/àñ	/r¦   c                 ó*   € V \        V4      ,          p R # r  )r%   )rD  rE  s   &&r£   Úupdate_used_symbolsÚ@OutputGraph.remove_unused_graphargs.<locals>.update_used_symbolsJ  s   € ð œL¨Ó.Õ.ŠLr¦   NrÓ  c                 ó   <€ S! SV 4      # r  r§   )ÚtrG  rD  s   &€€r£   r  Ú5OutputGraph.remove_unused_graphargs.<locals>.<lambda>m  s   ø€ Ñ.AÀ,ÐPQÔ.Rr¦   )*rO  r†  r9  r7  r/  r÷   r”   rL  r¢  r  rÖ  r  ÚoperatorÚgetitemrø   Ú_checkr*  rƒ  rù   rÇ  rÿ   rý   r×  r}   r  ÚScriptObjectÚexample_strong_refr"  r#  Útracing_with_realrØ   Ú__obj_flatten__rã   Úwrapped_objÚpytreeÚtree_map_onlyr8  r   r   r‡  r  Úremove)r  r$  r5  r7  r  r<  rA  Úrecheck_placeholdersÚbinds_symbolrS  Úreal_script_objr'  Ú	flat_dictrÀ  Úfake_attr_valrE  Úsymbolr+  rG  rD  s   f                @@@r£   r£  Ú#OutputGraph.remove_unused_graphargsç  së  û€ ð ××ÐÜ Ð!KÓLÐLõ	õ&	÷	ð 	õ" 	KäœT $§*¡*×"2Ñ"2Ó3Ö4ˆDÜ”4˜Ÿ
™
Ó#Ó$¨Ö)à—G‘G˜zÔ)ØŸ™ ?Ô2°t·{±{Äh×FVÑFVÓ7VàŸ™ ?Ô2Ø ŸK™K¬5¯<©<Ó7Ù*¨4¯9©9°Q­<×8Ò8á.¨t×4Ò4Ù'¨×-Ô-à×$Ñ$ TÖ*ñ 5õ	÷	2ð 	2ô +.«%ˆõ	/ð
  "ÐØ×%Õ%ˆDÙ3°DÓ9ÀÐEˆLçØ—z—z�zØ(×/Ñ/°Ö5ñ "ð —z—z�z¬*Ø—I‘I˜jÕ)Ô+@÷+ò +ñ " $Ö'ð Ÿ)™) JÕ/�CÜ! #Ô'<×=Ò=Ù Ü! $§)¡)¨JÕ"7×"?Ñ"?Ä×ASÑAS×TÒTØ*.¯)©)°JÕ*?×*GÑ*G˜Ø*.¯)©)°JÕ*?×*RÑ*R˜Ü$Ÿ~™~×AÑA×SÑSØ+÷ ò  ô )-¨_×-LÑ-LÓ-NÓ(O˜IÛ(1 Ü07Ø$3×$?Ñ$?Àó1" ô !'× 4Ò 4Ü%*§\¡\´5·<±<Ð$@Ý$RØ$1ö!"ñ	 )2ò !Ü&¤t¨D¯I©I°jÕ,A×,IÑ,IÓ'J×KÒKÚ à+.¯?©?Ò+F˜ŸšÈCÏKÉKð ñ (¨°d×;ñM &óR )ˆDÙ-¨dÓ3ˆFØÔ!Ø Ô-Ù! $Ö'ð !×'Ñ'¨Ö/ó )r¦   c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   r
  ‚  s   ø€ ÷  'ñ  '¸ñ  'r¦   c                ó"  € ^ RI Hp V P                  P                   EFm  pVP                  P                  R4      p\        V\        4      '       g   K7  VP                  f   KG  \        VP                  P                  P                  R4      '       g   Ky  \        ;QJ d&    R VP                   4       F  '       d   K   RM	  RM! R VP                   4       4      '       g   KÉ  VP                  VP                  P                  P                  P                  4      '       g   EK  \!        VP                  4       F8  pVP#                  \%        VP                  4      4       V P'                  V4       K:  	  V P'                  V4       EKp  	  R# )r7  )ÚTensorifyStaterå  Nro  c              3   ó>   "  € T F  qP                   R 8H  x € K  	  R# 5i)ÚitemN)r  )r  Úus   & r£   r  ÚEOutputGraph.remove_tensorify_specialized_graphargs.<locals>.<genexpr>™  s   é € Ð?±J¨qŸ™ FÖ*³Jùs   ‚FT)Útorch._dynamo.symbolic_convertr`  r”   rL  r×  rØ  rý   r    Ú	item_memorˆ  r  Ú_exprr£  r  Úshould_specializero  r÷   Úreplace_all_uses_withr&   rƒ  )r  r`  r  rå  rc  s   &    r£   r¤  Ú2OutputGraph.remove_tensorify_specialized_graphargs‚  s	  € õ 	Bà—J‘J×$Õ$ˆDØ ŸI™IŸM™M¨/Ó:ˆMä˜=¬*×5Ô5Ø!×+Ñ+Ô7Ü˜M×3Ñ3×8Ñ8×>Ñ>À×GÔGß“CÑ?°D·J²JÓ?—C—C’CÑ?°D·J²JÓ?×?Ô?Ø"×4Ñ4à!×+Ñ+×0Ñ0×6Ñ6×;Ñ;÷õ ô
 ˜dŸj™jÖ)�AØ×+Ñ+¬L¸×9PÑ9PÓ,QÔRØ×$Ñ$ QÖ'ñ *ð × Ñ  ×&ó %r¦   c                óX   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          R,          RR/# )r›   rÓ  rŽ  Nr×   )r÷   r>   rË   )r¡   r¢   s   "€r£   r¤   r
  ¤  s3   ø€ ÷  ñ  Ù™;Õ'ð Ù15±cµ¸TÕ1Að à	ñ r¦   c                óØ   € V P                   P                  V4       \        V\        \	        R4      34      '       g   \        R4      hV P                  P                  V4       RV n        R# )a  
We call this on the creation of a new compiled subgraph that is inserted
before user code.
An optional pycode argument can be passed to add python codegen along with
the bytecode. The generated python code should match the bytecode behavior
from the `prefix` argument.
Nz,pycode must be a list of python code or NoneT)	rF  r  rý   r÷   r‡  r†  rð  rÿ   rO  )r  rÓ  rŽ  s   &&&r£   r§  Ú#OutputGraph.add_output_instructions¤  sV   € ð 	× Ñ ×'Ñ'¨Ô/Ü˜&¤4¬¨d«Ð"4×5Ò5Ü Ð!OÓPÐPØ×Ñ×!Ñ! &Ô)ØˆÖr¦   c                óZ   <€ V ^8„  d   QhRS[ RS[P                  RS[S[ S[3,          RR/# )r›   ro  r°  rÓ  r×   N)rË   Útypesr   rØ   r   )r¡   r¢   s   "€r£   r¤   r
  ´  s?   ø€ ÷ ñ áðñ �n‰nðñ ™™S˜•>ð	ð
 
ñr¦   c                ó¾   aaa€ SP                   '       d    R VVV3R llpV P                  SV4       R# V P                  S\        P                  ! SSS4      4       R# )a1  Install a resume function as a global.

When the code has freevars, installs a factory that creates the
function with correct globals and closure (since MAKE_FUNCTION
inherits the current frame's globals, which is wrong for resume
functions from inlined frames). Otherwise installs the function
directly.
c                ór   € V ^8„  d   QhR\         \        P                  R3,          R\        P                  /# )r›   Úclosure.r×   )rÉ   ro  ÚCellTypeÚFunctionType)r¡   s   "r£   r¤   Ú@OutputGraph.install_resume_function_global.<locals>.__annotate__Ä  s4   € ÷ Pñ PÜœuŸ~™~¨sÐ2Õ3ðPä×#Ñ#ñPr¦   c                 ó8   <€ \         P                  ! SSSR V 4      # r  )ro  rt  )rr  r°  rÓ  ro  s   &€€€r£   Ú_make_fnÚ<OutputGraph.install_resume_function_global.<locals>._make_fnÄ  s   ø€ ô ×)Ò)¨$°	¸4ÀÀwÓOÐOr¦   N)rÅ   r»  ro  rt  )r  ro  r°  rÓ  rw  s   &fff r£   Úinstall_resume_function_globalÚ*OutputGraph.install_resume_function_global´  sR   ú€ ð ××Ð÷Pò Pð
 ×&Ñ& t¨XÖ6à×&Ñ&ØÜ×"Ò" 4¨°DÓ9ör¦   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r›   ro  rÑ   r×   Nrú  )r¡   r¢   s   "€r£   r¤   r
  Ð  s'   ø€ ÷ Qñ Q©#ð Q±cð Q¸dñ Qr¦   c                óî   € WP                   9   d   \        RV R24      hV P                   P                  V4       V P                  P	                  \
        P                  ! V P                  W4      4       R# )a0  
WARNING: prefer the safer `install_global_by_id/install_global`.
torch.compile instances should be independent of each other;
one footgun is to have one instance depend on the existence of
a global installed by another instance. This can happen if we mangle
a global the same way across both instances.
zglobal 'z' is already installedN)r'  r†  r  rN  rÿ   rj   r  rš  )r  ro  rÑ   s   &&&r£   r»  Ú!OutputGraph.install_global_unsafeÐ  s^   € ð ×)Ñ)Ô)Ü  8¨D¨6Ð1GÐ!HÓIÐIØ×Ñ×"Ñ" 4Ô(Ø�‰×Ñœ[×/Ò/°×0AÑ0AÀ4ÓOÖPr¦   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[ /# ©r›   rÓ  rÑ   r×   rú  )r¡   r¢   s   "€r£   r¤   r
  Ý  s"   ø€ ÷ ñ ©3ð ±sð ¹sñ r¦   c                ó†   € V R\        V4       RV P                   2pW0P                  9   d   V# V P                  W24       V# )z™
Installs a global if it hasn't been installed already.
This is determined by (prefix, id(value)) pair.

Returns the name of the newly installed global.
r  Ú_c)Úidr&  r'  r»  ©r  rÓ  rÑ   ro  s   &&& r£   Úinstall_global_by_idÚ OutputGraph.install_global_by_idÝ  sG   € ð �˜œ2˜e›9˜+ R¨¯©Ð'8Ð9ˆØ×)Ñ)Ô)ØˆKØ×"Ñ" 4Ô/Øˆr¦   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[ /# r  rú  )r¡   r¢   s   "€r£   r¤   r
  ì  s"   ø€ ÷ 	ñ 	¡Sð 	±ð 	¹ñ 	r¦   c                ó>   € \        V4      pV P                  W24       V# )zf
Installs a global, generating a unique name for it.

Returns the name of the newly installed global.
)r@   r»  rƒ  s   &&& r£   rÏ  ÚOutputGraph.install_globalì  s!   € ô ˜Ó ˆØ×"Ñ" 4Ô/Øˆr¦   c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   r
  ÷  s   ø€ ÷ $ñ $˜ñ $r¦   c                óL  € R V n         V P                  P                  4        V P                  P                  4        V P                  P                  4        R V n        V P                  P                   F#  pRVP                  9   g   K  VP                  R K%  	  V P                  P                  4        V P                  P                  4        \        V P                  4       4      V n        V P                  P                  4        V P                  P                  4        V P                   P                  4        V P"                  P                  4        V P$                  P                  4        V P&                  P                  4        V P(                  P                  4        V P*                  P                  4        V P,                  P                  4        V P.                  P                  4        V P0                  P                  4        V P2                  P                  4        R # )NrÓ  )r  r>  r0  r3  rg  r<  r”   rL  r×  rm  ri  rÉ   r“  ri  r=  r?  r@  rA  rB  rJ  rY  r3  r!  r"  rP  r]  rÚ  s   & r£   ÚcleanupÚOutputGraph.cleanup÷  sŒ  € ð ˆŒØ×Ñ×#Ñ#Ô%Ø�‰×ÑÔØ×/Ñ/×5Ñ5Ô7Ø$(ˆÔ!à—J‘J×$Ô$ˆDØ˜TŸY™YÖ&Ø—I‘I˜jÒ)ñ %ð 	×Ñ×#Ñ#Ô%Ø× Ñ ×&Ñ&Ô(Ü8=Ø×5Ñ5Ó7ó9
ˆÔ5ð 	×Ñ×ÑÔ!Ø×#Ñ#×)Ñ)Ô+Ø×Ñ×#Ñ#Ô%Ø×$Ñ$×*Ñ*Ô,Ø×Ñ×"Ñ"Ô$Ø×#Ñ#×)Ñ)Ô+Ø×-Ñ-×3Ñ3Ô5Ø×Ñ×"Ñ"Ô$Ø× Ñ ×&Ñ&Ô(Ø×$Ñ$×*Ñ*Ô,Ø× Ñ ×&Ñ&Ô(Ø×Ñ×!Ñ!Ö#r¦   c                óN   <€ V ^8„  d   QhRS[ S[P                  .R3,          RR/# )r›   rÄ  Nr×   )r   r   rT  )r¡   r¢   s   "€r£   r¤   r
    s.   ø€ ÷ ?ñ ?Ù"*©B¯N©NÐ+;¸TÐ+AÕ"Bð?à	ñ?r¦   c                ó<   € V P                   P                  V4       R # r  )rJ  rÿ   )r  rÄ  s   &&r£   Úadd_graph_finalizerÚOutputGraph.add_graph_finalizer  s   € ð 	×#Ñ#×*Ñ*Ð+=Ö>r¦   c                óN   <€ V ^8„  d   QhRS[ P                  P                  RS[/# r.  )rø   r   rû   r   )r¡   r¢   s   "€r£   r¤   r
    s#   ø€ ÷ ,ñ ,±%·(±(·-±-ð ,ÁCñ ,r¦   c                óì   € VP                   R8X  d   VP                  R,          P                  # VP                   R8w  d   \        RVP                    R24      hV P                  VP
                  ,          # )z#Extract the non-fake example tensorrÒ  rÓ  rý  z(expected node.op to be 'get_attr', got 'rü  )rÖ  r×  r  r†  r3  r  rÚ  s   &&r£   Úexample_value_from_input_nodeÚ)OutputGraph.example_value_from_input_node  s\   € à�7‰7�mÔ#Ø—9‘9˜ZÕ(×0Ñ0Ð0Ø�7‰7�jÔ Ü Ð#KÈDÏGÉGÈ9ÐTUÐ!VÓWÐWØ�‰˜tŸ{™{Õ+Ð+r¦   c                óR   <€ V ^8„  d   QhRS[ P                  P                  RS[RR/# )r›   Úinlined_modulerÙ  r×   N)rø   r5  r6  r   )r¡   r¢   s   "€r£   r¤   r
  "  s-   ø€ ÷ %2ñ %2Ù#Ÿh™hŸo™oð%2Ù7=ð%2à	ñ%2r¦   c                ó”  a aa€ \         P                  SP                  4      o\        SS P                  S P
                  4      oS P                  P                  S4       R  VV V3R llp\        VR4      '       d[   \        VP                  4      '       d@   VP                  P                  \        J d"   VP                  4        F  w  rEV! V4       K  	  \        VR4      '       da   \        VP                  4      '       dD   VP                  P                  \        J d$   VP                  4        F  w  rEV! V4       K  	  R# R# R# R# )c                ó(   € V ^8„  d   QhR\         RR/# r+  rB  )r¡   s   "r£   r¤   ÚBOutputGraph.add_fqn_info_for_inlined_modules.<locals>.__annotate__+  s   € ÷ 		ñ 		¬#ð 		°$ñ 		r¦   c                 ó  <€ SP                   f   \        R4      hSP                  SV 4      pS RV  2pVSP                   V&   \        S\        4      '       d/   V SP
                  \        P                  VP                  4      &   R # R # r.  r/  r0  s   &  €€€r£   r3  ÚHOutputGraph.add_fqn_info_for_inlined_modules.<locals>.register_leaf_name+  s†   ø€ Ø×(Ñ(Ò0Ü$Ð%LÓMÐMØ×=Ñ=¸fÀiÓPˆJØ˜˜q  Ð,ˆHØ2<ˆD×%Ñ% hÑ/Ü˜&¤+×.Ò.ð ð ×5Ñ5Ü×/Ñ/°
·±Ó@óñ /r¦   r5  r6  N)r  r÷  ro  rt   rg  rš  r  rˆ  rú  r:  Ú__func__Ú!og_module_named_parameters_fn_ptrr;  Úog_module_named_buffers_fn_ptr)r  r–  rÙ  r3  r,  r  ro  s   f&f   @r£   Ú add_fqn_info_for_inlined_modulesÚ,OutputGraph.add_fqn_info_for_inlined_modules"  s  ú€ ô ×*Ñ*¨6¯;©;Ó7ˆÜ"Ø�$×9Ñ9¸4×;LÑ;Ló
ˆð 	×/Ñ/×3Ñ3°DÔ9÷		ò 		ô �> =×1Ò1ä˜×8Ñ8×9Ò9Ø"×3Ñ3×<Ñ<Ü4ó5ð %3×$CÑ$CÖ$E‘L�IÙ& yÖ1ñ %Fä�> :×.Ò.ä˜×5Ñ5×6Ò6Ø"×0Ñ0×9Ñ9Ü1ó2ð %3×$@Ñ$@Ö$B‘L�IÙ& yÖ1ó %Cñ2ñ 7ñ /r¦   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r›   r=  )rU   )r¡   r¢   s   "€r£   r¤   r
     s   ø‡ ‚ ñ Ñò r¦   )Dri  rM  r+  rH  rI  r¬  r,  rh  rU  r]  r^  r_  rd  r#  rN  r  r  r&  rž  rÕ   rc  rW  r(  r6  rY  r£  r¤  rî  r  rA  rT  rí  r!  r'  r"  r>  r@  r¢  rV  rF  rð  r  r<  r[  rK  r$  rZ  r*  rJ  r  rf  rO  r=  rB  rL  r\  rG  rR  rS  r4  r   r3  r  rï  rE  rP  rg  r?  ©F)rÒ  r  )Útmpr6  r   )`r©   rª   r«   r¬   r"  r:  rr  r}  r“  r�  r¤  r±  rÊ  r`  r×  rÖ  r7  re  r'  r+  r1  r³  râ  r>  rC  rT  r[  r^  r”   Úsetterri  rm  rt  ry  r~  rƒ  ra  ÚcontextmanagerrŽ  r’  rm  rˆ  r   r3  r•  rX  rÃ  rÈ  rÌ  rÕ  rm   rÜ  rá  ræ  rä  rï  Ústaticmethodr÷  r  r<  rX  rt  rä  r¯  r±  r©  rþ  r#  r,  r4  r¿  r_  rk  r°  rÇ  rI  r“  rç  rž  r  rÝ   r¢  r£  r¤  r§  ry  r»  r„  rÏ  r‹  r�  r“  rŸ  r­   r®   r¯   r°   s   @r£   r  r     sz  ø‡ € ñ÷mUò mU÷^	*ð *÷5ð 5ð9VØ27÷9Vò 9V÷vð ÷>ð >÷ð ÷* 8ð  8÷DDð D÷	5ò 	5÷)ð )÷*ð ÷<!:ð !:÷F$ò $÷L&ð &÷#ð #ð
 ÷ó ðð ÷ ó ð ÷&ð &÷ ð  ðF	Ið ÷ ð  ð. ÷)ó ð)ð ‡\�\÷*ó ð*ð ÷7ó ð7ð ÷4ó ð4ð ÷1ó ð1÷Að A÷@ð @÷@ð @ð ×Ñ÷ñ ó ðð@ ÷ó ðð ÷.ó ð.ð
 ÷8ó ð8ð ÷Aó ðAð ÷>ó ð>ð ÷Fó ðF÷'
ò '
÷R$ð $÷&ð &ð ÷Nó ðN÷
ð 
÷'ð '÷0ð 0÷Jð J÷	ð 	÷ò ÷5ð 5ð
 ÷ó ð÷.ð ÷&pð p÷d]/ð ]/÷~s"ð s"÷jV&ò V&÷pFð F÷>&Gð &G÷P1ð 1÷>ò ÷4ð ÷ð ð2 ×Ñ÷ó ð÷"%7ð %7÷N*ð *÷X>ð >÷@f:ð f:ðP ÷7ó ð7ð ÷Eó ðE÷@ð @÷hð h÷Tð ÷ð ÷ð ÷
'ð '÷
Y0ð Y0÷v 'ð  '÷D ò  ÷ ð ÷8Qð Q÷ð ÷	ð 	÷$ð $÷<?ð ?÷
,ð ,÷%2ð %2÷E\ ƒ r¦   r  c                   óT   a € ] tR tRt o R	V 3R lR lltV 3R lR ltV 3R ltRtV tR# )
ÚDynamoTracerOutputiJ  Nc                ó6   <€ V ^8„  d   QhRRRS[ R,          RR/# )r›   rO  r�   rœ  Nr×   rÞ   )r¡   r¢   s   "€r£   r¤   ÚDynamoTracerOutput.__annotate__T  s)   ø€ ÷ .ñ .Ø1ð.Ù:=À½*ð.à	ñ.r¦   c                óô   € VP                   V n         VP                  V n        VP                  V n        VP                  V n        VP                  V n        V'       d
   R V n        R # VP                  V n        R # r  )Úerror_on_graph_breakÚis_tracing_resume_prologuerr  rÓ  r’  Úoutput_graph_for_cleanupÚoutput_graph)r  rO  rœ  s   &&&r£   r:  ÚDynamoTracerOutput.__init__T  s[   € ð %+×$?Ñ$?ˆÔ!Ø*0×*KÑ*KˆÔ'Ø—~‘~ˆŒØ×)Ñ)ˆŒØ(.¯©ˆÔ%ßØ $ˆDÖà &§¡ˆDÖr¦   c                ó   <€ V ^8„  d   QhRR/# r  r§   )r¡   r¢   s   "€r£   r¤   rª  a  s   ø€ ÷ '<ñ '< tñ '<r¦   c                óš  € V P                   pV'       Ed6   ^RIHp VP                  P                   F#  pRVP
                  9   g   K  VP
                  R K%  	  VP                   F  pVP                  P                  4        K  	  VP                  P                  4        VP                  pVP                  P                  4        V! VP                  4       \        VR4      '       d   V! VP                  4       VP                  '       d<   VP                  P                  '       d   RVP                  P                  n        R# R# R# R# )rx  )Ú_clear_fake_mode_weakrefsrÓ  r¬  N)r®  r  r³  r”   rL  r×  r   Ú_clear_nodesr   r0  r3  Útensor_to_contextrm  rˆ  r¬  rˆ  r  )r  r¯  r³  r  rO  Útcs   &     r£   Ú_cleanup_output_graphÚ(DynamoTracerOutput._cleanup_output_grapha  sü   € Ø×4Ñ4ˆßˆ<õ Að %×*Ñ*×0Ô0�Ø §¡Ö*ØŸ	™	 *Ò-ñ 1ð '×.Ô.�Ø—‘×)Ñ)Ö+ñ /à×Ñ×%Ñ%Ô'Ø×-Ñ-ˆBØ× Ñ ×&Ñ&Ô(ñ & b§l¡lÔ3Ü�|Ð%5×6Ò6Ù)¨,×*EÑ*EÔFð �|�|ˆ| §¡× 6× 6Ð 6Ø7;�—‘×&Ñ&Ö4ñ !7‰|ñI r¦   c                ó¶   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[R,          ;R&   S[R,          ;R&   S[S[R3,          R,          ;R&   S[S[S[3,          ;R&   # )	r›   r¬  r­  Nr¯  r®  .rr  rÓ  )rì   r  rÉ   r   rØ   rË   )r¡   r¢   s   "€r£   r¤   rª  J  sn   ø‡ ‚ ÙÑñ á $Ñ$ñ ñ  Õ$Ñ$ñ ñ *¨DÕ0Ñ0ñ ñ ‘3˜�8�_˜tÕ#Ñ#ñ ñ ‘C™�H�~Ñò r¦   )rr  r¬  rÓ  r­  r¯  r®  r  )	r©   rª   r«   r¬   r:  r·  r­   r®   r¯   r°   s   @r£   r¨  r¨  J  s    ø‡ € ÷.ò .÷'<ð '<÷/ ƒ r¦   r¨  a  With the current config, we will graph break (and fall back to eager-mode PyTorch) on all ops that have do not have the 'pt2_compliant_tag'. Please see the following doc for how to mark this op as PT2 compliant https://pytorch.org/tutorials/advanced/custom_ops_landing_page.htmlc                óX   € V ^8„  d   QhR\         R\        R\        R\        R\        RR/# )r›   r¯  rÐ   r  r*  r+  r×   N)r  rË   r   )r¡   s   "r£   r¤   r¤   ”  sD   € ÷ Hñ HÜðHÜ%(ðHÜ25ðHÜ=@ðHÜJMðHà	ñHr¦   c                 ó6  a € VR 8w  d   R# R V 3R llpR V 3R llp\        V\        P                  P                  4      '       dC   \        P                  P
                  VP                  9   d   V! V4       R# V! VRV R24       R# \        V\        P                  P                  4      '       Ed6   \        VP                  4       4      p\        V4      ^8X  dU   \        W'^ ,          4      p\        P                  P
                  VP                  9   d   V! V4       R# V! VRV R	24       R# \        P                  P                  P                  S P                  W43R
4      w  r4 \        P                   P"                  ! VP$                  .VO5/ VB p	\        VX	4      p\        P                  P
                  VP                  9   d   V! V4       R# V! VRV RV	 R24       R# R#   \&         d#   p
\)        RR\+        T
4      . R7        Rp
?
L{Rp
?
ii ; i)r  Nc                óP   € V ^8„  d   QhR\         P                  P                  RR/# )r›   r  r×   N)rø   Ú_opsÚ
OpOverload)r¡   s   "r£   r¤   Ú,check_pt2_compliant_op.<locals>.__annotate__š  s$   € ÷ 6ñ 6¬¯©×)>Ñ)>ð 6À4ñ 6r¦   c                 ód   <€ V P                   R9   d   R# SP                  P                  V 4       R# )ÚprimN>   ÚatenrÁ  Úprims)Ú	namespacerW  r  )r  r¯  s   &€r£   Úencountered_compliant_opÚ8check_pt2_compliant_op.<locals>.encountered_compliant_opš  s)   ø€ Ø×ÑÐ8Ô8ÙØ×)Ñ)×-Ñ-¨fÖ5r¦   c                ó\   € V ^8„  d   QhR\         P                  P                  R\        RR/# )r›   r  rë   r×   N)rø   r½  r¾  rË   )r¡   s   "r£   r¤   r¿  Ÿ  s,   € ÷ ñ ¬U¯Z©Z×-BÑ-Bð Ìð ÐQUñ r¦   c                 ó°   <€ SP                   P                  V 4       \        P                  '       d$   \	        R RVR,           \
        ,           . R7       R# R# )z Encountered non-PT2-compliant oprÔ  Ú rÛ  N)rV  r  r/   Úonly_allow_pt2_compliant_opsrI   Úerr_epilogue)r  rë   r¯  s   &&€r£   Úencountered_non_compliant_opÚ<check_pt2_compliant_op.<locals>.encountered_non_compliant_opŸ  sE   ø€ Ø×&Ñ&×*Ñ*¨6Ô2Ü×.×.Ð.ÜØ:ØØ #�I¬Õ4Ø÷	ñ /r¦   z%Encountered the torch.ops.OpOverload z that is not PT2 compliant.z:Encountered the non-overloaded torch.ops.OpOverloadPacket z that is not PT2 compliant. Fz*Error when attempting to resolve op packetrÔ  rÛ  z+Encountered the torch.ops.OpOverloadPacket z! which resolves to the overload (z) that is not PT2 compliant.)rý   rø   r½  r¾  ÚTagÚpt2_compliant_tagÚtagsÚOpOverloadPacketrÉ   Ú	overloadsr¢  rã   r±  rÉ  Úget_fake_values_from_nodesrÌ  r°  Ú_jit_resolve_packetÚ_qualified_op_namer\  rI   rË   )r¯  rÐ   r  r*  r+  rÅ  rÌ  rÒ  rÖ  ÚoverloadrÜ  s   f&&&&      r£   Úcheck_pt2_compliant_opr×  ”  së  ø€ ð ˆÔÙ÷6ð 6÷
ð ô �&œ%Ÿ*™*×/Ñ/×0Ò0Ü�9‰9×&Ñ&¨&¯+©+Ô5Ù$ VÔ,ÙÙ$ØØ3°F°8Ð;VÐWô	
ñ 	ä�&œ%Ÿ*™*×5Ñ5×6Ó6Ü˜&×*Ñ*Ó,Ó-ˆ	ô ˆy‹>˜QÔÜ˜¨1¥Ó.ˆBÜ�y‰y×*Ñ*¨b¯g©gÔ5Ù(¨Ô,ÙÙ(Øð.Ø.4¨Xð 6.ð/ôñ ä—}‘}×*Ñ*×EÑEØ×#Ñ# d ^°Uó
‰ˆð
	Ü—x‘x×3Ò3Ø×)Ñ)ðØ,0òØ4:ñˆHô �V˜XÓ&ˆÜ�9‰9×&Ñ&¨"¯'©'Ô1Ù$ RÖ(á(ØØ=¸f¸Xð F3Ø3;°*ð =%ð&öñI 7øô0 ô 	ÜØDØÜ ›FØ÷	ò ûð	ús   Å*.G+ Ç+HÇ6HÈHÚPÚRc                   óD   a € ] tR tRt o V 3R lR ltV 3R lR ltRtV tR# )rp  iå  c          
      ór   <€ V ^8„  d   QhRRRS[ S[S[3,          RS[P                  RS[P                  RR/# )r›   rO  r  r)  r*  r+  r×   N)r   rØ  rÙ  r*  r+  )r¡   r¢   s   "€r£   r¤   ÚLazyProxy.__annotate__æ  sM   ø€ ÷ ñ à ðñ ‘Q™�T�Nðñ �v‰vð	ñ
 —(‘(ðð 
ñr¦   c                ó6   € Wn         W n        W0n        W@n        R # r  )rO  r)  r*  r+  )r  rO  r)  r*  r+  s   &&&*,r£   r:  ÚLazyProxy.__init__æ  s   € ð ŒàŒØŒ	ØŽr¦   c                ó    <€ V ^8„  d   QhRS[ /# r  rÞ   )r¡   r¢   s   "€r£   r¤   rÜ  ó  s   ø€ ÷ 2ñ 2™#ñ 2r¦   c                óN   € V P                   ! V P                  / V P                  B # r  )r)  r*  r+  r  s   &r£   rb  ÚLazyProxy.__call__ó  s   € Ø�wŠw˜Ÿ	™	Ð1 T§[¡[Ñ1Ð1r¦   )r*  r)  r+  rO  Nrd  r°   s   @r£   rp  rp  å  s   ø‡ € ÷ð ÷2ö 2r¦   rp  c                   ó^  a a€ ] tR tRt oRtR"V3R lV 3R llltV3R lR ltV3R lR ltR#V3R	 lR
 lltR#V3R lV 3R lllt	R$V3R lV 3R lllt
V3R lR ltR%V3R lR lltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR  ltR!tVtV ;t# )&r  i÷  z÷
Holds an FX graph that is being traced. OutputGraph owns a SubgraphTracer
and the separation of responsibilities is that SubgraphTracer is
responsible for building the graph while OutputGraph is responsible for
compiling and executing the graph.
c                ód   <€ V ^8„  d   QhRRRS[ R,          RS[RS[R,          RS[R,          R	R/# )
r›   r¯  r  rŠ  r  r  r†  Nrˆ  r×   )r   rì   r+   rË   )r¡   r¢   s   "€r£   r¤   ÚSubgraphTracer.__annotate__ÿ  se   ø€ ÷ gNñ gNà#ðgNñ Ð)Õ*ðgNñ ð	gNñ
  •}ðgNñ ˜4•ZðgNð 
ñgNr¦   c                óˆ  <€ \         SV `  4        \        P                  ! V4      V n        \
        P                  P                  4       V n        W0n	        / V n
        / V n        W n        W@n        WPn        / V n        / V n        / V n        R V n        RV n        RV n        RV n        R V n        \/        4       V n        RV n        Ve   VP4                  ^,           M^ V n        R V n        R V n        R V n        R V n        V P                  f	   . V n        MeVf$   V P                  P>                  R,          V n        M>V P                  P>                  V P                  PA                  V4      V3.,           V n        \/        4       V n!        . V n"        \
        PF                  ! 4       '       d   \I        R4      h\/        4       V n%        R # )NF:NNNzSInference mode is supposed to be disabled during compilation. Please open an issue.)&r9  r:  Úweakrefrÿ  r¯  rø   r   rÞ  r”   r  ri  rm  rŠ  r†  rˆ  Úlifted_freevarsrt  Údynamic_scalar_nodesÚ	prev_instÚ,unsafe_allow_externally_visible_side_effectsÚ+traced_with_externally_visible_side_effectsÚallow_side_effects_in_hopÚside_effect_stackr-   Útraced_sourcesÚis_reconstructing_generatorÚdebug_levelÚ	_cur_codeÚ_orig_gm_metaÚ_orig_gm_lineno_mapÚ_orig_gm_firstlinenoÚsource_fn_stackÚ_target_to_strÚ_used_namesrJ  Úis_inference_mode_enabledr\  Útracked_proxyable_vt)r  r¯  rŠ  r  r†  rˆ  r?  s   &&&&&&€r£   r:  ÚSubgraphTracer.__init__ÿ  s¨  ø€ ô 	‰ÑÔÜ#ŸMšM¨,Ó7ˆÔÜ—X‘X—^‘^Ó%ˆŒ
ð #Œð 9;ˆÔ à=?ˆÔð ŒØ*ÔØ&Ôð :<ˆÔð NPˆÔð >@ˆÔ!àˆŒð
 =BˆÔ9Ø;@ˆÔ8ð */ˆÔ&ð AEˆÔô 3=³,ˆÔð ,1ˆÔ(à:@Ò:L × 2Ñ 2°QÖ 6ÐRSˆÔàˆŒØ/3ˆÔØAEˆÔ Ø04ˆÔ!ð
 �;‰;ÒØ.0ˆDÕ ØÒ"Ø#'§;¡;×#>Ñ#>¸qÕ#AˆDÕ à#'§;¡;×#>Ñ#>Ø—‘×*Ñ*¨=Ó9¸=ÐIðBõ $ˆDÔ ô
 -7«LˆÔð 8:ˆÔ)Ü×*Ò*×,Ò,ÜØeóð ô BLÃˆÖ!r¦   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r›   r‹  r×   Nr^  )r¡   r¢   s   "€r£   r¤   rä  h  s   ø€ ÷ *ñ *¡oð *¸$ñ *r¦   c                ó<   € V P                   P                  V4       R # r  )rù  r  )r  r‹  s   &&r£   Úrecord_proxyable_vtÚ"SubgraphTracer.record_proxyable_vth  s   € Ø×!Ñ!×%Ñ% bÖ)r¦   c                ó<   <€ V ^8„  d   QhRRRS[ P                  RR/# )r›   rv  r�   r  r×   Nr?  )r¡   r¢   s   "€r£   r¤   rä  l  s.   ø€ ÷ Cñ CØ-ðCÙ57·W±WðCà	ñCr¦   c                óú  € V P                   '       dé   V P                  '       dÕ   V P                  '       dÁ   VP                  P                  pR pVe-   V P                  P                  W0P                  ,
          R 4      pVes   V P                   V,          p\        P                  P                   F   pWe9   g   K  WV,          VP                  V&   K"  	  RV9   d   VR,          VP                  R&   R # R # R # R # R # R # )NÚstack_trace)
rò  ró  rô  Úcurrent_instructionÚstarts_linerØ  r   rÿ  Ú_COPY_META_FIELDSr×  )r  rv  r  ÚlinenoÚnode_idxr×  r   s   &&&    r£   rŸ  Ú,SubgraphTracer._maybe_preserve_original_metal  sß   € ð ××ÐØ×(×(Ð(Ø×)×)Ð)à×+Ñ+×7Ñ7ˆFØˆHØÒ!Ø×3Ñ3×7Ñ7Ø×6Ñ6Õ6¸ó�ð Ò#Ø×)Ñ)¨(Õ3�ÜŸX™X×7Ô7�EØ–}Ø+/­;˜Ÿ	™	 %Ó(ñ 8ð ! DÔ(Ø/3°MÕ/B�D—I‘I˜mÓ,ñ )ñ $ñ *ñ )ñ r¦   c                óÈ   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[ R,          RS[R,          RS[S[P                  .S[P
                  3,          R,          R	S[P
                  /# ©
r›   rÐ   r  r*  r+  ro  NÚ	type_exprÚproxy_factory_fnr×   ©rË   r   r   r   rû   rÔ  )r¡   r¢   s   "€r£   r¤   rä  ‚  s€   ø€ ÷ ñ áðñ ðñ ð	ñ
 ðñ �D�jðñ ˜•:ðñ #¡B§G¡G 9©b¯h©hÐ#6Õ7¸$Õ>ðñ 
�‰ñr¦   c           	     ó|  € \         P                  ! 4       p V P                  WW4WVV4      V P                  P                  ;P
                  \         P                  ! 4       V,
          ,          un        #   T P                  P                  ;P
                  \         P                  ! 4       T,
          ,          un        i ; ir  )r®  r¯  Ú_create_proxyr¯  rd  r|  )	r  rÐ   r  r*  r+  ro  r
  r  Ú_t0s	   &&&&&&&& r£   ry  ÚSubgraphTracer.create_proxy‚  s…   € ô �lŠl‹nˆð	Ø×%Ñ%Ø˜d¨DÐ=Móð ×Ñ×6Ñ6×FÒFÜ—’“ Õ$õÖFøˆD×Ñ×6Ñ6×FÒFÜ—’“ Õ$õÖFús   —A2 Á2A	B;c                óÈ   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[ R,          RS[R,          RS[S[P                  .S[P
                  3,          R,          R	S[P
                  /# r	  r  )r¡   r¢   s   "€r£   r¤   rä  –  sŠ   ø€ ÷ Lñ LáðLñ ðLñ ð	Lñ
 ðLñ �D�jðLñ ˜•:ðLñ #¡B§G¡G 9©b¯h©hÐ#6Õ7¸$Õ>ðLñ 
�‰ñLr¦   c           	     ót  <aaaaa€ V P                   e_   \        P                  ! W434      w  r‰. p
V F%  pV P                  V4      pV
P	                  V4       K'  	  \        P
                  ! W©4      w  r4\        SV `  VSVVVVV4      oV P                  P                  p\        P                  R8¼  d®   VR9   d§   VP                  oSV P                  Jd‹   SP                  e}   SP                  P                  ee   VP                   oVP#                  SP                  P                  R7      oR VVVV3R llp\$        P'                  R\)        V4      4       SV n        RpVP                   V P*                  Jdä   \,        P.                  ! VP                   4      P1                  RR 4      ! 4       p\3        V\4        P6                  P8                  4      '       do   R	pVP:                  P<                   Uu. uF  pVP>                  NK  	  upV n         VPB                  V n"        VPF                  PH                  PJ                  V n&        MR V n         R V n"        R V n&        VPN                  pV'       d(   VPQ                  4       SPR                  P>                  R
&   VR9   dé   SPR                  PT                  S3pV'       d�   \W        SPR                  P>                  R
,          PY                  4       4      R,          ^,          pVPZ                  P]                  R4      '       d:   VPZ                  P]                  R4      '       g   SPR                  PT                  V3pV P^                  V.,           SPR                  P>                  R&   M®VR8X  d¨   V P                   e   \a        RRV Pb                   2R. R7       V P^                  SPR                  PT                  \e        V3R lSPR                  P>                  R
,          Pg                  4        4       4      3.,           SPR                  P>                  R&   V Pi                  VSPR                  4       V'       EgI   R
SPR                  P>                  9  d<   VPN                  pV'       d(   VPQ                  4       SPR                  P>                  R
&   RSPR                  P>                  9  dØ   VR9   dC   V P^                  SPR                  PT                  S3.,           SPR                  P>                  R&   MŽVR8X  dˆ   V P                   e   \a        RRR. R7       V P^                  SPR                  PT                  SPR                  P>                  R
,          S,          ^,          3.,           SPR                  P>                  R&   RSPR                  P>                  9  dØ   . pV'       dE   VPk                  4       '       g    VP	                  VPm                  4       4       \o        VRR 4      pKL  V Uu. uF   pVPp                  \s        4       9  g   K  VNK"  	  ppVPu                  4        \v        Px                  P{                  V4      P}                  4       pRP                  V4      SPR                  n@        \4        P‚                  P„                  P†                  '       g+   \4        P‚                  P„                  Pˆ                  '       dE   V P                  PŠ                  P�                  V P                  P                  SPR                  4       S# u upi u upi )Nró  )r  c                ó$   € V ^8„  d   QhR\         /# r  rB  )r¡   s   "r£   r¤   Ú2SubgraphTracer._create_proxy.<locals>.__annotate__æ  s   € ÷ Qñ Q´ñ Qr¦   c                  óv   <€ \        SS4      P                  4       p R SP                  P                   RS RV  2# )zTRACE FX call z from rY  )rq   Úrstripr  ro  )ÚlineÚcur_instÚheaderrQ  Útx_codes    €€€€r£   Úget_trace_call_log_strÚ<SubgraphTracer._create_proxy.<locals>.get_trace_call_log_stræ  s9   ø€ Ü5°g¸xÓH×OÑOÓQ�DØ+¨B¯G©G¯L©L¨>¸À¸xÀrÈ$ÈÐPÐPr¦   rz  FÚorig_graphmodulec                  ó   € R # r  r§   r§   r¦   r£   r  Ú.SubgraphTracer._create_proxy.<locals>.<lambda>ñ  s   € ©Dr¦   TÚnn_module_stackztorch.nn.modules.containerrõ  z4Invoking an nn.Module inside a higher order operatorzHigher order op name: zThis is not supported.rÛ  c              3   óp   <"  € T F+  w  pw  r#VP                  R 4      ^ ,          S8X  g   K'  Vx € K-  	  R# 5i)Ú@N)rš  )r  r=  r  Útyr  s   &   €r£   r  Ú/SubgraphTracer._create_proxy.<locals>.<genexpr>   s4   øé € ð á*Q™J˜A™w ØŸ7™7 3›<¨�?¨fÑ4÷ šÛ*Qùs   ƒ$6¬
6z2Invoking an nn.Module inside a HigherOrderOperatorrÔ  r  rŠ  rš  rò  >   r|  r  r=  )ztorch.nn.modulesz	torch.ao.)GrŠ  rT  Útree_flattenÚ#maybe_lift_tracked_freevar_to_inputrÿ   Útree_unflattenr9  ry  r¯  rÌ  ro  rp  r  ré  Ú	positionsr  r  Úget_line_of_code_headerÚtrace_call_logrŸ  ry   rñ  rA   Úget_contextrØ  rý   rø   r   rT  r”   rL  r×  rò  Ú_lineno_mapró  rZ  Ú__code__rÂ   rô  r   rW  r  ro  r÷   rF  rª   Ú
startswithrõ  rI   r†  r$  r;  rŸ  Úis_co_filename_from_nn_modulesÚframe_summaryrã   r·  r*   r  r   ÚStackSummaryÚ	from_listr¡   rZ  r  r±  r/   r  Útrack_nodes_for_deduplicationr*  Ú
track_node)r  rÐ   r  r*  r+  ro  r
  r  Ú	flat_argsÚ	tree_specÚnew_flat_argsrS  Úmaybe_new_argrv  r  Úis_retracingÚorig_graphmodule_maybeÚndr   r  Úcurrent_nn_moduleÚframe_summariesÚframeÚfiltered_frame_summariesÚmsgsr  r  rQ  r  r?  s   &&f&&&&&                 @@@@€r£   r  ÚSubgraphTracer._create_proxy–  sê  ý€ ðV �;‰;Ò"Ü#)×#6Ò#6¸°~Ó#FÑ ˆIØˆMÛ �Ø $× HÑ HÈÓ M�Ø×$Ñ$ ]Ö3ñ !ô "×0Ò0°ÓJ‰LˆDä‰WÑ!ØØØØØØØó
ˆð ×Ñ×)Ñ)ˆô ×Ñ˜wÔ&¨4ð 4
ô ,
ð
 ×-Ñ-ˆHà §¡Ó.Ø×&Ñ&Ò2Ø×&Ñ&×-Ñ-Ò9àŸ)™)�Ø×3Ñ3¸8×;MÑ;M×;TÑ;TÐ3ÓU�÷Qó Qô ×$Ñ$ T¬:Ð6LÓ+MÔNØ!)�”ð ˆØ�9‰9˜DŸN™NÓ*Ü%1×%=Ò%=¸b¿i¹iÓ%H×%LÑ%LØ"¡Lô&ó &Ð"ô Ð0´%·(±(×2FÑ2F×GÒGØ#�à&<×&BÑ&B×&HÒ&Hó&Ù&H �B—G”GÑ&Hñ&�Ô"ð ,B×+MÑ+M�Ô(à*×2Ñ2×;Ñ;×JÑJð Õ)ð &*�Ô"Ø+/�Ô(Ø,0�Ô)Ø×,Ñ,ˆßØ.=×.BÑ.BÓ.DˆB�G‰G�L‰LÐ*Ñ+àÐ3Ô3Ø—W‘W—\‘\ 6Ð*ˆEßô %)¨¯©¯©Ð6GÕ)H×)OÑ)OÓ)QÓ$RÐSUÕ$VØõ%Ð!ð %×/Ñ/×:Ñ:Ø5÷ò à+×6Ñ6×AÑAØ0÷ò ð  ŸW™WŸ\™\Ð+<Ð=�Eà.2×.BÑ.BÀeÀWÕ.LˆB�G‰G�L‰LÐ*Ò+Ø�]Ô"Ø�{‰{Ò&ÜØRØ4°T×5GÑ5GÐ4HÐIØ 8Øõ	ð /3×.BÑ.Bà—G‘G—L‘LÜô à*,¯'©'¯,©,Ð7HÕ*I×*OÑ*OÔ*Qóó ðð	Fõ 	/ˆB�G‰G�L‰LÐ*Ñ+ð 	×*Ñ*¨2¨r¯w©wÔ7çˆ|Ø ¨¯©¯©Ô4Ø"$×"4Ñ"4�ß"Ø6E×6JÑ6JÓ6L�B—G‘G—L‘LÐ!2Ñ3à ¨¯©¯©Ô4ØÐ;Ô;Ø6:×6JÑ6JØŸ™Ÿ™ vÐ.ðNõ 7�B—G‘G—L‘LÐ!2Ò3ð ˜]Ô*Ø—{‘{Ò.Ü%Ø$XØ$&Ø(@Ø"$õ	ð 7;×6JÑ6JàŸG™GŸL™LØŸG™GŸL™LÐ):Õ;¸FÕCÀAÕFððNõ 7�B—G‘G—L‘LÐ!2Ñ3ð  §¡§¡Ô,Ø<>ˆOßð ×8Ñ8×:Ò:Ø#×*Ñ*¨2×+;Ñ+;Ó+=Ô>Ü˜R ¨4Ó0’ñ -ó(á,�EØ—>‘>Ô)<Ó)>Ñ>÷ �Ù,ð %ð (ð %×,Ñ,Ô.ô ×)Ñ)×3Ñ3Ð4LÓM×TÑTÓVˆDØ"$§'¡'¨$£-ˆB�G‰GÔô �M‰M× Ñ ×8×8Ð8Ü�}‰}×#Ñ#×A×AÐAà×Ñ×,Ñ,×7Ñ7Ø×!Ñ!×,Ñ,¨b¯g©gôð ˆ	ùò[&ùòr(s   Ç6\0Ø\5Ø1\5c                ót   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[ R,          RS[R,          RS[P                  /# )	r›   rÐ   r  r*  r+  ro  Nr
  r×   )rË   r+   r   r   rû   )r¡   r¢   s   "€r£   r¤   rä  d  s]   ø€ ÷ ñ áðñ ðñ ð	ñ
 ðñ �D�jðñ ˜•:ðñ 
�‰ñr¦   c                óæ  <€ \        V P                  WW44       V P                  er   \        P                  ! V/ VB pV FU  p\        V\        P                  P                  4      '       g   K/  VP                  V P                  8w  g   KL  \        R4      h	  \        S
V `1  WW4WV4      p	V P                  P                  V	P                  R&   V P                  P!                  V	P"                  4       V	# )Nz2create_node using arg not from this SubgraphTracerrÿ  )r×  r¯  rŠ  rT  Úarg_tree_leavesrý   rø   r   rû   r”   r†  r9  r~  rG  r×  r÷  r  ro  )r  rÐ   r  r*  r+  ro  r
  r5  rS  r  r?  s   &&&&&&&   €r£   r~  ÚSubgraphTracer.create_noded  sÅ   ø€ ô 	˜t×0Ñ0°$ÀÔMØ�;‰;Ò"Ü×.Ò.°Ð?¸Ñ?ˆIÛ �Ü! #¤u§x¡x§}¡}×5Ò5ÙØ—9‘9 §
¡
Ö*Ü(ØLóð ñ	 !ô ‰wÑ" 4°¸tÓOˆØ*.×*;Ñ*;×*EÑ*Eˆ�	‰	Ð&Ñ'Ø×Ñ×Ñ˜TŸY™YÔ'Øˆr¦   c                ó8   <€ V ^8„  d   QhRS[ P                  RR/# r9  r?  )r¡   r¢   s   "€r£   r¤   rä    s   ø€ ÷ 6ñ 6¡§¡ð 6¨Dñ 6r¦   c                óÖ  € \        VP                  4      ^ 8”  dŽ   . pVP                   FW  pVP                  V P                  8w  g   K   VP                  \	        \        VP                  P                  4      4      4       KY  	  V F  pVP                  P                  V4       K   	  V P                  P                  V4       V P                  P                  VP                  R4       R# )r7  N)r¢  r  r”   r  r/  r÷   rL  r  ri  r   ro  )r  r  Úuser_graph_nodesÚuserÚother_graph_nodes   &&   r£   rƒ  ÚSubgraphTracer.remove_node  sª   € Üˆt�z‰z‹?˜QÔØ46ÐØŸ
œ
�ð —:‘: §¡Ö+ð %×+Ñ+¬H´T¸$¿*¹*×:JÑ:JÓ5KÓ,LÖMñ #ó %5Ð Ø ×&Ñ&×1Ñ1Ð2BÖCñ %5à�
‰
×Ñ˜dÔ#Ø× Ñ ×$Ñ$ T§Y¡Y°Ö5r¦   c                ó`   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[R,          RS[P
                  /# )r›   ro  r
  rå  ÚbeforerÙ  Nr×   )rË   r   rì   r   r   rÔ  )r¡   r¢   s   "€r£   r¤   rä  •  sW   ø€ ÷ Añ AáðAñ ðAñ ð	Añ
 ðAñ ˜•ðAñ 
�‰ñAr¦   c           
     ó,  € \        V\        P                  4      '       d&   V P                  P	                  VP
                  4       \        P                  R TVe   VP                  MRVV P                  V4       Vf!   V P                  f   \        RV RV R24      hV P                  '       dy   V P                  fk   Vf   \        R4      h\        VRR7      '       gI   V P                  P                  P!                  V. 4      P	                  \"        P$                  ! 4       4       \'        WP(                  4      pV P*                  '       d|   \-        \/        V P*                  4      4      pV P*                  V,          P0                  pV'       d   V P2                  P5                  V4      pM7V P2                  P7                  V4      pMV P2                  P5                  R4      pT;_uu_ 4        V P9                  R	VR/ VR
7      p	\;        V	P0                  V4       V P*                  '       dB   V'       d:   V P*                  P=                  4       w  r«W�P*                  V&   W°P*                  V
&   MW�P*                  V&   V P(                  P?                  V4       V P                  p\        P@                  PC                  4       pV'       g·   V'       g¯   \        V\        P                  4      '       d   V PE                  W54       M|\        V\F        \H        34      '       da   \K        V4       FQ  w  rï\        V\        P                  4      '       g   K'  RpV'       d   \M        VVRR7      pV PE                  VV4       KS  	  \        V\        PN                  4      '       dW   \        VP0                  PP                  \R        PT                  4      '       d#   W�PV                  VP0                  PP                  &   V	uuRRR4       #   + '       g   i     R# ; i)z7create_graph_input %s %s %s at debug_level %s before=%sNz(none)z0you are required to provide a source for inputs z example_val z on the root tracerz5source must not be None for export root tracer inputsT)Úonly_allow_inputrÒ  ©r
  F)r–  rK  Úindex_is_slicer§   ),rý   rø   r   rJ  rÿ   rM  r  rŸ  ro  rð  rŠ  r†  r  r_   r¯  rL  rq  r   rN  rt   r÷  ri  r$  r/  r  r”   Úinserting_beforeÚinserting_afterry  r|   Úpopitemr  r¦  r§  Ú_lift_basic_symbolsr÷   rÉ   rI  r\   r8  r;  rq  rr  rt  )r  ro  r
  rå  rM  rÙ  Ú	prev_namer  Úctxrÿ  r=  r>  Úis_strict_exportÚis_non_strict_exportrr  rÜ  Úe_sources   &&&&&&           r£   rã  Ú!SubgraphTracer.create_graph_input•  s!  € ô �m¤U§\¡\×2Ò2Ø×-Ñ-×4Ñ4°]×5KÑ5KÔLÜ�	‰	ØEØØ!Ò-ˆF�KŠK°8ØØ×ÑØô	
ð Š>Ø�{‰{Ò"Ü$ØFÀtÀfÈMÐZgÐYhÐh{Ð|óð ð �>�>ˆ>˜dŸk™kÒ1ØŠ~Ü$ØKóð ô (¨À×FÓFØ×!Ñ!×7Ñ7×BÑBÀ6È2ÓN×UÑUÜ"×0Ò0Ó2ôô # 4×)9Ñ)9Ó:ˆØ×#×#Ð#ÜœX d×&>Ñ&>Ó?Ó@ˆIØ×+Ñ+¨IÕ6×;Ñ;ˆDßØ—j‘j×1Ñ1°$Ó7‘à—j‘j×0Ñ0°Ó6‘à—*‘*×-Ñ-¨dÓ3ˆCßŠSØ×%Ñ% m°T¸2¸rÈYÐ%ÓWˆEÜ˜eŸj™j¨-Ô8Ø×'×'Ð'¯FØ×/Ñ/×7Ñ7Ó9‘�Ø16×(Ñ(¨Ñ.Ø./×(Ñ(¨Ò+à16×(Ñ(¨Ñ.ð
 ×Ñ× Ñ  Ô&ð@  $Ÿ~™~Ðô $)§>¡>×#>Ñ#>Ó#@Ð ß#×,@Ü˜m¬U¯\©\×:Ò:Ø×,Ñ,¨]ÕCÜ ´´e¨}×=Ò=Ü )¨-Ö 8™˜Ü)¨!¬U¯\©\×:Ò:Ù$à#'˜ß!Ü'4Ø%+Ø&'Ø/4ô(˜Hð ×0Ñ0°°HÖ=ñ !9ô ˜-¬¯©×6Ò6¼:Ø×"Ñ"×'Ñ'¬¯©÷<ò <ð ?D×"Ñ" =×#5Ñ#5×#:Ñ#:Ñ;Ø÷S �S�S‹Sús(   Ç/APÈ6BPË
PËB	PÍBPÐP	c                ó^   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          /# )r›   rÿ  r×   )r   rÔ  rp  )r¡   r¢   s   "€r£   r¤   rä    s(   ø€ ÷ 4ñ 4±2·8±8ð 4Á	ÉBÏHÉHÕ@Tñ 4r¦   c                óÖ  € V P                   f   \        R4      hVP                  P                  R,          p\	        V\
        P                  4      '       dM   VP                  P                  V P                  9   d(   V P                  VP                  P                  ,          # WP                  9   d   V P                  V,          # VP                  V P                   8w  d   V P                   P                  V4       \	        V\
        P                  4      '       dG   \        V4      '       d6   VP                  V P                   J d   V P                   P                  W!4       VP                  P                  R,          p\	        V\        4      '       d   \!        VP"                  4      M
\!        V4      pV P%                  VP                  P&                  W24      pW@P                  V&   V# )NzIlift_tracked_freevar_to_input should not be called on root SubgraphTracerrå  )rŠ  r†  r  r×  rý   rø   r8  r;  rt  rç  rO  Úlift_tracked_freevar_to_inputr   r.   Útrack_produced_symintsr   r‡  Úreal_objrã  ro  )r  rÿ  rå  r
  Ú	new_proxys   &&   r£   r^  Ú,SubgraphTracer.lift_tracked_freevar_to_input  sn  € ð �;‰;ÒÜ Ø[óð ð Ÿ
™
Ÿ™¨Õ8ˆô �}¤e§l¡l×3Ò3Ø×"Ñ"×'Ñ'¨4×+=Ñ+=Ô=à×%Ñ% m×&8Ñ&8×&=Ñ&=Õ>Ð>ð
 ×(Ñ(Ô(Ø×'Ñ'¨Õ.Ð.ð
 �<‰<˜4Ÿ;™;Ô&Ø�K‰K×5Ñ5°eÔ<ô �}¤e§l¡l×3Ò3Ü-¨m×<Ò<Ø—‘ §¡Ó+à�K‰K×.Ñ.¨}ÔDàŸ
™
Ÿ™¨Õ8ˆô ˜-Ô)9×:Ò:ô �×'Ñ'Ô(ä�mÓ$ð 	ð
 ×+Ñ+¨E¯J©J¯O©O¸YÓVˆ	Ø&/×Ñ˜UÑ#ØÐr¦   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r›   rS  r×   rÞ   )r¡   r¢   s   "€r£   r¤   rä  O  s   ø€ ÷ 7ñ 7±sð 7¹sñ 7r¦   c                ó8  a € \        V\        P                  P                  4      '       gM   \        V\        4      '       d5   \	        V 3R lVP
                  VP                  VP                  3 4       !  # V# VP                  S 8X  d   V# S P                  V4      # )zƒ
If arg is a free variable, then lift it to be an input.
Returns the new lifted arg (if arg was a freevar), else the
original arg.
c              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir  )r&  )r  Úsub_argr  s   & €r£   r  ÚESubgraphTracer.maybe_lift_tracked_freevar_to_input.<locals>.<genexpr>\  s&   øé € ð á'F˜Gð ×@Ñ@À×IÐIÛ'Fùs   ƒ!)
rý   rø   r   rÔ  ÚsliceÚstartÚstopÚsteprO  r^  )r  rS  s   f&r£   r&  Ú2SubgraphTracer.maybe_lift_tracked_freevar_to_inputO  s   ø€ ô ˜#œuŸx™xŸ~™~×.Ò.ô
 ˜#œu×%Ò%Üôà(+¯	©	°3·8±8¸S¿X¹XÑ'Fóñð ð �
Ø�Z‰Z˜4ÔØˆJØ×1Ñ1°#Ó6Ð6r¦   c                ób   <€ V ^8„  d   QhRS[ RS[S[P                  P                  ,          RR/# )r›   rå  Úe_proxyr×   N)r   rp  rø   r   rÔ  )r¡   r¢   s   "€r£   r¤   rä  o  s7   ø€ ÷ }5ñ }5Ù ð}5Ù+4±u·x±x·~±~Õ+Eð}5à	ñ}5r¦   c                óÞ  a aa€ SP                   o\        S\        4      '       g   \        R \	        S4       24      hR V 3R llpR VV3R llp\        V\
        P                  4      '       Ed¦   \        VP                  4       4       F“  w  rVV! V4      '       g   K  \        P                  RVSVSP                  4       \        SVVR\
        P                  P                  P                  P                   SV3/ \	        V4      R7      pS P#                  Wg4       K•  	  VP%                  4       pV! V4      '       ds   \        P                  RVSSP                  4       \        SVVR\
        P                  P                  P&                  S3/ \	        V4      R7      pS P#                  W‡4       VP(                  \
        P*                  J d³   \        VP-                  4       4       F“  w  rVV! V4      '       g   K  \        P                  R	VSVSP                  4       \        SVVR\
        P                  P                  P.                  P                   SV3/ \	        V4      R7      pS P#                  Wg4       K•  	  EM>VP(                  \
        P0                  J dB   S P#                  VP3                  4       S4       S P#                  VP5                  4       S4       MßVP(                  \
        P6                  \
        P8                  09   dB   S P#                  VP;                  4       S4       S P#                  VP=                  4       S4       MoVP(                  \
        P>                  \
        P@                  09   dA   S P#                  VPC                  4       S4       S P#                  VPE                  4       S4       \G        V4      '       dE   VPI                  4       w  ršV	 F*  p\K        W4      pS P#                  V\K        SV4      4       K,  	  R
# R
# \        V\
        PL                  4      '       d8   V! V4      '       d(   VPN                  PP                  pSSPR                  V&   R
# R
# R
# )z%tracer must be a SubgraphTracer, got c                ó0   € V ^8„  d   QhR\         R\        /# ©r›   r"  r×   )r   rì   )r¡   s   "r£   r¤   Ú;SubgraphTracer.track_produced_symints.<locals>.__annotate__ƒ  s   € ÷ 	ñ 	œð 	¤ñ 	r¦   c                 óâ   <€ ^ RI Hp V! V 4      ;'       dZ    \        V P                  P                  \
        P                  4      ;'       d$    V P                  P                  SP                  9  # )r7  )r'   )r9  r'   rý   r  r;  rq  rr  rt  )r"  r'   r  s   & €r£   Ú	need_bindÚ8SubgraphTracer.track_produced_symints.<locals>.need_bindƒ  sT   ø€ ÝIñ ˜A“÷ :ð :Ü˜qŸv™vŸ{™{¬E¯L©LÓ9÷:ð :à—F‘F—K‘K t×'9Ñ'9Ñ9ðr¦   c                ó\   € V ^8„  d   QhR\         R\         R\         R\        P                  /# )r›   rå  r*  r+  r×   )r   r   rÔ  )r¡   s   "r£   r¤   rr  Œ  s0   € ÷ 	ñ 	Üð	Ü'*ð	Ü69ð	ä�X‰Xñ	r¦   c                 ó°  <€ \        S\        4      '       d   S! 4       MSo\        S\        P                  P                  4      '       g   \        R \        S4       24      hSP                  P                  SP                  4      ;_uu_ 4        SP                  ! V/ VB p\        VP                  V 4       VuuRRR4       #   + '       g   i     R# ; i)z!e_proxy must be an fx.Proxy, got N)rý   rp  rø   r   rÔ  r†  r‡  r”   rS  r  ry  r|   )rå  r*  r+  rÿ  rn  rO  s   &*, €€r£   Ú_proxy_with_example_valueÚHSubgraphTracer.track_produced_symints.<locals>._proxy_with_example_valueŒ  sš   ø€ ô
 $.¨g´y×#AÒ#A‘g”iÀwˆGÜ˜g¤u§x¡x§~¡~×6Ò6Ü$Ø7¼¸W»°ÐGóð ð —‘×-Ñ-¨g¯l©l×;Õ;Ø×+Ò+¨TÐ<°VÑ<�Ü! %§*¡*¨mÔ<Ø÷ <×;×;Ó;ús   Â*CÃC	z=track_produced_symints %s for %s.size()[%s] at debug_level %sr  rP  zCtrack_produced_symints %s for %s.storage_offset() at debug_level %sz?track_produced_symints %s for %s.stride()[%s] at debug_level %sN)*rO  rý   r  r†  r‡  rø   r   rI  rœ   r  rŸ  rð  rp  ÚopsrÂ  Úsym_sizerÇ   r_  Ústorage_offsetÚsym_storage_offsetÚlayoutÚstridedr�   Ú
sym_strideÚ
sparse_cooÚ_indicesÚ_valuesÚ
sparse_csrÚ
sparse_bsrÚcrow_indicesÚcol_indicesÚ
sparse_cscÚ
sparse_bscÚccol_indicesÚrow_indicesr.   Ú__tensor_flatten__rã   r8  r  r;  rt  )r  rå  rn  rt  rx  rr  r"  Ú
lazy_proxyr|  ÚattrsrW  rÀ  Úinner_tr;  rO  s   f&f           @r£   r_  Ú%SubgraphTracer.track_produced_symintso  s“  ú€ ð  —‘ˆÜ˜&¤.×1Ò1Ü Ð#HÌÈfËÈÐ!WÓXÐX÷	ð 	÷	ñ 	ô �m¤U§\¡\×2Ó2Ü! -×"4Ñ"4Ó"6Ö7‘�Ù˜Q—<”<Ü—I‘IØWØØØØ×*Ñ*ôô "+ØØ1ØØ'ÜŸ	™	Ÿ™×/Ñ/×3Ñ3Ø  !˜ØÜ"& q£'ô	"�Jð ×/Ñ/°Ö>ñ' 8ð* +×9Ñ9Ó;ˆNÙ˜×(Ò(Ü—	‘	ØYØ"ØØ×&Ñ&ô	ô 'ØØ-Ø"Ø#Ü—I‘I—N‘N×5Ñ5Ø�JØÜ" >Ó2ô	�
ð ×+Ñ+¨NÔGà×#Ñ#¤u§}¡}Ó4Ü% m×&:Ñ&:Ó&<Ö=‘D�AÙ  —|”|ÜŸ	™	Ø]ØØ#ØØ"×.Ñ.ôô &/Ø"Ø5ØØ+Ü!ŸI™IŸN™N×5Ñ5×9Ñ9Ø$ a˜LØÜ&*¨1£gô	&˜
ð ×3Ñ3°AÖBó' >ð* ×%Ñ%¬×)9Ñ)9Ó9Ø×+Ñ+¨M×,BÑ,BÓ,DÀgÔNØ×+Ñ+¨M×,AÑ,AÓ,CÀWÕMØ×%Ñ%¬%×*:Ñ*:¼E×<LÑ<LÐ)MÔMØ×+Ñ+¨M×,FÑ,FÓ,HÈ'ÔRØ×+Ñ+¨M×,EÑ,EÓ,GÈÕQØ×%Ñ%¬%×*:Ñ*:¼E×<LÑ<LÐ)MÔMØ×+Ñ+¨M×,FÑ,FÓ,HÈ'ÔRØ×+Ñ+¨M×,EÑ,EÓ,GÈÔQÜ,¨]×;Ò;Ø*×=Ñ=Ó?‘
�Û!�DÜ% mÓ:�GØ×/Ñ/°¼ÀÈ$Ó9OÖPó "ñ <ô
 ˜¤u§|¡|×4Ò4Ù˜×'Ò'Ø$×)Ñ)×.Ñ.�Ø-4�×$Ñ$ TÓ*ñ (ñ 5r¦   c                óp   <€ V ^8„  d   QhRS[ P                  S[ P                  ,          RS[R,          RR/# )r›   rå  r  Nr×   )rø   r8  r   r   )r¡   r¢   s   "€r£   r¤   rä  ï  s;   ø€ ÷ Dñ DÙ"Ÿ\™\©E¯L©LÕ8ðDÙ?EÈ½}ðDà	ñDr¦   c           	     óÆ  a € RR V 3R lllp\        V\        P                  4      '       Ed‰   \        VP	                  4       4       F/  w  rET! TVe   \        V\        P                  V4      MRRR7       K1  	  VP                  \        P                  J d†   \        VP                  4       4       F/  w  rET! TVe   \        V\        P                  V4      MRRR7       K1  	  T! VP                  4       Ve   \        V\        P                  4      MRRR7       EM>VP                  \        P                  J dB   S P                  VP!                  4       V4       S P                  VP#                  4       V4       MßVP                  \        P$                  \        P&                  09   dB   S P                  VP)                  4       V4       S P                  VP+                  4       V4       MoVP                  \        P,                  \        P.                  09   dA   S P                  VP1                  4       V4       S P                  VP3                  4       V4       \5        V4      '       dI   VP7                  4       w  rgV F.  p\9        W4      p	S P                  Y’e   \;        W(4      MR4       K0  	  R# R# \        V\        P<                  4      '       d   V! VV4       R# R# )Fc                óx   € V ^8„  d   QhR\         \        P                  ,          R\        R,          R\        RR/# )r›   r"  rÙ  NrM  r×   )rÇ   rø   r8  r   rì   )r¡   s   "r£   r¤   Ú8SubgraphTracer._lift_basic_symbols.<locals>.__annotate__ö  sC   € ÷ H	ñ H	Ü”U—\‘\Õ!ðH	ä˜T•MðH	ô ðH	ð ñ	H	r¦   c           	      ó˜  <€ \        V 4      '       g   R # \        V \        P                  4      '       g   \	        R\        V 4       24      hSP                  V 4      p\        V4      ^ 8X  d   R # SP                  Ee   SP                  P                  W4       V FÝ  pSP                  P                  V,          pVP                  P                  R,          p\        V\        P                  4      '       g   \	        R\        V4       24      hSP                  \        V4      \        V4      VVVR7      p\        P!                  RTVe   VP"                  MRSP$                  4       VSP&                  V&   Kß  	  R # \        V4      ^8w  d   \	        RV RV  24      hVf   \	        R	V  R
V  R24      h\)        \+        V4      4      pSP                  \        V4      \        V 4      V VVR7      p\        P!                  RT Ve   VP"                  MRSP$                  4       \-        VV RR RR7      VP                  P                  R&   R # )Nzs must be a SymInt, got rå  z"example_val must be a SymInt, got )rM  rÙ  z4_lift_symbols_in_symint %s from %s at debug_level %szsubgraph inputszyFor root tracer, we only expect to bind basic symbols (compound symbols should be cached before) but got unbound symbols z in zSource of 'zÕ' is None when lifting it to input of top-level. If it's an unbacked symbol, this could be because it's not tracked with lazy_bind_unbacked_symbols. Otherwise, should provide a source when create_graph_input for `z` at root tracer.F)Úpass_arg_as_tensorr  r‹  rÓ  )r'   rý   rø   r8  r†  r‡  Úlookup_unbound_symbolsr¢  rŠ  rU  rt  r  r×  rã  rË   r  rŸ  ro  rð  rç  r$  Úiterr~   )	r"  rÙ  rM  Úself_to_be_boundÚs0Úparent_proxyÚexample_valÚphr  s	   &&&     €r£   Ú_lift_symbols_in_symintÚCSubgraphTracer._lift_basic_symbols.<locals>._lift_symbols_in_symintö  sB  ø€ ô
 ˜q—>’>Ùä˜a¤§¡×.Ò.Ü$Ð'?ÄÀQÃ¸yÐ%IÓJÐJØ#×:Ñ:¸1Ó=ÐÜÐ#Ó$¨Ô)Ùð �{‰{Ó&à—‘×/Ñ/°Ô:Û*�BØ#'§;¡;×#<Ñ#<¸RÕ#@�LØ".×"3Ñ"3×"8Ñ"8¸Õ"I�KÜ% k´5·<±<×@Ò@Ü,Ø@ÄÀkÓARÐ@SÐTóð ð ×0Ñ0Ü˜B›Ü˜[Ó)Ø#Ø%Ø%ð 1ó �Bô —I‘IØNØØ'-Ò'9˜ŸšÐ?PØ×(Ñ(ô	ð :<�D×(Ñ(¨Ó6ó) +ô. Ð'Ó(¨AÔ-Ü(ðLØL\ÐK]Ð]aÐbcÐadðfóð ð ’>Ü(Ø% a Sð )[à[\ÐZ]Ð]nðpóð ô
 œ$Ð/Ó0Ó1�Ø×,Ñ,Ü˜“GÜ˜“GØØ!Ø!ð -ó �ô —	‘	ØJØØ#)Ò#5�F—K’KÐ;LØ×$Ñ$ô	ô ,4ØØØ',Ø $Ø#ô,�—‘—‘˜ZÓ(r¦   NT)rM  r¢  )rý   rø   r   rI  rœ   rf   re   ÚSIZEr~  r  r�   ÚSTRIDEr|  ÚSTORAGE_OFFSETr�  rU  r‚  rƒ  r„  r…  r†  r‡  rˆ  r‰  rŠ  r‹  r.   rŒ  rã   rX   r8  )
r  rå  r  rž  rr  r"  rŽ  rW  rÀ  r�  s
   f&&       r£   rU  Ú"SubgraphTracer._lift_basic_symbolsï  sX  ø€ ÷H	ò H	ôT �m¤U§\¡\×2Ó2Ü! -×"4Ñ"4Ó"6Ö7‘�Ù'Øð š?ô -¨S´.×2EÑ2EÀqÔIà!à÷ñ 8ð ×#Ñ#¤u§}¡}Ó4Ü% m×&:Ñ&:Ó&<Ö=‘D�AÙ+Øð  #šô 1°´n×6KÑ6KÈQÔOà!%à#÷ñ >ñ (Ø!×0Ñ0Ó2ð š?ô -¨S´.×2OÑ2OÔPà!à÷ð ×%Ñ%¬×)9Ñ)9Ó9Ø×(Ñ(¨×)?Ñ)?Ó)AÀ3ÔGØ×(Ñ(¨×)>Ñ)>Ó)@À#ÕFØ×%Ñ%¬%×*:Ñ*:¼E×<LÑ<LÐ)MÔMØ×(Ñ(¨×)CÑ)CÓ)EÀsÔKØ×(Ñ(¨×)BÑ)BÓ)DÀcÕJØ×%Ñ%¬%×*:Ñ*:¼E×<LÑ<LÐ)MÔMØ×(Ñ(¨×)CÑ)CÓ)EÀsÔKØ×(Ñ(¨×)BÑ)BÓ)DÀcÔJÜ,¨]×;Ò;Ø*×=Ñ=Ó?‘
�Û!�DÜ% mÓ:�GØ×,Ñ,Øº/¤¨CÔ!6Ètöó "ñ <ô ˜¤u§|¡|×4Ò4Ù#ØØöñ 5r¦   c                ó^   <€ V ^8„  d   QhRS[ P                  RS[S[P                  ,          /# rq  )rø   r8  r÷   rq  rr  )r¡   r¢   s   "€r£   r¤   rä  w  s(   ø€ ÷ 9ñ 9©¯©ð 9¹¹e¿l¹lÕ9Kñ 9r¦   c                óì  € VP                   P                  P                  p\        V4      ^ 8X  d   . # . pV F­  pW@P                  9  d   VP                  V4       K&  V P                  V,          p\        V\        4      '       d   V! 4       pWPP                  V&   \        V\        P                  P                  4      '       d   VP                  V Jg   K   \        RV R24      h	  \        VR R7      # )r7  zThe proxy of symbol z" doesn't belong to current tracer.c                 ó   € V P                   # r  )ro  )r"  s   &r£   r  Ú7SubgraphTracer.lookup_unbound_symbols.<locals>.<lambda>‹  s   € °·²r¦   )rw  )r  r;  r%   r¢  rt  rÿ   rý   rp  rø   r   rÔ  rO  r†  rè  )r  r"  r%   Úto_be_boundrš  rÿ  s   &&    r£   r—  Ú%SubgraphTracer.lookup_unbound_symbolsw  sÏ   € Ø—v‘v—{‘{×/Ñ/ˆÜˆ|Ó Ô!ØˆIàˆÛˆBØ×+Ñ+Ô+Ø×"Ñ" 2Ô&Ùà×&Ñ& rÕ*ˆEÜ˜%¤×+Ò+Ù›�Ø).×"Ñ" 2Ñ&Ü˜e¤U§X¡X§^¡^×4Ò4¸¿¹ÈDÕ8PÜ$Ø*¨2¨$Ð.PÐQóð ñ ô �kÑ'7Ô8Ð8r¦   c                ó    <€ V ^8„  d   QhRS[ /# r  )rï   )r¡   r¢   s   "€r£   r¤   rä  �  s   ø€ ÷  +ñ  +¡Lñ  +r¦   c                óà  a€ V P                   p. p. o. p\        V P                  P                  4       FŠ  w  rEVP                  R 8X  du   VP
                  R,          p\        V\        P                  4      '       d@   VP                  VP                  4       VP                  V4       SP                  V4       Kˆ  KŠ   M	  \        \        W4      4       UUU	u. uF  w  pw  r‰W‰8w  g   K  VNK  	  p
ppp	V
'       d[   V
 Uu. uF  qrV,          NK  	  pp\        ;QJ d    . V3R lV
 4       F  NK  	  5M! V3R lV
 4       4      pRV 2p\        RWÜ4      # \        RRR4      # u up	ppi u upi )rÒ  rå  c              3   ó6   <"  € T F  pSV,          x € K  	  R # 5ir  r§   )r  rr  Útensor_placeholder_indicess   & €r£   r  Ú4SubgraphTracer.has_input_mutation.<locals>.<genexpr>§  s   øé € ð *Ù7E°!Ð*¨1×-Ò-³~ùs   ƒzInput mutation detected at TFrÔ  r§   )rJ  rI  r”   rL  rÖ  r×  rý   rø   r   rÿ   rM  r  rÉ   rï   )r  Úinput_versions_at_beginningÚinput_nodesÚinput_versions_at_endÚplaceholder_idxr  rå  rr  Úv1Úv2Úmutated_inputsÚmutated_nodesrò   rë   r­  s   &             @r£   Úhas_input_mutationÚ!SubgraphTracer.has_input_mutation�  sb  ø€ Ø&*×&GÑ&GÐ#ØˆØ%'Ð"à "ÐÜ%.¨t¯z©z×/?Ñ/?Ö%@Ñ!ˆOØ�w‰w˜-Ô'Ø $§	¡	¨/Õ :�Ü˜m¬U¯\©\×:Ò:Ø)×0Ñ0°×1GÑ1GÔHØ×&Ñ& tÔ,Ø.×5Ñ5°oÖFñ ;ñ
 ñ &Aô  )ÜÐ/ÓGô õ
ñ ‘�‘8�Bð ‰x÷	 ˆAñ ð 	ò 
÷ Ù5CÓD±^°¨Ÿ^˜^±^ˆMÐDß$)¤Eô *Ù7Eó*§E¡Eô *Ù7Eó*ó %Ð!ð 0°¨Ð?ˆCÜ  cÓAÐAä˜E 2 rÓ*Ð*ùô!
ùò Es   ÃE$Ã+E$ÄE+c                ó    <€ V ^8„  d   QhRS[ /# r  )rè   )r¡   r¢   s   "€r£   r¤   rä  ¯  s   ø€ ÷ ,'ñ ,'™lñ ,'r¦   c           	     óŠ  € ^ RI Hp ^ RIHp \	        4       pV P
                  P                   F  pVP                  R8X  dl   V! V.4      ^ ,          p\        V\        P                  4      '       d:   V! V4       F+  pWc9   d   RW6,           RV 2p\        RV4      u u # WCV&   K-  	  K}  K   M	  \	        4       pV P
                  P                  RR7      ^ ,          p	\        P                  ! V	P                  ^ ,          4       F—  p
V
'       g   K  V! V
.4      ^ ,          p\        V\         4      '       d   \#        R	4      h\        V\        P                  4      '       g   K`  V! V4       F+  pWh9   d   R
W†,           RV
 2p\        RV4      u u # W¨V&   K-  	  K™  	  VP%                  4       VP%                  4       ,          p\'        V4      ^ 8”  d[   V Uu. uF  qÃV,          WŒ,          3NK  	  ppRP)                  V UUu. uF  w  rïV RV 2NK  	  upp4      pRV 2p\        RV4      # \        RR4      # u upi u uppi )r7  )Úget_tensor_storages)Ú_collect_fake_inputsrÒ  z*Input-to-input aliasing detected at nodes z and Tr’  r‚  z example_value must not be a listz,Output-to-output aliasing detected at nodes z, z+Input-to-output aliasing detected at nodes FrÔ  )Ú(torch._dynamo.variables.higher_order_opsr»  Útorch._higher_order_ops.utilsr¼  rØ   r”   rL  rÖ  rý   rø   r   rè   r­  rT  Útree_leavesr*  r÷   r†  rŒ  r¢  rZ  )r  r»  r¼  Úinput_storagesr  rå  Ústoragerë   Úoutput_storagesÚ	out_nodesÚout_nodeÚintersected_storagesr"  Úaliasedrr  Úos   &               r£   rê   ÚSubgraphTracer.has_aliasing¯  s  € ÝPÝFä>B»fˆà—J‘J×$Ô$ˆDØ�w‰w˜-Ô'Ù 4°d°VÓ <¸QÕ ?�Ü˜m¬U¯\©\×:Ò:Ù#6°}Ö#E˜Ø"Ô4à$NÈ~ÕOfÐNgÐglÐmqÐlrÐ"s˜CÜ#/°°cÓ#:Ô:Ø26 wÓ/ó $Fñ ;ñ ñ %ô @D»vˆØ—J‘J×)Ñ)¨XÐ)Ó6°qÕ9ˆ	Ü×*Ò*¨9¯>©>¸!Õ+<Ö=ˆHß‰xÙ 4°h°ZÓ @ÀÕ C�Ü˜m¬T×2Ò2Ü(Ð)KÓLÐLÜ˜m¬U¯\©\×:Ô:Ù#6°}Ö#E˜Ø"Ô5à$PÐQ`ÕQiÐPjÐjoÐpxÐoyÐ"z˜CÜ#/°°cÓ#:Ô:Ø3;¨Ó0ó $Fñ >ð  .×2Ñ2Ó4°×7KÑ7KÓ7MÕMÐÜÐ#Ó$ qÔ(ñ BVóÙAU¸A Õ" OÕ$6Ó7ÑAUð ð ð —i‘i¹GÔ D¹G±D°A A 3 e¨A¨3£¹GÒ DÓEˆGØ?À¸yÐIˆCÜ  cÓ*Ð*ä˜E 2Ó&Ð&ùòùó !Es   ÇH:ÈH?
)rñ  rJ  rô  ró  rò  r÷  rì  rt  rð  rˆ  rè  r”   ri  r  rï  rç  r¯  rŠ  ré  rm  rí  rõ  r†  rî  rë  rù  rê  )NFNN)NNN)NNNN)FN)r©   rª   r«   r¬   r"  r:  rý  rŸ  ry  r  r~  rƒ  rã  r^  r&  r_  rU  r—  r·  rê   r®   r¯   rJ  rK  s   @@r£   r  r  ÷  s»   ù‡ € ñ÷gNõ gN÷R*ð *÷Cð C÷,ò ÷(Lõ L÷\õ ÷66ð 6÷,Aò A÷H4ð 4÷l7ð 7÷@}5ð }5÷@Dð D÷P9ð 9÷, +ð  +÷D,'÷ ,'ð ,'r¦   r  )r�  r’  r“  r  (  r"  r:  ra  rW  rm  r¶  r¶  rC  r1   rL  rõ  ro  r®  r   ro  rÅ  ræ  Úcollections.abcr   r   r   r   r   rÁ  r   Útypingr   r	   r
   r   r   r   r   r   Útyping_extensionsr   r   r   rq  Útorch._guardsrø   Útorch._loggingÚtorch.distributedÚdistributedrI  Útorch.nnÚtorch.utils._pytreerÉ  rÊ  rT  r   r   Útorch._C._dynamor   Útorch._dynamo.excr   r   r   r   r   r   r   r   Ú"torch._library.fake_class_registryr   Útorch._library.opaque_objectr   Útorch._subclasses.fake_tensorr    Útorch._utils_internalr!   Útorch.export.dynamic_shapesr"   r°  r#   Ú%torch.fx.experimental._backward_stater$   r9  r%   r&   r'   r(   r)   r*   Útorch.fx.noder+   Útorch.fx.passes.runtime_assertr,   Útorch.utils._ordered_setr-   Útorch.utils._python_dispatchr.   rÔ  r/   r0   r  r2   Úbackends.registryr3   r4   r¨  r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rº  rC   Úcurrent_scope_idrD   Údevice_interfacerE   rF   rG   rH   rI   rJ   r›  rK   rL   Úgraph_deduplicationrM   Úgraph_id_filterrN   rO   Úgraph_region_trackerrP   rQ   rR   Úmutation_guardrS   r=  rT   rU   rV   rÙ  rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   Úvariables.builderr}   r~   r   r€   Úvariables.ctx_managerr�   Úvariables.functionsr‚   rƒ   Úvariables.listsr„   Úvariables.miscr…   Úvariables.nn_moduler†   rX  r‡   rˆ   r‰   Úvariables.torch_functionrŠ   Úvariables.user_definedr‹   r¬  r�   Útorch._dynamo.packagerŽ   re  r�   Ú!torch._dynamo.variables.functionsr�   r)  r’   Ú torch.multiprocessing.reductionsr“   Ú	getLoggerr©   r  r  ÚgetArtifactLoggerÚgraph_tabular_logr«  Úgraph_sizes_logr*  r¹  rÇ   r8  ÚTensorMetadataDimr    rÒ   r™   r³   rÎ   r5  r6  r;  rž  r:  r�  rå   rè   rï   r	  Úcacher  r  r.  r0  rM  rØ   rË   rÊ   r©  rf  r�  rµ  rÃ  rÜ  râ  rè  rê  r  r¨  rË  r×  rD  r%  rØ  rÙ  rp  ÚTracerr  r§   r¦   r£   Ú<module>r÷     s  ðñó* Û Û Û Û Û Û Û Û Û 	Û 
Û Û Û Û Û ß 9Ñ 9ß 4Ý ÷	÷ 	ó 	÷ >Ñ =ã ã Û Ý  Û ß $Ð $ß Ý #ß N÷÷ õ @Ý 8Ý 4Ý 0Ý 9Ý :Ý ?÷÷ õ !Ý JÝ /Ý Fç DÓ Dß 5÷÷ ÷ ó õ 'Ý Ý -Ý 6÷õ ÷ SÝ :÷õ 5ß /Ý 0ß WÑ W÷÷ ÷ ÷ ó ÷$÷ ÷ ÷ ÷ ÷ ÷0ó õ ;ß HÝ -Ý (Ý 1÷ñ õ
 CÝ ;÷ ÝAÝ4ÝHÝNÝ4Ý?à×Ó˜Ó!€Ø—N’N×4Ò4°X¸wÓGÐ Ø—’×1Ò1°(¸LÓI€Ø—.’.×2Ò2°8¸]ÓK€Ø—’×1Ò1°(¸LÓI€à×*Ò*Ð à˜%Ÿ,š,Õ&¨Õ-Ð Ø!Ð"3Õ4Ð ØÐ;Õ<Ð ô7�yô 7ô!�)ô !ô*�zô ð "'§¢§¢×!>Ò!>Ð Ø$)§H¢H§O¢O×$DÒ$DÐ !õñ& �$Ô÷ð ó ðñ
 �$Ô÷0ð 0ó ð0÷)ðX ‡‚ô4ó ð4ð ÷-ð -ó ð-õô �U—X’X—_’_ô  ÷ !ñ !ðH 	ˆS�&ˆ[Õ€ð ÷Nð Nó ñNð: ÷<
ð <
ó ñ<
ð~ ÷ð ó ñð* ÷'ð 'ó ñ'ö,4ö$Cöô(H"Ñ.õ H"ôVg.2Ñ#õ g.2÷T]><ò ><ðDJñ öHðV  —o“oÓ'Ñ áˆcƒN�ÙˆCƒL�÷2ò 2ô$d'�R—Y’Y÷ d'r¦   