
    Ng              	          U d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZ  ed	          j        Z ed
          j        Z ed          j        Z ed          j        Z ed          j        Z ed
          j        Z ed          j        ZdZee         ed<   dZee         ed<   dZee         ed<   ej         dee         fd            Z!dede"ddfdZ#esere#Z$n	 ddl%m&Z& e&Z$n# e'$ r e#Z$Y nw xY w ej(        d          Z)ee
e*                  ed<    ej(        d          Z+ee
e*                  ed<   d'd e	e*         d!e,deee,f         fd"Z-	 d(d$ed!e,d%e,de*fd&Z.dS ))z1Helpers for WebSocket protocol versions 13 and 8.    N)Struct)TYPE_CHECKINGFinalListOptionalPatternTuple   )NO_EXTENSIONS   )WSHandshakeErrorz!Qz!Hz!BBz!BBHz!BBQz!Li @  MSG_SIZE   MASK_LENs$   258EAFA5-E914-47DA-95CA-C5AB0DC85B11WS_KEYreturnc                  4    d t          d          D             S )Nc                 `    g | ]*t          fd t          d          D                       +S )c              3   "   K   | ]	}|z  V  
d S N ).0abs     V/var/www/html/ai-engine/env/lib/python3.11/site-packages/aiohttp/_websocket/helpers.py	<genexpr>z(_xor_table.<locals>.<listcomp>.<genexpr>   s'      ,,A!a%,,,,,,       )bytesrange)r   r   s    @r   
<listcomp>z_xor_table.<locals>.<listcomp>   s<    AAAE,,,,s,,,,,AAAr   r   )r    r   r   r   
_xor_tabler"      s    AAeCjjAAAAr   maskdatac                    t          |t                    s
J |            t          |           dk    s
J |             |rt                      fd| D             \  }}}}|ddd                             |          |ddd<   |ddd                             |          |ddd<   |ddd                             |          |ddd<   |ddd                             |          |ddd<   dS dS )aw  Websocket masking function.

    `mask` is a `bytes` object of length 4; `data` is a `bytearray`
    object of any length. The contents of `data` are masked with `mask`,
    as specified in section 5.3 of RFC 6455.

    Note that this function mutates the `data` argument.

    This pure-python implementation may be replaced by an optimized
    version when available.

    r   c              3   (   K   | ]}|         V  d S r   r   )r   n
_XOR_TABLEs     r   r   z)_websocket_mask_python.<locals>.<genexpr>0   s'      22jm222222r   Nr   r
      )
isinstance	bytearraylenr"   	translate)r#   r$   r   r   cdr(   s         @r   _websocket_mask_pythonr0      s    dI&&,,,,,t99>>>4>>> -\\
2222T222
1a1I''**SSqS	!$Q$Z))!,,QTT
!$Q$Z))!,,QTT
!$Q$Z))!,,QTT


- -r   )_websocket_mask_cythonz^(?:;\s*(?:(server_no_context_takeover)|(client_no_context_takeover)|(server_max_window_bits(?:=(\d+))?)|(client_max_window_bits(?:=(\d+))?)))*$
_WS_EXT_REzpermessage-deflate([^,]+)?_WS_EXT_RE_SPLITFextstrisserverc                    | sdS d}d}t                               |           D ]0}|                    d          }|sd} nt                              |          }|rd}|r_|                    d          r1t          |                    d                    }|dk    s|dk     rd}|                    d          rd} n|                    d	          r=t          |                    d	                    }|dk    s|dk     rt          d
          |                    d          rd} n)|s%t          d|                    d          z             2||fS )N)r   Fr   Fr      r   	   T   zInvalid window sizer
   z#Extension for deflate not supported)r3   finditergroupr2   matchintr   )r4   r5   compress
notakeoverextdefextr<   s          r   ws_ext_parserB   M   s    xHJ((00 (Y (Y1 	HE  (( !	YH  ;;q>> !"5;;q>>22H
  "}}1#$ ;;q>> &!%J;;q>> F"5;;q>>22H
  "}}1./DEEE;;q>> &!%J 	Y"#H399UV<<#WXXX	Y Zr   r7   r>   server_notakeoverc                    | dk     s| dk    rt          d          dg}|s|                    d           | dk     r%|                    dt          |           z              |r|                    d           d                    |          S )	Nr8   r7   zCCompress wbits must between 9 and 15, zlib does not support wbits=8zpermessage-deflateclient_max_window_bitszserver_max_window_bits=server_no_context_takeoverz; )
ValueErrorappendstrjoin)r>   r5   rC   
enabledexts       r   
ws_ext_genrL      s    
 !||x"}}Q
 
 	
 ''J 42333"}}3c(mmCDDD 86777 99Z   r   )F)r7   FF)/__doc__	functoolsrestructr   typingr   r   r   r   r   r	   helpersr   modelsr   unpack_fromUNPACK_LEN3unpackUNPACK_CLOSE_CODEpack	PACK_LEN1	PACK_LEN2	PACK_LEN3PACK_CLOSE_CODEPACK_RANDBITSr   r=   __annotations__r   r   r   	lru_cacher"   r+   r0   websocket_maskr#   r1   ImportErrorcompiler2   rI   r3   boolrB   rL   r   r   r   <module>rd      s   7 7 7     				       G G G G G G G G G G G G G G G G # # # # # # $ $ $ $ $ $fTll&F4LL' F5MM	F6NN	F6NN	&,,#t!%*   %*   >e > > > BDK B B B B- -i -D - - - -2  0M 0+NN0000000/ 0 0 0/0 #-"*/# #
E'#,    )3
3P(Q(Q %% Q Q Q0  0 # 0 $ 0 5dCS 0  0  0  0 h KP! !!"&!CG!! ! ! ! ! !s   0C9 9DD