Ë
    g^(hrõ  ã                   ó  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZ ddlZddlmZ ddlmc mZ ddlmZmZ ddlmZmZ ddlmZ ddlmZm Z  dd	l!m"Z"m#Z# dd
l$m%Z% ddl&m'Z'm(Z(m)Z)m*Z* ddlm+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z=m>Z> erddl?m@Z@  G d„ d«      ZA G d„ de5«      ZB G d„ de5«      ZC G d„ de5«      ZD G d„ deD«      ZE G d„ de5«      ZF G d„ d e5«      ZG G d!„ d"e5«      ZHd#„ ZI G d$„ d%e5«      ZJej–                   G d&„ d'«      «       ZL G d(„ d)e>«      ZM G d*„ d+e>«      ZN G d,„ d-e5«      ZO G d.„ d/e5«      ZP G d0„ d1e5«      ZQ G d2„ d3e5«      ZR G d4„ d5e5«      ZS G d6„ d7e5«      ZT ejª                  d¬8«      d9„ «       ZV ejª                  d¬8«      d:„ «       ZW G d;„ d<e5«      ZX G d=„ d>e5«      ZY G d?„ d@e5«      ZZ G dA„ dBe5«      Z[ G dC„ dDe5«      Z\ G dE„ dFe5«      Z] G dG„ dHe5«      Z^ G dI„ dJe^«      Z_ G dK„ dLe^«      Z` G dM„ dNe^«      Za G dO„ dPe^«      Zb G dQ„ dRe^«      ZcejÈ                  ebejÊ                  ebejÌ                  eciZg G dS„ dTe5«      Zh G dU„ dVe5«      Zi G dW„ dXe5«      Zjy)YaÎ  
This module contains miscellaneous variable tracker implementations for various Python types
and features used in Dynamo's symbolic execution. These classes help track and propagate
information about different kinds of variables during graph capture.

Key classes include:
- SuperVariable: Handles super() calls and method resolution
- ExceptionVariable: Tracks exception objects
- RandomVariable: Manages random number generators
- GetAttrVariable: Tracks attribute access
- MethodWrapperVariable: Handles method wrappers
- PythonModuleVariable: Tracks Python modules
- NumpyVariable: Handles numpy functions and types
- StringFormatVariable: Manages string formatting
- DebuggingVariable: Handles print and logging
é    N)ÚOptionalÚTYPE_CHECKINGé   )ÚconfigÚ	variables)Úcreate_call_functionÚcreate_instruction)Ú$do_not_convert_to_tracable_parameter)Úraise_observed_exceptionÚunimplemented)ÚGuardBuilderÚinstall_guard)Úunpatched_nn_module_init)Ú
AttrSourceÚGetItemSourceÚ
TypeSourceÚWeakRefCallSource)	Úcheck_unspec_or_constant_argsÚcmp_name_to_op_mappingÚidentityÚis_tensor_base_attr_getterÚistypeÚlist_methodsÚproxy_args_kwargsÚset_example_valueÚtuple_methodsé   )ÚVariableTracker)ÚConstantVariable)ÚNestedUserFunctionVariableÚUserFunctionVariable)Úcall_random_fnÚis_standard_setattrÚUserDefinedObjectVariable)ÚInstructionTranslatorc                   ó   — e Zd Zy)ÚNO_SUCH_SUBOBJN)Ú__name__Ú
__module__Ú__qualname__© ó    úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/variables/misc.pyr'   r'   ?   s   „ Ør,   r'   c                   ó|   ‡ — e Zd Zh ej                  £Zddˆ fd„Zˆ fd„Zdˆ fd„Zdddeddfd	„Z		 	 	 	 	 	 dd
„Z
ˆ xZS )ÚSuperVariableÚreturnc                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y ©Nr+   )ÚsuperÚ__init__ÚtypevarÚobjvar)Úselfr5   r6   ÚkwargsÚ	__class__s       €r-   r4   zSuperVariable.__init__H   s%   ø€ Ü‰ÑÑ"˜6Ò"ð ˆŒð
 ˆ�r,   c                 ó   •‡— ‰j                  ˆˆfd„«        ‰| j                  «       | j                  �. ‰| j                  «       ‰j                  t	        dd«      «       y ‰j                  t	        dd«      «       y )Nc                  óB   •—  ‰t        j                  t        «      «      S ©N)r   ÚBuiltinVariabler3   )r9   Úcodegens   €€r-   ú<lambda>z+SuperVariable.reconstruct.<locals>.<lambda>U   s   ø€ ¡g¬i×.GÑ.GÌÓ.NÓ&O€ r,   r   Fr   )Úadd_push_nullr5   r6   Úextend_outputr   )r7   r>   r9   s    `€r-   ÚreconstructzSuperVariable.reconstructT   s`   ù€ Ø×ÑÔOÔPÙ�—‘ÔØ�;‰;Ð"Ù�D—K‘KÔ Ø×!Ñ!Ô"6°q¸%Ó"@ÕAà×!Ñ!Ô"6°q¸%Ó"@ÕAr,   Útxr%   c           	      ó  •— | j                   sJ d«       ‚| j                  j                  «       }| j                   j                  «       }| j                   j                  rt        | j                   j                  «      nd }t        |t        «      r,| j                   j                  }| j                   j                  }d }|j                  }	 |j                  |«      dz   }t        |t        |«      «      D ]X  }	||	   j                   j#                  |t$        «      x}
sŒ)|
t$        usŒ2|r t'        t)        t'        |d«      |	«      |«      }|
|fc S  t+        d«       y # t        $ r t        t        ||«      |«      d fcY S w xY w)Nz1-arg super not implementedr   Ú__mro__zUnable to resolve super getattr)r6   r5   Úas_python_constantÚpython_typeÚsourcer   Ú
issubclassÚtypeÚvaluerE   ÚindexÚ
ValueErrorÚgetattrr3   ÚrangeÚlenÚ__dict__Úgetr'   r   r   r   )r7   rC   ÚnameÚsearch_typeÚtype_to_useÚtype_to_use_sourcerH   Ú
search_mroÚstart_indexrL   Úresolved_getattrr9   s              €r-   Ú_resolved_getattr_and_sourcez*SuperVariable._resolved_getattr_and_source]   sk  ø€ Ø�{Š{Ð9Ð9Ó9ˆ{Ø—l‘l×5Ñ5Ó7ˆð —k‘k×-Ñ-Ó/ˆà.2¯k©k×.@Ò.@ŒJ�t—{‘{×)Ñ)Ô*Àdð 	ô �k¤4Ô(ØŸ+™+×+Ñ+ˆKØ!%§¡×!3Ñ!3ÐàˆØ ×(Ñ(ˆ
ð	HØ$×*Ñ*¨;Ó7¸!Ñ;ˆKô ˜;¬¨J«Ó8ò 	4ˆEà#-¨eÑ#4×#=Ñ#=×#AÑ#AÀ$ÌÓ#WÐWÐÑWØ#¬>Ò9á)Ü!+Ü)Ü *Ð+=¸yÓ IÈ5óð !ó	"˜ð ,¨VÐ3Ò3ð	4ô 	Ð7Õ8øô+ ò 	Hô œ5 ¨kÓ:¸DÓAÀ4ÐGÒGð	Hús   ÃE Å!E?Å>E?rS   r   c                 ó  — | j                  | |«      \  }}t        j                  j                  |«      st	        | |«      S |r(t        |j                  t        j                  «      «       t        j                  j                  ||¬«      S )N©rH   )
rZ   r   r   Ú
is_literalÚGetAttrVariabler   Ú
make_guardr   ÚCONSTANT_MATCHÚcreate)r7   rC   rS   rK   rH   s        r-   Úvar_getattrzSuperVariable.var_getattrŒ   ss   € ð ×9Ñ9¸$ÀÓE‰ˆˆvÜ×)Ñ)×4Ñ4°UÔ;Ü" 4¨Ó.Ð.ÙÜ˜&×+Ñ+¬L×,GÑ,GÓHÔIÜ×)Ñ)×0Ñ0°¸vÐ0ÓFÐFr,   c                 óˆ  — | j                  | |«      \  }}|t        j                  u rt        t        «      S |t
        j                  j                  j                  u r¡| j                  }ddl	m
} t        |t        j                  «      rht        |j                  |«      rR|sP|sNt        «       5  t        j                   t"        |¬«      j%                  || j                  g|z   |«      cd d d «       S t'        d«       �nn| j                  j(                  r®t+        |d«      r¢|j,                  dk(  r“t        j.                  j1                  |«      rt|j2                  }	t+        |	d«      r%|	j4                  dk(  rt        j6                  |	«      }
n#|j8                  }t        j.                  |	|¬«      }
|
j;                  |d||«      S t        |t<        «      rVt        |j>                  t@        jB                  «      r2t        j                   |j>                  |¬«      j%                  |||«      S t        |tD        «      rat        |j>                  t@        jB                  «      r=t        jF                  |j>                  | j                  |¬«      j%                  |||«      S t        |t@        jB                  «      r6t        j                   ||¬«      j%                  || j                  g|z   |«      S t        |t@        jH                  «      r=t        jF                  |j>                  | j                  |¬«      j%                  |||«      S tK        |«      r:t        | j                  t        «      r  | j                  jL                  |g|¢­i |¤ŽS |t        jN                  u r¹|d	   }	 |jQ                  «       }|jT                  j                  jW                  | j                  «      st'        d| j                  › d|› d�«       |jT                  j                  jY                  | j                  |t        jZ                  «       «       t        j\                  d «      S t        | j                  t        j^                  «      r@|| j                  j`                  v r(| j                  jb                  j;                  ||||«      S t        | j                  t        jd                  «      r0|tf        v r(| j                  jh                  j;                  ||||«      S t        | j                  t        jj                  «      r0|tl        v r(| j                  jn                  j;                  ||||«      S |t        jp                  u rþ|d	   jr                  }|jT                  j                  ju                  | j                  |«      r^|jT                  j                  jw                  | j                  |d¬«      }t        |t        jZ                  «      rty        tz        |«       |S 	 | j                  jr                  jq                  |«      }| j(                  xr t}        | j(                  |«      }t        j€                  ||«      S t'        d|› �«       y # 1 sw Y   ŒxY w# tR        $ r t'        d
|› �«       Y �Œôw xY w# tz        $ r ty        tz        |«       Y Œ�w xY w)Nr   )ÚAttributeMutationNewr\   zsuper() nn.Module.__init__r(   Ú__new__r)   Úbuiltinsr   znon-const delattr attr: zdelattr(ú, z, ...)T)Ú
deleted_okznon-function or method super: )ArZ   Úobjectr4   ÚLambdaVariabler   ÚtorchÚnnÚModuler6   Úside_effectsrd   Ú
isinstancer   r$   Úmutation_typer
   r!   r   Úcall_functionr   rH   Úhasattrr(   ÚUserDefinedClassVariableÚis_supported_new_methodÚ__self__r)   r=   ÚmemberÚcall_methodÚstaticmethodÚ__func__ÚtypesÚFunctionTypeÚclassmethodÚUserMethodVariableÚ
MethodTyper#   Úmethod_setattr_standardÚ__delattr__rF   ÚNotImplementedErrorÚoutputÚis_attribute_mutationÚ
store_attrÚDeletedVariabler   ÚUserDefinedDictVariableÚ_dict_methodsÚ_dict_vtÚUserDefinedTupleVariabler   Ú	_tuple_vtÚUserDefinedListVariabler   Ú_list_vtÚ__getattribute__rK   Úhas_pending_mutation_of_attrÚ	load_attrr   ÚAttributeErrorr   r   Úbuild)r7   rC   rS   Úargsr8   Úinner_fnrH   r6   rd   Úuser_clsÚuser_cls_vtÚuser_cls_sourceÚattrÚ	attr_nameÚresultÚ
attr_values                   r-   rw   zSuperVariable.call_methodœ   st  € ð  ×<Ñ<¸TÀ4ÓHÑˆ�&Ø”v—‘Ñ&Ü!¤(Ó+Ð+ØœŸ™Ÿ™×1Ñ1Ñ1Ø—[‘[ˆFÝ;ô ˜6¤9×#FÑ#FÔGÜ˜v×3Ñ3Ð5IÔJÙ¡ä9Ó;ñ FÜ$×9Ñ9Ü0¸ôç#‘m B¨¯©¨¸Ñ(<¸fÓE÷Fñ Fô
 Ð:Ö;à�K‰K×ÒÜ˜ *Ô-Ø×!Ñ! YÒ.Ü×2Ñ2×JÑJÈ8ÔTà×(Ñ(ˆHÜ�x Ô.°8×3FÑ3FÈ*Ò3TÜ'×7Ñ7¸ÓA‘à"(§-¡-�Ü'×@Ñ@Ø _ô�ð ×*Ñ*¨2¨y¸$ÀÓGÐGÜ˜¤,Ô/´JØ×Ñœu×1Ñ1ô5
ô ×1Ñ1Ø×!Ñ!¨&ôç‰m˜B  fÓ-ð.ô ˜¤+Ô.´:Ø×Ñœu×1Ñ1ô4
ô ×/Ñ/Ø×!Ñ! 4§;¡;°vôç‰m˜B  fÓ-ð.ô ˜¤%×"4Ñ"4Ô5Ü×1Ñ1Ø ôç‰m˜B §¡ °Ñ 4°fÓ=ð>ô ˜¤%×"2Ñ"2Ô3Ü×/Ñ/Ø×!Ñ! 4§;¡;°vôç‰m˜B  fÓ-ð.ô ! Ô*¬zØ�K‰KÔ2ô0
ð 7�4—;‘;×6Ñ6°rÐK¸DÒKÀFÑKÐKØœ×+Ñ+Ñ+Ø˜‘7ˆDðAØ×.Ñ.Ó0�ð —9‘9×)Ñ)×?Ñ?ÀÇÁÔLÜ ¨¯©¨°R¸°v¸VÐDÔEà�I‰I×"Ñ"×-Ñ-Ø—‘˜T¤9×#<Ñ#<Ó#>ôô ×-Ñ-¨dÓ3Ð3ä�t—{‘{¤I×$EÑ$EÔFØ˜DŸK™K×5Ñ5Ñ5à—;‘;×'Ñ'×3Ñ3°B¸¸dÀFÓKÐKä�t—{‘{¤I×$FÑ$FÔGØœMÑ)à—;‘;×(Ñ(×4Ñ4°R¸¸tÀVÓLÐLä�t—{‘{¤I×$EÑ$EÔFØœLÑ(à—;‘;×'Ñ'×3Ñ3°B¸¸dÀFÓKÐKØœ×0Ñ0Ñ0ð ˜Q™Ÿ™ˆIØ�y‰y×%Ñ%×BÑBØ—‘˜Yôð Ÿ™×/Ñ/×9Ñ9Ø—K‘K °tð :ó �ô ˜f¤i×&?Ñ&?Ô@Ü,¬^¸RÔ@Ø�ð=Ø!Ÿ[™[×.Ñ.×?Ñ?À	ÓJ�
ð —[‘[ÒG¤Z°·±¸YÓ%GˆFÜ"×(Ñ(¨¨Z¸Ó@Ð@äÐ6°x°jÐAÕB÷Fð Fûôb 'ò AÜÐ 8¸¸Ð?×@ðAûôP "ò =Ü(¬¸Ö<ð=ús0   Â-:Y;ÎZ Ø%Z% Ù;ZÚZ"Ú!Z"Ú%[Û [r<   ©r0   N©rC   r%   ©r’   úlist[VariableTracker]r8   údict[str, VariableTracker]r0   r   )r(   r)   r*   r   Ú_nonvar_fieldsr4   rB   rZ   Ústrrb   rw   Ú__classcell__©r9   s   @r-   r/   r/   C   st   ø„ ðØ	×	'Ñ	'ð€Nö
ôBõ-9ð^GÐ5ð G¸Sð GÐEVó Gð rCð &ð	rCð
 -ðrCð 
÷rCr,   r/   c                   óf   ‡ — e Zd Zdˆ fd„Zdd„Zd„ Zd„ Zdddedefd	„Zˆ fd
„Z	ˆ fd„Z
d„ ZeZˆ xZS )ÚExceptionVariablec                 óÀ   •— t        ‰| �  di |¤Ž || _        || _        t	        d «      | _        t	        d «      | _        t	        d«      | _        t	        d «      | _        y )NFr+   )	r3   r4   Úexc_typer’   r   Ú__context__Ú	__cause__Ú__suppress_context__Ú__traceback__)r7   r§   r’   r8   r9   s       €r-   r4   zExceptionVariable.__init__  sZ   ø€ Ü‰ÑÑ"˜6Ò"Ø ˆŒØˆŒ	ô ,¨DÓ1ˆÔô *¨$Ó/ˆŒä$4°UÓ$;ˆÔ!ô .¨dÓ3ˆÕr,   c                 ó   — || _         y r<   )r¨   )r7   Úcontexts     r-   Úset_contextzExceptionVariable.set_context$  s
   € Ø"ˆÕr,   c                 ó   ‡ ‡— ‰j                  ˆˆ fd„«       ‰j                  ‰ j                  «       ‰j                  t	        ‰ j                  «      d«       dt
        dd fˆˆ fd„} |d«        |d«        |d«       y )	Nc                  óP   •— ‰ j                  d‰j                  j                  «      S )Nrf   )Úload_import_fromr§   r(   ©r>   r7   s   €€r-   r?   z/ExceptionVariable.reconstruct.<locals>.<lambda>)  s   ø€ �G×,Ñ,¨Z¸¿¹×9OÑ9OÓP€ r,   FrS   r0   c                 óü   •— t        ‰| «      }t        |t        «      r|j                  dv sJ |«       ‚y ‰j	                  «         ‰|«       ‰j                  ‰j                  d«      «       ‰j                  | «       y )N)TFNr   )rN   r   r   rK   Údup_toprA   Úrot_nr„   )rS   r—   r>   r7   s     €€r-   Úcodegen_attrz3ExceptionVariable.reconstruct.<locals>.codegen_attr.  sh   ø€ Ü˜4 Ó&ˆDÜ�dÔ,Ô-Ø—z‘zÐ%8Ñ8Ð>¸$Ó>Ñ8à—‘Ô!Ù˜”Ø×%Ñ% g§m¡m°AÓ&6Ô7Ø×"Ñ" 4Õ(r,   r¨   r©   rª   )r@   Úforeachr’   rq   rP   r¡   )r7   r>   r¶   s   `` r-   rB   zExceptionVariable.reconstruct'  sl   ù€ Ø×ÑÜPô	
ð 	�‰˜Ÿ	™	Ô"Ø×Ñœc $§)¡)›n¨eÔ4ð	)œsð 	) tö 	)ñ 	�]Ô#Ù�[Ô!ÙÐ+Õ,r,   c                 ó   — | j                   S r<   )r§   ©r7   s    r-   rG   zExceptionVariable.python_type<  s   € Ø�}‰}Ðr,   rC   r%   Úname_varÚvalc                 ó´  ‡— ˆfd„}|j                  «       }|dk(  r| j                  |«       �n|dk(  r�t        |t        «      r|j                  �Ht        |t
        j                  t
        j                  t
        j                  t
        j                  f«      r"|| _
        t        j                  d«      | _        n‹ |d«       n‚|dk(  r/t        |t        «      r|j                  dv r|| _        nW |d«       nN|dk(  r7t        |t        «      r|j                  €|| _        n%t        d	|› d
|› d�«       nt        d	|› d
|› d�«       t        j                  d «      S )Nc                 ó>   •— t        t        ‰t        | «      g¬«       y )N)r’   )r   Ú	TypeErrorr   )ÚmsgrC   s    €r-   Úraise_errorz3ExceptionVariable.call_setattr.<locals>.raise_errorE  s   ø€ Ü$¤Y°Ô:JÈ3Ó:OÐ9PÖQr,   r¨   r©   Tz9exception cause must be None or derive from BaseExceptionrª   )TFr«   zsetattr(ExceptionVariable, rg   ú))rF   r®   ro   r   rK   r   r=   r¥   Ú!UserDefinedExceptionClassVariableÚ"UserDefinedExceptionObjectVariabler©   rª   r«   r   )r7   rC   rº   r»   rÀ   rS   s    `    r-   Úcall_setattrzExceptionVariable.call_setattr?  s9  ø€ ô	Rð ×*Ñ*Ó,ˆØ�=Ò Ø×Ñ˜SÖ!Ø�[Ò Ü˜3Ô 0Ô1°c·i±iÐ6GÌJØä×-Ñ-Ü×/Ñ/Ü×?Ñ?Ü×@Ñ@ð	ôMð "%�”Ü,5×,FÑ,FÀtÓ,L�Õ)áÐWÕXØÐ+Ò+Ü˜#Ô/Ô0°S·Y±YÀ-Ñ5OØ,/�Õ)áÐWÕXØ�_Ò$Ü˜#Ô/Ô0°S·Y±YÐ5FØ%(�Õ"äÐ ;¸H¸:ÀRÈÀuÈAÐNÕOäÐ7¸°zÀÀCÀ5ÈÐJÔKÜ×)Ñ)¨$Ó/Ð/r,   c                 ó¦   •— |dk(  r | j                   |g|¢­Ž S |dk(  r"|\  }| j                  |t        d«      |«       | S t        ‰| �  ||||«      S )NÚ__setattr__Úwith_tracebackr«   )rÄ   r   r3   rw   )r7   rC   rS   r’   r8   Útbr9   s         €r-   rw   zExceptionVariable.call_methodg  sf   ø€ Ø�=Ò Ø$�4×$Ñ$ RÐ/¨$Ò/Ð/ØÐ%Ò%Ø‰DˆRØ×Ñ˜bÔ"2°?Ó"CÀRÔHØˆKä‘7Ñ& r¨4°°vÓ>Ð>r,   c                 ó  •— |dk(  r| j                   S |dk(  r| j                  S |dk(  r| j                  S |dk(  rt        j                  d «      S |dk(  r+t        j
                  | j                  | j                  ¬«      S t        ‰| �%  ||«      S )Nr¨   r©   rª   r«   r’   r\   )
r¨   r©   rª   r   r   ÚListVariabler’   rH   r3   rb   )r7   rC   rS   r9   s      €r-   rb   zExceptionVariable.var_getattrq  s‹   ø€ Ø�=Ò Ø×#Ñ#Ð#Ø�[Ò Ø—>‘>Ð!ØÐ+Ò+Ø×,Ñ,Ð,Ø�_Ò$Ü×-Ñ-¨dÓ3Ð3Ø�VŠ^Ü×)Ñ)¨$¯)©)¸D¿K¹KÔHÐHÜ‰wÑ" 2 tÓ,Ð,r,   c                 óN   — | j                   j                  › d| j                  › d�S )Nú(rÁ   )r9   r(   r§   r¹   s    r-   Ú__str__zExceptionVariable.__str__~  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯M©M¨?¸!Ð<Ð<r,   r›   )r­   r¥   )r(   r)   r*   r4   r®   rB   rG   r   rÄ   rw   rb   rÍ   Ú__repr__r¢   r£   s   @r-   r¥   r¥     sO   ø„ õ4ó"#ò-ò*ð&0à#ð&0ð "ð&0ð ó	&0ôP?ô-ò=ð „Hr,   r¥   c                   ó   — e Zd ZdZy)ÚUnknownVariablez
    It could be anything!
    N©r(   r)   r*   Ú__doc__r+   r,   r-   rÐ   rÐ   „  ó   „ òr,   rÐ   c                   ó   — e Zd ZdZy)ÚDelayGraphBreakVariablez^
    Used to insert a dummy variable in the stack to do the graph break at CALL_FUNCTION.
    NrÑ   r+   r,   r-   rÕ   rÕ   Š  rÓ   r,   rÕ   c                   óB   — e Zd ZdZd„ Zdddeddfd„Z	 	 	 	 	 	 	 	 dd	„Zy
)ÚComptimeVariableza
    This variable is special, it lets you execute arbitrary code at
    Dynamo compile time
    c                 ó   — t        d«      ‚)Nzcomptime is special form)r�   ©r7   r>   s     r-   rB   zComptimeVariable.reconstruct–  s   € Ü!Ð"<Ó=Ð=r,   rC   r%   rS   r0   r   c                 ój   — ddl m } ddlm}  |t        ||«      t	        | j
                  |«      ¬«      S )Nr   )Úcomptimer   )r!   r\   )rÛ   Ú	functionsr!   rN   r   rH   )r7   rC   rS   rÛ   r!   s        r-   rb   zComptimeVariable.var_getattr™  s.   € Ý'õ 	4á#Ü�H˜dÓ#¬J°t·{±{ÀDÓ,Iô
ð 	
r,   c                 óp  — ddl m} |rJ ‚t        |«      dk  sJ ‚|d   }t        |t        «      r |j                  «        ||«      «       nÌt        |t        «      r¥|j                  «       }|j                  rJ d|j                  › �«       ‚t        j                  ||j                  |j                  j                  «       |j                  rt!        |j                  j"                  «      nd d«      } | ||«      «       nt%        dt'        |«      › �«      ‚t(        j*                  j-                  d «      S )Nr   )ÚComptimeContextr   zOcomptime function must not have free variables, but these variables were free: r+   z"unsupported argument to comptime: )rÛ   rÞ   rP   ro   r!   Úget_functionr    Úget_codeÚclosureÚco_freevarsrz   r{   Ú	f_globalsÚfn_namerF   ÚdefaultsÚtupleÚitemsÚRuntimeErrorrJ   r   r   ra   )r7   rC   r’   r8   rÞ   ÚfnÚcodeÚfuncs           r-   rq   zComptimeVariable.call_function£  s  € õ 	/ñ Ðˆzä�4‹y˜AŠ~Ðˆ~Ø�!‰WˆÜ�bÔ.Ô/ØˆB�O‰OÓ™o¨bÓ1Õ2Ü˜Ô6Ô7à—;‘;“=ˆDØ—z’zð ð2Ø26×2BÑ2BÐ1CðEó�>ô ×%Ñ%ØØ—‘Ø—
‘
×-Ñ-Ó/Ø,.¯KªK”�b—k‘k×'Ñ'Ô(¸Tð óˆDñ ‘ Ó$Õ%äÐ!CÄDÈÃHÀ:ÐNÓOÐOä×)Ñ)×0Ñ0°Ó6Ð6r,   N©rC   r%   r’   rž   r8   rŸ   r0   r   )r(   r)   r*   rÒ   rB   r¡   rb   rq   r+   r,   r-   r×   r×   �  sS   „ ñò
>ð
Ð5ð 
¸Sð 
ÐEVó 
ð'7à#ð'7ð &ð'7ð -ð	'7ð
 
ô'7r,   r×   c                   óX   ‡ — e Zd ZU ee   ed<   dZee   ed<   	 ddee   ddfˆ fd„Zˆ xZ	S )ÚCellVariableÚpre_existing_contentsNÚ
local_namer0   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r2   )r3   r4   rï   )r7   rï   r8   r9   s      €r-   r4   zCellVariable.__init__Ú  s   ø€ ô 	‰ÑÑ"˜6Ò"Ø%:ˆÕ"r,   r<   )
r(   r)   r*   r   r   Ú__annotations__rð   r¡   r4   r¢   r£   s   @r-   rî   rî   Í  sF   ø… ð $ OÑ4Ó4ð !%€J�˜‘Ó$ð BFñ;Ø%-¨oÑ%>ð;à	÷;ñ ;r,   rî   c                   ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚNewGlobalVariablec                 ó$   •— t        ‰| �  di |¤Ž y r2   ©r3   r4   ©r7   r8   r9   s     €r-   r4   zNewGlobalVariable.__init__â  ó   ø€ Ü‰ÑÑ"˜6Ó"r,   r›   )r(   r)   r*   r4   r¢   r£   s   @r-   rô   rô   á  s   ø„ ÷#ñ #r,   rô   c                 ó(   ‡ — ˆ fd„}t         |_        |S )Nc                  ó(   •—  ‰j                   | i |¤ŽS r<   )Úapply)r’   r8   Úfn_clss     €r-   Útrampoline_autograd_applyzDproduce_trampoline_autograd_apply.<locals>.trampoline_autograd_applyç  s   ø€ Øˆv�|‰|˜TÐ, VÑ,Ð,r,   )Ú!produce_trampoline_autograd_applyÚ_origin)rü   rý   s   ` r-   rþ   rþ   æ  s   ø€ ô-ô )JÐÔ%Ø$Ð$r,   c                   ój   ‡ — e Zd ZdZdhej
                  £Zdˆ fd„Zd	d„Zd	d„Zd	d„Z		 	 	 	 d
d„Z
ˆ xZS )ÚAutogradFunctionVariablez-represents a torch.autograd.Function subclassrü   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r2   )r3   r4   rü   )r7   rü   r8   r9   s      €r-   r4   z!AutogradFunctionVariable.__init__ö  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�r,   c           	      ó   ‡‡— dŠˆˆfd„}t        j                  |||f«       ‰�rZt        j                  «       �rEt        j
                  du rt        j                  d«       ddlm	} ddl
m} | j                  j                  } || j                  j                  «      }|r1 || j                  j                  | j                  j                  «      }| j                  j                  }	|	t        j                   j"                  j                  urt%        d«       | j                  j&                  }
|
t        j                   j"                  j&                  urt%        d«       d	d
lm} | j,                  }|€Ct/        ‰j1                  | j                  j2                  «      | j                  j4                  «      } ||| j                  j6                  |t/        |d¬«      ¬«      j9                  ‰||«      }| j,                  r~t/        | j,                  d«      }t;        |j=                  t>        j@                  «      «       |r>t/        | j,                  d«      }t;        |j=                  t>        j@                  «      «       |S | j,                  rt/        | j,                  d«      }nd }| j                  j                  }tB        jE                  ‰||«      }|g|¢}tG        |tH        jJ                  «      rftM        jN                  |«      }tQ        |«      d	z
  tQ        |jR                  «      k(  r|d	d  }tU        jV                  ||¬«      j9                  ‰||«      S tG        |tH        jX                  «      rPtU        jZ                  |j\                  tU        j^                  | j                  «      |¬«      j9                  ‰||«      S t%        d|› �«       y )NFc                 ó¸   •— t        | t        j                  «      r| j                  durdŠt        | t        j                  «      r| j                  ‰«      rdŠy y y )NFT)ro   r   ÚTensorVariableÚrequires_gradÚNNModuleVariableÚis_training)Únoder  rC   s    €€r-   Úvisitz2AutogradFunctionVariable.call_apply.<locals>.visitý  sS   ø€ ä˜$¤	× 8Ñ 8Ô9Ø×%Ñ%¨UÑ2Ø$(�MÜ˜$¤	× :Ñ :Ô;Ø×#Ñ# BÔ'Ø$(‘Mð (ð <r,   zNThe config.capture_autograd_function flag is deprecated, it's now always true.r   )Ú#autograd_function_forward_rewritten)Ú_is_setup_context_definedzNYI - User defind vjpzNYI - User defind jvpr   )ÚAutogradFunctionApplyVariablerû   )rv   r\   ÚforwardÚsetup_contextz?non-function or method in subclass of torch.autograd.Function: )0r   r
  rk   Úis_grad_enabledr   Úcapture_autograd_functionÚwarningsÚwarnÚ"torch._functorch.autograd_functionr  Útorch.autograd.functionr  rü   r  r  ÚvjpÚautogradÚFunctionr   ÚjvpÚhigher_order_opsr  rH   r   Úimport_sourcer)   r(   Úbackwardrq   r   r_   r   ÚFUNCTION_MATCHÚAutogradFunctionContextVariablera   ro   rz   r{   ÚinspectÚ	signaturerP   Ú_parametersr   r!   r~   r}   ry   rs   )r7   rC   r’   r8   r
  r  r  Ú
forward_fnÚis_setup_ctx_definedÚvjp_fnÚjvp_fnr  rH   r»   Úfwd_srcÚsetup_ctx_srcré   ÚctxÚsigr  s    `                 @r-   Ú
call_applyz#AutogradFunctionVariable.call_applyú  sþ  ù€ Øˆõ	)ô 	×Ñ˜e d¨F ^Ô4âœU×2Ñ2Õ4Ü×/Ñ/°5Ñ8Ü—‘Ødôõõ JàŸ™×,Ñ,ˆJá#<¸T¿[¹[×=VÑ=VÓ#WÐ Ù#ñ AØ—K‘K×'Ñ'¨¯©×)BÑ)Bó�
ð —[‘[—_‘_ˆFØœUŸ^™^×4Ñ4×8Ñ8Ñ8ÜÐ5Ô6à—[‘[—_‘_ˆFØœUŸ^™^×4Ñ4×8Ñ8Ñ8ÜÐ5Ô6åGà—[‘[ˆFØˆ~Ü#Ø×$Ñ$ T§[¡[×%;Ñ%;Ó<¸d¿k¹k×>RÑ>Ró�ñ 0ØØ—‘×$Ñ$ØÜ! &°Ô9ô	÷
 ‰m˜B  fÓ-ð ð �{Š{Ü$ T§[¡[°)Ó<�Ü˜g×0Ñ0´×1LÑ1LÓMÔNÙ'Ü$.¨t¯{©{¸OÓ$L�MÜ! -×":Ñ":¼<×;VÑ;VÓ"WÔXàˆJà�;Š;Ü §¡¨YÓ7‰FàˆFà�[‰[× Ñ ˆÜ-×4Ñ4°R¸¸vÓFˆØˆ|�dˆ|ˆÜ�bœ%×,Ñ,Ô-Ü×#Ñ# BÓ'ˆCÜ�4‹y˜1‰}¤ C§O¡OÓ 4Ò4Ø˜A˜B�x�Ü×1Ñ1°"¸VÔD×RÑRØ�D˜&óð ô ˜œE×,Ñ,Ô-Ü×/Ñ/Ø—‘Ü×2Ñ2°4·;±;Ó?Øô÷ ‰m˜B  fÓ-ð	.ô ØQÐRTÐQUÐVõr,   c                 ó^  — | j                   j                  }t        |d   j                  «      t        j
                  j                  j                  u sJ ‚t        |t        j                  «      sJ ‚t        | j                  d«      }t        j                  ||¬«      j                  |||«      S )Nr   r  r\   )rü   r  rJ   rK   rk   Ú_dynamoÚexternal_utilsÚFakeBackwardCFunctionro   rz   r{   r   rH   r   r!   rq   )r7   rC   r’   r8   ré   Ú	fn_sources         r-   Úcall_backwardz&AutogradFunctionVariable.call_backward[  s‰   € Ø�[‰[×!Ñ!ˆÜ�D˜‘G—M‘MÓ"¤e§m¡m×&BÑ&B×&XÑ&XÑXÐXÐXÜ˜"œe×0Ñ0Ô1Ð1Ð1ä˜tŸ{™{¨JÓ7ˆ	Ü×-Ñ-¨b¸ÔC×QÑQØ��fó
ð 	
r,   c                 ó,   — t        | j                  «      S r<   )r  rü   ©r7   rC   r’   r8   s       r-   rq   z&AutogradFunctionVariable.call_functione  s   € Ü'¨¯©Ó4Ð4r,   c           
      ó”  — ddl m} ddlm} |dk(  rj || j                  «      rEt        | j                  «      } || |j                  j                  d|gt        ||«      ¢­Ž ¬«      S | j                  |||«      S |dk(  r| j                  |||«      S dd	lm } | j                  �t        | j                  |«      nd }		 t        j                  | j                  |«      }
t#        |
t$        «      rx|
j'                  | j                  «      }|	�3|j)                  |«      j+                  ||	¬
«      j-                  |||«      S  |j)                  |«      |«      j-                  |||«      S t#        |
t.        «      r3t1        j2                  |
j4                  | |	¬
«      j-                  |||«      S t7        d|› �«       y # t         $ r d }
Y Œçw xY w)Nr   )Úis_callable_allowedr   )Úwrap_fx_proxyrû   rq   )rC   Úproxyr  )Útrace_rulesr\   zUnsupported method: )r7  r4  Úbuilderr5  rü   rþ   r‚   Úcreate_proxyr   r*  r0  Ú rH   r   r  Úgetattr_staticr�   ro   rx   Ú__get__ÚlookupÚcreate_with_sourcerq   r|   r   r}   ry   r   )r7   rC   rS   r’   r8   r4  r5  rý   r7  rH   Úobjrë   s               r-   rw   z$AutogradFunctionVariable.call_methodh  s»  € õ 	6Ý*à�7Š?Ù" 4§;¡;Ô/Ü,MØ—K‘Kó-Ð)ñ %ØØ0˜"Ÿ)™)×0Ñ0Ø'Ø1ðô +¨4°Ó8òôð ð —‘ r¨4°Ó8Ð8à�ZÒØ×%Ñ% b¨$°Ó7Ð7å&à6:·k±kÐ6M”Z §¡¨TÔ2ÐSWˆFðÜ×,Ñ,¨T¯[©[¸$Ó?�ô ˜#œ|Ô,Ø—{‘{ 4§;¡;Ó/�ØÐ%à#×*Ñ*¨4Ó0ß+Ñ+¨D¸Ð+Ó@ß&™ r¨4°Ó8ðð 4˜;×-Ñ-¨dÓ3°DÓ9×GÑGØ˜D &óð ô ˜C¤Ô-Ü ×3Ñ3Ø—L‘L $¨vôç‘-  D¨&Ó1ð2ô Ð 4°T°FÐ;Õ<øô) "ò Ø’ðús   Â? F9 Æ9GÇGr›   rœ   )r’   rž   r8   rŸ   )r(   r)   r*   rÒ   r   r    r4   r*  r0  rq   rw   r¢   r£   s   @r-   r  r  î  sO   ø„ Ù7ð 	ðà	×	'Ñ	'ð€Nõ
ó_óB
ó5ð6=ð &ð	6=ð
 -÷6=r,   r  c                   óD   — e Zd ZU  ej                  e¬«      Zee   ed<   y)ÚSavedTensorBox)Údefault_factoryÚtensorsN)	r(   r)   r*   ÚdataclassesÚfieldÚlistrC  r   rò   r+   r,   r-   rA  rA  ¡  s   … à%6 [×%6Ñ%6ÀtÔ%L€GˆT�/Ñ"ÔLr,   rA  c                   ó”   ‡ — e Zd ZdZdddhej
                  £Z	 	 	 	 	 	 d
	 dˆ fd„Zeddd„«       Zd„ Z		 	 	 	 	 	 dˆ fd„Z
dˆ fd	„Zˆ xZS )r  zZ
    Tracks an autograd.Function() context using mutation tracking in side_effects.py
    r6  Ú	inferenceÚsaved_tensorsc                 óp   •— t        ‰	| �  d||dœ|¤Ž || _        || _        || _        || _        || _        y ©N)rK   Ú
value_typer+   )r3   r4   rH  r6  rI  Úneeds_input_gradÚnon_differentiable)
r7   rK   rL  rH  r6  rI  rM  rN  r8   r9   s
            €r-   r4   z(AutogradFunctionContextVariable.__init__²  sB   ø€ ô 	‰ÑÐF˜u°ÑF¸vÒFØ"ˆŒØˆŒ
Ø*ˆÔØ 0ˆÔØ"4ˆÕr,   c                 óÒ  — d }|r|st        d„ |D «       «      }| j                  j                  dt        j                  j
                  j                  di «      }| j                  j                  j                  d t        j                  j
                  j                  t        j                  t        d|t        «       |¬«      i «      }t        |j                  |j                  «       |S )Nc              3   ól   K  — | ],  }t        |t        j                  «      xr |j                  –— Œ. y ­wr<   )ro   r   r  r  ©Ú.0Úxs     r-   ú	<genexpr>z9AutogradFunctionContextVariable.create.<locals>.<genexpr>È  s1   è ø€ ò %àô ˜1œi×6Ñ6Ó7ÒK¸A¿O¹OÓKñ%ùs   ‚24rq   r+   T)rH  r6  rI  rM  )ræ   r‚   r9  rk   r  ÚfunctionÚFunctionCtxrn   Útrack_object_newÚ	functoolsÚpartialr  rA  r   r	  rK   )rC   r’   r8   rM  r6  Úouts         r-   ra   z&AutogradFunctionContextVariable.createÄ  sÄ   € àÐÙ™Ü$ñ %àô%ó  Ðð —	‘	×&Ñ&ØœUŸ^™^×4Ñ4×@Ñ@À"Àbó
ˆð �i‰i×$Ñ$×5Ñ5ØÜ�N‰N×#Ñ#×/Ñ/Ü×ÑÜ/ØØÜ,Ó.Ø!1ôð ó
ˆô 	˜%Ÿ*™* c§i¡iÔ0àˆ
r,   c                 óH   — | j                   €t        d«       | j                   S )Nzproxy not set)r6  r   r¹   s    r-   Úas_proxyz(AutogradFunctionContextVariable.as_proxyß  s   € Ø�:‰:ÐÜ˜/Ô*Ø�z‰zÐr,   c                 ó–  •— |dk(  rt         ‰| �  ||||«      S |dk(  rCt        |«      dk(  sJ ‚t        |i «      d   | _        t
        j                  j                  d «      S |dk7  rt        d|› �«       | j                  €t        d«       | j                  s6| j                  r|rJ ‚|j                  j                  j                  | |«       t        | j                  j                  «      dkD  rg | j                  _        |D ]'  }| j                  j                  j!                  |«       Œ) t
        j                  j                  d «      S )NrÆ   Úmark_non_differentiabler   Úsave_for_backwardz"autograd.Function context method: zCsave_for_backward only supported on a newly constructed FunctionCtx)r3   rw   rP   r   rN  r   r   ra   r   rI  rH  rH   r‚   rn   Útrack_save_for_backwardrC  Úappend)r7   rC   rS   r’   r8   Úargr9   s         €r-   rw   z+AutogradFunctionContextVariable.call_methodä  s4  ø€ ð �=Ò Ü‘7Ñ& r¨4°°vÓ>Ð>ØÐ.Ò.Ü�v“; !Ò#Ð#Ð#Ü&7¸¸bÓ&AÀ!Ñ&DˆDÔ#Ü×-Ñ-×4Ñ4°TÓ:Ð:àÐ&Ò&ÜÐ>¸t¸fÐEÔFØ×ÑÐ%ÜØUôð �~Š~Ø—;’;¡vÐ-Ð-Ø�I‰I×"Ñ"×:Ñ:¸4ÀÔFô ˆt×!Ñ!×)Ñ)Ó*¨QÒ.Ø)+ˆD×ÑÔ&Øò 	3ˆCØ×Ñ×&Ñ&×-Ñ-¨cÕ2ð	3ä×)Ñ)×0Ñ0°Ó6Ð6r,   c                 óæ  •‡ ‡‡— ‰dv rt        ˆˆ ˆfd„«      S ‰dk(  r>‰ j                  �2t        j                  t	        ‰ j                  j
                  «      «      S ‰dk(  r‚‰ j                  �)t        j                  j                  ‰ j                  «      S ‰ j                  rAt        ‰ j                  d«      }t        j                  ‰‰ j                  j                  |«      S t        ‰‰ �=  ‰‰«      S )N)r_  r^  c                  ó,   •— ‰j                  ‰‰| |«      S r<   )rw   )r’   r8   rS   r7   rC   s     €€€r-   r?   z=AutogradFunctionContextVariable.var_getattr.<locals>.<lambda>  s   ø€ ¨×(8Ñ(8¸¸TÀ4ÈÓ(P€ r,   rI  rM  )rj   rI  r   ÚTupleVariablerF  rC  rM  r   ra   rH   r   r   r‘   rK   r3   rb   ©r7   rC   rS   rH   r9   s   ``` €r-   rb   z+AutogradFunctionContextVariable.var_getattr  sÎ   û€ ØÐCÑCÜ!ÝPóð ð �?Ò" t×'9Ñ'9Ð'EÜ×*Ñ*¬4°×0BÑ0B×0JÑ0JÓ+KÓLÐLØÐ%Ò%Ø×$Ñ$Ð0Ü ×1Ñ1×8Ñ8¸×9NÑ9NÓOÐOØ�{Š{Ü# D§K¡KÐ1CÓD�Ü&×,Ñ,¨R°·±×1LÑ1LÈfÓUÐUä‰wÑ" 2 tÓ,Ð,r,   )NFNNNNr›   ©NNrœ   r�   )r(   r)   r*   rÒ   r$   r    r4   rx   ra   r\  rw   rb   r¢   r£   s   @r-   r  r  ¦  s”   ø„ ñð
 	ØØðð 
#×	1Ñ	1ð	€Nð ØØØØØð5ð 
õ5ð$ óó ðò4ð
7ð &ð	7ð
 -ð7ð 
õ7÷@-ñ -r,   r  c                   ó>   ‡ — e Zd ZdZ	 d	 dˆ fd„Z	 	 	 	 	 	 dd„Zˆ xZS )ÚAutogradEngineVariablez;
    Represents a torch._C._ImperativeEngine instance.
    c                 ó*   •— t        ‰| �  d||dœ|¤Ž y rK  rö   )r7   rK   rL  r8   r9   s       €r-   r4   zAutogradEngineVariable.__init__  s   ø€ ô 	‰ÑÐF˜u°ÑF¸vÓFr,   c                 ó¸  — |dk(  rÇt         j                  j                  j                  r—|j                  sJ d«       ‚t        j                  t         j                  j                  j                  j                  | j                  ¬«      j                  ||j                  j                  j                  «       g|¢­|«      S t        d«       y t        d|› �«       y )NÚqueue_callbackzXqueue_callback() is only supported when Compiled Autograd is enabled with fullgraph=Truer\   z#torch._C._ImperativeEngine method: )rk   r,  Úcompiled_autogradÚin_compiled_autograd_regionÚ	one_graphr   r!   r-  ÚFakeCompiledAutogradEnginerl  rH   rq   r‚   rn   Úget_ca_final_callbacks_varr   ©r7   rC   rS   r’   r8   s        r-   rw   z"AutogradEngineVariable.call_method"  sº   € ð Ð#Ò#Ü�}‰}×.Ñ.×JÒJØ—|’|ð Ønó�|ô !×5Ñ5Ü—M‘M×0Ñ0×KÑK×ZÑZØŸ;™;ô÷  ‘-ØØ—Y‘Y×+Ñ+×FÑFÓHÐPÈ4ÑPØóðô Ønõô Ð?À¸vÐFÕGr,   r<   r›   r�   ©r(   r)   r*   rÒ   r4   rw   r¢   r£   s   @r-   ri  ri    sE   ø„ ñð ðGð
 
õGðHð &ð	Hð
 -ðHð 
÷Hr,   ri  c                   ó8   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 dd„Zˆ xZS )rj   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r2   )r3   r4   ré   )r7   ré   r8   r9   s      €r-   r4   zLambdaVariable.__init__?  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�r,   c                 ó&   —  | j                   |i |¤ŽS r<   )ré   r2  s       r-   rq   zLambdaVariable.call_functionC  s   € ð ˆt�w‰w˜Ð' Ñ'Ð'r,   r›   rì   )r(   r)   r*   r4   rq   r¢   r£   s   @r-   rj   rj   >  s3   ø„ õð(à#ð(ð &ð(ð -ð	(ð
 
÷(r,   rj   c                   óð   ‡ — e Zd Zddhej                  £Zddˆ fd„Zˆ fd„Zdefd„Ze	de
j                  j                  fd„«       Zd	„ Zd
„ Zdd„Zd„ Z	 	 	 	 	 	 	 	 dd„Zdee   deeef   defˆ fd„Zˆ xZS )r^   rS   Úpy_typer0   c                 ó–   •— t        ‰| �  di |¤Ž t        |t        «      sJ ‚t        |t        «      sJ ‚|| _        || _        || _        y r2   )r3   r4   ro   r   r¡   r?  rS   rx  )r7   r?  rS   rx  r8   r9   s        €r-   r4   zGetAttrVariable.__init__S  sH   ø€ Ü‰ÑÑ"˜6Ò"Ü˜#œÔ/Ð/Ð/Ü˜$¤Ô$Ð$Ð$ØˆŒØˆŒ	Øˆ�r,   c                 óP   •— | j                   �| j                   S t        ‰| �	  «       S r<   )rx  r3   rG   ©r7   r9   s    €r-   rG   zGetAttrVariable.python_type[  s%   ø€ Ø�<‰<Ð#Ø—<‘<Ðä‘7Ñ&Ó(Ð(r,   c                 óh   — | j                   j                  › d| j                  › d| j                  › d�S ©NrÌ   rg   rÁ   )r9   r(   r?  rS   r¹   s    r-   rÎ   zGetAttrVariable.__repr__a  s.   € Ø—.‘.×)Ñ)Ð*¨!¨D¯H©H¨:°R¸¿	¹	°{À!ÐDÐDr,   Ú
base_proxyc                 ó   — t        | |«      S r<   )rN   )r~  r—   s     r-   Úcreate_getattr_proxyz$GetAttrVariable.create_getattr_proxyd  s   € ä�z 4Ó(Ð(r,   c                 ór   — t         j                  | j                  j                  «       | j                  «      S r<   )r^   r€  r?  r\  rS   r¹   s    r-   r\  zGetAttrVariable.as_proxyh  s&   € Ü×3Ñ3°D·H±H×4EÑ4EÓ4GÈÏÉÓSÐSr,   c                 óœ   — | j                   j                  «       }	 t        || j                  «      S # t        $ r t        | › d�«      d ‚w xY w)Nz is not a constant)r?  rF   rN   rS   r�   r�   )r7   Úconstants     r-   rF   z"GetAttrVariable.as_python_constantk  sQ   € Ø—8‘8×.Ñ.Ó0ˆð	MÜ˜8 T§Y¡YÓ/Ð/øÜò 	MÜ%¨¨Ð.@Ð&AÓBÈÐLð	Mús	   œ2 ²Ac                 ó„  — t        | j                  t        j                  «      st        ‚|j
                  j                  | j                  j                  «      }| j                  |j                  vrt        ‚t        j                  || j                  «      }||j                  vrt        ‚t        j                  ||«      S r<   )ro   r?  r   r  r�   r‚   Úget_submoduleÚ
module_keyrS   rQ   r  r;  )r7   rC   rS   Ústep1Ústep2s        r-   Úconst_getattrzGetAttrVariable.const_getattrr  s‹   € Ü˜$Ÿ(™(¤I×$>Ñ$>Ô?Ü%Ð%Ø—	‘	×'Ñ'¨¯©×(;Ñ(;Ó<ˆØ�9‰9˜EŸN™NÑ*Ü%Ð%Ü×&Ñ& u¨d¯i©iÓ8ˆØ�u—~‘~Ñ%Ü%Ð%Ü×%Ñ% e¨TÓ2Ð2r,   c                 ó|   —  || j                   «       |j                  |j                  | j                  «      «       y r<   )r?  rA   Úcreate_load_attrsrS   rÙ   s     r-   rB   zGetAttrVariable.reconstruct}  s+   € Ù�—‘ÔØ×Ñ˜g×7Ñ7¸¿	¹	ÓBÕCr,   r’   r8   c                 óR   — | j                   j                  || j                  ||«      S r<   )r?  rw   rS   r2  s       r-   rq   zGetAttrVariable.call_function�  s#   € ð �x‰x×#Ñ# B¨¯	©	°4¸Ó@Ð@r,   c                 óÂ  •— |dv rØ| j                   dk(  rÉ|sÇ|d   j                  «       r´t        | j                  t        j
                  t        j                  t        j                  f«      rq| j                  }|d   j                  «       }|j                  ||«      r|j                  ||«      S |dk(  �r™t        |«      dk(  r|d   S t	        j                  d «      S |dk(  rÐ| j                   dk(  rÁt        |«      dk(  r³|d   j                  «       r |sžt        | j                  t        j
                  t        j                  t        j                  f«      r[| j                  }|d   j                  «       }|j                  ||«      rt	        j                  d«      S t	        j                  d	«      S |d
k(  r—| j                   dk(  rˆ|s†t        | j                  t        j
                  «      r#| j                  j                  ||d   |d   «      S t        | j                  t        j                  «      r| j                  j                  |«       t        ‰| �A  ||||«      S )N)Ú__getitem__rR   rQ   r   rR   r   r   Ú__contains__TFÚ__setitem__)rS   Úis_python_constantro   r?  r   r$   r  rs   rF   Úhas_key_in_generic_dictrb   rP   r   r   Úconvert_to_unspecializedr3   rw   )r7   rC   rS   r’   r8   r?  Úkeyr9   s          €r-   rw   zGetAttrVariable.call_method‰  s   ø€ ð Ð*Ñ*Ø—	‘	˜ZÒ'ÙØ�Q‘×*Ñ*Ô,ÜØ—‘ä×7Ñ7Ü×.Ñ.Ü×6Ñ6ðôð —(‘(ˆCØ�q‘'×,Ñ,Ó.ˆCØ×*Ñ*¨2¨sÔ3à—‘ r¨3Ó/Ð/ð �u‹}Ü�t“9 ’>Ø ™7�Nä$×5Ñ5°dÓ;Ð;ð �NÒ"Ø—	‘	˜ZÒ'Ü�D“	˜Q’Ø�Q‘×*Ñ*Ô,ÙÜØ—‘ä×7Ñ7Ü×.Ñ.Ü×6Ñ6ðôð —(‘(ˆCØ�q‘'×,Ñ,Ó.ˆCØ×*Ñ*¨2¨sÔ3Ü ×1Ñ1°$Ó7Ð7ä ×1Ñ1°%Ó8Ð8à�]Ò" t§y¡y°JÒ'>ÁvÜ˜$Ÿ(™(¤I×$GÑ$GÔHà—x‘x×7Ñ7¸¸DÀ¹GÀTÈ!ÁWÓMÐMÜ˜$Ÿ(™(¤I×$>Ñ$>Ô?à—‘×1Ñ1°"Ô5ä‰wÑ" 2 t¨T°6Ó:Ð:r,   r<   r›   rœ   rì   )r(   r)   r*   r   r    r4   rG   r¡   rÎ   rx   rk   ÚfxÚProxyr€  r\  rF   r‰  rB   rq   rF  Údictrw   r¢   r£   s   @r-   r^   r^   L  sÞ   ø„ àØðð 
×	'Ñ	'ð€Nöô)ðE˜#ó Eð ð)¨¯©¯©ò )ó ð)òTòMó	3òDðAà#ðAð &ðAð -ð	Að
 
óAð@;ð �?Ñ#ð	@;ð
 �S˜/Ð)Ñ*ð@;ð 
÷@;ñ @;r,   r^   c                   óH   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 dˆ fd„Zd„ Zd„ Zˆ xZS )ÚMethodWrapperVariablec                 ó@   •— t        ‰| �  di |¤Ž || _        i | _        y r2   )r3   r4   Úmethod_wrapperÚ_builtin_fns)r7   r›  r8   r9   s      €r-   r4   zMethodWrapperVariable.__init__Í  s#   ø€ Ü‰ÑÑ"˜6Ò"Ø,ˆÔØˆÕr,   c                 ó:  •— t        | j                  «      rnt        |d   t        j                  «      rQt        |«      dk(  rt        |«      dk(  sJ ‚|d   j                  || j                  j                  j                  «      S | j                  j                  }| j                  j                  }|dk(  rUt        |«      j                  }|t        j                  u r.t        j                  t        «      j                  |||g|¢|«      S t        ‰| �=  |||«       y )Nr   r   r4   )r   r›  ro   r   r  rP   rb   ru   r(   rJ   r4   ri   r=   rw   r3   rq   )r7   rC   r’   r8   Úself_objÚwrapper_nameÚfn_objr9   s          €r-   rq   z#MethodWrapperVariable.call_functionÒ  sü   ø€ ô & d×&9Ñ&9Ô:¼zØ�‰G”Y×-Ñ-ô@
ô �t“9 ’>¤c¨&£k°QÒ&6Ð6Ð6à˜‘7×&Ñ& r¨4×+>Ñ+>×+GÑ+G×+PÑ+PÓQÐQð ×&Ñ&×/Ñ/ˆØ×*Ñ*×3Ñ3ˆð ˜:Ò%Ü˜(“^×,Ñ,ˆFØœŸ™Ñ(Ü ×0Ñ0´Ó8×DÑDØ˜ xÐ&7°$Ð&7¸óð ô 	‰Ñ˜b $¨Õ/r,   c                  ó   — y©NTr+   r¹   s    r-   r‘  z(MethodWrapperVariable.is_python_constantñ  ó   € Ør,   c                 ó   — | j                   S r<   )r›  r¹   s    r-   rF   z(MethodWrapperVariable.as_python_constantô  s   € Ø×"Ñ"Ð"r,   r›   rì   )r(   r)   r*   r4   rq   r‘  rF   r¢   r£   s   @r-   r™  r™  Ì  s=   ø„ õð
0à#ð0ð &ð0ð -ð	0ð
 
õ0ò>ö#r,   r™  c                   ó8   ‡ — e Zd Zdˆ fd„Zdˆ fd„Zd„ Zd„ Zˆ xZS )ÚGetSetDescriptorVariablec                 ó2   •— t        ‰| �  di |¤Ž || _        y r2   )r3   r4   Údesc)r7   r¨  r8   r9   s      €r-   r4   z!GetSetDescriptorVariable.__init__ù  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�	r,   c                 óÈ   •— |dk(  rM| j                   rAt        | j                   d«      }t        j                  || j                  j
                  |«      S t        ‰| �  ||«      S )Nr<  )rH   r   r   r‘   r¨  r<  r3   rb   rf  s       €r-   rb   z$GetSetDescriptorVariable.var_getattrý  sR   ø€ Ø�9Ò §¢Ü §¡¨YÓ7ˆFÜ"×(Ñ(¨¨T¯Y©Y×->Ñ->ÀÓGÐGä‘7Ñ& r¨4Ó0Ð0r,   c                  ó   — yr¢  r+   r¹   s    r-   r‘  z+GetSetDescriptorVariable.is_python_constant  r£  r,   c                 ó   — | j                   S r<   )r¨  r¹   s    r-   rF   z+GetSetDescriptorVariable.as_python_constant  s   € Ø�y‰yÐr,   r›   rœ   )r(   r)   r*   r4   rb   r‘  rF   r¢   r£   s   @r-   r¦  r¦  ø  s   ø„ õõ1òör,   r¦  c                   ó„   ‡ — e Zd Zddhej                  £Zdej                  ddfˆ fd„Zd„ Zd„ Z	de
fd„Zdd	„Zdd
„Zˆ xZS )ÚPythonModuleVariablerK   Úis_torchr0   Nc                 ó®   •— t        ‰| �  di |¤Ž || _        | j                  t        u xs% | j                  j                  j                  d«      | _        y )Nztorch.r+   )r3   r4   rK   rk   r(   Ú
startswithr®  ©r7   rK   r8   r9   s      €r-   r4   zPythonModuleVariable.__init__  sD   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ
ØŸ
™
¤eÐ+ÒW¨t¯z©z×/BÑ/B×/MÑ/MÈhÓ/Wˆ�r,   c                 ó"   — t         j                  S r<   )rz   Ú
ModuleTyper¹   s    r-   rG   z PythonModuleVariable.python_type  s   € Ü×ÑÐr,   c                 ó   — | j                   S r<   ©rK   r¹   s    r-   rF   z'PythonModuleVariable.as_python_constant  ó   € Ø�z‰zÐr,   c                 ó"   — d| j                   › d�S )NzPythonModuleVariable(rÁ   rµ  r¹   s    r-   rÎ   zPythonModuleVariable.__repr__  s   € Ø& t§z¡z l°!Ð4Ð4r,   c                 ól   — t        | j                  |«      }t        j                  j	                  |«      S r<   )rr   rK   r   r   ra   ©r7   rC   rS   r™   s       r-   Úcall_obj_hasattrz%PythonModuleVariable.call_obj_hasattr   s)   € Ü˜Ÿ™ TÓ*ˆÜ×)Ñ)×0Ñ0°Ó8Ð8r,   c                 ó¸  — |j                   j                  j                  | |«      r&|j                   j                  j                  | |«      S | j                  s|| j
                  j                  vrt        | j
                  |«      }n| j
                  j                  |   }| j                  xr t        | j                  |«      }t        j                  |||«      S r<   )r‚   rn   rŽ   r�   r®  rK   rQ   rN   rH   r   r   r‘   )r7   rC   rS   rš   rH   s        r-   rb   z PythonModuleVariable.var_getattr$  s£   € Ø�9‰9×!Ñ!×>Ñ>¸tÀTÔJØ—9‘9×)Ñ)×3Ñ3°D¸$Ó?Ð?à�=Š=˜D¨¯
©
×(;Ñ(;Ñ;Ü  §¡¨TÓ2‰JàŸ™×,Ñ,¨TÑ2ˆJà—‘Ò>¤¨D¯K©K¸Ó!>ˆÜ×$Ñ$ R¨°VÓ<Ð<r,   rœ   )r(   r)   r*   r   r    rz   r³  r4   rG   rF   r¡   rÎ   rº  rb   r¢   r£   s   @r-   r­  r­    s\   ø„ àØðð 
×	'Ñ	'ð€NðX˜e×.Ñ.ð X¸Tõ Xò
 òð5˜#ó 5ó9÷
=r,   r­  c                   óR   ‡ — e Zd Zd	ˆ fd„Z	 	 	 	 	 	 d
d„Zdddefd„Zd„ Zdd„Zˆ xZ	S )ÚTypingVariablec                 ó2   •— t        ‰| �  di |¤Ž || _        y r2   ©r3   r4   rK   r±  s      €r-   r4   zTypingVariable.__init__2  ó   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�
r,   c                 ó–   — |dk(  r9t        |«      dk(  r+| j                  |d   j                  «          }t        |«      S t	        d«       y )NrŽ  r   r   z+unsupported method call on typing variablel)rP   rK   rF   r½  r   )r7   rC   rS   r’   r8   Ú
new_typings         r-   rw   zTypingVariable.call_method6  sE   € ð �=Ò ¤S¨£Y°!¢^ØŸ™ D¨¡G×$>Ñ$>Ó$@ÑAˆJÜ! *Ó-Ð-ÜÐCÕDr,   rC   r%   rS   c                 ó„  — ddl m}m} |t        v rt	        j
                  | |«      S |j                  j                  j                  | |«      r|j                  j                  | |«      S t        | j                  |«      }| j                  r%t        | j                  |«      }  |||«      |«      S |j                  ||«      S )Nr   )ÚSourcelessBuilderÚVariableBuilder)r8  rÄ  rÅ  r   r   r^   r‚   rn   rŽ   r�   rN   rK   rH   r   ra   )r7   rC   rS   rÄ  rÅ  rK   Úattr_sources          r-   rb   zTypingVariable.var_getattrC  s    € ß?àÔ)Ñ)Ü×,Ñ,¨T°4Ó8Ð8à�9‰9×!Ñ!×>Ñ>¸tÀTÔJØ—?‘?×,Ñ,¨T°4Ó8Ð8ä˜Ÿ
™
 DÓ)ˆØ�;Š;Ü$ T§[¡[°$Ó7ˆKØ3‘? 2 {Ó3°EÓ:Ð:à$×+Ñ+¨B°Ó6Ð6r,   c                 ó   — | j                   S r<   rµ  r¹   s    r-   rF   z!TypingVariable.as_python_constantS  r¶  r,   c                 óX   — |j                  |j                  | j                  «      «       y r<   )Úappend_outputÚcreate_load_constrK   rÙ   s     r-   rB   zTypingVariable.reconstructV  s!   € ð0 	×Ñ˜g×7Ñ7¸¿
¹
ÓCÕDr,   r›   r�   )r>   ztorch._dynamo.codegen.PyCodegenr0   N)
r(   r)   r*   r4   rw   r¡   rb   rF   rB   r¢   r£   s   @r-   r½  r½  1  sN   ø„ õðEð &ð	Eð
 -ðEð 
óEð7Ð5ð 7¸Só 7ò ÷Er,   r½  )Úmaxsizec                  óÌ   — ddl m}  i }| j                  «       D ]H  \  }}|j                  j                  «       D ]&  \  }}t	        |«      sŒt        ||d«      x}sŒ"|||<   Œ( ŒJ |S )zd
    This generates a mapping from numpy modules to their torch._numpy
    modules equivalents.
    r   )ÚNP_TO_TNP_MODULEN)ÚutilsrÍ  rç   rQ   ÚcallablerN   )rÍ  Únp_fn_to_tnp_fnÚnp_modÚtnp_modrä   Útnp_fnÚnp_fns          r-   Úget_np_to_tnp_maprÕ  q  sz   € õ )à€Oà+×1Ñ1Ó3ò 4‰ˆ�Ø&×/Ñ/×5Ñ5Ó7ò 	4‰OˆG�VÜ˜Õô $ F¨G°TÓ:Ð:�5Ñ:Ø-3�O EÒ*ñ	4ð4ð Ðr,   c                  ój   — t        «       } | j                  «       D ��ci c]  \  }}||“Œ
 c}}S c c}}w )z
    This is just the reverse mapping of get_np_to_tnp_map() - mapping from
    torch._numpy modules to numpy equivalents.
    )rÕ  rç   )ÚmÚkÚvs      r-   Úget_tnp_to_np_maprÚ  †  s.   € ô 	Ó€AØŸW™W›Y×'‘T�Q˜ˆAˆq‰DÓ'Ð'ùÓ's   ž/c                   óš   ‡ — e Zd ZdZej
                  fZd	ˆ fd„Zed„ «       Z	ed„ «       Z
	 	 	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 dd„Zd„ Zˆ fd„Zˆ xZS )ÚNumpyVariablezz
    Wrapper around `numpy.*`. Currently, is able to trace a small subset of numpy functions as well as numpy dtypes.
    c                 ó2   •— t        ‰| �  di |¤Ž || _        y r2   r¿  r±  s      €r-   r4   zNumpyVariable.__init__—  rÀ  r,   c                 óˆ   — |j                   j                  d«      }t        |«      dk\  r
|d d ddgk(  sJ ‚|| j                  v S ©Nú.r   rk   Ú_numpy)r)   ÚsplitrP   Úconstant_fold_functions©Úclsré   Úmods      r-   Úcan_constant_fold_throughz'NumpyVariable.can_constant_fold_through›  sJ   € à�m‰m×!Ñ! #Ó&ˆÜ�3‹x˜1Š}  R a ¨W°hÐ,?Ò!?Ð?Ð?Ø�S×0Ñ0Ð0Ð0r,   c                 ó˜   — |j                   j                  d«      }t        |«      dk\  r
|d d ddgk(  sJ ‚t        j	                  |d «      S rß  )r)   râ  rP   Únp_constant_collections_maprR   rä  s      r-   Ú get_constant_collection_for_funcz.NumpyVariable.get_constant_collection_for_func¡  sL   € à�m‰m×!Ñ! #Ó&ˆÜ�3‹x˜1Š}  R a ¨W°hÐ,?Ò!?Ð?Ð?Ü*×.Ñ.¨r°4Ó8Ð8r,   c                 ó
  — t         j                  st        d| j                  › d�«       ddlm} ddlm} t        «       j                  | j                  «      }|€t        d| j                  › d�«       | j                  |«      x}	 �e	  | | j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž«      S |j                  dk(  rAt         j                   r1d|j"                  › d�}|dt         j                   › �z  }t        |«       |j%                  |j                  ||«      \  }}| j'                  |«      r‹t)        ||«      rt*        j,                  j/                   | j                  «       |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž«      S  |j0                  j2                  d ||«      gt5        ||«      ¢­Ž }|j/                  ||«      S c c}w c c}
}	w # t        $ r* t        | j                  j                  › d	|› d
|› �«       Y y w xY wc c}w c c}
}	w )Nznumpy.z()r   )Únumpy_to_tensor_wrapperr   )ÚNumpyNdarrayVariablezCan't find numpy function zM in torch._numpy.  Please file an issue to request support for this function.z with non-const args: ú ztorch._numpy.randomz
delegate 'z' to NumPy itself via zconfg.use_numpy_random_stream=rq   )r   Útrace_numpyr   rK   rÎ  rì  Útensorrí  rÕ  rR   rê  rF   rç   r�   r(   r)   Úuse_numpy_random_streamr*   Ú
patch_argsrç  r   r   r   ra   r‚   r9  r   )r7   rC   r’   r8   rì  rí  rë   Úcollection_variable_typrS  rØ  rÙ  r¿   r6  s                r-   rq   zNumpyVariable.call_function§  sk  € ô ×!Ò!Ü˜F 4§:¡: ,¨bÐ1Ô2å3Ý0ä Ó"×&Ñ& t§z¡zÓ2ˆØˆ<ÜØ,¨T¯Z©Z¨Lð 9Nð Nôð (,×'LÑ'LÈTÓ'RÐRÐ#Øðð
Ù.Ø�D—J‘JØ:>Ö?°Q˜!×.Ñ.Õ0Ò?ðàAGÇÁÃ×P¹¸¸A˜1˜a×2Ñ2Ó4Ñ4ÓPñóð ð —‘Ð#8Ò8Ü×2Ò2à" 4×#4Ñ#4Ð"5Ð5KÐL�ØÐ7¼×8VÑ8VÐ7WÐXÑX�Ü˜cÔ"à/×:Ñ:¸4¿=¹=È$ÐPVÓW‰LˆD�&à×-Ñ-¨dÔ3Ü-¨d°FÔ;ô !×1Ñ1×8Ñ8Ø-�D×+Ñ+Ó-Ø:>Ö?°Q˜!×.Ñ.Õ0Ò?ðàAGÇÁÃ×P¹¸¸A˜1˜a×2Ñ2Ó4Ñ4ÓPñóð ð +�B—I‘I×*Ñ*ØÙ'¨Ó-ðô # 4¨Ó0òˆEð
 (×.Ñ.¨r°5Ó9Ð9ùòI @ùÛPøô 'ò ÜØ—z‘z×*Ñ*Ð+Ð+AÀ$ÀÀqÈÈÐQöðüò* @ùÛPs<   Â	I ÂH9Â2I ÃH>Ã#	I Æ'I:ÇI?È9I É0I7É6I7c                 ó   — t        d«       y )NÚnumpy)r   rr  s        r-   rw   zNumpyVariable.call_methodç  s   € ô 	�gÕr,   c                 ó   — | j                   S r<   rµ  r¹   s    r-   rF   z NumpyVariable.as_python_constantð  r¶  r,   c                 ó    •— t         j                  r0t        | j                  t        «      r| j                  j
                  S t        ‰| �  «       S r<   )r   rï  ro   rK   rJ   r(   r3   r\  r{  s    €r-   r\  zNumpyVariable.as_proxyó  s9   ø€ Ü×Ò¤*¨T¯Z©Z¼Ô">ð —:‘:×&Ñ&Ð&ä‰wÑÓ!Ð!r,   r›   rì   r�   )r(   r)   r*   rÒ   ÚtnpÚ
issubdtyperã  r4   r|   rç  rê  rq   rw   rF   r\  r¢   r£   s   @r-   rÜ  rÜ  �  s¢   ø„ ñð  #Ÿ~™~Ð/Ðõð ñ1ó ð1ð
 ñ9ó ð9ð
>:à#ð>:ð &ð>:ð -ð	>:ð
 
ó>:ð@ð &ð	ð
 -ðð 
óò÷"ð "r,   rÜ  c                   ó2   ‡ — e Zd Zdˆ fd„Zdefd„Zd„ Zˆ xZS )ÚNullVariabler0   c                 ó$   •— t        ‰| �  di |¤Ž y r2   rö   r÷   s     €r-   r4   zNullVariable.__init__ÿ  rø   r,   c                  ó   — y)Nrû  r+   r¹   s    r-   rÎ   zNullVariable.__repr__  s   € Ør,   c                 ót   — t         j                  dk  rt        d«       |j                  t	        d«      «       y )N)é   é   z0cannot reconstruct NullVariable in < Python 3.11Ú	PUSH_NULL)ÚsysÚversion_infor   rÉ  r	   rÙ   s     r-   rB   zNullVariable.reconstruct  s-   € Ü×Ñ˜gÒ%ÜÐLÔMØ×ÑÔ0°Ó=Õ>r,   r›   )r(   r)   r*   r4   r¡   rÎ   rB   r¢   r£   s   @r-   rû  rû  þ  s   ø„ õ#ð˜#ó ö?r,   rû  c                   ó   — e Zd ZdZy)r…   z"Marker used to implement delattr()NrÑ   r+   r,   r-   r…   r…     s   „ Ú,r,   r…   c                   ód   ‡ — e Zd ZdZdhej
                  £Zed„ «       Zdˆ fd„Zde	fd„Z
d„ Zˆ xZS )	ÚStringFormatVariablez[
    Represents a call to str.format(), we delay calling format until after the graph.
    Úformat_stringc                 ó®  — t        d„ t        j                  ||j                  «       «      D «       «      r{t        j
                  j                   |j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž«      S  | |t        |«      t        |«      «      S c c}w c c}}w )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr<   )r‘  rQ  s     r-   rT  z.StringFormatVariable.create.<locals>.<genexpr>  s!   è ø€ ò 
àð × Ñ ×"ñ
ùs   ‚)ÚallÚ	itertoolsÚchainÚvaluesr   r   ra   ÚformatrF   rç   rF  r—  )rå  r  Úsym_argsÚ
sym_kwargsrÙ  rØ  s         r-   ra   zStringFormatVariable.create  s¾   € äñ 
ä—_‘_ X¨z×/@Ñ/@Ó/BÓCô
ô 
ô ×-Ñ-×4Ñ4Ø$�×$Ñ$Ø6>Ö?°�a×*Ñ*Õ,Ò?ðà=G×=MÑ=MÓ=O×P±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÓPñóð ñ �=¤$ x£.´$°zÓ2BÓCÐCùò	 @ùÛPs   ÁCÂCr0   c                 ór   •— t        ‰| �  di |¤Ž t        |t        «      sJ ‚|| _        || _        || _        y r2   )r3   r4   ro   r¡   r  r  r  )r7   r  r  r  r8   r9   s        €r-   r4   zStringFormatVariable.__init__$  s9   ø€ Ü‰ÑÑ"˜6Ò"Ü˜-¬Ô-Ð-Ð-Ø*ˆÔØ ˆŒØ$ˆ�r,   c                 ó‚   — | j                   j                  › d| j                  ›d| j                  ›d| j                  ›d�S r}  )r9   r(   r  r  r  r¹   s    r-   rÎ   zStringFormatVariable.__repr__+  sB   € Ø—.‘.×)Ñ)Ð*¨!¨D×,>Ñ,>Ð+AÀÀDÇMÁMÐCTÐTVÐW[×WfÑWfÐViÐijÐkÐkr,   c                 óŽ  ‡ ‡— ‰j                  ˆˆ fd„d¬«        ‰t        j                  ‰ j                  «      «       ‰ j                  j                  «       D ��ci c]%  \  }}t        j                  j                  |«      |“Œ' }}} ‰t        j                  |«      «       ‰j                  t        dd¬«      «       y c c}}w )Nc                  óz   •— ‰ j                  ‰ j                  ‰j                  «      ‰ j                  d«      g«      S )Nr  )rA   rÊ  r  Úcreate_load_attrr²   s   €€r-   r?   z2StringFormatVariable.reconstruct.<locals>.<lambda>0  s9   ø€ �G×)Ñ)à×-Ñ-¨d×.@Ñ.@ÓAØ×,Ñ,¨XÓ6ðó€ r,   T)Úcall_function_exÚCALL_FUNCTION_EXr   )rb  )r@   r   re  r  r  rç   r   ra   ÚConstDictVariablerÉ  r	   )r7   r>   rØ  rÙ  r8   s   ``   r-   rB   z StringFormatVariable.reconstruct.  s«   ù€ Ø×Ñôð "ð 	ô 	
ñ 	”	×'Ñ'¨¯©Ó6Ô7à@DÇÁ×@UÑ@UÓ@W÷
Ù8<¸¸1ŒI×&Ñ&×-Ñ-¨aÓ0°!Ñ3ð
ˆñ 
ñ 	”	×+Ñ+¨FÓ3Ô4Ø×ÑÔ0Ð1CÈÔKÕLùó	
s   Á*Cr›   )r(   r)   r*   rÒ   r   r    r|   ra   r4   r¡   rÎ   rB   r¢   r£   s   @r-   r  r    sJ   ø„ ñð &ÐG¨×(FÑ(FÐG€NàñDó ðDõ%ðl˜#ó löMr,   r  c                   óT   ‡ — e Zd ZdZdˆ fd„Zed„ «       Zdd„Zd„ Zed	d„«       Z	ˆ xZ
S )
ÚDebuggingVariablez†
    Represents a call to a debugging function like print(), or something
    registered to config.reorderable_logging_functions.
    c                 ó2   •— t        ‰| �  di |¤Ž || _        y r2   r¿  r±  s      €r-   r4   zDebuggingVariable.__init__F  rÀ  r,   c                 óÀ   — t        | «      xrR t        | t        j                  t        j                  f«      xr& | t
        j                  j                  j                  v S r<   )	rÏ  ro   rz   r{   ÚBuiltinFunctionTyperk   r,  r   Úreorderable_logging_functions)r?  s    r-   Úis_reorderable_logging_functionz1DebuggingVariable.is_reorderable_logging_functionJ  sO   € ô �S‹Mò JÜ˜3¤×!3Ñ!3´U×5NÑ5NÐ OÓPòJà”u—}‘}×+Ñ+×IÑIÐIð	
r,   c           	      óâ   — |j                   ry | j                  | j                  ||«      st        d| j                  › d|› d|› d�«       |j                  j                  | t        |«      f«       y )NzReordering debugging function z with inputs rî  z is not yet implemented.)ÚexportÚcan_reorder_logsrK   r   Údebug_localsra  rF  r2  s       r-   rq   zDebuggingVariable.call_functionR  sk   € Ø�9Š9àà×$Ñ$ T§Z¡Z°°vÔ>ÜØ0°·±°ð =Ø#˜f A f XÐ-EðGôð
 	�‰×Ñ ¤d¨4£jÐ1Õ2r,   c                 ó8   — | j                   j                  |«      S r<   )rH   rB   rÙ   s     r-   rB   zDebuggingVariable.reconstruct_  s   € Ø�{‰{×&Ñ& wÓ/Ð/r,   c                 ó¦   — t         j                  t         j                  t        f}t	        j
                  ||g«      }|D ]  }t        ||«      rŒ y y)zm
        Run some additional checks for what sort of function calls can we
        actually reorder.
        FT)r   r  r   r  ÚpytreeÚtree_leavesro   )ré   r’   r8   Úallowed_input_typesÚ	flat_argsrb  s         r-   r"  z"DebuggingVariable.can_reorder_logsb  sY   € ô ×$Ñ$Ü×&Ñ&Ü ð
Ðô ×&Ñ&¨¨f ~Ó6ˆ	Øò 	ˆCÜ˜cÐ#6Õ7Ùð	ð r,   r›   rœ   )r0   T)r(   r)   r*   rÒ   r4   rx   r  rq   rB   r"  r¢   r£   s   @r-   r  r  @  s?   ø„ ñõ
ð ñ
ó ð
ó3ò0ð òó ôr,   r  c                   ó8   ‡ — e Zd ZdZdˆ fd„Z	 	 	 	 	 	 dd„Zˆ xZS )ÚLoggingLoggerVariablez<
    Represents a call to any of logging.Logger methods
    c                 ó2   •— t        ‰| �  di |¤Ž || _        y r2   r¿  r±  s      €r-   r4   zLoggingLoggerVariable.__init__|  rÀ  r,   c                 ó$  — |j                   ry t        | j                  |d «      }t        |dd «      }||hj                  t        j
                  j                  j                  «      rt        j                  j                  d «      S t        d«       y )Nry   zÁLogger not supported for non-export cases. To avoid graph breaks caused by logger in compile-mode, it is recommended to disable logging by adding logging methods to config.ignore_logger_methods)r!  rN   rK   Úintersectionrk   r,  r   Úignore_logger_methodsr   r   ra   r   )r7   rC   rS   r’   r8   ÚmethodrU  s          r-   rw   z!LoggingLoggerVariable.call_method€  sv   € ð �9Š9àÜ˜Ÿ™ T¨4Ó0ˆÜ˜6 :¨tÓ4ˆØ�HÐ×*Ñ*¬5¯=©=×+?Ñ+?×+UÑ+UÔVÜ×-Ñ-×4Ñ4°TÓ:Ð:ÜðYõ	
r,   r›   r�   rs  r£   s   @r-   r+  r+  w  s0   ø„ ñõð
ð &ð	
ð
 -ð
ð 
÷
r,   r+  c                   óº   ‡ — e Zd ZdZd Z	 ddlmZmZ	m
Z dˆ fd„Zd„ Zd	ee   d
eeef   defd„Zdddedefd„Zˆ xZS # e$ r  eddi «      Z	 eddi «      ZY ŒDw xY w)ÚConstantLikeVariablez8self.value is a compile-time constant, but not a literalr   )ÚdtypeÚfloatingÚgenericÚinvalid_typer+   r0   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r2   r¿  r±  s      €r-   r4   zConstantLikeVariable.__init__£  rÀ  r,   c                 ó   — | j                   S r<   rµ  r¹   s    r-   rF   z'ConstantLikeVariable.as_python_constant§  r¶  r,   r’   r8   c                 óP  — 	 |D �cg c]  }|j                  «       ‘Œ }}|j                  «       D ��ci c]  \  }}||j                  «       “Œ }	}} t        | j                  |«      i 	¤Ž}
t        j                  j                  |
«      rt        j                  j                  |
«      S t        |
t        j                  «      rt        |
«      S t        | j                  › d|› d|
› �«       y c c}w c c}}w # t        $ r$ t        | j                  › d|› d|› d|› d�«       Y ŒÔw xY w)Nrà  z(*z, **rÁ   z() -> )rF   rç   r�   r   Ú_error_prefixrN   rK   r   r   r]   ra   ro   ÚreÚMatchÚConstantRegexMatchVariable)r7   rC   rS   r’   r8   rS  ÚcargsrØ  rÙ  Úckwargsr™   s              r-   rw   z ConstantLikeVariable.call_methodª  s  € ð	Oà59Ö:°�Q×)Ñ)Õ+Ð:ˆEÐ:Ø=C¿\¹\»^×L±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÐLˆGÑLð +”˜Ÿ™ TÓ*¨EÐ=°WÑ=ˆä×%Ñ%×0Ñ0°Ô8Ü×-Ñ-×4Ñ4°VÓ<Ð<Ü�fœbŸh™hÔ'Ü-¨fÓ5Ð5ä˜×+Ñ+Ð,¨A¨d¨V°6¸&¸ÐBÕCùò ;ùÛLøÜ"ò 	OÜ˜T×/Ñ/Ð0°°$°°r¸$¸¸tÀFÀ8È1ÐMÖNð	Oús,   ‚C8 †C-�C8 ²C2ÁC8 Ã-C8 Ã8*D%Ä$D%rC   r%   rS   c                 ó¨  — t        | j                  |«      }t        || j                  «      rt	        |«      }t        || j
                  «      rt        |«      S t        |t        «      r!t        || j                  «      rt        |«      S t        j                  j                  |«      rt        j                  j                  |«      S t        | |«      S r<   )rN   rK   ro   Únp_floatingÚfloatÚnp_dtypeÚNumpyDTypeVariablerJ   rI   Ú
np_genericrÜ  r   r   r]   ra   r^   r¹  s       r-   rb   z ConstantLikeVariable.var_getattrÁ  sž   € Ü˜Ÿ™ TÓ*ˆÜ�f˜d×.Ñ.Ô/Ü˜6“]ˆFÜ�f˜dŸm™mÔ,Ü% fÓ-Ð-Ü�fœdÔ#¬
°6¸4¿?¹?Ô(Kä  Ó(Ð(Ü×%Ñ%×0Ñ0°Ô8Ü×-Ñ-×4Ñ4°VÓ<Ð<Ü˜t TÓ*Ð*r,   r›   )r(   r)   r*   rÒ   r:  rõ  r3  rC  r4  rA  r5  rE  ÚImportErrorrJ   r4   rF   rF  r   r—  r¡   rw   rb   r¢   r£   s   @r-   r2  r2  •  s£   ø„ ÙBà*€Mð0÷	
ñ 	
õòðDð �?Ñ#ð	Dð
 �S˜/Ð)Ñ*ðDð 
óDð.+Ð5ð +¸Sð +À_÷ +øðE ò 0Ù˜>¨2¨rÓ2ˆÙ˜¨¨BÓ/Šð0ús   ‹
> ¾AÁAr2  c                   ó   — e Zd ZdZy)ÚRegexPatternVariablez
re.PatternN©r(   r)   r*   r:  r+   r,   r-   rH  rH  Ï  s   „ Ø �Mr,   rH  c                   ó   — e Zd ZdZy)r=  zre.MatchNrI  r+   r,   r-   r=  r=  Ó  s   „ Ø�Mr,   r=  c                   ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )ÚTorchVersionVariableztorch.__version__c                 ó’   •— |j                  dt        j                  «       |d   t        j                  u sJ ‚t        ‰| �  di |¤Ž y )NrK   r+   )Ú
setdefaultrk   Ú__version__r3   r4   r÷   s     €r-   r4   zTorchVersionVariable.__init__Ú  sA   ø€ Ø×Ñ˜'¤5×#4Ñ#4Ô5Ø�g‰¤%×"3Ñ"3Ñ3Ð3Ð3Ü‰ÑÑ"˜6Ó"r,   r›   )r(   r)   r*   r:  r4   r¢   r£   s   @r-   rL  rL  ×  s   ø„ Ø'€M÷#ñ #r,   rL  c                   ó   — e Zd ZdZy)ÚNumpyTypeInfoVariableznp.iinfo/np.finfoNrI  r+   r,   r-   rQ  rQ  à  s   „ Ø'�Mr,   rQ  c                   ó   — e Zd ZdZd„ Zy)rD  znp.dtype[...]c                 óB   — | j                   j                  j                  S )a0  Similar to how numpy dtype descriptors (e.g. np.float32 ) are handled by NumpyVariable:

        np.dtype() objects are serialized as strings, torch._numpy wrappers will normalize to the torch dtype.
        This also handles unsupported things nicely (i.e. structured arrays and object arrays).
        )rK   rJ   r(   r¹   s    r-   r\  zNumpyDTypeVariable.as_proxyç  s   € ð �z‰z�‰×'Ñ'Ð'r,   N)r(   r)   r*   r:  r\  r+   r,   r-   rD  rD  ä  s   „ Ø#€Mó(r,   rD  c                   ó,   ‡ — e Zd ZdZdˆ fd„Zdd„Zˆ xZS )ÚRandomClassVariablezrandom.Randomc                 ó$   •— t        ‰| �  di |¤Ž y r2   rö   r÷   s     €r-   r4   zRandomClassVariable.__init__ú  rø   r,   c                 ó  — t        |«      dkD  rt        d«       n|rt        d«       t        |«      dk(  rt        j                  j	                  d «      n|d   }t        |t        j                  j                  «       ¬«      S )Nr   zrandom.Random() with > 1 argzrandom.Random() with kwargsr   )Úseedrp   )rP   r   r   r   ra   ÚRandomVariableÚbaseÚValueMutationNew)r7   rC   r’   r8   rX  s        r-   rq   z!RandomClassVariable.call_functioný  sh   € Üˆt‹9�qŠ=ÜÐ8Õ9ÙÜÐ7Ô8Ü:=¸d»)Àqº.Œy×)Ñ)×0Ñ0°Ô6ÈdÐSTÉgˆÜØ¤Y§^¡^×%DÑ%DÓ%Fô
ð 	
r,   r›   rœ   )r(   r)   r*   rÒ   r4   rq   r¢   r£   s   @r-   rU  rU  ÷  s   ø„ Ùõ#÷
r,   rU  c                   óö   ‡ — e Zd ZdZdhej
                  £Zh d£Z	 	 ddeej                     dee   ddfˆ fd„Z
d	„ Zd
„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zdee   deeef   defˆ fd„Zd„ Zˆ xZS )rY  zùrandom.Random()

    Implemented by wrapping a VariableTracker around a random.Random object.
    The supported methods for the random.Random object cannot be overriden.
    Assumes that random objects behave the same given a set seed or state.
    Úrandom>   r]  ÚrandintÚuniformÚ	randrangeNÚrandrX  r0   c                 ó0  •— t        ‰| �  di |¤Ž |�V| j                  |«      sJ ‚t        j                  «       | _        | j                  j                  |j                  «       «       y |�|j                  «       nd }t        j                  |«      | _        y r2   )r3   r4   Úis_supported_random_objr]  ÚRandomÚsetstateÚgetstaterF   )r7   ra  rX  r8   r9   s       €r-   r4   zRandomVariable.__init__  sy   ø€ ô 	‰ÑÑ"˜6Ò"ØÐØ×/Ñ/°Ô5Ð5Ð5Ü Ÿ-™-›/ˆDŒKØ�K‰K× Ñ  §¡£Õ1à04Ð0@�4×*Ñ*Ô,ÀdˆDÜ Ÿ-™-¨Ó-ˆD�Kr,   c                 ó"   — t         j                  S r<   )r]  rd  r¹   s    r-   rG   zRandomVariable.python_type+  s   € Ü�}‰}Ðr,   c                 ó   — | j                   S r<   )r]  r¹   s    r-   rF   z!RandomVariable.as_python_constant.  s   € Ø�{‰{Ðr,   c                 óœ  — t        | «      t        j                  uryt        j                  t
        j                  d«      D ]‰  }t        | |«      s yt        | |«      }t        j                  |«      r/|t        t        j                  |«      j                  | «      k7  sŒ_ yt        |dd «      t        t        j                  |«      usŒ‰ y y)NF)rX  rf  re  ry   T)rJ   r]  rd  r  r  rY  Ú_supported_fn_namesrr   rN   r  Ú	isbuiltinr<  )r»   rS   Úmeths      r-   rc  z&RandomVariable.is_supported_random_obj1  s¨   € ä�‹9œFŸM™MÑ)ØÜ—O‘OÜ×.Ñ.Ð0Pó
ò 	!ˆDô ˜3 Ô%ÙÜ˜3 Ó%ˆDÜ× Ñ  Ô&àœ7¤6§=¡=°$Ó7×?Ñ?ÀÓDÓDÙ ä˜4 ¨TÓ2¼'Ä&Ç-Á-ÐQUÓ:VÒVÙ ð	!ð r,   c                 óè   — t        | «      t        u sJ ‚t        | d   «      t        u sJ ‚t        | d   «      t        u sJ ‚t        d„ | d   D «       «      sJ ‚| d   �t        | d   «      t        u sJ ‚y y )Nr   r   c              3   ó>   K  — | ]  }t        |«      t        u –— Œ y ­wr<   )rJ   ÚintrQ  s     r-   rT  z-RandomVariable.check_state.<locals>.<genexpr>I  s   è ø€ Ò4 a”4˜“7œc”>Ñ4ùs   ‚r   )rJ   ræ   ro  r
  rB  )Ústates    r-   Úcheck_statezRandomVariable.check_stateD  s}   € ä�E‹{œeÑ#Ð#Ð#Ü�E˜!‘H‹~¤Ñ$Ð$Ð$Ü�E˜!‘H‹~¤Ñ&Ð&Ð&ÜÑ4¨5°©8Ô4Ô4Ð4Ð4Ø�Q‰xÐ¤4¨¨a©£>´UÑ#:Ð:Ð:Ð#:Ðr,   c                 óh  — t         j                  | «       t        j                  t        j                  j                  | d   «      t        j                  | d   D �cg c]!  }t        j                  j                  |«      ‘Œ# c}«      t        j                  j                  | d   «      g«      S c c}w )Nr   r   r   )rY  rq  r   re  r   ra   )rp  rS  s     r-   Ú
wrap_statezRandomVariable.wrap_stateL  s‘   € ä×"Ñ" 5Ô)Ü×&Ñ&ä×*Ñ*×1Ñ1°%¸±(Ó;Ü×'Ñ'ØCHÈÁ8ÖL¸a”Y×/Ñ/×6Ñ6°qÕ9ÒLóô ×*Ñ*×1Ñ1°%¸±(Ó;ðó
ð 	
ùò Ms   Á&B/c                 óP   — | j                  «       }t        j                  |«       |S r<   )rF   rY  rq  )rp  Ú	state_objs     r-   Úunwrap_statezRandomVariable.unwrap_stateY  s$   € à×,Ñ,Ó.ˆ	Ü×"Ñ" 9Ô-ØÐr,   r’   r8   c                 ó”  •‡‡— ‰dk(  r¬|j                   j                  j                  | «        | j                  j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž t        j                  j                  d «      S ‰dk(  r)| j                  | j                  j                  «       «      S ‰dk(  rq|j                   j                  j                  | «       | j                  j                  | j                  |d   «      «       t        j                  j                  d «      S ‰| j                  v r»|j                   j                  j                  | «       | j                  j                  «       Šˆˆfd„} t        | j                  ‰«      |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž t!        ||||«      S t"        ‰| �I  |‰||«      S c c}w c c}}w c c}w c c}
}	w )NrX  rf  re  r   c                  ór   •— t        j                  «       }|j                  ‰«        t        |‰«      | i |¤ŽS r<   )r]  rd  re  rN   )r’   r8   ÚrrS   rp  s      €€r-   Úcall_random_methz4RandomVariable.call_method.<locals>.call_random_methw  s3   ø€ Ü—M‘M“O�Ø—
‘
˜5Ô!Ø'”w˜q $Ó'¨Ð8°Ñ8Ð8r,   )r‚   rn   Úmutationr]  rX  rF   rç   r   r   ra   rs  rf  re  rv  rj  rN   r"   r3   rw   )r7   rC   rS   r’   r8   rS  r”  r»   rz  rØ  rÙ  rp  r9   s     `        @€r-   rw   zRandomVariable.call_method_  sß  ú€ ð �6Š>Ø�I‰I×"Ñ"×+Ñ+¨DÔ1ØˆD�K‰K×ÑØ26Ö7¨Q�!×&Ñ&Õ(Ò7ðàAGÇÁÃ×P±X°S¸#�3˜×.Ñ.Ó0Ñ0ÓPòô ×-Ñ-×4Ñ4°TÓ:Ð:Ø�ZÒØ—?‘? 4§;¡;×#7Ñ#7Ó#9Ó:Ð:Ø�ZÒØ�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�K‰K× Ñ  ×!2Ñ!2°4¸±7Ó!;Ô<Ü×-Ñ-×4Ñ4°TÓ:Ð:Ø�T×-Ñ-Ñ-Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø—K‘K×(Ñ(Ó*ˆEõ9ð 'ŒG�D—K‘K Ó&Ø26Ö7¨Q�!×&Ñ&Õ(Ò7ðà9?¿¹»×H±°°A�1�a×*Ñ*Ó,Ñ,ÓHòô
 " "Ð&6¸¸fÓEÐEÜ‰wÑ" 2 t¨T°6Ó:Ð:ùò7 8ùÛPùò* 8ùÛHs   ÁH4Á5H9ÇH?Ç3Ic                 ó6  ‡— ‰j                  ˆfd„«       ‰j                  dd«       ‰j                  «        ‰j                  d«        ‰| j	                  | j
                  j                  «       «      «       ‰j                  dd«       ‰j                  «        y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )Nrd  )rA   Úcreate_load_python_moduler]  r  ©r>   s   €r-   r?   z,RandomVariable.reconstruct.<locals>.<lambda>ˆ  s3   ø€ �G×)Ñ)à×5Ñ5´fÓ=Ø×,Ñ,¨XÓ6ðó€ r,   r   Fre  r   T)r@   rq   r´   r�   rs  r]  rf  Úpop_toprÙ   s    `r-   rB   zRandomVariable.reconstruct†  sz   ø€ Ø×Ñóô	
ð 	×Ñ˜a Ô'ð 	�‰ÔØ×Ñ˜*Ô%Ù�—‘ §¡× 4Ñ 4Ó 6Ó7Ô8Ø×Ñ˜a Ô&Ø�‰Õr,   rg  )r(   r)   r*   rÒ   r   r    rj  r   r]  rd  r4   rG   rF   rx   rc  rq  rs  rv  rF  r—  r¡   rw   rB   r¢   r£   s   @r-   rY  rY    só   ø„ ñð 	ðà	×	'Ñ	'ð€Nò
Ðð )-Ø*.ñ.à�v—}‘}Ñ%ð.ð �Ñ'ð.ð
 
õ.òòð ñó ðð$ ñ;ó ð;ð ñ

ó ð

ð ñó ðð
%;ð �?Ñ#ð	%;ð
 �S˜/Ð)Ñ*ð%;ð 
õ%;öNr,   rY  c                   óL   ‡ — e Zd Zed„ «       Zˆ fd„Z	 	 	 	 	 	 	 	 dd„Zd„ Zˆ xZS )ÚWeakRefVariablec                 ó¢   — |j                  dd «      } |«       }|xr t        |«      }t        j                  | ||«      }||d<   t	        |fi |¤ŽS )NrH   )rR   r   r   r‘   r‚  )rC   Úweakref_valueÚoptionsrH   ÚreferentÚreferent_vts         r-   r‘   zWeakRefVariable.buildš  sW   € à—‘˜X tÓ,ˆÙ “?ˆØÒ5Ô-¨fÓ5ˆÜ%×+Ñ+¨B°¸&ÓAˆØ"ˆ�ÑÜ˜{Ñ6¨gÑ6Ð6r,   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r2   )r3   r4   r‡  )r7   r‡  r…  r9   s      €r-   r4   zWeakRefVariable.__init__£  s   ø€ Ü‰ÑÑ#˜7Ò#Ø&ˆÕr,   c                 ó   — | j                   S r<   )r‡  r2  s       r-   rq   zWeakRefVariable.call_function§  s   € ð ×ÑÐr,   c                 óˆ   ‡— ‰j                  ˆfd„«        ‰| j                  «       ‰j                  t        dd«      «       y )Nc                  ó(   •— ‰ j                  dd«      S )NÚweakrefÚref)r±   r  s   €r-   r?   z-WeakRefVariable.reconstruct.<locals>.<lambda>°  s   ø€  g×&>Ñ&>¸yÈ%Ó&P€ r,   r   F)r@   r‡  rA   r   rÙ   s    `r-   rB   zWeakRefVariable.reconstruct¯  s6   ø€ Ø×ÑÓPÔQÙ�× Ñ Ô!Ø×ÑÔ2°1°eÓ<Õ=r,   rì   )	r(   r)   r*   rx   r‘   r4   rq   rB   r¢   r£   s   @r-   r‚  r‚  ™  sJ   ø„ Øñ7ó ð7ô'ð à#ð ð &ð ð -ð	 ð
 
ó ö>r,   r‚  )krÒ   rD  rX  r  r  r]  r;  r  rz   r  Útypingr   r   Útorch._Crk   Útorch._numpyrá  rø  Útorch.utils._pytreerÎ  Ú_pytreer&  r:  r   r   Úbytecode_transformationr   r	   Úcreate_parameter_opr
   Úexcr   r   Úguardsr   r   Úmutation_guardr   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   rZ  r   rƒ  r   rÜ   r    r!   Úuser_definedr"   r#   r$   Útorch._dynamo.symbolic_convertr%   r'   r/   r¥   rÐ   rÕ   r×   rî   rô   rþ   r  Ú	dataclassrA  r  ri  rj   r^   r™  r¦  r­  r½  Ú	lru_cacherÕ  rÚ  rÜ  rû  r…   r  r  r+  r2  rH  r=  rL  rQ  rD  ÚfinfoÚiinfor3  ré  rU  rY  r‚  r+   r,   r-   ú<module>rž     s±  ðñó" Û Û Û Û Û 	Û 
Û Û ß *ã Ý ß $Ð $ç  ß NÝ Fß 9ß 0Ý 5ß MÓ M÷
÷ 
õ 
õ "Ý &ß Gß XÑ Xñ ÝD÷	ñ 	ôKC�Oô KCô\p˜ô pôf�oô ô˜oô ô:7�ô :7ôz;�?ô ;ô(#˜ô #ò
%ôp=˜ô p=ðf ×Ñ÷Mð Mó ðMôl-Ð&?ô l-ô^&HÐ6ô &HôR(�_ô (ô};�oô };ô@)#˜Oô )#ôX˜ô ô&#=˜?ô #=ôL=E�_ô =Eð@ €×Ñ˜QÔñó  ðð( €×Ñ˜QÔñ(ó  ð(ôj"�Oô j"ô\
?�?ô 
?ô-�oô -ô.M˜?ô .Môb4˜ô 4ôn
˜Oô 
ô<7+˜?ô 7+ôt!Ð/ô !ôÐ!5ô ô#Ð/ô #ô(Ð0ô (ô	(Ð-ô 	(ð ‡I�IÐ$Ø‡I�IÐ$Ø‡I�IÐ!ðÐ ô
˜/ô 
ô"N�_ô Nôb>�oõ >r,   