grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a à”|jp|ã@sgd¢ZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z m Z ddlmZejZz$ddlZddlmZmZmZmZWn"eyÄejdkr¼‚dZYn0d Zd Zd Ze ¡Zd Zd gZe ed ƒrüd Zed g7Zejdk�rdZedg7Zefdd„Z!dd„Z"dd„Z#dd„Z$dd„Z%Gdd„dƒZ&e�rfGdd„de&ƒZ'Gdd„de&ƒZ(Gdd „d e)ƒZ*dQd!d"„Z+ejdk�r¨dRd$d%„Z,n dSd&d%„Z,Gd'd(„d(e)ƒZ-d)d*„Z.ejdk�rîGd+d,„d,e)ƒZ/d-d.„Z0d/Z1d0Z2d1Z3d2Z4d3d4„Z5d5d6„Z6Gd7d8„d8e)ƒZ7d9d:„Z8d;d<„Z9Gd=d>„d>e*ƒZ:d?d@„Z;ejdk�rrdAdB„ZhZ?dTdCdD„Z@n,ddlAZAe eAdEƒ�rŽeAjBZCneAjDZCdUdFdD„Z@ejdk�rädGdH„ZEdIdJ„ZFe Ge(eE¡dKdL„ZHdMdN„ZIe Ge'eH¡ndOdH„ZEdPdJ„ZFe Ge(eE¡dS)V)ÚClientÚListenerÚPipeÚwaitéNé)Úutil)ÚAuthenticationErrorÚBufferTooShort)Ú reduction)Ú WAIT_OBJECT_0ÚWAIT_ABANDONED_0Ú WAIT_TIMEOUTÚINFINITEÚwin32i g4@Úsha256ÚAF_INETÚAF_UNIXÚAF_PIPEcCs t ¡|S©N©ÚtimeÚ monotonic)Útimeout©rú2/usr/lib64/python3.9/multiprocessing/connection.pyÚ _init_timeout?srcCs t ¡|kSrr)ÚtrrrÚ_check_timeoutBsrcCsX|dkr dS|dkr&tjdt ¡d�S|dkrLtjdt ¡ttƒfdd�Std ƒ‚dS) Nr)Ú localhostrrz listener-)ÚprefixÚdirrz\\.\pipe\pyc-%d-%d-Úzunrecognized family) ÚtempfileÚmktemprÚ get_temp_dirÚosÚgetpidÚnextÚ _mmap_counterÚ ValueError©ÚfamilyrrrÚarbitrary_addressIsÿÿr,cCsJtjdkr|dkrtd|ƒ‚tjdkrF|dkrFtt|ƒsFtd|ƒ‚dS)NrrzFamily %s is not recognized.r)ÚsysÚplatformr)ÚhasattrÚsocketr*rrrÚ_validate_familyWs   r1cCsTt|ƒtkrdSt|ƒtur*| d¡r*dSt|ƒtus@t |¡rDdStd|ƒ‚dS)Nrz\\rrzaddress type of %r unrecognized)ÚtypeÚtupleÚstrÚ startswithrÚis_abstract_socket_namespacer))ÚaddressrrrÚ address_typecs r8c@s¾eZdZdZd+dd„Zdd„Zdd„Zd d „Zd d „Zd d„Z e dd„ƒZ e dd„ƒZ e dd„ƒZ dd„Zdd„Zd,dd„Zdd„Zd-dd„Zd.d d!„Zd"d#„Zd/d%d&„Zd'd(„Zd)d*„ZdS)0Ú_ConnectionBaseNTcCs>| ¡}|dkrtdƒ‚|s(|s(tdƒ‚||_||_||_dS)Nrzinvalid handlez6at least one of `readable` and `writable` must be True)Ú __index__r)Ú_handleÚ _readableÚ _writable)ÚselfÚhandleÚreadableÚwritablerrrÚ__init__ysÿz_ConnectionBase.__init__cCs|jdur| ¡dSr©r;Ú_close©r>rrrÚ__del__†s z_ConnectionBase.__del__cCs|jdurtdƒ‚dS)Nzhandle is closed)r;ÚOSErrorrErrrÚ _check_closedŠs z_ConnectionBase._check_closedcCs|jstdƒ‚dS)Nzconnection is write-only)r<rGrErrrÚ_check_readableŽsz_ConnectionBase._check_readablecCs|jstdƒ‚dS)Nzconnection is read-only)r=rGrErrrÚ_check_writable’sz_ConnectionBase._check_writablecCs"|jrd|_n| ¡tdƒ‚dS)NFzbad message length)r=r<ÚcloserGrErrrÚ_bad_message_length–sz#_ConnectionBase._bad_message_lengthcCs |jduSr©r;rErrrÚclosed�sz_ConnectionBase.closedcCs|jSr)r<rErrrr@¢sz_ConnectionBase.readablecCs|jSr)r=rErrrrA§sz_ConnectionBase.writablecCs| ¡|jSr)rHr;rErrrÚfileno¬sz_ConnectionBase.filenocCs*|jdur&z| ¡Wd|_nd|_0dSrrCrErrrrK±s  z_ConnectionBase.closercCs¨| ¡| ¡t|ƒ}|jdkr.tt|ƒƒ}t|ƒ}|dkrFtdƒ‚||krVtdƒ‚|durh||}n&|dkrztdƒ‚n|||krŽtdƒ‚| ||||…¡dS)Nrrzoffset is negativezbuffer length < offsetzsize is negativezbuffer length < offset + size)rHrJÚ memoryviewÚitemsizeÚbytesÚlenr)Ú _send_bytes)r>ÚbufÚoffsetÚsizeÚmÚnrrrÚ send_bytes¹s"     z_ConnectionBase.send_bytescCs$| ¡| ¡| t |¡¡dSr)rHrJrTÚ_ForkingPicklerÚdumps©r>ÚobjrrrÚsendÎsz_ConnectionBase.sendcCsJ| ¡| ¡|dur(|dkr(tdƒ‚| |¡}|durB| ¡| ¡S)Nrznegative maxlength)rHrIr)Ú _recv_bytesrLÚgetvalue)r>Ú maxlengthrUrrrÚ recv_bytesÔs z_ConnectionBase.recv_bytescCsÄ| ¡| ¡t|ƒ�˜}|j}|t|ƒ}|dkr>tdƒ‚n||krNtdƒ‚| ¡}| ¡}|||krvt|  ¡ƒ‚|  d¡|  ||||||…¡|WdƒS1s¶0YdS)Nrznegative offsetzoffset too large) rHrIrPrQrSr)r`Útellr raÚseekÚreadinto)r>rUrVrXrQÚbytesizeÚresultrWrrrÚrecv_bytes_intoás$        ÿz_ConnectionBase.recv_bytes_intocCs&| ¡| ¡| ¡}t | ¡¡Sr)rHrIr`r[ÚloadsÚ getbuffer)r>rUrrrÚrecvúsz_ConnectionBase.recvçcCs| ¡| ¡| |¡Sr)rHrIÚ_poll©r>rrrrÚpollsz_ConnectionBase.pollcCs|SrrrErrrÚ __enter__sz_ConnectionBase.__enter__cCs | ¡dSr©rK©r>Úexc_typeÚ exc_valueÚexc_tbrrrÚ__exit__ sz_ConnectionBase.__exit__)TT)rN)N)r)rm)Ú__name__Ú __module__Ú __qualname__r;rBrFrHrIrJrLÚpropertyrNr@rArOrKrZr_rcrirlrprqrwrrrrr9vs.       r9c@s@eZdZdZejfdd„Zdd„Zd dd„Zd d „Z d d „Z dS)ÚPipeConnectionFcCs||jƒdSrrM)r>Z _CloseHandlerrrrDszPipeConnection._closec Csvtj|j|dd�\}}zJz |tjkr6t |jgdt¡}Wn| ¡‚Yn0W| d¡\}}n| d¡\}}0dS)NT©Ú overlappedF) Ú_winapiZ WriteFiler;ÚERROR_IO_PENDINGÚWaitForMultipleObjectsÚeventrÚcancelÚGetOverlappedResult)r>rUÚovÚerrÚwaitresZnwrittenrrrrTs  ÿ  zPipeConnection._send_bytesNc Cs€|jrd|_t ¡S|dur dnt|dƒ}�z tj|j|dd�\}}z†z |tjkrdt |j gdt ¡}Wn|  ¡‚Yn0W|  d¡\}}|dkr²t ¡}|  | ¡¡|WS|tjkrÊ| ||¡WSnh|  d¡\}}|dk�r t ¡}|  | ¡¡|YWS|tjk�r2| ||¡YWS0Wn<t�yr}z"|jtjk�r\t‚n‚WYd}~n d}~00tdƒ‚dS)NFé€Tr}rz.shouldn't get here; expected KeyboardInterrupt)Ú_got_empty_messageÚioÚBytesIOÚminrÚReadFiler;r€r�r‚rrƒr„ÚwriterkZERROR_MORE_DATAÚ_get_more_datarGÚwinerrorÚERROR_BROKEN_PIPEÚEOFErrorÚ RuntimeError) r>ÚmaxsizeZbsizer…r†r‡ZnreadÚfÚerrrr`*sH ÿ   ÿ  ú   zPipeConnection._recv_bytescCs.|jst |j¡ddkrdStt|g|ƒƒS)NrT)r‰rÚ PeekNamedPiper;ÚboolrrorrrrnJs ÿzPipeConnection._pollcCs€| ¡}t ¡}| |¡t |j¡d}|durJt|ƒ||krJ| ¡tj |j|dd�\}}|  d¡\}}| | ¡¡|S)NrTr}) rkrŠr‹rŽrr—r;rSrLr�r„)r>r…r”rUr•Úleftr†Zrbytesrrrr�Ps zPipeConnection._get_more_data)N) rxryrzr‰rÚ CloseHandlerDrTr`rnr�rrrrr|s  r|c@sxeZdZer(ejfdd„ZejZej Z ne j fdd„Ze j Ze jZ efdd„Ze fdd„Zdd „Zdd d „Zd d„Zd S)Ú ConnectioncCs||jƒdSrrM©r>rDrrrrDgszConnection._closecCs||jƒdSrrMrœrrrrDlscCs8t|ƒ}||j|ƒ}||8}|dkr&q4||d…}qdS©Nr)rSr;)r>rUrŽÚ remainingrYrrrÚ_sendqs  zConnection._sendcCsbt ¡}|j}|}|dkr^|||ƒ}t|ƒ}|dkrJ||krBt‚ntdƒ‚| |¡||8}q|S)Nrzgot end of file during message)rŠr‹r;rSr’rGrŽ)r>rWÚreadrUr?ržÚchunkrYrrrÚ_recvzs   zConnection._recvcCs„t|ƒ}|dkrHt dd¡}t d|¡}| |¡| |¡| |¡n8t d|¡}|dkrr| |¡| |¡n| ||¡dS)Niÿÿÿú!iéÿÿÿÿú!Qi@)rSÚstructÚpackrŸ)r>rUrYÚ pre_headerÚheaderrrrrTŠs        zConnection._send_bytesNcCs^| d¡}t d| ¡¡\}|dkr@| d¡}t d| ¡¡\}|durT||krTdS| |¡S)Nér£r¤ér¥)r¢r¦Úunpackra)r>r”rUrWrrrr`¡s  zConnection._recv_bytescCst|g|ƒ}t|ƒSr)rr˜)r>rÚrrrrrn«s zConnection._poll)N)rxryrzrÚ_multiprocessingZ closesocketrDr_Ú_writerlÚ_readr%rKrŽr rŸr¢rTr`rnrrrrr›`s  r›c@sNeZdZddd„Zdd„Zdd„Zed d „ƒZed d „ƒZd d„Z dd„Z dS)rNrcCsp|p|rt|ƒpt}|pt|ƒ}t|ƒ|dkr>t||ƒ|_nt|||ƒ|_|durft|tƒsft dƒ‚||_ dS©Nrzauthkey should be a byte string) r8Údefault_familyr,r1Ú PipeListenerÚ _listenerÚSocketListenerÚ isinstancerRÚ TypeErrorÚ_authkey)r>r7r+ÚbacklogÚauthkeyrrrrB»sÿ zListener.__init__cCs>|jdurtdƒ‚|j ¡}|jr:t||jƒt||jƒ|S)Nzlistener is closed)r´rGÚacceptr¸Údeliver_challengeÚanswer_challenge)r>Úcrrrr»Ës    zListener.acceptcCs |j}|durd|_| ¡dSr)r´rK)r>ÚlistenerrrrrKÙszListener.closecCs|jjSr)r´Ú_addressrErrrr7âszListener.addresscCs|jjSr)r´Ú_last_acceptedrErrrÚ last_acceptedæszListener.last_acceptedcCs|SrrrErrrrqêszListener.__enter__cCs | ¡dSrrrrsrrrrwíszListener.__exit__)NNrN) rxryrzrBr»rKr{r7rÂrqrwrrrrr´s    rcCsh|p t|ƒ}t|ƒ|dkr&t|ƒ}nt|ƒ}|durHt|tƒsHtdƒ‚|durdt||ƒt||ƒ|Sr±) r8r1Ú PipeClientÚ SocketClientr¶rRr·r½r¼)r7r+rºr¾rrrrñs    rTcCsj|r>t ¡\}}| d¡| d¡t| ¡ƒ}t| ¡ƒ}n$t ¡\}}t|dd�}t|dd�}||fS)NTF©rA©r@)r0Ú socketpairÚ setblockingr›Údetachr%Úpipe)ÚduplexÚs1Ús2Úc1Úc2Úfd1Úfd2rrrrs       rc Csâtdƒ}|r*tj}tjtjB}tt}}ntj}tj}dt}}t ||tjBtj Btj tj Btj Bd||tj tj¡}t ||dtjtjtjtj¡}t |tj dd¡tj|dd�}| d¡\} } t||d�} t||d�} | | fS)NrrrTr}rÅrÆ)r,rÚPIPE_ACCESS_DUPLEXÚ GENERIC_READÚ GENERIC_WRITEÚBUFSIZEZPIPE_ACCESS_INBOUNDÚCreateNamedPipeÚFILE_FLAG_OVERLAPPEDÚFILE_FLAG_FIRST_PIPE_INSTANCEÚPIPE_TYPE_MESSAGEÚPIPE_READMODE_MESSAGEÚ PIPE_WAITÚNMPWAIT_WAIT_FOREVERÚNULLÚ CreateFileÚ OPEN_EXISTINGÚSetNamedPipeHandleStateÚConnectNamedPiper„r|) rËr7ZopenmodeÚaccessZobsizeZibsizeZh1Zh2r~Ú_r†rÎrÏrrrrs<    ÿ ÿ ù þ ÿ  c@s&eZdZd dd„Zdd„Zdd„ZdS) rµrcCsÆt tt|ƒ¡|_zRtjdkr2|j tjtjd¡|j d¡|j  |¡|j  |¡|j  ¡|_ Wnt y‚|j ¡‚Yn0||_d|_|dkr¼t |¡s¼tj|tj|fdd�|_nd|_dS)NÚposixrTrr©ÚargsÚ exitpriority)r0ÚgetattrÚ_socketr%ÚnameÚ setsockoptÚ SOL_SOCKETÚ SO_REUSEADDRrÈÚbindÚlistenÚ getsocknamerÀrGrKÚ_familyrÁrr6ÚFinalizeÚunlinkÚ_unlink)r>r7r+r¹rrrrBKs(  ÿ      ÿ zSocketListener.__init__cCs&|j ¡\}|_| d¡t| ¡ƒS©NT)rér»rÁrÈr›rÉ©r>Úsrrrr»ds zSocketListener.acceptcCsJz(|j ¡W|j}|durFd|_|ƒn|j}|durDd|_|ƒ0dSr)rérKrô)r>rórrrrKis ýzSocketListener.closeN)r)rxryrzrBr»rKrrrrrµGs rµcCs\t|ƒ}t tt|ƒ¡�0}| d¡| |¡t| ¡ƒWdƒS1sN0YdSrõ)r8r0rèrÈÚconnectr›rÉ)r7r+r÷rrrrÄss   rÄc@s4eZdZd dd„Zd dd„Zdd„Zed d „ƒZdS) r³NcCsL||_|jdd�g|_d|_t d|j¡tj|tj|j|jfdd�|_ dS)NT)Úfirstz listener created with address=%rrrå) rÀÚ _new_handleÚ _handle_queuerÁrÚ sub_debugròr³Ú_finalize_pipe_listenerrK)r>r7r¹rrrrB‡s þzPipeListener.__init__Fc CsHtjtjB}|r|tjO}t |j|tjtjBtjBtj t t tj tj ¡Sr) rrÒr×rØrÖrÀrÙrÚrÛZPIPE_UNLIMITED_INSTANCESrÕrÜrÝ)r>rùÚflagsrrrrú’s   ÿûzPipeListener._new_handlec CsÆ|j | ¡¡|j d¡}ztj|dd�}Wn2ty`}z|jtjkrL‚WYd}~nfd}~00zJzt  |j gdt ¡}Wn |  ¡t  |¡‚Yn0W| d¡\}}n| d¡\}}0t|ƒS)NrTr}F)rûÚappendrúÚpoprrárGr�Z ERROR_NO_DATAr�r‚rrƒršr„r|)r>r?r…r–Úresrãr†rrrr»žs(   ÿ  ÿzPipeListener.acceptcCs$t d|¡|D]}t |¡qdS)Nz closing listener with address=%r)rrürrš)Úqueuer7r?rrrrýµs z$PipeListener._finalize_pipe_listener)N)F)rxryrzrBrúr»Ú staticmethodrýrrrrr³ƒs  r³c Csžtƒ}z6t |d¡t |tjtjBdtjtjtjtj¡}Wq„t y|}z(|j tj tj fvsft |ƒrh‚WYd}~qd}~00q„q‚t |tjdd¡t|ƒS)Néèr)rrZ WaitNamedPiperÞrÓrÔrÝrßr×rGr�ZERROR_SEM_TIMEOUTZERROR_PIPE_BUSYrràrÚr|)r7rÚhr–rrrrûs*   ýÿÿ ÿrÃés #CHALLENGE#s #WELCOME#s #FAILURE#cCs‚ddl}t|tƒs$td t|ƒ¡ƒ‚t t¡}|  t |¡|  ||t ¡  ¡}| d¡}||krl|  t¡n|  t¡tdƒ‚dS)Nrú Authkey must be bytes, not {0!s}ézdigest received was wrong)Úhmacr¶rRr)Úformatr2r%ÚurandomÚMESSAGE_LENGTHrZÚ CHALLENGEÚnewÚHMAC_DIGEST_NAMEÚdigestrcÚWELCOMEÚFAILUREr©Ú connectionrºr ÚmessagerÚresponserrrr¼às  ÿ    r¼cCsxddl}t|tƒs$td t|ƒ¡ƒ‚| d¡}|ttƒd…}|  ||t ¡  ¡}|  |¡| d¡}|t krttdƒ‚dS)Nrrrzdigest sent was rejected)r r¶rRr)r r2rcrSr rrrrZrrrrrrr½ïs  ÿ   r½c@s$eZdZdd„Zdd„Zdd„ZdS)ÚConnectionWrappercCs6||_||_||_dD]}t||ƒ}t|||ƒqdS)N)rOrKrprcrZ)Ú_connÚ_dumpsÚ_loadsrèÚsetattr)r>Úconnr\rjÚattrr^rrrrBs  zConnectionWrapper.__init__cCs| |¡}|j |¡dSr)rrrZ)r>r^r÷rrrr_ s zConnectionWrapper.sendcCs|j ¡}| |¡Sr)rrcrrörrrrl s zConnectionWrapper.recvN)rxryrzrBr_rlrrrrrsrcCst |fdddd¡ d¡S)Nrúutf-8)Ú xmlrpclibr\Úencode)r^rrrÚ _xml_dumpssr!cCst | d¡¡\\}}|S)Nr)rrjÚdecode)r÷r^ÚmethodrrrÚ _xml_loadssr$c@seZdZdd„ZdS)Ú XmlListenercCs"ddlmat |¡}t|ttƒSr�)Ú xmlrpc.clientÚclientrrr»rr!r$r]rrrr»s  zXmlListener.acceptN)rxryrzr»rrrrr%sr%cOs"ddlmatt|i|¤ŽttƒSr�)r&r'rrrr!r$)ræÚkwdsrrrÚ XmlClients r)cCs®t|ƒ}g}|rªt |d|¡}|tkr*qªn\t|krFtt|ƒkrTnn |t8}n2t|krptt|ƒkr~nn |t8}ntdƒ‚| ||¡||dd…}d}q |S)NFzShould not get hererr) Úlistrr�r r rSr r“rÿ)ZhandlesrÚLÚreadyrrrrÚ_exhaustive_wait)s    r-c s |durt}n|dkrd}nt|ddƒ}t|ƒ}i‰g}tƒ‰tƒ}�zê|D�](}zt|dƒ}Wnty‚|ˆ| ¡<YqP0zt |ƒdd¡\}}Wn:t yÖ}z"d|j }}|t vr‚WYd}~n d}~00|tj krø|  |¡|ˆ|j<qP|�rlt ¡dd…dk�rlz| d¡\} }Wn,t �yR}z|j }WYd}~n d}~00|�slt|d ƒ�rld|_ˆ |¡d}qPtˆ ¡|ƒ}W|D]}| ¡�q�|D]Ž}z| d¡\} }Wn8t �yò}z|j }|t v�rÞ‚WYd}~n d}~00|tjk�r¤ˆ|j}ˆ |¡|dk�r¤t|d ƒ�r¤d|_�q¤nª|D]}| ¡�q:|D]Ž}z| d¡\} }Wn8t �yœ}z|j }|t v�rˆ‚WYd}~n d}~00|tjk�rNˆ|j}ˆ |¡|dk�rNt|d ƒ�rNd|_�qN0ˆ ‡fd d „|Dƒ¡‡fd d „|DƒS)Nrrgà?rOTé)ér.Fr‰c3s|]}ˆ|VqdSrr)Ú.0r)Úwaithandle_to_objrrÚ Šózwait..csg|]}|ˆvr|‘qSrr)r0Úo)Ú ready_objectsrrÚ ‹r3úwait..)rÚintr*ÚsetrèÚAttributeErrorr:rr�rGr�Ú _ready_errorsr€rÿr‚r-Úgetwindowsversionr„r/r‰Úaddr-ÚkeysrƒZERROR_OPERATION_ABORTEDÚupdate) Ú object_listrZov_listZ ready_handlesr4rOr…r†r–rãr)r5r1rr?s†               î        rÚ PollSelectorcCs°tƒ�–}|D]}| |tj¡q |dur4t ¡|}| |¡}|r^dd„|DƒWdƒS|dur4|t ¡}|dkr4|WdƒSq4Wdƒn1s¢0YdS)NcSsg|]\}}|j‘qSr)Úfileobj)r0ÚkeyÚeventsrrrr6©r3r7r)Ú _WaitSelectorÚregisterÚ selectorsÚ EVENT_READrrÚselect)r@rÚselectorr^Údeadliner,rrrr™s   cCsf| ¡}t |tjtj¡�8}ddlm}| |¡}t||j |j ffWdƒS1sX0YdS)Nr)Úresource_sharer) rOr0ÚfromfdrÚ SOCK_STREAMr!rLZ DupSocketÚrebuild_connectionr@rA)rr?r÷rLÚdsrrrÚreduce_connectionµs   rQcCs| ¡}t| ¡||ƒSr©rÉr›)rPr@rAÚsockrrrrO»srOcCsB|jr tjnd|jrtjndB}t | ¡|¡}t||j|jffSr�) r@rZFILE_GENERIC_READrAZFILE_GENERIC_WRITEr Z DupHandlerOÚrebuild_pipe_connection)rrâÚdhrrrÚreduce_pipe_connectionÀs ÿrVcCs| ¡}t|||ƒSr)rÉr|)rUr@rAr?rrrrTÅsrTcCs t | ¡¡}t||j|jffSr)r ÚDupFdrOrOr@rA)rÚdfrrrrQËscCs| ¡}t|||ƒSrrR)rXr@rAÚfdrrrrOÎs)NN)T)T)N)N)JÚ__all__rŠr%r-r0r¦rr"Ú itertoolsr®r!rrr Úcontextr ÚForkingPicklerr[rr r r rÚ ImportErrorr.rÕÚCONNECTION_TIMEOUTrÚcountr(r²Úfamiliesr/rrr,r1r8r9r|r›ÚobjectrrrrµrÄr³rÃr r rrr¼r½rr!r$r%r)r-r‘ZERROR_NETNAME_DELETEDr;rrGrArEÚSelectSelectorrQrOrFrVrTrrrrÚ s¤           PT=    ,, 8   P