ó
    öÞ jûA  ã                  ó  • % S SK J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	J
r
  S SKJr  SSKJrJr  SSKJr   SSKJr  / S	Qr " S
 S\R,                  5      r\R0                  r\R4                  r\R8                  r\R<                  r\R@                  r!\RD                  r#\\\4r$\\!\#4r% " S S\R,                  5      r&\&RN                  S\&RP                  S\&RR                  S\&RT                  S\&RV                  S\&RX                  S\&RZ                  S\&R\                  S\&R^                  S\&R`                  S\&Rb                  S\&Rd                  S\&Rf                  S\&Rh                  S\&Rj                  S0r6S\7S'   \&RN                  \&RP                  \&RR                  \&RT                  \&RZ                  \&R\                  \&R^                  \&R`                  \&Rb                  \&Rd                  \&Rf                  \&Rh                  1r8\&RN                  \&RP                  \&RV                  1r9\Rt                   " S S 5      5       r;\Rt                   " S! S"5      5       r<  S%       S&S# jjr=SS$K>J?r?  g! \ a
    SSKJr   GN<f = f)'é    )ÚannotationsN)Ú	GeneratorÚSequence)ÚCallableé   )ÚPayloadTooBigÚProtocolError)Ú	BytesLike)Ú
apply_mask)ÚOpcodeÚOP_CONTÚOP_TEXTÚ	OP_BINARYÚOP_CLOSEÚOP_PINGÚOP_PONGÚDATA_OPCODESÚCTRL_OPCODESÚ	CloseCodeÚFrameÚClosec                  ó0   • \ rS rSrSrSu  rrrSu  rr	r
Srg)r   é&   z#Opcode values for WebSocket frames.)r   r   é   )é   é	   é
   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚCONTÚTEXTÚBINARYÚCLOSEÚPINGÚPONGÚ__static_attributes__r   ó    ÚK/var/www/html/gaurav/venv/lib/python3.13/site-packages/websockets/frames.pyr   r   &   s   † Ù-à)Ñ€Dˆ$�Ø(Ñ€Eˆ4“r+   r   c                  óT   • \ 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SrSrSrSrg)r   é8   z-Close code values for WebSocket close frames.iè  ié  iê  ië  ií  iî  iï  ið  iñ  iò  ió  iô  iõ  iö  i÷  r   N)r   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   r   8   sT   † Ù7à€NØ€JØ€NØÐà€NØÐØ€LØÐØ€OØÐØ€NØ€OØ€OØ€KØƒ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                  ó$  • \ rS rSr% SrS\S'   S\S'   SrS\S	'   S
rS\S'   S
rS\S'   S
r	S\S'   \
" \R                  R                  SS5      5      r\S\S
\S0rSS jrSS jr\SSS.         SS jj5       rSS.     SS jjrSS jrSrg)r   éz   a"  
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   Úopcoder
   ÚdataTÚboolÚfinFÚrsv1Úrsv2Úrsv3ÚWEBSOCKETS_MAX_LOG_SIZEÚ75c                ó   • U R                   R                  U R                  5      nU R                  5       u  p#X:X  a  SO
U(       a  SOSn[	        U R
                  5       S[	        U R
                  5      S:X  a  SOS 3nU R                  (       a  SOSnSR                  [        S	XEU/5      5      nU R                  R                   S
U SU S3$ )a(  
Return a human-readable representation of a frame.

This function is intended for logging and debugging. It doesn't aim to
support round-tripping because payloads can be too long for displaying
conveniently. Instead, it shows the beginning and the end. It's robust
to incorrect data.

It attempts to decode UTF-8 payloads whenever possible, even for binary
frames and control frames, because those frequently contain UTF-8 data.
It applies the same logic to continuation frames, because we don't know
if they continue a text frame or a binary frame.

Ú ÚtextÚbinaryz byter   ÚsÚ	continuedz, NÚ z [Ú])
ÚDEFAULT_IS_TEXTÚgetrB   Ú
_data_reprÚlenrC   rE   ÚjoinÚfilterÚname)ÚselfÚexpect_textÚ	data_reprÚis_textÚ	data_typeÚlengthÚ	non_finalÚmetadatas           r,   Ú__str__ÚFrame.__str__˜   s³   € ð ×*Ñ*×.Ñ.¨t¯{©{Ó;ˆØ!Ÿ_™_Ó.Ñˆ	à%Ó0‘BÆ±vÈhˆ	Ü˜Ÿ	™	“NÐ# 5¬s°4·9±9«~ÀÓ/B©ÈÐ(LÐMˆØŸ(Ÿ(‘B¨ˆ	Ø—9‘9œV D¨9¸iÐ*HÓIÓJˆà—+‘+×"Ñ"Ð# 1 Y K¨r°(°¸1Ð=Ð=r+   c                óÜ  • U R                   (       d'  SU R                  R                  U R                  5      4$ U R                  [        L a+   [        [        R                  U R                   5      5      S4$ [        U R                   5      SU R                  -  :”  a¨  [        U R                   SSU R                  -  S-   5      n[        U R                   SU R                  -  S-  S 5      n[        UU R                  [        :g  S9=(       a    [        UU R                  S	9nU(       a  [!        X-   R#                  S
S95      nOZ[        U R                   5      n[        UU R                  [        :g  U R                  S9nU(       a  [!        UR#                  S
S95      nU(       dr  U R                   n[        U5      U R                  S-  :”  a2  U R                  S-  S-
  S-  nSR%                  USSU-   SXg* S /5      nSR%                  S U 5       5      n[        W5      U R                  :”  a#  U R                  S-  S-
  nUSSU-   S-   XG* S -   nXC4$ ! [        [        4 a     GNóf = f)zÅ
Return a human-readable representation of the payload.

Also returns whether the payload is text.

The representation is elided to fit ``MAX_LOG_SIZE``.

This is a helper for the __str__ method.

z''Té   Nr   é   éüÿÿÿ)Úmust_start_clean)Úmust_end_cleanÚreplace)Úerrors)rh   ri   r   r+   r   s     rQ   c              3  ó&   #   • U H  oS  v •  M
     g7f)Ú02xNr   )Ú.0Úbytes     r,   Ú	<genexpr>Ú#Frame._data_repr.<locals>.<genexpr>ï   s   é € Ð B¹6°4¨ :¤º6ùs   ‚z...)rC   rS   rT   rB   r   Ústrr   Úparser	   ÚUnicodeDecodeErrorrV   ÚMAX_LOG_SIZEÚbytesÚis_utf8_fragmentr   rE   ÚreprÚdecoderW   )rZ   Ú
data_startÚdata_endr]   r\   rC   rN   Úcuts           r,   rU   ÚFrame._data_repr±   sM  € ð �y�yØ˜×-Ñ-×1Ñ1°$·+±+Ó>Ð>Ð>ð
 �;‰;œ(Ò"ðÜœ5Ÿ;™; t§y¡yÓ1Ó2°DÐ8Ð8ô ˆt�y‰y‹>˜A × 1Ñ 1Ñ1Ó1ô ˜tŸy™yÐ)E¨1¨t×/@Ñ/@Ñ+@ÀAÑ+EÐFÓGˆJÜ˜TŸY™Y r¨D×,=Ñ,=Ñ'=ÀÑ'BÐ'DÐEÓFˆHÜ&ØØ!%§¡´Ñ!7ñ÷ ô #ØØ#Ÿx™xñð ö Ü  *Ñ"7×!?Ñ!?ÀyÐ!?Ð!QÓR�	øô ˜Ÿ™Ó#ˆDÜ&ØØ!%§¡´Ñ!7Ø#Ÿx™xñˆGö
 Ü  §¡°I Ð!>Ó?�	ö
 Ø—Y‘YˆFÜ�6‹{˜T×.Ñ.°!Ñ3Ó3Ø×(Ñ(¨AÑ-°Ñ1°aÑ7�àŸ™ 6¨)¨A°©GÐ#4°kÀ6È$È%À=Ð"QÓR�ØŸ™Ñ B¹6Ó BÓBˆIô ˆy‹>˜D×-Ñ-Ó-Ø×#Ñ# qÑ(¨1Ñ,ˆCØ! ) A¨¡GÐ,¨uÑ4°yÀÀÐ7GÑGˆIàÐ!Ð!øôe "Ô#5Ð6ó Úðús   Á)I ÉI+É*I+N)Úmax_sizeÚ
extensionsc             #  ó^  #   • U" S5       Sh  v•N n[         R                  " SU5      u  pgUS-  (       a  SOSnUS-  (       a  SOSn	US-  (       a  SOSn
US	-  (       a  SOSn [        US
-  5      nUS-  (       a  SOSU:w  a  [	        S5      eUS-  nUS:X  a*  U" S5       Sh  v•N n[         R                  " SU5      u  nO/US:X  a)  U" S5       Sh  v•N n[         R                  " SU5      u  nUb  Xã:”  a  [        Xã5      eU(       a  U" S5       Sh  v•N nU" U5       Sh  v•N nU(       a  [        UW5      nU " XÅX‰X«5      nUc  / n[        U5       H  nUR                  UUS9nM     UR                  5         U$  GNv! [         a  n[	        S5      UeSnAff = f Nþ NÐ N� N�7f)aq  
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!Qre   )r~   )
ÚstructÚunpackr   Ú
ValueErrorr	   r   r   Úreversedry   Úcheck)ÚclsÚ
read_exactÚmaskr~   r   rC   Úhead1Úhead2rE   rF   rG   rH   rB   Úexcr_   Ú
mask_bytesÚframeÚ	extensions                     r,   rs   ÚFrame.parseù   s°  é € ñ: % Q›-×'ˆÜ—}’} U¨DÓ1‰ˆð ˜j×(‰d¨eˆØ˜z×)‰t¨uˆØ˜z×)‰t¨uˆØ˜z×)‰t¨uˆð	;Ü˜E JÑ.Ó/ˆFð ˜J×&‰D¨E°dÓ:ÜÐ 3Ó4Ð4à˜Ñ#ˆØ�S‹=Ù(¨›m×+ˆDÜŸš d¨DÓ1‰I‰VØ�s‹]Ù(¨›m×+ˆDÜŸš d¨DÓ1‰IˆVØÑ FÓ$5Ü Ó1Ð1ÞÙ$.¨q£M×1ˆJñ % VÓ,×,ˆÞÜ˜d JÓ/ˆDá�F #¨TÓ8ˆàÑØˆJÜ! *Ö-ˆIØ×$Ñ$ U°XÐ$Ð>ŠEñ .ð 	�‰ŒàˆòW (øô ó 	;ÜÐ 0Ó1°sÐ:ûð	;úñ ,ñ ,ñ
 2ñ -ùsx   ‚F-ŽF�AF-Á%F Á33F-Â&F%Â'/F-ÃF'ÃAF-ÄF)ÄF-Ä)F+Ä*AF-Æ
F"ÆFÆF"Æ"F-Æ'F-Æ)F-Æ+F-©r   c               óš  • U R                  5         Uc  / nU H  nUR                  U 5      n M     [        R                  " 5       nU R                  (       a  SOSU R
                  (       a  SOS-  U R                  (       a  SOS-  U R                  (       a  SOS-  U R                  -  nU(       a  SOSn[        U R                  5      nUS:  a*  UR                  [        R                  " SXVU-  5      5        O[US:  a+  UR                  [        R                  " S	XVS-  U5      5        O*UR                  [        R                  " S
XVS-  U5      5        U(       a'  [        R                  " S5      nUR                  U5        U(       a  [!        U R                  W5      n	OU R                  n	UR                  U	5        UR#                  5       $ )a  
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.

r‚   r   rƒ   r„   r…   rˆ   r�   i   z!BBHz!BBQr‡   re   )rŽ   ÚencodeÚioÚBytesIOrE   rF   rG   rH   rB   rV   rC   ÚwriterŠ   ÚpackÚsecretsÚtoken_bytesr   Úgetvalue)
rZ   r‘   r   r—   Úoutputr’   r“   r_   r•   rC   s
             r,   Ú	serializeÚFrame.serializeC  sb  € ð$ 	�
‰
ŒàÑØˆJÛ#ˆIØ×#Ñ# DÓ)ŠDñ $ô —’“ˆð  Ÿ8Ÿ8‰Z¨Ø!ŸYŸY‰z¨Añ/à!ŸYŸY‰z¨Añ/ð "ŸYŸY‰z¨Añ/ð �k‰kñ	ð 	ö #‘
¨ˆä�T—Y‘Y“ˆØ�C‹<Ø�L‰LœŸš U¨E¸6±>ÓBÕCØ�e‹^Ø�L‰LœŸš V¨U¸C±KÀÓHÕIà�L‰LœŸš V¨U¸C±KÀÓHÔIæÜ ×,Ò,¨QÓ/ˆJØ�L‰L˜Ô$ö Ü˜dŸi™i¨Ó4‰Dà—9‘9ˆDØ�‰�TÔà�‰Ó Ð r+   c                ó*  • U R                   (       d"  U R                  (       d  U R                  (       a  [        S5      eU R                  [
        ;   aA  [        U R                  5      S:”  a  [        S5      eU R                  (       d  [        S5      egg)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)	rF   rG   rH   r	   rB   r   rV   rC   rE   ©rZ   s    r,   rŽ   ÚFrame.check  sh   € ð �9�9˜Ÿ	Ÿ	 T§Y§YÜÐ 9Ó:Ð:à�;‰;œ,Ó&Ü�4—9‘9‹~ Ó#Ü#Ð$<Ó=Ð=Ø—8—8Ü#Ð$>Ó?Ð?ð ð 'r+   r   ©Úreturnrr   )r«   ztuple[str, bool | None])
r�   z9Callable[[int], Generator[None, None, bytes | bytearray]]r‘   rD   r~   z
int | Noner   ú%Sequence[extensions.Extension] | Noner«   zGenerator[None, None, Frame])r‘   rD   r   r¬   r«   rv   ©r«   ÚNone)r   r    r!   r"   r#   Ú__annotations__rE   rF   rG   rH   ÚintÚosÚenvironrT   ru   r   r   r   rS   rb   rU   Úclassmethodrs   r¤   rŽ   r*   r   r+   r,   r   r   z   sù   ‡ ñð  ƒNØ
ƒOØ€CˆÓØ€Dˆ$ÓØ€Dˆ$ÓØ€Dˆ$Óñ �r—z‘z—~‘~Ð&?ÀÓFÓG€Là  i°¸À$ÐG€Oô>ô2F"ðP ð  $Ø<@ñGàMðGð ð	Gð
 ðGð :ðGð 
&ôGó ðGðZ =Añ	:!ð ð:!ð :ð	:!ð
 
õ:!÷x@r+   r   c                  ó`   • \ rS rSr% SrS\S'   S\S'   SS jr\SS j5       rSS	 jr	SS
 jr
Srg)r   i‘  zk
Code and reason for WebSocket close frames.

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

zCloseCode | intÚcoderr   Úreasonc                ó"  • SU R                   s=::  a  S:  a  O  OSnO=SU R                   s=::  a  S:  a  O  OSnO [        R                  U R                   S5      nU R                    SU S3nU R                  (       a  U S	U R                   3nU$ )
zE
Return a human-readable representation of a close code and reason.

é¸  i   Ú
registeredéˆ  zprivate useÚunknownz (Ú)rQ   )rµ   r?   rT   r¶   )rZ   ÚexplanationÚresults      r,   rb   ÚClose.__str__Ÿ  s|   € ð
 �4—9‘9Õ#˜tÖ#Ø&‰KØ�T—Y‘YÕ% Ö%Ø'‰Kä1×5Ñ5°d·i±iÀÓKˆKØ—I‘I�;˜b  ¨QÐ/ˆà�;�;Ø�x˜q §¡ Ð.ˆFàˆr+   c                óT  • [        U[        5      (       a  [        S5      e[        U5      S:¼  aI  [        R
                  " SUSS 5      u  nUSS R                  5       nU " X#5      nUR                  5         U$ [        U5      S:X  a  U " [        R                  S5      $ [        S5      e)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.

z.only compressed outgoing frames use memoryviewr   r‰   Nr   rL   zclose frame too short)Ú
isinstanceÚ
memoryviewÚAssertionErrorrV   rŠ   r‹   ry   rŽ   r   r3   r	   )r�   rC   rµ   r¶   Úcloses        r,   rs   ÚClose.parse±  s”   € ô �dœJ×'Ñ'Ü Ð!QÓRÐRÜˆt‹9˜‹>Ü—m’m D¨$¨r°¨(Ó3‰GˆTØ˜!˜"�X—_‘_Ó&ˆFÙ˜Ó%ˆEØ�K‰KŒMØˆLÜ�‹Y˜!‹^Ù”y×/Ñ/°Ó4Ð4äÐ 7Ó8Ð8r+   c                óš   • U R                  5         [        R                  " SU R                  5      U R                  R                  5       -   $ )z*
Serialize the payload of a close frame.

r‰   )rŽ   rŠ   rŸ   rµ   r¶   r›   r¨   s    r,   r¤   ÚClose.serializeË  s4   € ð
 	�
‰
ŒÜ�{Š{˜4 §¡Ó+¨d¯k©k×.@Ñ.@Ó.BÑBÐBr+   c                óv   • U R                   [        ;   d%  SU R                   s=::  a  S:  d  O  [        S5      egg)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Ž   ÚClose.checkÓ  s6   € ð —	‘	Ô1Ó1°T¸T¿Y¹YÕ5MÈÕ5MÜÐ 5Ó6Ð6ð 6NÐ1r+   r   Nrª   )rC   r
   r«   r   )r«   rv   r­   )r   r    r!   r"   r#   r¯   rb   r³   rs   r¤   rŽ   r*   r   r+   r,   r   r   ‘  s8   ‡ ñð ÓØƒKôð$ ó9ó ð9ô2C÷	7r+   r   c                ó  • S[        U 5      pCU(       d/  [        S[        U 5      5      nX5:  a  X   nUS-  S:X  a  US-  nM   U(       d†  US-  n[        [        U 5      S-
  U5      nXG:¼  ad  X   nUS-  S:X  a  US-  nM  US-  S:X  a  SnO&US-  S:X  a  SnOUS	-  S:X  a  SnOUS
-  S	:X  a  SnOSnU[        U 5      U-
  ::  a  [        U 5      n  XU R                  5       n	S[	        U	5      ;  $ ! [
         a     gf = f)z*Guess if data is a fragment of UTF-8 text.r   rf   éÀ   r‚   r   re   éà   r   éð   éø   z\xF)rV   ÚminÚmaxry   rx   rt   )
rC   rh   ri   ÚstartÚendÚ	max_startro   Úmin_endÚseq_lenrM   s
             r,   rw   rw   ß  s=  € ð ”C˜“Iˆ3æä˜œ3˜t›9Ó%ˆ	ØÓØ‘;ˆDð �jÑ  JÓ.Ø˜‘
�Ùàæàˆq‰ˆÜ”c˜$“i !‘m UÓ+ˆØ‹nØ‘9ˆDà�jÑ  JÓ.Ø�q‘�Ùð �jÑ  JÓ.Ø‘à˜
Ñ" jÓ0Ø‘à˜
Ñ" jÓ0Ø‘à˜
Ñ" jÓ0Ø‘ð �ð œ#˜d›) c™/Ó)Ü˜$“i�àð'Ø˜#ˆ×%Ñ%Ó'ˆð
 œD ›JÑ&Ð&øô	 ó Ùðús   ÃC1 Ã1
C>Ã=C>r™   )FF)rC   rv   rh   rD   ri   rD   r«   rD   )@Ú
__future__r   ÚdataclassesÚenumrœ   r±   r    rŠ   Úcollections.abcr   r   Útypingr   Ú
exceptionsr   r	   r
   Úspeedupsr   ÚImportErrorÚutilsÚ__all__ÚIntEnumr   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<   r=   r?   r¯   rÉ   ÚOK_CLOSE_CODESÚ	dataclassr   r   rw   rL   r   r   r+   r,   Ú<module>rä      sž  ðÞ "ã Û Û 	Û 	Û Û ß /Ý ç 4Ý ð"Ý$ò
€ô )ˆT�\‰\ô )ð �+‰+€Ø
�+‰+€Ø�M‰M€	Ø�<‰<€Ø
�+‰+€Ø
�+‰+€à˜ Ð*€Ø˜ 'Ð)€ô�—‘ô ð. ×Ñ˜dØ×Ñ˜,Ø×ÑÐ.Ø×ÑÐ 2Ø×ÑÐ=Ø×ÑÐ =Ø×ÑÐ8Ø×ÑÐ 2Ø×ÑÐ0Ø×!Ñ!Ð#8Ø×ÑÐ.Ø×ÑÐ0Ø×ÑÐ0Ø×Ñ˜=Ø×ÑÐ?ð+Ð ˜ó ð, ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×!Ñ!Ø×ÑØ×ÑØ×ÑØ×ÑðÐ ð" ×ÑØ×ÑØ×Ñð€ð ×Ñ÷S@ð S@ó ðS@ðl ×Ñ÷J7ð J7ó ðJ7ð^ #Ø ðE'Ø
ðE'àðE'ð ðE'ð 
õ	E'öR øðm ó "ß!Ð!ð"ús   ½I0 É0J É?J 