§
    XŠtjR‰  ã                   óÈ  — d Z ddlZddlZddlZddlmZmZ ddlmZ ddl	m
Z
mZmZmZmZ ddlmZmZmZmZmZmZ ddlmZ g d¢Z ej        d	¦  «        Zg d
¢Z ed„ ¦  «        Z G d„ de¦  «        Z G d„ de¬¦  «        Z  G d„ de ¦  «        Z! G d„ de"¦  «        Z# G d„ d¦  «        Z$ e$¦   «         Z% G d„ de&¦  «        Z' G d„ d¦  «        Z(d„ Z) G d„ d¦  «        Z* e*¦   «         Z+d„ Z, G d„ d ¦  «        Z- G d!„ d"e¦  «        Z. G d#„ d$e¦  «        Z/ G d%„ d&e e/¬¦  «        Z0 G d'„ d(¦  «        Z1 G d)„ d*e0¦  «        Z2d+„ Z3 G d,„ d-e/¦  «        Z4 G d.„ d/e0e4¬¦  «        Z5dS )0z·
    pygments.lexer
    ~~~~~~~~~~~~~~

    Base lexer classes.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Úapply_filtersÚFilter)Úget_filter_by_name)ÚErrorÚTextÚOtherÚ
WhitespaceÚ
_TokenType)Úget_bool_optÚget_int_optÚget_list_optÚmake_analysatorÚFutureÚguess_decode)Ú	regex_opt)ÚLexerÚ
RegexLexerÚExtendedRegexLexerÚDelegatingLexerÚLexerContextÚincludeÚinheritÚbygroupsÚusingÚthisÚdefaultÚwordsÚline_rez.*?
))s   ï»¿úutf-8)s   ÿþ  zutf-32)s     þÿzutf-32be)s   ÿþzutf-16)s   þÿzutf-16bec                 ó   — dS )Nç        © )Úxs    úL/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pygments/lexer.pyú<lambda>r%   "   s   € ¨#€ ó    c                   ó   — e Zd ZdZd„ ZdS )Ú	LexerMetaz‚
    This metaclass automagically converts ``analyse_text`` methods into
    static methods which always return float values.
    c                 ót   — d|v rt          |d         ¦  «        |d<   t                               | |||¦  «        S )NÚanalyse_text)r   ÚtypeÚ__new__)ÚmcsÚnameÚbasesÚds       r$   r,   zLexerMeta.__new__+   s<   € Ø˜QÐÐÝ /°°.Ô0AÑ BÔ BˆAˆnÑÝ�|Š|˜C  u¨aÑ0Ô0Ð0r&   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r,   r"   r&   r$   r(   r(   %   s-   € € € € € ðð ð
1ð 1ð 1ð 1ð 1r&   r(   c                   ób   — e Zd ZdZdZg Zg Zg Zg ZdZ	dZ
dZdZd„ Zd„ Zd„ Zd„ Zd„ Zdd
„Zd„ ZdS )r   a"  
    Lexer for a specific language.

    See also :doc:`lexerdevelopment`, a high-level guide to writing
    lexers.

    Lexer classes have attributes used for choosing the most appropriate
    lexer based on various criteria.

    .. autoattribute:: name
       :no-value:
    .. autoattribute:: aliases
       :no-value:
    .. autoattribute:: filenames
       :no-value:
    .. autoattribute:: alias_filenames
    .. autoattribute:: mimetypes
       :no-value:
    .. autoattribute:: priority

    Lexers included in Pygments should have two additional attributes:

    .. autoattribute:: url
       :no-value:
    .. autoattribute:: version_added
       :no-value:

    Lexers included in Pygments may have additional attributes:

    .. autoattribute:: _example
       :no-value:

    You can pass options to the constructor. The basic options recognized
    by all lexers and processed by the base `Lexer` class are:

    ``stripnl``
        Strip leading and trailing newlines from the input (default: True).
    ``stripall``
        Strip all leading and trailing whitespace from the input
        (default: False).
    ``ensurenl``
        Make sure that the input ends with a newline (default: True).  This
        is required for some lexers that consume input linewise.

        .. versionadded:: 1.3

    ``tabsize``
        If given and greater than 0, expand tabs in the input (default: 0).
    ``encoding``
        If given, must be an encoding name. This encoding will be used to
        convert the input string to Unicode, if it is not already a Unicode
        string (default: ``'guess'``, which uses a simple UTF-8 / Locale /
        Latin1 detection.  Can also be ``'chardet'`` to use the chardet
        library, if it is installed.
    ``inencoding``
        Overrides the ``encoding`` if given.
    Nr   c                 óœ  — || _         t          |dd¦  «        | _        t          |dd¦  «        | _        t          |dd¦  «        | _        t          |dd¦  «        | _        |                     dd	¦  «        | _        |                     d
¦  «        p| j        | _        g | _	        t          |dd¦  «        D ]}|                      |¦  «         ŒdS )a‘  
        This constructor takes arbitrary options as keyword arguments.
        Every subclass must first process its own options and then call
        the `Lexer` constructor, since it processes the basic
        options like `stripnl`.

        An example looks like this:

        .. sourcecode:: python

           def __init__(self, **options):
               self.compress = options.get('compress', '')
               Lexer.__init__(self, **options)

        As these options must all be specifiable as strings (due to the
        command line usage), there are various utility functions
        available to help with that, see `Utilities`_.
        ÚstripnlTÚstripallFÚensurenlÚtabsizer   ÚencodingÚguessÚ
inencodingÚfiltersr"   N)Úoptionsr   r7   r8   r9   r   r:   Úgetr;   r>   r   Ú
add_filter)Úselfr?   Úfilter_s      r$   Ú__init__zLexer.__init__‘   sÇ   € ð& ˆŒÝ# G¨Y¸Ñ=Ô=ˆŒÝ$ W¨j¸%Ñ@Ô@ˆŒÝ$ W¨j¸$Ñ?Ô?ˆŒÝ" 7¨I°qÑ9Ô9ˆŒØŸš J°Ñ8Ô8ˆŒØŸš LÑ1Ô1ÐB°T´]ˆŒØˆŒÝ# G¨Y¸Ñ;Ô;ð 	%ð 	%ˆGØ�OŠO˜GÑ$Ô$Ð$Ð$ð	%ð 	%r&   c                 ó`   — | j         rd| j        j        › d| j         ›d�S d| j        j        › d�S )Nz<pygments.lexers.z with ú>)r?   Ú	__class__r1   ©rB   s    r$   Ú__repr__zLexer.__repr__¯   sC   € ØŒ<ð 	BØW t¤~Ô'>ÐWÐWÀdÄlÐWÐWÐWÐWàA t¤~Ô'>ÐAÐAÐAÐAr&   c                 ó~   — t          |t          ¦  «        st          |fi |¤Ž}| j                             |¦  «         dS )z8
        Add a new stream filter to this lexer.
        N)Ú
isinstancer   r   r>   Úappend)rB   rC   r?   s      r$   rA   zLexer.add_filterµ   sG   € õ ˜'¥6Ñ*Ô*ð 	=Ý(¨Ð<Ð<°GÐ<Ð<ˆGØŒ×Ò˜GÑ$Ô$Ð$Ð$Ð$r&   c                 ó   — dS )aÁ  
        A static method which is called for lexer guessing.

        It should analyse the text and return a float in the range
        from ``0.0`` to ``1.0``.  If it returns ``0.0``, the lexer
        will not be selected as the most probable one, if it returns
        ``1.0``, it will be selected immediately.  This is used by
        `guess_lexer`.

        The `LexerMeta` metaclass automatically wraps this function so
        that it works like a static method (no ``self`` or ``cls``
        parameter) and the return value is automatically converted to
        `float`. If the return value is an object that is boolean `False`
        it's the same as if the return values was ``0.0``.
        Nr"   )Útexts    r$   r*   zLexer.analyse_text½   s   € € € r&   c                 óL  — t          |t          ¦  «        �s7| j        dk    rt          |¦  «        \  }}�nD| j        dk    rÆ	 ddl}n"# t
          $ r}t          d¦  «        |‚d}~ww xY wd}t          D ]G\  }}|                     |¦  «        r-|t          |¦  «        d…          	                    |d¦  «        } nŒH|€H| 
                    |dd…         ¦  «        }| 	                    |                     d¦  «        pd	d¦  «        }|}ns| 	                    | j        ¦  «        }|                     d
¦  «        r|t          d
¦  «        d…         }n,|                     d
¦  «        r|t          d
¦  «        d…         }|                     dd¦  «        }|                     dd¦  «        }| j        r|                     ¦   «         }n| j        r|                     d¦  «        }| j        dk    r|                     | j        ¦  «        }| j        r|                     d¦  «        s|dz  }|S )zVApply preprocessing such as decoding the input, removing BOM and normalizing newlines.r<   Úchardetr   NzkTo enable chardet encoding guessing, please install the chardet library from http://chardet.feedparser.org/Úreplacei   r;   r   u   ï»¿z
ú
ú)rK   Ústrr;   r   rP   ÚImportErrorÚ_encoding_mapÚ
startswithÚlenÚdecodeÚdetectr@   rQ   r8   Ústripr7   r:   Ú
expandtabsr9   Úendswith)	rB   rN   Ú_rP   ÚeÚdecodedÚbomr;   Úencs	            r$   Ú_preprocess_lexer_inputzLexer._preprocess_lexer_inputÎ   sK  € õ ˜$¥Ñ$Ô$ñ 	,ØŒ} Ò'Ð'Ý& tÑ,Ô,‘��a‘aØ” )Ò+Ð+ðTØ"�N�N�N�NøÝ"ð Tð Tð TÝ%ð 'Lñ Mô MàRSðTøøøøðTøøøð
 �Ý%2ð ð ‘M�C˜Ø—’ sÑ+Ô+ð Ø"&¥s¨3¡x¤x y y¤/×"8Ò"8¸À9Ñ"MÔ"M˜Ø˜ðð �?Ø!Ÿ.š.¨¨e¨t¨e¬Ñ5Ô5�CØ"Ÿkšk¨#¯'ª'°*Ñ*=Ô*=Ð*HÀØ*3ñ5ô 5�Gà��à—{’{ 4¤=Ñ1Ô1�Ø—?’? 8Ñ,Ô,ð 0Ø¥ H¡¤  Ô/�Døà�Š˜xÑ(Ô(ð ,Ø�C ™MœM˜N˜NÔ+�ð �|Š|˜F DÑ)Ô)ˆØ�|Š|˜D $Ñ'Ô'ˆØŒ=ð 	$Ø—:’:‘<”<ˆDˆDØŒ\ð 	$Ø—:’:˜dÑ#Ô#ˆDØŒ<˜!ÒÐØ—?’? 4¤<Ñ0Ô0ˆDØŒ=ð 	 §¢¨tÑ!4Ô!4ð 	Ø�D‰LˆDàˆs   ÁA Á
A&ÁA!Á!A&Fc                 ó„   ‡ ‡— ‰                       ‰¦  «        Šˆ ˆfd„} |¦   «         }|st          |‰ j        ‰ ¦  «        }|S )ae  
        This method is the basic interface of a lexer. It is called by
        the `highlight()` function. It must process the text and return an
        iterable of ``(tokentype, value)`` pairs from `text`.

        Normally, you don't need to override this method. The default
        implementation processes the options recognized by all lexers
        (`stripnl`, `stripall` and so on), and then yields all tokens
        from `get_tokens_unprocessed()`, with the ``index`` dropped.

        If `unfiltered` is set to `True`, the filtering mechanism is
        bypassed even if filters are defined.
        c               3   óP   •K  — ‰                      ‰¦  «        D ]\  } }}||fV — Œd S ©N)Úget_tokens_unprocessed)r^   ÚtÚvrB   rN   s      €€r$   Ústreamerz"Lexer.get_tokens.<locals>.streamer  sC   øè è € Ø×6Ò6°tÑ<Ô<ð ð ‘��1�aØ˜�d�
�
�
�
ðð r&   )rc   r   r>   )rB   rN   Ú
unfilteredrj   Ústreams   ``   r$   Ú
get_tokenszLexer.get_tokensý   sd   øø€ ð ×+Ò+¨DÑ1Ô1ˆð	ð 	ð 	ð 	ð 	ð 	ð �‘”ˆØð 	?Ý" 6¨4¬<¸Ñ>Ô>ˆFØˆr&   c                 ó   — t           ‚)aS  
        This method should process the text and return an iterable of
        ``(index, tokentype, value)`` tuples where ``index`` is the starting
        position of the token within the input text.

        It must be overridden by subclasses. It is recommended to
        implement it as a generator to maximize effectiveness.
        )ÚNotImplementedError)rB   rN   s     r$   rg   zLexer.get_tokens_unprocessed  s
   € õ "Ð!r&   )F)r1   r2   r3   r4   r.   ÚaliasesÚ	filenamesÚalias_filenamesÚ	mimetypesÚpriorityÚurlÚversion_addedÚ_examplerD   rI   rA   r*   rc   rm   rg   r"   r&   r$   r   r   1   sÐ   € € € € € ð8ð 8ðv €Dð €Gð
 €Ið €Oð €Ið €Hð €Cð €Mð €Hð%ð %ð %ð<Bð Bð Bð%ð %ð %ðð ð ð"-ð -ð -ð^ð ð ð ð0	"ð 	"ð 	"ð 	"ð 	"r&   r   )Ú	metaclassc                   ó"   — e Zd ZdZefd„Zd„ ZdS )r   a   
    This lexer takes two lexer as arguments. A root lexer and
    a language lexer. First everything is scanned using the language
    lexer, afterwards all ``Other`` tokens are lexed using the root
    lexer.

    The lexers from the ``template`` lexer package use this base lexer.
    c                 ól   —  |di |¤Ž| _          |di |¤Ž| _        || _        t          j        | fi |¤Ž d S ©Nr"   )Ú
root_lexerÚlanguage_lexerÚneedler   rD   )rB   Ú_root_lexerÚ_language_lexerÚ_needler?   s        r$   rD   zDelegatingLexer.__init__+  sV   € Ø%˜+Ð0Ð0¨Ð0Ð0ˆŒØ-˜oÐ8Ð8°Ð8Ð8ˆÔØˆŒÝŒ�tÐ'Ð'˜wÐ'Ð'Ð'Ð'Ð'r&   c                 óŠ  — d}g }g }| j                              |¦  «        D ]U\  }}}|| j        u r.|r&|                     t	          |¦  «        |f¦  «         g }||z  }Œ=|                     |||f¦  «         ŒV|r$|                     t	          |¦  «        |f¦  «         t          || j                             |¦  «        ¦  «        S )NÚ )r}   rg   r~   rL   rX   Údo_insertionsr|   )rB   rN   ÚbufferedÚ
insertionsÚ
lng_bufferÚirh   ri   s           r$   rg   z&DelegatingLexer.get_tokens_unprocessed1  sé   € ØˆØˆ
Øˆ
ØÔ*×AÒAÀ$ÑGÔGð 	-ð 	-‰GˆAˆq�!Ø�D”KÐÐØð $Ø×%Ò%¥s¨8¡}¤}°jÐ&AÑBÔBÐBØ!#�JØ˜A‘��à×!Ò! 1 a¨ )Ñ,Ô,Ð,Ð,Øð 	;Ø×Ò�s 8™}œ}¨jÐ9Ñ:Ô:Ð:Ý˜ZØ!œ_×CÒCÀHÑMÔMñOô Oð 	Or&   N)r1   r2   r3   r4   r   rD   rg   r"   r&   r$   r   r   !  sL   € € € € € ðð ð >Cð (ð (ð (ð (ðOð Oð Oð Oð Or&   r   c                   ó   — e Zd ZdZdS )r   zI
    Indicates that a state should include rules from another state.
    N©r1   r2   r3   r4   r"   r&   r$   r   r   H  s   € € € € € ðð ð 	€Dr&   r   c                   ó   — e Zd ZdZd„ ZdS )Ú_inheritzC
    Indicates the a state should inherit from its superclass.
    c                 ó   — dS )Nr   r"   rH   s    r$   rI   z_inherit.__repr__S  s   € Øˆyr&   N)r1   r2   r3   r4   rI   r"   r&   r$   rŒ   rŒ   O  s-   € € € € € ðð ðð ð ð ð r&   rŒ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Úcombinedz:
    Indicates a state combined from multiple states.
    c                 ó8   — t                                | |¦  «        S rf   )Útupler,   )ÚclsÚargss     r$   r,   zcombined.__new__^  s   € Ý�}Š}˜S $Ñ'Ô'Ð'r&   c                 ó   — d S rf   r"   )rB   r“   s     r$   rD   zcombined.__init__a  s   € àˆr&   N)r1   r2   r3   r4   r,   rD   r"   r&   r$   r�   r�   Y  s<   € € € € € ðð ð(ð (ð (ðð ð ð ð r&   r�   c                   ó<   — e Zd ZdZd„ Zd	d„Zd	d„Zd	d„Zd„ Zd„ Z	dS )
Ú_PseudoMatchz:
    A pseudo match object constructed from a string.
    c                 ó"   — || _         || _        d S rf   )Ú_textÚ_start)rB   ÚstartrN   s      r$   rD   z_PseudoMatch.__init__k  s   € ØˆŒ
ØˆŒˆˆr&   Nc                 ó   — | j         S rf   )r™   ©rB   Úargs     r$   rš   z_PseudoMatch.starto  s
   € ØŒ{Ðr&   c                 ó:   — | j         t          | j        ¦  «        z   S rf   )r™   rX   r˜   rœ   s     r$   Úendz_PseudoMatch.endr  s   € ØŒ{�S ¤™_œ_Ñ,Ð,r&   c                 ó2   — |rt          d¦  «        ‚| j        S )NzNo such group)Ú
IndexErrorr˜   rœ   s     r$   Úgroupz_PseudoMatch.groupu  s    € Øð 	.Ý˜_Ñ-Ô-Ð-ØŒzÐr&   c                 ó   — | j         fS rf   )r˜   rH   s    r$   Úgroupsz_PseudoMatch.groupsz  s   € Ø”
ˆ}Ðr&   c                 ó   — i S rf   r"   rH   s    r$   Ú	groupdictz_PseudoMatch.groupdict}  s   € Øˆ	r&   rf   )
r1   r2   r3   r4   rD   rš   rŸ   r¢   r¤   r¦   r"   r&   r$   r–   r–   f  s‡   € € € € € ðð ðð ð ðð ð ð ð-ð -ð -ð -ðð ð ð ð
ð ð ðð ð ð ð r&   r–   c                  ó   ‡ — dˆ fd„	}|S )zL
    Callback that yields multiple actions for each group in the match.
    Nc           
   3   óø  •K  — t          ‰¦  «        D ]É\  }}|€Œt          |¦  «        t          u r8|                     |dz   ¦  «        }|r|                     |dz   ¦  «        ||fV — ŒV|                     |dz   ¦  «        }|�Y|r|                     |dz   ¦  «        |_         || t          |                     |dz   ¦  «        |¦  «        |¦  «        D ]}|r|V — Œ	ŒÊ|r|                     ¦   «         |_        d S d S )Né   )Ú	enumerater+   r
   r¢   rš   Úposr–   rŸ   )ÚlexerÚmatchÚctxrˆ   ÚactionÚdataÚitemr“   s          €r$   Úcallbackzbygroups.<locals>.callback…  s*  øè è € Ý" 4™œð 	'ð 	'‰IˆAˆvØˆ~ØÝ�f‘”¥Ð+Ð+Ø—{’{ 1 q¡5Ñ)Ô)�Øð ;ØŸ+š+ a¨!¡eÑ,Ô,¨f°dÐ:Ð:Ð:Ð:øà—{’{ 1 q¡5Ñ)Ô)�ØÐ#Øð 5Ø"'§+¢+¨a°!©eÑ"4Ô"4˜œØ &  uÝ'3°E·K²KÀÀAÁÑ4FÔ4FÈÑ'MÔ'MÈsñ!Tô !Tð 'ð '˜àð 'Ø"&˜J˜J˜JøøØð 	"Ø—i’i‘k”kˆCŒGˆGˆGð	"ð 	"r&   rf   r"   )r“   r²   s   ` r$   r   r   �  s(   ø€ ð"ð "ð "ð "ð "ð "ð& €Or&   c                   ó   — e Zd ZdZdS )Ú_ThiszX
    Special singleton used for indicating the caller class.
    Used by ``using``.
    NrŠ   r"   r&   r$   r´   r´   ›  s   € € € € € ðð ð ð r&   r´   c                 óÆ   ‡ ‡‡— i Šd‰v r>‰                      d¦  «        }t          |t          t          f¦  «        r|‰d<   nd|f‰d<   ‰ t          u rdˆˆfd„	}ndˆ ˆˆfd„	}|S )aÂ  
    Callback that processes the match with a different lexer.

    The keyword arguments are forwarded to the lexer, except `state` which
    is handled separately.

    `state` specifies the state that the new lexer will start in, and can
    be an enumerable such as ('root', 'inline', 'string') or a simple
    string which is assumed to be on top of the root state.

    Note: For that to work, `_other` must not be an `ExtendedRegexLexer`.
    ÚstateÚstackÚrootNc              3   óF  •K  — ‰
r7t          | j        ¦  «        }|                     ‰
¦  «          | j        di |¤Ž}n| }|                     ¦   «         } |j        |                     ¦   «         fi ‰	¤ŽD ]\  }}}||z   ||fV — Œ|r|                     ¦   «         |_        d S d S r{   )	Údictr?   ÚupdaterG   rš   rg   r¢   rŸ   r«   )r¬   r­   r®   r0   ÚlxÚsrˆ   rh   ri   Ú	gt_kwargsÚkwargss            €€r$   r²   zusing.<locals>.callbackº  sÍ   øè è € ð ð å˜œÑ'Ô'�Ø—’˜Ñ Ô Ð Ø$�U”_Ð)Ð) qÐ)Ð)��à�Ø—’‘”ˆAØ4˜2Ô4°U·[²[±]´]ÐPÐPÀiÐPÐPð "ð "‘��1�aØ˜!‘e˜Q �kÐ!Ð!Ð!Ð!Øð &ØŸ)š)™+œ+�”��ð&ð &r&   c              3   ó2  •K  — t          | j        ¦  «        }|                     ‰¦  «          ‰	di |¤Ž}|                     ¦   «         } |j        |                     ¦   «         fi ‰
¤ŽD ]\  }}}||z   ||fV — Œ|r|                     ¦   «         |_        d S d S r{   )rº   r?   r»   rš   rg   r¢   rŸ   r«   )r¬   r­   r®   r0   r¼   r½   rˆ   rh   ri   Ú_otherr¾   r¿   s            €€€r$   r²   zusing.<locals>.callbackÊ  s¶   øè è € å�U”]Ñ#Ô#ˆAØ�HŠH�VÑÔÐØ���˜!��ˆBà—’‘”ˆAØ4˜2Ô4°U·[²[±]´]ÐPÐPÀiÐPÐPð "ð "‘��1�aØ˜!‘e˜Q �kÐ!Ð!Ð!Ð!Øð &ØŸ)š)™+œ+�”��ð&ð &r&   rf   )ÚpoprK   Úlistr‘   r   )rÁ   r¿   r½   r²   r¾   s   ``  @r$   r   r   ¤  s¹   øøø€ ð €IØ�&ÐÐØ�JŠJ�wÑÔˆÝ�a�$¥˜Ñ'Ô'ð 	-Ø!"ˆI�gÑÐà"(¨! ˆI�gÑà•€~€~ð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ð €Or&   c                   ó   — e Zd ZdZd„ ZdS )r   zÑ
    Indicates a state or state action (e.g. #pop) to apply.
    For example default('#pop') is equivalent to ('', Token, '#pop')
    Note that state tuples may be used as well.

    .. versionadded:: 2.0
    c                 ó   — || _         d S rf   )r¶   )rB   r¶   s     r$   rD   zdefault.__init__à  s   € ØˆŒ
ˆ
ˆ
r&   N)r1   r2   r3   r4   rD   r"   r&   r$   r   r   Ø  s-   € € € € € ðð ðð ð ð ð r&   r   c                   ó    — e Zd ZdZdd„Zd„ ZdS )r   z•
    Indicates a list of literal words that is transformed into an optimized
    regex that matches any of the words.

    .. versionadded:: 2.0
    rƒ   c                 ó0   — || _         || _        || _        d S rf   )r   ÚprefixÚsuffix)rB   r   rÈ   rÉ   s       r$   rD   zwords.__init__ë  s   € ØˆŒ
ØˆŒØˆŒˆˆr&   c                 óD   — t          | j        | j        | j        ¬¦  «        S )N©rÈ   rÉ   )r   r   rÈ   rÉ   rH   s    r$   r@   z	words.getð  s   € Ý˜œ¨D¬KÀÄÐLÑLÔLÐLr&   N)rƒ   rƒ   )r1   r2   r3   r4   rD   r@   r"   r&   r$   r   r   ä  sF   € € € € € ðð ðð ð ð ð
Mð Mð Mð Mð Mr&   r   c                   ó>   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd
d„Zd„ Z	d	„ Z
dS )ÚRegexLexerMetazw
    Metaclass for RegexLexer, creates the self._tokens attribute from
    self.tokens on the first instantiation.
    c                 óˆ   — t          |t          ¦  «        r|                     ¦   «         }t          j        ||¦  «        j        S )zBPreprocess the regular expression component of a token definition.)rK   r   r@   ÚreÚcompiler­   )r’   ÚregexÚrflagsr¶   s       r$   Ú_process_regexzRegexLexerMeta._process_regexú  s6   € å�e�VÑ$Ô$ð 	 Ø—I’I‘K”KˆEÝŒz˜% Ñ(Ô(Ô.Ð.r&   c                 ój   — t          |¦  «        t          u st          |¦  «        sJ d|›�¦   «         ‚|S )z5Preprocess the token component of a token definition.z0token type must be simple type or callable, not )r+   r
   Úcallable)r’   Útokens     r$   Ú_process_tokenzRegexLexerMeta._process_token   s<   € å�E‰{Œ{�jÐ(Ð(­H°U©O¬OÐ(Ð(ØH¸uÐHÐHñ )Ô(Ð;àˆr&   c                 ó2  — t          |t          ¦  «        rJ|dk    rdS ||v r|fS |dk    r|S |dd…         dk    rt          |dd…         ¦  «         S J d|›�¦   «         ‚t          |t          ¦  «        rfd	| j        z  }| xj        d
z  c_        g }|D ]?}||k    sJ d|›�¦   «         ‚|                     |                      |||¦  «        ¦  «         Œ@|||<   |fS t          |t          ¦  «        r|D ]}||v s|dv sJ d|z   ¦   «         ‚Œ|S J d|›�¦   «         ‚)z=Preprocess the state transition action of a token definition.ú#popéÿÿÿÿú#pushNé   z#pop:Fzunknown new state z_tmp_%dr©   zcircular state ref )rÙ   rÛ   zunknown new state def )rK   rT   Úintr�   Ú_tmpnameÚextendÚ_process_stater‘   )r’   Ú	new_stateÚunprocessedÚ	processedÚ	tmp_stateÚitokensÚistates          r$   Ú_process_new_statez!RegexLexerMeta._process_new_state  s®  € å�i¥Ñ%Ô%ð 	Aà˜FÒ"Ð"Ø�rØ˜kÐ)Ð)Ø!�|Ð#Ø˜gÒ%Ð%Ø Ð Ø˜2˜A˜2” 'Ò)Ð)Ý˜I a b bœMÑ*Ô*Ð*Ð*à@Ð@°9Ð@Ð@Ñ@Ô@�uÝ˜	¥8Ñ,Ô,ð 	Aà! C¤LÑ0ˆIØˆLŒL˜AÑˆLŒLØˆGØ#ð Fð F�Ø Ò*Ð*Ð*Ð,LÀ&Ð,LÐ,LÑ*Ô*Ð*Ø—’˜s×1Ò1°+Ø2;¸Vñ Eô  Eñ Fô Fð Fð Fà#*ˆI�iÑ Ø�<ÐÝ˜	¥5Ñ)Ô)ð 	Aà#ð 2ð 2�Ø +Ð-Ð-ØÐ"3Ð3Ð3Ð3Ø(¨6Ñ1ñ 4Ô3ð4øð Ðà@Ð@°9Ð@Ð@Ñ@Ô@�5r&   c                 ó0  — t          |t          ¦  «        sJ d|›�¦   «         ‚|d         dk    sJ d|›�¦   «         ‚||v r||         S g x}||<   | j        }||         D �]¶}t          |t          ¦  «        rK||k    sJ d|›�¦   «         ‚|                     |                      ||t          |¦  «        ¦  «        ¦  «         Œct          |t          ¦  «        rŒyt          |t          ¦  «        rL|                      |j	        ||¦  «        }| 
                    t          j        d¦  «        j        d|f¦  «         ŒÚt          |¦  «        t          u sJ d|›�¦   «         ‚	 |                      |d         ||¦  «        }n4# t"          $ r'}	t%          d	|d         ›d
|›d| ›d|	› �¦  «        |	‚d}	~	ww xY w|                      |d         ¦  «        }
t)          |¦  «        dk    rd}n|                      |d         ||¦  «        }| 
                    ||
|f¦  «         �Œ¸|S )z%Preprocess a single state definition.zwrong state name r   ú#zinvalid state name zcircular state reference rƒ   Nzwrong rule def zuncompilable regex z
 in state z of z: r©   é   )rK   rT   Úflagsr   rß   rà   rŒ   r   rç   r¶   rL   rÏ   rÐ   r­   r+   r‘   rÓ   Ú	ExceptionÚ
ValueErrorr×   rX   )r’   râ   rã   r¶   ÚtokensrÒ   Útdefrá   ÚrexÚerrrÖ   s              r$   rà   zRegexLexerMeta._process_state)  sr  € å˜%¥Ñ%Ô%ÐDÐDÐ'D¸5Ð'DÐ'DÑDÔDÐ%Ø�QŒx˜3ŠˆˆÐ ?°eÐ ?Ð ?‰ŒˆØ�IÐÐØ˜UÔ#Ð#Ø$&Ð&ˆ�˜5Ñ!Ø”ˆØ Ô&ð  	3ñ  	3ˆDÝ˜$¥Ñ(Ô(ð à˜u’}�}�}Ð&KÀ%Ð&KÐ&K‘}”}�}Ø—’˜c×0Ò0°¸iÝ14°T±´ñ<ô <ñ =ô =ð =àÝ˜$¥Ñ)Ô)ð ð Ý˜$¥Ñ(Ô(ð Ø×2Ò2°4´:¸{ÈIÑVÔV�	Ø—’�rœz¨"™~œ~Ô3°T¸9ÐEÑFÔFÐFØå˜‘:”:¥Ð&Ð&Ð&Ð(B¸$Ð(BÐ(BÑ&Ô&Ð&ðrØ×(Ò(¨¨a¬°&¸%Ñ@Ô@��øÝð rð rð rÝ Ð!g°t¸A´wÐ!gÐ!gÈEÐ!gÐ!gÐY\Ð!gÐ!gÐbeÐ!gÐ!gÑhÔhÐnqÐqøøøøðrøøøð ×&Ò& t¨A¤wÑ/Ô/ˆEå�4‰yŒy˜AŠ~ˆ~Ø �	�	à×2Ò2°4¸´7Ø3>À	ñKô K�	ð �MŠM˜3  yÐ1Ñ2Ô2Ð2Ñ2Øˆs   ÅE:Å:
F+Æ"F&Æ&F+Nc                 óŽ   — i x}| j         |<   |p| j        |         }t          |¦  «        D ]}|                      |||¦  «         Œ|S )z-Preprocess a dictionary of token definitions.)Ú_all_tokensrî   rÃ   rà   )r’   r.   Ú	tokendefsrã   r¶   s        r$   Úprocess_tokendefzRegexLexerMeta.process_tokendefT  sZ   € à,.Ð.ˆ	�C”O DÑ)ØÐ1 ¤¨DÔ!1ˆ	Ý˜)‘_”_ð 	<ð 	<ˆEØ×Ò˜y¨)°UÑ;Ô;Ð;Ð;ØÐr&   c                 óÔ  — i }i }| j         D ]Û}|j                             di ¦  «        }|                     ¦   «         D ]©\  }}|                     |¦  «        }|€7|||<   	 |                     t
          ¦  «        }n# t          $ r Y ŒIw xY w|||<   ŒS|                     |d¦  «        }|€Œl||||dz   …<   	 |                     t
          ¦  «        }	||	z   ||<   Œš# t          $ r Y Œ¦w xY wŒÜ|S )a  
        Merge tokens from superclasses in MRO order, returning a single tokendef
        dictionary.

        Any state that is not defined by a subclass will be inherited
        automatically.  States that *are* defined by subclasses will, by
        default, override that state in the superclass.  If a subclass wishes to
        inherit definitions from a superclass, it can use the special value
        "inherit", which will cause the superclass' state definition to be
        included at that point in the state.
        rî   Nr©   )Ú__mro__Ú__dict__r@   ÚitemsÚindexr   rí   rÂ   )
r’   rî   ÚinheritableÚcÚtoksr¶   rù   ÚcuritemsÚinherit_ndxÚnew_inh_ndxs
             r$   Úget_tokendefszRegexLexerMeta.get_tokendefs\  sG  € ð ˆØˆØ”ð 	Cð 	CˆAØ”:—>’> (¨BÑ/Ô/ˆDà $§
¢
¡¤ð Cð C‘��uØ!Ÿ:š: eÑ,Ô,�ØÐ#ð
 %*�F˜5‘Mð!Ø&+§k¢kµ'Ñ&:Ô&:˜˜øÝ%ð !ð !ð !Ø ˜ð!øøøà)4�K Ñ&Øà)Ÿošo¨e°TÑ:Ô:�ØÐ&Øð 7<�˜ [°¡]Ð2Ñ3ðCð #(§+¢+­gÑ"6Ô"6�Kð *5°{Ñ)B�K Ñ&Ð&øõ "ð ð ð Ø�Dðøøøð3Cð< ˆs$   ÁA:Á:
BÂBÂ4CÃ
C$Ã#C$c                 óä   — d| j         vrSi | _        d| _        t          | d¦  «        r| j        rn-|                      d|                      ¦   «         ¦  «        | _        t          j	        | g|¢R i |¤ŽS )z:Instantiate cls after preprocessing its token definitions.Ú_tokensr   Útoken_variantsrƒ   )
rø   ró   rÞ   Úhasattrr  rõ   r  r  r+   Ú__call__)r’   r“   Úkwdss      r$   r  zRegexLexerMeta.__call__�  s‚   € à˜CœLÐ(Ð(Ø ˆCŒOØˆCŒLÝ�sÐ,Ñ-Ô-ð L°#Ô2Dð Làà!×2Ò2°2°s×7HÒ7HÑ7JÔ7JÑKÔK�”åŒ}˜SÐ0 4Ð0Ð0Ð0¨4Ð0Ð0Ð0r&   rf   )r1   r2   r3   r4   rÓ   r×   rç   rà   rõ   r  r  r"   r&   r$   rÍ   rÍ   ô  s’   € € € € € ðð ð
/ð /ð /ðð ð ð!Að !Að !AðF)ð )ð )ðVð ð ð ð/ð /ð /ðb1ð 1ð 1ð 1ð 1r&   rÍ   c                   ó,   — e Zd ZdZej        Zi Zdd„ZdS )r   z±
    Base for simple stateful regular expression-based lexers.
    Simplifies the lexing process so that you need only
    provide a list of states and regular expressions.
    ©r¸   c              #   óè  K  — d}| j         }t          |¦  «        }||d                  }	 |D �]p\  }}}	 |||¦  «        }
|
�rZ|�Bt          |¦  «        t          u r|||
                     ¦   «         fV — n || |
¦  «        E d{V —† |
                     ¦   «         }|	�þt          |	t          ¦  «        rk|	D ]g}|dk    r(t          |¦  «        dk    r| 	                    ¦   «          Œ0|dk    r| 
                    |d         ¦  «         ŒR| 
                    |¦  «         Œhnpt          |	t          ¦  «        r,t          |	¦  «        t          |¦  «        k    r|dd…= n5||	d…= n/|	dk    r| 
                    |d         ¦  «         nJ d|	›�¦   «         ‚||d                  } nV�Œr	 ||         d	k    rd
g}|d
         }|t          d	fV — |dz  }�Œ |t          ||         fV — |dz  }n# t          $ r Y dS w xY w�ŒÊ)z~
        Split ``text`` into (tokentype, text) pairs.

        ``stack`` is the initial stack (default: ``['root']``)
        r   rÚ   r©   NrÙ   rÛ   Fúwrong state def: rR   r¸   )r  rÃ   r+   r
   r¢   rŸ   rK   r‘   rX   rÂ   rL   rÝ   Úabsr	   r   r¡   )rB   rN   r·   r«   rô   Ú
statestackÚstatetokensÚrexmatchr¯   rá   Úmr¶   s               r$   rg   z!RegexLexer.get_tokens_unprocessed¾  s‡  è è € ð ˆØ”Lˆ	Ý˜%‘[”[ˆ
Ø 
¨2¤Ô/ˆð1	Ø/:ð 0ñ 0Ñ+�˜& )Ø�H˜T 3Ñ'Ô'�Øñ ØÐ)Ý ™<œ<­:Ð5Ð5Ø"% v¨q¯wªw©y¬yÐ"8Ð8Ð8Ð8Ð8à'- v¨d°A¡¤Ð6Ð6Ð6Ð6Ð6Ð6Ð6ØŸ%š%™'œ'�CØ Ð,å% iµÑ7Ô7ð LØ)2ð =ð = Ø#(¨F¢? ?Ý'*¨:¡¤¸Ò':Ð':Ø(2¯ªÑ(8Ô(8Ð(8øØ%*¨gÒ%5Ð%5Ø$.×$5Ò$5°jÀ´nÑ$EÔ$EÐ$EÐ$Eà$.×$5Ò$5°eÑ$<Ô$<Ð$<Ð$<ð=õ (¨	µ3Ñ7Ô7ð Lõ  # 9™~œ~µ°Z±´Ò@Ð@Ø$.¨q¨r¨r N Nà$.¨y¨z¨zÐ$:Ð$:Ø&¨'Ò1Ð1Ø&×-Ò-¨j¸¬nÑ=Ô=Ð=Ð=àKÐ*K¸iÐ*KÐ*KÑKÔK 5Ø&/°
¸2´Ô&?˜Ø�Eñ?ðFØ˜C”y DÒ(Ð(à&, X˜
Ø&/°Ô&7˜Ø!¥:¨tÐ3Ð3Ð3Ð3Ø˜q™˜Ù Ø�u d¨3¤iÐ/Ð/Ð/Ð/Ø˜1‘H�C�CøÝ!ð ð ð Ø�E�Eðøøøña1	s   Æ(G! Ç	G! Ç!
G/Ç.G/N©r	  )	r1   r2   r3   r4   rÏ   Ú	MULTILINErë   rî   rg   r"   r&   r$   r   r   ›  sB   € € € € € ðð ð ŒL€Eð0 €Fð;ð ;ð ;ð ;ð ;ð ;r&   r   c                   ó    — e Zd ZdZdd„Zd„ ZdS )r   z9
    A helper object that holds lexer position data.
    Nc                 ób   — || _         || _        |pt          |¦  «        | _        |pdg| _        d S )Nr¸   )rN   r«   rX   rŸ   r·   )rB   rN   r«   r·   rŸ   s        r$   rD   zLexerContext.__init__  s4   € ØˆŒ	ØˆŒØÐ#�#˜d™)œ)ˆŒØÐ&˜v˜hˆŒ
ˆ
ˆ
r&   c                 ó8   — d| j         ›d| j        ›d| j        ›d�S )NzLexerContext(z, ú))rN   r«   r·   rH   s    r$   rI   zLexerContext.__repr__  s)   € ØK˜tœyÐKÐK¨d¬hÐKÐK¸D¼JÐKÐKÐKÐKr&   ©NN)r1   r2   r3   r4   rD   rI   r"   r&   r$   r   r   ü  sF   € € € € € ðð ð'ð 'ð 'ð 'ðLð Lð Lð Lð Lr&   r   c                   ó   — e Zd ZdZdd„ZdS )r   zE
    A RegexLexer that uses a context object to store its state.
    Nc              #   ó`  K  — | j         }|st          |d¦  «        }|d         }n|}||j        d                  }|j        }	 |D �]Ó\  }}} |||j        |j        ¦  «        }	|	�r²|�vt          |¦  «        t          u r8|j        ||	                     ¦   «         fV — |	                     ¦   «         |_        n( || |	|¦  «        E d{V —† |s||j        d                  }|��5t          |t          ¦  «        r„|D ]€}
|
dk    r2t          |j        ¦  «        dk    r|j                             ¦   «          Œ:|
dk    r&|j                             |j        d         ¦  «         Œf|j                             |
¦  «         Œ�n‰t          |t          ¦  «        r;t          |¦  «        t          |j        ¦  «        k    r|j        dd…= nD|j        |d…= n9|dk    r&|j                             |j        d         ¦  «         nJ d	|›�¦   «         ‚||j        d                  } n—�ŒÕ	 |j        |j        k    rdS ||j                 d
k    r3dg|_        |d         }|j        t           d
fV — |xj        dz  c_        �Œ/|j        t"          ||j                 fV — |xj        dz  c_        n# t$          $ r Y dS w xY w�Œn)z
        Split ``text`` into (tokentype, text) pairs.
        If ``context`` is given, use this lexer context instead.
        r   r¸   rÚ   r©   NrÙ   rÛ   Fr  rR   )r  r   r·   rN   r«   rŸ   r+   r
   r¢   rK   r‘   rX   rÂ   rL   rÝ   r  r   r   r¡   )rB   rN   Úcontextrô   r®   r  r  r¯   rá   r  r¶   s              r$   rg   z)ExtendedRegexLexer.get_tokens_unprocessed  s
  è è € ð
 ”Lˆ	Øð 	Ý˜t QÑ'Ô'ˆCØ# FÔ+ˆKˆKàˆCØ# C¤I¨b¤MÔ2ˆKØ”8ˆDð3	Ø/:ð 2ñ 2Ñ+�˜& )Ø�H˜T 3¤7¨C¬GÑ4Ô4�Øñ !ØÐ)Ý ™<œ<­:Ð5Ð5Ø"%¤'¨6°1·7²7±9´9Ð"<Ð<Ð<Ð<Ø&'§e¢e¡g¤g˜CœG˜Gà'- v¨d°A°sÑ';Ô';Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø#,ð Gà.7¸¼	À"¼Ô.F à Ñ,å% iµÑ7Ô7ð LØ)2ð <ð < Ø#(¨F¢? ?Ý'*¨3¬9¡~¤~¸Ò'9Ð'9Ø(+¬	¯ª©¬¨øØ%*¨gÒ%5Ð%5Ø$'¤I×$4Ò$4°S´Y¸r´]Ñ$CÔ$CÐ$CÐ$Cà$'¤I×$4Ò$4°UÑ$;Ô$;Ð$;Ð$;ð<õ (¨	µ3Ñ7Ô7ð 	Lå" 9™~œ~µ°S´Y±´Ò?Ð?Ø$'¤I¨a¨b¨b M Mà$'¤I¨i¨j¨jÐ$9Ð$9Ø&¨'Ò1Ð1ØœI×,Ò,¨S¬Y°r¬]Ñ;Ô;Ð;Ð;àKÐ*K¸iÐ*KÐ*KÑKÔK 5Ø&/°´	¸"´Ô&>˜Ø�EñC!ðFØ”w #¤'Ò)Ð)Ø˜Ø˜CœG”}¨Ò,Ð,à%+ H˜œ	Ø&/°Ô&7˜Ø!œg¥t¨TÐ1Ð1Ð1Ð1Ø˜œ 1™˜œÙ Øœ'¥5¨$¨s¬w¬-Ð7Ð7Ð7Ð7Ø�G”G˜q‘L�G”G�GøÝ!ð ð ð Ø�E�Eðøøøñe3	s   ÈJ È,AJ É0,J Ê
J+Ê*J+r  )r1   r2   r3   r4   rg   r"   r&   r$   r   r     s8   € € € € € ðð ð@ð @ð @ð @ð @ð @r&   r   c              #   ó  K  — t          | ¦  «        } 	 t          | ¦  «        \  }}n# t          $ r |E d{V —† Y dS w xY wd}d}|D ]è\  }}}|€|}d}	|r£|t          |¦  «        z   |k    r�||	||z
  …         }
|
r|||
fV — |t          |
¦  «        z  }|D ]\  }}}|||fV — |t          |¦  «        z  }Œ ||z
  }		 t          | ¦  «        \  }}n# t          $ r d}Y nw xY w|r|t          |¦  «        z   |k    °�|	t          |¦  «        k     r$||||	d…         fV — |t          |¦  «        |	z
  z  }Œé|rQ|pd}|D ]\  }}}|||fV — |t          |¦  «        z  }Œ 	 t          | ¦  «        \  }}n# t          $ r d}Y dS w xY w|°OdS dS )ag  
    Helper for lexers which must combine the results of several
    sublexers.

    ``insertions`` is a list of ``(index, itokens)`` pairs.
    Each ``itokens`` iterable should be inserted at position
    ``index`` into the token stream given by the ``tokens``
    argument.

    The result is a combined token stream.

    TODO: clean up the code here.
    NTr   F)ÚiterÚnextÚStopIterationrX   )r†   rî   rú   rå   ÚrealposÚinsleftrˆ   rh   ri   ÚoldiÚtmpvalÚit_indexÚit_tokenÚit_valueÚps                  r$   r„   r„   S  s{  è è € õ �jÑ!Ô!€JðÝ˜jÑ)Ô)‰ˆˆwˆwøÝð ð ð àÐÐÐÐÐÐÐØˆˆðøøøð
 €GØ€Gð ð %ð %‰ˆˆ1ˆaàˆ?ØˆGØˆØð 	˜!�c !™fœf™*¨Ò-Ð-Ø�t˜E A™I�~Ô&ˆFØð 'Ø˜q &Ð(Ð(Ð(Ð(Ø�3˜v™;œ;Ñ&�Ø07ð )ð )Ñ,�˜( HØ˜x¨Ð1Ð1Ð1Ð1Ø�3˜x™=œ=Ñ(��Ø˜1‘9ˆDðÝ!% jÑ!1Ô!1‘��w�wøÝ ð ð ð Ø�Ø�ðøøøð ð 	˜!�c !™fœf™*¨Ò-Ð-ð •#�a‘&”&Š=ˆ=Ø˜1˜a   œhÐ&Ð&Ð&Ð&Ø•s˜1‘v”v ‘}Ñ$ˆGøð ð 
à�,˜QˆØð 	ð 	‰GˆAˆq�!Ø˜1˜a�-ÐÐÐØ•s˜1‘v”vÑˆGˆGð	Ý! *Ñ-Ô-‰NˆE�7�7øÝð 	ð 	ð 	ØˆGØˆEˆEð	øøøð ð 
ð 
ð 
ð 
ð 
s0   “& ¦<»<Â9CÃCÃCÅE* Å*E:Å9E:c                   ó   — e Zd ZdZd„ ZdS )ÚProfilingRegexLexerMetaz>Metaclass for ProfilingRegexLexer, collects regex timing info.c                 óÒ   ‡ ‡‡‡— t          |t          ¦  «        r"t          |j        |j        |j        ¬¦  «        Šn|Št          j        ‰|¦  «        Št          j        fˆ ˆˆˆfd„	}|S )NrË   c                 ó  •— ‰j         d                              ‰
‰	fddg¦  «        }t          j        ¦   «         }‰                     | ||¦  «        }t          j        ¦   «         }|dxx         dz  cc<   |dxx         ||z
  z  cc<   |S )NrÚ   r   r!   r©   )Ú
_prof_dataÚ
setdefaultÚtimer­   )rN   r«   ÚendposÚinfoÚt0ÚresÚt1r’   Úcompiledrð   r¶   s          €€€€r$   Ú
match_funcz:ProfilingRegexLexerMeta._process_regex.<locals>.match_funcž  s†   ø€ Ø”> "Ô%×0Ò0°%¸°ÀÀ3¸xÑHÔHˆDÝ”‘”ˆBØ—.’.  s¨FÑ3Ô3ˆCÝ”‘”ˆBØ�ˆGˆGŒG�q‰LˆGˆG‰GØ�ˆGˆGŒG�r˜B‘wÑˆGˆG‰GØˆJr&   )	rK   r   r   rÈ   rÉ   rÏ   rÐ   ÚsysÚmaxsize)r’   rÑ   rÒ   r¶   r4  r3  rð   s   `  ` @@r$   rÓ   z&ProfilingRegexLexerMeta._process_regex–  s�   øøøø€ Ý�e�UÑ#Ô#ð 	Ý˜EœK°´Ø#(¤<ð1ñ 1ô 1ˆCˆCð ˆCÝ”:˜c 6Ñ*Ô*ˆå),¬ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð Ðr&   N)r1   r2   r3   r4   rÓ   r"   r&   r$   r(  r(  “  s)   € € € € € ØHÐHðð ð ð ð r&   r(  c                   ó"   — e Zd ZdZg ZdZdd„ZdS )ÚProfilingRegexLexerzFDrop-in replacement for RegexLexer that does profiling of its regexes.é   r	  c              #   ó~  ‡ K  — ‰ j         j                             i ¦  «         t                               ‰ ||¦  «        E d {V —† ‰ j         j                             ¦   «         }t          d„ |                     ¦   «         D ¦   «         ˆ fd„d¬¦  «        }t          d„ |D ¦   «         ¦  «        }t          ¦   «          t          d‰ j         j
        t          |¦  «        |fz  ¦  «         t          d¦  «         t          dd	z  ¦  «         t          d
¦  «         |D ]}t          d|z  ¦  «         Œt          d¦  «         d S )Nc              3   óÀ   K  — | ]Y\  \  }}\  }}|t          |¦  «                             d ¦  «                             dd¦  «        dd…         |d|z  d|z  |z  fV — ŒZdS )zu'z\\ú\NéA   iè  )Úreprr[   rQ   )Ú.0r½   ÚrÚnrh   s        r$   ú	<genexpr>z=ProfilingRegexLexer.get_tokens_unprocessed.<locals>.<genexpr>´  s�   è è € ð @ð @á+™F˜Q ¡F Q¨ð �4 ™7œ7Ÿ=š=¨Ñ/Ô/×7Ò7¸ÀÑEÔEÀcÀrÀcÔJØ˜4 !™8 T¨A¡X°¡\ð3ð @ð @ð @ð @ð @ð @r&   c                 ó   •— | ‰j                  S rf   )Ú_prof_sort_index)r#   rB   s    €r$   r%   z<ProfilingRegexLexer.get_tokens_unprocessed.<locals>.<lambda>·  s   ø€  A dÔ&;Ô$<€ r&   T)ÚkeyÚreversec              3   ó&   K  — | ]}|d          V — ŒdS )é   Nr"   )r?  r#   s     r$   rB  z=ProfilingRegexLexer.get_tokens_unprocessed.<locals>.<genexpr>¹  s&   è è € Ð+Ð+ ˜˜!œÐ+Ð+Ð+Ð+Ð+Ð+r&   z2Profiling result for %s lexing %d chars in %.3f mszn==============================================================================================================z$%-20s %-64s ncalls  tottime  percall)r¶   rÑ   zn--------------------------------------------------------------------------------------------------------------z%-20s %-65s %5d %8.4f %8.4f)rG   r+  rL   r   rg   rÂ   Úsortedrù   ÚsumÚprintr1   rX   )rB   rN   r·   Úrawdatar°   Ú	sum_totalr0   s   `      r$   rg   z*ProfilingRegexLexer.get_tokens_unprocessed¯  so  øè è € àŒÔ!×(Ò(¨Ñ,Ô,Ð,Ý×4Ò4°T¸4ÀÑGÔGÐGÐGÐGÐGÐGÐGÐGØ”.Ô+×/Ò/Ñ1Ô1ˆÝð @ð @à/6¯}ª}©¬ð@ñ @ô @ð =Ð<Ð<Ð<Ø"ð	$ñ $ô $ˆõ
 Ð+Ð+ dÐ+Ñ+Ô+Ñ+Ô+ˆ	å‰ŒˆÝÐBØŒ~Ô&­¨D©	¬	°9Ð=ñ>ñ 	?ô 	?ð 	?åˆiÑÔÐÝÐ4Ð7IÑIÑJÔJÐJÝˆiÑÔÐØð 	5ð 	5ˆAÝÐ/°!Ñ3Ñ4Ô4Ð4Ð4ÝˆiÑÔÐÐÐr&   Nr  )r1   r2   r3   r4   r+  rD  rg   r"   r&   r$   r8  r8  ©  s9   € € € € € ØPÐPà€JØÐðð ð ð ð ð r&   r8  )6r4   rÏ   r5  r-  Úpygments.filterr   r   Úpygments.filtersr   Úpygments.tokenr   r   r   r	   r
   Úpygments.utilr   r   r   r   r   r   Úpygments.regexoptr   Ú__all__rÐ   r   rV   ÚstaticmethodÚ_default_analyser+   r(   r   r   rT   r   rŒ   r   r‘   r�   r–   r   r´   r   r   r   r   rÍ   r   r   r   r„   r(  r8  r"   r&   r$   ú<module>rV     sg  ððð ð 
€	€	€	Ø 
€
€
€
Ø €€€à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø /Ð /Ð /Ð /Ð /Ð /Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eð*ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *à 'Ð 'Ð 'Ð 'Ð 'Ð 'ð*ð *ð *€ð ˆ"Œ*�WÑ
Ô
€ð,ð ,ð ,€ð  �<  Ñ.Ô.Ð ð	1ð 	1ð 	1ð 	1ð 	1�ñ 	1ô 	1ð 	1ðm"ð m"ð m"ð m"ð m"�ið m"ñ m"ô m"ð m"ð`Oð Oð Oð Oð O�eñ Oô Oð OðN	ð 	ð 	ð 	ð 	ˆcñ 	ô 	ð 	ðð ð ð ð ñ ô ð ð ˆ(‰*Œ*€ð
ð 
ð 
ð 
ð 
ˆuñ 
ô 
ð 
ðð ð ð ð ñ ô ð ð6ð ð ð4ð ð ð ð ñ ô ð ð €u�w„w€ð1ð 1ð 1ðh	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ðMð Mð Mð Mð MˆFñ Mô Mð Mð d1ð d1ð d1ð d1ð d1�Yñ d1ô d1ð d1ðN^ð ^ð ^ð ^ð ^� .ð ^ñ ^ô ^ð ^ðBLð Lð Lð Lð Lñ Lô Lð LðEð Eð Eð Eð E˜ñ Eô Eð EðP=ð =ð =ð@ð ð ð ð ˜nñ ô ð ð,ð ð ð ð ˜*Ð0Gð ñ ô ð ð ð r&   