§
    ÈtºfÖw  ã                   ó2  — d 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	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mZ ddlmZ dd	lmZ dd
lmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9 d„ Z:de;de8de;fd„Z< G d„ de)j=        ¦  «        Z> G d„ de)j=        ¦  «        Z? G d„ de)j=        ¦  «        Z@ G d„ d e+¦  «        ZA G d!„ d"e+¦  «        ZB G d#„ d$e+¦  «        ZC G d%„ d&e+¦  «        ZD G d'„ d(¦  «        ZEd)ZF G d*„ d+ejG        ejH        ¦  «        ZId,ee	e         eJf         ded-         fd.„ZK ee9¦  «         G d/„ d0¦  «        ¦   «         ZL G d1„ d2e+¦  «        ZMd3„ ZNd4ZO e¦   «         ZP ee9¦  «         G d5„ d6¦  «        ¦   «         ZQ ee9¦  «         G d7„ d8¦  «        ¦   «         ZRh d9£ZS G d:„ d;¦  «        ZT eT¦   «         ZU	 	 dBde8d=e7d>ee;         d?eee#gd@f                  deVf
dA„ZWdS )CzG
twisted.web.util and twisted.web.template merged to avoid cyclic deps
é    N)ÚOrderedDict©Úescape)ÚIOÚAnyÚAnyStrÚCallableÚDictÚListÚMappingÚOptionalÚTupleÚUnionÚcast)ÚhandlerÚmake_parser)ÚAttributesNSImplÚLocator)Úimplementer)ÚDeferred)ÚLogger)Úurlpath)ÚFailure)ÚFilePath)ÚfullyQualifiedName)Úresource)ÚElementÚrenderer)ÚFlattenableÚflattenÚflattenString)ÚCDATAÚCommentÚTagÚslot)ÚIRenderableÚIRequestÚITemplateLoaderc                 ó(   — dt          | ¦  «        › d�S )aK  
    Wraps <pre> tags around some text and HTML-escape it.

    This is here since once twisted.web.html was deprecated it was hard to
    migrate the html.PRE from current code to twisted.web.template.

    For new code consider using twisted.web.template.

    @return: Escaped text wrapped in <pre> tags.
    @rtype: C{str}
    z<pre>z</pre>r   )Útexts    úY/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/web/_template_util.pyÚ_PREr,   ,   s   € ð (•6˜$‘<”<Ð'Ð'Ð'Ð'ó    ÚURLÚrequestÚreturnc                 ó  — t          | t          ¦  «        st          d¦  «        ‚|                     dd¦  «         |                     | ¦  «         ddt          |                      d¦  «        ¦  «                             d¦  «        iz  }|S )a¿  
    Generate a redirect to the given location.

    @param URL: A L{bytes} giving the location to which to redirect.

    @param request: The request object to use to generate the redirect.
    @type request: L{IRequest<twisted.web.iweb.IRequest>} provider

    @raise TypeError: If the type of C{URL} a L{str} instead of L{bytes}.

    @return: A L{bytes} containing HTML which tries to convince the client
        agent
        to visit the new location even if it doesn't respect the I{FOUND}
        response code.  This is intended to be returned from a render method,
        eg::

            def render_GET(self, request):
                return redirectTo(b"http://example.com/", request)
    zURL must be bytess   Content-Types   text/html; charset=utf-8sÀ   
<html>
    <head>
        <meta http-equiv="refresh" content="0;URL=%(url)s">
    </head>
    <body bgcolor="#FFFFFF" text="#000000">
    <a href="%(url)s">click here</a>
    </body>
</html>
s   urlúutf-8)Ú
isinstanceÚbytesÚ	TypeErrorÚ	setHeaderÚredirectr   ÚdecodeÚencode)r.   r/   Úcontents      r+   Ú
redirectTor;   ;   s‘   € õ( �c�5Ñ!Ô!ð -ÝÐ+Ñ,Ô,Ð,Ø×Ò�oÐ'BÑCÔCÐCØ×Ò�SÑÔÐð	ð 	•�s—z’z 'Ñ*Ô*Ñ+Ô+×2Ò2°7Ñ;Ô;ðñ€Gð €Nr-   c                   ó8   ‡ — e Zd ZdZdZdefˆ fd„Zd„ Zd„ Zˆ xZ	S )ÚRedirectz›
    Resource that redirects to a specific URL.

    @ivar url: Redirect target URL to put in the I{Location} response header.
    @type url: L{bytes}
    TÚurlc                 óV   •— t          ¦   «                              ¦   «          || _        d S ©N)ÚsuperÚ__init__r>   )Úselfr>   Ú	__class__s     €r+   rB   zRedirect.__init__n   s$   ø€ Ý‰Œ×ÒÑÔÐØˆŒˆˆr-   c                 ó,   — t          | j        |¦  «        S r@   )r;   r>   )rC   r/   s     r+   ÚrenderzRedirect.renderr   s   € Ý˜$œ( GÑ,Ô,Ð,r-   c                 ó   — | S r@   © ©rC   Únamer/   s      r+   ÚgetChildzRedirect.getChildu   ó   € Øˆr-   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚisLeafr4   rB   rF   rK   Ú__classcell__)rD   s   @r+   r=   r=   d   ss   ø€ € € € € ðð ð €Fð˜Eð ð ð ð ð ð ð-ð -ð -ðð ð ð ð ð ð r-   r=   c                   ó&   — e Zd ZdZdZdedefd„ZdS )ÚParentRedirectuÆ  
    Redirect to the nearest directory and strip any query string.

    This generates redirects like::

        /              â†’  /
        /foo           â†’  /
        /foo?bar       â†’  /
        /foo/          â†’  /foo/
        /foo/bar       â†’  /foo/
        /foo/bar?baz   â†’  /foo/

    However, the generated I{Location} header contains an absolute URL rather
    than a path.

    The response is the same regardless of HTTP method.
    é   r/   r0   c                 óÄ   — t          t          j                             |¦  «                             ¦   «         ¦  «                             d¦  «        }t          ||¦  «        S )zN
        Respond to all requests by redirecting to nearest directory.
        Úascii)Ústrr   ÚURLPathÚfromRequestÚherer9   r;   )rC   r/   r[   s      r+   rF   zParentRedirect.renderŽ   sK   € õ •7”?×.Ò.¨wÑ7Ô7×<Ò<Ñ>Ô>Ñ?Ô?×FÒFÀwÑOÔOˆÝ˜$ Ñ(Ô(Ð(r-   N)rM   rN   rO   rP   rQ   r'   r4   rF   rH   r-   r+   rT   rT   y   sG   € € € € € ðð ð$ €Fð)˜hð )¨5ð )ð )ð )ð )ð )ð )r-   rT   c                   ó4   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚDeferredResourcezT
    I wrap up a Deferred that will eventually result in a Resource
    object.
    rU   c                 óR   — t           j                             | ¦  «         || _        d S r@   )r   ÚResourcerB   Úd)rC   r`   s     r+   rB   zDeferredResource.__init__ž   s$   € ÝÔ×"Ò" 4Ñ(Ô(Ð(ØˆŒˆˆr-   c                 ó   — | S r@   rH   rI   s      r+   rK   zDeferredResource.getChild¢   rL   r-   c                 ó„   — | j                              | j        |¦  «                             | j        |¦  «         ddlm} |S )Nr   )ÚNOT_DONE_YET)r`   ÚaddCallbackÚ_cbChildÚ
addErrbackÚ_ebChildÚtwisted.web.serverrc   )rC   r/   rc   s      r+   rF   zDeferredResource.render¥   sF   € ØŒ×Ò˜4œ=¨'Ñ2Ô2×=Ò=¸d¼mÈWÑUÔUÐUØ3Ð3Ð3Ð3Ð3Ð3àÐr-   c                 óV   — |                      t          j        ||¦  «        ¦  «         d S r@   )rF   r   ÚgetChildForRequest)rC   Úchildr/   s      r+   re   zDeferredResource._cbChild«   s'   € Ø�Š•xÔ2°5¸'ÑBÔBÑCÔCÐCÐCÐCr-   c                 ó0   — |                      |¦  «         d S r@   )ÚprocessingFailed)rC   Úreasonr/   s      r+   rg   zDeferredResource._ebChild®   s   € Ø× Ò  Ñ(Ô(Ð(Ð(Ð(r-   N)
rM   rN   rO   rP   rQ   rB   rK   rF   re   rg   rH   r-   r+   r]   r]   –   ss   € € € € € ðð ð
 €Fðð ð ðð ð ðð ð ðDð Dð Dð)ð )ð )ð )ð )r-   r]   c                   óD   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )Ú_SourceLineElementa  
    L{_SourceLineElement} is an L{IRenderable} which can render a single line of
    source code.

    @ivar number: A C{int} giving the line number of the source code to be
        rendered.
    @ivar source: A C{str} giving the source code to be rendered.
    c                 óL   — t          j        | |¦  «         || _        || _        d S r@   )r   rB   ÚnumberÚsource)rC   Úloaderrr   rs   s       r+   rB   z_SourceLineElement.__init__¼   s'   € ÝÔ˜˜vÑ&Ô&Ð&ØˆŒØˆŒˆˆr-   c                 óJ   —  || j                              dd¦  «        ¦  «        S )zA
        Render the line of source as a child of C{tag}.
        z  u    Â )rs   Úreplace©rC   r/   Útags      r+   Ú
sourceLinez_SourceLineElement.sourceLineÁ   s'   € ð
 ˆs�4”;×&Ò& tÐ-BÑCÔCÑDÔDÐDr-   c                 ó<   —  |t          | j        ¦  «        ¦  «        S )z>
        Render the line number as a child of C{tag}.
        )rX   rr   rw   s      r+   Ú
lineNumberz_SourceLineElement.lineNumberÈ   s   € ð
 ˆs•3�t”{Ñ#Ô#Ñ$Ô$Ð$r-   N)rM   rN   rO   rP   rB   r   ry   r{   rH   r-   r+   rp   rp   ²   sf   € € € € € ðð ðð ð ð
 ðEð Eñ „XðEð ð%ð %ñ „Xð%ð %ð %r-   rp   c                   ó4   — e Zd ZdZd„ Zd„ Zed„ ¦   «         ZdS )Ú_SourceFragmentElementa¾  
    L{_SourceFragmentElement} is an L{IRenderable} which can render several lines
    of source code near the line number of a particular frame object.

    @ivar frame: A L{Failure<twisted.python.failure.Failure>}-style frame object
        for which to load a source line to render.  This is really a tuple
        holding some information from a frame object.  See
        L{Failure.frames<twisted.python.failure.Failure>} for specifics.
    c                 ó>   — t          j        | |¦  «         || _        d S r@   ©r   rB   Úframe©rC   rt   r€   s      r+   rB   z_SourceFragmentElement.__init__Û   ó    € ÝÔ˜˜vÑ&Ô&Ð&ØˆŒ
ˆ
ˆ
r-   c              #   óÆ   K  — | j         d         }| j         d         }t          |dz
  |dz   ¦  «        D ]-}|t          j        ||¦  «                             ¦   «         fV — Œ.dS )a$  
        Find the source line references by C{self.frame} and yield, in source
        line order, it and the previous and following lines.

        @return: A generator which yields two-tuples.  Each tuple gives a source
            line number and the contents of that source line.
        rU   é   N)r€   ÚrangeÚ	linecacheÚgetlineÚrstrip)rC   Úfilenamer{   ÚsnipLineNumbers       r+   Ú_getSourceLinesz&_SourceFragmentElement._getSourceLinesß   sz   è è € ð ”:˜a”=ˆØ”Z ”]ˆ
Ý# J°¡N°JÀ±NÑCÔCð 	Yð 	YˆNØ!¥9Ô#4°X¸~Ñ#NÔ#N×#UÒ#UÑ#WÔ#WÐXÐXÐXÐXÐXð	Yð 	Yr-   c           	   #   óæ   K  — |                       ¦   «         D ]Y\  }}|                     ¦   «         }|| j        d         k    rd}nd}t           |di d|i¤Ž¦  «        }t	          |||¦  «        V — ŒZdS )zý
        Render the source line indicated by C{self.frame} and several
        surrounding lines.  The active line will be given a I{class} of
        C{"snippetHighlightLine"}.  Other lines will be given a I{class} of
        C{"snippetLine"}.
        r„   ÚsnippetHighlightLineÚsnippetLineÚclassNrH   )r‹   Úcloner€   Ú	TagLoaderrp   )rC   r/   rx   r{   ry   ÚnewTagÚcssClassrt   s           r+   ÚsourceLinesz"_SourceFragmentElement.sourceLinesì   s�   è è € ð '+×&:Ò&:Ñ&<Ô&<ð 	Eð 	EÑ"ˆJ˜
Ø—Y’Y‘[”[ˆFØ˜TœZ¨œ]Ò*Ð*Ø1��à(�Ý˜v˜vÐ<Ð<¨°(Ð(;Ð<Ð<Ñ=Ô=ˆFÝ$ V¨Z¸ÑDÔDÐDÐDÐDÐDð	Eð 	Er-   N)rM   rN   rO   rP   rB   r‹   r   r”   rH   r-   r+   r}   r}   Ð   s_   € € € € € ðð ðð ð ðYð Yð Yð ðEð Eñ „XðEð Eð Er-   r}   c                   óp   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	dS )Ú_FrameElementa°  
    L{_FrameElement} is an L{IRenderable} which can render details about one
    frame from a L{Failure<twisted.python.failure.Failure>}.

    @ivar frame: A L{Failure<twisted.python.failure.Failure>}-style frame object
        for which to load a source line to render.  This is really a tuple
        holding some information from a frame object.  See
        L{Failure.frames<twisted.python.failure.Failure>} for specifics.
    c                 ó>   — t          j        | |¦  «         || _        d S r@   r   r�   s      r+   rB   z_FrameElement.__init__	  r‚   r-   c                 ó.   —  || j         d         ¦  «        S )zY
        Render the name of the file this frame references as a child of C{tag}.
        rU   ©r€   rw   s      r+   r‰   z_FrameElement.filename  ó   € ð
 ˆs�4”:˜a”=Ñ!Ô!Ð!r-   c                 óH   —  |t          | j        d         ¦  «        ¦  «        S )zc
        Render the source line number this frame references as a child of
        C{tag}.
        r„   )rX   r€   rw   s      r+   r{   z_FrameElement.lineNumber  s"   € ð ˆs•3�t”z !”}Ñ%Ô%Ñ&Ô&Ð&r-   c                 ó.   —  || j         d         ¦  «        S )zV
        Render the function name this frame references as a child of C{tag}.
        r   r™   rw   s      r+   Úfunctionz_FrameElement.function  rš   r-   c                 óF   — t          t          |¦  «        | j        ¦  «        S )zn
        Render the source code surrounding the line this frame references,
        replacing C{tag}.
        )r}   r‘   r€   rw   s      r+   rs   z_FrameElement.source#  s   € õ &¥i°¡n¤n°d´jÑAÔAÐAr-   N)
rM   rN   rO   rP   rB   r   r‰   r{   r�   rs   rH   r-   r+   r–   r–   þ   sž   € € € € € ðð ðð ð ð ð"ð "ñ „Xð"ð ð'ð 'ñ „Xð'ð ð"ð "ñ „Xð"ð ðBð Bñ „XðBð Bð Br-   r–   c                   ó.   — e Zd ZdZd„ Zed„ ¦   «         ZdS )Ú_StackElementzW
    L{_StackElement} renders an L{IRenderable} which can render a list of frames.
    c                 ó>   — t          j        | |¦  «         || _        d S r@   )r   rB   ÚstackFrames)rC   rt   r¢   s      r+   rB   z_StackElement.__init__1  s#   € ÝÔ˜˜vÑ&Ô&Ð&Ø&ˆÔÐÐr-   c                 ó*   ‡— ˆfd„| j         D ¦   «         S )zW
        Render the list of frames in this L{_StackElement}, replacing C{tag}.
        c                 ón   •— g | ]1}t          t          ‰                     ¦   «         ¦  «        |¦  «        ‘Œ2S rH   )r–   r‘   r�   )Ú.0r€   rx   s     €r+   ú
<listcomp>z(_StackElement.frames.<locals>.<listcomp>:  s@   ø€ ð 
ð 
ð 
Ø=B�M�) C§I¢I¡K¤KÑ0Ô0°%Ñ8Ô8ð
ð 
ð 
r-   )r¢   rw   s     `r+   Úframesz_StackElement.frames5  s1   ø€ ð

ð 
ð 
ð 
ØFJÔFVð
ñ 
ô 
ð 	
r-   N)rM   rN   rO   rP   rB   r   r§   rH   r-   r+   r    r    ,  sH   € € € € € ðð ð'ð 'ð 'ð ð
ð 
ñ „Xð
ð 
ð 
r-   r    c                   óº   — e Zd ZdZdded          fd„Zddee         dee         dee         fd„Zdee         d	ee         ddfd
„Zdee         dee         fd„Z	dS )Ú
_NSContextzL
    A mapping from XML namespaces onto their prefixes in the document.
    NÚparentc                 ó`   — || _         |�t          |j        ¦  «        | _        dS ddi| _        dS )ze
        Pull out the parent's namespaces, if there's no parent then default to
        XML.
        Nz$http://www.w3.org/XML/1998/namespaceÚxml)rª   r   Únss)rC   rª   s     r+   rB   z_NSContext.__init__D  s6   € ð
 ˆŒØÐÝ;FÀvÄzÑ;RÔ;RˆDŒHˆHˆHà>ÀÐFˆDŒHˆHˆHr-   Úkr`   r0   c                 ó8   — | j                              ||¦  «        S )z\
        Get a prefix for a namespace.

        @param d: The default prefix value.
        )r­   Úget)rC   r®   r`   s      r+   r°   z_NSContext.getO  s   € ð Œx�|Š|˜A˜qÑ!Ô!Ð!r-   Úvc                 ó<   — | j                              ||¦  «         dS )zH
        Proxy through to setting the prefix for the namespace.
        N)r­   Ú__setitem__)rC   r®   r±   s      r+   r³   z_NSContext.__setitem__W  s"   € ð 	Œ×Ò˜Q Ñ"Ô"Ð"Ð"Ð"r-   c                 ó6   — | j                              |¦  «        S )zH
        Proxy through to getting the prefix for the namespace.
        )r­   Ú__getitem__)rC   r®   s     r+   rµ   z_NSContext.__getitem__]  s   € ð Œx×#Ò# AÑ&Ô&Ð&r-   r@   )
rM   rN   rO   rP   r   rB   rX   r°   r³   rµ   rH   r-   r+   r©   r©   ?  sÞ   € € € € € ðð ð	Gð 	G˜x¨Ô5ð 	Gð 	Gð 	Gð 	Gð"ð "�X˜c”]ð " x°¤}ð "ÀÈÄð "ð "ð "ð "ð#˜X cœ]ð #¨x¸¬}ð #Àð #ð #ð #ð #ð'˜X cœ]ð '¨x¸¬}ð 'ð 'ð 'ð 'ð 'ð 'r-   r©   z4http://twistedmatrix.com/ns/twisted.web.template/0.1c                   óV  — e Zd ZdZdee         fd„Zdeddfd„Zd"d„Z	d"d	„Z
d
ededdfd„Zdee         deddfd„Zdee         ddfd„Zdeeef         dee         deddfd„Zdeddfd„Zdeeef         dee         ddfd„Zdedededdfd„Zdeddfd„Zd"d„Zd"d„Zd eddfd!„ZdS )#Ú_ToStanzd
    A SAX parser which converts an XML document to the Twisted STAN
    Document Object Model.
    ÚsourceFilenamec                 óH   — || _         t          ¦   «         | _        d| _        dS )zP
        @param sourceFilename: the filename the XML was loaded out of.
        FN)r¸   r©   Ú	prefixMapÚinCDATA)rC   r¸   s     r+   rB   z_ToStan.__init__m  s"   € ð -ˆÔÝ#™œˆŒØˆŒˆˆr-   Úlocatorr0   Nc                 ó   — || _         dS )zY
        Set the document locator, which knows about line and character numbers.
        N)r¼   )rC   r¼   s     r+   ÚsetDocumentLocatorz_ToStan.setDocumentLocatoru  s   € ð ˆŒˆˆr-   c                 óH   — g | _         | j         | _        g | _        g | _        dS )z*
        Initialise the document.
        N)ÚdocumentÚcurrentÚstackÚ
xmlnsAttrs©rC   s    r+   ÚstartDocumentz_ToStan.startDocument{  s&   € ð $&ˆŒØ”}ˆŒØ "ˆŒ
Ø13ˆŒˆˆr-   c                 ó   — dS )z!
        Document ended.
        NrH   rÄ   s    r+   ÚendDocumentz_ToStan.endDocument‡  ó   € € € r-   ÚtargetÚdatac                 ó   — dS )z6
        Processing instructions are ignored.
        NrH   )rC   rÉ   rÊ   s      r+   ÚprocessingInstructionz_ToStan.processingInstructionŒ  rÈ   r-   ÚprefixÚuric                 óä   — t          | j        ¦  «        | _        || j        |<   |t          k    rdS |€| j                             d|f¦  «         dS | j                             d|z  |f¦  «         dS )z×
        Set up the prefix mapping, which maps fully qualified namespace URIs
        onto namespace prefixes.

        This gets called before startElementNS whenever an C{xmlns} attribute
        is seen.
        NÚxmlnszxmlns:%s)r©   rº   ÚTEMPLATE_NAMESPACErÃ   Úappend)rC   rÍ   rÎ   s      r+   ÚstartPrefixMappingz_ToStan.startPrefixMapping‘  s�   € õ $ D¤NÑ3Ô3ˆŒØ$ˆŒ�sÑð Õ$Ò$Ð$ØˆFð ˆ>ØŒO×"Ò" G¨S >Ñ2Ô2Ð2Ð2Ð2àŒO×"Ò" J°Ñ$7¸Ð#=Ñ>Ô>Ð>Ð>Ð>r-   c                 óD   — | j         j        }|€
J d¦   «         ‚|| _         dS )zb
        "Pops the stack" on the prefix mapping.

        Gets called after endElementNS.
        Nz$More prefix mapping ends than starts)rº   rª   )rC   rÍ   rª   s      r+   ÚendPrefixMappingz_ToStan.endPrefixMapping§  s.   € ð ”Ô&ˆØÐ!Ð!Ð#IÑ!Ô!Ð!ØˆŒˆˆr-   ÚnamespaceAndNameÚqnameÚattrsc                 ó8  — | j         }| j                             ¦   «         }| j                             ¦   «         }|\  }}|t          k    r‡|dk    rd}n~|dk    rx	 |d         }	n# t
          $ r d}	Y nw xY wt          |d         |	|||¬¦  «        }
| j                             |
¦  «         | j	                             |
¦  «         |
j
        | _	        dS d}t          |¦  «        }t          |                     ¦   «         ¦  «        D ]!\  }}|\  }}|t          k    rŒ|dk    r|}||= Œ"t          ¦   «         }|                     ¦   «         D ]3\  \  }}}| j                             |¦  «        }|€|}n|› d	|› �}|||<   Œ4|t          k    r˜|d
k    r’| j        st!          dt          › d�¦  «        ‚d|vrt!          dt          › d�¦  «        ‚t#          d||||¬¦  «        }|| j        d         j        |d         <   | j                             |¦  «         |j
        | _	        dS | j        r.|                     t          | j        ¦  «        ¦  «         g | _        |t          k    r#|�!| j        |         }|�| j        |         › d	|› �}t#          |t          t+          t,          t.          t0          t2          f         t2          f         |¦  «        ¦  «        ||||¬¦  «        }| j                             |¦  «         | j	                             |¦  «         |j
        | _	        dS )a]  
        Gets called when we encounter a new xmlns attribute.

        @param namespaceAndName: a (namespace, name) tuple, where name
            determines which type of action to take, if the namespace matches
            L{TEMPLATE_NAMESPACE}.
        @param qname: ignored.
        @param attrs: attributes on the element being started.
        ÚtransparentÚ r%   )NÚdefaultN)NrJ   )rÜ   r‰   r{   ÚcolumnNumberrF   ú:Úattrz<{z}attr> as top-level elementrJ   z }attr> requires a name attribute)rF   r‰   r{   rÝ   éÿÿÿÿ)Ú
attributesrF   r‰   r{   rÝ   )r¸   r¼   ÚgetLineNumberÚgetColumnNumberrÑ   ÚKeyErrorr%   rÂ   rÒ   rÁ   Úchildrenr   ÚlistÚitemsrº   r°   ÚAssertionErrorr$   rá   rÃ   Úupdater   r   r   r4   rX   )rC   rÖ   r×   rØ   r‰   r{   rÝ   ÚnsrJ   rÜ   ÚslrF   Úorderedr®   r±   ÚattrNSÚjustTheNameÚnonTemplateAttrsÚattrNsÚattrNameÚnsPrefixÚattrKeyÚelrÍ   s                           r+   ÚstartElementNSz_ToStan.startElementNS±  s§  € ð  Ô&ˆØ”\×/Ò/Ñ1Ô1ˆ
Ø”|×3Ò3Ñ5Ô5ˆà#‰ˆˆDØÕ#Ò#Ð#Ø�}Ò$Ð$Ø��Ø˜’�ð#à#Ð$5Ô6�G�GøÝð #ð #ð #ð #�G�G�Gð#øøøõ Ø˜.Ô)Ø#Ø%Ø)Ø!-ðñ ô �ð ”
×!Ò! "Ñ%Ô%Ð%Ø”×#Ò# BÑ'Ô'Ð'Ø!œ{�”Ø�àˆå˜eÑ$Ô$ˆÝ˜Ÿš™œÑ)Ô)ð 	ð 	‰DˆAˆqØ"#ÑˆF�KØÕ+Ò+Ð+ØØ˜hÒ&Ð&Ø�Ø˜A�Jøõ '™=œ=ÐØ%,§]¢]¡_¤_ð 	*ð 	*Ñ!ÑˆV�X Ø”~×)Ò)¨&Ñ1Ô1ˆHØÐØ"��à%Ð2Ð2¨Ð2Ð2�Ø()Ð˜WÑ%Ð%àÕ#Ò#Ð#¨°ª¨Ø”:ð å$ØJÕ,ÐJÐJÐJñô ð ð Ð-Ð-Ð-å$ØOÕ,ÐOÐOÐOñô ð õ ØØØ!Ø%Ø)ðñ ô ˆBð CEˆDŒJ�rŒNÔ%Ð&6°vÔ&>Ñ?ØŒJ×Ò˜bÑ!Ô!Ð!Øœ;ˆDŒLØˆFð Œ?ð 	!Ø×#Ò#¥K°´Ñ$@Ô$@ÑAÔAÐAØ ˆDŒOð Õ#Ò#Ð#¨¨Ø”^ BÔ'ˆFØÐ!Øœ.¨Ô,Ð5Ð5¨tÐ5Ð5�ÝØÝ"Ý•W�U¥5­# :Ô.µÐ3Ô4Ð6FÑGÔGñô ð ØØ!Ø%ð	
ñ 	
ô 	
ˆð 	Œ
×Ò˜"ÑÔÐØŒ×Ò˜BÑÔÐØ”{ˆŒˆˆs   ÁA# Á#A2Á1A2Úchc                 óŒ   — | j         r"| j        d                              |¦  «         dS | j                             |¦  «         dS )zm
        Called when we receive some characters.  CDATA characters get passed
        through as is.
        rà   N)r»   rÂ   rÒ   rÁ   )rC   rö   s     r+   Ú
charactersz_ToStan.characters)  sI   € ð
 Œ<ð 	ØŒJ�rŒN×!Ò! "Ñ%Ô%Ð%ØˆFØŒ×Ò˜BÑÔÐÐÐr-   rJ   c                 ó�   — | j                              ¦   «          | j         r| j         d         j        | _        dS | j        | _        dS )z’
        A namespace tag is closed.  Pop the stack, if there's anything left in
        it, otherwise return to the document's namespace.
        rà   N)rÂ   Úpoprå   rÁ   rÀ   )rC   rJ   r×   s      r+   ÚendElementNSz_ToStan.endElementNS3  sA   € ð
 	Œ
�ŠÑÔÐØŒ:ð 	)Øœ: bœ>Ô2ˆDŒLˆLˆLàœ=ˆDŒLˆLˆLr-   ÚpublicIdÚsystemIdc                 ó   — dS ©z#
        DTDs are ignored.
        NrH   )rC   rJ   rü   rý   s       r+   ÚstartDTDz_ToStan.startDTD>  rÈ   r-   Úargsc                 ó   — dS rÿ   rH   )rC   r  s     r+   ÚendDTDz_ToStan.endDTDC  rÈ   r-   c                 óH   — d| _         | j                             g ¦  «         dS )zO
        We're starting to be in a CDATA element, make a note of this.
        TN)r»   rÂ   rÒ   rÄ   s    r+   Ú
startCDATAz_ToStan.startCDATAH  s'   € ð ˆŒØŒ
×Ò˜"ÑÔÐÐÐr-   c                 óº   — d| _         d                     | j                             ¦   «         ¦  «        }| j                             t          |¦  «        ¦  «         dS )z‰
        We're no longer in a CDATA element.  Collect up the characters we've
        parsed and put them in a new CDATA object.
        FrÛ   N)r»   ÚjoinrÂ   rú   rÁ   rÒ   r"   )rC   Úcomments     r+   ÚendCDATAz_ToStan.endCDATAO  sJ   € ð
 ˆŒØ—'’'˜$œ*Ÿ.š.Ñ*Ô*Ñ+Ô+ˆØŒ×Ò�E '™NœNÑ+Ô+Ð+Ð+Ð+r-   r:   c                 óT   — | j                              t          |¦  «        ¦  «         dS )z=
        Add an XML comment which we've encountered.
        N)rÁ   rÒ   r#   )rC   r:   s     r+   r  z_ToStan.commentX  s(   € ð 	Œ×Ò�G GÑ,Ô,Ñ-Ô-Ð-Ð-Ð-r-   )r0   N)rM   rN   rO   rP   r   rX   rB   r   r¾   rÅ   rÇ   rÌ   rÓ   rÕ   r   r   rõ   rø   rû   r   Úobjectr  r  r	  r  rH   r-   r+   r·   r·   g  sE  € € € € € ðð ð
 x°¤}ð ð ð ð ð¨'ð °dð ð ð ð ð
4ð 
4ð 
4ð 
4ðð ð ð ð
¨Cð °sð ¸tð ð ð ð ð
?¨°#¬ð ?¸Sð ?ÀTð ?ð ?ð ?ð ?ð,  x°¤}ð  ¸ð  ð  ð  ð  ðv#à  S œ/ðv#ð ˜Œ}ðv#ð  ð	v#ð
 
ðv#ð v#ð v#ð v#ðp ˜Sð   Tð  ð  ð  ð  ð	)  s¨C x¤ð 	)¸À#¼ð 	)È4ð 	)ð 	)ð 	)ð 	)ð˜Sð ¨Cð ¸3ð À4ð ð ð ð ð
˜Fð  tð ð ð ð ð
ð ð ð ð,ð ,ð ,ð ,ð.˜sð . tð .ð .ð .ð .ð .ð .r-   r·   Úflr   c                 ó&  — t          ¦   «         }|                     t          j        d¦  «         |                     t          j        d¦  «         |                     t          j        d¦  «         |                     t          j        d¦  «         t          t          | dd¦  «        ¦  «        }| 	                    |¦  «         | 
                    |¦  «         |                     t          j        |¦  «         |                     | ¦  «         |j        S )z 
    Perform a SAX parse of an XML document with the _ToStan class.

    @param fl: The XML document to be parsed.

    @return: a C{list} of Stan objects.
    r   rU   rJ   N)r   Ú
setFeaturer   Úfeature_validationÚfeature_namespacesÚfeature_external_gesÚfeature_external_pesr·   ÚgetattrÚsetContentHandlerÚsetEntityResolverÚsetPropertyÚproperty_lexical_handlerÚparserÀ   )r  ÚparserÚss      r+   Ú_flatsaxParser  _  så   € õ ‰]Œ]€FØ
×Ò•gÔ0°!Ñ4Ô4Ð4Ø
×Ò•gÔ0°!Ñ4Ô4Ð4Ø
×Ò•gÔ2°AÑ6Ô6Ð6Ø
×Ò•gÔ2°AÑ6Ô6Ð6å•˜˜F DÑ)Ô)Ñ*Ô*€AØ
×Ò˜QÑÔÐØ
×Ò˜QÑÔÐØ
×Ò•wÔ7¸Ñ;Ô;Ð;à
‡L‚L�ÑÔÐàŒ:Ðr-   c                   óF   — e Zd ZdZdeeef         fd„Zded         fd„Z	dS )Ú	XMLStringzH
    An L{ITemplateLoader} that loads and parses XML from a string.
    r  c                 ó¦   — t          |t          ¦  «        s|                     d¦  «        }t          t	          j        |¦  «        ¦  «        | _        dS )z¸
        Run the parser on a L{io.StringIO} copy of the string.

        @param s: The string from which to load the XML.
        @type s: L{str}, or a UTF-8 encoded L{bytes}.
        Úutf8N)r3   rX   r8   r  ÚioÚStringIOÚ_loadedTemplate)rC   r  s     r+   rB   zXMLString.__init__}  sE   € õ ˜!�SÑ!Ô!ð 	!Ø—’˜Ñ Ô ˆAå4AÅ"Ä+ÈaÁ.Ä.Ñ4QÔ4QˆÔØ"Ð"r-   r0   r   c                 ó   — | j         S )zM
        Return the document.

        @return: the loaded document.
        )r"  rÄ   s    r+   ÚloadzXMLString.loadŠ  s   € ð Ô#Ð#r-   N)
rM   rN   rO   rP   r   rX   r4   rB   r   r$  rH   r-   r+   r  r  w  sb   € € € € € ðð ð#˜%  U 
Ô+ð #ð #ð #ð #ð$�d˜=Ô)ð $ð $ð $ð $ð $ð $r-   r  c                   ór   — e Zd ZdZ ed¦  «        Zdd„Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
dS )	ÚFailureElementa  
    L{FailureElement} is an L{IRenderable} which can render detailed information
    about a L{Failure<twisted.python.failure.Failure>}.

    @ivar failure: The L{Failure<twisted.python.failure.Failure>} instance which
        will be rendered.

    @since: 12.1
    ao  
<div xmlns:t="http://twistedmatrix.com/ns/twisted.web.template/0.1">
  <style type="text/css">
    div.error {
      color: red;
      font-family: Verdana, Arial, helvetica, sans-serif;
      font-weight: bold;
    }

    div {
      font-family: Verdana, Arial, helvetica, sans-serif;
    }

    div.stackTrace {
    }

    div.frame {
      padding: 1em;
      background: white;
      border-bottom: thin black dashed;
    }

    div.frame:first-child {
      padding: 1em;
      background: white;
      border-top: thin black dashed;
      border-bottom: thin black dashed;
    }

    div.location {
    }

    span.function {
      font-weight: bold;
      font-family: "Courier New", courier, monospace;
    }

    div.snippet {
      margin-bottom: 0.5em;
      margin-left: 1em;
      background: #FFFFDD;
    }

    div.snippetHighlightLine {
      color: red;
    }

    span.code {
      font-family: "Courier New", courier, monospace;
    }
  </style>

  <div class="error">
    <span t:render="type" />: <span t:render="value" />
  </div>
  <div class="stackTrace" t:render="traceback">
    <div class="frame" t:render="frames">
      <div class="location">
        <span t:render="filename" />:<span t:render="lineNumber" /> in
        <span class="function" t:render="function" />
      </div>
      <div class="snippet" t:render="source">
        <div t:render="sourceLines">
          <span class="lineno" t:render="lineNumber" />
          <code class="code" t:render="sourceLine" />
        </div>
      </div>
    </div>
  </div>
  <div class="error">
    <span t:render="type" />: <span t:render="value" />
  </div>
</div>
Nc                 ó>   — t          j        | |¦  «         || _        d S r@   )r   rB   Úfailure)rC   r(  rt   s      r+   rB   zFailureElement.__init__ë  s    € ÝÔ˜˜vÑ&Ô&Ð&ØˆŒˆˆr-   c                 óF   —  |t          | j        j        ¦  «        ¦  «        S )zA
        Render the exception type as a child of C{tag}.
        )r   r(  Útyperw   s      r+   r*  zFailureElement.typeï  s"   € ð
 ˆsÕ% d¤lÔ&7Ñ8Ô8Ñ9Ô9Ð9r-   c                 ól   —  |t          | j        j        ¦  «                             d¦  «        ¦  «        S )zB
        Render the exception value as a child of C{tag}.
        r  )rX   r(  Úvaluer9   rw   s      r+   r,  zFailureElement.valueö  s/   € ð
 ˆs•3�t”|Ô)Ñ*Ô*×1Ò1°&Ñ9Ô9Ñ:Ô:Ð:r-   c                 óP   — t          t          |¦  «        | j        j        ¦  «        S )z–
        Render all the frames in the wrapped
        L{Failure<twisted.python.failure.Failure>}'s traceback stack, replacing
        C{tag}.
        )r    r‘   r(  r§   rw   s      r+   Ú	tracebackzFailureElement.tracebacký  s   € õ �Y s™^œ^¨T¬\Ô-@ÑAÔAÐAr-   r@   )rM   rN   rO   rP   r  rt   rB   r   r*  r,  r.  rH   r-   r+   r&  r&  “  s¤   € € € € € ðð ð ˆYðI	ñKô K€FðZð ð ð ð ð:ð :ñ „Xð:ð ð;ð ;ñ „Xð;ð ðBð Bñ „XðBð Bð Br-   r&  c                 ó<  — g }t          dt          | ¦  «        ¦  «                             |j        ¦  «         t	          |d         t
          ¦  «        r/|d                              d¦  «                             dd¦  «        S |d                              ¦   «          dS )a  
    Construct an HTML representation of the given failure.

    Consider using L{FailureElement} instead.

    @type myFailure: L{Failure<twisted.python.failure.Failure>}

    @rtype: L{bytes}
    @return: A string containing the HTML representation of the given failure.
    Nr   r2   rW   Úxmlcharrefreplace)	r!   r&  ÚaddBothrÒ   r3   r4   r8   r9   ÚraiseException)Ú	myFailureÚresults     r+   ÚformatFailurer5    s�   € ð €FÝ�$� yÑ1Ô1Ñ2Ô2×:Ò:¸6¼=ÑIÔIÐIÝ�&˜”)�UÑ#Ô#ð Nð �aŒy×Ò Ñ(Ô(×/Ò/°Ð9LÑMÔMÐMØ
ˆ1„I×ÒÑÔÐÐÐr-   rU   c                   ó2   — e Zd ZdZdd„Zded         fd„ZdS )	r‘   zJ
    An L{ITemplateLoader} that loads an existing flattenable object.
    rx   r   c                 ó   — || _         dS )z>
        @param tag: The object which will be loaded.
        N©rx   )rC   rx   s     r+   rB   zTagLoader.__init__-  s   € ð
 #&ˆŒØ.Ð.r-   r0   c                 ó   — | j         gS r@   r8  rÄ   s    r+   r$  zTagLoader.load5  s   € Ø”ˆzÐr-   N)rx   r   )rM   rN   rO   rP   rB   r   r$  rH   r-   r+   r‘   r‘   '  sR   € € € € € ðð ð/ð /ð /ð /ð�d˜=Ô)ð ð ð ð ð ð r-   r‘   c                   óf   — e Zd ZdZdee         fd„Zded         fd„Zde	fd„Z
ded         fd„Zd	S )
ÚXMLFilezF
    An L{ITemplateLoader} that loads and parses XML from a file.
    Úpathc                 ó†   — t          |t          ¦  «        st          j        dt          d¬¦  «         d| _        	 || _        dS )zf
        Run the parser on a file.

        @param path: The file from which to load the XML.
        zhPassing filenames or file objects to XMLFile is deprecated since Twisted 12.1.  Pass a FilePath instead.r„   )ÚcategoryÚ
stacklevelN)r3   r   ÚwarningsÚwarnÚDeprecationWarningr"  Ú_path)rC   r<  s     r+   rB   zXMLFile.__init__?  sV   € õ ˜$¥Ñ)Ô)ð 	ÝŒMð@å+Øð	ñ ô ð ð ?CˆÔØ=à$(ˆŒ
Ø1Ð1r-   r0   r   c                 óä   — t          | j        t          ¦  «        st          | j        ¦  «        S | j                             d¦  «        5 }t          |¦  «        cddd¦  «         S # 1 swxY w Y   dS )zP
        Read and parse the XML.

        @return: the loaded document.
        ÚrN)r3   rC  r   r  Úopen)rC   Úfs     r+   Ú_loadDoczXMLFile._loadDocS  s¨   € õ ˜$œ*¥hÑ/Ô/ð 	(Ý  ¤Ñ,Ô,Ð,à”—’ Ñ%Ô%ð (¨Ý$ QÑ'Ô'ð(ð (ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   Á	A%Á%A)Á,A)c                 ó   — d| j         ›d�S )Nz<XMLFile of ú>)rC  rÄ   s    r+   Ú__repr__zXMLFile.__repr___  s   € Ø-˜dœjÐ-Ð-Ð-Ð-r-   c                 óP   — | j         €|                      ¦   «         | _         | j         S )zl
        Return the document, first loading it if necessary.

        @return: the loaded document.
        )r"  rH  rÄ   s    r+   r$  zXMLFile.loadb  s&   € ð ÔÐ'Ø#'§=¢=¡?¤?ˆDÔ ØÔ#Ð#r-   N)rM   rN   rO   rP   r   r   rB   r   rH  rX   rK  r$  rH   r-   r+   r;  r;  9  s˜   € € € € € ðð ð2˜X cœ]ð 2ð 2ð 2ð 2ð(
(˜$˜}Ô-ð 
(ð 
(ð 
(ð 
(ð.˜#ð .ð .ð .ð .ð$�d˜=Ô)ð $ð $ð $ð $ð $ð $r-   r;  >x   ÚaÚbÚiÚpÚqr  ÚuÚbrÚddÚdlÚdtÚemÚh1Úh2Úh3Úh4Úh5Úh6ÚhrÚliÚolÚrpÚrtÚtdÚthÚtrÚttÚulÚbdiÚbdoÚbigÚcolÚdelÚdfnÚdirÚdivÚimgÚinsÚkbdÚmapÚnavÚpreÚsubÚsupÚvarÚwbrÚabbrÚareaÚbaseÚbodyÚciteÚcodeÚfontÚformÚheadÚhtmlÚlinkÚmarkÚmenuÚmetaÚrubyÚsampÚspanÚtimeÚasideÚaudioÚembedr€   ÚinputÚlabelÚmeterÚparamÚsmallÚstyleÚtableÚtbodyÚtfootÚtheadÚtitleÚvideoÚappletÚbuttonÚcanvasÚcenterÚfigureÚfooterÚheaderÚhgroupÚiframeÚkeygenÚlegendr  ÚoptionÚoutputÚscriptÚselectrs   ÚstrikeÚstrongÚacronymÚaddressÚarticleÚcaptionÚcommandÚdetailsÚisindexÚsectionÚsummaryÚbasefontÚcolgroupÚdatalistÚfieldsetÚframesetÚnoframesÚnoscriptÚoptgroupÚprogressÚtextareaÚ
blockquoteÚ
figcaptionc                   ó"   — e Zd ZdZdedefd„ZdS )Ú_TagFactorya†  
    A factory for L{Tag} objects; the implementation of the L{tags} object.

    This allows for the syntactic convenience of C{from twisted.web.template
    import tags; tags.a(href="linked-page.html")}, where 'a' can be basically
    any HTML tag.

    The class is not exposed publicly because you only ever need one of these,
    and we already made it for you.

    @see: L{tags}
    ÚtagNamer0   c                 óª   — |dk    rt          d¦  «        S |                     d¦  «        }|t          vrt          d|›�¦  «        ‚t          |¦  «        S )NrÚ   rÛ   Ú_zunknown tag )r$   rˆ   ÚVALID_HTML_TAG_NAMESÚAttributeError)rC   rÃ  s     r+   Ú__getattr__z_TagFactory.__getattr__û  sX   € Ø�mÒ#Ð#Ý�r‘7”7ˆNà—.’. Ñ%Ô%ˆØÕ.Ð.Ð.Ý Ð!;°Ð!;Ð!;Ñ<Ô<Ð<Ý�7‰|Œ|Ðr-   N)rM   rN   rO   rP   rX   r$   rÈ  rH   r-   r+   rÂ  rÂ  í  s@   € € € € € ðð ð 3ð ¨3ð ð ð ð ð ð r-   rÂ  ó   <!DOCTYPE html>ÚelementÚdoctypeÚ_failElementr   c                 ó‚  ‡ ‡— |�*‰                       |¦  «         ‰                       d¦  «         ‰€t          Št          ‰ |‰ j         ¦  «        }dt          dt          t
          d                  fˆˆ fd„}‰ dœdt          dt          dt          fd	„}|                     |¦  «         | 	                    |¦  «         t          S )
aã  
    Render an element or other L{IRenderable}.

    @param request: The L{IRequest} being rendered to.
    @param element: An L{IRenderable} which will be rendered.
    @param doctype: A L{bytes} which will be written as the first line of
        the request, or L{None} to disable writing of a doctype.  The argument
        should not include a trailing newline and will default to the HTML5
        doctype C{'<!DOCTYPE html>'}.

    @returns: NOT_DONE_YET

    @since: 12.1
    Nó   
r(  r0   c                 óä   •— t                                d| ¬¦  «         t          ‰dd ¦  «        }|�*|j        r#‰€J ‚t	          ‰ ‰| ¦  «        ‰j        ¦  «        S ‰                     d¦  «         d S )Nz/An error occurred while rendering the response.)r(  Úsitesr   <div style="font-size:800%;background-color:#FFF;color:#F00">An error occurred while rendering the response.</div>)Ú
_moduleLogr(  r  ÚdisplayTracebacksr    Úwrite)r(  rÐ  rÌ  r/   s     €€r+   ÚebzrenderElement.<locals>.eb%  s“   ø€ Ý×ÒØ=Àwð 	ñ 	
ô 	
ð 	
õ �w ¨Ñ-Ô-ˆØÐ Ô 6ÐØÐ+Ð+Ð+Ý˜7 L L°Ñ$9Ô$9¸7¼=ÑIÔIÐIà�MŠMðKñô ð ð �4r-   )r/   r4  r/   c                ó.   — |                      ¦   «          | S r@   )Úfinish)r4  r/   s     r+   rÖ  zrenderElement.<locals>.finish6  s   € Ø�ŠÑÔÐØˆr-   )rÓ  r&  r    r   r   r   r  r'   rf   r1  rc   )r/   rÊ  rË  rÌ  r`   rÔ  rÖ  s   `  `   r+   ÚrenderElementr×    sì   øø€ ð( ÐØ�Š�gÑÔÐØ�Š�eÑÔÐàÐÝ%ˆå�˜ '¤-Ñ0Ô0€Að•Gð ¥­°$¬Ô 8ð ð ð ð ð ð ð ð" 7>ð ð ð •vð ­8ð Å&ð ð ð ð ð ‡L‚L�ÑÔÐØ‡I‚IˆfÑÔÐÝÐr-   )rÉ  N)XrP   r   r†   r@  Úcollectionsr   rƒ  r   Útypingr   r   r   r	   r
   r   r   r   r   r   r   Úxml.saxr   r   Úxml.sax.xmlreaderr   r   Úzope.interfacer   Útwisted.internet.deferr   Útwisted.loggerr   Útwisted.pythonr   Útwisted.python.failurer   Útwisted.python.filepathr   Útwisted.python.reflectr   Útwisted.webr   Útwisted.web._elementr   r   Útwisted.web._flattenr   r    r!   Útwisted.web._stanr"   r#   r$   r%   Útwisted.web.iwebr&   r'   r(   r,   r4   r;   r_   r=   rT   r]   rp   r}   r–   r    r©   rÑ   ÚContentHandlerÚEntityResolverr·   rX   r  r  r&  r5  rc   rÑ  r‘   r;  rÆ  rÂ  Útagsr  r×  rH   r-   r+   ú<module>rë     sý  ððð ð 
€	€	€	Ø Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à &Ð &Ð &Ð &Ð &Ð &à +Ð +Ð +Ð +Ð +Ð +Ø !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø *Ð *Ð *Ð *Ð *Ð *Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø  Ð  Ð  Ð  Ð  Ð  Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð(ð (ð (ð&�Eð & Hð &°ð &ð &ð &ð &ðRð ð ð ð ˆxÔ ñ ô ð ð*)ð )ð )ð )ð )�XÔ&ñ )ô )ð )ð:)ð )ð )ð )ð )�xÔ(ñ )ô )ð )ð8%ð %ð %ð %ð %˜ñ %ô %ð %ð<+Eð +Eð +Eð +Eð +E˜Wñ +Eô +Eð +Eð\+Bð +Bð +Bð +Bð +B�Gñ +Bô +Bð +Bð\
ð 
ð 
ð 
ð 
�Gñ 
ô 
ð 
ð&"'ð "'ð "'ð "'ð "'ñ "'ô "'ð "'ðJ LÐ ðu.ð u.ð u.ð u.ð u.ˆgÔ$ gÔ&<ñ u.ô u.ð u.ðp�e˜B˜vœJ¨˜OÔ,ð °°mÔ1Dð ð ð ð ð0 €ˆ_ÑÔð$ð $ð $ð $ð $ñ $ô $ñ Ôð$ð6qBð qBð qBð qBð qB�Wñ qBô qBð qBðhð ð ð8 €ØˆV‰XŒX€
ð €ˆ_ÑÔðð ð ð ð ñ ô ñ Ôðð" €ˆ_ÑÔð0$ð 0$ð 0$ð 0$ð 0$ñ 0$ô 0$ñ Ôð0$ðnyð yð yÐ ðxð ð ð ð ñ ô ð ð0 €{�}„}€ð  2Ø=Að	4ð 4Øð4àð4ð �eŒ_ð4ð ˜8 W I¨yÐ$8Ô9Ô:ð	4ð
 ð4ð 4ð 4ð 4ð 4ð 4r-   