ó
    bÄ\j[Š  ã                  óh  • % S SK Jr  S SKrS SKrS SKJr  S SKJr  SSKJ	r	J
r
JrJr  Sr\(       a"  S SKJr  S S	KJr  S S
KJrJr  SSKJr  SSKJrJr  \	R.                  R0                  rS\S'     " S S5      rSSS jjrSSS jjr  S           SS jjr        SS jr      SS jr g)é    )ÚannotationsN)ÚSequence)Úcasté   )ÚImageÚ
ImageColorÚ	ImageFontÚ	ImageTextF)ÚCallable)Ú
ModuleType)ÚAnyÚAnyStr©Ú
ImageDraw2)ÚCoordsÚ_Inkz!Callable[[], Image.core._Outline]ÚOutlinec                  ó  • \ rS rSr% SrS\S'   SSS jjr  S S jrS!S jr S     S"S jjr	  S#           S$S	 jjr
 S       S%S
 jjr   S&             S'S jjr   S&         S(S jjr   S&           S)S jjr   S*         S+S jjr  S,       S-S jjr   S&             S'S jjrSS.S jjr   S&         S(S jjr    S/             S0S jjr   S&         S(S jjr    S/SS.             S1S jjjr           S2                               S3S jjr           S2SS.                             S4S jjjr     S5SS.               S6S jjjr         S7SS.                         S8S jjjr         S7SS.                         S8S jjjrSrg)9Ú	ImageDrawé=   NúImageFont.BaseImageFont | NoneÚfontc                óL  • UR                  5         SnUc  UR                  nX!R                  :w  a&  US:X  a  UR                  S:X  a  SnOSn[        U5      eUS:X  a  UR                  U l        OSU l        Xl        UR
                  U l        [        R                  R                  U R
                  U5      U l        X l        US;   a!  U R                  R                  S5      U l
        O U R                  R                  S	5      U l
        US
;   a  SU l        OSU l        SU l        g)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.
r   NÚRGBAÚRGBr   zmode mismatchÚP)ÚIÚFéÿÿÿÿ)Ú1r   r   r   r    ÚLF)Ú_ensure_mutableÚmodeÚ
ValueErrorÚpaletteÚ_imageÚimr   ÚcoreÚdrawÚdraw_inkÚinkÚfontmodeÚfill)Úselfr'   r#   ÚblendÚmsgs        ÚC/var/www/website/venv/lib/python3.13/site-packages/PIL/ImageDraw.pyÚ__init__ÚImageDraw.__init__@   sì   € ð 	×ÑÔØˆØ‰<Ø—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                óp   • U R                   (       d  [        R                  " 5       U l         U R                   $ )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	   Úload_default)r.   s    r1   ÚgetfontÚImageDraw.getfonth   s%   € ð( �y�yä!×.Ò.Ó0ˆDŒIØ�y‰yÐr4   c                óT   • Ub  [         R                  " U5      $ U R                  5       $ ©N)r	   r6   r7   )r.   Ú	font_sizes     r1   Ú_getfontÚImageDraw._getfont�   s%   € ØÑ Ü×)Ò)¨)Ó4Ð4à—<‘<“>Ð!r4   c                óô  • S nS nUc3  Uc0  U R                   (       a  U R                  nX44$ U R                  n X44$ Ub›  [        U[        5      (       a   [        R
                  " XR                  5      nU R                  (       a:  [        U[        5      (       a%  U R                  R                  XR                  5      nU R                  R                  U5      nUb›  [        U[        5      (       a   [        R
                  " X R                  5      nU R                  (       a:  [        U[        5      (       a%  U R                  R                  X R                  5      nU R                  R                  U5      nX44$ r:   )r-   r+   Ú
isinstanceÚstrr   Úgetcolorr#   r%   Útupler&   r)   r*   )r.   r+   r-   Ú
result_inkÚresult_fills        r1   Ú_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�ØÐ&Ð&r4   c                óz   • U R                  U5      u  pdUb%  US:w  a  U R                  R                  XX6U5        ggg)zDraw an arc.Nr   )rE   r)   Údraw_arc)r.   ÚxyÚstartÚendr-   Úwidthr+   s          r1   ÚarcÚImageDraw.arc    s<   € ð —L‘L Ó&‰	ˆØ‰?˜u¨›zØ�I‰I×Ñ˜r¨#°EÕ:ð  *ˆ?r4   c                ó¨   • UR                  5         U R                  U5      u  pCUc  UnUb'  U R                  R                  XR                  U5        gg)zDraw a bitmap.N)ÚloadrE   r)   Údraw_bitmapr'   )r.   rI   Úbitmapr-   r+   s        r1   rR   ÚImageDraw.bitmap­   sI   € ð 	�‰ŒØ—L‘L Ó&‰	ˆØ‰;ØˆCØ‰?Ø�I‰I×!Ñ! "§i¡i°Õ5ð r4   c                óÈ   • U R                  XT5      u  pxUb  U R                  R                  XX8S5        Ub,  Xx:w  a&  US:w  a  U R                  R                  XX7SU5        gggg)zDraw a chord.Nr   r   )rE   r)   Ú
draw_chord©	r.   rI   rJ   rK   r-   ÚoutlinerL   r+   Úfill_inks	            r1   ÚchordÚImageDraw.chord¸   s`   € ð Ÿ™ WÓ3‰ˆØÑØ�I‰I× Ñ  ¨C¸1Ô=Ø‰?˜s›°5¸A³:Ø�I‰I× Ñ  ¨C°a¸Õ?ð 4>˜ˆ?r4   c                óÄ   • U R                  X25      u  pVUb  U R                  R                  XS5        Ub+  XV:w  a%  US:w  a  U R                  R                  XSU5        gggg)zDraw an ellipse.Nr   r   )rE   r)   Údraw_ellipse©r.   rI   r-   rW   rL   r+   rX   s          r1   ÚellipseÚImageDraw.ellipseÈ   s\   € ð Ÿ™ WÓ3‰ˆØÑØ�I‰I×"Ñ" 2°Ô3Ø‰?˜s›°5¸A³:Ø�I‰I×"Ñ" 2¨A¨uÕ5ð 4>˜ˆ?r4   c                ód   • US   U-
  US   U-
  US   U-   US   U-   4nU R                  XcXE5        g)z4Draw a circle given center coordinates and a radius.r   r   N)r^   )r.   rI   Úradiusr-   rW   rL   Ú
ellipse_xys          r1   ÚcircleÚImageDraw.circleÖ   s@   € ð ˜‘e˜f‘n b¨¡e¨f¡n°b¸±e¸f±nÀbÈÁeÈfÁnÐUˆ
Ø�‰�Z wÕ6r4   c                ó>  ^• U R                  U5      S   nUGby  TS:w  Gaq  U R                  R                  XT5        US:X  GaM  TS:”  GaE  [        US   [        [
        45      (       a  [        [        [        [              U5      nOI[        S[        U5      S5       Vs/ s H(  n[        [        [           [        XUS-    5      5      PM*     nn[        S[        U5      S-
  5       GH¡  nXg   nXgS-
     U4X†US-      44 V	V
s/ s HE  u  pš[        R                  " [        R                  " U
S   U	S   -
  U	S   U
S   -
  5      5      S-  PMG     nn	n
US   US   :X  a  Mz        SU4S jjnUS   US   :„  =(       a    US   S	-
  US   :„  =(       d     US   US   :  =(       a    US   S	-   US   :„  nUS   TS-  -
  S-   US   TS-  -
  S-   4US   TS-  -   S-
  US   TS-  -   S-
  4/nU(       a  US   S
-   US   S
-   p©OUS   S
-
  US   S
-
  p©U R                  XéS
-
  U
S
-
  U5        TS:”  d  GMO  U(       a  U" X‹S   S
-   5      UU" X‹S   S
-   5      /nOU" X‹S   S
-
  5      UU" X‹S   S
-
  5      /nU R                  XòSS9  GM¤     gggggs  snf s  sn
n	f )z6Draw a line, or a connected sequence of line segments.r   NÚcurveé   é   r   éh  c                óþ   >• U u  p#US-  nTS-  S-
  n[        S X$[        R                  " [        R                  " U5      5      -  4X4[        R                  " [        R                  " U5      5      -  44 5       5      $ )NéZ   rh   r   c              3  óŽ   #   • U  H;  u  pXS :”  a  [         R                  " U5      O[         R                  " U5      -   v •  M=     g7f)r   N)ÚmathÚfloorÚceil)Ú.0ÚpÚp_ds      r1   Ú	<genexpr>Ú9ImageDraw.line.<locals>.coord_at_angle.<locals>.<genexpr>
  s8   é € ð %ò+¡ ð ¸!³G¤§¢¨C¤ÄÇÂÈ3ÃÖPò+ùs   ‚AA)rB   rm   ÚcosÚradiansÚsin)ÚcoordÚangleÚxÚyÚdistancerL   s        €r1   Úcoord_at_angleÚ&ImageDraw.line.<locals>.coord_at_angle  sz   ø€ ð  %™˜Ø ™˜Ø#(¨1¡9¨q¡=˜Ü$ñ %ð "#¬t¯xªx¼¿ºÀUÓ8KÓ/LÑ$LÐ MØ!"¬t¯xªx¼¿ºÀUÓ8KÓ/LÑ$LÐ Mñ+ó%ó  ð r4   é´   rk   é   é   )rL   )rx   úSequence[float]ry   ÚfloatÚreturnztuple[float, ...])rE   r)   Ú
draw_linesr?   ÚlistrB   r   r   rƒ   ÚrangeÚlenrm   ÚdegreesÚatan2ÚpiesliceÚline)r.   rI   r-   rL   Újointr+   ÚpointsÚiÚpointrJ   rK   Úanglesr}   ÚflippedÚcoordsÚ
gap_coordss      `            r1   rŒ   ÚImageDraw.lineâ   s  ø€ ð �l‰l˜4Ó  Ñ#ˆØŠ?˜u¨œzØ�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ð
 Ÿ	™	 *¸!˜	Ô<òo 3ð %.Ðð  *ˆ?ùòùós   Â /JÄAJc                óÔ   • UR                  5         U R                  X25      u  pEUb  U R                  R                  XS5        Ub#  XE:w  a  U R                  R                  XS5        ggg)z(Experimental) Draw a shape.Nr   r   )ÚcloserE   r)   Údraw_outline)r.   Úshaper-   rW   r+   rX   s         r1   r™   ÚImageDraw.shape/  s[   € ð 	�‰ŒØŸ™ WÓ3‰ˆØÑØ�I‰I×"Ñ" 5°AÔ6Ø‰?˜s›Ø�I‰I×"Ñ" 5¨qÕ1ð  /ˆ?r4   c                óÈ   • U R                  XT5      u  pxUb  U R                  R                  XX8S5        Ub,  Xx:w  a&  US:w  a  U R                  R                  XX7SU5        gggg)zDraw a pieslice.Nr   r   )rE   r)   Údraw_pieslicerV   s	            r1   r‹   ÚImageDraw.pieslice=  s`   € ð Ÿ™ WÓ3‰ˆØÑØ�I‰I×#Ñ# B¨s¸aÔ@Ø‰?˜s›°5¸A³:Ø�I‰I×#Ñ# B¨s¸¸EÕBð 4>˜ˆ?r4   c                óh   • U R                  U5      u  p2Ub  U R                  R                  X5        gg)z#Draw one or more individual pixels.N)rE   r)   Údraw_points)r.   rI   r-   r+   s       r1   r�   ÚImageDraw.pointM  s.   € à—L‘L Ó&‰	ˆØ‰?Ø�I‰I×!Ñ! "Õ*ð r4   c                ó  • U R                  X25      u  pVUb  U R                  R                  XS5        UbÔ  XV:w  aÎ  US:w  aÇ  US:X  a  U R                  R                  XSU5        gU R                  b•  [        R
                  " SU R                  R                  5      nU R                  S5      S   n[        U5      n	U	R                  R                  XS5        U R                  R                  XSUS-  S-
  UR                  5        ggggg)zDraw a polygon.Nr   r   r    rh   )rE   r)   Údraw_polygonr'   r   ÚnewÚsizeÚDraw)
r.   rI   r-   rW   rL   r+   rX   ÚmaskÚmask_inkr)   s
             r1   ÚpolygonÚImageDraw.polygonS  sß   € ð Ÿ™ WÓ3‰ˆØÑØ�I‰I×"Ñ" 2°Ô3Ø‰?˜s›°5¸A³:Ø˜‹zØ—	‘	×&Ñ& r°°5Õ9Ø—‘Ñ$ô —y’y  d§g¡g§l¡lÓ3�ØŸ<™<¨›?¨1Ñ-�Ü˜D“z�Ø—	‘	×&Ñ& r°QÔ7à—	‘	×&Ñ& r°°5¸1±9¸q±=À$Ç'Á'ÕJð %ð 4>˜ˆ?r4   c                ó@   • [        XU5      nU R                  XtXV5        g)zDraw a regular polygon.N)Ú!_compute_regular_polygon_verticesr¨   )r.   Úbounding_circleÚn_sidesÚrotationr-   rW   rL   rI   s           r1   Úregular_polygonÚImageDraw.regular_polygonk  s   € ô /¨ÈÓRˆØ�‰�R˜wÕ.r4   c                óÄ   • U R                  X25      u  pVUb  U R                  R                  XS5        Ub+  XV:w  a%  US:w  a  U R                  R                  XSU5        gggg)zDraw a rectangle.Nr   r   )rE   r)   Údraw_rectangler]   s          r1   Ú	rectangleÚImageDraw.rectanglex  s\   € ð Ÿ™ WÓ3‰ˆØÑØ�I‰I×$Ñ$ R°1Ô5Ø‰?˜s›°5¸A³:Ø�I‰I×$Ñ$ R¨a°Õ7ð 4>˜ˆ?r4   )Úcornersc               ó	  ^ ^^^^^^^^^^^• [        US   [        [        45      (       a(  [        [        [        [
              U5      u  u  mmu  mmO[        [        [
           U5      u  mmmmTT:  a  Sn[        U5      eTT:  a  Sn[        U5      eTc  Sm[        TT-
  TT-
  US-  5      m[        T5      m[        T5      m[        T5      m[        T5      mSu  mm[        T5      (       aO  TTT-
  S-
  :¬  mT(       a  TT-
  mTTT-
  S-
  :¬  mT(       a  TT-
  mT(       a  T(       a  T R                  XUT5      $ TS:X  d  [        T5      (       d  T R                  XUT5      $ [        TS-  5      nT R                  XC5      u  mmSUUUUUUU UUUUU4S	 jjn	TGb>  U	" S
5        T(       a.  T R                  R!                  TTU-   S-   TTU-
  S-
  4TS5        O?TU-
  S-
  TU-   S-   :¼  a-  T R                  R!                  TU-   S-   TTU-
  S-
  T4TS5        T(       d»  T(       d´  TTTU-   T/n
TS   (       a  U
S==   US-   -  ss'   TS   (       a  U
S==   US-   -  ss'   T R                  R!                  U
TS5        TU-
  TTT/nTS   (       a  US==   US-   -  ss'   TS   (       a  US==   US-   -  ss'   T R                  R!                  UTS5        TGbœ  TT:w  Ga”  TS:w  GaŒ  U	" S5        T(       dº  TTTTT-   S-
  /nTS   (       a  US==   US-   -  ss'   TS   (       a  US==   US-   -  ss'   T R                  R!                  UTS5        TTT-
  S-   TT/nTS   (       a  US==   US-   -  ss'   TS   (       a  US==   US-   -  ss'   T R                  R!                  UTS5        T(       d»  TTTT-   S-
  T/n
TS   (       a  U
S==   US-   -  ss'   TS   (       a  U
S==   US-   -  ss'   T R                  R!                  U
TS5        TT-
  S-   TTT/nTS   (       a  US==   US-   -  ss'   TS   (       a  US==   US-   -  ss'   T R                  R!                  UTS5        ggggg)zDraw a rounded rectangle.r   z&x1 must be greater than or equal to x0z&y1 must be greater than or equal to y0N)TTTTrh   )FFr   c                óæ  >• T(       a  TTTT-   TT-   4SS4TTT-
  TT-   T4SS44nO|T(       a  TTTT-   TT-   4SS4TT-
  TTTT-   4SS44nOV[        U4S j[        TTTT-   TT-   4SS4TT-
  TTTT-   4SS4TT-
  TT-
  TT4SS4TTT-
  TT-   T4SS445       5       5      nU HH  nU (       a   T	R                  R                  " UTS4-   6   M*  T	R                  R                  " UTT
4-   6   MJ     g )Nr   ri   r   rk   é  c              3  óD   >#   • U  H  u  pTU   (       d  M  Uv •  M     g 7fr:   © )rp   r�   Úpartrµ   s      €r1   rs   ÚDImageDraw.rounded_rectangle.<locals>.draw_corners.<locals>.<genexpr>Ë  s)   øé € ð ò$™˜ð ˜q•z÷ ‘Dò$ùs   ƒ —	 r   )rB   Ú	enumerater)   rœ   rH   )r‹   Úpartsr»   rµ   ÚdrX   Úfull_xÚfull_yr+   r.   rL   Úx0Úx1Úy0Úy1s      €€€€€€€€€€€€r1   Ú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°Ñ)<Ó>ò	 r4   Tr�   F)r‹   Úboolr„   ÚNone)r?   r†   rB   r   r   rƒ   r$   ÚminÚroundÚallr^   Úanyr³   ÚintrE   r)   r²   )r.   rI   ra   r-   rW   rL   rµ   r0   ÚrrÆ   ÚleftÚrightÚtopÚbottomr¿   rX   rÀ   rÁ   r+   rÂ   rÃ   rÄ   rÅ   s   `    ``       @@@@@@@@@r1   Úrounded_rectangleÚImageDraw.rounded_rectangle†  si  ÿû€ ô �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ä��R‘˜˜b™ &¨1¡*Ó-ˆä�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‘˜!‘˜r A™v¨™zÓ)Ø—	‘	×(Ñ(¨"¨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>˜ˆ?r4   c                óŽ  ^ ^^	^
^^^^^• [        U[        R                  5      (       a  UmOwUc   T R                  TR	                  S5      5      n[        R                  " X$T R
                  UTT	T
5      mT(       a  TR                  5         U(       a  TR                  X¼5        SU 4S jjnU" U5      nUc  gSnTR                  (       a!  TR                  b  U" TR                  5      OUnTR                  XU5       HE  mSSUUUU	UUU
UU 4	S jjjnUb%  U" UTR                  5        UU:w  a
  U" U5        M;  M=  U" U5        MG     g)z
Draw text.Nr;   c                óB   >• TR                  U 5      u  pUc  Uc   eU$ U$ r:   )rE   )r-   r+   rX   r.   s      €r1   ÚgetinkÚImageDraw.text.<locals>.getink2  s.   ø€ Ø ŸL™L¨Ó.‰MˆCØ‰{ØÑ+Ð+Ð+Ø�ØˆJr4   c                óL  >	• TR                   nUS:X  a	  T(       a  Sn[        TR                  5      n[        TR                  5      n[        R
                  " TR                  5      S   [        R
                  " TR                  5      S   4n[        TR                  [        R                  5      (       aO  TR                  R                  " TR                  UTTTUTR                  U U/	T
Q7SS0TD6u  pgX7S   -  nXGS   -  nO> TR                  R                  " TR                  UTTTUTR                  U /T
Q7SU0TD6nUS:X  aŠ  XfR                  S5      ph[         R"                  " SU 5      S   n	UR%                  SU	5        TR&                  b?  TR&                  R)                  XƒXCUR*                  S   -   XFR*                  S   -   4U5        g g TR,                  R/                  X44X`5        g ! [         a(    TR                  R                  TR                  5      n Nßf = f)	Nr   r   Ústroke_filledTr   rJ   r�   r�   )r,   rÎ   rz   r{   rm   Úmodfr?   r   r	   ÚFreeTypeFontÚgetmask2ÚtextÚanchorÚgetmaskÚ	TypeErrorÚgetbandÚstructÚpackÚfillbandr'   Úpaster¤   r)   rQ   )r+   Ústroke_widthr#   rz   r{   rJ   r¦   ÚoffsetÚcolorÚ	ink_alphaÚargsÚ	directionÚembedded_colorÚfeaturesÚ
image_textÚkwargsÚlanguagerŒ   r.   s             €€€€€€€€€r1   Ú	draw_textÚ!ImageDraw.text.<locals>.draw_textG  s  ø€ Ø—}‘}�Ø 1Ó$®Ø!�DÜ˜Ÿ™“K�Ü˜Ÿ™“K�ÜŸš 4§6¡6Ó*¨1Ñ-¬t¯yªy¸¿¹Ó/@ÀÑ/CÐD�Ü˜jŸo™o¬y×/EÑ/E×FÑFØ#-§?¡?×#;Ò#;ØŸ	™	ØØ!Ø Ø Ø$ØŸ™ØØð$ð ò$ð '+ð$ð !ñ$‘L�Dð  ™‘N�AØ ™‘N‘AðBØ)Ÿ™×6Ò6Ø ŸI™IØ Ø%Ø$Ø$Ø(Ø ŸK™KØð ð "ò ð #(ð ð %ñ ˜ð ˜6“>ð #'¯©°Q«˜4Ü &§¢¨C°Ó 5°aÑ 8�IØ—N‘N 1 iÔ0Ø—w‘wÑ*ØŸ™Ÿ™Ø! q¨d¯i©i¸©lÑ*:¸AÇ	Á	È!ÁÑ<LÐ#MÈtõð +ð
 —I‘I×)Ñ)¨1¨&°$Õ<øô %ó BØ)Ÿ™×6Ñ6°t·y±yÓAšðBús   Ä=G1 Ç1/H#È"H#)r-   ú_Ink | Noner„   rÎ   )r   )r+   rÎ   rè   rƒ   r„   rÉ   )r?   r
   ÚTextr<   Úgetr#   Úembed_colorÚstrokerè   Ústroke_fillÚ_split)r.   rI   rß   r-   r   rà   ÚspacingÚalignrí   rï   rò   rè   rú   rî   rì   rñ   rØ   r+   Ú
stroke_inkró   rð   rŒ   s   `       ```  ```    @@r1   rß   ÚImageDraw.text  s&  ÿø€ ô& �dœIŸN™N×+Ñ+Ø‰Jà‰|Ø—}‘} V§Z¡Z°Ó%<Ó=�Ü"ŸšØ˜DŸI™I w°	¸8ÀXóˆJö Ø×&Ñ&Ô(ÞØ×!Ñ! ,Ô<÷	ñ �T‹lˆØ‰;Øàˆ
Ø×"×"ð ×)Ñ)Ñ5ñ �z×-Ñ-Ô.àð ð ×%Ñ% b°%Ö8ˆD÷5=÷ 5=ñ 5=ðn Ñ%á˜* j×&=Ñ&=Ô>ð ˜*Ó$Ù˜c–Nñ %ñ ˜#–òE 9r4   ©r;   c               ó:   • U R                  UUUUUUUUU	U
UUUUS9$ ©Nr   )rß   )r.   rI   rß   r-   r   rà   rü   rý   rí   rï   rò   rè   rú   rî   r;   s                  r1   Úmultiline_textÚImageDraw.multiline_text‰  sD   € ð$ �y‰yØØØØØØØØØØØØØØð ð 
ð 	
r4   c          	     ó¾   • Uc  U R                  U5      n[        R                  " UUU R                  UUUS9nU(       a  UR	                  5         UR                  5       $ )z@Get the length of a given string, in pixels with 1/64 precision.)rí   rï   rò   )r<   r
   rö   r#   rø   Ú
get_length)	r.   rß   r   rí   rï   rò   rî   r;   rð   s	            r1   Ú
textlengthÚImageDraw.textlength¬  s[   € ð ‰<Ø—=‘= Ó+ˆDÜ—^’^ØØØ�I‰IØØØñ
ˆ
ö Ø×"Ñ"Ô$Ø×$Ñ$Ó&Ð&r4   c          	     óò   • Uc  U R                  U5      n[        R                  " X#U R                  XWX‰5      nU(       a  UR	                  5         U
(       a  UR                  U
5        UR                  XU5      $ )z2Get the bounding box of a given string, in pixels.)r<   r
   rö   r#   rø   rù   Úget_bbox)r.   rI   rß   r   rà   rü   rý   rí   rï   rò   rè   rî   r;   rð   s                 r1   ÚtextbboxÚImageDraw.textbboxÆ  sg   € ð" ‰<Ø—=‘= Ó+ˆDÜ—^’^Ø˜Ÿ	™	 7°xó
ˆ
ö Ø×"Ñ"Ô$ÞØ×Ñ˜lÔ+Ø×"Ñ" 2¨uÓ5Ð5r4   c               ó6   • U R                  UUUUUUUUU	U
UUS9$ r  )r  )r.   rI   rß   r   rà   rü   rý   rí   rï   rò   rè   rî   r;   s                r1   Úmultiline_textbboxÚImageDraw.multiline_textbboxâ  s>   € ð  �}‰}ØØØØØØØØØØØØð ð 
ð 	
r4   )	r&   r)   r-   r   r,   r'   r+   r#   r%   r:   )r'   úImage.Imager#   ú
str | Noner„   rÉ   )r„   úImageFont.BaseImageFont)r;   úfloat | Noner„   r  )r+   rõ   r-   rõ   r„   ztuple[int | None, int | None])Nr   )rI   r   rJ   rƒ   rK   rƒ   r-   rõ   rL   rÎ   r„   rÉ   )rI   zSequence[int]rR   r  r-   rõ   r„   rÉ   )NNr   )rI   r   rJ   rƒ   rK   rƒ   r-   rõ   rW   rõ   rL   rÎ   r„   rÉ   )
rI   r   r-   rõ   rW   rõ   rL   rÎ   r„   rÉ   )rI   r‚   ra   rƒ   r-   rõ   rW   rõ   rL   rÎ   r„   rÉ   )Nr   N)
rI   r   r-   rõ   rL   rÎ   r�   r  r„   rÉ   )NN)r™   zImage.core._Outliner-   rõ   rW   rõ   r„   rÉ   )rI   r   r-   rõ   r„   rÉ   )r   NNr   )r¬   ú!Sequence[Sequence[float] | float]r­   rÎ   r®   rƒ   r-   rõ   rW   rõ   rL   rÎ   r„   rÉ   )rI   r   ra   rƒ   r-   rõ   rW   rõ   rL   rÎ   rµ   z$tuple[bool, bool, bool, bool] | Noner„   rÉ   )NNNrg   rÐ   NNNr   NF) rI   útuple[float, float]rß   zAnyStr | ImageText.Text[AnyStr]r-   rõ   r   r   rà   r  rü   rƒ   rý   r@   rí   r  rï   úlist[str] | Nonerò   r  rè   rƒ   rú   rõ   rî   rÈ   rì   r   rñ   r   r„   rÉ   )rI   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;   r  r„   rÉ   )NNNNF)rß   r   r   r   rí   r  rï   r  rò   r  rî   rÈ   r;   r  r„   rƒ   )	NNrg   rÐ   NNNr   F)rI   r  rß   r   r   r   rà   r  rü   rƒ   rý   r@   rí   r  rï   r  rò   r  rè   rƒ   rî   rÈ   r;   r  r„   z!tuple[float, float, float, float])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__r2   r7   r<   rE   rM   rR   rY   r^   rc   rŒ   r™   r‹   r�   r¨   r¯   r³   rÔ   rß   r  r  r  r  Ú__static_attributes__rº   r4   r1   r   r   =   s.  ‡ Ø+/€DÐ
(Ó/ö&ðPà	 ôô2"ð 59ð'Øð'Ø&1ð'à	&õ'ð< !Øð;àð;ð ð;ð ð	;ð
 ð;ð ð;ð 
õ;ð KOð	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ö +ð !Ø#ØðKàðKð ðKð ð	Kð
 ðKð 
õKð8 Ø Ø#Øð/à:ð/ð ð/ð ð	/ð
 ð/ð ð/ð ð/ð 
õ/ð  !Ø#Øð8àð8ð ð8ð ð	8ð
 ð8ð 
õ8ð" Ø Ø#ØðJ8ð 9=ñJ8àðJ8ð ðJ8ð ð	J8ð
 ðJ8ð ðJ8ð 6ðJ8ð 
öJ8ð` !Ø/3Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ðuàðuð .ðuð ð	uð
 -ðuð ðuð ðuð ðuð ðuð #ðuð ðuð ðuð !ðuð ðuð ðuð  ð!uð" 
õ#uðv !Ø/3Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð!
ð  #'ñ!!
àð!
ð ð!
ð ð	!
ð
 -ð!
ð ð!
ð ð!
ð ð!
ð ð!
ð #ð!
ð ð!
ð ð!
ð !ð!
ð ð!
ð   ð!!
ð" 
ö#!
ðL 04Ø $Ø%)Ø#Ø$ð'ð #'ñ'àð'ð -ð'ð ð	'ð
 #ð'ð ð'ð ð'ð  ð'ð 
ö'ð< 04Ø!ØØØ $Ø%)Ø#ØØ$ð6ð #'ñ6àð6ð ð6ð -ð	6ð
 ð6ð ð6ð ð6ð ð6ð #ð6ð ð6ð ð6ð ð6ð  ð6ð 
+ö6ð@ 04Ø!ØØØ $Ø%)Ø#ØØ$ð
ð #'ñ
àð
ð ð
ð -ð	
ð
 ð
ð ð
ð ð
ð ð
ð #ð
ð ð
ð ð
ð ð
ð  ð
ð 
+÷
ñ 
r4   r   c                ó^   •  [        U S5      " U5      $ ! [         a    [        X5      s $ 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)ÚgetattrÚAttributeErrorr   )r'   r#   s     r1   r¥   r¥     s3   € ð#Ü�r˜9Ô% dÓ+Ð+øÜó #Ü˜Ó"Ò"ð#ús   ‚ ”,«,c                óB   • SSK Jn  U b  UR                  " U 5      OSnX!4$ )za
:param im: The image to draw in.
:returns: A (drawing context, drawing resource factory) tuple.
r   r   N)Ú r   r¥   )r'   r   r)   s      r1   r  r    s$   € õ
 à"$¡.ˆ:�?Š?˜2Ô°d€DØÐÐr4   c                óF  • U R                  5       nUc   eUu  pg XVU4   n[        X(5      U::  a  gX%Xg4'   Xg41n	[	        5       n
U	(       aª  [	        5       nU	 HŒ  u  pgUS-   U4US-
  U4XgS-   4XgS-
  44 Hk  u  pÍXÍ4U
;   d  US:  d  US:  a  M   X\U4   nU
R                  XÍ45        Uc  [        Xè5      U:*  nOXâU4;  nU(       a  X%XÍ4'   UR                  XÍ45        Mk  Mm     MŽ     U	n
Un	U	(       a  M©  gg! [        [        4 a     gf = f! [        [        4 a     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   )rP   Ú_color_diffr$   Ú
IndexErrorÚsetÚadd)ÚimagerI   ÚvalueÚborderÚthreshÚpixelrz   r{   Ú
backgroundÚedgeÚ	full_edgeÚnew_edgeÚsÚtrq   r-   s                   r1   Ú	floodfillr3    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Ã6D	ÄD	ÄD ÄD c                ó  ^^	^
• [        U[        5      (       d  Sn[        U5      eUS:  a  Sn[        U5      e[        U [        [
        45      (       d  Sn[        U5      e[        U 5      S:X  aH  [        S U  5       5      (       d  Sn[        U5      e[        [        [           [	        U 5      5      Gt m	m
OÕ[        U 5      S:X  a¹  [        U S   [        [
        45      (       a›  [        S	 U S    5       5      (       a  [        U S
   [        [        45      (       d  Sn[        U5      e[        U S   5      S:w  a  Sn[        U5      e[        [        [           [	        U S   5      5      m	[        [        U S
   5      m
OSn[        U5      eT
S::  a  Sn[        U5      e[        U[        [        45      (       d  Sn[        U5      eSU	4S jjmSUU
4S jjnSS jnU" X5      nU Vs/ s H
  ot" U5      PM     sn$ s  snf )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
zn_sides should be an intr�   zn_sides should be an int > 2z$bounding_circle should be a sequencec              3  óN   #   • U  H  n[        U[        [        45      v •  M     g 7fr:   ©r?   rÎ   rƒ   ©rp   r�   s     r1   rs   Ú4_compute_regular_polygon_vertices.<locals>.<genexpr>—  s   é € ÐHº°1”:˜a¤#¤u ×.Ð.ºùó   ‚#%z0bounding_circle should only contain numeric datarh   r   c              3  óN   #   • U  H  n[        U[        [        45      v •  M     g 7fr:   r6  r7  s     r1   rs   r8  �  s"   é € ð 
Ú1C¨AŒJ�qœ3¤˜,×'Ð'Ò1Cùr9  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                óà  >• [        U S   [        R                  " [        R                  " SU-
  5      5      -  U S   [        R                  " [        R                  " SU-
  5      5      -  -
  TS   -   S5      [        U S   [        R                  " [        R                  " SU-
  5      5      -  U S   [        R                  " [        R                  " SU-
  5      5      -  -   TS   -   S5      4$ )Nr   ri   r   rh   )rË   rm   ru   rv   rw   )r�   r‰   Úcentroids     €r1   Ú_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‘+ñð ó	ð
ð 	
r4   c                ó   >• TS/nT" X5      $ ©Nr   rº   )ry   Ústart_pointr=  Úpolygon_radiuss     €€r1   Ú_compute_polygon_vertexÚB_compute_regular_polygon_vertices.<locals>._compute_polygon_vertexÊ  s   ø€ Ø% qÐ)ˆÙ˜{Ó2Ð2r4   c                ó’   • / nSU -  nSSU-  -
  U-   n[        U 5       H%  nUR                  U5        XC-  nUS:”  d  M   US-  nM'     U$ )Nri   r¸   g      à?)r‡   Úappend)r­   r®   r‘   r‰   Úcurrent_angleÚ_s         r1   Ú_get_anglesÚ6_compute_regular_polygon_vertices.<locals>._get_anglesÎ  s^   € ØˆØ˜‘-ˆà˜s W™}Ñ,°Ñ8ˆÜ�w–ˆAØ�M‰M˜-Ô(ØÑ$ˆMØ˜sÕ"Ø Ñ$’ñ	  ð
 ˆr4   )r�   úlist[float]r‰   rƒ   r„   r  )ry   rƒ   r„   r  )r­   rÎ   r®   rƒ   r„   rK  )
r?   rÎ   râ   r$   r†   rB   rˆ   rÌ   r   rƒ   )r¬   r­   r®   r0   rC  rI  r‘   ry   r=  r<  rB  s           @@@r1   r«   r«   _  sâ  ú€ ô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      (       a  U OU 4m[        U[        5      (       a  UOU4m[        UU4S j[        [	        T5      5       5       5      $ )zB
Uses 1-norm distance to calculate difference between two values.
c              3  óL   >#   • U  H  n[        TU   TU   -
  5      v •  M     g 7fr:   )Úabs)rp   r�   ÚfirstÚseconds     €€r1   rs   Ú_color_diff.<locals>.<genexpr>ê  s(   øé € ÐEÒ2D¨QŒs�5˜‘8˜f Q™iÑ'×(Ð(Ò2Dùs   ƒ!$)r?   rB   Úsumr‡   rˆ   )Úcolor1Úcolor2rO  rP  s     @@r1   r$  r$  á  sI   ù€ ô ! ¬×/Ñ/‰F°f°Y€EÜ! &¬%×0Ñ0‰V°v°i€FäÕE´%¼¸F»Ô2DÓEÓEÐEr4   r:   )r'   r  r#   r  r„   r   )r'   zImage.Image | Noner„   z)tuple[ImageDraw2.Draw | None, ModuleType]r@  )r(  r  rI   ztuple[int, int]r)  úfloat | tuple[int, ...]r*  zfloat | tuple[int, ...] | Noner+  rƒ   r„   rÉ   )r¬   r  r­   rÎ   r®   rƒ   r„   zlist[tuple[float, float]])rS  rU  rT  rU  r„   rƒ   )!Ú
__future__r   rm   rä   Úcollections.abcr   Útypingr   r"  r   r   r	   r
   ÚTYPE_CHECKINGr   Útypesr   r   r   r   Ú_typingr   r   r(   rW   r   r  r   r¥   r  r3  r«   r$  rº   r4   r1   Ú<module>r\     sþ   ðö@ #ã Û Ý $Ý ç 5Ó 5à€ÞÝ(Ý ß"åß%ð .3¯Z©Z×-?Ñ-?€Ð	*Ó ?ð÷B
ñ B
öJ#ö"ð .2Øð>Øð>àð>ð #ð>ð +ð	>ð
 ð>ð 
õ>ðB@Ø6ð@ØADð@ØPUð@àô@ðD	FØ#ð	FØ-Dð	Fà
õ	Fr4   