ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    e5dT                     @   s   d dl mZmZmZ d dlmZ ddlZddlZddlZddddd	d
gZ	dddddddgZ
dddddddddddddgZdd Zd d!d"d#d$d%d&d'd(d)h
jZd*d+ Zd,d
 ZG d-d dZG d.d deZG d/d deZG d0d deZG d1d	 d	eZdS )2   )FileWrapperguess_schemeis_hop_by_hop)Headers    NBaseHandlerSimpleHandlerBaseCGIHandler
CGIHandlerIISCGIHandlerread_environZMonZTueZWedZThuZFriZSatZSunZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecc           
   	   C   s:   t | \	}}}}}}}}}	dt| |t| ||||f S )Nz#%s, %02d %3s %4d %02d:%02d:%02d GMT)timegmtime_weekdayname
_monthname)
Z	timestampZyearZmonthZdayZhhZmmZssZwdyz r   (/usr/lib64/python3.8/wsgiref/handlers.pyformat_date_time   s          r   SCRIPT_NAME	PATH_INFOZQUERY_STRINGZREQUEST_METHODZ	AUTH_TYPEZCONTENT_TYPEZCONTENT_LENGTHZHTTPSZREMOTE_USERZREMOTE_IDENTc                 C   s6   t | p4| dp4| dp4| do4t| dd  S )NZHTTP_ZSSL_Z	REDIRECT_	   )_is_request
startswith_needs_transcode)kr   r   r   r      s    r   c                  C   s   t  } d}zdd| W n tk
r4   d}Y nX i }tj D ]\}}t|rt jdkrtj	dd
 }|dr|dd}q|d	rq|d
rd|kr|dd}q|| dd}n|| |d}|||< qD|S )Nsurrogateescape zutf-8replaceZwin32SERVER_SOFTWAREzmicrosoft-iis/
iso-8859-1zapache/zsimplehttp/zpython/3)sysgetfilesystemencodingencodeLookupErrorosenvironitemsr   platformgetlowerr   decode)encZescr'   r   vZsoftwarer   r   r   r   "   s0    

	


c                   @   s  e Zd ZdZdZdZdZdZdZdZ	e
 ZeZeZdZdZdgZdZd ZZdZdZd	Zd
d Zdd Zdd Zdd Zdd Zdd Zd:ddZdd Z dd Z!dd Z"dd Z#d d! Z$d"d# Z%d$d% Z&d&d' Z'd(d) Z(d*d+ Z)d,d- Z*d.d/ Z+d0d1 Z,d2d3 Z-d4d5 Z.d6d7 Z/d8d9 Z0dS );r   )r   r   TFz1.0Nz500 Internal Server Error)zContent-Typez
text/plains;   A server error occurred.  Please contact the administrator.r   c              
   C   st   z$|    || j| j| _|   W nJ tttfk
r@   Y d S    z|   W n   | 	   Y nX Y nX d S N)
setup_environr'   start_responseresultfinish_responseConnectionAbortedErrorBrokenPipeErrorConnectionResetErrorhandle_errorclose)selfZapplicationr   r   r   run   s    zBaseHandler.runc                 C   s   | j   }| _|   |  |d< |  |d< | j|d< | j|d< |  |d< | j	|d< | j
|d< | jd k	rx| j|d< | jr| jr|d	| j d S )
Nz
wsgi.inputzwsgi.errorszwsgi.versionzwsgi.run_oncezwsgi.url_schemezwsgi.multithreadzwsgi.multiprocesszwsgi.file_wrapperr    )
os_environcopyr'   add_cgi_vars	get_stdin
get_stderrwsgi_versionwsgi_run_once
get_schemewsgi_multithreadwsgi_multiprocesswsgi_file_wrapperorigin_serverserver_software
setdefault)r9   envr   r   r   r0      s    





zBaseHandler.setup_environc                 C   sd   z2|   r|  s0| jD ]}| | q|   W n$   t| jdrP| j   Y n
X |   d S )Nr8   )result_is_filesendfiler2   writefinish_contenthasattrr8   r9   datar   r   r   r3      s    

zBaseHandler.finish_responsec                 C   s
   t | jS r/   )r   r'   r9   r   r   r   rB      s    zBaseHandler.get_schemec              
   C   sJ   zt | j}W n tttfk
r(   Y nX |dkrFt| j| jd< d S d S )Nr   Content-Length)lenr2   	TypeErrorAttributeErrorNotImplementedErrorstr
bytes_sentheaders)r9   Zblocksr   r   r   set_content_length   s    zBaseHandler.set_content_lengthc                 C   s   d| j kr|   d S )NrR   )rY   rZ   rQ   r   r   r   cleanup_headers   s    
zBaseHandler.cleanup_headersc                 C   sh   |r2z$| j r&|d |d |d W 5 d }X n| jd k	rDtd|| _| || _| |d}| jS )Nr   r      zHeaders already set!ZStatus)headers_sentwith_tracebackrY   AssertionErrorstatusheaders_class_convert_string_typerL   )r9   r`   rY   exc_infor   r   r   r1      s    
zBaseHandler.start_responsec                 C   s(   t |tkr|S td|t|d S )Nz!{0} must be of type str (got {1}))typerW   r_   formatrepr)r9   valuetitler   r   r   rb      s
    z BaseHandler._convert_string_typec                 C   s   | j rx|  r| d| j| jf d d| jkrP| dtt  d | j	rd| jkr| d| j	 d n| d| j d d S )NzHTTP/%s %s
r!   ZDatez
Date: %s
ZServerzServer: %s
zStatus: %s
)
rF   client_is_modern_writehttp_versionr`   r$   rY   r   r   rG   rQ   r   r   r   send_preamble  s    
zBaseHandler.send_preamblec                 C   sR   | j stdn,| js*t|| _|   n|  jt|7  _| | |   d S )Nzwrite() before start_response())r`   r_   r]   rS   rX   send_headersrj   _flushrO   r   r   r   rL     s    



zBaseHandler.writec                 C   s   dS )NFr   rQ   r   r   r   rK   )  s    zBaseHandler.sendfilec                 C   s"   | j s| jdd |   n d S )NrR   0)r]   rY   rH   rm   rQ   r   r   r   rM   >  s    
zBaseHandler.finish_contentc              	   C   sF   zt| j dr| j   W 5 d  | _  | _ | _| _d| _d| _X d S )Nr   Fr8   )r2   rY   r`   r'   rX   r]   rN   r8   rQ   r   r   r   r8   H  s     zBaseHandler.closec                 C   s8   |    d| _| jr|  r4|   | t| j d S )NT)r[   r]   rF   ri   rl   rj   bytesrY   rQ   r   r   r   rm   U  s
    zBaseHandler.send_headersc                 C   s   | j }|d k	ot| j|S r/   )rE   
isinstancer2   )r9   wrapperr   r   r   rJ   ^  s    zBaseHandler.result_is_filec                 C   s   | j d  dkS )NZSERVER_PROTOCOLzHTTP/0.9)r'   upperrQ   r   r   r   ri   d  s    zBaseHandler.client_is_modernc                 C   sJ   z>ddl m} |  }||d |d |d | j| |  W 5 d }X d S )Nr   )print_exceptionr   r\   )	tracebackrt   r?   traceback_limitflush)r9   rc   rt   stderrr   r   r   log_exceptioni  s       zBaseHandler.log_exceptionc                 C   s2   |  t  | js.| | j| j| _|   d S r/   )	ry   r"   rc   r]   error_outputr'   r1   r2   r3   rQ   r   r   r   r7   y  s    zBaseHandler.handle_errorc                 C   s$   || j | jd d  t  | jgS r/   )error_statuserror_headersr"   rc   
error_body)r9   r'   r1   r   r   r   rz     s    zBaseHandler.error_outputc                 C   s   t d S r/   rV   rO   r   r   r   rj     s    zBaseHandler._writec                 C   s   t d S r/   r~   rQ   r   r   r   rn     s    zBaseHandler._flushc                 C   s   t d S r/   r~   rQ   r   r   r   r>     s    zBaseHandler.get_stdinc                 C   s   t d S r/   r~   rQ   r   r   r   r?     s    zBaseHandler.get_stderrc                 C   s   t d S r/   r~   rQ   r   r   r   r=     s    zBaseHandler.add_cgi_vars)N)1__name__
__module____qualname__r@   rC   rD   rA   rF   rk   rG   r   r;   r   rE   r   ra   rv   r{   r|   r}   r`   r2   r]   rY   rX   r:   r0   r3   rB   rZ   r[   r1   rb   rl   rL   rK   rM   r8   rm   rJ   ri   ry   r7   rz   rj   rn   r>   r?   r=   r   r   r   r   r   ^   sT   

		c                   @   s>   e Zd ZdddZdd Zdd Zd	d
 Zdd Zdd ZdS )r   TFc                 C   s(   || _ || _|| _|| _|| _|| _d S r/   )stdinstdoutrx   base_envrC   rD   )r9   r   r   rx   r'   multithreadmultiprocessr   r   r   __init__  s    zSimpleHandler.__init__c                 C   s   | j S r/   )r   rQ   r   r   r   r>     s    zSimpleHandler.get_stdinc                 C   s   | j S r/   )rx   rQ   r   r   r   r?     s    zSimpleHandler.get_stderrc                 C   s   | j | j d S r/   )r'   updater   rQ   r   r   r   r=     s    zSimpleHandler.add_cgi_varsc                 C   s^   | j |}|d ks |t|kr$d S ddlm} |dt ||d  }|sLqZ| j |}q:d S )Nr   )warnz9SimpleHandler.stdout.write() should not do partial writes)r   rL   rS   warningsr   DeprecationWarning)r9   rP   r2   r   r   r   r   rj     s    zSimpleHandler._writec                 C   s   | j   | j j| _d S r/   )r   rw   rn   rQ   r   r   r   rn     s    
zSimpleHandler._flushN)TF)	r   r   r   r   r>   r?   r=   rj   rn   r   r   r   r   r     s      

c                   @   s   e Zd ZdZdS )r	   FN)r   r   r   rF   r   r   r   r   r	     s   c                   @   s   e Zd ZdZi Zdd ZdS )r
   Tc              	   C   s(   t j| tjjtjjtjt ddd d S )NFTr   r   )r	   r   r"   r   bufferr   rx   r   rQ   r   r   r   r     s         zCGIHandler.__init__Nr   r   r   rA   r;   r   r   r   r   r   r
     s   c                   @   s   e Zd ZdZi Zdd ZdS )r   Tc              	   C   sj   t  }|dd}|dd}|d |d rD|t|d  |d< tj| tjjtj	jtj
|ddd d S )Nr   r   r   /FTr   )r   r*   r   rS   r	   r   r"   r   r   r   rx   )r9   r'   pathZscriptr   r   r   r   2  s         zIISCGIHandler.__init__Nr   r   r   r   r   r     s   )utilr   r   r   rY   r   r"   r&   r   __all__r   r   r   __contains__r   r   r   r   r   r	   r
   r   r   r   r   r   <module>   sZ                         <  V2