§
    ±Ûgâo  ã            
       ó 	  — 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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 n# e$ r dZY nw xY w	 ddlmZ n# e$ r dZY nw xY w e ej        d	¦  «        ¦  «        Z e¦   «         Zg d
¢Zej        dk    Zej        dk    Zej                             d¦  «        Zej                             d¦  «        ZeZej                             d¦  «        Zej                             d¦  «        Z ej                             d¦  «        Z!epe pe!Z"ej                             d¦  «        Z#ej                             d¦  «        Z$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0d Z1d!Z2d"Z3d#Z4d$Z5d%Z6d&Z7d'Z8d(Z9d)Z:d*Z;d+Z<d,Z=d-Z> G d.„ d/ej?        ¦  «        Z@ eA¦   «          B                    e@jC        ¦  «          G d0„ d1ej?        ¦  «        ZD eA¦   «          B                    eDjC        ¦  «          ejE        ¦   «         ZF ejG        ¦   «         ZH e
d2g d3¢¦  «        ZI e
d4g d5¢¦  «        ZJ e
d6g d7¢¦  «        ZK e
d8g d9¢¦  «        ZL e
d:g d;¢¦  «        ZM e
d<g d=¢¦  «        ZN e
d>g d?¢¦  «        ZO e
d@g dA¢¦  «        ZP e
dBg dC¢¦  «        ZQ e
dDg dE¢¦  «        ZR e
dFg dG¢¦  «        ZS e
dHg dI¢¦  «        ZT e
dJg dK¢¦  «        ZU e
dLdMdNg¦  «        ZV e
dOg dP¢¦  «        ZW e
dQdRdSg¦  «        ZX e
dTg dU¢¦  «        ZY e
dVg dW¢¦  «        ZZ e
dXg dW¢¦  «        Z[ e
dYg dZ¢¦  «        Z\ e
d[d\d]g¦  «        Z] e
d^d_d`g¦  «        Z^ e
dag db¢¦  «        Z_ e
dcdddeg¦  «        Z`eeegeegfeegegfegegfeegegfegegfeegeegfegeegfegeegfdfœZae� ea B                    egegfegegfdgœ¦  «         e�e#sea B                    dhegeegfi¦  «          G di„ djeb¦  «        Zc G dk„ dlec¦  «        Zd G dm„ dned¦  «        Ze G do„ dpec¦  «        Zf G dq„ drec¦  «        Zgd�ds„Zhdt„ Zidu„ Zjdv„ Zkdw„ Zleidx„ ¦   «         Zmdy„ Zndz„ Zod{„ Zpd�d|„Zqd}„ Zrd~„ Zs G d„ d€¦  «        Ztd�„ Zu et¦   «         Zvevjw        eu_w        evjx        eu_x        d‚Zydƒ„ Zzd„„ Z{ee{fd…„Z|efd†„Z}d‘dˆ„Z~d‰„ ZdŠ„ Z€eiej�        fd‹„¦   «         Z‚d’d�„ZƒddŒej�        fdŽ„Z„d�„ Z…dS )“z�Common objects shared by __init__.py and _ps*.py modules.

Note: this module is imported by setup.py, so it should not import
psutil or third-party modules.
é    N)Ú
namedtuple)ÚAF_INET)Ú
SOCK_DGRAM)ÚSOCK_STREAM)ÚAF_INET6)ÚAF_UNIXÚPSUTIL_DEBUG)RÚFREEBSDÚBSDÚLINUXÚNETBSDÚOPENBSDÚMACOSÚOSXÚPOSIXÚSUNOSÚWINDOWSÚ
CONN_CLOSEÚCONN_CLOSE_WAITÚCONN_CLOSINGÚCONN_ESTABLISHEDÚCONN_FIN_WAIT1ÚCONN_FIN_WAIT2ÚCONN_LAST_ACKÚCONN_LISTENÚ	CONN_NONEÚCONN_SYN_RECVÚCONN_SYN_SENTÚCONN_TIME_WAITÚNIC_DUPLEX_FULLÚNIC_DUPLEX_HALFÚNIC_DUPLEX_UNKNOWNÚSTATUS_DEADÚSTATUS_DISK_SLEEPÚSTATUS_IDLEÚSTATUS_LOCKEDÚSTATUS_RUNNINGÚSTATUS_SLEEPINGÚSTATUS_STOPPEDÚSTATUS_SUSPENDEDÚSTATUS_TRACING_STOPÚSTATUS_WAITINGÚSTATUS_WAKE_KILLÚSTATUS_WAKINGÚSTATUS_ZOMBIEÚSTATUS_PARKEDÚENCODINGÚENCODING_ERRSr   ÚpconnÚ	pcputimesÚpctxswÚpgidsÚpioÚpioniceÚ	popenfileÚpthreadÚpuidsÚsconnÚ	scpustatsÚsdiskioÚ	sdiskpartÚ
sdiskusageÚsnetioÚsnicaddrÚ	snicstatsÚsswapÚsuserÚ	conn_tmapÚdeprecated_methodÚisfile_strictÚmemoizeÚparse_environ_blockÚpath_exists_strictÚusage_percentÚsupports_ipv6Úsockfam_to_enumÚsocktype_to_enumÚwrap_numbersÚ	open_textÚopen_binaryÚcatÚbcatÚbytes2humanÚconn_to_ntupleÚdebugÚhiliteÚterm_supports_colorsÚprint_colorÚposixÚntÚlinuxÚdarwin)ÚfreebsdÚmidnightbsdÚopenbsdÚnetbsd)ÚsunosÚsolarisÚaixÚrunningÚsleepingz
disk-sleepÚstoppedztracing-stopÚzombieÚdeadz	wake-killÚwakingÚidleÚlockedÚwaitingÚ	suspendedÚparkedÚESTABLISHEDÚSYN_SENTÚSYN_RECVÚ	FIN_WAIT1Ú	FIN_WAIT2Ú	TIME_WAITÚCLOSEÚ
CLOSE_WAITÚLAST_ACKÚLISTENÚCLOSINGÚNONEc                   ó   — e Zd ZdZdZdZdS )Ú	NicDuplexé   é   r   N)Ú__name__Ú
__module__Ú__qualname__r    r!   r"   © ó    úD/granary/edev/quantum/lib/python3.11/site-packages/psutil/_common.pyr~   r~   €   s    € € € € € Ø€OØ€OØÐÐÐr…   r~   c                   ó   — e Zd ZdZdZdS )ÚBatteryTimeéÿÿÿÿéþÿÿÿN)r�   r‚   rƒ   ÚPOWER_TIME_UNKNOWNÚPOWER_TIME_UNLIMITEDr„   r…   r†   rˆ   rˆ   Š   s   € € € € € ØÐØÐÐÐr…   rˆ   rD   )ÚtotalÚusedÚfreeÚpercentÚsinÚsoutr@   )r�   rŽ   r�   r�   r>   )Ú
read_countÚwrite_countÚ
read_bytesÚwrite_bytesÚ	read_timeÚ
write_timer?   )ÚdeviceÚ
mountpointÚfstypeÚoptsrA   )Ú
bytes_sentÚ
bytes_recvÚpackets_sentÚpackets_recvÚerrinÚerroutÚdropinÚdropoutrE   )ÚnameÚterminalÚhostÚstartedÚpidr<   )ÚfdÚfamilyÚtypeÚladdrÚraddrÚstatusr©   rB   )r«   ÚaddressÚnetmaskÚ	broadcastÚptprC   )ÚisupÚduplexÚspeedÚmtuÚflagsr=   )Úctx_switchesÚ
interruptsÚsoft_interruptsÚsyscallsÚscpufreq)ÚcurrentÚminÚmaxÚshwtemp)Úlabelr¾   ÚhighÚcriticalÚsbattery)r�   ÚsecsleftÚpower_pluggedÚsfanrÂ   r¾   r4   )ÚuserÚsystemÚchildren_userÚchildren_systemr9   Úpathrª   r:   )ÚidÚ	user_timeÚsystem_timer;   )ÚrealÚ	effectiveÚsavedr6   r7   )r“   r”   r•   r–   r8   ÚioclassÚvaluer5   Ú	voluntaryÚinvoluntaryr3   )rª   r«   r¬   r­   r®   r¯   ÚaddrÚipÚport)ÚallÚtcpÚtcp4ÚudpÚudp4ÚinetÚinet4Úinet6)Útcp6Úudp6Úunixc                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )ÚErrorzQBase exception class. All other psutil exceptions inherit
    from this one.
    Úpsutilc                 ó~   — t          j        ¦   «         }|D ]&}t          | |d ¦  «        }|s|dk    r|dk    r|||<   Œ'|S )Nr©   r   )ÚcollectionsÚOrderedDictÚgetattr)ÚselfÚattrsÚinfor¥   rÕ   s        r†   Ú	_infodictzError._infodict  sW   € ÝÔ&Ñ(Ô(ˆØð 	#ð 	#ˆDÝ˜D $¨Ñ-Ô-ˆEØð #˜ š˜¨5°Aª:¨:Ø"��T‘
øØˆr…   c                 ó  — |                       d¦  «        }|rEd                     d                     d„ |                     ¦   «         D ¦   «         ¦  «        ¦  «        }nd }d                     d„ t	          | dd¦  «        |fD ¦   «         ¦  «        S )	N)r©   Úppidr¥   z({})ú, c                 ó"   — g | ]\  }}|› d |›�‘ŒS ©ú=r„   ©Ú.0ÚkÚvs      r†   ú
<listcomp>z!Error.__str__.<locals>.<listcomp>  s&   € ÐAÐAÐA©D¨A¨q˜a˜<˜< !˜<˜<ÐAÐAÐAr…   ú c                 ó   — g | ]}|¯|‘ŒS r„   r„   )rø   Úxs     r†   rû   z!Error.__str__.<locals>.<listcomp>  s   € ÐMÐMÐM˜qÈ1ÐM˜ÐMÐMÐMr…   ÚmsgÚ )rð   ÚformatÚjoinÚitemsrì   ©rí   rï   Údetailss      r†   Ú__str__zError.__str__  s�   € à�~Š~Ð5Ñ6Ô6ˆØð 	Ø—m’mØ—	’	ÐAÐA°D·J²J±L´LÐAÑAÔAÑBÔBñô ˆGˆGð ˆGØ�xŠxÐMÐM¥W¨T°5¸"Ñ%=Ô%=¸wÐ$GÐMÑMÔMÑNÔNÐNr…   c                 ó´   — |                       d¦  «        }d                     d„ |                     ¦   «         D ¦   «         ¦  «        }d| j        j        › d|› d�S )N)r©   rò   r¥   Úsecondsrÿ   ró   c                 ó"   — g | ]\  }}|› d |›�‘ŒS rõ   r„   r÷   s      r†   rû   z"Error.__repr__.<locals>.<listcomp>"  s&   € ÐCÐCÐC©d¨a° ˜\˜\ A˜\˜\ÐCÐCÐCr…   zpsutil.ú(ú))rð   r  r  Ú	__class__r�   r  s      r†   Ú__repr__zError.__repr__  sZ   € à�~Š~ÐGÑHÔHˆØ—)’)ÐCÐC°d·j²j±l´lÐCÑCÔCÑDÔDˆØ=˜œÔ0Ð=Ð=°7Ð=Ð=Ð=Ð=r…   N)r�   r‚   rƒ   Ú__doc__rð   r  r  r„   r…   r†   rç   rç     sU   € € € € € ðð ð €Jðð ð ð	Oð 	Oð 	Oð>ð >ð >ð >ð >r…   rç   c                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )ÚNoSuchProcesszXException raised when a process with a certain PID doesn't
    or no longer exists.
    rè   Nc                 óh   — t                                | ¦  «         || _        || _        |pd| _        d S )Nzprocess no longer exists©rç   Ú__init__r©   r¥   rÿ   ©rí   r©   r¥   rÿ   s       r†   r  zNoSuchProcess.__init__-  s3   € Ý�Š�tÑÔÐØˆŒØˆŒ	ØÐ4Ð4ˆŒˆˆr…   c                 ó8   — | j         | j        | j        | j        ffS ©N©r  r©   r¥   rÿ   ©rí   s    r†   Ú
__reduce__zNoSuchProcess.__reduce__3  ó   € Ø” ¤¨4¬9°d´hÐ ?Ð@Ð@r…   ©NN©r�   r‚   rƒ   r  r  r  r„   r…   r†   r  r  &  sM   € € € € € ðð ð €Jð5ð 5ð 5ð 5ðAð Að Að Að Ar…   r  c                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )ÚZombieProcessa1  Exception raised when querying a zombie process. This is
    raised on macOS, BSD and Solaris only, and not always: depending
    on the query the OS may be able to succeed anyway.
    On Linux all zombie processes are querable (hence this is never
    raised). Windows doesn't have zombie processes.
    rè   Nc                 ó`   — t                                | |||¦  «         || _        |pd| _        d S )Nz"PID still exists but it's a zombie)r  r  rò   rÿ   )rí   r©   r¥   rò   rÿ   s        r†   r  zZombieProcess.__init__A  s4   € Ý×Ò˜t S¨$°Ñ4Ô4Ð4ØˆŒ	ØÐ>Ð>ˆŒˆˆr…   c                 óD   — | j         | j        | j        | j        | j        ffS r  )r  r©   r¥   rò   rÿ   r  s    r†   r  zZombieProcess.__reduce__F  s    € Ø” ¤¨4¬9°d´iÀÄÐ JÐKÐKr…   ©NNNr  r„   r…   r†   r  r  7  sM   € € € € € ðð ð €Jð?ð ?ð ?ð ?ð
Lð Lð Lð Lð Lr…   r  c                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )ÚAccessDeniedz@Exception raised when permission to perform an action is denied.rè   Nc                 óh   — t                                | ¦  «         || _        || _        |pd| _        d S )Nr   r  r  s       r†   r  zAccessDenied.__init__O  s1   € Ý�Š�tÑÔÐØˆŒØˆŒ	Ø�9˜"ˆŒˆˆr…   c                 ó8   — | j         | j        | j        | j        ffS r  r  r  s    r†   r  zAccessDenied.__reduce__U  r  r…   r!  r  r„   r…   r†   r#  r#  J  sG   € € € € € ØJÐJà€Jðð ð ð ðAð Að Að Að Ar…   r#  c                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )ÚTimeoutExpiredzWRaised on Process.wait(timeout) if timeout expires and process
    is still alive.
    rè   Nc                 óz   — t                                | ¦  «         || _        || _        || _        d|› d�| _        d S )Nztimeout after z seconds)rç   r  r  r©   r¥   rÿ   )rí   r  r©   r¥   s       r†   r  zTimeoutExpired.__init__`  s?   € Ý�Š�tÑÔÐØˆŒØˆŒØˆŒ	Ø5 GÐ5Ð5Ð5ˆŒˆˆr…   c                 ó8   — | j         | j        | j        | j        ffS r  )r  r  r©   r¥   r  s    r†   r  zTimeoutExpired.__reduce__g  s   € Ø” ¤¨t¬x¸¼Ð CÐDÐDr…   r  r  r„   r…   r†   r'  r'  Y  sM   € € € € € ðð ð €Jð6ð 6ð 6ð 6ðEð Eð Eð Eð Er…   r'  c                 óx   — 	 t          | ¦  «        |z  dz  }|�t          ||¦  «        }|S # t          $ r Y dS w xY w)z5Calculate percentage usage of 'used' against 'total'.éd   Ng        )ÚfloatÚroundÚZeroDivisionError)rŽ   r�   Úround_Úrets       r†   rL   rL   p  s\   € ðÝ�T‰{Œ{˜UÑ" cÑ)ˆð ÐÝ˜˜VÑ$Ô$ˆCØˆ
øõ ð ð ð Øˆsˆsðøøøs   ‚+ «
9¸9c                 óf   ‡ ‡— t          j        ‰ ¦  «        ˆˆ fd„¦   «         }ˆfd„}i Š||_        |S )a¹  A simple memoize decorator for functions supporting (hashable)
    positional arguments.
    It also provides a cache_clear() function for clearing the cache:

    >>> @memoize
    ... def foo()
    ...     return 1
        ...
    >>> foo()
    1
    >>> foo.cache_clear()
    >>>

    It supports:
     - functions
     - classes (acts as a @singleton)
     - staticmethods
     - classmethods

    It does NOT support:
     - methods
    c                  óâ   •— | t          t          |                     ¦   «         ¦  «        ¦  «        f}	 ‰|         S # t          $ r) 	  ‰| i |¤Žx}‰|<   n# t          $ r}|d ‚d }~ww xY w|cY S w xY wr  )Ú	frozensetÚsortedr  ÚKeyErrorÚ	Exception)ÚargsÚkwargsÚkeyr0  ÚerrÚcacheÚfuns        €€r†   Úwrapperzmemoize.<locals>.wrapper”  s£   ø€ à•Y�v f§l¢l¡n¤nÑ5Ô5Ñ6Ô6Ð7ˆð	Ø˜”:ÐøÝð 	ð 	ð 	ð$Ø#& 3¨Ð#7°Ð#7Ð#7Ð7��e˜C‘j�jøÝð $ð $ð $Ø˜tÐ#øøøøð$øøøàˆJˆJˆJð	øøøs3   ³; »
A.ÁAÁA.Á
A&ÁA!Á!A&Á&A.Á-A.c                  ó0   •— ‰                       ¦   «          dS )zClear cache.N)Úclear)r;  s   €r†   Úcache_clearzmemoize.<locals>.cache_clear   s   ø€ à�Š‰Œˆˆˆr…   )Ú	functoolsÚwrapsr@  )r<  r=  r@  r;  s   `  @r†   rI   rI   |  sf   øø€ õ0 „_�SÑÔð	ð 	ð 	ð 	ð 	ñ Ôð	ðð ð ð ð ð €EØ%€GÔØ€Nr…   c                 ón   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }d„ }d„ }||_        ||_        |S )aú  A memoize decorator which is disabled by default. It can be
    activated and deactivated on request.
    For efficiency reasons it can be used only against class methods
    accepting no arguments.

    >>> class Foo:
    ...     @memoize
    ...     def foo()
    ...         print(1)
    ...
    >>> f = Foo()
    >>> # deactivated (default)
    >>> foo()
    1
    >>> foo()
    1
    >>>
    >>> # activated
    >>> foo.cache_activate(self)
    >>> foo()
    1
    >>> foo()
    >>> foo()
    >>>
    c                 ó  •— 	 | j         ‰         }nz# t          $ r$ 	  ‰| ¦  «        cY S # t          $ r}|d ‚d }~ww xY wt          $ rA 	  ‰| ¦  «        }n# t          $ r}|d ‚d }~ww xY w	 || j         ‰<   n# t          $ r Y nw xY wY nw xY w|S r  )Ú_cacheÚAttributeErrorr6  r5  )rí   r0  r:  r<  s      €r†   r=  z'memoize_when_activated.<locals>.wrapperÄ  sý   ø€ ð	à”+˜cÔ"ˆCˆCøÝð 	$ð 	$ð 	$ð$Ø�s˜4‘y”yÐ Ð Ð øÝð $ð $ð $Ø˜tÐ#øøøøð$øøøåð 	ð 	ð 	ð$Ø�c˜$‘i”i��øÝð $ð $ð $Ø˜tÐ#øøøøð$øøøðØ#&�”˜CÑ Ð øÝ!ð ð ð ð �ðøøøøøð	øøøð ˆ
sq   ƒ ‘
Bœ
)¦B©
;³6¶;»BÁAÁBÁ
A&ÁA!Á!A&Á&BÁ*
A5Á4BÁ5
BÁ?BÂBÂBÂBc                 ó   — i | _         dS )zsActivate cache. Expects a Process instance. Cache will be
        stored as a "_cache" instance attribute.
        N)rE  ©Úprocs    r†   Úcache_activatez.memoize_when_activated.<locals>.cache_activateÞ  s   € ð ˆŒˆˆr…   c                 ó.   — 	 | ` dS # t          $ r Y dS w xY w)zDeactivate and clear cache.N)rE  rF  rH  s    r†   Úcache_deactivatez0memoize_when_activated.<locals>.cache_deactivateä  s2   € ð	Ø���øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ †
“)rA  rB  rJ  rL  )r<  r=  rJ  rL  s   `   r†   Úmemoize_when_activatedrM  ©  sh   ø€ õ6 „_�SÑÔðð ð ð ñ Ôðð2ð ð ðð ð ð ,€GÔØ/€GÔØ€Nr…   c                 ó”   — 	 t          j        | ¦  «        }t          j        |j        ¦  «        S # t          $ r ‚ t
          $ r Y dS w xY w)z�Same as os.path.isfile() but does not swallow EACCES / EPERM
    exceptions, see:
    http://mail.python.org/pipermail/python-dev/2012-June/120787.html.
    F)ÚosÚstatÚS_ISREGÚst_modeÚPermissionErrorÚOSError)rÍ   Ústs     r†   rH   rH   ð  sa   € ð
(ÝŒW�T‰]Œ]ˆõ Œ|˜BœJÑ'Ô'Ð'øõ ð ð ð ØÝð ð ð Øˆuˆuðøøøs   ‚/ ¯AÁAc                 óf   — 	 t          j        | ¦  «         dS # t          $ r ‚ t          $ r Y dS w xY w)z�Same as os.path.exists() but does not swallow EACCES / EPERM
    exceptions. See:
    http://mail.python.org/pipermail/python-dev/2012-June/120787.html.
    TF)rO  rP  rS  rT  )rÍ   s    r†   rK   rK   ÿ  sT   € ð
Ý
Œ�‰Œˆð ˆtøõ ð ð ð ØÝð ð ð Øˆuˆuðøøøs   ‚ ˜0¯0c                  óö   — t           j        rt          €dS 	 t          j         t          t           j        ¦  «        5 } |                      d¦  «         ddd¦  «         n# 1 swxY w Y   dS # t
          $ r Y dS w xY w)z2Return True if IPv6 is supported on this platform.NF)z::1r   T)ÚsocketÚhas_ipv6r   r   ÚbindrT  )Úsocks    r†   rM   rM     s½   € õ Œ?ð �hÐ.ØˆuðÝŒ]�8¥VÔ%7Ñ8Ô8ð 	"¸DØ�IŠI�jÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"àˆtøÝð ð ð Øˆuˆuðøøøs4   —$A* »AÁA* ÁA!Á!A* Á$A!Á%A* Á*
A8Á7A8c                 ó  — i }d}t           }	 |                      d|¦  «        }||k    rnU|                      d||¦  «        }||k    r2| ||…         }| |dz   |…         }|r|                     ¦   «         }|||<   |dz   }Œr|S )zCParse a C environ block of environment variables into a dictionary.r   Tú rö   r€   )r   ÚfindÚupper)Údatar0  ÚposÚWINDOWS_Únext_posÚ	equal_posr9  rÕ   s           r†   rJ   rJ     s«   € ð €CØ
€Cõ €HðØ—9’9˜T 3Ñ'Ô'ˆà�sŠ?ˆ?Øà—I’I˜c 3¨Ñ1Ô1ˆ	Ø�sŠ?ˆ?Ø�s˜9�}Ô%ˆCØ˜ Q™¨Ð1Ô2ˆEàð "Ø—i’i‘k”k�ØˆC�‰HØ˜‰lˆðð  €Jr…   c                 óP   — 	 t          j        | ¦  «        S # t          $ r | cY S w xY w)z�Convert a numeric socket family value to an IntEnum member.
    If it's not a known member, return the numeric value itself.
    )rX  ÚAddressFamilyÚ
ValueError©Únums    r†   rN   rN   7  s<   € ðÝÔ# CÑ(Ô(Ð(øÝð ð ð Øˆ
ˆ
ˆ
ðøøøó   ‚ –%¤%c                 óP   — 	 t          j        | ¦  «        S # t          $ r | cY S w xY w)zConvert a numeric socket type value to an IntEnum member.
    If it's not a known member, return the numeric value itself.
    )rX  Ú
SocketKindrg  rh  s    r†   rO   rO   A  s<   € ðÝÔ  Ñ%Ô%Ð%øÝð ð ð Øˆ
ˆ
ˆ
ðøøørj  c           	      óp  — |t           j        t          hv r|r	t          |Ž }|r	t          |Ž }|t           j        k    r,|t          t          hv r|                     |t          ¦  «        }nt          }t          |¦  «        }t          |¦  «        }|€t          | |||||¦  «        S t          | ||||||¦  «        S )z2Convert a raw connection tuple to a proper ntuple.)rX  r   r   rØ   r   Úgetr   rN   rO   r3   r<   )rª   ÚfamÚtype_r­   r®   r¯   Ú
status_mapr©   s           r†   rV   rV   K  s¾   € à
�vŒ~�xÐ(Ð(Ð(Øð 	!Ý˜%�LˆEØð 	!Ý˜%�LˆEØ•Ô"Ò"Ð" s­w½Ð.AÐ'AÐ'AØ—’ ­	Ñ2Ô2ˆˆåˆÝ
˜#Ñ
Ô
€CÝ˜UÑ#Ô#€EØ
€{Ý�R˜˜e U¨E°6Ñ:Ô:Ð:å�R˜˜e U¨E°6¸3Ñ?Ô?Ð?r…   c                 ób  — ddl }| j        r| j        sdS | j        t          j        k    r8t          |                     | j        › d| j        › �d¬¦  «        j        ¦  «        S | j        t          j	        k    r8t          | 
                    | j        › d| j        › �d¬¦  «        j        ¦  «        S dS )zbGiven the address ntuple returned by ``net_if_addrs()``
    calculates the broadcast address.
    r   Nú/F)Ústrict)Ú	ipaddressr°   r±   r«   rX  r   ÚstrÚIPv4NetworkÚbroadcast_addressr   ÚIPv6Network)rØ   ru  s     r†   Úbroadcast_addrrz  ^  sØ   € ð ÐÐÐàŒ<ð ˜tœ|ð ØˆtØ„{•f”nÒ$Ð$ÝØ×!Ò!Ø”<Ð0Ð0 $¤,Ð0Ð0¸ð "ñ ô äñ
ô 
ð 	
ð
 „{•f”oÒ%Ð%ÝØ×!Ò!Ø”<Ð0Ð0 $¤,Ð0Ð0¸ð "ñ ô äñ
ô 
ð 	
ð &Ð%r…   c                 ó   ‡ — ˆ fd„}|S )zƒA decorator which can be used to mark a method as deprecated
    'replcement' is the method name which will be called instead.
    c                 ó€   •‡— | j         › d‰› d�Š| j        €‰| _        t          j        | ¦  «        ˆˆfd„¦   «         }|S )Nz*() is deprecated and will be removed; use z
() insteadc                 óh   •— t          j        ‰t          d¬¦  «          t          | ‰¦  «        |i |¤ŽS )Nr   )ÚcategoryÚ
stacklevel)ÚwarningsÚwarnÚDeprecationWarningrì   )rí   r7  r8  rÿ   Úreplacements      €€r†   Úinnerz/deprecated_method.<locals>.outer.<locals>.inner�  s:   ø€ åŒM˜#Õ(:ÀqÐIÑIÔIÐIØ-•7˜4 Ñ-Ô-¨tÐ>°vÐ>Ð>Ð>r…   )r�   r  rA  rB  )r<  r„  rÿ   rƒ  s     @€r†   Úouterz deprecated_method.<locals>.outery  su   øø€ àŒ|ð (ð (Øð(ð (ð (ð 	ð Œ;ÐØˆCŒKå	Œ˜Ñ	Ô	ð	?ð 	?ð 	?ð 	?ð 	?ñ 
Ô	ð	?ð ˆr…   r„   )rƒ  r…  s   ` r†   rG   rG   t  s#   ø€ ð
ð ð ð ð ð €Lr…   c                   ó8   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd	d„Zd„ Z	dS )
Ú_WrapNumberszNWatches numbers so that they don't overflow and wrap
    (reset to zero).
    c                 ó`   — t          j        ¦   «         | _        i | _        i | _        i | _        d S r  )Ú	threadingÚLockÚlockr;  Ú	remindersÚreminder_keysr  s    r†   r  z_WrapNumbers.__init__�  s-   € Ý”NÑ$Ô$ˆŒ	ØˆŒ
ØˆŒØˆÔÐÐr…   c                 óà   — || j         vsJ ‚|| j        vsJ ‚|| j        vsJ ‚|| j         |<   t          j        t
          ¦  «        | j        |<   t          j        t          ¦  «        | j        |<   d S r  )r;  rŒ  r�  rê   ÚdefaultdictÚintÚset)rí   Ú
input_dictr¥   s      r†   Ú	_add_dictz_WrapNumbers._add_dict–  s}   € Ø˜4œ:Ð%Ð%Ð%Ð%Ø˜4œ>Ð)Ð)Ð)Ð)Ø˜4Ô-Ð-Ð-Ð-Ð-Ø%ˆŒ
�4ÑÝ*Ô6µsÑ;Ô;ˆŒ�tÑÝ#.Ô#:½3Ñ#?Ô#?ˆÔ˜4Ñ Ð Ð r…   c                 ó  — | j         |         }t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        z
  }|D ]4}| j        |         |         D ]}| j        |         |= Œ| j        |         |= Œ5dS )z†In case the number of keys changed between calls (e.g. a
        disk disappears) this removes the entry from self.reminders.
        N)r;  r‘  Úkeysr�  rŒ  )rí   r’  r¥   Úold_dictÚ	gone_keysÚgone_keyÚremkeys          r†   Ú_remove_dead_remindersz#_WrapNumbers._remove_dead_remindersž  s–   € ð ”:˜dÔ#ˆÝ˜Ÿš™œÑ(Ô(­3¨z¯ªÑ/@Ô/@Ñ+AÔ+AÑAˆ	Ø!ð 	3ð 	3ˆHØÔ,¨TÔ2°8Ô<ð 1ð 1�Ø”N 4Ô(¨Ð0Ð0ØÔ" 4Ô(¨Ð2Ð2ð	3ð 	3r…   c                 ól  — || j         vr|                      ||¦  «         |S |                      ||¦  «         | j         |         }i }|D ]à}||         }	 ||         }n# t          $ r |||<   Y Œ%w xY wg }t	          t          |¦  «        ¦  «        D ]†}	||	         }
||	         }||	f}|
|k     rA| j        |         |xx         |z  cc<   | j        |         |                              |¦  «         | 	                    |
| j        |         |         z   ¦  «         Œ‡t          |¦  «        ||<   Œá|| j         |<   |S )zlCache dict and sum numbers which overflow and wrap.
        Return an updated copy of `input_dict`.
        )r;  r“  rš  r5  ÚrangeÚlenrŒ  r�  ÚaddÚappendÚtuple)rí   r’  r¥   r–  Únew_dictr9  Úinput_tupleÚ	old_tupleÚbitsÚiÚinput_valueÚ	old_valuer™  s                r†   Úrunz_WrapNumbers.run©  s  € ð �t”zÐ!Ð!à�NŠN˜: tÑ,Ô,Ð,ØÐà×#Ò# J°Ñ5Ô5Ð5à”:˜dÔ#ˆØˆØð 	(ð 	(ˆCØ$ Sœ/ˆKðØ$ SœM�	�	øÝð ð ð ð !,�˜‘Ø�ð	øøøð ˆDÝ�3˜{Ñ+Ô+Ñ,Ô,ð Hð H�Ø)¨!œn�Ø% aœL�	Ø˜q˜�Ø Ò*Ð*à”N 4Ô(¨Ð0Ð0Ô0°IÑ=Ð0Ð0Ñ0ØÔ& tÔ,¨SÔ1×5Ò5°fÑ=Ô=Ð=Ø—’˜K¨$¬.¸Ô*>¸vÔ*FÑFÑGÔGÐGÐGå! $™KœKˆH�S‰MˆMà%ˆŒ
�4ÑØˆs   ÁAÁA/Á.A/Nc                 ó„  — | j         5  |€L| j                             ¦   «          | j                             ¦   «          | j                             ¦   «          nQ| j                             |d¦  «         | j                             |d¦  «         | j                             |d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z>Clear the internal cache, optionally only for function 'name'.N)r‹  r;  r?  rŒ  r�  Úpop)rí   r¥   s     r†   r@  z_WrapNumbers.cache_clearÐ  sú   € àŒYð 	3ð 	3Øˆ|Ø”
× Ò Ñ"Ô"Ð"Ø”×$Ò$Ñ&Ô&Ð&ØÔ"×(Ò(Ñ*Ô*Ð*Ð*à”
—’˜t TÑ*Ô*Ð*Ø”×"Ò" 4¨Ñ.Ô.Ð.ØÔ"×&Ò& t¨TÑ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s   ˆB B5Â5B9Â<B9c                 ól   — | j         5  | j        | j        | j        fcddd¦  «         S # 1 swxY w Y   dS )z5Return internal cache dicts as a tuple of 3 elements.N)r‹  r;  rŒ  r�  r  s    r†   Ú
cache_infoz_WrapNumbers.cache_infoÜ  s“   € àŒYð 	Dð 	DØ”J ¤°Ô0BÐCð	Dð 	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dð 	Dð 	Ds   ˆ)©-°-r  )
r�   r‚   rƒ   r  r  r“  rš  r¨  r@  r¬  r„   r…   r†   r‡  r‡  ‹  s†   € € € € € ðð ð ð  ð  ð@ð @ð @ð	3ð 	3ð 	3ð%ð %ð %ðN
3ð 
3ð 
3ð 
3ðDð Dð Dð Dð Dr…   r‡  c                 ó„   — t           j        5  t                                | |¦  «        cddd¦  «         S # 1 swxY w Y   dS )zÅGiven an `input_dict` and a function `name`, adjust the numbers
    which "wrap" (restart from zero) across different calls by adding
    "old value" to "new value" and return an updated dict.
    N)Ú_wnr‹  r¨  )r’  r¥   s     r†   rP   rP   â  s�   € õ
 
Œð )ð )Ý�wŠw�z 4Ñ(Ô(ð)ð )ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )s   �5µ9¼9i €  c                 ó0   — t          | dt          ¬¦  «        S )NÚrb)Ú	buffering)ÚopenÚFILE_READ_BUFFER_SIZE)Úfnames    r†   rR   rR   ý  s   € Ý��tÕ'<Ð=Ñ=Ô=Ð=r…   c                 óÂ   — t          | t          t          t          ¬¦  «        }	 t          |_        n.# t
          $ r Y n"t          $ r |                     ¦   «          ‚ w xY w|S )zaOpen a file in text mode by using the proper FS encoding and
    en/decoding error handlers.
    )r±  ÚencodingÚerrors)r²  r³  r1   r2   Ú_CHUNK_SIZErF  r6  Úclose)r´  Úfobjs     r†   rQ   rQ     s   € õ ØÝ'ÝÝð	ñ ô €Dðõ 1ˆÔÐøÝð ð ð ØˆÝð ð ð Ø�
Š
‰ŒˆØðøøøð €Ks   ¤1 ±
A½Ac                 ó  — |t           u r9 || ¦  «        5 }|                     ¦   «         cddd¦  «         S # 1 swxY w Y   dS 	  || ¦  «        5 }|                     ¦   «         cddd¦  «         S # 1 swxY w Y   dS # t          $ r |cY S w xY w)zÛRead entire file content and return it as a string. File is
    opened in text mode. If specified, `fallback` is the value
    returned in case of error, either if the file does not exist or
    it can't be read().
    N)Ú_DEFAULTÚreadrT  )r´  ÚfallbackÚ_openÚfs       r†   rS   rS     s,  € ð •8ÐÐØˆU�5‰\Œ\ð 	˜QØ—6’6‘8”8ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð	Ø��u‘”ð   Ø—v’v‘x”xð ð  ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  øåð 	ð 	ð 	ØˆOˆOˆOð	øøøsB   •6¶:½:ÁA= ÁA0Á#A= Á0A4Á4A= Á7A4Á8A= Á=BÂBc                 ó0   — t          | |t          ¬¦  «        S )z,Same as above but opens file in binary mode.)r¾  r¿  )rS   rR   )r´  r¾  s     r†   rT   rT   ,  s   € åˆu˜x­{Ð;Ñ;Ô;Ð;r…   ú%(value).1f%(symbol)sc                 óP  — d}i }t          |dd…         ¦  «        D ]\  }}d|dz   dz  z  ||<   Œt          |dd…         ¦  «        D ]F}t          | ¦  «        ||         k    r+t          | ¦  «        ||         z  }|t	          ¦   «         z  c S ŒG|t          |d         | ¬¦  «        z  S )zÚUsed by various scripts. See: https://code.activestate.com/recipes/578019-bytes-to-human-human-to-bytes-converter/?in=user-4178764.

    >>> bytes2human(10000)
    '9.8K'
    >>> bytes2human(100001221)
    '95.4M'
    )	ÚBÚKÚMÚGÚTÚPÚEÚZÚYr€   Né
   r   )ÚsymbolrÕ   )Ú	enumerateÚreversedÚabsr,  ÚlocalsÚdict)Únr  ÚsymbolsÚprefixr¥  ÚsrÎ  rÕ   s           r†   rU   rU   1  sÉ   € ð <€GØ€FÝ˜' ! " "œ+Ñ&Ô&ð &ð &‰ˆˆ1Ø˜!˜a™% 2™Ñ%ˆˆq‰	ˆ	Ý˜7 1 2 2œ;Ñ'Ô'ð %ð %ˆÝˆq‰6Œ6�V˜F”^Ò#Ð#Ý˜!‘H”H˜v fœ~Ñ-ˆEØ�F™HœHÑ$Ð$Ð$Ð$ð $ð •D ¨¤
°!Ð4Ñ4Ô4Ñ4Ð4r…   c                  ó0   — t           j        d         j        S )z+Return updated psutil.PROCFS_PATH constant.rè   )ÚsysÚmodulesÚPROCFS_PATHr„   r…   r†   Úget_procfs_pathrÜ  D  s   € åŒ;�xÔ Ô,Ð,r…   c                 óD   — |                       t          t          ¬¦  «        S )N)r¶  r·  )Údecoder1   r2   )r×  s    r†   rÞ  rÞ  I  s   € Ø�8Š8�X­mˆ8Ñ<Ô<Ð<r…   c                 óâ   — t           j        dk    rdS 	 dd l}|                      ¦   «         sJ ‚|                     ¦   «          |                     d¦  «        dk    sJ ‚	 dS # t          $ r Y dS w xY w)Nr\   Tr   ÚcolorsF)rO  r¥   ÚcursesÚisattyÚ	setuptermÚtigetnumr6  )Úfilerá  s     r†   rY   rY   R  s‘   € å	„w�$‚€Øˆtð	Øˆˆˆà�{Š{‰}Œ}ÐÐÐØ×ÒÑÔÐØ�Š˜xÑ(Ô(¨1Ò,Ð,Ð,Ð,Ð,ð ˆtøõ ð ð ð Øˆuˆuðøøøs   ”A	A  Á 
A.Á-A.Fc                 óŽ  — t          ¦   «         s| S g }t          ddddddddd	¬
¦	  «	        }d|d<   	 ||         }nE# t          $ r8 d|›dt          |                     ¦   «         ¦  «        › �}t          |¦  «        d‚w xY w|                     |¦  «         |r|                     d¦  «         dd                     |¦  «        › d| › d�S )z*Return an highlighted version of 'string'.Ú34Ú33Ú30Ú32Ú37Ú36Ú91Ú35Ú93)	ÚblueÚbrownÚdarkgreyÚgreenÚgreyÚ	lightblueÚredÚvioletÚyellowÚ29Núinvalid color z; choose amongst Ú1z[ú;Úmz[0m)rY   rÓ  r5  Úlistr•  rg  rŸ  r  )r×  ÚcolorÚboldÚattrrà  rÿ   s         r†   rX   rX   b  s  € åÑ!Ô!ð ØˆØ€DÝØØØØØØØØØð
ñ 
ô 
€Fð €Fˆ4�Lð(Ø�u”ˆˆøÝð (ð (ð (ØN˜uÐNÐN½¸f¿kºk¹m¼mÑ9LÔ9LÐNÐNˆÝ˜‰oŒo 4Ð'ð(øøøð 	‡K‚K�ÑÔÐØð Ø�Š�CÑÔÐØ.�3—8’8˜D‘>”>Ð.Ð. AÐ.Ð.Ð.Ð.s
   ±: ºAA<c                 óš  — t          ¦   «         st          | |¬¦  «         dS t          r"t          t          | ||¦  «        |¬¦  «         dS ddl}d}|j        j        j        }|j        j        j        }t          dddd¬¦  «        }||d<   	 ||         }nE# t          $ r8 d	|›d
t          |                     ¦   «         ¦  «        ›�}	t          |	¦  «        d‚w xY w|r|dk    r|dz  }|t          j        u rdnd}
|j        |_         ||
¦  «        } |||¦  «         	 t          | |¬¦  «          |||¦  «         dS #  |||¦  «         w xY w)z$Print a colorized version of string.©rå  r   Né   r   é   é   )ró  rö  rñ  rø  rú  z; choose between é   iôÿÿÿiõÿÿÿ)rY   Úprintr   rX   ÚctypesÚwindllÚKernel32ÚGetStdHandleÚSetConsoleTextAttributerÓ  r5  rþ  r•  rg  rÙ  ÚstderrÚc_ulongÚrestype)r×  rÿ  r   rå  r	  ÚDEFAULT_COLORr  r  rà  rÿ   Ú	handle_idÚhandles               r†   rZ   rZ   ~  s¹  € õ  Ñ!Ô!ð !;Ýˆa�dÐÑÔÐÐÐÝ	ð ;Ý�f�Q˜˜tÑ$Ô$¨4Ð0Ñ0Ô0Ð0Ð0Ð0àˆˆˆàˆØ”}Ô-Ô:ˆàŒMÔ"Ô:ð 	 õ ˜A 1¨A°aÐ8Ñ8Ô8ˆØ$ˆˆt‰ð	,Ø˜5”MˆEˆEøÝð 	,ð 	,ð 	,ð, ð ,ð ,Ý˜Ÿš™œÑ'Ô'ð,ð ,ð õ ˜S‘/”/ tÐ+ð	,øøøð ð 	�E˜Q’J�JØ�Q‰JˆEà¥3¤:Ð-Ð-�C�C°3ˆ	Ø%œ~ˆÔØ�˜iÑ(Ô(ˆØÐ ¨Ñ.Ô.Ð.ð	;Ý�!˜$ÐÑÔÐà#Ð# F¨MÑ:Ô:Ð:Ð:Ð:øÐ#Ð# F¨MÑ:Ô:Ð:Ð:øøøs   ÂB ÂACÄD< Ä<E
c                 ó6  — t           r‘ddl}|                     |                     ¦   «         j        ¦  «        \  }}}}}t          | t          ¦  «        r t          | t          ¦  «        rd| › �} nd| ›�} t          d|› d|› d| › �t          j
        ¬¦  «         dS dS )z@If PSUTIL_DEBUG env var is set, print a debug message to stderr.r   Nz	ignoring zpsutil-debug [ú:z]> r  )r	   ÚinspectÚgetframeinfoÚcurrentframeÚf_backÚ
isinstancer6  rT  r  rÙ  r  )rÿ   r  r´  ÚlinenoÚ_Ú_linesÚ_indexs          r†   rW   rW   ¦  sÑ   € åð 
Øˆˆˆà+2×+?Ò+?Ø× Ò Ñ"Ô"Ô)ñ,
ô ,
Ñ(ˆˆv�q˜& &õ �c�9Ñ%Ô%ð 	*Ý˜#�wÑ'Ô'ð *à' #Ð'Ð'��à) #Ð)Ð)�ÝØ5˜UÐ5Ð5 VÐ5Ð5°Ð5Ð5½C¼Jð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r…   r  )rÂ  )NF)†r  rê   ÚenumrA  rO  rX  rP  rÙ  r‰  r€  r   r   r   r   r   ÚImportErrorr   ÚboolÚgetenvr	   Úobjectr¼  Ú__all__r¥   r   r   ÚplatformÚ
startswithr   r   r   r
   r   r   r   r   ÚAIXr'   r(   r$   r)   r+   r/   r#   r-   r.   r%   r&   r,   r*   r0   r   r   r   r   r   r   r   r   r   r   r   r   ÚIntEnumr~   ÚglobalsÚupdateÚ__members__rˆ   Úgetfilesystemencodingr1   Úgetfilesystemencodeerrorsr2   rD   r@   r>   r?   rA   rE   r<   rB   rC   r=   r½   rÁ   rÅ   rÈ   r4   r9   r:   r;   r6   r7   r8   r5   r3   rØ   rF   r6  rç   r  r  r#  r'  rL   rI   rM  rH   rK   rM   rJ   rN   rO   rV   rz  rG   r‡  rP   r®  r@  r¬  r³  rR   rQ   rS   rT   rU   rÜ  rÞ  ÚstdoutrY   rX   rZ   rW   r„   r…   r†   ú<module>r/     s4
  ðð
ð ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðØÐÐÐÐÐÐøØð ð ð Ø€H€H€HðøøøðØÐÐÐÐÐÐøØð ð ð Ø€G€G€Gðøøøð ˆt�I�B”I˜nÑ-Ô-Ñ.Ô.€Øˆ6‰8Œ8€ðð ð €ðL 	Œ�7Ò€Ø
Œ'�TŠ/€ØŒ×Ò Ñ(Ô(€ØŒ×Ò Ñ)Ô)€Ø€Ø
Œ,×
!Ò
!Ð"<Ñ
=Ô
=€Ø
Œ,×
!Ò
! )Ñ
,Ô
,€Ø	Œ×	 Ò	  Ñ	*Ô	*€ØÐ"�Ð"˜F€ØŒ×ÒÐ 4Ñ5Ô5€Ø	„l×Ò˜eÑ$Ô$€ð €Ø€Ø Ð Ø€Ø$Ð Ø€Ø€ØÐ Ø€Ø€Ø€Ø€ØÐ Ø€ð !Ð Ø€Ø€Ø€Ø€Ø€Ø€
Ø€Ø€Ø€Ø€Ø€	ðð ð ð ð �”ñ ô ð ð €�	„	× Ò �Ô&Ñ 'Ô 'Ð 'ðð ð ð ð �$”,ñ ô ð ð
 €�	„	× Ò �Ô(Ñ )Ô )Ð )ð %ˆ3Ô$Ñ&Ô&€Ø-�Ô-Ñ/Ô/€ð 	ˆ
�7ð %ð %ð %ñ 	&ô 	&€ð ˆZ˜Ð&JÐ&JÐ&JÑKÔK€
à
ˆ*�Yð !<ð !<ð !<ñ =ô =€ð ˆJ�{Ð$NÐ$NÐ$NÑOÔO€	à	ˆ�Hð 4ð 4ð 4ñ 
5ô 
5€ð
 	ˆ
�7ÐJÐJÐJÑKÔK€àˆ
�7ð .ð .ð .ñ 	/ô 	/€ð ˆ:�jØJÐJÐJñLô L€ð ˆJ�{ØBÐBÐBñDô D€	ð ˆJØÐNÐNÐNñPô P€	ð ˆ:�jÐ";Ð";Ð";Ñ<Ô<€à
ˆ*ØÐ7Ð7Ð7ñ9ô 9€ð ˆ:�jÐ"JÐ"JÐ"JÑKÔK€à€z�&˜7 IÐ.Ñ/Ô/€ð ˆJØÐGÐGÐGñô €	ð ˆJ�{ V¨T NÑ3Ô3€	à
ˆ*�YÐ BÐ BÐ BÑ
CÔ
C€àˆ
�7Ð:Ð:Ð:Ñ;Ô;€àˆ
�7Ð:Ð:Ð:Ñ;Ô;€à€jØ	ÐEÐEÐEñô €ð ˆ*�Y ¨GÐ 4Ñ
5Ô
5€à	ˆ�H˜{¨MÐ:Ñ	;Ô	;€àˆ
ØÐAÐAÐAñ	ô 	€ð
 €z�&˜4 ˜.Ñ)Ô)€ð �h Ð(¨;¸
Ð*CÐDØ�hÐ + Ð/ØˆY˜˜Ð&Ø�hÐ * Ð.ØˆY˜˜Ð%Ø�xÐ  ;°
Ð";Ð<Øˆi˜+ zÐ2Ð3Øˆj˜;¨
Ð3Ð4ð	ð 	€	ð ÐØ×ÒØ�˜k˜]Ð+Ø�˜j˜\Ð*ðð ñ ô ð ð
 Ð˜uÐØ×Ò�f ˜y¨;¸
Ð*CÐDÐEÑFÔFÐFð>ð >ð >ð >ð >ˆIñ >ô >ð >ðBAð Að Að Að A�Eñ Aô Að Að"Lð Lð Lð Lð L�Mñ Lô Lð Lð&Að Að Að Að A�5ñ Aô Að AðEð Eð Eð Eð E�Uñ Eô Eð Eð.	ð 	ð 	ð 	ð*ð *ð *ðZDð Dð DðN(ð (ð (ðð ð ð 	ð	ð 	ñ 	„ð	ðð ð ð8ð ð ðð ð ð@ð @ð @ð @ð&
ð 
ð 
ð,ð ð ð.TDð TDð TDð TDð TDñ TDô TDð TDðn)ð )ð )ð €l�n„n€Øœ?€Ô Øœ.€Ô ð "Ð ð>ð >ð >ðð ð ð4 !¨	ð ð ð ð ð" "ð <ð <ð <ð <ð
5ð 5ð 5ð 5ð&-ð -ð -ð
=ð =ð =ð 	Ø!œjð ð ð ñ 	„ðð/ð /ð /ð /ð: ˜ C¤Jð%;ð %;ð %;ð %;ðP
ð 
ð 
ð 
ð 
s$   Á A ÁAÁAÁA ÁA&Á%A&