§
    þÜÒjÁ,  ã                  óÒ  — d dl mZ dhZd dlmZ ddlmZmZ ddlm	Z
 ddlmZ 	 ddlmZ d	Zn# e$ r d
ZY nw xY wd
Zerd dlmZmZ ddddœZd&d„Zd'd„Z G d„ dej        ¦  «        Zd(d„Zd)d!„Zd)d"„Z ej        ej        ee¦  «         erZ ej        ej        e¦  «          ej        ej        e¦  «          ej        ej        d#¦  «          ej         ej        d$¦  «         d%S d%S )*é    )ÚannotationsÚio)ÚBytesIOé   )ÚImageÚ	ImageFile)Úi16le)Úi32le)Ú_webpTF)ÚIOÚAnyÚRGBÚRGBA)ó   VP8 ó   VP8Xó   VP8LÚprefixÚbytesÚreturnú
bool | strc                ó’   — |                       d¦  «        }| dd…         dk    }| dd…         t          v }|r|r|rt          s	 dS dS dS )	Ns   RIFFé   é   s   WEBPé   zEimage file could not be identified because WEBP support not installedTF)Ú
startswithÚ_VP8_MODES_BY_IDENTIFIERÚ	SUPPORTED)r   Úis_riff_file_formatÚis_webp_fileÚis_valid_vp8_modes       ú_C:\Users\johnn\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL/WebPImagePlugin.pyÚ_acceptr"      st   € Ø ×+Ò+¨GÑ4Ô4ÐØ˜!˜B˜$”< 7Ò*€LØ˜r "˜uœÕ)AÐAÐàð ˜|ð Ð0Að Ýð 	àWðð ð ˆtØˆ5ó    Úsútuple[int, int] | Nonec                óî  — | dd…         }|dk    rHt          | ¦  «        dk    r4| dd…         dk    r&t          | d¦  «        dz  t          | d	¦  «        dz  fS nœ|d
k    rNt          | ¦  «        dk    r:t          | dd…         dz   ¦  «        dz   t          | dd…         dz   ¦  «        dz   fS nH|dk    rBt          | ¦  «        dk    r/| d         dk    r#t          | d¦  «        }|dz  dz   |dz	  dz  dz   fS d S )Nr   r   r   é   é   é   s   �*iÿ?  é   r   é   é   ó    r   r   é   é   é/   é   é   )ÚlenÚi16Úi32)r$   ÚchunkÚbitss      r!   Ú	_get_sizer8   +   s  € àˆb�ˆeŒH€EØ�ÒÐÝˆq‰6Œ6�RŠ<ˆ<˜A˜b ˜eœH¨Ò7Ð7Ý�q˜"‘:”: Ñ&­¨A¨r©
¬
°VÑ(;Ð;Ð;øØ	�'Ò	Ð	Ýˆq‰6Œ6�RŠ<ˆ<Ý�q˜˜B˜”x %Ñ'Ñ(Ô(¨1Ñ,­c°!°B°r°E´(¸UÑ2BÑ.CÔ.CÀaÑ.GÐGÐGð à	�'Ò	Ð	Ýˆq‰6Œ6�RŠ<ˆ<˜A˜bœE TšM˜MÝ�q˜"‘:”:ˆDØ˜6‘M QÑ&¨$°"©*¸Ñ)>À!Ñ(CÐCÐCØˆ4r#   c                  ór   ‡ — e Zd ZdZdZdZdZdd„Zdd„Zdd„Z	ddd„Z
dd„Zdd„Zdˆ fd„Zdd„Zd d„Zˆ xZS )!ÚWebPImageFileÚWEBPz
WebP imager   r   ÚNonec                óü  — | j         €J ‚| j                              d¦  «        }t          |¦  «        sd}t          |¦  «        ‚t	          |¦  «        x}rt          j        |d¬¦  «         || j                              ¦   «         z  }t          j        |¦  «        | _	        | j	         
                    ¦   «         \  | _        | j        d<   }| _        | _        |dz	  dz  |dz	  dz  |dz  |d	z	  dz  f| j        d
<   | j        dk    | _        | j        dk    rdn| j        | _        ddddœ                     ¦   «         D ]+\  }}| j	                             |¦  «        x}r
|| j        |<   Œ,|                      d¬¦  «         d S )Nr'   znot a WEBP fileT)Ú
error_onlyÚloopr   éÿ   r   r+   Ú
backgroundr   ÚRGBXr   ÚICCPÚEXIFzXMP )Úicc_profileÚexifÚxmpF)Úreset)ÚfpÚreadr"   ÚSyntaxErrorr8   r   Ú_decompression_bomb_checkr   ÚWebPAnimDecoderÚ_decoderÚget_infoÚ_sizeÚinfoÚn_framesÚrawmodeÚis_animatedÚ_modeÚitemsÚ	get_chunkÚ_reset)Úselfr$   ÚmsgÚsizeÚbgcolorÚkeyÚ
chunk_nameÚvalues           r!   Ú_openzWebPImageFile._openA   s¦  € ØŒwÐ"Ð"Ð"ØŒG�LŠL˜ÑÔˆÝ�q‰zŒzð 	#Ø#ˆCÝ˜cÑ"Ô"Ð"õ ˜Q‘<”<Ðˆ4ð 	Cõ Ô+¨D¸TÐBÑBÔBÐBØ	ˆTŒW�\Š\‰^Œ^Ñˆõ Ô-¨aÑ0Ô0ˆŒð ŒM×"Ò"Ñ$Ô$ñ 	LˆŒ
�D”I˜fÑ% w°´¸t¼|ð ˜‰]˜dÑ"Ø˜‰\˜TÑ!Ø�d‰NØ˜‰]˜dÑ"ð	#
ˆŒ	�,Ñð  œ=¨1Ò,ˆÔØ"œl¨fÒ4Ð4�U�U¸$¼,ˆŒ
ð "ØØð 
ð  
÷ Š%‰'Œ'ð		'ð 	'‰OˆC�ð
 œ×/Ò/°
Ñ;Ô;Ð;ˆuð 'Ø!&�”	˜#‘øð 	�Š˜%ˆÑ Ô Ð Ð Ð r#   údict[int, Any] | Nonec                ód   — d| j         vrd S |                      ¦   «                              ¦   «         S )NrF   )rQ   ÚgetexifÚ_get_merged_dict©rY   s    r!   Ú_getexifzWebPImageFile._getexifm   s.   € Ø˜œÐ"Ð"Ø�4Ø�|Š|‰~Œ~×.Ò.Ñ0Ô0Ð0r#   ÚframeÚintc                ó®   — |                       |¦  «        sd S | j                             dd ¦  «         | j                             dd ¦  «         || _        d S )NÚ	timestampÚduration)Ú_seek_checkrQ   ÚpopÚ_WebPImageFile__logical_frame©rY   rg   s     r!   ÚseekzWebPImageFile.seekr   sY   € Ø×Ò Ñ&Ô&ð 	ØˆFØŒ	�Š�k 4Ñ(Ô(Ð(ØŒ	�Š�j $Ñ'Ô'Ð'ð  %ˆÔÐÐr#   TrH   Úboolc                óf   — |r| j                              ¦   «          d| _        d| _        d| _        d S )Nr   éÿÿÿÿ)rN   rH   Ú_WebPImageFile__physical_frameÚ_WebPImageFile__loadedÚ_WebPImageFile__timestamp)rY   rH   s     r!   rX   zWebPImageFile._reset{   s;   € Øð 	"ØŒM×ÒÑ!Ô!Ð!Ø !ˆÔØˆŒØˆÔÐÐr#   útuple[bytes, int, int]c                ó  — | j                              ¦   «         }| xj        dz  c_        |€:|                      ¦   «          |                      d¦  «         d}t          |¦  «        ‚|\  }}|| j        z
  }|| _        ||z  }|||fS )Nr   r   z(failed to decode next frame in WebP file)rN   Úget_nextrt   rX   rp   ÚEOFErrorrv   )rY   ÚretrZ   Údatarj   rk   s         r!   Ú	_get_nextzWebPImageFile._get_next‚   s–   € àŒm×$Ò$Ñ&Ô&ˆØÐÔ Ñ"ÐÔð ˆ;Ø�KŠK‰MŒMˆMØ�IŠI�a‰LŒLˆLØ<ˆCÝ˜3‘-”-Ðð ‰ˆˆiØ˜tÔ/Ñ/ˆØ$ˆÔð 	�XÑˆ	Ø�Y Ð(Ð(r#   c                ó¶   — | j         |k    rd S || j         k     r|                      ¦   «          | j         |k     r!|                      ¦   «          | j         |k     °d S d S ©N)rt   rX   r}   ro   s     r!   Ú_seekzWebPImageFile._seek—   sj   € ØÔ  EÒ)Ð)ØˆFØ�4Ô(Ò(Ð(Ø�KŠK‰MŒMˆMØÔ# eÒ+Ð+Ø�NŠNÑÔÐð Ô# eÒ+Ð+Ð+Ð+Ð+Ð+r#   úImage.core.PixelAccess | Nonec                óÎ  •— | j         | j        k    rµ|                      | j        ¦  «         |                      ¦   «         \  }| j        d<   | j        d<   | j        | _         | j        r | j        r| j                             ¦   «          t          |¦  «        | _        t          j
        dddg| j        ¢R d| j        ¦  «        g| _        t          ¦   «                              ¦   «         S )Nrj   rk   Úrawr   )ru   rn   r€   r}   rQ   rI   Ú_exclusive_fpÚcloser   r   Ú_Tiler[   rS   ÚtileÚsuperÚload)rY   r|   Ú	__class__s     €r!   r‰   zWebPImageFile.loadŸ   sÉ   ø€ ØŒ=˜DÔ0Ò0Ð0Ø�JŠJ�tÔ+Ñ,Ô,Ð,ð CGÇ.Â.ÑBRÔBRÑ?ˆD�$”)˜KÑ(¨$¬)°JÑ*?Ø Ô0ˆDŒMð Œwð  ˜4Ô-ð  Ø”—’‘”�Ý˜d‘m”mˆDŒGÝ"œ¨°°AÐ0B¸¼	Ð0BÐ0BÀAÀtÄ|ÑTÔTÐUˆDŒIå‰wŒw�|Š|‰~Œ~Ðr#   Úposc                ó   — d S r   © )rY   r‹   s     r!   Ú	load_seekzWebPImageFile.load_seek¯   s   € Øˆr#   c                ó   — | j         S r   )rn   re   s    r!   ÚtellzWebPImageFile.tell²   s   € ØÔ#Ð#r#   )r   r<   )r   ra   )rg   rh   r   r<   )T)rH   rq   r   r<   )r   rw   )r   r�   )r‹   rh   r   r<   )r   rh   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionru   rn   r`   rf   rp   rX   r}   r€   r‰   rŽ   r�   Ú__classcell__)rŠ   s   @r!   r:   r:   ;   sø   ø€ € € € € Ø€FØ%ÐØ€HØ€Oð*!ð *!ð *!ð *!ðX1ð 1ð 1ð 1ð
%ð %ð %ð %ðð ð ð ð ð)ð )ð )ð )ð*ð ð ð ðð ð ð ð ð ð ð ð ð ð$ð $ð $ð $ð $ð $ð $ð $r#   r:   ÚimúImage.Imagec                óT   — | j         dvr|                      | j        rdnd¦  «        } | S )N)rB   r   r   r   r   )ÚmodeÚconvertÚhas_transparency_data)r—   s    r!   Ú_convert_framer�   ¶   s2   € à	„wÐ-Ð-Ð-Ø�ZŠZ "Ô":ÐE˜˜ÀÑFÔFˆØ€Ir#   rI   ú	IO[bytes]Úfilenameústr | bytesr<   c           
     óZ	  — | j                              ¦   «         }t          |                     dg ¦  «        ¦  «        }d}| g|z   D ]}|t	          |dd¦  «        z  }Œ|dk    rt          | ||¦  «         d S d}d|v r	|d         }ned| j        v r\| j        d         }t          |t          ¦  «        r:|  	                    ¦   «         }|r||dz  |dz   dz  …         \  }	}
}|	|
|df}n|||df}| j                              d	| j                             d	d¦  «        ¦  «        }| j                              d
d¦  «        }| j                              dd¦  «        }| j                              dd ¦  «        }| j                              dd ¦  «        }| j                              dd¦  «        }d}| j                              dd¦  «        }| j                              dd¦  «        }| j                              dd¦  «        }| j                              dd¦  «        }| j                              d¦  «        pd}| j                              dd¦  «        }t          |t          j        ¦  «        r|                     ¦   «         }| j                              dd¦  «        }|rd}|€|rdnd}|€|rdnd}t          |t          t          f¦  «        r,t          |¦  «        dk    st          d„ |D ¦   «         ¦  «        sd|› �}t!          |¦  «        ‚|\  }}}}|d z  |d!z  z  |d"z  z  |dz  z  }t#          j        | j        |||||||¦  «        }d} d}!|                      ¦   «         }"	 | g|z   D ]´}t	          |dd¦  «        }#t+          |#¦  «        D ]‘}$|                     |$¦  «         t/          |¦  «        }%|                     |%                     ¦   «         t5          |!¦  «        ||||¦  «         t          |t          t          f¦  «        r|!||          z  }!n|!|z  }!| dz  } Œ’Œµ	 |                      |"¦  «         n# |                      |"¦  «         w xY w|                     d t5          |!¦  «        |||d¦  «         |                     |||¦  «        }&|&€d#}t!          |¦  «        ‚|                     |&¦  «         d S )$NÚappend_imagesr   rR   r   )r   r   r   r   rA   é   r@   rk   r?   Úminimize_sizeFÚkminÚkmaxÚallow_mixedÚlosslessÚqualityéP   Úalpha_qualityéd   ÚmethodrE   Ú rF   rG   é	   é   é   é   c              3  ó6   K  — | ]}d |cxk    odk     nc V — ŒdS )r   é   Nr�   )Ú.0Úvs     r!   ú	<genexpr>z_save_all.<locals>.<genexpr>ö   s6   è è € Ð4Ð4 A�1˜�<�<’<�<˜C’<�<�<�<Ð4Ð4Ð4Ð4Ð4Ð4r#   z:Background color is not an RGBA tuple clamped to (0-255): r+   r   r   ú1cannot write file as WebP (encoder returned None))ÚencoderinfoÚcopyÚlistÚgetÚgetattrÚ_saverQ   Ú
isinstancerh   Ú
getpaletter   ÚExifÚtobytesÚtupler3   ÚallÚOSErrorr   ÚWebPAnimEncoderr[   r�   Úrangerp   r�   ÚaddÚgetimÚroundÚassembleÚwrite)'r—   rI   rŸ   r¹   r¢   ÚtotalÚimsrA   ÚpaletteÚrÚgÚbrk   r?   r¤   r¥   r¦   r§   Úverboser¨   r©   r«   r­   rE   rF   rG   rZ   Úbg_rÚbg_gÚbg_bÚbg_aÚencÚ	frame_idxrj   Úcur_idxÚnfrÚidxrg   r|   s'                                          r!   Ú	_save_allrÝ   ½   s  € Ø”.×%Ò%Ñ'Ô'€KÝ˜Ÿš¨¸"Ñ=Ô=Ñ>Ô>€Mð €EØˆt�mÑ#ð -ð -ˆØ•˜˜j¨!Ñ,Ô,Ñ,ˆˆØ�‚z€zÝˆb�"�hÑÔÐØˆà(4€JØ�{Ð"Ð"Ø  Ô.ˆ
ˆ
Ø	˜œÐ	 Ð	 Ø”W˜\Ô*ˆ
Ý�j¥#Ñ&Ô&ð 	Gð —m’m‘o”oˆGØð GØ! *¨q¡.°JÀ±NÀaÑ3GÐ"GÔH‘��1�aØ  A s˜^�
�
à(¨*°jÀ#ÐF�
àŒ~×!Ò! *¨b¬g¯kªk¸*ÀaÑ.HÔ.HÑIÔI€HØŒ>×Ò˜f aÑ(Ô(€DØ”N×&Ò& ¸Ñ>Ô>€MØŒ>×Ò˜f dÑ+Ô+€DØŒ>×Ò˜f dÑ+Ô+€DØ”.×$Ò$ ]°EÑ:Ô:€KØ€GØŒ~×!Ò! *¨eÑ4Ô4€HØŒn× Ò  ¨BÑ/Ô/€GØ”N×&Ò& ¸Ñ<Ô<€MØŒ^×Ò ¨!Ñ,Ô,€FØ”.×$Ò$ ]Ñ3Ô3Ð9°r€KØŒ>×Ò˜f bÑ)Ô)€DÝ�$�œ
Ñ#Ô#ð Ø�|Š|‰~Œ~ˆØ
Œ.×
Ò
˜U BÑ
'Ô
'€CØð Øˆð €|ØÐ#ˆqˆq !ˆØ€|ØÐ$ˆrˆr 1ˆõ �z¥D­% =Ñ1Ô1ðåˆz‰?Œ?˜aÒÐÝÐ4Ð4¨Ð4Ñ4Ô4Ñ4Ô4ð  ð XÈ:ÐWÐWˆÝ�c‰lŒlÐð (Ñ€Dˆ$��dØ˜"‘* ¨¡Ñ,°¸±	Ñ:¸dÀa¹iÑH€Jõ Ô
Ø
ŒØØØØØØØñ	ô 	€Cð €IØ€IØ�gŠg‰iŒi€GðØ�4˜-Ñ'ð 	ð 	ˆCå˜#˜z¨1Ñ-Ô-ˆCå˜S‘z”zð ð �Ø—’˜‘”�å& sÑ+Ô+�ð —’Ø—K’K‘M”MÝ˜)Ñ$Ô$ØØØ!Øñô ð õ ˜h­­u¨Ñ6Ô6ð *Ø ¨)Ô!4Ñ4�I�Ià Ñ)�IØ˜Q‘�	�	ð)ð		ð6 	�Š�ÑÔÐÐøˆ�Š�ÑÔÐÐøøøð ‡G‚GˆD•%˜	Ñ"Ô" H¨g°}ÀaÑHÔHÐHð �<Š<˜ T¨3Ñ/Ô/€DØ€|ØAˆÝ�c‰lŒlÐà‡H‚HˆT�N„N€N€N€Ns   ÍB;P+ Ð+Qc                óV  — | j                              dd¦  «        }| j                              dd¦  «        }| j                              dd¦  «        }| j                              d¦  «        pd}| j                              d	d
¦  «        }t          |t          j        ¦  «        r|                     ¦   «         }|                     d¦  «        r
|dd …         }| j                              dd¦  «        }| j                              dd¦  «        }	| j                              d¦  «        rdnd}
t          | ¦  «        } t          j	        |  
                    ¦   «         |t          |¦  «        t          |¦  «        ||	|
||¦	  «	        }|€d}t          |¦  «        ‚|                     |¦  «         d S )Nr¨   Fr©   rª   r«   r¬   rE   r®   rF   r#   s   Exif  é   rG   r­   r²   Úexactr   r   r¸   )r¹   r¼   r¿   r   rÁ   rÂ   r   r�   r   Ú
WebPEncoderÉ   ÚfloatrÅ   rÌ   )r—   rI   rŸ   r¨   r©   r«   rE   rF   rG   r­   rà   r|   rZ   s                r!   r¾   r¾   9  s�  € ØŒ~×!Ò! *¨eÑ4Ô4€HØŒn× Ò  ¨BÑ/Ô/€GØ”N×&Ò& ¸Ñ<Ô<€MØ”.×$Ò$ ]Ñ3Ô3Ð9°r€KØŒ>×Ò˜f cÑ*Ô*€DÝ�$�œ
Ñ#Ô#ð Ø�|Š|‰~Œ~ˆØ‡‚�Ñ'Ô'ð Ø�A�B�BŒxˆØ
Œ.×
Ò
˜U BÑ
'Ô
'€CØŒ^×Ò ¨!Ñ,Ô,€FØ”×#Ò# GÑ,Ô,Ð3ˆAˆA°!€Eå	˜Ñ	Ô	€BåÔØ
�Š‰
Œ
ØÝˆg‰ŒÝˆmÑÔØØØØØñ
ô 
€Dð €|ØAˆÝ�c‰lŒlÐà‡H‚HˆT�N„N€N€N€Nr#   z.webpz
image/webpN)r   r   r   r   )r$   r   r   r%   )r—   r˜   r   r˜   )r—   r˜   rI   rž   rŸ   r    r   r<   )!Ú
__future__r   Ú__lazy_modules__r   r   r®   r   r   Ú_binaryr	   r4   r
   r5   r   r   ÚImportErrorÚTYPE_CHECKINGÚtypingr   r   r   r"   r8   r:   r�   rÝ   r¾   Úregister_openr”   Úregister_saveÚregister_save_allÚregister_extensionÚregister_mimer�   r#   r!   ú<module>rî      s"  ðØ "Ð "Ð "Ð "Ð "Ð "à�6Ð à Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !ðØÐÐÐÐÐà€I€IøØð ð ð Ø€I€I€Iðøøøð €Øð ØÐÐÐÐÐÐÐð ØØðð Ð ðð ð ð ðð ð ð ð x$ð x$ð x$ð x$ð x$�IÔ'ñ x$ô x$ð x$ðvð ð ð ðyð yð yð yðxð ð ð ðD €Ô �MÔ(¨-¸Ñ AÔ AÐ AØð <Ø€EÔ˜Ô,¨eÑ4Ô4Ð4Ø€EÔ˜MÔ0°)Ñ<Ô<Ð<Ø€EÔ˜]Ô1°7Ñ;Ô;Ð;Ø€EÔ˜Ô,¨lÑ;Ô;Ð;Ð;Ð;ð	<ð <s   ¥. ®8·8