+
    `åµj[Š  ã                  óF  a € 0 t $ ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt ^RI	H
t
HtHtHt Rt]'       d#   ^ RIHt ^ RIHt ^ R	IHtHt ^R
I	Ht ^RIHtHt ]
P0                  P2                  tR]R&     ! R R4      tRR R lltRR R lltRR R lltR R lt R R lt!R# )é    )ÚannotationsN)ÚSequence)Úcast)ÚImageÚ
ImageColorÚ	ImageFontÚ	ImageTextF)ÚCallable)Ú
ModuleType)ÚAnyÚAnyStr©Ú
ImageDraw2)ÚCoordsÚ_Inkz!Callable[[], Image.core._Outline]ÚOutlinec                  ó¦  € ] tR t^=t$ RtR]R&   R3R R lltR R ltR R	 ltR3R
 R llt	R4R R llt
R3R R lltR5R R lltR5R R lltR5R R lltR6R R lltR7R R lltR5R R lltR3R R lltR5R R lltR8R  R! lltR5R" R# lltR8R$R/R% R& llltR9R' R( lltR9R)R/R* R+ llltR:R)R/R, R- llltR;R)R/R. R/ llltR;R)R/R0 R1 llltR2tR# )<Ú	ImageDrawNúImageFont.BaseImageFont | NoneÚfontc               ó$   € V ^8„  d   QhRRRRRR/# )é   ÚimúImage.ImageÚmodeú
str | NoneÚreturnÚNone© )Úformats   "ÚH/var/www/html/bestweb/venv/lib/python3.14/site-packages/PIL/ImageDraw.pyÚ__annotate__ÚImageDraw.__annotate__@   s!   € ÷ &ñ &˜;ð &¨jð &ÀDñ &ó    c                ó\  € VP                  4        ^ pVf   VP                  pW!P                  8w  d)   VR8X  d   VP                  R8X  d   ^pMRp\        V4      hVR8X  d   VP                  V n        MRV n        Wn        VP
                  V n        \        P                  P                  V P
                  V4      V n        W n        VR	9   d"   V P                  P                  ^4      V n
        M V P                  P                  R
4      V n
        VR9   d	   RV n        MRV n        RV n        R# )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.
NÚRGBAÚRGBzmode mismatchÚPÚ1ÚLF)ÚIÚFéÿÿÿÿ)r)   r(   r+   r,   )Ú_ensure_mutabler   Ú
ValueErrorÚpaletteÚ_imager   r   ÚcoreÚdrawÚdraw_inkÚinkÚfontmodeÚfill)Úselfr   r   ÚblendÚmsgs   &&&  r!   Ú__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ØˆŽ	r$   c               ó   € V ^8„  d   QhRR/# )r   r   úImageFont.BaseImageFontr   )r    s   "r!   r"   r#   h   s   € ÷ ñ à	 ñr$   c                ór   € V P                   '       g   \        P                  ! 4       V n         V P                   # )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)r8   s   &r!   ÚgetfontÚImageDraw.getfonth   s'   € ð( �y�yˆyä!×.Ò.Ó0ˆDŒIØ�y‰yÐr$   c               ó    € V ^8„  d   QhRRRR/# )r   Ú	font_sizeúfloat | Noner   r>   r   )r    s   "r!   r"   r#   �   s   € ÷ "ñ " ,ð "Ð3Jñ "r$   c                	óV   € Ve   \         P                  ! V4      # V P                  4       # ©N)r   r@   rA   )r8   rD   s   &&r!   Ú_getfontÚImageDraw._getfont�   s%   € ØÒ Ü×)Ò)¨)Ó4Ð4à—<‘<“>Ð!r$   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r5   ú_Ink | Noner7   r   ztuple[int | None, int | None]r   )r    s   "r!   r"   r#   ‡   s$   € ÷ 'ñ 'Øð'Ø&1ð'à	&ñ'r$   c                	ó
  € R pR pVf6   Vf2   V P                   '       d   V P                  pW43# V P                  p W43# VeŸ   \        V\        4      '       d!   \        P
                  ! WP                  4      pV P                  '       d<   \        V\        4      '       d&   V P                  P                  WP                  4      pV P                  P                  V4      pVeŸ   \        V\        4      '       d!   \        P
                  ! W P                  4      pV P                  '       d<   \        V\        4      '       d&   V P                  P                  W P                  4      pV P                  P                  V4      pW43# rG   )r7   r5   Ú
isinstanceÚstrr   Úgetcolorr   r0   Útupler1   r3   r4   )r8   r5   r7   Ú
result_inkÚresult_fills   &&&  r!   Ú_getinkÚImageDraw._getink‡   s$  € ð ˆ
ØˆØŠ;˜4š<Ø�y�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�ØÐ&Ð&r$   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   Úxyr   ÚstartÚfloatÚendr7   rK   ÚwidthÚintr   r   r   )r    s   "r!   r"   r#       sF   € ÷ ;ñ ;àð;ð ð;ð ð	;ð
 ð;ð ð;ð 
ñ;r$   c                ó„   € V P                  V4      w  rdVe)   V^ 8w  d    V P                  P                  WW6V4       R# R# R# )zDraw an arc.N)rS   r3   Údraw_arc)r8   rV   rW   rY   r7   rZ   r5   s   &&&&&& r!   ÚarcÚImageDraw.arc    s<   € ð —L‘L Ó&‰	ˆØŠ?˜u¨œzØ�I‰I×Ñ˜r¨#°EÖ:ñ  *‰?r$   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rV   zSequence[int]Úbitmapr   r7   rK   r   r   r   )r    s   "r!   r"   r#   ­   s,   € ÷ 	6ñ 	6Øð	6Ø)4ð	6Ø<Gð	6à	ñ	6r$   c                ó°   € VP                  4        V P                  V4      w  rCVf   TpVe)   V P                  P                  WP                  V4       R# R# )zDraw a bitmap.N)ÚloadrS   r3   Údraw_bitmapr   )r8   rV   ra   r7   r5   s   &&&& r!   ra   ÚImageDraw.bitmap­   sI   € ð 	�‰ŒØ—L‘L Ó&‰	ˆØŠ;ØˆCØŠ?Ø�I‰I×!Ñ! "§i¡i°Ö5ñ r$   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# ©r   rV   r   rW   rX   rY   r7   rK   ÚoutlinerZ   r[   r   r   r   )r    s   "r!   r"   r#   ¸   sY   € ÷ @ñ @àð@ð ð@ð ð	@ð
 ð@ð ð@ð ð@ð 
ñ@r$   c                óØ   € V P                  WT4      w  rxVe   V P                  P                  WW8^4       Ve2   Wx8w  d*   V^ 8w  d!   V P                  P                  WW7^ V4       R# R# R# R# )zDraw a chord.N)rS   r3   Ú
draw_chord©	r8   rV   rW   rY   r7   rh   rZ   r5   Úfill_inks	   &&&&&&&  r!   ÚchordÚImageDraw.chord¸   s`   € ð Ÿ™ WÓ3‰ˆØÒØ�I‰I× Ñ  ¨C¸1Ô=ØŠ?˜sœ°5¸A´:Ø�I‰I× Ñ  ¨C°a¸Ö?ñ 4>™‰?r$   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# ©
r   rV   r   r7   rK   rh   rZ   r[   r   r   r   )r    s   "r!   r"   r#   È   s<   € ÷ 6ñ 6àð6ð ð6ð ð	6ð
 ð6ð 
ñ6r$   c                óÔ   € V P                  W24      w  rVVe   V P                  P                  W^4       Ve1   WV8w  d)   V^ 8w  d    V P                  P                  W^ V4       R# R# R# R# )zDraw an ellipse.N)rS   r3   Údraw_ellipse©r8   rV   r7   rh   rZ   r5   rl   s   &&&&&  r!   ÚellipseÚImageDraw.ellipseÈ   s\   € ð Ÿ™ WÓ3‰ˆØÒØ�I‰I×"Ñ" 2°Ô3ØŠ?˜sœ°5¸A´:Ø�I‰I×"Ñ" 2¨A¨uÖ5ñ 4>™‰?r$   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   rV   úSequence[float]ÚradiusrX   r7   rK   rh   rZ   r[   r   r   r   )r    s   "r!   r"   r#   Ö   sF   € ÷ 
7ñ 
7àð
7ð ð
7ð ð	
7ð
 ð
7ð ð
7ð 
ñ
7r$   c                ó¦   € V^ ,          V,
          V^,          V,
          V^ ,          V,           V^,          V,           3pV P                  WcWE4       R# )z4Draw a circle given center coordinates and a radius.N)rt   )r8   rV   rx   r7   rh   rZ   Ú
ellipse_xys   &&&&&& r!   ÚcircleÚImageDraw.circleÖ   s@   € ð ˜•e˜f•n b¨¥e¨f¥n°b¸µe¸fµnÀbÈÅeÈfÅnÐUˆ
Ø�‰�Z wÖ6r$   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   rV   r   r7   rK   rZ   r[   Újointr   r   r   r   )r    s   "r!   r"   r#   â   sC   € ÷ K=ñ K=àðK=ð ðK=ð ð	K=ð
 ðK=ð 
ñK=r$   c                ó`  a€ V P                  V4      ^ ,          pVEe…   S^ 8w  Ed{   V P                  P                  WS4       VR8X  EdU   S^8”  EdK   \        V^ ,          \        \
        34      '       d(   \        \        \        \        ,          ,          V4      pMP\        ^ \        V4      ^4       Uu. uF0  p\        \        \        ,          \        WV^,            4      4      NK2  	  pp\        ^\        V4      ^,
          4       EF�  pWg,          pWg^,
          ,          V3W†V^,           ,          33 U	U
u. uFa  w  rš\        P                  ! \        P                  ! V
^ ,          V	^ ,          ,
          V	^,          V
^,          ,
          4      4      R,          NKc  	  pp	p
V^ ,          V^,          8X  d   K²  R V3R llpV^,          V^ ,          8„  ;'       d#    V^,          ^´,
          V^ ,          8„  ;'       g6    V^,          V^ ,          8  ;'       d    V^,          ^´,           V^ ,          8„  pV^ ,          S^,          ,
          ^,           V^,          S^,          ,
          ^,           3V^ ,          S^,          ,           ^,
          V^,          S^,          ,           ^,
          3.pV'       d!   V^,          ^Z,           V^ ,          ^Z,           r©MV^ ,          ^Z,
          V^,          ^Z,
          r©V P                  Wé^Z,
          V
^Z,
          V4       S^8”  g   EK  V'       d/   V! W‹^ ,          ^Z,           4      VV! W‹^,          ^Z,           4      .pM-V! W‹^ ,          ^Z,
          4      VV! W‹^,          ^Z,
          4      .pV P                  Wò^R7       EK�  	  R# R# R# R# R# u upi u up
p	i )z6Draw a line, or a connected sequence of line segments.NÚcurveéh  c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úcoordrw   ÚanglerX   r   ztuple[float, ...]r   )r    s   "r!   r"   Ú$ImageDraw.line.<locals>.__annotate__  s$   € ÷ ñ Ø.ðØ7<ðà*ñr$   c                ó  <€ V w  r#V^Z,          pS^,          ^,
          p\         ;QJ dv    . R W$\        P                  ! \        P                  ! V4      4      ,          3W4\        P                  ! \        P                  ! V4      4      ,          33 4       F  NK  	  5# ! R W$\        P                  ! \        P                  ! V4      4      ,          3W4\        P                  ! \        P                  ! V4      4      ,          33 4       4      # )éZ   c              3  ó˜   "  € T F@  w  rY^ 8”  d   \         P                  ! V4      M\         P                  ! V4      ,           x € KB  	  R# 5i)r   N)ÚmathÚfloorÚceil)Ú.0ÚpÚp_ds   &  r!   Ú	<genexpr>Ú9ImageDraw.line.<locals>.coord_at_angle.<locals>.<genexpr>
  s;   é € ð %ñ+¡ ð ¸!´G¤§¢¨C¤ÄÇÂÈ3Ã×PÒPó+ùs   ‚AA
)rP   r‰   ÚcosÚradiansÚsin)rƒ   r„   ÚxÚyÚdistancerZ   s   &&   €r!   Úcoord_at_angleÚ&ImageDraw.line.<locals>.coord_at_angle  sÐ   ø€ ð  %™˜Ø �˜Ø#(¨1¥9¨q¥=˜ß$œuñ %ð "#¬t¯xªx¼¿ºÀUÓ8KÓ/LÕ$LÐ MØ!"¬t¯xªx¼¿ºÀUÓ8KÓ/LÕ$LÐ Mñ+ó%Ÿuð ˜uñ %ð "#¬t¯xªx¼¿ºÀUÓ8KÓ/LÕ$LÐ MØ!"¬t¯xªx¼¿ºÀUÓ8KÓ/LÕ$LÐ Mñ+ó%ó  ð r$   )rZ   )rS   r3   Ú
draw_linesrM   ÚlistrP   r   r   rX   ÚrangeÚlenr‰   ÚdegreesÚatan2ÚpiesliceÚline)r8   rV   r7   rZ   r~   r5   ÚpointsÚiÚpointrW   rY   Úanglesr—   ÚflippedÚcoordsÚ
gap_coordss   &&&f&           r!   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Ô-á ÷ð ð ˜q�	 F¨1¥IÑ-×MÐM°&¸µ)¸cµ/ÀFÈ1ÅIÑ2M÷Qð Qà  �) f¨Q¥iÑ/×OÐ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   Â56N%Ä:A'N*c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   ÚshapezImage.core._Outliner7   rK   rh   r   r   r   )r    s   "r!   r"   r#   /  s2   € ÷ 2ñ 2à"ð2ð ð2ð ð	2ð
 
ñ2r$   c                óà   € VP                  4        V P                  W24      w  rEVe   V P                  P                  W^4       Ve'   WE8w  d   V P                  P                  W^ 4       R# R# R# )z(Experimental) Draw a shape.N)ÚcloserS   r3   Údraw_outline)r8   rª   r7   rh   r5   rl   s   &&&&  r!   rª   ÚImageDraw.shape/  s[   € ð 	�‰ŒØŸ™ WÓ3‰ˆØÒØ�I‰I×"Ñ" 5°AÔ6ØŠ?˜sœØ�I‰I×"Ñ" 5¨qÖ1ñ  /‰?r$   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# rg   r   )r    s   "r!   r"   r#   =  sY   € ÷ Cñ CàðCð ðCð ð	Cð
 ðCð ðCð ðCð 
ñCr$   c                óØ   € V P                  WT4      w  rxVe   V P                  P                  WW8^4       Ve2   Wx8w  d*   V^ 8w  d!   V P                  P                  WW7^ V4       R# R# R# R# )zDraw a pieslice.N)rS   r3   Údraw_pieslicerk   s	   &&&&&&&  r!   rŸ   ÚImageDraw.pieslice=  s`   € ð Ÿ™ WÓ3‰ˆØÒØ�I‰I×#Ñ# B¨s¸aÔ@ØŠ?˜sœ°5¸A´:Ø�I‰I×#Ñ# B¨s¸¸EÖBñ 4>™‰?r$   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rV   r   r7   rK   r   r   r   )r    s   "r!   r"   r#   M  s!   € ÷ +ñ +˜ð + kð +¸Tñ +r$   c                ón   € V P                  V4      w  r2Ve   V P                  P                  W4       R# R# )z#Draw one or more individual pixels.N)rS   r3   Údraw_points)r8   rV   r7   r5   s   &&& r!   r£   ÚImageDraw.pointM  s.   € à—L‘L Ó&‰	ˆØŠ?Ø�I‰I×!Ñ! "Ö*ñ r$   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# rp   r   )r    s   "r!   r"   r#   S  sC   € ÷ Kñ KàðKð ðKð ð	Kð
 ðKð 
ñKr$   c                óF  € V P                  W24      w  rVVe   V P                  P                  W^4       Veê   WV8w  dâ   V^ 8w  dÙ   V^8X  d    V P                  P                  W^ V4       R# V P                  e£   \        P
                  ! RV P                  P                  4      pV P                  ^4      ^ ,          p\        V4      p	V	P                  P                  W^4       V P                  P                  W^ V^,          ^,
          VP                  4       R# R# R# R# R# )zDraw a polygon.Nr)   )rS   r3   Údraw_polygonr   r   ÚnewÚsizeÚDraw)
r8   rV   r7   rh   rZ   r5   rl   ÚmaskÚmask_inkr3   s
   &&&&&     r!   Ú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>™‰?r$   c               ó4   € V ^8„  d   QhRRRRRRRRR	RR
RRR/# )r   Úbounding_circleú!Sequence[Sequence[float] | float]Ún_sidesr[   ÚrotationrX   r7   rK   rh   rZ   r   r   r   )r    s   "r!   r"   r#   k  sP   € ÷ /ñ /à:ð/ð ð/ð ð	/ð
 ð/ð ð/ð ð/ð 
ñ/r$   c                óB   € \        WV4      pV P                  WtWV4       R# )zDraw a regular polygon.N)Ú!_compute_regular_polygon_verticesr¿   )r8   rÂ   rÄ   rÅ   r7   rh   rZ   rV   s   &&&&&&& r!   Úregular_polygonÚImageDraw.regular_polygonk  s   € ô /¨ÈÓRˆØ�‰�R˜wÖ.r$   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# rp   r   )r    s   "r!   r"   r#   x  s<   € ÷ 8ñ 8àð8ð ð8ð ð	8ð
 ð8ð 
ñ8r$   c                óÔ   € V P                  W24      w  rVVe   V P                  P                  W^4       Ve1   WV8w  d)   V^ 8w  d    V P                  P                  W^ V4       R# R# R# R# )zDraw a rectangle.N)rS   r3   Údraw_rectanglers   s   &&&&&  r!   Ú	rectangleÚImageDraw.rectanglex  s\   € ð Ÿ™ WÓ3‰ˆØÒØ�I‰I×$Ñ$ R°1Ô5ØŠ?˜sœ°5¸A´:Ø�I‰I×$Ñ$ R¨a°Ö7ñ 4>™‰?r$   Úcornersc               ó4   € V ^8„  d   QhRRRRRRRRRR	R
RRR/# )r   rV   r   rx   rX   r7   rK   rh   rZ   r[   rÏ   z$tuple[bool, bool, bool, bool] | Noner   r   r   )r    s   "r!   r"   r#   †  sY   € ÷ J8ñ J8àðJ8ð ðJ8ð ð	J8ð
 ðJ8ð ðJ8ð 6ðJ8ð 
ñJ8r$   c               óø  a aaaaaaaaaaa€ \        V^ ,          \        \        34      '       d1   \        \        \        \
        ,          ,          V4      w  w  oow  ooM \        \        \
        ,          V4      w  ooooSS8  d   Rp\        V4      hSS8  d   Rp\        V4      hSf   Ro\        SS,
          SS,
          V^,          4      o\        S4      o\        S4      o\        S4      o\        S4      oRRuoo\        S4      '       dl   SSS,
          ^,
          8¬  oS'       d
   SS,
          oSSS,
          ^,
          8¬  oS'       d
   SS,
          oS'       d   S'       d   S P                  WVS4      # S^ 8X  g   \        S4      '       g   S P                  WVS4      # \        S^,          4      pS P                  WC4      w  ooR VVVVVVV VVVVV3R llp	SEeÁ   V	! R4       S'       d?   S P                  P!                  SSV,           ^,           SSV,
          ^,
          3S^4       M`SV,
          ^,
          SV,           ^,           8¼  d>   S P                  P!                  SV,           ^,           SSV,
          ^,
          S3S^4       S'       Eg
   S'       Eg   SSSV,           S.p
S^ ,          '       d   V
^;;,          V^,           ,          uu&   S^,          '       d   V
^;;,          V^,           ,          uu&   S P                  P!                  V
S^4       SV,
          SSS.pS^,          '       d   V^;;,          V^,           ,          uu&   S^,          '       d   V^;;,          V^,           ,          uu&   S P                  P!                  VS^4       SEeO   SS8w  EdE   S^ 8w  Ed;   V	! R4       S'       Eg   SSSSS,           ^,
          .pS^ ,          '       d   V^ ;;,          V^,           ,          uu&   S^,          '       d   V^;;,          V^,           ,          uu&   S P                  P!                  VS^4       SSS,
          ^,           SS.pS^,          '       d   V^ ;;,          V^,           ,          uu&   S^,          '       d   V^;;,          V^,           ,          uu&   S P                  P!                  VS^4       S'       Eg   SSSS,           ^,
          S.p
S^ ,          '       d   V
^;;,          V^,           ,          uu&   S^,          '       d   V
^;;,          V^,           ,          uu&   S P                  P!                  V
S^4       SS,
          ^,           SSS.pS^,          '       d   V^;;,          V^,           ,          uu&   S^,          '       d   V^;;,          V^,           ,          uu&   S P                  P!                  VS^4       R# R# R# R# R# )	zDraw a rounded rectangle.z&x1 must be greater than or equal to x0z&y1 must be greater than or equal to y0NTFc               ó    € V ^8„  d   QhRRRR/# )r   rŸ   Úboolr   r   r   )r    s   "r!   r"   Ú1ImageDraw.rounded_rectangle.<locals>.__annotate__»  s   € ÷  	?ñ  	? 4ð  	?¨Dñ  	?r$   c                ó€  <€ S'       d1   SSSS,           SS,           3^´R3SSS,
          SS,           S3^ ^´33pEM+S'       d0   SSSS,           SS,           3^ZR3SS,
          SSSS,           3R^Z33pMô\         ;QJ dx    . V3R l\        SSSS,           SS,           3^´R3SS,
          SSSS,           3RR3SS,
          SS,
          SS3^ ^Z3SSS,
          SS,           S3^Z^´334       4       F  NK  	  5Mq! V3R l\        SSSS,           SS,           3^´R3SS,
          SSSS,           3RR3SS,
          SS,
          SS3^ ^Z3SSS,
          SS,           S3^Z^´334       4       4      pV FS  pV '       d&   S	P                  P                  ! VS^3,           !   K0  S	P                  P                  ! VSS
3,           !   KU  	  R# )é´   r�   é  c              3  óN   <"  € T F  w  rSV,          '       g   K  Vx € K  	  R # 5irG   r   )rŒ   r¢   ÚpartrÏ   s   &  €r!   r�   ÚDImageDraw.rounded_rectangle.<locals>.draw_corners.<locals>.<genexpr>Ë  s+   øé € ð ñ$™˜ð ˜q—z‘z÷ ’Dó$ùs   ƒ%›
%N)rP   Ú	enumerater3   r±   r]   )rŸ   ÚpartsrÙ   rÏ   Údrl   Úfull_xÚfull_yr5   r8   rZ   Úx0Úx1Úy0Úy1s   &  €€€€€€€€€€€€r!   Ú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Ð?ð	ô$óŸ™ô ä#,à  " 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°Õ)<Ô>ó	 r$   )TTTT)rM   rš   rP   r   r   rX   r/   ÚminÚroundÚallrt   ÚanyrÍ   r[   rS   r3   rÌ   )r8   rV   rx   r7   rh   rZ   rÏ   r:   Úrrä   ÚleftÚrightÚtopÚbottomrÝ   rl   rÞ   rß   r5   rà   rá   râ   rã   s   f&&&&fd       @@@@@@@@@r!   Úrounded_rectangleÚImageDraw.rounded_rectangle†  s‹  ÿû€ ô �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ß�6§& &Ø˜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µ:Ù˜Ôç�6Ø˜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ß�6Ø˜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>™‰?r$   c                óX   € V ^8„  d   Qh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RRR/# )r   rV   útuple[float, float]ÚtextzAnyStr | ImageText.Text[AnyStr]r7   rK   r   r   Úanchorr   ÚspacingrX   ÚalignrN   Ú	directionÚfeaturesúlist[str] | NoneÚlanguageÚstroke_widthÚstroke_fillÚembedded_colorrÓ   Úargsr   Úkwargsr   r   r   )r    s   "r!   r"   r#     s¼   € ÷ uñ uàðuð .ðuð ð	uð
 -ðuð ðuð ðuð ðuð ðuð #ðuð ðuð ðuð !ðuð ðuð ðuð  ð!uð" 
ñ#ur$   c                ó¨  a aa	a
aaaaa€ \        V\        P                  4      '       d   VoMzVf!   S P                  SP	                  R4      4      p\        P                  ! W$S P
                  VSS	S
4      oS'       d   SP                  4        V'       d   SP                  W¼4       R V 3R llpV! V4      pVf   R# RpSP                  '       d#   SP                  e   V! SP                  4      MTpSP                  WV4       FH  oRR VVVV	VVV
VV 3	R lllpVe'   V! VSP                  4       VV8w  d   V! V4       K>  K@  V! V4       KJ  	  R# )z
Draw text.NrD   c               ó    € V ^8„  d   QhRRRR/# )r   r7   rK   r   r[   r   )r    s   "r!   r"   Ú$ImageDraw.text.<locals>.__annotate__2  s   € ÷ 	ñ 	˜ð 	¨ñ 	r$   c                óF   <€ SP                  V 4      w  rVf	   Vf   Q hV# V# rG   )rS   )r7   r5   rl   r8   s   &  €r!   ÚgetinkÚImageDraw.text.<locals>.getink2  s.   ø€ Ø ŸL™L¨Ó.‰MˆCØŠ{ØÒ+Ð+Ð+Ø�ØˆJr$   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r5   r[   rû   rX   r   r   r   )r    s   "r!   r"   r  G  s!   € ÷ 5=ñ 5=˜sð 5=°%ð 5=Àñ 5=r$   c                ó¶  <	€ SP                   pV^ 8X  d   S'       d   Rp\        SP                  4      p\        SP                  4      p\        P
                  ! SP                  4      ^ ,          \        P
                  ! SP                  4      ^ ,          3p\        SP                  \        P                  4      '       d`   SP                  P                  ! SP                  VSSSVSP                  V V.	S
O5RR/SB w  rgW7^ ,          ,          pWG^,          ,          pM> SP                  P                  ! SP                  VSSSVSP                  V .S
O5RV/SB pVR8X  d¢   YfP                  ^4      rh\         P"                  ! RV 4      ^,          p	VP%                  ^V	4       SP&                  eQ   SP&                  P)                  WƒWCVP*                  ^ ,          ,           WFP*                  ^,          ,           3V4       R# R# SP,                  P/                  W43W`4       R#   \         d)    SP                  P                  SP                  4      p Lùi ; i)r   r&   Ústroke_filledTrW   r¢   N)r6   r[   r”   r•   r‰   ÚmodfrM   r   r   ÚFreeTypeFontÚgetmask2ró   rô   ÚgetmaskÚ	TypeErrorÚgetbandÚstructÚpackÚfillbandr   Úpaster»   r3   rd   )r5   rû   r   r”   r•   rW   r½   ÚoffsetÚcolorÚ	ink_alpharþ   r÷   rý   rø   Ú
image_textrÿ   rú   r    r8   s   &&        €€€€€€€€€r!   Ú	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   Ä!=H% È%0IÉI©r   )rM   r	   ÚTextrH   Úgetr   Úembed_colorÚstrokerû   rü   Ú_split)r8   rV   ró   r7   r   rô   rõ   rö   r÷   rø   rú   rû   rü   rý   rþ   rÿ   r  r5   Ú
stroke_inkr  r  r    s   f&&&&&&&fff&&fjl    @@r!   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 9r$   rD   c               óT   € V ^8„  d   Qh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R/# )r   rV   rò   ró   r   r7   rK   r   r   rô   r   rõ   rX   rö   rN   r÷   rø   rù   rú   rû   rü   rý   rÓ   rD   rE   r   r   r   )r    s   "r!   r"   r#   ‰  s    € ÷ !
ñ !
àð!
ð ð!
ð ð	!
ð
 -ð!
ð ð!
ð ð!
ð ð!
ð ð!
ð #ð!
ð ð!
ð ð!
ð !ð!
ð ð!
ð   ð!!
ð" 
ñ#!
r$   c               	ó@   € V P                  VVVVVVVVV	V
VVVVR 7      # ©)rD   )ró   )r8   rV   ró   r7   r   rô   rõ   rö   r÷   rø   rú   rû   rü   rý   rD   s   &&&&&&&&&&&&&&$r!   Úmultiline_textÚImageDraw.multiline_text‰  sD   € ð$ �y‰yØØØØØØØØØØØØØØð ó 
ð 	
r$   c               ó8   € V ^8„  d   Qh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Ó   rD   rE   r   rX   r   )r    s   "r!   r"   r#   ¬  sZ   € ÷ 'ñ 'àð'ð -ð'ð ð	'ð
 #ð'ð ð'ð ð'ð  ð'ð 
ñ'r$   c          	     óÈ   € Vf   V P                  V4      p\        P                  ! VVV P                  VVVR7      pV'       d   VP	                  4        VP                  4       # )z@Get the length of a given string, in pixels with 1/64 precision.)r÷   rø   rú   )rH   r	   r  r   r  Ú
get_length)	r8   ró   r   r÷   rø   rú   rý   rD   r  s	   &&&&&&&$ r!   Ú
textlengthÚImageDraw.textlength¬  s[   € ð Š<Ø—=‘= Ó+ˆDÜ—^’^ØØØ�I‰IØØØô
ˆ
÷ Ø×"Ñ"Ô$Ø×$Ñ$Ó&Ð&r$   c               óL   € V ^8„  d   Qh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   rV   rò   ró   r   r   r   rô   r   rõ   rX   rö   rN   r÷   rø   rù   rú   rû   rý   rÓ   rD   rE   r   z!tuple[float, float, float, float]r   )r    s   "r!   r"   r#   Æ  sŒ   € ÷ 6ñ 6àð6ð ð6ð -ð	6ð
 ð6ð ð6ð ð6ð ð6ð #ð6ð ð6ð ð6ð ð6ð  ð6ð 
+ñ6r$   c          	     óø   € Vf   V P                  V4      p\        P                  ! W#V P                  WWW‰4      pV'       d   VP	                  4        V
'       d   VP                  V
4       VP                  WV4      # )z2Get the bounding box of a given string, in pixels.)rH   r	   r  r   r  r  Úget_bbox)r8   rV   ró   r   rô   rõ   rö   r÷   rø   rú   rû   rý   rD   r  s   &&&&&&&&&&&&$ r!   ÚtextbboxÚImageDraw.textbboxÆ  sg   € ð" Š<Ø—=‘= Ó+ˆDÜ—^’^Ø˜Ÿ	™	 7°xó
ˆ
÷ Ø×"Ñ"Ô$ßØ×Ñ˜lÔ+Ø×"Ñ" 2¨uÓ5Ð5r$   c               óL   € V ^8„  d   Qh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    s   "r!   r"   r#   â  sŒ   € ÷ 
ñ 
àð
ð ð
ð -ð	
ð
 ð
ð ð
ð ð
ð ð
ð #ð
ð ð
ð ð
ð ð
ð  ð
ð 
+ñ
r$   c               	ó<   € V P                  VVVVVVVVV	V
VVR 7      # r#  )r/  )r8   rV   ró   r   rô   rõ   rö   r÷   rø   rú   rû   rý   rD   s   &&&&&&&&&&&&$r!   Úmultiline_textbboxÚImageDraw.multiline_textbboxâ  s>   € ð  �}‰}ØØØØØØØØØØØØð ó 
ð 	
r$   )	r1   r3   r7   r   r6   r   r5   r   r0   rG   )Né   )NNr5  )Nr5  N)NN)r   NNr5  )NNNé   rë   NNNr   NF)NNNNF)	NNr6  rë   NNNr   F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__r;   rA   rH   rS   r^   ra   rm   rt   r{   r    rª   rŸ   r£   r¿   rÈ   rÍ   rï   ró   r$  r)  r/  r3  Ú__static_attributes__r   r$   r!   r   r   =   sÓ   ‡ Ø+/€DÐ
(Ó/÷&õPõ2"÷'÷2;÷	6÷@÷ 6÷
7÷K=÷Z2÷C÷ +÷K÷0/÷8ñJ8ð 9=÷J8ð J8÷Xuñn!
ð  #'÷!!
ð !
ñF'ð #'÷'ð 'ñ46ð #'÷6ð 6ñ8
ð #'÷
ô 
r$   r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r   r   r   r   r   )r    s   "r!   r"   r"     s!   € ÷ #ñ #ˆ[ð # 
ð #°iñ #r$   c                ó`   €  \        V R4      ! V4      #   \         d    \        Y4      u # i ; i)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   &&r!   r¼   r¼     s3   € ð#Ü�r˜9Ô% dÓ+Ð+øÜô #Ü˜Ó"Ò"ð#ús   ‚ ”-¬-c               ó    € V ^8„  d   QhRRRR/# )r   r   zImage.Image | Noner   z)tuple[ImageDraw2.Draw | None, ModuleType]r   )r    s   "r!   r"   r"     s   € ÷ ñ Ð"ð Ð.Wñ r$   c                óD   € ^RI Hp V e   VP                  ! V 4      MRpW!3# )za
:param im: The image to draw in.
:returns: A (drawing context, drawing resource factory) tuple.
r   N)Ú r   r¼   )r   r   r3   s   &  r!   r?  r?    s$   € õ
 à"$¢.ˆ:�?Š?˜2Ô°d€DØÐÐr$   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   Úimager   rV   ztuple[int, int]Úvalueúfloat | tuple[int, ...]Úborderzfloat | tuple[int, ...] | NoneÚthreshrX   r   r   r   )r    s   "r!   r"   r"     sD   € ÷ >ñ >Øð>àð>ð #ð>ð +ð	>ð
 ð>ð 
ñ>r$   c                ó€  € V P                  4       pVf   Q hVw  rg WVV3,          p\        W(4      V8:  d   R# W%Wg3&   Yg30p	\	        4       p
T	'       d¼   \	        4       pT	 F¥  w  rgT^,           T3T^,
          T3Yg^,           3Yg^,
          33 Ft  w  rÍYÍ3T
9   g   T^ 8  g   T^ 8  d   K   Y\T3,          pT
P                  YÍ34       Tf   \        Yè4      T8*  pMYâT39  pT'       d   Y%YÍ3&   TP                  YÍ34       Kt  Kv  	  K§  	  T	p
Tp	KÃ  R#   \        \        3 d     R# i ; i  \        \        3 d     K°  i ; i)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.
N)rc   Ú_color_diffr/   Ú
IndexErrorÚsetÚadd)rF  rV   rG  rI  rJ  Úpixelr”   r•   Ú
backgroundÚedgeÚ	full_edgeÚnew_edgeÚsÚtr�   r7   s   &&&&&           r!   Ú	floodfillrW    sa  € ð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(   œD ¸D Â*
D(ÄD%Ä$D%Ä(D=Ä<D=c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rÂ   rÃ   rÄ   r[   rÅ   rX   r   zlist[tuple[float, float]]r   )r    s   "r!   r"   r"   _  s8   € ÷ @ñ @Ø6ð@ØADð@ØPUð@àñ@r$   c                óü  aa	a
€ \        V\        4      '       g   Rp\        V4      hV^8  d   Rp\        V4      h\        V \        \
        34      '       g   Rp\        V4      h\        V 4      ^8X  dq   \        ;QJ d    R V  4       F  '       d   K   RM	  RM! R V  4       4      '       g   Rp\        V4      h\        \        \        ,          \	        V 4      4      Ev o	o
EM \        V 4      ^8X  Ed   \        V ^ ,          \        \
        34      '       dà   \        ;QJ d#    R V ^ ,           4       F  '       d   K   RM	  RM! R V ^ ,           4       4      '       d$   \        V ^,          \        \        34      '       g   Rp\        V4      h\        V ^ ,          4      ^8w  d   R	p\        V4      h\        \        \        ,          \	        V ^ ,          4      4      o	\        \        V ^,          4      o
MR
p\        V4      hS
^ 8:  d   Rp\        V4      h\        V\        \        34      '       g   Rp\        V4      hR V	3R lloR VV
3R llpR R lpV! W4      pV Uu. uF
  qt! V4      NK  	  up# u upi )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 intzn_sides should be an int > 2z$bounding_circle should be a sequencec              3  óN   "  € T F  p\        V\        \        34      x € K  	  R # 5irG   ©rM   r[   rX   ©rŒ   r¢   s   & r!   r�   Ú4_compute_regular_polygon_vertices.<locals>.<genexpr>—  s   é € ÐH¹°1”:˜a¤#¤u ×.Ð.»ùó   ‚#%FTz0bounding_circle should only contain numeric datac              3  óN   "  € T F  p\        V\        \        34      x € K  	  R # 5irG   r[  r\  s   & r!   r�   r]  �  s"   é € ð 
Ù1C¨AŒJ�qœ3¤˜,×'Ð'Ó1Cù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               ó$   € V ^8„  d   QhRRRRRR/# )r   r£   úlist[float]r�   rX   r   rò   r   )r    s   "r!   r"   Ú7_compute_regular_polygon_vertices.<locals>.__annotate__º  s"   € ÷ 
ñ 
˜{ð 
°Uð 
Ð?Rñ 
r$   c                óp  <€ \        V ^ ,          \        P                  ! \        P                  ! RV,
          4      4      ,          V ^,          \        P                  ! \        P                  ! RV,
          4      4      ,          ,
          S^ ,          ,           ^4      \        V ^,          \        P                  ! \        P                  ! RV,
          4      4      ,          V ^ ,          \        P                  ! \        P                  ! RV,
          4      4      ,          ,           S^,          ,           ^4      3# )r   r�   )rç   r‰   r‘   r’   r“   )r£   r�   Úcentroids   &&€r!   Ú_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•+õð ó	ð
ð 	
r$   c               ó    € V ^8„  d   QhRRRR/# )r   r„   rX   r   rò   r   )r    s   "r!   r"   rb  Ê  s   € ÷ 3ñ 3 uð 3Ð1Dñ 3r$   c                ó   <€ S^ .pS! W4      # r  r   )r„   Ústart_pointre  Úpolygon_radiuss   & €€r!   Ú_compute_polygon_vertexÚB_compute_regular_polygon_vertices.<locals>._compute_polygon_vertexÊ  s   ø€ Ø% qÐ)ˆÙ˜{Ó2Ð2r$   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rÄ   r[   rÅ   rX   r   ra  r   )r    s   "r!   r"   rb  Î  s!   € ÷ 
ñ 
˜Sð 
¨Eð 
°kñ 
r$   c                óÄ   € . pR V ,          pRRV,          ,
          V,           p\        V 4       F.  pVP                  V4       WC,          pVR 8”  g   K%  VR ,          pK0  	  V# )r�   r×   g      à?)r›   Úappend)rÄ   rÅ   r¤   r�   Úcurrent_angleÚ_s   &&    r!   Ú_get_anglesÚ6_compute_regular_polygon_vertices.<locals>._get_anglesÎ  s^   € ØˆØ˜•-ˆà˜s W�}Õ,°Õ8ˆÜ�w–ˆAØ�M‰M˜-Ô(ØÕ$ˆMØ˜sÖ"Ø Õ$’ñ	  ð
 ˆr$   )
rM   r[   r  r/   rš   rP   rœ   rè   r   rX   )rÂ   rÄ   rÅ   r:   rk  rr  r¤   r„   re  rd  rj  s   &&&     @@@r!   rÇ   rÇ   _  s  ú€ ôV �gœs×#Ò#Ø(ˆÜ˜‹nÐØ�„{Ø,ˆÜ˜‹oÐô �o¬¬e }×5Ò5Ø4ˆÜ˜‹nÐä
ˆ?Ó˜qÔ ß‹sÑH¹ÓH�s�sŠsÑH¹ÓH×HÒHØDˆCÜ˜S“/Ð!ä$(¬¬e­´d¸?Ó6KÓ$LÑ!ˆ’>Ü	ˆ_Ó	 Õ	"¤z°/À!Õ2DÄtÌUÀm×'TÒ'Tß‹sñ 
Ø1@ÀÖ1Có
�s�sŠsñ 
Ø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   É&I9c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úcolor1rH  Úcolor2r   rX   r   )r    s   "r!   r"   r"   á  s)   € ÷ 	Fñ 	FØ#ð	FØ-Dð	Fà
ñ	Fr$   c                óÂ   aa€ \        V \        4      '       d   T MV 3o\        V\        4      '       d   TMV3o\        VV3R l\        \	        S4      4       4       4      # )zB
Uses 1-norm distance to calculate difference between two values.
c              3  ód   <"  € T F%  p\        SV,          SV,          ,
          4      x € K'  	  R # 5irG   )Úabs)rŒ   r¢   ÚfirstÚseconds   & €€r!   r�   Ú_color_diff.<locals>.<genexpr>ê  s(   øé € ÐEÑ2D¨QŒs�5˜•8˜f Q�iÕ'×(Ð(Ó2Dùs   ƒ-0)rM   rP   Úsumr›   rœ   )ru  rv  rz  r{  s   &&@@r!   rL  rL  á  sI   ù€ ô ! ¬×/Ò/‰F°f°Y€EÜ! &¬%×0Ò0‰V°v°i€FäÕE´%¼¸F»Ô2DÓEÓEÐEr$   rG   )Nr   )"Ú__conditional_annotations__Ú
__future__r   r‰   r  Úcollections.abcr   Útypingr   rD  r   r   r   r	   ÚTYPE_CHECKINGr
   Útypesr   r   r   r   Ú_typingr   r   r2   rh   r   r;  r   r¼   r?  rW  rÇ   rL  )r~  s   @r!   Ú<module>r…     s   øð÷@ #Ð "ã Û Ý $Ý ç 5Ó 5à€ßÝ(Ý ß"åß%ð .3¯Z©Z×-?Ñ-?€Ð	*Ó ?ð÷B
ñ B
÷J#÷"÷>õB@÷D	Fr$   