
     ik                     |    S SK r S SKrS SKJrJrJrJr   " S S5      r " S S5      r " S S5      r	 " S	 S
5      r
g)    N)
NoMoreDataChunkMissingTerminatorInvalidChunkSizeInvalidChunkExtensionc                   <    \ rS rSrS rS rS rS rS
S jrS r	S	r
g)ChunkedReader   c                 p    Xl         U R                  U5      U l        [        R                  " 5       U l        g N)reqparse_chunkedparserioBytesIObuf)selfr   unreaders      D/var/www/ias/venv/lib/python3.13/site-packages/gunicorn/http/body.py__init__ChunkedReader.__init__   s&    ((2::<    c                 P   [        U[        5      (       d  [        S5      eUS:  a  [        S5      eUS:X  a  gU R                  (       am  U R
                  R                  5       U:  aO   U R
                  R                  [        U R                  5      5        U R
                  R                  5       U:  a  MO  U R
                  R                  5       nUS U X!S  pC[        R                  " 5       U l        U R
                  R                  U5        U$ ! [         a    S U l         Mm  f = f)Nzsize must be an integer typer   Size must be positive.r   )
isinstanceint	TypeError
ValueErrorr   r   tellwritenextStopIterationgetvaluer   r   r   sizedataretrests        r   readChunkedReader.read   s    $$$:;;!856619;;((--/D(HHNN4#45 ((--/D( xx  "$KeT::<t
 % "&DKs   ).D D%$D%c                    [         R                  " 5       nUR                  U5        UR                  5       R	                  S5      nUR                  5       S S S:H  nUS:  a\  U(       dU  U R                  X5        UR                  5       R	                  S5      nUR                  5       S S S:H  nUS:  a	  U(       d  MU  U(       a#  UR                  UR                  5       SS  5        gU R                  R                  UR                  5       S U SS9U R                  l	        UR                  UR                  5       US-   S  5        g )	Ns   

      
r   r   T)from_trailer   )
r   r   r   r"   findget_dataunreadr   parse_headerstrailers)r   r   r%   r   idxdones         r   parse_trailersChunkedReader.parse_trailers(   s    jjl		$lln!!+.||~bq!W,AgdMM((,,.%%k2C<<>"1%0D Agdd OOCLLN12./ HH223<<>$33GVZ2[sQwx01r   c              #     #    U R                  U5      u  p#US:  a  U[        U5      :  aD  U[        U5      -  nUv   UR                  5       nU(       d
  [        5       eU[        U5      :  a  MD  US U v   X2S  n[        U5      S:  a-  UR                  5       nU(       d  OX4-  n[        U5      S:  a  M-  US S S:w  a  [	        US S 5      eU R                  XSS  S9u  p#US:  a  M  g g 7f)Nr   r+   r,   )r%   )parse_chunk_sizelenr(   r   r   )r   r   r$   r'   new_datas        r   r   ChunkedReader.parse_chunked8   s     ,,X6QhT"D	!
}}$,& T" u+;Dd)a-#==? 	 d)a-
 BQx7",T"1X6600QR0ILT# Qhs   A+C+/AC+61C+)C+Nc                    [         R                  " 5       nUb  UR                  U5        UR                  5       R	                  S5      nUS:  a8  U R                  X5        UR                  5       R	                  S5      nUS:  a  M8  UR                  5       nUS U X$S-   S  peUR                  SS5      tpxU(       a%  SUS   ;   a  [        S5      eUR                  S5      n[        S	 U 5       5      (       a  [        U5      e[        U5      S:X  a  [        U5      e[        US
5      nUS:X  a   U R                  X5        gXv4$ ! [         a     gf = f)Nr,   r   r+      ;      zbare CR not alloweds    	c              3   *   #    U  H	  oS ;  v   M     g7f)s   0123456789abcdefABCDEFN ).0ns     r   	<genexpr>1ChunkedReader.parse_chunk_size.<locals>.<genexpr>a   s     F:a11:s      )r   N)r   r   r   r"   r/   r0   splitr   rstripanyr   r:   r   r6   r   )	r   r   r%   r   r4   line
rest_chunk
chunk_size	chunk_exts	            r   r9   ChunkedReader.parse_chunk_sizeM   sF   jjlIIdOlln!!'*AgMM((,,.%%g.C Ag ||~:t!GH~j "&D!!4
	!$+,ABB#**62JF:FFF":..z?a":..R(
?##H9 ''  s   0E 
EEc                 h    UR                  5       nU(       d
  [        5       eUR                  U5        g r   )r(   r   r   )r   r   r   r%   s       r   r0   ChunkedReader.get_datao   s#    }},		$r   )r   r   r   r   )__name__
__module____qualname____firstlineno__r   r(   r6   r   r9   r0   __static_attributes__rB   r   r   r   r      s"     
,2 J* (Dr   r   c                        \ rS rSrS rS rSrg)LengthReaderv   c                     Xl         X l        g r   )r   length)r   r   r[   s      r   r   LengthReader.__init__w   s     r   c                 0   [        U[        5      (       d  [        S5      e[        U R                  U5      nUS:  a  [        S5      eUS:X  a  g[        R                  " 5       nU R                  R                  5       nU(       aI  UR                  U5        UR                  5       U:  a  O#U R                  R                  5       nU(       a  MI  UR                  5       nUS U X!S  pTU R                  R                  U5        U =R                  U-  sl        U$ )Nsize must be an integral typer   r   r   )r   r   r   minr[   r   r   r   r   r(   r   r   r"   r1   )r   r$   r   r%   r&   r'   s         r   r(   LengthReader.read{   s    $$$;<<4;;%!856619jjl}}!!#IIdOxxzT!==%%'D	 d llnJE
TT"t
r   )r[   r   NrR   rS   rT   rU   r   r(   rV   rB   r   r   rX   rX   v   s    r   rX   c                        \ rS rSrS rS rSrg)	EOFReader   c                 R    Xl         [        R                  " 5       U l        SU l        g )NF)r   r   r   r   finished)r   r   s     r   r   EOFReader.__init__   s     ::<r   c                    [        U[        5      (       d  [        S5      eUS:  a  [        S5      eUS:X  a  gU R                  (       aY  U R
                  R                  5       nUS U X!S  pC[        R                  " 5       U l        U R
                  R                  U5        U$ U R                  R                  5       nU(       a]  U R
                  R                  U5        U R
                  R                  5       U:  a  O#U R                  R                  5       nU(       a  M]  U(       d  SU l        U R
                  R                  5       nUS U X!S  pC[        R                  " 5       U l        U R
                  R                  U5        U$ )Nr^   r   r   r   T)r   r   r   r   rf   r   r"   r   r   r   r   r(   r   r#   s        r   r(   EOFReader.read   s(   $$$;<<!856619==88$$&DUdT%[zz|DHHHNN4 J}}!!#HHNN4 xx}}%==%%'D	 d  DMxx  "$KeT::<t
r   )r   rf   r   Nra   rB   r   r   rc   rc      s    
r   rc   c                   N    \ rS rSrS rS rS r\rS rSS jr	SS jr
SS	 jrS
rg)Body   c                 D    Xl         [        R                  " 5       U l        g r   )readerr   r   r   )r   rn   s     r   r   Body.__init__   s    ::<r   c                     U $ r   rB   )r   s    r   __iter__Body.__iter__   s    r   c                 H    U R                  5       nU(       d
  [        5       eU$ r   )readliner!   )r   r&   s     r   __next__Body.__next__   s    mmo/!
r   c                     Uc  [         R                  $ [        U[        5      (       d  [	        S5      eUS:  a  [         R                  $ U$ )Nr^   r   )sysmaxsizer   r   r   )r   r$   s     r   getsizeBody.getsize   s@    <;;D#&&;<<AX;;r   Nc                    U R                  U5      nUS:X  a  gXR                  R                  5       :  aY  U R                  R                  5       nUS U X!S  pC[        R
                  " 5       U l        U R                  R                  U5        U$ XR                  R                  5       :  a]  U R                  R                  S5      nU(       d  O:U R                  R                  U5        XR                  R                  5       :  a  M]  U R                  R                  5       nUS U X!S  pC[        R
                  " 5       U l        U R                  R                  U5        U$ )Nr   r      )	rz   r   r   r"   r   r   r   rn   r(   r#   s        r   r(   	Body.read   s   ||D!19((--/!88$$&DUdT%[zz|DHHHNN4 JXX]]_$;;##D)DHHNN4 	 XX]]_$ xx  "$KeT::<t
r   c                 2   U R                  U5      nUS:X  a  gU R                  R                  5       n[        R                  " 5       U l        / n UR                  SSU5      nUS:  a  US-   O[        U5      U:  a  UOSnU(       a2  UR                  US U 5        U R                  R                  X$S  5        ONUR                  U5        U[        U5      -  nU R                  R                  [        SU5      5      nU(       d  OM  SR                  U5      $ )Nr   r   r?      
r}   )rz   r   r"   r   r   r/   r:   appendr   rn   r(   r_   join)r   r$   r%   r&   r4   s        r   rt   Body.readline   s    ||D!19xx  "::<))E1d+C AX#'3t93D4!C

4:&tDz*JJtCID;;##CdO4D  xx}r   c                     / nU R                  5       nU(       aS  UR                  S5      nUS:  a  UR                  U5        SnOUS US-    X4S-   S  p5UR                  U5        U(       a  MS  U$ )Nr   r   r   r?   )r(   r/   r   )r   r$   r&   r%   posrK   s         r   	readlinesBody.readlines  sn    yy{))E"CQw

4 !(37^T'(^d

4  d 
r   )r   rn   r   )rR   rS   rT   rU   r   rq   ru   r    rz   r(   rt   r   rV   rB   r   r   rk   rk      s,      D02r   rk   )r   rx   gunicorn.http.errorsr   r   r   r   r   rX   rc   rk   rB   r   r   <module>r      sG   
 
 
K Kg gT <# #LU Ur   