§
    ž²ÅjUö ã                  ó”  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm Z  d dlm!Z! d dl
m"Z" d dlm#Z# d dlm$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=Z=d dl>Z=d dl?Z=d dl@mAc mBZC d d	l=mDZD d d
lEmFZFmGZGmHZHmIZI d dlJmKZK d dlLmMZM d dlNmOZOmPZP d dlQmRZR d dlSmTZTmUZUmVZVmWZW d dlXmYZYmZZZ d dl[m\Z\ d dl]m^Z^ d dl_m`Z`maZa d dlbmcZc 	 d dldZen# ef$ r dZeY nw xY w	 d dlgZ=d dlhmiZj d dlNmkZk d dlgmlZl ddlmmnZn eerCeeeejo        eejp        eejq        fZrdesd<   eeejeejo        ejjo        eejp        ejjp        eejq        ejjq        iZtndZri Ztd dlumvZvmwZwmxZx n# ey$ r Y nw xY w e7d¦  «        Zze=j{        j|        j}        Z~e=j{        j|        j        Z€e=j{        j|        j�        Z‚ ejƒ        ej(        ¦  «        Z„desd<   i Z…d esd!<   d"Z†d#Z‡d$e‡› d%�Zˆ ej‰        eŠ¦  «        Z‹i ZŒd&esd'<    ejƒ        e�¦  «        ZŽd(esd)<    ej�        ¦   «         Z� G d*„ d+e	j‘        ¦  «        Z’ G d,„ d-¦  «        Z“�dgd4„Z”d a•�dhd6„Z–�dhd7„Z—d a˜�did:„Z™�djd;„Zš�dhd<„Z›d=esd><   �dkd?„Zœe 	 	 	 	 	 �dl�dmdK„¦   «         Z�e3�dn�dodO„¦   «         Zže3	 �dn�dpdR„¦   «         Zž�dq�drdS„ZžejŸ        �dhdT„¦   «         Z e=j¡        e=j¢        e=j�        fe=j£        e=j¤        e=j¥        fe=j¦        e=j§        e=j¨        fe=j©        e=jª        fe=j«        e=j¬        fe=j­        e=j®        fe=j¯        e=j°        e=j±        fe=j²        e=j³        e=j´        fe=jµ        e=j¶        e=j·        fe=j¸        e=j¹        fi
Zº G dU„ dV¦  «        Z» e»¦   «         Z¼dW„ Z½�dhdX„Z¾dY„ Z¿dZ„ ZÀ�dsd[„ZÁ�dtd]„ZÂ�dud`„ZÃ�dvdb„ZÄdc„ ZÅdd„ ZÆ G de„ df¦  «        ZÇe3�dwdl„¦   «         ZÈe3�dxdn„¦   «         ZÈe3�dydp„¦   «         ZÈdq„ ZÈejÉ        drk    r&ejÊ        ejË        ejÌ        ej7        ejÍ        ejÎ        fZÏds„ ZÐdt„ ZÑdu„ ZÒdv„ ZÓdw„ ZÔdx„ ZÕdy„ ZÖdz„ Z×d{„ ZØd|„ ZÙd}„ ZÚd~„ ZÛ e
j"        d¦  «        d€„ ¦   «         ZÜ�dzd�„ZÝd‚„ ZÞ�d{d†„Zß�d{d‡„ZàdˆZáejâ         G d‰„ dŠ¦  «        ¦   «         Zãd‹Zä ejå        eä¬Œ¦  «        aæd�esdŽ<   �d|d�„Zç�d}d‘„Zè�d~d™„Zé eMeé¬š¦  «        Zê�ddœ„Zë�dhd�„Zì�d€dŸ„Zí G d „ d¡¦  «        Zîdaïd¢esd£<   �d�d¤„Zðe 	 	 �d‚�dƒd§„¦   «         Zñejâ         G d¨„ d©¦  «        ¦   «         Zò G dª„ d«eÇ¦  «        Zó eó¦   «         eó_ô        d¬„ Zõdd­œd®„Zöd¯„ Z÷�d„d²„Zøe d³„ ¦   «         Zùd´„ Zú�dndµ„Zûd¶„ Züd·„ Zýd¸„ Zþ e
j"        d¦  «        �d…dº„¦   «         Zÿd»„ �Z �d†d¼„�Zd½„ �Z e"d¾¦  «        d¿„ ¦   «         �Ze´e��ee¹�e�e �ed¦  «        �e�j	        �e
�j	        e�j        e=�j        e=�j        e=�j        e=�j        e=�j        e=�j        e=j{        �j        �j        e=�j        �j        h�ZdÀesdÁ<    ea¦   «         r*d d�l�Z�e�                     �e�j        �j        ¦  «         	 dÂ„ �ZdÃ„ �ZdÄ„ �ZdÅ„ �ZdÆ„ �ZdÇ„ �ZdÈ„ �Z  �ei � !                    ¦   «         ¦  «        �Z"dÉesdÊ<    �ei � #                    ¦   «         ¦  «        �Z$dËesdÌ<    �e e�j%        ¦   «         � #                    ¦   «         ¦  «        �Z&dËesdÍ<    �e �e'd¦  «        ¦  «        �Z(dÎesdÏ<    �e �e' �e)d ¦  «        ¦  «        ¦  «        �Z*dÎesdÐ<   �e(�j+        �Z,�e-�j.        �Z/dÑ„ �Z0dÒ„ �Z1dÓ„ �Z2�e3�Z4�d‡dÕ„�Z5dÖ„ �Z6d×„ �Z7dØ„ �Z8dÙ„ �Z9dÚ„ �Z:�dndÛ„�Z;dÜ„ �Z<dÝ„ �Z=�dsdÞ„�Z>�dsdß„�Z?dà�Z@d dá�lA�mB�ZB dâ„ �ZCdã„ �ZDdä„ �ZEdå„ �ZFdd@dæd@dçd@d@e‹�jG        d@f	dè„�ZHdé„ �ZIej         dê„ ¦   «         �ZJ eÇ¦   «         �ZK ejƒ        �eL¦  «        �ZMdëesdì<   g �ZNdíesdî<    eÇ¦   «         �ZO e
j"        d¦  «        dï„ ¦   «         �ZPdð„ �ZQ�dˆdñ„�ZRdò„ �ZSdó„ �ZT�dndô„�ZU e�jV        ¦   «         �ZWdõ„ �ZXe dö„ ¦   «         �ZYd÷„ �ZZdø„ �Z[dù„ �Z\�d‰dû„�Z]dü„ �Z^�dŠdÿ„�Z_�d‹�d„�Z`�dŒ�d„�Za�dn�d��d„�Zb G �d„ �de	j‘        ¦  «        �Zc�dŽ�d
„�Zd�d��d„�Ze�d„ �Zf�d„ �Zg�d�dg�Zh�d�dg�Zig �d¢�Zj�eh�eiz   �ejz   �Zk�d„ �Zl	 	 	 �d��d„�Zm	 	 	 �d��d„�Zn�d„ �Zo�d„ �Zp G �d„ �d¦  «        �Zq�d „ �Zr G �d!„ �d"¦  «        �Zs G �d#„ �d$¦  «        �Zt�d%„ �Zu�d&„ �Zv�d'„ �Zw�d(„ �Zx�d)„ �Zy�d*„ �Zz�d‘�d,„�Z{ejâ         G �d-„ �d.¦  «        ¦   «         �Z|�d’�d1„�Z}�d“�d6„�Z~�d7„ �Z�d8„ �Z€�d9„ �Z��d:„ �Z‚�d”�d=„�Zƒ�d>„ �Z„�d?„ �Z…�d@„ �Z†ej         �d•�dA„¦   «         �Z‡�dB„ �Zˆ�dC„ �Z‰ G �dD„ �dEe=j{        j|        ¦  «        �ZŠ�d–�dH„�Z‹�dI„ �ZŒ�dJ„ �Z� G �dK„ �dL¦  «        �ZŽ �e�¦   «         �Z��dMes�dN<   �d†�dO„�Z‘�dP„ �Z’ej         �dQ„ ¦   «         �Z“�dR„ �Z”�dS„ �Z•�dT„ �Z–�dU„ �Z—�dV„ �Z˜�dW„ �Z™�dX„ �Zš�dY„ �Z›�dZ„ �Zœ�d[„ �Z��d\„ �Zž�d]„ �ZŸi �Z �d^es�d_<   �d`„ �Z¡�da„ �Z¢ G �db„ �dc¦  «        �Z£�d—�df„�Z¤dS (˜  é    )ÚannotationsN)Úcontextmanager)Úis_dataclass)Ú	lru_cache)ÚMethodWrapperType)ÚAnyÚCallableÚcastÚClassVarÚCounterÚDefaultDictÚDequeÚDictÚ	GeneratorÚGenericÚIterableÚIteratorÚKeysViewÚListÚOptionalÚoverloadÚSetÚTupleÚTypeÚTypeVarÚUnionÚ
ValuesView)ÚLiteralÚTypeIs)Úfx)Ú_instruction_counterÚ_len_torch_function_stackÚ_pop_torch_function_stackÚ_push_on_torch_function_stack)Úenable_python_dispatcher)ÚMetricsContext)ÚSourceÚTracingContext)Úis_sparse_compressed)Úlog_chromium_event_internalÚlog_compilation_eventÚrecord_chromium_event_internalÚsignpost_event)Ú_format_graph_codeÚlazy_format_graph_code)Ú_WaitCounter)ÚLazyModuleMixin)Ú
has_tritonÚhas_triton_package)ÚRemovableHandle)Údetect_fake_mode©Ú
LazyStringé   )ÚconfigzTuple[types.ModuleType, ...]ÚNP_SUPPORTED_MODULES© )Ú
FakeTensorÚis_fakeÚmaybe_get_fake_modeÚTzDefaultDict[str, Counter[str]]ÚcountersúDict[str, Any]Úoptimus_scuba_logzAhttps://pytorch.org/docs/main/torch.compiler_troubleshooting.htmlz;https://pytorch.org/docs/main/torch.compiler_nn_module.htmlzSee z& for more information and limitations.zDict[str, List[float]]Úcompilation_time_metricsúDict[str, float]Úcumulative_time_spent_nsc                  ó   — e Zd ZdZdZdZdS )ÚReInplaceTriggerr8   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚAUTO_FUNC_V1ÚAUTO_FUNC_V2Ú
TRITON_OPSr;   ó    úDC:\Projects\Historical\venv\Lib\site-packages\torch/_dynamo/utils.pyrG   rG   œ   s   € € € € € Ø€LØ€LØ€J€J€JrP   rG   c                  óÂ   — e Zd ZU  ej        e¦  «        Zded<   edd„¦   «         Z	edd	„¦   «         Z
ed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚReinplaceCounterszDefaultDict[str, int]Ú_valuesÚtriggerrG   ÚbytesÚintc                óP   — |dk    r| j         d|j        › �xx         |z  cc<   d S d S ©Nr   Úmissed_bytes_)rT   Úname)ÚclsrU   rV   s      rQ   Úadd_missed_bytesz"ReinplaceCounters.add_missed_bytes¦   sA   € à�AŠ:ˆ:ØŒKÐ6¨¬Ð6Ð6Ð7Ð7Ô7¸5Ñ@Ð7Ð7Ñ7Ð7Ð7ð ˆ:rP   Úcountc                óF   — |dk    r| j         d|› �xx         |z  cc<   d S d S ©Nr   Úmissed_tensors_)rT   )r\   rU   r^   s      rQ   Úadd_missed_opportunitiesz*ReinplaceCounters.add_missed_opportunities¬   s?   € à�AŠ:ˆ:ØŒKÐ3¨'Ð3Ð3Ð4Ð4Ô4¸Ñ=Ð4Ð4Ñ4Ð4Ð4ð ˆ:rP   c                ó8   — | j                              ¦   «          d S ©N)rT   Úclear©r\   s    rQ   re   zReinplaceCounters.clear±   s   € àŒ×ÒÑÔÐÐÐrP   c                ó`   — d}t           D ]#}|| j                             d|› �d¦  «        z  }Œ$|S r`   )rG   rT   Úget©r\   ÚsumrU   s      rQ   Úget_total_missedz"ReinplaceCounters.get_total_missedµ   sB   € àˆÝ'ð 	Cð 	CˆGØ�3”;—?’?Ð#>°WÐ#>Ð#>ÀÑBÔBÑBˆCˆCØˆ
rP   c                ój   — d}t           D ](}|| j                             d|j        › �d¦  «        z  }Œ)|S rY   )rG   rT   rh   r[   ri   s      rQ   Úget_total_missed_bytesz(ReinplaceCounters.get_total_missed_bytes¼   sD   € àˆÝ'ð 	Fð 	FˆGØ�3”;—?’?Ð#A°7´<Ð#AÐ#AÀ1ÑEÔEÑEˆCˆCØˆ
rP   c                óD   — | j         rt          dd| j         ¦  «         d S d S )NÚinductorÚreinplace_counters)rT   r-   rf   s    rQ   ÚlogzReinplaceCounters.logÃ   s6   € ð Œ;ð 	JÝ˜:Ð';¸S¼[ÑIÔIÐIÐIÐIð	Jð 	JrP   N)rU   rG   rV   rW   )rU   rG   r^   rW   )rJ   rK   rL   ÚcollectionsÚdefaultdictrW   rT   Ú__annotations__Úclassmethodr]   rb   re   rk   rm   rq   r;   rP   rQ   rS   rS   ¢   sé   € € € € € € Ø%< [Ô%<¸SÑ%AÔ%A€GÐAÐAÐAÑAð ðAð Að Añ „[ðAð
 ð>ð >ð >ñ „[ð>ð ðð ñ „[ðð ðð ñ „[ðð ðð ñ „[ðð ðJð Jñ „[ðJð Jð JrP   rS   Úrowsú3Union[List[Tuple[str, object]], List[List[object]]]Úheadersú!Union[Tuple[str, ...], List[str]]ÚreturnÚstrc                óÀ   — 	 dd l }|                      | |¬¦  «        S # t          $ r6 d                     d„ t          j        |g| ¦  «        D ¦   «         ¦  «        cY S w xY w)Nr   ©rx   ú
c              3  óf   K  — | ],}d                       t          t          |¦  «        ¦  «        V — Œ-dS )ú, N)ÚjoinÚmapr{   )Ú.0Úrows     rQ   ú	<genexpr>ztabulate.<locals>.<genexpr>Ó   sG   è è € ð 
ð 
Ø),ˆD�IŠI•c�#˜s‘m”mÑ$Ô$ð
ð 
ð 
ð 
ð 
ð 
rP   )ÚtabulateÚImportErrorr�   Ú	itertoolsÚchain)rv   rx   r†   s      rQ   r†   r†   Ê   sŽ   € ð
Øˆˆˆà× Ò  ¨wÐ Ñ7Ô7Ð7øÝð 
ð 
ð 
Ø�yŠyð 
ð 
Ý09´ÀÀ	È4Ñ0PÔ0Pð
ñ 
ô 
ñ 
ô 
ð 	
ð 	
ð 	
ð
øøøs   ‚ �=AÁAÚNonec                 ó   — t           dz   a d S ©Nr8   )Ú
curr_framer;   rP   rQ   Úincrement_framerŽ   Ü   s   € å˜a‘€J€J€JrP   c                 ón   — t                                ¦   «          t                               ¦   «          dad S ©Nr   )rE   re   rC   r�   r;   rP   rQ   Úreset_frame_countr‘   â   s/   € å×"Ò"Ñ$Ô$Ð$Ý×"Ò"Ñ$Ô$Ð$Ø€J€J€JrP   ÚcntrW   c                ó   — t           | z  a d S rd   )Úop_count)r’   s    rQ   Úincrement_op_countr•   ì   s   € å��O€H€H€HrP   c                 ó¸   — i } t                                ¦   «         D ]\  }}|dz  | |<   Œ|                      dd¦  «        |                      dd¦  «        z   | d<   | S )Nç    eÍÍAÚentire_frame_compiler   Úentire_backward_compileÚtotal_wall_time)rE   Úitemsrh   )Útotal_by_keyÚphaseÚtimings      rQ   Úcalculate_time_spentrŸ   ó   sx   € Ø€LÝ1×7Ò7Ñ9Ô9ð +ð +‰ˆˆvØ$ s™lˆ�UÑÐà&2×&6Ò&6Ø ñ'ô 'à×ÒÐ2°AÑ6Ô6ñ'7€LÐ"Ñ#ð ÐrP   c            	     ó¨   — t          ¦   «         } d}|                      ¦   «         D ]\  }}|› d|› dt          |d¦  «        › �}Œt          |¦  «         d S )NzTIMING:ú ú:é   )rŸ   r›   ÚroundÚprint)rœ   ÚoutÚkeyÚvalues       rQ   Úprint_time_reportr©     se   € Ý'Ñ)Ô)€Là
€CØ"×(Ò(Ñ*Ô*ð /ð /‰
ˆˆUØÐ.Ð.�sÐ.Ð.�U 5¨!™_œ_Ð.Ð.ˆˆå	ˆ#�J„J€J€J€JrP   r&   Ú_METRICS_CONTEXTc                 ó   — t           S rd   )rª   r;   rP   rQ   Úget_metrics_contextr¬   %  s   € ÝÐrP   Fr§   Ú
phase_nameúOptional[str]Úlog_pt2_compile_eventÚboolÚmetadataúOptional[Dict[str, object]]Údynamo_compile_column_usÚlog_waitcounterúGenerator[Any, None, None]c           	   #  óø  K  — |�|                      d¦  «        sJ ‚|r|}| }n| }d}| t          vr
g t          | <   i }|r|                     |¦  «         |r|                     d|i¦  «         t          ¦   «         }	t	          j        ¦   «         }
|	                     ||
||¦  «         	 t          j         	                    | › d�¦  «        5  |rAt          d| › �¦  «                             ¦   «         5  dV — ddd¦  «         n# 1 swxY w Y   ndV — ddd¦  «         n# 1 swxY w Y   t	          j        ¦   «         }||
z
  }t          |                               |dz  ¦  «         |	                     ||i |
|¦  «         |rRt          ¦   «         }|                     ¦   «         r|                     ||dz  ¦  «         t"          |xx         |z  cc<   dS dS # t	          j        ¦   «         }||
z
  }t          |                               |dz  ¦  «         |	                     ||i |
|¦  «         |rPt          ¦   «         }|                     ¦   «         r|                     ||dz  ¦  «         t"          |xx         |z  cc<   w xY w)aò  
    dynamo_timed is a context manager
    By wrapping a function in dynamo_timed, we can get a few things:

    1) Log timings to pt2_compile_events.
    2) Log timings to CompilationMetrics (dynamo_compile).
    3) Chromium events.
    4) Storing a record in compilation_time_metrics
       For example:

        def _foo(...):
            with dynamo_timed("_foo"):
                ...

        Would show up as an entry in our timing dict:
        OrderedDict([('_foo', [0.083690, 0.23949, 3.1425e-05])])
        This is extremely useful for granular debugging.

    Although it is tempting to use dynamo_timed as a decorator, please do not.
    In its decorator form it makes cProfile traces less useful as dynamo_timed
    suddenly becomes a bottleneck for lots of function calls (as only one parent
    pointer is recorded).

    Params:
    - key: key into compile_time_metrics. If phase_name is not provided, this is
      also the event name used for pt2_compile_events logs and chromium events.
    - phase_name: Optional override for the event name.
    - log_pt2_compile_event: Whether to log a pt2 compile event internally.
    - metadata: Extra metadata to put in pt2_compile_events.
    - dynamo_compile_column_us: If provided, updates the specified CompilationMetrics
      field to be logged to dyname_compile column. We expect all columns to be _us;
      therefore, the field name must end with "_us".
    - log_waitcounter: If set, we'll log a waitcounter of the form "pytorch.dynamo_timed.{key}"
    NÚ_usÚfn_namez (dynamo_timed)zpytorch.dynamo_timed.r—   éè  )ÚendswithrC   ÚupdateÚget_chromium_event_loggerÚtimeÚtime_nsÚlog_event_startÚtorchÚprofilerÚrecord_functionr0   ÚguardÚappendÚlog_event_endr¬   Úin_progressÚ	incrementrE   )r§   r­   r¯   r±   r³   r´   Ú
event_namer¸   Úevent_metadataÚchromium_logÚstart_nsÚend_nsÚtime_spent_nsÚmetrics_contexts                 rQ   Údynamo_timedrÏ   )  sŒ  è è € ðZ  Ð+Ø'×0Ò0°Ñ7Ô7Ð7Ð7Ð7àð Øˆ
Øˆˆàˆ
Øˆà
Õ*Ð*Ð*Ø(*Õ  Ñ%à€NØð (Ø×Ò˜hÑ'Ô'Ð'Øð 4Ø×Ò˜y¨'Ð2Ñ3Ô3Ð3å(AÑ(CÔ(C€LÝŒ|‰~Œ~€HØ× Ò Ø�H˜nÐ.Cñô ð ðBÝŒ^×+Ò+¨sÐ,CÐ,CÐ,CÑDÔDð 	ð 	Øð Ý!Ð"?¸#Ð"?Ð"?Ñ@Ô@×FÒFÑHÔHð ð Ø�E�E�Eðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð ���ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ”‘”ˆØ Ñ)ˆÝ  Ô%×,Ò,¨]¸SÑ-@ÑAÔAÐAØ×"Ò"Ø˜  HÐ.Cñ	
ô 	
ð 	
ð $ð 	BÝ1Ñ3Ô3ˆOØ×*Ò*Ñ,Ô,ð Ø×)Ò)Ø,¨m¸tÑ.Cñô ð õ % ZÐ0Ð0Ô0°MÑAÐ0Ð0Ñ0Ð0Ð0ð	Bð 	Bøõ ”‘”ˆØ Ñ)ˆÝ  Ô%×,Ò,¨]¸SÑ-@ÑAÔAÐAØ×"Ò"Ø˜  HÐ.Cñ	
ô 	
ð 	
ð $ð 	BÝ1Ñ3Ô3ˆOØ×*Ò*Ñ,Ô,ð Ø×)Ò)Ø,¨m¸tÑ.Cñô ð õ % ZÐ0Ð0Ô0°MÑAÐ0Ð0Ñ0Ð0Ð0Ð0Ð0sU   Â&"G Ã'DÃ/D Ã4DÄ D	ÄDÄD	ÄDÄG ÄD Ä G Ä#D Ä$G ÇB(I9ÚreprúLiteral['str']Ú	aggregatec                ó   — d S rd   r;   ©rÐ   rÒ   s     rQ   Úcompile_timesrÕ   ‹  ó   € à€CrP   úLiteral['csv']úTuple[List[str], List[object]]c                ó   — d S rd   r;   rÔ   s     rQ   rÕ   rÕ   �  ó	   € ð €CrP   c                ó&  ‡‡— d„ fˆfd„	Š| dk    r+ˆfd„t           D ¦   «         }d}|t          |d¬¦  «        z  }|S | dk    rOˆfd	„t                                ¦   «         D ¦   «         }t          t                                ¦   «         ¦  «        }||fS d
S )a¿  
    Get metrics about torchdynamo frontend/backend compilation times.

    Accumulates information from functions tagged with `dynamo_timed`.

    repr='str' returns a printable string for user interaction, and 'csv'
    returns headers, rows which can be logged for output

    aggregate causes values from multiple compilations (e.g. split graphs)
    to be accumulated into one value.  If false, expect more than one value
    per metric.
    c                ó   — | S rd   r;   ©Úxs    rQ   ú<lambda>zcompile_times.<locals>.<lambda>¥  s   € ¨€ rP   c                ó~   •— ‰r |t          | ¦  «        ¦  «        S d                     t          || ¦  «        ¦  «        S )Nr€   )rj   r�   r‚   )ÚvaluesÚitem_fnrÒ   s     €rQ   Úfmt_fnzcompile_times.<locals>.fmt_fn¥  s=   ø€ Øð 	(Ø�7�3˜v™;œ;Ñ'Ô'Ð'Ø�yŠy�˜W fÑ-Ô-Ñ.Ô.Ð.rP   r{   c                óF   •— g | ]}| ‰t           |         d „ ¬¦  «        f‘ŒS )c                ó
   — | d›S )Nz.4fr;   rÝ   s    rQ   rß   z*compile_times.<locals>.<listcomp>.<lambda>¬  s
   € ÈÀjÀj€ rP   ©râ   )rC   )rƒ   Úkrã   s     €rQ   ú
<listcomp>z!compile_times.<locals>.<listcomp>«  sG   ø€ ð 
ð 
ð 
àð ��Õ/°Ô2Ð<PÐ<PÐQÑQÔQÐRð
ð 
ð 
rP   z!TorchDynamo compilation metrics:
)ÚFunctionzRuntimes (s)r}   Úcsvc                ó,   •— g | ]} ‰|d „ ¬¦  «        ‘ŒS )c                ó
   — | d›S )Nz.6fr;   rÝ   s    rQ   rß   z*compile_times.<locals>.<listcomp>.<lambda>´  s
   € ¨1¨
¨
€ rP   ræ   r;   )rƒ   Úvrã   s     €rQ   rè   z!compile_times.<locals>.<listcomp>³  s<   ø€ ð 
ð 
ð 
àð ˆF�1Ð2Ð2Ð3Ñ3Ô3ð
ð 
ð 
rP   N)rC   r†   rá   ÚlistÚkeys)rÐ   rÒ   rv   r¦   rá   rx   rã   s    `    @rQ   rÕ   rÕ   —  sè   øø€ ð  +˜{ð /ð /ð /ð /ð /ð /ð
 ˆu‚}€}ð
ð 
ð 
ð 
å-ð
ñ 
ô 
ˆð 3ˆØ�x˜Ð&BÐCÑCÔCÑCˆØˆ
Ø	�Šˆð
ð 
ð 
ð 
å-×4Ò4Ñ6Ô6ð
ñ 
ô 
ˆõ Õ/×4Ò4Ñ6Ô6Ñ7Ô7ˆØ˜ˆÐØˆ4rP   c                 óX   — t                                t          dd¬¦  «        ¦  «         d S )Nr{   TrÔ   )rq   ÚinforÕ   r;   rP   rQ   Údump_compile_timesrò   ¼  s'   € å‡H‚H�] °Ð6Ñ6Ô6Ñ7Ô7Ð7Ð7Ð7rP   c                  ó&   — e Zd Zddd„Zd„ Zdd„ZdS )ÚDuplicateWarningCheckeré   ÚmaxsizerW   rz   rŠ   c                ó<   — || _         |                      ¦   «          d S rd   )rö   Úreset)Úselfrö   s     rQ   Ú__init__z DuplicateWarningChecker.__init__Ð  s   € ØˆŒØ�
Š
‰ŒˆˆˆrP   c                ó6   — t          j        ¦   «         | _        d S rd   )rr   ÚOrderedDictÚset©rù   s    rQ   rø   zDuplicateWarningChecker.resetÔ  s   € ÝÔ*Ñ,Ô,ˆŒˆˆrP   r§   ú!Union[str, Tuple[object, object]]r°   c                ó,  — || j         v r+| j                              |d¬¦  «         t          j        sdS n_d | j         |<   t	          | j         ¦  «        | j        k    r8| j                              d¬¦  «         t	          | j         ¦  «        | j        k    °8dS )NT)ÚlastF)rý   Úmove_to_endr9   ÚverboseÚlenrö   Úpopitem©rù   r§   s     rQ   ÚaddzDuplicateWarningChecker.add×  s“   € Ø�$”(ˆ?ˆ?ØŒH× Ò  ¨4Ð Ñ0Ô0Ð0Ý”>ð Ø�uðð !ˆDŒH�S‰MÝ�d”h‘-”- $¤,Ò.Ð.Ø”× Ò  eÐ Ñ,Ô,Ð,õ �d”h‘-”- $¤,Ò.Ð.àˆtrP   N)rõ   )rö   rW   rz   rŠ   )r§   rÿ   rz   r°   )rJ   rK   rL   rú   rø   r  r;   rP   rQ   rô   rô   Ï  sP   € € € € € ðð ð ð ð ð-ð -ð -ð	ð 	ð 	ð 	ð 	ð 	rP   rô   c                 ó�   — t           j                             dd¦  «        dk    } | rt          ¦   «         S t	          j        ¦   «         S )NÚTORCH_COMPILE_DEBUGÚ0Ú1)ÚosÚenvironrh   Úadd_file_handlerÚ
contextlibÚ	ExitStack)Úcompile_debugs    rQ   Úsetup_compile_debugr  æ  s@   € Ý”J—N’NÐ#8¸#Ñ>Ô>À#ÒE€Màð "ÝÑ!Ô!Ð!åÔÑ!Ô!Ð!rP   c                 ó8   — t                                ¦   «          d S rd   )Úgraph_break_dup_warning_checkerrø   r;   rP   rQ   Úreset_graph_break_dup_checkerr  ï  s   € Ý#×)Ò)Ñ+Ô+Ð+Ð+Ð+rP   c                 óœ  ‡‡— t           j                             t          ¦   «         d¦  «        } t          j        | d¬¦  «         t          j        t           j                             | d¦  «        ¦  «        Št          j        d¦  «        Š‰                     ‰¦  «         t          j
        ¦   «         }|                     ˆˆfd„¦  «         |S )NÚtorchdynamoT©Úexist_okz	debug.logztorch._dynamoc                 ó.   •— ‰                      ‰ ¦  «        S rd   ©ÚremoveHandler©Úlog_file_handlerÚloggers   €€rQ   rß   z"add_file_handler.<locals>.<lambda>ü  s   ø€ ˜v×3Ò3Ð4DÑEÔE€ rP   )r  Úpathr�   Úget_debug_dirÚmakedirsÚloggingÚFileHandlerÚ	getLoggerÚ
addHandlerr  r  Úcallback)Úlog_pathÚ	exitstackr  r  s     @@rQ   r  r  ó  s­   øø€ ÝŒw�|Š|�M™OœO¨]Ñ;Ô;€HÝ„K� 4Ð(Ñ(Ô(Ð(åÔ*­2¬7¯<ª<¸À+Ñ+NÔ+NÑOÔOÐÝÔ˜Ñ/Ô/€FØ
×ÒÐ&Ñ'Ô'Ð'åÔ$Ñ&Ô&€IØ×ÒÐEÐEÐEÐEÐEÑFÔFÐFØÐrP   c                 ó0  ‡‡— t          j        ¦   «         } t          j        �tt	          j        t          j        ¦  «        Št          j        j         	                    ¦   «         D ]0Š‰ 
                    ‰¦  «         |                      ˆˆfd„¦  «         Œ1| S | S )Nc                 ó.   •— ‰                      ‰ ¦  «        S rd   r  r  s   €€rQ   rß   z setup_log_file.<locals>.<lambda>  s   ø€  v×';Ò';Ð<LÑ'MÔ'M€ rP   )r  r  r9   Úlog_file_namer#  r$  rÀ   Ú_loggingÚ	_internalÚget_loggersr&  r'  )r)  r  r  s    @@rQ   Úsetup_log_filer0     s–   øø€ ÝÔ$Ñ&Ô&€IÝÔÐ'Ý"Ô.­vÔ/CÑDÔDÐÝ”nÔ.×:Ò:Ñ<Ô<ð 	Oð 	OˆFØ×ÒÐ.Ñ/Ô/Ð/Ø×ÒÐMÐMÐMÐMÐMÑNÔNÐNÐNØÐàÐrP   c                ón   — t          ¦   «         › d|j        › dt          | ¦  «        j        › d|j        › d�S )Nz/error_recordings/Ú_z.rec)r!  Úco_nameÚtyperJ   Úco_firstlineno)ÚexcÚcodes     rQ   Úgen_record_file_namer8    sR   € Ý‰oŒoð ?ð ?Ø„ð?ð ?Ý�S‘	”	Ô"ð?ð ?Ø%)Ô%8ð?ð ?ð ?ð ?rP   Úfilenamec                óº  — 	 t           j                             | ¦  «        rt                               d| ¦  «         d S t          j        t           j                             | ¦  «        d¬¦  «         t          | d¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S # t          $ r t           
                    d| ¦  «         Y d S w xY w)Nz9Unable to write execution record %s; file already exists.Tr  Úwbz#Unable to write execution record %s)r  r   Úexistsrq   Úwarningr"  ÚdirnameÚopenÚdumpÚ	ExceptionÚ	exception)r9  Úexec_recordÚfs      rQ   Úwrite_record_to_filerE    s*  € ð
GÝŒ7�>Š>˜(Ñ#Ô#ð 	$Ý�KŠKØKÈXñô ð ð ð õ ŒK�œŸš¨Ñ1Ô1¸DÐAÑAÔAÐAÝ�h Ñ%Ô%ð $¨Ø× Ò  Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $øåð Gð Gð GÝ�ŠÐ;¸XÑFÔFÐFÐFÐFÐFðGøøøs;   ‚:B1 ¾AB1 ÂB$ÂB1 Â$B(Â(B1 Â+B(Â,B1 Â1%CÃCÚgúfx.Graphc                ó:   — d}| j         D ]}d|j        v r|dz  }Œ|S )Nr   Úcallr8   )ÚnodesÚop)rF  ÚcÚns      rQ   Úcount_callsrN    s2   € Ø	€AØŒWð ð ˆØ�Q”Tˆ>ˆ>Ø�‰FˆAøØ€HrP   rÞ   c                ó   — | S rd   r;   rÝ   s    rQ   ÚidentityrP  '  s   € Ø€HrP   c                ó`   — 	 t          | ¦  «         dS # t          $ r Y dS t          $ r Y dS w xY w)NTF)ÚhashÚ	TypeErrorÚ
ValueErrorrÝ   s    rQ   ÚhashablerU  +  sR   € ðÝˆQ‰ŒˆØˆtøÝð ð ð Øˆuˆuåð ð ð Øˆuˆuðøøøs   ‚ “
- 	-¬-c                 ó   — d S rd   r;   ©ÚargsÚkwargss     rQ   ÚnothingrZ  6  s   € Ø€DrP   c                  ó>   — e Zd ZdZd„ Zd„ Zd
d„Zd„ Zd„ Zd„ Z	d	„ Z
dS )ÚExactWeakKeyDictionaryz\Similar to weakref.WeakKeyDictionary, but use `is`/`id` rather than `==` to compare equalityc                ó"   — i | _         i | _        d S rd   ©rá   Úrefsrþ   s    rQ   rú   zExactWeakKeyDictionary.__init__=  s   € ØˆŒØˆŒ	ˆ	ˆ	rP   c                ó6   — | j         t          |¦  «                 S rd   )rá   Úidr  s     rQ   Ú__getitem__z"ExactWeakKeyDictionary.__getitem__A  s   € ØŒ{�2˜c™7œ7Ô#Ð#rP   Nc                óR   — | j                              t          |¦  «        |¦  «        S rd   )rá   rh   ra  )rù   r§   Údefaults      rQ   rh   zExactWeakKeyDictionary.getD  s   € ØŒ{�Š�r #™wœw¨Ñ0Ô0Ð0rP   c                ó.   — t          |¦  «        | j        v S rd   )ra  rá   r  s     rQ   Ú__contains__z#ExactWeakKeyDictionary.__contains__G  s   € Ý�#‰wŒw˜$œ+Ð%Ð%rP   c                ó�   ‡ ‡— t          |¦  «        Š‰‰ j        vr!t          j        |ˆˆ fd„¦  «        ‰ j        ‰<   |‰ j        ‰<   d S )Nc                ó.   •— ‰                      ‰¦  «        S rd   )Ú
_remove_id)ÚrefÚidxrù   s    €€rQ   rß   z4ExactWeakKeyDictionary.__setitem__.<locals>.<lambda>M  s   ø€ ¸$¿/º/È#Ñ:NÔ:N€ rP   )ra  r_  Úweakrefrj  rá   )rù   r§   r¨   rk  s   `  @rQ   Ú__setitem__z"ExactWeakKeyDictionary.__setitem__J  sR   øø€ Ý�‰gŒgˆØ�d”iÐÐÝ$œ[¨Ð.NÐ.NÐ.NÐ.NÐ.NÑOÔOˆDŒI�c‰NØ ˆŒ�CÑÐÐrP   c                óN   — || j         v r| j         |= || j        v r
| j        |= d S d S rd   r^  )rù   rk  s     rQ   ri  z!ExactWeakKeyDictionary._remove_idP  s;   € Ø�$”+ÐÐØ”˜CÐ Ø�$”)ÐÐØ”	˜#���ð ÐrP   c                ój   — | j                              ¦   «          | j                             ¦   «          d S rd   )r_  re   rá   rþ   s    rQ   re   zExactWeakKeyDictionary.clearV  s.   € ØŒ	�ŠÑÔÐØŒ×ÒÑÔÐÐÐrP   rd   )rJ   rK   rL   Ú__doc__rú   rb  rh   rf  rm  ri  re   r;   rP   rQ   r\  r\  :  sˆ   € € € € € ØfÐfðð ð ð$ð $ð $ð1ð 1ð 1ð 1ð&ð &ð &ð!ð !ð !ðð ð ðð ð ð ð rP   r\  ÚobjÚobjectÚallowed_typesúType[T]ú	TypeIs[T]c                ó   — d S rd   r;   ©rq  rs  s     rQ   Úistyperx  [  rÖ   rP   ú)Tuple[Type[List[T]], Type[Tuple[T, ...]]]c                ó   — d S rd   r;   rw  s     rQ   rx  rx  `  rÚ   rP   úIterable[type]c                ó   — d S rd   r;   rw  s     rQ   rx  rx  g  rÖ   rP   c                óŠ   — t          |t          t          t          f¦  «        rt	          | ¦  «        |v S t	          | ¦  «        |u S )zisinstance() without subclasses)Ú
isinstanceÚtuplerî   rý   r4  rw  s     rQ   rx  rx  l  s=   € å�-¥%­­sÐ!3Ñ4Ô4ð *Ý�C‰yŒy˜MÐ)Ð)Ý�‰9Œ9˜Ð%Ð%rP   ©rI   é   c                ó    — t           j        dk    rt          | t          ¦  «        rdS t          | t          j        ¦  «        p| t          j        u S )Nr€  T)ÚsysÚversion_infor~  Ú_builtin_final_typing_classesÚtypingÚ_Finalr   ©r¨   s    rQ   Ú	is_typingr‰  €  sE   € õ Ô˜7Ò"Ð"¥z°%Õ9VÑ'WÔ'WÐ"ØˆtÝ�e�Vœ]Ñ+Ô+ÐF¨u½¼Ð/FÐFrP   c                óä   — t           sdS t          | t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j	        f¦  «        S ©NF)
Únprx  Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64rˆ  s    rQ   Úis_numpy_int_typer•  Ž  sQ   € Ýð ØˆuåØåŒGÝŒHÝŒHÝŒHÝŒHÝŒIÝŒIÝŒIð		
ñô ð rP   c                óv   — t           sdS t          | t           j        t           j        t           j        f¦  «        S r‹  )rŒ  rx  Úfloat16Úfloat32Úfloat64rˆ  s    rQ   Úis_numpy_float_typerš  ¡  s8   € Ýð ØˆuåØåŒJÝŒJÝŒJð	
ñô ð rP   c                óz   — t          | t          j        ¦  «        o!t          t	          j        | d¦  «        ¦  «        S )NÚ__wrapped__)r~  Ú	functoolsÚ_lru_cache_wrapperÚis_functionÚinspectÚgetattr_staticrˆ  s    rQ   Úis_lru_cache_wrapped_functionr¢  ¯  s:   € Ý�e�YÔ9Ñ:Ô:ð ½{ÝÔ˜u mÑ4Ô4ñ@ô @ð rP   c                ó€   — t          | ¦  «        p/t          | t          j        j        t          j        j        f¦  «        S rd   )rŸ  r~  rÀ   Ú_opsÚOpOverloadPacketÚ
OpOverloadrˆ  s    rQ   Úis_function_or_wrapperr§  µ  s7   € Ý�uÑÔð ¥Ø•”
Ô+­U¬ZÔ-BÐCñ"ô "ð rP   c                óz   — t          | t          j        t          j        t          j        t          j        f¦  «        S rd   )r~  ÚtypesÚFunctionTypeÚBuiltinFunctionTypeÚMethodDescriptorTypeÚWrapperDescriptorTyperˆ  s    rQ   rŸ  rŸ  »  s4   € ÝØåÔÝÔ%ÝÔ&ÝÔ'ð		
ñô ð rP   c                ó�   — t          | t          j        t          j        t          j        t          j        t          j        f¦  «        S rd   )r~  r©  ÚGetSetDescriptorTyper¬  r­  ÚMemberDescriptorTyper   rˆ  s    rQ   Úis_wrapper_or_member_descriptorr±  Ç  s<   € ÝØõ Ô&åÔ&åÔ'åÔ&åÔ#ð	
ñô ð rP   c                ó,   — t          | ¦  «        d         S r�   )Ú unwrap_with_attr_name_if_wrapper)Úfns    rQ   Úunwrap_if_wrapperrµ  Ù  s   € Ý+¨BÑ/Ô/°Ô2Ð2rP   c                óŠ   — t          | ¦  «        r/t          j        | dd¦  «        rt          j        | d| ¦  «        } d}nd }| |fS )NÚ_torchdynamo_inlineF)rŸ  r   r¡  )r´  Ú	attr_names     rQ   r³  r³  Ý  sT   € õ �2�„ð �7Ô1°"Ð6KÈUÑSÔSð ÝÔ# BÐ(=¸rÑBÔBˆØ)ˆ	ˆ	àˆ	Øˆyˆ=ÐrP   c                óH   — t           sdS t          | t           j        ¦  «        S r‹  )rŒ  rx  Úndarrayrˆ  s    rQ   Úis_numpy_ndarrayr»  è  s!   € Ýð Øˆuå�%�œÑ$Ô$Ð$rP   c                ó    — t           j        t           j        j        gt          j        ¢R }|t           j        j        fz   }t          | |¦  «        S )zCheck of obj is a tensor)	rÀ   ÚTensorÚnnÚ	Parameterr9   Útraceable_tensor_subclassesÚ_subclassesr<   rx  )rq  Útensor_lists     rQ   ÚistensorrÃ  ï  sO   € õ 	ŒÝŒÔð%õ 
Ô	+ð%ð %€Kð
 ¥Ô!2Ô!=Ð ?Ñ?€KÝ�#�{Ñ#Ô#Ð#rP   c                ó,   — t          | t          ¦  «        S rd   )r~  r1   )Úmods    rQ   Úis_lazy_modulerÆ  ú  s   € Ý�c�?Ñ+Ô+Ð+rP   rõ   c                 ó   — t          | Ž  d S rd   )r¥   ©rX  s    rQ   Ú
print_oncerÉ  þ  s   € å	ˆ4€L€L€L€LrP   c                ón   ‡— | Šˆfd„}|j         �t          |j         ¦  «        dk    sJ ‚|j         d         S )zNSome black magic to create a cell object that usually only exists in a closurec                 ó   •— ‰ S rd   r;   rÝ   s   €rQ   rD  zmake_cell.<locals>.f  s   ø€ ØˆrP   Nr8   r   )Ú__closure__r  )ÚvalrD  rÞ   s     @rQ   Ú	make_cellrÎ    sR   ø€ à€Aðð ð ð ð ð Œ=Ð$­¨Q¬]Ñ);Ô);¸qÒ)@Ð)@Ð)@Ð@ØŒ=˜ÔÐrP   c                ó2  — 	 t          d„ | D ¦   «         ¦  «        }d„ |                     ¦   «         D ¦   «         }||fS # t          $ rO}ddlm} ddlm}  |d || Ž › d |t          |                     ¦   «         ¦  «        Ž › �|¬¦  «         Y d }~d S d }~ww xY w)	Nc              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rd   ©Úas_proxy©rƒ   Úargs     rQ   r…   z$proxy_args_kwargs.<locals>.<genexpr>  s*   è è € Ð:Ð:¨c˜3Ÿ<š<™>œ>Ð:Ð:Ð:Ð:Ð:Ð:rP   c                ó>   — i | ]\  }}||                      ¦   «         “ŒS r;   rÑ  )rƒ   r§   rÔ  s      rQ   ú
<dictcomp>z%proxy_args_kwargs.<locals>.<dictcomp>  s&   € ÐKÐKÐK±°°S˜˜SŸ\š\™^œ^ÐKÐKÐKrP   r8   ©Úunimplemented)Útypestrzcall_function args: r¡   ©Úfrom_exc)	r  r›   ÚNotImplementedErrorr6  rØ  Úvariables.baserÙ  rî   rá   )rX  rY  Ú
proxy_argsÚproxy_kwargsÚerØ  rÙ  s          rQ   Úproxy_args_kwargsrá    sö   € ð
ÝÐ:Ð:°TÐ:Ñ:Ô:Ñ:Ô:ˆ
ØKÐK¸F¿LºL¹N¼NÐKÑKÔKˆØ˜<Ð'Ð'øÝð 
ð 
ð 
Ø&Ð&Ð&Ð&Ð&Ð&Ø+Ð+Ð+Ð+Ð+Ð+àˆØU 7 7¨D >ÐUÐU°G°G½TÀ&Ç-Â-Á/Ä/Ñ=RÔ=RÐ4SÐUÐUØð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøøð	
øøøs   ‚:= ½
BÁABÂBrí   úOptional[float]úOptional[int]c                ó.   — | €d nt          | dz  ¦  «        S ©Nr¹   ©rW   ©rí   s    rQ   Ú	to_int_msrè    s   € Ø�9ˆ4ˆ4¥# a¨$¡h¡-¤-Ð/rP   c                ó.   — | €d nt          | dz  ¦  «        S )Ni@B ræ  rç  s    rQ   Ú	to_int_usrê  #  s   € Ø�9ˆ4ˆ4¥# a¨)¡mÑ"4Ô"4Ð4rP   rI   c                  óº  — e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded<   dZ	ded	<   dZ
ded
<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded <   dZded!<   dZded"<   dZ ded#<   dZ!ded$<   dZ"ded%<   dZ#ded&<   dZ$ded'<   dZ%ded(<   dZ&ded)<   dZ'ded*<   dZ(ded+<   dZ)ded,<   dZ*ded-<   dZ+ded.<   dZ,ded/<   dZ-ded0<   dZ.ded1<   dZ/ded2<   dZ0ded3<   dZ1ded4<   dZ2ded5<   dZ3ded6<   dZ4ded7<   dZ5ded8<   dZ6ded9<   dZ7ded:<   dZ8ded;<   dZ9ded<<   dZ:ded=<   dZ;ded><   e<Z=d?ed@<   dZ>dedA<   dZ?dedB<   dZ@dedC<   dZAdedD<   dZBdedE<   dZCdedF<   dZDdedG<   dZEdedH<   dZFdedI<   dZGdJedK<   dS )LÚCompilationMetricsNr®   Ú
compile_idÚ	frame_keyr3  Úco_filenamerã  r5  Ú
cache_sizeÚaccumulated_cache_sizeÚguard_countÚshape_env_guard_countÚgraph_op_countÚgraph_node_countÚgraph_input_countrâ  Ú
start_timeÚentire_frame_compile_time_sÚbackend_compile_time_sÚinductor_compile_time_sÚcode_gen_time_sÚ	fail_typeÚfail_reasonÚfail_user_frame_filenameÚfail_user_frame_linenozOptional[Set[str]]Únon_compliant_opsÚcompliant_custom_opsÚrestart_reasonsÚdynamo_time_before_restart_szOptional[bool]Úhas_guarded_codeÚremote_cache_time_saved_sÚstructured_logging_overhead_sÚconfig_suppress_errorsÚ config_inline_inbuilt_nn_modulesÚspecialize_floatÚdynamo_configÚ
is_forwardÚnum_triton_bundlesÚ!remote_fx_graph_cache_get_time_msÚ!remote_fx_graph_cache_put_time_msÚstart_time_usÚduration_usÚ!dynamo_cumulative_compile_time_usÚ'aot_autograd_cumulative_compile_time_usÚ#inductor_cumulative_compile_time_usÚ,inductor_code_gen_cumulative_compile_time_usÚtriton_compile_time_usÚruntime_cudagraphify_time_usÚruntime_triton_autotune_time_usÚ%dynamo_compile_time_before_restart_usÚcuda_synchronize_time_usÚ distributed_ephemeral_timeout_usÚstructured_logging_overhead_usÚ!remote_fx_graph_cache_get_time_usÚ!remote_fx_graph_cache_put_time_usÚ#backward_cumulative_compile_time_usÚend_time_usÚpre_grad_pass_time_usÚpost_grad_pass_time_usÚjoint_graph_pass_time_usrW   Úlog_format_versionÚinductor_configÚremote_cache_versionÚ"inductor_fx_remote_cache_hit_countÚ#inductor_fx_remote_cache_miss_countÚ%inductor_fx_remote_cache_backend_typeÚ!inductor_fx_remote_cache_hit_keysÚ"inductor_fx_remote_cache_miss_keysÚcuda_versionÚtriton_versionzOptional[dict[str, bool]]Úfeature_usage)HrJ   rK   rL   rí  rt   rî  r3  rï  r5  rð  rñ  rò  ró  rô  rõ  rö  r÷  rø  rù  rú  rû  rü  rý  rþ  rÿ  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  ÚLOG_FORMAT_VERSIONr#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r;   rP   rQ   rì  rì  ,  s´  € € € € € € à $€JÐ$Ð$Ð$Ñ$Ø#€IÐ#Ð#Ð#Ñ#Ø!€GÐ!Ð!Ð!Ñ!Ø!%€KÐ%Ð%Ð%Ñ%Ø$(€NÐ(Ð(Ð(Ñ(Ø $€JÐ$Ð$Ð$Ñ$Ø,0ÐÐ0Ð0Ð0Ñ0Ø!%€KÐ%Ð%Ð%Ñ%Ø+/ÐÐ/Ð/Ð/Ñ/Ø$(€NÐ(Ð(Ð(Ñ(Ø&*ÐÐ*Ð*Ð*Ñ*Ø'+ÐÐ+Ð+Ð+Ñ+Ø"&€JÐ&Ð&Ð&Ñ&Ø37ÐÐ7Ð7Ð7Ñ7Ø.2ÐÐ2Ð2Ð2Ñ2Ø/3ÐÐ3Ð3Ð3Ñ3Ø'+€OÐ+Ð+Ð+Ñ+Ø#€IÐ#Ð#Ð#Ñ#Ø!%€KÐ%Ð%Ð%Ñ%Ø.2ÐÐ2Ð2Ð2Ñ2Ø,0ÐÐ0Ð0Ð0Ñ0Ø,0ÐÐ0Ð0Ð0Ñ0Ø/3ÐÐ3Ð3Ð3Ñ3Ø*.€OÐ.Ð.Ð.Ñ.Ø48Ð Ð8Ð8Ð8Ñ8ð (,ÐÐ+Ð+Ð+Ñ+Ø15ÐÐ5Ð5Ð5Ñ5Ø59Ð!Ð9Ð9Ð9Ñ9Ø-1ÐÐ1Ð1Ð1Ñ1Ø7;Ð$Ð;Ð;Ð;Ñ;Ø'+ÐÐ+Ð+Ð+Ñ+Ø#'€MÐ'Ð'Ð'Ñ'Ø!%€JÐ%Ð%Ð%Ñ%Ø(,ÐÐ,Ð,Ð,Ñ,Ø7;Ð%Ð;Ð;Ð;Ñ;Ø7;Ð%Ð;Ð;Ð;Ñ;Ø#'€MÐ'Ð'Ð'Ñ'Ø!%€KÐ%Ð%Ð%Ñ%Ø7;Ð%Ð;Ð;Ð;Ñ;Ø=AÐ+ÐAÐAÐAÑAØ9=Ð'Ð=Ð=Ð=Ñ=ØBFÐ0ÐFÐFÐFÑFØ,0ÐÐ0Ð0Ð0Ñ0Ø26Ð Ð6Ð6Ð6Ñ6Ø59Ð#Ð9Ð9Ð9Ñ9Ø;?Ð)Ð?Ð?Ð?Ñ?Ø.2ÐÐ2Ð2Ð2Ñ2Ø6:Ð$Ð:Ð:Ð:Ñ:Ø48Ð"Ð8Ð8Ð8Ñ8Ø7;Ð%Ð;Ð;Ð;Ñ;Ø7;Ð%Ð;Ð;Ð;Ñ;Ø9=Ð'Ð=Ð=Ð=Ñ=Ø!%€KÐ%Ð%Ð%Ñ%Ø+/ÐÐ/Ð/Ð/Ñ/Ø,0ÐÐ0Ð0Ð0Ñ0Ø.2ÐÐ2Ð2Ð2Ñ2Ø0ÐÐ0Ð0Ð0Ñ0Ø%)€OÐ)Ð)Ð)Ñ)Ø*.ÐÐ.Ð.Ð.Ñ.Ø8<Ð&Ð<Ð<Ð<Ñ<Ø9=Ð'Ð=Ð=Ð=Ñ=Ø;?Ð)Ð?Ð?Ð?Ñ?Ø7;Ð%Ð;Ð;Ð;Ñ;Ø8<Ð&Ð<Ð<Ð<Ñ<Ø"&€LÐ&Ð&Ð&Ñ&Ø$(€NÐ(Ð(Ð(Ñ(Ø/3€MÐ3Ð3Ð3Ñ3Ð3Ð3rP   rì  é@   ©ÚmaxlenzDeque[CompilationMetrics]Ú_compilation_metricsrL  c                óþ  — t          ¦   «         }|                     ¦   «         }|sd S |                     || j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j        | j        | j        | j        | j        | j        �t'          | j        ¦  «        nd | j        �t'          | j        ¦  «        nd | j        �t'          | j        ¦  «        nd | j        | j        | j        ¬¦  «         d S )N)rÈ   rî  r3  rï  r5  rð  rñ  rò  ró  rô  rõ  rö  rü  rý  rþ  rÿ  r   r  r  r  r  r
  )r¼   Úget_topÚadd_event_datarî  r3  rï  r5  rð  rñ  rò  ró  rô  rõ  rö  rü  rý  rþ  rÿ  r   rî   r  r  r  r  r
  )rL  Úevent_loggerrÈ   s      rQ   Ú#add_compilation_metrics_to_chromiumr7  ~  s  € Ý,Ñ.Ô.€LØ×%Ò%Ñ'Ô'€JØð ØˆØ×ÒØØ”+Ø”	Ø”MØÔ'Ø”<Ø Ô7Ø”MØÔ5ØÔ'ØÔ+ØÔ-Ø”+Ø”MØ!"Ô!;Ø Ô7ð ÔÐ*õ ˜qÔ2Ñ3Ô3Ð3ààÔ!Ð-õ " !Ô"8Ñ9Ô9Ð9ààÔÐ(õ ˜QÔ.Ñ/Ô/Ð/àØ%&Ô%CØÔ+Ø”oð;  ñ ô ð ð ð rP   c                 ó0  —  G d„ dt           j        ¦  «        } d}t          ¦   «         }d}t          j        j        r#t          j        j                             ¦   «         nd}|�³	 |                     ¦   «         D ]k\  }}t          |t          ¦  «        rt          j        ||¦  «        r|                     |¦  «         t          |t          ¦  «        rt          |¦  «        ||<   Œl|D ]}||= Œt          j        || d¬¦  «        }n# t          $ r d}Y nw xY w|S )zN
    Method to parse and scrub uninteresting configs from inductor config
    c                  ó   ‡ — e Zd Zˆ fd„Zˆ xZS )úA_scrubbed_inductor_config_for_logging.<locals>.TypeSafeSerializerc                ój   •— 	 t          ¦   «                              |¦  «        S # t          $ r Y dS w xY w)NzValue is not JSON serializable)Úsuperrd  rA  )rù   ÚoÚ	__class__s     €rQ   rd  zI_scrubbed_inductor_config_for_logging.<locals>.TypeSafeSerializer.default¬  sB   ø€ ð8Ý‘w”w—’ qÑ)Ô)Ð)øÝð 8ð 8ð 8Ø7Ð7Ð7ð8øøøs   ƒ $ ¤
2±2)rJ   rK   rL   rd  Ú__classcell__©r>  s   @rQ   ÚTypeSafeSerializerr:  «  s8   ø€ € € € € ð	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8rP   rA  zV((^TYPE_CHECKING$)|(.*_progress$)|(.*TESTING.*)|(.*(rocm|halide).*)|(^trace\..*)|(^_))NT)r\   Úskipkeysz(Inductor Config is not JSON serializable)ÚjsonÚJSONEncoderrý   rÀ   Ú	_inductorr9   Úget_config_copyr›   r~  r{   ÚreÚsearchr  rî   ÚdumpsrA  )rA  Úconfigs_to_scrub_reÚkeys_to_scrubÚinductor_conf_strÚinductor_config_copyr§   rÍ  s          rQ   Ú%_scrubbed_inductor_config_for_loggingrN  ¤  sl  € ð8ð 8ð 8ð 8ð 8�TÔ-ñ 8ô 8ð 8ð tÐÝ‘E”E€MØÐå49´OÔ4JÐT�ŒÔ×.Ò.Ñ0Ô0Ð0ÐPTð ð Ð'ð	KØ0×6Ò6Ñ8Ô8ð :ð :‘��SÝ! #¥sÑ+Ô+ð +­r¬yÐ9LÈcÑ/RÔ/Rð +Ø!×%Ò% cÑ*Ô*Ð*å˜c¥3Ñ'Ô'ð :Ý04°S±	´	Ð(¨Ñ-øà$ð .ð .�Ø(¨Ð-Ð-å $¤
Ø$Ð*<Àtð!ñ !ô !ÐÐøõ ð 	Kð 	Kð 	Kà JÐÐÐð	Køøøð Ðs   Á$BD ÄDÄDÚstart_time_nsÚend_time_nsÚmetricsÚexc_typeúOptional[Type[BaseException]]Ú	exc_valueúOptional[BaseException]c                ód  ‡‡— ˆfd„}ˆfd„}dˆfd„}t           j                             ¦   «         }t           j        j                             ¦   «         rH	 dd	lm}	m}
 |
}|	 	                    ¦   «         }t          |¦  «        j        }n# t          $ r d }d }Y nw xY wd }d }t          t           j        j                             ¦   «         ¦  «        | d
z  |d
z  || z
  d
z  |r|j        nd |rt          |¦  «        nd t%          |¦  «        t'          ¦   «         t           j        j        t-          ¦   «         rt.          j        nd |d¦  «         |d¦  «        ||dœ}| dz   |d¦  «         |d¦  «         |d¦  «         |d¦  «         |d¦  «         |d¦  «         |d¦  «        |dœ	}t3          di i |¥|¥‰¥¤ŽŠt4                               ‰¦  «         ‰j        rd}nd}t           j                             |ˆfd„d¬¦  «         t=          ‰¦  «         t>          j         rtC          ‰¦  «         d S d S )Nc                óB   •— ‰                      | d ¦  «        }|�|dz  nd S )Ng    €„.A©rh   ©ÚfieldÚmetricrQ  s     €rQ   Úus_to_sz+record_compilation_metrics.<locals>.us_to_sÔ  s)   ø€ Ø—’˜U DÑ)Ô)ˆØ%Ð1ˆv˜‰|ˆ|°tÐ;rP   c                óB   •— ‰                      | d ¦  «        }|�|dz  nd S rå  rX  rY  s     €rQ   Úus_to_msz,record_compilation_metrics.<locals>.us_to_msØ  s)   ø€ Ø—’˜U DÑ)Ô)ˆØ!'Ð!3ˆv˜‰~ˆ~¸Ð=rP   rZ  r{   rz   r®   c                óâ   •‡— dd„Š‰                      | d ¦  «        }|€d S ‰| = t          |t          ¦  «        st          |t          ¦  «        sd S d                     ˆfd„|D ¦   «         ¦  «        S )	NÚitemr   rz   r{   c                ó`   — 	 t          | ¦  «        S # t          $ r t          d ¦  «        cY S w xY wrd   )r{   rA  )r`  s    rQ   Úsafe_strzPrecord_compilation_metrics.<locals>._convert_collection_to_str.<locals>.safe_strÝ  s@   € ð!Ý˜4‘y”yÐ øÝð !ð !ð !Ý˜4‘y”yÐ Ð Ð ð!øøøs   ‚ ‘-¬-ú,c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S rd   r;   )rƒ   r`  rb  s     €rQ   r…   zQrecord_compilation_metrics.<locals>._convert_collection_to_str.<locals>.<genexpr>ë  s+   øè è € Ð:Ð:¨4˜˜ ™œÐ:Ð:Ð:Ð:Ð:Ð:rP   )r`  r   rz   r{   )rh   r~  rý   rî   r�   )rZ  r[  rb  rQ  s     @€rQ   Ú_convert_collection_to_strz>record_compilation_metrics.<locals>._convert_collection_to_strÜ  s�   øø€ ð	!ð 	!ð 	!ð 	!ð —’˜U DÑ)Ô)ˆØˆ>Ø�4ð �EˆNÝ˜&¥#Ñ&Ô&ð 	­z¸&Å$Ñ/GÔ/Gð 	Ø�4Ø�xŠxÐ:Ð:Ð:Ð:°6Ð:Ñ:Ô:Ñ:Ô:Ð:rP   r   )ÚFbRemoteFxGraphCacheÚREMOTE_CACHE_VERSIONr¹   Ú r)  r*  )rí  r  r  r  rü  rý  r  r$  r+  r,  r)  r*  r%  r(  r—   r  r  r  r  r  r  r  )	r÷  rø  rù  rú  rû  r  r  r  r  Úcompilation_metricsÚbwd_compilation_metricsc                 ód   •— d„ t          j        ‰ ¦  «                             ¦   «         D ¦   «         S )Nc                ób   — i | ],\  }}|t          |t          ¦  «        rt          |¦  «        n|“Œ-S r;   )r~  rý   rî   )rƒ   rç   rí   s      rQ   rÖ  z@record_compilation_metrics.<locals>.<lambda>.<locals>.<dictcomp>2  sG   € ð 
ð 
ð 
á��1ð �* Q­Ñ,Ô,Ð3�t�A‰wŒwˆw°!ð
ð 
ð 
rP   )ÚdataclassesÚasdictr›   )ri  s   €rQ   rß   z,record_compilation_metrics.<locals>.<lambda>2  s9   ø€ ð 
ð 
å#Ô*Ð+>Ñ?Ô?×EÒEÑGÔGð
ñ 
ô 
€ rP   F)Úrecord_logging_overhead)rZ  r{   rz   r®   r;   )"rÀ   r-  Úget_structured_logging_overheadrE  ÚutilsÚ should_use_remote_fx_graph_cacheÚtorch._inductor.fb.remote_cacherf  rg  Úget_remote_backendr4  rJ   ÚModuleNotFoundErrorr{   Ú_guardsÚCompileContextÚcurrent_compile_idrL   rê  rN  ÚversionÚcudar2   ÚtritonÚ__version__rì  r2  rÄ   r  Útrace_structuredr7  r9   Úlog_compilation_metricsr+   )rO  rP  rQ  rR  rT  r\  r^  re  r  rf  rg  r%  Úbackendr(  Úcommon_metricsÚlegacy_metricsr[   ri  s     `              @rQ   Úrecord_compilation_metricsr‚  Í  s=  øø€ ð<ð <ð <ð <ð <ð>ð >ð >ð >ð >ð;ð ;ð ;ð ;ð ;ð ;õ" %*¤N×$RÒ$RÑ$TÔ$TÐ!å„Ô×=Ò=Ñ?Ô?ð $ð	9ðð ð ð ð ð ð ð ð
 $8Ð Ø*×=Ò=Ñ?Ô?ˆGÝ48¸±M´MÔ4JÐ1Ð1øÝ"ð 	9ð 	9ð 	9Ø#'Ð Ø48Ð1Ð1Ð1ð	9øøøð 15Ð-Ø#Ðõ �%œ-Ô6×IÒIÑKÔKÑLÔLØ&¨$Ñ.Ø" dÑ*Ø# mÑ3¸Ñ<Ø.6Ð@�XÔ*Ð*¸DØ)2Ð<•s˜9‘~”~�~¸Ý*3Ð4QÑ*RÔ*RÝ@ÑBÔBÝœÔ*Ý0:±´ÐD�&Ô,Ð,À"Ø-GÐ-GØ/ñ.
ô .
ð /IÐ.HØ0ñ/
ô /
ð !5Ø1Vð%ð €Nð0 $ cÑ)Ø'. wÐ/RÑ'SÔ'SØ") 'Ð*SÑ"TÔ"TØ#* 7Ð+PÑ#QÔ#QØ"˜7Ð#QÑRÔRØ%, WÐ-OÑ%PÔ%PØ-5¨XØ/ñ.
ô .
ð .6¨XØ/ñ.
ô .
ð *Gðð €Nõ  -ð ð Ø
9ˆ^Ð
9˜~Ð
9°Ð
9ðð Ðõ ×ÒÐ 3Ñ4Ô4Ð4àÔ%ð )Ø$ˆˆà(ˆÝ	„N×#Ò#Øð	
ð 	
ð 	
ð 	
ð !&ð $ñ ô ð õ (Ð(;Ñ<Ô<Ð<õ Ô%ð 3ÝÐ1Ñ2Ô2Ð2Ð2Ð2ð3ð 3s   Á2B ÂBÂB)Úon_exitÚnew_sizec                óÒ   — t          t          ¦  «        | k    r1t                               ¦   «          t          t          ¦  «        | k    °1t          j        t          | ¬¦  «        }|ad S )Nr0  )r  r2  Úpopleftrr   Údeque)r„  Ú	new_deques     rQ   Úset_compilation_metrics_limitr‰  I  s`   € å
Õ"Ñ
#Ô
# hÒ
.Ð
.Ý×$Ò$Ñ&Ô&Ð&õ Õ"Ñ
#Ô
# hÒ
.Ð
.åÔ!Õ"6¸xÐHÑHÔH€IØ$ÐÐÐrP   c                 ó8   — t                                ¦   «          d S rd   )r2  re   r;   rP   rQ   Úclear_compilation_metricsr‹  Q  s   € å×ÒÑ Ô Ð Ð Ð rP   úList[CompilationMetrics]c                 ó*   — t          t          ¦  «        S rd   )rî   r2  r;   rP   rQ   Úget_compilation_metricsrŽ  V  s   € ÝÕ$Ñ%Ô%Ð%rP   c                  ó|   — e Zd ZdZdd„Zd d„Zd„ Zd!d	„Zd
„ Zd"d„Z	d"d„Z
	 d#d$d„Zd%d„Zd&d„Z	 d'd(d„Z	 	 d)d*d„ZdS )+ÚChromiumEventLoggera  Logs chromium events to structured logs. tlparse will concatenate these into a perfetto UI link.

    See https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview#heading=h.yr4qxyxotyw for
    a specification of the Chromium Event JSON format.
    rz   ú	List[str]c                ót   — t          | j        d¦  «        r| j        j        S g | j        _        | j        j        S )z]
        The main event stack, with every chromium event.
        Logged to tlparse.
        Ústack)ÚhasattrÚtlsr“  rþ   s    rQ   Ú	get_stackzChromiumEventLogger.get_stacka  s5   € õ
 �4”8˜WÑ%Ô%ð 	"Ø”8”>Ð!àˆDŒHŒNØ”8”>Ð!rP   r®   c                óB   — |                       ¦   «         }|r|d         ndS )zG
        Get the top event name or None if the stack is empty.
        éÿÿÿÿN)r–  )rù   r“  s     rQ   r4  zChromiumEventLogger.get_topl  s&   € ð —’Ñ Ô ˆØ!Ð+ˆu�RŒyˆy tÐ+rP   c                ót   — t          | j        d¦  «        r| j        j        S g | j        _        | j        j        S )zq
        A smaller subset of the main stack that gets used to log
        PT2 Compile Events internally.
        Úpt2_compile_substack)r”  r•  rš  rþ   s    rQ   Úget_pt2_compile_substackz,ChromiumEventLogger.get_pt2_compile_substacks  s9   € õ
 �4”8Ð3Ñ4Ô4ð 	1Ø”8Ô0Ð0à,.ˆDŒHÔ)Ø”8Ô0Ð0rP   rA   c                ó\   — t          | j        d¦  «        si | j        _        | j        j        S )NÚ
event_data)r”  r•  r�  rþ   s    rQ   Úget_event_dataz"ChromiumEventLogger.get_event_data~  s+   € Ý�t”x Ñ.Ô.ð 	%Ø"$ˆDŒHÔØŒxÔ"Ð"rP   c                óÀ   — t          j        ¦   «         | _        t          t	          j        ¦   «         ¦  «        | _        t                               d| j        ¦  «         d S )Nz*ChromiumEventLogger initialized with id %s)	Ú	threadingÚlocalr•  r{   ÚuuidÚuuid4Úid_rq   rñ   rþ   s    rQ   rú   zChromiumEventLogger.__init__ƒ  sG   € Ý”?Ñ$Ô$ˆŒõ •t”z‘|”|Ñ$Ô$ˆŒõ 	�ŠÐ=¸t¼xÑHÔHÐHÐHÐHrP   rÈ   r{   rŠ   c                óR   — ||                       ¦   «         vrdS  | j        |fi |¤Ž dS )zd
        Same as add_event_data, but will silently not log if the event isn't in the stack.
        N)r–  r5  )rù   rÈ   rY  s      rQ   Útry_add_event_dataz&ChromiumEventLogger.try_add_event_dataŒ  s?   € ð ˜TŸ^š^Ñ-Ô-Ð-Ð-ØˆFØˆÔ˜JÐ1Ð1¨&Ð1Ð1Ð1Ð1Ð1rP   c                ó  — ||                       ¦   «         vr5t          dt          |¦  «        › d|                       ¦   «         › d�¦  «        ‚|                      ¦   «         }||vri ||<   ||                              |¦  «         dS )zz
        Adds additional metadata info to an in-progress event
        This metadata is recorded in the END event
        zEvent z not in zq. Cannot add metadata to events that aren't in progress. Please make sure the event has started and hasn't ended.N)r–  ÚRuntimeErrorrÐ   rž  r»   )rù   rÈ   rY  r�  s       rQ   r5  z"ChromiumEventLogger.add_event_data”  s¬   € ð ˜TŸ^š^Ñ-Ô-Ð-Ð-ÝðK�˜jÑ)Ô)ð Kð K°4·>²>Ñ3CÔ3Cð Kð Kð Kñô ð ð
 ×(Ò(Ñ*Ô*ˆ
Ø˜ZÐ'Ð'Ø%'ˆJ�zÑ"Ø�:Ô×%Ò% fÑ-Ô-Ð-Ð-Ð-rP   Fr¾   rW   r±   r¯   r°   c                ó`  — t          t          j        j                             ¦   «         ¦  «        }||d<   |                      ||d|¦  «         |                      ¦   «                              |¦  «          | j        |fi |¤Ž |r)|  	                    ¦   «                              |¦  «         dS dS )zé
        Logs the start of a single event.
        :param str event_name Name of event to appear in trace
        :param time_ns Timestamp in nanoseconds
        :param metadata: Any extra metadata associated with this event
        rí  ÚBN)
r{   rÀ   rv  rw  rx  Ú_log_timed_eventr–  rÄ   r5  r›  )rù   rÈ   r¾   r±   r¯   rí  s         rQ   r¿   z#ChromiumEventLogger.log_event_start¨  sÃ   € õ �œÔ5×HÒHÑJÔJÑKÔKˆ
Ø!+ˆ�ÑØ×ÒØØØØñ		
ô 	
ð 	
ð 	�ŠÑÔ×Ò 
Ñ+Ô+Ð+àˆÔ˜JÐ3Ð3¨(Ð3Ð3Ð3Ø ð 	?Ø×)Ò)Ñ+Ô+×2Ò2°:Ñ>Ô>Ð>Ð>Ð>ð	?ð 	?rP   c                óö   — |                       ¦   «         }|                      ¦   «         }|                     ¦   «          |                     ¦   «          |                      ¦   «         }|                     ¦   «          d S rd   )r–  r›  re   rž  )rù   r“  Úsubstackr�  s       rQ   rø   zChromiumEventLogger.resetÃ  sj   € ð —’Ñ Ô ˆØ×0Ò0Ñ2Ô2ˆØ�Š‰ŒˆØ�ŠÑÔÐØ×(Ò(Ñ*Ô*ˆ
Ø×ÒÑÔÐÐÐrP   rO  c                ó`  ‡— t          t          j        j                             ¦   «         ¦  «        }||d<   |                      ¦   «         }‰|v r|‰         }|‰= ni }|                     |¦  «         |                      ‰|d|¦  «        }	ˆfd„}
|                      ¦   «         }‰|vrt           
                    d¦  «         dS  |
|¦  «         |rJ|                      ¦   «         } |
|¦  «         t          |	|| j        |¦  «         |                     ¦   «          |                     ¦   «          dS )aA  
        Logs the end of a single event. This function should only be
        called after log_event_start with the same event_name.
        :param event_name: Name of event to appear in trace
        :param time_ns: Timestamp in nanoseconds
        :param metadata: Any extra metadata associated with this event
        rí  ÚEc                ó˜   •— ‰| d         k    r<t                                d¦  «         |                      ¦   «          ‰| d         k    °:d S d S )Nr˜  z>ChromiumEventLogger: Detected overlapping events, fixing stack)rq   r=  Úpop)r“  rÈ   s    €rQ   Ú	pop_stackz4ChromiumEventLogger.log_event_end.<locals>.pop_stackð  sY   ø€ Ø  b¤	Ò)Ð)õ —’ØTñô ð ð —	’	‘”�ð   b¤	Ò)Ð)Ð)Ð)Ð)Ð)rP   z7ChromiumEventLogger: Start event not in stack, ignoringN)r{   rÀ   rv  rw  rx  rž  r»   r«  r–  rq   r=  r›  r*   r¤  r±  )rù   rÈ   r¾   r±   rO  r¯   rí  Úall_event_datarÉ   Úeventr²  Úevent_stackrš  s    `           rQ   rÅ   z!ChromiumEventLogger.log_event_endÍ  sp  ø€ õ �œÔ5×HÒHÑJÔJÑKÔKˆ
Ø!+ˆ�Ñð ×,Ò,Ñ.Ô.ˆØ˜Ð'Ð'Ø+¨JÔ7ˆNØ˜zÐ*Ð*àˆNà×Ò˜hÑ'Ô'Ð'à×%Ò%ØØØØñ	
ô 
ˆð	ð 	ð 	ð 	ð 	ð —n’nÑ&Ô&ˆð ˜[Ð(Ð(õ �KŠKÐQÑRÔRÐRØˆFàˆ	�+ÑÔÐà ð 	'Ø#'×#@Ò#@Ñ#BÔ#BÐ ØˆIÐ*Ñ+Ô+Ð+Ý'ØÐ+¨T¬X°}ñô ð ð !×$Ò$Ñ&Ô&Ð&ð 	�ŠÑÔÐÐÐrP   Nr�   úOptional[Dict[str, Any]]c                óŒ   ‡— ||dz  ||ddddœŠt           j                             dˆfd„dd¬¦  «         t          ‰¦  «         ‰S )	za
        Logs a timed event in chromium format. See log_event_start, log_event_end, etc.
        r¹   rÏ   r   )r[   ÚtsrX  ÚphÚcatÚtidÚpidÚchromium_eventc                 ó   •— ‰ S rd   r;   ©r´  s   €rQ   rß   z6ChromiumEventLogger._log_timed_event.<locals>.<lambda>(  ó   ø€ ˜u€ rP   F©Ú
payload_fnÚsuppress_contextÚexpect_trace_id)rÀ   r-  r}  r,   )rù   rÈ   r¾   r�   r±   r´  s        @rQ   r«  z$ChromiumEventLogger._log_timed_event  sr   ø€ ð Ø˜D‘.ØØà!ØØð	
ð 	
ˆõ 	Œ×'Ò'ØØ$�}�}�}Ø"Ø!ð	 	(ñ 	
ô 	
ð 	
õ 	' uÑ-Ô-Ð-ØˆrP   c           	     ó<  ‡— |€i }t          t          j        j                             ¦   «         ¦  «        }||d<   ||dz  |ddddddœŠt          j                             d	ˆfd
„dd¬¦  «         |r+t          ‰|                      ¦   «         | j	        |¦  «         dS dS )aZ  
        Log an instant event with no associated duration.
        :param str event_name: Name of event to appear in trace
        :param int time_ns Timestamp in nanoseconds
        :param Optional[Dict[str, Any]] metadata: Any extra metadata associated with this event
        :param str cname optional color for the arrow in the trace
        Nrí  r¹   ÚirÏ   r   Úp)r[   r¸  rX  r¹  rº  r»  r¼  Úsr½  c                 ó   •— ‰ S rd   r;   r¿  s   €rQ   rß   z7ChromiumEventLogger.log_instant_event.<locals>.<lambda>O  rÀ  rP   FTrÁ  )
r{   rÀ   rv  rw  rx  r-  r}  r*   r›  r¤  )rù   rÈ   r¾   r±   r¯   rí  r´  s         @rQ   Úlog_instant_eventz%ChromiumEventLogger.log_instant_event/  sÚ   ø€ ð ÐØˆHÝ�œÔ5×HÒHÑJÔJÑKÔKˆ
Ø!+ˆ�ÑàØ˜D‘.ØØà!ØØØð

ð 

ˆõ 	Œ×'Ò'ØØ$�}�}�}Ø"Ø ð	 	(ñ 	
ô 	
ð 	
ð !ð 	å'Ø�t×4Ò4Ñ6Ô6¸¼À'ñô ð ð ð ð	ð 	rP   )rz   r‘  ©rz   r®   )rz   rA   )rÈ   r{   rz   rŠ   ©F)
rÈ   r{   r¾   rW   r±   rA   r¯   r°   rz   rŠ   ©rz   rŠ   )rÈ   r{   r¾   rW   r±   rA   rO  rW   r¯   r°   rz   rŠ   rd   )
rÈ   r{   r¾   rW   r�   r{   r±   r¶  rz   rA   r‹  )
rÈ   r{   r¾   rW   r±   r¶  r¯   r°   rz   rŠ   )rJ   rK   rL   rp  r–  r4  r›  rž  rú   r¦  r5  r¿   rø   rÅ   r«  rÊ  r;   rP   rQ   r�  r�  Z  s.  € € € € € ðð ð	"ð 	"ð 	"ð 	"ð,ð ,ð ,ð ,ð	1ð 	1ð 	1ð#ð #ð #ð #ð
Ið Ið Ið2ð 2ð 2ð 2ð.ð .ð .ð .ð2 ',ð?ð ?ð ?ð ?ð ?ð6ð ð ð ðCð Cð Cð CðT .2ðð ð ð ð ðB .2à&+ð(ð (ð (ð (ð (ð (ð (rP   r�  zOptional[ChromiumEventLogger]ÚCHROMIUM_EVENT_LOGc                 ó:   — t           €t          ¦   «         a t           S rd   )rÎ  r�  r;   rP   rQ   r¼   r¼   ]  s   € åÐ!Ý0Ñ2Ô2ÐÝÐrP   rÈ   Úreset_event_logc           	   #  ód  K  — t          ¦   «         }|r|                     ¦   «          t          j        ¦   «         }|                     | |i |¦  «         	 dV — |                     | t          j        ¦   «         i ||¦  «         dS # |                     | t          j        ¦   «         i ||¦  «         w xY w)zñ
    Context manager that creates a chromium start and end event. Chromium event
    logging is integrated with dynamo_timed, so you probably want to use that
    instead. Use this context manager only if you want to avoid dynamo_timed.
    N)r¼   rø   r½   r¾   r¿   rÅ   )rÈ   rÐ  r¯   Úchromium_event_logÚchromium_start_times        rQ   Úchromium_event_timedrÔ  d  sÙ   è è € õ 3Ñ4Ô4ÐØð #Ø× Ò Ñ"Ô"Ð"Ýœ,™.œ.ÐØ×&Ò&ØØØ
Øñ	ô ð ð	
Øˆˆˆà×(Ò(ØÝŒL‰NŒNØØØ!ñ	
ô 	
ð 	
ð 	
ð 	
øÐ×(Ò(ØÝŒL‰NŒNØØØ!ñ	
ô 	
ð 	
ð 	
øøøs   ÁB Â,B/c                  óD   — e Zd ZU dZded<   ded<   d„ Zed„ ¦   «         ZdS )	ÚCleanupHookz,Remove a global variable when hook is calledrA   Úscoper{   r[   c                óX   — t           �t           xj        dz  c_        | j        | j        = d S rŒ   )ÚCleanupManagerr^   r×  r[   ©rù   rX  s     rQ   Ú__call__zCleanupHook.__call__Œ  s.   € åÐ%ÝÐ Ô  AÑ%Ð Ô ØŒJ�t”yÐ!Ð!Ð!rP   c                ób   — || vsJ ‚t           xj        dz  c_        || |<   t          | |¦  «        S rŒ   )rÙ  r^   rÖ  )r×  r[   rÍ  s      rQ   ÚcreatezCleanupHook.create’  s@   € à˜5Ð Ð Ð Ð ÝÐÔ Ñ!ÐÔØˆˆd‰Ý˜5 $Ñ'Ô'Ð'rP   N)rJ   rK   rL   rp  rt   rÛ  ÚstaticmethodrÝ  r;   rP   rQ   rÖ  rÖ  …  s[   € € € € € € à6Ð6àÐÐÑØ€I€I�Ið"ð "ð "ð ð(ð (ñ „\ð(ð (ð (rP   rÖ  c                  ó.   ‡ — e Zd ZU dZded<   ˆ fd„Zˆ xZS )rÙ  r   zClassVar[CleanupManager]Úinstancec                ó~   •— | j         |         D ]} |¦   «          Œt          ¦   «                              |¦  «         d S rd   )rá   r<  ri  )rù   rk  Úhookr>  s      €rQ   ri  zCleanupManager._remove_idž  sD   ø€ Ø”K Ô$ð 	ð 	ˆDØˆD‰FŒFˆFˆFÝ‰Œ×Ò˜3ÑÔÐÐÐrP   )rJ   rK   rL   r^   rt   ri  r?  r@  s   @rQ   rÙ  rÙ  š  sK   ø€ € € € € € Ø€EØ&Ð&Ð&Ñ&ð ð  ð  ð  ð  ð  ð  ð  ð  rP   rÙ  c                ó¶   — |                       ¦   «                              | j        ¦  «        }| j        r%| j        �| j                              ¦   «         |_        |S )z!Clone the tensor and its gradient)ÚcloneÚrequires_grad_Úrequires_gradÚis_leafÚgrad)rÞ   Úys     rQ   Úclone_tensorrê  §  sF   € à	�Š‰	Œ	× Ò  ¤Ñ1Ô1€AØ„yð  �Q”VÐ'Ø”—’‘”ˆŒØ€HrP   ©Údtypec          	     óF  ‡— t          | ¦  «        r| S ˆfd„}t          j        ¦   «         5  | j        j        dk    r || ¦  «        cddd¦  «         S | j        t          j        u rqt          j         ||                      ¦   «         ¦  «         ||  	                    ¦   «         ¦  «        | j
        |                      ¦   «         ¬¦  «        cddd¦  «         S t          | ¦  «        rÌ| j        t          j        t          j        hv r)|                      ¦   «         }|                      ¦   «         }n(|                      ¦   «         }|                      ¦   «         }t          j         ||¦  «         ||¦  «         ||                      ¦   «         ¦  «        | j
        | j        ¬¦  «        cddd¦  «         S t+          d„ t-          |                      ¦   «         |                      ¦   «         ¦  «        D ¦   «         ¦  «        }| j        rt          j        |dz   f| ¦  «        }n&t          j        |dz   ‰p| j        | j        ¬¦  «        }|                      ¦   «         |                     ¦   «         z
  dz  |                      ¦   «         z  }|                     |                      ¦   «         |                      ¦   «         |¦  «         	 |                      |  !                    ¦   «         ¦  «         | j"        r| #                    | j$        ¦  «         | j"        r"| j%        �tM          | j%        ‰¬	¦  «        |_%        n'# tN          $ r  || ¦  «        cY cddd¦  «         S w xY wtQ          | d
¦  «        r| j)         *                    ¦   «         |_)        |cddd¦  «         S # 1 swxY w Y   dS )zcopy while preserving stridesc                ó   •— t          j        | ¦  «        }| j        r|                     | j        ¦  «         | j        r"| j        �t          | j        ‰¬¦  «        |_        t          | d¦  «        r| j         	                    ¦   «         |_        |S )Nrë  Ú_dynamo_dynamic_indices)
rÀ   rä  rç  rå  ræ  rè  Úclone_inputr”  rï  Úcopy)rÞ   ré  rì  s     €rQ   Útorch_clonez clone_input.<locals>.torch_clone¶  s‡   ø€ ÝŒK˜‰NŒNˆØŒ9ð 	.Ø×Ò˜Qœ_Ñ-Ô-Ð-ØŒ9ð 	6˜œÐ+Ý  ¤¨uÐ5Ñ5Ô5ˆAŒFÝ�1Ð/Ñ0Ô0ð 	IØ()Ô(A×(FÒ(FÑ(HÔ(HˆAÔ%ØˆrP   ÚxlaN)Úis_coalesced)Úlayoutc              3  ó,   K  — | ]\  }}|d z
  |z  V — ŒdS )r8   Nr;   )rƒ   ÚshapeÚstrides      rQ   r…   zclone_input.<locals>.<genexpr>Ü  s@   è è € ð 
ð 
Ù%2 U¨FˆU�Q‰Y˜&Ñ ð
ð 
ð 
ð 
ð 
ð 
rP   é    )rì  Údevicerë  rï  )+r=   rÀ   Úno_gradrú  r4  rõ  Ú
sparse_cooÚsparse_coo_tensorÚ_indicesrT   r÷  rô  r)   Ú
sparse_csrÚ
sparse_bsrÚcrow_indicesÚcol_indicesÚccol_indicesÚrow_indicesÚsparse_compressed_tensorrá   rj   ÚzipÚsizerø  Úis_quantizedÚempty_quantizedÚemptyrì  Údata_ptrÚelement_sizeÚas_strided_Úcopy_rä  rç  rå  ræ  rè  rð  r¨  r”  rï  rñ  )rÞ   rì  rò  Úcompressed_indicesÚplain_indicesÚneeded_sizeÚresultÚcache_line_offsets    `      rQ   rð  rð  ¯  s8  ø€ õ ˆq�z„zð àˆðð ð ð ð õ 
Œ‰Œð 6ð 6ØŒ8Œ=˜EÒ!Ð!à�;˜q‘>”>ð6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6ð Œ8•uÔ'Ð'Ð'ÝÔ*Ø�˜AŸJšJ™LœLÑ)Ô)Ø�˜AŸIšI™KœKÑ(Ô(Ø”ØŸ^š^Ñ-Ô-ð	ñ ô ð6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6õ " !Ñ$Ô$ð 	ØŒx�EÔ,­eÔ.>Ð?Ð?Ð?Ø%&§^¢^Ñ%5Ô%5Ð"Ø !§¢¡¤��à%&§^¢^Ñ%5Ô%5Ð"Ø !§¢¡¤�ÝÔ1Ø�Ð.Ñ/Ô/Ø�˜MÑ*Ô*Ø�˜AŸHšH™JœJÑ'Ô'Ø”Ø”xðñ ô ð)6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6õ8 ð 
ð 
Ý69¸!¿&º&¹(¼(ÀAÇHÂHÁJÄJÑ6OÔ6Oð
ñ 
ô 
ñ 
ô 
ˆð Œ>ð 	ÝÔ*¨K¸"Ñ,<Ð+>ÀÑBÔBˆFˆFå”[Ø˜bÑ ¨Ð(8°´ÀÄðñ ô ˆFð �ZŠZ‰\Œ\˜FŸOšOÑ-Ô-Ñ-°Ñ3Ø�^Š^ÑÔñÐð 	×Ò˜1Ÿ6š6™8œ8 Q§X¢X¡Z¤ZÐ1BÑCÔCÐCð
	"Ø�LŠL˜Ÿš™œÑ#Ô#Ð#ØŒyð 7Ø×%Ò% a¤oÑ6Ô6Ð6ØŒyð ?˜QœVÐ/Ý)¨!¬&¸Ð>Ñ>Ô>�”øøÝð 	"ð 	"ð 	"ð �;˜q‘>”>Ð!Ð!ðg6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6ð^	"øøøõ
 �1Ð/Ñ0Ô0ð 	NØ-.Ô-F×-KÒ-KÑ-MÔ-MˆFÔ*Øðm6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6ð 6sK   «NÁA7NÃCNÆ2DNËA1L3Ì2NÌ3MÍNÍMÍ2NÎNÎNc                ó*  — t          | ¦  «        t          u r–t          | ¦  «        }|                     ¦   «         D ]p\  }}t          |t          ¦  «        rt          |¦  «        ||<   Œ-t          |t          j        ¦  «        sJ t          |¦  «        ¦   «         ‚t          |¦  «        ||<   Œq|S t          | ¦  «        }t          t          |¦  «        ¦  «        D ]:}t          ||         t          j        ¦  «        rt          ||         ¦  «        ||<   Œ;|S rd   )r4  Údictr›   r~  r  Úclone_inputsrÀ   r½  rð  rî   Úranger  )Úexample_inputsÚresr§   r¨   rÆ  s        rQ   r  r  ù  sû   € åˆNÑÔ�tÐ#Ð#Ý�>Ñ"Ô"ˆØŸ)š)™+œ+ð 	.ð 	.‰JˆC�Ý˜%¥Ñ'Ô'ð .Ý'¨Ñ.Ô.��C‘�å! %­¬Ñ6Ô6ÐCÐC½¸U¹¼ÑCÔCÐ6Ý& uÑ-Ô-��C‘�Øˆ
å
ˆ~Ñ
Ô
€CÝ•3�s‘8”8‰_Œ_ð )ð )ˆÝ�c˜!”f�eœlÑ+Ô+ð 	)Ý   Q¤Ñ(Ô(ˆC�‰FøØ€JrP   rÍ  útorch.Tensorc                óÄ   — 	 |                       ¦   «          d S # t          $ r=}ddlm} t	          j        ddt          | ¦  «        ¦  «        } |d|› �¦  «        |‚d }~ww xY w)Nr8   )Ú	SkipFramez\(.*rh  z(torch.compile cannot be run in context: )r  r¨  r6  r  rG  ÚsubrÐ   )rÍ  rà  r  Úfunctorch_subclass_names       rQ   Úskip_frame_if_in_functorch_moder    sˆ   € ð	Ø�Š‰ŒˆˆˆøÝð ð ð Ø"Ð"Ð"Ð"Ð"Ð"õ #%¤&¨°"µd¸3±i´iÑ"@Ô"@ÐØˆiØPÐ7NÐPÐPñ
ô 
àð	øøøøðøøøs   ‚ ˜
A¢8AÁAc               #  ól  K  — t           j        j        } t           j        j        j        } |¦   «         5   | ¦   «         5  t          j        t           j                             ¦   «         ¦  «        }t          |¦  «         t           j
                             ¦   «         r0t          j        t           j
                             ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   	 d V — t           j        j                             ¦   «         5  t           j                             |¦  «         t           j
                             ¦   «         rt           j
                             |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S # t           j        j                             ¦   «         5  t           j                             |¦  «         t           j
                             ¦   «         rt           j
                             |¦  «         d d d ¦  «         w # 1 swxY w Y   w xY wrd   )rÀ   Ú_CÚ_DisableFuncTorchrq  Ú_python_dispatchÚ_disable_current_modesrä  ÚrandomÚget_rng_stater  rz  Úis_availableÚset_rng_state)Údisable_functorchÚdisable_current_modesÚ	rng_stateÚcuda_rng_states       rQ   Úpreserve_rng_stater-    sé  è è € åœÔ2ÐÝ!œKÔ8ÔOÐØ	Ð	Ñ	 Ô	 ð Eð EÐ"3Ð"3Ñ"5Ô"5ð Eð EÝ”K¥¤× :Ò :Ñ <Ô <Ñ=Ô=ˆ	Ý'¨	Ñ2Ô2Ð2ÝŒ:×"Ò"Ñ$Ô$ð 	EÝ"œ[­¬×)AÒ)AÑ)CÔ)CÑDÔDˆNð	Eð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð Eð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð
9ØˆˆˆåŒ[Ô)×@Ò@ÑBÔBð 	9ð 	9ÝŒL×&Ò& yÑ1Ô1Ð1ÝŒz×&Ò&Ñ(Ô(ð 9Ý”
×(Ò(¨Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ø�UŒ[Ô)×@Ò@ÑBÔBð 	9ð 	9ÝŒL×&Ò& yÑ1Ô1Ð1ÝŒz×&Ò&Ñ(Ô(ð 9Ý”
×(Ò(¨Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9øøøsy   ´C0¿BCÃC0ÃC	ÃC0Ã C	Ã!C0Ã0C4Ã7C4Ã<F Ä#AFÆFÆFÆ$H3Æ>AH'ÈH3È'H+È+H3È.H+È/H3c                ó¶   — t          | t          j        j        j        t          j        j        j        t          j        j        t          j        j        f¦  «        S rd   )	r~  rÀ   ÚjitÚ_traceÚTopLevelTracedModuleÚ_scriptÚRecursiveScriptModuleÚScriptFunctionÚScriptModule)Úmodel0s    rQ   Úis_jit_modelr7  +  sB   € ÝØåŒIÔÔ1ÝŒIÔÔ3ÝŒIÔ$ÝŒIÔ"ð		
ñô ð rP   c                ó\  — t          | ¦  «        r| S 	 t          j                             | |¦  «        S # t          $ rl 	 t          j                             | ¦  «        cY S # t          $ r: |rt                               d¦  «         nt                               d¦  «         Y nw xY wY nw xY wd S )Nz	jit errorz0Both torch.jit.trace and torch.jit.script failed)	r7  rÀ   r/  ÚtracerA  Úscriptrq   rB  Úerror)Úmodelr  r  s      rQ   Útorchscriptr=  7  sÏ   € Ý�EÑÔð àˆð	NÝŒy�Š˜u nÑ5Ô5Ð5øÝð Nð Nð Nð	NÝ”9×#Ò# EÑ*Ô*Ð*Ð*Ð*øÝð 	Nð 	Nð 	NØð NÝ—’˜kÑ*Ô*Ð*Ð*å—	’	ÐLÑMÔMÐMøøð		NøøøøøðNøøøð ˆ4s3   “3 ³
B)¾AÁB)ÁAB#Â B)Â"B#Â#B)Â(B)c                ó\   — 	 t          j        | ¦  «        S # t          t          f$ r Y d S w xY wrd   )r   ÚgetfilerS  ÚOSError©rq  s    rQ   r?  r?  I  s>   € ðÝŒ˜sÑ#Ô#Ð#øÝ•wÐð ð ð Øˆtˆtðøøøs   ‚ –+ª+c                ó:   — t          t          | ¦  «        ¦  «        S )zLTest if an object is a namedtuple or a torch.return_types.* quasi-namedtuple)Úis_namedtuple_clsr4  rA  s    rQ   Úis_namedtuplerD  P  s   € å�T #™YœYÑ'Ô'Ð'rP   c                óž  ‡ — 	 t          ‰ t          ¦  «        r¤t          ‰ dd¦  «        }|dv rdS t          t          ‰ dd¦  «        t          ¦  «        rit	          t          ‰ dd¦  «        ¦  «        rKt          d„ ‰ j        D ¦   «         ¦  «        }|t          fk    rdS |rt          ˆ fd„|D ¦   «         ¦  «        rdS n# t          $ r Y nw xY wd	S )
zhTest if an object is a namedtuple or a (torch.return_types|torch.autograd.forward_ad).* quasi-namedtuplerK   N)útorch.return_typesztorch.autograd.forward_adTÚ_fieldsÚ_makec              3  ó,   K  — | ]}|t           u¯|V — Œd S rd   )r   )rƒ   Úts     rQ   r…   z$is_namedtuple_cls.<locals>.<genexpr>`  s,   è è € ÐKÐK A¸!Å7Ð:JÐ:J˜aÐ:JÐ:JÐ:JÐ:JÐKÐKrP   c              3  óR   •K  — | ]!}t          |¦  «        o‰j        |j        u V — Œ"d S rd   )rC  Ú__new__)rƒ   rJ  r\   s     €rQ   r…   z$is_namedtuple_cls.<locals>.<genexpr>d  sR   øè è € ð !ð !ð õ	 *¨!Ñ,Ô,ð 5àœK¨1¬9Ð4ð!ð !ð !ð !ð !ð !rP   F)Ú
issubclassr  Úgetattrr~  ÚcallableÚ	__bases__ÚanyrS  )r\   ÚmoduleÚbasess   `  rQ   rC  rC  U  s  ø€ ðÝ�c�5Ñ!Ô!ð 	 Ý˜S ,°Ñ5Ô5ˆFØÐLÐLÐLØ�tÝ�' # y°$Ñ7Ô7½Ñ?Ô?ð  ÅHÝ˜˜W dÑ+Ô+ñEô Eð  õ ÐKÐK¨¬ÐKÑKÔKÑKÔK�Ø�U˜HÒ$Ð$à˜4Øð 	 �Sð !ð !ð !ð !ð #ð!ñ !ô !ñ ô ð 	 ð  ˜4øøÝð ð ð Øˆðøøøàˆ5s   ƒ*B= ¯A,B= ÂB= Â=
C
Ã	C
úTuple[str, ...]c                óH  — | t           u rdS t          | t          ¦  «        sJ ‚t          | d¦  «        r| j        S t
          j         G d„ d¦  «        ¦   «         }| j        dk    sJ ‚ | t          |t          | j
        ¦  «        ¦  «        ¦  «        }i }t          |¦  «        D ]D}|d         dk    r6t          t          ||¦  «        |¦  «        rt          ||¦  «        j        ||<   ŒEt          |¦  «        | j
        k    sJ ‚t          t!          ||j        ¬¦  «        ¦  «        S )	zIGet the fields of a namedtuple or a torch.return_types.* quasi-namedtuple)ÚstartÚstopÚsteprG  c                  ó   — e Zd ZU ded<   dS )ú!namedtuple_fields.<locals>.MarkerrW   ÚindexN©rJ   rK   rL   rt   r;   rP   rQ   ÚMarkerrZ  ~  s   € € € € € € àˆ
ˆ
‰
ˆ
ˆ
rP   r]  rF  r   r2  )r§   )ÚslicerM  r  r”  rG  rm  Ú	dataclassrK   r‚   r  Ún_fieldsÚdirr~  rN  r[  r  Úsortedrh   )r\   r]  rq  Úfieldsr[   s        rQ   Únamedtuple_fieldsrd  s  s>  € ð �e€|€|Ø(Ð(å�c�5Ñ!Ô!Ð!Ð!Ð!Ýˆs�IÑÔð àŒ{ÐåÔðð ð ð ð ñ ô ñ Ôðð Œ>Ð1Ò1Ð1Ð1Ð1Ø
ˆ#�c�&�% ¤Ñ-Ô-Ñ.Ô.Ñ
/Ô
/€CØ€FÝ�C‘”ð 4ð 4ˆØ�Œ7�cŠ>ˆ>�j­°°dÑ);Ô);¸VÑDÔDˆ>Ý" 3¨Ñ-Ô-Ô3ˆF�4‰LøÝˆv‰;Œ;˜#œ,Ò&Ð&Ð&Ð&Ý•˜ F¤JÐ/Ñ/Ô/Ñ0Ô0Ð0rP   c                óò  ‡‡‡— t          j        ¦   «         5  t          j        t           j                             ¦   «         ¦  «        Št           j                             ¦   «         r0t          j        t           j                             ¦   «         ¦  «        Šd„ t          j        |  	                    ¦   «         |  
                    ¦   «         ¦  «        D ¦   «         Šd d d ¦  «         n# 1 swxY w Y   ˆˆˆfd„}|S )Nc                óF   — g | ]}||j         t          j        |¦  «        f‘ŒS r;   )Ú_versionrÀ   rä  )rƒ   Úparams     rQ   rè   z%checkpoint_params.<locals>.<listcomp>’  s;   € ð 
ð 
ð 
àð �E”N¥E¤K°Ñ$6Ô$6Ð7ð
ð 
ð 
rP   c                 ól  •— t          j        ¦   «         5  t           j                             ‰¦  «         t           j                             ¦   «         rt           j                             ‰¦  «         ‰D ]&\  } }}| j        |k    r|                      |¦  «         Œ'	 d d d ¦  «         d S # 1 swxY w Y   d S rd   )rÀ   rû  r%  r(  rz  r'  rg  r  )rh  ry  Úoriginal_valuer,  r+  Úsaved_states      €€€rQ   Úrestorez"checkpoint_params.<locals>.restore—  sð   ø€ ÝŒ]‰_Œ_ð 	0ð 	0ÝŒL×&Ò& yÑ1Ô1Ð1ÝŒz×&Ò&Ñ(Ô(ð 9Ý”
×(Ò(¨Ñ8Ô8Ð8Ø2=ð 0ð 0Ñ.��w Ø”> WÒ,Ð,Ø—K’K Ñ/Ô/Ð/øð0ð		0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s   •BB)Â)B-Â0B-)rÀ   rû  rä  r%  r&  rz  r'  rˆ   r‰   Ú
parametersÚbuffers)Úgmrl  r,  r+  rk  s     @@@rQ   Úcheckpoint_paramsrp  �  s  øøø€ Ý	Œ‰Œð 
ð 
Ý”K¥¤× :Ò :Ñ <Ô <Ñ=Ô=ˆ	ÝŒ:×"Ò"Ñ$Ô$ð 	EÝ"œ[­¬×)AÒ)AÑ)CÔ)CÑDÔDˆNð
ð 
å"œ¨¯ª©¬¸"¿*º*¹,¼,ÑGÔGð
ñ 
ô 
ˆð	
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð0ð 0ð 0ð 0ð 0ð 0ð 0ð €Ns   —CC%Ã%C)Ã,C)c                ón  — t           j                             ¦   «         rt           j        j        }nt          } |¦   «          t          j        ¦   «          t          j        d¦  «         t          j	        ¦   «         }t          |¦  «        D ]} | |Ž } |¦   «          Œt          j	        ¦   «         }|||z
  fS )Ni9  )rÀ   rz  r'  ÚsynchronizerZ  ÚgcÚcollectÚmanual_seedr½   Úperf_counterr  )r<  r  Útimesrr  Út0r2  r  Út1s           rQ   Útimedrz  £  s¨   € Ý„z×ÒÑ Ô ð Ý”jÔ,ˆˆåˆà€K�M„M€MÝ„J�L„L€LÝ	Ô�dÑÔÐÝ	Ô	Ñ	Ô	€BÝ�5‰\Œ\ð ð ˆØ�˜Ð'ˆØˆ‰ŒˆˆÝ	Ô	Ñ	Ô	€BØ�2˜‘7ˆ?ÐrP   c           	     ó€   — t          d„ t          j        ||                      d¦  «        ¦  «        D ¦   «         ¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rd   )Úis_cuda©rƒ   rÞ   s     rQ   r…   z check_is_cuda.<locals>.<genexpr>µ  s$   è è € ÐWÐW˜QˆqŒyÐWÐWÐWÐWÐWÐWrP   T)Úallrˆ   r‰   rm  )ro  r  s     rQ   Úcheck_is_cudar€  ´  s8   € ÝÐWÐW¥)¤/°.À"Ç-Â-ÐPTÑBUÔBUÑ"VÔ"VÐWÑWÔWÑWÔWÐWrP   rù  c                ó  — | dk    sJ ‚d„ t          | ¦  «        D ¦   «         }t          |dd …         |d d…         z   ¦  «        }t          dd                     |¦  «        › dd                     |¦  «        › d�¦  «        }d| › d	�|_        |S )
Nr8   c                ó   — g | ]}d |› �‘ŒS rç  r;   ©rƒ   rÆ  s     rQ   rè   z rot_n_helper.<locals>.<listcomp>»  s   € Ð&Ð&Ð&˜ˆG�ˆGˆGÐ&Ð&Ð&rP   r˜  zlambda rc  z: (ú)Úrot_Ú_helper)r  ÚreversedÚevalr�   rJ   )rM  ÚvarsÚrotatedr´  s       rQ   Úrot_n_helperr‹  ¸  s˜   € àˆqŠ5ˆ5ˆ5ˆ5Ø&Ð&�U 1™XœXÐ&Ñ&Ô&€DÝ�t˜B˜C˜C”y 4¨¨¨¤9Ñ,Ñ-Ô-€GÝ	Ð?˜Ÿš ™œÐ?Ð?¨3¯8ª8°GÑ+<Ô+<Ð?Ð?Ð?Ñ	@Ô	@€BØ#˜Ð#Ð#Ð#€B„KØ€IrP   z	Set[type]Úcommon_constant_typesc                ó  — t          | t          t          f¦  «        r"t          t	          t
          | ¦  «        ¦  «        S t          | t          j        t          t          j        f¦  «        pt          | t          t          hz  ¦  «        S rd   )rx  r  Ú	frozensetr  r‚   Úis_safe_constantr~  ÚenumÚEnumr4  rÀ   ÚSizerŒ  r^  rç  s    rQ   r�  r�  å  sm   € Ýˆa•%�Ð#Ñ$Ô$ð -Ý•3Õ'¨Ñ+Ô+Ñ,Ô,Ð,Ý�a�$œ)¥T­5¬:Ð6Ñ7Ô7ð ½6Ø	Ý¥ Ñ'ñ<ô <ð rP   c                ó„   — ddl m}m} t          | |¦  «        r'|                     |                      ¦   «         ¦  «        S | S )Nr8   )ÚConstantVariableÚSymNodeVariable)Ú	variablesr”  r•  r~  rÝ  Úevaluate_expr)rÔ  r”  r•  s      rQ   Úspecialize_symnoder˜  î  sS   € Ø<Ð<Ð<Ð<Ð<Ð<Ð<Ð<õ �#�Ñ'Ô'ð <Ø×&Ò& s×'8Ò'8Ñ':Ô':Ñ;Ô;Ð;à€JrP   c                óx   — ddl m} t          | ¦  «        } t          | |¦  «        r|                      ¦   «         S | S )Nr8   ©r”  )r–  r”  r˜  r~  Úas_python_constant)rÔ  r”  s     rQ   Úguard_if_dynrœ  ø  sK   € Ø+Ð+Ð+Ð+Ð+Ð+å
˜SÑ
!Ô
!€Cå�#Ð'Ñ(Ô(ð (Ø×%Ò%Ñ'Ô'Ð'à€JrP   c                ó~   — t          d„ t          j        | |                     ¦   «         ¦  «        D ¦   «         ¦  «        S )Nc              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rd   )Úis_python_constantr~  s     rQ   r…   z&check_constant_args.<locals>.<genexpr>  s.   è è € ÐVÐV¨!ˆq×#Ò#Ñ%Ô%ÐVÐVÐVÐVÐVÐVrP   )r  rˆ   r‰   rá   rW  s     rQ   Úcheck_constant_argsr     s3   € ÝÐVÐV­y¬¸tÀVÇ]Â]Á_Ä_Ñ/UÔ/UÐVÑVÔVÑVÔVÐVrP   c                óÐ   — ddl m} ddlm} d}t	          j        | |                     ¦   «         ¦  «        D ]+}t          ||¦  «        r|dz  }Œt          ||¦  «        s dS Œ,|dk    S )Nr8   rš  ©ÚUnspecializedPythonVariabler   F)Úvariables.constantr”  Úvariables.tensorr£  rˆ   r‰   rá   r~  )rX  rY  r”  r£  Úunspec_countrÞ   s         rQ   Úcheck_unspec_python_argsr§    s—   € Ø4Ð4Ð4Ð4Ð4Ð4Ø=Ð=Ð=Ð=Ð=Ð=à€LÝŒ_˜T 6§=¢=¡?¤?Ñ3Ô3ð ð ˆÝ�aÐ4Ñ5Ô5ð 	Ø˜AÑˆLˆLÝ˜AÐ/Ñ0Ô0ð 	Ø�5�5ð	à˜!ÒÐrP   c                ó´   — ddl m} t          j        | |                     ¦   «         ¦  «        D ])}|                     ¦   «         st          ||¦  «        s dS Œ*dS )Nr8   r¢  FT)r¥  r£  rˆ   r‰   rá   rŸ  r~  )rX  rY  r£  rÞ   s       rQ   Úcheck_unspec_or_constant_argsr©    sl   € ð >Ð=Ð=Ð=Ð=Ð=åŒ_˜T 6§=¢=¡?¤?Ñ3Ô3ð ð ˆØ×$Ò$Ñ&Ô&ð 	­*°QÐ8SÑ*TÔ*Tð 	Ø�5�5øØˆ4rP   c                ó�   ‡— ddl mŠ t          ˆfd„t          j        | |                     ¦   «         ¦  «        D ¦   «         ¦  «        S )Nr8   )ÚNumpyNdarrayVariablec              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S rd   )r~  )rƒ   rÞ   r«  s     €rQ   r…   z+check_numpy_ndarray_args.<locals>.<genexpr>"  sB   øè è € ð ð àõ 	�1Ð*Ñ+Ô+ðð ð ð ð ð rP   )r¥  r«  rQ  rˆ   r‰   rá   )rX  rY  r«  s     @rQ   Úcheck_numpy_ndarray_argsr­    sa   ø€ Ø6Ð6Ð6Ð6Ð6Ð6åð ð ð ð å”  v§}¢}¡¤Ñ7Ô7ðñ ô ñ ô ð rP   zType[KeysView[Any]]Ú	dict_keyszType[ValuesView[Any]]Údict_valuesÚodict_valueszType[Iterator[Any]]Útuple_iteratorÚrange_iteratorc                ól   — t          | ¦  «        }t          j        j                             |¦  «         |S rd   )Ú
object_newrÀ   r¾  ÚModulerú   )r\   rq  s     rQ   Únn_module_newr¶  1  s*   € Ý
�S‰/Œ/€CÝ	„H„O×Ò˜SÑ!Ô!Ð!Ø€JrP   c                óB   — t          j        t          j        | d¦  «        S rŒ   )r�  ÚreduceÚoperatorÚmul)Úits    rQ   Úproductr¼  7  s   € ÝÔ�HœL¨"¨aÑ0Ô0Ð0rP   c                óL   — |                       ¦   «         \  }\  }}|||z            S rd   )Ú
__reduce__)r»  r[  r2  rq  rV  s        rQ   Útuple_iterator_getitemr¿  ;  s'   € Ø—}’}‘”Ñ€A�vˆˆuØˆu�u‰}ÔÐrP   úTuple[int, int, int]c                ót   — |                       ¦   «         \  }\  }}|j        |pdz   }|j        }|j        }|||fS r�   )r¾  rV  rW  rX  )Ú
range_iterr2  Ú	range_objÚ	maybe_idxrV  rW  rX  s          rQ   Únormalize_range_iterrÅ  C  sI   € Ø!+×!6Ò!6Ñ!8Ô!8Ñ€A�|ˆ	�Yð ŒO˜y˜~¨AÑ.€EØŒ>€DØŒ>€DØ�4˜ÐÐrP   c                ó,   — |                       |¦  «        S rd   )Úas_subclass)rJ  r\   s     rQ   Úto_subclassrÈ  M  s   € Ø�=Š=˜ÑÔÐrP   c                óh   — t          t          j        t          | ¦  «        ||dz   ¦  «        ¦  «        S rŒ   )Únextrˆ   ÚisliceÚiter)ÚdrM  s     rQ   Údict_keys_getitemrÎ  Q  s)   € Ý•	Ô ¥ a¡¤¨!¨Q°©UÑ3Ô3Ñ4Ô4Ð4rP   c                óL   — | j         j        }| j        }|rdnd}|› d|› d|› �}|S )NÚLÚGz["z"].)r>  rJ   r[   )r¨   r¡  r[   rÍ  r×  Ú
local_names         rQ   Ú	enum_reprrÓ  U  sD   € ð Œ?Ô#€DØ
Œ*€CØÐ!ˆCˆC˜c€EØÐ+Ð+˜TÐ+Ð+ cÐ+Ð+€JØÐrP   c                óÄ   — || j         d<   t          j        ¦   «         j        j        }t
          j        j        j         	                    ||¦  «        x}r|| j         d<   d S d S )NÚexample_valueÚunbacked_bindings)
Úmetar(   rh   Ú	fake_modeÚ	shape_envrÀ   r    ÚexperimentalÚsymbolic_shapesÚcompute_unbacked_bindings)ÚnoderÕ  rÙ  Úsymbol_to_paths       rQ   Úset_example_valuerß  _  so   € ð "/€D„IˆoÑÝÔ"Ñ$Ô$Ô.Ô8€IÝœÔ.Ô>×XÒXØ�=ñô ð €~ð 8ð *8ˆŒ	Ð%Ñ&Ð&Ð&ð8ð 8rP   c                ó¨   — |                       ¦   «         j        j                             d¦  «        }t	          |¦  «        sddlm}  |d¦  «         |S )NrÕ  r8   r×  z:Cannot check Tensor object identity without its fake value)rÒ  rÝ  r×  rh   r=   r6  rØ  )ÚvtÚfake_tensorrØ  s      rQ   Ú_get_fake_tensorrã  n  s]   € Ø—+’+‘-”-Ô$Ô)×-Ò-¨oÑ>Ô>€KÝ�;ÑÔð TØ&Ð&Ð&Ð&Ð&Ð&àˆÐRÑSÔSÐSØÐrP   c                ó^  ‡— ddl m}m}m}m} ‰                     ¦   «         r0t          ˆfd„| D ¦   «         ¦  «        }|                     |¦  «        S d}	|r!t          ‰|¦  «        rd}	t          ‰¦  «        Šd }
| D ]š}|	r9t          ||¦  «        r(‰t          |¦  «        u r|                     d¦  «        c S Œ= |t          j        ¦  «                             ||‰gi ¦  «        }|
€|}
Œn |t          j        ¦  «                             |||
gi ¦  «        }
Œ›|
€|                     d¦  «        }
|
S )Nr8   )ÚBuiltinVariabler”  ÚTensorVariableÚVariableTrackerc              3  ó”   •K  — | ]B}|                      ¦   «         o)|                     ¦   «         ‰                     ¦   «         k    V — ŒCd S rd   )rŸ  r›  )rƒ   rÞ   rH  s     €rQ   r…   z iter_contains.<locals>.<genexpr>€  sk   øè è € ð 
ð 
ð ð × Ò Ñ"Ô"ð FØ×$Ò$Ñ&Ô&¨&×*CÒ*CÑ*EÔ*EÒEð
ð 
ð 
ð 
ð 
ð 
rP   FT)r–  rå  r”  ræ  rç  rŸ  rQ  rÝ  r~  rã  r¹  ÚeqÚcall_functionÚor_)r›   rH  ÚtxÚcheck_tensor_identityrå  r”  ræ  rç  Úfound_constÚmust_check_tensor_idÚfoundrÞ   Úchecks    `           rQ   Úiter_containsrò  w  s²  ø€ ðð ð ð ð ð ð ð ð ð ð ð ð × Ò Ñ"Ô"ð 4Ýð 
ð 
ð 
ð 
ð ð
ñ 
ô 
ñ 
ô 
ˆð
  ×&Ò& {Ñ3Ô3Ð3à ÐØð *¥¨F°NÑ!CÔ!Cð *Ø#Ðå! &Ñ)Ô)ˆà'+€EØð ð ˆØð 	Ý˜!˜^Ñ,Ô,ð 9ØÕ-¨aÑ0Ô0Ð0Ð0Ø+×2Ò2°4Ñ8Ô8Ð8Ð8Ð8øà#�O¥H¤KÑ0Ô0×>Ò>¸rÀAÀvÀ;ÐPRÑSÔSˆEØˆ}Ø��à'˜­¬Ñ5Ô5×CÒCØ˜ ˜¨ñô ��ð €}Ø ×'Ò'¨Ñ.Ô.ˆØ€LrP   c                ód   — t          | t          j        t          j        j        t
          f¦  «        S )z4Returns whether it indexes dictionaries using its id)r~  rÀ   r½  r¾  rµ  r   )rç   s    rQ   Ú	key_is_idrô     s    € å�a�%œ,­¬¬Õ9JÐKÑLÔLÐLrP   c                ó>   — d„ |                       ¦   «         D ¦   «         S )Nc                óN   — g | ]"}t          |¦  «        rt          |¦  «        n|‘Œ#S r;   )rô  ra  )rƒ   rç   s     rQ   rè   zkey_to_id.<locals>.<listcomp>¦  s-   € Ð?Ð?Ð?¨Q•Y˜q‘\”\Ð(�Bˆq‰EŒEˆE qÐ?Ð?Ð?rP   )rï   rˆ  s    rQ   Ú	key_to_idr÷  ¥  s   € Ø?Ð?°%·*²*±,´,Ð?Ñ?Ô?Ð?rP   c               ó  ‡— ddl m} t          | t          t          f¦  «        rrd                     ˆfd„| D ¦   «         ¦  «        }t          | t          ¦  «        rd|› d�S t          | t          ¦  «        sJ ‚t          | ¦  «        dk    rd|› d�S d|› d	�S t          | t          j        ¦  «        r%t          | ‰¬
¦  «         
                    dd¦  «        S  || ¦  «        r| j        S t          | t          ¦  «        rd„ } || ¦  «        S | ›S )Nr8   )Úis_builtin_callablerc  c              3  ó:   •K  — | ]}t          |‰¬ ¦  «        V — ŒdS ©©r¡  N©Ú
const_repr©rƒ   rÈ  r¡  s     €rQ   r…   zconst_repr.<locals>.<genexpr>­  s0   øè è € ÐDÐD¸Q�j¨°%Ð8Ñ8Ô8ÐDÐDÐDÐDÐDÐDrP   ú[ú]ú(z,)r„  rü  ú'rh  c                óR   — | j         }|j        }|dk    r|j        S |dz   |j        z   S )NÚbuiltinsú.)r>  rK   rL   )r=  ÚklassrR  s      rQ   Úfullnamezconst_repr.<locals>.fullname¾  s7   € Ø”KˆEØÔ%ˆFØ˜Ò#Ð#ØÔ)Ð)Ø˜C‘< %Ô"4Ñ4Ð4rP   )Útrace_rulesrù  r~  rî   r  r�   r  r�  r‘  rÓ  ÚreplacerJ   r4  )rÞ   r¡  rù  Ú
elems_reprr  s    `   rQ   rþ  rþ  ©  sG  ø€ Ø0Ð0Ð0Ð0Ð0Ð0å�!•d�E�]Ñ#Ô#ð Ø—X’XÐDÐDÐDÐDÀ!ÐDÑDÔDÑDÔDˆ
Ý�a�ÑÔð 	)Ø$�zÐ$Ð$Ð$Ð$å˜a¥Ñ'Ô'Ð'Ð'Ð'Ý�1‰vŒv˜Š{ˆ{Ø)˜:Ð)Ð)Ð)Ð)à(˜:Ð(Ð(Ð(Ð(Ý	�A•t”yÑ	!Ô	!ð õ ˜ %Ð(Ñ(Ô(×0Ò0°°bÑ9Ô9Ð9Ø	Ð	˜QÑ	Ô	ð ØŒzÐÝ	�A•tÑ	Ô	ð ð	5ð 	5ð 	5ð ˆx˜‰{Œ{ÐàˆxˆrP   c               óV   ‡— d                      ˆfd„| D ¦   «         ¦  «        }d|z   dz   S )Nrc  c              3  ó:   •K  — | ]}t          |‰¬ ¦  «        V — ŒdS rû  rý  rÿ  s     €rQ   r…   z!dict_keys_repr.<locals>.<genexpr>Ë  s0   øè è € ÐGÐG°q�
 1¨EÐ2Ñ2Ô2ÐGÐGÐGÐGÐGÐGrP   r   r  ©r�   )Ú
const_keysr¡  Úkeys_strs    ` rQ   Údict_keys_reprr  Ê  s8   ø€ Ø�xŠxÐGÐGÐGÐG¸JÐGÑGÔGÑGÔG€HØ�‰>˜CÑÐrP   Ú
__dict_key)ÚUnsupportedFakeTensorExceptionc                óD   — |› dt          |¦  «        › d| j        j        › �S )Nr2  Ú_c)ra  Úoutputrí  )rì  Úrootrq  s      rQ   Úget_safe_global_namer  Õ  s+   € ð Ð6Ð6•R˜‘W”WÐ6Ð6 ¤	Ô 4Ð6Ð6Ð6rP   c                ó¸   — 	  | ¦   «         S # t           $ rC}ddlm} d|j        › d�}t                               |¦  «          |||¬¦  «         Y d }~d S d }~ww xY w)Nr8   r×  zUnsupported: z with fake tensor propagation.rÚ  )r  r6  rØ  Úreasonrq   r=  )r´  rà  rØ  Úmsgs       rQ   Úwrap_fake_exceptionr  ß  sŽ   € ð'Øˆr‰tŒtˆøÝ)ð 'ð 'ð 'Ø&Ð&Ð&Ð&Ð&Ð&àF˜aœhÐFÐFÐFˆÝ�Š�CÑÔÐØˆ�c AÐ&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&øøøøð'øøøs   ‚	 Œ
A–8AÁAc                ó¤   ‡ — t           j        j                             |¦  «        5  t	          ˆ fd„¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nc                 ó,   •— t          j        ‰ ¦  «        S rd   )rñ  ÚdeepcopyrA  s   €rQ   rß   z)deepcopy_to_fake_tensor.<locals>.<lambda>ì  s   ø€ ­4¬=¸Ñ+=Ô+=€ rP   )rÀ   rÁ  râ  ÚFakeCopyModer  )rq  rØ  s   ` rQ   Údeepcopy_to_fake_tensorr!  ê  s–   ø€ Ý	Ô	Ô	&×	3Ò	3°IÑ	>Ô	>ð ?ð ?Ý"Ð#=Ð#=Ð#=Ð#=Ñ>Ô>ð?ð ?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?s   ¦AÁA	ÁA	c                óx   — t          j        t          j        t          j        | |z
  ¦  «        ¦  «        ¦  «        S )z+
    Calculate root mean squared error
    )rÀ   ÚsqrtÚmeanÚsquare)rj  r  s     rQ   Úrmser&  ï  s,   € õ Œ:•e”j¥¤¨c°C©iÑ!8Ô!8Ñ9Ô9Ñ:Ô:Ð:rP   g-Cëâ6?Tc                ó†  ‡ ‡‡‡‡‡‡‡‡‡	‡
‡— ‰€‰ Št          ‰ t          t          t          j        t
          j        j        t
          j        f¦  «        rÏt          ‰t          t          t          j        f¦  «        s*J dt          ‰ ¦  «        › dt          ‰¦  «        › �¦   «         ‚t          ‰ ¦  «        t          ‰¦  «        k    r ‰	d¦  «         dS t          ‰ ¦  «        t          ‰¦  «        k    o0t          ˆˆˆˆˆ	ˆˆˆ
fd„t          ‰ ‰‰¦  «        D ¦   «         ¦  «        S t          ‰ ¦  «        j        dk    r)t          ‰ j        ‰j        ‰j        ‰‰‰‰‰‰‰	‰
¬¦  «        S t          ‰ t           ¦  «        �r
t          ‰t           ¦  «        sJ ‚t#          ‰                      ¦   «         ¦  «        t#          ‰                     ¦   «         ¦  «        k    sNJ d	t#          ‰                      ¦   «         ¦  «        › d
t#          ‰                     ¦   «         ¦  «        › �¦   «         ‚t'          ‰                      ¦   «         ¦  «        D ]=}t          ‰ |         ‰|         ‰|         ‰‰‰‰‰‰‰	‰
¬¦  «        s ‰	d|¦  «          dS Œ>dS t          ‰ t"          ¦  «        rct          ‰t"          ¦  «        sJ ‚t#          ‰ ¦  «        t#          ‰¦  «        k    s*J dt#          ‰ ¦  «        › d
t#          ‰¦  «        › �¦   «         ‚dS t          ‰ t
          j        t*          f¦  «        �r:t          ‰ t
          j        j        ¦  «        rJ ‚t          ‰t
          j        j        ¦  «        rJ ‚d„ Šˆfd„‰ ‰‰fD ¦   «         \  Š ŠŠ‰ j        r1‰j        sJ ‚‰                      ¦   «         Š ‰                     ¦   «         Št          ‰t
          j        ¦  «        s*J dt          ‰ ¦  «        › dt          ‰¦  «        › �¦   «         ‚‰r¦‰ j        ‰j        k    r ‰	d‰ j        ‰j        ¦  «         dS ‰ j        t
          j        k    rh‰rdS t          j        ‰                      t
          j        ¬¦  «        ‰                     t
          j        ¬¦  «        ‰‰‰¬¦  «        }|s ‰	d¦  «         |S ‰�r‰                      ¦   «                              t
          j         ¦  «        Š ‰                     ¦   «                              t
          j         ¦  «        Št          j        ‰ ‰‰‰d¬¦  «        rdS t
          j        j!         "                    ‰ ‰dd¬¦  «        }|dk     rQtF           $                    d| %                    ¦   «          &                    ¦   «          '                    ¦   «         ¦  «         |dk    S ‰s‰                      ‰j        ¦  «        Š t          j        ‰ ‰‰‰‰¬¦  «        rdS ‰j        t
          j(        k    �rXd}‰ )                    ¦   «          *                    ¦   «         s€‰ )                    ¦   «          *                    ¦   «         sZ‰  )                    ¦   «          *                    ¦   «         r4t          j        ‰                     ‰j        ¬¦  «        ‰||‰¬¦  «        rdS tW          ‰‰ ¦  «         '                    ¦   «         }tY          j)        |¦  «        rtF           $                    d¦  «         tW          ‰‰¦  «         '                    ¦   «         }‰j        t
          j-        t
          j.        fv rdnd}‰
r!‰ /                    ¦   «         dk    r	‰dk    rd}ns‰
r!‰ /                    ¦   «         d k    r	‰dk    rd!}nP‰ /                    ¦   «         d"k     s6‰ j0        d#k    r%‰ j1        d$         ‰ j1        d%         cxk    rd&k    sn ‰d'k    rd}|||z  ‰dz  z   k    }|sG‰rEtY          j)        |¦  «        r1tY          j)        |¦  «        rt
          j2        j3        j4        j5        sd}|s) ‰	d(||‰ 6                    ¦   «         ‰j        |‰‰
¦  «         |S ‰rdS  ‰	d)‰¦  «         dS t          ‰ tn          tp          t          d¦  «        t6          t
          j9        f¦  «        r)‰rdS ‰ ‰k    }|s ‰	d*t          ‰ ¦  «        ‰ ‰¦  «         |S tu          ‰ ¦  «        stw          ‰ ¦  «        ri‰r2tu          ‰¦  «        s#tw          ‰¦  «        s‰  '                    ¦   «         Š t          ‰ ¦  «        t          ‰¦  «        u o‰ ‰k    }|s ‰	d+‰ ‰¦  «         |S ty          ‰ ¦  «        r\t          ‰ ¦  «        t          ‰¦  «        u o=t          t          j=        ‰ ¦  «        t          j=        ‰¦  «        ‰‰‰‰‰‰‰‰	‰
¬¦  «        S t          ‰ ¦  «        j        d,v r\t          ‰ ¦  «        t          ‰¦  «        u sJ ‚t          ˆˆˆˆˆˆ	ˆ ˆˆˆˆ
fd-„‰ j>                             ¦   «         D ¦   «         ¦  «        S t          d.t          ‰ ¦  «        j        › �¦  «        ‚)/z-Check correctness to see if ref and res matchNztype mismatch r¡   zLength mismatchFc              3  óT   •K  — | ]"\  }}}t          |||‰‰
‰‰‰	‰‰‰¬ ¦  «        V — Œ#dS )©Ú	log_errorÚ(use_larger_multiplier_for_smaller_tensorN)Úsame)rƒ   ÚaiÚbiÚ	fp64_refiÚcos_similarityÚ	equal_nanÚexact_dtypeÚignore_non_fpr*  Úrelax_numpy_equalityÚtolr+  s       €€€€€€€€rQ   r…   zsame.<locals>.<genexpr>  so   øè è € ð ,
ð ,
ñ "��B˜	õ ØØØØØØØØ$ØØ#Ø9aðñ ô ð,
ð ,
ð ,
ð ,
ð ,
ð ,
rP   ÚQuestionAnsweringModelOutputr)  zkeys mismatch z == ©r0  r5  r1  r2  r4  r3  r*  r+  zAccuracy failed for key name %sTzelements mismatch c                ób   — t          | t          j        ¦  «        r| nt          j        | ¦  «        S rd   )r~  rÀ   r½  Útensor©rJ  s    rQ   Ú	to_tensorzsame.<locals>.to_tensorP  s%   € Ý" 1¥e¤lÑ3Ô3ÐH�1�1½¼Àa¹¼ÐHrP   c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S rd   r;   )rƒ   rÍ  r;  s     €rQ   r…   zsame.<locals>.<genexpr>S  s+   øè è € ÐMÐM°˜i˜i¨™nœnÐMÐMÐMÐMÐMÐMrP   zdtype mismatch %s, %srë  )ÚatolÚrtolr1  z+Accuracy failed: uint8 tensor did not matchr   g�íµ ÷Æ°>)ÚdimÚepsg®Gáz®ï?zSimilarity score=%sg{®Gáz¤?z=Found nan in reference. Consider running in higher precision.g      @g       @é
   g      $@iô  g      @r¹   é   r˜  éþÿÿÿr8   g{®Gáz”?zŠRMSE (res-fp64): %.5f, (ref-fp64): %.5f and shape=%s. res.dtype: %s, multiplier: %f, tol: %f, use_larger_multiplier_for_smaller_tensor: %dz+Accuracy failed: allclose not within tol=%szAccuracy failed (%s): %s != %sz!Accuracy failed (numpy): %s != %s)ÚMaskedLMOutputÚSeq2SeqLMOutputÚ!CausalLMOutputWithCrossAttentionsÚLongformerMaskedLMOutputÚ	InstancesÚSquashedNormalÚBoxesÚNormalÚTanhTransformÚFooÚVariablec              3  ó    •K  — | ]H}t          t          ‰|¦  «        t          ‰
|¦  «        t          ‰|¦  «        ‰‰‰‰‰	‰‰‰¬ ¦  «        V — ŒIdS )r7  N)r,  rN  )rƒ   r§   r0  r1  r2  Úfp64_refr3  r*  rj  r4  r  r5  r+  s     €€€€€€€€€€€rQ   r…   zsame.<locals>.<genexpr>	  s‡   øè è € ð 
ð 
ð õ Ý˜˜SÑ!Ô!Ý˜˜SÑ!Ô!Ý˜ #Ñ&Ô&Ø-ØØ#Ø'Ø%9Ø+Ø#Ø9aðñ ô ð
ð 
ð 
ð 
ð 
ð 
rP   zunsupported type: )@r~  rî   r  rr   r‡  rÀ   r¾  ÚParameterListr’  r4  r  r  r  rJ   r,  Úlossr  rý   rï   rb  r½  ÚfloatrÁ  r<   Ú	is_sparseÚto_denserì  r°   ÚallcloseÚtor‘  Úflattenr˜  Ú
functionalÚcosine_similarityrq   r=  ÚcpuÚdetachr`  r™  ÚisnanrQ  r&  Úmathr—  Úbfloat16ÚnumelÚndimr÷  rE  r9   ÚcppÚinject_relu_bug_TESTING_ONLYr  r{   rW   rú  r•  rš  r»  Ú	as_tensorÚ__dict__r¨  )rj  r  rP  r0  r5  r1  r2  r4  r3  r*  r+  rç   ÚrÚscoreÚ	loose_tolÚ	ref_errorÚ	res_errorÚ
multiplierÚpasses_testr;  s   ```````````        @rQ   r,  r,  ö  s  øøøøøøøøøøøø€ ð ÐØˆÝØ�d•E�;Ô,­e¬hÔ.DÅeÄjÐQñô ð PFõ Ø•$��{Ô0Ð1ñ
ô 
ð 	4ð 	4à3�D ™IœIÐ3Ð3­¨S©	¬	Ð3Ð3ñ	4ô 	4ð 
õ ˆs‰8Œ8•s˜3‘x”xÒÐØˆIÐ'Ñ(Ô(Ð(Ø�5Ý�3‰xŒx�3˜s™8œ8Ò#ð 
­ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
õ &)¨¨c°8Ñ%<Ô%<ð,
ñ ,
ô ,
ñ )
ô )
ð 	
õ  
ˆc‰ŒÔ	Ð=Ò	=Ð	=õ ØŒHØŒHØŒMØØØØØ ØØØ5]ð
ñ 
ô 
ð 	
õ 
�C�Ñ	Ô	ñ fFÝ˜#�tÑ$Ô$Ð$Ð$Ð$Ý�3—8’8‘:”:‰Œ¥#Ø�HŠH‰JŒJñ#
ô #
ò 
ð 
ð 
àB�C §¢¡
¤
™OœOÐBÐBµ°S·X²X±Z´Z±´ÐBÐBñ
ô 
ð 
õ ˜Ÿš™
œ
Ñ#Ô#ð 	ð 	ˆAåØ˜”FØ˜”FØ˜Q”KØ#1ØØ'Ø +Ø)=Ø"/Ø'Ø=eðñ ô ðð �	Ð;¸QÑ?Ô?Ð?Ø�u�uð!ð" ˆtÝ	�C�Ñ	Ô	ð NFÝ˜#�sÑ#Ô#Ð#Ð#Ð#Ý�3‰xŒx�3˜s™8œ8Ò#Ð#Ð#Ð%R½#¸c¹(¼(Ð%RÐ%RÍÈCÉÌÐ%RÐ%RÑ#Ô#Ð#ØˆtÝ	�C�%œ,­Ð.Ñ	/Ô	/ñ JFÝ˜c¥5Ô#4Ô#?Ñ@Ô@Ð@Ð@Ð@Ý˜c¥5Ô#4Ô#?Ñ@Ô@Ð@Ð@Ð@ð	Ið 	Ið 	Ið NÐMÐMÐM¸¸cÀ8Ð8LÐMÑMÔMÑˆˆS�(àŒ=ð 	!Ø”=Ð Ð �=Ø—,’,‘.”.ˆCØ—,’,‘.”.ˆCÝ˜#�uœ|Ñ,Ô,ÐVÐVÐ.V½tÀC¹y¼yÐ.VÐ.VÍ4ÐPSÉ9Ì9Ð.VÐ.VÑVÔVÐ,Øð 	ØŒy˜CœIÒ%Ð%Ø�	Ð1°3´9¸c¼iÑHÔHÐHØ�uØŒy�EœJÒ&Ð&Ø ð  Ø˜4å”NØ—F’F¥¤�FÑ-Ô-Ø—F’F¥¤�FÑ-Ô-ØØØ'ðñ ô �ð ð MØ�IÐKÑLÔLÐLØ�àñ k	Ø—+’+‘-”-×"Ò"¥5¤=Ñ1Ô1ˆCØ—+’+‘-”-×"Ò"¥5¤=Ñ1Ô1ˆCÝŒ~˜c 3¨S°sÀdÐKÑKÔKð ð �tÝ”HÔ'×9Ò9¸#¸sÈÈtÐ9ÑTÔTˆEØ�tŠ|ˆ|Ý—’Ð1°5·9²9±;´;×3EÒ3EÑ3GÔ3G×3LÒ3LÑ3NÔ3NÑOÔOÐOØ˜D’=Ð àð (Ø—f’f˜SœYÑ'Ô'�õ Œ~˜c 3¨S°sÀiÐPÑPÔPð Ø�tð Œ~¥¤Ò.Ñ.ð %�	à ŸšÑ(Ô(×,Ò,Ñ.Ô.ð àŸIšI™KœKŸOšOÑ-Ô-ð ð Ÿ	š	™œŸšÑ)Ô)ð õ œØ Ÿš¨#¬)˜Ñ4Ô4ØØ&Ø&Ø"+ðñ ô ð	 ð  ˜4Ý  ¨3Ñ/Ô/×4Ò4Ñ6Ô6�	å”:˜iÑ(Ô(ð Ý—K’KØWñô ð õ ! ¨3Ñ/Ô/×4Ò4Ñ6Ô6�	ð œ9­¬½¼Ð(GÐGÐG�C�CÈSð ð <ð %Ø—N’NÑ$Ô$¨Ò*Ð*¨s°hª¨à!%�J�JØ=ð %Ø—N’NÑ$Ô$¨Ò+Ð+°°x²°à!$�J�Jà—N’NÑ$Ô$ tÒ+Ð+Øœ Aš˜¨#¬)°B¬-¸3¼9ÀR¼=Ð*MÐ*MÒ*MÐ*MÈAÒ*MÐ*MÐ*MÐ*Mà˜h’�ð
 "%�Jà'¨J¸Ñ,BÀSÈ4ÁZÑ,OÒP�à#ð	'à!ð	'õ œ
 9Ñ-Ô-ð	'õ œ
 9Ñ-Ô-ð		'õ "œOÔ2Ô6ÔSð	'ð #'�KØ"ð Ø�IðIà!Ø!ØŸš™
œ
Øœ	Ø"ØØ@ñ
ô 
ð 
ð #Ð"àð Ø�tàˆIÐCÀSÑIÔIÐIØ�5Ý	�C�#�s¥D¨¡J¤Jµµe´lÐCÑ	DÔ	Dð =FØð 	Ø�4Ø�3ŠJˆØð 	MØˆIÐ6½¸S¹	¼	À3ÈÑLÔLÐLØˆÝ	˜3Ñ	Ô	ð 6FÕ#6°sÑ#;Ô#;ð 6FØð 	Ý˜cÑ"Ô"ð	Ý&9¸#Ñ&>Ô&>ð	ð —(’(‘*”*ˆCÝ�#‰YŒY�$˜s™)œ)Ð#Ð5¨#°ª*ˆØð 	EØˆIÐ9¸3ÀÑDÔDÐDØˆÝ	˜#Ñ	Ô	ð -FÝ�S‘	”	�T #™YœYÐ&ð 
­DÝŒO˜CÑ Ô ÝŒO˜CÑ Ô ØØ)ØØØ#Ø!5Ø'ØØ5]ð-
ñ -
ô -
ð 	
õ 
ˆc‰ŒÔ	ð  ð 
ð 
õ �C‰yŒy�D ™IœIÐ%Ð%Ð%Ð%Ýð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð ”|×(Ò(Ñ*Ô*ð
ñ 
ô 
ñ 
ô 
ð 	
õ" ÐDµ°S±	´	Ô0BÐDÐDÑEÔEÐErP   c                ón   — | j                              d¦  «        d         }d| j        › d|› d| j        › d�S )Nú/r˜  r  z' (r¢   r„  )rï  Úsplitr3  r5  )r7  Úshort_filenames     rQ   Úformat_func_inforq  	  sC   € ØÔ%×+Ò+¨CÑ0Ô0°Ô4€NØGˆtŒ|ÐGÐG ÐGÐG°Ô1DÐGÐGÐGÐGrP   c               #  ó  K  — t           j        } t          j        t           _        t           j        }t          j        t           _        	 d V — | t           _        |t           _        d S # | t           _        |t           _        w xY wrd   )r9   Úcache_size_limitrƒ  rö   Úaccumulated_cache_size_limit)ÚpriorÚprior_acc_limits     rQ   Údisable_cache_limitrw  	  sm   è è € åÔ#€EÝ!œk…FÔÝÔ9€OÝ*-¬+…FÔ'ð>Øˆˆˆà"'�ÔØ.=�Ô+Ð+Ð+øð #(�ÔØ.=�Ô+Ð=Ð=Ð=Ð=s   ÁA& Á&B zDefaultDict[Any, List[Any]]Úguard_failuresz3List[torch._dynamo.output_graph.GraphCompileReason]Úgraph_break_reasonsc                óò   — dt           j                              ¦   «                              d¦  «        z   dz   t          t	          j        ¦   «         ¦  «        z   }t          j                             | |¦  «        S )NÚrun_z%Y_%m_%d_%H_%M_%S_%fz-pid_)ÚdatetimeÚnowÚstrftimer{   r  Úgetpidr   r�   )Úroot_dirÚdir_names     rQ   Ú_get_debug_dirr‚  ;	  sm   € ð 	Ý
Ô
×
Ò
Ñ
!Ô
!×
*Ò
*Ð+AÑ
BÔ
Bñ	Cð ñ	õ �bŒi‰kŒkÑ
Ô
ñ		ð õ Œ7�<Š<˜ (Ñ+Ô+Ð+rP   c                 ó8   — t           j        } t          | ¦  «        S rd   )r9   Údebug_dir_rootr‚  )Ú
debug_roots    rQ   r!  r!  G	  s   € ÝÔ&€JÝ˜*Ñ%Ô%Ð%rP   c                ó�   — d| j         v r't          | j         d         ¦  «        r| j         d         S |rddlm}  |d¦  «         d S d S )NrÕ  r   r×  z9`FakeTensor` example value was required but not available)r×  r=   Útorch._dynamo.excrØ  )rÝ  ÚrequiredrØ  s      rQ   Úextract_fake_example_valuer‰  L	  sf   € Ø˜$œ)Ð#Ð#­°´	¸/Ô0JÑ(KÔ(KÐ#ØŒy˜Ô)Ð)Ø	ð Ø3Ð3Ð3Ð3Ð3Ð3àˆÐQÑRÔRÐRÐRÐRàˆtrP   c                ó6   — t          | ¦  «        |j        u sJ ‚| S rd   )r>   rØ  )rà  rì  s     rQ   Úensure_graph_faker‹  W	  s"   € Ý˜qÑ!Ô! R¤\Ð1Ð1Ð1Ð1Ø€HrP   c                ó^   ‡ ‡— dˆˆ fd„}t           j        j                             ||¦  «        S )NrM  útorch.fx.Nodec                óÄ   •— | j         dk    rd| j        vrt          | ‰‰¦  «        S | j        d         }‰s*t          |t          j        ¦  «        rt          |‰¦  «        S |S )Nrê  rÕ  )rK  r×  Úget_fake_valuer~  rÀ   r½  r‹  )rM  r¦   Úallow_non_graph_fakerì  s     €€rQ   Úvisitz)get_fake_values_from_nodes.<locals>.visit]	  sm   ø€ ØŒ4�?Ò"Ð" ¸a¼fÐ'DÐ'Dõ " ! RÐ)=Ñ>Ô>Ð>àŒf�_Ô%ˆØ#ð 	.­
°3½¼Ñ(EÔ(Eð 	.Ý$ S¨"Ñ-Ô-Ð-Øˆ
rP   )rM  r�  )rÀ   r    rÝ  Úmap_arg)rì  rJ  r�  r‘  s   ` ` rQ   Úget_fake_values_from_nodesr“  \	  sC   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	õ Œ8Œ=× Ò  ¨Ñ.Ô.Ð.rP   c           	     óð  ‡ ‡‡‡‡— ddl m} ddlm}m}m}m}m} ‰ j        }	d‰ j	        v r't          ‰ j	        d         ¦  «        r‰ j	        d         S t          ‰‰ j        ‰ j        f|¦  «        \  ŠŠdŠ|	dk    rlt          ‰¦  «        dk    rYt          ‰d         t           j        j        ¦  «        r4t'          ‰d         ‰j        ¦  «        ft+          ‰dd…         ¦  «        z   Š|	dk    ra‰j        j        ‰ j                 Št3          ‰¦  «        r&t5          ‰d	¦  «        r‰                     ‰‰¦  «         t'          ‰‰j        ¦  «        Š‰ j        d
v st;          d„ ‰D ¦   «         ¦  «        rt+          d„ ‰D ¦   «         ¦  «        Š	 ‰j        5  t=          ¦   «         5  t?          ˆˆˆˆ ˆfd„¦  «        }
ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   �nV# |$ r ‚ t@          $ �rC}|}|j!        �|j!        }t          |t           j"        j#        j$        ¦  «        r |d|j%        › d�¦  «         �nÃt          |t           j"        j#        j&        ¦  «        rBt           j'        j(        j)        s |d|j%        › d�¦  «         �ns |d|j%        › d�¦  «         �n]t          |t           j"        j#        j*        ¦  «        r‡|j%        }	d}t          |	t           j+        j,        ¦  «        rGt           j-         .                    |	j/        j        |	j/        j0        ¦  «        }|�|\  }}d|› d|› d|› d�} |d|j%        › d|› d�¦  «         n²t          |t           j1        j2        j3        j4        ¦  «        r  ||j5        tm          |¦  «        d¬¦  «        ‚t          ||¦  «        r ||j5        |j        d         ¦  «        |‚t          |tn          ¦  «        r'dtm          |¦  «        v r |d‰ j        › d|› �¦  «          |tm          |¦  «        ¦  «         8                    |j9        ¦  «        d‚d}~ww xY w|s9tu          j;        t           j<        t{          j>        t~          ‰¬ ¦  «        |
¦  «        }|
S )!az  
    Run the computation represented by `node` using fake tensors and return the result.

    allow_non_graph_fake: whether to allow the return result to be:
        1. non-fake or 2. fake that is not created by this instance of Dynamo.
        If `True`, you must be prepared to deal with such return values, ideally
        by further wrapping them as this graph's fakes.
    r   )ÚValueRangeErrorr8   )ÚTorchRuntimeErrorrØ  ÚUnsupportedÚ	UserErrorÚUserErrorTyperÕ  NÚcall_methodÚcall_moduleÚ_initialize_hook)ÚinterpolateÚ
is_integerÚwrapped_gradientc              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S rd   )r~  Úcomplex)rƒ   Úas     rQ   r…   z!get_fake_value.<locals>.<genexpr>š	  sE   è è € ð Mð MØ#$�
�1•gÑÔðMð Mð Mð Mð Mð MrP   c              3  ó„   K  — | ];}t          |t          j        ¦  «        r|j        j        �t          |¦  «        n|V — Œ<d S rd   )r~  rÀ   ÚSymFloatrÝ  ÚhintrS  rÓ  s     rQ   r…   z!get_fake_value.<locals>.<genexpr>ž	  sc   è è € ð 
ð 
ð õ ˜#�uœ~Ñ.Ô.ðØ36´8´=Ð3Lõ �#‰JŒJˆJàð
ð 
ð 
ð 
ð 
ð 
rP   c                 ó4   •— t          ‰j        ‰‰ ‰‰¦  «        S rd   )Úrun_noder  )rX  rY  ÚnnmodulerÝ  rì  s   €€€€€rQ   rß   z get_fake_value.<locals>.<lambda>¨	  s   ø€ � ¤¨D°$¸ÀÑIÔI€ rP   zdata dependent operator: zC; to enable, set torch._dynamo.config.capture_scalar_outputs = Truezdynamic shape operator: zM; to enable, set torch._dynamo.config.capture_dynamic_output_shape_ops = Truezm; Operator does not have a meta kernel that supports dynamic output shapes, please report an issue to PyTorchrh  z:It's possible that the support was implemented in module `z` and you may need to `import z`(z), otherwise zunsupported operator: z (z~see https://docs.google.com/document/d/1GgvOe7C8_NVOMLOCwDaYV1mXXyHMXY7ExoewHqooxrs/edit#heading=h.64r4npvq0w0 for how to fix)Úconstrain_as_size_example)Ú	case_nameÚargumentz
TypeError z: )rì  )@Útorch.utils._sympy.value_rangesr•  r6  r–  rØ  r—  r˜  r™  rK  r×  r=   r“  rX  rY  r  r~  rÀ   r¾  rµ  r!  rØ  r  r  Ú
nn_modulesÚtargetrÆ  r”  Ú_infer_parametersr[   rQ  r%   r  r¨  Ú	__cause__rÁ  râ  ÚDataDependentOutputExceptionÚfuncÚDynamicOutputShapeExceptionÚ_dynamor9   Ú capture_dynamic_output_shape_opsÚUnsupportedOperatorExceptionr¤  r¦  r!  Ú_dispatch_pystubÚ_schemaÚoverload_namer    rÚ  rÛ  ÚGuardOnDataDependentSymNodeÚCONSTRAINT_VIOLATIONr{   rS  Úwith_tracebackÚ__traceback__ÚpytreeÚtree_map_onlyr½  r�  Úpartialr‹  )rÝ  rì  r�  r•  r–  rØ  r—  r˜  r™  rK  Úret_valrà  ÚcauseÚimport_suggestionÚmaybe_pystubrR  Úctxr2  rX  rY  r¨  s   ``                @@@rQ   r�  r�  k	  sJ  øøøøø€ ð @Ð?Ð?Ð?Ð?Ð?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 
Œ€Bð ˜$œ)Ð#Ð#­°´	¸/Ô0JÑ(KÔ(KÐ#ØŒy˜Ô)Ð)å-Ø
ˆTŒY˜œÐ$Ð&:ñô �L€Dˆ&ð €HØ	ˆ]ÒÐ�s 4™yœy¨1š}˜}µ¸DÀ¼GÅUÄXÄ_Ñ1UÔ1U˜}å'¨¨Q¬°´Ñ>Ô>Ð@Å5ÈÈaÈbÈbÌÁ?Ä?ÑRˆà	ˆ]ÒÐØ”9Ô'¨¬Ô4ˆå˜(Ñ#Ô#ð 	7­°Ð:LÑ(MÔ(Mð 	7ð
 ×&Ò& x°Ñ6Ô6Ð6õ +¨8°R´\ÑBÔBˆà„yÐEÐEÐEÍð Mð MØ(,ðMñ Mô Mñ Jô JÐEõ ð 
ð 
ð ð	
ñ 
ô 
ñ 
ô 
ˆðCRØŒ\ð 	ð 	Õ3Ñ5Ô5ð 	ð 	Ý)ØIÐIÐIÐIÐIÐIÐIÐIñô ˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ùøð ð ð ð ØÝð <Rñ <Rð <RØ ˆØŒ;Ð"Ø”KˆEåØ•5Ô$Ô0ÔMñ
ô 
ð 5	?ð ˆMðT¨E¬Jð Tð Tð Tñô ð ñ õ Ø•5Ô$Ô0ÔLñ
ô 
ð .	?õ ”=Ô'ÔHð 
Ø�ðb¨u¬zð bð bð bñô ð ñ ð
 �ð8¨u¬zð 8ð 8ð 8ñô ð ñ õ
 Ø•5Ô$Ô0ÔMñ
ô 
ð  	?ð ”ˆBØ "ÐÝ˜"�eœjÔ3Ñ4Ô4ð 
Ý$œx×8Ò8Ø”J”O R¤ZÔ%=ñ ô  �ð  Ð+Ø".‘K�F˜Cð/Ø#)ð/ð /ØIOð/ð /àð/ð /ð /ð &ð
 ˆMð#¨¬ð #ð #Ð7Hð #ð #ð #ñô ð ð õ
 Ø•5”8Ô(Ô8ÔTñ
ô 
ð 	?ð �)ØÔ2Ý�E‘
”
Ø5ðñ ô ð õ
 ˜˜Ñ/Ô/ð 	?Ø�)˜MÔ>ÀÄÀqÄ	ÑJÔJÐPQÐQÝ˜�yÑ)Ô)ð 	?¨j½CÀ¹J¼JÐ.FÐ.FØˆMÐ= t¤{Ð=Ð=°eÐ=Ð=Ñ>Ô>Ð>àÐ¥ A¡¤Ñ'Ô'×6Ò6°q´ÑGÔGÈTÐQøøøøðy<Røøøð|  ð 
ÝÔ ÝŒL�)Ô+Õ,=À"ÐEÑEÔEÀwñ
ô 
ˆð €Nsa   ÆG% ÆGÆGÆ5GÇG	ÇGÇG	Ç	GÇG% ÇGÇG% ÇGÇ G% Ç%P8Ç5H>P3Ð3P8c                 ó.   — t          t          dd ¦  «        S )Nr¨   )rN  Ú_current_noder;   rP   rQ   Úget_current_noderÈ  ô	  s   € Ý•= '¨4Ñ0Ô0Ð0rP   c              #  ó‚   K  — t          ¦   «         }| t          _        	 d V — |t          _        d S # |t          _        w xY wrd   )rÈ  rÇ  r¨   )rÝ  Úolds     rQ   Úset_current_noderË  ø	  sI   è è € å
Ñ
Ô
€CØ…MÔð"Øˆˆˆà!�ÔÐÐø˜c�ÔÐ!Ð!Ð!Ð!s   ž0 °>c                ó.  ‡‡‡‡— ‰j         Št          ‰¦  «        5  ˆˆˆˆfd„}	 ‰dk    r ‰j        ‰i ‰¤Žcddd¦  «         S ‰dk    r5 t          ‰d         ‰j        ¦  «        ‰dd…         i ‰¤Žcddd¦  «         S ‰dk    r|€J ‚ |‰i ‰¤Žcddd¦  «         S ‰dk    r+| j                             ‰j        ¦  «        cddd¦  «         S ‰d	k    r$d
‰j        v sJ ‚‰j        d
         cddd¦  «         S nx# t          t          f$ r&}ddl	m
}  | ||¦  «        |¬¦  «         Y d}~nFd}~wt          $ r6}t           ||¦  «        ¦  «                             |j        ¦  «        |‚d}~ww xY wddd¦  «         n# 1 swxY w Y   t          ‰¦  «        ‚)aÄ  
    Runs a given node, with the given args and kwargs.

    Behavior is dictated by a node's op.

    run_node is useful for extracting real values out of nodes.
    See get_real_value for more info on common usage.

    Note: The tracer arg is only used for 'get_attr' ops
    Note: The nnmodule arg is only used for 'call_module' ops

    Nodes that are not call_function, call_method, call_module, or get_attr will
    raise an AssertionError.
    c           	     óL   •— d‰› d‰j         › d‰› d‰› d�	t          | ¦  «        z   S )NzFailed running r¡   z(*z, **z):
)r®  r{   )rà  rX  rY  rÝ  rK  s    €€€€rQ   Úmake_error_messagez$run_node.<locals>.make_error_message
  s=   ø€ ØO RÐOÐO¨$¬+ÐOÐO¸ÐOÐOÀ6ÐOÐOÐOÕRUÐVWÑRXÔRXÑXÐXrP   rê  Nrš  r   r8   r›  Úget_attrÚplaceholderrÕ  r×  rÚ  )rK  rË  r®  rN  Úoutput_graphÚget_submoduler×  rÜ  r  r6  rØ  rA  r¨  r¼  r½  ÚAssertionError)	ÚtracerrÝ  rX  rY  r¨  rÎ  rà  rØ  rK  s	    ```    @rQ   r§  r§  
  s  øøøø€ ð 
Œ€Bå	˜$Ñ	Ô	ð ð ð	Yð 	Yð 	Yð 	Yð 	Yð 	Yð 	Yð 	Yð	Ø�_Ò$Ð$Ø"�t”{ DÐ3¨FÐ3Ð3ðð ð ð ñ ô ð ð ð �}Ò$Ð$Ø4•w˜t Aœw¨¬Ñ4Ô4°d¸1¸2¸2´hÐIÀ&ÐIÐIðð ð ð ñ ô ð ð ð �}Ò$Ð$ØÐ+Ð+Ð+Ø�x Ð0¨Ð0Ð0ðð ð ð ñ ô ð ð ð �zÒ!Ð!ØÔ*×8Ò8¸¼ÑEÔEðð ð ð ñ ô ð ð ð �}Ò$Ð$Ø&¨$¬)Ð3Ð3Ð3Ð3Ø”y Ô1ð#ð ð ð ñ ô ð ð ð %øõ $Õ%CÐDð 	=ð 	=ð 	=à*Ð*Ð*Ð*Ð*Ð*àˆMÐ,Ð,¨QÑ/Ô/¸!Ð<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<øøøøÝð 	ð 	ð 	ÝÐ1Ð1°!Ñ4Ô4Ñ5Ô5×DÒDØ”ñô àðøøøøð	øøøð1ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ: ˜Ñ
Ô
Ðs^   ›	E=¥C9Á.C9Á?C9Â$C9ÃC9Ã8E=Ã9E.Ä
D+Ä&E=Ä+E.Ä81E)Å)E.Å.E=Å=FÆFc                óJ  ‡— ddl m} ‰j        }| |v r||          S | j        }t          j        j                             | j        | j	        fˆfd„¦  «        \  }}|dk    rd| j
        v r| j
        d         j        S |dk    rD‰j        j        | j                 }t          |¦  «        st!          j        |¦  «        }n ||i |¤Ž nd}	 t%          ‰| |||¦  «        }||| <   nC# t&          $ r6}	 |t)          |	¦  «        ¦  «                             |	j        ¦  «        d‚d}	~	ww xY w|S )z‘
    Run the actual computation represented by `node` and return the result.
    This will execute any dependent nodes in the graph as well.
    r8   )r–  c                ó$   •— t          | ‰¦  «        S rd   )Úget_real_value)rM  rÔ  s    €rQ   rß   z get_real_value.<locals>.<lambda>A
  s   ø€ •.  FÑ+Ô+€ rP   rÐ  Úgraphargr›  N)r6  r–  Úreal_value_cacherK  rÀ   r    rÝ  r’  rX  rY  r×  ÚexamplerÑ  r­  r®  rÆ  rñ  r  r§  r¨  r{   r¼  r½  )
rÝ  rÔ  r–  ÚcacherK  rX  rY  Ú	nn_moduleÚ
real_valuerà  s
    `        rQ   r×  r×  3
  sl  ø€ ð
 'Ð&Ð&Ð&Ð&Ð&àÔ#€EØˆu€}€}Ø�TŒ{Ðà	Œ€BÝ”8”=×(Ò(Ø	Œ�D”KÐ Ø+Ð+Ð+Ð+ñô �L€Dˆ&ð
 
ˆ]ÒÐ˜z¨T¬YÐ6Ð6ØŒy˜Ô$Ô,Ð,à	ˆ]ÒÐØÔ'Ô2°4´;Ô?ˆ	Ý˜iÑ(Ô(ð 	'Ýœ iÑ0Ô0ˆIˆIð ˆI�tÐ&˜vÐ&Ð&Ð&Ð&àˆ	ðRÝ˜f d¨D°&¸)ÑDÔDˆ
Ø ˆˆd‰ˆøÝð Rð Rð RØÐ¥ A¡¤Ñ'Ô'×6Ò6°q´ÑGÔGÈTÐQøøøøðRøøøàÐs   ÃC  Ã 
D Ã*1DÄD c                ó  ‡— ddl mŠm} ˆfd„}|                      ¦   «         D ])\  }} ||¦  «        rJ d|› d ||¦  «        › �¦   «         ‚Œ*|                      ¦   «         D ])\  }} ||¦  «        rJ d|› d ||¦  «        › �¦   «         ‚Œ*d S )Nr   )ÚFakeTensorConfigr=   c                óN   •— ‰j         rdd l}d |j        | j        ¦  «        › �S dS )Nr   z"FAKE TENSOR CREATION TRACEBACK: 
 zNEnable TORCH_FAKE_TENSOR_DEBUG=1 to get creation stack traces on fake tensors.)ÚdebugÚ	tracebackÚformat_listÚ_debug_trace)rJ  râ  rß  s     €rQ   Ústack_or_hintz7assert_no_fake_params_or_buffers.<locals>.stack_or_hint]
  s?   ø€ ØÔ!ð 	dØÐÐÐà`Ð9N¸Ô9NÈqÌ~Ñ9^Ô9^Ð`Ð`Ð`àcÐcrP   zUnexpected fake buffer r¡   zUnexpected fake param )Útorch._subclasses.fake_tensorrß  r=   Únamed_buffersÚnamed_parameters)ro  r=   rå  r[   Úbufferrh  rß  s         @rQ   Ú assert_no_fake_params_or_buffersrê  Z
  s/  ø€ ØGÐGÐGÐGÐGÐGÐGÐGðdð dð dð dð dð ×(Ò(Ñ*Ô*ð Dð D‰ˆˆfØ�7Øñ
ô 
ð 	Dð 	DàC TÐCÐC¨M¨M¸&Ñ,AÔ,AÐCÐCñ	Dô 	Dð 
ð 	Dð ×*Ò*Ñ,Ô,ð Bð B‰ˆˆeØ�7Øñ
ô 
ð 	Bð 	BàA DÐAÐA¨=¨=¸Ñ+?Ô+?ÐAÐAñ	Bô 	Bð 
ð 	BðBð BrP   r   c                ó$   — | j         › d| j        › �S )z9
    Returns the fully qualified name of the object.
    r  )rK   rL   rA  s    rQ   Úfqnrì  o
  s   € ð ŒnÐ1Ð1˜sÔ/Ð1Ð1Ð1rP   c                ó6   — t           j        j        j        r| S |S rd   )rÀ   r´  r9   Úassume_static_by_default)Úcount1Úcount2s     rQ   Úifdynstaticdefaultrñ  v
  s   € Ý„}ÔÔ4ð ØˆàˆrP   rÅ  útypes.ModuleTypec           
     óF  — t          t          j        t          j                             t          t          | j        ¦  «        ¦  «        ¦  «        ¦  «        D ]I}|                     d¦  «        r2|d         dk    r&t          j
        | j        › d|dd…         › �¦  «         ŒJdS )z@
    Ensure all the files in a given submodule are imported
    z.pyr   r2  r  Néýÿÿÿ)rb  r  Úlistdirr   r>  r
   r{   Ú__file__rº   Ú	importlibÚimport_modulerJ   )rÅ  r9  s     rQ   Úimport_submodulerù  }
  sœ   € õ �2œ:¥b¤g§o¢oµd½3ÀÄÑ6MÔ6MÑ&NÔ&NÑOÔOÑPÔPð Gð GˆØ×Ò˜UÑ#Ô#ð 	G¨°¬°sÒ(:Ð(:ÝÔ# s¤|Ð$EÐ$E°h¸sÀ¸s´mÐ$EÐ$EÑFÔFÐFøðGð GrP   r¨   c                ó:   — t          t          | ¦  «        ¦  «        S rd   )Úclass_has_getattributer4  rˆ  s    rQ   Úobject_has_getattributerü  †
  s   € Ý!¥$ u¡+¤+Ñ.Ô.Ð.rP   r\   r4  c                óˆ   — 	 t          t          j        | d¦  «        t          j        ¦  «        rdS n# t
          $ r Y nw xY wdS )NÚ__getattribute__TF)r~  r   r¡  r©  rª  ÚAttributeErrorrf   s    rQ   rû  rû  Š
  sc   € ðÝÝÔ" 3Ð(:Ñ;Ô;ÝÔñ
ô 
ð 	ð �4ð		øõ
 ð ð ð Øˆðøøøàˆ5s   ‚-2 ²
?¾?Úignore_nn_module_getattrc                óª   — 	 t          j        t          | ¦  «        d¦  «        }n# t          $ r d }Y nw xY w|r|t          j        j        j        u rd }|S )NÚ__getattr__)r   r¡  r4  rÿ  rÀ   r¾  rµ  r  )r¨   r   Ú
getattr_fns      rQ   Úget_custom_getattrr  –
  si   € ðÝÔ+­D°©K¬K¸ÑGÔGˆ
ˆ
øÝð ð ð Øˆ
ˆ
ˆ
ðøøøàð  Jµ%´(´/Ô2MÐ$MÐ$Màˆ
ØÐs   ‚"% ¥4³4c                  ó   — e Zd ZdZdZdZdS )ÚTensorStaticReasonrH   rB  r£   N)rJ   rK   rL   Ú	PARAMETERÚ
NOT_TENSORÚNN_MODULE_PROPERTYr;   rP   rQ   r  r  ¡
  s    € € € € € Ø€IØ€JØÐÐÐrP   r  r  c                ó’   — | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS t	          d| › �¦  «        ‚)Nz>mark_dynamic on parameter, parameters are always static today.z2mark_dynamic on a non tensor, how did this happen?z4tensor is static because it is nn module associated.zIllegal reason )r  r  r  r	  rÓ  )r  s    rQ   Útensor_static_reason_to_messager  §
  sX   € ØÕ#Ô-Ò-Ð-ØOÐOØÕ#Ô.Ò.Ð.ØCÐCØÕ#Ô6Ò6Ð6ØEÐEÝ
Ð3¨6Ð3Ð3Ñ
4Ô
4Ð4rP   r9  úUnion[torch.Tensor, Any]Ú	is_tensorÚtensor_sourcer'   ú)Tuple[bool, Optional[TensorStaticReason]]c                óˆ  — ddl m} |                     ¦   «                              ¦   «         s&|                     ¦   «                              ¦   «         rt
          j        rdt          j        fS t          | ¦  «        t          j        j        u s ||¦  «        rt
          j        rdt          j        fS |sdt          j        fS dS )a@  
    Given a tensor, source, and is_tensor flag, determine if a shape should be static.

    Args:
    tensor - the real tensor to evaluate, parameters force a static shape.
    is_tensor - internal dynamo check, essentially "is_tensor": target_cls is TensorVariable,
    tensors not in a TensorVariable for whatever reason are forced static.

    Returns a tuple, where the first element is the bool of whether or not this tensor should have a static shape.
    The second element is a TensorStaticReason, useful for passing to tensor_static_reason_to_message if needed.
    r8   )Ú)is_from_unspecialized_param_buffer_sourceT)FN)Úsourcer  Úguard_sourceÚis_specialized_nn_moduleÚ"is_unspecialized_builtin_nn_moduler9   Ú&force_nn_module_property_static_shapesr  r	  r4  rÀ   r¾  r¿  Úforce_parameter_static_shapesr  r  )r9  r  r  r  s       rQ   Útensor_always_has_static_shaper  ±
  sÚ   € ð  BÐAÐAÐAÐAÐAð 	×"Ò"Ñ$Ô$×=Ò=Ñ?Ô?ð;à×%Ò%Ñ'Ô'×JÒJÑLÔLð;õ Ô
7ð;ð Õ'Ô:Ð:Ð:õ 	ˆV‰Œ�œÔ*Ð*Ð*Ø4Ð4°]ÑCÔCð 	+å
Ô
.ð 	+ð Õ'Ô1Ð1Ð1Øð 3ØÕ'Ô2Ð2Ð2Øˆ;rP   c                ó0   ‡ ‡— ˆ ˆfd„}t          |¦  «        S )Nc                 óþ   •— 	 ddl m }  n0# t          $ r# dt          t          ‰‰¦  «        ¦  «        z   cY S w xY wd„ ‰j        j        D ¦   «         } | |g d¢¬¦  «        }t          ‰‰j        j        j	        |¦  «        S )Nr   )r†   zkTabulate module missing, please install tabulate to log the graph in tabular format, logging code instead:
c                óN   — g | ]"}|j         |j        |j        |j        |j        g‘Œ#S r;   )rK  r[   r®  rX  rY  )rƒ   rM  s     rQ   rè   z<lazy_format_graph_tabular.<locals>.inner.<locals>.<listcomp>Ý
  s:   € ð 
ð 
ð 
Ø;<ˆQŒT�1”6˜1œ8 Q¤V¨Q¬XÐ6ð
ð 
ð 
rP   )Úopcoder[   r®  rX  rY  r}   )
r†   r‡   r{   r/   ÚgraphrJ  r.   ÚforwardÚ__code__rï  )r†   Ú
node_specsÚ	graph_strr¸   ro  s      €€rQ   Úinnerz(lazy_format_graph_tabular.<locals>.innerÔ
  sÇ   ø€ ð	Ø)Ð)Ð)Ð)Ð)Ð)Ð)øÝð 	ð 	ð 	à~ÝÕ,¨W°bÑ9Ô9Ñ:Ô:ñ;ðð ð ð	øøøð
ð 
Ø@BÄÄð
ñ 
ô 
ˆ
ð �HØÐ NÐ NÐ Nð
ñ 
ô 
ˆ	õ " '¨2¬:Ô+>Ô+JÈIÑVÔVÐVs   ƒ
 Š*7¶7r6   )r¸   ro  r"  s   `` rQ   Úlazy_format_graph_tabularr#  Ó
  s8   øø€ ðWð Wð Wð Wð Wð Wõ" �eÑÔÐrP   c                ól   — | › d|› d|› d|› dt          j        |¦  «                              ¦   «         › d�
S )Nr¡   z line z 
r~   )ÚdisÚBytecode)Úprefixr[   r9  Úline_nor7  s        rQ   Úformat_bytecoder)  è
  sG   € ØÐVÐV�tÐVÐV˜hÐVÐV¨gÐVÐV½#¼,ÀtÑ:LÔ:L×:PÒ:PÑ:RÔ:RÐVÐVÐVÐVrP   Ú_forward_pre_hooksÚ_forward_hooksÚ_backward_pre_hooksÚ_backward_hooks)Ú_state_dict_pre_hooksÚ_state_dict_hooksÚ_load_state_dict_pre_hooksÚ_load_state_dict_post_hooksc                 ó¢   — t          t          j        j        j        j        ¦  «        p't          t          j        j        j        j        ¦  «        S rd   )r  rÀ   r¾  ÚmodulesrR  Ú_global_backward_hooksÚ_global_backward_pre_hooksr;   rP   rQ   Únn_module_has_global_hooksr6  ÷
  s@   € õ �uŒxÔÔ&Ô=Ñ>Ô>ð Å#ÝŒÔÔÔ:ñCô Cð rP   c                ó@  — g }| o| o| }|s|r|                      t          ¦  «         |s|r|                      t          ¦  «         |r|                      t          ¦  «         g }|D ]5}t	          | |g ¦  «        }|D ]}	||	         }
|                     |
¦  «         Œ Œ6|S )zÂ
    Sometimes its useful to differentiate between types of hooks such as forward/backward/pre
    hooks executed during module.__call__, and state_dict hooks which are executed separately.
    )ÚextendÚforward_hook_namesÚbackward_hook_namesÚstate_dict_hook_namesrN  rÄ   )rÅ  Úcheck_forward_hooksÚcheck_backward_hooksÚcheck_state_dict_hooksÚhook_dicts_to_checkÚcheck_all_hooksÚ	all_hooksÚhook_dict_nameÚhooksÚ	hook_namerâ  s              rQ   Únn_module_get_all_hooksrE  ÿ
  sô   € ð ÐàÐð 	'Ø$Ð$ð	'à&Ð&ð ð
 ð 7˜oð 7Ø×"Ò"Õ#5Ñ6Ô6Ð6Øð 8˜ð 8Ø×"Ò"Õ#6Ñ7Ô7Ð7Øð :Ø×"Ò"Õ#8Ñ9Ô9Ð9à€IØ-ð #ð #ˆÝ˜˜^¨RÑ0Ô0ˆØð 	#ð 	#ˆIØ˜Ô#ˆDà×Ò˜TÑ"Ô"Ð"Ð"ð	#ð ÐrP   c                óF   — t          | |||¬¦  «        }t          |¦  «        S )zL
    Helper function to check if a module has any hooks attached to it.
    )r<  r=  r>  )rE  r°   )rÅ  r<  r=  r>  rC  s        rQ   Únnmodule_has_hooksrG     s2   € õ $ØØ/Ø1Ø5ð	ñ ô €Eõ �‰;Œ;ÐrP   c                ó`  — t          | ¦  «        r| S t          | t          j        ¦  «        rt	          | j        ¦  «        S t          | t          j        ¦  «        r|                      d¬¦  «        S t          | t          t          f¦  «        r" t          | ¦  «        d„ | D ¦   «         ¦  «        S | S )z0Convert tensor and tnp.ndarray to numpy.ndarray.T)Úforcec              3  ó4   K  — | ]}t          |¦  «        V — Œd S rd   )Úto_numpy_helper©rƒ   rq  s     rQ   r…   z"to_numpy_helper.<locals>.<genexpr>;  ó*   è è € ÐAÐA°C�?¨3Ñ/Ô/ÐAÐAÐAÐAÐAÐArP   )r=   r~  Útnprº  rK  r9  rÀ   r½  Únumpyr  rî   r4  rˆ  s    rQ   rK  rK  2  s¡   € åˆu�~„~ð ØˆÝ�%�œÑ%Ô%ð Ý˜uœ|Ñ,Ô,Ð,Ý	�E�5œ<Ñ	(Ô	(ð Ø�{Š{ ˆ{Ñ&Ô&Ð&Ý	�E�E¥4˜=Ñ	)Ô	)ð Ø�t�E‰{Œ{ÐAÐA¸5ÐAÑAÔAÑAÔAÐAàˆrP   c                ó2  — t           €J ‚t          | t           j        ¦  «        rt          j        | ¦  «        S t          | t
          j        ¦  «        r| j        S t          | t          t          f¦  «        r" t          | ¦  «        d„ | D ¦   «         ¦  «        S | S )zeConvert tnp.ndarray to tensor, leave other types intact. If a list/tuple, loop through it to convert.Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S rd   )Únumpy_to_tensorrL  s     rQ   r…   z"numpy_to_tensor.<locals>.<genexpr>H  rM  rP   )
rŒ  r~  rº  rÀ   rd  rN  r9  r  rî   r4  rˆ  s    rQ   rR  rR  @  s‹   € åˆ>ˆ>ˆ>Ý�%�œÑ$Ô$ð &ÝŒ˜uÑ%Ô%Ð%Ý�%�œÑ%Ô%ð ØŒ|ÐÝ	�E�E¥4˜=Ñ	)Ô	)ð Ø�t�E‰{Œ{ÐAÐA¸5ÐAÑAÔAÑAÔAÐAàˆrP   c                  ó"   — e Zd Zd„ Zdd„Zd„ ZdS )Únumpy_to_tensor_wrapperc                ó<   — || _         d| j         j        z   | _        d S ©NÚwrapped_©rD  rJ   )rù   rD  s     rQ   rú   z numpy_to_tensor_wrapper.__init__N  s   € ØˆŒØ" T¤V¤_Ñ4ˆŒˆˆrP   rz   r{   c                ó"   — d| j         j        › d�S )Nz<Wrapped function <original ú>>rX  rþ   s    rQ   Ú__repr__z numpy_to_tensor_wrapper.__repr__R  s   € ØA¨d¬f¬oÐAÐAÐAÐArP   c                ó:   —  | j         |i |¤Ž}t          |¦  «        S rd   )rD  rR  ©rù   rX  rY  r¦   s       rQ   rÛ  z numpy_to_tensor_wrapper.__call__U  s&   € ØˆdŒf�dÐ%˜fÐ%Ð%ˆÝ˜sÑ#Ô#Ð#rP   N©rz   r{   )rJ   rK   rL   rú   r[  rÛ  r;   rP   rQ   rT  rT  M  sJ   € € € € € ð5ð 5ð 5ðBð Bð Bð Bð$ð $ð $ð $ð $rP   rT  c                ó  — t          | t          j        ¦  «        rt          | |¦  «        }t	          |¦  «        S t          | t
          j        ¦  «        r1t          t          j        | ¦  «        |¦  «        }t	          |¦  «        S d S rd   )r~  rN  rº  rN  rR  rÀ   r½  )rq  r[   r¦   s      rQ   Únumpy_attr_wrapperr`  Z  sx   € Ý�#•s”{Ñ#Ô#ð $Ý�c˜4Ñ Ô ˆÝ˜sÑ#Ô#Ð#Ý	�C�œÑ	&Ô	&ð $Ý•c”k #Ñ&Ô&¨Ñ-Ô-ˆÝ˜sÑ#Ô#Ð#ð$ð $rP   c                  ó(   — e Zd ZdZd	d„Zd
d„Zd„ ZdS )Únumpy_method_wrapperzgConvert obj from torch.Tensor to tnp.ndarray and call method. Then convert result back to torch.Tensor.Úmethodr{   c                ó2   — || _         d| j         z   | _        d S rV  )rc  rJ   )rù   rc  s     rQ   rú   znumpy_method_wrapper.__init__f  s   € ØˆŒØ" T¤[Ñ0ˆŒˆˆrP   rz   c                ó   — d| j         › d�S )Nz<Wrapped method <original rZ  )rc  rþ   s    rQ   r[  znumpy_method_wrapper.__repr__j  s   € Ø;¨D¬KÐ;Ð;Ð;Ð;rP   c                óÖ   — |d         }t          |t          j        ¦  «        rt          j        |¦  «        }t          || j        ¦  «        } ||dd …         i |¤Ž}t          |¦  «        S ©Nr   r8   )r~  rÀ   r½  rN  rº  rN  rc  rR  )rù   rX  rY  rq  Úmethod_callabler¦   s         rQ   rÛ  znumpy_method_wrapper.__call__m  si   € Ø�1ŒgˆÝ�c�5œ<Ñ(Ô(ð 	#Ý”+˜cÑ"Ô"ˆCÝ! # t¤{Ñ3Ô3ˆØˆo˜t A B BœxÐ2¨6Ð2Ð2ˆÝ˜sÑ#Ô#Ð#rP   N)rc  r{   r^  ©rJ   rK   rL   rp  rú   r[  rÛ  r;   rP   rQ   rb  rb  c  sQ   € € € € € ØqÐqð1ð 1ð 1ð 1ð<ð <ð <ð <ð$ð $ð $ð $ð $rP   rb  c                  ó(   — e Zd ZdZd
d„Zdd„Zd„ Zd	S )Únumpy_operator_wrapperzQImplements dunder methods for tnp.ndarray via functions from the operator libraryrK  úCallable[..., Any]c                ó2   — || _         d|j        › �| _        d S rV  )rK  rJ   )rù   rK  s     rQ   rú   znumpy_operator_wrapper.__init__y  s   € ØˆŒØ0 2¤;Ð0Ð0ˆŒˆˆrP   rz   r{   c                ó   — d| j         › d�S )Nz<Wrapped operator <original rZ  )rJ   rþ   s    rQ   r[  znumpy_operator_wrapper.__repr__}  s   € Ø?¨d¬mÐ?Ð?Ð?Ð?rP   c                óT   — |rJ ‚d„ |D ¦   «         } | j         |Ž }t          |¦  «        S )Nc              3  óv   K  — | ]4}t          |t          j        ¦  «        rt          j        |¦  «        n|V — Œ5d S rd   )r~  rÀ   r½  rN  rº  rÓ  s     rQ   r…   z2numpy_operator_wrapper.__call__.<locals>.<genexpr>ƒ  sS   è è € ð 
ð 
ØKN¥
¨3µ´Ñ =Ô =ÐF�CŒK˜ÑÔÐÀ3ð
ð 
ð 
ð 
ð 
ð 
rP   )rK  rR  r]  s       rQ   rÛ  znumpy_operator_wrapper.__call__€  sH   € ØÐÐˆzð
ð 
ØRVð
ñ 
ô 
ˆð ˆdŒg�tˆnˆÝ˜sÑ#Ô#Ð#rP   N)rK  rl  r^  ri  r;   rP   rQ   rk  rk  v  sU   € € € € € Ø[Ð[ð1ð 1ð 1ð 1ð@ð @ð @ð @ð$ð $ð $ð $ð $rP   rk  c                ó"  — t          | t          ¦  «        s| S | j        �rg }|                      ¦   «         D ]n}t          |t          j        ¦  «        r=|                     |j        j         	                    |j        j
        ¦  «        ¦  «         ŒY|                     |¦  «         Œog }|                      ¦   «         D ]n}t          |t          j        ¦  «        r=|                     |j        j         	                    |j        j
        ¦  «        ¦  «         ŒY|                     |¦  «         Œon(|                      ¦   «         }|                      ¦   «         }t	          j        ||| j        | j        | j        ¬¦  «        }|                     ¦   «          |S )N)rì  rú  ræ  )r~  r<   Ú_has_symbolic_sizes_stridesr  rÀ   ÚSymIntrÄ   rÝ  rÙ  Ú	size_hintÚexprrø  Úempty_stridedrì  rú  ræ  Úzero_)rÞ   r  rÈ  rø  ré  s        rQ   Údefakerx  Š  se  € Ý�a�Ñ$Ô$ð Øˆð 	Ô$ñ ØˆØ—’‘”ð 	ð 	ˆAÝ˜!�Uœ\Ñ*Ô*ð Ø—’˜AœFÔ,×6Ò6°q´v´{ÑCÔCÑDÔDÐDÐDà—’˜A‘”��ØˆØ—’‘”ð 	!ð 	!ˆAÝ˜!�Uœ\Ñ*Ô*ð !Ø—’˜aœfÔ.×8Ò8¸¼¼ÑEÔEÑFÔFÐFÐFà—’˜aÑ Ô Ð Ð ð		!ð �vŠv‰xŒxˆØ—’‘”ˆÝÔØØØŒgØŒxØ”oð	ñ 	ô 	€Að ‡G‚G�I„I€IØ€HrP   c                ó0   — dd l }| |j        j        j        u S r�   )Útorch.utils.checkpointrq  Ú
checkpoint)rq  rÀ   s     rQ   Úis_utils_checkpointr|  ª  s!   € à!Ð!Ð!Ð!à�%”+Ô(Ô3Ð3Ð3rP   c                ó   — ddl m} | |u S )Nr   )Úinvoke_subgraph_placeholder)Ú'torch._higher_order_ops.invoke_subgraphr~  )rq  r~  s     rQ   Úis_invoke_subgraphr€  ±  s    € ØSÐSÐSÐSÐSÐSàÐ-Ð-Ð-rP   c                 óH   — ddl m}  |j        t          j        j        fi | ¤ŽS )Nr8   ©Ú TorchHigherOrderOperatorVariable)Úvariables.higher_order_opsrƒ  ÚmakerÀ   Ú_higher_order_opsÚinvoke_subgraph)Úoptionsrƒ  s     rQ   Úbuild_invoke_subgraph_variabler‰  ·  sB   € ØLÐLÐLÐLÐLÐLà0Ð+Ô0ÝÔÔ/ðð à
ðð ð rP   c                 ó„   — dd l mc m} ddlm} |j        }t          j        j        j	        r|j
        } |j        |fi | ¤ŽS )Nr   r8   r‚  )Útorch._higher_order_ops.wrapr†  Úwrapr„  rƒ  Útag_activation_checkpointrÀ   Ú
_functorchr9   Úfunctionalize_rng_opsÚwrap_activation_checkpointr…  )rˆ  Úhigher_order_opsrƒ  Úactivation_checkpoint_ops       rQ   Úbuild_checkpoint_variabler“  À  s�   € Ø;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;àLÐLÐLÐLÐLÐLð
 	Ô2ð õ ÔÔÔ4ð OØ#3Ô#NÐ à0Ð+Ô0Ø ðð à
ðð ð rP   c                óf   — ddl m}  |¦   «         }| dk    rn| dk    r|rt          ¦   «         }nd}|S )Nr8   )Úis_dynamo_supportedr[  rz  F)Ú
eval_framer•  r2   )Údevice_typer•  Úcompile_supporteds      rQ   Úis_compile_supportedr™  Ó  s[   € Ø/Ð/Ð/Ð/Ð/Ð/à+Ð+Ñ-Ô-ÐØ�eÒÐØØ	˜Ò	Ð	Ð#4Ð	Ý&™LœLÐÐà!ÐØÐrP   Úoffsetc                ó„   — |                       d¦  «        }t          |d|…                              dd¬¦  «        ¦  «        S )zê
    Convert byte offset `offset` of `str` into character offset.
    Byte offset is used for 3.11+ instruction column data.
    Takes things like unicode characters into consideration.

    Unchanged from CPython implementation.
    zutf-8Nr
  )Úerrors)Úencoder  Údecode)r{   rš  Úas_utf8s      rQ   Ú_fix_offsetr   ä  s?   € ð �jŠj˜Ñ!Ô!€GÝˆw�w˜�wÔ×&Ò& w°yÐ&ÑAÔAÑBÔBÐBrP   c                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   dS )Ú_AnchorsrW   Úleft_end_linenoÚleft_end_offsetÚright_start_linenoÚright_start_offsetNr\  r;   rP   rQ   r¢  r¢  ð  sD   € € € € € € ð ÐÐÑØÐÐÑØÐÐÑàÐÐÑÐÐrP   r¢  ÚsegmentúOptional[_Anchors]c                óú  ‡‡— t           j        dk    sJ ‚ddl}	 |                     d| z   dz   ¦  «        }n# t          $ r Y dS w xY wt          |j        ¦  «        dk    rdS |                      d¦  «        Šˆfd„}ˆfd	„Šˆˆfd
„}ˆˆfd„}|j        d         }t          ||j	        ¦  «        �rÌ|j
        }t          ||j        ¦  «        �rt          t          |j        j        ¦  «        dz
  } |||j        j        ¦  «        }	 ‰||	¦  «        \  }}	‰|         |	         x}
                     ¦   «         s|
dv rI|
dv r |||	¦  «        \  }}	n |||	¦  «        \  }}	‰|         |	         x}
                     ¦   «         °E|
dv °I|	dz   }|t          ‰|         ¦  «        k     r+‰|         |         x}
                     ¦   «         s	|
dvr|dz  }t%          ||	||¦  «        S t          ||j        ¦  «        rºt          t          |j
        j        ¦  «        dz
  } |||j
        j        ¦  «        } ‰||¦  «        \  }}‰|         |         dk    r! |||¦  «        \  }}‰|         |         dk    °!t          t          |j        ¦  «        dz
  } |||j        ¦  «        }t%          ||||¦  «        S t          ||j        ¦  «        rºt          t          |j        j        ¦  «        dz
  } |||j        j        ¦  «        } ‰||¦  «        \  }}‰|         |         dk    r! |||¦  «        \  }}‰|         |         dk    °!t          t          |j        ¦  «        dz
  } |||j        ¦  «        }t%          ||||¦  «        S dS )a  
    Given source code `segment` corresponding to a bytecode
    instruction, determine:
        - for binary ops, the location of the binary op
        - for indexing, the location of the brackets.
    `segment` is expected to be a valid Python expression
    )rI   é   r   Nz(
z
)r8   r~   c                ó0   •— t          ‰|          |¦  «        S rd   )r   )Úlinenorš  Úliness     €rQ   Ú	normalizez-_extract_anchors_from_expr.<locals>.normalize  s   ø€ Ý˜5 œ=¨&Ñ1Ô1Ð1rP   c                ó&  •— | t          ‰¦  «        k     rL|t          ‰|          ¦  «        k    r3d}| dz  } | t          ‰¦  «        k     r|t          ‰|          ¦  «        k    °3| t          ‰¦  «        k     r|t          ‰|          ¦  «        k     sJ ‚| |fS rg  ©r  )r¬  Úcolr­  s     €rQ   Únext_valid_charz3_extract_anchors_from_expr.<locals>.next_valid_char  sš   ø€ Ø•s˜5‘z”zÒ!Ð! c­S°°v´Ñ-?Ô-?Ò&?Ð&?ØˆCØ�a‰KˆFð •s˜5‘z”zÒ!Ð! c­S°°v´Ñ-?Ô-?Ò&?Ð&?ð �˜E™
œ
Ò"Ð" s­S°°v´Ñ-?Ô-?Ò'?Ð'?Ð'?Ð?Ø�sˆ{ÐrP   c                ó�   •— |dz  } ‰| |¦  «        \  } }| t          ‰¦  «        k     r|t          ‰|          ¦  «        k     sJ ‚| |fS rŒ   r°  ©r¬  r±  r­  r²  s     €€rQ   rÇ   z-_extract_anchors_from_expr.<locals>.increment!  sX   ø€ Øˆq‰ˆØ%�o f¨cÑ2Ô2‰ˆ�Ø�˜E™
œ
Ò"Ð" s­S°°v´Ñ-?Ô-?Ò'?Ð'?Ð'?Ð?Ø�sˆ{ÐrP   c                ó”   •— d}| dz  }  ‰| |¦  «        \  } }| t          ‰¦  «        k     r|t          ‰|          ¦  «        k     sJ ‚| |fS rg  r°  r´  s     €€rQ   Únextlinez,_extract_anchors_from_expr.<locals>.nextline(  s]   ø€ ØˆØ�!‰ˆØ%�o f¨cÑ2Ô2‰ˆ�Ø�˜E™
œ
Ò"Ð" s­S°°v´Ñ-?Ô-?Ò'?Ð'?Ð'?Ð?Ø�sˆ{ÐrP   rH   z)\#z\#r   r  )rƒ  r„  ÚastÚparseÚSyntaxErrorr  Úbodyro  r~  ÚExprr¨   ÚBinOpr
   rW   ÚleftÚ
end_linenoÚend_col_offsetÚisspacer¢  Ú	SubscriptÚCallr²  )r§  r·  Útreer®  rÇ   r¶  Ú	statementru  Ú
cur_linenoÚcur_colÚchÚ	right_colÚleft_linenoÚleft_colÚright_linenor­  r²  s                  @@rQ   Ú_extract_anchors_from_exprrÌ  ú  sH  øø€ õ Ô˜wÒ&Ð&Ð&Ð&à€J€J€Jðð �yŠy˜ ™¨5Ñ0Ñ1Ô1ˆˆøÝð ð ð Øˆtˆtðøøøõ ˆ4Œ9�~„~˜ÒÐØˆtà�MŠM˜$ÑÔ€Eð2ð 2ð 2ð 2ð 2ð
ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð ”	˜!”€IÝ�)˜SœXÑ&Ô&ñ >LØŒˆÝ�d˜CœIÑ&Ô&ñ <	Lõ �c 4¤9Ô#7Ñ8Ô8¸1Ñ<ˆJØ�i 
¨D¬IÔ,DÑEÔEˆGØ"1 /°*¸gÑ"FÔ"FÑˆJ˜ð ˜zÔ*¨7Ô3Ð3�2×<Ò<Ñ>Ô>ð IÀ"ÈÀ,À,Ø˜�;�;Ø*2¨(°:¸wÑ*GÔ*GÑ'�J  à*3¨)°JÀÑ*HÔ*HÑ'�J ð	 ˜zÔ*¨7Ô3Ð3�2×<Ò<Ñ>Ô>ð IÀ"ÈÀ,À,ð   !™ˆIà�C  jÔ 1Ñ2Ô2Ò2Ð2Ø$ ZÔ0°Ô;Ð;˜×DÒDÑFÔFð 3à˜e�O�Oà˜Q‘�	õ ˜J¨°¸YÑGÔGÐGÝ˜˜cœmÑ,Ô,ð 	Lõ �s D¤JÔ$9Ñ:Ô:¸QÑ>ˆKØ �y ¨d¬jÔ.GÑHÔHˆHØ$3 O°KÀÑ$JÔ$JÑ!ˆK˜Ø˜Ô$ XÔ.°#Ò5Ð5Ø(1¨	°+¸xÑ(HÔ(HÑ%�˜Xð ˜Ô$ XÔ.°#Ò5Ð5õ  ¥ T¤_Ñ5Ô5¸Ñ9ˆLØ!˜	 ,°Ô0CÑDÔDˆIÝ˜K¨°<ÀÑKÔKÐKÝ˜˜cœhÑ'Ô'ð 	Lõ
 �s D¤IÔ$8Ñ9Ô9¸AÑ=ˆKØ �y ¨d¬iÔ.FÑGÔGˆHØ$3 O°KÀÑ$JÔ$JÑ!ˆK˜Ø˜Ô$ XÔ.°#Ò5Ð5Ø(1¨	°+¸xÑ(HÔ(HÑ%�˜Xð ˜Ô$ XÔ.°#Ò5Ð5õ  ¥ T¤_Ñ5Ô5¸Ñ9ˆLØ!˜	 ,°Ô0CÑDÔDˆIÝ˜K¨°<ÀÑKÔKÐKàˆ4s   š6 ¶
AÁAr7  útypes.CodeTypeÚinstúdis.Instructionc                óZ  ‡ — t           j        dk    �rft          j        ‰ j        |j        j        ‰ j        |j        j        |j        j	        |j        j
        ¬¦  «        }t          j        |g¦  «        d         }d                     |                     ¦   «         dd…         ¦  «        }ˆ fd„t          |j        j        |j        j        dz   ¦  «        D ¦   «         }t          j        d                     |¦  «        ¦  «                             ¦   «         }t#          |d         ¦  «        t#          |d         ¦  «        z
  }|d         d|…         }t          j        t          j        |¦  «        |¦  «        }|S |j        €J ‚|j        j        €dS t'          j        ‰ j        |j        j        ¦  «                             ¦   «         }|j        j        €|S |j        j	        �|j        j
        €|S t-          ||j        j	        ¦  «        }	d}
d}g }|j        j        |j        j        k    rGt-          ||j        j
        ¦  «        }
||	|
…         }|                     d	|	z  d
|
|	z
  z  z   ¦  «         �n§||	d…         dz   }|                     d	|	z  d
t#          |¦  «        |	z
  z  z   ¦  «         t'          j        ‰ j        |j        j        ¦  «                             ¦   «         }t-          ||j        j
        ¦  «        }
t          |j        j        dz   |j        j        ¦  «        D ]•}t'          j        ‰ j        |¦  «                             ¦   «         }||dz   z  }t#          |¦  «        t#          |                     ¦   «         ¦  «        z
  }|                     d	|z  d
t#          |¦  «        |z
  z  z   ¦  «         Œ–||d|
…         z  }t#          |¦  «        t#          |                     ¦   «         ¦  «        z
  }|                     d	|z  d
|
|z
  z  z   ¦  «         d}	 t3          |¦  «        }n# t4          $ r Y nw xY w|€d„ |D ¦   «         }nõd„ |D ¦   «         }|j        dk    r|xj        |	z  c_        |j        dk    r|xj        |	z  c_        t          t#          |¦  «        ¦  «        D ]Š}t          t#          ||         ¦  «        ¦  «        D ]e}||j        k     rŒ||j        k    r||j        k     rŒ%||j        k    r||j        k    rŒ<||j        k    rŒH||         |         d
k    rd||         |<   ŒfŒ‹d„ |D ¦   «         }d}t          t#          |¦  «        ¦  «        D ]O}|t'          j        ‰ j        |j        j        |z   ¦  «                             ¦   «         dz   z  }|||         dz   z  }ŒP|S )aÈ  
    Python 3.11+ only. Returns lines of source code (from code object `code`)
    corresponding to `inst`'s location data, and underlines relevant code to `inst`.

    Example: CALL on `g`:
    f(g(
      ^^
        h(x)))
        ^^^^^

    We need our own implementation in < 3.13 since `format_frame_summary` in
    Python's `traceback` module doesn't handle multi-line expressions
    (and their anchor extraction code is not completely correct).
    )rI   é   )r¾  ÚcolnoÚ	end_colnor   r~   r8   Nc                óh   •— g | ].}t          j        ‰j        |¦  «                             ¦   «         ‘Œ/S r;   )Ú	linecacheÚgetlinerï  Úrstrip)rƒ   r¬  r7  s     €rQ   rè   z.get_instruction_source_311.<locals>.<listcomp>�  sE   ø€ ð 
ð 
ð 
àõ Ô˜dÔ.°Ñ7Ô7×>Ò>Ñ@Ô@ð
ð 
ð 
rP   rh  r¡   ú~c                ó:   — g | ]}|                      d d¦  «        ‘ŒS )rØ  ú^)r
  ©rƒ   Úmarkers     rQ   rè   z.get_instruction_source_311.<locals>.<listcomp>Î  s&   € ÐBÐBÐB°�6—>’> # sÑ+Ô+ÐBÐBÐBrP   c                ó,   — g | ]}t          |¦  «        ‘ŒS r;   ©rî   rÛ  s     rQ   rè   z.get_instruction_source_311.<locals>.<listcomp>Ñ  s   € Ð+OÐ+OÐ+O¸V­D°©L¬LÐ+OÐ+OÐ+OrP   rÚ  c                ó8   — g | ]}d                       |¦  «        ‘ŒS )rh  r  rÛ  s     rQ   rè   z.get_instruction_source_311.<locals>.<listcomp>ë  s"   € ÐAÐAÐA v�2—7’7˜6‘?”?ÐAÐAÐArP   )rƒ  r„  râ  ÚFrameSummaryrï  Ú	positionsr¬  r3  r¾  Ú
col_offsetr¿  rã  r�   Ú
splitlinesr  ÚtextwrapÚdedentr  ÚindentrÕ  rÖ  r×  r   rÄ   ÚlstriprÌ  rÓ  r£  r¤  r¥  r¦  )r7  rÎ  Úframe_summaryr  Ú
orig_linesÚorig_lines_dedentÚ
indent_lenræ  Ú
first_lineÚstart_offsetÚ
end_offsetr§  ÚmarkersÚ	last_liner¬  ÚlineÚ
num_spacesÚanchorsÚmutable_markersr±  rÆ  s   `                    rQ   Úget_instruction_source_311rõ  s  sã  ø€ õ Ô˜7Ò"Ñ"å!Ô.ØÔØŒNÔ!ØŒLØ”~Ô0Ø”.Ô+Ø”nÔ3ð
ñ 
ô 
ˆõ Ô&¨ Ñ7Ô7¸Ô:ˆà—’˜6×,Ò,Ñ.Ô.¨q¨r¨rÔ2Ñ3Ô3ˆð
ð 
ð 
ð 
å ¤Ô 5°t´~Ô7PÐSTÑ7TÑUÔUð
ñ 
ô 
ˆ
õ %œO¨D¯IªI°jÑ,AÔ,AÑBÔB×MÒMÑOÔOÐÝ˜ AœÑ'Ô'­#Ð.?ÀÔ.BÑ*CÔ*CÑCˆ
Ø˜A”˜{ 
˜{Ô+ˆÝ”¥¤°Ñ!8Ô!8¸&ÑAÔAˆØˆàŒ>Ð%Ð%Ð%Ø„~ÔÐ$Øˆrõ Ô" 4Ô#3°T´^Ô5JÑKÔK×RÒRÑTÔT€JØ„~Ô Ð(ØÐØ„~Ô Ð(¨D¬NÔ,IÐ,QØÐõ ˜z¨4¬>Ô+DÑEÔE€Lð €Jà€Gà€Gð „~Ô  D¤NÔ$9Ò9Ð9Ý  ¨T¬^Ô-JÑKÔKˆ
Ø˜\¨*Ð4Ô5ˆØ�Š�s˜\Ñ)¨C°:ÀÑ3LÑ,MÑMÑNÔNÐNÑNà˜\˜]˜]Ô+¨dÑ2ˆØ�Š�s˜\Ñ)¨Cµ3°z±?´?À\Ñ3QÑ,RÑRÑSÔSÐSÝÔ%ØÔ˜dœnÔ7ñ
ô 
ç
Š&‰(Œ(ð 	õ ! ¨D¬NÔ,IÑJÔJˆ
Ý˜DœNÔ1°AÑ5°t´~Ô7PÑQÔQð 	Nð 	NˆFÝÔ$ TÔ%5°vÑ>Ô>×EÒEÑGÔGˆDØ�t˜d‘{Ñ"ˆGå˜T™œ¥S¨¯ª©¬Ñ%7Ô%7Ñ7ˆJØ�NŠN˜3 Ñ+¨cµS¸±Y´YÀÑ5KÑ.LÑLÑMÔMÐMÐMØ�9˜[˜j˜[Ô)Ñ)ˆÝ˜‘^”^¥c¨)×*:Ò*:Ñ*<Ô*<Ñ&=Ô&=Ñ=ˆ
Ø�Š�s˜ZÑ'¨#°¸jÑ1HÑ*IÑIÑJÔJÐJà"&€GðÝ,¨WÑ5Ô5ˆˆøÝð ð ð Øˆðøøøð €ØBÐB¸'ÐBÑBÔBˆˆð ,PÐ+OÀwÐ+OÑ+OÔ+Oˆð Ô" aÒ'Ð'ØÐ#Ô# |Ñ3Ð#Ô#ØÔ%¨Ò*Ð*ØÐ&Ô&¨,Ñ6Ð&Ô&õ �C ™LœLÑ)Ô)ð 	7ð 	7ˆFÝ�S °Ô!8Ñ9Ô9Ñ:Ô:ð 7ð 7�Ø˜GÔ3Ò3Ð3ØØ˜WÔ4Ò4Ð4¸¸wÔ?VÒ9VÐ9VØà˜gÔ8Ò8Ð8Ø˜wÔ9Ò9Ð9àØ˜GÔ6Ò6Ð6ØØ" 6Ô*¨3Ô/°3Ò6Ð6Ø36�O FÔ+¨CÑ0øð7ð  BÐA°ÐAÑAÔAˆà€FÝ•3�w‘<”<Ñ Ô ð $ð $ˆØÝÔ˜dÔ.°´Ô0EÈÑ0IÑJÔJ×QÒQÑSÔSØññ	
ˆð 	�'˜!”*˜tÑ#Ñ#ˆˆØ€Ms   ÐP) Ð)
P6Ð5P6c                ó\   — t          | t          j        ¦  «        rt          | dd ¦  «        S d S )NÚ_dynamo_static_input_type)r~  rÀ   r½  rN  r:  s    rQ   Úget_static_address_typerø  ÷  s.   € Ý�!•U”\Ñ"Ô"ð =Ý�qÐ5°tÑ<Ô<Ð<àˆ4rP   c                ó  — t           j        j        j        t           j        j        t           j        t           j        j        f}t           j        j        j        t           j        j        t           j        t           j        j        f}| g |¢|¢R v S rd   )	rÀ   r!  r   Ú	get_stateÚdefault_generatorr&  rz  Ú	set_stater(  )r¨   ÚgettersÚsetterss      rQ   Úis_rng_state_getter_or_setterrÿ  þ  ss   € õ 	ŒÔÔ$ÝÔÔ)ÝÔÝŒ
Ô ð€Gõ 	ŒÔÔ$ÝÔÔ)ÝÔÝŒ
Ô ð	€Gð Ð(�gÐ( Ð(Ð(Ð(Ð(rP   c                ó†   — t          | t          j        ¦  «        o'| j        dk    o| j        j        t          j        j        u S )NÚ__get__)	r~  r©  r   rJ   Ú__self__Ú__objclass__rÀ   r!  Ú_TensorBaserˆ  s    rQ   Úis_tensor_base_attr_getterr    s?   € å�5�%Ô1Ñ2Ô2ð 	@ØŒN˜iÒ'ð	@àŒNÔ'­5¬8Ô+?Ð?ðrP   c                ó"   — t          | d¦  «        S )NÚ__torch_function__)r”  rˆ  s    rQ   Úis_torch_function_objectr    s   € Ý�5Ð.Ñ/Ô/Ð/rP   rá  ú,torch._dynamo.variables.base.VariableTrackerc                ó  — ddl m} ddlm} |                      ¦   «         s2t          | d¦  «        rYt          |                      ¦   «         d¦  «        r7t          | |¦  «        rdS t          | |¦  «        ot          | j        d¦  «        S dS )Nr   )ÚUserDefinedObjectVariable)ÚTensorWithTFOverrideVariableÚ
peek_valuer  TF)	Útorch._dynamo.variablesr  Ú&torch._dynamo.variables.torch_functionr  Úis_realizedr”  r  r~  r¨   )rá  r  r  s      rQ   Úhas_torch_functionr    s´   € ØAÐAÐAÐAÐAÐAØSÐSÐSÐSÐSÐSð 
‡~‚~ÑÔð 
Ý��LÑ!Ô!ð
Ý&-¨b¯mªm©o¬oÐ?SÑ&TÔ&Tð
õ �bÐ6Ñ7Ô7ð 	Ø�4å˜"Ð7Ñ8Ô8ð 
½WØŒHÐ*ñ>
ô >
ð 	
ð ˆ5rP   c                óÀ   — d }d }t           j        j                             ¦   «         x}r| |j        v r|j        |          }|j        }|                     | d||¬¦  «        S )NF)Ústatic_shapesÚsymbolic_contextr  )rÀ   rv  r(   Útry_getÚtensor_to_contextr  Úfrom_tensor)rJ  rØ  r  r  Útracing_contexts        rQ   Úto_fake_tensorr  5  sv   € ØÐØ€FÝœ-Ô6×>Ò>Ñ@Ô@Ð@€ð 4Ø�Ô1Ð1Ð1Ø.Ô@ÀÔCÐØ%Ô3ˆFà× Ò Ø	˜Ð1AÈ&ð !ñ ô ð rP   c                óÂ   — t          | ¦  «         oOt          | ¦  «         o?t          | ¦  «        o0t          | d¦  «        o t          | j        d¦  «        o| j        j        S )NÚ__dataclass_params__Úfrozen)rü  rû  r   r”  r  r  rˆ  s    rQ   Úis_frozen_dataclassr  C  st   € å# EÑ*Ô*Ð*ð 	.Ý& uÑ-Ô-Ð-ð	.å˜ÑÔð	.õ �EÐ1Ñ2Ô2ð	.õ �EÔ.°Ñ9Ô9ð		.ð
 Ô&Ô-ðrP   c                óx   — |D ]$}t          | |¦  «        rt          | |¦  «        c S Œ%t          | › d|› �¦  «        ‚)zX
    Return the first available attribute or throw an exception if none is present.
    z% does not has any of the attributes: )r”  rN  rÓ  )rq  ÚattrsÚattrs      rQ   Úget_first_attrr!  N  s^   € ð ð &ð &ˆÝ�3˜ÑÔð 	&Ý˜3 Ñ%Ô%Ð%Ð%Ð%ð	&õ ˜CÐMÐMÀeÐMÐMÑ
NÔ
NÐNrP   c              #  ó¬   ‡‡K  — | sd V — d S ˆˆfd„}t           j        j                             |¦  «        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S )Nc                ó:   •— d„ }t          j        | |‰‰¬¦  «        S )Nc                ó–   — t           j        j        j        d         dxx         dz  cc<   t           j                             | |¦  «        S )NÚcompiled_autogradÚcompilesr8   )rÀ   r´  rq  r@   rE  Úcompile)Úgm_Úexample_inputs_s     rQ   Úinner_compilerzKmaybe_enable_compiled_autograd.<locals>.compiler_fn.<locals>.inner_compiler`  sE   € Ý”Ô#Ô,Ð-@ÔAÀ*ÐMÐMÔMÐQRÑRÐMÐMÑMÝ”×.Ò.¨s°OÑDÔDÐDrP   )r  Ú	fullgraphÚdynamic)rÀ   r'  )ro  r*  r,  r+  s     €€rQ   Úcompiler_fnz3maybe_enable_compiled_autograd.<locals>.compiler_fn_  s9   ø€ ðEð Eð Eõ ”=Ø˜N°iÈðñ ô ð rP   )rÀ   r´  r%  Ú_enable)Úshould_enabler+  r,  r-  rÅ  s    ``  rQ   Úmaybe_enable_compiled_autogradr0  Y  sÀ   øøè è € àð Øˆˆˆˆˆð	ð 	ð 	ð 	ð 	ð 	õ Œ]Ô,×4Ò4°[ÑAÔAð 	ÀSØˆIˆIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ·A	Á	AÁAc                 óV   —  G d„ dt           ¦  «        } t           | ¦   «         ¦  «        S )Nc                  ó   — e Zd ZdS )ú*invalid_removeable_handle.<locals>.InvalidN)rJ   rK   rL   r;   rP   rQ   ÚInvalidr3  n  s   € € € € € ØˆrP   r4  )r  r4   )r4  s    rQ   Úinvalid_removeable_handler5  l  sB   € ðð ð ð ð •$ñ ô ð õ ˜7˜7™9œ9Ñ%Ô%Ð%rP   c                óà   — t          | t          j        j        ¦  «        s| S t          | t          j        j        ¦  «        r| S | j                             | j        ¦  «        }| j        |_        |S rd   )	r~  rÀ   r¾  rµ  r    ÚGraphModuler>  rL  re  )rÅ  Úproxys     rQ   Únn_module_proxyr9  x  s^   € Ý�c�5œ8œ?Ñ+Ô+ð Øˆ
Ý�#•u”xÔ+Ñ,Ô,ð àˆ
ØŒM×!Ò! #¤-Ñ0Ô0€EØ”\€E„NØ€LrP   c                  ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú	GmWrapperc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S rd   )r<  rú   ro  Úunflatten_fn)rù   ro  r=  r>  s      €rQ   rú   zGmWrapper.__init__„  s.   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ(ˆÔÐÐrP   c                óZ   — t          |¦  «        } | j        |                      |¦  «        Ž S rd   )rî   ro  r=  rÚ  s     rQ   r  zGmWrapper.forward‰  s*   € Ý˜t™*œ*ˆØˆtŒw˜×)Ò)¨$Ñ/Ô/Ð0Ð0rP   )rJ   rK   rL   rú   r  r?  r@  s   @rQ   r;  r;  ƒ  sG   ø€ € € € € ð)ð )ð )ð )ð )ð
1ð 1ð 1ð 1ð 1ð 1ð 1rP   r;  ro  útorch.fx.GraphModulec                ó  ‡‡‡	‡
— d„ t          | j        j        ¦  «        D ¦   «         Š
t          j        j        j        rg‰
dgk    sJ ‚t          |d         t          ¦  «        sJ ‚t          |d         ¦  «        Šd„ Š	ˆfd„} |t          | |¦  «         ‰	|¦  «        ¦  «        Šn]t          j        |¦  «        \  }}t          j        t          j        |¬¦  «        } |t          | |¦  «        |¦  «        Št          j        Š	ˆˆ	ˆ
fd„}|S )z—
    Mutate inputs so that they are flat and wrap gm such that it
    accepts those inputs.  This is needed for graphs that take
    bumpy inputs.
    c                ód   — g | ]-\  }}|j         d k    ¯|j                             dd¦  «        ¯+|‘Œ.S )rÐ  Ú	steal_argF)rK  r×  rh   )rƒ   rÆ  rÝ  s      rQ   rè   z(flatten_graph_inputs.<locals>.<listcomp>”  sH   € ð ð ð áˆAˆtØŒ7�mÒ#Ð#¨¬	¯ª°kÀ5Ñ(IÔ(IÐ#ð 	
à#Ð#Ð#rP   r   c                óB   — | d         t          | dd …         ¦  «        z   S rg  rÞ  rÈ  s    rQ   Ú
flatten_fnz(flatten_graph_inputs.<locals>.flatten_fn¡  s   € Ø˜”7�T $ q r r¤(™^œ^Ñ+Ð+rP   c                ó0   •— | d ‰…         g| ‰d …         ¢R S rd   r;   )Ú	flat_argsÚboxed_inputs_counts    €rQ   r=  z*flatten_graph_inputs.<locals>.unflatten_fn¤  s,   ø€ ØÐ1Ð1Ð1Ô2ÐT°YÐ?QÐ?RÐ?RÔ5SÐTÐTÐTrP   )Útreespecc                 ón   •—  ‰| ¦  «        }‰D ]}| |                               ¦   «          Œ ‰|¦  «        S rd   )re   )rX  rF  rÆ  Úcompiled_fnrD  Úinputs_idx_to_clears      €€€rQ   Úwrapperz%flatten_graph_inputs.<locals>.wrapper°  sH   ø€ Ø�J˜tÑ$Ô$ˆ	ð %ð 	ð 	ˆAØ�ŒG�MŠM‰OŒOˆOˆOð ˆ{˜9Ñ%Ô%Ð%rP   )Ú	enumerater  rJ  rÀ   r´  r%  Úin_compiled_autograd_regionr~  rî   r  r;  r¾  Útree_flattenr�  rÀ  Útree_unflattenÚarg_tree_leaves)ro  ÚinputsÚ
compile_gmr=  Úflat_inputsÚspecrL  rG  rJ  rD  rK  s          @@@@rQ   Úflatten_graph_inputsrV  Ž  sT  øøøø€ ðð å  ¤¤Ñ0Ô0ðñ ô Ðõ „}Ô&ÔBð ,ð # q cÒ)Ð)Ð)Ð)Ý˜& œ)¥TÑ*Ô*Ð*Ð*Ð*Ý  ¨¤™^œ^Ðð	,ð 	,ð 	,ð	Uð 	Uð 	Uð 	Uð 	Uð !�j¥¨2¨|Ñ!<Ô!<¸j¸jÈÑ>PÔ>PÑQÔQˆˆõ #Ô/°Ñ7Ô7Ñˆ�TÝ Ô(­Ô)>ÈÐNÑNÔNˆØ �j¥¨2¨|Ñ!<Ô!<¸kÑJÔJˆåÔ+ˆ
ð&ð &ð &ð &ð &ð &ð &ð €NrP   c                óš   — t          | t          j        j        ¦  «        rt	          | d¦  «        sg S | j                             dg ¦  «        S )Nr×  Úlocals_to_steal)r~  rÀ   r    r7  r”  r×  rh   )Úmaybe_gms    rQ   Úget_locals_to_stealrZ  ½  sH   € Ý�h¥¤Ô 4Ñ5Ô5ð ½WÀXÈvÑ=VÔ=Vð Øˆ	ØŒ=×ÒÐ.°Ñ3Ô3Ð3rP   c                ó   — || j         d<   d S )NrX  )r×  )ro  rX  s     rQ   Úset_locals_to_stealr\  Ã  s   € Ø!0€B„GÐÑÐÐrP   c                  ó   — e Zd Zd„ Zdd„ZdS )ÚLitc                ó   — || _         d S rd   ©rÈ  )rù   rÈ  s     rQ   rú   zLit.__init__È  s   € ØˆŒˆˆrP   rz   r{   c                ó   — | j         S rd   r`  rþ   s    rQ   r[  zLit.__repr__Ë  s	   € ØŒvˆrP   Nr^  )rJ   rK   rL   rú   r[  r;   rP   rQ   r^  r^  Ç  s7   € € € € € ðð ð ðð ð ð ð ð rP   r^  zSet[str]Úwarn_once_cachec                ó‚   — | t           v rd S t                                | ¦  «         t          j        | |dz   ¬¦  «         d S )Nr8   )Ú
stacklevel)rb  r  ÚwarningsÚwarn)r  rd  s     rQ   Ú	warn_oncerg  Ò  sG   € ð �oÐÐØˆÝ×Ò˜ÑÔÐÝ„M�# *¨q¡.Ð1Ñ1Ô1Ð1Ð1Ð1rP   c                óV   — t          j        d¦  «        }|                     d| ¦  «        S )Nz\x1B[@-_][0-?]*[ -/]*[@-~]rh  )rG  r'  r  )ÚtextÚansi_escapes     rQ   Ústrip_color_from_stringrk  Þ  s&   € å”*Ð:Ñ;Ô;€KØ�?Š?˜2˜tÑ$Ô$Ð$rP   c               #  óö   K  — 	 t           j        j                             d¦  «        } d V — t           j        j                             | ¦  «         d S # t           j        j                             | ¦  «         w xY w)NT)rÀ   r!  Ú	_autogradÚ _saved_tensors_hooks_set_tracing)ru  s    rQ   Ú+_disable_saved_tensors_hooks_during_tracingro  ä  sk   è è € ðCÝ”Ô"×CÒCÀDÑIÔIˆØˆˆˆåŒÔ×;Ò;¸EÑBÔBÐBÐBÐBø�ŒÔ×;Ò;¸EÑBÔBÐBÐBøøøs   „(A Á&A8c                 óV   — t           j        j        j        ot          j        ¦   «          S rd   )rÀ   rE  r9   ÚfreezingÚis_grad_enabledr;   rP   rQ   Úis_parameter_freezingrs  î  s!   € ÝŒ?Ô!Ô*ÐJµ5Ô3HÑ3JÔ3JÐ/JÐJrP   c                 óL   — d„ t          t          ¦   «         ¦  «        D ¦   «         S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r;   )Ú get_torch_function_mode_stack_atrƒ  s     rQ   rè   z1get_torch_function_mode_stack.<locals>.<listcomp>ó  s.   € ð ð ð Ø01Õ(¨Ñ+Ô+ðð ð rP   )r  r"   r;   rP   rQ   Úget_torch_function_mode_stackrw  ò  s2   € ðð Ý5:Õ;TÑ;VÔ;VÑ5WÔ5Wðñ ô ð rP   c                ót   — | t          ¦   «         k     r| dk    sJ ‚t          j                             | ¦  «        S r�   )r"   rÀ   r!  Ú_get_function_stack_at)Úinds    rQ   rv  rv  ø  s7   € ØÕ*Ñ,Ô,Ò,Ð,°¸²°°Ð9ÝŒ8×*Ò*¨3Ñ/Ô/Ð/rP   c                ó†   — t          t          ¦   «         ¦  «        D ]}t          ¦   «          Œ| D ]}t          |¦  «         Œd S rd   )r  r"   r#   r$   )r“  rÆ  Úmodes      rQ   Úset_torch_function_mode_stackr}  ý  sY   € ÝÕ,Ñ.Ô.Ñ/Ô/ð $ð $ˆÝ!Ñ#Ô#Ð#Ð#àð ,ð ,ˆÝ% dÑ+Ô+Ð+Ð+ð,ð ,rP   c                 ó^   — t          t          ¦   «         ¦  «        D ]} t          ¦   «          Œd S rd   )r  r"   r#   )rÆ  s    rQ   Úclear_torch_function_mode_stackr    s9   € ÝÕ,Ñ.Ô.Ñ/Ô/ð $ð $ˆÝ!Ñ#Ô#Ð#Ð#ð$ð $rP   c                 ó"   — t          ¦   «          d S rd   )Ú
breakpointrÈ  s    rQ   Ú_breakpoint_for_c_dynamor‚    s   € Ý�L„L€L€L€LrP   c                óÐ   — | j         }t          j        |¦  «        }t          |j        ¦  «        dk    rddlm}  |d¦  «        ‚|j        | j        k    rddlm}  |d¦  «        ‚d S )NrH   r8   )ÚInternalTorchDynamoErrorz[Tensor subclass method __metadata_guard__ must take exactly two subclass metadata argumentsz?Tensor subclass method __metadata_guard__ must be a classmethod)	Ú__metadata_guard__r   Ú	signaturer  rm  r6  r„  r  r>  )r¨   r´  Úsigr„  s       rQ   Úverify_guard_fn_signaturerˆ    sœ   € Ø	Ô	!€BÝ
Ô
˜BÑ
Ô
€CÝ
ˆ3Œ>ÑÔ˜aÒÐØ1Ð1Ð1Ð1Ð1Ð1à&Ð&Øiñ
ô 
ð 	
ð 
„{�e”oÒ%Ð%Ø1Ð1Ð1Ð1Ð1Ð1à&Ð&ØMñ
ô 
ð 	
ð &Ð%rP   c                ó"  — | j         t          j         t          j        j         fv ok| j        t          j        t          j        j        fv oG| j        t          j        t          j        j        fv o#| j        t          j        t          j        j        fv S rd   )r›   r  rr   rü   rá   rï   Ú__iter__)Úuser_clss    rQ   Ú#does_not_override_dict_iter_methodsrŒ     sx   € àŒ�4œ:¥{Ô'>Ô'DÐEÐEð 	SØŒO¥¤­[Ô-DÔ-KÐLÐLð	SàŒM�dœi­Ô)@Ô)EÐFÐFð	Sð Ô¥$¤-µÔ1HÔ1QÐ!RÐRð	rP   c                ól   — t           j                             d¬¦  «        d„ ¦   «         } || |¦  «        S )NT©Ú	recursivec                ó,   — |                       |¦  «        S rd   )r  ©rÞ   rÆ  s     rQ   r´  zcall_size.<locals>.fn.  s   € à�vŠv�a‰yŒyÐrP   ©rÀ   r´  Údisable©rÞ   rÆ  r´  s      rQ   Ú	call_sizer•  -  s@   € Ý
„]×Ò TÐÑ*Ô*ðð ñ +Ô*ðð ˆ2ˆa�‰8Œ8€OrP   c                ól   — t           j                             d¬¦  «        d„ ¦   «         } || |¦  «        S )NTrŽ  c                ó,   — |                       |¦  «        S rd   )rø  r‘  s     rQ   r´  zcall_stride.<locals>.fn6  s   € à�xŠx˜‰{Œ{ÐrP   r’  r”  s      rQ   Úcall_strider˜  5  s@   € Ý
„]×Ò TÐÑ*Ô*ðð ñ +Ô*ðð ˆ2ˆa�‰8Œ8€OrP   c                ój   — t           j                             d¬¦  «        d„ ¦   «         } || ¦  «        S )NTrŽ  c                ó*   — |                       ¦   «         S rd   )Ústorage_offsetrÝ   s    rQ   r´  zcall_storage_offset.<locals>.fn>  s   € à×ÒÑ!Ô!Ð!rP   r’  )rÞ   r´  s     rQ   Úcall_storage_offsetrœ  =  s>   € Ý
„]×Ò TÐÑ*Ô*ð"ð "ñ +Ô*ð"ð ˆ2ˆa‰5Œ5€LrP   c                ó,   ‡ — ddg}ˆ fd„|D ¦   «         }|S )Nr÷  Útagc                ób   •— i | ]+}|‰j         v ¯|t          j        ‰j         |         ¦  «        “Œ,S r;   )re  rñ  )rƒ   r§   rJ  s     €rQ   rÖ  z(_extract_tensor_dict.<locals>.<dictcomp>M  s>   ø€ ð ð ð Ø,/À3È!Ì*ÐCTÐCTˆ�TŒY�q”z #”Ñ'Ô'ÐCTÐCTÐCTrP   r;   )rJ  ÚKEYS_TO_COPYÚtensor_dicts   `  rQ   Ú_extract_tensor_dictr¢  G  s@   ø€ à#Øð€Lð
ð ð ð Ø3?ðñ ô €Kð ÐrP   z(Dict[int, weakref.ReferenceType[object]]Úuser_obj_id_to_weakrefc                óF   — t          |          ¦   «         }|€
J d¦   «         ‚|S )NzUser object is no longer alive)r£  )Úobj_idrq  s     rQ   Úget_user_object_from_idr¦  Z  s'   € Ý
  Ô
(Ñ
*Ô
*€CØˆ?ˆ?Ð<‰?Œ?ˆ?Ø€JrP   c                ó\   — t          | ¦  «        }t          j        | ¦  «        t          |<   d S rd   )ra  rl  rj  r£  )rq  r¥  s     rQ   Ústore_user_object_weakrefr¨  `  s(   € Ý�‰WŒW€FÝ%,¤[°Ñ%5Ô%5Õ˜6Ñ"Ð"Ð"rP   c                  ó¶   — e Zd ZU dZded<   dZded<   dZedd„¦   «         Zedd	„¦   «         Z	edd
„¦   «         Z
edd„¦   «         Zeed„ ¦   «         ¦   «         ZdS )ÚCompileTimeInstructionCounterr   rW   Ú_counterr˜  Ú_idrz   rŠ   c                ón   — | j         dz   | _         | j         dk    rt          j        ¦   «         | _        d S d S rŒ   )Ú_depthr!   rV  r¬  rf   s    rQ   rV  z#CompileTimeInstructionCounter.startj  s5   € à”Z !‘^ˆŒ
ØŒ:˜Š?ˆ?Ý*Ô0Ñ2Ô2ˆCŒGˆGˆGð ˆ?rP   c                óš   — | j         dz
  | _         | j         dk    r0| xj        t          j        | j        ¦  «        z  c_        d| _        d S d S )Nr8   r   r˜  )r®  r«  r!   Úendr¬  rf   s    rQ   r°  z!CompileTimeInstructionCounter.endp  sJ   € à”Z !‘^ˆŒ
ØŒ:˜Š?ˆ?ØˆLŒLÕ0Ô4°S´WÑ=Ô=Ñ=ˆLŒLØˆCŒGˆGˆGð ˆ?rP   c                ó   — d| _         d S r�   ©r«  rf   s    rQ   re   z#CompileTimeInstructionCounter.clearw  s   € àˆŒˆˆrP   c                ó   — | j         S rd   r²  rf   s    rQ   r¨   z#CompileTimeInstructionCounter.value{  s
   € àŒ|ÐrP   c              #  óä   K  — 	 t           j        r|                      ¦   «          d V — t           j        r|                      ¦   «          d S d S # t           j        r|                      ¦   «          w w xY wrd   )r9   Ú%record_compile_time_instruction_countrV  r°  rf   s    rQ   Úrecordz$CompileTimeInstructionCounter.record  st   è è € ð	ÝÔ;ð Ø—	’	‘”�ØˆEˆEˆEåÔ;ð Ø—’‘	”	�	�	�	ðð ø�vÔ;ð Ø—’‘	”	�	�	ðøøøs   „$A Á#A/NrÍ  )rz   rW   )rJ   rK   rL   r«  rt   r¬  r®  ru   rV  r°  re   r¨   r   r¶  r;   rP   rQ   rª  rª  e  sÜ   € € € € € € Ø€HÐÐÐÑØ€C€M€M€M�MØ€Fàð3ð 3ð 3ñ „[ð3ð
 ðð ð ñ „[ðð ðð ð ñ „[ðð ðð ð ñ „[ðð Øðð ñ „^ñ „[ðð ð rP   rª  ÚfeatureÚusagec                ó�   — t          ¦   «                              ¦   «         r%t          ¦   «                              d| |¦  «         dS dS )zQ
    Records whether we are using a feature
    Generally a feature is a JK.
    r-  N)r¬   rÆ   Úset_key_value)r·  r¸  s     rQ   Úset_feature_user»  ‹  sO   € õ ÑÔ×(Ò(Ñ*Ô*ð MÝÑÔ×+Ò+¨O¸WÀeÑLÔLÐLÐLÐLðMð MrP   )rv   rw   rx   ry   rz   r{   rÍ  )r’   rW   rz   rŠ   )rz   rD   )rz   r&   )NFNNF)r§   r{   r­   r®   r¯   r°   r±   r²   r³   r®   r´   r°   rz   rµ   rÌ  )rÐ   rÑ   rÒ   r°   rz   r{   )rÐ   r×   rÒ   r°   rz   rØ   )r{   F)rÒ   r°   r^  )r9  r{   rz   rŠ   )rF  rG  rz   rW   )rÞ   r?   rz   r?   )rq  rr  rs  rt  rz   ru  )rq  rr  rs  ry  rz   ru  )rq  rr  rs  r{  rz   r°   rd   )rí   râ  rz   rã  )rL  rì  rz   rŠ   rË  )
rO  rW   rP  rW   rQ  rA   rR  rS  rT  rU  )r„  rW   rz   rŠ   )rz   rŒ  )rz   r�  )FF)rÈ   r{   rÐ  r°   r¯   r°   rz   rµ   )rÍ  r  )rz   rT  )r8   )rz   rÀ  )T)rq  r   )rÅ  rò  )r¨   r   )r\   r4  )r¨   r   r   r°   )r  r  )r9  r  r  r°   r  r'   rz   r  )FFF)r{   r{   rš  rW   rz   rW   )r§  r{   rz   r¨  )r7  rÍ  rÎ  rÏ  rz   r{   )rá  r	  rz   r°   )TT)ro  r?  )r·  r{   r¸  r°   (¥  Ú
__future__r   Úatexitrr   r  rñ  rm  r|  r%  r�  r�  rs  r÷  r   rˆ   rC  rÕ  r#  r^  r¹  r  rG  rƒ  rä  r   r½   râ  r©  r†  r¢  re  rl  r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Útyping_extensionsr   r   rÀ   Útorch._functorch.configÚ%torch.fx.experimental.symbolic_shapesÚtorch.utils._pytreerq  Ú_pytreer¾  r    Útorch._Cr!   r"   r#   r$   Útorch._dispatch.pythonr%   Útorch._dynamo.metrics_contextr&   Útorch._guardsr'   r(   Útorch._subclasses.meta_utilsr)   Útorch._utils_internalr*   r+   r,   r-   Útorch.fx._utilsr.   r/   Útorch.monitorr0   Útorch.nn.modules.lazyr1   Útorch.utils._tritonr2   r3   Útorch.utils.hooksr4   rO  rŒ  ru  Útorch._loggingÚtorch._numpyÚ_numpyrN  r5   r7   rh  r9   ÚfftÚlinalgr%  r:   rt   ÚNP_TO_TNP_MODULEræ  r<   r=   r>   r‡   r?   r¾  rµ  r  Úunpatched_nn_module_getattrrÛ  Úunpatched_nn_module_callÚ
_call_implÚunpatched_nn_module_call_implrs   r@   rB   Útroubleshooting_urlÚnnmodule_doc_urlÚnnmodule_doc_url_msgr%  rJ   rq   rC   rS  rE   r^   Útimer_counterr‘  rG   rS   r†   r�   rŽ   r‘   r”   r•   rŸ   r©   r¬   rÏ   rÕ   Úregisterrò   ÚFloatTensorr˜  ÚDoubleTensorr™  ÚdoubleÚ
HalfTensorr—  ÚhalfÚBFloat16Tensorr_  Ú
ByteTensorr‘  Ú
CharTensorr�  Ú
LongTensorr�  ÚlongÚ	IntTensorr�  rW   ÚShortTensorrŽ  ÚshortÚ
BoolTensorr°   Útensortype_to_dtyperô   r  r  r  r  r0  r8  rE  rN  rP  rU  rZ  r\  rx  r„  ÚParamSpecArgsÚParamSpecKwargsÚ	ParamSpecÚTypeVarTupleÚTypeAliasTyper…  r‰  r•  rš  r¢  r§  rŸ  r±  rµ  r³  r»  rÃ  rÆ  rÉ  rÎ  rá  rè  rê  r.  r_  rì  Ú!DEFAULT_COMPILATION_METRICS_LIMITr‡  r2  r7  rN  r‚  rª   r‰  r‹  rŽ  r�  rÎ  r¼   rÔ  rÖ  rÙ  rà  rê  rð  r  r  r-  r7  r=  r?  rD  rC  rd  rp  rz  r€  r‹  r¡  r{   rV   r4  ÚEllipsisr>  ÚNotImplementedÚCodeTyperú  rì  Úmemory_formatrõ  ÚfinfoÚiinfoÚ	attentionÚ
SDPBackendrz  Ú_CudaDevicePropertiesrŒ  r{  r  Úlanguager�  r˜  rœ  r   r§  r©  r­  rï   r®  rá   r¯  rü   r°  rÌ  r±  r  r²  Ú__length_hint__Útuple_iterator_lenrr  rL  r´  r¶  r¼  r¿  rÊ  Ú	iter_nextrÅ  rÈ  rÎ  rÓ  rß  rã  rò  rô  r÷  rþ  r  ÚGLOBAL_KEY_PREFIXÚtorch._subclassesr  r  r  r!  r&  r;  r,  rq  rw  Úorig_code_maprî   rx  ry  Úseen_code_mapr‚  r!  r‰  r‹  r“  r�  r¡  rÇ  rÈ  rË  r§  r×  rê  rì  rñ  rù  rü  rû  r  r  r  r  r#  r)  r9  r:  r;  Úall_hook_namesr6  rE  rG  rK  rR  rT  r`  rb  rk  rx  r|  r€  r‰  r“  r™  r   r¢  rÌ  rõ  rø  rÿ  r  r  r  r  r  r!  r0  r5  r9  r;  rV  rZ  r\  r^  rý   rb  rg  rk  ro  rs  rw  rv  r}  r  r‚  rˆ  rŒ  r•  r˜  rœ  r¢  r£  r¦  r¨  rª  r»  r;   rP   rQ   ú<module>r     sÐ  ðà "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð0 .Ð -Ð -Ð -Ð -Ð -Ð -Ð -à €€€Ø Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø -Ð -Ð -Ð -Ð -Ð -ðØÐÐÐÐøØð ð ð Ø	€B€B€Bðøøøð	ØÐÐÐØÐÐÐÐÐØ.Ð.Ð.Ð.Ð.Ð.Ø)Ð)Ð)Ð)Ð)Ð)àÐÐÐÐÐð 
ð àØŒFØŒIØŒIð	>
Ðð 	
ð 	
ð 	
ñ 	
ð �ØŒF�C”GØŒI�s”zØŒI�s”zð	
ÐÐð  "ÐàÐØVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVøØð 	ð 	ð 	Ø€Dð	øøøð €GˆC�L„L€à#œhœoÔ9Ð Ø œ8œ?Ô3Ð Ø %¤¤Ô :Ð à+B¨;Ô+BÀ;ÔCVÑ+WÔ+W€Ð WÐ WÐ WÑ WØ$&Ð Ð &Ð &Ð &Ñ &àGð ð QÐ ØVÐ.ÐVÐVÐVÐ Ø€gÔ˜Ñ!Ô!€ð 46Ð Ð 5Ð 5Ð 5Ñ 5ð
 .E¨[Ô-DÀUÑ-KÔ-KÐ Ð KÐ KÐ KÑ Kà�	”Ñ!Ô!€ðð ð ð ð �t”yñ ô ð ð%Jð %Jð %Jð %Jð %Jñ %Jô %Jð %JñP
ð 
ð 
ð 
ð €
ñ ð  ð  ð  ñð ð ð ð €ñð ð ð ñð ð ð ñ ð ð ð ð> !Ð  Ð  Ñ  ñð ð ð ð ð !%Ø"'Ø,0Ø.2Ø!ñ^Bñ ^Bð ^Bð ^Bñ „ð^BðB 
ññ ð ð ñ 
„ðð 
à,1ññ ð ð ñ 
„ðñ"ñ "ð "ð "ð "ðJ „ñ8ð 8ð 8ñ „ð8ð
 
Ô˜œ u¤{Ð3Ø	Ô˜œ¨¬Ð5Ø	Ô�u”} e¤jÐ1Ø	Ô˜5œ>Ð+Ø	Ô�u”{�nØ	Ô�u”z�mØ	Ô�u”{ E¤JÐ/Ø	„O�e”k 5¤9Ð-Ø	Ô˜œ U¤[Ð1Ø	Ô�u”z�mðÐ ðð ð ð ð ñ ô ð ð( #:Ð"9Ñ";Ô";Ð ð"ð "ð "ñ,ð ,ð ,ð ,ð
ð 
ð 
ð	ð 	ð 	ñ?ð ?ð ?ð ?ñ
Gð Gð Gð Gñð ð ð ñð ð ð ðð ð ð	ð 	ð 	ðð ð ð ð ñ ô ð ðB 
ñð ð ñ 
„ðð 
ñð ð ñ 
„ðð 
ñð ð ñ 
„ðð&ð &ð &ð Ô�wÒÐð 	ÔØÔØÔØŒØÔØÔð%Ð!ðGð Gð Gðð ð ð&ð ð ðð ð ðð ð ð	ð 	ð 	ðð ð ð$3ð 3ð 3ðð ð ð%ð %ð %ð$ð $ð $ð,ð ,ð ,ð €Ô�TÑÔðð ñ Ôðñð ð ð ð
ð 
ð 
ñ0ð 0ð 0ð 0ñ5ð 5ð 5ð 5ð Ð ð ÔðF4ð F4ð F4ð F4ð F4ñ F4ô F4ñ ÔðF4ðR %'Ð !ð 3D°+Ô2CØ,ð3ñ 3ô 3Ð ð ð ð ñ ñ
#ð #ð #ð #ñL&ð &ð &ð &ñRu3ð u3ð u3ð u3ðr "�>Ð*DÐEÑEÔEÐ ñ%ð %ð %ð %ñ!ð !ð !ð !ñ
&ð &ð &ð &ð}ð }ð }ð }ð }ñ }ô }ð }ð@ 59Ð Ð 8Ð 8Ð 8Ñ 8ñð ð ð ð ð "Ø"'ñ
ñ 
ð 
ð 
ñ „ð
ð@ Ôð(ð (ð (ð (ð (ñ (ô (ñ Ôð(ð( ð  ð  ð  ð  Ð+ñ  ô  ð  ð )˜.Ñ*Ô*€Ô ðð ð ð !ð Gð Gð Gð Gð GðTð ð ñ&
ð 
ð 
ð 
ð ð9ð 9ñ „ð9ð"	ð 	ð 	ñð ð ð ð$ð ð ð(ð (ð (ð
ð ð ð< €Ô�QÑÔñ1ð 1ð 1ñ Ôð1ð2ð ñ ñ,ð ð ñ ð"Xð Xñ Xð €ˆ2�„ðð ñ „ñð Ø	ÙØÙÙ	Ø�Dˆ�J„JÙÕÙÕØ	…Nà	…LØ	…KØ	ÕØ	…LØ	…KØ	…KØ	„HÕÕ!Ø	…JÕ$ð'$Ñ ð ð ð ñ ð, ÐÑÔð 5Ø€M�M�Má×Ó™f�oÕ3Ñ4Ô4Ð4ððð ñ ðð ñ ðð ñ ðWð Wñ Wð
ð 
ñ 
ðð ñ ðð ñ ð "&¡ b§g£g¡i¤i¡¤�	Ð 0Ð 0Ð 0Ñ 0Ø%)¡T¨"¯)«)©+¬+Ñ%6Ô%6�Ð 6Ð 6Ð 6Ñ 6Ø&*¡dÐ+B¨;Õ+BÑ+DÔ+D×+KÓ+KÑ+MÔ+MÑ&NÔ&N�Ð NÐ NÐ NÑ NØ&*¡d¨4©4°©8¬8¡n¤n�Ð 4Ð 4Ð 4Ñ 4Ø&*¡d¨4©4°±°a±´©>¬>Ñ&:Ô&:�Ð :Ð :Ð :Ñ :Ù#Õ3Ñ Ù�^�
ðð ñ ð1ð 1ñ 1ðð ñ ñ
 �	ñð ð ñ ðð ñ ð5ð 5ñ 5ðð ñ ð8ð 8ñ 8ðð ñ ñ&ð &ð &ñ &ðRMð Mñ Mð
@ð @ñ @ñð ð ñ ñB ð  ð  ñ  ð
 !Ñ ð =Ð <Ñ <Ñ <Ñ <Ð <ð7ð 7ñ 7ð'ð 'ñ 'ð?ð ?ñ ?ð
;ð ;ñ ;ð ØØØØØØØ�iØ-2ð`Fð `Fð `Fñ `FðF	Hð Hñ Hð
 Ôð
>ð 
>ñ Ôñ
>ð 'Ð&Ñ(Ô(�ð /F¨kÔ.EÁdÑ.KÔ.K�Ð KÐ KÐ KÑ Kð LNÑ Ð MÐ MÐ MÑ Mð 'Ð&Ñ(Ô(�ð €Ô�TÑÔð,ð ,ñ Ôñ,ð&ð &ñ &ñ
ð ð ñ ðð ñ ð
/ð /ñ /ñCð Cð Cñ CðL  �	•Ñ!Ô!�ð1ð 1ñ 1ð ð"ð "ñ „ñ"ð.ð .ñ .ðb$ð $ñ $ðNBð Bñ Bñ*2ð 2ð 2ñ 2ðð ñ ñGð Gð Gñ Gñ/ñ /ð /ñ /ñ	ñ 	ð 	ñ 	ññ ñ ð ñ ðð ñ ð ñ ˜œñ ô ñ ñ5ñ 5ð 5ñ 5ññ ð ñ ñDð ñ ñ*Wð Wñ Wñ +Ñ,<Ð=Ñ Ù,Ñ.?Ð@Ñ ðñ ð Ñ ñ $Ñ&9Ñ9Ñ<QÑQ�ñð ñ ð ØØ ñ	ñ ð ñ ðF ØØ ñ	ñ ð ñ ñ$ð ñ ñ
ð 
ñ 
ð
$ð 
$ñ 
$ð 
$ñ 
$ñ 
$ô 
$ñ 
$ñ$ð $ñ $ð$ð $ñ $ð $ñ $ñ $ô $ñ $ð&$ð $ñ $ð $ñ $ñ $ô $ñ $ñ(ð ñ ñ@4ð 4ñ 4ñ.ð .ñ .ñð ñ ñð ñ ñ&
ð 
ñ 
ñ"	Cñ 	Cð 	Cñ 	Cð Ôðð ñ ð ñ ñ ô ñ Ôññvñ vð vñ vñrAñ Að Añ AñHð ñ ñ)ð )ñ )ñ"ð ñ ñ0ð 0ñ 0ññ ð ñ ñ4
ð 
ñ 
ñð ñ ñOð Oñ Oð Ôññ ð ñ Ôññ$&ð &ñ &ñð ñ ð1ð 1ñ 1ð 1ñ 1�””ñ 1ô 1ñ 1ñ,ñ ,ð ,ñ ,ñ^4ð 4ñ 4ñ1ð 1ñ 1ðð ñ ð ñ ñ ô ñ ð  ™C™EœE�Ñ !Ð !Ñ !Ñ !ñ	2ñ 	2ð 	2ñ 	2ñ%ð %ñ %ð ÔñCð Cñ ÔñCñKð Kñ Kñð ñ ñ0ð 0ñ 0ñ
,ð ,ñ ,ñ$ð $ñ $ñð ñ ñ
ð 
ñ 
ñ"ð ñ ñð ñ ñð ñ ñð ñ ñ
ð 
ñ 
ð  DFÑ Ñ EÐ EÑ EÑ Eñð ñ ñ6ð 6ñ 6ð
#ð #ñ #ð #ñ #ñ #ô #ñ #ñLMñ Mð Mñ Mð Mð Ms%   Å E ÅEÅEÅA/G ÇGÇ
G