Ë
    L²jg  ã                   óÒ   — d dl mZ d dlZd dlmZmZmZ d dlmZ d dl	m
Z
 dedeeee   f   dee   fd	„Zdedeeee   f   dee   fd
„Zdedeeee   f   defd„Zdedz  defd„Zy)é    )ÚAnyN)ÚGraphÚmap_argÚNode)Ú
OrderedSet)Útree_flattenÚnodeÚnode_to_additional_depsÚreturnc                 ó°   — t        t           «       }t        | j                  | j                  f|j
                  «       | |v r|j                  ||    «       |S ©N)Úlistr   r   ÚargsÚkwargsÚappendÚextend©r	   r
   r   s      úX/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_dynamo/graph_utils.pyÚ_get_flat_argsr      sJ   € ô ”‰9‹;€DÜˆT�Y‰Y˜Ÿ™Ð$ d§k¡kÔ2ØÐ&Ñ&Ø�‰Ð+¨DÑ1Ô2Ø€Kó    c                 ó°   — t        t           «       }t        | j                  | j                  f|j
                  «       | |v r|j                  ||    «       |S r   )r   r   r   r   r   ÚaddÚupdater   s      r   Ú_get_flat_args_uniquer      sL   € ô ”dÑÓ€DÜˆT�Y‰Y˜Ÿ™Ð$ d§h¡hÔ/ØÐ&Ñ&Ø�‰Ð+¨DÑ1Ô2Ø€Kr   Úgraphc           
      óø  — i }t        | j                  «      D ]¶  }||v rŒ|t        t        ||«      «      fg}d||<   |sŒ(|d   \  }}	 t	        |«      }t        |t        «      sŒ(|j                  |d«      }|dk(  r |D �	�
cg c]  \  }	}
|	‘Œ	 c}
}	|gz   }d|› �c S |dk(  r+d||<   |j                  |t        t        ||«      «      f«       |rŒ�Œ¸ yc c}
}	w # t        $ r |j                  «        d||<   Y Œ,w xY w)Né   éÿÿÿÿr   zcycle detected in path: é   zno cycle detected)ÚreversedÚnodesÚiterr   ÚnextÚ
isinstancer   Úgetr   ÚStopIterationÚpop)r   r
   ÚstateÚrootÚstackÚparentÚchildrenÚchildÚchild_stater	   Ú_Ú
cycle_paths               r   Ú_detect_cyclesr1   "   s&  € ð  €Eä˜Ÿ™Ó%ò &"ˆØ�5‰=Øð œÔ2°4Ð9PÓQÓRÐSÐTˆØˆˆd‰âØ$ R™yÑˆF�Hð"Ü˜X›�ä! %¬Ô.Øà#Ÿi™i¨¨qÓ1�à !Ò#à6;×!<©7¨4°¢$Ó!<À¸wÑ!F�JØ5°j°\ÐBÒBà !Ò#Ø#$�E˜%‘LØ—L‘Là!Ü Ô!6°uÐ>UÓ!VÓWðôó% ð&"ðP ùó% "=øô !ò "à—	‘	”Ø !��f“ð"ús0   Á	CÁ%CÂCÂCÂ0CÃCÃC9Ã8C9c                 óÔ  — | €ydt         dt        fd„}dt        dt        dt        t            fd„}| j                  D ]©  }dD ]  } |||«      D ]  } ||«      c c c S  Œ |j
                  d	k(  r@d
D ];  }|j                  |k(  r|c c S |j                  dk(  sŒ(||j                  v sŒ7|c c S  t        |j                  |j                  f«      \  }}|D ]  } ||«      c c S  Œ« y)NÚcpuÚxr   c                 ó°   — t        | t        j                  «      r| j                  S t        | t        j                  «      r| j                  j                  S y)Nr3   )r$   ÚtorchÚdeviceÚtypeÚTensor)r4   s    r   Ú_device_typez(_graph_device_type.<locals>._device_typeW   s8   € Ü�aœŸ™Ô&Ø—6‘6ˆMÜ�aœŸ™Ô&Ø—8‘8—=‘=Ð Ør   r	   Úkeyc                 ó\   — || j                   vrg S t        | j                   |   «      \  }}|S r   )Úmetar   )r	   r;   Úflatr/   s       r   Ú_flatten_metaz)_graph_device_type.<locals>._flatten_meta^   s.   € Ø�d—i‘iÑØˆIÜ˜tŸy™y¨™~Ó.‰ˆˆaØˆr   )ÚvalÚexample_valueÚcall_method)ÚcudaÚxpuÚto)
r   Ústrr   r   r!   ÚopÚtargetr   r   r   )	r   r:   r?   r	   r;   ÚobjÚgpuÚ	flat_argsr/   s	            r   Ú_graph_device_typerL   S   s  € Ø€}Øðœð ¤ó ðœDð ¤sð ¬t´C©yó ð —‘ò %ˆØ+ò 	)ˆCÙ$ T¨3Ó/ò )�Ù# CÓ(Ö(ñ)ð	)ð
 �7‰7�mÒ#Ø&ò �Ø—;‘; #Ò%Ø”JØ—;‘; $Ó&¨3°$·)±)Ò+;Ø”Jð	ô $ T§Y¡Y°·±Ð$<Ó=‰ˆ	�1Øò 	%ˆCÙ Ó$Ô$ñ	%ð%ð" r   )Útypingr   r6   Útorch.fxr   r   r   Útorch.utils._ordered_setr   Útorch.utils._pytreer   Údictr   r   r   rF   r1   rL   © r   r   ú<module>rS      s¼   ðÝ ã ß )Ñ )Ý /Ý ,ðØ
ðØ)-¨d°J¸tÑ4DÐ.DÑ)Eðà	ˆ$�ZóðØ
ðØ)-¨d°J¸tÑ4DÐ.DÑ)Eðà�Ñóð.Øð.Ø+/°°jÀÑ6FÐ0FÑ+Gð.àó.ðb"˜e d™lð "¨sô "r   