Ë
    L²j-â  ã                   ód  — d Z ddlZddlZddlZddlmZmZmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlmZmZmZ ddlmZmZmZmZ dd	lmZmZ dd
lmZmZ ddlmZm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7 erddl8m9Z9 ddl:m;Z; ddl<m=Z=  G d„ de/«      Z> G d„ de/«      Z? G d„ de>«      Z@ G d„ de>«      ZA G d„ de/«      ZB G d„ d eB«      ZC G d!„ d"eB«      ZD G d#„ d$eB«      ZEe3eFz  ZG G d%„ d&ej�                  j’                  eGe/f   «      ZJ G d'„ d(e>«      ZKy))aI  
Dictionary-related variable tracking classes for PyTorch Dynamo.

This module implements variable tracking for different types of dictionary-like objects:
- Regular Python dictionaries (dict)
- Ordered dictionaries (collections.OrderedDict)
- Default dictionaries (collections.defaultdict)
- Dictionary views (keys and values)

These classes are responsible for tracking dictionary operations during graph compilation,
maintaining proper guards for dictionary mutations and key existence checks. They handle
dictionary creation, modification, key/value access, and view operations while ensuring
correct behavior in the compiled code through appropriate guard installation.

The implementation uses a special HashableTracker wrapper to handle
dictionary keys while preserving proper aliasing semantics. Set-related classes live
in sets.py.
é    N)ÚCallableÚIteratorÚSequence)ÚAnyÚLiteralÚTYPE_CHECKINGÚUnion)Ú
MappingKeyé   )Úgraph_break_hintsÚ	polyfillsÚ	variables)Úcreate_call_functionÚcreate_call_methodÚcreate_dup_topÚcreate_instruction)Úraise_observed_exceptionÚunimplemented)ÚGuardBuilderÚinstall_guard)Ú
AttrSourceÚDictGetItemSourceÚis_constant_sourceÚis_from_local_source)Úcmp_name_to_op_mappingÚ
dict_itemsÚ	dict_keysÚdict_valuesÚistypeÚraise_args_mismatché   )ÚAttributeMutationExistingÚAttributeMutationNewÚNO_SUCH_SUBOBJÚValueMutationNewÚVariableTracker)ÚConstantVariable)ÚHashableTrackerÚis_hashableÚraise_unhashable)ÚSetVariable)Ú	PyCodegen)ÚInstructionTranslator)ÚUserFunctionVariablec                   óÜ  ‡ — e Zd ZeZej                  Zej                  Z	dhe
j                  £Zefdee
e
f   dededdfˆ fd„Zdedefd„Zdeeef   fd„Zdefd	„Zdeeef   fd
„Zdeee
f   fd„Zdefd„Zde
defd„Zddddde
dee
   deee
f   de
fd„Zddddde
dee
   deee
f   deedf   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d3d„Z d3d „Z!ddd!e
de
fd"„Z"ddd!e
de
fd#„Z#d!e
de
dz  fd$„Z$d!e
ddfd%„Z%d4d&„Z&ddd'e'e
   ddfd(„Z(ddd)e
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de'e
   fd-„Z+ddde
fd.„Z,ddd+ede-fd/„Z.dede
fˆ fd0„Z/defd1„Z0ddd+efˆ fd2„Z1ˆ xZ2S )5ÚConstDictVariableÚuser_clsÚitemsÚkwargsÚreturnNc           	      ó  •‡— d|v r|j                  d«       d|v r|j                  d«       t        ‰	| �  d	i |¤Ž t        Št	        ˆfd„|j                  «       D «       «      sJ ‚dt        t        df   ddfˆfd„}| j                  |«      } ||j                  «       D ��ci c]  \  }} ||«      |“Œ c}}«      | _        | j                  rt        | j                  «       nd| _        |j                  «       | _        || _        y c c}}w )
NÚoriginal_itemsÚshould_reconstruct_allc              3   ól   •K  — | ]+  \  }}t        |t        ‰f«      xr t        |t        «      –— Œ- y ­w©N)Ú
isinstancer&   )Ú.0ÚxÚvÚHashables      €ú\/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_dynamo/variables/dicts.pyú	<genexpr>z-ConstDictVariable.__init__.<locals>.<genexpr>i   s?   øè ø€ ò 
ñ ��1ô �qœ?¨HÐ5Ó6ò /Ü˜1œoÓ.ó/ñ
ùs   ƒ14Úkeyr(   r4   c                 ó0   •— t        | ‰«      r| S  ‰| «      S r9   )r:   )rA   r>   s    €r?   Úmake_hashablez1ConstDictVariable.__init__.<locals>.make_hashableo   s   ø€ ô % S¨(Ô3�3ÐF¹À#»ÐFó    T© )ÚpopÚsuperÚ__init__r(   Úallr2   r	   r&   Ú_get_dict_cls_from_user_clsÚsourcer   r7   Úcopyr6   r1   )
Úselfr2   r1   r3   rC   Údict_clsr<   r=   r>   Ú	__class__s
           @€r?   rH   zConstDictVariable.__init__W   s  ù€ ð ˜vÑ%Ø�J‰JÐ'Ô(Ø# vÑ-Ø�J‰JÐ/Ô0ä‰ÑÑ"˜6Ò"ä"ˆô ó 
ð Ÿ™›ô
ô 
ð 	
ð 
ð	GÜ”Ð(9Ð9Ñ:ð	Gàõ	Gð
 ×3Ñ3°HÓ=ˆÙ¸u¿{¹{»}×M±t°q¸!™}¨QÓ/°Ñ2ÓMÓNˆŒ
ð 6:·[²[Ô$ T§[¡[Ó1Ñ1Àdð 	Ô#ð $Ÿj™j›lˆÔØ ˆ�ùó Ns   Â#D	
c                 óâ   ‡— t         t        j                  t        j                  fŠ|‰v r|}nt	        ˆfd„|j
                  D «       «      }|‰v sJ |«       ‚|t        j                  u rt         }|S )Nc              3   ó,   •K  — | ]  }|‰v sŒ|–— Œ y ­wr9   rE   )r;   ÚbaseÚaccepted_dict_typess     €r?   r@   z@ConstDictVariable._get_dict_cls_from_user_cls.<locals>.<genexpr>†   s   øè ø€ ò Ø°TÐ=PÒ5P”ñùs   ƒ	�)ÚdictÚcollectionsÚOrderedDictÚdefaultdictÚnextÚ__mro__)rM   r1   rN   rS   s      @r?   rJ   z-ConstDictVariable._get_dict_cls_from_user_cls~   s{   ø€ Ü#¤[×%<Ñ%<¼k×>UÑ>UÐVÐð Ð*Ñ*Ø‰Hô ó Ø!)×!1Ñ!1ôó ˆHð Ð.Ñ.Ð8°Ó8Ð.ð ”{×.Ñ.Ñ.ÜˆHØˆrD   c                 ó¶   — | j                   j                  «       D ��ci c].  \  }}|j                  j                  «       |j                  «       “Œ0 c}}S c c}}w r9   )r2   ÚvtÚas_proxy©rM   Úkr=   s      r?   r\   zConstDictVariable.as_proxy‘   s<   € Ø:>¿*¹*×:JÑ:JÓ:L×M±$°!°Q�—‘—‘“ §¡£Ñ-ÓMÐMùÓMó   ž3Ac                 ó¤  — g }| j                   j                  «       D ]›  \  }}t        |j                  d«      rt        |j                  j                  «      n|j                  j                  «       }t        |d«      rt        |j                  «      n|j                  «       }|j                  |› d|› �«       Œ� ddj                  |«      z   dz   S )NÚvaluez: ú{ú, ú})r2   Úhasattrr[   Úreprra   Ú
debug_reprÚappendÚjoin©rM   r2   r^   r=   Úkey_strÚval_strs         r?   rg   zConstDictVariable.debug_repr”   s£   € ØˆØ—J‘J×$Ñ$Ó&ò 	2‰DˆAˆqÜ*1°!·$±$¸Ô*@”d˜1Ÿ4™4Ÿ:™:Ô&ÀaÇdÁdÇoÁoÓFWˆGÜ'.¨q°'Ô':”d˜1Ÿ7™7”mÀÇÁÃˆGØ�L‰L˜G˜9 B w iÐ0Õ1ð	2ð �T—Y‘Y˜uÓ%Ñ%¨Ñ+Ð+rD   c                 ó¶   — | j                   j                  «       D ��ci c].  \  }}|j                  j                  «       |j                  «       “Œ0 c}}S c c}}w r9   )r2   r[   Úas_python_constantr]   s      r?   rn   z$ConstDictVariable.as_python_constantœ   sP   € ð Ÿ
™
×(Ñ(Ó*÷
á��1ð �D‰D×#Ñ#Ó% q×';Ñ';Ó'=Ñ=ó
ð 	
ùó 
r_   c                 óº   — | j                  «        | j                  j                  «       D ��ci c]   \  }}|j                  j                  «       |“Œ" c}}S c c}}w r9   )Úinstall_dict_keys_match_guardr2   r[   rn   r]   s      r?   Úkeys_as_python_constantz)ConstDictVariable.keys_as_python_constant¢   sE   € Ø×*Ñ*Ô,Ø9=¿¹×9IÑ9IÓ9K×L±°°A�—‘×'Ñ'Ó)¨1Ñ,ÓLÐLùÓLs   ®%Ac                 ó   — | j                   S r9   ©r1   ©rM   s    r?   Úpython_typezConstDictVariable.python_type¦   s   € Ø�}‰}ÐrD   r[   c                 óÊ   — t        |t        «      sJ ‚t        }t        |«      sy ||«      }|| j                  v xr( t        | j                  |   t
        j                  «       S ©NF)r:   r&   r(   r)   r2   r   ÚDeletedVariable)rM   r[   r>   rA   s       r?   Ú__contains__zConstDictVariable.__contains__©   s_   € Ü˜"œoÔ.Ð.Ð.Ü"ˆÜ˜2ŒØÙ�r‹lˆØ�d—j‘jÐ ò 
¬Ø�J‰J�s‰OœY×6Ñ6ó*
ð &
ð 	
rD   Útxr-   Útree_map_fnr.   Úmap_fnÚrestÚtree_map_kwargsc           
      óÂ  — g }|D ]u  }|j                  «       }t        |t        «      r+t        |j                  «      t        | j                  «      k7  r| j                  |||||«      c S |j                  |«       Œw  t        | j                  «      «       }| j                  j	                  «       D ]E  \  }	}
g }|D ]!  }	 |j                  |j                  |	   «       Œ# |
j                  |||||«      ||	<   ŒG |D �	ci c]  }	|	j                  ||	   “Œ }}	| j                  ||dd t        «       ¬«      S # t        $ r | j                  |||||«      cY c c S w xY wc c}	w ©NT)r2   r6   r7   rK   Úmutation_type)Úrealizer:   r0   Úlenr2   Ú_tree_map_fallbackrh   ÚtypeÚKeyErrorÚcall_tree_mapr[   Úcloner%   )rM   rz   r{   r|   r}   r~   Úother_dictsÚ	candidateÚnew_items_hashedÚkey_trackerra   Úsibling_leavesÚupdated_original_itemss                r?   Úcall_tree_map_branchz&ConstDictVariable.call_tree_map_branch³   s›  € ð 02ˆØò 	*ˆIØ!×)Ñ)Ó+ˆIÜ˜iÔ):Ô;¼sØ—‘ó@ä�T—Z‘Z“ò@!ð ×.Ñ.Ø˜ V¨T°?óò ð ×Ñ˜yÕ)ð	*ð ,œ4 §
¡
Ó+Ó-ÐØ"&§*¡*×"2Ñ"2Ó"4ò 	ÑˆK˜Ø46ˆNØ(ò �	ðØ"×)Ñ)¨)¯/©/¸+Ñ*FÕGðð -2×,?Ñ,?ØØØØØó-Ð˜[Ò)ð	ð&  0ö"
àð �N‰NÐ,¨[Ñ9Ñ9ð"
Ðð "
ð
 �z‰zØ"Ø1Ø#'ØÜ*Ó,ð ó 
ð 	
øô#  ò Ø×2Ñ2Ø˜K¨°°óö ðüò"
s   Â?D4Ã=EÄ4EÅEÚkeypath.c                 ó  — g }|D ]v  }|j                  «       }t        |t        «      r+t        |j                  «      t        | j                  «      k7  r| j                  ||||||«      c S |j                  |«       Œx  t        | j                  «      «       }	| j                  j	                  «       D ]o  \  }
}g }|D ]!  }	 |j                  |j                  |
   «       Œ# |
j                  j                  «       }|t        |«      fz   }|j                  ||||||«      |	|
<   Œq |	D �
ci c]  }
|
j                  |	|
   “Œ }}
| j                  |	|dd t        «       ¬«      S # t        $ r | j                  ||||||«      cY c c S w xY wc c}
w r€   )r‚   r:   r0   rƒ   r2   Ú_tree_map_with_path_fallbackrh   r…   r†   r[   rn   r
   Úcall_tree_map_with_pathrˆ   r%   )rM   rz   r{   r|   r}   r~   r�   r‰   rŠ   r‹   rŒ   ra   r�   Ú	key_constÚchild_keypathrŽ   s                   r?   Úcall_tree_map_with_path_branchz0ConstDictVariable.call_tree_map_with_path_branchå   sÆ  € ð 02ˆØò 	*ˆIØ!×)Ñ)Ó+ˆIÜ˜iÔ):Ô;¼sØ—‘ó@ä�T—Z‘Z“ò@!ð ×8Ñ8Ø˜ V¨T°?ÀGóò ð ×Ñ˜yÕ)ð	*ð ,œ4 §
¡
Ó+Ó-ÐØ"&§*¡*×"2Ñ"2Ó"4ò 	ÑˆK˜Ø46ˆNØ(ò �	ðØ"×)Ñ)¨)¯/©/¸+Ñ*FÕGðð $Ÿ™×9Ñ9Ó;ˆIØ#¤z°)Ó'<Ð&>Ñ>ˆMØ,1×,IÑ,IØØØØØØó-Ð˜[Ò)ð	ð,  0ö"
àð �N‰NÐ,¨[Ñ9Ñ9ð"
Ðð "
ð
 �z‰zØ"Ø1Ø#'ØÜ*Ó,ð ó 
ð 	
øô)  ò Ø×<Ñ<Ø˜K¨°°Èóö ðüò"
s   Ã EÄ(FÅFÆFc                 óV   — t        d„ | j                  j                  «       D «       «      S )Nc              3   óR   K  — | ]  }t        |t        j                  «       –— Œ! y ­wr9   )r:   r   rx   )r;   r<   s     r?   r@   z(ConstDictVariable.len.<locals>.<genexpr>  s%   è ø€ ò 
Ø=>”
˜1œi×7Ñ7Ó8Ô8ñ
ùs   ‚%')Úsumr2   Úvaluesrt   s    r?   rƒ   zConstDictVariable.len  s)   € Üñ 
ØBFÇ*Á*×BSÑBSÓBUô
ó 
ð 	
rD   c                 óx   ‡ — ‰ j                   xs, t        ˆ fd„‰ j                  j                  «       D «       «      S )Nc              3   óŽ   •K  — | ]<  \  }}‰j                  ‰j                  j                  |j                  «      |«      –— Œ> y ­wr9   )Úis_new_itemr6   Úgetr[   )r;   rA   ra   rM   s      €r?   r@   z2ConstDictVariable.has_new_items.<locals>.<genexpr>!  s?   øè ø€ ò 2
á��Uð ×Ñ˜T×0Ñ0×4Ñ4°S·V±VÓ<¸e×Dñ2
ùs   ƒAA)r7   Úanyr2   rt   s   `r?   Úhas_new_itemszConstDictVariable.has_new_items   s7   ø€ Ø×*Ñ*ò 
¬có 2
à"Ÿj™j×.Ñ.Ó0ô2
ó /
ð 	
rD   ra   Úotherc                 óÚ   — |rS|j                  «       rC|j                  «       r3t        |j                  «       «      t        |j                  «       «      k7  S t        |«      t        |«      k7  S r9   )Úis_realizedÚidr‚   )rM   ra   r¡   s      r?   r�   zConstDictVariable.is_new_item&  sQ   € ñ �U×&Ñ&Ô(¨U×->Ñ->Ô-@Ü�e—m‘m“oÓ&¬"¨U¯]©]«_Ó*=Ñ=Ð=Ü�%‹yœB˜u›IÑ%Ð%rD   c                 óJ  — d}| j                   j                  «       D ]h  \  }}| j                  j                  |j                  «      }| j	                  ||«      s| j
                  sŒJ ||j                  «        ||«       |dz  }Œj |j                  t        d|¬«      «       y )Nr   r!   Ú	BUILD_MAP©Úarg)r2   r6   rž   r[   r�   r7   Úappend_outputr   )rM   ÚcodegenÚnum_argsrA   ra   Úitems         r?   Úreconstruct_kvs_into_new_dictz/ConstDictVariable.reconstruct_kvs_into_new_dict.  sŒ   € àˆØŸ*™*×*Ñ*Ó,ò 	‰JˆC�à×&Ñ&×*Ñ*¨3¯6©6Ó2ˆDØ×Ñ  eÔ,°×0KÓ0KÙ˜Ÿ™”Ù˜”Ø˜A‘‘ð	ð 	×ÑÔ0°À(ÔKÕLrD   c                 ó"  ‡— | j                   t        j                  u rì‰j                  ˆfd„«       | j	                  «       r›‰j                  g t        dd«      ¢t        «       ‘«       ‰j                  | «       ‰j                  t        «       «       ‰j                  d«       | j                  ‰«       ‰j                  g t        d«      ¢t        d«      ‘«       y | j                  ‰«       ‰j                  t        dd«      «       y | j	                  «       re‰j                  t        dd¬«      t        «       g«       ‰j                  | «       | j                  ‰«       ‰j                  t        d	d¬«      «       y | j                  ‰«       y )
Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )NrV   ©Úextend_outputÚcreate_load_python_modulerU   Úcreate_load_attr©rª   s   €r?   ú<lambda>z/ConstDictVariable.reconstruct.<locals>.<lambda>>  s3   ø€ ˜×-Ñ-à×9Ñ9¼+ÓFØ×0Ñ0°Ó?ðó€ rD   r   FÚupdater!   ÚPOP_TOPr¦   r§   ÚDICT_UPDATE)r1   rU   rV   Úadd_push_nullÚ_contains_self_referencer±   r   r   Ú	add_cacher©   Úload_methodr­   r   r   ©rM   rª   s    `r?   ÚreconstructzConstDictVariable.reconstruct:  sf  ø€ Ø�=‰=œK×3Ñ3Ñ3à×!Ñ!óôð ×,Ñ,Ô.Ø×%Ñ%ðÜ-¨a°Ó7ðä&Ó(ðôð ×!Ñ! $Ô'à×%Ñ%¤nÓ&6Ô7Ø×#Ñ# HÔ-Ø×2Ñ2°7Ô;Ø×%Ñ%ðÜ+¨AÓ.ðä*¨9Ó5ðõð ×2Ñ2°7Ô;Ø×%Ñ%Ô&:¸1¸eÓ&DÕEà×,Ñ,Ô.Ø×%Ñ%ä*¨;¸AÔ>Ü&Ó(ðôð ×!Ñ! $Ô'Ø×2Ñ2°7Ô;Ø×%Ñ%Ô&8¸ÈAÔ&NÕOð ×2Ñ2°7Õ;rD   r¨   c                 óx   — t        |«      }|| j                  vrt        t        ||g¬«       | j                  |   S )N©Úargs)r(   r2   r   r†   )rM   rz   r¨   rA   s       r?   Ú'getitem_const_raise_exception_if_absentz9ConstDictVariable.getitem_const_raise_exception_if_absenti  s6   € ô ˜cÓ"ˆØ�d—j‘jÑ Ü$¤X¨r¸¸Õ>Ø�z‰z˜#‰ÐrD   c                 óÌ   — t        |«      }|| j                  vr=d|j                  › d�}t        dd|j                  › �|dgt        j
                  ¢¬«       | j                  |   S )NzDictionary key z not found during tracingzkey not found in dictzKey z>Check if the key exists in the dictionary before accessing it.©Úgb_typeÚcontextÚexplanationÚhints)r(   r2   ra   r   r   Ú
USER_ERROR)rM   rz   r¨   rA   Úmsgs        r?   Úgetitem_constzConstDictVariable.getitem_constq  so   € ô ˜cÓ"ˆØ�d—j‘jÑ Ø# C§I¡I ;Ð.GÐHˆCÜØ/Ø˜sŸy™y˜kÐ*ØàTðä&×1Ñ1ðõ	ð �z‰z˜#‰ÐrD   c                 óT   — t        |«      }|| j                  vry | j                  |   S r9   )r(   r2   )rM   r¨   rA   s      r?   Úmaybe_getitem_constz%ConstDictVariable.maybe_getitem_const‚  s)   € Ü˜cÓ"ˆØ�d—j‘jÑ ØØ�z‰z˜#‰ÐrD   c                 ó,  — || v sJ ‚t        |«      }t        | j                  j                  «       «      j	                  |«      }t        | j
                  j                  «       «      |   }t        |t        j                  «      r|j                  «        y y r9   )
r(   Útupler2   ÚkeysÚindexr6   r:   r   ÚLazyVariableTrackerr‚   )rM   r¨   rA   rÑ   Úoriginal_key_vts        r?   Úrealize_key_vtz ConstDictVariable.realize_key_vtˆ  sx   € à�d‰{Ðˆ{Ü˜cÓ"ˆÜ�d—j‘j—o‘oÓ'Ó(×.Ñ.¨sÓ3ˆÜ × 3Ñ 3× 8Ñ 8Ó :Ó;¸EÑBˆÜ�o¤y×'DÑ'DÔEØ×#Ñ#Õ%ð FrD   c                 ón   — | j                   r)t        | j                  t        j                  «      «       y y r9   )rK   r   Ú
make_guardr   ÚDICT_KEYS_MATCHrt   s    r?   rp   z/ConstDictVariable.install_dict_keys_match_guard‘  s%   € Ø�;Š;Ü˜$Ÿ/™/¬,×*FÑ*FÓGÕHð rD   rÁ   c           	      ó  — | 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 |d   j                   r(|r| j                  |d   «       y | j                  «        y y )Nr   )rA   )rK   ÚoutputÚside_effectsÚis_modifiedÚis_python_constantr…   ÚCONTAINS_GUARDÚNOT_CONTAINS_GUARDr   rÖ   Ú	functoolsÚpartialrn   rÔ   rp   )rM   rz   rÁ   ÚcontainsÚguard_fns        r?   Úinstall_dict_contains_guardz-ConstDictVariable.install_dict_contains_guard•  sÝ   € ð" �{Š{Øà�9‰9×!Ñ!×-Ñ-¨dÔ3Øà˜‘7˜d�?ˆØ�‰7�>‰>Ð! d¨1¡g×&@Ñ&@Ô&Bá-5”�T“
×)Ò)¼4À»:×;XÑ;Xð ô Ø—‘Ü×%Ñ%Ø Ø  ™G×6Ñ6Ó8ôóõð �!‰W�^Š^ÙØ×#Ñ# D¨¡GÕ,à×2Ñ2Õ4ð	 rD   rA   c                 ó&   — | j                  ||«      S r9   )rÂ   ©rM   rz   rA   s      r?   Úmp_subscript_implz#ConstDictVariable.mp_subscript_impl¿  s   € ð ×;Ñ;¸BÀÓDÐDrD   Únamec           
      ó(  •— ddl m} ddlm} t        }|dk(  rz |j
                  |t        g|¢­i |¤Ž}|j                  j                  j                  | «       | j                  j                  |j                  «       t        j                  d «      S |dk(  r€|s|r&t        ||dt        |«      › dt        |«      › d�«       | j!                  «        | j"                  r/|j                  j$                  j'                  | j"                  «       t)        | «      S |d	k(  r{t        |«      rt        ||d
t        |«      › d�«       | j!                  «        | j"                  r/|j                  j$                  j'                  | j"                  «       t+        | «      S |dk(  r”|s|r&t        ||dt        |«      › dt        |«      › d�«       | j!                  «        | j"                  r/|j                  j$                  j'                  | j"                  «       |s|rt-        t.        |«       t1        | «      S |dk(  rn| j!                  «        |s|r&t        ||dt        |«      › dt        |«      › d�«       | j3                  | j                  j5                  «       t7        «       d ¬«      S |dk(  rÎ| j9                  «       r¾|xr t;        |d   «      }	|	st=        |d   |«       | j!                  «        |st        |«      dk7  r&t        ||dt        |«      › dt        |«      › d�«       |j                  j                  j                  | «       |d   | j                   ||d   «      <   t        j                  d «      S |dk(  r«| j9                  «       r›|xr t;        |d   «      }	|	ru| j!                  «        d| _        |j                  j                  j                  | «       | j                  jA                   ||d   «      «       t        j                  d «      S tB        ‰| �‰  ||||«      S |dk(  r t        |«      dvrt        ||dt        |«      › d�«       |xr t;        |d   «      }	|	st=        |d   |«       |d   | vr:| jG                  ||«       t        |«      dk(  rt        j                  d «      S |d   S | jI                  ||d   «      S |dk(  ræ| j9                  «       rÖt        |«      dvrt        ||dt        |«      › d�«       |xr t;        |d   «      }	|	st=        |d   |«       |d   | vr5| jG                  ||«       t        |«      dk(  rt-        tJ        |«       |d   S d| _        |j                  j                  j                  | «       | j                  jM                   ||d   «      «      S |dk(  �r²| j9                  «       �r¡tO        | jP                  t        «      r;tO        | jP                  tR        jT                  «      st        |«      rt        ||«       | j                  st-        tJ        |dg¬«       | jP                  tR        jT                  u r§t        |«      dk(  sd|v r•t        |«      dk(  r'|d   jW                  «       r|d   jY                  «       }
n@|j[                  d«      x}r!|jW                  «       r|jY                  «       }
nt        ||«       | j                  j]                  
¬«      \  }}n| j                  j]                  «       \  }}d| _        |j                  j                  j                  | «       t_        j`                  |jb                  |g«      S |dk(  r…|s|r&t        ||dt        |«      › dt        |«      › d�«       d| _        |j                  j                  j                  | «       | j                  je                  «        t        j                  d «      S |dk(  �rU| j9                  «       �rD| j!                  «        t        |«      dk(  }t        |«      dkD  }|s|�r|j                  j                  j                  | «       |rktg        |d   th        «      r|d   j!                  «        |d   }n|j                  |t        |d   «      }| j                  j                  |j                  «       |rX|j                  «       D ��ci c]"  \  }} |tk        jl                  ||«      «      |“Œ$ }}}| j                  j                  |«       t        j                  d «      S tB        ‰| �‰  ||||«      S |d k(  rƒt        |«      s&t        ||d!t        |«      › dt        |«      › d�«       |xr t;        |d   «      }	|	st=        |d   |«       | jG                  ||«       |d   | v }tk        jl                  ||«      S |d"k(  �r-| j9                  «       �rt        |«      dvr&t        ||d#t        |«      › dt        |«      › d�«       |xr t;        |d   «      }	|	st=        |d   |«       | j!                  «        |st        |«      dkD  r&t        ||d$t        |«      › dt        |«      › d�«       | jo                  |d   «      }|�|S t        |«      dk(  rt        j                  d «      }n|d   }|j                  j                  j                  | «       || j                   ||d   «      <   |S |d%k(  r÷| j!                  «        |j                  j                  j                  | «       |d   | vrt-        tJ        |«       d}
t        |«      dk(  r&|d   jW                  «       r|d   jY                  «       }
|r6d|v r2|d   jW                  «       r|j[                  d«      jY                  «       }
 ||d   «      }| j                  jq                  ||
¬«       t        j                  d «      S |d&k(  rnts        | th        «      r^t        |«      dk7  rt        ||d't        |«      › d�«       |j                  |tt        jv                  «      jy                  || |d   gi «      S |d(k(  r3tk        jl                  || jE                  |d&||«      jz                   «      S |d)k(  �r©t        |«      dk7  rt        ||d't        |«      › d�«       |d   }ts        |th        t^        j|                  t^        j~                  f«      �rtg        |t^        j|                  «      r6|j€                  €J ‚tg        |j€                  th        «      sJ ‚|j€                  }| jP                  t        ur| jP                  }| }n|jP                  }|}|j!                  «        |j3                  | j                  j5                  «       t7        «       d |¬*«      }|d   j!                  «        |j                  j                  |d   j                  «       |S t-        t.        |d+| jƒ                  «       j„                  › d,|jƒ                  «       j„                  › d-�g¬«       y |d.k(  r| jE                  |d||«       | S |d/k(  rwdd0lCmD} | j"                  rDt‹        | j"                  «      s/|j                  j$                  j'                  | j"                  «        || j�                  |«      t7        «       ¬1«      S tB        ‰| �‰  ||||«      S c c}}w )2Nr!   )ÚDictBuiltinVariable)ÚSourcelessBuilderrH   r2   z0 args and 0 kwargsz
 args and z kwargsrÐ   z0 argsú argsrš   rL   )r2   r�   rK   Ú__setitem__r   r   z2 args and 0 kwargsÚ__delitem__Trž   )r!   r   z1 or 2 argsrF   Úpopitemzpopitem(): dictionary is emptyrÀ   Úlast)rï   Úclearr¶   ry   zmore than 1 args and 0 kwargsÚ
setdefaultz1 or 2 args and 0 kwargszat most 2 args and 0 kwargsÚmove_to_endÚ__eq__ú1 argsÚ__ne__Ú__or__)r2   r�   rK   r1   z$unsupported operand type(s) for |: 'z'and 'ú'Ú__ior__Ú__iter__©ÚListIteratorVariable©r�   )GÚ ré   Úbuilderrê   r(   Úcall_custom_dictrT   rÙ   rÚ   Úmutationr2   r¶   r'   Úcreater    rƒ   rp   rK   Úguard_on_key_orderÚaddÚDictItemsVariableÚDictKeysVariabler   Ú	TypeErrorÚDictValuesVariablerˆ   rL   r%   Ú
is_mutabler)   r*   r7   rí   rG   Úcall_methodrã   rË   r†   rF   Ú
issubclassr1   rU   rV   rÜ   rn   rž   rî   r   ÚTupleVariabler[   rð   r:   r0   r&   ÚbuildrÍ   rò   r   r   Údict___eq__Úcall_functionra   ÚUserDefinedDictVariableÚDefaultDictVariableÚ_base_vtru   Ú__name__Úlistsrû   r   Úunpack_var_sequence)rM   rz   rç   rÁ   r3   ré   rê   r>   Útemp_dict_vtÚarg_hashablerï   r=   r^   Úhas_argÚ
has_kwargsÚdict_vtÚkwargs_hashablerá   ra   r<   rA   r¡   r1   Úto_cpyÚnew_dict_vtrû   rO   s                             €r?   r	  zConstDictVariable.call_methodÈ  sj  ø€ õ 	*Ý.ä"ˆà�:ÒØ?Ð.×?Ñ?Ø”DðØòØ#)ñˆLð �I‰I×"Ñ"×+Ñ+¨DÔ1Ø�J‰J×Ñ˜l×0Ñ0Ô1Ü#×*Ñ*¨4Ó0Ð0Ø�WŠ_Ù‘vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð ×.Ñ.Ô0Ø�{Š{Ø—	‘	×,Ñ,×0Ñ0°·±Ô=Ü$ TÓ*Ð*Ø�VŠ^Ü�4ŒyÜ# B¨¨h¼3¸t»9¸+ÀUÐ8KÔLØ×.Ñ.Ô0Ø�{Š{Ø—	‘	×,Ñ,×0Ñ0°·±Ô=Ü# DÓ)Ð)Ø�XÒÙ‘vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð ×.Ñ.Ô0Ø�{Š{Ø—	‘	×,Ñ,×0Ñ0°·±Ô=Ù‘vÜ(¬°BÔ7Ü% dÓ+Ð+Ø�VŠ^Ø×.Ñ.Ô0Ù‘vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð —:‘:Ø—j‘j—o‘oÓ'Ô7GÓ7IÐRVð ó ð ð �]Ò" t§¡Ô'8ØÒ8¤K°°Q±Ó$8ˆLÙÜ   a¡¨"Ô-à×.Ñ.Ô0Ùœ˜T› ašÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð �I‰I×"Ñ"×+Ñ+¨DÔ1Ø,0°©GˆD�J‰J‘x  Q¡Ó(Ñ)Ü#×*Ñ*¨4Ó0Ð0Ø�]Ò" t§¡Ô'8ØÒ8¤K°°Q±Ó$8ˆLÙØ×2Ñ2Ô4Ø.2�Ô+Ø—	‘	×&Ñ&×/Ñ/°Ô5Ø—
‘
×&Ñ&¡x°°Q±Ó'8Ô9Ü'×.Ñ.¨tÓ4Ð4ä‘wÑ*¨2¨t°T¸6ÓBÐBØ�UŠ]Ü�4‹y Ñ&Ü# B¨¨mÄÀDÃ	¸{È%Ð=PÔQàÒ8¤K°°Q±Ó$8ˆLÙÜ   a¡¨"Ô-à�A‰w˜dÑ"Ø×0Ñ0°°TÔ:Ü�t“9 ’>ä+×2Ñ2°4Ó8Ð8Ø˜A‘w�à×%Ñ% b¨$¨q©'Ó2Ð2Ø�UŠ]˜tŸ™Ô0Ü�4‹y Ñ&Ü# B¨¨mÄÀDÃ	¸{È%Ð=PÔQàÒ8¤K°°Q±Ó$8ˆLÙÜ   a¡¨"Ô-à�A‰w˜dÑ"à×0Ñ0°°TÔ:Ü�t“9 ’>ä,¬X°rÔ:Ø˜A‘w�à*.ˆDÔ'Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø—:‘:—>‘>¡(¨4°©7Ó"3Ó4Ð4Ø�YÓ 4§?¡?Õ#4ä˜4Ÿ=™=¬$Ô/Ü" 4§=¡=´+×2IÑ2IÔJÜ˜”Iä# B¨Ô-à—:’:Ü(ÜØà8ðõð �}‰}¤× 7Ñ 7Ñ7Ü�D“	˜Q’ &¨FÑ"2ä�t“9 ’> d¨1¡g×&@Ñ&@Ô&BØ ™7×5Ñ5Ó7‘DØ!Ÿ:™: fÓ-Ð-�aÐ-°1×3GÑ3GÔ3IØ×/Ñ/Ó1‘Dä'¨¨DÔ1Ø—z‘z×)Ñ)¨tÐ)Ó4‘�‘1à—z‘z×)Ñ)Ó+‘��1à*.ˆDÔ'Ø�I‰I×"Ñ"×+Ñ+¨DÔ1ä×*Ñ*¨A¯D©D°!¨9Ó5Ð5Ø�WŠ_Ù‘vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð +/ˆDÔ'Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�J‰J×ÑÔÜ#×*Ñ*¨4Ó0Ð0Ø�XÓ $§/¡/Õ"3ð ×.Ñ.Ô0Ü˜$“i 1‘nˆGÜ˜V› q™ˆJÙš*Ø—	‘	×&Ñ&×/Ñ/°Ô5Ùä! $ q¡'Ô+<Ô=ð ˜Q™×=Ñ=Ô?Ø"& q¡'™à"5×"FÑ"FØ¤ d¨1¡gó#˜ð —J‘J×%Ñ% g§m¡mÔ4Ùð %+§L¡L£N÷'á ˜A˜qñ !¤×!6Ñ!6°r¸1Ó!=Ó>ÀÑAð'�Oñ 'ð —J‘J×%Ñ% oÔ6Ü'×.Ñ.¨tÓ4Ð4ä‘wÑ*¨2¨t°T¸6ÓBÐBØ�^Ò#Ü�t”9Ü#ØØØ3Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð  Ò8¤K°°Q±Ó$8ˆLÙÜ   a¡¨"Ô-à×,Ñ,¨R°Ô6Ø˜A‘w $�ˆHÜ"×(Ñ(¨¨XÓ6Ð6Ø�\Ó! d§o¡oÕ&7Ü�4‹y Ñ&Ü#ØØØ.Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð  Ò8¤K°°Q±Ó$8ˆLÙÜ   a¡¨"Ô-à×.Ñ.Ô0Ùœ˜T› QšÜ#ØØØ1Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð ×,Ñ,¨T°!©WÓ5ˆEØÐ Ø�ä�t“9 ’>Ü(×/Ñ/°Ó5‘Aà˜Q™�AØ—	‘	×&Ñ&×/Ñ/°Ô5Ø01�—
‘
™8 D¨¡GÓ,Ñ-Ø�Ø�]Ò"Ø×.Ñ.Ô0Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�A‰w˜dÑ"Ü(¬°2Ô6àˆDÜ�4‹y˜AŠ~ $ q¡'×"<Ñ"<Ô">Ø˜A‘w×1Ñ1Ó3�á˜& FÑ*¨v°f©~×/PÑ/PÔ/RØ—z‘z &Ó)×<Ñ<Ó>�á˜4 ™7Ó#ˆCØ�J‰J×"Ñ" 3¨TÐ"Ô2Ü#×*Ñ*¨4Ó0Ð0Ø�XÒ¤&ØÔ#ô#
ô �4‹y˜AŠ~Ü# B¨¨h¼3¸t»9¸+ÀUÐ8KÔLà$×+Ñ+¨B´	×0EÑ0EÓF×TÑTØ�T˜4 ™7�O Róð ð �XÒÜ"×(Ñ(ØØ×$Ñ$ R¨°4¸Ó@×FÑFÐFóð ð �XÓÜ�4‹y˜AŠ~Ü# B¨¨h¼3¸t»9¸+ÀUÐ8KÔLØ˜‘GˆEô& Øä%Ü×5Ñ5Ü×1Ñ1ðõô ˜e¤Y×%FÑ%FÔGØ Ÿ>™>Ð5Ð5Ð5Ü% e§n¡nÔ6GÔHÐHÐHØ!ŸN™N�Eð
 —=‘=¬Ñ,Ø#Ÿ}™}�HØ!‘Fà$Ÿ~™~�HØ"�Fà×4Ñ4Ô6Ø$Ÿl™lØŸ*™*Ÿ/™/Ó+Ü"2Ó"4ØØ%ð	 +ó �ð �Q‘×5Ñ5Ô7Ø×!Ñ!×(Ñ(¨¨a©¯©Ô7Ø"Ð"ä(ÜØà>¸t×?OÑ?OÓ?Q×?ZÑ?ZÐ>[ð \ Ø %× 1Ñ 1Ó 3× <Ñ <Ð=¸Qð@ðöð �YÒØ×Ñ˜R ¨4°Ô8ØˆKØ�ZÒÝ3à�{Š{Ô#5°d·k±kÔ#BØ—	‘	×,Ñ,×0Ñ0°·±Ô=Ù'Ø×(Ñ(¨Ó,Ô<LÓ<Nôð ô ‘7Ñ& r¨4°°vÓ>Ð>ùóM's   ã('|c                 ót   — | j                  «        | j                  D �cg c]  }|j                  ‘Œ c}S c c}w r9   )rp   r2   r[   )rM   rz   r<   s      r?   r  z%ConstDictVariable.unpack_var_sequence8  s*   € Ø×*Ñ*Ô,Ø"Ÿj™jÖ)˜�—“Ò)Ð)ùÒ)s   Ÿ5c                 ót   — | j                  «        t        j                  |t        | j                  «      «      S )z Mapping length for dict objects.)rp   r&   r  rƒ   r2   ©rM   rz   s     r?   Ú	mp_lengthzConstDictVariable.mp_length<  s)   € à×*Ñ*Ô,Ü×$Ñ$ R¬¨T¯Z©Z«Ó9Ð9rD   c                 ó’  ‡ — t        ˆ fd„t        t        j                  t        j                  fD «       «      rRt        ‰ j                  |«      rt        j                  d«      S ‰ j                  t        u rt        j                  d«      S d‰ j                  › d�}t        dd‰ j                  › �|dgt        j                  ¢¬	«       y )
Nc              3   ó:   •K  — | ]  }‰j                   |u –— Œ y ­wr9   rs   )r;   ÚtrM   s     €r?   r@   z5ConstDictVariable.call_obj_hasattr.<locals>.<genexpr>F  s"   øè ø€ ò 
àð �M‰M˜QÔñ
ùs   ƒTFzhasattr on z is not supportedzunsupported hasattr operationzClass z+Consider using a regular dictionary insteadrÄ   )rŸ   rT   rU   rV   rW   re   r1   r'   r  r   r   ÚSUPPORTABLE)rM   rz   rç   rÊ   s   `   r?   Úcall_obj_hasattrz"ConstDictVariable.call_obj_hasattrA  s°   ø€ ô
 ó 
äœK×3Ñ3´[×5LÑ5LÐMô
ô 
ô �t—}‘} dÔ+Ü'×.Ñ.¨tÓ4Ð4Ø�}‰}¤Ñ$Ü'×.Ñ.¨uÓ5Ð5à˜DŸM™M˜?Ð*;Ð<ˆÜØ3Ø˜TŸ]™]˜OÐ,Øà=ðä"×.Ñ.ðö		
rD   c                 óB   •— | j                  «        t        ‰| �  di |¤ŽS ©NrE   )rp   rG   rˆ   )rM   r3   rO   s     €r?   rˆ   zConstDictVariable.cloneZ  s!   ø€ Ø×*Ñ*Ô,Ü‰w‰}Ñ&˜vÑ&Ð&rD   c                  ó   — y)zP
        Dictionaries are mutable and therefore not hashable in Python.
        FrE   rt   s    r?   Úis_python_hashablez$ConstDictVariable.is_python_hashable^  ó   € ð rD   c                 óv   •— |dk(  r$t        j                  || j                  «       «      S t        ‰| �  ||«      S )NrO   )r&   r  ru   rG   Úvar_getattr©rM   rz   rç   rO   s      €r?   r,  zConstDictVariable.var_getattrd  s9   ø€ Ø�;ÒÜ"×(Ñ(¨¨T×-=Ñ-=Ó-?Ó@Ð@Ü‰wÑ" 2 tÓ,Ð,rD   ©rª   r,   r4   N©r4   N)3r  Ú
__module__Ú__qualname__rT   Ú_cpython_typer   ÚDICT_CONTAINSrÝ   ÚDICT_NOT_CONTAINSrÞ   r&   Ú_nonvar_fieldsr…   r   rH   rJ   r\   Ústrrg   rn   rq   ru   Úboolry   r   r�   rÏ   r–   Úintrƒ   r    r�   r­   r¾   rÂ   rË   rÍ   rÔ   rp   Úlistrã   ræ   r	  r  r   r'   r%  rˆ   r)  r,  Ú__classcell__©rO   s   @r?   r0   r0   K   sj  ø„ à€Mà!×/Ñ/€NØ%×7Ñ7Ðð 	ðà	×	'Ñ	'ð€Nð ñ%!à�O _Ð4Ñ5ð%!ð ð%!ð ð	%!ð
 
õ%!ðN°Dð ¸Tó ð&N˜$˜s C˜x™.ó Nð,˜Có ,ð
 D¨¨c¨¡Nó 
ðM¨¨c°?Ð.BÑ)Có Mð˜Tó ð
˜ð 
°4ó 
ð0
à#ð0
ð ,ð0
ð  ð	0
ð
 �Ñ'ð0
ð ˜c ?Ð2Ñ3ð0
ð 
ó0
ðd4
à#ð4
ð ,ð4
ð  ð	4
ð
 �Ñ'ð4
ð ˜c ?Ð2Ñ3ð4
ð �s˜C�x‘ð4
ð 
ó4
ðl
�Só 
ð

˜tó 
ð&Ø$ tÑ+ð&Ø4Cð&à	ó&ó
Mó-<ð^Ø)ðØ0?ðà	óðØ)ðØ0?ðà	óð" ð ¸?ÈTÑ;Qó ð& /ð &°dó &óIð(5Ø)ð(5Ø15°oÑ1Fð(5à	ó(5ðTEà#ðEð ðEð 
ó	Eðn?à#ðn?ð ðn?ð �?Ñ#ð	n?ð
 �S˜/Ð)Ñ*ðn?ð 
õn?ð`*Ð&=ð *À$ÀÑBWó *ð:Ð3ð :¸ó :ð

Ø)ð
Ø14ð
à	ó
ð2'˜cð ' oõ 'ð Dó ð-Ð5ð -¸S÷ -ñ -rD   r0   c            
       óÞ   ‡ — e Zd Zej                  Zdededdfˆ fd„Zde	fd„Z
dddee   fd	„Zdd
„Zdd„Zdddedefd„Zdddedee   deeef   def
d„Zdddefd„Zdddedefˆ fd„Zˆ xZS )ÚMappingProxyVariableÚdv_dictr3   r4   Nc                 óV   •— t        ‰| �  di |¤Ž t        |t        «      sJ ‚|| _        y r'  )rG   rH   r:   r0   r>  ©rM   r>  r3   rO   s      €r?   rH   zMappingProxyVariable.__init__o  s+   ø€ Ü‰ÑÑ"˜6Ò"Ü˜'Ô#4Ô5Ð5Ð5Øˆ�rD   c                 ó"   — t         j                  S r9   )ÚtypesÚMappingProxyTypert   s    r?   ru   z MappingProxyVariable.python_typet  s   € Ü×%Ñ%Ð%rD   rz   r-   c                 ó8   — | j                   j                  |«      S r9   )r>  r  r  s     r?   r  z(MappingProxyVariable.unpack_var_sequencew  s   € Ø�|‰|×/Ñ/°Ó3Ð3rD   c                 ó  ‡— | j                   r=d| j                   › d�}t        dd| j                   › �|dgt        j                  ¢¬«       ‰j	                  ˆfd„«        ‰| j
                  «       ‰j                  t        dd	«      «       y )
Nz*Preexisting MappingProxyVariable (source: zS) cannot be reconstructed because the connection to the original dict will be lost.z%mapping proxy cannot be reconstructedúSource: zCUse a mapping proxy constructed in the same `torch.compile` region.rÄ   c                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )NrC  )r±   r²   rB  r³   r´   s   €r?   rµ   z2MappingProxyVariable.reconstruct.<locals>.<lambda>‹  s4   ø€ �G×)Ñ)à×5Ñ5´eÓ<Ø×,Ñ,Ð-?Ó@ðó€ rD   r!   F)rK   r   r   r$  r¹   r>  r±   r   )rM   rª   rÊ   s    ` r?   r¾   z MappingProxyVariable.reconstructz  s”   ø€ à�;Š;à<¸T¿[¹[¸Mð JLð Lð ô Ø?Ø" 4§;¡; -Ð0ØàYðä&×2Ñ2ðõ	ð 	×Ñóô	
ñ 	�—‘ÔØ×ÑÔ2°1°eÓ<Õ=rD   c                 óª   — | j                   rG|j                  j                  j                  «       r"d}t	        dd| j                   › d�|ddg¬«       y y y )Na°  A dict has been modified while we have an existing mappingproxy object. A mapping proxy object, as the name suggest, proxies a mapping object (usually a dict). If the original dict object mutates, it is reflected in the proxy object as well. For an existing proxy object, we do not know the original dict it points to. Therefore, for correctness we graph break when there is dict mutation and we are trying to access a proxy object.z-mapping proxy affected by dictionary mutationrF  z, Dict mutation detectedzNAvoid modifying dictionaries that might be referenced by mapping proxy objectszROr avoid using the mapping proxy objects after modifying its underlying dictionaryrÄ   )rK   rÙ   rÚ   Úhas_existing_dict_mutationr   )rM   rz   rÊ   s      r?   Ú_check_mutation_guardz*MappingProxyVariable._check_mutation_guard•  s\   € Ø�;Š;˜2Ÿ9™9×1Ñ1×LÑLÔNð7ð ô ØGØ" 4§;¡; -Ð/GÐHØàdØhðö	ð Oˆ;rD   rA   c                 ó\   — | j                  |«       | j                  j                  ||«      S r9   )rJ  r>  ræ   rå   s      r?   ræ   z&MappingProxyVariable.mp_subscript_impl«  s)   € ð 	×"Ñ" 2Ô&Ø�|‰|×-Ñ-¨b°#Ó6Ð6rD   rç   rÁ   c                 ó`   — | j                  |«       | j                  j                  ||||«      S r9   )rJ  r>  r	  )rM   rz   rç   rÁ   r3   s        r?   r	  z MappingProxyVariable.call_methodµ  s-   € ð 	×"Ñ" 2Ô&Ø�|‰|×'Ñ'¨¨D°$¸Ó?Ð?rD   c                 ó8   — | j                   j                  |«      S r9   )r>  r   r  s     r?   r   zMappingProxyVariable.mp_length¿  s   € Ø�|‰|×%Ñ% bÓ)Ð)rD   c                 óÄ   •— | j                  «       t        j                  u r0t        j                  ||t        j                  j
                  v «      S t        ‰| �  ||«      S r9   )ru   rB  rC  r&   r  Ú__dict__rG   r%  r-  s      €r?   r%  z%MappingProxyVariable.call_obj_hasattrÂ  sR   ø€ ð ×ÑÓ¤×!7Ñ!7Ñ7Ü"×(Ñ(¨¨T´U×5KÑ5K×5TÑ5TÐ-TÓUÐUÜ‰wÑ'¨¨DÓ1Ð1rD   r.  )rz   r-   r4   N)r  r0  r1  rB  rC  r2  r0   r   rH   r…   ru   r9  r&   r  r¾   rJ  ræ   r6  rT   r	  r   r'   r%  r:  r;  s   @r?   r=  r=  j  sù   ø„ à×*Ñ*€MðÐ 1ð ¸Sð ÀTõ ð
&˜Tó &ð4Ð&=ð 4À$ÀÑBWó 4ó>ó6ð,7à#ð7ð ð7ð 
ó	7ð@à#ð@ð ð@ð �?Ñ#ð	@ð
 �S˜/Ð)Ñ*ð@ð 
ó@ð*Ð3ð *¸ó *ð2Ø)ð2Ø14ð2à	÷2ñ 2rD   r=  c                   ó.   — e Zd Zdd„Zdddee   ddfd„Zy)	ÚNNModuleHooksDictVariabler4   Nc                  ó   — y r9   rE   rt   s    r?   rp   z7NNModuleHooksDictVariable.install_dict_keys_match_guardÌ  ó   € ØrD   rz   r-   rÁ   c                  ó   — y r9   rE   ©rM   rz   rÁ   s      r?   rã   z5NNModuleHooksDictVariable.install_dict_contains_guardÏ  ó   € ð 	rD   r/  )r  r0  r1  rp   r9  r&   rã   rE   rD   r?   rQ  rQ  Ê  s)   „ óðØ)ðØ15°oÑ1Fðà	ôrD   rQ  c                   ó  ‡ — e Zd Zej                  Z	 ddeeef   dededz  de	ddf
ˆ fd„Z
defˆ fd„Zdefˆ fd	„Zed
ed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defˆ fd„Zdd„Zˆ xZS )r  Nr2   r1   Údefault_factoryr3   r4   c                 óŒ   •— t        ‰| �  ||fi |¤Ž |t        j                  u sJ ‚|€t	        j
                  d «      }|| _        y r9   )rG   rH   rU   rW   r'   r  rX  )rM   r2   r1   rX  r3   rO   s        €r?   rH   zDefaultDictVariable.__init__Ø  sK   ø€ ô 	‰Ñ˜ Ñ3¨FÒ3Øœ;×2Ñ2Ñ2Ð2Ð2ØÐ"Ü.×5Ñ5°dÓ;ˆOØ.ˆÕrD   c                 ót   •— | j                   t        t        t        fvr| j                  syt
        ‰| �  «       S rw   )rX  r9  rÏ   rT   r2   rG   rÜ   ©rM   rO   s    €r?   rÜ   z&DefaultDictVariable.is_python_constantå  s1   ø€ ð ×Ñ¬¬e´TÐ':Ñ:À4Ç:Â:ØÜ‰wÑ)Ó+Ð+rD   c                 óz   •— | j                   €J ‚d| j                   j                  «       › dt        ‰| �  «       › d�S )Nzdefaultdict(rc   ú))rX  rg   rG   r[  s    €r?   rg   zDefaultDictVariable.debug_reprì  sF   ø€ Ø×#Ñ#Ð/Ð/Ð/à˜4×/Ñ/×:Ñ:Ó<Ð=¸RÄÁÑ@RÓ@TÐ?UÐUVÐWð	
rD   r¨   c                 óô   — t        | t        j                  t        j                  j                  t        j                  j
                  f«      xs* t        | t        j                  «      xr | j                  d u S r9   )r:   r   ÚBaseBuiltinVariableÚ	functionsÚBaseUserFunctionVariableÚPolyfilledFunctionVariabler'   ra   r§   s    r?   Úis_supported_argz$DefaultDictVariable.is_supported_argò  se   € äØä×-Ñ-Ü×#Ñ#×<Ñ<Ü×#Ñ#×>Ñ>ðó
ò Qô ˜œi×8Ñ8Ó9ÒO¸c¿i¹iÈ4Ð>Oð	QrD   rz   r-   rA   c                 óò   •— || v r| j                  ||«      S | j                  j                  «       rt        t        ||g¬«       y | j                  j                  |g i «      }t        ‰| �  |d||gi «       |S )NrÀ   rì   )rË   rX  Úis_constant_noner   r†   r  rG   r	  )rM   rz   rA   Údefault_varrO   s       €r?   ræ   z%DefaultDictVariable.mp_subscript_implý  sw   ø€ ð �$‰;Ø×%Ñ% b¨#Ó.Ð.à×Ñ×0Ñ0Ô2Ü$¤X¨r¸¸Ö>à×.Ñ.×<Ñ<¸RÀÀRÓHˆKÜ‰GÑ  M°C¸Ð3EÀrÔJØÐrD   rç   rÁ   c                 ó†  •— |dk(  rÃ| j                   r·t        |«      dk7  rt        ||dt        |«      › d�«       t        |d   t        «      rj|d   j
                  dk(  rX| j                  |d   «      rD|j                  j                  j                  | «       |d   | _
        t	        j                  d «      S t        ‰| �5  ||||«      S |dk(  rbt        |«      dk7  rt        ||d	t        |«      › d�«       t        j                  |t         j"                  «      j%                  || |d   gi «      S t        ‰| �5  ||||«      S )
NÚ__setattr__r   z2 argsrë   r   rX  r!   ró   rô   )r  rƒ   r    r   r'   ra   rc  rÙ   rÚ   r   rX  r  rG   r	  r&   r  r   r  r  )rM   rz   rç   rÁ   r3   rO   s        €r?   r	  zDefaultDictVariable.call_method  s.  ø€ ð �=Ò  T§_¢_Ü�4‹y˜AŠ~Ü# B¨¨h¼3¸t»9¸+ÀUÐ8KÔLô �t˜A‘wÔ 0Ô1°d¸1±g·m±mÐGXÒ6XØ×'Ñ'¨¨Q©Ô0Ø—	‘	×&Ñ&×/Ñ/°Ô5Ø'+¨A¡w�Ô$Ü'×.Ñ.¨tÓ4Ð4Ü‘7Ñ& r¨4°°vÓ>Ð>Ø�XÒÜ�4‹y˜AŠ~Ü# B¨¨h¼3¸t»9¸+ÀUÐ8KÔLä"×(Ñ(¨¬Y×-BÑ-BÓC×QÑQØ�T˜4 ™7�O Róð ô ‘7Ñ& r¨4°°vÓ>Ð>rD   c                 óF   •— |dk(  r| j                   S t        ‰| �	  ||«      S )NrX  )rX  rG   r,  r-  s      €r?   r,  zDefaultDictVariable.var_getattr+  s,   ø€ ð
 Ð$Ò$Ø×'Ñ'Ð'Ü‰wÑ" 2 tÓ,Ð,rD   c                 ó†  ‡— ‰j                  ˆfd„«        ‰| j                  «       ‰j                  g t        dd«      ¢t	        «       ‘«       ‰j                  | «       ‰j                  t	        «       «       ‰j                  d«       | j                  ‰«       ‰j                  g t        d«      ¢t        d«      ‘«       y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )NrW   r°   r´   s   €r?   rµ   z1DefaultDictVariable.reconstruct.<locals>.<lambda>7  s3   ø€ �G×)Ñ)à×5Ñ5´kÓBØ×,Ñ,¨]Ó;ðó€ rD   r!   Fr¶   r·   )r¹   rX  r±   r   r   r»   r©   r¼   r­   r   r   r½   s    `r?   r¾   zDefaultDictVariable.reconstruct4  s½   ø€ à×Ñóô	
ñ 	�×$Ñ$Ô%Ø×ÑðÜ% a¨Ó/ðäÓ ðô	
ð 	×Ñ˜$Ôà×ÑœnÓ.Ô/Ø×Ñ˜HÔ%Ø×*Ñ*¨7Ô3Ø×ÑðÜ# AÓ&ðä" 9Ó-ðõ	
rD   r9   r.  )r  r0  r1  rU   rW   r2  rT   r&   r…   r   rH   r7  rÜ   r6  rg   Ústaticmethodrc  ræ   r9  r	  r,  r¾   r:  r;  s   @r?   r  r  Õ  s   ø„ Ø×+Ñ+€Mð 37ñ	/à�O _Ð4Ñ5ð/ð ð/ð )¨4Ñ/ð	/ð
 ð/ð 
õ/ð, Dõ ,ð
˜Cõ 
ð ðQ˜oð Q°$ò Qó ðQðà#ðð ðð 
õ	ð$?à#ð?ð ð?ð �?Ñ#ð	?ð
 �S˜/Ð)Ñ*ð?ð 
õ?ð8-à#ð-ð ð-ð 
õ	-÷
rD   r  c            
       óê   ‡ — e Zd ZU dZdZedz  ed<   dededdfˆ fd„Z	e
defd„«       Ze
dee   fd	„«       Zd
ddee   fd„Zdd„Zd
dde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defd„Zˆ xZS )ÚDictViewVariablezu
    Models _PyDictViewObject

    This is an "abstract" class. Subclasses will override kv and the items method
    NÚkvr>  r3   r4   c                 óv   •— t        ‰| �  di |¤Ž | j                  dv sJ ‚t        |t        «      sJ ‚|| _        y )N)rÐ   rš   r2   rE   )rG   rH   ro  r:   r0   r>  r@  s      €r?   rH   zDictViewVariable.__init__[  s>   ø€ Ü‰ÑÑ"˜6Ò"Ø�w‰wÐ5Ñ5Ð5Ð5Ü˜'Ô#4Ô5Ð5Ð5Øˆ�rD   c                 ó|   — | j                   €J ‚ t        | j                  j                  | j                   «      «       S r9   )ro  Úgetattrr>  r2   rt   s    r?   Ú
view_itemszDictViewVariable.view_itemsa  s2   € à�w‰wÐ"Ð"Ð"Ø3Œw�t—|‘|×)Ñ)¨4¯7©7Ó3Ó5Ð5rD   c                 ó   — t         ‚r9   )ÚNotImplementedErrorrt   s    r?   Úview_items_vtzDictViewVariable.view_items_vtf  s
   € ô "Ð!rD   rz   r-   c                 ó   — | j                   S r9   )rv  r  s     r?   r  z$DictViewVariable.unpack_var_sequencel  s   € Ø×!Ñ!Ð!rD   c                 óœ   — | j                   €J ‚ || j                  «       |j                  | j                   «       |j                  d«       y )Nr   )ro  r>  r¼   r	  r½   s     r?   r¾   zDictViewVariable.reconstructo  s>   € Ø�w‰wÐ"Ð"Ð"Ù�—‘ÔØ×Ñ˜DŸG™GÔ$Ø×Ñ˜AÕrD   rç   c                 óª   — | j                   €J ‚|| j                  «       j                  v rt        j                  d«      S t        j                  d«      S )NTF)ro  ru   rO  r'   r  )rM   rz   rç   s      r?   r%  z!DictViewVariable.call_obj_hasattru  sM   € ð �w‰wÐ"Ð"Ð"Ø�4×#Ñ#Ó%×.Ñ.Ñ.Ü#×*Ñ*¨4Ó0Ð0Ü×&Ñ& uÓ-Ð-rD   rÁ   c                 óÈ   •— |dk(  r"ddl m}  || j                  t        «       ¬«      S |dk(  r$t	        j
                  || j                  «       «      S t        ‰| �!  ||||«      S )Nrù   r!   rú   rü   Ú__repr__)	r  rû   rv  r%   r&   r  rg   rG   r	  )rM   rz   rç   rÁ   r3   rû   rO   s         €r?   r	  zDictViewVariable.call_method}  sf   ø€ ð �:ÒÝ3á'Ø×"Ñ"Ô2BÓ2Dôð ð �ZÒÜ"×(Ñ(¨¨T¯_©_Ó->Ó?Ð?Ü‰wÑ" 2 t¨T°6Ó:Ð:rD   c                 óT   — t        j                  |t        | j                  «      «      S )z&Sequence length for dict view objects.)r&   r  rƒ   rs  r  s     r?   Ú	sq_lengthzDictViewVariable.sq_lengthŽ  s   € ä×$Ñ$ R¬¨T¯_©_Ó)=Ó>Ð>rD   r.  )r  r0  r1  Ú__doc__ro  r6  Ú__annotations__r0   r   rH   Úpropertyrs  r9  r&   rv  r  r¾   r'   r%  rT   r	  r}  r:  r;  s   @r?   rn  rn  R  s  ø… ñð €Bˆˆd‰
ÓðÐ 1ð ¸Sð ÀTõ ð ð6˜Cò 6ó ð6ð ð"˜t OÑ4ò "ó ð"ð
"Ð&=ð "À$ÀÑBWó "óð.Ø)ð.Ø14ð.à	ó.ð;à#ð;ð ð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
õ;ð"?Ð3ð ?¸÷ ?rD   rn  c            
       óœ   ‡ — e Zd ZeZdZedee   fd„«       Z	ede
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 )r  rÐ   r4   c                 ó,   — t        | j                  «      S r9   )Úsetrs  rt   s    r?   Ú	set_itemszDictKeysVariable.set_items™  s   € ä�4—?‘?Ó#Ð#rD   c                 óT   — | j                   D �cg c]  }|j                  ‘Œ c}S c c}w r9   )rs  r[   )rM   r<   s     r?   rv  zDictKeysVariable.view_items_vt�  s    € ð #Ÿo™oÖ.˜�—“Ò.Ð.ùÒ.s   �%c                 ó   — t         S r9   )r   rt   s    r?   ru   zDictKeysVariable.python_type¢  s   € ÜÐrD   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([])ra   zdict_keys([ú,ú])©rs  re   r[   rf   ra   rg   rh   ri   )rM   r2   r^   rk   s       r?   rg   zDictKeysVariable.debug_repr¥  s{   € Ø�ŠØ"à!ˆEØ—_‘_ò &�ä(/°·±°gÔ(>”D˜Ÿ™Ÿ™Ô$ÀAÇDÁDÇOÁOÓDUð ð —‘˜WÕ%ð	&ð
 ! 3§8¡8¨E£?Ñ2°TÑ9Ð9rD   rz   r-   rç   rÁ   r3   c                 óô  •— |dk(  r| j                   j                  ||||«      S |dv r6t        | j                  |«      } ||d   j                  «      }t	        |«      S |t
        v r�t        |d   t        t        j                  t        t        f«      st        j                  |t        «      S t        j                  |t        |   | j                  |d   j                  «      «      S t        ‰| �  ||||«      S )Nry   ©Ú__and__Ú__iand__rö   rø   Ú__sub__Ú__isub__Ú__xor__Ú__ixor__r   )r>  r	  rr  r„  r+   r   r:   r   ÚUserDefinedSetVariabler  r  r&   r  ÚNotImplementedrG   )rM   rz   rç   rÁ   r3   ÚmÚrrO   s          €r?   r	  zDictKeysVariable.call_method±  sô   ø€ ð �>Ò!Ø—<‘<×+Ñ+¨B°°d¸FÓCÐCØð 	
ñ 	
ô ˜Ÿ™¨Ó-ˆAÙ�$�q‘'×#Ñ#Ó$ˆAÜ˜q“>Ð!ØÔ+Ñ+ÜØ�Q‘äÜ×4Ñ4Ü%Ü$ð	ôô '×,Ñ,¨R´Ó@Ð@Ü"×(Ñ(ØÜ& tÑ,¨T¯^©^¸TÀ!¹W×=NÑ=NÓOóð ô ‰wÑ" 2 t¨T°6Ó:Ð:rD   )r  r0  r1  r   r2  ro  r€  rƒ  r&   r„  r9  rv  r…   ru   r6  rg   rT   r	  r:  r;  s   @r?   r  r  “  s¬   ø„ à€Mà	€Bàð$˜3˜Ñ/ò $ó ð$ð ð/˜t OÑ4ò /ó ð/ð˜Tó ð
:˜Có 
:ð&;à#ð&;ð ð&;ð �?Ñ#ð	&;ð
 �S˜/Ð)Ñ*ð&;ð 
÷&;ñ &;rD   r  c                   óH   — e Zd ZeZdZedee   fd„«       Z	de
fd„Zdefd„Zy)r  rš   r4   c                 ó,   — t        | j                  «      S r9   )r9  rs  rt   s    r?   rv  z DictValuesVariable.view_items_vtá  s   € ä�D—O‘OÓ$Ð$rD   c                 ó   — t         S r9   )r   rt   s    r?   ru   zDictValuesVariable.python_typeå  s   € ÜÐrD   c                 óô   — | j                   syg }| j                   D ]D  }t        |d«      rt        |j                  «      n|j	                  «       }|j                  |«       ŒF ddj                  |«      z   dz   S )Nzdict_values([])ra   zdict_values([rˆ  r‰  )rs  re   rf   ra   rg   rh   ri   )rM   r2   r=   rl   s       r?   rg   zDictValuesVariable.debug_reprè  sh   € Ø�ŠØ$à!ˆEØ—_‘_ò &�Ü+2°1°gÔ+>œ$˜qŸw™wœ-ÀAÇLÁLÃN�Ø—‘˜WÕ%ð&ð # S§X¡X¨e£_Ñ4°tÑ;Ð;rD   N)r  r0  r1  r   r2  ro  r€  r9  r&   rv  r…   ru   r6  rg   rE   rD   r?   r  r  Ú  sD   „ à€Mð 
€Bàð%˜t OÑ4ò %ó ð%ð˜Tó ð<˜Cô <rD   r  c            
       ó®   ‡ — e Zd ZeZdZeded   fd„«       Zede	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ded   fd„Zˆ xZS )r  r2   r4   r(   c           
      óœ   — | j                   D ��ch c]/  \  }}t        t        j                  |j                  |g«      «      ’Œ1 c}}S c c}}w r9   )rs  r(   r   r  r[   r]   s      r?   r„  zDictItemsVariable.set_itemsù  sD   € ð Ÿ™÷
á��1ô œI×3Ñ3°Q·T±T¸1°IÓ>Õ?ó
ð 	
ùó 
s   �4Ac                 óŠ   — | j                   D ��cg c]&  \  }}t        j                  |j                  |g«      ‘Œ( c}}S c c}}w r9   )rs  r   r  r[   r]   s      r?   rv  zDictItemsVariable.view_items_vt   s5   € ð @D¿¹×O±t°q¸!”	×'Ñ'¨¯©¨q¨	Õ2ÓOÐOùÓOs   �+?c                 ó   — t         S r9   )r   rt   s    r?   ru   zDictItemsVariable.python_type  s   € ÜÐrD   c                 ó¦  — | j                   syg }| j                   D ]�  \  }}t        |j                  d«      rt        |j                  j                  «      n|j                  j                  «       }t        |d«      rt        |j                  «      n|j                  «       }|j                  d|› d|› d�«       ŒŸ ddj                  |«      z   dz   S )	Nzdict_items([])ra   ú(rc   r]  zdict_items([rˆ  r‰  rŠ  rj   s         r?   rg   zDictItemsVariable.debug_repr  s¬   € Ø�ŠØ#à!ˆEØŸ™ò 8‘��1ä(/°·±°gÔ(>”D˜Ÿ™Ÿ™Ô$ÀAÇDÁDÇOÁOÓDUð ô ,3°1°gÔ+>œ$˜qŸw™wœ-ÀAÇLÁLÃN�Ø—‘˜q  	¨¨G¨9°AÐ6Õ7ð8ð " C§H¡H¨U£OÑ3°dÑ:Ð:rD   rz   r-   rç   rÁ   r3   c                 óÐ  •— |dk(  råt        |«      dk7  rt        ||dt        |«      › d�«       t        |d   t        «      r,| j                  j                  |d|d   j                  gi «      S t        |d   t        t        j                  t        t        f«      r<t        j                  |t        | j                  |d   j                  z  «      dk(  «      S t        j                  d«      S |dk(  r"ddlm}  || j"                  t%        «       ¬	«      S |d
v r6t'        | j                  |«      } ||d   j                  «      }t        |«      S |t(        v r�t        |d   t        t        j                  t        t        f«      st        j                  |t*        «      S t        j                  |t)        |   | j                  |d   j                  «      «      S t,        ‰| �  ||||«      S )Nró   r!   rô   rë   r   Frù   rú   rü   rŒ  )rƒ   r    r:   r  r>  r	  r+   r   r“  r  r&   r  r„  r'   r  r  rû   rv  r%   rr  r   r”  rG   )	rM   rz   rç   rÁ   r3   rû   Úfn_hdlÚret_valrO   s	           €r?   r	  zDictItemsVariable.call_method  sÎ  ø€ ð �8ÒÜ�4‹y˜AŠ~Ü# B¨¨h¼3¸t»9¸+ÀUÐ8KÔLÜ˜$˜q™'Ô#4Ô5Ø—|‘|×/Ñ/°°H¸tÀA¹w¿¹Ð>OÐQSÓTÐTÜØ�Q‘äÜ×4Ñ4Ü%Ü$ð	ôô '×,Ñ,ØÜ˜Ÿ™¨¨a©×):Ñ):Ñ:Ó;¸qÑ@óð ô $×*Ñ*¨5Ó1Ð1Ø�ZÒÝ3á'Ø×"Ñ"Ô2BÓ2Dôð ð ð 	
ñ 	
ô ˜TŸ^™^¨TÓ2ˆFÙ˜T !™W×.Ñ.Ó/ˆGÜ˜wÓ'Ð'ØÔ+Ñ+ÜØ�Q‘äÜ×4Ñ4Ü%Ü$ð	ôô '×,Ñ,¨R´Ó@Ð@Ü"×(Ñ(ØÜ& tÑ,¨T¯^©^¸TÀ!¹W×=NÑ=NÓOóð ô ‰wÑ" 2 t¨T°6Ó:Ð:rD   Fc                  ó   — y)zC
        Dictionary item views are not hashable in Python.
        FrE   rt   s    r?   r)  z$DictItemsVariable.is_python_hashableV  r*  rD   )r  r0  r1  r   r2  ro  r€  rƒ  r„  r9  r&   rv  r…   ru   r6  rg   rT   r	  r   r)  r:  r;  s   @r?   r  r  ó  s¼   ø„ à€Mà	€Bàð
˜3Ð0Ñ1ò 
ó ð
ð ðP˜t OÑ4ò Pó ðPð˜Tó ð;˜Có ;ð?;à#ð?;ð ð?;ð �?Ñ#ð	?;ð
 �S˜/Ð)Ñ*ð?;ð 
õ?;ðB G¨E¡N÷ rD   r  c            	       óø   — e Zd ZdZededeeef   fd„«       Z	edddedeeef   fd„«       Z
dedddd	fd
„Zdedefd„Zdeeef   fd„Zdedefd„Zdededd	fd„Zdedd	fd„Zdedefd„Zdefd„Zdee   fd„Zy	)ÚSideEffectsProxyDictzm
    A proxy dict that allows us to track mutations to the dict using side
    effects table as storage.
    r[   r4   c                 óÎ  — t        | t        j                  «      ri S t        | t        j                  «      rt
        j                  | j                  «      S | j                  «       }|t        urAt        | t        j                  «      r| j                  d«      S t        j                  |d«      S t        ddt        | «      › �dt        | «      › �g t         j"                  ¢¬«       y )NrO  z-unsupported variable type for __dict__ accesszVariableTracker type: z.Dynamo does not know how to get __dict__ from rÄ   )r   r   ÚNestedUserFunctionVariabler:   ÚLocalGeneratorFunctionVariabler¦  Úget_example_value_dictr[   Úget_real_python_backed_valuer$   ÚUserDefinedObjectVariableÚ_getattr_staticÚobjectÚ__getattribute__r   r…   r   Ú
DYNAMO_BUG)r[   ra   s     r?   rª  z+SideEffectsProxyDict.get_example_value_dictf  sÆ   € ä�"”i×:Ñ:Ô;ð ˆIÜ˜œI×DÑDÔEÜ'×>Ñ>¸r¿u¹uÓEÐEà×3Ñ3Ó5ˆEØœNÑ*Ü˜b¤)×"EÑ"EÔFØ×-Ñ-¨jÓ9Ð9ä!×2Ñ2°5¸*ÓEÐEäØKØ4´T¸"³X°JÐ?Ø"PÔQUÐVXÓQYÐPZÐ [ðÜ*×5Ñ5ðö	rD   rz   r-   c                 ó  — t         j                  |«      }|j                  «       D ��ci c]J  \  }}|t        j                  | ||j
                  xr  t        t        |j
                  d«      |«      ¬«      “ŒL c}}S c c}}w )NrO  )rK   )r¦  rª  r2   r&   r  rK   r   r   )rz   r[   Úexample_value_dictrA   ra   s        r?   Úget_value___dict__z'SideEffectsProxyDict.get_value___dict__€  s€   € ô 2×HÑHÈÓLÐð 1×6Ñ6Ó8÷
ñ ��Uð ”×&Ñ&ØØØ—y‘yò NÜ%¤j°·±¸JÓ&GÈÓMô	ñ ó
ð 	
ùó 
s   ©AA<r¬   Nc                 óv   — || _         |j                  j                  | _        | j                  ||«      | _        y r9   )r¬   rÙ   rÚ   r³  Ú	item_dict)rM   r¬   rz   s      r?   rH   zSideEffectsProxyDict.__init__�  s/   € ØˆŒ	ØŸI™I×2Ñ2ˆÔØ×0Ñ0°°TÓ:ˆ�rD   rA   c                 ó^   — t         }t        ||«      r|j                  j                  «       S |S r9   )r(   r   r[   rn   )rM   rA   ÚHashers      r?   Ú_maybe_unwrap_keyz&SideEffectsProxyDict._maybe_unwrap_key•  s(   € Ü ˆÜ.4°S¸&Ô.Aˆs�v‰v×(Ñ(Ó*ÐJÀsÐJrD   c                 ób   — | j                   j                  j                  | j                  i «      S r9   )rÚ   Ústore_attr_mutationsrž   r¬   rt   s    r?   Úside_effects_tablez'SideEffectsProxyDict.side_effects_table™  s%   € Ø× Ñ ×5Ñ5×9Ñ9¸$¿)¹)ÀRÓHÐHrD   c                 óÞ   — | j                  |«      }| j                  j                  | j                  |«      r(| j                  j	                  | j                  |d¬«      S | j
                  |   S )NT)Ú
deleted_ok)r¸  rÚ   Úhas_pending_mutation_of_attrr¬   Ú	load_attrrµ  ©rM   rA   rç   s      r?   Ú__getitem__z SideEffectsProxyDict.__getitem__œ  s]   € Ø×%Ñ% cÓ*ˆØ×Ñ×9Ñ9¸$¿)¹)ÀTÔJØ×$Ñ$×.Ñ.¨t¯y©y¸$È4Ð.ÓPÐPØ�~‰~˜dÑ#Ð#rD   ra   c                 ó˜   — | j                  |«      }t        |t        «      sJ ‚| j                  j	                  | j
                  ||«       y r9   )r¸  r   r6  rÚ   Ú
store_attrr¬   )rM   rA   ra   rç   s       r?   rì   z SideEffectsProxyDict.__setitem__¢  s>   € à×%Ñ% cÓ*ˆÜ�dœCÔ Ð Ð Ø×Ñ×$Ñ$ T§Y¡Y°°eÕ<rD   c                 ó˜   — | j                  |«      }| j                  j                  | j                  |t	        j
                  «       «       y r9   )r¸  rÚ   rÃ  r¬   r   rx   rÀ  s      r?   rí   z SideEffectsProxyDict.__delitem__¨  s7   € Ø×%Ñ% cÓ*ˆØ×Ñ×$Ñ$ T§Y¡Y°´i×6OÑ6OÓ6QÕRrD   c                 ó¤   — | j                  |«      }| j                  «       }||v rt        ||   t        j                  «       S || j
                  v S r9   )r¸  r»  r:   r   rx   rµ  )rM   rA   rç   Útables       r?   ry   z!SideEffectsProxyDict.__contains__¬  sR   € Ø×%Ñ% cÓ*ˆØ×'Ñ'Ó)ˆð �5‰=Ü! %¨¡+¬y×/HÑ/HÓIÐIÐIà˜4Ÿ>™>Ð)Ð)rD   c                 ó&   — t        d„ | D «       «      S )Nc              3   ó    K  — | ]  }d –— Œ y­w)r!   NrE   )r;   Ú_s     r?   r@   z/SideEffectsProxyDict.__len__.<locals>.<genexpr>·  s   è ø€ Ò#˜”1Ñ#ùs   ‚)r™   rt   s    r?   Ú__len__zSideEffectsProxyDict.__len__¶  s   € ÜÑ#˜dÔ#Ó#Ð#rD   c              #   ó`  K  — t         }| j                  «       }|j                  «       D ]=  \  }}t        |t        j
                  «      rŒ! |t        j                  |«      «      –— Œ? | j                  j                  «       D ]'  \  }}||vsŒ |t        j                  |«      «      –— Œ) y ­wr9   )	r(   r»  r2   r:   r   rx   r'   r  rµ  )rM   r·  Údr^   r=   s        r?   rù   zSideEffectsProxyDict.__iter__¹  sœ   è ø€ Ü ˆØ×#Ñ#Ó%ˆØ—G‘G“Iò 	5‰DˆAˆqÜ˜!œY×6Ñ6Ô7ØÙÔ)×0Ñ0°Ó3Ó4Ó4ð	5ð
 —N‘N×(Ñ(Ó*ò 	9‰DˆAˆqØ˜ŠzÙÔ-×4Ñ4°QÓ7Ó8Ó8ñ	9ùs   ‚BB.Â B.)r  r0  r1  r~  rl  r&   rT   r6  r®  rª  r³  rH   ÚkVr¸  r»  rÁ  rì   rí   r7  ry   r8  rÊ  r   r(   rù   rE   rD   r?   r¦  r¦  `  s$  „ ñð
 ð ?ð °t¸CÀ¸KÑ7Hò ó ðð2 ð
Ø#ð
Ø)8ð
à	ˆc�?Ð"Ñ	#ò
ó ð
ð;˜_ð ;Ð2Ið ;Èdó ;ð
K Rð K¨Có KðI D¨¨oÐ)=Ñ$>ó Ið$˜rð $ oó $ð=˜rð =¨/ð =¸dó =ðS˜rð S dó Sð* ð * tó *ð$˜ó $ð
9˜( ?Ñ3ô 
9rD   r¦  c                   óÆ   ‡ — e Zd ZdZedddedd fd„«       Zdedddeddfˆ fd	„Zd
e	deddfd„Z
d
e	defd„Zd
e	defd„Zd
e	deg ef   defd„Zdd„Zdddee   ddfd„Zˆ xZS )ÚDunderDictVariablezrepresents object.__dict__rz   r-   r[   r4   c                 ó¢   — |j                   r
t        «       n	t        «       }|j                   xr t        |j                   d«      } | ||||¬«      S )NrO  )rz   r�   rK   )rK   r"   r#   r   )Úclsrz   r[   r   rK   s        r?   r  zDunderDictVariable.createÉ  sK   € ð 35·)²)Ô,Ô.ÔAUÓAWˆØ—‘Ò@œz¨"¯)©)°ZÓ@ˆáØØØ"Øô	
ð 	
rD   r3   Nc                 óH   •— t        ‰| �  i fi |¤Ž t        ||«      | _        y r9   )rG   rH   r¦  r2   )rM   r[   rz   r3   rO   s       €r?   rH   zDunderDictVariable.__init__Ù  s%   ø€ ô 	‰Ñ˜Ñ&˜vÒ&Ü)¨"¨bÓ1ˆ�
rD   rç   ra   c                 ó"   — || j                   |<   y r9   ©r2   )rM   rç   ra   s      r?   ÚsetitemzDunderDictVariable.setitemâ  s   € Ø ˆ�
‰
�4ÒrD   c                 ó    — | j                   |   S r9   rÔ  ©rM   rç   s     r?   ÚgetitemzDunderDictVariable.getitemå  s   € Ø�z‰z˜$ÑÐrD   c                 ó   — || j                   v S r9   rÔ  r×  s     r?   rá   zDunderDictVariable.containsè  s   € Ø�t—z‘zÐ!Ð!rD   Údefaultc                 óv   — | j                  |«      r| j                  |«      S  |«       }|| j                  |<   |S r9   )rá   rØ  r2   )rM   rç   rÚ  ra   s       r?   Úgetitem_or_defaultz%DunderDictVariable.getitem_or_defaultë  s9   € ð
 �=‰=˜ÔØ—<‘< Ó%Ð%á“IˆEØ$ˆD�J‰J�tÑØˆLrD   c                  ó   — y r9   rE   rt   s    r?   rp   z0DunderDictVariable.install_dict_keys_match_guardù  rS  rD   rÁ   c                  ó   — y r9   rE   rU  s      r?   rã   z.DunderDictVariable.install_dict_contains_guardü  rV  rD   r/  )r  r0  r1  r~  Úclassmethodr&   r  r   rH   r6  rÕ  rØ  r7  rá   r   rÜ  rp   r9  rã   r:  r;  s   @r?   rÏ  rÏ  Æ  sñ   ø„ Ù$àð
à#ð
ð ð
ð 
ò	
ó ð
ð2àð2ð $ð2ð ð	2ð
 
õ2ð!˜Cð !¨ð !¸Dó !ð ˜Cð   Oó  ð"˜Sð " Tó "ð
àð
ð ˜"˜oÐ-Ñ.ð
ð 
ó	
óðØ)ðØ15°oÑ1Fðà	÷rD   rÏ  )Lr~  rU   rß   rB  Úcollections.abcr   r   r   Útypingr   r   r   r	   Útorch.utils._pytreer
   rý   r   r   r   Úbytecode_transformationr   r   r   r   Úexcr   r   Úguardsr   r   rK   r   r   r   r   Úutilsr   r   r   r   r   r    rR   r"   r#   r$   r%   r&   Úconstantr'   Úhashabler(   r)   r*   Úsetsr+   Útorch._dynamo.codegenr,   Útorch._dynamo.symbolic_convertr-   r`  r.   r0   r=  rQ  r  rn  r  r  r  r6  rÍ  ÚabcÚMutableMappingr¦  rÏ  rE   rD   r?   ú<module>rî     s'  ðñó& Û Û ß 8Ñ 8ß 5Ó 5å *ç 6Ñ 6÷ó ÷ :ß 0÷ó ÷÷ ÷õ õ 'ß DÑ DÝ ñ Ý/ÝDå/ô\-˜ô \-ô~]2˜?ô ]2ô@Ð 1ô ôz
Ð+ô z
ôz>?�ô >?ôBD;Ð'ô D;ôN<Ð)ô <ô2gÐ(ô gðT �sÑ€ôc9˜;Ÿ?™?×9Ñ9¸"¸oÐ:MÑNô c9ôL9Ð*õ 9rD   