ó
    øÞ jL&  ã                   ón   • S SK r S SKrS SKrS SKrS SKJr   " S S\5      r " S S5      r " S S5      r	g)	é    N)Úclusterc                   ó   • \ rS rSrSrg)Ú
StopServeré   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚR/var/www/html/gaurav/venv/lib/python3.13/site-packages/asyncpg/_testbase/fuzzer.pyr   r      s   † Úr   r   c                   óÊ   • \ rS rSrSSSS.S\S\R                  \   S\S\S	\R                  \   S
S4S jjr	S r
S rS rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚTCPFuzzingProxyé   z	127.0.0.1N)Úlistening_addrÚlistening_portÚsettingsr   r   Úbackend_hostÚbackend_portr   Úreturnc                ó¶   • Xl         X l        X0l        X@l        U=(       d    0 U l        S U l        S U l        S U l        S U l        0 U l	        S U l
        S U l        g ©N)r   r   r   r   r   ÚloopÚconnectivityÚconnectivity_lossÚ
stop_eventÚconnectionsÚsockÚlisten_task)Úselfr   r   r   r   r   s         r   Ú__init__ÚTCPFuzzingProxy.__init__   s\   € ð -ÔØ,ÔØ(ÔØ(ÔØ Ÿ BˆŒØˆŒ	Ø ˆÔØ!%ˆÔØˆŒØˆÔØˆŒ	ØˆÕr   c              ƒ   ó˜  #   • [         R                  " U5      n[         R                  " U R                  R                  5       5      n [         R                  " X#/[         R                  S9I S h  v•N   U R                  R                  5       (       a
  [        5       eUR                  5       UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         $ $  Nˆ! UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         f f = f7f©N)Úreturn_when)
ÚasyncioÚensure_futurer   ÚwaitÚFIRST_COMPLETEDÚis_setr   ÚresultÚdoneÚcancel)r!   ÚworkÚ	work_taskÚstop_event_tasks       r   Ú_waitÚTCPFuzzingProxy._wait&   sÿ   é € Ü×)Ò)¨$Ó/ˆ	Ü!×/Ò/°·±×0DÑ0DÓ0FÓGˆð	)Ü—,’,ØÐ,Ü#×3Ñ3ñ5÷ 5ð 5ð �‰×%Ñ%×'Ñ'Ü “lÐ"à ×'Ñ'Ó)à—>‘>×#Ñ#Ø× Ñ Ô"Ø"×'Ñ'×)Ñ)Ø×&Ñ&Õ(ð *ñ5øð —>‘>×#Ñ#Ø× Ñ Ô"Ø"×'Ñ'×)Ñ)Ø×&Ñ&Õ(ð *üs2   ‚AE
Á'C: Á/C8Á0<C: Â,AE
Ã8C: Ã:AEÅE
c                 óê   • [         R                  " 5       n[         R                  " U R                  U4S9U l        U R                  R                  5         UR                  SS9(       d  [        S5      eg )N)ÚtargetÚargsé   )Útimeoutzfuzzer proxy failed to start)Ú	threadingÚEventÚThreadÚ_start_threadÚthreadÚstartr)   ÚRuntimeError)r!   Ústarteds     r   r>   ÚTCPFuzzingProxy.start9   s\   € Ü—/’/Ó#ˆÜ×&Ò&Ø×%Ñ%¨W¨Jñ8ˆŒà�‰×ÑÔØ�|‰| Aˆ|Ö&ÜÐ=Ó>Ð>ð 'r   c                 ó‚   • U R                   R                  U R                  5        U R                  R	                  5         g r   )r   Úcall_soon_threadsafeÚ_stopr=   Újoin©r!   s    r   ÚstopÚTCPFuzzingProxy.stopA   s(   € Ø�	‰	×&Ñ& t§z¡zÔ2Ø�‰×ÑÕr   c                 ó8   • U R                   R                  5         g r   )r   ÚsetrF   s    r   rD   ÚTCPFuzzingProxy._stopE   s   € Ø�‰×ÑÕr   c                 ó`  • [         R                  " 5       U l        [         R                  " U R                  5        [         R                  " 5       U l        U R
                  R                  5         [         R                  " 5       U l        [         R                  " 5       U l        U R                  c  [        R                  " 5       U l	        [        R                  " 5       U l        U R                  R                  U R                  U R                  45        U R                  R!                  S5        U R                  R#                  S5         U R                  R%                  U R'                  U5      5        U R                  R)                  5         g ! U R                  R)                  5         f = f)Né2   F)r'   Únew_event_loopr   Úset_event_loopr:   r   rJ   r   r   r   r   Úfind_available_portÚsocketr   Úbindr   ÚlistenÚsetblockingÚrun_until_completeÚ_mainÚclose)r!   Ústarted_events     r   r<   ÚTCPFuzzingProxy._start_threadH   s  € Ü×*Ò*Ó,ˆŒ	Ü×Ò˜tŸy™yÔ)ä#ŸMšM›OˆÔØ×Ñ×ÑÔÜ!(§¢£ˆÔÜ!Ÿ-š-›/ˆŒà×ÑÑ&Ü")×"=Ò"=Ó"?ˆDÔä—M’M“OˆŒ	Ø�	‰	�‰˜×+Ñ+¨T×-@Ñ-@ÐAÔBØ�	‰	×Ñ˜ÔØ�	‰	×Ñ˜eÔ$ð	Ø�I‰I×(Ñ(¨¯©°MÓ)BÔCà�I‰I�O‰OÕøˆD�I‰I�O‰OÕús   Å*F ÆF-c              ƒ   ó„  #   • [         R                  " U R                  5       5      U l        UR	                  5          U R                  I S h  v•N   [        U R                  5       H  nUR                  5         M     [         R                  " S5      I S h  v•N   [        U R                  S5      (       a3  U R                  R                  U R                  R                  5       5        U R                  R                  5         g  N· No! [        U R                  5       H  nUR                  5         M     [         R                  " S5      I S h  v•N    [        U R                  S5      (       a3  U R                  R                  U R                  R                  5       5        U R                  R                  5         f = f7f)Ng{®Gáz„?Úremove_reader)r'   r(   rS   r    rJ   Úlistr   rW   ÚsleepÚhasattrr   r[   r   Úfileno)r!   rX   Úcs      r   rV   ÚTCPFuzzingProxy._main^   s'  é € Ü"×0Ò0°·±³Ó?ˆÔà×ÑÔð	Ø×"Ñ"×"Ð"ä˜$×*Ñ*Ö+�Ø—‘–	ñ ,ä—-’- Ó%×%Ð%Ü�t—y‘y /×2Ñ2Ø—	‘	×'Ñ'¨¯	©	×(8Ñ(8Ó(:Ô;Ø�I‰I�O‰OÕñ #ñ &øô ˜$×*Ñ*Ö+�Ø—‘–	ñ ,ä—-’- Ó%×%Ñ%Ü�t—y‘y /×2Ñ2Ø—	‘	×'Ñ'¨¯	©	×(8Ñ(8Ó(:Ô;Ø�I‰I�O‰OÕüsP   ‚:G ½D ÁDÁD ÁAG ÂDÂA-G ÄD ÄG ÄAF=ÅEÅA.F=Æ=G c              ƒ   ó  #   •   U R                  U R                  R                  U R                  5      5      I S h  v•N u  p[        R                  " 5       nUR                  S5        U R                  U R                  R                  X0R                  U R                  45      5      I S h  v•N   [        XU 5      nU R                  R                  UR                  5       5      nXPR                  U'   Mò   N¹ NK! [         a     g f = f7f©NF)r2   r   Úsock_acceptr   rQ   rT   Úsock_connectr   r   r   Ú
ConnectionÚcreate_taskÚhandler   )r!   Úclient_sockÚ_Úbackend_sockÚconnÚ	conn_tasks         r   rS   ÚTCPFuzzingProxy.listenl   sé   é € Øð
Ø'+§z¡zØ—I‘I×)Ñ)¨$¯)©)Ó4ó(6÷ "6‘�ô  &Ÿ}š}›�Ø×(Ñ(¨Ô/à—j‘j §¡×!7Ñ!7Ø ×#4Ñ#4°d×6GÑ6GÐ"Hó"Jó K÷ Kð Kô
 ˜k¸Ó>ˆDØŸ	™	×-Ñ-¨d¯k©k«mÓ<ˆIØ%.×Ñ˜TÑ"ñ ñ"6ñKøäó ÙðüsL   ‚D
…7C: ¼C6½A/C: Â,C8Â-C: Â1AD
Ã6C: Ã8C: Ã:
DÄD
ÄDÄD
c                 óN   • U R                   R                  U R                  5        g r   )r   rC   Ú_trigger_connectivity_lossrF   s    r   Útrigger_connectivity_lossÚ)TCPFuzzingProxy.trigger_connectivity_loss~   s   € Ø�	‰	×&Ñ& t×'FÑ'FÕGr   c                 ól   • U R                   R                  5         U R                  R                  5         g r   )r   Úclearr   rJ   rF   s    r   rp   Ú*TCPFuzzingProxy._trigger_connectivity_loss�   s&   € Ø×Ñ×ÑÔ!Ø×Ñ×"Ñ"Õ$r   c                 óN   • U R                   R                  U R                  5        g r   )r   rC   Ú_restore_connectivityrF   s    r   Úrestore_connectivityÚ$TCPFuzzingProxy.restore_connectivity…   s   € Ø�	‰	×&Ñ& t×'AÑ'AÕBr   c                 ól   • U R                   R                  5         U R                  R                  5         g r   )r   rJ   r   rt   rF   s    r   rw   Ú%TCPFuzzingProxy._restore_connectivityˆ   s&   € Ø×Ñ×ÑÔØ×Ñ×$Ñ$Õ&r   c                 ó$   • U R                  5         g r   )rx   rF   s    r   ÚresetÚTCPFuzzingProxy.resetŒ   s   € Ø×!Ñ!Õ#r   c                 ód   • U R                   R                  US 5      nUb  UR                  5         g g r   )r   Úpopr.   )r!   Ú
connectionrm   s      r   Ú_close_connectionÚ!TCPFuzzingProxy._close_connection�   s1   € Ø×$Ñ$×(Ñ(¨°TÓ:ˆ	ØÑ Ø×ÑÕð !r   c                 óˆ   • [        U R                  5       H)  nU R                  R                  U R                  U5        M+     g r   )r\   r   r   rC   r‚   )r!   rl   s     r   Úclose_all_connectionsÚ%TCPFuzzingProxy.close_all_connections”   s1   € Ü˜×)Ñ)Ö*ˆDØ�I‰I×*Ñ*¨4×+AÑ+AÀ4ÖHò +r   )r   r   r   r   r   r    r   r   r   r   r   r   r=   )r   r	   r
   r   ÚstrÚtypingÚOptionalÚintÚdictr"   r2   r>   rG   rD   r<   rV   rS   rq   rp   rx   rw   r}   r‚   r…   r   r   r   r   r   r      sž   † Ø.9Ø6:à15ò ¨#ð  Ø!'§¡°Ñ!5ð à"ð à25ð ð "Ÿ?™?¨4Ñ0ð ð ;?õ ò")ò&?òòòò,ò/ò$Hò%òCò'ò$òõ
Ir   r   c                   ó>   • \ rS rSrS rS rS rS rS rS r	S r
S	rg
)rf   é™   c                 ó¸   • Xl         X l        X0l        UR                  U l        UR                  U l        UR
                  U l        S U l        S U l        SU l        g rc   )	ri   rk   Úproxyr   r   r   Úproxy_to_backend_taskÚproxy_from_backend_taskÚ	is_closed)r!   ri   rk   r�   s       r   r"   ÚConnection.__init__š   sQ   € Ø&ÔØ(ÔØŒ
Ø—J‘JˆŒ	Ø!×.Ñ.ˆÔØ!&×!8Ñ!8ˆÔØ%)ˆÔ"Ø'+ˆÔ$Øˆ�r   c                 ó$  • U R                   (       a  g SU l         U R                  b!  U R                  R                  5         S U l        U R                  b!  U R                  R                  5         S U l        U R                  R                  U 5        g )NT)r’   r�   r.   r‘   r�   r‚   rF   s    r   rW   ÚConnection.close¥   sq   € Ø�>�>ØàˆŒà×%Ñ%Ñ1Ø×&Ñ&×-Ñ-Ô/Ø)-ˆDÔ&à×'Ñ'Ñ3Ø×(Ñ(×/Ñ/Ô1Ø+/ˆDÔ(à�
‰
×$Ñ$ TÕ*r   c              ƒ   ó|  #   • [         R                  " U R                  5       5      U l        [         R                  " U R	                  5       5      U l         [         R                  " U R                  U R
                  /[         R                  S9I S h  v•N   U R                  b  U R                  R                  5         U R
                  b  U R
                  R                  5         U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  5         U R                  R                  5         g  GNT! U R                  b  U R                  R                  5         U R
                  b  U R
                  R                  5         U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  U R                  R                  5       5        U R                  R                  5         U R                  R                  5         f = f7fr%   )r'   r(   Úproxy_to_backendr�   Úproxy_from_backendr‘   r)   r*   r.   r   r[   ri   r_   Úremove_writerrk   rW   rF   s    r   rh   ÚConnection.handleµ   sS  é € Ü%,×%:Ò%:Ø×!Ñ!Ó#ó&%ˆÔ"ô (/×'<Ò'<Ø×#Ñ#Ó%ó('ˆÔ$ð	&Ü—,’,Ø×+Ñ+¨T×-IÑ-IÐJÜ#×3Ñ3ñ5÷ 5ð 5ð
 ×)Ñ)Ñ5Ø×*Ñ*×1Ñ1Ô3à×+Ñ+Ñ7Ø×,Ñ,×3Ñ3Ô5ð �I‰I×#Ñ# D×$4Ñ$4×$;Ñ$;Ó$=Ô>Ø�I‰I×#Ñ# D×$4Ñ$4×$;Ñ$;Ó$=Ô>Ø�I‰I×#Ñ# D×$5Ñ$5×$<Ñ$<Ó$>Ô?Ø�I‰I×#Ñ# D×$5Ñ$5×$<Ñ$<Ó$>Ô?à×Ñ×"Ñ"Ô$Ø×Ñ×#Ñ#Õ%ò+5øð
 ×)Ñ)Ñ5Ø×*Ñ*×1Ñ1Ô3à×+Ñ+Ñ7Ø×,Ñ,×3Ñ3Ô5ð �I‰I×#Ñ# D×$4Ñ$4×$;Ñ$;Ó$=Ô>Ø�I‰I×#Ñ# D×$4Ñ$4×$;Ñ$;Ó$=Ô>Ø�I‰I×#Ñ# D×$5Ñ$5×$<Ñ$<Ó$>Ô?Ø�I‰I×#Ñ# D×$5Ñ$5×$<Ñ$<Ó$>Ô?à×Ñ×"Ñ"Ô$Ø×Ñ×#Ñ#Õ%üs2   ‚AL<Á<G) ÂG&ÂG) ÂEL<Ç&G) Ç)EL9Ì9L<c              ƒ   ó  #   • [         R                  " U R                  R                  X5      5      n[         R                  " U R                  R                  5       5      n [         R
                  " X4/[         R                  S9I S h  v•N   U R                  R                  5       (       am   U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         g g g UR                  5       U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         $ $ $  GN! U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         f f f = f7fr%   )r'   r(   r   Ú	sock_recvr   r)   r*   r+   r’   r-   r.   r,   )r!   r   ÚnÚ	read_taskÚconn_event_tasks        r   Ú_readÚConnection._readÔ   s˜  é € Ü×)Ò)Ø�I‰I×Ñ Ó(ó*ˆ	ä!×/Ò/Ø×"Ñ"×'Ñ'Ó)ó+ˆð	-Ü—,’,ØÐ,Ü#×3Ñ3ñ5÷ 5ð 5ð ×%Ñ%×,Ñ,×.Ñ.Øð —9‘9×&Ñ&×(Ñ(Ø —~‘~×'Ñ'Ø×$Ñ$Ô&Ø&×+Ñ+×-Ñ-Ø#×*Ñ*Õ,ð .ð )ð !×'Ñ'Ó)à—9‘9×&Ñ&×(Ñ(Ø —~‘~×'Ñ'Ø×$Ñ$Ô&Ø&×+Ñ+×-Ñ-Ø#×*Ñ*Õ,ð .ð )ò5øð —9‘9×&Ñ&×(Ñ(Ø —~‘~×'Ñ'Ø×$Ñ$Ô&Ø&×+Ñ+×-Ñ-Ø#×*Ñ*Õ,ð .ð )üó?   ‚AHÁ!'F ÂFÂ	#F Â-A,HÄF Ä(A,HÆF ÆA-HÈHc              ƒ   ó  #   • [         R                  " U R                  R                  X5      5      n[         R                  " U R                  R                  5       5      n [         R
                  " X4/[         R                  S9I S h  v•N   U R                  R                  5       (       am   U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         g g g UR                  5       U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         $ $ $  GN! U R                  R                  5       (       dL  UR                  5       (       d  UR                  5         UR                  5       (       d  UR                  5         f f f = f7fr%   )r'   r(   r   Úsock_sendallr   r)   r*   r+   r’   r-   r.   r,   )r!   r   ÚdataÚ
write_taskrŸ   s        r   Ú_writeÚConnection._writeê   s˜  é € Ü×*Ò*Ø�I‰I×"Ñ" 4Ó.ó0ˆ
ä!×/Ò/Ø×"Ñ"×'Ñ'Ó)ó+ˆð	-Ü—,’,ØÐ-Ü#×3Ñ3ñ5÷ 5ð 5ð ×%Ñ%×,Ñ,×.Ñ.Øð —9‘9×&Ñ&×(Ñ(Ø!—‘×(Ñ(Ø×%Ñ%Ô'Ø&×+Ñ+×-Ñ-Ø#×*Ñ*Õ,ð .ð )ð "×(Ñ(Ó*à—9‘9×&Ñ&×(Ñ(Ø!—‘×(Ñ(Ø×%Ñ%Ô'Ø&×+Ñ+×-Ñ-Ø#×*Ñ*Õ,ð .ð )ò5øð —9‘9×&Ñ&×(Ñ(Ø!—‘×(Ñ(Ø×%Ñ%Ô'Ø&×+Ñ+×-Ñ-Ø#×*Ñ*Õ,ð .ð )ür¢   c              ƒ   ó¨  #   • S n  U R                   R                  5       I S h  v•N   Ub  UnS nO$U R                  U R                  S5      I S h  v•N nUS:X  a  OPU R                  R                  5       (       a  U(       a  UnM€  U R                  U R                  U5      I S h  v•N   M¥  U R                  R                  5       (       d&  U R                  R                  U R                  5        g g  NÍ N£ NP! [         a     NXf = f! U R                  R                  5       (       d&  U R                  R                  U R                  5        f f = f7f©Ni   r   )r   r)   r    ri   r   r+   r§   rk   ÚConnectionErrorr   r’   Ú	call_soonrW   ©r!   Úbufr¥   s      r   r—   ÚConnection.proxy_to_backend   s  é € Øˆð	0ØØ×'Ñ'×,Ñ,Ó.×.Ð.Ø‘?Ø�DØ‘Cà!%§¡¨D×,<Ñ,<¸dÓ!C×C�DØ˜3“;ØØ×)Ñ)×0Ñ0×2Ñ2ÞØ"˜ÙØ—k‘k $×"3Ñ"3°TÓ:×:Ð:ñ ð& —9‘9×&Ñ&×(Ñ(Ø—	‘	×#Ñ# D§J¡JÕ/ð )ñ% /ñ
 Dñ ;øäó 	Ùð	ûð —9‘9×&Ñ&×(Ñ(Ø—	‘	×#Ñ# D§J¡JÕ/ð )üów   ‚E†C8 ¤C2¥+C8 ÁC4Á
C8 ÁD ÁA	C8 Â%C6Â&C8 Â,AEÃ2C8 Ã4C8 Ã6C8 Ã8
DÄD ÄDÄD ÄAEÅEc              ƒ   ó¨  #   • S n  U R                   R                  5       I S h  v•N   Ub  UnS nO$U R                  U R                  S5      I S h  v•N nUS:X  a  OPU R                  R                  5       (       a  U(       a  UnM€  U R                  U R                  U5      I S h  v•N   M¥  U R                  R                  5       (       d&  U R                  R                  U R                  5        g g  NÍ N£ NP! [         a     NXf = f! U R                  R                  5       (       d&  U R                  R                  U R                  5        f f = f7frª   )r   r)   r    rk   r   r+   r§   ri   r«   r   r’   r¬   rW   r­   s      r   r˜   ÚConnection.proxy_from_backend  s  é € Øˆð	0ØØ×'Ñ'×,Ñ,Ó.×.Ð.Ø‘?Ø�DØ‘Cà!%§¡¨D×,=Ñ,=¸tÓ!D×D�DØ˜3“;ØØ×)Ñ)×0Ñ0×2Ñ2ÞØ"˜ÙØ—k‘k $×"2Ñ"2°DÓ9×9Ð9ñ ð& —9‘9×&Ñ&×(Ñ(Ø—	‘	×#Ñ# D§J¡JÕ/ð )ñ% /ñ
 Eñ :øäó 	Ùð	ûð —9‘9×&Ñ&×(Ñ(Ø—	‘	×#Ñ# D§J¡JÕ/ð )ür°   )	rk   ri   r   r   r’   r   r�   r‘   r�   N)r   r	   r
   r   r"   rW   rh   r    r§   r—   r˜   r   r   r   r   rf   rf   ™   s%   † ò	ò+ò &ò>-ò,-ò,0õ40r   rf   )
r'   rQ   r9   rˆ   Úasyncpgr   Ú	Exceptionr   r   rf   r   r   r   Ú<module>rµ      s=   ðó Û Û Û å ô	�ô 	÷BIñ BI÷JY0ò Y0r   