ó
    Eñiû' ã                   óœ  • S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJr  S SKrS SKJs  Jr  S SKJs  Jr  S S	KJr  S S
KJr  S SKJ r   S SK!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)  S SK*J+r+  S SK,J-r-J.r.J/r/  S SKJ0r0J1r1  SSK2J3r3  \Rh                  " \55      r6/ SQr7 " S S\5      r8\" SS9 " S S5      5       r9Sq:\
S 5       r; S]S\Rx                  \Rz                  -  \R|                  R~                  -  S\R|                  R~                  S\@S\8S\A4
S jjrB " S  S!5      rC " S" S#\C\R|                  R~                  5      rD " S$ S%\C\R|                  R~                  5      rE " S& S'\ RŒ                  5      rG " S( S)\C\R|                  R~                  5      rH S^S*\S+\GS-  S,\H4S- jjrIS.\R*                  R”                  S/\#S,S4S0 jrKS.\R*                  R”                  S,\@S-  4S1 jrLS2 rMS3 rNS4\@S5\@S,\@4S6 jrOS7\R|                  R~                  S8\R|                  R~                  4S9 jrPS:\R|                  R~                  S,\@4S; jrQS:\R*                  R¤                  S,\R*                  R¦                  4S< jrTS:\R*                  R¤                  \D-  \H-  S,\R*                  R¦                  4S= jrUS:\R*                  R¤                  \D-  \H-  S,\R*                  R¦                  4S> jrVS?\R|                  R~                  S\@4S@ jrW S^S?\R|                  R~                  S\@SA\R|                  R~                  SB\\@/\R|                  R~                  4   S-  4SC jjrXSD\@SE\YS,\@4SF jrZSG\@SD\@S,\A4SH jr[ " SI SJ5      r\\ " SK SL5      5       r]SM\R*                  R”                  SN\H4SO jr^ S_SP\R|                  R~                  SQ\_\@\Y4   SR\@4SS jjr` " ST SU5      raS:\R*                  R¤                  SN\HSV\_\@\b\@   4   4SW jrcSX rd S^S*\R|                  R~                  SY\_\@\e\@   4   SZ\e\@   S[\_\Y\b\@   4   S-  4S\ jjrfg)`é    N)Údefaultdict)ÚCallable)Úcontextmanager)Údeepcopy)Ú	dataclass)ÚEnum)ÚAnyÚcast)ÚFakeScriptObject)ÚExportedProgram)Úreorder_kwargs)ÚConstantArgumentÚExportGraphSignatureÚ	InputKindÚModuleCallSignatureÚSymBoolArgumentÚSymFloatArgumentÚSymIntArgumentÚTensorArgument)Úis_fx_symbolic_tracing)Ú	_get_attrÚ_get_attr_via_attr_listÚ_print_readable)Ú
GetAttrKeyÚSequenceKeyé   )Ú_remove_effect_tokens)ÚFlatArgsAdapterÚInterpreterModuleÚInterpreterModuleDispatcherÚUnflattenedModuleÚ	unflattenc                   ó$   • \ rS rSrSrSrSrSrSrg)Ú	_AttrKindé2   Ú	parameterÚbufferÚconstantÚmodule© N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú	PARAMETERÚBUFFERÚCONSTANTÚMODULEÚ__static_attributes__r*   ó    ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/export/unflatten.pyr$   r$   2   s   † Ø€IØ€FØ€HØƒFr4   r$   T)Úfrozenc                   óV   • \ rS rSr% Sr\R                  \S'   \\S'   \\S'   \	\S'   Sr
g)	Ú	_TensorIDé9   zJCustom tensor identifier containing storage, stride, and size information.Úuntyped_storageÚstrideÚsizeÚstorage_offsetr*   N)r+   r,   r-   r.   Ú__doc__ÚtorchÚUntypedStorageÚ__annotations__ÚtupleÚintr3   r*   r4   r5   r8   r8   9   s!   ‡ áTà×)Ñ)Ó)ØƒMØ
ƒKØÖr4   r8   c               #   ó8   #   • [         n Sq  S v •  U q g ! U q f = f7f©NF)ÚRUN_WITH_INTERPRETER)Úold_flags    r5   Ú_disable_interpreterrH   F   s&   é € ô $€HØ Ðð(Ûà'Ñø˜xÑüs   ‚	Œ �“—Úfrom_objÚ	to_moduleÚtargetÚ	attr_kindÚ
persistentc                 ó¼  ^	• UR                  S5      Gt pVU1nU H…  m	[        5       nU Hp  n[        UT	5      (       d)  [        UT	[        R
                  R                  5       5        UR                  U	4S jUR                  R                  5        5       5        Mr     UnM‡     U GH³  nU[        R                  :X  aS  [        U [        R
                  R                  5      (       d  [        S[        U 5       35      eUR!                  X`5        Mk  U[        R"                  :X  aH  [        U [        R$                  5      (       d  [        S[        U 5       35      eUR'                  X`US9  MÇ  U[        R(                  :X  au  [        U [*        5      (       a  [        S5      e[        U [        R$                  [        R,                  45      (       d  [        S[        U 5       35      e[        XU 5        GMP  U[        R.                  :X  d  GMg  [        U [        R
                  R                  5      (       d  [        S[        U 5       35      e[        XU 5        GM¶     g )	NÚ.c              3   óR   >#   • U  H  u  p[        UT5      (       d  M  Uv •  M     g 7f©N)Ú_is_call_name)Ú.0ÚkÚt_callÚitems      €r5   Ú	<genexpr>Ú_assign_attr.<locals>.<genexpr>g   s&   øé € ð â!;‘I�AÜ   D×)÷ ‘Ú!;ùs   ƒ'ž	'z9expected torch.nn.Parameter for PARAMETER attr_kind, got z0expected torch.Tensor for BUFFER attr_kind, got )rM   z2FakeScriptObject should only exist during tracing.zHexpected torch.Tensor or torch.ScriptObject for CONSTANT attr_kind, got z3expected torch.nn.Module for MODULE attr_kind, got )ÚsplitÚsetÚhasattrÚsetattrr?   ÚnnÚModuleÚupdateÚ_modulesÚitemsr$   r/   Ú
isinstanceÚ	ParameterÚAssertionErrorÚtypeÚregister_parameterr0   ÚTensorÚregister_bufferr1   r   ÚScriptObjectr2   )
rI   rJ   rK   rL   rM   ÚprefixÚfieldÚ
to_modulesÚtsrV   s
            @r5   Ú_assign_attrrn   S   s  ø€ ð —\‘\ #Ó&�N€Vð �€JÛˆÜ#&£5ˆÛ#ˆIÜ˜9 d×+Ñ+Ü˜	 4¬¯©¯©Ó):Ô;Ø�I‰Iô à!*×!3Ñ!3×!9Ñ!9Ô!;óö ñ $ð Š
ñ ô  ˆ	Øœ	×+Ñ+Ó+Ü˜h¬¯©×(:Ñ(:×;Ñ;Ü$ØOÔPTÐU]ÓP^ÐO_Ð`óð ð ×(Ñ(¨Ö9Øœ)×*Ñ*Ó*Ü˜h¬¯©×5Ñ5Ü$ØFÄtÈHÃ~ÐFVÐWóð ð ×%Ñ% eÀ*Ð%ÓMØœ)×,Ñ,Ó,Ü˜(Ô$4×5Ñ5Ü$ØHóð ô Øä—L‘LÜ×&Ñ&ð÷ñ ô %Ø^Ô_cÐdlÓ_mÐ^nÐoóð ô �I h×/Øœ)×*Ñ*Ö*Ü˜h¬¯©¯©×8Ñ8Ü$ØIÌ$ÈxË.ÐIYÐZóð ô �I h×/òE  r4   c                   ó:   • \ rS rSr% \S-  \S'   S\S-  4S jrSrg)Ú_SubmoduleBaseé“   NÚ_tyÚreturnc                 ó   • U R                   $ )zÓ
Subclass of this class - InterpreterModule, InterpreterModuleDispatcher, represents
corresponding model in eager model. To get this type information for those modules
in eager model we need to use this method.
)rr   ©Úselfs    r5   Ú	type_nameÚ_SubmoduleBase.type_name–   s   € ð �x‰xˆr4   r*   )r+   r,   r-   r.   ÚstrrA   rw   r3   r*   r4   r5   rp   rp   “   s   ‡ Ø	ˆt‰ƒOð˜3 ™:÷ r4   rp   c                   óÄ   ^ • \ rS rSr% Sr\R                  R                  S-  \S'    SS\R                  R                  S\
S-  4U 4S jjjrS rS	 r    SS
 jrSrU =r$ )r   éŸ   z¼A module that uses torch.fx.Interpreter to execute instead of the usual
codegen that GraphModule uses. This provides better stack trace information
and makes it easier to debug execution.
NÚgraph_moduleÚgraphÚtyc                 óp   >• [         TU ]  5         Xl        X l        X R                  l        [
        U l        g rQ   )ÚsuperÚ__init__r}   rr   Úowning_modulerF   Ú_run_with_interpreter)rv   r}   r~   Ú	__class__s      €r5   r�   ÚInterpreterModule.__init__§   s,   ø€ ô
 	‰ÑÔØŒ
ØŒØ#'�
‰
Ô Ü%9ˆÕ"r4   c                 ó.  ^• U R                   c  [        S5      e[        5       (       d]  [        R                  R                  5       (       d  U R                  (       d)  [        U R                   5      R                  " U /UQ70 TD6$ T(       aÓ  [        U5      nU R                  [        U5      S  nUR                  U4S jU 5       5        [        U5      [        T5      :w  a#  [        S[        U5       S[        T5       35      e[        U5      [        U R                  5      :w  a-  [        S[        U5       S[        U R                  5       35      e[        U5      n[        R                  R                  X R                   S9R"                  " USS	06$ )
Nz&Didn't finalize this InterpreterModulec              3   ó>   >#   • U  H  nUT;   d  M  TU   v •  M     g 7frQ   r*   )rS   Ú
kwarg_nameÚkwargss     €r5   rW   Ú,InterpreterModule.forward.<locals>.<genexpr>Å   s'   øé € ð  â&1˜
Ø! VÑ+ó '�F˜:Ö&Ú&1ùs   ƒ
‘zkwarg_names length z does not match kwargs length zarg_list length z! does not match arg_names length ©r}   Úenable_io_processingF)r|   rd   r   r?   ÚcompilerÚis_dynamo_compilingrƒ   re   ÚforwardÚlistÚ	arg_namesÚlenÚextendrB   ÚfxÚInterpreterr}   Úrun)rv   Úargsr‰   Úarg_listÚkwarg_namess     `  r5   r�   ÚInterpreterModule.forward²   sg  ø€ Ø×ÑÑ$Ü Ð!IÓJÐJÜ%×'Ñ'Ü�N‰N×.Ñ.×0Ñ0¸×8R×8Rô ˜×)Ñ)Ó*×2Ò2°4ÐI¸$ÒIÀ&ÑIÐIæô
   ›:�Ø"Ÿn™n¬S°«]¨_Ð=�Ø—‘ô  á&1ó ô ô �{Ó#¤s¨6£{Ó2Ü(Ø-¬c°+Ó.>Ð-?Ð?]Ô^aÐbhÓ^iÐ]jÐkóð ô �x“=¤C¨¯©Ó$7Ó7Ü(Ø*¬3¨x«=¨/Ð9ZÔ[^Ð_c×_mÑ_mÓ[nÐZoÐpóð ô ˜X“�ä—8‘8×'Ñ'¨·J±JÐ'Ð?×CÒCØðØ,1ñð r4   c                 óZ  • [         R                  R                  X R                  5      U R                  S'   U R                  R                  5         / U l        U R                  R                   H:  nUR                  S:X  d  M  U R                  R                  UR                  5        M<     g )Nr|   Úplaceholder)r?   r”   ÚGraphModuler}   Ú__dict__Úlintr‘   ÚnodesÚopÚappendrK   ©rv   Únodes     r5   ÚfinalizeÚInterpreterModule.finalizeÜ   sr   € ô ).¯©×(<Ñ(<¸TÇ:Á:Ó(Nˆ�‰�nÑ%Ø�
‰
�‰Ôð ˆŒØ—J‘J×$Ô$ˆDØ�w‰w˜-Õ'Ø—‘×%Ñ% d§k¡kÖ2ò %r4   c                 ó"   • [        U SUUUU5      $ )Nr   ©r   ©rv   Úprint_outputÚinclude_strideÚinclude_deviceÚcoloreds        r5   Úprint_readableÚ InterpreterModule.print_readableí   ó#   € ô ØØØØØØó
ð 	
r4   )rƒ   rr   r‘   r}   rQ   ©TFFF)r+   r,   r-   r.   r>   r?   r”   r�   rA   ÚGraphry   r�   r�   r¥   r®   r3   Ú__classcell__©r„   s   @r5   r   r   Ÿ   so   ø‡ ñð
 —(‘(×&Ñ&¨Ñ-Ó-ð
 ñ	:à�x‰x�~‰~ð	:ð �$‰J÷	:ð 	:ò(òT3ð& ØØØ÷
ò 
r4   r   c                   ób   ^ • \ rS rSrSrS\\   S\\   4U 4S jjr	S r
S r    S
S jrS	rU =r$ )r    éþ   zÕ
A module that carries a sequence of InterpreterModules corresponding to
a sequence of calls of that module. Each call to the module dispatches
to the next InterpreterModule, and wraps back around after the last.
ÚattrsÚcall_modulesc           	      óô   >• [         TU ]  5         U(       d  [        S5      eUS   R                  U l        U H  n[	        X[        US   U5      5        M     US   R                  U l        X l        SU l        g )Nzcall_modules must not be emptyr   )	r€   r�   rd   r`   r\   Úgetattrrr   Ú_call_modulesÚ
_num_calls)rv   r·   r¸   Úaccessorr„   s       €r5   r�   Ú$InterpreterModuleDispatcher.__init__  sk   ø€ Ü‰ÑÔÞÜ Ð!AÓBÐBØ$ Q™×0Ñ0ˆŒÛˆHÜ�D¤G¨L¸©O¸XÓ$FÖGñ à ‘?×&Ñ&ˆŒØ)ÔØˆ�r4   c                 óÆ   • U R                   U R                     nU R                  S-   [        U R                   5      -  U l         U" U0 UD6$ ! [         a	    SU l        e f = f)Nr   r   )r»   r¼   r’   Ú	Exception)rv   r—   r‰   Úcall_modules       r5   r�   Ú#InterpreterModuleDispatcher.forward  sd   € Ø×(Ñ(¨¯©Ñ9ˆØŸ?™?¨QÑ.´#°d×6HÑ6HÓ2IÑIˆŒð	Ù Ð/¨Ñ/Ð/øÜó 	ØˆDŒOØð	ús   ÁA ÁA c                 ó   • U R                   $ rQ   )r»   ru   s    r5   r¸   Ú(InterpreterModuleDispatcher.call_modules  s   € Ø×!Ñ!Ð!r4   c           	      óŠ   • U R                    Vs/ s H  nUR                  UUUU5      PM     nnSR                  U5      $ s  snf )NÚ
)r»   r®   Újoin)rv   rª   r«   r¬   r­   ÚmodÚoutputss          r5   r®   Ú*InterpreterModuleDispatcher.print_readable  s[   € ð ×)Ò)ó
ò *�ð ×ÑØØØØö	ñ *ð 	ð 
ð �y‰y˜Ó!Ð!ùò
s   �A )r»   r`   r¼   rr   r±   )r+   r,   r-   r.   r>   rZ   ry   r�   r   r�   r�   r¸   r®   r3   r³   r´   s   @r5   r    r    þ   sG   ø† ñð	˜c #™hð 	°dÐ;LÑ6M÷ 	òò"ð
 ØØØ÷"ò "r4   r    c                   ó¾   • \ rS rSrSr\R                    SS\R                  S\R                  S\	\
   S\\\
4   S-  S\
S-  S	\	\
   4S
 jj5       rS	\	\   4S jrSrg)r   i/  zF
Adapts input arguments with ``input_spec`` to align ``target_spec``.
NÚtarget_specÚ
input_specÚ
input_argsÚmetadataÚobjrs   c                 ó   • g)z=NOTE: This adapter may mutate given ``input_args_with_path``.Nr*   )rv   rÌ   rÍ   rÎ   rÏ   rÐ   s         r5   ÚadaptÚFlatArgsAdapter.adapt4  s   € ð 	r4   c                 ó   • / $ )z>Returns a list of paths that are used to access the flat args.r*   ru   s    r5   Úget_flat_arg_pathsÚ"FlatArgsAdapter.get_flat_arg_paths@  s   € àˆ	r4   r*   )NN)r+   r,   r-   r.   r>   ÚabcÚabstractmethodÚpytreeÚTreeSpecr�   r	   Údictry   rÒ   rÕ   r3   r*   r4   r5   r   r   /  s”   † ñð 	×Ñð +/Øñ	à—_‘_ð	ð —O‘Oð	ð ˜‘Ið		ð
 �s˜C�x‘. 4Ñ'ð	ð �4‰Zð	ð 
ˆc‰ô	ó ð	ð D¨¡I÷ r4   r   c                   óv   ^ • \ rS rSr SS\S\S-  4U 4S jjjrS rS rS r	S	 r
S
 rS r    SS jrSrU =r$ )r!   iE  NÚexport_moduleÚflat_args_adapterc           	      ó,  >^,• [         T-U ]  5         UR                  R                  b  [	        S5      eS nUR
                   Vs/ s H  oDR                  PM     nnUS   S:w  a  [        SUS   < 35      e[        UR                  5      n[        UR                  5      U l        [        R                  R                  5       U l	        X R                  l        [        UR
                  5      U l        X l        UR                  R                   U l        X R                   S'   SU l        [$        U l        [)        X`R                  5        [+        U5        [-        U5      U l        [1        5       U l        [5        X`5      u  pxU R2                  R7                  UR9                  5       5        [;        UR<                  X5        UR>                  U l        / U l         URB                  n	[E        5       n
0 nU R                  RF                   H„  nXœ   nU" U5      U;  a>  [        RH                  RK                  URM                  5       URN                  S9X³" U5      '   [Q        X³" U5         U U[R        RT                  S	9  U
RW                  U5        M†     [E        U R                  RX                  5      n[E        5       n0 nU R                  RZ                   H  nXÎ;   a  SnUR\                  U   nOS
nXœ   nU" U5      U;  a  URM                  5       U4UU" U5      '   [Q        UU" U5         S   U U[R        R^                  US9  URW                  U5        M�     U	Ra                  5        HÌ  u  nnXÊ;   d  XÏ;   a  M  SnU" U5      U;   d)  [c        U[        RH                  RJ                  5      (       d  S
nU(       aB  U" U5      U;  a  US
4UU" U5      '   [Q        UU" U5         S   U U[R        R^                  S
S9  M”  U" U5      U;  a
  UX³" U5      '   [Q        X³" U5         U U[R        RT                  S	9  MÎ     0 nUR\                  Ra                  5        Hq  u  nnU" U5      U;  a:  [c        U[        Rd                  5      (       a  URM                  5       nUUU" U5      '   UU" U5         n[Q        UU U[R        Rf                  S	9  Ms     [i        [j        5      m,[E        5       nU,4S jn[E        5       nU R                  Rl                   GH°  nURn                  [p        RT                  :X  d0  URn                  [p        R^                  :X  Ga  URr                  (       aú  [u        URv                  S5      (       d!  [        S[y        URv                  5       35      e[c        URz                  [|        5      (       d!  [        S[y        URz                  5       35      eU" U" URB                  URz                     5      URv                  R~                  URz                  5        URW                  URz                  5        URW                  URz                  5        GML  URn                  [p        R^                  :X  a  URr                  (       a?  URn                  [p        R€                  :X  d!  URn                  [p        R‚                  :X  d  GMº  [u        URv                  S5      (       d.  [        SURn                   S[y        URv                  5       35      e[c        URz                  [|        5      (       d.  [        SURn                   S[y        URz                  5       35      eU" U" UR\                  URz                     5      URv                  R~                  URz                  5        URW                  URz                  5        GM³     UR\                  Ra                  5        H\  u  nnUU;  d  M  U" U5      nUT,;  a  [        SU< S35      eT,U   S   u  n n!U" UU U5        URW                  WRz                  5        M^     URB                  Ra                  5        H3  u  nnUU;  d  M  U" U5      n"U"T,;  a  M  T,U"   S   u  n n!U" U"U U5        M5     0 n#T,R9                  5        H)  n$U$ V%s/ s H  n%U%S   PM
     n&n%U$ H  u  n'n!U&U#U''   M     M+     […        U U#/ 5        [‡        UR9                  5       5      n(U Vs/ s H  nUU(;  d  M  UPM     nnU R‰                  U(U5        U Vs/ s H  nSU;  d  M  UPM     nnU R                  RŠ                   V)s/ s H  n)U)RŒ                  S:X  d  M  U)PM     sn)U lG        S
U lH        [“        U5       V*Vs0 s H	  u  n*nUU*_M     n+n*nU R•                  SS9 H  u  nn!UU+;  d  M  [—        U+5      U+U'   M     [™        U U+5        U R                  R›                  5         U R�                  5         g s  snf s  sn%f s  snf s  snf s  sn)f s  snn*f )Nz%Unflattening on JointExportModule NYIc                 óÞ   • [        U [        R                  5      (       aD  [        U R	                  5       U R                  5       U R                  5       U R                  5       S9$ [        U 5      $ )z8Returns _TensorID dataclass for tensors, otherwise id().)r:   r;   r<   r=   )	rb   r?   rg   r8   r:   r;   r<   r=   Úid)rÐ   s    r5   Ú_idÚ'UnflattenedModule.__init__.<locals>._idO  sU   € ä˜#œuŸ|™|×,Ñ,Ü Ø$'×$7Ñ$7Ó$9ØŸ:™:›<ØŸ™›Ø#&×#5Ñ#5Ó#7ñ	ð ô �c“7ˆNr4   r   Ú z+expected first fqn to be empty string, got Úunflattened_moduleF)Úrequires_grad)rL   T)rL   rM   c                 ó4   >• TU    nUR                  X45        g rQ   )r¢   )Úobj_idÚ	node_nameÚtarget_nameÚ	name_listÚ
consts_maps       €r5   Úadd_to_consts_mapÚ5UnflattenedModule.__init__.<locals>.add_to_consts_mapì  s   ø€ Ø" 6Ñ*ˆIØ×Ñ˜iÐ5Õ6r4   Únamez-expected s.arg to have 'name' attribute, got z!expected s.target to be str, got z1expected s.arg to have 'name' attribute for kind z, got z%expected s.target to be str for kind z	constant z id not found in consts_mapr   Ú@rœ   ©Úremove_duplicate)Or€   r�   Úgraph_signatureÚbackward_signatureÚ
ValueErrorÚmodule_call_graphÚfqnrd   r   r}   r?   r”   r²   r‚   rÞ   r|   ÚmetaÚadaptedrF   rƒ   Ú#_inplace_buffer_and_input_mutationsÚ_fix_nn_module_stacksÚ_root_module_typerr   Ú_IValsÚivalsÚ_outline_submodulesr_   ÚvaluesÚ_copy_graph_attrsÚ_graph_moduleÚrange_constraintsÚequality_constraintsÚ
state_dictrZ   Ú
parametersr]   rc   Úcloneræ   rn   r$   r/   ÚaddÚnon_persistent_buffersÚbuffersÚ	constantsr0   ra   rb   rg   r1   r   r�   Úinput_specsÚkindr   rM   r[   Úargre   rK   ry   rï   ÚCONSTANT_TENSORÚ
CUSTOM_OBJÚ_sink_paramsÚ_deduplicate_modulesÚ_dispatch_modulesr    r¡   Úinput_placeholdersÚcheck_input_constraintsÚ	enumerateÚnamed_modulesr’   Ú_reorder_submodulesrŸ   r¥   ).rv   rÝ   rÞ   râ   ÚentryÚfqn_listÚexport_graphÚseen_modulesÚ
seen_attrsr  Úassigned_paramsÚid_to_paramrï   Úparamr	  Úassigned_buffersÚid_to_bufferrM   r'   ÚtensorÚ	is_bufferÚid_to_constr÷   r(   Ú	_constantÚconsts_targetsrí   Úadded_params_buffersÚsÚ
const_nameÚconstÚconst_idÚph_nameÚ_Ú	tensor_idÚinputs_to_stateÚnode_targetÚtÚtargetsÚnÚredirected_call_indicesr¤   ÚiÚ	fqn_orderrì   r„   s.                                               @€r5   r�   ÚUnflattenedModule.__init__F  s	  ù€ ô
 	‰ÑÔØ×(Ñ(×;Ñ;ÑGÜÐDÓEÐEò		ð ,9×+JÒ+JÓKÒ+J %—I”IÑ+JˆÐKØ�A‰;˜"ÓÜ Ø=¸hÀq¹k¹_ÐMóð ô   × 3Ñ 3Ó4ˆÜ'¨×(EÑ(EÓFˆÔÜ—X‘X—^‘^Ó%ˆŒ
Ø#'�
‰
Ô Ü!)¨-×*IÑ*IÓ!JˆÔØ!2Ôà!×.Ñ.×3Ñ3ˆŒ	Ø*.�	‰	Ð&Ñ'ð ˆŒÜ%9ˆÔ"ä+¨L×:NÑ:NÔOÜ˜lÔ+Ü$ \Ó2ˆŒä“XˆŒ
ä#6°|Ó#JÑ ˆð 	�
‰
×Ñ˜,×-Ñ-Ó/Ô0ô 	˜-×5Ñ5°tÔHà!.×!@Ñ!@ˆÔØ*,ˆÔ!ð #×-Ñ-ˆ
Ü$'£Eˆð ð 	ð ×(Ñ(×3Ô3ˆDØÑ$ˆEÙ�5‹z Ó,Ü*/¯(©(×*<Ñ*<Ø—K‘K“M°×1DÑ1Dð +=ð +�˜C ›JÑ'ô Ø˜C ›JÑ'ØØÜ#×-Ñ-ò	ð ×Ñ Ö%ñ 4ô "% T×%9Ñ%9×%PÑ%PÓ!QÐÜ%(£UÐØOQˆØ×(Ñ(×0Ô0ˆDØÓ-Ø"�
Ø&×0Ñ0°Ñ6‘à!�
Ø#Ñ)�á�6‹{ ,Ó.Ø-3¯\©\«^¸ZÐ,H�™S ›[Ñ)äØ™S ›[Ñ)¨!Ñ,ØØÜ#×*Ñ*Ø%òð × Ñ  Ö&ñ% 1ð, '×,Ñ,Ö.‰LˆD�&ØÓ&¨$Ó*BÙàˆIÙ�6‹{˜lÓ*´*ØœŸ™×*Ñ*÷3ñ 3ð !�	æá˜“K |Ó3ð Øð1�L¡ V£Ñ-ô Ø ¡ V£Ñ-¨aÑ0ØØÜ'×.Ñ.Ø#ôñ �v“; kÓ1Ø/5�K  F£Ñ,ÜØ  F£Ñ,ØØÜ'×1Ñ1ô	ñ9 /ðH TVˆØ*×4Ñ4×:Ñ:Ö<‰MˆC�Ù�8‹} KÓ/Ü˜h¬¯©×5Ñ5Ø'Ÿ~™~Ó/�HØ-5�™C ›MÑ*Ø#¡C¨£MÑ2ˆIÜØØØÜ#×,Ñ,ô	ñ =ô DOÌtÓCTˆ
Ü#&£5ˆõ	7ô *-«ÐØ×%Ñ%×1Õ1ˆAØ�v‰vœ×,Ñ,Ó,Ø—‘œ)×*Ñ*Ô*¨q¯|¯|ä˜qŸu™u f×-Ñ-Ü(ØGÌÈQÏUÉUËÀ}ÐUóð ô " !§(¡(¬C×0Ñ0Ü(Ø;¼DÀÇÁ»NÐ;KÐLóð ñ "Ù˜×0Ñ0°·±Ñ:Ó;Ø—E‘E—J‘JØ—H‘Hôð
 ×"Ñ" 1§8¡8Ô,Ø$×(Ñ(¨¯©×2à—‘œ)×*Ñ*Ó*ØŸŸØ—6‘6œY×6Ñ6Ó6Ø—6‘6œY×1Ñ1Ö1ä˜qŸu™u f×-Ñ-Ü(ØKÈAÏFÉFÈ8ÐSYÔZ^Ð_`×_dÑ_dÓZeÐYfÐgóð ô " !§(¡(¬C×0Ñ0Ü(Ø?ÀÇÁ¸xÀvÌdÐST×S[ÑS[ËnÐM]Ð^óð ñ "Ù˜×/Ñ/°·±Ñ9Ó:Ø—E‘E—J‘JØ—H‘Hôð
 ×"Ñ" 1§8¡8×,ñM 2ðR "/×!8Ñ!8×!>Ñ!>Ö!@ÑˆJ˜Ø Õ/Ù˜u›:�Ø :Ó-Ü(Ø# J¡>Ð1LÐMóð ð (¨Ñ1°!Ñ4‘
�˜Ù! (¨G°ZÔ@Ø$×(Ñ(¨¯©Ö2ñ "Að )×3Ñ3×9Ñ9Ö;‰KˆC�ØÐ.Õ.Ù ›K�	Ø JÓ.ñ Ø'¨	Ñ2°1Ñ5‘
�˜Ù! )¨W°cÖ:ñ <ð 13ˆØ%×,Ñ,Ö.ˆKÙ%0Ó1¢[ �q˜”t¡[ˆGÐ1Û#‘��1Ø%,� Ó"ó $ñ /ô
 	�T˜?¨BÔ/ä"6°|×7JÑ7JÓ7LÓ"MÐÙ#+ÓR¢8˜C¨sÐ:QÑ/Q—C¡8ˆÐRà×ÑÐ6¸ÔGÙ#+Ó>¢8˜C¨s¸#©~—C¡8ˆÐ>ð "ŸZ™Z×-Ò-ó#
Ú-�T°·±¸MÑ1I�DÑ-ñ#
ˆÔð (,ˆÔ$ä*3°HÔ*=Ô>Ò*=¡  3�S˜!’VÑ*=ˆ	Ñ>à×)Ñ)¸5Ð)ÓA‰GˆD�!Ø˜9Õ$Ü"% i£.�	˜$“ñ Bô 	˜D )Ô,Ø�
‰
�‰ÔØ�‰�ùòo Lùòx 2ùò Sùò ?ùò
#
ùó
 ?s6   Ág7âg<ã)
hã7hä
hä#håhåhå>hc                 ó  • U R                  5        Hp  u  p[        US-   5        [        US5      (       d  M&  [        UR                  [
        R                  R                  5      (       d  M[  [        UR                  5        Mr     g )NÚ:r}   )r  Úprintr[   rb   r}   r?   r”   r²   )rv   r÷   rÈ   s      r5   Ú_print_graphÚUnflattenedModule._print_graphS  sT   € Ø×*Ñ*Ö,‰HˆCÜ�#˜‘)ÔÜ�s˜G×$Ó$¬°C·I±I¼u¿x¹x¿~¹~×)NÓ)NÜ�c—i‘iÖ ò -r4   c                 óŽ  • U R                   S   R                  nX$R                  :X  a  U$ U R                  c  [	        S5      eU R                  R                  UR                  UUU R                  US9n[        U5      UR                  R                  :w  a.  [	        S[        U5       SUR                  R                   35      eU$ )Nr   zeThere is no flat args adapter specified. Are you sure you are calling this with the right arguments? )rÌ   rÍ   rÎ   rÏ   rÐ   z<Flat args adaption failed, number of args mismatch Adatped: z 
Exported module: )	rö   Ú	signatureÚin_specrÞ   Ú	TypeErrorrÒ   rø   r’   Ú
num_leaves)rv   Ú	flat_argsr@  Úinputr?  s        r5   Ú_adapt_flat_argsÚ"UnflattenedModule._adapt_flat_argsY  sÚ   € Ø×*Ñ*¨1Ñ-×7Ñ7ˆ	Ø×'Ñ'Ó'ØÐà×!Ñ!Ñ)ÜðOóð ð
 ×.Ñ.×4Ñ4Ø%×-Ñ-Ø"Ø$ØŸ™Øð 5ð ˆIô �9‹~ ×!2Ñ!2×!=Ñ!=Ó=Üð Ü # I£Ð/ð 0(Ø(1×(9Ñ(9×(DÑ(DÐ'EðGóð ð
 Ðr4   c           	      óª  • U R                   S   R                  nUnU(       a  [        X#R                  5      n[        R
                  " X45      u  pVU Vs/ s H  owS   PM	     nn[        5       (       a  U$ XcR                  :w  aR  U R                  (       d(  [        SU S3SUR                   35        [        S5        U R                  X†U5      nSU l        U R                  (       aà  SSKJn	  U R                  SL a¬  U R                  (       a  U R                  R                  5       O/ n
U
(       a;  [        U
5      [        U5      :w  a#  [!        S	[        U
5       S
[        U5       35      e[#        U5       VVs/ s H$  u  p¼[%        US9['        U
(       a  X«   OSS94U4PM&     nnnOUnU	" U R(                  XÐR*                  5        U$ s  snf s  snnf )Nr   r   zGInput treespec does not match with exported module's: 
Input treespec: z. zExported module treespec: z5Adapting flat arg to match exported module's treespecT)Ú"_check_input_constraints_for_graphzflat_arg_paths length z! does not match flat_args length )Úidxz<unknown location>)rï   )rö   r?  r   r@  rÙ   Útree_flatten_with_pathr   rù   r;  rE  r  Útorch._export.utilsrH  rÞ   rÕ   r’   rd   r  r   r   r  r  )rv   r—   r‰   r?  Úreordered_kwargsÚflat_args_with_pathr@  ÚxrC  rH  Úflat_arg_pathsrI  r  Únew_flat_args_with_paths                 r5   Úprocess_forward_inputsÚ(UnflattenedModule.process_forward_inputst  sè  € Ø×*Ñ*¨1Ñ-×7Ñ7ˆ	à!ÐÞÜ-¨f×6GÑ6GÓHÐä'-×'DÒ'DØÐ$ó(
Ñ$Ðñ $7Ó7Ò#6˜a�q”TÑ#6ˆ	Ð7ä!×#Ñ#ØÐà×'Ñ'Ó'Ø—<—<Üð'Ø'. i¨rð3à0°×1BÑ1BÐ0CÐDôô
 ÐMÔNØ×-Ñ-¨iÀ$ÓGˆIØˆDŒLà×'×'õ Oà�|‰|˜tÒ#ð ×-×-ð ×*Ñ*×=Ñ=Ô?àð ö
 "¤c¨.Ó&9¼SÀ»^Ó&KÜ(Ø0´°^Ó1DÐ0EÐEfÔgjÐktÓguÐfvÐwóð ô %.¨iÔ$8ô+ò %9™˜ô (¨CÑ0Ü&æ#1ð &4Ò%8à%9ñðð ó
ñ %9ð (ñ +Ð'ð +>Ð'á.Ø×'Ñ'Ð)@×BXÑBXôð Ðùòi 8ùó>+s   ÁG
Å:+Gc                 óž  • U R                   " U0 UD6nU R                  S   R                  n[        5       (       ab  [        R
                  R                  X R                  S9R                  " USS06n[        U[        5      (       a  [        U5      S:X  a  US   $ U$ [        R                  R                  5       (       d  U R                  (       d'  [        U R                   5      R"                  " U /UQ76 nO7[        R
                  R                  X R                  S9R                  " USS06n[$        R&                  " XdR(                  5      $ )Nr   r‹   rŒ   Fr   )rQ  rö   r?  r   r?   r”   r•   r}   r–   rb   rB   r’   r�   rŽ   rƒ   re   r|   r�   rÙ   Útree_unflattenÚout_spec)rv   r—   r‰   rC  r?  Ú
return_valÚtree_outs          r5   r�   ÚUnflattenedModule.forward´  s  € Ø×/Ò/°Ð@¸Ñ@ˆ	Ø×*Ñ*¨1Ñ-×7Ñ7ˆ	ä!×#Ñ#ÜŸ™×-Ñ-¨d¿*¹*Ð-ÐE×IÒIØðØ16ñˆJô ˜*¤e×,Ñ,´°Z³ÀAÓ1EØ! !‘}Ð$ØÐä�>‰>×-Ñ-×/Ñ/°t×7Q×7QÜ˜D×-Ñ-Ó.×6Ò6°tÐH¸iÒH‰Hä—x‘x×+Ñ+¨D¿
¹
Ð+ÐC×GÒGØðØ16ñˆHô ×$Ò$ X×/AÑ/AÓBÐBr4   c                 ó¤   • [         R                  R                  X R                  5      U R                  S'   U R                  R                  5         g )Nr|   )r?   r”   r�   r}   rž   rŸ   ru   s    r5   r¥   ÚUnflattenedModule.finalizeÉ  s1   € Ü(-¯©×(<Ñ(<¸TÇ:Á:Ó(Nˆ�‰�nÑ%Ø�
‰
�‰Õr4   c                 ó  ^• [        [        5      mU R                   H‹  nUR                  (       d  M  UR                  (       d  M)  UR                  n[        XR                  XD5      5      nSU;   a  UR                  S5      OUS/u  pgTU   R                  [        U5      U45        M�     [        [        5      nU HF  n	SU	;   a)  U	R                  SS5      u  p«XŠ   R                  U5        M2  US   R                  U	5        MH     TR                  5        H¼  u  p¬[        U5       VVs/ s H  u  pÕUPM	     nnn[        U5      S:”  d  M5  [!        [        U5      5       HQ  n[#        X¯S-   5      nXA;  d  M  UR                  S5      Gt nn[%        U U5      R&                  R)                  U5        MS     U R+                  U
[-        XŠ   U5      5        M¾     U4S jnU R/                  SS9 H‹  u  pE[1        US	5      (       a  U" XER2                  5        M*  [1        US
5      (       d  M=  UR4                   H>  n[1        US	5      (       d  [7        S[9        U5       35      eU" UUR2                  5        M@     M�     gs  snnf )z¼For a module whose call signatures are preserved, replace
multiple modules corresponding to multiple calls to that module
with a single dispatcher module that tracks which module to call.
rð   Ú0rO   r   rä   c                 óÈ   >• UR                    HQ  nUR                  S:X  d  M  UR                  R                  S5      S   nU (       a  U  SU 3OUnUT;   d  MK  X2l        MS     g )NrÁ   rð   r   rO   )r    r¡   rK   rY   )rj   r}   r¤   r÷   ÚpathÚcalled_moduless        €r5   Úelide_call_indicesÚ?UnflattenedModule._dispatch_modules.<locals>.elide_call_indices÷  sW   ø€ ØŸœ�Ø—7‘7˜mÕ+ØŸ+™+×+Ñ+¨CÓ0°Ñ3�CÞ06˜f˜X Q s eÑ,¸C�DØ˜~Õ-Ø&)žò $r4   Frñ   r}   r»   z-expected mod_ to have 'graph' attribute, got N)r   r�   rö   r÷   r?  r   ÚgetrY   r¢   rC   rZ   Úrsplitr  ra   Úsortedr’   ÚrangeÚ
_call_namer   r`   ÚpopÚset_submoduler    r  r[   r}   r»   rd   re   )rv   r5  r'  r  r÷   rÈ   ÚbaserI  Ú	attrs_maprK   Úorig_fqnrï   Úindexed_call_modulesr.  r¸   r6  rj   r`  Úmod_r_  s                      @r5   r  Ú#UnflattenedModule._dispatch_modulesÍ  s'  ø€ ô %¤TÓ*ˆØ×+Ô+ˆEØ�y�y‰y˜UŸ_Ÿ_™_ð —i‘i�Ü ×&AÑ&AÀ#Ó&KÓL�Ø.1°S«j˜CŸI™I cœN¸sÀC¸j‘	�Ø˜tÑ$×+Ñ+¬S°«X°s¨OÖ<ñ ,ô  ¤Ó$ˆ	Û$ˆFØ�f‹}Ø!'§¡¨s°AÓ!6‘�ØÑ#×'Ñ'¨Ö-à˜"‘×!Ñ! &Ö)ñ %ð /=×.BÑ.BÖ.DÑ*ˆHÜ.4Ð5IÔ.JÔKÒ.J¡F A›CÑ.JˆLÑKÜ�<Ó  1Õ$Üœs <Ó0Ö1�AÜ$ X°1©uÓ5�CØÕ9Ø(+¯	©	°#«™˜ Ü/°°fÓ=×FÑF×JÑJÈ4ÖPñ	 2ð
 ×"Ñ"ØÜ/°	Ñ0CÀ\ÓRöñ /Eõ	*ð ×*Ñ*¸EÐ*ÓB‰HˆCÜ�s˜G×$Ñ$Ù" 3¯	©	Ö2Ü˜˜o×.Ó.Ø×-Ô-�DÜ" 4¨×1Ñ1Ü,ØKÌDÐQUËJÈ<ÐXóð ñ ' s¨D¯J©JÖ7ó .ò	 Cùó- Ls   Ä*I<c                 ó"   • [        U SUUUU5      $ )Nr!   r¨   r©   s        r5   r®   Ú UnflattenedModule.print_readable
  r°   r4   )rƒ   rr   rù   r  r  rÞ   r}   ró   r  rþ   rø   rö   r  rQ   r±   )r+   r,   r-   r.   r   r   r�   r<  rE  rQ  r�   r¥   r  r®   r3   r³   r´   s   @r5   r!   r!   E  sg   ø† ð 59ñKà&ðKð +¨TÑ1÷Kð KòZ!òò6>ò@Cò*ò;8ð~ ØØØ÷
ò 
r4   r!   r)   rÞ   rs   c                 óŽ   • [        U 5      n [        X5      n[        R                  R	                  UR
                  SSS9Ul        U$ )aÁ  Unflatten an ExportedProgram, producing a module with the same module
hierarchy as the original eager module. This can be useful if you are trying
to use :mod:`torch.export` with another system that expects a module
hierarchy instead of the flat graph that :mod:`torch.export` usually produces.

.. note:: The args/kwargs of unflattened modules will not necessarily match
    the eager module, so doing a module swap (e.g. :code:`self.submod =
    new_mod`) will not necessarily work. If you need to swap a module out, you
    need to set the :code:`preserve_module_call_signature` parameter of
    :func:`torch.export.export`.

Args:
    module (ExportedProgram): The ExportedProgram to unflatten.
    flat_args_adapter (Optional[FlatArgsAdapter]): Adapt flat args if input TreeSpec does not match with exported module's.

Returns:
    An instance of :class:`UnflattenedModule`, which has the same module
    hierarchy as the original eager module pre-export.
z*do not trace into preprocessing the inputsT)ÚreasonÚ	recursive)r   r!   r?   Ú_dynamoÚdisablerQ  )r)   rÞ   Úms      r5   r"   r"     sL   € ô, # 6Ó*€FÜ˜&Ó4€Aô  %Ÿ}™}×4Ñ4Ø	× Ñ Ø;Øð  5ð  €AÔð €Hr4   r}   ró   c                 ó�  ^• [        [        [        U R                  5      5      5      nUR                  S:w  d  [        UR                  5      S:w  a0  [        SUR                  < S[        UR                  5       S35      eUR                  S   nU R                   Vs0 s H!  oDR                  S:X  d  M  UR                  U_M#     nn0 nUR                  R                  5        VVs0 s H  u  pxX‡_M	     n	nnUR                  R                  5        VVs0 s H
  u  pxXyU   _M     nnnUR                  UR                  5        [        U5      n
USU
  H·  nXkR                     nX\   nU R                  U5         U R                  S	[         R"                  R$                  R&                  R(                  XÛ45      mUR*                  R                  5        H  u  p~UTR*                  U'   M     SSS5        UR-                  TU4S
 j5        M¹     [/        X:S 5      nU4Ul        gs  snf s  snnf s  snnf ! , (       d  f       NO= f)a  Transform buffer and input mutations from their functionalized form
into copy_ nodes in the graph.

Functionalization represents a buffer mutation by passing the buffer as
an input and output. For example, consider the eager code:
    def forward(self, x):
        self.buffer += x
        return x * x

This corresponds to a graph that looks like:
    def forward(self, buffer, x):
        mutated_buffer = aten.add(buffer, x)
        mul = aten.mul(x, x)
        return (mutated_buffer, mul)

We want to inplace this into something that looks like the original
eager code:
    def forward(self, buffer, x):
        mutated_buffer = aten.add(buffer, x)
        buffer.copy_(mutated_buffer)
        mul = aten.mul(x, x)
        return (mul,)

Input mutations are handled similarly.
Úoutputr   z8expected output node with op='output' and 1 arg, got op=z with z argsr   rœ   NÚcall_functionc                 ó   >• U TL$ rQ   r*   )rN  Únew_nodes    €r5   Ú<lambda>Ú5_inplace_buffer_and_input_mutations.<locals>.<lambda>‚  s
   ø€ ¸1ÀHÑ;Lr4   )ÚnextÚiterÚreversedr    r¡   r’   r—   rd   rï   Úinputs_to_buffersra   Úbuffers_to_mutater_   Úuser_inputs_to_mutateÚinserting_afterÚcreate_noder?   ÚopsÚatenÚcopy_Údefaultrø   Úreplace_all_uses_withrB   )r}   ró   Úoutput_nodeÚreturn_argsr¤   Úinput_name_to_nodeÚmutation_name_to_input_namerT   Ú
buffer_fqnÚbuffer_fqn_to_input_nameÚnum_mutationsÚmutationÚ
input_nameÚ
input_nodeÚvÚuser_outputsr{  s                   @r5   rú   rú   ?  s#  ø€ ô: ”tœH U§[¡[Ó1Ó2Ó3€KØ‡~�~˜Ó!¤S¨×)9Ñ)9Ó%:¸aÓ%?ÜØFÀ{Ç~Á~ÑFXÐX^Ô_bÐcn×csÑcsÓ_tÐ^uÐuzÐ{ó
ð 	
ð ×"Ñ" 1Ñ%€Kð %*§K¢KóÚ$/˜D·7±7¸mÑ3K‹ˆ�	‰	�4Š¡Kð ð ð #%Ðð ,;×+LÑ+L×+RÑ+RÔ+Tô Ú+T™-˜!ˆ
ŠÑ+Tð ñ  ð
 -×>Ñ>×DÑDÔFô#âF‰MˆAð 	
 JÑ/Ò/ÙFð  ñ #ð
  ×&Ñ& ×'LÑ'LÔMäÐ3Ó4€Mà  Ó/ˆØ0·±Ñ?ˆ
Ø'Ñ3ˆ
à×"Ñ" 8Õ,à×(Ñ(Ø¤§¡§¡×!5Ñ!5×!=Ñ!=À
Ð?UóˆHð !Ÿ™×+Ñ+Ö-‘�Ø#$�—‘˜aÓ ñ .÷ -ð 	×&Ñ& xÔ1LÖMñ 0ô" ˜ ^Ð4Ó5€LØ%Ð(€KÕùòIùó ùó#÷ -Õ,ús%   ÂH&Â6H&Ã(H+ÄH1Å;A3H7È7
I	c                 ó´   • U R                    HH  nSUR                  ;  a  M  UR                  S   R                  5        H  u  p#U(       a  M  Us  s  $    MJ     g )NÚnn_module_stack)r    rø   r   )r}   r¤   r^  r~   s       r5   rü   rü   Š  sM   € Ø—”ˆØ D§I¡IÓ-ÙàŸ	™	Ð"3Ñ4×;Ñ;Ö=‰HˆDß�4Ø”	ó >ñ	 ð r4   c           	      ó  • U R                    Hð  nSUR                  ;  a  M  UR                  S   nUR                  5        VVs/ s H!  u  p4SU;   a  UR                  S5      S   OUPM#     nnnUtpgSnU H  n	[	        Xi5      (       a	  US-  nU	nM    O   U[        U5      :  d  Mš  [        R                  SUU[        U5      U-
  5        [        [        UR                  5       5      S U 5      UR                  S'   Mò     g s  snnf )Nr˜  rð   r   r   zPnn_module_stack fqns %s at node %s do not form a stack! dropping last %d entries)r    rø   r   rY   Ú
_is_prefixr’   ÚlogÚwarningrÛ   r�   ra   )
r}   r¤   r˜  r÷   Ú_tÚfqnsÚprev_fqnÚ	next_fqnsÚnum_valid_indicesÚcurr_fqns
             r5   rû   rû   •  s  € ð —”ˆØ D§I¡IÓ-ÙàŸ)™)Ð$5Ñ6ˆð +×1Ñ1Ô3ô
â3‘�ð "%¨£ˆC�I‰I�c‹N˜1Ò°Ò4Ù3ð 	ñ 
ð  $ÐˆØÐÛ!ˆHä˜(×-Ñ-Ø! QÑ&Ð!Ø#’ñ ñ "ð œs ?Ó3Õ3Ü�K‰KØbØØÜ�OÓ$Ð'8Ñ8ô	ô ,0Ü�_×*Ñ*Ó,Ó-Ð.@Ð/@ÐAó,ˆD�I‰IÐ'Ó(ò= ùó

s   Á(Dc                 ó`   • [        U 5      [        U5      :  =(       a    US[        U 5       U :H  $ )z2Check whether `candidate` is a prefix of `target`.N)r’   )Ú	candidaterK   s     r5   rš  rš  ¼  s+   € äˆy‹>œC ›KÑ'×Q¨FÐ3C´S¸³^Ð,DÈ	Ñ,QÐQr4   Ú
parent_fqnÚ	child_fqnc                 óØ   • U S:X  a  U$ U R                  S5      nUR                  S5      nUS [        U5       U:w  a  [        SU SU  S35      eSR                  U[        U5      S  5      $ )Nrä   rO   zChild module 'z(' is not a descendant of parent module 'za'.This is currently unsupported.Please try to make child module attach to parent module directly.)rY   r’   ÚRuntimeErrorrÇ   )r¥  r¦  Úparent_splitÚchild_splits       r5   Ú_compute_accessorr«  Á  sŒ   € Ø�RÓàÐà×#Ñ# CÓ(€LØ—/‘/ #Ó&€Kð Ð&”S˜Ó&Ð'¨<Ó7ÜØ˜Y˜KÐ'OÐPZÈ|ð \Pð Pó
ð 	
ð
 �8‰8�K¤ LÓ 1Ð 3Ð4Ó5Ð5r4   rN  Úyc                 óæ  • S[         R                  R                  S[        4S jn[	        U R
                  [         R                  R                  5      (       d!  [        S[        U R
                  5       35      e[	        UR
                  [         R                  R                  5      (       d!  [        S[        UR
                  5       35      eU" U R
                  5      U" UR
                  5      :H  $ )Nr}   rs   c                 óh  ^
• / n0 m
S[         4U
4S jjn[        U R                  5       Hë  u  p4[        R                  " X$R
                  5       Vs/ s H  n[        U5      PM     nnU[        R                  " X$R                  5      R                  5        VVs/ s H  u  pxU SU 3PM     snn-  nUR                  S;   a  UR                  OSn	UR                  U SUR                   SU	 SS	R                  U5       S
35        UT
[        U5      '   Mí     SR                  U5      $ s  snf s  snnf )Nrs   c                 ó    >• [        U [        R                  R                  5      (       a  S[	        T[        U 5         5      -   $ [	        U 5      $ )NÚ%)rb   r?   r”   ÚNodery   rá   )r  Ú	nodes_idxs    €r5   Úarg_dumpÚ>_check_graph_equivalence.<locals>.graph_dump.<locals>.arg_dumpØ  s:   ø€ Ü˜#œuŸx™xŸ}™}×-Ñ-ØœS ¬2¨c«7Ñ!3Ó4Ñ4Ð4Ü�s“8ˆOr4   Ú=)ry  Úget_attrrä   z: Ú[z](z, Ú)rÆ   )ry   r  r    rÙ   Útree_mapr—   r‰   ra   r¡   rK   r¢   rÇ   rá   )r}   Úretr³  r6  r¤   r  Ú	args_dumpÚkeyÚvaluerK   r²  s             @r5   Ú
graph_dumpÚ,_check_graph_equivalence.<locals>.graph_dumpÔ  s  ø€ ØˆØ$&ˆ	ð	œS÷ 	ô
 ! §¡Ö-‰GˆAÜ-3¯_ª_¸XÇyÁyÔ-QÓRÒ-Q cœ˜SžÑ-QˆIÐRØä"(§/¢/°(¿K¹KÓ"H×"NÑ"NÔ"Pôâ"P‘J�Cð �%�q˜˜Ó Ù"Pòñ ˆIð %)§G¡GÐ/LÓ$L�T—[’[ÐRTˆFà�J‰J˜!˜˜B˜tŸw™w˜i q¨¨°°4·9±9¸YÓ3GÐ2HÈÐJÔKØ"#ˆI”b˜“hÓñ .ð �y‰y˜‹~Ðùò Sùós   ÁD)ÂD.
z+expected x.graph to be torch.fx.Graph, got z+expected y.graph to be torch.fx.Graph, got )r?   r”   r²   ry   rb   r}   rd   re   )rN  r¬  r¾  s      r5   Ú_check_graph_equivalencerÀ  Ó  s°   € ðœ%Ÿ(™(Ÿ.™.ð ¬Sô ô* �a—g‘gœuŸx™xŸ~™~×.Ñ.ÜØ9¼$¸q¿w¹w»-¸ÐIó
ð 	
ô �a—g‘gœuŸx™xŸ~™~×.Ñ.ÜØ9¼$¸q¿w¹w»-¸ÐIó
ð 	
ñ �a—g‘gÓ¡*¨Q¯W©WÓ"5Ñ5Ð5r4   Úgmc                 óŠ   • Sn[        U SU 35      (       a  US-  n[        U SU 35      (       a  M  SU 3n[        XU5        U$ )Nr   Ú_spec_r   )r[   r\   )rÁ  Úspecr6  rï   s       r5   Ú	_add_specrÅ  ô  sR   € Ø	€AÜ
�"˜˜q˜c�l×
#Ñ
#Ø	ˆQ‰ˆô �"˜˜q˜c�l×
#Ó
#à�A�3ˆ<€DÜˆB�dÔØ€Kr4   c                 ó´   • U R                   R                  [        R                  U45      nU R                   R                  [        R
                  US45      nU$ )Nr   )r}   ry  rÙ   Útree_flattenÚoperatorÚgetitem)rÁ  r¤   ÚflattenÚ	getitem_0s       r5   Ú_generate_flattenrÌ  ý  sF   € Ø�h‰h×$Ñ$¤V×%8Ñ%8¸4¸'ÓB€GØ—‘×&Ñ&¤x×'7Ñ'7¸'À1¸ÓF€IØÐr4   c                 ó¤   • [        X5      nU R                  R                  U5      nU R                  R                  [        R
                  X45      $ rQ   )rÅ  r}   r¶  ry  Ú	fx_pytreeÚtree_flatten_spec)rÁ  r¤   rÄ  rï   Ú	spec_nodes        r5   Ú_generate_flatten_specrÑ    sB   € ô �RÓ€DØ—‘×!Ñ! $Ó'€IØ�8‰8×!Ñ!¤)×"=Ñ"=ÀÐ?PÓQÐQr4   c                 ó¤   • [        X5      nU R                  R                  U5      nU R                  R                  [        R
                  X45      $ rQ   )rÅ  r}   r¶  ry  rÙ   rT  )rÁ  r    rÄ  rï   rÐ  s        r5   Ú_generate_unflattenrÓ    sB   € ô �RÓ€DØ—‘×!Ñ! $Ó'€IØ�8‰8×!Ñ!¤&×"7Ñ"7¸%Ð9KÓLÐLr4   rÈ   c                 óÎ   • UR                  S5      Gt p#U HA  n[        XS 5      nUc    g [        U[        R                  R
                  5      (       d    g Un MC     [        XS 5      $ )NrO   )rY   rº   rb   r?   r]   r^   )rÈ   rK   rj   rk   rV   Úsubmods         r5   Ú_get_submodulerÖ    s\   € Ø—\‘\ #Ó&�N€VãˆÜ˜ DÓ)ˆà‰>Ùä˜&¤%§(¡(§/¡/×2Ñ2ÙàŠñ ô �3˜tÓ$Ð$r4   Úmodule_to_addÚcreate_modulec           	      ó‚  • UR                  S5      Gt pE[        U5       HŒ  u  pg[        XS 5      nUcK  Ub  U" SR                  US US-    5      5      nO[        R
                  R                  5       n[        XU5        [        U[        R
                  R                  5      (       d    gUn MŽ     U R                  XR5        g )NrO   r   F)
rY   r  rº   rÇ   r?   r]   r^   r\   rb   Ú
add_module)	rÈ   rK   r×  rØ  rj   rk   r6  rV   rÕ  s	            r5   Ú_add_submodulerÛ  $  sž   € ð —\‘\ #Ó&�N€Vä˜VÖ$‰ˆÜ˜ DÓ)ˆà‰>ØÑ(Ù& s§x¡x°°w¸¸Q¹°Ó'@ÓA‘äŸ™Ÿ™Ó*�Ü�C˜vÔ&ä˜&¤%§(¡(§/¡/×2Ñ2ÙàŠñ %ð ‡N�N�5Õ(r4   ri  r4  c                 ó&   • US:X  a  U $ U  SUS-
   3$ )Nr   rð   r*   )ri  r4  s     r5   rf  rf  >  s$   € ð ˜“6ˆ4Ð0 $  q¨¨Q©¨Ð0Ð0r4   Ú	call_namec                 ób   • [         R                  " [         R                  " U5      S-   U 5      S L$ )Nz(@\d+)?$)ÚreÚmatchÚescape)rÝ  ri  s     r5   rR   rR   D  s%   € ä�8Š8”B—I’I˜d“O kÑ1°9Ó=ÀTÐIÐIr4   c                   ó"  • \ rS rSr SS\R
                  R                  S\\R
                  R                  S4   S\	\\
\
S-  \4      S\\
\4   S\R
                  R                  \-  S-  4
S	 jjrS
 rS rS rSS jrS rS rS rS rS rSrg)Ú_ModuleFrameiI  NÚ
flat_graphr    .Úmodule_stackrö   r)   c                 ó®  ^ ^^!• UT l         UT l        UT l        UT l        UT l        UT l        TT l        UT l        U	T l        U
T l	        ST l
        T R                  S   u  T l        m!n[        T R                  US-   5      T l        T   Ub,  UT l        [        US5      (       a  UR                   O0 T l        O`T R
                  R#                  T R                  [%        [&        R(                  R+                  5       T!S95      T l        TR                   T l        T R                  R,                  T l        0 T l        0 T l        S T l        TGbF  [5        TR                  T R                  5      nUU U!4S jn[7        TR                  UT R                  U5        TR,                  R9                  U5      T l        T R                  T R                     (       aA  T R                  T R                     S   nUR                  R:                  T R                  l        T R                  T R                     R=                  [?        T R                  R                  T R                  R                  T R2                  T R                  US-   T R                  S95        U
R#                  T R                  5      nUGbs  T R                  Gbd  UR@                  RB                  S	:w  a"  [E        S
UR@                  RB                   35      eUR@                  RF                  [H        La"  [E        SUR@                  RF                   35      eUR@                  RK                  5       u  nnURF                  [H        La  [E        SURF                   35      eURF                  [L        La  [E        SURF                   35      eT R,                  RO                  S 5         [Q        URB                  5       Vs/ s H!  nT R,                  RS                  SU 35      PM#     nn0 nURT                   H!  nT R,                  RS                  U5      UU'   M#     [W        T R                  [I        U5      U4UR@                  5      n[Y        URZ                  5       Hë  u  nnT R,                  R]                  S[^        R`                  UU4[c        U[d        5      (       d  URf                  OSU 3S9n[c        U[d        5      (       a  Mm  URf                  T R                  ;   d  M‰  [h        Rh                  " T R                  URf                     Rj                  5      Ul5        UT R0                  T R                  URf                     '   Mí     S S S 5        T R                  R,                  Rm                  T R2                  5         / nURZ                   Hß  n[c        U[d        5      (       a  UR=                  URn                  5        M5  URf                  T R                  ;  a  UR=                  S 5        Mb  [c        U[p        [r        [t        [v        45      (       d  [E        S[G        U5       35      eUR=                  T R                  Ry                  T R                  URf                     5      5        Má     [{        T R                  R                  UUR@                  5      nT R                  R,                  R}                  [^        R`                  US45      nT R                  R,                  R}                  [^        R`                  US45      n[Q        URB                  5       Vs/ s H9  nT R                  R,                  R}                  [^        R`                  UU45      PM;     nnURT                   V s0 s H:  n U T R                  R,                  R}                  [^        R`                  UU 45      _M<     nn S S S 5        T R2                  c  [E        S5      e[I        W5      T R2                  l?        WT R2                  l@        g g g s  snf ! , (       d  f       GNÄ= fs  snf s  sn f ! , (       d  f       Nu= f)NFéÿÿÿÿr   rþ   ©r~   c                 óø   >• TR                   (       a  TR                    SU  3OU nUTR                  ;   a  TR                  U   $ [        [        R                  R                  5       TS9nUTR                  U'   U$ )NrO   rè  )r÷   Úcreated_modulesr   r?   r”   r²   )r÷   r^  rÕ  Úparentrv   r~   s      €€€r5   rØ  Ú,_ModuleFrame.__init__.<locals>.create_module~  sj   ø€ Ø06·
·
˜&Ÿ*™*˜ Q s eÑ,À�Ø˜4×/Ñ/Ó/Ø×/Ñ/°Ñ5Ð5Ü*¬5¯8©8¯>©>Ó+;ÀÑC�Ø-3�×$Ñ$ TÑ*Ø�r4   r   )r¥  Úparent_moduleÚparent_call_moduler÷   Úcall_idxr)   é   z)expected in_spec to have 2 children, got z'expected in_spec.type to be tuple, got z)expected args_spec.type to be tuple, got z*expected kwargs_spec.type to be dict, got Ú_positional_arg_ry  Ú
_constant_)r¡   rK   r—   rï   z_expected input to be TensorArgument, SymIntArgument, SymBoolArgument, or SymFloatArgument, got z#parent_call_module must not be None)Arä  r    Ú
seen_nodesr  r  rê  rë  rå  Ú	module_idrö   Úverboser÷   rf  r¦  r)   r[   rþ   rb  r   r?   r”   r²   r}   Únode_mapÚnode_to_placeholderrî  r«  rÛ  rÁ   r`   r¢   Ú_SubmoduleEntryr@  Únum_childrenrd   re   rB   ÚchildrenrÛ   r„  re  rœ   ÚcontextrÑ  r  Úinputsr…  rÈ  rÉ  rb   r   rï   Úcopyrø   Úinserting_beforer½  r   r   r   r   Úremap_inputrÓ  ry  r—   r‰   )"rv   rä  r    ró  r  r  rê  rë  rå  rô  rö   r)   Ú	num_callsr½   rØ  Úbase_module_framer?  Ú	args_specÚkwargs_specrI  Ú	arg_nodesÚkwarg_nodesrï   rC  r  Úflat_arg_nodeÚinput_nodesrD  Úinputs_nodeÚ	args_nodeÚkwargs_noder6  rT   r~   s"   `      `                         @r5   r�   Ú_ModuleFrame.__init__J  s  ú€ ð %ˆŒØˆŒ
Ø$ˆŒØ(ˆÔØ$ˆŒØ.ˆÔØˆŒØ(ˆÔØ"ˆŒà!2ˆÔØˆŒà"&×"3Ñ"3°BÑ"7ÑˆŒ�"�iä# D§H¡H¨i¸!©mÓ<ˆŒáØÑØ ˆDŒKÜ)0°¸×)AÑ)A˜ŸšÀrˆD�Jà×.Ñ.×2Ñ2Ø—‘Ü!¤%§(¡(§.¡.Ó"2°rÑ:óˆDŒKð  Ÿ™ˆDŒJà—[‘[×&Ñ&ˆŒ
ð =?ˆŒØ#%ˆÔ à8<ˆÔØÒÜ(¨¯©°T·^±^ÓDˆH÷ô ˜6Ÿ=™=¨(°D·K±KÀÔOØ&,§l¡l×&>Ñ&>¸xÓ&HˆDÔ#Ø× Ñ  §¡×0Ø$(×$5Ñ$5°d·n±nÑ$EÀaÑ$HÐ!Ø'8×'?Ñ'?×'HÑ'H�—‘Ô$Ø×Ñ˜dŸn™nÑ-×4Ñ4ÜØ#Ÿ{™{Ÿ™Ø"&§+¡+×"4Ñ"4Ø'+×'>Ñ'>ØŸ™Ø&¨™]ØŸ;™;ñô	ð &×)Ñ)¨$¯.©.Ó9ˆ	ØÒ  T§[¡[Ò%<Ø× Ñ ×-Ñ-°Ó2Ü$Ø?À	×@QÑ@Q×@^Ñ@^Ð?_Ð`óð ð × Ñ ×%Ñ%¬UÒ2Ü$Ø=¸i×>OÑ>O×>TÑ>TÐ=UÐVóð ð &/×%6Ñ%6×%?Ñ%?Ó%AÑ"ˆI�{Ø�~‰~¤UÒ*Ü$Ø?À	ÇÁÐ?OÐPóð ð ×Ñ¤tÒ+Ü$Ø@À×AQÑAQÐ@RÐSóð ð —‘×+Ñ+¨DÕ1ô  % Y×%;Ñ%;Ô<óâ<˜ð —J‘J×*Ñ*Ð-=¸c¸UÐ+CÖDÙ<ð ð ð !�Ø'×/Ô/�DØ(,¯
©
×(>Ñ(>¸tÓ(D�K Ó%ñ 0ä2Ø—K‘KÜ˜9Ó% {Ð3Ø×%Ñ%ó�	ô
 !*¨)×*:Ñ*:Ö ;‘H�C˜Ø$(§J¡J×$:Ñ$:Ø*Ü'×/Ñ/Ø'¨Ð-ô $.¨cÔ3C×#DÑ#Dð  ŸHšHà#-¨c¨UÐ!3ð %;ð 	%�Mô " #Ô'7×8Ñ8Ù à—x‘x 4§?¡?Õ2Ü-1¯YªY°t·±ÀsÇxÁxÑ7P×7UÑ7UÓ-V˜Ô*à)ð ×0Ñ0°·±ÀÇÁÑ1JÓKñ! !<÷ 2ðB —‘×"Ñ"×3Ñ3°D×4KÑ4KÕLØ:<�Ø&×-Ô-�EÜ! %Ô)9×:Ñ:Ø#×*Ñ*¨5¯;©;Ö7ØŸ™¨4¯?©?Ó:Ø#×*Ñ*¨4Ö0ä)Ø!ä .Ü .Ü /Ü 0ð	÷ ñ  ô #1ð#MÜMQÐRWË[ÈMð![ó#ð ð $×*Ñ*Ø ŸK™K×3Ñ3°D·O±OÀEÇJÁJÑ4OÓPöñ' .ô. 2Ø—K‘K×&Ñ&ØØ×%Ñ%ó�ð !ŸK™K×-Ñ-×;Ñ;Ü×$Ñ$ {°AÐ&6ó�	ð #Ÿk™k×/Ñ/×=Ñ=Ü×$Ñ$ {°AÐ&6ó�ô
 # 9×#9Ñ#9Ô:óâ:˜ð —K‘K×%Ñ%×3Ñ3´H×4DÑ4DÀyÐRSÀnÖUÙ:ð ð ð )×0Ò0ó	ò 1˜ð �t—{‘{×(Ñ(×6Ñ6Ü ×(Ñ(¨;¸Ð*:óò ñ 1ð	 ð ÷S Mð^ ×&Ñ&Ñ.Ü$Ð%JÓKÐKä+0°Ó+;ˆD×#Ñ#Ô(Ø-8ˆD×#Ñ#Õ*ðO &=Ð ùò(÷ 2Ö1üòLùò÷S MÕLúsS   Ï`*Ï (`%ÐC;`*ÔA&`*Ö$F aÝA `<ÞaÞAaßaà%`*à*
`9à<
aá
ac                 ó¶  • U R                   S:X  a  [        SU S35      eUR                  U R                  La  [        S5      eU R                  R	                  S 5         U R                  R                  UR                  UR                  S9nS S S 5        [        R                  " UR                  5      Wl	        X R                  U'   g ! , (       d  f       NB= f)Nrä   zCannot add placeholder z to root moduleú6expected x.graph to be flat_graph, got different graph)Ú	type_expr)r÷   rd   r}   rä  rþ  rœ   rï   re   rý  rø   r÷  )rv   rN  Úplaceholder_nodes      r5   Úadd_placeholderÚ_ModuleFrame.add_placeholder   s¬   € Ø�8‰8�r‹>Ü Ð#:¸1¸#¸_Ð!MÓNÐNØ�7‰7˜$Ÿ/™/Ò)Ü ØHóð ð �Z‰Z×(Ñ(¨Õ.Ø#Ÿz™z×5Ñ5°a·f±fÈÏÉÐ5ÐOÐ÷ /ô !%§	¢	¨!¯&©&Ó 1ÐÔØ&6× Ñ  Ò#÷ /Õ.ús   Á/C
Ã

Cc                 óÈ  • [         R                  " [        R                  R                  U R
                  UR                  5      n[         R                  " [        R                  R                  U R
                  UR                  5      nU R                  R                  UR                  X#5      n[        R                  " UR                  5      Ul        X@R                  U'   U$ rQ   )rÙ   Útree_map_onlyr?   r”   r±  rÿ  r—   r‰   r}   ry  rK   rý  rø   rö  )rv   rN  r—   r‰   r¤   s        r5   Úcopy_sym_call_functionÚ#_ModuleFrame.copy_sym_call_function  s�   € ô ×#Ò#¤E§H¡H§M¡M°4×3CÑ3CÀQÇVÁVÓLˆÜ×%Ò%¤e§h¡h§m¡m°T×5EÑ5EÀqÇxÁxÓPˆØ�z‰z×'Ñ'¨¯©°$Ó?ˆÜ—I’I˜aŸf™fÓ%ˆŒ	Ø�‰�aÑØˆr4   c                 óp  • UR                   U R                  La  [        S5      eXR                  ;   a  U R                  U   $ U R	                  SU S35        XR
                  ;   a  U R
                  U   $ UR                  S:X  d&  U R                  R                  U R                  5      cš  U R                  U5        U R                  bm  U R                  R                   R                  U R                  5         U R                  R                  SU R                  R                  U5      5        S S S 5        U R
                  U   $ UR                  S:X  Gas  UR                   ["        R$                  R&                  R(                  R*                  ["        R$                  R&                  R,                  R.                  ["        R$                  R&                  R0                  R*                  ["        R$                  R&                  R2                  R4                  ["        R$                  R&                  R6                  R.                  ["        R$                  R&                  R8                  R.                  4;   d5  [;        UR                   S5      (       a:  UR                   R<                  S:X  a   U R?                  U5        U R                  U   $ U R                  R                  U R                  5      b  U R@                  RC                  X5      $ [E        S	UR                   S
U 35      e! , (       d  f       GNþ= f)Nr  zremap_input(r¸  rœ   r   ry  r,   Ú	_operatorz(Could not run remap_input() on op type: z
 for node )#r}   rä  rd   rö  r;  r÷  r¡   rö   rb  r÷   r  rî  rë  rþ  Ú
insert_argrÿ  rK   r?   r†  r‡  Úsym_sizerC   rV   r‰  ÚunbindÚsumÚdim_IntListÚviewÚdiffr[   r,   r  rþ   Úreadr¨  )rv   rN  s     r5   rÿ  Ú_ModuleFrame.remap_input  sS  € Ø�7‰7˜$Ÿ/™/Ò)Ü ØHóð ð —‘ÓØ—=‘= Ñ#Ð#Ø�
‰
�\ !  AÐ&Ô'Ø×(Ñ(Ó(Ø×+Ñ+¨AÑ.Ð.à�D‰D�MÓ! T×%;Ñ%;×%?Ñ%?ÀÇÁÓ%IÑ%Qð × Ñ  Ô#Ø×&Ñ&Ñ2ð —[‘[×&Ñ&×7Ñ7¸×8OÑ8OÕPØ×+Ñ+×6Ñ6°q¸$¿+¹+×:QÑ:QÐRSÓ:TÔU÷ Qà×+Ñ+¨AÑ.Ð.Ø�T‰T�_Ô$Ø�H‰Hä—	‘	—‘×'Ñ'×+Ñ+Ü—	‘	—‘×#Ñ#×+Ñ+Ü—	‘	—‘×%Ñ%×)Ñ)Ü—	‘	—‘×"Ñ"×.Ñ.Ü—	‘	—‘×#Ñ#×+Ñ+Ü—	‘	—‘×#Ñ#×+Ñ+ðóô ˜Ÿ™ ,×/Ñ/°A·H±H×4GÑ4GÈ;Ó4Vð ×'Ñ'¨Ô*Ø—=‘= Ñ#Ð#Ø×#Ñ#×'Ñ'¨¯©Ó1Ñ=ð —:‘:—?‘? 4Ó+Ð+äØ:¸1¿4¹4¸&À
È1È#ÐNóð ÷1 QÖPús   Ã96L&Ì&
L5c                 ón  • S nU R                   R                  5        H/  nUR                  R                  S0 5      nUc  UnM&  X1:w  d  M-  0 n  O   U(       a_  U R                  c  [        S5      eXR                  R                  S'   U R                   R                  5        H  nUR                  S	 M     g g )NÚcustomzBparent_call_module must not be None when uplifting custom metadata)rö  r   rø   rb  rî  rd   )rv   Úcustom_metar¤   Ú	curr_metas       r5   Úuplift_common_custom_metadataÚ*_ModuleFrame.uplift_common_custom_metadataK  s®   € àˆØ—M‘M×(Ñ(Ö*ˆDØŸ	™	Ÿ™ h°Ó3ˆIØÑ"à'�ÙàÕ'Ø �Ùñ +ö à×&Ñ&Ñ.Ü$ØXóð ð 6A×#Ñ#×(Ñ(¨Ñ2ØŸ™×,Ñ,Ö.�Ø—I‘I˜hÒ'ò /ð r4   c           	      óh  ^ ^• T R                   R                  T R                  S 5        / nT R                  R	                  T R
                  5      nUGb   T R                  Gb  UR                   H�  n[        U[        [        [        [        [        45      (       aW  UR                  T R                  ;   a*  UR!                  T R                  UR                     5        Mq  UR!                  S 5        M„  [#        SU 35      e   U 4S jm[%        T R&                  [)        U4S jU 5       5      UR*                  5      n[-        T R                  R&                  T R.                  UR*                  5      nUnO”/ nT R0                   Hb  nUR2                   HO  nUR                  T R                  ;  d  M  UR!                  U5        UR!                  T R0                  U   5          M`     Md     T R.                  n[5        U5      S:X  a  US   n[        U[6        [8        R:                  R<                  45      (       d  [?        S[A        U5       35      eT RB                  RE                  U5        Uc  g [        U[8        R:                  R<                  5      (       a  URF                  R	                  S5      O*U V	s/ s H  o™RF                  R	                  S5      PM     sn	URF                  S'   T RI                  5         [5        U5      S:X  a   Uc  UT R                  R0                  US   '   g [K        U5       Hw  u  p«Uc  M
  [8        R:                  RM                  U5      U
   RN                  nURF                  R	                  S5      URF                  S'   UT R                  R0                  U'   My     g s  sn	f )Nz'Unsupported data type for output node: c                 óð   >• U c  g TR                   U R                     nUTR                  ;   a  TR                  U   $ UTR                  ;   a  TR                  U   $ [	        SU  STR
                   35      e)NzCould not find output node z	. Graph: )ró  rï   rö  r÷  r¨  r}   )rx  Ú	seen_noderv   s     €r5   Úget_actual_output_nodeÚ=_ModuleFrame.finalize_outputs.<locals>.get_actual_output_node~  sx   ø€ Ø‘>Øà ŸO™O¨F¯K©KÑ8�	Ø §¡Ó-ØŸ=™=¨Ñ3Ð3Ø $×":Ñ":Ó:Ø×3Ñ3°IÑ>Ð>ä&Ø5°f°X¸YÀtÇzÁzÀlÐSóð r4   c              3   ó4   >#   • U  H  nT" U5      v •  M     g 7frQ   r*   )rS   rx  r*  s     €r5   rW   Ú0_ModuleFrame.finalize_outputs.<locals>.<genexpr>Ž  s   øé € ÐPÂ<¸Ñ,¨V×4Ð4Â<ùs   ƒr   r   z8expected graph_outputs to be list or torch.fx.Node, got Úval)(rê  rg  r÷   rö   rb  r¦  rë  rÉ   rb   r   r   r   r   r   rï   ró  r¢   r¨  rÓ  r)   rB   rU  rÑ  rî  rö  Úusersr’   r�   r?   r”   r±  rd   re   r}   rx  rø   r%  r  ÚProxyr¤   )rv   Úorig_outputsr?  rx  Útree_out_nodeÚ
parent_outÚgraph_outputsÚ	orig_nodeÚ	user_nodeÚor6  Úorig_outputÚ	proxy_outr*  s   `            @r5   Úfinalize_outputsÚ_ModuleFrame.finalize_outputsc  s  ù€ Ø×Ñ× Ñ  §¡¨4Ô0àˆà×*Ñ*×.Ñ.¨t¯~©~Ó>ˆ	ØÒ  T§[¡[Ò%<Ø#×+Ô+�ÜØä&Ü&Ü'Ü(Ü(ð÷	ñ 	ð —{‘{ d§o¡oÓ5Ø$×+Ñ+¨D¯O©O¸F¿K¹KÑ,HÖIà$×+Ñ+¨DÖ1ä&ØAÀ&ÀÐJóð ñ! ,õ(ô 0Ø—‘ÜÔPÁ<ÓPÓPØ×"Ñ"óˆMô
 0FØ—‘×"Ñ" D×$;Ñ$;¸Y×=OÑ=Oó0ˆJð BO‰MàˆMà!Ÿ]œ]�	Ø!*§¤�IØ —~‘~¨T¯_©_Õ<à$×+Ñ+¨IÔ6Ø%×,Ñ,¨T¯]©]¸9Ñ-EÔFÚó "1ñ +ð ×0Ñ0ˆJÜ�=Ó! QÓ&Ø -¨aÑ 0�ä˜-¬$´·±·±Ð)>×?Ñ?Ü ØJÌ4ÐP]ÓK^ÐJ_Ð`óð ð 	�
‰
×Ñ˜-Ô(ð ÑØô ˜-¬¯©¯©×7Ñ7ð ×Ñ×"Ñ" 5Ô)á-:Ó;ª]¨—&‘&—*‘*˜UÖ#©]Ñ;ð 	�‰˜Ñð
 	×*Ñ*Ô,äˆ|Ó Ó! iÑ&7Ø4>ˆD�K‰K× Ñ  ¨a¡Ò1ä"+¨LÖ"9‘�ØÑ&Ùä!ŸH™HŸN™N¨:Ó6°qÑ9×>Ñ>�	Ø(3×(8Ñ(8×(<Ñ(<¸UÓ(C�	—‘˜uÑ%Ø4=�—‘×$Ñ$ [Ó1ò #:ùò <s   Ê5$N/c                 óØ   • U R                  SUR                  5       5        U R                  R                  XR                  5      U R
                  U'   XR                  UR                  '   g )NÚcopying)r;  Úformat_noder}   Ú	node_copyrÿ  rö  ró  rï   r£   s     r5   Ú	copy_nodeÚ_ModuleFrame.copy_nodeÁ  sL   € Ø�
‰
�9˜d×.Ñ.Ó0Ô1Ø"Ÿj™j×2Ñ2°4×9IÑ9IÓJˆ�‰�dÑØ%)�‰˜Ÿ	™	Ò"r4   c                 ó  • [        U R                  R                  5       H>  u  pU R                  XR                  R                  S5      UR                  5       5        M@     SnU R                  U   nUR                  S:X  a7  U R                  U5        US-  nU R                  U   nUR                  S:X  a  M7  U R                  U5        U R                  R                   H&  nUR                  S:X  d  M  U R                  U5        M(     g )Nr˜  r   rœ   r   rx  )
r  rä  r    r;  rø   rb  r>  r¡   r@  Úrun_from)rv   r6  r¤   Únode_idxs       r5   Ú	run_outerÚ_ModuleFrame.run_outerÆ  sÐ   € Ü  §¡×!6Ñ!6Ö7‰GˆAØ�J‰J�qŸ)™)Ÿ-™-Ð(9Ó:¸D×<LÑ<LÓ<NÖOñ 8ð ˆØ�z‰z˜(Ñ#ˆØ�g‰g˜Ó&Ø�N‰N˜4Ô Ø˜‰MˆHØ—:‘:˜hÑ'ˆDð �g‰g˜Õ&ð
 	�‰�hÔð —O‘O×)Ô)ˆDØ�w‰w˜(Õ"Ø—‘˜tÖ$ò *r4   c                 ó>   • U R                   (       a  [        U0 UD6  g g rQ   )rõ  r;  )rv   r—   r‰   s      r5   r;  Ú_ModuleFrame.printÙ  s   € Ø�<�<ä�4Ð"˜6Ó"ð r4   c                 óD  • SnU[        U R                  5      :  Ga}  U R                  U   nUR                  S:X  a  [        SU 35      eU R	                  5         U R	                  SXR                  5       5        U R	                  U R                  5        [        U R                  5      nUR                  S:X  a  US:X  a  U$ U R                  5         U$ [        UR                  R                  S0 5      5      S:X  a  [        SU 35      eUR                  S   nSS	KJn  [        U5      S:X  a  Xe;   a  U R                  nOeUR                  S   R                  5        VV	V
s/ s H9  u  nu  pšU	U	(       a  U
OS S
U;   a  [        UR                  S
5      S   5      OS4PM;     nn	nn
US U U R                  :w  aI  U R                  5         U R	                  SU R                   5        U R	                  U R"                  5        U$ Uc  [        S5      e[%        U R                  U5      (       aÐ  Xt   nU R	                  SU5        ['        UR                  S   R)                  5       5      U   n[+        U R,                  U R                  U R.                  U R0                  U R2                  U R4                  U U R                  U/-   UR                  S
5      S   U R6                  5
      R9                  U5      nUS-  nGMø  XpR                  :w  a  [        SU SU R                   35      eUR                  S:X  a2  U R2                  U R:                     R=                  UR>                  5        U RA                  U5        US-  nU[        U R                  5      :  a  GM|  g g s  sn
n	nf )Nr   rœ   z%unexpected placeholder node at index ÚSTEPrx  r   r˜  z(Unable to find nn_module_stack for node )Ú_EMPTY_NN_MODULE_STACK_KEYrð   rç  Ú	outliningz"node_module_stack must not be NonezCreating new stack frame forzexpected node_module_stack z to equal module_stack r¶  )!r’   r    r¡   rd   r;  r>  rå  r:  rø   rb  r¨  Ú(torch._export.passes._node_metadata_hookrK  ra   rC   rY   r÷   r}   rš  r�   Úkeysrã  rä  ró  r  r  rê  rö   rC  r¦  r  rK   r@  )rv   rD  Ú
module_idxr¤   Údepthr˜  rK  Únode_module_stackrT   r^  r~   Únext_moduleÚnext_module_keys                r5   rC  Ú_ModuleFrame.run_fromÞ  sK  € Øˆ
àœ˜TŸZ™Z›Ô(Ø—:‘:˜hÑ'ˆDØ�w‰w˜-Ó'Ü$Ð'LÈXÈJÐ%WÓXÐXà�J‰JŒLØ�J‰J�v˜x×)9Ñ)9Ó);Ô<Ø�J‰J�t×(Ñ(Ô)Ü˜×)Ñ)Ó*ˆEØ�w‰w˜(Ó"Ø˜A“:ð $�Oð ×%Ñ%Ô'Ø�ä�4—9‘9—=‘=Ð!2°BÓ7Ó8¸AÓ=Ü"Ð%MÈdÈVÐ#TÓUÐUà"Ÿi™iÐ(9Ñ:ˆOõô
 �OÓ$¨Ó)Ø.ÓAð %)×$5Ñ$5Ñ!ð *.¯©Ð3DÑ)E×)KÑ)KÔ)Mõ%ò *N™˜™:˜Dð	 Þ"™¨Ø14¸³œ˜AŸG™G C›L¨Ñ,Ô-¸qóñ
 *Nð "ò %ð !  %Ð(¨D×,=Ñ,=Ó=ð ×%Ñ%Ô'Ø—
‘
˜;¨¯©Ô1Ø—
‘
˜4Ÿ:™:Ô&Ø�à Ñ(Ü$Ð%IÓJÐJä˜$×+Ñ+Ð->×?Ñ?ð 0Ñ6�Ø—
‘
Ð9¸;ÔGô #' t§y¡yÐ1BÑ'C×'HÑ'HÓ'JÓ"KÈEÑ"R�Ü'Ø—O‘OØ—J‘JØ—O‘OØ×%Ñ%Ø—O‘OØ×(Ñ(ØØ×%Ñ%¨¨Ñ5Ø#×)Ñ)¨#Ó.¨qÑ1Ø×*Ñ*ó÷ ‘(˜8Ó$ð ð ˜a‘�
Úð !×$5Ñ$5Ó5Ü$Ø1Ð2CÐ1DÐD[Ð\`×\mÑ\mÐ[nÐoóð ð �w‰w˜*Ó$à—‘ §¡Ñ/×3Ñ3°D·K±KÔ@à�N‰N˜4Ô à˜‰MˆHð} œ˜TŸZ™Z›×(Ð(ùôF%s   Å"A N)r¦  rê  rä  r÷   r}   rþ   r)   rö   rô  rå  rö  r÷  r    rë  rî  r  r  ró  rõ  rQ   )rs   N)r+   r,   r-   r.   r?   r”   r²   rB   r±  r�   ry   rC   rÛ   r   r�   r!   r�   r  r  rÿ  r%  r:  r@  rE  r;  rC  r3   r*   r4   r5   rã  rã  I  sÅ   † ð CGñt9à—H‘H—N‘Nðt9ð �U—X‘X—]‘] CÐ'Ñ(ðt9ð ˜5  c¨D¡j°#Ð!5Ñ6Ñ7ðt9ð   Ð%8Ð 8Ñ9ðt9ð —‘×$Ñ$Ð'8Ñ8¸4Ñ?õt9òl7òò,ô\(ò0\>ò|*ò
%ò&#õ
ar4   rã  c                   óÊ   • \ rS rSr% \\S'   \R                  R                  \S'   \R                  R                  \S'   \\S'   \\S'   \R                  R                  \S'   Srg	)
rø  iB  r¥  rí  rî  r÷   rï  r)   r*   N)r+   r,   r-   r.   ry   rA   r?   r]   r^   r”   r±  rC   r3   r*   r4   r5   rø  rø  B  s;   ‡ àƒOØ—8‘8—?‘?Ó"ØŸ™Ÿ™Ó%Ø	ƒHØƒMØ�H‰H�O‰OÖr4   rø  Ú
orig_graphÚroot_modulec                 óF  • 0 n[        [        5      n[        [        5      n0 n[        U [	        U R
                  5      UUUUS S/SUR                   Vs0 s H-  nUR                  (       d  M  UR                  UR                  _M/     snUS9R                  5         X44$ s  snf )N)rä   Nr   rä   )r)   )
r   r�   rZ   rã  rB   r    rö   r?  r÷   rE  )rV  rW  ró  r  r  rê  r  s          r5   rÿ   rÿ   L  s¥   € Ø+-€JÜ5@ÄÓ5F€LÜ&1´#Ó&6€JØ24€OÜØÜˆj×ÑÓØØØØØØ	ˆØ
ð %×6Ò6ó	
â6�Ø��ó 'ˆE�I‰I�u—‘Ò&Ù6ñ	
ð
 ñ÷  �i„kØÐ#Ð#ùò	
s   ÁBÁ,Brë  r7  rj   c                 ó.  • US:X  aY  [        UR                  5       5      SS   H9  n[        X5      b  M  [        X[        R
                  R                  5       5        M;     / n[        U R                  R                  5       5       HM  u  pVUc  M
  X%-   n[        XaUR                  S5      S   S-   S9  [        X5        UR                  X   XV45        MO     UR                  [        R                  " S5      S9  U H  u  punU R!                  XV5        M     g )Nrä   r   rð   r   rO   )rj   )r¼  )r�   rN  rÖ  rÛ  r?   r]   r^   r`   ra   r  rY   Údelattrr¢   ÚsortrÈ  Ú
itemgetterÚregister_module)rë  r7  rj   r÷   rú  rï   Úchildr.  s           r5   r  r  e  sê   € ð �ƒ|Ü˜	Ÿ™Ó(Ó)¨!¨"Ó-ˆCÜ˜fÓ*Ó2Ü˜v¬E¯H©H¯O©OÓ,=Ö>ñ .ð €HÜ˜FŸO™O×1Ñ1Ó3Ö4‰ˆØ‰=ÙØ‰mˆÜ˜E°S·Y±Y¸s³^ÀAÑ5FÈÑ5LÒMÜ�ÔØ�‰˜™¨Ð5Ö6ñ 5ð ‡M�M”h×)Ò)¨!Ó,€MÑ-Û"‰ˆ�Ø×Ñ˜tÖ+ò #r4   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	rý   i{  a  
Collect the intermediate values of mutations in a graph.

Example: in the following graph, suppose that buf_in and buf_out
are the input and output values of a buffer.

    buf_in = placeholder()
    ...
    ival1 = f0(buf_in, ...)  # inside self.n0(...)
    ...
    ival2 = f1(ival1, ...)  # inside self.n1(...)
    ...
    buf_out = f2(ival2, ...)  # inside self.n2(...)
    return buf_out, ...

Here ival1 and ival2 are intermediate values created inside
calls to n0 and n1 respectively, and used inside calls to
n1 and n2 respectively.
c                 ó,   • [        [        5      U l        g rQ   )r   rZ   Únode_names_by_fqnru   s    r5   r�   Ú_IVals.__init__�  s   € ä!,¬SÓ!1ˆÕr4   c                 ó‚   • [        U[        R                  R                  5      (       a  UR                  R
                  $ grE   )rb   r?   Ú_opsÚ
OpOverloadÚ_schemaÚ
is_mutable)rv   rK   s     r5   Ú_is_mutableÚ_IVals._is_mutable”  s,   € Ü�fœeŸj™j×3Ñ3×4Ñ4Ø—>‘>×,Ñ,Ð,Ør4   c                 ó´  • UR                   S:w  a  [        SUR                   < 35      eU R                  UR                  5      n[	        SUR                  U5        U(       dY  [        [        UR                  S   R                  5       5      5      u  pEU R                  U   R                  UR                  5        UR                  UR                  S   5      $ )z9
Read state corresponding to a given intermediate value.
ry  z,expected node.op to be 'call_function', got zChecking mutabilityr˜  r   )r¡   rd   rh  rK   r;  r~  r€  rø   r   ra  r  rï   rÿ  r—   )rv   Úmfr¤   Úbr÷   r.  s         r5   r  Ú_IVals.read™  s¯   € ð
 �7‰7�oÓ%Ü Ø>¸t¿w¹w¹kÐJóð ð ×Ñ˜TŸ[™[Ó)ˆÜÐ# T§[¡[°!Ô4Þô œ( 4§9¡9Ð->Ñ#?×#FÑ#FÓ#HÓIÓJ‰FˆCØ×"Ñ" 3Ñ'×+Ñ+¨D¯I©IÔ6Ø�~‰~˜dŸi™i¨™lÓ+Ð+r4   c           
      ó<  • U Hÿ  nU Hõ  nUR                   R                  nU R                  UR                     nUR                   Vs/ s H  ofR
                  U;   d  M  UPM     nnU H�  nUR                  U5         UR                  S[        R                  R                  R                  R                  UR                  S   U45      n	[        R                  " UR                  5      U	l        SSS5        M’     M÷     GM     gs  snf ! , (       d  f       M²  = f)zD
Update states corresponding to intermediate values that were read.
ry  r   N)r)   r}   ra  r÷   r    rï   r„  r…  r?   r†  r‡  rˆ  r‰  r—   rý  rø   )
rv   Ú
partitionsÚshared_submodulesr  r}   Ú
node_namesr4  r    r¤   r{  s
             r5   r_   Ú_IVals.update«  sÞ   € ó ",ÐÛ*�ØŸ™×*Ñ*�Ø!×3Ñ3°E·I±IÑ>�
Ø$)§K¢KÓH¢K˜q·6±6¸ZÑ3GŸ¡K�ÐHÛ!�Dð ×.Ñ.¨tÕ4Ø#(×#4Ñ#4Ø+Ü!ŸI™IŸN™N×0Ñ0×8Ñ8Ø!ŸY™Y q™\¨4Ð0ó$˜ô
 )-¯	ª	°$·)±)Ó(<˜œ÷ 5Ñ4ó "ô	 +ò ",ùò I÷ 5Ö4ús   ÁDÁDÁ=A4D	Ä
D)ra  N)
r+   r,   r-   r.   r>   r�   rh  r  r_   r3   r*   r4   r5   rý   rý   {  s   † ñò(2òò
,õ$=r4   rý   r  c                 óž   • UR                  5        H9  u  p4U(       a  [        X5      OUnU H  n[        X5      n[        XVU5        M     M;     g rQ   )ra   r   rº   r\   )rÁ  rW  r  r¦  Únamesr)   rï   r.  s           r5   r  r  À  sF   € ð
 '×,Ñ,Ö.Ñˆ	Þ6?”˜;Ô2À[ˆÛˆDÜ˜"Ó#ˆCÜ�F #Ö&ó ò /r4   c                 óÄ  • 0 nU  GHV  n[        U5       GHB  u  p4[        UR                  UR                  5      n[	        UR
                  U5      nSnUS U  Hû  n[        UR                  UR                  5      (       d  M*  UR                  n	UR                  UR                  :X  a…  UR                  S5      Gt p«[        Xš5      R                  R                  U5        [        UR                  UR                  5      n[	        UR
                  U5      nXÔR                  l        XÁU'     GM  U(       a  MÞ  U	R                  XhR                  5        SnMý     GME     GMY     U$ )NFrO   T)r  rf  r÷   rï  r«  r¥  rÀ  r)   rí  rY   r   r`   rg  rî  rK   rh  )ro  r5  rp  r6  r  r¦  rK   ÚdeduplicatedÚseenrë  rj   rï   Úseen_child_fqnÚseen_targets                 r5   r  r  Ì  s(  € Ø ÐÜ'ÐÜ!Ð"3×4‰HˆAÜ" 5§9¡9¨e¯n©nÓ=ˆIÜ& u×'7Ñ'7¸ÓCˆFØ ˆLà)¨"¨1Ó-�Ü+¨D¯K©K¸¿¹×FÓFØ"×0Ñ0�Fð —x‘x 5§9¡9Ó,ð
 )/¯©°SÓ(9™˜Ü/°Ó?×HÑH×LÑLÈTÔRÜ)3°D·H±H¸d¿m¹mÓ)L˜Ü&7Ø!×,Ñ,¨nó'˜ð ;F×0Ñ0Ô7Ø=K°	Ñ:Ûß)˜\ð ×,Ñ,¨V·[±[ÔAØ'+šô= .ô 5ñ (ðL #Ð"r4   r0  ÚscopeÚmodule_id_to_inputs_removedc           	      ó@  ^^• Tc  [        [        5      m[        U 5      T;   a  [        U 5      T[        U 5         0$ U R                  R	                  5        HN  u  nm[        [        ST5      UX$/-   T5      nUR	                  5        H  u  pgTU   R                  U5        M     MP     [        U SS5      nUb  [        UR                  5      S:X  a  T$ [        U[        R                  R                  5      (       d  [        S[!        U5       35      e[#        [%        S UR                  5      5      n	[        U	5      S:X  a  SOU	S   n
[%        S UR                  5      nU HW  n['        XR(                  5      mTc  M  [        T5      T;   d  M.  [+        [%        UU4S	 jUR,                  5      5      Ul        MY     0 nU	 H  nUR.                  U;  a  M  SnXR.                      HM  nUR1                  S
5      nUS[        U5       U Vs/ s H  nUR1                  S5      S   PM     sn:X  d  MK  Un  O   Uc  M{  XíU'   M�     [        5       nUR	                  5        Hõ  u  pÎ[        UR2                  5      S:”  a«  U[        U5      S n[5        U U5      n[        U[        R6                  [        R8                  45      (       d  [        S[!        U5       35      eUR;                  U
5         UR=                  SS
R?                  U5      5      nSSS5        URA                  WSS9  URC                  U5        URE                  UR.                  5        M÷     [        U [F        5      (       a  U RI                  5         [        U 5      U0$ s  snf ! , (       d  f       N…= f)aæ  Sink params, buffers, and constants from graph inputs into get_attr nodes.

Exported modules are purely functional, so they pass their parameters and
buffers in as inputs to the graph.

To replicate eager's semantics, we need to get them from the module state
via get_attr instead.

module: GraphModule, potentially containing nested submodules.
inputs_to_state: mapping graph input names to the corresponding key in the state_dict.
scope: tracks where we are in the module hierarchy, so that we can emit the
    right `getattr(self, "foo.bar")` calls, etc.
module_id_to_inputs_removed: records inputs removed by child modules, mapping
    the module object id to the list of placeholder node names in the child module
    that were removed.
Nztorch.nn.Moduler}   r   z)expected graph to be torch.fx.Graph, got c                 ó    • U R                   S:H  $ )Nrœ   ©r¡   ©r4  s    r5   r|  Ú_sink_params.<locals>.<lambda>'  s   €  1§4¡4¨=Ò#8r4   rç  c                 ó    • U R                   S:H  $ )NrÁ   r~  r  s    r5   r|  r€  +  s   € ¨¯©°Ò)>r4   c                 ó:   >• U R                   T[        T5         ;  $ rQ   )rï   rá   )r4  r{  Ú	submodules    €€r5   r|  r€  3  s   ø€ ˜aŸf™fÐ,GÌÈ9ËÑ,VÒVr4   rO   rð   zBexpected state_attr to be torch.Tensor or torch.ScriptObject, got r¶  T)Úpropagate_meta)%r   rZ   rá   r`   ra   r  r
   r_   rº   r’   r    rb   r?   r”   r²   rd   re   r�   Úfilterr   rK   rB   r—   rï   rY   r/  r   rg   ri   r„  r…  rÇ   rŠ  Ú
erase_noder  r   r¥   )r)   r0  rz  r{  rï   Úsubmod_id_to_inputs_removedrT   r•  r}   rü  Úthe_last_inputÚcall_module_nodesr¤   Úinputs_to_state_of_scopeÚ
state_nameÚsnÚsn_splitrN  Úinputs_removedÚ	attr_pathÚ
state_attrr{  rƒ  s      `                  @r5   r  r  ÷  s:  ù€ ð, #Ñ*Ü&1´#Ó&6Ð#ä	ˆ&ƒzÐ0Ó0Ü�6“
Ð7¼¸6»
ÑCÐDÐDð "Ÿ?™?×0Ñ0Ö2‰ˆˆiÜ&2ÜÐ" IÓ.ØØ�F‰NØ'ó	'
Ð#ð 0×5Ñ5Ö7‰DˆAØ'¨Ñ*×1Ñ1°!Ö4ó 8ñ 3ô �F˜G TÓ*€EØ�}œ˜EŸK™KÓ(¨AÓ-à*Ð*ä�eœUŸX™XŸ^™^×,Ñ,ÜÐHÌÈeËÈÐVÓWÐWä”&Ñ8¸%¿+¹+ÓFÓG€FÜ  ›[¨AÓ-‘T°6¸"±:€Nô Ñ>ÀÇÁÓLÐÛ!ˆÜ˜f§k¡kÓ2ˆ	ð Ó ¤R¨	£]Ð6QÕ%QÜÜÝVØ—I‘IóóˆDŽIñ "ð @BÐÛˆØ�9‰9˜OÓ+Ùàˆ
Ø!§)¡)Ô,ˆBØ—x‘x “}ˆHØ˜œ#˜e›*Ð%Á5Ó)IÂ5¸a¨!¯'©'°#«,°q¬/Á5Ñ)IÕIØ%�
Ùñ	 -ð ÑÙà)3 Ó&ñ/ ô4  #›u€Nà4×:Ñ:Ö<ÑˆÜˆt�z‰z‹?˜QÓØ"¤3 u£: <Ð0ˆIÜ0°¸ÓCˆJÜ˜j¬5¯<©<¼×9KÑ9KÐ*L×MÑMÜ$ØXÔY]Ð^hÓYiÐXjÐkóð ð
 ×&Ñ& ~Õ6Ø ×,Ñ,¨Z¸¿¹À)Ó9LÓM�÷ 7ð ×&Ñ& xÀÐ&ÑEà×Ñ˜ÔØ×Ñ˜4Ÿ9™9Ö%ñ! =ô$ �&Ô+×,Ñ,Ø�‰Ôäˆv‹J˜Ð'Ð'ùòU *J÷> 7Õ6ús   ÈN

Ë."NÎ
N	)TrQ   )rä   )gr×   rý  ÚloggingrÈ  rß  Úcollectionsr   Úcollections.abcr   Ú
contextlibr   r   Údataclassesr   Úenumr   Útypingr	   r
   r?   Útorch.fx._pytreer”   Ú_pytreerÎ  Útorch.utils._pytreeÚutilsrÙ   Ú"torch._library.fake_class_registryr   Útorch.exportr   Útorch.export._tree_utilsr   Útorch.export.exported_programr   r   r   r   r   r   r   r   Útorch.fx._symbolic_tracer   Útorch.fx.graph_moduler   r   r   r   r   Ú_remove_effect_tokens_passr   Ú	getLoggerr+   r›  Ú__all__r$   r8   rF   rH   rg   ri   r]   r^   ry   Úboolrn   rp   r   r    ÚABCr   r!   r"   r²   rú   rü   rû   rš  r«  rÀ  rÅ  r�   r±  rÌ  rÑ  rÓ  rÖ  rÛ  rC   rf  rR   rã  rø  rÿ   rÛ   r  rý   rZ   r  r  r�   r  r*   r4   r5   Ú<module>r§     s´  ðã 
Û Û Û Û 	Ý #Ý $Ý %Ý Ý !Ý ß ã ß $Ð $ß $Ð $Ý ?Ý (Ý 3÷	÷ 	ó 	õ <ß UÑ Uß 7å =ð ×Ò˜Ó!€ò€ô�ô ñ �$Ñ÷ð ó ðð Ð ð ñ(ó ð(ð" ñ=0Ø�l‰l˜U×/Ñ/Ñ/°%·(±(·/±/ÑAð=0à�x‰x�‰ð=0ð ð=0ð ð	=0ð
 õ=0÷@	ñ 	ô\
˜¨¯©¯©ô \
ô~." .°%·(±(·/±/ô ."ôb�c—g‘gô ô,S
˜¨¯©¯©ô S
ðn JNñ!Øð!Ø0?À$Ñ0Fð!àõ!ðHH)Ø�8‰8�>‰>ðH)à)ðH)ð 
ôH)ðV˜UŸX™XŸ^™^ð °°d±
ô ò$òNRð
6 #ð 6°#ð 6¸#ô 6ð$6 §¡§¡ð 6°E·H±H·O±Oô 6ðB�%—(‘(—/‘/ð ¨Cô ð˜%Ÿ(™(×.Ñ.ð ¸¿¹¿¹ô ðRØ�‰×ÑÐ0Ñ0Ð3DÑDðRà
‡X�X‡]�]ôRðMØ�‰×ÑÐ0Ñ0Ð3DÑDðMà
‡X�X‡]�]ôMð%˜Ÿ™Ÿ™ð %°ô %ð* >Bñ	)Ø	�‰�‰ð)àð)ð —8‘8—?‘?ð)ð ˜S˜E 5§8¡8§?¡?Ð2Ñ3°dÑ:õ	)ð41�Sð 1˜Sð 1 Sô 1ðJ˜Sð J¨ð J°ô J÷
vñ vðr ÷ð ó ðð$ E§H¡H§N¡Nð $ÐARô $ð4 GIñ,Ø�H‰H�O‰Oð,Ø(,¨S°#¨X©ð,Ø@Cõ,÷,B=ñ B=ðJ	'Ø�‰×Ñð	'à"ð	'ð �S˜#˜c™(�]Ñ#ô	'ò(#ð^ ?Cñ	t(Ø�H‰H�O‰Oðt(à˜#˜t C™y˜.Ñ)ðt(ð �‰9ðt(ð "& c¨3¨s©8 mÑ!4°tÑ!;ö	t(r4   