;iUdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZddl mZddlmZddlmZdd lmZdd lmZd d lmZd d lmZd dlmZd dlmZ ddlZeejej fZ!de"d<n+#e#$r#GddZ$e$ZeejfZ!YnwxYwdZ%ej&dkr e'dn #e#$rdZ%YnwxYwe(edZ)e)rej*Z*n GddZ* ej+Z,n #e-$rdZ,YnwxYwdZ.e j/e j0de1e2e j/e2fe j3dfZ4e j5rddl6m7Z7ddl6m8Z8dd l9m:Z:dd!l;mGd$d%eZ?dfd*Z@ dgdhd.ZA didjd2ZBdkd3ZC didld8ZDdgdmd<ZEdnd@ZFdodCZGdpdDZHGdEdFeZIGdGdHejJeIZKGdIdJe*eIZL dqdrdUZMdsdVZN dtdudeZOdS)vaA WSGI and HTTP server for use **during development only**. This server is convenient to use, but is not designed to be particularly stable, secure, or efficient. Use a dedicate WSGI server and HTTP server when deploying to production. It provides features like interactive debugging and code reloading. Use ``run_simple`` to start the server. Put this in a ``run.py`` script: .. code-block:: python from myapp import create_app from werkzeug import run_simple ) annotationsN)datetime) timedelta)timezone)BaseHTTPRequestHandler) HTTPServer)unquote)urlsplit_log)_wsgi_encoding_dance)InternalServerError) uri_to_iriztuple[type[Exception], ...]connection_dropped_errorsceZdZddZdS) _SslDummynamestrreturnt.Anyc td)NzUSSL is unavailable because this Python runtime was not compiled with SSL/TLS support.) RuntimeError)selfrs DC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\werkzeug/serving.py __getattr__z_SslDummy.__getattr__1s2 Nrrrr)__name__ __module__ __qualname__rrrrr0s(      rrTntcoloramaFforkceZdZdS) ForkingMixInN)rr r!r"rrr'r'Hs rr'ssl.SSLContextadhoc)WSGIApplication)WSGIEnvironment)RSAPrivateKeyWithSerialization) Certificatec2eZdZdZddZddZdd Zdd ZdS)DechunkedInputz8An input stream that handles Transfer-Encoding 'chunked'rfile t.IO[bytes]rNonec0||_d|_d|_dS)NFr)_rfile_done_len)rr1s r__init__zDechunkedInput.__init__cs   rboolcdS)NTr"rs rreadablezDechunkedInput.readablehstrintc |jd}t|d}n"#t $r}t d|d}~wwxYw|dkrt d|S)Nlatin1zInvalid chunk headerrz!Negative chunk length not allowed)r5readlinedecoder=strip ValueErrorOSError)rliner7es rread_chunk_lenzDechunkedInput.read_chunk_lenks 9;''))00::Dtzz||R((DD 9 9 9011q 8 9 !88=>> > sAA A0A++A0buf bytearraycd}|jsu|t|kra|jdkr||_|jdkrd|_|jdkrt t||j}||zt|kr_|jt||z ||d<|xjt||z zc_t|}n7|j|||||z<|xj|zc_||z }|jdkr,|j}|dvrtd|js|t|ka|S)NrT)   z!Missing chunk terminating newline) r6lenr7rHminr5readrArE)rrIrQn terminators rreadintozDechunkedInput.readintousv*" GCyA~~!//11 yA~~" y1}}C$),, !8c#hh&&!%!1!1#c((T/!B!BCJIISD0IIs88DD+/;+;+;A+>+>Ctax(IINIIAIDyA~~"[1133 %<<<!"EFFFE*" GCH rN)r1r2rr3rr9rr=)rIrJrr=)rr r!__doc__r8r<rHrTr"rrr0r0`sjBB &&&&&&rr0c*eZdZUdZded<ed*dZd+dZd,d Zd,fd Z d-d.dZ d/fd Z d*dZ d0dZ edgededdDZdeed<d1d2d"Zd3d%Zd3d&Zd4d)ZxZS)5WSGIRequestHandlerz3A request handler that implements WSGI dispatching.BaseWSGIServerserverrrc|jjSN)r[_server_versionr;s rserver_versionz!WSGIRequestHandler.server_versions {**rr,ct|j}|jjdnd}|jsd|_n(t |jt r|jdf|_|js|jrd|j|j}n|j}t|}iddd|d |j d tj d |jj d |jjd dd|jd|jd|jdddt%|dt%|jdt%|jdt%|jd|d||jjdt |jjd|jd}|jD]g\}}d|vr |dd}|dd}|dvrd |}||vr ||d!|}|||<h|d"dd#krd$|d%<t?|d |d <|jr|jr |j|d&< |j d$'}|tCj"||d(<n6#tF$r|j$d)d*YntJ$rYnwxYw|S)+Nhttphttps)rr/z wsgi.version)r rzwsgi.url_schemez wsgi.inputz wsgi.errorszwsgi.multithreadzwsgi.multiprocessz wsgi.run_onceFzwerkzeug.socketSERVER_SOFTWAREREQUEST_METHOD SCRIPT_NAME PATH_INFO QUERY_STRING REQUEST_URIRAW_URI REMOTE_ADDR REMOTE_PORTr ) SERVER_NAME SERVER_PORTSERVER_PROTOCOL_-z ) CONTENT_TYPECONTENT_LENGTHHTTP_,HTTP_TRANSFER_ENCODINGchunkedTzwsgi.input_terminated HTTP_HOST) binary_formSSL_CLIENT_CERTerrorz&Cannot fetch SSL peer certificate info)&r pathr[ ssl_contextclient_address isinstancerschemenetlocr r1sysstderr multithread multiprocess connectionr_commandrqueryaddress_string port_integerserver_addressrequest_versionheadersitemsupperreplacegetrClowerr0 getpeercertsslDER_cert_to_PEM_certrDlogAttributeError)r request_url url_scheme path_infoenvironkeyvalue peer_certs r make_environzWSGIRequestHandler.make_environsty)) #{6>VVG " ;"0D   +S 1 1 ;#'#6":D  ! )k&8 )BK.B 0@BBII#(II&& $ F$ z$  $*$  3: $  7 $ !9 $  U$  t$  t2$  dl$  2$  -i88$  01BCC$  / ::$ " +DI66#$ $ 4..00%$ & 4,,..'$ ( ;5a8t{9!<==#3-$ $ $ 2,,,.. ! !JCczz))++%%c3//CMM&"--E<<<#cmm'>>&s|55e55E GCLL ;;/ 4 4 : : < < B B D D Q Q/3G+ ,$27<3H$I$IGL !   6+"4 6#.#5GK  333EEI$-0-Ei-P-P)* O O O KOOG%M N N N N N    D s 4K%K5) K54K5r3c jdddkrjdx_d dd ddd fd d fd d fd } |jj dS#t$r!} |Yd}~dSd}~wt$r}jj r rd_ d d|tn#t$rYnwxYwddlm}||}jdd|Yd}~dSd}~wwxYw)NExpectrhz 100-continuesHTTP/1.1 100 Continue Fdatabytesrr3c( Jd Jd  dd\}}n#t$r d}}YnwxYwt|} ||t } D]B\}} ||||Cd|vsBddks6d|cxkrdks)n|d vs# jd krd  d d  dd t|ts Jd|rrh j tt|dd j d j |r j d j dS)Nzwrite() before start_responser rhzcontent-lengthrfHEADd>0HTTP/1.1TzTransfer-Encodingry Connectionclosezapplications must write bytesrM)splitrDr= send_responseset send_headeraddrprotocol_version end_headersrrwfilewritehexrOencodeflush)rcode_strmsgcode header_keysrrchunk_responser headers_sent headers_setr status_sent status_sets rrz*WSGIRequestHandler.run_wsgi..writes[))+J)))**,K***"( * 4$/$5$5dA$>$>MHcc!444$/cHHH48}}""4---!ee ".11JC$$S%000OOCIIKK0000)K77"#34>>4----#----:---;;%)N$$%8)DDD   w777  """dE** K K,K K K* .!.J$$ST^^ABB%7%>%>%@%@AAAJ$$W---   &&&!.J$$W--- J       s<A  A c|r/ r!|d|d d}n#d}wxYwrtd||S)Nr rzHeaders already set)with_tracebackAssertionError)statusrexc_inforrrrs rstart_responsez3WSGIRequestHandler.run_wsgi..start_response<sw <$#F&qk88!EEEF $HHtHOOOO <$%:;;;J!KLs#,0appr+c$| } |D] } |s  dr jdtj}| jtjd}d}|drV j d}|t|z }|dz }|r |dks|d krn|dV| t|d r| dSdS#tj}| jtjd}d}|drV j d}|t|z }|dz }|r |dks|d krn|dV| t|d r| wwxYw) Nrs0 rg{Gz?)timeoutir ld( ir) rr selectorsDefaultSelectorregisterr EVENT_READselectr1rQrOrhasattr) rapplication_iterrselector total_size total_readsrrrrrrs rexecutez,WSGIRequestHandler.run_wsgi..executeJs]"s7N;; # -,  DE$KKKK#E#JJJ!3J$$\222%466!!$/93GHHH  oodo33 :??:66D#d))+J1$K :#?#?;QUCUCUoodo33    +W55-$**,,,,,--)%466!!$/93GHHH  oodo33 :??:66D#d))+J1$K :#?#?;QUCUCUoodo33    +W55-$**,,,,-s 9D,,C#HTr )DebugTracebackr}zError on request: )rrrr3r])rr+rr3)rrrrCrrrrr[rrconnection_dropped Exceptionpassthrough_errorsclose_connectionr debug.tbtoolsrrender_traceback_textr) rrrGrrrrrrrrrrs ` @@@@@@@@rrun_wsgizWSGIRequestHandler.run_wsgis <  Hb ) ) / / 1 1 7 7 9 9^ K K J  = > > >!%!2!2!4!44 w!% 48 "& 59 $7 7 7 7 7 7 7 7 7 7 7 7 r         % -% -% -% -% -% -% -% -% -% -% -N B GDKO $ $ $ $ $( 0 0 0  # #Aw / / / / / / / / / B B B{- &>&(,% &!%J"&K+--....     6 5 5 5 5 5 .##99;;C KOOG%@3%@%@ A A A A A A A A A) BsI-C F C** F 7FD.-F. D;8F:D;;AFF cH tdS#ttjf$r }||Yd}~dSd}~wt $r>}|jj&t|r| d|nYd}~dSd}~wwxYw)z/Handles a request ignoring dropped connections.NzSSL error occurred: %s) superhandleConnectionErrorsocketrrrr[r is_ssl_error log_error)rrG __class__s rrzWSGIRequestHandler.handles  GGNN     0 ' ' '  # #A & & & & & & & & &   {&2|A27;;;;<;;;;; s %B!A B!#3BB!Nr} BaseExceptionrWSGIEnvironment | NonecdS)z`Called if the connection was closed by the client. By default nothing happens. Nr")rr}rs rrz%WSGIRequestHandler.connection_droppedsrrrct|dr|jStt|S)Ndo_) startswithrgetattrr)rrrs rrzWSGIRequestHandler.__getattr__s5 ??5 ! ! != uww%%%rcjt|ddr |jdS|jsdS|jdS)Nrrmrcr)rrrr;s rrz!WSGIRequestHandler.address_stringsA 4D ) ) /< . ." 9"1%%rr=c|jdS)Nr )rr;s rrzWSGIRequestHandler.port_integers"1%%rci|] }|d|d S)z\x02xr").0cs r zWSGIRequestHandler.s"FFFaM!MMMFFFr z\\\rsr int | strsizecH t|j}|jd|d|j}n#t$r |j}YnwxYw||j}t|}|ddkrt|d}n|dkrnz|dkrt|d}nc|ddkrt|d }nF|d krt|d }n/|dd krt|dd }nt|dd}| dd|||dS)N r1bold200304cyan3green404yellow4redmagentainfoz "%s" %s %s) rr~rrr requestline translate_control_char_tabler _ansi_styler)rrrr~rs r log_requestzWSGIRequestHandler.log_requestsM #di((D\AADAA4+?AACC # # #"CCC # mmD4554yy 7c>>c6**CC U]]  U]]c6**CC !W^^c7++CC U]]c8,,CC !W^^c6511CCc6955C sD$77777s (+??formatargsc$|jd|g|RdS)Nr}rrrrs rrzWSGIRequestHandler.log_errors$&(4((((((rc$|jd|g|RdS)Nr rrs r log_messagezWSGIRequestHandler.log_messages$'$''''''rtypemessagec |dd}t||d|d|dg|RdS)N%z%%z - - [z]  )rrr log_date_time_string)rrrrrs rrzWSGIRequestHandler.logsy,,..66sDAA  O OT%>%>%@%@ O OG O O O       r)rr)rr,rr3r])r}rrrrr3rrV)rsrs)rrrrrr3)rrrrrr3rrrrrrrr3)rr r!rW__annotations__propertyr_rrrrrrrr maketransrangerordrrrr __classcell__rs@rrYrYs== +++X+OOOObQBQBQBQBf      GK     &&&&&&&&&&&&&&--FF#EUU4[[#E55t3D3D#EFFF&+D "88888:))))((((        rrYrrstylesrcVts|Sddddddd}|D]}d||d |}|d S) Nr r!#$)rr rrr rz[mz)_log_add_style)rr'codesstyles rrrsj     E//.e ..u..   rcn str | None2tuple[Certificate, RSAPrivateKeyWithSerialization]c  ddlm}ddlm}ddlm}ddlm}ddlm }n#t$rtddwxYw|}| dd | }|d }| ||jd ||j|g}|}|||||t1jt4jt1jt4jt;d z||j gd|!|"||"d|gd#||$|} | |fS)Nr)x509)default_backend)hashes)rsa)NameOIDz>>??????????????? i   !    &/3$2E%2%?%?%A%A                      i s$3A77A;>A;AC00C47C4c ddl}ddl}t\}}ddlm}|\}}|\}}|tj||tj|tj || |j j tj || |j j |jj|tj|tj|t%||} | S)z:Generates an adhoc SSL context for the development server.rNrfri)atexittempfilerarBrgmkstemprosremoverrmrnrorprqrrrsrload_ssl_context) ryrzr`r^rg cert_handlert pkey_handleructxs rgenerate_adhoc_ssl_contextrUs9MMMOOO(**JD$<<<<<<%--//K%--//K OOBIy))) OOBIy)))H[$++M,B,FGGHHHH "+/ .A!.!;!;!=!=   H[H[ 9i 0 0C Jrrtruprotocol int | Nonecv| tj}tj|}||||S)aLoads SSL context from cert/private key files and optional protocol. Many parameters are directly taken from the API of :py:class:`ssl.SSLContext`. :param cert_file: Path of the certificate to use. :param pkey_file: Path of the private key to use. If not given, the key will be obtained from the certificate file. :param protocol: A ``PROTOCOL`` constant from the :mod:`ssl` module. Defaults to :data:`ssl.PROTOCOL_TLS_SERVER`. )rPROTOCOL_TLS_SERVER SSLContextload_cert_chain)rtrurrs rr~r~ss<* . " "C 9--- Jrr}Exception | Noner9c|1tjttjd}t |t jS)z?Checks if the given error (or the current one) is an SSL error.Nr )tcastrrrrrSSLError)r}s rrrs5 }y#,.."344 eS\ * **rportr=socket.AddressFamilyc|dr tjSd|vr!ttdr tjStjS)zUReturn ``AF_INET4``, ``AF_INET6``, or ``AF_UNIX`` depending on the host and port.zunix://:AF_INET6)rrAF_UNIXrrAF_INET)rcrs rselect_address_familyrsG y!!~ 44 >rfamilytuple[str, int] | strc2|tkr8tj|ddS t j|||t jt j}n#t j $r||fcYSwxYw|ddS)zVReturn a fully qualified socket address that can be passed to :func:`socket.bind`.://rr) af_unixr|r~abspath partitionr getaddrinfo SOCK_STREAM IPPROTO_TCPgaierror)rcrrress r get_sockaddrrs wt~~e44Q7888 $ 2F4F   ?Tz q6!9s,A22BBcb|tjkrdnd}tj|tj5} ||dfn0#t$r#|tjkrdndcYcdddSwxYw|dcdddS#1swxYwYdS)zGet the IP address of an external interface. Used when binding to 0.0.0.0 or ::1 to show a more useful URL. :meta private: zfd31:f903:5ab5:1::1z10.253.155.219i2z::1 127.0.0.1Nr)rr SOCK_DGRAMconnectrE getsockname)rrcss rget_interface_iprs#%+fo$=$= CSD vv0 1 1"Q G IItUm $ $ $ $ G G G"fo5555; F F """""""" G}}q! """"""""""""""""""s4B$A B$A;,B$:A;;B$$B(+B(cheZdZdZdZdZeZdZ d$d%fd Z d&dZ d'd(fd Z d)fd" Z d*d#Z xZS)+rZzuA WSGI server that that handles one request at a time. Use :func:`make_server` to create a server instance. FTNrcrrr=rr+handlertype[WSGIRequestHandler] | Nonerr9r_TSSLContextArg | Nonefdrrr3c"|t}dt|vr|js|jrd|_||_||_||_||_t||x|_ }t|t||} |tkrO|Mtjt | } t"j| rt#j| t+| |d| ||n9#t2$r} |t7| jt:j| jt>j krPt7d|dt:jt:j!dkr!|d krt7d t:jt;j"d Yd} ~ n}d} ~ wtF$r|wxYw|tIj%||tHj&|_$|j$'|_(|tkr|j(d |_|\tS|tTr tW|}n|d krtY}|-|j$d |_$||_.nd|_.ddl/} d| j01d|_2dS)NrrF)bind_and_activate)filezPort zp is in use by another program. Either identify and stop that program, or start the server with a different port.darwinizPOn macOS, try searching for and disabling 'AirPlay Receiver' in System Settings.r r*T) server_siderz Werkzeug/werkzeug)3rYvarsrrrrcrrrraddress_familyrr=rrrrr|r~existsunlinkrr8 server_bindserver_activaterE server_closeprintstrerrorrrerrno EADDRINUSEplatformexitrrfromfdrrrrtupler~r wrap_socketrimportlib.metadatametadataversionr^) rrcrrrrrrrrrG importlibrs rr8zBaseWSGIServer.__init__s5 ?(G T']] 2 2   3 $ 1 3(2G $  "4/DT4/P/PPn%dCII~FF W $ $VC88Nw~~n-- * .)))   #    :   """$$&&&&   !!###ajsz22227e...!!!!!Z |x//DDLLF!$      !!###       !-NF > > >     D         D      s!"&A 3A 3A A"requestrrcX|jrt||Sr])rr handle_error)rrrrs rrzBaseWSGIServer.handle_error9s-  "  ww##G^<<::0.0.0.0z * Running on all addresses ()rrz[::1]rr[]r r) rrrappendrcrrrrrrr join)r dev_warningmessagesrdisplay_hostname localhosts r log_startupzBaseWSGIServer.log_startupAsq A "+vu== =  ' ) ) OO8TY88 9 9 9 9#/7VVWF#y y--- L L L LMMM9 )) +I'7'G'G$$ 'I'7'H'H$ S S SI S S S STTT&&&#:'7#:#:#: OOVVVV8HVV49VV W W W VTYYx(()))))r)NFNN)rcrrr=rr+rrrr9rrrrrr3r)r)rrrr3)rrrrrr3r)rr r!rWrr LISTEN_QUEUErequest_queue_sizeallow_reuse_addressr8rrrrr%r&s@rrZrZs KL%48#(.2eTeTeTeTeTeTeTN####       ====== * * * * * * * *rrZceZdZdZdZdZdS)ThreadedWSGIServerzA WSGI server that handles concurrent requests in separate threads. Use :func:`make_server` to create a server instance. TN)rr r!rWrdaemon_threadsr"rrrrds$ KNNNrrc4eZdZdZdZ ddfd ZxZS)ForkingWSGIServerzA WSGI server that handles concurrent requests in separate forked processes. Use :func:`make_server` to create a server instance. T(NFrcrrr=rr+ processesrrrr9rrrrrr3c tstdt|||||||||_dS)Nz'Your platform does not support forking.)can_forkrDrr8 max_children) rrcrrrrrrrrs rr8zForkingWSGIServer.__init__xsQ HFGG G tS'3E{TVWWW%r)rNFNN)rcrrr=rr+rr=rrrr9rrrrrr3)rr r!rWrr8r%r&s@rrrosd L37#(.2&&&&&&&&&&&rrrr+threadedrrequest_handlerrrrrrc |r|dkrtd|rt|||||||S|dkrt||||||||St|||||||S)a6Create an appropriate WSGI server instance based on the value of ``threaded`` and ``processes``. This is called from :func:`run_simple`, but can be used separately to have access to the server object, such as to run it in a separate thread. See :func:`run_simple` for parameter docs. r z4Cannot have a multi-thread and multi-process server.r)rDrrrZ) rcrrrrrrrrs r make_serverrs(QIMMOPPP ! $_.@+RT    1}}             dC*>- . .& 88rautohostname application use_reloader use_debugger use_evalex extra_filest.Iterable[str] | Noneexclude_patternsreloader_interval reloader_type static_files'dict[str, str | tuple[str, str]] | Noner3c 6t|tstd| rddlm}||| }|r-ddlm}|||}|j|tsd}nttj d}t|||| | | ||| }|j d t|tj d<ts2|t%d t'd d |rKdd lm} ||j|||| |dS#|wxYw|dS)aStart a development server for a WSGI application. Various optional features can be enabled. .. warning:: Do not use the development server when deploying to production. It is intended for use only during local development. It is not designed to be particularly efficient, stable, or secure. :param hostname: The host to bind to, for example ``'localhost'``. Can be a domain, IPv4 or IPv6 address, or file path starting with ``unix://`` for a Unix socket. :param port: The port to bind to, for example ``8080``. Using ``0`` tells the OS to pick a random free port. :param application: The WSGI application to run. :param use_reloader: Use a reloader process to restart the server process when files are changed. :param use_debugger: Use Werkzeug's debugger, which will show formatted tracebacks on unhandled exceptions. :param use_evalex: Make the debugger interactive. A Python terminal can be opened for any frame in the traceback. Some protection is provided by requiring a PIN, but this should never be enabled on a publicly visible server. :param extra_files: The reloader will watch these files for changes in addition to Python modules. For example, watch a configuration file. :param exclude_patterns: The reloader will ignore changes to any files matching these :mod:`fnmatch` patterns. For example, ignore cache files. :param reloader_interval: How often the reloader tries to check for changes. :param reloader_type: The reloader to use. The ``'stat'`` reloader is built in, but may require significant CPU to watch files. The ``'watchdog'`` reloader is much more efficient but requires installing the ``watchdog`` package first. :param threaded: Handle concurrent requests using threads. Cannot be used with ``processes``. :param processes: Handle concurrent requests using up to this number of processes. Cannot be used with ``threaded``. :param request_handler: Use a different :class:`~BaseHTTPServer.BaseHTTPRequestHandler` subclass to handle requests. :param static_files: A dict mapping URL prefixes to directories to serve static files from using :class:`~werkzeug.middleware.SharedDataMiddleware`. :param passthrough_errors: Don't catch unhandled exceptions at the server level, let the server crash instead. If ``use_debugger`` is enabled, the debugger will still catch such errors. :param ssl_context: Configure TLS to serve over HTTPS. Can be an :class:`ssl.SSLContext` object, a ``(cert_file, key_file)`` tuple to create a typical context, or the string ``'adhoc'`` to generate a temporary self-signed certificate. .. versionchanged:: 2.1 Instructions are shown for dealing with an "address already in use" error. .. versionchanged:: 2.1 Running on ``0.0.0.0`` or ``::`` shows the loopback IP in addition to a real IP. .. versionchanged:: 2.1 The command-line interface was removed. .. versionchanged:: 2.0 Running on ``0.0.0.0`` or ``::`` shows a real IP address that was bound as well as a warning not to run the development server in production. .. versionchanged:: 2.0 The ``exclude_patterns`` parameter was added. .. versionchanged:: 0.15 Bind to a Unix socket by passing a ``hostname`` that starts with ``unix://``. .. versionchanged:: 0.10 Improved the reloader and added support for changing the backend through the ``reloader_type`` parameter. .. versionchanged:: 0.9 A command-line interface was added. .. versionchanged:: 0.8 ``ssl_context`` can be a tuple of paths to the certificate and private key files. .. versionchanged:: 0.6 The ``ssl_context`` parameter was added. .. versionchanged:: 0.5 The ``static_files`` and ``passthrough_errors`` parameters were added. zport must be an integerr )SharedDataMiddleware)DebuggedApplication)evalexNWERKZEUG_SERVER_FDrTr zPress CTRL+C to quitr)run_with_reloader)rrintervalr)rr=rFmiddleware.shared_datardebugr trusted_hostsrrr|rrrset_inheritablerfilenorr r _reloaderr rr)rrrrrrrrrrrrrrrrrrrsrvr s r run_simplers` dC 31222F@@@@@@**; EE 3......))+jIII  !((222 # % %3  01 2 2      CJt$$$'*3::<<'8'8BJ#$ # % %D  V[!7BBCCC000000   !'!1*+             C       s E,,F)rrr'rrrr])r1r2rr3)NN)rbrrcr2r1r2rrd)rr))rtrrur2rrrr))r}rrr9)rcrrr=rr)rcrrr=rrrr)rrrr)Fr NFNN)rcrrr=rr+rr9rr=rrrr9rrrrrrZrU) FFTNNr rFr NNFN)"rrrr=rr+rr9rr9rr9rrrrrr=rrrr9rr=rrrrrr9rrrr3)PrW __future__rrior|rr socketserverrtypingrrrSrr http.serverrr urllib.parser r _internalr r exceptionsrurlsrrrr SSLEOFErrorrr rErr.r __import__rrr'rrrrOptionalUnionrrLiteral_TSSLContextArg TYPE_CHECKING_typeshed.wsgir+r,-cryptography.hazmat.primitives.asymmetric.rsar-cryptography.x509r. RawIOBaser0rYrrarwrr~rrrrrZThreadingMixInrrrrrr"rrr(s   #"""""   ######......"""""" !!!!!!++++++++++++BJJJ  >  B B B )++C!0&. A B7d?? :  72v    ,LL        nGGGGG *G eCC$8919W;M MN?..............-----;;;;;R\;;;|D D D D D /D D D N (.....d?C) ) ) ) ) X>JN*+++++"""""$e*e*e*e*e*Ze*e*e*P4n&&&&& n&&&>7;$*.*****Z9999*./37;<@$*.!eeeeeees6-B%B.-B.? C CC<DD D