§
    JŠtj×1  ã                  ó|  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZmZ ddlmZmZ 	 ddlmZ n# e$ r	 ddlmZ Y nw xY wg d¢Z G d	„ d
ej        ¦  «        Zej        Zej        Zej        Zej        Zej         Z!ej"        Z#eeefZ$ee!e#fZ% G d„ dej        ¦  «        Z&e&j'        de&j(        de&j)        de&j*        de&j+        de&j,        de&j-        de&j.        de&j/        de&j0        de&j1        de&j2        de&j3        de&j4        de&j5        diZ6de7d<   e&j'        e&j(        e&j)        e&j*        e&j-        e&j.        e&j/        e&j0        e&j1        e&j2        e&j3        e&j4        hZ8e&j'        e&j(        e&j+        hZ9e:e;e<fZ=ej>         G d„ d¦  «        ¦   «         Z?ej>         G d „ d!¦  «        ¦   «         Z@dd"lAmBZB dS )#é    )ÚannotationsN)Ú	GeneratorÚSequence)ÚCallableÚUnioné   )ÚPayloadTooBigÚProtocolError)Ú
apply_mask)ÚOpcodeÚOP_CONTÚOP_TEXTÚ	OP_BINARYÚOP_CLOSEÚOP_PINGÚOP_PONGÚDATA_OPCODESÚCTRL_OPCODESÚ	CloseCodeÚFrameÚClosec                  ó*   — e Zd ZdZd\  ZZZd\  ZZZ	dS )r   z#Opcode values for WebSocket frames.)r   r   é   )é   é	   é
   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚCONTÚTEXTÚBINARYÚCLOSEÚPINGÚPONG© ó    úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/websockets/frames.pyr   r   %   s,   € € € € € Ø-Ð-à)Ñ€Dˆ$�Ø(Ñ€Eˆ4���r(   r   c                  óN   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdS )r   z-Close code values for WebSocket close frames.iè  ié  iê  ië  ií  iî  iï  ið  iñ  iò  ió  iô  iõ  iö  i÷  N)r   r   r   r    ÚNORMAL_CLOSUREÚ
GOING_AWAYÚPROTOCOL_ERRORÚUNSUPPORTED_DATAÚNO_STATUS_RCVDÚABNORMAL_CLOSUREÚINVALID_DATAÚPOLICY_VIOLATIONÚMESSAGE_TOO_BIGÚMANDATORY_EXTENSIONÚINTERNAL_ERRORÚSERVICE_RESTARTÚTRY_AGAIN_LATERÚBAD_GATEWAYÚTLS_HANDSHAKEr'   r(   r)   r   r   7   sc   € € € € € Ø7Ð7à€NØ€JØ€NØÐà€NØÐØ€LØÐØ€OØÐØ€NØ€OØ€OØ€KØ€M€M€Mr(   r   ÚOKz
going awayzprotocol errorzunsupported datazno status received [internal]zabnormal closure [internal]zinvalid frame payload datazpolicy violationzmessage too bigzmandatory extensionzinternal errorzservice restartztry again laterzbad gatewayz TLS handshake failure [internal]zdict[int, str]ÚCLOSE_CODE_EXPLANATIONSc                  óæ   — e Zd ZU dZded<   ded<   dZded<   d	Zded
<   d	Zded<   d	Zded<    e	e
j                             dd¦  «        ¦  «        Zd"d„Zedddœd#d„¦   «         Zddœd$d„Zd%d!„ZdS )&r   aN  
    WebSocket frame.

    Attributes:
        opcode: Opcode.
        data: Payload data.
        fin: FIN bit.
        rsv1: RSV1 bit.
        rsv2: RSV2 bit.
        rsv3: RSV3 bit.

    Only these fields are needed. The MASK bit, payload length and masking-key
    are handled on the fly when parsing and serializing frames.

    r   Úopcodez#Union[bytes, bytearray, memoryview]ÚdataTÚboolÚfinFÚrsv1Úrsv2Úrsv3ÚWEBSOCKETS_MAX_LOG_SIZEÚ75ÚreturnÚstrc                ó<  — d}t          | j        ¦  «        › dt          | j        ¦  «        dk    rdnd› �}| j        rdnd}| j        t          u r5t          t          | j        ¦  «                             ¦   «         ¦  «        }�nž| j        t          u r| j        }t          |¦  «        | j	        dz  k    r<| j	        dz  dz
  dz  }d 
                    |dd	|z  …         d
|| d…         g¦  «        }d 
                    d„ |D ¦   «         ¦  «        }�n| j        t          u r-t          t                               | j        ¦  «        ¦  «        }nÖ| j        rÍ	 t          t          | j        ¦  «                             ¦   «         ¦  «        }d}n˜# t          t           f$ r‚ | j        }t          |¦  «        | j	        dz  k    r<| j	        dz  dz
  dz  }d 
                    |dd	|z  …         d
|| d…         g¦  «        }d 
                    d„ |D ¦   «         ¦  «        }d}Y nw xY wd}t          |¦  «        | j	        k    r)| j	        dz  dz
  }|dd	|z  …         dz   || d…         z   }d 
                    t#          d|||g¦  «        ¦  «        }| j        j        › d|› d|› d�S )zE
        Return a human-readable representation of a frame.

        Nz byter   Ú ÚsÚ	continuedé   r(   r   s     ú c              3  ó   K  — | ]}|d ›V — Œ	dS ©Ú02xNr'   ©Ú.0Úbytes     r)   ú	<genexpr>z Frame.__str__.<locals>.<genexpr>¬   s&   è è € Ð=Ð=¨d˜t˜M˜MÐ=Ð=Ð=Ð=Ð=Ð=r(   Útextc              3  ó   K  — | ]}|d ›V — Œ	dS rO   r'   rQ   s     r)   rT   z Frame.__str__.<locals>.<genexpr>½   s&   è è € ÐAÐA°$ 4  ÐAÐAÐAÐAÐAÐAr(   Úbinaryz''z...z, z [ú])Úlenr>   r@   r=   r   ÚreprÚbytesÚdecoder   ÚMAX_LOG_SIZEÚjoinr   rG   r   ÚparseÚUnicodeDecodeErrorÚAttributeErrorÚfilterÚname)ÚselfÚcodingÚlengthÚ	non_finalr>   rW   ÚcutÚmetadatas           r)   Ú__str__zFrame.__str__˜   s¿  € ð
 ˆÝ˜œ	‘N”NÐMÐM­s°4´9©~¬~ÀÒ/BÐ/B¨¨ÈÐMÐMˆØœ(Ð3�B�B¨ˆ	àŒ;�'Ð!Ð!õ �˜dœiÑ(Ô(×/Ò/Ñ1Ô1Ñ2Ô2ˆD‰DØŒ[�IÐ%Ð%ð ”YˆFÝ�6‰{Œ{˜TÔ.°!Ñ3Ò3Ð3ØÔ(¨AÑ-°Ñ1°aÑ7�ØŸš 6¨)¨A°©G¨)Ô#4°kÀ6È3È$È%È%Ä=Ð"QÑRÔR�Ø—8’8Ð=Ð=°fÐ=Ñ=Ô=Ñ=Ô=ˆD‰DØŒ[�HÐ$Ð$Ý•u—{’{ 4¤9Ñ-Ô-Ñ.Ô.ˆDˆDØŒYð 	ð	"Ý�E $¤)Ñ,Ô,×3Ò3Ñ5Ô5Ñ6Ô6�Ø��øÝ&­Ð7ð "ð "ð "Øœ�Ý�v‘;”; Ô!2°aÑ!7Ò7Ð7ØÔ,°Ñ1°AÑ5¸!Ñ;�CØ ŸXšX v¨i°°C±¨iÔ'8¸+ÀvÈsÈdÈeÈeÄ}Ð&UÑVÔV�FØ—x’xÐAÐA¸&ÐAÑAÔAÑAÔA�Ø!���ð"øøøð ˆDåˆt‰9Œ9�tÔ(Ò(Ð(ØÔ# qÑ(¨1Ñ,ˆCØ˜	˜!˜c™'˜	”? UÑ*¨T°3°$°%°%¬[Ñ8ˆDà—9’9�V D¨6°6¸9Ð*EÑFÔFÑGÔGˆà”+Ô"Ð8Ð8 TÐ8Ð8¨XÐ8Ð8Ð8Ð8s   Å5F
 Æ
BHÈHN)Úmax_sizeÚ
extensionsÚ
read_exactú-Callable[[int], Generator[None, None, bytes]]Úmaskrk   ú
int | Nonerl   ú%Sequence[extensions.Extension] | NoneúGenerator[None, None, Frame]c             #  óJ  K  —  |d¦  «        E d{V —†}t          j        d|¦  «        \  }}|dz  rdnd}|dz  rdnd}	|dz  rdnd}
|d	z  rdnd}	 t          |d
z  ¦  «        }n"# t          $ r}t	          d¦  «        |‚d}~ww xY w|dz  rdnd|k    rt	          d¦  «        ‚|dz  }|dk    r) |d¦  «        E d{V —†}t          j        d|¦  «        \  }n.|dk    r( |d¦  «        E d{V —†}t          j        d|¦  «        \  }|�||k    rt          ||¦  «        ‚|r |d¦  «        E d{V —†} ||¦  «        E d{V —†}|rt          ||¦  «        } | ||||	|
|¦  «        }|€g }t          |¦  «        D ]}|                     ||¬¦  «        }Œ| 	                    ¦   «          |S )aá  
        Parse a WebSocket frame.

        This is a generator-based coroutine.

        Args:
            read_exact: Generator-based coroutine that reads the requested
                bytes or raises an exception if there isn't enough data.
            mask: Whether the frame should be masked i.e. whether the read
                happens on the server side.
            max_size: Maximum payload size in bytes.
            extensions: List of extensions, applied in reverse order.

        Raises:
            EOFError: If the connection is closed without a full WebSocket frame.
            PayloadTooBig: If the frame's payload size exceeds ``max_size``.
            ProtocolError: If the frame contains incorrect values.

        r   Nú!BBé€   TFé@   é    é   é   zinvalid opcodezincorrect maskingé   é~   ú!Hr   z!Qé   )rk   )
ÚstructÚunpackr   Ú
ValueErrorr
   r	   r   Úreversedr\   Úcheck)Úclsrm   ro   rk   rl   r>   Úhead1Úhead2r@   rA   rB   rC   r=   Úexcrf   Ú
mask_bytesÚframeÚ	extensions                     r)   r_   zFrame.parseÊ   sg  è è € ð: %˜* Q™-œ-Ð'Ð'Ð'Ð'Ð'Ð'ˆÝ”} U¨DÑ1Ô1‰ˆˆuð ˜jÑ(Ð3ˆdˆd¨eˆØ˜zÑ)Ð4ˆtˆt¨uˆØ˜zÑ)Ð4ˆtˆt¨uˆØ˜zÑ)Ð4ˆtˆt¨uˆð	;Ý˜E JÑ.Ñ/Ô/ˆFˆFøÝð 	;ð 	;ð 	;ÝÐ 0Ñ1Ô1°sÐ:øøøøð	;øøøð ˜JÑ&Ð1ˆDˆD¨E°dÒ:Ð:ÝÐ 3Ñ4Ô4Ð4à˜Ñ#ˆØ�SŠ=ˆ=Ø(˜j¨™mœmÐ+Ð+Ð+Ð+Ð+Ð+ˆDÝœ d¨DÑ1Ô1‰IˆVˆVØ�sŠ]ˆ]Ø(˜j¨™mœmÐ+Ð+Ð+Ð+Ð+Ð+ˆDÝœ d¨DÑ1Ô1‰IˆVØÐ F¨XÒ$5Ð$5Ý ¨Ñ1Ô1Ð1Øð 	2Ø$. J¨q¡M¤MÐ1Ð1Ð1Ð1Ð1Ð1ˆJð %˜* VÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,ˆØð 	0Ý˜d JÑ/Ô/ˆDà��F˜D # t¨T°4Ñ8Ô8ˆàÐØˆJÝ! *Ñ-Ô-ð 	?ð 	?ˆIØ×$Ò$ U°XÐ$Ñ>Ô>ˆEˆEà�Š‰Œˆàˆs   ÁA$ Á$
BÁ.A>Á>B©rl   r[   c               ó<  — |                       ¦   «          |€g }|D ]}|                     | ¦  «        } Œt          j        ¦   «         }| j        rdnd| j        rdndz  | j        rdndz  | j        rdndz  | j        z  }|rdnd}t          | j
        ¦  «        }|dk     r-|                     t          j        d|||z  ¦  «        ¦  «         na|d	k     r.|                     t          j        d
||dz  |¦  «        ¦  «         n-|                     t          j        d||dz  |¦  «        ¦  «         |r)t          j        d¦  «        }|                     |¦  «         |rt!          | j
        |¦  «        }	n| j
        }	|                     |	¦  «         |                     ¦   «         S )aH  
        Serialize a WebSocket frame.

        Args:
            mask: Whether the frame should be masked i.e. whether the write
                happens on the client side.
            extensions: List of extensions, applied in order.

        Raises:
            ProtocolError: If the frame contains incorrect values.

        Nru   r   rv   rw   rx   r{   rt   i   z!BBHz!BBQrz   r}   )r‚   ÚencodeÚioÚBytesIOr@   rA   rB   rC   r=   rY   r>   Úwriter~   ÚpackÚsecretsÚtoken_bytesr   Úgetvalue)
rd   ro   rl   r‰   Úoutputr„   r…   rf   r‡   r>   s
             r)   Ú	serializezFrame.serialize  s¼  € ð$ 	�
Š
‰ŒˆàÐØˆJØ#ð 	*ð 	*ˆIØ×#Ò# DÑ)Ô)ˆDˆDå”‘”ˆð  œ8Ð*ˆZˆZ¨Ø!œYÐ-ˆzˆz¨Añ/à!œYÐ-ˆzˆz¨Añ/ð "œYÐ-ˆzˆz¨Añ/ð Œkñ	ð 	ð #Ð)�
�
¨ˆå�T”Y‘”ˆØ�CŠ<ˆ<Ø�LŠL�œ U¨E°5¸6±>ÑBÔBÑCÔCÐCÐCØ�eŠ^ˆ^Ø�LŠL�œ V¨U°E¸C±KÀÑHÔHÑIÔIÐIÐIà�LŠL�œ V¨U°E¸C±KÀÑHÔHÑIÔIÐIàð 	%Ý Ô,¨QÑ/Ô/ˆJØ�LŠL˜Ñ$Ô$Ð$ð ð 	Ý˜dœi¨Ñ4Ô4ˆDˆDà”9ˆDØ�Š�TÑÔÐà�ŠÑ Ô Ð r(   ÚNonec                óè   — | j         s| j        s| j        rt          d¦  «        ‚| j        t
          v r=t          | j        ¦  «        dk    rt          d¦  «        ‚| j        st          d¦  «        ‚dS dS )z¦
        Check that reserved bits and opcode have acceptable values.

        Raises:
            ProtocolError: If a reserved bit or the opcode is invalid.

        zreserved bits must be 0é}   zcontrol frame too longzfragmented control frameN)	rA   rB   rC   r
   r=   r   rY   r>   r@   ©rd   s    r)   r‚   zFrame.checkO  sŒ   € ð Œ9ð 	;˜œ	ð 	; T¤Yð 	;ÝÐ 9Ñ:Ô:Ð:àŒ;�,Ð&Ð&Ý�4”9‰~Œ~ Ò#Ð#Ý#Ð$<Ñ=Ô=Ð=Ø”8ð @Ý#Ð$>Ñ?Ô?Ð?ð	 'Ð&ð@ð @r(   ©rF   rG   )
rm   rn   ro   r?   rk   rp   rl   rq   rF   rr   )ro   r?   rl   rq   rF   r[   ©rF   r–   )r   r   r   r    Ú__annotations__r@   rA   rB   rC   ÚintÚosÚenvironÚgetr]   rj   Úclassmethodr_   r•   r‚   r'   r(   r)   r   r   |   s*  € € € € € € ðð ð  €N€N�NØ-Ð-Ð-Ñ-Ø€CÐÐÐÑØ€DÐÐÐÑØ€DÐÐÐÑØ€DÐÐÐÑð �3�r”z—~’~Ð&?ÀÑFÔFÑGÔG€Lð09ð 09ð 09ð 09ðd ð  $Ø<@ðGð Gð Gð Gð Gñ „[ðGðZ =Að	9!ð 9!ð 9!ð 9!ð 9!ð 9!ðv@ð @ð @ð @ð @ð @r(   r   c                  óX   — e Zd ZU dZded<   ded<   dd„Zedd
„¦   «         Zdd„Zdd„Z	dS )r   z
    Code and reason for WebSocket close frames.

    Attributes:
        code: Close code.
        reason: Close reason.

    r�   ÚcoderG   ÚreasonrF   c                óæ   — d| j         cxk    rdk     rn nd}n8d| j         cxk    rdk     rn nd}n t                               | j         d¦  «        }| j         › d|› d�}| j        r|› d	| j        › �}|S )
zU
        Return a human-readable representation of a close code and reason.

        é¸  i   Ú
registeredéˆ  zprivate useÚunknownz (ú)rM   )r£   r;   r    r¤   )rd   ÚexplanationÚresults      r)   rj   zClose.__str__o  s­   € ð
 �4”9Ð#Ð#Ò#Ð#˜tÒ#Ð#Ð#Ð#Ð#Ø&ˆKˆKØ�T”YÐ%Ð%Ò%Ð% Ò%Ð%Ð%Ð%Ð%Ø'ˆKˆKå1×5Ò5°d´iÀÑKÔKˆKØ”IÐ/Ð/ Ð/Ð/Ð/ˆàŒ;ð 	/ØÐ.Ð. ¤Ð.Ð.ˆFàˆr(   r>   r[   c                óR  — t          |¦  «        dk    r]t          j        d|dd…         ¦  «        \  }|dd…                              ¦   «         } | ||¦  «        }|                     ¦   «          |S t          |¦  «        dk    r | t
          j        d¦  «        S t          d¦  «        ‚)z÷
        Parse the payload of a close frame.

        Args:
            data: Payload of the close frame.

        Raises:
            ProtocolError: If data is ill-formed.
            UnicodeDecodeError: If the reason isn't valid UTF-8.

        r   r|   Nr   rI   zclose frame too short)rY   r~   r   r\   r‚   r   r/   r
   )rƒ   r>   r£   r¤   Úcloses        r)   r_   zClose.parse�  s›   € õ ˆt‰9Œ9˜Š>ˆ>Ý”m D¨$¨r°¨r¬(Ñ3Ô3‰GˆTØ˜!˜"˜"”X—_’_Ñ&Ô&ˆFØ�C˜˜fÑ%Ô%ˆEØ�KŠK‰MŒMˆMØˆLÝ�‰YŒY˜!Š^ˆ^Ø�3•yÔ/°Ñ4Ô4Ð4åÐ 7Ñ8Ô8Ð8r(   c                ó’   — |                       ¦   «          t          j        d| j        ¦  «        | j                             ¦   «         z   S )z:
        Serialize the payload of a close frame.

        r|   )r‚   r~   r�   r£   r¤   rŒ   r™   s    r)   r•   zClose.serialize™  s8   € ð
 	�
Š
‰ŒˆÝŒ{˜4 ¤Ñ+Ô+¨d¬k×.@Ò.@Ñ.BÔ.BÑBÐBr(   r–   c                ól   — | j         t          v s#d| j         cxk    rdk     sn t          d¦  «        ‚dS dS )z›
        Check that the close code has a valid value for a close frame.

        Raises:
            ProtocolError: If the close code is invalid.

        r¦   r¨   zinvalid status codeN)r£   ÚEXTERNAL_CLOSE_CODESr
   r™   s    r)   r‚   zClose.check¡  sO   € ð ”	Õ1Ð1Ð1°T¸T¼YÐ5MÐ5MÒ5MÐ5MÈÒ5MÐ5MÐ5MÐ5MÝÐ 5Ñ6Ô6Ð6ð 2Ð1Ð5MÐ5Mr(   Nrš   )r>   r[   rF   r   )rF   r[   r›   )
r   r   r   r    rœ   rj   r¡   r_   r•   r‚   r'   r(   r)   r   r   a  s”   € € € € € € ðð ð €I€I�IØ€K€K�Kðð ð ð ð$ ð9ð 9ð 9ñ „[ð9ð.Cð Cð Cð Cð	7ð 	7ð 	7ð 	7ð 	7ð 	7r(   r   rŠ   )CÚ
__future__r   ÚdataclassesÚenumr�   rž   r‘   r~   Úcollections.abcr   r   Útypingr   r   Ú
exceptionsr	   r
   Úspeedupsr   ÚImportErrorÚutilsÚ__all__ÚIntEnumr   r!   r   r"   r   r#   r   r$   r   r%   r   r&   r   r   r   r   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r;   rœ   r±   ÚOK_CLOSE_CODESr[   Ú	bytearrayÚ
memoryviewÚ	BytesLikeÚ	dataclassr   r   rI   rl   r'   r(   r)   ú<module>rÂ      sV  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ð"Ø$Ð$Ð$Ð$Ð$Ð$Ð$øØð "ð "ð "Ø!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ð"øøøðð ð €ð )ð )ð )ð )ð )ˆTŒ\ñ )ô )ð )ð Œ+€Ø
Œ+€ØŒM€	ØŒ<€Ø
Œ+€Ø
Œ+€à˜ Ð*€Ø˜ 'Ð)€ðð ð ð ð �”ñ ô ð ð. Ô˜dØÔ˜,ØÔÐ.ØÔÐ 2ØÔÐ=ØÔÐ =ØÔÐ8ØÔÐ 2ØÔÐ0ØÔ!Ð#8ØÔÐ.ØÔÐ0ØÔÐ0ØÔ˜=ØÔÐ?ð+Ð ð ð ð ñ ð, ÔØÔØÔØÔØÔØÔØÔØÔ!ØÔØÔØÔØÔðÐ ð" ÔØÔØÔð€ð �9˜jÐ(€	ð Ôða@ð a@ð a@ð a@ð a@ñ a@ô a@ñ Ôða@ðH ÔðH7ð H7ð H7ð H7ð H7ñ H7ô H7ñ ÔðH7ðX Ð Ð Ð Ð Ð Ð Ð s   ¹A  Á AÁA