o
    ÒèFhŠs  ã                   @  s¸  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 ddlmZ ddlmZ ddlmZ dd	lmZ d
d„ Zdd„ Zdd„ Zdd„ Zdd„ 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-“d.d/d0ef“d1d2d3ef“d4d5d6ef“d7d8d9ef“d:d;d<ef“d=d>d?ef“d@dAdBef“dCdD“i dEdF“dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“dSdT“dUdV“dWdXdYef“dZdd[ef“d\d]d^ef“d_d`daef“dbdcddef“dedfdgef“dhdidjef“dkdldmef“¥i dndodpef“dqdrdsef“dtdudvef“dwdxdyef“dzd{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“d”ef“d•d–d—ef“d˜d™“dšd›“dœd�“¥dždŸd d¡d¢d£d¤d¥d¦d§d¨dd©efdªœ¥Zd«d¬„ ZG d­d®„ d®ejƒZd¯d°„ Z d±d²„ Z!d³d³d´d´dµd¶d·œZ"d¸Z#d dd¹dºœZ$d»d¼„ Z%d½d¾„ Z&d¿dÀ„ Z'dÅdÁdÂ„Z(e )ej*e(e¡ e +ej*e&¡ e ,ej*g dÃ¢¡ e -ej*dÄ¡ dS )Æé    )ÚannotationsNé   )ÚImageÚ	ImageFile)Úi16be)Úi32be)Úo8)Úo16be)Úpresetsc                 C  s&   t | j d¡ƒd }t | j|¡ d S )Né   )Úi16ÚfpÚreadr   Ú
_safe_read)ÚselfÚmarkerÚn© r   úL/var/www/html/loop/nvenv/lib/python3.10/site-packages/PIL/JpegImagePlugin.pyÚSkip9   s   r   c                 C  s.  t | j d¡ƒd }t | j|¡}d|d@  }|| j|< | j ||f¡ |dkrr|d d… dkrrt |dƒ | jd< }t	|d	ƒ| jd
< z|d }t |dƒt |dƒf}W n
 t
y\   Y �nOw |dkrf|| jd< || jd< || jd< �n9|dkr£|d d… dkr£d| jv r’| jd  |dd … 7  < �n|| jd< | j ¡ | d | _�n|dkrµ|d d… dkrµ|| jd< nö|dkrÈ|d d… dkrÈ| j |¡ nã|dk�r[|d d… dk�r[d}| j di ¡}	|||d … dk�rZzZ|d7 }t ||ƒ}
|d7 }|| }|d| 7 }||d@ 7 }t||ƒ}|d7 }|||| … }|
d k�r5t|d!ƒd" t |dƒt|dƒd" t |dƒd#œ}||	|
< ||7 }||d@ 7 }W n tj�yO   Y nw |||d … dksênP|d$k�rˆ|d d… d%k�rˆt |dƒ| jd&< z|d' }W n
 t�y�   Y n*w || jd(< n#|dk�r«|d d… d)k�r«|dd … | jd*< | j ¡ | d | jd+< d| jv�rd| jv �rzD|  ¡ }|d, }|d- }zt|d! ƒ|d  }W n t�yÜ   |}Y nw t |¡�réd.}t|ƒ‚|d/k�rò|d09 }||f| jd< W d S  tjtttttf�y   d1| jd< Y d S w d S d S )2Nr   zAPP%dé   éàÿ  é   s   JFIFé   Újfifé   Újfif_versioné   é   é
   r   ÚdpiÚ	jfif_unitÚjfif_densityéáÿ  é   s   Exif  Úexiféâÿ  s   FPXR Úflashpixé   ó   ICC_PROFILE éíÿ  é   s   Photoshop 3.0 Ú	photoshops   8BIMií  r   i   )ÚXResolutionÚDisplayedUnitsXÚYResolutionÚDisplayedUnitsYéîÿ  s   AdobeÚadobeé   Úadobe_transforms   MPF ÚmpÚmpoffseti(  i  zDPI is not a numberé   gR¸…ëQ@)éH   r8   )r   r   r   r   r   ÚappÚapplistÚappendÚinfoÚdivmodÚ	ExceptionÚtellÚ_exif_offsetÚicclistÚ
setdefaultÚi32ÚstructÚerrorÚ
IndexErrorÚgetexifÚfloatÚ	TypeErrorÚmathÚisnanÚ
ValueErrorÚKeyErrorÚSyntaxErrorÚZeroDivisionError)r   r   r   Úsr9   Úversionr!   r"   Úoffsetr,   ÚcodeÚname_lenÚsizeÚdatar4   r%   Úresolution_unitÚx_resolutionr    Úmsgr   r   r   ÚAPP>   sº   
ÿ






üÿç€ÿÿ
úóðrZ   c                 C  sJ   t | j d¡ƒd }t | j|¡}|| jd< || jd< | j d|f¡ d S )Nr   ÚcommentÚCOM)	r   r   r   r   r   r<   r9   r:   r;   )r   r   r   rP   r   r   r   r\   Â   s
   

r\   c           	      C  s‚  t | j d¡ƒd }t | j|¡}t |dƒt |dƒf| _|d | _| jdkr1d| j› d�}t|ƒ‚|d | _| jdkr?d	| _	n| jdkrHd
| _	n| jdkrQd| _	nd| j› d�}t|ƒ‚|dv rjd | j
d< | j
d< | jr–| j ¡  | jd d t| jƒkrŒdd„ | jD ƒ}d |¡}nd }|| j
d< g | _tdt|ƒdƒD ] }|||d … }| j |d |d d |d d@ |d f¡ qžd S )Nr   r7   r   r   r   zcannot handle z-bit layersr   ÚLÚRGBr   ÚCMYKz-layer images)éÂÿ  éÆÿ  éÊÿ  éÎÿ  ÚprogressiveÚprogressioné   c                 S  s   g | ]}|d d… ‘qS )r+   Nr   )Ú.0Úpr   r   r   Ú
<listcomp>ð   s    zSOF.<locals>.<listcomp>ó    Úicc_profiler$   é   r   )r   r   r   r   r   Ú_sizeÚbitsrN   ÚlayersÚ_moder<   rA   ÚsortÚlenÚjoinÚrangeÚlayerr;   )	r   r   r   rP   rY   Úprofilerk   ÚiÚtr   r   r   ÚSOFÍ   s<   







.ýry   c                   sÜ   t | j d¡ƒd }t | j|¡}t|ƒrl|d }|d dkr!dnd}d|d  }t|ƒ|k r5d}t|ƒ‚t |dkr=dnd|d|… ¡‰ tj	d	krR|dkrRˆ  
¡  ‡ fd
d„tD ƒ| j|d@ < ||d … }t|ƒsd S d S )Nr   r   rl   r   é@   zbad quantization table markerÚBÚHÚlittlec                   s   g | ]}ˆ | ‘qS r   r   )rg   rw   ©rV   r   r   ri     ó    zDQT.<locals>.<listcomp>r   )r   r   r   r   r   rr   rN   ÚarrayÚsysÚ	byteorderÚbyteswapÚzigzag_indexÚquantization)r   r   r   rP   ÚvÚ	precisionÚ	qt_lengthrY   r   r~   r   ÚDQTý   s    õr‰   iÀÿ  ÚSOF0zBaseline DCTiÁÿ  ÚSOF1zExtended Sequential DCTr`   ÚSOF2zProgressive DCTiÃÿ  ÚSOF3zSpatial losslessiÄÿ  ÚDHTzDefine Huffman tableiÅÿ  ÚSOF5zDifferential sequential DCTra   ÚSOF6zDifferential progressive DCTiÇÿ  ÚSOF7zDifferential spatialiÈÿ  )ÚJPGÚ	ExtensionNiÉÿ  ÚSOF9zExtended sequential DCT (AC)rb   ÚSOF10zProgressive DCT (AC)iËÿ  ÚSOF11zSpatial lossless DCT (AC)iÌÿ  ÚDACz%Define arithmetic coding conditioningiÍÿ  ÚSOF13z Differential sequential DCT (AC)rc   Ú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Ûÿ  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 1r&   Ú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 12r*   ÚAPP13zApplication segment 13r1   Ú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 13NÚComment)ióÿ  iôÿ  iõÿ  iöÿ  i÷ÿ  iøÿ  iùÿ  iúÿ  iûÿ  iüÿ  éýÿ  iþÿ  c                 C  s   | d d… dkS )Nr7   s   ÿØÿr   )Úprefixr   r   r   Ú_accept[  s   rÌ   c                   @  sL   e Zd Zd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S )ÚJpegImageFileÚJPEGzJPEG (ISO 10918)c                 C  s6  | j  d¡}t|ƒsd}t|ƒ‚d}d | _| _g | _i | _i | _i | _	i | _
g | _g | _	 |d }|dkrC|| j  d¡ }t|ƒ}n| j  d¡}q-|tv r‚t| \}}}|d ur^|| |ƒ |dkr{| j}| jd	krld
}dd| j d|dffg| _d S | j  d¡}n|dv r‰d}n|dkr”| j  d¡}nd}t|ƒ‚q.)Nr7   znot a JPEG fileó   ÿr   Téÿ   r   r¥   r_   úCMYK;IÚjpeg©r   r   Ú >   éÿÿ  r   i ÿ  zno marker found)r   r   rÌ   rN   rn   ro   ru   Ú
huffman_dcÚ
huffman_acr…   r9   r:   rA   r   ÚMARKERÚmoderU   Útile)r   rP   rY   rw   ÚnameÚdescriptionÚhandlerÚrawmoder   r   r   Ú_openh  sL   


ãzJpegImageFile._openc                 C  s.   | 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   Ú
read_bytesrP   r   r   r   Ú	load_read›  s
   zJpegImageFile.load_readc                 C  s`  t | jƒdkr	d S | jrd S | jd \}}}}d}| j}|d dkr-|dv r-|| _|df}|r�t| jd |d  | jd |d  ƒ}dD ]}	||	krL nqD|d |d |d |d  |	 d |	 |d  |d |d  |	 d |	 |d  f}| jd |	 d |	 | jd |	 d |	 f| _|	}||||fg| _|df| _dd|d | |d | f}
| j|
fS )	Nr   r   r^   )r]   ÚYCbCrrÔ   )r   r   r   r   r   r7   )rr   rÚ   ÚdecoderconfigrU   rp   Úminrm   rÙ   )r   rÙ   rU   ÚdÚeÚoÚaÚscaleÚoriginal_sizerP   Úboxr   r   r   Údraft«  s6   &ÿ""ü.

zJpegImageFile.draftc                 C  s  t  ¡ \}}t |¡ tj | j¡rt dd|| jg¡ nzt 	|¡ W n	 t
y-   Y nw d}t|ƒ‚z/t |¡�}| ¡  |j| _W d   ƒ n1 sMw   Y  W zt 	|¡ W n t
yc   Y nw zt 	|¡ W w  t
yt   Y w w | jj| _| jj| _g | _d S )NÚdjpegú-outfilezInvalid Filename)ÚtempfileÚmkstempÚosÚcloseÚpathÚexistsÚfilenameÚ
subprocessÚ
check_callÚunlinkÚOSErrorrL   r   ÚopenÚloadÚimrÙ   rp   rU   rm   rÚ   )r   Úfrö   rY   Ú_imr   r   r   Ú
load_djpegÏ  s<   
ÿ
þ€ÿþÿ


zJpegImageFile.load_djpegc                 C  ó   t | ƒS ©N)Ú_getexif©r   r   r   r   r  î  ó   zJpegImageFile._getexifc                 C  r  r  )Ú_getmpr  r   r   r   r  ñ  r  zJpegImageFile._getmpc                 C  sH   | j D ]\}}|dkr!| d¡dd… \}}|dkr!|  |¡  S qi S )z™
        Returns a dictionary containing the XMP tags.
        Requires defusedxml to be installed.

        :returns: XMP tags in a dictionary.
        r¬   ó    Nr   s   http://ns.adobe.com/xap/1.0/)r:   ÚsplitÚ_getxmp)r   ÚsegmentÚcontentr   Úxmp_tagsr   r   r   Úgetxmpô  s   €zJpegImageFile.getxmpN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionrß   rä   rï   r  r  r  r  r   r   r   r   rÍ   d  s    3$rÍ   c                 C  s   d| j vrd S |  ¡  ¡ S )Nr%   )r<   rG   Ú_get_merged_dictr  r   r   r   r    s   
r  c              
   C  s  z| j d }W n
 ty   Y d S w t |¡}| d¡}|d d… dkr&dnd}ddlm} z| |¡}| |j	¡ | 
|¡ t|ƒ}W n tyW } zd	}	t|	ƒ|‚d }~ww z|d
 }
W n tyq } zd}	t|	ƒ|‚d }~ww g }z�|d }td|
ƒD ]p}t |› d�||d ¡}d}tt||ƒƒ}t|d d@ ƒt|d d@ ƒt|d d@ ƒ|d d@ d? |d d@ d? |d d@ dœ}|d dkrËd|d< nd}	t|	ƒ‚ddd d!d"d#d$d%œ}| |d& d'¡|d&< ||d< | |¡ q~||d< W |S  t�y	 } zd(}	t|	ƒ|‚d }~ww ))Nr5   r   r   s   MM *ú>ú<r   )ÚTiffImagePluginz)malformed MP Index (unreadable directory)é°  z(malformed MP Index (no number of images)i°  r   ÚLLLHHrl   )Ú	AttributeÚSizeÚ
DataOffsetÚEntryNo1ÚEntryNo2r  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))r<   rM   ÚioÚBytesIOr   rÔ   r  ÚImageFileDirectory_v2ÚseekÚnextrþ   Údictr>   rN   rt   rD   Úunpack_fromÚzipÚboolÚgetr;   )r   rV   Úfile_contentsÚheadÚ
endiannessr  r<   r5   ré   rY   ÚquantÚ	mpentriesÚrawmpentriesÚentrynumÚunpackedentryÚlabelsÚmpentryÚmpentryattrÚ	mptypemapr   r   r   r  
  s€   ÿ




€þ
€þÿ
ú
ù	
ú
€þr  r]   r^   rÑ   rå   )Ú1r]   r^   ÚRGBXr_   rå   )@r   r   r   r$   r+   r   r   é   r   r   r   rf   rl   é   é   é*   r7   r   r(   é   é   é   é)   é+   é	   r3   é   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                 C  sZ   t | dƒr
| jdv rdS | jd dd… | jd dd…  | jd dd…  }t |d¡S )Nro   )r   r   éÿÿÿÿr   r   r7   r   )râ   ro   ru   Ú	samplingsr3  )rÿ   Úsamplingr   r   r   Úget_samplingv  s   6rs  c                 C  s"  | j dks
| jdkrd}t|ƒ‚zt| j }W n ty/ } zd| j› d�}t|ƒ|‚d }~ww | j}dd„ | dd¡D ƒ}| d	d
¡}| dd
¡}	| d¡}
|dkrZd
}d}	d}
n=|t	v rpt	| }d
}| dd
¡}	| d¡}
n't
|tƒs{d}t|ƒ‚|	t	v r‡t	|	  dd
¡}	t
|
tƒr—|
t	v r—t	|
  d¡}
|	dkržd}	n(|	dkr¥d}	n!|	dkr¬d}	n|	dkr³d}	n|	dkrÆ| jdkrÂd}t|ƒ‚t| ƒ}	dd„ }|
dkrß| jdkrÙd}t|ƒ‚t| dd ƒ}
||
ƒ}
| dd¡}d}| d¡}|�r9d}|| }g }|�r| |d |… ¡ ||d … }|sþd}|D ]%}td| t|ƒ ƒ}|d| d  t|ƒ tt|ƒƒ | 7 }|d7 }�q| d!| j d!¡¡}| d"d#¡�pO| d$d#¡}| d%d#¡}| d&d¡}t
|tjƒ�rg| ¡ }t|ƒ|k�rtd'}t|ƒ‚||| d(d¡|| d)d#¡| d*d¡|d |d |	| d+d¡| d,d¡|
|||f| _d}|�s¦|�rñ| jd-k�r¹d.| jd  | jd  }n!|d/k�sÃ|d
k�rÐd| jd  | jd  }n
| jd | jd  }|�rå|t|ƒd0 7 }|�rð|t|ƒd 7 }nt|t|ƒd0 t|ƒd ƒ}t | |d1d| j d|fg|¡ d S )2Nr   z cannot write empty image as JPEGzcannot write mode z as JPEGc                 S  s   g | ]}t |ƒ‘qS r   )Úround)rg   Úxr   r   r   ri   ‘  r   z_save.<locals>.<listcomp>r    rÓ   Úqualityrp  Ú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                   sV  ˆd u rˆS t ˆtƒr9zdd„ ˆ ¡ D ƒ‰ W n ty) } zd}t|ƒ|‚d }~ww ‡ fdd„tdtˆ ƒdƒD ƒ‰t ˆtttfƒr©t ˆtƒrT‡fdd„ttˆƒƒD ƒ‰n	t ˆtƒr]tˆƒ‰dtˆƒ  k ridk spn d	}t|ƒ‚t	ˆƒD ]2\}}zt|ƒdkr…d}t
|ƒ‚t d
|¡}W n t
yŸ } zd}t|ƒ|‚d }~ww t|ƒˆ|< qtˆS d S )Nc                 S  s.   g | ]}|  d d¡d   ¡ D ]}t|ƒ‘qqS )ú#r   r   )r
  Úint)rg   ÚlineÚnumr   r   r   ri   ¾  s    ýþÿz3_save.<locals>.validate_qtables.<locals>.<listcomp>zInvalid quantization tablec                   s   g | ]
}ˆ ||d  … ‘qS )rz   r   )rg   rP   )Úlinesr   r   ri   Ç  s    r   rz   c                   s   g | ]
}|ˆ v rˆ | ‘qS r   r   )rg   Úkey)rx  r   r   ri   Ê  s    r   z$None or too many quantization tablesr|   )Ú
isinstanceÚstrÚ
splitlinesrL   rt   rr   ÚtupleÚlistr/  Ú	enumeraterI   r€   )rx  ré   rY   ÚidxÚtabler   )r~  rx  r   Úvalidate_qtables¹  sJ   

þ
€þ


ÿ

€þëz_save.<locals>.validate_qtablesÚextrarj   rÊ   rk   r+   s   ÿâr)   r[   rd   Fre   Úoptimizer%   zEXIF data is too longÚsmoothÚkeep_rgbÚ
streamtypeÚrestart_marker_blocksÚrestart_marker_rowsr_   r   é_   r   rÒ   )ÚwidthÚheightrL   ÚRAWMODErÙ   rM   rü   Úencoderinfor3  r
   r€  r{  r�  r  rs  Úgetattrr;   Úo16rr   r   r<   r   ÚExifÚtobytesÚencoderconfigrU   Úmaxr   Ú_save)rÿ   r   rø   rY   rÞ   ré   r<   r    rv  rw  rx  Úpresetrˆ  r‰  ÚMAX_BYTES_IN_MARKERrk   ÚICC_OVERHEAD_LENÚMAX_DATA_BYTES_IN_MARKERÚmarkersrw   r   rU   r[   rd   rŠ  r%   Úbufsizer   r   r   r›  „  sì   
€þ


&

þÿþý
üûÿ




ñ€$r›  c                 C  s@   |   ¡ }t dd||g¡ zt |¡ W d S  ty   Y d S w )NÚcjpegrñ   )Ú_dumprù   rú   rô   rû   rü   )rÿ   r   rø   rò   r   r   r   Ú_save_cjpeg;  s   ÿr¤  c              	   C  sx   t | |ƒ}z| ¡ }|d dkrddlm} | ||¡}W |S W |S  ttfy-   Y |S  ty;   t 	d¡ Y |S w )Nr  r   )ÚMpoImageFilezTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)
rÍ   r  ÚMpoImagePluginr¥  ÚadoptrI   rF   rN   ÚwarningsÚwarn)r   rø   rÿ   Úmpheaderr¥  r   r   r   Újpeg_factoryG  s$   
	òøûÿûr«  )z.jfifz.jpez.jpgz.jpegz
image/jpeg)NN).Ú
__future__r   r€   r*  rJ   rô   rD   rù   r�   rò   r¨  rÔ   r   r   Ú_binaryr   r   r   rC   r   r	   r–  ÚJpegPresetsr
   r   rZ   r\   ry   r‰   rØ   rÌ   rÍ   r  r  r“  r„   rq  rs  r›  r¤  r«  Úregister_openr  Úregister_saveÚregister_extensionsÚregister_mimer   r   r   r   Ú<module>   sH  ! 0
ÿ
þ
ý
ü
û
ú
ù
ø	÷

ö
õ
ô
ó
ò
ñ
ðïîíìëêéèçæ
å
ä
ã
â
á
 à
!ß
"Þ
#Ý
$Ü
%Û
&Ú
'Ù
(Ø
)×
*Ö
+Õ
,Ô
-Ó
.Ò
/Ñ
0Ð1Ï2Î3Í4ÁC	 !Pú
ý 8
