OwlCyberSecurity - MANAGER
Edit File: parser.cpython-311.pyc
� ������hW�����������������������������U�d�Z�ddlZddlZddlmZ�ddlmZ�ddlmZ�ddlm Z �ddlm Z �ej��������r ddlZ dd lmZ��ej��������d ej��������ej��������������������Z�ej��������dej��������ej��������������������Z�eg�d�������������Z�eg�d �������������Zej��������ej��������ej��������ej��������ej��������ej��������d�Z ej!��������e"ej#��������ej$�����������������f���������e%d<����G�d��d������������Z&dS�)z8Parse tokens from the lexer into nodes for the compiler.�����N����)�nodes)�TemplateAssertionError)�TemplateSyntaxError)�describe_token)�describe_token_expr)�Environment�_ImportInclude� _MacroCall)�for�if�block�extends�print�macro�include�from�import�set�with� autoescape)�eq�ne�lt�lteq�gt�gteq)�add�sub�mul�div�floordiv�mod�_math_nodesc��������������������l ����e�Zd�ZdZ � � �dUdddedej��������e���������dej��������e���������dej��������e���������d dfd �Zdefdedej��������e ���������d ej ��������e���������d dfd�Zdej��������e���������dej��������ej ��������edf������������������dej��������e ���������d dfd�Z �dVdedej��������e ���������d dfd�Z � �dWdej��������ej ��������edf������������������dej��������e ���������d dfd�Z �dVdej��������ej ��������edf������������������d efd�ZdVdej��������e ���������d ej��������fd�Zd ej��������ej��������ej��������ej�����������������f���������fd�Z �dXdej ��������edf���������ded ej��������ej�����������������fd�Zd ej��������ej��������ej��������f���������fd�Zd ej��������fd�Zd ej��������fd�Z d ej!��������fd �Z"d ej#��������fd!�Z$d ej%��������fd"�Z&d ej'��������fd#�Z(d$e)d%ed e)fd&�Z*d ej+��������fd'�Z,d ej-��������fd(�Z.d ej/��������fd)�Z0d$e1d dfd*�Z2d ej3��������fd+�Z4d ej5��������fd,�Z6d ej7��������fd-�Z8d ej9��������fd.�Z:e;j<�������� �dYd/ed0d1d ej=��������fd2���������������Z>e;j<�������� � � � �dZd/ed0edej��������ej ��������edf������������������d4ed ej��������ej?��������ej=��������ej ��������f���������f d5���������������Z> � � � �dZd/ed0edej��������ej ��������edf������������������d4ed ej��������ej?��������ej=��������ej ��������f���������f d6�Z>d[d7ed ej@��������fd8�ZAd ej@��������fd9�ZBd ej@��������fd:�ZCd ej@��������fd;�ZDd ej@��������fd<�ZEd ej@��������fd=�ZFd ej@��������fd>�ZGd ej@��������fd?�ZHd ej@��������fd@�ZId ej@��������fdA�ZJd[dBed ej@��������fdC�ZKd ej@��������fdD�ZL � � � �d\dEed7edej��������ej ��������edf������������������dFed ej��������ej ��������ej@��������f���������f dG�ZMd ej��������fdH�ZNd ejO��������fdI�ZPd$ej@��������d ej@��������fdJ�ZQd$ej@��������d ej@��������fdK�ZRd$ej@��������d ej��������ejS��������ejT��������f���������fdL�ZUd ej@��������fdM�ZVd ej ��������fdN�ZWd$ej@��������d ejX��������fdO�ZY �dXd$ej��������ej@�����������������dPed ej��������ej@�����������������fdQ�ZZd$ej@��������d ej@��������fdR�Z[ �dVdej��������ej ��������edf������������������d ej��������ej�����������������fdS�Z\d ej]��������fdT�Z^dS�)]�Parserz�This is the central parsing class Jinja uses. It's passed to extensions and can be used to parse expressions or statements. N�environmentr ����source�name�filename�state�returnc����������������������||�_���������|���������������������||||������������|�_��������||�_��������||�_��������d|�_��������i�|�_��������|�����������������������������������D�]}|j��������D�]}|j ��������|�j��������|<�����d|�_ ��������g�|�_��������g�|�_��������d�S�)NFr���) r'���� _tokenize�streamr)���r*����closed� extensions�iter_extensions�tags�parse�_last_identifier� _tag_stack�_end_token_stack)�selfr'���r(���r)���r*���r+���� extension�tags��� �D/opt/cloudlinux/venv/lib64/python3.11/site-packages/jinja2/parser.py�__init__zParser.__init__3���s��������'���!�+�+�F�D�(�E�J�J����� � �� ����� �� ���%�4�4�6�6�� 7�� 7�I� �~�� 7�� 7��'0�����$�$� 7� !���')���;=����������msg�lineno�exczte.NoReturnc������������������X�����|�|�j���������j��������j��������}�||||�j��������|�j���������������������)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/����currentr?���r)���r*���)r8���r>���r?���r@���s��� r;����failzParser.failJ���s0��������>��[�(�/�F��c�#�v�t�y�$�-�8�8�8r=����end_token_stack.c����������� �������@����t������������������������}|D�]*}|���������������������t����������t����������|��������������������������+|rBd���������������������t����������t ����������t����������t����������|d���������������������������������������������}nd�}|�dg}nd|�d�g}|r9|�||v�r|���������������������d|��d��������������n|���������������������d|��d��������������|�j��������r$|���������������������d|�j��������d����������d��������������|����������������������d ���������������������|������������|�������������d�S�) Nz or ���zUnexpected end of template.zEncountered unknown tag �.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 � ) r����update�mapr����join�repr�appendr6���rC���)r8���r)���rD���r?����expected�exprs�currently_looking�messages��� r;����_fail_ut_eofzParser._fail_ut_eofX���s������ #�u�u��$�� =�� =�E��O�O�C� 3�U�;�;�<�<�<�<��� %�17����D�#�1�?�2�3F�G�G�H�H�2��2����!%���<�4�5�G�G�;�$�;�;�;�<�G��� ���D�H�$4�$4����G�2C�G��G��G�������� ����U�AR�U�U�U��������?�� ��N�N�-��O�B�'�-��-��-� �� �� � � � � �#�(�(�7�#�#�V�,�,�,�,�,r=���c������������������>�����|�����������������������||�j��������|�������������dS�)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)rR���r7���)r8���r)���r?���s��� r;����fail_unknown_tagzParser.fail_unknown_tag����s%������� ���$�� 5�v�>�>�>�>�>r=���� end_tokensc�����������������������t����������|�j��������������������}|�|���������������������|�������������|����������������������d||�������������dS�)z9Like fail_unknown_tag but for end of template situations.N)�listr7���rM���rR���)r8���rU���r?����stacks��� r;����fail_eofzParser.fail_eof����sJ��������T�*�+�+���!��L�L��$�$�$����$��v�.�.�.�.�.r=����extra_end_rulesc������������������r�����|�j���������j��������j��������dv�rdS�|�|�j���������j�����������������������������|������������S�dS�)zAre we at the end of a tuple?)�variable_end� block_end�rparenTNF)r/���rB����type�test_any)r8���rZ���s��� r;����is_tuple_endzParser.is_tuple_end����sA��������;��#�'N�N�N��4� � (��;�&�/�/��@�@�@��ur=���c������������������������|�xj���������dz ��c_���������t�������������������������������t����������j��������������������}t����������j�����������������������������|d|�j������������|��������������|S�)zDReturn a new free identifier as :class:`~jinja2.nodes.InternalName`.r����fi�r?���)r5����object�__new__r����InternalName�Noder<���)r8���r?����rvs��� r;����free_identifierzParser.free_identifier����sX����������"��� �^�^�E�.� /� /�� � ���B� <�T�%:� <� <�V��L�L�L�� r=���c�����������������������|�j���������j��������}|j��������dk����r|����������������������d|j���������������������|�j�����������������������������|j���������������������d} �|j��������t����������v�rHt����������|�d|�j���������j��������j�����������������������}�|��������������|r|�j��������� �����������������������������������S�S�|j��������dk����r0|������������������������������������|r|�j��������� �����������������������������������S�S�|j��������dk����r0|������������������������������������|r|�j��������� �����������������������������������S�S�|�j �����������������������������|j��������������������}|�'�||�������������|r|�j��������� �����������������������������������S�S�|�j��������� �����������������������������������d}|����������������������|j��������|j���������������������|r|�j��������� �����������������������������������dS�dS�#�|r|�j��������� �����������������������������������w�w�xY�w) zParse a single statement.r)���ztag name expectedT�parse_�call�filterNF)r/���rB���r_���rC���r?���r6���rM����value�_statement_keywords�getattr�pop�parse_call_block�parse_filter_blockr1����getrT���)r8����token�pop_tag�f�exts��� r;����parse_statementzParser.parse_statement����s�������#���:�����I�I�)�5�<�8�8�8�����u�{�+�+�+��� &��{�1�1�1��D�"F�4�;�+>�+D�"F�"F�G�G���q�s�s� ��� &���#�#�%�%�%�%� &���{�f�$�$��,�,�.�.���� &���#�#�%�%�%�%� &���{�h�&�&��.�.�0�0���� &���#�#�%�%�%�%� &���/�%�%�e�k�2�2�C����s�4�y�y���� &���#�#�%�%�%�%� &� � �O���!�!�!��G��!�!�%�+�u�|�<�<�<��� &���#�#�%�%�%�%�%� &�� &��w�� &���#�#�%�%�%�%� &���s$����9G��+G��&G��!+G��);G��G!F�drop_needlec����������������������|�j������������������������������d�������������|�j������������������������������d�������������|����������������������|������������}|�j���������j��������j��������dk����r|����������������������|�������������|rt����������|�j����������������������|S�)aR��Parse 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. �colonr]����eof)r/����skip_if�expect�subparserB���r_���rY����next)r8���rU���r{����results��� r;����parse_statementszParser.parse_statements����s�������� ����G�$�$�$�� ����;�'�'�'����z�*�*����;��#�u�,�,��M�M�*�%�%�%��� �������� r=���c������������������r����t����������|�j��������������������j��������}|����������������������d�������������}|�j�����������������������������d������������r+|������������������������������������}t ����������j��������|||�������������S�|����������������������d������������}|�� ��������������������dd�������������}t ����������j ��������||||�������������S�)zParse an assign statement.T)�with_namespace�assignrd���N)zname:endset�r{���)r����r/���r?����parse_assign_targetr����parse_tupler����Assign�parse_filterr�����AssignBlock)r8���r?����target�expr�filter_node�bodys��� r;���� parse_setzParser.parse_set����s��������d�k�"�"�)���)�)��)�>�>���;���x�(�(�� =��#�#�%�%�D��<���V�<�<�<�<��'�'��-�-���$�$�%5�4�$�H�H��� ���d�6�J�J�J�Jr=���c����������� �������0����|�j������������������������������d������������j��������}|����������������������d�������������}|�j������������������������������d�������������|����������������������dd�������������}d}|�j������������������������������d ������������r|������������������������������������}|�j������������������������������d ������������}|����������������������d������������}t����������|�j���������������������j ��������dk����rg�}n|����������������������d d�������������}t����������j��������|||||||�������������S�)zParse a for loop.zname:for)�name:in)rZ���r����F)�name:recursive)� with_condexprrZ���N�name:ifr����)�name:endfor� name:else�endfor)r����Tr����rd���)r/���r����r?���r����r����r����parse_expressionr����r����ro���r����For)r8���r?���r�����iter�test� recursiver�����else_s��� r;���� parse_forzParser.parse_for����s�������#�#�J�/�/�6���)�)�,�)�G�G������9�%�%�%�����1D�� �� �� ������;���y�)�)�� +��(�(�*�*�D��K�'�'�(8�9�9� ��$�$�%A�B�B�������"�h�.�.��E�E��)�)�*:��)�M�M�E��y���t�U�D�)�F�S�S�S�Sr=���c������������������*����t����������j��������|�j�����������������������������d������������j���������������������x}} �|����������������������d�������������|_��������|����������������������d������������|_��������g�|_ ��������g�|_ ��������t����������|�j��������������������}|���������������������d������������r?t����������j��������|�j��������j��������j���������������������}|j ��������� ��������������������|���������������|���������������������d������������r|����������������������d d� ������������|_ �������� �|S�)zParse an if construct.r����rd���TF�r����)� name:elifr����� name:endifr����r����)r����r����)r����Ifr/���r����r?���r����r����r����r�����elif_r����r����rB���rM���)r8����noder����rv���s��� r;����parse_ifzParser.parse_if����s�����������(:�(:�9�(E�(E�(L�M�M�M�M��v� ��(�(�u�(�=�=�D�I��-�-�.V�W�W�D�I��D�J��D�J����%�%�E��z�z�+�&�&�� X��x�t�{�':�'A�B�B�B����#�#�D�)�)�)�����K�(�(�� X�#�4�4�_�RV�4�W�W����� r=���c������������������D����t����������j��������t����������|�j��������������������j���������������������}g�}g�}|�j��������j��������j��������dk����r�|r|�j�����������������������������d�������������|������������������������������������}|� ��������������������d�������������|� ��������������������|�������������|�j�����������������������������d�������������|� ��������������������|�������������������������������������������������|�j��������j��������j��������dk������||_��������||_ ��������|����������������������dd�������������|_��������|S�) Nrd���r]����comma�paramr����)zname:endwithTr����)r����Withr����r/���r?���rB���r_���r����r�����set_ctxrM���r�����targets�valuesr����r����)r8���r����r����r����r����s��� r;���� parse_withzParser.parse_with��s ������z��d�k�!2�!2�!9�:�:�:��&(��%'���k�!�&�+�5�5��� ,���"�"�7�+�+�+��-�-�/�/�F��N�N�7�#�#�#��N�N�6�"�"�"��K���x�(�(�(��M�M�$�/�/�1�1�2�2�2���k�!�&�+�5�5���������)�)�*;��)�N�N�� ��r=���c����������������������t����������j��������t����������|�j��������������������j���������������������}t����������j��������d|������������������������������������������������g|_��������|����������������������dd�������������|_ ��������t����������j ��������|g������������S�)Nrd���r���)zname:endautoescapeTr����)r����ScopedEvalContextModifierr����r/���r?����Keywordr�����optionsr����r�����Scope�r8���r����s��� r;����parse_autoescapezParser.parse_autoescape ��sq�������.�d�4�;�6G�6G�6N�O�O�O��� �l�D�4I�4I�4K�4K�L�L�M����)�)�*A�t�)�T�T�� ��{�D�6�"�"�"r=���c������������������f����t����������j��������t����������|�j��������������������j���������������������}|�j�����������������������������d������������j��������|_��������|�j�����������������������������d������������|_ ��������|�j�����������������������������d������������|_ ��������|�j��������j��������j��������dk����r|�� ��������������������d�������������|����������������������dd� ������������|_��������|j ��������r3t!����������d ��|j��������D���������������������������s|�� ��������������������d�������������|�j�����������������������������d|j��������z����������������|S�) Nrd���r)���zname:scopedz name:requiredr���zpBlock names in Jinja have to be valid Python identifiers and may not contain hyphens, use an underscore instead.)z name:endblockTr����c��������������3�������K����|�]A}|j���������D�]7}t����������|t�����������j��������������������o|j�������������������������������������������V����8�Bd�S��N)r���� isinstance�TemplateData�data�isspace)�.0r�����childs��� r;���� <genexpr>z%Parser.parse_block.<locals>.<genexpr>:��so�����������% ��% ����% ��% ���� �u�e�0�1�1�J�e�j�6H�6H�6J�6J�% ��% ��% ��% ��% ��% ��% r=���z7Required blocks can only contain comments or whitespacezname:)r����Blockr����r/���r?���r����ro���r)���r����scoped�requiredrB���r_���rC���r����r�����allr����s��� r;����parse_blockzParser.parse_block&��s*������{�$�t�{�"3�"3�":�;�;�;���K�&�&�v�.�.�4�� ��k�)�)�-�8�8�����+�+�O�<�<�� � ��;��#�u�,�,��I�I�?� �� �� � ��)�)�*<�$�)�O�O�� � ��=�� Q���% ��% �� �% ��% ��% ��" ��" �� Q� � �I�I�O�P�P�P�����G�d�i�/�0�0�0��r=���c�����������������������t����������j��������t����������|�j��������������������j���������������������}|������������������������������������|_��������|S��Nrd���)r����Extendsr����r/���r?���r�����templater����s��� r;���� parse_extendszParser.parse_extendsD��s9�������}�D���$5�$5�$<�=�=�=���-�-�/�/�� ��r=���r�����defaultc������������������$����|�j���������j�����������������������������dd������������rh|�j�����������������������������������������������������������������d������������r<t����������|�j���������������������j��������dk����|_��������|�j���������������������������������������������n||_��������|S�)Nz name:withzname:without�name:contextr���) r/���rB���r`����lookr����r����ro����with_context�skip)r8���r����r����s��� r;����parse_import_contextzParser.parse_import_contextI��s���������;��'�'��� �� �� (��k��� � �%�%�n�5�5� (��!%�T�[� 1� 1� 7�6� A�D���K������� '�D���r=���c����������������������t����������j��������t����������|�j��������������������j���������������������}|������������������������������������|_��������|�j��������j�����������������������������d������������rN|�j��������� �������������������������������������������������������d������������r"d|_ ��������|�j�����������������������������d�������������nd|_ ��������|����������������������|d������������S�)Nrd���zname:ignorezname:missingT����F) r����Includer����r/���r?���r����r����rB���r����r�����ignore_missingr����r����r����s��� r;���� parse_includezParser.parse_includeU��s��������}�D���$5�$5�$<�=�=�=���-�-�/�/�� ��;��#�#�M�2�2�� (�t�{�7G�7G�7I�7I�7N�7N��8 ��8 �� (��#'�D���K���Q�����"'�D���(�(��t�4�4�4r=���c������������������,����t����������j��������t����������|�j��������������������j���������������������}|������������������������������������|_��������|�j�����������������������������d�������������|����������������������d�������������j ��������|_ ��������|����������������������|d������������S�)Nrd����name:asT�� name_onlyF)r����Importr����r/���r?���r����r����r����r����r)���r����r����r����s��� r;����parse_importzParser.parse_importa��s{�������|�4���#4�#4�#;�<�<�<���-�-�/�/�� �����9�%�%�%��.�.��.�>�>�C����(�(��u�5�5�5r=���c�������������������������t����������j��������t������������j��������������������j������������������������������������������������������������_����������j�����������������������������d�������������g��_��������dt����������f���fd�} ��j��������r��j�����������������������������d���������������j��������j ��������j��������dk����r��|��������������r�n�����������������������d�������������}|j �����������������������������d ������������r"�����������������������d |j��������t ��������������������������j�����������������������������d������������r=�����������������������d�������������}�j�����������������������������|j ��������|j ��������f�������������n�j�����������������������������|j ����������������������|��������������s��j��������j ��������j��������dk����rnn��j�����������������������������d���������������Gt'�����������d ������������sd�_���������S�)Nrd���zname:importr,���c��������������������������j���������j��������j��������dv�ri�j�����������������������������������������������������������������d������������r=t�����������j���������������������j��������dk������_���������j���������������������������������������������dS�dS�)N>���r����withoutr����r���TF)r/���rB���ro���r����r����r����r����r����)r����r8���s�����r;���� parse_contextz(Parser.parse_from.<locals>.parse_contextn��s}���������#�)����� ��K�$�$�&�&�+�+�N�;�;���%)���$5�$5�$;�v�$E��!��� � �"�"�"��t��5r=���Tr����r)���r�����_z4names starting with an underline can not be imported)r@���r����r����F)r���� FromImportr����r/���r?���r����r����r�����names�boolrB���r_���r����r)���� startswithrC���r���r���rM����hasattrr����)r8���r����r�����aliasr����s���` @r;���� parse_fromzParser.parse_fromh��s����������t�D�K�'8�'8�'?�@�@�@���-�-�/�/�� �����=�)�)�)��� � �t�� �� �� �� �� �� �� � +��z�� ,���"�"�7�+�+�+��{�"�'�6�1�1� �=�?�?�����1�1�D�1�A�A���;�)�)�#�.�.����I�I�N�� �2��������� ��;�&�&�y�1�1��3� �4�4�t�4�D�D�E��J�%�%�v�{�E�J�&?�@�@�@�@��J�%�%�f�k�2�2�2� �=�?�?���d�k�&9�&>�'�&I�&I���'J����"�"�6�*�*�*�+ +�,��t�^�,�,�� &� %�D���r=���c������������������P����g�x}|_���������g�x}|_��������|�j�����������������������������d�������������|�j��������j��������j��������dk����r�|r|�j�����������������������������d�������������|����������������������d�������������}|���������������������d�������������|�j�����������������������������d������������r(|� ��������������������|�� �����������������������������������������������n|r|����������������������d�������������|� ��������������������|�������������|�j��������j��������j��������dk������|�j�����������������������������d�������������d�S�) N�lparenr^���r����Tr����r����r����z-non-default argument follows default argument)�args�defaultsr/���r����rB���r_���r����r����r���rM���r����rC���)r8���r����r����r�����args��� r;����parse_signaturezParser.parse_signature���s$��������t�y�#%�%��4�=�����8�$�$�$��k�!�&�(�2�2��� ,���"�"�7�+�+�+��*�*�T�*�:�:�C��K�K�� � � ��{�"�"�8�,�,�� K����� 5� 5� 7� 7�8�8�8�8��� K�� � �I�J�J�J��K�K�������k�!�&�(�2�2�� ����8�$�$�$�$�$r=���c����������������������t����������j��������t����������|�j��������������������j���������������������}|�j��������j��������j��������dk����r|����������������������|�������������ng�|_��������g�|_ ��������|�� ����������������������������������}t����������|t�����������j��������������������s|�� ��������������������d|j���������������������||_��������|����������������������dd�������������|_��������|S�)Nrd���r����z expected call)zname:endcallTr����)r���� CallBlockr����r/���r?���rB���r_���r����r����r����r����r�����CallrC���rm���r����r����)r8���r����� call_nodes��� r;���rs���zParser.parse_call_block���s���������d�4�;�&7�&7�&>�?�?�?���;��#�x�/�/�� � ��&�&�&�&��D�I��D�M��)�)�+�+� ��)�U�Z�0�0�� 4��I�I�o�t�{�3�3�3��� ��)�)�*;��)�N�N�� ��r=���c������������������������t����������j��������t����������|�j��������������������j���������������������}|����������������������d�d�������������|_��������|����������������������dd�������������|_��������|S�)Nrd���T)�start_inline)zname:endfilterr����) r����FilterBlockr����r/���r?���r����rn���r����r����r����s��� r;���rt���zParser.parse_filter_block���s\������� ��T�[�(9�(9�(@�A�A�A���'�'��4�'�@�@����)�)�*=�4�)�P�P�� ��r=���c�����������������������t����������j��������t����������|�j��������������������j���������������������}|����������������������d�������������j��������|_��������|����������������������|�������������|����������������������dd�������������|_ ��������|S�)Nrd���Tr����)z name:endmacror����) r����Macror����r/���r?���r����r)���r����r����r����r����s��� r;����parse_macrozParser.parse_macro���sp�������{�$�t�{�"3�"3�":�;�;�;���,�,�t�,�<�<�A�� ����T�"�"�"��)�)�*<�$�)�O�O�� ��r=���c������������������Z����t����������j��������t����������|�j��������������������j���������������������}g�|_���������|�j��������j��������j��������dk����rb|j���������r|�j�����������������������������d�������������|j������������������������������|�� �����������������������������������������������|�j��������j��������j��������dk�����b|S�)Nrd���r]���r����) r����Outputr����r/���r?���rB���r_���r����rM���r����r����s��� r;����parse_printzParser.parse_print���s��������|�4���#4�#4�#;�<�<�<���� ��k�!�&�+�5�5��z�� ,���"�"�7�+�+�+��J���d�3�3�5�5�6�6�6���k�!�&�+�5�5���r=���� with_tupler����zte.Literal[True]c�����������������������d�S�r������)r8���r����r����s��� r;���r����zParser.parse_assign_target���s ������� �r=���Tr����c�����������������������d�S�r����r���)r8���r����r����rZ���r����s��� r;���r����zParser.parse_assign_target���s ������� �r=���c�����������������������|r�|�j��������������������������������������������j��������dk����ro|�j������������������������������d������������}t ����������|�j����������������������|�j������������������������������d������������}t����������j��������|j��������|j��������|j���������������������}n�|r<|�j������������������������������d������������}t����������j ��������|j��������d|j���������������������}nC|r|�� ��������������������d|�������������}n|������������������������������������}|���������������������d�������������|� ����������������������������������sB|����������������������dt����������|������������j���������������������������������������������|j���������������������|S�)a��Parse 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. �dotr)���rd����storeT)� simplifiedrZ���zcan't assign to )r/���r����r_���r����r����r����NSRefro���r?����Namer����� parse_primaryr����� can_assignrC����__name__�lower)r8���r����r����rZ���r����rv����attrr����s��� r;���r����zParser.parse_assign_target���s[�����"��� $�d�k�.�.�0�0�5��>�>��K�&�&�v�.�.�E��������;�%�%�f�-�-�D��[���d�j���N�N�N�F�F� �� $��K�&�&�v�.�.�E��Z���W�U�\�J�J�J�F�F��� .��)�)�#�_��*���������+�+�-�-���N�N�7�#�#�#�� � �"�"�� ��I�I�D�4��<�<�#8�#>�#>�#@�#@�D�D�f�m� �� �� ��� r=���r����c������������������V�����|r|�������������������������������������S�|������������������������������������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. )�parse_condexpr�parse_or)r8���r����s��� r;���r����zParser.parse_expression��s,������ ��� )��&�&�(�(�(��}�}���r=���c����������������������|�j���������j��������j��������}|������������������������������������}|�j������������������������������d������������r�|������������������������������������}|�j������������������������������d������������r|������������������������������������}nd�}t ����������j��������||||�������������}|�j���������j��������j��������}|�j������������������������������d��������������|S�)Nr����r����rd���)r/���rB���r?���r��r���r��r����CondExpr)r8���r?����expr1�expr2�expr3s��� r;���r��zParser.parse_condexpr��s���������$�+��� � ������k�!�!�)�,�,�� 0��M�M�O�O�E��{�"�"�;�/�/�� ��+�+�-�-������N�5�%��v�F�F�F�E��[�(�/�F���k�!�!�)�,�,�� 0���r=���c������������������0����|�j���������j��������j��������}|������������������������������������}|�j������������������������������d������������rV|������������������������������������}t����������j��������|||�������������}|�j���������j��������j��������}|�j������������������������������d�������������V|S�)N�name:orrd���)r/���rB���r?���� parse_andr���r����Or�r8���r?����left�rights��� r;���r��zParser.parse_or��s���������$�+���~�~�����k�!�!�)�,�,�� 0��N�N�$�$�E��8�D�%��7�7�7�D��[�(�/�F���k�!�!�)�,�,�� 0���r=���c������������������0����|�j���������j��������j��������}|������������������������������������}|�j������������������������������d������������rV|������������������������������������}t����������j��������|||�������������}|�j���������j��������j��������}|�j������������������������������d�������������V|S�)N�name:andrd���)r/���rB���r?���� parse_notr���r����Andr��s��� r;���r��zParser.parse_and&��s���������$�+���~�~�����k�!�!�*�-�-�� 0��N�N�$�$�E��9�T�5��8�8�8�D��[�(�/�F���k�!�!�*�-�-�� 0���r=���c������������������������|�j���������j�����������������������������d������������rAt����������|�j���������������������j��������}t����������j��������|������������������������������������|�������������S�|������������������������������������S�)N�name:notrd���) r/���rB���r����r����r?���r����Notr��� parse_compare)r8���r?���s��� r;���r��zParser.parse_not/��s`�������;��#�#�J�/�/�� >��$�+�&�&�-�F��9�T�^�^�-�-�f�=�=�=�=��!�!�#�#�#r=���c������������������l����|�j���������j��������j��������}|������������������������������������}g�} �|�j���������j��������j��������}|t ����������v�rOt ����������|�j����������������������|���������������������t����������j ��������||�������������������������������������������������������������n�|�j���������� ��������������������d������������r;|���������������������t����������j ��������d|�������������������������������������������������������������n�|�j���������j�����������������������������d������������r�|�j�����������������������������������������������������������������d������������rU|�j���������� ��������������������d�������������|���������������������t����������j ��������d|�������������������������������������������������������������nn|�j���������j��������j��������}��r|s|S�t����������j��������|||�������������S�)NTr�����inr!��r�����notinrd���)r/���rB���r?����parse_math1r_����_compare_operatorsr����rM���r����Operandr���r����r����r�����Compare)r8���r?���r�����ops� token_types��� r;���r#��zParser.parse_compare5��s��������$�+�����!�!���� 0���,�1�J��/�/�/��T�[�!�!�!�� � �5�=��T�5E�5E�5G�5G�H�H�I�I�I�I���$�$�Y�/�/�� �� � �5�=��t�/?�/?�/A�/A�B�B�C�C�C�C���$�)�)�*�5�5�� �$�+�:J�:J�:L�:L�:Q�:Q��;��;�� ���� � ��#�#�#�� � �5�=��$�2B�2B�2D�2D�E�E�F�F�F�F���[�(�/�F� 0���� ��K��}�T�3�v�6�6�6�6r=���c������������������b����|�j���������j��������j��������}|������������������������������������}|�j���������j��������j��������dv�rvt ����������|�j���������j��������j�����������������}t ����������|�j����������������������|������������������������������������}�||||�������������}|�j���������j��������j��������}|�j���������j��������j��������dv��v|S�)N)r���r���rd���)r/���rB���r?����parse_concatr_���r$���r�����r8���r?���r���clsr��s��� r;���r'��zParser.parse_math1L��s���������$�+��� � �"�"���k�!�&�.�8�8��d�k�1�6�7�C��������%�%�'�'�E��3�t�U�6�2�2�2�D��[�(�/�F���k�!�&�.�8�8���r=���c������������������z����|�j���������j��������j��������}|������������������������������������g}|�j���������j��������j��������dk����rPt����������|�j����������������������|���������������������|�������������������������������������������������|�j���������j��������j��������dk�����Pt����������|������������dk����r|d���������S�t����������j ��������||�������������S�)N�tilder���r���rd���) r/���rB���r?����parse_math2r_���r����rM����lenr����Concat)r8���r?���r����s��� r;���r.��zParser.parse_concatW��s���������$�+��� � �"�"�#���k�!�&�'�1�1��������K�K��(�(�*�*�+�+�+���k�!�&�'�1�1���t�9�9��>�>���7�N��|�D��0�0�0�0r=���c������������������b����|�j���������j��������j��������}|������������������������������������}|�j���������j��������j��������dv�rvt ����������|�j���������j��������j�����������������}t ����������|�j����������������������|������������������������������������}�||||�������������}|�j���������j��������j��������}|�j���������j��������j��������dv��v|S�)N)r ���r!���r"���r#���rd���)r/���rB���r?���� parse_powr_���r$���r����r/��s��� r;���r3��zParser.parse_math2a��s���������$�+���~�~�����k�!�&�*K�K�K��d�k�1�6�7�C��������N�N�$�$�E��3�t�U�6�2�2�2�D��[�(�/�F���k�!�&�*K�K�K���r=���c������������������D����|�j���������j��������j��������}|������������������������������������}|�j���������j��������j��������dk����ret����������|�j����������������������|������������������������������������}t ����������j��������|||�������������}|�j���������j��������j��������}|�j���������j��������j��������dk�����e|S�)N�powrd���)r/���rB���r?����parse_unaryr_���r����r����Powr��s��� r;���r7��zParser.parse_powl��s���������$�+�����!�!���k�!�&�%�/�/��������$�$�&�&�E��9�T�5��8�8�8�D��[�(�/�F� ��k�!�&�%�/�/� ��r=����with_filterc�����������������������|�j���������j��������j��������}|�j���������j��������j��������}|dk����r>t ����������|�j����������������������t����������j��������|����������������������d������������|�������������}nX|dk����r>t ����������|�j����������������������t����������j��������|����������������������d������������|�������������}n|�� ����������������������������������}|�� ��������������������|������������}|r|����������������������|������������}|S�)Nr���Frd���r���)r/���rB���r_���r?���r����r����Negr:���Posr��� parse_postfix�parse_filter_expr)r8���r<��r,��r?���r����s��� r;���r:��zParser.parse_unaryv��s��������[�(�-� ���$�+��������������9�T�-�-�e�4�4�V�D�D�D�D�D� �5� � ��������9�T�-�-�e�4�4�V�D�D�D�D�D��%�%�'�'�D��!�!�$�'�'���� 0��)�)�$�/�/�D��r=���c����������������������|�j���������j��������}|j��������dk����r�|j��������dv�r#t ����������j��������|j��������dv�|j���������������������}nF|j��������dv�rt ����������j��������d�|j���������������������}n!t ����������j��������|j��������d|j���������������������}t����������|�j�����������������������n�|j��������dk����r�t����������|�j����������������������|j��������g}|j��������}|�j���������j��������j��������dk����rM|� ��������������������|�j���������j��������j���������������������t����������|�j����������������������|�j���������j��������j��������dk�����Mt ����������j��������d� ��������������������|������������|�������������}n�|j��������d v�r5t����������|�j����������������������t ����������j��������|j��������|j���������������������}n�|j��������d k����rEt����������|�j����������������������|����������������������d�������������}|�j������������������������������d �������������nk|j��������dk����r|�� ����������������������������������}nK|j��������dk����r|������������������������������������}n+|����������������������dt!����������|��������������|j���������������������|S�)Nr)���)�true�false�True�False)rC��rE��rd���)�none�None�load�string��)�integer�floatr����T)�explicit_parenthesesr^����lbracket�lbracezunexpected )r/���rB���r_���ro���r����Constr?���r��r����rM���rK���r����r����� parse_list� parse_dictrC���r���)r8���rv���r�����bufr?���s��� r;���r��zParser.parse_primary���s'�������#���:�����{�@�@�@��{�5�;�2B�#B�5�<�X�X�X����� 0�0�0��{�4���=�=�=����z�%�+�v�e�l�K�K�K��������� �Z�8� #� #��������;�-�C��\�F��+�%�*�h�6�6�� � �4�;�.�4�5�5�5��T�[�!�!�!���+�%�*�h�6�6���;�r�w�w�s�|�|�F�;�;�;�D�D� �Z�/� /� /��������;�u�{�5�<�@�@�@�D�D� �Z�8� #� #��������#�#��#�>�>�D��K���x�(�(�(�(� �Z�:� %� %��?�?�$�$�D�D� �Z�8� #� #��?�?�$�$�D�D��I�I�=�N�5�$9�$9�=�=�u�|�L�L�L��r=���r��rN��c��������������������������j���������j��������j��������}|r��j��������}n|r��j��������}ndt ����������j��������f��fd�}g�}d} �|r��j������������������������������d������������������������������������|������������rnH|� ���������������������|�����������������������������j���������j��������j ��������dk����rd}nn��j���������j��������j��������}�z|s;|r|d���������S�|s/�����������������������dt������������j���������j�����������������������������������t����������j ��������|d|� ������������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. 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�������������������0������������������������������d�������������S�)NFr����)r����)r8���s����r;���r4���z!Parser.parse_tuple.<locals>.parse���s��������,�,�5�,�A�A�Ar=���FTr����r���zExpected an expression, got rI��rd���)r/���rB���r?���r��r����r����Exprr����ra���rM���r_���rC���r����Tuple) r8���r��r����rZ���rN��r?���r4���r�����is_tuples ���` r;���r����zParser.parse_tuple���sk������2���$�+���� B��&�E�E� �� B��)�E�E� B�5�:�� B�� B�� B�� B�� B�� B��$&���� 0��� ,���"�"�7�+�+�+�� � ��1�1�� ���K�K����� � � ��{�"�'�7�2�2������[�(�/�F� 0���� ��� ��A�w���(�� �� � �D�*�4�;�+>�?�?�D��D������ ��{�4���7�7�7�7r=���c����������������������|�j������������������������������d������������}g�}|�j���������j��������j��������dk����rn|r|�j������������������������������d�������������|�j���������j��������j��������dk����rn<|���������������������|�������������������������������������������������|�j���������j��������j��������dk�����n|�j������������������������������d�������������t ����������j��������||j���������������������S�)NrO���rbracketr����rd���) r/���r����rB���r_���rM���r����r����Listr?���)r8���rv����itemss��� r;���rR��zParser.parse_list���s���������"�"�:�.�.��$&���k�!�&�*�4�4��� ,���"�"�7�+�+�+��{�"�'�:�5�5���L�L��.�.�0�0�1�1�1���k�!�&�*�4�4�� ����:�&�&�&��z�%���5�5�5�5r=���c������������������>����|�j������������������������������d������������}g�}|�j���������j��������j��������dk����r�|r|�j������������������������������d�������������|�j���������j��������j��������dk����rn�|������������������������������������}|�j������������������������������d�������������|������������������������������������}|���������������������t ����������j��������|||j����������������������������������|�j���������j��������j��������dk������|�j������������������������������d�������������t ����������j ��������||j���������������������S�)NrP���rbracer����r}���rd���) r/���r����rB���r_���r����rM���r����Pairr?����Dict)r8���rv���r]���keyro���s��� r;���rS��zParser.parse_dict���s�������"�"�8�,�,��$&���k�!�&�(�2�2��� ,���"�"�7�+�+�+��{�"�'�8�3�3���'�'�)�)�C��K���w�'�'�'��)�)�+�+�E��L�L���C��s�z�B�B�B�C�C�C���k�!�&�(�2�2�� ����8�$�$�$��z�%���5�5�5�5r=���c����������������������� �|�j���������j��������j��������}|dk����s|dk����r|����������������������|������������}n|dk����r|����������������������|������������}nn�Q|S�)NTr��rO��r����)r/���rB���r_����parse_subscript� parse_call�r8���r����r,��s��� r;���r@��zParser.parse_postfix��sm������ ���,�1�J��U�"�"�j�J�&>�&>��+�+�D�1�1�����x�'�'����t�,�,���� ���r=���c����������������������� �|�j���������j��������j��������}|dk����r|����������������������|������������}nN|dk����r+|�j���������j��������j��������dk����r|����������������������|������������}n|dk����r|����������������������|������������}nn�||S�)NT�piper)����isr����)r/���rB���r_���r����ro���� parse_testre��rf��s��� r;���rA��zParser.parse_filter_expr��s������� ���,�1�J��V�#�#��(�(��.�.����v�%�%�$�+�*=�*C�t�*K�*K����t�,�,�����x�'�'����t�,�,���� ���r=���c����������������������t����������|�j��������������������}|j��������dk����r�|�j��������j��������}t����������|�j���������������������|j��������dk����r"t ����������j��������||j��������d|j���������������������S�|j��������dk����r|����������������������d|j���������������������t ����������j ��������|j��������|j���������������������}t ����������j ��������||d|j���������������������S�|j��������dk����r�g�}|�j��������j��������j��������dk����rX|r|�j�����������������������������d �������������|���������������������|�� �����������������������������������������������|�j��������j��������j��������dk�����X|�j�����������������������������d�������������t����������|������������d k����r |d���������}nt ����������j��������|d|j���������������������}t ����������j ��������||d|j���������������������S�|����������������������d|j���������������������d�S�) Nr��r)���rI��rd���rL��zexpected name or numberrO��r[��r����r���r���zexpected subscript expression)r����r/���r_���rB���r����Getattrro���r?���rC���rQ���Getitemr����rM����parse_subscribedr4��rX��)r8���r����rv���� attr_tokenr����r����s��� r;���rd��zParser.parse_subscript#��s��������T�[�!�!����:������,�J���������&�(�(��}��*�*�F�5�<�����������I�-�-�� � �3�Z�5F�G�G�G��+�j�.�z�7H�I�I�I�C��=��s�F�5�<�H�H�H�H��:��#�#�')�D��+�%�*�j�8�8���0��K�&�&�w�/�/�/����D�1�1�3�3�4�4�4���+�%�*�j�8�8�� �K���z�*�*�*��4�y�y�A�~�~��1�g����k�$��u�|�D�D�D���=��s�F�5�<�H�H�H�H�� � �1�5�<�@�@�@�@�@r=���c������������������8����|�j���������j��������j��������}|�j���������j��������j��������dk����rt ����������|�j����������������������d�g}nB|������������������������������������}|�j���������j��������j��������dk����r|S�t ����������|�j����������������������|g}|�j���������j��������j��������dk����r|���������������������d��������������nP|�j���������j��������j��������dvr(|���������������������|�������������������������������������������������n|���������������������d��������������|�j���������j��������j��������dk����ret ����������|�j����������������������|�j���������j��������j��������dvr(|���������������������|�������������������������������������������������n+|���������������������d��������������n|���������������������d��������������t����������j��������|d|i�S�)Nr}���)r[��r����r?���) r/���rB���r?���r_���r����r����rM���r����Slice)r8���r?���r����r����s��� r;���rn��zParser.parse_subscribedB��s��������$�+����;��#�w�.�.��������6�D�D��(�(�*�*�D��{�"�'�7�2�2����������6�D��;��#�w�.�.��K�K������ �[� � %�-B� B� B��K�K��-�-�/�/�0�0�0�0��K�K������;��#�w�.�.��������{�"�'�/D�D�D����D�1�1�3�3�4�4�4�4����D�!�!�!�!��K�K������{�4�0�&�0�0�0r=���c����������������������� ����j������������������������������d������������� g�}g�}d�}d�}d}dt����������dd�f��� fd�}��j���������j��������j��������dk�����r�|r1��j������������������������������d���������������j���������j��������j��������dk����r�n���j���������j��������j��������dk����r;�||d�u�o|d�u��������������t������������j�����������������������������������������������������������}�n9��j���������j��������j��������d k����r6�||d�u��������������t������������j�����������������������������������������������������������}n��j���������j��������j��������d k����r���j��������������������������������������������j��������dk����r|�||d�u����������������j���������j��������j��������}��j���������� ��������������������d��������������������������������������������������}|� ��������������������t����������j��������|||j ��������� �������������������������n;�||d�u�o|d�u�o|��������������|� ����������������������������������������������������������������������d}��j���������j��������j��������dk������ԉ�j������������������������������d�������������||||fS�)Nr����Fr����r,���c������������������F������|�s�����������������������d�j���������������������d�S�d�S�)Nz+invalid syntax for function call expression)rC���r?���)r����r8���rv���s��� ��r;����ensurez&Parser.parse_call_args.<locals>.ensurej��s5��������� W�� � �G���V�V�V�V�V� W�� Wr=���r^���r����r ���r9��r)���r����r����rd���T)r/���r����r����rB���r_���r����r����r����ro���r����rM���r���r����r?���) r8���r�����kwargs�dyn_args� dyn_kwargs� require_commart��rb��ro���rv���s ���` @r;����parse_call_argszParser.parse_call_argsb��s����������"�"�8�,�,��������� �� � W��� W�$�� W�� W�� W�� W�� W�� W�� W���k�!�&�(�2�2��� ���"�"�7�+�+�+���;�&�+�x�7�7���{�"�'�5�0�0���x�4�'�>�J�$�,>�?�?�?��T�[�!�!�!��0�0�2�2�����$�)�U�2�2���z�T�)�*�*�*��T�[�!�!�!�!�2�2�4�4� � ���K�'�,��6�6���(�(�*�*�/�8�;�;���F�:��-�.�.�.��+�-�3�C��K�$�$�Q�'�'�'� �1�1�3�3�E��M�M�%�-��U�5�<�"P�"P�"P�Q�Q�Q�Q���F�8�t�+�Q� �d�0B�Q�6�z�R�R�R��K�K�� 5� 5� 7� 7�8�8�8� �M�A��k�!�&�(�2�2�D� ����8�$�$�$��V�X�z�1�1r=���c�����������������������|�j���������j��������}|������������������������������������\��}}}}t����������j��������||||||j���������������������S�r����)r/���rB���ry��r���r����r?���)r8���r����rv���r����ru��rv��rw��s��� r;���re��zParser.parse_call���sG���������#��-1�-A�-A�-C�-C�*��f�h� ��z�$��f�h� �5�<�X�X�X�Xr=���r����c����������� �������N����|�j���������j��������j��������dk����s|�r|st����������|�j����������������������|�j������������������������������d������������}|j��������}|�j���������j��������j��������dk����rNt����������|�j����������������������|d|�j������������������������������d������������j��������z���z ��}|�j���������j��������j��������dk�����N|�j���������j��������j��������dk����r|������������������������������������\��}}}}ng�}g�}d�x}}t����������j��������|||||||j ���������������������}d}|�j���������j��������j��������dk������ |��|S�)Nrh��r)���r��rG���r����rd���F) r/���rB���r_���r����r����ro���ry��r����Filterr?���) r8���r����r����rv���r)���r����ru��rv��rw��s ��� r;���r����zParser.parse_filter���s>�������k�!�&�&�0�0�L�0��� "��T�[�!�!�!��K�&�&�v�.�.�E��;�D��+�%�*�e�3�3��T�[�!�!�!���d�k�0�0��8�8�>�>�>����+�%�*�e�3�3���{�"�'�8�3�3�59�5I�5I�5K�5K�2��f�h� � �����(,�,��:��<��d�D�&�(�J�u�|������D��!�L�#��k�!�&�&�0�0�L�0�$��r=���c����������� �����������t����������|�j��������������������}|�j��������j�����������������������������d������������rt����������|�j���������������������d}nd}|�j�����������������������������d������������j��������}|�j��������j��������j��������dk����rNt����������|�j���������������������|d|�j�����������������������������d������������j��������z���z ��}|�j��������j��������j��������dk�����Nd�x}}g�}|�j��������j��������j��������dk����r|������������������������������������\��}}}}n�|�j��������j��������j��������dv�r�|�j��������j�����������������������������d d d������������sa|�j��������j�����������������������������d������������r|�� ��������������������d �������������|�� ����������������������������������} |����������������������| ������������} | g}ng�}t����������j ��������|||||||j���������������������}|rt����������j��������||j���������������������}|S�)Nr!��TFr)���r��rG���r����>���r)���rM��rP��r����rJ��rL��rO��r����r��r��zname:isz'You cannot chain multiple tests with isrd���)r����r/���rB���r����r����ro���r_���ry��r`���rC���r��r@��r����Testr?���r"��) r8���r����rv����negatedr)���rv��rw��ru��r�����arg_nodes ��� r;���rj��zParser.parse_test���s�������T�[�!�!���;��#�#�J�/�/�� ��������G�G��G��{�!�!�&�)�)�/���k�!�&�%�/�/��������C�$�+�,�,�V�4�4�:�:�:�D���k�!�&�%�/�/��!%�$��:����;��#�x�/�/�15�1E�1E�1G�1G�.�D�&�(�J�J��K��$�� �� ���K�'�0�0��i��T�T� ���{�"�'�'� �2�2�� E�� � �C�D�D�D��)�)�+�+�H��)�)�(�3�3�H��:�D�D��D��z��$��f�h� �5�<� �� �� ����� 8��9�T�%�,�7�7�7�D��r=���c������������������8������g��g���j���������}|�|�j������������������������������|�������������d��fd�} �|�j���������r�|�j��������j��������}|j��������dk����rF|j��������r)�|t ����������j��������|j��������|j����������������������������������t����������|�j����������������������n4|j��������dk����rNt����������|�j����������������������||�� ��������������������d��������������������������|�j�����������������������������d�������������n�|j��������d k����r��|���������������t����������|�j���������������������|�2�|�j��������j��������j��������|��r�|�|�j��������� �����������������������������������S�S�|������������������������������������}t����������|t ����������������������r����������������������|�������������n�����������������������|�������������|�j�����������������������������d �������������nt%����������d�������������|�j������������|���������������|�|�j��������� �����������������������������������n!#�|�|�j��������� �����������������������������������w�w�xY�w�S�) Nr,���c��������������������������rE�d���������j���������}�����������������������t����������j���������d�d�����������|����������������������������d�d��=�d�S�d�S�)Nr���rd���)r?���rM���r���r����)r?���r�����data_buffers��� ��r;���� flush_dataz#Parser.subparse.<locals>.flush_data���sY��������� #�$�Q��.�����E�L��Q�Q�Q���G�G�G�H�H�H�����N�N�N� #�� #r=���r����rd����variable_beginTr����r\����block_beginr]���zinternal parsing error)r,���N)rM���r7���r/���rB���r_���ro���r���r����r?���r����r����r����r`���rr���rz���r����rW����extend�AssertionError)r8���rU����add_datar���rv���ri���r����r���s��� @@r;���r����zParser.subparse���sZ��������$&��*,���%���!��!�(�(��4�4�4� #�� #�� #�� #�� #�� #�� #� ,��+�� C���+���:��'�'��{��W� ���!3�E�K���!U�!U�!U�V�V�V����%�%�%�%��Z�#3�3�3����%�%�%��H�T�-�-�D�-�A�A�B�B�B��K�&�&�~�6�6�6�6��Z�=�0�0��J�L�L�L����%�%�%�!�-�2N�$�+�2E�2N�#�3�-�� $���%��%�)�)�+�+�+�+��&���-�-�/�/�B�!�"�d�+�+��(����B��������B�����K�&�&�{�3�3�3�3�(�)A�B�B�B�1��+�� C�4� �J�L�L�L��%��%�)�)�+�+�+�����%��%�)�)�+�+�+�+��&�����s����C>G9�� BG9��9Hc�����������������������t����������j��������|������������������������������������d�������������}|���������������������|�j���������������������|S�)z0Parse the whole template into a `Template` node.r���rd���)r����Templater�����set_environmentr'���)r8���r����s��� r;���r4���zParser.parse��s:��������� � ����:�:�:�����t�/�0�0�0�� r=���)NNNr����)NN)F)..)TFNF)T)FTNF)_r ��� __module__�__qualname__�__doc__�str�t�Optionalr<���r����int�TyperC���r\��rX��rR���rT���rY���r����ra���r���rg���rj����Unionrh���rz���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����r����rs���r����rt���r����r����r����r�����typing�overloadr��r����r��rW��r����r��r��r��r��r#��r'��r.��r3��r7��r:��r��r����rR��ra��rS��r@��rA��rl��rm��rd��rn��ry��r����re��r����rj��r����r���r4���r���r=���r;���r&���r&���.���s �����������������!%�$(�!%� >��>�"�>���>���j��o� >� ��*�S�/�>���z�#�� >�� �>��>��>��>�4�#'�+>� 9��9� �9��� �3��9���V�'� (� 9� � �9��9��9��9�&-��j��o�&-�������S�� 1�2�&-��� �3�� &-� � �&-��&-��&-��&-�R�48�?��?��?�!"��C��?� �?��?��?��?��59�"&� /�� /��J�q�w�s�C�x�0�1� /��� �3�� /�� � /�� /�� /�� /��@D���� �z�!�'�#�s�(�*;�<�� �����������a�j��o����AS���������&�����Q�V�E�J�5G�)G�!H��&��&��&��&�<�BG�����'�#�s�(�+��:>�� ��� � ��������: K�1�7�5�<��1B�#B�C�� K�� K�� K�� K�T�5�9��T��T��T��T�&�%�(���������$�E�J���������"#�%�+��#��#��#��#��U�[���������<�u�}��������� �"� �-1� � � �� �� �� � 5�u�}�� 5�� 5�� 5�� 5�6�e�l��6��6��6��6�,�E�,��,��,��,��,�\%�J��%�4��%��%��%��%� �%�/�� �� �� �� ��E�$5����������U�[����������U�\�����������_�FI������1C�� ���������_�� ��_�� ��9=�$������������A�G�C��H�$5�6� � ���� ����e�j�%�+�5� 6� �������_��� ��9=�$�(��(��(���(����A�G�C��H�$5�6� (� ��(�� ����e�j�%�+�5� 6� (��(��(��(�T���d���e�j��������� �� �� �� �� �� ��%�*����������5�:���������$�5�:��$��$��$��$�7�u�z��7��7��7��7�. �U�Z�� �� �� �� �1�e�j��1��1��1��1� �U�Z�� �� �� �� ��5�:������������t���u�z���������$ �u�z�� �� �� �� �H�!�"�9=�%*�@8��@8��@8���@8����A�G�C��H�$5�6� @8� �#�@8�� ����e�j�(� )� @8��@8��@8��@8�D 6�E�J�� 6�� 6�� 6�� 6� 6�E�J�� 6�� 6�� 6�� 6��%�*������������� �e�j�� �U�Z�� �� �� �� �A��J�A� ����� �-� .�A��A��A��A�>1�%�*��1��1��1��1�@/2����/2��/2��/2��/2�bY�u�z��Y�e�j��Y��Y��Y��Y��BG�����J�u�z�*��:>�� ��E�J� ��������.(�u�z��(�e�j��(��(��(��(�V�;?�/��/��*�Q�W�S�#�X�%6�7�/� ��� � �/��/��/��/�b�u�~������������r=���r&���)'r���r���r���rK��r���� exceptionsr���r����lexerr���r���� TYPE_CHECKING�typing_extensions�ter'���r ����TypeVarr����r����r ���r����r����r���� frozensetrp���r(���Add�Sub�Mul�Div�FloorDiv�Modr$���ra��r���r���rW���__annotations__r&���r���r=���r;����<module>r������s������>��>��>�� � � � ����������������������.��.��.��.��.��.��+��+��+��+��+��+��!��!��!��!��!��!��&��&��&��&��&��&��?��)�"�"�"�"�(�(�(�(�(�(����+�U�\�5�=�I�I�� �Q�Y�|�U�[�%�/� B� B� ��i� �� �� ������ ��Y�G�G�G�H�H�����9��9��9��9����9� 0��0��Q�V�C���� �+�+� ,�������b��b��b��b��b��b��b��b��b��br=���