<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?h¥T  ã                   @   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g d¢Z	g d¢Z
g d¢Zdd	„ Zh d
£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 dd„ deƒZG dd„ deƒZdS )é   )ÚFileWrapperÚguess_schemeÚis_hop_by_hop)ÚHeadersé    N)ÚBaseHandlerÚSimpleHandlerÚBaseCGIHandlerÚ
CGIHandlerÚIISCGIHandlerÚread_environ)ZMonZTueZWedZThuZFriZSatZSun)NZ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   ú5/opt/alt/python39/lib64/python3.9/wsgiref/handlers.pyÚformat_date_time   s    ÿr   >
   ZREMOTE_USERZHTTPSZREQUEST_METHODZCONTENT_TYPEZQUERY_STRINGÚ	PATH_INFOZCONTENT_LENGTHZ	AUTH_TYPEZREMOTE_IDENTÚSCRIPT_NAMEc                 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y2   d}Y n0 i }tj ¡ D ]¦\}}t|ƒràt jdkrÎtj 	dd¡ 
¡ }| d¡rŠ| d¡ d¡}qà| d	¡r–qà| d
¡rºd|v rº| d¡ d¡}qà| | d¡ d¡}n| | |¡ d¡}|||< qB|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    

	

ÿþ
r   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   sr   z$|   ¡  || j| jƒ| _|  ¡  W nH tttfy>   Y d S    z|  ¡  W n   |  	¡  ‚ Y n0 Y n0 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 u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
0 |  ¡  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   sH   zt | jƒ}W n tttfy&   Y n0 |dkrDt| 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 vr|  ¡  d S )NrR   )rY   rZ   rQ   r   r   r   Úcleanup_headersÙ   s    
zBaseHandler.cleanup_headersc                 C   sl   |r6z(| j r&|d |d ƒ |d ¡‚W d }qHd }0 n| jd urHt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u 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vrP|  dtt ¡ ƒ  d¡¡ | j	rŽd| jv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   sj   z>t | jdƒr| j ¡  W d  | _ | _ | _| _d| _d| _n&d  | _ | _ | _| _d| _d| _0 d S )Nr8   r   F)rN   r2   r8   rY   r`   r'   rX   r]   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 u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   sN   zBddl m} |  ¡ }||d |d |d | j|ƒ | ¡  W d }nd }0 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   

		r   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 u 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    ÿ

r   c                   @   s   e Zd ZdZdS )r	   FN)r   r€   r   rF   r   r   r   r   r	   ä  s   r	   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   r
   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   r   )Ú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>   s    
<  V2