Ë
    #´˜j~;  ã                   ód  — d 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 ddlmZ ddlZddlZdZ eej(                  ej*                  z   «      Z ed«      Zd	Zd
ZdZeez   ez   ez   ez   ez   Zd„ Z G d„ de«      Z G d„ de«      Zedk(  r ddl m!Z!  e!ddd¬«       ddl"m#Z#  e#e«       yy)z6
Dialog for building Tkinter accelerator key bindings
é    )ÚToplevelÚListboxÚ	StringVarÚTclError)ÚFrameÚButtonÚCheckbuttonÚEntryÚLabelÚ	Scrollbar)Ú
messagebox)Ú_setup_dialogN)ÚF1ÚF2ÚF3ÚF4ÚF5ÚF6ÚF7ÚF8ÚF9ÚF10ÚF11ÚF12z~!@#%^&*()_-+={}[]|;:,.<>/?)ÚTabÚSpaceÚReturn)Ú	BackSpaceÚDeleteÚInsert)ÚHomeÚEndúPage Upú	Page Downú
Left ArrowúRight ArrowúUp Arrowú
Down Arrowc                 óX  — i dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“i d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“¥dEdEi¥}|j                  | | «      } dF|v r"| t        j                  v r| j                  «       } dG| › �S )Hz3Translate from keycap symbol to the Tkinter keysym.r   ÚspaceÚ~Ú
asciitildeÚ!ÚexclamÚ@ÚatÚ#Ú
numbersignÚ%ÚpercentÚ^ÚasciicircumÚ&Ú	ampersandÚ*ÚasteriskÚ(Ú	parenleftÚ)Ú
parenrightÚ_Ú
underscoreÚ-ÚminusÚ+ÚplusÚ=ÚequalÚ{Ú	braceleftÚ}Ú
bracerightÚ[ÚbracketleftÚ]ÚbracketrightÚ|ÚbarÚ;Ú	semicolonÚ:ÚcolonÚ,ÚcommaÚ.ÚperiodÚ<ÚlessÚ>ÚgreaterÚ/ÚslashÚ?Úquestionr#   ÚPriorr$   ÚNextr%   ÚLeftr&   ÚRightr'   ÚUpr(   ÚDownr   ÚShiftzKey-)ÚgetÚstringÚascii_lowercaseÚupper)ÚkeyÚ	modifiersÚmappings      ú$lib/python3.12/idlelib/config_key.pyÚtranslate_keyrp      sþ  € ð@ˆw�wð @Ø�ð@Ø! (ð@Ø,/°ð@Ø69¸,ð@à�	ð@à˜}ð@à.1°+ð@ð �
ð@ð   ð@ð .1°ð@ð �ð	@ð " 'ð	@ð ,/¨vð	@ð 8;¸7ð	@ð
 �ð@ð
 ! ñ@ð �ð@ð  # >ð@ð 47°uð@ð �ð@ð ! ð@ð +.¨gð@ð 8;¸8ð@ð �ð@ð ˜Ið@ð (+¨7ð@ð 58¸
ð@ð �gð@ð  +¨6ð@ð ˜ð@ð "/¨wð@ð �tð@ð *¨6ñ@ð 49¸ñ@€Gð �+‰+�c˜3Ó
€CØ�)Ñ ¤v×'=Ñ'=Ñ =Ø�i‰i‹kˆØ�#�ˆ<Ðó    c                   óf   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zdd„Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zˆ xZS )ÚGetKeysFramezKey Sequence Errorc                 ó²  •— t         ‰| �  |«       d| d<   d| d<   || _        || _        || _        d| _        t        | «      | _        | j                  j                  d«       | j                  «        g | _
        | j                  D ]9  }t        | «      }|j                  d«       | j                  j                  |«       Œ; d| _        | j                  «        y)a  
        parent - parent of this dialog
        action - the name of the virtual event these keys will be
                 mapped to
        current_key_sequences - a list of all key sequence lists
                 currently mapped to virtual events, for overlap checking
        é   ÚborderwidthÚsunkenÚreliefÚ FN)ÚsuperÚ__init__ÚparentÚactionÚcurrent_key_sequencesÚresultr   Ú
key_stringÚsetÚset_modifiers_for_platformÚmodifier_varsrm   ÚappendÚadvancedÚcreate_widgets)Úselfr|   r}   r~   ÚmodifierÚvariableÚ	__class__s         €ro   r{   zGetKeysFrame.__init__1   s¿   ø€ ô 	‰Ñ˜Ô Øˆˆ]ÑØ!ˆˆX‰ØˆŒØˆŒØ%:ˆÔ"ØˆŒÜ# D›/ˆŒØ�‰×Ñ˜BÔà×'Ñ'Ô)ØˆÔØŸœˆHÜ  “ˆHØ�L‰L˜ÔØ×Ñ×%Ñ% hÕ/ð 'ð ˆŒØ×ÑÕrq   c                 ó.   — t        j                  |i |¤Ž y ©N)r   Ú	showerror)r‡   ÚargsÚkwargss      ro   r�   zGetKeysFrame.showerrorL   s   € ä×Ñ˜dÐ- fÓ-rq   c           	      óD  — t        | d¬«      | _        | j                  j                  ddddd¬«       t        | j                  d| j                  › d�¬	«      }|j                  d
¬«       t        | j                  d| j                  dd¬«      }|j                  ddd¬«       t        | «      | _        | j                  j                  dddd¬«       i | _        d}t        | j                  | j                  «      D ]o  \  }}| j                  j                  ||«      }t        | j                  | j                  |||d¬«      }|j                  d|dd
¬«       || j                  |<   |dz  }Œq t        | j                  dd¬«      }|j                  ddddd
¬«       t!        | j                  ddd¬«      | _         | j"                  j$                  dgt&        ¢­Ž  | j"                  j)                  d | j*                  «       | j"                  j                  dddd!¬"«       t-        | j                  d#| j"                  j.                  ¬$«      }	| j"                  j1                  |	j2                  ¬%«       |	j                  dddd!¬"«       t5        | j                  d&| j6                  ¬'«      | _        | j8                  j                  ddd¬(«       t        | d)¬«      | _        | j:                  j                  ddddd¬«       t        | j:                  dd*| j                  › d+�d,z   ¬«      }
|
j                  d
¬«       t=        | j:                  | j                  ¬-«      | _        | j>                  j                  d¬.«       t        | «      | _         | j@                  j                  dddd¬«       t        | j@                  dd/¬«      }|j                  ddd¬0«       t5        | | jB                  d1¬2«      | _"        | jD                  j                  ddd3dd¬4«       | jC                  «        y )5NÚkeyseq_basic)Únamer   Únsewé   )ÚrowÚcolumnÚstickyÚpadxÚpadyzNew keys for 'z' :©ÚtextÚw)ÚanchorÚleftÚgrooveru   )ÚjustifyÚtextvariablerx   rv   Úx)ÚipadxÚipadyÚfillé   )r•   r–   r—   r˜   ry   )Úcommandr›   r‰   ÚonvalueÚoffvalue)r•   r–   r˜   r—   z¸Select the desired modifier keys
above, and the final key from the
list on the right.

Use upper case Symbols when using
the Shift modifier.  (Letters will be
converted automatically.))r    r›   é   )r•   r–   Ú
columnspanr˜   r—   é   é
   Úsingle)ÚwidthÚheightÚ
selectmodeÚendz<ButtonRelease-1>Úns)r•   r–   Úrowspanr—   Úvertical)Úorientr§   )Úyscrollcommandz
Clear Keys)r›   r§   )r•   r–   r«   Úkeyseq_advancedzEnter new binding(s) for 'z' :
z2(These bindings will not be checked for validity!))r¡   )r¥   aÁ  Key bindings are specified using Tkinter keysyms as
in these samples: <Control-f>, <Shift-F2>, <F12>,
<Control-space>, <Meta-less>, <Control-Alt-Shift-X>.
Upper case is used when the Shift modifier is present!

'Emacs style' multi-keystroke bindings are specified as
follows: <Control-x><Control-y>, where the first key
is the 'do-nothing' keybinding.

Multiple separate bindings for one action should be
separated by a space, eg., <Alt-v> <Meta-v>.)r•   r–   r—   ú<< Basic Key Binding Entry)r§   r›   Úew)r•   r–   Ústickr˜   r™   )#r   Úframe_keyseq_basicÚgridr   r}   Úpackr€   Úframe_controls_basicÚmodifier_checkbuttonsÚziprm   rƒ   Úmodifier_labelrh   r	   Úbuild_key_stringr   Úlist_keys_finalÚinsertÚAVAILABLE_KEYSÚbindÚfinal_key_selectedr   ÚyviewÚconfigr�   r   Úclear_key_seqÚbutton_clearÚframe_keyseq_advancedr
   Úadvanced_keysÚframe_help_advancedÚtoggle_levelÚbutton_level)r‡   Úbasic_titleÚ
basic_keysr–   rˆ   r‰   ÚlabelÚcheckÚ
help_basicÚscroll_keys_finalÚadvanced_titleÚhelp_advanceds               ro   r†   zGetKeysFrame.create_widgetsP   sö  € ä"'¨°>Ô"BˆÔØ×Ñ×$Ñ$¨°1¸VØ+,°1ð 	%ô 	6ä˜D×3Ñ3Ø#1°$·+±+°¸cÐ!BôDˆà×Ñ ÐÔ$ä˜4×2Ñ2¸FØ(,¯©ÀØ'(ô*ˆ
ð 	�‰˜a q¨sˆÔ3ô %*¨$£KˆÔ!Ø×!Ñ!×&Ñ&¨1°Q¸vÈAÐ&ÔNð &(ˆÔ"ØˆÜ"% d§n¡n°d×6HÑ6HÖ"IÑˆH�hØ×'Ñ'×+Ñ+¨H°hÓ?ˆEÜ × 9Ñ 9Ø(,×(=Ñ(=ÀEØ)1¸8ÈbôRˆEð �J‰J˜1 V°!¸CˆJÔ@Ø38ˆD×&Ñ& xÑ0Ø�a‰K‰Fð #Jô ˜4×4Ñ4¸fð!<ô=ˆ
ð 	�‰˜A a°A¸AÀcˆÔJô  ' t×'@Ñ'@ÈØ.0¸Xô GˆÔà#ˆ×Ñ×#Ñ# EÐ;¬NÓ;Ø×Ñ×!Ñ!Ð"5°t×7NÑ7NÔOØ×Ñ×!Ñ! a°¸1ÀTÐ!ÔJÜ% d×&?Ñ&?Ø-7Ø.2×.BÑ.B×.HÑ.HôJÐð 	×Ñ×#Ñ#Ð3D×3HÑ3HÐ#ÔIØ×Ñ 1¨Q¸À$ÐÔGÜ" 4×#<Ñ#<Ø(4Ø+/×+=Ñ+=ô?ˆÔð 	×Ñ×Ñ 1¨Q¸1ÐÔ=ô &+¨4Ð6GÔ%HˆÔ"Ø×"Ñ"×'Ñ'¨A°aÀØ./°að 	(ô 	9ä˜t×9Ñ9À6Ø&@ÀÇÁÀÈUÐ$SØ%Yñ%Zô[ˆð 	×Ñ 3ÐÔ'Ü" 4×#=Ñ#=Ø04·±ôAˆÔà×Ñ×Ñ SÐÔ)ô $)¨£;ˆÔ Ø× Ñ ×%Ñ%¨!°A¸fÈ1Ð%ÔMÜ˜d×6Ñ6Àð@ô	Bˆð 	×Ñ˜q¨°6ÐÔ:ô # 4°×1BÑ1BØ'CôEˆÔà×Ñ×Ñ 1¨Q°dÀÈÐÔKØ×ÑÕrq   c                 ób   — t         j                  dk(  r
g d¢| _        n	g d¢| _        ddi| _        y)aV  Determine list of names of key modifiers for this platform.

        The names are used to build Tk bindings -- it doesn't matter if the
        keyboard has these keys; it matters if Tk understands them.  The
        order is also important: key binding equality depends on it, so
        config-keys.def must use the same ordering.
        Údarwin)rg   ÚControlÚOptionÚCommand)rÜ   ÚAltrg   rÜ   ÚCtrlN)ÚsysÚplatformrm   rÂ   ©r‡   s    ro   r‚   z'GetKeysFrame.set_modifiers_for_platform©   s+   € ô �<‰<˜8Ò#ÚFˆD�Nâ8ˆDŒNØ(¨&Ð1ˆÕrq   c                 ó*  — | j                   j                  d«      j                  d«      r‚| j                  «        | j                   j	                  d¬«       | j
                  j                  «        | j                  j                  «        | j                  j                  «        d| _
        y| j                  «        | j                   j	                  d¬«       | j                  j                  «        | j                  j                  «        d| _
        y)	z'Toggle between basic and advanced keys.r›   ÚAdvancedr¹   rš   TzAdvanced Key Binding Entry >>FN)rÑ   ÚcgetÚ
startswithrË   rÊ   rÍ   ÚliftrÏ   rÎ   Ú	focus_setr…   r¼   r¿   rã   s    ro   rÐ   zGetKeysFrame.toggle_level·   sÑ   € à×Ñ×"Ñ" 6Ó*×5Ñ5°jÔAØ×ÑÔ Ø×Ñ×$Ñ$Ð*FÐ$ÔGØ×&Ñ&×+Ñ+Ô-Ø×$Ñ$×)Ñ)Ô+Ø×Ñ×(Ñ(Ô*Ø ˆD�Mà×ÑÔ Ø×Ñ×$Ñ$Ð*IÐ$ÔJØ×#Ñ#×(Ñ(Ô*Ø×%Ñ%×*Ñ*Ô,Ø!ˆD�Mrq   c                 ó$   — | j                  «        y)z3Handler for clicking on key in basic settings list.N)rÃ   ©r‡   Úevents     ro   rÈ   zGetKeysFrame.final_key_selectedÇ   s   € à×ÑÕrq   c                 óø   — | j                  «       x}}| j                  j                  d«      }|rt        ||«      }|j	                  |«       | j
                  j                  ddj                  |«      › d�«       y)z2Create formatted string of modifiers plus the key.r�   rY   rA   r[   N)Úget_modifiersrÄ   rh   rp   r„   r€   r�   Újoin)r‡   Úkeylistrm   Ú	final_keys       ro   rÃ   zGetKeysFrame.build_key_stringË   sk   € à"×0Ñ0Ó2Ð2ˆ�)Ø×(Ñ(×,Ñ,¨XÓ6ˆ	ÙÜ% i°Ó;ˆIØ�N‰N˜9Ô%Ø�‰×Ñ˜a §¡¨Ó 1Ð2°!Ð4Õ5rq   c                 óŠ   — | j                   D �cg c]  }|j                  «       ‘Œ }}|D �cg c]  }|sŒ|‘Œ	 c}S c c}w c c}w )z9Return ordered list of modifiers that have been selected.)rƒ   rh   )r‡   r‰   Úmod_listÚmods       ro   rî   zGetKeysFrame.get_modifiersÔ   sD   € à37×3EÒ3EÓFÑ3E x�H—L‘L•NÐ3EˆÐFÙ'Ó/™x˜ª3’˜xÑ/Ð/ùò GùÚ/s   �;¬A ´A c                 óî   — | j                   j                  dd«       | j                   j                  dd«       | j                  D ]  }|j	                  d«       Œ | j
                  j	                  d«       y)z#Clear modifiers and keys selection.r   r²   Úmovetoz0.0ry   N)rÄ   Úselect_clearrÉ   rƒ   r�   r€   )r‡   r‰   s     ro   rË   zGetKeysFrame.clear_key_seqÙ   s\   € à×Ñ×)Ñ)¨!¨UÔ3Ø×Ñ×"Ñ" 8¨UÔ3Ø×*Ô*ˆHØ�L‰L˜Õð +à�‰×Ñ˜BÕrq   c                 ó  — d| _         | j                  j                  «       j                  «       }|s| j	                  | j
                  | d¬«       y | j                  s| j                  |«      r| j                  |«      r|| _         y )Nry   zNo key specified.©Útitler|   Úmessage)	r   r€   rh   Ústripr�   Úkeyerror_titler…   Úkeys_okÚbind_ok)r‡   Úkeyss     ro   ÚokzGetKeysFrame.oká   so   € ØˆŒØ�‰×"Ñ"Ó$×*Ñ*Ó,ˆÙØ�N‰N ×!4Ñ!4¸TØ#6ð ô 8àØ�MŠM˜TŸ\™\¨$Ô/°T·\±\À$Ô5GØˆDŒKØrq   c                 óî  — | j                   j                  d«      }| j                  «       }| j                  }| j                  D ��cg c]  }|D ]  }|‘Œ Œ }}}|j                  d«      s| j                  || d¬«       y|s$|t        t        z   vr| j                  || d¬«       y|dgk(  r)|t        t        z   dz   vrd	}| j                  || |¬«       y||v rd
}| j                  || |¬«       yyc c}}w )z¨Validity check on user's 'basic' keybinding selection.

        Doesn't check the string produced by the advanced dialog because
        'modifiers' isn't set.
        r�   r[   zMissing the final Key)r|   rû   zNo modifier key(s) specified.rù   rg   )r   r   zBThe shift modifier by itself may not be used with this key symbol.z'This key combination is already in use.TF)	rÄ   rh   rî   rý   r~   Úendswithr�   ÚFUNCTION_KEYSÚ	MOVE_KEYS)	r‡   r   rñ   rm   rú   rð   rl   Úkey_sequencesÚmsgs	            ro   rþ   zGetKeysFrame.keys_okì   s-  € ð ×(Ñ(×,Ñ,¨XÓ6ˆ	Ø×&Ñ&Ó(ˆ	Ø×#Ñ#ˆØ,0×,FÒ,Fô 1Ñ,F Û(/ ò Ø(/ð Ð,Fˆñ 1à�}‰}˜SÔ!Ø�N‰N˜5¨Ø#:ð ô <ð" ñ Ø¤=´9Ñ#<Ñ<Ø�N‰N ¨tØ#Bð ô Dð ð ˜G˜9Ò$ØÜ#¤iÑ/Ð2BÑBñCð&ˆCà�N‰N ¨t¸SˆNÔAð ð �]Ñ"Ø;ˆCØ�N‰N ¨t¸SˆNÔAð ð ùó'1s   ÁC1c                 ó¾   — 	 | j                  |d„ «      }| j                  ||«       y# t        $ r+}| j                  | j                  | d|› �¬«       Y d}~yd}~ww xY w)z:Return True if Tcl accepts the new keys else show message.c                   ó   — y rŒ   © r
  rq   ro   Ú<lambda>z&GetKeysFrame.bind_ok.<locals>.<lambda>  s   € ¨drq   Tz2The entered key sequence is not accepted.

Error: rù   NF)rÇ   Úunbindr   r�   rý   )r‡   r   ÚbindingÚerrs       ro   rÿ   zGetKeysFrame.bind_ok  sl   € ð
	Ø—i‘i ¡lÓ3ˆGð �K‰K˜˜gÔ&Øøô ò 	Ø�N‰NØ×-Ñ-°dð 'Ø'* eð-ð ô /ô ûð	ús   ‚( ¨	A±!AÁArŒ   )Ú__name__Ú
__module__Ú__qualname__rý   r{   r�   r†   r‚   rÐ   rÈ   rÃ   rî   rË   r  rþ   rÿ   Ú__classcell__©rŠ   s   @ro   rs   rs   ,   sH   ø„ ð *€Nôò6.òWòr2ò"ó  ò6ò0ò
 ò	òö>rq   rs   c                   ój   ‡ — e Zd Zdddœˆ fd„
Zed„ «       Zej                  d„ «       Zdd„Zdd„Zˆ xZ	S )	ÚGetKeysWindowF)Ú_htestÚ_utestc                ó"  •— t         ‰| �  |«       | j                  «        d| d<   | j                  dd¬«       | j	                  «        |j                  «       |j                  «       dz  | j                  «       dz  z
  z   }|j                  «       |s'|j                  «       dz  | j                  «       dz  z
  ndz   }| j                  d|› d|› �«       | j                  |«       t        | ||«      x| _        }	| j                  d| j                   «       t#        | «      }
t%        |
d	d
| j&                  ¬«      | _        t%        |
dd
| j                   ¬«      | _        | j(                  j-                  dddd¬«       | j*                  j-                  dddd¬«       |	j/                  ddd¬«       |
j/                  dd¬«       | j1                  |«       t3        | «       | j5                  «        |s!| j7                  «        | j9                  «        yy)aÛ  
        parent - parent of this dialog
        title - string which is the title of the popup dialog
        action - string, the name of the virtual event these keys will be
                 mapped to
        current_key_sequences - list, a list of all key sequence lists
                 currently mapped to virtual events, for overlap checking
        _htest - bool, change box location when running htest
        _utest - bool, do not wait when running unittest
        r”   rv   F)r°   r¯   ru   é–   rC   ÚWM_DELETE_WINDOWÚOKé   )r›   r¯   r§   ÚCancelr   )r•   r–   r˜   r™   r¦   ÚtopTÚboth)ÚsideÚexpandr¥   Úbottomr¢   )r   r¥   N)rz   r{   ÚwithdrawÚ	resizableÚupdate_idletasksÚwinfo_rootxÚwinfo_widthÚwinfo_reqwidthÚwinfo_rootyÚwinfo_heightÚwinfo_reqheightÚgeometryrú   rs   ÚframeÚprotocolÚcancelr   r   r  Ú	button_okÚbutton_cancelr½   r¾   Ú	transientr   Úgrab_setÚ	deiconifyÚwait_window)r‡   r|   rú   r}   r~   r  r  r¢   Úyr-  Úframe_buttonsrŠ   s              €ro   r{   zGetKeysWindow.__init__  sÜ  ø€ ô 	‰Ñ˜Ô Ø�‰ŒØˆˆ]ÑØ�‰˜e¨5ˆÔ1à×ÑÔà×ÑÓ!Ø× Ñ Ó" AÑ%¨×(;Ñ(;Ó(=¸qÑ(@Ñ@ñBˆà×ÑÓ!áð ×"Ñ"Ó$ aÑ'¨$×*>Ñ*>Ó*@À!Ñ*CÒCØ!$ñ&ˆð 	�‰˜˜!˜˜A˜a˜S�kÔ"à�
‰
�5ÔÜ)¨$°Ð8MÓNÐNˆŒ
�UØ�‰Ð(¨$¯+©+Ô6Ü˜d›ˆÜ °DØ&'°·±ô:ˆŒä# M¸Ø)*°D·K±KôAˆÔà�‰×Ñ ¨!°!¸!ÐÔ<Ø×Ñ×Ñ A¨a°a¸aÐÔ@Ø�
‰
˜ d°ˆ
Ô8Ø×Ñ ¨sÐÔ3à�‰�vÔÜ�dÔØ�‰ŒÙØ�N‰NÔØ×ÑÕð rq   c                 ó.   — | j                   j                  S rŒ   ©r-  r   rã   s    ro   r   zGetKeysWindow.resultJ  s   € à�z‰z× Ñ Ð rq   c                 ó&   — || j                   _        y rŒ   r9  )r‡   Úvalues     ro   r   zGetKeysWindow.resultN  s   € à!ˆ�
‰
Õrq   c                 óx   — | j                   j                  «        | j                  «        | j                  «        y rŒ   )r-  r  Úgrab_releaseÚdestroyrë   s     ro   r  zGetKeysWindow.okR  s$   € Ø�
‰
�‰ŒØ×ÑÔØ�‰�rq   c                 óR   — d| _         | j                  «        | j                  «        y )Nry   )r   r=  r>  rë   s     ro   r/  zGetKeysWindow.cancelW  s   € ØˆŒØ×ÑÔØ�‰�rq   rŒ   )
r  r  r  r{   Úpropertyr   Úsetterr  r/  r  r  s   @ro   r  r    sF   ø„ ð !¨ö,ð\ ñ!ó ð!ð ‡]�]ñ"ó ð"ó÷
rq   r  Ú__main__)Úmainz!idlelib.idle_test.test_config_keyru   F)Ú	verbosityÚexit)Úrun)$Ú__doc__Útkinterr   r   r   r   Útkinter.ttkr   r   r	   r
   r   r   r   Útkinter.simpledialogr   ri   rá   r  Útuplerj   ÚdigitsÚALPHANUM_KEYSÚPUNCTUATION_KEYSÚWHITESPACE_KEYSÚ	EDIT_KEYSr  rÆ   rp   rs   r  r  ÚunittestrC  Úidlelib.idle_test.htestrF  r
  rq   ro   Ú<module>rS     sÖ   ðñ÷ ;Ó :ß K× KÝ Ý .Û Û 
ð8€á�f×,Ñ,¨v¯}©}Ñ<Ó=€ÙÐ6Ó7Ð Ø,€Ø-€	ð6€	àÐ"2Ñ2°]ÑBØ!ñ"Ø$-ñ.Ø09ñ:€òô(k�5ô kô\@�Hô @ðF ˆzÒÝÙÐ	,¸ÀÕFå+ÙˆÕð rq   