o
    ˆ¶¹a‘c  ã                   @   s8  d Z ddlZddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddl
mZ ddl
mZ dd	l
mZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! g d¢Z"e #¡ Z$ej%Z%ej&dkZ'dZ(dZ)ej*ej+ej,ej-ej.ej/ej0ej1ej2ej3ej4ej-ej5ej6iZ7ej8ej9ej:ej;ej<ej=ej>ej?ej@ejAejBejCejDejEejFejGejHejIejJejKejLejMejNejOejPe(ejQe)iZReSddddd d!d"d#d$d%d&d'd(�ZTed)g d*¢ƒZUed+g d,¢ƒZVed-g d.¢ƒZWed/d0d1gƒZXeXZYed2g d3¢ƒZZed4d5d6 [eZj\¡ ƒZ]d7d8„ Z^d9d:„ Z_d;d<„ Z`d=d>„ Zad?d@„ ZbdAdB„ ZcdCdD„ ZdejeZeejfZfdYdFdG„ZgejhZhejiZidZdIdJ„ZjdKdL„ ZkdMdN„ ZldOdP„ ZmdQdR„ ZndSdT„ ZodUdV„ ZpG dWdX„ dXeqƒZrdS )[z'Sun OS Solaris platform implementation.é    N)Ú
namedtuple)ÚAF_INETé   )Ú_common)Ú_psposix)Ú_psutil_posix)Ú_psutil_sunos)ÚAF_INET6)ÚAccessDenied)ÚNoSuchProcess)ÚZombieProcess)Údebug)Úget_procfs_path)Úisfile_strict)Úmemoize_when_activated)Úsockfam_to_enum)Úsocktype_to_enum)Úusage_percent)ÚPY3)ÚFileNotFoundError)ÚPermissionError)ÚProcessLookupError)Úb)Ú	CONN_IDLEÚ
CONN_BOUNDÚPROCFS_PATHl        ÚIDLEÚBOUNDé   é   é   é   é   é   é   é	   é
   é   )ÚppidÚrssÚvmsÚcreate_timeÚniceÚnum_threadsÚstatusÚttynrÚuidÚeuidÚgidÚegidÚ	scputimes)ÚuserÚsystemÚidleÚiowaitÚ	pcputimes)r5   r6   Úchildren_userÚchildren_systemÚsvmem)ÚtotalÚ	availableÚpercentÚusedÚfreeÚpmemr)   r*   Úpmmap_grouped)Úpathr)   Ú	anonymousÚlockedÚ	pmmap_extzaddr perms ú c                  C   sF   t  d¡t } t  d¡t  }}| | }t|| dd�}t| ||||ƒS )zReport virtual memory metrics.ÚSC_PHYS_PAGESÚSC_AVPHYS_PAGESr   ©Úround_)ÚosÚsysconfÚ	PAGE_SIZEr   r<   )r=   rA   Úavailr@   r?   © rQ   ú1/usr/lib/python3/dist-packages/psutil/_pssunos.pyÚvirtual_memory{   s
   rS   c               	   C   s
  t  ¡ \} }tjddtjd  ddgtjd�}| ¡ \}}tr&| 	t
jj¡}|jdkr2td|j ƒ‚| ¡  d	¡d
d… }|sCtdƒ‚d }}|D ]"}| ¡ }|dd… \}	}
|tt|	ƒd ƒ7 }|tt|
ƒd ƒ7 }qI|| }t||d
d�}t ||||| t |t ¡S )zReport swap memory metrics.z/usr/bin/envzPATH=/usr/sbin:/sbin:%sÚPATHÚswapz-l)Ústdoutr   z'swap -l' failed (retcode=%s)Ú
r   Nzno swap device(s) configuredr   r!   i   rK   )ÚcextÚswap_memÚ
subprocessÚPopenrM   ÚenvironÚPIPEÚcommunicater   ÚdecodeÚsysrV   ÚencodingÚ
returncodeÚRuntimeErrorÚstripÚsplitÚintr   r   ÚsswaprO   )ÚsinÚsoutÚprV   ÚstderrÚlinesr=   rA   ÚlineÚtÚfr@   r?   rQ   rQ   rR   Úswap_memory†   s6   ÿÿþ
ÿrp   c                  C   s   t  ¡ } tdd„ t| Ž D ƒŽ S )z-Return system-wide CPU times as a named tuplec                 S   ó   g | ]}t |ƒ‘qS rQ   )Úsum©Ú.0ÚxrQ   rQ   rR   Ú
<listcomp>¯   ó    zcpu_times.<locals>.<listcomp>)rX   Úper_cpu_timesr4   Úzip©ÚretrQ   rQ   rR   Ú	cpu_times¬   s   r|   c                  C   s   t  ¡ } dd„ | D ƒS )z5Return system per-CPU times as a list of named tuplesc                 S   s   g | ]}t |Ž ‘qS rQ   )r4   rs   rQ   rQ   rR   rv   µ   rw   z!per_cpu_times.<locals>.<listcomp>)rX   rx   rz   rQ   rQ   rR   rx   ²   s   rx   c                   C   s"   zt  d¡W S  ty   Y dS w )z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNN)rM   rN   Ú
ValueErrorrQ   rQ   rQ   rR   Úcpu_count_logical¸   s
   þr   c                   C   ó   t  ¡ S )z-Return the number of CPU cores in the system.)rX   Úcpu_count_coresrQ   rQ   rQ   rR   r�   Á   ó   r�   c                  C   s$   t  ¡ \} }}}d}t | |||¡S )z*Return various CPU stats as a named tuple.r   )rX   Ú	cpu_statsr   Ú	scpustats)Úctx_switchesÚ
interruptsÚsyscallsÚtrapsÚsoft_interruptsrQ   rQ   rR   rƒ   Æ   s
   
ÿrƒ   Fc                 C   s¤   g }t  ¡ }|D ]G}|\}}}}|dkrd}| s<z	t|ƒjs W qW n ty; } ztd||f ƒ W Y d}~qd}~ww d }	}
t |||||	|
¡}| |¡ q|S )zReturn system disk partitions.ÚnoneÚ zskipping %r: %sN)	rX   Údisk_partitionsÚ
disk_usager=   ÚOSErrorr   r   Ú	sdiskpartÚappend)ÚallÚretlistÚ
partitionsÚ	partitionÚdeviceÚ
mountpointÚfstypeÚoptsÚerrÚmaxfileÚmaxpathÚntuplerQ   rQ   rR   rŒ   ×   s,   
ÿ€ýÿrŒ   éÿÿÿÿc              
   C   s  t j ¡ }|dkr| dd¡ | |vr#td| d dd„ |D ƒ¡f ƒ‚t j|  \}}t |¡}tƒ }|D ]T}|\}}	}
}}}}|	|vrDq4|
|vrIq4|	t	t
fv r]|rVt j|Ž }|r]t j|Ž }t| }t|	ƒ}	t|
ƒ}
|dkryt  ||	|
||||¡}n
t  ||	|
|||¡}| |¡ q4t|ƒS )z»Return socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    Only INET sockets are returned (UNIX are not).
    r�   Úunixr   z+invalid %r kind argument; choose between %sz, c                 S   rq   rQ   )Úreprrs   rQ   rQ   rR   rv     rw   z#net_connections.<locals>.<listcomp>)r   Ú	conn_tmapÚcopyÚpopr~   ÚjoinrX   Únet_connectionsÚsetr   r	   ÚaddrÚTCP_STATUSESr   r   ÚsconnÚpconnÚaddÚlist)ÚkindÚ_pidÚcmapÚfamiliesÚtypesÚrawlistr{   ÚitemÚfdÚfamÚtype_ÚladdrÚraddrr.   ÚpidÚntrQ   rQ   rR   r¤   ü   s:   
ÿ


r¤   c                  C   sR   t  ¡ } |  ¡ D ]\}}|\}}}}ttdƒrt |¡}t ||||¡| |< q| S )z)Get NIC stats (isup, duplex, speed, mtu).Ú	NicDuplex)rX   Únet_if_statsÚitemsÚhasattrr   rº   Ú	snicstats)r{   Únamer¼   ÚisupÚduplexÚspeedÚmturQ   rQ   rR   r»   !  s   

r»   c                   C   r€   )z:The system boot time expressed in seconds since the epoch.)rX   Ú	boot_timerQ   rQ   rQ   rR   rÄ   1  r‚   rÄ   c                  C   s\   g } t  ¡ }d}|D ]!}|\}}}}}}	|sq
||v rd}t |||||	¡}
|  |
¡ q
| S )z:Return currently connected users as a list of namedtuples.)z:0.0z:0Ú	localhost)rX   Úusersr   Úsuserr�   )r’   r±   rÅ   r²   r5   ÚttyÚhostnameÚtstampÚuser_processr¸   r¹   rQ   rQ   rR   rÆ   6  s   rÆ   c                   C   s   dd„ t  ttƒ ƒ¡D ƒS )z7Returns a list of PIDs currently running on the system.c                 S   s   g | ]
}|  ¡ rt|ƒ‘qS rQ   )Úisdigitrf   rs   rQ   rQ   rR   rv   P  s    zpids.<locals>.<listcomp>)rM   Úlistdirr   r   rQ   rQ   rQ   rR   ÚpidsN  ó   rÎ   c                 C   s
   t  | ¡S )z&Check for the existence of a unix pid.)r   Ú
pid_exists)r¸   rQ   rQ   rR   rÐ   S  s   
rÐ   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )zƒCall callable into a try/except clause and translate ENOENT,
    EACCES and EPERM in NoSuchProcess or AccessDenied exceptions.
    c              	      s¢   zˆ | g|¢R i |¤ŽW S  t tfy*   t| jƒs!t| j| jƒ‚t| j| j| jƒ‚ ty7   t	| j| jƒ‚ t
yP   | jdkrOdtƒ v rNt	| j| jƒ‚‚ ‚ w ©Nr   )r   r   rÐ   r¸   r   Ú_namer   Ú_ppidr   r
   rŽ   rÎ   )ÚselfÚargsÚkwargs©ÚfunrQ   rR   Úwrapper\  s   


úz wrap_exceptions.<locals>.wrapper)Ú	functoolsÚwraps)rØ   rÙ   rQ   r×   rR   Úwrap_exceptionsX  s   rÜ   c                   @   s¬  e Zd ZdZg d¢Zdd„ Zdd„ Zdd„ Zd	d
„ Ze	e
dd„ ƒƒZe	e
dd„ ƒƒZe	e
dd„ ƒƒZe	dd„ ƒZe	dd„ ƒZe	dd„ ƒZe	dd„ ƒZe	dd„ ƒZe	dd„ ƒZe	dd„ ƒZe	dd „ ƒZe	d!d"„ ƒZe	d#d$„ ƒZe	d%d&„ ƒZe	d'd(„ ƒZe	d)d*„ ƒZe	d+d,„ ƒZe	d-d.„ ƒZe	d/d0„ ƒZeZe	d1d2„ ƒZe	d3d4„ ƒZ e	d5d6„ ƒZ!d7d8„ Z"e	dHd:d;„ƒZ#e$d<d=ƒZ%e$d<d>ƒZ&e	d?d@„ ƒZ'e	dAdB„ ƒZ(e	dCdD„ ƒZ)e	dIdFdG„ƒZ*dES )JÚProcessz1Wrapper class around underlying C implementation.)r¸   rÒ   rÓ   Ú_procfs_pathÚ_cachec                 C   s   || _ d | _d | _tƒ | _d S ©N)r¸   rÒ   rÓ   r   rÞ   )rÔ   r¸   rQ   rQ   rR   Ú__init__y  s   zProcess.__init__c                 C   s   t  d| j| jf ¡ dS )z+Raise NSP if the process disappeared on us.ú%s/%sN)rM   ÚstatrÞ   r¸   ©rÔ   rQ   rQ   rR   Ú_assert_alive  s   zProcess._assert_alivec                 C   ó(   | j  | ¡ | j | ¡ | j | ¡ d S rà   )Ú_proc_name_and_argsÚcache_activateÚ_proc_basic_infoÚ
_proc_credrä   rQ   rQ   rR   Úoneshot_enter…  ó   zProcess.oneshot_enterc                 C   ræ   rà   )rç   Úcache_deactivateré   rê   rä   rQ   rQ   rR   Úoneshot_exitŠ  rì   zProcess.oneshot_exitc                 C   ó   t  | j| j¡S rà   )rX   Úproc_name_and_argsr¸   rÞ   rä   rQ   rQ   rR   rç   �  ó   zProcess._proc_name_and_argsc                 C   sT   | j dkrtj d| j| j f ¡st| j ƒ‚t | j | j¡}t|ƒtt	ƒks(J ‚|S )Nr   z%s/%s/psinfo)
r¸   rM   rD   ÚexistsrÞ   r
   rX   Úproc_basic_infoÚlenÚproc_info_map)rÔ   r{   rQ   rQ   rR   ré   ”  s   
ÿ
zProcess._proc_basic_infoc                 C   rï   rà   )rX   Ú	proc_credr¸   rÞ   rä   rQ   rQ   rR   rê   ž  rñ   zProcess._proc_credc                 C   s   |   ¡ d S rÑ   )rç   rä   rQ   rQ   rR   r¿   £  s   zProcess.namec                 C   s8   zt  d| j| jf ¡W S  ty   Y nw |  ¡  dS )Nz%s/%s/path/a.outr‹   )rM   ÚreadlinkrÞ   r¸   rŽ   Úcmdlinerä   rQ   rQ   rR   Úexe¨  s   ÿÿzProcess.exec                 C   s   |   ¡ d  d¡S )Nr   rH   )rç   re   rä   rQ   rQ   rR   rø   µ  ó   zProcess.cmdlinec                 C   rï   rà   )rX   Úproc_environr¸   rÞ   rä   rQ   rQ   rR   r\   ¹  ó   zProcess.environc                 C   ó   |   ¡ td  S )Nr+   ©ré   rõ   rä   rQ   rQ   rR   r+   ½  rü   zProcess.create_timec                 C   rý   )Nr-   rþ   rä   rQ   rQ   rR   r-   Á  rü   zProcess.num_threadsc                 C   rý   )Nr,   rþ   rä   rQ   rQ   rR   Únice_getÅ  s   zProcess.nice_getc                 C   s&   | j dv rt| j | jƒ‚t | j |¡S )N)r   r   )r¸   r
   rÒ   Ú
cext_posixÚsetpriority)rÔ   ÚvaluerQ   rQ   rR   Únice_setÌ  s   
zProcess.nice_setc                 C   s   |   ¡ td  | _| jS )Nr(   )ré   rõ   rÓ   rä   rQ   rQ   rR   r(   Ö  s   zProcess.ppidc                 C   s^   z|   ¡ \}}}}}}W n ty'   |  ¡ td  }|  ¡ td  }d }Y nw t |||¡S )Nr0   r1   ©rê   r
   ré   rõ   r   Úpuids)rÔ   ÚrealÚ	effectiveÚsavedÚ_rQ   rQ   rR   ÚuidsÛ  ó   ýzProcess.uidsc                 C   s^   z|   ¡ \}}}}}}W n ty'   |  ¡ td  }|  ¡ td  }d }Y nw t |||¡S )Nr2   r3   r  )rÔ   r	  r  r  r  rQ   rQ   rR   Úgidså  r  zProcess.gidsc              
   C   s\   z
t  | j| j¡}W n ty( } z|jtjkrtsd}n‚ W Y d }~nd }~ww tj	|Ž S )N)ç        r  r  r  )
rX   Úproc_cpu_timesr¸   rÞ   rŽ   ÚerrnoÚ	EOVERFLOWÚ	IS_64_BITr   r9   )rÔ   Útimesr™   rQ   rQ   rR   r|   ï  s   þ€÷
zProcess.cpu_timesc                 C   rï   rà   )rX   Úproc_cpu_numr¸   rÞ   rä   rQ   rQ   rR   Úcpu_num  rü   zProcess.cpu_numc              	   C   sx   | j }d}t|  ¡ td  ƒ}|tjkr2dD ]}zt d|| j|f ¡W   S  t	y1   d}Y qw |r:|  
¡  d S d S )NFr/   )r   r   r   éÿ   z%s/%d/path/%dT)rÞ   rÜ   ré   rõ   rX   ÚPRNODEVrM   r÷   r¸   r   rå   )rÔ   Úprocfs_pathÚ
hit_enoentrÈ   ru   rQ   rQ   rR   Úterminal  s$   ÿ

ÿþÿzProcess.terminalc                 C   sF   | j }zt d|| jf ¡W S  ty"   t d|| jf ¡ Y d S w )Nz%s/%s/path/cwdrâ   )rÞ   rM   r÷   r¸   r   rã   )rÔ   r  rQ   rQ   rR   Úcwd  s   þzProcess.cwdc                 C   s2   |   ¡ }|td  d }|td  d }t||ƒS )Nr)   i   r*   )ré   rõ   rB   )rÔ   r{   r)   r*   rQ   rQ   rR   Úmemory_info#  s   
zProcess.memory_infoc                 C   s   |   ¡ td  }t |d¡S )Nr.   ú?)ré   rõ   ÚPROC_STATUSESÚget)rÔ   ÚcoderQ   rQ   rR   r.   ,  s   zProcess.statusc           
      C   sÈ   | j }g }t d|| jf ¡}d}|D ]H}t|ƒ}zt | j||¡\}}W n) tyN } z|jtj	kr;t
s;W Y d }~q|jtjkrId}W Y d }~q‚ d }~ww t |||¡}	| |	¡ q|rb|  ¡  |S )Nz	%s/%d/lwpFT)rÞ   rM   rÍ   r¸   rf   rX   Úquery_process_threadÚEnvironmentErrorr  r  r  ÚENOENTr   Úpthreadr�   rå   )
rÔ   r  r{   Útidsr  ÚtidÚutimeÚstimer™   r¹   rQ   rQ   rR   Úthreads2  s0   ÿ€òzProcess.threadsc              	   C   s¤   g }d}| j }d|| jf }t d|| jf ¡D ]1}tj ||¡}tj |¡rIzt |¡}W n ty9   d}Y qw t	|ƒrI| 
t |t|ƒ¡¡ q|rP|  ¡  |S )NFz
%s/%d/pathz%s/%d/fdT)rÞ   r¸   rM   rÍ   rD   r£   Úislinkr÷   r   r   r�   r   Ú	popenfilerf   rå   )rÔ   r’   r  r  Úpathdirr³   rD   ÚfilerQ   rQ   rR   Ú
open_filesS  s&   þ€zProcess.open_filesc                 c   s(  � d| }t j|dt jt jd�}| ¡ \}}tr#dd„ ||fD ƒ\}}|jdkrJd| ¡ v r5t| j| j	ƒ‚d| ¡ v rBt
| j| j	ƒ‚td	||f ƒ‚| d
¡dd… }t|ƒD ]:\}}| ¡ }| d¡r‘| dd¡d }	||d   ¡ }
|
dkr|tj}
n
|
dkr„tj}
nd}
dtj|
|	dtjfV  qWdS )z<Get UNIX sockets used by process by parsing 'pfiles' output.z	pfiles %sT)ÚshellrV   rk   c                 S   s   g | ]	}|  tjj¡‘qS rQ   )r_   r`   rV   ra   rs   rQ   rQ   rR   rv   q  s    ÿz-Process._get_unix_sockets.<locals>.<listcomp>r   zpermission deniedzno such processz%r command error
%srW   r   Nzsockname: AF_UNIXrH   ÚSOCK_STREAMÚ
SOCK_DGRAMr�   r‹   )rZ   r[   r]   r^   r   rb   Úlowerr
   r¸   rÒ   r   rc   re   Ú	enumerateÚlstripÚ
startswithrd   Úsocketr/  r0  ÚAF_UNIXr   Ú	CONN_NONE)rÔ   r¸   Úcmdrj   rV   rk   rl   Úirm   rD   ÚtyperQ   rQ   rR   Ú_get_unix_socketsh  s<   €ÿ
ÿ

€õzProcess._get_unix_socketsÚinetc                 C   sP   t || jd�}|st d| j| jf ¡ |dv r&| dd„ |  | j¡D ƒ¡ |S )N)r­   râ   )r‘   rž   c                 S   s   g | ]}t j|Ž ‘qS rQ   )r   r©   )rt   ÚconnrQ   rQ   rR   rv   –  s    z'Process.connections.<locals>.<listcomp>)r¤   r¸   rM   rã   rÞ   Úextendr;  )rÔ   r¬   r{   rQ   rQ   rR   Úconnectionsˆ  s   

ÿzProcess.connectionsÚmmapzpath rss anon lockedzaddr perms path rss anon lockedc                 C   s  dd„ }| j }g }z	t | j|¡}W n ty/ } z|jtjkr*ts*g W  Y d }~S ‚ d }~ww d}|D ]R}|\}}	}
}}}}|||	ƒ}| d¡s{zt	 
d|| j|f ¡}W n$ tyz } z|jtjkrod|| j|f }d}n‚ W Y d }~nd }~ww | ||
||||f¡ q4|r�|  ¡  |S )Nc                 S   s0   dt | ƒdd …  d¡t |ƒdd …  d¡f S )Nz%s-%sr   ÚL)Úhexrd   )ÚstartÚendrQ   rQ   rR   ÚtoaddrŸ  s   ÿz#Process.memory_maps.<locals>.toaddrFú[z%s/%s/path/%sT)rÞ   rX   Úproc_memory_mapsr¸   rŽ   r  r  r  r4  rM   r÷   r"  r�   rå   )rÔ   rE  r  r’   r±   r™   r  r²   r¦   ÚaddrsizeÚpermr¿   r)   ÚanonrF   rQ   rQ   rR   Úmemory_maps�  s@   €õ

ÿþ€÷zProcess.memory_mapsc                 C   s   t t d| j| jf ¡ƒS )Nz%s/%s/fd)rô   rM   rÍ   rÞ   r¸   rä   rQ   rQ   rR   Únum_fdsÌ  rÏ   zProcess.num_fdsc                 C   s   t jt | j| j¡Ž S rà   )r   ÚpctxswrX   Úproc_num_ctx_switchesr¸   rÞ   rä   rQ   rQ   rR   Únum_ctx_switchesÐ  s   ÿzProcess.num_ctx_switchesNc                 C   s   t  | j|| j¡S rà   )r   Úwait_pidr¸   rÒ   )rÔ   ÚtimeoutrQ   rQ   rR   ÚwaitÕ  rú   zProcess.wait)r<  rà   )+Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__rá   rå   rë   rî   rÜ   r   rç   ré   rê   r¿   rù   rø   r\   r+   r-   rÿ   r  r(   r
  r  r|   r  r  r  r  Úmemory_full_infor.   r(  r-  r;  r?  r   Únt_mmap_groupedÚnt_mmap_extrK  rL  rO  rR  rQ   rQ   rQ   rR   rÝ   t  sˆ    







	

	
	






 
 


.

rÝ   )F)r�   )srV  r  rÚ   rM   r5  rZ   r`   Úcollectionsr   r   r‹   r   r   r   r   r   rX   r	   r
   r   r   r   r   r   r   r   r   r   Ú_compatr   r   r   r   r   Ú__extra__all__ÚgetpagesizerO   ÚAF_LINKÚmaxsizer  r   r   ÚSSLEEPÚSTATUS_SLEEPINGÚSRUNÚSTATUS_RUNNINGÚSZOMBÚSTATUS_ZOMBIEÚSSTOPÚSTATUS_STOPPEDÚSIDLÚSTATUS_IDLEÚSONPROCÚSWAITÚSTATUS_WAITINGr  ÚTCPS_ESTABLISHEDÚCONN_ESTABLISHEDÚTCPS_SYN_SENTÚCONN_SYN_SENTÚTCPS_SYN_RCVDÚCONN_SYN_RECVÚTCPS_FIN_WAIT_1ÚCONN_FIN_WAIT1ÚTCPS_FIN_WAIT_2ÚCONN_FIN_WAIT2ÚTCPS_TIME_WAITÚCONN_TIME_WAITÚTCPS_CLOSEDÚ
CONN_CLOSEÚTCPS_CLOSE_WAITÚCONN_CLOSE_WAITÚTCPS_LAST_ACKÚCONN_LAST_ACKÚTCPS_LISTENÚCONN_LISTENÚTCPS_CLOSINGÚCONN_CLOSINGÚPSUTIL_CONN_NONEr7  Ú	TCPS_IDLEÚ
TCPS_BOUNDr§   Údictrõ   r4   r9   r<   rB   ÚpfullmemrC   r£   Ú_fieldsrG   rS   rp   r|   rx   r   r�   rƒ   Údisk_io_countersr�   rŒ   Únet_io_countersÚnet_if_addrsr¤   r»   rÄ   rÆ   rÎ   rÐ   rÜ   ÚobjectrÝ   rQ   rQ   rQ   rR   Ú<module>   sÒ   
ùòôÿÿÿ	&	
!
%