ó
    &ÝNjú^  ã                   óÒ   • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
  SSKJrJrJrJrJrJrJr  SSKJr  SSKJrJr  SSKJr  S	 r " S
 S\5      rS r " S S5      rg)z
Packet handling
é    N)ÚHMAC)Úutil)Úlinefeed_byteÚcr_byte_valueÚ	MSG_NAMESÚDEBUGÚ	xffffffffÚ	zero_byteÚbyte_ord)Úu)ÚSSHExceptionÚProxyCommandFailure)ÚMessagec                 ó6   • [        XU5      R                  5       $ ©N)r   Údigest)ÚkeyÚmessageÚdigest_classs      ÚL/home/mande/repo/quber/.venv/lib/python3.13/site-packages/paramiko/packet.pyÚcompute_hmacr   .   s   € Ü�˜lÓ+×2Ñ2Ó4Ð4ó    c                   ó   • \ rS rSrSrSrg)ÚNeedRekeyExceptioné2   z)
Exception indicating a rekey is needed.
© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   r   r   r   r   2   s   † ñò 	r   r   c                 ó’   • S n[        U R                  5      [        L a(  [        U R                  5      S:”  a  U R                  S   nU$ ©Nr   )ÚtypeÚargsÚtupleÚlen)ÚeÚargs     r   Ú	first_argr+   :   s7   € Ø
€CÜˆA�F‰Fƒ|”uÒ¤ Q§V¡V£¨q£Ø�f‰f�Q‰iˆØ€Jr   c                   ó>  • \ rS rSrSr\" SS5      r\" SS5      r\" SS5      r\" SS5      r	S r
\S 5       rS rS rS	 r    S&S jr   S'S 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(S jrS r S r!S r"S r#S r$S  r%S! r&S" r'S# r(S$ r)S%r*g
))Ú
PacketizeréA   z1
Implementation of the base SSH packet protocol.
é   é   c                 óÊ  • Xl         S U l        SU l        SU l        SU l        SU l        [        5       U l        SU l        SU l	        SU l
        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        S U l        S U l        SU l        S U l        S U l        [        5       U l        [        5       U l        S U l        S U l        SU l        SU l        SU l        SU l        SU l         SU l!        S U l"        S U l#        [H        RJ                  " 5       U l&        SU l'        [P        RP                  " 5       U l)        S U l*        S U l+        SU l,        SU l-        g )NFr   é   ).Ú_Packetizer__socketÚ_Packetizer__loggerÚ_Packetizer__closedÚ_Packetizer__dump_packetsÚ_Packetizer__need_rekeyÚ_Packetizer__init_countÚbytesÚ_Packetizer__remainderÚ_initial_kex_doneÚ_Packetizer__sent_bytesÚ_Packetizer__sent_packetsÚ_Packetizer__received_bytesÚ_Packetizer__received_packetsÚ$_Packetizer__received_bytes_overflowÚ&_Packetizer__received_packets_overflowÚ_Packetizer__block_size_outÚ_Packetizer__block_size_inÚ_Packetizer__mac_size_outÚ_Packetizer__mac_size_inÚ_Packetizer__block_engine_outÚ_Packetizer__block_engine_inÚ_Packetizer__sdctr_outÚ_Packetizer__mac_engine_outÚ_Packetizer__mac_engine_inÚ_Packetizer__mac_key_outÚ_Packetizer__mac_key_inÚ _Packetizer__compress_engine_outÚ_Packetizer__compress_engine_inÚ _Packetizer__sequence_number_outÚ_Packetizer__sequence_number_inÚ_Packetizer__etm_outÚ_Packetizer__etm_inÚ_Packetizer__aead_outÚ_Packetizer__aead_inÚ_Packetizer__iv_outÚ_Packetizer__iv_inÚ	threadingÚRLockÚ_Packetizer__write_lockÚ_Packetizer__keepalive_intervalÚtimeÚ_Packetizer__keepalive_lastÚ_Packetizer__keepalive_callbackÚ_Packetizer__timerÚ_Packetizer__handshake_completeÚ_Packetizer__timer_expired)ÚselfÚsockets     r   Ú__init__ÚPacketizer.__init__Q   sc  € ØŒØˆŒØˆŒØ#ˆÔØ!ˆÔØˆÔÜ ›7ˆÔØ!&ˆÔð ˆÔØˆÔØ !ˆÔØ"#ˆÔØ)*ˆÔ&Ø+,ˆÔ(ð !"ˆÔØ ˆÔØˆÔØˆÔØ"&ˆÔØ!%ˆÔØ ˆÔØ $ˆÔØ#ˆÔÜ"›WˆÔÜ!›GˆÔØ%)ˆÔ"Ø$(ˆÔ!Ø%&ˆÔ"Ø$%ˆÔ!ØˆŒØˆŒð  ˆŒØˆŒØˆŒØˆŒô &ŸOšOÓ-ˆÔð %&ˆÔ!Ü $§	¢	£ˆÔØ$(ˆÔ!àˆŒØ$)ˆÔ!Ø$ˆÕr   c                 ó   • U R                   $ r   )r5   ©ra   s    r   ÚclosedÚPacketizer.closedˆ   s   € à�}‰}Ðr   c                 ó   • SU l         g r$   )rO   rf   s    r   Úreset_seqno_outÚPacketizer.reset_seqno_outŒ   s
   € Ø%&ˆÕ"r   c                 ó   • SU l         g r$   )rP   rf   s    r   Úreset_seqno_inÚPacketizer.reset_seqno_in�   s
   € Ø$%ˆÕ!r   c                 ó   • Xl         g)z/
Set the Python log object to use for logging.
N)r4   )ra   Úlogs     r   Úset_logÚPacketizer.set_log’   s	   € ð �r   Nc
                 óô   • Xl         X`l        X l        X0l        X@l        XPl        SU l        SU l        Xpl        X€l	        X�l
        U =R                  S-  sl        U R                  S:X  a  SU l        SU l        gg)zL
Switch outbound data cipher.
:param etm: Set encrypt-then-mac from OpenSSH
r   é   é   FN)rF   rH   rB   rI   rD   rK   r<   r=   rQ   rS   rU   r8   r7   )
ra   Úblock_engineÚ
block_sizeÚ
mac_engineÚmac_sizeÚmac_keyÚsdctrÚetmÚaeadÚiv_outs
             r   Úset_outbound_cipherÚPacketizer.set_outbound_cipher˜   s}   € ð  #/ÔØ ÔØ *ÔØ *ÔØ&ÔØ$ÔØˆÔØˆÔØŒØŒØŒð 	×Ò˜QÑÕØ×Ñ Ó!Ø !ˆDÔØ %ˆDÕð "r   c	                 ó  • Xl         X l        X0l        X@l        XPl        SU l        SU l        SU l        SU l        X`l	        Xpl
        X€l        U =R                  S-  sl        U R                  S:X  a  SU l        SU l        gg)zK
Switch inbound data cipher.
:param etm: Set encrypt-then-mac from OpenSSH
r   r/   ru   FN)rG   rC   rJ   rE   rL   r>   r?   r@   rA   rR   rT   rV   r8   r7   )	ra   rv   rw   rx   ry   rz   r|   r}   Úiv_ins	            r   Úset_inbound_cipherÚPacketizer.set_inbound_cipherº   s‡   € ð ".ÔØ)ÔØ)ÔØ%ÔØ#ÔØ !ˆÔØ"#ˆÔØ)*ˆÔ&Ø+,ˆÔ(ØŒØŒØŒð 	×Ò˜QÑÕØ×Ñ Ó!Ø !ˆDÔØ %ˆDÕð "r   c                 ó   • Xl         g r   )rM   ©ra   Ú
compressors     r   Úset_outbound_compressorÚ"Packetizer.set_outbound_compressorÜ   s   € Ø%/Õ"r   c                 ó   • Xl         g r   )rN   r†   s     r   Úset_inbound_compressorÚ!Packetizer.set_inbound_compressorß   s   € Ø$.Õ!r   c                 óF   • SU l         U R                  R                  5         g ©NT)r5   r3   Úcloserf   s    r   r�   ÚPacketizer.closeâ   s   € ØˆŒØ�‰×ÑÕr   c                 ó   • Xl         g r   ©r6   )ra   Úhexdumps     r   Úset_hexdumpÚPacketizer.set_hexdumpæ   s   € Ø%Õr   c                 ó   • U R                   $ r   r’   rf   s    r   Úget_hexdumpÚPacketizer.get_hexdumpé   ó   € Ø×"Ñ"Ð"r   c                 ó   • U R                   $ r   )rE   rf   s    r   Úget_mac_size_inÚPacketizer.get_mac_size_inì   s   € Ø×!Ñ!Ð!r   c                 ó   • U R                   $ r   )rD   rf   s    r   Úget_mac_size_outÚPacketizer.get_mac_size_outï   r™   r   c                 ó   • U R                   $ )zÆ
Returns ``True`` if a new set of keys needs to be negotiated.  This
will be triggered during a packet read or write, so it should be
checked after every read or write, or at least after every few.
©r7   rf   s    r   Ú
need_rekeyÚPacketizer.need_rekeyò   s   € ð × Ñ Ð r   c                 óP   • Xl         X l        [        R                  " 5       U l        g)z¯
Turn on/off the callback keepalive.  If ``interval`` seconds pass with
no data read from or written to the socket, the callback will be
executed and the timer will be reset.
N)rZ   r]   r[   r\   )ra   ÚintervalÚcallbacks      r   Úset_keepaliveÚPacketizer.set_keepaliveú   s   € ð %-Ô!Ø$,Ô!Ü $§	¢	£ˆÕr   c                 ó   • SU l         g rŽ   )r`   rf   s    r   Ú
read_timerÚPacketizer.read_timer  s
   € Ø#ˆÕr   c                 óº   • U R                   (       dJ  [        R                  " [        U5      U R                  5      U l         U R                   R                  5         gg)zË
Tells `Packetizer` that the handshake process started.
Starts a book keeping timer that can signal a timeout in the
handshake process.

:param float timeout: amount of seconds to wait before timing out
N)r^   rW   ÚTimerÚfloatrª   Ústart)ra   Útimeouts     r   Ústart_handshakeÚPacketizer.start_handshake  s:   € ð �|�|Ü$Ÿ?š?¬5°«>¸4¿?¹?ÓKˆDŒLØ�L‰L×ÑÕ ð r   c                 ób   • U R                   (       d  gU R                  (       a  gU R                  $ )a"  
Checks if the handshake has timed out.

If `start_handshake` wasn't called before the call to this function,
the return value will always be `False`. If the handshake completed
before a timeout was reached, the return value will be `False`

:return: handshake time out status, as a `bool`
F)r^   r_   r`   rf   s    r   Úhandshake_timed_outÚPacketizer.handshake_timed_out  s&   € ð �|�|ØØ×$×$ØØ×#Ñ#Ð#r   c                 óx   • U R                   (       a)  U R                   R                  5         SU l        SU l        gg)z6
Tells `Packetizer` that the handshake has completed.
FTN)r^   Úcancelr`   r_   rf   s    r   Úcomplete_handshakeÚPacketizer.complete_handshake#  s0   € ð �<�<Ø�L‰L×ÑÔ!Ø#(ˆDÔ Ø(,ˆDÕ%ð r   c                 óJ  • [        5       n[        U R                  5      S:”  a1  U R                  SU nU R                  US U l        U[        U5      -  nUS:”  aÓ  SnU R                  5       (       a
  [	        5       e U R
                  R                  U5      n[        U5      S:X  a
  [	        5       eX5-  nU[        U5      -  nU(       a\  U R                  (       a
  [	        5       eU(       a*  [        U5      S:X  a  U R                  (       a
  [        5       eU R!                  5         US:”  a  MÓ  U$ ! [        R                   a    Sn N…[        R                   aG  n[        U5      nU[        R                  :X  a  Sn SnAN¾U R                  (       a
  [	        5       ee SnAff = f)zî
Read as close to N bytes as possible, blocking as long as necessary.

:param int n: number of bytes to read
:return: the data read, as a `str`

:raises:
    ``EOFError`` -- if the socket was closed before all the bytes could
    be read
r   NFT)r9   r(   r:   r´   ÚEOFErrorr3   Úrecvrb   r°   Úerrorr+   ÚerrnoÚEAGAINr5   r7   r   Ú_check_keepalive)ra   ÚnÚcheck_rekeyÚoutÚgot_timeoutÚxr)   r*   s           r   Úread_allÚPacketizer.read_all,  sX  € ô ‹gˆäˆt×ÑÓ  1Ó$Ø×"Ñ" 2 AÐ&ˆCØ#×/Ñ/°°Ð3ˆDÔØ”�S“‰MˆAØ�!‹eØˆKØ×'Ñ'×)Ñ)Ü“jÐ ðØ—M‘M×&Ñ& qÓ)�Ü�q“6˜Q“;Ü"›*Ð$Ø‘�Ø”S˜“V‘�ö Ø—=—=Ü"›*Ð$Þ¤C¨£H°£M°t×7H×7HÜ,Ó.Ð.Ø×%Ñ%Ô'ð9 �!�eð: ˆ
øô' —>‘>ó #Ø"’Ü—<‘<ó 
ô   “l�Øœ%Ÿ,™,Ó&Ø"&•KØ—]—]Ü"›*Ð$àûð
ús%   Á=AD0 Ä0F"ÅF"Å!FÆFÆF"c                 óP  • [         R                   " 5       U l        Sn[        U5      S:”  a„  Sn U R                  R	                  U5      nU(       a  SnU R                  (       a  SnOWS:X  a  US:”  a  SnUS-  nUS:  a
  [        5       eU[        U5      :X  a   g XS  n[        U5      S:”  a  M„  g ! [
        R                   a    Sn N[
        R                   a2  n[        U5      nU[        R                  :X  a  Sn S nAN¸Sn S nAN¿S nAf[         a    e [         a    Sn NÚf = f)Nr   FTéÿÿÿÿé
   rt   )r[   r\   r(   r3   Úsendrb   r°   r½   r+   r¾   r¿   r   Ú	Exceptionr5   r»   )ra   rÃ   Ú#iteration_with_zero_as_return_valueÚretry_writerÁ   r)   r*   s          r   Ú	write_allÚPacketizer.write_all\  s  € Ü $§	¢	£ˆÔØ./Ð+Ü�#‹h˜‹lØˆKðØ—M‘M×&Ñ& sÓ+�ö Ø�Ø—=—=Ø�Aøà˜“6ÐAÀBÓFð �AØ3°qÑ8Ð3Ø�1‹uÜ“jÐ Ø”C˜“H‹}Øàð �b�'ˆCôE �#‹h˜�lðF 	øô? —>‘>ó #Ø"’Ü—<‘<ó Ü “l�Øœ%Ÿ,™,Ó&Ø"&•Kà•AûÜ&ó ØÜó à’ðús)   ¯B1 Â1D%Ã	D%Ã!D	ÄD	Ä	D%Ä$D%c                 ó  • U R                   n[        U;  a  X R                  U5      -  n[        U;  a  M  UR                  [        5      nX#S-   S U l         USU n[	        U5      S:”  a  US   [
        :X  a  USS n[        U5      $ )zq
Read a line from the socket.  We assume no data is pending after the
line, so it's okay to attempt large reads.
rt   Nr   rÉ   )r:   r   Ú_read_timeoutÚindexr(   r   r   )ra   r°   ÚbufrÁ   s       r   ÚreadlineÚPacketizer.readline„  s‡   € ð
 ×ÑˆÜ 3Ó&Ø×%Ñ% gÓ.Ñ.ˆCô  3Õ&à�I‰I”mÓ$ˆØ 1™u˜w˜<ˆÔØ�"�1ˆgˆÜ�‹H�q‹L˜s 2™w¬-Ó7Ø�c�r�(ˆCÜ�‹vˆr   c                 óz   • USS  n[         R                  US5      nUS-   nUR                  SS5      nUSS U-   nU$ )Né   Úbigrt   r2   r   )ÚintÚ
from_bytesÚto_bytes)ra   ÚivÚiv_counter_bÚ
iv_counterÚinc_iv_counterÚinc_iv_counter_bÚnew_ivs          r   Ú_inc_iv_counterÚPacketizer._inc_iv_counter“  sQ   € ð ˜!˜"�vˆÜ—^‘^ L°%Ó8ˆ
Ø# a™ˆØ)×2Ñ2°1°eÓ<Ðà�A�a�Ð+Ñ+ˆØˆr   c                 óZ  • UR                  5       n[        US   5      nU[        ;   a
  [        U   nOSR                  U5      n[	        U5      nU R
                  R                  5          U R                  b  U R                  U5      nU R                  U5      nU R                  (       aP  U R                  [        SR                  X45      5        U R                  [        [        R                  " US5      5        U R                  b·  U R                  (       a%  USS U R                  R!                  USS 5      -   nOƒU R"                  (       aT  USS U R                  R%                  U R&                  USS USS 5      -   nU R)                  U R&                  5      U l        OU R                  R!                  U5      nOUnU R                  by  U R"                  (       dh  [*        R,                  " SU R.                  5      nXpR                  (       a  UOU-   nU[1        U R2                  X€R4                  5      SU R6                   -  nU R.                  S-   [8        -  n	U	S:X  a  U R:                  (       d  [=        S	5      eX�l        U R?                  U5        U =R@                  [	        U5      -  sl         U =RB                  S-  sl!        U RB                  U RD                  :¬  =(       d    U R@                  U RF                  :¬  n
U
(       ak  U RH                  (       dZ  S
nU R                  [        UR                  U RB                  U R@                  5      5        SU l%        SU l&        U RO                  5         U R
                  RQ                  5         g! U R
                  RQ                  5         f = f)zB
Write a block of data using the current cipher, as an SSH block.
r   ú${:x}NzWrite packet <{}>, length {}zOUT: rØ   ú>Irt   ú/Sequence number rolled over during initial kex!z(Rekeying (hit {} packets, {} bytes sent)))Úasbytesr   r   Úformatr(   rY   ÚacquirerM   Ú_build_packetr6   Ú_logr   r   Úformat_binaryrF   rQ   ÚupdaterS   ÚencryptrU   rã   ÚstructÚpackrO   r   rK   rI   rD   r	   r;   r   rÏ   r<   r=   ÚREKEY_PACKETSÚREKEY_BYTESr7   r@   rA   Ú_trigger_rekeyÚrelease)ra   ÚdataÚcmdÚcmd_nameÚorig_lenÚpacketrÃ   ÚpackedÚpayloadÚnext_seqÚsent_too_muchÚmsgs               r   Úsend_messageÚPacketizer.send_messagež  s  € ð
 �|‰|‹~ˆÜ�t˜A‘wÓˆØ”)ÓÜ  ‘~‰Hà—~‘~ cÓ*ˆHÜ�t“9ˆØ×Ñ×!Ñ!Ô#ð;	(Ø×)Ñ)Ñ5Ø×1Ñ1°$Ó7�Ø×'Ñ'¨Ó-ˆFØ×"×"Ø—	‘	ÜØ2×9Ñ9¸(ÓMôð —	‘	œ%¤×!3Ò!3°F¸GÓ!DÔEØ×&Ñ&Ñ2Ø—>—>à   1˜+¨×(?Ñ(?×(FÑ(FØ˜q˜r˜
ó)ñ ‘Cð —_—_ð !  1˜+¨×(?Ñ(?×(GÑ(GØŸ™ v¨a¨b z°6¸!¸A°;ó)ñ �Cð %)×$8Ñ$8¸¿¹Ó$G�D•Mà×1Ñ1×8Ñ8¸Ó@‘Cà�à×&Ñ&Ñ2¸4¿?¿?ÜŸš T¨4×+EÑ+EÓF�Ø ¯>¯>¡C¸vÑF�Ø”|Ø×&Ñ&¨×1FÑ1Fóà'�D×'Ñ'ð)ñ )�ð ×2Ñ2°QÑ6¼)ÑCˆHØ˜1‹} T×%;×%;Ü"ØEóð ð *2Ô&Ø�N‰N˜3Ôà×Ò¤ S£Ñ)ÕØ×Ò 1Ñ$Õà×#Ñ# t×'9Ñ'9Ñ9÷ 9Ø×$Ñ$¨×(8Ñ(8Ñ8ð ö  T×%6×%6à@�Ø—	‘	Ü˜3Ÿ:™: d×&9Ñ&9¸4×;LÑ;LÓMôð 23�Ô.Ø34�Ô0Ø×#Ñ#Ô%à×Ñ×%Ñ%Õ'øˆD×Ñ×%Ñ%Õ'ús   Á*L	N ÎN*c           	      ó  • U R                  U R                  SS9nU R                  (       aØ  [        R                  " SUSS 5      S   nX R                  -
  S-   nUSS U R                  USS9-   nU R                  U R
                  SS9n[        R                  " SU R                  U5      U-   n[        U R                  X`R                  5      SU R
                   n[        R                  " Xu5      (       d  [        S	5      eUnU R                  (       aœ  [        R                  " SUSS 5      S   nUSS nX R                  -
  S-   U R
                  -   nUSS U R                  USS9-   nU R                  R!                  U R"                  XH5      nU R%                  U R"                  5      U l        U R                  b,  U R                  (       d  U R                  R'                  U5      nU R(                  (       a+  U R+                  [,        [        R.                  " US
5      5        U R                  (       d  U R                  (       a  UnOÂ[        R                  " SUSS 5      S   nUSS n	U[1        U	5      -
  U R                  -  S:w  a  [        S5      eU R                  X R
                  -   [1        U	5      -
  5      n
U
SU[1        U	5      -
   nX¢[1        U	5      -
  S nU R                  b  U R                  R'                  U5      nX”-   nU R(                  (       a+  U R+                  [,        [        R.                  " US
5      5        U R
                  S:”  a©  U R                  (       d˜  U R                  (       d‡  WSU R
                   n[        R                  " SU R                  W5      U-   n[        U R                  X`R                  5      SU R
                   n[        R                  " Xu5      (       d  [        S	5      e[3        US   5      nUSWU-
   nU R(                  (       a%  U R+                  [,        SR5                  X,5      5        U R6                  b  U R7                  U5      n[9        USS 5      nU R                  Ul        U R                  S-   [<        -  nUS:X  a  U R>                  (       d  [        S5      eXðl        X R
                  -   S-   nU =R@                  U-  sl         U =RB                  S-  sl!        U RD                  (       aj  U =RF                  U-  sl#        U =RH                  S-  sl$        U RH                  U RJ                  :¼  d  U RF                  U RL                  :¼  a  [        S5      eOŽU RB                  U RN                  :¼  d  U R@                  U RP                  :¼  aZ  SnU R+                  [,        UR5                  U RB                  U R@                  5      5        SU l#        SU l$        U RS                  5         [3        US   5      nU[T        ;   a
  [T        U   nOSR5                  U5      nU R(                  (       a/  U R+                  [,        SR5                  U[1        U5      5      5        UU4$ )zÃ
Only one thread should ever be in this function (no other locking is
done).

:raises: `.SSHException` -- if the packet is mangled
:raises: `.NeedRekeyException` -- if the transport should rekey
T)rÂ   rç   NrØ   r   Fz>IIzMismatched MACzIN: zInvalid packet blockingrt   z"Got payload ({} bytes, {} padding)rè   z+Remote transport is ignoring rekey requestsz,Rekeying (hit {} packets, {} bytes received)ræ   zRead packet <{}>, length {})+rÆ   rC   rR   rñ   ÚunpackrE   rò   rP   r   rL   rJ   r   Úconstant_time_bytes_eqr   rT   rG   ÚdecryptrV   rã   rï   r6   rí   r   rî   r(   r   rê   rN   r   Úseqnor	   r;   r>   r?   r7   r@   rA   ÚREKEY_PACKETS_OVERFLOW_MAXÚREKEY_BYTES_OVERFLOW_MAXró   rô   rõ   r   )ra   ÚheaderÚpacket_sizeÚ	remainingrû   ÚmacÚmac_payloadÚmy_macÚaadÚleftoverrÔ   Úpost_packetÚpaddingrý   r   rþ   Úraw_packet_sizeÚerrrø   rù   s                       r   Úread_messageÚPacketizer.read_messageè  sÉ  € ð —‘˜t×3Ñ3À�ÐFˆØ�=�=Ü Ÿ-š-¨¨f°R°a¨jÓ9¸!Ñ<ˆKØ#×&:Ñ&:Ñ:¸QÑ>ˆIØ˜A˜B�Z $§-¡-°	Àu -Ð"MÑMˆFØ—-‘- × 2Ñ 2À�-ÐFˆCä—’˜E 4×#<Ñ#<¸kÓJØñð ô "Ø×!Ñ! ;×0DÑ0Dóà"�×"Ñ"ð$ˆFô ×.Ò.¨v×;Ñ;Ü"Ð#3Ó4Ð4ØˆFà�>�>ô !Ÿ-š-¨¨f°R°a¨jÓ9¸!Ñ<ˆKØ˜˜!�*ˆCà×2Ñ2Ñ2°QÑ6¸×9KÑ9KÑKð ð ˜A˜B�Z $§-¡-°	Àu -Ð"MÑMˆFØ×+Ñ+×3Ñ3°D·L±LÀ&ÓNˆFà×/Ñ/°·±Ó=ˆDŒLà×!Ñ!Ñ-°d·n·nØ×+Ñ+×2Ñ2°6Ó:ˆFØ××Ø�I‰I”eœT×/Ò/°¸Ó?Ô@ð
 �=�=˜DŸNŸNØ‰Fô !Ÿ-š-¨¨f°R°a¨jÓ9¸!Ñ<ˆKð ˜a˜b�zˆHØœc (›mÑ+¨t×/CÑ/CÑCÀqÓHÜ"Ð#<Ó=Ð=Ø—-‘-Ø×0Ñ0Ñ0´3°x³=Ñ@óˆCð Ð6˜;¬¨X«Ñ6Ð7ˆFØ¬C°«MÑ9Ð;Ð<ˆKà×%Ñ%Ñ1Ø×/Ñ/×6Ñ6°vÓ>�ØÑ&ˆFà××Ø�I‰I”eœT×/Ò/°¸Ó?Ô@à×Ñ Ó!¨$¯-¯-ÀÇÇØÐ2 × 2Ñ 2Ð3ˆCä—’˜E 4×#<Ñ#<¸kÓJØñð ô "Ø×!Ñ! ;×0DÑ0Dóà"�×"Ñ"ð$ˆFô ×.Ò.¨v×;Ñ;Ü"Ð#3Ó4Ð4Ü˜6 !™9Ó%ˆØ˜˜[¨7Ñ2Ð3ˆà××Ø�I‰IÜØ4×;Ñ;Øóôð ×$Ñ$Ñ0Ø×/Ñ/°Ó8ˆGä�g˜a˜b�kÓ"ˆØ×-Ñ-ˆŒ	Ø×-Ñ-°Ñ1´YÑ>ˆØ�q‹= ×!7×!7ÜØAóð ð %-Ô!ð &×(:Ñ(:Ñ:¸QÑ>ˆØ×Ò Ñ0ÕØ×Ò 1Ñ$ÕØ××ð ×*Ò*¨oÑ=Õ*Ø×,Ò,°Ñ1Õ,à×0Ñ0Ø×2Ñ2ó3ð ×.Ñ.°$×2OÑ2OÓOä"ØAóð ð Pð
 ×%Ñ%¨×);Ñ);Ó;Ø×!Ñ! T×%5Ñ%5Ó5ð AˆCØ�I‰IÜØ—
‘
˜4×2Ñ2°D×4IÑ4IÓJôð ./ˆDÔ*Ø/0ˆDÔ,Ø×ÑÔ!ä�w˜q‘zÓ"ˆØ”)ÓÜ  ‘~‰Hà—~‘~ cÓ*ˆHØ××Ø�I‰IÜØ-×4Ñ4°X¼sÀ7»|ÓLôð �Cˆxˆr   c                 óÜ   • U R                   c  g [        [        U5      [        5      (       a%  U H  nU R                   R	                  X5        M      g U R                   R	                  X5        g r   )r4   Ú
issubclassr%   Úlistrp   )ra   Úlevelr   Úms       r   rí   ÚPacketizer._log}  sP   € Ø�=‰=Ñ ØÜ”d˜3“i¤×&Ñ&Û�Ø—‘×!Ñ! %Ö+ò ð �M‰M×Ñ˜eÕ)r   c                 óü   • U R                   (       a"  U R                  (       a  U R                  (       a  g [        R                  " 5       nXR                  U R                   -   :”  a  U R                  5         Xl        g g r   )rZ   rF   r7   r[   r\   r]   )ra   Únows     r   rÀ   ÚPacketizer._check_keepalive†  s\   € à×)×)Ø×*×*Ø× × ð Ü�iŠi‹kˆØ×&Ñ&¨×)BÑ)BÑBÓBØ×%Ñ%Ô'Ø$'Õ!ð Cr   c                 óp  • [         R                   " 5       n  U R                  R                  S5      n[        U5      S:X  a
  [	        5       e U$ ! [
        R                   a     Of = fU R                  (       a
  [	        5       e[         R                   " 5       nXB-
  U:¼  a  [
        R                  " 5       eM¡  )Né€   r   )r[   r3   r¼   r(   r»   rb   r°   r5   )ra   r°   r¯   rÅ   r  s        r   rÒ   ÚPacketizer._read_timeout“  s”   € Ü—	’	“ˆØðØ—M‘M×&Ñ& sÓ+�Ü�q“6˜Q“;Ü"›*Ð$Øð ˆøô —>‘>ó Ùðúà�}�}Ü“jÐ Ü—)’)“+ˆCØ‰{˜gÓ%Ü—n’nÓ&Ð&ñ s   ˜4A ÁA&Á%A&c                 óx  • U R                   nU R                  (       d  U R                  (       a  SOSnSU-   [        U5      U-   U-  -
  n[        R
                  " S[        U5      U-   S-   U5      nXQ-  nU R                  (       d  U R                  c  U[        U-  -  nU$ U[        R                  " U5      -  nU$ )NrØ   r2   ru   z>IBrt   )rB   rQ   rS   r(   rñ   rò   rH   rF   r
   ÚosÚurandom)ra   rý   ÚbsizeÚaddlenr  rû   s         r   rì   ÚPacketizer._build_packet¤  s¬   € à×%Ñ%ˆð —n—n¨¯¯‘¸QˆØ�e‘)¤ G£¨vÑ 5¸Ñ>Ñ?ˆÜ—’˜U¤C¨£L°7Ñ$:¸QÑ$>ÀÓHˆØÑˆØ××˜t×6Ñ6Ñ>ð ”i 'Ñ)Ñ)ˆFð ˆð ”b—j’j Ó)Ñ)ˆFØˆr   c                 ó   • SU l         g rŽ   r¡   rf   s    r   rõ   ÚPacketizer._trigger_rekey¶  s
   € à ˆÕr   )*Ú	__aead_inÚ
__aead_outÚ__block_engine_inÚ__block_engine_outÚ__block_size_inÚ__block_size_outÚ__closedÚ__compress_engine_inÚ__compress_engine_outÚ__dump_packetsÚ__etm_inÚ	__etm_outÚ__handshake_completeÚ__init_countÚ__iv_inÚ__iv_outÚ__keepalive_callbackÚ__keepalive_intervalÚ__keepalive_lastÚ__loggerÚ__mac_engine_inÚ__mac_engine_outÚ__mac_key_inÚ__mac_key_outÚ__mac_size_inÚ__mac_size_outÚ__need_rekeyÚ__received_bytesÚ__received_bytes_overflowÚ__received_packetsÚ__received_packets_overflowÚ__remainderÚ__sdctr_outÚ__sent_bytesÚ__sent_packetsÚ__sequence_number_inÚ__sequence_number_outÚ__socketÚ__timerÚ__timer_expiredÚ__write_lockr;   )FFFN)FFN)F)+r   r   r   r    r!   Úpowró   rô   r  r	  rc   Úpropertyrg   rj   rm   rq   r   rƒ   rˆ   r‹   r�   r”   r—   r›   rž   r¢   r§   rª   r±   r´   r¸   rÆ   rÏ   rÕ   rã   r  r  rí   rÀ   rÒ   rì   rõ   r"   r   r   r   r-   r-   A   s  † ññ ˜˜2“J€MÙ�a˜“*€Kñ "% Q¨£Ðá" 1 b›zÐò5%ðn ñó ðò'ò&òð ØØØô &ðR ØØô &òD0ò/òò&ò#ò"ò#ò!ò,ò$ò
!ò$ò -ô.ò`&òPò	òH(òTQòj*ò(òò"õ$!r   r-   )r!   r¾   r%  rb   rñ   rW   r[   Úhmacr   Úparamikor   Úparamiko.commonr   r   r   r   r	   r
   r   Úparamiko.utilr   Úparamiko.ssh_exceptionr   r   Úparamiko.messager   r   rÌ   r   r+   r-   r   r   r   Ú<module>r]     s`   ðñ&ó Û 	Û Û Û Û Ý å ÷÷ ñ õ ß DÝ $ò5ô	˜ô 	ò÷w	!ò w	!r   