<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    YI~d                 @   s  d Z dZee  Zdd Zdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zd`ddZeejZdddd ZeedZdZdZdgZdgZe ZZdadd d!d"Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Z d-d. Z!d/d0 Z"d1d2 Z#d3d4 Z$dbd5d6Z%dcd8d9Z&ddd;d<Z'd=d> Z(e) Z*dede*d?d@dAZ+G dBdC dCZ,G dDdE dEZ-G dFdG dGe-Z.G dHdI dIZ/G dJdK dKe/e.Z0G dLdM dMe/e-Z1g Z2G dNdO dOe/e-Z3G dPdQ dQZ4G dRdS dSZ5G dTdU dUZ6G dVdW dWZ7dfdXdYZ8dZd[ Z9d\d] Z:d^d_ Z;dS )g)win)cygwindarwinc                 s<   t jtr0t jtrd nd  fdd} ndd } | S )NPYTHONCASEOKs   PYTHONCASEOKc                  s
    t jkS )N)_osenviron )keyr   B/opt/alt/python37/lib64/python3.7/importlib/_bootstrap_external.py_relax_case$   s    z%_make_relax_case.<locals>._relax_casec               S   s   dS )NFr   r   r   r   r	   r
   (   s    )sysplatform
startswith_CASE_INSENSITIVE_PLATFORMS#_CASE_INSENSITIVE_PLATFORMS_STR_KEY)r
   r   )r   r	   _make_relax_case   s    r   c             C   s   t | d@ ddS )Nl       little)intto_bytes)xr   r   r	   _w_long.   s    r   c             C   s   t | dS )Nr   )r   
from_bytes)	int_bytesr   r   r	   _r_long3   s    r   c              G   s   t dd | D S )Nc             S   s   g | ]}|r| tqS r   )rstrippath_separators).0partr   r   r	   
<listcomp>:   s   z_path_join.<locals>.<listcomp>)path_sepjoin)
path_partsr   r   r	   
_path_join8   s    
r"   c             C   s`   t tdkr$| t\}}}||fS x2t| D ]&}|tkr.| j|dd\}}||fS q.W d| fS )N   )maxsplit )lenr   
rpartitionr   reversedrsplit)pathfront_tailr   r   r   r	   _path_split>   s    r.   c             C   s
   t | S )N)r   stat)r*   r   r   r	   
_path_statJ   s    r0   c             C   s0   yt | }W n tk
r    dS X |jd@ |kS )NFi   )r0   OSErrorst_mode)r*   mode	stat_infor   r   r	   _path_is_mode_typeT   s
    r5   c             C   s
   t | dS )Ni   )r5   )r*   r   r   r	   _path_isfile]   s    r6   c             C   s   | st  } t| dS )Ni @  )r   getcwdr5   )r*   r   r   r	   _path_isdirb   s    r8     c             C   s   d | t| }t|tjtjB tjB |d@ }y2t|d}|	| W d Q R X t
||  W n: tk
r   yt| W n tk
r   Y nX  Y nX d S )Nz{}.{}i  wb)formatidr   openO_EXCLO_CREATO_WRONLY_ioFileIOwritereplacer1   unlink)r*   datar3   path_tmpfdfiler   r   r	   _write_atomici   s    rJ   iB     r   s   
__pycache__zopt-z.pyz.pycN)optimizationc            C   s   |d k	r4t dt |d k	r(d}t||r0dnd}t| } t| \}}|d\}}}tj	j
}	|	d krrtdd|r~|n|||	g}
|d krtjjdkrd}ntjj}t|}|dkr| std|d	|
t|}
t|t|
td  S )
NzFthe debug_override parameter is deprecated; use 'optimization' insteadz2debug_override or optimization must be set to Noner%   r#   .z$sys.implementation.cache_tag is None    z{!r} is not alphanumericz{}.{}{})	_warningswarnDeprecationWarning	TypeErrorr   fspathr.   r'   r   implementation	cache_tagNotImplementedErrorr    flagsoptimizestrisalnum
ValueErrorr;   _OPTr"   _PYCACHEBYTECODE_SUFFIXES)r*   debug_overriderM   messageheadr-   basesepresttagalmost_filenamer   r   r	   cache_from_source  s0    
rh   c             C   s   t jjd krtdt| } t| \}}t|\}}|tkrNtd	t| |
d}|dkrptd	|nV|dkr|ddd }|tstd		t|ttd  }| std
	||dd }t||td  S )Nz$sys.implementation.cache_tag is Nonez%{} not bottom-level directory in {!r}rN   >   rK      z!expected only 2 or 3 dots in {!r}ri   rK   z9optimization portion of filename does not start with {!r}z4optimization level {!r} is not an alphanumeric valuerO   )r   rU   rV   rW   r   rT   r.   r^   r\   r;   countr)   r   r]   r&   r[   	partitionr"   SOURCE_SUFFIXES)r*   rb   pycache_filenamepycache	dot_countrM   	opt_levelbase_filenamer   r   r	   source_from_cache<  s.    	




rs   c          	   C   s~   t | dkrd S | d\}}}|r8| dd dkr<| S yt| }W n$ ttfk
rl   | d d }Y nX t|rz|S | S )NrO   rN   py)r&   r'   lowerrs   rW   r\   r6   )bytecode_pathre   r,   	extensionsource_pathr   r   r	   _get_sourcefile^  s    r{   c             C   sH   |  ttr.yt| S  tk
r*   Y qDX n|  ttr@| S d S d S )N)endswithtuplerm   rh   rW   r_   )filenamer   r   r	   _get_cachedq  s    r   c             C   s4   yt | j}W n tk
r&   d}Y nX |dO }|S )Ni     )r0   r2   r1   )r*   r3   r   r   r	   
_calc_mode}  s    
r   c                sD   d fdd	}y
t j}W n tk
r4   dd }Y nX ||  |S )Nc                sB   |d kr| j }n | j |kr0td| j |f |d | |f||S )Nzloader for %s cannot handle %s)name)r   ImportError)selfr   argskwargs)methodr   r	   _check_name_wrapper  s    
z(_check_name.<locals>._check_name_wrapperc             S   s<   x(dD ] }t ||rt| |t|| qW | j|j d S )N)
__module____name____qualname____doc__)hasattrsetattrgetattr__dict__update)newoldrD   r   r   r	   _wrap  s    

z_check_name.<locals>._wrap)N)
_bootstrapr   	NameError)r   r   r   r   )r   r	   _check_name  s    

r   c             C   s<   |  |\}}|d kr8t|r8d}t||d t |S )Nz,Not importing directory {}: missing __init__rO   )find_loaderr&   rP   rQ   r;   ImportWarning)r   fullnameloaderportionsmsgr   r   r	   _find_module_shim  s
    
r   c             C   s   | d d }|t kr<d|d|}td| t|f|t| dk rfd|}td| t|t| dd }|d@ rd	|d
|}t|f||S )Nr   zbad magic number in z: z{}   z(reached EOF while reading pyc header of    zinvalid flags z in )MAGIC_NUMBERr   _verbose_messager   r&   EOFErrorr   )rF   r   exc_detailsmagicra   rX   r   r   r	   _classify_pyc  s    
r   c             C   sp   t | dd |d@ kr:d|}td| t|f||d k	rlt | dd |d@ krltd|f|d S )Nr      l    zbytecode is stale for z{}r   )r   r   r   r   )rF   source_mtimesource_sizer   r   ra   r   r   r	   _validate_timestamp_pyc  s    
r   c             C   s&   | dd |kr"t d|f|d S )Nr   r   z.hash in bytecode doesn't match hash of source )r   )rF   source_hashr   r   r   r   r	   _validate_hash_pyc  s    
r   c             C   sP   t | }t|tr8td| |d k	r4t|| |S td	|||dd S )Nzcode object from {!r}zNon-code object in {!r})r   r*   )
marshalloads
isinstance
_code_typer   r   _imp_fix_co_filenamer   r;   )rF   r   rx   rz   coder   r   r	   _compile_bytecode  s    


r   rO   c             C   sF   t t}|td |t| |t| |t|  |S )NrO   )	bytearrayr   extendr   r   dumps)r   mtimer   rF   r   r   r	   _code_to_timestamp_pyc  s    r   Tc             C   s@   t t}d|d> B }|t| || |t|  |S )Nr#   )r   r   r   r   r   r   )r   r   checkedrF   rX   r   r   r	   _code_to_hash_pyc"  s    
r   c             C   s>   dd l }t| j}||}td d}|| |d S )NrO   T)tokenizerA   BytesIOreadlinedetect_encodingIncrementalNewlineDecoderdecode)source_bytesr   source_bytes_readlineencodingnewline_decoderr   r   r	   decode_source-  s
    
r   )r   submodule_search_locationsc      	      C   s  |d kr<d}t |drFy|| }W qF tk
r8   Y qFX n
t|}tj| ||d}d|_|d krx6t D ](\}}|	t
|rl|| |}||_P qlW d S |tkrt |dry|| }W n tk
r   Y qX |rg |_n||_|jg kr|rt|d }|j| |S )Nz	<unknown>get_filename)originT
is_packagerO   )r   r   r   r   rT   r   
ModuleSpec_set_fileattr_get_supported_file_loadersr|   r}   r   	_POPULATEr   r   r.   append)	r   locationr   r   specloader_classsuffixesr   dirnamer   r   r	   spec_from_file_location>  s>    



r   c               @   sL   e Zd ZdZdZdZedd Zedd Zedd	d
Z	edddZ
dS )WindowsRegistryFinderz;Software\Python\PythonCore\{sys_version}\Modules\{fullname}zASoftware\Python\PythonCore\{sys_version}\Modules\{fullname}\DebugFc             C   s2   yt t j|S  tk
r,   t t j|S X d S )N)_winregOpenKeyHKEY_CURRENT_USERr1   HKEY_LOCAL_MACHINE)clsr   r   r   r	   _open_registry  s    z$WindowsRegistryFinder._open_registryc          	   C   sp   | j r| j}n| j}|j|dtjd d  d}y&| |}t|d}W d Q R X W n t	k
rj   d S X |S )Nz%d.%drK   )r   sys_versionr%   )
DEBUG_BUILDREGISTRY_KEY_DEBUGREGISTRY_KEYr;   r   version_infor   r   
QueryValuer1   )r   r   registry_keyr   hkeyfilepathr   r   r	   _search_registry  s    z&WindowsRegistryFinder._search_registryNc             C   sx   |  |}|d krd S yt| W n tk
r6   d S X x:t D ]0\}}|t|r@tj|||||d}|S q@W d S )N)r   )r   r0   r1   r   r|   r}   r   spec_from_loader)r   r   r*   targetr   r   r   r   r   r   r	   	find_spec  s    
zWindowsRegistryFinder.find_specc             C   s"   |  ||}|d k	r|jS d S d S )N)r   r   )r   r   r*   r   r   r   r	   find_module  s    z!WindowsRegistryFinder.find_module)NN)N)r   r   r   r   r   r   classmethodr   r   r   r   r   r   r   r	   r     s   r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_LoaderBasicsc             C   s@   t | |d }|ddd }|dd }|dko>|dkS )Nr#   rN   rO   rK   __init__)r.   r   r)   r'   )r   r   r~   filename_base	tail_namer   r   r	   r     s    z_LoaderBasics.is_packagec             C   s   d S )Nr   )r   r   r   r   r	   create_module  s    z_LoaderBasics.create_modulec             C   s8   |  |j}|d kr$td|jtt||j d S )Nz4cannot load module {!r} when get_code() returns None)get_coder   r   r;   r   _call_with_frames_removedexecr   )r   moduler   r   r   r	   exec_module  s
    
z_LoaderBasics.exec_modulec             C   s   t | |S )N)r   _load_module_shim)r   r   r   r   r	   load_module  s    z_LoaderBasics.load_moduleN)r   r   r   r   r   r   r   r   r   r   r	   r     s   r   c               @   sJ   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZddddZdd Z	dS )SourceLoaderc             C   s   t d S )N)r1   )r   r*   r   r   r	   
path_mtime  s    zSourceLoader.path_mtimec             C   s   d|  |iS )Nr   )r   )r   r*   r   r   r	   
path_stats  s    zSourceLoader.path_statsc             C   s   |  ||S )N)set_data)r   rz   
cache_pathrF   r   r   r	   _cache_bytecode  s    zSourceLoader._cache_bytecodec             C   s   d S )Nr   )r   r*   rF   r   r   r	   r      s    zSourceLoader.set_datac          
   C   sR   |  |}y| |}W n0 tk
rH } ztd|d|W d d }~X Y nX t|S )Nz'source not available through get_data())r   )r   get_datar1   r   r   )r   r   r*   r   excr   r   r	   
get_source  s    
zSourceLoader.get_sourceru   )	_optimizec            C   s   t jt||dd|dS )Nr   T)dont_inheritrY   )r   r   compile)r   rF   r*   r  r   r   r	   source_to_code  s    zSourceLoader.source_to_codec          	   C   s.  |  |}d }d }d }d}d}yt|}W n tk
rD   d }Y n0X y| |}	W n tk
rj   Y n
X t|	d }y| |}
W n tk
r   Y nX ||d}yt|
||}t|
dd  }|d@ dk}|r$|d@ dk}t	j
d	kr8|st	j
d
kr8| |}t	t|}t|
||| nt|
||	d || W n ttfk
rT   Y n X td|| t||||dS |d kr| |}| ||}td| tjs*|d k	r*|d k	r*|r|d krt	|}t|||}
nt||t|}
y| |||
 td| W n tk
r(   Y nX |S )NFTr   )r   r*   r   r#   rO   rK   neveralwayssizez{} matches {})r   rx   rz   zcode object from {}z
wrote {!r})r   rh   rW   r   r1   r   r   r   
memoryviewr   check_hash_based_pycsr   _RAW_MAGIC_NUMBERr   r   r   r   r   r   r   r  r   dont_write_bytecoder   r   r&   r   )r   r   rz   r   r   r   
hash_basedcheck_sourcerx   strF   r   rX   
bytes_datacode_objectr   r   r	   r     s    








zSourceLoader.get_codeN)
r   r   r   r   r   r   r   r  r  r   r   r   r   r	   r     s   

r   c                   sx   e Zd Zdd Zdd Zdd Ze fddZed	d
 Zdd Z	edd Z
dd Zdd Zdd Zdd Z  ZS )
FileLoaderc             C   s   || _ || _d S )N)r   r*   )r   r   r*   r   r   r	   r   t  s    zFileLoader.__init__c             C   s   | j |j ko| j|jkS )N)	__class__r   )r   otherr   r   r	   __eq__z  s    zFileLoader.__eq__c             C   s   t | jt | jA S )N)hashr   r*   )r   r   r   r	   __hash__~  s    zFileLoader.__hash__c                s   t t| |S )N)superr  r   )r   r   )r  r   r	   r     s    
zFileLoader.load_modulec             C   s   | j S )N)r*   )r   r   r   r   r	   r     s    zFileLoader.get_filenamec          	   C   s    t |d
}| S Q R X d S )Nr)rA   rB   read)r   r*   rI   r   r   r	   r     s    zFileLoader.get_datac             C   s   |  |r| S d S )N)r   )r   r   r   r   r	   get_resource_reader  s    
zFileLoader.get_resource_readerc             C   s    t t| jd |}t|dS )NrO   r  )r"   r.   r*   rA   rB   )r   resourcer*   r   r   r	   open_resource  s    zFileLoader.open_resourcec             C   s&   |  |sttt| jd |}|S )NrO   )is_resourceFileNotFoundErrorr"   r.   r*   )r   r  r*   r   r   r	   resource_path  s    
zFileLoader.resource_pathc             C   s(   t |krdS tt| jd |}t|S )NFrO   )r   r"   r.   r*   r6   )r   r   r*   r   r   r	   r    s    zFileLoader.is_resourcec             C   s   t tt| jd S )NrO   )iterr   listdirr.   r*   )r   r   r   r	   contents  s    zFileLoader.contents)r   r   r   r   r  r  r   r   r   r   r  r  r   r  r#  __classcell__r   r   )r  r	   r  o  s   r  c               @   s*   e Zd Zdd Zdd ZddddZd	S )
SourceFileLoaderc             C   s   t |}|j|jdS )N)r   r  )r0   st_mtimest_size)r   r*   r  r   r   r	   r     s    zSourceFileLoader.path_statsc             C   s   t |}| j|||dS )N)_mode)r   r   )r   rz   rx   rF   r3   r   r   r	   r     s    z SourceFileLoader._cache_bytecodei  )r(  c      	      C   s   t |\}}g }x&|r6t|s6t |\}}|| qW xnt|D ]b}t||}yt| W qB tk
rt   wBY qB tk
r } zt	
d|| d S d }~X Y qBX qBW yt||| t	
d| W n0 tk
r } zt	
d|| W d d }~X Y nX d S )Nzcould not create {!r}: {!r}zcreated {!r})r.   r8   r   r(   r"   r   mkdirFileExistsErrorr1   r   r   rJ   )	r   r*   rF   r(  parentr~   r!   r   r   r   r   r	   r     s*    
zSourceFileLoader.set_dataN)r   r   r   r   r   r   r   r   r   r	   r%    s   r%  c               @   s   e Zd Zdd Zdd ZdS )SourcelessFileLoaderc             C   sD   |  |}| |}||d}t||| tt|dd  ||dS )N)r   r*   r   )r   rx   )r   r   r   r   r	  )r   r   r*   rF   r   r   r   r	   r     s    

zSourcelessFileLoader.get_codec             C   s   d S )Nr   )r   r   r   r   r	   r    s    zSourcelessFileLoader.get_sourceN)r   r   r   r   r  r   r   r   r	   r,    s   r,  c               @   sX   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
edd ZdS )ExtensionFileLoaderc             C   s   || _ || _d S )N)r   r*   )r   r   r*   r   r   r	   r     s    zExtensionFileLoader.__init__c             C   s   | j |j ko| j|jkS )N)r  r   )r   r  r   r   r	   r  	  s    zExtensionFileLoader.__eq__c             C   s   t | jt | jA S )N)r  r   r*   )r   r   r   r	   r    s    zExtensionFileLoader.__hash__c             C   s$   t tj|}t d|j| j |S )Nz&extension module {!r} loaded from {!r})r   r   r   create_dynamicr   r   r*   )r   r   r   r   r   r	   r     s
    
z!ExtensionFileLoader.create_modulec             C   s$   t tj| t d| j| j d S )Nz(extension module {!r} executed from {!r})r   r   r   exec_dynamicr   r   r*   )r   r   r   r   r	   r     s    zExtensionFileLoader.exec_modulec                s$   t | jd  t fddtD S )Nr#   c             3   s   | ]} d | kV  qdS )r   Nr   )r   suffix)	file_namer   r	   	<genexpr>!  s   z1ExtensionFileLoader.is_package.<locals>.<genexpr>)r.   r*   anyEXTENSION_SUFFIXES)r   r   r   )r1  r	   r     s    zExtensionFileLoader.is_packagec             C   s   d S )Nr   )r   r   r   r   r	   r   $  s    zExtensionFileLoader.get_codec             C   s   d S )Nr   )r   r   r   r   r	   r  (  s    zExtensionFileLoader.get_sourcec             C   s   | j S )N)r*   )r   r   r   r   r	   r   ,  s    z ExtensionFileLoader.get_filenameN)r   r   r   r   r  r  r   r   r   r   r  r   r   r   r   r   r	   r-    s   r-  c               @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )_NamespacePathc             C   s$   || _ || _t|  | _|| _d S )N)_name_pathr}   _get_parent_path_last_parent_path_path_finder)r   r   r*   path_finderr   r   r	   r   9  s    z_NamespacePath.__init__c             C   s&   | j d\}}}|dkrdS |dfS )NrN   r%   )r   r*   __path__)r6  r'   )r   r+  dotmer   r   r	   _find_parent_path_names?  s    z&_NamespacePath._find_parent_path_namesc             C   s   |   \}}ttj| |S )N)r?  r   r   modules)r   parent_module_namepath_attr_namer   r   r	   r8  I  s    z_NamespacePath._get_parent_pathc             C   sP   t |  }|| jkrJ| | j|}|d k	rD|jd krD|jrD|j| _|| _| jS )N)r}   r8  r9  r:  r6  r   r   r7  )r   parent_pathr   r   r   r	   _recalculateM  s    
z_NamespacePath._recalculatec             C   s   t |  S )N)r!  rD  )r   r   r   r	   __iter__Z  s    z_NamespacePath.__iter__c             C   s   || j |< d S )N)r7  )r   indexr*   r   r   r	   __setitem__]  s    z_NamespacePath.__setitem__c             C   s   t |  S )N)r&   rD  )r   r   r   r	   __len__`  s    z_NamespacePath.__len__c             C   s   d | jS )Nz_NamespacePath({!r}))r;   r7  )r   r   r   r	   __repr__c  s    z_NamespacePath.__repr__c             C   s   ||   kS )N)rD  )r   itemr   r   r	   __contains__f  s    z_NamespacePath.__contains__c             C   s   | j | d S )N)r7  r   )r   rJ  r   r   r	   r   i  s    z_NamespacePath.appendN)r   r   r   r   r?  r8  rD  rE  rG  rH  rI  rK  r   r   r   r   r	   r5  2  s   
r5  c               @   sP   e Zd Zdd Zedd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )_NamespaceLoaderc             C   s   t |||| _d S )N)r5  r7  )r   r   r*   r;  r   r   r	   r   o  s    z_NamespaceLoader.__init__c             C   s   d |jS )Nz<module {!r} (namespace)>)r;   r   )r   r   r   r   r	   module_reprr  s    z_NamespaceLoader.module_reprc             C   s   dS )NTr   )r   r   r   r   r	   r   {  s    z_NamespaceLoader.is_packagec             C   s   dS )Nr%   r   )r   r   r   r   r	   r  ~  s    z_NamespaceLoader.get_sourcec             C   s   t dddddS )Nr%   z<string>r   T)r  )r  )r   r   r   r   r	   r     s    z_NamespaceLoader.get_codec             C   s   d S )Nr   )r   r   r   r   r	   r     s    z_NamespaceLoader.create_modulec             C   s   d S )Nr   )r   r   r   r   r	   r     s    z_NamespaceLoader.exec_modulec             C   s   t d| j t | |S )Nz&namespace module loaded with path {!r})r   r   r7  r   )r   r   r   r   r	   r     s    z_NamespaceLoader.load_moduleN)r   r   r   r   r   rM  r   r  r   r   r   r   r   r   r   r	   rL  n  s   	rL  c               @   sf   e Zd Zedd Zedd Zedd Zedd Zedd
dZedddZ	edddZ
d	S )
PathFinderc             C   sD   x>t tj D ],\}}|d kr*tj|= qt|dr|  qW d S )Ninvalidate_caches)listr   path_importer_cacheitemsr   rO  )r   r   finderr   r   r	   rO    s
    

zPathFinder.invalidate_cachesc          	   C   sT   t jd k	rt jstdt x2t jD ]$}y||S  tk
rF   w$Y q$X q$W d S d S )Nzsys.path_hooks is empty)r   
path_hooksrP   rQ   r   r   )r   r*   hookr   r   r	   _path_hooks  s    zPathFinder._path_hooksc             C   sf   |dkr*yt  }W n tk
r(   d S X ytj| }W n( tk
r`   | |}|tj|< Y nX |S )Nr%   )r   r7   r  r   rQ  KeyErrorrV  )r   r*   rS  r   r   r	   _path_importer_cache  s    
zPathFinder._path_importer_cachec             C   sR   t |dr||\}}n||}g }|d k	r<t||S t|d }||_|S )Nr   )r   r   r   r   r   r   r   )r   r   rS  r   r   r   r   r   r	   _legacy_get_spec  s    

zPathFinder._legacy_get_specNc       	      C   s   g }x|D ]}t |ttfsq
| |}|d k	r
t|drH|||}n| ||}|d kr^q
|jd k	rl|S |j}|d krt	d|
| q
W t|d }||_|S d S )Nr   zspec missing loader)r   rZ   bytesrX  r   r   rY  r   r   r   r   r   r   )	r   r   r*   r   namespace_pathentryrS  r   r   r   r   r	   	_get_spec  s(    



zPathFinder._get_specc             C   sd   |d krt j}| |||}|d kr(d S |jd kr\|j}|rVd |_t||| j|_|S d S n|S d S )N)r   r*   r]  r   r   r   r5  )r   r   r*   r   r   r[  r   r   r	   r     s    
zPathFinder.find_specc             C   s   |  ||}|d krd S |jS )N)r   r   )r   r   r*   r   r   r   r	   r     s    zPathFinder.find_module)N)NN)N)r   r   r   r   rO  rV  rX  rY  r]  r   r   r   r   r   r	   rN    s   
rN  c               @   sV   e Zd Zdd Zdd ZeZdd Zdd Zdd
dZ	dd Z
edd Zdd Zd	S )
FileFinderc                sX   g }x(|D ] \ }|  fdd|D  q
W || _|p:d| _d| _t | _t | _d S )Nc             3   s   | ]}| fV  qd S )Nr   )r   r0  )r   r   r	   r2  -  s    z&FileFinder.__init__.<locals>.<genexpr>rN   ru   )r   _loadersr*   _path_mtimeset_path_cache_relaxed_path_cache)r   r*   loader_detailsloadersr   r   )r   r	   r   '  s    
zFileFinder.__init__c             C   s
   d| _ d S )Nru   )r`  )r   r   r   r	   rO  5  s    zFileFinder.invalidate_cachesc             C   s*   |  |}|d krd g fS |j|jp&g fS )N)r   r   r   )r   r   r   r   r   r	   r   ;  s    
zFileFinder.find_loaderc             C   s   |||}t ||||dS )N)r   r   )r   )r   r   r   r*   smslr   r   r   r   r	   r]  G  s    
zFileFinder._get_specNc             C   sb  d}| dd }yt| jp"t j}W n tk
rB   d}Y nX || jkr\|   || _t	 rr| j
}| }n
| j}|}||krt| j|}xH| jD ]6\}	}
d|	 }t||}t|r| |
|||g|S qW t|}xX| jD ]N\}	}
t| j||	 }tjd|dd ||	 |krt|r| |
||d |S qW |r^td| t|d }|g|_|S d S )	NFrN   rK   ru   r   z	trying {})	verbosityzpossible namespace for {})r'   r0   r*   r   r7   r&  r1   r`  _fill_cacher
   rc  rw   rb  r"   r_  r6   r]  r8   r   r   r   r   )r   r   r   is_namespacetail_moduler   cachecache_module	base_pathr0  r   init_filename	full_pathr   r   r   r	   r   L  sF    




zFileFinder.find_specc       	   
   C   s   | j }yt|pt }W n tttfk
r:   g }Y nX tj	dsTt
|| _nNt
 }x@|D ]8}|d\}}}|rd|| }n|}|| q`W || _tj	trdd |D | _d S )Nr   rN   z{}.{}c             S   s   h | ]}|  qS r   )rw   )r   fnr   r   r	   	<setcomp>  s    z)FileFinder._fill_cache.<locals>.<setcomp>)r*   r   r"  r7   r  PermissionErrorNotADirectoryErrorr   r   r   ra  rb  rl   r;   rw   addr   rc  )	r   r*   r#  lower_suffix_contentsrJ  r   r=  r0  new_namer   r   r	   rh  |  s"    

zFileFinder._fill_cachec                s    fdd}|S )Nc                s"   t | std| d | f S )Nzonly directories are supported)r*   )r8   r   )r*   )r   rd  r   r	   path_hook_for_FileFinder  s    z6FileFinder.path_hook.<locals>.path_hook_for_FileFinderr   )r   rd  rw  r   )r   rd  r	   	path_hook  s    
zFileFinder.path_hookc             C   s   d | jS )NzFileFinder({!r}))r;   r*   )r   r   r   r	   rI    s    zFileFinder.__repr__)N)r   r   r   r   rO  r   r   r   r]  r   rh  r   rx  rI  r   r   r   r	   r^    s   	
0r^  c             C   s   |  d}|  d}|sB|r$|j}n||kr8t||}n
t||}|sTt|||d}y$|| d< || d< || d< || d< W n tk
r   Y nX d S )N
__loader____spec__)r   __file__
__cached__)getr   r,  r%  r   	Exception)nsr   pathname	cpathnamer   r   r   r   r	   _fix_up_module  s"    


r  c              C   s&   t t f} ttf}ttf}| ||gS )N)r-  r   extension_suffixesr%  rm   r,  r_   )
extensionssourcebytecoder   r   r	   r     s    r   c          	   C   s  | a t jat jatjt }x8dD ]0}|tjkr:t |}n
tj| }t||| q W ddgfdddgff}x`|D ]P\}}|d }|tjkrtj| }P qpyt |}P W qp tk
r   wpY qpX qpW tdt|d| t|d	| t|d
d| t d}	t|d|	 t d}
t|d|
 |dkrBt d}t|d| t|dt	  t
t  |dkrtd dt
krdt_d S )N)rA   rP   builtinsr   posix/nt\rO   zimportlib requires posix or ntr   r   r   r%   _thread_weakrefwinregr   r
   z.pywz_d.pydT)r   r   r   r@  r   _builtin_from_namer   r   r    r   r4  r   r  rm   r   r   r   )_bootstrap_moduleself_modulebuiltin_namebuiltin_module
os_details
builtin_osr   r   	os_modulethread_moduleweakref_modulewinreg_moduler   r   r	   _setup  sJ    













r  c             C   s2   t |  t }tjtj| g tjt	 d S )N)
r  r   r   rT  r   r^  rx  	meta_pathr   rN  )r  supported_loadersr   r   r	   _install  s    r  )r9   )N)NNN)rO   rO   )T)N)N)<r   %_CASE_INSENSITIVE_PLATFORMS_BYTES_KEYr   r   r   r   r"   r.   r0   r5   r6   r8   rJ   type__code__r   r   r   r   r   r  r^   r]   rm   r_   DEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESrh   rs   r{   r   r   r   r   r   r   r   r   r   r   r   objectr   r   r   r   r   r  r%  r,  r4  r-  r5  rL  rN  r^  r  r   r  r  r   r   r   r	   <module>   st   
	

 -"!



C@ D-5<*  
@