Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.12/site-packages/PIL/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.12/site-packages/PIL/__pycache__/ImageFile.cpython-312.pyc

�

&ٜg
f����ddlmZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZm
Z
ddlmZddlmZddlmZe
rddlmZd	Zd
ZdZ	dd
dddd�Z	d*d�Zd+d�Zd,d�ZGd�de�ZGd�dej�ZGd�d�ZGd�de�Z Gd�d�Z!d-d.d�Z"	d/													d0d �Z#d1d!�Z$Gd"�d#�Z%Gd$�d%�Z&Gd&�d'e&�Z'Gd(�d)e&�Z(y)2�)�annotationsN)�IO�
TYPE_CHECKING�Any�
NamedTuple�cast�)�Image)�	deprecate)�is_path)�StrOrBytesPathiiFzimage buffer overrun errorzdecoding errorz
unknown errorzbad configurationzout of memory error)������������i����c���	tjj|�}|s|rdnd�d|��}|d|rdnd�d�z
}t
|�S#t$rtj|�}Y�EwxYw)N�encoder�decoderz error z when �writing�readingz image file)r
�core�getcodecstatus�AttributeError�ERRORS�get�OSError)�errorr�msgs   �8/usr/local/lib/python3.12/site-packages/PIL/ImageFile.py�_get_oserrorr Hsv�� ��j�j�'�'��.���%��9�5�W�U�G�D���V��I�i�8��D�D�C��3�<���� ��j�j���� �s�A�A'�&A'c�8�tddd��t|d���)N�
raise_oserror�z�It is only useful for translating error codes returned by a codec's decode() method, which ImageFile already does automatically.)�actionF�r)rr )rs rr"r"Ss%��
��
�G���u�e�
,�,��_Tilec��|dS)N��)�ts r�	_tilesortr,]s���Q�4�Kr&c�>�eZdZUded<ded<dZded<dZd	ed
<y)r'�str�
codec_name� tuple[int, int, int, int] | None�extentsr�int�offsetNztuple[Any, ...] | str | None�args)�__name__�
__module__�__qualname__�__annotations__r3r4r*r&rr'r'bs!���O�
-�-��F�C�O�)-�D�
&�-r&c�v��eZdZdZ	d					d�fd�
Zd
d�Zdd�Zd�fd�Zd
d�Zdd�Z	d
d�Z
d
d	�Zdd
�Z�xZ
S)�	ImageFilez*Base class for image file format handlers.c����t�|��d|_d|_g|_	d|_d|_t|_t|�r3t|d�|_tj|�|_d|_n.t!t"t$|�|_|�|nd|_d|_		|j'�|j6r$|j8ddks|j8ddkr
d}t5|��y#t(t*t,t.t0j2f$r}t5|�|�d}~wwxYw#t:$r(|jr|jj=��wxYw)	Nrr	r*�rbT�Fznot identified by this driver)�super�__init__�
_min_frame�custom_mimetype�tile�readonly�
decoderconfig�MAXBLOCK�decodermaxblockr�open�fp�os�fspath�filename�
_exclusive_fprr�bytes�_open�
IndexError�	TypeError�KeyError�EOFError�structr�SyntaxError�mode�size�
BaseException�close)�selfrHrK�vr�	__class__s     �rr?zImageFile.__init__qsC���	�������+/���!#��	�*���
�.0���'����2�;��2�t�n�D�G��I�I�b�M�D�M�!%�D���2�e�9�b�)�D�G�(0�(<�H�"�D�M�!&�D��	�	
,��
�
���9�9��	�	�!��� 1�T�Y�Y�q�\�Q�5F�5��!�#�&�&�6G����������
,�"�!�n�!�+��
,���	��!�!����
�
���		�s*�-C;�==D7�;(D4�#D/�/D4�4D7�71E(c��y�Nr*�rYs rrNzImageFile._open����r&c��|jr|jS|j�7tjj	|jj��Syr])rA�formatr
�MIMEr�upperr^s r�get_format_mimetypezImageFile.get_format_mimetype�sD������'�'�'��;�;�"��:�:�>�>�$�+�+�"3�"3�"5�6�6�r&c�2��g|_t�|�	|�yr])rBr>�__setstate__)rY�stater[s  �rrfzImageFile.__setstate__�s�����	�
���U�#r&c�^�|jr|jj�d|_y)zCheck file integrityN)rLrHrXr^s r�verifyzImageFile.verify�s!��
����G�G�M�M�O���r&c�J
�|js|j�
d}t|��tjj	|�}|js|Sd|_|jxrt|j�dk(}|xrttd�}d}t|d�r|j}d}n|jj}t|d�r|j}d}n|jj}|�rf|jd\}}}	}
t|
t �r|
ddf}
|d	k(�r7t|
t"��r&t|
�d
k\�r|
d|j$k(�r|
dtj&vr�	ddl}t+|j�5}|j)|j-�d|j.��|_ddd�|	|j0d|
dzz|j
j1�kDr
d}t|��tj2j5|j
|j0||	|
�|_d}|j8rd|j8_|jA�d
}
|j
�s�|jjCtD��tG|dd�}tIjJ|jd��D��cgc]\}}tM|�d��c}}|_|jD�]\}}}	}
||	�tjN|j$||
|jP�}	|jS|j6|�|jTr0|jW|j�|jYd�d}
n^|}		||jZ�}|s!tbrn?dt|��d�}t|��||z}|jY|�\}}
|dkrn||d}�[|je���g|_||_3|ji�|jjr&|jlr|jjo�d|_|j
stbs|
dkr
tq|
d���tjj	|�S#1swY���xYw#t<tt>f$rd|_Y��iwxYwcc}}w#t\t^j`f$r}tbrYd}~��d}t|�|�d}~wwxYw#|je�wxYw)z"Load image data based on tile listNzcannot load this imager	�pypy_version_infor�	load_readF�	load_seek�raw�)�accesszbuffer is not large enoughr��key�tile_prefixr&c��|d|d|dfS)Nrr	ror*)rBs r�<lambda>z ImageFile.load.<locals>.<lambda>s��T�!�W�d�1�g�t�A�w�,Gr&rzimage file is truncatedzimage file is truncated (z bytes not processed)r%)9rB�_imrr
�load�maprK�len�hasattr�sysrlrH�readrm�seek�
isinstancer.�tuplerU�	_MAPMODES�mmaprG�fileno�ACCESS_READrVr�
map_buffer�im�palette�dirtyr�ImportError�load_prepare�sortr,�getattr�	itertools�groupby�list�_getdecoderrD�setimage�pulls_fd�setfd�decoderFrOrSr�LOAD_TRUNCATED_IMAGES�cleanuprC�load_endrL�!_close_exclusive_fp_after_loadingrXr )rYr�pixel�use_mmaprCr|r}�decoder_namer1r3r4r�rH�err_code�prefix�_�tilesr�b�s�e�ns                      rrwzImageFile.load�sh���y�y�T�X�X�-�*�C��#�,����� � ��&���y�y��L�%)����=�=�8�S����^�q�%8���E�G�C�1D�$E� E�����4��%��>�>�D��H��7�7�<�<�D��4��%��>�>�D��H��7�7�<�<�D��26�)�)�A�,�/�L�'�6�4��$��$��a��|����%��t�U�+���I��N���G�t�y�y�(���G�u���.�$���d�m�m�,��#'�9�9�R�Y�Y�[�!�D�DT�DT�9�#U���-���	�	�!��t�A�w� 6�6�������H�:��%�c�l�*�#�j�j�3�3����$�)�)�\�6�4��D�G� !�H��|�|�-.����*�	
�������x�x��I�I�N�N�y�N�)��T�=�#�6�F�
!*� 1� 1��I�I�G�!��!�H�A�u��U��B��!��D�I�8<�y�y�3��g�v�t��V���+�+��I�I�|�T�4�3E�3E���#&��$�$�T�W�W�g�6��'�'��
�
�d�g�g�.�#*�>�>�#�#6�q�#9��"��"�>�$(��)=�)=�$>��$%�#8�$)�),�,/��F�8�3H�)J�%(�+2�#�,�$6� !�A��A�*1�.�.��*;�K�A�x� �1�u� %� !�!�"��A�3#�8�O�O�%�Q8A�T��	� ��
��
�
�����$�"H�"H��G�G�M�M�O�����x�x� 5�(�Q�,��x��7�7��{�{����%�%�o-�,��'���=�$�#�D�H�$����*%/����#=�>�#8�$)�*C�C�*1�#�,�A�$=��
>��2�O�O�%�so�4R-�
2R �?B#R-�S�=AT�S�+AT� R*�%R-�-S�S�T
�.T�4T�:T�T
�
T�T"c���|j�9tjj|j|j
�|_|jdk(r tjj|�yy)N�P)rvr
r�newrUrVr�rwr^s rr�zImageFile.load_prepareCsM���8�8���j�j�n�n�T�Y�Y��	�	�:�D�G��9�9����K�K���T�"�r&c��yr]r*r^s rr�zImageFile.load_endK���r&c���||jks4t|d�r|j�)|t|d�|jzk\r
d}t	|��|j�|k7S)N�	_n_frames�n_framesz attempt to seek outside sequence)r@rzr�r�rR�tell)rY�framers   r�_seek_checkzImageFile._seek_checkWs]���D�O�O�#��T�;�/�D�N�N�4J��W�T�:�6����H�H�5�C��3�-���y�y�{�e�#�#r&r])rHzStrOrBytesPath | IO[bytes]rKzstr | bytes | None�return�None�r�r�)r��
str | None)rgz	list[Any]r�r��r�zImage.core.PixelAccess | None)r�r2r��bool)r5r6r7�__doc__r?rNrdrfrirwr�r�r��
__classcell__)r[s@rr:r:nsU���4�NR�0�,�0�8J�0�	
�0�d
��$��G&�R#�
�
$r&r:c�:�eZdZdd�Zej
dd��Zy)�StubHandlerc��yr]r*�rYr�s  rrGzStubHandler.openhr_r&c��yr]r*r�s  rrwzStubHandler.loadkr�r&N)r��
StubImageFiler�r�)r�r�r��Image.Image)r5r6r7rG�abc�abstractmethodrwr*r&rr�r�gs!��
�	���
��
r&r�c�(�eZdZdZdd�Zdd�Zdd�Zy)	r�z�
    Base class for stub image loaders.

    A stub loader is an image loader that can identify files of a
    certain format, but relies on external code to load the file.
    c��d}t|��)Nz+StubImageFile subclass must implement _open��NotImplementedError�rYrs  rrNzStubImageFile._openxs��;��!�#�&�&r&c���|j�}|�d|j�d�}t|��|j|�}|�J�|j|_|j
|_|j�S)Nzcannot find loader for this z file)�_loadrarrwr[�__dict__)rY�loaderr�images    rrwzStubImageFile.load|sj��������>�0����
�U�C�C��#�,�����D�!��� � � ����������
��z�z�|�r&c��d}t|��)z (Hook) Find actual image loader.z+StubImageFile subclass must implement _loadr�r�s  rr�zStubImageFile._load�s��;��!�#�&�&r&Nr�r�)r�zStubHandler | None)r5r6r7r�rNrwr�r*r&rr�r�ps���'�
�'r&r�c�p�eZdZUdZdZdZded<dZded<dZded<d	Z	d	Z
dd
�Zdd�Zdd�Z
dd
�Zdd�Zy)�Parserzj
    Incremental image parser.  This class implements the standard
    feed/close consumer interface.
    NzImage.Image | Noner�zbytes | None�dataz,Image.core.ImagingDecoder | PyDecoder | Nonerrc�*�|j�Jd��y)z�
        (Consumer) Reset the parser.  Note that you can only call this
        method immediately after you've created a parser; parser
        instances cannot be reused.
        Nzcannot reuse parsers)r�r^s r�resetzParser.reset�s���y�y� �8�"8�8� r&c�T�|jry|j�||_n|j|z|_|jr�|jdkDrmt	t|j�|j�}|j|d|_|j|z
|_|jdkDs|jsy|jj
|j�\}}|dkr(d|_d|_|dkrd|_t|d���y|j|d|_y|jry	tj|j�5}tj|�}ddd�td�xst|d�}|st|j�dk7rd|_||_y|j�|jd\}}}	}
g|_tj |j"||
|j$�|_|jj'|j(|�|	|_|jt|j�kr%|j|jd|_d|_||_y#1swY��%xYw#t*$rYywxYw)z�
        (Consumer) Feed data to the parser.

        :param data: A string buffer.
        :exception OSError: If the parser failed to parse the image file.
        Nrr	Fr%rmrl)�finishedr�rr3�minryr�r�r �io�BytesIOr
rGrzrBr�r�rUrDr�r�r)rYr��skipr�r�rHr��flag�d�o�as           r�feedzParser.feed�s!���=�=���9�9���D�I��	�	�D�(�D�I��<�<��{�{�Q���3�t�y�y�>�4�;�;�7�� �I�I�d�e�,��	�"�k�k�D�0����;�;��?�$�)�)���<�<�&�&�t�y�y�1�D�A�q��1�u� ��	� !��
��q�5�!%�D�J�&�q�%�8�8���	�	�!�"�
�D�I�
�Z�Z�
�
 ��Z�Z��	�	�*�b����B��B�+�
�r�;�/�K�7�2�{�3K���3�r�w�w�<�1�,�"&�D�K� ��
��O�O�%�!#�����J�A�q�!�Q� �B�G�#(�#4�#4�R�W�W�a��B�DT�DT�#U�D�L��L�L�)�)�"�%�%��3�#$�D�K��{�{�c�$�)�)�n�4�$(�I�I�d�k�k�m�$<��	�&'�����
�/+�*���
��
�s*�6J�J�+J�J�J�	J'�&J'c��|Sr]r*r^s r�	__enter__zParser.__enter__�s���r&c�$�|j�yr])rX�rYr4s  r�__exit__zParser.__exit__�s���
�
�r&c�,�|jr8|jd�dx|_|_|js
d}t	|��|j
s
d}t	|��|jrjt
j|j�5}	tj|�|_|j
j�	ddd�|j
S|j
S#|j
j�wxYw#1swY|j
SxYw)a
        (Consumer) Close the stream.

        :returns: An image object.
        :exception OSError: If the parser failed to parse the image file either
                            because it cannot be identified or cannot be
                            decoded.
        r&Nzimage was incompletezcannot parse this image)rr�r�r�rr�r�r�r
rGrw)rYrrHs   rrXzParser.close�s����<�<��I�I�c�N�'+�+�D�I����=�=�,���c�l�"��z�z�+�C��#�,���9�9����D�I�I�&�"�&�!&���B��D�J��J�J�O�O�%�	'�
�z�z��t�z�z����J�J�O�O�%��	'�
�z�z��s$�	C?�C �%C?� C<�<C?�?Dr�)r�rMr�r�)r�r�)r4�objectr�r�)r�r�)r5r6r7r��incrementalr�r8r�rr3r�r�r�r�r�rXr*r&rr�r��sS���
�K� $�E��$��D�,��<@�G�
9�@�
�F��H�9�J �X��r&r�c	��|j�t|d�sd|_|jt��tt||jddz�}	|j�}|j�t|||||�t|d�r|j�yy#ttjf$r}t||||d|�Yd}~�Ld}~wwxYw)z�Helper to save image based on tile list

    :param im: Image object.
    :param fp: File object.
    :param tile: Tile list.
    :param bufsize: Optional buffer size
    �
encoderconfigr*rqr�N�flush)rwrzr�r�r,�maxrErVr�r��_encode_tilerr��UnsupportedOperation)r�rHrB�bufsize�fh�excs      r�_saver�s����G�G�I��2��'�����I�I�)�I��
�(�G�R�W�W�Q�Z�!�^�4�G�7�
�Y�Y�[��
���
��R��T�7�B�/��r�7��
���
���
�B�3�3�4�7��R��T�7�D�#�6�6��7�s�/B)�)C�C�Cc�<�|D�]\}}}}	|dkDr|j|�tj|j||	|j�}
	|
j|j|�|
jr%|
j|�|
j�d}nE|r-	|
j|�dd\}}|j|�|rn�,|�J�|
j||�}|dkrt|d��|�	|
j���y#|
j�wxYw)Nrr	Tr%)r}r
�_getencoderrUr�r�r��	pushes_fdr��encode_to_pyfd�encode�write�encode_to_filer r�)
r�rHrBr�r�r��encoder_namer1r3r4r�errcoder�s
             rr�r�3s��04�+��g�v�t��A�:��G�G�F�O��#�#�B�G�G�\�4��AQ�AQ�R��	����R�U�U�G�,�� � ��
�
�b�!�!�0�0�2�1�5����(/���w�(?���(C�
��������"�!�	��>�)�>�%�4�4�R��A�G���{�"�7�D�9�s�B��
�O�O��104��0
�O�O��s
�B%D	�	Dc��|dkry|tkr.|j|�}t|�|kr
d}t|��|Sg}|}|dkDrG|jt	|t��}|sn%|j|�|t|�z}|dkDr�Gt
d�|D��|kr
d}t|��dj|�S)a�
    Reads large blocks in a safe way.  Unlike fp.read(n), this function
    doesn't trust the user.  If the requested size is larger than
    SAFEBLOCK, the file is read block by block.

    :param fp: File handle.  Must implement a <b>read</b> method.
    :param size: Number of bytes to read.
    :returns: A string containing <i>size</i> bytes of data.

    Raises an OSError if the file is truncated and the read cannot be completed

    rr&zTruncated File Readc3�2K�|]}t|����y�wr])ry)�.0�blocks  r�	<genexpr>z_safe_read.<locals>.<genexpr>ss����
*�6�%�3�u�:�6�s�)�	SAFEBLOCKr|ryrr��append�sum�join)rHrVr�r�blocks�remaining_sizer�s       r�
_safe_readrVs����q�y���y���w�w�t�}���t�9�t��'�C��#�,�����F��N�
�1�
�����N�I�6�7�����
�
�e���#�e�*�$���1�
��
*�6�
*�*�T�1�#���c�l���8�8�F��r&c��eZdZdd�Zdd�Zy)�PyCodecStatec�<�d|_d|_d|_d|_y)Nr)�xsize�ysize�xoff�yoffr^s rr?zPyCodecState.__init__zs����
���
���	���	r&c��|j|j|j|jz|j|jzfSr])rrrrr^s rr1zPyCodecState.extents�s3���y�y�$�)�)�T�Y�Y����%;�T�Y�Y����=S�S�Sr&Nr�)r�ztuple[int, int, int, int])r5r6r7r?r1r*r&rrrys
���Tr&rc�N�eZdZUded<d	d�Zd
d�Zdd�Zdd�Z	d
					dd�Zy)�PyCodeczIO[bytes] | None�fdc�n�d|_t�|_d|_||_|j|�yr])r�rrgrrU�init)rYrUr4s   rr?zPyCodec.__init__�s+��15���!�^��
������	��	�	�$�r&c��||_y)z�
        Override to perform codec specific initialization

        :param args: Tuple of arg items from the tile entry
        :returns: None
        N)r4r�s  rrzPyCodec.init�s����	r&c��y)zT
        Override to perform codec specific cleanup

        :returns: None
        Nr*r^s rr�zPyCodec.cleanup�s��	
r&c��||_y)z�
        Called from ImageFile to set the Python file-like object

        :param fd: A Python file-like object
        :returns: None
        N)r)rYrs  rr�z
PyCodec.setfd�s����r&Nc��||_|r|\}}}}nd\}}}}|dk(r=|dk(r8|jj\|j_|j_nJ||j_||j_||z
|j_||z
|j_|jjdks|jjdkr
d}t|��|jj|jj
z|jjdkDsG|jj|jjz|jjdkDr
d}t|��y)z�
        Called from ImageFile to set the core output image for the codec

        :param im: A core image object
        :param extents: a 4 tuple of (x0, y0, x1, y1) defining the rectangle
            for this tile
        :returns: None
        )rrrrrzSize cannot be negativer	z Tile cannot extend outside imageN)r�rVrgrrrr�
ValueError)rYr�r1�x0�y0�x1�y1rs        rr�zPyCodec.setimage�s,������&��R��R��+��R��R��
��7�r�Q�w�15�����.�D�J�J��d�j�j�.� �D�J�J�O� �D�J�J�O�!�B�w�D�J�J��!�B�w�D�J�J���:�:���q� �D�J�J�$4�$4��$9�+�C��S�/�!�
�J�J���t�z�z���.������a��@��z�z���$�*�*�/�/�1�D�G�G�L�L��O�C�4�C��S�/�!�Dr&)rUr.r4rr�r�)r4�tuple[Any, ...]r�r�r�)r�	IO[bytes]r�r�r])r�zImage.core.ImagingCorer1r0r�r�)	r5r6r7r8r?rr�r�r�r*r&rrr�sB������
��59�'"�"�'"�2�'"�
�	'"r&rc�H�eZdZdZdZedd��Zdd�Z	d								d
d�Zy)�	PyDecoderz�
    Python implementation of a format decoder. Override this class and
    add the decoding logic in the :meth:`decode` method.

    See :ref:`Writing Your Own File Codec in Python<file-codecs-py>`
    Fc��|jSr])�	_pulls_fdr^s rr�zPyDecoder.pulls_fd�s���~�~�r&c��d}t|��)a=
        Override to perform the decoding process.

        :param buffer: A bytes object with the data to be decoded.
        :returns: A tuple of ``(bytes consumed, errcode)``.
            If finished with decoding return -1 for the bytes consumed.
            Err codes are from :data:`.ImageFile.ERRORS`.
        zunavailable in base decoderr�)rY�bufferrs   rr�zPyDecoder.decode����,��!�#�&�&r&Nc�^�|s|j}tj|jd||�}|j�J�|j	|j|j
j
��|j|�}|ddk\r
d}t|��|ddk7r
d}t|��y)aS
        Convenience method to set the internal image from a stream of raw data

        :param data: Bytes to be set
        :param rawmode: The rawmode to be used for the decoder.
            If not specified, it will default to the mode of the image
        :param extra: Extra arguments for the decoder.
        :returns: None
        rnNrznot enough image datar	zcannot decode image data)	rUr
r�r�r�rgr1r�r)rYr��rawmode�extrar�r�rs       r�
set_as_rawzPyDecoder.set_as_raw�s�����i�i�G����d�i�i����?���w�w�"�"�"�	�
�
�4�7�7�D�J�J�.�.�0�1�
�H�H�T�N���Q�4�1�9�)�C��S�/�!��Q�4�1�9�,�C��S�/�!�r&�r�r�)rz$bytes | Image.SupportsArrayInterfacer��tuple[int, int])Nr*)r�rMr"r�r#rr�r�)	r5r6r7r�r�propertyr�r�r$r*r&rrr�sQ����I�
����
'�QS�"��"�$.�"�>M�"�	
�"r&rc�>�eZdZdZdZedd��Zd	d�Zd
d�Zdd�Z	y)�	PyEncoderz�
    Python implementation of a format encoder. Override this class and
    add the decoding logic in the :meth:`encode` method.

    See :ref:`Writing Your Own File Codec in Python<file-codecs-py>`
    Fc��|jSr])�
_pushes_fdr^s rr�zPyEncoder.pushes_fds�����r&c��d}t|��)a 
        Override to perform the encoding process.

        :param bufsize: Buffer size.
        :returns: A tuple of ``(bytes encoded, errcode, bytes)``.
            If finished with encoding return 1 for the error code.
            Err codes are from :data:`.ImageFile.ERRORS`.
        zunavailable in base encoderr�)rYr�rs   rr�zPyEncoder.encoder r&c��|jsy|jd�\}}}|r)|j�J�|jj|�||fS)z�
        If ``pushes_fd`` is ``True``, then this method will be used,
        and ``encode()`` will only be called once.

        :returns: A tuple of ``(bytes consumed, errcode)``.
            Err codes are from :data:`.ImageFile.ERRORS`.
        )rrr)r�r�rr�)rY�bytes_consumedr�r�s    rr�zPyEncoder.encode_to_pyfd"sP���~�~��(,���A��%������7�7�&�&�&��G�G�M�M�$���w�&�&r&c��d}|dk(r9|j|�\}}}|dkDrtj|||d�|dk(r�9|S)z�
        :param fh: File handle.
        :param bufsize: Buffer size.

        :returns: If finished successfully, return 0.
            Otherwise, return an error code. Err codes are from
            :data:`.ImageFile.ERRORS`.
        rN)r�rIr�)rYr�r�r��status�bufs      rr�zPyEncoder.encode_to_file2sP������l�#'�;�;�w�#7� �F�G�S���z�����S���\�*���l��r&Nr%)r�r2r�ztuple[int, int, bytes])r�r&)r�r2r�r2r�r2)
r5r6r7r�r+r'r�r�r�r�r*r&rr)r)s/����J�
����
'�'� r&r))rr2rr�r�r)rr2r�r)r+r'r�r2)r)
r�r�rHrrB�list[_Tile]r�r2r�r�r])r�r�rHrrBr2r�r2r�z
int | Noner�zBaseException | Noner�r�)rHrrVr2r�rM))�
__future__rr�r�r�rIrSr{�typingrrrrrr=r
�
_deprecater�_utilr�_typingr
rEr�r�rr r"r,r'r:r�r�r�r�r�rrrrr)r*r&r�<module>r8s=��:#�
�	��	�
�
�;�;��!���'����	���N�	%�����
����-��
.�J�.�v$����v$�r
�
�'�I�'�<C�C�R�D!%�
 �� �� �� ��	 �
	� �
�
 �
� �F �FT�T�K"�K"�\3"��3"�l8��8r&

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists