403Webshell
Server IP : 146.190.157.162  /  Your IP : 216.73.217.127
Web Server : Apache
System : Linux ubuntu-s-2vcpu-4gb-amd-sfo3-01-KIT-DIGITAL 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64
User : businessweek ( 639)
PHP Version : 8.2.10-2ubuntu2.2
Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_signal,pcntl_signal_dispatch,pcntl_getpriority,pcntl_setpriority,dl,putenv,parse_ini_file,show_source
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /usr/lib/python3/dist-packages/PIL/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3/dist-packages/PIL/__pycache__/TiffImagePlugin.cpython-311.pyc
�

D#�d�,��T�ddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZm
Z
ddlmZmZmZmZmZmZddlmZddlmZdd	lmZdd
lmZeje��ZdZdZ dZ!d
Z"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4d Z5d!Z6d"Z7d#Z8d$Z9d%Z:d&Z;d'Z<d(Z=d)Z>d*Z?d+Z@d,ZAd-ZBd.ZCd/ZDd0ZEd1ZFd2ZGd3ZHd4ZId5ZJd6ZKd7ZLidd8�d9d:�d;d<�d=d>�d?d@�dAdB�dCdD�dEdF�dGdH�dIdJ�dKdL�dMdN�dOdP�dQdR�dSdT�dUdV�dWdX�ZMdY�eM�N��D��ZOie#ddZddZd[fd\�e$ddZddZd[fd\�e#ddZd9dZd[fd]�e$ddZd9dZd[fd]�e#ddZddZd[fd^�e$ddZddZd[fd^�e#ddZd9dZd[fd_�e$ddZd9dZd[fd_�e#ddZdd`d[fda�e$ddZdd`d[fda�e#ddZd9d`d[fdb�e$ddZd9d`d[fdb�e#ddZdd`d[fdc�e$ddZdd`d[fdc�e#ddZd9d`d[fdd�e$ddZd9d`d[fdd�e#ddZdded[fdf�ie$ddZdded[fdf�e#ddZd9ded[fdg�e$ddZd9ded[fdg�e#ddZdded[fdh�e$ddZdded[fdh�e#ddZd9ded[fdi�e$ddZd9ded[fdi�e#ddZddjd[fdk�e$ddZddjd[fdk�e#ddZd9djd[fdl�e$ddZd9djd[fdl�e#ddZddjd[fdm�e$ddZddjd[fdm�e#dd`ddjd[fdm�e$dd`ddjd[fdm�e#ddZd9djd[fdn�e$ddZd9djd[fdn��ie#ddZddod[fdp�e#ddZddqd[fdr�e#ddZddqd[fdr�e$ddZddqd[fds�e#ddZd9dqd[fdt�e#dd`ddqd[fdu�e$dd`ddqd[fdv�e#ddwddxd[fdy�e$ddwddxd[fdz�e#ddZddxd[fd{�e#dd`ddxd[fd|�e$dd`ddxd[fd}�e#ddwddxd[fdy�e$ddwddxd[fdz�e#ddZdd~d`fd�e$ddZdd~d`fd�e#d9dZdd�d[fd���ie$d9dZdd�d[fd��e#d9dZd9d�d[fd��e$d9dZd9d�d[fd��e#d9dZdd�d[fd��e$d9dZdd�d[fd��e#d9dZdd�d�fd��e$d9dZdd�d�fd��e#d9dZdd�d�fd��e$d9dZdd�d�fd��e#d9dZdd�d�fd��e$d9dZdd�d�fd��e#d9dZdd�dZfd��e$d9dZdd�dZfd��e#d9dZdd�d�fd��e$d9dZdd�d�fd��e#d9dZdd�d�fd��e$d9dZdd�d�fd���ie#d9dZdd�d`fd��e$d9dZdd�d`fd��e#d9dZdd�d�fd��e$d9dZdd�d�fd��e#d9dZdd�d�fd��e$d9dZdd�d�fd��e#d9dZdd�d�fd��e$d9dZdd�d�fd��e#d9dZdd�d[fd��e$d9dZdd�d[fd��e#d9dZdd�d[fd��e$d9dZdd�d[fd��e#d9dZdd�d�fd��e$d9dZdd�d�fd��e#d9dZdd�dZfd��e$d9dZdd�dZfd��e#d9dZdd�d`fd���ie$d9dZdd�d`fd��e#d;dZddZd[fd��e$d;dZddZd[fd��e#d;dZd9dZd[fd��e$d;dZd9dZd[fd��e#d;dZdd`d[fd��e$d;dZdd`d[fd��e#d;dZd9d`d[fd��e$d;dZd9d`d[fd��e#d;dZdded[fd��e$d;dZdded[fd��e#d;dZd9ded[fd��e$d;dZd9ded[fd��e#d;dZddjd[fd��e$d;dZddjd[fd��e#d;dZdd~d`fd��e$d;dZdd~d`fd���e#d;dZd9djd[fd�e$d;dZd9djd[fd�e#d?dZdd�d[fd�e$d?dZdd�d[fd�e#d?dZdd�d�fd�e$d?dZdd�d�fd�e#d?dZdd�d�fd�e$d?dZdd�d�fd�e#d?dZdd�d[fd�e#dAdZdd�d[fd�e$dAdZdd�d[fd�e#dEdZdd�d[fd�e$dEdZdd�d[fd�i
�ZPeQd��ePD����ZRgd��ZSd��ZTd��ZUd��ZViZWiZXGd��d�e
��ZYGd��d�e��ZZeWeZ_WeXeZ_XejN��D]M\Z[Z\e\�]d�d���Z\e^eZd�e\zeWe[d��e^eZd�e\zeXe[���N[W[X[[[\Gd��d�eZ��Z_e_Z`Gd��d�ej��Zaid�d�e#dddZdf�d�d�e#dddjdf�d�d�e#ddd~d9f�d�d�e#d;ddjdf�d�d�e#d;dd~d9f�d�d�e#dd9dxdf�d�d�e#dddqdf�d�d�e#dd9dqdf�d�d�e#dd;dxdf�d�d�e#d9dd�df�d�d�e#d9dd�df�d�d�e#d9dd�d9f�d�d�e#d?dd�df�d�d�e#dAdd�df�d�d�e#dEdd�df�d�d�e$dd9dxdf�d�d�e$dddqdf�d�e$dd9dqdfd�e$dd;dxdfd֜�ZbdׄZcGd؄d٦�ZddڄZeejfeajgeaeT��ejheajgec��ejieajgee��ejjeajgd�d�g��ejkeajgdݦ�dS)��N)�MutableMapping)�Fraction)�Number�Rational�)�ExifTags�Image�	ImageFile�ImageOps�ImagePalette�TiffTags)�i16be)�i32be��o8��TYPESFT�sIIsMM�iiiii
i�iiiiiii(i-i1i2i;i=i@iBiC�DiEiJiRiSi[iii��i��iI�is�ii�i�ii��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��webpc��i|]\}}||��	S�r1)�.0�k�vs   �5/usr/lib/python3/dist-packages/PIL/TiffImagePlugin.py�
<dictcomp>r6�s��B�B�B���A��1�B�B�B��rr1)�1z1;I)r9z1;IR)r9r9)r9z1;R)r)�LzL;2I)r:zL;2IR)r:zL;2)r:zL;2R)r)r:zL;4I)r:zL;4IR)r:zL;4)r:zL;4R)r%)r:zL;I)r:zL;IR)r:r:)r:zL;R)�)�I;16zI;12)�)r<r<)�I;16Br>)r<zI;16R)�I�I;16S)r?�I;16BS)r)� )�F�F;32F)rC�F;32BF)r?zI;32N)r?�I;32S)r?�I;32BS)r%r%)�LArH)r%r%r%)�RGBrI)rIzRGB;R)r%r%r%r%)�RGBArJ�r)�RGBXrL)r%r%r%r%r%�rr)rL�RGBXX)r%r%r%r%r%r%)rrr)rL�RGBXXX)rJ�RGBa)rr)rJ�RGBaX)rrr)rJ�RGBaXX)rr)rJ�RGBAX)rrr)rJ�RGBAXX)i�)r=r=r=)rIzRGB;16L)rIzRGB;16B)r=r=r=r=)rJzRGBA;16L)rJzRGBA;16B)rLzRGBX;16L)rLzRGBX;16B)rJzRGBa;16L)rJzRGBa;16B)�PzP;1)rUzP;1R)rUzP;2)rUzP;2R)rUzP;4)rUzP;4R)rUrU)�PArV)rUzP;R)�CMYKrW)rW�CMYKX)rW�CMYKXX)rWzCMYK;16L)rIrL)�LABrZc#�@K�|]}t|d��V��dS)rN)�len)r2�key_tps  r5�	<genexpr>r^s,����A�A�V�#�f�Q�i�.�.�A�A�A�A�A�Ar7)�MM*�II*sMM*sII*sMM+sII+c�$�|dd�tvS�Nr)�PREFIXES��prefixs r5�_acceptrfs���"�1�"�:��!�!r7c��t|��dk}t|rd|zn|���|��}|r|ddd�n|S)Nr���)�abs�IFDRational�limit_rational)�val�max_val�inv�n_ds    r5�_limit_rationalrpsR��

�c�(�(�Q�,�C�
��-�a�#�g�g�#�
.�
.�
=�
=�g�
F�
F�C��$�3�t�t��t�9�9��$r7c��t|��}|j|jf}t|��|krt	|t|����}t
|��|krt|�}t	||��}|S�N)r�	numerator�denominator�minrpri�max)rlrm�min_val�fracros     r5�_limit_signed_rationalrysp���C�=�=�D�
�.�$�*�
*�C�
�3�x�x�'����c�3�w�<�<�0�0��
�3�x�x�'�����n���c�7�+�+���Jr7c���eZdZdZ	dZd*d�Zed���Zed���Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Z	ed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Z ed��Z!ed ��Z"ed!��Z#ed"��Z$ed#��Z%ed$��Z&ed%��Z'ed&��Z(ed'��Z)e*e+d(��r
ed(��Z,d)Sd)S)+rjz�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�_denominator�_valrc��t|t��r&|j|_|j|_|j|_dSt|t��r|j|_|j|_n||_||_|dkrtd��|_dS|dkrt|��|_dSt||��|_dS)z�
        :param value: either an integer numerator, a
        float/rational/other number, or an IFDRational
        :param denominator: Optional integer denominator
        Nr�nanr)	�
isinstancerjrsr{rtr|r}r�float)�self�valuerts   r5�__init__zIFDRational.__init__?s����e�[�)�)�	�#�o�D�O� %� 1�D���
�D�I��F��e�X�&�&�	,�#�o�D�O� %� 1�D���#�D�O� +�D���!����e���D�I�I�I�
�A�
�
� ����D�I�I�I� ���4�4�D�I�I�Ir7c��|jSrr)r{�r�s r5rszIFDRational.numeratorYs
����r7c��|jSrr)r|r�s r5rtzIFDRational.denominator]s��� � r7c��|jdkr|j|jfS|j�|��}|j|jfS)z�

        :param max_denominator: Integer, the maximum denominator value
        :returns: Tuple of (numerator, denominator)
        r)rtrsr}�limit_denominator)r��max_denominator�fs   r5rkzIFDRational.limit_rationalasF����q� � ��>�4�#3�3�3��I�'�'��8�8���{�A�M�)�)r7c�D�tt|j����Srr)�strr�r}r�s r5�__repr__zIFDRational.__repr__ns���5���#�#�$�$�$r7c�4�|j���Srr)r}�__hash__r�s r5r�zIFDRational.__hash__qs���y�!�!�#�#�#r7c��|j}t|t��r|j}t|t��rt|��}||kSrr)r}r�rjr�)r��otherrls   r5�__eq__zIFDRational.__eq__tsI���i���e�[�)�)�	��J�E��e�U�#�#�	���*�*�C��e�|�r7c�*�|j|j|jgSrr)r}r{r|r�s r5�__getstate__zIFDRational.__getstate__|s���	�4�?�D�,=�>�>r7c�r�t�|d��|\}}}||_||_||_dS)Nr)rjr�r}r{r|)r��stater}r{r|s     r5�__setstate__zIFDRational.__setstate__s@�����T�1�%�%�%�).�&��j�,���	�$���(����r7c����fd�}|S)Nc�4��t|j���|�Srr)�getattrr})r��args�ops  �r5�delegatez'IFDRational._delegate.<locals>.delegate�s���)�7�4�9�b�)�)�4�0�0r7r1)r�r�s` r5�	_delegatezIFDRational._delegate�s#���	1�	1�	1�	1�	1��r7�__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__Nr8)-�__name__�
__module__�__qualname__�__doc__�	__slots__r��propertyrsrtrkr�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��hasattrrr�r1r7r5rjrj1s����������
7�I�5�5�5�5�4����X���!�!��X�!�*�*�*�%�%�%�$�$�$����?�?�?�)�)�)������i�	�"�"�G��y��$�$�H��i�	�"�"�G��y��$�$�H��i�	�"�"�G��y��$�$�H��)�M�*�*�K��9�^�,�,�L��9�^�,�,�L��I�o�.�.�M��i�	�"�"�G��y��$�$�H��i�	�"�"�G��y��$�$�H��i�	�"�"�G��i�	�"�"�G��i�	�"�"�G��	�+�&�&�I�
�Y�x�
 �
 �F�
�Y�x�
 �
 �F�
�Y�x�
 �
 �F�
�Y�x�
 �
 �F��y��$�$�H��y��$�$�H��	�+�&�&�I��	�+�&�&�I��w�x��#�#�'��)�I�&�&����'�'r7rjc�f�eZdZdZd>d�Zed���Zed���Zed���Zej	d���Zd	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zeeeejddfejddfejddfejddfej d d!fej!d"d#fej"d$d%fej#ddfej$d&d'fg	����ed(d(��d?d*���Z%ed(��d+���Z&ed,d(��d?d-���Z'ed,��d.���Z(ed/d0��d?d1���Z)ed/��d2���Z*ed3d(��d?d4���Z+ed3��d5���Z,ed6d0��d?d7���Z-ed6��d8���Z.d9�Z/d:�Z0d@d<�Z1d=�Z2dS)A�ImageFileDirectory_v2aThis 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``.

    �II*Nc��t|��s"dt|���d�}t|���|�|n	|dd�|_|jtkrd|_n)|jtkrd|_nd}t|���|ddk|_||_i|_		|�
��|jr|�d	|d
d���n|�d|dd���\|_d
|_
dS)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.
        znot a TIFF file (header z not valid)Nr�>�<znot a TIFF IFD�+�Qr%r:rF)rf�repr�SyntaxError�_prefix�MM�_endian�II�_bigtiff�group�tagtype�reset�_unpack�next�_legacy_api)r��ifhrer��msgs     r5r�zImageFileDirectory_v2.__init__�s���s�|�|�	#�C�T�#�Y�Y�C�C�C�C��c�"�"�"�!'�!3�v�v��R�a�R�����<�2����D�L�L�
�\�R�
�
��D�L�L�"�C��c�"�"�"��A��"���
���
����'��
�
����*.�-�W�D�L�L��c�!�"�"�g�&�&�&�T�\�\�#�s�ST�SU�SU�w�=W�=W�	���!����r7c��|jSrr)r�r�s r5�<lambda>zImageFileDirectory_v2.<lambda>���4�<�r7c��|jSrr)�_offsetr�s r5r�zImageFileDirectory_v2.<lambda>r�r7c��|jSrr)r�r�s r5r�zImageFileDirectory_v2.<lambda>s	��t�'7�r7c�$�d}t|���)Nz"Not allowing setting of legacy api)�	Exception)r�r�r�s   r5�
legacy_apiz ImageFileDirectory_v2.legacy_apis��2����n�n�r7c�Z�i|_i|_i|_i|_d|_d|_dSrr)�_tags_v1�_tags_v2�_tagdatar��_nextr�r�s r5r�zImageFileDirectory_v2.resets0����
���
���
������
�����r7c�:�tt|����Srr)r��dictr�s r5�__str__zImageFileDirectory_v2.__str__!s���4��:�:���r7c�D���fd�����D��S)z�
        :returns: dict of name|key: value

        Returns the complete tag dictionary, with named tags where possible.
        c�V��i|]%\}}tj|�j��j|��&Sr1)r
�lookupr��name)r2�coder�r�s   �r5r6z/ImageFileDirectory_v2.named.<locals>.<dictcomp>*s@���
�
�
���e�
�O�D�$�*�-�-�2�E�
�
�
r7)�itemsr�s`r5�namedzImageFileDirectory_v2.named$s6���
�
�
�
�#�z�z�|�|�
�
�
�	
r7c�n�tt|j��t|j��z��Srr)r\�setr�r�r�s r5�__len__zImageFileDirectory_v2.__len__/�)���3�t�}�%�%��D�M�(:�(:�:�;�;�;r7c��||jvr?|j|}|j|}|j|\}}||||j��||<|j|}|jrt|ttf��s|f}|Srr)r�r�r��_load_dispatchr�r��tuple�bytes)r��tag�data�typ�size�handlerrls       r5�__getitem__z!ImageFileDirectory_v2.__getitem__2s����d�m�#�#��=��%�D��,�s�#�C� �/��4�M�D�'����d�D�O�<�<�D��I��m�C� ���?�	�:�c�E�5�>�#B�#B�	��&�C��
r7c�&�||jvp||jvSrr)r�r��r�r�s  r5�__contains__z"ImageFileDirectory_v2.__contains__=����d�m�#�;�s�d�m�';�;r7c�>�|�|||j��dSrr)�_setitemr�)r�r�r�s   r5�__setitem__z!ImageFileDirectory_v2.__setitem__@s ���
�
�c�5�$�/�2�2�2�2�2r7c	����tttf}tj||j���t
||��r|gn|}||jv�r��jr�j|j|<�n�tj	|j|<td�|D����r;td�|D����rtjntj|j|<�n8td�|D����r�td�|D����rtj
|j|<n�td�|D����rtj|j|<n�td�|D����rtjntj|j|<n�td�|D����rtj|j|<n[td�|D����rtj|j|<n-td	�|D����rtj|j|<|j|tj	kr
d
�|D��}n'|j|tjkrd�|D��}|j|tjkot
|t(��}|st+�fd�|D����}|r|jn|j}|s��jd
ks7|j|tjks�j��t3|��d
krz|sx|r(|j|tjtjfvr|f}	|\||<dS#t4$r7t7jd|�dt3|���d���|d||<YdSwxYw|||<dS)Nc3�@K�|]}t|t��V��dSrr)r�rj�r2r4s  r5r^z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Ns,����B�B�a�z�!�[�1�1�B�B�B�B�B�Br7c3�"K�|]
}|dkV��dS�rNr1rs  r5r^z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Qs&����6�6�!�q�A�v�6�6�6�6�6�6r7c3�@K�|]}t|t��V��dSrr)r��intrs  r5r^z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>T�,����<�<���A�s�+�+�<�<�<�<�<�<r7c3�6K�|]}d|cxkodkncV��dS)rrNr1rs  r5r^z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Us6����:�:�a�1��>�>�>�>�E�>�>�>�>�:�:�:�:�:�:r7c3�6K�|]}d|cxkodkncV��dS)i���i�Nr1rs  r5r^z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Ws>����B�B�a�X��1�1�1�1�E�1�1�1�1�B�B�B�B�B�Br7c3�"K�|]
}|dkV��dSr
r1rs  r5r^z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>\s&����":�":�a�1��6�":�":�":�":�":�":r7c3�@K�|]}t|t��V��dSrr)r�r�rs  r5r^z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>_�,����>�>�!��A�u�-�-�>�>�>�>�>�>r7c3�@K�|]}t|t��V��dSrr)r�r�rs  r5r^z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>ar
r7c3�@K�|]}t|t��V��dSrr)r�r�rs  r5r^z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>crr7c�h�g|]/}t|t��r|�dd��n|��0S)�ascii�replace)r�r��encoders  r5�
<listcomp>z2ImageFileDirectory_v2._setitem.<locals>.<listcomp>gsJ������1;�1�c�0B�0B�I�����)�,�,�,����r7c�Z�g|](}t|t��rt|��n|��)Sr1)r�rr�rs  r5rz2ImageFileDirectory_v2._setitem.<locals>.<listcomp>ls1��L�L�L��*�Q��"4�"4�;�e�A�h�h�h�!�L�L�Lr7c3�B�K�|]}��|��V��dSrr)�cvt_enum)r2r��infos  �r5r^z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>ps/�����D�D�E�4�=�=��/�/�D�D�D�D�D�Dr7rzMetadata Warning, tag z had too many entries: z, expected 1r)rr�r�r
r�r�r�r��type�	UNDEFINED�all�RATIONAL�SIGNED_RATIONAL�SHORT�SIGNED_SHORT�LONG�SIGNED_LONG�DOUBLE�ASCII�BYTEr�r�r�r��lengthr\�
ValueError�warnings�warn)	r�r�r�r��	basetypes�values�is_ifd�destrs	        @r5rzImageFileDirectory_v2._setitemCs�����U�C�(�	���s�D�J�/�/��&�u�i�8�8�C�%���e���d�l�"�"��y�
6�$(�I���S�!�!�$,�$6���S�!��B�B�6�B�B�B�B�B�6��6�6�v�6�6�6�6�6�6��)�)�%�5��L��%�%�
�<�<�V�<�<�<�<�<�6��:�:�6�:�:�:�:�:�	�,4�N���S�)�)��B�B�6�B�B�B�B�B��,4�,A���S�)�)� #�":�":�6�":�":�":�:�:�6�H�M�M�!)�!5���S�)�)�
�>�>�v�>�>�>�>�>�6�(0��D�L��%�%��<�<�V�<�<�<�<�<�6�(0��D�L��%�%��>�>�v�>�>�>�>�>�6�(0�
�D�L��%��<���� 2�2�2�������F�F��\�#�
�(�"3�
3�
3�L�L�V�L�L�L�F���c�"�h�m�3�P�
�6�4�8P�8P���	E��D�D�D�D�V�D�D�D�D�D�F� *�=�t�}�}��
���	�
�[�A�
�
��|�C� �H�M�1�1���#��F���q�(8�(8��(8��
#�d�l�3�/��!��(�4���!���
&�%���c������
&�
&�
&��
�1�S�1�1��6�{�{�1�1�1����#�1�I��S�	�	�	�	�

&�����D��I�I�Is�"L+�+=M,�+M,c��|j�|d��|j�|d��|j�|d��dSrr)r��popr�r�rs  r5�__delitem__z!ImageFileDirectory_v2.__delitem__�sP���
���#�t�$�$�$��
���#�t�$�$�$��
���#�t�$�$�$�$�$r7c�n�tt|j��t|j��z��Srr)�iterr�r�r�r�s r5�__iter__zImageFileDirectory_v2.__iter__��)���C��
�&�&��T�]�);�);�;�<�<�<r7c�<�tj|j|z|��Srr)�struct�unpackr�)r��fmtr�s   r5r�zImageFileDirectory_v2._unpack�s���}�T�\�C�/��6�6�6r7c�6�tj|j|zg|�R�Srr)r:�packr�)r�r<r/s   r5�_packzImageFileDirectory_v2._pack�s!���{�4�<�#�-�7��7�7�7�7r7c������fd�}|S)Nc���ddlm}|j�d��r&|jdd��dd��|�<�|ft
�<|S)Nrr�load_r�_� )r
rr��
startswithrr�)�funcr�idxr�s  ��r5�	decoratorz9ImageFileDirectory_v2._register_loader.<locals>.decorator�se���'�'�'�'�'�'��}�'�'��0�0�
A�!�]�1�2�2�.�6�6�s�C�@�@��c�
�"&��*�N�3���Kr7r1)rGr�rHs`` r5�_register_loaderz&ImageFileDirectory_v2._register_loader�s*����	�	�	�	�	�	��r7c����fd�}|S)Nc���|t�<|Srr)�_write_dispatch)rFrGs �r5rHz9ImageFileDirectory_v2._register_writer.<locals>.decorator�s���#'�O�C� ��Kr7r1)rGrHs` r5�_register_writerz&ImageFileDirectory_v2._register_writer�s$���	�	�	�	�	��r7c����ddlm}|\}�}|||<tjd�z����d��fd�	ft|<�fd�t
|<dS)Nrr�=Tc�X��|�t|���z����|��Srr)r�r\)r�r�r�r<r�s   ��r5r�z7ImageFileDirectory_v2._register_basic.<locals>.<lambda>�s/�������D�	�	�T� 1�8�3�8�8�$�?�?�r7c�J���d���fd�|D����S)Nr7c3�D�K�|]}���|��V��dSrr)r?)r2r�r<r�s  ��r5r^zJImageFileDirectory_v2._register_basic.<locals>.<lambda>.<locals>.<genexpr>�s1�����@�@��T�Z�Z��U�+�+�@�@�@�@�@�@r7��join)r�r/r<s` �r5r�z7ImageFileDirectory_v2._register_basic.<locals>.<lambda>�s0�����H�H�@�@�@�@�@��@�@�@�@�@�r7�T)r
rr:�calcsizer�rL)�idx_fmt_namerrGr�r<r�s    @@r5�_register_basicz%ImageFileDirectory_v2._register_basic�s�����#�#�#�#�#�#�%���S�$���c�
���s�S�y�)�)���
�
�
�
�
�
�
��s�� 
� 
� 
� 
�����r7�H�shortr:�long�bzsigned byte�hzsigned short�lzsigned longr�r��d�doubler��long8rTc��|Srrr1�r�r�r�s   r5�	load_bytezImageFileDirectory_v2.load_byte�����r7c��t|t��rt|��}t|t��rt|f��}|Srr)r�rjrr��r�r�s  r5�
write_bytez ImageFileDirectory_v2.write_byte�sC���d�K�(�(�	��t�9�9�D��d�C� � �	"��$��>�>�D��r7rc�l�|�d��r
|dd�}|�dd��S)N�rhzlatin-1r)�endswith�decodercs   r5�load_stringz!ImageFileDirectory_v2.load_string�s7���=�=����	�����9�D��{�{�9�i�0�0�0r7c��t|t��rt|��}t|t��s|�dd��}|dzS)Nrrrj)r�rr�r�r�r�r�s  r5�write_stringz"ImageFileDirectory_v2.write_string�sP���e�S�!�!�	���J�J�E��%��'�'�	5��L�L��)�4�4�E��u�}�r7rr%c
�����|�t|��dz�d�|��}�fd��t�fd�t|ddd�|ddd���D����S)Nrr:c�0���r||fnt||��Srr�rj��ar\r�s  �r5�combinez4ImageFileDirectory_v2.load_rational.<locals>.combine�� ���'�>�A�q�6�6�[��A�->�->�>r7c3�6�K�|]\}}�||��V��dSrrr1�r2�num�denomrvs   �r5r^z6ImageFileDirectory_v2.load_rational.<locals>.<genexpr>��3�����V�V�Z�S�%�W�W�S�%�(�(�V�V�V�V�V�Vr7rr�r�r\r��zip�r�r�r��valsrvs  ` @r5�
load_rationalz#ImageFileDirectory_v2.load_rational�������|�|�s�4�y�y�A�~�0�0�0�$�7�7��	?�	?�	?�	?�	?��V�V�V�V�3�t�C�C�a�C�y�$�q�t�RS�t�*�;U�;U�V�V�V�V�V�Vr7c�F��d��fd�|D����S)Nr7c3�P�K�|] }�jdgt|d���R�V��!dS)�2Ll��N)r?rp�r2rxr�s  �r5r^z7ImageFileDirectory_v2.write_rational.<locals>.<genexpr>�sR�����
�
�DH�J�D�J�t�?�o�d�I�>�>�?�?�?�
�
�
�
�
�
r7rS�r�r/s` r5�write_rationalz$ImageFileDirectory_v2.write_rational�s?����x�x�
�
�
�
�LR�
�
�
�
�
�	
r7r#c��|Srrr1rcs   r5�load_undefinedz$ImageFileDirectory_v2.load_undefined�rer7c�v�t|t��r#t|���dd��}|S)Nrr)r�rr�rros  r5�write_undefinedz%ImageFileDirectory_v2.write_undefineds4���e�S�!�!�	:���J�J�%�%�g�y�9�9�E��r7�
c
�����|�t|��dz�d�|��}�fd��t�fd�t|ddd�|ddd���D����S)Nrr^c�0���r||fnt||��Srrrsrts  �r5rvz;ImageFileDirectory_v2.load_signed_rational.<locals>.combinerwr7c3�6�K�|]\}}�||��V��dSrrr1rys   �r5r^z=ImageFileDirectory_v2.load_signed_rational.<locals>.<genexpr>r|r7rrr}rs  ` @r5�load_signed_rationalz*ImageFileDirectory_v2.load_signed_rationalr�r7c�F��d��fd�|D����S)Nr7c	3�R�K�|]!}�jdgt|dd���R�V��"dS)�2li���i�N)r?ryr�s  �r5r^z>ImageFileDirectory_v2.write_signed_rational.<locals>.<genexpr>sX�����
�
��
�D�J�t�P�4�T�9�h�O�O�P�P�P�
�
�
�
�
�
r7rSr�s` r5�write_signed_rationalz+ImageFileDirectory_v2.write_signed_rationals?����x�x�
�
�
�
��
�
�
�
�
�	
r7c��|�|��}t|��|kr%d|�dt|���d�}t|���|S)Nz&Corrupt EXIF data.  Expecting to read � bytes but only got z. )�readr\�OSError)r��fpr��retr�s     r5�_ensure_readz"ImageFileDirectory_v2._ensure_readsj���g�g�d�m�m���s�8�8�t���L�%)�L�L�?B�3�x�x�L�L�L�
��#�,�,���
r7c
��|���|���|_	|jr*|�d|�|d����n)|�d|�|d����d}t
|��D�]K}|jr*|�d|�|d����n)|�d|�|d	����\}}}}tj||j	��j
}tj|d
��}	d|�d|�d
|	�d|�d�	}
	|j
|\}}n0#t$r#t�|
d|��z��Y��wxYw||z}
|
|jrdndkr�|���}|�|jrdnd|��\}|
d|�d|��z
}
|�|��t%j||
��}|�|��n
|d|
�}t)|��|
krFt+jd|
�dt)|���d|����t�|
�����|st�|
�����||j|<||j|<|
d|
dkrd|
znt3|��zz
}
t�|
����M|jr*|�d|�|d����n)|�d|�|d����\|_dS#t6$r,}
t+jt9|
����Yd}
~
dSd}
~
wwxYw)Nr�r%rYrr�HHQ8s��HHL4sr;�unknownztag: � (�
) - type: �)z - unsupported type rr:z Tag Location: z - Data Location: z/Possibly corrupt EXIF data.  Expecting to read r�z. Skipping tag �
 - value: rB�<table: %d bytes>)r��tellr�r�r�r��ranger
r�r�r�r�getr��KeyError�logger�debug�seekr
�
_safe_readr\r,r-r�r�r�r�r�r�)r�r��	tag_count�ir�r��countr��tagname�typnamer��	unit_sizer�r��here�offsets                r5�loadzImageFileDirectory_v2.load"s����
�
�����w�w�y�y���=	��=�A����S�$�"3�"3�B��":�":�;�;�;��\�\�#�t�'8�'8��Q�'?�'?�@�@��	�I�
�9�%�%�.
"�.
"���}�J�D�L�L��$�*;�*;�B��*C�*C�D�D�D����g�t�/@�/@��R�/H�/H�I�I�&��S�%��#�/�#�t�z�:�:�?���)�C��3�3��I�g�I�I��I�I��I�I�3�I�I�I���)-�)<�S�)A�&�I�w�w�������L�L��'C�c�'C�'C�!C�D�D�D��H������y�(����
�4�1�1�1�5�5��7�7�9�9�D� $���D�M�-J�S�S�s�D� Q� Q�I�V��M�T�M�M�V�M�M�M�C��G�G�F�O�O�O�$�/��D�9�9�D��G�G�D�M�M�M�M�����;�D��t�9�9��$�$��M�/�-1�/�/�GJ�4�y�y�/�/�),�/�/����
�L�L��%�%�%�����L�L��%�%�%��%)��
�c�"�$'���S�!��|�26��)�)�'�$�.�.��d���������S�!�!�!�!��=�A����S�$�"3�"3�B��":�":�;�;�;��\�\�#�t�'8�'8��Q�'?�'?�@�@�
�T�Y�Y�Y��
�	�	�	��M�#�c�(�(�#�#�#��F�F�F�F�F�����	���s=�DM�E�M�*F�M�F�G
M�
N�!N�Nrc��|�dt|j����}g}|t|��zt|j��dzzdz}d}t|j�����D�]�\}}|t
krt|��}|j�|��}t�	d|�d|�dt|������|tjkot|t��}|rc|jdkrd}	nd	}	t!|	|�
��}
|j|}|���D]
\}}
|
|
|<�|
�|��}n.t|t$��r|n|f}|j||g|�R�}tj||j��j}|rdnt/j|d��}d
|�d|�d|�d|�d�	}|dt|��dkrdt|��znt1|��zz
}t�	|��|rd}nD|tjtjtjfvrt|��}nt|��}t|��dkr0|�||||�dd��df����I|�||||�d|��|f��|t|��dzdzdzz
}���|�^||\}}}}}|rd}t=|���|�d|�d|��d|z��}|||||f||<|D]f\}}}}}t�	|�d|�d|�dt|���dt|����	��||�d||||��z
}�g|dz
}|D]$\}}}}}||z
}t|��dzr|dz
}�%|S)NrYr;rzTag z, Type: z	, Value: r�sII*sMM*)r��ifdr�zsave: r�r�r�r�r=r�rrjr7r:rz&multistrip support not yet implementedrrDr�s) r?r\r��sortedr��STRIPOFFSETSr�r�r�r�r�r
r%r�r�r�r��tobytesr�rLr�r�r�rr�r)r(r�append�ljust�NotImplementedErrorr�)r�r��result�entries�stripoffsetsr�r�r�r0r�r�r/�ifd_tag�	ifd_valuer�r�r�r�r�s                   r5r�zImageFileDirectory_v2.tobytesesb�����C��T�]�!3�!3�4�4�����#�f�+�+�%��D�M�(:�(:�R�(?�?�!�C����!���!4�!4�!6�!6�7�7�(	3�(	3�J�C���l�"�"�"�7�|�|���,�"�"�3�'�'�C��L�L�H��H�H�S�H�H�4��;�;�H�H�I�I�I��H�M�)�E�j���.E�.E�F��
@��<�3�&�&�7�C�C�7�C�+�C�s�;�;�;����s�+��*0�,�,�.�.�-�-�&�G�Y�#,�C��L�L��{�{�6�*�*���",�U�E�":�":�H������0�t�+�C�0��?��?�?�?���o�c�4�:�6�6�;�G�%�D�e�e�5�9�S�)�+D�+D�G�F�7�F�F�c�F�F�W�F�F��F�F�F�C��<�36�t�9�9��?�?�#�c�$�i�i�/�/��F����
�C�
�L�L������
$����������8J�K�K�K��D�	�	����F�����4�y�y�A�~�~�����S�%����A�u�1E�1E�s�K�L�L�L�L�����S�%����C��1H�1H�$�O�P�P�P��3�t�9�9�q�=�Q�.��2�2����#�+2�<�+@�(�C��e�U�D��
/�>��)�#�.�.�.��J�J�s�D�L�L��e�$<�$<�Q�$?�&�$H�I�I�E�$'��e�U�D�$@�G�L�!�-4�	B�	B�(�C��e�U�D��L�L�C�J�J�#�J�J��J�J��U���J�J�d�4�j�j�J�J�K�K�K��d�j�j��#�s�E�5�A�A�A�F�F�	�+���-4�	 �	 �(�C��e�U�D��d�N�F��4�y�y�1�}�
 ��%�����
r7c�6�|���dkr2|�|j|�ddd��z��|���}|�|��}|�|��|t|��zS)Nr�HL�*r%)r��writer�r?r�r\)r�r�r�r�s    r5�savezImageFileDirectory_v2.save�s}��
�7�7�9�9��>�>��H�H�T�\�D�J�J�t�R��$;�$;�;�<�<�<����������f�%�%��
���������F���#�#r7)r�NNrUrK)3r�r�r�r�r�r�rer�r��setterr�r�r�r�r�rrrr4r7r�r?rIrMrX�list�mapr
r#r%�SIGNED_BYTEr$r&�FLOATr'�IFD�LONG8rdrhrmrpr�r�r�r�r�r�r�r�r�r�r1r7r5r�r��s������:�:�x!�!�!�!�@�X�/�/�
0�
0�F�
�X�/�/�
0�
0�F���7�7�8�8�J��������������	
�	
�	
�<�<�<�	�	�	�<�<�<�3�3�3�N�N�N�`%�%�%�
=�=�=�7�7�7�8�8�8�	�	�	����
�
�
� 	�D�������g�.����V�,��%�s�M�:��&��^�<��%�s�M�:����g�.���#�x�0���s�F�+����g�.�

�
	
�
	
����"��a������������a����������a����1�1�1���1�
��a����������a����W�W�W���W���a���
�
���
�
��a������������a��������
��b�!���W�W�W���W���b���
�
���
����A�A�A�FK�K�K�K�Z$�$�$�$�$r7r�rDrCrB�write_c���eZdZUdZ�fd�Zed���Zed���Zee	d<	e
d���Zd�Zd�Z
d	�Zd
�Zd�Zd�Z�xZS)
�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�H��t��j|i|��d|_dS)NT)�superr�r�)r�r��kwargs�	__class__s   �r5r�zImageFileDirectory_v1.__init__�s-��������$�)�&�)�)�)�����r7c��|jSrr)r�r�s r5r�zImageFileDirectory_v1.<lambda>�s����r7c��|jSrr)r�r�s r5r�zImageFileDirectory_v1.<lambda>�s��D�M�r7r�c�p�||j���}|j|_|j|_|j|_|S)a2Returns 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`

        rd)rer�r�r�)�cls�originalr�s   r5�from_v2zImageFileDirectory_v1.from_v2�s:���c���)�)�)���(����&����=����
r7c���t|j���}t|j��|_t|j��|_t|j��|_|S)a2Returns 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`

        rd)r�rer�r�r�r�)r�r�s  r5�to_v2zImageFileDirectory_v1.to_v2�sN��$�4�;�7�7�7���D�M�*�*����4�<�(�(����D�M�*�*����
r7c�&�||jvp||jvSrr)r�r�rs  r5rz"ImageFileDirectory_v1.__contains__rr7c�n�tt|j��t|j��z��Srr)r\r�r�r�r�s r5r�zImageFileDirectory_v1.__len__r�r7c�n�tt|j��t|j��z��Srr)r6r�r�r�r�s r5r7zImageFileDirectory_v1.__iter__r8r7c�>�dD]}|�|||���dS�N)FT)r)r�r�r�r�s    r5rz!ImageFileDirectory_v1.__setitem__s4��'�	2�	2�J��M�M�#�u�j�1�1�1�1�	2�	2r7c	��||jvrQ|j|}|j|}|j|\}}dD]$}|�|||||��|���%|j|}t|ttf��s|f}|Sr�)r�r�r�r�rr�r�r�)r�r�r�r�r�r��legacyrls        r5r�z!ImageFileDirectory_v1.__getitem__s����d�m�#�#��=��%�D��,�s�#�C� �/��4�M�D�'�'�
H�
H���
�
�c�7�7�4��v�#>�#>��G�G�G�G��m�C� ���#��u�~�.�.�	��&�C��
r7)r�r�r�r�r�r��tags�tagdatar��__annotations__�classmethodr�r�rr�r7rr��
__classcell__�r�s@r5r�r��s�����������$ � � � � ��8�.�.�/�/�D��h�1�1�2�2�G��M�M�M�!�����[��"���"<�<�<�<�<�<�=�=�=�2�2�2�
�
�
�
�
�
�
r7r�c���eZdZdZdZdZd�fd�	Zd�Zed���Z	d�Z
d	�Zd
�Zd�Z
d�Z�fd
�Zd�Zd�Zd�Z�xZS)�
TiffImageFile�TIFFz
Adobe TIFFFNc�l��d|_	d|_	t���||��dSrr)�tag_v2r�r�r�)r�r��filenamer�s   �r5r�zTiffImageFile.__init__/s7������5����"�
������X�&�&�&�&�&r7c�*�|j�d��}|ddkr||j�d��z
}t|��|_d|_|jjx|_|_d|_|j|_	g|_
d|_t�
d��t�
d|j����t�
dt|������|�d	��dS)
z#Open the first image in a TIFF filer%rr�Nrhz*** TiffImageFile._open ***z- __first: z- ifh: r)r�r�r�r�r�r��_TiffImageFile__first�_TiffImageFile__next�_TiffImageFile__frame�_fp�
_frame_pos�	_n_framesr�r�r��_seek)r�r�s  r5�_openzTiffImageFile._open8s����g�l�l�1�o�o���q�6�R�<�<��4�7�<�<��?�?�"�C�+�C�0�0������&*�[�%5�5���t�{�����7������������2�3�3�3����1�4�<�1�1�2�2�2����*�t�C�y�y�*�*�+�+�+�	
�
�
�1�
�
�
�
�
r7c�.�|j��|���}|�t|j����|j�1|�|���dz��|j�1|�|��|jS)Nr)r�r�r�r\r�r�)r��currents  r5�n_frameszTiffImageFile.n_framesSs}���>�!��i�i�k�k�G��J�J�s�4�?�+�+�,�,�,��.�(��
�
�4�9�9�;�;��?�+�+�+��.�(��I�I�g�����~�r7c���|�|��sdS|�|��tj|j��tj�|j|j��|_dS)z%Select a given frame as current imageN)	�_seek_checkr�r	�_decompression_bomb_checkr��core�new�mode�im)r��frames  r5r�zTiffImageFile.seek]sc������&�&�	��F��
�
�5����	�'��	�2�2�2��*�.�.���D�I�6�6����r7c���|j|_|j���t|j��|k�r�|jsd}t
|���t�d|�d|j	�d|j�d|j�������|j�
|j��|j�|j��t�d|j���z��|j�
|j��|jj|jvrd|_n|jj|_|jdkr
|dz|_t|j��dkr|jdk|_|xj	dz
c_	t|j��|k���|j�
|j|��|j�
|j��|���t$�|j��x|_|_||_	|���dS)	Nzno more images in TIFF filezSeeking to frame z, on frame z	, __next z, location: zLoading tags, location: %srr)r�r�r�r\r�r��EOFErrorr�r�r�r�r�r�r�r�r��is_animated�_reload_exifr�r�r�r��_setup)r�rr�s   r5r�zTiffImageFile._seekhs#���(���	
��������$�/�"�"�e�+�+��;�
$�3���s�m�m�#��L�L�D�E�D�D�d�l�D�D��+�D�D�37�7�<�<�>�>�D�D�
�
�
�
�G�L�L���%�%�%��O�"�"�4�;�/�/�/��L�L�5�������F�G�G�G��K���T�W�%�%�%��{��4�?�2�2� ����"�k�.����{�a���!&������4�?�#�#�q�(�(�#'�;�!�#3�� ��L�L�A��L�L�-�$�/�"�"�e�+�+�.	
����T�_�U�+�,�,�,�������!�!�!�������3�;�;�D�K�H�H�H���4�8�������
�
�
�
�
r7c��|jS)zReturn the current frame number)r�r�s r5r�zTiffImageFile.tell�s
���|�r7c�l�t|jvr%|�|jt��niS)z�
        Returns a dictionary containing the XMP tags.
        Requires defusedxml to be installed.

        :returns: XMP tags in a dictionary.
        )�XMPr��_getxmpr�s r5�getxmpzTiffImageFile.getxmp�s.��25���1C�1C�t�|�|�D�K��,�-�-�-��Kr7c���i}|j�tjj��}|r�|dd�dkr�t|dd���}t
j|ddzdz��dz}t|d|zd|z���}|d|zd|z|z�}d|i||<|t
jd|z|zdz��dzd�}|dd�dk��|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.
        Nrs8BIMr!rrr�r�)	r�r�r�Base�ImageResources�i16�math�ceil�i32)r��blocksrl�id�nr�r�s       r5�get_photoshop_blocksz"TiffImageFile.get_photoshop_blocks�s������k�o�o�h�m�:�;�;���	@��b�q�b�'�W�$�$���Q�q�S��]�]���I�s�1�v��z�Q�.�/�/�!�3���3�q�1�u�r�A�v�~�.�/�/���2��6�B��F�T�M�1�2��$�d�^��r�
��$�)�R�!�V�d�]�a�$7�8�8�1�<�>�>�?���b�q�b�'�W�$�$��
r7c���|jr|jr|���St�����Srr)�tile�use_load_libtiff�
_load_libtiffr�r�)r�r�s �r5r�zTiffImageFile.load�s;����9�	(��.�	(��%�%�'�'�'��w�w�|�|�~�~�r7c�Z�|jr�tjjtjjtjjtjjtjjtjjtjj	d��
|j��}|�0|j�|��|_|jj
|_|js]d|_|j���|���}t(jD]}||vr�|�|���dSdS)N)rrrrr!r#r%T)�_tile_orientationr	�	Transpose�FLIP_LEFT_RIGHT�
ROTATE_180�FLIP_TOP_BOTTOM�	TRANSPOSE�
ROTATE_270�
TRANSVERSE�	ROTATE_90r�r�	transposer��_sizer	�!_close_exclusive_fp_after_loadingr�r��getexifr
�TAGS_V2_GROUPS�get_ifd)r��method�exif�keys    r5�load_endzTiffImageFile.load_end�s���!�	*��?�2��?�-��?�2��?�,��?�-��?�-��?�,����c�$�(�)�)�
��!��'�+�+�F�3�3���!�W�\��
���	"�59�D�2�
�G�L�L�N�N�N��<�<�>�>�D��.�
"�
"���d�?�?�����S�!�!�!�!�	"�	"�
"�
"r7c� �tj�|��|���t|j��dksd}t|���|jdd}t
|jdd��}	t|jd��o|j�	��}t|jd��r|j�
��n#t
$rd}YnwxYw|r||d<tj|jd	t|��|j��}	|�|j|��n$#t"$r}d
}t|��|�d}~wwxYw|jo|j}t|jd��rJt(�d
��|�|j�����\}}	n�|rOt(�d��|s|j�d��|�d��\}}	nct(�d��|j�d��|�|j�����\}}	g|_d|_|���|r |j���d|_|	dkrt|	���tj�|��S)zWOverload method triggered when we detect a compressed tiff
        Calls out to libtiffrzNot exactly one tilerr�fileno�flushFr�libtiffzCouldn't set the imageN�getvaluez5have getvalue. just sending in a string from getvaluez3have fileno, calling fileno version of the decoder.sfpfpz+don't have fileno or getvalue. just reading)r	r��load_preparer\rr�r�r�r�r5r6�_getdecoderrr��
decoderconfig�setimagerr+�
_exclusive_fpr	r�r�rlr8r�r��readonlyr3�close)
r�r��extentsr�r��decoder�e�
close_self_fpr�errs
          r5rzTiffImageFile._load_libtiff�s���	���������������4�9�~�~��"�"�(�C��#�,�,���)�A�,�q�/���D�I�a�L��O�$�$��

	����(�+�+�@�����0@�0@�B��t�w��(�(�
 ���
�
�������	�	�	��B�B�B�	����
�	��D��G��#��I�y�%��+�+�t�/A�
�
��	&����T�W�g�.�.�.�.���	&�	&�	&�*�C��#�,�,�A�%�����	&�����*�C�4�3C�/C�
��4�7�J�'�'�	4�
�L�L�P�Q�Q�Q��^�^�D�G�$4�$4�$6�$6�7�7�F�A�s�s�
�	4��L�L�N�O�O�O� �
 �����Q�����^�^�G�,�,�F�A�s�s�
�L�L�F�G�G�G��G�L�L��O�O�O��^�^�D�G�L�L�N�N�3�3�F�A�s���	���
��
�
�����	��G�M�M�O�O�O��D�G���7�7��#�,�,���{����%�%�%s+�AC.�.C=�<C=�6E�
E3�E.�.E3c��d|jvrd}t|���t|j�td��|_|j�td��|_|j�td��}|jdkrd}|j�td��}t�d��t�d|j����t�d	|����t�d
|j����t�d|����t�d|j�t������t|j�t����}t|j�t ����}||f|_t�d
|j����|j�t&d��}t)|��dkr,t+|��t-|��cxkrdkrnnd}|j�t.d��}|j�t0d��}|dvrd}	n|dkrd}	nd}	|	t)|��z
}	t)|��}
|j�t2|jdkr|dvrdnd��}|t4kr,t�d|��d}t9|���||
kr|d|�}n||
kr|
dkr||z}t)|��|krd}t9|���|jj|||||f}t�d|����	t<|\|_}
n>#t@$r1}t�d��d}t9|��|�d}~wwxYwt�d|
����t�d|j����|j|j!d<|j�tDd��}|j�tFd��}|rt|rr|j�tH��}|dkr
||f|j!d <n@|dkr|d!z|d!zf|j!d <n'|�||f|j!d <||f|j!d"<n||f|j!d"<dx}x}}g|_%tLp
|jd#k|_'|j'r�|dkrJ|dd�dz|dd�z}t�d|����t<|\|_}
|
d$krd%}
d&|
vr|
�(d&d'��}
d(|
vr|
�(d(d'��}
|dkr|jd)kr
|jdkrd*}
|
|jd+|jj)f}|j%�*d,dd||fd|f���n�tV|jvstX|jv�rqtV|jvr@|jtV}|j�tZ|��}|jd}nP|jtX}|j�t\��}|j�t^��}|D]�}||z|kr|ta|��zd-z}nd}|
}|jdkr
|
|}||	z}|t|��df}|j%�*|j||t-||z|��t-||z|��f||f��||z}||jdkr!d||z}}||jdkr	dx}}|dz
}��n+t�d.��d}t9|���tb|jvr|jtb|j!d/<|jd0vrId1�|jtdD��}tgj4d2d3�5|����|_6|j�tnj8j9��|_:dS)4z-Setup this image object based on current tagsi�z+Windows Media Photo files not yet supportedrrr"r!z*** Summary ***z- compression: z- photometric_interpretation: z- planar_configuration: z- fill_order: z- YCbCr subsampling: z- size: r8r1)rr!r%rrr)rr!z.More samples per pixel than can be decoded: %sz#Invalid value for samples per pixelNzunknown data organizationzformat key: z- unsupported formatzunknown pixel modez- raw mode: z- pil mode: �compressionr�dpigR���Q@�
resolutionrr<�I;16Nz;16Bz;16Nz;16Lr$rIFr7r%z- unsupported data organization�icc_profile�rUrVc�2�g|]}t|dz����S�rr)r2r\s  r5rz(TiffImageFile._setup.<locals>.<listcomp>s"��C�C�C��r�!�s�(�|�|�C�C�Cr7�RGB;Lr7);r�r��COMPRESSION_INFOr��COMPRESSION�_compression�PLANAR_CONFIGURATION�_planar_configuration�PHOTOMETRIC_INTERPRETATION�	FILLORDERr�r�r��YCBCRSUBSAMPLINGr�
IMAGEWIDTH�IMAGELENGTHr+r��SAMPLEFORMATr\rvru�
BITSPERSAMPLE�EXTRASAMPLES�SAMPLESPERPIXEL�MAX_SAMPLESPERPIXEL�errorr�re�	OPEN_INFOrr�r�X_RESOLUTION�Y_RESOLUTION�RESOLUTION_UNITr�READ_LIBTIFFrrr�r�r��TILEOFFSETS�ROWSPERSTRIP�	TILEWIDTH�
TILELENGTH�sum�
ICCPROFILE�COLORMAPrrrT�paletterr�Orientationr!)r�r��photo�	fillorder�xsize�ysize�
sample_format�	bps_tuple�extra_tuple�	bps_count�bps_actual_count�samples_per_pixelr2�rawmoderB�xres�yres�resunit�x�y�layerru�offsetsr]�wr��stride�tile_rawmoderks                             r5rzTiffImageFile._setup)s����T�[� � �?�C��#�,�,��-�T�[�_�_�[�!�-L�-L�M���%)�[�_�_�5I�1�%M�%M��"����� :�A�>�>�����+�+��E��K�O�O�I�q�1�1�	����&�'�'�'����:�t�'8�:�:�;�;�;����=�e�=�=�>�>�>����L��0J�L�L�M�M�M����1�i�1�1�2�2�2����M�T�X�\�\�:J�-K�-K�M�M�N�N�N��D�K�O�O�J�/�/�0�0���D�K�O�O�K�0�0�1�1���E�\��
����+��	�+�+�,�,�,������d�;�;�
��}����!�!�c�-�&8�&8�C�
�<N�<N�&S�&S�&S�&S�RS�&S�&S�&S�&S�&S�!�M��K�O�O�M�4�8�8�	��k�o�o�l�B�7�7���I����I�I�
�a�Z�Z��I�I��I��S��%�%�%�	��y�>�>�� �K�O�O���"�k�1�1�e�v�o�o�A�A�1�
�
��
�2�2�2��L�L�@�BS�
�
�
�8�C��c�"�"�"��/�/�/�"�"4�#4�"4�5�I�I�
�!1�
1�
1�6F�!�6K�6K�"�$5�5�I��y�>�>�.�.�.�-�C��c�"�"�"�
�K�������

��	���)�C�)�)�*�*�*�	*�!*�3���D�I�w�w���	*�	*�	*��L�L�/�0�0�0�&�C��c�"�"��)�����	*����
	���-�G�-�-�.�.�.����/�D�I�/�/�0�0�0�#'�#4��	�-� ��{���|�Q�/�/���{���|�Q�/�/���	5�D�	5��k�o�o�o�6�6�G��!�|�|�$(�$�<��	�%� � ��A���$(�4�K����#=��	�%� � ���$(�$�<��	�%� �+/��*��	�,�'�'�*.��*��	�,�'�����A����	� ,� J��0A�U�0J���� �Y	#��A�~�~��"�1�"�g��n�s�1�2�2�w�.�����1�C�1�1�2�2�2�&/�s�^�"��	�7�
�&� � �!���� � �!�/�/�&�&�9�9���� � �!�/�/�&�&�9�9��
��
�
��%��/�/��.�!�3�3����$�+�U�D�K�4F�G�A��I���i�!�Q��u�)=�q�!�D�E�E�E�E�
�T�[�
(�
(�K�4�;�,F�,F��t�{�*�*��+�l�3���K�O�O�L�%�8�8���I�a�L����+�k�2���K�O�O�I�.�.���K�O�O�J�/�/��!�
#�
#���q�5�5�=�=���Y���/�!�3�F�F��F�&���-��2�2�#*�5�>�L��i�'�F�!�3�v�;�;��2���	� � ��)��A�s�1�q�5�%�0�0�#�a�!�e�U�2C�2C�D���	������E����	�!��$�$��a�!�e�q�A��D�I�a�L�(�(� !�	��A���
���7
#�:
�L�L�:�;�;�;�-�C��c�"�"�"����$�$�'+�{�:�'>�D�I�m�$��9��#�#�C�C�T�[��-B�C�C�C�G�'�+�G�S�X�X�g�5F�5F�G�G�D�L�!%������1J�!K�!K����s�O�
P�",P�P)NN)r�r�r��format�format_descriptionr,r�r�r�r�r�r�r�rrr�r3rrr�r�s@r5r�r�*s�������
�F�%��(-�%�'�'�'�'�'�'����6����X��	7�	7�	7�$�$�$�L���L�L�L����*�����
"�"�"�>S&�S&�S&�j`L�`L�`L�`L�`L�`L�`Lr7r�r9r:rHrUrVr?rFr<r@rCrDrIrLrJrW�YCbCrrZrGr>rArE)rArEc�:�	t|j\}}}}}}n-#t$r }	d|j�d�}
t|
��|	�d}	~	wwxYwt	|���}|j}|j}
	|d}nA#t$r4|j�d��}t|t��rd}YnwxYw|�d}n|dkrd}n|dkrd	}tp|dk}d
|t<|j
d|t<|j
d
|t<d|vr	|d}nNd
|vrH|d
}t|t ��r*t#j��}|�|��|}ni}t(�dt-|��z��t|t.��r|���}|D]�}t|t"j��r'|t2jvr|�|��||<n|�|��||<	|j||j|<�r#t:$rY�~wxYwt=|d��r\t>t@tBtDtFtHfD]5}||j%vr*|j%|||<|j%j||j|<�6|�d|j�d����}|r
||tL<tNdft@dftBdft@dftBdft>dftPdftRdftTdftVdff
D]\}}||vr||||<�|�d��}|r*d|t><|d|t@<|d
|tB<|dkr4||tX<t[|��d
krt[|��|t\<|�
||t^<|d
kr
||t`<tb|vr||tb<n�|jdvr�|tbdkr�|jdkrp|�2��}|���}tg|j4��D]0}tg|j5��D]}|||fdkrdnd|||f<��1|}ntmj7|��}|jd vrw|j8�9d!d"��}g}t[|��d#z}tgd#��D].}|d$�|||z||d
zz�D��z
}|dgd%|z
zz
}�/||tt<t[|��|j
d|dzd&zd'zz}|rl|�d(tv��}|dkrd
nty||z|j
d
��} |dkr$ty| d&zd'zd'z|j
d
��} n
|j
d
} | dkrd
} |dkrd
n|| z}!|j
d
| zd
z
| z}"| |tz<|!d)krt2j>|jt~<|!f|"d
z
z||j
d
z|!|"d
z
zz
fz|t~<t�tgd|!|"z|!����|t�<t��|d
��|t�<|jd*kr>t�d+t�d,i�F��D]\}#}$|�G|#|$���t�t�t�t�g}%|�rVd-|vr[|d-}&t|&t��r|&dks|&d.krd/}
t�|
���|dkrd0}
t�|
���|&|t�<t(�d1��t(�d2t�|�F����z��d}'t=|d3��rR	|�Od��t�jQ|�R����}'n#t�jT$rYnwxYwi}(|%t�t~t�t�t�gz
}%tX|di})i}*t=|d4��r|jW���}*it�|di���|*�}+t`|+vr|+t`=t�jZ|�F��|+�F����D]�\}#}$|#t2j[vrt�t"j\d5d6��s�/|#|jvr|j|#|(|#<nIt|$tt�t�t f��s�rt3j_|#��j`},|,r|,|(|#<|#|)vrc|#|%vr_t|$t���r|$�ad7d8��d9z|)|#<��t|$t���rt�|$��|)|#<��|$|)|#<��t`|)vr9t[|)t`��d
kr|)t`d|)t`<t(�d:t�|)�F����z��|jd;vrd<}t-|)�F����}-|-�c��|||'||-|(f}.t#jd|jd=|.|
��}	|	�e|j8d>|j
z��	|	�ad@��d
d�\}/}0|'s|�f|0��|/rn�;|'r&	t�jg|'��n#t$rYnwxYw|/dkrdA|/�dB�}
t|
���nC|%D]}#||#=�|�h|��}1t�jj||dd>|j
z|1||d
ffg��dC|vr	||_kdSdS)DNzcannot write mode z as TIFFrdrFrr"r$r*r&rr�tiffinfor1zTiffinfo Keys: %sr�rJ�descriptionrH�x_resolution�y_resolution�resolution_unit�software�	date_time�artist�	copyrightrGrr8)r9r:r9�rKrIrNrc��g|]}|dz��SrMr1rs  r5rz_save.<locals>.<listcomp>�s��M�M�M�Q��S��M�M�Mr7rr#r%�
strip_sizerr�)rr)rr��r�r�r��quality�dzInvalid quality settingz5quality setting only supported for 'jpeg' compressionzSaving using libtiff encoderz	Items: %sr5r��libtiff_support_custom_tagsFrrrjzConverted items: %s)r>r<rIr7rMTi@zencoder error z when writing image file�_debug_multipage)l�	SAVE_INFOrr�r�r��encoderinfo�
encoderconfigrr�r�r�
WRITE_LIBTIFFrRr�rWrXr�r	�Exifr�r�r�r�r�r�r
r.r/r�r�r�rbr`ra�IPTC_NAA_CHUNK�PHOTOSHOP_CHUNKrr�ri�IMAGEDESCRIPTION�SOFTWARE�	DATE_TIME�ARTIST�	COPYRIGHTrZr\r\r[rYrT�copyr��height�widthr�invertr�
getpaletterj�
STRIP_SIZErurer%�STRIPBYTECOUNTSr�r��COMPRESSION_INFO_REVrPrV�REFERENCEBLACKWHITEr��
setdefaultrfrgrd�TILEBYTECOUNTSr+�JPEGQUALITYr�r��os�dupr5�io�UnsupportedOperation�TRANSFERFUNCTION�SUBIFDr�r��	itertools�chain�LIBTIFF_CORErr�r�r�rrrj�sort�_getencoderr<r�r?r�r
�_saver�)2rr�r�rwrermr��bits�extrarBr�r�r�r�rFr7rr1r2�iccr�rG�inverted_im�pxr|r{�lut�colormap�colorsr�r��
im_strip_size�rows_per_strip�strip_byte_counts�strips_per_imager�r��	blocklistr�r��types�atts�
legacy_ifd�
supplied_tagsrr�ru�errcoder�r�s2                                                  r5r�r�,s���"�6?���6H�3������e�e���"�"�"�4�2�7�4�4�4���c�l�l��!�����"���� �v�
.�
.�
.�C��.�K��$�M��!�-�0���������g�k�k�-�0�0���k�3�'�'�	��K���	����
�����	��	#�	#����	��	&�	&�*���3�{�e�3�G�!"�C����g�a�j�C�
�O��w�q�z�C����[� � ��:�&���	�;�	�	��6�"���d�E�"�"�	��:�<�<�D��I�I�d�O�O�O��D����
�L�L�$�t�D�z�z�1�2�2�2��$�-�.�.���z�z�|�|�������d�E�J�'�'�	%�C�8�3J�,J�,J��|�|�C�(�(�C��H�H��x�x��}�}�C��H�	�#�|�C�0�C�K������	�	�	��D�	����
�r�8���:�
������

�
	:�
	:�C��b�i����9�S�>��C��#%�9�#4�S�#9���C� ���/�/�-�����]�)C�)C�
D�
D�C�
����J��
�=�)�	�|�$�	�|�$�	�~�&�	�~�&�	�+�,�	�:��	�K� �	���	�K� ��
)�
)�	��T��;���"�4�(�C��H��
�/�/�%�
 �
 �C�
�#� ��O����F��L����F��L���t�|�|�!��M���t�9�9��>�>�#&�t�9�9�C�� ���!��L��
��{�{�"��L��!��,�,�*/��&�'�'�	��J�	�	�3�'A�#B�a�#G�#G�
�7�c�>�>��'�'�)�)�K��!�!�#�#�B��;�-�.�.�
=�
=���{�0�1�1�=�=�A�$&�q�!�t�H��O�O�q�q��B�q�!�t�H�H�=��B�B����$�$�B�	�w�+����e���u�g�.�.�����S���Q����q���	-�	-�A��M�M�#�f�q�j�6�Q��U�;K�.K�*L�M�M�M�M�H����s�V�|�,�,�H�H� ��H�
�
��Y�Y�2�7�1�:��Q��/�!�3��9�
:�F��$�#����j�A�A�
�$��k�k���s�=�F�3J�B�G�TU�J�/W�/W���&� � � �>�A�#5�!�";�q�!@�"�'�!�*�M�M�N�������������#�q�[�[���f�~�.E�����
�^�3�a�7�N�J��&�C����E�!�!�'/�}���O�$�-�/�3C�a�3G�H�������/�3C�a�3G�H�H�L��C����
�a�"�%5�5�7H�I�I���C���,�/�/��Q�?�?�C���	�w�'����f��!=�
��%�'�'�	'�	'�J�C��
�N�N�3��&�&�&�&��J��^�D�I��x
���#�#�!�)�,�G��g�s�+�+�
&�w��{�{�g��m�m�/�� ��o�o�%��f�$�$�M�� ��o�o�%�&�C������3�4�4�4����[�6�#�)�)�+�+�#6�#6�6�7�7�7����2�x� � �	�
�����
�
�
��f�R�Y�Y�[�[�)�)�����*�
�
�
���
������	������
�	
�	��t�A�w�'���
��2�u���	(�������J�D�7�2�x��4�4�C�
�C�
��=�(�(��l�+�#�/�#�)�)�+�+�}�7J�7J�7L�7L�M�M�	&�	&�J�C��
�(�/�/�/��u�z�+H�%�P�P����#�+�%�%�!$��S�!1�E�#�J�J�$�U�S�%��e�,D�E�E�*��#�?�3�/�/�4�D��*�%)��c�
��$���3�i�#7�#7��e�S�)�)�&� %���W�i� @� @�5� H�D��I�I���{�3�3�&� %�e���D��I�I� %�D��I���4���C��\�(:�$;�$;�q�$@�$@�!%�l�!3�A�!6�D������*�V�D�J�J�L�L�-A�-A�A�B�B�B��7�'�'�'��G�
�D�J�J�L�L�!�!���	�	����
�k�3��$��>����b�g�y�!�]�C�C��	�
�
�2�5�&�2�7�*�+�+�+�	��H�H�Y�/�/����3�M�G�T��
���������
��
	��	�
����
�
�
�
���
�
�
���
�����Q�;�;�D�7�D�D�D�C��#�,�,���
�	�	�C��C������"��������e�V�b�g�-�v����7K�L�M�	
�	
�	
�
�[�(�(�!�����)�(s\��
A�A�A�(A1�1;B/�.B/�H+�+
H8�7H8�=;_9�9`�
`�
l�
l,�+l,c��eZdZgd�Zhd�Zdd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zej
fd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zdd�ZdS)�AppendingTiffWriter)rrrrrr%rrrrr%rr%rrrr%>���	� rrFc�D�t|d��r||_d|_nN||_d|_	t	||rdnd��|_n%#t
$rt	|d��|_YnwxYw|j���|_|���dS)Nr�FTzw+bzr+b)	r�r��close_fpr��openr�r��	beginning�setup)r��fnrs   r5r�zAppendingTiffWriter.__init__os����2�v���		)��D�F�!�D�M�M��D�I� �D�M�
)��b�3�"9�%�%�E�:�:������
)�
)�
)��b�%�������
)�������������
�
�����s�A	�	A+�*A+c��|j�|jtj��d|_d|_|j�d��x|_}|s	d|_	dSd|_	|dkr|�
d��n-|dkr|�
d��nd	}t|���|���|�
��dS)
NrrTFr`r�r_r�zInvalid TIFF file header)r�r�r�r��SEEK_SET�whereToWriteNewIFDOffset�offsetOfNewPager��IIMM�isFirst�	setEndian�RuntimeError�skipIFDs�goToEnd)r��iimmr�s   r5r�zAppendingTiffWriter.setup}s�������D�N�B�K�0�0�0�(,��%� ����6�;�;�q�>�>�)��	�D��	��D�L��F�����=� � ��N�N�3�����
�]�
"�
"��N�N�3�����,�C��s�#�#�#��
�
�����������r7c���|jrdS|j�|j��|j�d��}|sdS||jkrd}t
|���|���}||jz
}|j�|j��|�	|��|j�|��|�
��dS)Nrz1IIMM 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    r5�finalizezAppendingTiffWriter.finalize�s����<�	��F�	
����D�(�)�)�)��v�{�{�1�~�~���	�
�F��4�9���E�C��s�#�#�#��]�]�_�_�
��d�*�*�
�����D�1�2�2�2����z�"�"�"�����J�������
�
�
�
�
r7c�V�|���|���dSrr)r�r�r�s r5�newFramezAppendingTiffWriter.newFrame�s ���
�
�����
�
�����r7c��|Srrr1r�s r5�	__enter__zAppendingTiffWriter.__enter__�s���r7c�<�|jr|���dS)NF)r�r?)r��exc_type�	exc_value�	tracebacks    r5�__exit__zAppendingTiffWriter.__exit__�s���=�	��J�J�L�L�L��ur7c�D�|j���|jz
Srr)r�r�r�r�s r5r�zAppendingTiffWriter.tell�s���v�{�{�}�}�t�3�3�3r7c��|tjkr
||jz
}|j�||��|���Srr)r�r�r�r�r�r�)r�r��whences   r5r�zAppendingTiffWriter.seek�s@���R�[� � ��d�*�*�F�����F�F�#�#�#��y�y�{�{�r7c�<�|j�dtj��|j���}d|dzz
}d|cxkrdkr*nn'|j�t
|����|j���|_dS)Nrr=)r�r�r��SEEK_ENDr�r�r�r�)r��pos�	pad_bytess   r5r�zAppendingTiffWriter.goToEnd�s�������A�r�{�#�#�#��f�k�k�m�m����r��M�	��y�����2�������F�L�L��y�)�)�*�*�*�#�v�{�{�}�}����r7c�n�||_|jdz|_|jdz|_|jdz|_dS)Nr:rY�HHL)�endian�longFmt�shortFmt�	tagFormat)r�r�s  r5r�zAppendingTiffWriter.setEndian�s7������{�S�(�����c�)��
���u�,����r7c�,�	|���}|dkr#|j���dz
|_dS|j�|��|���}|j�|dztj����)NTrrr;)r�r�r�r�r��	readShortr��SEEK_CUR)r�r��num_tagss   r5r�zAppendingTiffWriter.skipIFDs�s}��	4������J��Q���04����
�
��0A��-����F�K�K�
�#�#�#��~�~�'�'�H��F�K�K��2�
�r�{�3�3�3�	4r7c�6�|j�|��Srr)r�r�rgs  r5r�zAppendingTiffWriter.write�s���v�|�|�D�!�!�!r7c�n�tj|j|j�d����\}|S)Nr)r:r;r�r�r�ros  r5rzAppendingTiffWriter.readShort�s(���=�������A���?�?����r7c�n�tj|j|j�d����\}|Srb)r:r;r�r�r�ros  r5r�zAppendingTiffWriter.readLong�s(���=���t�v�{�{�1�~�~�>�>����r7c���|j�dtj��|j�tj|j|����}|�|dkrd|�d�}t|���dSdS)N���r�wrote only � bytes but wanted 4�	r�r�r�rr�r:r>r�r��r�r��
bytes_writtenr�s    r5�rewriteLastShortToLongz*AppendingTiffWriter.rewriteLastShortToLong��w������B���$�$�$�����V�[���u�%E�%E�F�F�
��$��!�);�);�B�
�B�B�B�C��s�#�#�#�%�$�);�);r7c���|j�dtj��|j�tj|j|����}|�|dkrd|�d�}t|���dSdS)Nrrr	� bytes but wanted 2)	r�r�r�rr�r:r>r�r�rs    r5�rewriteLastShortz$AppendingTiffWriter.rewriteLastShort�sw������B���$�$�$�����V�[����%F�%F�G�G�
��$��!�);�);�B�
�B�B�B�C��s�#�#�#�%�$�);�);r7c���|j�dtj��|j�tj|j|����}|�|dkrd|�d�}t|���dSdS)N���rr	r
rrs    r5�rewriteLastLongz#AppendingTiffWriter.rewriteLastLong�rr7c��|j�tj|j|����}|�|dkrd|�d�}t|���dSdS)Nrr	r)r�r�r:r>r�r�rs    r5�
writeShortzAppendingTiffWriter.writeShorts_������V�[����%F�%F�G�G�
��$��!�);�);�B�
�B�B�B�C��s�#�#�#�%�$�);�);r7c��|j�tj|j|����}|�|dkrd|�d�}t|���dSdS)Nrr	r
)r�r�r:r>r�r�rs    r5r�zAppendingTiffWriter.writeLongs_������V�[���u�%E�%E�F�F�
��$��!�);�);�B�
�B�B�B�C��s�#�#�#�%�$�);�);r7c�`�|���|j���dSrr)r�r�r?r�s r5r?zAppendingTiffWriter.close
s"���
�
������������r7c�"�|���}t|��D�]i}tj|j|j�d����\}}}|j|}||z}|dk}|s3|���}	|	|j	z
}	|�
|	��||jvr�|j���}
|r>|�
||dk|dk���|j�|
dz��nT|j�|	��|�
||dk|dk���|j�|
��dx}	}
��B|r%|j�dtj����kdS)Nr%rr)�isShort�isLong)rr�r:r;r�r�r��
fieldSizesr�r�r�Tagsr��
fixOffsetsr�r�r)r�rr�r��
field_typer��
field_size�
total_size�is_localr��cur_poss           r5r�zAppendingTiffWriter.fixIFDs����>�>�#�#���x���	,�	,�A�%+�]�4�>�4�6�;�;�q�>�>�%R�%R�"�C��U����4�J�#�e�+�J�!�Q��H��
-��������$�.�.���$�$�V�,�,�,��d�i����&�+�+�-�-���
)��O�O��
�a��*�PQ�/�$�����F�K�K��!��,�,�,�,��F�K�K��'�'�'��O�O��
�a��*�PQ�/�$�����F�K�K��(�(�(�#'�'�����
,�����A�r�{�+�+�+��=	,�	,r7c�V�|s|sd}t|���t|��D�]}|r|���n|���}||jz
}|r�|dkr�|dkrd}t|���|�|��|j�dtj	��|�
tj��|j�dtj	����|r|�
|����|�|����dS)Nz offset is neither short nor longrrznot implementedi����r%)r�r�rr�r�rr�r�r�rrr
r%rr)r�r�rrr�r�r�s       r5rzAppendingTiffWriter.fixOffsets4s0���	$�v�	$�4�C��s�#�#�#��u���	-�	-�A�)0�E�T�^�^�%�%�%�d�m�m�o�o�F��d�*�*�F��
-�6�U�?�?��A�:�:�+�C�&�s�+�+�+��+�+�F�3�3�3�����C���-�-�-�����
�.�.�.�����A�r�{�+�+�+�+��
-��%�%�f�-�-�-�-��$�$�V�,�,�,�,�%	-�	-r7N)F)FF)r�r�r�rrr�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�rrrrr�r?r�rr1r7r5r�r�Rs����������J�4*�)�)�D��������2���2���
������
4�4�4�#%�+�����-�-�-�-�-�-�	4�	4�	4�"�"�"�������$�$�$�$�$�$�$�$�$�$�$�$�$�$�$����!,�!,�!,�F-�-�-�-�-�-r7r�c���|j���}|j}t|�dg����}t|d��s|st
|||��S|���}	t|��5}|g|zD]�}||_||_t|d��sd}	n|j	}	t|	��D]P}
|�|
��|���t
|||��|�
���Q��	ddd��n#1swxYwY|�|��dS#|�|��wxYw)N�
append_imagesr�r)r�r�r�r�r�r�r�r�r�r�r�r�r�r�)rr�r�r�r�r'�cur_idx�tf�ims�nfrrGs           r5�	_save_allr,Ns����.�%�%�'�'�K��$�M������"�=�=�>�>�M��2�z�"�"�'�=�'��R��X�&�&�&��g�g�i�i�G��
 ��
$�
$�
	"���t�m�+�
"�
"��"-���$1��!��s�J�/�/�'��C�C��,�C� ��:�:�"�"�C��H�H�S�M�M�M��H�H�J�J�J��#�r�8�,�,�,��K�K�M�M�M�M�	"�
"�
	"�
	"�
	"�
	"�
	"�
	"�
	"�
	"�
	"�
	"�
	"����
	"�
	"�
	"�
	"�	��������������������s1�<E�BD*�E�*D.�.E�1D.�2E�E#z.tifz.tiffz
image/tiff)lr�r��loggingrr�r:r,�collections.abcr�	fractionsr�numbersrr�rr	r
rrr
�_binaryrrrrrr�	getLoggerr�r�rcr��IFD_LEGACY_APIr�r�r�rWrXrZrPrTrUr�r�r\rer�r`rarRrbr�r�r�r��	PREDICTORrjrfrgrdr�r�r[rY�
JPEGTABLESrVr�r�r�r�ri�EXIFIFDrr��IMAGEJ_META_DATA_BYTE_COUNTS�IMAGEJ_META_DATArOr�r�r_rvr]rcrfrpryr�rLrjr�rGr�r�setattrr��ImageFileDirectoryr�r�r�r�r,�
register_openr��
register_save�register_save_all�register_extensions�
register_mimer1r7r5�<module>rAs��R
�	�	�	�������������	�	�	�	�
�
�
�
�����*�*�*�*�*�*�������$�$�$�$�$�$�$�$�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�!�!�!�!�!�!�!�!�!�!�!�!�������������	��	�8�	$�	$�����
���
�
�
��
���
����
��� ���	������������������������	�	���	����	�
�
�����	������
�
������	�����
�
�
��	���� %������u���|���x�	�
�x���z�
��{���v�����
�=��
�:��
���
�>��
�=��
�?�� 
�6�!�"
�6�#�$
�6�%��*C�B�)9�)?�)?�)A�)A�B�B�B��x
���D�!�T�2���x
���D�!�T�2���	x
�
��D�!�T�2��
�x
���D�!�T�2��
�
x
���D�!�T�2��
�x
���D�!�T�2��
�x
���D�!�T�2���x
���D�!�T�2���x
���D�!�T�2��
�x
���D�!�T�2��
�x
���D�!�T�2���x
���D�!�T�2���x
���D�!�T�2���x
� ��D�!�T�2���!x
�"��D�!�T�2��
�#x
�$��D�!�T�2��
�%x
�&��D�!�T�2��
�'x
�x
�(��D�!�T�2��
�)x
�*��D�!�T�2���+x
�,��D�!�T�2���-x
�.��D�!�T�2���/x
�0��D�!�T�2���1x
�2��D�!�T�2��
�3x
�4��D�!�T�2��
�5x
�6��D�!�T�2���7x
�8��D�!�T�2���9x
�:��D�!�T�2��
�;x
�<��D�!�T�2��
�=x
�>��D�!�T�2��
�?x
�@��D�!�T�2��
�Ax
�B��D�!�T�2��
�Cx
�D��D�!�T�2��
�Ex
�F��D�!�T�2���Gx
�H��D�!�T�2���Ix
�x
�x
�J��D�!�U�B��!1�Kx
�L��D�!�U�B��!1�Mx
�N��D�!�U�B��!1�Ox
�P��D�!�U�B��!3�Qx
�R��D�!�U�B��!2�Sx
�T��D�!�U�B���Ux
�V��D�!�U�B���Wx
�X��D�!�U�B���Yx
�Z��D�!�U�B���[x
�\��D�!�U�B���]x
�^��D�!�U�B���_x
�`��D�!�U�B���ax
�b��D�!�U�B���cx
�d��D�!�U�B���ex
�f��D�!�V�T�"�L�gx
�h��D�!�V�T�"�L�ix
�j��D�!�Y��#�^�kx
�x
�x
�l��D�!�Y��#�^�mx
�n��D�!�Y��#�%5�ox
�p��D�!�Y��#�%5�qx
�r��D�!�\�2�&�(8�sx
�t��D�!�\�2�&�(8�ux
�v��D�!�\�4�(�*:�wx
�x��D�!�\�4�(�*:�yx
�z��D�!�_�f�-�/@�{x
�|��D�!�_�f�-�/@�}x
�~��D�!�'��3�5G�x
�@��D�!�'��3�5G�Ax
�B��D�!�\�4�(�*:�Cx
�D��D�!�\�4�(�*:�Ex
�F��D�!�_�f�-�/@�Gx
�H��D�!�_�f�-�/@�Ix
�J��D�!�'��3�5G�Kx
�L��D�!�'��3�5G�Mx
�x
�x
�N��D�!�\�4�(�*:�Ox
�P��D�!�\�4�(�*:�Qx
�R��D�!�_�f�-�/@�Sx
�T��D�!�_�f�-�/@�Ux
�V��D�!�'��3�5G�Wx
�X��D�!�'��3�5G�Yx
�Z��D�!�\�6�*�,<�[x
�\��D�!�\�6�*�,<�]x
�^��D�!�\�2�&�(:�_x
�`��D�!�\�2�&�(:�ax
�b��D�!�%�r�*�,@�cx
�d��D�!�%�r�*�,@�ex
�f��D�!�%�t�,�.B�gx
�h��D�!�%�t�,�.B�ix
�j��D�!�%�t�,�.B�kx
�l��D�!�%�t�,�.B�mx
�n��D�!�%�t�,�.B�ox
�x
�x
�p��D�!�%�t�,�.B�qx
�r��D�!�T�2���sx
�t��D�!�T�2���ux
�v��D�!�T�2��
�wx
�x��D�!�T�2��
�yx
�z��D�!�T�2���{x
�|��D�!�T�2���}x
�~��D�!�T�2��
�x
�@��D�!�T�2��
�Ax
�B��D�!�T�2���Cx
�D��D�!�T�2���Ex
�F��D�!�T�2��
�Gx
�H��D�!�T�2��
�Ix
�J��D�!�T�2��
�Kx
�L��D�!�T�2��
�Mx
�N��D�!�V�T�"�L�Ox
�P��D�!�V�T�"�L�Qx
�x
�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�!�Y��#�_���D�!�Y��#�_���D�!�Y��#�^���D�!�Y��#�^�ox
�x
�	�t�c�A�A�y�A�A�A�A�A������"�"�"�%�%�%����"����'�'�'�'�'�(�'�'�'�DG$�G$�G$�G$�G$�N�G$�G$�G$�T(6��$�(7��%������J�J�I�C���<�<��S�!�!�D��G�!�7�T�>�>�#�3F�q�3I�J�J�J��G�!�8�d�?�O�C�4H�I�I�I�I��O�S�$�X�X�X�X�X�1�X�X�X�x+��_L�_L�_L�_L�_L�I�'�_L�_L�_L�R
��#�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�$�/�+
�
�
�	�2c"�c"�c"�L	y-�y-�y-�y-�y-�y-�y-�y-�x���>���M�(�-��A�A�A����M�(�%�0�0�0����
�,�i�8�8�8����-�.���0A�B�B�B����M�(�,�7�7�7�7�7r7

Youez - 2016 - github.com/yon3zu
LinuXploit