+
    šh©j…$  ã                   ó^   € R t ^ RIt^ RIHt ^ RIHt ^ RIHtHtH	t	 ^ RI
Ht  ! R R4      tR# )z&
Implementation of an SSH2 "message".
N)ÚBytesIO)Úutil)Ú	zero_byteÚmax_byteÚone_byte)Úuc                   óÚ   a € ] tR t^t o RtRtR"R ltR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R  t"R!t#V t$R# )#ÚMessageab  
An SSH2 message is a stream of bytes that encodes some combination of
strings, integers, bools, and infinite-precision integers.  This class
builds or breaks down such a byte stream.

Normally you don't need to deal with anything this low-level, but it's
exposed for people implementing custom extensions, or features that
paramiko doesn't support yet.
l      ~ Nc                óP   € Ve   \        V4      V n        R# \        4       V n        R# )z–
Create a new SSH2 message.

:param bytes content:
    the byte stream to use as the message content (passed in only when
    decomposing a message).
N)r   Úpacket)ÚselfÚcontents   &&ÚK/var/www/html/bestweb/venv/lib/python3.14/site-packages/paramiko/message.pyÚ__init__ÚMessage.__init__,   s   € ð ÒÜ! 'Ó*ˆDŽKä!›)ˆDŽKó    c                ó"   € V P                  4       # ©N)Úasbytes©r   s   &r   Ú	__bytes__ÚMessage.__bytes__9   s   € Ø�|‰|‹~Ðr   c                ód   € R\        V P                  P                  4       4      ,           R,           # )z@
Returns a string representation of this object, for debugging.
zparamiko.Message(Ú))Úreprr   Úgetvaluer   s   &r   Ú__repr__ÚMessage.__repr__<   s&   € ð #¤T¨$¯+©+×*>Ñ*>Ó*@Ó%AÕAÀCÕGÐGr   c                ó6   € V P                   P                  4       # )z?
Return the byte stream content of this Message, as a `bytes`.
)r   r   r   s   &r   r   ÚMessage.asbytesC   s   € ð �{‰{×#Ñ#Ó%Ð%r   c                ó<   € V P                   P                  ^ 4       R# )zS
Rewind the message to the beginning as if no items had been parsed
out of it yet.
N)r   Úseekr   s   &r   ÚrewindÚMessage.rewindI   s   € ð
 	�‰×Ñ˜Ör   c                ó¤   € V P                   P                  4       pV P                   P                  4       pV P                   P                  V4       V# )zS
Return the `bytes` of this message that haven't already been parsed and
returned.
)r   ÚtellÚreadr!   )r   ÚpositionÚ	remainders   &  r   Úget_remainderÚMessage.get_remainderP   s@   € ð
 —;‘;×#Ñ#Ó%ˆØ—K‘K×$Ñ$Ó&ˆ	Ø�‰×Ñ˜Ô"ØÐr   c                óŒ   € V P                   P                  4       pV P                  4        V P                   P                  V4      # )zÀ
Returns the `bytes` of this message that have been parsed and
returned. The string passed into a message's constructor can be
regenerated by concatenating ``get_so_far`` and `get_remainder`.
)r   r%   r"   r&   )r   r'   s   & r   Ú
get_so_farÚMessage.get_so_farZ   s4   € ð —;‘;×#Ñ#Ó%ˆØ�‰ŒØ�{‰{×Ñ Ó)Ð)r   c                óÀ   € V P                   P                  V4      pRp\        V4      Tu;8  d   V8  d)   M V# V\        V\        V4      ,
          ,          ,           # V# )zá
Return the next ``n`` bytes of the message, without decomposing into an
int, decoded string, etc.  Just the raw bytes are returned. Returns a
string of ``n`` zero bytes if there weren't ``n`` bytes remaining in
the message.
i   )r   r&   Úlenr   )r   ÚnÚbÚmax_pad_sizes   &&  r   Ú	get_bytesÚMessage.get_bytesd   sR   € ð �K‰K×Ñ˜QÓˆØˆÜˆq‹6�AÖ$˜Ö$àˆð ”y A¬¨A«¥JÕ/Õ/Ð/Øˆr   c                ó$   € V P                  ^4      # )zÜ
Return the next byte of the message, without decomposing it.  This
is equivalent to `get_bytes(1) <get_bytes>`.

:return:
    the next (`bytes`) byte of the message, or ``b' '`` if there
    aren't any bytes remaining.
)r3   r   s   &r   Úget_byteÚMessage.get_byteq   s   € ð �~‰~˜aÓ Ð r   c                ó6   € V P                  ^4      pV\        8g  # )z"
Fetch a boolean from the stream.
)r3   r   ©r   r1   s   & r   Úget_booleanÚMessage.get_boolean|   s   € ð �N‰N˜1ÓˆØ”I‰~Ðr   c                óì   € V P                  ^4      pV\        8X  d%   \        P                  ! V P	                  4       4      # WP                  ^4      ,          p\
        P                  ! RV4      ^ ,          # )zB
Fetch an int from the stream.

:return: a 32-bit unsigned `int`.
ú>I)r3   r   r   Úinflate_longÚ
get_binaryÚstructÚunpack)r   Úbytes   & r   Úget_adaptive_intÚMessage.get_adaptive_intƒ   sY   € ð �~‰~˜aÓ ˆØ”8ÔÜ×$Ò$ T§_¡_Ó%6Ó7Ð7Ø—‘˜qÓ!Õ!ˆÜ�}Š}˜T 4Ó(¨Õ+Ð+r   c                ó\   € \         P                  ! RV P                  ^4      4      ^ ,          # )z
Fetch an int from the stream.
r=   ©r@   rA   r3   r   s   &r   Úget_intÚMessage.get_int�   s#   € ô �}Š}˜T 4§>¡>°!Ó#4Ó5°aÕ8Ð8r   c                ó\   € \         P                  ! RV P                  ^4      4      ^ ,          # )zR
Fetch a 64-bit int from the stream.

:return: a 64-bit unsigned integer (`int`).
ú>QrF   r   s   &r   Ú	get_int64ÚMessage.get_int64•   s#   € ô �}Š}˜T 4§>¡>°!Ó#4Ó5°aÕ8Ð8r   c                óJ   € \         P                  ! V P                  4       4      # )zZ
Fetch a long int (mpint) from the stream.

:return: an arbitrary-length integer (`int`).
)r   r>   r?   r   s   &r   Ú	get_mpintÚMessage.get_mpint�   s   € ô × Ò  §¡Ó!2Ó3Ð3r   c                ó@   € V P                  V P                  4       4      # )zÀ
Fetch a "string" from the stream.  This will actually be a `bytes`
object, and may contain unprintable characters.  (It's not unheard of
for a string to contain another byte-stream message.)
©r3   rG   r   s   &r   Ú
get_stringÚMessage.get_string§   s   € ð �~‰~˜dŸl™l›nÓ-Ð-r   c                ó4   € \        V P                  4       4      # )zz
Fetch a Unicode string from the stream.

This currently operates by attempting to encode the next "string" as
``utf-8``.
)r   rR   r   s   &r   Úget_textÚMessage.get_text±   s   € ô �—‘Ó"Ó#Ð#r   c                ó@   € V P                  V P                  4       4      # )z0
Alias for `get_string` (obtains a bytestring).
rQ   r   s   &r   r?   ÚMessage.get_binaryº   s   € ð �~‰~˜dŸl™l›nÓ-Ð-r   c                ó@   € V P                  4       P                  R4      # )zv
Fetch a list of `strings <str>` from the stream.

These are trivially encoded as comma-separated values in a string.
Ú,)rU   Úsplitr   s   &r   Úget_listÚMessage.get_listÀ   s   € ð �}‰}‹×$Ñ$ SÓ)Ð)r   c                ó<   € V P                   P                  V4       V # )zR
Write bytes to the stream, without any formatting.

:param bytes b: bytes to add
©r   Úwriter9   s   &&r   Ú	add_bytesÚMessage.add_bytesÈ   ó   € ð 	�‰×Ñ˜!ÔØˆr   c                ó<   € V P                   P                  V4       V # )zY
Write a single byte to the stream, without any formatting.

:param bytes b: byte to add
r_   r9   s   &&r   Úadd_byteÚMessage.add_byteÑ   rc   r   c                ó–   € V'       d"   V P                   P                  \        4       V # V P                   P                  \        4       V # )zI
Add a boolean value to the stream.

:param bool b: boolean value to add
)r   r`   r   r   r9   s   &&r   Úadd_booleanÚMessage.add_booleanÚ   s9   € ÷ Ø�K‰K×ÑœhÔ'ð ˆð �K‰K×ÑœiÔ(Øˆr   c                óf   € V P                   P                  \        P                  ! RV4      4       V # ©z=
Add an integer to the stream.

:param int n: integer to add
r=   ©r   r`   r@   Úpack©r   r0   s   &&r   Úadd_intÚMessage.add_intæ   ó&   € ð 	�‰×Ñœ&Ÿ+š+ d¨AÓ.Ô/Øˆr   c                ó  € V\         P                  8¼  dG   V P                  P                  \        4       V P                  \        P                  ! V4      4       V # V P                  P                  \        P                  ! RV4      4       V # rk   )
r	   Úbig_intr   r`   r   Ú
add_stringr   Údeflate_longr@   rm   rn   s   &&r   Úadd_adaptive_intÚMessage.add_adaptive_intï   sd   € ð ”—‘ÔØ�K‰K×ÑœhÔ'Ø�O‰OœD×-Ò-¨aÓ0Ô1ð ˆð �K‰K×ÑœfŸkšk¨$°Ó2Ô3Øˆr   c                óf   € V P                   P                  \        P                  ! RV4      4       V # )z@
Add a 64-bit int to the stream.

:param int n: long int to add
rJ   rl   rn   s   &&r   Ú	add_int64ÚMessage.add_int64ü   rq   r   c                óP   € V P                  \        P                  ! V4      4       V # )z•
Add a long int to the stream, encoded as an infinite-precision
integer.  This method only works on positive numbers.

:param int z: long int to add
)rt   r   ru   )r   Úzs   &&r   Ú	add_mpintÚMessage.add_mpint  s    € ð 	�‰œ×)Ò)¨!Ó,Ô-Øˆr   c                óœ   € \         P                  ! V4      pV P                  \        V4      4       V P                  P                  V4       V # )zC
Add a bytestring to the stream.

:param byte s: bytestring to add
)r   r   ro   r/   r   r`   )r   Úss   &&r   rt   ÚMessage.add_string  s8   € ô �LŠL˜‹OˆØ�‰”S˜“VÔØ�‰×Ñ˜!ÔØˆr   c                óF   € V P                  RP                  V4      4       V # )zÁ
Add a list of strings to the stream.  They are encoded identically to
a single string of values separated by commas.  (Yes, really, that's
how SSH2 does it.)

:param l: list of strings to add
rZ   )rt   Újoin)r   Úls   &&r   Úadd_listÚMessage.add_list  s   € ð 	�‰˜Ÿ™ ›Ô$Øˆr   c                ó  € \        V4      \        J d   V P                  V4      # \        V\        4      '       d   V P                  V4      # \        V4      \        J d   V P                  V4      # V P                  V4      # r   )	ÚtypeÚboolrh   Ú
isinstanceÚintrv   Úlistr…   rt   )r   Úis   &&r   Ú_addÚMessage._add'  se   € Ü�‹7”d‹?Ø×#Ñ# AÓ&Ð&Ü˜œ3×ÒØ×(Ñ(¨Ó+Ð+Ü�!‹Wœ‹_Ø—=‘= Ó#Ð#à—?‘? 1Ó%Ð%r   c                ó:   € V F  pV P                  V4       K  	  R# )zë
Add a sequence of items to the stream.  The values are encoded based
on their type: bytes, str, int, bool, or list.

.. warning::
    Longs are encoded non-deterministically.  Don't use this method.

:param seq: the sequence of items
N)rŽ   )r   ÚseqÚitems   &* r   ÚaddÚMessage.add3  s   € ó ˆDØ�I‰I�dŽOó r   )r   r   )%Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rs   r   r   r   r   r"   r)   r,   r3   r6   r:   rC   rG   rK   rN   rR   rU   r?   r\   ra   re   rh   ro   rv   ry   r}   rt   r…   rŽ   r“   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r	   r	      s¨   ø‡ € ñð €Gô$òòHò&òòò*òò	!òò
,ò9ò9ò4ò.ò$ò.ò*òòò
òòòòò	ò	ò&÷ð r   r	   )r™   r@   Úior   Úparamikor   Úparamiko.commonr   r   r   Úparamiko.utilr   r	   © r   r   Ú<module>r¢      s*   ðñ&ó Ý å ß 9Ñ 9Ý ÷_ó _r   