Ë
    L²j£r  ã                   ór  — d Z ddlZddlZddlmZmZ ddlmZmZm	Z	 ddl
mZ ddlmZmZ ddlmZmZ dd	lmZ dd
lmZmZ ddlmZmZmZ ddlmZmZmZ ddlm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z' e	rddl(m)Z) ddl*m+Z+ ddl,m-Z-  G d„ de!«      Z. G d„ de!«      Z/ G d„ de.«      Z0 G d„ de.«      Z1 G d„ de.«      Z2y)a‰  
Set-related variable tracking classes for PyTorch Dynamo.

This module implements variable tracking for different types of set-like objects:
- Regular Python sets (set)
- Frozen sets (frozenset)
- Ordered sets (torch.utils._ordered_set.OrderedSet)
- Dictionary key sets (dict_keys views used as sets)

These classes are responsible for tracking set operations during graph compilation,
maintaining proper guards for set mutations and element existence checks.

The implementation uses a special HashableTracker wrapper to handle set elements
while preserving proper aliasing semantics. Sets are modeled internally as
dictionaries with None values.
é    N)ÚIterableÚSequence)ÚAnyÚLiteralÚTYPE_CHECKING©Ú
OrderedSeté   )Ú	polyfillsÚ	variables)Úcreate_call_functionÚcreate_instruction)Úraise_observed_exception)ÚGuardBuilderÚinstall_guard)Ú
AttrSourceÚis_constant_sourceÚis_from_local_source)Úcmp_name_to_op_mappingÚistypeÚraise_args_mismatché   )ÚValueMutationNewÚVariableTracker)ÚConstantVariable)ÚHashableTrackerÚis_hashableÚraise_unhashable)Ú	PyCodegen)ÚInstructionTranslator)ÚBuiltinVariablec            
       ó  ‡ — e Zd ZdZeZej                  Zej                  Z
deeez     deddfˆ fd„Zdefd„Zeded   fd	„«       Zedefd
„«       Zdefd„Zdefd„Zdefd„Zd'd„Zdedefd„Zdefd„Zdefd„Zdedz  dedefd„Z ddde!e   fd„Z"dedefˆ fd„Z#defd„Z$dddefˆ fd„Z%dddede&fd„Z'ddde!e   ddfd„Z(ddd ede!e   de)eef   def
d!„Z*dddede!e   de)eef   def
ˆ fd"„Z+d(d#„Z,ddd$edefd%„Z-dddefd&„Z.ˆ xZ/S ))ÚSetVariablez2Represents a Python set during symbolic execution.ÚitemsÚkwargsÚreturnNc                 ó$  •— d|v r|j                  d«       d|v r|j                  d«       t        ‰| �  di |¤Ž g }|D ]L  }t        |t        «      r|j                  |«       Œ%|j                  t	        |j                  «       «      «       ŒN t        j                  |t        j                  «       «      | _        | j                  rt        | j                  «       nd| _        t        j                  |t        j                  «       «      | _        y )NÚoriginal_itemsÚshould_reconstruct_allT© )ÚpopÚsuperÚ__init__Ú
isinstancer   ÚappendÚrealizeÚdictÚfromkeysr#   Ú_default_valuer$   Úsourcer   r)   r(   )Úselfr$   r%   Úhashable_itemsÚitemÚ	__class__s        €ú[/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_dynamo/variables/sets.pyr-   zSetVariable.__init__7   sè   ø€ ð ˜vÑ%Ø�J‰JÐ'Ô(Ø# vÑ-Ø�J‰JÐ/Ô0ä‰ÑÑ"˜6Ò"ð
 ˆØò 	GˆDÜ˜$¤Ô0à×%Ñ% dÕ+ð ×%Ñ%¤o°d·l±l³nÓ&EÕFð	Gô —]‘] >´;×3MÑ3MÓ3OÓPˆŒ
à59·[²[Ô$ T§[¡[Ó1Ñ1Àdð 	Ô#ô #Ÿm™mØœK×6Ñ6Ó8ó
ˆÕó    c                 ó0  — | j                   syg }| j                   D ]b  }t        |t        «      r|j                  n|}t	        |d«      rt        |j                  «      n|j                  «       }|j                  |«       Œd ddj                  |«      z   dz   S )Nzset()Úvalueú{ú,ú})
r$   r.   r   ÚvtÚhasattrÚreprr<   Ú
debug_reprr/   Újoin)r5   r$   Úvr@   Úval_strs        r9   rC   zSetVariable.debug_reprX   s|   € Ø�zŠzØà!ˆEØ—Z‘Zò &�Ü'¨¬?Ô;�Q—T’TÀ�Ü,3°B¸Ô,@œ$˜rŸx™xœ.ÀbÇmÁmÃo�Ø—‘˜WÕ%ð&ð ˜Ÿ™ %›Ñ(¨3Ñ.Ð.r:   r   c                 óH   — t        | j                  j                  «       «      S ©N©Úsetr$   Úkeys©r5   s    r9   Ú	set_itemszSetVariable.set_itemsc   ó   € ä�4—:‘:—?‘?Ó$Ó%Ð%r:   c                  ó,   — t        j                  d «      S rH   )r   Úcreater*   r:   r9   r3   zSetVariable._default_valueg   s   € ô  ×&Ñ& tÓ,Ð,r:   c                 óp   — | j                   D �ch c]  }|j                  j                  «       ’Œ c}S c c}w rH   )rM   r@   Úas_proxy©r5   Úks     r9   rR   zSetVariable.as_proxyl   s$   € Ø)-¯©Ö8 A�—‘—‘•Ò8Ð8ùÒ8ó   �!3c                 ó   — t         S rH   )rJ   rL   s    r9   Úpython_typezSetVariable.python_typeo   s   € Üˆ
r:   c                 óp   — | j                   D �ch c]  }|j                  j                  «       ’Œ c}S c c}w rH   )rM   r@   Úas_python_constantrS   s     r9   rY   zSetVariable.as_python_constantr   s'   € Ø37·>±>ÖB¨a�—‘×'Ñ'Õ)ÒBÐBùÒBrU   c                 óÒ   — |j                  | j                  D �cg c]  }|j                  ‘Œ c}«       |j                  t	        dt        | j                  «      ¬«      «       y c c}w )NÚ	BUILD_SET©Úarg)ÚforeachrM   r@   Úappend_outputr   Úlen©r5   ÚcodegenÚxs      r9   ÚreconstructzSetVariable.reconstructu   sE   € Ø�‰ t§~¡~Ö6 !˜Ÿ›Ò6Ô7Ø×ÑÔ0°Ä#ÀdÇnÁnÓBUÔVÕWùò 7s   šA$r@   c                 óÄ   — t        |t        «      sJ ‚t        |«      syt        |«      }|| j                  v xr( t        | j                  |   t
        j                  «       S ©NF)r.   r   r   r   r$   r   ÚDeletedVariable)r5   r@   Úkeys      r9   Ú__contains__zSetVariable.__contains__y   s[   € Ü˜"œoÔ.Ð.Ð.Ü˜2ŒØÜ˜bÓ!ˆØ�d—j‘jÐ ò 
¬Ø�J‰J�s‰OœY×6Ñ6ó*
ð &
ð 	
r:   c                 óV   — t        d„ | j                  j                  «       D «       «      S )Nc              3   óR   K  — | ]  }t        |t        j                  «       –— Œ! y ­wrH   )r.   r   rg   )Ú.0rc   s     r9   ú	<genexpr>z"SetVariable.len.<locals>.<genexpr>ƒ   s%   è ø€ ò 
Ø=>”
˜1œi×7Ñ7Ó8Ô8ñ
ùs   ‚%')Úsumr$   ÚvaluesrL   s    r9   r`   zSetVariable.len‚   s)   € Üñ 
ØBFÇ*Á*×BSÑBSÓBUô
ó 
ð 	
r:   c                 óx   ‡ — ‰ j                   xs, t        ˆ fd„‰ j                  j                  «       D «       «      S )Nc              3   óŽ   •K  — | ]<  \  }}‰j                  ‰j                  j                  |j                  «      |«      –— Œ> y ­wrH   )Úis_new_itemr(   Úgetr@   )rl   rh   r<   r5   s      €r9   rm   z,SetVariable.has_new_items.<locals>.<genexpr>ˆ   s?   øè ø€ ò 2
á��Uð ×Ñ˜T×0Ñ0×4Ñ4°S·V±VÓ<¸e×Dñ2
ùs   ƒAA)r)   Úanyr$   rL   s   `r9   Úhas_new_itemszSetVariable.has_new_items‡   s7   ø€ Ø×*Ñ*ò 
¬có 2
à"Ÿj™j×.Ñ.Ó0ô2
ó /
ð 	
r:   r<   Úotherc                 óÚ   — |rS|j                  «       rC|j                  «       r3t        |j                  «       «      t        |j                  «       «      k7  S t        |«      t        |«      k7  S rH   )Úis_realizedÚidr0   )r5   r<   rv   s      r9   rr   zSetVariable.is_new_item�   sQ   € ñ �U×&Ñ&Ô(¨U×->Ñ->Ô-@Ü�e—m‘m“oÓ&¬"¨U¯]©]«_Ó*=Ñ=Ð=Ü�%‹yœB˜u›IÑ%Ð%r:   Útxr    c                 óT   — | j                   D �cg c]  }|j                  ‘Œ c}S c c}w rH   )r$   r@   )r5   rz   rc   s      r9   Úunpack_var_sequencezSetVariable.unpack_var_sequence”   s   € Ø"Ÿj™jÖ)˜�—“Ò)Ð)ùÒ)s   �%c                 ó"   •— t        ‰| �  di |¤ŽS ©Nr*   )r,   Úclone©r5   r%   r8   s     €r9   r   zSetVariable.clone—   s   ø€ Ü‰w‰}Ñ&˜vÑ&Ð&r:   c                  ó   — yrf   r*   rL   s    r9   Úis_python_hashablezSetVariable.is_python_hashableš   s   € Ør:   Únamec                 óv   •— |dk(  r$t        j                  || j                  «       «      S t        ‰| �  ||«      S )Nr8   )r   ÚbuildrW   r,   Úvar_getattr)r5   rz   rƒ   r8   s      €r9   r†   zSetVariable.var_getattr�   s9   ø€ Ø�;ÒÜ"×(Ñ(¨¨T×-=Ñ-=Ó-?Ó@Ð@Ü‰wÑ" 2 tÓ,Ð,r:   c                 óJ   — t        j                  |t        t        |«      «      S rH   )r   r…   rA   rJ   )r5   rz   rƒ   s      r9   Úcall_obj_hasattrzSetVariable.call_obj_hasattr¢   s   € ô ×$Ñ$ R¬´°dÓ);Ó<Ð<r:   Úargsc           	      ó˜  — | j                   sy |j                  j                  j                  | «      ry |d   | v }|d   j                   €�|d   j	                  «       rm|rt        | «      j                  nt        | «      j                  }t        | j                  t        j                  ||d   j                  «       ¬«      «      «       y y y )Nr   )rh   )r4   ÚoutputÚside_effectsÚis_modifiedÚis_python_constantÚtypeÚCONTAINS_GUARDÚNOT_CONTAINS_GUARDr   Ú
make_guardÚ	functoolsÚpartialrY   )r5   rz   r‰   ÚcontainsÚguard_fns        r9   Úinstall_set_contains_guardz&SetVariable.install_set_contains_guard§   s³   € ð �{Š{Øà�9‰9×!Ñ!×-Ñ-¨dÔ3Øà˜‘7˜d�?ˆØ�‰7�>‰>Ð! d¨1¡g×&@Ñ&@Ô&Bá-5”�T“
×)Ò)¼4À»:×;XÑ;Xð ô Ø—‘Ü×%Ñ%Ø Ø  ™G×6Ñ6Ó8ôóõð	 'CÐ!r:   Úfnc                 ót  — 	  || g|¢D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž}t        j                  |«      S c c}w c c}}w # t        $ r4}	t        t	        |	«      |t        |	j                  «      ¬«       Y d }	~	ŒYd }	~	ww xY w)N©r‰   )	rY   r$   Ú	Exceptionr   r�   Úlistr‰   r   r…   )
r5   rz   r˜   r‰   r%   rc   rT   rE   ÚresÚexcs
             r9   Ú_fast_set_methodzSetVariable._fast_set_method¾   s¥   € ð	IÙØ37°-¸$°-Ö@¨Q�!×&Ñ&Õ(Ò@ðà9?¿¹»×H±°°A�1�a×*Ñ*Ó,Ñ,ÓHñˆCô ×$Ñ$ R¨Ó-Ð-ùò AùÛHøäò 	IÜ$¤T¨#£Y°¼¸c¿h¹h»×HÒHûð	Iús2   ‚	A: ‹A/¢A: ¸A4ÁA: Á/A: Á:	B7Â*B2Â2B7c                 óž  •— ddl m} ddlm} |dv rM |||«      rD| j	                  «       t
        u r.| j	                  «       }| j                  |t        ||«      ||«      S ddlm	}m
}	 |dk(  r£ |j                  |t
        «      j                  |g|¢­i |¤Ž}
|j                  j                  j                  | «       | j                   j#                  «        | j                   j%                  |
j                   «       t'        j                  d «      S |dk(  rº|st)        |«      dk7  r&t+        ||d	t)        |«      › d
t)        |«      › d�«       t-        |d   «      st/        |d   |«       |j                  j                  j                  | «       t0        j3                  «       | j                   t5        |d   «      <   t'        j                  d «      S |dk(  r¡|s|r&t+        ||dt)        |«      › d
t)        |«      › d�«       	 | j6                  j9                  «       j:                  }d| _"        |j                  j                  j                  | «       | j                   j9                  t5        «      «       |S |dk(  rl|st)        |«      dk7  r&t+        ||d	t)        |«      › d
t)        |«      › d�«       |j                  |tF        jH                  «      jK                  || |d   gi «      S |dk(  r`|rt+        ||dt)        |«      › d�«       |j                  |tF        jL                  «      jK                  || g|¢d| jO                  «       i«      S |dk(  rP|rt+        ||dt)        |«      › d�«       |j                  |tF        jP                  «      jK                  || g|¢i «      S |dk(  r`|rt+        ||dt)        |«      › d�«       |j                  |tF        jR                  «      jK                  || g|¢d| jO                  «       i«      S |dk(  r`|rt+        ||dt)        |«      › d�«       |j                  |tF        jT                  «      jK                  || g|¢d| jO                  «       i«      S |dk(  rP|rt+        ||dt)        |«      › d�«       |j                  |tF        jV                  «      jK                  || g|¢i «      S |dk(  rz|st)        |«      dk7  r&t+        ||d	t)        |«      › d
t)        |«      › d�«       |j                  |tF        jX                  «      jK                  || g|¢d| jO                  «       i«      S |dk(  rj|st)        |«      dk7  r&t+        ||d	t)        |«      › d
t)        |«      › d�«       |j                  |tF        jZ                  «      jK                  || g|¢i «      S |dk(  r`| j]                  «       rP|rt+        ||dt)        |«      › d�«       |j                  |tF        j^                  «      jK                  || g|¢i «      S |dk(  r·|st)        |«      dk7  r&t+        ||d	t)        |«      › d
t)        |«      › d�«       |d   | vrt?        t<        ||¬«       d| _"        |j                  j                  j                  | «       | j                   j9                  t5        |d   «      «       t'        j                  d «      S |dk(  r¥|st)        |«      dk7  r&t+        ||d	t)        |«      › d
t)        |«      › d�«       |d   | v rSd| _"        |j                  j                  j                  | «       | j                   j9                  t5        |d   «      «       t'        j                  d «      S |dv rÈt)        |«      dk7  rt+        ||d t)        |«      › d!�«       t`        jb                  t`        jd                  dœ}|d   jg                  «       }ti        |t0        «      s(|j                  |t
        «      jK                  ||gi «      }|j                  ||jk                  |«      «      jK                  || |gi «      S |d"v r�ddddd"œjk                  |«      }tm        |d   t0        tn        jp                  ||	f«      s<t?        tr        |d#|› d$| ju                  «       › d%|d   ju                  «       › d&�g¬«       |€J ‚| jw                  ||||«      S |d'v r“d(d)d*d+d'œjk                  |«      }tm        |d   t0        tn        jp                  ||	f«      s<t?        tr        |d#|› d$|d   ju                  «       › d%| ju                  «       › d&�g¬«       |€J ‚|d   jw                  ||| g|«      S |d,v r‘tm        |d   t0        tn        jp                  ||	f«      s<t?        tr        |d#|› d$| ju                  «       › d%|d   ju                  «       › d&�g¬«       ddddd,œjk                  |«      }|€J ‚| jw                  ||||«       | S |d-k(  rztm        |d   t0        tn        jp                  ||	f«      st'        j                  d.«      S | jw                  |d||«      }ty        jz                  |t)        |j6                  «      dk(  «      S |d/k(  r5| jw                  |d-||«      }ty        jz                  ||j|                   «      S |t~        v rytm        |d   t0        tn        jp                  ||	f«      sty        jz                  |t€        «      S ty        jz                  |t        |   | j6                  |d   j6                  «      «      S |d0k(  rt)        |«      s&t+        ||d1t)        |«      › d
t)        |«      › d�«       |rt-        |d   «      st/        |d   |«       | jƒ                  ||«       |d   | v }ty        jz                  ||«      S |d2k(  rS|s|r&t+        ||dt)        |«      › d
t)        |«      › d�«       ty        jz                  |t)        | j                   «      «      S |d3k(  r^|s|r&t+        ||dt)        |«      › d
t)        |«      › d�«       | j…                  | j                   j‡                  «       t‰        «       d ¬4«      S |d5k(  r…|s|r&t+        ||dt)        |«      › d
t)        |«      › d�«       d| _"        |j                  j                  j                  | «       | j                   j#                  «        t'        j                  d «      S |d6k(  rwdd7lEmF} | jŽ                  rDt‘        | jŽ                  «      s/|j                  j’                  j•                  | jŽ                  «        || j—                  |«      t‰        «       ¬8«      S t˜        ‰| �í  ||||«      S # t<        $ r0}t?        t<        |tA        |jB                  «      ¬«       Y d }~�Œ¥d }~ww xY w)9Nr
   )Úcheck_constant_argsr   )ÚSourcelessBuilder)Ú
isdisjointÚunionÚintersectionÚ
differenceÚsymmetric_difference)ÚDictItemsVariableÚDictKeysVariabler-   Úaddz1 args and 0 kwargsú
 args and ú kwargsr   r+   z0 args and 0 kwargsrš   Tr£   r¥   z0 kwargsÚclsÚintersection_updater¤   r¦   zExpect: 0 kwargs, Actual: Údifference_updater§   Úsymmetric_difference_updateÚupdateÚremoveÚdiscard)ÚissubsetÚ
issupersetz1 argsz args)Ú__and__Ú__or__Ú__xor__Ú__sub__z unsupported operand type(s) for z: 'z' and 'ú')Ú__rand__Ú__ror__Ú__rxor__Ú__rsub__r¶   r·   r¸   r¹   )Ú__iand__Ú__ior__Ú__ixor__Ú__isub__Ú__eq__FÚ__ne__ri   zmore than 1 args and 0 kwargsÚ__len__Úcopy)r$   Úmutation_typer4   ÚclearÚ__iter__)ÚListIteratorVariable©rÇ   )MÚutilsr¡   Úbuilderr¢   rW   rJ   rŸ   ÚgetattrÚdictsr¨   r©   rP   Úcall_setr‹   rŒ   Úmutationr$   rÈ   r±   r   r`   r   r   r   r#   r3   r   rM   r+   r@   ÚKeyErrorr   rœ   r‰   r)   r   Úset_isdisjointÚcall_functionÚset_intersectionÚpython_type_varÚset_intersection_updateÚ	set_unionÚset_differenceÚset_difference_updateÚset_symmetric_differenceÚset_symmetric_difference_updateÚ
is_mutableÚ
set_updateÚoperatorÚleÚger0   r   rs   r.   r   ÚUserDefinedSetVariableÚ	TypeErrorÚpython_type_nameÚcall_methodr   r…   r<   r   ÚNotImplementedr—   r   rÆ   r   ÚlistsrÊ   r4   r   Úguard_on_key_orderrª   r|   r,   )r5   rz   rƒ   r‰   r%   r¡   r¢   Úpy_typer¨   r©   Útemp_set_vtÚresultÚeÚoprv   ÚmÚrÚ	eq_resultr•   rÊ   r8   s                       €r9   rå   zSetVariable.call_methodÎ   s¹  ø€ õ 	0Ý.ð ðññ $ D¨&Ô1Ø× Ñ Ó"¤cÑ)à×&Ñ&Ó(ˆGØ×(Ñ(¨¬W°W¸dÓ-CÀTÈ6ÓRÐR÷ 	?à�:ÒØDÐ+×2Ñ2°2´sÓ;×DÑDØðØòØ#ñˆKð �I‰I×"Ñ"×+Ñ+¨DÔ1Ø�J‰J×ÑÔØ�J‰J×Ñ˜k×/Ñ/Ô0Ü#×*Ñ*¨4Ó0Ð0Ø�UŠ]Ùœ˜T› ašÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ô ˜t A™wÔ'Ü   a¡¨"Ô-Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ü3>×3MÑ3MÓ3OˆD�J‰J” t¨A¡wÓ/Ñ0Ü#×*Ñ*¨4Ó0Ð0Ø�UŠ]Ù™Ü#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ðJØ*.¯.©.×*<Ñ*<Ó*>×*AÑ*A�ð +/ˆDÔ'Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�J‰J�N‰Nœ?¨6Ó2Ô3ØˆMØ�\Ò!Ùœ˜T› ašÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð %×+Ñ+¨B´	×0HÑ0HÓI×WÑWØ�T˜4 ™7�O Róð ð �^Ò#ÙÜ# B¨¨j¼SÀ»[¸MÈÐ:QÔRØ$×+Ñ+Ø”I×.Ñ.óç‰mØØ�˜�Ø˜×,Ñ,Ó.Ð/óðð Ð*Ò*ÙÜ# B¨¨j¼SÀ»[¸MÈÐ:QÔRØ$×+Ñ+Ø”I×5Ñ5óç‰m˜B  ¨ ¨rÓ2ð3ð �WŠ_ÙÜ# B¨¨j¼SÀ»[¸MÈÐ:QÔRØ$×+Ñ+¨B´	×0CÑ0CÓD×RÑRØØ�˜�Ø˜×,Ñ,Ó.Ð/óð ð
 �\Ò!ÙÜ#Ø˜Ð :¼3¸v»;¸-ÀwÐOôð %×+Ñ+¨B´	×0HÑ0HÓI×WÑWØØ�˜�Ø˜×,Ñ,Ó.Ð/óð ð
 Ð(Ò(ÙÜ# B¨¨j¼SÀ»[¸MÈÐ:QÔRØ$×+Ñ+Ø”I×3Ñ3óç‰m˜B  ¨ ¨rÓ2ð3ð Ð+Ò+Ùœ˜T› ašÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð %×+Ñ+Ø”I×6Ñ6óç‰mØØ�˜�Ø˜×,Ñ,Ó.Ð/óðð Ð2Ò2Ùœ˜T› ašÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð %×+Ñ+Ø”I×=Ñ=óç‰m˜B  ¨ ¨rÓ2ð3ð �XÒ $§/¡/Ô"3ÙÜ# B¨¨j¼SÀ»[¸MÈÐ:QÔRØ$×+Ñ+¨B´	×0DÑ0DÓE×SÑSØ�T�M˜D�M 2óð ð �XÒÙœ˜T› ašÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð �A‰w˜dÑ"Ü(¬°2¸DÕAØ*.ˆDÔ'Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�J‰J�N‰Nœ?¨4°©7Ó3Ô4Ü#×*Ñ*¨4Ó0Ð0Ø�YÒÙœ˜T› ašÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð �A‰w˜$‰Ø.2�Ô+Ø—	‘	×&Ñ&×/Ñ/°Ô5Ø—
‘
—‘œ¨t°A©wÓ7Ô8Ü#×*Ñ*¨4Ó0Ð0ØÐ/Ñ/Ü�4‹y˜AŠ~Ü# B¨¨h¼3¸t»9¸+ÀUÐ8KÔLô %ŸK™KÜ&Ÿk™kñˆBð ˜‘G—O‘OÓ%ˆEÜ˜%¤Ô-Ø)×0Ñ0°´SÓ9×GÑGÈÈUÈGÐUWÓX�Ø$×+Ñ+¨B°·±°t³Ó=×KÑKØ�T˜5�M 2óð ð Ð@Ñ@à)Ø!Ø1Ø'ñ	÷
 ‰c�$‹ið ô Ø�Q‘äÜ×4Ñ4Ø%Ø$ð	ôô )ÜØà:¸4¸&ÀÀD×DYÑDYÓD[ÐC\Ð\cÐdhÐijÑdk×d|Ñd|Ód~Ðcð  @Að  Bðõð �=Ð �=Ø×#Ñ# B¨¨4°Ó8Ð8ØÐDÑDà%Ø#Ø%Ø%ñ	÷
 ‰c�$‹ið ô Ø�Q‘äÜ×4Ñ4Ø%Ø$ð	ôô )ÜØà:¸4¸&ÀÀDÈÁG×D\ÑD\ÓD^ÐC_Ð_fÐgk×g|Ñg|Óg~Ðfð  @Að  Bðõð �=Ð �=Ø˜‘7×&Ñ& r¨1¨t¨f°fÓ=Ð=ØÐDÑDÜØ�Q‘äÜ×4Ñ4Ø%Ø$ð	ôô )ÜØà:¸4¸&ÀÀD×DYÑDYÓD[ÐC\Ð\cÐdhÐijÑdk×d|Ñd|Ód~Ðcð  @Að  Bðõð 2Ø#Ø9Ø/ñ	÷
 ‰c�$‹ið ð �=Ð �=Ø×Ñ˜R  D¨&Ô1ØˆKØ�XÒÜØ�Q‘äÜ×4Ñ4Ø%Ø$ð	ôô (×.Ñ.¨uÓ5Ð5Ø× Ñ  Ð%;¸TÀ6ÓJˆAÜ"×(Ñ(¨¬S°·±Ó-=ÀÑ-BÓCÐCØ�XÒØ×(Ñ(¨¨X°t¸VÓDˆIÜ"×(Ñ(¨°·±Ð-@ÓAÐAØÔ+Ñ+ÜØ�Q‘äÜ×4Ñ4Ø%Ø$ð	ôô '×,Ñ,¨R´Ó@Ð@Ü"×(Ñ(ØÜ& tÑ,¨T¯^©^¸TÀ!¹W×=NÑ=NÓOóð ð �^Ò#Ü�t”9Ü#ØØØ3Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ñ œ[¨¨a©Ô1Ü   a¡¨"Ô-Ø×+Ñ+¨B°Ô5Ø˜A‘w $�ˆHÜ"×(Ñ(¨¨XÓ6Ð6Ø�YÒÙ‘vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ô #×(Ñ(¨¬S°·±«_Ó=Ð=Ø�VŠ^Ù‘vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð —:‘:Ø—j‘j—o‘oÓ'Ô7GÓ7IÐRVð ó ð ð �WŠ_Ù‘vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð +/ˆDÔ'Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�J‰J×ÑÔÜ#×*Ñ*¨4Ó0Ð0Ø�ZÒÝ3à�{Š{Ô#5°d·k±kÔ#BØ—	‘	×,Ñ,×0Ñ0°·±Ô=Ù'Ø×(Ñ(¨Ó,Ô<LÓ<Nôð ô ‰wÑ" 2 t¨T°6Ó:Ð:øôE	 ò JÜ(¬°2¼DÀÇÁ»L×IÓIûðJús   Ç>$v ö	wö%w÷wc                 ó4   — t        j                  t        «      S rH   )r   r!   rJ   rL   s    r9   rÖ   zSetVariable.python_type_var/  s   € Ü×(Ñ(¬Ó-Ð-r:   r]   c                 ó   — t        d«      ‚)NzIllegal to getitem on a set)ÚRuntimeError)r5   rz   r]   s      r9   Úgetitem_constzSetVariable.getitem_const2  s   € ô Ð8Ó9Ð9r:   c                 óT   — t        j                  |t        | j                  «      «      S rH   )r   r…   r`   rM   )r5   rz   s     r9   Ú	sq_lengthzSetVariable.sq_length7  s   € Ü×$Ñ$ R¬¨T¯^©^Ó)<Ó=Ð=r:   ©rb   r   r&   N©r&   r!   )0Ú__name__Ú
__module__Ú__qualname__Ú__doc__rJ   Ú_cpython_typer   ÚSET_CONTAINSr�   ÚSET_NOT_CONTAINSr‘   r   r   r   r   r-   ÚstrrC   ÚpropertyrM   Ústaticmethodr3   rR   r�   rW   rY   rd   Úboolri   Úintr`   ru   rr   rœ   r|   r   r‚   r†   r   rˆ   r—   r1   rŸ   rå   rÖ   rô   rö   Ú__classcell__©r8   s   @r9   r#   r#   .   sa  ø„ Ù<ð €Mà!×.Ñ.€NØ%×6Ñ6Ðð
à˜¨/Ñ9Ñ:ð
ð ð
ð 
õ	
ðB	/˜Có 	/ð ð&˜3Ð0Ñ1ò &ó ð&ð ð-˜Oò -ó ð-ð9˜#ó 9ð˜Tó ðC Có CóXð
˜ð 
°4ó 
ð
�Só 
ð

˜tó 
ð&Ø$ tÑ+ð&Ø4Cð&à	ó&ð*Ð&=ð *À$ÀÑBWó *ð'˜cð ' oõ 'ð Dó ð-Ð5ð -¸Sõ -ð
=Ø)ð=Ø14ð=à	ó=ð
Ø)ðØ15°oÑ1Fðà	óð..à#ð.ð ð.ð �?Ñ#ð	.ð
 �S˜/Ð)Ñ*ð.ð 
ó.ð _;à#ð_;ð ð_;ð �?Ñ#ð	_;ð
 �S˜/Ð)Ñ*ð_;ð 
õ_;óB.ð:Ø)ð:Ø0?ð:à	ó:ð
>Ð3ð >¸÷ >r:   r#   c            
       ó°   ‡ — e Zd Zdeddfˆ fd„Zdeee      fd„Zdddede	fˆ fd	„Z
ddded
ee	   deee	f   de	f
ˆ fd„Zddd
ee	   deee	f   ddfd„Zˆ xZS )ÚOrderedSetClassVariabler%   r&   Nc                 ó$   •— t        ‰| �  di |¤Ž y r~   )r,   r-   r€   s     €r9   r-   z OrderedSetClassVariable.__init__<  s   ø€ Ü‰ÑÑ"˜6Ó"r:   c                 ó   — t         S rH   r   rL   s    r9   rY   z*OrderedSetClassVariable.as_python_constant?  ó   € ÜÐr:   rz   r    rƒ   c           
      óÊ   •— |dk(  rNddl m} | j                  rt        | j                  |«      }nd } || |t	        t        t        |«      «      |¬«      S t        ‰| �!  ||«      S )NÚ__new__r   )ÚGetAttrVariable)ré   r4   )	Úmiscr  r4   r   r�   rÎ   r	   r,   r†   )r5   rz   rƒ   r  Úattr_sourcer8   s        €r9   r†   z#OrderedSetClassVariable.var_getattrB  s`   ø€ Ø�9ÒÝ-à�{Š{Ü(¨¯©°dÓ;‘à"�Ù"Ø�d¤D¬´¸TÓ)BÓ$CÈKôð ô ‘7Ñ& r¨4Ó0Ð0r:   r‰   c           
      ó~  •— ddl m} |dk(  rUt        |«      dk7  s|r&t        ||dt        |«      › dt        |«      › d�«       t	        j
                  g t        «       ¬«      S t        t        |«      }||v r7t        |d	   t        j                  «      r|d	   j                  |||dd  |«      S t        ‰| �-  ||||«      S )
Nr   )Úset_methodsr  r
   z'OrderedSet.__new__ only accepts one argr«   r¬   rË   r   )Úbuiltinr  r`   r   r   ÚOrderedSetVariabler   rÎ   rJ   r.   r#   rå   r,   )r5   rz   rƒ   r‰   r%   r  Úresolved_fnr8   s          €r9   rå   z#OrderedSetClassVariable.call_methodP  sÀ   ø€ õ 	)à�9ÒÜ�4‹y˜AŠ~¡Ü#ØØØ=Ü˜4“y�k ¬C°«K¨=¸ðAôô ×/Ñ/°ÔBRÓBTÔUÐUäœc 4Ó(ˆØ˜+Ñ%¬*°T¸!±W¼i×>SÑ>SÔ*TØ˜‘7×&Ñ& r¨4°°a°b°¸6ÓBÐBä‰wÑ" 2 t¨T°6Ó:Ð:r:   r  c           
      óö   — t        |«      dkD  s|r&t        |ddt        |«      › dt        |«      › d�«       t        |«      dk(  rg }n|d   j                  |«      }t        j                  |t        «       ¬«      S )Nr   r	   zOrderedSet only accepts one argr«   r¬   r   rË   )r`   r   Úforce_unpack_var_sequencer   r  r   )r5   rz   r‰   r%   r$   s        r9   rÔ   z%OrderedSetClassVariable.call_functionj  sy   € ô ˆt‹9�qŠ=™FÜØØØ1Ü�t“9�+˜Z¬¨F« }°Gð=ôô ˆt‹9˜Š>à‰Eà˜‘G×5Ñ5°bÓ9ˆEÜ×+Ñ+¨EÔAQÓASÔTÐTr:   )rù   rú   rû   r   r-   r�   r	   rY   r   r   r†   rœ   r1   rå   r   rÔ   r  r  s   @r9   r  r  ;  sÉ   ø„ ð# ð #¨õ #ð D¨°C©Ñ$9ó ð1Ð5ð 1¸Sð 1À_õ 1ð;à#ð;ð ð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
õ;ð4Uà#ðUð �Ñ'ðUð �S˜/Ð)Ñ*ð	Uð
 
÷Ur:   r  c                   óV   — e Zd Zdefd„Zdee   fd„Zdeee      fd„Z	de
fd„Zdd„Zy)	r  r&   c                 ó0  — | j                   syg }| j                   D ]b  }t        |j                  d«      rt        |j                  j                  «      n|j                  j                  «       }|j                  |«       Œd ddj                  |«      z   dz   S )NzOrderedSet([])r<   zOrderedSet([r>   ú])©r$   rA   r@   rB   r<   rC   r/   rD   ©r5   r$   rT   Úkey_strs       r9   rC   zOrderedSetVariable.debug_repr�  s{   € Ø�zŠzØ#à!ˆEØ—Z‘Zò &�ä(/°·±°gÔ(>”D˜Ÿ™Ÿ™Ô$ÀAÇDÁDÇOÁOÓDUð ð —‘˜WÕ%ð	&ð
 " C§H¡H¨U£OÑ3°dÑ:Ð:r:   c                 ó‚   — t        | j                  D �cg c]  }|j                  j                  «       ‘Œ c}«      S c c}w rH   )r	   rM   r@   rY   rS   s     r9   rY   z%OrderedSetVariable.as_python_constant�  s,   € Ü¸d¿n¹nÖM¸˜1Ÿ4™4×2Ñ2Õ4ÒMÓNÐNùÒMó   ”!<c                 ó   — t         S rH   r   rL   s    r9   rW   zOrderedSetVariable.python_type�  r  r:   c                 ó   — t        «       S rH   )r  rL   s    r9   rÖ   z"OrderedSetVariable.python_type_var”  s   € Ü&Ó(Ð(r:   Nc                 ó2  ‡— ‰j                  ˆfd„«       ‰j                  | j                  D �cg c]  }|j                  ‘Œ c}«       ‰j	                  t        dt        | j                  «      ¬«      «       ‰j                  t        dd«      «       y c c}w )Nc                  ó(   •— ‰ j                  dd«      S )Nztorch.utils._ordered_setr	   )Úload_import_from©rb   s   €r9   ú<lambda>z0OrderedSetVariable.reconstruct.<locals>.<lambda>™  s   ø€ �G×,Ñ,Ð-GÈÓV€ r:   Ú
BUILD_LISTr\   r   F)	Úadd_push_nullr^   rM   r@   r_   r   r`   Úextend_outputr   ra   s    ` r9   rd   zOrderedSetVariable.reconstruct—  so   ø€ Ø×ÑÛVô	
ð 	�‰ t§~¡~Ö6 !˜Ÿ›Ò6Ô7Ø×ÑÔ0°Ä3ÀtÇ~Á~ÓCVÔWÔXØ×ÑÔ2°1°eÓ<Õ=ùò 7s   ¯Br÷   )rù   rú   rû   r   rC   r	   r   rY   r�   rW   r  rÖ   rd   r*   r:   r9   r  r  €  sG   „ ð
;˜Có 
;ðO J¨s¡Oó Oð˜T *¨S¡/Ñ2ó ð)Ð!8ó )ô>r:   r  c            
       óÆ   ‡ — e Zd ZeZdefd„Zeded   fd„«       Z	de
fd„Zdd„Zdefd„Zdd„Zd	d
dedee   deeef   def
ˆ fd„Zded   fd„Zdefd„Zdedefd„Zˆ xZS )ÚFrozensetVariabler&   c                 ó0  — | j                   syg }| j                   D ]b  }t        |j                  d«      rt        |j                  j                  «      n|j                  j                  «       }|j                  |«       Œd ddj                  |«      z   dz   S )Nzfrozenset()r<   r=   r>   r?   r  r  s       r9   rC   zFrozensetVariable.debug_repr¤  s{   € Ø�zŠzØ à!ˆEØ—Z‘Zò &�ä(/°·±°gÔ(>”D˜Ÿ™Ÿ™Ô$ÀAÇDÁDÇOÁOÓDUð ð —‘˜WÕ%ð	&ð
 ˜Ÿ™ %›Ñ(¨3Ñ.Ð.r:   r   c                 óH   — t        | j                  j                  «       «      S rH   rI   rL   s    r9   rM   zFrozensetVariable.set_items°  rN   r:   c                 ó   — t         S rH   )Ú	frozensetrL   s    r9   rW   zFrozensetVariable.python_type´  s   € ÜÐr:   c                 ó4   — t        j                  t        «      S rH   )r   r!   r/  rL   s    r9   rÖ   z!FrozensetVariable.python_type_var·  s   € Ü×(Ñ(¬Ó3Ð3r:   c                 ó‚   — t        | j                  D �ch c]  }|j                  j                  «       ’Œ c}«      S c c}w rH   )r/  rM   r@   rY   rS   s     r9   rY   z$FrozensetVariable.as_python_constantº  s,   € Ü¸T¿^¹^ÖL¸˜!Ÿ$™$×1Ñ1Õ3ÒLÓMÐMùÒLr  c                 ó  ‡— ‰j                  ˆfd„«       ‰j                  | j                  D �cg c]  }|j                  ‘Œ c}«       ‰j	                  t        dt        | j                  «      ¬«      gt        dd«      ¢«       y c c}w )Nc                  óF   •— ‰ j                  ‰ j                  d«      g«      S )Nr/  )r)  Úcreate_load_globalr%  s   €r9   r&  z/FrozensetVariable.reconstruct.<locals>.<lambda>¿  s%   ø€ �G×)Ñ)à×.Ñ.¨{Ó;ðó€ r:   r'  r\   r   F)r(  r^   rM   r@   r)  r   r`   r   ra   s    ` r9   rd   zFrozensetVariable.reconstruct½  sq   ø€ Ø×Ñóô	
ð 	�‰ t§~¡~Ö6 !˜Ÿ›Ò6Ô7Ø×Ñä" <´S¸¿¹Ó5HÔIðä% a¨Ó/ðõ	
ùò 7s   ¯Brz   r    rƒ   r‰   r%   c                 óØ   •— |dv rt        d|› d�«      ‚|dk(  rt        j                  d «      S |dv r't        ‰| �  ||||«      }t        |j                  «      S t        ‰| �  ||||«      S )N©rª   r+   r±   r²   r³   rÈ   úIllegal call_method z on a frozensetr-   )rÆ   r¦   r¥   r§   )ró   r   rP   r,   rå   r+  r$   )r5   rz   rƒ   r‰   r%   rï   r8   s         €r9   rå   zFrozensetVariable.call_methodÍ  s…   ø€ ð ÐIÑIÜÐ!5°d°V¸?ÐKÓLÐLØ�ZÒä#×*Ñ*¨4Ó0Ð0Øð 
ñ 
ô ‘Ñ# B¨¨d°FÓ;ˆAÜ$ Q§W¡WÓ-Ð-Ü‰wÑ" 2 t¨T°6Ó:Ð:r:   Tc                  ó   — y)zB
        Frozensets are immutable and hashable in Python.
        Tr*   rL   s    r9   r‚   z$FrozensetVariable.is_python_hashableã  s   € ð r:   c                 ó4   — t        | j                  «       «      S rH   )ÚhashrY   rL   s    r9   Úget_python_hashz!FrozensetVariable.get_python_hashé  s   € Ü�D×+Ñ+Ó-Ó.Ð.r:   rv   c                 óh   — t        |t        «      xr! | j                  «       |j                  «       k(  S rH   )r.   r   rY   )r5   rv   s     r9   Úis_python_equalz!FrozensetVariable.is_python_equalì  s1   € ä�uœoÓ.ò HØ×'Ñ'Ó)¨U×-EÑ-EÓ-GÑGð	
r:   rø   r÷   )rù   rú   rû   r/  rý   r   rC   r  rJ   rM   r�   rW   rÖ   r   rY   rd   rœ   r   r1   rå   r   r‚   r  r;  Úobjectr  r=  r  r  s   @r9   r+  r+     sÌ   ø„ à€Mð
/˜Có 
/ð ð&˜3Ð0Ñ1ò &ó ð&ð˜Tó ó4ðN Có Nó
ð ;à#ð;ð ð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
õ;ð, G¨D¡Mó ð/ ó /ð
 Vð 
°÷ 
r:   r+  c            
       ó˜   ‡ — e Zd Zdefd„Zdddee   ddfd„Zede	fd„«       Z
defd	„Zde	fd
„Zdddedee   deeef   def
ˆ fd„Zˆ xZS )ÚDictKeySetVariabler&   c                 ó0  — | j                   syg }| j                   D ]b  }t        |j                  d«      rt        |j                  j                  «      n|j                  j                  «       }|j                  |«       Œd ddj                  |«      z   dz   S )Nzdict_keys([])r<   zdict_keys([r>   r  r  r  s       r9   rC   zDictKeySetVariable.debug_reprô  s{   € Ø�zŠzØ"à!ˆEØ—Z‘Zò &�ä(/°·±°gÔ(>”D˜Ÿ™Ÿ™Ô$ÀAÇDÁDÇOÁOÓDUð ð —‘˜WÕ%ð	&ð
 ! 3§8¡8¨E£?Ñ2°TÑ9Ð9r:   rz   r    r‰   Nc                  ó   — y rH   r*   )r5   rz   r‰   s      r9   r—   z-DictKeySetVariable.install_set_contains_guard   s   € ð 	r:   c                 ó   — | j                   S rH   )r$   rL   s    r9   rM   zDictKeySetVariable.set_items  s   € à�z‰zÐr:   c                 ó   — ddl m} |S )Nr
   )Ú	dict_keys)rÌ   rE  )r5   rE  s     r9   rW   zDictKeySetVariable.python_type
  s   € Ý%àÐr:   c                 ó´   — t         j                  | j                  D �ch c]  }|j                  j	                  «       ’Œ c}d «      j                  «       S c c}w rH   )r1   r2   rM   r@   rY   rK   rS   s     r9   rY   z%DictKeySetVariable.as_python_constant  s>   € Ü�}‰}Ø04·±Ö?¨1ˆQ�T‰T×$Ñ$Õ&Ò?Àó
ç
‰$‹&ð	ùÚ?s   ž!Arƒ   r%   c                 óN   •— |dv rt        d|› d�«      ‚t        ‰| �	  ||||«      S )Nr6  r7  z on a dict_keys)ró   r,   rå   )r5   rz   rƒ   r‰   r%   r8   s        €r9   rå   zDictKeySetVariable.call_method  s9   ø€ ð ÐIÑIÜÐ!5°d°V¸?ÐKÓLÐLÜ‰wÑ" 2 t¨T°6Ó:Ð:r:   )rù   rú   rû   r   rC   rœ   r   r—   r  r   rM   r�   rW   rY   r1   rå   r  r  s   @r9   r@  r@  ó  s­   ø„ ð
:˜Có 
:ðØ)ðØ15°oÑ1Fðà	óð ð˜3ò ó ðð˜Tó ð
 Có ð
	;à#ð	;ð ð	;ð �?Ñ#ð		;ð
 �S˜/Ð)Ñ*ð	;ð 
÷	;ñ 	;r:   r@  )3rü   r“   rß   Úcollections.abcr   r   Útypingr   r   r   Útorch.utils._ordered_setr	   Ú r   r   Úbytecode_transformationr   r   rž   r   Úguardsr   r   r4   r   r   r   rÌ   r   r   r   Úbaser   r   Úconstantr   Úhashabler   r   r   Útorch._dynamo.codegenr   Útorch._dynamo.symbolic_convertr    Útorch._dynamo.variables.builtinr!   r#   r  r  r+  r@  r*   r:   r9   ú<module>rT     s˜   ðñó" Û ß .ß .Ñ .å /ç #ß NÝ *ß 0ß IÑ Iß GÑ Gß 3Ý &ß DÑ Dñ Ý/ÝDÝ?ôJ>�/ô J>ôZBU˜oô BUôJ>˜ô >ô@P
˜ô P
ôf*;˜õ *;r:   