Ë
    z¾jŠ- ã            #      óê  — 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	m
Z
 d dlmZ d dlmZmZ d dlmZmZmZ ddlmZmZmZmZmZmZ dd	lmZ dd
lmZ ddlm Z  ddlm!Z!  ejD                  e#«      Z$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8d Z9d!Z:d"Z;d#Z<d$Z=d%Z>d&Z?d'Z@d(ZAd)ZBd*ZCd+ZDd,ZEd-ZFd.ZGd/ZHd0ZId1ZJd2ZKd3ZLd4ZMd5ZNd6ZOd7ZPd8ZQd9ZRd:ZSi dd;“d<d=“d>d?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“dNdO“dPdQ“dRdS“dTdU“dVdW“dXdY“dZd[“ZTeTj«                  «       D � �ci c]  \  } }|| “Œ
 c}} ZVi e)d d\dd\d]fd^“e*d d\dd\d]fd^“e)d d\d<d\d]fd_“e*d d\d<d\d]fd_“e)dd\dd\d]fd`“e*dd\dd\d]fd`“e)dd\d<d\d]fda“e*dd\d<d\d]fda“e)d d\ddbd]fdc“e*d d\ddbd]fdc“e)d d\d<dbd]fdd“e*d d\d<dbd]fdd“e)dd\ddbd]fde“e*dd\ddbd]fde“e)dd\d<dbd]fdf“e*dd\d<dbd]fdf“e)d d\ddgd]fdh“i e*d d\ddgd]fdh“e)d d\d<dgd]fdi“e*d d\d<dgd]fdi“e)dd\ddgd]fdj“e*dd\ddgd]fdj“e)dd\d<dgd]fdk“e*dd\d<dgd]fdk“e)d d\ddld]fdm“e*d d\ddld]fdm“e)d d\d<dld]fdn“e*d d\d<dld]fdn“e)dd\ddld]fdo“e*dd\ddld]fdo“e)ddbddld]fdo“e*ddbddld]fdo“e)dd\d<dld]fdp“e*dd\d<dld]fdp“¥i e)dd\ddqd]fdr“e)d d\ddsd]fdt“e)dd\ddsd]fdt“e*dd\ddsd]fdu“e)dd\d<dsd]fdv“e)ddbddsd]fdw“e*ddbddsd]fdx“e)d dyddzd]fd{“e*d dyddzd]fd|“e)dd\ddzd]fd}“e)ddbddzd]fd~“e*ddbddzd]fd“e)ddyddzd]fd{“e*ddyddzd]fd|“e)dd\dd€dbfd�“e*dd\dd€dbfd�“e)d<d\dd‚d]fdƒ“¥i e*d<d\dd‚d]fdƒ“e)d<d\d<d‚d]fd„“e*d<d\d<d‚d]fd„“e)d<d\dd…d]fd†“e*d<d\dd…d]fd†“e)d<d\dd…d‡fdˆ“e*d<d\dd…d‡fdˆ“e)d<d\dd‰dŠfd‹“e*d<d\dd‰dŠfd‹“e)d<d\ddŒd�fdŽ“e*d<d\ddŒd�fdŽ“e)d<d\dd…d\fd�“e*d<d\dd…d\fd�“e)d<d\dd‰d�fd‘“e*d<d\dd‰d�fd‘“e)d<d\ddŒd’fd““e*d<d\ddŒd’fd““¥i e)d<d\dd…dbfd†“e*d<d\dd…dbfd†“e)d<d\dd‰d”fd•“e*d<d\dd‰d”fd•“e)d<d\ddŒd–fd—“e*d<d\ddŒd–fd—“e)d<d\dd…d˜fd†“e*d<d\dd…d˜fd†“e)d<d\dd™d]fdš“e*d<d\dd™d]fd›“e)d<d\ddœd]fd�“e*d<d\ddœd]fdž“e)d<d\ddœd‡fdŸ“e*d<d\ddœd‡fd “e)d<d\ddœd\fd¡“e*d<d\ddœd\fd¢“e)d<d\ddœdbfd�“¥i e*d<d\ddœdbfdž“e)d>d\dd\d]fd£“e*d>d\dd\d]fd£“e)d>d\d<d\d]fd¤“e*d>d\d<d\d]fd¤“e)d>d\ddbd]fd¥“e*d>d\ddbd]fd¥“e)d>d\d<dbd]fd¦“e*d>d\d<dbd]fd¦“e)d>d\ddgd]fd§“e*d>d\ddgd]fd§“e)d>d\d<dgd]fd¨“e*d>d\d<dgd]fd¨“e)d>d\ddld]fd©“e*d>d\ddld]fd©“e)d>d\dd€dbfdª“e*d>d\dd€dbfdª“¥e)d>d\d<dld]fd«e*d>d\d<dld]fd«e)dBd\dd…d]fd¬e*dBd\dd…d]fd¬e)dBd\dd‰d‡fd­e*dBd\dd‰d‡fd­e)dBd\ddŒdŠfd®e*dBd\ddŒdŠfd®e)dBd\ddœd]fd¯e)dDd\ddld]fdoe*dDd\ddld]fdoe)dDd\dd‚d]fd°e*dDd\dd‚d]fd°e)dHd\dd‚d]fd±e*dHd\dd‚d]fd±i¥ZW eXd²„ eWD «       «      ZYg d³¢ZZd´„ Z[dµ„ Z\d¶„ Z]i Z^i Z_d·„ Z` G d¸„ d¹e«      Zadº„ Zbd»„ Zcd¼„ Zdere
eeef   Zfne
Zf G d½„ d¾ef«      Zge^eg_^        e_eg__         e!jª                  «       D ]:  \  ZhZieijÕ                  d¿dÀ«      Zi ekegdÁeiz   e^eh   d   «        ekegdÂeiz   e_eh   «       Œ< [^[_[h[i G dÃ„ dÄeg«      ZlelZm G dÅ„ dÆej.                  «      Zni dÇdÇe)ddd\df“dÈdÈe)dddldf“dÉdÉe)ddd€d<f“dÊdÊe)d>ddldf“dËdËe)d>dd€d<f“dÌdÍe)dd<dzdf“dÎdÎe)dddsdf“dÏdÏe)dd<dsdf“dÐdÑe)dd>dzdf“dÒdÒe)d<dd‚df“dÓdÓe)d<dd…d f“dÔdÔe)d<dd…d<f“dÕdÕe)dBdd…df“dÖdÖe)dDdd‚df“d×d×e)dHdd‚df“dØdØe*dd<dzdf“dÙdÙe*dddsdf“dÚe*dd<dsdfdÛe*dd>dzdfdÜœ¥ZodÝ„ Zp G dÞ„ dß«      Zqdà„ Zr ejæ                  enjè                  ene[«        ejê                  enjè                  ep«        ejì                  enjè                  er«        ejî                  enjè                  dádâg«        ejð                  enjè                  dã«       yc c}} w )äé    )ÚannotationsN)ÚMutableMapping)ÚFraction)ÚNumberÚRational)ÚTYPE_CHECKINGÚAnyÚCallableé   )ÚExifTagsÚImageÚ	ImageFileÚImageOpsÚImagePaletteÚTiffTags)Úi16be)Úi32be)Úo8©ÚTYPESFTé   s   IIs   MMéÿ   é   i  i  i  i  i
  i  é  i  i  i  i  i  i  i(  i-  i1  i2  i;  i=  i@  iB  iC  éD  iE  iJ  iR  iS  i[  i  i  i˜‚  i»ƒ  iI†  is‡  ii‡  i¼  i  i–Æ  i—Æ  Úrawé   Ú
tiff_ccitté   Úgroup3é   Úgroup4é   Útiff_lzwé   Ú	tiff_jpegé   Újpegé   Útiff_adobe_deflatei€  Útiff_raw_16i€  Úpackbitsi)€  Útiff_thunderscani²€  Útiff_deflateit‡  Útiff_sgilogiu‡  Útiff_sgilog24imˆ  ÚlzmaiPÃ  ÚzstdiQÃ  Úwebp©r   © )Ú1z1;I)r6   z1;IR)r6   r6   )r6   z1;R)r   )ÚLzL;2I)r7   zL;2IR)r7   zL;2)r7   zL;2R)r!   )r7   zL;4I)r7   zL;4IR)r7   zL;4)r7   zL;4R)r)   )r7   zL;I)r7   zL;IR)r7   r7   )r7   zL;R)é   )úI;16zI;12)é   )r9   r9   )úI;16Br;   )r9   zI;16R)ÚIúI;16S)r<   úI;16BS)r   )é    )ÚFúF;32F)r@   úF;32BF)r<   zI;32N)r<   úI;32S)r<   úI;32BS)r)   r)   )ÚLArE   )r)   r)   r)   )ÚRGBrF   )rF   zRGB;R)r)   r)   r)   r)   )ÚRGBArG   ©r   )ÚRGBXrI   )r)   r)   r)   r)   r)   ©r   r   )rI   ÚRGBXX)r)   r)   r)   r)   r)   r)   )r   r   r   )rI   ÚRGBXXX)rG   ÚRGBa)r   r   )rG   ÚRGBaX)r   r   r   )rG   ÚRGBaXX)r   r   )rG   ÚRGBAX)r   r   r   )rG   ÚRGBAXX)iç  )r:   r:   r:   )rF   zRGB;16L)rF   zRGB;16B)r:   r:   r:   r:   )rG   zRGBA;16L)rG   zRGBA;16B)rI   zRGBX;16L)rI   zRGBX;16B)rG   zRGBa;16L)rG   zRGBa;16B)ÚPzP;1)rR   zP;1R)rR   zP;2)rR   zP;2R)rR   zP;4)rR   zP;4R)rR   rR   )ÚPArS   )rR   zP;R)ÚCMYKrT   )rT   ÚCMYKX)rT   ÚCMYKXX)rT   zCMYK;16L)rF   rI   )ÚLABrW   c              #  ó8   K  — | ]  }t        |d    «      –— Œ y­w)r!   N)Úlen)Ú.0Úkey_tps     úV/var/www/html/candidateportal/venv/lib/python3.12/site-packages/PIL/TiffImagePlugin.pyú	<genexpr>r]     s   è ø€ ÒA¨Vœ#˜f Q™iŸ.ÑAùs   ‚)ó   MM *ó   II* s   MM* s   II *s   MM +s   II+ c                ó   — | d d t         v S ©Nr!   )ÚPREFIXES©Úprefixs    r\   Ú_acceptre     s   € Ø�"�1ˆ:œÐ!Ð!ó    c                óx   — t        | «      dkD  }t        |rd| z  n| «      j                  |«      }|r|d d d…   S |S )Nr   éÿÿÿÿ)ÚabsÚIFDRationalÚlimit_rational)ÚvalÚmax_valÚinvÚn_ds       r\   Ú_limit_rationalrp     sA   € Ü
ˆc‹(�Q‰,€CÜ
¡�a˜#’g¨#Ó
.×
=Ñ
=¸gÓ
F€CÙˆ3‰t�ˆt‰9Ð$ Ð$rf   c                óÖ   — t        | «      }|j                  |j                  f}t        |«      |k  rt	        | t        |«      «      }t        |«      |kD  rt        |Ž } t	        | |«      }|S ©N)r   Ú	numeratorÚdenominatorÚminrp   ri   Úmax)rl   rm   Úmin_valÚfracro   s        r\   Ú_limit_signed_rationalry   "  sa   € Ü�C‹=€DØ
�.‰.˜$×*Ñ*Ð
*€Cä
ˆ3ƒx�'ÒÜ˜c¤3 w£<Ó0ˆä
ˆ3ƒx�'ÒÜ˜ˆnˆÜ˜c 7Ó+ˆà€Jrf   c                ó   ‡ — ˆ fd„}|S )Nc                ó6   •—  t        | j                  ‰«      |Ž S rr   )ÚgetattrÚ_val)ÚselfÚargsÚops     €r\   Údelegatez_delegate.<locals>.delegate8  s   ø€ Ø%Œw�t—y‘y "Ó% tÐ,Ð,rf   r5   )r€   r�   s   ` r\   Ú	_delegater‚   7  s   ø€ ô-ð €Orf   c                  ó(  — e Zd ZdZ	 dZd(d„Zed„ «       Zed„ «       Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Z	  ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z  ed«      Z! ed«      Z" ed«      Z# ed «      Z$ ed!«      Z% ed"«      Z& ed#«      Z' ed$«      Z( ed%«      Z) e*e+d&«      r	 ed&«      Z,y'y'))rj   zÀImplements a rational class where 0/0 is a legal value to match
    the in the wild use of exif rationals.

    e.g., DigitalZoomRatio - 0.00/0.00  indicates that no digital zoom was used
    )Ú
_numeratorÚ_denominatorr}   c                óˆ  — t        |t        «      r4|j                  | _        |j                  | _        |j                  | _        yt        |t        «      r#|j                  | _        |j                  | _        n|| _        || _        |dk(  rt        d«      | _        y|dk(  rt        |«      | _        yt        ||«      | _        y)z®
        :param value: either an integer numerator, a
        float/rational/other number, or an IFDRational
        :param denominator: Optional integer denominator
        Nr   Únanr   )	Ú
isinstancerj   rs   r„   rt   r…   r}   r   Úfloat)r~   Úvaluert   s      r\   Ú__init__zIFDRational.__init__L  s›   € ô �eœ[Ô)Ø#Ÿo™oˆDŒOØ %× 1Ñ 1ˆDÔØŸ
™
ˆDŒIØä�eœXÔ&Ø#Ÿo™oˆDŒOØ %× 1Ñ 1ˆDÕà#ˆDŒOØ +ˆDÔà˜!ÒÜ˜e›ˆD�IØ˜AÒÜ  ›ˆD�Iä  ¨Ó4ˆD�Irf   c                ó   — | j                   S rr   )r„   ©r~   s    r\   rs   zIFDRational.numeratorf  s   € à�‰Ðrf   c                ó   — | j                   S rr   )r…   r�   s    r\   rt   zIFDRational.denominatorj  s   € à× Ñ Ð rf   c                ó¶   — | j                   dk(  r| j                  | j                   fS | j                  j                  |«      }|j                  |j                   fS )z…

        :param max_denominator: Integer, the maximum denominator value
        :returns: Tuple of (numerator, denominator)
        r   )rt   rs   r}   Úlimit_denominator)r~   Úmax_denominatorÚfs      r\   rk   zIFDRational.limit_rationaln  sN   € ð ×Ñ˜qÒ Ø—>‘> 4×#3Ñ#3Ð3Ð3à�I‰I×'Ñ'¨Ó8ˆØ�{‰{˜AŸM™MÐ)Ð)rf   c                ó>   — t        t        | j                  «      «      S rr   )Ústrr‰   r}   r�   s    r\   Ú__repr__zIFDRational.__repr__{  s   € Ü”5˜Ÿ™Ó#Ó$Ð$rf   c                ó6   — | j                   j                  «       S rr   )r}   Ú__hash__r�   s    r\   r—   zIFDRational.__hash__~  s   € Ø�y‰y×!Ñ!Ó#Ð#rf   c                ó’   — | j                   }t        |t        «      r|j                   }t        |t        «      rt        |«      }||k(  S rr   )r}   rˆ   rj   r‰   )r~   Úotherrl   s      r\   Ú__eq__zIFDRational.__eq__�  s;   € Ø�i‰iˆÜ�eœ[Ô)Ø—J‘JˆEÜ�eœUÔ#Ü˜“*ˆCØ�e‰|Ðrf   c                óH   — | j                   | j                  | j                  gS rr   )r}   r„   r…   r�   s    r\   Ú__getstate__zIFDRational.__getstate__‰  s   € Ø—	‘	˜4Ÿ?™?¨D×,=Ñ,=Ð>Ð>rf   c                óf   — t         j                  | d«       |\  }}}|| _        || _        || _        y )Nr   )rj   r‹   r}   r„   r…   )r~   Ústater}   r„   r…   s        r\   Ú__setstate__zIFDRational.__setstate__Œ  s4   € Ü×Ñ˜T 1Ô%Ø).Ñ&ˆˆj˜,ØˆŒ	Ø$ˆŒØ(ˆÕrf   Ú__add__Ú__radd__Ú__sub__Ú__rsub__Ú__mul__Ú__rmul__Ú__truediv__Ú__rtruediv__Ú__floordiv__Ú__rfloordiv__Ú__mod__Ú__rmod__Ú__pow__Ú__rpow__Ú__pos__Ú__neg__Ú__abs__Ú	__trunc__Ú__lt__Ú__gt__Ú__le__Ú__ge__Ú__bool__Ú__ceil__Ú	__floor__Ú	__round__Ú__int__Nr4   )-Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r‹   Úpropertyrs   rt   rk   r•   r—   rš   rœ   rŸ   r‚   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   Úhasattrr   rº   r5   rf   r\   rj   rj   >  s‚  „ ñðð
 7€Ió5ð4 ñó ðð ñ!ó ð!ò*ò%ò$òò?ò)ðñ ˜	Ó"€GÙ˜Ó$€HÙ˜	Ó"€GÙ˜Ó$€HÙ˜	Ó"€GÙ˜Ó$€HÙ˜MÓ*€KÙ˜^Ó,€LÙ˜^Ó,€LÙ˜oÓ.€MÙ˜	Ó"€GÙ˜Ó$€HÙ˜	Ó"€GÙ˜Ó$€HÙ˜	Ó"€GÙ˜	Ó"€GÙ˜	Ó"€GÙ˜+Ó&€IÙ�xÓ €FÙ�xÓ €FÙ�xÓ €FÙ�xÓ €FÙ˜Ó$€HÙ˜Ó$€HÙ˜+Ó&€IÙ˜+Ó&€Iáˆx˜Ô#Ù˜IÓ&‰ð $rf   rj   c                ó   ‡ ‡— ˆ ˆfd„}|S )Nc                ó¤   •— ddl m} | j                  j                  d«      r"| j                  dd  j	                  dd«      |‰<   ‰| ft
        ‰<   | S )Nr   r   Úload_r#   Ú_ú )r   r   r»   Ú
startswithÚreplaceÚ_load_dispatch)Úfuncr   ÚidxÚsizes     €€r\   Ú	decoratorz#_register_loader.<locals>.decorator»  sL   ø€ Ý#à�=‰=×#Ñ# GÔ,ØŸ™ q rÐ*×2Ñ2°3¸Ó<ˆE�#‰JØ" D˜jŒ�sÑØˆrf   r5   )rË   rÌ   rÍ   s   `` r\   Ú_register_loaderrÎ   º  s   ù€ õð Ðrf   c                ó   ‡ — ˆ fd„}|S )Nc                ó   •— | t         ‰<   | S rr   )Ú_write_dispatch)rÊ   rË   s    €r\   rÍ   z#_register_writer.<locals>.decoratorÇ  s   ø€ Ø#Œ˜ÑØˆrf   r5   )rË   rÍ   s   ` r\   Ú_register_writerrÒ   Æ  s   ø€ ôð Ðrf   c                ó’   ‡‡— ddl m} | \  }Š}|||<   t        j                  d‰z   «      Š‰dˆˆfd„	ft        |<   ˆfd„t
        |<   y )Nr   r   ú=c                óH   •— | j                  t        |«      ‰z  › ‰› �|«      S rr   )Ú_unpackrY   )r~   ÚdataÚ
legacy_apiÚfmtrÌ   s      €€r\   ú<lambda>z!_register_basic.<locals>.<lambda>Ö  s)   ø€ Ø�L‰LœC ›I¨Ñ-Ð.¨s¨eÐ4°dÓ;ð rf   c                ó<   •‡ — dj                  ˆˆ fd„|D «       «      S )Nrf   c              3  óB   •K  — | ]  }‰j                  ‰|«      –— Œ y ­wrr   )Ú_pack)rZ   rŠ   rÙ   r~   s     €€r\   r]   z4_register_basic.<locals>.<lambda>.<locals>.<genexpr>Û  s   øè ø€ Ò<¨E�—‘˜C ×'Ñ<ùs   ƒ©Újoin)r~   ÚvaluesrÙ   s   ` €r\   rÚ   z!_register_basic.<locals>.<lambda>Ú  s   ù€ Ø�‰Ô<°VÔ<Ó<ð rf   ©T)r   r   ÚstructÚcalcsizerÉ   rÑ   )Úidx_fmt_namer   rË   ÚnamerÙ   rÌ   s       @@r\   Ú_register_basicræ   Î  sL   ù€ Ýà!�N€CˆˆdØ€Eˆ#�JÜ�?‰?˜3 ™9Ó%€Dàõ	
ð„N�3Ñó„O�CÒrf   c                  ó6  — e Zd ZU dZi Zded<   i Zded<   d<d„Z ed„ «      Z	 ed	„ «      Z
ed
„ «       Zej                  d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z e eeej:                  ddfej<                  ddfej>                  ddfej@                  ddfejB                  d d!fejD                  d"d#fejF                  d$d%fejH                  ddfejJ                  d&d'fg	«      «        e&d(d(«      d=d)„«       Z' e(d(«      d*„ «       Z) e&d+d(«      d=d,„«       Z* e(d+«      d-„ «       Z+ e&d.d/«      d=d0„«       Z, e(d.«      d1„ «       Z- e&d2d(«      d=d3„«       Z. e(d2«      d4„ «       Z/ e&d5d/«      d=d6„«       Z0 e(d5«      d7„ «       Z1d8„ Z2d9„ Z3d>d:„Z4d;„ Z5y)?ÚImageFileDirectory_v2a  This class represents a TIFF tag directory.  To speed things up, we
    don't decode tags unless they're asked for.

    Exposes a dictionary interface of the tags in the directory::

        ifd = ImageFileDirectory_v2()
        ifd[key] = 'Some Data'
        ifd.tagtype[key] = TiffTags.ASCII
        print(ifd[key])
        'Some Data'

    Individual values are returned as the strings or numbers, sequences are
    returned as tuples of the values.

    The tiff metadata type of each item is stored in a dictionary of
    tag types in
    :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types
    are read from a tiff file, guessed from the type added, or added
    manually.

    Data Structures:

        * ``self.tagtype = {}``

          * Key: numerical TIFF tag number
          * Value: integer corresponding to the data type from
            :py:data:`.TiffTags.TYPES`

          .. versionadded:: 3.0.0

    'Internal' data structures:

        * ``self._tags_v2 = {}``

          * Key: numerical TIFF tag number
          * Value: decoded data, as tuple for multiple values

        * ``self._tagdata = {}``

          * Key: numerical TIFF tag number
          * Value: undecoded byte string from file

        * ``self._tags_v1 = {}``

          * Key: numerical TIFF tag number
          * Value: decoded data in the v1 format

    Tags will be found in the private attributes ``self._tagdata``, and in
    ``self._tags_v2`` once decoded.

    ``self.legacy_api`` is a value for internal use, and shouldn't be changed
    from outside code. In cooperation with
    :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`, if ``legacy_api``
    is true, then decoded tags will be populated into both ``_tags_v1`` and
    ``_tags_v2``. ``_tags_v2`` will be used if this IFD is used in the TIFF
    save routine. Tags should be read from ``_tags_v1`` if
    ``legacy_api == true``.

    z>dict[int, Callable[[ImageFileDirectory_v2, bytes, bool], Any]]rÉ   zdict[int, Callable[..., Any]]rÑ   Nc                óÐ  — t        |«      sdt        |«      › d�}t        |«      ‚|�|n|dd | _        | j                  t        k(  rd| _        n(| j                  t        k(  rd| _        nd}t        |«      ‚|d   dk(  | _        || _        i | _	        	 | j                  «        | j                  r| j                  d	|d
d «      n| j                  d|dd «      \  | _        d| _        y)a—  Initialize an ImageFileDirectory.

        To construct an ImageFileDirectory from a real file, pass the 8-byte
        magic header to the constructor.  To only set the endianness, pass it
        as the 'prefix' keyword argument.

        :param ifh: One of the accepted magic headers (cf. PREFIXES); also sets
              endianness.
        :param prefix: Override the endianness of the file.
        znot a TIFF file (header z not valid)Nr   ú>ú<znot a TIFF IFDé+   ÚQr)   r7   r!   F)re   ÚreprÚSyntaxErrorÚ_prefixÚMMÚ_endianÚIIÚ_bigtiffÚgroupÚtagtypeÚresetrÖ   ÚnextÚ_legacy_api)r~   Úifhrd   rõ   Úmsgs        r\   r‹   zImageFileDirectory_v2.__init__%  sÝ   € ô �sŒ|Ø,¬T°#«Y¨K°{ÐCˆCÜ˜cÓ"Ð"Ø!'Ð!3‘v¸¸R¸a¸ˆŒØ�<‰<œ2ÒØˆD�LØ�\‰\œRÒØˆD�Là"ˆCÜ˜cÓ"Ð"Ø˜A™ "™ˆŒØˆŒ
ØˆŒØ'Ø�
‰
Œà*.¯-ª-ˆD�L‰L˜˜c ! "˜gÔ&¸T¿\¹\È#ÈsÐSTÐSUÈwÓ=Wñ 	ˆŒð !ˆÕrf   c                ó   — | j                   S rr   )rð   r�   s    r\   rÚ   zImageFileDirectory_v2.<lambda>E  ó
   €  4§<¡<€ rf   c                ó   — | j                   S rr   )Ú_offsetr�   s    r\   rÚ   zImageFileDirectory_v2.<lambda>F  rý   rf   c                ó   — | j                   S rr   )rù   r�   s    r\   rØ   z ImageFileDirectory_v2.legacy_apiH  s   € à×ÑÐrf   c                ó   — d}t        |«      ‚)Nz"Not allowing setting of legacy api)Ú	Exception)r~   rŠ   rû   s      r\   rØ   z ImageFileDirectory_v2.legacy_apiL  s   € à2ˆÜ˜‹nÐrf   c                óX   — i | _         i | _        i | _        i | _        d | _        d | _        y rr   )Ú_tags_v1Ú_tags_v2Ú_tagdatarö   Ú_nextrÿ   r�   s    r\   r÷   zImageFileDirectory_v2.resetQ  s,   € ØˆŒØˆŒØˆŒØˆŒØˆŒ
Øˆ�rf   c                ó*   — t        t        | «      «      S rr   )r”   Údictr�   s    r\   Ú__str__zImageFileDirectory_v2.__str__Y  s   € Ü”4˜“:‹Ðrf   c                ó¦   — | j                  «       D ��ci c]0  \  }}t        j                  || j                  «      j                  |“Œ2 c}}S c c}}w )z�
        :returns: dict of name|key: value

        Returns the complete tag dictionary, with named tags where possible.
        )Úitemsr   Úlookuprõ   rå   )r~   ÚcoderŠ   s      r\   ÚnamedzImageFileDirectory_v2.named\  sH   € ð  $Ÿz™z›|÷
á��eô �O‰O˜D $§*¡*Ó-×2Ñ2°EÑ9ó
ð 	
ùó 
s   ”5Ac                ój   — t        t        | j                  «      t        | j                  «      z  «      S rr   )rY   Úsetr  r  r�   s    r\   Ú__len__zImageFileDirectory_v2.__len__g  ó$   € Ü”3�t—}‘}Ó%¬¨D¯M©MÓ(:Ñ:Ó;Ð;rf   c                ó  — || j                   vrG| j                  |   }| j                  |   }| j                  |   \  }} || || j                  «      | |<   | j                   |   }| j                  rt        |t        t        f«      s|f}|S rr   )r  r  rö   rÉ   rØ   rˆ   ÚtupleÚbytes)r~   Útagr×   ÚtyprÌ   Úhandlerrl   s          r\   Ú__getitem__z!ImageFileDirectory_v2.__getitem__j  s‚   € Ø�d—m‘mÑ#Ø—=‘= Ñ%ˆDØ—,‘,˜sÑ#ˆCØ ×/Ñ/°Ñ4‰MˆD�'Ù  d¨D¯O©OÓ<ˆD�‰IØ�m‰m˜CÑ ˆØ�?Š?¤:¨c´E¼5°>Ô#BØ�&ˆCØˆ
rf   c                ó>   — || j                   v xs || j                  v S rr   )r  r  ©r~   r  s     r\   Ú__contains__z"ImageFileDirectory_v2.__contains__u  ó   € Ø�d—m‘mÐ#Ò; s¨d¯m©mÐ';Ð;rf   c                ó>   — | j                  ||| j                  «       y rr   )Ú_setitemrØ   )r~   r  rŠ   s      r\   Ú__setitem__z!ImageFileDirectory_v2.__setitem__x  s   € Ø�‰�c˜5 $§/¡/Õ2rf   c           	     óþ  ‡	— t         t        t        f}t        j                  || j
                  «      Š	t        ||«      r|gn|}|| j                  v�rØ‰	j                  r‰	j                  | j                  |<   �n±t        j                  | j                  |<   t        d„ |D «       «      rAt        d„ |D «       «      rt        j                  nt        j                  | j                  |<   �nAt        d„ |D «       «      r t        d„ |D «       «      rt        j                  | j                  |<   nÿt        d„ |D «       «      rt        j                  | j                  |<   nÏt        d„ |D «       «      rt        j                  nt        j                   | j                  |<   n�t        d„ |D «       «      rt        j"                  | j                  |<   n_t        d„ |D «       «      rt        j$                  | j                  |<   n/t        d	„ |D «       «      rt        j&                  | j                  |<   | j                  |   t        j                  k(  r2|D �cg c]&  }t        |t        «      r|j)                  d
d«      n|‘Œ( }}nJ| j                  |   t        j                  k(  r*|D �cg c]  }t        |t*        «      rt-        |«      n|‘Œ! }}| j                  |   t        j                  k(  xr t        |t.        «      }|st1        ˆ	fd„|D «       «      }|r| j2                  n| j4                  }|sˆ‰	j6                  dk(  s<| j                  |   t        j&                  k(  s‰	j6                  €Mt9        |«      dk(  r?|s=|r2| j                  |   t        j                  t        j                  fv r|f}	 |\  ||<   y |||<   y c c}w c c}w # t:        $ r0 t=        j>                  d|› dt9        |«      › d�«       |d   ||<   Y y w xY w)Nc              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrr   )rˆ   rj   ©rZ   Úvs     r\   r]   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>†  s   è ø€ ÒB°a”z !¤[×1ÑBùó   ‚c              3  ó&   K  — | ]	  }|d k\  –— Œ y­w©r   Nr5   r$  s     r\   r]   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>‰  s   è ø€ Ò6¨!˜q A�vÑ6ùó   ‚c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrr   )rˆ   Úintr$  s     r\   r]   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Œ  ó   è ø€ Ò<°œ A¤s×+Ñ<ùr&  c              3  ó<   K  — | ]  }d |cxk  xr dk  nc –— Œ y­w)r   r   Nr5   r$  s     r\   r]   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>�  s   è ø€ Ò:¨a˜1 ž> EŸ>˜>Ñ:ùr&  c              3  ó<   K  — | ]  }d |cxk  xr dk  nc –— Œ y­w)i €ÿÿi €  Nr5   r$  s     r\   r]   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>�  s   è ø€ ÒB°a˜X¨Ö1¨E×1Ð1ÑBùr&  c              3  ó&   K  — | ]	  }|d k\  –— Œ y­wr(  r5   r$  s     r\   r]   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>”  s   è ø€ Ò":¨a 1¨¥6Ñ":ùr)  c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrr   )rˆ   r‰   r$  s     r\   r]   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>—  ó   è ø€ Ò>°!œ A¤u×-Ñ>ùr&  c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrr   )rˆ   r”   r$  s     r\   r]   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>™  r,  r&  c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrr   )rˆ   r  r$  s     r\   r]   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>›  r1  r&  ÚasciirÈ   c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrr   )Úcvt_enum)rZ   rŠ   Úinfos     €r\   r]   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>¨  s   øè ø€ ÒD°E˜4Ÿ=™=¨×/ÑDùs   ƒr   zMetadata Warning, tag z had too many entries: z, expected 1r   ) r   r  r”   r   r  rõ   rˆ   rö   ÚtypeÚ	UNDEFINEDÚallÚRATIONALÚSIGNED_RATIONALÚSHORTÚSIGNED_SHORTÚLONGÚSIGNED_LONGÚDOUBLEÚASCIIÚBYTEÚencoder+  r‰   r	  r  r  r  ÚlengthrY   Ú
ValueErrorÚwarningsÚwarn)
r~   r  rŠ   rØ   Ú	basetypesrà   r%  Úis_ifdÚdestr7  s
            @r\   r   zImageFileDirectory_v2._setitem{  sE  ø€ ÜœU¤CÐ(ˆ	ä�‰˜s D§J¡JÓ/ˆÜ& u¨iÔ8�%‘¸eˆà�d—l‘lÒ"Ø�yŠyØ$(§I¡I�—‘˜SÓ!ä$,×$6Ñ$6�—‘˜SÑ!ÜÑB¸6ÔBÔBô Ñ6¨vÔ6Ô6ô !×)Ò)ä%×5Ñ5ð —L‘L Ó%ô
 Ñ<°VÔ<Ô<ÜÑ:°6Ô:Ô:Ü,4¯N©N˜Ÿ™ SÒ)ÜÑB¸6ÔBÔBÜ,4×,AÑ,A˜Ÿ™ SÒ)ô  #Ñ":°6Ô":Ô:ô %ŸMšMä!)×!5Ñ!5ð Ÿ™ SÒ)ô
 Ñ>°vÔ>Ô>Ü(0¯©�D—L‘L Ò%ÜÑ<°VÔ<Ô<Ü(0¯©�D—L‘L Ò%ÜÑ>°vÔ>Ô>Ü(0¯©�D—L‘L Ñ%à�<‰<˜Ñ¤× 2Ñ 2Ò2ð  öàô 1;¸1¼cÔ0B�—‘˜ )Ô,ÈÑIðˆFñ ð �\‰\˜#Ñ¤(×"3Ñ"3Ò3ØEKÖLÀ¤*¨Q´Ô"4”e˜A”h¸!Ñ;ÐLˆFÐLà—‘˜cÑ"¤h§m¡mÑ3ÒP¼
À6Ì4Ó8PˆÙÜÓD¸VÔDÓDˆFá *ˆt�}Š}°·±ˆñ Ø�[‰[˜AÒØ�|‰|˜CÑ ¤H§M¡MÒ1Ø—‘Ð#¬¨F«°qÒ(8Áñ ˜dŸl™l¨3Ñ/Ü×!Ñ!Ü×(Ñ(ð4ñ ð !˜�ð&Ø%‘��c’ð ˆD�ŠIùòUùò
 Møô4 ò &ä—‘Ø,¨S¨EÐ1HÜ˜6“{�m <ð1ôð # 1™I��S“	ð&ús   É+N9Ê!$N>Î+O Ï6O<Ï;O<c                ó¬   — | j                   j                  |d «       | j                  j                  |d «       | j                  j                  |d «       y rr   )r  Úpopr  r  r  s     r\   Ú__delitem__z!ImageFileDirectory_v2.__delitem__Ë  s>   € Ø�‰×Ñ˜#˜tÔ$Ø�‰×Ñ˜#˜tÔ$Ø�‰×Ñ˜#˜tÕ$rf   c                ój   — t        t        | j                  «      t        | j                  «      z  «      S rr   )Úiterr  r  r  r�   s    r\   Ú__iter__zImageFileDirectory_v2.__iter__Ð  ó$   € Ü”C˜Ÿ™Ó&¬¨T¯]©]Ó);Ñ;Ó<Ð<rf   c                óH   — t        j                  | j                  |z   |«      S rr   )râ   Úunpackrò   )r~   rÙ   r×   s      r\   rÖ   zImageFileDirectory_v2._unpackÓ  s   € Ü�}‰}˜TŸ\™\¨CÑ/°Ó6Ð6rf   c                óH   — t        j                  | j                  |z   g|¢­Ž S rr   )râ   Úpackrò   )r~   rÙ   rà   s      r\   rÝ   zImageFileDirectory_v2._packÖ  s   € Ü�{‰{˜4Ÿ<™<¨#Ñ-Ð7°Ò7Ð7rf   ÚHÚshortr7   ÚlongÚbzsigned byteÚhzsigned shortÚlzsigned longr’   r‰   ÚdÚdoublerí   Úlong8r   c                ó   — |S rr   r5   ©r~   r×   rØ   s      r\   Ú	load_bytezImageFileDirectory_v2.load_byteê  ó   € àˆrf   c                ót   — t        |t        «      rt        |«      }t        |t        «      rt        |f«      }|S rr   )rˆ   rj   r+  r  ©r~   r×   s     r\   Ú
write_bytez ImageFileDirectory_v2.write_byteî  s/   € ä�dœKÔ(Ü�t“9ˆDÜ�dœCÔ Ü˜$˜“>ˆDØˆrf   r   c                óR   — |j                  d«      r|d d }|j                  dd«      S )Nó    rh   zlatin-1rÈ   )ÚendswithÚdecodera  s      r\   Úload_stringz!ImageFileDirectory_v2.load_stringö  s*   € à�=‰=˜ÔØ˜˜�9ˆDØ�{‰{˜9 iÓ0Ð0rf   c                ó†   — t        |t        «      rt        |«      }t        |t        «      s|j	                  dd«      }|dz   S )Nr4  rÈ   rh  )rˆ   r+  r”   r  rD  ©r~   rŠ   s     r\   Úwrite_stringz"ImageFileDirectory_v2.write_stringü  s;   € ô �eœSÔ!Ü˜“JˆEÜ˜%¤Ô'Ø—L‘L ¨)Ó4ˆEØ�u‰}Ðrf   r#   r)   c           
     ó¦   ‡‡— | j                  t        |«      dz  › d�|«      }ˆfd„Št        ˆfd„t        |d d d…   |dd d…   «      D «       «      S )Nr!   r7   c                ó(   •— ‰r| |fS t        | |«      S rr   ©rj   ©ÚarZ  rØ   s     €r\   Úcombinez4ImageFileDirectory_v2.load_rational.<locals>.combine	  ó   ø€ Ù'�A�q�6Ð>¬[¸¸AÓ->Ð>rf   c              3  ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wrr   r5   ©rZ   ÚnumÚdenomrt  s      €r\   r]   z6ImageFileDirectory_v2.load_rational.<locals>.<genexpr>  ó   øè ø€ ÒV©Z¨S°%‘W˜S %×(ÑVùó   ƒr   r   ©rÖ   rY   r  Úzip©r~   r×   rØ   Úvalsrt  s     ` @r\   Úload_rationalz#ImageFileDirectory_v2.load_rational  óU   ù€ à�|‰|œs 4›y¨A™~Ð.¨aÐ0°$Ó7ˆô	?ô ÓV¼3¸tÁCÀaÀC¹yÈ$ÈqÈtÐRSÈtÉ*Ó;UÔVÓVÐVrf   c                ó8   ‡ — dj                  ˆ fd„|D «       «      S )Nrf   c              3  óX   •K  — | ]!  } ‰j                   d gt        |d«      ¢­Ž –— Œ# y­w)Ú2Ll   ÿÿ N)rÝ   rp   ©rZ   rx   r~   s     €r\   r]   z7ImageFileDirectory_v2.write_rational.<locals>.<genexpr>  s-   øè ø€ ò 
ØDHˆJˆD�J‰J�tÐ?œo¨d°IÓ>Ö?ñ
ùs   ƒ'*rÞ   ©r~   rà   s   ` r\   Úwrite_rationalz$ImageFileDirectory_v2.write_rational  s!   ø€ à�x‰xó 
ØLRô
ó 
ð 	
rf   r'   c                ó   — |S rr   r5   ra  s      r\   Úload_undefinedz$ImageFileDirectory_v2.load_undefined  rc  rf   c                ó’   — t        |t        «      rt        |«      }t        |t        «      rt        |«      j	                  dd«      }|S )Nr4  rÈ   )rˆ   rj   r+  r”   rD  rm  s     r\   Úwrite_undefinedz%ImageFileDirectory_v2.write_undefined  s:   € ä�eœ[Ô)Ü˜“JˆEÜ�eœSÔ!Ü˜“J×%Ñ% g¨yÓ9ˆEØˆrf   é
   c           
     ó¦   ‡‡— | j                  t        |«      dz  › d�|«      }ˆfd„Št        ˆfd„t        |d d d…   |dd d…   «      D «       «      S )Nr!   r\  c                ó(   •— ‰r| |fS t        | |«      S rr   rq  rr  s     €r\   rt  z;ImageFileDirectory_v2.load_signed_rational.<locals>.combine$  ru  rf   c              3  ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wrr   r5   rw  s      €r\   r]   z=ImageFileDirectory_v2.load_signed_rational.<locals>.<genexpr>'  rz  r{  r   r   r|  r~  s     ` @r\   Úload_signed_rationalz*ImageFileDirectory_v2.load_signed_rational   r�  rf   c                ó8   ‡ — dj                  ˆ fd„|D «       «      S )Nrf   c           	   3  óZ   •K  — | ]"  } ‰j                   d gt        |dd«      ¢­Ž –— Œ$ y­w)Ú2liÿÿÿi   €N)rÝ   ry   r…  s     €r\   r]   z>ImageFileDirectory_v2.write_signed_rational.<locals>.<genexpr>+  s3   øè ø€ ò 
àð ˆD�J‰J�tÐPÔ4°T¸9ÀhÓOÖPñ
ùs   ƒ(+rÞ   r†  s   ` r\   Úwrite_signed_rationalz+ImageFileDirectory_v2.write_signed_rational)  s!   ø€ à�x‰xó 
àô
ó 
ð 	
rf   c                ó~   — |j                  |«      }t        |«      |k7  rd|› dt        |«      › d�}t        |«      ‚|S )Nz&Corrupt EXIF data.  Expecting to read ú bytes but only got z. )ÚreadrY   ÚOSError)r~   ÚfprÌ   Úretrû   s        r\   Ú_ensure_readz"ImageFileDirectory_v2._ensure_read0  sN   € Ø�g‰g�d‹mˆÜˆs‹8�tÒð%Ø%) FÐ*>¼sÀ3»x¸jÈðLð ô ˜#“,ÐØˆ
rf   c           
     óx  — | j                  «        |j                  «       | _        	 | j                  r"| j	                  d| j                  |d«      «      n!| j	                  d| j                  |d«      «      d   }t        |«      D �]   }| j                  r"| j	                  d| j                  |d«      «      n!| j	                  d| j                  |d	«      «      \  }}}}t        j                  || j                  «      j                  }t        j                  |d
«      }	d|› d|› d|	› d|› d�	}
	 | j                  |   \  }}||z  }|| j                  rdndkD  rv|j                  «       }| j	                  | j                  rdnd|«      \  }|
d|› d|› �z  }
|j#                  |«       t%        j&                  ||«      }|j#                  |«       n|d | }t)        |«      |k7  r>t+        j,                  d|› dt)        |«      › d|› �«       t        j!                  |
«       �Œš|st        j!                  |
«       �Œ³|| j.                  |<   || j0                  |<   |
d|dkD  rd|z  n
t3        |«      z   z  }
t        j!                  |
«       �Œ | j                  r"| j	                  d| j                  |d«      «      n!| j	                  d| j                  |d«      «      \  | _        y # t        $ r t        j!                  d|
|«       Y �Œw xY w# t6        $ r(}
t+        j,                  t9        |
«      «       Y d }
~
y d }
~
ww xY w)Nrí   r)   rW  r   r   ÚHHQ8sé   ÚHHL4sr8   Úunknownztag: ú (ú
) - type: ú)z%s - unsupported type %sr!   r7   z Tag Location: z - Data Location: z/Possibly corrupt EXIF data.  Expecting to read r–  z. Skipping tag ú
 - value: r?   ú<table: %d bytes>)r÷   Útellrÿ   rô   rÖ   r›  Úranger   r  rõ   rå   r   ÚgetrÉ   ÚKeyErrorÚloggerÚdebugÚseekr   Ú
_safe_readrY   rG  rH  r  rö   rî   rø   r˜  r”   )r~   r™  Ú	tag_countÚir  r  Úcountr×   ÚtagnameÚtypnamerû   Ú	unit_sizer  rÌ   ÚhereÚoffsets                   r\   ÚloadzImageFileDirectory_v2.load:  s  € Ø�
‰
ŒØ—w‘w“yˆŒð=	ð —=’=ð —‘˜S $×"3Ñ"3°B¸Ó":Ô;à—\‘\ # t×'8Ñ'8¸¸QÓ'?Ó@Øñ	ˆIô
 ˜9Ó%ó ."�ð —}’}ð —L‘L ¨$×*;Ñ*;¸BÀÓ*CÔDàŸ™ g¨t×/@Ñ/@ÀÀRÓ/HÓIñ &��S˜% ô #Ÿ/™/¨#¨t¯z©zÓ:×?Ñ?�ÜŸ)™) C¨Ó3�Ø˜g˜Y b¨¨¨Z¸°yÀÀ3À%ÀqÐI�ðØ)-×)<Ñ)<¸SÑ)AÑ&�I˜wð ˜yÑ(�Ø §¢™1°1Ò5ØŸ7™7›9�DØ $§¡°D·M²M©SÀsÈDÓ Q‘I�VØ˜_¨T¨FÐ2DÀVÀHÐMÑM�CØ—G‘G˜F”OÜ$×/Ñ/°°DÓ9�DØ—G‘G˜D•Mà  ˜;�Dä�t“9 Ò$Ü—M‘Mð-Ø-1¨FÐ2FÄsÈ4ÃyÀkð R)Ø),¨ð/ôô
 —L‘L Ô%ÙáÜ—L‘L Ô%Ùà%)�—‘˜cÑ"Ø$'�—‘˜SÑ!à�|Ø26¸²)Ð'¨$Ò.ÄÀdÃññ �ô —‘˜SÖ!ð]."ðd —=’=ð —‘˜S $×"3Ñ"3°B¸Ó":Ô;à—\‘\ # t×'8Ñ'8¸¸QÓ'?Ó@ñ ˆT�YøôG  ò Ü—L‘LÐ!;¸SÀ#ÔFÚðûôP ò 	Ü�M‰Mœ#˜c›(Ô#Üûð	ús=   §DL Ä.K!Å F L Ë! LÌL ÌLÌL Ì	L9ÌL4Ì4L9c                óF  — | j                  dt        | j                  «      «      }g }|t        |«      z   t        | j                  «      dz  z   dz   }d }t        | j                  j	                  «       «      D �]\  \  }}|t
        k(  rt        |«      }| j                  j                  |«      }t        j                  d||t        |«      «       |t        j                  k(  xr t        |t        «      }|r_| j                  dk(  rd}	nd}	t!        |	|¬«      }
| j                  |   }|j	                  «       D ]
  \  }}||
|<   Œ |
j#                  |«      }n+t        |t$        «      r|n|f} | j&                  |   | g|¢­Ž }t        j(                  || j*                  «      j,                  }|rd	nt/        j                  |d
«      }d|› d|› d|› d|› d�	}|dt        |«      dk\  rdt        |«      z  n
t1        |«      z   z  }t        j                  |«       |rd}nH|t        j2                  t        j4                  t        j6                  fv rt        |«      }nt        |«      }t        |«      dk  r(|j9                  ||||j;                  dd«      df«       �Œ |j9                  |||| j                  d|«      |f«       |t        |«      dz   dz  dz  z  }�Œ_ |�L||   \  }}}}}|rd}t=        |«      ‚| j                  d| j?                  d|«      d   |z   «      }|||||f||<   |D ]L  \  }}}}}t        j                  d|||t        |«      t        |«      «       || j                  d||||«      z  }ŒN |dz  }|D ]!  \  }}}}}||z  }t        |«      dz  sŒ|dz  }Œ# |S )NrW  r8   r!   zTag %s, Type: %s, Value: %srë   s   II*    s   MM *   )rõ   Úifdr   zsave: r¡  r¢  r£  r¤  r:   r¥  r   rh  rf   r7   r   z&multistrip support not yet implementedr   z%s %s %s %s %srŸ  s       ) rÝ   rY   r  Úsortedr  ÚSTRIPOFFSETSrö   r¨  rª  r«  rî   r   r?  rˆ   r	  rò   rè   Útobytesr  rÑ   r  rõ   rå   r   r”   rC  rB  r9  ÚappendÚljustÚNotImplementedErrorrÖ   )r~   rµ  ÚresultÚentriesÚstripoffsetsr  rŠ   r  rJ  rú   r¸  rà   Úifd_tagÚ	ifd_valuer×   r±  r²  rû   r°  s                      r\   r»  zImageFileDirectory_v2.tobytes}  s˜  € à—‘˜C¤ T§]¡]Ó!3Ó4ˆàˆØœ#˜f›+Ñ%¬¨D¯M©MÓ(:¸RÑ(?Ñ?À!ÑCˆØˆô ! §¡×!4Ñ!4Ó!6Ó7ó (	3‰JˆC�Ø”lÒ"Ü" 7›|�Ø—,‘,×"Ñ" 3Ó'ˆCÜ�L‰LÐ6¸¸SÄ$ÀuÃ+ÔNØœHŸM™MÑ)ÒE¬j¸ÄÓ.EˆFÙØ—<‘< 3Ò&Ø7‘Cà7�CÜ+¨C°sÔ;�ØŸ™ sÑ+�Ø*0¯,©,«.ò -Ñ&�G˜YØ#,�C˜’Lð-à—{‘{ 6Ó*‘ä",¨U´EÔ":™ÀÀ�Ø0�t×+Ñ+¨CÑ0°Ð?¸Ò?�ä—o‘o c¨4¯:©:Ó6×;Ñ;ˆGÙ%‘e¬5¯9©9°S¸)Ó+DˆGØ˜7˜) 2 c U¨*°W°I¸RÀ¸uÀAÐFˆCØ�<Ü36°t³9À²?Ð#¤c¨$£iÒ/ÌÈFËññ ˆCô �L‰L˜Ôñ Ø‘ØœŸ™¬¯©¼×8JÑ8JÐKÑKÜ˜D›	‘ä˜F›�ä�4‹y˜AŠ~Ø—‘  S¨%°·±¸A¸uÓ1EÀsÐKÖLà—‘  S¨%°·±¸CÀÓ1HÈ$ÐOÔPØœ3˜t›9 q™=¨QÑ.°Ñ2Ñ2’ðQ(	3ðV Ð#Ø+2°<Ñ+@Ñ(ˆC��e˜U DÙØ>�Ü)¨#Ó.Ð.Ø—J‘J˜s D§L¡L°°eÓ$<¸QÑ$?À&Ñ$HÓIˆEØ$'¨¨e°U¸DÐ$@ˆG�LÑ!ð -4ò 	BÑ(ˆC��e˜U DÜ�L‰LÐ)¨3°°U¼DÀ»KÌÈdËÔTØ�d—j‘j ¨#¨s°E¸5ÓAÑA‰Fð	Bð
 	�+Ñˆð -4ò 	 Ñ(ˆC��e˜U DØ�d‰NˆFÜ�4‹y˜1‹}Ø˜%‘‘ð	 ð
 ˆrf   c                ó  — |j                  «       dk(  r/|j                  | j                  | j                  ddd«      z   «       |j                  «       }| j	                  |«      }|j                  |«       |t        |«      z   S )Nr   ÚHLé*   r)   )r¦  Úwriterð   rÝ   r»  rY   )r~   r™  rµ  r¿  s       r\   ÚsavezImageFileDirectory_v2.saveÊ  se   € Ø�7‰7‹9˜Š>à�H‰H�T—\‘\ D§J¡J¨t°R¸Ó$;Ñ;Ô<à—‘“ˆØ—‘˜fÓ%ˆØ
�‰�ÔØœ˜F›Ñ#Ð#rf   )s   II*     NNrá   rH   )6r»   r¼   r½   r¾   rÉ   Ú__annotations__rÑ   r‹   rÀ   rd   rµ  rØ   Úsetterr÷   r
  r  r  r  r  r!  r   rN  rQ  rÖ   rÝ   ÚlistÚmapræ   r   r=  r?  ÚSIGNED_BYTEr>  r@  ÚFLOATrA  ÚIFDÚLONG8rÎ   rb  rÒ   rf  rk  rn  r€  r‡  r‰  r‹  r�  r”  r›  r¶  r»  rÈ  r5   rf   r\   rè   rè   å  sh  … ñ:ðx VX€NÐRÓWØ57€OÐ2Ó7ó!ñ@ Ñ/Ó0€FÙÑ/Ó0€Fàñ ó ð ð ×Ññó ðòòò	
ò<ò	ò<ò3òNò`%ò
=ò7ò8ñ 	ÙØà—‘  gÐ.Ø—‘  VÐ,Ø×%Ñ% s¨MÐ:Ø×&Ñ&¨¨^Ð<Ø×%Ñ% s¨MÐ:Ø—‘  gÐ.Ø—‘ # xÐ0Ø—‘˜s FÐ+Ø—‘  gÐ.ð
ó	
ôñ" �a˜Óòó ðñ �aÓñó ðñ �a˜Óò1ó ð1ñ
 �aÓñó ðñ �a˜ÓòWó ðWñ �aÓñ
ó ð
ñ
 �a˜Óòó ðñ �aÓñó ðñ �b˜!ÓòWó ðWñ �bÓñ
ó ð
òòAóFKóZ$rf   rè   rÆ   rÅ   rÄ   Úwrite_c                  óˆ   ‡ — e Zd ZU dZˆ fd„Z ed„ «      Z ed„ «      Zded<   	 e	d„ «       Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zˆ xZS )ÚImageFileDirectory_v1aþ  This class represents the **legacy** interface to a TIFF tag directory.

    Exposes a dictionary interface of the tags in the directory::

        ifd = ImageFileDirectory_v1()
        ifd[key] = 'Some Data'
        ifd.tagtype[key] = TiffTags.ASCII
        print(ifd[key])
        ('Some Data',)

    Also contains a dictionary of tag types as read from the tiff image file,
    :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`.

    Values are returned as a tuple.

    ..  deprecated:: 3.0.0
    c                ó2   •— t        ‰| �  |i |¤Ž d| _        y )NT)Úsuperr‹   rù   )r~   r   ÚkwargsÚ	__class__s      €r\   r‹   zImageFileDirectory_v1.__init__ò  s   ø€ Ü‰Ñ˜$Ð) &Ò)ØˆÕrf   c                ó   — | j                   S rr   )r  r�   s    r\   rÚ   zImageFileDirectory_v1.<lambda>ö  s
   €  §¡€ rf   c                ó   — | j                   S rr   )r  r�   s    r\   rÚ   zImageFileDirectory_v1.<lambda>÷  s
   €  D§M¡M€ rf   zdict[int, int]rö   c                ó’   —  | |j                   ¬«      }|j                  |_        |j                  |_        |j                  |_        |S )a2  Returns an
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
        instance with the same data as is contained in the original
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
        instance.

        :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`

        rc   )rd   r  rö   rø   )ÚclsÚoriginalr¸  s      r\   Úfrom_v2zImageFileDirectory_v1.from_v2ý  s<   € ñ ˜Ÿ™Ô)ˆØ×(Ñ(ˆŒØ×&Ñ&ˆŒØ—=‘=ˆŒØˆ
rf   c                óÎ   — t        | j                  ¬«      }t        | j                  «      |_        t        | j                  «      |_        t        | j
                  «      |_        |S )a2  Returns an
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
        instance with the same data as is contained in the original
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
        instance.

        :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`

        rc   )rè   rd   r	  r  rö   r  )r~   r¸  s     r\   Úto_v2zImageFileDirectory_v1.to_v2  sG   € ô $¨4¯;©;Ô7ˆÜ˜DŸM™MÓ*ˆŒÜ˜4Ÿ<™<Ó(ˆŒÜ˜DŸM™MÓ*ˆŒØˆ
rf   c                ó>   — || j                   v xs || j                  v S rr   )r  r  r  s     r\   r  z"ImageFileDirectory_v1.__contains__   r  rf   c                ój   — t        t        | j                  «      t        | j                  «      z  «      S rr   )rY   r  r  r  r�   s    r\   r  zImageFileDirectory_v1.__len__#  r  rf   c                ój   — t        t        | j                  «      t        | j                  «      z  «      S rr   )rP  r  r  r  r�   s    r\   rQ  zImageFileDirectory_v1.__iter__&  rR  rf   c                ó8   — dD ]  }| j                  |||«       Œ y ©N)FT)r   )r~   r  rŠ   rØ   s       r\   r!  z!ImageFileDirectory_v1.__setitem__)  s!   € Ø'ò 	2ˆJØ�M‰M˜#˜u jÕ1ñ	2rf   c           	     ó  — || j                   vrR| j                  |   }| j                  |   }| j                  |   \  }}dD ]  }| j	                  | || ||«      |«       Œ | j                   |   }t        |t        t        f«      s|f}|S rä  )r  r  rö   rÉ   r   rˆ   r  r  )r~   r  r×   r  rÌ   r  Úlegacyrl   s           r\   r  z!ImageFileDirectory_v1.__getitem__-  s�   € Ø�d—m‘mÑ#Ø—=‘= Ñ%ˆDØ—,‘,˜sÑ#ˆCØ ×/Ñ/°Ñ4‰MˆD�'Ø'ò H�Ø—‘˜c¡7¨4°°vÓ#>ÀÕGðHà�m‰m˜CÑ ˆÜ˜#¤¤u˜~Ô.Ø�&ˆCØˆ
rf   )r»   r¼   r½   r¾   r‹   rÀ   ÚtagsÚtagdatarÉ  ÚclassmethodrÝ  rß  r  r  rQ  r!  r  Ú__classcell__©r×  s   @r\   rÓ  rÓ  ß  s`   ø… ñô$ ñ Ñ.Ó/€DÙÑ1Ó2€Gð ÓØ!àñó ðò"ò"<ò<ò=ò2ö
rf   rÓ  c                  ó|   ‡ — e Zd ZdZdZdZdˆ fd„	Zd„ Zed„ «       Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚTiffImageFileÚTIFFz
Adobe TIFFFc                óF   •— d | _         	 d | _        	 t        ‰| �  ||«       y rr   )Útag_v2r  rÕ  r‹   )r~   r™  Úfilenamer×  s      €r\   r‹   zTiffImageFile.__init__G  s&   ø€ ØˆŒØ5àˆŒØ"ä‰Ñ˜˜XÕ&rf   c                ó  — | j                   j                  d«      }|d   dk(  r|| j                   j                  d«      z  }t        |«      | _        d| _        | j                  j
                  x| _        | _        d| _        | j                   | _	        g | _
        d| _        t        j                  d«       t        j                  d| j                  «       t        j                  dt        |«      «       | j                  d	«       y)
z#Open the first image in a TIFF filer)   r   rì   Nrh   z*** TiffImageFile._open ***z- __first: %sz	- ifh: %sr   )r™  r—  rè   rð  r¸  rø   Ú_TiffImageFile__firstÚ_TiffImageFile__nextÚ_TiffImageFile__frameÚ_fpÚ
_frame_posÚ	_n_framesrª  r«  rî   Ú_seek)r~   rú   s     r\   Ú_openzTiffImageFile._openP  sÃ   € ð �g‰g�l‰l˜1‹oˆØˆq‰6�RŠ<Ø�4—7‘7—<‘< “?Ñ"ˆCä+¨CÓ0ˆŒð ˆŒð &*§[¡[×%5Ñ%5Ð5ˆŒ�t”{ØˆŒØ—7‘7ˆŒØˆŒØˆŒä�‰Ð2Ô3Ü�‰�_ d§l¡lÔ3Ü�‰�[¤$ s£)Ô,ð 	�
‰
�1�rf   c                ó2  — | j                   €€| j                  «       }| j                  t        | j                  «      «       | j                   €/| j                  | j                  «       dz   «       | j                   €Œ/| j                  |«       | j                   S )Nr   )rø  r¦  rù  rY   r÷  r¬  )r~   Úcurrents     r\   Ún_frameszTiffImageFile.n_framesk  sn   € à�>‰>Ð!Ø—i‘i“kˆGØ�J‰J”s˜4Ÿ?™?Ó+Ô,Ø—.‘.Ð(Ø—
‘
˜4Ÿ9™9›;¨™?Ô+ð —.‘.Ñ(à�I‰I�gÔØ�~‰~Ðrf   c                óú   — | j                  |«      sy| j                  |«       t        j                  | j                  «       t        j
                  j                  | j                  | j                  «      | _        y)z%Select a given frame as current imageN)	Ú_seek_checkrù  r   Ú_decompression_bomb_checkrÌ   ÚcoreÚnewÚmodeÚim)r~   Úframes     r\   r¬  zTiffImageFile.seeku  sQ   € à×Ñ Ô&ØØ�
‰
�5Ôô 	×'Ñ'¨¯	©	Ô2Ü—*‘*—.‘. §¡¨D¯I©IÓ6ˆ�rf   c                ój  — | j                   | _        | j                  j                  «        t        | j                  «      |k  �rÐ| j
                  sd}t        |«      ‚t        j                  d|| j                  | j
                  | j                  j                  «       «       | j
                  dk\  rd}t        |«      ‚| j                  j                  | j
                  «       | j                  j                  | j
                  «       t        j                  d| j                  j                  «       «       | j                  j                  | j                  «       | j                  j                  | j                  v rd| _        n| j                  j                  | _        | j
                  dk(  r
|dz   | _        t        | j                  «      dk(  r| j
                  dk7  | _        | xj                  dz  c_	        t        | j                  «      |k  r�ŒÐ| j                  j                  | j                  |   «       | j                  j                  | j                  «       | j%                  «        t&        j)                  | j                  «      x| _        | _        || _	        | j/                  «        y )Nzno more images in TIFF filez9Seeking to frame %s, on frame %s, __next %s, location: %sl            zUnable to seek to framezLoading tags, location: %sr   r   )rö  r™  r¦  rY   r÷  rô  ÚEOFErrorrª  r«  rõ  rF  r¬  r¼  rð  r¶  rø   rø  Úis_animatedÚ_reload_exifrÓ  rÝ  r  r¸  Ú_setup)r~   r  rû   s      r\   rù  zTiffImageFile._seek€  sÚ  € Ø—(‘(ˆŒð 	�‰�‰Œä�$—/‘/Ó" eÓ+Ø—;’;Ø3�Ü˜s“mÐ#Ü�L‰LØKØØ—‘Ø—‘Ø—‘—‘“ôð �{‰{˜eÒ#Ø/�Ü  “oÐ%Ø�G‰G�L‰L˜Ÿ™Ô%Ø�O‰O×"Ñ" 4§;¡;Ô/Ü�L‰LÐ5°t·w±w·|±|³~ÔFØ�K‰K×Ñ˜TŸW™WÔ%Ø�{‰{×Ñ 4§?¡?Ñ2ð  �•à"Ÿk™k×.Ñ.�”Ø�{‰{˜aÒØ!&¨¡�”Ü�4—?‘?Ó# qÒ(Ø#'§;¡;°!Ñ#3�Ô Ø�LŠL˜AÑ�Lô9 �$—/‘/Ó" eÔ+ð: 	�‰�‰�T—_‘_ UÑ+Ô,Ø�‰×Ñ˜Ÿ™Ô!Ø×ÑÔä3×;Ñ;¸D¿K¹KÓHÐHˆŒ�4”8ØˆŒØ�‰�rf   c                ó   — | j                   S )zReturn the current frame number)rõ  r�   s    r\   r¦  zTiffImageFile.tell¬  s   € à�|‰|Ðrf   c                ón   — t         | j                  v r"| j                  | j                  t            «      S i S )z™
        Returns a dictionary containing the XMP tags.
        Requires defusedxml to be installed.

        :returns: XMP tags in a dictionary.
        )ÚXMPrð  Ú_getxmpr�   s    r\   ÚgetxmpzTiffImageFile.getxmp°  s,   € ô 25¸¿¹Ñ1Cˆt�|‰|˜DŸK™K¬Ñ,Ó-ÐKÈÐKrf   c                óŽ  — i }| j                   j                  t        j                  j                  «      }|r�|dd dk(  r…t        |dd «      }t        j                  |d   dz   dz  «      dz  }t        |d|z   d|z    «      }|d|z   d|z   |z    }d|i||<   |t        j                  d|z   |z   dz  «      dz  d }|dd dk(  rŒ…|S )	a5  
        Returns a dictionary of Photoshop "Image Resource Blocks".
        The keys are the image resource ID. For more information, see
        https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577409_pgfId-1037727

        :returns: Photoshop "Image Resource Blocks" in a dictionary.
        Nr!   s   8BIMr%   r   r   rŒ  r×   )	rð  r¨  r   ÚBaseÚImageResourcesÚi16ÚmathÚceilÚi32)r~   Úblocksrl   ÚidÚnrÌ   r×   s          r\   Úget_photoshop_blocksz"TiffImageFile.get_photoshop_blocks¹  sâ   € ð ˆØ�k‰k�o‰oœhŸm™m×:Ñ:Ó;ˆÙØ�b�q�'˜WÒ$Ü˜˜Q˜q˜“]�Ü—I‘I˜s 1™v¨™z¨QÑ.Ó/°!Ñ3�Ü˜3˜q 1™u r¨A¡vÐ.Ó/�Ø˜2 ™6 B¨¡F¨T¡MÐ2�Ø$ d˜^��r‘
àœ$Ÿ)™) R¨!¡V¨d¡]°aÑ$7Ó8¸1Ñ<Ð>Ð?�ð �b�q�'˜WÓ$ð ˆrf   c                óp   •— | j                   r| j                  r| j                  «       S t        ‰| �  «       S rr   )ÚtileÚuse_load_libtiffÚ_load_libtiffrÕ  r¶  )r~   r×  s    €r\   r¶  zTiffImageFile.loadÎ  s-   ø€ Ø�9Š9˜×.Ò.Ø×%Ñ%Ó'Ð'Ü‰w‰|‹~Ðrf   c                óš  — | j                   s\d| _        | j                  j                  «        | j	                  «       }t
        j                  D ]  }||vrŒ|j                  |«       Œ t        j                  | d¬«       t        j                  j                  | j                  v r&| j                  t        j                  j                  = y y )NT)Úin_place)r  Ú!_close_exclusive_fp_after_loadingr™  r¦  Úgetexifr   ÚTAGS_V2_GROUPSÚget_ifdr   Úexif_transposer   r  ÚOrientationrð  )r~   ÚexifÚkeys      r\   Úload_endzTiffImageFile.load_endÓ  sŸ   € ð ×ÒØ59ˆDÔ2ð �G‰G�L‰LŒNð —<‘<“>ˆDÜ×.Ñ.ò "�Ø˜d‘?ØØ—‘˜SÕ!ð"ô
 	×Ñ ¨tÕ4Ü�=‰=×$Ñ$¨¯©Ñ3Ø—‘œHŸM™M×5Ñ5Ñ6ð 4rf   c                óî  — t         j                   j                  | «       | j                  «        t        | j                  «      dk(  sd}t        |«      ‚| j                  d   d   }t        | j                  d   d   «      }	 t        | j                  d«      xr | j                  j                  «       }t        | j                  d«      r| j                  j                  «        |r||d<   t        j                  | j                  d	t        |«      | j                  «      }	 |j                  | j                   |«       | j$                  xr | j&                   }t        | j                  d«      rBt(        j+                  d«       |j-                  | j                  j/                  «       «      \  }}	n¥|rGt(        j+                  d«       |s| j                  j1                  d«       |j-                  d«      \  }}	n\t(        j+                  d«       | j                  j1                  d«       |j-                  | j                  j3                  «       «      \  }}	g | _        d| _        | j7                  «        |r!| j                  j9                  «        d| _        |	dk  rt        |	«      ‚t         j                   j                  | «      S # t
        $ r d}Y �Œïw xY w# t"        $ r}d
}t        |«      |‚d}~ww xY w)zWOverload method triggered when we detect a compressed tiff
        Calls out to libtiffr   zNot exactly one tiler   r   ÚfilenoÚflushFr   ÚlibtiffzCouldn't set the imageNÚgetvaluez5have getvalue. just sending in a string from getvaluez3have fileno, calling fileno version of the decoder.s   fpfpz+don't have fileno or getvalue. just reading)r   r¶  Úload_preparerY   r  r˜  rË  rÁ   r™  r+  r,  Ú_getdecoderr  r  ÚdecoderconfigÚsetimager  rF  Ú_exclusive_fpr  rª  r«  rj  r.  r¬  r—  Úreadonlyr)  Úclose)
r~   rû   Úextentsr   r™  ÚdecoderÚeÚclose_self_fpr  Úerrs
             r\   r  zTiffImageFile._load_libtiffè  sN  € ô 	�‰×Ñ˜Ôà×ÑÔä�4—9‘9‹~ Ò"Ø(ˆCÜ˜#“,Ðð —)‘)˜A‘,˜q‘/ˆÜ�D—I‘I˜a‘L ‘OÓ$ˆð

	Ü˜Ÿ™ (Ó+Ò@°·±·±Ó0@ˆBô �t—w‘w Ô(Ø—‘—‘”ñ ØˆD�‰Gä×#Ñ#Ø�I‰I�y¤%¨£+¨t×/AÑ/Aó
ˆð	&Ø×Ñ˜TŸW™W gÔ.ð
 ×*Ñ*ÒC°4×3CÑ3CÐ/CˆÜ�4—7‘7˜JÔ'ô �L‰LÐPÔQØ—^‘^ D§G¡G×$4Ñ$4Ó$6Ó7‰FˆA‰sÙä�L‰LÐNÔOÙ Ø—‘—‘˜Q”à—^‘^ GÓ,‰FˆA‰sô �L‰LÐFÔGØ�G‰G�L‰L˜ŒOà—^‘^ D§G¡G§L¡L£NÓ3‰FˆAˆsàˆŒ	ØˆŒà�‰ŒáØ�G‰G�M‰MŒOØˆDŒGà�Š7Ü˜#“,Ðä�{‰{×Ñ Ó%Ð%øôq ò 	ð ‹Bð	ûô ò 	&Ø*ˆCÜ˜#“, AÐ%ûð	&ús+   ÂA"K Ä"K ËKËKË	K4Ë!K/Ë/K4c                óp  — d| j                   v rd}t        |«      ‚t        | j                   j                  t        d«         | _        | j                   j                  t        d«      | _        | j                   j                  t        d«      }| j
                  dk(  rd}| j                   j                  t        d«      }t        j                  d«       t        j                  d| j
                  «       t        j                  d	|«       t        j                  d
| j                  «       t        j                  d|«       t        j                  d| j                  j                  t        «      «       t        | j                   j                  t        «      «      }t        | j                   j                  t         «      «      }||f| _        t        j                  d| j$                  «       | j                   j                  t&        d«      }t)        |«      dkD  r"t+        |«      t-        |«      cxk(  rdk(  rn nd}| j                   j                  t.        d«      }| j                   j                  t0        d«      }|dv rd}	n
|dk(  rd}	nd}	|	t)        |«      z  }	t)        |«      }
| j                   j                  t2        | j
                  dk(  r|dv rdnd«      }|t4        kD  r#t        j7                  d|«       d}t9        |«      ‚||
k  r|d| }n||
kD  r
|
dk(  r||z  }t)        |«      |k7  rd}t9        |«      ‚| j                   j:                  |||||f}t        j                  d|«       	 t<        |   \  | _        }t        j                  d|«       t        j                  d| jB                  «       | j
                  | jD                  d<   | j                   j                  tF        d«      }| j                   j                  tH        d«      }|r‹|r‰| j                   j                  tJ        «      }|dk(  r||f| jD                  d <   nS|dk(  r|d!z  |d!z  f| jD                  d <   n6|€#||f| jD                  d <   ||f| jD                  d"<   n||f| jD                  d"<   dx}x}}g | _&        tN        xs | j
                  d#k7  | _(        | jP                  rÛ|dk(  r5|dd dz   |dd z   }t        j                  d|«       t<        |   \  | _        }|d$k(  rd%}d&|v r|jS                  d&d'«      }d(|v r|jS                  d(d'«      }|dk(  r | j
                  d)k(  r| j                  dk(  rd*}|| j
                  d+| j                   jT                  f}| jL                  jW                  d,dd||fd|f«       �n¼tX        | j                   v stZ        | j                   v �rutX        | j                   v rC| j                   tX           }| j                   j                  t\        |«      }| j$                  d   }nQ| j                   tZ           }| j                   j                  t^        «      }| j                   j                  t`        «      }|D ]É  }||z   |kD  r|tc        |«      z  d-z  }nd}|}| j                  dk(  r
||   }||	z  }|t        |«      df}| jL                  jW                  | j
                  ||t-        ||z   |«      t-        ||z   |«      f||f«       ||z   }|| j$                  d   k\  sŒ§d||z   }}|| j$                  d   k\  sŒÁdx}}|dz  }ŒË n"t        j                  d.«       d}t9        |«      ‚td        | j                   v r | j                   td           | jD                  d/<   | jB                  d0v rW| j                   tf           D �cg c]  }ti        |d1z  «      ‘Œ }}tk        jl                  d2d3jo                  |«      «      | _8        yy# t@        $ r(}t        j                  d«       d}t9        |«      |‚d}~ww xY wc c}w )4z-Setup this image object based on current tagsi¼  z+Windows Media Photo files not yet supportedr   r   r&   r%   z*** Summary ***z- compression: %sz - photometric_interpretation: %sz- planar_configuration: %sz- fill_order: %sz- YCbCr subsampling: %sz
- size: %sr4   r5   )r   r%   r)   r   r#   r!   )r   r%   z.More samples per pixel than can be decoded: %sz#Invalid value for samples per pixelNzunknown data organizationzformat key: %sz- unsupported formatzunknown pixel modez- raw mode: %sz- pil mode: %sÚcompressionr   ÚdpigR¸…ëQ@Ú
resolutionr   r9   úI;16Nz;16Bz;16Nz;16Lr(   rF   Fr-  r)   z- unsupported data organizationÚicc_profile©rR   rS   r   úRGB;Lrf   )9rð  r˜  ÚCOMPRESSION_INFOr¨  ÚCOMPRESSIONÚ_compressionÚPLANAR_CONFIGURATIONÚ_planar_configurationÚPHOTOMETRIC_INTERPRETATIONÚ	FILLORDERrª  r«  r  ÚYCBCRSUBSAMPLINGr+  Ú
IMAGEWIDTHÚIMAGELENGTHÚ_sizerÌ   ÚSAMPLEFORMATrY   rv   ru   ÚBITSPERSAMPLEÚEXTRASAMPLESÚSAMPLESPERPIXELÚMAX_SAMPLESPERPIXELÚerrorrï   rd   Ú	OPEN_INFOÚ_moder©  r  r7  ÚX_RESOLUTIONÚY_RESOLUTIONÚRESOLUTION_UNITr  ÚREAD_LIBTIFFr  rÈ   rµ  r¼  rº  ÚTILEOFFSETSÚROWSPERSTRIPÚ	TILEWIDTHÚ
TILELENGTHÚsumÚ
ICCPROFILEÚCOLORMAPr   r   r   rß   Úpalette)r~   rû   ÚphotoÚ	fillorderÚxsizeÚysizeÚsample_formatÚ	bps_tupleÚextra_tupleÚ	bps_countÚbps_actual_countÚsamples_per_pixelr(  Úrawmoder8  ÚxresÚyresÚresunitÚxÚyÚlayerrs  Úoffsetsr[  Úwrµ  ÚstrideÚtile_rawmoderZ  ra  s                                 r\   r
  zTiffImageFile._setup=  sW  € ð �T—[‘[Ñ Ø?ˆCÜ˜#“,Ðô -¨T¯[©[¯_©_¼[È!Ó-LÑMˆÔØ%)§[¡[§_¡_Ô5IÈ1Ó%MˆÔ"ð —‘—‘Ô :¸AÓ>ˆð ×Ñ Ò+ØˆEà—K‘K—O‘O¤I¨qÓ1ˆ	ä�‰Ð&Ô'Ü�‰Ð(¨$×*;Ñ*;Ô<Ü�‰Ð7¸Ô?Ü�‰Ð1°4×3MÑ3MÔNÜ�‰Ð'¨Ô3Ü�‰Ð.°·±·±Ô=MÓ0NÔOô �D—K‘K—O‘O¤JÓ/Ó0ˆÜ�D—K‘K—O‘O¤KÓ0Ó1ˆØ˜E�\ˆŒ
ä�‰�\ 4§9¡9Ô-àŸ™Ÿ™¬°dÓ;ˆÜˆ}Ó Ò!¤c¨-Ó&8¼CÀÓ<NÔ&SÐRSÕ&Sð !ˆMà—K‘K—O‘O¤M°4Ó8ˆ	Ø—k‘k—o‘o¤l°BÓ7ˆØ�IÑØ‰IØ�aŠZØ‰IàˆIØ”S˜Ó%Ñ%ˆ	Ü˜y›>ÐØ ŸK™KŸO™OÜØ×"Ñ" kÒ1°e¸v±o‰AÈ1ó
Ðð
 Ô2Ò2ä�L‰LØ@ÐBSôð 8ˆCÜ˜cÓ"Ð"àÐ/Ò/ð "Ð"4Ð#4Ð5‰IØÐ!1Ò1Ð6FÈ!Ò6Kð "Ð$5Ñ5ˆIäˆy‹>Ð.Ò.Ø-ˆCÜ˜cÓ"Ð"ð �K‰K×ÑØØØØØð
ˆô 	�‰Ð% sÔ+ð	*Ü"+¨C¡.ÑˆDŒJ˜ô 	�‰Ð% wÔ/Ü�‰Ð% t§y¡yÔ1à#'×#4Ñ#4ˆ�	‰	�-Ñ à�{‰{�‰œ|¨QÓ/ˆØ�{‰{�‰œ|¨QÓ/ˆá‘DØ—k‘k—o‘o¤oÓ6ˆGØ˜!Š|Ø$(¨$ <�—	‘	˜%Ò Ø˜A’Ø$(¨4¡K°¸±Ð#=�—	‘	˜%Ò Ø�Ø$(¨$ <�—	‘	˜%Ñ ð +/°¨*�—	‘	˜,Ò'à*.°¨*�—	‘	˜,Ñ'ð ÐˆÐˆA�ØˆŒ	Ü ,Ò J°×0AÑ0AÀUÑ0JˆÔØ× Ò ð ˜AŠ~à˜"˜1�g ‘n s¨1¨2 wÑ.�Ü—‘Ð-¨sÔ3ô '0°¡nÑ#�”
˜Gð
 ˜&Ò Ø!�Ø˜Ñ Ø!Ÿ/™/¨&°&Ó9�Ø˜Ñ Ø!Ÿ/™/¨&°&Ó9�ð
 ˜’
Ø×%Ñ%¨Ò/Ø×.Ñ.°!Ò3à�ð ˜$×+Ñ+¨U°D·K±K×4FÑ4FÐGˆAØ�I‰I×Ñ˜i¨!¨Q°°uÐ)=¸qÀ!ÐDÖEä˜TŸ[™[Ñ(¬K¸4¿;¹;Ò,Fä˜tŸ{™{Ñ*ØŸ+™+¤lÑ3�Ø—K‘K—O‘O¤L°%Ó8�Ø—I‘I˜a‘L‘ð Ÿ+™+¤kÑ2�Ø—K‘K—O‘O¤IÓ.�Ø—K‘K—O‘O¤JÓ/�à!ò #�Ø�q‘5˜5’=Ø¤ Y£Ñ/°!Ñ3‘Fà�Fà&�Ø×-Ñ-°Ò2à#*¨5¡>�Là˜iÑ'�Fà!¤3 v£;°Ð2�Ø—	‘	× Ñ à×)Ñ)Ø˜Aœs 1 q¡5¨%Ó0´#°a¸!±e¸UÓ2CÐDØØð	ôð ˜‘E�Ø˜Ÿ	™	 !™Ó$Ø˜a !™e�q�AØ˜DŸI™I a™LÓ(Ø !˜	˜˜AØ ™
™ñ7#ô: �L‰LÐ:Ô;Ø-ˆCÜ˜cÓ"Ð"ô ˜Ÿ™Ñ$Ø'+§{¡{´:Ñ'>ˆD�I‰I�mÑ$ð �9‰9˜Ñ#Ø-1¯[©[¼Ñ-BÖC¨”r˜!˜s™(•|ÐCˆGÐCÜ'×+Ñ+¨G°S·X±X¸gÓ5FÓGˆD�Lð $øôA ò 	*Ü�L‰LÐ/Ô0Ø&ˆCÜ˜cÓ"¨Ð)ûð	*üòB Ds   Í._? Þ<`3ß?	`0à#`+à+`0)NN)r»   r¼   r½   ÚformatÚformat_descriptionr!  r‹   rú  rÀ   rý  r¬  rù  r¦  r  r  r¶  r)  r  r
  rê  rë  s   @r\   rí  rí  B  se   ø„ Ø€FØ%ÐØ(-Ð%õ'òð6 ñó ðò	7ò*òXòLòô*ò
7ò*S&öj^Hrf   rí  r6   r7   rE   rR   rS   r<   rC   r9   r=   r@   rA   rF   rI   rG   rT   ÚYCbCrrW   rD   r;   r>   rB   )r>   rB   c                ó`  — 	 t         | j                     \  }}}}}}t	        |¬«      }| j
                  }| j                  }	 |d   }|€d}n|dk(  rd}n|dk(  rd	}t        xs |dk7  }d
|t        <   | j                  d   |t        <   | j                  d
   |t        <   d|v r|d   }nCd|v r=|d   }t        |t         «      r*t#        j$                  «       }|j'                  |«       |}ni }t(        j+                  dt-        |«      «       t        |t.        «      r|j1                  «       }|D ]t  }t        |t"        j$                  «      r'|t2        j4                  v r|j7                  |«      ||<   n|j                  |«      ||<   	 |j8                  |   |j8                  |<   Œv t=        | d«      rlt>        t@        tB        tD        tF        tH        fD ]I  }|| jJ                  v sŒ| jJ                  |   ||<   | jJ                  j8                  |   |j8                  |<   ŒK |j                  d| j                  j                  d«      «      }|r	||tL        <   tN        dft@        dftB        dft@        dftB        dft>        dftP        dftR        dftT        dftV        dff
D ]  \  }}||v sŒ||   ||<   Œ |j                  d«      }|r!d|t>        <   |d   |t@        <   |d
   |tB        <   |dk7  r)||tX        <   t[        |«      d
k7  rt[        |«      |t\        <   |�	||t^        <   |d
k7  r	||t`        <   tb        |vr
||tb        <   n¨| j                  dv rš|tb           dk(  rŽ| j                  dk(  rj| je                  «       }|j'                  «       }tg        |jh                  «      D ]/  }tg        |jj                  «      D ]  }|||f   dk(  rdnd|||f<   Œ Œ1 |} ntm        jn                  | «      } | j                  d v rs| jp                  js                  d!d"«      }g }t[        |«      d#z  }tg        d#«      D ]0  }||||z  ||d
z   z   D �cg c]  }|d$z  ‘Œ	 c}z  }|dgd$|z
  z  z  }Œ2 ||tt        <   |t           |t           } }t[        |«      ||d   z  d%z   d&z  z  }!tv        |vr[|rG|j                  d'tx        «      }"|!dk(  rd
nt{        |"|!z  | «      }#|dk(  rt{        |#d%z   d&z  d&z  | «      }#n| }#|#dk(  rd
}#|#|tv        <   |!dk(  rd
n|!|tv           z  }$| |tv           z   d
z
  |tv           z  }%|$d(k\  r!t2        j|                  |j8                  t~        <   |$f|%d
z
  z  |!| z  |$|%d
z
  z  z
  fz   |t~        <   t�        tg        d|$|%z  |$«      «      |t‚        <   t„        j                  |d
«      |t†        <   | j                  d)k(  r6tˆ        d*tŠ        d+ij�                  «       D ]  \  }&}'|j�                  |&|'«       Œ t�        t’        t”        t–        g}(|�rµd,|v rG|d,   })t        |)t        «      r
|)dk  s|)d-kD  rd.}
t™        |
«      ‚|dk7  rd/}
t™        |
«      ‚|)|tš        <   t(        j+                  d0«       t(        j+                  d1t�        |j�                  «       «      «       d}*t=        |d2«      r5	 |jŸ                  d«       t¡        j¢                  |j¥                  «       «      }*i }+|(tª        tŠ        t~        t‚        t¬        t®        gz  }(tX        |d   i},i }-t=        | d3«      r| j°                  j1                  «       }-i t³        | di «      ¥|-¥}.t`        |.v r|.t`        = tµ        j¶                  |j�                  «       |.j�                  «       «      D ]ò  \  }&}'|&t2        j¸                  vr„t³        t"        jº                  d4d5«      sŒ4|&|j8                  v r|j8                  |&   |+|&<   nGt        |'t        t¼        t¾        t         f«      sŒvt3        jÀ                  |&«      jÂ                  }/|/r|/|+|&<   |&|,vsŒ¡|&|(vsŒ¦t        |'t¾        «      r|'jÅ                  d6d7«      d8z   |,|&<   ŒÏt        |'tÆ        «      rt½        |'«      |,|&<   Œî|'|,|&<   Œô t`        |,v r(t[        |,t`           «      d
k(  r|,t`           d   |,t`        <   t(        j+                  d9t�        |,j�                  «       «      «       | j                  d:v rd;}t-        |,j�                  «       «      }0|0jÉ                  «        |||*||0|+f}1t#        jÊ                  | j                  d<|1|«      }2|2jÍ                  | jp                  d=| j                  z   «       	 |2jÅ                  d>«      d
d  \  }3}4|*s|jÏ                  |4«       |3rnŒ.|*r	 t¡        jÐ                  |*«       |3dk  rXd?|3› d@�}
t        |
«      ‚|(D ]  }&||&= Œ |jÓ                  |«      }5tÕ        jÖ                  | |dd=| j                  z   |5||!d
ffg«       dA|v r|| _l        y y # t        $ r!}	d| j                  › d�}
t        |
«      |	‚d }	~	ww xY w# t        $ r1 | j                  j                  d«      }t        |t        «      rd }Y �
Œ'w xY w# t:        $ r Y �	ŒSw xY wc c}w # t¦        j¨                  $ r Y �ŒÎw xY w# t        $ r Y �Œw xY w)BNzcannot write mode z as TIFFrc   r<  r   r&   r(   r.   r*   r   r   Útiffinfor'  zTiffinfo Keys: %srð  r@  Údescriptionr>  Úx_resolutionÚy_resolutionÚresolution_unitÚsoftwareÚ	date_timeÚartistÚ	copyrightr=  r   r4   )r6   r7   r6   r   rA  rF   rB  r   r   r'   r)   Ú
strip_sizer   ry  )r   r   )r   r   é€   r   r…  r   Úqualityéd   zInvalid quality settingz5quality setting only supported for 'jpeg' compressionzSaving using libtiff encoderz	Items: %sr+  r  Úlibtiff_support_custom_tagsFr4  rÈ   rh  zConverted items: %s)r;   r9   r?  r-  rJ   i @  zencoder error z when writing image fileÚ_debug_multipage)mÚ	SAVE_INFOr  r©  r˜  rè   ÚencoderinfoÚencoderconfigr7  r¨  rˆ   r+  ÚWRITE_LIBTIFFrF  rÌ   rK  rL  r  r   ÚExifr¶  rª  r«  rË  rÓ  rß  r   r#  r$  rö   r  rÁ   rX  rV  rW  ÚIPTC_NAA_CHUNKÚPHOTOSHOP_CHUNKr  rð  r_  ÚIMAGEDESCRIPTIONÚSOFTWAREÚ	DATE_TIMEÚARTISTÚ	COPYRIGHTrO  rY   rQ  rP  rN  rH  Úcopyr§  ÚheightÚwidthr   Úinvertr  Ú
getpaletter`  r[  Ú
STRIP_SIZEru   r?  ÚSTRIPBYTECOUNTSr  rº  ÚCOMPRESSION_INFO_REVrD  rJ  ÚREFERENCEBLACKWHITEr  Ú
setdefaultr\  r]  rZ  ÚTILEBYTECOUNTSrF  ÚJPEGQUALITYr¹  r¬  ÚosÚdupr+  ÚioÚUnsupportedOperationÚOSUBFILETYPEÚTRANSFERFUNCTIONÚSUBIFDr  r|   Ú	itertoolsÚchainÚLIBTIFF_COREr  r‰   r”   r  r8  rD  rj   ÚsortÚ_getencoderr2  rÇ  r5  rÈ  r   Ú_saver‰  )6r  r™  rñ  rl  rd   rb  rw  ÚbitsÚextrar8  rû   r¸  r‹  rŒ  r<  r-  r7  r'  r(  Úiccrå   r=  Úinverted_imÚpxrq  rp  ÚlutÚcolormapÚcolorsr¯  r%  rt  r[  ru  Úim_strip_sizeÚrows_per_stripÚstrip_byte_countsÚstrips_per_imager  rŠ   Ú	blocklistr†  rö  ÚtypesÚattsÚ
legacy_ifdÚsupplied_tagsr8  rç  rs  ÚencoderÚerrcoder×   rµ  s6                                                         r\   r®  r®  >  s¶
  € ð"Ü6?ÀÇÁÑ6HÑ3ˆ�˜ ¨¨eô
   vÔ
.€Cà—.‘.€KØ×$Ñ$€MðØ! -Ñ0ˆð ÐØ‰Ø	˜Ò	#à‰Ø	˜Ò	&Ø*ˆäÒ3˜{¨eÑ3€Gð !"€CÔÑà—g‘g˜a‘j€CŒ
�OØ—w‘w˜q‘z€CŒÑð �[Ñ Ø˜:Ñ&‰Ø	�;Ñ	Ø˜6Ñ"ˆÜ�dœEÔ"Ü—:‘:“<ˆDØ�I‰I�dŒOØ‰DàˆÜ
‡L�LÐ$¤d¨4£jÔ1Ü�$Ô-Ô.Ø�z‰z‹|ˆØò ˆÜ�dœEŸJ™JÔ'¨C´8×3JÑ3JÑ,JØ—|‘| CÓ(ˆC�ŠHà—x‘x “}ˆC�‰Hð	Ø#Ÿ|™|¨CÑ0ˆC�K‰K˜Òðô ˆr�8Ôô ÜÜÜÜÜð
ò 
	:ˆCð �b—i‘iÒØŸ9™9 S™>��C‘Ø#%§9¡9×#4Ñ#4°SÑ#9�—‘˜CÒ ð
	:ð �/‰/˜-¨¯©¯©°]Ó)CÓ
D€CÙ
ØˆŒJ‰ô 
˜=Ð)Ü	�|Ð$Ü	�|Ð$Ü	�~Ð&Ü	�~Ð&Ü	Ð+Ð,Ü	�:ÐÜ	�KÐ Ü	�ÐÜ	�KÐ ðò )‰	ˆˆTð �;ÒØ" 4Ñ(ˆC�ŠHð)ð �/‰/˜%Ó
 €CÙ
Ø ˆŒOÑØ ™FˆŒLÑØ ™FˆŒLÑàˆt‚|Ø!ˆŒMÑÜˆt‹9˜Š>Ü#& t£9ˆC”Ñ ØÐØ!ˆŒLÑØ�‚{Ø"ˆŒLÑä!¨Ñ,Ø*/ˆÔ&Ò'Ø	�‰�JÑ	 3Ô'AÑ#BÀaÒ#GØ�7‰7�cŠ>ØŸ'™'›)ˆKØ×!Ñ!Ó#ˆBÜ˜;×-Ñ-Ó.ò =�Ü˜{×0Ñ0Ó1ò =�AØ$& q¨! t¡H°¢O™q¸�B�q˜!�t’Hñ=ð=ð ‰Bä—‘ Ó$ˆBà	‡w�w�+ÑØ�e‰e×Ñ˜u gÓ.ˆØˆÜ�S“˜Q‘ˆÜ�q“ò 	-ˆAØ¨#¨f°q©j¸6ÀQÈÁUÑ;KÐ*LÖM Q˜˜S›ÒMÑMˆHØ˜˜˜s V™|Ñ,Ñ,‰Hð	-ð !ˆŒH‰àŒz‰?˜C¤Ñ,€q€AÜ�‹Y˜1˜t A™w™;¨™?¨qÑ0Ñ1€FÜ˜3ÑáØ'ŸO™O¨L¼*ÓEˆMØ"(¨A¢+™Q´3°}ÈÑ7NÐPQÓ3RˆNà˜fÒ$Ü!$ ~¸Ñ'9¸aÑ&?À1Ñ%DÀaÓ!H‘àˆNØ˜QÒØˆNØ*ˆŒLÑØ# qš[™¨f°s¼<Ñ7HÑ.HÐØ˜C¤Ñ-Ñ-°Ñ1°c¼,Ñ6GÑGÐØ˜EÒ!Ü'/§}¡}ˆ�‰”OÑ$Ø-Ð/Ð3CÀaÑ3GÑHØ�‰
Ð&Ð*:¸QÑ*>Ñ?Ñ?ðLñ €CŒÑô ÜˆaÐ"Ð%5Ñ5Ð7HÓIó€CŒÑô ,×/Ñ/°¸QÓ?€CŒÑà	‡w�w�'Òä˜fÜÐ!=ð
÷ ‰%‹'ò	'‰JˆC�ð �N‰N˜3 Õ&ð		'ô œJ¬´^ÐD€IÚØ˜Ñ#Ø! )Ñ,ˆGÜ˜g¤sÔ+¨w¸ª{¸gÈºmØ/�Ü  “oÐ%Ø˜fÒ$ØM�Ü  “oÐ%Ø&ˆC”Ñä�‰Ð3Ô4Ü�‰�[¤&¨¯©«Ó"5Ô6ØˆÜ�2�xÔ ðØ—‘˜”
Ü—f‘f˜RŸY™Y›[Ó)�ð
 ˆð 	ÜÜÜÜÜÜð
ñ 	
ˆ	ô ˜t A™wÐ'ˆð ˆ
Ü�2�uÔØŸ™Ÿ™›ˆJð Dœ7 2 x°Ó4ÐC¸
ÐCˆÜ˜=Ñ(ØœlÐ+ä#Ÿ/™/¨#¯)©)«+°}×7JÑ7JÓ7LÓMò 	&‰JˆC�ð
 œ(×/Ñ/Ñ/ÜœuŸz™zÐ+HÈ%ÔPØà˜#Ÿ+™+Ñ%Ø!$§¡¨SÑ!1�E˜#’JÜ$ U¬S´%¼¼eÐ,DÔEØä#Ÿ?™?¨3Ó/×4Ñ4�DÙØ%)˜˜c™
Ø˜$Š 3¨iÒ#7Ü˜e¤SÔ)Ø %§¡¨W°iÓ @À5Ñ H�D˜’IÜ ¤{Ô3Ü % e£�D˜’Ià %�D˜’Ið/	&ô2 ˜4Ñ¤C¨¬\Ñ(:Ó$;¸qÒ$@Ø!%¤lÑ!3°AÑ!6ˆD”Ñä�‰Ð*¬F°4·:±:³<Ó,@ÔAð �7‰7Ð'Ñ'ØˆGô
 �D—J‘J“LÓ!ˆØ�	‰	ŒØ�k 3¨°$¸Ð>ˆÜ×#Ñ# B§G¡G¨Y¸¸=ÓIˆØ×Ñ˜Ÿ™ ¨¯©Ñ 0Ô1Øà#ŸN™N¨9Ó5°a°bÐ9‰MˆG�TÙØ—‘˜”ÙØð ñ ðÜ—‘˜”ð �QŠ;Ø" 7 )Ð+CÐDˆCÜ˜#“,Ðð ò 	ˆCØ�C‘ð	à—‘˜"“ˆä�‰Ø��e˜V b§g¡gÑ-¨v¸ÀÈÐ7KÐLÐMô	
ð
 ˜[Ñ(à!ˆÕð )øôE	 ò "Ø" 2§7¡7 )¨8Ð4ˆÜ�c‹l Ð!ûð"ûô ò Ø—g‘g—k‘k -Ó0ˆÜ�k¤3Ô'àˆKúð	ûôT ò 	Úð	üòR Nøôt ×*Ñ*ò Úðûôv ò Úðúse   ‚h Áh4 Æi1Ð:jÚ4j æj  è	h1èh,è,h1è46i.é-i.é1	i>é=i>êjêjê 	j-ê,j-c                  ó¼   — e Zd Zg d¢Zh d£Zdd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zej                  fd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zy)ÚAppendingTiffWriter)r   r   r   r   r!   r)   r   r   r   r!   r)   r!   r)   r!   r   r!   r)   >   é  é  é	  é   r   r   c                ó   — t        |d«      r|| _        d| _        n$|| _        d| _        	 t	        ||rdnd«      | _        | j                  j                  «       | _        | j                  «        y # t
        $ r t	        |d«      | _        Y ŒLw xY w)Nr—  FTzw+bzr+b)	rÁ   r’   Úclose_fprå   Úopenr˜  r¦  Ú	beginningÚsetup)r~   Úfnr  s      r\   r‹   zAppendingTiffWriter.__init__†  sy   € Ü�2�vÔØˆDŒFØ!ˆD�MàˆDŒIØ ˆDŒMð)Ü˜b©3¡%°EÓ:�”ð Ÿ™Ÿ™›ˆŒØ�
‰
�øô ò )Ü˜b %›�–ð)ús   «A0 Á0BÂBc                ó¤  — | j                   j                  | j                  t        j                  «       d | _        d| _        | j                   j                  d«      x| _        }|sd| _	        y d| _	        |dk(  r| j                  d«       n$|dk(  r| j                  d«       nd	}t        |«      ‚| j                  «        | j                  «        y )
Nr   r!   TFr_   rë   r^   rê   zInvalid TIFF file header)r’   r¬  rË  r¢  ÚSEEK_SETÚwhereToWriteNewIFDOffsetÚoffsetOfNewPager—  ÚIIMMÚisFirstÚ	setEndianÚRuntimeErrorÚskipIFDsÚgoToEnd)r~   Úiimmrû   s      r\   rÌ  zAppendingTiffWriter.setup”  s¢   € à�‰�‰�D—N‘N¤B§K¡KÔ0à(,ˆÔ%Ø ˆÔàŸ6™6Ÿ;™; q›>Ð)ˆŒ	�DÙàˆDŒLØàˆŒØ�=Ò Ø�N‰N˜3ÕØ�]Ò"Ø�N‰N˜3Õà,ˆCÜ˜sÓ#Ð#à�‰ŒØ�‰�rf   c                óÜ  — | j                   ry | j                  j                  | j                  «       | j                  j	                  d«      }|sy || j
                  k7  rd}t        |«      ‚| j                  «       }|| j                  z  }| j                  j                  | j                  «       | j                  |«       | j                  j                  |«       | j                  «        y )Nr!   z1IIMM of new page doesn't match IIMM of first page)rÓ  r’   r¬  rÑ  r—  rÒ  rÕ  ÚreadLongrÐ  Ú	writeLongÚfixIFD)r~   rØ  rû   Ú
ifd_offsets       r\   ÚfinalizezAppendingTiffWriter.finalize­  s­   € Ø�<Š<Øð 	�‰�‰�D×(Ñ(Ô)à�v‰v�{‰{˜1‹~ˆÙàà�4—9‘9ÒØEˆCÜ˜sÓ#Ð#à—]‘]“_ˆ
Ø�d×*Ñ*Ñ*ˆ
Ø�‰�‰�D×1Ñ1Ô2Ø�‰�zÔ"Ø�‰�‰�JÔØ�‰�rf   c                óD   — | j                  «        | j                  «        y rr   )rÞ  rÌ  r�   s    r\   ÚnewFramezAppendingTiffWriter.newFrameÄ  s   € à�‰ŒØ�
‰
�rf   c                ó   — | S rr   r5   r�   s    r\   Ú	__enter__zAppendingTiffWriter.__enter__É  s   € Øˆrf   c                ó<   — | j                   r| j                  «        y)NF)rÉ  r5  )r~   Úexc_typeÚ	exc_valueÚ	tracebacks       r\   Ú__exit__zAppendingTiffWriter.__exit__Ì  s   € Ø�=Š=Ø�J‰JŒLØrf   c                óP   — | j                   j                  «       | j                  z
  S rr   )r’   r¦  rÑ  r�   s    r\   r¦  zAppendingTiffWriter.tellÑ  s   € Ø�v‰v�{‰{‹}˜t×3Ñ3Ñ3Ð3rf   c                óž   — |t         j                  k(  r|| j                  z  }| j                  j	                  ||«       | j                  «       S rr   )r¢  rÏ  rÑ  r’   r¬  r¦  )r~   rµ  Úwhences      r\   r¬  zAppendingTiffWriter.seekÔ  s<   € Ø”R—[‘[Ò Ø�d×*Ñ*Ñ*ˆFà�‰�‰�F˜FÔ#Ø�y‰y‹{Ðrf   c                ó>  — | j                   j                  dt        j                  «       | j                   j	                  «       }d|dz  z
  }d|cxk  rdk  r'n n$| j                   j                  t        |«      «       | j                   j	                  «       | _        y )Nr   r:   )r’   r¬  r¢  ÚSEEK_ENDr¦  rÇ  r  rÑ  )r~   ÚposÚ	pad_bytess      r\   r×  zAppendingTiffWriter.goToEndÛ  sj   € Ø�‰�‰�A”r—{‘{Ô#Ø�f‰f�k‰k‹mˆð ˜˜r™‘Mˆ	ØˆyÔ˜2ÕØ�F‰F�L‰Lœ˜yÓ)Ô*Ø#Ÿv™vŸ{™{›}ˆÕrf   c                óŠ   — || _         | j                   dz   | _        | j                   dz   | _        | j                   dz   | _        y )Nr7   rW  ÚHHL)ÚendianÚlongFmtÚshortFmtÚ	tagFormat)r~   rñ  s     r\   rÔ  zAppendingTiffWriter.setEndianå  s9   € ØˆŒØ—{‘{ SÑ(ˆŒØŸ™ cÑ)ˆŒØŸ™ uÑ,ˆ�rf   c                ó&  — 	 | j                  «       }|dk(  r#| j                  j                  «       dz
  | _        y | j                  j	                  |«       | j                  «       }| j                  j	                  |dz  t        j                  «       Œ‘)Nr   r!   r8   )rÚ  r’   r¦  rÐ  r¬  Ú	readShortr¢  ÚSEEK_CUR)r~   rÝ  Únum_tagss      r\   rÖ  zAppendingTiffWriter.skipIFDsë  sl   € ØØŸ™›ˆJØ˜QŠØ04·±·±³ÀÑ0A�Ô-Øà�F‰F�K‰K˜
Ô#Ø—~‘~Ó'ˆHØ�F‰F�K‰K˜ 2™¤r§{¡{Ô3ð rf   c                ó8   — | j                   j                  |«      S rr   )r’   rÇ  re  s     r\   rÇ  zAppendingTiffWriter.writeö  s   € Ø�v‰v�|‰|˜DÓ!Ð!rf   c                ó|   — t        j                  | j                  | j                  j	                  d«      «      \  }|S )Nr   )râ   rT  ró  r’   r—  rm  s     r\   rö  zAppendingTiffWriter.readShortù  s)   € Ü—=‘= §¡°·±·±¸A³Ó?‰ˆØˆrf   c                ó|   — t        j                  | j                  | j                  j	                  d«      «      \  }|S ra   )râ   rT  rò  r’   r—  rm  s     r\   rÚ  zAppendingTiffWriter.readLongý  s)   € Ü—=‘= §¡¨t¯v©v¯{©{¸1«~Ó>‰ˆØˆrf   c                óü   — | j                   j                  dt        j                  «       | j                   j	                  t        j                  | j                  |«      «      }|�|dk7  rd|› d�}t        |«      ‚y y )Néþÿÿÿr!   úwrote only ú bytes but wanted 4©	r’   r¬  r¢  r÷  rÇ  râ   rV  rò  rÕ  ©r~   rŠ   Úbytes_writtenrû   s       r\   ÚrewriteLastShortToLongz*AppendingTiffWriter.rewriteLastShortToLong  óh   € Ø�‰�‰�BœŸ™Ô$ØŸ™Ÿ™¤V§[¡[°·±¸uÓ%EÓFˆØÐ$¨¸!Ò);Ø ˜Ð.AÐBˆCÜ˜sÓ#Ð#ð *<Ð$rf   c                óü   — | j                   j                  dt        j                  «       | j                   j	                  t        j                  | j                  |«      «      }|�|dk7  rd|› d�}t        |«      ‚y y )Nrý  r   rþ  ú bytes but wanted 2)	r’   r¬  r¢  r÷  rÇ  râ   rV  ró  rÕ  r  s       r\   ÚrewriteLastShortz$AppendingTiffWriter.rewriteLastShort  sh   € Ø�‰�‰�BœŸ™Ô$ØŸ™Ÿ™¤V§[¡[°·±ÀÓ%FÓGˆØÐ$¨¸!Ò);Ø ˜Ð.AÐBˆCÜ˜sÓ#Ð#ð *<Ð$rf   c                óü   — | j                   j                  dt        j                  «       | j                   j	                  t        j                  | j                  |«      «      }|�|dk7  rd|› d�}t        |«      ‚y y )Néüÿÿÿr!   rþ  rÿ  r   r  s       r\   ÚrewriteLastLongz#AppendingTiffWriter.rewriteLastLong  r  rf   c                ó¨   — | j                   j                  t        j                  | j                  |«      «      }|�|dk7  rd|› d�}t        |«      ‚y y )Nr   rþ  r  )r’   rÇ  râ   rV  ró  rÕ  r  s       r\   Ú
writeShortzAppendingTiffWriter.writeShort  sR   € ØŸ™Ÿ™¤V§[¡[°·±ÀÓ%FÓGˆØÐ$¨¸!Ò);Ø ˜Ð.AÐBˆCÜ˜sÓ#Ð#ð *<Ð$rf   c                ó¨   — | j                   j                  t        j                  | j                  |«      «      }|�|dk7  rd|› d�}t        |«      ‚y y )Nr!   rþ  rÿ  )r’   rÇ  râ   rV  rò  rÕ  r  s       r\   rÛ  zAppendingTiffWriter.writeLong  sR   € ØŸ™Ÿ™¤V§[¡[°·±¸uÓ%EÓFˆØÐ$¨¸!Ò);Ø ˜Ð.AÐBˆCÜ˜sÓ#Ð#ð *<Ð$rf   c                óX   — | j                  «        | j                  j                  «        y rr   )rÞ  r’   r5  r�   s    r\   r5  zAppendingTiffWriter.close"  s   € Ø�‰ŒØ�‰�‰�rf   c                ó&  — | j                  «       }t        |«      D �]r  }t        j                  | j                  | j
                  j                  d«      «      \  }}}| j                  |   }||z  }|dk  }|s0| j                  «       }	|	| j                  z  }	| j                  |	«       || j                  v r«| j
                  j                  «       }
|r9| j                  ||dk(  |dk(  ¬«       | j
                  j                  |
dz   «       nP| j
                  j                  	«       | j                  ||dk(  |dk(  ¬«       | j
                  j                  |
«       d x}	}
�ŒE|s�ŒI| j
                  j                  dt        j                   «       �Œu y )Nr)   r!   r   )ÚisShortÚisLong)rö  r§  râ   rT  rô  r’   r—  Ú
fieldSizesrÚ  rÑ  r
  ÚTagsr¦  Ú
fixOffsetsr¬  r¢  r÷  )r~   rø  r¯  r  Ú
field_typer°  Ú
field_sizeÚ
total_sizeÚis_localrµ  Úcur_poss              r\   rÜ  zAppendingTiffWriter.fixIFD&  sP  € Ø—>‘>Ó#ˆä�x“ó 	,ˆAÜ%+§]¡]°4·>±>À4Ç6Á6Ç;Á;ÈqÃ>Ó%RÑ"ˆC�˜UàŸ™¨Ñ4ˆJØ# eÑ+ˆJØ! Q‘ˆHÙØŸ™›�Ø˜$×.Ñ.Ñ.�Ø×$Ñ$ VÔ,à�d—i‘iÑØŸ&™&Ÿ+™+›-�áØ—O‘OØ¨
°a©À*ÐPQÁ/ð $ô ð —F‘F—K‘K ¨!¡Õ,à—F‘F—K‘K Ô'Ø—O‘OØ¨
°a©À*ÐPQÁ/ð $ô ð —F‘F—K‘K Ô(à#'Ð'�šãà—‘—‘˜AœrŸ{™{Ö+ñ=	,rf   c                ó.  — |s|sd}t        |«      ‚t        |«      D ]ö  }|r| j                  «       n| j                  «       }|| j                  z  }|rœ|dk\  r—|dk7  rd}t        |«      ‚| j                  |«       | j                  j                  dt        j                  «       | j                  t        j                  «       | j                  j                  dt        j                  «       ŒÒ|r| j                  |«       Œæ| j                  |«       Œø y )Nz offset is neither short nor longr   r   znot implementediöÿÿÿr)   )rÕ  r§  rö  rÚ  rÑ  r  r’   r¬  r¢  r÷  r  r   r?  r  r
  )r~   r°  r  r  rû   r¯  rµ  s          r\   r  zAppendingTiffWriter.fixOffsetsI  sÛ   € Ù™vØ4ˆCÜ˜sÓ#Ð#ä�u“ò 	-ˆAÙ)0�T—^‘^Ô%°d·m±m³oˆFØ�d×*Ñ*Ñ*ˆFÙ˜6 Uš?à˜A’:Ø+�CÜ& sÓ+Ð+ð ×+Ñ+¨FÔ3Ø—‘—‘˜C¤§¡Ô-Ø—‘¤§¡Ô.Ø—‘—‘˜AœrŸ{™{Õ+ÙØ×%Ñ% fÕ-à×$Ñ$ VÕ,ñ%	-rf   N)F)FF)r»   r¼   r½   r  r  r‹   rÌ  rÞ  rà  râ  rç  r¦  r¤  rÏ  r¬  r×  rÔ  rÖ  rÇ  rö  rÚ  r  r  r
  r  rÛ  r5  rÜ  r  r5   rf   r\   rÃ  rÃ  h  sˆ   „ ò€Jò(€Dóòò2ò.ò
òò
4ð #%§+¡+ó ò-ò-ò	4ò"òòò$ò$ò$ò$ò$òò!,ôF-rf   rÃ  c                ór  — | j                   j                  «       }| j                  }t        |j	                  dg «      «      }t        | d«      s|st        | ||«      S | j                  «       }	 t        |«      5 }| g|z   D ]y  }||_         ||_        t        |d«      sd}	n|j                  }	t        |	«      D ]@  }
|j                  |
«       |j                  «        t        |||«       |j                  «        ŒB Œ{ 	 d d d «       | j                  |«       y # 1 sw Y   ŒxY w# | j                  |«       w xY w)NÚappend_imagesrý  r   )r‹  r–  rŒ  rË  r¨  rÁ   r®  r¦  rÃ  rý  r§  r¬  r¶  rà  )r  r™  rñ  r‹  rŒ  r  Úcur_idxÚtfÚimsÚnfrrË   s              r\   Ú	_save_allr!  c  s  € Ø—.‘.×%Ñ%Ó'€KØ×$Ñ$€MÜ˜Ÿ™¨¸"Ó=Ó>€MÜ�2�zÔ"©=Ü�R˜˜XÓ&Ð&à�g‰g‹i€GðÜ  Ó$ð 	"¨Ø�t˜mÑ+ò "�Ø"-�”Ø$1�Ô!Ü˜s JÔ/Ø‘CàŸ,™,�Cä  ›:ò "�CØ—H‘H˜S”MØ—H‘H”JÜ˜#˜r 8Ô,Ø—K‘K•Mñ	"ñ"÷	"ð 	�‰�Õ÷	"ð 	"ûð 	�‰�Õús%   Á.D# Á9BDÃ=D# ÄD ÄD# Ä#D6z.tifz.tiffz
image/tiff)yÚ
__future__r   r¤  r©  Úloggingr  r¢  râ   rG  Úcollections.abcr   Ú	fractionsr   Únumbersr   r   Útypingr   r	   r
   Ú r   r   r   r   r   r   Ú_binaryr   r  r   r  r   r   Ú	getLoggerr»   rª  rY  r�  ÚIFD_LEGACY_APIr›  ró   rñ   r¦  rK  rL  rO  rD  rH  rI  r‘  rº  rQ  r[  rœ  rV  rW  rF  rX  r§  r’  r“  r”  Ú	PREDICTORr`  r\  r]  rZ  r   r¨  rP  rN  Ú
JPEGTABLESrJ  rž  r•  r�  r�  r_  ÚEXIFIFDr  r¡  ÚIMAGEJ_META_DATA_BYTE_COUNTSÚIMAGEJ_META_DATArC  r  r�  rT  rv   rR  rb   re   rp   ry   rÉ   rÑ   r‚   rj   rÎ   rÒ   ræ   r+  Ú
_IFDv2Baserè   rË   rå   rÈ   ÚsetattrrÓ  ÚImageFileDirectoryrí  rŠ  r®  rÃ  r!  Úregister_openrw  Úregister_saveÚregister_save_allÚregister_extensionsÚregister_mime)Úkr%  s   00r\   ú<module>r:     s7  ðõR #ã 	Û Û Û Û 	Û Û Ý *Ý ß $ß /Ñ /ç J× JÝ !Ý !Ý Ý à	ˆ×	Ñ	˜8Ó	$€ð €Ø€Ø€Ø€
à
€Ø
€ð €Ø€
Ø€Ø€Ø€Ø Ð Ø€	ØÐ Ø€Ø€Ø€Ø€Ø€Ø€ØÐ Ø€ØÐ Ø€Ø€	Ø	€Ø€	Ø€Ø€	Ø€
Ø€Ø€Ø	€Ø€Ø€Ø€
ØÐ ØÐ Ø€	Ø€Ø€Ø€
Ø
€Ø	€Ø€ð  %Ð ØÐ ðà€uðð €|ðð €xð	ð
 €xðð €zðð €{ðð €vðð Ððð 
ˆ=ðð 
ˆ:ðð 
Ððð 
ˆ>ðð 
ˆ=ðð 
ˆ?ðð  
ˆ6ð!ð" 
ˆ6ð#ð$ 
ˆ6ð%Ð ð* *:×)?Ñ)?Ó)A×B¡  A˜˜1™ÓBÐ ðzð ˆˆD�!�T˜2Ð ðzð ˆˆD�!�T˜2Ð ð	zð
 ˆˆD�!�T˜2Ð ðzð ˆˆD�!�T˜2Ð ðzð ˆˆD�!�T˜2Ð 
ðzð ˆˆD�!�T˜2Ð 
ðzð ˆˆD�!�T˜2Ð ðzð ˆˆD�!�T˜2Ð ðzð ˆˆD�!�T˜2Ð ðzð ˆˆD�!�T˜2Ð ðzð ˆˆD�!�T˜2Ð ðzð ˆˆD�!�T˜2Ð ðzð ˆˆD�!�T˜2Ð ðzð  ˆˆD�!�T˜2Ð ð!zð" ˆˆD�!�T˜2Ð ð#zð$ ˆˆD�!�T˜2Ð ð%zð& ˆˆD�!�T˜2Ð ñ'zð( ˆˆD�!�T˜2Ð ð)zð* ˆˆD�!�T˜2Ð ð+zð, ˆˆD�!�T˜2Ð ð-zð. ˆˆD�!�T˜2Ð ð/zð0 ˆˆD�!�T˜2Ð ð1zð2 ˆˆD�!�T˜2Ð ð3zð4 ˆˆD�!�T˜2Ð ð5zð6 ˆˆD�!�T˜2Ð ð7zð8 ˆˆD�!�T˜2Ð ð9zð: ˆˆD�!�T˜2Ð ð;zð< ˆˆD�!�T˜2Ð ð=zð> ˆˆD�!�T˜2Ð 
ð?zð@ ˆˆD�!�T˜2Ð 
ðAzðB ˆˆD�!�T˜2Ð 
ðCzðD ˆˆD�!�T˜2Ð 
ðEzðF ˆˆD�!�T˜2Ð ðGzðH ˆˆD�!�T˜2Ð òIzðJ ˆˆD�!�U˜BÐÐ!1ðKzðL ˆˆD�!�U˜BÐÐ!1ðMzðN ˆˆD�!�U˜BÐÐ!1ðOzðP ˆˆD�!�U˜BÐÐ!3ðQzðR ˆˆD�!�U˜BÐÐ!2ðSzðT ˆˆD�!�U˜BÐ ðUzðV ˆˆD�!�U˜BÐ ðWzðX ˆˆD�!�U˜BÐ ðYzðZ ˆˆD�!�U˜BÐ ð[zð\ ˆˆD�!�U˜BÐ ð]zð^ ˆˆD�!�U˜BÐ ð_zð` ˆˆD�!�U˜BÐ ðazðb ˆˆD�!�U˜BÐ ðczðd ˆˆD�!�U˜BÐ ðezðf ˆˆD�!�V˜TÐ" Lðgzðh ˆˆD�!�V˜TÐ" Lðizðj ˆˆD�!�Y Ð# ^òkzðl ˆˆD�!�Y Ð# ^ðmzðn ˆˆD�!�Y Ð#Ð%5ðozðp ˆˆD�!�Y Ð#Ð%5ðqzðr ˆˆD�!�\ 2Ð&Ð(8ðszðt ˆˆD�!�\ 2Ð&Ð(8ðuzðv ˆˆD�!�\ 4Ð(Ð*:ðwzðx ˆˆD�!�\ 4Ð(Ð*:ðyzðz ˆˆD�!�_ fÐ-Ð/@ð{zð| ˆˆD�!�_ fÐ-Ð/@ð}zð~ ˆˆD�!Ð'¨Ð3Ð5Gðzð@ ˆˆD�!Ð'¨Ð3Ð5GðAzðB ˆˆD�!�\ 4Ð(Ð*:ðCzðD ˆˆD�!�\ 4Ð(Ð*:ðEzðF ˆˆD�!�_ fÐ-Ð/@ðGzðH ˆˆD�!�_ fÐ-Ð/@ðIzðJ ˆˆD�!Ð'¨Ð3Ð5GðKzðL ˆˆD�!Ð'¨Ð3Ð5GòMzðN ˆˆD�!�\ 4Ð(Ð*:ðOzðP ˆˆD�!�\ 4Ð(Ð*:ðQzðR ˆˆD�!�_ fÐ-Ð/@ðSzðT ˆˆD�!�_ fÐ-Ð/@ðUzðV ˆˆD�!Ð'¨Ð3Ð5GðWzðX ˆˆD�!Ð'¨Ð3Ð5GðYzðZ ˆˆD�!�\ 6Ð*Ð,<ð[zð\ ˆˆD�!�\ 6Ð*Ð,<ð]zð^ ˆˆD�!�\ 2Ð&Ð(:ð_zð` ˆˆD�!�\ 2Ð&Ð(:ðazðb ˆˆD�!Ð% rÐ*Ð,@ðczðd ˆˆD�!Ð% rÐ*Ð,@ðezðf ˆˆD�!Ð% tÐ,Ð.Bðgzðh ˆˆD�!Ð% tÐ,Ð.Bðizðj ˆˆD�!Ð% tÐ,Ð.Bðkzðl ˆˆD�!Ð% tÐ,Ð.Bðmzðn ˆˆD�!Ð% tÐ,Ð.Bòozðp ˆˆD�!Ð% tÐ,Ð.Bðqzðr ˆˆD�!�T˜2Ð ðszðt ˆˆD�!�T˜2Ð ðuzðv ˆˆD�!�T˜2Ð ðwzðx ˆˆD�!�T˜2Ð ðyzðz ˆˆD�!�T˜2Ð ð{zð| ˆˆD�!�T˜2Ð ð}zð~ ˆˆD�!�T˜2Ð ðzð@ ˆˆD�!�T˜2Ð ðAzðB ˆˆD�!�T˜2Ð ðCzðD ˆˆD�!�T˜2Ð ðEzðF ˆˆD�!�T˜2Ð ðGzðH ˆˆD�!�T˜2Ð ðIzðJ ˆˆD�!�T˜2Ð 
ðKzðL ˆˆD�!�T˜2Ð 
ðMzðN ˆˆD�!�V˜TÐ" LðOzðP ˆˆD�!�V˜TÐ" LñQzðR ˆˆD�!�T˜2Ð ØˆˆD�!�T˜2Ð ØˆˆD�!�\ 2Ð&Ð(8ØˆˆD�!�\ 2Ð&Ð(8ØˆˆD�!�_ dÐ+Ð->ØˆˆD�!�_ dÐ+Ð->ØˆˆD�!Ð'¨Ð0Ð2DØˆˆD�!Ð'¨Ð0Ð2DØˆˆD�!Ð% rÐ*Ð,@ØˆˆD�!�T˜2Ð 
ØˆˆD�!�T˜2Ð 
ð ˆˆD�!�Y Ð# _ØˆˆD�!�Y Ð# _ØˆˆD�!�Y Ð# ^ØˆˆD�!�Y Ð# ^ñsz€	ñx ÑA°yÔAÓAÐ ò€ò"ò%òð" €Ø€òôy'�(ô y'òx	òòñ" Ø  S Ñ)�Jà€Jôm$˜Jô m$ð` (6Ð Ô $Ø(7Ð Ô %Ø�—‘“ò J�I€CˆØ�<‰<˜˜SÓ!€DÙÐ! 7¨T¡>°>À#Ñ3FÀqÑ3IÔJÙÐ! 8¨d¡?°OÀCÑ4HÕIðJð �O S¨$ôXÐ1ô Xðx +Ð ôYH�I×'Ñ'ô YHðFð ˆ#ˆr�1�a˜˜tÐ	$ðð ˆ#ˆr�1�a˜˜tÐ	$ð	ð
 	ˆ4��Q˜˜6 1Ð
%ðð ˆ#ˆr�1�a˜˜tÐ	$ðð 	ˆ4��Q˜˜6 1Ð
%ðð ˆ'�2�q˜!˜U DÐ	)ðð ˆV�R˜˜A˜u dÐ+ðð ˆg�r˜1˜a ¨Ð-ðð ˆ'�2�q˜!˜U DÐ	)ðð 
ˆE�2�q˜!˜Y¨Ð-ðð ˆV�R˜˜A˜|¨QÐ/ðð ˆV�R˜˜A˜|¨QÐ/ðð ˆV�R˜˜A˜|¨TÐ2ðð  ˆg�r˜1˜a ¨DÐ1ð!ð" 
ˆE�2�q˜!˜Y¨Ð-ð#ð$ ˆx˜˜Q  5¨$Ð/ð%ð& ˆg�r˜1˜a ¨Ð-ð'ð( ˜˜Q  5¨$Ð/Ø˜˜Q  5¨$Ð/ò+€	ò2g"÷T	x-ñ x-òvð> €× Ñ �M×(Ñ(¨-¸Ô AØ €× Ñ �M×(Ñ(¨%Ô 0Ø €× Ñ ˜×,Ñ,¨iÔ 8à €× Ñ ˜-×.Ñ.°¸Ð0AÔ Bà €× Ñ �M×(Ñ(¨,Õ 7ùóu? Cs   Ä!]/