Ë
    ÚŠ±j²  ã                   óf   — d dl Z d dlZd dlZd dlmZ d dlmZmZ dZ G d„ d«      Z	 G d„ de	«      Z
y)	é    N)ÚRequest)ÚSocketUnreaderÚIterUnreaderi   c                   ó.   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZeZy)ÚParserNc                 ó–   — || _         t        |d«      rt        |«      | _        nt	        |«      | _        d | _        || _        d| _        y )NÚrecvr   )ÚcfgÚhasattrr   Úunreaderr   ÚmesgÚsource_addrÚ	req_count)Úselfr
   Úsourcer   s       úY/var/www/io.vulcan-creative.com/venv/lib/python3.12/site-packages/gunicorn/http/parser.pyÚ__init__zParser.__init__   sC   € ØˆŒÜ�6˜6Ô"Ü*¨6Ó2ˆD�Mä(¨Ó0ˆDŒMØˆŒ	Ø&ˆÔð ˆ�ó    c                 ó   — | S )N© ©r   s    r   Ú__iter__zParser.__iter__#   s   € Øˆr   c                 óÒ  — | j                   sy|€|�t        }t        | j                  dd«      }|�+t	        |d«      rt	        |d«      r|}|j                  «       }nd}d}d}	 	 |�F|�D|t        j                  «       z
  }|dk  r	 |�	 |j                  |«       yy|j                  |«       	 | j                   j                  j                  d«      }|s	 |�	 |j                  |«       yy|t#        |«      z  }|�||k\  r	 |�	 |j                  |«       yyŒ´# t        $ r Y yw xY w# t        j                  t        f$ r' Y |�"	 |j                  |«       y# t        $ r Y yw xY wyt        j                   $ r' Y |�"	 |j                  |«       y# t        $ r Y yw xY wyw xY w# t        $ r Y yw xY w# t        $ r Y yw xY w# |�"	 |j                  |«       w # t        $ r Y w w xY ww xY w)	a<  Discard any unread body of the current message.

        Called before returning a keepalive connection to the poller so the
        socket does not appear readable due to leftover body bytes.

        ``deadline`` is an absolute ``time.monotonic()`` value; when set the
        socket read timeout is bounded by the remaining time before each read.
        ``max_bytes`` caps the total drained bytes; when a deadline is given
        and ``max_bytes`` is left at the default, ``_DRAIN_MAX_BYTES`` applies
        to defend against a slow client that keeps trickling under it.  When
        called without a deadline (the default invocation from ``__next__``),
        no byte cap is applied so the prior unbounded drain semantics are
        preserved for callers that don't know how to react to a partial drain.

        Returns ``True`` when the body was fully drained, ``False`` when the
        drain was abandoned (deadline, byte cap, or socket timeout).  Callers
        that observe ``False`` MUST close the connection rather than serve
        another request on it.
        TNÚsockÚ
gettimeoutÚ
settimeoutr   Fi   )r   Ú_DRAIN_MAX_BYTESÚgetattrr   r   r   ÚtimeÚ	monotonicr   ÚOSErrorÚbodyÚreadÚsocketÚtimeoutÚTimeoutErrorÚsslÚSSLWantReadErrorÚlen)	r   ÚdeadlineÚ	max_bytesr   Útimeoutable_sockÚprior_timeoutÚdrainedÚ	remainingÚdatas	            r   Úfinish_bodyzParser.finish_body&   sP  € ð( �yŠyØàÐ Ð!5Ü(ˆIä�t—}‘} f¨dÓ3ˆð Ð¤¨¨lÔ ;ÄÈÈlÔ@[Ø#ÐØ ŸO™OÓ-‰Mà#ÐØ ˆMàˆð	ØØÐ'Ð,<Ð,HØ (¬4¯>©>Ó+;Ñ ;�IØ  A’~Ø$ð  Ð+ðØ$×/Ñ/°Õ>ð ,ð %×/Ñ/°	Ô:ð ØŸ9™9Ÿ>™>×.Ñ.¨tÓ4�Dñ Øð
  Ð+ðØ$×/Ñ/°Õ>ð ,ð	 œ3˜t›9Ñ$�ØÐ(¨W¸	Ò-AØ àÐ+ðØ$×/Ñ/°Õ>ð ,ð' øô, ò Ùðûô Ÿ™¬Ð5ò !Ø ð  Ð+ðØ$×/Ñ/°Õ>øÜò Ùðúð ,ô ×+Ñ+ò  àð  Ð+ðØ$×/Ñ/°Õ>øÜò Ùðúð ,ð ûô ò Ùðû”wò Ùðûð  Ð+ðØ$×/Ñ/°Õ>øÜò Ùðúð ,úsÌ   Á#!G  ÂD ÂG  Â-%D' ÃG  ÃF" Ã+G  ÄF1 ÄG  Ä	D$Ä#D$Ä'FÅ G  ÅE Å	E"Å!E"Å&FÅ8G  Å<F Æ	FÆFÆFÆG  Æ"	F.Æ-F.Æ1	F=Æ<F=Ç G&ÇGÇG&Ç	G"ÇG&Ç!G"Ç"G&c                 ór  — | j                   r$| j                   j                  «       r
t        «       ‚| j                  «        | xj                  dz  c_        | j                  | j                  | j                  | j                  | j                  «      | _         | j                   s
t        «       ‚| j                   S )Né   )	r   Úshould_closeÚStopIterationr1   r   Ú
mesg_classr
   r   r   r   s    r   Ú__next__zParser.__next__e   s   € à�9Š9˜Ÿ™×/Ñ/Ô1Ü“/Ð!ð 	×ÑÔð 	�Š˜!Ñ�Ø—O‘O D§H¡H¨d¯m©m¸T×=MÑ=MÈtÏ~É~Ó^ˆŒ	Ø�yŠyÜ“/Ð!Ø�y‰yÐr   )NN)	Ú__name__Ú
__module__Ú__qualname__r6   r   r   r1   r7   Únextr   r   r   r   r      s#   „ à€Jò
òó=ò~ð �Dr   r   c                   ó   — e Zd ZeZy)ÚRequestParserN)r8   r9   r:   r   r6   r   r   r   r=   r=   w   s   „ à�Jr   r=   )r$   r'   r   Úgunicorn.http.messager   Úgunicorn.http.unreaderr   r   r   r   r=   r   r   r   ú<module>r@      s7   ðó
 Û 
Û å )ß ?ð Ð ÷añ aôH�Fõ r   