Ë
    V.jÐ  ã                  óú  — d Z ddlmZ ddlZddlmZmZ ddlmZ dgZ	dd„Z
 e
d«      Z e
d	«      Z e
d
«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d	«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z e
d«      Z  e
d«      Z! e
d«      Z" e
d«      Z# G d„ d«      Z$y)z°
Parser for the Telnet protocol. (Not a complete implementation of the telnet
specification, but sufficient for a command line interface.)

Inspired by `Twisted.conch.telnet`.
é    )ÚannotationsN)ÚCallableÚ	Generatoré   )ÚloggerÚTelnetProtocolParserc                ó   — t        | f«      S ©N)Úbytes)Únumbers    úhC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\prompt_toolkit/contrib/telnet/protocol.pyÚint2byter      s   € Ü�&�ÓÐó    é   éÿ   éý   éþ   é"   éú   éû   éü   éð   é   é   éò   éó   éô   éõ   éö   é÷   éø   éù   c                  ó€   — e Zd ZdZ	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zdd„Zdd„Zy)r   a  
    Parser for the Telnet protocol.
    Usage::

        def data_received(data):
            print(data)

        def size_received(rows, columns):
            print(rows, columns)

        p = TelnetProtocolParser(data_received, size_received)
        p.feed(binary_data)
    c                óŽ   — || _         || _        || _        | j                  «       | _        | j                  j                  d «       y r
   )Údata_received_callbackÚsize_received_callbackÚttype_received_callbackÚ_parse_coroutineÚ_parserÚsend)Úselfr%   r&   r'   s       r   Ú__init__zTelnetProtocolParser.__init__G   s>   € ð '=ˆÔ#Ø&<ˆÔ#Ø'>ˆÔ$à×,Ñ,Ó.ˆŒØ�‰×Ñ˜$Õr   c                ó&   — | j                  |«       y r
   )r%   ©r+   Údatas     r   Úreceived_dataz"TelnetProtocolParser.received_dataT   s   € Ø×#Ñ# DÕ)r   c                ó0   — t        j                  d|«       y)zReceived telnet DO command.zDO %rN©r   Úinfor.   s     r   Údo_receivedz TelnetProtocolParser.do_receivedW   s   € ä�‰�G˜TÕ"r   c                ó0   — t        j                  d|«       y)zReceived telnet DONT command.zDONT %rNr2   r.   s     r   Údont_receivedz"TelnetProtocolParser.dont_received[   ó   € ä�‰�I˜tÕ$r   c                ó0   — t        j                  d|«       y)zReceived telnet WILL command.zWILL %rNr2   r.   s     r   Úwill_receivedz"TelnetProtocolParser.will_received_   r7   r   c                ó0   — t        j                  d|«       y)zReceived telnet WONT command.zWONT %rNr2   r.   s     r   Úwont_receivedz"TelnetProtocolParser.wont_receivedc   r7   r   c                ó
  — |t         k(  r| j                  |«       y |t        k(  r| j                  |«       y |t        k(  r| j                  |«       y |t        k(  r| j                  |«       y t        j                  d||«       y )Nzcommand received %r %r)
ÚDOr4   ÚDONTr6   ÚWILLr9   ÚWONTr;   r   r3   )r+   Úcommandr/   s      r   Úcommand_receivedz%TelnetProtocolParser.command_receivedg   si   € Ø”bŠ=Ø×Ñ˜TÕ"àœŠ_Ø×Ñ˜tÕ$àœŠ_Ø×Ñ˜tÕ$àœŠ_Ø×Ñ˜tÕ$ô �K‰KÐ0°'¸4Õ@r   c                ó¢   — t        |«      dk(  r,t        j                  d|«      \  }}| j                  ||«       yt	        j
                  d«       y)z5
        Received NAWS. (Window dimensions.)
        é   z!HHzWrong number of NAWS bytesN)ÚlenÚstructÚunpackr&   r   Úwarning)r+   r/   ÚcolumnsÚrowss       r   ÚnawszTelnetProtocolParser.nawsw   sB   € ô ˆt‹9˜Š>ô #ŸM™M¨%°Ó6‰MˆG�TØ×'Ñ'¨¨gÕ6ä�N‰NÐ7Õ8r   c                óš   — |dd |dd }}|t         k(  r#|j                  d«      }| j                  |«       yt        j                  d«       y)z)
        Received terminal type.
        r   r   NÚasciiz.Received a non-IS terminal type Subnegotiation)ÚISÚdecoder'   r   rH   )r+   r/   ÚsubcmdÚttypes       r   rQ   zTelnetProtocolParser.ttype„   sI   € ð ˜A˜a�y $ q r (�ˆØ”RŠ<Ø—K‘K Ó(ˆEØ×(Ñ(¨Õ/ä�N‰NÐKÕLr   c                óÂ   — |dd |dd }}|t         k(  r| j                  |«       y|t        k(  r| j                  |«       yt	        j
                  dt        |«      «       y)z%
        Got negotiate data.
        r   r   NzNegotiate (%r got bytes))ÚNAWSrK   ÚTTYPErQ   r   r3   rE   )r+   r/   rA   Úpayloads       r   Ú	negotiatezTelnetProtocolParser.negotiate�   sS   € ð    !˜9 d¨1¨2 h�ˆà”dŠ?Ø�I‰I�gÕØœÒØ�J‰J�wÕä�K‰KÐ2´C¸³IÕ>r   c           
   #  óh  K  — 	 d–—}|t        d«      k(  r�n|t        k(  rþd–—}|t        k(  r| j                  |«       nð|t        t        t
        t        t        t        t        t        t        f	v r| j                  |d«       n¬|t        t        t        t         fv rd–—}| j                  ||«       n}|t"        k(  rtg }	 d–—}|t        k(  r d–—}|t$        k(  rn$|j'                  |«       n|j'                  |«       Œ?| j)                  dj+                  |«      «       n| j                  |«       �Œ.­w)z_
        Parser state machine.
        Every 'yield' expression returns the next byte.
        Nr   r   )r   ÚIACr0   ÚNOPÚDMÚBRKÚIPÚAOÚAYTÚECÚELÚGArB   r=   r>   r?   r@   ÚSBÚSEÚappendrV   Újoin)r+   ÚdÚd2Úd3r/   Úd4s         r   r(   z%TelnetProtocolParser._parse_coroutineœ   s  è ø€ ð
 ÚˆAà”H˜Q“KÒÙð ”c’Ú�àœ’9Ø×&Ñ& rÕ*ð œC¤¤S¬"¬b´#´r¼2¼rÐBÑBØ×)Ñ)¨"¨cÕ2ð œB¤¤d¬DÐ1Ñ1Ú�BØ×)Ñ)¨"¨bÕ1ð œ2’Xà�DàÚ"˜à¤š9Ú!&˜BØ!¤RšxØ %à $§¡¨B¥à ŸK™K¨œOð ð —N‘N 3§8¡8¨D£>Õ2à×"Ñ" 1Ô%ñS ùs   ‚D0D2c                óZ   — |D ]&  }| j                   j                  t        |«      «       Œ( y)z*
        Feed data to the parser.
        N)r)   r*   r   )r+   r/   Úbs      r   ÚfeedzTelnetProtocolParser.feedÌ   s$   € ó ˆAØ�L‰L×Ñœh q›kÕ*ñ r   N)r%   zCallable[[bytes], None]r&   zCallable[[int, int], None]r'   zCallable[[str], None]ÚreturnÚNone)r/   r   rm   rn   )rA   r   r/   r   rm   rn   )rm   zGenerator[None, bytes, None])Ú__name__Ú
__module__Ú__qualname__Ú__doc__r,   r0   r4   r6   r9   r;   rB   rK   rQ   rV   r(   rl   © r   r   r   r   8   sl   „ ñð à 7ð ð !;ð ð "7ð	 ð
 
ó ó*ó#ó%ó%ó%óAó 9ó	Mó?ó.&ô`+r   )r   Úintrm   r   )%rr   Ú
__future__r   rF   Útypingr   r   Úlogr   Ú__all__r   rY   ÚSGArX   r=   r>   ÚLINEMODErb   r?   r@   ÚMODErc   ÚECHOrS   ÚSUPPRESS_GO_AHEADrT   ÚSENDrN   rZ   r[   r\   r]   r^   r_   r`   ra   r   rs   r   r   Ú<module>r      s"  ðñõ #ã ß &å ð ð€ó
ñ
 ˆqƒk€Ùˆqƒk€áˆsƒm€Ùˆcƒ]€Ù�ƒ}€Ù�B‹<€Ùˆcƒ]€Ù�ƒ}€Ù�ƒ}€Ù�ƒ{€Ùˆcƒ]€Ù�ƒ{€Ù�ƒ|€Ù�B‹<€Ù˜Q“KÐ á�‹€Ù�ƒ{€Ùˆaƒ[€áˆcƒ]€Ùˆsƒm€Ùˆcƒ]€Ùˆcƒ]€Ùˆsƒm€Ùˆcƒ]€Ùˆcƒ]€Ùˆcƒ]€÷Y+ò Y+r   