Ë
    íéñi~]  ã                   óî  — 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 g d¢Z ej<                  «       Zej@                  Z ejB                  dkD  Z"dZ#dZ$ejJ                  ejL                  ejN                  ejP                  ejR                  ejT                  ejV                  ejX                  ejZ                  ej\                  ej^                  ejP                  ej`                  ejb                  iZ2ejf                  ejh                  ejj                  ejl                  ejn                  ejp                  ejr                  ejt                  ejv                  ejx                  ejz                  ej|                  ej~                  ej€                  ej‚                  ej„                  ej†                  ejˆ                  ejŠ                  ejŒ                  ejŽ                  ej�                  ej’                  ej”                  ej–                  e#ej˜                  e$iZM eNddddddddd d!d"d#¬$«      ZOd%„ ZPd&„ ZQd'„ ZRd(„ ZSd)„ ZTd*„ ZUd+„ ZVej®                  ZWej°                  ZXd6d,„ZYej´                  ZZej¶                  Z[d7d-„Z\d.„ Z]d/„ Z^d0„ Z_d1„ Z`d2„ Zad3„ Zb G d4„ d5«      Zcy)8z'Sun OS Solaris platform implementation.é    N)Ú
namedtuple)ÚAF_INETé   )Ú_common)Ú_ntuples)Ú_psposix)Ú_psutil_sunos)ÚAF_INET6)ÚENCODING)ÚAccessDenied)ÚNoSuchProcess)ÚZombieProcess)Údebug)Úget_procfs_path)Úisfile_strict)Úmemoize_when_activated)Úsockfam_to_enum)Úsocktype_to_enum)Úusage_percent)Ú	CONN_IDLEÚ
CONN_BOUNDÚPROCFS_PATHl        ÚIDLEÚBOUNDé   é   é   é   é   é   é   é	   é
   é   )ÚppidÚrssÚvmsÚcreate_timeÚniceÚnum_threadsÚstatusÚttynrÚuidÚeuidÚgidÚegidc                  óÎ   — t        j                  d«      t        z  } t        j                  d«      t        z  x}}| |z
  }t        || d¬«      }t	        j
                  | ||||«      S )zReport virtual memory metrics.ÚSC_PHYS_PAGESÚSC_AVPHYS_PAGESr   ©Úround_)ÚosÚsysconfÚ	PAGE_SIZEr   ÚntpÚsvmem)ÚtotalÚfreeÚavailÚusedÚpercents        úQ/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/psutil/_pssunos.pyÚvirtual_memoryrA   `   s^   € ô �J‰J�Ó'¬)Ñ3€Eä—:‘:Ð/Ó0´9Ñ<Ð<€Dˆ5Ø�4‰<€DÜ˜D %°Ô2€GÜ�9‰9�U˜E 7¨D°$Ó7Ð7ó    c            	      óü  — t        j                  «       \  } }t        j                  ddt        j
                  d   › �ddgt        j                  ¬«      }|j                  «       \  }}|j                  t        j                  j                  «      }|j                  dk7  rd|j                  › d	�}t        |«      ‚|j                  «       j                  d
«      dd }|sd}t        |«      ‚dx}}|D ]N  }	|	j                  «       }	|	dd \  }
}|t!        t!        |
«      dz  «      z  }|t!        t!        |«      dz  «      z  }ŒP ||z
  }t#        ||d¬«      }t%        j&                  ||||| t(        z  |t(        z  «      S )zReport swap memory metrics.z/usr/bin/envzPATH=/usr/sbin:/sbin:ÚPATHÚswapz-l)Ústdoutr   z'swap -l' failed (retcode=ú)ú
r   Nzno swap device(s) configuredr   r   i   r4   )ÚcextÚswap_memÚ
subprocessÚPopenr6   ÚenvironÚPIPEÚcommunicateÚdecodeÚsysrF   ÚencodingÚ
returncodeÚRuntimeErrorÚstripÚsplitÚintr   r9   Ússwapr8   )ÚsinÚsoutÚprF   Ú_ÚmsgÚlinesr;   r<   ÚlineÚtÚfr>   r?   s                 r@   Úswap_memoryrb   k   sq  € ä—‘“�I€Cˆô 	×ÑàØ#¤B§J¡J¨vÑ$6Ð#7Ð8ØØð		
ô �‰ô	€Að —‘“�I€FˆAØ�]‰]œ3Ÿ:™:×.Ñ.Ó/€FØ‡|�|�qÒØ*¨1¯<©<¨.¸Ð:ˆÜ˜3ÓÐà�L‰L‹N× Ñ  Ó& q rÐ*€EÙØ,ˆÜ˜3ÓÐØÐ€EˆDØò "ˆØ�z‰z‹|ˆØ�A�aˆy‰ˆˆ1Ø””S˜“V˜c‘\Ó"Ñ"ˆØ””C˜“F˜S‘LÓ!Ñ!‰ð	"ð
 �4‰<€DÜ˜D %°Ô2€GÜ�9‰9Øˆt�T˜7 C¬)¡O°T¼IÑ5Eóð rB   c                  ó’   — t        j                  «       } t        j                  t	        | Ž D �cg c]  }t        |«      ‘Œ c}Ž S c c}w )z.Return system-wide CPU times as a named tuple.)rI   Úper_cpu_timesr9   Ú	scputimesÚzipÚsum©ÚretÚxs     r@   Ú	cpu_timesrk   ™   s5   € ä
×
Ñ
Ó
€CÜ�=‰=¬3°¨9Ö5 aœ3˜q�6Ò5Ð6Ð6ùÒ5s   ®Ac                  ót   — t        j                  «       } | D �cg c]  }t        j                  |Ž ‘Œ c}S c c}w )z6Return system per-CPU times as a list of named tuples.)rI   rd   r9   re   rh   s     r@   rd   rd   Ÿ   s-   € ä
×
Ñ
Ó
€CØ'*Ö+ !ŒC�M‰M˜1ÒÒ+Ð+ùÒ+s   ™5c                  óL   — 	 t        j                  d«      S # t        $ r Y yw xY w)z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNN)r6   r7   Ú
ValueError© rB   r@   Úcpu_count_logicalrq   ¥   s)   € ðÜ�z‰zÐ/Ó0Ð0øÜò áðús   ‚ —	#¢#c                  ó*   — t        j                  «       S )z-Return the number of CPU cores in the system.)rI   Úcpu_count_coresrp   rB   r@   rs   rs   ®   s   € ä×ÑÓ!Ð!rB   c                  óh   — t        j                  «       \  } }}}d}t        j                  | |||«      S )z*Return various CPU stats as a named tuple.r   )rI   Ú	cpu_statsr9   Ú	scpustats)Úctx_switchesÚ
interruptsÚsyscallsÚ_trapsÚsoft_interruptss        r@   ru   ru   ³   s1   € ä15·±Ó1AÑ.€L�*˜h¨Ø€OÜ�=‰=˜ z°?ÀHÓMÐMrB   c                 ó0  — g }t        j                  «       }|D ]S  }|\  }}}}|dk(  rd}| s	 t        |«      j                  sŒ*	 t        j                  ||||«      }	|j                  |	«       ŒU |S # t        $ r}t        d|›d|› �«       Y d}~Œwd}~ww xY w)zReturn system disk partitions.ÚnoneÚ z	skipping z: N)	rI   Údisk_partitionsÚ
disk_usager;   ÚOSErrorr   r9   Ú	sdiskpartÚappend)
ÚallÚretlistÚ
partitionsÚ	partitionÚdeviceÚ
mountpointÚfstypeÚoptsÚerrÚntuples
             r@   r   r   Ã   s²   € ð €GÜ×%Ñ%Ó'€JØò ˆ	Ø+4Ñ(ˆ�
˜F DØ�VÒØˆFÙðÜ! *Ó-×3Ò3Øð 4ô —‘˜v z°6¸4Ó@ˆØ�‰�vÕð!ð" €Nøô ò ä˜	 * ¨r°#°Ð7Ô8Üûðús   ­A1Á1	BÁ:BÂBc           
      óú  — t         j                  |    \  }}t        j                  |«      }t	        «       }|D ]·  }|\  }}}	}
}}}||vrŒ|	|vrŒ|t
        t        hv r(|
rt        j                  |
Ž }
|rt        j                  |Ž }t        |   }t        |«      }t        |	«      }	|dk(  rt        j                  |||	|
|||«      }nt        j                  |||	|
||«      }|j                  |«       Œ¹ t        |«      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   Ú	conn_tmaprI   Únet_connectionsÚsetr   r
   r9   ÚaddrÚTCP_STATUSESr   r   ÚsconnÚpconnÚaddÚlist)ÚkindÚ_pidÚfamiliesÚtypesÚrawlistri   ÚitemÚfdÚfamÚtype_ÚladdrÚraddrr+   ÚpidÚnts                  r@   r‘   r‘   æ   s  € ô
 ×'Ñ'¨Ñ-�O€HˆeÜ×"Ñ" 4Ó(€GÜ
‹%€CØò ˆØ48Ñ1ˆˆC�˜˜u f¨cØ�hÑØØ˜ÑØà”7œHÐ%Ñ%ÙÜŸ™ %Ð(�ÙÜŸ™ %Ð(�Ü˜fÑ%ˆÜ˜cÓ"ˆÜ  Ó'ˆØ�2Š:Ü—‘˜2˜s E¨5°%¸ÀÓE‰Bä—‘˜2˜s E¨5°%¸Ó@ˆBØ�‰��ð'ô( �‹9ÐrB   c                  óî   — t        j                  «       } | j                  «       D ]M  \  }}|\  }}}}t        t        d«      rt	        j
                  |«      }t        j                  ||||d«      | |<   ŒO | S )z)Get NIC stats (isup, duplex, speed, mtu).Ú	NicDuplexr~   )rI   Únet_if_statsÚitemsÚhasattrr   r§   r9   Ú	snicstats)ri   Únamer©   ÚisupÚduplexÚspeedÚmtus          r@   r¨   r¨     st   € ä
×
Ñ
Ó
€CØ—y‘y“{ò @‰ˆˆeØ#(Ñ ˆˆf�e˜SÜ”7˜KÔ(Ü×&Ñ& vÓ.ˆFÜ—M‘M $¨°°s¸BÓ?ˆˆDŠ	ð	@ð
 €JrB   c                  ó*   — t        j                  «       S )z:The system boot time expressed in seconds since the epoch.)rI   Ú	boot_timerp   rB   r@   r²   r²     s   € ä�>‰>ÓÐrB   c                  ó¼   — g } t        j                  «       }d}|D ]>  }|\  }}}}}}	|sŒ||v rd}t        j                  |||||	«      }
| j	                  |
«       Œ@ | S )z:Return currently connected users as a list of namedtuples.)z:0.0z:0Ú	localhost)rI   Úusersr9   Úsuserrƒ   )r…   r�   r´   rž   ÚuserÚttyÚhostnameÚtstampÚuser_processr¤   r¥   s              r@   rµ   rµ     sv   € à€GÜ�j‰j‹l€GØ€IØò 
ˆØ9=Ñ6ˆˆc�8˜V \°3ñ ØØ�yÑ Ø"ˆHÜ�Y‰Y�t˜S (¨F°CÓ8ˆØ�‰�rÕð
ð €NrB   c                  óÀ   — t        «       j                  t        «      } t        j                  | «      D �cg c]  }|j                  «       sŒt        |«      ‘Œ  c}S c c}w )z7Returns a list of PIDs currently running on the system.)r   Úencoder   r6   ÚlistdirÚisdigitrW   )Úpathrj   s     r@   ÚpidsrÁ   2  s>   € äÓ×#Ñ#¤HÓ-€DÜŸJ™J tÓ,Ö<�q°·	±	µŒC��FÒ<Ð<ùÒ<s   µAÁAc                 ó,   — t        j                  | «      S )z&Check for the existence of a unix pid.)r   Ú
pid_exists)r¤   s    r@   rÃ   rÃ   8  s   € ä×Ñ˜sÓ#Ð#rB   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )zƒCall callable into a try/except clause and translate ENOENT,
    EACCES and EPERM in NoSuchProcess or AccessDenied exceptions.
    c                 ój  •— | j                   | j                  | j                  }}}	  ‰| g|¢­i |¤ŽS # t        t        f$ r+}t        |«      st        ||«      |‚t        |||«      |‚d }~wt        $ r}t        ||«      |‚d }~wt        $ r%}|dk(  rdt        «       v rt        ||«      |‚‚ ‚ d }~ww xY w©Nr   )r¤   Ú_ppidÚ_nameÚFileNotFoundErrorÚProcessLookupErrorrÃ   r   r   ÚPermissionErrorr   r�   rÁ   )ÚselfÚargsÚkwargsr¤   r%   r¬   rŒ   Úfuns          €r@   Úwrapperz wrap_exceptions.<locals>.wrapperB  s»   ø€ àŸ(™( D§J¡J°·
±
�4ˆTˆð	Ù�tÐ-˜dÒ- fÑ-Ð-øÜ!Ô#5Ð6ò 	:ô ˜c”?Ü# C¨Ó.°CÐ7Ü  T¨4Ó0°cÐ9ûÜò 	3Ü˜s DÓ)¨sÐ2ûÜò 	Ø�aŠxØœ›‘;Ü& s¨DÓ1°sÐ:ØØûð	ús-   §3 ³B2Á&A(Á(B2Á4BÂB2Â B-Â-B2)Ú	functoolsÚwraps)rÏ   rÐ   s   ` r@   Úwrap_exceptionsrÓ   =  s'   ø€ ô
 ‡_�_�SÓóó ðð( €NrB   c                   ó0  — e Zd ZdZg d¢Zd„ Zd„ Zd„ Zd„ Ze	e
d„ «       «       Ze	e
d„ «       «       Ze	e
d	„ «       «       Ze	d
„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       Ze	d„ «       ZeZe	d„ «       Ze	d„ «       Z e	d„ «       Z!d„ Z"e	d'd„«       Z# e$dd «      Z% e$dd!«      Z&e	d"„ «       Z'e	d#„ «       Z(e	d$„ «       Z)e	d(d&„«       Z*y%))ÚProcessz1Wrapper class around underlying C implementation.)Ú_cacherÈ   rÇ   Ú_procfs_pathr¤   c                 óL   — || _         d | _        d | _        t        «       | _        y ©N)r¤   rÈ   rÇ   r   r×   )rÌ   r¤   s     r@   Ú__init__zProcess.__init___  s"   € ØˆŒØˆŒ
ØˆŒ
Ü+Ó-ˆÕrB   c                 ó`   — t        j                  | j                  › d| j                  › �«       y)z+Raise NSP if the process disappeared on us.ú/N)r6   Ústatr×   r¤   ©rÌ   s    r@   Ú_assert_alivezProcess._assert_alivee  s&   € ô 	�‰�4×$Ñ$Ð% Q t§x¡x jÐ1Õ2rB   c                 ó¦   — | j                   j                  | «       | j                  j                  | «       | j                  j                  | «       y rÙ   )Ú_proc_name_and_argsÚcache_activateÚ_proc_basic_infoÚ
_proc_credrÞ   s    r@   Úoneshot_enterzProcess.oneshot_enterk  s<   € Ø× Ñ ×/Ñ/°Ô5Ø×Ñ×,Ñ,¨TÔ2Ø�‰×&Ñ& tÕ,rB   c                 ó¦   — | j                   j                  | «       | j                  j                  | «       | j                  j                  | «       y rÙ   )rá   Úcache_deactivaterã   rä   rÞ   s    r@   Úoneshot_exitzProcess.oneshot_exitp  s<   € Ø× Ñ ×1Ñ1°$Ô7Ø×Ñ×.Ñ.¨tÔ4Ø�‰×(Ñ(¨Õ.rB   c                 óV   — t        j                  | j                  | j                  «      S rÙ   )rI   Úproc_name_and_argsr¤   r×   rÞ   s    r@   rá   zProcess._proc_name_and_argsu  s!   € ô ×&Ñ& t§x¡x°×1BÑ1BÓCÐCrB   c                 óN  — | j                   dk(  rNt        j                  j                  | j                  › d| j                   › d�«      st        | j                   «      ‚t        j                  | j                   | j                  «      }t        |«      t        t        «      k(  sJ ‚|S )Nr   rÜ   z/psinfo)
r¤   r6   rÀ   Úexistsr×   r   rI   Úproc_basic_infoÚlenÚproc_info_map)rÌ   ri   s     r@   rã   zProcess._proc_basic_infoz  s‚   € ð �8‰8�qŠ=¤§¡§¡Ø× Ñ Ð!  4§8¡8 *¨GÐ4ô"
ô ˜tŸx™xÓ(Ð(Ü×"Ñ" 4§8¡8¨T×->Ñ->Ó?ˆÜ�3‹xœ3œ}Ó-Ò-Ð-Ð-Øˆ
rB   c                 óV   — t        j                  | j                  | j                  «      S rÙ   )rI   Ú	proc_credr¤   r×   rÞ   s    r@   rä   zProcess._proc_cred…  s   € ô �~‰~˜dŸh™h¨×(9Ñ(9Ó:Ð:rB   c                 ó(   — | j                  «       d   S rÆ   ©rá   rÞ   s    r@   r¬   zProcess.nameŠ  s   € ð ×'Ñ'Ó)¨!Ñ,Ð,rB   c                 ó¢   — 	 t        j                  | j                  › d| j                  › d�«      S # t        $ r Y nw xY w| j                  «        y)NrÜ   z/path/a.outr~   )r6   Úreadlinkr×   r¤   r�   ÚcmdlinerÞ   s    r@   ÚexezProcess.exe�  sN   € ð	Ü—;‘; $×"3Ñ"3Ð!4°A°d·h±h°Z¸{ÐKÓLÐLøÜò 	Ùð	úð
 	�‰ŒØs   ‚.1 ±	=¼=c                 ó(   — | j                  «       d   S )Nr   ró   rÞ   s    r@   rö   zProcess.cmdline›  s   € à×'Ñ'Ó)¨!Ñ,Ð,rB   c                 óV   — t        j                  | j                  | j                  «      S rÙ   )rI   Úproc_environr¤   r×   rÞ   s    r@   rM   zProcess.environŸ  ó   € ä× Ñ  §¡¨4×+<Ñ+<Ó=Ð=rB   c                 ó6   — | j                  «       t        d      S )Nr(   ©rã   rï   rÞ   s    r@   r(   zProcess.create_time£  ó   € à×$Ñ$Ó&¤}°]Ñ'CÑDÐDrB   c                 ó6   — | j                  «       t        d      S )Nr*   rý   rÞ   s    r@   r*   zProcess.num_threads§  rþ   rB   c                 ó6   — | j                  «       t        d      S )Nr)   rý   rÞ   s    r@   Únice_getzProcess.nice_get«  s   € ð
 ×$Ñ$Ó&¤}°VÑ'<Ñ=Ð=rB   c                 óž   — | j                   dv r t        | j                   | j                  «      ‚t        j                  | j                   |«      S )N>   r   r   )r¤   r   rÈ   rI   Úproc_priority_set)rÌ   Úvalues     r@   Únice_setzProcess.nice_set²  s<   € à�8‰8�vÑô
 ˜tŸx™x¨¯©Ó4Ð4Ü×%Ñ% d§h¡h°Ó6Ð6rB   c                 óX   — | j                  «       t        d      | _        | j                  S )Nr%   )rã   rï   rÇ   rÞ   s    r@   r%   zProcess.ppid¼  s&   € à×*Ñ*Ó,¬]¸6Ñ-BÑCˆŒ
Ø�z‰zÐrB   c                 óê   — 	 | j                  «       \  }}}}}}t	        j
                  |||«      S # t        $ r9 | j                  «       t        d      }| j                  «       t        d      }d }Y ŒXw xY w)Nr-   r.   ©rä   r   rã   rï   r9   Úpuids)rÌ   ÚrealÚ	effectiveÚsavedr\   s        r@   ÚuidszProcess.uidsÁ  s{   € ð	Ø.2¯o©oÓ.?Ñ+ˆD�)˜U A q¨!ô
 �y‰y˜˜y¨%Ó0Ð0øô	 ò 	Ø×(Ñ(Ó*¬=¸Ñ+?Ñ@ˆDØ×-Ñ-Ó/´¸fÑ0EÑFˆIØŠEð	úó   ‚0 °?A2Á1A2c                 óê   — 	 | j                  «       \  }}}}}}t	        j
                  |||«      S # t        $ r9 | j                  «       t        d      }| j                  «       t        d      }d }Y ŒXw xY w)Nr/   r0   r  )rÌ   r\   r
  r  r  s        r@   ÚgidszProcess.gidsË  s{   € ð	Ø.2¯o©oÓ.?Ñ+ˆAˆq�!�T˜9 eô
 �y‰y˜˜y¨%Ó0Ð0øô	 ò 	Ø×(Ñ(Ó*¬=¸Ñ+?Ñ@ˆDØ×-Ñ-Ó/´¸fÑ0EÑFˆIØŠEð	úr  c                 óö   — 	 t        j                  | j                  | j                  «      }t        j                  |Ž S # t        $ r1}|j
                  t
        j                  k(  r	t        sd}n‚ Y d }~ŒGd }~ww xY w)N)ç        r  r  r  )
rI   Úproc_cpu_timesr¤   r×   r�   ÚerrnoÚ	EOVERFLOWÚ	IS_64_BITr9   Ú	pcputimes)rÌ   ÚtimesrŒ   s      r@   rk   zProcess.cpu_timesÕ  sg   € ð	Ü×'Ñ'¨¯©°$×2CÑ2CÓDˆEô �}‰}˜eÐ$Ð$øô ò 	Ø�y‰yœEŸO™OÒ+µIð -‘àô ûð	ús   ‚*> ¾	A8Á'A3Á3A8c                 óV   — t        j                  | j                  | j                  «      S rÙ   )rI   Úproc_cpu_numr¤   r×   rÞ   s    r@   Úcpu_numzProcess.cpu_numç  rû   rB   c                 ó4  — | j                   }d}t        | j                  «       t        d      «      }|t        j
                  k7  r0dD ]+  }	 t        j                  |› d| j                  › d|› �«      c S  |r| j                  «        y y # t        $ r d}Y ŒOw xY w)NFr,   )r   r   r   éÿ   rÜ   ú/path/T)r×   rÓ   rã   rï   rI   ÚPRNODEVr6   rõ   r¤   rÉ   rß   )rÌ   Úprocfs_pathÚ
hit_enoentr¸   rj   s        r@   ÚterminalzProcess.terminalë  s¢   € à×'Ñ'ˆØˆ
Ü˜d×3Ñ3Ó5´mÀGÑ6LÑMÓNˆØ”$—,‘,ÒØ#ò �ðÜŸ;™;¨+¨°a¸¿¹°zÀÈÀsÐ'KÓLÒLðñ Ø×ÑÕ ð øô )ò Ø!%�JÙðús   Á&B	Â	BÂBc                 óÌ   — | j                   }	 t        j                  |› d| j                  › d�«      S # t        $ r' t        j
                  |› d| j                  › �«       Y yw xY w)NrÜ   z	/path/cwdr~   )r×   r6   rõ   r¤   rÉ   rÝ   )rÌ   r   s     r@   ÚcwdzProcess.cwdú  sa   € ð ×'Ñ'ˆð	Ü—;‘; + ¨a°·±¨z¸ÐCÓDÐDøÜ ò 	Ü�G‰G�{�m 1 T§X¡X JÐ/Ô0Ùð	ús   Ž$3 ³-A#Á"A#c                 óŠ   — | j                  «       }|t        d      dz  }|t        d      dz  }t        j                  ||«      S )Nr&   i   r'   )rã   rï   r9   Úpmem)rÌ   ri   r&   r'   s       r@   Úmemory_infozProcess.memory_info  sI   € à×#Ñ#Ó%ˆØ”- Ñ&Ñ'¨$Ñ.ˆØ”- Ñ&Ñ'¨$Ñ.ˆÜ�x‰x˜˜SÓ!Ð!rB   c                 ób   — | j                  «       t        d      }t        j                  |d«      S )Nr+   ú?)rã   rï   ÚPROC_STATUSESÚget)rÌ   Úcodes     r@   r+   zProcess.status  s-   € à×$Ñ$Ó&¤}°XÑ'>Ñ?ˆä× Ñ   sÓ+Ð+rB   c                 ó  — | j                   }g }t        j                  |› d| j                  › d�«      }d}|D ]Z  }t	        |«      }	 t        j                  | j                  ||«      \  }}t        j                  |||«      }|j                  |«       Œ\ |r| j                  «        |S # t        $ rR}	|	j                  t        j                  k(  rt        sY d }	~	Œ¢|	j                  t        j                  k(  rd}Y d }	~	ŒÆ‚ d }	~	ww xY w)NrÜ   z/lwpFT)r×   r6   r¾   r¤   rW   rI   Úquery_process_threadr9   Úpthreadrƒ   r�   r  r  r  ÚENOENTrß   )
rÌ   r   ri   Útidsr!  ÚtidÚutimeÚstimer¥   rŒ   s
             r@   ÚthreadszProcess.threads  së   € à×'Ñ'ˆØˆÜ�z‰z˜[˜M¨¨4¯8©8¨*°DÐ9Ó:ˆØˆ
Øò 	ˆCÜ�c“(ˆCðÜ#×8Ñ8Ø—H‘H˜c ;ó ‘��uô& —[‘[  e¨UÓ3�Ø—
‘
˜2•ð/	ñ0 Ø×ÑÔ Øˆ
øô) ò Ø—9‘9¤§¡Ò/½	ô à—9‘9¤§¡Ò,Ø!%�JÜØûðús$   Á$B)Â)	DÂ2#C?ÃC?Ã>C?Ã?Dc           	      ó  — g }d}| j                   }|› d| j                  › d�}t        j                  |› d| j                  › d�«      D ]’  }t        j                  j                  ||«      }t        j                  j                  |«      sŒC	 t        j                  |«      }t        |«      sŒe|j                  t        j                  |t        |«      «      «       Œ” |r| j                  «        |S # t        $ r d}Y Œ¶w xY w)NFrÜ   z/pathú/fdT)r×   r¤   r6   r¾   rÀ   ÚjoinÚislinkrõ   r   rƒ   r9   Ú	popenfilerW   rÉ   rß   )rÌ   r…   r!  r   ÚpathdirrŸ   rÀ   Úfiles           r@   Ú
open_fileszProcess.open_files8  sä   € àˆØˆ
Ø×'Ñ'ˆØ �M  4§8¡8 *¨EÐ2ˆÜ—*‘* ˜}¨A¨d¯h©h¨Z°sÐ;Ó<ò 
	EˆBÜ—7‘7—<‘< ¨Ó,ˆDÜ�w‰w�~‰~˜dÕ#ðEÜŸ;™; tÓ,�Dô
 % TÕ*ØŸ™¤s§}¡}°T¼3¸r»7Ó'CÕDð
	Eñ Ø×ÑÔ Øˆøô )ò Ø!%�JÙðús   ÂC1Ã1C?Ã>C?c              #   ój  K  — dt        |«      g}t        j                  |t        j                  t        j                  ¬«      }|j	                  «       \  }}d„ ||fD «       \  }}|j
                  dk7  rvd|j                  «       v r t        | j                  | j                  «      ‚d|j                  «       v r t        | j                  | j                  «      ‚|›d|› �}t        |«      ‚|j                  d«      d	d
 }t        |«      D ]¦  \  }}	|	j                  «       }	|	j                  d«      sŒ(|	j                  dd	«      d	   }
||d	z
     j!                  «       }|dk(  rt"        j$                  }n|dk(  rt"        j&                  }nd}dt"        j(                  ||
dt*        j,                  f–— Œ¨ y
­w)z<Get UNIX sockets used by process by parsing 'pfiles' output.Úpfiles)rF   Ústderrc              3   ón   K  — | ]-  }|j                  t        j                  j                  «      –— Œ/ y ­wrÙ   )rP   rQ   rF   rR   )Ú.0rj   s     r@   ú	<genexpr>z,Process._get_unix_sockets.<locals>.<genexpr>V  s(   è ø€ ò 
Ø./ˆA�H‰H”S—Z‘Z×(Ñ(×)ñ
ùs   ‚35r   zpermission deniedzno such processz command error
rH   r   Nzsockname: AF_UNIXú ÚSOCK_STREAMÚ
SOCK_DGRAMr�   r~   )ÚstrrK   rL   rN   rO   rS   Úlowerr   r¤   rÈ   r   rT   rV   Ú	enumerateÚlstripÚ
startswithrU   ÚsocketrE  rF  ÚAF_UNIXr   Ú	CONN_NONE)rÌ   r¤   Úcmdr[   rF   r@  r]   r^   Úir_   rÀ   Útypes               r@   Ú_get_unix_socketszProcess._get_unix_socketsM  sˆ  è ø€ ð œ˜S›Ð"ˆÜ×ÑØœ
Ÿ™´
·±ô
ˆð Ÿ™›‰ˆ�ñ
Ø4:¸FÐ3Cô
‰ˆ�ð �<‰<˜1ÒØ" f§l¡l£nÑ4Ü" 4§8¡8¨T¯Z©ZÓ8Ð8Ø  F§L¡L£NÑ2Ü# D§H¡H¨d¯j©jÓ9Ð9Ø�GÐ+¨F¨8Ð4ˆCÜ˜sÓ#Ð#à—‘˜TÓ" 1 2Ð&ˆÜ  Ó'ò 	N‰GˆAˆtØ—;‘;“=ˆDØ�‰Ð2Õ3Ø—z‘z # qÓ)¨!Ñ,�Ø˜Q ™U‘|×)Ñ)Ó+�Ø˜=Ò(Ü!×-Ñ-‘DØ˜\Ò)Ü!×,Ñ,‘Dà�DØœ6Ÿ>™>¨4°°r¼7×;LÑ;LÐMÓMñ	Nùs   ‚D.F3Ä1BF3c                 ó6  — t        || j                  ¬«      }|s.t        j                  | j                  › d| j                  › �«       |dv rH|j                  | j                  | j                  «      D �cg c]  }t        j                  |Ž ‘Œ c}«       |S c c}w )N)rš   rÜ   >   r„   Úunix)	r‘   r¤   r6   rÝ   r×   ÚextendrR  r9   r–   )rÌ   r™   ri   Úconns       r@   r‘   zProcess.net_connectionso  s‚   € ä˜d¨¯©Ô2ˆñ ä�G‰G�t×(Ñ(Ð)¨¨4¯8©8¨*Ð5Ô6ð �?Ñ"Ø�J‰JØ.2×.DÑ.DÀTÇXÁXÓ.NÖO d”—‘˜DÒ!ÒOôð ˆ
ùò Ps   Á4BÚmmapzpath rss anon lockedzaddr perms path rss anon lockedc           	      ót  — d„ }| j                   }g }	 t        j                  | j                  |«      }d}|D ]e  }|\  }}	}
}}}} |||	«      }|j                  d«      s(	 t        j                  |› d| j                  › d|› �«      }|j                  ||
||||f«       Œg |r| j                  «        |S # t        $ r0}|j
                  t
        j                  k(  rt        sg cY d }~S ‚ d }~ww xY w# t        $ r?}|j
                  t
        j                  k(  r|› d| j                  › d|› �}d}n‚ Y d }~Œ¬d }~ww xY w)Nc                 ó’   — dj                  t        | «      dd  j                  d«      t        |«      dd  j                  d«      «      S )Nz{}-{}r   ÚL)ÚformatÚhexrU   )ÚstartÚends     r@   Útoaddrz#Process.memory_maps.<locals>.toaddr‡  sB   € Ø—>‘>Ü�E“
˜1˜2�×$Ñ$ SÓ)¬3¨s«8°A°B¨<×+=Ñ+=¸cÓ+Bóð rB   Fú[rÜ   r  T)r×   rI   Úproc_memory_mapsr¤   r�   r  r  r  rK  r6   rõ   r0  rƒ   rß   )rÌ   r_  r   r…   r�   rŒ   r!  rž   r“   ÚaddrsizeÚpermr¬   r&   ÚanonÚlockeds                  r@   Úmemory_mapszProcess.memory_maps…  sJ  € ò	ð
 ×'Ñ'ˆØˆð	Ü×+Ñ+¨D¯H©H°kÓBˆGð ˆ
Øò 	BˆDØ<@Ñ9ˆD�(˜D $¨¨T°6Ù˜$ Ó)ˆDØ—?‘? 3Ô'ðÜŸ;™;¨+¨°a¸¿¹°zÀÈÀvÐ'NÓO�Dð �N‰N˜D $¨¨c°4¸Ð@ÕAð%	Bñ& Ø×ÑÔ ØˆøôE ò 	Ø�y‰yœEŸO™OÒ+µIð •	àûð	ûô& ò Ø—y‘y¤E§L¡LÒ0ð #. ¨a°·±¨z¸À¸vÐF˜Ø%)™
àô #ûðús;   “ B3 Á'C/Â3	C,Â<$C'Ã C,Ã&C'Ã'C,Ã/	D7Ã85D2Ä2D7c                 ór   — t        t        j                  | j                  › d| j                  › d�«      «      S )NrÜ   r7  )rî   r6   r¾   r×   r¤   rÞ   s    r@   Únum_fdszProcess.num_fds´  s.   € ä”2—:‘: ×!2Ñ!2Ð 3°1°T·X±X°J¸cÐBÓCÓDÐDrB   c                 óv   — t        j                  t        j                  | j                  | j
                  «      Ž S rÙ   )r9   ÚpctxswrI   Úproc_num_ctx_switchesr¤   r×   rÞ   s    r@   Únum_ctx_switcheszProcess.num_ctx_switches¸  s-   € ä�z‰zÜ×'Ñ'¨¯©°$×2CÑ2CÓDð
ð 	
rB   Nc                 óB   — t        j                  | j                  |«      S rÙ   )r   Úwait_pidr¤   )rÌ   Útimeouts     r@   ÚwaitzProcess.wait¾  s   € ä× Ñ  §¡¨7Ó3Ð3rB   )ÚinetrÙ   )+Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__rÚ   rß   rå   rè   rÓ   r   rá   rã   rä   r¬   r÷   rö   rM   r(   r*   r  r  r%   r  r  rk   r  r"  r$  r'  Úmemory_full_infor+   r5  r=  rR  r‘   r   Únt_mmap_groupedÚnt_mmap_extrf  rh  rl  rp  rp   rB   r@   rÕ   rÕ   Z  sƒ  „ Ù;âC€Iò.ò3ò-ò
/ð
 ØñDó ó ðDð Øñó ó ðð Øñ;ó ó ð;ð ñ-ó ð-ð ñ	ó ð	ð ñ-ó ð-ð ñ>ó ð>ð ñEó ðEð ñEó ðEð ñ>ó ð>ð ñ7ó ð7ð ñó ðð ñ1ó ð1ð ñ1ó ð1ð ñ%ó ð%ð" ñ>ó ð>ð ñ!ó ð!ð ñ
ó ð
ð ñ"ó ð"ð #Ðàñ,ó ð,ð
 ñó ððB ñó ðò( NðD òó ðñ$ ! Ð)?Ó@€OÙ˜VÐ%FÓG€Kàñ,ó ð,ð\ ñEó ðEð ñ
ó ð
ð
 ò4ó ñ4rB   rÕ   )F)r�   )dru  r  rÑ   r6   rL  rK   rQ   Úcollectionsr   r   r~   r   r   r9   r   r	   rI   r
   r   r   r   r   r   r   r   r   r   r   r   Ú__extra__all__Úgetpagesizer8   Ú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_NONErN  Ú	TCPS_IDLEÚ
TCPS_BOUNDr”   Údictrï   rA   rb   rk   rd   rq   rs   ru   Údisk_io_countersr€   r   Únet_io_countersÚnet_if_addrsr‘   r¨   r²   rµ   rÁ   rÃ   rÓ   rÕ   rp   rB   r@   ú<module>r©     s�  ðñ
 .ã Û Û 	Û Û Û 
Ý "Ý å Ý Ý Ý #Ý Ý Ý !Ý "Ý "Ý Ý $Ý "Ý +Ý $Ý %Ý "â;€ð ˆD×ÑÓ€	Ø
�,‰,€Ø�K‰K˜%Ñ€	à€	Ø€
ð 	‡K�K�×(Ñ(Ø‡I�Iˆw×%Ñ%Ø‡J�J�×%Ñ%Ø‡J�J�×&Ñ&Ø‡I�Iˆw×"Ñ"Ø‡L�L�'×(Ñ(Ø‡J�J�×&Ñ&ð€ð 	×Ñ˜7×3Ñ3Ø×Ñ˜×-Ñ-Ø×Ñ˜×-Ñ-Ø×Ñ˜'×0Ñ0Ø×Ñ˜'×0Ñ0Ø×Ñ˜×/Ñ/Ø×Ñ�g×(Ñ(Ø×Ñ˜'×1Ñ1Ø×Ñ˜×-Ñ-Ø×Ñ�g×)Ñ)Ø×Ñ�w×+Ñ+Ø×Ñ˜7×,Ñ,Ø‡N�N�IØ‡O�O�Zð€ñ" Ø	
Ø	Ø	ØØ	
ØØØ
Ø	Ø	
Ø
Ø	ô€ò*8ò&ò\7ò,òò"ò
Nð ×(Ñ(Ð Ø× Ñ €
óð> ×&Ñ&€Ø× Ñ €óò>ò ò
ò0=ò$ò
÷:f4ò f4rB   