add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
�

��Vcu��Z�dZdZdZdZdZdZdZdZdZdd	l	Z	dd	l
Z
dd	lZdd	lZdd
lTgd�Z
d�Z	dd
lmZmZmZd�Zn#e$rd�ZYnwxYwd�Zd�Zd�Zd�Zd�Zejje_d�Zd�Zd�Z d�Z!	ddl"m#Z#n
#e$rd	Z#YnwxYwd�Z$d�Z%d�Z&	ddl"m'Z'd�Z(n#e$rd�Z(YnwxYwd �Z)	dd!l"m*Z*d"�Z+n
#e$re)Z+YnwxYw	dd#l"m,Z,m-Z.d$�Z/d%�Z0d&d'�d(�Z1n
#e$re+Z1YnwxYwe2e
d)��oe
j3��d*d+kZ4d/d,�Z5d-�Z6	dd.l"m7Z8d	S#e$rYd	SwxYw)0z�Common pathname manipulations, WindowsNT/95 version.

Instead of importing this module directly, import os and refer to this
module as os.path.
�.�..�\�;�/z.;C:\bin�nul�N)�*)&�normcase�isabs�join�
splitdrive�split�splitext�basename�dirname�commonprefix�getsize�getmtime�getatime�getctime�islink�exists�lexists�isdir�isfile�ismount�
expanduser�
expandvars�normpath�abspath�curdir�pardir�sep�pathsep�defpath�altsep�extsep�devnull�realpath�supports_unicode_filenames�relpath�samefile�sameopenfile�samestat�
commonpathc�4�t|t��rdSdS)N�\/�\/)�
isinstance�bytes��paths �/usr/lib64/python3.11/ntpath.py�
_get_bothsepsr8#s���$������v��u�)�
LCMapStringEx�LOCALE_NAME_INVARIANT�LCMAP_LOWERCASEc��tj|��}|s|St|t��rnt	j��}|�|d���dd��}ttt|��}|�|d��Sttt|�dd����S)�nNormalize case of pathname.

        Makes all characters lowercase and all slashes into backslashes.
        �surrogateescaperr)�os�fspathr3r4�sys�getfilesystemencoding�decode�replace�_LCMapStringEx�_LOCALE_NAME_INVARIANT�_LCMAP_LOWERCASE�encode)�s�encodings  r7r
r
3s���

�I�a�L�L���	��H��a����		8��0�2�2�H�����#4�5�5�=�=�c�4�H�H�A��5�/��4�4�A��8�8�H�&7�8�8�8�!�"8�"2�"#�)�)�C��"6�"6�8�8�
8r9c�<�tj|��}t|t��rLtjtj|���dd�������S|�dd�����S)r>rr)r@rAr3r4�fsencode�fsdecoderE�lower�rJs r7r
r
Fsx��

�I�a�L�L���a����	J��;�r�{�1�~�~�5�5�c�4�@�@�F�F�H�H�I�I�I��y�y��d�#�#�)�)�+�+�+r9c��tj|��}t|t��r,|�dd���d��rdSn+|�dd���d��rdSt
|��d}t|��d	ko|d	o|d	t|��vS)
zTest whether a path is absolute�/�\�\\?\Trr�\\?\�r)	r@rAr3r4rE�
startswithr
�lenr8rPs r7rrWs���
�	�!���A��!�U�����9�9�T�5�!�!�,�,�Z�8�8�	��4�	�
�9�9�S�$���*�*�9�5�5�	��4��1�
�
�a��A��q�6�6�A�:�;�!�A�$�;�1�Q�4�=��+;�+;�#;�;r9c��tj|��}t|t��rd}d}d}nd}d}d}	|s
|dd�|zt	|��\}}ttj|��D]x}t	|��\}}	|	r|	d|vr	|s|s|}|	}�)|r7||kr1|���|���kr|}|	}�`|}|r|d|vr||z}||	z}�y|r"|d|vr|r|dd�|kr||z|zS||zS#tttf$rtjd	|g|�R��wxYw)
NrSr1�:rr2�:r�����r)r@rAr3r4r
�maprO�	TypeError�AttributeError�BytesWarning�genericpath�_check_arg_types)
r6�pathsr#�seps�colon�result_drive�result_path�p�p_drive�p_paths
          r7rrgs���
�9�T�?�?�D��$��������������������	���!��H�s�N�N�$.�t�$4�$4�!��k��R�Y��&�&�	/�	/�A�(��m�m�O�G�V��

'�&��)�t�+�

'��+�,�+�#*�L�$����
'�W��4�
'��=�=�?�?�l�&8�&8�&:�&:�:��#*�L�"(�K��&���
0�{�2��d�:�
0�)�C�/��%��.�K�K��	4�K��N�$�6�	4��	4�)�"�#�#�.�%�7�	4��#�%��3�3��k�)�)���~�|�4�����$�V�T�:�E�:�:�:�:�
����s�CD�D�,Ec�X�tj|��}t|��dkr�t|t��rd}d}d}nd}d}d}|�||��}|dd�|dzkr�|dd	�|kr|�|d��}|d
kr|dd�|fS|�||dz��}||dzkr|dd�|fS|d
krt|��}|d|�||d�fS|dd�|kr|dd�|dd�fS|dd�|fS)
a�Split a pathname into drive/UNC sharepoint and relative path specifiers.
    Returns a 2-tuple (drive_or_unc, path); either part may be empty.

    If you assign
        result = splitdrive(p)
    It is always true that:
        result[0] + result[1] == p

    If the path contained a drive letter, drive_or_unc will contain everything
    up to and including the colon.  e.g. splitdrive("c:/dir") returns ("c:", "/dir")

    If the path contained a UNC path, the drive_or_unc will contain the host name
    and share up to but not including the fourth directory separator character.
    e.g. splitdrive("//host/computer/dir") returns ("//host/computer", "/dir")

    Paths cannot contain both a drive letter and a UNC path.

    �rSrRrZrrr[r�r\NrV)r@rArXr3r4rE�find)rhr#r&re�normp�index�index2s       r7r
r
�st��&	�	�!���A�
�1�v�v��{� ��a����	��C��F��E�E��C��F��E��	�	�&�#�&�&���!�A�#�J�#�a�%��	*�e�A�a�C�j�C�&7�	*�
�J�J�s�A�&�&�E���{�
 ���!��u�a�x���Z�Z��U�Q�Y�/�/�F�����"�
 ���!��u�a�x����|�
 ��Q�����W�f�W�:�q����z�)�)���1��:���	 ��R�a�R�5�!�A�B�B�%�<���R�a�R�5�!�8�Or9c�4�tj|��}t|��}t|��\}}t	|��}|r!||dz
|vr|dz}|r
||dz
|v�|d|�||d�}}|�|��p|}||z|fS)z~Split a pathname.

    Return tuple (head, tail) where tail is everything after the final slash.
    Either part may be empty.rVN)r@rAr8r
rX�rstrip)rhrd�d�i�head�tails      r7rr�s���
	�	�!���A�����D��a�=�=�D�A�q��A���A�
���!�A�#��d�"��	�Q������!�A�#��d�"���2�A�2���!�"�"��$�D��;�;�t���$��D��t�8�T�>�r9c��tj|��}t|t��rt	j|ddd��St	j|ddd��S)NrSrR�.rrr)r@rAr3r4ra�	_splitext�rhs r7rr�sO��
�	�!���A��!�U���8��$�Q��t�T�:�:�:��$�Q��c�3�7�7�7r9c�,�t|��dS)z)Returns the final component of a pathnamerV�rr{s r7rr������8�8�A�;�r9c�,�t|��dS)z-Returns the directory component of a pathnamerr}r{s r7rr�r~r9c��	tj|��}n#tttf$rYdSwxYwtj|j��S)zhTest whether a path is a symbolic link.
    This will always return false for Windows prior to 6.0.
    F)r@�lstat�OSError�
ValueErrorr_�stat�S_ISLNK�st_mode�r6�sts  r7rr�sQ���
�X�d�^�^�����Z��0�����u�u������<��
�#�#�#s��2�2c�b�	tj|��}n#ttf$rYdSwxYwdS)zCTest whether a path exists.  Returns True for broken symbolic linksFT)r@r�r�r�r�s  r7rr
sB���
�X�d�^�^�����Z� �����u�u������4s��,�,)�_getvolumepathnamec��tj|��}t|��}t|��}t	|��\}}|r|d|vr|p||vS|r||vrdSt
ra|�|��}t|���|��}|���|���kSdS)zaTest whether a path is a mount point (a drive root, the root of a
    share, or a mounted volume)rTF)r@rAr8r r
r�rs�casefold)r6rd�root�rest�x�ys      r7rr s����9�T�?�?�D�����D��4�=�=�D��D�!�!�J�D�$��,��Q��4��,���+�d�d�l�+��������t����K�K������d�#�#�*�*�4�0�0���z�z�|�|�q�z�z�|�|�+�+��ur9c��tj|��}t|t��rd}nd}|�|��s|Sdt|��}}||kr9||t
|��vr"|dz
}||kr||t
|��v�"dtjvrtjd}nVdtjvr|S	tjd}n#t$rd}YnwxYwt|tjd��}|dkr�|d|�}t|t��rtj
|��}tj�d��}||kr2|t|��kr|Stt|��|��}t|t��rtj|��}|||d	�zS)
zLExpand ~ and ~user constructs.

    If user or $HOME is unknown, do nothing.�~�~rV�USERPROFILE�HOMEPATH�	HOMEDRIVE��USERNAMEN)r@rAr3r4rWrXr8�environ�KeyErrorrrN�getrrrM)r6�tilderu�n�userhome�drive�target_user�current_users        r7rr=s����9�T�?�?�D��$�����������?�?�5�!�!�����c�$�i�i�q�A�
�a�%��D��G�=��#6�#6�6��	�Q����a�%��D��G�=��#6�#6�6����
�"�	7��:�m�,���
�2�:�
%�7���	��J�{�+�E�E���	�	�	��E�E�E�	������r�z�*�5�6�6���A�v�<��1�Q�3�i���k�5�)�)�	3��+�k�2�2�K��z�~�~�j�1�1���,�&�	<��x��1�1�1�
����G�H�-�-�{�;�;�H��$����)��;�x�(�(���d�1�2�2�h��s�C�C*�)C*c��tj|��}t|t��rOd|vrd|vr|Sddl}t|j|jzdzd��}d}d}d}d	}d}ttd
d��}n6d|vrd|vr|Sddl}|j|jzdz}d
}d}d}d}d}tj}|dd�}	d}
t|��}|
|k�r
||
|
dz�}||kre||
dzd�}t|��}	|�
|��}
|	||d|
dz�zz
}	�n�#t$r|	||zz
}	|dz
}
Y�n�wxYw||kr�||
dz|
dz�|kr|	|z
}	|
dz
}
�n`||
dzd�}t|��}	|�
|��}
|d|
�}
	|�7tjtjtj
|
����}n||
}n#t$r||
z|z}YnwxYw|	|z
}	�n�#t$r|	||zz
}	|dz
}
Y�n�wxYw||k�r�||
dz|
dz�|kr|	|z
}	|
dz
}
�n}||
dz|
dz�|kr�||
dzd�}t|��}	|�
|��}
|d|
�}
	|�7tjtjtj
|
����}n||
}n#t$r||z|
z|z}YnwxYw|	|z
}	n�#t$r|	||z|zz
}	|dz
}
Yn�wxYw|dd�}
|
dz
}
||
|
dz�}|r!||vr|
|z
}
|
dz
}
||
|
dz�}|r||v�	|�7tjtjtj
|
����}n||
}n#t$r||
z}YnwxYw|	|z
}	|r|
dz}
n|	|z
}	|
dz
}
|
|k��
|	S)zfExpand shell variables of the forms $var, ${var} and %var%.

    Unknown variables are left unchanged.�$�%rNz_-�ascii�'�{�}�environb�$�%�'�{�}rVrl)r@rAr3r4�string�
ascii_letters�digits�getattrr�rXrpr�rMrNr�)r6r��varchars�quote�percent�brace�rbrace�dollarr��resrp�pathlen�c�var�values               r7rrzsU���9�T�?�?�D��$������t��	��D� 0�	��K��
�
�
���-��
�=��D�g�N�N�������������"�j�$�/�/����d�?�	�s�$��	��K��
�
�
��'�&�-�7�$�>�������������*��
�r��r�(�C�
�E��$�i�i�G�
�'�/�K���u�Q�w������:�H	����	�
�
�#�D��$�i�i�G�
$��
�
�1�
�
���q�4�
����
�+�+�+�����
$�
$�
$��q�4�x����!�����
$�����'�\�?	��E�A�I�e�a�i�'�(�G�3�
!��q�����
����E�!�G�H�H�~���d�)�)��!� �J�J�w�/�/�E�
�v��v�,�C�8�"�1�$&�K��
�2�;�s�;K�;K�0L�$M�$M�E�E�$+�C�L�E���#�8�8�8� '�#�
�� 7����8�����5�L�C�C��"�(�(�(��7�T�>�)�C�#�a�K�E�E�E�(�����&�[�)	��E�A�I�e�a�i�'�(�F�2�&
��q�����
����e�a�i���	�)�*�e�3�#
��E�!�G�H�H�~���d�)�)��!� �J�J�v�.�.�E�
�v��v�,�C�>�"�1�$&�K��
�2�;�s�;K�;K�0L�$M�$M�E�E�$+�C�L�E���#�>�>�>� &���� 4�v� =����>�����5�L�C�C��"�(�(�(��6�E�>�D�0�0�C�#�a�K�E�E�E�(�����2�A�2�h����
����u�q�y��)���.�A��M�.��1�H�C��Q�J�E��U�5�1�9�_�-�A��.�A��M�.�)��-� "��B�J�r�{�3�7G�7G�,H� I� I��� '�������)�)�)�"�S�L�E�E�E�)�����u������Q�J�E���1�H�C�
��
��W�'�/�K�X�Jso�(D+�+E�E�H
�,AG.�.H�H�
H(�'H(�L�#AK%�%K=�<K=�L#�"L#�&AN(�(N:�9N:)�_path_normpathc���tj|��}t|t��r5tjttj|������pdSt|��pdS)�0Normalize path, eliminating double slashes, etc.ryr)r@rAr3r4rMr�rNr5s r7rr!s\���y������d�E�"�"�	J��;�~�b�k�$�.?�.?�@�@�A�A�I�T�I��d�#�#�*�s�*r9c��tj|��}t|t��rd}d}d}d}d}n
d}d}d}d	}d
}|�|��r|S|�||��}t
|��\}}|�|��r||z
}|�|��}|�|��}d}|t|��kr�||r|||kr||=n\|||krK|dkr ||dz
|kr||dz
|dz�=|dz}n*|dkr|�
|��r||=n|dz
}n|dz
}|t|��k��|s|s|�|��||�|��zS)
r�rSrRry�..)s\\.\rTrrrr)z\\.\rUrrV)
r@rAr3r4rWrEr
�lstriprrX�endswith�appendr)	r6r#r&r!r"�special_prefixes�prefix�compsrus	         r7rr�s����y������d�E�"�"�	6��C��F��F��F�7����C��F��F��F�5���?�?�+�,�,�	��K��|�|�F�C�(�(��!�$�'�'�����?�?�3���	$��c�M�F��;�;�s�#�#�D��
�
�3����
���#�e�*�*�n�	���8�
�u�Q�x�6�1�
��!�H�H��q��V�#�	
��q�5��U�1�Q�3�Z�6�1���a��c�!�A�#�g����F�A�A��!�V������ 4� 4���a�����F�A�A��Q����#�e�*�*�n�	��	!�e�	!��L�L�� � � ��������'�'r9c���tj|��}t|��sLt|t��rtj��}ntj��}t||��}t|��S)z�Return the absolute version of a path as a fallback function in case
    `nt._getfullpathname` is not available or raises OSError. See bpo-31047 for
    more.

    )	r@rArr3r4�getcwdb�getcwdrr)r6�cwds  r7�_abspath_fallbackr�)sb���9�T�?�?�D���;�;���d�E�"�"�	��*�,�,�C�C��)�+�+�C��C������D�>�>�r9)�_getfullpathnamec��	tt|����S#ttf$rt	|��cYSwxYw)z&Return the absolute version of a path.)r�rr�r�r�r5s r7r r AsO��	+�#�H�T�N�N�3�3�3����$�	+�	+�	+�$�T�*�*�*�*�*�	+���s�� A�A)�_getfinalpathname�readlinkc���d}t��}t|��|vr�|�t|����	|}t|��}t	|��s<t|��s|}nht
tt|��|����}n,#t$r}|j
|vrYd}~n%�d}~wt$rYnwxYwt|��|v��|S)N)rVrlrm��� �2�C�Wi&i(i))�setr
�add�_nt_readlinkrrrrrr��winerrorr�)r6�allowed_winerror�seen�old_path�exs     r7�_readlink_deepr�Ns��L���u�u���t�n�n�D�(�	��H�H�X�d�^�^�$�$�$�
���#�D�)�)���T�{�{�C�"�(�+�+��'���#�D���):�):�D�$A�$A�B�B�D����
�
�
��;�"2�2���E�E�E�E�������
�
�
���
����'�t�n�n�D�(�	�,�s*�1B"�7*B"�"
C�,	B;�:B;�;
C�
Cc��d}d}|r�	t|��}|rt||��n|S#t$r�}|j|vr�	t	|��}||kr|rt||��n|cYd}~Sn#t$rYnwxYwt|��\}}|r|s
||zcYd}~S|rt||��n|}Yd}~nd}~wwxYw|��|S)N)rVrlrmr�r�r�r�r�r��{i�i�r�)r�rr�r�r�r)r6r�rwr��new_path�names      r7�_getfinalpathname_nonstrictr�xsX��K�����	:�
:�(��.�.��+/�9�t�D�$�'�'�'�T�9���
:�
:�
:��;�&6�6���	� .�d�3�3�H��4�'�J�7;�I�t�H�d�3�3�3��I�I�I�I�I�I�J�������D�����#�4�[�[�
��d��'��'��$�;�&�&�&�&�&�&�+/�9�t�D�$�'�'�'�T�����������'
:����	�	:�0�sJ�"+�
B=�
B8�(A/�(B=�.B8�/
A<�9B8�;A<�<B8�B=�B8�8B=F)�strictc��t|��}t|t��rSd}d}d}tj��}t|��ttjt����krdSn@d}d}d}tj��}t|��tt��krdS|�	|��}|st|��st||��}	t|��}d	}n0#t$r#}|r�|j}t|��}Yd}~nd}~wwxYw|s�|�	|��r�|�	|��r||t!|��d�z}	n|t!|��d�}		t|	��|kr|	}n$#t$r}|j|kr|	}Yd}~nd}~wwxYw|S)
NrTs\\?\UNC\s\\s\\.\NULrUz\\?\UNC\z\\z\\.\NULr)rr3r4r@r�r
rMr(r�rWrrr�r�r�r�rX)
r6r�r��
unc_prefix�new_unc_prefixr��
had_prefix�initial_winerrorr��spaths
          r7r)r)�s����~�~���d�E�"�"�	$��F�(�J�$�N��*�,�,�C���~�~��"�+�g�*>�*>�!?�!?�?�
%�$�}�
%��F�'�J�#�N��)�+�+�C���~�~��'�!2�!2�2�
$�#�|��_�_�V�,�,�
��	#�%��+�+�	#���T�?�?�D�	5�$�T�*�*�D� �����	5�	5�	5��
��!�{��.�t�4�4�D�D�D�D�D�D�����		5�����	!�d�o�o�f�5�5�	!����z�*�*�
+�&��c�*�o�o�.>�.>�)?�?����S��[�[�\�\�*��
!�$�U�+�+�t�3�!� �D����
!�
!�
!��;�"2�2�!� �D����������	
!����
�s0�/D�
D.�D)�)D.�F&�&
G�0
G�G�getwindowsversionrmrlc��tj|��}t|t��rd}d}d}nd}d}d}|�|}|st	d���tj|��}	tt
|����}tt
|����}t|��\}}t|��\}	}
t|��t|	��krt	d	|	�d
|�����d�|�	|��D��}d�|
�	|��D��}d
}
t||��D],\}}t|��t|��krn|
dz
}
�-|gt|��|
z
z||
d�z}|s|St|�S#ttttt f$rt#jd||���wxYw)z#Return a relative version of a pathrSryr�rrrNzno path specifiedzpath is on mount z, start on mount c��g|]}|�|��S�r���.0r�s  r7�
<listcomp>zrelpath.<locals>.<listcomp>�s��<�<�<�A�!�<�a�<�<�<r9c��g|]}|�|��Sr�r�r�s  r7r�zrelpath.<locals>.<listcomp>�s��:�:�:�1��:�Q�:�:�:r9rrVr+)r@rAr3r4r�r rr
r
r�ziprXrr^r_r`�DeprecationWarningrarb)r6�startr#r!r"�	start_abs�path_abs�start_drive�
start_rest�
path_drive�	path_rest�
start_list�	path_listru�e1�e2�rel_lists                 r7r+r+�s��
�9�T�?�?�D��$�����������������������.��,�-�-�-��I�e���E���H�U�O�O�,�,�	��8�D�>�>�*�*��",�Y�"7�"7���Z� *�8� 4� 4��
�I��K� � �H�Z�$8�$8�8�	*��*��
�
�K�K�)�*�*�
*�=�<��!1�!1�#�!6�!6�<�<�<�
�:�:�	���� 4� 4�:�:�:�	�
���*�i�0�0�	�	�F�B����|�|�x��|�|�+�
���
��F�A�A��8�s�:���q�0�1�I�a�b�b�M�A���	��M��X�����z�>�<�AS�T�����$�Y��e�<�<�<�
����s�!D2F�F�;Gc���
��|std���tttj|����}t|dt��rd�d�d�
nd�d�d�
	��fd	�|D��}�fd
�|D��}	t�fd�|D����\}n#t$rtd��d
�wxYwttd�|D������dkrtd���t|d�
������\}}|����}�
fd�|D��}�
fd�|D��}t|��}t|��}t|��D]\}	}
|
||	kr|d
|	�}n�|d
t|���}|r|�zn|}|��|��zS#t t"f$rt%jdg|�R��wxYw)zDGiven a sequence of path names, returns the longest common sub-path.z%commonpath() arg is an empty sequencerrSrRryrrrc�z��g|]7}t|������������8Sr�)r
rErO)r�rhr&r#s  ��r7r�zcommonpath.<locals>.<listcomp>&s;���Q�Q�Q�a�z�!�)�)�F�C�"8�"8�">�">�"@�"@�A�A�Q�Q�Qr9c�@��g|]\}}|������Sr�r}�r�rtrhr#s   �r7r�zcommonpath.<locals>.<listcomp>'s'���<�<�<���1�q�w�w�s�|�|�<�<�<r9c3�:�K�|]\}}|dd��kV��dS)NrVr�rs   �r7�	<genexpr>zcommonpath.<locals>.<genexpr>*s3�����>�>�$�!�Q��2�A�2��#��>�>�>�>�>�>r9z%Can't mix absolute and relative pathsNc3� K�|]	\}}|V��
dS�Nr�)r�rtrhs   r7r	zcommonpath.<locals>.<genexpr>1s&����-�-���A�1�-�-�-�-�-�-r9rVzPaths don't have the same drivec�$��g|]}|�|�k�
|��
Sr�r��r�r�r!s  �r7r�zcommonpath.<locals>.<listcomp>6s'���9�9�9��q�9�Q�&�[�9�!�9�9�9r9c�,��g|]}�fd�|D����S)c�$��g|]}|�|�k�
|��
Sr�r�r
s  �r7r�z)commonpath.<locals>.<listcomp>.<listcomp>8s'���:�:�:�a��:�a�6�k�:��:�:�:r9r�)r�rJr!s  �r7r�zcommonpath.<locals>.<listcomp>8s.���P�P�P�q�:�:�:�:�1�:�:�:�P�P�Pr9r/)r��tupler]r@rAr3r4r�rXr
rEr�min�max�	enumeraterr^r_rarb)rc�drivesplits�split_pathsrr�r6�common�s1�s2rur�r�r&r!r#s            @@@r7r/r/s}������B��@�A�A�A��#�b�i��'�'�(�(�E��%��(�E�"�"���������������!�Q�Q�Q�Q�Q�5�Q�Q�Q��<�<�<�<��<�<�<��	P��>�>�>�>�+�>�>�>�>�>�F�E�E���	P�	P�	P��D�E�E�4�O�	P�����s�-�-��-�-�-�-�-�.�.�!�3�	@��>�?�?�?� ��q��!1�!1�&�#�!>�!>�?�?���t����C����9�9�9�9�V�9�9�9��P�P�P�P�K�P�P�P��
��
�
��
��
�
���b�M�M�	&�	&�D�A�q��B�q�E�z�
���������
��H�S��W�W�H�%�F� %�0�����5�������(�(�(�(���~�&�����$�\�:�E�:�:�:�:�
����s%�%G�B!� G�!B<�<DG�%G=)�_isdirr)9�__doc__r!r"r'r#r$r&r%r(r@rBr�ra�__all__r8�_winapir:rFr;rGr<rHr
�ImportErrorrrr
rrrzrrrr�ntr�rrrr�rr�r�r r�r�r�r�r�r)�hasattrr�r*r+r/rrr�r9r7�<module>r s����

��	
��	��
��

��	��
��
��	�	�	�	�
�
�
�
�������������A�A�A�����!,�-�-�-�-�-�-�-�-�-�-�
8�8�8�8��$�	,�	,�	,�,�,�,�,�,�	,����$<�<�<� )�)�)�^0�0�0�p���.8�8�8��(�0���
������$�$�$����$�%�%�%�%�%�%�%�����������������:-�-�-�zj�j�j�`<+�!�!�!�!�!�!�l+�+�+�+��i�1(�1(�1(�0(�0(�0(�0(�0(�1(����x���"+�#�#�#�#�#�#�+�+�+�+��	� � � ��G�G�G� ����N�>�>�>�>�>�>�>�>�
(�(�(�T,�,�,�\"'�0�0�0�0�0�0��y�����H�H�H�����`&�g�c�+>�?�?�>�3�c�3�5�5�a�8�A�=��+�+�+�+�p1�1�1�h	�
#�"�"�"�"�"�"�"���	�	�	��D�D�	���si�
=�A�A�8A?�?B	�B	�B � B+�*B+�2B<�<C�C�
C�C)�(C)�D!�!D*�)D*