bgyDUddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZddlmZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'ddl(m)Z)m*Z+dd l,m-Z-dd lm.Z.m/Z/m0Z0dd l1m2Z2dd l3m4Z4dd l5m6Z6m7Z7ddl8m9Z9m:Z:m;Z;mm?Z?ddl@mAZAddlBmCZCmDZDddlEmFZFdZGerddlHmIZIeeJeJfZKneLZKeMeNeOe+jPdddZQee#eOdfeRd<ejSdZTee eJeRd<ejSdZUee eJeRd<ejVdZWeeJeRd<eeAgeeeDfZXe#ede!eJfZYGd d!e%d"#ZZGd$d%e"ed&Z[Gd'd&ej\Z]Gd(deKe.Z^Gd)d*e^Z_d+eAd,dfd-Z`Gd.d/e[ZaGd0d1eaZbGd2d3eaZcGd4d5e[ZdGd6d7edZeGd8d9edZfGd:d;ej\ZgGd<d=egZhGd>d?ehZiGd@dAefZjGdBdCe]ZkGdDdEe]ZlGdFdGe0ZmGdHdIe"ee[ee[ZnGdJdKe"ee]ee]ZoGdLdMe/eeJe[fZpdNeJd,eJfdOZqdNeJd,eJfdPZrdNeJd,eJfdQZsdS)RN)contextmanager)wraps)Path)MappingProxyType) TYPE_CHECKINGAny AwaitableCallable ContainerDictFinal GeneratorIterableIteratorListMappingNoReturnOptionalPatternSetSizedTupleType TypedDictUnioncast)URL __version__)hdrs)AbstractMatchInfoAbstractRouter AbstractView)DEBUG) HttpVersion11)HandlerPathLike) HTTPExceptionHTTPExpectationFailed HTTPForbiddenHTTPMethodNotAllowed HTTPNotFound) FileResponse)Request)ResponseStreamResponse)AbstractRouteDef) UrlDispatcherUrlMappingMatchInfoAbstractResourceResource PlainResourceDynamicResource AbstractRoute ResourceRouteStaticResourceView) Application.. YARL_VERSIONz$^[0-9A-Za-z!#\$%&'\*\+\-\.\^_`\|~]+$HTTP_METHOD_REz*(\{[_a-zA-Z][^{}]*(?:\{[^{}]*\}[^{}]*)*\})ROUTE_RE/PATH_SEPr3ceZdZUeed<eed<eeed<eed<eed<eedfed<ded <eed <d ed <eed <dS) _InfoDictpath formatterpattern directoryprefixr8routesr<appdomainAbstractRuleMatchingrulehttp_exceptionN) __name__ __module__ __qualname__str__annotations__rrrr(P/opt/cloudlinux/venv/lib64/python3.11/site-packages/aiohttp/web_urldispatcher.pyrErE^s IIINNN S\OOO KKK C( ))))  KKK    !!!!!!rWrEF)totalcdeZdZdddeeddfdZedeefdZeej defdZ ej dede fd Z ej d e defd Zej d eddfd Zej defdZddZej dedefdZdS)r4Nnamer\returnc||_dSN_nameselfr\s rX__init__zAbstractResource.__init__rs  rWc|jSr_r`rcs rXr\zAbstractResource.nameu zrWcdS)zWExposes the resource's canonical path. For example '/foo/bar/{name}' NrVrfs rX canonicalzAbstractResource.canonicalyrWkwargsc dS)z2Construct url for resource with additional params.NrV)rcrks rXurl_forzAbstractResource.url_forrjrWrequestc KdS)zWResolve resource. Return (UrlMappingMatchInfo, allowed_methods) pair. NrVrcrns rXresolvezAbstractResource.resolve rWrJcdS)zWAdd a prefix to processed URLs. Required for subapplications support. NrVrcrJs rX add_prefixzAbstractResource.add_prefixrjrWcdSz;Return a dict with additional info useful for introspectionNrVrfs rXget_infozAbstractResource.get_inforjrWcdSr_rVrfs rXfreezezAbstractResource.freezes rWrFcdS)z Perform a raw match against pathNrVrcrFs rX raw_matchzAbstractResource.raw_matchrjrWr]N)rQrRrSrrTrdpropertyr\abcabstractmethodrirrmr._ResolverqrurErxrzboolr}rVrWrXr4r4qs04 hsmX 3   X  AAAAAA  W             J)JJJJ     /c/d//////rWr4r8c xeZdZddddedeeeefdee dee ddf dZ e defd Z e defd Ze ejdeefd Ze dee fd Zejdefd ZejdededefdZdedeefdZdS)r8Nexpect_handlerresourcemethodhandlerrrr]c|t}tj|s Jd||}t|st |dt|s J|tj|rntj |rtj dtnrt|trt|t rnGtj dtt#|dt$dt&ffd }||}||_||_||_||_dS)NzCoroutine is expected, got z is not allowed HTTP methodz6Bare generators are deprecated, use @coroutine wrapperz-Bare functions are deprecated, use async onesrnr]cK|}tj|r|d{V}t|tsJ|Sr_)asyncio iscoroutine isinstancer0)rnresult old_handlers rXhandler_wrapperz/AbstractRoute.__init__..handler_wrappersU$W--&v..*#)\\\\\\F!&.99999 rW)_default_expect_handlerriscoroutinefunctionupperr@match ValueErrorcallableinspectisgeneratorfunctionwarningswarnDeprecationWarningrtype issubclassr#rr.r0_method_handler_expect_handler _resource)rcrrrrrrs @rXrdzAbstractRoute.__init__s  !4N*    < < ; ; ; < < ##F++ ECCCDD D  ))'))  &w / / &   ( 1 1 & MK"     & & &:g|+L+L &  MBDV   7^^ w >     ^ "K%G  -!rWc|jSr_)rrfs rXrzAbstractRoute.method |rWc|jSr_)rrfs rXrzAbstractRoute.handlers }rWcdS)z8Optional route's name, always equals to resource's name.NrVrfs rXr\zAbstractRoute.namerjrWc|jSr_)rrfs rXrzAbstractRoute.resources ~rWcdSrwrVrfs rXrxzAbstractRoute.get_inforjrWargsrkcdS)/Construct url for route with additional params.NrVrcrrks rXrmzAbstractRoute.url_forrjrWrnc<K||d{VSr_)rrps rXhandle_expect_headerz"AbstractRoute.handle_expect_headers,))'222222222rW)rQrRrSrTrr&rr#r_ExpectHandlerr4rdrrrrrr\rrErxrrmr.r0rrVrWrXr8r8s 48/3 1"1"1"1"w\ 2231" !0 1" +, 1" 1"1"1"1"fXXGhsmGGGXG(#34X J)JJJJ >S>C>C>>>>3'3h~>V333333rWcLeZdZdeeefdeffd ZedefdZ edefdZ ede fdZ ede efdZdefd Zeded fd ZddZeddZed d dedfdZddZdeffd ZxZS)r3 match_dictroutect|||_g|_d|_d|_dSNF)superrd_route_apps _current_app_frozen)rcrr __class__s rXrdzUrlMappingMatchInfo.__init__s< $$$ (* 37 rWr]c|jjSr_)rrrfs rXrzUrlMappingMatchInfo.handlers {""rWc|jSr_)rrfs rXrzUrlMappingMatchInfo.routes {rWc|jjSr_)rrrfs rXrz"UrlMappingMatchInfo.expect_handlers {//rWcdSr_rVrfs rXrPz"UrlMappingMatchInfo.http_exceptiontrWc4|jSr_)rrxrfs rXrxzUrlMappingMatchInfo.get_info s{##%%%rW)r<.c*t|jSr_)tuplerrfs rXappszUrlMappingMatchInfo.apps sTZ   rWrLr<Nc|jrtd|j||_|jd|dS)Nz-Cannot change apps stack after .freeze() callr)r RuntimeErrorrrinsertrcrLs rXadd_appzUrlMappingMatchInfo.add_appsK < PNOO O   $ #D  !S!!!!!rWc|j}|J|Sr_)rrs rX current_appzUrlMappingMatchInfo.current_apps rW)NNNc#Ktr1||jvr(td|j||j}||_ dV||_dS#||_wxYw)Nz1Expected one of the following apps {!r}, got {!r})r$rrformatr)rcrLprevs rXset_current_appz#UrlMappingMatchInfo.set_current_apps  $*$$"GNN C   % EEE $D   D  $ $ $ $s A A cd|_dS)NT)rrfs rXrzzUrlMappingMatchInfo.freeze-s  rWc\dtd|jdS)Nz )r__repr__rrcrs rXrzUrlMappingMatchInfo.__repr__0s.AUWW--//AA4;AAAArW)rLr<r]N)r]r<r~)rQrRrSr rTr8rdrr&rrrrrr(rPrErxrrrrrrrrzr __classcell__rs@rXr3r3s4S>-####X#}X0000X0 7X&)&&&&!e./!!!X!""""X  %= %Y?O5P % % %^ %B#BBBBBBBBBBrWcPeZdZdeddffd ZedefdZdefdZxZ S)MatchInfoErrorrPr]Nc~||_tit|jdSr_) _exceptionrrd SystemRoutercrPrs rXrdzMatchInfoError.__init__5s4( [99:::::rWc|jSr_)rrfs rXrPzMatchInfoError.http_exception9 rWcVd|jj|jjS)Nz)rrstatusreasonrfs rXrzMatchInfoError.__repr__=s)(// O "DO$:   rW) rQrRrSr(rdrrPrTrrrs@rXrr4s;};;;;;;; X #        rWrrnr]cK|jtjd}|jt krM|dkr"|jdd{VdStd|zdS)zDefault handler for Expect header. Just send "100 Continue" to client. raise HTTPExpectationFailed if value of header is not "100-continue" z 100-continuesHTTP/1.1 100 Continue NzUnknown Expect: %s)text) headersgetr EXPECTversionr%lowerwriterwriter))rnexpects rXrrCs _ b 1 1F-'' <<>>^ + +.&&'GHH H H H H H H H H H'-AF-JKKK K ('rWc eZdZdddeeddffdZdddedeeee fd ee dd fd Z dd Z de defdZejdedeeeeffdZdefdZded fdZxZS)r5Nr[r\r]cZt|g|_dS)Nr[)rrd_routes)rcr\rs rXrdzResource.__init__Rs) d###,. rWrrrrr9c|jD]E}|j|ks|jtjkr#t d|Ft ||||}|||S)NzOAdded route will never be executed, method {route.method} is already registered)rr)rrr METH_ANYrrr9register_route)rcrrr route_objs rX add_routezResource.add_routeVs  I6))Y-=-N-N"!!'i!8!8.O"&'4WWW  I&&&rWrc~t|ts Jd||j|dS)Nz)Instance of Route class is required, got )rr9rappendrcrs rXrzResource.register_routejsZ =   A A @u @ @ A A  E"""""rWrncKt}||jj}|d|fS|jD]M}|j}||||jks|tjkrt|||fcSNd|fSr_) set_matchrel_urlraw_pathrraddr rr3)rcrnallowed_methodsrr route_methods rXrqzResource.resolveps$'EE[[!9::  ( ( ) )I$+L    - - -w~--1N1N+J BBOTTTT2O( (rWrFcdSr_rVr|s rXrzResource._matchs rWc*t|jSr_lenrrfs rX__len__zResource.__len__4<   rWc*t|jSr_)iterrrfs rX__iter__zResource.__iter__sDL!!!rW)rr9r]N)rQrRrSrrTrdrrr#r&rrrr.rrqrrr rintrrrrrs@rXr5r5Qsi04/// ///////48 tL)723 !0   (#### )W)))))   3 8DcN#;    !!!!!"(?3""""""""rWr5ceZdZdddedeeddffdZedefdZddZd eddfd Z dedee eeffd Z dede fd Z defd ZdefdZdefdZxZS)r6Nr[rFr\r]ct||r|dsJ||_dS)Nr[rB)rrd startswith_path)rcrFr\rs rXrdzPlainResource.__init__sF d###/4??3///// rWc|jSr_r rfs rXrizPlainResource.canonicalrgrWc&|js d|_dSdS)NrBrrfs rXrzzPlainResource.freezes!z DJJJ  rWrJc|dsJ|drJt|dksJ||jz|_dSNrBr)r endswithrr rts rXruzPlainResource.add_prefixsY  %%%%%??3'''''6{{Qdj( rWc |j|kriSdSr_rr|s rXrzPlainResource._matchs :  I4rWc|j|kSr_rr|s rXr}zPlainResource.raw_matchszT!!rWcd|jiS)NrFrrfs rXrxzPlainResource.get_infos ##rWc8tj|jdSNTrFencoded)rbuildr rfs rXrmzPlainResource.url_forsydj$7777rWcJ|j d|jzdznd}d|d|jdS)N'' rzsTY%%B555 5555rWr~)rQrRrSrTrrdrrirzrur rrr}rErxrrmrrrs@rXr6r6sb;?S8C=D 3X)))))) 38DcN#;"c"d""""$)$$$$888886#66666666rWr6ceZdZejdZejdZdZdddede eddffd Z e defd Z d eddfd Z dede eeeffd ZdedefdZdefdZdedefdZdefdZxZS)r7z#\{(?P[_a-zA-Z][_a-zA-Z0-9]*)\}z.\{(?P[_a-zA-Z][_a-zA-Z0-9]*):(?P.+)\}z[^{}/]+Nr[rFr\r]ct|d}d}t|D]}|j|}|rP|d|d|jz }|d|dzdzz }o|j |}|rA|djdi| z }|d|dzdzz }d|vsd|vrtd|d |d t|}||z }|tj|z } tj|}n-#tj$r}td |d |dd}~wwxYw|jt&sJ|d sJ||_||_dS)Nr[rz (?P<{}>{})var{}z(?P<{var}>{re})zInvalid path 'z'['z']z Bad pattern 'z': rBrV)rrdrAsplitDYN fullmatchrgroupGOOD DYN_WITH_RE groupdictr _requote_pathreescapecompileerrorrHr rC_pattern _formatter) rcrFr\rHrGpartrcompiledexcrs rXrdzDynamicResource.__init__s d### NN4(( ' 'DH&&t,,E <..u{{5/A/A49MMMS5;;u#5#55;; $..t44E 3,3HHeoo6G6GHHHS5;;u#5#55;; d{{cTkk !C$!C!C4!C!C!CDDD &&D  I ry &GG Jz'**HHx J J J>W>>>>??T I J**844444##C(((((  #sE//F>FFc|jSr_r2rfs rXrizDynamicResource.canonicalrrWrJc|dsJ|drJt|dksJtjtj||jjz|_||jz|_dSr) r rrr-r/r.r1rHr2rts rXruzDynamicResource.add_prefixs~  %%%%%??3'''''6{{Q 29V#4#4t}7L#LMM  4?2rWc|j|}|dSd|DS)Nc4i|]\}}|t|SrV) _unquote_path).0keyvalues rX z*DynamicResource._match..s3.8c5]5))rW)r1r'r+items)rcrFrs rXrzDynamicResource._matchsX ''-- =4.s$)V)V)V1![^^)V)V)VrWTr)r2 format_mapr@rr)rcrCurls rXrmzDynamicResource.url_forsCo(()V)V )V)V)VWWyc40000rWcf|j d|jzdznd}d||jS)Nrrrz$)r\rG)r\rr2rbs rXrzDynamicResource.__repr__sB)-)>sTY%%B5<<=   rW)rQrRrSr-r/r&r*r)rTrrdrrirur rrr}rErxrrmrrrs@rXr7r7s "*; < *>""""> d###$V,,  s* rWc|jSr_)rOrfs rXrizPrefixResource.canonical rrWc|dsJ|drJt|dksJ||jz|_|jdz|_dSr)r rrrOrPrts rXruzPrefixResource.add_prefixsg  %%%%%??3'''''6{{Q ,  s* rWcdSrrVrts rXr}zPrefixResource.raw_matchsurW) rQrRrSrTrrdrrirurr}rrs@rXrMrMs=A+++s+Xc]+d++++++3X++++++rWrMc2eZdZdZddddddddededeed eed ed e d e d e ddffdZ ddded ee de fdZ e dedefdZdefdZdeddfdZdedefdZdefdZdeefdZdedefdZdedefdZdefdZxZ S) r:rHNFr\r chunk_size show_indexfollow_symlinksappend_versionrJrIr\rrWrXrYrZr]ct|| t|}t|dr9tt jt|}|}| stdn-#ttf$r} td|d| d} ~ wwxYw||_ ||_ ||_||_||_||_t%d|j||t%d|j||d |_dS) Nr[~zNot a directoryzNo directory exists at 'rGETrHEAD)r]r^)rrdrrTr osrF expanduserrqis_dirrFileNotFoundError _directory _show_index _chunk_size_follow_symlinksr_append_versionr9_handler) rcrJrIr\rrWrXrYrZr0rs rXrdzStaticResource.__init__so d+++ QYI9~~((-- E !3!3C NN!C!CDD !))++I##%% 4 !2333 4!:. Q Q QD DDDEE5 P Q#%% /--!t|T." d>    sB!CC2C--C2)rZfilenamec||j}t|d}tj|jd}t dkr||ddz }n||z }|rM|j |} |j r[ttj |}||j|}n.|}||jn#t"t$f$r|cYSwxYw|rt|d5}|}dddn #1swxYwY||} ||j| i}|S|S)NrBTrr%%25rb)rgrTlstriprrrOr?replacercjoinpathrfrr_rFnormpath relative_torqrrbis_fileopenread_get_file_hash with_query VERSION_KEY) rcrirZrJunresolved_pathnormalized_pathfilepathf file_byteshs rXrmzStaticResource.url_forDs  !!1Nx=='',,iT\4888 & ((e444CC.C  "o66x@@O (:&*27+;+;O+L+L&M&MO#//@@@.6688HH.6688H((999 12     !! ]]4((*A!"J***************'' 33nnd&6%:;;  s%BD D65D6"FF F byte_arrayctj}||tj|}|dS)Nascii)hashlibsha256updatebase64urlsafe_b64encodedigestdecode)rmb64s rXrxzStaticResource._get_file_hashmsK N   &qxxzz22zz'"""rWc,|j|j|jdS)N)rIrJrK)rcrOrrfs rXrxzStaticResource.get_infots ll   rWrcvd|jvrtdtd|||j|jd<dS)NOPTIONSzOPTIONS route was set alreadyr)rrr9r)rcrs rXset_options_routez StaticResource.set_options_route{sK  $ $>?? ?"/ wT5I# # #  YrWrncdK|jj}|j}t|j}||js||jkrdtfS||vrd|fSdt|t|jdzdi}t||j||fS)Nrir) rrrrrr rPrOr;rr3)rcrnrFrrrs rXrqzStaticResource.resolves'dl++t}-- $$,2F2F;   ( (( ( -S5F5F5J5L5L0M"N"NO #J V0DEEWWrWc*t|jSr_rrfs rXrzStaticResource.__len__rrWcNt|jSr_)rrvaluesrfs rXrzStaticResource.__iter__sDL''))***rWcK|jd} t|}|jrt|j|}|jr[ttj |}| |j| }n.| }| |jnm#ttf$r}t|d}~wt$rt$r3}|jj|t|d}~wwxYw|rV|jrA t+||dS#t.$rtwxYwt|rt3||jSt)Nriz text/html)r content_type)rW) match_inforanchorr*rcrrrfr_rFrsrtrqrrbr, ExceptionrLlogger exceptionrardr/_directory_as_htmlPermissionErrorrur-re)rcrnrrir{r|r}r0s rXrhzStaticResource._handles$Z0 ,G}}H &$oo%"o66x@@O$ 6"&rw'7'7'H'H"I"I++DO<<<*2244*2244$$T_555-. , , ,..e +     , , , K  ( ( / / /..e + , ??    &*#!44X>>['***'//)*$oo%      T5EFFF F s0CC E 1DE .EE )#F F&r}c|sJ||j}d|}d|d}g}|}t |D]}||j}|jdz|z} |r |jd} n|j} |d | | d d |} d |d| d } d |d } d | d| d}|S)Nz Index of /z

z

rBz#
  • {name}
  • )rJr\z
      {}
     z z z z z z ) rartrcas_posixiterdirsortedrOr\rrjoin)rcr}relative_path_to_dirindex_ofh1 index_list dir_index_filerel_pathfile_url file_nameulbodyhead_strhtmls rXrz!StaticResource._directory_as_htmls     '33DODDMMOO6 466 #H # # # $$&& I&&  E((99BBDDH|c)H4H||~~ '$z,,, !J   5<< y=      % %dii &;&; < <-"-----@X@@@5(55d555 rWcr|j d|jzdznd}d||j|jS)Nrrz/ {directory!r}>)r\rFrI)r\rrOrcrbs rXrzStaticResource.__repr__sG(, (=sTY$$2@GGDLDOH   rW)!rQrRrSrzrTr'rrr rrdrrm staticmethodbytesrxrErxr&rr.rrqrrr8rr0rhrrrrrs@rXr:r:s7K#37$ %$$ $ $ $ $ sm $ !0 $ $ $ $ $  $ $ $ $ $ $ T*. ''''! ' ''''R#5#S###\#  )      T     XW X X X X X!!!!!+(=1++++)W)))))V"4"C""""H #        rWr:ceZdZdeddddffd Zdeddffd Zded edefd Zdefd Z d e de fd Z de fdZdeefdZdefdZxZS)PrefixedSubAppResourcerJrLr<r]Nct|||_|jD]}||dSr_)rrd_approuter resourcesru)rcrJrLrrs rXrdzPrefixedSubAppResource.__init__s`      ,,.. ( (H    ' ' ' ' ( (rWct||jjD]}||dSr_)rrurrr)rcrJrrs rXruz!PrefixedSubAppResource.add_prefixs\ 6""" (2244 ( (H    ' ' ' ' ( (rWrrkc td)Nz3.url_for() is not supported by sub-application rootrrs rXrmzPrefixedSubAppResource.url_forsSTTTrWc |j|jdS)N)rLrJ)rrOrfs rXrxzPrefixedSubAppResource.get_infosyDL999rWrncK|jj|js%|jj|jkrdt fS|jj|d{V}| |jt|j tr |j j }nt }||fSr_)rJrr rPrOrrrrqrrrPr+rrcrnrmethodss rXrqzPrefixedSubAppResource.resolves $// >>  $ 44; 9+33G<<<<<<<< 49%%% j/1E F F  /?GGeeG7""rWcXt|jjSr_)rrrrKrfs rXrzPrefixedSubAppResource.__len__ s!49#**,,---rWcXt|jjSr_)rrrrKrfs rXrzPrefixedSubAppResource.__iter__s!DI$++--...rWcDd|j|jS)Nz, {app!r}>)rJrL)rrOrrfs rXrzPrefixedSubAppResource.__repr__s)=DDz$Domain.validation..;s3NN4<))!,,NNNNNNrWzDomain not validP:) rrT TypeErrorrstriprrrraw_hostallr%port)rcrMrJs` rXrzDomain.validation1s&#&& 2011 1s##))++ 5566 6 f__344 4)f$%%|'''NNNNcl6H6H6M6MNNNNN 1/00 0 8r>>< ,+++++rWrncK|jtj}|sdS||Sr)rrr HOST match_domain)rcrnhosts rXrz Domain.matchAs>""49-- 5  &&&rWrc<||jkSr_)rrrcrs rXrzDomain.match_domainGszz||t|++rWcd|jiS)NrMrrfs rXrxzDomain.get_infoJs$,''rW)rQrRrSr-r/rrTrdrrirr.rrrrErxrrs@rXrr&sbj566G/s/t//////3X,,,,,, '7't'''' ,,,,,,()((((((((rWrcteZdZejdZdeddffd ZedefdZ dede fdZ xZ S) MaskDomainz(?!-)[a-z\d\*-]{1,63}(? {app!r}>)rL)rrrfs rXrzMatchedSubAppResource.__repr__ws6==$)=LLLrW)rQrRrSrNrdrrTrirErxr.rrqrrVrWrXrr^s1 $ $3$$$X$6)6666 #W # # # # #M#MMMMMMrWrc eZdZdZdddedeeeefde de e ddf fd Z defd Z ede efd Zd ed edefdZdefdZxZS)r9zA route with resourceNrrrrrr]cRt||||dS)Nr)rrd)rcrrrrrs rXrdzResourceRoute.__init__~s9  GNX      rWcPd|j|j|jS)Nz3 {handler!r})rrr)rrrrrfs rXrzResourceRoute.__repr__s-DKK;L   rWc,|jdS|jjSr_)rr\rfs rXr\zResourceRoute.names > !4~""rWrrkc8|jJ|jj|i|S)r)rrmrs rXrmzResourceRoute.url_fors*~)))%t~%t6v666rWcF|jJ|jSr_)rrxrfs rXrxzResourceRoute.get_infos$~)))~&&(((rW)rQrRrS__doc__rTrr&rr#r4rrrdrrr\rrmrErxrrs@rXr9r9{s 48      w\ 223  #  !0           #    #hsm###X# 7S7C7C7777 ))))))))))rWr9ceZdZdeddffd ZdededefdZede efdZ de fd Z d e defd Zedefd Zedefd ZdefdZxZS)rrPr]Ncxttj|j||_dSr_)rrdr rrh_http_exceptionrs rXrdzSystemRoute.__init__s/  555-rWrrkc td)Nz).url_for() is not allowed for SystemRouterrs rXrmzSystemRoute.url_forsFGGGrWcdSr_rVrfs rXr\zSystemRoute.namerrWcd|jiS)NrPrrfs rXrxzSystemRoute.get_infos $"677rWrncK|jr_rrps rXrhzSystemRoute._handles""rWc|jjSr_)rrrfs rXrzSystemRoute.status#**rWc|jjSr_)rrrfs rXrzSystemRoute.reasonrrWc.d|S)Nz*rf)rrfs rXrzSystemRoute.__repr__s;BBBMMMrW)rQrRrSr(rdrTrrmrrr\rErxr.r0rhr rrrrrs@rXrrsU.}.......HSHCHCHHHHhsmX8)8888#W#####++++X+++++X+N#NNNNNNNNrWrcDeZdZdefdZdeedeffdZdefdZ dS)r;r]c6K|jjtjvr|t ||jjd}|||d{V}t|tsJ|Sr_) rnrr METH_ALL_raise_allowed_methodsgetattrrrr0)rcrrets rX_iterz View._iters < dm 3 3  ' ' ) ) )t|288::DAA >  ' ' ) ) )FHHnnnnnn#~..... rWNcN|Sr_)r  __await__rfs rXr zView.__await__szz||%%'''rWchfdtjD}tjj|)NcXh|]&}t|$|'SrV)hasattrr)r<rrcs rX z.View._raise_allowed_methods..s0PPPwtQWWYY7O7OP1PPPrW)r rr+rnr)rcrs` rXrzView._raise_allowed_methodss3PPPPdmPPP"4<#6HHHrW) rQrRrSr0r rrr rrrVrWrXr;r;sx ^    (9S$%>?((((IIIIIIIrWr;c^eZdZdeeddfdZdefdZdeefdZ de de fdZ dS) ResourcesViewrr]Nc||_dSr_ _resources)rcrs rXrdzResourcesView.__init__s #rWc*t|jSr_)rrrfs rXrzResourcesView.__len__s4?###rWc#$K|jEd{VdSr_rrfs rXrzResourcesView.__iter__s&?"""""""""rWrc||jvSr_rrcrs rX __contains__zResourcesView.__contains__s4?**rW) rQrRrSrr4rdr rrrobjectrrrVrWrXrrs$$'7"8$T$$$$$$$$$#(#34####+V+++++++rWrcZeZdZdeefdZdefdZdee fdZ de de fdZ dS) RoutesViewrc\g|_|D]!}|D]}|j|"dSr_)rr)rcrrrs rXrdzRoutesView.__init__sO,. ! + +H! + + ##E**** + + +rWr]c*t|jSr_rrfs rXrzRoutesView.__len__rrWc#$K|jEd{VdSr_rrfs rXrzRoutesView.__iter__s&<rWrc||jvSr_r"rs rXrzRoutesView.__contains__s $$rWN)rQrRrSrr4rdr rrr8rrrrrVrWrXrrs+$'7"8++++ !!!!! (=1    %&%T%%%%%%rWrceZdZejdZd1fd ZdedefdZ de e fdZ de fdZd edefd Zd e defd Zdefd ZdefdZdee effdZd eddfdZddde d ee defdZdddde de deee e!fd ee dee"de#f dZ$dddddddde de%d ee dee"de deded edefd!Z&de ded"e'de#fd#Z(de ded"e'de#fd$Z)dd%d&de ded ee d'ed"e'de#f d(Z*de ded"e'de#fd)Z+de ded"e'de#fd*Z,de ded"e'de#fd+Z-de ded"e'de#fd,Z.de de e!d"e'de#fd-Z/d1fd. Z0d/e1e2de3e#fd0Z4xZ5S)2r2z[.:-]r]Ncdtg|_i|_dSr_)rrdr_named_resourcesrs rXrdzUrlDispatcher.__init__s. 24=?rWrnc K|j}t}|jD]+}||d{V\}}||cS||z},|rt t ||St t Sr_)rrrrqrr+r,)rcrnrrrralloweds rXrqzUrlDispatcher.resolves$'EE + +H(0(8(8(A(A"A"A"A"A"A"A J%!!!!7*  2!"6v"O"OPP P!,..11 1rWc*t|jSr_)rr&rfs rXrzUrlDispatcher.__iter__ sD)***rWc*t|jSr_)rr&rfs rXrzUrlDispatcher.__len__ s4()))rWrc||jvSr_r&rs rXrzUrlDispatcher.__contains__s4000rWr\c|j|Sr_r,rbs rX __getitem__zUrlDispatcher.__getitem__s$T**rWc*t|jSr_)rrrfs rXrzUrlDispatcher.resourcessT_---rWc*t|jSr_)rrrfs rXrKzUrlDispatcher.routess$/***rWc*t|jSr_)rr&rfs rXnamed_resourceszUrlDispatcher.named_resourcess 5666rWc6t|ts Jd||jrtd|j}||j|}|D]_}tj|rtd|d| s"td |`||j vr.td ||j |||j |<|j |dS)Nz4Instance of AbstractResource class is required, got z.Cannot register a resource into frozen router.zIncorrect route name z/, python keywords cannot be used for route namezoIncorrect route name {!r}, the name should be a sequence of python identifiers separated by dash, dot or columnz'Duplicate {!r}, already handled by {!r})rr4frozenrr\ NAME_SPLIT_REr%keyword iskeywordr isidentifierrr&rr)rcrr\rCr3s rXregister_resourcezUrlDispatcher.register_resourceso &   O O N( N N O O  ; QOPP P}  &,,T22E  $T**$)))) ((**$128 t,,, ..4fT4;PQU;V.W.W+3D !$ ' x(((((rWr[rFc|r$|dstd|jrB|jd}|j|kr*||rt t |Sd|vsSd|vsOt|s5tt||}| ||St||}| ||S)NrBz)path should be started with / or be emptyr#r$r[) r rrr\r}rr5rAsearchr6r,r9r7)rcrFr\rs rX add_resourcezUrlDispatcher.add_resource?s  J,, JHII I ? 0r*H}$$););D)A)A$Hh///t sd{{hood.C.C{$]4%8%8tDDDH  " "8 , , ,O"4d333 x(((rW)r\rrrrc`|||}||||S)Nr[r)r=r)rcrrFrr\rrs rXrzUrlDispatcher.add_routeOs7$$T$55!!&'.!QQQrWrUFrVrJrWrXrYrZc |dsJ|dr |dd}t||||||||} || | S)z^Add static files view. prefix - url prefix path - folder with files rBNr;rV)r rr:r9) rcrJrFr\rrWrXrYrZrs rX add_staticzUrlDispatcher.add_static[s$  %%%%% ??3   !CRC[F!  )!!+)     x(((rWrkc 6|jtj||fi|S)z(Shortcut for add_route with method HEAD.)rr METH_HEADrcrFrrks rXadd_headzUrlDispatcher.add_head}"t~dndGFFvFFFrWc 6|jtj||fi|S)z+Shortcut for add_route with method OPTIONS.)rr METH_OPTIONSrCs rX add_optionszUrlDispatcher.add_optionss#t~d/wII&IIIrWT)r\ allow_headrIc |||}|r|jtj|fi||jtj|fi|S)zShortcut for add_route with method GET. If allow_head is true, another route is added allowing head requests to the same endpoint. r[)r=rr rBMETH_GET)rcrFrr\rIrkrs rXadd_getzUrlDispatcher.add_getsc$$T$55  B H t~w A A& A A A!x!$-CCFCCCrWc 6|jtj||fi|S)z(Shortcut for add_route with method POST.)rr METH_POSTrCs rXadd_postzUrlDispatcher.add_postrErWc 6|jtj||fi|S)z'Shortcut for add_route with method PUT.)rr METH_PUTrCs rXadd_putzUrlDispatcher.add_puts"t~dmT7EEfEEErWc 6|jtj||fi|S)z)Shortcut for add_route with method PATCH.)rr METH_PATCHrCs rX add_patchzUrlDispatcher.add_patchs"t~dotWGGGGGrWc 6|jtj||fi|S)z*Shortcut for add_route with method DELETE.)rr METH_DELETErCs rX add_deletezUrlDispatcher.add_deletes#t~d.gHHHHHrWc 6|jtj||fi|S)z?Shortcut for add_route with ANY methods for a class-based view.)rr rrCs rXadd_viewzUrlDispatcher.add_views$t~dmT7EEfEEErWct|jD]}|dSr_)rrzr)rcrrs rXrzzUrlDispatcher.freezesE   H OO      rWrKcdg}|D]*}|||+|S)zAppend routes to route table. Parameter should be a sequence of RouteDef objects. Returns a list of registered AbstractRoute instances. )extendregister)rcrKregistered_routes route_defs rX add_routeszUrlDispatcher.add_routessD ? ?I  $ $Y%7%7%=%= > > > >  rWr~)6rQrRrSr-r/r5rdr.r3rqrrTrr rrrrr4r.rrrrKrr2r9rr5r=rr&rr#rr8rr'r@rrDrHrLrOrRrUrXrZrzrr1rrarrs@rXr2r2sBJx((M@@@@@@ 2W21D2222 +(3-++++*****1V11111++(8++++.=....+ ++++7.>)>!?7777)*:)t))))B@Dx},#37 R R R R Rw\ 223 R sm R!0 R  R R R R"#37$ %$      sm  !0          DGSG7GcGmGGGGJJgJJJJJJ# DDDDD sm D  DD DDDD&GSG7GcGmGGGGFCF'FSF]FFFFHcHGHsH}HHHHIsIWII IIIIFF"&|"4F@CF FFFF  !*:!; !]@S ! ! ! ! ! ! ! !rWr2r>cztdkr|dd}tj|djS)NrkrmrnFr)r?rqrrrr>s rXrFrFs8f c5)) 9% / / / 88rWc8tj|djSr)rrrFrcs rXr;r;s 9% . . . 33rWcXt|}d|vr|dd}|S)Nrmrn)rFrq)r>rs rXr,r,s2  F e||s++ MrW)trrrrrr6r_r-r contextlibr functoolsrpathlibrtypesrtypingrrr r r r r rrrrrrrrrrrrrrryarlrr yarl_versionrr r!r"r#helpersr$httpr%typedefsr&r'web_exceptionsr(r)r*r+r,web_fileresponser- web_requestr. web_responser/r0 web_routedefr1__all__web_appr<rTBaseDictdictrmapr r%r?rUr/r@rAr.rCrrrEr4ABCr8r3rrr5r6r7rMr:rrNrrrr9rr;rrr2rFr;r,rVrWrXr{s   %%%%%%""""""221111111@@@@@@@@@@''''''''+***** 22222222****** $$$$$$CH~HHH',uSS6Hl6H6M6Mbqb6Q-R-R'S'S eE#s(O$SSS&0bj+''gcl#!+ 1!!% !ry~~%*%%%7)Yx/G%HHI /0#c(: ;""""" """"&,/,/,/,/,/uh7,/,/,/^N3N3N3N3N3CGN3N3N3b@B@B@B@B@B($5@B@B@BF      (     L7 Lt L L L L7"7"7"7"7"7"7"7"x&6&6&6&6&6H&6&6&6RI I I I I hI I I X%2M M M M M ^M M M `) ) ) ) ) ^) ) ) X     37   %(%(%(%(%( !%(%(%(P 6 6 6 6 6 6 6 6 MMMMM2MMM:!)!)!)!)!)M!)!)!)HNNNNN-NNN<IIIII<III( + + + + +E8$45yAQ7R + + +%%%%%/=1I%%%"M!M!M!M!M!NGC1A,A$BM!M!M!`9s9s9999 444444rW