o
     h/-                     @  s  d dl mZ d dlZd dlZd dlmZmZ ddlmZm	Z	m
Z
 ddlmZ dZdZd	Zd
ZdZdZdZdZdZed ed ed ed ed ed ed ed ed i	Zi ddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2Zd3D ]Zd4d5e fed6e d7< d4d5e fed8e d7< qd9D ]"Zd:e d:e fed6e d7< d:e d:e fed8e d7< qd;D ]Zd<d:e fed6e d7< d<d:e fed8e d7< qed=d>D ]Zd4d5e fed8e d7< qed?Zd]dDdEZG dFdG dGe	j	ZdHdId+dJd-dKdLdMdNdOdd.dPd0dQdRZd^dZd[Z e!ej"e e#ej"e  e$ej"d\ dS )_    )annotationsN)IOAny   )Image	ImageFileImagePalette)DeferredErrorCommentDatezDigitalization equipmentzFile size (no of images)ZLutNamezScale (x,y)zImage size (x*y)z
Image typez	0 1 image)1r   z	L 1 imagezGreyscale image)Lr   zGrayscale imagez	RGB image)RGBRGB;Lz	RLB image)r   ZRLBz	RYB imagezB1 imagezB2 image)PzP;2zB4 image)r   zP;4z
X 24 image)r   r   zL 32 S image)IzI;32zL 32 F image)FzF;32z
RGB3 image)r   RGB;Tz
RYB3 image)r   RYB;TzLA image)LAzLA;LzPA image)r   PA;L)RGBAzRGBA;L)r   RGBX;L)CMYKzCMYK;L)YCbCrYCbCr;L)z
RGBA imagez
RGBX imagez
CMYK imagez	YCC image)8Z8S16Z16SZ32Z32Fr   F;zL z imagezL*)r   Z16L16BzI;)Z32Sr      !   s"   ^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$sr   returnfloatc                 C  s&   zt | W S  ty   t|  Y S w N)int
ValueErrorr%   )r#    r)   W/home/www/facesmatcher.com/frenv_anti/lib/python3.10/site-packages/PIL/ImImagePlugin.pynumberl   s
   
r+   c                   @  sR   e Zd ZdZdZdZdddZedd	d
ZedddZ	dddZ
dddZdS )ImImageFileZIMzIFUNC Image MemoryFr$   Nonec              
   C  s  d| j dvrd}t|| j d d}d| jt< d| jt< d| jt< d| _	 | j d}|d	kr4q(|r>|d
ks>|dkr@q|| j 	  }t
|dkrSd}t||dr_|d d }n|drj|d d }zt|}W n tjy } zd}t||d }~ww |r|dd\}}|dd}|dd}|tttfv r|dd}ttt|d}t
|dkr|d }n|tkr|tv rt| \}| _|tkr|| jv r| j| | q|g| j|< n|| j|< |tv r|d7 }nd|dd }t|q)|sd}t|| jt | _| jt | _|r/|ds/| j d}|r/|dr |s8d}t|t| jv r| j d}d}	d}
tdD ](}|| ||d    krd||d  krqn n|| |krod}
qLd}	qL| j dv r|	r|
st!|d d | _"q| j dv rd | _| _n| j dv rd| _d | _t#$d!|| _%n| j d"kr|	r|
st!|| _"d| _&| j '  | _(}| j | _)| jd#rz%t*| jdd  }|d$vrt+,d%d&| j- ||d'd(ddfg| _.W d S W n
 t/y   Y nw | jd)v r=| j-d | j-d  }t+,d*d&| j- |d+t+,d*d&| j- || d,t+,d*d&| j- |d|  d-g| _.d S t+,d*d&| j- || jddfg| _.d S ).N   
d   znot an IM filer   r   )   r0   r   T          s   
r!   zlatin-1replace*,zSyntax error in IM header: asciizNot an IM filezFile truncatedi      r0   )r   r   r   PA)r   r   r   )r   r;   r;   r   r   r   r   )          bitr   r   r<      )r   r   raw)Gr   r5   )Rr   r5   )Br   r5   )0fpreadSyntaxErrorseekinfoMODESIZEFRAMESrawmodereadlinelenendswithsplitmatchreerrorgroupdecodeSCALEr6   tuplemapr+   OPENCOMMENTappendTAGS_size_mode
startswithLUTrangemodelistZlutr   rB   paletteframetell_ImImageFile__offset_fpr'   r   _Tilesizetiler(   )selfmsgnr#   mekvrf   Z	greyscaleZlinearioffsbitsrl   r)   r)   r*   _open|   s   







>0




zImImageFile._openr'   c                 C  s
   | j t S r&   rJ   rM   rn   r)   r)   r*   n_frames  s   
zImImageFile.n_framesboolc                 C  s   | j t dkS )Nr   ry   rz   r)   r)   r*   is_animated  s   zImImageFile.is_animatedrg   c                 C  s   |  |sd S t| jtr| jj|| _| jdkrd}ndt| j }| jd | d d | jd  }| j	||  }| j| _
tdd| j || jddfg| _d S )	Nr   r   r<   r      rB   r@   r5   )Z_seek_check
isinstancerj   r	   exrg   rd   rP   rl   ri   rF   r   rk   rN   rm   )rn   rg   rw   rl   rv   r)   r)   r*   rI   #  s   

 
zImImageFile.seekc                 C  s   | j S r&   )rg   rz   r)   r)   r*   rh   9  s   zImImageFile.tellN)r$   r-   )r$   r'   )r$   r|   )rg   r'   r$   r-   )__name__
__module____qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingrx   propertyr{   r}   rI   rh   r)   r)   r)   r*   r,   w   s    
  
r,   )z0 1r   )	Greyscaler   )r   r   )zL 32SzI;32S)zL 16I;16)zL 16LI;16L)zL 16BI;16B)zL 32FzF;32F)RGBXr   )ZYCCr   )r   r   r   r   r;   r   r   r   r   r   r   r   r   r   r   imImage.ImagerF   	IO[bytes]filenamestr | bytesr-   c                 C  s  z	t | j \}}W n ty! } zd| j d}t||d }~ww | jdd}|d| dd |rht|t	rA|
d}tjtj|\}}	d|d d	t|	  |	g}|d
| dd |d| jd  d| jd  dd |d| dd | jdv r|d |dd|   d  | jdv r| jdd}
t|
d }d}tdD ]}||
|| ||d   7 }|dd|  7 }q|| t| |tdd| j d|ddfg d S )NzCannot save z images as IMframesr   zImage type: z image
r9    \   zName: z
zImage size (x*y): r   r7   zFile size (no of images): )r   r;   s   Lut: 1
r2   i  r3   r   r   rA       r:   rB   r@   r5   )SAVErd   KeyErrorr(   Zencoderinfogetwriteencoder   bytesrW   ospathsplitextbasenamejoinrP   rl   rh   r   Z
getpaletterc   r   _saverk   )r   rF   r   Z
image_typerN   rr   ro   r   nameextZ
im_palettecolorsrf   ru   r)   r)   r*   r   V  s>   


*



 r   z.im)r#   r   r$   r%   )r   r   rF   r   r   r   r$   r-   )%
__future__r   r   rT   typingr   r   r   r   r   r   Z_utilr	   r\   ZDATEZ	EQUIPMENTrM   rb   NAMErX   rL   rK   r^   r[   ru   rc   jcompilerR   r+   r,   r   r   Zregister_openr   Zregister_saveZregister_extensionr)   r)   r)   r*   <module>   s   	
 "

 N
,