
    ;3hgI                        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 ddlmZmZ dd	lmZ d
dlmZmZmZ d
dlmZmZmZmZmZ eD  ch c]
  }  e|        c} Zee	e      e d<   d
Z!dZ"dZ#dZ$ejJ                  Z&ejN                  Z(dZ)ejT                  jV                  Z,ejN                  jV                  Z-ejJ                  jV                  Z.ej^                  jV                  Z0ejb                  jV                  Z2ejf                  jV                  Z4dZ5dZ6dZ7dZ8d
Z9e:jv                  Z<eZ= G d d      Z> G d d      Z?yc c} w )z0Reader for WebSocket protocol versions 13 and 8.    N)deque)DequeFinalOptionalSetTupleUnion   )BaseProtocol)ZLibDecompressor)_EXC_SENTINELset_exception)	EofStream   )UNPACK_CLOSE_CODEUNPACK_LEN3websocket_mask)WS_DEFLATE_TRAILINGWebSocketErrorWSCloseCode	WSMessage	WSMsgTypeALLOWED_CLOSE_CODES      )T    )Fr   c                       e Zd ZdZdededej                  ddfdZde	fdZ
dee   fd	Zefd
edej                  ddfdZddZddZddZdefdZdefdZy)WebSocketDataQueuezmWebSocketDataQueue resumes and pauses an underlying stream.

    It is a destination for WebSocket data.
    protocollimitloopreturnNc                    d| _         || _        |dz  | _        || _        d| _        d | _        d | _        t               | _        | j                  j                  | _
        | j                  j                  | _        y )Nr   r
   F)_size	_protocol_limit_loop_eof_waiter
_exceptionr   _bufferpopleft_get_bufferappend_put_buffer)selfr    r!   r"   s       \/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/aiohttp/_websocket/reader_py.py__init__zWebSocketDataQueue.__init__<   sf     
!ai
	7;6:5:W<<//<<..r   c                     | j                   S N)r)   r1   s    r2   is_eofzWebSocketDataQueue.is_eofJ   s    yyr   c                     | j                   S r5   )r+   r6   s    r2   	exceptionzWebSocketDataQueue.exceptionM   s    r   exc	exc_causec                 f    d| _         || _        | j                  x}d | _        t        |||       y y NT)r)   r+   r*   r   )r1   r:   r;   waiters       r2   r   z WebSocketDataQueue.set_exceptionP   s9    
 	ll"F/DL&#y1 0r   c                 t    | j                   x}y d | _         |j                         s|j                  d        y y r5   )r*   done
set_result)r1   r>   s     r2   _release_waiterz"WebSocketDataQueue._release_waiter[   s7    ll"F+{{}d# r   c                 @    d| _         | j                          d | _        y r=   )r)   rB   r+   r6   s    r2   feed_eofzWebSocketDataQueue.feed_eofb   s    	r   c                 
   | xj                   |z  c_         | j                  ||f       | j                          | j                   | j                  kD  r2| j                  j
                  s| j                  j                          y y y r5   )r%   r0   rB   r'   r&   _reading_pausedpause_readingr1   datasizes      r2   	feed_datazWebSocketDataQueue.feed_datag   sc    

d
$&::#DNN,J,JNN((* -K#r   c                 `  K   | j                   s^| j                  sR| j                  rJ | j                  j	                         | _        	 | j                   d {    | j                         S | j                         S 7 $# t
        j                  t
        j                  f$ r	 d | _         w xY wwr5   )	r,   r)   r*   r(   create_futureasyncioCancelledErrorTimeoutError_read_from_bufferr6   s    r2   readzWebSocketDataQueue.readn   s     ||DII||##::335DLll"" %%''t%%''	 #**G,@,@A #s0   AB.	A? A=A?  B.=A? ?,B++B.c                 <   | j                   rs| j                         \  }}| xj                  |z  c_        | j                  | j                  k  r0| j                  j
                  r| j                  j                          |S | j                  | j                  t        r5   )	r,   r.   r%   r'   r&   rF   resume_readingr+   r   rH   s      r2   rQ   z$WebSocketDataQueue._read_from_buffery   ss    <<))+JD$JJ$JzzDKK'DNN,J,J--/K??&//!r   r#   N)rI   r   rJ   
cython_intr#   N)__name__
__module____qualname____doc__r   intrN   AbstractEventLoopr3   boolr7   r   BaseExceptionr9   r   builtinsr   rB   rD   rK   r   rR   rQ    r   r2   r   r   6   s    
/$/-0/;B;T;T/	/ 8M2  -:	2	2 ))	2 
		2$
+	(I 	(	9 	r   r   c            
           e Zd Z	 ddedededdfdZddZdee	e
ef   deee	f   fd	Zd
edeeef   dee	e
f   deeef   ddf
dZde	ddfdZy)WebSocketReaderqueuemax_msg_sizecompressr#   Nc                 0   || _         || _        d | _        t               | _        t
        | _        t        | _        d| _	        t        | _
        g | _        d| _        d| _        d| _        d | _        d| _        d| _        t$        | _        d | _        || _        y )NFr   r   )rc   _max_msg_size_exc	bytearray_partialREAD_HEADER_stateOP_CODE_NOT_SET_opcode
_frame_fin_frame_opcode_payload_fragments_frame_payload_len_tail	_has_mask_frame_mask_payload_bytes_to_read_payload_len_flagCOMPRESSED_NOT_SET_compressed_decompressobj	_compress)r1   rc   rd   re   s       r2   r3   zWebSocketReader.__init__   s     
))-	!!+"1/1"#
,0&'#!" 2:>!r   c                 8    | j                   j                          y r5   )rc   rD   r6   s    r2   rD   zWebSocketReader.feed_eof   s    

r   rI   c                     t        |      t        urt        |      }| j                  d|fS 	 | j                  |       t        S # t        $ r-}|| _        t        | j                  |       t        cY d }~S d }~ww xY wr=   )	typebytesrh   
_feed_data	Exceptionr   rc   EMPTY_FRAME_ERROREMPTY_FRAME)r1   rI   r:   s      r2   rK   zWebSocketReader.feed_data   ss     :U";D99 :	%OOD!   	%DI$**c*$$	%s   A 	A;"A60A;6A;finopcodepayload
compressedc           	      $
   |t         t        t        hv r|s|t        k7  r|| _        | xj                  |z  c_        | j
                  r_t        | j                        | j
                  k\  r=t        t        j                  dt        | j                         d| j
                         y t        | j                        }|t        k(  rE| j                  t        k(  rt        t        j                  d      | j                  }t        | _        n|rt        t        j                  d|      |r*| j                  |z   }| j                  j                          n|}| j
                  rKt        |      | j
                  k\  r3t        t        j                  dt        |       d| j
                         |r| j                  st        d      | _        | j                  j!                  |t"        z   | j
                  r| j
                  dz   n| j
                        }| j
                  r^t        |      | j
                  kD  rFt        t        j                  d| j
                         t%        |      t&        u r|}nt'        |      }|t         k(  rM	 |j)                  d	      }| j.                  j1                  t3        t4        t6        |df      t        |             y | j.                  j1                  t3        t4        t8        |df      t        |             y |t:        k(  rt        |      dk\  rrt=        |d d       d   }
|
dk  r%|
t>        vrt        t        j                  d|
       	 |dd  j)                  d	      }t3        t4        t@        jB                  |
|f      }nF|r#t        t        j                  d| d| d|      t3        t4        t@        jB                  ddf      }| j.                  j1                  |d       y |tD        k(  rGt3        t4        t@        jF                  |df      }| j.                  j1                  |t        |             y |tH        k(  rGt3        t4        t@        jJ                  |df      }| j.                  j1                  |t        |             y t        t        j                  d|      # t*        $ r }	t        t        j,                  d
      |	d }	~	ww xY w# t*        $ r }	t        t        j,                  d
      |	d }	~	ww xY w)NzMessage size z exceeds limit z*Continuation frame for non started messagez8The opcode in non-fin frame is expected to be zero, got T)suppress_deflate_headerr   z(Decompressed message exceeds size limit zutf-8zInvalid UTF-8 text message r
   r   i  zInvalid close code: zInvalid close frame:  zUnexpected opcode=)&OP_CODE_TEXTOP_CODE_BINARYOP_CODE_CONTINUATIONrn   rj   rg   lenr   r   MESSAGE_TOO_BIGr]   rm   PROTOCOL_ERRORclearrz   r   decompress_syncr   r~   r   decodeUnicodeDecodeErrorINVALID_TEXTrc   rK   	TUPLE_NEWr   WS_MSG_TYPE_TEXTWS_MSG_TYPE_BINARYOP_CODE_CLOSEr   r   r   CLOSEOP_CODE_PINGPINGOP_CODE_PONGPONG)r1   r   r   r   r   has_partialassembled_payloadpayload_mergedtextr:   
close_codeclose_messagemsgs                r2   _handle_framezWebSocketReader._handle_frame   s    lN4HII11#)DL(%%#dmm*<@R@R*R(#33'DMM(:'; <))-););(<> 
 t}}-K--<<?2(#22D  . $..''-j2  $(MMG$;!##%$+!!!c*;&<@R@R&R$//#C(9$:#; <%%)%7%7$8:  ***:SW*XD' "&!4!4!D!D%(;;  -- **Q.!//" %%#n*=@R@R*R(#33B4CUCUBVW  '(E1!2!&'8!9%)009D 

$$i*:D")EF'
 

$$i*<nb)QR' }$7|q .wr{;A>
$;N)N(#22.zl; $+ABK$6$6w$?M
  	IOOZ+WX$..+C5&7+F 
  	IOOQ+CDJJ  a(|#I	'DECJJ  c'l3|#I	'DECJJ  c'l3 **.@
,K c * (#002N8 * (#002Ns0   
R: $S& :	S#SS#&	T/T

Tc                    | j                   r| j                   |z   dc}| _         d}t        |      }|}	 | j                  t        k(  rJ||z
  dk  rn||   }||dz      }|dz  }|dz	  dz  }|dz	  dz  }|dz	  dz  }	|dz	  dz  }
|d	z  }|	s|
s|r&| j                  st        t        j                  d
      |dkD  r|dk(  rt        t        j                  d      |dz	  dz  }|dz  }|dkD  r|dkD  rt        t        j                  d      | j                  s| j                  t        k(  r|rt        nt        | _	        n|rt        t        j                  d
      t        |      | _        || _        t        |      | _        || _        t"        | _        | j                  t"        k(  r| j                   }|dk(  r*||z
  dk  rn||   }||dz      }|dz  }|dz  |z  | _        n0|dkD  r$||z
  dk  rnqt'        ||      d   | _        |dz  }n|| _        | j                  rt(        nt*        | _        | j                  t(        k(  r'||z
  dk  rn|||dz    | _        |dz  }t*        | _        | j                  t*        k(  r||z
  }| j$                  |k\  r|}| xj$                  |z  c_        n|| j$                  z   }d| _        | j.                  }| xj.                  ||z
  z  c_        |}|}| j$                  dk7  r | j0                  j3                  |||        nL|r| j0                  j3                  |||        | j                  rK| j,                  J t5        dj7                  | j0                              }t9        | j,                  |       |}ndj7                  | j0                        }| j0                  j;                          nY| j                  rH| j,                  J ||| }t=        |      t4        urt5        |      }t9        | j,                  |       |}n||| }| j?                  | j                  | j                  || j                         d| _        t        | _        ,||k  r||| | _         yd| _         y)z&Return the next frame from the socket.r   r   r
   r            r      z*Received frame with non-zero reserved bitsz!Received fragmented control frame   }   z5Control frame payload cannot be larger than 125 bytes~      N) rs   r   rl   rk   r{   r   r   r   ro   ry   rx   COMPRESSED_TRUECOMPRESSED_FALSEr]   rp   rt   rw   READ_PAYLOAD_LENGTHrv   r   READ_PAYLOAD_MASKREAD_PAYLOADru   rr   rq   r/   ri   joinr   r   r~   r   )r1   rI   	start_posdata_len	data_cstr
first_bytesecond_byter   rsv1rsv2rsv3r   has_masklengthlen_flag	chunk_len	f_end_poshad_fragmentsf_start_pospayload_bytearrayr   s                        r2   r   zWebSocketReader._feed_dataB  s   ::#zzD0#D$*	t9	{{k)i'!+&y1
'	A6Q	!Q!+"a1,"a1,"a1,#c) 4D(#22D 
 C<C1H(#22; 
 (1,1$t+ C<FSL(#22O  ??d&6&6:L&L:>DTD$(#22D 
 #'s)%+"!%h)/&1 {{1111s?)+a/!*9!5J"+IM":KNI2</K2OD/^)+a/2=dI2Nq2QD/NI2:D/37>>/| {{//i'!+#,YQ#G Q	*{{l*$y0	..); (I//9</ )D,G,G GI23D/ $ 7 7''9y+@@''%	..!3 ++229[3ST !++229[3ST~~#//;;;,5chht?V?V6W,X)&t'7'79JK"3"%((4+B+B"C++113^^++777(1+i(H%-.i? -66G,H)"4#3#35FG/G'I>G""OOT%7%7$BRBR +,')] b 7@(6JYy2
PS
r   )TrU   )rW   rX   rY   r   r[   r]   r3   rD   r	   r   ri   
memoryviewr   rK   rV   r   r   r`   r   r2   rb   rb      s    MQ"'"7:"FJ"	"2%J67	tU{	$II c:o&I ui'(	I
 #z/*I 
IVZTu ZT ZTr   rb   )@rZ   rN   r_   collectionsr   typingr   r   r   r   r   r	   base_protocolr   compression_utilsr   helpersr   r   streamsr   r   r   r   modelsr   r   r   r   r   r[   r   __annotations__rk   r   r   r   BINARYr   TEXTr   rm   CONTINUATIONvaluer   r   r   r   r   r   r   r   r   r   r   rx   r   r   tuple__new__r   rV   r   rb   )is   0r2   <module>r      s8   6    < < ( 0 2  C C  9D'D1A'D U3s8_ D   %% >>   --33 ~~##!!''%%~~##~~##   MM	
L L^WT WTa (Es   E