ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     B
     f76                 @   sB  d dl Z d dlZd dlZd dlZe jdkrDdd Zdd Zdd Zne jd	krnejd
krnd dl	m
Z dd Znejdrd dlmZ ne jd	kr&d dlZd dlZdd Zdd Zejdkrdd Zndd Zejdrdd Zdd Zn8ejdkrdd Zd'ddZndd  Zd!d" Zd#d Zd$d% Zed&kr>e  dS )(    Nntc              C   s   d} t j| }|dkrdS |t|  }t j|d dd\}}t|dd d }|dkrf|d7 }t|d	d
 d }|dkrd}|dkr|| S dS )zReturn the version of MSVC that was used to build Python.

        For Python 2.3 and up, the version number is included in
        sys.version.  For earlier versions, assume the compiler is MSVC 6.
        zMSC v.   N             g      $@r   )sysversionfindlensplitint)prefixisrestZmajorVersionZminorVersion r   0/opt/alt/python37/lib64/python3.7/ctypes/util.py_get_build_version	   s    r   c              C   s^   t  } | dkrdS | dkr d}n| dkr6d| d  }ndS ddl}d|jjkrV|d	7 }|d
 S )z%Return the name of the VC runtime dllNr   msvcrtr   zmsvcr%d
   r   z_d.pyddz.dll)r   importlib.machinery	machineryEXTENSION_SUFFIXES)r   Zclibname	importlibr   r   r   find_msvcrt"   s    r   c             C   st   | dkrt  S x`tjd tjD ]J}tj|| }tj|rD|S | 	drTq"|d }tj|r"|S q"W d S )N)cmPATHz.dll)
r   osenvironr   pathseppathjoinisfilelowerendswith)nameZ	directoryZfnamer   r   r   find_library7   s    r,   posixdarwin)	dyld_findc          	   C   sL   d|  d|  d| | f g}x,|D ]$} yt | S  tk
rB   w Y q X q W d S )Nzlib%s.dylibz%s.dylibz%s.framework/%s)
_dyld_find
ValueError)r+   possibler   r   r   r,   H   s    
aix)r,   c          	   C   s(   d}t | d}|d|kS Q R X dS )z,Return True if the given file is an ELF files   ELFbr   N)openread)filenameZ
elf_headerZthefiler   r   r   _is_elf`   s    r9   c       
      C   s  t dt|  }td}|s,td}|s4d S t }z||dd|jd|  g}t	t j
}d|d< d|d	< ytj|tjtj|d
}W n tk
r   d S X | |j }W d Q R X W d y|  W n tk
r   Y nX X t||}|sd S x |D ]}	t|	sqt |	S W d S )Nz[^\(\)\s]*lib%s\.[^\(\)\s]*ZgccZccz-Wl,-tz-oz-lCLC_ALLLANG)stdoutstderrenv)r#   fsencodereescapeshutilwhichtempfileZNamedTemporaryFiler+   dictr$   
subprocessPopenPIPEZSTDOUTOSErrorr=   r7   closeFileNotFoundErrorfindallr9   fsdecode)
r+   exprZ
c_compilerZtempargsr?   procZtraceresfiler   r   r   _findLib_gccf   s@    




rT   Zsunos5c          	   C   sz   | sd S yt jdd| ft jt jd}W n tk
r:   d S X | |j }W d Q R X td|}|sjd S t	
|dS )Nz/usr/ccs/bin/dumpz-Lpv)r=   r>   s   \[.*\]\sSONAME\s+([^\s]+)r   )rG   rH   rI   DEVNULLrJ   r=   r7   rA   searchr#   rN   group)frQ   datarR   r   r   r   _get_soname   s    rZ   c          	   C   s   | sd S t d}|sd S y"tj|ddd| ftjtjd}W n tk
rP   d S X | |j }W d Q R X t	
d|}|sd S t|dS )Nobjdumpz-pz-jz.dynamic)r=   r>   s   \sSONAME\s+([^\s]+)r   )rC   rD   rG   rH   rI   rU   rJ   r=   r7   rA   rV   r#   rN   rW   )rX   r[   rQ   dumprR   r   r   r   rZ      s"    
)ZfreebsdZopenbsdZ	dragonflyc             C   sR   |  d}g }y"x|r,|dt|  qW W n tk
rD   Y nX |pPtjgS )N   .r   )r   insertr   popr1   r   maxsize)ZlibnamepartsZnumsr   r   r   _num_version   s    
rb   c          	   C   s   t | }d||f }t|}ytjdtjtjd}W n tk
rP   d}Y nX | |j	
 }W d Q R X t ||}|stt| S |jtd t|d S )Nz:-l%s\.\S+ => \S*/(lib%s\.\S+))z/sbin/ldconfigz-r)r=   r>       )keyr   )rA   rB   r#   r@   rG   rH   rI   rU   rJ   r=   r7   rM   rZ   rT   sortrb   rN   )r+   ZenamerO   rQ   rY   rR   r   r   r   r,      s     


c       	   	   C   s   t jdsd S tt j}d|d< |r,d}nd}d }ytj|tjtj|d}W n t	k
rb   d S X |: x2|j
D ](}| }|drrt | d }qrW W d Q R X |sd S x4|d	D ]&}t j|d
|  }t j|r|S qW d S )Nz/usr/bin/crler:   r;   )z/usr/bin/crlez-64)z/usr/bin/crle)r=   r>   r?   s   Default Library Path (ELF):r5   :zlib%s.so)r#   r&   existsrF   r$   rG   rH   rI   rU   rJ   r=   strip
startswithrN   r   r'   )	r+   is64r?   rP   pathsrQ   linedirZlibfiler   r   r   _findLib_crle   s6    

 rn   Fc             C   s   t t| |pt| S )N)rZ   rn   rT   )r+   rj   r   r   r   r,   	  s    c          	   C   s   dd l }|ddkr&t jd }nt jd }dddddd	}||d
}d}t|t| |f }yZt	j
ddgt	jt	jt	jdddd,}t||j }|rt|dS W d Q R X W n tk
r   Y nX d S )Nr   lr5   z-32z-64zlibc6,x86-64zlibc6,64bitzlibc6,IA-64)z	x86_64-64zppc64-64z
sparc64-64zs390x-64zia64-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%sz/sbin/ldconfigz-pr:   )r;   r<   )stdinr>   r=   r?   r   )structZcalcsizer#   unamemachinegetr@   rA   rB   rG   rH   rU   rI   rV   r=   r7   rN   rW   rJ   )r+   rq   rs   Zmach_mapZabi_typeZregexprR   r   r   r   _findSoname_ldconfig  s.    
rv   c             C   s   dt |  }ddg}tjd}|rHx |dD ]}|d|g q2W |dtjd|  g d }yXtj	|tj
tj
d	d
}| \}}t |t|}	x|	D ]}
t|
sqt|
S W W n tk
r   Y nX |S )Nz[^\(\)\s]*lib%s\.[^\(\)\s]*Zldz-tZLD_LIBRARY_PATHrf   z-Lz-oz-l%sT)r=   r>   Zuniversal_newlines)rA   rB   r#   r$   rt   r   extenddevnullrG   rH   rI   ZcommunicaterM   rN   r9   	Exception)r+   rO   cmdZlibpathr   resultru   out_rR   rS   r   r   r   _findLib_ld,  s*    

r~   c             C   s    t | ptt| ptt| S )N)rv   rZ   rT   r~   )r+   r   r   r   r,   G  s    c              C   s  ddl m}  tjdkr:t| j t| d ttd tjdkrttd ttd ttd tj	d	krt| 
d
 t| 
d t| 
d t| 
d ntj	drddl m} tjdk rtd|dtj  td| 
d  ttd t| 
d n*td|dtj  td| 
d  tdtd  td| 
td  tdtd  td| 
td  n(t| 
d t| 
d ttd d S )Nr   )cdllr   r   r-   r!   r    bz2r.   z
libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemr3   )CDLLl        z"Using CDLL(name, os.RTLD_MEMBER): zlibc.a(shr.o)zUsing cdll.LoadLibrary(): Zrpmz	librpm.sozlibc.a(shr_64.o)z	crypt	:: Zcryptz
crypto	:: Zcryptozlibm.sozlibcrypt.so)Zctypesr   r#   r+   printr   loadr,   r   platformZLoadLibraryri   r   r`   ZRTLD_MEMBER)r   r   r   r   r   testO  s<    


r   __main__)F)r#   rC   rG   r   r+   r   r   r,   r   Zctypes.macholib.dyldr/   r0   ri   Zctypes._aixrA   rE   r9   rT   rZ   rb   rn   rv   r~   r   __name__r   r   r   r   <module>   s>   


2


$(
