shell bypass 403

GrazzMean Shell

Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 18.191.174.125
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : turtle.cpython-312.opt-2.pyc
�


f�;��\�	ddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZddlm
Z
ddlmZgd�Zgd�Zgd�Zdd	gZeezezezd
gzZgd�Zidd
�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�d d!�d"d!�d#d$�d%d&�d'd(�d)d*�d+d,d-d.��Zd/�Zd0�Z	ee�Gd2�d3e�Zd4�Zd5�Zd6Zdfd7�ZGd8�d9ej@�Z!ee!ejDd:�Gd;�d<ejF�Z$ejDZ"Gd=�d>e%�Z&Gd?�d
e�Z'Gd@�dAe�Z(GdB�dCe%�Z)GdD�dEe%�Z*GdF�dGe&�Z+GdH�dIe%�Z,GdJ�dKe%�Z-GdL�dMe%�Z.GdN�dOe-e,�Z/e/Z0dP�Z1GdQ�dRe+�Z2GdS�dTe/�Z3e3Z4dgdU�Z5dV�Z6ed'Z7	e7d(k7re6e7�dY�Z9dZ�Z:d[�Z;d\Z<d]�Z=e=ee2d^d_e;�e=ee3d`dae:�e>Z?e@dbk(rdc�ZAdd�ZBde�ZCeB�eC�eD�yy#e$red1�Y��dwxYw#e8$redWe7�Y�qe$redXe7z�Y��wxYw)h�N)�isfile�split�join)�deepcopy)�simpledialog)	�ScrolledCanvas�TurtleScreen�Screen�	RawTurtle�Turtle�RawPen�Pen�Shape�Vec2D)�addshape�bgcolor�bgpic�bye�clearscreen�	colormode�delay�exitonclick�	getcanvas�	getshapes�listen�mainloop�mode�numinput�onkey�
onkeypress�onkeyrelease�
onscreenclick�ontimer�register_shape�resetscreen�
screensize�setup�setworldcoordinates�	textinput�title�tracer�turtles�update�
window_height�window_width)P�back�backward�
begin_fill�
begin_poly�bk�circle�clear�
clearstamp�clearstamps�clone�color�degrees�distance�dot�down�end_fill�end_poly�fd�	fillcolor�filling�forward�get_poly�getpen�	getscreen�
get_shapepoly�	getturtle�goto�heading�
hideturtle�home�ht�isdown�	isvisible�left�lt�onclick�ondrag�	onrelease�pd�pen�pencolor�pendown�pensize�penup�pos�position�pu�radians�right�reset�
resizemode�rt�seth�
setheading�setpos�setposition�settiltangle�
setundobuffer�setx�sety�shape�	shapesize�shapetransform�shearfactor�
showturtle�speed�st�stamp�teleport�tilt�	tiltangle�towards�
turtlesize�undo�undobufferentries�up�width�write�xcor�ycor�write_docstringdict�done�
Terminator)rr1r4rArNrRrVr\r^rcrdrfrgrrrxr{r|r|��?�heightg�?�	canvwidthi��
canvheighti,�	leftright�	topbottomr�standardr��?r�
�undobuffersizei�rl�classicrX�blackrBrb�noresize�visibleT�language�english�
exampleturtle�turtle�screenzPython Turtle GraphicsF)�
examplescreenr*�
using_IDLEc���	t|d�5}|j�}ddd�i}D]�}|j�}|r|jd�r�'	|j	d�\}}|j�}|j�}|dvrt|�}n	d|vrt|�}nt|�}|||<��|S#1swY��xYw#t
$rt
d|�d|���Y��wxYw#t
$rY�@wxYw)N�r�#�=zBad line in config-file z:
)�True�False�Nonez''z""�.)
�open�	readlines�strip�
startswithr�
ValueError�print�eval�float�int)�filename�f�cfglines�cfgdict�line�key�values       �//usr/local/python-3.12/lib/python3.12/turtle.py�config_dictr��s��9�	
�h��	�!���;�;�=��!��G�����z�z�|���t���s�+��	����C��J�C���i�i�k�����
���9�9���K�E�
��%�<�!�%�L�E���J�E�����+�,�N�3!�!���	��x��E�F��	���
��
�s/�B<�C�C(�<C�C%�$C%�(	C4�3C4c�6�	d}i}i}t|�rt|�}d|vrd|dz}	tt�\}}t	||�}t|�rt|�}tj|�tj|�y#t
$rd}Y�NwxYw)Nz
turtle.cfg�importconfigz
turtle_%s.cfg�)rr�r�__file__r�	Exception�_CFGr-)r��default_cfg�cfgdict1�cfgdict2�head�tail�	cfg_file2s       r��
readconfigr��s�����K��H��H�
�k���{�+����!�%���(@�@����8�_�
��d���{�+�	��i���y�)���K�K����K�K�������	��s�B
�
B�Bz"No configfile read, reason unknownc�J�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zy)rc�2�tj|||f�S�N)�tuple�__new__)�cls�x�ys   r�r�z
Vec2D.__new__�s���}�}�S�1�a�&�)�)�c�>�t|d|dz|d|dz�S�Nr��r��self�others  r��__add__z
Vec2D.__add__��)���T�!�W�U�1�X�%�t�A�w�u�Q�x�'7�8�8r�c��t|t�r|d|dz|d|dzzSt|d|z|d|z�Sr�)�
isinstancerr�s  r��__mul__z
Vec2D.__mul__�sN���e�U�#���7�5��8�#�D��G�E�!�H�$4�4�4��T�!�W�U�]�D��G�E�M�2�2r�c�~�t|t�st|t�rt|d|z|d|z�StSr�)r�r�r�r�NotImplementedr�s  r��__rmul__zVec2D.__rmul__�s8���e�S�!�Z��u�%=���a�����Q���
�6�6��r�c�>�t|d|dz
|d|dz
�Sr�r�r�s  r��__sub__z
Vec2D.__sub__r�r�c�*�t|d|d�Sr�r��r�s r��__neg__z
Vec2D.__neg__s���d�1�g�X��Q��x�(�(r�c�&�tj|�Sr�)�math�hypotr�s r��__abs__z
Vec2D.__abs__s���z�z�4� � r�c��	t|d|d�}tj|�}tj|�tj|�}}t|d|z|d|zz|d|z|d|zz�S)Nr�r)rr�r_�cos�sin)r��angle�perp�c�ss     r��rotatezVec2D.rotates{��	��d�1�g�X�t�A�w�'�����U�#���x�x��������1���T�!�W�Q�Y�t�A�w�q�y�(�$�q�'�!�)�D��G�A�I�*=�>�>r�c��|d|dfSr��r�s r��__getnewargs__zVec2D.__getnewargs__s���Q���a��!�!r�c��d|zS)Nz(%.2f,%.2f)r�r�s r��__repr__zVec2D.__repr__s
���t�#�#r�N)
�__name__�
__module__�__qualname__r�r�r�r�r�r�r�r�r�r�r�r�r�rr�s9���*�9�3��9�)�!�?�"�$r�rc��	t|j�}|j�|D]}t||��|jj�D]'\}}t
|�tjk(s�#|||<�)yr�)	�list�	__bases__�reverse�__methodDict�__dict__�items�type�types�FunctionType)r��_dict�baseList�_superr�r�s      r�r�r�ss��-��C�M�M�"�H������$���V�U�#�$��l�l�(�(�*��
��U���;�%�,�,�,��E�#�J�r�c�@�	i}t||�|j�Sr�)r��keys)r�r�s  r��	__methodsr�&s ��-��E���e���:�:�<�r�zTdef %(method)s(self, *args, **kw): return self.%(attribute)s.%(method)s(*args, **kw)c�P�i}t||�i}t|�}|j�D]#}|dddk(s|dddk(s||vs||vr�||||<�%|j�D]B\}}	||	d�}
t	|t
�rt||d�z}t|
�t|||
|��Dy)Nr��_���)�method�func)r�	attribute)	r�r�r�r�r��str�__stringBody�exec�setattr)�	fromClass�toClass�toPart�exclude�_dict_1r��mfc�exrr�d�
execStrings            r��__forwardmethodsr0s����G���'�"��E�
�I�
�C��l�l�n�$��
�b�q�6�S�=�B�r�s�G�s�N�b�G�m�r�S�y�����E�"�I�	$����
�.�����t�,���f�c�"��6��H�H�
��Z����	�6�1�V�9�-�
.r�c�R�eZdZ			dd�Zd
d�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zy)rc
�$�tjj||||��|j�|_||c|_|_||c|_|_d|_	tj||||jtjd��|_tj||jjtj��|_tj||jj"��|_|jj'|j j(|j$j(��|j+dd	d�
�|j-dd	d�
�|jj/d	|d	ddd	d	d��|j$j/d	|d	dd	d	d	d��|j j/d	|d	d	dd	d	d��|j1�|jj3d
|j4�y)N)r|r��white�)r|r��bg�relief�borderwidth)�command�orient)r)�xscrollcommand�yscrollcommandrr�)�weight�minsize�news��padx�in_�pady�row�column�rowspan�
columnspan�stickyz<Configure>)�TK�Frame�__init__�winfo_toplevel�_rootwindowr|r�r�r�r�Canvas�SUNKEN�_canvas�	Scrollbar�xview�
HORIZONTAL�hscroll�yview�vscroll�	configure�set�rowconfigure�columnconfigure�gridra�bind�onResize)r��masterr|r�r�r�s      r�r-zScrolledCanvas.__init__Ks���
�����$��e�F��C��.�.�0���"'����
�D�K�*3�Z�'���������y�y��u�V�$(�G�G�B�I�I�1�N����|�|�F�D�L�L�4F�4F�+-�=�=�:����|�|�F�D�L�L�4F�4F�G��������d�l�l�.>�.>�.2�l�l�.>�.>�	�	@����!�A�q��1����Q�q�!��4������q��1�!��!��&�	�	B������q��1�!��!��&�	�	B������q��1�!��!��&�	�	B��
�
�������m�T�]�]�;r�Nc��	|r||_|r||_|r||_|jj	||jdz|jdz|jdz|jdzf��|jjd|j|jz
dzz|jz�|jjd|j|jz
dzz|jz�|j�y)Nr)r�scrollregionr��)
r�r�rr2�config�xview_movetor|�yview_movetor��
adjustScrolls�r�r�r�rs    r�razScrolledCanvas.resetds���J��&�D�N��(�D�O�
��D�G������r�'+�~�~�o�q�&8�4�?�?�:J�A�:M�'+�~�~�q�'8�$�/�/�1�:L�&N�	�	O�	
���!�!�#�t�~�~��
�
�'B�R�'G�"H�?C�~�~�#N�	O����!�!�#�t������'C�b�'H�"I�>B�o�o�#N�	O����r�c
��	|jj�}|jj�}|jjd|j|z
z|jz�|jjd|j|z
z|jz�||jks||jkrG|jjd|dddddd��|jjd|dddddd��y|jj�|jj�y)Nr�r�rr!r")r2�winfo_width�winfo_heightrEr�rFr�r6r=r8�grid_forget)r��cwidth�cheights   r�rGzScrolledCanvas.adjustScrollsvs��	����)�)�+���,�,�+�+�-�����!�!�#�t�~�~�f�'<�"=�d�n�n�"L�M����!�!�#�t���w�'>�"?����"O�P��D�N�N�"�g����&?��L�L���1�D�q�a�%&��a��
�
P��L�L���1�D�q�a�%&��a��
�
P�
�L�L�$�$�&��L�L�$�$�&r�c�&�	|j�yr�)rG)r��events  r�r?zScrolledCanvas.onResize�s������r�c�6�	|jj|�Sr�)r2�bbox�r��argss  r�rRzScrolledCanvas.bbox�s��	� �t�|�|� � �$�'�'r�c�<�	|jj|i|��Sr�)r2�cget�r�rT�kwargss   r�rVzScrolledCanvas.cget�s#��	� �t�|�|� � �$�1�&�1�1r�c�>�	|jj|i|��yr�)r2rDrWs   r�rDzScrolledCanvas.config�� ��	�������T�,�V�,r�c�>�	|jj|i|��yr�)r2r>rWs   r�r>zScrolledCanvas.bind�s ��	�������4�*�6�*r�c�>�	|jj|i|��yr�)r2�unbindrWs   r�r]zScrolledCanvas.unbind�rZr�c�:�	|jj�yr�)r2�focus_forcer�s r�r_zScrolledCanvas.focus_force�s��	���� � �"r�)��i^iXr`�NNN)
r�r�r�r-rarGr?rRrVrDr>r]r_r�r�r�rrEsA���
25�DG�<�2�$'� �(�
2�
-�
+�
-�
#r�rr2c�8�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�_Rootc�B�tjj|�yr�)r+�Tkr-r�s r�r-z_Root.__init__�s��
�����t�r�c�f�t|||||�|_|jjdd��y)Nr��both)�expand�fill)rr2�pack)r�r|r�rMrNs     r��setupcanvasz_Root.setupcanvas�s-��%�d�E�6�6�7�K�����������0r�c��|jSr�)r2r�s r��
_getcanvasz_Root._getcanvas�s���|�|�r�c�4�|jd||||fz�y)Nz%dx%d%+d%+d)�geometry)r�r|r��startx�startys     r��set_geometryz_Root.set_geometry�s���
�
�m�U�F�F�F�$C�C�Dr�c�(�|jd|�y)N�WM_DELETE_WINDOW)�wm_protocol)r��destroys  r��	ondestroyz_Root.ondestroy�s�����+�W�5r�c�"�|j�Sr�)�winfo_screenwidthr�s r��	win_widthz_Root.win_width�s���%�%�'�'r�c�"�|j�Sr�)�winfo_screenheightr�s r��
win_heightz_Root.win_height�s���&�&�(�(r�N)
r�r�r�r-rkrmrrrwrzr}r�r�r�rcrc�s)��1��1��E�6�(�)r�rcc���eZdZ	d�Zd�Zd�Zd�Z		d#d�Zd�Z		d#d�Z	d	�Z
d
�Zd�Zd�Z
d$d
�Zd�Zd%d�Zd%d�Zd%d�Zd%d�Zd�Zd$d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd&d�Zd�Z d �Z!d!�Z"d&d"�Z#y)'�TurtleScreenBasec�l�	tjdd|j��}|j�|S)Nr�)r|r�r@)r+�
PhotoImage�cv�blank)r��imgs  r��_blankimagezTurtleScreenBase._blankimage�s+��	��m�m�!�A�d�g�g�>���	�	���
r�c�F�	tj||j��S)N)�filer@)r+r�r�)r�r�s  r��_imagezTurtleScreenBase._image�s��	��}�}�(�4�7�7�;�;r�c��||_t|t�r-|jj}|jj}nvt|jj
d��}t|jj
d��}|jj|dz|dz|dz|dzf��||_||_dx|_|_	y)Nr|r�r�rBr�)
r�r�rr�r�r�rVrD�xscale�yscale)r�r��w�hs    r�r-zTurtleScreenBase.__init__�s�������b�.�)����!�!�A����"�"�A��D�G�G�L�L��)�*�A��D�G�G�L�L��*�+�A��G�G�N�N�A�2�q�5�1�"�a�%��A��q�!�t�*E�N�F�������$'�'���d�kr�c�@�	|jjddd��S)N)rrrrrrr��ri�outline)r��create_polygonr�s r��_createpolyzTurtleScreenBase._createpoly�s$��	��w�w�%�%�&8�r�2�%�N�Nr�Nc���	g}|D]B\}}	|j||jz�|j|	|jz��D|jj|g|���|�|jj||��|�|jj||��|�|jj||��|r|jj
|�yy)N�ri)r��r|��appendr�r�r��coords�
itemconfigure�	tag_raise)
r��polyitem�	coordlistrir�r|�top�clr�r�s
          r��	_drawpolyzTurtleScreenBase._drawpoly�s���	����	(�D�A�q��I�I�a�$�+�+�o�&��I�I�q�b�4�;�;�&�'�	(�	������x�%�"�%����G�G�!�!�(��!�6����G�G�!�!�(�G�!�<����G�G�!�!�(�%�!�8���G�G���h�'�r�c	�d�	|jjddddddtj��S)Nrr�r)rir|�capstyle)r��create_liner+�ROUNDr�s r��_createlinezTurtleScreenBase._createlines6��	��w�w�"�"�1�a��A�B�a�.0�h�h�#�8�	8r�c��	|�fg}|D]B\}}|j||jz�|j||jz��D|jj|g|���|�|jj||��|�|jj||��|r|jj
|�yy)Nr�r�r�)	r��lineitemr�rir|r�r�r�r�s	         r��	_drawlinezTurtleScreenBase._drawlines���	�� ��B�!�
,���1��	�	�!�d�k�k�/�*��	�	�1�"�t�{�{�*�+�
,�
�D�G�G�N�N�8�)�b�)����G�G�!�!�(��!�6����G�G�!�!�(�%�!�8���G�G���h�'�r�c�<�	|jj|�yr�)r��delete�r��items  r��_deletezTurtleScreenBase._delete#s��	�	
�����t�r�c�:�	|jj�yr�)r�r-r�s r��_updatezTurtleScreenBase._update)s��	������r�c�<�	|jj|�yr�)r��after�r�rs  r��_delayzTurtleScreenBase._delay.s��;����
�
�e�r�c�|�		|jj|�}d}|S#tj$rd}Y|SwxYw)NTF)r��	winfo_rgbr+�TclError)r�r:�rgb�oks    r��_iscolorstringzTurtleScreenBase._iscolorstring2sK��	�	��'�'�#�#�E�*�C��B��	���{�{�	��B��	�	�s�"�;�;c��	|�-|jj|��|j�y|jjd�S)N)rr)r�rDr�rV)r�r:s  r��_bgcolorzTurtleScreenBase._bgcolor<s;��	(����G�G�N�N��N�&��L�L�N��7�7�<�<��%�%r�c���	|\}}||jz}||jz}dddd�}|jj|dz
||||||��}	|jj	|	�\}
}}}
|	|dz
fS)N�swr��se)rQ�centerr`r�)�text�anchorri�font)r�r�r��create_textrR)r�r\�txt�alignr�rXr�r�r�r��x0�y0�x1�y1s              r��_writezTurtleScreenBase._writeEs���	#����1�
����O��
����O����T�;���w�w�"�"�1�Q�3���3����/7��#�F�������d�+���B��B��R��T�z�r�c����	�� �jj|d|z�y��fd�}�jj|d|z||�y)N�<Button-%s>c�����jj|j��jz�jj	|j
��jz}}�||�yr��r��canvasxr�r��canvasyr�r��rPr�r��funr�s   ��r��eventfunz+TurtleScreenBase._onclick.<locals>.eventfun\�P�����������0����<���������1�1�$�+�+�=����A�q�	r��r��
tag_unbind�tag_bind�r�r�r��num�addr�s` `   r��_onclickzTurtleScreenBase._onclickSsL���	�
�;��G�G���t�]�S�%8�9�
�
�G�G���T�=�3�#6��#�Fr�c����	�� �jj|d|z�y��fd�}�jj|d|z||�y)Nz<Button%s-ButtonRelease>c�����jj|j��jz�jj	|j
��jz}}�||�yr�r�r�s   ��r�r�z-TurtleScreenBase._onrelease.<locals>.eventfunnr�r�r�r�s` `   r��
_onreleasezTurtleScreenBase._onreleasebsQ���	��;��G�G���t�%?�#�%E�F�
�
�G�G���T�#=��#C�%�s�
,r�c����	�� �jj|d|z�y��fd�}�jj|d|z||�y)Nz<Button%s-Motion>c���	�jj|j��jz�jj	|j
��jz}}�||�y#t$rYywxYwr�)r�r�r�r�r�r�r�r�r�s   ��r�r�z*TurtleScreenBase._ondrag.<locals>.eventfun�sg���� �G�G�O�O�E�G�G�4�T�[�[�@� �G�G�O�O�E�G�G�4�4�T�[�[�@��A���1�I�� ����s�A.A2�2	A>�=A>r�r�s` `   r��_ondragzTurtleScreenBase._ondragusN���	��;��G�G���t�%8�3�%>�?�
�
�G�G���T�#6��#<�h��Lr�c����	���jjd|z�y��fd�}�jjd|z||�y)Nr�c�����jj|j��jz�jj	|j
��jz}}�||�yr�r�r�s   ��r�r�z1TurtleScreenBase._onscreenclick.<locals>.eventfun�r�r��r�r]r>)r�r�r�r�r�s``   r��_onscreenclickzTurtleScreenBase._onscreenclick�sD���	��;��G�G�N�N�=�3�.�/�
�
�G�G�L�L���,�h��<r�c���	�� |jjd|zd�y�fd�}|jjd|z|�y)Nz<KeyRelease-%s>c�����yr�r��rPr�s �r�r�z0TurtleScreenBase._onkeyrelease.<locals>.eventfun������r�r��r�r�r�r�s `  r��
_onkeyreleasezTurtleScreenBase._onkeyrelease�sD���	��;��G�G�N�N�,�s�2�D�9�
��G�G�L�L�*�S�0�(�;r�c���	��?|�|jjdd�y|jjd|zd�y�fd�}|�|jjd|�y|jjd|z|�y)Nz
<KeyPress>z
<KeyPress-%s>c�����yr�r�r�s �r�r�z.TurtleScreenBase._onkeypress.<locals>.eventfun�r�r�r�r�s `  r��_onkeypresszTurtleScreenBase._onkeypress�sp���	��;��{������|�T�2��������4�d�;�
��{������\�8�4������_�s�2�H�=r�c�:�	|jj�yr�)r�r_r�s r��_listenzTurtleScreenBase._listen�s��	������r�c��	|dk(r|jj|�y|jj||�y�Nr)r��
after_idler��r�r��ts   r��_ontimerzTurtleScreenBase._ontimer�s2��	���6��G�G���s�#��G�G�M�M�!�S�!r�c�@�	|jjdd|��S)Nr��image)r��create_image)r�r�s  r��_createimagezTurtleScreenBase._createimage�s#��	��w�w�#�#�A�q��#�6�6r�c��	|\}}|jj|||jz||jzf�|jj	||��y�Nr�)r�r�r�r��
itemconfig)r�r�r\r�r�r�s      r��
_drawimagezTurtleScreenBase._drawimage�sS��	����1������t�a�$�+�+�o��r�D�K�K�/?�@�A������4�u��-r�c�v�	|jj||��|jj|�yr�)r�r��	tag_lower)r�r�r�s   r��	_setbgpiczTurtleScreenBase._setbgpic�s2��	�	
�����4�u��-������$�r�c�:�	|jj|�Sr�)r�r�r�s  r��_typezTurtleScreenBase._type�s��	��w�w�|�|�D�!�!r�c��	|jj|�}tdt|�d�D�cgc]}||||dzf��}}|Scc}w)Nrrr�)r�r��range�len)r�r�r��i�pls     r��
_pointlistzTurtleScreenBase._pointlist�sX��	��W�W�^�^�D�
!��).�q�#�b�'�1�)=�
>�A�r�!�u�r�!�A�#�w�h��
>��
>��
��?s�Ac�D�|jj||||f��y)Nr�)r�rD)r��srx1�sry1�srx2�sry2s     r��_setscrollregionz!TurtleScreenBase._setscrollregion�s�������T�4��t�$<��=r�c�@�|jj�}|D]}t|jj|��}g}|r8|dd\}}|j	||z�|j	||z�|dd}|r�8|jj|g|�����y)Nr)r��find_allr�r�r�)	r��xscalefactor�yscalefactorr�r��coordinates�newcoordlistr�r�s	         r��_rescalezTurtleScreenBase._rescale�s������ � �"���	0�D��t�w�w�~�~�d�3�4�K��L��"�2�A����1��#�#�A��$4�5��#�#�A��$4�5�)�!�"�o��	�

�D�G�G�N�N�4�/�,�/�	0r�c�>�	t|jt�s|j|jfS||cxur|cxur�/nn,|jj|jjfS|�||_|�||_|jj|||�yr�)r�r�rr�r�rarHs    r��_resizezTurtleScreenBase._resize�s���	��$�'�'�>�2��>�>�4�?�?�2�2��
�0�b�0��7�7�$�$�d�g�g�&8�&8�8�8�� �&�D�N��!�(�D�O����
�
�i��R�0r�c���	|jj�}|dkr|jd}|jj�}|dkr|jd}||fS)Nr�r|r�)r�rJrK)r�r|r�s   r��_window_sizezTurtleScreenBase._window_sizes_��	����#�#�%���A�:��G�G�G�$�E����%�%�'���Q�;��W�W�X�&�F��f�}�r�c�N�	|jjj�yr�)r��tkrr�s r�rzTurtleScreenBase.mainloops��	�	
���
�
���r�c�H�	tj|||j��S)N)�parent)r�	askstringr�)r�r*�prompts   r�r)zTurtleScreenBase.textinput%s"��	��%�%�e�V�D�G�G�D�Dr�c�N�	tj||||||j��S)N)�initialvalue�minvalue�maxvaluer)r�askfloatr�)r�r*r!�default�minval�maxvals      r�rzTurtleScreenBase.numinput4s.��	�"�$�$�U�F��.4�v�,0�G�G�5�	5r�)NNNFr��r�Nra)$r�r�r�r�r�r-r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
rrrrrr)rr�r�r�rr�s�����<�(�O�
37�05�(�28�-1�-2�(�.��
��&��
G�,�&M�*=�$	<�>�$�
"�7�
.� �"�
�>�
0�
1�	�
�
E�5r�rc��eZdZ	y)r�N�r�r�r�r�r�r�r�r�Ps���
	r�c��eZdZy)�TurtleGraphicsErrorNr,r�r�r�r.r.Ys��r�r.c��eZdZ	dd�Zdd�Zy)rNc�b�||_|dk(r#t|t�r�t|�}||_y|dk(rWt|t�rd|j�j
d�rEt|�r:tj|�}||_y|dk(r
g}||_ytd|z��||_y)N�polygonr��.gif�compoundzThere is no shape type %s)rr�r�r�r�lower�endswithrr	r�r.�_data)r��type_�datas   r�r-zShape.__init__es�����
��I���$��%��T�{����
��g�
��$��$��:�:�<�(�(��0�V�D�\�'�.�.�t�4�D���
�	�j�
 ��D���
�&�&A�E�&I�J�J���
r�c��	|jdk7rtd|jz��|�|}|jj|||g�y)Nr3z Cannot add component to %s Shape)rr.r6r�)r��polyrir�s    r��addcomponentzShape.addcomponentusW��	��:�:��#�%�&H�BF�*�*�'M�N�
N��?��G��
�
���4��w�/�0r�r�)r�r�r�r-r;r�r�r�rr^s���� 1r�rc�6�eZdZ	dd�Zd	d�Zd�Zd�Zd�Zd�Zy)
�Tbufferc�F�||_dgg|z|_d|_d|_y)NrF)�bufsize�buffer�ptr�cumulate)r�r?s  r�r-zTbuffer.__init__�s'������v�h��(��������
r�Nc��|�2t|j�D]}dg|j|<�d|_y||_dgg|z|_d|_y)Nr)rr?r@rA)r�r?rs   r�raz
Tbuffer.reset�sW���?��4�<�<�(�
(��"&�����A��
(�
���#�D�L� �6�(�W�,�D�K���r�c��|jdkDrp|js;|jdz|jz|_||j|j<y|j|jj	|�yyr�)r?rBrAr@r�r�s  r��pushzTbuffer.push�s_���<�<�!���=�=� �H�H�q�L�D�L�L�8���(,����D�H�H�%����D�H�H�%�,�,�T�2�r�c���|jdkDrY|j|j}|�ydg|j|j<|jdz
|jz|_|Syr�)r?r@rAr�s  r��popzTbuffer.pop�s^���<�<�!���;�;�t�x�x�(�D��|��)-�����D�H�H�%� �H�H�q�L�D�L�L�8����
�r�c�T�|j|jjdg�z
Sr�)r?r@�countr�s r��nr_of_itemszTbuffer.nr_of_items�s"���|�|�d�k�k�/�/���7�7�7r�c�^�t|j�dzt|j�zS)N� )rr@rAr�s r�r�zTbuffer.__repr__�s#���4�;�;��#�%��D�H�H�
�5�5r�)r�r�)	r�r�r�r-rarErGrJr�r�r�r�r=r=�s#��?��
�3��8�6r�r=c���eZdZ	dZedededfd�Zd�Zd d�Zd	�Zd d
�Z	d�Z
d�Zd d
�Zd�Z
d�Zd�Zd!d�Zd d�Zd�Zd�Zd�Zd�Zd�Zd�Zd"d�Zd�Zd d�Zd!d�Zd#d�Zd d�Zd$d�ZeZe
Z eZ!e	Z"eZ#y)%r	Trrrc�
�tj||�tdd�tdd�tdd�tdd�tdd�tdd�td|j��d	�|_d
di|_||_||_td|_	g|_
|j�tjd
k(r;|j�}|jddddd�|jddddd�yy)Nr1)����r�r�r�rr�))r�)����)rr�)����)����	)����)����)rXr�)������)���r\)r\r`)rVr^�rrX)�r^)�r`)r[r\)r]r_)rWr�)rcr])rYr[)rWrY)rbrW)r�r�)rrU)rQ)��Q�#@���Q�@)�G�z. @��Q��@)rgrf)rerdrR)���Q��rd)��Q���rf)�G�z. �rg)��Q�#�rerO)rkrh)rjri)rirj)rhrk)g�g$�)rerk)rgrj)rfri)rdrh))r�rP)r�r�)rPr�)rPrP))r���G�z�)rg�����'@)rPrl)�rr)r^rZra)r]rZr�)�arrowr�r5�square�triangler�r��nopicr�r�darwin�wm�
attributesr�z-topmost�1�0)rr-rr��_shapes�_bgpics�_mode�_delayvaluer��
_colormode�_keysr6�sys�platformr.�call)r�r�rrr�
rootwindows      r�r-zTurtleScreen.__init__�s	���!�!�$��+�#�9�.G�H�"�9�/&�'�
#�9�/H�I�#�9�/)�*�"�9�/+�,�"�9�.K�L�"�7�D�,<�,<�,>�?�%���* �"�~�����
� ����{�+�����
��
�
���<�<�8�#��*�*�,�J��O�O�D�,��Z��E��O�O�D�,��Z��E�
$r�c��	td|_td|_|jd�|j	d�|_d|_d|_d|_g|_	|jd�d	D]}|jd|��|jd�|jddD]&}|jd|�|jd|��(dt_y)
Nrr�allr�rqr�rr)r�r�)r�rzr{r�r��_bgpic�
_bgpicname�_tracing�_updatecounter�_turtlesrrSr r|rr�_pen)r��btnr�s   r�r6zTurtleScreen.clear�s���	� ��=����{�+������U���'�'��+���!�����
������
����W���	$�C��L�L��s�#�	$�������:�:�a�=�	'�C��J�J�t�S�!��O�O�D�#�&�	'���r�Nc�L�	|�|jS|j�}|dvrtd|z��||_|dvrX|j|jdz|j
dz|jdz|j
dz�dx|_|_|j�y)N�r��logo�worldzNo turtle-graphics-mode %s)r�r�rr�)	ryr4r.rr�r�r�r�ra�r�rs  r�rzTurtleScreen.modes���	�*�<��:�:���z�z�|���4�4�%�&B�T�&I�J�J���
��'�'��!�!�4�>�>�/�1�"4�t���6F��6I�'+�~�~�q�'8�$�/�/�1�:L�
N�(+�+�D�K�$�+��
�
�r�c�v�	|j�dk7r|jd�t||z
�}t||z
�}|j�\}}|j|dz
|dz
�|j|j
}
}	|j|z|_|j|z|_||jz}||j
z}|j|z}
|j|z}|j|||
|�|j|j|	z|j
|
z�|j�y)Nr��)rr�rr&r�r�r�r�rrr-)r��llx�lly�urx�ury�xspan�yspan�wx�wy�	oldxscale�	oldyscalerr
rrs               r�r(z TurtleScreen.setworldcoordinates$s��	�*�9�9�;�'�!��I�I�g���c�C�i� ���c�C�i� ���"�"�$���B�����2��r�"�u�%�#�{�{�D�K�K�9�	��n�n�u�,����o�o��-����T�[�[� ���t�d�k�k�!���~�~��$������%�����d�D�$��5��
�
�d�k�k�)�+�T�[�[��-B�C����
r�c���	|�F|j�jd�rtd|j|��}n't	d��t|t�rtd|�}||j|<y)Nr2r�z;Bad arguments for register_shape.
Use  help(register_shape)r1)r4r5rr�r.r�r�rw)r��namerls   r�r$zTurtleScreen.register_shapeKsp��	�,�=��z�z�|�$�$�V�,��g�t�{�{�4�'8�9��)�+H�J�J�
��u�
%��)�U�+�E�"����T�r�c��	t|�dk(r|d}t|t�r/|j|�s|dk(r|St	dt|�z��	|\}}}|jdk(r#|||fD�cgc]}td|z���c}\}}}d|cxkrdkrnnd|cxkrdkrnn
d|cxkrdksnt	d	t|�z��d
|||fzS#t
tf$rt	dt|�z��wxYwcc}w)Nr�rr�zbad color string: %s�bad color arguments: %sr���o@��bad color sequence: %s�
#%02x%02x%02x)	rr�rr�r.�	TypeErrorr�r{�round)r�r:r��g�br�s      r��	_colorstrzTurtleScreen._colorstrns��	��u�:��?��!�H�E��e�S�!��"�"�5�)�U�b�[���)�*@�3�u�:�*M�N�N�	N��G�A�q�!��?�?�c�!�01�1�a�y�9�!�u�U�1�W�~�9�G�A�q�!��a��3��Q�!�]�s�]��a��3��%�&>��U��&K�L�L��!�Q���*�*��
�:�&�	N�%�&?�#�e�*�&L�M�M�	N��:s�C�1C?�'C<c	�@��|jd�s|St|�dk(r dD�cgc]}t|||dzd���}}n?t|�dk(r#|ddD�cgc]}dt||d�z��}}ntd|z��t	�fd	�|D��Scc}wcc}w)
Nr�rW)r�r�r]rrSrbr�zbad colorstring: %sc3�B�K�|]}|�jzdz���y�w)r�N)r{)�.0r�r�s  �r��	<genexpr>z&TurtleScreen._color.<locals>.<genexpr>�s�����9��Q����(��,�9�s�)r�rr�r.r�)r��cstrrr�r�s`    r��_colorzTurtleScreen._color�s�������s�#��K��t�9��>�09�:�1�#�d�1�Q�q�S�k�2�&�:�B�:�
��Y�!�^�/3�A�B�x�8�!�"�S��a��"�%�%�8�B�8�%�&;�d�&B�C�C��9�b�9�9�9��;��8s�B�Bc�z�	|�|jS|dk(rt|�|_y|dk(rt|�|_yy)Nr�r�)r{r�r�)r��cmodes  r�rzTurtleScreen.colormode�sA��	��=��?�?�"��C�<�#�E�l�D�O�
�c�\�!�%�j�D�O�r�c�~�	|jD]-}|j|j�|j��/yr�)r��_setmoderyra)r�r�s  r�razTurtleScreen.reset�s5��	��m�m�	�F��O�O�D�J�J�'��L�L�N�	r�c��	|jSr�)r�r�s r�r,zTurtleScreen.turtles�s��	��}�}�r�c�|�	|r|j|�}nd}|j|�}|�|j|�}|Sr�)r�r�r��r�rTr:s   r�rzTurtleScreen.bgcolor�sF��	���N�N�4�(�E��E��
�
�e�$�����K�K��&�E��r�c��	|�|jSt|�|_d|_|�t|�|_|jr|j	�yyr�)r�r�r�rzr-)r��nrs   r�r+zTurtleScreen.tracer�sR��	�$
�9��=�=� ��A���
������"�5�z�D���=�=��K�K�M�r�c�B�	|�|jSt|�|_yr�)rzr�r�s  r�rzTurtleScreen.delay�s&��		��=��#�#�#��u�:��r�c���	tjsdt_t�|jdkDr5|xjdz
c_|xj|jzc_yy)NTrr�)r	�_RUNNINGr�r�r�r�s r��
_incrementudczTurtleScreen._incrementudcsS��'��$�$�$(�L�!����=�=�1�����1�$�����4�=�=�0��r�c���	|j}d|_|j�D]"}|j�|j��$||_|j	�y�NT)r�r,�_update_data�_drawturtler�)r��tracingr�s   r�r-zTurtleScreen.update	sQ��	��-�-����
�����	�A�
�N�N��
�M�M�O�	� ��
����r�c�*�	|j�dSr��rr�s r�r/zTurtleScreen.window_width���	�� � �"�1�%�%r�c�*�	|j�dS�Nr�r�r�s r�r.zTurtleScreen.window_heightr�r�c��	|jSr�)r�r�s r�rzTurtleScreen.getcanvas&s��	��w�w�r�c�J�	t|jj��Sr�)�sortedrwr�r�s r�rzTurtleScreen.getshapes2s!��	��d�l�l�'�'�)�*�*r�c�,�	|j|||�yr�)r��r�r�r�r�s    r�rSzTurtleScreen.onclick=s��
	�	
���C��c�*r�c���	|�*||jvrE|jj|�n)||jvr|jj|�|j||�yr�)r|�remover�r��r�r�r�s   r�rzTurtleScreen.onkeyNsZ��	�,�;��d�j�j� ��
�
�!�!�#�&�
��
�
�
"��J�J���c�"����3��$r�c���	|�*||jvrG|jj|�n+|�)||jvr|jj|�|j||�yr�)r|r�r�r�r�s   r�r zTurtleScreen.onkeypressls^��	�0�;��d�j�j� ��
�
�!�!�#�&�
�_��D�J�J�!6��J�J���c�"�����c�"r�c�&�	|j�yr�)r�)r��xdummy�ydummys   r�rzTurtleScreen.listen�s��	�	
���r�c�*�	|j||�yr�)r�r�s   r�r#zTurtleScreen.ontimer�s��	�$	
�
�
�c�1�r�c���	|�|jS||jvr|j|�|j|<|j|j|j|�||_yr�)r�rxr�rr�)r��picnames  r�rzTurtleScreen.bgpic�s]��	� �?��?�?�"��$�,�,�&�$(�K�K��$8�D�L�L��!����t�{�{�D�L�L��$9�:�!��r�c�*�	|j|||�Sr�)rrHs    r�r&zTurtleScreen.screensize�s��	� �|�|�I�z�2�6�6r�r��NNr*�rra)$r�r�r�r�r�r-r6rr(r$r�r�rrar,rr+rr�r-r/r.rrrSrr rr#rr&r"r%rrr!r�r�r�r	r	�s�����H� $�V����,�D��M�&F�P�< �D%�N!#�F+�6	:�)�*
���.�8
&�1�	�&�&�
�	+�+�"%�<#�@
��*"�07�&�M��K��K��H��Lr�r	c�J�eZdZ	edd�edd�edd�d�ZdZdZdZefd�Zd�Z	d)d
�Z
d�Zd*d�Zd
�Z
d�Zd�Zd�Zd+dd�dedd	fd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd)d�Zd�Zd�Zd �Zd)d!�Zd)d"�Zd#�Z d$�Z!d+d%�Z"d,d&�Z#d+d'�Z$d)d(�Z%eZ&eZ'eZ(eZ)eZ*eZ+eZ,eZ-e!Z.y	)-�
TNavigatorr��)r�r�r�r�rr�c���|j|_|j|_||_d|_|j
�d|_|j|�tj|�yr�)
�DEFAULT_ANGLEOFFSET�_angleOffset�DEFAULT_ANGLEORIENT�_angleOrientry�
undobufferr;r�r�rar�s  r�r-zTNavigator.__init__�sV�� �4�4��� �4�4�����
����������
��
�
�d������r�c�l�	tdd�|_tj|j|_y)Nr�)r�	_positionr��START_ORIENTATIONry�_orientr�s r�razTNavigator.reset�s,��	��s�C����"�4�4�T�Z�Z�@��r�Nc��	|�|jS|dvry||_|dvrd|_d|_y|jdz|_d|_y)Nr�)r�r�rr��@r)ryr�r��_fullcircler�s  r�r�zTNavigator._setmode�s]��	��<��:�:���4�4����
��(�(� !�D�� !�D�� $� 0� 0�� 3�D�� "�D�r�c�j�	||_d|z|_|jdk(rd|_y|dz|_y)Nihr�rr�)r��
_degreesPerAUryr��r��
fullcircles  r��_setDegreesPerAUzTNavigator._setDegreesPerAUs9��9�%��� ��^����:�:��#� !�D�� *�2�
�D�r�c�(�	|j|�yr�)r�r�s  r�r;zTNavigator.degreess��	�*	
���j�)r�c�D�	|jtj�yr�)r�r��taur�s r�r_zTNavigator.radians,s��
	�	
���d�h�h�'r�c�`�	|j|j|zz}|j|�yr�)r�r��_goto)r�r<�endes   r��_gozTNavigator._go:s(��7��~�~����x� 7�7���
�
�4�r�c�d�	||jz}|jj|�|_yr�)r�r�r��r�r�s  r��_rotatezTNavigator._rotate?s+��K�
��#�#�#���|�|�*�*�5�1��r�c��	||_yr��r�)r��ends  r�r�zTNavigator._gotoDs��*���r�F��fill_gapr��returnc�t�	|�|n|jd}|�|n|jd}t||�|_yr�)r�r)r�r�r�r��new_x�new_ys      r�rtzTNavigator.teleportHs=��	(��]�����q�(9���]�����q�(9���u�e�,��r�c�(�	|j|�yr��r��r�r<s  r�rDzTNavigator.forwardOs��	�(	
����r�c�*�	|j|�yr�rrs  r�r0zTNavigator.backfs��	�"	
���(��r�c�*�	|j|�yr��r�r�s  r�r`zTNavigator.rightzs��	�$	
���e�V�r�c�(�	|j|�yr�rr�s  r�rQzTNavigator.left�s��	�$	
���U�r�c��	|jSr�r�r�s r�r\zTNavigator.pos�s��		��~�~�r�c�"�	|jdSr�r�r�s r�r~zTNavigator.xcor����
	��~�~�a� � r�c�"�	|jdSr�r�r�s r�rzTNavigator.ycor�r	r�c�p�	|�|jt|��y|jt||��yr�)r�r)r�r�r�s   r�rJzTNavigator.goto�s0��	�:
�9��J�J�u�a�y�!��J�J�u�Q��{�#r�c�L�	|jdd�|jd�yr�)rJrer�s r�rMzTNavigator.home�s"��		�	
�	�	�!�Q������r�c�V�	|jt||jd��yr��r�rr�)r�r�s  r�rjzTNavigator.setx�s%��	�	
�
�
�5��D�N�N�1�-�.�/r�c�V�	|jt|jd|��yr�r)r�r�s  r�rkzTNavigator.setys%��	�	
�
�
�5�����*�A�.�/r�c���	|�t||�}t|t�r|}n5t|t�r	t|�}nt|t�r|j}t|jz
�Sr�)rr�r�r�r��abs)r�r�r�r\s    r�r<zTNavigator.distance#sb��	�*
�=���1�+�C��a����C�
��5�
!���)�C�
��:�
&��+�+�C��3����'�(�(r�c��	|�t||�}t|t�r|}n5t|t�r	t|�}nt|t�r|j}|jz
\}}tt
jt
j||��d�dz}||jz}|j|j|zz|jzS�Nr���v@)
rr�r�r�r�r�r�r;�atan2r�r�r�r�)r�r�r�r\�results     r�rwzTNavigator.towardsCs���	�*
�=���1�+�C��a����C�
��5�
!���)�C�
��:�
&��+�+�C��T�^�^�#���1��t�|�|�D�J�J�q�!�$4�5�r�:�U�B���$�$�$�$���!�!�D�$5�$5�f�$<�<��@P�@P�P�Pr�c��	|j\}}ttjtj||��d�dz}||j
z}|j|j|zz|jzSr)	r�r�r�r;rr�r�r�r�)r�r�r�rs    r�rKzTNavigator.headingfsr��	��|�|���1��t�|�|�D�J�J�q�!�$4�5�r�:�U�B���$�$�$�$���!�!�D�$5�$5�f�$<�<��@P�@P�P�Pr�c��	||j�z
|jz}|j}||dzz|z|dzz
}|j|�y)N�@)rKr�r�r�)r��to_angler��fulls    r�rezTNavigator.setheadingusV��	�,�D�L�L�N�*�D�,=�,=�=�������t�B�w���$�t�B�w�.�����U�r�c	���	|jr-|jjdg�d|j_|j�}|�|j}|�Bt|�|jz}dt
tdt|�dzzd�|z�z}d|z|z}d|z}d	|ztjtj|�|jz�z}|d
kr	|||}}}|j�}	|j�}
|d
k(r|jd
d
�n|jd
�|j|�t|�D]F}|j|�|j!|�|jd
�|j|��H|j|�|d
k(r|j|	|
�|j|�|jrd|j_yy)N�seqTr��g@g�M@r�r�rrF)r�rErBrqr�rr��minr�r�r_r��_tracerr�r�rr�)r��radius�extent�stepsrq�fracr��w2�l�tr�dlrs            r�r5zTNavigator.circle�s���	�:�?�?��O�O� � �%��)�'+�D�O�O�$��
�
����>��%�%�F��=��v�;�t�/�/�/�D��c�#�b��V��S��0�$�7��<�=�=�E��&�L�5� ��
�1�W���&�L�4�8�8�D�L�L��$4�T�5G�5G�$G�H�H���A�:��r�A�2��s�"�q�A�
�\�\�^��
�[�[�]���A�:��L�L��A���J�J�q�M����R���u��	�A��J�J�u���H�H�Q�K��J�J�q�M��L�L��O�		�
	
���b�S���A�:��L�L��R� ��
�
�5���?�?�',�D�O�O�$�r�c��yr�r�)r�r�s  r�rqzTNavigator.speed����=r�c��yr�r�)r��ar�s   r�r zTNavigator._tracer�r*r�c��yr�r�)r�r�s  r�r�zTNavigator._delay�r*r�r�)rr�r�)/r�r�r�rr��DEFAULT_MODEr�r�r-rar�r�r;r_r�r�r��boolrtrDr0r`rQr\r~rrJrMrjrkr<rwrKrer5rqr r�rAr4r1rcrRr]rfrgrdr�r�r�r�r��s����#�s�O��#�s�O��#�s�O�'���L�����(��A�
#�.�*�0(��
2�
�-�5�-�D�-�T�-��.�(�*�*�!�!�!$�F�0�$0�$)�@!Q�F
Q��8=-�B>�>�>�
�B�	
�B��H�	�B�	
�B��H�
�F��K��Dr�r�c���eZdZ	edfd�Zededfd�Zdd�Zdd�Zd	�Zd
�Z	d�Z
dd�Zd
�Zd�Z
d�Zddd�deddfd�Zd�Zd�Zd�Zdd�Zdd�Zd d�Zd�Zd�ZeZeZeZe	Ze	ZeZeZy)!�TPenrbc�J�||_d|_tj|�yr�)�_resizemoder�r1�_reset)r�rbs  r�r-z
TPen.__init__�s��%���������D�r�rXrBc��d|_d|_||_||_d|_d|_d|_d|_d|_d|_	d|_
y)Nr�Tr�)r�r�r�)r�r�r�r�)�_pensize�_shown�	_pencolor�
_fillcolor�_drawing�_speed�_stretchfactor�_shearfactor�_tilt�_shapetrafo�
_outlinewidth)r�rXrBs   r�r4zTPen._reset�sS����
����!���#�����
����&��������
�+�����r�Nc�p�	|�|jS|j�}|dvr|j|��yy)N)�auto�userr��rb)r3r4rW)r��rmodes  r�rbzTPen.resizemode�sA��	�*�=��#�#�#����
���0�0��H�H��H�&�1r�c�F�	|�|jS|j|��y)N)rZ)r6rW)r�r|s  r�rZzTPen.pensizes&��	�"�=��=�=� ������r�c�D�	|jsy|jd��y�NF�rY�r:rWr�s r�r[z
TPen.penup.s!��	��}�}�������r�c�D�	|jry|jd��y)NTrIrJr�s r�rYzTPen.pendown<s!��	��=�=�������r�c��	|jSr�)r:r�s r�rOzTPen.isdownJs��	��}�}�r�c��	dddddd�}|�|jS||vr||}n%d|cxkrdkrnntt|��}nd}|j|�	�y)
Nrr�rcr�r�)�fastest�fast�normal�slow�slowestr�g%@)rq)r;r�r�rW)r�rq�speedss   r�rqz
TPen.speedYsf��	�4�b�1�Q�!�M���=��;�;���F�?��5�M�E�
�5�
�4�
���e��%�E��E����u��r�c�8�	|rbt|�}|dk(r|dx}}n|dk(r|\}}n	|dk(r|x}}|j�}|j�}|j||��y|j|j�|j|j
�fS)Nr�rrr�)rXrB)rr�rWr�r8r9)r�rTr&�pcolor�fcolors     r�r:z
TPen.colors���	�>��D�	�A��A�v�"&�q�'�)����a��!%�����a��"&�&����^�^�F�+�F��^�^�F�+�F��H�H�f��H�7��;�;�t�~�~�.����D�O�O�0L�L�Lr�c��	|r4|j|�}||jk(ry|j|��y|j|j�S)N)rX)r�r8rWr�r�s   r�rXz
TPen.pencolor�sJ��	�8��N�N�4�(�E�����&���H�H�e�H�$��;�;�t�~�~�.�.r�c��	|r4|j|�}||jk(ry|j|��y|j|j�S)N)rB)r�r9rWr�r�s   r�rBzTPen.fillcolor�sJ��	�6��N�N�4�(�E�����'���H�H�u�H�%��;�;�t���/�/r�Fr�r�r�c�r�	|j�}|r|jd��|j|��yrH)rOrW)r�r�r�r�rYs     r�rtz
TPen.teleport�s3��	��+�+�-����H�H�U�H�#������!r�c�*�	|jd��y)NT��shown�rWr�s r�rpzTPen.showturtle�s��		�	
���t��r�c�*�	|jd��y)NFr[r]r�s r�rLzTPen.hideturtle	s��	�	
���u��r�c��	|jSr�)r7r�s r�rPzTPen.isvisible	s��	��{�{�r�c���	|j|j|j|j|j|j
|j|j|j|j|jd�}|s|s|St|t�r|}ni}|j|�i}|D]
}||||<�|jr|jjd|f�d}d|vr|j|dk7rd}d|vr?t|dt �r|j#|df�|d<|j|dk7rd}d|vr|j|dk7rd}|r|j%�d|vr
|d|_d|vr
|d|_d|vr
|d|_d|vr5t|dt �r|j#|df�|d<|d|_d	|vr
|d	|_d
|vr
|d
|_d|vr&|d}t|t&t(f�r||f}||_d|vr
|d|_d
|vr
|d
|_	d|vr
|d|_d|vr
|d|_
d|vsd|vsd|vr}|j\}	}
|j}t+j,|j�t+j.|j�}
}|	|
z|
||
z|zz|	|z|
|
||zz
zf|_|j3�y)N)r\rYrXrBrZrqrb�
stretchfactorror�rurWFrYTrXrZrBrqrbraror�r\ru)r7r:r8r9r6r;r3r<r=r@r>r��dictr-r�rEr�r��_newLiner�r�r�r�r�r?r�)r�rW�pendict�_pd�p�_p_bufr��newLine�sf�scx�scy�shf�sa�cas              r�rWzTPen.pen(	s��-	�\#'�+�+�"&�-�-�"&�.�.�"&�/�/�"&�-�-�"&�+�+�"&�"2�"2�"&�"5�"5�"&�"3�"3�"&�"4�"4�"&�*�*����w��J��c�4� ��A��A�	��������	#�C��c�(�F�3�K�	#��?�?��O�O� � �%���1�����>��}�}��)��,�����?��!�J�-��/� $����*�
�/?� @��*�
��~�~��:��.�����>��}�}��)��,�����M�M�O���>��i�L�D�M���?��z�]�D�N���>��i�L�D�M��!���!�K�.�%�0�!%����;��0A�!B��+����n�D�O��a�<��G�*�D�K��1�� ���D���a���?�#�B��"�s�E�l�+��"�X��"$�D���A�� !�-� 0�D����>�!"�9��D���a�<��G�*�D�K��Q�;��6��D�J��a��6�Q�;�-�1�2D��*�*�H�C���#�#�C��X�X�d�j�j�)�4�8�8�D�J�J�+?��B�!$�R���c�"�f�r�k�):�!$��R���b�3�r�6�k�):� <�D�����r�c��yr�r��r��usePoss  r�rcz
TPen._newLine�	r*r�c��yr�r�)r�rI�forceds   r�r�zTPen._update�	r*r�c��yr�r�rSs  r�r�zTPen._color�	r*r�c��yr�r�rSs  r�r�zTPen._colorstr�	r*r�r�r��T)TF) r�r�r�r�r-r4rbrZr[rYrOrqr:rXrBr/rtrprLrPrWrcr�r�r�r|r{r^rVr>rrrNr�r�r�r1r1�s����#'�|�"4��
#�:�.�#�K�0��'�8 �. ��
�$�L,M�\#/�J"0�H"�5�"�D�"�T�"��� 
�{�~>�>�>�>�
�E�	�B�	�B�	�B��D�	�B�	�Br�r1c��eZdZ	d�Zd�Zy)�_TurtleImagec�B�||_d|_|j|�yr�)r�r�	_setshape)r�r��
shapeIndexs   r�r-z_TurtleImage.__init__�	s�������
����z�"r�c�6�|j}||_|jdcxk(r|j|jk(ry|jdcxk(r|j|jk(ry|jdvr|j	|j
�n1|jdk(r"|j
D]}|j	|��|j|j|_|jdk(r|j
�|_y|jdk(r.|j|jdj�|_y|jdk(r;|j|jD�cgc]}|j
���c}|_yycc}w)Nr1r�)r�r1r3r�)	r�r{rrwr��_itemr�r�r6)r�r{r�r�s    r�rzz_TurtleImage._setshape�	sR������$����:�:��F�f�n�n�Z�&@�&F�&F�F��G��:�:��D�F�N�N�:�$>�$D�$D�D��E��:�:�-�-��N�N�4�:�:�&�
�Z�Z�:�
%��
�
�
%�����t�$�
%��^�^�J�/�5�5��
��:�:��"��+�+�-�D�J�
�Z�Z�7�
"��,�,�V�^�^�G�-D�-J�-J�K�D�J�
�Z�Z�:�
%�*0�.�.��*D�*J�*J�L�4�&�,�,�.�L�D�J�&��Ls�5FN)r�r�r�r-rzr�r�r�rxrx�	s���#�
Lr�rxc��eZdZ	gZdedededfd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd;d
�Z
d�Zd�Zd�Zd;dd�deddfd�Zd�Zd<d�Zd=d�Zd<d�Zd�Zd<d�Zd�Zd>d�Zd�Zd�Zd?d �Zd!�Zd"�Zd#�Z d$�Z!d<d%�Z"d&�Z#d'�Z$d(�Z%d@d)�Z&d*�Z'd+�Z(d,�Z)d<d-�Z*d.�Z+dAd/�Z,d0�Z-d1�Z.d2�Z/d3�Z0d4�Z1e1Z2d<d5�Z3dBd6�Z4dBd7�Z5dBd8�Z6d9�Z7d:�Z8eZ9y)CrNrlr�r�c�
�t|t�r||_n�t|t�r9|tj
vrtj
j
|�||_n�t|ttf�rgtj
D]}|j|k(s�||_nIt|�|_tj
j
|j�ntd|z��|j}tj||j��tj|�|jj
|�|j!�|_t%||�|_d|_d|_dx|_|_||_d|_|j!�|_|j6g|_|j4g|_g|_||_tA|�|_!|jE�y)Nzbad canvas argument %sF)#r��_Screenr�r	r�screensr�rr0r�r.r�r-rr1r�r��drawingLineItemrxr��_poly�
_creatingPoly�	_fillitem�	_fillpathr7�_hidden_from_screen�currentLineItemr��currentLiner��
stampItems�_undobuffersizer=r�r�)r��canvasrlr�r�r�s      r�r-zRawTurtle.__init__�	s����f�g�&� �D�K�
���
-��Y�.�.�.��!�!�(�(��0� �D�K�
���� 8�
9�#�+�+�
6���9�9��&�"(�D�K��
6�
+�6�2����!�!�(�(����5�%�&>��&G�H�H��������D�&�+�+�-�0��
�
�d�������t�$�%�1�1�3���"�6�5�1�����
�"���*.�.��������#(�� �%�1�1�3��� �N�N�+����*�*�+��
����-���!�.�1������r�c��	tj|�tj|�|j	�|j�|j
�yr�)r�rar1r4�_clearr�r�r�s r�razRawTurtle.reset
sA��	�$	��������D�����
��������r�c�D�	|�|dkrd|_yt|�|_yr�)r�r=)r��sizes  r�rizRawTurtle.setundobuffer 
s&��	��<�4�1�9�"�D�O�%�d�m�D�Or�c�R�	|j�y|jj�Sr�)r�rJr�s r�rzzRawTurtle.undobufferentries3
s)��	��?�?�"�����*�*�,�,r�c��	dx|_|_|jD]}|jj	|��|jj�|_g|_|jr%|jj|j�|jg|_|j�|j|j�yr�)r�r�r�r�r�r�r�r�r:r�r�r8rir�r�s  r�r�zRawTurtle._clear@
s���*�*.�.������J�J�	&�D��K�K����%�	&�#�{�{�6�6�8�������=�=����#�#�D�N�N�3��*�*�+��
��������4�/�/�0r�c�F�	|j�|j�yr�)r�r�r�s r�r6zRawTurtle.clearN
s��
	�	
���
����r�c�*�|jj�|jjdk7ryt|j�dkDrG|jj|j|j|j|j�yyr�)	r�r�r�rr�r�r�r8r6r�s r�r�zRawTurtle._update_data]
so�����!�!�#��;�;�%�%��*���t��� ��"��K�K�!�!�$�"6�"6��8H�8H�"&�.�.�$�-�-�
A�#r�c��	|j}|jdk(ry|jdk(rL|j�|j�|j	�|j|j�y|j�|jdk(r6|j�D]}|j��|j	�yyr�)	r�r�r�r�r�r�rzr�r,)r�r�r�s   r�r�zRawTurtle._updatee
s���	������?�?�a���
�_�_��
!����������N�N���M�M�&�,�,�-������$�$��)����)�$�A��M�M�O�$���� �*r�c�<�	|jj||�Sr�)r�r+)r��flagrs   r�r zRawTurtle._tracerw
s ��	�$�{�{�!�!�$��.�.r�c�8�|jj|�Sr�)r�r�rSs  r�r�zRawTurtle._color�
s���{�{�!�!�$�'�'r�c�8�|jj|�Sr�)r�r�rSs  r�r�zRawTurtle._colorstr�
s���{�{�$�$�T�*�*r�c��	t|t�r|S	|\}}}|j
jdk(r#|||fD�cgc]}td|z���c}\}}}d|cxkrdkrnnd|cxkrdkrnn
d|cxkrdksnt	dt|�z��d|||fzS#ttf$rt	dt|�z��wxYwcc}w)Nr�r�r�rr�r�r�)r�rr�r�r.r�r{r�)r�rTr�r�r�r�s      r��_ccz
RawTurtle._cc�
s���	��d�C� ��K�	M��G�A�q�!��;�;�!�!�S�(�01�1�a�y�9�!�u�U�1�W�~�9�G�A�q�!��a��3��Q�!�]�s�]��a��3��%�&>��T��&J�K�K��!�Q���*�*��
�:�&�	M�%�&?�#�d�)�&K�L�L�	M��:s�B�C	�'CFr�r�r�c�T�	|j�}|j�}|r|jd��|r|s|j�|�|n|jd}|�|n|jd}t||�|_|j|��|r|s|j
�yyy)NFrIrr�)rOrCrWr?r�rr2)r�r�r�r�rY�was_fillingr�r�s        r�rtzRawTurtle.teleport�
s���!	�D�+�+�-���l�l�n����H�H�U�H�#��x��M�M�O��]�����q�(9���]�����q�(9���u�e�,��������!��x��O�O�� (�;r�c�v�	|j}|j|j�|j}d|_d|_t	|�}||_||_||_t||jj�|_|jj|�|j|jjj}|dk(r |j�|j_n�|dk(r8|j|jdj�|j_n]|dk(rX|j|jjjD�cgc]}|j���c}|j_|j�|_|j#�|Scc}w)Nr1r�r�r3)r�rcr:r�rrxr{r�r�rwrr�r}r�r6r�r�r�)r�r�r��q�ttyper�s      r�r9zRawTurtle.clone�
sS��
	������
�
�d�m�m�$������������T�N����������������(>�(>�?��������q�!����t�{�{�5�5�6�<�<���I��#�/�/�1�A�H�H�N�
�g�
�#�0�0�����1H�1N�1N�O�A�H�H�N�
�j�
 �$�n�n�T�[�[�-C�-C�D�J�J�L�t�f�0�0�2�L�A�H�H�N�"�.�.�0���	�	�	�����	Ls�&F6c���	|�|jjS||jj�vrt	d|z��|jj|�|j
�y)NzThere is no shape named %s)r�r{r�rr.rzr�)r�r�s  r�rlzRawTurtle.shape�
s_��	�&�<��;�;�)�)�)��t�{�{�,�,�.�.�%�&B�T�&I�J�J������d�#����r�c�*�	||cxur|cxur�!nn|j\}}|||jfS|dk(s|dk(rtd��|�|�||f}n%||f}n |�|jd|f}n|j}|�|j}|jd||��y)Nrz(stretch_wid/stretch_len must not be zerorC)rbrar�)r<r@r.rW)r��stretch_wid�stretch_lenr�ras     r�rmzRawTurtle.shapesizes���	�(�+�8��8�'+�':�':�$�K����T�-?�-?�?�?��!��{�a�/�%�&P�Q�Q��"��"� +�[� 8�
� +�[� 8�
�
�
$� �/�/��2�K�?�M� �/�/�M��?��(�(�G����F�,�g�	�	?r�c�H�	|�|jS|jd|��y)NrC)rbro)r=rW)r��shears  r�rozRawTurtle.shearfactor<s*��	�$�=��$�$�$����F���6r�c�X�	tjddd��|j|�y)Nzturtle.RawTurtle.settiltangle()zn{name!r} is deprecated since Python 3.1 and scheduled for removal in Python {remove}. Use tiltangle() instead.)r��
)r�)�warnings�_deprecatedrvr�s  r�rhzRawTurtle.settiltangleSs1��	�(	���>�X�$+�	-�	
���u�r�c�H�	|�Itj|j�|jz}||jz|j
zS||jz|jz}tj|�tjz}|jd|��y)NrC)rbru)	r�r;r>r�r�r�r_r�rW)r�r�rus   r�rvzRawTurtle.tiltanglens���	�<�=��L�L����,�,�t�/@�/@�@�D��4�-�-�-��1A�1A�A�A��6�D�.�.�.��1B�1B�B�D��<�<��%����0�D��H�H��T�H�2r�c�J�	|j||j�z�yr�)rvr�s  r�ruzRawTurtle.tilt�s!��	� 	
���u�t�~�~�/�/�0r�c�&�	||cxur|cxur|cxur
�
|jS|j\}}}}|�|}|�|}|�|}|�|}||z||zz
dk(rtd��||||f|_tj||�tjz}	tj
|	�tj|	�}}
||z|
|zz
||z|
|zz
|
|z||zz|
|z||zzf\}}
}}||f|_|
|z|_|	|_	|jd��y)Nrz0Bad shape transform matrix: must not be singularrCrD)r?r.r�rr�r�r�r<r=r>rW)r��t11�t12�t21�t22�m11�m12�m21�m22�alfarmrn�a11�a12�a21�a22s                r�rnzRawTurtle.shapetransform�sB��	�&�#�+��+��+��#�#�#�,�!�-�-���S�#�s��?�#�C��?�#�C��?�#�C��?�#�C���9�s�S�y� �A�%�%�&X�Y�Y���c�3�/����z�z�3�$��$�t�x�x�/�����$�����$��B�� ��f�r�#�v�o�r�#�v��3��� ��f�r�#�v�o�r�#�v��3���@���S�#�s�!�3�h�����G�����
����F��#r�c	�l�	|j}|j\}}|j\}}t|||jz|j
z�}dt
|�z|z\}}|D��	cgc]<\}}	|||z||	zz|j
zz|||z||	zz|jzzf��>c}	}Scc}	}w)Nr�)r�r�r�rr�r�r)
r�r:r��p0�p1�e0�e1�er�r�s
          r��
_polytrafozRawTurtle._polytrafo�s���	����������B������B��"�b�6�=�=�(�6�=�=�8�9����A��,�!�#���B�IM�O�?E��1��R��T�"�Q�$�Y��
�
�-�-�r�B�3�q�5��A��:�v�}�}�2L�/L�M�O�	O��Os�+AB0c���	|jj|jj}|jdk(r)|j|j|jdk(�Sy)Nr1r3)r�rwr�r{r�
_getshapepolyr6)r�rls  r�rHzRawTurtle.get_shapepoly�sX��
	����#�#�D�K�K�$:�$:�;���;�;�)�#��%�%�e�k�k�5�;�;�*�3L�M�M�$r�c�
�����	|jdk(s|r|j\����nE|jdk(r%td|jdz�}|dd|f\����n|jdk(r|St	����fd�|D��S)NrCrBr�g@rr�c3�P�K�|]\}}�|z�|zz�|z�|zzf���y�wr�r�)r�r�r�r�r�r�r�s   ����r�r�z*RawTurtle._getshapepoly.<locals>.<genexpr>�s2�����J���A�c�!�e�c�!�e�m�S��U�S��U�]�3�J�s�#&)r3r?�maxr6r�)r�r1r3r&r�r�r�r�s    @@@@r�r�zRawTurtle._getshapepoly�s����	����v�%��!%�!1�!1��C��c�3�
�
�
��
'��A�t�}�}�S�(�)�A�!"�A�q�!���C��c�3�
�
�
��
+��N��J�'�J�J�Jr�c	��	|j}|j|jj}|j}|jj
}|j�rd|jdk(�rT|jdkD�rDd|_	|j}|dk(r�|jdk(rd}n(|jdk(r
|j}n|j}|j|j|��}|j |j"}}|j%|||||d��y|d	k(r|j'||j(|�y|d
k(ryt+||�D]i\}	\}
}}|j|j|
d��}
|j%|	|
|j-|�|j-|�|jd���kyy|jry|dk(r|j%|ddd�nZ|d	k(r5|j'||j(|jd
j�n |d
k(r|D]}	|j%|	ddd��d|_	y)NrFr1r�r�rBT�rir�r|r�r�r3�rmrmrmr�r�)r�rwr�r{rr}r7r�r�r�r6r3r6r@r�r�r9r8r�r�r��zipr�)r�r�rlr��titem�tshaper��fc�ocr�r:s           r�r�zRawTurtle._drawturtle�s)��	8��������t�{�{�5�5�6���������!�!���;�;�6�0�0�A�5�&�/�/�A�:M�',�D�$��[�[�F��	�!��#�#�z�1�q�1��%�%��/�T�]�]���+�+�a�����(:�(:�6�(B�C�����$�.�.�B��� � ���B��<=�4�!�I��'�!��!�!�%�����@��*�$�,/��v�,>�_�(�D�.�4��R��?�?�4�+=�+=�d�D�+I�J�D��$�$�T�4�d�h�h�r�l�-1�X�X�b�\��AS�AS�Y]�%�_�_�%��'�'���	�!�� � ��(@�"�b�I��'�!��!�!�%����*0�.�.��*A�*G�*G�I��*�$�!�M�D��$�$�T�+C�R��L�M�'+�D�$r�c	��	|j}|j|jj}|j}|j
}|dk(r�|j
�}|jdk(rd}n(|jdk(r
|j}n|j}|j|j|��}|j|j}}|j|||||d��n�|dk(r/|jd�}|j!||j"|�n�|d	k(r�g}|D]#}	|j
�}
|j%|
��%t'|�}t)||�D]i\}
\}}}|j|j|d��}|j|
||j+|�|j+|�|jd���k|j,j%�|j.j1d
|f�|S)Nr1r�r�rBTr�r�r�r3rs)r�rwr�r{rr6r�r3r6r@r�r�r9r8r�r�r�r�r�r�r�r�r�r�rE)r�r�rlr�r��stitemr�r�r��elementr�r:s            r�rszRawTurtle.stamp"s���
	��������t�{�{�5�5�6�����������I���'�'�)�F����:�-�1�q��!�!�V�+����Q��'�'�!��O�O�D�$6�$6�v�$>�?�E��_�_�d�n�n��B����V�U��R�89�t�
�
E�
�g�
��(�(��,�F����f�d�n�n�f�=�
�j�
 ��F�!�
$���)�)�+���
�
�d�#�
$��6�]�F�(+�F�F�(;�
[�$��n�t�R�����t�'9�'9�$��'E�F��� � ��t�$�(�(�2�,�)-���"��T�=O�=O�UY�!�[�
[�	
�����v�&������g�v�.�/��
r�c�l�	||jvrit|t�r#|D]}|jj	|��n|jj	|�|jj|�d|f}|j}||jvry|jj|�}|jj|�||jkr!|jdz
|jz|_	|jj|jdz|jzdg�y)Nrsr�)r�r�r�r�r�r�r�r@�indexrAr?�insert)r��stampid�subitemr��bufr�s      r��_clearstampzRawTurtle._clearstampOs���	��d�o�o�%��'�5�)�&�1�G��K�K�'�'��0�1����#�#�G�,��O�O�"�"�7�+���!���o�o���s�z�z�!���
�
� � ��&���
�
���$���C�G�G���w�w��{�c�k�k�1�C�G��
�
���3�7�7�1�9�c�k�k�1�D�6�:r�c�H�	|j|�|j�yr�)r�r�)r�r�s  r�r7zRawTurtle.clearstampes ��
	�	
����!����r�c���	|�|jdd}n$|dk\r|jd|}n|j|d}|D]}|j|��|j�yr�)r�r�r�)r�r��toDeleter�s    r�r8zRawTurtle.clearstampstsi��	�"
�9����q�)�H�
�!�V����r��*�H����q�r�*�H��	#�D����T�"�	#����r�c
��	|j|j|jt|jt
�f}|j}d|j|||j|jdd|j|j�|jddff}|jr|jj|�|j}|j�r1|jdk(�r!||z
}|d|j zdz|d|j"zdzz}dt%|dzdd|jzz|jzz�z}|d|zz}	t'd|�D]t}
|
dk(rd	}nd
}||	|
zz|_|jr?|j)|j*||jf|j|j|�|j-��v|jr)|j)|j*dd|j�
�|jr|jj/|�t|jt
�r|jj/|�||_|j0r|j2j/|�t5|j�dkDr|j7�|j-�y)N�gor�rrr�r�皙�����?r�TF�rmrmr��rir|�*)r:r8r6r�r�r�r�r�r�r�r
r�r�rEr;r�r�r�r�rr�r�r�r�r�r�rrc)r�r��go_modesr��
undo_entry�start�diff�diffsq�nhops�deltar�r�s            r�r�zRawTurtle._goto�sf��	�
�]�]��^�^��]�]������5�7�������D�N�N�C���+�+��&�&�q�)��'�'��(<�(<�=��j�j��m�%��
��?�?��O�O� � ��,������;�;�6�?�?�a�/���I�D��1�g�f�m�m�+�a�/�4��7�6�=�=�3H�1�2L�L�F��c�6�3�;��C����,<�)=�d�k�k�)I�J�K�K�E��C��I�&�E��1�e�_�

����6��C��C�!&����!2����=�=��$�$�T�%9�%9�&+�T�^�^�%<�%)�^�^�T�]�]�C�I�����

��}�}�� � ��!5�!5�7G�46�d�m�m�!�M��=�=����#�#�C�(��d�n�n�d�+��N�N�!�!�#�&��������J�J���c�"��t��� �2�%��M�M�O����r�c�V�	|\}}}}|\}}}}	|\}
}}}
|j}t|j|z
�dkDrtd�|
|_||_|ddgk(rd}n|}|j
|
|||��|jD�cgc]}||
vs�|j|�dk(r|��}}|D].}|j|�|jj|��0|}|jr�|jdk(r�||z
}|d|jzd	z|d|jzd	zz}dt|dzd
d|jzz|jzz�z}|d|zz}t!d|�D]V}|dk(rd
}nd}|||zz|_|r+|j
|j"||jf|||�|j%��X|r|j
|j"dd|��||_|j&rOt)|j*�dkDr|j*j-�|j*gk(rd|_d|_|	rH|j.gk(rd|_td�n&|j.�|j.j-�|j%�ycc}w)Nr�z$undogoto: HALLO-DA-STIMMT-WAS-NICHT!rmr�r�r�r�rrr�r�r�TFr�zUnwahrscheinlich in _undogoto!)r�rr�r�r�r�r�r�rr�r�r;r�r�r�r�rr�r�r�rr�rGr�)r��entry�old�newr��coodata�drawing�pc�psrC�cLI�cLr	r�r��usepcr�todeleter�r�r�r�r�r�r�s                         r��	_undogotozRawTurtle._undogoto�s���	�&+�#��S�(�G�#+� ���R��$���R��U������t�~�~��#�$�s�*��9�:�"������
�&�&�!�!��E��E�����b�u�B��7�#�z�z�D�!�a�u�n�(.���Q��6�(A��D��D��	!�A��N�N�1���J�J���a� �	!����;�;�6�?�?�a�/���9�D��1�g�f�m�m�+�a�/�4��7�6�=�=�3H�1�2L�L�F��c�6�3�;��C����,<�)=�d�k�k�)I�J�K�K�E��C��I�&�E��1�e�_�

����6��C��C�!$�u�q�y������$�$�T�%9�%9�&+�T�^�^�%<�%'��S�2�����

��� � ��!5�!5�7G�46�b�!�B����
����4�:�:���"��
�
��� ��z�z�R��%*��"�!��
���~�~��#�!%����6�7����+����"�"�$������YDs�	J&�J&c�&�	|jr(|jjd||jf�||jz}|jj	|�}|j
j}|dk(r�|jdkDrqd|jz}dtt|�|z�z}d|z|z}t|�D]2}|jj	|�|_|j��4||_|j�y)N�rotr�rg@r�)r�rEr�r�r�r�r�r;r�rrr�)r�r��	neworientr��anglevelr#r�rs        r�r�zRawTurtle._rotate
s���	��?�?��O�O� � �%���0B�0B�!C�D�
��#�#�#���L�L�'�'��.�	��+�+�&�&���a�<�D�K�K�!�O��T�[�[�(�H���C��J�x�/�0�0�E���I�e�O�E��5�\�
��#�|�|�2�2�5�9�������
�!������r�c���	t|j�dkDr�|jj|j|j|j
|j�|jj�|_|jj|j�n'|jj|jd��g|_|r|jg|_yy)Nr�T)r�)rr�r�r�r�r8r6r�r�r�r�rps  r�rczRawTurtle._newLine
s���	��t��� �1�$��K�K�!�!�$�"6�"6��8H�8H�&*�n�n�d�m�m�
E�#'�;�;�#:�#:�#<�D� ��J�J���d�2�2�3��K�K�!�!�$�"6�"6�D�!�A����� $���/�D��r�c�8�	t|jt�Sr�)r�r�r�r�s r�rCzRawTurtle.filling(
s��
	��$�.�.�$�/�/r�c�x�	|j�sD|jj�|_|jj|j�|jg|_|j�|jr'|jjd|jf�|j�y)N�	beginfill)rCr�r�r�r�r�r�r�rcr�rEr�r�s r�r2zRawTurtle.begin_fill6
s~��		��|�|�~�!�[�[�4�4�6�D�N��J�J���d�n�n�-��.�.�)����
�
���?�?��O�O� � �+�t�~�~�!>�?����r�c�r�	|j�r�t|j�dkDro|jj	|j
|j|j��|jr'|jjd|j
f�dx|_|_|j�yy)Nrr��dofill)
rCrr�r�r�r�r9r�rEr�r�s r�r?zRawTurtle.end_fillK
s���		��<�<�>��4�>�>�"�Q�&����%�%�d�n�n�d�n�n�+/�?�?�&�<��?�?��O�O�(�(�(�D�N�N�)C�D�.2�2�D�N�T�^��L�L�N�r�c�Z�	|s}t|ttf�r5|j|�}|jt|jd�z}nh|j}|sZ|jt|jd�z}n6|�#|jt|jd�z}|j|�}|j�}|jr-|jjdg�d|j_
	|j�dk(r|j�|j�|j|�|j|�|j!d�|j|�|jrd|j_
yy#|j|�wxYw)NrbrTrBrF)r�rr�r�r6r�r8rWr�rErBrbrNrYrZrXrD)r�r�r:rWs    r�r=z
RawTurtle.dot_
s?��	���$��e��-����t�,���}�}�s�4�=�=�!�'<�<��������=�=�3�t�}�}�a�+@�@�D��|��}�}�s�4�=�=�!�'<�<���N�N�5�)�E��h�h�j���?�?��O�O� � �%��)�'+�D�O�O�$�	���� �F�*����	��L�L�N��L�L����M�M�%� ��L�L��O��H�H�S�M��?�?�',�D�O�O�$���
�H�H�S�M�s
�A&F�F*c��	|jj|j||||j�\}}|j	�|j
j
|�|jr|jjd|f�|S)N�wri)	r�r�r�r8r�r�r�r�rE)r�r�r�r�r�r�s      r�r�zRawTurtle._write�
sp��	��K�K�&�&�t�~�~�s�E�4�:>�.�.�J�	��c������
�
���$���?�?��O�O� � �%���/��
r�c�V�	|jr-|jjdg�d|j_|jt	|�|j�|�}|r%|j
�\}}|j||�|jrd|j_yy)NrTF)r�rErBr�rr4r\rf)r��arg�mover�r�r�r�r�s        r�r}zRawTurtle.write�
s���	�$�?�?��O�O� � �%��)�'+�D�O�O�$��k�k�#�c�(�E�K�K�M�4�8����8�8�:�D�A�q��K�K��Q���?�?�',�D�O�O�$�r�c�8�	|jg|_d|_yr�)r�r�r�r�s r�r3zRawTurtle.begin_poly�
s��		��n�n�%��
�!��r�c��	d|_y�NF)r�r�s r�r@zRawTurtle.end_poly�
s��		�#��r�c�H�	|j�t|j�Syr�)r�r�r�s r�rEzRawTurtle.get_poly�
s'��	��:�:�!�����$�$�"r�c��	|jSr�)r�r�s r�rGzRawTurtle.getscreen�
s��	��{�{�r�c��	|Sr�r�r�s r�rIzRawTurtle.getturtle�
s��
	��r�c�:�	|jj|�Sr�)r�rr�s  r�r�zRawTurtle._delays��	��{�{� � ��'�'r�c��	|jj|jj|||�|j	�yr�)r�r�r�r}r�r�s    r�rSzRawTurtle.onclicks4��	�"	
�����T�[�[�.�.��S�#�>����r�c��	|jj|jj|||�|j	�yr�)r�r�r�r}r�r�s    r�rUzRawTurtle.onreleases4��	�*	
�����t�{�{�0�0�#�s�C�@����r�c�j�	|jj|jj|||�yr�)r�r�r�r}r�s    r�rTzRawTurtle.ondrag5s+��	�"	
�����D�K�K�-�-�s�C��=r�c��	|j�y|dk(rB|\}}|j||z|jz�|jj�}y|dk(r|d}|j	|�y|dk(r|j|�y|dvr<|d}|jj|�|jj|�y|dk(r%|d}|jj|ddd�	�y|d
k(rY|d}dx|_|_||jvr7|jj|�|jj|�yy|dk(r4tj||d�|jj�yy)Nr�rsrr�)rr=r�r�r�r�r�rW)r�r�r�rGr7r�r�r�r�r�r�r�r�r1rW)r��actionr8r��degPAU�dummyr�r�s        r��_undozRawTurtle._undoJsn��	��?�?�"���U�?� �M�E�6��L�L�%����t�'9�'9�9�:��O�O�'�'�)�E�
�w�
��!�W�F��O�O�F�#�
�t�^��N�N�4� �
�~�
%���7�D��K�K����%��J�J���d�#�
�x�
���7�D��K�K�!�!�$�(>�')�2�
"�
7�
�{�
"���7�D�.2�2�D�N�T�^��t�z�z�!����#�#�D�)��
�
�!�!�$�'�"��u�_��H�H�T�4��7�#��O�O���!�r�c���	|j�y|jj�}|d}|dd}|dk(r/|r,|j�}|j|d|dd�|r�+yy|j||�y)Nrr�r)r�rGr)r�r�rr8s    r�ryzRawTurtle.undojs~��	� �?�?�"�����"�"�$���a����A�B�x���U�?���x�x�z���
�
�4��7�D���H�-��
�J�J�v�t�$r�r�r�ra)NNNN)Frv)FrQ)�Arialr[rPr*):r�r�r�r�r�r-rarirzr�r6r�r�r r�r�r�r/rtr9rlrmrorhrvrurnr�rHr�r�rsr�r7r8r�r�r�rcrCr2r?r=r�r}r3r@rErGrIrFr�rSrUrTrryrxr�r�r�rr�	sU����G�"��G�}� $�%5� 6��i��&�P�2,�&-�1�
�A�!�$/�*(�+�
+�.�5�.�D�.�T�.�`&�P�6&?�P7�.�6%3�N1�&%$�P
O�N�"K�$,�P+�Z;�,
��83�j?�B�$0� 0��*�()-�V	�-�:"�#�%�� �"�F�(�
�*�2>�*"�@%�:�Jr�rc�j�	tj�t�t_tjSr�)r�_screenr�r�r�r�r
r
�s&��%��~�~�� �����>�>�r�c�d�eZdZdZdZedZd�Zededededfd�Zd	�Z	d
�Z
d�Zd�Zy)
r�Nr*c�t�tj�ht�xt_|_|jjtj�|jj|j�tj��td}td}td}td}td}td}|jj||||�|jj�t_tj|tj�|j||||�yy)Nr|r�r�r�r�r�)r��_rootrcr*�_titlerw�_destroyr2r�rkrmr	r-r')r�r|r�r�r�r�r�s       r�r-z_Screen.__init__�s����=�=� �).��0�G�M�D�J��J�J���W�^�^�,��J�J� � ����/��?�?�"���M�E��(�^�F��[�)�I��l�+�J��[�)�I��[�)�I��J�J�"�"�5�&�)�Z�H�"�j�j�3�3�5�G�O��!�!�$����8��J�J�u�f�i��;�#r�r|r�r�r�c��	t|jd�sy|jj�}|jj�}t	|t
�rd|cxkrdkrnn||z}|�||z
dz}t	|t
�rd|cxkrdkrnn||z}|�||z
dz}|jj
||||�|j�y)Nrrrr�r)�hasattrrrzr}r�r�rrr-)r�r|r�rprqr��shs       r�r'z
_Screen.setup�s���	�.�t�z�z�>�2��
�Z�Z�
!�
!�
#��
�Z�Z�
"�
"�
$���e�U�#��U��a���u�H�E��>��5�j�A�%�F��f�e�$��f�)9��)9���Y�F��>��6�k�Q�&�F��
�
����v�v�v�>����
r�c�z�	tj�tjj|�|t_yr�)r�rr*r)r��titlestrings  r�r*z
_Screen.title�s,��	��=�=�$��M�M����,�$��r�c���|j}|tjur,dt_dt_dt_dt_dt_|j�yr)	rr�rr�rr2r	r�rv)r��roots  r�rz_Screen._destroy�sD���z�z���7�=�=� ��F�K�!�F�N� �G�M�"�G�O� %������r�c�&�	|j�yr�)rr�s r�rz_Screen.bye�s��	�
	
�
�
�r�c���	�fd�}�j|�tdry	t�y#t$rt	d�YywxYw)Nc�(��	�j�yr�)r)r�r�r�s  �r��exitGracefullyz+_Screen.exitonclick.<locals>.exitGracefully
s���8��H�H�Jr�r�r)rSr�r�AttributeError�exit)r�r(s` r�rz_Screen.exitonclick�sF���	�$	�	
���^�$�����	��J���	���G�	�s�
/�A�A)
r�r�r�rr2r�rr-r'r*rrrr�r�r�r�r��sR���E��G�
�'�]�F�<�"�w�-��X���+�&�t�K�/@�&�P%�"��r�r�c�6�eZdZ	dZdZedededfd�Zy)rNrlr�r�c��tj�t�t_tj	|tj|||��y)N)rlr�r�)rrr
rr-)r�rlr�r�s    r�r-zTurtle.__init__s;���>�>�!�#�X�F�N����4����!&�*8�#*�	�	,r�)r�r�r�r�rr�r-r�r�r�rrs1���
�D��G��G�}� $�%5� 6��i��	,r�rc�h�	i}tD]}d|z}t|�j||<�!tD]}d|z}t|�j||<�!t	d|zd�5}td�|D��}|j
d�|ddD]6}|j
dt|�z�|j
d	||z��8|d}|j
dt|�z�|j
d
||z�|j
d�|j�ddd�y#1swYyxYw)Nz_Screen.zTurtle.z%s.pyr�c3�TK�|] }|jd�dtvr|���"y�w)r�r�N)r�_alias_list)r�r�s  r�r�z&write_docstringdict.<locals>.<genexpr>As+����=�A������a���;��=�s�&(zdocsdict = {

rz%s :
z        """%s
""",

z        """%s
"""

z}
)	�_tg_screen_functionsr��__doc__�_tg_turtle_functionsr�r�r}�repr�close)r��docsdict�
methodnamer�r�r�s      r�r�r�+s=��
��H�*�*�
���#���S�	�)�)���
�*�+�*�
��
�"���S�	�)�)���
�*�
�g�� ��	%����=��=�=��	���"�#����9�	?�C�
�G�G�H�t�C�y�(�)�
�G�G�-���
�=�>�	?��2�h��	����4��9�$�%�	���(�8�C�=�8�9�	�����	���	����s
�#B<D(�(D1c���	dd|j�iz}t|�}|j}|D]}	||t|�_�y#t
$rt
d|z�Y�3wxYw)Nz!turtle_docstringdict_%(language)sr�zBad docstring-entry: %s)r4�
__import__r5r�r1r�r�)�lang�modname�moduler5r�s     r��read_docstringsr<Mst���2�Z��
�
��4M�M�G�
��
 �F����H��3��	3� (��
�D��I��3���	3��+�c�1�2�	3�s�A
�
A$�#A$zCannot find docsdict forz;Unknown Error when trying to import %s-docstring-dictionaryc��	tj|�}|jt|jj��dd��}g}|jj�D�]B}|jxxtjjk(rn xtjjk(rnn|j|j��lxtjjk(r |jd|j�����xtjjk(r,|j|j�d|j�����tjjk(r |jd|j�����.	td|j��ddj!|��d	�}t#|�|fS)
Nr�)�
parameters�*r�z**zUnsupported parameter kind�(z, �))�inspect�	signature�replacer�r>�values�kind�	Parameter�POSITIONAL_ONLY�POSITIONAL_OR_KEYWORDr�r��VAR_POSITIONAL�KEYWORD_ONLY�VAR_KEYWORD�RuntimeErrorrr)�ob�orig_sig�func_sig�	call_args�param�	call_texts      r��getmethparlistrTjs~���� � ��$�H������+�+�2�2�4�5�a�b�9� ��H��I��$�$�+�+�-�M���j�j�:�1��!�!�1�1�9�'�#�#�9�9�:�� � ����,�1��"�"�1�1�� � �1�U�Z�Z�L�!1�2�/��"�"�/�/�� � �E�J�J�<�q�����!=�>��"�"�.�.�� � �2�e�j�j�\�!2�3��"�#?����L�L�M��D�I�I�i�(�)��+�I��x�=�)�#�#r�c��	ddl}|�ytd}|jd|zd�}|jd|z�}|j	d|�}|S)Nrr��%s.r�� \(.+ %s\):�:��rer�rD�compile�sub)�docstrrZ�
turtlename�	newdocstr�parexps     r��_turtle_docrevisera��Z���
�
�~���o�&�J����u�z�1�"�5�I�
�Z�Z���3�
4�F��
�
�3�	�*�I��r�c��	ddl}|�ytd}|jd|zd�}|jd|z�}|j	d|�}|S)Nrr�rVr�rWrXrY)r]rZ�
screennamer_r`s     r��_screen_docrevisere�rbr�ardef {name}{paramslist}:
    if {obj} is None:
        if not TurtleScreen._RUNNING:
            TurtleScreen._RUNNING = True
            raise Terminator
        {obj} = {init}
    try:
        return {obj}.{name}{argslist}
    except TK.TclError:
        if not TurtleScreen._RUNNING:
            TurtleScreen._RUNNING = True
            raise Terminator
        raise
c��|D]}t||�}t|�\}}|dk(rtd||��0tj	|||||��}	t|	t
��||j�t
�|_��y)Nr�z>>>>>>)�obj�initr��
paramslist�argslist)�getattrrTr��__func_body�formatr�globalsr1)
�	functionsr�rgrh�	docreviser6r�pl1�pl2�defstrs
          r��_make_global_funcsrt�s����	B�
���j�)��!�&�)���S��"�9��(�C��%���#�#��$�Z�/2�S�$�B���V�W�Y��(1�&�.�.�(A��	�*��%�	Br�zTurtle._screenzScreen()zTurtle._penzTurtle()�__main__c�B�t�rt�yt�yr�)rOr^rVr�r�r��	switchpenrw�s���8��D��Dr�c���	t�td�t�td�t	�td�t
d�D]p}|dk(r
t�t
d�D]}td�td��|dk(rtd�t�t�td	�t	��rtd
�td�td�t�td�td�td�td�td
�t	�tdd
�tdd
�td�t
d�D].}td�td�td�td��0td�t�t
d�D].}td�td�td�td��0t�y)NT�dr�rrbr��Z�maroonrCr�r�F��
startstartr��redr])rar+r{r1r>r|rr2rDrQr:r?r`r})rrs  r��demo1r�sa��,�
���t��
����
���
�a���q��	�A��A�v����1�X�
������R��
��A�v��h���
��D��B�K��F�	�	�a��
�g���u�
�
��
�b�	����
�b�	����
�c�
���
�l�A��
�g�q��
�e���q��	�A��B�K���H��B�K��"�I�		�	�t�����q��	�A��B�K���H��B�K��"�I�		�
	�
r�c�	�	td�t�td�tt	dd��tdd�dz}t
d�td�D]}t�t|d��td�t�rt�t�r�t�td�td	�d}t!d
�td�td�tdd
�D]�}|dkDr t#�t%d	d|zz
dd|z�td�D]}t'|�td��t)�|dz
}td�tt�dzdz���td�t+�t'd�t
d�t-�t/dd�td�t#�td�D]/}tdd�t
d�t'd�t
d��1t)�td�t+�t'd�t-�t1d�t3�}|j5d�t7�}|j5d�|j1d�|j�|j9d�|jd�|j;�|j=dd�|jd�|j?�|jd�|j/dd�|jd�|jd�tt	|��d}|j|�dkDr�|j'd�|jd �|j|j	|��|j'd�|d!zdk(r*|jA�|jA�t�|dz
}|j|�dkDr��|jd"d#d$�%�|j!d&�|j!d�d'�}tCjDd�t�r+|j�|j�t�r�+|j'd�|jd(d)�*�|jG|d�y)+Nr�r�rrrz�r�zwait a moment...r��greenr|rTrS��x��FrCr~�yellowrb�2r�rBi�(rc�blue�orangerg@g333333�?r�zCAUGHT! )rrS�boldr`)r�r�r�c�,�t�t�yr�)rr)r�r�s  r��babazdemo2.<locals>.baba`s���M��Er�z  Click me!)�Courierr�r�)r�)$rqrrrZrerwr<rcrrwr5r}rzryrarRrrXr2rBrAr?r^rVr:rlrIrbrrQr{rJr>rs�time�sleeprS)r!r�laenger�trir�rIr�s        r��demo2r�
s���(�
�a��
����
��7�1�a�=�!��!�Q���#��
�2���r��	�A��K��6�2��	�	� �!��!��F� �!�
��
�2���#���������
�
�3���r�2��
	"�A��1�u����#�b��d�(�A�r�!�t�,��1�X�
���6�
��3��
�
�J��b�L�F��r�F��5�7�1�9�b�.�!�
	"�	�3��
��
�2��
�2��
��
�e�H��
�a�����q��	�A��2�r�N��r�F��r�F��r�F�		�
	�
�
�2��
��
�2��
��
�h���k�����v��������&�!����X���������B�����Q���	�	�����C����	�	�"�
����
����Q�����V�H�%����q���	�	�!���7�6�?�#����l�l�6�"�Q�&��I�I�c�N��I�I�c�N��N�N�3�;�;�v�.�/��F�F�1�I��r�z�Q�������	�	�����Q�J�E��l�l�6�"�Q�&�	�	�	�*�#8��	�H����W�����U��	�	
�
�
�1�
��!��H�H�J��K�K�M� �!�	���r�
��	�	�-�(?�	�A����D�!�r�)r�)�turtle_docstringdict)E�tkinterr+r�r�r�rBr}r��os.pathrrr�copyrr�_tg_classesr0r2�
_tg_utilities�__all__r/r�r�r�r�r�r�rr�r�rrr,rr0rerc�objectrr�r.rr=r	r�r1rxrr
r
r�rrr�r<�	_LANGUAGE�ImportErrorrTrarerlrtrr�r�rwrr�rr�r�r��<module>r�s���0K�Z�����
��'�'�� �I��)��!��'��/�
��-�-�0D�D���(�>�*��,��	��#�	��4�	��c�	�	�c�	�	�T�		�
	�T�	�	�
�
	�	�S�	�	��	�	�$�	�	��	�	�W�	�	�g�	�	�z�	�	�D�	�	�I�	� 	��!	�""�)��'	��,�:�<1��t��
*$�E�*$�j��1�
�.�*a#�R�X�X�a#�F�����I�6�)�B�E�E�)�0
����B5�v�B5�T	�)�	��)��
,1�F�,1�^"6�f�"6�Li�#�i�VC��C�LR�6�R�jL�6�L�>o��j�o�b%
���~�l�~�@,�Y�,�(
�� �D3�"
���	�M��I���	�"�"$�H
�
� �� 
B��'��#�Z�1B�D��'�� �*�.?�A����z���2�ja�F
�G�	�G��M�C��Ww�1�	�/�0�1��@t�1�	�
$�i�0��M�	�H�BK�L�M�M�s*�G5�
H	�5
H�H�	H+�H+�*H+
© 2025 GrazzMean