Files
proxmox/venv/lib/python3.12/site-packages/jinja2/__pycache__/parser.cpython-312.pyc

230 lines
60 KiB
Plaintext
Raw Normal View History

<EFBFBD>
<0E>Hi<48><69><00><00>><00>UdZddlZddlZddlmZddlmZddlmZddlm Z ddlm
Z
ejr
ddl Z dd lmZej d
ej"ej$<00>Zej d ej(ej*<00>Zegd <0C><01>Zegd <0A><01>Zej4ej6ej8ej:ej<ej>d<0E>Z ejBe"ejFejHfe%d<Gd<10>d<11>Z&y)z8Parse tokens from the lexer into nodes for the compiler.<2E>N<>)<01>nodes)<01>TemplateAssertionError)<01>TemplateSyntaxError)<01>describe_token)<01>describe_token_expr)<01> Environment<6E>_ImportInclude<64>
_MacroCall) <0C>for<6F>if<69>block<63>extends<64>print<6E>macro<72>include<64>from<6F>import<72>set<65>with<74>
autoescape)<06>eq<65>ne<6E>lt<6C>lteq<65>gt<67>gteq)<06>add<64>sub<75>mul<75>div<69>floordiv<69>mod<6F> _math_nodesc<00>" <00>eZdZdZ dSdddedej edej edej ed df d
<EFBFBD>Zdefd ed ej e d ejed dfd<0F>Z dej edejejedfd ej e d dfd<12>Z dTded ej e d dfd<13>Z dUdej ejedfd ej e d dfd<15>Z dTdej ejedfd efd<17>ZdTd ej e d ej(fd<18>Zd ej,ej.ejej.ffd<19>Z dVdejedfded ejej.fd<1B>Zd ej,ej4ej6ffd<1C>Zd ej:fd<1D>Zd ej>fd<1E>Z d ejBfd<1F>Z"d ejFfd <20>Z$d ejJfd!<21>Z&d ejNfd"<22>Z(d#e)d$ed e)fd%<25>Z*d ejVfd&<26>Z,d ejZfd'<27>Z.d ej^fd(<28>Z0d#e1d dfd)<29>Z2d ejffd*<2A>Z4d ejjfd+<2B>Z6d ejnfd,<2C>Z8d ejrfd-<2D>Z:e;jx dWd.ed/d0d ejzfd1<64><05>Z>e;jx dXd.ed/edej ejedfd2ed ej,ej~ejzejff
d3<EFBFBD><05>Z> dXd.ed/edej ejedfd2ed ej,ej~ejzejff
d4<EFBFBD>Z>dYd5ed ej<>fd6<64>ZAd ej<>fd7<64>ZBd ej<>fd8<64>ZCd ej<>fd9<64>ZDd ej<>fd:<3A>ZEd ej<>fd;<3B>ZFd ej<>fd<<3C>ZGd ej<>fd=<3D>ZHd ej<>fd><3E>ZId ej<>fd?<3F>ZJdYd@ed ej<>fdA<64>ZKdVd2ed ej<>fdB<64>ZL dZdCed5edej ejedfdDed2ed ej,ejej<>ff dE<64>ZMd ejfdF<64>ZNd ej<>fdG<64>ZPd#ej<>d ej<>fdH<64>ZQd#ej<>d ej<>fdI<64>ZRd#ej<>d ej,ej<>ej<>ffdJ<64>ZUd ej<>fdK<64>ZVd ejejej<>ejej<>ej ej<>ej ej<>ffdL<64>ZXd#ej<>d ej<>fdM<64>ZZ dVd#ej ej<>dNed ej ej<>fdO<64>Z[d#ej<>d ej<>fdP<64>Z\ dTdej ejedfd ejej.fdQ<64>Z]d ej<>fdR<64>Z_y)[<5B>Parserz<72>This is the central parsing class Jinja uses. It's passed to
extensions and can be used to parse expressions or statements.
N<> environmentr <00>source<63>name<6D>filename<6D>state<74>returnc<00>$<00>||_|j||||<05>|_||_||_d|_i|_|j<00>D],}|jD]}|j|j |<<00><00>.d|_
g|_ g|_ y)NFr) r'<00> _tokenize<7A>streamr)r*<00>closed<65>
extensions<EFBFBD>iter_extensions<6E>tags<67>parse<73>_last_identifier<65>
_tag_stack<EFBFBD>_end_token_stack)<08>selfr'r(r)r*r+<00> extension<6F>tags <20>O/home/intlc/projects/proxmox/venv/lib/python3.12/site-packages/jinja2/parser.py<70>__init__zParser.__init__5s<><00><00>'<27><04><18>!<21>+<2B>+<2B>F<EFBFBD>D<EFBFBD>(<28>E<EFBFBD>J<><04> <0B><18><04> <09> <20><04> <0A><1B><04> <0B> <0F> <0A><0F>%<25>4<>4<>6<> 7<>I<EFBFBD> <20>~<7E>~<7E> 7<><03>'0<><EFBFBD><EFBFBD><04><0F><0F><03>$<24> 7<> 7<>!"<22><04><1D>')<29><04><0F>;=<3D><04><1D><00>msg<73>lineno<6E>excz te.NoReturnc<00><><00>|<02> |jjj}||||j|j<00><00>)z<>Convenience method that raises `exc` with the message, passed
line number or last line number as well as the current name and
filename.
)r/<00>currentr?r)r*)r8r>r?r@s r;<00>failz Parser.failLs7<00><00> <12>><3E><19>[<5B>[<5B>(<28>(<28>/<2F>/<2F>F<EFBFBD><11>#<23>v<EFBFBD>t<EFBFBD>y<EFBFBD>y<EFBFBD>$<24>-<2D>-<2D>8<>8r=<00>end_token_stack.c
<00><><00>t<00>}|D]!}|jtt|<05><00><00>#|r1dj tt
tt|d<00><00><00>}nd}|<01>dg}nd|<01>d<05>g}|r1|<01>||vr|j d|<06>d<05><03>n|j d|<06>d<05><03>|jr"|j d|jd<00>d<05><03>|jd j |<07>|<03>y)
Nz or <20><><EFBFBD><EFBFBD><EFBFBD>zUnexpected end of template.zEncountered unknown tag <20>.z\You probably made a nesting mistake. Jinja is expecting this tag, but currently looking for z*Jinja was looking for the following tags: z/The innermost block that needs to be closed is <20> ) r<00>update<74>mapr<00>join<69>repr<70>appendr6rC)r8r)rDr?<00>expected<65>exprs<72>currently_looking<6E>messages r;<00> _fail_ut_eofzParser._fail_ut_eofZs<00><00> #<23>u<EFBFBD><08>$<24> =<3D>E<EFBFBD> <14>O<EFBFBD>O<EFBFBD>C<EFBFBD> 3<>U<EFBFBD>;<3B> <<3C> =<3D> <1A>17<31><1B><1B><13>D<EFBFBD>#<23>1<>?<3F>2<EFBFBD>3F<33>G<>H<>2<0E> <1D>!%<25> <1D> <0F><<3C>4<>5<>G<EFBFBD>1<>$<24><18><11>;<3B><<3C>G<EFBFBD> <1C><13><1F>D<EFBFBD>H<EFBFBD>$4<><17><0E><0E>2<>2C<32>1D<31>A<EFBFBD>G<01><12>
<18><0E><0E>@<40>AR<41>@S<>ST<53>U<><12> <10>?<3F>?<3F> <13>N<EFBFBD>N<EFBFBD><14><18>O<EFBFBD>O<EFBFBD>B<EFBFBD>'<27>*<2A>!<21>-<2D> <0E>
<0A> <09> <09>#<23>(<28>(<28>7<EFBFBD>#<23>V<EFBFBD>,r=c<00>><00>|j||j|<02>y)z<>Called if the parser encounters an unknown tag. Tries to fail
with a human readable error message that could help to identify
the problem.
N)rRr7)r8r)r?s r;<00>fail_unknown_tagzParser.fail_unknown_tag<61>s<00><00> <0A><19><19>$<24><04> 5<> 5<>v<EFBFBD>>r=<00>
end_tokensc<00>z<00>t|j<00>}|<01>|j|<01>|jd||<02>y)z9Like fail_unknown_tag but for end of template situations.N)<04>listr7rMrR)r8rUr?<00>stacks r;<00>fail_eofzParser.fail_eof<6F>s8<00><00> <15>T<EFBFBD>*<2A>*<2A>+<2B><05> <15> !<21> <11>L<EFBFBD>L<EFBFBD><1A> $<24> <0C><19><19>$<24><05>v<EFBFBD>.r=<00>extra_end_rulesc<00><><00>|jjjdvry|<01>%|jjj|<01>Sy)zAre we at the end of a tuple?)<03> variable_end<6E> block_end<6E>rparenTF)r/rB<00>type<70>test_any)r8rZs r;<00> is_tuple_endzParser.is_tuple_end<6E>sD<00><00> <10>;<3B>;<3B> <1E> <1E> #<23> #<23>'N<> N<><17> <1C> (<28><17>;<3B>;<3B>&<26>&<26>/<2F>/<2F><0F>@<40> @<40>r=c<00><><00>|xjdz c_tjtj<00>}tj
j |d|j<00><00>|<01><03>|S)zDReturn a new free identifier as :class:`~jinja2.nodes.InternalName`.r<00>fi<66>r?)r5<00>object<63>__new__r<00> InternalName<6D>Noder<)r8r?<00>rvs r;<00>free_identifierzParser.free_identifier<65>sS<00><00> <0C><1D><1D><11>"<22><1D> <13>^<5E>^<5E>E<EFBFBD>.<2E>.<2E> /<2F><02> <0A>
<EFBFBD>
<EFBFBD><1B><1B>B<EFBFBD>"<22>T<EFBFBD>%:<3A>%:<3A>$;<3B> <<3C>V<EFBFBD><1B>L<><11> r=c<00>&<00>|jj}|jdk7r|jd|j<00>|j
j |j<00>d} |jtvrQt|d|jjj<00><00><02>}|<03>|r|j
j<00>SS|jdk(r-|j<00>|r|j
j<00>SS|jdk(r-|j<00>|r|j
j<00>SS|jj|j<00>}|<04>%||<00>|r|j
j<00>SS|j
j<00>d}|j|j|j<00>|r|j
j<00>yy#|r|j
j<00>wwxYw) zParse a single statement.r)ztag name expectedT<64>parse_<65>call<6C>filterNF)r/rBr_rCr?r6rM<00>value<75>_statement_keywords<64>getattr<74>pop<6F>parse_call_block<63>parse_filter_blockr1<00>getrT)r8<00>token<65>pop_tag<61>f<>exts r;<00>parse_statementzParser.parse_statement<6E>s<><00><00><14> <0B> <0B>#<23>#<23><05> <10>:<3A>:<3A><16> <1F> <10>I<EFBFBD>I<EFBFBD>)<29>5<EFBFBD><<3C><<3C> 8<> <0C><0F><0F><1E><1E>u<EFBFBD>{<7B>{<7B>+<2B><16><07> &<26><14>{<7B>{<7B>1<>1<><1B>D<EFBFBD>F<EFBFBD>4<EFBFBD>;<3B>;<3B>+><3E>+><3E>+D<>+D<>*E<>"F<>G<><01><18>s<EFBFBD> <17><14><0F><0F>#<23>#<23>%<25><17><15>{<7B>{<7B>f<EFBFBD>$<24><1B>,<2C>,<2C>.<2E><17><14><0F><0F>#<23>#<23>%<25><17><15>{<7B>{<7B>h<EFBFBD>&<26><1B>.<2E>.<2E>0<><17><14><0F><0F>#<23>#<23>%<25><17><17>/<2F>/<2F>%<25>%<25>e<EFBFBD>k<EFBFBD>k<EFBFBD>2<>C<EFBFBD><12><EFBFBD><1A>4<EFBFBD>y<EFBFBD><17><14><0F><0F>#<23>#<23>%<25><17> <11>O<EFBFBD>O<EFBFBD> <1F> <1F> !<21><1B>G<EFBFBD> <10> !<21> !<21>%<25>+<2B>+<2B>u<EFBFBD>|<7C>|<7C> <<3C><16><14><0F><0F>#<23>#<23>%<25><17><>w<EFBFBD><14><0F><0F>#<23>#<23>%<25><17>s&<00>*AG1<00> G1<00> G1<00>.G1<00>AG1<00>1H<03> drop_needlec<00>*<00>|jjd<01>|jjd<02>|j|<01>}|jjj
dk(r|j |<01>|rt|j<00>|S)aRParse multiple statements into a list until one of the end tokens
is reached. This is used to parse the body of statements as it also
parses template data if appropriate. The parser checks first if the
current token is a colon and skips it if there is one. Then it checks
for the block end and parses until if one of the `end_tokens` is
reached. Per default the active token in the stream at the end of
the call is the matched end token. If this is not wanted `drop_needle`
can be set to `True` and the end token is removed.
<20>colonr]<00>eof)r/<00>skip_if<69>expect<63>subparserBr_rY<00>next)r8rUr{<00>results r;<00>parse_statementszParser.parse_statements<74>sr<00><00> <0A> <0B> <0B><1B><1B>G<EFBFBD>$<24> <0A> <0B> <0B><1A><1A>;<3B>'<27><15><1D><1D>z<EFBFBD>*<2A><06> <10>;<3B>;<3B> <1E> <1E> #<23> #<23>u<EFBFBD> ,<2C> <10>M<EFBFBD>M<EFBFBD>*<2A> %<25> <16> <10><14><1B><1B> <1D><15> r=c<00>d<00>t|j<00>j}|jd<01><02>}|jj d<03>r(|j <00>}t j|||<01><04>S|jd<05>}|jdd<01><07>}t j||||<01><04>S)zParse an assign statement.T<><01>with_namespace<63>assignrdN)z name:endset<65>r{) r<>r/r?<00>parse_assign_targetr<00> parse_tupler<00>Assign<67> parse_filterr<72><00> AssignBlock)r8r?<00>target<65>expr<70> filter_node<64>bodys r;<00> parse_setzParser.parse_set<65>s<><00><00><15>d<EFBFBD>k<EFBFBD>k<EFBFBD>"<22>)<29>)<29><06><15>)<29>)<29><14>)<29>><3E><06> <0F>;<3B>;<3B> <1E> <1E>x<EFBFBD> (<28><17>#<23>#<23>%<25>D<EFBFBD><18><<3C><<3C><06><04>V<EFBFBD><<3C> <<3C><1A>'<27>'<27><04>-<2D> <0B><13>$<24>$<24>%5<>4<EFBFBD>$<24>H<><04><14> <20> <20><16><1B>d<EFBFBD>6<EFBFBD>J<>Jr=c <00>&<00>|jjd<01>j}|jd<02><03>}|jjd<04>|j dd<06><07>}d}|jj d <09>r|j <00>}|jj d
<EFBFBD>}|jd <0B>}t|j<00>jd k(rg}n|jd d<0E><0F>}tj|||||||<01><10>S)zParse a for loop.zname:for)<01>name:in)rZr<>F)<01>name:recursive)<02> with_condexprrZN<>name:ifr<66>)<02> name:endfor<6F> name:else<73>endfor)r<>Tr<54>rd) r/r<>r?r<>r<>r<00>parse_expressionr<6E>r<>ror<00>For)r8r?r<><00>iter<65>test<73> recursiver<65><00>else_s r;<00> parse_forzParser.parse_for<6F>s<><00><00><15><1B><1B>#<23>#<23>J<EFBFBD>/<2F>6<>6<><06><15>)<29>)<29>,<2C>)<29>G<><06> <0C> <0B> <0B><1A><1A>9<EFBFBD>%<25><13><1F><1F><1F>1D<31> <20>
<EFBFBD><04><14><04> <0F>;<3B>;<3B> <1E> <1E>y<EFBFBD> )<29><17>(<28>(<28>*<2A>D<EFBFBD><18>K<EFBFBD>K<EFBFBD>'<27>'<27>(8<>9<> <09><13>$<24>$<24>%A<>B<><04> <0F><04> <0B> <0B> <1C> "<22> "<22>h<EFBFBD> .<2E><16>E<EFBFBD><18>)<29>)<29>*:<3A><04>)<29>M<>E<EFBFBD><14>y<EFBFBD>y<EFBFBD><16><14>t<EFBFBD>U<EFBFBD>D<EFBFBD>)<29>F<EFBFBD>S<>Sr=c<00>4<00>tj|jjd<01>j<00><02>x}} |j d<04><05>|_|jd<06>|_g|_ g|_
t|j<00>}|j d<07>rPtj|jjj<00><02>}|jj|<01><00><>|j d<08>r|jd d<03>
<EFBFBD>|_
|S) zParse an if construct.r<>rdTF<54>r<>)<03> name:elifr<66><00>
name:endifr<66>r<>)r<>r<>)r<00>Ifr/r<>r?r<>r<>r<>r<><00>elif_r<5F>r<>rBrM)r8<00>noder<65>rvs r;<00>parse_ifzParser.parse_if<69>s<><00><00><1D><08><08><04> <0B> <0B>(:<3A>(:<3A>9<EFBFBD>(E<>(L<>(L<>M<>M<><04>v<EFBFBD><12><1C>(<28>(<28>u<EFBFBD>(<28>=<3D>D<EFBFBD>I<EFBFBD><1C>-<2D>-<2D>.V<>W<>D<EFBFBD>I<EFBFBD><1B>D<EFBFBD>J<EFBFBD><1B>D<EFBFBD>J<EFBFBD><18><14><1B><1B>%<25>E<EFBFBD><14>z<EFBFBD>z<EFBFBD>+<2B>&<26><1C>x<EFBFBD>x<EFBFBD>t<EFBFBD>{<7B>{<7B>':<3A>':<3A>'A<>'A<>B<><04><16> <0C> <0C>#<23>#<23>D<EFBFBD>)<29><18><16><1A><1A>K<EFBFBD>(<28>#<23>4<>4<>_<EFBFBD>RV<52>4<>W<><06> <0C> <11><15> r=c<00>`<00>tjt|j<00>j<00><01>}g}g}|jj
j dk7r<>|r|jjd<03>|j<00>}|jd<04>|j|<04>|jjd<05>|j|j<00><00>|jj
j dk7r<01><>||_ ||_ |jdd<07><08>|_|S) Nrdr]<00>comma<6D>paramr<6D>)z name:endwithTr<54>)r<00>Withr<68>r/r?rBr_r<>r<><00>set_ctxrMr<><00>targets<74>valuesr<73>r<>)r8r<>r<>r<>r<>s r;<00>
parse_withzParser.parse_withs<><00><00><14>z<EFBFBD>z<EFBFBD><14>d<EFBFBD>k<EFBFBD>k<EFBFBD>!2<>!9<>!9<>:<3A><04>&(<28><07>%'<27><06><12>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>+<2B>5<><16><14> <0B> <0B>"<22>"<22>7<EFBFBD>+<2B><19>-<2D>-<2D>/<2F>F<EFBFBD> <12>N<EFBFBD>N<EFBFBD>7<EFBFBD> #<23> <13>N<EFBFBD>N<EFBFBD>6<EFBFBD> "<22> <10>K<EFBFBD>K<EFBFBD> <1E> <1E>x<EFBFBD> (<28> <12>M<EFBFBD>M<EFBFBD>$<24>/<2F>/<2F>1<> 2<><13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>+<2B>5<><1F><04> <0C><1C><04> <0B><18>)<29>)<29>*;<3B><14>)<29>N<><04> <09><13> r=c<00><00>tjt|j<00>j<00><01>}tj
d|j <00><00>g|_|jdd<04><05>|_ tj|g<01>S)Nrdr)zname:endautoescapeTr<54>) r<00>ScopedEvalContextModifierr<72>r/r?<00>Keywordr<64><00>optionsr<73>r<><00>Scope<70>r8r<>s r;<00>parse_autoescapezParser.parse_autoescape"sh<00><00><14>.<2E>.<2E>d<EFBFBD>4<EFBFBD>;<3B>;<3B>6G<36>6N<36>6N<36>O<><04><1D> <0A> <0A>l<EFBFBD>D<EFBFBD>4I<34>4I<34>4K<34>L<>M<><04> <0C><18>)<29>)<29>*A<>t<EFBFBD>)<29>T<><04> <09><14>{<7B>{<7B>D<EFBFBD>6<EFBFBD>"<22>"r=c<00><><00>tjt|j<00>j<00><01>}|jj d<02>j |_|jjd<03>|_ |jjd<04>|_
|jjjdk(r|jd<06>|jdd<08> <09>|_|jrY|jD]J}t!|tj"<00>rt%d
<EFBFBD>|jD<00><00>s<01>:|jd <0B><00>L|jjd |jz<00>|S) Nrdr)z name:scopedz name:requiredrzpBlock names in Jinja have to be valid Python identifiers and may not contain hyphens, use an underscore instead.)z name:endblockTr<54>c3<00><>K<00>|]<}t|tj<00> xs|jj <00> <00><01><00>>y<00>w<01>N)<05>
isinstancer<00> TemplateData<74>data<74>isspace)<02>.0<EFBFBD> output_nodes r;<00> <genexpr>z%Parser.parse_block.<locals>.<genexpr>>sK<00><00><><00>B<12>$<24>#<23>;<3B><05>0B<30>0B<30>C<>C<>6<>&<26>+<2B>+<2B>3<>3<>5<>5<>6<>B<12>s<00>AAz7Required blocks can only contain comments or whitespacezname:)r<00>Blockr<6B>r/r?r<>ror)r<00>scoped<65>requiredrBr_rCr<>r<>r<><00>Output<75>any)r8r<><00> body_nodes r;<00> parse_blockzParser.parse_block(s%<00><00><14>{<7B>{<7B>$<24>t<EFBFBD>{<7B>{<7B>"3<>":<3A>":<3A>;<3B><04><18>K<EFBFBD>K<EFBFBD>&<26>&<26>v<EFBFBD>.<2E>4<>4<><04> <09><1A>k<EFBFBD>k<EFBFBD>)<29>)<29>-<2D>8<><04> <0B><1C> <0B> <0B>+<2B>+<2B>O<EFBFBD><<3C><04> <0A>
<10>;<3B>;<3B> <1E> <1E> #<23> #<23>u<EFBFBD> ,<2C> <10>I<EFBFBD>I<EFBFBD>?<3F> <0E>
<19>)<29>)<29>*<<3C>$<24>)<29>O<><04> <09>
<10>=<3D>=<3D>!<21>Y<EFBFBD>Y<EFBFBD> Y<01> <09>!<21>)<29>U<EFBFBD>\<5C>\<5C>:<3A>c<EFBFBD>B<12>(1<><EFBFBD><EFBFBD>B<12>?<12>
<19>I<EFBFBD>I<EFBFBD>W<>X<>  Y<01> <0A> <0B> <0B><1B><1B>G<EFBFBD>d<EFBFBD>i<EFBFBD>i<EFBFBD>/<2F>0<><13> r=c<00><><00>tjt|j<00>j<00><01>}|j <00>|_|S<00>Nrd)r<00>Extendsr<73>r/r?r<><00>templater<65>s r;<00> parse_extendszParser.parse_extendsHs4<00><00><14>}<7D>}<7D>D<EFBFBD><14><1B><1B>$5<>$<<3C>$<<3C>=<3D><04><1C>-<2D>-<2D>/<2F><04> <0A><13> r=r<><00>defaultc<00>8<00>|jjjdd<02>rl|jj<00>j d<03>rCt |j<00>j dk(|_|jj<00>|S||_|S)Nz name:withz name:without<75> name:contextr) r/rBr`<00>lookr<6B>r<>ro<00> with_context<78>skip)r8r<>r<>s r;<00>parse_import_contextzParser.parse_import_contextMs~<00><00> <10>;<3B>;<3B> <1E> <1E> '<27> '<27> <17><1E>
<EFBFBD><12>k<EFBFBD>k<EFBFBD><1E><1E> <20>%<25>%<25>n<EFBFBD>5<> $<24>T<EFBFBD>[<5B>[<5B> 1<> 7<> 7<>6<EFBFBD> A<>D<EFBFBD> <1D> <10>K<EFBFBD>K<EFBFBD> <1C> <1C> <1E><14> <0B>!(<28>D<EFBFBD> <1D><13> r=c<00><><00>tjt|j<00>j<00><01>}|j <00>|_|jjjd<02>rL|jj<00>jd<03>r#d|_
|jjd<05>nd|_
|j|d<04>S)Nrdz name:ignorez name:missingT<67>F) r<00>Includer<65>r/r?r<>r<>rBr<>r<><00>ignore_missingr<67>r<>r<>s r;<00> parse_includezParser.parse_includeYs<><00><00><14>}<7D>}<7D>D<EFBFBD><14><1B><1B>$5<>$<<3C>$<<3C>=<3D><04><1C>-<2D>-<2D>/<2F><04> <0A> <0F>;<3B>;<3B> <1E> <1E> #<23> #<23>M<EFBFBD> 2<>t<EFBFBD>{<7B>{<7B>7G<37>7G<37>7I<37>7N<37>7N<37> <1A>8
<EFBFBD>#'<27>D<EFBFBD> <1F> <10>K<EFBFBD>K<EFBFBD> <1C> <1C>Q<EFBFBD> <1F>"'<27>D<EFBFBD> <1F><13>(<28>(<28><14>t<EFBFBD>4<>4r=c<00>.<00>tjt|j<00>j<00><01>}|j <00>|_|jjd<02>|jd<03><04>j|_
|j|d<05>S)Nrd<00>name:asT<73><01> name_onlyF) r<00>Importr<74>r/r?r<>r<>r<>r<>r)r<>r<>r<>s r;<00> parse_importzParser.parse_importeso<00><00><14>|<7C>|<7C>4<EFBFBD><04> <0B> <0B>#4<>#;<3B>#;<3B><<3C><04><1C>-<2D>-<2D>/<2F><04> <0A> <0C> <0B> <0B><1A><1A>9<EFBFBD>%<25><1A>.<2E>.<2E><14>.<2E>><3E>C<>C<><04> <0B><13>(<28>(<28><14>u<EFBFBD>5<>5r=c<00><><00><00><04>tjt<00>j<00>j<00><01><00><04>j <00><00>_<00>jjd<02>g<00>_dtf<02><04>fd<04> } <00>jr<1B>jjd<06><00>jjjdk(<00>r|<01>r<02>n<1B>jd<05><08>}|jjd <09>r"<22>jd
|jt <00> <0B><00>jj#d <0C>rD<72>jd<05><08>}<03>jj%|j|jf<02>n%<25>jj%|j<00>|<01>s#<23>jjjdk7rn<1D>jjd<07><00><01>ot'<00>d <0A>sd<0E>_<00>S)Nrdz name:importr,c<00> <00><02><00>jjjdvrk<72>jj<00>j d<02>rBt <00>j<00>jdk(<00>_<00>jj<00>yy)N>r<00>withoutr<74>rTF)r/rBror<>r<>r<>r<>r<>)r<>r8s<00><>r;<00> parse_contextz(Parser.parse_from.<locals>.parse_contextrso<00><><00><13>{<7B>{<7B>"<22>"<22>(<28>(<28>-<0E><0E><17>+<2B>+<2B>"<22>"<22>$<24>)<29>)<29>.<2E>9<>$(<28><14><1B><1B>$5<>$;<3B>$;<3B>v<EFBFBD>$E<><04>!<21><14> <0B> <0B> <20> <20>"<22><1B>r=Tr<54>r)r<><00>_z4names starting with an underline can not be imported)r@r<>r<>F)r<00>
FromImportr<EFBFBD>r/r?r<>r<>r<><00>names<65>boolrBr_r<>r)<00>
startswithrCrrrM<00>hasattrr<72>)r8r<>r<><00>aliasr<73>s` @r;<00>
parse_fromzParser.parse_fromls<><00><><00><14><1F><1F>t<EFBFBD>D<EFBFBD>K<EFBFBD>K<EFBFBD>'8<>'?<3F>'?<3F>@<40><04><1C>-<2D>-<2D>/<2F><04> <0A> <0C> <0B> <0B><1A><1A>=<3D>)<29><17><04>
<EFBFBD> <19>t<EFBFBD> <19><13><13>z<EFBFBD>z<EFBFBD><14> <0B> <0B>"<22>"<22>7<EFBFBD>+<2B><13>{<7B>{<7B>"<22>"<22>'<27>'<27>6<EFBFBD>1<> <20>?<3F><19><1D>1<>1<>D<EFBFBD>1<>A<><06><19>;<3B>;<3B>)<29>)<29>#<23>.<2E><18>I<EFBFBD>I<EFBFBD>N<><1E> <0A> <0A>2<><1E><16>
<18>;<3B>;<3B>&<26>&<26>y<EFBFBD>1<> <20>4<>4<>t<EFBFBD>4<>D<>E<EFBFBD><18>J<EFBFBD>J<EFBFBD>%<25>%<25>v<EFBFBD>{<7B>{<7B>E<EFBFBD>J<EFBFBD>J<EFBFBD>&?<3F>@<40><18>J<EFBFBD>J<EFBFBD>%<25>%<25>f<EFBFBD>k<EFBFBD>k<EFBFBD>2<> <20>?<3F>d<EFBFBD>k<EFBFBD>k<EFBFBD>&9<>&9<>&><3E>&><3E>'<27>&I<><19><14> <0B> <0B>"<22>"<22>6<EFBFBD>*<2A>+<13>,<17>t<EFBFBD>^<5E>,<2C> %<25>D<EFBFBD> <1D><13> r=c<00>`<00>gx}|_gx}|_|jjd<01>|jjj
dk7r<>|r|jjd<03>|j d<04><05>}|jd<06>|jjd<07>r |j|j<00><00>n|r|jd<08>|j|<04>|jjj
dk7r<01><>|jjd<02>y) N<>lparenr^r<>Tr<54>r<>r<>z-non-default argument follows default argument) <0C>args<67>defaultsr/r<>rBr_r<>r<>rrMr<>rC)r8r<>r<>r<><00>args r;<00>parse_signaturezParser.parse_signature<72>s<><00><00><1D><1D><04>t<EFBFBD>y<EFBFBD>#%<25>%<25><08>4<EFBFBD>=<3D> <0C> <0B> <0B><1A><1A>8<EFBFBD>$<24><12>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>(<28>2<><13><14> <0B> <0B>"<22>"<22>7<EFBFBD>+<2B><16>*<2A>*<2A>T<EFBFBD>*<2A>:<3A>C<EFBFBD> <0F>K<EFBFBD>K<EFBFBD><07> <20><13>{<7B>{<7B>"<22>"<22>8<EFBFBD>,<2C><18><0F><0F><04> 5<> 5<> 7<>8<><19><14> <09> <09>I<>J<> <10>K<EFBFBD>K<EFBFBD><03> <1C><13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>(<28>2<> <0A> <0B> <0B><1A><1A>8<EFBFBD>$r=c<00><><00>tjt|j<00>j<00><01>}|jj
j dk(r|j|<01>ng|_g|_ |j<00>}t|tj<00>s|jd|j<00>||_|jdd<05><06>|_|S)Nrdr<>z expected call)z name:endcallTr<54>)r<00> CallBlockr<6B>r/r?rBr_r<>r<>r<>r<>r<><00>CallrCrmr<>r<>)r8r<><00> call_nodes r;rszParser.parse_call_block<63>s<><00><00><14><EFBFBD><EFBFBD>d<EFBFBD>4<EFBFBD>;<3B>;<3B>&7<>&><3E>&><3E>?<3F><04> <0F>;<3B>;<3B> <1E> <1E> #<23> #<23>x<EFBFBD> /<2F> <10> <20> <20><14> &<26><1A>D<EFBFBD>I<EFBFBD><1E>D<EFBFBD>M<EFBFBD><18>)<29>)<29>+<2B> <09><19>)<29>U<EFBFBD>Z<EFBFBD>Z<EFBFBD>0<> <10>I<EFBFBD>I<EFBFBD>o<EFBFBD>t<EFBFBD>{<7B>{<7B> 3<><1D><04> <09><18>)<29>)<29>*;<3B><14>)<29>N<><04> <09><13> r=c<00><><00>tjt|j<00>j<00><01>}|j dd<02><03>|_|jdd<02><05>|_|S)NrdT)<01> start_inline)zname:endfilterr<72>) r<00> FilterBlockr<6B>r/r?r<>rnr<>r<>r<>s r;rtzParser.parse_filter_block<63>sU<00><00><14> <20> <20><04>T<EFBFBD>[<5B>[<5B>(9<>(@<40>(@<40>A<><04><1A>'<27>'<27><04>4<EFBFBD>'<27>@<40><04> <0B><18>)<29>)<29>*=<3D>4<EFBFBD>)<29>P<><04> <09><13> r=c<00><00>tjt|j<00>j<00><01>}|j d<02><03>j |_|j|<01>|jdd<02><05>|_ |S)NrdTr<54>)z name:endmacror<6F>)
r<00>Macror<6F>r/r?r<>r)r<>r<>r<>r<>s r;<00> parse_macrozParser.parse_macro<72>se<00><00><14>{<7B>{<7B>$<24>t<EFBFBD>{<7B>{<7B>"3<>":<3A>":<3A>;<3B><04><18>,<2C>,<2C>t<EFBFBD>,<2C><<3C>A<>A<><04> <09> <0C><1C><1C>T<EFBFBD>"<22><18>)<29>)<29>*<<3C>$<24>)<29>O<><04> <09><13> r=c<00><><00>tjt|j<00>j<00><01>}g|_|jj
j dk7rt|jr|jjd<03>|jj|j<00><00>|jj
j dk7r<01>t|S)Nrdr]r<>)
rr<>r<>r/r?rBr_r<>rMr<>r<>s r;<00> parse_printzParser.parse_print<6E>s<><00><00><14>|<7C>|<7C>4<EFBFBD><04> <0B> <0B>#4<>#;<3B>#;<3B><<3C><04><17><04>
<EFBFBD><12>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>+<2B>5<><13>z<EFBFBD>z<EFBFBD><14> <0B> <0B>"<22>"<22>7<EFBFBD>+<2B> <10>J<EFBFBD>J<EFBFBD> <1D> <1D>d<EFBFBD>3<>3<>5<> 6<><13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>+<2B>5<><14> r=<00>
with_tupler<EFBFBD>zte.Literal[True]c<00><00>yr<><00>)r8rr<>s r;r<>zParser.parse_assign_target<65>s<00><00>r=r<>c<00><00>yr<>r)r8rr<>rZr<>s r;r<>zParser.parse_assign_target<65>s<00><00>9<r=c<00><><00>|rH|jjd<01>}tj|jd|j
<00><03>}n:|r|j d||<04><05>}n|j|<04><06>}|jd<02>|j<00>s@|jdt|<06>jj<00><00><02>|j
<00>|S)aParse an assignment target. As Jinja allows assignments to
tuples, this function can parse all allowed assignment targets. Per
default assignments to tuples are parsed, that can be disable however
by setting `with_tuple` to `False`. If only assignments to names are
wanted `name_only` can be set to `True`. The `extra_end_rules`
parameter is forwarded to the tuple parsing function. If
`with_namespace` is enabled, a namespace assignment may be parsed.
r)<00>storerdT)<03>
simplifiedrZr<>r<>zcan't assign to )r/r<>r<00>Nameror?r<><00> parse_primaryr<79><00>
can_assignrCr_<00>__name__<5F>lower)r8rr<>rZr<>rvr<>s r;r<>zParser.parse_assign_target<65>s<><00><00>" <15><18>K<EFBFBD>K<EFBFBD>&<26>&<26>v<EFBFBD>.<2E>E<EFBFBD><1A>Z<EFBFBD>Z<EFBFBD><05> <0B> <0B>W<EFBFBD>U<EFBFBD>\<5C>\<5C>J<>F<EFBFBD><19><1D>)<29>)<29>#<23>$3<>#1<>*<2A><12><06> <1E>+<2B>+<2B>><3E>+<2B>J<><06> <12>N<EFBFBD>N<EFBFBD>7<EFBFBD> #<23><15> <20> <20>"<22> <10>I<EFBFBD>I<EFBFBD>"<22>4<EFBFBD><06><<3C>#8<>#8<>#><3E>#><3E>#@<40>"C<>D<>f<EFBFBD>m<EFBFBD>m<EFBFBD> <0E><16> r=r<>c<00>F<00>|r|j<00>S|j<00>S)z<>Parse an expression. Per default all expressions are parsed, if
the optional `with_condexpr` parameter is set to `False` conditional
expressions are not parsed.
)<02>parse_condexpr<70>parse_or<6F>r8r<>s r;r<>zParser.parse_expressions"<00><00>
<19><17>&<26>&<26>(<28> (<28><13>}<7D>}<7D><EFBFBD>r=c<00><><00>|jjj}|j<00>}|jj d<01>r<>|j<00>}|jj d<02>r|j <00>}nd}t j||||<01><03>}|jjj}|jj d<01>r<01><>|S)Nr<4E>r<>rd)r/rBr?rrr r<00>CondExpr)r8r?<00>expr1<72>expr2<72>expr3s r;r zParser.parse_condexpr s<><00><00><15><1B><1B>$<24>$<24>+<2B>+<2B><06><14> <0A> <0A><0F><05><13>k<EFBFBD>k<EFBFBD>!<21>!<21>)<29>,<2C><18>M<EFBFBD>M<EFBFBD>O<EFBFBD>E<EFBFBD><13>{<7B>{<7B>"<22>"<22>;<3B>/<2F><1C>+<2B>+<2B>-<2D><05><1C><05><19>N<EFBFBD>N<EFBFBD>5<EFBFBD>%<25><15>v<EFBFBD>F<>E<EFBFBD><19>[<5B>[<5B>(<28>(<28>/<2F>/<2F>F<EFBFBD><13>k<EFBFBD>k<EFBFBD>!<21>!<21>)<29>,<2C><15> r=c<00>d<00>|jjj}|j<00>}|jj d<01>rd|j<00>}t j |||<01><02>}|jjj}|jj d<01>r<01>d|S)N<>name:orrd)r/rBr?<00> parse_andrr<00>Or<4F>r8r?<00>left<66>rights r;rzParser.parse_ors<><00><00><15><1B><1B>$<24>$<24>+<2B>+<2B><06><13>~<7E>~<7E><1F><04><12>k<EFBFBD>k<EFBFBD>!<21>!<21>)<29>,<2C><18>N<EFBFBD>N<EFBFBD>$<24>E<EFBFBD><18>8<EFBFBD>8<EFBFBD>D<EFBFBD>%<25><06>7<>D<EFBFBD><19>[<5B>[<5B>(<28>(<28>/<2F>/<2F>F<EFBFBD><13>k<EFBFBD>k<EFBFBD>!<21>!<21>)<29>,<2C><14> r=c<00>d<00>|jjj}|j<00>}|jj d<01>rd|j<00>}t j |||<01><02>}|jjj}|jj d<01>r<01>d|S)N<>name:andrd)r/rBr?<00> parse_notrr<00>Andrs r;rzParser.parse_and!s<><00><00><15><1B><1B>$<24>$<24>+<2B>+<2B><06><13>~<7E>~<7E><1F><04><12>k<EFBFBD>k<EFBFBD>!<21>!<21>*<2A>-<2D><18>N<EFBFBD>N<EFBFBD>$<24>E<EFBFBD><18>9<EFBFBD>9<EFBFBD>T<EFBFBD>5<EFBFBD><16>8<>D<EFBFBD><19>[<5B>[<5B>(<28>(<28>/<2F>/<2F>F<EFBFBD><13>k<EFBFBD>k<EFBFBD>!<21>!<21>*<2A>-<2D><14> r=c<00><><00>|jjjd<01>rDt|j<00>j}t j |j<00>|<01><02>S|j<00>S)N<>name:notrd) r/rBr<>r<>r?r<00>Notr<00> parse_compare)r8r?s r;rzParser.parse_not*sU<00><00> <0F>;<3B>;<3B> <1E> <1E> #<23> #<23>J<EFBFBD> /<2F><19>$<24>+<2B>+<2B>&<26>-<2D>-<2D>F<EFBFBD><18>9<EFBFBD>9<EFBFBD>T<EFBFBD>^<5E>^<5E>-<2D>f<EFBFBD>=<3D> =<3D><13>!<21>!<21>#<23>#r=c<00><><00>|jjj}|j<00>}g} |jjj}|t
vrIt |j<00>|jtj||j<00><00><00>n<>|jjd<01>r4|jtjd|j<00><00><00>n<>|jjjd<03>rx|jj<00>jd<01>rO|jjd<04>|jtjd|j<00><00><00>nn"|jjj}<01><01><>|s|Stj|||<01><06>S)Nr<4E><00>inr!r<><00>notinrd)r/rBr?<00> parse_math1r_<00>_compare_operatorsr<73>rMr<00>Operandrr<>r<>r<><00>Compare)r8r?r<><00>ops<70>
token_types r;r#zParser.parse_compare0sL<00><00><15><1B><1B>$<24>$<24>+<2B>+<2B><06><13><1F><1F>!<21><04><10><03><12><1D><1B><1B>,<2C>,<2C>1<>1<>J<EFBFBD><19>/<2F>/<2F><14>T<EFBFBD>[<5B>[<5B>!<21><13>
<EFBFBD>
<EFBFBD>5<EFBFBD>=<3D>=<3D><1A>T<EFBFBD>5E<35>5E<35>5G<35>H<>I<><15><1B><1B>$<24>$<24>Y<EFBFBD>/<2F><13>
<EFBFBD>
<EFBFBD>5<EFBFBD>=<3D>=<3D><14>t<EFBFBD>/?<3F>/?<3F>/A<>B<>C<><15><1B><1B>$<24>$<24>)<29>)<29>*<2A>5<>$<24>+<2B>+<2B>:J<>:J<>:L<>:Q<>:Q<><19>;<0E><15> <0B> <0B> <20> <20><11>#<23><13>
<EFBFBD>
<EFBFBD>5<EFBFBD>=<3D>=<3D><17>$<24>2B<32>2B<32>2D<32>E<>F<><15><19>[<5B>[<5B>(<28>(<28>/<2F>/<2F>F<EFBFBD><13><13><17>K<EFBFBD><14>}<7D>}<7D>T<EFBFBD>3<EFBFBD>v<EFBFBD>6<>6r=c<00><><00>|jjj}|j<00>}|jjjdvr<>t
|jjj}t |j<00>|j<00>}||||<01><02>}|jjj}|jjjdvr<01><>|S)N)rrrd)r/rBr?<00> parse_concatr_r$r<><00>r8r?r<00>clsrs r;r'zParser.parse_math1Gs<><00><00><15><1B><1B>$<24>$<24>+<2B>+<2B><06><13> <20> <20>"<22><04><12>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>.<2E>8<><1D>d<EFBFBD>k<EFBFBD>k<EFBFBD>1<>1<>6<>6<>7<>C<EFBFBD> <10><14><1B><1B> <1D><18>%<25>%<25>'<27>E<EFBFBD><16>t<EFBFBD>U<EFBFBD>6<EFBFBD>2<>D<EFBFBD><19>[<5B>[<5B>(<28>(<28>/<2F>/<2F>F<EFBFBD> <13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>.<2E>8<> <14> r=c<00><><00>|jjj}|j<00>g}|jjjdk(rXt |j<00>|j |j<00><00>|jjjdk(r<01>Xt|<02>dk(r|dStj||<01><04>S)N<>tilderrrd)
r/rBr?<00> parse_math2r_r<>rM<00>lenr<00>Concat)r8r?r<>s r;r.zParser.parse_concatRs<><00><00><15><1B><1B>$<24>$<24>+<2B>+<2B><06><14> <20> <20>"<22>#<23><04><12>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>'<27>1<> <10><14><1B><1B> <1D> <10>K<EFBFBD>K<EFBFBD><04>(<28>(<28>*<2A> +<2B><13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>'<27>1<> <0F>t<EFBFBD>9<EFBFBD><01>><3E><17><01>7<EFBFBD>N<EFBFBD><14>|<7C>|<7C>D<EFBFBD><16>0<>0r=c<00><><00>|jjj}|j<00>}|jjjdvr<>t
|jjj}t |j<00>|j<00>}||||<01><02>}|jjj}|jjjdvr<01><>|S)N)r r!r"r#rd)r/rBr?<00> parse_powr_r$r<>r/s r;r3zParser.parse_math2\s<><00><00><15><1B><1B>$<24>$<24>+<2B>+<2B><06><13>~<7E>~<7E><1F><04><12>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>*K<>K<><1D>d<EFBFBD>k<EFBFBD>k<EFBFBD>1<>1<>6<>6<>7<>C<EFBFBD> <10><14><1B><1B> <1D><18>N<EFBFBD>N<EFBFBD>$<24>E<EFBFBD><16>t<EFBFBD>U<EFBFBD>6<EFBFBD>2<>D<EFBFBD><19>[<5B>[<5B>(<28>(<28>/<2F>/<2F>F<EFBFBD> <13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>*K<>K<> <14> r=c<00><><00>|jjj}|j<00>}|jjjdk(r<>t |j<00>|j<00>}t j|||<01><02>}|jjj}|jjjdk(r<01><>|S)N<>powrd)r/rBr?<00> parse_unaryr_r<>r<00>Powrs r;r7zParser.parse_powgs<><00><00><15><1B><1B>$<24>$<24>+<2B>+<2B><06><13><1F><1F>!<21><04><12>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>%<25>/<2F> <10><14><1B><1B> <1D><18>$<24>$<24>&<26>E<EFBFBD><18>9<EFBFBD>9<EFBFBD>T<EFBFBD>5<EFBFBD><16>8<>D<EFBFBD><19>[<5B>[<5B>(<28>(<28>/<2F>/<2F>F<EFBFBD> <13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>%<25>/<2F>
<14> r=<00> with_filterc<00><><00>|jjj}|jjj}|dk(r<t |j<00>t j |jd<02>|<03><03>}nQ|dk(r<t |j<00>t j|jd<02>|<03><03>}n|j<00>}|j|<04>}|r|j|<04>}|S)NrFrdr) r/rBr_r?r<>r<00>Negr:<00>Posr<00> parse_postfix<69>parse_filter_expr)r8r<r,r?r<>s r;r:zParser.parse_unaryqs<><00><00><19>[<5B>[<5B>(<28>(<28>-<2D>-<2D>
<EFBFBD><15><1B><1B>$<24>$<24>+<2B>+<2B><06> <16><15> <1E> <10><14><1B><1B> <1D><18>9<EFBFBD>9<EFBFBD>T<EFBFBD>-<2D>-<2D>e<EFBFBD>4<>V<EFBFBD>D<>D<EFBFBD> <17>5<EFBFBD> <20> <10><14><1B><1B> <1D><18>9<EFBFBD>9<EFBFBD>T<EFBFBD>-<2D>-<2D>e<EFBFBD>4<>V<EFBFBD>D<>D<EFBFBD><17>%<25>%<25>'<27>D<EFBFBD><13>!<21>!<21>$<24>'<27><04> <16><17>)<29>)<29>$<24>/<2F>D<EFBFBD><13> r=c<00><><00>|jj}|jdk(<00>r>t|j<00>|jdvr/t j |jdv|j<00><04>}|S|jdvr#t j d|j<00><04>}|S|r<>|jjjdk(rht|j<00>|jjd<01>}t j|j|j|j<00><04>}|St j|jd|j<00><04>}|S|jd k(r<>t|j<00>|jg}|j}|jjjd k(rh|j|jjj<00>t|j<00>|jjjd k(r<01>ht j d
j|<05>|<06><04>}|S|jd vrBt|j<00>t j |j|j<00><04>}|S|jd k(rDt|j<00>|jd <0A><0E>}|jjd<0F>|S|jdk(r|j<00>}|S|jdk(r|j<00>}|S|j!dt#|<02><00><02>|j<00>S)z<>Parse a name or literal value. If ``with_namespace`` is enabled, also
parse namespace attr refs, for use in assignments.r))<04>true<75>false<73>True<75>False)rCrErd)<02>none<6E>NoneN<65>dot<6F>load<61>string<6E>)<02>integer<65>floatr<74>T)<01>explicit_parenthesesr^<00>lbracket<65>lbracez unexpected )r/rBr_r<>ror<00>Constr?r<><00>NSRefrrMrKr<><00>
parse_list<EFBFBD>
parse_dictrCr)r8r<>rvr<><00>attr<74>bufr?s r;rzParser.parse_primary<72>s<><00><00><15> <0B> <0B>#<23>#<23><05> <10>:<3A>:<3A><16> <1F> <10><14><1B><1B> <1D><14>{<7B>{<7B>@<40>@<40><1C>{<7B>{<7B>5<EFBFBD>;<3B>;<3B>2B<32>#B<>5<EFBFBD><<3C><<3C>X<><04>@<14> <0B>?<17><1B><1B> 0<>0<><1C>{<7B>{<7B>4<EFBFBD><05> <0C> <0C>=<3D><04><<14> <0B>; <20>D<EFBFBD>K<EFBFBD>K<EFBFBD>$7<>$7<>$<<3C>$<<3C><05>$E<><15>T<EFBFBD>[<5B>[<5B>!<21><1B>{<7B>{<7B>)<29>)<29>&<26>1<><04><1C>{<7B>{<7B>5<EFBFBD>;<3B>;<3B><04>
<EFBFBD>
<EFBFBD>5<EFBFBD><<3C><<3C>P<><04>0<14> <0B>-<1D>z<EFBFBD>z<EFBFBD>%<25>+<2B>+<2B>v<EFBFBD>e<EFBFBD>l<EFBFBD>l<EFBFBD>K<><04>,<14> <0B>+<13>Z<EFBFBD>Z<EFBFBD>8<EFBFBD> #<23> <10><14><1B><1B> <1D><18>;<3B>;<3B>-<2D>C<EFBFBD><1A>\<5C>\<5C>F<EFBFBD><16>+<2B>+<2B>%<25>%<25>*<2A>*<2A>h<EFBFBD>6<><13>
<EFBFBD>
<EFBFBD>4<EFBFBD>;<3B>;<3B>.<2E>.<2E>4<>4<>5<><14>T<EFBFBD>[<5B>[<5B>!<21><17>+<2B>+<2B>%<25>%<25>*<2A>*<2A>h<EFBFBD>6<><19>;<3B>;<3B>r<EFBFBD>w<EFBFBD>w<EFBFBD>s<EFBFBD>|<7C>F<EFBFBD>;<3B>D<EFBFBD><14> <0B><13>Z<EFBFBD>Z<EFBFBD>/<2F> /<2F> <10><14><1B><1B> <1D><18>;<3B>;<3B>u<EFBFBD>{<7B>{<7B>5<EFBFBD><<3C><<3C>@<40>D<EFBFBD><14> <0B><13>Z<EFBFBD>Z<EFBFBD>8<EFBFBD> #<23> <10><14><1B><1B> <1D><17>#<23>#<23><14>#<23>><3E>D<EFBFBD> <10>K<EFBFBD>K<EFBFBD> <1E> <1E>x<EFBFBD> (<28><14> <0B> <13>Z<EFBFBD>Z<EFBFBD>:<3A> %<25><17>?<3F>?<3F>$<24>D<EFBFBD>
<14> <0B> <13>Z<EFBFBD>Z<EFBFBD>8<EFBFBD> #<23><17>?<3F>?<3F>$<24>D<EFBFBD><14> <0B> <11>I<EFBFBD>I<EFBFBD> <0B>N<EFBFBD>5<EFBFBD>$9<>#<<3C>=<3D>u<EFBFBD>|<7C>|<7C> L<><13> r=rrOc<00>v<00><00><02><05><00>jjj}|rdtjf<02><00>fd<02> }ndtjf<02><00>fd<03> }g}d} |r<1B>jj d<06><00>j |<03>rn^|j|<07><00><00>jjjdk(rd} nn!<21>jjj}<06><>| s:|r|dS|s1<73>jdt<00>jj<00><00><02><02>tj|d |<06>
<EFBFBD>S) a<>Works like `parse_expression` but if multiple expressions are
delimited by a comma a :class:`~jinja2.nodes.Tuple` node is created.
This method could also return a regular expression instead of a tuple
if no commas where found.
The default parsing mode is a full tuple. If `simplified` is `True`
only names and literals are parsed; ``with_namespace`` allows namespace
attr refs as well. The `no_condexpr` parameter is forwarded to
:meth:`parse_expression`.
Because tuples do not require delimiters and may end in a bogus comma
an extra hint is needed that marks the end of a tuple. For example
for loops support tuples between `for` and `in`. In that case the
`extra_end_rules` is set to ``['name:in']``.
`explicit_parentheses` is true if the parsing was triggered by an
expression in parentheses. This is used to figure out if an empty
tuple is a valid expression or not.
r,c<00>(<00><02><00>j<00><01><01>S)Nr<4E>)r)r8r<>s<00><>r;r4z!Parser.parse_tuple.<locals>.parse<73>s<00><><00><1B>)<29>)<29><1E>)<29>H<>Hr=c<00>(<00><02><00>j<00><01><01>S)Nr<4E>)r<>rs<00><>r;r4z!Parser.parse_tuple.<locals>.parse<73>s<00><><00><1B>,<2C>,<2C>=<3D>,<2C>I<>Ir=FTr<54>rzExpected an expression, got rJrd) r/rBr?r<00>Exprr<72>rarMr_rCr<00>Tuple)
r8rr<>rZrOr<>r?r4r<><00>is_tuples
` ` ` r;r<>zParser.parse_tuple<6C>s<00><><00>6<16><1B><1B>$<24>$<24>+<2B>+<2B><06> <15> I<01>5<EFBFBD>:<3A>:<3A> I<01>
 J<01>5<EFBFBD>:<3A>:<3A> J<01>$&<26><04><18><08><12><13><14> <0B> <0B>"<22>"<22>7<EFBFBD>+<2B><13> <20> <20><1F>1<><15> <10>K<EFBFBD>K<EFBFBD><05><07> <20><13>{<7B>{<7B>"<22>"<22>'<27>'<27>7<EFBFBD>2<><1F><08><15><19>[<5B>[<5B>(<28>(<28>/<2F>/<2F>F<EFBFBD><13><18><13><1B>A<EFBFBD>w<EFBFBD><0E> (<28><14> <09> <09><1C>*<2A>4<EFBFBD>;<3B>;<3B>+><3E>+><3E>?<3F>B<>D<01><12>
<15>{<7B>{<7B>4<EFBFBD><16><06>7<>7r=c<00><00>|jjd<01>}g}|jjjdk7r<>|r|jjd<03>|jjjdk(rnC|j |j <00><00>|jjjdk7r<01><>|jjd<02>t j||j<00><04>S)NrP<00>rbracketr<74>rd) r/r<>rBr_rMr<>r<00>Listr?)r8rv<00>itemss r;rTzParser.parse_list<73>s<><00><00><14> <0B> <0B>"<22>"<22>:<3A>.<2E><05>$&<26><05><12>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>*<2A>4<><14><14> <0B> <0B>"<22>"<22>7<EFBFBD>+<2B><13>{<7B>{<7B>"<22>"<22>'<27>'<27>:<3A>5<><15> <11>L<EFBFBD>L<EFBFBD><14>.<2E>.<2E>0<> 1<> <13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>*<2A>4<> <0A> <0B> <0B><1A><1A>:<3A>&<26><14>z<EFBFBD>z<EFBFBD>%<25><05> <0C> <0C>5<>5r=c<00><><00>|jjd<01>}g}|jjjdk7r<>|r|jjd<03>|jjjdk(rn<>|j <00>}|jjd<04>|j <00>}|j t j|||j<00><05><00>|jjjdk7r<01><>|jjd<02>t j||j<00><05>S)NrQ<00>rbracer<65>r}rd)
r/r<>rBr_r<>rMr<00>Pairr?<00>Dict)r8rvra<00>keyros r;rUzParser.parse_dict<63>s<><00><00><14> <0B> <0B>"<22>"<22>8<EFBFBD>,<2C><05>$&<26><05><12>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>(<28>2<><14><14> <0B> <0B>"<22>"<22>7<EFBFBD>+<2B><13>{<7B>{<7B>"<22>"<22>'<27>'<27>8<EFBFBD>3<><15><16>'<27>'<27>)<29>C<EFBFBD> <10>K<EFBFBD>K<EFBFBD> <1E> <1E>w<EFBFBD> '<27><18>)<29>)<29>+<2B>E<EFBFBD> <11>L<EFBFBD>L<EFBFBD><15><1A><1A>C<EFBFBD><15>s<EFBFBD>z<EFBFBD>z<EFBFBD>B<> C<><13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>(<28>2<> <0A> <0B> <0B><1A><1A>8<EFBFBD>$<24><14>z<EFBFBD>z<EFBFBD>%<25><05> <0C> <0C>5<>5r=c<00><><00> |jjj}|dk(s|dk(r|j|<01>}n|dk(r|j |<01>}n |S<00>W)NrIrPr<>)r/rBr_<00>parse_subscript<70>
parse_call<EFBFBD>r8r<>r,s r;r@zParser.parse_postfix s^<00><00><12><1D><1B><1B>,<2C>,<2C>1<>1<>J<EFBFBD><19>U<EFBFBD>"<22>j<EFBFBD>J<EFBFBD>&><3E><1B>+<2B>+<2B>D<EFBFBD>1<><04><1C>x<EFBFBD>'<27><1B><EFBFBD><EFBFBD>t<EFBFBD>,<2C><04><15><13> <0B>r=c<00><00> |jjj}|dk(r|j|<01>}nT|dk(r5|jjjdk(r|j |<01>}n|dk(r|j |<01>}n |S<00><>)N<>piper)<00>isr<73>)r/rBr_r<>ro<00>
parse_testrirjs r;rAzParser.parse_filter_exprs<><00><00><12><1D><1B><1B>,<2C>,<2C>1<>1<>J<EFBFBD><19>V<EFBFBD>#<23><1B>(<28>(<28><14>.<2E><04><1B>v<EFBFBD>%<25>$<24>+<2B>+<2B>*=<3D>*=<3D>*C<>*C<>t<EFBFBD>*K<><1B><EFBFBD><EFBFBD>t<EFBFBD>,<2C><04><1C>x<EFBFBD>'<27><1B><EFBFBD><EFBFBD>t<EFBFBD>,<2C><04><15><13> <0B>r=c<00>T<00>t|j<00>}|jdk(r<>|jj}t|j<00>|jdk(r-t j
||j d|j<00><04>S|jdk7r|jd|j<00>t j|j |j<00><04>}t j||d|j<00><04>S|jdk(r<>g}|jjjdk7r`|r|jjd <09>|j|j<00><00>|jjjdk7r<01>`|jjd<08>t|<05>d
k(r|d }n"t j|d|j<00><04>}t j||d|j<00><04>S|jd |j<00>y) NrIr)rJrdrMzexpected name or numberrPr_r<>rrzexpected subscript expression)r<>r/r_rBr<00>Getattrror?rCrR<00>Getitemr<6D>rM<00>parse_subscribedr4r\)r8r<>rv<00>
attr_tokenr<EFBFBD>r<>s r;rhzParser.parse_subscript)s<><00><00><15>T<EFBFBD>[<5B>[<5B>!<21><05> <11>:<3A>:<3A><15> <1E><1D><1B><1B>,<2C>,<2C>J<EFBFBD> <10><14><1B><1B> <1D><19><EFBFBD><EFBFBD>&<26>(<28><1C>}<7D>}<7D><18>*<2A>*<2A>*<2A>F<EFBFBD>5<EFBFBD><<3C><<3C><12><12><1C><1F><1F>I<EFBFBD>-<2D><14> <09> <09>3<>Z<EFBFBD>5F<35>5F<35>G<><17>+<2B>+<2B>j<EFBFBD>.<2E>.<2E>z<EFBFBD>7H<37>7H<37>I<>C<EFBFBD><18>=<3D>=<3D><14>s<EFBFBD>F<EFBFBD>5<EFBFBD><<3C><<3C>H<> H<> <10>:<3A>:<3A><1A> #<23>')<29>D<EFBFBD><16>+<2B>+<2B>%<25>%<25>*<2A>*<2A>j<EFBFBD>8<><17><18>K<EFBFBD>K<EFBFBD>&<26>&<26>w<EFBFBD>/<2F><14> <0B> <0B>D<EFBFBD>1<>1<>3<>4<><17>+<2B>+<2B>%<25>%<25>*<2A>*<2A>j<EFBFBD>8<> <11>K<EFBFBD>K<EFBFBD> <1E> <1E>z<EFBFBD> *<2A><12>4<EFBFBD>y<EFBFBD>A<EFBFBD>~<7E><1A>1<EFBFBD>g<EFBFBD><03><1B>k<EFBFBD>k<EFBFBD>$<24><06>u<EFBFBD>|<7C>|<7C>D<><03><18>=<3D>=<3D><14>s<EFBFBD>F<EFBFBD>5<EFBFBD><<3C><<3C>H<> H<> <0C> <09> <09>1<>5<EFBFBD><<3C><<3C>@r=c<00><><00>|jjj}|jjjdk(rt |j<00>dg}nM|j <00>}|jjjdk7r|St |j<00>|g}|jjjdk(r|j d<00>nS|jjjdvr |j |j <00><00>n|j d<00>|jjjdk(rit |j<00>|jjjdvr |j |j <00><00>n#|j d<00>n|j d<00>tj|d|i<01>S)Nr})r_r<>r?) r/rBr?r_r<>r<>rMr<00>Slice)r8r?r<>r<>s r;rrzParser.parse_subscribedHs^<00><00><15><1B><1B>$<24>$<24>+<2B>+<2B><06> <10>;<3B>;<3B> <1E> <1E> #<23> #<23>w<EFBFBD> .<2E> <10><14><1B><1B> <1D><18>6<EFBFBD>D<EFBFBD><17>(<28>(<28>*<2A>D<EFBFBD><13>{<7B>{<7B>"<22>"<22>'<27>'<27>7<EFBFBD>2<><1B> <0B> <10><14><1B><1B> <1D><18>6<EFBFBD>D<EFBFBD> <0F>;<3B>;<3B> <1E> <1E> #<23> #<23>w<EFBFBD> .<2E> <10>K<EFBFBD>K<EFBFBD><04> <1D> <11>[<5B>[<5B> <20> <20> %<25> %<25>-B<> B<> <10>K<EFBFBD>K<EFBFBD><04>-<2D>-<2D>/<2F> 0<> <10>K<EFBFBD>K<EFBFBD><04> <1D> <0F>;<3B>;<3B> <1E> <1E> #<23> #<23>w<EFBFBD> .<2E> <10><14><1B><1B> <1D><13>{<7B>{<7B>"<22>"<22>'<27>'<27>/D<>D<><14> <0B> <0B>D<EFBFBD>1<>1<>3<>4<><14> <0B> <0B>D<EFBFBD>!<21> <10>K<EFBFBD>K<EFBFBD><04> <1D><14>{<7B>{<7B>4<EFBFBD>0<>&<26>0<>0r=c<00>0<00><00> <09><00>jjd<01><00> g}g}d}d}d}dtddf<04><00> fd<05> }<06>jjjdk7<00>r|r@<40>jjd<07><00>jjjdk(r<02>jjjdk(r7||duxr|du<00>t <00>j<00><00>j <00>}<03>nY<6E>jjjd k(r1||du<00>t <00>j<00><00>j <00>}<04>n<05>jjjd
k(r<><72>jj<00>jd k(r<>||du<00><00>jjj}<07>jjd <0C><00>j <00>}|jtj|||j<00> <0A><00>n4||duxr |duxr| <00>|j<00>j <00><00>d}<05>jjjdk7r<02><02><1C>jjd<06>||||fS)Nr<4E>Fr<46>r,c<00>D<00><02>|s<1D>jd<01>j<00>yy)Nz+invalid syntax for function call expression)rCr?)r<>r8rvs <20><>r;<00>ensurez&Parser.parse_call_args.<locals>.ensurews<00><><00><17><14> <09> <09>G<><15><1C><1C>V<>r=r^r<>r r9r)r<>r<>rdT)r/r<>r<>rBr_r<>r<>r<>ror<>rMrr<>r?)
r8r<><00>kwargs<67>dyn_args<67>
dyn_kwargs<EFBFBD> require_commarxrfrorvs
` @r;<00>parse_call_argszParser.parse_call_argshs+<00><><00><15> <0B> <0B>"<22>"<22>8<EFBFBD>,<2C><05><11><04><13><06><17><08><19>
<EFBFBD><1D> <0A> W<01><14> W<01>$<24> W<01><13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>(<28>2<><1C><14> <0B> <0B>"<22>"<22>7<EFBFBD>+<2B><18>;<3B>;<3B>&<26>&<26>+<2B>+<2B>x<EFBFBD>7<><19><13>{<7B>{<7B>"<22>"<22>'<27>'<27>5<EFBFBD>0<><16>x<EFBFBD>4<EFBFBD>'<27>><3E>J<EFBFBD>$<24>,><3E>?<3F><14>T<EFBFBD>[<5B>[<5B>!<21><1F>0<>0<>2<><08><15><1B><1B>$<24>$<24>)<29>)<29>U<EFBFBD>2<><16>z<EFBFBD>T<EFBFBD>)<29>*<2A><14>T<EFBFBD>[<5B>[<5B>!<21>!<21>2<>2<>4<>
<EFBFBD><19>K<EFBFBD>K<EFBFBD>'<27>'<27>,<2C>,<2C><06>6<><1C> <0B> <0B>(<28>(<28>*<2A>/<2F>/<2F>8<EFBFBD>;<3B><1B>:<3A><14>-<2D>.<2E><1E>+<2B>+<2B>-<2D>-<2D>3<>3<>C<EFBFBD><18>K<EFBFBD>K<EFBFBD>$<24>$<24>Q<EFBFBD>'<27> <20>1<>1<>3<>E<EFBFBD><1A>M<EFBFBD>M<EFBFBD>%<25>-<2D>-<2D><03>U<EFBFBD>5<EFBFBD><<3C><<3C>"P<>Q<><1B>8<EFBFBD>t<EFBFBD>+<2B>Q<>
<EFBFBD>d<EFBFBD>0B<EFBFBD>Q<>6<EFBFBD>z<EFBFBD>R<><18>K<EFBFBD>K<EFBFBD><04> 5<> 5<> 7<>8<> <20>M<EFBFBD>A<13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>(<28>2<>D <0A> <0B> <0B><1A><1A>8<EFBFBD>$<24><13>V<EFBFBD>X<EFBFBD>z<EFBFBD>1<>1r=c<00><><00>|jj}|j<00>\}}}}tj||||||j
<00><01>Sr<>)r/rBr}rr<>r?)r8r<>rvr<>ryrzr{s r;rizParser.parse_call<6C>sG<00><00><15> <0B> <0B>#<23>#<23><05>-1<>-A<>-A<>-C<>*<2A><04>f<EFBFBD>h<EFBFBD>
<EFBFBD><14>z<EFBFBD>z<EFBFBD>$<24><04>f<EFBFBD>h<EFBFBD>
<EFBFBD>5<EFBFBD><<3C><<3C>X<>Xr=r<>c <00><00>|jjjdk(s|<02>rW|st|j<00>|jj d<02>}|j
}|jjjdk(rdt|j<00>|d|jj d<02>j
zz }|jjjdk(r<01>d|jjjdk(r|j <00>\}}}}ng}g}dx}}tj|||||||j<00><06>}d}|jjjdk(r<02><01>S|r<02><01>W|S)Nrlr)rIrGr<>rdF)
r/rBr_r<>r<>ror}r<00>Filterr?) r8r<>r<>rvr)r<>ryrzr{s r;r<>zParser.parse_filter<65>s<<00><00><13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>&<26>0<>L<EFBFBD><1F><14>T<EFBFBD>[<5B>[<5B>!<21><18>K<EFBFBD>K<EFBFBD>&<26>&<26>v<EFBFBD>.<2E>E<EFBFBD><18>;<3B>;<3B>D<EFBFBD><16>+<2B>+<2B>%<25>%<25>*<2A>*<2A>e<EFBFBD>3<><14>T<EFBFBD>[<5B>[<5B>!<21><14><03>d<EFBFBD>k<EFBFBD>k<EFBFBD>0<>0<><16>8<>><3E>><3E>><3E>><3E><04><17>+<2B>+<2B>%<25>%<25>*<2A>*<2A>e<EFBFBD>3<><14>{<7B>{<7B>"<22>"<22>'<27>'<27>8<EFBFBD>3<>59<35>5I<35>5I<35>5K<35>2<><04>f<EFBFBD>h<EFBFBD>
<EFBFBD><19><04><1B><06>(,<2C>,<2C><08>:<3A><18><<3C><<3C><14>d<EFBFBD>D<EFBFBD>&<26>(<28>J<EFBFBD>u<EFBFBD>|<7C>|<7C><0E>D<EFBFBD>!<21>L<EFBFBD>#<13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>&<26>0<>L<EFBFBD>$<14> r=c <00>b<00>t|j<00>}|jjjd<01>rt|j<00>d}nd}|jj d<04>j
}|jjj dk(rdt|j<00>|d|jj d<04>j
zz }|jjj dk(r<01>ddx}}g}|jjj dk(r|j<00>\}}}}n<>|jjj dvr<>|jjjd d
d <0B>s[|jjjd <0C>r|jd <0A>|j<00>} |j| <09>} | g}ng}tj|||||||j<00><0E>}|r!tj||j<00><0E>}|S)Nr!TFr)rIrGr<>>r)rNrQr<>rKrMrPr<>rrzname:isz'You cannot chain multiple tests with isrd)r<>r/rBr<>r<>ror_r}r`rCrr@r<00>Testr?r")
r8r<>rv<00>negatedr)rzr{ryr<><00>arg_nodes
r;rnzParser.parse_test<73>s<><00><00><14>T<EFBFBD>[<5B>[<5B>!<21><05> <0F>;<3B>;<3B> <1E> <1E> #<23> #<23>J<EFBFBD> /<2F> <10><14><1B><1B> <1D><1A>G<EFBFBD><1B>G<EFBFBD><13>{<7B>{<7B>!<21>!<21>&<26>)<29>/<2F>/<2F><04><12>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>%<25>/<2F> <10><14><1B><1B> <1D> <10>C<EFBFBD>$<24>+<2B>+<2B>,<2C>,<2C>V<EFBFBD>4<>:<3A>:<3A>:<3A> :<3A>D<EFBFBD><13>k<EFBFBD>k<EFBFBD>!<21>!<21>&<26>&<26>%<25>/<2F>!%<25>$<24><08>:<3A>(*<2A><06> <0F>;<3B>;<3B> <1E> <1E> #<23> #<23>x<EFBFBD> /<2F>15<31>1E<31>1E<31>1G<31> .<2E>D<EFBFBD>&<26>(<28>J<EFBFBD> <11>[<5B>[<5B> <20> <20> %<25> %<25>*
<EFBFBD>
<EFBFBD><17>+<2B>+<2B>%<25>%<25>.<2E>.<2E>{<7B>I<EFBFBD>z<EFBFBD>R<><13>{<7B>{<7B>"<22>"<22>'<27>'<27> <09>2<><14> <09> <09>C<>D<><1B>)<29>)<29>+<2B>H<EFBFBD><1B>)<29>)<29>(<28>3<>H<EFBFBD><1C>:<3A>D<EFBFBD><15>D<EFBFBD><14>z<EFBFBD>z<EFBFBD> <10>$<24><04>f<EFBFBD>h<EFBFBD>
<EFBFBD>5<EFBFBD><<3C><<3C>
<EFBFBD><04> <13><18>9<EFBFBD>9<EFBFBD>T<EFBFBD>%<25>,<2C>,<2C>7<>D<EFBFBD><13> r=c<00><><00><06><07>g<00>g<00><07>j}|<01>|jj|<01>d <0B><06>fd<01> } |j<00>r<>|jj}|jdk(rT|j
r1|t j|j
|j<00><03><00>t|j<00><00>n1|jdk(rIt|j<00>||jd<05><06><00>|jjd<07>n<>|jdk(r<>|<03>t|j<00>|<01>B|jjj|<01>r<1F>|<01>|jj<00>SS|j<00>}t|t <00>r<12>j#|<05>n<11>j|<05>|jjd <09>n t%d
<EFBFBD><00>|jr<02><01><>|<03>|<01>|jj<00><00>S#|<01>|jj<00>wwxYw) Nc<00><><00><02><00>r><3E>dj}<00>jtj<00>dd|<00><02><00><00>dd<00>=yy)Nrrd)r?rMrr<>)r?r<><00> data_buffers <20><>r;<00>
flush_dataz#Parser.subparse.<locals>.flush_data<74>s<<00><><00><1A>$<24>Q<EFBFBD><1E>.<2E>.<2E><06><14> <0B> <0B>E<EFBFBD>L<EFBFBD>L<EFBFBD><1B>Q<EFBFBD><1E><06>G<>H<><1F><01>N<EFBFBD>r=r<>rd<00>variable_beginTr<54>r\<00> block_beginr]zinternal parsing error)r,N)rMr7r/rBr_rorr<>r?r<>r<>r<>r`rrrzr<>rW<00>extend<6E>AssertionError)r8rU<00>add_datar<61>rvrir<>r<>s @@r;r<>zParser.subparse<73>s<><00><><00>$&<26><04>*,<2C> <0B><1E>%<25>%<25><08> <15> !<21> <10> !<21> !<21> (<28> (<28><1A> 4<> #<23>  ,<2C><16>+<2B>+<2B><1C> <0B> <0B>+<2B>+<2B><05><18>:<3A>:<3A><16>'<27><1C>{<7B>{<7B> <20><15>!3<>!3<>E<EFBFBD>K<EFBFBD>K<EFBFBD><05> <0C> <0C>!U<>V<><18><14><1B><1B>%<25><1A>Z<EFBFBD>Z<EFBFBD>#3<>3<><18><14><1B><1B>%<25><1C>T<EFBFBD>-<2D>-<2D>D<EFBFBD>-<2D>A<>B<><18>K<EFBFBD>K<EFBFBD>&<26>&<26>~<7E>6<><1A>Z<EFBFBD>Z<EFBFBD>=<3D>0<><1E>L<EFBFBD><18><14><1B><1B>%<25>!<21>-<2D>2N<32>$<24>+<2B>+<2B>2E<32>2E<32>2N<32>2N<32>#<23>3<16> $<24><1A>%<25><14>%<25>%<25>)<29>)<29>+<2B>&<26><1E>-<2D>-<2D>/<2F>B<EFBFBD>!<21>"<22>d<EFBFBD>+<2B><1C> <0B> <0B>B<EFBFBD><0F><1C> <0B> <0B>B<EFBFBD><0F><18>K<EFBFBD>K<EFBFBD>&<26>&<26>{<7B>3<>(<28>)A<>B<>B<>1<17>+<2B>+<2B>4 <17>L<EFBFBD><19>%<25><14>%<25>%<25>)<29>)<29>+<2B><13> <0B><><1A>%<25><14>%<25>%<25>)<29>)<29>+<2B>&<26>s<00>D/H"<00>A6H"<00>=H"<00>"Ic<00><><00>tj|j<00>d<01><02>}|j|j<00>|S)z0Parse the whole template into a `Template` node.rrd)r<00>Templater<65><00>set_environmentr')r8r<>s r;r4z Parser.parses1<00><00><16><1E><1E><04> <0A> <0A><0F><01>:<3A><06><0E><1E><1E>t<EFBFBD>/<2F>/<2F>0<><15> r=)NNNr<4E>)NN)F)..)TFNF)T)FTNFF)`r
<00>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>str<74>t<>Optionalr<r<00>int<6E>TyperCr`r\rRrTrYr<>rarrgrj<00>Unionrhrzr<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r
r<>r<>r<>r<>r<>r<>r<>r r<>r<>rsr<>rtr<>r<>r<>r<><00>typing<6E>overloadrr<>rSr[r<>r rrrr#r'r.r3r7r:rr<>rTrerUr@rArprqrhrrr<>r}r<>rir<>rnr<>r<>r4rr=r;r&r&0s<><00><00><08>!%<25>$(<28>!%<25> ><3E>"<22>><3E><14>><3E><10>j<EFBFBD>j<EFBFBD><13>o<EFBFBD> ><3E>
<14>*<2A>*<2A>S<EFBFBD>/<2F> ><3E> <11>z<EFBFBD>z<EFBFBD>#<23><EFBFBD> ><3E>
<0E>><3E>4#'<27>+><3E> 9<> <10> 9<><12>
<EFBFBD>
<EFBFBD>3<EFBFBD><0F> 9<><0F>V<EFBFBD>V<EFBFBD>'<27> (<28> 9<>
<17> 9<>&-<2D><0F>j<EFBFBD>j<EFBFBD><13>o<EFBFBD>&-<2D><1B><16><16><01><07><07><03>S<EFBFBD><08> 1<>2<>&-<2D><12>
<EFBFBD>
<EFBFBD>3<EFBFBD><0F> &-<2D>
<17> &-<2D>R48<34>?<3F><17>?<3F>!"<22><1A><1A>C<EFBFBD><1F>?<3F> <16>?<3F>59<35>"&<26> /<2F><15>J<EFBFBD>J<EFBFBD>q<EFBFBD>w<EFBFBD>w<EFBFBD>s<EFBFBD>C<EFBFBD>x<EFBFBD>0<>1<> /<2F><12>
<EFBFBD>
<EFBFBD>3<EFBFBD><0F> /<2F>
<17> /<2F>@D<01><15> <20>z<EFBFBD>z<EFBFBD>!<21>'<27>'<27>#<23>s<EFBFBD>(<28>*;<3B><<3C><15> <0A><15><12>a<EFBFBD>j<EFBFBD>j<EFBFBD><13>o<EFBFBD><12><15>AS<41>AS<41><12>&<26><11><17><17><15><1A><1A>Q<EFBFBD>V<EFBFBD>V<EFBFBD>E<EFBFBD>J<EFBFBD>J<EFBFBD>5G<35>)G<>!H<>&<26><BG<01><16><1B>'<27>'<27>#<23>s<EFBFBD>(<28>+<2B><16>:><3E><16>
<EFBFBD><16><16><05>
<EFBFBD>
<EFBFBD> <1B><16>: K<01>1<EFBFBD>7<EFBFBD>7<EFBFBD>5<EFBFBD><<3C><<3C><15>1B<31>1B<31>#B<>C<> K<01>T<01>5<EFBFBD>9<EFBFBD>9<EFBFBD>T<01>&<16>%<25>(<28>(<28><16>$<14>E<EFBFBD>J<EFBFBD>J<EFBFBD><14>"#<23>%<25>+<2B>+<2B>#<23> <14>U<EFBFBD>[<5B>[<5B><14>@<14>u<EFBFBD>}<7D>}<7D><14>
<14>"<22>
<14>-1<>
<14> <17>
<14>
5<>u<EFBFBD>}<7D>}<7D>
5<>6<>e<EFBFBD>l<EFBFBD>l<EFBFBD>6<>(<14>E<EFBFBD>,<2C>,<2C>(<14>T%<25>J<EFBFBD>%<25>4<EFBFBD>%<25> <14>%<25>/<2F>/<2F> <14><14>E<EFBFBD>$5<>$5<><14> <14>U<EFBFBD>[<5B>[<5B><14><14>U<EFBFBD>\<5C>\<5C><14> <0C>_<EFBFBD>_<EFBFBD>FI<46><19><1E><19>1C<31><19> <0E><1A><1A><19><15><19> <0C>_<EFBFBD>_<EFBFBD> <20><1F>9=<3D>$<24> <<3C><18><<3C><18><<3C><1B><1A><1A>A<EFBFBD>G<EFBFBD>G<EFBFBD>C<EFBFBD><13>H<EFBFBD>$5<>6<> <<3C>
<1D> <<3C>
<0B><17><17><15><1B><1B>e<EFBFBD>j<EFBFBD>j<EFBFBD>%<25>+<2B>+<2B>5<> 6<> <<3C><15><<3C> <20><1F>9=<3D>$<24> %<16><18>%<16><18>%<16><1B><1A><1A>A<EFBFBD>G<EFBFBD>G<EFBFBD>C<EFBFBD><13>H<EFBFBD>$5<>6<> %<16>
<1D> %<16>
<0B><17><17><15><1B><1B>e<EFBFBD>j<EFBFBD>j<EFBFBD>%<25>+<2B>+<2B>5<> 6<> %<16>N<1F>d<EFBFBD><1F>e<EFBFBD>j<EFBFBD>j<EFBFBD><1F> <15><05>
<EFBFBD>
<EFBFBD> <15><14>%<25>*<2A>*<2A><14><14>5<EFBFBD>:<3A>:<3A><14>$<24>5<EFBFBD>:<3A>:<3A>$<24> 7<>u<EFBFBD>z<EFBFBD>z<EFBFBD>7<>. <14>U<EFBFBD>Z<EFBFBD>Z<EFBFBD> <14>1<>e<EFBFBD>j<EFBFBD>j<EFBFBD>1<> <14>U<EFBFBD>Z<EFBFBD>Z<EFBFBD> <14><14>5<EFBFBD>:<3A>:<3A><14><14>t<EFBFBD><14>u<EFBFBD>z<EFBFBD>z<EFBFBD><14>$(<14>D<EFBFBD>(<14>U<EFBFBD>Z<EFBFBD>Z<EFBFBD>(<14>X!<21>"<22>9=<3D>%*<2A>$<24> C8<><18>C8<><1C>C8<><1B><1A><1A>A<EFBFBD>G<EFBFBD>G<EFBFBD>C<EFBFBD><13>H<EFBFBD>$5<>6<> C8<>
#<23> C8<> <1D> C8<>
<0B><17><17><15><1B><1B>e<EFBFBD>j<EFBFBD>j<EFBFBD>(<28> )<29>C8<>J
6<>E<EFBFBD>J<EFBFBD>J<EFBFBD>
6<> 6<>E<EFBFBD>J<EFBFBD>J<EFBFBD> 6<> <14>%<25>*<2A>*<2A> <14><15><1A><1A> <14> <14>e<EFBFBD>j<EFBFBD>j<EFBFBD> <14>U<EFBFBD>Z<EFBFBD>Z<EFBFBD> <14>A<01><19>J<EFBFBD>J<EFBFBD>A<01>
<EFBFBD><17><17><15><1D><1D><05> <0A> <0A>-<2D> .<2E>A<01>>1<>%<25>*<2A>*<2A>1<>@62<>
<EFBFBD><17><17> <09><06><06>u<EFBFBD>z<EFBFBD>z<EFBFBD><1A> <09><06><06>u<EFBFBD>}<7D>}<7D><1D> <09>
<EFBFBD>
<EFBFBD>5<EFBFBD>:<3A>:<3A><1E> <09>
<EFBFBD>
<EFBFBD>5<EFBFBD>:<3A>:<3A><1E> <20>
<06>62<>pY<01>u<EFBFBD>z<EFBFBD>z<EFBFBD>Y<01>e<EFBFBD>j<EFBFBD>j<EFBFBD>Y<01>BG<01><14><15>J<EFBFBD>J<EFBFBD>u<EFBFBD>z<EFBFBD>z<EFBFBD>*<2A><14>:><3E><14>
<EFBFBD><1A><1A>E<EFBFBD>J<EFBFBD>J<EFBFBD> <1F><14>.$<14>u<EFBFBD>z<EFBFBD>z<EFBFBD>$<14>e<EFBFBD>j<EFBFBD>j<EFBFBD>$<14>N;?<3F>/<14><1B>*<2A>*<2A>Q<EFBFBD>W<EFBFBD>W<EFBFBD>S<EFBFBD>#<23>X<EFBFBD>%6<>7<>/<14>
<EFBFBD><16><16><05>
<EFBFBD>
<EFBFBD> <1B>/<14>b<16>u<EFBFBD>~<7E>~<7E>r=r&)'r<>r<>r<>rLr<00>
exceptionsrr<00>lexerrr<00> TYPE_CHECKING<4E>typing_extensions<6E>ter'r <00>TypeVarr<72>r<>r
r<>r<>r <00> frozensetrpr(<00>Add<64>Sub<75>Mul<75>Div<69>FloorDiv<69>Modr$rer<>r<>r[<00>__annotations__r&rr=r;<00><module>r<>s<><00><01>><3E> <0A><12><13>.<2E>+<2B>!<21>&<26><04>?<3F>?<3F>"<22>(<28><1A><11><19><19>+<2B>U<EFBFBD>\<5C>\<5C>5<EFBFBD>=<3D>=<3D>I<><0E> <16>Q<EFBFBD>Y<EFBFBD>Y<EFBFBD>|<7C>U<EFBFBD>[<5B>[<5B>%<25>/<2F>/<2F> B<>
<EFBFBD><1F> <06><02><13> <1F>G<>H<><12> <11>9<EFBFBD>9<EFBFBD> <10>9<EFBFBD>9<EFBFBD> <10>9<EFBFBD>9<EFBFBD> <10>9<EFBFBD>9<EFBFBD><15><0E><0E> <10>9<EFBFBD>9<EFBFBD> 0<02> <0B>Q<EFBFBD>V<EFBFBD>V<EFBFBD>C<EFBFBD><11><16><16><05>
<EFBFBD>
<EFBFBD>+<2B>+<2B> ,<2C><02>i<16>ir=