§
    K" hWU  ã                   óÖ   — d dl mZ d dlZd dlZd dlZddlmZ ddlmZm	Z	m
Z
 dddœZ ed	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    )ÚdequeNé   )ÚReadOnlyFileBasedBuffer)Úbuild_http_dateÚloggerÚqueue_loggerÚCONTENT_LENGTHÚCONTENT_TYPE)r	   r
   )Ú
connectionú
keep-alivezproxy-authenticatezproxy-authorizationÚteÚtrailersztransfer-encodingÚupgradec                   óH   — e Zd ZdZdZdZeZeZd„ Zd„ Z	d„ Z
d„ Zd„ Zdd
„ZdS )ÚThreadedTaskDispatcherz6A Task Dispatcher that creates a thread for each task.r   c                 óú   — t          ¦   «         | _        t          ¦   «         | _        t	          j        ¦   «         | _        t	          j        | j        ¦  «        | _        t	          j        | j        ¦  «        | _	        d S ©N)
ÚsetÚthreadsr   ÚqueueÚ	threadingÚLockÚlockÚ	ConditionÚqueue_cvÚthread_exit_cv©Úselfs    úGc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\waitress/task.pyÚ__init__zThreadedTaskDispatcher.__init__2   sV   € Ý‘u”uˆŒÝ‘W”WˆŒ
Ý”NÑ$Ô$ˆŒ	Ý!Ô+¨D¬IÑ6Ô6ˆŒÝ'Ô1°$´)Ñ<Ô<ˆÔÐÐó    c                 ór   — t          j        |d|› �|f¬¦  «        }d|_        |                     ¦   «          d S )Nz	waitress-)ÚtargetÚnameÚargsT)r   ÚThreadÚdaemonÚstart)r   r#   Ú	thread_noÚts       r   Ústart_new_threadz'ThreadedTaskDispatcher.start_new_thread9   sE   € ÝÔØÐ 7¨IÐ 7Ð 7¸y¸lð
ñ 
ô 
ˆð ˆŒØ	�Š‰	Œ	ˆ	ˆ	ˆ	r!   c                 óŒ  — 	 | j         5  | j        sV| j        dk    rK| xj        dz  c_        | j                             ¦   «          | xj        dz  c_        | j        s| j        dk    °K| j        dk    ra| xj        dz  c_        | xj        dz  c_        | j                             |¦  «         | j         	                    ¦   «          	 d d d ¦  «         d S | j         
                    ¦   «         }d d d ¦  «         n# 1 swxY w Y   	 |                     ¦   «          n+# t          $ r | j                             d|¦  «         Y nw xY w�ŒD)NTr   r   zException when servicing %r)r   r   Ú
stop_countÚactive_countr   Úwaitr   Údiscardr   ÚnotifyÚpopleftÚserviceÚBaseExceptionr   Ú	exception)r   r)   Útasks      r   Úhandler_threadz%ThreadedTaskDispatcher.handler_thread@   sÈ  € ð	KØ”ð ,ð ,Øœ*ð +¨¬¸AÒ)=Ð)=ð Ð%Ô%¨Ñ*Ð%Ô%Ø”M×&Ò&Ñ(Ô(Ð(ØÐ%Ô%¨Ñ*Ð%Ô%ð œ*ð +¨¬¸AÒ)=Ð)=ð ”? QÒ&Ð&ØÐ%Ô%¨Ñ*Ð%Ô%Ø�O”O qÑ(�O”OØ”L×(Ò(¨Ñ3Ô3Ð3ØÔ'×.Ò.Ñ0Ô0Ð0Øð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ”z×)Ò)Ñ+Ô+�ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð KØ—’‘”��øÝ ð Kð Kð KØ”×%Ò%Ð&CÀTÑJÔJÐJÐJÐJðKøøøñ'	Ks*   ‰B=C8ÃC8Ã8C<Ã?C<ÄD Ä%EÅ Ec                 ó°  — | j         5  | j        }d}t          |¦  «        | j        z
  }||k     r]||v r	|dz   }||v °	|                     |¦  «         |dz  }|                      | j        |¦  «         | xj        dz  c_        |dz   }||k     °]||k    r,| xj        ||z
  z  c_        | j         	                    ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   )
r   r   Úlenr-   Úaddr+   r7   r.   r   Ú
notify_all)r   Úcountr   r)   Úrunnings        r   Úset_thread_countz'ThreadedTaskDispatcher.set_thread_countW   sE  € ØŒYð 	+ð 	+Ø”lˆGØˆIÝ˜'‘l”l T¤_Ñ4ˆGØ˜E’/�/à 7Ð*Ð*Ø )¨A¡�Ið   7Ð*Ð*à—’˜IÑ&Ô&Ð&Ø˜1‘�Ø×%Ò% dÔ&9¸9ÑEÔEÐEØÐ!Ô! QÑ&Ð!Ô!Ø%¨™M�	ð ˜E’/�/ð ˜Šˆà�” 7¨U¡?Ñ2�”Ø”×(Ò(Ñ*Ô*Ð*ð!	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   ˆB6CÃCÃCc                 ód  — | j         5  | j                             |¦  «         | j                             ¦   «          t          | j        ¦  «        }t          | j        ¦  «        | j        z
  | j        z
  }||k    r| j	         
                    d||z
  ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NzTask queue depth is %d)r   r   Úappendr   r1   r9   r   r-   r.   r   Úwarning)r   r6   Ú
queue_sizeÚidle_threadss       r   Úadd_taskzThreadedTaskDispatcher.add_taskj   só   € ØŒYð 	ð 	ØŒJ×Ò˜dÑ#Ô#Ð#ØŒM× Ò Ñ"Ô"Ð"Ý˜TœZ™œˆJÝ˜tœ|Ñ,Ô,¨t¬Ñ>ÀÔARÑRˆLØ˜LÒ(Ð(ØÔ!×)Ò)Ø,¨j¸<Ñ.Gñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ˆBB%Â%B)Â,B)Té   c                 ó”  — |                       d¦  «         | j        }t          j        ¦   «         |z   }| j        5  |r\t          j        ¦   «         |k    r)| j                             dt          |¦  «        ¦  «         n| j                             d¦  «         |°\|r•| j	        }t          |¦  «        dk    r(| j                             dt          |¦  «        ¦  «         |r*| 
                    ¦   «         }|                     ¦   «          |°*| j                             ¦   «          	 d d d ¦  «         dS 	 d d d ¦  «         n# 1 swxY w Y   dS )Nr   z%d thread(s) still runninggš™™™™™¹?zCanceling %d pending task(s)TF)r>   r   Útimer   r   rA   r9   r   r/   r   r2   Úcancelr   r;   )r   Úcancel_pendingÚtimeoutr   Ú
expirationr   r6   s          r   ÚshutdownzThreadedTaskDispatcher.shutdownu   sž  € Ø×Ò˜aÑ Ô Ð à”,ˆÝ”Y‘[”[ 7Ñ*ˆ
ØŒYð 	ð 	Øð .Ý”9‘;”; *Ò,Ð,Ø”K×'Ò'Ð(DÅcÈ'ÁlÄlÑSÔSÐSØØÔ#×(Ò(¨Ñ-Ô-Ð-ð	 ð .ð
 ð 	àœ
�Ý�u‘:”: ’>�>Ø”K×'Ò'Ð(FÍÈEÉ
Ì
ÑSÔSÐSØð "Ø Ÿ=š=™?œ?�DØ—K’K‘M”M�Mð ð "ð ”×(Ò(Ñ*Ô*Ð*Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð	ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð  ˆus   ºC)D=Ä=EÅEN)TrE   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r-   r.   r   r   r    r+   r7   r>   rD   rL   © r!   r   r   r   *   s�   € € € € € Ø@Ð@à€JØ€LØ€FØ€Lð=ð =ð =ðð ð ðKð Kð Kð.+ð +ð +ð&	ð 	ð 	ðð ð ð ð ð r!   r   c                   ó‚   — e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZeZd„ Zd„ Zed„ ¦   «         Zdd	„Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTaskFz200 OKr   Nc                 óX   — || _         || _        g | _        |j        }|dvrd}|| _        d S )N)ú1.0ú1.1rU   )ÚchannelÚrequestÚresponse_headersÚversion)r   rW   rX   rZ   s       r   r    zTask.__init__š   s:   € ØˆŒØˆŒØ "ˆÔØ”/ˆØ˜.Ð(Ð(àˆGØˆŒˆˆr!   c                 óÔ   — 	 |                       ¦   «          |                      ¦   «          |                      ¦   «          d S # t          $ r d| _        | j        j        j        r‚ Y d S w xY w)NT)r(   ÚexecuteÚfinishÚOSErrorÚclose_on_finishrW   ÚadjÚlog_socket_errorsr   s    r   r3   zTask.service¤   sw   € ð	Ø�JŠJ‰LŒLˆLØ�LŠL‰NŒNˆNØ�KŠK‰MŒMˆMˆMˆMøÝð 	ð 	ð 	Ø#'ˆDÔ ØŒ|ÔÔ1ð Øðð ð ð	øøøs   ‚<A  Á #A'Á&A'c                 ó    — | j                              d¦  «        p3| j                              d¦  «        p| j                              d¦  «         S )NÚ1Ú204Ú304)ÚstatusÚ
startswithr   s    r   Úhas_bodyzTask.has_body®   sQ   € ð ŒK×"Ò" 3Ñ'Ô'ð -ØŒ{×%Ò% eÑ,Ô,ð-àŒ{×%Ò% eÑ,Ô,ð
ð 	
r!   Úreturnc                 óÐ   — | j         sWd }| j        D ]1\  }}|                     ¦   «         dk    r|                     ¦   «         }Œ2|€| j                             d¦  «         d| _        d S )NÚ
Connection)rk   ÚcloseT)Úwrote_headerrY   Ú
capitalizeÚlowerr@   r_   )r   Úconnection_close_headerÚ
headernameÚ	headervals       r   Úset_close_on_finishzTask.set_close_on_finish¶   sƒ   € ð Ô ð 	FØ&*Ð#Ø)-Ô)>ð @ð @Ñ%�
˜IØ×(Ò(Ñ*Ô*¨lÒ:Ð:Ø.7¯oªoÑ.?Ô.?Ð+øØ&Ð.ØÔ%×,Ò,Ð-DÑEÔEÐEØ#ˆÔÐÐr!   c                 óf  — | j         }| j        j                             dd¦  «                             ¦   «         }g }d }d }d }| j        D ]o\  }}d                     d„ |                     d¦  «        D ¦   «         ¦  «        }|dk    r| j        r|}nŒH|dk    r|}|dk    r|}| 	                    ||f¦  «         Œp|| _        |€>| j
        �7| j        r0t          | j
        ¦  «        }| j         	                    d|f¦  «         |dk    rM|d	k    r2|s|                      ¦   «          n¥| j         	                    d
¦  «         nŠ|                      ¦   «          nu|dk    r`|dk    r|                      ¦   «          |sC| j        r!| j         	                    d¦  «         d| _        | j        s|                      ¦   «          nt          d¦  «        ‚| j        j        j        j        }	|s|	r| j         	                    d|	f¦  «         n| j         	                    d|	pdf¦  «         |s.| j         	                    dt)          | j        ¦  «        f¦  «         d| j         › d| j        › �}
d„ t/          | j        d„ ¬¦  «        D ¦   «         }|
g|z   }dd                     |¦  «        z  }|                     d¦  «        S )NÚ
CONNECTIONÚ ú-c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rQ   )rn   )Ú.0Úxs     r   ú
<listcomp>z.Task.build_response_header.<locals>.<listcomp>Ì   s    € Ð"QÐ"QÐ"Q°a 1§<¢<¡>¤>Ð"QÐ"QÐ"Qr!   zContent-LengthÚDateÚServerrU   r   )rk   z
Keep-AliverV   rl   )zTransfer-EncodingÚchunkedTzneither HTTP/1.0 or HTTP/1.1ÚViaÚwaitresszHTTP/ú c                 ó   — g | ]}d |z  ‘ŒS )z%s: %srQ   )ry   Úhvs     r   r{   z.Task.build_response_header.<locals>.<listcomp>  s)   € ð 
ð 
ð 
Ø ˆH�r‰Mð
ð 
ð 
r!   c                 ó   — | d         S )Nr   rQ   )rz   s    r   ú<lambda>z,Task.build_response_header.<locals>.<lambda>  s   € ÐPQÐRSÔPT€ r!   )Úkeyz%s

z
úlatin-1)rZ   rX   ÚheadersÚgetro   rY   ÚjoinÚsplitrh   r@   Úcontent_lengthÚstrrs   Úchunked_responser_   ÚAssertionErrorrW   Úserverr`   Úidentr   Ú
start_timerf   ÚsortedÚencode)r   rZ   r   rY   Úcontent_length_headerÚdate_headerÚserver_headerrq   rr   r‘   Ú
first_lineÚ
next_linesÚlinesÚress                 r   Úbuild_response_headerzTask.build_response_headerÂ   s?  € Ø”,ˆà”\Ô)×-Ò-¨l¸BÑ?Ô?×EÒEÑGÔGˆ
ØÐØ $ÐØˆØˆà%)Ô%:ð 	=ð 	=Ñ!ˆJ˜	ØŸšÐ"QÐ"Q¸:×;KÒ;KÈCÑ;PÔ;PÐ"QÑ"QÔ"QÑRÔRˆJàÐ-Ò-Ð-Ø”=ð Ø,5Ð)Ð)àà˜VÒ#Ð#Ø'�à˜XÒ%Ð%Ø )�ð ×#Ò# Z°Ð$;Ñ<Ô<Ð<Ð<ð !1ˆÔð "Ð)ØÔ#Ð/Ø”ð 0õ %(¨Ô(;Ñ$<Ô$<Ð!ØÔ!×(Ò(Ð*:Ð<QÐ)RÑSÔSÐSà�eÒÐØ˜\Ò)Ð)Ø,ð OØ×,Ò,Ñ.Ô.Ð.Ð.àÔ)×0Ò0Ð1MÑNÔNÐNÐNà×(Ò(Ñ*Ô*Ð*Ð*à˜ÒÐØ˜WÒ$Ð$Ø×(Ò(Ñ*Ô*Ð*à(ð 	/ð ”=ð 1ØÔ)×0Ò0Ð1QÑRÔRÐRØ,0�DÔ)àÔ+ð /Ø×,Ò,Ñ.Ô.Ð.øõ !Ð!?Ñ@Ô@Ð@ð ”Ô#Ô'Ô-ˆàð 	GØð @ØÔ%×,Ò,¨h¸Ð->Ñ?Ô?Ð?øàÔ!×(Ò(¨%°Ð1D¸*Ð)EÑFÔFÐFàð 	UØÔ!×(Ò(¨&µ/À$Ä/Ñ2RÔ2RÐ)SÑTÔTÐTà9˜Tœ\Ð9Ð9¨D¬KÐ9Ð9ˆ
ð
ð 
Ý$*¨4Ô+@ÀnÀnÐ$UÑ$UÔ$Uð
ñ 
ô 
ˆ
ð �˜zÑ)ˆØ˜VŸ[š[¨Ñ/Ô/Ñ/ˆà�zŠz˜)Ñ$Ô$Ð$r!   c                 ó’   — g }| j         D ]5\  }}|                     ¦   «         dk    rŒ|                     ||f¦  «         Œ6|| _         d S )Núcontent-length)rY   ro   r@   )r   rY   Úheader_nameÚheader_values       r   Úremove_content_length_headerz!Task.remove_content_length_header  sf   € ØÐà)-Ô)>ð 	Að 	AÑ%ˆK˜Ø× Ò Ñ"Ô"Ð&6Ò6Ð6ØØ×#Ò# [°,Ð$?Ñ@Ô@Ð@Ð@à 0ˆÔÐÐr!   c                 ó6   — t          j         ¦   «         | _        d S r   )rG   r’   r   s    r   r(   z
Task.start'  s   € Ýœ)™+œ+ˆŒˆˆr!   c                 ó„   — | j         s|                      d¦  «         | j        r| j                             d¦  «         d S d S )Nr!   s   0

)rm   ÚwriterŽ   rW   Ú
write_soonr   s    r   r]   zTask.finish*  sM   € ØÔ ð 	Ø�JŠJ�s‰OŒOˆOØÔ ð 	2àŒL×#Ò# LÑ1Ô1Ð1Ð1Ð1ð	2ð 	2r!   c                 ó*  — | j         st          d¦  «        ‚| j        }| j        s0|                      ¦   «         }|                     |¦  «         d| _        |ré| j        râ|}| j        }| j        rUt          t          |¦  «        ¦  «        dd …                              ¦   «                              d¦  «        dz   }||dz   z  }nb|�`|d || j        z
  …         }| xj        t          |¦  «        z  c_        ||k    r+| j        s$| j                             d|z  ¦  «         d| _        |r|                     |¦  «         d S d S |rO| xj        t          |¦  «        z  c_        | j        s-| j                             d| j        z  ¦  «         d| _        d S d S d S )Nz1start_response was not called before body writtenTé   r‡   s   
z`application-written content exceeded the number of bytes specified by Content-Length header (%s)zfapplication-written content was ignored due to HTTP response that may not contain a message-body: (%s))ÚcompleteÚRuntimeErrorrW   rm   rœ   r¥   rh   rŒ   rŽ   Úhexr9   Úupperr”   Úcontent_bytes_writtenÚlogged_write_excessr   rA   Úlogged_write_no_bodyrf   )r   ÚdatarW   ÚrhÚtowriteÚcls         r   r¤   z
Task.write1  sñ  € ØŒ}ð 	TÝÐRÑSÔSÐSØ”,ˆØÔ ð 	%Ø×+Ò+Ñ-Ô-ˆBØ×Ò˜rÑ"Ô"Ð"Ø $ˆDÔàð 	1�D”Mð 	1ØˆGØÔ$ˆBØÔ$ð 4å�c $™iœi™.œ.¨¨¨Ô,×2Ò2Ñ4Ô4×;Ò;¸IÑFÔFÈÑP�Ø˜4 '™>Ñ)��Ø�ØÐ@  dÔ&@Ñ!@Ð@ÔA�ØÐ*Ô*­c°'©l¬lÑ:Ð*Ô*Ø˜d’?�?¨4Ô+C�?Ø”K×'Ò'ðHØJLñMñô ð ð 04�DÔ,Øð ,Ø×"Ò" 7Ñ+Ô+Ð+Ð+Ð+ð,ð ,àð 	1ð Ð&Ô&­#¨d©)¬)Ñ3Ð&Ô&àÔ,ð 1Ø”×#Ò#ðIØKOÌ;ñWñô ð ð -1�Ô)Ð)Ð)ð	1ð 	1ð1ð 1r!   )ri   N)rM   rN   rO   r_   rf   rm   r’   rŒ   r¬   r­   r®   r¨   rŽ   r   r    r3   Úpropertyrh   rs   rœ   r¡   r(   r]   r¤   rQ   r!   r   rS   rS   �   së   € € € € € Ø€OØ€FØ€LØ€JØ€NØÐØÐØ ÐØ€HØÐØ€Fðð ð ðð ð ð ð
ð 
ñ „Xð
ð
$ð 
$ð 
$ð 
$ðY%ð Y%ð Y%ðv1ð 1ð 1ð&ð &ð &ð2ð 2ð 2ð&1ð &1ð &1ð &1ð &1r!   rS   c                   ó   — e Zd ZdZdZd„ ZdS )Ú	ErrorTaskz(An error task produces an error responseTc                 ó8  — | j         j        j        j        }| j        j        }|                     |¦  «        \  }}}|| _        | j         	                    |¦  «         |  
                    ¦   «          t          |¦  «        | _        |                      |¦  «         d S r   )rW   r�   r`   r‘   rX   ÚerrorÚto_responserf   rY   Úextendrs   r9   rŒ   r¤   )r   r‘   Úerf   rˆ   Úbodys         r   r\   zErrorTask.execute_  sŠ   € Ø”Ô#Ô'Ô-ˆØŒLÔˆØ !§¢¨eÑ 4Ô 4Ñˆ�˜ØˆŒØÔ×$Ò$ WÑ-Ô-Ð-Ø× Ò Ñ"Ô"Ð"Ý! $™iœiˆÔØ�
Š
�4ÑÔÐÐÐr!   N)rM   rN   rO   rP   r¨   r\   rQ   r!   r   rµ   rµ   Z  s.   € € € € € Ø2Ð2à€Hðð ð ð ð r!   rµ   c                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ÚWSGITaskz8A WSGI task produces a response from a WSGI application.Nc                 ó2  ‡ — ‰                       ¦   «         }d
ˆ fd„	}‰ j        j                             ||¦  «        }d}	 t	          |t
          ¦  «        rŸ‰ j        }|                     |¦  «        }|r�||k    r|�‰                      ¦   «          |‰ _        ‰  	                    d¦  «         ‰ j         
                    |¦  «         d}	 |r&t          |d¦  «        r|                     ¦   «          d S d S d S d }|D ]_}|€Dt          |¦  «        }‰ j        €.d }	t          |d¦  «        rt          |¦  «        }	|	dk    r|‰ _        |r‰  	                    |¦  «         Œ`‰ j        }|�`‰ j        |k    rU‰ j        j        dk    rE‰                      ¦   «          ‰ j        j        dk    r!‰ j                             d	‰ j        |¦  «         |r&t          |d¦  «        r|                     ¦   «          d S d S d S # |r%t          |d¦  «        r|                     ¦   «          w w w xY w)Nc                 ó  •— ‰j         r|st          d¦  «        ‚|r"	 ‰j        r|d         ‚g ‰_        	 d }n# d }w xY wd‰_         t	          | t
          ¦  «        st          d| z  ¦  «        ‚d| v sd| v rt          d¦  «        ‚| ‰_        |D ]Õ\  }}t	          |t
          ¦  «        st          d|›d	||f›�¦  «        ‚t	          |t
          ¦  «        st          d
|›d	||f›�¦  «        ‚d|v sd|v rt          d¦  «        ‚d|v sd|v rt          d¦  «        ‚|                     ¦   «         }|dk    rt          |¦  «        ‰_
        Œº|t          v rt          d|z  ¦  «        ‚ŒÖ‰j                             |¦  «         ‰j        S )Nz?start_response called a second time without providing exc_info.r   Tzstatus %s is not a stringú
úz5carriage return/line feed character present in statuszHeader name z is not a string in zHeader value z;carriage return/line feed character present in header valuez:carriage return/line feed character present in header namerž   zS%s is a "hop-by-hop" header; it cannot be used by a WSGI application (see PEP 3333))r¨   r�   rm   rY   Ú
isinstancer�   Ú
ValueErrorrf   ro   ÚintrŒ   Ú
hop_by_hopr¹   r¤   )rf   rˆ   Úexc_infoÚkÚvÚklr   s         €r   Ústart_responsez(WSGITask.execute.<locals>.start_responser  s)  ø€ ØŒ}ð  Xð Ý$ØUñô ð ð ð $ð$ØÔ(ð 3ð
 ' qœkÐ)ð 13˜Ô-Ð-à#�H�Hø˜t�H�O�O�O�Oà ˆDŒMå˜f¥cÑ*Ô*ð KÝ$Ð%@À6Ñ%IÑJÔJÐJØ�vˆ~ˆ~ ¨  Ý ØKñô ð ð !ˆDŒKð  ð ð ‘��1Ý! !¥SÑ)Ô)ð Ý(ØJ qÐJÐJÀÀAÀÐJÐJñô ð õ " !¥SÑ)Ô)ð Ý(ØK¨ÐKÐKÀ!ÀQÀÐKÐKñô ð ð ˜1�9�9 ¨ 	 	Ý$ØUñô ð ð ˜1�9�9 ¨ 	 	Ý$ØTñô ð ð —W’W‘Y”Y�ØÐ)Ò)Ð)Ý*-¨a©&¬&�DÔ'Ð'Ø�:Ð%Ð%Ý(ð<Ø>?ñ@ñô ð ð &ð Ô!×(Ò(¨Ñ1Ô1Ð1ð ”:Ðs   �7 ·;Tr!   Frl   Ú__len__r   ÚHEADzVapplication returned too few bytes (%s) for specified Content-Length (%s) via app_iterr   )Úget_environmentrW   r�   ÚapplicationrÂ   r   rŒ   Úpreparer¡   r¤   r¥   Úhasattrrl   r9   r¬   rX   Úcommandrs   r   rA   )
r   ÚenvironrÊ   Úapp_iterÚcan_close_app_iterr²   ÚsizeÚfirst_chunk_lenÚchunkÚapp_iter_lens
   `         r   r\   zWSGITask.executeo  sª  ø€ Ø×&Ò&Ñ(Ô(ˆð>	ð >	ð >	ð >	ð >	ð >	ðB ”<Ô&×2Ò2°7¸NÑKÔKˆà!Ðð5	!Ý˜(Õ$;Ñ<Ô<ð ØÔ(�Ø×'Ò'¨Ñ+Ô+�Øð Ø˜T’z�zØ˜>Ø ×=Ò=Ñ?Ô?Ð?Ø.2˜Ô+Ø—J’J˜s‘O”O�Oð
 ”L×+Ò+¨HÑ5Ô5Ð5Ø).Ð&ØðH "ð !¥g¨h¸Ñ&@Ô&@ð !Ø—’Ñ Ô Ð Ð Ð ð!ð !ð !ð !ðE #ˆOØ!ð &ð &�Ø"Ð*Ý&)¨%¡j¤j�Oð
 Ô*Ð2Ø'+˜Ý" 8¨YÑ7Ô7ð 9Ý+.¨x©=¬=˜LØ'¨1Ò,Ð,Ø2A˜DÔ/ð ð &Ø—J’J˜uÑ%Ô%Ð%øàÔ$ˆBØˆ~ØÔ-°Ò3Ð3¸¼Ô8LÐPVÒ8VÐ8Vð ×,Ò,Ñ.Ô.Ð.Ø”|Ô+¨vÒ5Ð5Øœ×+Ò+ðMà Ô6Øñ	ô ð ð "ð !¥g¨h¸Ñ&@Ô&@ð !Ø—’Ñ Ô Ð Ð Ð ð!ð !ð !ð !øÐ!ð !¥g¨h¸Ñ&@Ô&@ð !Ø—’Ñ Ô Ð Ð ð!ð !øøøs   ¿BG, Ã3CG, Ç,*Hc                 óÌ  — | j         }|�|S | j        }|j        }| j        }|j        }|j        j        }|                     d¦  «        rd|                     d¦  «        z   }|r:||k    rd}n1|dz   }|                     |¦  «        r|t          |¦  «        d…         }i d|j
        d         “d|j
        d         “dt          |j
        d         ¦  «        “d	|j                             ¦   «         “d
t          |j        ¦  «        “d|j        “d|j        j        “dd| j        z  “d|“d|“d|j        “d|j        “d|j        “dd“dt*          j        “dd“dd“d|                     ¦   «         t0          ddœ¥}t3          |j        ¦  «                             ¦   «         D ]0\  }}	t8                               |d¦  «        }
|
€d|z   }
|
|vr|	||
<   Œ1| j        j        |d<   || _         |S )zReturns a WSGI environment.Nú/rv   ÚREMOTE_ADDRr   ÚREMOTE_HOSTÚREMOTE_PORTr   ÚREQUEST_METHODÚSERVER_PORTÚSERVER_NAMEÚSERVER_SOFTWAREÚSERVER_PROTOCOLzHTTP/%sÚSCRIPT_NAMEÚ	PATH_INFOÚREQUEST_URIÚQUERY_STRINGzwsgi.url_schemezwsgi.version)r   r   zwsgi.errorszwsgi.multithreadTzwsgi.multiprocessF)zwsgi.run_oncez
wsgi.inputzwsgi.file_wrapperzwsgi.input_terminatedÚHTTP_zwaitress.client_disconnected)rÒ   rX   ÚpathrW   r�   r`   Ú
url_prefixrg   Úlstripr9   Úaddrr�   rÑ   r«   Úeffective_portÚserver_namer‘   rZ   Úrequest_uriÚqueryÚ
url_schemeÚsysÚstderrÚget_body_streamr   Údictrˆ   ÚitemsÚrename_headersr‰   Úcheck_client_disconnected)r   rÒ   rX   rè   rW   r�   ré   Úurl_prefix_with_trailing_slashr†   ÚvalueÚmykeys              r   rÍ   zWSGITask.get_environmentí  s…  € à”,ˆØÐàˆNà”,ˆØŒ|ˆØ”,ˆØ”ˆØ”ZÔ*ˆ
à�?Š?˜3ÑÔð 	*ð ˜Ÿš SÑ)Ô)Ñ)ˆDàð 	3ð �zÒ!Ð!ð ��ð
 2<¸cÑ1AÐ.Ø—?’?Ð#AÑBÔBð 3Ø¥ J¡¤Ð 1Ð 1Ô2�Dð
Ø˜7œ<¨œ?ð
ð ˜7œ<¨œ?ð
ð �3˜wœ|¨AœÑ/Ô/ð
ð ˜gœo×3Ò3Ñ5Ô5ð
ð �3˜vÔ4Ñ5Ô5ð
ð ˜6Ô-ð
ð ˜vœzÔ/ð
ð ˜y¨4¬<Ñ7ð
ð ˜:ð
ð ˜ð
ð  ˜7Ô.ð!
ð" ˜GœMð#
ð$ ˜wÔ1ð%
ð( ˜Fð)
ð, �3œ:ð-
ð.  ð/
ð0   ð1
ð2 #Ø!×1Ò1Ñ3Ô3Ý!8Ø%)ð9
ð 
ð 
ˆõ> ˜wœÑ/Ô/×5Ò5Ñ7Ô7ð 	'ð 	'‰JˆC�Ý"×&Ò& s¨DÑ1Ô1ˆEØˆ}Ø #™�Ø˜GÐ#Ð#Ø!&�˜‘øð
 37´,Ô2XˆÐ.Ñ/ð ˆŒØˆr!   )rM   rN   rO   rP   rÒ   r\   rÍ   rQ   r!   r   r½   r½   j  sF   € € € € € ØBÐBà€Gð|!ð |!ð |!ð|Oð Oð Oð Oð Or!   r½   )Úcollectionsr   rñ   r   rG   Úbuffersr   Ú	utilitiesr   r   r   rö   Ú	frozensetrÅ   r   rS   rµ   r½   rQ   r!   r   ú<module>rÿ      s]  ðð Ð Ð Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ø €€€à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ð 'Ø"ðð €ð
 ˆYð	ñô €
ð`ð `ð `ð `ð `ñ `ô `ð `ðFJ1ð J1ð J1ð J1ð J1ñ J1ô J1ð J1ðZð ð ð ð �ñ ô ð ð Rð Rð Rð Rð Rˆtñ Rô Rð Rð Rð Rr!   