Ë
    qûàgàD  ã                   ó€  — d dl Z d dlZd dlZd dlmZmZmZmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZ dZdZdZd	Z ej:                  d
 ej<                  e«      z  «      Z ej:                  d«      Z  ej:                  d«      Z! ej:                  d«      Z" G d„ d«      Z# G d„ de#«      Z$y)é    N)ÚChunkedReaderÚLengthReaderÚ	EOFReaderÚBody)
ÚInvalidHeaderÚInvalidHeaderNameÚ
NoMoreDataÚInvalidRequestLineÚInvalidRequestMethodÚInvalidHTTPVersionÚLimitRequestLineÚLimitRequestHeadersÚUnsupportedTransferCodingÚObsoleteFolding)ÚInvalidProxyLineÚForbiddenProxyRequest)ÚInvalidSchemeHeaders)Úbytes_to_strÚsplit_request_uriiþ  i €  z!#$%&'*+-.^_`|~z[%s0-9a-zA-Z]+z[a-z#]zHTTP/(\d)\.(\d)z[\0\r\n]c                   ó2   — e Zd Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zy)	ÚMessagec                 óf  — || _         || _        || _        || _        d | _        g | _        g | _        d | _        |j                  rdnd| _	        d| _
        |j                  | _        | j                  dk  s| j                  t        kD  rt        | _        |j                  | _        | j                  dk  rt        | _        | j                  xs t        }| j                  |dz   z  dz   | _        | j!                  | j                  «      }| j                  j#                  |«       | j%                  «        y )NÚhttpsÚhttpFr   é   é   )ÚcfgÚunreaderÚ	peer_addrÚremote_addrÚversionÚheadersÚtrailersÚbodyÚis_sslÚschemeÚ
must_closeÚlimit_request_fieldsÚMAX_HEADERSÚlimit_request_field_sizeÚDEFAULT_MAX_HEADERFIELD_SIZEÚmax_buffer_headersÚparseÚunreadÚset_body_reader)Úselfr   r   r   Úmax_header_field_sizeÚunuseds         úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/gunicorn/http/message.pyÚ__init__zMessage.__init__"   s  € ØˆŒØ ˆŒØ"ˆŒØ$ˆÔØˆŒØˆŒØˆŒØˆŒ	Ø!$§¢‘g°ˆŒØˆŒð %(×$<Ñ$<ˆÔ!Ø×%Ñ%¨Ò*Ø×,Ñ,¬{Ò:Ü(3ˆDÔ%Ø(+×(DÑ(DˆÔ%Ø×(Ñ(¨1Ò,Ü,HˆDÔ)ð !%× =Ñ =Ò ]ÔA]ÐØ"&×";Ñ";Ø" QÑ&ñ#(Ø*+ñ#,ˆÔð —‘˜DŸM™MÓ*ˆØ�‰×Ñ˜VÔ$Ø×ÑÕó    c                 ó   — d| _         y )NT)r'   ©r0   s    r3   Úforce_closezMessage.force_close@   s	   € Øˆ�r5   c                 ó   — t        «       ‚©N)ÚNotImplementedError)r0   r   s     r3   r-   zMessage.parseC   s   € Ü!Ó#Ð#r5   c                 ód  — | j                   }g }|j                  d«      D �cg c]  }t        |«      ‘Œ }}d}i }g }	|rn[d|j                  v s5t	        | j
                  t        «      r| j
                  d   |j                  v r|j                  }|j                  }	|�rŽt        |«      | j                  k\  rt        d«      ‚|j                  d«      }
t        |
«      t        d«      z   }|
j                  d«      dk  rt        |
«      ‚|
j                  dd«      \  }}| j                   j                  r|j!                  d	«      }t"        j%                  |«      st'        |«      ‚|j)                  «       }|j+                  d	«      g}|r¸|d   j-                  d
«      r¤| j                   j.                  st1        |«      ‚|j                  d«      }
|t        |
«      t        d«      z   z  }|| j2                  cxkD  rdkD  rt        d«      ‚ |j5                  |
j+                  d«      «       |r|d   j-                  d
«      rŒ¤dj7                  |«      }t8        j;                  |«      rt        |«      ‚|| j2                  cxkD  rdkD  rt        d«      ‚ ||v r2|||   k(  }|rdnd}|r|| j<                  k7  rt?        «       ‚d}|| _        d|v rI||	v sd|	v rn@| j                   j@                  dk(  rn&| j                   j@                  dk(  r�Œot'        |«      ‚|j5                  ||f«       |r�ŒŽ|S c c}w )Nó   
FÚ*r   zlimit request headers fieldsz
ú:é   ú 	)ú ú	z!limit request headers fields sizez	 rB   r   r   TÚ_Ú	dangerousÚdrop)!r   Úsplitr   Úforwarded_allow_ipsÚ
isinstancer   ÚtupleÚsecure_scheme_headersÚforwarder_headersÚlenr(   r   ÚpopÚfindr   Ústrip_header_spacesÚrstripÚTOKEN_REÚ	fullmatchr   ÚupperÚstripÚ
startswithÚpermit_obsolete_foldingr   r*   ÚappendÚjoinÚ!RFC9110_5_5_INVALID_AND_DANGEROUSÚsearchr&   r   Ú
header_map)r0   ÚdataÚfrom_trailerr   r"   ÚlineÚlinesÚscheme_headerrK   rL   ÚcurrÚheader_lengthÚnameÚvalueÚsecurer&   s                   r3   Úparse_headerszMessage.parse_headersF   s  € Ø�h‰hˆØˆð 15·
±
¸7Ó0CÖD¨”˜dÕ#ÐDˆÐDð ˆØ "ÐØÐÙð Ø�S×,Ñ,Ñ,Ü˜TŸ^™^¬UÔ3Ø—‘ Ñ" c×&=Ñ&=Ñ=Ø$'×$=Ñ$=Ð!Ø #× 5Ñ 5Ðò Ü�7‹|˜t×8Ñ8Ò8Ü)Ð*HÓIÐIð —9‘9˜Q“<ˆDÜ ›I¬¨F«Ñ3ˆMØ�y‰y˜‹~ Ò"Ü# DÓ)Ð)ØŸ*™* S¨!Ó,‰KˆD�%Ø�x‰x×+Ò+Ø—{‘{ 5Ó)�Ü×%Ñ% dÔ+Ü'¨Ó-Ð-ð —:‘:“<ˆDà—[‘[ Ó'Ð(ˆEñ ˜E !™H×/Ñ/°Ô<à—x‘x×7Ò7Ü)¨$Ó/Ð/Ø—y‘y “|�Ø¤ T£¬S°«[Ñ!8Ñ8�Ø  4×#@Ñ#@ÔDÀ1ÒDÜ-ð /<ó =ð =ð Eð —‘˜TŸZ™Z¨Ó.Ô/ñ ˜E !™H×/Ñ/°Õ<ð —H‘H˜U“OˆEä0×7Ñ7¸Ô>Ü# DÓ)Ð)à˜t×<Ñ<Ô@¸qÒ@Ü)Ð*MÓNÐNð Að Ð,Ñ,ØÐ"7¸Ñ"=Ñ=�Ù$*™°�Ù Ø §¡Ò,Ü2Ó4Ð4à$(�MØ"(�D”Kð �d‰{ØÐ,Ñ,°Ð7HÑ0HàØ—X‘X×(Ñ(¨KÒ7àØ—X‘X×(Ñ(¨FÒ2ñ ô ,¨DÓ1Ð1à�N‰N˜D %˜=Ô)óQ ðT ˆùòy Es   ¢L-c                 óÞ  — d}d }| j                   D ]Ù  \  }}|dk(  r|�t        d| ¬«      ‚|}Œ|dk(  sŒ#|j                  d«      D �cg c]  }|j                  «       ‘Œ }}|D ]†  }|j	                  «       dk(  r|rt        d| ¬«      ‚d}Œ(|j	                  «       dk(  r|sŒ>t        d| ¬«      ‚|j	                  «       d	v r |rt        d| ¬«      ‚| j                  «        Œ}t        |«      ‚ ŒÛ |rP| j                  d
k  rt        d| ¬«      ‚|�t        d| ¬«      ‚t        t        | | j                  «      «      | _        y |�k	 t        |«      j                  «       rt        |«      }nt        d| ¬«      ‚	 |dk  rt        d| ¬«      ‚t        t!        | j                  |«      «      | _        y t        t#        | j                  «      «      | _        y c c}w # t        $ r t        d| ¬«      ‚w xY w)NFzCONTENT-LENGTH)ÚreqzTRANSFER-ENCODINGú,ÚchunkedTÚidentity)ÚcompressÚdeflateÚgzip)r@   r@   r   )r"   r   rG   rU   Úlowerr8   r   r!   r   r   r   r$   ÚstrÚ	isnumericÚintÚ
ValueErrorr   r   )r0   rk   Úcontent_lengthrd   re   ÚvÚvalsÚvals           r3   r/   zMessage.set_body_reader©   sñ  € ØˆØˆà!Ÿ\™\ò 	?‰MˆT�5ØÐ'Ò'Ø!Ð-Ü'Ð(8¸dÔCÐCØ!&‘ØÐ,Ó,ð ,1¯;©;°sÓ+;Ö< a˜Ÿ™�	Ð<�Ð<Øò ?�CØ—y‘y“{ iÒ/á"Ü"/Ð0CÈÔ"NÐNØ"&™ØŸ™›¨
Ò2ò #Ü"/Ð0CÈÔ"NÐNØŸ™›Ð(GÑGá"Ü"/Ð0CÈÔ"NÐNØ×(Ñ(Õ*ä7¸Ó>Ð>ñ#?ð	?ñ8 ð �|‰|˜fÒ$ä#Ð$7¸TÔBÐBØÐ)ô $Ð$4¸$Ô?Ð?Üœ]¨4°·±Ó?Ó@ˆD�IØÐ'ð@Ü�~Ó&×0Ñ0Ô2Ü%(¨Ó%8‘Nä'Ð(8¸dÔCÐCð #ð  Ò!Ü#Ð$4¸$Ô?Ð?äœ\¨$¯-©-¸ÓHÓIˆD�IäœY t§}¡}Ó5Ó6ˆD�Iùò] =øôL ò @Ü#Ð$4¸$Ô?Ð?ð@ús   ÁGÅ2G ÇG,c                 óÊ   — | j                   ry| j                  D ]9  \  }}|dk(  sŒ|j                  «       j                  d«      }|dk(  r y|dk(  r y n | j                  dk  S )NTÚ
CONNECTIONrA   Úclosez
keep-aliveF©r@   r   )r'   r"   rp   rU   r!   )r0   Úhrv   s      r3   Úshould_closezMessage.should_closeå   sh   € Ø�?Š?ØØ—l‘lò 	‰FˆQ�Ø�LÓ Ø—G‘G“I—O‘O EÓ*�Ø˜’<ÙØ˜,Ò&Ù Ùð	ð �|‰|˜vÑ%Ð%r5   N©F)	Ú__name__Ú
__module__Ú__qualname__r4   r8   r-   rg   r/   r~   © r5   r3   r   r   !   s#   „ òò<ò$óaòF:7óx&r5   r   c                   óX   ‡ — e Zd Zd
ˆ fd„	Zdd„Zd„ Zdd„Zd„ Zd„ Zd„ Z	d„ Z
ˆ fd	„Zˆ xZS )ÚRequestc                 ó  •— d | _         d | _        d | _        d | _        d | _        |j
                  | _        | j
                  dk  s| j
                  t        k\  rt        | _        || _        d | _        t        ‰| �)  |||«       y ©Nr   )ÚmethodÚuriÚpathÚqueryÚfragmentÚlimit_request_lineÚMAX_REQUEST_LINEÚ
req_numberÚproxy_protocol_infoÚsuperr4   )r0   r   r   r   r�   Ú	__class__s        €r3   r4   zRequest.__init__ô   s{   ø€ ØˆŒØˆŒØˆŒ	ØˆŒ
ØˆŒð #&×"8Ñ"8ˆÔØ×#Ñ# aÒ'Ø×*Ñ*Ô.>Ò>Ü&6ˆDÔ#à$ˆŒØ#'ˆÔ Ü‰Ñ˜˜h¨	Õ2r5   c                 ó”   — |j                  «       }|s%|r
t        «       ‚t        |j                  «       «      ‚|j	                  |«       y r:   )ÚreadÚStopIterationr	   ÚgetvalueÚwrite)r0   r   ÚbufÚstopr]   s        r3   Úget_datazRequest.get_data  s7   € Ø�}‰}‹ˆÙÙÜ#“oÐ%Ü˜SŸ\™\›^Ó,Ð,Ø�	‰	�$�r5   c                 ón  — t        j                  «       }| j                  ||d¬«       | j                  ||| j                  «      \  }}| j                  t        |«      «      rEt        j                  «       }|j                  |«       | j                  ||| j                  «      \  }}| j                  |«       t        j                  «       }|j                  |«       |j                  «       }|j                  d«      }|d d dk(  }	 |j                  d«      }|d d dk(  }|dk  rG|sE| j                  ||«       |j                  «       }t        |«      | j                  kD  rt        d«      ‚nŒg|r| j                  j                  |dd  «       y| j!                  |d | d	¬
«      | _        ||dz   d  }d }|S )NT)r™   s   

r   r=   r   zmax buffer headersr5   F)r^   r   )ÚioÚBytesIOrš   Ú	read_liner�   Úproxy_protocolr   r—   Úparse_request_liner–   rO   rM   r,   r   r   r.   rg   r"   )	r0   r   r˜   r_   Úrbufr]   ÚidxÚdoneÚrets	            r3   r-   zRequest.parse  s’  € Ü�j‰j‹lˆØ�‰�h ¨$ˆÔ/ð —^‘^ H¨c°4×3JÑ3JÓK‰
ˆˆdð ×Ñœ|¨DÓ1Ô2ä—*‘*“,ˆCØ�I‰I�dŒOØŸ™¨°#°t×7NÑ7NÓO‰JˆD�$à×Ñ Ô%Ü�j‰j‹lˆØ�	‰	�$Œð �|‰|‹~ˆØ�i‰i˜Ó$ˆà�B�Qˆx˜7Ñ"ˆØØ—)‘)˜KÓ(ˆCØ˜˜�8˜wÑ&ˆDà�QŠw™tØ—‘˜h¨Ô,Ø—|‘|“~�Ü�t“9˜t×6Ñ6Ò6Ü-Ð.BÓCÐCàð ñ Ø�M‰M× Ñ   a b Ô*Øà×)Ñ)¨$¨t°¨*À5Ð)ÓIˆŒà�3˜‘7�8ˆnˆØˆØˆ
r5   c                 óD  — |j                  «       }	 |j                  d«      }|dk\  r||cxkD  rdkD  rn nt        ||«      ‚nRt        |«      dz
  |cxkD  rdkD  rn nt        t        |«      |«      ‚| j	                  ||«       |j                  «       }Œƒ|d | ||dz   d  fS )Nr=   r   r   )r–   rO   r   rM   rš   )r0   r   r˜   Úlimitr]   r¢   s         r3   rž   zRequest.read_line:  s¦   € Ø�|‰|‹~ˆàØ—)‘)˜GÓ$ˆCØ�aŠxà˜”? •?Ü*¨3°Ó6Ð6ØÜ�4‹y˜1‰}˜uÔ( qÕ(Ü&¤s¨4£y°%Ó8Ð8Ø�M‰M˜( CÔ(Ø—<‘<“>ˆDð ð �T�c�
Ø�S˜1‘W�X�ð ð 	 r5   c                 ó¸   — | j                   j                  sy| j                  dk7  ry|j                  d«      sy| j	                  «        | j                  |«       y)z¬        Detect, check and parse proxy protocol.

        :raises: ForbiddenProxyRequest, InvalidProxyLine.
        :return: True for proxy protocol line else False
        Fr@   ÚPROXYT)r   rŸ   r�   rV   Úproxy_protocol_access_checkÚparse_proxy_protocol)r0   r_   s     r3   rŸ   zRequest.proxy_protocolL  sO   € ð �x‰x×&Ò&Øà�?‰?˜aÒØà�‰˜wÔ'Øà×(Ñ(Ô*Ø×!Ñ! $Ô'àr5   c                 óæ   — d| j                   j                  vrYt        | j                  t        «      r>| j                  d   | j                   j                  vrt        | j                  d   «      ‚y y y )Nr>   r   )r   Úproxy_allow_ipsrI   r   rJ   r   r7   s    r3   r©   z#Request.proxy_protocol_access_checka  sa   € à�t—x‘x×/Ñ/Ñ/Ü�t—~‘~¤uÔ-Ø—‘˜qÑ!¨¯©×)AÑ)AÑAÜ'¨¯©°qÑ(9Ó:Ð:ð Bð .ð 0r5   c                 ó  — |j                  d«      }t        |«      dk7  rt        |«      ‚|d   }|d   }|d   }|dvrt        d|z  «      ‚|dk(  rJ	 t        j                  t        j
                  |«       t        j                  t        j
                  |«       nN|d	k(  rI	 t        j                  t        j                  |«       t        j                  t        j                  |«       	 t        |d
   «      }t        |d   «      }d|cxk  rdk  rn nd|cxk  rdk  sn t        d|z  «      ‚|||||dœ| _
        y # t        $ r t        |«      ‚w xY w# t        $ r t        |«      ‚w xY w# t        $ r t        d|z  «      ‚w xY w)NrB   é   r@   r   é   )ÚTCP4ÚTCP6zprotocol '%s' not supportedr°   r±   r   é   zinvalid port %sr   iÿÿ  )rŸ   Úclient_addrÚclient_portÚ
proxy_addrÚ
proxy_port)rG   rM   r   ÚsocketÚ	inet_ptonÚAF_INETÚOSErrorÚAF_INET6rs   rt   r�   )r0   r_   ÚbitsÚprotoÚs_addrÚd_addrÚs_portÚd_ports           r3   rª   zRequest.parse_proxy_protocolh  s†  € Ø�z‰z˜#‹ˆäˆt‹9˜Š>Ü" 4Ó(Ð(ð �Q‘ˆØ�a‘ˆØ�a‘ˆð Ð(Ñ(Ü"Ð#@À5Ñ#HÓIÐIØ�FŠ?ð-Ü× Ñ ¤§¡°Ô8Ü× Ñ ¤§¡°Õ8ð �fŠ_ð-Ü× Ñ ¤§¡°&Ô9Ü× Ñ ¤§¡°&Ô9ð	=Ü˜˜a™“\ˆFÜ˜˜a™“\ˆFð �fÔ% Õ%¨A°Ô,@¸5Ô,@Ü"Ð#4°tÑ#;Ó<Ð<ð $Ø!Ø!Ø Ø ñ$
ˆÕ øô' ò -Ü& tÓ,Ð,ð-ûô ò -Ü& tÓ,Ð,ð-ûô ò 	=Ü"Ð#4°tÑ#;Ó<Ð<ð	=ús&   ÁAD= Â!AE Ã*E- Ä=EÅE*Å-Fc                 ó  — |j                  dd«      D �cg c]  }t        |«      ‘Œ }}t        |«      dk7  rt        t        |«      «      ‚|d   | _        | j
                  j                  sbt        j                  | j                  «      rt        | j                  «      ‚dt        |d   «      cxk  rdk  sn t        | j                  «      ‚t        j                  | j                  «      st        | j                  «      ‚| j
                  j                  r| j                  j                  «       | _        |d   | _        t        | j                  «      dk(  rt        t        |«      «      ‚	 t        | j                  «      }|j"                  xs d| _        |j$                  xs d| _        |j&                  xs d| _        t(        j                  |d   «      }|€t+        |d   «      ‚t-        |j/                  d«      «      t-        |j/                  d«      «      f| _        d| j0                  cxk  rd	k  s.n | j
                  j2                  st+        | j0                  «      ‚y y c c}w # t         $ r t        t        |«      «      ‚w xY w)
Nó    r   r¯   r   é   r@   Ú r|   )r   r   )rG   r   rM   r
   rˆ   r   Ú!permit_unconventional_http_methodÚMETHOD_BADCHAR_REr[   r   rR   rS   Úcasefold_http_methodrT   r‰   r   rt   rŠ   r‹   rŒ   Ú
VERSION_REr   rs   Úgroupr!   Ú"permit_unconventional_http_version)r0   Ú
line_bytesÚbitr¼   ÚpartsÚmatchs         r3   r    zRequest.parse_request_line•  s  € Ø-7×-=Ñ-=¸dÀAÓ-FÖG c”˜SÕ!ÐGˆÐGÜˆt‹9˜Š>Ü$¤\°*Ó%=Ó>Ð>ð ˜1‘gˆŒð �x‰x×9Ò9Ü ×'Ñ'¨¯©Ô4Ü*¨4¯;©;Ó7Ð7Øœ˜D ™G›Ô*¨Ô*Ü*¨4¯;©;Ó7Ð7ä×!Ñ! $§+¡+Ô.Ü& t§{¡{Ó3Ð3ð �8‰8×(Ò(ØŸ+™+×+Ñ+Ó-ˆDŒKð ˜‘7ˆŒô ˆt�x‰x‹=˜AÒÜ$¤\°*Ó%=Ó>Ð>ð	?Ü% d§h¡hÓ/ˆEð —J‘JÒ$ "ˆŒ	Ø—[‘[Ò& BˆŒ
ØŸ™Ò,¨"ˆŒô ×$Ñ$ T¨!¡WÓ-ˆØˆ=Ü$ T¨!¡WÓ-Ð-Ü˜EŸK™K¨›NÓ+¬S°·±¸Q³Ó-@ÐAˆŒØ˜Ÿ™Ô.¨Ô.à—8‘8×>Ò>Ü(¨¯©Ó6Ð6ð ?ð /ùòc HøôL ò 	?Ü$¤\°*Ó%=Ó>Ð>ð	?ús   •I&Å-I+ É+J	c                 ó´   •— t         ‰| �  «        t        | j                  j                  t
        «      r%t        t        | j                  d«      «      | _        y y r‡   )	r‘   r/   rI   r$   Úreaderr   r   r   r   )r0   r’   s    €r3   r/   zRequest.set_body_readerÌ  s>   ø€ Ü‰ÑÔ!Ü�d—i‘i×&Ñ&¬	Ô2Üœ\¨$¯-©-¸Ó;Ó<ˆD�Ið 3r5   )r@   r   )r   )r€   r�   r‚   r4   rš   r-   rž   rŸ   r©   rª   r    r/   Ú__classcell__)r’   s   @r3   r…   r…   ó   s8   ø„ õ3ó"ò+óZ ò$ò*;ò+
òZ57÷n=ð =r5   r…   )%rœ   Úrer·   Úgunicorn.http.bodyr   r   r   r   Úgunicorn.http.errorsr   r   r	   r
   r   r   r   r   r   r   r   r   r   Úgunicorn.utilr   r   rŽ   r)   r+   ÚRFC9110_5_6_2_TOKEN_SPECIALSÚcompileÚescaperR   rÇ   rÉ   rZ   r   r…   rƒ   r5   r3   ú<module>rÚ      sº   ðó
 
Û 	Û ç KÓ K÷÷ ÷ ÷ IÝ 5ß 9àÐ Ø€Ø#Ð ð  2Ð Øˆ2�:‰:Ð'¨9¨2¯9©9Ð5QÓ+RÑSÓT€Ø�B—J‘J˜xÓ(Ð àˆR�Z‰ZÐ*Ó+€
Ø$. B§J¡J¨{Ó$;Ð !÷O&ñ O&ôd\=ˆgõ \=r5   