§
    (¶ÕiCº  ã                   ót  — g 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m	Z	 ddl
mZ ddlmZ ddlmZmZ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Ze                      d¦  «         n# e$ r dZY nw xY wd„ Z ej        ej        e¦  «         d„ dD ¦   «         Zd„ ZeD ]Z ej        ee¦  «         Œ[[ G d„ de¦  «        Z di fd„Z!d„ Z" G d„ de#¦  «        Z$d„ Z%d„ Z& G d„ de¦  «        Z' G d„ d e¦  «        Z(ej)        ej*        fej+        ej,        fd!œZ- G d"„ d#e¦  «        Z. G d$„ d%e/¦  «        Z0 G d&„ d'e¦  «        Z1d(„ Z2i fd)„Z3	 	 dcd*„Z4 G d+„ d,e¦  «        Z5 G d-„ d.e¦  «        Z6ddd/„Z7 G d0„ d1e1¦  «        Z8 G d2„ d3e1¦  «        Z9 G d4„ d5e9¦  «        Z: G d6„ d7e1¦  «        Z; G d8„ d9e1¦  «        Z< G d:„ d;e1¦  «        Z= G d<„ d=e1¦  «        Z> e3d>d?¦  «        Z? G d@„ dAe?¦  «        Z@ e3dBdC¦  «        ZAdDdEieA_B         e3dFdG¦  «        ZC e3dHdI¦  «        ZDdJdJdJdEdEdKœeD_B         G dL„ dHeD¦  «        ZE G dM„ dNe.¦  «        ZFeF                     dOejG        ¦  «         eF                     dPejG        ¦  «         eF                     dQejH        e;¦  «         eF                     dRejI        e9¦  «         eF                     dSejJ        e9¦  «         eF                     dTejK        e9¦  «         eF                     dUejL        e9¦  «         eF                     dVejM        e:¦  «         eF                     dWejN        e<¦  «         eF                     dXejO        eE¦  «         eF                     dYePe@¦  «         eF                     dZeQeA¦  «         eF                     d.e6e>¦  «         eF                     d[e7eC¦  «         eF                     d,e5e=¦  «         eF                     dEe8d¬\¦  «         eF                     dJd¬]¦  «         er+ G d^„ d_¦  «        ZR G d`„ dae'¦  «        ZS G db„ de.¦  «        ZTdS dS )e)ÚBaseManagerÚSyncManagerÚ	BaseProxyÚTokené    N)Úgetpid)Ú
format_excé   )Ú
connection)Ú	reductionÚget_spawning_popenÚProcessError)Úpool)Úprocess)Úutil)Úget_context)Úshared_memoryTÚSharedMemoryManagerFc                 óP   — t           j         | j        |                      ¦   «         ffS ©N)ÚarrayÚtypecodeÚtobytes)Úas    ú//usr/lib/python3.11/multiprocessing/managers.pyÚreduce_arrayr   /   s   € ÝŒ;˜œ Q§Y¢Y¡[¤[Ð1Ð1Ð1ó    c           	      óX   — g | ]'}t           t          i |¦  «        ¦   «         ¦  «        ‘Œ(S © )ÚtypeÚgetattr©Ú.0Únames     r   ú
<listcomp>r$   3   s3   € ÐNÐNÐN¨D�dÐ$•7˜2˜tÑ$Ô$Ñ&Ô&Ñ'Ô'ÐNÐNÐNr   )ÚitemsÚkeysÚvaluesc                 ó0   — t           t          | ¦  «        ffS r   )Úlist©Úobjs    r   Úrebuild_as_listr,   4   s   € Ý•$�s‘)”)�ÐÐr   c                   ó.   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ ZdS )r   z3
    Type to uniquely identify a shared object
    ©ÚtypeidÚaddressÚidc                 ó2   — |||c| _         | _        | _        d S r   r.   )Úselfr/   r0   r1   s       r   Ú__init__zToken.__init__D   s   € Ø06¸ÀÐ,ˆŒ�d”l D¤G G Gr   c                 ó*   — | j         | j        | j        fS r   r.   ©r3   s    r   Ú__getstate__zToken.__getstate__G   s   € Ø”˜Tœ\¨4¬7Ð3Ð3r   c                 ó0   — |\  | _         | _        | _        d S r   r.   ©r3   Ústates     r   Ú__setstate__zToken.__setstate__J   s   € Ø/4Ñ,ˆŒ�d”l D¤G G Gr   c                 óP   — | j         j        ›d| j        ›d| j        ›d| j        ›d�S )Nz(typeid=z
, address=z, id=ú))Ú	__class__Ú__name__r/   r0   r1   r6   s    r   Ú__repr__zToken.__repr__M   s4   € à”Ô'Ð'Ð'¨¬¨¨°d´l°l°lÀDÄGÀGÀGðMð 	Mr   N)	r?   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r4   r7   r;   r@   r   r   r   r   r   >   si   € € € € € ðð ð ,€IðEð Eð Eð4ð 4ð 4ð5ð 5ð 5ðMð Mð Mð Mð Mr   r   r   c                 ó’   — |                       ||||f¦  «         |                      ¦   «         \  }}|dk    r|S t          ||¦  «        ‚)zL
    Send a message to manager using connection `c` and return response
    ú#RETURN)ÚsendÚrecvÚconvert_to_error)Úcr1   Ú
methodnameÚargsÚkwdsÚkindÚresults          r   ÚdispatchrP   U   sP   € ð ‡F‚FˆB�
˜D $Ð'Ñ(Ô(Ð(Ø—6’6‘8”8�L€Dˆ&ØˆyÒÐØˆÝ
˜4 Ñ
(Ô
(Ð(r   c           	      ó8  — | dk    r|S | dv rmt          |t          ¦  «        s1t          d                     || t	          |¦  «        ¦  «        ¦  «        ‚| dk    rt          d|z  ¦  «        S t          |¦  «        S t          d                     | ¦  «        ¦  «        S )Nú#ERROR)ú
#TRACEBACKú#UNSERIALIZABLEz.Result {0!r} (kind '{1}') type is {2}, not strrT   zUnserializable message: %s
zUnrecognized message type {!r})Ú
isinstanceÚstrÚ	TypeErrorÚformatr   ÚRemoteErrorÚ
ValueError)rN   rO   s     r   rI   rI   _   s¯   € ØˆxÒÐØˆØ	Ð2Ð	2Ð	2Ý˜&¥#Ñ&Ô&ð 	1ÝØ@×GÒGØ˜D¥$ v¡,¤,ñ0ô 0ñ1ô 1ð 1ð Ð$Ò$Ð$ÝÐ=ÀÑFÑGÔGÐGå˜vÑ&Ô&Ð&åÐ:×AÒAÀ$ÑGÔGÑHÔHÐHr   c                   ó   — e Zd Zd„ ZdS )rY   c                 óB   — dt          | j        d         ¦  «        z   dz   S )NzM
---------------------------------------------------------------------------
r   zK---------------------------------------------------------------------------)rV   rL   r6   s    r   Ú__str__zRemoteError.__str__o   s    € Ø$¥s¨4¬9°Q¬<Ñ'8Ô'8Ñ8¸6ÑAÐBr   N)r?   rA   rB   r]   r   r   r   rY   rY   n   s(   € € € € € ðCð Cð Cð Cð Cr   rY   c                 ó–   — g }t          | ¦  «        D ]6}t          | |¦  «        }t          |¦  «        r|                     |¦  «         Œ7|S )z4
    Return a list of names of methods of `obj`
    )Údirr    ÚcallableÚappend)r+   Útempr#   Úfuncs       r   Úall_methodsrd   v   sS   € ð €DÝ�C‘”ð ð ˆÝ�s˜DÑ!Ô!ˆÝ�D‰>Œ>ð 	Ø�KŠK˜ÑÔÐøØ€Kr   c                 ó4   — d„ t          | ¦  «        D ¦   «         S )zP
    Return a list of names of methods of `obj` which do not start with '_'
    c                 ó*   — g | ]}|d          dk    ¯|‘ŒS )r   Ú_r   r!   s     r   r$   z"public_methods.<locals>.<listcomp>…   s!   € Ð@Ð@Ð@�T°°a´¸C²°ˆD°°°r   )rd   r*   s    r   Úpublic_methodsrh   �   s!   € ð AÐ@�[¨Ñ-Ô-Ð@Ñ@Ô@Ð@r   c                   ó’   — e Zd ZdZg d¢Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ ZeeedœZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚServerzM
    Server class which runs in a process controlled by a manager object
    )	ÚshutdownÚcreateÚaccept_connectionÚget_methodsÚ
debug_infoÚnumber_of_objectsÚdummyÚincrefÚdecrefc                 ó”  — t          |t          ¦  «        s0t          d                     |t	          |¦  «        ¦  «        ¦  «        ‚|| _        t          j        |¦  «        | _        t          |         \  }} ||d¬¦  «        | _
        | j
        j        | _        ddi| _        i | _        i | _        t          j        ¦   «         | _        d S )Nz&Authkey {0!r} is type {1!s}, not bytesé   )r0   ÚbacklogÚ0©Nr   )rU   ÚbytesrW   rX   r   Úregistryr   ÚAuthenticationStringÚauthkeyÚlistener_clientÚlistenerr0   Ú	id_to_objÚid_to_refcountÚid_to_local_proxy_objÚ	threadingÚLockÚmutex)r3   rz   r0   r|   Ú
serializerÚListenerÚClients          r   r4   zServer.__init__’   sÁ   € Ý˜'¥5Ñ)Ô)ð 	-ÝØ8×?Ò?Ø�T '™]œ]ñ,ô ,ñ-ô -ð -ð !ˆŒÝÔ3°GÑ<Ô<ˆŒÝ*¨:Ô6Ñˆ�&ð !˜¨¸"Ð=Ñ=Ô=ˆŒØ”}Ô,ˆŒà˜zÐ*ˆŒØ ˆÔØ%'ˆÔ"Ý”^Ñ%Ô%ˆŒ
ˆ
ˆ
r   c                 ó^  — t          j        ¦   «         | _        | t          j        ¦   «         _        	 t          j        | j        ¬¦  «        }d|_        | 	                    ¦   «          	 | j         
                    ¦   «         s3| j                             d¦  «         | j         
                    ¦   «         ¯3n# t          t          f$ r Y nw xY wt          j        t          j        k    r@t#          j        d¦  «         t          j        t          _        t          j        t          _        t          j        d¦  «         dS # t          j        t          j        k    r@t#          j        d¦  «         t          j        t          _        t          j        t          _        t          j        d¦  «         w xY w)z(
        Run the server forever
        )ÚtargetTr	   zresetting stdout, stderrr   N)r‚   ÚEventÚ
stop_eventr   Úcurrent_processÚ_manager_serverÚThreadÚaccepterÚdaemonÚstartÚis_setÚwaitÚKeyboardInterruptÚ
SystemExitÚsysÚstdoutÚ
__stdout__r   ÚdebugÚ
__stderr__ÚstderrÚexit)r3   r�   s     r   Úserve_foreverzServer.serve_forever¤   sP  € õ $œ/Ñ+Ô+ˆŒØ48�ÔÑ!Ô!Ô1ð	Ý Ô'¨t¬}Ð=Ñ=Ô=ˆHØ"ˆHŒOØ�NŠNÑÔÐðØœ/×0Ò0Ñ2Ô2ð ,Ø”O×(Ò(¨Ñ+Ô+Ð+ð œ/×0Ò0Ñ2Ô2ð ,øøå%¥zÐ2ð ð ð Ø�ðøøøõ Œz�Sœ^Ò+Ð+Ý”
Ð5Ñ6Ô6Ð6Ý œ^•”
Ý œ^•”
ÝŒH�Q‰KŒKˆKˆKˆKøõ	 Œz�Sœ^Ò+Ð+Ý”
Ð5Ñ6Ô6Ð6Ý œ^•”
Ý œ^•”
ÝŒH�Q‰KŒKˆKˆKøøøs1   ²5D< Á(AB5 Â4D< Â5C	ÃD< ÃC	Ã	D< Ä<A0F,c                 óÊ   — 	 	 | j                              ¦   «         }n# t          $ r Y Œ(w xY wt          j        | j        |f¬¦  «        }d|_        |                     ¦   «          Œc)NT©r‰   rL   )r~   ÚacceptÚOSErrorr‚   rŽ   Úhandle_requestr�   r‘   )r3   rJ   Úts      r   r�   zServer.accepterº   st   € ð	ðØ”M×(Ò(Ñ*Ô*��øÝð ð ð Ø�ðøøøåÔ ¨Ô(;À1À$ÐGÑGÔGˆAØˆAŒHØ�GŠG‰IŒIˆIð	s   ƒ �
*©*c                 óÞ  — d }	 t          j        || j        ¦  «         t          j        || j        ¦  «         |                     ¦   «         }|\  }}}}|| j        v sJ d|z  ¦   «         ‚t          | |¦  «        }	  ||g|¢R i |¤Ž}d|f}	n@# t          $ r dt          ¦   «         f}	Y n$w xY w# t          $ r dt          ¦   «         f}	Y nw xY w	 | 	                    |	¦  «         d S # t          $ r}
	 | 	                    dt          ¦   «         f¦  «         n# t          $ r Y nw xY wt          j        d|	¦  «         t          j        d|¦  «         t          j        d|
¦  «         Y d }
~
d S d }
~
ww xY w)Nz%r unrecognizedrF   rS   zFailure to send message: %rz ... request was %rú ... exception was %r)r
   Údeliver_challenger|   Úanswer_challengerH   Úpublicr    Ú	Exceptionr   rG   r   Úinfo)r3   rJ   ÚrequestÚignoreÚfuncnamerL   rM   rc   rO   ÚmsgÚes              r   Ú_handle_requestzServer._handle_requestÄ   sÖ  € Øˆð	*ÝÔ(¨¨D¬LÑ9Ô9Ð9ÝÔ'¨¨4¬<Ñ8Ô8Ð8Ø—f’f‘h”hˆGØ+2Ñ(ˆF�H˜d DØ˜tœ{Ð*Ð*Ð*Ð,=ÀÑ,HÑ*Ô*Ð*Ý˜4 Ñ*Ô*ˆDð*Ø˜˜aÐ/ $Ð/Ð/Ð/¨$Ð/Ð/�ð ! &Ð)��øõ ð 3ð 3ð 3Ø#¥Z¡\¤\Ð2���ð3øøøøõ ð 	/ð 	/ð 	/Ø¥¡¤Ð.ˆCˆCˆCð	/øøøð		2Ø�FŠF�3‰KŒKˆKˆKˆKøÝð 	2ð 	2ð 	2ðØ—’˜¥j¡l¤lÐ3Ñ4Ô4Ð4Ð4øÝð ð ð Ø�ðøøøåŒIÐ3°SÑ9Ô9Ð9ÝŒIÐ+¨WÑ5Ô5Ð5ÝŒIÐ-¨qÑ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øøøøð	2øøøs[   „A5B+ Á:B ÂB(Â'B(Â+CÃCÃC# Ã#
E,Ã.#DÄE'Ä
DÄE'ÄDÄAE'Å'E,c                 ó®   — 	 |                       |¦  «         n# t          $ r Y nw xY w|                     ¦   «          dS # |                     ¦   «          w xY w)z)
        Handle a new connection
        N)r°   r•   Úclose©r3   Úconns     r   r¢   zServer.handle_requestâ   sc   € ð	Ø× Ò  Ñ&Ô&Ð&Ð&øÝð 	ð 	ð 	àˆDð	øøøð �JŠJ‰LŒLˆLˆLˆLøˆD�JŠJ‰LŒLˆLˆLøøøs   ‚ —> ˜
%¢> ¤%¥> ¾Ac                 óB  — t          j        dt          j        ¦   «         j        ¦  «         |j        }|j        }| j        }| j         	                    ¦   «         �sÄ	 dx}} |¦   «         }|\  }}}	}
	 ||         \  }}}n:# t          $ r-}	 | j        |         \  }}}n# t          $ r |‚w xY wY d}~nd}~ww xY w||vr%t          d|›dt          |¦  «        ›d|›�¦  «        ‚t          ||¦  «        }	  ||	i |
¤Ž}|o|                     |d¦  «        }|r7|                      |||¦  «        \  }}t#          || j        |¦  «        }d||ff}n d|f}n# t&          $ r}d|f}Y d}~nd}~ww xY wnÊ# t          $ rX |€d	t)          ¦   «         f}nB	 | j        |         } || |||g|	¢R i |
¤Ž}d|f}n # t&          $ r d	t)          ¦   «         f}Y nw xY wY nit,          $ rB t          j        d
t          j        ¦   «         j        ¦  «         t/          j        d¦  «         Y nt&          $ r d	t)          ¦   «         f}Y nw xY w	 	  ||¦  «         n)# t&          $ r  |dt)          ¦   «         f¦  «         Y nw xY wn”# t&          $ r‡}t          j        dt          j        ¦   «         j        ¦  «         t          j        d|¦  «         t          j        d|¦  «         |                     ¦   «          t/          j        d¦  «         Y d}~nd}~ww xY w| j         	                    ¦   «         �¯ÂdS dS )zQ
        Handle requests from the proxies in a particular process/thread
        z$starting server thread to service %rNzmethod z of z object is not in exposed=ú#PROXYrF   rR   rS   z$got EOF -- exiting thread serving %rr   rT   zexception in thread serving %rz ... message was %rr¥   r	   )r   r™   r‚   Úcurrent_threadr#   rH   rG   r   r‹   r’   ÚKeyErrorr�   ÚAttributeErrorr   r    Úgetrl   r   r0   r©   r   Úfallback_mappingÚEOFErrorr–   rœ   rª   r²   )r3   r´   rH   rG   r   rK   r+   r«   ÚidentrL   rM   ÚexposedÚ	gettypeidÚkeÚfunctionÚresr/   ÚridentÚrexposedÚtokenr®   r¯   Úfallback_funcrO   s                           r   Úserve_clientzServer.serve_clientî   sD  € õ 	Œ
Ð9ÝÔ+Ñ-Ô-Ô2ñ	4ô 	4ð 	4ð ŒyˆØŒyˆØ”Nˆ	à”/×(Ò(Ñ*Ô*ñ D	ð53Ø#'Ð'�
˜SØ˜$™&œ&�Ø07Ñ-��z 4¨ð!Ø.7¸Ô.>Ñ+�C˜ ) )øÝð !ð !ð !ð!à Ô6°uÔ=ñ 0˜˜W i iøå#ð !ð !ð !Ø ˜ð!øøøð '0 i i i iøøøøð!øøøð  WÐ,Ð,Ý(˜.à#˜˜¥T¨#¡Y¤Y Y Y°°ð9ñô ð õ
 # 3¨
Ñ3Ô3�ð/Ø"˜( DÐ1¨DÐ1Ð1�Cð 'ÐJ¨9¯=ª=¸ÀTÑ+JÔ+J�FØð /Ø+/¯;ª;°t¸VÀSÑ+IÔ+IÑ(˜ Ý % f¨d¬l¸FÑ CÔ C˜Ø'¨(°EÐ):Ð;˜˜à(¨#Ð.˜˜øõ !ð (ð (ð (Ø# Q˜-�C�C�C�C�C�Cøøøøð(øøøøøõ "ð ;ð ;ð ;ØÐ%Ø'­©¬Ð6�C�Cð;Ø(,Ô(=¸jÔ(I˜Ø!. Ø  $¨¨sð"Ø59ð"ð "ð "Ø=Að"ð "˜ð  )¨&Ð1˜˜øÝ$ð ;ð ;ð ;Ø+­Z©\¬\Ð:˜˜˜ð;øøøøøõ ð ð ð Ý”
ÐAÝ$Ô3Ñ5Ô5Ô:ñ<ô <ð <å”˜‘”���åð 3ð 3ð 3Ø#¥Z¡\¤\Ð2���ð3øøøðð<Ø�D˜‘I”I�I�IøÝ ð <ð <ð <Ø�DÐ+­Z©\¬\Ð:Ñ;Ô;Ð;Ð;Ð;ð<øøøøøåð ð ð Ý”	Ð:Ý!Ô0Ñ2Ô2Ô7ñ9ô 9ð 9å”	Ð/°Ñ5Ô5Ð5Ý”	Ð1°1Ñ5Ô5Ð5Ø—
’
‘”�Ý”˜‘”������øøøøðøøøð} ”/×(Ò(Ñ*Ô*ñ D	ð D	ð D	ð D	ð D	sá   ÁE- Á2A? Á>E- Á?
B6Â
BÂB1ÂB)Â)B1Â,E- Â1B6Â6<E- Ã3E Ã;AE- Å
E)ÅE$ÅE- Å$E)Å)E- Å-H4Æ F,Æ+H4Æ,G	ÇH4ÇG	Ç	H4ÇAH4ÈH4È3H4È9I ÉI/ É#I+É(I/ É*I+É+I/ É/
L É9A=K;Ë;L c                 ó   — |S r   r   ©r3   r´   r½   r+   s       r   Úfallback_getvaluezServer.fallback_getvalue?  s   € Øˆ
r   c                 ó    — t          |¦  «        S r   ©rV   rÉ   s       r   Úfallback_strzServer.fallback_strB  s   € Ý�3‰xŒxˆr   c                 ó    — t          |¦  «        S r   )ÚreprrÉ   s       r   Úfallback_reprzServer.fallback_reprE  s   € Ý�C‰yŒyÐr   )r]   r@   ú	#GETVALUEc                 ó   — d S r   r   ©r3   rJ   s     r   rq   zServer.dummyN  s   € Øˆr   c                 óš  — | j         5  g }t          | j                             ¦   «         ¦  «        }|                     ¦   «          |D ]W}|dk    rO|                     d|›d| j        |         ›dt          | j        |         d         ¦  «        dd…         ›�¦  «         ŒXd                     |¦  «        cddd¦  «         S # 1 swxY w Y   dS )	zO
        Return some info --- useful to spot problems with refcounting
        rw   z  z:       refcount=z
    r   NéK   ú
)	r„   r)   r€   r&   Úsortra   rV   r   Újoin)r3   rJ   rO   r&   r½   s        r   ro   zServer.debug_infoQ  s%  € ð
 ŒZð 		%ð 		%ØˆFÝ˜Ô+×0Ò0Ñ2Ô2Ñ3Ô3ˆDØ�IŠI‰KŒKˆKØð Hð H�Ø˜C’<�<Ø—M’M�MØ#( 5 5¨$Ô*=¸eÔ*DÐ*DÐ*DÝ#& t¤~°eÔ'<¸QÔ'?Ñ#@Ô#@ÀÀ"ÀÔ#EÐ#Eð#Gñ Hô Hð Høð —9’9˜VÑ$Ô$ð		%ð 		%ð 		%ð 		%ñ 		%ô 		%ð 		%ð 		%ð 		%ð 		%ð 		%ð 		%øøøð 		%ð 		%ð 		%ð 		%ð 		%ð 		%s   ˆB+C Ã CÃCc                 ó*   — t          | j        ¦  «        S )z*
        Number of shared objects
        )Úlenr€   rÓ   s     r   rp   zServer.number_of_objectsa  s   € õ
 �4Ô&Ñ'Ô'Ð'r   c                 ó  — 	 t          j        d¦  «         |                     d¦  «         n#  ddl}|                     ¦   «          Y nxY w| j                             ¦   «          dS # | j                             ¦   «          w xY w)z'
        Shutdown this process
        z!manager received shutdown message©rF   Nr   N)r   r™   rG   Ú	tracebackÚ	print_excr‹   Úset)r3   rJ   rÝ   s      r   rk   zServer.shutdownh  s�   € ð	"ÝŒJÐ:Ñ;Ô;Ð;Ø�FŠFÐ$Ñ%Ô%Ð%Ð%øð	"ØÐÐÐØ×ÒÑ!Ô!Ð!Ð!Ð!øøøàŒO×ÒÑ!Ô!Ð!Ð!Ð!øˆDŒO×ÒÑ!Ô!Ð!Ð!øøøs   ‚), «A& ¬AÁA& Á&Bc          	      ó¸  — | j         5  | j        |         \  }}}}|€-|st          |¦  «        dk    rt          d¦  «        ‚|d         }	n ||i |¤Ž}	|€t	          |	¦  «        }|�dt          |t          ¦  «        s0t          d                     |t          |¦  «        ¦  «        ¦  «        ‚t          |¦  «        t          |¦  «        z   }dt          |	¦  «        z  }
t          j        d||
¦  «         |	t          |¦  «        |f| j        |
<   |
| j        vr
d| j        |
<   ddd¦  «         n# 1 swxY w Y   |                      ||
¦  «         |
t%          |¦  «        fS )z>
        Create a new shared object and return its id
        Nr	   z4Without callable, must have one non-keyword argumentr   z,Method_to_typeid {0!r}: type {1!s}, not dictz%xz&%r callable returned object with id %r)r„   rz   rÚ   rZ   rh   rU   ÚdictrW   rX   r   r)   r1   r   r™   rß   r   r€   rr   Útuple)r3   rJ   r/   rL   rM   r`   r¾   Úmethod_to_typeidÚ	proxytyper+   r½   s              r   rl   zServer.createu  sÎ  € ð ŒZð 	/ð 	/à”m FÔ+ñ ;ˆH�gÐ/°ð ÐØð P�C ™IœI¨šN˜NÝ$ØNñPô Pð Pà˜1”g��à�h Ð-¨Ð-Ð-�àˆÝ(¨Ñ-Ô-�ØÐ+Ý!Ð"2µDÑ9Ô9ð GÝ#ØF×MÒMØ,­dÐ3CÑ.DÔ.DñFô FñGô Gð Gõ ˜w™-œ-­$Ð/?Ñ*@Ô*@Ñ@�à�2˜c™7œ7‘NˆEåŒJÐ?ÀÈÑOÔOÐOà%(­#¨g©,¬,Ð8HÐ$IˆDŒN˜5Ñ!Ø˜DÔ/Ð/Ð/Ø-.�Ô# EÑ*ð7	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð: 	�Š�A�uÑÔÐØ•e˜G‘n”nÐ$Ð$s   ˆDD*Ä*D.Ä1D.c                 óL   — t          | j        |j                 d         ¦  «        S )zL
        Return the methods of the shared object indicated by token
        r	   )râ   r   r1   )r3   rJ   rÅ   s      r   rn   zServer.get_methods™  s    € õ �T”^ E¤HÔ-¨aÔ0Ñ1Ô1Ð1r   c                 óŠ   — |t          j        ¦   «         _        |                     d¦  «         |                      |¦  «         dS )z=
        Spawn a new thread to serve this connection
        rÜ   N)r‚   r·   r#   rG   rÇ   )r3   rJ   r#   s      r   rm   zServer.accept_connectionŸ  sB   € ð +/�	Ô Ñ"Ô"Ô'Ø	�ŠÐ Ñ!Ô!Ð!Ø×Ò˜!ÑÔÐÐÐr   c                 óD  — | j         5  	 | j        |xx         dz  cc<   nh# t          $ r[}|| j        v rFd| j        |<   | j        |         | j        |<   | j        |         \  }}}t          j        d|¦  «         n|‚Y d }~nd }~ww xY wd d d ¦  «         d S # 1 swxY w Y   d S )Nr	   z&Server re-enabled tracking & INCREF %r)r„   r€   r¸   r�   r   r   r™   )r3   rJ   r½   rÀ   r+   r¾   r¿   s          r   rr   zServer.incref§  s(  € ØŒZð 	ð 	ðØÔ# EÐ*Ð*Ô*¨aÑ/Ð*Ð*Ñ*Ð*øÝð ð ð ð
 ˜DÔ6Ð6Ð6Ø12�DÔ'¨Ñ.àÔ2°5Ô9ð ”N 5Ñ)à.2¬n¸UÔ.CÑ+�C˜ )Ý”JÐGÈÑOÔOÐOÐOà�Hð PÐOÐOÐOÐOøøøøðøøøð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s7   ˆBŠ ŸB 
BªAB Á;BÂ BÂBÂBÂBc           	      ó,  — || j         vr || j        v rt          j        d|¦  «         d S | j        5  | j         |         dk    r:t          d                     || j        |         | j         |         ¦  «        ¦  «        ‚| j         |xx         dz  cc<   | j         |         dk    r| j         |= d d d ¦  «         n# 1 swxY w Y   || j         vrId| j        |<   t          j        d|¦  «         | j        5  | j        |= d d d ¦  «         d S # 1 swxY w Y   d S d S )NzServer DECREF skipping %rr   z+Id {0!s} ({1!r}) has refcount {2:n}, not 1+r	   )Nr   Nzdisposing of obj with id %r)r€   r�   r   r™   r„   ÚAssertionErrorrX   r   )r3   rJ   r½   s      r   rs   zServer.decref¹  sÐ  € Ø˜Ô+Ð+Ð+Ø�TÔ/Ð/Ð/ÝŒJÐ2°EÑ:Ô:Ð:ØˆFàŒZð 	/ð 	/ØÔ" 5Ô)¨QÒ.Ð.Ý$ØA×HÒHØ˜tœ~¨eÔ4ØÔ+¨EÔ2ñ4ô 4ñ5ô 5ð 5ð Ô Ð&Ð&Ô&¨!Ñ+Ð&Ð&Ñ&ØÔ" 5Ô)¨QÒ.Ð.ØÔ'¨Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð ˜Ô+Ð+Ð+ð %5ˆDŒN˜5Ñ!ÝŒJÐ4°eÑ<Ô<Ð<Ø”ð *ð *Ø”N 5Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *ð ,Ð+s$   ±A:B7Â7B;Â>B;Ã1	DÄDÄDN)r?   rA   rB   rC   r¨   r4   r�   r�   r°   r¢   rÇ   rÊ   rÍ   rÐ   r»   rq   ro   rp   rk   rl   rn   rm   rr   rs   r   r   r   rj   rj   ‹   s]  € € € € € ðð ðNð Nð N€Fð&ð &ð &ð$ð ð ð,ð ð ð2ð 2ð 2ð<
ð 
ð 
ðOð Oð Oðbð ð ðð ð ðð ð ð Ø Ø%ð
ð 
Ððð ð ð%ð %ð %ð (ð (ð (ð"ð "ð "ð"%ð "%ð "%ðH2ð 2ð 2ðð ð ðð ð ð$*ð *ð *ð *ð *r   rj   c                   ó    — e Zd ZdgZdZdZdZdS )ÚStateÚvaluer   r	   é   N)r?   rA   rB   rD   ÚINITIALÚSTARTEDÚSHUTDOWNr   r   r   rë   rë   Ù  s$   € € € € € Ø�	€IØ€GØ€GØ€H€H€Hr   rë   )ÚpickleÚ	xmlrpclibc                   óÈ   — e Zd ZdZi ZeZ	 	 dddœd„Zd„ Zd„ Z	dd
„Z
e	 dd„¦   «         Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Ze	 	 dd„¦   «         ZdS )r   z!
    Base class for managers
    Nrñ   g      ð?)Úshutdown_timeoutc                óF  — |€t          j        ¦   «         j        }|| _        t          j        |¦  «        | _        t          ¦   «         | _        t          j        | j        _	        || _
        t          |         \  | _        | _        |pt          ¦   «         | _        || _        d S r   )r   rŒ   r|   Ú_addressr{   Ú_authkeyrë   Ú_staterî   rì   Ú_serializerr}   Ú	_ListenerÚ_Clientr   Ú_ctxÚ_shutdown_timeout)r3   r0   r|   r…   Úctxrô   s         r   r4   zBaseManager.__init__ó  s�   € àˆ?ÝÔ-Ñ/Ô/Ô7ˆGØˆŒÝÔ4°WÑ=Ô=ˆŒÝ‘g”gˆŒÝ!œMˆŒÔØ%ˆÔÝ'6°zÔ'BÑ$ˆŒ˜œØÐ(�;™=œ=ˆŒ	Ø!1ˆÔÐÐr   c                 ó~  — | j         j        t          j        k    r~| j         j        t          j        k    rt          d¦  «        ‚| j         j        t          j        k    rt          d¦  «        ‚t          d                     | j         j        ¦  «        ¦  «        ‚t          | j	        | j
        | j        | j        ¦  «        S )zX
        Return server object with serve_forever() method and address attribute
        úAlready started serverúManager has shut downúUnknown state {!r})rø   rì   rë   rî   rï   r   rð   rX   rj   Ú	_registryrö   r÷   rù   r6   s    r   Ú
get_serverzBaseManager.get_server   s§   € ð Œ;Ô¥¤Ò-Ð-ØŒ{Ô ¥E¤MÒ1Ð1Ý"Ð#;Ñ<Ô<Ð<Ø”Ô"¥e¤nÒ4Ð4Ý"Ð#:Ñ;Ô;Ð;å"Ø(×/Ò/°´Ô0AÑBÔBñDô Dð Då�d”n d¤mØ”m TÔ%5ñ7ô 7ð 	7r   c                 ó¬   — t           | j                 \  }} || j        | j        ¬¦  «        }t	          |dd¦  «         t
          j        | j        _        dS )z>
        Connect manager object to the server process
        ©r|   Nrq   )	r}   rù   rö   r÷   rP   rë   rï   rø   rì   )r3   r†   r‡   r´   s       r   ÚconnectzBaseManager.connect  sR   € õ +¨4Ô+;Ô<Ñˆ�&Øˆv�d”m¨T¬]Ð;Ñ;Ô;ˆÝ��t˜WÑ%Ô%Ð%Ý!œMˆŒÔÐÐr   r   c           
      ób  — | j         j        t          j        k    r~| j         j        t          j        k    rt          d¦  «        ‚| j         j        t          j        k    rt          d¦  «        ‚t          d                     | j         j        ¦  «        ¦  «        ‚|�t          |¦  «        st          d¦  «        ‚t          j        d¬¦  «        \  }}| j                             t          | ¦  «        j        | j        | j        | j        | j        |||f¬¦  «        | _        d	                     d
„ | j        j        D ¦   «         ¦  «        }t          | ¦  «        j        dz   |z   | j        _        | j                             ¦   «          |                     ¦   «          |                     ¦   «         | _        |                     ¦   «          t          j        | j         _        t9          j        | t          | ¦  «        j        | j        | j        | j        | j         | j        | j         fd¬¦  «        | _!        dS )z@
        Spawn a server process for this manager object
        r   r  r  Nzinitializer must be a callableF)ÚduplexrŸ   ú:c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   rÌ   )r"   Úis     r   ú	<genexpr>z$BaseManager.start.<locals>.<genexpr>1  s(   è è € ÐAÐA A�˜Q™œÐAÐAÐAÐAÐAÐAr   ú-r   ©rL   Úexitpriority)"rø   rì   rë   rî   rï   r   rð   rX   r`   rW   r
   ÚPiperü   ÚProcessr   Ú_run_serverr  rö   r÷   rù   Ú_processrØ   Ú	_identityr?   r#   r‘   r²   rH   r   ÚFinalizeÚ_finalize_managerrû   rý   rk   )r3   ÚinitializerÚinitargsÚreaderÚwriterr½   s         r   r‘   zBaseManager.start  sè  € ð Œ;Ô¥¤Ò-Ð-ØŒ{Ô ¥E¤MÒ1Ð1Ý"Ð#;Ñ<Ô<Ð<Ø”Ô"¥e¤nÒ4Ð4Ý"Ð#:Ñ;Ô;Ð;å"Ø(×/Ò/°´Ô0AÑBÔBñDô Dð Dð Ð"­8°KÑ+@Ô+@Ð"ÝÐ<Ñ=Ô=Ð=õ $œ°Ð6Ñ6Ô6‰ˆ�ð œ	×)Ò)Ý˜‘:”:Ô)Ø”. $¤-°´ØÔ" F¨K¸ðCð *ñ ô ˆŒð
 —’ÐAÐA¨¬Ô)@ÐAÑAÔAÑAÔAˆÝ! $™ZœZÔ0°CÑ7¸%Ñ?ˆŒÔØŒ×ÒÑÔÐð 	�Š‰ŒˆØŸš™œˆŒØ�Š‰Œˆõ "œMˆŒÔÝœØ•$�t‘*”*Ô.Ø”- ¤°´¸t¼{Ø”, Ô 6ð8àð	ñ ô ˆŒˆˆr   c                 óN  — t          j         t           j        t           j        ¦  «         |� ||Ž  |                      ||||¦  «        }|                     |j        ¦  «         |                     ¦   «          t          j        d|j        ¦  «         | 	                    ¦   «          dS )z@
        Create a server, report its address and run it
        Nzmanager serving at %r)
ÚsignalÚSIGINTÚSIG_IGNÚ_ServerrG   r0   r²   r   rª   r�   )	Úclsrz   r0   r|   r…   r  r  r  Úservers	            r   r  zBaseManager._run_serverC  s˜   € õ 	Œ•f”m¥V¤^Ñ4Ô4Ð4àÐ"ØˆK˜Ð"Ð"ð —’˜X w°¸ÑDÔDˆð 	�Š�F”NÑ#Ô#Ð#Ø�Š‰Œˆõ 	Œ	Ð)¨6¬>Ñ:Ô:Ð:Ø×ÒÑÔÐÐÐr   c                óN  — | j         j        t          j        k    s
J d¦   «         ‚|                      | j        | j        ¬¦  «        }	 t          |dd|f|z   |¦  «        \  }}|                     ¦   «          n# |                     ¦   «          w xY wt          || j        |¦  «        |fS )zP
        Create a new shared object; return the token and exposed tuple
        zserver not yet startedr  Nrl   )
rø   rì   rë   rï   rû   rö   r÷   rP   r²   r   )r3   r/   rL   rM   r´   r1   r¾   s          r   Ú_createzBaseManager._createZ  sœ   € ð Œ{Ô ¥E¤MÒ1Ð1Ð1Ð3KÑ1Ô1Ð1Ø�|Š|˜DœM°4´=ˆ|ÑAÔAˆð	Ý" 4¨¨x¸&¸À4¹ÈÑNÔN‰KˆB�à�JŠJ‰LŒLˆLˆLøˆD�JŠJ‰LŒLˆLˆLøøøÝ�V˜Tœ]¨BÑ/Ô/°Ð8Ð8s   ÁA6 Á6Bc                 ó�   — | j         �<| j                              |¦  «         | j                              ¦   «         sd| _         dS dS dS )zC
        Join the manager process (if it has been spawned)
        N)r  rØ   Úis_alive©r3   Útimeouts     r   rØ   zBaseManager.joinf  sU   € ð Œ=Ð$ØŒM×Ò˜wÑ'Ô'Ð'Ø”=×)Ò)Ñ+Ô+ð %Ø $�”��ð %Ð$ð%ð %r   c                 óÂ   — |                       | j        | j        ¬¦  «        }	 t          |dd¦  «        |                     ¦   «          S # |                     ¦   «          w xY w)zS
        Return some info about the servers shared objects and connections
        r  Nro   ©rû   rö   r÷   rP   r²   r³   s     r   Ú_debug_infozBaseManager._debug_infoo  sR   € ð �|Š|˜DœM°4´=ˆ|ÑAÔAˆð	Ý˜D $¨Ñ5Ô5à�JŠJ‰LŒLˆLˆLøˆD�JŠJ‰LŒLˆLˆLøøøó   £A ÁAc                 óÂ   — |                       | j        | j        ¬¦  «        }	 t          |dd¦  «        |                     ¦   «          S # |                     ¦   «          w xY w)z5
        Return the number of shared objects
        r  Nrp   r*  r³   s     r   Ú_number_of_objectszBaseManager._number_of_objectsy  sS   € ð �|Š|˜DœM°4´=ˆ|ÑAÔAˆð	Ý˜D $Ð(;Ñ<Ô<à�JŠJ‰LŒLˆLˆLøˆD�JŠJ‰LŒLˆLˆLøøør,  c                 ó’  — | j         j        t          j        k    r|                      ¦   «          | j         j        t          j        k    r~| j         j        t          j        k    rt          d¦  «        ‚| j         j        t          j        k    rt          d¦  «        ‚t          d                     | j         j        ¦  «        ¦  «        ‚| S )NzUnable to start serverr  r  )	rø   rì   rë   rî   r‘   rï   r   rð   rX   r6   s    r   Ú	__enter__zBaseManager.__enter__ƒ  s¥   € ØŒ;Ô¥¤Ò-Ð-Ø�JŠJ‰LŒLˆLØŒ;Ô¥¤Ò-Ð-ØŒ{Ô ¥E¤MÒ1Ð1Ý"Ð#;Ñ<Ô<Ð<Ø”Ô"¥e¤nÒ4Ð4Ý"Ð#:Ñ;Ô;Ð;å"Ø(×/Ò/°´Ô0AÑBÔBñDô Dð Dàˆr   c                 ó.   — |                       ¦   «          d S r   )rk   ©r3   Úexc_typeÚexc_valÚexc_tbs       r   Ú__exit__zBaseManager.__exit__�  s   € Ø�Š‰Œˆˆˆr   c                 óÞ  —  | j         ¦   «         �r,t          j        d¦  «         	  |||¬¦  «        }	 t          |dd¦  «         |                     ¦   «          n# |                     ¦   «          w xY wn# t
          $ r Y nw xY w | j        |¬¦  «          | j         ¦   «         r™t          j        d¦  «         t          | d¦  «        rut          j        d¦  «          | j        ¦   «           | j        |¬¦  «          | j         ¦   «         r2t          j        d	¦  «          | j	        ¦   «           | j        ¦   «          t          j        |_        	 t          j        |= dS # t          $ r Y dS w xY w)
zQ
        Shutdown the manager process; will be registered as a finalizer
        z#sending shutdown message to managerr  Nrk   )r(  zmanager still aliveÚ	terminatez'trying to `terminate()` manager processz#manager still alive after terminate)r&  r   rª   rP   r²   r©   rØ   Úhasattrr8  Úkillrë   rð   rì   r   Ú_address_to_localr¸   )r   r0   r|   r:   rû   rô   r´   s          r   r  zBaseManager._finalize_manager“  s   € ð ˆ7ÔÑÔñ 	'ÝŒIÐ;Ñ<Ô<Ð<ðØ�w˜w°Ð8Ñ8Ô8�ð!Ý˜T 4¨Ñ4Ô4Ð4à—J’J‘L”L�L�Lø�D—J’J‘L”L�L�Løøø�LøÝð ð ð Ø�ðøøøð ˆGŒLÐ!1Ð2Ñ2Ô2Ð2ØˆwÔÑ!Ô!ð 	'Ý”	Ð/Ñ0Ô0Ð0Ý˜7 KÑ0Ô0ð 'Ý”IÐGÑHÔHÐHØ%�GÔ%Ñ'Ô'Ð'Ø �G”LÐ)9Ð:Ñ:Ô:Ð:Ø'�wÔ'Ñ)Ô)ð 'Ýœ	Ð"GÑHÔHÐHØ$˜œ™œ˜Ø$˜œ™œ˜å”nˆŒð	ÝÔ+¨GÐ4Ð4Ð4øÝð 	ð 	ð 	ØˆDˆDð	øøøs:   ¦A4 ´A ÁA4 ÁA0Á0A4 Á4
BÂ BÅE Å
E,Å+E,c                 ó   — | j         S r   )rö   r6   s    r   r0   zBaseManager.address¶  s
   € àŒ}Ðr   Tc                 óô  ‡‡— d| j         vr| j                             ¦   «         | _        ‰€t          Š|pt	          ‰dd¦  «        }|pt	          ‰dd¦  «        }|rmt          |                     ¦   «         ¦  «        D ]K\  }}t          |¦  «        t          u sJ d|z  ¦   «         ‚t          |¦  «        t          u sJ d|z  ¦   «         ‚ŒL|||‰f| j        ‰<   |r ˆˆfd„}	‰|	_	        t          | ‰|	¦  «         dS dS )z9
        Register a typeid with the manager type
        r  NÚ	_exposed_Ú_method_to_typeid_z%r is not a stringc                ó   •— t          j        d‰¦  «          | j        ‰g|¢R i |¤Ž\  }} ‰|| j        | | j        |¬¦  «        }|                      |j        | j        ¬¦  «        }t          |d d|j        f¦  «         |S )Nz)requesting creation of a shared %r object©Úmanagerr|   r¾   r  rs   )	r   r™   r$  rù   r÷   rû   r0   rP   r1   )	r3   rL   rM   rÅ   ÚexpÚproxyr´   rä   r/   s	          €€r   rb   z"BaseManager.register.<locals>.tempÕ  sš   ø€ Ý”
ÐFÈÑOÔOÐOØ)˜Tœ\¨&Ð@°4Ð@Ð@Ð@¸4Ð@Ð@‘
��sØ!˜	Ø˜4Ô+°TØ œM°3ðñ ô �ð —|’| E¤M¸4¼=�|ÑIÔI�Ý˜˜t X°´¨{Ñ;Ô;Ð;Ø�r   )Ú__dict__r  ÚcopyÚ	AutoProxyr    r)   r%   r   rV   r?   Úsetattr)
r!  r/   r`   rä   r¾   rã   Úcreate_methodÚkeyrì   rb   s
    ` `      r   ÚregisterzBaseManager.registerº  sV  øø€ ð ˜cœlÐ*Ð*ØœM×.Ò.Ñ0Ô0ˆCŒMàÐÝ!ˆIàÐB�W Y°¸TÑBÔBˆà+ð JÝ" 9Ð.BÀDÑIÔIð 	ð ð 	HÝ"Ð#3×#9Ò#9Ñ#;Ô#;Ñ<Ô<ð Hð H‘
��UÝ˜C‘y”y¥CÐ'Ð'Ð'Ð)=ÀÑ)CÑ'Ô'Ð'Ý˜E‘{”{¥cÐ)Ð)Ð)Ð+?À%Ñ+GÑ)Ô)Ð)Ð)ð �gÐ/°ð!ˆŒ�fÑð ð 	'ð	ð 	ð 	ð 	ð 	ð 	ð #ˆDŒMÝ�C˜ Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r   )NNrñ   Nrx   r   )NNNNT)r?   rA   rB   rC   r  rj   r   r4   r  r  r‘   Úclassmethodr  r$  rØ   r+  r.  r0  r6  Ústaticmethodr  Úpropertyr0   rK  r   r   r   r   r   ì  sc  € € € € € ðð ð €IØ€Gà>FØð2Ø/2ð2ð 2ð 2ð 2ð 2ð7ð 7ð 7ð*ð *ð *ð)ð )ð )ð )ðV à/1ðð ð ñ „[ðð,
9ð 
9ð 
9ð%ð %ð %ð %ðð ð ðð ð ðð ð ðð ð ð ð ð  ñ „\ð ðD ðð ñ „Xðð ØEIØ6:ð%'ð %'ð %'ñ „[ð%'ð %'ð %'r   r   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚProcessLocalSetc                 ó2   — t          j        | d„ ¦  «         d S )Nc                 ó*   — |                       ¦   «         S r   )Úclearr*   s    r   ú<lambda>z*ProcessLocalSet.__init__.<locals>.<lambda>è  s   € °3·9²9±;´;€ r   )r   Úregister_after_forkr6   s    r   r4   zProcessLocalSet.__init__ç  s   € ÝÔ  Ð'>Ð'>Ñ?Ô?Ð?Ð?Ð?r   c                 ó$   — t          | ¦  «        dfS rx   )r   r6   s    r   Ú
__reduce__zProcessLocalSet.__reduce__é  s   € Ý�D‰zŒz˜2ˆ~Ðr   N)r?   rA   rB   r4   rW  r   r   r   rP  rP  æ  s5   € € € € € ð@ð @ð @ðð ð ð ð r   rP  c                   ó’   — e Zd ZdZi Z ej        ¦   «         Z	 	 dd„Zd„ Z	di fd„Z
d	„ Zd
„ Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r   z.
    A base for proxies of shared objects
    NTFc                 óÒ  — t           j        5  t           j                             |j        d ¦  «        }|€5t          j        ¦   «         t          ¦   «         f}|t           j        |j        <   d d d ¦  «         n# 1 swxY w Y   |d         | _        |d         | _	        || _
        | j
        j        | _        || _        || _        t          |         d         | _        || _        |�t%          j        |¦  «        | _        n6| j        �| j        j        | _        nt%          j        ¦   «         j        | _        |r|                      ¦   «          t          j        | t           j        ¦  «         d S )Nr   r	   )r   Ú_mutexr;  rº   r0   r   ÚForkAwareLocalrP  Ú_tlsÚ_idsetÚ_tokenr1   Ú_idÚ_managerrù   r}   rû   Ú_owned_by_managerr   r{   r÷   rŒ   r|   Ú_increfrU  Ú_after_fork)	r3   rÅ   r…   rB  r|   r¾   rr   Úmanager_ownedÚ	tls_idsets	            r   r4   zBaseProxy.__init__÷  sƒ  € åÔð 	Gð 	GÝ!Ô3×7Ò7¸¼ÀtÑLÔLˆIØÐ Ý Ô/Ñ1Ô1µ?Ñ3DÔ3DÐD�	Ø=F•	Ô+¨E¬MÑ:ð		Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð ˜a”LˆŒ	ð
   ”lˆŒàˆŒØ”;”>ˆŒØˆŒØ%ˆÔÝ& zÔ2°1Ô5ˆŒð "/ˆÔàÐÝ#Ô8¸ÑAÔAˆDŒMˆMØŒ]Ð&Ø œMÔ2ˆDŒMˆMå#Ô3Ñ5Ô5Ô=ˆDŒMàð 	Ø�LŠL‰NŒNˆNåÔ  ¥yÔ'<Ñ=Ô=Ð=Ð=Ð=s   �AA6Á6A:Á=A:c                 ó\  — t          j        d¦  «         t          j        ¦   «         j        }t          j        ¦   «         j        dk    r|dt          j        ¦   «         j        z   z  }|                      | j        j	        | j
        ¬¦  «        }t          |d d|f¦  «         || j        _        d S )Nzmaking connection to managerÚ
MainThreadú|r  rm   )r   r™   r   rŒ   r#   r‚   r·   rû   r^  r0   r÷   rP   r\  r
   )r3   r#   r´   s      r   Ú_connectzBaseProxy._connect   s™   € ÝŒ
Ð1Ñ2Ô2Ð2ÝÔ&Ñ(Ô(Ô-ˆÝÔ#Ñ%Ô%Ô*¨lÒ:Ð:Ø�C�)Ô2Ñ4Ô4Ô9Ñ9Ñ9ˆDØ�|Š|˜DœKÔ/¸¼ˆ|ÑGÔGˆÝ��tÐ0°4°'Ñ:Ô:Ð:Ø#ˆŒ	ÔÐÐr   r   c                 ó”  — 	 | j         j        }n[# t          $ rN t          j        dt          j        ¦   «         j        ¦  «         |                      ¦   «          | j         j        }Y nw xY w| 	                    | j
        |||f¦  «         |                     ¦   «         \  }}|dk    r|S |dk    r�|\  }}| j        j        |j                 d         }	| j        j        |_         |	|| j        | j        | j        |¬¦  «        }
|                      |j        | j        ¬¦  «        }t)          |dd|j        f¦  «         |
S t-          ||¦  «        ‚)	zV
        Try to call a method of the referent and return a copy of the result
        z#thread %r does not own a connectionrF   r¶   éÿÿÿÿrA  r  Nrs   )r\  r
   r¹   r   r™   r‚   r·   r#   ri  rG   r_  rH   r`  r  r/   r^  r0   rù   r÷   rû   rP   r1   rI   )r3   rK   rL   rM   r´   rN   rO   r¾   rÅ   rä   rD  s              r   Ú_callmethodzBaseProxy._callmethod)  sV  € ð	(Ø”9Ô'ˆDˆDøÝð 	(ð 	(ð 	(ÝŒJÐ<Ý Ô/Ñ1Ô1Ô6ñ8ô 8ð 8à�MŠM‰OŒOˆOØ”9Ô'ˆDˆDˆDð		(øøøð 	�	Š	�4”8˜Z¨¨tÐ4Ñ5Ô5Ð5Ø—y’y‘{”{‰ˆˆfà�9ÒÐØˆMØ�XÒÐØ#‰NˆG�UØœÔ/°´Ô=¸bÔAˆIØ œKÔ/ˆEŒMØ�IØ�tÔ'°´Øœ¨wðñ ô ˆEð —<’< ¤°t´}�<ÑEÔEˆDÝ�T˜4 ¨E¬H¨;Ñ7Ô7Ð7ØˆLÝ˜t VÑ,Ô,Ð,s   ‚ �AA'Á&A'c                 ó,   — |                       d¦  «        S )z9
        Get a copy of the value of the referent
        rÑ   ©rl  r6   s    r   Ú	_getvaluezBaseProxy._getvalueG  s   € ð ×Ò Ñ,Ô,Ð,r   c           
      ó   — | j         r!t          j        d| j        j        ¦  «         d S |                      | j        j        | j        ¬¦  «        }t          |d d| j	        f¦  «         t          j        d| j        j        ¦  «         | j
                             | j	        ¦  «         | j        o| j        j        }t          j        | t          j        | j        | j        || j        | j
        | j        fd¬¦  «        | _        d S )Nz%owned_by_manager skipped INCREF of %rr  rr   z	INCREF %ré
   r  )ra  r   r™   r^  r1   rû   r0   r÷   rP   r_  r]  Úaddr`  rø   r  r   Ú_decrefr\  Ú_close)r3   r´   r:   s      r   rb  zBaseProxy._increfM  sÞ   € ØÔ!ð 	ÝŒJÐ>ÀÄÄÑOÔOÐOØˆFà�|Š|˜DœKÔ/¸¼ˆ|ÑGÔGˆÝ��t˜X¨¬ {Ñ3Ô3Ð3ÝŒ
�; ¤¤Ñ/Ô/Ð/àŒ�Š˜œÑ!Ô!Ð!à”Ð6 $¤-Ô"6ˆå”mØ•)Ô#Ø”+˜tœ}¨eØ”)˜Tœ[¨$¬,ð8àð	ñ ô ˆŒˆˆr   c                 ó8  — |                      | j        ¦  «         |�|j        t          j        k    rr	 t          j        d| j        ¦  «          || j        |¬¦  «        }t          |d d| j        f¦  «         nF# t          $ r}t          j        d|¦  «         Y d }~n"d }~ww xY wt          j        d| j        ¦  «         |sXt          |d¦  «        rJt          j        dt          j        ¦   «         j        ¦  «         |j                             ¦   «          |`d S d S d S )Nz	DECREF %rr  rs   z... decref failed %sz%DECREF %r -- manager already shutdownr
   z-thread %r has no more proxies so closing conn)Údiscardr1   rì   rë   rï   r   r™   r0   rP   r©   r9  r‚   r·   r#   r
   r²   )rÅ   r|   r:   ÚtlsÚidsetrû   r´   r¯   s           r   rs  zBaseProxy._decrefa  s?  € à�Š�e”hÑÔÐð ˆ=˜EœK­5¬=Ò8Ð8ð6Ý”
˜;¨¬Ñ1Ô1Ð1Ø�w˜uœ}°gÐ>Ñ>Ô>�Ý˜˜t X°´¨{Ñ;Ô;Ð;Ð;øÝð 6ð 6ð 6Ý”
Ð1°1Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5øøøøð6øøøõ ŒJÐ>ÀÄÑIÔIÐIð ð 	�  lÑ3Ô3ð 	ÝŒJÐFÝ Ô/Ñ1Ô1Ô6ñ8ô 8ð 8àŒN× Ò Ñ"Ô"Ð"Ø���ð		ð 	ð 	ð 	s   ³AA8 Á8
B!ÂBÂB!c                 óœ   — d | _         	 |                      ¦   «          d S # t          $ r"}t          j        d|z  ¦  «         Y d }~d S d }~ww xY w)Nzincref failed: %s)r`  rb  r©   r   rª   )r3   r¯   s     r   rc  zBaseProxy._after_forkz  sf   € ØˆŒð	/Ø�LŠL‰NŒNˆNˆNˆNøÝð 	/ð 	/ð 	/åŒIÐ)¨AÑ-Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.øøøøð	/øøøs   ‰ Ÿ
A©AÁAc                 óì   — i }t          ¦   «         �
| j        |d<   t          | dd¦  «        r&| j        |d<   t          t
          | j        | j        |ffS t          t          | ¦  «        | j        | j        |ffS )Nr|   Ú_isautoFr¾   )	r   r÷   r    r>  ÚRebuildProxyrG  r^  rù   r   ©r3   rM   s     r   rW  zBaseProxy.__reduce__‚  s†   € ØˆÝÑÔÐ+Ø"œmˆD�‰Oå�4˜ EÑ*Ô*ð 	GØ"œnˆD�‰OÝ Ý ¤¨TÔ-=¸tÐDðFð Fõ !Ý˜$‘Z”Z ¤¨dÔ.>ÀÐEðGð Gr   c                 ó*   — |                       ¦   «         S r   )ro  )r3   Úmemos     r   Ú__deepcopy__zBaseProxy.__deepcopy__�  s   € Ø�~Š~ÑÔÐr   c                 ód   — dt          | ¦  «        j        | j        j        t	          | ¦  «        fz  S )Nz<%s object, typeid %r at %#x>)r   r?   r^  r/   r1   r6   s    r   r@   zBaseProxy.__repr__’  s/   € Ø.Ý�T‘
”
Ô# T¤[Ô%7½¸D¹¼ÐBñCð 	Cr   c                 ó‚   — 	 |                       d¦  «        S # t          $ r t          | ¦  «        dd…         dz   cY S w xY w)zV
        Return representation of the referent (or a fall-back if that fails)
        r@   Nrk  z; '__str__()' failed>)rl  r©   rÏ   r6   s    r   r]   zBaseProxy.__str__–  sV   € ð	=Ø×#Ò# JÑ/Ô/Ð/øÝð 	=ð 	=ð 	=Ý˜‘:”:˜c˜r˜c”?Ð%<Ñ<Ð<Ð<Ð<ð	=øøøs   ‚ —$>½>©NNNTF)r?   rA   rB   rC   r;  r   ÚForkAwareThreadLockrZ  r4   ri  rl  ro  rb  rM  rs  rc  rW  r€  r@   r]   r   r   r   r   r   ð  s  € € € € € ðð ð ÐØ%ˆTÔ%Ñ'Ô'€Fà26ØHMð'>ð '>ð '>ð '>ðR$ð $ð $ð ,.°Bð -ð -ð -ð -ð<-ð -ð -ðð ð ð( ðð ñ „\ðð0/ð /ð /ðGð Gð Gð ð  ð  ðCð Cð Cð=ð =ð =ð =ð =r   r   c                 ó‚  — t          t          j        ¦   «         dd¦  «        }|rW|j        |j        k    rGt	          j        d|¦  «         d|d<   |j        |j        vr|j        |j                 |j        |j        <   | 	                    dd¦  «        o"t          t          j        ¦   «         dd¦  «         } | ||fd|i|¤ŽS )	z5
    Function used for unpickling proxy objects.
    r�   Nz*Rebuild a proxy owned by manager, token=%rTrd  rr   Ú_inheritingF)
r    r   rŒ   r0   r   r™   r1   r�   r   Úpop)rc   rÅ   r…   rM   r"  rr   s         r   r|  r|  £  sØ   € õ •WÔ,Ñ.Ô.Ð0AÀ4ÑHÔH€FØð +�&”. E¤MÒ1Ð1ÝŒ
Ð?ÀÑGÔGÐGØ $ˆˆ_ÑØŒ8˜6Ô7Ð7Ð7àÔ  ¤Ô*ð Ô(¨¬Ñ2ð 	�Š�˜4Ñ Ô ð 	EÝ•GÔ+Ñ-Ô-¨}¸eÑDÔDÐDð ð ˆ4��zÐ9Ð9¨&Ð9°DÐ9Ð9Ð9r   c                 óà   — t          |¦  «        }	 || |f         S # t          $ r Y nw xY wi }|D ]}t          d|›d|›d�|¦  «         Œt          | t          f|¦  «        }||_        ||| |f<   |S )zB
    Return a proxy type whose methods are given by `exposed`
    zdef z:(self, /, *args, **kwds):
        return self._callmethod(z, args, kwds))râ   r¸   Úexecr   r   r>  )r#   r¾   Ú_cacheÚdicÚmethÚ	ProxyTypes         r   ÚMakeProxyTyperŽ  ¸  s¿   € õ �G‰nŒn€GðØ�t˜W�oÔ&Ð&øÝð ð ð Øˆðøøøð €Càð Hð HˆÝˆØ6:°d°d¸D¸D¸DðBØCFñ	Hô 	Hð 	Hð 	Hõ �T�I˜<¨Ñ-Ô-€IØ!€IÔØ'€FˆD�'ˆ?ÑØÐs   ‘	 ›
(§(c                 ó‚  — t           |         d         }|€T || j        |¬¦  «        }	 t          |dd| f¦  «        }|                     ¦   «          n# |                     ¦   «          w xY w|€	|�|j        }|€t          j        ¦   «         j        }t          d| j	        z  |¦  «        }	 |	| |||||¬¦  «        }
d|
_
        |
S )z*
    Return an auto-proxy for `token`
    r	   Nr  rn   zAutoProxy[%s])rB  r|   rr   rd  T)r}   r0   rP   r²   r÷   r   rŒ   r|   rŽ  r/   r{  )rÅ   r…   rB  r|   r¾   rr   rd  rû   r´   r�  rD  s              r   rG  rG  Î  sÙ   € õ
 ˜jÔ)¨!Ô,€Gà€Øˆw�u”}¨gÐ6Ñ6Ô6ˆð	Ý˜t T¨=¸5¸(ÑCÔCˆGà�JŠJ‰LŒLˆLˆLøˆD�JŠJ‰LŒLˆLˆLøøøà€˜7Ð.ØÔ"ˆØ€ÝÔ)Ñ+Ô+Ô3ˆå˜o°´Ñ<¸gÑFÔF€IØˆI�e˜Z°À'Ø#°=ðBñ Bô B€Eà€E„MØ€Ls   ©A ÁA'c                   ó   — e Zd Zd„ Zd„ ZdS )Ú	Namespacec                ó:   — | j                              |¦  «         d S r   )rE  Úupdater}  s     r   r4   zNamespace.__init__ì  s   € ØŒ×Ò˜TÑ"Ô"Ð"Ð"Ð"r   c                 ó2  — t          | j                             ¦   «         ¦  «        }g }|D ]4\  }}|                     d¦  «        s|                     |›d|›�¦  «         Œ5|                     ¦   «          | j        j        ›dd                     |¦  «        ›d�S )Nrg   ú=ú(ú, r=   )	r)   rE  r%   Ú
startswithra   r×   r>   r?   rØ   )r3   r%   rb   r#   rì   s        r   r@   zNamespace.__repr__î  s˜   € Ý�T”]×(Ò(Ñ*Ô*Ñ+Ô+ˆØˆØ ð 	5ð 	5‰KˆD�%Ø—?’? 3Ñ'Ô'ð 5Ø—’ t t t¨U¨UÐ3Ñ4Ô4Ð4øØ�	Š	‰ŒˆØœ>Ô2Ð2Ð2°D·I²I¸d±O´O°O°OÐDÐDr   N)r?   rA   rB   r4   r@   r   r   r   r‘  r‘  ë  s7   € € € € € ð#ð #ð #ðEð Eð Eð Eð Er   r‘  c                   ó@   — e Zd Zdd„Zd„ Zd„ Zd„ Z eee¦  «        ZdS )ÚValueTc                 ó"   — || _         || _        d S r   )Ú	_typecodeÚ_value)r3   r   rì   Úlocks       r   r4   zValue.__init__ø  s   € Ø!ˆŒØˆŒˆˆr   c                 ó   — | j         S r   ©r�  r6   s    r   rº   z	Value.getû  s
   € ØŒ{Ðr   c                 ó   — || _         d S r   r   ©r3   rì   s     r   rß   z	Value.setý  s   € ØˆŒˆˆr   c                 óP   — t          | ¦  «        j        ›d| j        ›d| j        ›d�S )Nr–  r—  r=   )r   r?   rœ  r�  r6   s    r   r@   zValue.__repr__ÿ  s*   € Ý! $™ZœZÔ0Ð0Ð0°$´.°.°.À$Ä+À+À+ÐNÐNr   N©T)	r?   rA   rB   r4   rº   rß   r@   rN  rì   r   r   r   rš  rš  ÷  sc   € € € € € ðð ð ð ðð ð ðð ð ðOð Oð OàˆH�S˜#ÑÔ€E€E€Er   rš  c                 ó,   — t          j         | |¦  «        S r   )r   )r   Úsequencerž  s      r   ÚArrayr§    s   € ÝŒ;�x Ñ*Ô*Ð*r   c                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚIteratorProxy)Ú__next__rG   Úthrowr²   c                 ó   — | S r   r   r6   s    r   Ú__iter__zIteratorProxy.__iter__  ó   € Øˆr   c                 ó.   — |                       d|¦  «        S )Nrª  rn  ©r3   rL   s     r   rª  zIteratorProxy.__next__  s   € Ø×Ò 
¨DÑ1Ô1Ð1r   c                 ó.   — |                       d|¦  «        S )NrG   rn  r°  s     r   rG   zIteratorProxy.send  s   € Ø×Ò ¨Ñ-Ô-Ð-r   c                 ó.   — |                       d|¦  «        S )Nr«  rn  r°  s     r   r«  zIteratorProxy.throw  ó   € Ø×Ò ¨Ñ.Ô.Ð.r   c                 ó.   — |                       d|¦  «        S )Nr²   rn  r°  s     r   r²   zIteratorProxy.close  r³  r   N)	r?   rA   rB   r>  r­  rª  rG   r«  r²   r   r   r   r©  r©  
  sd   € € € € € Ø6€Iðð ð ð2ð 2ð 2ð.ð .ð .ð/ð /ð /ð/ð /ð /ð /ð /r   r©  c                   ó,   — e Zd ZdZdd„Zd„ Zd„ Zd„ ZdS )	ÚAcquirerProxy)ÚacquireÚreleaseTNc                 ó@   — |€|fn||f}|                       d|¦  «        S ©Nr·  rn  )r3   Úblockingr(  rL   s       r   r·  zAcquirerProxy.acquire  s,   € Ø%˜o�ˆ{ˆ{°H¸gÐ3FˆØ×Ò 	¨4Ñ0Ô0Ð0r   c                 ó,   — |                       d¦  «        S ©Nr¸  rn  r6   s    r   r¸  zAcquirerProxy.release  ó   € Ø×Ò 	Ñ*Ô*Ð*r   c                 ó,   — |                       d¦  «        S rº  rn  r6   s    r   r0  zAcquirerProxy.__enter__  r¾  r   c                 ó,   — |                       d¦  «        S r½  rn  r2  s       r   r6  zAcquirerProxy.__exit__!  r¾  r   )TN)r?   rA   rB   r>  r·  r¸  r0  r6  r   r   r   r¶  r¶    sZ   € € € € € Ø&€Ið1ð 1ð 1ð 1ð+ð +ð +ð+ð +ð +ð+ð +ð +ð +ð +r   r¶  c                   ó0   — e Zd ZdZdd„Zd	d„Zd„ Zdd„ZdS )
ÚConditionProxy)r·  r¸  r“   ÚnotifyÚ
notify_allNc                 ó0   — |                       d|f¦  «        S ©Nr“   rn  r'  s     r   r“   zConditionProxy.wait'  ó   € Ø×Ò ¨¨
Ñ3Ô3Ð3r   r	   c                 ó0   — |                       d|f¦  «        S )NrÃ  rn  )r3   Úns     r   rÃ  zConditionProxy.notify)  s   € Ø×Ò ¨1¨$Ñ/Ô/Ð/r   c                 ó,   — |                       d¦  «        S )NrÄ  rn  r6   s    r   rÄ  zConditionProxy.notify_all+  s   € Ø×Ò Ñ-Ô-Ð-r   c                 óà   —  |¦   «         }|r|S |�t          j        ¦   «         |z   }nd }d }|s@|�|t          j        ¦   «         z
  }|dk    rn!|                      |¦  «          |¦   «         }|¯@|S )Nr   )ÚtimeÚ	monotonicr“   )r3   Ú	predicater(  rO   ÚendtimeÚwaittimes         r   Úwait_forzConditionProxy.wait_for-  s˜   € Ø�‘”ˆØð 	ØˆMØÐÝ”nÑ&Ô&¨Ñ0ˆGˆGàˆGØˆHØð 	!ØÐ"Ø"¥T¤^Ñ%5Ô%5Ñ5�Ø˜q’=�=ØØ�IŠI�hÑÔÐØ�Y‘[”[ˆFð ð 	!ð ˆr   r   )r	   )r?   rA   rB   r>  r“   rÃ  rÄ  rÑ  r   r   r   rÂ  rÂ  %  sd   € € € € € ØF€Ið4ð 4ð 4ð 4ð0ð 0ð 0ð 0ð.ð .ð .ðð ð ð ð ð r   rÂ  c                   ó,   — e Zd ZdZd„ Zd„ Zd„ Zdd„ZdS )Ú
EventProxy)r’   rß   rS  r“   c                 ó,   — |                       d¦  «        S )Nr’   rn  r6   s    r   r’   zEventProxy.is_setB  s   € Ø×Ò Ñ)Ô)Ð)r   c                 ó,   — |                       d¦  «        S ©Nrß   rn  r6   s    r   rß   zEventProxy.setD  ó   € Ø×Ò Ñ&Ô&Ð&r   c                 ó,   — |                       d¦  «        S )NrS  rn  r6   s    r   rS  zEventProxy.clearF  ó   € Ø×Ò Ñ(Ô(Ð(r   Nc                 ó0   — |                       d|f¦  «        S rÆ  rn  r'  s     r   r“   zEventProxy.waitH  rÇ  r   r   )r?   rA   rB   r>  r’   rß   rS  r“   r   r   r   rÓ  rÓ  @  sZ   € € € € € Ø2€Ið*ð *ð *ð'ð 'ð 'ð)ð )ð )ð4ð 4ð 4ð 4ð 4ð 4r   rÓ  c                   óh   — e Zd ZdZd	d„Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
dS )
ÚBarrierProxy)Ú__getattribute__r“   ÚabortÚresetNc                 ó0   — |                       d|f¦  «        S rÆ  rn  r'  s     r   r“   zBarrierProxy.waitN  rÇ  r   c                 ó,   — |                       d¦  «        S )NrÞ  rn  r6   s    r   rÞ  zBarrierProxy.abortP  rÙ  r   c                 ó,   — |                       d¦  «        S )Nrß  rn  r6   s    r   rß  zBarrierProxy.resetR  rÙ  r   c                 ó.   — |                       dd¦  «        S )NrÝ  )Úpartiesrn  r6   s    r   rä  zBarrierProxy.partiesT  s   € à×ÒÐ 2°LÑAÔAÐAr   c                 ó.   — |                       dd¦  «        S )NrÝ  )Ú	n_waitingrn  r6   s    r   ræ  zBarrierProxy.n_waitingW  s   € à×ÒÐ 2°NÑCÔCÐCr   c                 ó.   — |                       dd¦  «        S )NrÝ  )Úbrokenrn  r6   s    r   rè  zBarrierProxy.brokenZ  s   € à×ÒÐ 2°KÑ@Ô@Ð@r   r   )r?   rA   rB   r>  r“   rÞ  rß  rN  rä  ræ  rè  r   r   r   rÜ  rÜ  L  s¡   € € € € € Ø>€Ið4ð 4ð 4ð 4ð)ð )ð )ð)ð )ð )àðBð Bñ „XðBàðDð Dñ „XðDàðAð Añ „XðAð Að Ar   rÜ  c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚNamespaceProxy)rÝ  Ú__setattr__Ú__delattr__c                 ó    — |d         dk    rt                                | |¦  «        S t                                | d¦  «        } |d|f¦  «        S )Nr   rg   rl  rÝ  )ÚobjectrÝ  ©r3   rJ  Ú
callmethods      r   Ú__getattr__zNamespaceProxy.__getattr__a  sO   € ØˆqŒ6�SŠ=ˆ=Ý×*Ò*¨4°Ñ5Ô5Ð5Ý×,Ò,¨T°=ÑAÔAˆ
ØˆzÐ,¨s¨fÑ5Ô5Ð5r   c                 ó¤   — |d         dk    rt                                | ||¦  «        S t                                | d¦  «        } |d||f¦  «        S )Nr   rg   rl  rë  )rî  rë  rÝ  )r3   rJ  rì   rð  s       r   rë  zNamespaceProxy.__setattr__f  sR   € ØˆqŒ6�SŠ=ˆ=Ý×%Ò% d¨C°Ñ7Ô7Ð7Ý×,Ò,¨T°=ÑAÔAˆ
Øˆz˜-¨#¨u¨Ñ6Ô6Ð6r   c                 ó    — |d         dk    rt                                | |¦  «        S t                                | d¦  «        } |d|f¦  «        S )Nr   rg   rl  rì  )rî  rì  rÝ  rï  s      r   rì  zNamespaceProxy.__delattr__k  sN   € ØˆqŒ6�SŠ=ˆ=Ý×%Ò% d¨CÑ0Ô0Ð0Ý×,Ò,¨T°=ÑAÔAˆ
Øˆz˜-¨#¨Ñ0Ô0Ð0r   N)r?   rA   rB   r>  rñ  rë  rì  r   r   r   rê  rê  _  sF   € € € € € ØB€Ið6ð 6ð 6ð
7ð 7ð 7ð
1ð 1ð 1ð 1ð 1r   rê  c                   óV   — e Zd ZdZd„ Zd„ Z eee¦  «        Z ee	j
        ¦  «        ZdS )Ú
ValueProxy)rº   rß   c                 ó,   — |                       d¦  «        S )Nrº   rn  r6   s    r   rº   zValueProxy.gett  r×  r   c                 ó0   — |                       d|f¦  «        S rÖ  rn  r¢  s     r   rß   zValueProxy.setv  s   € Ø×Ò ¨ xÑ0Ô0Ð0r   N)r?   rA   rB   r>  rº   rß   rN  rì   rL  ÚtypesÚGenericAliasÚ__class_getitem__r   r   r   rõ  rõ  r  sW   € € € € € Ø€Ið'ð 'ð 'ð1ð 1ð 1àˆH�S˜#ÑÔ€Eà#˜ EÔ$6Ñ7Ô7ÐÐÐr   rõ  ÚBaseListProxy)Ú__add__Ú__contains__Ú__delitem__Ú__getitem__Ú__len__Ú__mul__Ú__reversed__Ú__rmul__Ú__setitem__ra   ÚcountÚextendÚindexÚinsertr‡  ÚremoveÚreverser×   Ú__imul__c                   ó   — e Zd Zd„ Zd„ ZdS )Ú	ListProxyc                 ó4   — |                       d|f¦  «         | S )Nr  rn  r¢  s     r   Ú__iadd__zListProxy.__iadd__„  s   € Ø×Ò˜ E 8Ñ,Ô,Ð,Øˆr   c                 ó4   — |                       d|f¦  «         | S )Nr  rn  r¢  s     r   r  zListProxy.__imul__‡  s   € Ø×Ò˜ e XÑ.Ô.Ð.Øˆr   N)r?   rA   rB   r  r  r   r   r   r  r  ƒ  s2   € € € € € ðð ð ðð ð ð ð r   r  Ú	DictProxy)rý  rþ  rÿ  r­  r   r  rS  rF  rº   r%   r&   r‡  ÚpopitemÚ
setdefaultr“  r'   r­  ÚIteratorÚ
ArrayProxy)r   rÿ  r  Ú	PoolProxy)ÚapplyÚapply_asyncr²   ÚimapÚimap_unorderedrØ   ÚmapÚ	map_asyncÚstarmapÚstarmap_asyncr8  ÚAsyncResult)r  r  r  r  r  c                   ó   — e Zd Zd„ Zd„ ZdS )r  c                 ó   — | S r   r   r6   s    r   r0  zPoolProxy.__enter__§  r®  r   c                 ó.   — |                       ¦   «          d S r   )r8  r2  s       r   r6  zPoolProxy.__exit__©  s   € Ø�ŠÑÔÐÐÐr   N)r?   rA   rB   r0  r6  r   r   r   r  r  ¦  s2   € € € € € ðð ð ðð ð ð ð r   c                   ó   — e Zd ZdZdS )r   a(  
    Subclass of `BaseManager` which supports a number of shared object types.

    The types registered are those intended for the synchronization
    of threads, plus `dict`, `list` and `Namespace`.

    The `multiprocessing.Manager()` function creates started instances of
    this class.
    N)r?   rA   rB   rC   r   r   r   r   r   °  s   € € € € € ðð ð ð r   r   ÚQueueÚJoinableQueuerŠ   rƒ   ÚRLockÚ	SemaphoreÚBoundedSemaphoreÚ	ConditionÚBarrierÚPoolr)   rá   r§  )rä   rI  )rI  c                   ó@   — e Zd ZdZg fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
Ú_SharedMemoryTrackerz+Manages one or more shared memory segments.c                 ó"   — || _         || _        d S r   ©Úshared_memory_context_nameÚsegment_names)r3   r#   r1  s      r   r4   z_SharedMemoryTracker.__init__Ø  s   € Ø.2ˆDÔ+Ø!.ˆDÔÐÐr   c                 ó†   — t          j        d|›dt          ¦   «         › �¦  «         | j                             |¦  «         dS )z6Adds the supplied shared memory block name to tracker.zRegister segment ú in pid N)r   r™   r   r1  ra   ©r3   Úsegment_names     r   Úregister_segmentz%_SharedMemoryTracker.register_segmentÜ  sD   € åŒJÐM¨<ÐMÐMÅ6Á8Ä8ÐMÐMÑNÔNÐNØÔ×%Ò% lÑ3Ô3Ð3Ð3Ð3r   c                 óþ   — t          j        d|›dt          ¦   «         › �¦  «         | j                             |¦  «         t          j        |¦  «        }|                     ¦   «          |                     ¦   «          dS )z‚Calls unlink() on the shared memory block with the supplied name
            and removes it from the list of blocks being tracked.zDestroy segment r3  N)	r   r™   r   r1  r	  r   ÚSharedMemoryr²   Úunlink)r3   r5  Úsegments      r   Údestroy_segmentz$_SharedMemoryTracker.destroy_segmentá  ss   € õ ŒJÐL¨,ÐLÐLÅ&Á(Ä(ÐLÐLÑMÔMÐMØÔ×%Ò% lÑ3Ô3Ð3Ý#Ô0°Ñ>Ô>ˆGØ�MŠM‰OŒOˆOØ�NŠNÑÔÐÐÐr   c                 óT   — | j         dd…         D ]}|                      |¦  «         ŒdS )z<Calls destroy_segment() on all tracked shared memory blocks.N)r1  r;  r4  s     r   r9  z_SharedMemoryTracker.unlinkê  s>   € à $Ô 2°1°1°1Ô 5ð 3ð 3�Ø×$Ò$ \Ñ2Ô2Ð2Ð2ð3ð 3r   c                 óŽ   — t          j        d| j        j        › dt	          ¦   «         › �¦  «         |                      ¦   «          d S )NzCall z.__del__ in )r   r™   r>   r?   r   r9  r6   s    r   Ú__del__z_SharedMemoryTracker.__del__ï  s=   € ÝŒJÐN˜tœ~Ô6ÐNÐNÅFÁHÄHÐNÐNÑOÔOÐOØ�KŠK‰MŒMˆMˆMˆMr   c                 ó   — | j         | j        fS r   r/  r6   s    r   r7   z!_SharedMemoryTracker.__getstate__ó  s   € ØÔ3°TÔ5GÐHÐHr   c                 ó   —  | j         |Ž  d S r   )r4   r9   s     r   r;   z!_SharedMemoryTracker.__setstate__ö  s   € ØˆDŒM˜5Ð!Ð!Ð!Ð!r   N)r?   rA   rB   rC   r4   r6  r;  r9  r>  r7   r;   r   r   r   r-  r-  Õ  sŽ   € € € € € Ø5Ð5à/1ð 	/ð 	/ð 	/ð 	/ð	4ð 	4ð 	4ð
	ð 	ð 	ð	3ð 	3ð 	3ð
	ð 	ð 	ð	Ið 	Ið 	Ið	"ð 	"ð 	"ð 	"ð 	"r   r-  c                   óJ   — e Zd Zej        g d¢z   Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dS )	ÚSharedMemoryServer)Útrack_segmentÚrelease_segmentÚlist_segmentsc                 ó"  — t          j        | g|¢R i |¤Ž | j        }t          |t          ¦  «        rt          j        |¦  «        }t          d|› dt          ¦   «         › �¦  «        | _	        t          j        dt          ¦   «         › �¦  «         d S )NÚshm_rg   z"SharedMemoryServer started by pid )rj   r4   r0   rU   ry   ÚosÚfsdecoder-  r   Úshared_memory_contextr   r™   )r3   rL   Úkwargsr0   s       r   r4   zSharedMemoryServer.__init__ÿ  s•   € ÝŒO˜DÐ2 4Ð2Ð2Ð2¨6Ð2Ð2Ð2Ø”lˆGå˜'¥5Ñ)Ô)ð /Ýœ+ gÑ.Ô.�å$Ð%@¨GÐ%@Ð%@µf±h´hÐ%@Ð%@ÑAÔAð Ô&åŒJÐF½F¹H¼HÐFÐFÑGÔGÐGÐGÐGr   c                ó†   — t          | j        |         d         d¦  «        r
| j        |d<   t          j        | ||g|¢R i |¤ŽS )zˆCreate a new distributed-shared object (not backed by a shared
            memory block) and return its id to be used in a Proxy Object.rk  Ú_shared_memory_proxyrJ  )r9  rz   rJ  rj   rl   )r3   rJ   r/   rL   rK  s        r   rl   zSharedMemoryServer.create	  sV   € õ �t”} VÔ,¨RÔ0Ð2HÑIÔIð MØ26Ô2L�Ð.Ñ/Ý”=  q¨&ÐB°4ÐBÐBÐB¸6ÐBÐBÐBr   c                 ój   — | j                              ¦   «          t                               | |¦  «        S )zACall unlink() on all tracked shared memory, terminate the Server.)rJ  r9  rj   rk   rÓ   s     r   rk   zSharedMemoryServer.shutdown  s+   € àÔ&×-Ò-Ñ/Ô/Ð/Ý—?’? 4¨Ñ+Ô+Ð+r   c                 ó:   — | j                              |¦  «         dS )z?Adds the supplied shared memory block name to Server's tracker.N)rJ  r6  ©r3   rJ   r5  s      r   rC  z SharedMemoryServer.track_segment  s   € àÔ&×7Ò7¸ÑEÔEÐEÐEÐEr   c                 ó:   — | j                              |¦  «         dS )zˆCalls unlink() on the shared memory block with the supplied name
            and removes it from the tracker instance inside the Server.N)rJ  r;  rP  s      r   rD  z"SharedMemoryServer.release_segment  s!   € ð Ô&×6Ò6°|ÑDÔDÐDÐDÐDr   c                 ó   — | j         j        S )zbReturns a list of names of shared memory blocks that the Server
            is currently tracking.)rJ  r1  rÓ   s     r   rE  z SharedMemoryServer.list_segments!  s   € ð Ô-Ô;Ð;r   N)r?   rA   rB   rj   r¨   r4   rl   rk   rC  rD  rE  r   r   r   rB  rB  ú  s�   € € € € € à”ØFÐFÐFñGˆð	Hð 	Hð 	Hð	Cð 	Cð 	Cð	,ð 	,ð 	,ð
	Fð 	Fð 	Fð	Eð 	Eð 	Eð
	<ð 	<ð 	<ð 	<ð 	<r   rB  c                   ó4   — e Zd ZdZeZd„ Zd„ Zd„ Zd„ Z	d„ Z
dS )r   a¡  Like SyncManager but uses SharedMemoryServer instead of Server.

        It provides methods for creating and returning SharedMemory instances
        and for creating a list-like object (ShareableList) backed by shared
        memory.  It also provides methods that create and return Proxy Objects
        that support synchronization across processes (i.e. multi-process-safe
        locks and semaphores).
        c                 óâ   — t           j        dk    rddlm} |                     ¦   «          t          j        | g|¢R i |¤Ž t          j        | j	        j
        › dt          ¦   «         › �¦  «         d S )NÚposixr	   )Úresource_trackerz created by pid )rH  r#   Ú rV  Úensure_runningr   r4   r   r™   r>   r?   r   )r3   rL   rK  rV  s       r   r4   zSharedMemoryManager.__init__3  sƒ   € ÝŒw˜'Ò!Ð!ð /Ð.Ð.Ð.Ð.Ð.Ø ×/Ò/Ñ1Ô1Ð1ÝÔ  Ð7¨Ð7Ð7Ð7°Ð7Ð7Ð7ÝŒJ˜$œ.Ô1ÐMÐMÅ6Á8Ä8ÐMÐMÑNÔNÐNÐNÐNr   c                 ód   — t          j        | j        j        › dt	          ¦   «         › �¦  «         d S )Nz.__del__ by pid )r   r™   r>   r?   r   r6   s    r   r>  zSharedMemoryManager.__del__?  s/   € ÝŒJ˜$œ.Ô1ÐMÐMÅ6Á8Ä8ÐMÐMÑNÔNÐNÐNÐNr   c                 óŠ  — | j         j        t          j        k    r~| j         j        t          j        k    rt          d¦  «        ‚| j         j        t          j        k    rt          d¦  «        ‚t          d                     | j         j        ¦  «        ¦  «        ‚|                      | j	        | j
        | j        | j        ¦  «        S )z@Better than monkeypatching for now; merge into Server ultimatelyz"Already started SharedMemoryServerz!SharedMemoryManager has shut downr  )rø   rì   rë   rî   rï   r   rð   rX   r   r  rö   r÷   rù   r6   s    r   r  zSharedMemoryManager.get_serverB  s¬   € àŒ{Ô ¥E¤MÒ1Ð1Ø”;Ô$­¬Ò5Ð5Ý&Ð'KÑLÔLÐLØ”[Ô&­%¬.Ò8Ð8Ý&Ð'JÑKÔKÐKå&Ø,×3Ò3°D´KÔ4EÑFÔFñHô Hð Hà—<’< ¤°´Ø $¤¨tÔ/?ñAô Að Ar   c                 ó,  — |                       | j        | j        ¬¦  «        5 }t          j        dd|¬¦  «        }	 t          |dd|j        f¦  «         n(# t          $ r}|                     ¦   «          |‚d}~ww xY w	 ddd¦  «         n# 1 swxY w Y   |S )zoReturns a new SharedMemory instance with the specified size in
            bytes, to be tracked by the manager.r  NT)rl   ÚsizerC  )	rû   rö   r÷   r   r8  rP   r#   ÚBaseExceptionr9  )r3   r\  r´   Úsmsr¯   s        r   r8  z SharedMemoryManager.SharedMemoryO  så   € ð —’˜dœm°T´]�ÑCÔCð ÀtÝ#Ô0°¸dÈÐNÑNÔN�ðÝ˜T 4¨¸3¼8¸+ÑFÔFÐFÐFøÝ$ð ð ð Ø—J’J‘L”L�LØ�Gøøøøðøøøð Gðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ˆJs4   ¢B	»AÁB	Á
A9ÁA4Á4A9Á9B	Â	BÂBc                 ó:  — |                       | j        | j        ¬¦  «        5 }t          j        |¦  «        }	 t          |dd|j        j        f¦  «         n-# t          $ r }|j         	                    ¦   «          |‚d}~ww xY w	 ddd¦  «         n# 1 swxY w Y   |S )z�Returns a new ShareableList instance populated with the values
            from the input sequence, to be tracked by the manager.r  NrC  )
rû   rö   r÷   r   ÚShareableListrP   Úshmr#   r]  r9  )r3   r¦  r´   Úslr¯   s        r   r`  z!SharedMemoryManager.ShareableList[  sâ   € ð —’˜dœm°T´]�ÑCÔCð ÀtÝ"Ô0°Ñ:Ô:�ðÝ˜T 4¨¸2¼6¼;¸.ÑIÔIÐIÐIøÝ$ð ð ð Ø”F—M’M‘O”O�OØ�Gøøøøðøøøð Jðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ˆIs4   ¢B¸AÁBÁ
B Á A;Á;B Â BÂBÂBN)r?   rA   rB   rC   rB  r   r4   r>  r  r8  r`  r   r   r   r   r   '  sy   € € € € € ð	ð 	ð %ˆð
	Oð 
	Oð 
	Oð	Oð 	Oð 	Oð	Að 	Að 	Að
	ð 
	ð 
	ð
	ð 
	ð 
	ð 
	ð 
	r   rƒ  r¤  )UÚ__all__r–   r‚   r  r   ÚqueuerÌ  rø  rH  r   rÝ   r   rW  r
   Úcontextr   r   r   r   r   r   r   r   Ú	HAS_SHMEMra   ÚImportErrorr   rK  Ú
view_typesr,   Ú	view_typerî  r   rP   rI   r©   rY   rd   rh   rj   rë   r†   r‡   ÚXmlListenerÚ	XmlClientr}   r   rß   rP  r   r|  rŽ  rG  r‘  rš  r§  r©  r¶  rÂ  rÓ  rÜ  rê  rõ  rû  r  r  r?  r  ÚBasePoolProxyr  r   r$  rŠ   rƒ   r&  r'  r(  r)  r*  r+  r)   rá   r-  rB  r   r   r   r   ú<module>rm     sé  ðð AÐ
@Ð
@€ð €
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð*ØÐÐÐÐÐð €IØ‡N‚NÐ(Ñ)Ô)Ð)Ð)øð	 ð ð ð Ø€I€I€Iðøøøð2ð 2ð 2à €	Ô �5”; Ñ -Ô -Ð -àNÐNÐ4MÐNÑNÔN€
ðð ð àð 3ð 3€IØ€IÔ�y /Ñ2Ô2Ð2Ð2ØˆzðMð Mð Mð Mð MˆFñ Mô Mð Mð. &(¨bð )ð )ð )ð )ðIð Ið IðCð Cð Cð Cð C�)ñ Cô Cð Cð	ð 	ð 	ðAð Að AðG*ð G*ð G*ð G*ð G*ˆVñ G*ô G*ð G*ð\
ð ð ð ð ˆFñ ô ð ð Ô# ZÔ%6Ð7ØÔ)¨:Ô+?Ð@ðð €ðt'ð t'ð t'ð t'ð t'�&ñ t'ô t'ð t'ðtð ð ð ð �cñ ô ð ðm=ð m=ð m=ð m=ð m=�ñ m=ô m=ð m=ðf:ð :ð :ð* )+ð ð ð ð ð, 8<Ø7<ðð ð ð ð:
Eð 
Eð 
Eð 
Eð 
E�ñ 
Eô 
Eð 
Eð
ð 
ð 
ð 
ð 
ˆFñ 
ô 
ð 
ð+ð +ð +ð +ð/ð /ð /ð /ð /�Iñ /ô /ð /ð
+ð 
+ð 
+ð 
+ð 
+�Iñ 
+ô 
+ð 
+ðð ð ð ð �]ñ ô ð ð6	4ð 	4ð 	4ð 	4ð 	4�ñ 	4ô 	4ð 	4ðAð Að Að Að A�9ñ Aô Að Að&1ð 1ð 1ð 1ð 1�Yñ 1ô 1ð 1ð&8ð 8ð 8ð 8ð 8�ñ 8ô 8ð 8ð �˜oð 0ñ ô €ðð ð ð ð �ñ ô ð ð ˆM˜+ð (ñ ô €	ð �
ð €	Ô ð
 ˆ]˜<ð *ñ ô €
ð
 �˜kð ,ñ ô €ð
 !ØØ"ØØ ð$ð $€Ô  ðð ð ð ð �ñ ô ð ð	ð 	ð 	ð 	ð 	�+ñ 	ô 	ð 	ð × Ò �W˜eœkÑ *Ô *Ð *Ø × Ò �_ e¤kÑ 2Ô 2Ð 2Ø × Ò �W˜iœo¨zÑ :Ô :Ð :Ø × Ò �V˜Yœ^¨]Ñ ;Ô ;Ð ;Ø × Ò �W˜iœo¨}Ñ =Ô =Ð =Ø × Ò �[ )Ô"5°}Ñ EÔ EÐ EØ × Ò Ð'¨Ô)CØ"ñ$ô $ð $à × Ò �[ )Ô"5°~Ñ FÔ FÐ FØ × Ò �Y 	Ô 1°<Ñ @Ô @Ð @Ø × Ò �V˜TœY¨	Ñ 2Ô 2Ð 2Ø × Ò �V˜T 9Ñ -Ô -Ð -Ø × Ò �V˜T 9Ñ -Ô -Ð -Ø × Ò �W˜e ZÑ 0Ô 0Ð 0Ø × Ò �W˜e ZÑ 0Ô 0Ð 0Ø × Ò �[ )¨^Ñ <Ô <Ð <ð × Ò �Z¨=ÈÐ Ñ NÔ NÐ NØ × Ò �]°%Ð Ñ 8Ô 8Ð 8ð ð Qð""ð ""ð ""ð ""ð ""ñ ""ô ""ð ""ðJ*<ð *<ð *<ð *<ð *<˜Vñ *<ô *<ð *<ðZ>ð >ð >ð >ð >˜kñ >ô >ð >ð >ð >ðgQð Qs   ÁA8 Á8BÂB