
    F\h7                     @   S SK r S SKrS SKrS SKr\ R                  S:X  a
  S rS rS rO\ R                  S:X  a  \R                  S;   a
  S SK	J
r  S	 rO\R                  R                  S
5      (       a  S SKJr  O\R                  S:X  a  S rO~\ R                  S:X  an  S SKrS SKrS rS r\R                  S:X  a  S rOS r\R                  R                  S5      (       a  S rS rO"\R                  S:X  a	  S rSS jrO	S rS rS rS r\S:X  a  \" 5         gg)    Nntc                  8   Sn [         R                  R                  U 5      nUS:X  a  gU[        U 5      -   n[         R                  US R	                  SS5      u  p#[        USS 5      S-
  nUS:  a  US-  n[        US	S
 5      S-  nUS:X  a  SnUS:  a  XE-   $ g)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restmajorVersionminorVersions         "/usr/lib/python3.13/ctypes/util.py_get_build_versionr   	   s     KKV$7FO++ab/''Q/1Sb6{Q2AL1Qq6{T)1L1..    c                      [        5       n U c  gU S::  a  SnOU S::  a	  SU S-  -  nOgSSKnSUR                  R                  ;   a  US	-  nUS
-   $ )z%Return the name of the VC runtime dllNr   msvcrtr
   zmsvcr%d
   r   z_d.pydd.dll)r   importlib.machinery	machineryEXTENSION_SUFFIXES)r   clibname	importlibs      r   find_msvcrtr&   "   sd    $&?a<H] GbL1H  	#y**===OHr   c                    U S;   a
  [        5       $ [        R                  S   R                  [        R                  5       H  n[        R
                  R                  X5      n[        R
                  R                  U5      (       a  Us  $ UR                  5       R                  S5      (       a  Mp  US-   n[        R
                  R                  U5      (       d  M  Us  $    g )N)cmPATHr    )
r&   osenvironr   pathseppathjoinisfilelowerendswithname	directoryfnames      r   find_libraryr7   7   s    := F+11"**=IGGLL1Eww~~e$${{}%%f--FNEww~~e$$ > r   posix>   iostvosdarwinwatchos)	dyld_findc                 t    SU -  SU -  U < SU < 3/nU H  n  [        U 5      s  $    g ! [         a     M!  f = f)Nzlib%s.dylibz%s.dylibz.framework/)
_dyld_find
ValueError)r4   possibles     r   r7   r7   H   sV    !D(%)-t46 D!$'' 
   s   
)
77aix)r7   androidc                     SnS[         R                  " 5       R                  ;   a  US-  nU SU  S3n[         R                  R	                  U5      (       a  U$ S $ )Nz/system/lib64z/libz.so)r+   unamemachiner.   r0   r3   s      r   r7   r7   ]   sT    !	288:%%%I+T$s+u--u747r   c                     Sn [        U S5       nUR                  S5      U:H  sSSS5        $ ! , (       d  f       g= f! [         a     gf = f)z,Return True if the given file is an ELF files   ELFbr   NF)openreadFileNotFoundError)filename
elf_headerthefiles      r   _is_elfrQ   i   sE    
	h%||A*4 &%%  		s#   ? .	? 
<? ? 
AAc                    [         R                  " S[        R                  " U 5      -  5      n[        R
                  " S5      nU(       d  [        R
                  " S5      nU(       d  g [        R                  " 5       n USSUR                  SU -   /n[        [         R                  5      nSUS'   SUS	'    [        R                  " U[        R                  [        R                  US
9nU   UR$                  R'                  5       nS S S 5         UR!                  5         [        R(                  " UW5      nU(       d  g U H+  n	[+        U	5      (       d  M  [         R,                  " U	5      s  $    g ! [         a$      UR!                  5         g ! ["         a     g f = ff = f! , (       d  f       N= f! ["         a     Nf = f!  UR!                  5         f ! ["         a     f f = f= f)N[^\(\)\s]*lib%s\.[^\(\)\s]*gccccz-Wl,-t-oz-lCLC_ALLLANGstdoutstderrenv)r+   fsencodereescapeshutilwhichtempfileNamedTemporaryFiler4   dictr,   
subprocessPopenPIPESTDOUTOSErrorcloserM   r[   rL   findallrQ   fsdecode)
r4   expr
c_compilertempargsr]   proctraceresfiles
             r   _findLib_gccrv   r   s   
 {{9BIIdOKL\\%(
d+J**,	$		4$;GDrzz"CCMCK!''/9/9/@/@,/1 ((* 


 jju%D 4==;;t$$   

$  
 %  

$  s   ?7G 73E1 *G ,F"G F3 1
F;G =F 
FFFG "
F0,G 3
G ?G G&GG&
G# G&"G##G&sunos5c                    U (       d  g  [         R                  " SSU 4[         R                  [         R                  S9nU   UR
                  R                  5       nS S S 5        [        R                  " SW5      nU(       d  g [        R                  " UR                  S5      5      $ ! [         a     g f = f! , (       d  f       Nb= f)Nz/usr/ccs/bin/dumpz-Lpvr[   r\   s   \[.*\]\sSONAME\s+([^\s]+)r   )rf   rg   rh   DEVNULLrj   r[   rL   r_   searchr+   rm   group)frr   datart   s       r   _get_sonamer      s    !'')<fa(H/9/9/A/AC
 {{'') ))94@C;;syy|,,  s   5B( B8(
B54B58
Cc                    U (       d  g [         R                  " S5      nU(       d  g  [        R                  " USSSU 4[        R                  [        R
                  S9nU   UR                  R                  5       nS S S 5        [        R                  " SW5      nU(       d  g [        R                  " UR                  S5      5      $ ! [         a     g f = f! , (       d  f       Nb= f)Nobjdump-pz-jz.dynamicry   s   \sSONAME\s+([^\s]+)r   )ra   rb   rf   rg   rh   rz   rj   r[   rL   r_   r{   r+   rm   r|   )r}   r   rr   dumprt   s        r   r   r      s    ll9-G!''$j!(L/9/9/A/AC
 {{'') ))3T:C;;syy|,,  s   7C !C
CC
C&)freebsdopenbsd	dragonflyc                     U R                  S5      n/ n U(       a2  UR                  S[        UR                  5       5      5        U(       a  M2  U=(       d    [
        R                  /$ ! [         a     N&f = f)N   .r   )r   insertr   popr@   r   maxsize)libnamepartsnumss      r   _num_versionr      sd    MM$'EDKK3uyy{#34 e (CKK=(  s   7A( (
A54A5c                 "   [         R                  " U 5      nSU< SU< S3n[        R                  " U5      n [        R
                  " S[        R                  [        R                  S9nU   UR                  R                  5       nS S S 5        [         R                  " UW5      nU(       d  [        [        U 5      5      $ UR                  [        S9  [        R                   " US   5      $ ! , (       d  f       Nl= f! [         a    Sn N}f = f)	Nz:-lz\.\S+ => \S*/(libz\.\S+))/sbin/ldconfigz-rry   r   )keyr   )r_   r`   r+   r^   rf   rg   rh   rz   r[   rL   rj   rl   r   rv   sortr   rm   )r4   enamern   rr   r~   rt   s         r   r7   r7      s    IIdOE8=uED;;t$D.!''(@/9/9/A/AC ;;++-D  **T4(C"<#566HHH&;;s2w'' T  s   2C? -C..
C<?DDc                     [         R                  R                  S5      (       d  g [        [         R                  5      nSUS'   U(       a  SnOSnS n [
        R                  " U[
        R                  [
        R                  US9nU   UR                   HR  nUR                  5       nUR                  S5      (       d  M+  [         R                  " U5      R                  5       S   nMT     S S S 5        U(       d  g UR                  S	5       HN  n[         R                  R                  US
U -  5      n[         R                  R                  U5      (       d  ML  Us  $    g ! [         a     g f = f! , (       d  f       N= f)N/usr/bin/crlerW   rX   )r   -64)r   rZ   s   Default Library Path (ELF):rJ   :zlib%s.so)r+   r.   existsre   r,   rf   rg   rh   rz   rj   r[   strip
startswithrm   r   r/   )	r4   is64r]   rq   pathsrr   linedirlibfiles	            r   _findLib_crler      s%   77>>/22rzz"CCM/)E!''/9/9/A/A,/1  KKD::<D'EFF "D 1 7 7 9! < (  {{3''',,sJ,=>77>>'**"N (
 !  s$   3E 4E/ +E/
E,+E,/
E=c                 N    [        [        X5      =(       d    [        U 5      5      $ N)r   r   rv   )r4   r   s     r   r7   r7     s    }T8NL<NOOr   c           	         SS K nUR                  S5      S:X  a#  [        R                  " 5       R                  S-   nO"[        R                  " 5       R                  S-   nSSSSSS	.nUR                  US
5      nSn[        R                  " U[        R                  " U 5      U4-  5      n [        R                  " SS/[        R                  [        R                  [        R                  SSS.S9 n[        R                  " XVR                  R                  5       5      nU(       a.  [        R                   " UR#                  S5      5      sS S S 5        $  S S S 5        g ! , (       d  f       g = f! [$         a     g f = f)Nr   lrJ   z-32r   zlibc6,x86-64zlibc6,64bitzlibc6,IA-64)z	x86_64-64zppc64-64z
sparc64-64zs390x-64zia64-64libc6z\s+(lib%s\.[^\s]+)\s+\(%sr   r   rW   )rX   rY   )stdinr\   r[   r]   r   )structcalcsizer+   rF   rG   getr^   r_   r`   rf   rg   rz   rh   r{   r[   rL   rm   r|   rj   )r4   r   rG   mach_mapabi_typeregexprt   s           r   _findSoname_ldconfigr     s;   s#q(((*,,u4((*,,u4+)+)(H  ||GW5H 1EKK4((C CDE
%%'7&>,6,>,>-7-?-?-7__58#*F	H LM))E88==?;C!{{399Q<8H H H H H  s8   +AE1 2AE 	E1 E1  
E.*E1 .E1 1
E>=E>c                    S[         R                  " U 5      -  nSS/n[        R                  R	                  S5      nU(       a+  UR                  S5       H  nUR                  SU/5        M     UR                  S[        R                  SU -  /5        S n [        R                  " U[        R                  [        R                  S	S
9nUR                  5       u  px[         R                  " U[        R                  " U5      5      n	U	 H+  n
[        U
5      (       d  M  [        R                  " U
5      s  $    U$ ! [         a     U$ f = f)NrS   ldz-tLD_LIBRARY_PATHr   z-LrV   z-l%sT)r[   r\   universal_newlines)r_   r`   r+   r,   r   r   extenddevnullrf   rg   rh   communicaterl   rm   rQ   	Exception)r4   rn   cmdlibpathr   resultr   out_rt   ru   s              r   _findLib_ldr   8  s   1BIIdOCD,Cjjnn%67G s+AJJay) ,JJbjj&4-89F$$S,6OO8<> jjr{{3'78D #4== ;;t,,   M  Ms   BD: 6D: :
EEc                     [        U 5      =(       d/    [        [        U 5      5      =(       d    [        [        U 5      5      $ r   )r   r   rv   r   )r4   s    r   r7   r7   S  s6    '- U|D12U6A+dBS6TUr   c                     SSK Jn   [        R                  S:X  aC  [	        U R
                  5        [	        U R                  S5      5        [	        [        S5      5        [        R                  S:X  Gak  [	        [        S5      5        [	        [        S5      5        [	        [        S5      5        [        R                  S	:X  ai  [	        U R                  S
5      5        [	        U R                  S5      5        [	        U R                  S5      5        [	        U R                  S5      5        g [        R                  R                  S5      (       GaD  SSK Jn  [        R                  S:  ao  [	        SU" S[        R                  5       35        [	        SU R                  S5       35        [	        [        S5      5        [	        U R                  S5      5        O@[	        SU" S[        R                  5       35        [	        SU R                  S5       35        [	        S[        S5       35        [	        SU R                  [        S5      5       35        [	        S[        S5       35        [	        SU R                  [        S5      5       35        g [	        U R                  S5      5        [	        U R                  S5      5        [	        [        S5      5        g g )Nr   )cdllr   r   r8   r)   r(   bz2r;   z
libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/SystemrB   )CDLLl        z"Using CDLL(name, os.RTLD_MEMBER): zlibc.a(shr.o)zUsing cdll.LoadLibrary(): rpmz	librpm.sozlibc.a(shr_64.o)z	crypt	:: cryptz
crypto	:: cryptozlibm.sozlibcrypt.so)ctypesr   r+   r4   printr   loadr7   r   platformLoadLibraryr   r   r   RTLD_MEMBER)r   r   s     r   testr   [  s(   	ww$dkkdii!"l8$%	ww'l3 l3 l5!" <<8#$""<01$""#456$""#456$""#<=>\\$$U++#{{U":4QSQ_Q_;`:abc243C3CO3T2UVWl5)*d&&{34:4@RTVTbTb;c:def243C3CDV3W2XYZJ|G4567Jt//W0EFGHIKX 6789K 0 0h1G HIJK$""9-.$""=12,w'(? r   __main__)F)r+   ra   rf   r   r4   r   r&   r7   r   ctypes.macholib.dyldr=   r?   r   ctypes._aixr_   rc   rQ   rv   r   r   r   r   r   r   __name__ r   r   <module>r      s   	   
 77d?2* WWCLL,PP<	 	\\U## )\\Y8 WW/%d ||x	-"	-, ||BCC		)	(* 
	!"	H	P
	<	6	U&)P zF r   