
     ft                    N   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Zd dl	Z	d dl
Z
d dlmZ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d	lmZ dd
lmZ ddZd ZddZddZddZi dddefdddefdddefdd d!efd"d#d$efd%d&d'efd(d)d*efd+d,d-efd.d/d0d1d2efd3d4d5efd6d7d8efd9d:d;efd<d=d>efd?d@dAefdBdCdDefdEdFi dGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[efd\d]d^efd_d`daefdbdcddefdedfdgefdhdidjefdkdldmefdndodpefi dqdrdsefdtdudvefdwdxdyefdzd{d|efd}d~defdddefdddefdddefdddefdddefdddefdddefdddefdddefdddddddddddddddddddefdZ ddZ! G d dej                  Z"ddZ#d Z$dddddddZ%dZ&d dddZ'd Z(ddƄZ)ddǄZ*ddȄZ+ ej,        e"j-        e+e!            ej.        e"j-        e)            ej/        e"j-        g dɢ            ej0        e"j-        dʦ           dS )    )annotationsN)IOAny   )Image	ImageFile)i16be)i32be)o8)o16be)presetsselfJpegImageFilemarkerintreturnNonec                    t          | j                            d                    dz
  }t          j        | j        |           d S )N   )i16fpreadr   
_safe_read)r   r   ns      V/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/PIL/JpegImagePlugin.pySkipr   :   s;    DGLLOOq A!$$$$$    c                   t          | j                            d                    dz
  }t          j        | j        |          }d|dz  z  }|| j        |<   | j                            ||f           |dk    r|d d         dk    rt          |d          x| j        d<   }t          |d	          | j        d
<   	 |d         }t          |d          t          |d          f}|dk    r
|| j        d<   || j        d<   || j        d<   d S # t          $ r Y d S w xY w|dk    rf|d d         dk    rXd| j        v r| j        dxx         |dd          z  cc<   d S || j        d<   | j                                        |z
  dz   | _        d S |dk    r4|d d         dk    r&|                    dd          d         | j        d<   d S |dk    r|d d         dk    r|| j        d<   d S |dk    r*|d d         dk    r| j                            |           d S |dk    r|d d          d!k    rd }| j                            d"i           }	|||dz            d#k    r	 |dz  }t          ||          }
|dz  }||         }|d|z   z  }||dz  z  }t!          ||          }|dz  }||||z            }|
d$k    rEt!          |d%          d&z  t          |d          t!          |d          d&z  t          |d          d'}||	|
<   ||z  }||dz  z  }n# t"          j        $ r Y d S w xY w|||dz            d#k    d S d S |d(k    rL|d d         d)k    r>t          |d          | j        d*<   	 |d+         }|| j        d,<   d S # t&          $ r Y d S w xY w|dk    rI|d d         d-k    r=|dd          | j        d.<   | j                                        |z
  dz   | j        d/<   d S d S d S )0Nr   zAPP%d        s   JFIF   jfif   jfif_version      
   r   dpi	jfif_unitjfif_density     s   Exif  exif   s   http://ns.adobe.com/xap/1.0/     xmp  s   FPXR flashpix      ICC_PROFILE      s   Photoshop 3.0 	photoshops   8BIMi  r   i   )XResolutionDisplayedUnitsXYResolutionDisplayedUnitsY  s   Adobeadobe   adobe_transforms   MPF mpmpoffset)r   r   r   r   r   appapplistappendinfodivmod	Exceptiontell_exif_offsetspliticclist
setdefaulti32structerror
IndexError)r   r   r   srC   versionr*   r+   offsetr8   codename_lensizedatar@   s                  r   APPrY   ?   s   
 	DGLLOOq ATWa((A
Vb[
!CDHSMLa!!!AbqbEW,,&)!Qii/	&G$*7C$8$8	.!		5!Iq!99c!Rjj0L A~~#/	% %.DIk"(4DIn%%%  	 	 	DD	 
6		ae{22TYIf122& !DIf $ 2Q 6D	6		af(KKK777A..q1	%	6		aey00 !	*	6		af(888 	A	6		af(<<<I((b99	!#$//!1f~~!V9!h,&&1*$1f~~!&4-/06>>'*4||e';+.tQ<<'*4||e';+.tR==	 D #'	$$&1*$<   3 !#$//////8 
6		aex// AYY	'	;eO ,;DI'(((  	 	 	DD	 
6		aex//ABB%	$ !% 2Q 6	* 
	//s7   :(D 
DDB1L LLM2 2
N ?N c                    t          | j                            d                    dz
  }t          j        | j        |          }|| j        d<   || j        d<   | j                            d|f           d S )Nr   commentCOM)	r   r   r   r   r   rF   rC   rD   rE   )r   r   r   rR   s       r   r\   r\      sm     	DGLLOOq ATWa((ADIiDHUOL
#####r   c                   t          | j                            d                    dz
  }t          j        | j        |          }t          |d          t          |d          f| _        |d         | _        | j        dk    rd| j         d}t          |          |d         | _        | j        dk    rd	| _	        n@| j        dk    rd
| _	        n-| j        dk    rd| _	        nd| j         d}t          |          |dv rdx| j
        d<   | j
        d<   | j        r|| j                                         | j        d         d         t          | j                  k    r'd | j        D             }d                    |          }nd }|| j
        d<   g | _        t          dt          |          d          D ]K}|||dz            }| j                            |d         |d         dz  |d         dz  |d         f           Ld S )Nr      r   r   r'   zcannot handle z-bit layersr"   LRGBr!   CMYKz-layer images)        progressiveprogression   c                "    g | ]}|d d         S )r7   N ).0ps     r   
<listcomp>zSOF.<locals>.<listcomp>   s     444!qv444r   r   icc_profiler-      r   )r   r   r   r   r   _sizebitsSyntaxErrorlayers_moderF   rL   sortlenjoinrangelayerrE   )	r   r   r   rR   msgprofilern   its	            r   SOFr~      s    	DGLLOOq ATWa((AQC1II%DJ!DIyA~~5ty555#A$DK{a

			

			

9t{999#111>??	- 49]#;| 	<?2#dl"3"33344t|444G((7++KKK#.	- 1c!ffa   ? ?a!a%iL
1Q41QqTBY!=>>>>? ?r   c                @   t          | j                            d                    dz
  }t          j        | j        |          }t          |          r|d         }|dz  dk    rdnd}d|dz  z   }t          |          |k     rd}t          |          t          j        |dk    rdnd|d|                   t          j	        d	k    r|dk    r
                                 fd
t          D             | j        |dz  <   ||d          }t          |          d S d S )Nr   r   ro   r   @   zbad quantization table markerBHlittlec                     g | ]
}|         S rj   rj   )rk   r|   rX   s     r   rm   zDQT.<locals>.<listcomp>   s    $C$C$CT!W$C$C$Cr   r   )r   r   r   r   r   rv   rr   arraysys	byteorderbyteswapzigzag_indexquantization)	r   r   r   rR   v	precision	qt_lengthrz   rX   s	           @r   DQTr      s2    	DGLLOOq ATWa((A
a&& aDr'Q,,AAQ		B&	q66I1Cc"""{)q..33c1Qy[>JJ=H$$QMMOOO$C$C$C$Cl$C$C$C!b&!ijjM a&&     r   i  SOF0zBaseline DCTi  SOF1zExtended Sequential DCTrb   SOF2zProgressive DCTi  SOF3zSpatial losslessi  DHTzDefine Huffman tablei  SOF5zDifferential sequential DCTrc   SOF6zDifferential progressive DCTi  SOF7zDifferential spatiali  )JPG	ExtensionNi  SOF9zExtended sequential DCT (AC)rd   SOF10zProgressive DCT (AC)i  SOF11zSpatial lossless DCT (AC)i  DACz%Define arithmetic coding conditioningi  SOF13z Differential sequential DCT (AC)re   SOF14z!Differential progressive DCT (AC)i  SOF15zDifferential spatial (AC)i  )RST0z	Restart 0Ni  )RST1z	Restart 1Ni  )RST2z	Restart 2Ni  )RST3z	Restart 3Ni  )RST4z	Restart 4Ni  )RST5z	Restart 5Ni  )RST6z	Restart 6Ni  )RST7z	Restart 7Ni  )SOIzStart of imageNi  )EOIzEnd of imageN  SOSzStart of scani  r   zDefine quantization tablei  DNLzDefine number of linesi  DRIzDefine restart intervali  DHPzDefine hierarchical progressioni  EXPzExpand reference componentr    APP0zApplication segment 0r,   APP1zApplication segment 1r2   APP2zApplication segment 2i  APP3zApplication segment 3i  APP4zApplication segment 4i  APP5zApplication segment 5i  APP6zApplication segment 6i  APP7zApplication segment 7i  APP8zApplication segment 8i  APP9zApplication segment 9i  APP10zApplication segment 10i  APP11zApplication segment 11i  APP12zApplication segment 12r6   APP13zApplication segment 13r=   APP14zApplication segment 14i  APP15zApplication segment 15i  )JPG0zExtension 0Ni  )JPG1zExtension 1Ni  )JPG2zExtension 2N)JPG3zExtension 3N)JPG4zExtension 4N)JPG5zExtension 5N)JPG6zExtension 6N)JPG7zExtension 7N)JPG8zExtension 8N)JPG9zExtension 9N)JPG10zExtension 10N)JPG11zExtension 11N)JPG12zExtension 12N)JPG13zExtension 13Nr\   Comment)i  i  i  i  i  i  i  i  i  i    i  prefixbytesboolc                    | d d         dk    S )Nr^   s   rj   )r   s    r   _acceptr   >  s    "1":((r   c                  J    e Zd ZdZdZd ZddZddZddZddZ	ddZ
d ZdS )r   JPEGzJPEG (ISO 10918)c                0   | j                             d          }t          |          sd}t          |          d}dx| _        | _        g | _        i | _        i | _        i | _	        i | _
        g | _        g | _        	 |d         }|dk    r-|| j                             d          z   }t          |          }n| j                             d          }W|t          v rkt          |         \  }}}| || |           |dk    r+| j        }| j        d	k    rd
}dd| j        z   d|dffg| _        nV| j                             d          }n9|dv rd}n2|dk    r| j                             d          }nd}t          |          |                                  d S )Nr^   znot a JPEG file   r   T   r   r   ra   CMYK;Ijpegr   r    >     r   i   zno marker found)r   r   r   rr   rq   rs   ry   
huffman_dc
huffman_acr   rC   rD   rL   r   MARKERmoderW   tile_read_dpi_from_exif)r   rR   rz   r|   namedescriptionhandlerrawmodes           r   _openzJpegImageFile._openK  s   GLLOOqzz 	##Cc""" #$#	DK 
	'!ADyyQ'FF GLLOOF{{-3AY*k7&GD!$$$;;"iGyF**"*"(&49*<a'2!O PDIGLLOOk!!fGLLOO'!#&&&;	'> 	  """""r   
read_bytesr   r   r   c                    | j                             |          }|s%t          j        rt	          | d          s	d| _        dS |S )z
        internal: read more image data
        For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker
        so libjpeg can finish decoding
        _endedTs   )r   r   r   LOAD_TRUNCATED_IMAGEShasattrr   )r   r   rR   s      r   	load_readzJpegImageFile.load_read  sM     GLL$$ 	Y4 	WT8=T=T 	 DK;r   r   
str | NonerW   tuple[int, int] | None0tuple[str, tuple[int, int, float, float]] | Nonec                   t          | j                  dk    rd S | j        rd S | j        d         \  }}}}d}| j        }|d         dk    r|dv r|| _        |df}|rt          | j        d         |d         z  | j        d         |d         z            }dD ]
}	||	k    r n|d         |d         |d         |d         z
  |	z   dz
  |	z  |d         z   |d         |d         z
  |	z   dz
  |	z  |d         z   f}| j        d         |	z   dz
  |	z  | j        d         |	z   dz
  |	z  f| _        |	}||||fg| _        |df| _        dd|d         |z  |d         |z  f}
| j        |
fS )	Nr   r   r`   )r_   YCbCrr   )r'   r!   r   r   r   r^   )rv   r   decoderconfigrW   rt   minrp   r   )r   r   rW   deoascaleoriginal_sizerR   boxs              r   draftzJpegImageFile.draft  s    ty>>Q4  	4Yq\
1a	Q45==T^33DJbA 		!Q/1a1HIIE!  A::E  !!1!q1$*QqT11!q1$*QqT1	A  9Q<!+a/A5	!q8H18LQR7RSDJEAq\N	#QZ!]1%-}Q/?%/GHy#~r   r   c                   t          j                    \  }}t          j        |           t          j                            | j                  rt          j        dd|| j        g           n7	 t          j	        |           n# t          $ r Y nw xY wd}t          |          	 t          j        |          5 }|                                 |j        | _        d d d            n# 1 swxY w Y   	 t          j	        |           n:# t          $ r Y n.w xY w# 	 t          j	        |           w # t          $ r Y w w xY wxY w| j        j        | _        | j        j        | _        g | _        d S )Ndjpeg-outfilezInvalid Filename)tempfilemkstemposclosepathexistsfilename
subprocess
check_callunlinkOSError
ValueErrorr   openloadimr   rt   rW   rp   r   )r   fr  rz   _ims        r   
load_djpegzJpegImageFile.load_djpeg  s    "$$4
7>>$-(( 		"!7Jdm"LMMMM	$    %CS//!	D!! !S


&! ! ! ! ! ! ! ! ! ! ! ! ! ! !	$   	$    W\
W\
			sx   .B 
BB%D 9!C&D &C**D -C*.D 2D 
DDD>D.-D>.
D;8D>:D;;D>dict[str, Any] | Nonec                     t          |           S N)_getexifr   s    r   r  zJpegImageFile._getexif  s    ~~r   c                   d| j         v s	d| j         vrd S 	 |                                 }|d         }|d         }	 t          |d                   |d         z  }n# t          $ r |}Y nw xY wt	          j        |          rd}t          |          |dk    r|d	z  }||f| j         d<   d S # t          j        t          t          t          t          t          f$ r d
| j         d<   Y d S w xY w)Nr)   r.   i(  i  r   r   zDPI is not a numberr^   gRQ@)H   r  )rF   getexiffloat	TypeErrormathisnanr  rO   rP   KeyErrorrr   ZeroDivisionError)r   r.   resolution_unitx_resolutionr)   rz   s         r   r   z!JpegImageFile._read_dpi_from_exif  s   DIty!8!8F	&<<>>D"6lO<L#LO,,|A> # # #"#z# &+ oo%!##t"CxDIeL
 	& 	& 	&  &DIe	&s4   $B* A B* A)&B* (A))?B* *8C&%C&c                     t          |           S r  )_getmpr  s    r   r%  zJpegImageFile._getmp  s    d||r   N)r   r   r   r   )r   r   rW   r   r   r   )r   r   r   r  )__name__
__module____qualname__formatformat_descriptionr   r   r   r  r  r   r%  rj   r   r   r   r   G  s        F+3# 3# 3#j    $ $ $ $L   >   & & & &:    r   r  c                d    d| j         vrd S |                                                                 S )Nr.   )rF   r  _get_merged_dictr  s    r   r  r    s.    TYt<<>>**,,,r   c           	        	 | j         d         }n# t          $ r Y d S w xY wt          j        |          }|                    d          }|d d         dk    rdnd}ddlm} 	 |                    |          }|                    |j	                   |
                    |           t          |          }n$# t          $ r}d	}	t          |	          |d }~ww xY w	 |d
         }
n$# t          $ r}d}	t          |	          |d }~ww xY wg }	 |d         }t          d|
          D ]}t          j        | d||dz            }d}t          t#          ||                    }t%          |d         dz            t%          |d         dz            t%          |d         dz            |d         dz  dz	  |d         dz  dz	  |d         dz  d}|d         dk    rd|d<   nd}	t          |	          ddd d!d"d#d$d%}|                    |d&         d'          |d&<   ||d<   |                    |           ||d<   n$# t          $ r}d(}	t          |	          |d }~ww xY w|S ))NrA   r'   r!   s   MM *><r   )TiffImagePluginz)malformed MP Index (unreadable directory)  z(malformed MP Index (no number of images)i  r   LLLHHro   )	AttributeSize
DataOffsetEntryNo1EntryNo2r4  l        i   @i    i      i      i )DependentParentImageFlagDependentChildImageFlagRepresentativeImageFlagReservedImageDataFormatMPTyper?  r   z!unsupported picture format in MPO	Undefinedz Large Thumbnail (VGA Equivalent)z$Large Thumbnail (Full HD Equivalent)zMulti-Frame Image (Panorama)zMulti-Frame Image: (Disparity)z Multi-Frame Image: (Multi-Angle)zBaseline MP Primary Image)r   i  i  i  i  i  i   r@  Unknownz!malformed MP Index (bad MP Entry))rF   r   ioBytesIOr   r   r1  ImageFileDirectory_v2seeknextr  dictrH   rr   rx   rO   unpack_fromzipr   getrE   )r   rX   file_contentshead
endiannessr1  rF   rA   r   rz   quant	mpentriesrawmpentriesentrynumunpackedentrylabelsmpentrympentryattr	mptypemaps                      r   r%  r%    s   y   ttJt$$Ma  DRaR$777SJ!!!!!!&44T::49%%%		-   $ZZ & & &9#A%&&6
 & & &8#A%& I$&&za 	& 	&H".$$$lHrM M QF3v}5566G,01E1Q,R,R+/0D0P+Q+Q+/0D0P+Q+Q$[1W="D$+K$8G$D#K!+.; K ,-2217-..9!#&&&%<@8:<5 I %.MM+h2G$S$SK!#.GK W%%%%6

 & & &1#A%& IsV    
#AB7 7
CCCC% %
D/DDD/H< <
IIIr_   r`   r   r   )1r_   r`   RGBXra   r   )@r   r   r"   r-   r7   r   r9     r   r!   r&   rh   ro      r/   *   r^   r'   r4            )   +   	   r?      r:     (   ,   5   r(             '   -   4   6         !   &   .   3   7   <      "   %   /   2   8   ;   =   #   $   0   1   9   :   >   ?   r   ))r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   c                    t          | d          r	| j        dv rdS | j        d         dd         | j        d         dd         z   | j        d         dd         z   }t                              |d          S )Nrs   )r   r!   r   r   r^   r   )r   rs   ry   	samplingsrK  )r  samplings     r   get_samplingr  k  sw     2x   BI$7$7rx{1Q3"(1+ac"22RXa[15EEH==2&&&r   r  Image.Imager   	IO[bytes]r  str | bytesc                
   | j         dk    s| j        dk    rd}t          |          	 t          | j                 }n-# t
          $ r }d| j         d}t          |          |d }~ww xY w| j        }d |                    dd          D             }|                    dd	          }|                    d
d	          }	|                    d          }
|dk    rd	}d}	d}
n|t          v r;t          |         }d	}|                    d
d	          }	|                    d          }
nt          |t                    sd}t          |          |	t          v r!t          |	                             d
d	          }	t          |
t                    r)|
t          v r t          |
                             d          }
|	dk    rd}	nL|	dk    rd}	nC|	dk    rd}	n:|	dk    rd}	n1|	dk    r+| j        dk    rd}t          |          t          |           }	d }|
dk    r-| j        dk    rd}t          |          t          | dd           }
 ||
          }
|                    dd          }d}|                    d          }|rd}||z
  }g }|r)|                    |d |                    ||d          }|)d}|D ]d}t#          d|z   t%          |          z             }|d|z   dz   t'          |          z   t'          t%          |                    z   |z   z  }|dz  }e|                    d| j                            d                    }|                    d d!          p|                    d"d!          }|                    d#d!          }|                    d$d          }t          |t*          j                  r|                                }t%          |          |k    rd%}t          |          |||                    d&d          ||                    d'd!          |                    d(d          |d         |d         |	|                    d)d          |                    d*d          |
|||f| _        d}|s|r| j        d+k    rd,| j        d         z  | j        d         z  }nF|d-k    s|d	k    rd| j        d         z  | j        d         z  }n| j        d         | j        d         z  }|r|t%          |          d.z   z  }|r|t%          |          dz   z  }n1t5          |t%          |          d.z   t%          |          dz             }t7          j        | |d/d| j        z   d|fg|           d S )0Nr   z cannot write empty image as JPEGzcannot write mode z as JPEGc                ,    g | ]}t          |          S rj   )round)rk   xs     r   rm   z_save.<locals>.<listcomp>  s    
5
5
5588
5
5
5r   r)   r   qualityr  subsamplingqtableskeepr   zInvalid quality settingz4:4:4z4:2:2r   z4:2:0r   z4:1:1r   z3Cannot use 'keep' when original image is not a JPEGc                      S t           t                    rn	 d                                  D             fdt          dt	                    d          D              n$# t
          $ r}d}t          |          |d }~ww xY wt           t          t          t          f          rt           t                    r) fdt          t	                               D              n$t           t                    rt                      dt	                     cxk     rdk     sn d}t          |          t                     D ]u\  }}	 t	          |          dk    rd}t          |          t          j        d	|          }t          |           |<   R# t          $ r}d}t          |          |d }~ww xY w S d S )
Nc                    g | ]B}|                     d d          d                                          D ]}t          |          CS )#r   r   )rK   r   )rk   linenums      r   rm   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  sd       #zz#q11!4::<<   HH   r   c                *    g | ]}||d z            S )r   rj   )rk   rR   liness     r   rm   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  s&    OOO5QV,OOOr   r   r   zInvalid quantization tablec                (    g | ]}|v |         S rj   rj   )rk   keyr  s     r   rm   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  s)       %(3'>>GCL>>>r   r"   z$None or too many quantization tablesr   )
isinstancestr
splitlinesrx   rv   r  tuplelistrH  	enumerater  r   )r  r   rz   idxtabler  s   `    @r   validate_qtablesz_save.<locals>.validate_qtables  s   ?Ngs## 	P
P  ' 2 2 4 4   POOOeAs5zz26N6NOOO	  - - -2 oo1,-
 gtT233 	'4(( (   ,1#g,,,?,?   GU++ (w--G((((q((((< oo%'00 
/ 
/
U	/5zzR'':'nn,!KU33E
 $(;;GCLL	 ! 1 1 16C$S//q01
 N+	 	s/   A& &
B0BB9F
F>'F99F>extrar   r   rn   r7   s   r5   r[   rf   Frg   optimizer.   zEXIF data is too longsmoothkeep_rgb
streamtyperestart_marker_blocksrestart_marker_rowsra   r!   _   r"   r   )widthheightr  RAWMODEr   r   r  encoderinforK  r   r  r   r  r*  r  getattrrE   o16rv   r   rF   r   ExiftobytesencoderconfigrW   maxr   _save)r  r   r  rz   r   r   rF   r)   r  r  r  presetr  r  MAX_BYTES_IN_MARKERrn   ICC_OVERHEAD_LENMAX_DATA_BYTES_IN_MARKERmarkersr|   r   rW   r[   rf   r  r.   bufsizes                              r   r  r  y  s   	x1}}	Q0oo""'" " " "427444cll!" >D
5
5TXXeV44
5
5
5Chhy"%%G((="--Khhy!!G&	G		!jj33**^,,%% ;'oo'!!!+.22="EEKgs## 	;7(:(:g&**>::Gg									 			9GCS//!"2&&$ $ $L &9GCS//!"nd33w''GHHWc""E((=))K #69I#I  	ANN;'@(@'@ABBB%&>&?&?@K  	A  
	 
	Fq++c&kk9::D"# Q%% S\\""	#
 E FAAhhy"'++i"8"899G
 ((=%00RDHH]E4R4RKxx
E**H88FC  D$
## ||~~
4yy&&&%oo 	1U##q!!AA(!,,&**B, G >; >7f"'!*nrwqz1GG]]gmm"'!*nrwqz1GGgaj271:-G 	%s4yy1}$G 	&s5zzA~%G gs4yy1}c%jj1n==OBffrw&67CDgNNNNNs   < 
A&A!!A&c                    |                                  }t          j        dd||g           	 t          j        |           d S # t
          $ r Y d S w xY w)Ncjpegr  )_dumpr	  r
  r  r  r  )r  r   r  r  s       r   _save_cjpegr  0  sf    xxzzH7J(CDDD
	(   s   A 
AAc                D   t          | |          }	 |                                }|d         dk    r7|j        D ]\  }}|dk    rd|v r|c S ddlm} |                    ||          }n6# t          t          f$ r Y n#t          $ r t          j
        d           Y nw xY w|S )Nr2  r   r   s    hdrgm:Version=")MpoImageFilezTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)r   r%  rD   MpoImagePluginr  adoptr  rQ   rr   warningswarn)r   r  r  mpheadersegmentcontentr  s          r   jpeg_factoryr  <  s    	r8	$	$B
99;;E?Q$&J   f$$)<)G)GIII444444 ##B11Bz"    
 
 
.	
 	
 	
 	
 	


 Is   9A* A* *B=BB)z.jfifz.jpez.jpgz.jpegz
image/jpeg)r   r   r   r   r   r   )r   r   r   r   r&  )r  r  r   r  r  r  r   r   )NN)1
__future__r   r   rC  r  r  rO   r	  r   r  r  typingr   r   r   r   r   _binaryr	   r   r
   rN   r   r   r  JpegPresetsr   r   rY   r\   r~   r   r   r   r   r  r%  r  r   r  r  r  r  r  register_openr*  register_saveregister_extensionsregister_mimerj   r   r   <module>r     s!  D # " " " " "  				  				      



                   ! ! ! ! ! ! ! ! ! ! ! !       ! ! ! ! ! !            % % % %
c7 c7 c7L$ $ $ $-? -? -? -?`   6@

V^S)@

V.4@
 V&,@
 V'-	@

 U*D1@
 V2C8@
 V3S9@
 V+S1@
 &@
 V3S9@
 W,c2@
 W137@
 U;TB@
 W8#>@
 W93?@
  W137!@
" '#@
 @
$ '%@
& ''@
( ')@
* '+@
, '-@
. '/@
0 '1@
2 +3@
4 )5@
6 UOT*7@
8 U/59@
: U,d3;@
< U-t4=@
> U5s;?@
@ U0$7A@
B V,c2C@
D V,c2E@
 @
 @
F V,c2G@
H V,c2I@
J V,c2K@
L V,c2M@
N V,c2O@
P V,c2Q@
R V,c2S@
T V,c2U@
V W.4W@
X W.4Y@
Z W.4[@
\ W.4]@
^ W.4_@
` W.4a@
b )c@
d )e@
f )g@
 @
h *))))))++++Is#@
 @
 @
F) ) ) )o o o o oI' o o od- - - -I I I` 
	 	  	' ' 'tO tO tO tOn      8  M(, @ @ @  M(% 0 0 0  -.0R0R0R S S S  M(, 7 7 7 7 7r   