__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

"%vg#����%SSKJr SSKrSSKrSSKJr SSKJr SSKJ	r	J
r
JrJrJ
r
Jr SSKJrJr SSKJr SS	KJr S
\S'\R.R0r\	(aSSKJrJr \
\\\S
4\ 4r!"SS5r"SSSjjr#SSSjjr$SSSjjr%SSjr&SSjr'g!\a SrNrf=f)�)�annotationsN)�Sequence)�
ModuleType)�
TYPE_CHECKING�Any�AnyStr�Callable�Union�cast�)�Image�
ImageColor)�	deprecate)�Coordsz(Callable[[], Image.core._Outline] | None�Outline)�
ImageDraw2�	ImageFont.c�N�\rSrSr%SrS\S'S!S"SjjrS#SjrS$SjrS!S%Sjjr	S&S'S	jjr
S!S(S
jjrS)S*SjjrS)S+Sjjr
S)S,S
jjrS-S.SjjrS/S0SjjrS)S*SjjrS!S1SjjrS)S+SjjrS2S3SjjrS)S+SjjrS2SS.S4SjjjrS5SjrS6SjrS7SjrS8S9SjjrS8SS.S:SjjjrS;SS.S<SjjjrS=SS.S>SjjjrS=SS.S>SjjjrS rg)?�	ImageDraw�@N�NImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont | None�fontc��UR5 UR(aUR5 SnUcURnX!R:wa&US:XaURS:XaSnO
Sn[	U5eUS:XaUR
UlOSUlXlURUl[RRURU5Ul
X lUS;a!URRS5UlO URRS	5UlUS
;aSUl
OSUl
S
Ulg)aX
Create a drawing instance.

:param im: The image to draw in.
:param mode: Optional mode to use for color values.  For RGB
   images, this argument can be RGB or RGBA (to blend the
   drawing into the image).  For all other modes, this argument
   must be the same as the image mode.  If omitted, the mode
   defaults to the mode of the image.
rN�RGBA�RGBrz
mode mismatch�P)�I�F���)�1rrrr �LF)�load�readonly�_copy�mode�
ValueError�palette�_image�imr
�core�draw�draw_ink�ink�fontmode�fill)�selfr)r%�blend�msgs     �//usr/lib/python3/dist-packages/PIL/ImageDraw.py�__init__�ImageDraw.__init__Es���	���	�
�;�;��H�H�J����<��7�7�D��7�7�?��v�~�"�'�'�U�"2���%�� ��o�%��3�;��:�:�D�L��D�L����%�%����J�J�O�O�D�G�G�U�3��	��	��:���y�y�)�)�!�,�D�H��y�y�)�)�"�-�D�H��'�'��D�M��D�M���	�c�t�UR(dSSKJn UR"5UlUR$)a�
Get the current default font.

To set the default font for this ImageDraw instance::

    from PIL import ImageDraw, ImageFont
    draw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

To set the default font for all future ImageDraw instances::

    from PIL import ImageDraw, ImageFont
    ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

If the current default font is ``None``,
it is initialized with ``ImageFont.load_default()``.

:returns: An image font.r�r)r�r�load_default)r0rs  r3�getfont�ImageDraw.getfontos(��(�y�y�#�!�.�.�0�D�I��y�y�r6c�X�UbSSKJn UR"U5$UR5$)Nrr8)r9rr:r;)r0�	font_sizers   r3�_getfont�ImageDraw._getfont�s*��� �#��)�)�)�4�4��<�<�>�!r6c���SnSnUc3Uc0UR(aURnX44$URnX44$Ub�[U[5(a [R
"XR5nUR(a:[U[5(a%URRXR5nURRU5nUb�[U[5(a [R
"X R5nUR(a:[U[5(a%URRX R5nURRU5nX44$�N)r/r-�
isinstance�strr�getcolorr%r'�tupler(r+r,)r0r-r/�
result_ink�result_fills     r3�_getink�ImageDraw._getink�s���
����;�4�<��y�y�"�h�h�� �&�&�"�X�X�
��&�&����c�3�'�'�$�-�-�c�9�9�=�C��<�<�J�s�E�$:�$:��,�,�/�/��[�[�A�C�!�Y�Y�/�/��4�
����d�C�(�(�%�.�.�t�Y�Y�?�D��<�<�J�t�U�$;�$;��<�<�0�0��{�{�C�D�"�i�i�0�0��6���&�&r6c�l�URU5updUbURRXX6U5 gg)zDraw an arc.N)rIr+�draw_arc)r0�xy�start�endr/�widthr-s       r3�arc�
ImageDraw.arc�s4���L�L��&�	���?��I�I���r�#�E�:�r6c��UR5 URU5upCUcUnUb'URRXRU5 gg)zDraw a bitmap.N)r"rIr+�draw_bitmapr))r0rM�bitmapr/r-s     r3rU�ImageDraw.bitmap�sI��	���
��L�L��&�	���;��C��?��I�I�!�!�"�i�i��5�r6c���URXT5upxUbURRXX8S5 Ub,Xx:wa&US:waURRXX7SU5 gggg)z
Draw a chord.Nrr)rIr+�
draw_chord�	r0rMrNrOr/�outlinerPr-�fill_inks	         r3�chord�ImageDraw.chord�s`�����W�3�
�����I�I� � ��C�1�=��?�s��5�A�:��I�I� � ��C�a��?�4>��?r6c���URX25upVUbURRXS5 Ub+XV:wa%US:waURRXSU5 gggg)zDraw an ellipse.Nrr)rIr+�draw_ellipse�r0rMr/rZrPr-r[s       r3�ellipse�ImageDraw.ellipse�s\�����W�3�
�����I�I�"�"�2��3��?�s��5�A�:��I�I�"�"�2�A�u�5�4>��?r6c�d�USU-
USU-
USU-USU-4nURXcXE5 g)z4Draw a circle given center coordinates and a radius.rrN)ra)r0rM�radiusr/rZrP�
ellipse_xys       r3�circle�ImageDraw.circle�s@����e�f�n�b��e�f�n�b��e�f�n�b��e�f�n�U�
����Z�w�6r6c
�.^�URU5SnUGbqURRXT5 US:XGaMTS:�GaE[US[[
45(a[
[[[U5nOI[S[U5S5Vs/sH(n[
[[[XUS-55PM* nn[S[U5S-
5GH�nXgnXgS-
U4X�US-44V	V
s/sHEup�[R"[R"U
SU	S-
U	SU
S-
55S-PMG nn	n
USUS:XaMzSU4SjjnUSUS:�=(a USS	-
US:�=(d  USUS:=(a USS	-US:�n
USTS--
S-USTS--
S-4USTS--S-
USTS--S-
4/nU
(aUSS
-USS
-p�OUSS
-
USS
-
p�URX�S
-
U
S
-
U5 TS:�dGMOU
(aU"X�SS
-5UU"X�SS
-5/nOU"X�SS
-
5UU"X�SS
-
5/nURX�SS
9 GM� ggggs snfs sn
n	f)z6Draw a line, or a connected sequence of line segments.rN�curve��r�hc�>�Uup#US-nTS-S-
n[SX$[R"[R"U55-4X4[R"[R"U55-4455$)N�Zrkrc3�# �UH;upXS:�a[R"U5O[R"U5-v� M= g7f)rN)�math�floor�ceil)�.0�p�p_ds   r3�	<genexpr>�9ImageDraw.line.<locals>.coord_at_angle.<locals>.<genexpr>s8���%�+����!�G����C�����3��P�+�s�AA)rFrp�cos�radians�sin)�coord�angle�x�y�distancerPs     �r3�coord_at_angle�&ImageDraw.line.<locals>.coord_at_anglesz��� %�������#(�1�9�q�=��$�%�"#�t�x�x����U�8K�/L�$L� M�!"�t�x�x����U�8K�/L�$L� M�+�%� �r6�rn��)rP)r{�Sequence[float]r|�float�returnztuple[float, ...])rIr+�
draw_linesrC�listrFrrr��range�lenrp�degrees�atan2�pieslice�line)r0rMr/rP�jointr-�points�i�pointrNrO�anglesr��flipped�coords�
gap_coordss   `            r3r��ImageDraw.line�s����l�l�4� ��#���?��I�I� � ��%�0����E�A�I��b��e�d�E�]�3�3�!�(�8�E�?�";�R�@�F�"'�q�#�b�'�1�!5��!5�A��X�e�_�e�B�1�q�5�M�.B�C�!5����q�#�f�+��/�2�A�"�I�E�
$��E�]�E�2�"�1�q�5�M�2�+��+�J�E����T�Z�Z��A���q��0A�5��8�c�RS�f�CT�%U�V���+����a�y�F�1�I�-� ��.��7<��*���q�	�F�1�I�-�M�&��)�c�/�F�1�I�2M�Q� ��)�f�Q�i�/�O�F�1�I��O�f�Q�i�4O���q��E�A�I�-��1�5��8�e�a�i�3G�!�3K�L��q��E�A�I�-��1�5��8�e�a�i�3G�!�3K�L��F��&,�Q�i�"�n�f�Q�i�"�n�s�&,�Q�i�"�n�f�Q�i�"�n�s��M�M�&�"�*�c�B�h��E��q�y�"� .�u�Q�i�"�n� E� %� .�u�Q�i�"�n� E�*�J�!/�u�Q�i�"�n� E� %� .�u�Q�i�"�n� E�*�J�
�	�	�*�!�	�<�o3�%.������s
�/J�?AJc���UR5 URX25upEUbURRXS5 Ub#XE:waURRXS5 ggg)z(Experimental) Draw a shape.Nrr)�closerIr+�draw_outline)r0�shaper/rZr-r[s      r3r��ImageDraw.shape<s[��	���
����W�3�
�����I�I�"�"�5�A�6��?�s���I�I�"�"�5�q�1� /�?r6c���URXT5upxUbURRXX8S5 Ub,Xx:wa&US:waURRXX7SU5 gggg)zDraw a pieslice.Nrr)rIr+�
draw_pieslicerYs	         r3r��ImageDraw.piesliceJs`�����W�3�
�����I�I�#�#�B�s�a�@��?�s��5�A�:��I�I�#�#�B�s��E�B�4>��?r6c�h�URU5up2UbURRX5 gg)z#Draw one or more individual pixels.N)rIr+�draw_points)r0rMr/r-s    r3r��ImageDraw.pointZs.���L�L��&�	���?��I�I�!�!�"�*�r6c��URX25upVUbURRXS5 UGb�XV:wGa�US:wGa�US:XaURRXSU5 gURGba[R
"SURR5nURS5SnUR5n	[U	5n
U
RRXS5 UR5n[U5n
US-S-
nU
RRXSU5 URX�S9 [R
"URURR5n[U5n
U
RRXSU5 URRURSUR-UR5 ggggg)zDraw a polygon.Nrrr rk)�mask�rr)rIr+�draw_polygonr)r
�new�size�copy�Draw�paster%)
r0rMr/rZrPr-r[r��mask_ink�fill_imr+�ink_imr)s
             r3�polygon�ImageDraw.polygon`sk�����W�3�
�����I�I�"�"�2��3��?�s��5�A�:���z��	�	�&�&�r��5�9����$��y�y��d�g�g�l�l�3���<�<��?�1�-���)�)�+���G�}���	�	�&�&�r�Q�7�������F�|����	�A�
���	�	�&�&�r�Q��>��
�
�6�
�0��Y�Y�t�y�y�$�'�'�,�,�7���B�x���	�	�&�&�r��5�9����
�
�b�e�e�V�b�g�g�%5�t�w�w�?�)%�4>��?r6c�@�[XU5nURXtXV5 g)zDraw a regular polygon.N)�!_compute_regular_polygon_verticesr�)r0�bounding_circle�n_sides�rotationr/rZrPrMs        r3�regular_polygon�ImageDraw.regular_polygon�s��/���
R�����R�w�.r6c���URX25upVUbURRXS5 Ub+XV:wa%US:waURRXSU5 gggg)zDraw a rectangle.Nrr)rIr+�draw_rectangler`s       r3�	rectangle�ImageDraw.rectangle�s\�����W�3�
�����I�I�$�$�R�1�5��?�s��5�A�:��I�I�$�$�R�a��7�4>��?r6)�cornersc
��^^^^^^^^^^^^�[US[[45(a([[[[
U5uummummO[[[
U5ummmmTT:a
Sn[
U5eTT:a
Sn[
U5eTcSmUS-m[T5m[T5m[T5m[T5mSumm[T5(aOTTT-
S-
:�mT(aTT-
mTTT-
S-
:�mT(aTT-
mT(aT(aTRXUT5$TS:Xd[T5(dTRXUT5$[TS-5nTRXC5ummS
UUUUUUUUUUUU4S	jjn	TGb>U	"S
5 T(a.TRRTTU-S-TTU-
S-
4TS5 O?TU-
S-
TU-S-:�a-TRRTU-S-TTU-
S-
T4TS5 T(d�T(d�TTTU-T/n
TS(aU
S==US--
ss'TS(aU
S==US--ss'TRRU
TS5 TU-
TTT/nTS(aUS==US--
ss'TS(aUS==US--ss'TRRUTS5 TGb�TT:wGa�TS:wGa�U	"S5 T(d�TTTTT-S-
/nTS(aUS==US--
ss'TS(aUS==US--ss'TRRUTS5 TTT-
S-TT/n
TS(aU
S==US--
ss'TS(aU
S==US--ss'TRRU
TS5 T(d�TTTT-S-
T/n
TS(aU
S==US--
ss'TS(aU
S==US--ss'TRRU
TS5 TT-
S-TTT/nTS(aUS==US--
ss'TS(aUS==US--ss'TRRUTS5 ggggg)zDraw a rounded rectangle.rz&x1 must be greater than or equal to x0z&y1 must be greater than or equal to y0N)TTTTrk)FFrc��>�T(aTT
TT-T
T-4SS4TTT-
TT-T4SS44nO|T(aTT
TT-T
T-4SS4TT-
T
TT
T-4SS44nOV[U4Sj[TT
TT-T
T-4SS4TT-
T
TT
T-4SS4TT-
TT-
TT4SS4TTT-
TT-T4SS44555nUHHnU(a T	RR"UTS4-6 M*T	RR"UTT
4-6 MJ g)Nr�rlrrn�c3�D># �UHupTU(dMUv� M g7frB�)rsr��partr�s   �r3rv�DImageDraw.rounded_rectangle.<locals>.draw_corners.<locals>.<genexpr>�s)�����$����q�z��D�$�s� �	 r)rF�	enumerater+r�rL)r��partsr�r��dr[�full_x�full_yr-r0rP�x0�x1�y0�y1s   ������������r3�draw_corners�1ImageDraw.rounded_rectangle.<locals>.draw_corners�s]�����"�b�1�f�b�1�f�-�s�C�8��"�q�&�"�q�&�"�-�q�#�6�����"�b�1�f�b�1�f�-�r�3�7��1�f�b�"�b�1�f�-�s�B�7�����#,� �"�b�1�f�b�1�f�5�s�C�@� �1�f�b�"�b�1�f�5�s�C�@� �1�f�b�1�f�b�"�5�q�"�=� �"�q�&�"�q�&�"�5�r�3�?�	�$��������I�I�+�+�d�h��]�.B�D��I�I�&�&���e��)<�>�	r6Tr�F)r��boolr��None)rCr�rFrrr�r&�round�allra�anyr��intrIr+r�)r0rMrdr/rZrPr�r2�rr��left�right�top�bottomr�r[r�r�r-r�r�r�r�s`    ``       @@@@@@@@@r3�rounded_rectangle�ImageDraw.rounded_rectangle�sX�����b��e�d�E�]�+�+�!%�h�x���&?��!D��H�R��h�r�2�!�(�5�/�2�6�N�B��B��
��7�:�C��S�/�!�
��7�:�C��S�/�!��?�.�G��Q�J��
�2�Y��
�2�Y��
�2�Y��
�2�Y��%�����w�<�<��"�r�'�A�+�%�F����G���"�r�'�A�+�%�F����G���&��|�|�B�g�u�=�=���6��W����>�>�"�G�U�;�;���Q��K�����W�3�
��X� 	?� 	?� 	?�D�������	�	�(�(�"�b�1�f�q�j�"�b�1�f�q�j�)I�8�UV�W��a��!��b�1�f�q�j�(��	�	�(�(�"�q�&�1�*�b�"�q�&�1�*�b�)I�8�UV�W��&��B��Q���+���1�:���G�q�1�u�$�G��1�:���G�q�1�u�$�G��	�	�(�(��x��;��a���R��,���1�:��!�H��A��%�H��1�:��!�H��A��%�H��	�	�(�(���!�<��?�s�h��5�A�:������2�r�2��:��>�2���1�:���F�a�!�e�O�F��1�:���F�a�!�e�O�F��	�	�(�(��c�1�5��b�5�j�1�n�b�"�5���1�:��1�I��Q��&�I��1�:��1�I��Q��&�I��	�	�(�(���a�8���B��U�
�Q���3���1�:���G�q�1�u�$�G��1�:���G�q�1�u�$�G��	�	�(�(��s�A�6��e��a���R��4���1�:��!�H��A��%�H��1�:��!�H��A��%�H��	�	�(�(���Q�7��#4>��?r6c�<�[U[5(aSOSnX!;$�N�
�
)rCrD)r0�text�split_characters   r3�_multiline_check�ImageDraw._multiline_check+s��",�T�3�"7�"7�$�U���&�&r6c�Z�UR[U[5(aS5$S5$r�)�splitrCrD)r0r�s  r3�_multiline_split�ImageDraw._multiline_split0s%���z�z�*�T�3�"7�"7�$�C�C�U�C�Cr6c�6�URSSXS9SU-U-$)Nr��A)�stroke_widthr�)�textbbox)r0r�spacingr�s    r3�_multiline_spacing�ImageDraw._multiline_spacing3s0��
�M�M�&�#�t�M�G��J��
��
�	
r6c��^^^^^^^	^
^
^^�T
(aTRS;a
Sn[U5eTc TRTRS55mTR	T5(aTRTTUTTUUTT	T
UUT
5
$SU4SjjnS	S
UUUU
U	UUU
UUU4SjjjnU"U5nUb5SnU(a
UbU"U5OUnUbU"UU5 U"US5 gU"U5 gg)z
Draw text.�rr�3Embedded color supported only in RGB and RGBA modesNr>c�B>�TRU5upUcUceU$U$rB)rI)r/r-r[r0s   �r3�getink�ImageDraw.text.<locals>.getinkos.��� �L�L��.�M�C��{��+�+�+����Jr6rc�>�TRnUS:Xa	T(aSn/n[S5H nUR[TU55 M" [R
"TS5S[R
"TS5S4nTR"TU/T
Q7TTTUTUUS.TD6upgUSUS-USUS-/nUS:Xa�XfRS5ph[R"SU5Sn	URSU	5 Uup�TRb?TRRX�X�UR S-X�R S-4U5 ggTR"R%X6U5 g![aE TR"TUTTTUTU/T
Q7SU0TD6nN�![a TRT5nN�f=ff=f)	Nrrrkr)�	direction�features�languager��anchorr-rNrNr�r�)r.r��appendr�rp�modf�getmask2�AttributeError�getmask�	TypeError�getband�struct�pack�fillbandr)r�r�r+rT)r-r�r%r{r�rNr��offset�color�	ink_alphar}r~r��argsr��embedded_colorr�r�kwargsr�r0r�rMs            �����������r3�	draw_text�!ImageDraw.text.<locals>.draw_textvs�����=�=�D��q� �^����E��1�X�����S��A��Z�(���Y�Y�r�!�u�%�a�(�$�)�)�B�q�E�*:�1�*=�>�E�
.�#�}�}��� �� �(�%�%�!-�!��� �� ����q��F�1�I�-�u�Q�x�&��)�/C�D��$�v�~�#�L�L��O�t�"�K�K��S�1�!�4�	����q�)�,�����7�7�&��G�G�M�M��1�$�)�)�A�,�&6��I�I�a�L�8H�I�4��'�
�	�	�%�%�e�3�7��;"�
.�.��<�<���!� � �$������$��!��D��!�.��<�<��-�D�.��
.�s*�7E/�/
F>�:F�F:�6F>�9F:�:F>)r/�_Ink | Noner�r�)r)r-r�r�r�r�r�)r%r&r?�getr��multiline_text)r0rMr�r/rr�r��alignr�r�r�r��stroke_fillr	rr
r2r�rr-�
stroke_inks``` ``  ```  ```     r3r��ImageDraw.text?s�����0�d�i�i��>�G�C��S�/�!��<��=�=����K�!8�9�D�� � ��&�&��&�&���������������
� 	�4	8�4	8�4	8�l�T�l���?��J��4?�4K�V�K�0�QT�
��%��*�l�3��#�q�!��#��r6)r>c�&�US:Xa
Sn[U5eUcSnO2[U5S:wa
Sn[U5eUSS;a
Sn[U5eUcURU5n/nS	nURU5nUR	XFU5nUH1nURUXHX�S
9nUR
U5 [UU5nM3 USnUSS:XaU[U5S-
U-S--nOUSS
:XaU[U5S-
U--n[U5H�unnUS	nUUU-
nUS	S:Xa	UUS--nOUS	S:XaUU-nUS:XaO(US:Xa	UUS--
nOUS:XaUU-
nO
Sn[U5eURUU4UUUUUU	U
UUU
S9 UU-
nM� g)N�ttb�/ttb direction is unsupported for multiline text�lark�#anchor must be a 2 character stringr�tb�'anchor not supported for multiline textr)r�r�r��m�@r�r�r��centerr��)align must be "left", "center" or "right")r�r�r�r�rr	)
r&r�r?r�r��
textlengthr��maxr�r�)r0rMr�r/rr�r�rr�r�r�r�rr	r>r2�widths�	max_width�lines�line_spacingr��
line_widthr��idxr��width_differences                          r3r�ImageDraw.multiline_text�s��.���C�C��S�/�!��>��F�
��[�A�
�7�C��S�/�!�
�A�Y�$�
�;�C��S�/�!��<��=�=��+�D����	��%�%�d�+���.�.�t�l�K���D�����d�(�)��J�
�M�M�*�%��I�z�2�I����e���!�9����C��J��N�l�2�S�8�8�C�
�A�Y�#�
��C��J��N�l�2�2�C�"�5�)�I�C���a�5�D�(�6�#�;�6���a�y�C���(�3�.�.�����c�!��(�(�������(�"��(�3�.�.���'�!��(�(��A�� ��o�%��I�I��s������#�!�!�)�'�-�
�
�
�<��C�E*r6c��URU5(a
Sn[U5eU(aURS;a
Sn[U5eUcURU5nU(aSOURn	URXX4U5$)z@Get the length of a given string, in pixels with 1/64 precision.z&can't measure length of multiline textr�r�r)r�r&r%r?r.�	getlength)
r0r�rr�r�r�r	r>r2r%s
          r3r�ImageDraw.textlengthst��"� � ��&�&�:�C��S�/�!��d�i�i��>�G�C��S�/�!��<��=�=��+�D�'�v�T�]�]���~�~�d�)�x�H�Hr6c
�z�U(aURS;a
Sn
[U
5eUcURU5nURU5(aUR	UUUUUUUUU	U
U5$U(aSOUR
nUR
X.XxX�U5nUSUS-USUS-USUS-USUS-4$)z2Get the bounding box of a given string, in pixels.r�r�rrrrkr�)r%r&r?r��multiline_textbboxr.�getbbox)r0rMr�rr�r�rr�r�r�r�r	r>r2r%�bboxs                r3r��ImageDraw.textbbox5s���,�d�i�i��>�G�C��S�/�!��<��=�=��+�D�� � ��&�&��*�*�������������
�(�v�T�]�]���|�|��	�X�V�
���A�w��A����Q��"�Q�%���a��2�a�5��$�q�'�B�q�E�/�Q�Qr6c
���US:Xa
Sn
[U
5eUcSnO2[U5S:wa
Sn
[U
5eUSS;a
Sn
[U
5eUcURU5n/nS	nURU5nUR	X5U
5nUH4nURUUUUU	US
9nUR
U5 [UU5nM6 USnUSS:XaU[U5S-
U-S--nOUSS
:XaU[U5S-
U--nSn[U5H�unnUS	nX�U-
nUS	S:Xa	UUS--nOUS	S:XaUU-nUS:XaO(US:Xa	UUS--
nOUS:XaUU-
nO
Sn
[U
5eURUU4UUUUUU	U
US9	nUcUnOF[US	US	5[USUS5[USUS5[USUS54nUU-
nM� UcUS	USUS	US4$U$)Nrrrrkrrrrr)r�r�r�r	rrr�r�r�rr�r)r�r�r�r�r	r�)r&r�r?r�r�rr�r r�r��min)r0rMr�rr�r�rr�r�r�r�r	r>r2r!r"r#r$r�r%r�r/r&r�r'�	bbox_lines                          r3r-�ImageDraw.multiline_textbboxgs���*���C�C��S�/�!��>��F�
��[�A�
�7�C��S�/�!�
�A�Y�$�
�;�C��S�/�!��<��=�=��+�D����	��%�%�d�+���.�.�t�l�K���D������#�!�!�-�
)��J�
�M�M�*�%��I�z�2�I����e���!�9����C��J��N�l�2�S�8�8�C�
�A�Y�#�
��C��J��N�l�2�2�C�9=��"�5�)�I�C���a�5�D�(�#�;�6���a�y�C���(�3�.�.�����c�!��(�(�������(�"��(�3�.�.���'�!��(�(��A�� ��o�%��
�
��s�����#�!�!�)�-�&�
�I��|� ����Q���1��.���Q���1��.���Q���1��.���Q���1��.�	��
�<��C�U*�X�<��a�5�"�Q�%��A���1��-�-��r6)	r(r+r/rr.r)r-r%r'rB)r)�Image.Imager%�
str | Noner�r�)r��GImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont)r>�float | Noner�r7)r-r
r/r
r�ztuple[int | None, int | None])Nr)rMrrNr�rOr�r/r
rPr�r�r�)rMz
Sequence[int]rUr5r/r
r�r�)NNr)rMrrNr�rOr�r/r
rZr
rPr�r�r�)
rMrr/r
rZr
rPr�r�r�)rMr�rdr�r/r
rZr
rPr�r�r�)NrN)
rMrr/r
rPr�r�r6r�r��NN)r�zImage.core._Outliner/r
rZr
r�r�)rMrr/r
r�r�)rNNr)r��!Sequence[Sequence[float] | float]r�r�r�r�r/r
rZr
rPr�r�r�)rMrrdr�r/r
rZr
rPr�r�z$tuple[bool, bool, bool, bool] | Noner�r�)r�rr�r�)r�rr�zlist[AnyStr])rr7r�r�r�r�r�r�)NNNrjr�NNNrNF) rM�tuple[float, float]r�rr/r
rrr�r6r�r�rrDr�r6r��list[str] | Noner�r6r�r�rr
r	r�rrr
rr�r�)rMr;r�rr/r
rrr�r6r�r�rrDr�r6r�r<r�r6r�r�rr
r	r�r>r8r�r�)NNNNF)r�rrrr�r6r�r<r�r6r	r�r>r8r�r�)	NNrjr�NNNrF)rMr;r�rrrr�r6r�r�rrDr�r6r�r<r�r6r�r�r	r�r>r8r�z!tuple[float, float, float, float]) �__name__�
__module__�__qualname__�__firstlineno__r�__annotations__r4r;r?rIrQrUr\rarfr�r�r�r�r�r�r�r�r�r�r�r�rrr�r-�__static_attributes__r�r6r3rr@s���	
�	�V�
�(�T�	P��6"�%�"�	P�"�59�'��'�&1�'�	&�'�<!��
;��;��;��	;�
�;��
;�
�;�KO�	6��	6�)4�	6�<G�	6�	
�	6� !�#��@��@��@��	@�
�@��
@��@�
�@�&!�#��6��6��6��	6�
�6�
�
6�$!�#��
7��
7��
7��	
7�
�
7��
7�
�
7�!�� �K=��K=��K=��	K=�
�K=�
�
K=�`!�#�	2�"�2��2��	2�

�2�&!�#��C��C��C��	C�
�C��
C��C�
�C� +�!�#��"@��"@��"@��	"@�
�"@�
�
"@�P� �#��/�:�/��/��	/�
�/��
/��/�
�/� !�#��8��8��8��	8�
�8�
�
8�"� �#��
J8�9=�J8��J8��J8��	J8�
�J8��
J8�6�J8�
�J8�X'�
D�

�U�

��

��	

�

�

� !�
�!��� $�%)�#��#'�$�'{��{��{��	{�
�
{��{��{��{��{�#�{� �!{�"�#{�$!�%{�&�'{�(�){�*�+{�,
�-{�B!�
�!��� $�%)�#��#'�$�'Z �*#'�+Z ��Z ��Z ��	Z �
�
Z ��Z ��Z ��Z ��Z �#�Z � �!Z �"�#Z �$!�%Z �&�'Z �* �+Z �,
�-Z �H
� $�%)�#�$�I�#'�I��I�
�	I��I�#�I��I��I� �I�
�I�L
�!��� $�%)�#��$�#0R�&#'�'0R��0R��0R�

�0R��0R��0R��0R��0R�#�0R��0R� �!0R�"�#0R�& �'0R�(
+�)0R�v
�!��� $�%)�#��$�#k�&#'�'k��k��k�

�k��k��k��k��k�#�k��k� �!k�"�#k�& �'k�(
+�)k�kr6rc�^�[US5"U5$![a [X5s$f=f)ak
A simple 2D drawing interface for PIL images.

:param im: The image to draw in.
:param mode: Optional mode to use for color values.  For RGB
   images, this argument can be RGB or RGBA (to blend the
   drawing into the image).  For all other modes, this argument
   must be the same as the image mode.  If omitted, the mode
   defaults to the mode of the image.
�getdraw)�getattrr�r)r)r%s  r3r�r��s3��#��r�9�%�d�+�+���#���"�"�#�s��,�,c�`�Ub[SS5 SSKJn UbUR"U5OSnX24$)z�
:param im: The image to draw in.
:param hints: An optional list of hints. Deprecated.
:returns: A (drawing context, drawing resource factory) tuple.
Nz'hints' parameter�r)r)rr9rr�)r)�hintsrr+s    r3rDrD�s5��
���%�r�*��"$�.�:�?�?�2��d�D���r6c�F�UR5nUceUupgXVU4n[X(5U::agX%Xg4'Xg41n	[	5n
U	(a�[	5nU	H�upgUS-U4US-
U4XgS-4XgS-
44Hkup�X�4U
;dUS:dU
S:aMX\U
4nU
RX�45 Uc[X�5U:*nOX�U4;nU(aX%X�4'URX�45 MkMm M� U	n
Un	U	(aM�gg![[4a gf=f![[4a M�f=f)a�
.. warning:: This method is experimental.

Fills a bounded region with a given color.

:param image: Target image.
:param xy: Seed position (a 2-item coordinate tuple). See
    :ref:`coordinate-system`.
:param value: Fill color.
:param border: Optional border value.  If given, the region consists of
    pixels with a color different from the border color.  If not given,
    the region consists of pixels having the same color as the seed
    pixel.
:param thresh: Optional threshold value which specifies a maximum
    tolerable difference of a pixel value from the 'background' in
    order for it to be replaced. Useful for filling regions of
    non-homogeneous, but similar, colors.
Nrr)r"�_color_diffr&�
IndexError�set�add)�imagerM�value�border�thresh�pixelr}r~�
background�edge�	full_edge�new_edge�s�trtr/s                r3�	floodfillrY�sc��6
�J�J�L�E�����
�D�A���a�4�[�
��u�)�V�3���a�d���F�8�D���I�
��5���D�A��a�%���a�!�e�Q�Z�!��U��a�Q��Z�H����6�Y�&�!�a�%�1�q�5��-���d��A��M�M�1�&�)��~�*�1�9�V�C�� ���7���&+�a�d�� ���a�V�,��I��$�	���+�$��

�
�#�����#�J�/����s(�C6�C6�D�6D	�D	�D �D c�^^	^
�[U[5(d
Sn[U5eUS:a
Sn[U5e[U[[
45(d
Sn[U5e[
U5S:XaH[SU55(d
Sn[U5e[[[[	U55Gtm	m
O�[
U5S:Xa�[US[[
45(a�[S	US55(a[US
[[45(d
Sn[U5e[
US5S:wa
Sn[U5e[[[[	US55m	[[US
5m
O
Sn[U5eT
S::a
S
n[U5e[U[[45(d
Sn[U5eSU	4SjjmSUU
4SjjnSSjnU"X5nUVs/sH
ot"U5PM sn$s snf)u
Generate a list of vertices for a 2D regular polygon.

:param bounding_circle: The bounding circle is a sequence defined
    by a point and radius. The polygon is inscribed in this circle.
    (e.g. ``bounding_circle=(x, y, r)`` or ``((x, y), r)``)
:param n_sides: Number of sides
    (e.g. ``n_sides=3`` for a triangle, ``6`` for a hexagon)
:param rotation: Apply an arbitrary rotation to the polygon
    (e.g. ``rotation=90``, applies a 90 degree rotation)
:return: List of regular polygon vertices
    (e.g. ``[(25, 50), (50, 50), (50, 25), (25, 25)]``)

How are the vertices computed?
1. Compute the following variables
    - theta: Angle between the apothem & the nearest polygon vertex
    - side_length: Length of each polygon edge
    - centroid: Center of bounding circle (1st, 2nd elements of bounding_circle)
    - polygon_radius: Polygon radius (last element of bounding_circle)
    - angles: Location of each polygon vertex in polar grid
        (e.g. A square with 0 degree rotation => [225.0, 315.0, 45.0, 135.0])

2. For each angle in angles, get the polygon vertex at that angle
    The vertex is computed using the equation below.
        X= xcos(φ) + ysin(φ)
        Y= −xsin(φ) + ycos(φ)

    Note:
        φ = angle in degrees
        x = 0
        y = polygon_radius

    The formula above assumes rotation around the origin.
    In our case, we are rotating around the centroid.
    To account for this, we use the formula below
        X = xcos(φ) + ysin(φ) + centroid_x
        Y = −xsin(φ) + ycos(φ) + centroid_y
zn_sides should be an intr�zn_sides should be an int > 2z$bounding_circle should be a sequencec3�N# �UHn[U[[45v� M g7frB�rCr�r��rsr�s  r3rv�4_compute_regular_polygon_vertices.<locals>.<genexpr>os���H��1�:�a�#�u��.�.����#%z0bounding_circle should only contain numeric datarkrc3�N# �UHn[U[[45v� M g7frBr\r]s  r3rvr^us"���
�1C�A�J�q�3��,�'�'�1C�r_rzBbounding_circle centre should contain 2D coordinates (e.g. (x, y))z[bounding_circle should contain 2D coordinates and a radius (e.g. (x, y, r) or ((x, y), r) )z$bounding_circle radius should be > 0z"rotation should be an int or floatc��>�[US[R"[R"SU-
55-US[R"[R"SU-
55--
TS-S5[US[R"[R"SU-
55-US[R"[R"SU-
55--TS-S54$)Nrrlrrk)r�rprxryrz)r�r��centroids  �r3�_apply_rotation�:_compute_regular_polygon_vertices.<locals>._apply_rotation�s������a��4�8�8�D�L�L��w��$?�@�@���(�T�X�X�d�l�l�3��=�&A�B�B�C��1�+���	
�
��a��4�8�8�D�L�L��w��$?�@�@���(�T�X�X�d�l�l�3��=�&A�B�B�C��1�+���	
�

�
	
r6c�>�TS/nT"X5$�Nrr�)r|�start_pointrc�polygon_radiuss  ��r3�_compute_polygon_vertex�B_compute_regular_polygon_vertices.<locals>._compute_polygon_vertex�s���%�q�)���{�2�2r6c��/nSU-nSSU--
U-n[SU5H%nURU5 XC-
nUS:�dM US-nM' U$)Nrlr�g�?r)r�r�)r�r�r�r��
current_angle�_s      r3�_get_angles�6_compute_regular_polygon_vertices.<locals>._get_angles�sa������-���s�W�}�,��8�
��q�'�"�A��M�M�-�(��$�M��s�"���$�
�	#�
�
r6)r��list[float]r�r�r�r;)r|r�r�r;)r�r�r�r�r�rp)
rCr�rr&r�rFr�r�rr�)r�r�r�r2rirnr�r|rcrbrhs        @@@r3r�r�7s����V�g�s�#�#�(����n����{�,����o���o��e�}�5�5�4����n��
�?��q� ��H��H�H�H�D�C��S�/�!�$(��e��d�?�6K�$L�!��>�	�_�	��	"�z�/�!�2D�t�U�m�'T�'T��
�1@��1C�
�
�
��O�A�.��e��=�=�D�C��S�/�!���q�!�"�a�'�V�C��S�/�!���U��T�/�!�*<�%=�>���e�_�Q�%7�8��
<�	���o�����4����o���h��e��-�-�2����o��
� 3�3�
���
+�F�9?�?��u�#�E�*��?�?��?s�*G>c	�^^�[U[5(aUOU4m[U[5(aUOU4m[UU4Sj[S[	T5555$)zB
Uses 1-norm distance to calculate difference between two values.
c3�L># �UHn[TUTU-
5v� M g7frB)�abs)rsr��first�seconds  ��r3rv�_color_diff.<locals>.<genexpr>�s(����H�2G�Q�s�5��8�f�Q�i�'�(�(�2G�s�!$r)rCrF�sumr�r�)�color1�color2rtrus  @@r3rJrJ�sK���!���/�/�F�f�Y�E�!�&�%�0�0�V�v�i�F��H�%��3�v�;�2G�H�H�Hr6rB)r)r5r%r6r�rr9)r)zImage.Image | NonerHr<r�z)tuple[ImageDraw2.Draw | None, ModuleType]rf)rNr5rMztuple[int, int]rO�float | tuple[int, ...]rPzfloat | tuple[int, ...] | NonerQr�r�r�)r�r:r�r�r�r�r�zlist[tuple[float, float]])rxrzryrzr�r�)(�
__future__rrpr�collections.abcr�typesr�typingrrrr	r
rr9r
r�
_deprecater�_typingrrAr*rZrr�rrr�rFr�rD�_Inkrr�rDrYr�rJr�r6r3�<module>r�sK��@#��
�$��D�D��!��
2�1���j�j� � �G��'��U�E�#�s�(�O�S�
(�)���R�R�j#�$>B�
��
�*:�
�.�
�(.2��>��>��>�#�>�
+�	>�

�>�
�
>�B@�6�@�AD�@�PU�@��@�D	I�#�	I�-D�	I�
�	I��S$���G��s�C�C�C

Filemanager

Name Type Size Permission Actions
BdfFontFile.cpython-313.pyc File 4.28 KB 0644
BlpImagePlugin.cpython-313.pyc File 23.93 KB 0644
BmpImagePlugin.cpython-313.pyc File 17.97 KB 0644
BufrStubImagePlugin.cpython-313.pyc File 2.68 KB 0644
ContainerIO.cpython-313.pyc File 6.72 KB 0644
CurImagePlugin.cpython-313.pyc File 2.37 KB 0644
DcxImagePlugin.cpython-313.pyc File 2.73 KB 0644
DdsImagePlugin.cpython-313.pyc File 22.58 KB 0644
EpsImagePlugin.cpython-313.pyc File 15.76 KB 0644
ExifTags.cpython-313.pyc File 11.43 KB 0644
FitsImagePlugin.cpython-313.pyc File 6.06 KB 0644
FliImagePlugin.cpython-313.pyc File 6.76 KB 0644
FontFile.cpython-313.pyc File 4.45 KB 0644
FpxImagePlugin.cpython-313.pyc File 7.66 KB 0644
FtexImagePlugin.cpython-313.pyc File 5.25 KB 0644
GbrImagePlugin.cpython-313.pyc File 3.68 KB 0644
GdImageFile.cpython-313.pyc File 3.35 KB 0644
GifImagePlugin.cpython-313.pyc File 44.88 KB 0644
GimpGradientFile.cpython-313.pyc File 5.35 KB 0644
GimpPaletteFile.cpython-313.pyc File 2.12 KB 0644
GribStubImagePlugin.cpython-313.pyc File 2.68 KB 0644
Hdf5StubImagePlugin.cpython-313.pyc File 2.65 KB 0644
IcnsImagePlugin.cpython-313.pyc File 17 KB 0644
IcoImagePlugin.cpython-313.pyc File 14.92 KB 0644
ImImagePlugin.cpython-313.pyc File 12.76 KB 0644
Image.cpython-313.pyc File 165.73 KB 0644
ImageChops.cpython-313.pyc File 10.63 KB 0644
ImageCms.cpython-313.pyc File 42.28 KB 0644
ImageColor.cpython-313.pyc File 12.22 KB 0644
ImageDraw.cpython-313.pyc File 43.5 KB 0644
ImageDraw2.cpython-313.pyc File 9.43 KB 0644
ImageEnhance.cpython-313.pyc File 5.28 KB 0644
ImageFile.cpython-313.pyc File 30.8 KB 0644
ImageFilter.cpython-313.pyc File 22.79 KB 0644
ImageFont.cpython-313.pyc File 65.84 KB 0644
ImageGrab.cpython-313.pyc File 6.56 KB 0644
ImageMath.cpython-313.pyc File 15.95 KB 0644
ImageMode.cpython-313.pyc File 2.75 KB 0644
ImageMorph.cpython-313.pyc File 11.03 KB 0644
ImageOps.cpython-313.pyc File 28.21 KB 0644
ImagePalette.cpython-313.pyc File 12.04 KB 0644
ImagePath.cpython-313.pyc File 306 B 0644
ImageQt.cpython-313.pyc File 8.46 KB 0644
ImageSequence.cpython-313.pyc File 3.33 KB 0644
ImageShow.cpython-313.pyc File 13.72 KB 0644
ImageStat.cpython-313.pyc File 7.13 KB 0644
ImageTransform.cpython-313.pyc File 5.19 KB 0644
ImageWin.cpython-313.pyc File 11.44 KB 0644
ImtImagePlugin.cpython-313.pyc File 2.55 KB 0644
IptcImagePlugin.cpython-313.pyc File 8.91 KB 0644
Jpeg2KImagePlugin.cpython-313.pyc File 18.34 KB 0644
JpegImagePlugin.cpython-313.pyc File 33.72 KB 0644
JpegPresets.cpython-313.pyc File 7.9 KB 0644
McIdasImagePlugin.cpython-313.pyc File 2.23 KB 0644
MicImagePlugin.cpython-313.pyc File 3.85 KB 0644
MpegImagePlugin.cpython-313.pyc File 3.68 KB 0644
MpoImagePlugin.cpython-313.pyc File 8.04 KB 0644
MspImagePlugin.cpython-313.pyc File 5.87 KB 0644
PSDraw.cpython-313.pyc File 7.67 KB 0644
PaletteFile.cpython-313.pyc File 1.9 KB 0644
PalmImagePlugin.cpython-313.pyc File 9.46 KB 0644
PcdImagePlugin.cpython-313.pyc File 2.05 KB 0644
PcfFontFile.cpython-313.pyc File 9.68 KB 0644
PcxImagePlugin.cpython-313.pyc File 7.27 KB 0644
PdfImagePlugin.cpython-313.pyc File 9.64 KB 0644
PdfParser.cpython-313.pyc File 52.78 KB 0644
PixarImagePlugin.cpython-313.pyc File 1.94 KB 0644
PngImagePlugin.cpython-313.pyc File 61.98 KB 0644
PpmImagePlugin.cpython-313.pyc File 14.13 KB 0644
PsdImagePlugin.cpython-313.pyc File 10.81 KB 0644
QoiImagePlugin.cpython-313.pyc File 6.02 KB 0644
SgiImagePlugin.cpython-313.pyc File 8.37 KB 0644
SpiderImagePlugin.cpython-313.pyc File 12.27 KB 0644
SunImagePlugin.cpython-313.pyc File 3.42 KB 0644
TarIO.cpython-313.pyc File 1.86 KB 0644
TgaImagePlugin.cpython-313.pyc File 8.11 KB 0644
TiffImagePlugin.cpython-313.pyc File 99.07 KB 0644
TiffTags.cpython-313.pyc File 18.43 KB 0644
WalImageFile.cpython-313.pyc File 4.01 KB 0644
WebPImagePlugin.cpython-313.pyc File 13.27 KB 0644
WmfImagePlugin.cpython-313.pyc File 6.19 KB 0644
XVThumbImagePlugin.cpython-313.pyc File 2.61 KB 0644
XbmImagePlugin.cpython-313.pyc File 4.05 KB 0644
XpmImagePlugin.cpython-313.pyc File 4.2 KB 0644
__init__.cpython-313.pyc File 1.98 KB 0644
__main__.cpython-313.pyc File 346 B 0644
_binary.cpython-313.pyc File 3.24 KB 0644
_deprecate.cpython-313.pyc File 2.37 KB 0644
_tkinter_finder.cpython-313.pyc File 745 B 0644
_typing.cpython-313.pyc File 2.14 KB 0644
_util.cpython-313.pyc File 1.5 KB 0644
_version.cpython-313.pyc File 222 B 0644
features.cpython-313.pyc File 13.58 KB 0644
report.cpython-313.pyc File 278 B 0644
Filemanager