§
    ­˜ºhà«  ã                   óî  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl(m)Z)m*Z+ ddl,m-Z- dd	l m.Z.m/Z/m0Z0 dd
l1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZCmDZD ddlEmFZF dZGerddlHmIZI eeJeJf         ZKneLZKe
jM        dk     re
jN         O                    d¦  «        rePfne
jM        dk     reQfndZR eS eTeU e+jV        d¦  «        dd…         ¦  «        ¦  «        ZWee#eUdf                  eXd<    e	jY        d¦  «        ZZee eJ                  eXd<    e	jY        d¦  «        Z[ee eJ                  eXd<    e	j\        d ¦  «        Z]eeJ         eXd!<   eeAgeeeD                  f         Z^e#ed"         e!eJ         f         Z_ ej`        ej\        d#¬$¦  «        Za G d%„ d&e%d'¬(¦  «        Zb G d)„ d*e"ed+         ¦  «        Zc G d,„ d+e jd        ¦  «        Ze G d-„ d"eKe.¦  «        Zf G d.„ d/ef¦  «        Zgd0eAd1dfd2„Zh G d3„ d4ec¦  «        Zi G d5„ d6ei¦  «        Zj G d7„ d8ei¦  «        Zk G d9„ d:ec¦  «        Zl G d;„ d<el¦  «        Zm G d=„ d>el¦  «        Zn G d?„ d@e jd        ¦  «        Zo G dA„ dBeo¦  «        Zp G dC„ dDep¦  «        Zq G dE„ dFen¦  «        Zr G dG„ dHee¦  «        Zs G dI„ dJee¦  «        Zt G dK„ dLe0¦  «        Zu G dM„ dNe"eec         eec         ¦  «        Zv G dO„ dPe"eee         eee         ¦  «        Zw G dQ„ dRe/eeJecf         ¦  «        ZxdSeJd1eJfdT„ZydSeJd1eJfdU„ZzdSeJd1eJfdV„Z{dS )Wé    N)Úwraps)ÚPath)ÚMappingProxyType)ÚTYPE_CHECKINGÚAnyÚ	AwaitableÚCallableÚ	ContainerÚDictÚFinalÚ	GeneratorÚIterableÚIteratorÚListÚMappingÚNoReturnÚOptionalÚPatternÚSetÚSizedÚTupleÚTypeÚ	TypedDictÚUnionÚcast)ÚURLÚ__version__é   )Úhdrs)ÚAbstractMatchInfoÚAbstractRouterÚAbstractView)ÚDEBUG)ÚHttpVersion11)ÚHandlerÚPathLike)ÚHTTPExceptionÚHTTPExpectationFailedÚHTTPForbiddenÚHTTPMethodNotAllowedÚHTTPNotFound)ÚFileResponse)ÚRequest)ÚResponseÚStreamResponse)ÚAbstractRouteDef)
ÚUrlDispatcherÚUrlMappingMatchInfoÚAbstractResourceÚResourceÚPlainResourceÚDynamicResourceÚAbstractRouteÚResourceRouteÚStaticResourceÚView)ÚApplication)é   é
   Úwin32)r<   é   © ú.é   .ÚYARL_VERSIONz$^[0-9A-Za-z!#\$%&'\*\+\-\.\^_`\|~]+$ÚHTTP_METHOD_REz*(\{[_a-zA-Z][^{}]*(?:\{[^{}]*\}[^{}]*)*\})ÚROUTE_REú/ÚPATH_SEPr2   T)Úquotec                   ó�   — e Zd ZU eed<   eed<   ee         ed<   eed<   eed<   eedf         ed<   ded	<   eed
<   ded<   eed<   dS )Ú	_InfoDictÚpathÚ	formatterÚpatternÚ	directoryÚprefixr7   Úroutesr;   ÚappÚdomainÚAbstractRuleMatchingÚruleÚhttp_exceptionN)	Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   r   r   r'   r@   ó    úa/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/aiohttp/web_urldispatcher.pyrJ   rJ   h   s‰   € € € € € € Ø
€I€I�Ià€N€N�NØ�SŒ\ÐÐÑà€O€O�OØ€K€K�KØ�C˜Ð(Ô)Ð)Ð)Ñ)à	ÐÐÑà€K€K�Kà
 Ð Ð Ñ à!Ð!Ð!Ñ!Ð!Ð!r[   rJ   F)Útotalc                   ód  — e Zd Zddœdee         ddfd„Zedee         fd„¦   «         Zeej	        defd„¦   «         ¦   «         Z
ej	        dedefd	„¦   «         Zej	        d
edefd„¦   «         Zej	        deddfd„¦   «         Zej	        defd„¦   «         Zdd„Zej	        dedefd„¦   «         ZdS )r3   N©Únamer`   Úreturnc                ó   — || _         d S ©N©Ú_name©Úselfr`   s     r\   Ú__init__zAbstractResource.__init__|   s   € ØˆŒ
ˆ
ˆ
r[   c                 ó   — | j         S rc   rd   ©rg   s    r\   r`   zAbstractResource.name   ó
   € àŒzÐr[   c                 ó   — dS )zWExposes the resource's canonical path.

        For example '/foo/bar/{name}'

        Nr@   rj   s    r\   Ú	canonicalzAbstractResource.canonicalƒ   ó   € € € r[   Úkwargsc                 ó   — dS )z2Construct url for resource with additional params.Nr@   )rg   ro   s     r\   Úurl_forzAbstractResource.url_forŒ   rn   r[   Úrequestc              ƒ   ó
   K  — dS )zWResolve resource.

        Return (UrlMappingMatchInfo, allowed_methods) pair.
        Nr@   ©rg   rr   s     r\   ÚresolvezAbstractResource.resolve�   ó
   è è € € € r[   rO   c                 ó   — dS )zWAdd a prefix to processed URLs.

        Required for subapplications support.
        Nr@   ©rg   rO   s     r\   Ú
add_prefixzAbstractResource.add_prefix—   rn   r[   c                 ó   — dS ©z;Return a dict with additional info useful for introspectionNr@   rj   s    r\   Úget_infozAbstractResource.get_infož   rn   r[   c                 ó   — d S rc   r@   rj   s    r\   ÚfreezezAbstractResource.freeze¢   s   € Øˆr[   rK   c                 ó   — dS )z Perform a raw match against pathNr@   ©rg   rK   s     r\   Ú	raw_matchzAbstractResource.raw_match¥   rn   r[   ©ra   N)rV   rW   rX   r   rY   rh   Úpropertyr`   ÚabcÚabstractmethodrm   r   rq   r-   Ú_Resolveru   ry   rJ   r|   r~   Úboolr�   r@   r[   r\   r3   r3   {   s¹  € € € € € Ø04ð ð ð  ¨¤ð ¸ð ð ð ð ð ð�h˜s”mð ð ð ñ „Xðð ØÔð˜3ð ð ð ñ Ôñ „Xðð 	ÔðA ð A¨ð Að Að Añ ÔðAð 	Ôð Wð °ð ð ð ñ Ôðð 	Ôð ð ¨ð ð ð ñ Ôðð 	ÔðJ˜)ð Jð Jð Jñ ÔðJðð ð ð ð 	Ôð/˜cð / dð /ð /ð /ñ Ôð/ð /ð /r[   r3   r7   c                   óx  — e Zd Zdddœdedeeee         f         dee	         dee
         ddf
d„Zedefd	„¦   «         Zedefd
„¦   «         Zeej        dee         fd„¦   «         ¦   «         Zedee
         fd„¦   «         Zej        defd„¦   «         Zej        dededefd„¦   «         Zdedee         fd„ZdS )r7   N©Úexpect_handlerÚresourceÚmethodÚhandlerrŠ   r‹   ra   c                óB  ‡— |€t           }t          j        |¦  «        s1t          j        dk     rt          j        |¦  «        sJ d|›�¦   «         ‚|                     ¦   «         }t                               |¦  «        st          |› d�¦  «        ‚t          |¦  «        s
J |¦   «         ‚t          j        |¦  «        s$t          j        dk     rt          j        |¦  «        rn¡t          j        |¦  «        rt          j        dt          ¦  «         nrt          |t           ¦  «        rt#          |t$          ¦  «        rnGt          j        dt          ¦  «         t'          |¦  «        dt(          dt*          fˆfd„¦   «         }|Š|}|| _        || _        || _        || _        d S )	N)r<   é   zCoroutine is expected, got z is not allowed HTTP methodz6Bare generators are deprecated, use @coroutine wrapperz-Bare functions are deprecated, use async onesrr   ra   c              “   óˆ   •K  —  ‰| ¦  «        }t          j        |¦  «        r|ƒ d {V —†}t          |t          ¦  «        sJ ‚|S rc   )ÚasyncioÚiscoroutineÚ
isinstancer/   )rr   ÚresultÚold_handlers     €r\   Úhandler_wrapperz/AbstractRoute.__init__.<locals>.handler_wrapperÐ   sU   øè è € à$˜ WÑ-Ô-�ÝÔ& vÑ.Ô.ð *Ø#)˜\˜\˜\˜\˜\˜\�FÝ! &­.Ñ9Ô9Ð9Ð9Ð9Ø�r[   )Ú_default_expect_handlerÚinspectÚiscoroutinefunctionÚsysÚversion_infor‘   ÚupperrD   ÚmatchÚ
ValueErrorÚcallableÚisgeneratorfunctionÚwarningsÚwarnÚDeprecationWarningr“   ÚtypeÚ
issubclassr"   r   r-   r/   Ú_methodÚ_handlerÚ_expect_handlerÚ	_resource)rg   rŒ   r�   rŠ   r‹   r–   r•   s         @r\   rh   zAbstractRoute.__init__«   sÆ  ø€ ð Ð!Ý4ˆNåÔ*¨>Ñ:Ô:ð 	<ÝÔ˜wÒ&Ð&­7Ô+FÀ~Ñ+VÔ+VÐ&Ð&Ø;¨Ð;Ð;ñ 'Ô&Ð&ð —’‘”ˆÝ×#Ò# FÑ+Ô+ð 	EÝ ÐCÐCÐCÑDÔDÐDå˜Ñ Ô Ð)Ð) 'Ñ)Ô)Ð)ÝÔ& wÑ/Ô/ð 	&ÝÔ˜wÒ&Ð&­7Ô+FÀwÑ+OÔ+OÐ&àÝÔ(¨Ñ1Ô1ð 	&ÝŒMØHÝ"ñô ð ð õ ˜¥Ñ&Ô&ð 	&­:°g½|Ñ+LÔ+Lð 	&ØåŒMØ?ÕASñô ð õ �7‰^Œ^ð­wð ½>ð ð ð ð ð ñ Œ^ðð "ˆKØ%ˆGàˆŒØˆŒØ-ˆÔØ!ˆŒˆˆr[   c                 ó   — | j         S rc   )r¦   rj   s    r\   rŒ   zAbstractRoute.methodà   ó
   € àŒ|Ðr[   c                 ó   — | j         S rc   )r§   rj   s    r\   r�   zAbstractRoute.handlerä   s
   € àŒ}Ðr[   c                 ó   — dS )z8Optional route's name, always equals to resource's name.Nr@   rj   s    r\   r`   zAbstractRoute.nameè   rn   r[   c                 ó   — | j         S rc   )r©   rj   s    r\   r‹   zAbstractRoute.resourceí   s
   € àŒ~Ðr[   c                 ó   — dS r{   r@   rj   s    r\   r|   zAbstractRoute.get_infoñ   rn   r[   Úargsro   c                 ó   — dS )ú/Construct url for route with additional params.Nr@   ©rg   r°   ro   s      r\   rq   zAbstractRoute.url_forõ   rn   r[   rr   c              ƒ   ó<   K  — |                       |¦  «        ƒ d {V —†S rc   )r¨   rt   s     r\   Úhandle_expect_headerz"AbstractRoute.handle_expect_headerù   s,   è è € Ø×)Ò)¨'Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r[   )rV   rW   rX   rY   r   r%   r   r"   r   Ú_ExpectHandlerr3   rh   rƒ   rŒ   r�   r„   r…   r`   r‹   rJ   r|   r   rq   r-   r/   rµ   r@   r[   r\   r7   r7   ª   sÎ  € € € € € ð 48Ø/3ð3"ð 3"ð 3"àð3"ð �w  \Ô 2Ð2Ô3ð3"ð
 ! Ô0ð3"ð Ð+Ô,ð3"ð 
ð3"ð 3"ð 3"ð 3"ðj ð˜ð ð ð ñ „Xðð ð˜ð ð ð ñ „Xðð ØÔðG�h˜s”mð Gð Gð Gñ Ôñ „XðGð ð˜(Ð#3Ô4ð ð ð ñ „Xðð 	ÔðJ˜)ð Jð Jð Jñ ÔðJð 	Ôð>˜Sð >¨Cð >°Cð >ð >ð >ñ Ôð>ð3°'ð 3¸hÀ~Ô>Vð 3ð 3ð 3ð 3ð 3ð 3r[   c                   óJ  ‡ — e Zd ZdZdeeef         deddfˆ fd„Zede	fd„¦   «         Z
edefd„¦   «         Zedefd	„¦   «         Zedee         fd
„¦   «         Zdefd„Zeded         fd„¦   «         Zdd„Zedd„¦   «         Zej        dd„¦   «         Zdd„Zdefˆ fd„Zˆ xZS )r2   )Ú_routeÚ_appsÚ_current_appÚ_frozenÚ
match_dictÚroutera   Nc                 ó‚   •— t          ¦   «                              |¦  «         || _        g | _        d | _        d| _        d S ©NF)Úsuperrh   r¸   r¹   rº   r»   )rg   r¼   r½   Ú	__class__s      €r\   rh   zUrlMappingMatchInfo.__init__  s<   ø€ Ý‰Œ×Ò˜Ñ$Ô$Ð$ØˆŒØ(*ˆŒ
Ø37ˆÔØˆŒˆˆr[   c                 ó   — | j         j        S rc   )r¸   r�   rj   s    r\   r�   zUrlMappingMatchInfo.handler  s   € àŒ{Ô"Ð"r[   c                 ó   — | j         S rc   )r¸   rj   s    r\   r½   zUrlMappingMatchInfo.route  s
   € àŒ{Ðr[   c                 ó   — | j         j        S rc   )r¸   rµ   rj   s    r\   rŠ   z"UrlMappingMatchInfo.expect_handler  s   € àŒ{Ô/Ð/r[   c                 ó   — d S rc   r@   rj   s    r\   rU   z"UrlMappingMatchInfo.http_exception  ó   € àˆtr[   c                 ó4   — | j                              ¦   «         S rc   )r¸   r|   rj   s    r\   r|   zUrlMappingMatchInfo.get_info  s   € ØŒ{×#Ò#Ñ%Ô%Ð%r[   )r;   .c                 ó*   — t          | j        ¦  «        S rc   )Útupler¹   rj   s    r\   ÚappszUrlMappingMatchInfo.apps  s   € å�T”ZÑ Ô Ð r[   rQ   r;   c                 ó„   — | j         rt          d¦  «        ‚| j        €|| _        | j                             d|¦  «         d S )Nz-Cannot change apps stack after .freeze() callr   )r»   ÚRuntimeErrorrº   r¹   Úinsert©rg   rQ   s     r\   Úadd_appzUrlMappingMatchInfo.add_app  sK   € ØŒ<ð 	PÝÐNÑOÔOÐOØÔÐ$Ø #ˆDÔØŒ
×Ò˜!˜SÑ!Ô!Ð!Ð!Ð!r[   c                 ó   — | j         }|€J ‚|S rc   )rº   rÎ   s     r\   Úcurrent_appzUrlMappingMatchInfo.current_app&  s   € àÔˆØˆˆˆØˆ
r[   c                 ó„   — t           r1|| j        vr(t          d                     | j        |¦  «        ¦  «        ‚|| _        d S )Nz1Expected one of the following apps {!r}, got {!r})r#   r¹   rÌ   Úformatrº   rÎ   s     r\   rÑ   zUrlMappingMatchInfo.current_app,  sS   € åð 	Ø˜$œ*Ð$Ð$Ý"ØG×NÒNØœ
 Cñô ñô ð ð
  ˆÔÐÐr[   c                 ó   — d| _         d S )NT)r»   rj   s    r\   r~   zUrlMappingMatchInfo.freeze7  s   € ØˆŒˆˆr[   c                 ó\   •— dt          ¦   «                              ¦   «         › d| j        › d�S )Nz<MatchInfo z: ú>)rÀ   Ú__repr__r¸   ©rg   rÁ   s    €r\   r×   zUrlMappingMatchInfo.__repr__:  s.   ø€ ØA�U™WœW×-Ò-Ñ/Ô/ÐAÐA°4´;ÐAÐAÐAÐAr[   )rQ   r;   ra   N)ra   r;   r‚   )rV   rW   rX   Ú	__slots__r   rY   r7   rh   rƒ   r%   r�   r½   r¶   rŠ   r   r'   rU   rJ   r|   r   rÊ   rÏ   rÑ   Úsetterr~   r×   Ú__classcell__©rÁ   s   @r\   r2   r2   ý   sä  ø€ € € € € à>€Ið 4¨¨S¨¤>ð ¸-ð ÈDð ð ð ð ð ð ð ð#˜ð #ð #ð #ñ „Xð#ð ð�}ð ð ð ñ „Xðð ð0 ð 0ð 0ð 0ñ „Xð0ð ð ¨Ô 7ð ð ð ñ „Xðð&˜)ð &ð &ð &ð &ð ð!�eÐ.Ô/ð !ð !ð !ñ „Xð!ð"ð "ð "ð "ð ðð ð ñ „Xðð
 Ôð ð  ð  ñ Ôð ðð ð ð ðB˜#ð Bð Bð Bð Bð Bð Bð Bð Bð Bð Br[   c                   óT   ‡ — e Zd ZdZdeddfˆ fd„Zedefd„¦   «         Zdefd„Z	ˆ xZ
S )ÚMatchInfoError©Ú
_exceptionrU   ra   Nc                 ó~   •— || _         t          ¦   «                              i t          | j         ¦  «        ¦  «         d S rc   )rà   rÀ   rh   ÚSystemRoute©rg   rU   rÁ   s     €r\   rh   zMatchInfoError.__init__B  s4   ø€ Ø(ˆŒÝ‰Œ×Ò˜�[¨¬Ñ9Ô9Ñ:Ô:Ð:Ð:Ð:r[   c                 ó   — | j         S rc   rß   rj   s    r\   rU   zMatchInfoError.http_exceptionF  ó
   € àŒÐr[   c                 óV   — d                      | j        j        | j        j        ¦  «        S )Nz<MatchInfoError {}: {}>)rÓ   rà   ÚstatusÚreasonrj   s    r\   r×   zMatchInfoError.__repr__J  s)   € Ø(×/Ò/ØŒOÔ" D¤OÔ$:ñ
ô 
ð 	
r[   )rV   rW   rX   rÙ   r'   rh   rƒ   rU   rY   r×   rÛ   rÜ   s   @r\   rÞ   rÞ   >  s’   ø€ € € € € à€Ið; }ð ;¸ð ;ð ;ð ;ð ;ð ;ð ;ð ð ð ð ð ñ „Xðð
˜#ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r[   rÞ   rr   ra   c              ƒ   ó&  K  — | j                              t          j        d¦  «        }| j        t
          k    rY|                     ¦   «         dk    r.| j                             d¦  «        ƒ d{V —† d| j        _	        dS t          d|z  ¬¦  «        ‚dS )z™Default handler for Expect header.

    Just send "100 Continue" to client.
    raise HTTPExpectationFailed if value of header is not "100-continue"
    Ú z100-continues   HTTP/1.1 100 Continue

Nr   zUnknown Expect: %s)Útext)ÚheadersÚgetr   ÚEXPECTÚversionr$   ÚlowerÚwriterÚwriteÚoutput_sizer(   )rr   Úexpects     r\   r—   r—   P  s™   è è € ð Œ_× Ò ¥¤¨bÑ1Ô1€FØ„�-Ò'Ð'Ø�<Š<‰>Œ>˜^Ò+Ð+Ø”.×&Ò&Ð'GÑHÔHÐHÐHÐHÐHÐHÐHÐHà)*ˆGŒNÔ&Ð&Ð&å'Ð-AÀFÑ-JÐKÑKÔKÐKð (Ð'r[   c            	       ó  ‡ — e Zd Zddœdee         ddfˆ fd„Zddœdedeee         e	f         d	ee
         dd
fd„Zdd„Zdedefd„Zej        dedeeeef                  fd„¦   «         Zdefd„Zded
         fd„Zˆ xZS )r4   Nr_   r`   ra   c                óŽ   •— t          ¦   «                              |¬¦  «         i | _        d | _        t	          ¦   «         | _        d S )Nr_   )rÀ   rh   Ú_routesÚ
_any_routeÚsetÚ_allowed_methods)rg   r`   rÁ   s     €r\   rh   zResource.__init__a  s>   ø€ Ý‰Œ×Ò˜dÐÑ#Ô#Ð#Ø13ˆŒØ37ˆŒÝ*-©%¬%ˆÔÐÐr[   ©rŠ   rŒ   r�   rŠ   r8   c                óÊ   — | j                              || j        ¦  «        x}rt          d|j        › d�¦  «        ‚t          ||| |¬¦  «        }|                      |¦  «         |S )Nz+Added route will never be executed, method z is already registeredrû   )r÷   rí   rø   rÌ   rŒ   r8   Úregister_route)rg   rŒ   r�   rŠ   r½   Ú	route_objs         r\   Ú	add_routezResource.add_routeg  s‚   € ð ”L×$Ò$ V¨T¬_Ñ=Ô=Ð=ˆ5ð 	ÝðØœ,ðð ð ñô ð õ " &¨'°4ÈÐWÑWÔWˆ	Ø×Ò˜IÑ&Ô&Ð&ØÐr[   r½   c                 óÞ   — t          |t          ¦  «        sJ d|›�¦   «         ‚|j        t          j        k    r|| _        | j                             |j        ¦  «         || j        |j        <   d S )Nz)Instance of Route class is required, got )	r“   r8   rŒ   r   ÚMETH_ANYrø   rú   Úaddr÷   ©rg   r½   s     r\   rý   zResource.register_routey  s‚   € ÝØ•=ñ
ô 
ð 	Að 	Aà@°uÐ@Ð@ñ	Aô 	Að 	Að Œ<�4œ=Ò(Ð(Ø#ˆDŒOØÔ×!Ò! %¤,Ñ/Ô/Ð/Ø%*ˆŒ�U”\Ñ"Ð"Ð"r[   rr   c              ƒ   óö   K  — |                       |j        j        ¦  «        x}€d t          ¦   «         fS | j                             |j        | j        ¦  «        x}rt          ||¦  «        | j	        fS d | j	        fS rc   )
Ú_matchÚrel_urlÚ	path_saferù   r÷   rí   rŒ   rø   r2   rú   )rg   rr   r¼   r½   s       r\   ru   zResource.resolve‚  sz   è è € ØŸ+š+ g¤oÔ&?Ñ@Ô@Ð@ˆJÐIØ�™œ�;ÐØ”L×$Ò$ W¤^°T´_ÑEÔEÐEˆ5ð 	QÝ& z°5Ñ9Ô9¸4Ô;PÐPÐPØ�TÔ*Ð*Ð*r[   rK   c                 ó   — d S rc   r@   r€   s     r\   r  zResource._match‰  s   € àˆr[   c                 ó*   — t          | j        ¦  «        S rc   ©Úlenr÷   rj   s    r\   Ú__len__zResource.__len__�  ó   € Ý�4”<Ñ Ô Ð r[   c                 óN   — t          | j                             ¦   «         ¦  «        S rc   ©Úiterr÷   Úvaluesrj   s    r\   Ú__iter__zResource.__iter__�  ó   € Ý�D”L×'Ò'Ñ)Ô)Ñ*Ô*Ð*r[   )r½   r8   ra   N)rV   rW   rX   r   rY   rh   r   r   r"   r%   r¶   rÿ   rý   r-   r†   ru   r„   r…   r   r  Úintr  r   r  rÛ   rÜ   s   @r\   r4   r4   `  si  ø€ € € € € Ø04ð 0ð 0ð 0 ¨¤ð 0¸ð 0ð 0ð 0ð 0ð 0ð 0ð 48ðð ð àðð �t˜LÔ)¨7Ð2Ô3ðð
 ! Ô0ðð 
ðð ð ð ð$+ð +ð +ð +ð+ Wð +°ð +ð +ð +ð +ð 	Ôð˜3ð  8¨D°°c°¬NÔ#;ð ð ð ñ Ôðð!˜ð !ð !ð !ð !ð+˜( ?Ô3ð +ð +ð +ð +ð +ð +ð +ð +r[   r4   c                   óÒ   ‡ — e Zd Zddœdedee         ddfˆ fd„Zedefd„¦   «         Zdd„Zd	eddfd
„Z	dedee
eef                  fd„Zdedefd„Zdefd„Zdefd„Zdefd„Zˆ xZS )r5   Nr_   rK   r`   ra   c                óŒ   •— t          ¦   «                              |¬¦  «         |r|                     d¦  «        sJ ‚|| _        d S )Nr_   rF   )rÀ   rh   Ú
startswithÚ_path)rg   rK   r`   rÁ   s      €r\   rh   zPlainResource.__init__—  sF   ø€ Ý‰Œ×Ò˜dÐÑ#Ô#Ð#ØÐ/˜4Ÿ?š?¨3Ñ/Ô/Ð/Ð/Ð/ØˆŒ
ˆ
ˆ
r[   c                 ó   — | j         S rc   ©r  rj   s    r\   rm   zPlainResource.canonicalœ  rk   r[   c                 ó&   — | j         s	d| _         d S d S )NrF   r  rj   s    r\   r~   zPlainResource.freeze   s!   € ØŒzð 	ØˆDŒJˆJˆJð	ð 	r[   rO   c                 óª   — |                      d¦  «        sJ ‚|                     d¦  «        rJ ‚t          |¦  «        dk    sJ ‚|| j        z   | _        d S ©NrF   r   )r  Úendswithr  r  rx   s     r\   ry   zPlainResource.add_prefix¤  sY   € Ø× Ò  Ñ%Ô%Ð%Ð%Ð%Ø—?’? 3Ñ'Ô'Ð'Ð'Ð'Ý�6‰{Œ{˜QŠˆˆˆØ˜dœjÑ(ˆŒ
ˆ
ˆ
r[   c                 ó    — | j         |k    ri S d S rc   r  r€   s     r\   r  zPlainResource._matchª  s   € àŒ:˜ÒÐØˆIØˆtr[   c                 ó   — | j         |k    S rc   r  r€   s     r\   r�   zPlainResource.raw_match°  s   € ØŒz˜TÒ!Ð!r[   c                 ó   — d| j         iS )NrK   r  rj   s    r\   r|   zPlainResource.get_info³  s   € Ø˜œ
Ð#Ð#r[   c                 ó8   — t          j        | j        d¬¦  «        S )NT©rK   Úencoded)r   Úbuildr  rj   s    r\   rq   zPlainResource.url_for¶  s   € ÝŒy˜dœj°$Ð7Ñ7Ô7Ð7r[   c                 óJ   — | j         �d| j         z   dz   nd}d|› d| j        › d�S )Nú'ú' rê   z<PlainResource ú rÖ   )r`   r  rf   s     r\   r×   zPlainResource.__repr__¹  s9   € Ø)-¬Ð)>ˆs�T”Y‰ Ñ%Ð%ÀBˆØ5 Ð5Ð5¨¬
Ð5Ð5Ð5Ð5r[   r‚   )rV   rW   rX   rY   r   rh   rƒ   rm   r~   ry   r   r  r‡   r�   rJ   r|   r   rq   r×   rÛ   rÜ   s   @r\   r5   r5   –  sb  ø€ € € € € Ø;?ð ð ð ˜Sð ¨8°C¬=ð ÀDð ð ð ð ð ð ð
 ð˜3ð ð ð ñ „Xððð ð ð ð) ð )¨ð )ð )ð )ð )ð˜3ð  8¨D°°c°¬NÔ#;ð ð ð ð ð"˜cð " dð "ð "ð "ð "ð$˜)ð $ð $ð $ð $ð8˜ð 8ð 8ð 8ð 8ð6˜#ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6r[   r5   c                   ó  ‡ — e Zd Z ej        d¦  «        Z ej        d¦  «        ZdZddœdede	e         ddfˆ fd	„Z
edefd
„¦   «         Zdeddfd„Zdede	eeef                  fd„Zdedefd„Zdefd„Zdedefd„Zdefd„Zˆ xZS )r6   z#\{(?P<var>[_a-zA-Z][_a-zA-Z0-9]*)\}z.\{(?P<var>[_a-zA-Z][_a-zA-Z0-9]*):(?P<re>.+)\}z[^{}/]+Nr_   rK   r`   ra   c                óÖ  •— t          ¦   «                              |¬¦  «         || _        d}d}t                               |¦  «        D �]}| j                             |¦  «        }|rP|d                     |                     d¦  «        | j	        ¦  «        z  }|d|                     d¦  «        z   dz   z  }Œo| j
                             |¦  «        }|rA| dj        di |                     ¦   «         ¤Žz  }|d|                     d¦  «        z   dz   z  }ŒÌd|v sd|v rt          d|› d	|› d
�¦  «        ‚t          |¦  «        }||z  }|t          j        |¦  «        z  }�Œ	 t          j        |¦  «        }n-# t          j        $ r}t          d|› d|› �¦  «        d ‚d }~ww xY w|j                             t(          ¦  «        sJ ‚|                     d¦  «        sJ ‚|| _        || _        d S )Nr_   rê   z
(?P<{}>{})ÚvarÚ{Ú}z(?P<{var}>{re})zInvalid path 'z'['z']zBad pattern 'z': rF   r@   )rÀ   rh   Ú
_orig_pathrE   ÚsplitÚDYNÚ	fullmatchrÓ   ÚgroupÚGOODÚDYN_WITH_REÚ	groupdictrž   Ú_requote_pathÚreÚescapeÚcompileÚerrorrM   r  rG   Ú_patternÚ
_formatter)
rg   rK   r`   rM   rL   Úpartr�   ÚcompiledÚexcrÁ   s
            €r\   rh   zDynamicResource.__init__Ä  s   ø€ Ý‰Œ×Ò˜dÐÑ#Ô#Ð#ØˆŒØˆØˆ	Ý—N’N 4Ñ(Ô(ð 	'ñ 	'ˆDØ”H×&Ò& tÑ,Ô,ˆEØð Ø˜<×.Ò.¨u¯{ª{¸5Ñ/AÔ/AÀ4Ä9ÑMÔMÑM�Ø˜S 5§;¢;¨uÑ#5Ô#5Ñ5¸Ñ;Ñ;�	ØàÔ$×.Ò.¨tÑ4Ô4ˆEØð ØÐ3Ð,Ô3ÐHÐH°e·o²oÑ6GÔ6GÐHÐHÑH�Ø˜S 5§;¢;¨uÑ#5Ô#5Ñ5¸Ñ;Ñ;�	Øà�dˆ{ˆ{˜c T˜k˜kÝ Ð!C°$Ð!CÐ!C¸4Ð!CÐ!CÐ!CÑDÔDÐDå  Ñ&Ô&ˆDØ˜ÑˆIØ•r”y ‘”Ñ&ˆG‰Gð	JÝ”z 'Ñ*Ô*ˆHˆHøÝŒxð 	Jð 	Jð 	JÝÐ>¨WÐ>Ð>¸Ð>Ð>Ñ?Ô?ÀTÐIøøøøð	JøøøàÔ×*Ò*­8Ñ4Ô4Ð4Ð4Ð4Ø×#Ò# CÑ(Ô(Ð(Ð(Ð(Ø ˆŒØ#ˆŒˆˆs   Å!E6 Å6F ÆFÆF c                 ó   — | j         S rc   )r=  rj   s    r\   rm   zDynamicResource.canonicalæ  rå   r[   rO   c                 ó  — |                      d¦  «        sJ ‚|                     d¦  «        rJ ‚t          |¦  «        dk    sJ ‚t          j        t          j        |¦  «        | j        j        z   ¦  «        | _        || j        z   | _        d S r  )	r  r  r  r8  r:  r9  r<  rM   r=  rx   s     r\   ry   zDynamicResource.add_prefixê  s~   € Ø× Ò  Ñ%Ô%Ð%Ð%Ð%Ø—?’? 3Ñ'Ô'Ð'Ð'Ð'Ý�6‰{Œ{˜QŠˆˆˆÝœ
¥2¤9¨VÑ#4Ô#4°t´}Ô7LÑ#LÑMÔMˆŒØ  4¤?Ñ2ˆŒˆˆr[   c                 óž   — | j                              |¦  «        }|€d S d„ |                     ¦   «                              ¦   «         D ¦   «         S )Nc                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r@   )Ú_unquote_path_safe)Ú.0ÚkeyÚvalues      r\   ú
<dictcomp>z*DynamicResource._match.<locals>.<dictcomp>õ  s4   € ð 
ð 
ð 
Ù/9¨s°EˆCÕ# EÑ*Ô*ð
ð 
ð 
r[   )r<  r2  r6  Úitems)rg   rK   r�   s      r\   r  zDynamicResource._matchñ  sX   € Ø”×'Ò'¨Ñ-Ô-ˆØˆ=Ø�4ð
ð 
Ø=B¿_º_Ñ=NÔ=N×=TÒ=TÑ=VÔ=Vð
ñ 
ô 
ð 	
r[   c                 ó   — | j         |k    S rc   )r/  r€   s     r\   r�   zDynamicResource.raw_matchù  s   € ØŒ $Ò&Ð&r[   c                 ó    — | j         | j        dœS )N)rL   rM   )r=  r<  rj   s    r\   r|   zDynamicResource.get_infoü  s   € Ø!œ_¸¼ÐGÐGÐGr[   Úpartsc                 óš   — | j                              d„ |                     ¦   «         D ¦   «         ¦  «        }t          j        |d¬¦  «        S )Nc                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r@   )Ú_quote_path)rF  ÚkÚvs      r\   rI  z+DynamicResource.url_for.<locals>.<dictcomp>   s$   € Ð)VÐ)VÐ)VÁÀÀ1¨!­[¸©^¬^Ð)VÐ)VÐ)Vr[   Tr#  )r=  Ú
format_maprJ  r   r%  )rg   rM  Úurls      r\   rq   zDynamicResource.url_forÿ  sC   € ØŒo×(Ò(Ð)VÐ)VÈÏÊÉÌÐ)VÑ)VÔ)VÑWÔWˆÝŒy˜c¨4Ð0Ñ0Ô0Ð0r[   c                 óf   — | j         �d| j         z   dz   nd}d                     || j        ¬¦  «        S )Nr'  r(  rê   z$<DynamicResource {name} {formatter}>)r`   rL   )r`   rÓ   r=  rf   s     r\   r×   zDynamicResource.__repr__  sB   € Ø)-¬Ð)>ˆs�T”Y‰ Ñ%Ð%ÀBˆØ5×<Ò<Ø ¤ð =ñ 
ô 
ð 	
r[   )rV   rW   rX   r8  r:  r1  r5  r4  rY   r   rh   rƒ   rm   ry   r   r  r‡   r�   rJ   r|   r   rq   r×   rÛ   rÜ   s   @r\   r6   r6   ¾  s„  ø€ € € € € à
ˆ"Œ*Ð;Ñ
<Ô
<€CØ�"”*ÐNÑOÔO€KØ€Dà;?ð  $ð  $ð  $˜Sð  $¨8°C¬=ð  $ÀDð  $ð  $ð  $ð  $ð  $ð  $ðD ð˜3ð ð ð ñ „Xðð3 ð 3¨ð 3ð 3ð 3ð 3ð
˜3ð 
 8¨D°°c°¬NÔ#;ð 
ð 
ð 
ð 
ð'˜cð ' dð 'ð 'ð 'ð 'ðH˜)ð Hð Hð Hð Hð1˜sð 1 sð 1ð 1ð 1ð 1ð
˜#ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r[   r6   c                   óz   ‡ — e Zd Zddœdedee         ddfˆ fd„Zedefd„¦   «         Zdeddfd„Zdede	fd	„Z
ˆ xZS )
ÚPrefixResourceNr_   rO   r`   ra   c                ó  •— |r|                      d¦  «        s
J |¦   «         ‚|dv s|                     d¦  «        r
J |¦   «         ‚t          ¦   «                              |¬¦  «         t	          |¦  «        | _        | j        dz   | _        d S )NrF   )rê   rF   r_   )r  r  rÀ   rh   r7  Ú_prefixÚ_prefix2)rg   rO   r`   rÁ   s      €r\   rh   zPrefixResource.__init__  s�   ø€ ØÐ;˜V×.Ò.¨sÑ3Ô3Ð;Ð;°VÑ;Ô;Ð;Ø˜Ð"Ð"¨&¯/ª/¸#Ñ*>Ô*>Ð"Ð"ÀÑ"Ô"Ð"Ý‰Œ×Ò˜dÐÑ#Ô#Ð#Ý$ VÑ,Ô,ˆŒØœ sÑ*ˆŒˆˆr[   c                 ó   — | j         S rc   )rY  rj   s    r\   rm   zPrefixResource.canonical  r«   r[   c                 óÈ   — |                      d¦  «        sJ ‚|                     d¦  «        rJ ‚t          |¦  «        dk    sJ ‚|| j        z   | _        | j        dz   | _        d S r  )r  r  r  rY  rZ  rx   s     r\   ry   zPrefixResource.add_prefix  sg   € Ø× Ò  Ñ%Ô%Ð%Ð%Ð%Ø—?’? 3Ñ'Ô'Ð'Ð'Ð'Ý�6‰{Œ{˜QŠˆˆˆØ ¤Ñ,ˆŒØœ sÑ*ˆŒˆˆr[   c                 ó   — dS r¿   r@   rx   s     r\   r�   zPrefixResource.raw_match  s   € Øˆur[   )rV   rW   rX   rY   r   rh   rƒ   rm   ry   r‡   r�   rÛ   rÜ   s   @r\   rW  rW  
  sÎ   ø€ € € € € Ø=Að +ð +ð +˜sð +¨X°c¬]ð +Àdð +ð +ð +ð +ð +ð +ð ð˜3ð ð ð ñ „Xðð+ ð +¨ð +ð +ð +ð +ð ð ¨ð ð ð ð ð ð ð ð r[   rW  c                   óB  ‡ — e Zd ZdZdddddddœdededee         d	ee         d
ede	de	de	ddfˆ fd„Z
ddœdedee	         defd„Zededefd„¦   «         Zdefd„Zdeddfd„Zdedefd„Zdefd„Zdee         fd„Zdedefd„Zdedefd„Zdedefd „Zdefd!„Z ˆ xZ!S )"r9   rR  Né   F©r`   rŠ   Ú
chunk_sizeÚ
show_indexÚfollow_symlinksÚappend_versionrO   rN   r`   rŠ   ra  rb  rc  rd  ra   c                óH  •— t          ¦   «                              ||¬¦  «         	 t          |¦  «                             ¦   «                              d¬¦  «        }n&# t
          $ r}	t          d|› d�¦  «        |	‚d }	~	ww xY w|                     ¦   «         st          d|› d�¦  «        ‚|| _        || _	        || _
        || _        || _        || _        t          d| j        | |¬¦  «        t          d	| j        | |¬¦  «        d
œ| _        t#          | j        ¦  «        | _        d S )Nr_   T)Ústrictr'  z' does not existz' is not a directoryÚGETrû   ÚHEAD)rg  rh  )rÀ   rh   r   Ú
expanduserru   ÚFileNotFoundErrorrž   Úis_dirÚ
_directoryÚ_show_indexÚ_chunk_sizeÚ_follow_symlinksr¨   Ú_append_versionr8   Ú_handler÷   rù   rú   )rg   rO   rN   r`   rŠ   ra  rb  rc  rd  r;  rÁ   s             €r\   rh   zStaticResource.__init__&  sU  ø€ õ 	‰Œ×Ò˜ dÐÑ+Ô+Ð+ð	IÝ˜Y™œ×2Ò2Ñ4Ô4×<Ò<ÀDÐ<ÑIÔIˆIˆIøÝ ð 	Ið 	Ið 	IÝÐ< Ð<Ð<Ð<Ñ=Ô=À5ÐHøøøøð	Iøøøà×ÒÑ!Ô!ð 	BÝÐ@ Ð@Ð@Ð@ÑAÔAÐAØ#ˆŒØ%ˆÔØ%ˆÔØ /ˆÔØ-ˆÔØ-ˆÔõ !Ø�t”| T¸.ðñ ô õ "Ø˜œ d¸>ðñ ô ð	
ð 
ˆŒõ !$ D¤LÑ 1Ô 1ˆÔÐÐs   ¦5A Á
A?Á&A:Á:A?)rd  Úfilenamec                ó†  — |€| j         }t          |¦  «                             d¦  «        }t          j        | j        d¬¦  «        }t          dk     r||                     dd¦  «        z  }n||z  }|�rM| j         	                    |¦  «        }	 | j
        r[t          t          j                             |¦  «        ¦  «        }|                     | j        ¦  «         |                     ¦   «         }n.|                     ¦   «         }|                     | j        ¦  «         n# t"          t$          f$ r |cY S w xY w|                     ¦   «         rt|                     d¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |¦  «        }	|                     | j        |	i¦  «        }|S |S )NrF   Tr#  ©r   é   ú%ú%25Úrb)rp  rY   Úlstripr   r%  rY  rC   Úreplacerl  Újoinpathro  r   ÚosrK   ÚnormpathÚrelative_toru   rž   rj  Úis_fileÚopenÚreadÚ_get_file_hashÚ
with_queryÚVERSION_KEY)
rg   rr  rd  rT  Úunresolved_pathÚnormalized_pathÚfilepathÚfÚ
file_bytesÚhs
             r\   rq   zStaticResource.url_forJ  s÷  € ð Ð!Ø!Ô1ˆNÝ�x‘=”=×'Ò'¨Ñ,Ô,ˆåŒi˜Tœ\°4Ð8Ñ8Ô8ˆå˜&Ò Ð Ø˜×(Ò(¨¨eÑ4Ô4Ñ4ˆCˆCà˜‘.ˆCàñ 	Ø"œo×6Ò6°xÑ@Ô@ˆOðØÔ(ð :Ý&*­2¬7×+;Ò+;¸OÑ+LÔ+LÑ&MÔ&M�OØ#×/Ò/°´Ñ@Ô@Ð@Ø.×6Ò6Ñ8Ô8�H�Hà.×6Ò6Ñ8Ô8�HØ×(Ò(¨¬Ñ9Ô9Ð9øøÝÕ 1Ð2ð ð ð ð �
�
�
ðøøøð ×ÒÑ!Ô!ð ð —]’] 4Ñ(Ô(ð *¨AØ!"§¢¡¤�Jð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *à×'Ò'¨
Ñ3Ô3�Ø—n’n dÔ&6¸Ð%:Ñ;Ô;�Ø�
Øˆ
s%   ÂBD  Ä D6Ä5D6Å"FÆFÆ
FÚ
byte_arrayc                 óÈ   — t          j        ¦   «         }|                     | ¦  «         t          j        |                     ¦   «         ¦  «        }|                     d¦  «        S )NÚascii)ÚhashlibÚsha256ÚupdateÚbase64Úurlsafe_b64encodeÚdigestÚdecode)r‹  ÚmÚb64s      r\   r‚  zStaticResource._get_file_hashs  sK   € åŒNÑÔˆØ	�Š�ÑÔÐÝÔ& q§x¢x¡z¤zÑ2Ô2ˆØ�zŠz˜'Ñ"Ô"Ð"r[   c                 ó,   — | j         | j        | j        dœS )N)rN   rO   rP   )rl  rY  r÷   rj   s    r\   r|   zStaticResource.get_infoz  s    € àœØ”lØ”lð
ð 
ð 	
r[   r�   c                 óª   — d| j         v rt          d¦  «        ‚t          d|| | j        ¬¦  «        | j         d<   | j                             d¦  «         d S )NÚOPTIONSzOPTIONS route was set alreadyrû   )r÷   rÌ   r8   r¨   rú   r  )rg   r�   s     r\   Úset_options_routez StaticResource.set_options_route�  sd   € Ø˜œÐ$Ð$ÝÐ>Ñ?Ô?Ð?Ý"/Ø�w °TÔ5Ið#
ñ #
ô #
ˆŒ�YÑð 	Ô×!Ò! )Ñ,Ô,Ð,Ð,Ð,r[   rr   c              ƒ   óJ  K  — |j         j        }|j        }|                     | j        ¦  «        s|| j        k    rd t          ¦   «         fS | j        }||vrd |fS dt          |t          | j        ¦  «        dz   d …         ¦  «        i}t          || j        |         ¦  «        |fS )Nrr  r   )r  r  rŒ   r  rZ  rY  rù   rú   rE  r  r2   r÷   )rg   rr   rK   rŒ   Úallowed_methodsr¼   s         r\   ru   zStaticResource.resolve‰  s®   è è € ØŒÔ(ˆØ”ˆØ�Š˜tœ}Ñ-Ô-ð 	°$¸$¼,Ò2FÐ2FØ�™œ�;ÐàÔ/ˆØ˜Ð(Ð(Ø˜Ð(Ð(à Õ"4°T½#¸d¼lÑ:KÔ:KÈaÑ:OÐ:QÐ:QÔ5RÑ"SÔ"SÐTˆ
Ý# J°´¸VÔ0DÑEÔEÀÐWÐWr[   c                 ó*   — t          | j        ¦  «        S rc   r
  rj   s    r\   r  zStaticResource.__len__–  r  r[   c                 óN   — t          | j                             ¦   «         ¦  «        S rc   r  rj   s    r\   r  zStaticResource.__iter__™  r  r[   c              ƒ   ó  K  — |j         d         }t          |¦  «        }|j        rt          ¦   «         ‚| j                             |¦  «        }t          j        ¦   «         }|                     d | j	        |¦  «        ƒ d {V —†S )Nrr  )
Ú
match_infor   Úanchorr)   rl  r{  r‘   Úget_running_loopÚrun_in_executorÚ_resolve_path_to_response)rg   rr   r  rr  r…  Úloops         r\   rq  zStaticResource._handleœ  s—   è è € ØÔ$ ZÔ0ˆÝ˜‘=”=ˆØŒ?ð 	"õ  ‘/”/Ð!àœ/×2Ò2°8Ñ<Ô<ˆÝÔ'Ñ)Ô)ˆØ×)Ò)Ø�$Ô0°/ñ
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r[   r…  c                 ó†  — 	 | j         r[t          t          j                             |¦  «        ¦  «        }|                     | j        ¦  «         |                     ¦   «         }n.|                     ¦   «         }|                     | j        ¦  «         n*# t          gt          ¢R $ r}t          ¦   «         |‚d}~ww xY w	 |                     ¦   «         r9| j        r$t          |                      |¦  «        d¬¦  «        S t          ¦   «         ‚n!# t           $ r}t          ¦   «         |‚d}~ww xY wt#          || j        ¬¦  «        S )zFTake the unresolved path and query the file system to form a response.Nz	text/html)rë   Úcontent_type)ra  )ro  r   r|  rK   r}  r~  rl  ru   rž   ÚCIRCULAR_SYMLINK_ERRORr+   rk  rm  r.   Ú_directory_as_htmlr)   ÚPermissionErrorr,   rn  )rg   r…  r†  Ú	file_pathr;  s        r\   r¤  z(StaticResource._resolve_path_to_response«  s^  € ð
	,ØÔ$ð 7Ý"&¥r¤w×'7Ò'7¸Ñ'HÔ'HÑ"IÔ"I�Ø×+Ò+¨D¬OÑ<Ô<Ð<Ø+×3Ò3Ñ5Ô5�	�	à+×3Ò3Ñ5Ô5�	Ø×%Ò% d¤oÑ6Ô6Ð6øøÝÐ4Õ3Ð4Ð4ð 	,ð 	,ð 	,õ ‘.”. eÐ+øøøøð	,øøøð
	-Ø×ÒÑ!Ô!ð *ØÔ#ð *Ý#Ø!×4Ò4°YÑ?Ô?Ø%0ðñ ô ð õ
 (™/œ/Ð)ð*øõ ð 	-ð 	-ð 	-Ý‘/”/ uÐ,øøøøð	-øøøõ ˜I°$Ô2BÐCÑCÔCÐCs6   ‚BB ÂB:Â&B5Â5B:Â>>D Ã=D Ä
D*ÄD%Ä%D*Údir_pathc           	      ó²  — |                      ¦   «         sJ ‚|                     | j        ¦  «                             ¦   «         }dt	          |¦  «        › �}d|› d�}g }|                     ¦   «         }t          |¦  «        D ]–}|                     | j        ¦  «                             ¦   «         }t          | j        › d|› �¦  «        }	|                      ¦   «         r|j	        › d�}
n|j	        }
| 
                    d|	› dt	          |
¦  «        › d�¦  «         Œ—d                     d	                     |¦  «        ¦  «        }d
|› d	|› d�}d|› d�}d|› d	|› d�}|S )z"returns directory's index as html.z
Index of /z<h1>z</h1>rF   z<li><a href="z">z	</a></li>z<ul>
{}
</ul>ú
z<body>
z
</body>z<head>
<title>z</title>
</head>z<html>
z
</html>)rk  r~  rl  Úas_posixÚhtml_escapeÚiterdirÚsortedrP  rY  r`   ÚappendrÓ   Újoin)rg   r¬  Úrelative_path_to_dirÚindex_ofÚh1Ú
index_listÚ	dir_indexÚ_fileÚrel_pathÚquoted_file_urlÚ	file_nameÚulÚbodyÚhead_strÚhtmls                  r\   r©  z!StaticResource._directory_as_htmlÎ  s—  € à�ŠÑ Ô Ð Ð Ð à'×3Ò3°D´OÑDÔD×MÒMÑOÔOÐØC¥Ð,@Ñ AÔ AÐCÐCˆØ#�HÐ#Ð#Ð#ˆàˆ
Ø×$Ò$Ñ&Ô&ˆ	Ý˜IÑ&Ô&ð 	ð 	ˆEà×(Ò(¨¬Ñ9Ô9×BÒBÑDÔDˆHÝ)¨T¬\Ð*FÐ*F¸HÐ*FÐ*FÑGÔGˆOð �|Š|‰~Œ~ð 'Ø$œzÐ,Ð,Ð,�	�	à!œJ�	à×ÒØT ÐTÐTµ;¸yÑ3IÔ3IÐTÐTÐTñô ð ð ð ×%Ò% d§i¢i°
Ñ&;Ô&;Ñ<Ô<ˆØ-˜"Ð-Ð- Ð-Ð-Ð-ˆà@ XÐ@Ð@Ð@ˆØ5˜(Ð5Ð5 dÐ5Ð5Ð5ˆàˆr[   c                 ór   — | j         �d| j         z   dz   nd}d                     || j        | j        ¬¦  «        S )Nr'  rê   z/<StaticResource {name} {path} -> {directory!r}>)r`   rK   rN   )r`   rÓ   rY  rl  rf   s     r\   r×   zStaticResource.__repr__î  sG   € Ø(,¬	Ð(=ˆs�T”Y‰ Ñ$Ð$À2ˆØ@×GÒGØ˜DœL°D´Oð Hñ 
ô 
ð 	
r[   )"rV   rW   rX   r„  rY   r&   r   r¶   r  r‡   rh   r   rq   ÚstaticmethodÚbytesr‚  rJ   r|   r%   rš  r-   r†   ru   r  r   r7   r  r/   rq  r   r¤  r©  r×   rÛ   rÜ   s   @r\   r9   r9   #  s_  ø€ € € € € Ø€Kð #Ø37Ø$Ø Ø %Ø$ð"2ð "2ð "2àð"2ð ð"2ð
 �sŒmð"2ð ! Ô0ð"2ð ð"2ð ð"2ð ð"2ð ð"2ð 
ð"2ð "2ð "2ð "2ð "2ð "2ðP *.ð	'ð 'ð 'ð ð'ð ! œð	'ð
 
ð'ð 'ð 'ð 'ðR ð# 5ð #¨Sð #ð #ð #ñ „\ð#ð
˜)ð 
ð 
ð 
ð 
ð-¨ð -°Tð -ð -ð -ð -ðX Wð X°ð Xð Xð Xð Xð!˜ð !ð !ð !ð !ð+˜( =Ô1ð +ð +ð +ð +ð
 Wð 
°ð 
ð 
ð 
ð 
ð!D¸ð !DÀ.ð !Dð !Dð !Dð !DðF¨4ð °Cð ð ð ð ð@
˜#ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r[   r9   c                   ó°   ‡ — e Zd Zdeddddfˆ fd„Zdeddfˆ fd„Zdeddfd„Zd	ed
edefd„Zde	fd„Z
dedefd„Zdefd„Zdee         fd„Zdefd„Zˆ xZS )ÚPrefixedSubAppResourcerO   rQ   r;   ra   Nc                 ó‚   •— t          ¦   «                              |¦  «         || _        |                      |¦  «         d S rc   )rÀ   rh   Ú_appÚ_add_prefix_to_resources)rg   rO   rQ   rÁ   s      €r\   rh   zPrefixedSubAppResource.__init__ö  s<   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒ	Ø×%Ò% fÑ-Ô-Ð-Ð-Ð-r[   c                 ót   •— t          ¦   «                              |¦  «         |                      |¦  «         d S rc   )rÀ   ry   rÉ  )rg   rO   rÁ   s     €r\   ry   z!PrefixedSubAppResource.add_prefixû  s5   ø€ Ý‰Œ×Ò˜6Ñ"Ô"Ð"Ø×%Ò% fÑ-Ô-Ð-Ð-Ð-r[   c                 óÊ   — | j         j        }|                     ¦   «         D ]A}|                     |¦  «         |                     |¦  «         |                     |¦  «         ŒBd S rc   )rÈ  ÚrouterÚ	resourcesÚunindex_resourcery   Úindex_resource)rg   rO   rÌ  r‹   s       r\   rÉ  z/PrefixedSubAppResource._add_prefix_to_resourcesÿ  sr   € Ø”Ô!ˆØ×(Ò(Ñ*Ô*ð 	,ð 	,ˆHð ×#Ò# HÑ-Ô-Ð-Ø×Ò Ñ'Ô'Ð'Ø×!Ò! (Ñ+Ô+Ð+Ð+ð	,ð 	,r[   r°   ro   c                 ó    — t          d¦  «        ‚)Nz3.url_for() is not supported by sub-application root©rÌ   r³   s      r\   rq   zPrefixedSubAppResource.url_for  s   € ÝÐPÑQÔQÐQr[   c                 ó    — | j         | j        dœS )N)rQ   rO   )rÈ  rY  rj   s    r\   r|   zPrefixedSubAppResource.get_info  s   € Ø”y¨D¬LÐ9Ð9Ð9r[   rr   c              ƒ   óö   K  — | j         j                             |¦  «        ƒ d {V —†}|                     | j         ¦  «         t	          |j        t          ¦  «        r|j        j        }nt          ¦   «         }||fS rc   )	rÈ  rÌ  ru   rÏ   r“   rU   r*   rœ  rù   ©rg   rr   r   Úmethodss       r\   ru   zPrefixedSubAppResource.resolve  s}   è è € Øœ9Ô+×3Ò3°GÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<ˆ
Ø×Ò˜4œ9Ñ%Ô%Ð%Ý�jÔ/Õ1EÑFÔFð 	Ø Ô/Ô?ˆGˆGå‘e”eˆGØ˜7Ð"Ð"r[   c                 óX   — t          | j        j                             ¦   «         ¦  «        S rc   )r  rÈ  rÌ  rP   rj   s    r\   r  zPrefixedSubAppResource.__len__  s!   € Ý�4”9Ô#×*Ò*Ñ,Ô,Ñ-Ô-Ð-r[   c                 óX   — t          | j        j                             ¦   «         ¦  «        S rc   )r  rÈ  rÌ  rP   rj   s    r\   r  zPrefixedSubAppResource.__iter__  s!   € Ý�D”IÔ$×+Ò+Ñ-Ô-Ñ.Ô.Ð.r[   c                 óD   — d                      | j        | j        ¬¦  «        S )Nz,<PrefixedSubAppResource {prefix} -> {app!r}>)rO   rQ   )rÓ   rY  rÈ  rj   s    r\   r×   zPrefixedSubAppResource.__repr__  s)   € Ø=×DÒDØ”< T¤Yð Eñ 
ô 
ð 	
r[   )rV   rW   rX   rY   rh   ry   rÉ  r   rq   rJ   r|   r-   r†   ru   r  r  r   r7   r  r×   rÛ   rÜ   s   @r\   rÆ  rÆ  õ  sc  ø€ € € € € ð.˜sð .¨ð .¸4ð .ð .ð .ð .ð .ð .ð
. ð .¨ð .ð .ð .ð .ð .ð .ð,¨sð ,°tð ,ð ,ð ,ð ,ðR˜Sð R¨Cð R°Cð Rð Rð Rð Rð:˜)ð :ð :ð :ð :ð# Wð #°ð #ð #ð #ð #ð.˜ð .ð .ð .ð .ð/˜( =Ô1ð /ð /ð /ð /ð
˜#ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r[   rÆ  c                   ó”   — e Zd Zej        dedefd„¦   «         Zej        defd„¦   «         Z	e
ej        defd„¦   «         ¦   «         ZdS )rS   rr   ra   c              ƒ   ó
   K  — dS )z1Return bool if the request satisfies the criteriaNr@   rt   s     r\   r�   zAbstractRuleMatching.match$  rv   r[   c                 ó   — dS r{   r@   rj   s    r\   r|   zAbstractRuleMatching.get_info(  rn   r[   c                 ó   — dS )zReturn a strNr@   rj   s    r\   rm   zAbstractRuleMatching.canonical,  rn   r[   N)rV   rW   rX   r„   r…   r-   r‡   r�   rJ   r|   rƒ   rY   rm   r@   r[   r\   rS   rS   #  s¯   € € € € € ØÔð@ 7ð @¨tð @ð @ð @ñ Ôð@ð 	ÔðJ˜)ð Jð Jð Jñ ÔðJð ØÔð˜3ð ð ð ñ Ôñ „Xðð ð r[   rS   c                   ó    ‡ — e Zd Z ej        d¦  «        Zdeddfˆ fd„Zedefd„¦   «         Z	dedefd„Z
dedefd	„Zd
edefd„Zdefd„Zˆ xZS )ÚDomainz(?!-)[a-z\d-]{1,63}(?<!-)rR   ra   Nc                 ó|   •— t          ¦   «                              ¦   «          |                      |¦  «        | _        d S rc   )rÀ   rh   Ú
validationÚ_domain)rg   rR   rÁ   s     €r\   rh   zDomain.__init__5  s0   ø€ Ý‰Œ×ÒÑÔÐØ—’ vÑ.Ô.ˆŒˆˆr[   c                 ó   — | j         S rc   ©rá  rj   s    r\   rm   zDomain.canonical9  r«   r[   c                 óâ  ‡ — t          |t          ¦  «        st          d¦  «        ‚|                     d¦  «                             ¦   «         }|st          d¦  «        ‚d|v rt          d¦  «        ‚t          d|z   ¦  «        }|j        €J ‚t          ˆ fd„|j         	                    d¦  «        D ¦   «         ¦  «        st          d¦  «        ‚|j
        d	k    r|j        S |j        › d
|j
        › �S )NzDomain must be strrA   zDomain cannot be emptyz://zScheme not supportedzhttp://c              3   óL   •K  — | ]}‰j                              |¦  «        V — Œd S rc   )Úre_partr2  )rF  Úxrg   s     €r\   ú	<genexpr>z$Domain.validation.<locals>.<genexpr>G  s3   øè è € ÐNÐN°�4”<×)Ò)¨!Ñ,Ô,ÐNÐNÐNÐNÐNÐNr[   zDomain not validéP   ú:)r“   rY   Ú	TypeErrorÚrstriprð   rž   r   Úraw_hostÚallr0  Úport)rg   rR   rT  s   `  r\   rà  zDomain.validation=  sÿ   ø€ Ý˜&¥#Ñ&Ô&ð 	2ÝÐ0Ñ1Ô1Ð1Ø—’˜sÑ#Ô#×)Ò)Ñ+Ô+ˆØð 	5ÝÐ5Ñ6Ô6Ð6Ø�fˆ_ˆ_ÝÐ3Ñ4Ô4Ð4Ý�)˜fÑ$Ñ%Ô%ˆØŒ|Ð'Ð'Ð'ÝÐNÐNÐNÐN°c´l×6HÒ6HÈÑ6MÔ6MÐNÑNÔNÑNÔNð 	1ÝÐ/Ñ0Ô0Ð0ØŒ8�rŠ>ˆ>Ø”<ÐØ”,Ð+Ð+ ¤Ð+Ð+Ð+r[   rr   c              ƒ   ó€   K  — |j                              t          j        ¦  «        }|sdS |                      |¦  «        S r¿   )rì   rí   r   ÚHOSTÚmatch_domain)rg   rr   Úhosts      r\   r�   zDomain.matchM  s>   è è € ØŒ×"Ò"¥4¤9Ñ-Ô-ˆØð 	Ø�5Ø× Ò  Ñ&Ô&Ð&r[   ró  c                 ó<   — |                      ¦   «         | j        k    S rc   )rð   rá  ©rg   ró  s     r\   rò  zDomain.match_domainS  s   € Ø�zŠz‰|Œ|˜tœ|Ò+Ð+r[   c                 ó   — d| j         iS )NrR   rã  rj   s    r\   r|   zDomain.get_infoV  s   € Ø˜$œ,Ð'Ð'r[   )rV   rW   rX   r8  r:  ræ  rY   rh   rƒ   rm   rà  r-   r‡   r�   rò  rJ   r|   rÛ   rÜ   s   @r\   rÞ  rÞ  2  s  ø€ € € € € ØˆbŒjÐ5Ñ6Ô6€Gð/˜sð / tð /ð /ð /ð /ð /ð /ð ð˜3ð ð ð ñ „Xðð, ð ,¨ð ,ð ,ð ,ð ,ð ' 7ð '¨tð 'ð 'ð 'ð 'ð, ð ,¨ð ,ð ,ð ,ð ,ð(˜)ð (ð (ð (ð (ð (ð (ð (ð (r[   rÞ  c                   ót   ‡ — e Zd Z ej        d¦  «        Zdeddfˆ fd„Zedefd„¦   «         Z	dede
fd„Zˆ xZS )	Ú
MaskDomainz(?!-)[a-z\d\*-]{1,63}(?<!-)rR   ra   Nc                 óÚ   •— t          ¦   «                              |¦  «         | j                             dd¦  «                             dd¦  «        }t	          j        |¦  «        | _        d S )NrA   z\.Ú*z.*)rÀ   rh   rá  rz  r8  r:  Ú_mask)rg   rR   ÚmaskrÁ   s      €r\   rh   zMaskDomain.__init__]  sW   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØŒ|×#Ò# C¨Ñ/Ô/×7Ò7¸¸TÑBÔBˆÝ”Z Ñ%Ô%ˆŒ
ˆ
ˆ
r[   c                 ó   — | j         j        S rc   )rû  rM   rj   s    r\   rm   zMaskDomain.canonicalb  s   € àŒzÔ!Ð!r[   ró  c                 ó:   — | j                              |¦  «        d uS rc   )rû  r2  rõ  s     r\   rò  zMaskDomain.match_domainf  s   € ØŒz×#Ò# DÑ)Ô)°Ð5Ð5r[   )rV   rW   rX   r8  r:  ræ  rY   rh   rƒ   rm   r‡   rò  rÛ   rÜ   s   @r\   rø  rø  Z  s¦   ø€ € € € € ØˆbŒjÐ7Ñ8Ô8€Gð&˜sð & tð &ð &ð &ð &ð &ð &ð
 ð"˜3ð "ð "ð "ñ „Xð"ð6 ð 6¨ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6r[   rø  c                   óf   — e Zd Zdeddddfd„Zedefd„¦   «         Zdefd„Z	d	e
defd
„Zdefd„ZdS )ÚMatchedSubAppResourcerT   rQ   r;   ra   Nc                 ód   — t                                | ¦  «         d| _        || _        || _        d S )Nrê   )r3   rh   rY  rÈ  Ú_rule)rg   rT   rQ   s      r\   rh   zMatchedSubAppResource.__init__k  s/   € Ý×!Ò! $Ñ'Ô'Ð'ØˆŒØˆŒ	ØˆŒ
ˆ
ˆ
r[   c                 ó   — | j         j        S rc   )r  rm   rj   s    r\   rm   zMatchedSubAppResource.canonicalq  s   € àŒzÔ#Ð#r[   c                 ó    — | j         | j        dœS )N)rQ   rT   )rÈ  r  rj   s    r\   r|   zMatchedSubAppResource.get_infou  s   € Ø”y¨$¬*Ð5Ð5Ð5r[   rr   c              ƒ   óV  K  — | j                              |¦  «        ƒ d {V —†sd t          ¦   «         fS | j        j                             |¦  «        ƒ d {V —†}|                     | j        ¦  «         t          |j        t          ¦  «        r|j        j
        }nt          ¦   «         }||fS rc   )r  r�   rù   rÈ  rÌ  ru   rÏ   r“   rU   r*   rœ  rÔ  s       r\   ru   zMatchedSubAppResource.resolvex  sµ   è è € Ø”Z×%Ò% gÑ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ð 	Ø�™œ�;ÐØœ9Ô+×3Ò3°GÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<ˆ
Ø×Ò˜4œ9Ñ%Ô%Ð%Ý�jÔ/Õ1EÑFÔFð 	Ø Ô/Ô?ˆGˆGå‘e”eˆGØ˜7Ð"Ð"r[   c                 ó   — d| j         ›d�S )Nz<MatchedSubAppResource -> rÖ   )rÈ  rj   s    r\   r×   zMatchedSubAppResource.__repr__ƒ  s   € Ø:¨D¬IÐ:Ð:Ð:Ð:r[   )rV   rW   rX   rS   rh   rƒ   rY   rm   rJ   r|   r-   r†   ru   r×   r@   r[   r\   r   r   j  s½   € € € € € ðÐ1ð ¸ð È$ð ð ð ð ð ð$˜3ð $ð $ð $ñ „Xð$ð6˜)ð 6ð 6ð 6ð 6ð	# Wð 	#°ð 	#ð 	#ð 	#ð 	#ð;˜#ð ;ð ;ð ;ð ;ð ;ð ;r[   r   c                   óº   ‡ — e Zd ZdZddœdedeeee         f         de	de
e         ddf
ˆ fd	„Zdefd
„Zede
e         fd„¦   «         Zdededefd„Zdefd„Zˆ xZS )r8   zA route with resourceNrû   rŒ   r�   r‹   rŠ   ra   c                óR   •— t          ¦   «                              ||||¬¦  «         d S )Nr‰   )rÀ   rh   )rg   rŒ   r�   r‹   rŠ   rÁ   s        €r\   rh   zResourceRoute.__init__Š  s9   ø€ õ 	‰Œ×ÒØ�G¨NÀXð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r[   c                 óP   — d                      | j        | j        | j        ¬¦  «        S )Nz3<ResourceRoute [{method}] {resource} -> {handler!r})rŒ   r‹   r�   )rÓ   rŒ   r©   r�   rj   s    r\   r×   zResourceRoute.__repr__–  s-   € ØD×KÒKØ”;¨¬ÀÄð Lñ 
ô 
ð 	
r[   c                 ó,   — | j         €d S | j         j        S rc   )r©   r`   rj   s    r\   r`   zResourceRoute.name›  s   € àŒ>Ð!Ø�4ØŒ~Ô"Ð"r[   r°   ro   c                 ó8   — | j         €J ‚ | j         j        |i |¤ŽS )r²   )r©   rq   r³   s      r\   rq   zResourceRoute.url_for¡  s*   € àŒ~Ð)Ð)Ð)Ø%ˆtŒ~Ô% tÐ6¨vÐ6Ð6Ð6r[   c                 óF   — | j         €J ‚| j                              ¦   «         S rc   )r©   r|   rj   s    r\   r|   zResourceRoute.get_info¦  s$   € ØŒ~Ð)Ð)Ð)ØŒ~×&Ò&Ñ(Ô(Ð(r[   )rV   rW   rX   Ú__doc__rY   r   r%   r   r"   r3   r   r¶   rh   r×   rƒ   r`   r   rq   rJ   r|   rÛ   rÜ   s   @r\   r8   r8   ‡  s   ø€ € € € € ØÐð 48ð

ð 

ð 

àð

ð �w  \Ô 2Ð2Ô3ð

ð #ð	

ð ! Ô0ð

ð 
ð

ð 

ð 

ð 

ð 

ð 

ð
˜#ð 
ð 
ð 
ð 
ð
 ð#�h˜s”mð #ð #ð #ñ „Xð#ð
7˜Sð 7¨Cð 7°Cð 7ð 7ð 7ð 7ð
)˜)ð )ð )ð )ð )ð )ð )ð )ð )r[   r8   c                   óÄ   ‡ — e Zd Zdeddfˆ fd„Zdededefd„Zede	e         fd„¦   «         Z
defd	„Zd
edefd„Zedefd„¦   «         Zedefd„¦   «         Zdefd„Zˆ xZS )râ   rU   ra   Nc                 óx   •— t          ¦   «                              t          j        | j        ¦  «         || _        d S rc   )rÀ   rh   r   r  rq  Ú_http_exceptionrã   s     €r\   rh   zSystemRoute.__init__¬  s/   ø€ Ý‰Œ×Ò�œ¨¬Ñ5Ô5Ð5Ø-ˆÔÐÐr[   r°   ro   c                 ó    — t          d¦  «        ‚)Nz).url_for() is not allowed for SystemRouterÑ  r³   s      r\   rq   zSystemRoute.url_for°  s   € ÝÐFÑGÔGÐGr[   c                 ó   — d S rc   r@   rj   s    r\   r`   zSystemRoute.name³  rÆ   r[   c                 ó   — d| j         iS )NrU   ©r  rj   s    r\   r|   zSystemRoute.get_info·  s   € Ø  $Ô"6Ð7Ð7r[   rr   c              ƒ   ó   K  — | j         ‚rc   r  rt   s     r\   rq  zSystemRoute._handleº  s   è è € ØÔ"Ð"r[   c                 ó   — | j         j        S rc   )r  rç   rj   s    r\   rç   zSystemRoute.status½  ó   € àÔ#Ô*Ð*r[   c                 ó   — | j         j        S rc   )r  rè   rj   s    r\   rè   zSystemRoute.reasonÁ  r  r[   c                 ó.   — d                      | ¬¦  «        S )Nz*<SystemRoute {self.status}: {self.reason}>rj   )rÓ   rj   s    r\   r×   zSystemRoute.__repr__Å  s   € Ø;×BÒBÈÐBÑMÔMÐMr[   )rV   rW   rX   r'   rh   rY   r   rq   rƒ   r   r`   rJ   r|   r-   r/   rq  r  rç   rè   r×   rÛ   rÜ   s   @r\   râ   râ   «  sU  ø€ € € € € ð. }ð .¸ð .ð .ð .ð .ð .ð .ðH˜Sð H¨Cð H°Cð Hð Hð Hð Hð ð�h˜s”mð ð ð ñ „Xðð8˜)ð 8ð 8ð 8ð 8ð# Wð #°ð #ð #ð #ð #ð ð+˜ð +ð +ð +ñ „Xð+ð ð+˜ð +ð +ð +ñ „Xð+ðN˜#ð Nð Nð Nð Nð Nð Nð Nð Nr[   râ   c                   óD   — e Zd Zdefd„Zdeedef         fd„Zdefd„Z	dS )r:   ra   c              ƒ   ó6  K  — | j         j        t          j        vr|                      ¦   «          t          | | j         j                             ¦   «         d ¦  «        }|€|                      ¦   «           |¦   «         ƒ d {V —†}t          |t          ¦  «        sJ ‚|S rc   )	rr   rŒ   r   ÚMETH_ALLÚ_raise_allowed_methodsÚgetattrrð   r“   r/   )rg   rŒ   Úrets      r\   Ú_iterz
View._iterÊ  s•   è è € ØŒ<Ô¥d¤mÐ3Ð3Ø×'Ò'Ñ)Ô)Ð)å˜˜tœ|Ô2×8Ò8Ñ:Ô:¸DÑAÔAˆØˆ>Ø×'Ò'Ñ)Ô)Ð)Ø�F‘H”HˆnˆnˆnˆnˆnˆnˆÝ˜#�~Ñ.Ô.Ð.Ð.Ð.Øˆ
r[   Nc                 óN   — |                       ¦   «                              ¦   «         S rc   )r   Ú	__await__rj   s    r\   r"  zView.__await__Õ  s   € Ø�zŠz‰|Œ|×%Ò%Ñ'Ô'Ð'r[   c                 óh   ‡ — ˆ fd„t           j        D ¦   «         }t          ‰ j        j        |¦  «        ‚)Nc                 óX   •— h | ]&}t          ‰|                     ¦   «         ¦  «        ¯$|’Œ'S r@   )Úhasattrrð   )rF  r•  rg   s     €r\   ú	<setcomp>z.View._raise_allowed_methods.<locals>.<setcomp>Ù  s0   ø€ ÐPÐPÐP µw¸tÀQÇWÂWÁYÄYÑ7OÔ7OÐP˜1ÐPÐPÐPr[   )r   r  r*   rr   rŒ   )rg   rœ  s   ` r\   r  zView._raise_allowed_methodsØ  s3   ø€ ØPÐPÐPÐP¥d¤mÐPÑPÔPˆÝ" 4¤<Ô#6¸ÑHÔHÐHr[   )
rV   rW   rX   r/   r   r   r   r"  r   r  r@   r[   r\   r:   r:   É  sx   € € € € € ð	˜^ð 	ð 	ð 	ð 	ð(˜9 S¨$°Ð%>Ô?ð (ð (ð (ð (ðI¨ð Ið Ið Ið Ið Ið Ir[   r:   c                   ó^   — e Zd Zdee         ddfd„Zdefd„Zdee         fd„Z	de
defd„ZdS )	ÚResourcesViewrÍ  ra   Nc                 ó   — || _         d S rc   ©Ú
_resources)rg   rÍ  s     r\   rh   zResourcesView.__init__Þ  s   € Ø#ˆŒˆˆr[   c                 ó*   — t          | j        ¦  «        S rc   )r  r+  rj   s    r\   r  zResourcesView.__len__á  s   € Ý�4”?Ñ#Ô#Ð#r[   c              #   ó$   K  — | j         E d {V —† d S rc   r*  rj   s    r\   r  zResourcesView.__iter__ä  s&   è è € Ø”?Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"r[   r‹   c                 ó   — || j         v S rc   r*  ©rg   r‹   s     r\   Ú__contains__zResourcesView.__contains__ç  s   € Ø˜4œ?Ð*Ð*r[   )rV   rW   rX   r   r3   rh   r  r  r   r  Úobjectr‡   r0  r@   r[   r\   r(  r(  Ý  sš   € € € € € ð$ $Ð'7Ô"8ð $¸Tð $ð $ð $ð $ð$˜ð $ð $ð $ð $ð#˜(Ð#3Ô4ð #ð #ð #ð #ð+ Vð +°ð +ð +ð +ð +ð +ð +r[   r(  c                   óZ   — e Zd Zdee         fd„Zdefd„Zdee	         fd„Z
dedefd„ZdS )	Ú
RoutesViewrÍ  c                 ó\   — g | _         |D ]!}|D ]}| j                              |¦  «         ŒŒ"d S rc   )r÷   r³  )rg   rÍ  r‹   r½   s       r\   rh   zRoutesView.__init__ì  sO   € Ø,.ˆŒØ!ð 	+ð 	+ˆHØ!ð +ð +�Ø”×#Ò# EÑ*Ô*Ð*Ð*ð+ð	+ð 	+r[   ra   c                 ó*   — t          | j        ¦  «        S rc   r
  rj   s    r\   r  zRoutesView.__len__ò  r  r[   c              #   ó$   K  — | j         E d {V —† d S rc   ©r÷   rj   s    r\   r  zRoutesView.__iter__õ  s&   è è € Ø”<ÐÐÐÐÐÐÐÐÐr[   r½   c                 ó   — || j         v S rc   r7  r  s     r\   r0  zRoutesView.__contains__ø  s   € Ø˜œÐ$Ð$r[   N)rV   rW   rX   r   r3   rh   r  r  r   r7   r  r1  r‡   r0  r@   r[   r\   r3  r3  ë  s’   € € € € € ð+ $Ð'7Ô"8ð +ð +ð +ð +ð!˜ð !ð !ð !ð !ð ˜( =Ô1ð  ð  ð  ð  ð% &ð %¨Tð %ð %ð %ð %ð %ð %r[   r3  c                   óú  ‡ — e Zd Z ej        d¦  «        Zd4ˆ fd„Zdedefd„Z	de
e         fd„Zdefd„Zd	edefd
„Zdedefd„Zdefd„Zdefd„Zdeeef         fd„Zd	eddfd„Zd	edefd„Zd	eddfd„Zd	eddfd„Zddœdedee         defd„Z dddœdedede!e"e#e$         f         dee         dee%         de&fd„Z'dddddddœdede(dee         dee%         d ed!ed"ed#edefd$„Z)dede"d%e*de&fd&„Z+dede"d%e*de&fd'„Z,dd(d)œdede"dee         d*ed%e*de&fd+„Z-dede"d%e*de&fd,„Z.dede"d%e*de&fd-„Z/dede"d%e*de&fd.„Z0dede"d%e*de&fd/„Z1dede#e$         d%e*de&fd0„Z2d4ˆ fd1„Z3d2e4e5         de6e&         fd3„Z7ˆ xZ8S )5r1   z[.:-]ra   Nc                 ó€   •— t          ¦   «                              ¦   «          g | _        i | _        i | _        g | _        d S rc   )rÀ   rh   r+  Ú_named_resourcesÚ_resource_indexÚ_matched_sub_app_resourcesrØ   s    €r\   rh   zUrlDispatcher.__init__   s>   ø€ Ý‰Œ×ÒÑÔÐØ24ˆŒØ=?ˆÔØBDˆÔØGIˆÔ'Ð'Ð'r[   rr   c              ƒ   ó   K  — | j         }t          ¦   «         }|j        j        }|rh|                     |d¦  «        D ]+}|                     |¦  «        ƒ d {V —†\  }}|�|c S ||z  }Œ,|dk    rn|                     d¦  «        d         pd}|°h| j        D ]+}|                     |¦  «        ƒ d {V —†\  }}|�|c S ||z  }Œ,|r"t          t          |j
        |¦  «        ¦  «        S t          t          ¦   «         ¦  «        S )Nr@   rF   r   )r<  rù   r  r  rí   ru   Ú
rpartitionr=  rÞ   r*   rŒ   r+   )	rg   rr   Úresource_indexrœ  Úurl_partÚ	candidater¼   Úallowedr‹   s	            r\   ru   zUrlDispatcher.resolve  sW  è è € ØÔ-ˆÝ$'¡E¤Eˆð ”?Ô,ˆØð 		:Ø+×/Ò/°¸"Ñ=Ô=ð /ð /�	Ø,5×,=Ò,=¸gÑ,FÔ,FÐ&FÐ&FÐ&FÐ&FÐ&FÐ&FÑ#�
˜GØÐ)Ø%Ð%Ð%Ð%à# wÑ.�O�OØ˜3ŠˆØØ×*Ò*¨3Ñ/Ô/°Ô2Ð9°cˆHð ð 		:ð& Ô7ð 	+ð 	+ˆHØ(0×(8Ò(8¸Ñ(AÔ(AÐ"AÐ"AÐ"AÐ"AÐ"AÐ"AÑˆJ˜ØÐ%Ø!Ð!Ð!Ð!à 7Ñ*��àð 	YÝ!Õ"6°w´~ÀÑ"WÔ"WÑXÔXÐXå�l™nœnÑ-Ô-Ð-r[   c                 ó*   — t          | j        ¦  «        S rc   )r  r;  rj   s    r\   r  zUrlDispatcher.__iter__0  s   € Ý�DÔ)Ñ*Ô*Ð*r[   c                 ó*   — t          | j        ¦  «        S rc   )r  r;  rj   s    r\   r  zUrlDispatcher.__len__3  s   € Ý�4Ô(Ñ)Ô)Ð)r[   r‹   c                 ó   — || j         v S rc   ©r;  r/  s     r\   r0  zUrlDispatcher.__contains__6  s   € Ø˜4Ô0Ð0Ð0r[   r`   c                 ó   — | j         |         S rc   rG  rf   s     r\   Ú__getitem__zUrlDispatcher.__getitem__9  s   € ØÔ$ TÔ*Ð*r[   c                 ó*   — t          | j        ¦  «        S rc   )r(  r+  rj   s    r\   rÍ  zUrlDispatcher.resources<  s   € Ý˜Tœ_Ñ-Ô-Ð-r[   c                 ó*   — t          | j        ¦  «        S rc   )r3  r+  rj   s    r\   rP   zUrlDispatcher.routes?  s   € Ý˜$œ/Ñ*Ô*Ð*r[   c                 ó*   — t          | j        ¦  «        S rc   )r   r;  rj   s    r\   Únamed_resourceszUrlDispatcher.named_resourcesB  s   € Ý Ô 5Ñ6Ô6Ð6r[   c                 óÂ  — t          |t          ¦  «        sJ d|›�¦   «         ‚| j        rt          d¦  «        ‚|j        }|�½| j                             |¦  «        }|D ]_}t          j        |¦  «        rt          d|›d�¦  «        ‚| 
                    ¦   «         s"t          d                     |¦  «        ¦  «        ‚Œ`|| j        v r.t          d                     || j        |         ¦  «        ¦  «        ‚|| j        |<   | j                             |¦  «         t          |t          ¦  «        r| j                             |¦  «         d S |                      |¦  «         d S )Nz4Instance of AbstractResource class is required, got z.Cannot register a resource into frozen router.zIncorrect 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})r“   r3   ÚfrozenrÌ   r`   ÚNAME_SPLIT_REr0  ÚkeywordÚ	iskeywordrž   ÚisidentifierrÓ   r;  r+  r³  r   r=  rÏ  )rg   r‹   r`   rM  r>  s        r\   Úregister_resourcezUrlDispatcher.register_resourceE  s´  € ÝØÕ&ñ
ô 
ð 	Oð 	OàNÀ(ÐNÐNñ	Oô 	Oð 	Oð Œ;ð 	QÝÐOÑPÔPÐPàŒ}ˆàÐØÔ&×,Ò,¨TÑ2Ô2ˆEØð ð �ÝÔ$ TÑ*Ô*ð Ý$ð)°ð )ð )ð )ñô ð ð
 ×(Ò(Ñ*Ô*ð Ý$ð1÷ 28²¸±´ñ	ô ð ðð �tÔ,Ð,Ð,Ý ð.ß.4ªf°T¸4Ô;PÐQUÔ;VÑ.WÔ.Wñô ð ð +3ˆDÔ! $Ñ'ØŒ×Ò˜xÑ(Ô(Ð(å�hÕ 5Ñ6Ô6ð 	*àÔ+×2Ò2°8Ñ<Ô<Ð<Ð<Ð<à×Ò Ñ)Ô)Ð)Ð)Ð)r[   c                 ó®   — d|j         x}v r4|                     d¦  «        d                              d¦  «        d         }|                     d¦  «        pdS )z9Return a key to index the resource in the resource index.r-  r   rF   )rm   Ú	partitionr?  rì  )rg   r‹   Ú	index_keys      r\   Ú_get_resource_index_keyz%UrlDispatcher._get_resource_index_keyl  s[   € à Ô 2Ð2�9Ð3Ð3ð "×+Ò+¨CÑ0Ô0°Ô3×>Ò>¸sÑCÔCÀAÔFˆIØ×Ò Ñ$Ô$Ð+¨Ð+r[   c                 óŒ   — |                       |¦  «        }| j                             |g ¦  «                             |¦  «         dS )z%Add a resource to the resource index.N)rX  r<  Ú
setdefaultr³  ©rg   r‹   Úresource_keys      r\   rÏ  zUrlDispatcher.index_resourcew  sD   € à×3Ò3°HÑ=Ô=ˆð 	Ô×'Ò'¨°bÑ9Ô9×@Ò@ÀÑJÔJÐJÐJÐJr[   c                 óp   — |                       |¦  «        }| j        |                              |¦  «         dS )z*Remove a resource from the resource index.N)rX  r<  Úremover[  s      r\   rÎ  zUrlDispatcher.unindex_resource  s7   € à×3Ò3°HÑ=Ô=ˆØÔ˜\Ô*×1Ò1°(Ñ;Ô;Ð;Ð;Ð;r[   r_   rK   c                óÄ  — |r$|                      d¦  «        st          d¦  «        ‚| j        rB| j        d         }|j        |k    r*|                     |¦  «        rt          t          |¦  «        S d|v sFd|v sBt                               |¦  «        s(t          ||¬¦  «        }|  
                    |¦  «         |S t          ||¬¦  «        }|  
                    |¦  «         |S )NrF   z)path should be started with / or be emptyéÿÿÿÿr-  r.  r_   )r  rž   r+  r`   r�   r   r4   rE   Úsearchr5   rT  r6   )rg   rK   r`   r‹   s       r\   Úadd_resourcezUrlDispatcher.add_resource„  së   € Øð 	J˜Ÿš¨Ñ,Ô,ð 	JÝÐHÑIÔIÐIàŒ?ð 	0Ø” rÔ*ˆHØŒ} Ò$Ð$¨×);Ò);¸DÑ)AÔ)AÐ$Ý�H hÑ/Ô/Ð/Ø�t��˜s d˜{˜{­h¯oªo¸dÑ.CÔ.C˜{Ý$ T°Ð5Ñ5Ô5ˆHØ×"Ò" 8Ñ,Ô,Ð,ØˆOÝ" 4¨dÐ3Ñ3Ô3ˆØ×Ò˜xÑ(Ô(Ð(Øˆr[   )r`   rŠ   rŒ   r�   rŠ   c                ó`   — |                       ||¬¦  «        }|                     |||¬¦  «        S )Nr_   rû   )rb  rÿ   )rg   rŒ   rK   r�   r`   rŠ   r‹   s          r\   rÿ   zUrlDispatcher.add_route”  s7   € ð ×$Ò$ T°Ð$Ñ5Ô5ˆØ×!Ò! &¨'À.Ð!ÑQÔQÐQr[   r_  Fr`  rO   ra  rb  rc  rd  c          
      óÊ   — |                      d¦  «        sJ ‚|                     d¦  «        r
|dd…         }t          ||||||||¬¦  «        }	|                      |	¦  «         |	S )z^Add static files view.

        prefix - url prefix
        path - folder with files

        rF   Nr`  r`  )r  r  r9   rT  )
rg   rO   rK   r`   rŠ   ra  rb  rc  rd  r‹   s
             r\   Ú
add_staticzUrlDispatcher.add_static   s†   € ð$ × Ò  Ñ%Ô%Ð%Ð%Ð%Ø�?Š?˜3ÑÔð 	!Ø˜C˜R˜C”[ˆFÝ!ØØØØ)Ø!Ø!Ø+Ø)ð	
ñ 	
ô 	
ˆð 	×Ò˜xÑ(Ô(Ð(Øˆr[   ro   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z(Shortcut for add_route with method HEAD.)rÿ   r   Ú	METH_HEAD©rg   rK   r�   ro   s       r\   Úadd_headzUrlDispatcher.add_headÂ  ó"   € àˆtŒ~�dœn¨d°GÐFÐF¸vÐFÐFÐFr[   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z+Shortcut for add_route with method OPTIONS.)rÿ   r   ÚMETH_OPTIONSrh  s       r\   Úadd_optionszUrlDispatcher.add_optionsÆ  s#   € àˆtŒ~�dÔ/°°wÐIÐIÀ&ÐIÐIÐIr[   T)r`   Ú
allow_headrn  c                ó˜   — |                       ||¬¦  «        }|r |j        t          j        |fi |¤Ž  |j        t          j        |fi |¤ŽS )zœShortcut for add_route with method GET.

        If allow_head is true, another
        route is added allowing head requests to the same endpoint.
        r_   )rb  rÿ   r   rg  ÚMETH_GET)rg   rK   r�   r`   rn  ro   r‹   s          r\   Úadd_getzUrlDispatcher.add_getÊ  sc   € ð ×$Ò$ T°Ð$Ñ5Ô5ˆØð 	BØˆHÔ�tœ~¨wÐAÐA¸&ÐAÐAÐAØ!ˆxÔ!¥$¤-°ÐCÐC¸FÐCÐCÐCr[   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z(Shortcut for add_route with method POST.)rÿ   r   Ú	METH_POSTrh  s       r\   Úadd_postzUrlDispatcher.add_postÝ  rj  r[   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z'Shortcut for add_route with method PUT.)rÿ   r   ÚMETH_PUTrh  s       r\   Úadd_putzUrlDispatcher.add_putá  s"   € àˆtŒ~�dœm¨T°7ÐEÐE¸fÐEÐEÐEr[   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z)Shortcut for add_route with method PATCH.)rÿ   r   Ú
METH_PATCHrh  s       r\   Ú	add_patchzUrlDispatcher.add_patchå  s"   € àˆtŒ~�dœo¨t°WÐGÐGÀÐGÐGÐGr[   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z*Shortcut for add_route with method DELETE.)rÿ   r   ÚMETH_DELETErh  s       r\   Ú
add_deletezUrlDispatcher.add_deleteé  s#   € àˆtŒ~�dÔ.°°gÐHÐHÀÐHÐHÐHr[   c                 ó6   —  | j         t          j        ||fi |¤ŽS )z?Shortcut for add_route with ANY methods for a class-based view.)rÿ   r   r  rh  s       r\   Úadd_viewzUrlDispatcher.add_viewí  s$   € ð ˆtŒ~�dœm¨T°7ÐEÐE¸fÐEÐEÐEr[   c                 ó„   •— t          ¦   «                              ¦   «          | j        D ]}|                     ¦   «          Œd S rc   )rÀ   r~   r+  )rg   r‹   rÁ   s     €r\   r~   zUrlDispatcher.freezeó  sE   ø€ Ý‰Œ�ŠÑÔÐØœð 	ð 	ˆHØ�OŠOÑÔÐÐð	ð 	r[   rP   c                 ód   — g }|D ]*}|                      |                     | ¦  «        ¦  «         Œ+|S )z¢Append routes to route table.

        Parameter should be a sequence of RouteDef objects.

        Returns a list of registered AbstractRoute instances.
        )ÚextendÚregister)rg   rP   Úregistered_routesÚ	route_defs       r\   Ú
add_routeszUrlDispatcher.add_routesø  sD   € ð ÐØð 	?ð 	?ˆIØ×$Ò$ Y×%7Ò%7¸Ñ%=Ô%=Ñ>Ô>Ð>Ð>Ø Ð r[   r‚   )9rV   rW   rX   r8  r:  rP  rh   r-   r2   ru   r   rY   r  r  r  r1  r‡   r0  r3   rI  r(  rÍ  r3  rP   r   rM  rT  rX  rÏ  rÎ  r   r4   rb  r   r%   r   r"   r¶   r7   rÿ   r&   re  r   ri  rm  rq  rt  rw  rz  r}  r  r~   r   r0   r   r†  rÛ   rÜ   s   @r\   r1   r1   ü  sˆ  ø€ € € € € à�B”J˜xÑ(Ô(€MðJð Jð Jð Jð Jð Jð'. Wð '.Ð1Dð '.ð '.ð '.ð '.ðR+˜( 3œ-ð +ð +ð +ð +ð*˜ð *ð *ð *ð *ð1 Vð 1°ð 1ð 1ð 1ð 1ð+ ð +Ð(8ð +ð +ð +ð +ð.˜=ð .ð .ð .ð .ð+˜
ð +ð +ð +ð +ð7 ¨Ð.>Ð)>Ô!?ð 7ð 7ð 7ð 7ð%*Ð*:ð %*¸tð %*ð %*ð %*ð %*ðN	,Ð0@ð 	,ÀSð 	,ð 	,ð 	,ð 	,ðKÐ'7ð K¸Dð Kð Kð Kð Kð<Ð)9ð <¸dð <ð <ð <ð <ð
 @Dð ð ð  ð ¨x¸¬}ð Èð ð ð ð ð, #Ø37ð
Rð 
Rð 
Ràð
Rð ð
Rð �w  \Ô 2Ð2Ô3ð	
Rð �sŒmð
Rð ! Ô0ð
Rð 
ð
Rð 
Rð 
Rð 
Rð" #Ø37Ø$Ø Ø %Ø$ð ð  ð  àð ð ð ð
 �sŒmð ð ! Ô0ð ð ð ð ð ð ð ð ð ð 
ð ð  ð  ð  ðDG˜Sð G¨7ð G¸cð GÀmð Gð Gð Gð GðJ ð J¨gð JÀð JÈð Jð Jð Jð Jð #ØðDð Dð DàðDð ðDð
 �sŒmðDð ðDð ðDð 
ðDð Dð Dð Dð&G˜Sð G¨7ð G¸cð GÀmð Gð Gð Gð GðF˜Cð F¨'ð F¸Sð FÀ]ð Fð Fð Fð FðH˜cð H¨Gð H¸sð HÀ}ð Hð Hð Hð HðI˜sð I¨Wð IÀð IÈð Ið Ið Ið IðFØðFØ"& |Ô"4ðFØ@CðFà	ðFð Fð Fð Fðð ð ð ð ð ð

! Ð*:Ô!;ð 
!ÀÀ]Ô@Sð 
!ð 
!ð 
!ð 
!ð 
!ð 
!ð 
!ð 
!r[   r1   rH  c                 óz   — t           dk     r|                      dd¦  «        } t          j        | d¬¦  «        j        S )Nrt  rv  rw  Fr#  )rC   rz  r   r%  Úraw_path©rH  s    r\   rP  rP    s8   € Ý�fÒÐØ—’˜c 5Ñ)Ô)ˆÝŒ9˜%¨Ð/Ñ/Ô/Ô8Ð8r[   c                 ób   — d| vr| S |                       dd¦  «                              dd¦  «        S )Nrv  z%2FrF   rw  )rz  r‰  s    r\   rE  rE    s6   € Ø
�%ÐÐØˆØ�=Š=˜ Ñ$Ô$×,Ò,¨U°CÑ8Ô8Ð8r[   c                 óX   — t          | ¦  «        }d| v r|                     dd¦  «        }|S )Nrv  rw  )rP  rz  )rH  r”   s     r\   r7  r7    s2   € õ ˜ÑÔ€FØ
ˆe€|€|Ø—’  sÑ+Ô+ˆØ€Mr[   )|r„   r‘   r‘  Ú	functoolsrŽ  rÁ  r˜   rQ  r|  r8  rš   r¡   r   Úpathlibr   Útypesr   Útypingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úyarlr   r   Úyarl_versionrê   r   r    r!   r"   Úhelpersr#   Úhttpr$   Útypedefsr%   r&   Úweb_exceptionsr'   r(   r)   r*   r+   Úweb_fileresponser,   Úweb_requestr-   Úweb_responser.   r/   Úweb_routedefr0   Ú__all__Úweb_appr;   rY   ÚBaseDictÚdictr›   Úplatformr  ÚOSErrorrÌ   r¨  rÉ   Úmapr  r0  rC   rZ   r:  rD   rE   r9  rG   r¶   r†   Úpartialr°  rJ   r3   ÚABCr7   r2   rÞ   r—   r4   r5   r6   rW  r9   rÆ  rS   rÞ  rø  r   r8   râ   r:   r(  r3  r1   rP  rE  r7  r@   r[   r\   ú<module>r£     sç  ðØ 
€
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð2 2Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *Ø  Ð  Ð  Ð  Ð  Ð  Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø *Ð *Ð *Ð *Ð *Ð *ð€ð ð Ø$Ð$Ð$Ð$Ð$Ð$à�C˜�HŒ~€H€Hà€Hð Ô˜'Ò!Ð! c¤l×&=Ò&=¸gÑ&FÔ&FÐ!ð €J€JàÔ,¨wÒ6Ð6ˆ,ˆˆ¸Bð ð (- u¨S¨S°Ð6H°lÔ6HÈÑ6MÔ6MÈbÈqÈbÔ6QÑ-RÔ-RÑ'SÔ'S€ˆe�E˜#˜s˜(”OÔ$Ð SÐ SÑ Sà&0 b¤jØ+ñ'ô '€��g˜c”lÔ#ð ð ñ ð !+ ¤
Ø1ñ!ô !€ˆ%�˜”Ô
ð ð ñ ð !�r”y ‘~”~€ˆ%�Œ*Ð %Ð %Ñ %ð ˜7˜) Y¨x¸Ô/GÔ%HÐHÔI€Ø�Ð/Ô0°#°c´(Ð:Ô;€àˆiÔ ¤°4Ð8Ñ8Ô8€ð"ð "ð "ð "ð "�	 ð "ñ "ô "ð "ð&,/ð ,/ð ,/ð ,/ð ,/�u˜h Ô7ñ ,/ô ,/ð ,/ð^P3ð P3ð P3ð P3ð P3�C”Gñ P3ô P3ð P3ðf>Bð >Bð >Bð >Bð >B˜(Ð$5ñ >Bô >Bð >BðB
ð 
ð 
ð 
ð 
Ð(ñ 
ô 
ð 
ð$L¨7ð L°tð Lð Lð Lð Lð 1+ð 1+ð 1+ð 1+ð 1+Ðñ 1+ô 1+ð 1+ðl%6ð %6ð %6ð %6ð %6�Hñ %6ô %6ð %6ðPI
ð I
ð I
ð I
ð I
�hñ I
ô I
ð I
ðXð ð ð ð Ð%ñ ô ð ð2O
ð O
ð O
ð O
ð O
�^ñ O
ô O
ð O
ðd+
ð +
ð +
ð +
ð +
˜^ñ +
ô +
ð +
ð\ð ð ð ð ˜3œ7ñ ô ð ð%(ð %(ð %(ð %(ð %(Ð!ñ %(ô %(ð %(ðP6ð 6ð 6ð 6ð 6�ñ 6ô 6ð 6ð ;ð ;ð ;ð ;ð ;Ð2ñ ;ô ;ð ;ð:!)ð !)ð !)ð !)ð !)�Mñ !)ô !)ð !)ðHNð Nð Nð Nð N�-ñ Nô Nð Nð<Ið Ið Ið Ið Iˆ<ñ Iô Ið Ið(+ð +ð +ð +ð +�E˜8Ð$4Ô5°yÐAQÔ7Rñ +ô +ð +ð%ð %ð %ð %ð %�˜ Ô/°¸=Ô1Iñ %ô %ð %ð"F!ð F!ð F!ð F!ð F!�N G¨CÐ1AÐ,AÔ$Bñ F!ô F!ð F!ðR9�sð 9˜sð 9ð 9ð 9ð 9ð9˜cð 9 cð 9ð 9ð 9ð 9ð˜ð  ð ð ð ð ð ð r[   