o �J�h�(�@s�ddlmZddlmZddlmZmZddlmZm Z z ddlm Z dZ Wn e y1dZ Ynwd d d d �Z d$dd�ZGdd�de j �Zd%dd�Zd&dd�Zd&dd �Ze�ejee�e r}e�eje�e�eje�e�ejd!�e�ejd"�d#Sd#S)'�)� annotations)�BytesIO)�IO�Any�)�Image� ImageFile)�_webpTF�RGB�RGBA)sVP8 sVP8XsVP8L�prefix�bytes�return� bool | strcCsN|dd�dk}|dd�dk}|dd�tv}|r%|r%|r%ts# dSdSd S) N�sRIFF�� sWEBP�zEimage file could not be identified because WEBP support not installedTF)�_VP8_MODES_BY_IDENTIFIER� SUPPORTED)r Zis_riff_file_formatZ is_webp_fileZis_valid_vp8_mode�r�QC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\PIL\WebPImagePlugin.py�_accepts �rcs�eZdZdZdZdZdZd!dd�Zd"d d �Zd#d d�Z d$d%dd�Z d&dd�Z d#dd�Z d'�fdd� Z d(dd�Zd)dd �Z�ZS)*� WebPImageFile�WEBPz WebP imagerr�NonecCs t�|j���|_|j��\}}}}}}||f|_||jd<|d?d@|d?d@|d?d@|d@f\}}} } || | |f|jd<||_|jdk|_ |dkrNd n||_ ||_ g|_ |j� d �} |j� d �} |j� d �} | rp| |jd <| rw| |jd<| r~| |jd<|jdd�dS)N�loop���rr� backgroundr�RGBXr ZICCPZEXIFzXMP � icc_profile�exif�xmpF)�reset)r ZWebPAnimDecoder�fp�read�_decoder�get_info�_size�info�n_frames� is_animated�_mode�rawmode�tileZ get_chunk�_reset)�self�width�heightZ loop_count�bgcolor� frame_count�mode�bg_a�bg_r�bg_g�bg_br!r"r#rrr�_open+s2      �       zWebPImageFile._open�dict[int, Any] | NonecCsd|jvrdS|����S)Nr")r*�getexif�_get_merged_dict�r1rrr�_getexifOs  zWebPImageFile._getexif�frame�intcCs|�|�sdS||_dS�N)� _seek_check�_WebPImageFile__logical_frame�r1rArrr�seekTs  zWebPImageFile.seekTr$�boolcCs$|r|j��d|_d|_d|_dS)Nr�����)r'r$�_WebPImageFile__physical_frame�_WebPImageFile__loaded�_WebPImageFile__timestamp)r1r$rrrr0[s   zWebPImageFile._reset�tuple[bytes, int, int]cCsh|j��}|jd7_|dur|��|�d�d}t|��|\}}||j}||_||8}|||fS)Nrrz(failed to decode next frame in WebP file)r'Zget_nextrJr0rG�EOFErrorrL)r1�ret�msg�data� timestamp�durationrrr� _get_nextbs    zWebPImageFile._get_nextcCsD|j|krdS||jkr|��|j|kr |��|j|ksdSdSrC)rJr0rTrFrrr�_seekws   �zWebPImageFile._seek�Image.core.PixelAccess | Nonecs�|j|jkr?|�|j�|��\}}}||jd<||jd<|j|_|jr,|jr,|j��t|�|_t � dd|j d|j �g|_ t���S)NrRrS�raw)rrr)rKrErUrTr*r%� _exclusive_fp�closerr�_Tile�sizer.r/�super�load)r1rQrRrS�� __class__rrr]s        zWebPImageFile.load�poscCsdSrCr)r1r`rrr� load_seek�szWebPImageFile.load_seekcCs|jSrC)rEr?rrr�tell�szWebPImageFile.tell)rr)rr<)rArBrr)T)r$rHrr)rrM)rrV)r`rBrr)rrB)�__name__� __module__� __qualname__�format�format_descriptionrKrEr;r@rGr0rTrUr]rarb� __classcell__rrr^rr%s  $     r�im� Image.ImagecCs"|jdvr|�|jr dnd�}|S)N)r r r r r )r6�convert�has_transparency_data)rirrr�_convert_frame�s rmr%� IO[bytes]�filename� str | bytesrc' Csn|j��}t|�dg��}d}|g|D] }|t|dd�7}q|dkr+t|||�dSd}d|vr6|d}n1d|jvrg|jd}t|t�rg|� �}|ra||d|dd�\} } } | | | df}n|||df}|j�d |j�d d��} |j�d d�} |j�d d �}|j�d d�}|j�dd�}|j�dd �}d }|j�dd �}|j�dd�}|j�dd�}|j�dd�}|j�d�p�d}|j�dd�}t|t j �r�|� �}|j�dd�}|r�d }|dur�|r�dnd}|dur�|r�dnd}t|tt f��rt|�dk�stdd�|D���sd |��}t|��|\}}}}|d!>|d">B|d#>B|d>B}t�|jd|jd|| |||||� }d} d}!|��}"zL|g|D]?}t|dd�}#t|#�D]1}$|�|$�t|�}%|�|%��t|!�||||�t| tt f��ry|!| | 7}!n|!| 7}!| d7} �qQ�qEW|�|"�n|�|"�w|�dt|!�|||d�|�|||�}&|&du�r�d$}t|��|�|&�dS)%N� append_imagesrr+r)rrrrr�rrSr� minimize_sizeF�kmin�kmax� allow_mixed�lossless�quality�P� alpha_quality�d�methodr!�r"r#� ��rcss(�|]}d|ko dknVqdS)r�Nr)�.0�vrrr� <genexpr>�s�&z_save_all.<locals>.<genexpr>z:Background color is not an RGBA tuple clamped to (0-255): rrr�1cannot write file as WebP (encoder returned None))� encoderinfo�copy�list�get�getattr�_saver*� isinstancerB� getpaletter�Exif�tobytes�tuple�len�all�OSErrorr ZWebPAnimEncoderr[rb�rangerGrm�add�getim�round�assemble�write)'rir%ror�rq�total�imsr�palette�r�g�brSrrsrtrurv�verboserwrxrzr|r!r"r#rPr8r9r:r7�encZ frame_idxrR�cur_idx�nfr�idxrArQrrr� _save_all�s�           ��   �    �  �� r�c Cs�|j�dd�}|j�dd�}|j�dd�}|j�d�pd}|j�d d �}t|tj�r.|��}|�d �r9|d d�}|j�d d�}|j�dd�} |j�d�rOdnd} t|�}t� |� �|t |�t |�|| | ||� } | durrd} t | ��|� | �dS)NrwFrxryrzr{r!r}r"�sExif�r#r|r�exactrrr�)r�r�r�rr�r�� startswithrmr Z WebPEncoder��floatr�r�) rir%rorwrxrzr!r"r#r|r�rQrPrrrr�s8   � r�z.webpz image/webpN)r r rr)rirjrrj)rirjr%rnrorprr)� __future__r�ior�typingrrr}rrr r� ImportErrorrrrrmr�r�� register_openrf� register_save�register_save_all�register_extension� register_mimerrrr�<module>s4   ��  s  }"�
Memory