§
    ‹Ÿj&“  ã                   óv  — d Z ddlZddlm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mZmZ ddlmZmZmZmZmZmZmZmZ ddlZej        rddlmZmZ d	Z G d
„ d¦  «        Z e¦   «         Z de!de!de!fd„Z" G d„ d¦  «        Z# G d„ d¦  «        Z$ G d„ de$¦  «        Z% G d„ de$¦  «        Z& G d„ d¦  «        Z' G d„ de'¦  «        Z( G d„ de'¦  «        Z) G d„ de'¦  «        Z* G d „ d!e'¦  «        Z+ G d"„ d#e'¦  «        Z, G d$„ d%e'¦  «        Z- G d&„ d'e'¦  «        Z. G d(„ d)e'¦  «        Z/ G d*„ d+e'¦  «        Z0 G d,„ d-e'¦  «        Z1 G d.„ d/e1¦  «        Z2 G d0„ d1e'¦  «        Z3 G d2„ d3e4¦  «        Z5 G d4„ d5¦  «        Z6 G d6„ d7¦  «        Z7d8e!de!fd9„Z8	 	 d?d:e7d;e#d<ee!         d=ee!         de)f
d>„Z9dS )@aŒ  A simple template system that compiles templates to Python code.

Basic usage looks like::

    t = template.Template("<html>{{ myvalue }}</html>")
    print(t.generate(myvalue="XXX"))

`Loader` is a class that loads templates from a root directory and caches
the compiled templates::

    loader = template.Loader("/home/btaylor")
    print(loader.load("test.html").generate(myvalue="XXX"))

We compile all templates to raw Python. Error-reporting is currently... uh,
interesting. Syntax for the templates::

    ### base.html
    <html>
      <head>
        <title>{% block title %}Default title{% end %}</title>
      </head>
      <body>
        <ul>
          {% for student in students %}
            {% block student %}
              <li>{{ escape(student.name) }}</li>
            {% end %}
          {% end %}
        </ul>
      </body>
    </html>

    ### bold.html
    {% extends "base.html" %}

    {% block title %}A bolder title{% end %}

    {% block student %}
      <li><span style="bold">{{ escape(student.name) }}</span></li>
    {% end %}

Unlike most other template systems, we do not put any restrictions on the
expressions you can include in your statements. ``if`` and ``for`` blocks get
translated exactly into Python, so you can do complex expressions like::

   {% for student in [p for p in people if p.student and p.age > 23] %}
     <li>{{ escape(student.name) }}</li>
   {% end %}

Translating directly to Python means you can apply functions to expressions
easily, like the ``escape()`` function in the examples above. You can pass
functions in to your template just like any other variable
(In a `.RequestHandler`, override `.RequestHandler.get_template_namespace`)::

   ### Python code
   def add(x, y):
      return x + y
   template.execute(add=add)

   ### The template
   {{ add(1, 2) }}

We provide the functions `escape() <.xhtml_escape>`, `.url_escape()`,
`.json_encode()`, and `.squeeze()` to all templates by default.

Typical applications do not create `Template` or `Loader` instances by
hand, but instead use the `~.RequestHandler.render` and
`~.RequestHandler.render_string` methods of
`tornado.web.RequestHandler`, which load templates automatically based
on the ``template_path`` `.Application` setting.

Variable names beginning with ``_tt_`` are reserved by the template
system and should not be used by application code.

Syntax Reference
----------------

Template expressions are surrounded by double curly braces: ``{{ ... }}``.
The contents may be any python expression, which will be escaped according
to the current autoescape setting and inserted into the output.  Other
template directives use ``{% %}``.

To comment out a section so that it is omitted from the output, surround it
with ``{# ... #}``.


To include a literal ``{{``, ``{%``, or ``{#`` in the output, escape them as
``{{!``, ``{%!``, and ``{#!``, respectively.


``{% apply *function* %}...{% end %}``
    Applies a function to the output of all template code between ``apply``
    and ``end``::

        {% apply linkify %}{{name}} said: {{message}}{% end %}

    Note that as an implementation detail apply blocks are implemented
    as nested functions and thus may interact strangely with variables
    set via ``{% set %}``, or the use of ``{% break %}`` or ``{% continue %}``
    within loops.

``{% autoescape *function* %}``
    Sets the autoescape mode for the current file.  This does not affect
    other files, even those referenced by ``{% include %}``.  Note that
    autoescaping can also be configured globally, at the `.Application`
    or `Loader`.::

        {% autoescape xhtml_escape %}
        {% autoescape None %}

``{% block *name* %}...{% end %}``
    Indicates a named, replaceable block for use with ``{% extends %}``.
    Blocks in the parent template will be replaced with the contents of
    the same-named block in a child template.::

        <!-- base.html -->
        <title>{% block title %}Default title{% end %}</title>

        <!-- mypage.html -->
        {% extends "base.html" %}
        {% block title %}My page title{% end %}

``{% comment ... %}``
    A comment which will be removed from the template output.  Note that
    there is no ``{% end %}`` tag; the comment goes from the word ``comment``
    to the closing ``%}`` tag.

``{% extends *filename* %}``
    Inherit from another template.  Templates that use ``extends`` should
    contain one or more ``block`` tags to replace content from the parent
    template.  Anything in the child template not contained in a ``block``
    tag will be ignored.  For an example, see the ``{% block %}`` tag.

``{% for *var* in *expr* %}...{% end %}``
    Same as the python ``for`` statement.  ``{% break %}`` and
    ``{% continue %}`` may be used inside the loop.

``{% from *x* import *y* %}``
    Same as the python ``import`` statement.

``{% if *condition* %}...{% elif *condition* %}...{% else %}...{% end %}``
    Conditional statement - outputs the first section whose condition is
    true.  (The ``elif`` and ``else`` sections are optional)

``{% import *module* %}``
    Same as the python ``import`` statement.

``{% include *filename* %}``
    Includes another template file.  The included file can see all the local
    variables as if it were copied directly to the point of the ``include``
    directive (the ``{% autoescape %}`` directive is an exception).
    Alternately, ``{% module Template(filename, **kwargs) %}`` may be used
    to include another template with an isolated namespace.

``{% module *expr* %}``
    Renders a `~tornado.web.UIModule`.  The output of the ``UIModule`` is
    not escaped::

        {% module Template("foo.html", arg=42) %}

    ``UIModules`` are a feature of the `tornado.web.RequestHandler`
    class (and specifically its ``render`` method) and will not work
    when the template system is used on its own in other contexts.

``{% raw *expr* %}``
    Outputs the result of the given expression without autoescaping.

``{% set *x* = *y* %}``
    Sets a local variable.

``{% try %}...{% except %}...{% else %}...{% finally %}...{% end %}``
    Same as the python ``try`` statement.

``{% while *condition* %}... {% end %}``
    Same as the python ``while`` statement.  ``{% break %}`` and
    ``{% continue %}`` may be used inside the loop.

``{% whitespace *mode* %}``
    Sets the whitespace mode for the remainder of the current file
    (or until the next ``{% whitespace %}`` directive). See
    `filter_whitespace` for available options. New in Tornado 4.3.
é    N)ÚStringIO)Úescape)Úapp_log)Ú
ObjectDictÚexec_inÚunicode_type)ÚAnyÚUnionÚCallableÚListÚDictÚIterableÚOptionalÚTextIO)ÚTupleÚContextManagerÚxhtml_escapec                   ó   — e Zd ZdS )Ú_UnsetMarkerN)Ú__name__Ú
__module__Ú__qualname__© ó    ú]/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/tornado/template.pyr   r   Ü   s   € € € € € Ø€Dr   r   ÚmodeÚtextÚreturnc                 óÖ   — | dk    r|S | dk    r.t          j        dd|¦  «        }t          j        dd|¦  «        }|S | dk    rt          j        dd|¦  «        S t          d	| z  ¦  «        ‚)
a’  Transform whitespace in ``text`` according to ``mode``.

    Available modes are:

    * ``all``: Return all whitespace unmodified.
    * ``single``: Collapse consecutive whitespace with a single whitespace
      character, preserving newlines.
    * ``oneline``: Collapse all runs of whitespace into a single space
      character, removing all newlines in the process.

    .. versionadded:: 4.3
    ÚallÚsinglez([\t ]+)ú z
(\s*\n\s*)ú
Úonelinez(\s+)zinvalid whitespace mode %s)ÚreÚsubÚ	Exception)r   r   s     r   Úfilter_whitespacer(   ã   s{   € ð ˆu‚}€}ØˆØ	�Ò	Ð	ÝŒv�k 3¨Ñ-Ô-ˆÝŒv�m T¨4Ñ0Ô0ˆØˆØ	�Ò	Ð	ÝŒv�h  TÑ*Ô*Ð*åÐ4°tÑ;Ñ<Ô<Ð<r   c                   óê   — e Zd ZdZddeedfdeeef         deded         dee	e
f         d	eeee
f                  d
ee         ddfd„Zdedefd„Zded         defd„Zded         ded         fd„ZdS )ÚTemplatez—A compiled template.

    We compile into Python from the given template_string. You can generate
    the template from variables with generate().
    z<string>NÚtemplate_stringÚnameÚloaderÚ
BaseLoaderÚcompress_whitespaceÚ
autoescapeÚ
whitespacer   c                 óº  — t          j        |¦  «        | _        |t          ur|�t	          d¦  «        ‚|rdnd}|€@|r|j        r|j        }n/|                     d¦  «        s|                     d¦  «        rd}nd}|€J ‚t          |d¦  «         t          |t          ¦  «        s|| _
        n|r|j
        | _
        nt          | _
        |r|j        ni | _        t          |t          j        |¦  «        |¦  «        }t          | t          || ¦  «        ¦  «        | _        |                      |¦  «        | _        || _        	 t)          t          j        | j        ¦  «        d| j                             d	d
¦  «        z  dd¬¦  «        | _        dS # t          $ rC t1          | j        ¦  «                             ¦   «         }t5          j        d| j        |¦  «         ‚ w xY w)a³  Construct a Template.

        :arg str template_string: the contents of the template file.
        :arg str name: the filename from which the template was loaded
            (used for error message).
        :arg tornado.template.BaseLoader loader: the `~tornado.template.BaseLoader` responsible
            for this template, used to resolve ``{% include %}`` and ``{% extend %}`` directives.
        :arg bool compress_whitespace: Deprecated since Tornado 4.3.
            Equivalent to ``whitespace="single"`` if true and
            ``whitespace="all"`` if false.
        :arg str autoescape: The name of a function in the template
            namespace, or ``None`` to disable escaping by default.
        :arg str whitespace: A string specifying treatment of whitespace;
            see `filter_whitespace` for options.

        .. versionchanged:: 4.3
           Added ``whitespace`` parameter; deprecated ``compress_whitespace``.
        Nz2cannot set both whitespace and compress_whitespacer!   r    z.htmlz.jsÚ z%s.generated.pyú.Ú_ÚexecT)Údont_inheritz%s code:
%s)r   Ú
native_strr,   Ú_UNSETr'   r1   Úendswithr(   Ú
isinstancer   r0   Ú_DEFAULT_AUTOESCAPEÚ	namespaceÚ_TemplateReaderÚ_FileÚ_parseÚfileÚ_generate_pythonÚcoder-   ÚcompileÚ
to_unicodeÚreplaceÚcompiledÚ_format_codeÚrstripr   Úerror)	Úselfr+   r,   r-   r/   r0   r1   ÚreaderÚformatted_codes	            r   Ú__init__zTemplate.__init__  sö  € õ6 Ô% dÑ+Ô+ˆŒ	à¥fÐ,Ð,àÐ%ÝÐ TÑUÔUÐUØ%8ÐC˜˜¸eˆJØÐØð '˜&Ô+ð 'Ø#Ô.�
�
ð —=’= Ñ)Ô)ð '¨T¯]ª]¸5Ñ-AÔ-Að 'Ø!)�J�Jà!&�JàÐ%Ð%Ð%Ý˜* bÑ)Ô)Ð)å˜*¥lÑ3Ô3ð 	2Ø(ˆDŒOˆOØð 	2Ø$Ô/ˆDŒOˆOå1ˆDŒOà-3Ð;˜Ô)Ð)¸ˆŒÝ  ¥vÔ'8¸Ñ'IÔ'IÈ:ÑVÔVˆÝ˜$¥ v¨tÑ 4Ô 4Ñ5Ô5ˆŒ	Ø×)Ò)¨&Ñ1Ô1ˆŒ	ØˆŒð	õ
 $ÝÔ! $¤)Ñ,Ô,Ø! D¤I×$5Ò$5°c¸3Ñ$?Ô$?Ñ?ØØ!ð	ñ ô ˆDŒMˆMˆMøõ ð 	ð 	ð 	Ý)¨$¬)Ñ4Ô4×;Ò;Ñ=Ô=ˆNÝŒM˜.¨$¬)°^ÑDÔDÐDØð	øøøs   Å AF ÆAGÚkwargsc                 ó>  ‡ — t           j        t           j        t           j        t           j        t           j        t           j        t          t           j        t          t          f‰ j
                             dd¦  «        t          ˆ fd„¬¦  «        dœ}|                     ‰ j        ¦  «         |                     |¦  «         t          ‰ j        |¦  «         t#          j        t&          g t          f         |d         ¦  «        }t)          j        ¦   «           |¦   «         S )z0Generate this template with the given arguments.r4   r5   c                 ó   •— ‰j         S ©N)rC   )r,   rK   s    €r   ú<lambda>z#Template.generate.<locals>.<lambda>`  s	   ø€ ¸T¼Y€ r   )Ú
get_source)r   r   Ú
url_escapeÚjson_encodeÚsqueezeÚlinkifyÚdatetimeÚ_tt_utf8Ú_tt_string_typesr   Ú
__loader__Ú_tt_execute)r   r   rU   rV   rW   rX   rY   Úutf8r   Úbytesr,   rF   r   Úupdater=   r   rG   ÚtypingÚcastr   Ú	linecacheÚ
clearcache)rK   rO   r=   Úexecutes   `   r   ÚgeneratezTemplate.generateQ  sì   ø€ õ Ô)Ý"Ô/Ý Ô+Ý!Ô-Ý”~Ý”~Ý ÝœÝ!-­uÐ 5ð œ	×)Ò)¨#¨sÑ3Ô3Ý$Ð0FÐ0FÐ0FÐ0FÐGÑGÔGð
ð 
ˆ	ð 	×Ò˜œÑ(Ô(Ð(Ø×Ò˜Ñ Ô Ð Ý�”˜yÑ)Ô)Ð)Ý”+�h r­5 yÔ1°9¸]Ô3KÑLÔLˆõ 	ÔÑÔÐØˆw‰yŒyÐr   c                 óž  — t          ¦   «         }	 i }|                      |¦  «        }|                     ¦   «          |D ]}|                     ||¦  «         Œt	          ||||d         j        ¦  «        }|d                              |¦  «         |                     ¦   «         |                     ¦   «          S # |                     ¦   «          w xY w©Nr   )	r   Ú_get_ancestorsÚreverseÚfind_named_blocksÚ_CodeWriterÚtemplaterf   ÚgetvalueÚclose)rK   r-   ÚbufferÚnamed_blocksÚ	ancestorsÚancestorÚwriters          r   rB   zTemplate._generate_pythonl  sÄ   € Ý‘”ˆð	àˆLØ×+Ò+¨FÑ3Ô3ˆIØ×ÒÑÔÐØ%ð Að A�Ø×*Ò*¨6°<Ñ@Ô@Ð@Ð@Ý  ¨°v¸yÈ¼|Ô?TÑUÔUˆFØ�aŒL×!Ò! &Ñ)Ô)Ð)Ø—?’?Ñ$Ô$à�LŠL‰NŒNˆNˆNøˆF�LŠL‰NŒNˆNˆNøøøs   �BB6 Â6Cr?   c                 ó  — | j         g}| j         j        j        D ]p}t          |t          ¦  «        rY|st          d¦  «        ‚|                     |j        | j        ¦  «        }|                     | 	                    |¦  «        ¦  «         Œq|S )Nz1{% extends %} block found, but no template loader)
rA   ÚbodyÚchunksr;   Ú_ExtendsBlockÚ
ParseErrorÚloadr,   Úextendri   )rK   r-   rr   Úchunkrm   s        r   ri   zTemplate._get_ancestors{  s•   € Ø”Y�Kˆ	Ø”Y”^Ô*ð 	Bð 	BˆEÝ˜%¥Ñ/Ô/ð BØð Ý$ØNñô ð ð "Ÿ;š; u¤z°4´9Ñ=Ô=�Ø× Ò  ×!8Ò!8¸Ñ!@Ô!@ÑAÔAÐAøØÐr   )r   r   r   Ú__doc__r9   r
   Ústrr_   r   Úboolr   rN   r	   rf   rB   r   ri   r   r   r   r*   r*   ü   s8  € € € € € ðð ð Ø)-Ø9?Ø9?Ø$(ðIð Ià˜s E˜zÔ*ðIð ðIð ˜Ô&ð	Ið
 # 4¨Ð#5Ô6ðIð ˜U 3¨Ð#4Ô5Ô6ðIð ˜S”MðIð 
ðIð Ið Ið IðV ð ¨ð ð ð ð ð6 x°Ô'=ð À#ð ð ð ð ð
 X¨lÔ%;ð 
ÀÀWÄð 
ð 
ð 
ð 
ð 
ð 
r   r*   c            	       óÂ   — e Zd ZdZeddfdee         deeeef                  dee         ddfd„Z	dd„Z
dd	ed
ee         defd„Zdd	ed
ee         defd„Zd	edefd„ZdS )r.   zàBase class for template loaders.

    You must use a template loader to use template constructs like
    ``{% extends %}`` and ``{% include %}``. The loader caches all
    templates after they are loaded the first time.
    Nr0   r=   r1   r   c                 ór   — || _         |pi | _        || _        i | _        t	          j        ¦   «         | _        dS )a�  Construct a template loader.

        :arg str autoescape: The name of a function in the template
            namespace, such as "xhtml_escape", or ``None`` to disable
            autoescaping by default.
        :arg dict namespace: A dictionary to be added to the default template
            namespace, or ``None``.
        :arg str whitespace: A string specifying default behavior for
            whitespace in templates; see `filter_whitespace` for options.
            Default is "single" for files ending in ".html" and ".js" and
            "all" for other files.

        .. versionchanged:: 4.3
           Added ``whitespace`` parameter.
        N)r0   r=   r1   Ú	templatesÚ	threadingÚRLockÚlock)rK   r0   r=   r1   s       r   rN   zBaseLoader.__init__�  s9   € ð* %ˆŒØ"˜ bˆŒØ$ˆŒØˆŒõ ”OÑ%Ô%ˆŒ	ˆ	ˆ	r   c                 óT   — | j         5  i | _        ddd¦  «         dS # 1 swxY w Y   dS )z'Resets the cache of compiled templates.N)r…   r‚   ©rK   s    r   ÚresetzBaseLoader.reset°  su   € àŒYð 	 ð 	 ØˆDŒNð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ˆ�!¤!r,   Úparent_pathc                 ó   — t          ¦   «         ‚)z@Converts a possibly-relative path to absolute (used internally).©ÚNotImplementedError©rK   r,   r‰   s      r   Úresolve_pathzBaseLoader.resolve_pathµ  s   € å!Ñ#Ô#Ð#r   c                 óØ   — |                       ||¬¦  «        }| j        5  || j        vr|                      |¦  «        | j        |<   | j        |         cddd¦  «         S # 1 swxY w Y   dS )zLoads a template.)r‰   N)rŽ   r…   r‚   Ú_create_templater�   s      r   rz   zBaseLoader.load¹  s·   € à× Ò  °;Ð Ñ?Ô?ˆØŒYð 	(ð 	(Ø˜4œ>Ð)Ð)Ø'+×'<Ò'<¸TÑ'BÔ'B�”˜tÑ$Ø”> $Ô'ð	(ð 	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   Ÿ3AÁA#Á&A#c                 ó   — t          ¦   «         ‚rR   r‹   ©rK   r,   s     r   r�   zBaseLoader._create_templateÁ  ó   € Ý!Ñ#Ô#Ð#r   )r   NrR   )r   r   r   r}   r<   r   r~   r   r	   rN   rˆ   rŽ   r*   rz   r�   r   r   r   r.   r.   ˆ  s  € € € € € ðð ð %8Ø.2Ø$(ð	&ð &à˜S”Mð&ð ˜D  c œNÔ+ð&ð ˜S”Mð	&ð
 
ð&ð &ð &ð &ð@ ð  ð  ð  ð
$ð $ ð $°8¸C´=ð $ÈCð $ð $ð $ð $ð(ð (˜ð (¨8°C¬=ð (ÀHð (ð (ð (ð (ð$ Sð $¨Xð $ð $ð $ð $ð $ð $r   r.   c                   ób   ‡ — e Zd ZdZdededdfˆ fd„Zddedee         defd	„Zdede	fd
„Z
ˆ xZS )ÚLoaderz:A template loader that loads from a single root directory.Úroot_directoryrO   r   Nc                 ó‚   •—  t          ¦   «         j        di |¤Ž t          j                             |¦  «        | _        d S ©Nr   )ÚsuperrN   ÚosÚpathÚabspathÚroot)rK   r–   rO   Ú	__class__s      €r   rN   zLoader.__init__È  s9   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý”G—O’O NÑ3Ô3ˆŒ	ˆ	ˆ	r   r,   r‰   c                 ó:  — |�r|                      d¦  «        �s|                      d¦  «        sì|                      d¦  «        s×t          j                             | j        |¦  «        }t          j                             t          j                             |¦  «        ¦  «        }t          j                             t          j                             ||¦  «        ¦  «        }|                      | j        ¦  «        r|t          | j        ¦  «        dz   d …         }|S )Nú<ú/é   )Ú
startswithrš   r›   Újoinr�   Údirnamerœ   Úlen)rK   r,   r‰   Úcurrent_pathÚfile_dirÚrelative_paths         r   rŽ   zLoader.resolve_pathÌ  så   € àñ
	;à×*Ò*¨3Ñ/Ô/ñ
	;ð  ×*Ò*¨3Ñ/Ô/ð
	;ð —O’O CÑ(Ô(ð	
	;õ œ7Ÿ<š<¨¬	°;Ñ?Ô?ˆLÝ”w—’¥r¤w§¢°|Ñ'DÔ'DÑEÔEˆHÝœGŸOšO­B¬G¯LªL¸À4Ñ,HÔ,HÑIÔIˆMØ×'Ò'¨¬	Ñ2Ô2ð ;Ø$¥S¨¬¡^¤^°aÑ%7Ð%9Ð%9Ô:�Øˆr   c                 óì   — t           j                             | j        |¦  «        }t	          |d¦  «        5 }t          |                     ¦   «         || ¬¦  «        }|cd d d ¦  «         S # 1 swxY w Y   d S )NÚrb©r,   r-   )rš   r›   r¤   r�   Úopenr*   Úread)rK   r,   r›   Úfrm   s        r   r�   zLoader._create_templateÚ  s©   € ÝŒw�|Š|˜DœI tÑ,Ô,ˆÝ�$˜ÑÔð 	 Ý §¢¡¤¨t¸DÐAÑAÔAˆHØð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ¶&A)Á)A-Á0A-rR   )r   r   r   r}   r~   r	   rN   r   rŽ   r*   r�   Ú__classcell__©rž   s   @r   r•   r•   Å  s¬   ø€ € € € € ØDÐDð4 sð 4°cð 4¸dð 4ð 4ð 4ð 4ð 4ð 4ðð  ð °8¸C´=ð ÈCð ð ð ð ð Sð ¨Xð ð ð ð ð ð ð ð r   r•   c                   ór   ‡ — e Zd ZdZdeeef         deddfˆ fd„Zddedee         defd	„Z	dede
fd
„Zˆ xZS )Ú
DictLoaderz/A template loader that loads from a dictionary.ÚdictrO   r   Nc                 óH   •—  t          ¦   «         j        di |¤Ž || _        d S r˜   )r™   rN   r´   )rK   r´   rO   rž   s      €r   rN   zDictLoader.__init__ä  s+   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ	ˆ	ˆ	r   r,   r‰   c                 óþ   — |rz|                      d¦  «        se|                      d¦  «        sP|                      d¦  «        s;t          j        |¦  «        }t          j        t          j        ||¦  «        ¦  «        }|S )Nr    r¡   )r£   Ú	posixpathr¥   Únormpathr¤   )rK   r,   r‰   r¨   s       r   rŽ   zDictLoader.resolve_pathè  s…   € àð	Fà×*Ò*¨3Ñ/Ô/ð	Fð  ×*Ò*¨3Ñ/Ô/ð	Fð —O’O CÑ(Ô(ð		Fõ !Ô(¨Ñ5Ô5ˆHÝÔ%¥i¤n°X¸tÑ&DÔ&DÑEÔEˆDØˆr   c                 ó<   — t          | j        |         || ¬¦  «        S )Nr¬   )r*   r´   r’   s     r   r�   zDictLoader._create_templateó  s   € Ý˜œ	 $œ¨d¸4Ð@Ñ@Ô@Ð@r   rR   )r   r   r   r}   r   r~   r	   rN   r   rŽ   r*   r�   r°   r±   s   @r   r³   r³   á  s¾   ø€ € € € € Ø9Ð9ð˜T # s (œ^ð °sð ¸tð ð ð ð ð ð ð	ð 	 ð 	°8¸C´=ð 	ÈCð 	ð 	ð 	ð 	ðA Sð A¨Xð Að Að Að Að Að Að Að Ar   r³   c                   ó^   — e Zd Zded          fd„Zdd„Zdee         dee	d	f         ddfd
„Z
dS )Ú_Noder   c                 ó   — dS r˜   r   r‡   s    r   Ú
each_childz_Node.each_childø  s   € Øˆrr   rt   rl   Nc                 ó   — t          ¦   «         ‚rR   r‹   ©rK   rt   s     r   rf   z_Node.generateû  r“   r   r-   rq   Ú_NamedBlockc                 ó`   — |                       ¦   «         D ]}|                     ||¦  «         Œd S rR   )r½   rk   )rK   r-   rq   Úchilds       r   rk   z_Node.find_named_blocksþ  s@   € ð —_’_Ñ&Ô&ð 	:ð 	:ˆEØ×#Ò# F¨LÑ9Ô9Ð9Ð9ð	:ð 	:r   ©rt   rl   r   N)r   r   r   r   r½   rf   r   r.   r   r~   rk   r   r   r   r»   r»   ÷  sƒ   € € € € € ð˜H WÔ-ð ð ð ð ð$ð $ð $ð $ð:Ø˜zÔ*ð:Ø:>¸sÀMÐ?QÔ:Rð:à	ð:ð :ð :ð :ð :ð :r   r»   c                   óB   — e Zd Zdeddddfd„Zdd	„Zded
         fd„ZdS )r?   rm   rv   Ú
_ChunkListr   Nc                 ó0   — || _         || _        d| _        d S rh   )rm   rv   Úline)rK   rm   rv   s      r   rN   z_File.__init__  s   € Ø ˆŒØˆŒ	ØˆŒ	ˆ	ˆ	r   rt   rl   c                 ól  — |                      d| j        ¦  «         |                     ¦   «         5  |                      d| j        ¦  «         |                      d| j        ¦  «         | j                             |¦  «         |                      d| j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzdef _tt_execute():ú_tt_buffer = []ú_tt_append = _tt_buffer.appendú$return _tt_utf8('').join(_tt_buffer))Ú
write_linerÇ   Úindentrv   rf   r¿   s     r   rf   z_File.generate  s  € Ø×ÒÐ.°´	Ñ:Ô:Ð:Ø�]Š]‰_Œ_ð 	Qð 	QØ×ÒÐ/°´Ñ;Ô;Ð;Ø×ÒÐ>ÀÄ	ÑJÔJÐJØŒI×Ò˜vÑ&Ô&Ð&Ø×ÒÐDÀdÄiÑPÔPÐPð		Qð 	Qð 	Qñ 	Qô 	Qð 	Qð 	Qð 	Qð 	Qð 	Qð 	Qð 	Qøøøð 	Qð 	Qð 	Qð 	Qð 	Qð 	Qs   °A,B)Â)B-Â0B-r»   c                 ó   — | j         fS rR   ©rv   r‡   s    r   r½   z_File.each_child  ó   € Ø”	ˆ|Ðr   rÃ   )r   r   r   r*   rN   rf   r   r½   r   r   r   r?   r?     su   € € € € € ð ð °ð À$ð ð ð ð ð
Qð Qð Qð Qð˜H WÔ-ð ð ð ð ð ð r   r?   c                   óJ   — e Zd Zdee         ddfd„Zd
d„Zded         fd	„ZdS )rÅ   rw   r   Nc                 ó   — || _         d S rR   ©rw   )rK   rw   s     r   rN   z_ChunkList.__init__  s   € ØˆŒˆˆr   rt   rl   c                 óD   — | j         D ]}|                     |¦  «         Œd S rR   )rw   rf   )rK   rt   r|   s      r   rf   z_ChunkList.generate  s2   € Ø”[ð 	#ð 	#ˆEØ�NŠN˜6Ñ"Ô"Ð"Ð"ð	#ð 	#r   r»   c                 ó   — | j         S rR   rÓ   r‡   s    r   r½   z_ChunkList.each_child  s
   € ØŒ{Ðr   rÃ   )	r   r   r   r   r»   rN   rf   r   r½   r   r   r   rÅ   rÅ     sn   € € € € € ð˜t Eœ{ð ¨tð ð ð ð ð#ð #ð #ð #ð˜H WÔ-ð ð ð ð ð ð r   rÅ   c            
       óz   — e Zd Zdededededdf
d„Zded         fd	„Z	dd„Z
dee         deed f         ddfd„ZdS )rÀ   r,   rv   rm   rÇ   r   Nc                 ó>   — || _         || _        || _        || _        d S rR   )r,   rv   rm   rÇ   )rK   r,   rv   rm   rÇ   s        r   rN   z_NamedBlock.__init__$  s"   € ØˆŒ	ØˆŒ	Ø ˆŒØˆŒ	ˆ	ˆ	r   r»   c                 ó   — | j         fS rR   rÏ   r‡   s    r   r½   z_NamedBlock.each_child*  rÐ   r   rt   rl   c                 óÐ   — |j         | j                 }|                     |j        | j        ¦  «        5  |j                             |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rR   )rq   r,   Úincluderm   rÇ   rv   rf   )rK   rt   Úblocks      r   rf   z_NamedBlock.generate-  s£   € ØÔ# D¤IÔ.ˆØ�^Š^˜EœN¨D¬IÑ6Ô6ð 	(ð 	(ØŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   ³AÁAÁ"Ar-   rq   c                 óR   — | || j         <   t                               | ||¦  «         d S rR   )r,   r»   rk   )rK   r-   rq   s      r   rk   z_NamedBlock.find_named_blocks2  s.   € ð #'ˆ�T”YÑÝ×Ò  f¨lÑ;Ô;Ð;Ð;Ð;r   rÃ   )r   r   r   r~   r»   r*   ÚintrN   r   r½   rf   r   r.   r   rk   r   r   r   rÀ   rÀ   #  s»   € € € € € ð˜Sð ¨ð ¸ð Èð ÐQUð ð ð ð ð˜H WÔ-ð ð ð ð ð(ð (ð (ð (ð
<Ø˜zÔ*ð<Ø:>¸sÀMÐ?QÔ:Rð<à	ð<ð <ð <ð <ð <ð <r   rÀ   c                   ó   — e Zd Zdeddfd„ZdS )rx   r,   r   Nc                 ó   — || _         d S rR   ©r,   r’   s     r   rN   z_ExtendsBlock.__init__:  s   € ØˆŒ	ˆ	ˆ	r   )r   r   r   r~   rN   r   r   r   rx   rx   9  s6   € € € € € ð˜Sð  Tð ð ð ð ð ð r   rx   c                   ó^   — e Zd Zdedddeddfd„Zdee         d	eee	f         ddfd
„Z
dd„ZdS )Ú_IncludeBlockr,   rL   r>   rÇ   r   Nc                 ó:   — || _         |j         | _        || _        d S rR   )r,   Útemplate_namerÇ   )rK   r,   rL   rÇ   s       r   rN   z_IncludeBlock.__init__?  s   € ØˆŒ	Ø#œ[ˆÔØˆŒ	ˆ	ˆ	r   r-   rq   c                 ó„   — |€J ‚|                      | j        | j        ¦  «        }|j                             ||¦  «         d S rR   )rz   r,   rä   rA   rk   )rK   r-   rq   Úincludeds       r   rk   z_IncludeBlock.find_named_blocksD  sF   € ð Ð!Ð!Ð!Ø—;’;˜tœy¨$Ô*<Ñ=Ô=ˆØŒ×'Ò'¨°Ñ=Ô=Ð=Ð=Ð=r   rt   rl   c                 ó  — |j         €J ‚|j                              | j        | j        ¦  «        }|                     || j        ¦  «        5  |j        j                             |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rR   )	r-   rz   r,   rä   rÚ   rÇ   rA   rv   rf   )rK   rt   ræ   s      r   rf   z_IncludeBlock.generateK  s¿   € ØŒ}Ð(Ð(Ð(Ø”=×%Ò% d¤i°Ô1CÑDÔDˆØ�^Š^˜H d¤iÑ0Ô0ð 	0ð 	0ØŒMÔ×'Ò'¨Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s   Á
 A7Á7A;Á>A;rÃ   )r   r   r   r~   rÝ   rN   r   r.   r   rÀ   rk   rf   r   r   r   râ   râ   >  s”   € € € € € ð˜Sð Ð*;ð À3ð È4ð ð ð ð ð
>Ø˜zÔ*ð>Ø:>¸sÀKÐ?OÔ:Pð>à	ð>ð >ð >ð >ð0ð 0ð 0ð 0ð 0ð 0r   râ   c                   óF   — e Zd Zdedededdfd„Zded         fd„Zdd„Z	dS )Ú_ApplyBlockÚmethodrÇ   rv   r   Nc                 ó0   — || _         || _        || _        d S rR   )rê   rÇ   rv   )rK   rê   rÇ   rv   s       r   rN   z_ApplyBlock.__init__S  s   € ØˆŒØˆŒ	ØˆŒ	ˆ	ˆ	r   r»   c                 ó   — | j         fS rR   rÏ   r‡   s    r   r½   z_ApplyBlock.each_childX  rÐ   r   rt   rl   c                 óò  — d|j         z  }|xj         dz  c_         |                     d|z  | j        ¦  «         |                     ¦   «         5  |                     d| j        ¦  «         |                     d| j        ¦  «         | j                             |¦  «         |                     d| j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     d| j        › d|› d	�| j        ¦  «         d S )
Nz_tt_apply%dr¢   z	def %s():rÉ   rÊ   rË   z_tt_append(_tt_utf8(ú(z()))))Úapply_counterrÌ   rÇ   rÍ   rv   rf   rê   )rK   rt   Úmethod_names      r   rf   z_ApplyBlock.generate[  sU  € Ø# fÔ&:Ñ:ˆØÐÔ Ñ!ÐÔØ×Ò˜+¨Ñ3°T´YÑ?Ô?Ð?Ø�]Š]‰_Œ_ð 	Qð 	QØ×ÒÐ/°´Ñ;Ô;Ð;Ø×ÒÐ>ÀÄ	ÑJÔJÐJØŒI×Ò˜vÑ&Ô&Ð&Ø×ÒÐDÀdÄiÑPÔPÐPð		Qð 	Qð 	Qñ 	Qô 	Qð 	Qð 	Qð 	Qð 	Qð 	Qð 	Qøøøð 	Qð 	Qð 	Qð 	Qð
 	×ÒØC 4¤;ÐCÐC°ÐCÐCÐCÀTÄYñ	
ô 	
ð 	
ð 	
ð 	
s   ÁA,CÃC	ÃC	rÃ   ©
r   r   r   r~   rÝ   r»   rN   r   r½   rf   r   r   r   ré   ré   R  sx   € € € € € ð˜sð ¨#ð °Uð ¸tð ð ð ð ð
˜H WÔ-ð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
r   ré   c                   óF   — e Zd Zdedededdfd„Zdee         fd„Zdd
„Z	dS )Ú_ControlBlockÚ	statementrÇ   rv   r   Nc                 ó0   — || _         || _        || _        d S rR   )rô   rÇ   rv   )rK   rô   rÇ   rv   s       r   rN   z_ControlBlock.__init__j  s   € Ø"ˆŒØˆŒ	ØˆŒ	ˆ	ˆ	r   c                 ó   — | j         fS rR   rÏ   r‡   s    r   r½   z_ControlBlock.each_childo  rÐ   r   rt   rl   c                 ó  — |                      d| j        z  | j        ¦  «         |                     ¦   «         5  | j                             |¦  «         |                      d| j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nú%s:Úpass)rÌ   rô   rÇ   rÍ   rv   rf   r¿   s     r   rf   z_ControlBlock.generater  sÁ   € Ø×Ò˜% $¤.Ñ0°$´)Ñ<Ô<Ð<Ø�]Š]‰_Œ_ð 	1ð 	1ØŒI×Ò˜vÑ&Ô&Ð&à×Ò˜f d¤iÑ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð 	1ð 	1s   ¸6A;Á;A?ÂA?rÃ   rñ   r   r   r   ró   ró   i  sw   € € € € € ð #ð ¨Sð ¸ð À$ð ð ð ð ð
˜H UœOð ð ð ð ð1ð 1ð 1ð 1ð 1ð 1r   ró   c                   ó*   — e Zd Zdededdfd„Zd	d„ZdS )
Ú_IntermediateControlBlockrô   rÇ   r   Nc                 ó"   — || _         || _        d S rR   ©rô   rÇ   ©rK   rô   rÇ   s      r   rN   z"_IntermediateControlBlock.__init__{  ó   € Ø"ˆŒØˆŒ	ˆ	ˆ	r   rt   rl   c                 ó®   — |                      d| j        ¦  «         |                      d| j        z  | j        |                     ¦   «         dz
  ¦  «         d S )Nrù   rø   r¢   )rÌ   rÇ   rô   Úindent_sizer¿   s     r   rf   z"_IntermediateControlBlock.generate  sS   € à×Ò˜& $¤)Ñ,Ô,Ð,Ø×Ò˜% $¤.Ñ0°$´)¸V×=OÒ=OÑ=QÔ=QÐTUÑ=UÑVÔVÐVÐVÐVr   rÃ   ©r   r   r   r~   rÝ   rN   rf   r   r   r   rû   rû   z  sW   € € € € € ð #ð ¨Sð °Tð ð ð ð ðWð Wð Wð Wð Wð Wr   rû   c                   ó*   — e Zd Zdededdfd„Zd	d„ZdS )
Ú
_Statementrô   rÇ   r   Nc                 ó"   — || _         || _        d S rR   rý   rþ   s      r   rN   z_Statement.__init__†  rÿ   r   rt   rl   c                 óF   — |                      | j        | j        ¦  «         d S rR   )rÌ   rô   rÇ   r¿   s     r   rf   z_Statement.generateŠ  s"   € Ø×Ò˜$œ.¨$¬)Ñ4Ô4Ð4Ð4Ð4r   rÃ   r  r   r   r   r  r  …  sQ   € € € € € ð #ð ¨Sð °Tð ð ð ð ð5ð 5ð 5ð 5ð 5ð 5r   r  c            	       ó0   — e Zd Zddedededdfd„Zdd
„ZdS )Ú_ExpressionFÚ
expressionrÇ   Úrawr   Nc                 ó0   — || _         || _        || _        d S rR   )r	  rÇ   r
  )rK   r	  rÇ   r
  s       r   rN   z_Expression.__init__�  s   € Ø$ˆŒØˆŒ	ØˆŒˆˆr   rt   rl   c                 ód  — |                      d| j        z  | j        ¦  «         |                      d| j        ¦  «         |                      d| j        ¦  «         | j        s4|j        j        �(|                      d|j        j        z  | j        ¦  «         |                      d| j        ¦  «         d S )Nz_tt_tmp = %szEif isinstance(_tt_tmp, _tt_string_types): _tt_tmp = _tt_utf8(_tt_tmp)z&else: _tt_tmp = _tt_utf8(str(_tt_tmp))z_tt_tmp = _tt_utf8(%s(_tt_tmp))z_tt_append(_tt_tmp))rÌ   r	  rÇ   r
  Úcurrent_templater0   r¿   s     r   rf   z_Expression.generate”  s¿   € Ø×Ò˜.¨4¬?Ñ:¸D¼IÑFÔFÐFØ×ÒØVØŒIñ	
ô 	
ð 	
ð 	×ÒÐBÀDÄIÑNÔNÐNØŒxð 	˜FÔ3Ô>ÐJð ×ÒØ1°FÔ4KÔ4VÑVØ”	ñô ð ð 	×ÒÐ/°´Ñ;Ô;Ð;Ð;Ð;r   )FrÃ   )r   r   r   r~   rÝ   r   rN   rf   r   r   r   r  r  Ž  s]   € € € € € ðð  3ð ¨cð ¸ð Èð ð ð ð ð
<ð <ð <ð <ð <ð <r   r  c                   ó,   ‡ — e Zd Zdededdfˆ fd„Zˆ xZS )Ú_Moduler	  rÇ   r   Nc                 óV   •— t          ¦   «                              d|z   |d¬¦  «         d S )Nz_tt_modules.T©r
  )r™   rN   )rK   r	  rÇ   rž   s      €r   rN   z_Module.__init__¦  s-   ø€ Ý‰Œ×Ò˜¨*Ñ4°dÀÐÑEÔEÐEÐEÐEr   )r   r   r   r~   rÝ   rN   r°   r±   s   @r   r  r  ¥  s_   ø€ € € € € ðF 3ð F¨cð F°dð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fr   r  c                   ó.   — e Zd Zdedededdfd„Zd
d	„ZdS )Ú_TextÚvaluerÇ   r1   r   Nc                 ó0   — || _         || _        || _        d S rR   )r  rÇ   r1   )rK   r  rÇ   r1   s       r   rN   z_Text.__init__«  s   € ØˆŒ
ØˆŒ	Ø$ˆŒˆˆr   rt   rl   c                 ó®   — | j         }d|vrt          | j        |¦  «        }|r2|                     dt	          j        |¦  «        z  | j        ¦  «         d S d S )Nz<pre>z_tt_append(%r))r  r(   r1   rÌ   r   r^   rÇ   )rK   rt   r  s      r   rf   z_Text.generate°  sj   € Ø”
ˆð ˜%ÐÐÝ% d¤o°uÑ=Ô=ˆEàð 	PØ×ÒÐ.µ´¸UÑ1CÔ1CÑCÀTÄYÑOÔOÐOÐOÐOð	Pð 	Pr   rÃ   r  r   r   r   r  r  ª  s^   € € € € € ð%˜cð %¨ð %¸#ð %À$ð %ð %ð %ð %ð
	Pð 	Pð 	Pð 	Pð 	Pð 	Pr   r  c            	       óF   — e Zd ZdZ	 d
dedee         deddfd„Zdefd	„ZdS )ry   zíRaised for template syntax errors.

    ``ParseError`` instances have ``filename`` and ``lineno`` attributes
    indicating the position of the error.

    .. versionchanged:: 4.3
       Added ``filename`` and ``lineno`` attributes.
    Nr   ÚmessageÚfilenameÚlinenor   c                 ó0   — || _         || _        || _        d S rR   ©r  r  r  )rK   r  r  r  s       r   rN   zParseError.__init__Æ  s   € ð ˆŒð !ˆŒØˆŒˆˆr   c                 ó0   — d| j         | j        | j        fz  S )Nz%s at %s:%dr  r‡   s    r   Ú__str__zParseError.__str__Ï  s   € Ø ¤¨d¬m¸T¼[ÐIÑIÐIr   rh   )	r   r   r   r}   r~   r   rÝ   rN   r  r   r   r   ry   ry   ¼  s„   € € € € € ðð ð KLðð ØðØ&.¨s¤mðØDGðà	ðð ð ð ðJ˜ð Jð Jð Jð Jð Jð Jr   ry   c            
       ó–   — e Zd Zdedeeef         dee         de	ddf
d„Z
defd„Zdd
„Zde	dedd	fd„Z	 ddededee         ddfd„ZdS )rl   rA   rq   r-   r  r   Nc                 óh   — || _         || _        || _        || _        d| _        g | _        d| _        d S rh   )rA   rq   r-   r  rï   Úinclude_stackÚ_indent)rK   rA   rq   r-   r  s        r   rN   z_CodeWriter.__init__Ô  s=   € ð ˆŒ	Ø(ˆÔØˆŒØ 0ˆÔØˆÔØˆÔØˆŒˆˆr   c                 ó   — | j         S rR   ©r"  r‡   s    r   r  z_CodeWriter.indent_sizeã  s
   € ØŒ|Ðr   r   c                 ó6   ‡ —  G ˆ fd„d¦  «        } |¦   «         S )Nc                   ó0   •— e Zd Zdˆ fd„Zdeddfˆ fd„ZdS )ú$_CodeWriter.indent.<locals>.Indenterr   rl   c                 ó(   •— ‰xj         dz  c_         ‰S )Nr¢   r$  ©r5   rK   s    €r   Ú	__enter__z._CodeWriter.indent.<locals>.Indenter.__enter__è  s   ø€ Ø�” Ñ!�”Ø�r   ÚargsNc                 óB   •— ‰j         dk    sJ ‚‰xj         dz  c_         d S )Nr   r¢   r$  ©r5   r+  rK   s     €r   Ú__exit__z-_CodeWriter.indent.<locals>.Indenter.__exit__ì  s*   ø€ Ø”| aÒ'Ð'Ð'Ð'Ø�” Ñ!�”��r   ©r   rl   ©r   r   r   r*  r	   r.  r‡   s   €r   ÚIndenterr'  ç  s_   ø€ € € € € ðð ð ð ð ð ð" 3ð "¨4ð "ð "ð "ð "ð "ð "ð "ð "r   r1  r   )rK   r1  s   ` r   rÍ   z_CodeWriter.indentæ  sC   ø€ ð	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð ˆx‰zŒzÐr   rm   rÇ   c                 ó†   ‡ — ‰ j                              ‰ j        |f¦  «         |‰ _         G ˆ fd„d¦  «        } |¦   «         S )Nc                   ó0   •— e Zd Zdˆ fd„Zdeddfˆ fd„ZdS )ú,_CodeWriter.include.<locals>.IncludeTemplater   rl   c                 ó   •— ‰S rR   r   r)  s    €r   r*  z6_CodeWriter.include.<locals>.IncludeTemplate.__enter__÷  s   ø€ Ø�r   r+  Nc                 óP   •— ‰j                              ¦   «         d         ‰_        d S rh   )r!  Úpopr  r-  s     €r   r.  z5_CodeWriter.include.<locals>.IncludeTemplate.__exit__ú  s%   ø€ Ø(,Ô(:×(>Ò(>Ñ(@Ô(@ÀÔ(C�Ô%Ð%Ð%r   r/  r0  r‡   s   €r   ÚIncludeTemplater4  ö  si   ø€ € € € € ðð ð ð ð ð ðD 3ð D¨4ð Dð Dð Dð Dð Dð Dð Dð Dr   r8  )r!  Úappendr  )rK   rm   rÇ   r8  s   `   r   rÚ   z_CodeWriter.includeò  sv   ø€ ØÔ×!Ò! 4Ô#8¸$Ð"?Ñ@Ô@Ð@Ø (ˆÔð	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð ˆÑ Ô Ð r   Úline_numberrÍ   c                 óø   — |€| j         }d| j        j        |fz  }| j        r9d„ | j        D ¦   «         }|dd                     t          |¦  «        ¦  «        z  z  }t          d|z  |z   |z   | j        ¬¦  «         d S )Nz	  # %s:%dc                 ó,   — g | ]\  }}d |j         |fz  ‘ŒS )z%s:%drà   )Ú.0Útmplr  s      r   ú
<listcomp>z*_CodeWriter.write_line.<locals>.<listcomp>  s5   € ð ð ð Ù2@°4¸�˜4œ9 fÐ-Ñ-ðð ð r   z	 (via %s)z, z    )rA   )r"  r  r,   r!  r¤   ÚreversedÚprintrA   )rK   rÇ   r:  rÍ   Úline_commentrr   s         r   rÌ   z_CodeWriter.write_lineÿ  s    € ð ˆ>Ø”\ˆFØ" dÔ&;Ô&@À+Ð%NÑNˆØÔð 	Iðð ØDHÔDVðñ ô ˆIð ˜K¨$¯)ª)µH¸YÑ4GÔ4GÑ*HÔ*HÑHÑHˆLÝˆf�v‰o Ñ$ |Ñ3¸$¼)ÐDÑDÔDÐDÐDÐDr   )r   r   rR   )r   r   r   r   r   r~   rÀ   r   r.   r*   rN   rÝ   r  rÍ   rÚ   rÌ   r   r   r   rl   rl   Ó  s  € € € € € ðàðð ˜3 Ð+Ô,ðð ˜Ô$ð	ð
 #ðð 
ðð ð ð ð˜Sð ð ð ð ð
ð 
ð 
ð 
ð! ð !°ð !Ð8Hð !ð !ð !ð !ð DHðEð EØðEØ&)ðEØ3;¸C´=ðEà	ðEð Eð Eð Eð Eð Er   rl   c            	       ó¾   — e Zd Zdedededdfd„Zdded	ed
ee         defd„Zddee         defd„Zdefd„Z	defd„Z
deeef         defd„Zdefd„Zdeddfd„ZdS )r>   r,   r   r1   r   Nc                 óL   — || _         || _        || _        d| _        d| _        d S )Nr¢   r   )r,   r   r1   rÇ   Úpos)rK   r,   r   r1   s       r   rN   z_TemplateReader.__init__  s)   € ØˆŒ	ØˆŒ	Ø$ˆŒØˆŒ	ØˆŒˆˆr   r   ÚneedleÚstartÚendc                 óâ   — |dk    s
J |¦   «         ‚| j         }||z  }|€| j                             ||¦  «        }n)||z  }||k    sJ ‚| j                             |||¦  «        }|dk    r||z  }|S )Nr   éÿÿÿÿ)rE  r   Úfind)rK   rF  rG  rH  rE  Úindexs         r   rK  z_TemplateReader.find  s…   € Ø˜Šzˆzˆz˜5‰zŒzˆzØŒhˆØ�‰ˆØˆ;Ø”I—N’N 6¨5Ñ1Ô1ˆEˆEà�3‰JˆCØ˜%’<�<�<�<Ø”I—N’N 6¨5°#Ñ6Ô6ˆEØ�BŠ;ˆ;Ø�S‰LˆEØˆr   Úcountc                 óê   — |€t          | j        ¦  «        | j        z
  }| j        |z   }| xj        | j                             d| j        |¦  «        z  c_        | j        | j        |…         }|| _        |S )Nr#   )r¦   r   rE  rÇ   rM  )rK   rM  ÚnewposÚss       r   Úconsumez_TemplateReader.consume#  sj   € Øˆ=Ý˜œ	‘N”N T¤XÑ-ˆEØ”˜EÑ!ˆØˆ	Œ	�T”Y—_’_ T¨4¬8°VÑ<Ô<Ñ<ˆ	Œ	ØŒI�d”h Ð'Ô(ˆØˆŒØˆr   c                 ó:   — t          | j        ¦  «        | j        z
  S rR   )r¦   r   rE  r‡   s    r   Ú	remainingz_TemplateReader.remaining,  s   € Ý�4”9‰~Œ~ ¤Ñ(Ð(r   c                 ó*   — |                       ¦   «         S rR   )rS  r‡   s    r   Ú__len__z_TemplateReader.__len__/  s   € Ø�~Š~ÑÔÐr   Úkeyc                 óD  — t          |t          ¦  «        rdt          | ¦  «        }|                     |¦  «        \  }}}|€| j        }n
|| j        z  }|�
|| j        z  }| j        t          |||¦  «                 S |dk     r| j        |         S | j        | j        |z            S rh   )r;   Úslicer¦   ÚindicesrE  r   )rK   rV  ÚsizerG  ÚstopÚsteps         r   Ú__getitem__z_TemplateReader.__getitem__2  s¤   € Ý�c�5Ñ!Ô!ð 	-Ý�t‘9”9ˆDØ #§¢¨DÑ 1Ô 1ÑˆE�4˜Øˆ}Øœ��à˜œÑ!�ØÐØ˜œÑ �Ø”9�U 5¨$°Ñ5Ô5Ô6Ð6Ø�1ŠWˆWØ”9˜S”>Ð!à”9˜TœX¨™^Ô,Ð,r   c                 ó*   — | j         | j        d …         S rR   )r   rE  r‡   s    r   r  z_TemplateReader.__str__B  s   € ØŒy˜œ˜˜Ô$Ð$r   Úmsgc                 ó8   — t          || j        | j        ¦  «        ‚rR   )ry   r,   rÇ   )rK   r_  s     r   Úraise_parse_errorz!_TemplateReader.raise_parse_errorE  s   € Ý˜˜dœi¨¬Ñ3Ô3Ð3r   )r   NrR   )r   r   r   r~   rN   rÝ   r   rK  rQ  rS  rU  r
   rX  r]  r  ra  r   r   r   r>   r>     sF  € € € € € ð˜Sð ¨ð ¸ð Àð ð ð ð ðð ˜3ð  sð °X¸c´]ð Ècð ð ð ð ðð ˜X cœ]ð °cð ð ð ð ð)˜3ð )ð )ð )ð )ð ˜ð  ð  ð  ð  ð-˜u S¨% ZÔ0ð -°Sð -ð -ð -ð -ð %˜ð %ð %ð %ð %ð4 Sð 4¨Tð 4ð 4ð 4ð 4ð 4ð 4r   r>   rC   c                 óæ   ‡— |                       ¦   «         }dt          t          t          |¦  «        dz   ¦  «        ¦  «        z  Šd                     ˆfd„t	          |¦  «        D ¦   «         ¦  «        S )Nz%%%dd  %%s
r¢   r3   c                 ó*   •— g | ]\  }}‰|d z   |fz  ‘ŒS )r¢   r   )r=  ÚirÇ   Úformats      €r   r?  z _format_code.<locals>.<listcomp>L  s*   ø€ ÐMÐMÐM©y°°4�F˜a !™e T˜]Ñ*ÐMÐMÐMr   )Ú
splitlinesr¦   Úreprr¤   Ú	enumerate)rC   Úlinesre  s     @r   rH   rH   I  se   ø€ Ø�OŠOÑÔ€EØ�c¥$¥s¨5¡z¤z°A¡~Ñ"6Ô"6Ñ7Ô7Ñ7€FØ�7Š7ÐMÐMÐMÐM½IÀeÑ<LÔ<LÐMÑMÔMÑNÔNÐNr   rL   rm   Úin_blockÚin_loopc                 óÄ  — t          g ¦  «        }	 d}	 |                      d|¦  «        }|dk    s|dz   |                      ¦   «         k    ra|r|                      d|z  ¦  «         |j                             t          |                      ¦   «         | j        | j	        ¦  «        ¦  «         |S | |dz            dvr|dz  }Œ¬|dz   |                      ¦   «         k     r$| |dz            dk    r| |dz            dk    r|dz  }Œë	 |dk    rH|                      |¦  «        }|j                             t          || j        | j	        ¦  «        ¦  «         |                      d¦  «        }| j        }|                      ¦   «         rQ| d         d	k    rE|                      d¦  «         |j                             t          ||| j	        ¦  «        ¦  «         �Œ¾|d
k    rn|                      d¦  «        }	|	dk    r|                      d¦  «         |                      |	¦  «         
                    ¦   «         }
|                      d¦  «         �Œ2|dk    r­|                      d¦  «        }	|	dk    r|                      d¦  «         |                      |	¦  «         
                    ¦   «         }
|                      d¦  «         |
s|                      d¦  «         |j                             t          |
|¦  «        ¦  «         �Œå|dk    s
J |¦   «         ‚|                      d¦  «        }	|	dk    r|                      d¦  «         |                      |	¦  «         
                    ¦   «         }
|                      d¦  «         |
s|                      d¦  «         |
                     d¦  «        \  }}}| 
                    ¦   «         }h d£dhdhdhdœ}|                     |¦  «        }|�f|s|                      |› d|› d�¦  «         ||vr|                      |› d|› d�¦  «         |j                             t          |
|¦  «        ¦  «         �Œ.|dk    r|s|                      d¦  «         |S |dv �r¹|d k    r�ŒZ|d!k    rP| 
                    d"¦  «         
                    d#¦  «        }|s|                      d$¦  «         t          |¦  «        }�n?|d%v r)|s|                      d&¦  «         t!          |
|¦  «        }�n|d'k    rQ| 
                    d"¦  «         
                    d#¦  «        }|s|                      d(¦  «         t#          || |¦  «        }n»|d)k    r(|s|                      d*¦  «         t!          ||¦  «        }n�|d+k    r%| 
                    ¦   «         }|d,k    rd }||_        �Œ�|d-k    r-| 
                    ¦   «         }t'          |d.¦  «         || _	        �ŒÀ|d/k    rt          ||d¬0¦  «        }n|d1k    rt)          ||¦  «        }|j                             |¦  «         �Œ|d2v rÎ|d3v rt+          | |||¦  «        }n+|d4k    rt+          | ||d ¦  «        }nt+          | |||¦  «        }|d4k    r)|s|                      d5¦  «         t-          |||¦  «        }nA|d6k    r*|s|                      d7¦  «         t/          ||||¦  «        }nt1          |
||¦  «        }|j                             |¦  «         �ŒÝ|d8v rW|s+|                      d9                     |d:d;h¦  «        ¦  «         |j                             t!          |
|¦  «        ¦  «         �Œ8|                      d<|z  ¦  «         �ŒQ)=NTr   Ú{rJ  r¢   z Missing {%% end %%} block for %s)rm  ú%ú#é   ú!z{#z#}zMissing end comment #}z{{z}}zMissing end expression }}zEmpty expressionz{%z%}zMissing end block %}zEmpty block tag ({% %})r"   >   ÚifÚforÚtryÚwhilerr  rt  )ÚelseÚelifÚexceptÚfinallyz	 outside z blockz block cannot be attached to rH  zExtra {% end %} block)
ÚextendsrÚ   ÚsetÚimportÚfromÚcommentr0   r1   r
  Úmoduler~  rz  ú"ú'zextends missing file path)r|  r}  zimport missing statementrÚ   zinclude missing file pathr{  zset missing statementr0   ÚNoner1   r3   r
  r  r  )ÚapplyrÛ   rt  rr  rs  ru  )rs  ru  rƒ  zapply missing method namerÛ   zblock missing name)ÚbreakÚcontinuez{} outside {} blockrs  ru  zunknown operator: %r)rÅ   rK  rS  ra  rw   r9  r  rQ  rÇ   r1   Ústripr  Ú	partitionÚgetrû   rx   r  râ   r0   r(   r  r@   ré   rÀ   ró   re  )rL   rm   rj  rk  rv   ÚcurlyÚconsÚstart_bracerÇ   rH  ÚcontentsÚoperatorÚspaceÚsuffixÚintermediate_blocksÚallowed_parentsrÛ   Úfnr   Ú
block_bodys                       r   r@   r@   O  sV  € õ �b‰>Œ>€DðHàˆð	Ø—K’K  UÑ+Ô+ˆEØ˜Š{ˆ{˜e a™i¨6×+;Ò+;Ñ+=Ô+=Ò=Ð=àð Ø×,Ò,Ø:¸XÑEñô ð ð ”×"Ò"Ý˜&Ÿ.š.Ñ*Ô*¨F¬K¸Ô9JÑKÔKñô ð ð �ð �e˜a‘iÔ ¨Ð7Ð7Ø˜‘
�Øð
 ˜‘	˜F×,Ò,Ñ.Ô.Ò.Ð.Ø˜5 1™9Ô%¨Ò,Ð,Ø˜5 1™9Ô%¨Ò,Ð,à˜‘
�ØØð �1Š9ˆ9Ø—>’> %Ñ(Ô(ˆDØŒK×Ò�u T¨6¬;¸Ô8IÑJÔJÑKÔKÐKà—n’n QÑ'Ô'ˆØŒ{ˆð ×ÒÑÔð 	 &¨¤)¨sÒ"2Ð"2Ø�NŠN˜1ÑÔÐØŒK×Ò�u [°$¸Ô8IÑJÔJÑKÔKÐKÙð ˜$ÒÐØ—+’+˜dÑ#Ô#ˆCØ�bŠyˆyØ×(Ò(Ð)AÑBÔBÐBØ—~’~ cÑ*Ô*×0Ò0Ñ2Ô2ˆHØ�NŠN˜1ÑÔÐÙð ˜$ÒÐØ—+’+˜dÑ#Ô#ˆCØ�bŠyˆyØ×(Ò(Ð)DÑEÔEÐEØ—~’~ cÑ*Ô*×0Ò0Ñ2Ô2ˆHØ�NŠN˜1ÑÔÐØð =Ø×(Ò(Ð);Ñ<Ô<Ð<ØŒK×Ò�{¨8°TÑ:Ô:Ñ;Ô;Ð;Ùð ˜dÒ"Ð"Ð" KÑ"Ô"Ð"Ø�kŠk˜$ÑÔˆØ�"Š9ˆ9Ø×$Ò$Ð%;Ñ<Ô<Ð<Ø—>’> #Ñ&Ô&×,Ò,Ñ.Ô.ˆØ�Š�qÑÔÐØð 	@Ø×$Ò$Ð%>Ñ?Ô?Ð?à"*×"4Ò"4°SÑ"9Ô"9Ñˆ�%˜Ø—’‘”ˆð 2Ð1Ð1Ø�FØ�gØ�wð	
ð 
Ðð .×1Ò1°(Ñ;Ô;ˆØÐ&Øð XØ×(Ò(¨HÐ)VÐ)V¸Ð)VÐ)VÐ)VÑWÔWÐWØ˜Ð.Ð.Ø×(Ò(ØÐNÐN¸hÐNÐNÐNñô ð ð ŒK×ÒÕ8¸À4ÑHÔHÑIÔIÐIÙð ˜ÒÐØð BØ×(Ò(Ð)@ÑAÔAÐAØˆKàð 
ð 
ñ 
ð ˜9Ò$Ð$ÙØ˜9Ò$Ð$ØŸš cÑ*Ô*×0Ò0°Ñ5Ô5�Øð JØ×,Ò,Ð-HÑIÔIÐIÝ% fÑ-Ô-�‘ØÐ/Ð/Ð/Øð IØ×,Ò,Ð-GÑHÔHÐHÝ" 8¨TÑ2Ô2�‘Ø˜YÒ&Ð&ØŸš cÑ*Ô*×0Ò0°Ñ5Ô5�Øð JØ×,Ò,Ð-HÑIÔIÐIÝ% f¨f°dÑ;Ô;��Ø˜UÒ"Ð"Øð FØ×,Ò,Ð-DÑEÔEÐEÝ" 6¨4Ñ0Ô0��Ø˜\Ò)Ð)Ø—\’\‘^”^�Ø˜’<�<Ø�BØ&(�Ô#ÙØ˜\Ò)Ð)Ø—|’|‘~”~�å! $¨Ñ+Ô+Ð+Ø$(�Ô!ÙØ˜UÒ"Ð"Ý# F¨D°dÐ;Ñ;Ô;��Ø˜XÒ%Ð%Ý ¨Ñ-Ô-�ØŒK×Ò˜uÑ%Ô%Ð%ÙàÐHÐHÐHàÐ+Ð+Ð+Ý# F¨H°hÀÑIÔI�
�
Ø˜WÒ$Ð$õ $ F¨H°hÀÑEÔE�
�
å# F¨H°hÀÑHÔH�
à˜7Ò"Ð"Øð JØ×,Ò,Ð-HÑIÔIÐIÝ# F¨D°*Ñ=Ô=��Ø˜WÒ$Ð$Øð CØ×,Ò,Ð-AÑBÔBÐBÝ# F¨J¸À$ÑGÔG��å% h°°jÑAÔA�ØŒK×Ò˜uÑ%Ô%Ð%ÙàÐ.Ð.Ð.Øð Ø×(Ò(Ø)×0Ò0°¸EÀ7Ð;KÑLÔLñô ð ð ŒK×Ò�z¨(°DÑ9Ô9Ñ:Ô:Ð:Ùð ×$Ò$Ð%;¸hÑ%FÑGÔGÐGñHr   )NN):r}   rY   Úior   rc   Úos.pathrš   r·   r%   rƒ   Útornador   Útornado.logr   Útornado.utilr   r   r   ra   r	   r
   r   r   r   r   r   r   ÚTYPE_CHECKINGr   r   r<   r   r9   r~   r(   r*   r.   r•   r³   r»   r?   rÅ   rÀ   rx   râ   ré   ró   rû   r  r  r  r  r'   ry   rl   r>   rH   r@   r   r   r   ú<module>rš     sŽ  ðð uð uðn €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ €€€à	Ôð -Ø,Ð,Ð,Ð,Ð,Ð,Ð,Ð,à$Ð ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 
ˆ‰Œ€ð=˜Cð = sð =¨sð =ð =ð =ð =ð2Ið Ið Ið Ið Iñ Iô Ið IðX:$ð :$ð :$ð :$ð :$ñ :$ô :$ð :$ðzð ð ð ð ˆZñ ô ð ð8Að Að Að Að A�ñ Aô Að Að,:ð :ð :ð :ð :ñ :ô :ð :ðð ð ð ð ˆEñ ô ð ð$	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð<ð <ð <ð <ð <�%ñ <ô <ð <ð,ð ð ð ð �Eñ ô ð ð
0ð 0ð 0ð 0ð 0�Eñ 0ô 0ð 0ð(
ð 
ð 
ð 
ð 
�%ñ 
ô 
ð 
ð.1ð 1ð 1ð 1ð 1�Eñ 1ô 1ð 1ð"Wð Wð Wð Wð W ñ Wô Wð Wð5ð 5ð 5ð 5ð 5�ñ 5ô 5ð 5ð<ð <ð <ð <ð <�%ñ <ô <ð <ð.Fð Fð Fð Fð Fˆkñ Fô Fð Fð
Pð Pð Pð Pð PˆEñ Pô Pð Pð$Jð Jð Jð Jð J�ñ Jô Jð Jð.7Eð 7Eð 7Eð 7Eð 7Eñ 7Eô 7Eð 7Eðt94ð 94ð 94ð 94ð 94ñ 94ô 94ð 94ðxO�sð O˜sð Oð Oð Oð Oð #Ø!ð	FHð FHØðFHàðFHð �sŒmðFHð �cŒ]ð	FHð
 ðFHð FHð FHð FHð FHð FHr   