Ë
    Bü´j­Ç  ã                  óŽ  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZmZmZmZmZ ddlmZmZmZmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlm Z! ddl"m#Z# ddl$m%Z% dZ&e&rddlm'Z'  ejP                  e)«      Z* ejV                  d«      jX                  Z-dZ.dddddddddddddd d!d"œZ/ ejV                  d#«      Z0ejb                  Z2	 d$e2z  Z3	  G d%„ d&e«      Z4 G d'„ d(e«      Z5dTd)„Z6dUdVd*„Z7 G d+„ d,«      Z8 G d-„ d.e9«      Z: G d/„ d0«      Z; G d1„ d2e«      Z< G d3„ d4e8«      Z=dWd5„Z> G d6„ d7ej*                  «      Z?d8d9d:d;d<d=d>d>d>d?d@dAdBdCdDdEœZ@dXdF„ZA G dG„ dH«      ZB G dI„ dJ«      ZC G dK„ dLe«      ZD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dYdM„ZEdZdN„ZFeAdf	 	 	 	 	 	 	 	 	 	 	 d[dO„ZGd\dP„ZH ej’                  e?j”                  e?e>«        ej–                  e?j”                  eG«        ej˜                  e?j”                  eF«        ejš                  e?j”                  dQdRg«        ejœ                  e?j”                  dS«       y)]é    )ÚannotationsN)ÚCallable)ÚIntEnum)ÚIOÚAnyÚ
NamedTupleÚNoReturnÚcasté   )ÚImageÚ
ImageChopsÚ	ImageFileÚImagePaletteÚImageSequence)Úi16be)Úi32be)Úo8)Úo16be)Úo32be)Ú	deprecate)ÚDeferredErrorF)Ú_imagings   \w\w\w\ws   ‰PNG

)Ú1r   )ÚLúL;2)r   úL;4)r   r   )úI;16úI;16B)ÚRGBr   )r   zRGB;16B)ÚPúP;1)r    úP;2)r    úP;4)r    r    )ÚLAr$   )ÚRGBAzLA;16B)r%   r%   )r%   zRGBA;16B))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   ^ÿ* ÿ*$é@   c                  ó   — e Zd ZdZ	 dZ	 dZy)ÚDisposalr   r   r&   N)Ú__name__Ú
__module__Ú__qualname__ÚOP_NONEÚOP_BACKGROUNDÚOP_PREVIOUS© ó    úP/root/workspace/ytshorts/venv/lib/python3.12/site-packages/PIL/PngImagePlugin.pyr.   r.   k   s$   „ Ø€Gðð €Mðð
 €Kðr6   r.   c                  ó   — e Zd ZdZ	 dZy)ÚBlendr   r   N)r/   r0   r1   Ú	OP_SOURCEÚOP_OVERr5   r6   r7   r9   r9   €   s   „ Ø€Iðð
 €Gðr6   r9   c                óŒ   — t        j                  «       }|j                  | t        «      }|j                  rd}t        |«      ‚|S )Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)ÚzlibÚdecompressobjÚ
decompressÚMAX_TEXT_CHUNKÚunconsumed_tailÚ
ValueError)ÚsÚdobjÚ	plaintextÚmsgs       r7   Ú_safe_zlib_decompressrG   Ž   s>   € Ü×ÑÓ€DØ—‘ ¤>Ó2€IØ×ÒØMˆÜ˜‹oÐØÐr6   c                ó4   — t        j                  | |«      dz  S )Nl   ÿÿ )r=   Úcrc32)ÚdataÚseeds     r7   Ú_crc32rL   —   s   € Ü�:‰:�d˜DÓ! JÑ.Ð.r6   c                  ó^   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zddd
„Zy)ÚChunkStreamc                ó    — || _         g | _        y ©N)ÚfpÚqueue)ÚselfrQ   s     r7   Ú__init__zChunkStream.__init__    s   € Ø$&ˆŒØ:<ˆ�
r6   c                ó¬  — d}| j                   €J ‚| j                  r:| j                  j                  «       \  }}}| j                   j                  |«       nE| j                   j	                  d«      }|dd }| j                   j                  «       }t        |«      }t        |«      s*t        j                  sdt        |«      › d�}t        |«      ‚|||fS )z.Fetch a new chunk. Returns header information.Nr(   r'   zbroken PNG file (chunk ú))rQ   rR   ÚpopÚseekÚreadÚtellÚi32Úis_cidr   ÚLOAD_TRUNCATED_IMAGESÚreprÚSyntaxError)rS   ÚcidÚposÚlengthrC   rF   s         r7   rY   zChunkStream.read¤   s³   € àˆà�w‰wÐ"Ð"Ð"Ø�:Š:Ø#Ÿz™zŸ~™~Ó/ÑˆC��fØ�G‰G�L‰L˜Õà—‘—‘˜Q“ˆAØ�A�B�%ˆCØ—'‘'—,‘,“.ˆCÜ˜“VˆFä�cŒ{Ü×2Ò2Ø/´°S³	¨{¸!Ð<�Ü! #Ó&Ð&à�C˜ÐÐr6   c                ó   — | S rP   r5   ©rS   s    r7   Ú	__enter__zChunkStream.__enter__¹   s   € Øˆr6   c                ó$   — | j                  «        y rP   )Úclose)rS   Úargss     r7   Ú__exit__zChunkStream.__exit__¼   s   € Ø�
‰
�r6   c                ó    — d x| _         | _        y rP   )rR   rQ   rd   s    r7   rg   zChunkStream.close¿   s   € Ø#Ð#ˆŒ
�T•Wr6   c                ó\   — | j                   €J ‚| j                   j                  |||f«       y rP   )rR   Úappend©rS   r`   ra   rb   s       r7   ÚpushzChunkStream.pushÂ   s+   € Ø�z‰zÐ%Ð%Ð%Ø�
‰
×Ñ˜3  VÐ,Õ-r6   c                ó|   — t         j                  d|||«        t        | d|j                  d«      › �«      ||«      S )z"Call the appropriate chunk handlerzSTREAM %r %s %sÚchunk_Úascii)ÚloggerÚdebugÚgetattrÚdecoderm   s       r7   ÚcallzChunkStream.callÆ   s>   € ô 	�‰Ð&¨¨S°&Ô9Ø<Œw�t˜v c§j¡j°Ó&9Ð%:Ð;Ó<¸SÀ&ÓIÐIr6   c                óš  — t         j                  r|d   dz	  dz  r| j                  ||«       y| j                  €J ‚	 t	        |t	        |«      «      }t        | j                  j                  d«      «      }||k7  rdt        |«      › d�}t        |«      ‚y# t        j                  $ r }dt        |«      › d�}t        |«      |‚d}~ww xY w)	zRead and verify checksumr   é   r   Nr'   z(broken PNG file (bad header checksum in rV   z(broken PNG file (incomplete checksum in )r   r]   Úcrc_skiprQ   rL   r[   rY   r^   r_   ÚstructÚerror)rS   r`   rJ   Úcrc1Úcrc2rF   Úes          r7   ÚcrczChunkStream.crcÌ   sÅ   € ô ×*Ò*°°A±¸!±¸a²Ø�M‰M˜#˜tÔ$Øà�w‰wÐ"Ð"Ð"ð	*Ü˜$¤ s£Ó,ˆDÜ�t—w‘w—|‘| A“Ó'ˆDØ�tŠ|Ø@ÄÀcÃÀÈ1ÐM�Ü! #Ó&Ð&ð øô �|‰|ò 	*Ø<¼TÀ#»Y¸KÀqÐIˆCÜ˜cÓ"¨Ð)ûð	*ús   ¾AB ÂC
Â*CÃC
c                óV   — | j                   €J ‚| j                   j                  d«       y)zRead checksumNr'   )rQ   rY   )rS   r`   rJ   s      r7   ry   zChunkStream.crc_skipá   s#   € ð �w‰wÐ"Ð"Ð"Ø�‰�‰�Q�r6   c                ó4  — g }| j                   €J ‚	 	 | j                  «       \  }}}||k(  r	 |S | j                  |t        j                  | j                   |«      «       |j                  |«       Œ_# t        j                  $ r}d}t	        |«      |‚d }~ww xY w)Nztruncated PNG file)	rQ   rY   rz   r{   ÚOSErrorr   r   Ú
_safe_readrl   )rS   ÚendchunkÚcidsr`   ra   rb   r~   rF   s           r7   ÚverifyzChunkStream.verifyç   sŸ   € ð ˆà�w‰wÐ"Ð"Ð"Øð*Ø#'§9¡9£;Ñ ��S˜&ð
 �hŠØð ˆð �H‰H�Sœ)×.Ñ.¨t¯w©w¸Ó?Ô@Ø�K‰K˜Ôð øô —<‘<ò *Ø*�Ü˜c“l¨Ð)ûð*ús   “A1 Á1BÂBÂBN©rQ   ú	IO[bytes]ÚreturnÚNone)r‰   ztuple[bytes, int, int])r‰   rN   )rh   Úobjectr‰   rŠ   ©r‰   rŠ   )r`   Úbytesra   Úintrb   rŽ   r‰   rŠ   )r`   r�   ra   rŽ   rb   rŽ   r‰   r�   )r`   r�   rJ   r�   r‰   rŠ   )ó   IEND)r„   r�   r‰   zlist[bytes])r/   r0   r1   rT   rY   re   ri   rg   rn   rv   r   ry   r†   r5   r6   r7   rN   rN   Ÿ   s5   „ ó=ó ó*óó$ó.óJó*ó*õr6   rN   c                  óJ   — e Zd ZU dZded<   ded<   e	 d	 	 	 	 	 	 	 dd„«       Zy)	ÚiTXtzq
    Subclass of string to allow iTXt chunks to look like strings while
    keeping their extra information

    zstr | bytes | NoneÚlangÚtkeyNc                óN   — t         j                  | |«      }||_        ||_        |S )zÇ
        :param cls: the class to use when creating the instance
        :param text: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        )ÚstrÚ__new__r’   r“   )ÚclsÚtextr’   r“   rS   s        r7   r–   ziTXt.__new__  s'   € ô �{‰{˜3 Ó%ˆØˆŒ	ØˆŒ	Øˆr6   )NN)r˜   r•   r’   ú
str | Noner“   r™   r‰   r‘   )r/   r0   r1   Ú__doc__Ú__annotations__Ústaticmethodr–   r5   r6   r7   r‘   r‘   ý   sJ   … ñð ÓØ
ÓààDHðØðØ(ðØ7Aðà	òó ñr6   r‘   c                  ób   — e Zd ZdZdd„Zdd	d„Z	 	 	 d
	 	 	 	 	 	 	 	 	 	 	 dd„Z	 d	 	 	 	 	 	 	 dd„Zy)ÚPngInfoz<
    PNG chunk container (for use with save(pnginfo=))

    c                ó   — g | _         y rP   )Úchunksrd   s    r7   rT   zPngInfo.__init__  s	   € Ø79ˆ�r6   c                ó@   — | j                   j                  |||f«       y)a"  Appends an arbitrary chunk. Use with caution.

        :param cid: a byte string, 4 bytes long.
        :param data: a byte string of the encoded data
        :param after_idat: for use with private chunks. Whether the chunk
                           should be written after IDAT

        N)r    rl   )rS   r`   rJ   Ú
after_idats       r7   ÚaddzPngInfo.add!  s   € ð 	�‰×Ñ˜C  zÐ2Õ3r6   c                óÐ  — t        |t        «      s|j                  dd«      }t        |t        «      s|j                  dd«      }t        |t        «      s|j                  dd«      }t        |t        «      s|j                  dd«      }|r8| j                  d|dz   |z   dz   |z   dz   t	        j
                  |«      z   «       y| j                  d|dz   |z   dz   |z   dz   |z   «       y)	zùAppends an iTXt chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        :param zip: compression flag

        úlatin-1Ústrictúutf-8ó   iTXts     ó    s      N)Ú
isinstancer�   Úencoder£   r=   Úcompress)rS   ÚkeyÚvaluer’   r“   Úzips         r7   Úadd_itxtzPngInfo.add_itxt-  sÖ   € ô$ ˜#œuÔ%Ø—*‘*˜Y¨Ó1ˆCÜ˜%¤Ô'Ø—L‘L ¨(Ó3ˆEÜ˜$¤Ô&Ø—;‘;˜w¨Ó1ˆDÜ˜$¤Ô&Ø—;‘;˜w¨Ó1ˆDáØ�H‰HØØ�kÑ! DÑ(¨5Ñ0°4Ñ7¸%Ñ?Ä$Ç-Á-ÐPUÓBVÑVõð
 �H‰H�W˜c I™o°Ñ4°uÑ<¸tÑCÀeÑKÈeÑSÕTr6   c                ó  — t        |t        «      rL| j                  |||j                  �|j                  nd|j                  �|j                  |¬«      S d|¬«      S t        |t
        «      s	 |j                  dd«      }t        |t
        «      s|j                  dd«      }|r,| j                  d|dz   t        j                  |«      z   «       y| j                  d|d	z   |z   «       y# t        $ r | j                  |||¬«      cY S w xY w)
zæAppends a text chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key, text or an
           :py:class:`PIL.PngImagePlugin.iTXt` instance
        :param zip: compression flag

        Nr6   )r¯   r¥   r¦   ó   zTXtó     ó   tEXtr©   )rª   r‘   r°   r’   r“   r�   r«   ÚUnicodeErrorr£   r=   r¬   )rS   r­   r®   r¯   s       r7   Úadd_textzPngInfo.add_textP  s  € ô �eœTÔ"Ø—=‘=ØØØ#Ÿj™jÐ4�—
’
¸#Ø#Ÿj™jÐ4�—
‘
Øð !ó ð ð ;>Øð !ó ð ô ˜%¤Ô'ð:ØŸ™ Y°Ó9�ô ˜#œuÔ%Ø—*‘*˜Y¨Ó1ˆCáØ�H‰H�W˜c G™m¬d¯m©m¸EÓ.BÑBÕCà�H‰H�W˜c E™k¨EÑ1Õ2øô  ò :Ø—}‘} S¨%°S�}Ó9Ò9ð:ús   Á.C) Ã)D	ÄD	NrŒ   ©F)r`   r�   rJ   r�   r¢   Úboolr‰   rŠ   )Ú r¹   F)r­   ústr | bytesr®   rº   r’   rº   r“   rº   r¯   r¸   r‰   rŠ   )r­   rº   r®   zstr | bytes | iTXtr¯   r¸   r‰   rŠ   )r/   r0   r1   rš   rT   r£   r°   r¶   r5   r6   r7   rž   rž     s�   „ ñó
:ô
4ð  ØØð!Uàð!Uð ð!Uð ð	!Uð
 ð!Uð ð!Uð 
ó!UðH HMð!3Øð!3Ø'9ð!3Ø@Dð!3à	ô!3r6   rž   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_RewindStatez dict[str | tuple[int, int], Any]Úinfozlist[ImageFile._Tile]Útilez
int | NoneÚseq_numN©r/   r0   r1   r›   r5   r6   r7   r¼   r¼   x  s   … Ø
*Ó*Ø
ÓØÔr6   r¼   c                  óÀ   ‡ — e Zd Zdˆ fd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zˆ xZS )Ú	PngStreamc                óÔ   •— t         ‰| �  |«       i | _        i | _        d| _        d| _        g | _        d | _        d | _        d | _	        d | _
        t        i g d «      | _        d| _        y )N©r   r   r¹   r   )ÚsuperrT   Úim_infoÚim_textÚim_sizeÚim_modeÚim_tileÚ
im_paletteÚim_custom_mimetypeÚim_n_framesÚ_seq_numr¼   Úrewind_stateÚtext_memory)rS   rQ   Ú	__class__s     €r7   rT   zPngStream.__init__  sl   ø€ Ü‰Ñ˜Ôð :<ˆŒØ.0ˆŒØˆŒØˆŒØ.0ˆŒØ48ˆŒØ.2ˆÔØ'+ˆÔØ$(ˆŒÜ(¨¨R°Ó6ˆÔàˆÕr6   c                óŠ   — | xj                   |z  c_         | j                   t        kD  rd| j                   › d�}t        |«      ‚y )Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)rÐ   ÚMAX_TEXT_MEMORYrB   )rS   ÚchunklenrF   s      r7   Úcheck_text_memoryzPngStream.check_text_memory�  sN   € Ø×Ò˜HÑ$ÕØ×ÑœoÒ-à7Ø×#Ñ#Ð$Ð$4ð6ð ô ˜S“/Ð!ð .r6   c                ó€   — t        | j                  j                  «       | j                  | j                  «      | _        y rP   )r¼   rÆ   ÚcopyrÊ   rÎ   rÏ   rd   s    r7   Úsave_rewindzPngStream.save_rewind™  s-   € Ü(Ø�L‰L×ÑÓØ�L‰LØ�M‰Mó
ˆÕr6   c                óÂ   — | j                   j                  j                  «       | _        | j                   j                  | _        | j                   j                  | _        y rP   )rÏ   r½   r×   rÆ   r¾   rÊ   r¿   rÎ   rd   s    r7   ÚrewindzPngStream.rewind   sD   € Ø×(Ñ(×-Ñ-×2Ñ2Ó4ˆŒØ×(Ñ(×-Ñ-ˆŒØ×)Ñ)×1Ñ1ˆ�r6   c                óÒ  — | j                   €J ‚t        j                  | j                   |«      }|j                  d«      }t        j                  d|d | «       ||dz      }t        j                  d|«       |dk7  rd|› d�}t        |«      ‚	 t        ||dz   d  «      }|| j                  d	<   |S # t        $ r t        j                  rd }n‚ Y Œ0t        j                  $ r d }Y ŒFw xY w)
Nr©   ziCCP profile name %rr   zCompression method %sr   úUnknown compression method z in iCCP chunkr&   Úicc_profile)rQ   r   rƒ   Úfindrr   rs   r_   rG   rB   r]   r=   r{   rÆ   )rS   ra   rb   rC   ÚiÚcomp_methodrF   rÝ   s           r7   Ú
chunk_iCCPzPngStream.chunk_iCCP¥  sñ   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆð �F‰F�5‹MˆÜ�‰Ð+¨Q¨r°¨UÔ3Ø˜˜A™‘hˆÜ�‰Ð,¨kÔ:Ø˜!ÒØ/°¨}¸NÐKˆCÜ˜cÓ"Ð"ð	Ü/°°!°a±%°'°
Ó;ˆKð '2ˆ�‰�]Ñ#Øˆøô ò 	Ü×.Ò.Ø"‘àñ ô �z‰zò 	ØŠKð	ús   ÂB0 Â0C&ÃC&Ã%C&c                óŒ  — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚t        |d«      t        |d«      f| _        	 t        |d   |d   f   \  | _        | _	        |d   rd| j                  d	<   |d
   rd}t        |«      ‚|S # t        $ r Y Œ3w xY w)Né   zTruncated IHDR chunkr   r'   r(   é	   é   r   Ú	interlaceé   zunknown filter category)rQ   r   rƒ   r]   rB   r[   rÈ   Ú_MODESrÉ   Ú
im_rawmodeÚ	ExceptionrÆ   r_   ©rS   ra   rb   rC   rF   s        r7   Ú
chunk_IHDRzPngStream.chunk_IHDRÁ  sÏ   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�BŠ;Ü×.Ò.Ø�Ø(ˆCÜ˜S“/Ð!Ü˜1˜a“y¤# a¨£)Ð+ˆŒð	Ü,2°A°a±D¸!¸A¹$°<Ñ,@Ñ)ˆDŒL˜$œ/ð ˆRŠ5Ø()ˆD�L‰L˜Ñ%ØˆRŠ5Ø+ˆCÜ˜cÓ"Ð"Øˆøô ò 	Ùð	ús   Á1B7 Â7	CÃCc                óL  — d| j                   v r1t        j                  d| j                   d   || j                  «      g}nK| j                  �d| j                   d<   t        j                  dd| j
                  z   || j                  «      g}|| _        || _        d}t        |«      ‚)NÚbboxr¯   TÚdefault_imagerÄ   zimage data found)	rÆ   r   Ú_Tileré   rÍ   rÈ   rÊ   Úim_idatÚEOFError)rS   ra   rb   r¾   rF   s        r7   Ú
chunk_IDATzPngStream.chunk_IDATÖ  s�   € à�T—\‘\Ñ!Ü—O‘O E¨4¯<©<¸Ñ+?ÀÀdÇoÁoÓVÐW‰Dà×ÑÐ+Ø04�—‘˜_Ñ-Ü—O‘O E¨6°D·L±LÑ+@À#ÀtÇÁÓWÐXˆDØˆŒØˆŒØ ˆÜ�s‹mÐr6   c                ó   — d}t        |«      ‚)Nzend of PNG image)rò   )rS   ra   rb   rF   s       r7   Ú
chunk_IENDzPngStream.chunk_IENDã  s   € Ø ˆÜ�s‹mÐr6   c                ó’   — | j                   €J ‚t        j                  | j                   |«      }| j                  dk(  r	d|f| _        |S )Nr    r   )rQ   r   rƒ   rÉ   rË   ©rS   ra   rb   rC   s       r7   Ú
chunk_PLTEzPngStream.chunk_PLTEç  sD   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�<‰<˜3ÒØ# Q˜hˆDŒOØˆr6   c                óæ  — | j                   €J ‚t        j                  | j                   |«      }| j                  dk(  rMt        j                  |«      r'|j                  d«      }|dk\  r || j                  d<   |S || j                  d<   |S | j                  dv rt        |«      | j                  d<   |S | j                  dk(  r/t        |«      t        |d«      t        |d«      f| j                  d<   |S )	Nr    r©   r   Útransparency)r   r   r   r   r&   r'   )	rQ   r   rƒ   rÉ   Ú_simple_paletteÚmatchrÞ   rÆ   Úi16)rS   ra   rb   rC   rß   s        r7   Ú
chunk_tRNSzPngStream.chunk_tRNSï  sä   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�<‰<˜3ÒÜ×$Ñ$ QÔ'ð —F‘F˜5“M�Ø˜’6Ø34�D—L‘L Ñ0ð ˆð 01�—‘˜^Ñ,ð
 ˆð	 �\‰\Ð/Ñ/Ü+.¨q«6ˆD�L‰L˜Ñ(ð ˆð �\‰\˜UÒ"Ü+.¨q«6´3°q¸!³9¼cÀ!ÀQ»iÐ+GˆD�L‰L˜Ñ(Øˆr6   c                ó˜   — | j                   €J ‚t        j                  | j                   |«      }t        |«      dz  | j                  d<   |S )Nç     jø@Úgamma)rQ   r   rƒ   r[   rÆ   r÷   s       r7   Ú
chunk_gAMAzPngStream.chunk_gAMA  sD   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆÜ # A£¨Ñ 1ˆ�‰�WÑØˆr6   c                óì   — | j                   €J ‚t        j                  | j                   |«      }t        j                  dt        |«      dz  › d�|«      }t        d„ |D «       «      | j                  d<   |S )Nú>r'   ÚIc              3  ó&   K  — | ]	  }|d z  –— Œ y­w)r   Nr5   )Ú.0Úelts     r7   ú	<genexpr>z'PngStream.chunk_cHRM.<locals>.<genexpr>  s   è ø€ Ò,PÀ¨S°8­^Ñ,Pùs   ‚Úchromaticity)rQ   r   rƒ   rz   ÚunpackÚlenÚtuplerÆ   )rS   ra   rb   rC   Úraw_valss        r7   Ú
chunk_cHRMzPngStream.chunk_cHRM  si   € ð �w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆÜ—=‘= 1¤S¨£V¨q¡[ M°Ð!3°QÓ7ˆÜ',Ñ,PÀxÔ,PÓ'Pˆ�‰�^Ñ$Øˆr6   c                óÎ   — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚|d   | j
                  d<   |S )Nr   zTruncated sRGB chunkr   Úsrgb)rQ   r   rƒ   r]   rB   rÆ   rë   s        r7   Ú
chunk_sRGBzPngStream.chunk_sRGB  se   € ð �w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�AŠ:Ü×.Ò.Ø�Ø(ˆCÜ˜S“/Ð!Ø  ™tˆ�‰�VÑØˆr6   c                óP  — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚t        |d«      t        |d«      }}|d   }|dk(  r|dz  |dz  f}|| j                  d<   |S |dk(  r||f| j                  d	<   |S )
Nrä   zTruncated pHYs chunkr   r'   r(   r   ç¦
F%uš?ÚdpiÚaspect)rQ   r   rƒ   r]   rB   r[   rÆ   )	rS   ra   rb   rC   rF   ÚpxÚpyÚunitr  s	            r7   Ú
chunk_pHYszPngStream.chunk_pHYs&  s¸   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�AŠ:Ü×.Ò.Ø�Ø(ˆCÜ˜S“/Ð!Ü�Q˜“œC  1›IˆBˆØ�‰tˆØ�1Š9Ø�v‘+˜r F™{Ð*ˆCØ"%ˆD�L‰L˜Ñð ˆð �QŠYØ%'¨ VˆD�L‰L˜Ñ"Øˆr6   c                ó~  — | j                   €J ‚t        j                  | j                   |«      }	 |j                  dd«      \  }}|rc|j                  dd«      }|j                  dd«      }|dk(  r|n|| j                  |<   || j                  |<   | j                  t        |«      «       |S # t        $ r |}d}Y Œvw xY w)Nr©   r   r6   r¥   r¦   Úreplaces   exif)
rQ   r   rƒ   ÚsplitrB   ru   rÆ   rÇ   rÕ   r  )rS   ra   rb   rC   ÚkÚvÚk_strÚv_strs           r7   Ú
chunk_tEXtzPngStream.chunk_tEXt8  s¼   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆð	Ø—7‘7˜5 !Ó$‰DˆAˆqñ
 Ø—H‘H˜Y¨Ó1ˆEØ—H‘H˜Y¨	Ó2ˆEà'(¨G¢|¡!¸ˆD�L‰L˜ÑØ"'ˆD�L‰L˜ÑØ×"Ñ"¤3 u£:Ô.àˆøô ò 	àˆAØŠAð	ús   °B, Â,B<Â;B<c                ó@  — | j                   €J ‚t        j                  | j                   |«      }	 |j                  dd«      \  }}|r|d   }nd}|dk7  rd|› d�}t        |«      ‚	 t        |dd  «      }|r\|j                  dd«      }|j                  dd	«      }	|	x| j                  |<   | j                  |<   | j                  t        |	«      «       |S # t        $ r |}d}Y Œžw xY w# t        $ r t        j                  rd}n‚ Y Œ’t        j                  $ r d}Y Œ¨w xY w)
Nr©   r   r6   r   rÜ   z in zTXt chunkr¥   r¦   r  )rQ   r   rƒ   r  rB   r_   rG   r]   r=   r{   ru   rÆ   rÇ   rÕ   r  )
rS   ra   rb   rC   r  r  rà   rF   r   r!  s
             r7   Ú
chunk_zTXtzPngStream.chunk_zTXtL  s6  € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆð	Ø—7‘7˜5 !Ó$‰DˆAˆqñ Ø˜A™$‰KàˆKØ˜!ÒØ/°¨}¸NÐKˆCÜ˜cÓ"Ð"ð	Ü% a¨¨ eÓ,ˆAñ Ø—H‘H˜Y¨Ó1ˆEØ—H‘H˜Y¨	Ó2ˆEà8=Ð=ˆD�L‰L˜Ñ $§,¡,¨uÑ"5Ø×"Ñ"¤3 u£:Ô.àˆøô7 ò 	ØˆAØŠAð	ûô ò 	Ü×.Ò.Ø‘àñ ô �z‰zò 	ØŠAð	ús)   °C Á&C' ÃC$Ã#C$Ã'DÄDÄDc                óF  — | j                   €J ‚t        j                  | j                   |«      x}}	 |j                  dd«      \  }}t        |«      dk  r|S |d   |d   |dd  }}}	 |j                  dd«      \  }}	}
|dk7  r|dk(  r	 t        |
«      }
n|S |dk(  r|
| j                  d<   	 |j                  dd«      }|j                  d	d«      }|	j                  d	d«      }|
j                  d	d«      }t        |||«      x| j                  |<   | j                  |<   | j                  t        |«      «       |S # t        $ r |cY S w xY w# t        $ r |cY S w xY w# t        $ r t        j                  r|cY S ‚ t        j                  $ r |cY S w xY w# t        $ r |cY S w xY w)
Nr©   r   r&   r   s   XML:com.adobe.xmpÚxmpr¥   r¦   r§   )rQ   r   rƒ   r  rB   r  rG   r]   r=   r{   rÆ   ru   rµ   r‘   rÇ   rÕ   )rS   ra   rb   ÚrrC   r  ÚcfÚcmr’   Útkr  r   Úlang_strÚtk_strr!  s                  r7   Ú
chunk_iTXtzPngStream.chunk_iTXto  sÁ  € à�w‰wÐ"Ð"Ð"Ü×$Ñ$ T§W¡W¨fÓ5Ð5ˆˆAð	Ø—7‘7˜5 !Ó$‰DˆAˆqô ˆq‹6�AŠ:ØˆHØ�a‘D˜!˜A™$  ! " �ˆBˆð	ØŸ'™' %¨Ó+‰KˆD�"�að �Š7Ø�QŠwðÜ-¨aÓ0‘Að �ØÐ$Ò$Ø"#ˆD�L‰L˜Ñð	Ø—H‘H˜Y¨Ó1ˆEØ—{‘{ 7¨HÓ5ˆHØ—Y‘Y˜w¨Ó1ˆFØ—H‘H˜W hÓ/ˆEô 59¸ÀÈ&Ó4QÐQˆ�‰�UÑ˜dŸl™l¨5Ñ1Ø×Ñœs 5›zÔ*àˆøôG ò 	ØŠHð	ûô ò 	ØŠHð	ûô "ò Ü ×6Ò6Ø šàÜ—z‘zò Ø’Hðûô ò 	ØŠHð	úsN   ²D8 Á'E	 ÂE Â+AF Ä8EÅEÅ	EÅEÅFÅ7FÆFÆF ÆF c                ó†   — | j                   €J ‚t        j                  | j                   |«      }d|z   | j                  d<   |S )Nó   Exif  Úexif)rQ   r   rƒ   rÆ   r÷   s       r7   Ú
chunk_eXIfzPngStream.chunk_eXIfš  s@   € Ø�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ.°Ñ2ˆ�‰�VÑØˆr6   c                ó¤  — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚| j
                  �d | _        t        j                  d«       |S t        |«      }|dk(  s|dkD  rt        j                  d«       |S || _        t        |d«      | j                  d<   d| _
        |S )	Nr(   z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possibler   l        r'   Úloopz
image/apng)rQ   r   rƒ   r]   rB   rÍ   ÚwarningsÚwarnr[   rÆ   rÌ   )rS   ra   rb   rC   rF   Ún_framess         r7   Ú
chunk_acTLzPngStream.chunk_acTL¡  sÄ   € Ø�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�AŠ:Ü×.Ò.Ø�Ø6ˆCÜ˜S“/Ð!Ø×ÑÐ'Ø#ˆDÔÜ�M‰MÐPÔQØˆHÜ�q“6ˆØ�qŠ=˜H zÒ1Ü�M‰MÐPÔQØˆHØ#ˆÔÜ" 1 a›yˆ�‰�VÑØ".ˆÔØˆr6   c                ó  — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚t        |«      }| j                  €|dk7  s| j                  �| j                  |dz
  k7  rd}t        |«      ‚|| _        t        |d«      t        |d«      }}t        |d«      t        |d	«      }	}| j                  \  }
}||z   |
kD  s|	|z   |kD  rd
}t        |«      ‚||	||z   |	|z   f| j                  d<   t        |d«      t        |d«      }}|dk(  rd}t        |«      t        |«      z  dz  | j                  d<   |d   | j                  d<   |d   | j                  d<   |S )Né   z"APNG contains truncated fcTL chunkr   r   ú#APNG contains frame sequence errorsr'   r(   rå   r)   zAPNG contains invalid framesrî   é   é   éd   éè  Údurationé   Údisposalé   Úblend)rQ   r   rƒ   r]   rB   r[   rÎ   r_   rÈ   rÆ   rý   Úfloat)rS   ra   rb   rC   rF   ÚseqÚwidthÚheightr  r  Úim_wÚim_hÚ	delay_numÚ	delay_dens                 r7   Ú
chunk_fcTLzPngStream.chunk_fcTL¶  s~  € Ø�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�BŠ;Ü×.Ò.Ø�Ø6ˆCÜ˜S“/Ð!Ü�!‹fˆØ�M‰MÐ! c¨Q¢hØ�M‰MÐ%¨$¯-©-¸3À¹7Ò*Bà7ˆCÜ˜cÓ"Ð"ØˆŒÜ˜A˜q›	¤3 q¨!£9ˆvˆÜ�Q˜“œS  B›ZˆBˆØ—\‘\‰
ˆˆdØ�‰:˜Ò  V¡¨dÒ 2Ø0ˆCÜ˜cÓ"Ð"Ø " B¨¨U©
°B¸±KÐ@ˆ�‰�VÑÜ" 1 b›z¬3¨q°"«:�9ˆ	Ø˜Š>ØˆIÜ#(¨Ó#3´e¸IÓ6FÑ#FÈÑ#Mˆ�‰�ZÑ Ø#$ R¡5ˆ�‰�ZÑ Ø ! "¡ˆ�‰�WÑØˆr6   c                óx  — | j                   €J ‚|dk  r?t        j                  r"t        j                  | j                   |«      }|S d}t	        |«      ‚t        j                  | j                   d«      }t        |«      }| j                  |dz
  k7  rd}t        |«      ‚|| _        | j                  |dz   |dz
  «      S )Nr'   z"APNG contains truncated fDAT chunkr   r:  )	rQ   r   r]   rƒ   rB   r[   rÎ   r_   ró   )rS   ra   rb   rC   rF   rE  s         r7   Ú
chunk_fdATzPngStream.chunk_fdATÔ  s«   € Ø�w‰wÐ"Ð"Ð"Ø�AŠ:Ü×.Ò.Ü×(Ñ(¨¯©°&Ó9�Ø�Ø6ˆCÜ˜S“/Ð!Ü× Ñ  §¡¨!Ó,ˆÜ�!‹fˆØ�=‰=˜C !™GÒ#Ø7ˆCÜ˜cÓ"Ð"ØˆŒØ�‰˜s Q™w¨°©
Ó3Ð3r6   r‡   )rÔ   rŽ   r‰   rŠ   rŒ   )ra   rŽ   rb   rŽ   r‰   r�   )ra   rŽ   rb   rŽ   r‰   r	   )r/   r0   r1   rT   rÕ   rØ   rÚ   rá   rì   ró   rõ   rø   rþ   r  r  r  r  r"  r$  r-  r1  r7  rL  rN  Ú__classcell__©rÑ   s   @r7   rÂ   rÂ   ~  sn   ø„ õó""ó
ó2ó
ó8ó*óóóó*óóó"ó$ó(!óF)óVóó*÷<4r6   rÂ   c                ó,   — | j                  t        «      S rP   )Ú
startswithÚ_MAGIC)Úprefixs    r7   Ú_acceptrU  é  s   € Ø×ÑœVÓ$Ð$r6   c                  ó„   ‡ — e Zd ZdZdZdd„Zedd„«       Zdd„Zdd„Z	ddd„Z
dd„Zdd	„Zdd
„Zdd„Zdd„Zdˆ fd„Zˆ xZS )ÚPngImageFileÚPNGzPortable network graphicsc                óF  — t        | j                  j                  d«      «      sd}t        |«      ‚| j                  | _        d| _        g | _        t        | j                  «      | _        	 | j                  j                  «       \  }}}	 | j                  j                  |||«      }| j                  j%                  ||«       ŒY# t        $ r Y nvt        $ rk t        j                  d|||«       t        j                  | j                  |«      }|dd j!                  «       r| j                  j#                  ||f«       Y Œšw xY w| j                  j&                  | _        | j                  j*                  | _        | j                  j.                  | _        d | _        | j                  j4                  | _        | j                  j8                  | _        | j                  j<                  xs d| _        | j0                  jA                  dd«      | _!        | j                  jD                  r4| j                  jD                  \  }}tG        jH                  ||«      | _%        |d	k(  r|d
z
  | _&        n|| _&        | j                  j<                  �ƒd| _'        | j                  jQ                  «        | jL                  | _)        | j                  jU                  «       | _+        | jB                  r| xj>                  dz  c_        | jY                  d«       | j>                  dkD  | _-        y )Nr(   znot a PNG filer   ú%r %s %s (unknown)r   r&   rï   Fó   fdATr'   ).rU  rQ   rY   r_   Ú_fpÚ_PngImageFile__frameÚprivate_chunksrÂ   Úpngrv   rò   ÚAttributeErrorrr   rs   r   rƒ   Úislowerrl   r   rÉ   Ú_moderÈ   Ú_sizerÆ   r½   Ú_textrÊ   r¾   rÌ   Úcustom_mimetyperÍ   r6  Úgetrï   rË   r   ÚrawÚpaletteÚ_PngImageFile__prepare_idatÚ!_close_exclusive_fp_after_loadingrØ   Ú_PngImageFile__rewind_idatrZ   Ú_PngImageFile__rewindÚ_seekÚis_animated)rS   rF   r`   ra   rb   rC   ÚrawmoderJ   s           r7   Ú_openzPngImageFile._openõ  sh  € Ü�t—w‘w—|‘| A“Ô'Ø"ˆCÜ˜cÓ"Ð"Ø—7‘7ˆŒØˆŒð
 VXˆÔÜ%.¨t¯w©wÓ%7ˆŒàð  $Ÿx™xŸ}™}›ÑˆC��fð9Ø—H‘H—M‘M # s¨FÓ3�ð �H‰H�L‰L˜˜aÔ ð! øô ò ÙÜ!ò 9Ü—‘Ð1°3¸¸VÔDÜ×(Ñ(¨¯©°&Ó9�Ø�q˜�8×#Ñ#Ô%Ø×'Ñ'×.Ñ.°°Q¨xÔ8ùð	9úð —X‘X×%Ñ%ˆŒ
Ø—X‘X×%Ñ%ˆŒ
Ø—H‘H×$Ñ$ˆŒ	Ø37ˆŒ
Ø—H‘H×$Ñ$ˆŒ	Ø#Ÿx™x×:Ñ:ˆÔØŸ™×,Ñ,Ò1°ˆŒØ!ŸY™YŸ]™]¨?¸EÓBˆÔà�8‰8×ÒØ ŸH™H×/Ñ/‰MˆG�TÜ'×+Ñ+¨G°TÓ:ˆDŒLà�'Š>Ø"(¨1¡*ˆDÕà"(ˆDÔà�8‰8×ÑÐ+Ø5:ˆDÔ2Ø�H‰H× Ñ Ô"Ø!%×!4Ñ!4ˆDÔØ ŸH™HŸM™M›OˆDŒMØ×!Ò!à—’ Ñ"•Ø�J‰J�qŒMØŸ=™=¨1Ñ,ˆÕs   ÂC Ã	EÃA0EÅEc                ó  — | j                   €c| j                  r*| j                  }| j                  | j                  dz
  «       | j                  «        | j                  r| j                  «       | j                   €J ‚| j                   S )Nr   )rd  rn  r]  rX   r6  Úload)rS   Úframes     r7   r˜   zPngImageFile.text8  so   € ð �:‰:Ðð ×ÒØŸ™�à—	‘	˜$Ÿ-™-¨!Ñ+Ô,Ø�I‰IŒKØ×ÒØ—	‘	˜%Ô Ø�z‰zÐ%Ð%Ð%Ø�z‰zÐr6   c                óp  — | j                   €d}t        |«      ‚| j                   j                  | j                  d   d   dz
  «       | j                  €J ‚| j                  j                  «        | j                  j                  «        | j                  r| j                   j                  «        d| _         y)zVerify PNG fileNz)verify must be called directly after openr   r&   r(   )rQ   ÚRuntimeErrorrX   r¾   r_  r†   rg   Ú_exclusive_fp)rS   rF   s     r7   r†   zPngImageFile.verifyH  s‰   € ð �7‰7ˆ?Ø=ˆCÜ˜sÓ#Ð#ð 	�‰�‰�T—Y‘Y˜q‘\ !‘_ qÑ(Ô)à�x‰xÐ#Ð#Ð#Ø�‰�‰ÔØ�‰�‰Ôà×ÒØ�G‰G�M‰MŒOØˆ�r6   c                óH  — | j                  |«      sy || j                  k  r| j                  dd«       | j                  }t        | j                  dz   |dz   «      D ]  }	 | j                  |«       Œ y # t        $ r$}| j                  |«       d}t	        |«      |‚d }~ww xY w)Nr   Tr   zno more images in APNG file)Ú_seek_checkr]  rm  Úrangerò   rX   )rS   rs  Ú
last_frameÚfr~   rF   s         r7   rX   zPngImageFile.seekZ  s˜   € Ø×Ñ Ô&ØØ�4—<‘<ÒØ�J‰J�q˜$Ôà—\‘\ˆ
Ü�t—|‘| aÑ'¨°©Ó3ò 	+ˆAð+Ø—
‘
˜1•ñ	+øô ò +Ø—	‘	˜*Ô%Ø3�Ü˜s“m¨Ð*ûð+ús   Á A4Á4	B!Á=BÂB!c                óÔ
  — | j                   €J ‚t        | j                  t        «      r| j                  j                  ‚|  d }|dk(  �r3|rž| j                  j                  | j                  «       | j                   j                  «        | j                  | _	        d | _
        | j                   j                  | _        | j                   j                  | _        | j                  | _        d | _        d | _        | j                  j%                  dd«      | _        | j                  j%                  d«      | _        | j                  j%                  d«      | _        | j                  j%                  d«      }d| _        �n_|| j,                  dz   k7  rd|› �}t/        |«      ‚| j1                  «        | j"                  r0| j2                  j5                  | j"                  | j6                  «       | j2                  j9                  «       | _        | j                  | _        | j                  r1t;        j<                  | j                  | j                  «       d| _	        d}	 | j                  j?                  d
«       	 | j                   j?                  «       \  }}}|dk(  rd}tG        |«      ‚|dk(  r|rd}tE        |«      ‚d	}	 | j                   jI                  |||«       Œ�|r|| _        | j                   €2| j(                  tR        jT                  k(  rtR        jV                  | _        d | _        | j(                  tR        jT                  k(  rX| j                   rK| j                   j9                  «       | _        | jY                  | j"                  | j6                  «      | _        y y | j(                  tR        jV                  k(  retZ        j\                  j_                  | j`                  | jb                  «      | _        | jY                  | j"                  | j6                  «      | _        y y # t@        jB                  tD        f$ r Y n–w xY w# tJ        $ r Y n‡tF        $ r9 |dk(  r|d
z  }|r	|| _	        Y njt;        j<                  | j                  |«       Y �Œ±tL        $ r< tN        jQ                  d|||«       t;        j<                  | j                  |«       Y �Œôw xY w|| _        | j                   j                  | _        | j                  j%                  d«      | _        | j                  j%                  d«      | _        | j                  j%                  d«      }| j                  r�Œ‚d}tG        |«      ‚)Nr   rï   FrA  rC  rî   r   zcannot seek to frame Tr'   r�   zNo more images in APNG fileó   fcTLzAPNG missing frame datar[  rZ  zimage not found in APNG frame)2r_  rª   r\  r   ÚexrX   rl  rÚ   rk  ri  Ú_imrÆ   r½   rÊ   r¾   rQ   Ú_prev_imÚdisposerf  rï   Ú
dispose_opÚblend_opr]  rB   rr  ÚimÚpasteÚdispose_extentr×   r   rƒ   rY   rz   r{   r_   rò   rv   ÚUnicodeDecodeErrorr`  rr   rs   r.   r4   r3   Ú_cropr   ÚcoreÚfillÚmodeÚsize)	rS   rs  rÚ   r†  rF   Úframe_startr`   ra   rb   s	            r7   rm  zPngImageFile._seeki  s  € Ø�x‰xÐ#Ð#Ð#Ü�d—h‘h¤Ô.Ø—(‘(—+‘+ÐáØˆØ�A‹:ÙØ—‘—‘˜dŸm™mÔ,Ø—‘—‘Ô!Ø&*×&8Ñ&8�Ô#Ø�”Ø ŸH™H×,Ñ,�”	Ø ŸH™H×,Ñ,�”	ØŸ(™(�”Ø ˆDŒMØˆDŒLØ!%§¡§¡¨ÀÓ!FˆDÔØ"Ÿi™iŸm™m¨JÓ7ˆDŒOØ ŸI™IŸM™M¨'Ó2ˆDŒMØ!ŸY™YŸ]™]¨6Ó2ˆNØˆDŽLà˜Ÿ™ qÑ(Ò(Ø-¨e¨WÐ5�Ü  “oÐ%ð �I‰IŒKà�|Š|Ø—‘—‘˜dŸl™l¨D×,?Ñ,?Ô@Ø ŸG™GŸL™L›NˆDŒMà—h‘hˆDŒGð ×"Ò"Ü×$Ñ$ T§W¡W¨d×.AÑ.AÔBØ&'�Ô#ØˆKØØ—‘—‘˜Q”ðØ'+§x¡x§}¡}£Ñ$�C˜˜fð ˜'’>Ø7�CÜ" 3›-Ð'Ø˜'’>Ù"à7˜Ü)¨#Ó.Ð.Ø"&�Kð:Ø—H‘H—M‘M # s¨FÔ3ð' ñT ØESˆDÔð �=‰=Ð  T§_¡_¼×8LÑ8LÒ%LÜ&×4Ñ4ˆDŒOàˆŒØ�?‰?œh×2Ñ2Ò2Ø�}Š}Ø#Ÿ}™}×1Ñ1Ó3�”Ø#Ÿz™z¨$¯,©,¸×8KÑ8KÓL�•ð ð �_‰_¤× 6Ñ 6Ò6Ü Ÿ:™:Ÿ?™?¨4¯9©9°d·i±iÓ@ˆDŒLØŸ:™: d§l¡l°D×4GÑ4GÓHˆD�Lð 7øôc Ÿ™¤kÐ2ò Ùðûô *ò ÙÜò :Ø˜g’~Ø !™˜Ù&Ø28˜DÔ/Ù!Ü×(Ñ(¨¯©°&×9Ü%ò :Ü—L‘LÐ!5°s¸CÀÔHÜ×(Ñ(¨¯©°&×9ð:úð !ˆDŒLØŸ™×(Ñ(ˆDŒIØ"Ÿi™iŸm™m¨JÓ7ˆDŒOØ ŸI™IŸM™M¨'Ó2ˆDŒMØ!ŸY™YŸ]™]¨6Ó2ˆNà—9”9Ø5�Ü˜s“mÐ#s7   É6P! Ê=Q  Ð!P=Ð<P=Ñ 	SÑSÑ( SÒA SÓSc                ó   — | j                   S rP   )r]  rd   s    r7   rZ   zPngImageFile.tellÍ  s   € Ø�|‰|Ðr6   c                óÂ   — | j                   j                  d«      r| j                  dz   | _        | j                  | _        t
        j
                  j                  | «       y)z"internal: prepare to read PNG fileræ   )r   N)r½   rf  Údecoderconfigri  Ú_PngImageFile__idatr   Úload_preparerd   s    r7   r’  zPngImageFile.load_prepareÐ  sH   € ð �9‰9�=‰=˜Ô%Ø!%×!3Ñ!3°dÑ!:ˆDÔà×)Ñ)ˆŒÜ×Ñ×(Ñ(¨Õ.r6   c                óH  — | j                   €J ‚| j                  dk(  r | j                  j                  d«       | j                   j                  «       \  }}}|dvr| j                   j	                  |||«       y|dk(  r)	 | j                   j                  |||«       |dz
  | _        n|| _        | j                  dk(  rŒ |dk  r| j                  }nt        || j                  «      }| j                  |z
  | _        | j                  j                  |«      S # t        $ r Y Œ„w xY w)zinternal: read more image datar   r'   )ó   IDATs   DDATr[  r6   r[  )r_  r‘  rQ   rY   rn   rv   rò   Úmin)rS   Ú
read_bytesr`   ra   rb   s        r7   Ú	load_readzPngImageFile.load_readÙ  s  € ð �x‰xÐ#Ð#Ð#Ø�k‰k˜QÒð �G‰G�L‰L˜ŒOà#Ÿx™xŸ}™}›ÑˆC��fàÐ5Ñ5Ø—‘—‘˜c 3¨Ô/Øà�gŠ~ðØ—H‘H—M‘M # s¨FÔ3ð % q™j�•à$�”ð% �k‰k˜QÓð* ˜Š?ØŸ™‰Jä˜Z¨¯©Ó5ˆJà—k‘k JÑ.ˆŒà�w‰w�|‰|˜JÓ'Ð'øô  ò Ùðús   Á?D Ä	D!Ä D!c                ó  — | j                   €J ‚| j                  dk7  r%| j                  j                  | j                  «       	 | j                  j                  d«       	 | j                   j                  «       \  }}}|dk(  rnU|dk(  r1| j                  r%d| _        | j                   j                  |||«       n	 | j                   j                  |||«       Œ•| j                   j.                  | _        | j                  s"| j                   j3                  «        d| _         y| j4                  �rO| j6                  t8        j:                  k(  �r0| j=                  | j>                  | j@                  «      }| j>                  jB                  dk(  r.d| jD                  v r |jG                  d| jD                  d   «      }nŠ| j>                  jB                  dk(  r`d| jD                  v rR| jD                  d   }tI        |tJ        «      r|jM                  |«       n!tI        |tN        «      r|jQ                  |«       |jS                  d«      }| j4                  jU                  || j@                  |«       | j4                  | _        yyy# t        j
                  t        f$ r Y �ŒÂw xY w# t        $ r Y �ŒÒt        $ rZ |dk(  r|dz  }	 t        j                  | j                  |«       n*# t        $ r}t        j                   rY d}~Y �Œ&|‚d}~ww xY wY �Œ4t"        $ rm t$        j'                  d|||«       t        j                  | j                  |«      }|d	d
 j)                  «       r| j*                  j-                  ||df«       Y �Œ¨w xY w)z%internal: finished reading image dataNr   Tr'   r�   r}  r[  rZ  r   r&   r   rú   r%   r    )+r_  r‘  rQ   rY   rz   r{   r_   rn  ri  rn   rv   r‡  rò   r   rƒ   r‚   r]   r`  rr   rs   ra  r^  rl   rÇ   rd  rg   r€  rƒ  r9   r;   rˆ  r„  r†  r‹  r½   Úconvert_transparentrª   r�   ÚputpalettealphasrŽ   ÚputpalettealphaÚconvertr…  )	rS   r`   ra   rb   r~   rC   ÚupdatedÚmaskÚts	            r7   Úload_endzPngImageFile.load_endû  sÒ  € à�x‰xÐ#Ð#Ð#Ø�;‰;˜!ÒØ�G‰G�L‰L˜Ÿ™Ô%ØØ�G‰G�L‰L˜ŒOðØ#'§8¡8§=¡=£?Ñ ��S˜&ð �gŠ~ØØ˜’ D×$4Ò$4à&'�Ô#Ø—‘—‘˜c 3¨Ô/Øð?Ø—‘—‘˜c 3¨Ô/ð# ðF —X‘X×%Ñ%ˆŒ
Ø×ÒØ�H‰H�N‰NÔØˆD�Hà�}‹} §¡´%·-±-Ó!?ØŸ*™* T§W¡W¨d×.AÑ.AÓB�Ø—7‘7—<‘< 5Ò(¨^¸t¿y¹yÑ-HØ"×6Ñ6Ø §	¡	¨.Ñ 9ó‘Dð —w‘w—|‘| sÒ*¨~ÀÇÁÑ/JØ ŸI™I nÑ5˜Ü% a¬Ô/Ø#×4Ñ4°QÕ7Ü'¨¬3Ô/Ø#×3Ñ3°AÔ6Ø"Ÿ?™?¨6Ó2�DØ—‘×#Ñ# G¨T×-@Ñ-@À$ÔGØŸ-™-�•ð "@ˆ}øôG —L‘L¤+Ð.ò Úðûô &ò ÚÜò 	 Ø˜'’>Ø˜a‘K�Fð Ü×(Ñ(¨¯©°&Õ9øÜò  Ü ×6Ò6Þà˜ûð	 úò :ô "ò ?Ü—‘Ð1°3¸¸VÔDÜ×(Ñ(¨¯©°&Ó9�Ø�q˜�8×#Ñ#Ô%Ø×'Ñ'×.Ñ.°°Q¸¨~Ô>úð	?úsa   Á I? Â;J É?JÊJÊ	NÊ+NÊ> KËNË	LË(LË8NË?LÌLÌNÌA1NÎ Nc                ó´   — d| j                   vr| j                  «        d| j                   vrd| j                   vry | j                  «       j                  «       S )Nr0  zRaw profile type exif)r½   rr  ÚgetexifÚ_get_merged_dictrd   s    r7   Ú_getexifzPngImageFile._getexif9  sG   € Ø˜Ÿ™Ñ"Ø�I‰IŒKØ˜Ÿ™Ñ"Ð'>ÀdÇiÁiÑ'OØØ�|‰|‹~×.Ñ.Ó0Ð0r6   c                ó\   •— d| j                   vr| j                  «        t        ‰| �  «       S )Nr0  )r½   rr  rÅ   r¢  )rS   rÑ   s    €r7   r¢  zPngImageFile.getexif@  s%   ø€ Ø˜Ÿ™Ñ"Ø�I‰IŒKä‰w‰Ó Ð r6   rŒ   )r‰   zdict[str, str | iTXt])rs  rŽ   r‰   rŠ   r·   )rs  rŽ   rÚ   r¸   r‰   rŠ   )r‰   rŽ   )r–  rŽ   r‰   r�   )r‰   zdict[int, Any] | None)r‰   z
Image.Exif)r/   r0   r1   ÚformatÚformat_descriptionrp  Úpropertyr˜   r†   rX   rm  rZ   r’  r—  r   r¤  r¢  rO  rP  s   @r7   rW  rW  ñ  s`   ø„ Ø€FØ4ÐóA-ðF òó ðóó$+ôbIóHó/ó (óD<(ó|1÷!ñ !r6   rW  )r   ó   r©   )úL;1r©  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   r$   r  r   r   r!   r"   r#   r    r   r%   c                óò   — dj                  |«      }| j                  t        t        |«      «      |z   «       | j                  |«       t	        |t	        |«      «      }| j                  t        |«      «       y)z'Write a PNG chunk (including CRC field)r6   N)ÚjoinÚwriteÚo32r  rL   )rQ   r`   rJ   Ú	byte_datar   s        r7   Úputchunkr¶  ^  sW   € ð —‘˜“€Ià‡H�HŒS”�Y“Ó  3Ñ&Ô'Ø‡H�HˆYÔÜ
�œF 3›KÓ
(€CØ‡H�HŒS�‹XÕr6   c                  ó   — e Zd Zdd„Zdd„Zy)Ú_idatc                ó    — || _         || _        y rP   )rQ   Úchunk)rS   rQ   rº  s      r7   rT   z_idat.__init__l  s   € ØˆŒØˆ�
r6   c                ó>   — | j                  | j                  d|«       y )Nr”  )rº  rQ   ©rS   rJ   s     r7   r³  z_idat.writep  s   € Ø�
‰
�4—7‘7˜G TÕ*r6   N)rQ   rˆ   rº  úCallable[..., None]r‰   rŠ   ©rJ   r�   r‰   rŠ   ©r/   r0   r1   rT   r³  r5   r6   r7   r¸  r¸  i  s   „ óô+r6   r¸  c                  ó   — e Zd Zdd„Zdd„Zy)Ú_fdatc                ó.   — || _         || _        || _        y rP   )rQ   rº  r¿   )rS   rQ   rº  r¿   s       r7   rT   z_fdat.__init__w  s   € ØˆŒØˆŒ
Øˆ�r6   c                ó�   — | j                  | j                  dt        | j                  «      |«       | xj                  dz  c_        y )Nr[  r   )rº  rQ   r´  r¿   r¼  s     r7   r³  z_fdat.write|  s/   € Ø�
‰
�4—7‘7˜G¤S¨¯©Ó%6¸Ô=Ø�Š˜ÑŽr6   N)rQ   rˆ   rº  r½  r¿   rŽ   r‰   rŠ   r¾  r¿  r5   r6   r7   rÁ  rÁ  t  s   „ óô
r6   rÁ  c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_FrameúImage.Imager„  z tuple[int, int, int, int] | Nonerî   zdict[str, Any]ÚencoderinfoNrÀ   r5   r6   r7   rÅ  rÅ  �  s   … ØƒOØ
*Ó*ØÔr6   rÅ  c                óF  — | j                   j                  d«      }| j                   j                  d| j                  j                  dd«      «      }| j                   j                  d| j                  j                  dt        j                  «      «      }	| j                   j                  d| j                  j                  dt
        j                  «      «      }
|rt        j                  |«      }nt        j                  | g|«      }g }d}|D �]Ò  }t        j                  |«      D �]¶  }|j                  |k(  r|j                  «       }n|j                  |«      }| j                   j                  «       }t        |t        t         f«      r	||   |d<   n"|€ d|j                  v r|j                  d   |d<   t        |	t        t         f«      r|	|   |d<   t        |
t        t         f«      r|
|   |d<   |dz  }|�rÅ|d   }|j                   j                  d«      }|j                   j                  d«      }|t        j"                  k(  rt%        |«      dk  rt        j&                  }|t        j&                  k(  r‡|j(                  j                  «       }t*        j,                  j/                  d	| j0                  d
«      }|j2                  }|r|j5                  |«      }nd| j0                  z   }|j7                  ||«       n/|t        j"                  k(  r|d   j(                  }n|j(                  }t9        j:                  |j                  d	«      |j                  d	«      «      }|j=                  d¬«      }|sJ||j                  d«      k(  r6||j                  d«      k(  r"d|v r|j                   dxx   |d   z  cc<   �Œ™d }|j?                  tA        |||«      «       �Œ¹ �ŒÕ t%        |«      dk(  r|s|d   j(                  S  ||dtC        t%        |«      «      tC        |«      «       |rz| j                  |k7  r| j                  |«      } tE        jF                  | tI        tJ        tL           tO        ||«      «      tE        jP                  dd| j0                  z   d|«      g«       d}tS        |«      D �]ë  \  }}|j(                  }|j2                  sd|j0                  z   }n|j2                  }|j5                  |«      }|j0                  }|j                   }tU        tW        |j                  dd«      «      «      }|j                  d|	«      }|j                  d|
«      } ||dtC        |«      tC        |d   «      tC        |d   «      tC        |d   «      tC        |d   «      tY        |«      tY        d«      t[        |«      t[        |«      «       |dz  }|dk(  r^|s\tE        jF                  |tI        tJ        tL           tO        ||«      «      tE        jP                  dd|j0                  z   d|«      g«       �Œƒt]        |||«      }tE        jF                  |tI        tJ        tL           |«      tE        jP                  dd|j0                  z   d|«      g«       |j^                  }�Œî y )Nr?  r3  r   rA  rC  r   éÿÿÿÿr&   r%   )r   r   r   r   rÄ   éþÿÿÿF)Ú
alpha_onlys   acTLr¯   r}  r>  )0rÇ  rf  r½   r.   r2   r9   r:   Ú	itertoolsÚchainr   ÚIteratorr‹  r×   rœ  rª   Úlistr  r4   r  r3   r„  r   r‰  rŠ  rŒ  rî   Úcropr…  r   Úsubtract_moduloÚgetbboxrl   rÅ  r´  r   Ú_saver
   r   r�   r¸  rð   Ú	enumeraterŽ   ÚroundÚo16r   rÁ  r¿   ) r„  rQ   rº  r‹  ro  rï   Úappend_imagesr?  r3  rA  rC  rÍ  Ú	im_framesÚframe_countÚim_seqÚim_framerÇ  ÚpreviousÚprev_disposalÚ
prev_blendÚbase_imr�  rî   Údeltar¿   rs  Ú
frame_datarŒ  Úframe_durationÚframe_disposalÚframe_blendÚfdat_chunkss                                    r7   Ú_write_multiple_framesræ  ‡  s—  € ð �~‰~×!Ñ! *Ó-€HØ�>‰>×Ñ˜f b§g¡g§k¡k°&¸!Ó&<Ó=€DØ�~‰~×!Ñ! *¨b¯g©g¯k©k¸*Äh×FVÑFVÓ.WÓX€HØ�N‰N×Ñ˜w¨¯©¯©°G¼U¿_¹_Ó(MÓN€EáÜ—‘ Ó.‰ä—‘   mÓ4ˆà €IØ€KØó 3BˆÜ%×.Ñ.¨vÓ6ó 2	BˆHØ�}‰} Ò$Ø#Ÿ=™=›?‘à#×+Ñ+¨DÓ1�ØŸ.™.×-Ñ-Ó/ˆKÜ˜(¤T¬5 MÔ2Ø*2°;Ñ*?�˜JÒ'ØÐ! j°H·M±MÑ&AØ*2¯-©-¸
Ñ*C�˜JÑ'Ü˜(¤T¬5 MÔ2Ø*2°;Ñ*?�˜JÑ'Ü˜%¤$¬ Ô/Ø',¨[Ñ'9�˜GÑ$Ø˜1ÑˆKâØ$ R™=�Ø (× 4Ñ 4× 8Ñ 8¸Ó D�Ø%×1Ñ1×5Ñ5°gÓ>�
Ø ¤H×$8Ñ$8Ò8¼SÀ»^ÈaÒ=OÜ$,×$:Ñ$:�Mà ¤H×$:Ñ$:Ò:Ø&Ÿk™k×.Ñ.Ó0�GÜ#Ÿj™jŸo™o¨f°b·g±g¸|ÓL�GØ#Ÿ=™=�DÙØ")§,¡,¨tÓ"4™à%¨¯©Ñ/˜Ø—M‘M '¨4Õ0Ø"¤h×&:Ñ&:Ò:Ø'¨™m×.Ñ.‘Gà&Ÿk™k�GÜ"×2Ñ2Ø×$Ñ$ VÓ,¨g¯o©o¸fÓ.Eó�ð —}‘}°�}Ó6�áØ%¨¯©¸Ó)DÒDØ" k§o¡o°gÓ&>Ò>Ø" kÑ1à×(Ñ(¨Ó4¸ÀJÑ8OÑOÓ4Ùà�Ø×ÑœV H¨d°KÓ@ÖAòe2	Bð3Bôj ˆ9ƒ~˜Ò¡=Ø˜‰|�‰Ðñ 
Ø
ØÜŒC�	‹NÓÜˆD‹	ô	ñ Ø�7‰7�dŠ?Ø—‘˜DÓ!ˆBÜ�‰ØÜ””E‘œE " eÓ,Ó-Ü�_‰_˜U F¨R¯W©WÑ$4°a¸ÓAÐBô	
ð €GÜ& yÓ1ó **ÑˆˆzØ—=‘=ˆØ�ŠØ˜HŸM™MÑ)‰Dà—?‘?ˆDØ—}‘} TÓ*ˆHØ�}‰}ˆØ ×,Ñ,ˆÜœU ;§?¡?°:¸qÓ#AÓBÓCˆØ$Ÿ™¨°XÓ>ˆØ!—o‘o g¨uÓ5ˆáØØÜ�‹LÜ��Q‘‹LÜ��Q‘‹LÜ��Q‘‹LÜ��Q‘‹LÜ�ÓÜ�‹IÜˆ~ÓÜˆ{‹Oô	
ð 	�1‰ˆà�AŠ:™mä�O‰OØÜ”Rœ‘Y¤ b¨%Ó 0Ó1Ü—‘ ¨°·±Ñ(>ÀÀ7ÓKÐLöô    E¨7Ó3ˆKÜ�O‰OØÜ”Rœ‘Y Ó,Ü—‘ ¨°·±Ñ(>ÀÀ7ÓKÐLôð
 "×)Ñ)ŠGðU**ðV r6   c                ó"   — t        | ||d¬«       y )NT)Úsave_all)rÓ  )r„  rQ   Úfilenames      r7   Ú	_save_allrê    s   € Ü	ˆ"ˆb�( TÖ*r6   c                ó<  ‡(— |�r| j                   j                  d| j                  j                  d«      «      }t        «       }t        «       Š(| j                   j                  dg «      }t	        j
                  | g|«      D ]R  }t        j                  |«      D ]8  }	|j                  |	j                  «       ‰(j                  |	j                  «       Œ: ŒT dD ]  }
|
|v sŒ n |j                  «       }
t        ˆ(fd„t        d«      D «       «      }n| j                  }| j                  }
|
}|
dk(  r–d| j                   v rt        d| j                   d   z  d	«      }nL| j                  r>t!        t        t#        | j                  j%                  «       d   «      d
z  d	«      d«      }nd	}|dk  r|dk  rd}n
|dk  rd}nd}|d|› �z  }| j                   j                  dd«      | j                   j                  dd«      | j                   j                  dd«      | j                   j                  dd«      f| _        	 t(        |   \  }}}|dk(  rt/        ddd¬«       |j1                  t2        «        ||dt5        |d   «      t5        |d   «      ||ddd«	       g d¢}| j                   j                  d| j                  j                  d«      «      }|r8d }|d!z   t7        j8                  |«      z   } ||d"|«       |j;                  d#«       | j                   j                  d$«      }|r‚g d%¢}|j<                  D ]o  }|d d \  }}||v r|j;                  |«        ||||«       Œ+||v r ||||«       Œ:|dd j?                  «       sŒNt#        |«      d
k(  xr |d   }|rŒf ||||«       Œq | j                  dk(  rOd
z  }| j@                  jC                  d&«      d | }t#        |«      |k  r|dz  }t#        |«      |k  rŒ ||d'|«       | j                   j                  d(| j                  j                  d(d «      «      }|s|dk(  rð| j                  dk(  rM} tE        |tF        «      r ||d)|d |  «       �nt!        dt        d*|«      «      }d+|z  dz   }! ||d)|!d |  «       në| j                  d,v r*t!        dt        d-|«      «      } ||d)tI        |«      «       n³| j                  d&k(  r2|\  }"}#}$ ||d)tI        |"«      tI        |#«      z   tI        |$«      z   «       nrd(| j                   v rdd.}t-        |«      ‚| j                  dk(  rH| j@                  jK                  «       d/k(  r+| j@                  jC                  d/d0«      }!}  ||d)|!d |  «       | j                   j                  d1«      }%|%rB ||d2t5        tM        |%d   d3z  d4z   «      «      t5        tM        |%d   d3z  d4z   «      «      d5«       |r=d6d7g}|j<                  D ]*  }|d d \  }}||v sŒ|j;                  |«        ||||«       Œ, | j                   j                  d8«      }&|&rKtE        |&tN        jP                  «      r|&jS                  d9«      }&|&jU                  d:«      r|&d;d  }& ||d<|&«       | }'|rtW        | |||
|«      }'|'rZtY        jZ                  |'t]        t^        tF           ta        ||«      «      tY        jb                  d=d>|'j                  z   d|«      g«       |rO|j<                  D ]@  }|d d \  }}|dd j?                  «       sŒt#        |«      d
k(  xr |d   }|sŒ7 ||||«       ŒB  ||d?d«       te        |d@«      r|jg                  «        y y # t*        $ r}d|
› d�}t-        |«      |‚d }~ww xY w)ANrï   r×  )r%   r   r    c              3  óH   •‡K  — | ]  Št        ˆfd „‰D «       «      –— Œ y­w)c              3  ó(   •K  — | ]	  }|‰   –— Œ y ­wrP   r5   )r  Ú
frame_sizerß   s     €r7   r	  z"_save.<locals>.<genexpr>.<genexpr>2  s   øè ø€ Ò?¨:˜ A�Ñ?ùs   ƒN)Úmax)r  rß   Úsizess    @€r7   r	  z_save.<locals>.<genexpr>2  s   ùè ø€ ÒRÀA”SÓ?¸Ô?×?ÑRùs   „"r&   r    Úbitsr   é   r*   r)   r'   ú;ÚoptimizeFÚcompress_levelrÉ  Úcompress_typeÚ
dictionaryr6   zcannot write mode z as PNGr  zSaving I mode images as PNGrã   )Ú
stacklevels   IHDRr   r©   )s   cHRMs   cICPs   gAMAs   sBITó   sRGBs   tIMErÝ   s   ICC Profiler³   s   iCCPrù  Úpnginfo)s   sPLTr¨   r´   r²   r   s   PLTErú   s   tRNSéÿ   ó   ÿ)r   r   r  r   iÿÿ  z%cannot use transparency for this moder%   ÚAr  s   pHYsr  g      à?r©  s   bKGDs   hISTr0  r(   r/  r+   s   eXIfr¯   rÄ   r�   Úflush)4rÇ  rf  r½   ÚsetrÌ  rÍ  r   rÎ  r£   r‹  rŒ  rW   r  ry  r•  rh  rï  r  ÚgetdataÚencoderconfigÚ	_OUTMODESÚKeyErrorr‚   r   r³  rS  r´  r=   r¬   Úremover    ra  r„  Ú
getpaletterª   r�   rÖ  ÚgetpalettemoderŽ   r   ÚExifÚtobytesrR  ræ  r   rÓ  r
   r   r¸  rð   Úhasattrrþ  ))r„  rQ   ré  rº  rè  rï   Úmodesr×  rÚ  rÛ  r‹  rŒ  ÚoutmodeÚcolorsrñ  ro  Ú	bit_depthÚ
color_typer~   rF   r    ÚiccÚnamerJ   r½   Úchunks_multiple_allowedÚ
info_chunkr`   r¢   Úpalette_byte_numberÚpalette_bytesrú   Úalpha_bytesÚalphaÚredÚgreenÚbluer  r0  Ú	single_imrð  s)                                           @r7   rÓ  rÓ    sd  ø€ ò ØŸ™×*Ñ*Ø˜RŸW™WŸ[™[¨Ó9ó
ˆô “ˆÜ“ˆØŸ™×*Ñ*¨?¸BÓ?ˆÜ—o‘o r d¨MÓ:ò 	)ˆFÜ)×2Ñ2°6Ó:ò )�Ø—	‘	˜(Ÿ-™-Ô(Ø—	‘	˜(Ÿ-™-Õ(ñ)ð	)ð )ò 	ˆDØ�uŠ}Ùð	ð —9‘9“;ˆDÜÓRÌÈqËÔRÓR‰à�w‰wˆØ�w‰wˆà€GØˆs‚{ð �R—^‘^Ñ#ä˜˜bŸn™n¨VÑ4Ñ4°cÓ:‰Fð �zŠzÜœS¤ R§Z¡Z×%7Ñ%7Ó%9¸!Ñ%<Ó!=ÀÑ!BÀCÓHÈ!ÓL‘à�à�RŠ<Ø˜Š{Ø‘Ø˜1’Ø‘à�Ø˜˜4˜&�zÑ!ˆGð 	�‰×Ñ˜: uÓ-Ø
�‰×ÑÐ+¨RÓ0Ø
�‰×Ñ˜?¨BÓ/Ø
�‰×Ñ˜<¨Ó-ð	€BÔð"Ü)2°7Ñ);Ñ&ˆ�˜Jð �#‚~ÜÐ/°ÀÕBð
 ‡H�HŒVÔá	Ø
ØÜˆD�‰G‹ÜˆD�‰G‹ØØØØØô
ò D€Fà
�.‰.×
Ñ
˜]¨B¯G©G¯K©K¸Ó,FÓ
G€CÙ
ð ˆØ�g‰~¤§¡¨cÓ 2Ñ2ˆÙˆb�'˜4Ô ð 	�‰�gÔà�>‰>×Ñ˜iÓ(€DÙÚ"FÐØŸ+™+ò 	)ˆJØ" 2 A˜‰IˆC�Ø�f‰}Ø—‘˜cÔ"Ù�b˜#˜tÕ$ØÐ/Ñ/Ù�b˜#˜tÕ$Ø�Q�q�×!Ñ!Õ#ä  ›_°Ñ1ÒC°jÀ±m�
Ú!Ù˜"˜c 4Õ(ð	)ð 
‡w�w�#‚~Ø$ q™jÐØŸ™×(Ñ(¨Ó/Ð0DÐ1DÐEˆÜ�-Ó Ð#6Ò6Ø˜UÑ"ˆMô �-Ó Ð#6Ó6áˆb�'˜=Ô)à—>‘>×%Ñ% n°b·g±g·k±kÀ.ÐRVÓ6WÓX€Lá�| qÒ(Ø�7‰7�cŠ>à ˆKÜ˜,¬Ô.Ù�b˜' <°°Ð#=Ö>ä" 1¤c¨#¨|Ó&<Ó=�Ø ,Ñ.°Ñ6�Ù�b˜' 5¨¨+Ð#6Õ7Ø�W‰WÐ/Ñ/Ü˜q¤# e¨\Ó":Ó;ˆLÙ�"�gœs <Ó0Õ1Ø�W‰W˜ÒØ+ÑˆC�˜Ù�"�gœs 3›x¬#¨e«*Ñ4´s¸4³yÑ@ÕAà §¡Ñ/ð >�Ü˜c“lÐ"à�7‰7�cŠ>˜bŸe™e×2Ñ2Ó4¸Ò>Ø—E‘E×$Ñ$ V¨SÓ1ˆEØ ˆKÙ�"�g˜u \ kÐ2Ô3à
�.‰.×
Ñ
˜UÓ
#€CÙ
ÙØØÜ”�C˜‘F˜V‘O cÑ)Ó*Ó+Ü”�C˜‘F˜V‘O cÑ)Ó*Ó+Øô	
ñ Ø˜7Ð#ˆØŸ+™+ò 	%ˆJØ" 2 A˜‰IˆC�Ø�fŠ}Ø—‘˜cÔ"Ù�b˜#˜tÕ$ð		%ð �>‰>×Ñ˜fÓ%€DÙÜ�dœEŸJ™JÔ'Ø—<‘< “?ˆDØ�?‰?˜?Ô+Ø˜˜�8ˆDÙˆb�'˜4Ô à$&€IÙÜ*Ø��E˜4 ¨-¸ó
ˆ	ñ Ü�‰ØÜ””E‘œE " eÓ,Ó-Ü�_‰_˜U F¨Y¯^©^Ñ$;¸QÀÓHÐIô	
ñ ØŸ+™+ò 	)ˆJØ" 2 A˜‰IˆC�Ø�1�Qˆx×ÑÕ!ä  ›_°Ñ1ÒC°jÀ±m�
ÚÙ˜"˜c 4Õ(ð	)ñ 
ˆ"ˆg�sÔäˆr�7ÔØ
�‰�
ð øô_ ò "Ø" 4 &¨Ð0ˆÜ�c‹l Ð!ûð"ús   È:]; Ý;	^Þ^Þ^c                óp   ‡— ddl m} g Šdˆfd„} |«       }	 || _        t        | |d|«       | `‰S # | `w xY w)z4Return a list of PNG chunks representing this image.r   )ÚBytesIOc                óŒ   •— dj                  |«      }t        t        |t        |«      «      «      }‰j                  |||f«       y )Nr6   )r²  r´  rL   rl   )rQ   r`   rJ   rµ  r   r    s        €r7   rl   zgetchunks.<locals>.appendö  s8   ø€ Ø—H‘H˜T“Nˆ	Ü”&˜¤F¨3£KÓ0Ó1ˆØ�‰�s˜I sÐ+Õ,r6   r¹   ©rQ   rˆ   r`   r�   rJ   r�   r‰   rŠ   )Úior  rÇ  rÓ  )r„  Úparamsr  rl   rQ   r    s        @r7   Ú	getchunksr!  ð  sF   ø€ åà€Fõ-ñ
 
‹€BðØˆŒÜˆb�"�b˜&Ô!àˆNà€Møð ‰Nús   ˜1 ±5z.pngz.apngz	image/png)rC   r�   r‰   r�   )r   )rJ   r�   rK   rŽ   r‰   rŽ   )rT  r�   r‰   r¸   r  )r„  rÆ  rQ   rˆ   rº  r½  r‹  r•   ro  r•   rï   úImage.Image | Noner×  zlist[Image.Image]r‰   r"  )r„  rÆ  rQ   rˆ   ré  rº   r‰   rŠ   )r„  rÆ  rQ   rˆ   ré  rº   rº  r½  rè  r¸   r‰   rŠ   )r„  rÆ  r   r   r‰   z list[tuple[bytes, bytes, bytes]])OÚ
__future__r   rÌ  ÚloggingÚrerz   r4  r=   Úcollections.abcr   Úenumr   Útypingr   r   r   r	   r
   r¹   r   r   r   r   r   Ú_binaryr   rý   r   r[   r   r   rÖ  r   r´  Ú
_deprecater   Ú_utilr   ÚTYPE_CHECKINGr   Ú	getLoggerr/   rr   Úcompilerü   r\   rS  rè   rû   Ú	SAFEBLOCKr@   rÓ   r.   r9   rG   rL   rN   r•   r‘   rž   r¼   rÂ   rU  rW  r  r¶  r¸  rÁ  rÅ  ræ  rê  rÓ  r!  Úregister_openr¦  Úregister_saveÚregister_save_allÚregister_extensionsÚregister_mimer5   r6   r7   ú<module>r5     só  ðõB #ã Û Û 	Û Û Û Ý $Ý ß 6Õ 6ç GÕ GÝ !Ý !Ý Ý !Ý !Ý !Ý  à€ÙÝà	ˆ×	Ñ	˜8Ó	$€à	ˆ�‰�LÓ	!×	'Ñ	'€ð 
€ð ØØØØàØàØØØàØàØ!ñ+
€ð2 �"—*‘*Ð0Ó1€à×$Ñ$€ðð
 �~Ñ%€ðôˆwô ô*ˆGô óô/÷[ñ [ô|ˆ3ô ÷6Y3ñ Y3ô@�:ô ôd4�ô d4óV%ôS!�9×&Ñ&ô S!ðv
 
!Ø$Ø$Ø$Ø	 Ø
"Ø	$Ø'Ø(Ø$Ø$Ø$Ø	 Ø$Ø&ñ!€	ó(÷+ñ +÷
ñ 
ô ˆZô  ðKØðKàðKð ðKð ð	Kð
 ðKð &ðKð %ðKð óKó\+ð "*ØðPØðPàðPð ðPð ð	Pð
 ðPð 
óPónð2 €× Ñ �L×'Ñ'¨°wÔ ?Ø €× Ñ �L×'Ñ'¨Ô /Ø €× Ñ ˜×+Ñ+¨YÔ 7à €× Ñ ˜,×-Ñ-°¸Ð/@Ô Aà €× Ñ �L×'Ñ'¨Õ 5r6   